valley-free
crate is a Rust package that reads CAIDA's AS-relationship data
and explores AS-level paths using valley-free
model.
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)
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.
[dependencies]
valley_free="0.3"
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>
.