免费注册 查看新帖 |

Chinaunix

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

Linux内核IP Queue机制的分析(三)——ip_queue内核模块的分析 [复制链接]

论坛徽章:
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
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-04 21:54 |只看该作者 |正序浏览
本文分析ip_queue的内核态源码。文中如有任何疏漏和差错,欢迎各位朋友指正。

        本文欢迎自由转载,但请标明出处,并保证本文的完整性。
        作者:Godbach
        Blog:http://Godbach.cublog.cn
        日期:2010/01/04
       
本系列的前两篇文章如下:
1. Linux内核IP Queue机制的分析(一)——用户态接收数据包
        http://blog.chinaunix.net/u/33048/showart_1678213.html
2. Linux内核IP Queue机制的分析(二)——用户态处理并回传数据包
http://blog.chinaunix.net/u/33048/showart_1839753.html
本文大纲如下:
一、IP Queue的生效
二、网络层中IP报文进入IP Queue的流程
三、ip_queue代码分析
(一)数据结构的定义
(二)ip_queue模块的加载和卸载
(三)ip_queue报文入队处理函数的注册
(四)入队函数ipq_enqueue_packet —— 发送数据包到用户空间
(五)接收和处理用户空间的配置—— 接收用户空间的数据包
(六)数据包的最终处理

[ 本帖最后由 Godbach 于 2010-1-5 15:08 编辑 ]

评分

参与人数 2可用积分 +30 收起 理由
T-Bagwell + 15 我很赞同
dreamice + 15 原创内容

查看全部评分

论坛徽章:
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
41 [报告]
发表于 2014-04-18 09:50 |只看该作者
回复 40# hubaohai

要做 Inject 的话,kernel 就需要等待你的处理结果。抓包的话,只相当于旁路多 copy 出来一份就行了。


   

论坛徽章:
0
40 [报告]
发表于 2014-04-18 08:38 |只看该作者
我的目标就是做一个抓包工具。
不过从内核态向用户态传输数据采用类似ip queue 的netlink的使用方式。
之后也做了inject功能。
我的一是netlink的丢包概率比tcpdump要高一点。

Godbach 发表于 2014-04-17 22:59
回复 38# hubaohai

tcpdump 是旁路模式,而 IP Queue 是直接拦截报文的,要给出处理意见,并 reinject  ...

论坛徽章:
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
39 [报告]
发表于 2014-04-17 22:59 |只看该作者
回复 38# hubaohai

tcpdump 是旁路模式,而 IP Queue 是直接拦截报文的,要给出处理意见,并 reinject 回去。

   

论坛徽章:
0
38 [报告]
发表于 2014-04-17 18:03 |只看该作者

mark一下,下次回来看。
上周还自己用netlink实现了一个和 ipq功能类类似的模块(几乎照着ipq的源码写的),用于硬件抓包向用户态传输数据的。
感觉丢包的概率比tcpdump高,大师能分析下原因吗。

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
37 [报告]
发表于 2013-10-31 00:28 |只看该作者
高端货啊

论坛徽章:
0
36 [报告]
发表于 2013-10-30 20:54 |只看该作者
好的,大师。验证了以后,把结果通知给大家!

论坛徽章:
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
35 [报告]
发表于 2013-10-30 14:27 |只看该作者
回复 34# yg_quantum

没有更多建议了,剩下的就是需要你动手了


   

论坛徽章:
0
34 [报告]
发表于 2013-10-30 13:27 |只看该作者
对,大师。

IP Queue在收到用户层返回的IP Queue的包以后,会从全局链表里面查找保存的原始包,我准备改一下IP Queue的接口,就是做个特殊标志,如果是拆分以后的包,就不查找原始包了,直接让Netfilter转发。

菜鸟,不懂这些,大师还有什么好的建议吗

论坛徽章:
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
33 [报告]
发表于 2013-10-30 13:14 |只看该作者
回复 32# yg_quantum

用特殊 ID 估计不行吧。IP 报文的 id 字段本身就 16bit。 你能找到协议中规定的某个保留不用的 ID 吗,如果都可以使用的话,你应该另外想别的方法了。

其实可以考虑把那个 IP Queue 中的 msg 的信息扩展一下。

至于拆分之后,再让 Netfilter 转发出去,会有什么样的问题,估计都得测试了。

   
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP