Bài viết chuyên đề

MPLS VPN: BGP

27/11/2017 01:41:36

Bài số 5 – Chuyên đề MPLS VPN

Trong các bài viết trước, chúng ta đã cùng khảo sát ứng dụng MPLS – VPN của công nghệ chuyển mạch nhãn MPLS với các giao thức định tuyến PE – CE là IGP (Interior Gateway Protocol). Trong bài viết này, chúng ta sẽ tiếp tục khảo sát MPLS – VPN với giao thức PE – CE được sử dụng là BGP.

Như thường lệ, chúng ta sẽ cùng xem xét các vấn đề thông qua một ví dụ lab cấu hình. Bài lab cấu hình lần này cũng vẫn là xây dựng một core MPLS, tiếp theo là triển khai VPN cho khách hàng với giao thức định tuyến được sử dụng là BGP.

Sơ đồ:

Hình 1 – Sơ đồ bài lab ví dụ.

Mô tả:

Mạng của khách hàng A đang chạy BGP trên các router, hai site khác nhau được kết nối với nhau bởi một đường MPLS – VPN và khách hàng có mong muốn chạy BGP qua đường VPN. Nhiệm vụ của ISP là thiết lập VPN cho khách hàng qua core MPLS, thực hiện chạy định tuyến BGP với khách hàng đảm bảo các site của khách hàng trao đổi được thông tin BGP với nhau và truyền dữ liệu theo các route BGP thông qua đường VPN này.

Trên sơ đồ lab ở hình 1, R1A và R5A đóng vai trò là các router CE phía đầu khách hàng; các router R2, R3, R4 đảm nhận nhiệm vụ Core MPLS; R2 và R4 là các router PE.

Việc thiết lập core hoàn toàn giống như các ví dụ cấu hình ở các bài viết trước. Bài viết này trình bày lại bước này để tiện cho việc theo dõi.

Yêu cầu:

  • Xây dựng MPLS core.
  • Thực hiện MPLS – VPN cho khách hàng A. Khách hàng A chạy BGP với nhà cung cấp dịch vụ.
  • Đảm bảo rằng các site của khách hàng A nhận được thông tin định tuyến của nhau thông qua BGP và đi đến được các subnet của nhau theo các route BGP.

Thực hiện:

Tạo MPLS – core:

Bước 1: Chạy một giao thức định tuyến IGP trong Core, đảm bảo mọi địa chỉ trong Core thấy nhau. Trong bài lab này ta chọn IGP là OSPF.

R2(config)#router ospf  1

R2(config-router)#network 2.2.2.0 0.0.0.255 area 0

R2(config-router)#network 192.168.23.0 0.0.0.255 area 0

R3(config)#router ospf  1

R3(config-router)# network 192.168.23.0 0.0.0.255 area 0

R3(config-router)# network 192.168.34.0 0.0.0.255 area 0

R4(config)#router ospf  1

R4(config-router)#network 4.4.4.0 0.0.0.255 area 0

R4(config-router)#network 192.168.34.0 0.0.0.255 area 0

Bước 2: Bật MPLS trên tất cả các router PE và P.

R2(config)#interface FastEthernet0/1

R2(config-if)#mpls ip

R3(config)#interface FastEthernet0/0

R3(config-if)#mpls ip

R3(config-if)#interface FastEthernet0/1

R3(config-if)#mpls ip

R4(config)#interface FastEthernet0/1

R4(config-if)#mpls ip

Show kiểm tra việc thiết lập quan hệ LDP:

R3#show mpls ldp neighbor

    Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 3.3.3.3:0

        TCP connection: 2.2.2.2.646 - 3.3.3.3.48539

        State: Oper; Msgs sent/rcvd: 26/26; Downstream

        Up time: 00:16:44

        LDP discovery sources:

          FastEthernet0/0, Src IP addr: 192.168.23.2

        Addresses bound to peer LDP Ident:

          192.168.23.2    2.2.2.2        

    Peer LDP Ident: 4.4.4.4:0; Local LDP Ident 3.3.3.3:0

        TCP connection: 4.4.4.4.48088 - 3.3.3.3.646

        State: Oper; Msgs sent/rcvd: 26/27; Downstream

        Up time: 00:16:43

        LDP discovery sources:

          FastEthernet0/1, Src IP addr: 192.168.34.4

        Addresses bound to peer LDP Ident:

          192.168.34.4    4.4.4.4      

Chú ý: Các interface loopback nếu được dùng làm địa chỉ đại diện trong mối quan hệ BGP cần phải được quảng bá đi đúng subnet – mask của nó. Điều này nhằm đảm bảo hệ thống chuyển mạch nhãn hoạt động đúng đắn. Muốn vậy, ngay từ đầu đặt địa chỉ cho các loopback với prefix – length /32 hoặc chọn kiểu network – type là point – to – point cho các loopback này.

R2(config)#interface Loopback0

R2(config-if)#ip ospf network point-to-point

R3(config)#interface Loopback0

R3(config-if)#ip ospf network point-to-point

R4(config)#interface Loopback0

R4(config-if)#ip ospf network point-to-point

Bước 3: Bật BGP trên các PE router.

R2(config)#router bgp 234

R2(config-router)#neighbor 4.4.4.4 remote-as 234

R2(config-router)#neighbor 4.4.4.4 update-source Loopback0

R4(config)#router bgp 234

R4(config-router)#neighbor 2.2.2.2 remote-as 234

R4(config-router)#neighbor 2.2.2.2 update-source Loopback0

Bước 4: Bật tính năng VPNv4 cho BGP.

R2(config)#router bgp 234

R2(config-router)#address-family vpnv4

R2(config-router-af)#neighbor 4.4.4.4 activate

R4(config)#router bgp 234

R4(config-router)#address-family vpnv4

R4(config-router-af)#neighbor 2.2.2.2 activate

Tạo MPLS – VPN cho khách hàng A:

Bước 1: Tạo VRF cho khách hàng A trên các router PE (ở đây là các router R2 và R4).

R2(config)#ip vrf A

R2(config-vrf)#rd 15:15

R2(config-vrf)#route-target export 1:1

R2(config-vrf)#route-target import 5:5

R4(config)#ip vrf A

R4(config-vrf)#rd 15:15

R4(config-vrf)#route-target export 5:5

R4(config-vrf)#route-target import 1:1

Bước 2: Gán các cổng tương ứng vào VRF này và tiến hành đặt địa chỉ IP.

R2(config)#interface s2/1

R2(config-if)#ip vrf forwarding A

R2(config-if)#ip address 192.168.12.2 255.255.255.0

R4(config)#interface s2/1

R4(config-if)#ip vrf forwarding A

R4(config-if)#ip address 192.168.45.4 255.255.255.0

Bước 3: Thực hiện đặt địa chỉ IP như đã chỉ ra trên sơ đồ cho khách hàng A. Ping kiểm tra giữa PE và CE.

Trên R2:

R2#ping vrf A 192.168.12.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/69/156 ms

R2#

Trên R4:

R4#ping vrf A 192.168.45.5

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.45.5, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/46/68 ms

R4#

Bước 4: Chạy BGP với khách hàng A.

Ta giả thiết rằng hai site của khách hàng A sử dụng hai số ASN khác nhau: site 1A sử dụng số AS là 1 và site 5A sử dụng số AS là 5. Các router PE R2 và R4 khi đó sẽ thiết lập BGP neighbor với các router BGP thuộc các AS 1 và 5.

R2(config)#router bgp 234

R2(config-router)#address-family ipv4 vrf A

R2(config-router-af)#neighbor 192.168.12.1 remote-as 1

R2(config-router-af)#neighbor 192.168.12.1 activate

R4(config)#router bgp 234

R4(config-router)#address-family ipv4 vrf A

R4(config-router-af)#neighbor 192.168.45.5 remote-as 5

R4(config-router-af)#neighbor 192.168.45.5 activate

Bước 5: Trên các router của khách hàng A, thực hiện chạy BGP với nhà cung cấp dịch vụ. Trên các router này, chúng ta cũng thực hiện quảng bá các loopback của các site R1A và site R5A vào BGP.

R1A(config)#router bgp 1

R1A(config-router)#neighbor 192.168.12.2 remote-as 234

R1A(config-router)#network 1.1.1.1 mask 255.255.255.255

R5A(config)#router bgp 5

R5A(config-router)#neighbor 192.168.45.4 remote-as 234

R5A(config-router)#network 5.5.5.5 mask 255.255.255.255

Bước 6: Kiểm tra rằng các quan hệ láng giềng PE – CE đã được thiết lập.

R2#show ip bgp vpnv4 vrf A summary

BGP router identifier 2.2.2.2, local AS number 234

BGP table version is 20, main routing table version 20

2 network entries using 274 bytes of memory

2 path entries using 136 bytes of memory

4/2 BGP path/bestpath attribute entries using 496 bytes of memory

2 BGP AS-PATH entries using 48 bytes of memory

2 BGP extended community entries using 48 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 1002 total bytes of memory

BGP activity 7/5 prefixes, 8/6 paths, scan interval 15 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down State/PfxRcd

192.168.12.1    4     1      55      52       20    0    0 00:24:24        1

 

R4#show ip bgp vpnv4 vrf A summary

BGP router identifier 4.4.4.4, local AS number 234

BGP table version is 20, main routing table version 20

2 network entries using 274 bytes of memory

2 path entries using 136 bytes of memory

4/2 BGP path/bestpath attribute entries using 496 bytes of memory

2 BGP AS-PATH entries using 48 bytes of memory

2 BGP extended community entries using 48 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 1002 total bytes of memory

BGP activity 7/5 prefixes, 7/5 paths, scan interval 15 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down State/PfxRcd

192.168.45.5    4     5      52      58       20    0    0 00:47:51        1

Bước 7: Kiểm tra rằng các router PE rằng đã nhận được các route BGP từ nhau và từ khách hàng.

R2#show ip bgp vpnv4 vrf A

BGP table version is 20, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

Route Distinguisher: 15:15 (default for vrf A)

*> 1.1.1.1/32       192.168.12.1             0             0 1 i

*>i5.5.5.5/32       4.4.4.4                  0    100      0 5 i

R4#show ip bgp vpnv4 vrf A

BGP table version is 20, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

Route Distinguisher: 15:15 (default for vrf A)

*>i1.1.1.1/32       2.2.2.2                  0    100      0 1 i

*> 5.5.5.5/32       192.168.45.5             0             0 5 i

Bước 8: Xem bảng BGP trên hai router CE ở hai site của khách hàng.

R1A#show ip bgp

BGP table version is 11, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 1.1.1.1/32       0.0.0.0                  0         32768 i

*> 5.5.5.5/32       192.168.12.2                           0 234 5 i

R5A#show ip bgp

BGP table version is 13, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 1.1.1.1/32       192.168.45.4                           0 234 1 i

*> 5.5.5.5/32       0.0.0.0                  0         32768 i

Bước 9: Xem bảng định tuyến trên hai đầu khách hàng:

R1A#sh ip route bgp

     5.0.0.0/32 is subnetted, 1 subnets

B       5.5.5.5 [20/0] via 192.168.12.2, 00:34:10

R5A#sh ip route bgp

     1.0.0.0/32 is subnetted, 1 subnets

B       1.1.1.1 [20/0] via 192.168.45.4, 00:32:26

Bước 10: Kiểm tra rằng các địa chỉ 1.1.1.1 và 5.5.5.5 đã thấy được nhau:

Trên R1A:

R1A#ping 5.5.5.5 source 1.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 168/224/296 ms

R1A#

Trên R5A:

R5A#ping 1.1.1.1 source 5.5.5.5

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 5.5.5.5

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 156/201/268 ms

R5A#

Chúng ta đã khảo sát trường hợp hai site của khách hàng sử dụng hai số AS khác nhau (1 và 5). Tiếp theo chúng ta sẽ cùng xét trường hợp hai site khách hàng sử dụng cùng một số AS.

Bước 11: Khai báo lại tiến trình BGP trên R5A, chuyển AS được sử dụng thành 1 (giống như site kia).

R5A(config)#no router bgp 5

R5A(config)#router bgp 1

R5A(config-router)#neighbor 192.168.45.4 remote-as 234

R5A(config-router)#network 5.5.5.5 mask 255.255.255.255

Và khai báo lại neighbor trên router PE R4:

R4(config)#router bgp 234

R4(config-router)#address-family ipv4 vrf A

R4(config-router-af)#no neighbor 192.168.45.5 remote-as 5

R4(config-router-af)#neighbor 192.168.45.5 remote-as 1

Ta thấy, các router PE đã học được các route từ các láng giềng BGP, AS của khách hàng đều đã được đổi thành AS 1:

R2#sh ip bgp vpnv4 vrf A

BGP table version is 8, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

Route Distinguisher: 15:15 (default for vrf A)

*> 1.1.1.1/32       192.168.12.1             0             0 1 i

*>i5.5.5.5/32       4.4.4.4                  0    100      0 1 i

R4#sh ip bgp vpnv4 vrf A

BGP table version is 8, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

Route Distinguisher: 15:15 (default for vrf A)

*>i1.1.1.1/32       2.2.2.2                  0    100      0 1 i

*> 5.5.5.5/32       192.168.45.5             0             0 1 i

Khi sử dụng cùng một số AS cho các site của khách hàng, chúng ta gặp phải vấn đề là các site khách hàng sẽ không học được route của nhau do tác dụng của luật chống loop BGP. Thật vậy, xét tình huống router R5A quảng bá route 5.5.5.5/32 của nó cho BGP peer R4, route này khi tới tay R4 sẽ có thuộc tính AS – PATH là “1”. Router R4 quảng bá tiếp route này cho R2, và R2 tiếp tục quảng bá qua R1A. Khi R1A nhận được route này, thuộc tính AS – PATH sẽ là “234, 1”. Vì R1A cũng thuộc về AS 1 nên nó sẽ không tiếp nhận mọi route BGP mà thuộc tính AS – PATH có chứa số AS bằng 1 theo luật chống loop của BGP. Kết quả là R1A không thấy được các subnet của R5A. Điều ngược lại cũng xảy ra khi các route của R1A được quảng bá đến R5A. Cuối cùng, hai site của khách hàng sẽ không thấy được các subnet của nhau (hình 2).

Hình 2 – Các site không tiếp nhận route của nhau do luật chống loop của BGP.

Để giải quyết vấn đề này, chúng ta phải sử dụng một tính năng trên các router PE của ISP nhằm giúp khách hàng có thể nhận được route của mình: tính năng AS – override. Khi ta cấu hình AS – override cho một neighbor, router BGP sẽ thực hiện thay thế giá trị AS Number trùng với AS Number của neighbor bằng giá trị AS Number của mình khi quảng bá route cho neighbor này.

Ví dụ: Nếu trên R2, ta cấu hình láng giềng 192.168.12.1 (R1A) với tính năng AS – override thì khi R2 quảng bá route cho R1A mà thấy trong AS Path có giá trị AS bằng 1 – là AS của láng giềng R1A, R2 sẽ thay thế giá trị này bằng AS của nó, tức là AS 234. Lúc này route quảng bá cho láng giềng sẽ có AS Path là “234, 234” thay vì là “234, 1” và R1A sẽ tiếp nhận được route này vì route không còn vi phạm luật chống loop của BGP nữa.

Bước 12: Thực hiện cấu hình AS – override.

R2(config)#router bgp 234

R2(config-router)#address-family ipv4 vrf A

R2(config-router-af)#neighbor 192.168.12.1 as-override

R4(config)#router bgp 234

R4(config-router)#address-family ipv4 vrf A

R4(config-router-af)#neighbor 192.168.45.5 as-override

Ta thấy, hai đầu R1A và R5A đã nhận được route từ phía kia:

R1A#sh ip bgp

BGP table version is 5, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path

*> 1.1.1.1/32       0.0.0.0                  0         32768 i

*> 5.5.5.5/32       192.168.12.2                           0 234 234 i

R5A#sh ip bgp

BGP table version is 3, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 1.1.1.1/32       192.168.45.4                           0 234 234 i

*> 5.5.5.5/32       0.0.0.0                  0         32768 i

Thực hiện kiểm tra bằng ping qua lại giữa hai đầu như đã thực hiện ở trên, ta thấy các subnet này đã có thể đi đến nhau, đường VPN nối giữa hai site của khách hàng đã thông suốt.

Chúng ta đã cùng nhau khảo sát MPLS – VPN với giao thức PE – CE là BGP. Trong các bài viết tới, chúng ta sẽ cùng nhau khảo sát tiếp các ứng dụng của công nghệ chuyển mạch MPLS.

 

TRUNG TÂM WAREN