最近要学习DPDK技术,其中要用到万兆网卡,手头只有Intel 82599 10G网卡,DPDK测试还没跑起来,先做了传统TCP/IP以及商用的FSDK性能测试,见下文,后续等IXIA的网络分析仪会用了再做DPDK性能测试吧。
a) 处理器,Intel Xeno E5 -2660 V3处理器(2.60GHz)x2
b) 内存,128G(32GX4)
c) 主板,S7070A2NR-B,PCIe_4x16(CPU0),PCIe_2x16(CPU1)
d) 网卡,Intel 82599 10Gb网卡x2
e) 交换机,盛科(最大支持100G)
操作系统,中标麒麟kylin3.3
内核版本,3.10.0-514.16.1.rt56.437.el7.x86_64
图1 TCP/IP性能测试环境
考虑到目前仅有四个光模块,两块网卡通过交换机相连,数据包从一块网卡的MAC1发送到另一块网卡的一个MAC2。
Iperf-3.2
1)测试方法:从MAC1向MAC2连续发送TCP数据包,每次持续时间20秒,使用iperf记录网络吞吐量。
2)Server端命令:iperf –s –B 192.168.100.121
影响因素:无,绑定MAC2网卡
3)Client端命令:iperf –B 192.168.100.110 -c 192.168.100.121 -t 60 -l 8192-i 10
影响因素:见下表
表1 TCP测试client端影响因素
序号 |
参数名 |
备注 |
取值范围 |
1 |
-l |
数据包大小 |
64/128/256/512/1024/2048/4096/8192 |
2 |
-w |
滑窗大小 |
10K/20K/40K 网络通道的容量capacity = bandwidth x round-trip time 理论TCP窗口的大小就是网络通道的容量 |
当滑窗大小分别为10K,20K,40K,数据包大小变化时,测试结果如下:
表2 滑窗大小10K-测试结果
序号 |
数据包大小(字节) |
滑窗大小 |
速率 |
1 |
64 |
10K |
193Mbit/sec |
2 |
128 |
10K |
362Mbit/sec |
3 |
256 |
10K |
651Mbit/sec |
4 |
512 |
10K |
1.07Gbit/sec |
5 |
1024 |
10K |
1.64Gbit/sec |
6 |
2048 |
10K |
2.17Gbit/sec |
7 |
4096 |
10K |
2.62Gbit/sec |
8 |
8192 |
10K |
3.07Gbit/sec |
表3 滑窗大小20K-测试结果
序号 |
数据包大小(字节) |
滑窗大小 |
速率 |
1 |
64 |
20K |
198Mbit/sec |
2 |
128 |
20K |
383Mbit/sec |
3 |
256 |
20K |
720Mbit/sec |
4 |
512 |
20K |
1.3Gbit/sec |
5 |
1024 |
20K |
2.13Gbit/sec |
6 |
2048 |
20K |
3.2Gbit/sec |
7 |
4096 |
20K |
4.24Gbit/sec |
8 |
8192 |
20K |
5.14Gbit/sec |
表4 滑窗大小40K-测试结果
序号 |
数据包大小(字节) |
滑窗大小 |
速率 |
1 |
64 |
40K |
202Mbit/sec |
2 |
128 |
40K |
395Mbit/sec |
3 |
256 |
40K |
763Mbit/sec |
4 |
512 |
40K |
1.43Gbit/sec |
5 |
1024 |
40K |
2.54Gbit/sec |
6 |
2048 |
40K |
4.16Gbit/sec |
7 |
4096 |
40K |
6.19Gbit/sec |
8 |
8192 |
40K |
8.04Gbit/sec |
当数据包大小固定为64B,滑窗大小变化时,测试结果如下:
表5 数据包大小64B不同滑窗大小测试结果
序号 |
数据包大小(字节) |
滑窗大小 |
速率 |
1 |
64 |
10K |
190Mbit/sec |
2 |
64 |
20K |
199Mbit/sec |
3 |
64 |
50K |
202Mbit/sec |
4 |
64 |
100K |
202Mbit/sec |
5 |
64 |
200K |
202Mbit/sec |
6 |
64 |
400K |
202Mbit/sec |
7 |
64 |
理论上限 |
202Mbit/sec |
当数据包大小固定为4K,滑窗大小变化时,测试结果如下:
表6 数据包大小4KB不同滑窗大小测试结果
序号 |
数据包大小(字节) |
滑窗大小 |
速率 |
1 |
4096 |
10K |
2.56Gbit/sec |
2 |
4096 |
20K |
4.21Gbit/sec |
3 |
4096 |
50K |
6.81Gbit/sec |
4 |
4096 |
100K |
8.42Gbit/sec |
5 |
4096 |
200K |
8.92Gbit/sec |
6 |
4096 |
400K |
8.91Gbit/sec |
7 |
4096 |
理论上限 |
9.4Gbit/sec |
从以上测试结果可以看出,使用TCP进行数据包传输过程中,滑窗大小和数据包大小对网络带宽有明显影响,呈正相关趋势。64字节小包情况下速率仅为线速的2%。4K字节大包在滑窗大小不受限的情况下基本达到线速。
1)测试方法:从MAC1向MAC2连续发送UDP数据包,每次持续时间20秒,使用iperf记录网络吞吐量。
2)Server端命令:iperf –s –B 192.168.100.121
影响因素:无,绑定MAC2网卡
3)Client端命令:iperf –B 192.168.100.110 -c 192.168.100.121 -t 20 -l 8192-i 10 -u
影响因素:见下表
表7 UDP测试client端影响因素
序号 |
参数名 |
备注 |
取值范围 |
1 |
-l |
数据包大小 |
64/128/256/512/1024/2048/4096/8192 |
2 |
-b |
带宽大小 |
100M/200M/500M/1G/2G/10G/0 0表明无上限 |
在不丢包的前提下,当带宽大小分别为100M,200M,500M,1G,2G,10G,0时,不同数据包大小下的实际带宽如下,带宽单位为bit/sec。
表8 不同带宽下变长UDP数据包速率情况
包长\带宽 |
100M |
200M |
500M |
1G |
2G |
10G |
0 |
64Byte |
66.5M |
65.9M |
65.1M |
65.8M |
66.6M |
64.5M |
81.7M |
128Byte |
100M |
130M |
134M |
132M |
133M |
133M |
164M |
256 Byte |
- |
200M |
263M |
261M |
265M |
262M |
323M |
512 Byte |
- |
- |
500M |
529M |
525M |
521M |
655M |
1024 Byte |
- |
- |
- |
1G |
1.02G |
1.01G |
1.28G |
2048 Byte |
- |
- |
- |
- |
1.98G |
2.01G |
2.5G |
4096 Byte |
- |
- |
- |
- |
2G |
3.88G |
4.82G |
8192 Byte |
- |
- |
- |
- |
- |
7.01G |
8.66G |
65507 Byte |
- |
- |
- |
- |
- |
10G |
10G |
从上面测试结果中可以看出,使用UDP协议进行数据传输时,在不丢包的前提下,发送不同大小的数据包不一定能达到设定的带宽,实际带宽与数据包大小以及预设带宽限定正相关。在带宽无上限的条件下,64字节的小包带宽较低,仅达到网卡线速的0.8%。随着数据包大小增加,超过8K字节的大包能接近并达到网卡线速。
a) 处理器,Intel Xeno E5 -2660 V3处理器(2.60GHz)x2
b) 内存,128G(32GX4)
c) 主板,S7070A2NR-B,PCIe_4x16(CPU0),PCIe_2x16(CPU1)
d) 网卡,Intel 82599 10Gb网卡x2
e) 交换机,盛科(最大支持100G)
操作系统,Cent0S 6.6
内核版本,2.6.32-504.el6.x86_64
图1 FSDK性能测试环境
考虑到目前仅有四个光模块,两块网卡通过交换机相连,数据包从一块网卡的MAC1发送到另一块网卡的一个MAC2。
Fsdk提供的测试工具集,包含收发包测试程序
1)测试方法:从MAC1向MAC2通过FSDK工具集发包程序连续发送数据包,发包速率为网卡线速10Gbit/s,每次发送1000000包,使用FSDK工具集收包程序记录网络吞吐量。
2)发送端命令:fsxmit –i eth0 –l 64 –R –n 1000000 (–slen:60–elen:16000)
影响因素:发包长度-l(60-16000)
3)Client端命令:fstest –reth5
数据包大小变化时,测试结果如下:
表1 测试结果
序号 |
数据包大小(字节) |
Pps(packet/sen) |
Bps(bit/sec) |
1 |
64 |
9.6M |
6.6G |
2 |
128 |
7.8M |
9.3G |
3 |
256 |
4.26M |
9.3G |
4 |
512 |
2.22M |
9.3G |
5 |
1024 |
1.13M |
9.3G |
6 |
2048 |
826K |
9.3G |
7 |
4096 |
410K |
9.3G |
8 |
8192 |
200K |
9.3G |
10 |
16-16000变长 |
2.1M |
9.314G |
从以上测试结果可以看出,在数据包大小超过128字节后,FSDK性能稳定在9.3Gbit/sec,接近网卡线速。64字节小包情况下速率稍差,为线速的66%。在数据包变长情况下FSDK也能够基本达到线速。