思一克 发表于 2005-12-07 13:37

对于iptables来说,USER mode的IPTABLES和KERNEL的NETFILTER不存在内存共享和LOCK问题。
USER 和 KERNEL 通信就是通过 SET(GET)SOCKOPT实现的。
USER 得到的TABLES是在USER 空间的一个COPY,而不是内核那个TABLE,连格式也是不一样的。

独孤九贱 发表于 2005-12-07 13:40

原帖由 思一克 于 2005-12-7 13:37 发表
对于iptables来说,USER mode的IPTABLES和KERNEL的NETFILTER不存在内存共享和LOCK问题。
USER 和 KERNEL 通信就是通过 SET(GET)SOCKOPT实现的。
USER 得到的TABLES是在USER 空间的一个COPY,而不是内核那个TABL ...

呵呵,说对了一半吧,刚才这个问题已经讨论过了,不过,不可否认,内核态是用copy_to_user这样的方式,效率也太低了点……要是有几万条规则的话,er……没有尝试过

platinum 发表于 2005-12-07 14:16

独孤九贱、mq110、albcamus、思一克几位老大都太牛了,看得我云山雾绕插不上话,不知道何时才能到达各位老大的境界 :oops:

思一克 发表于 2005-12-07 15:38

To platinum, 我恰好研究过iptalbes, 所以略知道一点。看你明白的其他那么多我一点也不知道的问题,自己也感觉惭愧。

To JiuJian,
是的。所以规则太多了(比如 大于大于1000)就十分慢了。这个问题有人贴过。

思一克 发表于 2005-12-07 15:43

我说的“不存在LOCK问题”是指在iptables user 程序中不用lock,
在setsockopt 的内核代码中要修改 kernel中的table必须lock.

albcamus 发表于 2005-12-07 15:56

术业有专攻嘛! 俺还常去shell版问菜到天荒地老的菜鸟问题呢:oops:

youngy411 发表于 2005-12-07 16:02

原帖由 思一克 于 2005-12-7 13:37 发表
对于iptables来说,USER mode的IPTABLES和KERNEL的NETFILTER不存在内存共享和LOCK问题。
USER 和 KERNEL 通信就是通过 SET(GET)SOCKOPT实现的。
USER 得到的TABLES是在USER 空间的一个COPY,而不是内核那个TABL ...

各位老大,我是刚学linux的菜鸟,前几天碰到一个问题,在网络与硬件版上求助过,见帖子:
http://bbs.chinaunix.net/viewthread.php?tid=659369&extra=page%3D3
只是问题一直没有解决,刚刚看到各位的讨论,虽然看不懂,但我觉得我碰到的问题可能跟这个有关系,因为表现就是能查看到的规则与实际运行的规则不一致。如果不麻烦的话,有劳大侠们也帮忙看看吧

独孤九贱 发表于 2005-12-07 16:09

原帖由 思一克 于 2005-12-7 15:43 发表
我说的“不存在LOCK问题”是指在iptables user 程序中不用lock,
在setsockopt 的内核代码中要修改 kernel中的table必须lock.

哈哈,我就是这个意思!

思一克 发表于 2005-12-07 16:12

To Jiu3Jian4,

我没有研究过IPTALBES code, 仅仅看过KERNEL的部分。

mq110 发表于 2005-12-07 16:13

原帖由 思一克 于 2005-12-7 16:12 发表
To Jiu3Jian4,

我没有研究过IPTALBES code, 仅仅看过KERNEL的部分。

有空交流交流。
页: 1 2 3 [4] 5 6 7 8
查看完整版本: iptables 源码分析