免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: jiufei19
打印 上一主题 下一主题

[网络子系统] ip_frag_queue的问题【已解决】 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
11 [报告]
发表于 2014-03-05 18:35 |只看该作者
回复 10# kkddkkdd11


    恩,你提供的3.0的内核的这个写法和2.6.23的没有本质不同,注释也一样,这个注释没有问题,很好理解,但是需要理解它是在哪个场景下才会发生。我准备把连接跟踪部分的入口处代码尝试看看,能否找到问题的根源。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
12 [报告]
发表于 2014-03-10 18:58 |只看该作者
回复 11# jiufei19


    关于我提出的这个问题,这两天我仔细思考了下代码,发现了loopback这个特殊场景,似乎可以解释我的疑问。

  loopback环回设备接口由于是把数据报发给本机,所以其发送数据报函数比较特殊,它把skb稍加处理后,又转回给协议栈的数据报接收函数netif_rx。其发送函数的函数名是loopback_xmit,我们简单看看其定义:

  135 static int loopback_xmit(struct sk_buff *skb, struct net_device *dev)
  136 {
  137     struct pcpu_lstats *lb_stats;
  138
  139     skb_orphan(skb);
            ...
  162     netif_rx(skb);
  163
  164     return 0;
  165 }           

  很显然,loopback_xmit最后会直接调用netif_rx函数,由于之前本地经过ip_fragment函数处理后的所有分段对应的skb都会携带IPSKB_FRAG_COMPLETE这个标记,因此这些skb在loopback设备发送后直接通过netif_rx返回给协议栈,那么这些返回的skb一定都有此标记。

论坛徽章:
0
13 [报告]
发表于 2014-03-12 15:17 |只看该作者
jiufei19 发表于 2014-03-10 18:58
回复 11# jiufei19


佩服你看代码的仔细:)

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00
14 [报告]
发表于 2014-03-12 15:21 |只看该作者
回复 13# kkddkkdd11


    我只是希望把所有我认为关键的代码逐行,逐场景搞清楚,因为许多书都没有讲这么仔细,只能我自己发现一点,弄懂一点了。希望这些内容对其他同仁有益
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP