Powered by Blogger.

Những kiến thức cơ bản về BGP

Sự cần thiết của BGP
BGP là một giao thức khá phức tạp được dùng nhiều trên Internet và trong các công ty đa quốc gia. Mục đích chính của BGP là kết nối các mạng rất lớn hoặc các Autonomous-System. 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. Mục đích của các giao thức ngoại như BGP là không chỉ tìm ra một đường đi về một mạng nào đó mà còn cho phép người quản trị tìm ra các AS của các network. Các giao thức nội như EIGRP, RIP, OSPF và ISIS sẽ tìm ra network mà người quản trị cần.

Một số tính chất của BGP
BGP là một giao thức định tuyến dạng path-vector nên việc chọn lựa đường đi tốt nhất thông thường dựa trên một tập hợp các thuộc tính được gọi là ATTRIBUTE. Do sử dụng metric khá phức tạp, BGP được xem là một giao thức khá phức tạp. Nhiệm vụ của BGP là đảm bảo thông tin liên lạc giữa các AS, trao đổi thông tin định tuyến giữa các AS, cung cấp thông tin về trạm kế cho mỗi đích đến. BGP sử dụng giao thức TCP cổng 179. Như các chương trước đã đề cập, các giao thức nhóm distance vector thường quảng bá thông tin hiện có đến các router láng giềng, còn path vector chỉ ra chính xác danh sách toàn bộ đường dẫn đến đích. Ngoài ra các giao thức định tuyến hoạt động dùng path vector giúp việc xác định vòng lặp trên mạng rất tốt bằng cách xem xét các con đường mà các router khác gởi về xem có chính bản thân AS trong đó hay không, nếu có sẽ biết được ngay là lặp, và sẽ loại bỏ.
BGP hỗ trợ cho các địa chỉ CIDR (Classless Interdomain Routing). BGP cho phép dùng xác thực và BGP có các cơ chế keepalive định kỳ nhằm duy trì quan hệ giữa các BGP peers.
Trong giai đoạn ban đầu của của phiên thiết lập quan hệ BGP, toàn bộ các thông tin routing-update sẽ được gửi. Sau đó, BGP sẽ chuyển sang cơ chế dùng trigger-update. Bất kỳ một thay đổi nào trong hệ thống mạng cũng sẽ là nguyên nhân gây ra trigger-update.
Một trong các đặc điểm khác biệt nhất của BGP là trong các routing-update của nó. Khi ta xem xét các BGP update, ta sẽ nhận thấy các routing update này là khá chính xác. BGP không quan tâm đến việc giao tiếp để có đầy đủ kiến thức của tất cả các subnet bên trong một công ty mà BGP quan tâm đến việc chuyển tải đầy đủ thông tin để tìm một AS khác. Các BGP update thực hiện quá trình summarization đến một mức tối đa bằng cách cho phép một số AS, cho phép một số prefix và một vài thông tin định tuyến. Tuy nhiên, một phần nhỏ của BGP update là khá quan trọng. BGP đảm bảo rằng lớp transport đã truyền các update và các cơ sở dữ liệu về đường đi đã được đồng bộ. BGP có thể được hiện thực bao gồm giữa các AS khác nhau hay trong cùng 1 AS. Khi dùng BGP để kết nối các AS khác nhau, BGP được gọi là eBGP. Giao thức này cũng có thể được dùng để mang thông tin giữa các router eBGP trong một AS. Khi đó BGP được gọi là iBGP.

Trong một AS ta sử dụng giao thức định tuyến nội IGP (ví dụ như RIP, ISIS, EIGRP, OSPF) nhưng khi ra ngoài một AS thì phải sử dụng một giao thức khác. Vấn đề ở đây chính là mục đích của các IGP và EGP không giống nhau. Các IGP thực hiện định tuyến gói đi từ nguồn đến đích mà không cần quan tâm đến chính sách định tuyến (policy). Trong khi ra khỏi phạm vi một AS thì chính sách định tuyến lại là vấn đề quan trọng . Xét ví dụ sau:

AS4---AS1---AS2---AS3---(C Company)
|........................................|
|........................................|
B Company-----------A Company

Giả sử A muốn truyền dữ liệu đến AS4. A và B là 2 đối thủ của nhau. B không muốn chuyển dữ liệu cho công ty A nên A chỉ có thể chuyển dữ liệu thông qua AS3, AS2, AS1 để đến được AS4, mặc dù con đường thông qua công ty B có thể là tối ưu nhất. Giả sử C thuộc AS3 cũng muốn đến AS4 nhưng C là đối tác của B nên B sẵn sàng cho quá giang. Như vậy A và C có cùng một đích đến nhưng phải đi theo những cách khác nhau. Các IGP không thể làm được điều này vì một nguyên nhân chủ yếu chính là các giao thức đó đều liên quan đến metric hay là cost mà hoàn toàn không quan tâm đến chính sách định tuyến. Nó chỉ biết cố gắng làm sao chuyển được các gói dữ liệu đến đích một cách hiệu quả và tối ưu nhất.
Các thuật ngữ BGP

1
Aggregation
Là quá trình tóm tắt các route – (summarization)

2
Attribute
Tương tự như metric. Các biến này sẽ mô tả các đặc điểm của đường đi tới một địa chỉ đích nào đó. Khi được định nghĩa, các đặc điểm này có thể được dùng để ra quyết định về nên đi theo đường đi nào.

3
Autonomous System
Định nghĩa mạng của một tổ chức. Trong một AS, các router sẽ có cùng giao thức định tuyến. Nếu ta kết nối ra Internet, chỉ số AS này phải là duy nhất và được cung cấp bởi các ủy ban Internet.

4
Exterior Gateway Protocol (EGP)

Thuật ngữ chung cho một giao thức được chạy giữa các AS khác nhau. Cũng có một giao thức có tên là EGP là tiền thân của BGP

5
EBGP
Gửi thông tin định tuyến giữa các AS khác nhau

6
Interior Gateway Protocol (IGP)

Đây là các giao thức định tuyến chạy bên trong một AS. Trong quá khứ, thuật ngữ gateway thường được dùng để định nghĩa một router.

7
IBGP
Giao thức này được dùng bên trong một 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 ở ngoài rìa của một AS. IBGP được dùng giữa các router chạy BGP trong cùng một AS.

8
Originator-ID

Đây là thuộc tính của BGP. Nó là một thuộc tính tùy chọn. Thuộc tính này sẽ chứa giá trị routerID của router đã phát sinh ra đường đi đó. Mục đích của thuộc tính này là ngăn ngừa routing loop. Nếu một router nhận được một update từ chính nó, router đó sẽ bỏ qua update đó.

9
policy-based routing

Cơ chế này cho phép người quản trị lập trình giao thức định tuyến bằng cách định nghĩa traffic sẽ được route như thế nào. Đây là một dạng của định tuyến tĩnh. PBR độc lập với các giao thức định tuyến và dùng route-map để tạo ra các quá trình riêng lẽ để áp đặt các quyết định định tuyến.

10
prefix list

Prefix list được dùng như một thay thế cho distribute-list để kiểm soát BGP học hoặc quảng bá các cập nhật như thế nào. Prefix-list thì nhanh hơn, uyển chuyển hơn và ít tốn tài nguyên của hệ thống hơn.

11
Route-reflector
Đây là router được cấu hình để chuyển các routes từ các router iBGP khác. Khi cấu hình route-reflector, các iBGP không cần phải fully-mesh nữa. Một mạng fully-mesh thì không có khả năng mở rộng.

12
Route-Reflector Client
Một client là một router có một TCP session với một router khác hoạt động như một route-reflector-server. Client không cần thiết phải thiết lập peer với các client khác.

13
Route_reflector Clustor
Một cluster là một nhóm bao gồm một route-reflector và clients. Có thể có nhiều hơn một route-reflector server trong một cluster.

14
transit autonomous system

Là AS được dùng để mang các BGP traffic qua các AS khác.

Khi nào thì dùng BGP?

Khi mạng của một công ty kết nối đến nhiều ISP hoặc các AS khác và đang dùng các kết nối này. Nhiều công ty dùng các kết nối khác nhau nhằm mục đích dự phòng. Chi phí có thể giảm thiểu nếu tất cả các kết nối đều được dùng. Trong trường hợp này, PBR có thể cần thiết để triển khai trên từng kết nối. BGP còn được dùng khi chính sách định tuyến của nhà cung cấp dịch vụ và của công ty khác nhau. Hoặc traffic trong công ty cần phải được phân biệt với traffic của ISP. Mạng của hai tổ chức không thể xuất hiện như một AS. Một trường hợp khác phải dùng BGP là khi mạng của ta là một ISP. Nếu là một ISP, hệ thống mạng này phải cho phép các traffic khác đi qua AS của mình. Lúc này nó hoạt động như một transit domain.

Khi nào thì không dùng BGP?

Một hệ thống mạng đơn giản là một hệ thống mạng dễ dàng quản lý và bảo trì. Đây là lý do chính để tránh dùng BGP trong một hệ thống mạng. Vì vậy, nếu hệ thống mạng có các đặc điểm sau, nên dùng những cách thức khác, chẳng hạn như static hoặc default-routing.

- Mạng của ISP và mạng của công ty có chung một chính sách định tuyến

- Mặc dù công ty của bạn có nhiều kết nối đến ISP, các kết nối này là dự phòng và vì vậy không cần một kế hoạch để kích hoạt nhiều hơn một kết nối đến Internet.

- Tài nguyên mạng là có giới hạn, chẳng hạn như bộ nhớ và CPU của router.

- Băng thông giữa các AS là thấp và các phí tổn cho định tuyến sẽ ảnh hưởng đến quá trình chuyển dữ liệu.

Một số thuộc tính quan trọng của BGP
BGP định tuyến traffic bằng cách sử dụng các thuộc tính. Việc sử dụng các thuộc tính ám chỉ đến việc sử dụng các biến trong quá trình chọn lựa đường đi trong BGP. Các thuộc tính của BGP không chỉ là danh sách các biến mà qua đó route được chọn lựa. Một vài thông tin được mang trong các thông điệp cập nhật là quan trọng hơn các thông tin khác. Một số thông tin khác là rất quan trọng cho hoạt động của BGP, vì vậy các thông tin này phảI được mang đến tất cả các router BGP trong mạng. Quá trình chọn lựa đường đi dựa trên những thuộc tính và các giá trị của nó. Các thuộc tính được chia thành hai nhóm: nhóm nổI tiếng (well-known) và nhóm tùy chọn (optional). Cả hai nhóm này sẽ được tiếp tục chia ra làm các nhóm con.

Nhóm
Mô tả

Well-known mandatory
Các thuộc tính này là bắt buộc và được công nhận bởi tất cả các router BGP

Well-known Discretionary

Không yêu cầu các thuộc tính này tồn tại trong các cập nhật 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
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 router nếu thuộc tính này không được công nhận bởi router.

Optional Nontransitive
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. Các thuộc tính này sẽ không truyền tới các BGP.

1. Thuộc tính AS_PATH: Đây là thuộc tính quan trọng trong việc xác định đường đi tối ưu, mang 2 chức năng. Thứ nhất, AS_PATH càng ngắn càng được router ưu tiên hơn. (ví dụ từ AS3 đến AS4 có 2 con đường khác nhau: AS3 - B - AS4, hoặc AS3 - AS2 - AS1 – AS4 thì router sẽ ưu tiên con đường ngắn hơn là qua B). Chức năng thứ hai là ngăn ngừa vòng lặp. Bởi vì thuộc tính AS_PATH rất quan trọng cho quá trình hoạt động của BGP nên tất cả các nhà cung cấp phải hỗ trợ nó và là một thuộc tính mang tính bắt buộc, nghĩa là tất cả các bộ định tuyến phải chuyển thuộc tính này đến tất cả các láng giềng trong mọi thông điệp cập nhật của BGP.

2. Thuộc tính nguồn gốc (Origin-attribute): là một thuộc tính xác định nguồn gốc của các routing thông tin cập nhật định tuyến. Nếu là “i ” thì chỉ rằng routing thông tin cập nhật định tuyến được biết thông qua một IGP (RIP, OSPF…). Nếu giá trị “e” thì routing thông tin cập nhật định tuyến được biết thông qua một EGP. Nếu giá trị “?” (incomplete) thì chỉ rằng không biết nguồn gốc của routing thông tin cập nhật định tuyến. (Điều này có thể xuất hiện nếu routing thông tin cập nhật định tuyến được biết thông qua IGP rồi sau đó lại được thông báo qua EGP.). Khi nó học đường bằng lệnh network thì nó để thuộc tính này là: i. Khi nó học đường qua các lệnh như redistribute v.v... thì nó để thuộc tính là: “?”.Còn sau đó các mạng này được quảng bá tới các EGP router láng giềng thì thuộc tính này được đổi thành e vì router mới học được các tuyến đường này nhờ EGP. Thuộc tính origin không thay đổi qua giao thức EBGP mà vẫn giữ nguyên. Thuộc tính origin là e khi tuyến được học từ giao thức EGP (đây là giao thức định tuyến giữa các AS, được sử dụng nhiều trên Internet khi BGP chưa ra đời nhưng hiện nay hầu như không còn được sử dụng)

Next-Hop attribute:

Trong eBGP, giá trị next-hop là địa chỉ IP của router từ bên ngoài của vùng tự trị AS quảng bá vào bên trong AS. Địa chỉ IP được chỉ ra bởi lệnh neighbor. Tuy nhiên trong môi trường multiaccess, nếu một route đến từ một router, sẽ là không khôn ngoan nếu một router quảng bá địa chỉ của nó như là địa chỉ nguồn vì điều này sẽ dẫn đến việc các packets bị gửi đến vài router trên mạng multiacess trước khi có thể tìm ra được nguồn gốc xuất phát thật sự. Vì vậy, có một luật rằng, địa chỉ của router xuất phát gói tin BGP sẽ vẫn giữ như địa chỉ nguồn.

Khi BGP khai báo một mạng, router tự định rõ bản thân router đó như là Next Hop. Tuy nhiên, nếu router đó gởi thông điệp update cho một router láng giềng khác trong cùng một AS thì nó lại tiếp tục dùng router ngoài AS làm Next hop. Do đó ta phải cấu hình cho các router còn lại trong AS biết được chính router ở biên cùng AS với nó là router Next Hop chứ không phải là router khác AS.


Bước 1: Router A gửi cập nhật về mạng 192.33.33.0

Bước 2: Router D nhận update và truyền. Tuy nhiên nếu routerD thay đổi địa chỉ source-address thành địa chỉ địa chỉ của chính nó, sẽ có một sự nhầm lẫn xảy ra vì trong môi trường multiaccess, mọi router sẽ công bố nó là next-hop. Để tránh tình huống này, địa chỉ nguồn của update không thay đổi.

Bước 3: Router B biết routerA là next-hop của mạng 192.33.33.0

The Next-Hop Attribute and a Nonbroadcast Multiaccess Network

Cũng giống như trong môi trường multiaccess, một mạng NBMS cũng tuân theo cùng một qui luật. Tuy nhiên sẽ có tiềm ẩn một vấn đề vì các router khác sẽ không có khả năng kết nối trực tiếp với router nguồn nếu đám mây NBMA có cấu hình hub-and-spoke.


Thuộc tính Nexthopself trong BGP

150.10.0.0 (AS 100)
RouterA--------(150.10.3.1)---IBGP--------RouterB---|
|(170.10.20.1)
|
| (170.10.20.2)
RouterC
|_ 170.10.0.0 (AS 300)

Thuộc tính BGP nexthop là một địa chỉ next hop IP mà nó sẽ được dùng để đi đến một số mạng đích. Đối với EBGP, next hop luôn luôn là địa chỉ IP của router láng giềng đã được khai báo trong câu lệnh neighbor. Theo ví dụ trên, RouterC sẽ quảng cáo network 170.10.0.0 cho RouterA với một next hop là 170.10.20.2 và ngược lại RouterA sẽ quảng cáo lại 150.10.0.0 cho RouterC với một next hop là 170.10.20.1. Đối với IBGP, có một nguyên tắc là: “the next hop advertised by EBGP should be carried into IBGP”. Chính vì quy luật này, nên Router A sẽ quảng cáo lại 170.10.0.0 cho các IBGP peer của nó, trong trường hợp này là RouterB với một next hop là 170.10.20.2. Vì thế, lúc này RouterB sẽ có next hop để đi đến network 170.10.0.0 sẽ là 170.10.20.2 chứ KHÔNG phải là 150.10.30.1
Lúc này thì bạn phải đảm bảo rằng RouterB có thể reach 170.10.20.2 thông qua IGP, nếu không RouterB sẽ drop những packet có dest. là 170.10.0.0 vì lúc này địa chỉ next hop address trở nên inaccessible. Đến đây thì bạn hãy hình dung nếu như trong môi trường NBMA, và có thêm một RouterD (network 180.20.0.0) được thêm vào trong AS 300, mà RouterA không có PVC kết nối trực tiếp đến RouterD thì lúc này nexthop của RouterD quãng cáo cho RouterA mà RouterA sẽ không reach được. Lúc này routing sẽ fail. Để khắc phục tình trạng này thì NEXT-HOPE-SELF được sử dụng.

neighbor {ip-address| peer-group-name1 } next-hop-self

Câu lệnh này sẽ cho phép áp đặt BGP dùng địa chỉ mình khai báo thành next hop thay vì để BGP tự chọn next hop.

RouterC#
router bgp 300
neighbor 170.10.20.1 remote-as 100
neighbor 170.10.20.1 next-hop-self

RouterC sẽ qủang cáo 180.20.0.0 với NextHop = 170.10.20.2. Next-hop-self chỉ có lợi trong môi trường nonmeshed.

Local-Preference attribute: Đây là thuộc tính không bắt buộc (tức là không cần phải xuất hiện trong thông điệp Update), chỉ mang ý nghĩa cục bộ trong phạm vi AS mà không bao giờ gởi ra khỏi AS đó. Nó được truyền đến các local BGP neighbors. Thuộc tính Local-Preference cho phép chúng ta chọn con đường mong muốn nhất ra khỏi một AS.

Weight attribute: Đây cũng là thuộc tính không bắt buộc, các nhà cung cấp không cần phải hỗ trợ cho nó. Thực tế thuộc tính chỉ được cung cấp cho một bộ định tuyến đơn và không gởi trong bất kỳ thông điệp Update nào. Thuộc tính Weight được dùng để điều khiển hướng truyền các local packet đến router khi router đó có hai route khác nhau ra khỏi AS(multihomed).

Thuộc tính MULTI_EXIT_DISC (MED)

Đây là thuộc tính được AS dùng để tham chiếu cho việc nên chọn router nào để đi đến cùng một đích trong một AS. Trong BGP cũng có một ATTRIBUTE được gọi là metric, đó là MED (Multiexit Discrimination). Tuy nhiên MED này có ý nghĩa hơi khác so với metric trong các IGP. BGP dùng MED (metric) để hướng dẫn cho các router láng giềng lựa chọn đường đi tốt nhất. MED(multiple-exit-discriminator) là 1 attribute của BGP, nó giới thiệu về những router láng giềng bên ngoài về 1 mạng được chọn vào 1 AS có nhiều exit point, cái nào có MED thấp hơn sẽ được chọn (do đó có lẽ nó giống với metric), không giống như Local Preference, MED được trao đổi giữa các AS nhưng nó sẽ không ra khỏi AS đó nếu nó đã vào (khi 1 thông tin cập nhật định tuyến vào 1 AS với giá trị MEd xác định thì nó sẽ được sử dụng để thực hiện quyết định trong nội bộ AS đó .Nếu 1 route xuất phát từ chính AS thì MED sẽ được tính theo metric của IBGP. MED là một attribute yếu (trong thứ tự route-selection của BGP), nên để control được nó cần phải care được các thuộc tính có mức ưu tiên cao hơn (weight-localpreference-originate-ASpath-origin code). Hơn nữa, originated AS không thể điều khiển quá trình đặt MED trên các originating AS (neighbor AS), hoặc ngược lại, nên hiếm khi được dùng trong thực tế. Ngoài ra, với nhiều Customer với các yêu cầu chính sách chọn outgoing traffic khác nhau, MED không hiệu quả. Người ta hay sử dụng community attribute để giải quyết vấn đề chọn incomming traffic thay cho as-path prepending hoặc MED.

Communtity attribute:

Đây là một thuộc tính không bắt buộc. Thuộc tính này được dùng để cung cấp chính sách cho một nhóm các router đi qua các AS. Do đó các router này có cùng một tính chất và có chung chính sách. Nếu một router nhận được một thông điệp Thông tin cập nhật định tuyến với thuộc tính Community được thiết lập,nó sẽ xử lý thông điệp này một cách hợp lí. Nếu nó không hiểu thông điệp này thì sẽ gửi thuộc tính đó cho router láng giềng router xử lý. (Tuy nhiên, nếu nó hiểu thì sẽ không bao giờ gửi thuộc tính đó cho láng giềng router trừ khi được chỉ định làm thêm điều gì đó).

Tổng quan hoạt động của BGP

BGP là một giao thức hướng kết nối. Khi thiết lập một quan hệ neighbor, một phiên làm việc TCP sẽ được thiết lập và duy trì. BGP sẽ gửi ra các thông điệp keepalive để kiểm tra đường truyền và duy trì phiên làm việc TCP này. Các thông điệp keepalive này chỉ là những header có giá trị 19-bytes. Sau đó các router sẽ gửi các cập nhật định kỳ chỉ khi có thay đổi xảy ra. Sau khi đã điều chỉnh bảng BGP, quá trình BGP sẽ truyền đến tất cả các láng giềng các thay đổi.

Có 4 kiểu thông điệp được dùng trong BGP:

Thông điệp Open: được dùng để thiết lập kết nối với các router BGP khác.

Thông điệp keepalive: được gửi định kỳ giữa các BGP peers để duy trì kết nốI và để kiểm tra đường đi. Các thông điệp keepalive này được gửi theo cơ chế không tin cậy. Nếu khoảng thời gian định kỳ được gán về bằng 0, sẽ không có thông điệp keepalive nào được gửi.

Thông điệp cập nhật: chứa các đường đi về các địa chỉ đích và các thuộc tính của đường đi. Các cập nhật bao gồm các route không còn tồn tại. Thông tin chứa trong các cập nhật bao gồm các thuộc tính về đường dẫn, bao gồm thuộc tính origin, AS_PATH, neighbor.

Thông điệp Notification: được dùng để thông báo cho các router khác về những nguyên nhân gây ra kết nối bị ngắt.

CIDR và Route Aggregation

BGP cần phải truyền một số thông tin giữa các AS nhưng có lẽ không phải tất cả các thông tin là cần thiết. Nếu hệ thống mạng được thiết kế để hỗ trợ quá trình summarization, tổng số tài nguyên mạng sẽ được giảm đi bởi vì có rất ít bộ nhớ, băng thông và CPU được dùng để gửi bảng định tuyến. Thật ra, bằng cách tóm tắt các lớp địa chỉ IANA, mạng Internet sẽ trở thành một một môi trường nhanh hơn và tin cậy hơn. Cách dùng CIDR là một trong những giải pháp được dùng nhiều trong những năm gần đây. Các địa chỉ sẽ được hợp nhất lại thành một số địa chỉ dạng summary. Thay vì một địa chỉ có một giá trị netmask để nhận ra phần địa chỉ network, nó sẽ có một giá trị prefix mask. Giá trị này đơn giản là một con số chỉ ra số bit đã dành cho phần network. Quá trình summarization sẽ giảm thiểu số prefix. Nếu một mạng được cấp tám địa chỉ lớp C, nó có thể được quảng bá như một network.

BGP sẽ truyền các prefix và các prefix mask. Một router có thể truyền route đã được tóm tắt, các route riêng lẽ chưa được summarize hoặc truyền cả hai.


Cơ chế hoạt động của IBGP

IBGP không thay đổi thuộc tính AS-PATH của một tuyến do đó để chống loop, sử dụng qui luật split-horizon: một BGP peer sẽ không gởi các tuyến được học từ IBGP đến một BGP peer khác. Như vậy, để có thể forward dữ liệu cho các AS khác, các router của transit AS phải thực hiện:
- Giải pháp thứ nhất: phân phối lại các tuyến BGP vào IGP để thỏa mãn qui luật đồng bộ, nhưng phương pháp này không nên sử dụng trong các mạng core của ISP do số tuyến trên Internet rất lớn, các IGP được thiết kế không phải để có thể quản lý số tuyến quá lớn như vây, ngoài ra, nếu dùng phương pháp này thì khi có sự thay đổi về 1 tuyến trên Internet sẽ làm các IGP phải thực hiện giải thuật tìm đường -> chiếm nhiều CPU và bộ nhớ gây mất ổn định.

- Giải pháp thứ hai: các BGP peer được full-mesh để đảm bảo các router đều có đủ thông tin định tuyến để forward packet. Khi này có thể tắt chức năng đồng bộ của IBGP. Nhưng full-mesh dẫn đến việc khó quản lý, tốn băng thông để cập nhật định tuyến, tốn CPU,mem. Có 2 cách để giải quyết vần đề này. Sử dụng Route Reflector: thay đổi qui luật split-horizon của IBGP. Các RR có thể gởi các tuyến IBGP đến các BGP peer khác. Để chống lặp vòng, các RR thêm vào các thuộc tính: cluster-id và originator. Sử dụng Confederation: thay đổi cách xử lý AS-PATH của IBGP: Chia một AS thành nhiều member-AS. BGP giữa các BGP peer thuộc các member-AS khác nhau sẽ là EBGP (tức là sẽ thêm member-AS vào AS-PATH để chống loop) nhưng các thuộc tính khác như Local Preference, MED, Next-hop sẽ không thay đổi. Ưu điểm của giải pháp này là các member-AS có thể được quản lý độc lập, tăng khả năng chính sách định tuyến routing. Các member-AS có thể sử dụng các IGP khác nhau. Nhưng quản lý một Confederation thì có thể sẽ rất phức tạp do đó nó chỉ thích hợp cho các ISP cực lớn (các ISP kết nối trực tiếp vào các điểm trung chuyển quốc tế như NAP,...) hoặc các công ty đa quốc gia cần có sự linh động và độc lập giữa các thành phần của hệ thống. Để lựa chọn tuyến cho các Incoming traffic, có thể sử dụng các cách sau. Sử dụng thuộc tính MED: cách này ít sử dụng do MED là một thuộc tính yếu và non-transitive. Sử dụng community: phương pháp này đòi hỏi phải được upstream ISP hỗ trợ, chỉ ảnh hưởng đến ISP trực tiếp, trong nhiều trường hợp không làm việc tốt. Sử dụng AS-Prepend: phương pháp này được sử dụng thông dụng hơn do có thể làm việc tốt trong tất cả các mô hình. Nhưng một điều cần phải nhớ, quyết định tuyến cho Incoming traffic rất khó thực hiện chính xác do các AS khác có thể thay đổi các attribute.

Để set metric, bạn có thể dùng lệnh default-metric

Router(config-router)#default-metric number

hoặc có thể dùng route-map:

router bgp 100
neighbor 1.1.1.1 route-map freddy out
!
ip as-path access-list 1 permit ^690_
ip as-path access-list 2 permit .*
!
route-map freddy permit 10
match as-path 1
set metric 127
!
route-map freddy permit 20
match as-path 2

trong ví dụ trên, các route ở as 690 sẽ được set metric là 127.

Tóm tắt giải thuật tìm đường đi tốt nhất của BGP.

BGP sẽ gán đường đi hợp lệ đầu tiên như là đường đi tốt nhất hiện có. Sau đó BGP sẽ so sánh đường đi tốt nhất này vớI đường đi kế tiếp trong danh sách cho đến khi nào hoàn tất tất cả các đường trong danh sách các đường đi hợp lệ. DướI đây là danh sách các luật được dùng để xác định đường đi tốt nhất.

* Ưu tiên đường đi có trọng số WEIGHT cao nhất. WEIGHT là một thông số do Cisco đưa ra. Thông số này chỉ có ảnh hưởng trong phạm vi nội bộ của router được cấu hình dùng thông số này.

* Ưu tiên đường đi có LOCAL_PREF cao nhất. Những đường đi không có thuộc tính LOCAL_PREF sẽ có giá trị mặc định là 100.

* Ưu tiên những đường đi có nguồn gốc từ lệnh network hoặc lệnh aggregate hoặc thông qua quá trình redistribution từ một IGP. Các đường đi có nguồn gốc từ lệnh network hoặc lệnh redistribution được ưu tiên hơn những đường đi có nguồn gốc từ lệnh aggregate.

* Ưu tiên những đường đi có thuộc tính AS_PATH ngắn nhất. Bước này sẽ bị bỏ qua nếu biến bgp bestpath as-path được cấu hình. Một tập hợp AS_SET sẽ được đếm từ 1, bất chấp có bao nhiêu AS bên trong tập hợp. Các biến AS_CONFED_SEQUENCE và AS_CONFED_SET sẽ không bao gồm trong AS_PATH.

* Ưu tiên các đường đi có nguồn gốc thấp nhất. IGP thì thấp hơp EGP và EGP thì thấp hơn INCOMPLETE.

* Ưu tiến những đường đi có giá trị MED nhỏ nhất. Sự so sánh này chỉ được thực hiện nếu AS đầu tiên là giống nhau cho cả hai đường đi. Bất cứ một AS con nào của confederation sẽ bị bỏ qua. Nói cách khác, MED được so sánh chỉ nếu giá trị AS đầu tiên trong AS_SEQUENCE là giống nhau. Nếu lệnh bgp always-compare-med được cấu hình, MED được so sánh cho tất cả các đường đi có thể. Nếu dùng chọn lựa này, tất cả các router trong AS phảI được cấu hình vớI chọn lựa bgp always-compare-med, nếu không routing loop sẽ xảy ra. Nếu thông số bgp bestpath med-confed được cấu hình, MED sẽ được so sánh trên tất cả các đường đi mà chỉ chứa biến AS_CONFED_SEQUENCE ( là những đường đi xuất phát từ local confederation). Những đường đi được nhận từ một router láng giềng có giá trị MED là 4,294,967,295 sẽ có giá trị MED thay đổI đến 4,294,967,294 trước khi được chèn vào bảng BGP. Những đường đi được nhận mà không có MED được cấu hình sẽ được gán giá trị MED bằng 0.

* Ưu tiên những đường đi eBGP so vớI iBGP. Nếu đường đi tốt nhất được chọn lựa, qua bước 9.

* Ưu tiên những đường đi có IGP metric thấp nhất đến BGP next-hop.

* Kiểm tra xem có nhiều đường đi dự phòng cần phải cài đặt vào bảng routing hay không. Nếu cả hai đường đi là từ bên ngoài, ưu tiên đường đi được nhận trước (đường đi cũ nhất). Bước này sẽ bị bỏ qua nếu

-Lệnh bgp best path compare-routerid được dùng

-RouterID là giống nhau cho nhiều đường đi vì các routes được nhận từ cùng 1 router.

-Hiện tại không có một đường đi tốt nhất.

* Ưu tiên những đường đi đến từ BGP router có routerID nhỏ nhất. Giá trị routerID là địa chỉ IP cao nhất trên router. Giá trị này cũng có thể được gán bằng lệnh bgp router-id. Nếu một đường đi chứa 1 route-reflector, thuộc tính Originator ID của Route-Reflector sẽ thay thế cho routerID.

* Nếu RouterID là giống nhau cho nhiều đường đi, ưu tiên đường đi có số cluster là ít nhất. Điều này chỉ đúng trong môi trường BGP route-reflector. Nó cho phép những thành viên trong Route-Reflector thiết lập quan hệ peer vớI các thành viên trong các RR khác.

* Ưu tiên những đườ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.
    Blogger Comment
    Facebook Comment