Browse files

Added babelm branch which contains a new smoothed metric algo

I note that this experimental package also contains a patch
to mark babel packets as ECN capable, when in reality they
are not, at present.

In the words of Juliusz:

"that's a horrible kludge.  You're applying AQM to locally-originated data in
order to compensate for the lack of backpressure, and then falsely
asserting ECN in order to bypass the AQM policy."

As for the first statement, queues are necessary at multiple layers
in the stack, so I can think of no effective means of supplying
backpressure at insertion time that will work. I can think of means of
supplying congestion related drop indications to babel, but that is as
yet, unimplemented.

As to the second objection, yes this is bypassing AQM policy, however,
at some point, using ECN marking in babel could be used for something.

The udp markings can be easily obtained with pktinfo in userspace,
and I do need to produce a patch for that.

In the interim, the problem I am trying to solve is that when a rate
change happens in wifi, it is abrupt and can take a long time (with
the fq_codel aqm rapidly ramping up packet drop) to drop the backlog back to
a normal level for the new rate. IMHO it is better to have a radio
continue to function rather that potentially stop entirely because it
dropped a bunch of babel packets while seeking a new equilibrium.
  • Loading branch information...
1 parent b506581 commit b142be5189554e29f3a93f6ff36674aa57315260 Dave Taht committed Jul 8, 2012
@@ -3,58 +3,59 @@
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
-# Please note this is not an officially released version of babelz
+# Please note this is not an officially released version of babelm
include $(TOPDIR)/
include $(INCLUDE_DIR)/
-define Package/babelz
+define Package/babelm
SUBMENU:=Routing and Redirection
- TITLE:=A loop-free distance-vector routing protocol
+ TITLE:=Experimental convergence algo for babel, the distance-vector routing protocol
MAINTAINER:=Dave Taht <>
DEPENDS:=+kmod-ipv6 +librt
-define Package/babelz/description
+define Package/babelm/description
Babel is a loop-avoiding distance-vector routing protocol roughly based
on DSDV and AODV, but with provisions for link cost estimation and
redistribution of routes from other routing protocols.
While it is optimised for wireless mesh networks, Babel will also work
efficiently on wired networks. It will generate between 1.2 and 2.4 times
the amount of routing traffic that RIPng would generate, while
never counting to infinity.
+ This experimental package contains a newer smoothed convergence algo.
-define Package/babelz/conffiles
+define Package/babelm/conffiles
-define Package/babelz/install
+define Package/babelm/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/babeld $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc
@@ -65,4 +66,4 @@ define Package/babelz/install
$(INSTALL_BIN) ./files/babeld.init $(1)/etc/init.d/babeld
-$(eval $(call BuildPackage,babelz))
+$(eval $(call BuildPackage,babelm))
File renamed without changes.
@@ -10,6 +10,7 @@ config general
# experimental, don't use it unless you know what you are doing.
## option 'idle_hello_interval' '0'
# option 'diversity' '0,128'
+ option 'smoothed-metric' '4'
# option 'kernel_priority' '0'
# Do not use this option unless you know what you are doing, as it can
# cause persistent route flapping.
@@ -106,6 +106,7 @@ babel_config() {
append_parm "$cfg" 'wired_hello_interval' '-H'
append_parm "$cfg" 'idle_hello_interval' '-i'
append_parm "$cfg" 'diversity' '-z'
+ append_parm "$cfg" 'smoothed-metric' '-M'
append_parm "$cfg" 'kernel_priority' '-k'
append_parm "$cfg" 'duplication_priority' '-A'
append_parm "$cfg" 'debug' '-d'

0 comments on commit b142be5

Please sign in to comment.