Thứ Hai, 11 tháng 7, 2011

Border Gateway Protocol - Giao thức BGP

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:




Nguồn: Internet

1 nhận xét: