因為在RouterOS中,所有的port都可以是WAN或LAN,所以我們可以將其中幾個port當成WAN來使用,這時候如果有申請不同ISP的線路,就可以做負載平衡(同一個ISP則意義不大,除非都是單獨拉專線,否則真要斷線也是一起斷)。
要在RouterOS達成Load Balancing,最後一步一定是透過Policy Route來決定路由,但如何作分配呢?有三種作法可以參考:
一、ECMP (Equal Cost Multi-Path)
有關ECMP的詳細步驟,可以參考MikroTik ECMP load balancing with masquerade
主要是在Default Gateway將所有可連接的Gateway寫在一起
/ip route
add dst-address=0.0.0.0/0 gateway=10.1.1.254,10.2.1.254,10.3.1.254 check-gateway=ping
Pros.擁有簡單的容錯移轉機制,一旦其中一條路徑斷了,自然改由其他剩餘有效路徑來平均分配
Cons
.要特別注意並增加連線至RouterOS本身的Policy Route,因為來自A路徑的封包可能會經由B路徑出去,這時原本預計收到來自A路徑封包的設備會丟棄來自B路徑封包,造成連線失敗。
.有些ISP內的主機(譬如DNS)僅提供給該ISP的線路,這時經由不同ISP線路出去的request可能不被接受。
二、NTH <第N個封包或連線>
有關NTH的詳細步驟,可以參考MikroTik NTH load balancing with masquerade
主要是在防火牆標記這裡,指定封包或連線的次序。
譬如我們利用NTH=3,1來讓每三個封包中的第一個標記為Gateway_1;利用NTH=3,2來讓每三個封包中的第二個標記為Gateway_2;利用NTH=3,3來讓每三個封包中的第三個標記為Gateway_3
/ip firewall mangle
add action=mark-packet chain=prerouting new-packet-mark=Gateway_1 nth=3,1 passthrough=yes
add action=mark-packet chain=prerouting new-packet-mark=Gateway_2 nth=3,2 passthrough=yes
add action=mark-packet chain=prerouting new-packet-mark=Gateway_3 nth=3,3 passthrough=yes
或者也可以透過順序的調整,利用NTH=3,1來讓每三個封包中的第一個標記為Gateway_1;利用NTH=2,1來讓後面兩個封包中的第一個標記為Gateway_2,第二個標記為Gateway_3
/ip firewall mangle
add action=mark-packet chain=prerouting new-packet-mark=Gateway_1 nth=3,1 passthrough=no
add action=mark-packet chain=prerouting new-packet-mark=Gateway_2 nth=2,1 passthrough=no
add action=mark-packet chain=prerouting new-packet-mark=Gateway_3
Pros.能完整的根據區網內的所有來源平均分配負載
Cons
.區網內的Server對外服務要注意路徑
.如果任何一條路徑斷了,其設定的路由標記將無作用,改由Default Route出去,增加Default Route的負載。
三、PCC (Per Connection Classifier)
有關PCC的詳細步驟,可以參考MikroTik PCC,如果想了解PCC運作原理,可以參考How PCC Works,簡單說就是把Source IP、Source Port、Destination IP、Destination Port取需要的整數相加後,再將其總和的個位數除以指定值,而得到的餘數來作決定。
主要是在防火牆標記這裡,根據來源/目標的位置與埠的組合運算,來各別指定給予連線標記。
譬如我們將Source IP與Source Port相加後,其總和的個位數除以3得到的餘數若為0,則該連線標記為Gateway_1;若為1,則該連線標記為Gateway_2;若為2,則該連線標記為Gateway_3
/ip firewall mangle
add action=mark-connection chain=prerouting new-connection-mark=Gateway_1 per-connection-classifier=src-address-and-port:3/0
add action=mark-connection chain=prerouting new-connection-mark=Gateway_2 per-connection-classifier=src-address-and-port:3/1
add action=mark-connection chain=prerouting new-connection-mark=Gateway_3 per-connection-classifier=src-address-and-port:3/2
Pros.因為判斷條件變化性多,當區網內設備夠多時,能以類似Random的方式動態平均分配負載
Cons
.因為是採用餘數制,區網內設備少時,有機會負載集中落在其中幾條,譬如10.0.0.3:443與10.0.0.6:80就落在同一條。
.如果任何一條路徑斷了,其設定的路由標記將無作用,改由Default Route出去,增加Default Route的負載。
延伸閱讀
.[開箱] MikroTik CCR1016-12G
.MikroTik RouterOS VPN (PPTP/L2TP/OpenVPN/SSTP/SSH Tunnel)
.MikroTik RouterOS QoS (Queue/HTB/PCQ)
.MikroTik RouterOS IGMP Proxy w/ CHT MOD
.MikroTik RouterOS Hairpin NAT - Pros & Cons
.MikroTik RouterOS Hotspot
.MikroTik RouterOS User Manager - RADIUS
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.