Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Stub-only implementation of the Babel routing protocol
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
A stub-only implementation of Babel =================================== Babel is a loop-avoiding distance vector protocol that is suitable for both wired and wireless networks documented in RFC 6126. The standard implementation of Babel is a Unix daemon called babeld, that fits in a few dozen kilobytes and implements a number of extensions to the protocol. For more information about Babel and babeld, please see http://www.pps.univ-paris-diderot.fr/~jch/software/babel/ The sbabeld daemon is a tiny implementation of Babel that is only suitable for stub routers (routers that only route between their connected networks and the rest of the Internet). It is designed to be small, easy to understand, and easy to port. If you can afford to, you should be running the full babeld daemon, as it converges faster while remaining reasonably small. Sbabeld implements the following features of the Babel protocol: * bidirectional reachability detection (Hello/IHU); * learning the best IPv6 default route and timing it out; * announcing an IPv6 /64 prefix; * passive participation in the loop-avoidance protocol; * participation in the request/response protocol. It does not implement the following features of the full babeld implementation: * IPv4; * learning a full routing table; * reannouncing learned routes; * keeping fallback routes for faster convergence after a failure; * automatic redistribution; * active participation in the loop-avoidance protocol; * link quality estimation for lossy and high-latency links; * detection of interface status; * history-sensitive route selection; * source-specific routing. The code could be further simplified by removing route selection and bidirectional reachability detection -- this would free us from having to determine our link-local addresses, and would avoid the need for a neighbours table. Usage ----- In order to just learn any default routes that are being announced: sbabeld eth0 wlan0 In order to additionally announce a /64 prefix: sbabeld -p 2001:db8:dead:beef:: eth0 wlan0 Porting ------- Sbabeld was written for Linux. It should be easy enough to port to other systems that support IPv6 -- see the functions get_local_address and install_default_route in util.c. I have assumed that for link-local addresses, sin6_scope_id is the interface index. That is true on all systems known to me. Author ------ Juliusz Chroboczek