论坛风格切换切换到宽版
  • 670阅读
  • 4回复

[问题求助]请教一个流量限制中U32过滤器的小问题 [复制链接]

上一主题 下一主题
离线mirxx.
 
发帖
2121
C币
-152545
威望
392
贡献值
1
银元
-2
铜钱
4818
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
偶使用Linux做网关,使用TC.,限制内网主.机上行带宽,遇到一个问题:电影
因为流量限制是在Netfilter的地址转换后实现的,所以,对流量限制的过滤器来讲,它看到的来源地址已经不再是真正的内网主机地址,而是经过.转换后的公网.IP地址。这样,过滤.器就不能生效了。投资

一个办法是用netfilter打标记,但是这样一来,内网主机一多,netfilte.r的规则势必就多,.因.为是线性处理,而不像u32过滤器使用hash算法,性能就下来了……            杀毒

大家有没有什么好方法??

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线xunleifilm.
发帖
2062
C币
-152450
威望
382
贡献值
1
银元
-1
铜钱
4740
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
画一个网络结构看看.

离线warriow.
发帖
2020
C币
-139333
威望
385
贡献值
1
银元
-5
铜钱
4588
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13


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 的限速?

发帖
2119
C币
-235314
威望
380
贡献值
1
银元
-4
铜钱
4762
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
白金兄想得跟我一样,其实只需要在post_routing的SNAT之前挂一个钩子,做个hash就解决了,但是每样都要自己写程序……
有现成的解决方案就要轻松些噻



QUOTE:画一个网络结构看看.

这跟网络结构无关,是Linux的网络体系结构决定的——流量整形在二层的outgress的位置,处于三层的post_routing的snat之后,这就决定了u32过滤器无关看到转换前的来源地址……

[ 本帖最后由 独孤九贱 于 2007-5-15 09:09 编辑 ]

离线lun0412.
发帖
2057
C币
-132078
威望
382
贡献值
1
银元
-2
铜钱
4590
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13


QUOTE:一个办法是用netfilter打标记,但是这样一来,内网主机一多,netfilter的规则势必就多,因为是线性处理,而不像u32过滤器使用hash算法,性能就下来了……

九贱兄高抬了,其实我只是根据你说的 u32 的原理想的,我并不知道 u32 的工作原理
九贱兄,可否讲一下 u32 究竟是如何工作的,它是如何利用 hash 实现匹配的,我实在是没搞懂

快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个