[email protected]

Basics · Kubernetes

Cilium vs Calico: CNI Comparison from Project Docs, with Decision Table

Editorial note: Versions, commands and prices may change. Please verify critical steps independently before production use. This guide does not replace individual professional, legal or tax advice.

CNI decision for a new or existing cluster? WZ-IT plans and operates Kubernetes networks: CNI and network policies, Gateway API, load balancing, DNS and TLS - and private access through NetBird instead of unnecessary public exposure. See Network & Secure Access

Cilium or Calico? Both enforce Kubernetes NetworkPolicies, both connect pods across nodes, both are widely used. The differences lie in details that only show up in operations: which data path runs, which rules and flow data are part of the open-source scope, which kernel is required and how hard a later switch becomes. This comparison relies exclusively on the projects' documentation (Cilium 1.20.4, Calico Open Source 3.33), every statement with a link. As of October 2026.

A CNI plugin is mandatory in every cluster: it implements the Kubernetes network model, assigns pod addresses and connects pods across nodes. Whether it also enforces NetworkPolicies depends on the plugin.

Table of contents

Summary

  • The standard NetworkPolicy works the same on both. Anyone who needs default deny and allow rules by label does not need to change the CNI.
  • In its open-source scope Cilium includes rules by domain name and L7, Hubble, Cluster Mesh, an egress gateway and IPsec. The feature matrix of the Calico documentation lists rules by domain name, application layer policy, cluster mesh and egress gateway under Cloud and Enterprise. The open-source documentation describes HTTP rules only via the Istio integration.
  • Calico offers several data paths (iptables, eBPF, nftables, VPP, Windows), Cilium is built on eBPF. Both require Linux 5.10 or newer.
  • Switching the CNI in a running cluster is a migration, not a setting.

Core facts compared

Criterion Cilium 1.20 Calico Open Source 3.33
Project status CNCF graduated since 11 Oct 2023 Created and maintained by Tigera, in the CNCF landscape without project status
License Userspace Apache-2.0, BPF code GPL-2.0 or BSD-2-Clause at your option (README) Apache-2.0
Current release 1.20.4 of 23 Oct 2026 3.33.0 of 1 Oct 2026
Tested Kubernetes versions 1.33 to 1.36 1.35 to 1.37
Data path eBPF, overlay (VXLAN, Geneve) or native routing iptables (default), eBPF, nftables, VPP, Windows
Kernel Linux 5.10 or newer (RHEL 8.10: 4.18) Linux 5.10 or newer (RHEL 8 listed)
Operating systems Linux (AMD64, AArch64) Linux and Windows
kube-proxy replaceable via socket-LB; Gateway API and egress gateway in particular require the replacement modes iptables, ipvs, nftables; the eBPF data path replaces kube-proxy

Features in the open-source scope

The table shows what each documentation describes in the free scope. For Calico the feature matrix with the columns Open Source, Cloud and Enterprise applies. Commercial editions are not part of the comparison.

Feature Cilium 1.20 Calico Open Source 3.33
Standard NetworkPolicy yes yes
Own policy objects CiliumNetworkPolicy and CiliumClusterwideNetworkPolicy (L3 to L7, deny rules, host policies) NetworkPolicy and GlobalNetworkPolicy (Allow, Deny, Log, Pass), tiers, staged policies
Kubernetes ClusterNetworkPolicy (v1alpha2) from 1.20, enabled via flag and CRD Admin and Baseline tier (kube-admin, kube-baseline)
Rules by domain name yes not included according to the matrix
L7 rules (HTTP, gRPC) yes application layer policy not included according to the matrix; the open-source docs describe HTTP rules only via Istio and the Dikastes sidecar
Flow visibility Hubble: CLI, relay, UI, metrics, export to files Flow logs API and Whisker, tech preview, data held in memory
Encryption IPsec, WireGuard, ztunnel (beta) WireGuard; IPsec only in the VPP data path
Gateway API built-in controller, Gateway API v1.6.3 Calico Ingress Gateway, hardened Envoy Gateway distribution
Multi-cluster Cluster Mesh not included according to the matrix
Egress gateway yes not included according to the matrix
BGP and LoadBalancer IPs BGP Control Plane, LB IPAM, L2 announcements (beta) BGP peering, advertising service IPs

Data path: eBPF as the default or as an option

Cilium works on eBPF: policies and identities are enforced in the kernel, service connections are rewritten at the socket and can replace kube-proxy completely. The replacement has to be switched on: the Helm default is kubeProxyReplacement=false. The overlay uses VXLAN by default, with Geneve and native routing as alternatives.

Calico offers eBPF as one of several choices. The default is the iptables data path, which according to the documentation is designed for compatibility with kube-proxy and your own iptables rules, while the eBPF data path targets performance and latency. The same page states that for policies with a large number of IP addresses (ipsets), iptables is in many cases better than eBPF in micro-benchmarks. The eBPF data path supports neither SCTP nor the etcd datastore and no clusters with mixed eBPF and standard nodes. Calico also describes an nftables data path, a VPP data path and a Windows data path.

The documentations provide no reliable throughput or latency comparisons, and this article names none. Anyone who has to decide the question measures with their own load on their own hardware.

Policies: one shared standard, different extensions

The portable part is the Kubernetes NetworkPolicy. A default-deny rule for incoming traffic looks the same on both plugins (example from the Kubernetes documentation):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
spec:
  podSelector: {}
  policyTypes:
  - Ingress

Without a plugin that enforces NetworkPolicies, this object has no effect. A pod without a policy is not isolated by default. Standard policies only know allow rules and act additively, there is no order.

Beyond that the extensions differ. Cilium knows deny rules, rules by domain name and L7 rules for HTTP and gRPC as well as its own default behaviour: the first rule that selects an endpoint switches it to default deny per direction, and the mode can be set to "always" or "never". Calico arranges rules in tiers with a defined precedence, knows the actions Allow, Deny, Log and Pass and allows staged policies for testing. Tiers are part of the open-source scope. Both implement the Kubernetes ClusterNetworkPolicy API (still v1alpha2) with its Admin and Baseline levels, Cilium from 1.20 after activation, Calico 3.33 through two fixed tiers. The platform team can use it to set rules that application teams cannot override.

The Cilium documentation itself warns: when several policy types are used at the same time, the total set of allowed connections is hard to oversee, and unintended allows can result. A set of standard policies as a base and few extensions on top remain easier to follow.

Operations: kernel, ports and version care

Kernel and distribution. Both documentations name Linux 5.10 or newer (Cilium, Calico). Cilium lists Ubuntu from 20.04, Debian from 10, RHEL from 8.6 and Talos from 1.5.0, Calico lists Ubuntu from 20.04, RHEL from 8, Debian from 10 and Talos from 1.6. Individual Cilium features need higher kernels, for example netkit from 6.8. Calico requires that NetworkManager does not manage the Calico interfaces and that Firewalld or other iptables managers are disabled.

Ports between nodes. These openings belong in the firewall and security group planning before installation:

Purpose Cilium Calico
Overlay VXLAN UDP 8472, Geneve UDP 6081 IP-in-IP (default, protocol 4), VXLAN UDP 4789
Encryption WireGuard UDP 51871, ESP for IPsec WireGuard UDP 51820 (IPv6: 51821)
Other Health checks TCP 4240 and ICMP (recommended) BGP TCP 179, Typha TCP 5473

Version care. The CNI runs on every node, an upgrade affects the whole cluster. Both projects test against a limited range of Kubernetes versions (table above). As of 28 October 2026 Kubernetes 1.37 is current, Cilium 1.20 lists 1.33 to 1.36, Calico 3.33 tests 1.35 to 1.37. CNI compatibility therefore belongs in the check before every Kubernetes upgrade. How version state and upgrade history can be kept as evidence is described in Kubernetes NIS2 and ISO 27001: the evidence a cluster can provide.

Distribution defaults. RKE2 bundles four CNI plugins and uses Canal (Flannel for traffic between nodes, Calico for traffic within a node and for policies) as the default, Cilium and Calico can be selected. k3s ships Flannel; for another CNI, k3s is started with --flannel-backend=none and --disable-network-policy is additionally recommended. Talos installs Flannel and can be switched to Cilium, as described in Install Talos Linux on Proxmox.

Further components. With Cilium, Gateway API and egress gateway require the kube-proxy replacement. For gateway listeners Cilium uses Envoy, by default via TPROXY with iptables, so the nodes must provide the necessary netfilter modules. How Gateway API and Ingress relate is explained in Gateway API vs. Ingress, address assignment for LoadBalancer services on bare metal and Proxmox in MetalLB vs. kube-vip.

Switching in a running cluster

A CNI is the earliest decision in a cluster because every pod is configured by the CNI when it starts. Anyone who switches has to restart all pods of the old CNI. The Cilium documentation describes a node-by-node migration for this: two overlays with separate IP ranges run in parallel, pods on both sides remain reachable until all nodes are converted. A simple conversion of all nodes followed by a restart would split the network into two islands.

According to the Calico documentation, a cluster that already uses another CNI cannot be migrated to Calico. Documented is the migration from Flannel or Canal, either with a live migration tool or by building a new cluster. For planning this means: the decision belongs at the start, and a switch needs a test environment, a change window and a way back.

Decision table: which CNI when

Situation Leaning Basis
Default deny per namespace, allow rules by label, no L7 rules, no flow evidence Keep the distribution's CNI if it enforces NetworkPolicies; otherwise Calico or Cilium Standard NetworkPolicy is portable
Egress by domain name or L7 rules (HTTP method, path, gRPC) without a commercial edition Cilium Calico matrix lists domain names and application layer policy under Cloud and Enterprise; HTTP rules in Calico only with an Istio sidecar
Flow data as evidence of who talked to whom, with export to logs Cilium Hubble with exporter; Whisker in Calico is a tech preview, data held in memory
Windows nodes in the cluster Calico Windows data path in the matrix; Cilium docs name only Linux
Service discovery and policies across several clusters without a commercial edition Cilium (Cluster Mesh) Calico matrix: cluster mesh not included
Fixed source IP for legacy systems or firewalls Cilium (egress gateway) Calico matrix: egress gateway not included
IPsec required instead of WireGuard Cilium Calico docs name WireGuard, IPsec only in the VPP data path
Gateway API without an additional controller Cilium or Calico Ingress Gateway both included; Cilium needs the kube-proxy replacement
Platform team sets rules, teams must not override Calico tiers or ClusterNetworkPolicy (both, v1alpha2) Tiers in the open-source scope
Operations as close as possible to kube-proxy and iptables Calico with the iptables data path Calico docs: default data path designed for compatibility
Kernel below 5.10 Update kernel or operating system first (exception: RHEL 8 with backported 4.18 kernel, for Cilium from 8.10) Both documentations require 5.10
Existing cluster with Calico or Canal, nothing missing Do not switch A switch is a migration

Status and methodology

  • As of: 28 October 2026. Cilium 1.20.4 (released 23 October 2026, documentation "stable"), Calico Open Source 3.33 (release 3.33.0 of 1 October 2026, documentation "latest"), Kubernetes 1.37 as the current version.
  • Sources: exclusively project documentation, the projects' GitHub repositories and the CNCF. All pages retrieved on 28 October 2026, links in the source list.
  • Calico scope: The statement "not included" refers to the Open Source column of the feature matrix in the Calico 3.33 documentation. Where the open-source documentation describes more than that (HTTP rules via Istio, IPsec with VPP), this is noted. Commercial editions and third-party offerings are not assessed.
  • CNCF status of Calico: The entry "Project Calico" in the CNCF landscape (landscape.yml) has no project field, unlike Cilium with project: graduated.
  • Not included: Throughput and latency measurements, service mesh comparison, comparison with Flannel and cloud-specific CNIs.
  • Beta and preview: Features with this status (ztunnel, L2 announcements, Whisker) are marked in the tables. Check their state before using them in production.

How WZ-IT works

  1. Clarify requirements. Policies (standard or L7/domain names), flow evidence, encryption, Gateway API, multi-cluster, Windows, kernel and distribution determine the choice, not the popularity of the project.
  2. Decide using the table. The CNI choice is made when the cluster is built because a later switch is a migration. In Kubernetes networking and secure access, CNI and network policies with default deny, necessary flows and network transparency are part of the scope.
  3. Maintain in operations. In Kubernetes operations the CNI is one of the add-ons: upgrades run as a planned change with a compatibility check against the Kubernetes version. Managed Kubernetes costs from €590 excl. VAT per cluster and month including three worker nodes. Monitoring runs 24/7, the response to P1 incidents follows the service level.
  4. Clarify individual questions. Questions about CNI selection or a switch can be clarified without a contract through support, €120 per hour excl. VAT. As of October 2026.

Private access to the cluster API and internal services is a separate layer above the CNI: Access Kubernetes privately with NetBird. NetBird does not replace the CNI.

Further guides

To select a CNI, introduce policies or plan a switch: Kubernetes Network & Secure Access with WZ-IT.

Sources

All sources retrieved on 28 October 2026.

Related service: Cilium and network policies

Rather have it operated?

You'd rather not run Kubernetes yourself? WZ-IT handles setup, operations and maintenance - privacy-focused from Germany.

Enquiry

Design, take over, or operate Kubernetes

We design and operate Kubernetes on bare metal, Proxmox, and European cloud platforms, including networking, GitOps, observability, and backups.

  • Straight with Timo and Robin - no sales team, no pitch
  • A professional assessment of your situation
  • Concrete next steps for infrastructure, software or AI

The conversation is free and non-binding.

WZ-IT supported us professionally with the provisioning and setup of NetBird. Alongside the technical implementation, we also received well-founded advice on connecting our Kubernetes clusters. The recommendations were concrete and directly actionable. The collaboration was consistently reliable, fast and on equal terms. We can recommend WZ-IT without reservation.
Kai ClaußHead of Development, SweetConnect GmbH
Timo and Robin, founders of WZ-IT

Design, take over, or operate Kubernetes

WZ-IT supported us professionally with the provisioning and setup of NetBird. Alongside the technical implementation, we also received well-founded advice on connecting our Kubernetes clusters. The recommendations were concrete and directly actionable. The collaboration was consistently reliable, fast and on equal terms. We can recommend WZ-IT without reservation.
Kai ClaußHead of Development, SweetConnect GmbH

Frequently Asked Questions

Answers to the most important questions

Knowledge

More on Kubernetes

All Kubernetes articles

Companies worldwide trust WZ-IT

  • Stadtwerke Brühl
  • DGHO e.V.
  • solarwerkstatt berlin
  • Krüger Dirndl
  • ABCO Water Systems
  • Golem.de
  • EVADXB
  • nextGYM
  • AInergy
  • ml&s
  • Odiseo Solutions
  • Annota
  • ARGE
  • SweetConnect GmbH
  • Aphy AG
  • CORGOS
  • Rekorder
  • SolidProof
  • Yonju
  • Keymate
  • Paritel
  • Mr. Clipart
  • Millenium
  • Negosh
  • Führerscheinmacher
  • BTI
  • Deutsche Gesellschaft für Datenschutz
Read client reviews