0% found this document useful (0 votes)
24 views29 pages

11 Containerlab

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 29

Building multivendor IXP lab

with Containerlab
Roman Dodin @ntdvps 38th EURO-IX FORUM
Network labs
A right, not a privilege

1 2 3
Change Prototyping and Learning
management validation

2 © 2023 Nokia Public


Network labs
How do we typically run labs today?

Pic from https://www.reddit.com/r/networking/comments/g5fb23/eveng_lab_strage_packet_loss/


3 © 2023 Nokia Public
Containerlab
Bringing declarativeness to network labs

IT
IaC
tool

name: mylab
Network Labs

topology:
nodes:
:
:

links:
- :

4 © 2023 Nokia Public containerlab.dev


Why containerlab
If we have lab emulation tools already?
Network emulation SW Containerlab

Purpose built & proven First class support for containerized NOSes
Free versions available Transparent datapath
UI Git friendly & better image sharing and handling
VM-centric Repeatable lab builds and CI friendly
weak containers support
Heavy and semi-open Small footprint, open, free and fast
Fewer Network OSes supported
UI
No UI
5 © 2023 Nokia Public
Learn by doing
Basic IXP topology with Route Servers

OpenBGPd BIRD
ASN 64503 ASN 64503

192.168.0.3

192.168.0.4
eth1

eth1
Peer #1 Peering LAN Peer #2
Nokia SR OS 192.168.0.0/24 FRR
ASN 64501 ASN 64502

6 © 2023 Nokia Public


Learn by doing
Basic IXP topology with Route Servers

OpenBGPd BIRD
ASN 64503 ASN 64503
eBGP session

Peer #1 Peering LAN Peer #2


Nokia SR OS 192.168.0.0/24 FRR
ASN 64501 ASN 64502

NET: 10.0.0.1/32 NET: 10.0.0.2/32

7 © 2023 Nokia Public


Installation
Just a single command

Other installation options:


https://containerlab.dev/install/

8 © 2023 Nokia Public


Topology file
Declarative way to define a lab

name: mylab

topology:

nodes:
:
:

links:
- :

https://containerlab.dev
9 © 2023 Nokia Public
Building an IXP lab
Adding Nokia SR OS node
topology definition logical view

ixp.clab.yml
name: ixp

topology:
nodes:
peer1:
kind: vr-nokia_sros peer1
image: sros:23.3.R1 (Nokia SR OS)
license: license.key

10 © 2023 Nokia Public


Building an IXP lab
Adding FRR node
topology definition logical view

ixp.clab.yml
name: ixp

topology:
nodes:
peer1: {…}

peer2:
kind: linux
image: quay.io/frrouting/frr:8.4.1

peer1 peer2
(Nokia SR OS) (FRR)

11 © 2023 Nokia Public


Building an IXP lab
Adding Route Servers
topology definition logical view

ixp.clab.yml
rs1
name: ixp
(OpenBGPd)
topology:
nodes:
peer1: {…}
peer2: {…}

rs1:
kind: linux
image: quay.io/openbgpd/openbgpd:7.9

peer1 peer2
(Nokia SR OS) (FRR)

12 © 2023 Nokia Public


Building an IXP lab
Adding Route Servers
topology definition logical view

ixp.clab.yml
rs1 rs2
name: ixp (OpenBGPd) (BIRD)
topology:
nodes:
peer1: {…}
peer2: {…}
rs1: {…}

rs2:
kind: linux
image: ghcr.io/srl-labs/bird:2.0.11
peer1 peer2
(Nokia SR OS) (FRR)

13 © 2023 Nokia Public


Building an IXP lab
Adding Peering LAN
topology definition logical view

ixp.clab.yml rs1 rs2


name: ixp
(OpenBGPd) (BIRD)
topology:
nodes:
peer1: {…}
peer2: {…}
rs1: {…}
rs2: {…}

ixp-net:
kind: bridge

peer1 peer2
(Nokia SR OS) (FRR)

14 © 2023 Nokia Public


Building an IXP lab
Adding links
topology definition logical view
ixp.clab.yml
name: ixp
rs1 rs2
topology:
nodes:
peer1: {…}

eth1

eth1
peer2: {…}
rs1: {…}
rs2: {…}
ixp-net: {…}

links:
- endpoints: ["peer1:eth1", "ixp-net:port1"]
- endpoints: ["peer2:eth1", "ixp-net:port2"] peer1 peer2
- endpoints: ["rs1:eth1", "ixp-net:port3"]
- endpoints: ["rs2:eth1", "ixp-net:port4"]

* Management links are not shown

15 © 2023 Nokia Public


Deploying the lab

16 © 2023 Nokia
Deploying the lab

17 © 2023 Nokia
Containerlab
Connecting to the nodes

SSH Docker exec

ssh admin@clab-ixp-peer1 docker exec –it clab-ixp-rs2 birdc

admin@clab-ixp-peer1's password: BIRD 2.0.11 ready.


bird>
[/]
A:admin@peer1#

18 © 2023 Nokia Public


19 © 2023 Nokia Public
Building an IXP lab
Adding startup configurations
topology definition logical view

ixp.clab.yml
name: ixp

topology:
nodes:
peer1:
kind: vr-nokia_sros peer1
image: sros:23.3.R1 (Nokia SR OS)
license: license.key
startup-config: sros.partial.cfg

sros.partial.cfg

20 © 2023 Nokia Public


Building an IXP lab
Adding startup configurations
topology definition logical view

ixp.clab.yml
name: ixp

topology:
nodes:
peer1: {…}

peer2:
binds:
- frr.conf:/etc/frr/frr.conf
- daemons:/etc/frr/daemons peer1 peer2
(Nokia SR OS) (FRR)

21 © 2023 Nokia Public


Building an IXP lab
Adding startup configurations
topology definition logical view

ixp.clab.yml
rs1
name: ixp (OpenBGPd)
topology:
nodes:
eth1
peer1: {…} 192.168.0.3
peer2: {…}

rs1:
binds:
- openbgpd.conf:/etc/bgpd/bgpd.conf peer1 peer2
exec:
- ip address add dev eth1 192.168.0.3/24
(Nokia SR OS) (FRR)

22 © 2023 Nokia Public


23 © 2023 Nokia Public
What next?
Route Servers

 ~All IXP use cases ASN 64503


 ACL filtering
 MAC filtering
.3,.4

Looking glass
ARouteServer
 BUM filtering
IRR mirror
 RPKI validation RPKI Client

 MANRS conformance Nokia SR OS


L2 network
192.168.0.0/24 FRR
 Route Servers config ASN 64501 ASN 64502

(ARouteServer)
 Looking glass integration
 Vendor try-out

hellt/sros-frr-ixp-lab
24 © 2023 Nokia Public
Lab
A to Z explanation

IXP-Lab

25 © 2023 Nokia Public


Supported systems

srl crpd ceos vr-xrv9k sonic-vs


vr-sros vr-vmx vr-veos vr-csr frr
vr-vqfx vr-n9kv

cvx vr-pan vr-ftosv keysight_ixia-c vr-ros

ipinfusion_ocnos checkpoint_cloudguard

26 © 2023 Nokia Public


Containerlab
A different look at labs
Declarative Shareable

Open Container-based

Light Fast

27 © 2023 Nokia Public


Containerlab
Get in touch

https://containerlab.dev Discord server srl-labs/containerlab I am here today!

28 © 2023 Nokia Public


https://containerlab.dev

You might also like