// AI NATIVE STACK

AI Native › AI Native Infra › Network › Multus

CRASH COURSE · AI-NATIVE · intermediate · 9 min read · v4.x

Multus — give a Kubernetes pod more than one network interface.

network ai-native multus multi-nic kubernetes

TL;DR — Multus CNI is a meta-plugin that lets you attach multiple network interfaces to a single Kubernetes pod. For AI workloads this is essential: the primary interface handles cluster networking (via Cilium/Calico), while secondary interfaces connect directly to high-speed RDMA/InfiniBand fabrics for GPU-to-GPU collective communication — separate data and control planes in one pod.

What it is

Multus is a CNI meta-plugin — it doesn't provide networking itself, but lets you attach multiple CNI plugins to a single pod, each providing a separate network interface. It's the standard way to give a pod both a regular cluster network (eth0) and additional high-speed interfaces (e.g., an SR-IOV VF for RDMA). In the AI Native landscape it's in AI Native Infra › Network.

Why it exists

Kubernetes gives every pod exactly one network interface by default. But GPU training pods need two networks: the cluster network for API calls, health checks, and metrics — and a separate high-bandwidth, low-latency network (InfiniBand, RoCE) for NCCL all-reduce and parameter sync. Without Multus, you can't attach both to the same pod.

training pod eth0 (Cilium) net1 (SR-IOV) cluster network InfiniBand fabric control plane GPU data plane

Fig 1 — Multus attaches two interfaces: cluster network for control, InfiniBand for GPU traffic.

How it works

Multus runs as a DaemonSet and intercepts CNI calls from the kubelet. For each pod, it first invokes the primary CNI (e.g., Cilium) to create eth0, then iterates over any NetworkAttachmentDefinition annotations on the pod to invoke secondary CNIs — each one creates an additional interface inside the pod's network namespace. The pod sees multiple NICs, each with its own IP and routes.

Key features

  • Multiple interfaces — attach any number of secondary NICs to a pod.
  • CNI-agnostic — works with any primary CNI (Cilium, Calico, Flannel).
  • NetworkAttachmentDefinition CRD — declarative config for secondary networks.
  • SR-IOV integration — the primary use case for AI: attach SR-IOV VFs for RDMA.
  • Thick plugin mode — v4.x supports a thick plugin (client/server) for reliability and event-driven attachment.

Quick start

Install Multus, then define a secondary network and annotate your pod:

# install Multus
kubectl apply -f https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-cni/master/deployments/multus-daemonset-thick.yml
# NetworkAttachmentDefinition for SR-IOV
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
  name: sriov-rdma
  annotations:
    k8s.v1.cni.cncf.io/resourceName: intel.com/sriov_rdma
spec:
  config: '{"type":"sriov","vlan":100,"ipam":{"type":"whereabouts","range":"10.56.0.0/16"}}'
---
# pod annotation to attach it
metadata:
  annotations:
    k8s.v1.cni.cncf.io/networks: sriov-rdma

The pod gets eth0 (primary CNI) + net1 (SR-IOV RDMA interface).

When to use, when to skip

Use it whenever a pod needs more than one network — the primary scenario for AI is attaching RDMA/InfiniBand interfaces alongside the cluster network for GPU training. Also used for storage networks, management networks, or telco NFV workloads.

Skip it if your pods only need one network interface — single-NIC is the Kubernetes default and requires no extra tooling.

heads up Multus adds a secondary interface but doesn't manage it — you need the actual CNI plugin for that interface (e.g., SR-IOV CNI, macvlan, ipvlan). Multus is the orchestrator, not the provider.

vs / alongside

ToolRoleNote
MultusMulti-NIC meta-pluginThe orchestrator for multiple interfaces
CiliumPrimary CNIHandles eth0 / cluster networking
SR-IOV CNISR-IOV interface pluginInvoked by Multus for RDMA VFs
RDMAGPU data plane protocolRuns over the SR-IOV interface

References

Extra reads

Verified against Multus CNI docs (github.com/k8snetworkplumbingwg), May 2026.

← AI Native Stack
© cvam — written in plaintext, served warm