Loading...

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ầnCổ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.1 và 8.8.8.8 kiể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-teams chỉ 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ành ms-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ành webex-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ằng match protocol ? hoặc show 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_PBR về 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ợ epbr khô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:

  1. 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ên track 11 và track 12 cùng DOWN.
  2. 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ùy frequency, timeout và delay.
  3. 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.
  4. Default route 0.0.0.0/0 via 101.10.1.1 track 10 bị rút khỏi bảng định tuyến. Default route Dialer2 (AD 100) được kích hoạt.
  5. Toàn bộ traffic đi ra WAN 2 và được NAT overload theo IP của Dialer2.
  6. 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.

  1. 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ợ.
  2. Copy vào Flash:
copy usb0:pp-8k-17.9-pp60.0.0.pack flash:
  1. 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
  1. Lưu cấu hình:
HQ-Router# write memory

5. Kiểm tra & Troubleshooting

Mục đíchLệ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-discovery trướ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)


Tác giả: VNExperts Technical Team