欢迎来到 DPDK交流社区 ,有什么问题可以尽管在这里提问,您将会收到社区其他成员的回答;也可以将您的总结写在这里,为社区其他成员提供帮助。 (QQ交流群:127163755)

DPDK IP 组包之后能不能再次分片?

0 投票
dpdk收到包进行组包之后,再次分片会出现分片包的倒数第二包的数据部分丢失一部分,如:1800大小的包,分片之后分4片:包长为,580, 580, 224, 68; 倒数第二包是224,这一包长度应该也是580,但是却丢失了一部分数据。麻烦业内知情人士告知一下。(dpdk版本17.07)
最新提问 10月 12, 2016 分类:DPDK sample解惑 | 用户: 真正的自由 (120 分)

2 个回答

0 投票
1. 很抱歉, 你的问题我搞不定.

2. 我想请教一个问题, 你的dpdk程序, 可以提供对外的ip, 让其它机器通过该ip来发包至dpdk服务吗? 如果可以, 能指教下如何做到的吗? 多谢.

3. dpdk目前最新版本, 还是16.07.
最新回答 10月 13, 2016 用户: Terry.Wei (810 分)
重新显示 11月 24, 2016 用户:Terry.Wei
0 投票
请把相关的测试环境介绍一下,方便大家的判断。

测试过程是用的自己写的程序,还是DPDK自带的例子程序?
最新回答 10月 18, 2016 用户: sysight (11,900 分)
测试程序我写的程序,分片组包是用的例子,我接收到网卡上的分片包,我的程序可以组包成功,但是我的程序往出发包的时候在分片就会出问题,是DPDK不支持组包后再次分片吗?
再分片的时候需要重新计算checksum。是不是这块计算错了?
发不出去有什么其它提示吗。
深入跟一下“发不出去”是软件层面就没发出去,还是硬件层面没有发出去?
checksum?我分片是调用它的rte_ipv4_fragment_packet()函数进行分片的,校验和是不用我们另外计算的吧?
2、不是发不出去,而是再次分片之后倒数第二片分片包少了一部分数据,(如:1800大小的包,分片之后分4片:包长为,580, 580, 224, 68; 倒数第二包是224,这一包长度应该也是580,但是却丢失了一部分数据)。
3、是不是DPDK不支持组包之后再次分片的场景?
再分片这个我目前没有测试过,其他人如果测试过可以说一下,理论上应该不会不支持,因为你组不组包应该不是DPDK关心的问题,它只负责给你收上来,经过你的处理之后再发出去。
既然是发出来的包长度有问题,确定不是分片的时候包的长度计算或有问题吗?
1、应该不是长度有问题,因为我有测试自己改这个长度为580 ,然后我打印出包的内容,结果是224之后的data是NULL,所以应该不是长度计算出错。
2、那你测试过单次的分片或者组包吗?分片或者组完包成之后,包头和数据部分是怎么样存储的呢?
分片功能还没有测试过。可以在群里问问其他人,看有没有人遇到过或测试过类似的功能。QQ群:127163755
...