Cilium (computing)
View on Wikipedia| Cilium | |
|---|---|
Command-line session showing the status of a Cilium installation in a Kind cluster | |
| Original authors | Thomas Graf, Daniel Borkmann, André Martins, Madhusudan Challa[1] |
| Developers | Open source community, Isovalent, Google, Datadog, Red Hat, Cloud Native Computing Foundation[2] |
| Initial release | December 16, 2015[1] |
| Stable release | 1.18
/ 29 July 2025[3] |
| Repository | github |
| Written in | Go, eBPF, C, C++ |
| Operating system | Linux, Windows[4] |
| Platform | x86-64, ARM[5] |
| Available in | English |
| Type | Cloud-native Networking, Security, Observability |
| License | Apache License 2.0, Dual GPL-2.0-only or BSD-2-clause for eBPF[6] |
| Website | cilium.io |
Cilium is a cloud native technology for networking, observability, and security.[1] It is based on the kernel technology eBPF, originally for better networking performance, and now leverages many additional features for different use cases. The core networking component has evolved from only providing a flat Layer 3 network for containers to including advanced networking features, like BGP and Service mesh, within a Kubernetes cluster, across multiple clusters, and connecting with the world outside Kubernetes.[1] Hubble was created as the network observability component and Tetragon was later added for security observability and runtime enforcement.[1] Cilium runs on Linux and is one of the first eBPF applications being ported to Microsoft Windows through the eBPF on Windows project.[7]
History
[edit]Evolution from Networking CNI (Container Network Interface)
Cilium began as a networking CNI[8] for container workloads. It was originally IPv6 only and supported multiple container orchestrators, like Kubernetes. The original vision for Cilium was to build an intent and identity-based high-performance container networking platform.[9] As the cloud native ecosystem expanded, Cilium added new projects and features to address new problems in the space.
The table below summarises some of the most significant milestones of this evolution:
- December 2015 - Initial commit to the Cilium project[10]
- May 2016 - Network policy was added, expanding the scope beyond just networking[11]
- August 2016 - Cilium was initially announced during LinuxCon as a project providing fast IPv6 container networking with eBPF and XDP.[9] Today, Cilium has been adopted by major cloud provider's Kubernetes offerings and is one of the most widely used CNIs.
- August 2017 - ebpf-go was created as a library to read, modify, and load eBPF programs and attach them to various hooks.[12]
- April 2018 - Cilium 1.0 is the first stable release[13]
- November 2019 - Hubble was launched to provide eBPF-based observability to network flows[14]
- August 2020 - Chosen by Google as the basis for their Kubernetes Dataplane v2[15]
- September 2021 - AWS picks Cilium for Networking & Security on EKS Anywhere[16]
- October 2021 - Pwru was launched for tracing network packets in the Linux kernel with advanced filtering capabilities[17][18]
- October 2021 - Accepted into CNCF as an incubation level project[19]
- December 2021 - Cilium Service Mesh launched to help manage traffic between services[20]
- May 2022 - Tetragon open sourced to cover security observability and runtime enforcement[21][22]
- October 2022 - Chosen as CNI for Azure[23][24]
- April 2023 - Cilium Mesh launched to connect workloads and machines across cloud, on-prem, and edge[25][26][27]
- April 2023 - First CiliumCon hosted as a part of KubeCon[28]
- October 2023 - Cilium becomes a CNCF Graduated project [29]
CNCF
[edit]Cilium was accepted into the Cloud Native Computing Foundation on October 13, 2021 as an incubation-level project. It applied to become a graduated project on October 27, 2022.[19] It became a Graduated project one year later. Cilium is one of the fastest-moving projects in the CNCF ecosystem.[30]
Adoption
[edit]Cilium has been adopted by many large-scale production users, including over 100 that have stated it publicly,[31] for example:
- Datadog uses Cilium as their CNI and kube-proxy replacement[32][33]
- Ascend uses Cilium as their one CNI across multiple cloud providers[34]
- Bell Canada uses Cilium and eBPF for telco networking[35][36]
- Cosmonic uses Cilium for their Nomad-based PaaS[37][38][39]
- IKEA uses Cilium for their self-hosted bare-metal private cloud[40]
- S&P Global uses Cilium as its CNI[41]
- Sky uses Cilium as their CNI and for network security[42]
- The New York Times uses Cilium on EKS for multi-region multi-tenant shared clusters[43]
- Trip.com uses Cilium both on premise and in AWS[44]
- OpenAI uses Cilium as their CNI[45]
- TikTok uses Cilium as their CNI in their IPv6-only datacenters[46]
Cilium is the CNI for many cloud providers including Alibaba,[47] APPUiO,[48] Azure,[49] AWS,[16] DigitalOcean,[50] Exoscale,[51] Google Cloud,[15] Hetzner,[52] and Tencent Cloud.[53]
Projects overview
[edit]Cilium
[edit]Cilium began as a container networking project. With the growth of Kubernetes and container orchestration, Cilium became a CNI,[8] providing basic things like configuring container network interfaces and Pod to Pod connectivity. From the beginning, Cilium based its networking on eBPF rather than iptables or IPVS, betting that eBPF would become the future of cloud native networking.[54]
Cilium’s eBPF based dataplane provides a simple flat Layer 3 network with the ability to span multiple clusters in either a native routing or overlay mode with Cilium Cluster Mesh. It is Layer 7-protocol aware and can enforce network policies on Layer 3 to Layer 7 and with FQDN using an identity-based security model that is decoupled from network addressing.
Cilium implements distributed load balancing for traffic between Pods and to external services, and is able to fully replace kube-proxy,[55] using XDP, socket-based load-balancing and efficient hash tables in eBPF. It also supports advanced functionality like integrated ingress and egress gateways,[56] bandwidth management, a stand-alone load balancer, and service mesh.[57]
Cilium is the first CNI to support advanced kernel features such as BBR TCP congestion control[58] and BIG TCP[59] for Kubernetes Pods.[60]
Hubble
[edit]Hubble is the observability, service map, and UI of Cilium which is shipped with the CNI.[61][62] It can be used to observe individual network packet flows, view network policy decisions to allow or block traffic, and build up service maps showing how Kubernetes services are communicating.[63] Hubble can export this data to Prometheus, OpenTelemetry, Grafana, and Fluentd for further analysis of Layer 3/4 and Layer 7 metrics.[64]
Tetragon
[edit]Tetragon is the security observability and runtime enforcement project of Cilium.[65] Tetragon is a flexible Kubernetes-aware security observability and runtime enforcement tool that applies policy and filtering directly with eBPF. It allows users to monitor and observe the complete lifecycle of every process execution on their machine, translate policies for file monitoring, network observability, container security, and more into eBPF programs, and do synchronous monitoring, filtering, and enforcement completely in the kernel.
Go eBPF Library
[edit]ebpf-go is a pure-Go library to interact with the eBPF subsystem in the Linux kernel.[66] It has minimal external dependencies, emphasises reliability and compatibility, and is widely deployed in production.
Pwru
[edit]pwru ("Packet, where are you?") is an eBPF-based tool for tracing network packets in the Linux kernel with advanced filtering capabilities. It allows fine-grained introspection of kernel state to facilitate debugging network connectivity issues. Under the hood, pwru attaches eBPF debugging programs to all Linux kernel functions which are responsible for processing network packets.
This gives a user finer-grained view into a packet processing in the kernel than with tcpdump, Wireshark, or more traditional tools. Also, it can show packet metadata such as network namespace, processing timestamp, internal kernel packet representation fields, and more.
Use cases
[edit]Networking
[edit]Cilium began as a networking project and has many features that allow it to provide a consistent connectivity experience from Kubernetes workloads to virtual machines and physical servers running in the cloud, on-premises, or at the edge. Some of these include:
- Container Network Interface (CNI)[67] - Provides networking for Kubernetes clusters
- Layer 4 Load Balancer[68] - Based on Maglev[69][70] and XDP[71] for handling north/south traffic
- Cluster Mesh[72] - Combines multiple Kubernetes clusters into one network
- Bandwidth and Latency Optimization[73] - Fair Queueing, TCP Optimization, and Rate Limiting
- kube-proxy replacement[74] - Replaces iptables with eBPF hash tables
- BGP[75] - Integrates into existing networks and provides load balancing in bare metal clusters
- Egress Gateway[76] - Provides a static IP for integration into external workloads
- Service Mesh[77][78] - Includes ingress, TLS termination, canary rollouts, rate limiting, and circuit breaking
- Gateway API[79] - Fully conformant implementation for managing ingress into Kubernetes clusters
- SRv6[80] - Defines packet processing in the network as a program
- BBR support for Pods[81] - Allows for better throughput and latency for Internet traffic
- NAT 46/64 Gateway[82] - Allows IPv4 services to talk with IPv6 ones and vice versa
- BIG TCP for IPv4/IPv6[83] - Enables better performance by reducing the number of packets traversing the stack
- Cilium Mesh[84][85] - Connects workloads running outside Kubernetes to ones running inside it
Observability
[edit]Being in the kernel, eBPF has complete visibility of everything that is happening on a machine. Cilium leverages this with the following features:
- Service Map[86] - Provides a UI for network flows and policy
- Network Flow Logs[87] - Provides Layer 3/4 and DNS visibility connected to identity
- Network Protocol Visibility[88] - Including HTTP, gRPC, Kafka, UDP, and SCTP
- Metrics & Tracing Export[89] - Sends data to Prometheus, OpenTelemetry, or other storage system
Security
[edit]eBPF can stop events in the kernel for security. Cilium projects leverage this through the following features:
Release timeline
[edit]Support windows
[edit]The chart below visualises the period for which each Cilium community release is maintained:

Community
[edit]Cilium's official website lists online forums, messaging platforms, and in-person meetups for the Cilium user and developer community.
Conferences
[edit]Conferences dedicated to Cilium development in the past have included:
- CiliumCon EU 2023,[28] held in conjunction with KubeCon + CloudNativeCon EU 2023[94]
- CiliumCon NA 2023,[95] held in conjunction with KubeCon + CloudNativeCon NA 2023[96]
- CiliumCon EU 2024,[97] held in conjunction with KubeCon + CloudNativeCon EU 2024[98]
- CiliumCon NA 2024 [99] held in conjunction with KubeCon + CloudNativeCon NA 2024[100]
Annual report
[edit]The Cilium community releases an annual report to cover how the community developed over the course of the year:
See also
[edit]References
[edit]- ^ a b c d e "The Cilium Story - Why We Created Cilium - Thomas Graf, Isovalent, CiliumCon EU 2023". YouTube. 10 June 2023. Retrieved 7 July 2023.
- ^ "Announcing the Cilium annual report". CNCF. 26 January 2023. Retrieved 7 July 2023.
- ^ "Cilium Stable Releases". GitHub. 29 July 2025. Retrieved 29 July 2025.
- ^ "Getting Linux based eBPF programs to run with eBPF for Windows". cloudblogs.microsoft.com. 7 July 2023. Retrieved 7 July 2023.
- ^ "Supported Architectures for Cilium". GitHub. 7 July 2023. Retrieved 7 July 2023.
- ^ "Cilium License". GitHub. 7 July 2023. Retrieved 7 July 2023.
- ^ "ebpf for windows on GitHub". GitHub. Retrieved 10 July 2023.
- ^ a b "CNI". cni.dev. Retrieved 10 July 2023.
- ^ a b "Cilium Fast IPV6 Container Networking with BPF and XDP". Slideshare. 28 May 2016. Retrieved 24 August 2016.
- ^ "Cilium Initial Commit". GitHub. 16 December 2015. Retrieved 10 July 2023.
- ^ "Network Policy added to Cilium". GitHub. 28 May 2016. Retrieved 10 July 2023.
- ^ "ebpf-go Initial Commit". GitHub. 29 August 2017. Retrieved 24 August 2016.
- ^ "Cilium 1.0 Advances Container Networking With Improved Security". eWeek.com. 24 April 2018. Retrieved 13 July 2023.
- ^ "Announcing Hubble - Network, Service & Security Observability for Kubernetes". Cilium.io. 19 November 2019. Retrieved 24 August 2016.
- ^ a b "New GKE Dataplane V2 increases security and visibility for containers". Google Cloud Platform. 20 August 2020. Retrieved 10 July 2023.
- ^ a b "AWS Picks Cilium As Networking And Security Layer". tfir.io. 13 September 2021. Retrieved 10 July 2023.
- ^ "pwru Initial Commit". GitHub. 12 October 2021. Retrieved 10 July 2023.
- ^ "Going from Packet Where Aren't You to pwru". Cilium.io. 8 February 2023. Retrieved 10 July 2023.
- ^ a b "Cilium joins CNCF as an incubating project". CNCF. 13 October 2021. Retrieved 10 July 2023.
- ^ "Cilium 1.12 Adds Cilium Service Mesh And Other New Features For Enterprise Kubernetes". tfir.io. 21 July 2022. Retrieved 10 July 2023.
- ^ "Tetragon – eBPF-based Security Observability & Runtime Enforcement". Isovalent.com. 16 May 2022. Retrieved 10 July 2023.
- ^ "Tetragon – eBPF-based Security Observability & Runtime Enforcement". thenewstack.io. 16 July 2022. Retrieved 10 July 2023.
- ^ Bansal, Deepak (2022-12-05). "Microsoft and Isovalent partner to bring next generation eBPF dataplane for cloud-native applications in Azure". Microsoft Azure Blog. Retrieved 2024-02-06.
- ^ Ke, Deepak Bansal, Qi (2023-06-22). "Azure CNI with Cilium: Most scalable and performant container networking in the Cloud". Microsoft Azure Blog. Retrieved 2024-02-06.
{{cite web}}: CS1 maint: multiple names: authors list (link) - ^ "Cilium Mesh – One Mesh to Connect Them All". Isovalent.com. 19 May 2022. Retrieved 10 July 2023.
- ^ "Isovalent's Cilium Mesh bridges gap between Kubernetes and legacy workloads". siliconangle.com. 5 May 2023. Retrieved 10 July 2023.
- ^ "Isovalent introduces Isovalent Cilium Mesh to Securely Connect Networks Across On-Prem, Edge, and Cloud". finance.yahoo.com. 17 April 2023. Retrieved 10 July 2023.
- ^ a b "CiliumCon Europe 2023". Linux Foundation. Retrieved 10 July 2023.
- ^ https://www.cncf.io/announcements/2023/10/11/cloud-native-computing-foundation-announces-cilium-graduation/
- ^ "A look at the 2022 velocity of CNCF, Linux Foundation, and top 30 open source projects". Cloud Native Computing Foundation. 11 January 2023. Retrieved 10 July 2023.
- ^ "Who is using Cilium?". GitHub. Retrieved 10 July 2023.
- ^ "Datadog". Cloud Native Computing Foundation. 2022-10-11. Retrieved 2023-07-12.
- ^ "Tales from an eBPF Program's Murder Mystery - Hemanth Malla & Guillaume Fournier, Datadog". YouTube. 2022-10-11. Retrieved 2023-07-12.
- ^ "Case Study: Ascend". Cloud Native Computing Foundation. Retrieved 10 July 2023.
- ^ "Why eBPF is changing the telco networking space – Daniel Bernier, Bell Canada". YouTube. 21 August 2021. Retrieved 10 July 2023.
- ^ "Leveraging Cilium and SRv6 for Telco Networking - Daniel Bernier, Bell Canada". YouTube. 19 May 2022. Retrieved 10 July 2023.
- ^ "Cosmonic User Story: Running Cilium on Nomad for Wasm Workloads". Cilium.io. 18 Jan 2023. Retrieved 10 July 2023.
- ^ "Cosmonic Open Source Project Integrates Nomad and Cilium". CloudNativeNow.com. 26 May 2023. Retrieved 10 July 2023.
- ^ "The Cosmonic Open Source Project Combines Cilium And Nomad". Opensourceforu.com. 30 May 2023. Retrieved 10 July 2023.
- ^ "IKEA Private Cloud, eBPF Based Networking, Load Balancing, and Observability with Cilium". YouTube. 19 May 2022. Retrieved 13 July 2023.
- ^ "eBPF, a road to invisible network: S&P Global's Network Transformation Journey - Guru Ramamoorthy". YouTube. 4 October 2022. Retrieved 10 July 2023.
- ^ "eBPF & Cilium at Sky – Sebastian Duff, Anthony Comtois, Jospeh Samuel [sic], Sky". YouTube. 20 August 2021. Retrieved 10 July 2023.
- ^ "Designing and Securing a Multi-Tenant Runtime Environment at the New York Times - Ahmed Bebars". YouTube. 20 April 2023. Retrieved 10 July 2023.
- ^ "User Story - How Trip.com uses Cilium". Cilium.io. 5 February 2020. Retrieved 10 July 2023.
- ^ "AKS Me Anything: Paul Miller: Episode 5 (Azure Kubernetes Service)". 6 June 2025. Retrieved 13 June 2025.
- ^ "TikTok's IPv6 Journey To Cilium: Pitfalls and Lessons Learned". 11 August 2025. Retrieved 11 August 2025.
- ^ "Cilium High Performance Cloud Native Network". Alibaba Cloud. Retrieved 10 July 2023.
- ^ "Partnership with Isovalent". appuio.ch. 16 December 2021. Retrieved 10 July 2023.
- ^ "General availability: Azure CNI powered by Cilium". Microsoft Azure. 30 May 2023. Retrieved 10 July 2023.
- ^ "From Managed Kubernetes to App Platform: 1.5 Years of Cilium Usage at DigitalOcean" (PDF). ebpf.io. 28 October 2020. Retrieved 10 July 2023.
- ^ "Cilium CNI & SKS". changelog.exoscale.com. 3 June 2022. Retrieved 10 July 2023.
- ^ "Performance Testing Cilium Ingress at Hetzner Cloud". cilium.io. 5 January 2023. Retrieved 10 July 2023.
- ^ "Tencent Cloud TKE-based on Cilium unified hybrid cloud container network". segmentfault.com. 1 July 2021. Retrieved 10 July 2023.
- ^ "Why is the kernel community replacing iptables with BPF?". linux.com. 23 April 2018. Retrieved 10 July 2023.
- ^ "Kubernetes Without kube-proxy". docs.cilium.io. Retrieved 10 July 2023.
- ^ "Egress Gateway". docs.cilium.io. Retrieved 10 July 2023.
- ^ "Cilium 1.12 GA: Cilium Service Mesh and other major new features for enterprise Kubernetes". Cloud Native Computing Foundation. 13 July 2022. Retrieved 10 July 2023.
- ^ Cardwell, Neal; Cheng, Yuchung; Gunn, C. Stephen; Yeganeh, Soheil Hassas; Jacobson, Van (2016). "BBR: Congestion-Based Congestion Control". ACM Queue. 14, September–October: 20–53.
- ^ "tcp: BIG TCP implementation [LWN.net]". lwn.net. Retrieved 2023-07-12.
- ^ 100Gbit/S Clusters With Cilium: Building Tomorrows Networking- Daniel Borkmann & Nikolay Aleksandrov, retrieved 2023-07-12
- ^ "Hubble on Github". GitHub. Retrieved 10 July 2023.
- ^ "Hubble Series (Part 1): Re-introducing Hubble". Isovalent.com. 5 June 2023. Retrieved 10 July 2023.
- ^ "Service Map & Hubble UI". docs.cilium.io. Retrieved 10 July 2023.
- ^ "Monitoring & Metrics". docs.cilium.io. Retrieved 10 July 2023.
- ^ "Tetragon on Github". GitHub. Retrieved 10 July 2023.
- ^ "ebpf-go on Github". GitHub. Retrieved 10 July 2023.
- ^ "Securing Your Kubernetes Cluster: Cilium and Network Policies". learncloudnative.com. 14 June 2023. Retrieved 10 July 2023.
- ^ "Layer 4 Load Balancer". cilium.io. Retrieved 10 July 2023.
- ^ "Maglev: A Fast and Reliable Software Network Load Balancer". research.google.com. Retrieved 10 July 2023.
- ^ "Cilium 1.9: Maglev, Deny Policies, VM Support, OpenShift, Hubble mTLS, Bandwidth Manager, eBPF Node-Local Redirect, Datapath Optimizations, and more". cilium.io. Retrieved 2023-07-12.
- ^ "Cilium 1.8: XDP Load Balancing, Cluster-wide Flow Visibility, Host Network Policy, Native GKE & Azure modes, Session Affinity, CRD-mode Scalability, Policy Audit mode, ..." cilium.io. Retrieved 2023-07-12.
- ^ "Cluster Mesh". cilium.io. Retrieved 10 July 2023.
- ^ "Bandwidth And Latency Optimization". cilium.io. Retrieved 10 July 2023.
- ^ "kube-proxy replacement". cilium.io. Retrieved 10 July 2023.
- ^ "BGP". cilium.io. Retrieved 10 July 2023.
- ^ "Egress Gateway". cilium.io. Retrieved 10 July 2023.
- ^ "Cilium Service Mesh". cilium.io. Retrieved 10 July 2023.
- ^ "Redefining service mesh with Cilium". medium.com. 31 July 2022. Retrieved 10 July 2023.
- ^ "Gateway API". cilium.io. Retrieved 10 July 2023.
- ^ "Cloud Native Telco Day Europe 2022: Leveraging Cilium and SRv6 for Telco Net..." cloudnativetelcodayeu22.sched.com. Retrieved 2023-07-12.
- ^ "Accelerate network performance with Cilium BBR - Isovalent". isovalent.com. Retrieved 2023-07-12.
- ^ "Cilium 1.12 - Ingress, Multi-Cluster, Service Mesh, External Workloads, ..." isovalent.com. Retrieved 2023-07-12.
- ^ "Tuning Guide — Cilium 1.15.0-dev documentation". docs.cilium.io. Retrieved 2023-07-12.
- ^ "Cilium Mesh - One Mesh to Connect Them All - Isovalent". isovalent.com. Retrieved 2023-07-12.
- ^ "Cilium Mesh: A new way to extend Kubernetes benefits across on-premises and cloud networking". techrepublic.com. 26 May 2023. Retrieved 2023-07-12.
- ^ "Service Map". cilium.io. Retrieved 10 July 2023.
- ^ "Identity-Aware L3/L4/DNS Network Flow Logs". cilium.io. Retrieved 10 July 2023.
- ^ "Advanced Network Protocol Visibility". cilium.io. Retrieved 10 July 2023.
- ^ "Metrics & Tracing Export". cilium.io. Retrieved 10 July 2023.
- ^ "Transparent Encryption". cilium.io. Retrieved 10 July 2023.
- ^ "Advanced Network Policy". cilium.io. Retrieved 10 July 2023.
- ^ "Runtime Enforcement". cilium.io. Retrieved 10 July 2023.
- ^ "Tetragon - eBPF-based Security Observability & Runtime Enforcement - Isovalent". isovalent.com. Retrieved 2023-07-12.
- ^ "KubeCon + CloudNativeCon Europe". Linux Foundation Events. Retrieved 2023-07-12.
- ^ "CiliumCon North America 2023". events.linuxfoundation.com. Retrieved 11 July 2023.
- ^ "KubeCon + CloudNativeCon North America". Linux Foundation Events. Retrieved 2023-07-12.
- ^ "Cilium + eBPF Day Europe". Linux Foundation Events. Retrieved 2024-06-07.
- ^ "KubeCon + CloudNativeCon Europe". Linux Foundation Events. Retrieved 2024-06-07.
- ^ "Cilium + eBPF Day". LF Events. Retrieved 2024-10-30.
- ^ "KubeCon + CloudNativeCon North America". LF Events. Retrieved 2024-10-30.
- ^ "Announcing the Cilium annual report". CNCF. 2023-01-26. Retrieved 2024-02-06.
- ^ "Cilium's 2023 annual report". CNCF. 2023-12-21. Retrieved 2024-02-06.
External links
[edit]Cilium (computing)
View on GrokipediaOverview
Introduction
Cilium is an open-source, cloud-native solution that provides networking, observability, and security for connectivity between workloads in environments such as Kubernetes clusters.[1] It leverages extended Berkeley Packet Filter (eBPF) technology to enable high-performance, programmable data paths directly in the Linux kernel, addressing the scalability and security challenges of modern containerized applications.[1] Unlike traditional networking approaches that rely on kernel modules or user-space proxies, Cilium uses eBPF to run sandboxed programs at kernel hooks without modifying kernel code or loading modules, allowing for efficient policy enforcement and visibility at the network layer.[1] Originally created by the founders of Isovalent in late 2015 to overcome limitations in conventional Linux networking for microservices and distributed systems, Cilium emerged as a response to the growing demands of cloud-native infrastructures where traditional tools struggled with performance and fine-grained control.[5] The project began in December 2015, with Isovalent founded in 2017 by its key creators to advance eBPF-based innovations.[7] It quickly gained traction for its ability to provide layer 3/4 networking with advanced features like identity-aware security policies and deep observability.[2] Cilium serves primarily as a Container Network Interface (CNI) plugin for Kubernetes, enabling seamless integration and management of pod networking.[1] It joined the Cloud Native Computing Foundation (CNCF) as an incubating project in October 2021 and achieved graduated status in October 2023, marking its maturity and widespread adoption in production environments.[2] This progression underscores Cilium's role as a foundational technology for secure and observable cloud-native networking.[8] Cilium has seen widespread adoption by major cloud providers and enterprises. Google Kubernetes Engine (GKE) uses Cilium as the basis for its Dataplane V2, Azure Kubernetes Service (AKS) is powered by Cilium via Azure CNI, and Amazon Elastic Kubernetes Service (EKS) provides official support for Cilium deployments. It is also embraced by numerous enterprises, establishing it as the de facto standard for Kubernetes networking in many contexts per recent reports such as the State of Kubernetes Networking 2025.Key Features
Cilium provides a range of key features centered on networking, security, and observability, all powered by eBPF for high-performance operations in cloud-native environments like Kubernetes.[1][9] Networking Features: Cilium offers advanced load balancing capabilities, including socket-level load balancing (socketLB) that operates directly in the kernel to distribute traffic efficiently without user-space overhead.[10] It also supports service mesh functionalities through sidecar-less implementations. Key among these is the Proxy Load Balancing feature for Layer 7 (L7) traffic on Kubernetes Services, enabled via annotations such asservice.cilium.io/lb-l7: "enabled", which redirects traffic to a shared per-node Envoy proxy for L7-aware load balancing, including support for protocols like gRPC. This provides a lightweight, partial replacement option for gRPC load balancing needs but does not include the full advanced traffic management capabilities of Istio, such as retries, circuit breaking, timeouts, or fault injection. These features enable secure service-to-service communication, facilitate multi-cluster connectivity for seamless networking across distributed Kubernetes environments, and provide PROXY protocol support for its Ingress Controller and Gateway API listeners to preserve original client IP addresses when traffic passes through proxies or load balancers.[1][11][12][13][14]
Security Features: For security, Cilium enforces network policies using Kubernetes Custom Resource Definitions (CRDs), allowing fine-grained control based on pod identities rather than IP addresses.[15] It provides identity-based policy enforcement to ensure secure workload isolation and integrates encryption options, such as WireGuard, for transparent data protection in transit.[15][12]
Observability Features: Cilium's observability is enhanced by Hubble, a user interface for visualizing network flows and debugging connectivity issues in real-time.[9] It also exports detailed metrics to tools like Prometheus, enabling comprehensive monitoring of network performance and security events.[1]
Performance Metrics: Due to its eBPF foundation, Cilium achieves significant performance gains over traditional networking solutions in large-scale deployments.
History
Development Origins
Cilium was founded in 2015 by Thomas Graf and a team of engineers, including Daniel Borkmann, with the initial goal of addressing scalability challenges in container networking for cloud-native environments.[16][17] The project emerged from Graf's extensive background in kernel development, spanning over a decade at Red Hat and time at Cisco working on Open vSwitch and software-defined networking.[17] This effort predated the formal founding of Isovalent in 2017 by Graf and Dan Wendlandt, a company established specifically to support and commercialize Cilium.[16] The primary motivations for Cilium's creation stemmed from the limitations of legacy networking tools like iptables, which struggled with performance and manageability in high-scale containerized setups, particularly as Kubernetes adoption grew.[17] Developers recognized that iptables rulesets introduced significant overhead for pod-to-pod communication, prompting a shift toward more efficient alternatives.[17] This coincided with the maturation of eBPF in the Linux kernel following version 4.4, which provided a revolutionary framework for running sandboxed programs in kernel space to enable programmable, high-performance data paths without the drawbacks of traditional tools.[18] Early milestones included the project's public launch with its first lines of code committed openly in December 2015, eschewing a traditional closed development phase to gather immediate community feedback.[17] An initial prototype was demonstrated at DockerCon in 2017, showcasing Cilium's eBPF-based approach.[17][19][20] Key affiliations have shaped Cilium's trajectory, including its development under Isovalent, which was acquired by Cisco, with the acquisition announced in December 2023 and completed in April 2024, to bolster multicloud networking and security capabilities.[21]Major Releases and Milestones
Cilium follows a semantic versioning scheme, ensuring backward compatibility for production environments through long-term support (LTS) releases and regular updates that introduce new features while maintaining stability.[22] The project reached its first stable milestone with the release of version 1.0 on April 24, 2018, which provided basic Container Network Interface (CNI) support for Kubernetes, including eBPF-based networking and initial policy enforcement capabilities.[22] In August 2019, Cilium 1.6 was released, introducing Kubernetes CRD-backed security identities for smaller clusters and enabling kvstore-free operations, enhancing scalability and simplifying deployments.[23] Shortly after, on November 19, 2019, Hubble was launched as an integrated observability tool, providing eBPF-based visibility into network flows for Kubernetes workloads.[24] A significant version update came with Cilium 1.14 on July 25, 2023, which integrated Tetragon for runtime security and observability, allowing eBPF-based tracing and enforcement at the process level.[25] Key milestones include Cilium's acceptance into the Cloud Native Computing Foundation (CNCF) as an incubating project on October 13, 2021, followed by its graduation to stable status on October 11, 2023, reflecting widespread community adoption and maturity.[2][8] Cilium has seen integrations with major cloud providers, such as official support in Amazon EKS for enhanced networking and service mesh capabilities since 2024, and native compatibility with Google Kubernetes Engine (GKE) for IP address management and forwarding.[26][27] Notable adoption events include its use by companies like Datadog for scaling Kubernetes clusters with network policies, processing over 10 trillion data points per day across more than 18,000 customers.[28] The project has also addressed security vulnerabilities through timely patches, such as those for CVE-2022-29178 and CVE-2022-29179, which fixed issues in service load balancing and identity allocation to prevent denial-of-service attacks.[29][30]Architecture
Core Components
Cilium's core components form the foundational elements of its architecture, enabling efficient networking, security, and observability in cloud-native environments. These components work together to leverage eBPF for high-performance data paths while managing cluster-wide operations and state.[31] The Cilium Agent is a daemon that runs on each node in the cluster, responsible for loading and managing eBPF programs, enforcing network policies, and handling local networking tasks such as IP address management (IPAM) for pods. It interacts directly with the Linux kernel to attach eBPF programs to network interfaces and monitors endpoint changes to update security identities and policies dynamically. Additionally, the agent provides observability features by collecting metrics and traces from the eBPF data plane.[31][10] The Cilium Operator serves as a cluster-wide controller, performing tasks that require global coordination, such as IPAM across the entire cluster, garbage collection of unused resources, and synchronization of identities and policies. It operates outside of individual nodes, using Kubernetes APIs to watch for changes and ensure consistency, thereby offloading non-local responsibilities from the agents to improve scalability. The operator also manages the lifecycle of cluster-scoped resources like load balancers and service configurations.[31][10] Cilium integrates with Envoy, a high-performance proxy, to enable Layer 7 (L7) proxying and traffic management in service mesh mode, allowing for advanced features like HTTP and gRPC policy enforcement without sidecar proxies. This integration embeds Envoy instances within Cilium agents on each node, redirecting traffic transparently to apply L7 policies, load balancing, and observability while maintaining eBPF's efficiency for L3/L4 handling.[32][33] BPF maps are in-kernel data structures used by Cilium to store and manage state, configuration, and telemetry efficiently, with types such as hash maps for quick lookups of endpoint identities based on IP addresses or labels. These maps, including endpoint maps that associate IP addresses with security identities and policy maps that track allowed connections, enable O(1) access times regardless of cluster scale and support features like identity-based security enforcement. Cilium creates these maps with capacity limits to ensure predictable performance and scalability in the data path.[34][35]eBPF Integration
Cilium leverages eBPF to implement high-performance networking at the kernel level, attaching programs to specific hooks for efficient packet processing. For ingress traffic, Cilium uses the XDP (eXpress Data Path) hook, which operates at the earliest stage in the network driver upon packet reception, enabling rapid filtering and dropping of invalid packets before further processing.[36] For container egress traffic, Cilium attaches eBPF programs to the Traffic Control (TC) ingress hook on the host side of virtual Ethernet (veth) pairs to enforce policies and redirect packets after initial stack processing but before Layer 3 forwarding; generally, for egress traffic, it uses the TC egress hook on networking interfaces.[36] Additionally, Cilium employs sockops hooks at the socket level, attached to the root cgroup to monitor TCP state transitions, particularly for established connections, allowing attachment of send/receive programs that inspect and redirect messages without kernel-user space crossings.[36] The programmability of eBPF in Cilium allows for the generation of custom programs derived from high-level user policies, which are compiled into eBPF bytecode using LLVM's BPF backend for just-in-time loading into the kernel.[37] These programs maintain a stable application binary interface (ABI) with "never-break-user-space" guarantees, enabling atomic updates without disrupting ongoing traffic, and can be tailored for tasks like policy enforcement or load balancing.[38] The Cilium agent, responsible for managing these programs, compiles and loads them dynamically based on cluster state changes.[36] Key advantages of this integration include zero-copy data paths, where packets are processed directly on DMA buffers in the kernel without unnecessary copying to user space, and reduced context switches by executing logic entirely within kernel space.[37] Cilium requires a Linux kernel version of at least 5.10 (or 4.18 on RHEL 8.10 equivalents) for core eBPF features, with advanced capabilities like multicast support needing 5.10 or higher on AMD64 architectures.[39] Cilium utilizes specific eBPF helper functions to enhance its operations, such as bpf_map_lookup_elem for efficient lookups in kernel maps to retrieve policy identities or service forwarding rules based on packet details.[36] Similarly, bpf_redirect is employed for packet steering, allowing seamless redirection of traffic to local endpoints, other interfaces, or accelerated paths in socket hooks.[38]Deployment and Configuration
Installation Methods
Cilium installation requires specific system prerequisites to ensure compatibility with its eBPF-based functionality. Nodes must run a Linux kernel version 5.10 or later (or equivalent, such as 4.18 on RHEL 8.10), with eBPF support enabled via kernel configuration options, and kernel headers installed if compiling eBPF programs on the host.[39] Additionally, Cilium agents typically require privileged pod execution and read-write access to the /sys/fs/bpf filesystem for loading eBPF maps and programs.[39] For Kubernetes environments, one primary installation method is using Helm, which allows for customizable deployment of Cilium as a Container Network Interface (CNI). To install via Helm, first add the Cilium Helm repository withhelm repo add cilium https://helm.cilium.io/, update repositories using helm repo update, and then run helm install cilium cilium/cilium --version 1.18.5 --namespace kube-system (replacing the version as needed), optionally including flags like --set kubeProxyReplacement=true to enable kube-proxy replacement for enhanced performance.[40] This method supports advanced options during installation, such as specifying IPAM modes or enabling specific eBPF features.[40]
In standalone mode for non-Kubernetes setups, such as containerized environments supporting CNI plugins, Cilium can be deployed by using the Cilium CNI plugin and running the cilium-agent binary directly with appropriate configuration flags, without relying on Kubernetes orchestration. Users can download the cilium-agent from official releases and execute it as a standalone network service leveraging eBPF for connectivity, though support for such setups is limited and not actively maintained.[41] This approach is suitable for bare-metal container hosts that implement CNI specifications, with caveats for deprecated integrations like Docker.[41]
Cilium supports installation across various Kubernetes distributions and local development tools, with tailored guides for environments like kind, minikube, and cloud providers such as Amazon EKS. For local clusters, the quick installation using cilium install automatically detects configurations for kind or minikube, ensuring seamless setup on laptops for development.[42] On Amazon EKS, installation in ENI mode involves disabling the default AWS VPC CNI add-on, then deploying Cilium via Helm or CLI with EKS-specific parameters like --set eni.enabled=true to utilize Elastic Network Interfaces for native AWS integration.[43] These multi-environment guides emphasize verifying cluster compatibility and applying provider-specific prerequisites before proceeding.[42]
Configuration Options
Cilium offers a range of configuration options to customize its behavior post-installation, allowing users to tailor networking, security, and observability features to specific cluster requirements. These options are primarily managed through thecilium-config ConfigMap, Helm values during upgrades, or command-line flags for the Cilium agent, enabling fine-grained control over performance and functionality.[44][13]
Key flags for load balancing include those related to socket load balancing (Socket LB) and BPF-based external access. Socket LB, which enables host-level load balancing for Kubernetes services using eBPF cgroup hooks, is activated by setting kubeProxyReplacement=true in the Helm installation or upgrade command, replacing traditional kube-proxy for efficient traffic translation at the socket layer during system calls like connect() or sendmsg().[45] For external service access, the --bpf-lb-external-clusterip flag (default: false) allows external connectivity to ClusterIP services by enabling BPF load balancing for them, which can be set via the agent's command-line arguments or ConfigMap equivalents.[46]
Cilium's Ingress Controller supports the PROXY protocol, which preserves client IP information when traffic passes through proxies or load balancers. This can be enabled using the Helm value ingressController.enableProxyProtocol (default: false) or the cilium-operator flag --enable-ingress-proxy-protocol. When enabled, proxy protocol is activated for all Ingress listeners, and only PROXY protocol traffic is accepted (non-PROXY traffic is rejected). Similar support exists for Gateway API listeners via the cilium-operator flag --enable-gateway-api-proxy-protocol.[13][14]
Policy enforcement modes in Cilium determine how network traffic is handled for endpoints, configurable via the policyEnforcementMode Helm value or the enable-policy flag. The default mode allows unrestricted access for endpoints until they are selected by a policy, at which point it enforces default-deny for ingress or egress based on the policy sections, permitting only explicitly allowed traffic; this can be adjusted per policy using the enableDefaultDeny field set to false to avoid restrictions.[47] In contrast, the "always" mode (often considered stricter) enforces policies on all endpoints regardless of selection, requiring explicit allowances for all traffic, while the "never" mode disables enforcement entirely.[47] For example, a CiliumClusterwideNetworkPolicy CRD might specify:
apiVersion: cilium.io/v2
kind: CiliumClusterwideNetworkPolicy
metadata:
name: intercept-all-dns
spec:
endpointSelector:
matchExpressions:
- key: "io.kubernetes.pod.namespace"
operator: "NotIn"
values: ["kube-system"]
- key: "k8s-app"
operator: "NotIn"
values: ["kube-dns"]
enableDefaultDeny:
[egress](/page/Egress_filtering): false
ingress: false
egress:
- toEndpoints:
matchLabels:
io.kubernetes.pod.namespace: "kube-system"
k8s-app: "kube-dns"
toPorts:
- ports:
- port: ["53"](/page/List_of_DNS_record_types)
protocol: [TCP](/page/Transmission_Control_Protocol)
- port: "53"
protocol: [UDP](/page/User_Datagram_Protocol)
rules:
dns:
matchPattern: "*"
This policy intercepts DNS traffic without enforcing default-deny, allowing other traffic to proceed unaffected.[47]
Observability configurations, particularly for Hubble, are enabled to provide network flow visibility. Hubble is activated using the Cilium CLI command cilium hubble enable, which patches the ConfigMap, restarts pods, and deploys the Relay component, requiring TCP port 4244 open on nodes; alternatively, via Helm with --set hubble.enabled=true and --set hubble.relay.enabled=true.[48] For exporting data to Grafana, Hubble metrics can be integrated by configuring Prometheus as a data source to scrape Hubble's exposed metrics endpoints, though specific export flags are managed through standard Kubernetes monitoring setups rather than direct Cilium flags.[48]
Resource limits for Cilium agents, including CPU and memory requests, are specified via Helm values under agent.resources to ensure optimal allocation in resource-constrained environments. By default, this is an empty object {}, requiring explicit settings such as requests: {cpu: "100m", memory: "512Mi"} and limits: {cpu: "1000m", memory: "2Gi"} in the values file during Helm upgrades to prevent overconsumption while maintaining performance.[13]
Features like IPv6 can be disabled for single-stack IPv4 clusters by setting enable-ipv6: "false" in the cilium-config ConfigMap, which requires restarting Cilium pods for the change to propagate, typically taking up to 2 minutes across nodes.[44]
Use Cases and Applications
Networking in Kubernetes
Cilium serves as a Container Network Interface (CNI) plugin for Kubernetes, enabling efficient pod-to-pod communication through its integration with eBPF for high-performance networking.[44] As part of this integration, Cilium handles IP Address Management (IPAM) using BPF maps to allocate and track IP addresses for pods, allowing for scalable and dynamic address assignment without relying on external controllers.[49] This approach leverages kernel-level eBPF programs to manage IP allocations directly in BPF maps, providing O(1) lookup times and reducing latency compared to traditional IPAM methods.[10] For inter-node communication, Cilium supports overlay and encapsulation modes such as VXLAN and Geneve to create a virtual network across cluster nodes.[50] In these modes, pod traffic is encapsulated in UDP packets using VXLAN (default) or Geneve protocols, forming a tunnel mesh between nodes to route traffic over underlying layer 3 networks without requiring direct routing configurations.[51] This encapsulation ensures compatibility with diverse underlay networks, including those in multi-tenant cloud environments, while maintaining pod isolation.[9] Cilium enhances service load balancing in Kubernetes by replacing the default kube-proxy with an eBPF-based implementation that supports Direct Server Return (DSR).[45] In this setup, eBPF programs perform load balancing at the kernel level, rewriting connections at the socket level for east-west traffic and avoiding per-packet NAT overhead, which results in higher throughput and lower CPU usage, especially in large-scale clusters.[52] DSR mode allows backend pods to respond directly to clients without routing responses back through the load balancer node, optimizing performance for services with high traffic volumes.[10] Cilium fully supports and enforces standard Kubernetes NetworkPolicy resources (networking.k8s.io/v1) without deleting, modifying, or automatically removing them. It watches these policies via the Kubernetes API, as Kubernetes distributes them across nodes, and enforces them using eBPF programs at the kernel level.[53] Cilium extends the standard NetworkPolicy API with its own custom resource definitions, CiliumNetworkPolicy (namespaced) and CiliumClusterwideNetworkPolicy (cluster-scoped), which provide advanced features such as Layer 7 policy enforcement, identity-based selections, and granular control including HTTP-aware policies not available in the base API.[53] While standard Kubernetes NetworkPolicy focuses on Layer 3 and 4 rules using labels and namespaces, the Cilium extensions offer more capabilities, and the policy types are fully compatible for mixed usage in clusters, though caution is advised when combining multiple types to avoid confusion in policy behavior.[54][53] During migrations from another CNI provider to Cilium, the official documentation recommends temporarily deleting existing NetworkPolicies if necessary to avoid potential conflicts (with policy enforcement disabled during the migration process), but Cilium itself performs no automatic deletions or modifications.[55] These policies are enforced via eBPF at the kernel level for efficient, programmable data paths.[56] This networking foundation supports integration with security policies for comprehensive traffic control, as detailed in the relevant documentation.[53] To configure cluster-wide load balancing for Kubernetes Services of type LoadBalancer, administrators can enable Cilium's built-in eBPF load balancer (Cilium LoadBalancer IPAM) during installation, which advertises service IPs via BGP or Layer 2 protocols across the cluster.[57] For example, by setting theloadBalancer.mode to "dsr" and configuring BGP peers in the Cilium Helm chart, external traffic to LoadBalancer services is distributed efficiently without needing external tools like MetalLB, ensuring high availability and scalability.[58] This setup involves applying a CiliumLoadBalancerIPPool custom resource to define IP ranges and then creating Services that automatically leverage the eBPF-based balancing for global reachability.[59]
KubeVirt Integration
Cilium integrates with KubeVirt to provide secure, scalable, and observable networking for virtual machines (VMs) running alongside containers in Kubernetes clusters. KubeVirt VMs connect via the cluster's CNI, with Cilium treating them similarly to pods for IP allocation, service discovery, and policy enforcement.Compatibility and Configuration
Deploy Cilium before enabling KubeVirt. For compatibility with KubeVirt's virtual device networking, configure the Helm valuesocketLB.hostNamespaceOnly=true during installation to enable socket load balancer bypass in pod namespaces.
Advantages
- Unified Security and Zero Trust: Cilium Network Policies (L3/L4 and L7-aware) apply consistently to pods and VMs, enabling micro-segmentation and identity-based rules. Transparent encryption (WireGuard/IPsec) secures traffic.
- Observability: Hubble provides deep insights into VM traffic flows, including real-time visualization and filtering across VMs, pods, and external endpoints.
- Performance: eBPF datapath delivers high throughput and low latency compared to iptables-based CNIs. Supports live VM migration with network continuity.
- Advanced Features: Gateway API for external VM access, BGP/ARP service exposure, and Cluster Mesh for multi-cluster pod-VM communication.
Performance Enhancements
Ongoing work accelerates KubeVirt networking with eBPF innovations like netkit devices and AF_XDP backend for QEMU. Preliminary benchmarks (e.g., netperf TCP_RR, 1500 MTU) show:- +13% better throughput in some configurations.
- +37% throughput improvement with netkit + AF_XDP.
- 30-35% lower latency.
Known Limitations and Issues
- eBPF host-routing can interfere with KubeVirt's masquerade NAT on pod networks, requiring workarounds.
- Netkit mode may assign invalid MAC addresses to KubeVirt interfaces; use netkit-l2 or custom bindings pending fixes.
- Requires modern Linux kernel (≥4.19 recommended) for full eBPF features.
Security and Observability
Cilium provides robust security features through identity-aware policies, which enable fine-grained enforcement at Layers 3 through 7 by leveraging security identities rather than relying on ephemeral IP addresses.[60] These policies allow administrators to define rules based on pod identities, service accounts, or labels, ensuring consistent enforcement even as workloads scale or migrate within Kubernetes clusters.[61] By integrating eBPF for efficient policy application at the kernel level, Cilium supports zero-trust models without performance overhead.[62] Cilium enforces standard Kubernetes NetworkPolicy resources (networking.k8s.io/v1) using eBPF without deleting, modifying, or automatically removing them; Kubernetes distributes the policies, and Cilium applies them automatically by watching the Kubernetes API. Cilium additionally provides extended custom resources CiliumNetworkPolicy and CiliumClusterwideNetworkPolicy for more advanced Layer 3-7 policy capabilities.[53] Cilium's Layer 7 (L7) policies provide advanced protocol-specific enforcement, supporting HTTP, gRPC, Kafka, and DNS filtering. Additional capabilities include explicit deny rules for stricter access control and FQDN-based egress policies to restrict outbound traffic to approved domains. These features, combined with Tetragon for runtime security enforcement at the process level, enable comprehensive protection across network and runtime layers. A key component for runtime security is Tetragon, an eBPF-based tool that offers transparent observability and enforcement for processes in cloud-native environments.[63] Tetragon monitors system calls, file accesses, and process executions in real-time, enabling threat detection and policy enforcement directly within the Linux kernel without requiring agents or modifications to applications.[64] It supports Kubernetes-aware filtering, allowing users to trace the lifecycle of workloads and block suspicious activities, such as unauthorized executions, to mitigate risks like container escapes or lateral movement.[65] For observability, Cilium incorporates Hubble, a platform that delivers Layer 7 visibility into network traffic through detailed flow logs, service dependency graphs, and customizable alerting.[66] Hubble captures eBPF-generated events to map service interactions, identify bottlenecks, and detect anomalies, providing a unified view of communication patterns across the cluster.[67] This enables proactive monitoring, such as generating graphs that visualize dependencies and triggering alerts for policy violations or unusual traffic spikes.[68] Cilium maintains a strong security posture, as evidenced by a 2022 security audit conducted by Ada Logics on behalf of the CNCF, which found no critical or high-severity vulnerabilities and concluded that Cilium is a well-secured project. Recent CVEs identified in 2025-2026 have been patched promptly in subsequent releases to ensure ongoing security. Cilium also supports transparent encryption for node-to-node traffic using WireGuard, eliminating the need for sidecar proxies or application changes.[69] This feature encrypts pod-to-pod communications across nodes securely and efficiently, leveraging WireGuard's lightweight protocol to protect data in transit within Kubernetes clusters.[70] It ensures confidentiality without impacting performance, making it suitable for multi-tenant environments where isolating traffic is critical.[71]Troubleshooting and Maintenance
Common Startup Issues
One common startup issue with Cilium in Kubernetes clusters is pod failures manifesting as CrashLoopBackOff status in the kube-system namespace, which can be identified by running the commandkubectl get pods -n kube-system -l k8s-app=cilium.[72] This error often indicates that the Cilium agent pods are repeatedly crashing during initialization, potentially due to configuration errors or resource constraints on the nodes.[73] To diagnose such failures, administrators should review the previous container logs using kubectl -n kube-system logs <pod-name> --previous, where errors related to BPF map creation or loading frequently appear, such as failures in populating eBPF maps required for network policy enforcement.[72][74]
Kernel version incompatibilities represent another frequent barrier to successful Cilium startup, as the project requires a Linux kernel version of 5.10 or later to enable full eBPF feature support.[39] In environments with older kernels, such as those below 5.10, essential eBPF programs may fail to load, leading to initialization halts.[75] Ensuring kernel compatibility is thus a prerequisite step, often verified through system checks before deployment.[39]
Specific challenges can arise when disabling socketLB, a feature for kube-proxy replacement, as the Cilium agent requires privileged execution permissions and proper filesystem mounts to function correctly. Cilium generally requires CAP_SYS_ADMIN privileges, typically granted by running as a privileged container, to attach eBPF programs.[39] Additionally, the eBPF filesystem must be mounted at /sys/fs/bpf in read-write mode to persist eBPF resources across restarts.[39][76] For socketLB specifically, the cgroup v2 filesystem must be mounted, which Cilium handles automatically unless disabled. Without these configurations, the agent may fail to initialize properly. Administrators addressing these must verify security contexts and mount options in the Cilium DaemonSet configuration to resolve the issue.[39][45]
Diagnostic Tools and Checks
Cilium provides several command-line utilities and integration points for diagnosing and monitoring its operations in production environments, enabling administrators to inspect agent health, endpoint states, and eBPF-based data paths.[72] The Cilium CLI serves as a primary diagnostic tool, allowing users to check the overall status of the Cilium agent on a node with thecilium status command, which reports on connectivity, health, and configuration details.[77] Additionally, the cilium-dbg endpoint list command lists all endpoints managed by Cilium, displaying pod states, identities, and policy enforcement status for troubleshooting network connectivity issues.[78]
For deeper inspection of load balancing mechanisms, administrators can execute commands directly within Cilium pods using kubectl exec -n kube-system cilium-<node> -- cilium-dbg bpf lb list, which queries eBPF maps to reveal the state of load balancers and service backends.[72]
Cilium integrates with Prometheus for metrics collection and alerting, exposing detailed observability data on agent performance, error rates, and resource usage to facilitate proactive monitoring.[79] Complementing this, the Hubble tool enables real-time flow observation through commands like hubble observe, which streams network traffic details including identities, policies, and DNS resolutions for immediate debugging of live communications.[80]
Advanced diagnostics involve using bpftool to verify loaded eBPF programs, listing maps, and inspecting program attachments to ensure kernel-level functionality is intact.[81] Checks for proper kernel mounts, such as the eBPF filesystem at /sys/fs/bpf, confirm that Cilium can access necessary resources, as Cilium will automatically mount it if not present.[39]
Community and Ecosystem
Contributions and Governance
Cilium operates as a graduated project under the Cloud Native Computing Foundation (CNCF), which provides technical oversight through its Technical Oversight Committee (TOC) to ensure alignment with cloud-native standards and community-driven development.[2] The project's governance model emphasizes collaborative decision-making, with core maintainers primarily affiliated with Isovalent (now part of Cisco), including notable figures like Joe Stringer, who was recognized as a top CNCF maintainer in 2024 for his contributions to Cilium.[82] This structure supports transparent processes for project evolution, including release planning and feature prioritization, while maintaining independence from any single vendor.[83] Contributions to Cilium follow established guidelines outlined in the project's GitHub repository, requiring adherence to the CNCF Code of Conduct to foster an inclusive environment.[84] Potential contributors are encouraged to triage issues via GitHub, participate in discussions, and submit pull requests after certifying their contributions via the Developer's Certificate of Origin (DCO) by including a Signed-off-by line in commit messages to grant the project necessary rights for code integration.[85] The process includes code reviews by maintainers and automated testing to maintain high standards, with detailed instructions available in the official contributing documentation.[86] As of 2024, the Cilium community boasts over 1,000 contributing companies (1,011 as reported) and a robust base of over 4,000 individual contributors, reflecting significant growth since its CNCF incubation in 2021.[87] This includes thousands of contributors engaged in pull requests and issue resolutions.[4] Community engagement is further amplified through events like CiliumCon, a dedicated co-located conference at KubeCon that brings together users, developers, and contributors to discuss advancements in eBPF-based networking and security.[88] The diversity of contributions highlights expertise in eBPF technology and involvement from major cloud providers, enabling broad innovation in areas like Kubernetes networking and observability.[89] Participants from organizations such as Google, AWS, and Microsoft collaborate alongside independent eBPF specialists, ensuring the project's applicability across varied cloud-native ecosystems.[87] This collaborative model has driven consistent velocity, positioning Cilium as one of the most active CNCF projects behind only Kubernetes and OpenTelemetry.[90]Integrations with Other Tools
Cilium provides deep integration with Istio, enabling enhanced service mesh capabilities in Kubernetes clusters by leveraging Cilium's eBPF-based networking for improved performance in Layer 7 proxying and policy enforcement.[91] This integration allows users to deploy Istio alongside Cilium, combining Istio's traffic management features with Cilium's efficient data path processing.[92] When using Cilium's kube-proxy replacement mode (kubeProxyReplacement=true), the default socket-level load balancing applies within pod namespaces, which can bypass Istio sidecar redirection and prevent proper traffic interception by the sidecar. To maintain compatibility and allow Istio sidecars to intercept traffic, set the Helm value socketLB.hostNamespaceOnly=true (equivalent to bpf-lb-sock-hostns-only=true in the ConfigMap). This restricts socket LB to the host namespace only. This configuration is recommended in the official Cilium Istio integration documentation for environments running Istio with full kube-proxy replacement.
Cilium also offers Proxy Load Balancing for Kubernetes Services as a lightweight alternative to full Istio sidecar deployments for basic Layer 7 requirements. By annotating a Service with service.cilium.io/lb-l7: enabled, traffic is redirected to a per-node shared Envoy proxy for L7-aware load balancing, including support for protocols like gRPC. This feature (currently in beta) provides efficient L7 capabilities without the overhead of per-pod proxies. For details, refer to the Cilium Proxy Load Balancing documentation.
For GitOps deployments, Cilium supports tools like Flux, facilitating automated installation and management of Cilium operators through declarative configurations stored in version control repositories.[93]
In the monitoring stack, Cilium offers native support for Prometheus to collect and store metrics from Cilium agents and operators, which can then be visualized using Grafana dashboards for cluster-wide network and security insights.[94] Additionally, Cilium's Hubble observability layer enables export of trace and flow data to Jaeger for distributed tracing analysis.[95]
Cilium demonstrates compatibility with Falco for runtime security detection, where Falco can leverage Cilium's network policies and APIs to enforce restrictions based on detected threats in Kubernetes environments.[96]
For cloud integrations, Cilium includes official operators tailored for managed Kubernetes services on AWS, Azure, and Google Cloud Platform (GCP), enabling seamless IP address management and routing optimizations specific to each provider.[97] For instance, the AWS ENI mode in Cilium automates Elastic Network Interface handling for efficient pod networking.[98] Similar support exists for Azure and GCP through native cloud provider integrations.[99]
Comparisons and Alternatives
Vs. Traditional CNI Plugins
Cilium differs from traditional Container Network Interface (CNI) plugins like Flannel primarily through its use of eBPF technology, which avoids the overhead associated with overlay networks that Flannel relies on for pod-to-pod communication. Flannel employs a VXLAN-based overlay that encapsulates packets, introducing additional latency and reducing throughput in large-scale deployments, whereas Cilium's kernel-level eBPF programs enable direct routing without such encapsulation, leading to higher performance and better scalability for clusters with over 10,000 pods.[100][101][102] In comparison to Calico, Cilium provides superior Layer 7 (L7) policy enforcement by leveraging eBPF for programmable data paths, bypassing the limitations of iptables chains that Calico traditionally uses, which can result in increased latency as the number of rules grows. Calico's iptables-based approach often leads to performance degradation under high policy loads due to linear rule traversal, while Cilium's eBPF implementation allows for efficient, identity-aware L7 filtering with reduced CPU overhead and lower latency, making it more suitable for complex microservices environments.[103][104][105] Traditional CNI plugins, such as Flannel and Calico in their non-eBPF modes, suffer from user-space processing bottlenecks where packet handling occurs outside the kernel, leading to higher latency and resource consumption compared to eBPF's in-kernel execution. Additionally, these legacy plugins often lack native observability features, requiring separate tools for metrics and tracing, whereas Cilium integrates Hubble for real-time visibility without such dependencies.[106][107][108] Migrating from kube-proxy to Cilium's eBPF-based load balancing involves several steps to ensure a smooth transition: first, assess the existing cluster configuration and compatibility; second, install Cilium in a dual-CNI mode alongside the current setup to test functionality; third, enable the eBPF kube-proxy replacement mode via Helm values likekubeProxyReplacement=strict; and finally, remove the old kube-proxy daemonset once stability is confirmed, leveraging Cilium's compatibility with Kubernetes services for seamless load balancing.[109][52]
Vs. Other eBPF-Based Solutions
Cilium differentiates itself from other eBPF-based solutions through its comprehensive integration of networking, security, and observability features, particularly when compared to Calico's eBPF mode. While Calico's eBPF data plane primarily emphasizes efficient routing and network policy enforcement via BGP or IP-in-IP overlays, Cilium provides a full-stack approach that extends beyond routing to include advanced Layer 7 security policies and integrated observability via Hubble, enabling detailed flow-level visibility without additional tooling.[110][104][111] In contrast to Katran, an eBPF-based load balancer developed by Facebook for high-performance traffic distribution, Cilium offers a Kubernetes-native architecture tailored for containerized environments, whereas Katran focuses on hardware-accelerated load balancing optimized for bare-metal deployments and general-purpose networking without deep Kubernetes integration.[112][113] Cilium's unique strengths lie in its programmable policies, which leverage eBPF to enable fine-grained, identity-aware enforcement at Layers 3-7, surpassing the capabilities of more experimental eBPF projects, and its maturity as a CNCF Graduated project since 2023, ensuring robust governance and widespread adoption in production environments.[60][2] Benchmarks as of 2026 show Cilium and Calico eBPF achieving very close performance, with differences under 5-10% in most metrics including throughput and latency, due to maturing eBPF dataplanes in both projects.Comparison with Calico
Cilium offers native open-source Layer 7 policy enforcement, better scalability at large scales without iptables bloat from rule accumulation, and an identity-first approach that bases policies on workload identities rather than IP addresses, providing advantages over Calico in complex, high-scale environments. Calico and Cilium are leading Kubernetes CNIs, with Cilium being eBPF-native and Calico offering multi-dataplane flexibility.| Feature | Cilium | Calico |
|---|---|---|
| Core Technology | eBPF-only | iptables/nftables, eBPF, VPP, Windows HNS |
| Network Policies | L3–L7 native (HTTP, gRPC, etc.) | L3/L4 strong, L7 via integration |
| Observability | Hubble (L3-L7 flows, service map) | Flow logs, metrics; advanced in Enterprise |
| Performance | Very high, low latency | High; eBPF mode parity with Cilium |
| Kube-Proxy Replacement | Mature, default | Available in eBPF mode |
| Encryption | WireGuard, IPsec | WireGuard, IPsec |
| Windows Support | Limited | Strong |
| Best For | Modern cloud-native, observability, L7 security | Hybrid, large-scale, BGP fabrics, Windows |