3. Kiểm tra trước khi trở thành láng giềng BGP
Tương tự như IGP, BGP kiểm tra vài yêu cầu trước khi một router khác có thể trở thành láng giềng, đạt được trạng thái đã được thiết lập (established). Phần lớn các cài đặt là dễ dàng, phần lắt léo duy nhất liên quan đến cách dùng địa chỉ IP. Danh sách dưới đây mô tả các phép kiểm tra mà BGP thực hiện khi hình thành quan hệ láng giềng:
Hình 12.3 mô tả ba hạng mục đầu tiên trong danh sách nêu trên, trong đó R3 khởi tạo một kết nối TCP về R1. Các số 1,2 và 3 trong hình vẽ tương ứng với các bước trên. Chú ý rằng kiểm tra ở bước 2 của R1 dùng lệnh neighbor như là một phần của bước 1.
Trong hình 12.3, R3 khởi tạo một kết nối TCP với địa chỉ nguồn là 3.3.3.3 là địa chỉ nguồn của gói tin. Tác vụ kiểm tra đầu tiên diễn ra khi R1 nhận được gói tin đầu tiên, tìm địa chỉ nguồn của gói tin (3.3.3.3) và tìm ra địa chỉ đó trong câu lệnh neighbor. Tác vụ kiểm tra thứ hai khi R1 so sánh với giá trị AS của R3 (trong thông điệp mở) với giá trị AS trong câu lệnh neighbor của R1. Bước kiểm tra thứ ba đảm bảo rằng các BGP RID là duy nhất, các giá trị này chứa trong thông điệp BGP Open.
Trong khi việc kiểm tra ở bước 1 có vẻ rất trực giác, phần đảo lại của thuật toán không nhất thiết là đúng để quan hệ láng giềng được thiết lập. Ví dụ, nếu R1 không có câu lệnh neighbor 3.3.3.3 update-source 1.1.1.1, tiến trình trong hình trên vẫn hoạt động. Nói một cách ngắn gọn, chỉ cần một trong hai router dùng update source và địa chỉ này phải đúng bằng với giá trị chỉ ra trong câu lệnh neighbor của router láng giềng. Hai ví dụ trên đã minh họa cấu hình update source chính xác trên cả hai router và nếu chỉ cấu hình một trong hai router, cấu hình vẫn hoạt động.
BGP dùng khoảng thời gian duy trì (keepalive) để định nghĩa tần suất một router gửi một thông điệp duy trì và khoảng thời gian hết hạn (holdtime) để xác định một router sẽ chờ trong bao lâu trước khi tái thiết lập một quan hệ láng giềng. Thông điệp BGP Open trong mỗi router có liệt kê khoảng thời gian duy trì. Nếu khoảng thời gian này không giống nhau, mỗi router sẽ dùng giá trị thấp hơn cho mỗi thông số. Các router vẫn có thể thiết lập quan hệ láng giềng cho dù các thông số thời gian là khác nhau.
4. Các thông điệp BGP và các trạng thái láng giềng
Trạng thái mong muốn của quan hệ BGP là trạng thái thiết lập (established). Trong trạng thái này, các router đã hình thành kết nối TCP và các router trao đổi thông điệp BGP Open với tất các thông số đã kiểm tra hoàn tất. Ở thời điểm này, các thông tin về đồ hình mạng có thể được trao đổi dùng thông điệp cập nhật. Bảng 12.2 liệt kê các trạng thái trong quan hệ láng giềng BGP và các đặc điểm của nó. Chú ý rằng nếu địa chỉ IP là không giống nhau, các láng giềng sẽ rơi vào trạng thái tích cực (active).
5. Tác vụ tái khởi động quan hệ BGP một cách chủ ý
Ví dụ dưới đây sẽ mô tả việc tái thiết lập quan hệ láng giềng bằng câu lệnh neighbor shutdown và các trạng thái trong suốt quá trình. Ví dụ dùng router R2 và router R6.
R1 sẽ tắt quan hệ láng giềng với R6. Lệnh debug ip bgp sẽ hiển thị việc chuyển đổi sang trạng thái không hoạt động (down), được mô tả như là “Idle” trong lệnh show ip bgp summary.
Kế tiếp, lệnh no neighbor shutdown sẽ đổi lại trạng thái trên. Các thông điệp debug khác nhau liệt kê các trạng thái khác nhau. Cũng lưu ý rằng thông điệp cuối cùng là một thông điệp thông báo xảy ra do cấu hình mặc định của BGP. Các kết quả còn lại là kết quả của lệnh debug ip bgp.
Tất cả các router láng giềng BGP có thể bị tái thiết lập bằng lệnh clear ip bgp *, trong đó, cũng giống như lệnh neighbor shutdown, tất cả các kết nối láng giềng bị tái khởi động, các kết nối bị đóng và tất cả các hàng trong bảng BGP được học từ láng giềng đó sẽ bị xóa. Lệnh clear sẽ đuợc mô tả trong các đoạn kế tiếp, bao gồm các thức làm thế nào để xóa chỉ vài láng giềng.
6. Xây dựng bảng BGP
Bảng sơ đồ mạng BGP (topology table), còn được gọi là bảng cơ sở thông tin định tuyến BGP (Routing Information Base - RIB), sẽ lưu giữ các thông tin lớp 3 (network layer reachability information - NLRI) được học bởi BGP và các thuộc tính PA của các mạng này. Một NLRI đơn giản chỉ là một địa chỉ mạng và giá trị độ dài tiền tố (prefix length). Phần này sẽ tập trung vào tiến trình làm thế nào BGP chèn một NLRI vào bảng BGP của router và cách mà các router quảng bá các NLRI và các thuộc tính PA của nó đến các router láng giềng.
Về phương diện kỹ thuật, BGP không quảng bá các tuyến, thay vào đó, nó quảng bá các thuộc tính PA và tập hợp các NLRI có chung giá trị thuộc tính PA. Tuy nhiên, phần lớn mọi người đều gọi NLRI là tiền tố BGP hoặc các tuyến BGP. Tài liệu này dùng cả ba thuật ngữ. Tuy nhiên, bởi vì có một sự khác nhau giữa tuyến BGP trong bảng BGP và tuyến IP trong bảng định tuyến, tài liệu này sẽ mô tả cẩn thận khi phân biệt bảng BGP hay bảng định tuyến.
Câu lệnh network trong BGP khác nhiều so với câu lệnh network được dùng trong các giao thức nội IGP. Câu lệnh network trong BGP ra lệnh cho tiến trình BGP của router thực hiện các việc sau: Tìm kiếm một tuyến trong bảng định tuyến của router hiện hành trong đó đúng bằng với các thông số của câu lệnh network. Nếu tuyến đó là tồn tại, sẽ đặt địa chỉ mạng NLRI tương đương vào trong bảng BGP nội bộ.
Với cơ chế này, các mạng kết nối trực tiếp, các tuyến đường tĩnh và các tuyến dạng IGP có thể được lấy ra khỏi bảng định tuyến IP và đặt vào trong bảng BGP để quảng bá về sau. Khi router xóa tuyến đó ra khỏi bảng định tuyến IP, BGP sẽ xóa địa chỉ NLRI ra khỏi bảng BGP và router sẽ báo cho router láng giềng về việc tuyến đã bị xóa. Lưu ý rằng địa chỉ tuyến IP phải trong bảng định tuyến phải giống hệt trong bảng BGP khi lệnh no auto-summary được cấu hình hay được dùng.
Bảng 12.4 liệt kê vài đặc điểm chủ yếu của câu lệnh network trong BGP. Cú pháp tổng quát là network { network-number [mask network-mask]} [route-map map-tag]
Ví dụ dưới đây mô tả câu lệnh network trên router R5. Các láng giềng của R5 đã được tắt để bảng BGP chỉ hiển thị bảng BGP được tạo ra bởi câu lệnh network trên R5. Trong ví dụ này, R5 dùng hai câu lệnh network để thêm hai địa chỉ 21.0.0.0/8 và 22.1.1.0/24 vào bảng BGP. Các mạng từ 30 đến 39 được quảng bá thông qua câu lệnh redistribute eigrp 6.
Trên R5, câu lệnh network chỉ lựa ra các mạng 21.0.0.0/8 và 22.1.1.0/24. Do giá trị mặt nạ trong câu lệnh không được cấu hình trong câu lệnh đầu tiên nên mặc định giá trị mặt nạ là 255.0.0.0, vì địa chỉ IP được khai báo là một địa chỉ lớp A (21.0.0.0).
Các lệnh neighbor không được hiển thị trong ví dụ này, vì nó không liên quan đến chủ đề đang thảo luận. Kế tiếp, hai tuyến được lựa ra thì có trong bảng định tuyến IP. Cũng lưu ý rằng địa chỉ mạng 21.0.0.0/8 là một mạng kế nối trực tiếp và đường đi về mạng 22.1.1.0/24 là một tuyến đường tĩnh.
Dưới đây, các địa chỉ mạng đã được thêm vào bảng BGP. Lưu ý rằng giá trị NEXT_HOP của tuyến 21.0.0.0/8 đã được gán về 0.0.0.0 và giá trị NEXT_HOP cho mạng 22.1.1.0/24 sẽ giống với NEXT_HOP của tuyến IP.
Đưa tuyến từ các giao thức định tuyến nội IGP, định tuyến tĩnh hay các tuyến kết nối trực tiếp.
Lệnh redistribute trong BGP có thể đưa các tuyến tĩnh, các tuyến kết nối trực tiếp và các tuyến được học thông qua giao thức IGP vào trong BGP. Cơ chế của lệnh BGP redistribute hoạt động tương tự như lệnh redistribute được mô tả trước đây. Tuy nhiên, phần này mô tả vài sự khác nhau rất tinh tế chỉ có ở BGP.
BGP không dùng khái niệm tính toán một chi phí cho một đường đi thay thế để đến một mạng nào đó. Thay vào đó, BGP dùng tiến trình ra quyết định từng bước để kiểm tra các thông số thuộc tính đường đi khác nhau để xác định đường đi tốt nhất. Kết quả là, tiến trình phân phối vào trong BGP không yêu cầu xem xét việc gán các chi phí. Tuy nhiên, một router cũng cần áp dụng một route-map trong quá trình phân phối để thao tác các thuộc tính PA, sau đó các thuộc tính này ảnh hưởng đến tiến trình ra quyết định của BGP. Nếu một giá trị chi phí được gán đến một tuyến được đưa vào trong BGP, BGP sẽ gán giá trị chi phí đó vào thuộc tính BGP MED PA, còn được biết với tên gọi khác là chi phí.
Mặc dù đặc điểm này không phải là duy nhất đối với BGP, ta cần nhớ rằng quá trình phân phối từ một giao thức IGP vào BGP có thể lấy hai tuyến: một là những tuyến được học từ giao thức IGP đó và hai là những tuyến kết nối trực tiếp có địa chỉ trùng với địa chỉ trong câu lệnh network.
Ví dụ dưới đây hiển thị R6 lấp đầy bảng BGP thông qua quá trình phân phối từ EIGRP và phân phối một tuyến tĩnh. EIGRP trên R6 học các tuyến của các mạng từ 30 đến 39. Mục đích của ví dụ này là như sau:
R6 đưa các tuyến EIGRP 6 và các tuyến tĩnh vào BGP, gán giá trị chi phí bằng 9. Cũng chú ý rằng EIGRP sẽ chỉ ra các mạng 10.1.68.0/24 và 10.1.69.0/24 với câu lệnh network của nó.
Các lệnh không liên quan đến bảng BGP cục bộ bị bỏ qua. R6 đã đáp ứng mục đích đưa các mạng 31 và 32 từ EIGRP và mạng 34 từ tuyến tĩnh. Tiến trình này cũng vô tình đưa hai mạng con của mạng 10.0.0.0/8 vào BGP bởi vì câu lệnh network 10.0.0.0 trong EIGRP cũng bao hàm các mạng con này.
Dưới đây chú ý chi phí của hai tuyến EIGRP. Lệnh show ip bgp hiển thị thuộc tính MED được gán cùng giá trị.
Dưới đây, lệnh redistribute eigrp đã được thay đổi, dùng thêm một route-map chỉ để cho những tuyến trong dãy 30.
Route-map và ACL được dùng cho việc lọc được hiển thị kế tiếp. Kết quả là hai mạng con 10.0.0.0/8 sẽ không được đưa vào bảng BGP.
Cũng lưu ý rằng thông số NEXT_HOP cho từng tuyến sẽ có giá trị chặng kế tiếp của tuyến ngoại lai hoặc có giá trị 0.0.0.0 cho những tuyến kết nối trực tiếp hoặc tuyến về null0.
Thuật toán thì hơi khác nhau dựa trên các tuyến được đưa vào bằng lệnh redistribute hay bằng câu lệnh network. Thuật toán cho hai lệnh này được tóm tắt như sau:
Ví dụ dưới đây mô tả ảnh hưởng của lệnh auto-summary. Ví dụ mô tả các bước sau trên R5:
Dưới đây, chú ý sự thiếu vắng của tuyến 10.0.0.0/8 và có sự tồn tại của mạng 10.15.0.0/16 cũng như là các tuyến còn lại được dùng trong những bước kế tiếp.
Kế tiếp, bước 2, khi lệnh auto-summary được bật. Bây giờ mạng 10.15.0.0/16 là không còn được đưa vào BGP nữa, chỉ còn địa chỉ 10.0.0.0/8.
Bây giờ ở bước 3, lệnh no auto-summary tắt chế độ tự động tóm tắt, quá trình phân phối lại bị bỏ và ở bước 4, lệnh network được thêm vào. Chú ý rằng 10.12.0.0/15 không được đưa vào BGP vì không có tuyến nào đúng bằng. Mạng 10.0.0.0/8 cũng không được đưa vào vì cùng lý do. Tuy nhiên mạng 10.14.0.0/16 được đưa vào vì có một tuyến đúng bằng địa chỉ mạng và chiều dài tiền tố.
Cuối cùng, lệnh auto-summary được bật lại (không hiển thị trong ví dụ). Mạng 10.14.0.0/16 vẫn được đưa vào. Mạng 10.0.0.0 cũng được đưa vào bởi vì câu lệnh network 10.0.0.0.
Tuyến tổng sẽ bao gồm thuộc tính AS_PATH, giống như yêu cầu cho mọi NLRI khác trong bảng BGP. Tuy nhiên, để hiểu đầy đủ lệnh này làm gì, bạn cần phải xem xét kỹ hơn thuộc tính đường đi AS_PATH.
Thuộc tính AS_PATN bao gồm bốn thành phần khác nhau, gọi là các phân đoạn như sau:
Tương tự như IGP, BGP kiểm tra vài yêu cầu trước khi một router khác có thể trở thành láng giềng, đạt được trạng thái đã được thiết lập (established). Phần lớn các cài đặt là dễ dàng, phần lắt léo duy nhất liên quan đến cách dùng địa chỉ IP. Danh sách dưới đây mô tả các phép kiểm tra mà BGP thực hiện khi hình thành quan hệ láng giềng:
- Bước 1: Router phải nhận được một yêu cầu thiết lập kết nối TCP với địa chỉ nguồn mà router tìm thấy trong câu lệnh neighbor.
- Bước 2: Số ASN của một router trong câu lệnh router bgp phải đúng bằng với giá trị ASN trong câu lệnh neighbor remote-as của router láng giềng. Yêu cầu này không đúng trong trường hợp cấu hình thuộc tính liên minh confederation.
- Bước 3: RID của BGP của hai router không được giống nhau.
- Bước 4: Nếu được cấu hình, xác thực MD5 sẽ phải đạt yêu cầu.
Hình 12.3 mô tả ba hạng mục đầu tiên trong danh sách nêu trên, trong đó R3 khởi tạo một kết nối TCP về R1. Các số 1,2 và 3 trong hình vẽ tương ứng với các bước trên. Chú ý rằng kiểm tra ở bước 2 của R1 dùng lệnh neighbor như là một phần của bước 1.
hình 12.3: Các quá trình kiểm tra trước khi trở thành láng giềng
Trong hình 12.3, R3 khởi tạo một kết nối TCP với địa chỉ nguồn là 3.3.3.3 là địa chỉ nguồn của gói tin. Tác vụ kiểm tra đầu tiên diễn ra khi R1 nhận được gói tin đầu tiên, tìm địa chỉ nguồn của gói tin (3.3.3.3) và tìm ra địa chỉ đó trong câu lệnh neighbor. Tác vụ kiểm tra thứ hai khi R1 so sánh với giá trị AS của R3 (trong thông điệp mở) với giá trị AS trong câu lệnh neighbor của R1. Bước kiểm tra thứ ba đảm bảo rằng các BGP RID là duy nhất, các giá trị này chứa trong thông điệp BGP Open.
Trong khi việc kiểm tra ở bước 1 có vẻ rất trực giác, phần đảo lại của thuật toán không nhất thiết là đúng để quan hệ láng giềng được thiết lập. Ví dụ, nếu R1 không có câu lệnh neighbor 3.3.3.3 update-source 1.1.1.1, tiến trình trong hình trên vẫn hoạt động. Nói một cách ngắn gọn, chỉ cần một trong hai router dùng update source và địa chỉ này phải đúng bằng với giá trị chỉ ra trong câu lệnh neighbor của router láng giềng. Hai ví dụ trên đã minh họa cấu hình update source chính xác trên cả hai router và nếu chỉ cấu hình một trong hai router, cấu hình vẫn hoạt động.
BGP dùng khoảng thời gian duy trì (keepalive) để định nghĩa tần suất một router gửi một thông điệp duy trì và khoảng thời gian hết hạn (holdtime) để xác định một router sẽ chờ trong bao lâu trước khi tái thiết lập một quan hệ láng giềng. Thông điệp BGP Open trong mỗi router có liệt kê khoảng thời gian duy trì. Nếu khoảng thời gian này không giống nhau, mỗi router sẽ dùng giá trị thấp hơn cho mỗi thông số. Các router vẫn có thể thiết lập quan hệ láng giềng cho dù các thông số thời gian là khác nhau.
4. Các thông điệp BGP và các trạng thái láng giềng
Trạng thái mong muốn của quan hệ BGP là trạng thái thiết lập (established). Trong trạng thái này, các router đã hình thành kết nối TCP và các router trao đổi thông điệp BGP Open với tất các thông số đã kiểm tra hoàn tất. Ở thời điểm này, các thông tin về đồ hình mạng có thể được trao đổi dùng thông điệp cập nhật. Bảng 12.2 liệt kê các trạng thái trong quan hệ láng giềng BGP và các đặc điểm của nó. Chú ý rằng nếu địa chỉ IP là không giống nhau, các láng giềng sẽ rơi vào trạng thái tích cực (active).
Trạng thái | Lắng nghe ở TCP? |
Khởi tạo TCP |
TCP hoạt động? |
Thông điệp Open có được gửi? |
Thông điệp Open có được nhận |
Router láng giềng có thiết lập? |
Idle | Không | |||||
Connect (Kết nối) |
Có | |||||
Active (Tích cực) | Có | Có | ||||
Open có được gửi | Có | Có | Có | Có | ||
Open có được xác nhận | Có | Có | Có | Có | Có | |
Thiết lập (established) | Có | Có | Có | Có | Có | Có |
Bảng 12.2: Các trạng thái trong quan hệ láng giềng BGP
Các kiểu thông điệp BGPThông điệp | Mục đích |
Open | Được dùng để thiết lập quan hệ láng giềng vào trao đổi các thông số cơ bản. |
Keepalive (Duy trì) |
Được dùng để duy trì quan hệ láng giềng. Nếu router không nhận được thông điệp này trong khoảng thời gian hết hạn thì BGP sẽ hủy quan hệ láng giềng. Khoảng thời gian này có thể cấu hình bằng lệnh bgp timers keepalive holdtime hoặc bằng câu lệnh neighbor [ip-adddress|peer-group-name] timers keepalive holdtime. |
Update (Cập nhật) | Được dùng để trao đổi thông tin định tuyến |
Notification (Thông báo) | Được dùng khi có lỗi BGP xảy ra. Khi thông điệp này được gửi, quan hệ láng giềng sẽ bị khởi động lại. |
Bảng 12.3: Các thông điệp của BGP
5. Tác vụ tái khởi động quan hệ BGP một cách chủ ý
Ví dụ dưới đây sẽ mô tả việc tái thiết lập quan hệ láng giềng bằng câu lệnh neighbor shutdown và các trạng thái trong suốt quá trình. Ví dụ dùng router R2 và router R6.
R1 sẽ tắt quan hệ láng giềng với R6. Lệnh debug ip bgp sẽ hiển thị việc chuyển đổi sang trạng thái không hoạt động (down), được mô tả như là “Idle” trong lệnh show ip bgp summary.
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R1# debug ip bgp BGP debugging is on for address family: BGP IPv4[/FONT][/SIZE][/INDENT][INDENT][SIZE=14px][FONT=Tahoma]R1# conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)# router bgp 123 R1(config-router)# neigh 10.1.16.6 shutdown[/FONT][/SIZE][/INDENT][INDENT][SIZE=14px][FONT=Tahoma]R1# *Mar 4 21:01:45.946: BGP: 10.1.16.6 went from Established to Idle *Mar 4 21:01:45.946: %BGP-5-ADJCHANGE: neighbor 10.1.16.6 Down Admin. shutdown *Mar 4 21:01:45.946: BGP: 10.1.16.6 closing[/FONT][/SIZE][/INDENT][INDENT][SIZE=14px][FONT=Tahoma]R1# show ip bgp summary | include 10.1.16.6 10.1.16.6 4 678 353 353 0 0 0 00:00:06 Idle (Admin)[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R1# conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)# router bgp 123 R1(config-router)# no neigh 10.1.16.6 shutdown *Mar 4 21:02:16.958: BGP: 10.1.16.6 went from Idle to Active *Mar 4 21:02:16.958: BGP: 10.1.16.6 open active, delay 15571ms *Mar 4 21:02:29.378: BGP: 10.1.16.6 went from Idle to Connect *Mar 4 21:02:29.382: BGP: 10.1.16.6 rcv message type 1, length (excl. header) 26 *Mar 4 21:02:29.382: BGP: 10.1.16.6 rcv OPEN, version 4, holdtime 180 seconds *Mar 4 21:02:29.382: BGP: 10.1.16.6 went from Connect to OpenSent *Mar 4 21:02:29.382: BGP: 10.1.16.6 sending OPEN, version 4, my as: 123, holdtime 180 seconds *Mar 4 21:02:29.382: BGP: 10.1.16.6 rcv OPEN w/ OPTION parameter len: 16 BGP: 10.1.16.6 rcvd OPEN w/ remote AS 678 *Mar 4 21:02:29.382: BGP: 10.1.16.6 went from OpenSent to OpenConfirm *Mar 4 21:02:29.382: BGP: 10.1.16.6 send message type 1, length (incl. header) 45 *Mar 4 21:02:29.394: BGP: 10.1.16.6 went from OpenConfirm to Established *Mar 4 21:02:29.398: %BGP-5-ADJCHANGE: neighbor 10.1.16.6 Up[/FONT][/SIZE][/INDENT]
6. Xây dựng bảng BGP
Bảng sơ đồ mạng BGP (topology table), còn được gọi là bảng cơ sở thông tin định tuyến BGP (Routing Information Base - RIB), sẽ lưu giữ các thông tin lớp 3 (network layer reachability information - NLRI) được học bởi BGP và các thuộc tính PA của các mạng này. Một NLRI đơn giản chỉ là một địa chỉ mạng và giá trị độ dài tiền tố (prefix length). Phần này sẽ tập trung vào tiến trình làm thế nào BGP chèn một NLRI vào bảng BGP của router và cách mà các router quảng bá các NLRI và các thuộc tính PA của nó đến các router láng giềng.
Về phương diện kỹ thuật, BGP không quảng bá các tuyến, thay vào đó, nó quảng bá các thuộc tính PA và tập hợp các NLRI có chung giá trị thuộc tính PA. Tuy nhiên, phần lớn mọi người đều gọi NLRI là tiền tố BGP hoặc các tuyến BGP. Tài liệu này dùng cả ba thuật ngữ. Tuy nhiên, bởi vì có một sự khác nhau giữa tuyến BGP trong bảng BGP và tuyến IP trong bảng định tuyến, tài liệu này sẽ mô tả cẩn thận khi phân biệt bảng BGP hay bảng định tuyến.
- Chèn một tuyến/tiền tố vào bảng BGP
- Lệnh network trong BGP
Câu lệnh network trong BGP khác nhiều so với câu lệnh network được dùng trong các giao thức nội IGP. Câu lệnh network trong BGP ra lệnh cho tiến trình BGP của router thực hiện các việc sau: Tìm kiếm một tuyến trong bảng định tuyến của router hiện hành trong đó đúng bằng với các thông số của câu lệnh network. Nếu tuyến đó là tồn tại, sẽ đặt địa chỉ mạng NLRI tương đương vào trong bảng BGP nội bộ.
Với cơ chế này, các mạng kết nối trực tiếp, các tuyến đường tĩnh và các tuyến dạng IGP có thể được lấy ra khỏi bảng định tuyến IP và đặt vào trong bảng BGP để quảng bá về sau. Khi router xóa tuyến đó ra khỏi bảng định tuyến IP, BGP sẽ xóa địa chỉ NLRI ra khỏi bảng BGP và router sẽ báo cho router láng giềng về việc tuyến đã bị xóa. Lưu ý rằng địa chỉ tuyến IP phải trong bảng định tuyến phải giống hệt trong bảng BGP khi lệnh no auto-summary được cấu hình hay được dùng.
Bảng 12.4 liệt kê vài đặc điểm chủ yếu của câu lệnh network trong BGP. Cú pháp tổng quát là network { network-number [mask network-mask]} [route-map map-tag]
Đặc điểm | Ngầm định |
Nếu thông số mask không được cấu hình | Giá trị mặt nạ mặc định được dùng |
Cơ chế lựa tuyến để quảng bá khi tùy chọn no auto-summary được cấu hình |
Một tuyến ip phải so sánh đúng bằng với phần mạng và chiều dài của tiền tố |
Cơ chế chọn lựa tuyến để quảng bá khi tuỳ chọn auto-summary được cấu hình |
Nếu câu lệnh network khai báo một địa chỉ mạng dạng đầy đủ, router sẽ quảng bá nếu có bất kỳ một mạng con nào của mạng đầy đủ trên tồn tại. |
Thuộc tính NEXT_HOP của tuyến BGP được thêm vào bảng BGP. |
Dùng thuộc tính NEXT_HOP của tuyến IP. |
Số địa chỉ mạng tối đa được đưa vào tiến trình BGP bằng câu lệnh network |
200 |
Mục đích của tùy chọn route-map trong câu lệnh network |
Có thể dùng để lọc tuyến và thao tác các thuộc tính PA, bao gồm thuộc tính NEXT_HOP. NEXT_HOP là một thuộc tính đường dẫn PA của BGP mô tả địa chỉ IP kế tiếp cần đến để đi về mạng đích NLRI. |
Bảng 12.4: Mô tả các tùy chọn trong câu lệnh network của BGP
Ví dụ dưới đây mô tả câu lệnh network trên router R5. Các láng giềng của R5 đã được tắt để bảng BGP chỉ hiển thị bảng BGP được tạo ra bởi câu lệnh network trên R5. Trong ví dụ này, R5 dùng hai câu lệnh network để thêm hai địa chỉ 21.0.0.0/8 và 22.1.1.0/24 vào bảng BGP. Các mạng từ 30 đến 39 được quảng bá thông qua câu lệnh redistribute eigrp 6.
Hình 12.4: Sơ đồ mạng đang chạy giao thức BGP
Trên R5, câu lệnh network chỉ lựa ra các mạng 21.0.0.0/8 và 22.1.1.0/24. Do giá trị mặt nạ trong câu lệnh không được cấu hình trong câu lệnh đầu tiên nên mặc định giá trị mặt nạ là 255.0.0.0, vì địa chỉ IP được khai báo là một địa chỉ lớp A (21.0.0.0).
Code:
[INDENT][SIZE=14px][FONT=Tahoma]router bgp 45 no synchronization bgp log-neighbor-changes network 21.0.0.0 network 22.1.1.0 mask 255.255.255.0[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# show ip | incl 21 | 22 C 21.0.0.0/8 is directly connected, Loopback20 22.0.0.0/24 is subnetted, 1 subnets S 22.1.1.0 [1/0] via 10.1.5.9[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# show ip bgp BGP table version is 38, local router ID is 5.5.5.5 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 21.0.0.0 0.0.0.0 0 32768 i *> 22.1.1.0/24 10.1.5.9 0 32768 i[/FONT][/SIZE][/INDENT]
Lệnh redistribute trong BGP có thể đưa các tuyến tĩnh, các tuyến kết nối trực tiếp và các tuyến được học thông qua giao thức IGP vào trong BGP. Cơ chế của lệnh BGP redistribute hoạt động tương tự như lệnh redistribute được mô tả trước đây. Tuy nhiên, phần này mô tả vài sự khác nhau rất tinh tế chỉ có ở BGP.
BGP không dùng khái niệm tính toán một chi phí cho một đường đi thay thế để đến một mạng nào đó. Thay vào đó, BGP dùng tiến trình ra quyết định từng bước để kiểm tra các thông số thuộc tính đường đi khác nhau để xác định đường đi tốt nhất. Kết quả là, tiến trình phân phối vào trong BGP không yêu cầu xem xét việc gán các chi phí. Tuy nhiên, một router cũng cần áp dụng một route-map trong quá trình phân phối để thao tác các thuộc tính PA, sau đó các thuộc tính này ảnh hưởng đến tiến trình ra quyết định của BGP. Nếu một giá trị chi phí được gán đến một tuyến được đưa vào trong BGP, BGP sẽ gán giá trị chi phí đó vào thuộc tính BGP MED PA, còn được biết với tên gọi khác là chi phí.
Mặc dù đặc điểm này không phải là duy nhất đối với BGP, ta cần nhớ rằng quá trình phân phối từ một giao thức IGP vào BGP có thể lấy hai tuyến: một là những tuyến được học từ giao thức IGP đó và hai là những tuyến kết nối trực tiếp có địa chỉ trùng với địa chỉ trong câu lệnh network.
Ví dụ dưới đây hiển thị R6 lấp đầy bảng BGP thông qua quá trình phân phối từ EIGRP và phân phối một tuyến tĩnh. EIGRP trên R6 học các tuyến của các mạng từ 30 đến 39. Mục đích của ví dụ này là như sau:
- Phân phối EIGRP cho các mạng 31 và 32.
- Phân phối các tuyến đường tĩnh đến mạng 34 và gán giá trị MED bằng 9.
- Không phân phối các tuyến kết nối trực tiếp mà địa chỉ trùng với địa chỉ trong câu lệnh network của EIGRP.
- Dùng lệnh no auto-summary trong hệ điều hành IOS của Cisco phiên bản 12.3.
R6 đưa các tuyến EIGRP 6 và các tuyến tĩnh vào BGP, gán giá trị chi phí bằng 9. Cũng chú ý rằng EIGRP sẽ chỉ ra các mạng 10.1.68.0/24 và 10.1.69.0/24 với câu lệnh network của nó.
Code:
[INDENT][SIZE=14px][FONT=Tahoma]router bgp 678 redistribute static metric 9 redistribute eigrp 6 ! router eigrp 6 network 10.0.0.0 ! ip route 34.0.0.0 255.0.0.0 null0[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R6# show ip bgp BGP table version is 1, local router ID is 6.6.6.6 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.1.68.0/24 0.0.0.0 0 32768 ? *> 10.1.69.0/24 0.0.0.0 0 32768 ? *> 31.0.0.0 10.1.69.9 156160 32768 ? *> 32.1.1.0/24 10.1.69.9 156160 32768 ? *> 34.0.0.0/24 0.0.0.0 9 32768 ?[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R6# show ip route eigrp 32.0.0.0/24 is subnetted, 1 subnets D 32.1.1.0 [90/156160] via 10.1.69.9, 00:12:17, FastEthernet0/0 D 31.0.0.0/8 [90/156160] via 10.1.69.9, 00:12:17, FastEthernet0/0[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]redist eigrp 6 route-map just-30-something[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R6# show route-map route-map just-30-something, permit, sequence 10 Match clauses: ip address (access-lists): permit-30-39 Set clauses: Policy routing matches: 0 packets, 0 bytes R6# sshhooww aacccceessss--lliisstt Standard IP access list permit-30-39 10 permit 32.0.0.0, wildcard bits 7.255.255.255 (1538 matches) 20 permit 30.0.0.0, wildcard bits 1.255.255.255 (1130 matches)[/FONT][/SIZE][/INDENT]
- Ảnh hưởng của lệnh auto-summary trên các tuyến ngoại lai và ảnh hưởng trên câu lệnh network
Thuật toán thì hơi khác nhau dựa trên các tuyến được đưa vào bằng lệnh redistribute hay bằng câu lệnh network. Thuật toán cho hai lệnh này được tóm tắt như sau:
- Lệnh redistribute: Khi tiến trình phân phối đưa vào các tuyến con hoặc một mạng đầy đủ, chỉ có tuyến nào ở dạng đầy đủ mới được đưa vào bảng định tuyến.
- Lệnh network: Đối với những lệnh network khai báo một địa chỉ mạng đầy đủ và không có tùy chọn mặt nạ, tuyến dạng đầy đủ sẽ được đưa vào bảng định tuyến nếu có ít nhất một mạng con của địa chỉ mạng đầy đủ tồn tại trong bảng định tuyến IP. Có một vài điểm cần giải thích và nhấn mạnh. Đầu tiên là trong quá trình phân phối, lệnh auto-summary làm cho tiến trình phân phối chỉ đưa vào những tuyến dạng đầy đủ vào trong bảng BGP cục bộ và không đưa vào các mạng con. Lệnh network, với tuỳ chọn auto-summary được cấu hình, vẫn đưa vào những mạng con dựa trên cùng một thuật toán đã mô tả trong chương này. Thêm vào đó, nếu lệnh network khai báo một địa chỉ mạng đầy đủ, BGP sẽ đưa vào địa chỉ mạng đầy đủ miễn sao là có ít nhất một mạng con của địa chỉ mạng đó tồn tại trong bảng định tuyến.
Ví dụ dưới đây mô tả ảnh hưởng của lệnh auto-summary. Ví dụ mô tả các bước sau trên R5:
- Mạng 10.15.0.0/16 được đưa vào BGP bằng lệnh redistribute.
- Nếu chế độ auto-summary được cấu hình, bảng BGP bị xóa, và giờ chỉ có mạng 10.0.0.0/8.
- Nếu chế độ auto-summary bị tắt và không cấu hình phân phối.
- Lệnh network 10.0.0.0, lệnh network 10.12.0.0 mask 255.254.0.0 và lệnh network 10.14.0.0 mask 255.255.0.0 được cấu hình. Chỉ có lệnh cuối cùng trong ba lệnh khai báo đúng một tuyến hiện có, vì vậy chỉ có tuyến này được đưa vào BGP.
- Auto-summary được bật, làm cho mạng 10.0.0.0/8 được đưa vào bảng BGP, bên cạnh tuyến 10.14.0.0/16 ban đầu.
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# show run | be router bgp router bgp 5 no synchronization redisribute connected route-map only15 no auto-summary[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# show ip route 10.0.0.0 Routing entry for 10.0.0.0/8, 4 known subnets Attached (4 connections) Redistributing via eigrp 99, bgp 5 Advertised by bgp 5 route-map only15 C 10.14.0.0/16 is directly connected, Loopback10 C 10.15.0.0/16 is directly connected, Loopback10 C 10.12.0.0/16 is directly connected, Loopback10 C 10.13.0.0/16 is directly connected, Loopback10 ! Only 10.15.0.0/16 is injected into BGP.[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# show ip bgp BGP table version is 2, local router ID is 5.5.5.5 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.15.0.0/16 0.0.0.0 0 32768 ?[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# conf t Enter configuration commands, one per line. End with CNTL/Z. R5(config)# router bgp 5 R5(config-router)# no auto-summary R5(config-router)# ^Z[/FONT][/SIZE][/INDENT][INDENT][SIZE=14px][FONT=Tahoma]R5# clear ip bgp * R5# show ip bgp BGP table version is 2, local router ID is 5.5.5.5 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0 0.0.0.0 0 32768 ?[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# conf t Enter configuration commands, one per line. End with CNTL/Z. R5(config)# router bgp 5 R5(config-router)# no auto-summary R5(config-router)# no redist conn route-map only15 R5(config-router)# no redist connected R5(config-router)# network 10.0.0.0 R5(config-router)# network 10.12.0.0 mask 255.254.0.0 R5(config-router)# network 10.14.0.0 mask 255.255.0.0 R5(config-router)# ^Z R5# clear ip bgp *[/FONT][/SIZE][/INDENT][INDENT][SIZE=14px][FONT=Tahoma]R5# sh ip bgp | begin network Network Next Hop Metric LocPrf Weight Path *> 10.14.0.0/16 0.0.0.0 0 32768 i[/FONT][/SIZE][/INDENT]
Code:
[INDENT][SIZE=14px][FONT=Tahoma]R5# sh ip bgp | begin network Network Next Hop Metric LocPrf Weight Path * 10.0.0.0 0.0.0.0 0 32768 i * 10.14.0.0/16 0.0.0.0 0 32768 i[/FONT][/SIZE][/INDENT]
- Tự động tóm tắt tuyến và thuộc tính AS_PATH
Tuyến tổng sẽ bao gồm thuộc tính AS_PATH, giống như yêu cầu cho mọi NLRI khác trong bảng BGP. Tuy nhiên, để hiểu đầy đủ lệnh này làm gì, bạn cần phải xem xét kỹ hơn thuộc tính đường đi AS_PATH.
Thuộc tính AS_PATN bao gồm bốn thành phần khác nhau, gọi là các phân đoạn như sau:
- AS_SEQ (short for AS Sequence): Số tuần tự của AS
- AS_SET: Tập hợp AS
- AS_CONFED_SEQ (short for AS Confederation Sequence): Số tuần tự của liên minh các AS
- AS_CONFED_SET: Tập hợp liên minh các AS