将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和重传?
请提出建议。