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

经过分片接口分片的数据包,发往kni结果不通,不知道什么原因

0 投票
现在我们有这么一个需求,我们将从port中收到的数据包,根据dpdk的重组接口进行重组之后,然后再放入自己通过dpdk创建的队列,然后再从队列中取出数据,通过dpkd的分片操作后发往kni,但是这样实现,结果数据不通?

但是如果我将从port中收到的数据先发送到kni后,再从kni取出数据然后再经过dpdk的重组接口发送到队列,再从队列中取出数据,然后通过dpdk的分片接口发送到port,然后这样是可以通的

 

我使用的是ping数据包,我截出数据来一看结果,在ip头部和icmp头部之间在分片的时候多出了14个字节,无论是哪种情况都会出现这个问题?

大家有没有这样弄过,将分片的数据包然后发送到kni
最新提问 3月 22, 2017 分类:默认分类 | 用户: xkyby1992 (530 分)

2 个回答

0 投票
 
已采纳
我的问题终于解决了,然后和大家一起分享一下,主要问题是dpdk的分片接口把分出来的数据包分成了两部分,其中一个mbuf中存的是mac头部和ip头部,而另一个mbuf中存的是ip头部后面的信息,所以导致了kni不会识别这样形式的数据包,从而导致分片之后的数据包无法正常的发送和处理,但是port可以处理,如果需要将分片的数据包发往kni的话需要将该数据包自己手动组装为一个数据包,然后自己手动计算ip头部的校验和,再进行发送即可使得kni正常处理
最新回答 3月 23, 2017 用户: xkyby1992 (530 分)
采纳于 3月 24, 2017 用户:sysight
0 投票
没遇到过这个问题,原因不太好描述,可以gdb跟一下流程,看看具体是哪里的问题。
最新回答 3月 22, 2017 用户: sysight (10,220 分)
我刚才又发现了一个问题,经过分片那个函数出现了明明一个mbuf就可以存下的数据包,但是却存在了两个数据包中,就是mbuf结构体中的nb_segs的值为2
...