找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4478|回复: 2

[负载平衡] 关于PCC与NTH

[复制链接]
发表于 2012-1-1 18:00:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 jike106397 于 2012-1-1 18:07 编辑

网大的PCC脚本中为什么还要有INPUT OUTPUT标记,很难理解.下面是我写的,用着也很不错。如果有人理解原理,请指导下。
我的教程免费贴上。好像粘不过来图片。可到我空间来看。
http://hi.baidu.com/1063971928qq ... 8989098b82a137.html



测试是在虚拟机里测试的
虚拟机三个网卡,两个外网,一个内网,两个外网使用两个PPPOE拨号,内网段采用172.16.0.0/24 网卡分别命名为wan1,wan2,lan

首先,添加两个外网的拨号,我已经加好了。
/interface pppoe-client add interface=wan1 user="test1" password="test1" add-default-route=no disable=no
/interface pppoe-client add interface=wan2 user="test2" password="test2" add-default-route=no disable=no
  
我做的拨号是固定IP的,pppoe-out1: address 10.10.10.2 gateway 10.10.10.1
                                      pppoe-out2: address 10.10.20.2 gateway 10.10.20.1




内网添加IP
/ip address add address=172.16.0.1/24 interface=lan

这样IP已经配置好了,下面配置PCC




由于为了测试效果,我只对我的客户机(设置IP:172.16.0.2)进行PCC负载。

/ip firewall mangle add chain=prerouting action=mark-connection new-connection-mark=conn1 passthrough=yes src-address=172.16.0.2  per-connection-classifier=both-addresses:2/0
/ip firewall mangle add chain=prerouting action=mark-connection new-connection-mark=conn2 passthrough=yes src-address=172.16.0.2  per-connection-classifier=both-addresses:2/1
/ip firewall mangle add chain=prerouting action=mark-routing new-routing-mark=rout1    passthrough=yes src-address=172.16.0.2 connection-mark=conn1
/ip firewall mangle add chain=prerouting action=mark-routing new-routing-mark=rout2    passthrough=yes src-address=172.16.0.2 connection-mark=conn2



在标记连接的地方,网上好多地方说要标记非本地地址,还要对INPUT 和OUTPUT 进行标记。我看着,觉得好无根据,不按它的做。并且大部分是复制的,很可能是以讹传讹。
标记好就,就使用PCC计算方法对数据进行了标记,然后就是策略路由的问题了
在路由表里做策略
/ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1 distance=1 routing-mark=rout1
/ip route add dst-address=0.0.0.0/0 gateway=10.10.20.1 distance=1 routing-mark=rout2
由于只是测试,没有可能掉线,所以,没有添加默认路由,及防掉线。


再在出口处做地址伪装。
/ip firewall nat add chain=srcnat out-interface=pppoe-out1 action=masquerade
/ip firewall nat add chain=srcnat out-interface=pppoe-out2 action=masquerade

由于是为了测试PCC的负载效果,所以做了两条根据出口的伪装,如果用的话,只做一个就行了,不必限定出口。
下面是用批处理做发包,来测试对包的负载效果。当然要保证172.16.0.2机器的绝对干净,没有其它连网程序。比如QQ之类的软件都要退出。



第一个批处理发240个包,代码如下:


@echo off
for /l %%i in (1 1 240) do (
ping -n 1 -w 1 219.134.240.%%i
)
pause

测试结果



可以看出,发了240个包中,走第一条线的是116个包,走第二条线的是124个包。

第二个批处理发400个包,代码如下:
@echo off
for /l %%i in (1 1 200) do (
ping -n 1 -w 1 219.134.240.%%i
ping -n 1 -w 1 219.135.240.%%i
)
pause
















下面是测试结果:










可以看出,发出的400个包中,走第一条线的是195个包,走第二条线的是205个包



第三次测试,发了1000个包,代码如下



@echo off
for /l %%i in (1 1 200) do (
ping -n 1 -w 1 219.134.240.%%i
ping -n 1 -w 1 219.135.240.%%i
ping -n 1 -w 1 219.136.240.%%i
ping -n 1 -w 1 219.137.240.%%i
ping -n 1 -w 1 219.138.240.%%i
)
pause



测试结果:





可以看出,走第一条线的496个包,走第二条线的504个包

走240 个包时 ,相差8个包

走400个包时,相差10个包

走1000个包时,相差8个包

整体效果很不错。

下面是NTH策略的千包结果:





可见,还不如PCC。

本人打开了四家网上银行的登录,及用支付宝,未发现不能登录的错误提示。

并且测试表明,NTH打开网页的响应速度没有PCC快。

一个纳闷的问题是为什么总是第二条线走的比第一条线多?,这可能要到PCC在HASH运算时的具体算法寻求答案了。


routeros
发表于 2012-1-1 20:03:41 | 显示全部楼层
INPUT和OUTPUT是针对ROS自身通信的规则,对客户机转发没什么用。
routeros
回复

使用道具 举报

发表于 2012-1-5 14:33:38 | 显示全部楼层
我做了INPUT和OUTPUT后QQ空间跟QQ邮箱之类的都打不开,关了就正常了。。。网上的PCC教程大体差不多,细节上的差别就有很大的区别。好像都能用。我做的是加了标记非本地地址的这个动作。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-5-18 05:28 , Processed in 0.067206 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表