Examples¶
Each example is a real .clab.yml file. Look around, then download it and deploy it from your app.
Linux playground
name: linux-playground
topology:
defaults:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
nodes:
client:
exec:
- ip address add 10.10.10.1/24 dev eth1
server:
exec:
- ip address add 10.10.10.2/24 dev eth1
links:
- endpoints: [client:eth1, server:eth1]
name: linux-playground
topology:
defaults:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
nodes:
client:
exec:
- ip address add 10.10.10.1/24 dev eth1
server:
exec:
- ip address add 10.10.10.2/24 dev eth1
links:
- endpoints: [client:eth1, server:eth1]Two Linux nodes with addresses, ready to ping. Runs anywhere. Open the example
Leaf–spine fabric
name: fabric
topology:
defaults:
kind: nokia_srlinux
image: ghcr.io/nokia/srlinux:latest
nodes:
spine1:
type: ixrd3
spine2:
type: ixrd3
leaf1:
type: ixrd2
leaf2:
type: ixrd2
leaf3:
type: ixrd2
client1:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
client2:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
client3:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
links:
- endpoints: [spine1:e1-1, leaf1:e1-49]
- endpoints: [spine1:e1-2, leaf2:e1-49]
- endpoints: [spine1:e1-3, leaf3:e1-49]
- endpoints: [spine2:e1-1, leaf1:e1-50]
- endpoints: [spine2:e1-2, leaf2:e1-50]
- endpoints: [spine2:e1-3, leaf3:e1-50]
- endpoints: [leaf1:e1-1, client1:eth1]
- endpoints: [leaf2:e1-1, client2:eth1]
- endpoints: [leaf3:e1-1, client3:eth1]
name: fabric
topology:
defaults:
kind: nokia_srlinux
image: ghcr.io/nokia/srlinux:latest
nodes:
spine1:
type: ixrd3
spine2:
type: ixrd3
leaf1:
type: ixrd2
leaf2:
type: ixrd2
leaf3:
type: ixrd2
client1:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
client2:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
client3:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
links:
- endpoints: [spine1:e1-1, leaf1:e1-49]
- endpoints: [spine1:e1-2, leaf2:e1-49]
- endpoints: [spine1:e1-3, leaf3:e1-49]
- endpoints: [spine2:e1-1, leaf1:e1-50]
- endpoints: [spine2:e1-2, leaf2:e1-50]
- endpoints: [spine2:e1-3, leaf3:e1-50]
- endpoints: [leaf1:e1-1, client1:eth1]
- endpoints: [leaf2:e1-1, client2:eth1]
- endpoints: [leaf3:e1-1, client3:eth1]Two spines, three leaves, three clients on SR Linux. Wiring only. Open the example
Packet walk
# Ready to ping: client -> router -> server, across two IPv4 subnets.
name: packet-walk
topology:
defaults:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
nodes:
client:
exec:
- ip address add 10.10.1.2/24 dev eth1
- ip route add 10.10.2.0/24 via 10.10.1.1
router:
sysctls:
net.ipv4.ip_forward: "1"
exec:
- ip address add 10.10.1.1/24 dev eth1
- ip address add 10.10.2.1/24 dev eth2
server:
exec:
- ip address add 10.10.2.2/24 dev eth1
- ip route add 10.10.1.0/24 via 10.10.2.1
links:
- endpoints: [client:eth1, router:eth1]
- endpoints: [router:eth2, server:eth1]
# Ready to ping: client -> router -> server, across two IPv4 subnets.
name: packet-walk
topology:
defaults:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
nodes:
client:
exec:
- ip address add 10.10.1.2/24 dev eth1
- ip route add 10.10.2.0/24 via 10.10.1.1
router:
sysctls:
net.ipv4.ip_forward: "1"
exec:
- ip address add 10.10.1.1/24 dev eth1
- ip address add 10.10.2.1/24 dev eth2
server:
exec:
- ip address add 10.10.2.2/24 dev eth1
- ip route add 10.10.1.0/24 via 10.10.2.1
links:
- endpoints: [client:eth1, router:eth1]
- endpoints: [router:eth2, server:eth1]Client, router, server across two subnets, with addresses and routes. Open the example
Branch office
# Wiring only. Configure addressing, NAT, and policy as a separate exercise.
name: branch-office
topology:
defaults:
kind: nokia_srlinux
image: ghcr.io/nokia/srlinux:latest
nodes:
isp-a:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
isp-b:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
edge: {type: ixrd2}
core1: {type: ixrd2}
core2: {type: ixrd2}
floor1: {type: ixrd2}
floor2: {type: ixrd2}
floor3: {type: ixrd2}
links:
- endpoints: [isp-a:eth1, edge:e1-1]
- endpoints: [isp-b:eth1, edge:e1-2]
- endpoints: [edge:e1-3, core1:e1-1]
- endpoints: [edge:e1-4, core2:e1-1]
- endpoints: [core1:e1-2, core2:e1-2]
- endpoints: [core1:e1-3, floor1:e1-49]
- endpoints: [core1:e1-4, floor2:e1-49]
- endpoints: [core2:e1-3, floor2:e1-50]
- endpoints: [core2:e1-4, floor3:e1-49]
# Wiring only. Configure addressing, NAT, and policy as a separate exercise.
name: branch-office
topology:
defaults:
kind: nokia_srlinux
image: ghcr.io/nokia/srlinux:latest
nodes:
isp-a:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
isp-b:
kind: linux
image: ghcr.io/srl-labs/network-multitool:latest
edge: {type: ixrd2}
core1: {type: ixrd2}
core2: {type: ixrd2}
floor1: {type: ixrd2}
floor2: {type: ixrd2}
floor3: {type: ixrd2}
links:
- endpoints: [isp-a:eth1, edge:e1-1]
- endpoints: [isp-b:eth1, edge:e1-2]
- endpoints: [edge:e1-3, core1:e1-1]
- endpoints: [edge:e1-4, core2:e1-1]
- endpoints: [core1:e1-2, core2:e1-2]
- endpoints: [core1:e1-3, floor1:e1-49]
- endpoints: [core1:e1-4, floor2:e1-49]
- endpoints: [core2:e1-3, floor2:e1-50]
- endpoints: [core2:e1-4, floor3:e1-49]Two uplinks, a redundant core, three floors. Wiring only. Open the example
More styled labs, with their annotation files, are in the customization studio. For routing protocols, network operating systems, and bigger labs, see the containerlab lab examples.