物理专线接入完成后,您需要对链路的性能进行测试,确保物理专线可以满足您的业务需求。
前提条件
在测试前,确保您完成以下环境准备:
-
完成物理专线的接入和路由配置,本地IDC与阿里云通过物理专线连通。
-
准备1台本地IDC服务器:作为Netperf或iperf3测试中的客户端或服务器端。
本操作中,IDC网络设备的IP地址为:192.168.100.1。
-
准备8台专有网络ECS实例:作为Netperf或iperf3测试中的客户端或服务器端。与本地IDC网络接入设备之间建立控制连接,传递测试配置相关的信息,以及测试结果。
本操作中使用8台规格为ecs.se1.2xlarge 镜像为centos_7_2_64_40G_base_20170222.vhd的ECS实例,IP地址为172.16.0.2 − 172.16.0.9。
搭建测试环境
安装Netperf
Netperf是一个网络性能的测量工具,主要针对基于TCP或UDP传输。
完成以下操作,分别在IDC网络设备和8台ECS实例上安装Netperf:
- 执行以下命令下载Netperf。
wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
- 执行以下命令安装Netperf。
tar -zxvf netperf-2.5.0.tar.gz cd netperf-netperf-2.5.0 ./configure make make install
- 执行
netperf -h
和netserver -h
验证安装是否成功。
安装iPerf3
Iperf3是一个网络性能测试工具。Iperf3可以测试最大TCP和UDP带宽性能。
完成以下操作,分别在IDC网络设备和8台ECS实例上安装iPerf3:
- 执行以下命令下载iPerf3。
yum install git -y git clone https://github.com/esnet/iperf
- 执行以下命令安装iPerf3。
cd iperf ./configure && make && make install && cd .. cd src ADD_PATH="$(pwd)" PATH="${ADD_PATH}:${PATH}" export PATH
- 执行命令
iperf3 -h
,验证安装是否成功。
开启多队列功能
在IDC网络接入设备内部执行以下命令,开启多队列功能。(假设与物理专线相连的接口为eth0。)
ethtool -L eth0 combined 4
echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-3/rps_cpus
使用Netperf工具测试物理专线的包转发性能
Netperf安装完成后会创建两个命令行工具:netserver(服务器端)和netperf(客户端)。两个工具的主要参数说明如下表所示。
工具名称 | 主要参数 | 参数说明 |
---|---|---|
Netserver(服务器端:接收端工具) | -p | 监听的端口号。 |
netperf(客户端:发送端工具) | -H | IDC网络接入设备或VPC服务器的IP地址。 |
-p | IDC网络接入设备或VPC服务器的端口。 | |
-l | 运行时间。 | |
-t | 发送报文的协议类型:TCP_STREAM 或 UDP_STREAM。
建议使用UDP_STREAM。 |
|
-m | 数据包大小。
|
测试收方向
- 在IDC网络接入设备内启动netserver进程,指定不同端口,如下所示:
netserver -p 11256 netserver -p 11257 netserver -p 11258 netserver -p 11259 netserver -p 11260 netserver -p 11261 netserver -p 11262 netserver -p 11263
- 在VPC内的8台ECS实例上启动netperf进程,分别指定到IDC网络接入设备的不同netserver端口。
netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台 netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二台 netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三台 netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四台 netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五台 netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六台 netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七台 netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八台
- 如果需要测试bps,将上述命令修改为:
netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台 netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台 netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台 netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台 netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台 netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台 netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台 netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台
测试发方向
- 在8台VPC ECS实例内启动netserver进程,指定端口,如下所示:
netserver -p 11256
- 在IDC网络接入设备内启动8个netperf进程,指定为不同IP地址。
netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台ECS实例 netperf -H 172.16.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二台ECS实例 netperf -H 172.16.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三台ECS实例 netperf -H 172.16.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四台ECS实例 netperf -H 172.16.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五台ECS实例 netperf -H 172.16.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六台ECS实例 netperf -H 172.16.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七台ECS实例 netperf -H 172.16.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八台ECS实例
- 如果需要测试bps,将上述命令修改为:
netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台ECS实例 netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台ECS实例 netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台ECS实例 netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台ECS实例 netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台ECS实例 netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台ECS实例 netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台ECS实例 netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台ECS实例
分析测试结果
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
124928 1 10.00 4532554 0 3.63
212992 10.00 1099999 0.88
显示结果中各字段含义如下表所示。
字段 | 含义 |
---|---|
Socket Size | 缓冲区大小 |
Message Size | 数据包大小(Byte) |
Elapsed Time | 测试时间(s) |
Message Okay | 发送成功的报文数 |
Message Errors | 发送失败的的报文数 |
Throughput | 网络吞吐量(Mbit/s) |
通过发送成功的报文数除以测试时间,即可算出测试链路的pps,即pps=发送成功的报文数/测试时间。
使用iPerf3测试物理专线的带宽
iPerf3的主要参数说明如下表所示。
工具名称 | 主要参数 | 参数说明 |
---|---|---|
iPerf3 | -s | 表示作为服务器端接收数据。 |
-i | 设置每次报告之间的时间间隔,单位为秒。 | |
-p | 指定服务端的监听端口。 | |
-u | 表示使用UDP协议发送报文。若不指定该参数则表示使用TCP协议。 | |
-l | 设置读写缓冲区的长度。通常测试包转发性能是建议该值设为16,测试带宽是建议该值设为1400。 | |
-b | UDP模式使用的带宽,单位bits/s。 | |
-t | 设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包,默认值为10秒。 | |
-A | 设置CPU亲和性,可以将的iPerf3进程绑定对应编号的逻辑CPU,避免iPerf3的进程在不同的CPU间被调度。 |
测试收方向
- 在IDC网络接入设备中以server模式启动iperf3进程,指定不同端口,如下所示:
iperf3 -s -i 1 -p 16001 iperf3 -s -i 1 -p 16002 iperf3 -s -i 1 -p 16003 iperf3 -s -i 1 -p 16004 iperf3 -s -i 1 -p 16005 iperf3 -s -i 1 -p 16006 iperf3 -s -i 1 -p 16007 iperf3 -s -i 1 -p 16008
- 在VPC ECS实例上以client模式启动iperf3进程,分别指定到IDC网络接入设备的不同端口。
iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16001 -A 1 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16002 -A 2 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16003 -A 3 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16004 -A 4 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16005 -A 5 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16006 -A 6 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16007 -A 7 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16008 -A 8
测试发方向
- 在每个VPC ECS实例上server模式启动iperf3进程并指定端口。
iperf3 -s -i 1 -p 16001
- 在IDC接入设备上以client模式启动8个iperf3进程,
-c
的值为各个陪练机的IP地址。iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.2 -i 1 -p 16001 -A 1 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.3 -i 1 -p 16001 -A 2 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.4 -i 1 -p 16001 -A 3 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.5 -i 1 -p 16001 -A 4 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.6 -i 1 -p 16001 -A 5 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.7 -i 1 -p 16001 -A 6 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.8 -i 1 -p 16001 -A 7 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.9 -i 1 -p 16001 -A 8
分析测试结果
客户端的iPerf3进程执行完毕后,会显示如下结果。
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-10.00 sec 237 MBytes 199 Mbits/sec 0.027 ms 500/30352 (1.6%)
[ 4] Sent 30352 datagrams
字段 | 含义 |
---|---|
Transfer | 传输的总数据量 |
Bandwidth | 带宽大小 |
Jitter | 抖动 |
Lost/Total Datagrams | 丢失报文数/总报文数(丢包率) |
PPS=对端收到的包/时间
sar
命令来统计实际收到的包并作为实际结果,例如:sar -n DEV 1 320
。
阿里云侧速率限制
除了物理专线的带宽限制外,VPC与本地数据中心之间的通信还受到以下限制。
- OSS的读写速率上限为5Gbit/s。
- 为了提高可靠性,从VPC到边界路由器(VBR)方向的单个hash流,在阿里云内部被限速为“高速通道规格带宽/12(或/4、/8和/16等)”。例如VBR到VPC的带宽为large1,即1Gbps带宽,则单个hash流的最大带宽为85Mbps。
hash流定义:源IP地址、源端口、传输层协议、目的IP地址和目的端口,这五个量组成的一个集合所定义的数据流。 例如:“192.168.1.1 10000 TCP 121.14.**.** 80” 就构成了一个hash流。即一个IP地址为192.168.1.1的终端通过端口10000,利用TCP协议,和IP地址为121.14.**.**,端口为80的终端进行的连接就是一个hash流。
在文档使用中是否遇到以下问题
更多建议
匿名提交