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-tc32Once the topology is converted, deploy it with:
kubectl apply -f ./convertedThen, apply the deployment patch:
./converted/deployment-patcher.shAfter 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 eth1For 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 eth1Once the network, monitoring stack, and analysis stack are running, launch the controller using the script in NetworkControlStack/k8s:
./deploy.shThis 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/64Alternatively, access the controller pod interactively:
kubectl exec -it deploy/networkstack -- bashThen run:
python3 flows.py fd00:0:2::3/64Example of iperf3 between systems hupf-h1 and hgnb1-h1
iperf3 -c fd00:0:2::2 -V -u -b 20M -l 1000 -t 300iperf3 -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
