Intel 82599ES 基于DPDK和Linux kernel的L2fwd性能比较

1. 实验测试环境如下

2. L2fwd on Linux kernel测试步骤和结果

在上图所示实验环境中:

a) 禁用系统irqbalance

b) 禁用网卡flow control 功能

c) 设置网卡使用1个队列

d) 禁用GRO

e) 设置core affinity

设置core affinity for RX and TX, assigned core 30 to port 0, 31 to port 1.

f) 下载l2fwd 源程序

下载l2fwd 源程序https://github.com/opnfv/vswitchperf/tree/master/src/l2fwd 并编译,最终生成l2fwd.ko。使用这个kernel module,而不使用标准Linux Bridge 或者Openvswitch的原因是为了和dpdk l2fwd 的执行原理尽可能的一致,即从一个端口收到包就从另一个端口转发出去,不会送入Linux kernel协议栈,避免了协议处理的开销,同时也避免了Linux Bridge额外查FDB表运算开销或Openvswitch 查flowtable表额外运算开销。
l2fwd.ko的实现原理是利用在linux kernel中,网络端口收到数据包都会调用

送给上层协议栈处理,而在这个函数中可以通过

注册自己的接收处理函数,改变kernel中数据包的默认处理逻辑。在l2fwd.ko中就是利用这个办法把从一个网络端口收到的数据包调用dev_queue_xmit(skb)直接从另外一个端口转发出去。

加载l2fwd.ko使两个端口处于包转发状态, 配置Ixia traffic generator, 发送数据包,得到测试结果。

g). 结果如下表格所示


注意:这是作者所得测试结果,非官方数据。系统配置不同,测试结果也可能不同。

3. Dpdk L2fwd测试步骤和结果

a). linux system 运行dpdk

关于在linux system 运行dpdk, 参照如下链接文档,http://www.dpdk.org/doc/guides/linux_gsg/index.html
关于dpdk l2fwd, 请参照如下链接文档,http://www.dpdk.org/doc/guides/sample_app_ug/l2_forward_real_virtual.html

b). 运行dpdk l2fwd, 配置Ixia traffic generator, 发送数据包,得到测试结果。

c). 结果如下表格所示

4. Dpdk L2fwd和 Linux kernel L2fwd测试结果

5. 更多DPDK Intel NIC Performance result

请访问如下连接:
http://fast.dpdk.org/doc/perf/DPDK_17_05_Intel_NIC_performance_report.pdf

作者简介
裴玉龙,Intel软件工程师,主要负责DPDK 网卡性能相关的测试工作。

原文地址:DPDK开源社区

发表评论

电子邮件地址不会被公开。 必填项已用*标注