BGP là chủ đề quan trọng nhất trong cả kỳ thi CCIE lý thuyết và kỳ thi thực hành. Chương này mô tả làm thế nào BGP hoàn thành các tác vụ cơ bản:
- Hình thành các quan hệ láng giềng.
- Đưa tuyến vào BGP từ các nguồn khác nhau.
- Trao đổi các các tuyến với các router khác.
- Đưa tuyến vào trong bảng định tuyến.
Mặc dù những chủ đề này có một sự tương đồng với những giao thức IGP ở mức tổng thể, nhưng nếu xét trong mức chi tiết, dĩ nhiên là có rất nhiều sự khác biệt.
Chương này tập trung mô tả BGP thực hiện các tác vụ của một giao thức định tuyến. Chương 13 sẽ mô tả các chính sách định tuyến, chỉ ra các phương thức được dùng bởi BGP để giới hạn và thay đổi các bộ lọc tuyến, chỉ ra các BGP chọn ra tuyến tốt nhất giữa nhiều tuyến cùng đi về một mạng nào đó.
I. GIỚI THIỆU
Cũng giống như các giao thức nội (IGP), BGP trao đổi các thông tin về sơ đồ mạng để cuối cùng, các router học được đường đi tốt nhất về một tập hợp các địa chỉ mạng. Không giống như IGP, BGP không dùng khái niệm chi phí để chọn lựa đường đi tốt nhất giữa các chọn lựa khác nhau về cùng một mạng đích. Thay vào đó, BGP dùng vài thuộc tính về đường đi (path attibutes – PA) và một tiến trình ra quyết định liên quan.
BGP dùng thuộc tính đường dẫn hệ thống tự trị (autonomous system path - AS_PATH) như là thuộc tính mặc định khi không có thuộc tính nào khác được thiết lập và cấu hình. Nói chung, BGP dùng các thuộc tính về đường đi để mô tả đặc điểm của một tuyến.
Thuộc tính AS_PATH sẽ liệt kê đường dẫn, được định nghĩa là một chuỗi các số hiệu mạng mà một gói tin phải trải qua để đến một mạng đích nào đó. Hình 12.1 là một ví dụ.
Hình 12.1: Mô tả việc lựa chọn đường đi của BGP
Hình 12.1 mô tả một trường hợp cổ điển trong đó BGP dùng vector đường dẫn (path vector) để chọn tuyến. Trong hình, R1 học hai giá trị AS_PATH để có thể đến được mạng 9.0.0.0/8 - thông qua ASN 2-3 và thông qua qua ASN 5-4-3.
Nếu không có router nào dùng chính sách định tuyến để ảnh hưởng đến các thuộc tính khác nhằm thay đổi lựa chọn tuyến nào tốt nhất, R1 sẽ chọn tuyến có AS_PATH ngắn nhất, trong trường hợp này là AS_PATH 2-3.
BGP xem thuộc tính AS_PATH như là một vector và chiều dài của vector (là số AS trong đường đi) xác định đường đi tốt nhất. Trong BGP, thuật ngữ tuyến vẫn để ám chỉ đến các tuyến IP theo từng trạm nhưng thuật ngữ đường dẫn muốn chỉ đến một chuỗi các giá trị AS được dùng để đến một địa chỉ đích đặc biệt.
Chương này sẽ mô tả theo một thứ tự tương tự như các chương trước. Đầu tiên sẽ tập trung vào việc thiết lập quan hệ láng giềng, sau đó sẽ mô tả BGP trao đổi thông tin định tuyến với các router láng giềng. Chương kết thúc với một phần mô tả cách thức BGP thêm các tuyến IP vào bảng định tuyến của router dựa trên bảng BGP.
II. XÂY DỰNG QUAN HỆ BGP
Các láng giềng BGP hình thành một kết nối TCP với các láng giềng khác, gửi các thông điệp BGP trên kết nối này, dẫn đến đỉnh điểm là các thông điệp cập nhật BGP chứa các thông tin định tuyến.
Mỗi router cấu hình tường minh địa chỉ của router láng giềng, dùng các định nghĩa này để báo cho router những địa chỉ nào nên cố gắng thiết lập một kết nối TCP. Ngoài ra, nếu một router nhận được một yêu cầu thiết lập kết nối TCP (đến cổng TCP 179) từ một địa chỉ nguồn không được cấu hình như láng giềng BGP, router sẽ từ chối yêu cầu này.
Sau khi kết nối TCP được thiết lập, BGP bắt đầu bằng thông điệp BGP Open. Khi một cặp thông điệp BGP Open đã được trao đổi, các router láng giềng đạt được trạng thái thiết lập thành công (established), là trạng thái ổn định của hai router chạy BGP đang hoạt động.
Ở thời điểm này, các thông điệp cập nhật BGP có thể được trao đổi. Phần kế tiếp sẽ kiểm tra nhiều chi tiết về giao thức và cách cấu hình để hình thành quan hệ láng giềng BGP.
Đặc tính BGP |
Mô tả và giá trị |
Cổng TCP |
179 |
Thiết lập khoảng thời gian duy trì và thời gian hết hạn. Dùng lệnh bgp timers keepalive holdtime trong chế độ cấu hình router và neighbor timers cho từng router láng giềng |
Mặc định bằng 60 giây và 180 giây. Định nghĩa khoảng thời gian giữa các thông điệp duy trì và khoảng thời gian im lặng có nghĩa là láng giềng không hoạt động nữa. |
Điều gì làm cho một router láng giềng là iBGP? |
Router láng giềng trong cùng AS. |
Điều gì làm cho một router láng giềng là eBGP? |
Router láng giềng khác AS |
Router ID trong BGP được xác định như thế nào? |
Theo thứ tự: Lệnh bgp router-id. Địa chỉ IP cao nhất của cổng loopback ở thờI điểm tiến trình BGP khởi động. Địa chỉ IP cao nhất của một cổng nào đó ở thời điểm tiến trình BGP khởi động. |
Địa chỉ IP nguồn được dùng để đến một router láng giềng được xác định bằng cách nào? |
Định nghĩa bằng câu lệnh neighbor update-source hoặc ở chế độ mặc định, địa chỉ của cổng ra dùng để đi đến router láng giềng. |
Địa chỉ đích được dùng để đến láng giềng được xác định như thế nào? |
Định nghĩa tường minh bằng câu lệnh neighbor |
Tính năng auto-summary |
Mặc định là tắt. Bật lên bằng câu lệnh auto-summary |
Xác thực với router láng giềng |
Chỉ hỗ trợ MD5, dùng câu lệnh neighbor password |
Bảng 12.1: Bảng tóm tắt một số đặc điểm của BGP
1.Các router láng giềng nội vùng
Một router BGP xem một láng giềng là kiểu nội vùng iBGP hay là một láng giếng ngoại vùng eBGP. Hai kiểu router láng giềng chỉ khác nhau chút ít khi hình thành quan hệ láng giềng. Sự khác biệt trở nên đáng kể khi xem xét ảnh hưởng của kiểu quan hệ lên tiến trình cập nhật và việc thêm vào các tuyến trong bảng định tuyến.
Các router kiểu iBGP thường dùng địa chỉ các cổng loopback để quan hệ BGP đạt được tính ổn định cao. Bên trong một AS, sơ đồ kết nối vật lý thường có ít nhất hai tuyến giữa từng cặp router. Nếu router chạy BGP dùng địa chỉ cổng cho kết nối TCP và nếu cổng đó bị hỏng, vẫn còn một tuyến đường giữa hai router, nhưng kết nối TCP cũng sẽ thất bại.
Bất cứ lúc nào hai router BGP có nhiều hơn một đường đi thông qua đó nó có thể đến router khác, việc dùng cổng loopback là hợp lý nhất. Ví dụ đầu tiên mô tả vài cấu hình BGP cơ bản cho quan hệ iBGP R1, R2 và R3 trong AS 123, với các đặc điểm sau:
- Ba router trong AS 123 sẽ hình thành quan hệ iBGP với nhau đầy đủ (full mesh).
- R1 sẽ dùng lệnh bgp router-id để cấu hình RID của nó chứ không dùng cổng loopback.
- R3 dùng cấu hình peer-group cho hai láng giềng R1 và R2. Điều này cho phép dùng ít lệnh cấu hình hơn và cải tiến hiệu xuất xử lý bằng cách chuẩn bị chỉ một tập hợp các gói tin cập nhật cho từng nhóm láng giềng. Các cập nhật giống nhau được gửi ra tất cả các láng giềng trong nhóm láng giềng.
- Quan hệ giữa R1 và R3 dùng xác thực BGP là MD5 và là kiểu xác thực duy nhất được hỗ trợ trong IOS của Cisco.
Hình 12.2: Sơ đồ mạng sử dụng BGP
Cấu hình R1
R1 sẽ gán chính xác địa chỉ nguồn update-source bằng giá trị 1.1.1.1 cho cả R2 và R3 để có thể tương thích đúng với câu lệnh neighbor trên R2 và R3. Ba dòng đầu tiên trong cấu hình không được nhập vào nhưng các dòng này được tự động thêm vào theo mặc định của IOS phiên bản 12.3. Thật ra, IOS phiên bản 12.3 chỉ ra rằng chế độ sync và auto-summary của 12.2 đã thay đổi sang no sync và no auto-summary khi chuyển qua 12.3. Ngoài ra, R1 biết rằng láng giềng 2.2.2.2 và 3.3.3.3 là các iBGP bởi vì giá trị remote-as đúngbằng giá trị AS trong câu lệnh router BGP.
Interface Loopback1
ip address 1.1.1.1 255.255.255.255
!
router bgp 123
no synchronization
bgp router-id 111.111.111.111
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 123
neighbor 2.2.2.2 update-source Loopback1
neighbor 3.3.3.3 remote-as 123
neighbor 3.3.3.3 password secret-pw
neighbor 3.3.3.3 update-source Loopback1
no auto-summary
Cấu hình R3
R3 dùng một nhóm được gọi là my-as để kết hợp các lệnh liên quan đến R1 và R2. Chú ý rằng không phải tất cả các thông số đều nằm trong peer-group: R3-R2 không dùng xác thực nhưng R3-R1 thì có vì vậy câu lệnh neighbor password không được đặt trong peer-group nhưng được đặt trong câu lệnh neighbor 1.1.1.1.
interface Loopback1
ip address 3.3.3.3 255.255.255.255
!
router bgp 123
no synchronization
bgp log-neighbor-changes
neighbor my-as peer-group
neighbor my-as remote-as 123
neighbor my-as update-source Loopback1
neighbor 1.1.1.1 peer-group my-as
neighbor 1.1.1.1 password secret-pw
neighbor 2.2.2.2 peer-group my-as
no auto-summary
Kế tiếp R1 có hai láng giềng được thiết lập nhưng trạng thái “established” không phải do bởi trạng thái chỉ ra trong cột State/PfxRcd. Khi được thiết lập, cột này sẽ liệt kê số địa chỉ mạng được học thông qua các cập nhật BGP nhận được từ từng router láng giềng. Cũng chú ý rằng R1 được cấu hình router ID và router ID không được dùng như là địa chỉ nguồn cập nhật.
R1# show ip bgp summary
BGP router identifier 111.111.111.111, local AS number 123
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2.2.2.2 4 123 59 59 0 0 0 00:56:52 0
3.3.3.3 4 123 64 64 0 0 0 00:11:14 0
Một vài đặc điểm là đặc biệt quan trọng trong ví dụ trên.
- Đầu tiên, chú ý rằng cấu hình không chỉ ra một láng giềng là iBGP hay eBGP. Thay vào đó, mỗi router sẽ kiểm tra chỉ số ASN trong câu lệnh router bgp và so sánh với giá trị ASN trong câu lệnh neighbor remote-as của router láng giềng. Nếu hai giá trị này là giống nhau, quan hệ là iBGP và nếu không giống, quan hệ là eBGP.
- R3 trong ví dụ trên cũng mô tả cách dùng lệnh tổ hợp lệnh peer-group để giảm các lệnh cấu hình. Peer-group của BGP không cho phép bất kỳ các cấu hình BGP mới nào. Tổ hợp lệnh peer-group chỉ đơn giản cho phép bạn nhóm các câu lệnh neighbor vào cùng một nhóm và sau đó áp dụng vào láng giềng dùng lệnh neighbor peer-group.
- Thêm vào đó, BGP xây dựng một tập hợp các thông điệp cập nhật cho peer-group, áp đặt các chính sách định tuyến cho toàn bộ nhóm, chứ không cho từng router. Vì vậy công cụ này giúp giảm phí tổn xử lý và bộ nhớ.
2.Các router BGP láng giềng ngoại vùng
Kết nối vật lý giữa các láng giềng eBGP thường là một đường truyền, chủ yếu là do kết nối được thực hiện giữa các công ty khác nhau trong các AS khác nhau. Kết quả là, eBGP có thể chỉ dùng một địa chỉ nào đó để dự phòng, bởi vì nếu đường truyền bị sự cố, kết nối TCP cũng sẽ bị rớt. Lúc này không còn một tuyến đường giữa các router.
Ví dụ trong hình 12.2, quan hệ eBGP R1-R6 dùng địa chỉ cổng định nghĩa trong câu lệnh neighbor. Khi có kết nối dự phòng IP tồn tại giữa hai láng giềng eBGP, lệnh neighbor nên dùng địa chỉ cổng loopback để tận dụng khả năng dự phòng đó. Ví dụ nếu có hai đường truyền song song tồn tại giữa R3 và R4. Khi câu lệnh neighbor tham chiếu địa chỉ cổng loopback, nhưng kết nối TCP vẫn tồn tại. Ví dụ này có thêm vào vài câu lệnh, hiển thị cách dùng cổng loopback giữa R3 và R4 và cách dùng địa chỉ cổng giữa R1 và R6. Lưu ý, ví dụ này chỉ hiển thị những lệnh được thêm vào so với ví dụ trước
Cấu hình R1
router bgp 123
neighbor 172.16.16.6 remote-as 678
R1 không có cấu hình câu lệnh neighbor 172.16.16.6 update-source. R1 sẽ dùng địa chỉ cổng s0/0/0.6, địa chỉ 172.16.16.1 bởi vì đường đi của R1 về 172.16.16.6 dùng cổng s0/0/0.6 nhưng là cổng ra.
R1# show ip route 172.1.16.6
Routing entry for 172.16.16.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via Serial0/0/0.6
Route metric is 0, traffic share count is 1
R1# show ip int brief | include 0/0/0.6
Serial0/0/0.6 172.16.16.1 YES manual up up
Cấu hình R3. Bởi vì R3 chỉ đến cổng loopback của R4 (4.4.4.4) và R4 là một láng giềng eBGP, R3 và R4 đã thêm vào câu lệnh neighbor ebgp-multihop 2. Lệnh này gán giá trị TTL bằng 2. Nguồn cập nhật của R3 (update source) phải được chỉ ra như là cổng loopback để đúng bằng câu lệnh neighbor 3.3.3.3 trên R4.
router bgp 123
neighbor 4.4.4.4 remote-as 45
neighor 4.4.4.4 update-source loopback1
neighbor 4.4.4.4 ebgp-multihop2
Hiện giờ R3 có ba router láng giềng đang hoạt động. Cũng chú ý rằng có ba kết nối TCP, mỗi kết nối cho từng láng giềng BGP. Chú ý rằng bởi vì R3 được liệt kê dùng cổng động và R4 dùng cổng 170, nên ta thấy thật ra R3 đã khởi tạo kết nối đến R4.
R3# show ip bgp summary
BGP router identifier 3.3.3.3, local AS number 123
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 123 247 247 0 0 0 03:14:49 0
2.2.2.2 4 123 263 263 0 0 0 03:15:07 0
4.4.4.4 4 45 17 17 0 0 0 00:00:11 0
R3# show tcp brief
TCB Local Address Foreign Address (state)
649DD08C 3.3.3.3.179 2.2.2.2.43521 ESTAB
649DD550 3.3.3.3.179 1.1.1.1.27222 ESTAB
647D928C 3.3.3.3.21449 4.4.4.4.179 ESTAB
Cấu hình eBGP thì khác với cấu hình iBGP ở vài điểm nhỏ. Đầu tiên, câu lệnh neighbor remote-as tham chiếu đến một AS khác với AS trong câu lệnh router bgp thì router láng giềng là eBGP. Thứ hai, R3 phải cấu hình câu lệnh neighbor 4.4.4.4 ebgpmultihop 2 và R4 cũng phải có câu lệnh tương tự, nếu không kết nối không được hình thành.
Đối với các cấu hình eBGP, IOS của Cisco mặc định dùng trường TTL của gói tin có giá trị bằng 1, dựa trên một giả thiết rằng địa chỉ cổng kết nối trực tiếp sẽ được dùng trong thiết lập quan hệ, giống như R1-R6 trong ví dụ trên. Trong ví dụ này, nếu R3 không dùng tính năng đa chặng (multihop), nó sẽ gửi gói tin đến R4 với TTL 1. R4 sẽ nhận gói tin (TTl 1 ở thời điểm đó) và sau đó cố gắng định tuyến gói tin đến cổng loopback của nó. Động tác này sẽ trừ TTL về 0, làm cho R4 loại bỏ gói tin. Vì vậy ngay cả khi router chỉ có cách 1 chặng, hãy xem cổng loopback là ở đầu xa của kết nối, cần phải có thêm vào các chặng.