免费注册 查看新帖 |

Chinaunix

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

请教:有关Netfilter的问题 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2009-03-11 15:13 |只看该作者
原帖由 dreamice 于 2009-3-11 15:10 发表


首先,ip_rcv_finish是一个static的函数
其次,我前面也说到,我想在碎片重组之前做这个clone,所以,直接调这个函数,投上去,包是没有重组的;

所以,调这个函数绝对有问题


你是打算在IP分片重组之前进行本地投递?
但是投递到本地后,仍然会进行分片重组的啊。

另外,ip_rcv_finish是不是一个static函数无关紧要,需要的话,把他EXPORT_SYMBOL出来就OK了。

[ 本帖最后由 ShadowStar 于 2009-3-11 15:15 编辑 ]

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
62 [报告]
发表于 2009-03-11 15:15 |只看该作者
原帖由 platinum 于 2009-3-11 15:08 发表
我觉得这个问题应该分成三个子问题来考虑
1、如何把 1 个包弄成 2 个包?
2、如何让其中一个包按自己的意愿走?
3、以上两者是否存在耦合性?(即是否可能存在相互干扰的成分)

我想,“1” 并不难,“2” ...


1、就是clone一个skb,这个好实现
2、对不是localhost的包进行这个操作,所以我考虑的下一步怎么让他往local host走。这里有个问题我重申一下我在碎片重组之前做这个clone,因此clone的包也能走到netfilter的碎片重组的hook上来,于是在用户空间就不用考虑碎片之类的东东了。tcpdump和libpcap这些机制我考虑过了,和应用程序耦合性太大,所以先否定了。
3、我只是实现一个hook,所以不存在太大的耦合性。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
63 [报告]
发表于 2009-03-11 15:18 |只看该作者
原帖由 ShadowStar 于 2009-3-11 15:13 发表


你是打算在IP分片重组之前进行本地投递?
但是投递到本地后,仍然会进行分片重组的啊。

另外,ip_rcv_finish是不是一个static函数无关紧要,需要的话,把他EXPORT_SYMBOL出来就OK了。



其实说白了,我想实现的功能类似与redirect,但redirect是把原包定向到本地,但我只想定向一个副本,原包该走forward还是让他走。

论坛徽章:
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
64 [报告]
发表于 2009-03-11 15:18 |只看该作者
要在重组之前clone,而不再重组之后,是基于什么考虑?

论坛徽章:
0
65 [报告]
发表于 2009-03-11 15:19 |只看该作者
原帖由 ShadowStar 于 2009-3-11 15:13 发表
另外,ip_rcv_finish是不是一个static函数无关紧要,需要的话,把他EXPORT_SYMBOL出来就OK了。

好像如果是 static 函数的话是无法导出的,需要把 static 关键字去掉才可以

论坛徽章:
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
66 [报告]
发表于 2009-03-11 15:19 |只看该作者
原帖由 platinum 于 2009-3-11 15:19 发表

好像如果是 static 函数的话是无法导出的,需要把 static 关键字去掉才可以


去掉,然后重新编译内核。。

论坛徽章:
0
67 [报告]
发表于 2009-03-11 15:24 |只看该作者
原帖由 dreamice 于 2009-3-11 15:18 发表



其实说白了,我想实现的功能类似与redirect,但redirect是把原包定向到本地,但我只想定向一个副本,原包该走forward还是让他走。


了解你得需求,因为我之前的需求也是一样的。

但是这个样子需要考虑一些问题。

副本skb是否修改dest ip和dest port?如果不修改,必须绕过路由,并hack socket。
如果可以修改,那就可以类似REDIRECT,但是需要注意本地端口是TCP的话,三次握手不会成功。

这个副本skb与原始skb没有关系。

论坛徽章:
0
68 [报告]
发表于 2009-03-11 15:28 |只看该作者
原帖由 dreamice 于 2009-3-11 15:15 发表
这里有个问题我重申一下我在碎片重组之前做这个clone,因此clone的包也能走到netfilter的碎片重组的hook上来,于是在用户空间就不用考虑碎片之类的东东了。

这里先分支讨论一下性能问题
如果 defrag 之前 clone,之后两个包都要 defrag,这样负载会比较高,为什么不先过了 defrag 再 clone 呢?
IP 重组是根据 sip、dip、ipid、proto 四元组来计算 hash 的,如果在早期 clone,那么就要在 defrag 之前把数据包改好,之后走各自的 defrag 队列,性能是比较低的

对于随意控制走向问题,我觉得是不是可以参考 2.6.28 中的数据包网络处理框架?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
69 [报告]
发表于 2009-03-11 15:29 |只看该作者
原帖由 ShadowStar 于 2009-3-11 15:24 发表


了解你得需求,因为我之前的需求也是一样的。

但是这个样子需要考虑一些问题。

副本skb是否修改dest ip和dest port?如果不修改,必须绕过路由,并hack socket。
如果可以修改,那就可以类似REDIREC ...


下面这个问题先不考虑:
副本skb是否修改dest ip和dest port?如果不修改,必须绕过路由,并hack socket。
如果可以修改,那就可以类似REDIRECT,但是需要注意本地端口是TCP的话,三次握手不会成功。


到tcp之上那些事情是另外一回事了,我这里想知道的是,clone的这个skb,当然可以修改他的任何参数,如何可以继续走,就是按原skb相同的路走下去,当然在后面某个岔路口他们会分道扬镳。

论坛徽章:
0
70 [报告]
发表于 2009-03-11 15:33 |只看该作者
原帖由 dreamice 于 2009-3-11 15:29 发表


下面这个问题先不考虑:


到tcp之上那些事情是另外一回事了,我这里想知道的是,clone的这个skb,当然可以修改他的任何参数,如何可以继续走,就是按原skb相同的路走下去,当然在后面某个岔路口他们会分 ...


...
nskb = skb_clone(skb);
ip_rcv_finish(nskb);
...
return ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP