首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux下UDP包从内核到用户空间的路径

Linux下UDP包从内核到用户空间的路径
EN

Stack Overflow用户
提问于 2015-05-25 17:31:30
回答 1查看 918关注 0票数 1

我正在维护一些网络驱动程序,我遇到了一些数据丢失的问题。其效果是,当我使用ping或nping发送例如ICMP或UDP ping时,一些udp/icmp分组丢失。

我确信在传输的ping/nping端,我的驱动程序和内核收到了ping回复(tcpdump将传入的udp或icmp数据包显示为回复)。

但是应用程序ping/nping有时显示例如80%的分组丢失。我怀疑这些包在内核和用户空间之间的某个地方丢失了。

我知道对于UDP,有用于维护UDP包的过程udp_rcv(),但我不知道在将包传递到用户空间应用程序的过程中,下一个过程是哪个。

Linux内核的版本是3.3.8。

我的问题是-如何跟踪从我的驱动程序到用户空间套接字缓冲区的数据包转换的整个路径?

EN

回答 1

Stack Overflow用户

发布于 2015-05-25 18:40:57

udp_rcv()是作为.handler传递给struct net_protocol的回调。您可以查看此处理程序字段在结构中的使用情况,也可以查看是否发生了某些错误。有一个回调err_handler。可能这里会发生丢包,并调用错误处理程序。

注:请记住,UDP不能保证100%的传输成功,100个数据包中有一个数据包丢失可能是预期行为。(:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30435162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档