BGP AS Path Prepending — “đánh lừa” đường đi để khách đi theo ý bạn
Trong BGP, nhiều bạn nghĩ rằng chỉ cần quảng bá network là xong. Nhưng thực tế vận hành ISP/enterprise thường gặp một tình huống rất “CCIE”: cùng một prefix, nhưng bạn lại muốn nhiều site/neighbor chọn tuyến theo hướng khác. Thay vì chạm vào chính sách nội bộ hay xây lại topology, BGP cho phép bạn tác động vào cách đối tác nhìn “độ tin cậy” của tuyến bằng một kỹ thuật cực phổ biến: AS Path Prepending.
Trong bài học hôm nay, mình chia sẻ theo đúng tinh thần tài liệu bạn gửi: từ lý thuyết đến cách cấu hình, vì sao làm như vậy lại có tác dụng, và phải quan sát gì trên BGP để biết bạn đã làm đúng. 1) AS Path là gì và vì sao nó điều khiển chọn đường?
Trong tài liệu, thuộc tính được gọi trực tiếp là AS Path.
Ý cốt lõi:
Nếu đối tác A nhìn thấy cùng một mạng đích nhưng có hai đường:
AS Path Prepending là cách bạn cố tình làm cho tuyến của mình “trông dài hơn” để đối tác tránh. 2) Ví dụ topology trong tài liệu: 3 router quảng bá cùng network, rồi dùng prepend để “đảo lựa chọn”
Tài liệu mô tả một ví dụ gồm 3 router ở AS1 và 1 router ở AS2 (đơn giản hóa để tập trung vào bản chất).
Điểm quan trọng trong phần hình vẽ:
Trong tài liệu, đoạn then chốt là: bạn thay vì “đổi đường thật”, bạn chỉ cần thêm số lần xuất hiện AS của bạn vào AS Path khi quảng bá.
Cấu hình quan trọng ở đây là dùng route-map với câu lệnh set as-path prepend.
Tài liệu cho một đoạn minh họa rõ ý:
4.1 Cấu hình BGP cơ bản và advertise các network giống nhau
Trong tài liệu, R1/R3 đều:
Tức là: bước đầu là để đảm bảo neighbor ở AS2 nhận đủ các tuyến để so sánh. 4.2 Quan sát bảng BGP trước khi prepend (để có mốc so sánh)
Tài liệu có đoạn thể hiện một bảng BGP (R2 show ip bgp) mà bạn có thể nhận ra:
Trước khi thay chính sách, hãy chụp “baseline” AS Path / best-path. Khi kiểm chứng xong, bạn biết rõ mình đang thành công vì AS Path đã dài hơn đúng như kỳ vọng. 4.3 Thực hiện AS Path Prepending trên outbound của R1
Trong tài liệu, route-map được dùng theo dạng:
Tài liệu thể hiện rõ kỳ vọng:
Dựa đúng vào bản chất trong tài liệu (và kinh nghiệm làm lab/CCIE), AS Path Prepending phù hợp nhất khi bạn muốn:
Tài liệu dùng cách tiếp cận “đặt mốc rồi xem kết quả”:
Nếu phải chốt lại đúng với nội dung tài liệu:
Trong BGP, nhiều bạn nghĩ rằng chỉ cần quảng bá network là xong. Nhưng thực tế vận hành ISP/enterprise thường gặp một tình huống rất “CCIE”: cùng một prefix, nhưng bạn lại muốn nhiều site/neighbor chọn tuyến theo hướng khác. Thay vì chạm vào chính sách nội bộ hay xây lại topology, BGP cho phép bạn tác động vào cách đối tác nhìn “độ tin cậy” của tuyến bằng một kỹ thuật cực phổ biến: AS Path Prepending.
Trong bài học hôm nay, mình chia sẻ theo đúng tinh thần tài liệu bạn gửi: từ lý thuyết đến cách cấu hình, vì sao làm như vậy lại có tác dụng, và phải quan sát gì trên BGP để biết bạn đã làm đúng. 1) AS Path là gì và vì sao nó điều khiển chọn đường?
Trong tài liệu, thuộc tính được gọi trực tiếp là AS Path.
Ý cốt lõi:
- BGP sẽ ưu tiên tuyến có AS Path ngắn hơn khi cân nhắc đường đi đến cùng đích.
- Bạn có thể “thao túng” AS Path bằng cách AS Path Prepending để tuyến của bạn trông “dài hơn”, từ đó ảnh hưởng tới quyết định chọn tuyến của neighbor.
Nếu đối tác A nhìn thấy cùng một mạng đích nhưng có hai đường:
- Route đi qua ít AS hơn (AS Path ngắn hơn)
- Route đi qua nhiều AS hơn (AS Path dài hơn)
AS Path Prepending là cách bạn cố tình làm cho tuyến của mình “trông dài hơn” để đối tác tránh. 2) Ví dụ topology trong tài liệu: 3 router quảng bá cùng network, rồi dùng prepend để “đảo lựa chọn”
Tài liệu mô tả một ví dụ gồm 3 router ở AS1 và 1 router ở AS2 (đơn giản hóa để tập trung vào bản chất).
Điểm quan trọng trong phần hình vẽ:
- R1 và R3 là hai điểm ở AS1
- R2 là điểm ở AS2 (nhận tuyến từ AS1)
- Tất cả quảng bá cùng một mạng đích: 1.1.1.0/24 (thể hiện trong lệnh network 1.1.1.0 mask 255.255.255.0)
- Khi đó, ở AS2 sẽ tồn tại ít nhất hai tuyến có cùng đích, khác nhau chủ yếu ở độ dài AS Path.
Trong tài liệu, đoạn then chốt là: bạn thay vì “đổi đường thật”, bạn chỉ cần thêm số lần xuất hiện AS của bạn vào AS Path khi quảng bá.
Cấu hình quan trọng ở đây là dùng route-map với câu lệnh set as-path prepend.
Tài liệu cho một đoạn minh họa rõ ý:
- Tạo route-map
- Áp route-map vào neighbor trong BGP outbound
- Route-map sẽ set as-path prepend theo số lần bạn chỉ định
- Bạn prepend outbound (khi quảng bá ra neighbor), chứ không prepend “làm bẩn” AS Path nội bộ của bảng trong toàn mạng một cách mơ hồ.
- Prepend ảnh hưởng tới cách neighbor nhìn thấy AS Path, tức là ảnh hưởng quyết định best-path của neighbor.
4.1 Cấu hình BGP cơ bản và advertise các network giống nhau
Trong tài liệu, R1/R3 đều:
- bật router bgp ...
- thiết lập neighbor eBGP qua IP tương ứng
- dùng network 1.1.1.0 mask 255.255.255.0 để quảng bá cùng một đích
Tức là: bước đầu là để đảm bảo neighbor ở AS2 nhận đủ các tuyến để so sánh. 4.2 Quan sát bảng BGP trước khi prepend (để có mốc so sánh)
Tài liệu có đoạn thể hiện một bảng BGP (R2 show ip bgp) mà bạn có thể nhận ra:
- tuyến đến 1.1.1.0/24 (và cả các entry liên quan)
- AS Path hiển thị trực tiếp trong bảng (trong phần “AS Path”/các cột hiển thị đường đi)
Trước khi thay chính sách, hãy chụp “baseline” AS Path / best-path. Khi kiểm chứng xong, bạn biết rõ mình đang thành công vì AS Path đã dài hơn đúng như kỳ vọng. 4.3 Thực hiện AS Path Prepending trên outbound của R1
Trong tài liệu, route-map được dùng theo dạng:
- route-map PREPEND permit 10
- set as-path prepend 1 1 1 1 (ý là prepend AS của bạn nhiều lần)
- áp route-map này outbound:
neighbor <IP> route-map PREPEND out
- interface loopback và kết nối BGP đã có sẵn
- phần mới là neighbor ... route-map ... out và set as-path prepend ...
Tài liệu thể hiện rõ kỳ vọng:
- Khi xem lại show ip bgp trên R2, bạn sẽ thấy:
- Next hop vẫn tương tự (vì topology không đổi)
- nhưng AS Path của tuyến đi từ R1 sẽ dài hơn
- và có thể xuất hiện thay đổi về best-path (tùy trường hợp cạnh tranh tuyến)
- “Now we see that ... is the next hop IP address we use”
- và đặc biệt: “we can also see that the AS Path has become longer for the second entry.”
Dựa đúng vào bản chất trong tài liệu (và kinh nghiệm làm lab/CCIE), AS Path Prepending phù hợp nhất khi bạn muốn:
- Điều hướng upstream/neighbor chọn tuyến khác cho cùng prefix
- Giảm khả năng neighbor chọn “tuyến của bạn” khi bạn không muốn chịu load/đi theo hướng này
- Tạo “tín hiệu chính sách” mà không cần:
- hard reset
- đổi topology
- hoặc xây lại cơ chế phân tải
- Nếu đối tác dùng nhiều tiêu chí best-path (Local Preference, MED, etc.), prepend chỉ là một yếu tố trong chuỗi so sánh. Tuy nhiên, trong nhiều trường hợp thực tế, AS Path vẫn là đòn bẩy hiệu quả.
Tài liệu dùng cách tiếp cận “đặt mốc rồi xem kết quả”:
- Trước prepend: xem AS Path/best-path trong bảng BGP
- Sau prepend: xem AS Path của entry tương ứng có tăng độ dài không
- Bạn nên kiểm tra đúng entry “đến cùng đích prefix” và đúng “neighbor/next-hop” mà bạn dự định tác động.
- Tránh tình huống bạn prepend trên một tuyến nhưng bạn lại nhìn nhầm tuyến khác (vì trong BGP có thể có nhiều path cho cùng prefix).
Nếu phải chốt lại đúng với nội dung tài liệu:
- BGP ưu tiên AS Path ngắn hơn
- AS Path Prepending là cách bạn tăng độ dài AS Path khi quảng bá
- và do đó tác động tới quyết định chọn đường của neighbor mà không cần thay topology.