Skip to content
LinkState
Go back

The lab says multi-queue, the host says not really

Introduction to Containerlab and VM-based Testbeds

Containerlab and VM-based testbeds are widely used for testing and validating network configurations, including multi-queue topologies. Containerlab is a container-based platform that allows users to create and manage virtual networks, while VM-based testbeds utilize virtual machines to simulate network environments.

Understanding Intended Multi-Queue Topology

Multi-queue topologies typically consist of multiple queues, each with its own configuration, such as queue size, scheduling algorithm, and priority. The most common queue types are:

Observed Network State

The state of the network interfaces and queues can be observed using various CLI tools.

veth Interface State

The veth interface is a virtual Ethernet interface that connects two network namespaces. The state of the veth interface can be observed using the ip command:

ip link show veth0

tap Interface State

The tap interface is a virtual network interface that connects a network namespace to a physical network interface. The state of the tap interface can be observed using the ip command:

ip link show tap0

Bridge Interface State

The bridge interface is a virtual network interface that connects multiple network namespaces. The state of the bridge interface can be observed using the ip command:

ip link show br0

qdisc State

The qdisc (queueing discipline) is a mechanism that manages packet transmission on a network interface. The state of the qdisc can be observed using the tc command:

tc qdisc show dev eth0

Mismatch Between Intended and Observed Topology

The mismatch between the intended and observed topology can be caused by various factors, including:

Troubleshooting the Mismatch

To troubleshoot the mismatch, it is essential to carefully review the network configuration files and verify that they match the intended topology. CLI tools such as tcpdump or Wireshark can be used to capture and analyze network traffic, helping to identify the cause of the mismatch.

Code and CLI Examples

Configuring Multi-Queue Topology using Containerlab

To configure a multi-queue topology using Containerlab, you can use the following example:

version: '3'
services:
  node1:
    image: containerlab/cls
    networks:
      - net1
    command: ip link add veth0 type veth peer name veth1 netns node2
  node2:
    image: containerlab/cls
    networks:
      - net1
    command: ip link add veth1 type veth peer name veth0 netns node1
networks:
  net1:
    driver: bridge

Configuring Multi-Queue Topology using VM-based Testbed

To configure a multi-queue topology using a VM-based testbed, you can use the following example:

# Create two VMs, vm1 and vm2
virt-install --name vm1 --ram 1024 --vcpus 2 --disk size=10
virt-install --name vm2 --ram 1024 --vcpus 2 --disk size=10

# Configure the network interfaces on each VM
ip link add veth0 type veth peer name veth1 netns vm2
ip link add veth1 type veth peer name veth0 netns vm1

Scaling Limitations and Invalidated Conclusions

The mismatch between the intended and observed topology can invalidate scale conclusions, including:

Best Practices for Avoiding Mismatch

To avoid mismatch, it is essential to follow best practices, including:


Share this post on:

Previous Post
Intended SLO signal versus packet truth
Next Post
Sidecars, Host NAT, and Split Return Ownership