背景
今天,有个朋友咨询我关于 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
客户端:
将无数的 通过 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 的测试我们今天先介绍到这里,后续更精彩。
nc的更多用法
测试TCP链接
启动服务端
nc -nvl 192.168.0.4 6901
客户端
nc -v 192.168.0.4 6901
链接成功后,还可以直接在控制台进行输入聊天。
验证端口连通性
命令:nc -zv 172.1.2.3 8899
验证UDP端口
命令:nc -uvz 192.168.0.125 111
端口扫描
命令:nc -v -w 1 172.16.7.78 -z 22-81