XDP:高性能、可编程的网络数据包处理技术

XDP(eXpress Data Path)是Linux内核网络协议栈中提供的可编程高性能数据包处理方案。它基于eBPF提供的可编程框架,具有eBPF的灵活加载,高安全性等相关优点。


XDP有三种工作模式,这三种工作模式XDP程序的执行点、优缺点和厂家支持情况如下:

卸载模式

  • 卸载模式:在硬件层面执行

  • 缺点:硬件需要支持基于指令和正则表达式卸载,对于硬件挑战大,不灵活

  • 优点:性能最高,彻底释放CPU

  • 厂家支持情况:主流厂家未采用此方案


原生模式

  • 卸载模式:在网卡驱动点执行

  • 缺点:对于硬件依赖小,可以做到性能与灵活性平衡

  • 优点:灵活性高,性能比较高,释放CPU

  • 厂家支持情况:星云智联S1000系列、英伟达CX系列,Intel的E810/710系列等支持


通用模式

  • 卸载模式:在TCP/IP协议栈的早期执行点

  • 缺点:性能最低

  • 优点:灵活性高

  • 厂家支持情况:对于厂家没有依赖,所有厂家网卡都支持


XDP的原生模式工作原理

XDP原生模式在主机收到数据包最早时间点,即网卡驱动执行XDP程序,避免skb动态创建(传统TCP/IP协议栈,是基于skb内存来管理),性能高。XDP原生模式的处理包处理路径优化后,如下图:



 XDP的原生模式的使用场景

根据XDP动作,不同动作的典型应用场景如下:

  • XDP_DROP

常用于防火墙和DDoS防御。

  • XDP_PASS

可用于流量统计,做可视化。

  • XDP_TX

可用于负载均衡或者反射攻击。

  • XDP_REDIRECT

可用于重定向其他CPU(做NUMA亲和性)、重定向到用户态。


基于这些XDP动作,用户可以部署基于k8s cilium容器网络,开发高性能的用户态协议栈,开发防火墙类APP,做流量监控与采样运维APP等。



星云S1055(2x25GbE)

基于XDP_TX的性能对比

测试对比模型是:

  • 模型A:基于Linux内核Bridge转发,从网卡一个口收,转发到另外一个口;

  • 模型B:基于XDP_TX,从网卡一个口收,执行XDP_TX动作到到另外一个口。

对比性能数据如下:

可以看到小包情况下,XDP的性能是Linux Bridge 2-2.5倍。



订购信息

想要了解更多订购信息,请联系星云智联销售代表

sales@nebula-matrix.com 或致电400-8936-986

类型
订购型号
最高速率
GbE
以太接口
类型
PCIe
HHHL
S1205CQ-A00CHT
2x100
QSFP56/28
S1105AS-A00CHT
4x25
SFP28
S1055AS-A00CHT
2x25
SFP28
S1051AS-A00CHT
2x25
SFP28
S1045XS-A00CHT
4x10
SFP+
OCP3.0
SFF
S1205CQ-A00CSP
2x100
QSFP56/28
S1055AS-A00CSP
2x25
SFP28

推荐阅读






新闻中心

 

获取星云智联最新动态和新闻资讯