Развертывание Policy-Based Routing (PBR): перенаправление трафика по источнику и портам
- Трафик от определенных подсетей или приложений (TCP/UDP портов) уходит через шлюз по умолчанию вместо выделенного резервного/скоростного ISP-канала.
- Нарушение работы асимметричной маршрутизации: обратный трафик блокируется межсетевыми экранами (Stateful Firewall Drop).
- Команда
show ip routeпоказывает корректный маршрут, но пакеты с определенными IP-источниками направляются в неверный интерфейс. - Высокая утилизация CPU маршрутизатора из-за отключения аппаратной коммутации CEF при некорректно настроенных Route-Map.
1. Архитектура и принцип работы PBR
Policy-Based Routing (PBR) позволяет переопределить стандартное поведение таблицы маршрутизации (FIB/RIB), направляя пакеты на основе расширенных критериев (Source IP, Destination IP, L4-протокол, DSCP/ToS-метки, размер пакета).
2. Создание расширенного ACL для классификации трафика
ip access-list extended ACL_PBR_TRAFFIC
remark === Redirect HTTP/HTTPS from Guest Subnet ===
permit tcp 192.168.50.0 0.0.0.255 any eq 80
permit tcp 192.168.50.0 0.0.0.255 any eq 443
remark === Redirect Specific Database Sync Port ===
permit tcp 10.10.10.0 0.0.0.255 172.16.0.0 0.0.255.255 eq 54323. Конфигурация Route-Map с проверкой доступности Next-Hop
Для предотвращения «черных дыр» (blackholing) трафика используйте механизм verify-availability с SLA или конструкцию set ip default next-hop:
! Настройка IP SLA для мониторинга шлюза
ip sla 10
icmp-echo 198.51.100.1 source-interface GigabitEthernet0/1
frequency 5
ip sla schedule 10 life forever start-time now
track 10 ip sla 10 reachability
! Создание политики маршрутизации
route-map RM_PBR_POLICY permit 10
match ip address ACL_PBR_TRAFFIC
set ip next-hop verify-availability 198.51.100.1 1 track 10
set ip next-hop 203.0.113.1
!
route-map RM_PBR_POLICY permit 20
! Пропуск всего остального трафика по стандартной таблице RIB4. Применение PBR к входящему интерфейсу
interface GigabitEthernet0/0.50
description === Guest VLAN Interface ===
ip address 192.168.50.1 255.255.255.0
ip policy route-map RM_PBR_POLICY5. Траблшутинг и верификация
! Проверка счетчиков совпадений маршрутной карты
show route-map RM_PBR_POLICY
! Проверка аппаратного применения CEF PBR
show ip cef policy-statistics
! Отладка прохождения пакетов (осторожно в продакшене!)
debug ip policy Частые вопросы (FAQ)
В чем разница между 'set ip next-hop' и 'set ip default next-hop'?
Команда 'set ip next-hop' переопределяет стандартную таблицу маршрутизации и принудительно отправляет трафик на указанный шлюз в первую очередь. Команда 'set ip default next-hop' проверяет стандартную таблицу маршрутизации, и если точного совпадения (кроме default route 0.0.0.0/0) нет, отправляет трафик на заданный адрес.
Почему PBR не применяется к трафику, генерируемому самим маршрутизатором?
По умолчанию команда 'ip policy route-map' обрабатывает только входящий трафик на интерфейсе (transit traffic). Для локально генерируемого трафика самого роутера необходимо настроить глобальную команду: 'ip local policy route-map <NAME>'.
Обрабатывается ли PBR на аппаратном уровне (ASIC/CEF)?
На современных коммутаторах Cisco Catalyst и маршрутизаторах ASR/ISR PBR компилируется в TCAM-память и коммутируется аппаратно. Однако использование неподдерживаемых опций (например, некоторых match по размеру пакета) может сбросить трафик в Process Switching (CPU).
Что произойдет, если IP SLA упадет, а резервный next-hop не задан?
Если next-hop недоступен через IP SLA (track state Down), предложение route-map перестает совпадать, и маршрутизатор переходит к следующему номеру sequence или отправляет пакет по стандартной глобальной таблице маршрутизации.