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:
      # node1 is of nokia_srlinux kind
      kind: nokia_srlinux
      type: ixrd2l
      image: ghcr.io/nokia/srlinux
    node2:
      # node2 is of ceos kind
      kind: arista_ceos
      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 nokia_srlinux supported container
Nokia SR OS nokia_sros supported VM
Arista cEOS arista_ceos supported container
Arista vEOS arista_veos supported VM
Juniper cRPD juniper_crpd supported container
Juniper vMX juniper_vmx supported VM
Juniper vQFX juniper_vqfx supported VM
Juniper vSRX juniper_vsrx supported VM
Juniper vJunos-router juniper_vjunosrouter supported VM
Juniper vJunos-switch juniper_vjunosswitch supported VM
Juniper vJunosEvolved juniper_vjunosevolved supported VM
Cisco XRd cisco_xrd supported container
Cisco XRv9k cisco_xrv9k supported VM
Cisco XRv cisco_xrv supported VM
Cisco CSR1000v cisco_csr1000v supported VM
Cisco Nexus 9000v cisco_n9kv supported VM
Cisco 8000 cisco_c8000 supported VM+
Cisco Catalyst 9000v cisco_cat9kv supported VM
Cisco IOL cisco_iol supported container
Cisco FTDv cisco_ftdv supported VM
Cumulus VX cumulus_cvx supported container
Aruba ArubaOS-CX aruba_aoscx supported VM
SONiC sonic supported container
SONiC VM sonic_vm supported VM
Dell FTOS10v dell_ftos supported VM
Dell SONiC dell_sonic supported VM
Mikrotik RouterOS mikrotik_ros supported VM
Huawei VRP huawei_vrp supported VM
IPInfusion OcNOS ipinfusion_ocnos supported VM
OpenBSD openbsd supported VM
Keysight ixia-c-one keysight_ixia-c-one supported container
Ostinato linux supported container
Check Point Cloudguard checkpoint_cloudguard supported VM
Fortinet Fortigate fortinet_fortigate supported VM
Palo Alto PAN 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.