BGP - Chủ đề khó nhất của BSCI
1. Sự cần thiết của BGP
Trong một AS ta sử dụng giao thức định tuyến nội IGP (thông thường là OSPF) nhưng khi ra ngoài một AS thì phải sử dụng một giao thức khác.Tại sao như vậy? 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 policy. Trong khi ra khỏi phạm vi một AS thì policy lại 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 policy. 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. BGP ra đời vì lí do đó!
2. Một số tính chất của BGP
- Đả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
- Thực thi các policy (Đây là vấn đề lớn sẽ nói sau)
- BGP sử dụng TCP port 179 để trao đổi thông tin liên lạc nên việc chuyển tải là đáng tin cậy.
- Thuật toán định tuyến của BGP là path vector routing. Distance vector quảng bá thông tin hiện có đến các neighbor, còn path vector chỉ ra chính xác danh sách toàn bộ đường dẫn đến đích. Ngoài ra 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ó nó 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
- BGP giúp tiết kiệm băng thông của mạng bằng cách gửi đi chỉ một lần thông tin về các tuyến đường nhưng thể hiện nhiều đích đến.
- BGP cho phép nơi nhận chứng thực thông điệp, kiểm chứng tên của nơi gửi.
Như đã nói, khi ra khỏi phạm vi một AS thì policy là vấn đề quan trọng. Ở đây ta xem xét kỹ hơn về vấn đề thực thi chính sách.
3. Thực thi chính sách:
Cơ bản có 3 cách tiếp cận để thực thi chính sách.
Cách tiếp cận đơn giản nhất là sử dụng băng thông. Giả sử, B muốn A không được sử dụng nhiều hơn 56Kbps băng thông của B, thì B có thể giới hạn kết nối giữa 2 mạng đến 56Kbps. Thậm chí B có thể ngắt kết nối với A bằng cách giới hạn băng thông xuống 0. Rõ ràng A phải chịu các chính sách ràng buộc của công ty B.
Một cách tiếp cận khác là thực thi chính sách trong tiến trình forwarding các gói. Khi mỗi gói đi qua công ty B thì sẽ chịu sự kiểm soát của router công ty B thông qua cơ chế là packet filter. Packet filter cho phép người quản trị định nghĩa chính xác loại gói nào router sẽ cho phép đi qua và gói nào không được phép đi qua. Nhưng những bộ lọc như vậy làm tiêu tốn rất nhiều tài nguyên của router, đòi hỏi tính “thông minh” hiểu được các thông điệp và các giao thức ứng dụng trên router.
Cách thứ ba để thực thi chính sách là sử dụng BGP. Giả sử B xem thông tin về con đường đến AS4 là thông tin mật và từ chối quảng bá nó cho A. Khi đó, với ý tưởng là nếu A không đảm bảo rằng sẽ đến được đích thông qua công ty đối thủ B thì nó sẽ không chuyển dữ liệu đi trên con đường đó. Cách tiếp cận này không yêu cầu một sự tính toán đặc biệt cho mỗi gói IP. Thay vào đó, router chỉ đơn giản thực thi việc forwarding bình thường. A sẽ tự tìm một con đường khác để đến AS4(qua AS3, AS2, AS1) và forwarding gói tin theo con đường đó.
4. Một số thuộc tính quan trọng của BGP
Để hiểu hơn về BGP, chúng ta sẽ tìm hiểu một số thuộc tính quan trọng của BGP để xác định con đường tối ưu nhất
1. AS_Path attribute: Đây là thuộc tính quan trọng nhất trong việc xác định đường đi tối ưu, mang 2 chức năng: Một là AS Path càng ngắn càng được router quan tâm 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 cty B). Hai là ngăn ngừa vòng lặp (đã đề cập ở trên).
Bởi vì Path-attributes 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 attributes này đến tất cả các láng giềng trong mọi thông điệp Update!!!
2. Origin-attribute: là một thuộc tính quan trọng, xác định nguồn gốc của các routing update.
a. Nếu là “i ” thì chỉ rằng routing update được biết thông qua một IGP (RIP, OSPF…).
b. Nếu giá trị “e” thì routing update được biết thông qua một EGP.
c. Nếu giá trị “?” (incomplete) thì chỉ rằng không biết nguồn gốc của routing update. (Điều này có thể xuất hiện nếu routing update được biết thông qua IGP rồi sau đó lại được thông báo qua EGP.)
3. Next-Hop attribute: Thuộc tính quan trọng cuối cùng. Khi BGP khai báo một mạng, router tự định rõ như là Next Hop. Tuy nhiên, nếu router đó gởi thông điệp Update cho một neighbor 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 (tất nhiên là chỉ đúng với nó). Do đó ta phải cấu hình cho nó biết được là chính router cùng AS với nó là Next Hop chứ không phải là router khác AS!!!
4. 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.
5. 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).
6. MULTI_EXIT_DISC attribute: (MED attribute) Đâ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.
7. 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 Update 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 neighbor router xử lý. (Tuy nhiên, nếu nó hiểu thì sẽ không bao giờ gửi thuộc tính đó cho neighbor router trừ khi được chỉ định làm thêm điều gì đó).
Còn một số thuộc tính khác, thứ tự ưu tiên các thuộc tính, các loại thông điệp BGP, trạng thái và cơ chế hoạt động của BGP và rất nhiều vấn đề khác liên quan… mời mọi người tiếp tục thảo luận!:D
Cheers,
1. Sự cần thiết của BGP
Trong một AS ta sử dụng giao thức định tuyến nội IGP (thông thường là OSPF) nhưng khi ra ngoài một AS thì phải sử dụng một giao thức khác.Tại sao như vậy? 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 policy. Trong khi ra khỏi phạm vi một AS thì policy lại 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 policy. 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. BGP ra đời vì lí do đó!
2. Một số tính chất của BGP
- Đả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
- Thực thi các policy (Đây là vấn đề lớn sẽ nói sau)
- BGP sử dụng TCP port 179 để trao đổi thông tin liên lạc nên việc chuyển tải là đáng tin cậy.
- Thuật toán định tuyến của BGP là path vector routing. Distance vector quảng bá thông tin hiện có đến các neighbor, còn path vector chỉ ra chính xác danh sách toàn bộ đường dẫn đến đích. Ngoài ra 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ó nó 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
- BGP giúp tiết kiệm băng thông của mạng bằng cách gửi đi chỉ một lần thông tin về các tuyến đường nhưng thể hiện nhiều đích đến.
- BGP cho phép nơi nhận chứng thực thông điệp, kiểm chứng tên của nơi gửi.
Như đã nói, khi ra khỏi phạm vi một AS thì policy là vấn đề quan trọng. Ở đây ta xem xét kỹ hơn về vấn đề thực thi chính sách.
3. Thực thi chính sách:
Cơ bản có 3 cách tiếp cận để thực thi chính sách.
Cách tiếp cận đơn giản nhất là sử dụng băng thông. Giả sử, B muốn A không được sử dụng nhiều hơn 56Kbps băng thông của B, thì B có thể giới hạn kết nối giữa 2 mạng đến 56Kbps. Thậm chí B có thể ngắt kết nối với A bằng cách giới hạn băng thông xuống 0. Rõ ràng A phải chịu các chính sách ràng buộc của công ty B.
Một cách tiếp cận khác là thực thi chính sách trong tiến trình forwarding các gói. Khi mỗi gói đi qua công ty B thì sẽ chịu sự kiểm soát của router công ty B thông qua cơ chế là packet filter. Packet filter cho phép người quản trị định nghĩa chính xác loại gói nào router sẽ cho phép đi qua và gói nào không được phép đi qua. Nhưng những bộ lọc như vậy làm tiêu tốn rất nhiều tài nguyên của router, đòi hỏi tính “thông minh” hiểu được các thông điệp và các giao thức ứng dụng trên router.
Cách thứ ba để thực thi chính sách là sử dụng BGP. Giả sử B xem thông tin về con đường đến AS4 là thông tin mật và từ chối quảng bá nó cho A. Khi đó, với ý tưởng là nếu A không đảm bảo rằng sẽ đến được đích thông qua công ty đối thủ B thì nó sẽ không chuyển dữ liệu đi trên con đường đó. Cách tiếp cận này không yêu cầu một sự tính toán đặc biệt cho mỗi gói IP. Thay vào đó, router chỉ đơn giản thực thi việc forwarding bình thường. A sẽ tự tìm một con đường khác để đến AS4(qua AS3, AS2, AS1) và forwarding gói tin theo con đường đó.
4. Một số thuộc tính quan trọng của BGP
Để hiểu hơn về BGP, chúng ta sẽ tìm hiểu một số thuộc tính quan trọng của BGP để xác định con đường tối ưu nhất
1. AS_Path attribute: Đây là thuộc tính quan trọng nhất trong việc xác định đường đi tối ưu, mang 2 chức năng: Một là AS Path càng ngắn càng được router quan tâm 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 cty B). Hai là ngăn ngừa vòng lặp (đã đề cập ở trên).
Bởi vì Path-attributes 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 attributes này đến tất cả các láng giềng trong mọi thông điệp Update!!!
2. Origin-attribute: là một thuộc tính quan trọng, xác định nguồn gốc của các routing update.
a. Nếu là “i ” thì chỉ rằng routing update được biết thông qua một IGP (RIP, OSPF…).
b. Nếu giá trị “e” thì routing update được biết thông qua một EGP.
c. Nếu giá trị “?” (incomplete) thì chỉ rằng không biết nguồn gốc của routing update. (Điều này có thể xuất hiện nếu routing update được biết thông qua IGP rồi sau đó lại được thông báo qua EGP.)
3. Next-Hop attribute: Thuộc tính quan trọng cuối cùng. Khi BGP khai báo một mạng, router tự định rõ như là Next Hop. Tuy nhiên, nếu router đó gởi thông điệp Update cho một neighbor 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 (tất nhiên là chỉ đúng với nó). Do đó ta phải cấu hình cho nó biết được là chính router cùng AS với nó là Next Hop chứ không phải là router khác AS!!!
4. 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.
5. 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).
6. MULTI_EXIT_DISC attribute: (MED attribute) Đâ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.
7. 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 Update 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 neighbor router xử lý. (Tuy nhiên, nếu nó hiểu thì sẽ không bao giờ gửi thuộc tính đó cho neighbor router trừ khi được chỉ định làm thêm điều gì đó).
Còn một số thuộc tính khác, thứ tự ưu tiên các thuộc tính, các loại thông điệp BGP, trạng thái và cơ chế hoạt động của BGP và rất nhiều vấn đề khác liên quan… mời mọi người tiếp tục thảo luận!:D
Cheers,
Comment