免费注册 查看新帖 |

Chinaunix

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

[网络管理] iptables L7标记文件大小进行速度限制,,白金大哥加精 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-07-22 13:50 |只看该作者
是的。。怪不看了有关IP2PP的必须用CONNMARK来作为标记。。。

我老大把IPP2P迅雷的限制搞成了单线程的不实为一个好的办法。。少去了其它太多的麻烦。。。

L7说是只对前几个包进行检查。。。不知他会检查几个。。那每个包的不同检测结果。。那怎么判断呢。。(如第一个包有特征码。标记。第二个又没有特征码。。不标记。。第三个。。。)

检测这个文件大小的。。只在一个包里检测到了。。也就有效了............

论坛徽章:
0
22 [报告]
发表于 2010-07-22 22:42 |只看该作者



在测试时发现一个问题。一直没有明白。。

如上图。。只下载了一个文件。。。怎么会有那么多包被标记呢???

一个文件只有一个包里含有文件的长度数据啊?????

论坛徽章:
0
23 [报告]
发表于 2010-07-23 09:44 |只看该作者
前面讲过了,l7 有 conntrack 机制,他会把 connmark 的所有内容都匹配到然后允许你放到 mark 里,供 tc 使用,而 ipp2p 不行

论坛徽章:
0
24 [报告]
发表于 2010-07-23 10:48 |只看该作者
哦..大概明白了...也不知是每个包都标记还是间隔..  L7的这种方式效率还会低吗??和那些如目标IP相比...

另外..这种方式限速,,,迅雷也限不住...

论坛徽章:
0
25 [报告]
发表于 2010-07-23 10:52 |只看该作者
IPP2P 要 match 每一个包
L7 只需要 match 一次,以后发现这个 connection 都匹配过,直接走另一个流程而不是 match 流程
因此效率上讲,L7 要高

至于迅雷限制不住,这是因为迅雷是一款 P2SP 软件,且协议加密
1、由于 IPP2P 和 L7 不能有效匹配迅雷协议,所以限制不住
2、迅雷软件可以通过 BT、EMULE、HTTP、FTP、RTSP、MMS、磁力连接,等协议进行下载,即使你匹配出了迅雷,但无法避免 HTTP 和 FTP 的流量,因此从迅雷软件上仍然会看到下载流量,所以你会感觉“限制不住”

论坛徽章:
0
26 [报告]
发表于 2010-07-23 11:14 |只看该作者
还是小白研究得透彻啊................

越来越清晰了.........我在包PREROUTING处也看到了下载流量和所标记的流量差不多..(没有专门测试)

因为没有专门建环境测试...

虽然可以用IPP2P让迅雷下载变成单线程..但感觉(是感觉)虽是单线.有时速度也会大大超过TC的限速..或者说没有限住

论坛徽章:
0
27 [报告]
发表于 2010-07-23 12:34 |只看该作者
把小白BLOG对此精典说明分享给观注此贴的朋友...........让你用的放心..

目前 Linux 有两种内容匹配模块,ipp2p 和 l7-filter,两者功能类似,具体工作原理却大不相同

ipp2p:
ipp2p 的匹配方式是 per packet match 的原则,会匹配 iptables 规则引导过来的每一个数据包。
ipp2p 的匹配精度很高,每一种应用的匹配都是用具体代码来实现的。

l7-filter:
l7-filter 的匹配原则是只匹配每一个 connection 的前 10 个包或者前 2048 个字节(可以通过 procfs 修改)。
匹配精度比较低,匹配方式使用的是正则表达式的形式,基于内核级的正则匹配库是 l7-filter 的创始人 Matthew Strait 通过一个开源的 regexec 库修改而来的,但比较遗憾的是,有些具体特征用正则表达式是无法写出来的
比如 QQLive 的规则:
  0xfe 0x02 0x05 0x05 0x02
  0xfe 0x06 0x00 0x00 0x06
  0xfe 0x00 0x80 0x80 0x00
可以看出这样一个规律:
  data[0] = 0xfe
  data[1] = data[4]
  data[2] = data[3]
由于这种规律无法用正则表达出来(其中还包括 l7-filter 不能识别的 0x00),因此 l7-filter 做不到对这种东西的匹配,但 l7-filter 却有一个优势,就是只匹配每个 connection 的前一段数据,匹配到了就不再匹配,这样就不用对每个数据包都过一遍了。

下面对 ipp2p 和 l7-filter 做一下匹配精度、匹配速度、协议添加等方面的具体对比

    名称                ipp2p                 l7-filter

  匹配精度               非常高                   很低

  匹配速度         处理每个包的速度很快       处理每个包都非常慢
                  即使这个连接匹配到了       一旦匹配到就不再匹配
                  下一个也要继续匹配         这个连接的其他包

添加协议方便度     每次修改都需要重编模块      只需修改正则表达式即可

  流量控制           不适用于流量控制        由于结合了 conntrack 的
                                          特性所以非常适于流控

当然了,由于源代码都给我们了,所以完全可以根据 ipp2p 和 l7-filter 的特性,结合两者的优点开发出一个新的模块匹配精度高、效率高、添加协议方便、适合做流控的 platinum 模块来 ^_^

论坛徽章:
0
28 [报告]
发表于 2010-07-24 20:33 |只看该作者
强烈支持白金老大写一个新的模块出来

论坛徽章:
0
29 [报告]
发表于 2010-07-25 11:42 |只看该作者
白金大侠早有此模块。。不过这是公司机密不好公布给大家。。

论坛徽章:
0
30 [报告]
发表于 2010-07-26 08:58 |只看该作者
没脑子哦,你以为你这种限速可以提高网速吗,你这反而是牺牲带宽,处理时间为代价的,包改的越多效率越低。好好的包你每个都拆开看下,做个标记,累不累,干嘛不直接用交换机做限速。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP