背景
上回我们说过,由于UDP方式是在用户层做转发,会多一次报文拷贝,因此性能上会比在内核做转发的vxlan差,但是没有具体数据总是不太直观,因此我们小测一波。
准备
在两个节点上起两个容器,安装上带宽测试工具iperf3,
yum install -y iperf3
之后分别在vxlan和UDP方式下测试即可。
iperf3使用方式
iperf3测试采用C/S方式,因此两个节点一个运行服务端,一个运行客户端。
首先在服务端运行以下命令:
[root@8d0db8f5a8b4 /]# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
该命令让iperf3作为服务端,并监听5201端口,等待客户端连接。
然后在客户端也就是另一个容器中,运行以下命令:
[root@8d0db8f5a8b4 /]# iperf3 -c 10.108.69.2 -t 5
Connecting to host 10.108.69.2, port 5201
[ 4] local 10.108.93.2 port 50028 connected to 10.108.69.2 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 45.1 MBytes 378 Mbits/sec 0 1.74 MBytes
[ 4] 1.00-2.00 sec 97.5 MBytes 816 Mbits/sec 0 1.89 MBytes
[ 4] 2.00-3.01 sec 152 MBytes 1.27 Gbits/sec 0 1.97 MBytes
[ 4] 3.01-4.00 sec 128 MBytes 1.08 Gbits/sec 119 1.50 MBytes
[ 4] 4.00-5.00 sec 136 MBytes 1.14 Gbits/sec 0 1.61 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-5.00 sec 559 MBytes 937 Mbits/sec 119 sender
[ 4] 0.00-5.00 sec 554 MBytes 928 Mbits/sec receiver
iperf Done.
其中,
-c 指定要连接的服务端,也就是第一个容器的ip
-t 指定测试时间
最后的输出我们可以看到,采用vxlan的发送带宽大概是937M/s。
接下来换UDP作为backend来测试,
[root@8d0db8f5a8b4 /]# iperf3 -c 10.8.46.2 -t 5
Connecting to host 10.8.46.2, port 5201
[ 4] local 10.8.101.2 port 51674 connected to 10.8.46.2 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 16.7 MBytes 139 Mbits/sec 66 130 KBytes
[ 4] 1.00-2.01 sec 14.3 MBytes 119 Mbits/sec 15 115 KBytes
[ 4] 2.01-3.01 sec 11.8 MBytes 98.8 Mbits/sec 8 135 KBytes
[ 4] 3.01-4.00 sec 12.3 MBytes 104 Mbits/sec 12 111 KBytes
[ 4] 4.00-5.00 sec 19.4 MBytes 163 Mbits/sec 16 133 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-5.00 sec 74.4 MBytes 125 Mbits/sec 117 sender
[ 4] 0.00-5.00 sec 74.0 MBytes 124 Mbits/sec receiver
iperf Done.
采用udp方式,发送带宽大概为125M/s,可见,vxlan的性能明显优于udp方式,大概是udp的7.5倍。