---
title: "Calico Enterprise: Leverage multiple benefits from the new eBPF data plane"
source: "https://www.tigera.io/blog/calico-enterprise-leverage-multiple-benefits-from-the-new-ebpf-data-plane/"
---

[Technical Blog](https://www.tigera.io/category/technical-blog/)

# Calico Enterprise: Leverage multiple benefits from the new eBPF data plane

By [John Armstrong](https://www.tigera.io/blog/author/john-armstrong/) on Jul 06, 2021 • 3 min read

Calico was designed from the ground up with a pluggable data plane architecture. The Enterprise 3.6 release introduces an exciting new [eBPF](https://www.tigera.io/learn/guides/ebpf/) (extended Berkeley Packet Filter) data plane that provides multiple benefits to users.

## Great performance, lower latency for load-balanced traffic

When compared with the standard Linux data plane (based on iptables), the[eBPF data plane](https://www.tigera.io/features/ebpf-data-plane/):

- Scales to higher throughput, using less CPU per GBit

- Natively supports Kubernetes services (without kube-proxy) in a way that: - Reduces latency - Preserves external client source IP addresses - Supports direct server return (DSR) for reduced latency and CPU usage - Uses less CPU than kube-proxy to keep the data plane in sync

![Bar graph showing eBPF throughput exceeds standard Linux networking at MTUs 1440 and 8940](https://www.tigera.io/app/uploads/2021/06/ebPF-data-plane-1.png)

![Graph showing eBPF has lower TCP connect time compared to iptables and IPVS as the number of services increases](https://www.tigera.io/app/uploads/2021/06/ebPF-data-plane-2.png)

## The impact of NAT on source IP

The application of network address translation (NAT) by kube-proxy to incoming network connections to Kubernetes services (e.g. via a service node port) is a frequently encountered friction point with Kubernetes networking. NAT has the unfortunate side effect of removing the original client source IP address from incoming traffic. When this occurs, Kubernetes network policies can’t restrict incoming traffic from specific external clients. By the time the traffic reaches the pod it no longer has the original client IP address. For some applications, knowing the source IP address is not only desirable, it’s required. For example, performing geo-location based on source address.

## Calico and direct server return

Calico’s eBPF data plane makes several changes to this model. The most significant difference is in swapping out the Kubernetes kube-proxy with native service handling. This eliminates the need for source network address translation (SNAT). Because only destination network address translation (DNAT) is applied, the source IP address is preserved on the request. The response from the pod has a reverse DNAT applied by the eBPF program, at which point the response can be returned directly to the client, a method known as direct server return (DSR).

![Diagram of Kubernetes kube-proxy with SNAT and DNAT, showing how Calico replaces it for native service handling](https://www.tigera.io/app/uploads/2021/06/ebPF-data-plane-3.png)Calico without eBPF and DSR

 

![Diagram of eBPF data plane replacing kube-proxy for load balancing and encapsulation of external NodePort requests to pods](https://www.tigera.io/app/uploads/2021/06/ebPF-data-plane-4.jpeg)Using Calico’s eBPF data plane as a replacement for kube-proxy, the source IP of external connections is preserved. This makes it much easier to write security policy and makes access logs more meaningful.

## Support for host protection

Calico has extended its eBPF data plane to offer support for host protection. When combined with Calico’s automatic host endpoints feature, this offers a robust way to secure Kubernetes pods and hosts together using a unified policy model. By deploying Calico for host protection as well as for pod security, your host protection policy becomes just as dynamic as your workload policy, and matches the identity of the workload (carried in its metadata labels).

With this new addition, Calico now includes three data planes:

- Standard Linux

- Windows HNS

- eBPF

The standard Linux data plane will continue to be the right choice for many. But when you’re ready to adopt the latest Linux kernels, the eBPF data plane will be ready for you. And stay tuned for yet another data plane option that will soon be available for Calico.

For more details on the eBPF data plane, check out our [Calico Enterprise eBPF data plane documentation](https://docs.tigera.io/calico-enterprise/latest/operations/ebpf/use-cases-ebpf). Included is a detailed comparison of eBPF versus the standard Linux data plane, as well as an architectural overview.

 

**Want to know more? [Talk to an expert](https://www.tigera.io/contact/) to have your questions answered, or [request a demo](https://www.tigera.io/demo/) to see Calico Enterprise in action.**

 

[eBPF](https://www.tigera.io/tags/ebpf/)[Products](https://www.tigera.io/tags/products/)

## Related posts

[![Meet Mylo: An AI-native way to work with Calico](https://www.tigera.io/app/uploads/2026/09/Meet-Mylo-An-AI-native-way-to-work-with-Calico.png)](https://www.tigera.io/blog/meet-mylo-an-ai-native-way-to-work-with-calico/)

#### [Meet Mylo: An AI-native way to work with Calico](https://www.tigera.io/blog/meet-mylo-an-ai-native-way-to-work-with-calico/)

By [Phil DiCorpo](https://www.tigera.io/blog/author/phil-dicorpo/)
on Sep 3, 2026

A library of Calico tools and skills — delivered through the Calico MCP Server What if your hardest network question took ten minutes instead of ten days? Anyone who has operated Kubernetes networking at scale...

[Read more](https://www.tigera.io/blog/meet-mylo-an-ai-native-way-to-work-with-calico/)

[![The Safest Place to Run an AI Agent Is On a Cluster That Doesn’t Trust It](https://www.tigera.io/app/uploads/2026/08/The-Safest-Place-to-Run-an-AI-Agent-Is-On-a-Cluster-That-Doesnt-Trust-It.png)](https://www.tigera.io/blog/the-safest-place-to-run-an-ai-agent-is-on-a-cluster-that-doesnt-trust-it/)

#### [The Safest Place to Run an AI Agent Is On a Cluster That Doesn’t Trust It](https://www.tigera.io/blog/the-safest-place-to-run-an-ai-agent-is-on-a-cluster-that-doesnt-trust-it/)

By [Alister Baroi](https://www.tigera.io/blog/author/alister-baroi/)
on Aug 27, 2026

Every organization running AI agents has already made a hosting decision. Most made it by accident. The sales team switched on the agent built into their CRM. Engineering is piloting a coding agent in a...

[Read more](https://www.tigera.io/blog/the-safest-place-to-run-an-ai-agent-is-on-a-cluster-that-doesnt-trust-it/)

[![AI Red Team Agents Automate Attacks on your AI Agents. Runtime Policies Automate their Defense.](https://www.tigera.io/app/uploads/2026/08/AI-Red-Team-Agents-Automate-Attacks-on-your-AI-Agents.-Runtime-Policies-Automate-their-Defense.png)](https://www.tigera.io/blog/ai-red-team-agents-automate-attacks-on-your-ai-agents-runtime-policies-automate-their-defense/)

#### [AI Red Team Agents Automate Attacks on your AI Agents. Runtime Policies Automate their Defense.](https://www.tigera.io/blog/ai-red-team-agents-automate-attacks-on-your-ai-agents-runtime-policies-automate-their-defense/)

By [Alister Baroi](https://www.tigera.io/blog/author/alister-baroi/)
on Aug 24, 2026

The AI red teaming market grew up fast this year. OpenAI bought Promptfoo, Cisco and Microsoft shipped automated attack suites, and a seed-stage startup publicly compromised 50 of 55 live customer service bots. These platforms...

[Read more](https://www.tigera.io/blog/ai-red-team-agents-automate-attacks-on-your-ai-agents-runtime-policies-automate-their-defense/)

<!-- plugin=object-cache-pro client=phpredis metric#hits=3215 metric#misses=33 metric#hit-ratio=99.0 metric#bytes=1569823 metric#prefetches=0 metric#store-reads=176 metric#store-writes=16 metric#store-hits=175 metric#store-misses=22 metric#sql-queries=33 metric#ms-total=586.50 metric#ms-cache=33.25 metric#ms-cache-avg=0.1741 metric#ms-cache-ratio=5.7 sample#redis-hits=46256338 sample#redis-misses=13041575 sample#redis-hit-ratio=78.0 sample#redis-ops-per-sec=113 sample#redis-evicted-keys=0 sample#redis-used-memory=113290352 sample#redis-used-memory-rss=101806080 sample#redis-memory-fragmentation-ratio=0.9 sample#redis-connected-clients=1 sample#redis-tracking-clients=0 sample#redis-rejected-connections=0 sample#redis-keys=73216 -->
