Mikrotik 4 WAN Load Balancing using PCC method
Following is a complete script for Mikrotik to combine/Load Balance 4 WAN links OR DSL links , and the script idea is taken from
http://wiki.mikrotik.com/wiki/Manual:PCC#Example
In this example I have used MikrotikT RB750 5 ports router. 4 ports were connected with Four DSL Routers, and 5th port was connected with User LAN. All DSL lines have un-equal speed. Also don’t forget to rename the interface names accordingly.
In my personnel experience , If users request are directly hitting Mikrotik configured with PCC , then you will get good load balancing. Use src-address as classifier, this way you will get rid of problems like https/broken link, streaming issues etc. Load balancing using this PCC technique (src-address) will be effective and balanced approach when more and more connections (from clients) that occurred. I also recommend to use SQUID proxy server along with mikrotik , either parallel or in front or backend , for better response time and it will also increase good browsing experience to users.
If somehow you are not satisfied with the src-address approach,play with the PCC-Classifier,
Try both addresses and ports as the classifier. While this will randomize things the most and in theory give you the most fair allocation of bandwidth, BUT there is also a good chance that it will break certain things like banking web sites and some forums. This is because often times a HTTP requests will generate several connections, so there is a chance that some requests may go out a different route than the initial one, and that will break secure web sites. For that reason I usually stick with src-address PCC load balancing.
02 | add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=Local |
03 | add address=192.168.1.2/24 network=192.168.1.0 broadcast=192.168.1.255 interface=WAN1 |
04 | add address=192.168.2.2/24 network=192.168.2.0 broadcast=192.168.2.255 interface=WAN2 |
05 | add address=192.168.3.2/24 network=192.168.3.0 broadcast=192.168.3.255 interface=WAN3 |
06 | add address=192.168.4.2/24 network=192.168.4.0 broadcast=192.168.4.255 interface=WAN4 |
09 | add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=WAN1_conn |
10 | add chain=input in-interface=WAN2 action=mark-connection new-connection-mark=WAN2_conn |
11 | add chain=input in-interface=WAN3 action=mark-connection new-connection-mark=WAN3_conn |
12 | add chain=input in-interface=WAN4 action=mark-connection new-connection-mark=WAN4_conn |
14 | add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1 |
15 | add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2 |
16 | add chain=output connection-mark=WAN3_conn action=mark-routing new-routing-mark=to_WAN3 |
17 | add chain=output connection-mark=WAN4_conn action=mark-routing new-routing-mark=to_WAN4 |
19 | add chain=prerouting dst-address=192.168.1.0/24 action=accept in-interface=Local |
20 | add chain=prerouting dst-address=192.168.2.0/24 action=accept in-interface=Local |
21 | add chain=prerouting dst-address=192.168.3.0/24 action=accept in-interface=Local |
22 | add chain=prerouting dst-address=192.168.4.0/24 action=accept in-interface=Local |
24 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes |
25 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes |
26 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/2 action=mark-connection new-connection-mark=WAN3_conn passthrough=yes |
27 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/3 action=mark-connection new-connection-mark=WAN4_conn passthrough=yes |
28 | add chain=prerouting connection-mark=WAN1_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN1 |
29 | add chain=prerouting connection-mark=WAN2_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN2 |
30 | add chain=prerouting connection-mark=WAN3_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN3 |
31 | add chain=prerouting connection-mark=WAN4_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN4 |
34 | add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=to_WAN1 check-gateway=ping |
35 | add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=to_WAN2 check-gateway=ping |
36 | add dst-address=0.0.0.0/0 gateway=192.168.3.1 routing-mark=to_WAN3 check-gateway=ping |
37 | add dst-address=0.0.0.0/0 gateway=192.168.4.1 routing-mark=to_WAN4 check-gateway=ping |
39 | add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 check-gateway=ping |
40 | add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 check-gateway=ping |
41 | add dst-address=0.0.0.0/0 gateway=192.168.3.1 distance=3 check-gateway=ping |
42 | add dst-address=0.0.0.0/0 gateway=192.168.4.1 distance=4 check-gateway=ping |
45 | add chain=srcnat out-interface=WAN1 action=masquerade |
46 | add chain=srcnat out-interface=WAN2 action=masquerade |
47 | add chain=srcnat out-interface=WAN3 action=masquerade |
48 | add chain=srcnat out-interface=WAN4 action=masquerade |
Now Configure DNS server so users can resolve hostnames,
1 | /ip dns set allow-remote-requests=yes cache-max-ttl=1w cache-size=5000KiB max-udp-packet-size=512 servers=221.132.112.8,8.8.8.8 |
All Done ! Now Test the link by putting user load, the more multiple users load you put on it, the better Load Balance result you will get
PCC WITH UN-EQUAL WAN LINKS
If you have Un-Equal WAN Links, for example WAN,1,2,3 are of 4MB and WAN,4 is of 8 Mb, and you want to force MT to use WAN4 link more then other because of its capacity, Then you have to Add more PCC rules assigning the same two marks to a specific link i.e WAN4 , something like
Code:
1 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes |
2 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes |
3 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/2 action=mark-connection new-connection-mark=WAN3_conn passthrough=yes |
4 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/3 action=mark-connection new-connection-mark=WAN4_conn passthrough=yes |
5 | add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:4/4 action=mark-connection new-connection-mark=WAN4_conn passthrough=yes |
Source: http://aacable.wordpress.com/2011/06/04/mikrotik-4-wan-load-balance-pcc-complete-script-by-zaib/#
Tidak ada komentar:
Posting Komentar