Tổng quan về giao thức BGP.Các khái niệm của BGP. Các thuộc tính cơ bản chọn đường của BGP. Lọc route trong BGP.Như chúng ta thấy thế giới công nghệ ngày càng phát triển, Internet ra đời đã và đang là một bước tiến nhảy vọt của công nghệ thông tin. Vậy thực chất internet là sự kết nối của nhiều AS (Automatic System) với nhau để trao đổi thông tin giữa chúng. Và BGP cung cấp định tuyến các AS này. Nếu chỉ 1 kết nối đến ISP thì không cần dùng BGP, nhưng nếu nhiều kết nối đến 1 ISP thì BGP là 1 lựa chọn phù hợp.
Trang 1BGP ROUTING
CHƯƠNG 1: TỔNG QUAN VỀ GIAO THỨC BGP 2
1.1 Khái Niệm 2
1.1.1 Khái Niệm về AS và ASN 2
1.1.2 Khái niệm về BGP 2
1.2 Đặc điểm của BGP 2
1.2.1 Khái niệm về path-vector và Path Attributes 2
1.2.2 Truyền thông giữa các router 3
1.2.3 Các bảng của BGP 5
1.2.4 Các bản tin trong BGP 5
1.2.5 Các trạng thái khi neighbor BGP 6
1.3 Các tham số tuyến đường trong BGP 8
1.3.1 Thuộc tính AS_path 8
1.3.2 Thuộc tính NEXT-HOP 11
1.3.3 Thuộc tính Aggregator và Local-preference 11
1.3.4 Thuộc tính weight và thuộc tính MED 13
1.3.5 Chọn lựa tuyến trong BGP 14
1.4:Lọc route trong BGP 15
1.4.1: Lọc tuyến 15
1.4.2: Sử dụng distribute-list để lọc route 16
1.4.3 Lênh ip prefix-list: 17
Chương 2:Cấu Hình 18
2.1:Cấu hình cơ bản 18
Trang 2CHƯƠNG 1: TỔNG QUAN VỀ GIAO THỨC BGP
1.1 Khái Niệm
1.1.1 Khái Niệm về AS và ASN
Autonomous system (as) : Một AS là một nhóm các router cùng chia sẻ một chính sách và hoạt động trong cùng một miền nhất đinh(domain).Các router trong 1 as được định tuyến với nhau qua các giao thức định tuyến nội
Note:Mạng internet được tạo bởi rất nhiều các AS liên kết với nhau
Autonomous system number (ASN):Để định danh cho mỗi AS khi tham gia vào Internet người ta sử dụng 1 con số.Một tổ chức yêu cầu kết nối với Internet phải có được số hệ thống tự trị (ASN) ASN ban đầu là 2 byte (phạm vi 16 bit), điều này tạo ra 65.535 ASN.Do số lượng AS ngày càng tăng nên ASN ngày càng cạn kiệt , RFC 4893 đã mở rộng trường ASN để chứa 4 byte (phạm vi 32 bit) Điều này cho phép 4.294.967.295 ASN duy nhất, cung cấp khá nhiều so với 65.535 ASN ban đầu
Note : Có 2 dải private ASN là 64,512–65,535 trong dải 16 bít và 4,200,000,000–4,294,967,294 trong dải 32 bit Hai dải private ASN có sẵn cho bất kỳ tổ chức nào sử dụng,miễn là chúng không bao giờ được trao đổi công khai trên Internet.
1.1.2 Khái niệm về BGP
BGP, viết tắt của từ tiếng Anh Border Gateway Protocol, là giao thức định tuyến
đa miền sử dụng trên Internet từ 1994.Như đã biết internet được tạo bởi rất nhiều các AS BGP là giao thức được sử dụng để chia sẻ thông tin định tuyến giữa các AS khác nhau BGP thuộc loại path vector và định tuyến dựa trên các luật, chính sách của quản trị hơn là các metrics nội vùng Phiên bản BGP hiện nay là phiên bản 4, dựa trên RFC 4271 BGP
hỗ trợ VLSM,CIDR và summariation BGP là 1 giao thức thiên về chính sách định tuyến
1.2 Đặc điểm của BGP
1.2.1 Khái niệm về path-vector và Path Attributes
Trang 3Như đã biết các giao thức định tuyến nội IGP chia là 2 trường phải là distance-vector và Link-state.Với Link-state thì các router phải có 1 cái nhìn tổng quan về topo mạng và từ đó tính toán ra tuyến đường tốt nhất.Với BGP sử dụng để định tuyến cho toàn internet thì không thể có cái nhìn tổng quan về topo mạng được nên BGP được xây dựng
theo thiên hướng distance-vector và được gọi là path-vector.Khác với distance-vector,
path-vector không quảng bá các route theo chu kì mà quảng bá đúng 1 lần duy nhất.Khi
có sự thay đổi thì quảng bá tương ướng với sự thay đổi đó
Đối với các giao thức định tuyến nội thì để tính toán chọn ra tuyến đường tốt nhất thì sử dụng giá trị metric Nhưng đối với BGP để tính toán ra tuyến đường tốt nhất người
ta sử dụng rất nhiều các tham số, Các tham số này được gọi là Path Attributes(PAs).PAs
được phân loại vào các nhóm sau:
Well-known mandatory(origin,as-path,Next-hope ): là thuộc tính mà bắt buộc phải tồn tại trong bản tin cập nhật Nó phải được nhận ra bởi tất cả các Peer Nếu một thuộc tính Well-know bị thiếu, thì một bản tin chỉ thị lỗi đựoc tạo ra Điều này đảm bảo rằng tất cả các BGP peer phải thoả thuận theo một chuẩn nhất định
Well-known discretionary(Local preference,atomic aggregate ): không yêu cầu các thuộc tính này tồn tại trong các bản tin UPDATE nhưng nếu chúng tồn tại, tất cả các router sẽ công nhận và sẽ có hành động tương ứng dựa trên thông tin được chứa bên trong thuộc tính này
Optional transitive(Communities ): Router có thể không công nhận các thuộc tính này nhưng nếu router nhận được thuộc tính này, nó sẽ đánh dấu và gửi đầy
đủ cập nhật này đến router kế tiếp Các thuộc tính sẽ không thay đổi khi đi qua một router nếu thuộc tính này không được công nhận bởi router này
Optional non-transitive(MED,Cluster-list ): Các thuộc tính này bị loại bỏ nếu cập nhật mang thuộc tính này đi vào router mà router không hiểu hoặc không công nhận thuộc tính
Note:Các thuộc tính trong các nhóm này sẽ được đề cập trong phần sau
Theo RFC 4271, các thuộc tính Well-known phải được công nhận bởi tất cả các triển khai BGP.
Các thuộc tính Optional không phải được công nhận bởi tất cả các triển khai BGP.
1.2.2 Truyền thông giữa các router
BGP sử dụng TCP port 179 để truyền thông giữa các router khác nhau.Vì TCP không
hỗ trợ multicast mà chạy unicast nên BGP không sử dụng các gói hello để khám phá các hàng xóm,nó không thể tự động khám phá cá hàng xóm.Vậy lên khi cấu hình ta phải khai báo hàng xóm.Đặc biệt 2 router không cần phải kết nối trực tiếp vẫn có thể neighbor với
Trang 4nhau BGP có thể hình thành các kề kề được kết nối trực tiếp, nó cũng có thể tạo thành các kề với nhiều bước nhảy
Note: Hàng xóm BGP được kết nối với cùng một mạng sử dụng bảng ARP để xác định địa chỉ IP của thiết bị ngang hàng Các phiên BGP nhiều bước yêu cầu thông tin bảng định tuyến để tìm địa chỉ IP của máy ngang hàng Thông thường có một tuyến tĩnh hoặc IGP chạy giữa các hàng xóm iBGP để cung cấp thông tin đường dẫn cấu trúc liên kết để thiết lập phiên TCP BGP Một tuyến mặc định (A default route) là không đủ để thiết lập phiên BGP nhiều bước.
Trong BGP được chia ra thành 2 dạng là iBGP và eBGP:
Internal BGP (iBGP):là giao thức được dùng giữa các router chạy BGP trong cùng 1 AS.Các router không yêu cầu phải là láng giềng của nhau về phương diện kết nối vật lý và thường ở phía ngoài của 1 AS.Có AD là 200 trong bảng RIB
External BGP (eBGP):là giao thức được dùng giữa các router chạy BGP ở 2 AS khác nhau.Mặc định eBGP có trường TTL bằng 1 nên 2 router muốn neighbor được phải kết nối trực tiếp hay chung 1 vùng mạng.Có AD bằng 20 trong bảng RIB
VD:
Trang 5Trong hình trên ta có thể thấy AS 65200 cung cấp kết nối chuyển tiếp(transit
connectivity) đến AS 65100 và AS 65300 AS 65100 kết nối tại R2 và AS 65300 kết nối tại R4.Vậy kết nối giữa R1 và R2,R4 và R5 là một kết nối eBGP R2 có thể hình thành phiên iBGP trực tiếp với R4, nhưng R3 sẽ không biết định tuyến lưu lượng từ AS 65100 hoặc AS 65300 khi lưu lượng từ AS đến R3
Note: Các nhà cung cấp dịch vụ cung cấp transit connectivity Các tổ chức doanh nghiệp là người tiêu dùng và không nên cung cấp kết nối chuyển tiếp giữa các hệ thống tự trị trên Internet.
1.2.3 Các bảng của BGP
BGP có 3 bảng chính đó là:
Neighbor table:Bảng này có giá trị lưu các hàng xóm của BGP Các hàng xóm này sẽ gửi toàn bộ các route tốt nhất của mình cho nhau.Các route này
sẽ được lưu và bảng BGP
BGP table: Bảng này sẽ lưu toàn bộ các route mà các router hàng xóm gửi sang Từ các route này BGP sẽ chọn ra route tốt nhất để đưa vào bảng thứ 3
Routing table: Bảng này lưu các route định tuyến của router
1.2.4 Các bản tin trong BGP
Trong BGP được chia thành 4 loại bản tin đó là:
OPEN
KEEPALIVE
UPDATE
NOTIFICATION
OPEN: Bản tin OPEN chứa số phiên bản BGP, ASN của bộ định tuyến gốc, thời
gian giữ, định danh BGP và các tham số tùy chọn khác thiết lập khả năng phiên:
Hold time: Thuộc tính thời gian giữ đặt bộ hẹn giờ giữ, tính bằng giây, cho mỗi hàng xóm BGP Khi nhận được UPDATE hoặc KEEPALIVE, bộ hẹn giờ giữ lại đặt về giá trị ban đầu Nếu bộ đếm thời gian giữ đến 0, phiên BGP bị phá hỏng, các tuyến từ hàng xóm đó sẽ bị xóa và thông báo rút lộ trình cập nhật thích hợp được gửi đến các hàng xóm BGP khác cho các tiền
tố bị ảnh hưởng
BGP identifier: ID bộ định tuyến BGP (RID) là một số duy nhất 32 bit xác định bộ định tuyến BGP trong các tiền tố được quảng bá RID có thể được
sử dụng như một cơ chế ngăn ngừa vòng lặp cho các bộ định tuyến được quảng cáo trong một hệ thống tự trị RID có thể được đặt thủ công hoặc động cho BGP Một giá trị khác không phải được đặt để các bộ định tuyến trở thành hàng xóm
Trang 6KEEPALIVE: Các thông điệp KEEPALIVE được trao đổi cứ sau một phần ba bộ
đếm thời gian giữ đã được thỏa thuận giữa hai bộ định tuyến BGP Các thiết bị của Cisco có thời gian giữ mặc định là 180 giây, vì vậy khoảng thời gian giữ mặc định
là 60 giây Nếu thời gian giữ được đặt thành 0, thì không có tin nhắn cố định nào được gửi giữa các hàng xóm BGP
UPDATE: Một thông báo UPDATE quảng bá bất kỳ tuyến đường khả thi, rút các
tuyến đường được quảng bá trước đó hoặc có thể thực hiện cả hai Có các thông tin thành phần cơ bả trong Update message dó là: NLRI, thuộc tín của Path, và thu hồi route(withdraw route)
NOTIFICATION: Thông báo NOTIFICATION được gửi khi phát hiện lỗi với
phiên BGP, chẳng hạn như hết giờ hẹn giờ giữ, thay đổi khả năng hàng xóm hoặc yêu cầu đặt lại phiên BGP Điều này khiến kết nối BGP bị đóng
1.2.5 Các trạng thái khi neighbor BGP
Khi 2 router chạy BGP neighbor với nhau thì sẽ có 6 trạng thái:
Idle: idle là trạng thái đầu tiên của một kết nối BGP BGP chờ sự kiện bắt đầu, nó thường là khởi tạo bởi nhà quản trị hoặc là các sự kiện (event) trong mạng Tại sự kiện khởi tạo, tạo các thông tin cần thiết và reset lại các timer : holdtime… Idle có thẻ được chuyển về từ một trạng thái khác trong trường hợp có lỗi
Connect: trong trạng thái connect : BGP chờ cho kết nối TCP được hoàn thành Nếu kết nối TCP thành công, thì trạng thái này được chuyển tiếp sang trạng thái OpenSent Nếu kết nối TCP lỗi thì trạng thái này chuyển sang trạng thái Acitve,và router cố gắng để thiết lập kết nối lại Nếu một kết nối mà Connectretry timer hết hạn(expire) thì trạng thái được duy trì ở trang thái Connect , timer được reset, và kết nối TCP được khởi tạo lại Nếu bất cứ loại event khác gây lên lỗi thì BGP speaker sẽ đóng kết nối TCP và chuyển về trạng thái Idle
Active: trong trạng thái Active thì BGP cố gắng yêu cầu một peer khởi tạo kết nối TCP Nếu thành công, nó chuyển sang trạng thái OpenSent Nếu thời gian kết nói retry timer hết han, thì BGP sẻ chuyển về trạng thái Connect lại Trong khi active, thì BGP vẫn lắng nghe một kết nối khác được khởi tạo từ peer Trạng thái có thể chuyển về Idle trong trường hợp có các sự kiện khác, như kết thúc sự kiện bởi hệ thống hay nhà quản trị
OpenSent : trong trạng thái này, BGP chờ một bản tin open từ peer của nó bản tin open được kiểm tra tính đúng đắn Trong trường hớp có xảy ra lỗi, như: version không thích hợp hay AS không chấp nhận, thì hệ thống truyền bản tin chỉ báo và reset keepalive timer Tại trạng thái này thì hold time được thoả thuận và khoảng thời gian nào nhỏ hơn sẻ được chọn Nếu thời
Trang 7gian hold time được thoả thuận là 0 thì hold timer và keepalive timer sẻ không được khởi tao
OpenConfirm: Trong trạng thái này, BGP chờ bản tin keepalive hay bản tin chỉ thị cảnh báo Nếu một bản tin keepalive được nhận, thì trạng thái này chuyển sang trạng thái Established, và láng giềng thoả thuận hoàn thành Nếu hệ thống nhận một bản tin cập nhật hay keepalive, thì nó reset
holdtime, và trạng thái chuyển vè idle Hệ thống truyền một cách có chu kỳ các bản tin keepalive cho peer theo tốc độ được cài đặt theo keepalive timer Trong trường hợp bất kỳ mmọt sự ngưng kết nối TCP hay chấm dứt
sự kiện, được tạo ra bởi nhà quản trị thì trạng thái sẻ chuyển vê trạng thái idle
Established: Đây là trạng thái sau cùng của sự thoả thuận của các peer BGP bắt đầu trao đổi các gói cập nhật với các peers của nó Nếu không phải
là 0 thì hold time sẻ đươc reset lại khi nó nhận được thông tin cập nhật hay bản tin keepalive Mỗi gói cập nhật đều được kiểm tra lỗi, như trường hợp lỗi hay trùng lặp các thuộc tính Nếu có lỗi được phát hiện thì một bản tin cảnh báo (notification) được gởi đi cho Peer Bất kỳ bản tin cảnh báo nào được nhận trong khi ở trạng thái Established đề làm cho BGP xoá Peer dang nhận và trở về trạng thái Idle Nếu Hold time hết hạn, hay một bản tin chỉ thị cắt kết nối nhận được từ Peer, hay ngưng sự kiện được nhận thì hệ thống sể trở về trạng thái Idle
Trang 81.3 Các tham số tuyến đường trong BGP
Như phần đầu đã đề cập các tham số tuyến đường của BGP được chia là 4
nhóm.Trong phần này chúng ta sẽ đi tìm hiểu các tham số tuyến đường đó là gì
1.3.1 Thuộc tính AS_path
Thuộc tính AS_path: là một thuộc tính Well-know mandatory Nó là tuần tự của các số AS mà route đã truyền qua để đến đích AS đầu tiên truyền route sẽ thêm số
AS của nó và truyền đi sang EBGP peer của nó Sau đó thì mỗi AS mà nhận route này sẽ truyền route này sang EBGP peer khác và gán thêm số AS của nó vào đầu danh sách các số AS Danh sách cuối cùng sẽ là tất cả các số AS mà route đã được truyền đi qua, với số AS của AS mà khởi tạo route ban đầu nằm ở cuối danh sách
Trang 9BGP sử dụng thuộc tính AS_PATH này trong các cập nhật của nó để đảm bảo một
mô hình không bị loop trên Internet Mỗi route được truyền đi giữa các peer sẽ mang theo một danh sách của các số AS mà route đã được truyền qua Nếu route được quảng cáo đến một AS mà khởi tạo ra nó, và một AS thấy chính nó là một phần trong danh sách các số AS và nó sẽ không chấp nhận route này
BGP router sẽ chèn thêm số AS của nó khi quảng cáo bảng định tuyến cập nhật của nó sang một AS khác Khi route được truyền qua một BGP router có cùng AS thì danh sách AS_path sẽ giữ nguyên không thay đổi
Trong ví dụ này thì ta thấy route 172.16.10.0/24 được khởi tạo từ AS1 và được truyền đi qua AS2, AS3, AS4 và truyền ngược trở lại AS1 Nhận thấy rằng mỗi
AS truyền route này qua external peer thì nó thêm số AS của nó vào đầu danh sách AS_path Khi route truyền ngược trở lại AS1, thì BGB border router sẻ nhận ra rằng route này đã từng qua nó và không chấp nhận route này
Thông tin về AS_path là một thuộc tính để BGP xác đinh đường đi tốt nhất đến đích Khi so sánh 2 hay nhiêu route, giả sử tất cả các thuộc tính khác đều giống nhau, thì route nào có path ngắn hơn sẻ được ưu tiên chọn hơn
AS_path và số private AS
Thông thường để bảo tồn các số AS, thì các khách hàng mà các chính sách định tuyến của họ là sự mở rộng của các chính sách định tuyến của các nhà cung cấp được ấn định cho các AS không hợp lê Vì thế nếu khách hàng là một
Trang 10single-homed hay multisingle-homed của cùng một nhà cung cấp thì nhà cung cấp yêu cầu khách hàng phải sử dụng số AS lấy từ private pool 64512 đến 65535 Như vậy thì tất cả các cập nhật mà nhà cung cấp nhận được từ khách hàng chỉ gồm các số private AS
Các số private AS không thể quảng cáo ra internet, vì nó là không duy nhất Vì lý
do này mà các số private AS được cắt bỏ khỏi danh sách AS_path trước khi route được quảng cáo ra ngoài internet
VD:
Prefix (172.16.220.0/24) được khởi tạo từ AS 65001 có AS_path 65001 Khi AS 1 quảng bá prefix này ra internet, thì nó sẻ được loại bỏ số private AS Khi prefix đến internet thì, nó sẻ được xem như là đã được khởi tạo từ AS1 của nhà cung cấp
có AS_path là 1 BGP chỉ loại bỏ số private AS chỉ khi nó được quang bá sang EBGP peer Điều này nghĩa là việc loại bỏ số private AS sẽ được cấu hình trên RTB để kết nối đên RTC
Command: RTB(config)#router bgp 1
RTB(config-router)#neighbor 172.16.20.2 remote-as 65001 RTB(config-router)#neighbor 192.168.6.3 remote-as 7