比较docker默认网络模式、dpdk、ovs+dpdk三种网络性能测试

将前面的工作整合了一下,比较docker默认的网桥模式、dpdk和dpdk+ovs三种网络的网络性能

前期工作

  • docker + dpdk:https://datawine.github.io/2018/07/15/DPDK-Pktgen-Docker%E6%90%AD%E5%BB%BAVNF%E7%8E%AF%E5%A2%83%E5%8F%8A%E9%AA%8C%E8%AF%81/
  • docker + dpdk + ovs:https://datawine.github.io/2018/07/22/Docker-DPDK-OVS/

docker默认的网桥performance

1
2
3
4
5
#运行docker,使用iperf3 server监听5201端口
sudo docker run -it --rm --name=iperf3-server -p 5201:5201 networkstatic/iperf3 -s

#启动iperf3 client,发包
docker run -it --rm networkstatic/iperf3 -c $(docker inspect --format "{{ .NetworkSettings.IPAddress }}" $(docker ps -ql))

实验结果

因为没有查到如何iperf3监听建好的virtio_user或者是virtio_host端口,而iperf3对ovs的监听好像也是针对网桥(见参考资料[1]),不支持手动添加ovs port和流表的方法,而且在查资料中,据说iperf在dpdk的实验中没有办法达到峰值(?见参考资料[2]),所以后面两种用pktgen测速。

docker默认网桥性能

性能

docker + dpdk性能

拓扑结构

1
2
3
4
5
6
7
+--------+---------------+               +-------------------+---------------+
| | socket file 1 |<------------->| vhost-user port 1 | |
| +---------------+ +-------------------+ |
| host | pktgen | | testpmd | container |
| +---------------+ +-------------------+ |
| | socket file 0 |<------------->| vhost-user port 0 | |
+--------+---------------+ +-------------------+---------------+

性能

docker + dpdk + ovs性能

拓扑结构

性能

总结

由上面可知,docker默认的网桥带宽能够达到1.98GB/s,docker+dpdk的模式下,带宽能够达到4150MB/s4.05GB.s左右,而docker+dpdk+ovs的模式下,带宽能够达到1350MB/s1.32GB/s左右,且发现Rx速率要小于Tx速率,猜测是ovs处发生堵塞。

参考资料

  • [1] https://software.intel.com/en-us/articles/using-docker-containers-with-open-vswitch-and-dpdk-on-ubuntu-1710
  • [2] http://www.qingpingshan.com/jb/lua/322243.html
  • [3] http://networkstatic.net/measuring-network-bandwidth-using-iperf-and-docker/
  • [4] https://www.cnblogs.com/gispathfinder/p/5871043.html
  • [5] https://my.oschina.net/LastRitter/blog/1807032