[quagga-dev 5044] Re: Extracting routes from bgpd

Greg Troxel gdt at ir.bbn.com
Fri Aug 31 13:41:51 BST 2007

  I'm planning to use Quagga for a routing research project.  To do this
  I need to use my own custom forwarding plane, rather than having
  Quagga insert routes into the kernel's table (since I'll essentially
  be using Quagga as a router for an overlay network).

  I know how to run only bgpd and turn off insertion of routes into the
  kernel.  The question is, how do I extract the route updates as
  they're happening?  Is it enough for me to observe the changes that
  pass through `bgp_zebra_withdraw' and `bgp_zebra_announce' in
  bgp_zebra.c in order to get a full trace of which routes bgpd is
  selecting for each destination over time?  Any gotchas I should watch
  out for?

My immediate reaction is that you should run zebra, but modify it so
that instead of using the routing socket it makes RPCs or however you
communicate to your forwarding plane.  That way you will get the full
functionality of quagga, enabled as you wish (static routes, also IGP,
v6, etc.), but with your forwarding plane instead of the kernel
forwarding plane.

The code is already slightly modular in that it handles netlink and BSD
routing socket, and maybe something else.  Cleaning this up and adding
an 'external' method, and integrating this into configure with an option
would be a valuable contribution and I'd like to see that go back into


More information about the Quagga-dev mailing list