找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9129|回复: 26

[负载平衡] 哪位朋友能够详细解释一下持续不断的负载均衡中Nth的处理过程?

[复制链接]
发表于 2007-4-29 09:26:19 | 显示全部楼层 |阅读模式

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

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

×
这个问题来源于网大那个《持续不断的负载均衡》,其中:

/ ip firewall mangle
add chain=prerouting in-interface=Local connection-state=new nth=1,1,0 \
action=mark-connection new-connection-mark=odd passthrough=yes
add chain=prerouting in-interface=Local action=add-src-to-address-list \
address-list=odd address-list-timeout=1d connection-mark=odd passthrough=yes
add chain=prerouting in-interface=Local connection-mark=odd action=mark-routing \
new-routing-mark=odd passthrough=no
首先,每隔一个包建立一个新的会话,并用“odd”做标记,因此所有属于同一会话的连续的数据包将被放到标记为odd的连接中,注意,我们将这些数据包传递给第二条和第三条规则(passthrough=yes)。第二条规则添加客户端连接过的IP地址到地址表中,使所有连续的会话能够通过同一个网关。第三条规则在prerouting链表将所有标记属于“odd”的连接放入routing mark的“odd”标记中,并将以上连接在此停止处理。

/ ip firewall mangle
add chain=prerouting in-interface=Local connection-state=new nth=1,1,1 \
action=mark-connection new-connection-mark=even passthrough=yes
add chain=prerouting in-interface=Local action=add-src-to-address-list \
address-list=even address-list-timeout=1d connection-mark=even passthrough=yes
add chain=prerouting in-interface=Local connection-mark=even action=mark-routing \
new-routing-mark=even passthrough=no
这三个规则将剩下的传输做之前的同样处理,并将剩下一半的传输标记为“even”。


这段解释太含糊,什么过程都没讲明白,关键在于第一个动作的Nth,这三个数值这样写是怎么个处理过程?如果我有四条、五条线路又该怎么做?

看到官方对于Nth说明如下:
nth ( integer | integer : 0 ..15 | integer ) - match a particular Nth packet received by the rule. One of
16 available counters can be used to count packets
• Every - match every Every+1th packet. For example, if Every=1 then the rule matches every
2nd packet
• Counter - specifies which counter to use. A counter increments each time the rule containing
nth match matches
• Packet - match on the given packet number. The value by obvious reasons must be between 0
and Every. If this option is used for a given counter, then there must be at least Every+1 rules
with this option, covering all values between 0 and Every inclusively.


虽然说明自己大致翻译了一下,但是还是不明白当一串数据报来了以后究竟是怎么个处理过程,哪位朋友能够图文并茂地解释一下?小弟在此谢过了~~
希望大家多探讨原理性的问题,而不是一堆的只要了解一点网络基础就能解决问题的问题。

[ 本帖最后由 louyc 于 2007-4-29 10:23 编辑 ]
routeros
发表于 2007-4-29 14:15:53 | 显示全部楼层
对,同意楼主的意见,不如学点真东西,别浮在表面
routeros
回复

使用道具 举报

发表于 2007-4-29 17:47:15 | 显示全部楼层
nth就是一个计数器,类似for这个函数
routeros
回复

使用道具 举报

 楼主| 发表于 2007-4-29 22:22:17 | 显示全部楼层

???
你说的是什么??没搞错吧~~处理过程是怎么样的?如果我有四条、五条线路又该怎么做?
简简单单一句有说等于没说嘛~
这年头有钻研精神的人好像越来越少了~难道全民都在炒股?危机啊~~

[ 本帖最后由 louyc 于 2007-4-29 22:35 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-5-9 14:36:52 | 显示全部楼层
的确,,很想知道NTH原理。。。还有那个PSD。。。英文的看懂没理解。。
routeros
回复

使用道具 举报

发表于 2007-5-9 17:30:56 | 显示全部楼层
Nth有3个参数Every,Counter,Packet
就从英文说明书上翻译不是很懂,个人理解为
Every频数,每几个数循环一次,这些数是从0开始计算的。
如:01010101的循环
Counter是一个计数器,ROS共有16个计数器(0-15)
Packet就是计数器里的第几个数。
routeros
回复

使用道具 举报

发表于 2007-5-9 18:13:19 | 显示全部楼层
nth=Every,Counter,Packet

Counter = any value from 0 to 15

example for 5 wan:
nth=4,6,0
nth=4,6,1
nth=4,6,2
nth=4,6,3
nth=4,6,4

example for 10 wan:
nth=9,11,0
nth=9,11,1
nth=9,11,2
nth=9,11,3
nth=9,11,4
nth=9,11,5
nth=9,11,6
nth=9,11,7
nth=9,11,8
nth=9,11,9
routeros
回复

使用道具 举报

发表于 2007-5-10 19:32:41 | 显示全部楼层
照这么说来,这个续不断的负载均衡脚本是不在src-add 第一次 conn 时 简单的把奇数个包和偶数个包分开来,从2个wan口出去,
个人理解

[ 本帖最后由 paldos 于 2007-5-10 20:16 编辑 ]
routeros
回复

使用道具 举报

 楼主| 发表于 2007-5-10 20:12:40 | 显示全部楼层
感谢6、7楼的回答,我再考虑试验看看~

7楼能否说说这样设置参数,具体的处理过程?
5 wan的为什么要
nth=4,6,0
nth=4,6,1
nth=4,6,2
nth=4,6,3
nth=4,6,4
可不可以
nth=4,4,0
nth=4,4,1
nth=4,4,2
nth=4,4,3
nth=4,4,4
三个数值中~中间那个数的取值根据是什么?

[ 本帖最后由 louyc 于 2007-5-10 20:21 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-5-10 20:22:32 | 显示全部楼层
for(int wan=0;wan<=6;wan++)
{
}
//猜测
routeros
回复

使用道具 举报

发表于 2007-5-10 20:32:02 | 显示全部楼层
感谢6、7楼的回答,我再考虑试验看看~

7楼能否说说这样设置参数,具体的处理过程?
5 wan的为什么要
nth=4,6,0
nth=4,6,1
nth=4,6,2
nth=4,6,3
nth=4,6,4
可不可以
nth=4,4,0
nth=4,4,1
nth=4,4,2
nth=4,4,3
nth=4,4,4
三个数值中~中间那个数的取值根据是什么?

本人观点:中间的取值无所谓,16个计算器任何一个都可以
倒是第3个值还是没明白根据什么来取?  b128777 兄  能不能再说明一下,谢谢
routeros
回复

使用道具 举报

 楼主| 发表于 2007-5-10 20:32:35 | 显示全部楼层
原帖由 paldos 于 2007-5-10 20:22 发表
for(int wan=0;wan

可能吧~改天试试看~
routeros
回复

使用道具 举报

 楼主| 发表于 2007-5-10 20:35:12 | 显示全部楼层
本人观点:中间的取值无所谓,16个计算器任何一个都可以
倒是第3个值还是没明白根据什么来取?  b128777 兄  能不能再说明一下,谢谢

那如果1号计数器被这个规则用了~是不是其它使用Nth的规则就不能用1号了?也就是说一个ROS最多只能做16个Nth规则?
第三个数值应该是Match一串every进来的第几个包吧~~

[ 本帖最后由 louyc 于 2007-5-10 20:38 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-5-10 20:53:51 | 显示全部楼层
原帖由 louyc 于 2007-5-10 20:35 发表

那如果1号计数器被这个规则用了~是不是其它使用Nth的规则就不能用1号了?也就是说一个ROS最多只能做16个Nth规则?
第三个数值应该是Match一串every进来的第几个包吧~~


那也不一定就16条规则。。
every 1、4、6也可以用同一个计算器,这样算就有48条以上。。举例而已。。。

我把手册都搬上来 了。。用大家的理解来翻译一下吧
&#8226; Packet - match on the given packet number. The value by obvious reasons must be between 0
and Every. If this option is used for a given counter, then there must be at least Every+1 rules
with this option, covering all values between 0 and Every inclusively.

配对指定的数据包数量,值在0-every之间。如果该选项被指定到一个计算器,则至少有every+1条关于该选项的规则--其中包括0-every的所有值。

就这样。。。不过还没是没理解。。。汗。。
routeros
回复

使用道具 举报

发表于 2007-5-10 21:40:50 | 显示全部楼层
补充一个。。。3.0版中是没有counter
In 3.0 Beta 7
* Every
* Packet
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 09:31 , Processed in 0.096327 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

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