On Tue, 18 Apr 2006, David Andersen wrote:
Much of what Bill described below is already present using Nick Feamster's
bgptools release: http://nms.lcs.mit.edu/software/bgp/bgptools/
Start with zebra / quagga / etc., which do a great job of dumping tables and
updates.
Then use bgptools to take the MRT-formatted dumps that Zebra spits out and
turn them into text, etc. With the '-q' option, can insert the BGP updates
or table snapshot directly into a SQL database.
My peer actually comes from a Zebra box, so I'm not talking directly to
any production devices, in the event that I want to bounce my db feed up
and down (debugging, featuritis treatments, etc) Z/Q + bgptools is a great
suggestion for doing complex reporting/comparison on the routing tables,
though. I've got a need for a more real-time view, so my setup fits me a
little better than your suggestion, but potato/potatoe. =)
then the libbgpdump.a library gives you lots of cool things on top of that.
You'd have to do a little work to get the analysis tool you want, but it's
pretty easy. Use the 'buildtree' starting program to build the prefix tree
from each provider and then compare those two trees (see which prefixes are
present/not present, see if any parts of the IP space are unreachable in in
one and unreachable in the other, etc.)
This is pretty interesting, I'll have to tinker with it, especially since
I know one of my providers doesn't give me a full routing table.
It starts as Bill suggested - a read-only BGP peer from the devices, which
takes about 3 seconds to set up.
And for folks to whom this is new stuff: don't be an idiot, put
Zebra/Quagga up as a peer/buffer for attaching analysis tools to your
network. *Never* attach development grade tools to a production device,
most especially when you're dealing with a routing table. Not that I've
ever taken down a live router in this manner[1], I'm just saying.. ;)
- billn
[1] All smirking current/past coworkers are kindly invited to stfu. =)