Skip to content

Kinds#

Containerlab launches, wires up and manages container-based labs. The steps required to launch a vanilla debian or centos container image aren't at all different. On the other hand, Nokia SR Linux launching procedure is nothing like the one for Arista cEOS.

Things like required syscalls, mounted directories, entrypoint and commands to execute are all different for the containerized NOS'es. To let containerlab understand which launching sequence to use, the notion of a kind was introduced. Essentially kinds abstract away the need to understand certain setup peculiarities of different NOS'es.

Given the following topology definition file, containerlab is able to know how to launch node1 as an SR Linux container and node2 as a cEOS one because they are associated with the kinds:

name: srlceos01

topology:
  nodes:
    node1:
      kind: nokia_srlinux              # node1 is of srl kind
      type: ixrd2l
      image: ghcr.io/nokia/srlinux
    node2:
      kind: ceos             # node2 is of ceos kind
      image: ceos:4.32.0F

  links:
    - endpoints: ["node1:e1-1", "node2:eth1"]

Containerlab supports a fixed number of platforms. Most platforms are identified with both a short and a long kind name; these names can be used interchangeably.

Within each predefined kind, we store the necessary information that is used to successfully launch the container. The following kinds are supported by containerlab:

Name Short/Long kind name Status Packaging
Nokia SR Linux srl/nokia_srlinux supported container
Nokia SR OS vr-sros/nokia_sros supported VM
Arista cEOS ceos/arista_ceos supported container
Arista vEOS vr-veos/vr-arista_veos supported VM
Juniper cRPD crpd/juniper_crpd supported container
Juniper vMX vr-vmx/vr-juniper_vmx supported VM
Juniper vQFX vr-vqfx/vr-juniper_vqfx supported VM
Juniper vSRX vr-vsrx/vr-juniper_vsrx supported VM
Juniper vJunos-router vr-vjunosrouter/juniper_vjunosrouter supported VM
Juniper vJunos-switch vr-vjunosswitch/juniper_vjunosswitch supported VM
Juniper vJunosEvolved vr-vjunosevolved/juniper_vjunosevolved supported VM
Cisco XRd `xrd/cisco_xrd' supported container
Cisco XRv9k vr-xrv9k/vr-cisco_xrv9k supported VM
Cisco XRv vr-xrv/vr-cisco_xrv supported VM
Cisco CSR1000v vr-csr/vr-cisco_csr1000v supported VM
Cisco Nexus 9000v vr-n9kv/vr-cisco_n9kv supported VM
Cisco 8000 c8000/cisco_c8000 supported VM+
Cisco FTDv cisco_ftdv supported VM
Cumulus VX cvx/cumulus_cvx supported container
Aruba ArubaOS-CX vr-aoscx/vr-aruba_aoscx supported VM
SONiC sonic supported container
Dell FTOS10v vr-ftosv/vr-dell_ftos supported VM
Mikrotik RouterOS vr-ros/vr-mikrotik_ros supported VM
IPInfusion OcNOS ipinfusion_ocnos supported VM
OpenBSD openbsd supported VM
Keysight ixia-c-one keysight_ixia-c-one supported container
Check Point Cloudguard checkpoint_cloudguard supported VM
Fortinet Fortigate fortinet_fortigate supported VM
Palo Alto PAN vr-panos/vr-paloalto_panos supported VM
Linux bridge bridge supported N/A
Linux container linux supported container
RARE/freeRtr rare supported container
Openvswitch bridge ovs-bridge supported N/A
External container ext-container supported container
Host host supported N/A

Refer to a specific kind documentation article for kind-specific details.