【干货】UDP怎么测?

简介: 【干货】UDP怎么测?

背景


今天,有个朋友咨询我关于 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 的实例上,我们通过访问 LBIP 和端口就能到达服务端。

对于数据的具体报文详情,我们可以在服务端绑定的网卡上抓包分析即可。


测速


关于 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 的测试我们今天先介绍到这里,后续更精彩。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
HTTP协议中常见的状态码 ?
HTTP状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议,如WebSocket)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器内部错误),广泛应用于Web开发中。
|
Linux
解决办法:更新linux时候提示“由于没有公钥,无法验证下列签名 ***”
解决办法:更新linux时候提示“由于没有公钥,无法验证下列签名 ***”
1516 1
|
弹性计算 安全 Java
使用 OSS 的 bucket 进行文件上传下载|学习笔记
快速学习使用 OSS 的 bucket 进行文件上传下载
1719 0
|
8月前
|
人工智能 自然语言处理 供应链
AI技术落地方法论--从技术到生态的系统化落地
本文三桥君围绕AI技术落地难题,提出“点线面体”金字塔法则,系统解析从单点技术突破到行业生态构建的演进路径,并探讨技术支撑底座如何助力AI落地全过程。
441 29
|
网络协议 Linux Windows
有了这个iPerf小工具,测试UDP方便多了。
有了这个iPerf小工具,测试UDP方便多了。
1214 1
|
存储 XML JSON
用示例说明序列化和反序列化
用示例说明序列化和反序列化
267 1
|
存储 监控 Linux
在Linux中,如何进行日志审计?
在Linux中,如何进行日志审计?
|
数据安全/隐私保护
网络文件夹目前是以其他用户名和密码进行映射的——映射盘更换登录用户名问题
网络文件夹目前是以其他用户名和密码进行映射的——映射盘更换登录用户名问题
5786 0
网络文件夹目前是以其他用户名和密码进行映射的——映射盘更换登录用户名问题
|
网络协议 Python
Scapy一个强大的 Python 程序(一)
Scapy是Python的网络数据包操作工具,用于创建、分析和发送网络包。启动Scapy需以管理员权限运行`sudo scapy`。在交互式环境中,可构建自定义数据包,如设置IP包的`ttl`、`src`和`dst`。通过`/`叠加协议层,如IP和TCP。发送数据包示例:构造向`www.slashdot.org`的HTTP GET请求。Scapy还能用于嗅探、过滤和修改数据包,功能强大。
368 3

热门文章

最新文章