ECMP là gì
Equal-cost multi-path routing (ECMP) hay Equal Cost Multiple Path là 1 tính năng cho phép thiết bị mạng như router, switch hay firewall sử dụng nhiều đường dẫn tốt nhất có chi phí bằng nhau đến cùng 1 đích. Các tuyến đường này sẽ được ECMP đưa vào bảng định tuyến và cân bằng tải lưu lượng để tăng băng thông của hệ thống.
Nếu không có ECMP, nếu có nhiều tuyến đường có chi phí ngang nhau đến cùng một đích, các thiết bị mạng sẽ chọn một trong các tuyến đường đó từ bảng định tuyến và thêm nó vào bảng chuyển tiếp của nó (Forwarding Information Base FIB), nó sẽ không sử dụng bất kỳ tuyến đường nào khác trừ khi có sự cố trong tuyến đường đã chọn.
Cân bằng tải ECMP được thực hiện ở cấp phiên (session), không phải ở cấp gói (Packet) – thời điểm bắt đầu một phiên mới là khi thiết bị mạng (ECMP) chọn một đường dẫn chi phí ngang nhau để truyền tải gói tin.
Các thiết bị, giao thức hỗ trợ ECMP
ECMP được hỗ trợ trên hầu hết các thiết bị mạng layer 3 như router, switch hay firewall hay các thiết bị ảo hóa. Hai mô hình phổ biến nhất sử dụng ECMP là kiến trúc Leaf-Spine và cân bằng tải lưu lượng giữa 2 đường internet.
ECMP cũng được hỗ trợ trên các giao diện lớp 3, Layer 3 subinterface, VLAN, tunnel và giao diện Aggregated Ethernet.
ECMP có thể được cấu hình cho các giao thức khác như định tuyến tĩnh và các giao thức định tuyến động như OSPF, BGP…
Ưu điểm của ECMP
Tính năng ECMP cho phép cân bằng tải nhiều đường dẫn có chi phí bằng nhau đến 1 đích trong Forwarding table của thiết bị, số lượng route tối đa của ECMP phụ thuộc vào từng hãng và từng dòng thiết bị. Các ưu điểm chính của ECMP:
- Cân bằng tải các phiên đến cùng một đích qua nhiều liên kết có chi phí ngang nhau.
- Sử dụng hiệu quả tất cả băng thông có sẵn trên các liên kết đến cùng một đích thay vì để một số liên kết không được sử dụng.
- Tự động chuyển lưu lượng truy cập đến thành viên ECMP khác đến cùng đích nếu một route bị lỗi, thay vì phải đợi giao thức định tuyến hoặc bảng RIB chọn một đường dẫn / tuyến đường thay thế. Điều này có thể giúp giảm thời gian chết khi liên kết bị lỗi.
Các thuật toán cân bằng tải sử dụng trong ECMP
Hash-based algorithms prioritize session stickiness
Các thuật toán IP Modulo và IP Hash sử dụng hàm băm dựa trên thông tin trong tiêu đề gói, chẳng hạn như địa chỉ IP nguồn và đích, Port nguồn và port đích để lựa chọn tuyến đường sử dụng. Bởi vì tiêu đề của mỗi flow trong một phiên nhất định chứa cùng một nguồn và thông tin đích, nên các flow này sẽ được ưu tiên trên cùng 1 interface.
Tương tự, việc sử dụng IP Hash chỉ dựa trên địa chỉ IP nguồn khiến tất cả các phiên thuộc cùng một địa chỉ IP nguồn luôn sử dụng cùng một route. Thuật toán IP Modulo và IP Hash được sử dụng khi quản trị viên muốn các flow trong cùng 1 phiên luôn được truyền tải trên 1 interface. Điều này cho phép quản trị viên dễ dàng trong việc xử lý sự cố.
Balanced algorithm prioritizes load balancing
Thuật toán Balanced Round Robin phân phối các phiên cân bằng nhau giữa các interface, trong đó các phiên sẽ được đẩy qua lần lượt từng interface và tiếp tục như 1 vòng lặp. Ngoài ra, nếu các tuyến đường mới được thêm vào hoặc xóa khỏi nhóm ECMP (ví dụ: nếu một đường dẫn trong nhóm bị hỏng), bộ định tuyến sẽ cân bằng các phiên qua tất cả các liên kết trong nhóm (bao gồm cả interface mới thêm vào).
Weighted algorithm prioritizes link capacity and/or speed
Các thuật toán Weighted Round Robin cân bằng tải lưu lượng giữa các interface dựa trên trọng số Weights (có giá trị từ 1-255; mặc định 100) được thiết lập trên từng interface, được sử dụng trong trường hợp các liên kết có băng thông hay tốc độ khác nhau, hoặc khi quản trị viên muốn sử dụng 1 đường chạy chính và 1 đường dự phòng.
Ví dụ: doanh nghiệp có 2 đường internet: ISP1 có băng thông 100 Mbps, ISP2 có băng thông 200 Mpbs. Sau khi cấu hình 2 default route sử dụng ECMP, router sẽ đưa cả 2 default route này vào bảng định tuyến. Tuy nhiên do băng thông 2 ISP khác nhau nên để cân bằng tải lưu lượng, bạn có thể cấu hình tham số Weights trên ISP2 là 200, ISP1 là 100. Tỷ lệ trọng số 2: 1 cho phép bộ định tuyến gửi số phiên trên ISP2 cao gấp 2 lần ISP1, lúc này lưu lượng sẽ được cân bằng tải trên 2 ISP khi tính đến băng thông và tốc độ.
Tuy nhiên do giao thức ECMP cân bằng tải dựa trên phiên, nên việc sử dụng thuật toán Weighted Round Robin sẽ chỉ mang tính tương đối, không hoàn toàn theo tỉ lệ Weights được cấu hình trên thiết bị.