minhvk
06-17-2023, 10:48 AM
http://switch-router.com/uploads/forum/minhvk/LoadBalancingPPPoE.png
Những điểm khác biệt trong cấu hình cân bằng tải RouterOS7 so với RouterOS6:
- Tạo bảng định tuyến thủ công. Đối với RouterOS6, router sẽ tự động tạo khi chúng ta cấu hình mark-routing.
- Khi cấu hình định tuyến luồng lưu lượng tương ứng, phương pháp check-gateway là "none" hoặc không chọn thay vì Ping cho các giao diện Point-to-Point trên RouterOS6. Việc dò trạng thái kết nối đến gateway sẽ dựa vào PPP LCP. Trường hợp cần dò Internet cho từng đường( nợ cước, sự cố hạ tầng ISP,....) thì cần kết hợp Recursive Routing.
Trong bài viết này chúng ta sẽ sử dụng phương pháp PCC để cấu hình cân bằng tải.
KỸ THUẬT PCC (PER CONNECTION CLASSIFIER):
+ PCC sử dụng thuật toán HASH để tạo ra một giá trị 32-bit từ một vài trường của IP Header: source address, source port, destination address, destination port.. Sau đó sẽ tiến hành chia dư với mẫu số chia là tỉ lệ cân bằng tải, tử số là giá trị thu được từ thuật toán HASH. Kết quả sẽ là giá trị để phân biệt giữa các luồng lưu lượng.
+ Tiếp đến sẽ đánh dấu phân biệt các luồng đó bằng mark connection và mark routing. Cuối cùng sẽ định tuyến ra đường truyền tương ứng.
Chúng ta sẽ chia việc cấu hình thành 3 bước:
- Tạo bảng định tuyến tương ứng với đường truyền.
- Phân loại luồng lưu lượng.
- Định tuyến luồng lưu lượng tương ứng với đường truyền.
1. Tạo bảng định tuyến
/routing table
add disabled=no fib name=wan1
add disabled=no fib name=wan2
Chúng ta sẽ tạo 2 bảng định tuyến tương ứng với 2 đường truyền wan1,wan2.
2. Phân loại luồng lưu lượng: Sẽ có 2 loại lưu lượng cần quan tâm đối với cân bằng tải: lưu lượng từ bên ngoài internet đi vào router và lưu lượng nội bộ đi ra ngoài internet.
2.1 Lưu lượng từ bên ngoài router:
/ip firewall mangle
add action=mark-connection chain=input connection-mark=no-mark in-interface=\
pppoe-out1 new-connection-mark=inwan1 passthrough=yes
add action=mark-connection chain=input connection-mark=no-mark in-interface=\
pppoe-out2 new-connection-mark=inwan2 passthrough=yes
add action=mark-routing chain=output connection-mark=inwan1 new-routing-mark=\
wan1 passthrough=no
add action=mark-routing chain=output connection-mark=inwan2 new-routing-mark=\
wan2 passthrough=no
Hai dòng lệnh "add" đầu tiên có nhiệm vụ ghi nhớ và đánh dấu "inwan1","inwan2" các lưu lượng đi vào đường truyền tương ứng.
Hai dòng lệnh "add" cuối có nhiệm vụ liên kết luồng lưu lượng đã được đánh dấu này vào bảng định tuyến của từng đường truyền tương ứng (wan1,wan2).
Việc này sẽ đảm bảo việc truy cập các dịch vụ từ xa vào Router một cách bình thường không bị ảnh hưởng bởi việc cấu hình cân bằng tải.
2.2 Lưu lượng đi ra ngoài Internet:
/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
dst-address-type=!local in-interface=bridge1 new-connection-mark=outwan1 \
passthrough=yes per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-connection chain=prerouting connection-mark=no-mark \
dst-address-type=!local in-interface=bridge1 new-connection-mark=outwan2 \
passthrough=yes per-connection-classifier=both-addresses-and-ports:2/1
add action=mark-routing chain=prerouting connection-mark=outwan1 in-interface=\
bridge1 new-routing-mark=wan1 passthrough=no
add action=mark-routing chain=prerouting connection-mark=outwan2 in-interface=\
bridge1 new-routing-mark=wan2 passthrough=no
Hai dòng lệnh "add" đầu tiên có nhiệm vụ phân loại lưu lượng thành 2 loại bởi PCC. Ở đây chúng ta đang dùng PCC both-addresses-and-ports, tức là PCC sẽ phân loại lưu lượng là khác nhau khi có sự thay đổi ở một trong các yếu tố source,destination address và ports của kết nối. Việc này sẽ giúp chúng ta có thể tân dụng được băng thông của cả 2 đường truyền trong một phiên kết nối (Có nhiều dịch vụ sẽ không hỗ trợ và dẫn đến kết nối không ổn định đối với dịch vụ đó). Chế độ ổn đinh và phù hợp hầu hết các trường hợp là Both-addresses, Router sẽ gửi dữ liệu ra đường truyền khác khi có sự thay đổi ở source hoặc destination address của kết nối.
Hai dòng lệnh "add" cuối có nhiệm vụ liên kết các luồng lưu lượng đã được phân loại vào bảng định tuyến của các đường truyền tương ứng. Cụ thể là lưu lượng được phân loại "outwan1" sẽ được liên kết vào bảng định tuyến của đường truyền 1 ("wan1") và lưu lượng này sẽ được gửi ra đường truyền 1, tương tự với lưu lượng "outwan2".
3. Định tuyến lưu lượng
/ip route
add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\
pppoe-out1 pref-src=0.0.0.0 routing-table=wan1 scope=30 \
suppress-hw-offload=no target-scope=10
add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\
pppoe-out2 pref-src=0.0.0.0 routing-table=wan2 scope=30 \
suppress-hw-offload=no target-scope=10
Sau khi đã được phân loại và liên kết vào bảng định tuyến ở phần trước. Phần này chúng ta sẽ định tuyến các lưu lượng đã được phân loại ra đường truyền tương ứng.
*** Bài viết này chỉ đề cập đến việc cấu hình cân bằng tải, các cấu hình internet cơ bản sẽ không được đề cập. Các bạn có thể tham khảo cấu hình Internet cơ bản ở đây: https://drive.google.com/file/d/1XfB8ntTIdqcjb-GmtOcJURnnKGIfswNR/view?usp=sharing
KIỂM TRA
Mỗi đường truyền pppoe-out1 và pppoe-out2 có băng thông 5Mbps.
Tải xuống
https://switch-router.com/uploads/forum/minhvk/downloadpcc.png
Tải lên
https://switch-router.com/uploads/forum/minhvk/pccuploadpcc.png
Những điểm khác biệt trong cấu hình cân bằng tải RouterOS7 so với RouterOS6:
- Tạo bảng định tuyến thủ công. Đối với RouterOS6, router sẽ tự động tạo khi chúng ta cấu hình mark-routing.
- Khi cấu hình định tuyến luồng lưu lượng tương ứng, phương pháp check-gateway là "none" hoặc không chọn thay vì Ping cho các giao diện Point-to-Point trên RouterOS6. Việc dò trạng thái kết nối đến gateway sẽ dựa vào PPP LCP. Trường hợp cần dò Internet cho từng đường( nợ cước, sự cố hạ tầng ISP,....) thì cần kết hợp Recursive Routing.
Trong bài viết này chúng ta sẽ sử dụng phương pháp PCC để cấu hình cân bằng tải.
KỸ THUẬT PCC (PER CONNECTION CLASSIFIER):
+ PCC sử dụng thuật toán HASH để tạo ra một giá trị 32-bit từ một vài trường của IP Header: source address, source port, destination address, destination port.. Sau đó sẽ tiến hành chia dư với mẫu số chia là tỉ lệ cân bằng tải, tử số là giá trị thu được từ thuật toán HASH. Kết quả sẽ là giá trị để phân biệt giữa các luồng lưu lượng.
+ Tiếp đến sẽ đánh dấu phân biệt các luồng đó bằng mark connection và mark routing. Cuối cùng sẽ định tuyến ra đường truyền tương ứng.
Chúng ta sẽ chia việc cấu hình thành 3 bước:
- Tạo bảng định tuyến tương ứng với đường truyền.
- Phân loại luồng lưu lượng.
- Định tuyến luồng lưu lượng tương ứng với đường truyền.
1. Tạo bảng định tuyến
/routing table
add disabled=no fib name=wan1
add disabled=no fib name=wan2
Chúng ta sẽ tạo 2 bảng định tuyến tương ứng với 2 đường truyền wan1,wan2.
2. Phân loại luồng lưu lượng: Sẽ có 2 loại lưu lượng cần quan tâm đối với cân bằng tải: lưu lượng từ bên ngoài internet đi vào router và lưu lượng nội bộ đi ra ngoài internet.
2.1 Lưu lượng từ bên ngoài router:
/ip firewall mangle
add action=mark-connection chain=input connection-mark=no-mark in-interface=\
pppoe-out1 new-connection-mark=inwan1 passthrough=yes
add action=mark-connection chain=input connection-mark=no-mark in-interface=\
pppoe-out2 new-connection-mark=inwan2 passthrough=yes
add action=mark-routing chain=output connection-mark=inwan1 new-routing-mark=\
wan1 passthrough=no
add action=mark-routing chain=output connection-mark=inwan2 new-routing-mark=\
wan2 passthrough=no
Hai dòng lệnh "add" đầu tiên có nhiệm vụ ghi nhớ và đánh dấu "inwan1","inwan2" các lưu lượng đi vào đường truyền tương ứng.
Hai dòng lệnh "add" cuối có nhiệm vụ liên kết luồng lưu lượng đã được đánh dấu này vào bảng định tuyến của từng đường truyền tương ứng (wan1,wan2).
Việc này sẽ đảm bảo việc truy cập các dịch vụ từ xa vào Router một cách bình thường không bị ảnh hưởng bởi việc cấu hình cân bằng tải.
2.2 Lưu lượng đi ra ngoài Internet:
/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark \
dst-address-type=!local in-interface=bridge1 new-connection-mark=outwan1 \
passthrough=yes per-connection-classifier=both-addresses-and-ports:2/0
add action=mark-connection chain=prerouting connection-mark=no-mark \
dst-address-type=!local in-interface=bridge1 new-connection-mark=outwan2 \
passthrough=yes per-connection-classifier=both-addresses-and-ports:2/1
add action=mark-routing chain=prerouting connection-mark=outwan1 in-interface=\
bridge1 new-routing-mark=wan1 passthrough=no
add action=mark-routing chain=prerouting connection-mark=outwan2 in-interface=\
bridge1 new-routing-mark=wan2 passthrough=no
Hai dòng lệnh "add" đầu tiên có nhiệm vụ phân loại lưu lượng thành 2 loại bởi PCC. Ở đây chúng ta đang dùng PCC both-addresses-and-ports, tức là PCC sẽ phân loại lưu lượng là khác nhau khi có sự thay đổi ở một trong các yếu tố source,destination address và ports của kết nối. Việc này sẽ giúp chúng ta có thể tân dụng được băng thông của cả 2 đường truyền trong một phiên kết nối (Có nhiều dịch vụ sẽ không hỗ trợ và dẫn đến kết nối không ổn định đối với dịch vụ đó). Chế độ ổn đinh và phù hợp hầu hết các trường hợp là Both-addresses, Router sẽ gửi dữ liệu ra đường truyền khác khi có sự thay đổi ở source hoặc destination address của kết nối.
Hai dòng lệnh "add" cuối có nhiệm vụ liên kết các luồng lưu lượng đã được phân loại vào bảng định tuyến của các đường truyền tương ứng. Cụ thể là lưu lượng được phân loại "outwan1" sẽ được liên kết vào bảng định tuyến của đường truyền 1 ("wan1") và lưu lượng này sẽ được gửi ra đường truyền 1, tương tự với lưu lượng "outwan2".
3. Định tuyến lưu lượng
/ip route
add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\
pppoe-out1 pref-src=0.0.0.0 routing-table=wan1 scope=30 \
suppress-hw-offload=no target-scope=10
add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\
pppoe-out2 pref-src=0.0.0.0 routing-table=wan2 scope=30 \
suppress-hw-offload=no target-scope=10
Sau khi đã được phân loại và liên kết vào bảng định tuyến ở phần trước. Phần này chúng ta sẽ định tuyến các lưu lượng đã được phân loại ra đường truyền tương ứng.
*** Bài viết này chỉ đề cập đến việc cấu hình cân bằng tải, các cấu hình internet cơ bản sẽ không được đề cập. Các bạn có thể tham khảo cấu hình Internet cơ bản ở đây: https://drive.google.com/file/d/1XfB8ntTIdqcjb-GmtOcJURnnKGIfswNR/view?usp=sharing
KIỂM TRA
Mỗi đường truyền pppoe-out1 và pppoe-out2 có băng thông 5Mbps.
Tải xuống
https://switch-router.com/uploads/forum/minhvk/downloadpcc.png
Tải lên
https://switch-router.com/uploads/forum/minhvk/pccuploadpcc.png