Scenarios for studying and analyzing SRv6 (Segment Routing over IPv6 dataplane).
First, choose the topology you want to launch and navigate to its corresponding directory.
If the converted
folder already exists, skip to step 1.2.
Use the modified clabverter
with the following alias:
alias clabverter='sudo docker run --user $(id -u) \
-v $(pwd):/clabernetes/work --rm \
ghcr.io/giros-dit/clabernetes/clabverter'
Convert the topology:
clabverter --naming non-prefixed --outputDirectory ./converted --destinationNamespace across-tc32
Once the topology is converted, deploy it with:
kubectl apply -f ./converted
Then, apply the deployment patch:
./converted/deployment-patcher.sh
After successful deployment, for each rg
node, add the default route for the upstream link with the following command.
Note: Replace fcff:5::1
with the appropriate loopback address of the ru
node for your specific scenario:
kubectl exec deploy/rg1 -- docker exec rg1 ip -6 route add fd00:0:1::/127 encap seg6 mode encap segs <ru-loopback-ip> dev eth1
For example, if the ru
loopback address is fcff:5::1
:
kubectl exec deploy/rg1 -- docker exec rg1 ip -6 route add fd00:0:1::/127 encap seg6 mode encap segs fcff:5::1 dev eth1
Once the network, monitoring stack, and analysis stack are running, launch the controller using the script in NetworkControlStack/k8s
:
./deploy.sh
This script will create the necessary ConfigMap and start the controller.
To create a flow, run the following command (replace the destination IP with the appropriate one):
kubectl exec deploy/networkstack -- python3 flows.py fd00:0:2::3/64
Alternatively, access the controller pod interactively:
kubectl exec -it deploy/networkstack -- bash
Then run:
python3 flows.py fd00:0:2::3/64
Example of iperf3 between systems hupf-h1 and hgnb1-h1
iperf3 -c fd00:0:2::2 -V -u -b 20M -l 1000 -t 300
iperf3 -s -V -B fd00:0:2::2
.
├── NetworkControlStack/
│ └── k8s/
├── converted/
├── topologies/
├── scripts/
├── README.md
└── ...
- NetworkControlStack/: Controller and related Kubernetes manifests/scripts.
- converted/: Output directory for converted topologies.
- topologies/: Source Containerlab topology files.
- scripts/: Utility scripts for deployment and management.
- Docker
- Kubernetes (kubectl)
- Containerlab
- Python 3.x