来自NIC的DPDK入口IPV4和VLAN RX数据包未设置mbuf卸载标志,导致数据包丢失

时间:2019-06-25 18:01:03

标签: rhel7 dpdk

将DPDK和RHEL OS升级到最新版本后,我发现从NIC接收到的eth类型VLAN和IPV4类型的数据包中未设置卸载标志。这可能是驱动程序问题吗?如何解决此问题?

需要在入口VLAN和IPV4数据包中明确设置卸载标志。

if (ETHER_TYPE_VLAN == eth_type) {
          m->ol_flags |= PKT_RX_VLAN_PKT;

    }
    if (ETHER_TYPE_IPv4 == eth_type) {
          m->ol_flags |= PKT_RX_IPV4_HDR;
         }

如果未在mbuf中设置这些卸载标志,则该数据包将被丢弃,并且不会转发到Tap设备。 但是,应用程序中每个NIC接收数据包的卸载标志设置导致一些性能问题和数据传输延迟。 观察到TCP段丢失,重传和TX Tap丢失。

使用旧的DPDK和RHEL6,不需要对RX VLAN和IPV4数据包的卸载标志设置进行这些更改,并且将数据包从NIC转发到Tap设备,反之亦然。

那么关于DPDK和RHEL 7入口数据包有什么变化吗?新DPDK需要任何配置更改来指示硬件设置卸载标志?

是否需要为具有新DPDK 18.08的TCP数据包设置CKSUM /卸载标志,以避免TCP段丢失/ DUP ACK和重传?

请提出建议。

0 个答案:

没有答案