Skip to content

Latest commit

 

History

History
82 lines (60 loc) · 2.67 KB

README.md

File metadata and controls

82 lines (60 loc) · 2.67 KB

Valley Free Explorer

Rust Crates.io Docs.rs License

valley-free crate is a Rust package that reads CAIDA's AS-relationship data and explores AS-level paths using valley-free model.

Core Ideas

Topology Building

The first step for doing valley-free paths simulation is to obtain AS-level topology and inter-AS relationships. Here in this library, we utilize CAIDA's AS-relationship data data to obtain both the AS relationships and the topology.

The CAIDA's AS-relationship data is formatted as follows:

## A FEW LINES OF COMMENT
## A FEW LINES OF COMMENT
## A FEW LINES OF COMMENT
1|7470|0
1|9931|-1
1|11537|0
1|25418|0
2|35000|0
2|263686|0
...

The data format is:

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

A non-comment row in the dataset means:

  • there is a AS-level link between the two ASes
  • the relationships are either peer-to-peer (0) or provider-to-customer (-1)

Path Propagation

It generate a graph simulating the AS paths propagation from the origin and creating a graph of all the possible paths in the way of the propagation.

For exemplo for the following topology:

It start from the AS4 and form a direct graph with all next hops that confom wih valley-free routing (i.e. the path with the next hop is stil valley-free), and keeps propagate until generate a direct acyclic graph (DAG) with all with the "valley-free view" of the AS4 to the network.

And then you can use this DAG with all the classic graph methods to analyze it. For example, you can find the length of all shortest paths, or even all the paths.

Usage

Rust

Install

[dependencies]
valley_free="0.3"

Examples

To use the examples expect the CAIDA-as 2023-12-01 dataset on the root directory.

The examples are available in the examples/ direction.

You can run it with cargo run --example=<filename without .rs>.