thank you for your comments. As already said, splitting batman-advanced into
a kernel space part for switching and a user space part for making route
decision is an already discussed idea which is quite interesting. I wouldn't
say that it's completely unusual to decide routing in the kernel, as we see
other mesh protocols like 802.11s/HWMP or STP (not really a mesh protocol)
integrated in the kernel as well. We have discussed a possible openvswitch port
internally with some of the main contributors, and we see the following issues:
Looking at openvswitch, it seems that the target application is very different.
batman-adv is targeted to support 802.11 WiFi networks on low-end hardware, while
openvswitch was designed as switching environment for virtual machines. This
implies different design decisions - batman-adv should be able to run without any
additional userspace applications if needed, while openvswitch comes with quite a
big, rich featured environment required for operation.
Next to this fact, one thing which worries us is that openvswitch seems to
replace quite some standard linux tools/facilities (e.g. the bridge module),
which is often used in most of the APs we have seen, along with ebtables and
the configuration interfaces it provides. Changing to openvswitch would imply
to change the configuration interfaces and firmwares plus educating all our
users which depend on those standard tools.
Porting batman-adv to the openvswitch framework would of course require an
enormous effort itself. batman-adv as a software which is already "finished",
well tested and integrated in various products/firmwares and ready for kernel
integration. Porting to openvswitch would mean a step backwards for our project
as it is not predictable for us when openvswitch will be finished or integrated in
Maybe we should move forward in this direction after openvswitch is settled as
the way to go for layer 2 tunneling/abstraction in the Linux kernel, but
currently we don't see the benefit for us to port it.