您好Stackoverflow专家
我正在尝试通过将消息分成4个数据包来发送4096字节的消息。
但是,仅以突发方式发送消息并不能保证将按顺序接收消息。 因此,我很难找出哪个库(重新排序库或IP碎片)可以帮助我保证将按顺序接收消息。
https://doc.dpdk.org/guides/prog_guide/reorder_lib.html https://doc.dpdk.org/guides/sample_app_ug/ip_frag.html
例如,如果我分3次发送3条消息 我在下面收到这样的消息
ex)发送(3次猝发) [1111111] [22222] [33333]
ex)修订版 [33333] [22222] [1111111]
因此,为了解决此问题,在l3fwd示例中,我在重排序库和ip碎片方面苦苦挣扎。 为了达到如下所示的结果,我必须使用哪个库? (IP碎片或重新排序库)
ex)发送(3次猝发) [1111111] [22222] [33333]
ex)修订版 [1111111] [22222] [33333]
答案 0 :(得分:1)
您是对的,我们使用rte_ipv4_fragment_packet()
对数据包进行分段。
要重组碎片包,我们应该使用rte_ip_frag_table_create()
创建一个碎片表,然后使用rte_ipv4_frag_reassemble_packet()
函数。
请看看at Programmer's Guide,这里是a reassembly sample application。
您提到的重新排序库旨在根据序列号而不是片段偏移进行重新排序。换句话说,工作流程如下:
所以它很相似,但是与IP数据包重组不同。