ECMP tới một VTEP: entropi VXLAN đến từ đâu
Một VTEP từ xa có thể có vài chặng kế tiếp cùng chi phí, nhưng một /32 không làm chúng trở nên hữu ích. Việc phân phối phụ thuộc vào tuple bên ngoài và hàm băm cổng nguồn.
Khẳng định rằng đa đường cùng chi phí là vô nghĩa đối với một tuyến máy chủ được lặp lại đủ nhiều để nghe có vẻ đúng. Một /32 chọn địa chỉ đích, và không gì trong lựa chọn đó giới hạn gói tin vào một liên kết vật lý duy nhất. Khi đích là một đầu xa của đường hầm VXLAN, vài chặng kế tiếp có thể mang các luồng lớp phủ khác nhau, và việc chúng có làm vậy hay không phụ thuộc vào những gì hàm băm chuyển tiếp được phép thấy. Phần còn lại là số học trên tiêu đề ngoài, không phải thuộc tính của tiền tố.
Tuyến quyết định khả năng tiếp cận; hàm băm quyết định phân phối.
Lầm tưởng: /32 nghĩa là một đường duy nhất
OSPF có thể báo cáo khả năng tiếp cận cùng chi phí tới một loopback VTEP trong khi bảng chuyển tiếp cài đặt một nhóm chặng kế tiếp cho cùng tiền tố đó. Giao thức cung cấp các ứng viên; nền tảng quyết định ứng viên nào dùng được và gói tin được gán ra sao. Không giao thức định tuyến nào tính hàm băm mới cho từng khung được đóng gói. Chính sự tách biệt đó giải thích vì sao hai bộ định tuyến có tuyến giống nhau vẫn có thể phân phối lưu lượng khác nhau.
Hãy xem mục chuyển tiếp đã cài đặt chứ không chỉ màn hình hiển thị tuyến, vì giới hạn phần cứng hoặc chính sách có thể loại bỏ những ứng viên mà mặt phẳng điều khiển vẫn đang quảng bá.
Entropi phải đến từ đâu
Giữa hai VTEP, địa chỉ nguồn và đích bên ngoài giữ nguyên, và cổng đích UDP là 4789 trong một triển khai thông thường. Một hàm băm chỉ đọc những giá trị đó thấy đầu vào không đổi và trả về một đường không đổi. Một thứ gì đó trong tiêu đề ngoài phải thay đổi, và VTEP là thiết bị có thể làm điều đó.
RFC 7348 đề xuất lấy cổng nguồn UDP từ các trường bên trong khung được đóng gói. Khi đó các cuộc hội thoại bên trong khác nhau tạo ra các tuple bên ngoài khác nhau, điều này cho một hàm băm truyền tải thông thường thứ để làm việc.
Nếu phần cứng chuyển tiếp có thể nhìn sâu hơn vào gói tin, hãy kiểm tra những trường bên trong nào mà cách triển khai hàm băm của nó hỗ trợ. Không nên coi độ sâu đó là yêu cầu cho mọi thiết bị underlay, vì chỉ sự thay đổi của cổng nguồn đã bộc lộ những khác biệt hữu ích.
Hãy kiểm tra hàm băm bạn thực sự nhận được
Hãy đo thay vì giả định. Bắt một mẫu lưu lượng được đóng gói và xem các cổng nguồn bên ngoài, rồi so sánh kết quả với các mục chuyển tiếp và bộ đếm theo từng liên kết.
show ip route 10.255.0.5/32 show ip cef 10.255.0.5 internal ip route show 10.255.0.5 tcpdump -ni eth0 -c 200 'udp port 4789' -vv
Một cổng nguồn xuất hiện qua nhiều cuộc hội thoại bên trong khác nhau nghĩa là VTEP không thay đổi trường đó, và không mức tinh chỉnh underlay nào phân tán được tải. Nhiều cổng khác nhau trong khi chỉ một chặng kế tiếp được dùng lại chỉ về nhóm chuyển tiếp.
Ghi lại các bộ đếm trước và sau mẫu, và để ý lưu lượng không liên quan chia sẻ các uplink, nếu không các con số sẽ trông tệ hơn mức hàm băm xứng đáng.
Phân phối đều không có nghĩa là gì
Hàm băm theo luồng được thiết kế để giữ một cuộc hội thoại trên một đường khi đầu vào và tập đường khả dụng không đổi. Vì vậy một lần truyền TCP lớn không gộp mọi uplink, và thêm liên kết sẽ không làm luồng đó nhanh hơn. Đây là hành vi bình thường, không phải lỗi.
Nhiều luồng cũng có thể va chạm trên cùng một chặng kế tiếp một cách tình cờ. Một mẫu ngắn có thể trông rất lệch trong khi hàm băm đang làm đúng những gì nó được cấu hình, và một sự cố liên kết hoặc thay đổi tập đường có thể di chuyển các luồng đã thiết lập giữa lúc truyền.
Hãy thử với các cặp địa chỉ, giao thức truyền tải và tốc độ đại diện theo một kế hoạch đã được phê duyệt, và giữ việc chọn thành viên tổng hợp liên kết tách khỏi việc chọn đa đường có định tuyến, vì hai tầng băm tạo thành mẫu riêng của chúng. Một nhóm chặng kế tiếp đã đầy cộng với entropi bên ngoài nhìn thấy được giải thích kết quả; độ dài tiền tố thì không.