背景
今天,有个朋友咨询我关于 UDP
协议的测试方法。在给他讲完之后我也顺手将大致的过程记录了下来,在此分享给大家。
因为其是测试 LB(Load Balance)
对 UDP
协议的支持,关于服务端和客户端都需要自己来搭建。
测试工具选型
nc
nc
安装方便,使用简单,可以作为 server
实现 TCP/UDP
端口侦听,也可以作为 client
发起 TCP/UDP
连接。
iperf
安装也比较简单,支持 server
端和 client
端,是业内比较主流的灌包测速工具。在测速方面是比较好的选择。
开始测试
使用 nc
nc 安装
在服务端和客户端都安装 nc
。
yum install nc
启动服务端
代码语言:javascript复制[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
协议传送到服务端,观察服务端控制台。
客户端:
代码语言:javascript复制echo "i am client." > t.txt
nc -u -w 1 30.30.30.201 8787 < t.txt
服务端:
根据服务的响应,我们已经能够判断
UDP
链路已经OK
,此时就可以将服务端对接到LB
的实例上,我们通过访问LB
的IP
和端口就能到达服务端。对于数据的具体报文详情,我们可以在服务端绑定的网卡上抓包分析即可。
测速
关于 nc
的测速,我们可以通过如下方式进行。
服务端:
将收到的数据扔到黑洞中。
代码语言:javascript复制nc -u -l 9999 > /dev/null
客户端:
将无数的 0
通过 UDP
扔给服务端。
nc -u 30.30.30.201 8787 < /dev/zero
使用 iperf
iperf 安装
在服务端和客户端都安装 iperf
。
yum install iperf
启动服务端
代码语言:javascript复制[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 指定侦听端口
启动客户端
代码语言:javascript复制[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链接
启动服务端
代码语言:javascript复制nc -nvl 192.168.0.4 6901
客户端
代码语言:javascript复制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