面对 rte_pktmbuf_clone 的问题

问题描述 投票:0回答:0

基本上,我使用 DPDK 库 (dpdk-stable-19.11.10) 通过路由器向 DNS 响应者发送 DNS 查询消息, 当我发送数据包时,我正在使用 wireshark 捕获数据包,数据包看起来很干净。在响应者上,如果我执行 TCP 转储并看到数据包,我们会看到由于虚假 IP 长度、错误的 UDP 长度值而导致的格式错误的数据包。

我通过添加每个标头值从 DNS 标头到 ETHERNET 标头(从 L7 到 L2)构建的第一个数据包。所以稍后从第二个数据包开始,而不是再次构建数据包, 我正在使用“rte_pktmbuf_clone”函数克隆数据,并使用“rte_pktmbuf_mtod_offset”函数更改特定参数,如以太网中的 src_mac、src_ip 地址、ipv4 标头中的 total_ip_len、src_port、udp 标头中的 l4_len , trans_id 和 DNS 标头中的查询消息,并使用 '''rte_eth_tx_burst''' 发送数据包。

校验和已卸载到硬件,没有问题。

如果我们构建从 DNS 标头到 ETHERNET 标头的每个数据包并且它工作正常。在使用 '''rte_pktmbuf_clone''' 和 '''rte_pktmbuf_mtod_offset''' 更改 dns 查询和其他参数后,我们看到数据包格式错误或损坏。

任何建议将不胜感激提前感谢!

memcpy dpdk dpdk-pmd ovs-dpdk
© www.soinside.com 2019 - 2024. All rights reserved.