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
推荐阅读




新闻中心
获取星云智联最新动态和新闻资讯
销售咨询:sales@nebula-matrix.com
售后服务支持邮箱: service@nebula-matrix.com
售后服务支持热线: 400-8936-986
联系我们