/libra-data

Primary LanguagePython

1. Download topology from
http://www.cs.washington.edu/research/networking/rocketfuel

And create an edge file which has all edges in the topology.  Each
line consists of "A<space>B" where A and B are neighbours in the
topology.

We have some sample edges in the INET topology graph here:
inet-edges.txt

2. Download BGP prefixes from
http://routeviews.org/bgpdata/2013.08/RIBS/

3. Download bgpparser from irl.cs.ucla.edu/software/bgpparser.html
Compile and get the bin/bgpparser executable.

4. Extract all prefixes from the RIB file:

bin/bgpparser -f rib.20130801.0000 |  \
		grep PREFIX |  \
		sed -e 's/PREFIX//g' -e 's/<//g' -e 's|/>||g' -e 's/>//g' |  \
		awk '{ print $1 }' > allprefixes.txt

This can take a while....

5. Uniq them:
cat allprefixes.txt | uniq > unique-prefixes.txt

You don't need to sort before doing uniq because the prefixes are
lexicographically sorted.

6. Create the routing table for each router:

python create-ribs.py --prefixes unique-prefixes.txt \
       --topo inet-edges.txt \
       --dir topo \
       --rib inet-ribs.csv \
       --log \
       --routes routes

It will create one file routes in the current directory to cache the
all-pairs shortest path computation. These routes were computed using
Floyd-Warshall shortest path.

Inside tmp-dir, the script will create a txt file for each router that
contains the prefixes that is owned by the router.  One prefix per
line in ip/len format.

It will also generate dir/routes.csv with the following format:

   <source router>,<dest router>,<next hop router>,<metric>

   where metric is the length of the shortest path to the destination
   router (neighbours have length 1).

To generate ribs with the following format:

    <Dest IP Prefix>,<Local Router>,<Remote Router>

We basically do the following:

For each src in inet/routes.csv, construct rib-$src.csv as follows:
   For each dst in (src,dst) load all prefixes from inet/$dst.txt
       Insert prefix,dst into the rib-$src.txt

This will be output to inet-ribs.csv.