Sunday, September 29, 2024

[Cisco] Ứng dụng của MPLS BGP – Free Core

-

MPLS – Multi Protocol Label Switching – chuyển mạch nhãn đa giao thức, đúng như tên  gọi, là một kỹ thuật chuyển mạch (switching). Kỹ thuật chuyển mạch này có một tính chất  đặc biệt, làm nên ưu điểm tuyệt vời của nó, là tính chất đa giao thức (multi – protocol).  Một gói tin khi đi vào hạ tầng MPLS sẽ được dán nhãn tương ứng với một IP nào đó hoặc  một giá trị định danh nào đó; các thiết bị chuyển mạch tiếp theo trên đường đi của gói tin  không quan tâm đến nội dung của gói tin mà chỉ thực hiện các thao tác chuyển mạch dựa  vào nhãn đã dán trên gói tin ấy.  

Nhờ tính chất này, một mạng triển khai MPLS có thể thực hiện hợp nhất việc truyền tải  nhiều loại dữ liệu khác nhau vào một hạ tầng duy nhất, cung cấp được đến cho khách  hàng nhiều gói dịch vụ đa dạng và tối ưu hóa việc sử dụng tài nguyên mạng. Ngày nay,  MPLS được sử dụng rộng khắp trong mạng của các doanh nghiệp, đặc biệt là mạng của  các ISP. Chuỗi bài viết này sẽ giới thiệu một số ứng dụng tiêu biểu của MPLS gồm: 

  • BGP – Free Core
  • MPLS – VPN
  • AToM

Các ISP thường xuyên phải chạy định tuyến BGP với các ISP khác trên môi trường  Internet để đảm bảo vận chuyển dữ liệu của khách hàng theo những lộ trình tối ưu nhất.  Theo phương pháp cũ trong việc triển khai BGP, toàn bộ các Router trong mạng Core của  ISP đều phải chạy BGP. Các Router biên chạy eBGP với khách hàng và với các ISP  khác, các Router Core còn lại phải chạy iBGP với nhau và với các Router biên. Bản thân  giao thức BGP là một loại giao thức rất hao tốn tài nguyên, cộng thêm số lượng route trên  môi trường Internet cần lưu giữ là một số lượng khổng lồ nên các Router Core của các  ISP sẽ bị sử dụng ở công suất rất cao cho công việc định tuyến.  

MPLS ra đời cho phép thực hiện một giải pháp giúp giảm thiểu tối đa số lượng Router  chạy BGP. Các ISP sẽ triển khai một hạ tầng Core chạy MPLS, các Router Core chỉ làm  nhiệm vụ vận chuyển dữ liệu, không cần phải ghi nhớ thông tin định tuyến BGP cũng  như không cần phải chạy BGP, chỉ các Router biên tiếp tục phải chạy BGP với khách  hàng. Số lượng Router phải chạy BGP và ghi nhớ các route trên môi trường Internet giảm  xuống đáng kể và chỉ còn lại là các Router biên. Ta cùng nhau khảo sát một ví dụ lab để nắm được nguyên lý của giải pháp này.

Sơ đồ bài lab ví dụ:

Mô tả: 

Bài lab sử dụng 5 Router để mô phỏng kịch bản một ISP Core sử dụng MPLS để giảm  thiểu số Router phải chạy BGP. Các Router trên sơ đồ lab của hình 1 được chia thành 03  AS chạy BGP với nhau: 

  • R1 thuộc về AS 100 và đại diện cho AS 100 chạy BGP với AS 200, Subnet trên  Loopback 0 của R1 đại diện cho các subnet của AS 100 và sẽ được quảng bá qua  BGP vào AS 200 từ đó lan truyền tới AS 300.  
  • R2, R3 và R4 tạo thành AS 200. Trong AS 200, chúng ta sẽ thực hiện chạy  MPLS trên tất cả các Router, khi đó, R2 và R4 đóng vai trò là các Router PE  (Provider Edge) còn R3 đóng vai trò là Router P (Provider). Các Router PE R2  và R4 sẽ chạy eBGP với các AS khác và chạy iBGP với nhau. Router R3 là một  Core router và không chạy BGP. AS 200 chính là AS sử dụng giải pháp tạo BGP  – Free Core với MPLS: chỉ hai router biên R2 và R4 là chạy BGP, R3 là core  router, không chạy BGP. 
  • R5 thuộc về AS 300, chạy BGP với AS 200. R5 quảng bá subnet trên loopback 0  của mình vào BGP, subnet này đại diện cho các subnet thuộc AS 300. 

Kết quả mong muốn đạt được của bài lab này là hai loopback 0 của R1 và R5 phải đi đến  nhau được, dù R3 của AS 200 nằm trên đường di chuyển của các gói tin nhưng không hề chạy BGP và không hề chứa bất cứ thông tin gì về 2 loopback này trong bảng định tuyến  của nó. 

Thực hiện: 

Bước 1: Đặt IP cho các cổng trên các Router theo quy hoạch IP trên sơ đồ hình 1. 

Trên R1:

R1(config)#interface FastEthernet0/1 
R1(config-if)#no shutdown 
R1(config-if)#ip address 192.168.12.1 255.255.255.0 
R1(config-if)#interface Loopback0 
R1(config-if)#ip address 192.168.1.1 255.255.255.0

Trên R2:

R2(config)#interface FastEthernet0/0 
R2(config-if)#no shutdown 
R2(config-if)#ip address 192.168.12.2 255.255.255.0 
R2(config-if)#interface FastEthernet0/1 
R2(config-if)#no shutdown 
R2(config-if)#ip address 192.168.23.2 255.255.255.0 
R2(config-if)#interface Loopback0 
R2(config-if)#ip address 192.168.2.1 255.255.255.255

Trên R3:

R3(config)#interface FastEthernet0/0 
R3(config-if)#no shutdown 
R3(config-if)#ip address 192.168.23.3 255.255.255.0 
R3(config-if)#interface FastEthernet0/1 
R3(config-if)#no shutdown 
R3(config-if)#ip address 192.168.34.3 255.255.255.0 
R3(config-if)#interface Loopback0 
R3(config-if)#ip address 192.168.3.1 255.255.255.255

Trên R4:

R4(config)#interface FastEthernet0/0 
R4(config-if)#no shutdown 
R4(config-if)#ip address 192.168.34.4 255.255.255.0 
R4(config-if)#interface FastEthernet0/1 
R4(config-if)#no shutdown 
R4(config-if)#ip address 192.168.45.5 255.255.255.0 
R4(config-if)#interface Loopback0 
R4(config-if)#ip address 192.168.4.1 255.255.255.255

Trên R5:

R1(config)#interface FastEthernet0/0 
R1(config-if)#no shutdown 
R1(config-if)#ip address 192.168.45.5 255.255.255.0 
R1(config-if)#interface Loopback0 
R1(config-if)#ip address 192.168.5.1 255.255.255.0

Bước 2: Cấu hình thiết lập core MPLS trên AS 200. 

Đầu tiên, ta chạy một giao thức định tuyến trong (IGP) trên các Router thuộc AS 200.  Giao thức này đảm bảo mọi địa chỉ của AS 200 có thể đi đến nhau. Ta có thể chọn bất kỳ giao thức IGP nào, hoặc sử dụng định tuyến tĩnh. Trong bài lab này, IGP được chọn là  OSPF.

Trên R2:

R2(config)#router ospf 1 
R2(config-router)#network 192.168.2.1 0.0.0.0 area 0 
R2(config-router)#network 192.168.23.2 0.0.0.0 area 0

Trên R3:

R3(config)#router ospf 1 
R3(config-router)#network 192.168.3.1 0.0.0.0 area 0 
R3(config-router)#network 192.168.23.3 0.0.0.0 area 0 
R3(config-router)#network 192.168.34.3 0.0.0.0 area 0

Và trên R4:

R4(config)#router ospf 1 
R4(config-router)#network 192.168.4.1 0.0.0.0 area 0 
R4(config-router)#network 192.168.34.4 0.0.0.0 area 0

Kiểm tra bảng định tuyến của các Router R2, R3 và R4 để chắc chắn rằng mọi địa chỉ trong AS 200 đã đi được đến nhau sau khi chạy OSPF:

R2#sh ip route ospf 
 192.168.4.0/32 is subnetted, 1 subnets 
O 192.168.4.1 [110/21] via 192.168.23.3, 00:19:22, FastEthernet0/1
O 192.168.34.0/24 [110/20] via 192.168.23.3, 00:19:32, FastEthernet0/1  192.168.3.0/32 is subnetted, 1 subnets 
O 192.168.3.1 [110/11] via 192.168.23.3, 00:19:51, FastEthernet0/1 

R3#sh ip route ospf 
 192.168.4.0/32 is subnetted, 1 subnets 
O 192.168.4.1 [110/11] via 192.168.34.4, 00:19:51, FastEthernet0/1  192.168.2.0/32 is subnetted, 1 subnets 
O 192.168.2.1 [110/11] via 192.168.23.2, 00:20:10, FastEthernet0/0 

R4#sh ip route ospf 
O 192.168.23.0/24 [110/20] via 192.168.34.3, 00:20:12, FastEthernet0/0  192.168.2.0/32 is subnetted, 1 subnets 
O 192.168.2.1 [110/21] via 192.168.34.3, 00:20:12, FastEthernet0/0  192.168.3.0/32 is subnetted, 1 subnets 
O 192.168.3.1 [110/11] via 192.168.34.3, 00:20:12, FastEthernet0/0

Ta thực hiện bật MPLS trên các cổng router thuộc AS 200: 

Trên R2:

R2(config-if)#interface FastEthernet0/1 
R2(config-if)#mpls ip 

Trên R3:

R3(config)#interface FastEthernet0/0 
R3(config-if)#mpls ip 
R3(config-if)#interface FastEthernet0/1 
R3(config-if)#mpls ip

Trên R4:

R4(config-if)#interface FastEthernet0/0 
R4(config-if)#mpls ip 

Ta thực hiện kiểm tra để chắc chắn các mối quan hệ LDP trao đổi nhãn đã được thiết lập  giữa các Router R2, R3 và R4:

Từ các kết quả show trên các router R2, R3, R4 ở trên, ta thấy các router đã thiết lập được  quan hệ láng giềng LDP với nhau, và như vậy có thể trao đổi thông tin về nhãn cho nhau.

Ta thử kiểm tra bảng chuyển mạch nhãn trên các Router của AS 200:

Ta thấy các nhãn phục vụ cho quá trình chuyển mạch đã được trao đổi giữa các router  cho mọi subnet IP của AS 200 và xuất hiện đầy đủ trong các bảng chuyển mạch nhãn. Ta  đã hoàn tất việc xây dựng core MPLS của AS 200. 

Bước 3: Chạy BGP giữa các AS. 

Đầu tiên, ta thực hiện cấu hình BGP trên AS 200. Lưu ý rằng, ta chỉ chạy BGP trên các  router biên PE, không chạy BGP trên router core P.  

Cấu hình iBGP giữa R2 và R4: 

Trên R2:

R2(config)#router bgp 200 
R2(config-router)#neighbor 192.168.4.1 remote-as 200 
R2(config-router)#neighbor 192.168.4.1 update-source Loopback0
R2(config-router)#neighbor 192.168.4.1 next-hop-self

Trên R4:

R4(config)#router bgp 200 
R4(config-router)#neighbor 192.168.2.1 remote-as 200 
R4(config-router)#neighbor 192.168.2.1 update-source Loopback0
R4(config-router)#neighbor 192.168.2.1 next-hop-self

Theo cách cấu hình ở trên, ta sử dụng các địa chỉ loopback của các router R2 và R4 để thiết lập quan hệ láng giềng BGP. R2 và R4 là các router PE giao tiếp với các AS bên  ngoài nên ta cấu hình tính năng “next – hop – self” trên hai router này trỏ đến nhau để đảm bảo các route BGP mà R2 và R4 nhận của nhau là hợp lệ.

Bước tiếp theo, ta thực hiện cấu hình eBGP giữa AS 100 và AS 200, AS 200 và AS 300: Trên R1:

R1(config)#router bgp 100 
R1(config-router)#neighbor 192.168.12.2 remote-as 200 
R1(config-router)#network 192.168.1.0 mask 255.255.255.0 <-quảng bá  subnet của loopback 0 vào BGP

Trên R2:

R2(config)#router bgp 200 
R2(config-router)#neighbor 192.168.12.1 remote-as 100

Trên R4:

R4(config-router)#router bgp 200 
R4(config-router)#neighbor 192.168.45.5 remote-as 300

Trên R5:

R5(config)#router bgp 300 
R5(config-router)#neighbor 192.168.45.4 remote-as 200 
R5(config-router)#network 192.168.5.0 mask 255.255.255.0 <-quảng bá  subnet của loopback 0 vào BGP

Kiểm tra sự hội tụ của BGP: 

1) Kiểm tra các mối quan hệ láng giềng: 

Trên R2:

Trên R4:

Trên R1:

Và trên R5:

2) Kiểm tra các bảng BGP trên các router chạy BGP:
Trên R1:

Trên R5:

Trên R2 và R4:

Ta thấy rằng các subnet cần quảng bá qua BGP đều đã xuất hiện trong bảng BGP của các router chạy BGP.
3) Kiểm tra bảng định tuyến của các router BGP:

R1#show ip route bgp
  B 192.168.5.0/24 [20/0] via 192.168.12.2, 00:14:29

R2#show ip route bgp
  B 192.168.5.0/24 [200/0] via 192.168.4.1, 00:14:50
  B 192.168.1.0/24 [20/0] via 192.168.12.1, 00:16:11

R4#show ip route bgp
  B 192.168.5.0/24 [20/0] via 192.168.45.5, 00:15:19
  B 192.168.1.0/24 [200/0] via 192.168.2.1, 00:15:19

R5#show ip route bgp
  B 192.168.1.0/24 [20/0] via 192.168.45.4, 00:15:34

Các route BGP đã xuất hiện trong bảng định tuyến của các Router.
4) Hai mạng của AS 100 và AS 300 đã thấy nhau:

R1#ping 192.168.5.1 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.5.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 108/129/136 ms

R5#ping 192.168.1.1 source 192.168.5.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.5.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 116/147/176 ms

Như vậy thông qua định tuyến BGP giữa các AS, các subnet của hai AS 100 và AS 300  đã liên lạc được với nhau. Ta đã hoàn thành cấu hình bài lab ví dụ, tiếp theo chúng ta  cùng phân tích kết quả này. 

Phân tích kết quả: 

Từ kết quả thực hiện bài lab ví dụ ở trên, chúng ta có một vài điểm nhận xét như sau: 

1. Lưu lượng BGP giữa hai subnet của hai AS 100 và AS 300 đã di chuyển được tới  nhau thông qua transit AS 200. AS 200 không cấu hình BGP trên tất cả các router  mà chỉ cấu hình trên các router biên, các router khác bên trong AS 200 không  phải chạy BGP -> ta có một BGP – Free Core. Điều này thực hiện được nhờ sử dụng kỹ thuật chuyển mạch nhãn đa giao thức trên AS 200. Thật vậy, nếu AS 200  không sử dụng MPLS, ta sẽ gặp phải lỗi black hole tại R3 do thiếu thông tin định  tuyến BGP trên router này. Chúng ta cùng hiển thị các kết quả định tuyến để phân  tích ý này. 

Khi R1 muốn gửi gói đến loopback 0 của R5, R1 thực hiện tra cứu thông tin định  tuyến cho đích đến này:

R1#show ip route 192.168.5.1 
Routing entry for 192.168.5.0/24 
 Known via "bgp 100", distance 20, metric 0 
 Tag 200, type external 
 Last update from 192.168.12.2 00:39:30 ago 
 Routing Descriptor Blocks: 
 * 192.168.12.2, from 192.168.12.2, 00:39:30 ago 
 Route metric is 0, traffic share count is 1
 AS Hops 2 
 Route tag 200 

R1#show ip route 192.168.12.2 
Routing entry for 192.168.12.0/24 
 Known via "connected", distance 0, metric 0 (connected, via  interface) 
 Routing Descriptor Blocks: 
 * directly connected, via FastEthernet0/1 

Hoạt động tra cứu được thực hiện cho đến khi tìm được cổng ra cho gói tin, từ trên ta thấy để đi đến được 192.168.5.1 của R5, gói tin phải được đẩy ra cổng  F0/1 đến router kế tiếp có địa chỉ 192.168.12.2, tức là R2. 

R2 khi tiếp nhận gói tin đi đến 192.168.5.1 cũng phải tra cứu thông tin định tuyến  để quyết định xem sẽ phải đẩy gói tin này theo cổng nào:

R2#show ip route 192.168.5.1 
Routing entry for 192.168.5.0/24 
 Known via "bgp 200", distance 200, metric 0 
 Tag 300, type internal 
 Last update from 192.168.4.1 00:46:57 ago 
 Routing Descriptor Blocks: 
 * 192.168.4.1, from 192.168.4.1, 00:46:57 ago 
 Route metric is 0, traffic share count is 1 
 AS Hops 1 
 Route tag 300 
R2#show ip route 192.168.4.1 
Routing entry for 192.168.4.1/32 
 Known via "ospf 1", distance 110, metric 21, type intra area  Last update from 192.168.23.3 on FastEthernet0/1, 00:48:08 ago  Routing Descriptor Blocks: 
 * 192.168.23.3, from 192.168.4.1, 00:48:08 ago, via FastEthernet0/1  Route metric is 21, traffic share count is 1

Kết quả tra cứu chỉ ra rằng, R2 cần phải đẩy gói tin ra khỏi cổng F0/1 đến router  tiếp theo là 192.168.23.3. Lưu ý rằng việc tra cứu cần phải thực hiện liên tục cho  đến khi tìm được cổng ra. Ở kết quả show trên, ta thấy rằng next – hop đầu tiên  được chỉ ta là “192.168.4.1”, tuy nhiên vì BGP cho phép thiết lập quan hệ BGP  giữa hai router không cần kết nối trực tiếp nên next hop BGP 192.168.4.1 là một  địa chỉ ở xa, R2 cần phải tiếp tục tra cứu lần 2 để tìm đường đến next hop  192.168.4.1 này. Lần tra cứu thứ 2 cho thấy cổng ra là F0/1 và next hop thực sự là  192.168.23.3, tức là router R3. 

Khi gói tin đi đến R3, R3 cũng thực hiện tra cứu để tìm đường đến 192.168.5.1.  Tuy nhiên, vì R3 không chạy BGP với R2 và R4 nên R3 không có thông tin nào  về route này.

R3#show ip route 192.168.5.1 
% Network not in table

Đến đây, gói tin bị drop vì không có route tương ứng trong bảng định tuyến.

Ta thấy, mọi router trên lộ trình của gói tin đều có route để forward gói tin, riêng  router R3 thì không, ta gọi lỗi này là lỗi black hole, R3 là “hố đen” “hút” mất gói  tin khi gói tin di chuyển trên đường đi của nó. 

Để khắc phục lỗi này, chúng ta cần cho R3 tham gia định tuyến BGP hoặc phải  redistribute BGP vào OSPF để R3 nhận được thông tin định tuyến cần thiết. Cả hai cách đều gây tốn tài nguyên mạng, đặc biệt là cách sau (redistribute BGP vào  OSPF – cách này không còn được sử dụng trong các hệ thống mạng ngày nay). 

2. Ta trở lại trường hợp có triển khai MPLS trên AS 200 và cũng thực hiện phân tích  đường đi của gói tin giống như trên. Khi R1 gửi gói tin đến 192.168.5.1, nó cũng  thực hiện tra cứu thông tin và đẩy gói tin giống như đã trình bày. Tuy nhiên, cách  thức làm việc của các router sẽ khác đi kể từ R2, khi mà gói tin đi từ miền non – 

MPLS vào miền MPLS. Tương tự như lần trước, R2 tiếp nhận gói tin đi đến  192.168.5.1, tra cứu thông tin và tìm được next – hop là 192.168.4.1. Tuy nhiên,  vì lần này, R2 có bật chuyển mạch nhãn nên nó sẽ tra cứu bảng chuyển mạch để  tìm ra xem nhãn tương ứng với địa chỉ next – hop 192.168.4.1 là nhãn nào:

Kết quả hiển thị trên bảng chuyển mạch nhãn chỉ ra rằng, gói tin đi đến next – hop  192.168.4.1 sẽ được đẩy ra khỏi cổng F0/1 đến router kế tiếp 192.168.23.3 và  được dãn nhãn là 17 (Outgoing tag 17). Bắt đầu từ đây, gói tin sẽ được vận  chuyển qua các router dựa trên nhãn đã dán trên nó. 

R3 khi tiếp nhận gói tin này là một gói tin có dán nhãn, nó không cần quan tâm  đến các thông tin nào khác ngoài nhãn, R3 sẽ thực hiện chuyển gói thích hợp chỉ dựa trên nhãn này. Bảng chuyển mạch nhãn của R3: 

Bảng chuyển mạch nhãn của R3 chỉ ra rằng nếu R3 nhận được gói tin có nhãn  bằng 17, R3 sẽ gỡ nhãn rồi đẩy gói ra cổng F0/1 (Local tag = 17, Outgoing tag =  Pop tag). Gói đi ra khỏi cổng F0/1 sẽ đến tay R4, và như ta biết, R4 có route đi  đến 192.168.5.1 trong bảng định tuyến nên R4 sẽ sử dụng route này để đẩy gói tin  đến R5

R4#sh ip route 192.168.5.1
Routing entry for 192.168.5.0/24
   Known via "bgp 200", distance 20, metric 0
   Tag 300, type external
   Last update from 192.168.45.5 01:54:25 ago
   Routing Descriptor Blocks:
   * 192.168.45.5, from 192.168.45.5, 01:54:25 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 300

R4#sh ip route 192.168.45.5
Routing entry for 192.168.45.0/24
  Routing Descriptor Blocks:
  * directly connected, via FastEthernet0/1

Như vậy, khác với lần trước, lần này nhờ có chuyển mạch nhãn nên R3 có thể chuyển được gói tin đi qua nó mà không cần phải có route trong bảng định tuyến.

Kết luận: 

Từ bài lab ở trên ta thấy, khi triển khai MPLS cho một AS, chỉ cần các router biên (PE)  phải chạy định tuyến eBGP với các AS khác và chạy iBGP với nhau; các router bên trong  core (P) không cần phải chạy BGP.  

Kỹ thuật MPLS cho phép mỗi router trong MPLS core lưu tương ứng với mỗi địa chỉ đại  diện của một router biên một giá trị nhãn. Một gói tin khi đi vào miền MPLS sẽ được dán  nhãn tương ứng với địa chỉ đại diện của router biên mà tại đó nó đi ra khỏi miền MPLS.  Gói này khi đi trong miền MPLS sẽ được các router trung gian vận chuyển dựa hoàn toàn  vào nhãn mà nó mang mà không cần tham khảo gì thêm bất kỳ thông tin nào khác để đến  tay router biên đầu ra (do đó các router trung gian không cần thông tin route BGP). Router biên tại đầu ra này có chạy BGP nên sẽ tiếp tục chuyển gói đi ra khỏi miền MPLS  dựa vào thông tin định tuyến BGP mà nó học được. 

Giải pháp BGP – Free Core với MPLS làm giảm thiểu tối đa số lượng router phải chạy  BGP, từ đó giúp tiết kiệm tài nguyên và tối ưu hóa hiệu suất mạng. Do vậy, giải pháp này  ngày càng được ưa chuộng và được sử dụng rộng rãi trong hạ tầng mạng của các ISP  ngày nay. 

Bài viết trên đây đã giới thiệu đến các bạn ứng dụng BGP – Free Core của MPLS. Các  ứng dụng khác của MPLS là MPLS – VPN và AToM sẽ lần lượt được review trong các  bài viết tiếp theo. 

Cảm ơn các bạn!  

Hẹn gặp lại các bạn trong các bài viết tiếp theo!

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories