QUOTE:原帖由 独孤九贱 于 2007-5-14 14:41 发表于 1楼
一个办法是用netfilter打标记,但是这样一来,内网主机一多,netfilter的规则势必就多,因为是线性处理,而不像u32过滤器使用hash算法,性能就下来了……
有一个问题,就是在什么位置做 MARK?
根据我的理解,netfilter 的 MARK 有两种,一种是数据包的 MARK,nfmark,另一个是 conntrack 的 MARK,二者都定义在 struck ip_conntrack 里,MARK 和 TOS 值不同,是只在本机的 netfilter 内才有效的,所以 MARK 过的数据包不能被其他机器识别(至少我是这样认为的,没有测试过)
抛开这个问题,如果考虑 MARK 值可以被识别的话,可否写一个 module,也同样用 hash 的方法针对 IP 做 MARK,MARK 值就是该 IP 的 hash 值,然后用 tc 做针对 IP 的限速?