高频次UDP 小包丢包分析
目录
- 背景
- 测试方法
- 测试结果
-
- case1: (经过多级交换机)
- case2: 长时测试(经过多级交换机)
- case3: 长时测试(设备直联)
- 可能原因分析
- 解决方法
背景
UDP作为面向非连接的传输协议,并不能保证可靠交付。本文编写代码测试设备之间UDP小包传输的可靠性。
测试方法
发送侧基于豆包给的例程,改了一下,修改IP地址和退出 条件 。
import socket
import time
# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 目标IP地址和端口
ip_address = 'xxxx'
port = 1234
# 初始化序号
sequence_number = 0
count = 0
while True:
# 构建32字节的数据包,前4字节为序号,后28字节为填充数据
packet = sequence_number.to_bytes(4, byteorder='big') + b'0' * 28
# 发送UDP包
sock.sendto(packet, (ip_address, port))
count += 1
print(f"Sent packet with sequence number: {sequence_number}, count:{count}")
# 序号递增并处理循环
sequence_number = (