[quagga-dev 11818] Re: zebra dest/src routing support

David Lamparter david at opensourcerouting.org
Wed Nov 26 21:28:23 GMT 2014


On Wed, Nov 26, 2014 at 10:04:47PM +0100, Juliusz Chroboczek wrote:
> > If someone else, unrelated, had sent this patchset, would you really be
> > merging it within 2 weeks?
> 
> For the record, this patchset is used by the (sadly out-of-tree)
> implementation of source-specific Babel.
> 
>   https://github.com/OFabre/ss-babel
> 
> > - The use-cases in the drafts (and slides) I've read all would be
> > satisfied with a less entangled "src table → dst table" lookup
> 
> No, as David noted, that doesn't work.  You need dst table -> src table.
> 
> If implemented correctly, the two data structures are completely
> equivalent.  I don't necessarily agree that two-level routing tables are
> simpler than source-specific routing tables, but I have no preference for
> one rather than the other -- as long as something lands in the tree.

That reminds me of another issue: BABEL, IS-IS and OSPF all specify
dst-src for the semantic level on their packets/LSAs/TLVs.  And I think
it may be prudent to have redistribution support, judging by the
protocol discussion @ homenet.

So, we have these possibilities:
- ZAPI is dst-src, RIB is dst-src, kernel is dst-src
  = current solution.  all nice.
- ZAPI is dst-src, RIB is dst-src, kernel is src-dst
  = ugly code, this is what the first OSPF SADR code did:
    https://github.com/edderick/quagga_zOSPF/commits/master
    it really didn't work out nice at all.
- ZAPI is dst-src, RIB is src-dst, kernel is src-dst
  = zebra would need to translate from dst-src to src-dst, and it would
  need to reverse that before sending things out on ZAPI (i.e. flag and
  not send "synthetic" copied routes).  this doesn't sound like
  something that could turn out nice.
- ZAPI is src-dst, RIB is src-dst, kernel is src-dst
  = daemons would need to translate, and flag "synthetic" routes.  This
  really doesn't seem to be a good idea, we'd need to carry the flag
  through ZAPI, and each of the daemons would need the translation and
  back-translation code.

("synthetic" routes = routes needed for src-dst setups to get to the
same semantics, e.g. copies of all local routes in a homenet scenario.)


-David




More information about the Quagga-dev mailing list