[quagga-dev 5047] Re: Extracting routes from bgpd
pbg at cs.berkeley.edu
Fri Aug 31 21:54:29 BST 2007
> I'm planning to use Quagga for a routing research project. To do
> 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
> 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
> 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.
For my project I'll only need the bgpd functionality. Given that I
am unfamiliar with the code, do you think making the modifications in
Zebra would be cleaner or easier?
>> 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?
> We're not always very clever about updating routes. You may see
> route delete/add messages, where the route was only ever updated..
Do you mean that this method would not work? or just that some
duplicate info would be passed through those functions, so it
wouldn't be quite as efficient as it could be?
More information about the Quagga-dev