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.
您提到的重新排序库旨在根据序列号而不是片段偏移量重新排序。也就是说,工作流程如下:
- 我们为 mbufs 分配序列号。
- 我们在不同的线程上处理这些 mbuf,即现在的顺序是混合的。
- 我们使用重新排序库重新排序这些 mbuf。
所以很相似,但是和ip包重组不一样
您好 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.
您提到的重新排序库旨在根据序列号而不是片段偏移量重新排序。也就是说,工作流程如下:
- 我们为 mbufs 分配序列号。
- 我们在不同的线程上处理这些 mbuf,即现在的顺序是混合的。
- 我们使用重新排序库重新排序这些 mbuf。
所以很相似,但是和ip包重组不一样