Skip to content

Commit cb1a088

Browse files
committed
Improve project README.md and add documentation for the topologies
1 parent d05f817 commit cb1a088

File tree

8 files changed

+257
-28
lines changed

8 files changed

+257
-28
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).
142 KB
Loading
142 KB
Loading

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

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
1-
# 1920-srv6-tutorial
1+
# 8r-1c-in-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 in-band to one router.
44

5+
This topology has been used in [ROSE-SRv6 tutorial on Linux - Part 2](https://docs.google.com/document/d/1izO3H8dUt7VoemXtcH-RG4cL127tG9m48edOdFFmktU/edit#heading=h.972o6w1xrdpp).
6+
7+
## Topology overview
8+
9+
![Alt Topology](docs/images/topology.png)
10+
11+
## Start the topology
12+
13+
```
14+
python isis8d.py
15+
```
16+
17+
## Description
518

619
```text
720
821
In folder nodeconf/
9-
- for each host and router one folder
10-
- one folder for the controller
22+
- for each host, datacenter, router and controller one folder
1123
- host folders contain start.sh for each host
1224
- sets IPv6 address for hosts
1325
- adds IPv6 routing to gateway
26+
- datacenter folders contain start.sh for each datacenter
27+
- sets IPv6 address for datecenters
28+
- adds IPv6 routing to gateway
1429
- router folders contain
1530
- zebra.conf
1631
- sets for each interface the IPv6 address
@@ -19,7 +34,7 @@ In folder nodeconf/
1934
- start.sh
2035
- enables IPv6 forwarding
2136
- executes zebra.conf and isisd.conf
22-
- controller folder contains start.sh
37+
- the controller folder contains start.sh
2338
- sets IPv6 address for the controller
2439
- adds IPv6 routing to gateway
2540
@@ -50,6 +65,12 @@ host - router links:
5065
h82 - r8: fd00:0:82::2/64 r8 - h82: fd00:0:82::1/64
5166
h83 - r8: fd00:0:83::2/64 r8 - h83: fd00:0:83::1/64
5267
68+
datacenter - router links:
69+
70+
hdc1 - r2: fcff:2:1::2/48 r2 - hdc1: fcff:2:1::1/48
71+
hdc2 - r8: fcff:8:1::2/48 r8 - hdc2: fcff:8:1::1/48
72+
hdc3 - r5: fcff:5:1::2/48 r5 - hdc3: fcff:5:1::1/48
73+
5374
router - router links:
5475
5576
r1 -r2: fcf0:0:1:2::1/64 r2 - r1: fcf0:0:1:2::2/64
@@ -80,6 +101,8 @@ router localhost
80101
81102
( The addressing plan is explained in https://docs.google.com/document/d/15giV53fH_eDuWadOxzjPVzlr-a7Rn65MpCbz9QKs7JI/edit )
82103
104+
Note that datacenters are special hosts, which have a public address.
105+
83106
------Tunnel examples -------------
84107
1) Create a bidirectional tunnel between h11 and h83, passing through router r4
85108
@@ -125,6 +148,8 @@ table 254 corresponds to the "main" routing table, using recent version of ip co
125148
we can use table name instead of table id, for example
126149
on r8: ip -6 route add fcff:8::100 encap seg6local action End.DT6 table main dev r8-h83
127150
151+
ROSE-SRv6 tutorial on Linux - Part 2 (https://docs.google.com/document/d/1izO3H8dUt7VoemXtcH-RG4cL127tG9m48edOdFFmktU/edit#heading=h.972o6w1xrdpp) shows how to use a Controller to setup the SRv6 tunnels.
152+
128153
129154
130155
------ISIS CONFIGURATION-------------
@@ -283,6 +308,19 @@ GW_ADDR=fd00:0:11::1
283308
ip -6 addr add $IP_ADDR dev $IF_NAME
284309
ip -6 route add default via $GW_ADDR dev $IF_NAME
285310
311+
----Configuration of the Controller----
312+
313+
The controller has a configuration file called start.sh in which we set the IP address and the gateway.
314+
315+
NODE_NAME=controller
316+
GW_NAME=r2
317+
IF_NAME=$NODE_NAME-$GW_NAME
318+
IP_ADDR=fcff:2:c::2/48
319+
GW_ADDR=fcff:2:c::1
320+
321+
ip -6 addr add $IP_ADDR dev $IF_NAME
322+
ip -6 route add fc00::/8 via $GW_ADDR dev $IF_NAME
323+
286324
----Addressing----
287325
288326
the addressing on the links between the hosts hxy and the router x can be
285 KB
Loading

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

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
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+
```
12+
python isis8d.py
13+
```
14+
15+
## Description
516

617
```text
718
819
In folder nodeconf/
9-
- for each host and router one folder
10-
- one folder for the controller
20+
- for each host, datacenter, router and controller one folder
1121
- host folders contain start.sh for each host
1222
- sets IPv6 address for hosts
1323
- adds IPv6 routing to gateway
24+
- datacenter folders contain start.sh for each datacenter
25+
- sets IPv6 address for datecenters
26+
- adds IPv6 routing to gateway
1427
- router folders contain
1528
- zebra.conf
1629
- sets for each interface the IPv6 address
@@ -19,7 +32,7 @@ In folder nodeconf/
1932
- start.sh
2033
- enables IPv6 forwarding
2134
- executes zebra.conf and isisd.conf
22-
- controller folder contains start.sh
35+
- the controller folder contains start.sh
2336
- sets IPv6 address for the controller
2437
2538
@@ -49,6 +62,12 @@ host - router links:
4962
h82 - r8: fd00:0:82::2/64 r8 - h82: fd00:0:82::1/64
5063
h83 - r8: fd00:0:83::2/64 r8 - h83: fd00:0:83::1/64
5164
65+
datacenter - router links:
66+
67+
hdc1 - r2: fcff:2:1::2/48 r2 - hdc1: fcff:2:1::1/48
68+
hdc2 - r8: fcff:8:1::2/48 r8 - hdc2: fcff:8:1::1/48
69+
hdc3 - r5: fcff:5:1::2/48 r5 - hdc3: fcff:5:1::1/48
70+
5271
router - router links:
5372
5473
r1 -r2: fcf0:0:1:2::1/64 r2 - r1: fcf0:0:1:2::2/64
@@ -64,18 +83,18 @@ router - router links:
6483
6584
controller - switch links:
6685
67-
controller - sw: fcfd:0:0:fd::1/48
86+
controller - sw: fcfd:0:0:fd::1/48 sw - controller: fcfd:0:0:fd::2/48
6887
6988
router - switch links:
7089
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
90+
r1 - sw: fcfd:0:0:1::1/48 sw - r1: fcfd:0:0:1::2/48
91+
r2 - sw: fcfd:0:0:2::1/48 sw - r1: fcfd:0:0:2::2/48
92+
r3 - sw: fcfd:0:0:3::1/48 sw - r1: fcfd:0:0:3::2/48
93+
r4 - sw: fcfd:0:0:4::1/48 sw - r1: fcfd:0:0:4::2/48
94+
r5 - sw: fcfd:0:0:5::1/48 sw - r1: fcfd:0:0:5::2/48
95+
r6 - sw: fcfd:0:0:6::1/48 sw - r1: fcfd:0:0:6::2/48
96+
r7 - sw: fcfd:0:0:7::1/48 sw - r1: fcfd:0:0:7::2/48
97+
r8 - sw: fcfd:0:0:8::1/48 sw - r1: fcfd:0:0:8::2/48
7998
8099
router localhost
81100
@@ -90,6 +109,8 @@ router localhost
90109
91110
( The addressing plan is explained in https://docs.google.com/document/d/15giV53fH_eDuWadOxzjPVzlr-a7Rn65MpCbz9QKs7JI/edit )
92111
112+
Note that datacenters are special hosts, which have a public address.
113+
93114
------Tunnel examples -------------
94115
1) Create a bidirectional tunnel between h11 and h83, passing through router r4
95116
@@ -293,6 +314,17 @@ GW_ADDR=fd00:0:11::1
293314
ip -6 addr add $IP_ADDR dev $IF_NAME
294315
ip -6 route add default via $GW_ADDR dev $IF_NAME
295316
317+
----Configuration of the Controller----
318+
319+
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.
320+
321+
NODE_NAME=controller
322+
SW_NAME=sw
323+
IF_NAME=$NODE_NAME-$SW_NAME
324+
IP_ADDR=fcfd:0:0:fd::1/48
325+
326+
ip -6 addr add $IP_ADDR dev $IF_NAME
327+
296328
----Addressing----
297329
298330
the addressing on the links between the hosts hxy and the router x can be

0 commit comments

Comments
 (0)