在之前测试VMware vSwitch性能的时候(79.55 Gbps!已经初步测得VMWare ESXi 6.7的vSwitch转发性能),我们测试了几个常见操作系统的打流性能,其中性能最出色的当属国产操作系统OpenEuler(还得是华为,OpenEuler打流能到37 Gbps),打出了37.2 Gbps的好成绩。
但是,我转念一想,这个数据最多也就是说明它的网卡可以收发这么大流量的数据,但是如果是经过主机转发的流量呢?是不是OpenEuler还能继续保持领先优势呢?我们之前也做过简单的测试(如果把Linux主机作为路由器转发流量,性能可靠吗?),不过当时用iperf3打流的性能大概是7.38 Gbps,不知道使用iperf打流是否能得到更高的数据。
测试组网如下:
首先先测试一下CentOS 7的转发性能,需要开启DUT设备的转发功能。
ip add add 11.1.1.1/24 dev ens224
ip add list ens224
ip add add 22.1.1.1/24 dev ens256
ip add list ens256
echo 1 > /proc/sys/net/ipv4/ip_forward
然后在两台测试主机上配置好路由条目。
ip route add 22.1.1.0/24 via 11.1.1.1
ip route add 11.1.1.0/24 via 22.1.1.1
首先用iperf142作为服务器,打流测试一下转发性能。
iperf -c 22.1.1.2 -P 8 -i 2 --sum-only -b 20g
经过多次调整,最后测得的转发性能达到了11.5 Gbps,最高有12.5 Gbps,双向的结果差距不大。
再用iperf141作为服务器,反向测试一下。
iperf -c 11.1.1.2 -P 8 -i 2 --sum-only -b 20g
随便一测就是12.4 Gbps,最高达到了13.5 Gbps。
那如果使用VPP进行转发呢(不用半小时,最快8分钟即可在CentOS上完成VPP的部署)?
ip link set ens224 down
ip link set ens256 down
vi /etc/vpp/startup.conf
systemctl restart vpp
vppctl show interface addr
vppctl set int state eth1 up
vppctl set int ip address eth1 11.1.1.1/24
vppctl set int state eth2 up
vppctl set int ip address eth2 22.1.1.1/24
首先还是用iperf142作为服务器,打流测试一下转发性能。
iperf -c 22.1.1.2 -P 8 -i 2 --sum-only -b 20g
相同的测试参数,转发性能就只有8.51 Gbps了,最高也只有9.25 Gbps。
再用iperf141作为服务器,反向测试一下。
iperf -c 11.1.1.2 -P 8 -i 2 --sum-only -b 20g
大差不差,勉强能到9.05 Gbps,最高也就是9.63 Gbps,相比于内核转发,大概损失了25 %的性能。
接下来让我们看一下OpenEuler的表现,为了公平起见,我使用的还是相同配置的4C4G虚拟机。
配置好网卡地址之后,开启DUT设备的转发功能。
echo 1 > /proc/sys/net/ipv4/ip_forward
首先还是用iperf142作为服务器,打流测试一下转发性能。
iperf -c 22.1.1.2 -P 8 -i 2 --sum-only -b 20g
相同的测试参数,转发性能大约是12.1 Gbps了,最高达到了13.2 Gbps。
再用iperf141作为服务器,反向测试一下。
iperf -c 11.1.1.2 -P 8 -i 2 --sum-only -b 20g
转发性能大约是13.2 Gbps了,最高达到了13.8 Gbps。
好像也没有那么高性能,只是比CentOS稍微高一丢丢罢了,10 %左右吧。
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/116077.html