Skip to content

Commit a019930

Browse files
authored
Merge pull request #25 from netgroup/documentation
Improve project documentation and add docs to the topologies
2 parents 6462beb + 1d0eb81 commit a019930

File tree

9 files changed

+372
-31
lines changed

9 files changed

+372
-31
lines changed

README.md

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,41 @@
11
# SRv6 tutorial
22

3+
> Mininet topologies for SRv6
4+
5+
![Python Linter](https://github.com/netgroup/rose-srv6-tutorial/workflows/Python%20Linter/badge.svg)
6+
![Shell Linter](https://github.com/netgroup/rose-srv6-tutorial/workflows/Shell%20Linter/badge.svg)
7+
![Python package](https://github.com/netgroup/rose-srv6-tutorial/workflows/Python%20package/badge.svg)
8+
![GitHub](https://img.shields.io/github/license/netgroup/rose-srv6-control-plane)
9+
10+
## Table of Contents
11+
* [Overview](#overview)
12+
* [Installation](#installation)
13+
* [Installation of Mininet](#installation-of-mininet)
14+
* [Installation of FRRouting suite (FRR)](#installation-of-frrouting-suite-frr)
15+
* [Installation of Python dependencies](#installation-of-python-dependencies)
16+
* [Starting a topology](#starting-a-topology)
17+
* [Requirements](#requirements)
18+
* [Links](#links)
19+
* [Issues](#issues)
20+
* [Contributing](#contributing)
21+
* [License](#license)
22+
23+
## Overview
24+
25+
This project contains several Mininet topologies:
26+
27+
.
28+
├── nets
29+
| ├── 8routers-isis-ipv6
30+
| └── 8r-1c-in-band-isis
31+
├── nets-in-progress
32+
| └── 8r-1c-srv6-pm
33+
├── nets-unmantained
34+
| ├── 3routers
35+
| ├── 8routers
36+
| └── 8r-1c-out-band-isis
37+
└── README.md
38+
339
In the nets folder there are different projects:
440

541
```
@@ -18,9 +54,31 @@ reference IPv6 topology with IS-IS / FRR and out-of-band controller
1854
- 8r-1c-in-band-isis
1955
reference IPv6 topology with IS-IS / FRR and in-band controller
2056
57+
- 8r-1c-srv6-pm
58+
reference IPv6 topology with IS-IS / FRR and out-of-band controller, used for SRv6 Performance Measurement experiments
59+
2160
```
2261

23-
## Installation of FRRouting suite (FRR)
62+
## Installation
63+
64+
This project depends on:
65+
* Mininet
66+
* FRRouting suite
67+
* Other Python packages listed in requirements.txt
68+
69+
### Installation of Mininet
70+
71+
Check if Mininet is installed by running:
72+
```
73+
$ /usr/bin/mn --version
74+
```
75+
76+
If Mininet is not installed, run the install command (for Ubuntu/Debian):
77+
```
78+
$ sudo apt-get install mininet
79+
```
80+
81+
### Installation of FRRouting suite (FRR)
2482

2583
You need to have FRR installed in order to run the mininet labs.
2684
Check if FRR is installed by running:
@@ -50,4 +108,44 @@ replacing <release> with the output of lsb_release -s -c
50108

51109
7) sudo apt -y install frr frr-pythontools
52110

111+
### Installation of Python dependencies
112+
113+
The Python packages required to run the Mininet labs are listed in *requirements.txt*. You can install them with the following command:
114+
```
115+
$ pip install -r requirements.txt
116+
```
117+
118+
119+
## Starting a topology
120+
121+
In order to start a Mininet topology `cd` to the topology folder and run the Python script.
122+
123+
For instance,
124+
```
125+
$ cd nets/8routers-isis-ipv6/
126+
$ python isis8d.py
127+
```
128+
129+
For more information, check the documentation contained in the topology folders.
130+
131+
132+
## Requirements
133+
Python >= 3.6
134+
135+
136+
## Links
137+
* Research on Open SRv6 Ecosystem (ROSE): https://netgroup.github.io/rose/
138+
* Source code: https://github.com/netgroup/rose-srv6-tutorial
139+
* Report a bug: https://github.com/netgroup/rose-srv6-tutorial/issues
140+
141+
142+
## Issues
143+
You are welcome to open github issues for bug reports and feature requests, in [this repository](https://github.com/netgroup/rose-srv6-tutorial/issues) or in the [ROSE repository](https://github.com/netgroup/rose/issues).
144+
145+
146+
## Contributing
147+
If you want to contribute to the ecosystem, provide feedback or get in touch with us, see our contact page: https://netgroup.github.io/rose/rose-contacts.html.
148+
53149

150+
## License
151+
This project is licensed under the [Apache License, Version 2.0](https://github.com/netgroup/rose-srv6-tutorial/blob/master/LICENSE).

nets-in-progress/8r-1c-srv6-pm/README.md

Lines changed: 77 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,32 @@
1-
# 1920-srv6-tutorial
1+
# 8r-1c-srv6-pm Topology
22

3-
SMART INTRODUCTION LINK ---> https://drive.google.com/file/d/18PumHFw6o3df5-_yPtOVw4Zem8RDEjTr/view?usp=sharing
3+
A Mininet topology with 8 routers running IS-IS routing protocol, 12 hosts, 3 datacenters and a controller connected out-band to all the routers and hosts of the network.
44

5+
This topology is the same as 8r-1c-out-band, but same nodes are configured to run Performance Measurement experiments.
6+
7+
## Topology overview
8+
9+
![Alt Topology](docs/images/topology.png)
10+
11+
## Start the topology
12+
13+
To start the topology:
14+
```
15+
python isis8d.py
16+
```
17+
18+
## Description
519

620
```text
721
822
In folder nodeconf/
9-
- for each host and router one folder
23+
- for each host, datacenter, router and controller one folder
1024
- host folders contain start.sh for each host
1125
- sets IPv6 address for hosts
1226
- adds IPv6 routing to gateway
27+
- datacenter folders contain start.sh for each datacenter
28+
- sets IPv6 address for datecenters
29+
- adds IPv6 routing to gateway
1330
- router folders contain
1431
- zebra.conf
1532
- sets for each interface the IPv6 address
@@ -18,16 +35,16 @@ In folder nodeconf/
1835
- start.sh
1936
- enables IPv6 forwarding
2037
- executes zebra.conf and isisd.conf
38+
- the controller folder contains start.sh
39+
- sets IPv6 address for the controller
40+
- some routers are configured to run Performance Measurement experiments
2141
2242
2343
2444
2545
network:
2646
the network is shown in this link
27-
https://docs.google.com/presentation/d/15w14n_Nf5rE560FluMnw4Wq51pYLvDqG1kEwDvmEHE0/edit#slide=id.g76160fda07_0_0
28-
29-
and also in this link
30-
https://drive.google.com/file/d/1yzyfgvgWbzPjTttcqA4G41gEGM87tHC5/view?usp=sharing
47+
https://docs.google.com/presentation/d/15w14n_Nf5rE560FluMnw4Wq51pYLvDqG1kEwDvmEHE0/edit#slide=id.g7752c9e8cd_5_88
3148
3249
3350
@@ -49,6 +66,12 @@ host - router links:
4966
h82 - r8: fd00:0:82::2/64 r8 - h82: fd00:0:82::1/64
5067
h83 - r8: fd00:0:83::2/64 r8 - h83: fd00:0:83::1/64
5168
69+
datacenter - router links:
70+
71+
hdc1 - r2: fcff:2:1::2/48 r2 - hdc1: fcff:2:1::1/48
72+
hdc2 - r8: fcff:8:1::2/48 r8 - hdc2: fcff:8:1::1/48
73+
hdc3 - r5: fcff:5:1::2/48 r5 - hdc3: fcff:5:1::1/48
74+
5275
router - router links:
5376
5477
r1 -r2: fcf0:0:1:2::1/64 r2 - r1: fcf0:0:1:2::2/64
@@ -61,6 +84,21 @@ router - router links:
6184
r6 -r7: fcf0:0:6:7::1/64 r7 - r6: fcf0:0:6:7::2/64
6285
r6 -r8: fcf0:0:6:8::1/64 r8 - r6: fcf0:0:6:8::2/64
6386
r7 -r8: fcf0:0:7:8::1/64 r8 - r7: fcf0:0:7:8::2/64
87+
88+
controller - switch links:
89+
90+
controller - sw: fcfd:0:0:fd::1/48 sw - controller: fcfd:0:0:fd::2/48
91+
92+
router - switch links:
93+
94+
r1 - sw: fcfd:0:0:1::1/48 sw - r1: fcfd:0:0:1::2/48
95+
r2 - sw: fcfd:0:0:2::1/48 sw - r1: fcfd:0:0:2::2/48
96+
r3 - sw: fcfd:0:0:3::1/48 sw - r1: fcfd:0:0:3::2/48
97+
r4 - sw: fcfd:0:0:4::1/48 sw - r1: fcfd:0:0:4::2/48
98+
r5 - sw: fcfd:0:0:5::1/48 sw - r1: fcfd:0:0:5::2/48
99+
r6 - sw: fcfd:0:0:6::1/48 sw - r1: fcfd:0:0:6::2/48
100+
r7 - sw: fcfd:0:0:7::1/48 sw - r1: fcfd:0:0:7::2/48
101+
r8 - sw: fcfd:0:0:8::1/48 sw - r1: fcfd:0:0:8::2/48
64102
65103
router localhost
66104
@@ -75,6 +113,27 @@ router localhost
75113
76114
( The addressing plan is explained in https://docs.google.com/document/d/15giV53fH_eDuWadOxzjPVzlr-a7Rn65MpCbz9QKs7JI/edit )
77115
116+
Note that datacenters are special hosts, which have a public address.
117+
118+
119+
The file etc-hosts in the topology folder maps each IP address to its hostname.
120+
121+
For example,
122+
fcff:1::1 r1
123+
fd00:0:11::2 h11
124+
fcff:2:1::2 hdc1
125+
fcfd:0:0:fd::1 controller.m # .m suffix is used for the management addresses
126+
...
127+
128+
When you start the topology, the entries defined in this file are loaded and added to the system /etc/hosts file.
129+
130+
This allows you to ping the nodes using their hostnames instead of the IP addresses:
131+
h11# ping6 h83
132+
h83# ping6 h11
133+
134+
The entries are automatically removed from the /etc/hosts file when the emulation is stopped.
135+
136+
78137
------Tunnel examples -------------
79138
1) Create a bidirectional tunnel between h11 and h83, passing through router r4
80139
@@ -277,6 +336,17 @@ GW_ADDR=fd00:0:11::1
277336
ip -6 addr add $IP_ADDR dev $IF_NAME
278337
ip -6 route add default via $GW_ADDR dev $IF_NAME
279338
339+
----Configuration of the Controller----
340+
341+
The controller has a configuration file called start.sh in which we set the IP address. Since the controller is connected to the other nodes through a switch, the gateway is not required.
342+
343+
NODE_NAME=controller
344+
SW_NAME=sw
345+
IF_NAME=$NODE_NAME-$SW_NAME
346+
IP_ADDR=fcfd:0:0:fd::1/48
347+
348+
ip -6 addr add $IP_ADDR dev $IF_NAME
349+
280350
----Addressing----
281351
282352
the addressing on the links between the hosts hxy and the router x can be
142 KB
Loading

nets-unmantained/8r-1c-out-band-isis/README.md

Lines changed: 66 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
1-
# 1920-srv6-tutorial
1+
# 8r-1c-out-band-isis Topology
22

3-
SMART INTRODUCTION LINK ---> https://drive.google.com/file/d/18PumHFw6o3df5-_yPtOVw4Zem8RDEjTr/view?usp=sharing
3+
A Mininet topology with 8 routers running IS-IS routing protocol, 12 hosts, 3 datacenters and a controller connected out-band to all the routers and hosts of the network.
44

5+
## Topology overview
6+
7+
![Alt Topology](docs/images/topology.png)
8+
9+
## Start the topology
10+
11+
To start the topology:
12+
```
13+
python isis8d.py
14+
```
15+
16+
## Description
517

618
```text
719
820
In folder nodeconf/
9-
- for each host and router one folder
10-
- one folder for the controller
21+
- for each host, datacenter, router and controller one folder
1122
- host folders contain start.sh for each host
1223
- sets IPv6 address for hosts
1324
- adds IPv6 routing to gateway
25+
- datacenter folders contain start.sh for each datacenter
26+
- sets IPv6 address for datecenters
27+
- adds IPv6 routing to gateway
1428
- router folders contain
1529
- zebra.conf
1630
- sets for each interface the IPv6 address
@@ -19,7 +33,7 @@ In folder nodeconf/
1933
- start.sh
2034
- enables IPv6 forwarding
2135
- executes zebra.conf and isisd.conf
22-
- controller folder contains start.sh
36+
- the controller folder contains start.sh
2337
- sets IPv6 address for the controller
2438
2539
@@ -49,6 +63,12 @@ host - router links:
4963
h82 - r8: fd00:0:82::2/64 r8 - h82: fd00:0:82::1/64
5064
h83 - r8: fd00:0:83::2/64 r8 - h83: fd00:0:83::1/64
5165
66+
datacenter - router links:
67+
68+
hdc1 - r2: fcff:2:1::2/48 r2 - hdc1: fcff:2:1::1/48
69+
hdc2 - r8: fcff:8:1::2/48 r8 - hdc2: fcff:8:1::1/48
70+
hdc3 - r5: fcff:5:1::2/48 r5 - hdc3: fcff:5:1::1/48
71+
5272
router - router links:
5373
5474
r1 -r2: fcf0:0:1:2::1/64 r2 - r1: fcf0:0:1:2::2/64
@@ -64,18 +84,18 @@ router - router links:
6484
6585
controller - switch links:
6686
67-
controller - sw: fcfd:0:0:fd::1/48
87+
controller - sw: fcfd:0:0:fd::1/48 sw - controller: fcfd:0:0:fd::2/48
6888
6989
router - switch links:
7090
71-
r1 - sw: fcfd:0:0:1::1/48
72-
r2 - sw: fcfd:0:0:2::1/48
73-
r3 - sw: fcfd:0:0:3::1/48
74-
r4 - sw: fcfd:0:0:4::1/48
75-
r5 - sw: fcfd:0:0:5::1/48
76-
r6 - sw: fcfd:0:0:6::1/48
77-
r7 - sw: fcfd:0:0:7::1/48
78-
r8 - sw: fcfd:0:0:8::1/48
91+
r1 - sw: fcfd:0:0:1::1/48 sw - r1: fcfd:0:0:1::2/48
92+
r2 - sw: fcfd:0:0:2::1/48 sw - r1: fcfd:0:0:2::2/48
93+
r3 - sw: fcfd:0:0:3::1/48 sw - r1: fcfd:0:0:3::2/48
94+
r4 - sw: fcfd:0:0:4::1/48 sw - r1: fcfd:0:0:4::2/48
95+
r5 - sw: fcfd:0:0:5::1/48 sw - r1: fcfd:0:0:5::2/48
96+
r6 - sw: fcfd:0:0:6::1/48 sw - r1: fcfd:0:0:6::2/48
97+
r7 - sw: fcfd:0:0:7::1/48 sw - r1: fcfd:0:0:7::2/48
98+
r8 - sw: fcfd:0:0:8::1/48 sw - r1: fcfd:0:0:8::2/48
7999
80100
router localhost
81101
@@ -90,6 +110,27 @@ router localhost
90110
91111
( The addressing plan is explained in https://docs.google.com/document/d/15giV53fH_eDuWadOxzjPVzlr-a7Rn65MpCbz9QKs7JI/edit )
92112
113+
Note that datacenters are special hosts, which have a public address.
114+
115+
116+
The file etc-hosts in the topology folder maps each node to its hostname.
117+
118+
For example,
119+
fcff:1::1 r1
120+
fd00:0:11::2 h11
121+
fcff:2:1::2 hdc1
122+
fcfd:0:0:fd::1 controller.m # .m suffix is used for the management addresses
123+
...
124+
125+
When you start the topology, the entries defined in this file are loaded and added to the system /etc/hosts file.
126+
127+
This allows you to ping the nodes using their hostnames instead of the IP addresses:
128+
h11# ping6 h83
129+
h83# ping6 h11
130+
131+
The entries are automatically removed from the /etc/hosts file when the emulation is stopped.
132+
133+
93134
------Tunnel examples -------------
94135
1) Create a bidirectional tunnel between h11 and h83, passing through router r4
95136
@@ -292,6 +333,17 @@ GW_ADDR=fd00:0:11::1
292333
ip -6 addr add $IP_ADDR dev $IF_NAME
293334
ip -6 route add default via $GW_ADDR dev $IF_NAME
294335
336+
----Configuration of the Controller----
337+
338+
The controller has a configuration file called start.sh in which we set the IP address. Since the controller is connected to the other nodes through a switch, the gateway is not required.
339+
340+
NODE_NAME=controller
341+
SW_NAME=sw
342+
IF_NAME=$NODE_NAME-$SW_NAME
343+
IP_ADDR=fcfd:0:0:fd::1/48
344+
345+
ip -6 addr add $IP_ADDR dev $IF_NAME
346+
295347
----Addressing----
296348
297349
the addressing on the links between the hosts hxy and the router x can be
142 KB
Loading

0 commit comments

Comments
 (0)