You are on page 1of 12

Giao Thức BGP - Border Gateway Protocol

Sunday, December 20, 2009 3:58:49 AM


Network
I.Tổng quan:

1.Các khái niệm cơ bản về BGP:

a.Sự cần thiết của BGP:

BGP là một giao thức định tuyến phức tạp, được dùng nhiều trên Internet và
trong các công ty đa quốc gia. Giao thức này được thiết kế để kết nối các AS
(Autonomous system), không kết nối các subnets với 1 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 định. Mỗi AS được định danh bởi một số và được cung cấp bởi
một nhà cung cấp AS hoặc bởi các ISPs. Con số này được chia ra làm 2 loại:
Public có giá trị từ 1 đến 64511, privite có giá trị từ 64512 đến 65535. Các
công ty lớn có thể dùng BGP như là một kết nối giữa các mạng ở các quốc
gia khác nhau.

b.Một số tính chất của BGP:

-BGP là một giao thức định tuyến dạng path-vector và việc chọn đường đi
tốt nhất thông thường dựa vào một tập hợp các thuộc tính (attribute).
-Nhiệm vụ của BGP là đảm bảo thông tin liên lạc trao đỗi thông tin định
tuyến giữa các AS.
-BGP sử dụng giao thức TCP 179.
-BGP chỉ ra chính xác danh sách toàn bộ đường dẫn đến đích.
-Chống vòng lặp rất hiệu quả nhờ vào cơ chế xem xét các tuyến đườgn mà
router gửi về xem có chính bản thân AS trong đó hay khôngm nếu có route
sẽ biết được ngay là đã bị lặp và sẽ loại bỏ thông tin đó.
-Trong giai đoạn đầu tiên thiết lập mối quan hệ BGP thì toàn bộ thông tin
cập nhật sẽ được trao đổi và sau đó sẽ chuyển sang cơ chế trigger-update.
-Một điểm khác biệt rõ thấy nhất của BGP so với các giao thức định tuyến
loại IGP (như OSPF,RIP, EIGRP, IGRP,…) đó là nó không quan tâm đến
các subnet cụ thể trong một công ty,cơ quan,…mà nó quan tâm đến việc
chuyển tải đầy đủ thông tin đến 1 AS khác với các chính sách định tuyến
(policy) cần thiết.
-BGP có thể sử dụng giữa các router trong cùng 1 AS và khác AS. Khi BGP
được dùng trong cùng 1 AS thì được gọi là iBGP, còn dùng để kết nối các
AS khác nhau thì gọi là eBGP.
II.Cách dùng BGP:

-BGP đuợc sử dụng trong trường hợp mạng của một công ty kết nối đến
nhiều ISP hoặc các AS khác nhằm mục đích dự phòng.
-Có thể sử dụng Policy Base Routing để triển khai các định tuyến trên từng
kết nối. Hoặc có thể sử dụng các thuộc tính (attribute) của BGP để thực hiện
việc cân bằng tải.
-Ngoài ra, BGP được sử dụng cho các ISP. Nếu là một ISP thì phải cho phép
các traffic khác đi qua AS của mình (hoạt động như một vùng chuyển tiếp).

III.Hoạt động của BGP:

1.Cập nhật bảng định tuyến:

Chức năng của BGP là để trao đổi định tuyến giữa các AS khác nhau và đảm
bảo chọn lựa tuyến thông suốt không bị loop. Do BGP sử dụng giao thức
TCP nên nó thừa kế tính tin cậy và kết nối có hướng của TCP.
BGP xây dựng một biểu đồ hình cây các AS dựa trên thông tin giữa các
BGP neighbor để đảm bảo lựa chọn tuyến không loop. Kết nối giữa hai AS
bất kỳ được thể hiện bởi đường Path.

2.Thiết lập mối quan hệ BGP neighbor:

Để chạy giao thức BGP thì đầu tiên các router phải thiết lập mối quan hệ
neighbor hay peer (có nghĩa là kết nối TCP phải được đảm bảo). Sau khi đã
thiết lập được mối quan hệ này, các router neighbor sẽ trao đổi thông tin
bằng nhiều bản tin để mở và xác nhận các thông số kết nối. Tiếp theo chúng
sẽ trao đổi các thông tin về các tuyến đường BGP. Sau khi việc trao đổi
thông tin này được hoàn tất thì các cập nhật thành phẩn (incremental update)
sẽ được gửi đi khi có sự cố trong mạng chứ không truyền toàn bộ bảng định
tuyến (hoạt động theo cơ chế trigger-update). Nếu như không có thông tin
định tuyến nào được trao đổi thì sau thời gian keepalive (mặc định là 60s)
các router chạy BGP sẽ tự động ngắt kết nối.

IV.Các thuộc tính quan trọng:

1.Phân loại:

BGP định tuyến các traffic dựa trên các thuộc tính, các thuộc tính này sẽ
được sử dụng để tìm đường đi tốt nhất và chỉ có duy nhất (không có khái
niệm load balancing trong BGP). Các thuộc tính này được chia làm 2 loại:
-Well-known:
oWell-known mandatory: thuộc tính này là bắt buộc phải tồn tại trong các
bản tin cập nhật và được công nhận bởi tất cả các router BGP.
oWell-known Discretionary: không yêu cầu bắt buộc nhưng nếu có trong các
bản tin cập nhật thì phải được công nhận và có hành động tương ứng bởi các
router BGP.
-Optional:
oOptional Transitive: Router BGP không công nhận thuộc tính này nhưng
nếu nhận được thì sẽ đánh dấu và gửi đi đầy đủ bản cập nhật này đến router
kế tiếp.
oOptional Nontransitive: Thuộc tính này sẽ loại bỏ các thông tin cập nhật đi
vào router BGP khi nó không công nhận.

2.Các thuộc tính cơ bản:

a.Thuộc tính AS_PATH:

Có ý nghĩa trong việc xác định tìm đường đi tốt nhất, có hai chức năng:
AS_PATH càng ngắn càng ưu tiên (chú ý: trong BGP thì đường đi được xác
định theo kiểu AS – by – AS chứ không phải Hop – by - Hop như các giao
thức định tuyến IGP) và ngăn ngừa loop (khi một route đã từng qua router
thì nó sẽ không chấp nhận route này nữa). Đây là một thuộc tính Well-
known mandatory.

b.Thuộc tính Origin:

Là thuộc tính dùng để xác định nguồn gốc của các tuyến routing được học
trong bảng định tuyến. Có các khả năng sau:
-i: học từ các giao thức định tuyến IGP (được học bằng lệnh Network)
-e: học từ giao thức EGP (ở đây cũng là BGP)
-?: không biết nguồn gốc của tuyến (được học bằng lệnh redistribute…)

c.Thuộc tính Next-Hop:

Thuộc tính này có tác dụng tương tự như giá trị next-hop trong IGP, tuy
nhiên có một số khác biệt trong cách chọn next-hop giữa IGP và BGP. Đối
với IGP thì để đến được đích (một mạng nào đó) thì next-hop là địa chỉ IP
của router được router quảng bá route. Đối với BGP thì được chia ra làm hai
loại:
-Đối với EBGP: thì next-hop là địa chỉ IP của router láng giềng quảng bá
route.
-Đối với IBGP: route được quảng bá trong cùng AS thì next-hop là địa chỉ
IP của router láng giềng quảng bá route. Với route được quảng bá vào AS từ
EBGP thì next-hop từ EBGP không được thay đổi vào trong IBGP, next-hop
là địa chỉ IP của EBGP láng giềng mà nó học được.
Ví dụ:

Trong hình vẽ, router R1 sẽ quảng bá mạng 131.16.0.0/16 trong EBGP đến
router R2 với next-hop là địa chỉ 10.10.10.1. Sau đó router R2 quảng bá
mạng này đến router R3 thì next-hop vẫn giữ nguyên là 10.10.10.1.

Thuộc tính Next-hop trong môi trường Multiaccess:

Sẽ là không tối ưu nếu như vẫn giữ nguyên việc chọn next-hop là địa chỉ
nguồn khi quảng bá một route ra khỏi AS trong môi trường Multiaccess. Bởi
vì điều này sẽ dẫn đến việc các gói tin bị gửi đến vài router trước khi có thể
tìm ra được nguồn gốc xuất phát thực sự. Vì vậy, trong BGP có một luật là
trong môi trường Multiaccess thì next-hop được giữ nguyên.

Ví dụ:

Trong hình vẽ dưới đây, R4 là BGP neighbor với R3 mà không phải là


neighbor của R2. Khi router R2 quảng bá mạng 131.16.0.0 đến router 4
trong EBGP thì nó được gửi đi với next-hop là 10.10.10.2 chứ không phải là
10.10.10.3. Ta thấy rằng nếu như mạng 131.16.0.0 được gửi đến router R4
với next-hop là 10.10.10.3 thì các gói tin sẽ đi qua router R3 sau đó mới
được chuyển đến router R4, giả sử số lượng router trong môi trường
Multiaccess này là lớn thì nó sẽ gửi vòng quanh tất cả các hop đó. Với next-
hop là 10.10.10.2 thì có thể thấy rằng đây là đường đi tốt nhất từ mạng
131.16.0.0 đến router R4
Thuộc tính Next-hop trong môi trường NBMA:

Trong môi trường NBMA thì quy luật về cách chọn next-hop vẫn tương tự
như trong Multiaccess. Tuy nhiền điều này tạo ra một vấn đề, đó là các
router không được kết nối trực tiếp với router nguồn nếu như sử dụng mô
hình hub-and-spoke. Ở hình vẽ ta thấy rằng router R2 cập nhật được mạng
131.16.0.0/16 từ router R3 và nó cố gắng sử dụng địa chỉ 10.10.10.3 của R3
làm next-hop. Tuy nhiên trong trường hợp này thì bảng định tuyến có vấn đề
vì không có kết nối ảo nào giữa R2 và R3. Để giải quyết trường hợp này thì
ta sử dụng thuộc tính next-hop-seft để buộc router R1 làm next-hop khi
router R1 quảng bá mạng 131.16.0.0/16 với next-hop của chính nó là
10.10.10.1. Lúc này R2 sẽ gửi trực tiếp các gói đến mạng 131.16.0.0/16
thông qua R1.
d.Thuộc tính Local Preference:

Thuộc tính này có ý nghĩa là cho phép chọn đường mong muốn khi ra khỏi 1
AS. Nó được biểu diễn bằng một con số và được so sánh để tìm đường đi
(trong nhiều đường đi của 1 AS) đến đích (2 hoặc nhiều AS khác). Đường
nào có giá trị Local Preference cao hơn sẽ được chọn. Thuộc tính này chỉ có
ý nghĩa trong phạm vi 1 AS và không bao giờ gửi ra khỏi AS đó, vì vậy tất
cả các router có cùng một quyết định chung để đến một route bên ngoài.

Ví dụ:

Công ty A đã mua kết nối đến hai nhà cung cấp dịch vụ ISP 1 và ISP 2. Một
vấn đề xảy ra trong trường hợp này là Công ty A sẽ đi đường nào ra ngoài
internet. Nếu Admin muốn ra ngoài internet thông qua nhà cung cấp dịch vụ
ISP 1 thì R3 gán giá trị Local Preference (LP) là 300 và R4 gán cho route
đến ISP2 một giá trị thấp hơn là 200. Bởi vì cả hai router R3 và R4 đều
chuyển đổi thông tin định tuyến cập nhật bằng IBGP nên chúng đều đồng ý
rằng điểm ra khỏi AS bằng đường qua ISP1 bởi vì giá trị LP ở router đi ra
khỏi AS là cao hơn. Hình.
e.Thuộc tính Weight:

Thuộc tính này tương tự như Local Preference ở điểm là nó sẽ ưu tiên sử


dụng route có giá trị weight cao hơn. Tuy nhiên điểm khác biệt đó là nó chỉ
có ý nghĩa trong nội bộ 1 router chứ trong gửi thông tin cho những router
bên cạnh. Có nghĩa là mô hình áp dụng cho thuộc tính này là một router đi ra
ngoài internet được nối với 2 hay nhiều nhà cung cấp dịch vụ (khác với mô
hình sử dụng thuộc tính Local Preference là 2 hay nhiều router trong cùng
AS được nối với 2 hay nhiều nhà cung cấp dịch vụ).
Thông số này có tác động mạnh hơn bất kỳ thuộc tính nào, vì vậy nó rất
quan trọng trong việc xác định route nào được ưu tiên. Nó là thuộc tính
không bắt buộc.

Ví dụ:
Một Công ty A đã mua hai đường kết nối ra ngoài internet bởi hai nhà cung
cấp dịch vụ là ISP1 và ISP2 thông qua router R3. Nếu Admin của Công ty A
muốn mạng của mình ra ngoài Internet thông qua dịch vụ của nhà cung cấp
ISP1 thì đặt trọng số Weight trên Interface kết nối với ISP1 là 150 và trên
Interface còn lại có con số cao hơn là 200. Lúc này, nếu mạng ổn định thì
mọi gói tin ra ngoài internet đến R3 đều đi qua nhà cung cấp dịch vụ ISP1.

f.Thuộc tính Multi_Exit_Disc (MED):

Thuộc tính này được trao đổi giữa các AS, có ý nghĩa dùng để 1 AS khác
chọn đường đi đến một đích (một mạng) nào đó trong 1 AS đang tham
chiếu. Một mô hình đơn giản để hiểu về thuộc tính này là: một AS có nhiều
đường đến 1 nhà cung cấp dịch vụ (1 AS khác) và giá trị này được dùng để
nhà cung cấp dịch vụ tìm đường vào AS có nhiều điểm vào này.
Đường nào có MED thấp hơn sẽ được chọn (có lẽ lý do này mà MED cũng
thường được gọi là metric).

Ví dụ:

Trong hình vẽ ta thấy rằng nhà cung cấp dịch vụ ISP nhận cập nhật định
tuyến mạng 128.1.0.0/16 từ 3 nguồn khác nhau. Đó là R2 có MED là 50, R3
có MED là 150 và R4 có MED là 200. Lúc này ISP sẽ so sánh hai giá trị
MED từ Công ty A và sẽ ưu tiên chọn R3 vì nó quảng bá MED nhỏ hơn.
Nếu như lệnh bgp always-compare-med metric được sử dụng trên R1 thì nó
sẽ tiếp tục so sánh các giá trị MED. Lúc này nó sẽ chọn R2 để đến mạng
128.1.0.0/16 bởi nó có MED nhỏ hơn so với MED của R3.

3.Thuật toán tìm đường đi tốt nhất của BGP:

BGP sẽ chọn đường đi tốt nhất từ danh sách các đường đi hợp lệ dựa vào thứ
tự ưu tiên của các luật sau (ưu tiên từ trên xuống dưới):

-Ưu tiên đường đi có trọng số Weight cao nhất. Đây là một thông số do
Cisco đưa ra, nó chỉ mang tính local trong một router.
-Ưu tiên đường đi có Local Preference cao nhất. Có giá trị mặc định là 100.
-Ưu tiên đường đi có nguồn gốc từ lệnh Network hoặc aggregate hoặc thông
qua quá trình Redistribute từ một IGP. Các đương đi có nguồn gốc từ lệnh
Network hay redistribute có độ ưu tiên cao hơn từ lệnh aggregate.
-Ưu tiên đường đi có AS path ngắn nhất.
-Ưu tiên đường đi có nguồn gốc thấp nhất. IGP < EGP < INCOMPLETE.
-Ưu tiên đường đi có giá trị MED nhỏ nhất. Mặc định bằng 0.
-Ưu tiên đường đi eBGP hơn so với iBGP.
-Ưu tiên đường đi có IGP thấp nhất đến BGP next-hop.
-Nếu có hai đường đi đến đích mà có tất cả các thuộc tính trên là giống nhau
thì nó sẽ ưu tiên đường đi được nhận trước (đường đi cũ nhất).
-Ưu tiên đường đi đến BGP router có router ID nhỏ nhất. Giá trị router ID là
địa chỉ IP cao nhất trên Router. Cũng có thể gán bằng lệnh bgp router-id.
-Ưu tiên chođường đi có số cluster là ít nhất.
-Ưu tiên đường đi đến từ những láng giềng có địa chỉ thấp nhất. Địa chỉ này
là địa chỉ được dùng trong lệnh neighbor.

V.Các command được sử dụng trong BGP:


VI.Lab:
1.Thiết bị:
-8 router.
-8 cổng Serial.
2.Đặt vấn đề:

Một công ty X bao gồm hai công ty con là Công ty A và Công ty B sử dụng
2 AS khác nhau được mua từ nhà cung cấp dịch vụ. Công ty B đi ra ngoài
internet thông qua nhà cung cấp dịch vụ là ISP1 và ISP2. Yêu cầu là:
-Admin muốn sử dụng giao thức BGP cho các kết nối khác AS, còn trong
AS thì sử dụng OSPF.
-Công ty A vào mạng của Công ty B theo đường thông qua R1 và muốn cái
gói tin từ mạng của Công ty B về lại Công ty A thì đi vào R4.
-Công ty B ra ngoài internet thông qua nhà cung cấp dịch vụ ISP1 và muốn
nhận các thông tin từ internet thông qua nhà cung cấp dịch vụ ISP2.
3.Cấu hình:

You might also like