Bài viết chuyên đề
MPLS VPN: OSPF SHAM LINK
24/11/2017 02:00:18
Trong các bài viết trước, chúng ta đã cùng nhau khảo sát cách thức thiết lập MPLS – VPN với nhiều kỹ thuật định tuyến PE – CE thông dụng. Trong bài viết này, chúng ta cùng nhau điểm qua một vài nét về một kỹ thuật được sử dụng khi chạy OSPF giữa PE và CE là kỹ thuật OSPF Sham link.
Một đặc điểm của việc chạy định tuyến PE – CE bằng giao thức OSPF là core MPLS được triển khai thành một super backbone, mọi site của khách hàng khi đấu nối về super backbone đều bị biến thành các area riêng biệt với nhau dẫn đến mọi route mà các site khách hàng học được từ nhau thông qua đường VPN sẽ đều biến thành route liên vùng O IA cho dù hai site của khách hàng chạy cùng một area OSPF. Điều này sẽ ảnh hưởng đến giải pháp chạy dự phòng đường truyền giữa hai site khách hàng khi hai site này có thêm một đường backdoor đấu nối với nhau.
Ta cùng phân tích ý này thông qua sơ đồ hình 1:
Trên hình 1 là sơ đồ đấu nối giữa hai chi nhánh của một công ty. Công ty này thuê đường truyền MPLS – VPN với dung lượng 10 Mbps làm đường đấu nối chính và thuê thêm một đường leased – line 2 Mbps để làm đường dự phòng. Toàn bộ mạng của công ty này chạy định tuyến OSPF Area 0, giao thức định tuyến PE – CE chạy giữa công ty với ISP cũng là giao thức OSPF và các kết nối đến ISP cũng được cho tham gia Area 0.
Như đã khảo sát trong bài viết trước, ta thấy rằng hai site sẽ thấy các subnet của nhau qua đường MPLS thành route liên vùng O IA vì MPLS Core hoạt động như một super backbone, do đó, CE1 sẽ thấy subnet 192.168.2.0/24 của CE2 qua core MPLS như một route O IA và CE2 cũng sẽ thấy subnet 192.168.1.0/24 của CE1 qua core MPLS như một route O IA.
Ta cũng thấy rằng đường leased line dự phòng nối giữa hai site cũng được cho tham gia OSPF Area 0 cùng với tất cả các link khác của mạng dẫn đến CE1 và CE2 sẽ học các subnet của nhau thông qua đường dự phòng này là các route nội vùng (kí hiệu là O).
Luật chọn đường của OSPF sẽ ưu tiên các route O hơn các route O IA nên thay vì chọn đường đi đến các subnet của nhau thông qua đường VPN, các site của mạng doanh nghiệp sẽ chọn đường đi đến nhau thông qua đường leased line. Lúc này, trái với mong muốn của thiết kế mạng, đường leased line 2 Mbps trở thành đường chính, đường VPN 10 Mbps lại trờ thành đường dự phòng!
Để giải quyết vấn đề này, chúng ta cần phải sử dụng kỹ thuật OSPF Sham Link. Ý tưởng của kỹ thuật này là giữa hai router PE1 và PE2 của ISP sẽ thực hiện cấu hình một đường link ảo xuyên qua MPLS Core và cho đường này tham gia vào OSPF cùng Area với mạng doanh nghiệp (trong ví dụ này là tham gia Area 0 giống như mọi link khác). Đường link ảo này được gọi là OSPF Sham Link. Khi đó, các route được học qua MPLS VPN cũng sẽ là các route nội vùng giống như các route được học qua đường dự phòng. Tiếp đó, chúng ta có thể thực hiện các kỹ thuật hiệu chỉnh cost trên các cổng thích hợp để dữ liệu qua lại giữa hai site sẽ chọn đường chính là đường VPN còn đường dự phòng là đường leased line (hình 2).
Ta lưu ý rằng OSPF Sham Link chỉ là một đường link ảo phục vụ cho việc trao đổi các gói tin hello cũng như các LSA phục vụ cho việc tính toán định tuyến với OSPF. Dữ liệu thực sự không chạy qua Sham link mà vẫn chạy qua đường MPLS VPN. Để nắm được kỹ thuật này, chúng ta cùng nhau khảo sát một bài lab ví dụ.
Sơ đồ:
Yêu cầu:
- Tạo MPLS core.
- Thực hiện các MPLS – VPN cho khách hàng: chạy giao thức định tuyến OSPF giữa PE và CE.
- Cấu hình tính năng OSPF sham – link, đảm bảo các site đi đến nhau theo đường chính là VPN, đường kết nối trực tiếp giữa hai site chỉ đóng vai trò dự phòng.
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 sau này nếu được dùng làm địa chỉ đại diện trong mối quan hệ BGP 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 ta đặt địa chỉ cho với prefix – length là /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, chạy OSPF giữa PE và CE:
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 VRF này vào các cổng tương ứng và tiến hành đặt địa chỉ IP:
R2(config)#interface f0/0
R2(config-if)#ip vrf forwarding A
R2(config-if)#ip address 192.168.12.2 255.255.255.0
R4(config)#interface f0/1
R4(config-if)#ip vrf forwarding A
R4(config-if)#ip address 192.168.45.4 255.255.255.0
Bước 3: Kiểm tra rằng kết nối đến các CE đã thông.
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/46/88 ms
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 = 1/3/4 ms
Bước 4: Thực hiện chạy OSPF trên các site của khách hàng. Ta chỉ cho các kết nối đến PE của mỗi site và các interface loopback tham gia OSPF, chưa cho kết nối trực tiếp giữa hai site tham gia OSPF.
R1(config)#router ospf 1
R1(config-router)#network 192.168.12.0 0.0.0.255 area 0
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R5(config)#router ospf 1
R5(config-router)#network 192.168.45.0 0.0.0.255 area 0
R5(config-router)#network 5.5.5.5 0.0.0.0 area 0
Bước 5: Trên các router PE (R2 và R4) thực hiện chạy OSPF trên các kết nối PE – CE:
R2(config)#router ospf 15 vrf A
R2(config-router)#network 192.168.12.0 0.0.0.255 area 0
R4(config)#router ospf 15 vrf A
R4(config-router)#network 192.168.45.0 0.0.0.255 area 0
Bước 6: Kiểm tra rằng các PE đã nhận được các route OSPF từ các CE của mình.
R2#sh ip route vrf A ospf
Routing Table: A
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/11] via 192.168.12.1, 00:04:25, FastEthernet0/0
R4#sh ip route vrf A ospf
Routing Table: A
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/11] via 192.168.45.5, 00:02:43, FastEthernet0/1
Bước 7: Trên các router PE thực hiện redistribute các route OSPF vào tiến trình MP – BGP.
R2(config)#router bgp 234
R2(config-router)#address-family ipv4 vrf A
R2(config-router-af)#redistribute ospf 15
R4(config)#router bgp 234
R4(config-router)#address-family ipv4 vrf A
R4(config-router-af)#redistribute ospf 15
Bước 8: Thực hiện redistribute các route MP – BGP vào OSPF trên các router PE.
R2(config)#router ospf 15 vrf A
R2(config-router)#redistribute bgp 234 subnets
R4(config)#router ospf 15 vrf A
R4(config-router)#redistribute bgp 234 subnets
Bước 9: Kiểm tra rằng các router PE đã nhận được các route từ đầu kia.
R2#show ip bgp vpnv4 vrf A
BGP table version is 9, 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 11 32768 ?
*>i5.5.5.5/32 4.4.4.4 11 100 0 ?
*> 192.168.12.0 0.0.0.0 0 32768 ?
*>i192.168.45.0 4.4.4.4 0 100 0 ?
R4#show ip bgp vpnv4 vrf A
BGP table version is 9, 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 11 100 0 ?
*> 5.5.5.5/32 192.168.45.5 11 32768 ?
*>i192.168.12.0 2.2.2.2 0 100 0 ?
*> 192.168.45.0 0.0.0.0 0 32768 ?
Bước 10: Kiểm tra các router CE rằng chúng cũng đã nhận được các route từ site còn lại.
R1#show ip route ospf
O IA 192.168.45.0/24 [110/11] via 192.168.12.2, 00:03:12, FastEthernet0/1
5.0.0.0/32 is subnetted, 1 subnets
O IA 5.5.5.5 [110/21] via 192.168.12.2, 00:03:12, FastEthernet0/1
R5#show ip route ospf
O IA 192.168.12.0/24 [110/11] via 192.168.45.4, 00:04:27, FastEthernet0/0
1.0.0.0/32 is subnetted, 1 subnets
O IA 1.1.1.1 [110/21] via 192.168.45.4, 00:04:27, FastEthernet0/0
Cost của các route OSPF sẽ được sao chép vào thuộc tính MED của MP – BGP khi ta thực hiện redistribute các route này vào BGP. Khi redistribute các route từ BGP ra lại OSPF ở đầu xa, các giá trị MED này lại được sao chép trở lại thành giá trị cost đầu tiên của các route OSPF và sẽ được cộng dồn tiếp khi lan truyền trong vùng OSPF. Như đã trình bày ở trên, các route học qua VPN sẽ là các route O IA.
Bước 11: Kiểm tra rằng các loopback của hai đầu đã thông nhau.
R1#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 = 140/245/376 ms
R5#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 = 148/197/272 ms
Ta đã thực hiện xong một MPLS – VPN nối giữa hai site sử dụng giao thức OSPF chạy giữa PE và CE.
Bước 12: Cho kết nối dự phòng giữa R1 và R5 tham gia OSPF.
R1(config)#router ospf 1
R1(config-router)#network 192.168.15.0 0.0.0.255 area 0
R5(config)#router ospf 1
R5(config-router)#network 192.168.15.0 0.0.0.255 area 0
Bước 13: Kiểm tra lại bảng định tuyến trên R1 và R5, ta thấy, các router CE này đã chọn đường đi đến các mạng của nhau thông qua kết nối dự phòng chứ không chọn đường VPN đã khai báo:
R1#show ip route ospf
O 192.168.45.0/24 [110/20] via 192.168.15.5, 00:02:12, FastEthernet0/0
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/11] via 192.168.15.5, 00:02:12, FastEthernet0/0
R5#show ip route ospf
O 192.168.12.0/24 [110/20] via 192.168.15.1, 00:02:44, FastEthernet0/1
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/11] via 192.168.15.1, 00:02:44, FastEthernet0/1
Ta thấy mỗi router CE đều chọn đường đi đến các mạng của đầu kia thông qua kết nối dự phòng chứ không chọn đường VPN. Đó là do quy tắc chọn đường của OSPF: ưu tiên chọn route theo thứ tự intra route -> interarea route -> external route.
Để giải quyết điều này, chúng ta cấu hình tính năng OSPF sham – link trên các router PE: tạo một kết nối intra ảo xuyên qua VPN.
Các lưu ý khi tạo OSPF sham – link:
- Tạo các địa chỉ đại diện /32 cho hai đầu sham – link.
- Các địa chỉ này phải thuộc về VRF của khách hàng đang xét.
- Các địa chỉ này không được tham gia vào tiến trình OSPF tương ứng.
- Chúng phải được quảng bá qua đầu kia bởi BGP.
Các bước tiến hành xây dựng OSPF shamlink được trình bày tiếp tục ở dưới đây.
Bước 14: Tạo các địa chỉ đại diện /32 cho hai đầu sham – link và cho các địa chỉ này tham gia vrf A.
R2(config)#int lo 1
R2(config-if)#ip vrf forwarding A
R2(config-if)#ip add 22.22.22.22 255.255.255.255
R4(config)#int lo 1
R2(config-if)#ip vrf forwarding A
R4(config-if)#ip add 44.44.44.44 255.255.255.255
Bước 15: Quảng bá các địa chỉ này đi bằng BGP.
R2(config)#router bgp 234
R2(config-router)#address-family ipv4 vrf A
R2(config-router-af)#network 22.22.22.22 mask 255.255.255.255
R4(config)#router bgp 234
R4(config-router)#address-family ipv4 vrf A
R4(config-router-af)#network 44.44.44.44 mask 255.255.255.255
Bước 16: Tạo Sham – link.
R2(config)#router ospf 15 vrf A
R2(config-router)#area 0 sham-link 22.22.22.22 44.44.44.44
R4(config)#router ospf 15 vrf A
R4(config-router)#area 0 sham-link 44.44.44.44 22.22.22.22
Bước 17: Kiểm tra đường sham – link mới tạo.
R2#show ip ospf sham-links
Sham Link OSPF_SL0 to address 44.44.44.44 is up
Area 0 source address 22.22.22.22
Run as demand circuit (giá trị cost mặc định của cổng sham link là 1)
DoNotAge LSA allowed. Cost of using 1 State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40,
Hello due in 00:00:00
Adjacency State FULL (Hello suppressed)
Index 1/1, retransmission queue length 0, number of retransmission 1
First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
Last retransmission scan length is 1, maximum is 1
Last retransmission scan time is 0 msec, maximum is 0 msec
R4#show ip ospf sham-links
Sham Link OSPF_SL0 to address 22.22.22.22 is up
Area 0 source address 44.44.44.44
Run as demand circuit (giá trị cost mặc định của cổng sham link là 1)
DoNotAge LSA allowed. Cost of using 1 State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40,
Hello due in 00:00:01
Adjacency State FULL (Hello suppressed)
Index 2/2, retransmission queue length 0, number of retransmission 1
First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
Last retransmission scan length is 1, maximum is 1
Last retransmission scan time is 0 msec, maximum is 0 msec
Sau khi có sham – link, sơ đồ đấu nối trở thành:
Từ sơ đồ trên, ta thấy: để R1 đi đến R5 sử dụng đường sham – link, ta phải chỉnh cho cost của đường theo hướng có sham – link nhỏ hơn cost của đường dự phòng (cost của cổng sham – link là 1 => tổng cost để đi theo đường sham – link vẫn lớn hơn tổng cost đi theo đường dự phòng => CE sẽ vẫn chọn đường dự phòng để đi).
Bước 18: Hiệu chỉnh cost.
Bảng định tuyến của các router CE trước khi chỉnh cost:
R1#show ip route ospf
O 192.168.45.0/24 [110/20] via 192.168.15.5, 00:00:34, FastEthernet0/0
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/11] via 192.168.15.5, 00:00:34, FastEthernet0/0
22.0.0.0/32 is subnetted, 1 subnets
O E2 22.22.22.22 [110/1] via 192.168.12.2, 00:00:34, FastEthernet0/1
44.0.0.0/32 is subnetted, 1 subnets
O E2 44.44.44.44 [110/1] via 192.168.12.2, 00:00:34, FastEthernet0/1
R5#sh ip route ospf
O 192.168.12.0/24 [110/20] via 192.168.15.1, 00:11:06, FastEthernet0/1
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/11] via 192.168.15.1, 00:11:06, FastEthernet0/1
22.0.0.0/32 is subnetted, 1 subnets
O E2 22.22.22.22 [110/1] via 192.168.45.4, 00:11:06, FastEthernet0/0
44.0.0.0/32 is subnetted, 1 subnets
O E2 44.44.44.44 [110/1] via 192.168.45.4, 00:11:06, FastEthernet0/0
Thực hiện chỉnh cost trên các cổng dự phòng của các router CE:
R1(config)#int f0/0
R1(config-if)#ip ospf cost 100
R5(config)#int f0/1
R5(config-if)#ip ospf cost 100
Bảng định tuyến của các router CE sau khi chỉnh cost:
R1#show ip route ospf
O 192.168.45.0/24 [110/21] via 192.168.12.2, 00:01:04, FastEthernet0/1
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/22] via 192.168.12.2, 00:01:04, FastEthernet0/1
22.0.0.0/32 is subnetted, 1 subnets
O E2 22.22.22.22 [110/1] via 192.168.12.2, 00:01:04, FastEthernet0/1
44.0.0.0/32 is subnetted, 1 subnets
O E2 44.44.44.44 [110/1] via 192.168.12.2, 00:01:04, FastEthernet0/1
R5#show ip route ospf
O 192.168.12.0/24 [110/21] via 192.168.45.4, 00:01:21, FastEthernet0/0
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/22] via 192.168.45.4, 00:01:21, FastEthernet0/0
22.0.0.0/32 is subnetted, 1 subnets
O E2 22.22.22.22 [110/1] via 192.168.45.4, 00:01:21, FastEthernet0/0
44.0.0.0/32 is subnetted, 1 subnets
O E2 44.44.44.44 [110/1] via 192.168.45.4, 00:01:21, FastEthernet0/0
Ta thấy các router CE đã chọn đường đi đến nhau thông qua MPLS – VPN.
Bài viết trên đây đã giới thiệu những nét chính về kỹ thuật OSPF Sham Link, một kỹ thuật cho phép các router phía khách hàng thực hiện dự phòng đường truyền song song với đường MPLS VPN bằng cách đấu nối thêm một đường backdoor giữa chúng khi khách hàng chạy định tuyến OSPF với ISP. Trong các bài viết sắp tới, chúng ta sẽ cùng nhau tiếp tục khảo sát những vấn đề khác của công nghệ MPLS VPN.
TRUNG TÂM WAREN