我们最近已升级到DPDK 18.08版本。 升级到最新版本后,观察到UDP数据包传输错误,少数数据包出现问题。
传输大小为28个字节和48个字节的UDP数据包时,未发现任何问题。 我试图在使用rte_kni_tx_burst将其发送到内核之前,在程序中打印数据包长度计算。 数据包长度的计算对我来说似乎是正确的。
1.)
size_udp:48
sizeof(struct udp_hdr):8
size_ApplMsg:40
udphdr->dgram_len:12288
m->data_len:82
size_ip:68
l2_data_shift:14
2.)
size_udp:28
sizeof(struct udp_hdr):8
size_ApplMsg:20
udphdr->dgram_len:7168
m->data_len:62
ip->total_length:12288
size_ip:48
l2_data_shift:14
Packets with UDP size 736 are not getting transmitted to the receiving end and getting dropped.
3.)
size_udp:736
sizeof(struct udp_hdr):8
size_ApplMsg:728
udphdr->dgram_len:57346
m->data_len:770
size_ip:756
l2_data_shift:14
在我的程序中,MTU也设置为1500。因此,传输小于1500字节MTU的736字节UDP数据应该不是问题。
我试图增加内核缓冲区的大小,但这没有帮助。 netstat -su->输出显示0个发送/接收缓冲区错误。
DPDK 18.08中有关UDP数据包的更改是什么? 请建议我是否需要考虑调整udp,卸载udp流量以解决此问题。
谢谢