背景
今天,有个朋友咨询我关于 UDP
协议的测试方法。在给他讲完之后我也顺手将大致的过程记录了下来,在此分享给大家。
因为其是测试 LB(Load Balance)
对 UDP
协议的支持,关于服务端和客户端都需要自己来搭建。
测试工具选型
nc
nc
安装方便,使用简单,可以作为 server
实现 TCP/UDP
端口侦听,也可以作为 client
发起 TCP/UDP
连接。
iperf
安装也比较简单,支持 server
端和 client
端,是业内比较主流的灌包测速工具。在测速方面是比较好的选择。
开始测试
使用 nc
nc 安装
在服务端和客户端都安装 nc
。
yum install nc 复制代码
启动服务端
[root@test ~]# nc -uvl 30.30.30.201 8787 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Listening on 30.30.30.201:8787 # -u 使用UDP协议 # -v 输出详细的交互信息和错误信息 # -l 侦听模式即server模式 复制代码
上面的命令中,建议使用网卡上配置的
IP
,不建议使用127.0.0.1
这种本地环回地址,可能会出现问题。
客户端启动测试
首先创建一个测试文件,然后通过 nc
将这个文件的内容通过 UDP
协议传送到服务端,观察服务端控制台。
客户端:
echo "i am client." > t.txt nc -u -w 1 30.30.30.201 8787 < t.txt 复制代码
服务端:
网络异常,图片无法展示
|
根据服务的响应,我们已经能够判断
UDP
链路已经OK
,此时就可以将服务端对接到LB
的实例上,我们通过访问LB
的IP
和端口就能到达服务端。对于数据的具体报文详情,我们可以在服务端绑定的网卡上抓包分析即可。
测速
关于 nc
的测速,我们可以通过如下方式进行。
服务端:
将收到的数据扔到黑洞中。
nc -u -l 9999 > /dev/null 复制代码
客户端:
将无数的 0
通过 UDP
扔给服务端。
nc -u 30.30.30.201 8787 < /dev/zero 复制代码
使用 iperf
iperf 安装
在服务端和客户端都安装 iperf
。
yum install iperf 复制代码
启动服务端
[root@ ~]# iperf -s -u -p 8899 ------------------------------------------------------------ Server listening on UDP port 8899 Receiving 1470 byte datagrams UDP buffer size: 208 KByte (default) ------------------------------------------------------------ # -s 以server模式启动 # -u 使用UDP协议 # -p 指定侦听端口 复制代码
启动客户端
[root@agent-1 ~]# iperf -c 30.30.30.201 -u -p 8899 ------------------------------------------------------------ Client connecting to 30.30.30.201, UDP port 8899 Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust) UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 30.30.30.147 port 52522 connected with 30.30.30.201 port 8899 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec [ 3] Sent 892 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.042 ms 0/ 892 (0%) # -c 指定client的身份 # -u 使用UDP协议 # -p 指定服务端端口 复制代码
测试结果
如上,我们除了在客户端能够看到测试结果,服务端也有详细的测试结果。
网络异常,图片无法展示
|
根据
iperf
的测试结果,我们不但能够知道当前的UDP
服务正常,而且带宽为:1.05 Mbits/sec
。
关于 UDP
的测试我们今天先介绍到这里,后续更精彩。