- 论坛徽章:
- 0
|
我采用模块的方式在tcp层和ip层之间加了一层来对skb数据包进行编码解码,这2个编码解码函数编码解码以后还继续交给tcp/ip协议栈处理 但是我发现在接收端接收数据的时候 丢包率非常大。我确定不是链路的问题 因为我发现数据包从下层往上走一直走到ip_local_deliver函数都没有丢包 ,但是走到ip_local_deliver_finish这个函数里丢了。基本上2个数据包就会在这个函数里丢失一个 这是我用netfilter钩子函数用printk打印出来数据包看出来的。比如ip_local_deliver函数最后一句是 return NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, skb, skb->dev,NULL,ip_local_deliver_finish);我就在这插入了我自己的处理函数。
这个钩子函数走完后就进入了ip_local_deliver_finish进行处理 我不知道到底在这个函数的哪里出现了问题导致部分数据包被丢失了。所以我想有没有像ip那样的钩子函数可以让我轻松的插入tcp层中添加printk打印数据包来查找原因。或者有没有什么方便的办法来找到丢包的原因 我不想在内核中添加printk重新编译内核太麻烦了 各位大神帮帮忙 谢谢了
|
|