...
Настройка Policy-based routing
...
Policy-Based Routing (PBR) — это механизм маршрутизации, который позволяет принимать решения о форвардинге трафика на основе заданных политик, а не основываясь на таблицу маршрутизации . В отличие от традиционной маршрутизации, которая опирается исключительно на наилучший путь по метрике (например, кратчайший маршрут), PBR предоставляет администраторам гибкий инструмент для управления трафиком с учётом дополнительных параметров: источника трафика, типа протокола, VLAN, уровня приоритета и других.
| Якорь |
|---|
...
|
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Создать маршрутную карту для фильтрации и модификации IP-маршрутов. | esr(config)# route-map <NAME> | <NAME> – имя маршрутной карты, задаётся строкой до 31 символа. |
2 | Создать правило маршрутной карты. | esr(config-route-map)# rule <ORDER> | <ORDER> – номер правила, принимает значения [1..10000]. |
3 | Указать действие, которое должно быть применено для маршрутной информации. | esr(config-route-map-rule)# action <ACT> | <ACT> – назначаемое действие:
|
4 | Задать ACL, для которого должно срабатывать правило (необязательно). | esr(config-route-map-rule)# match ip access-group <NAME> | <NAME> – имя списка контроля доступа, задаётся строкой до 31 символа. |
5 | Задать Next-Hop для пакетов, которые попадают под критерии в указанном списке доступа (ACL) (необязательно). | esr(config-route-map-rule)# action set ip next-hop verify-availability <NEXTHOP><METRIC> | <NEXTHOP> – IP-адрес шлюза задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <METRIC> – метрика маршрута, принимает значения [0..255]. |
6 | Назначить политику маршрутизации на основе списков доступа (ACL). | esr(config-if-gi)# ip policy route-map <NAME> | <NAME> – имя сконфигурированной политики маршрутизации, строка до 31 символа. |
| 7 | Разрешить фильтрацию и модификацию локального трафика на основе политики маршрутизации. | esr(config)# ip local policy [ vrf <VRF> ] route-map <NAME> | <NAME> – имя сконфигурированной политики маршрутизации, строка до 31 символа. |
Настройка BFD
BFD (Bidirectional Forwarding Detection) — это протокол, работающий поверх других протоколов и позволяющий сократить время обнаружения проблемы до 50 мс. BFD является двусторонним протоколом, т. е. требует настройки обоих маршрутизаторов (оба маршрутизатора генерируют BFD-пакеты и отвечают друг другу).
По умолчанию сессия устанавливается в следующем режиме:
...
Пример настройки
Задача:
Распределить трафик между Интернет-провайдерами на основе подсетей пользователей.
Предварительно нужно назначить IP-адреса на интерфейсы.
Требуется направлять трафик с адресов 10.0.20.0/24 через ISP1 (184.45.0.150), а трафик с адресов 10.0.30.0/24 – через ISP2 (80.16.0.23). Требуется контролировать доступность адресов провайдеров (работоспособность подключений к ISP), и при неработоспособности одного из подключений переводить с него на рабочее подключение весь трафик.
Решение:
Создаем ACL:
| Блок кода |
|---|
esr# configure
esr(config)# ip access-list extended sub20
esr(config-acl)# rule 1
esr(config-acl-rule)# match source-address 10.0.20.0 255.255.255.0
esr(config-acl-rule)# match destination-address any
esr(config-acl-rule)# match protocol any
esr(config-acl-rule)# action permit
esr(config-acl-rule)# enable
esr(config-acl-rule)# exit
esr(config-acl)# exit
esr(config)# ip access-list extended sub30
esr(config-acl)# rule 1
esr(config-acl-rule)# match source-address 10.0.30.0 255.255.255.0
esr(config-acl-rule)# match destination-address any
esr(config-acl-rule)# match protocol any
esr(config-acl-rule)# action permit
esr(config-acl-rule)# enable
esr(config-acl-rule)# exit
esr(config-acl)# exit |
Создаем политику:
| Блок кода |
|---|
esr(config)# route-map PBR |
Создаем правило 1:
| Блок кода |
|---|
esr(config-route-map)# rule 1 |
Указываем список доступа (ACL) в качестве фильтра:
| Блок кода |
|---|
esr(config-route-map-rule)# match ip access-group sub20 |
Указываем next-hop для sub20:
| Блок кода |
|---|
esr(config-route-map-rule)# action set ip next-hop verify-availability 184.45.0.150 10
esr(config-route-map-rule)# action set ip next-hop verify-availability 80.16.0.23 30
esr(config-route-map-rule)# exit
esr(config-route-map)# exit |
Правилом 1 будет обеспечена маршрутизация трафика из сети 10.0.20.0/24 на адрес 184.45.0.150, а при его недоступности – на адрес 80.16.0.23. Приоритетность шлюзов задается значениями метрик – 10 и 30.
Создаем правило 2:
| Блок кода |
|---|
esr(config-route-map)# rule 2 |
Указываем список доступа (ACL) в качестве фильтра:
| Блок кода |
|---|
esr(config-route-map-rule)# match ip access-group sub30 |
Указываем nexthop для sub30 и выходим:
| Блок кода |
|---|
esr(config-route-map-rule)# action set ip next-hop verify-availability 80.16.0.23 10
esr(config-route-map-rule)# action set ip next-hop verify-availability 184.45.0.150 30
esr(config-route-map-rule)# exit
esr(config-route-map)# exit |
Правилом 2 будет обеспечена маршрутизация трафика из сети 10.0.30.0/24 на адрес 80.16.0.23, а при его недоступности – на адрес 184.45.0.150. Приоритетность задается значениями метрик.
Заходим на интерфейс TE 1/0/1:
| Блок кода |
|---|
esr(config)# interface tengigabitethernet 1/0/1 |
Привязываем политику на соответствующий интерфейс:
| Блок кода |
|---|
esr(config-if-te)# ip policy route-map PBR |
Настройка BFD
BFD (Bidirectional Forwarding Detection) — это протокол, работающий поверх других протоколов и позволяющий сократить время обнаружения проблемы до 50 мс. BFD является двусторонним протоколом, т. е. требует настройки обоих маршрутизаторов (оба маршрутизатора генерируют BFD-пакеты и отвечают друг другу).
По умолчанию сессия устанавливается в следующем режиме:
| Протокол | Режим |
|---|---|
| iBGP | multi-hop |
| eBGP | single-hop |
| eBGP multi-hop | multi-hop |
| OSPF | single-hop |
| IS-IS | single-hop |
| Static route | single-hop |
| RIP | single-hop |
Для изменения поведения (режима) необходимо вручную переопределить параметры сессии, указав необходимый режим. Рассмотрим на примере.
Допустим, мы установили eBGP-соседство и включили для него BFD:
| Блок кода |
|---|
ESR# show running-config routing bgp
router bgp 65516
neighbor 10.100.0.2
remote-as 65515
update-source 10.100.0.1
fall-over bfd
enable
exit
enable
exit
ESR# show bfd neighbors 10.100.0.2
Neighbor address |
Для изменения поведения (режима) необходимо вручную переопределить параметры сессии, указав необходимый режим. Рассмотрим на примере.
Допустим, мы установили eBGP-соседство и включили для него BFD:
| Блок кода |
|---|
ESR# show running-config routing bgp router bgp 65516 neighbor 10.100.0.2 remote-as 65515 update-source 10.100.0.1 fall-over bfd enable exit enable exit ESR# show bfd neighbors 10.100.0.2 Neighbor address: 10.100.0.2 Local address: 10.100.0.1 Interface: -- Remote discriminator: 3751534121 Local discriminator: 1670865501 State: Up Session type: Control Session mode: Single-hop Local diagnostic code: No Diagnostic Remote diagnostic code: No Diagnostic Minimal Tx Interval: 300 ms Minimal Rx Interval: 10.100.0.2 Local address: 300 ms Multiplier 10.100.0.1 Interface: 5 -- ActualRemote Tx Intervaldiscriminator: 3751534121 Local discriminator: 300 ms Actual Detection Interval: 1500 ms Number of transmitted packets:1670865501 State: 1149 Number of received packets: 1153Up UptimeSession type: Control Session mode: 2m Client: Single-hop Local diagnostic code: BGP No Diagnostic LastRemote receiveddiagnostic packet: code: DesiredNo MinDiagnostic Minimal Tx Interval: 300 ms Minimal Rx Interval: Required Min Rx Interval: 300 ms Multiplier: Multiplier: 5 |
Как видно, по умолчанию BFD установился в режиме single-hop. Переключим режим в multi-hop:
| Блок кода |
|---|
ESR(config)# ip bfd neighbor 10.100.0.2 local-address 10.100.0.1 multihop
ESR(config)# do commit
ESR(config)# do confirm |
| Scroll Pagebreak |
|---|
| Блок кода |
|---|
esr-200# sh bfd neighbors 10.100.0.2 Neighbor address: Actual Tx Interval: 300 ms Actual Detection Interval: 1500 ms Number of transmitted packets: 1149 Number of 10.100.0.2 Local addressreceived packets: 1153 Uptime: 10.100.0.1 Interface: -- Remote discriminator2m Client: 3751534121 Local discriminator: BGP Last received 1670865501packet: State: Desired Min Tx Interval: 300 ms Required Min Up Session typeRx Interval: 300 ms Control Session modeMultiplier: 5 |
Как видно, по умолчанию BFD установился в режиме single-hop. Переключим режим в multi-hop:
| Блок кода |
|---|
ESR(config)# ip bfd neighbor 10.100.0.2 local-address 10.100.0.1 multihop
ESR(config)# do commit
ESR(config)# do confirm |
| Scroll Pagebreak |
|---|
| Блок кода |
|---|
esr-200# sh bfd neighbors 10.100.0.2 Neighbor address: Multi-hop Local diagnostic code: No Diagnostic Remote diagnostic code: No Diagnostic Minimal Tx Interval: 10.100.0.2 Local address: 300 ms Minimal Rx Interval: 10.100.0.1 Interface: 300 ms Multiplier-- Remote discriminator: 3751534121 Local discriminator: 5 Actual Tx Interval: 1670865501 State: 300 ms Actual Detection Interval: 1500 ms Number of transmittedUp Session packetstype: 9 Number of received packets: 11 Uptime: Control Session mode: 2m ClientMulti-hop Local diagnostic code: No Diagnostic Remote diagnostic code: BGP No Diagnostic LastMinimal receivedTx packetInterval: Desired Min Tx Interval: 300 ms Minimal Rx Interval: Required Min Rx Interval: 300 ms Multiplier: Multiplier: 5 Actual Tx Interval: 300 ms Actual Detection Interval: 1500 ms Number of transmitted packets: 9 Number of received packets: 11 Uptime: 2m Client: BGP Last received packet: Desired Min Tx Interval: 300 ms Required Min Rx Interval: 300 ms Multiplier: 5 |
Настройка таймеров Настройка таймеров
| Подсказка |
|---|
Значение таймеров индивидуально для каждой сети и во многом зависит от ее параметров. В случае частого флапинга BFD рекомендуется увеличить значение таймеров. |
...
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Активировать BFD для протокола OSPF на интерфейсе. | esr(config-if-gi)# ip ospf bfd-enable | |
2 | Активировать BFD для neighbor протокола BGP. | esr(config-bgp-neighbor)# fall-over bfd | |
| 3 | Активировать BFD для протокола RIP на интерфейсе. | esr(config-if-gi)# ip rip bfd-enable | |
4 | Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. Глобально (необязательно). | esr(config)# ip bfd idle-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне:
По умолчанию: 1 секунда. |
5 | Включить логирование изменений состояния BFD-протокола (необязательно). | esr(config)# ip bfd log-adjacency-changes | |
6 | Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение. | esr(config)# ip bfd min-rx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
7 | Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config)# ip bfd min-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
8 | Задать число пропущенных пакетов, после достижения которого BFD-сосед считается недоступным. Глобально. | esr(config)# ip bfd multiplier <COUNT> | <COUNT> – число пропущенных пакетов, после достижения которого сосед считается недоступным, принимает значение в диапазоне [1..100]. По умолчанию: 5. |
9 | Запустить работу механизма BFD с определенным IP-адресом. | esr(config)# ip bfd neighbor <ADDR> [ { interface <IF> | tunnel <TUN> } ] | <ADDR> – IP-адрес шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IF> – интерфейс или группы интерфейсов; <TUN> – тип и номер туннеля; <VRF> – имя экземпляра VRF, задается строкой до 31 символа; multihop – ключ для установки TTL=255, для работы механизма BFD через маршрутизируемую сеть. |
10 | Перевести BFD-сессию в пассивный режим, то есть BFD-сообщения не будут отправляться до тех пор, пока не будут получены сообщения от BFD-соседа. Глобально (необязательно). | esr(config)# ip bfd passive | |
11 | Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config-if-gi)# ip bfd idle-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне:
По умолчанию: 1 секунда. |
12 | Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение. | esr(config-if-gi)# ip bfd min-rx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
13 | Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config-if-gi)# ip bfd min-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
14 | Задать число пропущенных пакетов, после достижения которого BFD-сосед считается недоступным. | esr(config-if-gi)# ip bfd multiplier <COUNT> | <COUNT> – число пропущенных пакетов, после достижения которого сосед считается недоступным, принимает значение в диапазоне [1..100]. По умолчанию: 5. |
15 | Перевести BFD-сессию в пассивный режим, то есть BFD-сообщения не будут отправляться до тех пор, пока не будут получены сообщения от BFD-соседа. На интерфейсе | esr(config-if-gi)# ip bfd passive | |
| 16 | При активизации работы протока BFD на интерфейсе с включенным firewall, необходимо разрешить работу протокола UDP порт назначения – 3784 из зоны сконфигурированной на интерфейсе в зону self. Как создать необходимое правило описано в разделе Конфигурирование Firewall. | ||
| Scroll Pagebreak |
|---|
Пример настройки
Задача:
Необходимо настроить протокол BFD для статического маршрута на маршрутизаторе R1.
...
| Блок кода | ||
|---|---|---|
| ||
R1(config)# interface gigabitethernet 1/0/1
R1(config-if-gi)# ip firewall disable
R1(config-if-gi)# ip address 198.51.100.1/24 |
| Блок кода | ||
|---|---|---|
| ||
R2(config)# interface gigabitethernet 1/0/1
R2(config-if-gi)# ip firewall disable
R2(config-if-gi)# ip address 198.51.100.2/24 |
На R1 настроим статический маршрут и привяжем к нему функционал BFD:
| Блок кода | ||
|---|---|---|
| ||
R1(config)# ip route 192.0.2.0/24 198.51.100.2 bfd |
Для установки BFD-сессии на R2 также необходимо настроить соседа:
| Блок кода | ||
|---|---|---|
| ||
R2(config)# ip bfd neighbor 198.51.100.1 |
Для вывода оперативной информации возможно использование следующих команд:
| Блок кода |
|---|
R1# sh bfd neighbors Neighbor Discriminator State Interface --------------------------------------- ------------- --------- ---------------- 198.51.100.2 2907010617 Up gi1/0/1 R1# sh bfd neighbors 198.51.100.2 Neighbor address: 198.51.100.2 Local address: -gi)# ip firewall disable R1(config-if-gi)# ip address 198.51.100.1 Interface: gi1/24 |
| Блок кода | ||
|---|---|---|
| ||
R2(config)# interface gigabitethernet 1/0/1 Remote discriminator:R2(config-if-gi)# ip firewall disable R2(config-if-gi)# ip address 198.51.100.2/24 |
На R1 настроим статический маршрут и привяжем к нему функционал BFD:
| Блок кода | ||
|---|---|---|
| ||
R1(config)# ip route 192.0.2.0/24 198.51.100.2 bfd |
Для установки BFD-сессии на R2 также необходимо настроить соседа:
| Блок кода | ||
|---|---|---|
| ||
R2(config)# ip bfd neighbor 198.51.100.1 |
Для вывода оперативной информации возможно использование следующих команд:
| Блок кода |
|---|
R1# sh bfd neighbors Neighbor 2907010617 Local discriminator: 2856477782 State: Up <--- состояние протокола Session type: Discriminator State Interface Control Session mode: --------------------------------------- ------------- --------- ---------------- 198.51.100.2 Single-hop Local diagnostic code: 2907010617 Up No Diagnostic Remote diagnostic code: gi1/0/1 No Diagnostic MinimalR1# Txsh Interval:bfd 300 ms Minimal Rx Intervalneighbors 198.51.100.2 Neighbor address: 300 ms Multiplier: 198.51.100.2 Local address: 5 Actual Tx Interval198.51.100.1 Interface: 300 ms Actual Detection Interval: 1500 ms Number of transmitted packets: gi1/0/1 Remote discriminator: 1444 Number of received packets: 14022907010617 Uptime (d,h:m:s)Local discriminator: 2856477782 State: 00,00:03:39 Client: Up STATIC <---- сервис, который подписан на отслеживание изменения состояния R1# sh ip route 192.0.2.0/24 Codes: C - connected, S - static, R - RIP derived, состояние протокола Session type: Control Session mode: O - OSPF derived, IA - OSPF inter area route, Single-hop Local diagnostic code: E1 - OSPF external type 1 route, E2 -No OSPFDiagnostic Remote externaldiagnostic typecode: 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route No Diagnostic Minimal Tx Interval: 300 ims Minimal - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area Rx Interval: 300 ms Multiplier: H - NHRP, * - FIB route S * 192.0.2.0/24 [1/0] 5 Actual Tx Interval: via 198.51.100.2 on gi1/0/1 300 ms Actual [staticDetection 16Interval:22:27] R1# sh bfd neighbors Neighbor 1500 ms Number of transmitted packets: 1444 Number of received packets: 1402 Uptime (d,h:m:s): Discriminator State Interface --------------------------------------- ------------- --------- ---------------- 198.51.100.200,00:03:39 Client: STATIC 2907010617 Up gi1/0/1 <---- сервис, который подписан на отслеживание изменения состояния R1# sh ip route 192.0.2.0/24 Codes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area H - NHRP, * - FIB route S * 192.0.2.0/24 [1/0] via 198.51.100.2 on gi1/0/1 [static 16:22:27] <---- маршрут присутствует в FIB // После того как BFD-сессия разрушилась, отслеживаемый маршрут удалился из FIB: R1# sh bfd neighbors Neighbor Discriminator State Interface --------------------------------------- ------------- --------- ---------------- 198.51.100.2 2907010617 Up Down gi1/0/1/1 R1# sh ip route 192.0.2.0/24 Codes: C - connected, S - static, R - RIP derived, O - OSPF derived, IA - OSPF inter area route, E1 - OSPF external type 1 route, E2 - OSPF external type 2 route B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area H - NHRP, * - FIB route R1# |
Настройка завершена.
Пример настройки Route-map на основе списков доступа (Policy-based routing)
Задача:
Распределить трафик между Интернет-провайдерами на основе подсетей пользователей.
Предварительно нужно назначить IP-адреса на интерфейсы.
Требуется направлять трафик с адресов 10.0.20.0/24 через ISP1 (184.45.0.150), а трафик с адресов 10.0.30.0/24 – через ISP2 (80.16.0.23). Требуется контролировать доступность адресов провайдеров (работоспособность подключений к ISP), и при неработоспособности одного из подключений переводить с него на рабочее подключение весь трафик.
Решение:
Создаем ACL:
| Блок кода |
|---|
esr# configure
esr(config)# ip access-list extended sub20
esr(config-acl)# rule 1
esr(config-acl-rule)# match source-address 10.0.20.0 255.255.255.0
esr(config-acl-rule)# match destination-address any
esr(config-acl-rule)# match protocol any
esr(config-acl-rule)# action permit
esr(config-acl-rule)# enable
esr(config-acl-rule)# exit
esr(config-acl)# exit
esr(config)# ip access-list extended sub30
esr(config-acl)# rule 1
esr(config-acl-rule)# match source-address 10.0.30.0 255.255.255.0
esr(config-acl-rule)# match destination-address any
esr(config-acl-rule)# match protocol any
esr(config-acl-rule)# action permit
esr(config-acl-rule)# enable
esr(config-acl-rule)# exit
esr(config-acl)# exit |
Создаем политику:
| Блок кода |
|---|
esr(config)# route-map PBR |
Создаем правило 1:
| Блок кода |
|---|
esr(config-route-map)# rule 1 |
Указываем список доступа (ACL) в качестве фильтра:
| Блок кода |
|---|
esr(config-route-map-rule)# match ip access-group sub20 |
Указываем next-hop для sub20:
| Блок кода |
|---|
esr(config-route-map-rule)# action set ip next-hop verify-availability 184.45.0.150 10
esr(config-route-map-rule)# action set ip next-hop verify-availability 80.16.0.23 30
esr(config-route-map-rule)# exit
esr(config-route-map)# exit |
Правилом 1 будет обеспечена маршрутизация трафика из сети 10.0.20.0/24 на адрес 184.45.0.150, а при его недоступности – на адрес 80.16.0.23. Приоритетность шлюзов задается значениями метрик – 10 и 30.
Создаем правило 2:
| Блок кода |
|---|
esr(config-route-map)# rule 2 |
Указываем список доступа (ACL) в качестве фильтра:
| Блок кода |
|---|
esr(config-route-map-rule)# match ip access-group sub30 |
Указываем nexthop для sub30 и выходим:
| Блок кода |
|---|
esr(config-route-map-rule)# action set ip next-hop verify-availability 80.16.0.23 10
esr(config-route-map-rule)# action set ip next-hop verify-availability 184.45.0.150 30
esr(config-route-map-rule)# exit
esr(config-route-map)# exit |
Правилом 2 будет обеспечена маршрутизация трафика из сети 10.0.30.0/24 на адрес 80.16.0.23, а при его недоступности – на адрес 184.45.0.150. Приоритетность задается значениями метрик.
Заходим на интерфейс TE 1/0/1:
| Блок кода |
|---|
esr(config)# interface tengigabitethernet 1/0/1 |
Привязываем политику на соответствующий интерфейс:
| Блок кода |
|---|
esr(config-if-te)# ip policy route-map PBR |
...
S * 192.0.2.0/24 [1/0] via 198.51.100.2 on gi1/0/1 [static 16:22:27] <---- маршрут присутствует в FIB
// После того как BFD-сессия разрушилась, отслеживаемый маршрут удалился из FIB:
R1# sh bfd neighbors
Neighbor Discriminator State Interface
--------------------------------------- ------------- --------- ----------------
198.51.100.2 2907010617 Down gi1/0/1
R1# sh ip route 192.0.2.0/24
Codes: C - connected, S - static, R - RIP derived,
O - OSPF derived, IA - OSPF inter area route,
E1 - OSPF external type 1 route, E2 - OSPF external type 2 route
B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
H - NHRP, * - FIB route
R1#
|
Настройка завершена.
Настройка VRF
VRF (Virtual Routing and Forwarding) – технология, которая позволяет изолировать маршрутную информацию, принадлежащую различным классам (например, маршруты одного клиента).
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Создать экземпляр VRF и перейти в режим настройки параметров экземпляра VRF. | esr(config)# ip vrf <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
2 | Назначить описание конфигурируемого экземпляра VRF. | esr(config-vrf)# description <DESCRIPTION> | <DESCRIPTION> – описание экземпляра VRF, задаётся строкой до 255 символов. |
3 | Настроить емкость таблиц маршрутизации в конфигурируемом VRF для IPv4/IPv6 протоколов маршрутизации (необязательно). | esr(config-vrf)# ip protocols <PROTOCOL> max-routes <VALUE> | <PROTOCOL> – вид протокола, принимает значения: ospf, bgp; <VALUE> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:
Значение по умолчанию: 0. |
esr(config-vrf)#ipv6 protocols <PROTOCOL> max-routes <VALUE> | |||
4 | Включить и настроить протоколы динамической маршрутизации трафика (Static/OSPF/BGP/IS-IS) в экземпляре VRF (необязательно). См. соответствующий раздел Конфигурирование статических маршрутов, Настройка OSPF и Настройка BGP. | ||
5 | В режиме конфигурирования физического/логического интерфейса, туннеля, правила DNAT/SNAT, DAS-сервера или SNMPv3 пользователя указать имя экземпляра VRF для которого будет использоваться (при необходимости). | esr(config-snat-ruleset)# ip vrf forwarding <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
6 | Настроить LT-туннель для передачи трафика в глобальный режим или другие VRF (при необходимости). | См. раздел Настройка LT-туннелей. |
Пример настройки
Задача:
К маршрутизатору ESR подключены 2 сети, которые необходимо изолировать от остальных сетей.
Решение:
Создадим VRF:
| Блок кода |
|---|
esr(config)# ip vrf bit esr(config-vrf)# exit |
...
| Блок кода |
|---|
esr# show ip route vrf bit |
Настройка MultiWAN
Технология MultiWAN позволяет организовать отказоустойчивое соединение с резервированием линков от нескольких провайдеров, а также решает проблему балансировки трафика между резервными линками.
Алгоритм настройки
| Якорь | ||||
|---|---|---|---|---|
|
| Шаг | Описание | Команда | Ключи |
|---|---|---|---|
| 1 | Сконфигурировать интерфейсы, по которым будет работать MultiWAN: установить IP-адреса и указать security-zone. | ||
| 2 | Прописать статические маршруты через WAN (если необходимо). | esr(config)# ip route <SUBNET> wan load-balance rule <ID> [<METRIC>] | <ID> – идентификатор создаваемого правила из п.2. [METRIC] – метрика маршрута, принимает значения [0..255]. |
| 3 | Создать правило WAN и перейти в режим настройки параметров правила. | esr(config)# wan load-balance rule <ID> | <ID> – идентификатор создаваемого правила, принимает значения [1..50]. |
| 4 | Задать интерфейсы или туннели, которые являются шлюзами в маршруте, создаваемом службой MultiWAN. | esr(config-wan-rule)# outbound | <IF>– имя интерфейса; <TUN> – имя туннеля; [WEIGHT] – вес туннеля или интерфейса, определяется в диапазоне [1..255]. Если установить значение 2, то по данному интерфейсу будет передаваться в 2 раза больше трафика, чем по интерфейсу со значением по умолчанию. В режиме резервирования активным будет маршрут с наибольшим весом. Значение по умолчанию 1. |
| 5 | Описать правила (необязательно). | esr(config-wan-rule)# description <DESCRIPTION> | <DESCRIPTION> – описание правила wan, задаётся строкой до 255 символов. |
| 6 | Данной командой осуществляется переключение из режима балансировки в режим резервирования (если необходимо). | esr(config-wan-rule)# failover | |
| 7 | Данной командой включается отправка ответных пакетов сессии через тот же интерфейс, через который получены входящие пакеты сессии (если необходимо). | esr(config-wan-rule)# stickiness | |
| 8 | Включить wan-правило. | esr(config-wan-rule)# enable | |
| 9 | Создать список IP-адресов для проверки целостности соединения и осуществить переход в режим настройки параметров списка. | esr(config)# wan load-balance target-list <NAME> | <NAME> – название списка, задается строкой до 31 символа. |
| 10 | Задать цель проверки и перейти в режим настройки параметров цели. | esr(config-target-list)# target <ID> | <ID> – идентификатор цели, задаётся в пределах [1..50]. Если при удалении используется значение параметра «all», то будут удалены все цели для конфигурируемого списка целей. |
| 11 | Описать target (необязательно). | esr(config-wan-target)# description <DESCRIPTION> | <DESCRIPTION> – описание target, задаётся строкой до 255 символов. |
| 12 | Указать время ожидания ответа на запрос по протоколу ICMP (необязательно). | esr(config-wan-target)# resp-time <TIME> | <TIME> – время ожидания, определяется в секундах [1..30]. |
| 13 | Указать IP-адрес проверки. | esr(config-wan-target)# ip address <ADDR> | <ADDR> – IP-адрес назначения, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-wan-target)# ipv6 address <IPV6-ADDR> | <IPV6-ADDR> – IPv6-адрес назначения, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
| 14 | Включить проверку цели. | esr(config-wan-target)# enable | |
Команды для пунктов 14–17 необходимо применить на интерфейсах/туннелях в MultiWAN. | |||
| 15 | Включить WAN-режим на интерфейсе для IPv4/IPv6-стека. | esr(config-if-gi)# wan load-balance enable | |
esr(config-if-gi)# ipv6 wan load-balance enable | |||
| 16 | Задать количество неудачных попыток проверки соединения, после которых, при отсутствии ответа от встречной стороны, соединение будет считается неактивным (необязательно). | esr(config-if-gi)# wan load-balance failure-count <VALUE> | <VALUE> – количество попыток, определяется в диапазоне [1..10]. Значение по умолчанию: 1. |
esr(config-if-gi)# ipv6 wan load-balance failure-count <VALUE> | |||
| 17 | Задать количество успешных попыток проверки соединения, после которых, в случае успеха, соединение считается вновь активным (необязательно). | esr(config-if-gi)# wan load-balance success-count <VALUE> | <VALUE> – количество попыток, определяется в диапазоне [1..10]. Значение по умолчанию: 1. |
esr(config-if-gi)# ipv6 wan load-balance success-count <VALUE> | |||
| 18 | Задать IP-адрес соседа, который будет указан в качестве одного из шлюзов в статическом маршруте, создаваемом службой MultiWAN. | esr(config-if-gi)# wan load-balance nexthop { <IP> | dhcp enable | tunnel enable } | <IP> – IP-адрес назначения (шлюз), задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. dhcp enable – если на интерфейсе IP-адрес получен через DHCP-клиента, используется шлюз с DHCP-сервера. tunnel enable – использовать в качестве nexthop – p-t-p адрес назначения. Применимо для подключаемых интерфейсов, работающих через ppp. |
esr(config-if-gi)# ipv6 wan load-balance nexthop { <IPV6> } | <IPV6> – IPv6-адрес назначения (шлюз), задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
| 19 | Данной командой будут проверяться IP-адреса из списка проверки целостности. В случае недоступности всех (по умолчанию)/хотя бы одной (с использованием ключа chack-all) из проверяемых узлов, шлюз будет считаться недоступным. | esr(config-if-gi)# wan load-balance target-list { check-all | <NAME> } | <NAME> – проверку производить на основании конкретного target листа (заданного в п.7). check-all – проверку производить на основании всех target листа. |
esr(config-if-gi)# ipv6 wan load-balance target-list { check-all | <NAME> } | |||
| 20 | Прописать статические маршруты через WAN. | esr(config)# ip route <SUBNET> wan load-balance rule <ID> [<METRIC>] | <ID> – идентификатор создаваемого правила из п.2. [METRIC] – метрика маршрута, принимает значения [0..255]. |
esr(config)# ipv6 route <SUBNET> wan load-balance rule <ID [<METRIC>] | |||
Пример настройки
Задача:
Настроить маршрут к серверу (108.16.0.1/28) с возможностью балансировки нагрузки.
Решение:
Предварительно нужно выполнить следующие действия:
...
| Блок кода |
|---|
еsr(config-wan-rule)# failover |
Настройка IS-IS
IS-IS — протокол динамической маршрутизации, стандартизированный ISO, основанный на состояниях линков (link-state). Он обеспечивает быструю сходимость и отличную масштабируемость, экономно использует пропускную способность сетей, использует Алгоритм Дейкстры для просчёта наилучших маршрутов. Отличительной особенностью протокола IS-IS является работа поверх канального уровня модели OSI, поэтому он не привязан к конкретному протоколу сетевого уровня.
Алгоритм настройки
| Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Cоздать IS-IS процесс и перейти в режим настройки параметров этого процесса. | esr(config)# router isis <ID> [vrf <VRF>] | <ID> – номер процесса, принимает значения [1..65535]; <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
2 | Установить NET-адрес. | esr(config-isis)# net {<NET>} | <NET> – NET-адрес, формат: ff[.ffff.ffff.ffff.ffff.ffff.ffff].ffff.ffff.ffff.00. |
3 | Включить IS-IS процесс. | esr(config-isis)# enable | |
4 | Установить алгоритм аутентификации для L2-уровня (необязательно). | esr(config-isis)# authentication domain algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации:
|
| 5 | Установить пароль аутентификации для L2-уровня (необязательно). | esr(config-isis)# authentication domain key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой 8 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером 8 байт (16 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
6 | Установить список ключей для аутентификации (необязательно). | esr(config-isis)# authentication domain key chain <KEYCHAIN> | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов. |
| 7 | Выбрать алгоритм аутентификации для L1-уровня (необязательно). | esr(config-isis)# authentication area algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации:
|
| 8 | Установить пароль аутентификации для L1-уровня (необязательно). | esr(config-isis)# authentication area key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой 8 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером 8 байт (16 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
| 9 | Установить список ключей для аутентификации (необязательно). | esr(config-isis)# authentication area key chain <KEYCHAIN> | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов. |
| 10 | Включить передачу имени маршрутизатора в LSP (необязательно). | esr(config-isis)# hostname dynamic | |
| 11 | Установить уровень работы IS-IS процесса (необязательно). | esr(config-isis)# is-type {<LEVEL>} | <LEVEL> – уровень работы протокола IS-IS:
|
| 12 | Установить тип метрики, который будет использоваться в работе IS-IS процесса (необязательно). | esr(config-isis)# metric-style { narrow | wide | transition } [<LEVEL>] | narrow – принимает и генерирует TLV (о достижимости сетей) старого типа; wide – принимает и генерирует TLV (о достижимости сетей) нового типа; transition – принимает и генерирует TLV (о достижимости сетей) нового и старого типа; <LEVEL> – уровень работы протокола IS-IS:
|
| 13 | Установить приоритетность маршрутов для данного IS-IS процесса (необязательно). | esr(config-isis)# preference {<VALUE>} | <VALUE> – принимает значения [1..255]. |
| 14 | Включить работу IS-IS с IPv4 и/или IPv6 адресами (необязательно). | esr(config-isis)# address-family { ipv4 | ipv6 } | ipv4 – семейство адресов IPv4; ipv6 – семейство адресов IPv6. |
| 15 | Установить интервал обновления собственных LSP (необязательно). | esr(config-isis)# lsp-refresh-interval { min | max } <TIME> [ <LEVEL> ] | min – минимальный интервал обновления/генерации; max – максимальный интервал обновления/генерации; <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
| 16 | Установить время жизни собственных LSP (необязательно). | esr(config-isis)# max-lsp-lifetime <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
| 17 | Установить таймаут перед следующим расчётом SPF (необязательно). | esr(config-isis)# spf-timeout <TIME> [<LEVEL>] | <TIME> – время в миллисекундах, принимает значения [1..10000]; <LEVEL> – уровень работы протокола IS-IS:
|
| 18 | Включить анонсирование маршрутов, полученных альтернативным способом (необязательно). | esr(config-isis)# redistribute bgp <AS> [ route-map <NAME> ] [is-type <LEVEL>] | <AS> – номер автономной системы, может принимать значения [1..4294967295]; <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
|
esr(config-isis)# redistribute ipv6 bgp <AS> [ route-map <NAME> ] [is-type <LEVEL>] | |||
esr(config-isis)# redistribute ospf <ID> <ROUTE-TYPE> [ route-map <NAME> ] [is-type <LEVEL>] | <ID> – номер процесса, может принимать значение [1..65535]; <ROUTE-TYPE> – тип маршрута:
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
esr(config-isis)# redistribute ipv6 ospf <ID> <ROUTE-TYPE> [ route-map <NAME> ] [is-type <LEVEL>] | |||
esr(config-isis)# redistribute isis <ID> <ROUTE-TYPE> [ route-map <NAME> ] [is-type <LEVEL>] | <ID> – номер процесса, может принимать значение [1..65535]; <ROUTE-TYPE> – тип маршрута:
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых IS-IS-маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
esr(config-isis)# redistribute rip [ route-map <NAME> ] [is-type <LEVEL>] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых RIP-маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
| esr(config-isis)# redistribute ipv6 rip [ route-map <NAME> ] [is-type <LEVEL>] | |||
esr(config-isis)# redistribute static [ route-map <NAME> ] [is-type <LEVEL>] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
esr(config-isis)# redistribute connected [ route-map <NAME> ] [is-type <LEVEL>] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых подключённых маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
| 19 | Добавить фильтрацию подсетей во входящих или исходящих обновлениях (необязательно). | esr(config-isis)# prefix-list { ipv6 <LIST_NAME> | <LIST_NAME> } {in|out} | <LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа. in – фильтрация входящих маршрутов; out – фильтрация анонсируемых маршрутов. |
| 20 | Добавить фильтрацию подсетей во входящих или исходящих обновлениях (необязательно). | esr(config-isis)# route-map <NAME> {in|out} | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых маршрутов, задаётся строкой до 31 символа. |
| 21 | Установить принадлежность интерфейса к определенному IS-IS процессу. | esr(config-if-gi)# isis instance <ID> | <ID> – номер процесса, принимает значения [1..65535]. |
| 22 | Включить работу протокола IS-IS на интерфейсе. | esr(config-if-gi)# isis enable | |
| 23 |
| ||
| 24 | Включить использование TLV#8 в hello-пакетах (необязательно). | esr(config-if-gi)# isis hello-padding | |
| 25 | Установить приоритет при выборе DIS (необязательно). | esr(config-if-gi)# isis priority <VALUE> [<LEVEL>] | <VALUE> – число, принимающее значения [0..127]; <LEVEL> – уровень работы протокола IS-IS:
|
| 26 | Установить значение метрики для интерфейсa (необязательно). | esr(config-if-gi)# isis metric <VALUE> [<LEVEL>] | <VALUE> – число, принимающее значения [1..16777215]; <LEVEL> – уровень работы протокола IS-IS:
|
| 27 | Установить на каком уровне маршрутизации будет работать текущий процесс IS-IS на конкретном интерфейсе (необязательно). | esr(config-if-gi)# isis circuit-type {<LEVEL>} | <LEVEL> – уровень работы протокола IS-IS:
|
| 28 | Установить интервал отправки hello-пакетов (необязательно). | esr(config-if-gi)# isis hello-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
| 29 | Установить множитель для вычисления и отправки Hold Time (необязательно). | esr(config-if-gi)# isis hello-multiplier <VALUE> [<LEVEL>] | <VALUE> – число, принимающее значения [3..1000]; <LEVEL> – уровень работы протокола IS-IS:
|
| 30 | Перевести интерфейс в режим работы point-to-point протокола IS-IS (необязательно). | esr(config-if-gi)# isis network point-to-point | |
| 31 | Установить интервал генерации и отправки CSNP (необязательно). | esr(config-if-gi)# isis csnp-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
| 32 | Установить интервал генерации и отправки PSNP (необязательно). | esr(config-if-gi)# isis psnp-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
| 33 | Установить интервал между передачами LSP в Broadcast-сети (необязательно). | esr(config-if-gi)# isis lsp-interval <TIME> [<LEVEL>] | <TIME> – время в миллисекундах, принимает значения [1-10000]; <LEVEL> – уровень работы протокола IS-IS:
|
| 34 | Установить интервал повторного распространения LSP в PtP-сети (необязательно). | esr(config-if-gi)# isis lsp-retransmit-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
| 35 | Установить алгоритм аутентификации для hello-пакетов (необязательно). | esr(config-if-gi)# isis authentication algorithm <ALGORITHM> [<LEVEL>] | <ALGORITHM> – алгоритм аутентификации:
<LEVEL> – уровень работы протокола IS-IS:
|
| 36 | Установить пароль для аутентификации hello-пакетов (необязательно). | esr(config-if-gi)# isis authentication key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } [<LEVEL>] | <CLEAR-TEXT> – пароль, задаётся строкой 8 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером 8 байт (16 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...); <LEVEL> – уровень работы протокола IS-IS:
|
| 37 | Установить список ключей для аутентификации hello-пакетов (необязательно). | esr(config-if-gi)# isis authentication key chain <KEYCHAIN> [<LEVEL>] | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов; <LEVEL> – уровень работы протокола IS-IS:
|
| 38 | Включить протокол BFD для протокола IS-IS (необязательно). | esr(config-if-gi)# isis bfd-enable esr(config-if-gi)# isis ipv6-bfd-enable |
Якорь Пример настройки IS-IS рисунок Пример настройки IS-IS рисунок
Пример настройки
| Пример настройки IS-IS рисунок | |
| Пример настройки IS-IS рисунок |
Задача:
Настроить протокол IS-IS на маршрутизаторах для обмена маршрутной информацией с соседями. Маршрутизатор ESR1 будет L1-only, ESR2 – L1/L2, ESR3 – L2-only, который также будет находится в другой area.
Решение:
Предварительно нужно настроить IP-адреса на интерфейсах согласно схеме, приведенной на рисунке.
...



