这里探讨的不是RouterOS在IDC机房的VPS或虚拟化的应用,而是作为一个IDC客户与运营商接入三层路由的应用,或是与集群服务器多条回指路由的应用。当然这种环境并非只出现在IDC机房网络,这个应用是本人在IDC工作中总结的,仅供参考。

IDC接入应用

通过一个实例,比如我在运营商的IDC机房开通了30G的IDC带宽,那运营商给我开通肯定是3个10GE的接口,分配了256个公网IPv4地址(暂不讨论IPv6网络),IPv4地址接入采用路由模式,而非二层接入。

运营商30G接入配置,可以是分配3组/30子网互联IPv4地址,也可以是配置3个端口的链路聚合口,例如华为的Eth-trunk接口,分配一组/30子网互联IPv4地址。

这里我们排除链路聚合口的配置,选择3组/30子网互联地址,将一个C段的IPv4地址,假如IPv4地址是:80.8.8.0/24,运营商会配置3条静态路由,指向3个互联接口的IPv4地址,我方也会配置3条默认路由到3个互联接口的IPv4网关,这个是最常见的ECMP协议,保证3个接入端口流量均衡,IDC网络中应用非常普片。互联配置如下:

通过上面的互联图,有网络基础的朋友,大概就明白了IDC网络路由模式接入配置

基本的接入说完了,现在要说下PCC如何应用其中,这个应用非nat网络,仅是三层路由,因此关闭连接跟踪:

[admin@MikroTik] > ip/firewall/connection/tracking/set enabled=no

3条mangle直接标记路由包,因为不涉及nat的连接跟踪,所以没有mark-connection的标记规则:

/ip firewall mangle
add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route1 passthrough=yes per-connection-classifier= both-addresses:3/0

add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route2 passthrough=yes per-connection-classifier= both-addresses:3/1

add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route3 passthrough=yes per-connection-classifier= both-addresses:3/2

 

路由配置:

/ip route
add gateway=10.1.1.1 routing-mark=route1
add gateway=10.1.1.5 routing-mark=route2
add gateway=10.1.1.9 routing-mark=route3

上面的配置其实和ECMP没什么区别,就是用PCC复现了ECMP的配置,也就是PCC做的3条负载均衡

现在我们要实现4:4:2,也就是2:2:1,需要标记5条路由规则

标记5条规则配置:

/ip firewall mangle
add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route1 passthrough=yes per-connection-classifier= both-addresses:5/0

add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route2 passthrough=yes per-connection-classifier= both-addresses:5/1

add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route3 passthrough=yes per-connection-classifier= both-addresses:5/2

add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route4 passthrough=yes per-connection-classifier= both-addresses:5/3

add action=mark-routing chain=prerouting src-address=80.8.8.0/24 \
new-routing-mark=route5 passthrough=yes per-connection-classifier= both-addresses:5/4

 

路由配置:

/ip route
add gateway=10.1.1.1 routing-mark=route1
add gateway=10.1.1.1 routing-mark=route2
add gateway=10.1.1.5 routing-mark=route3
add gateway=10.1.1.5 routing-mark=route4
add gateway=10.1.1.9 routing-mark=route5

这样3条线路比例调配,这个比例还可以修改PCC规则调整,同时RouterOS的script可以参与实时的流量调整比例分配,至于这种配置有什么用,搞IDC的朋友他们自然明白!

服务器集群应用

考虑另外一个场景,方向是去一个集群服务器,也就是和之前的案例反过来,RouterOS需要面向客户,让集群服务器需要确保流量调度均衡,也需要按比例分配一定流量,同样是4:4:2,需要标记5条路由规则,下图是服务器集群是三台和RouterOS都有一个/30子网互联:

标记5条规则,对于RouterOS来说,是去80.8.8.0/24,修为dst-address

/ip firewall mangle
add action=mark-routing chain=prerouting dst-address=80.8.8.0/24 \
new-routing-mark=route1 passthrough=yes per-connection-classifier= both-addresses:5/0

add action=mark-routing chain=prerouting dst-address=80.8.8.0/24 \
new-routing-mark=route2 passthrough=yes per-connection-classifier= both-addresses:5/1

add action=mark-routing chain=prerouting dst -address=80.8.8.0/24 \
new-routing-mark=route3 passthrough=yes per-connection-classifier= both-addresses:5/2

add action=mark-routing chain=prerouting dst -address=80.8.8.0/24 \
new-routing-mark=route4 passthrough=yes per-connection-classifier= both-addresses:5/3

add action=mark-routing chain=prerouting dst -address=80.8.8.0/24 \
new-routing-mark=route5 passthrough=yes per-connection-classifier= both-addresses:5/4

 

在写静态路由同时加上routing-mark标记

/ip route
add dst-address=80.8.8.0/24 gateway=192.168.10.2 routing-mark=route1
add dst-address=80.8.8.0/24 gateway=192.168.10.2 routing-mark=route2
add dst-address=80.8.8.0/24 gateway=192.168.10.6 routing-mark=route3
add dst-address=80.8.8.0/24 gateway=192.168.10.6 routing-mark=route4
add dst-address=80.8.8.0/24 gateway=192.168.10.10 routing-mark=route5

到目标地址的路由,PCC的hash算法能确保相同的源IP命中到同一台服务器,而不会随机连接到其中一台。

ECMP会每10秒调整一次算法,导致路由线路变动,对于三层路由而言并不影响使用,因为多条路径下,都可以到达目标网络,DNS和普通web服务采用相同loopback的IP地址用ECMP没问题,对于一些特殊的内容连接服务,有时候要求源IP始终落到同一台服务器的loopback IP上能保持一直的路径连接,PCC为一些特殊应用提供可用性。之前的一篇文章大家可以参考下:探讨下RouterOS PCC的工作原理与应用延伸

注意:RouterOS的当前的CRS3系列交换机,ECMP是在v7版本后可以下发给交换机芯片处理的,但PCC无法下发交换芯片,就需要CPU来抗了(可以选择CCR1072,或者多核心,高频率的x86服务器),能跑多少流量我不清楚,只是闲聊下。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下