Am 10.07.2010 01:07, Sven Eckelmann wrote:
batman-adv works quite well for us - but that doesn't mean that it is good in context of the current kernel development. And who should know it better than the netdev guys.
Hagen Paul Pfeifer suggested in his message "a generalized architecture and a user space implementation of the protocol". What came to my mind when I read this again was a division of control plane and data/forwarding plane as known from traditional routing.
The whole forwarding stuff would stay in the kernel, using a simple routing table (for destination X, send to node Y on interface Z). The processing of routing messages (OGMs) and creation/update of the routing table based on the full originator table could be moved to a user space daemon. Relative to packets of regular data transmissions, routing messages are not sent and received that often such that processing them in user space should not hurt performance (very much), especially when compared to the original implementation of batman-adv in the user space.
Firstly, this approach would improve the architecture by separation of concerns, which makes it easier to understand, debug and maintain the code. Secondly, it would get easier to play with / improve the routing protocol and the metrics if the latter parts were implemented in user space. And maybe it is indeed possible to make the kernel part of the code agnostic to the used protocol implementation, which would lead to the generalized architecture that Hagen envisioned.
- Daniel