Phương thức thứ hai được dùng để khắc phục vấn đề lỗ đen là đơn giản dùng BGP để quảng bá tất cả các mạng học thông qua BGP đến tất cả các router trong AS. Bởi vì tất cả các router biết về mạng này, đồng bộ có thể được tắt một cách an toàn. Điểm hạn chế của giải pháp này là việc cài đặt BGP trên tất cả các router và thêm số kết nối iBGP giữa từng cặp router. (Trong một AS có N router, sẽ có N(N-1)/2 kết nối láng giềng. Với một AS lớn, thời gian hội tụ và hiệu suất của BGP sẽ giảm do một số lượng lớn các router ngang hàng).
BGP cần tất cả các router trong AS phải lập quan hệ láng giềng bởi vì BGP không quảng bá các tuyến iBGP (là các tuyến được học từ một iBGP) đến một router iBGP khác. Ràng buộc này giúp ngăn ngừa vòng lặp định tuyến nhưng nó sẽ yêu cầu các router phải được nối đầy đủ (full-mesh) với nhau. Nếu không, chỉ có một phần các router iBGP sẽ học được từng mạng.
BGP hỗ trợ hai công cụ là confederation và route reflector giúp giảm số kết nối ngang hàng bên trong một AS, ngăn ngừa vòng lặp và cho phép tất cả các router học về tất cả các mạng. Phần kế tiếp sẽ mô tả hai công cụ này.
Một AS dùng liên minh BGP (confederation) như được định nghĩa trong RFC3065 sẽ tách từng router trong một AS ra thành các AS con (gọi là sub-AS). Các láng giềng bên trong một AS được xem như là các láng giềng liên minh iBGP và các router trong các AS con khác được gọi là láng giềng liên minh eBGP.
Một confederation sẽ truyền các tuyến đến tất cả các router mà không yêu cầu các láng giềng phải cấu hình đầy đủ (full-mesh) trong toàn AS. Để làm được như vậy, các kết nối ngang hàng eBGP trong confederation sẽ hoạt động giống như quan hệ eBGP thực sự. Trong một AS con, các láng giềng iBGP vẫn phải thiết lập quan hệ đầy đủ bởi vì nó hoạt động chính xác như một iBGP bình thường. Nói cách khác, nó không quảng bá các tuyến iBGP cho nhau. Tuy nhiên, các quan hệ láng giềng eBGP confederation hoạt động giống như eBGP theo nghĩa nó có thể quảng bá các tuyến iBGP học được từ các AS con bên trong confederation sang một AS con khác trong confederation.
Confederation ngăn ngừa vòng lặp bên trong một AS bằng cách dùng thuộc tính AS_PATH. Các router chạy BGP trong một confederation thêm vào các giá trị AS con vào thuộc tính AS_PATH, gọi là AS_CONFED _SEQ.
Thuộc tính AS_PATH bao gồm bốn thành phần khác nhau, được gọi là các thành phần AS_SEQ, AS_SET, AS_CONFED_SEQ và AS_CONFED_SET;
Cũng tương tự như các biến AS_SEQ và AS_SET giúp ngăn ngừa vòng lặp giữa các AS, các biến AS_CONFED_SEQ và AS_CONFED_SET giúp ngăn ngừa vòng lặp giữa các AS bên trong một confederation. Trước khi một láng giềng eBGP trong confederation có thể quảng bá một tuyến iBGP vào trong một AS con khác, router phải đảm bảo AS con không có trong các thuộc tính AS_PATH AS_CONFED_SEQ.
Ví dụ trong hình dưới đây, các router trong AS con 65001 học một vài tuyến và sau đó quảng bá các tuyến này về AS 65002 và 65003. Các router trong các AS con này quảng bá các tuyến cho nhau. Tuy nhiên, các router không bao giờ quảng bá ngược lại cho các router trong AS 65001 nhờ vào thuộc tính AS_CONFED_SEQ, như được hiển thị trong ngoặc. Thuật ngữ AS và AS con muốn đề cập đến khái niệm AS và các AS con. Còn ASN và ASN con muốn chỉ đến chỉ số ASN thực sự được dùng.
Hình 12.8: Mô tả các bước hoạt động đặc tính confideration
Hình 12.8 mô tả một ví dụ chi tiết, với các bước trong danh sách dưới đây:
Cuối của các bước này, tất cả các router bên trong AS123 đã học được mạng 21.0.0.0/8. Ngoài ra, ASN 678 (là R77 trong trường hợp này) đã học một tuyến cho cùng mạng đó - một tuyến sẽ hoạt động và không tạo ra hiệu ứng lỗ đen. Thật ra, từng góc nhìn của ASN 678, các router sẽ thấy một tuyến dường như xuất hiện thông qua ASN 123 và 45. Cũng lưu ý rằng các router bên trong AS 65002 và 65003 sẽ không quảng bá ngược vào các AS 65001 bởi vì AS 65001 cũng đã có trong biến AS_PATH của confederation.
Việc chọn lựa các giá trị cho các AS 65001, 65002 và 65003 là không ngẫu nhiên trong trường hợp này. Các giá trị ASN từ 64512 đến 65535 là các chỉ số AS dùng riêng (private ASN), được dùng trong những trường hợp chỉ số AS không được quảng bá ra Internet hay tới các AS khác.
Bằng cách dùng các số AS dành riêng, một confederation có thể hy vọng tránh một vấn đề sau. Giả sử rằng AS con 65003 được dùng thay cho AS45. Phép kiểm tra vòng lặp sẽ kiểm tra toàn bộ AS_PATH. Kết quả là, các mạng được hiển thị trong hình 12.8 sẽ không bao giờ được quảng bá đến AS con 45 và đến lượt nó cũng sẽ không quảng bá đến AS678. Dùng các giá trị AS dùng riêng sẽ ngăn ngừa vấn đề này.
Danh sách dưới đây tóm tắt các điểm chủ chốt liên quan đến confederation:
Việc cấu hình confederation chỉ yêu cầu thêm một vài lệnh bên cạnh những lệnh đã mô tả. Tuy nhiên, việc chuyển sang dùng confederation có thể rất tốn kém. Vấn đề là các chỉ số ASN sẽ không còn được cấu hình trên lệnh router bgp, nhưng thay vào đó sẽ dùng lệnh bgp confederation identifier. Vì vậy, BGP sẽ không chạy được khi quá trình cài đặt đang diễn ra. Bảng 12.9 liệt kê các lệnh chủ chốt của confederation và mục đích của các lệnh này.
Mục đích |
Lệnh |
Định nghĩa AS con của một router |
Router bgp sub-as |
Định nghĩa AS thực sự |
Bgp confederation identifier asn |
Chỉ ra một láng giềng như là một AS con khác |
Bgp confederation peers subas |
Dưới đây là một ví dụ đơn giản cho cấu hình confederation cho hình vẽ 12.9:
Hình 12.9: Sơ đồ hệ thống sử dụng confederation
Trong sơ đồ mạng này, R1 là trong AS65001 với R2 và R3 trong AS con 65023. Trong ví dụ này, R1 và R3 sẽ không là láng giềng. Danh sách dưới đây liệt kê một chuỗi các sự kiện để truyền một địa chỉ mạng:
Cấu hình của R1
Dưới đây là cấu hình của R1. Chú ý thông số sub-AS trong câu lệnh router bgp và giá trị AS thật sự trong câu lệnh bgp confederation identifier. Cũng chú ý câu lệnh neighbor ebgp-multihop cho eBGP peer 2 khi nó dùng loopback.
router bgp 65001
no synchronization
bgp router-id 111.111.111.111
bgp confederation identifier 123
bgp confederation peers 65023
neighbor 2.2.2.2 remote-as 65023
neighbor 2.2. 2.2 ebgp-multihop 2
neighbor 2.2.2.2 update-source Loopback1
neighbor 2.2.2.2. next-hop-self
neighbor 172.16.16.6 remote-as 678
Cấu hình của R2
Chú ý lệnh bgp confederation peer 65023. Nếu không có lệnh này, R2 sẽ nghĩ rằng láng giềng 1.1.1.1 là một kết nối eBGP thật sự và sẽ xóa thông số AS_PATH trước khi quảng bá đến R1.
router bgp 65023
no synchronization
bgp confederaton identifier 123
bgp confederation peers 65001
neighbor 1.1.1.1 remote-as 65001
neighbor 1.1.1.1 egp-multihop 2
neighbor 1.1.1.1 update-source Loopback1
neighbor 3.3.3.3 remote-as 65023
neighbor 3.33.3 updateesource Loopback1
Cấu hình của R3
Chú ý rằng R3 không có câu lệnh bgp confederation peers vì nó không có bất kỳ cấu hình eBGP confederation nào.
router bgp 65023
no synchronization
bgp log-neighbor-changes
bgp confederation identifier 123
neighbor 2.2.2.2 remote-as 65023
neighbor 2.2.2.2 update-source Loopback1
neighbor 22..22..22..22 next-hop-self
neighbor 4.4.4.4 remote-as45
neighbor 4.4.4.4 ebgp-multihop
neighbor 4.4.4.2 update-source Loopback1
R1 nhận địa chỉ mạng 21.0.0.0/8, với giá trị sub-AS 65023 được hiển thị trong dấu ngoặc và giá trị thật 45 được hiển thị bên ngoài dấu ngoặc. R1 cũng học cùng một địa chỉ mạng thông qua AS 678 và R6. Các tuyến thông qua AS con là tốt nhất bởi vì nó có đường đi ngắn nhất AS_PATH. AS_PATH ngắn nhất sẽ không tính giá trị sub-AS của confederation.
R1# show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 21.0.0.0 3.3.3.3 0 1000 (65023) 45 i
* 172.16.16.6 0 678 45 i
*> 22.2.2.0/24 3.3.3.3 0 1000 (65023) 45 i
* 172.16.16.6 0 678 45 i
R6 hiển thị các tuyến nhận được từ R1, hiển thị giá trị sub-AS đã bị loại bỏ và thay vào giá trị AS thực sự, AS123.
R6# show ip bgp neighbor 172.16.16.1 received-routes | begin Network
Network Next Hop Metric LocPrf Weight Path
r 21.0.0.0 172.16.16.1 0 123 45 i
r 22.2.2.0/24 172.16.16.1 0 123 45 i
Ánh xạ tuyến (RR) có cùng kết quả giống như confederation, nó loại bỏ yêu cầu kết nối đầy đủ (full-mesh) cho các iBGP, cho phép tất cả các tuyến iBGP có thể được học bởi tất cả các router iBGP trong AS và để ngăn ngừa vòng lặp. Trong một thiết kế iBGP dùng RR, chỉ cần một phần các router iBGP thiết lập quan hệ. Một vài router được cấu hình như server RR, những server này được phép học các tuyến iBGP từ các router trạm và sau đó sẽ quảng bá đến các iBGP ngang hàng khác. Các ví dụ trong hình 12.10 sẽ mô tả các thuật ngữ chủ chốt và cơ chế cốt lõi được dùng bởi RR; chú ý rằng chỉ có server RR dùng cơ chế khác, còn trạm và những router không phải trạm hoạt động như iBGP ngang hàng bình thường.
Hình 12.10: Mô tả các thuật ngữ chủ chốt và cơ chế của RR
Hình 12.10 mô tả mạng 11.0.0.0/8 được lan truyền như thế nào trong toàn AS, dùng các bước sau:
Chỉ có các router hoạt động trong vai trò RR dùng các luật bổ sung; các router khác (máy trạm và không phải máy trạm) thậm chí không biết có sự tồn tại của RR và nó không thay đổi luật hoạt động. Bảng 12.10 tóm tắt các luật để RR hoạt động, có thể thay đổi tùy thuộc vào kiểu quan hệ BGP ngang hàng mà từ đó RR nhận được mạng đó. Bảng này liệt kê các nguồn mà từ đó một mạng có thể được học và các kiểu router khác có thể nhận thông tin tiền tố từ RR.
Vị trí mà từ đó tuyến được học |
Các tuyến có được quảng bá đến máy trạm? |
Các tuyến được quảng bá đến các máy không phải là trạm? |
Máy trạm |
Có |
Có |
Không phải máy trạm |
Có |
Không |
EBGP |
Có |
Có |
Bảng 12.10: Tóm tắt các luật để RR hoạt động
Một trường hợp mà trong đó RR không tiếp tục gửi các tuyến là khi RR nhận được một tuyến từ một router không phải là máy trạm, trong đó RR không tiếp tục gửi tuyến đó đến những router không phải là máy trạm khác. Viễn cảnh của cơ chế RR là RR hoạt động giống như các router iBGP láng giềng với những router không phải là máy trạm và với eBGP. Nói cách khác, RR không có tiếp tục đẩy các tuyến học được thông qua iBGP đến những iBGP không phải là máy trạm. Sự khác biệt trong cách RR xử lý thì liên quan đến khi nào một máy trạm gửi cho một RR một mạng hoặc khi RR quyết định gửi một mạng đến máy trạm.
Một (hoặc nhiều) server RR và các trạm của nó tạo ra một liên kết RR. Một thiết kế BGP dùng RR có thể bao gồm:
Hình 12.11 mô tả khái niệm, trong đó các RR với các RR quan hệ đầy đủ đến tất cả các RR khác trong các liên kết khác cũng như với các thiết bị không phải là máy trạm.
Hình 12.11: Các khái niệm và mô hình của ánh xạ tuyến
Nếu bạn xem xét các cơ chế được tóm tắt trong bảng 12.10 so với hình 12.11, dường như vòng lặp không chỉ là có thể mà đã xảy ra với thiết kế này. Tuy nhiên, đặc tính RR dùng vài công cụ để ngăn ngừa vòng lặp.
Dưới đây mô tả một ví dụ dùng RR. Hình 12.12 mô tả AS 123 có bốn router. Thiết kế dùng hai cluster, với hai RR (R9 và R2) và hai client (R1 và R3). Danh sách dưới đây liệt kê một chuỗi các sự kiện để một mạng:
Hình 12.12: Sơ đồ mạng dùng ánh xạ tuyến
Cấu hình của R3
Các RR trạm không nhận biết là đang hoạt động như là trạm, tiến trình thì hoàn toàn bị che dấu khỏi tất cả các router ngoại trừ RR. Ngoài ra, đừng quên rằng một trong những mục đích chủ yếu của việc dùng RR là cho phép tắt đồng bộ.
router bgp 123
no synchronization
neighbor 2.2.2.2 remote-as 123
neighbor 2.2.2.2 update-source Loopback1
neighbor 2.2.2.2 next-hop-self
neighbor 4.4.4.4 remote-as 45
neighbor 4.4.4.4 ebgp-multihop 255
neighbor 4.4..4 update-source Loopback1
Cấu hình của R2
ClusterID mặc định sẽ bằng BGP RID của R2 nhưng nó đã được gán bằng 1, và sẽ được liệt kê như là “0.0.0.1”. R2 gán 3.3.3.3 (R3) như là máy trạm.
router bgp 123
no synchronization
bgp cluster-id 1
neighbor 3.3.3.3 remote-as 123
neighbor 3.3.3.3 update-source Loopback1
neighbor 3.3.3.3 route-refletor-client
neighbor 9.9.9 .9 remote-as 123
neighbor 9.9.9.9 update-source Loopback1
Cấu hình R9
Cấu hình tương tự như R2 nhưng với một clusterID khác.
router bgp 123
no synchronization
bgp router-id 9.9.9.9
bgp cluster-id 2
neighbor 1.1.1.1 remote-as 123
neighbor 1.1.1.1 update—source Loopback2
neighbr 1.1.1.1 route-reflector-client
neighbor 2.2.2.2 remote-as 123
neighbor 2.2.2.2 update-source Loopback2
no auto-summary
Cấu hình của R1 được bỏ vì nó không chứa bất kỳ cấu hình nào liên quan đến RR giống như trong tất cả các RR trạm. Mạng 21.0.0.0/8 được học bởi R3, truyền đến R2 thông qua iBGP. Sau đó R2 truyền các mạng này đến các láng giềng của nó, R9. Lệnh show ip bgp 21.0.0.0 hiển thị giá trị AS_PATH hiện hành (45); nguồn gốc của tuyến (3.3.3.3) và router láng giềng iBGP mà tuyến đó học được (từ 2.2.2.2) và danh sách liên kết, hiện giờ có liên kết của R2.
R9# show ip bgp 21.0.0.0
BGP routing table entry for 21.0.0.0/8, version 3
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Flag: 0x820
Advertised to update-groups:
2
45
3.3.3.3 (metric 2300416) from 2.2.2.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, internal, best
Originator: 3.3.3.3, Cluster list: 0.0.0.1
So sánh với kết quả trên R9 vớI iBGP được học từ R9 (“9.9.9.9”) và thông số cluster_list giờ có giá trị 0.0.0.2 khi được thêm vào bởi R9.
R1# sho ip bgp 21.0.0.0
BGP routing table entry for 21.0.0.0/8, version 20
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
45
3.3.3.3 (metric 2302976) from 9.9.9.9 (9.9.9.9)
Origin IGP, metric 0, localpref 100, valid, internal, best
Originator: 3.3.3.3, Cluster list: 0.0.0.2, 0.0.0.1