Babel
Babel ist ein Distanzvektorprotokoll für IPv6 und IPv4, ist frei von Routingschleifen und weist schnelle Konvergenzeigenschaften auf. Es basiert auf den Prinzipien von Destination-Sequenced Distance-Vector Routing (DSDV), Ad hoc On-Demand Distance Vector (AODV) Routing und Enhanced Interior Gateway Routing Protocol (EIGRP) und arbeitet mit kabelgebundenen Netzwerken sowie drahtlosen Meshnetzwerken.
Die Routingdistanzmetrik wird über einen verteilten Bellman-Ford-Algorithmus berechnet.
Freifunk Franken
Babel wird als Layer-3-Routingprotokoll im Freifunk-Franken-Backbone verwendet. So werden alle Gateways über das Protokoll direkt oder indirekt miteinander verbunden. Babel tauscht gegenseitig die Routen der Gateways aus, sodass jedes Gateway weiß, über welchen Weg es eine andere Hood erreichen kann. Das eigentliche Routing übernimmt der Linuxkernel. Babel ist nur für den Austausch der Informationen zuständig.
Versionshistorie
Übersicht der Babel-Versionshistorie und welche Freifunk-Franken-Layer-3-Firmwares welche Version implementiert haben. Die Angaben sind nicht vollständig.
Version | Datum | Firmware | Bemerkung |
---|---|---|---|
babeld-1.13.1 | 26. Juli 2023 | – Implemented the per-interface option "probe-mtu", which automatically discards links with a mis-configured MTU. – Fixed a typo in the handing of the option "v4viav6". | |
babeld-1.13 | 16. Juli 2023 | – Remove diversity support and related configuration file directives. This is an incompatible change. – Optimise route redistribution. We now install just the route that the kernel sent us rather than doing a full route dump on every change. – Add optional delay to daemon shutdown; see the configuration option "shutdown-delay-ms". – Fixed compilation under BSD. | |
babeld-1.12.2 | 7. Februar 2023 | – Fix reinstalling a Babel route after a redistributed route is retracted. This avoids waiting for a new update after a non-Babel route is removed from the routing table. – Fix parsing of the "allow-duplicates" option. – Fix parsing of multiple sub-TLVs in a single TLV. Since we currently never send multiple sub-TLVs, this was not visible in practice, but is a serious bug in the packet parser. | |
babeld-1.12.1 | 18. Mai 2022 | layer3-20221019, layer3-20221201, layer3-20230321-beta, layer3-20230330 | – Implement separate PC values for unicast and multicast, which avoids dropping packets protected by MAC when WiFi powersave is active. – Schedule an interface check just after adding an interface. |
babeld-1.12 | 5. Mai 2022 | – Implement v4-via-v6 routing (RFC 9229), which allows a router with IPv4 addresses only to route IPv4. – Enable extended Netlink acks when available. – Fix restoring of interface configuration to avoid unbounded memory consumption. – Fix handling of deny filters in the install chain. | |
babeld-1.11 | 30. März 2022 | layer3-20220814 | – Implementierung der MAC Authentication (RFC 8967). – Schnittstelle der add_filter-Funktion wurde geändert, um sie einfacher in OpenWrt zu integrieren. |
babeld-1.10 | 25. April 2021 | layer3-20211201-beta, layer3-20211220, layer3-20211224, layer3-20220405-beta, layer3-20220413 | – Removed the disambiguation code: source-specific routing is no longer supported for IPv4, and for IPv6 only on Linux 3.11 or later. – Fixed an issue handling of retractions with no next hop, which caused interoperability problems with BIRD. – If skip-kernel-setup is set, we no longer disable the rp_filter, which makes babeld work in containers. |
babeld-1.9.2 | 21. April 2020 | gw_20200619, gw_20201028, layer3-20200423-beta, layer3-20200501, layer3-20210211-beta, layer3-20210218, layer3-20210226 | – Fixed two issues that could cause IPv4 routes to be represented incorrectly, with a range of confusing symptoms. – Fixed incorrect parsing of TLVs with an unknown Address Encoding. – Fixed access to mis-aligned data structure. |
babeld-1.9.1 | 20. August 2019 | gw-dev_20190822, gw-dev_20191002, gw-dev_20191008, gw-dev_20200109, gw-dev_20200330, layer3-20191123-alpha, layer3-20191130-alpha, layer3-20191214-beta, layer3-20191224, layer3-20200118 | – Fixed a crash that could happen when unicast and RTT estimation are both enabled on an interface. – Fixed compilation under BSD. |
babeld-1.9.0 | 4. August 2019 | – Reworked buffering of unicast packets to use a per-neighbour buffer rather than a single buffer per interface. This makes unicast as efficient as multicast, at the cost of slightly higher memory usage. – Added option "unicast" that allows sending most TLVs over unicast. This is necessary for the DTLS extension. – Implemented parsing of unicast Hellos. This makes it possible to interoperate with neighbours that only speak unicast (e.g. over some kinds of tunnels that only do unicast). – Implemented sending of unscheduled unicast Hellos. This makes the RTT extension work over unicast too. – Reworked the xroute data structures to use binary search and linear-time comparison. – Don't attempt to modify the rp_filter sysctl if it already has the desired value; this makes it possible to run babeld in an unpriviledged container. – Reinstated logging of late hellos. – Don't send wildcard requests or Hellos to newish nodes. This makes acquisition of new neighbours slower, but drastically reduces noise at startup. – Remove an arbitrary limit on the number of interfaces. – Removed class E from martian filter. – Added the ability to set the preferred source address in install filters. – Fixed a number of read-only buffer overflows. | |
babeld-1.8.5 | 22. Juli 2019 | – Fixed a bug that caused confustion between learned routes and imported routes. – Fixed a bug that prevented install filters from being evaluated. | |
babeld-1.8.4 | 9. November 2018 | gw_20190602 | |
babeld-1.8.3 | 24. September 2018 | gw_20181015 | |
babeld-1.8.2 | 12. Mai 2018 | layer3-20181202-102-g3bc4f01 | |
babeld-1.8.1 | 7. April 2018 | ||
babeld-1.8.0 | 6. Dezember 2016 | ||
… | … | ||
babel 0.1 | 22. August 2007 | Erstveröffentlichung |
babeld-1.10 wurde ursprünglich als babeld-2.0 angekündigt.
Siehe auch
- Babel und dnsmasq in unsere firmware
- Freifunk-Gateway aufsetzen/Babel
- Gateway-Firmware mit Babel über Mesh