Skip to content

mthodi/ProbLink

Repository files navigation

About

This is a fork of the ProbLink algorithm. ProbLink is a probabilistic AS relationship inference algorithm, which does inference based on key AS-interconnection features derived from stochastically informative signals. Learn more about ProbLink in the NSDI paper.

The original project is available on Github at YuchenJin/ProbLink.

I am using docker on Ubuntu 18.04 to be able to run the code in an older version of Python that it was written in.

Quickstart

I assume you have this code already. If not, clone this repository.

Install Python dependencies

$ pip install --user -r requirements.txt

Prepare BGP paths

You can prepare BGP paths of your interest and save them to a file 'rib.txt'. The ASes on each BGP path should be delimited by '|' on each line, for example: AS1|AS2|AS3.

Download AS to Organization Mapping Dataset from CAIDA

https://www.caida.org/data/as-organizations/

Download PeeringDB Dataset from CAIDA

Before March 2016: http://data.caida.org/datasets/peeringdb-v1/

After March 2016: http://data.caida.org/datasets/peeringdb/

Parse downloaded BGP paths

$ python bgp_path_parser.py <peeringdb file> 
# Output is written to 'sanitized_rib.txt'.

Run AS-Rank algorithm to bootstrap ProbLink

$ ./asrank.pl sanitized_rib.txt > asrank_result.txt

Run ProbLink

$ python problink.py -p <peeringdb file> -a <AS to organization mapping file>

Output data format

<provider-as>|<customer-as>|-1

<peer-as>|<peer-as>|0

<sibling-as>|<sibling-as>|1

About

A fork of the ProbLink AS Relationship Inference Algorithm

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published