North American Network Operators Group

Date Prev | Date Next | Date Index | Thread Index | Author Index | Historical

Re: Determine difference between 2 BGP feeds

  • From: David Andersen
  • Date: Tue Apr 18 17:22:37 2006

Much of what Bill described below is already present using Nick Feamster's bgptools release: 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.

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.)

It starts as Bill suggested - a read-only BGP peer from the devices, which takes about 3 seconds to set up.


On Apr 18, 2006, at 5:01 PM, Bill Nash wrote:

Were I faced with this reporting equirement on an on-going basis, I'd suggest establishing a read-only BGP peer with both devices and comparing directly. I've got a perl BGP peering daemon that feeds and maintains a mirror of the BGP routing table into SQL, applying updates and withdrawals as they come in. Setting up something similar, and adding some additional metrics to keep entries unique by peer source would facilitate your end goal with simple SQL grouping mechanics.

- billn

On Tue, 18 Apr 2006, Marco d'Itri wrote:

On Apr 18, Scott Tuc Ellentuch at T-B-O-H <[email protected]> wrote:

	Is there a utility that I can use that will pull the
routes off each router (Foundry preferred), and then compare
them as best it can to see why there is such a difference?
I have one, but it's cisco-specific: (the dumppeers script)

Then you can easily find the missing routes with commands like:

awk '{print $1}' < ../routes/ | sort > ROUTER1
awk '{print $1}' < ../routes/ | sort > ROUTER2


Attachment: PGP.sig
Description: This is a digitally signed message part