Danh mục sản phẩm
Hướng Dẫn Cấu Hình Multi-WAN Theo Ứng Dụng Trên Cisco Router (NBAR2 + PBR + IP SLA)
Tóm tắt nhanh
Doanh nghiệp ngày nay thường có từ hai đường Internet trở lên: một đường Leased Line ổn định và một hoặc nhiều đường FTTH giá rẻ. Nếu chỉ định tuyến theo IP nguồn/đích, bạn rất khó tận dụng đúng thế mạnh của từng đường, vì các ứng dụng SaaS và Cloud dùng dải IP thay đổi liên tục.
Qua các dự án triển khai cho doanh nghiệp, VNExperts thấy đây là nhu cầu rất phổ biến, nhưng không phải nơi nào cũng cần đầu tư hệ thống SD-WAN đầy đủ. Bài viết này hướng dẫn giải pháp App-Aware Multi-WAN trên các dòng router Cisco chạy IOS XE mà không cần Catalyst SD-WAN Controller (vManage). Giải pháp kết hợp ba thành phần:
- NBAR2 nhận diện ứng dụng ở Tầng 7 (DPI).
- PBR (Policy-Based Routing) chuyển hướng traffic theo ứng dụng đã nhận diện.
- IP SLA + Track giám sát đường ưu tiên và tự động failover khi đứt cáp.
Kết quả: Zoom, Teams đi đường Leased Line độ trễ thấp. YouTube, Facebook, Netflix và phần traffic còn lại đi đường FTTH PPPoE chi phí thấp.
1. Sơ đồ LAB & thông số kỹ thuật
| Thành phần | Cổng | Địa chỉ / Vai trò |
|---|---|---|
| LAN | GigabitEthernet0/0/0 | 192.168.1.0/24, gateway 192.168.1.1 |
| WAN 1: Leased Line | GigabitEthernet0/0/1 | 101.10.1.2/30, gateway ISP1 101.10.1.1. Dành cho traffic ưu tiên |
| WAN 2: FTTH PPPoE | Gi0/0/2 → Dialer2 | PPPoE quay số, IP cấp động. Dành cho traffic băng thông lớn |
Nguyên lý hoạt động: gói tin từ LAN vào Gi0/0/0 được NBAR2 phân loại, đánh dấu DSCP theo nhóm ứng dụng, sau đó route-map PBR đọc DSCP để chọn đường ra.
Sơ đồ dưới đây mô phỏng liên tục ba trạng thái: bình thường, failover khi WAN 1 mất kết nối (Track 10 DOWN) và failback khi WAN 1 phục hồi, kèm thanh thời gian và trạng thái Track 10 bên trong router.
2. Quy trình cấu hình 6 bước
Bước 0: Đặt tên thiết bị & banner
hostname HQ-Router banner motd # =========================================================== Authorized access only. All activities are logged. =========================================================== #
Bước 1: IP SLA & Track Object (giám sát WAN 1)
Router ping liên tục hai IP public tin cậy là 1.1.1.1 (Cloudflare) và 8.8.8.8 (Google) qua WAN 1. Khi cả hai cùng mất phản hồi, track 10 chuyển DOWN và PBR tự bỏ next-hop WAN 1.
! 1) Route /32 ép gói probe đi qua WAN 1 (KHÔNG gắn track) ip route 1.1.1.1 255.255.255.255 GigabitEthernet0/0/1 101.10.1.1 ip route 8.8.8.8 255.255.255.255 GigabitEthernet0/0/1 101.10.1.1 ! 2) Route dự phòng: nếu Gi0/0/1 down, probe bị chặn thay vì đi vòng qua WAN 2 ip route 1.1.1.1 255.255.255.255 Null0 250 ip route 8.8.8.8 255.255.255.255 Null0 250 ! 3) Hai bộ đo IP SLA tới hai đích khác nhau ip sla 11 icmp-echo 1.1.1.1 source-interface GigabitEthernet0/0/1 frequency 5 ip sla schedule 11 life forever start-time now ip sla 12 icmp-echo 8.8.8.8 source-interface GigabitEthernet0/0/1 frequency 5 ip sla schedule 12 life forever start-time now ! 4) Track riêng từng đích, rồi gộp bằng OR vào track 10 track 11 ip sla 11 reachability track 12 ip sla 12 reachability track 10 list boolean or object 11 object 12 delay down 10 up 5
Vì sao dùng IP public thay vì ping gateway ISP? Gateway ISP nằm ngay đầu đường truyền nên vẫn trả lời ping ngay cả khi ISP mất đường ra Internet (đứt upstream, lỗi peering). Khi đó track vẫn UP và traffic ưu tiên vẫn bị ép vào một đường "sống nhưng không ra được Internet". Ping
1.1.1.1và8.8.8.8kiểm tra đường ra Internet thật, vì đây là các dịch vụ anycast, hạ tầng phân tán, độ sẵn sàng cao và phản hồi ICMP ổn định.Vì sao dùng hai đích kết hợp OR? Hai đích thuộc hai nhà cung cấp khác nhau. WAN 1 chỉ bị coi là lỗi khi cả hai cùng không phản hồi, nên tránh failover nhầm khi một dịch vụ bảo trì hoặc giới hạn ICMP.
Vì sao cần route /32? Gói IP SLA do chính router tạo ra nên không đi qua PBR (PBR chỉ áp dụng cho traffic vào từ cổng LAN) mà theo bảng định tuyến. Nếu không có route /32, probe sẽ theo default route và có thể đi ra Dialer2, khiến track báo UP sai dù WAN 1 đã đứt. Hai route /32 này không được gắn track: nếu gắn, khi track DOWN route biến mất, probe đi vòng qua WAN 2 và nhận phản hồi, track lại UP, gây flapping liên tục.
Vì sao có route Null0 (AD 250)? Khi cổng Gi0/0/1 down hẳn, route /32 chính biến mất theo. Route Null0 với AD cao sẽ thay thế và chặn probe, giúp track chuyển DOWN thay vì để probe đi vòng qua WAN 2. Đây là mẹo thực tế, hãy kiểm tra hành vi trên LAB bằng cách rút cáp Gi0/0/1.
Bước 2: Class-map NBAR2 (nhận diện ứng dụng Tầng 7)
class-map match-any CM_PRIORITY_APPS match protocol ms-teams match protocol ms-teams-audio match protocol ms-teams-video match protocol ms-teams-media match protocol ms-teams-app-sharing match protocol zoom-meeting match protocol webex-meeting match protocol webex-audio match protocol webex-video match protocol webex-media class-map match-any CM_BULK_APPS match protocol youtube match protocol facebook match protocol netflix
Lưu ý về tên protocol:
ms-teamschỉ là phần nhận diện chung của Microsoft Teams. Phần âm thanh, hình ảnh được NBAR2 phân loại riêng thànhms-teams-audio,ms-teams-video,ms-teams-media, nên cần khai báo đủ các protocol này. Webex cũng tương tự: audio, video được tách thànhwebex-audio,webex-video, phần media còn lại làwebex-media, còn lưu lượng kết nối nằm ởwebex-meeting. Tên protocol phụ thuộc phiên bản Protocol Pack, hãy kiểm tra trước bằngmatch protocol ?hoặcshow ip nbar protocol-id | include teams.
Bước 3: Policy-map đánh dấu DSCP
Route-map không đọc trực tiếp class-map NBAR2, nên ta để MQC làm nhiệm vụ phân loại và đánh dấu DSCP ngay tại cổng LAN. PBR sẽ dựa vào DSCP này để chọn đường.
policy-map PM_APP_MARKING class CM_PRIORITY_APPS set dscp af41 class CM_BULK_APPS set dscp af11 class class-default
Policy này ghi đè DSCP gốc của client. Nếu không muốn giữ dấu DSCP này khi ra Internet, bạn có thể reset về 0 bằng policy output trên cổng WAN.
Bước 4: ACL + Route-map PBR
ip access-list extended ACL_PRIORITY_DSCP permit ip any any dscp af41 ip access-list extended ACL_BULK_DSCP permit ip any any dscp af11 ! Stanza 10: ứng dụng ưu tiên -> WAN 1 (next-hop, có giám sát Track 10) route-map RM_APP_PBR permit 10 match ip address ACL_PRIORITY_DSCP set ip next-hop verify-availability 101.10.1.1 1 track 10 ! Stanza 20: ứng dụng băng thông lớn -> WAN 2 (PPPoE) route-map RM_APP_PBR permit 20 match ip address ACL_BULK_DSCP set interface Dialer2 ! Stanza 30: traffic còn lại -> WAN 2 route-map RM_APP_PBR permit 30 set interface Dialer2
Lưu ý chọn lệnh:
- Cổng Ethernet đa điểm: dùng
set ip next-hop <IP_Gateway>để tránh router gửi ARP broadcast quá mức. - Cổng Point-to-Point như Dialer (PPPoE): dùng
set interface Dialer2. - Khi Track 10 DOWN hoặc Dialer2 down, gói tin không khớp được next-hop sẽ rơi về bảng định tuyến chính, nên vẫn có đường ra.
Mẹo vận hành route-map: theo tài liệu Cisco, nếu nhập route-map mà không ghi rõ action và sequence number thì CLI mặc định là permit, có thể làm thay đổi hành vi nếu người quản trị không để ý. Khi chỉnh sửa
RM_APP_PBRvề sau, hãy luôn gõ đầy đủ, ví dụroute-map RM_APP_PBR permit 20. Nếu chỉ gõroute-map RM_APP_PBR, router sẽ vào sequence 10 (permit) và dễ ghi đè nhầm stanza ưu tiên. Các stanza được xử lý theo sequence tăng dần bất kể thứ tự nhập, nên stanza catch-all (30) luôn nằm cuối. Hãy giữ khoảng cách giữa các sequence (10, 20, 30) để còn chỗ chèn thêm.
Bước 5: Interface, Dialer PPPoE & Default Route
interface GigabitEthernet0/0/0 description ** LAN - INTERNAL NETWORK ** ip address 192.168.1.1 255.255.255.0 ip nat inside ip nbar protocol-discovery ip tcp adjust-mss 1452 service-policy input PM_APP_MARKING ip policy route-map RM_APP_PBR ! interface GigabitEthernet0/0/1 description ** WAN-1 LEASED LINE PRIMARY ** ip address 101.10.1.2 255.255.255.252 ip nat outside ! interface GigabitEthernet0/0/2 description ** WAN-2 PHYSICAL - FTTH MODEM BRIDGE MODE ** no ip address pppoe-client dial-pool-number 2 no shutdown ! interface Dialer2 description ** WAN-2 PPPOE DIALER ** ip address negotiated ip mtu 1492 ip tcp adjust-mss 1452 ip nat outside encapsulation ppp dialer pool 2 dialer-group 1 ppp authentication chap pap callin ppp chap hostname <USER_PPPOE> ppp chap password <PASS_PPPOE> ! dialer-list 1 protocol ip permit ip route 0.0.0.0 0.0.0.0 101.10.1.1 track 10 ip route 0.0.0.0 0.0.0.0 Dialer2 100
Bước 6: NAT/PAT cho hai đường WAN
Hai lệnh ip nat inside source list ... overload cùng dùng một ACL sẽ xung đột. Cách đúng là dùng route-map để gắn NAT theo cổng ra:
ip access-list extended ACL_LAN permit ip 192.168.1.0 0.0.0.255 any route-map RM_NAT_WAN1 permit 10 match ip address ACL_LAN match interface GigabitEthernet0/0/1 route-map RM_NAT_WAN2 permit 10 match ip address ACL_LAN match interface Dialer2 ip nat inside source route-map RM_NAT_WAN1 interface GigabitEthernet0/0/1 overload ip nat inside source route-map RM_NAT_WAN2 interface Dialer2 overload
Phương án thay thế: ePBR (Enhanced Policy-Based Routing)
Cisco có tính năng ePBR dành cho định tuyến theo ứng dụng. Thay vì phải kết hợp policy-map đánh dấu DSCP, ACL và route-map, ePBR cho phép đặt hành động chuyển hướng ngay trong từng class bằng policy-map type epbr, áp dụng bằng service-policy type epbr input. Theo tài liệu Cisco, ePBR còn hỗ trợ flow stickiness: một kết nối (flow) khi đã được gán vào đường nào thì các gói sau của nó giữ nguyên đường đó, để cùng một kết nối không bị đổi sang WAN khác giữa chừng. Nếu bị đổi, IP sau NAT thay đổi và kết nối thường bị ngắt.
Cần kiểm tra trước khi dùng: ePBR có từ IOS XE Gibraltar 16.11.1, nhưng mức hỗ trợ và cú pháp chi tiết phụ thuộc dòng router và phiên bản IOS XE. Hãy chạy
show version, tra tài liệu IP Routing Configuration Guide đúng phiên bản đang dùng và gõpolicy-map type ?để xem thiết bị có hỗ trợepbrkhông. Phần cấu hình bên dưới viết theo cú pháp trong tài liệu Cisco, dùng làm mẫu tham khảo và cần thử trên LAB trước khi triển khai.
policy-map type epbr PM_EPBR class CM_PRIORITY_APPS set ipv4 global next-hop verify-availability 101.10.1.1 10 track 10 class CM_BULK_APPS set interface Dialer2 class class-default set interface Dialer2 interface GigabitEthernet0/0/0 ip nbar protocol-discovery service-policy type epbr input PM_EPBR
Khi dùng ePBR, bạn không cần PM_APP_MARKING, các ACL theo DSCP, route-map RM_APP_PBR và lệnh ip policy route-map trên cổng LAN. Các phần còn lại (IP SLA, Track 10, class-map NBAR2, interface, default route, NAT) giữ nguyên.
Hai điểm cần xác nhận khi thử nghiệm:
- Cú pháp
set ipv4 ... next-hop verify-availability <ip> <seq> track <n>trong ePBR xuất hiện trong tài liệu lệnh Cisco cho nền tảng SD-WAN. Hãy xác nhận thiết bị của bạn nhận lệnh này ở chế độ router thông thường. - Việc dùng
class class-defaultđể đẩy phần traffic còn lại qua Dialer2 cần được kiểm tra, vì nếu thiếu thì traffic còn lại sẽ theo bảng định tuyến chính (ra WAN 1 khi Track 10 UP).
| Tiêu chí | NBAR2 + DSCP + PBR (bài này) | ePBR |
|---|---|---|
| Số thành phần cần cấu hình | Policy-map, ACL, route-map | Policy-map ePBR |
| Flow stickiness | Không hỗ trợ | Có hỗ trợ |
| Mức độ phổ biến, tài liệu | Rộng, chạy trên nhiều phiên bản | Mới hơn, phụ thuộc dòng máy và IOS XE |
3. Kịch bản Failover: khi WAN 1 mất kết nối
Đây là lý do cần IP SLA và Track 10. Khi đường Leased Line đứt hoặc ISP1 mất kết nối ra Internet, toàn bộ traffic, kể cả Zoom/Teams, được dồn về WAN 2 mà không cần can thiệp thủ công.
Diễn biến khi WAN 1 lỗi:
- Cả hai bộ đo IP SLA 11 (
1.1.1.1) và IP SLA 12 (8.8.8.8) qua WAN 1 không còn phản hồi, nêntrack 11vàtrack 12cùng DOWN. - Track 10 (OR của hai track trên) không còn đối tượng nào UP. Sau thời gian
delay down 10, Track 10 chuyển sang DOWN. Thời gian phát hiện thực tế khoảng 10 đến 20 giây, tùyfrequency, timeout vàdelay. - Stanza 10 của route-map không còn next-hop hợp lệ, nên traffic ưu tiên không bị ép đi WAN 1 nữa.
- Default route
0.0.0.0/0 via 101.10.1.1 track 10bị rút khỏi bảng định tuyến. Default routeDialer2(AD 100) được kích hoạt. - Toàn bộ traffic đi ra WAN 2 và được NAT overload theo IP của Dialer2.
- Khi WAN 1 phục hồi, chỉ cần một trong hai đích phản hồi là Track 10 lên UP sau
delay up 5. Traffic ưu tiên tự động quay về WAN 1.
Diễn biến này được minh họa ở sơ đồ trong mục 1 (trạng thái 2 và 3).
Lưu ý khi vận hành:
- Các phiên đang chạy qua WAN 1 sẽ bị ngắt vì đổi IP NAT. Zoom, Teams thường tự kết nối lại sau vài giây.
- Đường FTTH phải đủ băng thông để gánh thêm traffic họp trực tuyến. Nên cân nhắc thêm QoS trên Dialer2 để traffic thoại, video không bị YouTube chiếm hết.
Lệnh kiểm tra khi giả lập lỗi (rút cáp hoặc shutdown Gi0/0/1):
show track 10 show ip route 0.0.0.0 show ip nat translations
4. Cập nhật NBAR Protocol Pack
Cisco phát hành định kỳ các gói NBAR Protocol Pack (.pack) để nhận diện thêm ứng dụng mới (Zalo, TikTok...) hoặc ứng dụng đổi cách đóng gói, mà không cần reboot hay nâng cấp IOS XE.
- Tải file tại software.cisco.com: chọn đúng dòng router đang dùng, vào mục NBAR Protocol Packs, tải file khớp dòng thiết bị và phiên bản IOS XE (ví dụ
pp-8k-17.9-pp60.0.0.pack; tên file thay đổi theo từng dòng máy). Một số gói yêu cầu tài khoản CCO có hợp đồng hỗ trợ. Nếu thiết bị hết hạn, liên hệ đội ngũ VNExperts để được hỗ trợ. - Copy vào Flash:
copy usb0:pp-8k-17.9-pp60.0.0.pack flash:
- Nạp vào NBAR2:
HQ-Router# configure terminal HQ-Router(config)# ip nbar protocol-pack flash:pp-8k-17.9-pp60.0.0.pack HQ-Router(config)# end
- Lưu cấu hình:
HQ-Router# write memory
5. Kiểm tra & Troubleshooting
| Mục đích | Lệnh |
|---|---|
| Trạng thái đường ISP1 (Track tổng) | show track 10 |
| Số liệu đo IP SLA (hai đích) | show ip sla statistics 11 và show ip sla statistics 12 |
| Trạng thái từng đích | show track 11 và show track 12 |
| Route /32 của probe có đúng không | show ip route 1.1.1.1 và show ip route 8.8.8.8 |
| Rà soát thứ tự, action của route-map | show running-config | section route-map |
| Protocol Pack đang chạy | show ip nbar protocol-pack active |
| Ứng dụng NBAR2 bắt được | show ip nbar protocol-discovery interface GigabitEthernet0/0/0 stats top-n 10 |
| Policy đánh dấu DSCP có khớp không | show policy-map interface GigabitEthernet0/0/0 input |
| PBR đang áp dụng trên cổng nào | show ip policy |
| Số gói khớp từng stanza PBR | show route-map RM_APP_PBR |
| Bảng NAT theo từng đường | show ip nat translations |
Lưu ý vận hành:
- Không có flow stickiness: PBR xét từng gói riêng lẻ, nên nếu kết quả phân loại của NBAR2 thay đổi giữa chừng, các gói của cùng một kết nối có thể đi hai WAN khác nhau, IP NAT đổi và kết nối có thể bị ngắt, đây là lý do flow stickiness có ý nghĩa.
- Phụ thuộc DNS: NBAR2 có thể phân loại sai nếu mạng dùng proxy, nếu traffic DNS không đi qua router, hoặc nếu DNS từ máy trạm bị mã hóa (DoH, DoT). Với các mạng như vậy, hãy kiểm tra kỹ bằng
show ip nbar protocol-discoverytrước khi đưa vào hoạt động thực tế. - Hãy cập nhật Protocol Pack thường xuyên để duy trì độ chính xác nhận diện, đặc biệt với traffic mã hóa.
Tài liệu tham khảo (Cisco)
- Enhanced Policy-Based Routing (ePBR) – IP Routing Configuration Guide
- PBR Next-Hop Verify Availability for VRF – IP Routing Configuration Guide
- Best Practices for Route-Map (IOS XE 17)
- Release notes NBAR2 Protocol Pack theo đúng dòng router và phiên bản IOS XE (tra trên cisco.com)
- Cisco Feature Navigator (www.cisco.com/go/cfn) để kiểm tra mức hỗ trợ tính năng theo nền tảng
Tác giả: VNExperts Technical Team
