DPDK版本:16.11.2,默认支持对大报文的分片和组装,但编码过程中仍需要关注几个地方,否则会陷入单步调试的泥沼不能自拔。
注意点:
- mbuf中的packet_type有可能并未被网卡填充,不能直接使用;
- reassemble接口中frag_tbl和death_row,不是线程安全的,不支持并发访问;
- mbuf库中只有read链表的操作,没有write链表的操作,所以需要自己实现;
- fragment接口参数中必须保证分片大小为8的整数倍;
- fragment前udp校验和的计算可参考dpdk checksum;
- fragment后ipv4校验和如果自己计算的话,需要重置掉offload标志;
- fragment后要free掉原始的mbuf,否则send后会出现mbuf泄漏;
mbuf读取接口
1 | |
mbuf写入接口
1 | |
报文重组接口
1 | |
报文分片接口
1 | |