Tác Giả:
Dương Cao Đại Nghĩa
Hoàng Đình Đồng
Danh mục hình vẽ
Danh mục bảng biểu
Danh mục các từ viết tắt
Phần mở đầu:
I.Mục Tiêu Nghiên Cứu
II.Tính Cấp Thiết Của Đề Tài
Chương I:Khái niệm và hoạt động của BGP
I.1. Khái niệm
I.1.1. Khái niệmBorder Gateway Protocol
I.1.2. Các khái niệm liên quan
I.1.3. Thuật ngữ trong BGP
I.2. Hoạt động của BGP
I.2.1. Định dạng phần đầu thông điệp
I.2.2. Thông điệp OPEN
I.2.3. Thông điệp UPDATE
I.2.4. Thông điệp KEEPALIVE
I.2.5. Thông điệp NOTIFICATION
I.2.6. Thương lượng với Neighbor Router
I.2.7. Chọn tuyến đường
I.2.8. Đồng bộ hoá BGP
I.2.9. Tổng hợp các tuyến đường
I.3. Khi nào sử dụng và không sử dụng BGP
I.3.1. Khi nào dùng BGP
I.3.2. Khi nào khôn dùng BGP
CHƯƠNG II: Cấu hình và kiểm tra hoạt động của BGP
II.1.Cấu hình BGP
II.1.1.Cấu hình Minimal BGP
II.1.2.Cấu hình iBGP and eBGP
II.1.3.Cấu hình eBGP Multihop
II.1.4.Thêm Routes vào BGP
II.2. Kiểm tra và khắc phụchoạt động của BGP
II.2.1. Xem thông tin định tuyến
II.2.2. Xem thông tin củaRouter láng giềng
CHƯƠNG III: BGP NÂNG CAO
III.1 Khắc phục khả năng mở rộng giới hạn của iBGP
III.1.1. Route Reflection
III.1.2. Cấu hình Route Reflection cho iBGP
III.1.3. Confederations
III.1.4. Cấu hình Confederations
III.2. Lọc BGP
III.2.1. Phân loại danh sách
III.2.2. Thêm vào danh sách (Prefix Lists)
III.2.3. Bản đồ định tuyến
III.3. Các tác động
III.4. Các nhóm ngang hàng
III.5. Đa kết nối internet trong BGP
III.6. Giải quyết vấn đề Next-Hop
III.7. Tổng hợp tuyến đường
88 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3955 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Tìm hiểu về giao thức định tuyến border gateway protocol, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thành phase 1. Với mỗi route mà BGP speaker nhận được, nó tính độ ưu tiên dựa trên policy đã được định sẵn.
Giai đoạn 2:
Được gọi là giai đoạn lựa chọn routes.Ở giai đoạn này BGP speaker sẽ khóa Adj-RIBs-In và mở khóa chúng khi giai đoạn này hoàn thành. Nếu route nào có thuộc tính NEXT_HOP là một địa chỉ IP mà speaker không thể đi tới địa chỉ đó thì route đó sẽ bị loại bỏ. BGP speaker sẽ chọn route mà chỉ có duy nhất route đó có thể tới địa chỉ đích. Nếu có nhiều route cùng tới địa chỉ đích thì BGP speaker sẽ lựa chọn route có độ ưu tiên cao nhất. Route này sẽ được chứa trong Loc-RIB của speaker. Nếu các route trùng địa chỉ đích mà có độ ưu tiên bằng nhau, thì speaker sẽ xử lí theo rules sau:
Nếu BGP speaker được cấu hình để sử dụng MULTI_EXIT_DISC(MED) và MED của các routes khác nhau, BGP sẽ chọn route với MED nhỏ nhất.
Nếu BGP speaker không được cấu hình để sử dụng MED hoặc MED của các route không khác nhau,
Nếu cost của routes không khác nhau, BGP speaker sẽ chọn route được quảng bá bởi speaker ở AS kế, với giá trị BGP identifier nhỏ nhất.
Nếu route không được quảng bá bởi speaker ở AS kế thì BGP speaker sẽ chọn route được quảng bá ở iBGP peers với giá trị BGP identifier nhỏ nhất.
Giai đoạn 3:
Được gọi là giai đoạn phổ biến route. Giai đoạn này sẽ bắt đầu khi những event sau xảy ra:
Khi giai đoạn 2 hoàn tất.
Khi route được chứa trong Loc-RIB, thay đổi địa chỉ đích local.
Khi bất kì routes đã được tạo ra, không được học bởi BGP, thay đổi.
Khi một kết nối BGP được thiết lập.
Trong giai đoạn 3, routes chứa trong Loc-RIB sẽ được đưa vào cơ chế outbound policy.Các route qua được cơ chế outbound policy sẽ được vào Adj-RIBs-Out. Những route này sẽ được quảng bá tới peers. BGP speaker có thể summarized routes ở giai đoạn này.
Cơ chế làm việc của BGP trong thiết bị của Cisco:
Nếu route có chứa next hop mà không thể tới được, drop quá trình update.
Ưu tiên route có weight lớn nhất.
Nếu cùng số weight, sẽ xét tới độ ưu tiên local(local preference) lớn nhất.
Nếu cùng độ ưu tiên local(local preference), ưu tiên các route được tạo bởi BGP chạy trên router đang xét, với những route được tạo bởi lệnh network hay redistributeưu tiên các route được tạo bởi lệnh aggregate-address.
Nếu không có route nào được tạo ở router đang xét, ưu tiên các route có AS_PATH nhỏ nhất. Tất cả các AS_SET đếm cùng lúc, không quan tâm đến kích cỡ và việc đếm các liên AS không được sử dụng.
Nếu route có cùng AS, ưu tiên các route có loại origin nhỏ nhất, IGP nhỏ hơn EGP, EGP nhỏ hơn INCOMPLETE. INCOMPLETE route thường là được quảng bá lại mà có.
Nếu origin code giống nhau, ưu tiên route có MED nhỏ nhất.
Nếu route có cùng MED, ưu tiên route học từ eBGP hơn route học từ iBGP.
Nếu route vẫn giống nhau, ưu tiên route đi đến BGP next hop với IGP metric nhỏ nhất.
Ưu tiên route được quảng bá bởi BGP router với BGP router ID nhỏ nhất
Ưu tiên path có chiều dài cluster list nhỏ nhất.
Ưu tiên path được quảng bá bởi neighbor có địa chỉ IP nhỏ nhất.
Route Filtering:
Nó được dùng để chỉnh sửa các thuộc tính của một BGP, permit hoặc deny một route.
BGP route filtering có 2 loại:
Ingress filtering: xảy ra khi một route được nhận bởi 1 speaker và đi qua cơ chế inbound policy.Người quản trị sẽ đặt policy để permit hoặc deny một route cụ thể hoặc đặt policy để chỉnh sửa 1 thuộc tính của BGP. Ví dụ: chỉnh sửa local preference của route. Như vậy sẽ quản lý các route chứa trong Loc-RIB của speaker tốt hơn.
Egress filtering: khi một route đi vào cơ chế oubound policy. Cách hoạt động Egress filtering cũng giống như Ingress filtering. Chỉ khác là BGP speaker đưa ra quyết định về 1 route được quảng bá và chỉnh sửa thuộc tính của route đó.
Có nhiều cách để sử dụng BGP route filtering. Ba kĩ thuật filtering được sử dụng phổ biến là: route maps, distribute lists, prefix lists.
Route maps: kĩ thuật này cho phép user có thể quản lý cơ chế lựa chọn routing. Route maps là một chuỗi các lệnh set và match. Lệnh matchdùng để quyết định IP route nào được permit hay deny.Lệnh setđược dùng để chỉnh sửa thuộc tính của path.Route maps có thể được sử dụng như là ingress hay egress filters.
Distribute lists: là filters có thể sử dụng như là ingress hoặc egress filter. Không giống nhưu route maps cho phép bạn chỉnh sử thuộc tính của route, distribute lists chỉ cho phép bạn permit hay deny route. Distribute lists thường đi cùng với access list hay prefix list.
Prefix lists: giống như access list. Nó có thể dùng để hạn chế thông tin được quảng bá đến router hoặc từ router quảng bá đi. Ưu điểm của prefix list là chứa một chuỗi số cho mỗi dòng của prefix list. Nó cho phép add, remove, và modify dòng trong prefix list mà không cần delete và tạo lại routenhư access list.
I.2.8. Đồng bộ hoá BGP (BGP Synchronization):
Để hiểu về nó, ta cần phân biệt sự khác nhau giữa transit AS và stub AS.
Transit AS: là AS kết nối với nhiều AS khác và cho phép route học từ AS này được vận chuyển tới AS khác.
Hình 9
AS 200 ở trong hình là transit AS. Những routes học từ AS 300 sẽ được chuyển qua AS 200 và AS 100 sẽ nhận qua các route đó và ngược lại.
Stub AS : là AS không cho phép thông tin truyền qua nó tới AS khác. Trong hình trên AS 300 và AS 100 là Stub AS. AS 100,300 là single-homed AS. Một single-homed AS là một AS chỉ có một đường đến AS khác. Tất cả các single-home AS là Stub AS.
BGP synchronization yêu cầu BGP phải được đồng bộ với IGB trước khi thông tin được vận chuyển. Nói cách khác eBGP speaker sẽ đợi để nhận quảng bá về một route nó học qua iBGP từ IGB chạy trong AS, trước khi quảng bá route cho một eBGP neighbor.
Hình 10
Trong hình, R1 và R2 là eBGP peers, R2 và R4 là iBGP peers, R4 và R5 là eBGP peers, R3 không chạy BGP. Chuyện gì sẽ xảy ra nếu R1 gửi 1 packet đi đến R5? R2 sẽ nhận packet và gửi cho R3 bởi vì R3 là IGP next hop để R2 đi đến R4, BGP next hop. Vì R3 không chạy BGP nên không biết làm sao để đến R5. Nên R3 sẽ drop packet. Cách giải quyết:
Bạn có thể quảng bá BGP routes đến IGP nhưng cách này không hiệu quả vì BGP routes rất nhiều có thể gây router chạy IGP treo.
Chạy iBGp trên R3, nó cho phép disable đồng bộ BGP. Làm như vậy R3 sẽ biết làm sao để đến R5 là qua R4. Trở thành iBGP thì R3 sẽ được R4 thông báo nó là BGP next hop để tới R5 và R2 cũng học được như vậy.
Có 2 điều kiện để tắt đồng bộ là:
AS là stub AS.
Tất cả các router trong AS chạy iBGP và được cấu hình TCP full mesh với một router khác. Bởi vì full mesh iBGP có yêu cầu cao và thường được điều chỉnh, những thiết bị chạy BGP trên thế giới đều tắt BGP synchronization. Để tắt nó ta gõ lệnh sau ở trong mode configuration :
no synchronization
I.2.9. Tập hợp các tuyến đường (Route Aggregation):
Được hiểu như là route summarization, ta có thể kết hợp nhiều route thành một route. Sử dụng nó thì số route trong routing table sẽ ít đi và tiêu tốn ít bộ nhớ hơn. Nó xảy ra trong giai đoạn 3 của BGP decision process.
Nếu routes có thuộc tính MED và NEXT_HOP thì hai thuộc tính này phải giống nhau để routes được summarized.
Paths với các thuộc tính type code khác nhau thì không thể gộp lại.
Paths với các thuộc tính type code giống nhau thì có thể được gộp lại.
I.3. Khi nào sử dụng và không sử dụng BGP:
I.3.1. Khi nào thì dùng BGP?
Khi bạn cần phải thiết lập policies cho inbound hay outbound.
Khi network có nhiều kết nối đến các AS khác nhau, và bạn muốn AS của bạn truyền các thông tin từ AS này đến AS khác(Transit AS).
Khi bạn kết nối các ISP với nhau.
I.3.2. Khi nào thì không dùng BGP?
Router trong network của bạn không đủ bộ nhớ. Số lượng route tồn tại trong Internet lớn.
AS của bạn chỉ kết nối với 1 AS khác và không cần policy để quản lí.
Network không đủ bandwidth để hỗ trợ traffic BGP.
CHƯƠNG II: CẤU HÌNH, KIỂM TRA HOẠT ĐỘNG BGP
II.1. Cấu hình BGP
II.1.1. Cấu hình Minimal BGP:
Hình 11
Để enable BGP trên thiết bị ta cần sử dụng các command trong mode configuration sau:
router bgp
Hãy sử dụng câu lệnh trên và enable BGP trên các router:
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#^Z
R1#
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 200
R2(config-router)#^Z
R2#
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 300
R3(config-router)#^Z
R3#
Sau khi enable BGP trên router chúng ta cần add các router để lập peers relationship. BGP yêu cầu chúng ta phải set neighbor bằng command.
neighbor remote-as
address – địa chỉ router.
AS-number – chỉ số AS của router.
Cấu hình trên các thiết bị:
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#neighbor 10.10.10.2 remote-as 200
R1(config-router)#^Z
R1#
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 200
R2(config-router)#neighbor 10.10.10.1 remote-as 100
R2(config-router)#neighbor 20.20.20.1 remote-as 300
R2(config-router)#^Z
R2#
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 300
R3(config-router)#neighbor 20.20.20.2 remote-as 200
R3(config-router)#^Z
R3#
II.1.2. Cấu hình iBGP và eBGP:
Khi cấu hình iBGP và eBGP. Địa chỉ loopback của mỗi router tham gia iBGP được sử dụng trong lệnh neighbor. Các interface kết nối trực tiếp được sử dụng cho kết nối eBGP.
Sử dụng địa chỉ loopback cho iBGP session là một ý hay vì nó không bao giờ down. Nếu một speaker có nhiều đường để đến iBGP neighbor và một trong số chúng down thì kết nối luôn được up vì có 1 route khác cũng đi đến địa chỉ đích đó. Khi sử dụng loopback interface cho BGP session, chúng ta cần enter lệnh sau:
neighbor update-source
address – địa chỉ IP của thiết bị cần đến.
interface – interface để làm source cho BGP session.
Không có lệnh này, BGP speaker sẽ không bao giờ trở thành peers với 1 speaker khác. Lí do là BGP speaker kia chờ để nhận packet từ địa chỉ loopback của BGP speaker, nhưng nếu không có từ khóa update-source, BGP packet sẽ sử dụng địa chỉ outbound interface của BGP speaker. Remote BGP speaker nhận packet và sẽ drop gói vì đó không phải địa chỉ IP nguồn nó đợi nhận packet.Với từ khóa update-source , packet sẽ lấy địa chỉ của Loopback interface.
Ở hình trên chúng ta không muốn BGP đồng bộ với IGP nên để tắt đồng bộ, chúng ta sẽ gõ câu lệnh no synchronization trên mỗi router của AS 200.
Các loopback:
R2 Lo0-2.2.2.2
R3 Lo0-3.3.3.3
R4 Lo0-4.4.4.4
Hình 12
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#neighbor 10.10.10.2 remote-as 200
R1(config-router)#^Z
R1#
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 200
R2(config-router)#neighbor 10.10.10.1 remote-as 100
R2(config-router)#neighbor 3.3.3.3 remote-as 200
R2(config-router)#neighbor 4.4.4.4 remote-as 200
R2(config-router)#neighbor 3.3.3.3 update-source Lo0
R2(config-router)#neighbor 4.4.4.4 update-source Lo0
R2(config-router)#no synchronization
R2(config-router)#^Z
R2#
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 200
R3(config-router)#neighbor 2.2.2.2 remote-as 200
R3(config-router)#neighbor 4.4.4.4 remote-as 200
R3(config-router)#neighbor 2.2.2.2 update-source Lo0
R3(config-router)#neighbor 4.4.4.4 update-source Lo0
R3(config-router)#no synchronization
R3(config-router)#^Z
R3#
R4#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R4(config)#router bgp 200
R4(config-router)#neighbor 20.20.20.1 remote-as 300
R4(config-router)#neighbor 3.3.3.3 remote-as 200
R4(config-router)#neighbor 2.2.2.2 remote-as 200
R4(config-router)#neighbor 3.3.3.3 update-source Lo0
R4(config-router)#neighbor 2.2.2.2 update-source Lo0
R4(config-router)#no synchronization
R4(config-router)#^Z
R4#
R5#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)#router bgp 300
R4(config-router)#neighbor 20.20.20.2 remote-as 200
R5(config-router)#^Z
R5#
Chúng ta thấy eBGP và iBGP không khác nhau nhiều, cái quyết định giữa eBGP và iBGP là remote BGP speaker có cùng AS hay không mà thôi.
II.1.3. Cấu hình eBGP multihop:
Đây là phương pháp được dùng khi remote BGP speaker mà router của bạn muốn kết nối đến không phải là kết nối trực tiếp(tức là kết nối giữa local BGP speaker ergess interface và remote BGP speaker ingress interface không phải là kết nối trực tiếp).Có các trường hợp sau:
Có một router nằm giữa local BGP speaker và remote BGP speaker, mà router đó không chạy BGP.
Bạn đang tìm nguồn cung ứng BGP từ một loopback interface mà trong BGP có hơn một speaker tham gia.
Một vài chú ý: Khi 2 BGP speaker tham gia thì phải có có 1 route để connect. Route này có thể được học từ IGPs. Route này không là default route. Nếu route này không tồn tại thì các BGP speaker không thể trở thành peers của nhau bởi vì chúng không thể thấy nhau. Để cấu hình eBGP multihop, bạn phải gõ lệnh trên cả 2 speaker như sau:
neighbor address ebgp-multihop [ttl]
address – địa chỉ IP của thiết bị kia.
ttl – số router đi qua tối đa để đến remote BGP speaker.
Hình 13
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#neighbor 3.3.3.3 update-source Lo0
R1(config-router)#neighbor 3.3.3.3 ebgp-multihop
R1(config-router)#^Z
R1#
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 200
R3(config-router)#neighbor 1.1.1.1 update-source Lo0
R3(config-router)#neighbor 1.1.1.1 ebgp-multihop
R3(config-router)#^Z
R3#
II.1.4. Thêm route vào bgp:
Có 2 cách:
Bạn có thể redistribute IGP vào BGP. Redistribute là quá trình đưa các route được học từ 1 routing protocol này vào 1 routing protocol khác.
Tự cấu hình routes cho BGP để quảng bá.
Tùy số route mà bạn muốn thêm vào BGP mà chọn giải pháp phù hợp. Nếu chỉ thêm vài route vào BGP, thì nên chọn tự cấu hình, ngược lại bạn nên redistribute IGP vào BGP.
Nhưng tốt nhất thì bạn nên chọn cách tự cấu hình. Bởi vì nếu bạn có một route flaps( up down liên tục) thì sẽ bị routers trên Internet cấm và bị remove khỏi bảng định tuyến như vậy sử dụng redistribute là không phù hợp.
Manually Injecting Route:
Giúp bạn lựa chọn được route nào sẽ được BGP speaker quảng bá tới peers.
network network-address mask subnet-mask
network-address – địa chỉ của network muốn quảng bá.
subnet-mask – subnet mask của network muốn quảng bá
Hình 14
Trong hình chúng ta sẽ cấu hình eBGP giữa R2 và R3. Loopback của R2 và R3 được sử dụng cho BGP session. R1 và R2 chạy IGP giữa chúng. R2 biết Ethernet segment của R1, R1 không chạy BGP. Chúng ta muốn R2 quảng bá các kết nối của nó tới R1 và quảng bá Ethernet segment của R1 tới R3, R3 quảng bá Ethernet segment của nó tới R2.
R2-Loopback0 2.2.2.2
R3-Loopback0 3.3.3.3
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 100
R2(config-router)#neighbor 3.3.3.3 remote-as 200
R2(config-router)#neighbor 3.3.3.3 update-source Lo0
R2(config-router)#neighbor 3.3.3.3 ebg-multihop
R2(config-router)#network 10.10.10.0 mask 255.255.255.252
R2(config-router)#network 192.168.24.0 mask 255.255.255.0
R2(config-router)#^Z
R2#
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 200
R3(config-router)#neighbor 2.2.2.2 remote-as 100
R3(config-router)#neighbor 2.2.2.2 update-source Lo0
R3(config-router)#neighbor 2.2.2.2 ebg-multihop
R3(config-router)#network 192.168.100.0 mask 255.255.255.0
R3(config-router)#^Z
R3#
Phải đảm bảo route bạn thêm vào phải có trong routing table của BGP speaker.
Redistribute Routes into BGP:
Giúp bạn thêm một lượng lớn routes vào BGP và quảng bá, đỡ tốn thời gian nhập từng route.
redistribute protocol process-id
protocol – routing protocol quảng bá.
process-id – nếu protocol là IGRP hoặc EIGRP thì nó là số AS.
- nếu là OSPF nó sẽ là process-id.
- nếu là RIP hoặc IS-IS thì process-id không cần thiết.
Nếu một speaker không có chạy một IGP nào mà ta muốn quảng bá tất cả các route nó có:
redistribute connected
II.2. Kiểm tra và khắc phục hoạt động của BGP
II.2.1. Xem thông tin định tuyến (Route information):
Ta sử dụng các câu lệnh:
show ip route
Chỉ có một số route học được từ BGP được đưa lên bảng routing. Nếu bạn muốn xem tất cả các route học từ BGP:
show ip bgp
Dấu * biểu thị đó là một route có thể tới. Nếu route có > ở trước thì nó đã được đặt vào bảng định tuyến. Chữ I biểu thị route được học từ iBGP.
II.2.2. Xem thông tin Router láng giềng:
show ip bgp summary
Chỉ ra các thông tin cơ bản về bgp trên thiết bị. Nếu bạn muốn xem chi tiết hơn:
show ip bgp neighbor
Ngoài ra bạn có thể restart BGP peering session bằng lệnh :
clear ip bgp
Hoặc: clear ip bgp số AS của peers mà bạn muốn restart BGP session.
Nếu bạn dùng clear ip bgp * nó sẽ restart tất cả BGP peers session.
CHƯƠNG III: BGP NÂNG CAO
Ở chương này, chúng ta sẽ giải quyết vấn đề khả năng mở rộng của iBGP và cách khắc phục những hạn chế của nó. Đồng thời trong chương này, chúng ta cùng tìm hiểu sâu về policy trong BGP.
III.1. Khắc phục khả năng mở rộng giới hạn của iBGP
Khi một network được mở rộng, iBGP sẽ có vấn đề vì cách hoạt động của BGP là phải full mesh trong AS.Vì thiết bị chạy iBGP sẽ không quảng bá route chúng học được tới iBGP neighbor nên BGP yêu cầu network phải full mesh.
Khi một network có n BGP speaker, chúng ta cần n(n-1)/2 session để đảm bảo network được full mesh. Vậy khi có 16 iBGP speaker chúng ta cần 120 session. Với một mạng cỡ lớn thì đây là vấn đề rất khó xử lý vì chúng ta không thể quản lý hết được số session này.
Có các giải pháp để full mesh iBGP network được sử dụng đến nay:
Route reflection.
Confederation.
III.1.1. Route Reflection:
Route reflection được định nghĩa trong rfc 1966 và rfc 2796. Cơ chế này cho phép BGP speaker(route reflector) quảng bá route học được từ iBGP đến một số iBGP speaker khác. Điều này khắc phục được hạn chế không quảng bá route học được từ iBGP đến iBGP speaker khác của BGP speaker.
Một số thuật ngữ:
Route reflection: là hoạt động quảng bá route học được từ iBGP đến iBGP speaker khác của BGP speaker.
Route reflector : chính là BGP speaker đã quảng bá route học từ iBGP đến các iBGP peers khác.
Reflected route: là route được quảng bá.
Client peers: là các BGP speaker được nhận route từ route reflector và nằm trong cluster của route reflector đó.
Non-client peers: là BGP speaker phải được full mesh và không có trong cluster của route reflector.
Cluster: là route reflector và các client peers của nó.
Có 3 tiêu chí cụ thể mà Route Reflector phải có:
Simplicity (đơn giản): cách full mesh iBGP phải đơn giản và dễ cấu hình.
Easy Transition(dễ dàng chuyển đổi): khi sử dụng route reflector để chuyển đổi mạng full mesh iBGP, nó phải không làm thay đổi cấu trúc mạng hay AS.
Compatibility(Khả năng tương thích): Một BGP peers không liên quan vẫn phải tham gia trong AS mà không mất một thông tin định tuyến BGP nào.
Hỉnh 15
Hình ở trên là một iBGP network chưa được full mesh.Chuyện gì sẽ xảy ra nếu có một route được học bởi R2 từ R1:
R1 quảng bá route cho R2.
R2 học route và lưu vào bảng định tuyến.
R2 quảng bá route cho R3.
R3 học và lưu route.
R4 không được quảng bá route(do iBGP speaker không quảng bá route học từ iBGP đến iBGP speaker khác)
Sau đây là một số cách hoạt động của route reflector:
Khi reflector nhận được route từ peers không phải là client của nó:
Quảng bá lại cho tất cả client của nó.
Khi reflector nhận được route từ peers là client của nó:
Gửi cho các peers và các peers là client ngoại trừ client nó học route đó.
Khi reflector nhận route từ eBGP peers:
Gửi cho tất cả client và non-client của nó, giống như không sử dụng route reflection.
Khi route được quảng bá từ R1 sang R2:
Hình 16
R1 quảng bá route đến R2.
R2 học route.
R2 quảng bá route đến R3.
R3 học và lưu route.
R3 quảng bá route đến R4.
R4 học và lưu route.
Nhược điểm:
Khi sử dụng route reflection thay vì full mesh iBGP sẽ tạo điểm chết. Điểm đó chính là route reflector, nếu route reflector down thì các client sẽ không tới được các client khác.
Khắc Phục:
Để khắc phục nhược điểm này ta có thể đặt nhiều reflector trong cùng 1 cluster.
Khi có nhiều reflector trong cùng một cluster, chúng ta gán chúng có cluster id giống nhau để chúng không học các route từ reflector khác nhằm tránh việc loop route(vì các reflector sẽ quảng bá route đến các client và neighbor của nó.
III.1.2. Cấu hình Route Reflection cho iBGP:
Command sử dụng trên reflector:
neighbor peer-address route-reflector-client
Peer-address là địa chỉ mà bạn muốn làm client của reflector cấu hình.
Khi cấu hình nhiều reflector, ta cần cấu hình cluster id:
bgp cluster-id cluster-ID.
Cluster-ID: ID của cluster.
Ví dụ:
Hình 17
Trong ví dụ này R1 và R2 sẽ là reflector. Cluster ID là 1. Các interface:
R1 Lo0-1.1.1.1
R2 Lo0-2.2.2.2
R3 Lo0-3.3.3.3
R4 Lo0-4.4.4.4
R5 Lo0-5.5.5.5
Ta cấu hình như sau:
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#no synchronization
R1(config-router)#neighbor 2.2.2.2 remote-as 100
R1(config-router)#neighbor 2.2.2.2 update-source Lo0
R1(config-router)#neighbor 3.3.3.3 remote-as 100
R1(config-router)#neighbor 3.3.3.3 update-source Lo0
R1(config-router)#neighbor 4.4.4.4 remote-as 100
R1(config-router)#neighbor 4.4.4.4 update-source Lo0
R1(config-router)#neighbor 5.5.5.5 remote-as 100
R1(config-router)#neighbor 5.5.5.5 update-source Lo0
R1(config-router)#bgp cluster-id 1
R1(config-router)#neighbor 3.3.3.3 route-reflector-client
R1(config-router)#neighbor 4.4.4.4 route-reflector-client
R1(config-router)#neighbor 5.5.5.5 route-reflector-client
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 100
R2(config-router)#no synchronization
R2(config-router)#neighbor 1.1.1.1 remote-as 100
R2(config-router)#neighbor 1.1.1.1 update-source Lo0
R2(config-router)#neighbor 3.3.3.3 remote-as 100
R2(config-router)#neighbor 3.3.3.3 update-source Lo0
R2(config-router)#neighbor 4.4.4.4 remote-as 100
R2(config-router)#neighbor 4.4.4.4 update-source Lo0
R2(config-router)#neighbor 5.5.5.5 remote-as 100
R2(config-router)#neighbor 5.5.5.5 update-source Lo0
R2(config-router)#bgp cluster-id 1
R2(config-router)#neighbor 3.3.3.3 route-reflector-client
R2(config-router)#neighbor 4.4.4.4 route-reflector-client
R2(config-router)#neighbor 5.5.5.5 route-reflector-client
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 100
R3(config-router)#no synchronization
R3(config-router)#neighbor 1.1.1.1 remote-as 100
R3(config-router)#neighbor 1.1.1.1 update-source Lo0
R3(config-router)#neighbor 2.2.2.2 remote-as 100
R3(config-router)#neighbor 2.2.2.2 update-source Lo0
R3(config-router)#^Z
R4#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R4(config)#router bgp 100
R4(config-router)#no synchronization
R4(config-router)#neighbor 1.1.1.1 remote-as 100
R4(config-router)#neighbor 1.1.1.1 update-source Lo0
R4(config-router)#neighbor 2.2.2.2 remote-as 100
R4(config-router)#neighbor 2.2.2.2 update-source Lo0
R4(config-router)#^Z
R5#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)#router bgp 100
R5(config-router)#no synchronization
R5(config-router)#neighbor 1.1.1.1 remote-as 100
R5(config-router)#neighbor 1.1.1.1 update-source Lo0
R5(config-router)#neighbor 2.2.2.2 remote-as 100
R5(config-router)#neighbor 2.2.2.2 update-source Lo0
R5(config-router)#^Z
III.1.3. Confederations:
Confederation nằm trong rfc 1965 và rfc 3065. Nó chia AS ra thành nhiều AS con(mini-AS) để giảm bớt lượng kết nối để full mesh AS.
Ví dụ: chia AS Texas ra làm các AS con là :Dallas,Austin và Houston. Mặc dù AS bên ngoài đi vào ko thấy được sự thay đổi này. iBGP sẽ chạy trong AS con(mini-AS) và eBGP sẽ đảm nhận việc giao tiếp giữa các AS con(mini-AS) này.
Confederation giúp giảm bớt lượng kết nối iBGP trong AS và nếu cần thì thiết lập policies trong AS con. Một số thuật ngữ chúng ta cần nắm:
AS confederation là tập hợp các AS mà từ bên ngoài nhìn vô chỉ thấy là một AS lớn.
AS confederation identifier (ID) là số AS biểu thị cho AS lớn, dùng nó để giao tiếp với các AS khác.
Member-AS là một mini-AS nằm trong AS lớn.
Member-AS number là số AS biểu thị cho mini-AS nằm trong AS lớn.
Mini-AS được hiểu như AS con(member-AS).
Private AS là số AS không được quảng bá ra ngoài internet. Nó có giá trị từ 64512 đến 65534, giá trị 65535 là AS được bảo lưu và nó không được sử dụng trong khoảng private AS.
Public AS: là số AS phải đăng kí mới được sử dụng. Giá trị của nó từ 1 đến 64511 và được cấp bởi ARIN.
Khi sử dụng confederations, phải đảm bảo tất cả BGP speaker tham gia trong AS con phải được full mesh iBGP.Các AS con này đều có các thuộc tính giống như AS thông thường.
Đồng nghĩa với routing trong mini-AS sẽ giống như iBGP routing ở AS thông thường. Nên chúng ta có thể sử dụng route reflector trong mini-AS để giảm bớt kết nối full mesh.
Thuộc tính NEXT_HOP, MED, LOCAL_PREF sẽ được giữ nguyên khi đi qua biên của mini AS.
Hình 18
Ở hình trên, khi R1 quảng bá route tới R2:
R1 gửi route cho R2 và chỉ biết tới AS 200 và không biết về mini-AS.
R2 học route.
R2 gửi route cho các iBGP peers(R3 và R4).
R3 và R4 học route.
R4 gửi cho R5. Đây là eBGP session. R5 sẽ biết được route được học từ mini-AS.
R5 học route
R5 gửi route cho R6,R7.
R6 và R7 học route.
R7 gửi cho R8. R8 chỉ biết route đến từ AS 200 mà không biết gì về mini-AS.
Những hành động ở trên xảy ra như thế nào?
Khi confederation được thiết lập, có 2 trường AS_PATH mới được tạo ra:
AS_CONFED_SEQUENCE: là một danh sách thứ tự các số của mini-AS mà gói UPDATE đã được gửi đến. Đây là AS_PATH Type 3.
AS_CONFER_SET: là một danh sách không có thứ tự các số của mini-AS mà gói UPDATE được gửi đến. Đây là AS_PATH type 4.
Cách thức hoạt động khi R1 quảng bá route đến R2:
R2 học route.
R2 không thay đổi AS_PATH vì nó không có eBGP peers để quảng bá route.
R2 quảng bá route cho iBGP peers trong mini-AS.
R3 và R4 học route.
R3 cũng không thay đổi AS_PATH.
R4 kiểm tra eBGP peers của nó có nằm trong confederation không. Trường hợp này là có.
R4 quảng bá route cho R5.
R5 học route.
R5 không thay đổi AS_PATH
R5 gửi route cho iBGP Peers
R5 quảng bá route cho R6 và R7.
R6 và R7 học route.
R6 không thay đổi AS_PATH.
R7 kiểm tra eBGP peers của nó có nằm trong confederation hay không. Trường hợp này là không.
R7 xóa trường AS_CONFED_SEQUENCE khỏi AS_PATH. R7 thêm confederation ID vào cuối AS_SEQUENCE.Nếu không có AS_SEQUENCE thì nó sẽ thêm trường AS_SEQUENCE vào AS_PATH, trường này có confederation ID của nó.
R7 quảng bá cho R8.
R8 không biết gì về các mini-AS trong confederation mà chỉ thấy được số AS của confederation.
III.1.4. Cấu hình Confederation:
Trước khi cấu hình ta phải enable BGP bằng câu lệnh router bgp
Ngoài ra ta cần cấu hình confederation ID cho tất cả các router nằm trong confederation:
bgp confederation identifier
confederation-ID là số AS của confederation.
Tiếp theo ta cần cấu hình các route trong confederation biết tất cả các mini-AS nằm trong cùng confederation với nó.
bgp confederation peers
là số AS của mini-AS cùng nằm trong confederation với AS thiết bị được cấu hình.
Chúng ta cùng xét ví dụ:
Hình 19
R1 Lo0-1.1.1.1
R2 Lo0-2.2.2.2
R3 Lo0-3.3.3.3
R4 Lo0-4.4.4.4
R5 Lo0-5.5.5.5
R6 Lo0-6.6.6.6
R7 Lo0-7.7.7.7
Chúng ta cấu hình như sau:
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#no synchronization
R1(config-router)#neighbor 2.2.2.2 remote-as 200
R1(config-router)#neighbor 2.2.2.2 update-source Lo0
R1(config-router)#neighbor 2.2.2.2 ebgp-multihop
R1(config-router)#^Z
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router bgp 65000
R2(config-router)#no synchronization
R2(config-router)#bgp confederation identifier 200
R2(config-router)#bgp confederation peers 65001
R2(config-router)#neighbor 3.3.3.3 remote-as 65000
R2(config-router)#neighbor 3.3.3.3 update-source Lo0
R2(config-router)#neighbor 4.4.4.4 remote-as 65000
R2(config-router)#neighbor 4.4.4.4 update-source Lo0
R2(config-router)#neighbor 1.1.1.1 remote-as 100
R2(config-router)#neighbor 1.1.1.1 update-source Lo0
R2(config-router)#neighbor 1.1.1.1 ebgp-multihop
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 65000
R3(config-router)#no synchronization
R3(config-router)#bgp confederation identifier 200
R3(config-router)#bgp confederation peers 65001
R3(config-router)#neighbor 2.2.2.2 remote-as 65000
R3(config-router)#neighbor 2.2.2.2 update-source Lo0
R3(config-router)#neighbor 4.4.4.4 remote-as 65000
R3(config-router)#neighbor 4.4.4.4 update-source Lo0
R4#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R4(config)#router bgp 65000
R4(config-router)#no synchronization
R4(config-router)#bgp confederation identifier 200
R4(config-router)#bgp confederation peers 65001
R4(config-router)#neighbor 2.2.2.2 remote-as 65000
R4(config-router)#neighbor 2.2.2.2 update-source Lo0
R4(config-router)#neighbor 3.3.3.3 remote-as 65000
R4(config-router)#neighbor 3.3.3.3 update-source Lo0
R4(config-router)#neighbor 5.5.5.5 remote-as 65001
R4(config-router)#neighbor 5.5.5.5 update-source Lo0
R4(config-router)#neighbor 5.5.5.5 ebgp-multihop
R5#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)#router bgp 65001
R5(config-router)#no synchronization
R5(config-router)#bgp confederation identifier 200
R5(config-router)#bgp confederation peers 65000
R5(config-router)#neighbor 6.6.6.6 remote-as 65001
R5(config-router)#neighbor 6.6.6.6 update-source Lo0
R5(config-router)#neighbor 4.4.4.4 remote-as 65000
R5(config-router)#neighbor 4.4.4.4 update-source Lo0
R5(config-router)#neighbor 4.4.4.4 ebgp-multihop
R6#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R6(config)#router bgp 65001
R6(config-router)#no synchronization
R6(config-router)#bgp confederation identifier 200
R6(config-router)#bgp confederation peers 65000
R6(config-router)#neighbor 5.5.5.5 remote-as 65001
R6(config-router)#neighbor 5.5.5.5 update-source Lo0
R6(config-router)#neighbor 7.7.7.7 remote-as 300
R6(config-router)#neighbor 7.7.7.7 update-source Lo0
R6(config-router)#neighbor 7.7.7.7 ebgp-multihop
R7#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R7(config)#router bgp 300
R7(config-router)#no synchronization
R7(config-router)#neighbor 6.6.6.6 remote-as 200
R7(config-router)#neighbor 6.6.6.6 update-source Lo0
R7(config-router)#neighbor 6.6.6.6 ebgp-multihop
R7(config-router)#^Z
III.2. Lọc BGP (BGP Filters)
Filter có nghĩa là BGP routes có thể bị thiết bị chặn lại hay cho phép, sửa đổi. Những hành động này phụ thuộc vào BGP policy.
Chúng ta cùng tìm hiểu về prefix list, distribute list, và route map.
III.2.1. Distribute Lists:
Distribute Lists được dùng để filter quảng bá đi vào hay đi ra trong một BGP session với peer. Nó còn quyết định route nào được route chấp nhận hay gửi đi. Distribute Lists dựa vào standard access list hay extended access list để quyết định route được permit hay deny.
Để tạo Distribute List ta làm theo quy trình sau:
Chọn route được chấp nhận và route bị block.
Chọn inbound filter trên router hay outbound filter trên thiết bị khác.
Tạo ACL để deny routes và permit route cần được quảng bá.
Gán Distribute list vào BGP session cụ thể.
Câu lệnh thêm distribute list như sau:
neighbor distribute-list [in|out]
peer-address:địa chỉ của BGP filter bạn muốn apply filter lên.
access-list-number: ACL bạn tạo cho distribute list.
Hình 20
Block route từ ethernet segment của R1 đến R3.
Ta cấu hình distribute list để filter trên R2.
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#access-list 1 deny 192.168.24.0 0.0.0.255
R2(config)#access-list 1 permit any
R2(config)#router bgp 200
R2(config-router)#neighbor 3.3.3.3 distribute-list 1 out
III.2.2. Prefix Lists:
Lần đầu tiên xuất hiện ở IOS 12. Nó hoạt động giống như distribute list. Prefix list cũng dùng để filter route và nó có thể kết hợp với route maps.
Quy trình tạo prefix list:
Chọn route bị filter hay accept bởi router.
Chọn set inbound trên router cấu hình hay outbound trên thiết bị khác.
Tạo prefix list.
Thêm prefix list vào lệnh neighbor.
Prefix list giống distribute list nhưng khác ở chỗ nó không phụ thuộc vào ACL. ACL thì đọc từ trên xuống và bạn muốn thay đổi nó là rất khó. Prefix list thì lại khác.
Ví dụ: Bạn có 2 dòng trong prefix list là 10 và 15 bạn muốn thêm các dòng khác thì có 11,12,13,14.
Prefix list dễ quản lý nếu network lớn và nó có một dòng ở cuối là deny all.
Khi cấu hình một dòng nếu bạn không thêm số dòng thì nó sẽ bắt đầu ở dòng 5 và dòng sau nhảy 5 dòng(dòng 10).
Ip prefix-list list-name [seq seq-value] {permit | deny} network/len [ge ge-value] [le le-value]
list-name – tên của prefix list.
Seq-value – số của dòng trong prefix list, nó là thuộc tính không bắt buộc.
Network – địa chỉ network.
Len – subnet mask.
Ge-value - giá trị ban đầu.
le-value - giá trị cuối.
Ví dụ ta muốn thêm prefix list cho network 192.168.24.0/24. Nếu ta dùng ge-value là 28 thì bất kì subnet mask bằng hoặc lớn hơn 28 sẽ đúng với prefix list. Nếu dùng le-value 28 thì bất kì subnet mask từ 24 ->28 sẽ đúng với prefix list.
ip prefix-list name deny 0.0.0.0/0 le 32.
Với lệnh này thì ta đã set tất cả subnet mask từ 0->32.
Để thêm prefix list vào BGP session:
neighbor peer-address prefix-list name {in | out}
peer-address - địa chỉ của BGP peer bạn muốn apply filter.
name - tên của prefix list.
III.2.3. Bản đồ định tuyến (Route Maps):
Route maps được dùng để filter hoặc thay đổi thông tin của BGP routes. Một route maps bao gồm một chuỗi các dòng. Một dòng trong route map được cấu hình như sau:
route-map name {permit | deny} [sequence-number]
name - tên của route map, tất cả các dòng trong cùng route maps phải cùng tên.
sequence-number - số của dòng.
Sau khi enter dòng lệnh, bạn sẽ vào cấu hình route map. Trong đó chỉ có 2 lệnh chính là match: dùng để xét điều kiện và set: dùng để set chính sách nếu match đúng.
Sau khi cấu hình ta add route maps vào bằng câu lệnh sau:
neighbor peer-address route-map name [in |out]
peer-address - địa chỉ của peer.
name - tên của route map.
Hình 21
Trong hình trên ta cần deny network 192.168.24.0/24 quảng bá tới R3. Địa chỉ loopback R3 là : 3.3.3.3.
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#access-list 1 permit 192.168.24.0 0.0.0.255
R2(config)#route-map FILTER1 deny 10
R2(config-route-map)#match ip address 1
R2(config-route-map)#route-map FILTER1 permit 20
R2(config-route-map)#exit
R2(config)#router bgp 200
R2(config-router)#neighbor 3.3.3.3 route-map FILTER1 out
Ta sử dụng route maps để thay đổi LOCAL_PREF của route
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#access-list 1 permit 192.168.24.0 0.0.0.255
R2(config)#route-map FILTER1 permit 10
R2(config-route-map)#match ip address 1
R2(config-route-map)#set local-preference 200
R2(config-route-map)#route-map FILTER1 permit 20
R2(config-route-map)#exit
R2(config)#router bgp 200
R2(config-router)#neighbor 3.3.3.3 route-map FILTER1 out
III.3. Các tác động (Communities)
Việc filter cũng trở nên khó khăn khi network của chúng ta có quá nhiều routes; có một cách để khắc phục nó là communities. Communities là một nhóm các địa chỉ có cùng các thuộc tính. Các địa chỉ đích được add vào communites bằng thuộc tính community của chúng. Những địa chỉ đích có thể add vào một hay nhiều communitiy. Mặc định tất cả các route trên internet là well-known communities.
Có các well-known communities khác:
NO_EXPORT: những route thuộc community này sẽ không được quảng bá cho eBGP peers kể cả mini-AS trong confederation.
NO_ADVERTISE: route thuộc nhóm này không được quảng bá tới bất kì iBGP và eBGP peers.
LOCAL_AS: route thuộc nhóm này sẽ không được quảng bá ra ngoài mà chỉ dùng trong confederation.
Internet: route được quảng bá tới tất cả các BGP speakers.
Để add route vào community bạn cần phải tạo route map và sử dụng lệnh set community.
Ví dụ: chúng ta muốn thêm route 192.168.200.0/24 vào community 200, các route khác vào community NO_EXPORT, EIGRP 100 redistribute route đến BGP:
Hình 22
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#access-list 1 permit 192.168.200.0 0.0.0.255
R2(config)#route-map COMMUNITY1 permit 10
R2(config-route-map)#match ip address 1
R2(config-route-map)#set community 200
R2(config-route-map)#route-map COMMUNITY1 permit 20
R2(config-route-map)#set community no-export
R2(config-route-map)#exit
R2(config)#router bgp 200
R2(config-router)#neighbor 3.3.3.3 route-map COMMUNITY1 in
R2(config-router)#^Z
R2#
Nếu community 200 đã tồn tại ta cần thêm additive vào cuối lệnh set community. Để xóa route khỏi community ta dùng lệnh set community none.
Những lệnh trên chưa hoàn thành cấu hình community. Thuộc tính COMMUNITY vẫn không được chứa trong gói UPDATE. Để quảng bá community đến peers, ta cần dùng lệnh sau:
neighbor peer-address send-community
peer-address: là địa chỉ của peer ta muốn quảng bá community tới.
Để filter hay thay đổi thông tin route thuộc community bạn cần phải tạo community list. Community list là danh sách các community bạn muốn áp dụng các chính sách lên. Để tạo community list:
ip community-list number {permit|deny} community-number
number - số của community list. Đối với community list cơ bản sẽ có giá trị từ 1 - 99. Đối với community list extended sẽ là 100–500.
community-number - số của các community được áp bởi set community. Nếu ta thêm nhiều community thì hãy sử dụng space để cách chúng ra.
Khi bạn đã tạo community list việc còn lại chỉ là sử dụng với route map bằng lệnh match community ,
number là số của community list.
III.4. Các nhóm ngang hàng (Peer Groups)
Là tập hợp các peers có cùng chính sách của một router. Việc này để giảm bớt sự phức tạp và dễ dàng quản lý cho người quản trị.
Các lệnh sử dụng:
Tạo peer groups:
neighbor name peer-group
name - tên của peer group.
Thêm các thuộc tính cho peer group:
neighbor name option
name: tên của peer group.
option: các thuộc tính muốn thêm vào peer group.
Ta có thể add nhiều option vào 1 peer group.
Add peer:
neighbor peer-address peer-group name
peer-address: là địa chỉ của peer sử dụng trong BGP session.
name: tên của peer group.
Hình 23
Trong hình trên, eBGP đã được cấu hình ở R1 và R2, chúng ta chỉ cần cấu hình iBGP cho AS 200. Sử dụng peer group ở R2 gộp R3,R4,R5. R2 là route reflector.
Các loopback:
R2-2.2.2.2
R3-3.3.3.3
R4-4.4.4.4
R5-5.5.5.5
network 192.168.100.0/24 sẽ không được quảng bá tới R3, R4, R.
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#access-list 1 permit 192.168.100.0 0.0.0.255
R2(config)#route-map PEERGROUPFILTER deny 10
R2(config-route-map)#match ip address 1
R2(config-route-map)#route-map PEERGROUPFILTER permit 20
R2(config-route-map)#exit
R2(config)#router bgp 200
R2(config-router)#neighbor PEERGROUP1 peer-group
R2(config-router)#neighbor PEERGROUP1 remote-as 200
R2(config-router)#neighbor PEERGROUP1 route-reflector-client
R2(config-router)#neighbor PEERGROUP1 update-source lo0
R2(config-router)#neighbor PEERGROUP1 route-map PEERGROUPFILTER out
R2(config-router)#neighbor 3.3.3.3 peer-group PEERGROUP1
R2(config-router)#neighbor 4.4.4.4 peer-group PEERGROUP1
R2(config-router)#neighbor 5.5.5.5 peer-group PEERGROUP1
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router bgp 200
R3(config-router)#neighbor 2.2.2.2 remote-as 200
R3(config-router)#neighbor 2.2.2.2 update-source lo0
R3(config-router)#^Z
R3#
R4#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R4(config)#router bgp 200
R4(config-router)#neighbor 2.2.2.2 remote-as 200
R4(config-router)#neighbor 2.2.2.2 update-source lo0
R4(config-router)#^Z
R4#
R5#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)#router bgp 200
R5(config-router)#neighbor 2.2.2.2 remote-as 200
R5(config-router)#neighbor 2.2.2.2 update-source lo0
R5(config-router)#^Z
R5#
Từ ví dụ ta thấy, sự tiện lợi của peer group, nếu không có nó người quản trị sẽ phải đánh rất nhiều lệnh.
III.5. Đa kết nối internet trong BGP (Multi-homing)
Multi homing là việc có nhiều hơn một kết nối đến một hoặc nhiều nhà cung cấp dịch vụ. Có 2 loại multi homing: multi homing đến 1 nhà cung cấp dịch vụ và muti homing đến nhiều nhà cung cấp dịch vụ.
Single service provider: Multi homing đến 1 nhà cung cấp dịch vụ sẽ giúp bảo toàn kết nối khi một đường dây bị down. Có 2 cách để thực hiện:
Sử dụng 1 router cho các kết nối đến nhà cung cấp dịch vụ. Đây là cách dễ nhất nhưng sẽ tạo ra single point of failure.
Sử dụng nhiều router cho nhiều kết nối đến nhà cung cấp dịch vụ. Cách này khá phức tạp nhưng không có single point of failure.
Khi sử dụng multi homing đến 1 nhà cung cấp dịch vụ, không cần thiết phải sử dụng BGP trừ khi bạn cần dùng routing policy.
Multiple service providers: Kể cả khi có nhiều kết nối đến nhà cung cấp dịch vụ, nếu nhà cung cấp bị down thì nó cũng vô dụng. Multiple service provider khắc phục được điểm yếu này. Nó giống như multi homing đến 1 nhà cung cấp nhưng vẫn có một số đặc điểm bạn cần lưu ý:
Nếu bạn sử dụng BGP để kết nối đến các nhà cung cấp dịch vụ và thiết bị chạy eBGP đang chạy iBGP, có thể AS của bạn sẽ trở thành transit AS. Có nghĩa là nhà cung cấp dịch vụ sẽ truyền data qua network của bạn. Như vậy sẽ chiếm 1 phần bandwidth. Để khắc phục ta sử dụng BGP policy để cấm nó, thuộc tính NO_EXPORT community áp vào những route từ nhà cung cấp sẽ giải quyết vấn đề này. Cách khác là tạo filter AS paths chỉ cho phép route được tạo từ AS quảng bá ra ngoài.
Một số cách để cấu hình multi-homed:
Default static routes: cách này dễ sử dụng nhất. Bạn chỉ cần cấu hình mỗi 1 static route đến các nhà cung cấp dịch vụ riêng biệt. Set metric thấp hơn cho đường static bạn muốn làm đường đi ra ngoài chính.
Common IGP: Ta redistribute route từ nhà cung cấp dịch vụ vào IGP nhưng ta không nên đưa quá nhiều route vào IGP, nếu làm như vậy sẽ làm cho hệ thống hoạt động bị chậm trễ do quá nhiều route trong routing table. Ngoài ra bạn còn phải set default route cho những route bạn không redistribute vào IGP, làm như vậy thì tính metric sẽ không còn chính xác nữa.
BGP: BGP giúp bạn quản lí tốt các route trong mạng ngoài ra còn có các chính sách lên các route.
III.6. Giải quyết vấn đề Next-Hop:
Vấn đề xảy ra khi thiết bị chạy iBGP không thể tìm ra đường đến eBGP speaker của AS kế. Nguyên nhân là vì eBGP đó không tham gia vào IGP trong AS của bạn.
Câu lệnh next-hop-self được dùng để thay đổi thuộc tính NEXT_HOP của 1 route.
Hình 24
Trong hình R2 và R3 chạy IGP trong AS 200, R2 không kết nối tới R1 trong IGP, như vậy route học từ R1 của R3 sẽ không sử dụng được. Lí do là route từ AS 100 đến AS 200 sẽ có NEXT_HOP là R1 mà R3 lại không biết R1 nên ta phải thêm lệnh
neighbor peer-address next-hop-self
III.7. Tổng hợp các tuyến đường (Route Aggregation):
Route aggregation hay summarization là tiến trình quảng bá 1 route thay vì nhiều route. Nó giúp giảm thiểu route trong bảng dịnh tuyến. Trong BGP, khi 1 route được quảng bá từ IGP sang BGP, chỉ địa chỉ classful được chấp nhận. Để tắt cơ chế tự sum route được mặc định chạy trong BGP ta dùng command:
no auto-summary
Nếu bạn muốn sum route trong BGP ta cần command:
aggregate-address address mask
Khi dùng command này một summarized route sẽ được tạo, nó có thuộc tính ATOMIC_AGGREGATE bị thiếu một số thông tin.
Nếu bạn không muốn một số route quảng bá đi, ta dùng command:
aggregate-address address mask summary-only
Một command tạo ra summarized route mà không làm thay đổi ATOMIC_AGGREGATE, nó chỉ thêm segment AS_SET vào AS_PATH.
aggregate-address address mask as_set
CHƯƠNG IV: MÔ HÌNH THỰC NGHIỆM
Cấu hình RTA:
RTA#
hostname RTA
ip subnet-zero
interface Loopback0
ip address 203.250.13.41 255.255.255.0
interface f1/0
ip address 203.250.14.1 255.255.255.0
interface s2/0
ip address 128.213.63.1 255.255.255.252
router ospf 10
redistribute bgp 100 metric 2000 subnets
passive-interface Serial0
network 203.250.0.0 0.0.255.255 area 0
network 128.213.0.0 0.0.255.255 area 0
default-information originate metric 2000
router bgp 100
no synchronization
network 203.250.13.0
network 203.250.14.0
neighbor 128.213.63.2 remote-as 200
neighbor 128.213.63.2 route-map setlocalpref in
neighbor 203.250.15.2 remote-as 100
neighbor 203.250.15.2 update-source Loopback0
ip classless
ip default-network 200.200.0.0
route-map setlocalpref permit 10
set local-preference 200
Cấu hình RTF:
RTF#
hostname RTF
ip subnet-zero
interface f2/0
ip address 203.250.14.2 255.255.255.0
interface s1/0
ip address 203.250.15.1 255.255.255.252
router ospf 10
network 203.250.0.0 0.0.255.255 area 0
ip classless
Cấu hình RTB:
RTB#
hostname RTB
ip subnet-zero
interface Loopback1
ip address 203.250.15.10 255.255.255.252
interface s1/0
ip address 203.250.15.2 255.255.255.252
!
interface s1/1
ip address 192.208.10.6 255.255.255.252
router ospf 10
redistribute bgp 100 metric 1000 subnets
passive-interface Serial1
network 203.250.0.0 0.0.255.255 area 0
network 192.208.10.6 0.0.0.0 area 0
default-information originate metric 1000
!
router bgp 100
no synchronization
network 203.250.15.0
neighbor 192.208.10.5 remote-as 300
neighbor 192.208.10.5 route-map localonly in
neighbor 203.250.13.41 remote-as 100
!
ip classless
ip default-network 192.208.10.0
ip as-path access-list 1 permit ^300$
route-map localonly permit 10
match as-path 1
set local-preference 300
Cấu hình RTC:
RTC#
hostname RTC
ip subnet-zero
interface Loopback0
ip address 128.213.63.130 255.255.255.192
interface s1/1
ip address 128.213.63.5 255.255.255.252
!
interface s1/0
ip address 128.213.63.2 255.255.255.252
router bgp 200
network 128.213.0.0
aggregate-address 128.213.0.0 255.255.0.0 summary-only
neighbor 128.213.63.1 remote-as 100
neighbor 128.213.63.1 distribute-list 1 out
neighbor 128.213.63.6 remote-as 400
ip classless
access-list 1 deny 195.211.0.0 0.0.255.255
access-list 1 permit any
Cấu hình RTD:
RTD#
hostname RTD
ip subnet-zero
interface Loopback0
ip address 192.208.10.174 255.255.255.192
!
interface s1/1
ip address 192.208.10.5 255.255.255.252
!
interface s1/0
ip address 192.208.10.2 255.255.255.252
router bgp 300
network 192.208.10.0
neighbor 192.208.10.1 remote-as 500
neighbor 192.208.10.6 remote-as 100
Cấu hình RTG:
RTG#
hostname RTG
ip subnet-zero
interface Loopback0
ip address 195.211.10.174 255.255.255.192
interface s1/0
ip address 192.208.10.1 255.255.255.252
interface s1/1
ip address 195.211.10.1 255.255.255.252
router bgp 500
network 195.211.10.0
aggregate-address 195.211.0.0 255.255.0.0 summary-only
neighbor 192.208.10.2 remote-as 300
neighbor 192.208.10.2 send-community
neighbor 192.208.10.2 route-map setcommunity out
neighbor 195.211.10.2 remote-as 400
!
ip classless
access-list 1 permit 195.211.0.0 0.0.255.255
access-list 2 permit any
access-list 101 permit ip 195.211.0.0 0.0.255.255 host 255.255.0.0
route-map setcommunity permit 20
match ip address 2
!
route-map setcommunity permit 10
match ip address 1
set community no-export
Cấu hình RTE:
RTE#
hostname RTE
ip subnet-zero
interface Loopback0
ip address 200.200.10.1 255.255.255.0
interface s1/0
ip address 195.211.10.2 255.255.255.252
interface s1/1
ip address 128.213.63.6 255.255.255.252
router bgp 400
network 200.200.10.0
aggregate-address 200.200.0.0 255.255.0.0 summary-only
neighbor 128.213.63.5 remote-as 200
neighbor 195.211.10.1 remote-as 500
ip classless
CHƯƠNG IV: KẾT LUẬN
Với sự phát triển ngày càng mạnh mẽ của mạng Internet, đề tài nghiên cứu “Nghiên cứu về giao thức định tuyến BGP” là đề tài thực tế giúp người đọc tiếp cận và có hiểu biết cơ bản về cách thức định tuyến giữa các AS, một thành phần quan trọng trên Internet .
BGP là một giao thức cổng ngoại (EGP). Như vậy BGP được sử dụng để nối các AS với nhau. Internet phải phụ thuộc rất lớn vào BGP.
BGP sử dụng giao thức TCP port 179. Tất cả các thiết bị iBGP phải có kết nối TCP đến thiết bị khác tạo thành mạng full mesh để BGP họat động bình thường.
Mặt đạt được:
Đề tài góp phần giúp cho nhóm và những người tham khảo:
- Hiểu và nẳm được các thuộc tính, giải thuật được sử dụng trong BGP để định tuyến.
- Hiểu rõ vai trò, hoạt động và cấu trúc các thông báo của eBGP và iBGP trong hệ thống mạng ngày nay.
- Các phương pháp giải quyết vấn đề full mesh trong BGP.
- Một số phương pháp được sử dụng để kiểm soát lưu lượng trong BGP
- Cấu hình BGP cơ bản không khó. Bạn cần xác định AS sử dụng. AS được phát bởi ARIN, hoặc sử dụng AS private. Tiếp theo là bật BGP và cấu hình iBGP neighbor. Phải đảm bảo iBGP neighbor phải được full meshed. Cuối cùng là cấu hình eBGP neighbor.
Mặt hạn chế:
Mặc dù đạt được một số kết quả nêu trên nhưng do điều kiện thời gian và thiết bị thực nghiệm còn hạn chế nên việc nghiên cứu giao thức BGP trên nền Ipv6 chưa thể được thực hiện.
Đề tài có thể được mở rộng để nghiên cứu và triển khai giao thức BGP cùng các giao thức IGP dựa trên phần mềm mô phỏng GNS3. Việc nghiên cứu hoạt động của BGP trên hệ thống Ipv6 cũng là một vấn đề cần được quan tâm khi hệ thống Ipv4 đang ngày càng cạn kiệt.
TÀI LIỆU THAM KHẢO
[1] CCNP® Complete Study Guide – Wade Edwards, et al.
[2] BGP Case Study – Document ID: 26634
[3]
[4]
[5]
[6]
[7]
[8]
[9]
Các file đính kèm theo tài liệu này:
- [Final] TimHieuVeGiaoThucDinhTuyenBGP.doc
- [TLCN] BGP.pptx