PCC负载均衡

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PCC负载均衡

PCC匹配器允许分离传输流做到平衡流量的功能(能指定这个属性选择

src-address, src-port, dst-address,dst-port)

PCC原理

PCC从一定范围内分析选择IP数据包头,通过哈西散列算法的帮助下,将选定的区域转换为32bit值。这个值除以指定Denominator(分母),余数将比较一个指定的余数(Remainder),如果相等这时数据包将会被捕获,你可以选择src-address, dst-address, src-port, dst-port等使用此操作。

per-connection-classifier=

PerConnectionClassifier ::= [!]ValuesToHash:Denominator/Remainder

Remainder ::= 0..4294967295 (integer number)

Denominator ::= 1..4294967295 (integer number)

ValuesToHash ::=

src-address|dst-address|src-port|dst-port[,ValuesToHash*]

per-connection-classifier分类器,通过判断源地址、目标地址、源端口和目标端口,对数据进行分类,如

事例:

这个配置将所有连接基于源地址和端口分类的3个组:

/ip firewall mangle add chain=prerouting action=mark-connection

new-connection-mark=1st_conn

per-connection-classifier=both-addresses:3/0

/ip firewall mangle add chain=prerouting action=mark-connection

new-connection-mark=2nd_conn

per-connection-classifier=both-addresses:3/1

/ip firewall mangle add chain=prerouting action=mark-connection

new-connection-mark=3rd_conn

per-connection-classifier=both-addresses:3/2

per-connection-classifier=both-addresses:3/0,这条规则的含义为我们对原地址的端口进行分类,3/0为一共有3条出口,定义第一条,3/1则是第二条,以此类推。

注意:

PCC从RouterOS v3.24开始支持,这个功能解决了多网关的负载均衡问题。

PCC的负载均衡事例

一、双向地址负载均衡

通分组源地址和源端口实现负载平衡,这里我们建立2个WAN出口分别是wan1和wan2,网络环境如下:

∙ISP1地址10.200.15.99/24,网关:10.200.15.1;

∙ISP2地址10.200.100.99/24,网关:10.200.100.2;

∙内网IP地址192.168.100.1/24;

∙启用DNS缓存功能,用192.168.100.1作内网DNS解析;

基本配置

首先进入ip address配置IP地址:

在ip dns setting中配置好DNS缓存,DNS为:61.139.2.69

Mangle标记配置

接下来我们进入ip firewall mangle标记连接和路由,我们使用

per-connection-classifier双向地址进行分类做连接分类标记。

首先我们需要将进入路由的的链接进行标记

如下图,我们进入一条mangle规则,中的advanced标签内容可以看到per-connection-classifier分类器,选择both-addresses的分类:

然后选择dst-address-type=!local,即除了目标地址是本地以前的地址:

注:2条线的分类代码定义是第一条线为2/0,第二条为2/1

同样选择一下地址类型:

下面命令是提取走第一条线路的连接标记取名位1st_conn,并从连接里提取路由标记名位1st_route,设置:

per-connection-classifier=both-addresses:2/0, 设置in-interface=lan

/ip firewall mangle

add action=mark-connection chain=prerouting comment="" disabled=no \ in-interface=lan new-connection-mark=1st_conn passthrough=yes \ per-connection-classifier=both-addresses:2/0

add action=mark-routing chain=prerouting comment=""

connection-mark=1st_conn \

disabled=no in-interface=lan new-routing-mark=1st_route passthrough=yes

提取走第二条线路的连接标记取名位2nd_conn,并从连接里提取路由标记名位2nd_route,设置:per-connection-classifier=both-addresses:2/1,设置

in-interface=lan:

/ip firewall mangle

add action=mark-connection chain=prerouting comment="" disabled=no \ in-interface=lan new-connection-mark=2nd_conn passthrough=yes \ per-connection-classifier=both-addresses:2/1

add action=mark-routing chain=prerouting comment=""

connection-mark=2nd_conn \

disabled=no in-interface=lan new-routing-mark=2nd_route passthrough=yes

在winbox在mangle中设置完成后如下:

回程路由设置

我们需要将从那个口进入就从相应的口回去,即保证每个外网口的数据能得到正确的路由

/ip firewall mangle

add chain=input in-interface=wan1 action=mark-connection

new-connection-mark=1st_conn

add chain=input in-interface=wan2 action=mark-connection

new-connection-mark=2nd_conn

winbox设置

相关文档
最新文档