...
Блок кода |
---|
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: 198.51.100.1 Interface: gi1/0/1 Remote discriminator: 2907010617 Local discriminator: 2856477782 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: 300 ms Multiplier: 5 Actual Tx Interval: 300 ms Actual Detection Interval: 1500 ms Number of transmitted packets: 1444 Number of received packets: 1402 Uptime (d,h:m:s): 00,00:03:39 Client: STATIC <---- сервис, который подписан на отслеживание изменения состояния 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] R1# sh bfd neighbors Neighbor Discriminator State Interface --------------------------------------- ------------- --------- ---------------- 198.51.100.2 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 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# |
Настройка завершена.
Настройка политики маршрутизации PBR
Алгоритм настройки Route-map для BGP
Route-map могут служить фильтрами, позволяющими обрабатывать маршрутную информацию при приеме этой информации от соседа либо при ее передаче соседу. Обработка может включать в себя фильтрацию на основании различных признаков маршрута, а также установку атрибутов (MED, AS-PATH, community, LocalPreference и другое) на соответствующие маршруты.
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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 | Задать значение атрибута BGP AS-Path в маршруте, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match as-path { [begin | contain | end ] <AS-PATH> | empty | regex <REGEX> } | <AS-PATH> – список номеров автономных систем, задается в виде AS,AS,AS, принимает значения [1..4294967295]. Опциональные параметры: <REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.
|
5 | Задать значение атрибута BGPCommunity, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match community { <COMMUNITY-LIST> | regex <REGEX> } | <COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, принимает значения [1..4294967295]. Можно указать до 64 community.
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions. |
6 | Задать значение атрибута BGPExtendedCommunity, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match extcommunity { <EXTCOMMUNITY-LIST> | regex <REGEX> } | <EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где KIND – тип extcommunity:
N – номер extcommunity, принимает значения [1..65535].
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions. |
7 | Задать профиль IP-адресов, содержащий значения подсетей назначения в маршруте (не обязательно). | esr(config-route-map-rule)# match ip address object-group <OBJ-GROUP-NETWORK-NAME> | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задаётся строкой до 31 символа. |
esr(config-route-map-rule)# match ipv6 address object-group <OBJ-GROUP-NETWORK-NAME> | |||
8 | Задать профиль IP-адресов, содержащий значения атрибута BGPNext-Hop в маршруте для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match ip next-hop object-group <OBJ-GROUP-NETWORK-NAME> | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа. |
esr(config-route-map-rule)# match ipv6 next-hop object-group <OBJ-GROUP-NETWORK-NAME> | |||
9 | Задать профиль, содержащий IP-адреса маршрутизатора, анонсировавшего маршрут, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match ip route-source object-group <OBJ-GROUP-NETWORK-NAME> | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа. |
esr(config-route-map-rule)# match ipv6 route-source object-group <OBJ-GROUP-NETWORK-NAME> | |||
10 | Задать ACL-группу, для которой должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match access-group <NAME> | <NAME> – имя списка контроля доступа, задается строкой до 31 символа. |
11 | Задать значение атрибута BGP MED в маршруте для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match metric bgp <METRIC> | <METRIC> – значение атрибута BGPMED, принимает значения [0..4294967295]. |
12 | Задать значение атрибута OSPF Metric в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match metric ospf <TYPE> <METRIC> | <TYPE> – тип атрибута OSPF Metric, принимает значение type-1 и type-2; <METRIC> – значение атрибута OSPF Metric, принимает значения [0..65535]. |
13 | Задать значение атрибута RIP Metric в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match metric rip <METRIC> | <METRIC> – значение атрибута RIP Metric, принимает значения [0..16]. |
14 | Задать значение атрибута OSPF Tag в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match tag ospf <TAG> | <TAG> – значение атрибута OSPF Tag, принимает значения [0..4294967295]. |
15 | Задать значение атрибута RIP Tag в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match tag rip <TAG> | <RIP> – значение атрибута RIP Tag, принимает значения [0..65535]. |
16 | Задать значение атрибута BGP AS-Path, которое будет добавляться в начало списка AS-Path (не обязательно). | esr(config-route-map-rule)# action set as-path | <AS-PATH> – список номеров автономных систем, который будет добавлен к текущему значению в маршруте. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295]. <TCACK-ID> – идентификатор vrrp-tracking, при котором будет исполняться указанное действие. Изменяется в диапазоне [1..60]. |
17 | Задать значение атрибута BGP Community, которое будет установлено в маршруте (не обязательно). | esr(config-route-map-rule)# action set community {COMMUNITY-LIST> | no-advertise | no-export } | <COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, где каждая часть принимает значения [1..65535];
|
18 | Задать значение атрибута BGP ExtCommunity, которое будет установлено в маршруте (не обязательно). | esr(config-route-map-rule)# action set extcommunity <EXTCOMMUNITY-LIST> | <EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где KIND – тип extcommunity:
N – номер extcommunity, принимает значения [1..65535]. |
19 | Задать атрибут BGP Next-Hop, который будет установлен в маршруте при анонсировании (не обязательно). | esr(config-route-map-rule)# action set ip bgp-next-hop <ADDR> | <ADDR> – IP-адрес шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-route-map-rule)# action set ipv6 bgp-next-hop <IPV6-ADDR> | <IPV6-ADDR> – IPv6-адрес шлюза, задается в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
20 | Задать значение Next-Hop, которое будет установлено в маршруте, полученном по BGP (не обязательно). | esr(config-route-map-rule)# action set ip next-hop {NEXTHOP> | blackhole | unreachable | prohibit} | <NEXTHOP> – IP-адрес шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];
|
esr(config-route-map-rule)# action set ipv6 next-hop <IPV6-NEXTHOP> | <IPV6-NEXTHOP> – IPv6-адрес шлюза, задается в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
21 | Задать значение атрибута BGP Local Preference, который будет установлен в маршруте (не обязательно). | esr(config-route-map-rule)# action set local-preference <PREFERENCE> | <PREFERENCE> – значение атрибута BGP Local Preference, принимает значения [0..255]. |
22 | Задать значение атрибута BGP Origin, которое будет установлено в маршруте (не обязательно). | esr(config-route-map-rule)# action set origin <ORIGIN> | <ORIGIN> – значение атрибута BGP Origin:
|
23 | Задать значение BGP MED, которое будет установлено в маршруте | esr(config-route-map-rule)# action set metric bgp <METRIC> | <METRIC> – значение атрибута BGP MED, принимает значения [0..4294967295]. |
24 | Добавить фильтрацию и модификацию маршрутов во входящих или исходящих направлениях. | esr(config-bgp-neighbor)# route-map <NAME><DIRECTION> | <NAME> – имя сконфигурированной маршрутной карты; <DIRECTION> – направление:
|
esr(config-ipv6-bgp-neighbor)# route-map <NAME><DIRECTION> |
Пример настройки 1. Route-map для BGP
Задача:
Назначить сommunity для маршрутной информации, приходящей из AS20:
...
Блок кода |
---|
esr(config-bgp-neighbor-af)# route-map from-as20 in |
Пример настройки 2. Route-map для BGP
Задача:
Для всей передаваемой маршрутной информации (с community 2500:25) назначить MED, равный 240, и указать источник маршрутной информации EGP:
...
Блок кода |
---|
esr(config-bgp-neighbor-af)# route-map to-as20 out esr(config-bgp-neighbor-af)# exit esr(config-bgp-neighbor)# exit esr(config-bgp)# exit |
Пример настройки 3. Использование регулярных выражений в Route-map для BGP
Начиная с версии 1.23 доступно использование регулярных выражений в Route-map для контроля распространения маршрутной информации по протоколу BGP. Контроль можно производить по трём атрибутам BGP: AS-path, community, extcommunity. Синтаксис регулярных выражений соответствует стандарту POSIX ERE. В таблице ниже представлены некоторые примеры регулярных выражений.
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать маршрутную карту для фильтрации и модификации IP-маршрутов. | esr(config)# route-map <NAME> | <NAME> – имя маршрутной карты, задаётся строкой до 31 символа. |
2 | Создать правило маршрутной карты. | esr(c onfig-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 символа. |
Пример настройки Route-map на основе списков доступа (Policy-based routing)
Задача:
Распределить трафик между Интернет-провайдерами на основе подсетей пользователей.
...