DPDK中Reorder Library和IP分片的目的

The purpose of Reorder Library and IP fragmentation in DPDK

您好 Whosebug 专家,

我试图通过将消息分成 4 个数据包来发送 4096 字节的消息。

但是,简单地以突发方式发送消息并不能保证消息将按顺序接收。 所以我很难找出哪个库(Reorder 库或 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]

你是对的,我们使用 rte_ipv4_fragment_packet().

来分割数据包

要重新组装分段数据包,我们应该使用 rte_ip_frag_table_create() 创建 table 个分段,然后使用 rte_ipv4_frag_reassemble_packet() 函数。

请看at Programmer's Guide and here is a reassembly sample application.

您提到的重新排序库旨在根据序列号而不是片段偏移量重新排序。也就是说,工作流程如下:

  1. 我们为 mbufs 分配序列号。
  2. 我们在不同的线程上处理这些 mbuf,即现在的顺序是混合的。
  3. 我们使用重新排序库重新排序这些 mbuf。

所以很相似,但是和ip包重组不一样