免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4551 | 回复: 12
打印 上一主题 下一主题

请教ip分片重组的关于ip_frag_reasm的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-14 11:03 |只看该作者 |倒序浏览
ip_frag_reasm 这个函数中貌似没有对skb分片数据的data部分进行拷贝操作,
只是返回了skb的链表头部,那在后续流程处理skb时的data且不只是分片数据的第一个分片包?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2011-09-14 11:09 |只看该作者
回复 1# yanhaofeng
我印象中该函数只是将所有分片的 skb 按照顺序排列到链表而已,而没有具体实现内容的线性化。

如果需要做具体内容的线性化,可以调用接口 skb_linearize

论坛徽章:
0
3 [报告]
发表于 2011-09-14 11:22 |只看该作者
回复  yanhaofeng
我印象中该函数只是将所有分片的 skb 按照顺序排列到链表而已,而没有具体实现内容的线 ...
Godbach 发表于 2011-09-14 11:09



   
好激动,一直很仰慕godbach大侠,今天居然回复了我,好荣幸。
悲剧了,貌似以前看独孤大侠的博客记得2.6网卡里还是什么地方已经对skb进行线性化操作了,我就以为在ip分片重组时
会进行相应操作,找了半天没找到。唉,水平还是太菜了/。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2011-09-14 11:30 |只看该作者
回复 3# yanhaofeng
客气了,大家共同交流。
你看一下内核里调用  skb_linearize  这个接口的代码就有那些,就可以窥见一斑。

其次,这个函数实际上在我们基于 NF 做开发时,也是可能用到的。

论坛徽章:
0
5 [报告]
发表于 2011-09-14 11:43 |只看该作者
回复 4# Godbach


    额,刚才看了下,是在skb_copy_bits 里面做线性化操作的。

其实我就是在nf上做开发的,只是以前没注意到这点。只知道要做线性化,但是不知道在什么地方做的。
一般是在掉钩子之前做吧。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2011-09-14 11:54 |只看该作者
回复 5# yanhaofeng
这个就是根据需要了。

应该是在你的 hook 函数中实现调用吧。当你处理的是分片包,但是有需要查看其完整的数据,就需要线性化一把。

论坛徽章:
0
7 [报告]
发表于 2011-09-14 14:33 |只看该作者
再问下,
skb中的skb_shared_info里的nr_frags和 skb_frag_t        frags[MAX_SKB_FRAGS];
是在什么时候被置上的?

论坛徽章:
0
8 [报告]
发表于 2011-09-14 16:06 |只看该作者
刚才查了下understanding linux network internals,感觉nr_frags 应该是在拷贝数据到skb中已经有了,
是属于什么io片 Note that this field counts Scatter/Gather I/O buffersnot IP fragments,跟ip分片数据没有关系。
然后在线性化的时候,将这个io片和ip分片拷贝到skb中。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
9 [报告]
发表于 2011-09-14 16:25 |只看该作者
回复 8# yanhaofeng
有些网卡支持 S/G IO 的功能,数据可以直接写入 page 中,保存在 skb

论坛徽章:
0
10 [报告]
发表于 2011-09-14 17:27 |只看该作者
回复 9# Godbach

这样做有什么优势?放到page中的话在后续做线性化那不是还要重新拷贝出来?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP