Cấu hình cân bằng tải ECMP trên RouterOS
ECMP (Equal-Cost Multi-Path) là kỹ thuật cho phép RouterOS sử dụng nhiều đường đi có cùng "chi phí" (cost) đến cùng một đích để phân tải lưu lượng. Đây là cách triển khai load balancing đơn giản và phổ biến nhất trên MikroTik khi bạn có từ 2 đường WAN trở lên — không cần script, không cần thêm phần mềm.
1. ECMP hoạt động như thế nào?
Khi bạn tạo nhiều route mặc định (0.0.0.0/0) có cùng khoảng cách (distance) và cùng gateway khác nhau, RouterOS sẽ coi chúng là các đường ngang giá trị và chia lưu lượng qua tất cả:
- Theo flow (connection): Mỗi kết nối mới được gán cho một đường dựa trên hash của địa chỉ nguồn/đích. Điều này đảm bảo một phiên (session) không bị xé lẻ qua 2 đường WAN — rất quan trọng với HTTPS, game, streaming.
- Không phải round-robin theo gói: ECMP không gửi từng gói lần lượt qua từng đường, vì sẽ làm vỡ kết nối TCP.
Sự khác biệt chính so với các phương pháp load balancing qua mark-routing (PCC) là ECMP không cần mangle rules — chỉ cần thêm nhiều default route. Đơn giản hơn nhiều nhưng ít kiểm soát tinh chỉnh hơn.
2. Yêu cầu chuẩn bị
- Router chạy RouterOS v6.x hoặc v7.x (bài này dùng v7, cú pháp tương thích cả hai).
- Tối thiểu 2 đường WAN đã cấu hình IP tĩnh (hoặc DHCP) và lên mạng bình thường.
- Quyền full (admin) trên router.
Ví dụ trong bài, ta có:
eth2= WAN1, IP1.1.1.1/24, gateway1.1.1.254(ISP 1)eth3= WAN2, IP2.2.2.2/24, gateway2.2.2.254(ISP 2)eth1= LAN, IP192.168.1.1/24
3. Cấu hình từng bước
Bước 1: Kiểm tra các route mặc định hiện có
Mở Winbox hoặc SSH, kiểm tra bảng route:
/ip route printNếu đã có route mặc định cũ, xóa đi để tránh xung đột:
/ip route remove [find where dst-address=0.0.0.0/0]Bước 2: Thêm 2 default route với cùng distance
/ip route add dst-address=0.0.0.0/0 gateway=1.1.1.254 distance=1 check-gateway=ping
/ip route add dst-address=0.0.0.0/0 gateway=2.2.2.254 distance=1 check-gateway=pingLưu ý quan trọng: Cả 2 route phải có cùng
distance(ở đây là 1). Nếu distance khác nhau, route có distance nhỏ hơn sẽ thắng và không có ECMP — chỉ có failover.
check-gateway=ping giúp router tự bỏ route khi một ISP mất kết nối (tự động chuyển toàn bộ lưu lượng sang đường còn lại).
Bước 3: Xác nhận ECMP đã hoạt động
/ip route printBạn sẽ thấy một dòng AS (Active Static) đại diện cho cả 2 đường, với cột gateway hiển thị dạng 1.1.1.254 2.2.2.254 — tức là ECMP đang hoạt động. Dòng này có cờ a (active).
Nếu bạn thấy 2 dòng riêng biệt cả 2 đều active cùng distance, thì cũng là ECMP hoạt động (một số phiên bản hiển thị vậy).
Bước 4: Kiểm tra phân tải
Xem bảng kết nối để xác nhận lưu lượng được chia đều:
/ip firewall connection printHoặc dùng tính năng Torch trong Winbox (menu Tools → Torch, chọn interface WAN) để quan sát tốc độ trên từng đường.
4. Tùy chọn nâng cao
4.1. Điều chỉnh thuật toán hash
RouterOS v7 hỗ trợ cấu hình cách ECMP chọn đường qua ipv4 connect hash:
/ipv4 settings set allow-fast-path=yes
/ipv4 route set ecmp-allow-... Thực tế, hành vi hash mặc định (theo src/dst IP) phù hợp với đa số nhu cầu, không cần chỉnh.
4.2. Kết hợp failover nghiêm ngặt
Nếu muốn một đường chỉ dùng làm dự phòng (không chia tải), set distance khác nhau — ví dụ WAN1 distance 1, WAN2 distance 2. Khi đó WAN2 chỉ nhận lưu lượng khi WAN1 chết (failover, không phải ECMP).
4.3. ECMP + NAT
ECMP hoạt động tốt với Masquerade thông thường:
/ip firewall nat add chain=srcnat out-interface=eth2 action=masquerade
/ip firewall nat add chain=srcnat out-interface=eth3 action=masqueradeNếu bạn dùng IP tĩnh phía WAN, có thể thay masquerade bằng src-nat với to-addresses tương ứng.
5. Lưu ý và hạn chế
- Không có sticky load balancing theo IP nguồn: ECMP hash theo cặp src/dst, nên thứ tự đường có thể thay đổi giữa các lần kết nối. Với các ứng dụng cần cùng IP xuất ra (như VPN, một số game), cần dùng PCC + mark routing thay thế.
- DNS / CDN: Một số dịch vụ có thể nhìn thấy bạn đổi IP thường xuyên. Nếu gặp vấn đề, hãy cân nhắc
ip route ruleđể ép một dải IP đi qua một đường cố định. - Không cân bằng theo tốc độ WAN khác nhau: ECMP chia đều theo số route, không theo băng thông. Nếu WAN1 100Mbps và WAN2 10Mbps, lưu lượng vẫn chia gần như 50/50 về số flow. Với WAN chênh lệch lớn, nên dùng PCC có trọng số hoặc mark-based.
- check-gateway tiêu tốn chút tài nguyên: ping định kỳ mỗi gateway, chấp nhận được với hầu hết router.
6. So sánh nhanh: ECMP vs PCC
| Tiêu chí | ECMP | PCC (Per-Connection Classifier) |
|---|---|---|
| Độ phức tạp | Thấp (chỉ thêm route) | Cao (mangle + marks) |
| Cần mangle rules | Không | Có |
| Phân tải theo băng thông | Không (đều theo route) | Có thể tùy chỉnh |
| Sticky theo source IP | Không | Có thể |
| Phù hợp khi | 2 WAN tương đương nhau | WAN chênh lệch, cần kiểm soát |
7. Kết luận
ECMP là giải pháp nhanh, gọn, đáng tin cậy để cân bằng tải 2+ đường WAN trên RouterOS. Chỉ với 2 lệnh route add, bạn đã có phân tải kèm failover tự động (nhờ check-gateway). Khi nhu cầu phức tạp hơn (WAN chênh lệch băng thông, cần giữ nguyên IP nguồn), hãy nâng cấp lên PCC — nhưng với phần lớn hộ gia đình và văn phòng nhỏ, ECMP là điểm khởi đầu lý tưởng.
Chúc bạn cấu hình thành công! Nếu có thắc mắc, đừng ngại để lại bình luận bên dưới nhé.