> The only corner of the babel RFC that still scares me are "sources" :)
Then let me lecture a bit :-) Babel is partly based on the ideas in DSDV, which was a pure mesh protocol. In DSDV, there is no distinction between prefix, neighbour and source: the IP address of a router is used as the destination of packets and as the identifier for the originator of a route. Babel aims to be a general-purpose routing protocol, so it needs to deal with situation where two distinct routers originate the same prefix, and the protocol needs to be able to distinguish between a single prefix originated by a single router over different routes: - A - / \ Internet C \ / - B - and two routers independently advertising the same prefix: Internet --- A --- C --- B --- Internet At the wire level, the distinction is made by the "Router-ID" field that is associated with announcements: the originating router is identified by the Router-ID. The « source » is the data structure that stores per-Router-ID data. The terminology makes sense (at least to me): if two routes are originated by the same router, they have the same source. So what are sources used for? They are the mechanism that allows us to avoid having synchronised clocks and still avoid loops in most cases. Seqnos are maintained per-source, which means that two distinct routers that advertise the same prefix do not need to synchronise their seqnos, they can increase them independently. (That was not the case in DSDV, which assumed synchronised counters.) And while we do not avoid loops in all cases, we are assured that we break them in at most the time required for an announcement to go around the loop once. -- Juliusz _______________________________________________ Babel-users mailing list Babel-users@alioth-lists.debian.net https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/babel-users