Trong bài viết tuần này, chúng ta sẽ cùng nhau trao đổi về kỹ thuật Policy Based Routing (PBR). PBR là một kỹ thuật đặc biệt cho phép router bẻ đường đi của một gói tin mà không cần tham chiếu đến bảng định tuyến, cung cấp cho người quản trị một công cụ rất mạnh trong hoạt động path – control các gói tin trên mạng.
Như thường lệ, để tìm hiểu về vấn đề đang trao đổi, chúng ta cùng khảo sát một bài lab ví dụ.
Sơ đồ
Hình 1 – Sơ đồ bài lab ví dụ.
Mô tả
- Sơ đồ gồm 5 router đấu nối với nhau như hình vẽ. Quy hoạch IP sử dụng trên các router cũng đã được chỉ ra trên hình.
- Trên sơ đồ này, chúng ta sẽ thực hiện cấu hình policy – based routing để hiệu chỉnh đường đi khác với đường đi được chỉ ra bởi giao thức định tuyến cho một số loại lưu lượng nào đó. Giao thức định tuyến được sử dụng trên sơ đồ lab này là OSPF, tất cả các link trên các router đều được cho tham gia Area 0.
- Bạn đọc có thể sử dụng router thật hoặc giả lập trên GNS – 3 để thực hiện bài lab này.
Thực hiện
Bước 1: Cấu hình cơ bản cho sơ đồ lab
- Thực hiện đặt địa chỉ IP trên các cổng của các router theo quy hoạch IP được chỉ ra trên hình 1.
- Chạy định tuyến OSPF đảm bảo mọi địa chỉ thấy nhau. Câu hình để các loopback được quảng bá đi đúng subnet của chúng.
Cấu hình
Trên R1:
R1(config)#interface f0/0
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.12.1 255.255.255.0
R1(config-if)#exit
R1(config)#interface f0/1
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.15.1 255.255.255.0
R1(config-if)#exit
R1(config)#interface s0/0/0
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.13.1 255.255.255.0
R1(config-if)#exit
R1(config)#interface loopback 0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#ip ospf network point-to-point
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#network 192.168.1.1 0.0.0.0 area 0
R1(config-router)#network 192.168.12.1 0.0.0.0 area 0
R1(config-router)#network 192.168.13.1 0.0.0.0 area 0
R1(config-router)#network 192.168.15.1 0.0.0.0 area 0
R1(config-router)#exit
Trên R2:
R2(config)#interface f0/0
R2(config-if)#no shutdown
R2(config-if)#ip address 192.168.12.2 255.255.255.0
R2(config-if)#exit
R2(config)#interface f0/1
R2(config-if)#no shutdown
R2(config-if)#ip address 192.168.24.2 255.255.255.0
R2(config-if)#exit
R2(config)#interface loopback 0
R2(config-if)#ip address 192.168.2.1 255.255.255.0
R2(config-if)#ip ospf network point-to-point
R2(config-if)#exit
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.12.2 0.0.0.0 area 0
R2(config-router)#network 192.168.2.2 0.0.0.0 area 0
R2(config-router)#network 192.168.24.2 0.0.0.0 area 0
R2(config-router)#exit
Trên R3:
R3(config)#interface f0/1
R3(config-if)#no shutdown
R3(config-if)#ip address 192.168.34.3 255.255.255.0
R3(config-if)#exit
R3(config)#interface s0/0/0
R3(config-if)#no shutdown
R3(config-if)#ip address 192.168.13.3 255.255.255.0
R3(config-if)#exit
R3(config)#interface loopback 0
R3(config-if)#ip address 192.168.3.1 255.255.255.0
R3(config-if)#ip ospf network point-to-point
R3(config-if)#exit
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.13.3 0.0.0.0 area 0
R3(config-router)#network 192.168.13.3 0.0.0.0 area 0
R3(config-router)#network 192.168.34.3 0.0.0.0 area 0
R3(config-router)#exit
Trên R4:
R4(config)#interface f0/0
R4(config-if)#no shutdown
R4(config-if)#ip address 192.168.24.4 255.255.255.0
R4(config-if)#exit
R4(config)#interface f0/1
R4(config-if)#no shutdown
R4(config-if)#ip address 192.168.34.4 255.255.255.0
R4(config-if)#exit
R4(config)#interface loopback 0
R4(config-if)#ip address 192.168.4.1 255.255.255.0
R4(config-if)#ip ospf network point-to-point
R4(config-if)#exit
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.24.4 0.0.0.0 area 0
R4(config-router)#network 192.168.34.4 0.0.0.0 area 0
R4(config-router)#exit
Trên R5:
R5(config)#interface f0/0
R5(config-if)#no shutdown
R5(config-if)#ip address 192.168.15.5 255.255.255.0
R5(config-if)#exit
R5(config)#interface loopback 0
R5(config-if)#ip address 192.168.5.1 255.255.255.0
R5(config-if)#ip ospf network point-to-point
R5(config-if)#exit
R5(config)#interface loopback 1
R5(config-if)#ip address 192.168.55.1 255.255.255.0
R5(config-if)#ip ospf network point-to-point
R5(config-if)#exit
R5(config)#router ospf 1
R5(config-router)#network 192.168.5.1 0.0.0.0 area 0
R5(config-router)#network 192.168.55.1 0.0.0.0 area 0
R5(config-router)#network 192.168.15.5 0.0.0.0 area 0
R5(config-router)#exit
Kiểm tra
Ta kiểm tra kết quả cấu hình vừa thực hiện:
R1#show ip route ospf
O 192.168.24.0/24 [110/2] via 192.168.12.2, 00:17:35, FastEthernet0/0 O 192.168.55.0/24 [110/2] via 192.168.15.5, 00:12:39, FastEthernet0/1 O 192.168.4.0/24 [110/3] via 192.168.12.2, 00:13:59, FastEthernet0/0 O 192.168.5.0/24 [110/2] via 192.168.15.5, 00:12:39, FastEthernet0/1 O 192.168.34.0/24 [110/3] via 192.168.12.2, 00:13:59, FastEthernet0/0 O 192.168.2.0/24 [110/2] via 192.168.12.2, 00:17:45, FastEthernet0/0 O 192.168.3.0/24 [110/4] via 192.168.12.2, 00:13:59, FastEthernet0/0
R2#show ip route ospf
O 192.168.13.0/24 [110/65] via 192.168.12.1, 00:17:08, FastEthernet0/0 O 192.168.15.0/24 [110/2] via 192.168.12.1, 00:17:51, FastEthernet0/0 O 192.168.55.0/24 [110/3] via 192.168.12.1, 00:12:47, FastEthernet0/0 O 192.168.4.0/24 [110/2] via 192.168.24.4, 00:14:08, FastEthernet0/1 O 192.168.5.0/24 [110/3] via 192.168.12.1, 00:12:47, FastEthernet0/0 O 192.168.34.0/24 [110/2] via 192.168.24.4, 00:14:08, FastEthernet0/1 O 192.168.1.0/24 [110/2] via 192.168.12.1, 00:17:51, FastEthernet0/0 O 192.168.3.0/24 [110/3] via 192.168.24.4, 00:14:08, FastEthernet0/1
R3#show ip route ospf
O 192.168.12.0/24 [110/3] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.15.0/24 [110/4] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.24.0/24 [110/2] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.55.0/24 [110/5] via 192.168.34.4, 00:12:50, FastEthernet0/1 O 192.168.4.0/24 [110/2] via 192.168.34.4, 00:14:11, FastEthernet0/1
O 192.168.5.0/24 [110/5] via 192.168.34.4, 00:12:50, FastEthernet0/1 O 192.168.1.0/24 [110/4] via 192.168.34.4, 00:14:11, FastEthernet0/1 O 192.168.2.0/24 [110/3] via 192.168.34.4, 00:14:11, FastEthernet0/1
R4#show ip route ospf
O 192.168.12.0/24 [110/2] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.13.0/24 [110/65] via 192.168.34.3, 00:14:07, FastEthernet0/1 O 192.168.15.0/24 [110/3] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.55.0/24 [110/4] via 192.168.24.2, 00:12:54, FastEthernet0/0 O 192.168.5.0/24 [110/4] via 192.168.24.2, 00:12:54, FastEthernet0/0
O 192.168.1.0/24 [110/3] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.2.0/24 [110/2] via 192.168.24.2, 00:14:07, FastEthernet0/0 O 192.168.3.0/24 [110/2] via 192.168.34.3, 00:14:07, FastEthernet0/1
R5#show ip route ospf
O 192.168.12.0/24 [110/2] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.13.0/24 [110/65] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.24.0/24 [110/3] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.4.0/24 [110/4] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.34.0/24 [110/4] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.1.0/24 [110/2] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.2.0/24 [110/3] via 192.168.15.1, 00:12:59, FastEthernet0/0 O 192.168.3.0/24 [110/5] via 192.168.15.1, 00:12:59, FastEthernet0/0
Kết quả show cho thấy tất cả các subnet trên sơ đồ đều đã hiển thị trong bảng định tuyến của các router.
Bước 2: Cấu hình Policy Based Routing
- Thực hiện cấu hình PBR trên R1 đảm bảo mọi gói tin đến từ subnet 192.168.5.0/24 của R5 khi đi đến R1 trên cổng F0/1 sẽ được chuyển đi tiếp trên cổng S0/0/0 của R1.
- Mọi gói tin khác khi đi đến R1 trên cổng F0/1 sẽ được chuyển tiếp theo kết quả định tuyến đã thực hiện.
Cấu hình
Với yêu cầu đặt ra, ta cần phải kiểm tra các gói tin đi vào cổng F0/1 của R1 và chuyển mọi gói xuất phát từ mạng 192.168.5.0/24 đi ra khỏi R1 theo cổng S0/0/0.
Ta thấy rằng nếu chỉ dựa vào hoạt động định tuyến thông thường ta sẽ không thể thực hiện được yêu cầu này vì các kỹ thuật định tuyến căn cứ vào đích đến của gói tin để chỉ ra đường đi thích hợp, trong khi yêu cầu đặt ra là căn cứ vào subnet xuất phát của gói tin để chọn đường đi thích hợp.
Để đáp ứng yêu cầu đặt ra, ta sử dụng kỹ thuật policy – based routing tham chiếu đến một route – map trên cổng F0/1 để kiểm soát đường đi của gói tin.
Trên R1:
R1(config)#access-list 5 permit 192.168.5.0 0.0.0.255
R1(config)#route-map PBR permit 10
R1(config-route-map)#match ip address 5
R1(config-route-map)#set ip next-hop 192.168.13.3
R1(config-route-map)#exit
R1(config)#interface f0/1
R1(config-if)#ip policy route-map PBR
R1(config-if)#exit
Kiểm tra
Để kiểm tra, ta xét các gói tin đi từ mạng 192.168.5.0/24 đến mạng 192.168.4.0/24. Ta thấy rằng nếu căn cứ theo bảng định tuyến trên R1, các gói này sẽ phải được chuyển đi tiếp ra khỏi cổng F0/0 của R1:
R1#show ip route 192.168.4.0
Routing entry for 192.168.4.0/24
Known via "ospf 1", distance 110, metric 3, type intra area
Last update from 192.168.12.2 on FastEthernet0/0, 00:34:09 ago
Routing Descriptor Blocks:
* 192.168.12.2, from 192.168.4.1, 00:34:09 ago, via FastEthernet0/0 Route metric is 3, traffic share count is 1
Sau khi áp dụng PBR trên R1, những gói tin xuất phát từ mạng 192.168.5.0/24 đi đến 192.168.4.0/24 đã đi theo lộ trình khác với đường đi được chỉ ra bởi giao thức định tuyến:
R5#traceroute 192.168.4.1 source 192.168.5.1
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 192.168.15.1 36 msec 72 msec 24 msec
2 192.168.13.3 100 msec 88 msec 120 msec
3 192.168.34.4 140 msec * 116 msec
Ta có thể kiểm tra hoạt động của PBR bằng cách sử dụng lệnh “debug ip policy” trên R1:
R1#debug ip policy
Policy routing debugging is on
Ta thực hiện ping kiểm tra từ loopback 0 của R5 đến loopback 0 của R4:
R5#ping 192.168.4.1 source 192.168.5.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.4.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 = 84/96/108 ms
Kết quả debug trên R1:
Kết quả debug cho thấy hoạt động chuyển gói theo PBR đã diễn ra khi gói tin xuất phát từ mạng 192.168.5.0/24 và các gói tin được chuyển tiếp theo next – hop 192.168.13.3 (cổng ra S0/0/0).
Ta tiếp tục thử với lưu lượng khác mà không xuất phát từ mạng 192.168.5.0/24:
R5#ping 192.168.4.1 source 192.168.55.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.4.1, timeout is 2 seconds: Packet sent with a source address of 192.168.55.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 96/110/124 ms
Kết quả debug trên R1:
Ta thấy các gói tin không được chuyển đi theo PBR mà được chuyển tiếp bình thường theo kết quả định tuyến.
Kết quả traceroute với source 192.168.55.1 từ R5 chỉ rõ điều này:
R5#traceroute 192.168.4.1 source 192.168.55.1
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 192.168.15.1 92 msec 60 msec 64 msec
2 192.168.12.2 56 msec 76 msec 60 msec
3 192.168.24.4 116 msec * 96 msec
Chúng ta đã sử dụng policy – based routing để thực hiện chuyển hướng đường đi của gói tin theo một kết quả khác với kết quả của hoạt động định tuyến; hơn nữa, việc chuyển hướng này lại căn cứ vào địa chỉ source IP của gói tin chứ không căn cứ vào đích đến của gói tin như hoạt động định tuyến thông thường.
PBR là một công cụ rất mạnh của Cisco IOS cho phép ta thực hiện path – control một cách rất linh hoạt. Chúng ta sẽ cùng trở lại đề tài này 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!