Skip to content

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]

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]

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]

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]

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.