思一克
发表于 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的部分。
有空交流交流。