...
| Блок кода |
|---|
esr# show ip route |
...
Протокол BGP предназначен для обмена информацией о достижимости подсетей между автономными системами (далее АС), то есть группами маршрутизаторов под единым техническим управлением, использующими протокол внутридоменной маршрутизации для определения маршрутов внутри себя и протокол междоменной маршрутизации для определения маршрутов доставки пакетов в другие АС. Передаваемая информация включает в себя список АС, к которым имеется доступ через данную систему. Выбор наилучших маршрутов осуществляется исходя из правил, принятых в сети.
...
| Примечание |
|---|
Для установлении BGP-сессии необходимо в firewall разрешить TCP-порт 179. |
...
Шаг
...
Описание
...
Команда
...
Ключи
...
1
...
Настроить приоритетность протокола BGP-маршрутизации для основной таблицы маршрутизации (необязательно).
...
esr(config)# ip protocols bgp preference <VALUE>
...
<VALUE> – приоритетность протокола, принимает значения в диапазоне [1..255].
Значение по умолчанию: BGP (170).
...
2
...
Настроить емкость таблиц маршрутизации протокола BGP (необязательно при использовании глобальной таблицы маршрутизации).
...
esr(config)# ip protocols bgp max-routes <VALUE>
...
<VALUE> – количество маршрутов протокола BGP в маршрутной таблице, принимает значения в диапазоне:
- для ESR-1000/1200/
1500/1511/1700/
3100/3200/3200L/
3250/3300/3350 – [1..5000000]; - для ESR-20/21/30/31/
100/200 – [1..2500000]; - для ESR-10/12V(F)/15/
15R/15VF – [1..1000000].
Значение по умолчанию для глобальной таблицы маршрутизации:
- для ESR-1000/1200/
1500/1511/1700/
3100/3200/3200L/
3250/3300/3350 – [5000000]; - для ESR-20/21/30/31/
100/200 – [2500000]; - для ESR-10/12V/12VF/
15/15R/15VF –
[1000000].
Значение по умолчанию для VRF: 0.
...
esr(config)# ipv6 protocols bgp max-routes <VALUE>
...
esr(config-vrf)# ip protocols bgp max-routes <VALUE>
...
esr(config-vrf)# ipv6 protocols bgp max-routes <VALUE>
...
3
...
Включить вывод информации о состоянии отношений с соседями для протокола маршрутизации BGP (необязательно).
...
esr(config)# router bgp log-neighbor-changes
...
esr(config)# ipv6 router bgp log-neighbor-changes
...
4
...
Включить ECMP и определяется максимальное количество равноценных маршрутов до цели.
...
esr(config)# router bgp maximum-paths <VALUE>
...
<VALUE> – количество допустимых равноценных маршрутов до цели, принимает значения [1..16].
...
5
...
Выбрать метод фильтрации для передаваемой информации между роутерами (обязательно при конфигурировании eBGP для анонсирования подсетей).
...
5.1.1
...
При выборе метода фильтрации на основе route-map создать список правил, который в дальнейшем будет использоваться для фильтрации анонсируемых и получаемых IP-маршрутов.
...
esr(config)# route-map <NAME>
...
<NAME> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.
...
5.1.2
...
Создать правило.
...
(config-route-map)# rule <ORDER>
...
<ORDER> – номер правила, принимает значения [1 .. 10000].
...
5.1.3
...
Определить список подсетей, которые затрагиваются правилом.
...
esr(config-route-map-rule)#match ip address { <ADDR/LEN> | object-group <OBJ-GRP-NETNAME> } [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]
...
<ADDR/LEN> – IP-адрес и маска подсети, задается в виде:
- AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];
<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:
- X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128];
<OBJ-GRP-NETNAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. При использовании фильтрации по object-group их необходимо создать заранее;
<LEN>, <LEN 1>, <LEN 2> – длина префикса, принимает значения [1..32] в IP-списках префиксов для IPv4 и [1..128] для IPv6;
eq – при указании команды длина префикса должна соответствовать указанной;
le – при указании команды длина префикса должна быть меньше либо соответствовать указанной;
ge – при указании команды длина префикса должна быть больше либо соответствовать указанной;
ge <LEN 1> le <LEN 2> – при указании команды длина префикса должна быть больше либо соответствовать <LEN>, но меньше или равна <LEN1>.
...
esr(config-route-map-rule)#match ipv6 address { <IPV6-ADDR/LEN> | object-group <OBJ-GRP-NETNAME> } [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]
...
5.1.4
...
Разрешить (permit) или запретить (deny) действие для указанных подсетей в правиле.
...
esr(config-route-map-rule)# action {deny | permit}
...
5.2.1
...
При выборе метода фильтрации на основе префикс-листов создать списки IP-подсетей, которые в дальнейшем будут использоваться для фильтрации анонсируемых и получаемых IP-маршрутов.
...
esr(config)# ip prefix-list <NAME>
...
<NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа.
...
esr(config)# ipv6 prefix-list <NAME>
...
5.2.2
...
Разрешить (permit) или запретить (deny) списки префиксов.
...
esr(config-pl)# permit { <ADDR/LEN> | object-group <OBJ-GRP-NETNAME>} [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]
...
<ADDR/LEN> – IP-адрес и маска подсети, задается в виде:
- AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];
<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задаётся в виде:
- X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128];
<OBJ-GRP-NETNAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. При использовании фильтрации по object-group их необходимо создать заранее;
<LEN>, <LEN 1>, <LEN 2> – длина префикса, принимает значения [1..32] в IP-списках префиксов для IPv4 и [1..128] для IPv6;
eq – при указании команды длина префикса должна соответствовать указанной;
le – при указании команды длина префикса должна быть меньше либо соответствовать указанной;
ge – при указании команды длина префикса должна быть больше либо соответствовать указанной;
ge <LEN 1> le <LEN 2> – при указании команды длина префикса должна быть больше либо соответствовать <LEN> но меньше или равна <LEN1>.
...
esr(config-pl)# deny {<ADDR/LEN> | object-group <OBJ-GRP-NETNAME>} [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]
...
esr(config-ipv6-pl)# permit { <IPV6-ADDR/LEN> | object-group <OBJ-GRP-NETNAME>} [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]
...
esr(config-ipv6-pl)# deny {<IPV6-ADDR/LEN> | object-group <OBJ-GRP-NETNAME> } [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]
...
6
...
Добавить BGP-процесс в систему и осуществить переход в режим настройки параметров BGP-процесса.
...
esr(config)# router bgp <AS>
...
<AS> – номер автономной системы процесса, принимает значения [1..4294967295].
...
7
...
Установить идентификатор маршрутизатора.
...
esr(config-bgp)# router-id { <ID> | <IF> | <TUN> }
...
<ID> – идентификатор маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
<IF> – интерфейс, задаётся в виде, описанном в разделе
Типы и порядок именования интерфейсов маршрутизатора.
<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.
...
8
...
Установить идентификатор Route-Reflector кластера, которому принадлежит BGP-процесс маршрутизатора (при необходимости).
...
esr(config-bgp)# cluster-id <ID>
...
<ID> – идентификатор Route-Reflector кластера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
...
9
...
Включить генерацию и отправку маршрута по умолчанию, если маршрут по умолчанию есть в таблице маршрутизации FIB (необязательно).
...
esr(config-bgp)# default-information-originate
...
10
...
Установить временной интервал, по истечении которого идет проверка соединения со встречной стороной (необязательно).
...
esr(config-bgp-af)# timers keeaplive <TIME>
...
<TIME> – время в секундах, принимает значения [1..32767].
Значение по умолчанию: 60 секунд.
...
11
...
Установить временной интервал, по истечении которого встречная сторона считается недоступной (необязательно).
...
esr(config-bgp-af)# timers holdtime <TIME>
...
<TIME> – время в секундах, принимает значения [2..65535].
Значение по умолчанию: 180 секунд.
...
12
...
Установить время минимальной и максимальной задержки, в течение которого запрещено устанавливать соединение, в целях защиты от частых разрывов соединения (необязательно).
...
esr(config-bgp)# timers error-wait <TIME1> <TIME2>
...
<TIME1> – время минимальной задержки в секундах, принимает значения [1..65535];
<TIME2> – время максимальной задержки в секундах, принимает значения [1..65535].
...
13
...
Определить глобальный алгоритм аутентификации с соседями (при необходимости).
...
esr(config-bgp)# authentication algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм шифрования:
- md5 – пароль шифруется по алгоритму md5.
Значение по умолчанию: шифрование не используется.
...
14
...
Установить глобальный пароль для аутентификации с соседями (используется совместно с "authentication algorithm").
...
esr(config-bgp)# authentication key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> }
...
<CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов;
<ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...).
...
15
...
Активировать BGP-процесс.
...
esr(config-bgp)# enable
...
16
...
Определить тип конфигурируемой маршрутной информации и перейти в данный режим настройки.
...
esr(config-bgp)# address-family { ipv4 | ipv6 } unicast
...
ipv 4 – семейство IPv4;
ipv 6 – семейство IPv6.
...
17
...
Включить анонсирование маршрутов процессом BGP полученных альтернативным образом (при необходимости).
...
esr(config-bgp-af)# redistribute static [ route-map <NAME> ]
...
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа.
...
esr(config-bgp-af)# redistribute connected [ route-map <NAME> ]
...
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых напрямую подключенных подсетей, задаётся строкой до 31 символа.
...
esr(config-bgp-af)# redistribute rip [ route-map <NAME> ]
...
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых RIP-маршрутов, задаётся строкой до 31 символа.
...
esr(config-bgp-af)# redistribute ospf <ID> <ROUTE-TYPE 1> [<ROUTE-TYPE 2>] [<ROUTE-TYPE 3>] [<ROUTE-TYPE 4>] [ route-map <NAME> ]
...
<ID> – номер процесса, может принимать значение {1..65535};
<ROUTE-TYPE> – тип маршрута:
- intra - area – анонсирование маршрутов OSPF-процесса в пределах зоны;
- inter - area – анонсирование маршрутов OSPF-процесса между зонами;
- external 1 – анонсирование внешних маршрутов OSPF-формата 1;
- external 2 – анонсирование внешних маршрутов OSPF-формата 2;
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа.
...
esr(config-bgp-af)# redistribute bgp <AS> [ route-map <NAME> ]
...
<AS> – номер автономной системы, может принимать значения [1..4294967295];
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа.
...
18
...
Включить анонсирование подсетей.
...
esr(config-bgp-af)# network <ADDR/LEN> [ route-map <NAME> ]
...
<ADDR/LEN> – адрес подсети, указывается в одном из следующих формате:
- AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];
- X:X:X:X::X/EE – IPv6-адрес и маска подсети, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128].
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа.
...
19
...
Осуществить выход из режима глобального конфигурирования анонсов маршрутной информации процесса BGP
...
esr(config-bgp-af)# exit
...
20
...
Добавить BGP-соседа и осуществить переход в режим настройки параметров BGP-соседа.
...
esr(config-bgp)# neighbor <ADDR>|<IPV6-ADDR>
...
<ADDR> – IP-адрес соседа, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];
<IPV6-ADDR> – IPv6-адрес клиента, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF].
...
21
...
Задать описание соседа (необязательно).
...
esr(config-bgp-neighbor)# description <DESCRIPTION>
...
<DESCRIPTION> – описание соседа, задаётся строкой до 255 символов.
...
22
...
Установить временной интервал, по истечении которого идет проверка соединения со встречной стороной
(необязательно).
...
esr(config-bgp-neighbor)# timers keepalive <TIME>
...
<TIME> – время в секундах, принимает значения [1..65535].
Значение по умолчанию: 60 секунд.
...
23
...
Установить временной интервал, по истечении которого встречная сторона считается недоступной (необязательно).
...
esr(config-bgp- neighbor)# timers holdtime <TIME>
...
<TIME> – время в секундах, принимает значения [1..65535].
Значение по умолчанию: 180 секунд.
...
24
...
Установить время минимальной и максимальной задержки, в течение которого запрещено устанавливать соединение, в целях защиты от частых разрывов соединения (необязательно).
...
esr(config-bgp)# timers error-wait <TIME1> <TIME2>
...
<TIME1> – время минимальной задержки в секундах, принимает значения [1..65535];
<TIME2> – время максимальной задержки в секундах, принимает значения [1..65535].
Значение по умолчанию: 60 и 300 секунд.
...
25
...
Установить номер автономной системы BGP-соседа.
...
esr(config-bgp-neighbor)# remote-as <AS>
...
<AS> – номер автономной системы, принимает значения [1..4294967295].
...
26
...
Разрешить подключение к соседям, которые находятся не в напрямую подключенных подсетях (необязательно).
...
esr(config-bgp-neighbor)# ebgp-multihop <NUM>
...
<NUM> – максимальное количество хопов при установке EBGP (используется для TTL).
...
27
...
Указать, что BGP-сосед является Route-Reflector клиентом (необязательно).
...
esr(config-bgp-neighbor)# route-reflector-client
...
28
...
Задать IP/IPv6-адрес маршрутизатора, который будет использоваться в качестве IP/IPv6-адреса источника в отправляемых обновлениях маршрутной информации BGP (необязательно).
...
esr(config-bgp-neighbor)# update-source { <ADDR> | <IPV6-ADDR> | <IF> | <TUN> }
...
<ADDR> – IP-адрес источника, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];
<IPV6-ADDR> – IPv6-адрес источника, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF].
<IF> – интерфейс, задаётся в виде, описанном в разделе
Типы и порядок именования интерфейсов маршрутизатора.
<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.
...
29
...
Включить режим, в котором разрешен приём маршрутов в BGP-атрибуте, AS Path которых содержит номера автономной системы процесса (необязательно).
...
esr(config-bgp-neighbor)# allow-local-as <NUMBER>
...
<NUMBER> – пороговое число вхождений номера автономной системы процесса в атрибуте AS Path, при которых маршрут будет принят, диапазон допустимых значений [1..10].
...
32
...
Определить алгоритм аутентификации с соседом (необязательно).
...
esr(config-bgp-neighbor)# authentication algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм шифрования:
md5 – пароль шифруется по алгоритму md5.
...
33
...
Установить пароль для аутентификации с соседом (необязательно).
...
esr(config-bgp-neighbor)# authentication key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> }
...
<CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов;
<ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...).
...
34
...
Сделать соседство активным.
...
esr(config-bgp-neighbor)# enable
...
35
...
Определить тип конфигурируемой маршрутной информации соседа и перейти в данный режим настройки.
...
esr(config-bgp-neighbor)# address-family { ipv4 | ipv6 | vpnv4 } unicast
...
ipv 4 – семейство IPv4;
ipv 6 – семейство IPv6;
vpnv4 – семейство VPNv4.
...
36
...
При выборе режима фильтрации на основе префикс-листов добавить фильтрацию подсетей во входящих или исходящих обновлениях (обязательно при конфигурировании eBGP для анонсирования подсетей).
...
esr(config-bgp-neighbor-af)# prefix-list <PREFIX-LIST-NAME> { in | out }
...
<PREFIX-LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа.
in – фильтрация входящих маршрутов;
out – фильтрация анонсируемых маршрутов.
...
37
...
Задать режим, в котором BGP-соседу в обновлении на ряду с другими маршрутами всегда отправляется маршрут по умолчанию. (необязательно, отсутствует для vpnv4).
...
esr(config-bgp-neighbor-af)# default-originate
...
38
...
Задать режим, в котором все обновления отправляются BGP-соседу с указанием в качестве next-hop IP-адреса исходящего интерфейса локального маршрутизатора. По умолчанию изменяет next-hop только eBGP-маршрутов (необязательно, отсутствует для vpnv4).
...
esr(config-bgp-neighbor-af)# next-hop-self [ all ]
...
all – заменить next-hop для eBGP-, iBGP-маршрутов.
...
39
...
Задать режим, в котором для всех маршрутов, полученных от iBGP-пиров, атрибут next-hop не будет изменен при отправке BGP-пирам.
...
esr(config-bgp-neighbor-af)# next-hop-unchanged
...
40
...
Определить приоритетность маршрутов, получаемых от соседа (необязательно).
...
esr(config-bgp-neighbor-af)# preference <VALUE>
...
<VALUE> – приоритетность маршрутов соседа, принимает значения в диапазоне [1..255].
Значение по умолчанию: 170.
...
41
...
Задать режим, в котором перед отправлением обновления из BGP-атрибута AS Path маршрутов удаляются приватные номера автономных систем (в соответствии с RFC 6996) (необязательно, отсутствует для vpnv4).
...
esr(config-bgp-neighbor-af)# remove-private-as [ { all | nearest | replace } ]
...
all – удалить все частные номера AS из AS-path;
nearest – заменить ближайшие частные AS в AS-path на рядом стоящую публичную AS;
replace – заменить все частные номера AS номером текущего процесса BGP.
Значение по умолчанию: all.
...
Включить обмен маршрутной информацией.
...
esr(config-bgp-neighbor-af)# enable
...
esr(config-bgp)# aggregate-address { <ADDR/LEN> | <IPV6-ADDR/LEN }
...
<ADDR/LEN> – IP-адрес и маска подсети, задается в виде:
- AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];
<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:
- X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128];
...
<ADDR/LEN> – IP-адрес и маска подсети, задается в виде:
- AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];
<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:
- X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128].
...
<AS-PATH> – список номеров автономных систем, задается в виде AS-AS,AS,AS-AS, принимает значения [1..4294967295].
| Подсказка |
|---|
Часто бывает, особенно при конфигурировании iBGP, что в одном bgp-процессе необходимо настроить несколько bgp neighbor с одинаковыми параметрами. Во избежание избыточности конфигурации рекомендуется использовать bgp peer-group, в которой возможно описать общие параметры, а в конфигурации bgp neighbor просто указать причастность к bgp peer-group. |
Пример настройки
Задача:
Настроить BGP-протокол на маршрутизаторе R3 со следующими параметрами:
- собственные подсети: 80.66.0.0/24, 80.66.16.0/24;
- анонсирование подсетей, подключенных напрямую;
- собственная AS 2500;
- первое соседство – подсеть 219.0.0.0/30, собственный IP-адрес 219.0.0.1, IP-адрес соседа 219.0.0.2, AS2500;
- второе соседство – подсеть 185.0.0.0/30, собственный IP-адрес 185.0.0.1, IP-адрес соседа 185.0.0.2, AS20.
| Scroll Pagebreak |
|---|
Решение:
Сконфигурируем необходимые сетевые интерфейсы:
| Блок кода |
|---|
esr-R3(config)# interface gigabitethernet 1/0/1
esr-R3(config-if-gi)# ip address 185.0.0.1/30
esr-R3(config-if-gi)# exit
esr-R3(config)# interface gigabitethernet 1/0/2
esr-R3(config-if-gi)# ip address 219.0.0.1/30
esr-R3(config-if-gi)# exit
esr-R3(config)# interface gigabitethernet 1/0/3
esr-R3(config-if-gi)# ip address 80.66.0.1/24
esr-R3(config-if-gi)# exit
esr-R3(config)# interface gigabitethernet 1/0/4
esr-R3(config-if-gi)# ip address 80.66.16.1/24
esr-R3(config-if-gi)# exit |
Сконфигурируем firewall для приема маршрутизатором BGP-трафика из зоны безопасности WAN:
| Блок кода |
|---|
esr-R3(config)# object-group service og_bgp
esr-R3(config-object-group-service)# port-range 179
esr-R3(config-object-group-service)# exit
esr-R3(config)# security zone wan
esr-R3(config-zone)# exit
esr-R3(config)# security zone-pair wan self
esr-R3(config-zone-pair)# rule 100
esr-R3(config-zone-pair-rule)# match protocol tcp
esr-R3(config-zone-pair-rule)# match destination-port object-group og_bgp
esr-R3(config-zone-pair-rule)# action permit
esr-R3(config-zone-pair-rule)# enable
esr-R3(config-zone-pair-rule)# exit
esr-R3(config-zone-pair)# exit |
И укажем принадлежность интерфейсов к зоне безопасности:
| Блок кода |
|---|
esr-R3(config)# interface gigabitethernet 1/0/1
esr-R3(config-if-gi)# security-zone wan
esr-R3(config-if-gi)# exit
esr-R3(config)# interface gigabitethernet 1/0/2
esr-R3(config-if-gi)# security-zone wan
esr-R3(config-if-gi)# exit |
| Scroll Pagebreak |
|---|
Создадим route-map, который будет использоваться в дальнейшем при настройке разрешающих анонсов роутерам из другой AS:
| Блок кода |
|---|
esr-R3(config)# route-map bgp-general
esr-R3(config-route-map)# rule 1
esr-R3(config-route-map-rule)# match ip address 80.66.0.0/24
esr-R3(config-route-map-rule)# action permit
esr-R3(config-route-map-rule)# exit
esr-R3(config-route-map)# rule 2
esr-R3(config-route-map-rule)# match ip address 80.66.16.0/24
esr-R3(config-route-map-rule)# action permit
esr-R3(config-route-map-rule)# exit
esr-R3(config-route-map)# exit |
Создадим BGP процесс для AS 2500 и войдем в режим конфигурирования параметров процесса:
| Блок кода |
|---|
esr(config)# router bgp 2500 |
Сконфигурируем анонсирование подсетей, подключенных напрямую:
| Блок кода |
|---|
esr-R3(config-bgp)# address-family ipv4 unicast
esr-R3(config-bgp-af)# redistribute connected
esr-R3(config-bgp-af)# exit |
Создадим соседство с роутером R2 по iBGP:
| Блок кода |
|---|
esr-R3(config-bgp)# neighbor 219.0.0.2
esr-R3(config-bgp-neighbor)# remote-as 2500
esr-R3(config-bgp-neighbor)# enable |
И включим обмен IPv4-маршрутами:
| Блок кода |
|---|
esr-R3(config-bgp-neighbor)# address-family ipv4 unicast
esr-R3(config-bgp-neighbor-af)# enable
esr-R3(config-bgp-neighbor-af)# exit
esr-R3(config-bgp-neighbor)# exit |
Создадим соседство с роутером R1 по eBGP:
| Блок кода |
|---|
esr-R3(config-bgp)# neighbor 185.0.0.2
esr-R3(config-bgp-neighbor)# remote-as 20
esr-R3(config-bgp-neighbor)# enable |
И включим обмен IPv4-маршрутами, разрешив необходимые маршруты для анонса при помощи заранее подготовленного route-map:
| Блок кода |
|---|
esr-R3(config-bgp-neighbor)# address-family ipv4 unicast
esr-R3(config-bgp-neighbor-af)# route-map bgp-general out
esr-R3(config-bgp-neighbor-af)# enable
esr-R3(config-bgp-neighbor-af)# exit
esr-R3(config-bgp-neighbor)# exit |
Включим работу протокола:
| Блок кода |
|---|
esr-R3(config-bgp)# enable
esr-R3(config-bgp)# exit |
Информацию о BGP-пирах можно посмотреть командой:
| Блок кода |
|---|
esr# show bgp neighbors |
Таблицу маршрутов протокола BGP можно просмотреть с помощью команды:
| Блок кода |
|---|
esr# show bgp ipv4 unicast |
Политика выбора лучшего маршрута в протоколе BGP
В процессе работы BGP обычно вычисляет один лучший маршрут до каждой полученной подсети. Если нет более приоритетного маршрута, полученного при помощи другого протокола маршрутизации до этой подсети, то маршрут устанавливается в таблицу маршрутизации.
| Примечание |
|---|
Если включен механизм ECMP ( router bgp maximum-paths .. ), то в таблицу маршрутизации могут попасть до 16 активных маршрутов до одной подсети. При анонсировании BGP пирам будут использоваться атрибуты лучшего маршрута. |
Ниже приведен алгоритм выбора лучшего маршрута в протоколе BGP:
| Информация |
|---|
Алгоритм применяется для следующих address family: unicast IPv4, unicast IPv6, VPNv4 unicast, VPLS. |
| Scroll Pagebreak |
|---|
...
Для VPNv4 маршрутов выбор лучшего маршрута происходит следующим образом:
Сначала выбор лучшего маршрута происходит в рамках своего RD, затем в рамках VRF, куда он попадет в соответствии со своим RT.
Прежде всего проверяется доступность next-hop-a у маршрута. Next-hop считается доступным, если до него можно определить connected-маршрут.
- Маршрут, помеченный как «stale», является менее приоритетным, чем маршрут без таковой метки. Маршрут помечается как «stale» в процессе работы технологии LLGR;
- Сравнивается значение атрибута Weight – лучшим становится маршрут, имеющий большее значение;
- Сравнивается значение атрибута Local preferences – лучшим становится маршрут, имеющий большее значение;
- Сравнивается длина AS-path – маршрут с меньшим количеством hop-ов становится лучшим;
- Сравнивается значение атрибута Origin – IGP является самым приоритетным. EGP приоритетнее, чем Incomplete;
- Для маршрутов, принятых от одной и той же автономной системы, сравнивается значение атрибута multiple exit discriminator (MED) – наименьшее значение атрибута имеет больший приоритет;
- Маршрут, полученный от EBGP-пира, имеет больший приоритет по сравнению с маршрутом, полученным от IBGP-пира;
- Сравнивается IGP-метрика сети, через который доступен маршрут – наименьшее значение имеет больший приоритет;
8.1 Если включен ECMP, то дальнейших сравнений не производится и маршрут (multipath) попадет в таблицу маршрутизации; - Сравнивается параметр Router-Id – маршрут, полученный от BGP-соседа с наименьшим Router-Id, является приоритетным. При наличии атрибута Originator ID будет учитываться Router-id источника маршрута;
- Сравнивается количество адресов в Cluster list – маршрут, имеющий наименьшее количество адресов становится лучшим;
- Сравниваются адреса BGP-пиров – маршрут, полученный от BGP-пира с наименьшим из адресов, является приоритетным.
В выводе маршрутной информации для определенного префикса лучший маршрут будет отмечен как «Best»:
| Блок кода |
|---|
ESR# show bgp ipv4 unicast 192.0.2.0/24
192.0.2.0/24 via 100.64.28.1 on gi1/0/1.2800 [bgp65514 2022-05-22] (65041i)
Administrative Distance: 170
Type: unicast
Origin: IGP
AS PATH: 65054 65055 65056 65077 65098 65059
Next Hop: 100.64.28.1
Local Preference: 100
Community: (3356:2) (3356:22) (3356:86) (3356:501) (3356:666) (3356:903) (3356:2065)
(12389:6) (65000:64990)
Weight: 0
Valid
192.0.2.0/24 via 101.7.0.1 on gi1/0/1.2800 [bgp65514 2022-05-22] (65041i)
Administrative Distance: 170
Type: unicast
Origin: IGP
AS PATH: 65020 65030
Next Hop: 101.7.0.1
Local Preference: 200
Community: (3356:2) (3356:22) (3356:86) (3356:501) (3356:666) (3356:903) (3356:2065)
(12389:6) (65000:64990)
Weight: 0
Valid,Best
|
| Scroll Pagebreak |
|---|
Условное анонсирование маршрутной информации (Conditional Advertisement)
В обычных сценариях BGP анонсирует все лучшие маршруты из своей BGP RIB. Иногда необходимо более гибкое управление анонсируемой маршрутной информацией. В этом случае рекомендуется использование функции Conditional advertisement, которая позволяет описать условия, при совпадении которых будет анонсироваться (или наоборот отзываться) необходимая маршрутная информация.
| Информация |
|---|
В текущей реализации функционал поддержан для IPv4 ( AFI -1 , SAFI -1), IPv6 (AFI -2 , SAFI -1) маршрутов. Реализована поддержка как для GRT, так и в VRF. |
Для работы Conditional advertisement необходимо выполнить следующие шаги:
1. Описать маршрутные карты сondition-map и advertise-map:
- Condition-map – это карта, в которой необходимо описать маршрутную информацию для проверки. Планировщик будет запускаться каждые 60 секунд для проверки наличия в BGP RIB маршрутной информации, описанной в этой карте;
- Advertise-map – это карта, в который необходимо описать маршрутную информацию, которая будет анонсироваться при выполнении условий, описанных в condition-map.
2. В контексте настройки BGP-соседа необходимо задать условие, при котором будет анонсироваться маршрутная информация, описанная в advertise-map. Рассмотрим этот пункт на примере ниже:
Условие EXIST-MAP:
- Если R2 содержит в BGP RIB маршрут 192.0.2.255/32, то R2 анонсирует в сторону R3 маршрут 198.51.100.0/24 (пример на рисунке ниже);
- Если R2 не содержит в BGP RIB маршрут 192.0.2.255/32, то анонсирование маршрута 198.51.100.0/24 соседу R3 не происходит.
| Блок кода |
|---|
route-map CONDITION
rule 1
match ip address 192.0.2.255/32
exit
exit
route-map ADVERTISE
rule 1
match ip address 198.51.100.0/24
exit
exit
router bgp 65540
neighbor R3
description "To R3"
address-family ipv4 unicast
advertise-map ADVERTISE exist-map CONDITION
enable
exit
|
Условие not EXIST-MAP:
- Если R2 содержит в BGP RIB маршрут 192.0.2.255/32, то анонсирование маршрута 198.51.100.0/24 соседу R3 не происходит;
- Если R2 не содержит в BGP RIB маршрут 192.0.2.255/32, то R2 анонсирует в сторону R3 маршрут 198.51.100.0/24 (пример на рисунке ниже).
| Блок кода |
|---|
route-map CONDITION
rule 1
match ip address 192.0.2.255/32
exit
exit
route-map ADVERTISE
rule 1
match ip address 198.51.100.0/24
exit
exit
router bgp 65540
neighbor R3
description "To R3"
address-family ipv4 unicast
advertise-map ADVERTISE not exist-map CONDITION
enable
exit
|
Ниже приведена диаграмма состояний для условия EXIST-MAP:
| Scroll Pagebreak |
|---|
После активации функции Conditional advertisement находится в состоянии «Uninitialized». На этом этапе анонсируется вся разрешенная маршрутная информация, происходит инициализация планировщика для дальнейшей работы. Время нахождения в этом состоянии – 60 секунд:
| Блок кода |
|---|
vESR# sh bgp neighbors
BGP neighbor is 192.0.2.2
BGP state: Established
Type: Static neighbor
Neighbor address: 192.0.2.2
Neighbor AS: 202766
Neighbor ID: 192.0.2.2
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 192.0.2.1
Weight: 0
Hold timer: 136/180
Keepalive timer: 35/60
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Incoming route-map: IN
Outgoing route-map: OUT
Advertise-map: ADVERTISE
Condition-map: CONDITION
Conditional advertisement status: Uninitialized <-----
Uptime: 12 s
|
| Scroll Pagebreak |
|---|
Далее планировщик проверяет условие EXIST-MAP для соответствующей condition-map. Если условие истинно, происходит анонсирование (обновление) маршрутной информации в соответствии с правилами, заданными в advertise-map. Cостояние статуса меняется на «Advertise». Время нахождения в этом состоянии – 60 секунд:
| Блок кода |
|---|
vesr# sh bgp neighbors
BGP neighbor is 192.0.2.2
BGP state: Established
Type: Static neighbor
Neighbor address: 192.0.2.2
Neighbor AS: 202766
Neighbor ID: 192.0.2.2
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 192.0.2.1
Weight: 0
Hold timer: 136/180
Keepalive timer: 41/60
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Incoming route-map: IN
Outgoing route-map: OUT
Advertise-map: ADVERTISE
Condition-map: CONDITION
Conditional advertisement status: Advertise <----
Uptime: 1119 s
|
Если условие EXIST-MAP для соответствующей сondition-map не выполняется, происходит отзыв маршрутной информации, описанной в соответствующей advertise-map. Cостояние статуса меняется на «Withdrawal». Время нахождения в этой стадии – 60 секунд:
| Блок кода |
|---|
vESR# sh bgp neighbors
BGP neighbor is 192.0.2.2
BGP state: Established
Type: Static neighbor
Neighbor address: 192.0.2.2
Neighbor AS: 202766
Neighbor ID: 192.0.2.2
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 192.0.2.1
Weight: 0
Hold timer: 136/180
Keepalive timer: 41/60
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Incoming route-map: IN
Outgoing route-map: OUT
Advertise-map: ADVERTISE
Condition-map: CONDITION
Conditional advertisement status: Withdrawal <----
Uptime: 1119 s
|
...
Порядок выполнения политик фильтрации маршрутной информации:
1. Выполняется политика, заданная при редистрибуции маршрутов (AF_POLICY_OUT);
2. Применяется advertise-map, описанная в Conditional advertisement (advertise-map ADVERTISE ..);
3. Обрабатывается политика фильтрации исходящей маршрутной информации (route-map OUT out).
| Блок кода |
|---|
route-map ADVERTISE
rule 1
match ip address 10.100.0.255/32
action set local-preference 101
action set metric bgp 78
exit
exit
route-map OUT
rule 1
action set local-preference 200
exit
exit
route-map CONDITION
rule 1
match ip address 10.100.0.255/32
exit
exit
route-map AF_POLICY_OUT
rule 1
match ip address 10.100.0.255/32
action set community 65:65
exit
exit
router bgp 64512
neighbor 192.0.2.2
remote-as 64512
address-family ipv4 unicast
route-map OUT out <----- 3
advertise-map ADVERTISE exist-map CONDITION <----- 2
enable
exit
enable
exit
address-family ipv4 unicast
redistribute static route-map AF_POLICY_OUT <---- 1
exit
enable
exit
// Вывод атрибутов BGP маршрута после прохождения всех политик:
show bgp ipv4 unicast 10.100.0.255/32
Administrative Distance: 170
Type: unicast
Origin: Incomplete
AS path: --
Next Hop: 192.168.1.1
Output Label: --
Input Label: imp-null
Local Preference: 200
MED: 78
Cluster List: --
Community: 65:65
EXT Community: --
Weight: -- |
Алгоритм настройки
...
<ADVERTISE> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.
<CONDITION> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.
<EXIST-MAP> – условие проверки: если маршруты, описанные в condition-map, присутствуют в BGP RIB, то происходит анонсирование маршрутов, описанных в advertise-map.
<NOT-EXIST-MAP> – условие проверки: если маршруты, описанные в condition-map, отсутствуют в BGP RIB, то происходит анонсирование маршрутов, описанных в advertise-map.
Пример настройки
Задача:
ESR получает маршрут по умолчанию от двух провайдеров – ISP «Zero» и «ISP One». Дополнительно ISP «Zero» анонсирует маршрут 10.1.1.1/32, наличие которого в BGP RIB в дальнейшем и будет отслеживаться.
Необходимо в случае присутствия маршрута 10.1.1.1/32 в BGP RIB анонсировать маршрут 198.51.100.0/24 провайдеру ISP «Zero», если маршрут 10.1.1.1/32 отсутствует в BGP RIB – анонсировать 198.51.100.0/24 провайдеру ISP «One».
Решение:
Сконфигурируем необходимые сетевые интерфейсы на каждом устройстве в сети:
| Блок кода |
|---|
ISP-ZERO(config)# interface gigabitethernet 1/0/1
ISP-ZERO(config-if-gi)# ip firewall disable
ISP-ZERO(config-if-gi)# ip address 192.0.2.1/30
ISP-ZERO(config-if-gi)# do commit
ISP-ZERO(config-if-gi)# do confirm |
| Блок кода |
|---|
ESR(config)# interface gigabitethernet 1/0/1
ESR(config-if-gi)# ip firewall disable
ESR(config-if-gi)# description "FROM ISP-ZERO"
ESR(config-if-gi)# ip address 192.0.2.2/30
ESR(config-if-gi)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)# ip firewall disable
ESR(config-if-gi)# ip address 192.0.2.5/30
ESR(config-if-gi)# description "TO ISP-ONE"
ESR(config-if-gi)# exit
ESR(config)# do commit
ESR(config)# do confirm
|
| Блок кода |
|---|
ISP-ONE(config)# interface gigabitethernet 1/0/1
ISP-ONE(config-if-gi)# ip firewall disable
ISP-ONE(config-if-gi)# ip address 192.0.2.6/30
ISP-ONE(config-if-gi)# do commit
ISP-ONE(config-if-gi)# do confirm |
| Scroll Pagebreak |
|---|
Произведем настройку BGP:
| Блок кода |
|---|
ISP-ZERO(config)# ip route 10.1.1.1/32 blackhole
ISP-ZERO(config)# ip route 0.0.0.0/0 blackhole
ISP-ZERO(config)# route-map OUT
ISP-ZERO(config-route-map)# rule 1
ISP-ZERO(config-route-map-rule)# exit
ISP-ZERO(config-route-map)# exit
ISP-ZERO(config)# router bgp 64515
ISP-ZERO(config-bgp)# neighbor 192.0.2.2
ISP-ZERO(config-bgp-neighbor)# remote-as 64516
ISP-ZERO(config-bgp-neighbor)# enable
ISP-ZERO(config-bgp-neighbor)# address-family ipv4 unicast
ISP-ZERO(config-bgp-neighbor-af)# route-map OUT out
ISP-ZERO(config-bgp-neighbor-af)# enable
ISP-ZERO(config-bgp-neighbor-af)# exit
ISP-ZERO(config-bgp-neighbor)# exit
ISP-ZERO(config-bgp)# enable
ISP-ZERO(config-bgp)# address-family ipv4 unicast
ISP-ZERO(config-bgp-af)# redistribute static
ISP-ZERO(config-bgp-af)# do commit
ISP-ZERO(config-bgp-af)# do confirm |
| Блок кода |
|---|
ESR(config)# route-map OUT
ESR(config-route-map)# rule 1
ESR(config-route-map-rule)# match ip address 198.51.100.0/24
ESR(config-route-map-rule)# exit
ESR(config-route-map)# exit
ESR(config)# router bgp 64516
ESR(config-bgp)# neighbor 192.0.2.1
ESR(config-bgp-neighbor)# remote-as 64515
ESR(config-bgp-neighbor)# address-family ipv4 unicast
ESR(config-bgp-neighbor-af)# route-map OUT out
ESR(config-bgp-neighbor-af)# enable
ESR(config-bgp-neighbor-af)# exit
ESR(config-bgp-neighbor)# enable
ESR(config-bgp-neighbor)# exit
ESR(config-bgp)# neighbor 192.0.2.6
ESR(config-bgp-neighbor)# remote-as 64517
ESR(config-bgp-neighbor)# address-family ipv4 unicast
ESR(config-bgp-neighbor-af)# enable
ESR(config-bgp-neighbor-af)# route-map OUT out
ESR(config-bgp-neighbor-af)# exit
ESR(config-bgp-neighbor)# enable
ESR(config-bgp-neighbor)# exit
ESR(config-bgp)# enable
ESR(config-bgp)# do commit
ESR(config-bgp)# do confirm |
| Блок кода |
|---|
ISP-ONE(config)# ip route 0.0.0.0/0 blackhole
ISP-ONE(config)# route-map OUT
ISP-ONE(config-route-map)# rule 1
ISP-ONE(config-route-map-rule)# exit
ISP-ONE(config-route-map)# exit
ISP-ONE(config)# router bgp 64517
ISP-ONE(config-bgp)# neighbor 192.0.2.5
ISP-ONE(config-bgp-neighbor)# address-family ipv4 unicast
ISP-ONE(config-bgp-neighbor-af)# route-map OUT out
ISP-ONE(config-bgp-neighbor-af)# enable
ISP-ONE(config-bgp-neighbor-af)# exit
ISP-ONE(config-bgp-neighbor)# remote-as 64516
ISP-ONE(config-bgp-neighbor)# enable
ISP-ONE(config-bgp-neighbor)# exit
ISP-ONE(config-bgp)# enable
ISP-ONE(config-bgp)# address-family ipv4 unicast
ISP-ONE(config-bgp-af)# redistribute static
ISP-ONE(config-bgp-af)# do commit
ISP-ONE(config-bgp-af)# do confirm |
Опишем advertise и condition maps на ESR:
| Блок кода |
|---|
ESR(config)# ip route 198.51.100.0/24 blackhole
ESR(config)# route-map CONDITION
ESR(config-route-map)# rule 1
ESR(config-route-map-rule)# match ip address 10.1.1.1/32
ESR(config-route-map-rule)# exit
ESR(config-route-map)# exit
ESR(config)# route-map ADVERTISE
ESR(config-route-map)# rule 1
ESR(config-route-map-rule)# match ip address 198.51.100.0/24
ESR(config-route-map-rule)# exit
ESR(config-route-map)# exit
ESR(config)# router bgp 64516
ESR(config-bgp)# address-family ipv4 unicast
ESR(config-bgp-af)# network 198.51.100.0/24
ESR(config-bgp-af)# do commit
ESR(config-bgp-af)# do confirm |
Активируем функцию Сonditional advertisement, применив ранее созданные маршрутные карты:
| Блок кода |
|---|
ESR(config)# router bgp 64516
ESR(config-bgp)# neighbor 192.0.2.6
ESR(config-bgp-neighbor)# address-family ipv4 unicast
ESR(config-bgp-neighbor-af)# advertise-map ADVERTISE not exist-map CONDITION
ESR(config-bgp-neighbor-af)# do commit
ESR(config-bgp-neighbor-af)# do confirm |
| Scroll Pagebreak |
|---|
Проверим корректность настройки:
| Блок кода |
|---|
//Проверяем наличие маршрута 10.1.1.1/32 в BGP RIB
ESR# sh bgp ipv4 unicast 10.1.1.1/32
10.1.1.1/32 via 192.0.2.1 on gi1/0/1 [bgp64516 07:07:59] (64515?)
Administrative Distance: 170
Type: unicast
Origin: Incomplete
AS path: 64515
Next Hop: 192.0.2.1
Output Label: --
Input Label: --
Local Preference: 100
MED: --
Cluster List: --
Community: --
EXT Community: --
Weight: 0
Valid, Best
// Проверяем статус сonditional advertisement и отсутствие анонса 198.51.100.0/24 провайдеру ISP "One"
ESR# sh bgp ipv4 unicast neighbor 192.0.2.6 advertise-routes
ESR# sh bgp neighbors 192.0.2.6
BGP neighbor is 192.0.2.6
BGP state: Established
Type: Static neighbor
Neighbor address: 192.0.2.6
Neighbor AS: 64517
Neighbor ID: 192.0.2.6
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 192.0.2.5
Weight: 0
Hold timer: 99/180
Keepalive timer: 4/60
RR client: No
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Outgoing route-map: OUT
Advertise-map: ADVERTISE
Condition-map: CONDITION
Conditional advertisement status: Withdrawal
Preference: 170
Remove private AS: No
Next-hop self: No
Next-hop unchanged: No
Uptime: 1300 s |
Настройка завершена.
| Scroll Pagebreak |
|---|
Быстрая деактивация пиринговых сессий
В случае когда возникновения проблем между соседями BGP, по умолчанию BGP ожидает 180 секунд (3 таймера keepalive) для того чтобы разорвать соседство и отозвать все маршруты полученные от неактивного соседа. Для обхода данной проблемы существуют методы, которые помогают быстрее обнаружить проблемы в работе сети и произвести отключение соседа, улучшая время реакции на изменения смежности с соседями BGP. Рассмотрим существующие реализации этих методов.
Метод на основе протокола BFD
BFD (Bidirectional Forwarding Detection) — протокол для быстрого обнаружения проблем на канальном уровне. В текущей реализации для его работы необходима настройка с обеих сторон (на каждом BGP-пире).
По умолчанию BFD-сессия устанавливается в следующем режиме:
...
Алгоритм настройки
...
Scroll Pagebreak
Пример настройки
Задача:
Необходимо настроить eBGP между маршрутизаторами R1, R2 и включить протокол BFD.
Решение:
На R1 предварительно необходимо настроить интерфейс Gi1/0/1:
| Блок кода |
|---|
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# ip address 10.0.0.1/24 |
Следующим шагом на R1 настроим eBGP и включим BFD:
| Блок кода |
|---|
esr(config)# router bgp 100
esr(config-bgp)# neighbor 10.0.0.2
esr(config-bgp-neighbor)# remote-as 200
esr(config-bgp-neighbor)# update-source 10.0.0.1
esr(config-bgp-neighbor)# fall-over bfd
esr(config-bgp-neighbor)# enable
esr(config-bgp-neighbor)# exit
esr(config-bgp)# enable
esr(config-bgp)# exit |
На R2 предварительно необходимо настроить интерфейс Gi1/0/1:
| Блок кода |
|---|
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# ip address 10.0.0.2/24 |
Далее на R2 настроим eBGP и включим BFD:
| Блок кода |
|---|
esr(config)# router bgp 200
esr(config-bgp)# neighbor 10.0.0.1
esr(config-bgp-neighbor)# remote-as 100
esr(config-bgp-neighbor)# update-source 10.0.0.2
esr(config-bgp-neighbor)# fall-over bfd
esr(config-bgp-neighbor)# enable
esr(config-bgp-neighbor)# exit
esr(config-bgp)# enable
esr(config-bgp)# exit |
Scroll Pagebreak
Настройка завершена. Для просмотра оперативной информации можно использовать следующие команды:
| Блок кода |
|---|
esr# sh bgp neighbors
BGP neighbor is 10.0.0.2
BGP state: Established <---- BGP сессия установлена
Type: Static neighbor
Neighbor address: 10.0.0.2
Neighbor AS: 200
Neighbor ID: 10.0.0.2
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 10.0.0.1
Weight: 0
Hold timer: 144/180
Keepalive timer: 29/60
Uptime (d,h:m:s): 00,00:00:20
BFD address: 10.0.0.2
BFD state: Up <---- Статус протокола BFD
BFD interval: 0.300 s
BFD timeout: 1.500 s
esrv# sh bfd neighbors 10.0.0.2
Neighbor address: 10.0.0.2
Local address: 10.0.0.1
Interface: gi1/0/1
Remote discriminator: 889907056
Local discriminator: 924658435
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: 257
Number of received packets: 156
Uptime (d,h:m:s): 00,00:00:38
Client: BGP
Last received packet:
Desired Min Tx Interval: 200 ms
Required Min Rx Interval: 200 ms
Multiplier: 5
|
| Scroll Pagebreak |
|---|
Метод на основе Fast Peer Deactivation (Fall-over)
BGP Fast Peer Deactivation – это метод оптимизации конвергенции BGP, при котором соседство BGP разрывается, как только указанный маршрут (или более/менее специфичный) к соседу удаляется из таблицы маршрутизации. Механизм реализован с совместным использованием маршрутных карт (route-map).
| Информация |
|---|
Если правило route-map будет пустым, то под правило будет попадать любой доступный маршрут до соседа в таблице маршрутизации. |
| Информация |
|---|
Функционал поддержан для IPv4 ( AFI -1 , SAFI -1), IPv6 (AFI -2 , SAFI -1) маршрутов. В route-map поддерживаются все значения команды match. Команды action set игнорируются. Реализована поддержка как для GRT, так и в VRF. |
Алгоритм настройки
...
Scroll Pagebreak
Пример настройки
Задача:
Настроить механизм Fast Peer Deactivation между iBGP пирами R1 и R2.
Решение:
Предварительно настроим связность между маршрутизаторами в схеме:
| Блок кода | ||
|---|---|---|
| ||
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 |
| Scroll Pagebreak |
|---|
На каждом устройстве настроим протокол OSPF и анонсируем адреса loopback-интерфейсов:
| Блок кода | ||
|---|---|---|
| ||
R1(config)# router ospf 1
R1(config-ospf)# area 0.0.0.0
R1(config-ospf-area)# enable
R1(config-ospf-area)# exit
R1(config-ospf)# enable
R1(config-ospf)# exit
R1(config)# interface loopback 1
R1(config-if-loopback)# ip ospf instance 1
R1(config-if-loopback)# ip ospf
R1(config-if-loopback)# exit
R1(config)# interface gigabitethernet 1/0/1
R1(config-if-gi)# ip ospf instance 1
R1(config-if-gi)# ip ospf |
| Блок кода | ||
|---|---|---|
| ||
R2(config)# router ospf 1
R2(config-ospf)# area 0.0.0.0
R2(config-ospf-area)# enable
R2(config-ospf-area)# exit
R2(config-ospf)# enable
R2(config-ospf)# exit
R2(config)# interface loopback 1
R2(config-if-loopback)# ip address 192.0.2.255/32
R2(config-if-loopback)# ip ospf instance 1
R2(config-if-loopback)# ip ospf
R2(config-if-loopback)# exit
R2(config)# interface gigabitethernet 1/0/1
R2(config-if-gi)# ip ospf instance 1
R2(config-if-gi)# ip ospf |
Настроим протокол BGP на обоих маршрутизаторах:
| Блок кода | ||
|---|---|---|
| ||
R1(config)# router bgp 65500
R1(config-bgp)# neighbor 192.0.2.255
R1(config-bgp-neighbor)# remote-as 65500
R1(config-bgp-neighbor)# update-source loopback 1
R1(config-bgp-neighbor)# enable
R1(config-bgp-neighbor)# exit
R1(config-bgp)# enable |
| Блок кода |
|---|
R2(config)# router bgp 65500
R2(config-bgp)# neighbor 192.0.2.254
R2(config-bgp-neighbor)# remote-as 65500
R2(config-bgp-neighbor)# update-source loopback 1
R2(config-bgp-neighbor)# enable
R2(config-bgp-neighbor)# exit
R2(config-bgp)# enable
|
Cоздадим маршрутную карту, в которой опишем адрес BGP-пира для дальнейшего отслеживания c помощью функционала Fast Peer Deactivation:
| Блок кода | ||
|---|---|---|
| ||
R1(config)# route-map Failover
R1(config-route-map)# rule 1
R1(config-route-map-rule)# match ip address 192.0.2.255/32
R1(config-route-map-rule)# exit
R1(config-route-map)# exit |
| Блок кода | ||
|---|---|---|
| ||
R2(config)# route-map Failover
R2(config-route-map)# rule 1
R2(config-route-map-rule)# match ip address 192.0.2.254/32 |
Привяжем созданные маршрутные карты в контексте настройки BGP-пира:
| Блок кода | ||
|---|---|---|
| ||
R1(config)# router bgp 65500
R1(config-bgp)# neighbor 192.0.2.255
R1(config-bgp-neighbor)# fall-over route-map Failover |
| Блок кода | ||
|---|---|---|
| ||
R2(config)# router bgp 65500
R2(config-bgp)# neighbor 192.0.2.254
R2(config-bgp-neighbor)# fall-over route-map Failover |
| Scroll Pagebreak |
|---|
Для просмотра оперативного состояния можно воcпользоваться следующей командой:
| Блок кода |
|---|
R2# sh bgp neighbors
BGP neighbor is 192.0.2.254
BGP state: Established
Type: Static neighbor
Neighbor address: 192.0.2.254
Neighbor AS: 65500
Neighbor ID: 192.0.2.254
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: internal multihop AS4
Source address: 192.0.2.255
Weight: 0
Hold timer: 164/180
Keepalive timer: 23/60
Uptime: 437 s
Fall-over route-map: Failover <---- Функционал активирован
R2# sh bgp neighbors 192.0.2.254
BGP neighbor is 192.0.2.254
BGP state: Down
Type: Static neighbor
Neighbor address: 192.0.2.254
Neighbor AS: 65500
Fall-over route-map: Failover
Last error: Error: Fall over route-map <---- Сессия BGP была разорвана из-за отработавшего механизма Fast Peer Deactivation |
Настройка завершена.
...
Route-map – это механизм, позволяющий применять условия (условные фильтры) и действия к маршрутам и ,соответственно, к трафику. Он используется для фильтрации, изменения и управления атрибутами протокола BGP, обеспечивая расширенные возможности по сравнению с Prefix-list. Подробная логика работы описана в разделе Политика фильтрации маршрутной информации.
Функциональные возможности Route-map позволяют работать со следующими атрибутами:
...
Семейство адресов (AF)
...
Поддержка регулярных выражений в классификации
...
Алгоритм настройки
...
<ORDER> – номер правила, принимает значения [1 .. 10000].
...
<ACT> – назначаемое действие:
- permit – прием или анонсирование маршрутной информации разрешено;
- deny – запрещено.
...
<AS-PATH> – список номеров автономных систем, задается в виде AS,AS,AS, принимает значения [1..4294967295]. Опциональные параметры:
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.
- begin – значение атрибута начинается с указанных номеров AS;
- contain – значение атрибута содержит указанные номера AS;
- empty – значение атрибута пусто;
- end – значение атрибута заканчивается указанными номерами AS;
- regex – значение атрибута соответствует регулярному выражению.
...
Задать значение атрибута BGP Community, для которого должно срабатывать правило (необязательно).
...
<COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, принимает значения [1..4294967295]. Можно указать до 64 community.
- regex – значение атрибута соответствует регулярному выражению.
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.
...
Задать значение атрибута BGP Extended Community, для которого должно срабатывать правило (необязательно).
...
<EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где
KIND – тип extcommunity:
- rt (Route Target);
- ro (Route Origin).
N – номер extcommunity, принимает значения [1..65535].
- regex – значение атрибута соответствует регулярному выражению.
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.
...
Задать профиль 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>
...
Задать профиль IP-адресов, содержащий значения атрибута BGP Next-Hop в маршруте для которого должно срабатывать правило (необязательно).
...
esr(config-route-map-rule)# match ip bgp next-hop object-group <OBJ-GROUP-NETWORK-NAME>
...
<OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа.
...
esr(config-route-map-rule)# match ipv6 bgp next-hop object-group <OBJ-GROUP-NETWORK-NAME>
...
Задать профиль, содержащий 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>
...
Задать ACL-группу, для которой должно срабатывать правило (необязательно).
...
esr(config-route-map-rule)# match access-group <NAME>
...
<NAME> – имя списка контроля доступа, задается строкой до 31 символа.
...
Задать значение атрибута BGP MED в маршруте для которого должно срабатывать правило (необязательно).
...
esr(config-route-map-rule)# match metric bgp <METRIC>
...
<METRIC> – значение атрибута BGPMED, принимает значения [0..4294967295].
...
Задать значение атрибута BGP AS-Path, которое будет добавляться в начало списка AS-Path (необязательно).
...
esr(config-route-map-rule)# action set as-path
prepend <AS-PATH> {track <TRACK-ID>}
...
<AS-PATH> – список номеров автономных систем, который будет добавлен к текущему значению в маршруте. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295].
<TCACK-ID> – идентификатор vrrp-tracking, при котором будет исполняться указанное действие. Изменяется в диапазоне [1..60].
...
esr(config-route-map-rule)# action set as-path
replace { any | <AS-PATH> }
...
<AS-PATH> – список номеров автономных систем, который будет заменён на локальный номер AS. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295].
- any – заменять любой номер AS.
...
Задать значение атрибута 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];
- no - advertise – маршруты, передаваемые с данным community, не должны анонсироваться другим BGP-соседям;
- no - export – маршруты, передаваемые с таким community, не должны анонсироваться eBGP-соседям, но анонсируются внешним соседям в конфедерации.
...
Задать значение атрибута BGP ExtCommunity, которое будет установлено в маршруте (необязательно).
...
esr(config-route-map-rule)# action set extcommunity <EXTCOMMUNITY-LIST>
...
<EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где
KIND – тип extcommunity:
- rt (Route Target);
- ro (Route Origin).
N – номер extcommunity, принимает значения [1..65535].
...
Задать атрибут 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].
...
Задать значение атрибута BGP Local Preference, который будет установлен в маршруте (необязательно).
...
esr(config-route-map-rule)# action set local-preference <PREFERENCE>
...
<PREFERENCE> – значение атрибута BGP Local Preference, принимает значения [0..255].
...
Задать значение атрибута BGP Origin, которое будет установлено в маршруте (необязательно).
...
esr(config-route-map-rule)# action set origin <ORIGIN>
...
<ORIGIN> – значение атрибута BGP Origin:
- egp – маршрут выучен по протоколу EGP;
- igp – маршрут получен внутри исходной AS;
- incomplete – маршрут выучен другим образом.
...
Задать значение BGP MED, которое будет установлено в маршруте
(необязательно).
...
esr(config-route-map-rule)# action set metric bgp <METRIC>
...
<METRIC> – значение атрибута BGP MED, принимает значения [0..4294967295].
...
Добавить фильтрацию и модификацию маршрутов во входящих или исходящих направлениях.
...
esr(config-bgp-neighbor)# route-map <NAME><DIRECTION>
...
<NAME> – имя сконфигурированной маршрутной карты;
<DIRECTION> – направление:
- in – фильтрация и модификация получаемых маршрутов;
- out – фильтрация и модификация анонсируемых маршрутов.
...
esr(config-ipv6-bgp-neighbor)# route-map <NAME><DIRECTION>
| Scroll Pagebreak |
|---|
Пример настройки 1
Задача:
Назначить сommunity для маршрутной информации, приходящей из AS 64498.
Cхема:
Базовая конфигурация:
...
| responsive | true |
|---|
...
Scroll Pagebreak
Решение:
Создаем политику на ESR1:
| Блок кода |
|---|
ESR1# config
ESR1(config)# route-map set_community |
Создаем правило 1:
| Блок кода |
|---|
ESR1(config-route-map)# rule 1 |
Если AS PATH содержит AS 64497, то назначаем ему сommunity 64497:100, выходим и применяем конфигурацию:
| Блок кода |
|---|
ESR1(config-route-map-rule)# match as-path contain 64497
ESR1(config-route-map-rule)# action set community 64497:100
ESR1(config-route-map-rule)# exit
ESR1(config-route-map)# exit
ESR1(config)# do com
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
ESR1(config)# do conf
Configuration has been confirmed. Commit timer canceled. |
| Scroll Pagebreak |
|---|
Проверяем, что политика была создана:
| Блок кода | ||
|---|---|---|
| ||
ESR1# sh ip route-map set_community
Order: 1
Description: --
Matching pattern:
Access group --
AS path contains 64497
Community --
Extcommunity --
BGP local-preference: --
BGP metric (MED): --
BGP weight: --
Address (object-group): --
Next hop (object-group): --
Route source (object-group): --
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
Actions:
Decision: Permit
Route next hop: --
Route IPv6 next hop: --
IP address: --
IPv6 address: --
AS path (prepand): --
Community: 64497:100
Extcommunity: --
Local preference: --
BGP next hop address: --
BGP IPv6 next hop address: --
BGP metric (MED): --
BGP weight: --
Origin: --
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
-------------------------------------------------------------------------------- |
В контексте настройки BGP-инстанса заходим в настройки параметров соседа:
| Блок кода |
|---|
ESR1(config)# router bgp 64498
ESR1(config-bgp)# neighbor 198.51.100.2
ESR1(config-bgp-neighbor)# address-family ipv4 unicast |
Привязываем политику к принимаемой маршрутной информации:
| Блок кода |
|---|
ESR1(config-bgp-neighbor-af)# route-map set_community in
ESR1(config-bgp-neighbor-af)# do com
ESR1(config-bgp-neighbor-af)# do conf |
Проверяем, что для полученного префикса установлена необходимая community:
| Блок кода | ||
|---|---|---|
| ||
ESR1# show bgp ipv4 unicast 192.0.2.1/32
192.0.2.1/32 via 198.51.100.2 on gi1/0/3 [bgp64498 08:44:32] (64497i)
Administrative Distance: 170
Type: unicast
Origin: IGP
AS path: 64497
Next Hop: 198.51.100.2
Output Label: --
Input Label: --
Local Preference: 100
MED: --
Cluster List: --
Community: 64497:100
EXT Community: --
Weight: 0
Valid, Best
|
Настройка завершена.
Пример настройки 2
Задача:
Для всей полученной маршрутной информации (с community 64497:100) от ESR2 установить следующие BGP-атрибуты:
- MED – 240;
- Origin – EGP.
Схема:
Scroll Pagebreak
Базовая конфигурация:
...
| responsive | true |
|---|
...
Scroll Pagebreak
Решение:
Для решения задачи настройка будет производиться на ESR1. Первым шагом создаем политику:
| Блок кода |
|---|
ESR1(config)# route-map community_in |
Далее правило:
| Блок кода |
|---|
ESR1(config-route-map)# rule 1 |
Если community содержит 64497:100, то назначаем ему MED 240 и Origin EGP:
| Блок кода |
|---|
ESR1(config)# route-map community_in
ESR1(config-route-map)# rule 1
ESR1(config-route-map-rule)#
ESR1(config-route-map-rule)# match community 64497:100
ESR1(config-route-map-rule)# action set metric bgp 240
ESR1(config-route-map-rule)# action set origin egp
ESR1(config-route-map-rule)# do com
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
ESR1(config-route-map-rule)# do conf |
| Scroll Pagebreak |
|---|
Проверим, что политика создана корректно:
| Блок кода | ||
|---|---|---|
| ||
ESR1# sh ip route-map community_in
Order: 1
Description: --
Matching pattern:
Access group --
AS path --
Community 64497:100
Extcommunity --
BGP local-preference: --
BGP metric (MED): --
BGP weight: --
Address (object-group): --
Next hop (object-group): --
Route source (object-group): --
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
Actions:
Decision: Permit
Route next hop: --
Route IPv6 next hop: --
IP address: --
IPv6 address: --
AS path (prepand): --
Community: --
Extcommunity: --
Local preference: --
BGP next hop address: --
BGP IPv6 next hop address: --
BGP metric (MED): set 240
BGP weight: --
Origin: EGP
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
-------------------------------------------------------------------------------- |
В контексте настройки BGP-инстанса заходим в настройки параметров соседа:
| Блок кода |
|---|
ESR1(config)# router bgp 64498
ESR1(config-bgp)# neighbor 198.51.100.2
ESR1(config-bgp-neighbor)# address-family ipv4 unicast |
| Scroll Pagebreak |
|---|
Привязываем политику для получаемой маршрутной информации:
| Блок кода |
|---|
ESR1(config-bgp-neighbor-af)# route-map community_in in
ESR1(config-bgp-neighbor-af)# do com
ESR1(config-bgp-neighbor-af)# do conf |
Проверим, что соответствующие атрибуты были изменены:
| Блок кода | ||
|---|---|---|
| ||
ESR1# sh bgp ipv4 unicast 192.0.2.1/32
192.0.2.1/32 via 198.51.100.2 on gi1/0/3 [bgp64498 09:19:24] (64497e)
Administrative Distance: 170
Type: unicast
Origin: EGP
AS path: 64497
Next Hop: 198.51.100.2
Output Label: --
Input Label: --
Local Preference: 100
MED: 240
Cluster List: --
Community: 64497:100
EXT Community: --
Weight: 0
Valid, Best |
Настройка завершена.
Использование регулярных выражений
Начиная с версии 1.23 доступно использование регулярных выражений в Route-map для контроля распространения маршрутной информации по протоколу BGP. Контроль можно производить по шести атрибутам BGP: AS-path, community, extcommunity, local-preference, metric, weight. Синтаксис регулярных выражений соответствует стандарту POSIX ERE. В таблице ниже представлены некоторые примеры регулярных выражений.
...
^([0-9]*):((1[5-9][0-9])|([2-9][0-9]{2})|(1[0-2][0-2][0-9])|(1230))$
...
Алгоритм настройки
...
<ORDER> – номер правила, принимает значения [1 .. 10000].
...
<ACT> – назначаемое действие:
- permit – прием или анонсирование маршрутной информации разрешено;
- deny – запрещено.
...
regex – значение атрибута соответствует регулярному выражению.
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.
...
<NAME> – имя сконфигурированной маршрутной карты;
- in – фильтрация и модификация получаемых маршрутов;
- out – фильтрация и модификация анонсируемых маршрутов.
...
Пример настройки
Задача:
Запретить прием маршрутной информации по BGP, содержащей в атрибуте AS-path номер AS 64500.
Cхема:
Базовая конфигурация:
...
| responsive | true |
|---|
...
Решение:
Первым шагом необходимо создать Route-map на ESR1, в котором с помощью регулярных выражений опишем интересующий AS-path. В случае совпадения укажем – запретить:
| Блок кода | ||
|---|---|---|
| ||
route-map AS
rule 1
match as-path regex '(64500)'
action deny
exit
rule 2
exit
exit |
Проверим корректность ранее созданного Route-map:
| Блок кода | ||
|---|---|---|
| ||
ESR1# sh ip route-map AS
Order: 1
Description: --
Matching pattern:
Access group --
AS path regex "(64500)"
Community --
Extcommunity --
BGP local-preference: --
BGP metric (MED): --
BGP weight: --
Address (object-group): --
Next hop (object-group): --
Route source (object-group): --
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
Actions:
Decision: Deny
Route next hop: --
Route IPv6 next hop: --
IP address: --
IPv6 address: --
AS path (prepand): --
Community: --
Extcommunity: --
Local preference: --
BGP next hop address: --
BGP IPv6 next hop address: --
BGP metric (MED): --
BGP weight: --
Origin: --
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
--------------------------------------------------------------------------------
Order: 2
Description: --
Matching pattern:
Access group --
AS path --
Community --
Extcommunity --
BGP local-preference: --
BGP metric (MED): --
BGP weight: --
Address (object-group): --
Next hop (object-group): --
Route source (object-group): --
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
Actions:
Decision: Permit
Route next hop: --
Route IPv6 next hop: --
IP address: --
IPv6 address: --
AS path (prepand): --
Community: --
Extcommunity: --
Local preference: --
BGP next hop address: --
BGP IPv6 next hop address: --
BGP metric (MED): --
BGP weight: --
Origin: --
RIP metric --
RIP tag --
OSPF metric type --
OSPF metric --
OSPF tag --
--------------------------------------------------------------------------------
|
В контексте настройки пира применим созданный Route-map для фильтрации входящих маршрутов:
| Блок кода | ||
|---|---|---|
| ||
ESR1(config)# router bgp 64498
ESR1(config-bgp)# neighbor 198.51.100.2
ESR1(config-bgp-neighbor)# address-family ipv4 unicast
ESR1(config-bgp-neighbor-af)# route-map AS in
ESR1(config-bgp-neighbor-af)# do com
ESR1(config-bgp-neighbor-af)# do conf |
Проверим, что BGP RIB не содержит маршрут, в котором AS-path 64500:
| Блок кода | ||
|---|---|---|
| ||
ESR1# sh bgp ipv4 unicast
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 192.0.2.1/32 198.51.100.2 -- 100 0 64497 i |
Настройка завершена.
| Scroll Pagebreak |
|---|
Конфедерация
Механизм позволяет разделить одну автономную систему на множество под-AS, функционирующих как отдельные административные единицы, но представляющих единую AS для внешних автономных систем. Взаимодействие между под-AS осуществляется посредством межконфедерационных BGP-сессий, использующих расширенную семантику AS_PATH. Для реализации механизма в рамках RFC 5065 введены атрибуты AS_CONFED_SEQUENCE и AS_CONFED_SET, которые применяются исключительно внутри конфедерации и подлежат удалению перед передачей маршрутов за её пределы.
| Информация | ||
|---|---|---|
| ||
|
Стандарт и реализация включают в себя следующие изменения в поведении:
- Значение атрибута MED распространяется между eBGP-пирами;
- Значение атрибута next-hop не изменяется при eBGP-пиринге (поведение можно переопределить с помощью команды next-hop-self);
- Внутри конфедерации политика анонсирования маршрутной информации аналогична политика анонсирования для iBGP-пиринга;
- Длина списка AS_CONFED_SEQUENCE или AS_CONFED_SET не участвует в политике выбора лучшего маршрута.
Алгоритм настройки
...
Пример настройки
Задача:
Необходимо настроить конфедерацию между ESR2 и ESR3. На ESR2 настроить eBGP-пиринг с ESR1, проанонсировать подсети в соответствии со схемой.
| Scroll Pagebreak |
|---|
Схема:
Базовая конфигурация:
...
Решение:
Первым шагом настроим BGP внутри конфедерации: установим пиринг, зададим идентификатор, определим члены конфедерации. На ESR3 проанонсируем соответствующий loopback.
| Блок кода | ||
|---|---|---|
| ||
ESR2(config)# router bgp 64497
ESR2(config-bgp)# confederation id 69 <--- Назначение идентификатора конфедерации
ESR2(config-bgp)# confederation peer 64496 <--- AS c номер 64496 является членом конфедерации
ESR2(config-bgp)# neighbor 203.0.113.2
ESR2(config-bgp-neighbor)# remote-as 64496
ESR2(config-bgp-neighbor)# address-family ipv4 unicast
ESR2(config-bgp-neighbor-af)# enable
ESR2(config-bgp-neighbor-af)# exit
ESR2(config-bgp-neighbor)# enable
ESR2(config-bgp-neighbor)# exit
ESR2(config-bgp)# enable
ESR2(config-bgp)# exit
ESR2(config)#
ESR2(config)# do com
ESR2(config)# do conf |
| Блок кода | ||
|---|---|---|
| ||
ESR3(config)# router bgp 64496
ESR3(config-bgp)# confederation id 69
ESR3(config-bgp)# confederation peer 64497
ESR3(config-bgp)# neighbor 203.0.113.1
ESR3(config-bgp-neighbor)# remote-as 64497
ESR3(config-bgp-neighbor)# address-family ipv4 unicast
ESR3(config-bgp-neighbor-af)# enable
ESR3(config-bgp-neighbor-af)# exit
ESR3(config-bgp-neighbor)# enable
ESR3(config-bgp-neighbor)# exit
ESR3(config-bgp)# address-family ipv4 unicast
ESR3(config-bgp-af)# network 192.0.2.2/32
ESR3(config-bgp-af)# exit
ESR3(config-bgp)# enable
ESR3(config-bgp)# exit
ESR3(config)# do com
ESR3(config)# do conf |
Проверяем, что конфедерация успешно сконфигурирована c обеих сторон:
| Блок кода |
|---|
ESR2# sh bgp summary
2025-11-26 06:37:55
BGP router identifier 198.51.100.2, local AS number 64497, AS confederation identifier 69 <----
BGP activity 1/0 prefixes
Neighbor AS MsgRcvd MsgSent Up/Down St/PfxRcd
(d,h:m:s)
---------------------- ------------- ---------- ---------- ---------- ------------
203.0.113.2 64496 9 10 00,00:03:07 1
ESR3# sh bgp summary
2025-11-26 06:38:52
BGP router identifier 192.0.2.2, local AS number 64496, AS confederation identifier 69 <---
BGP activity 0/1 prefixes
Neighbor AS MsgRcvd MsgSent Up/Down St/PfxRcd
(d,h:m:s)
---------------------- ------------- ---------- ---------- ---------- ------------
203.0.113.1 64497 7 10 00,00:04:03 0 |
| Scroll Pagebreak |
|---|
BGP-сессия перешла в состояние "Established". Необходимо убедиться, что тип сессии соответствует "confed-external". Для eBGP-cессии автоматически увеличится multi-hop до 255:
| Блок кода |
|---|
ESR3# sh bgp neighbors
BGP neighbor is 203.0.113.1
BGP state: Established
Type: Static neighbor
Neighbor address: 203.0.113.1
Neighbor AS: 64497
Neighbor ID: 198.51.100.2
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: confed-external multihop AS4 <-----
Source address: 203.0.113.2
Weight: 0
Hold timer: 120/180
Keepalive timer: 18/60
EBGP multi-hop: 255 <-----
RR client: No
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Preference: 170
Remove private AS: No
Next-hop self: No
Next-hop unchanged: No
Uptime (d,h:m:s): 00,00:02:09
ESR2# sh bgp neighbors
BGP neighbor is 203.0.113.2
BGP state: Established
Type: Static neighbor
Neighbor address: 203.0.113.2
Neighbor AS: 64496
Neighbor ID: 192.0.2.2
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: confed-external multihop AS4 <-----
Source address: 203.0.113.1
Weight: 0
Hold timer: 140/180
Keepalive timer: 38/60
EBGP multi-hop: 255 <----
RR client: No
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Preference: 170
Remove private AS: No
Next-hop self: No
Next-hop unchanged: No
Uptime (d,h:m:s): 00,00:08:05
|
| Scroll Pagebreak |
|---|
Проверим, что ESR2 принимает анонсируемый ESR3 маршрут 192.0.2.2/32:
| Примечание |
|---|
Для обозначения использования AS_CONFED_SEQUENCE AS Path указывается в круглых скобках. |
| Блок кода | ||
|---|---|---|
| ||
ESR2# sh bgp ipv4 unicast 192.0.2.2/32
192.0.2.2/32 via 203.0.113.2 on gi1/0/2 [bgp64497 06:34:48] (64496i)
Administrative Distance: 170
Type: unicast
Origin: IGP
Aggregator: --
AS path: (64496) <----
Next Hop: 203.0.113.2
Output Label: --
Input Label: --
Local Preference: 100
MED: --
Cluster List: --
Community: --
EXT Community: --
Weight: 0
Valid, best, confed-external |
Следующим шагом настроим взаимодействие конфедерации с внешней автономной системой. При настройке пиринга необходимо помнить, что в качестве внешней AS будет использоваться идентификатор конфедерации.
| Блок кода | ||
|---|---|---|
| ||
ESR1(config)# route-map OUT
ESR1(config-route-map)# rule 1
ESR1(config-route-map-rule)# match ip address 192.0.2.1/32
ESR1(config-route-map-rule)# exit
ESR1(config-route-map)# rule 2
ESR1(config-route-map-rule)# action deny
ESR1(config-route-map-rule)# exit
ESR1(config-route-map)# exit
ESR1(config)# router bgp 64498
ESR1(config-bgp)# neighbor 198.51.100.2
ESR1(config-bgp-neighbor)# remote-as 69
ESR1(config-bgp-neighbor)# address-family ipv4 unicast
ESR1(config-bgp-neighbor-af)# route-map OUT out
ESR1(config-bgp-neighbor-af)# enable
ESR1(config-bgp-neighbor-af)# exit
ESR1(config-bgp-neighbor)# enable
ESR1(config-bgp-neighbor)# exit
ESR1(config-bgp)# address-family ipv4 unicast
ESR1(config-bgp-af)# network 192.0.2.1/32
ESR1(config-bgp-af)# exit
ESR1(config-bgp)# enable
ESR1(config-bgp)# exit
ESR1(config)#
ESR1(config)# do com
ESR1(config)# do conf |
| Блок кода | ||
|---|---|---|
| ||
ESR2(config)# route-map OUT
ESR2(config-route-map)# rule 1
ESR2(config-route-map-rule)# match ip address 192.0.2.2/32
ESR2(config-route-map-rule)# exit
ESR2(config-route-map)# rule 2
ESR2(config-route-map-rule)# action deny
ESR2(config-route-map-rule)# exit
ESR2(config-route-map)# exit
ESR2(config)#
ESR2(config)# router bgp 64497
ESR2(config-bgp)# neighbor 198.51.100.1
ESR2(config-bgp-neighbor)# remote-as 64498
ESR2(config-bgp-neighbor)# address-family ipv4 unicast
ESR2(config-bgp-neighbor-af)# route-map OUT out
ESR2(config-bgp-neighbor-af)# enable
ESR2(config-bgp-neighbor-af)# exit
ESR2(config-bgp-neighbor)# enable
ESR2(config-bgp-neighbor)# exit
ESR2(config-bgp)# neighbor 203.0.113.2
ESR2(config-bgp-neighbor)# address-family ipv4 unicast
ESR2(config-bgp-neighbor-af)# next-hop-self
ESR2(config-bgp-neighbor-af)# exit
ESR2(config-bgp-neighbor)# do com
ESR2(config-bgp)# do com
ESR2(config-bgp)# do conf |
| Scroll Pagebreak |
|---|
Проверяем, что пиринг поднялся:
| Блок кода |
|---|
ESR2# sh bgp neighbors 198.51.100.1
BGP neighbor is 198.51.100.1
BGP state: Established
Type: Static neighbor
Neighbor address: 198.51.100.1
Neighbor AS: 64498
Neighbor ID: 192.0.2.1
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 198.51.100.2
Weight: 0
Hold timer: 136/180
Keepalive timer: 36/60
RR client: No
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Outgoing route-map: OUT
Preference: 170
Remove private AS: No
Next-hop self: No
Next-hop unchanged: No
Uptime (d,h:m:s): 00,00:16:04
ESR1# sh bgp neighbors 198.51.100.2
BGP neighbor is 198.51.100.2
BGP state: Established
Type: Static neighbor
Neighbor address: 198.51.100.2
Neighbor AS: 69
Neighbor ID: 198.51.100.2
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 198.51.100.1
Weight: 0
Hold timer: 135/180
Keepalive timer: 39/60
RR client: No
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Outgoing route-map: OUT
Preference: 170
Remove private AS: No
Next-hop self: No
Next-hop unchanged: No
Uptime (d,h:m:s): 00,00:34:20 |
| Scroll Pagebreak |
|---|
Проверяем корректность анонсируемой информации:
| Блок кода | ||
|---|---|---|
| ||
ESR1# sh bgp ipv4 unicast 192.0.2.2/32
192.0.2.2/32 via 198.51.100.2 on gi1/0/1 [bgp64498 07:49:49] (69i)
Administrative Distance: 170
Type: unicast
Origin: IGP
Aggregator: --
AS path: 69
Next Hop: 198.51.100.2
Output Label: --
Input Label: --
Local Preference: 100
MED: --
Cluster List: --
Community: --
EXT Community: --
Weight: 0
Valid, best, external |
| Блок кода | ||
|---|---|---|
| ||
ESR3# sh bgp ipv4 unicast 192.0.2.1/32
192.0.2.1/32 via 203.0.113.1 on gi1/0/2 [bgp64496 07:49:51] (64498i)
Administrative Distance: 170
Type: unicast
Origin: IGP
Aggregator: --
AS path: (64497) 64498
Next Hop: 203.0.113.1
Output Label: --
Input Label: --
Local Preference: 100
MED: --
Cluster List: --
Community: --
EXT Community: --
Weight: 0
Valid, best, confed-external
|
Настройка завершена.
Настройка 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> – назначаемое действие:
- permit – прием или анонсирование маршрутной информации разрешено;
- deny – запрещено.
...
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 символа.
...
Пример настройки
Задача:
Распределить трафик между Интернет-провайдерами на основе подсетей пользователей.
Предварительно нужно назначить 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 |
| Scroll Pagebreak |
|---|
Указываем список доступа (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-пакеты и отвечают друг другу).
| Scroll Pagebreak |
|---|
По умолчанию сессия устанавливается в следующем режиме:
...
Для изменения поведения (режима) необходимо вручную переопределить параметры сессии, указав необходимый режим. Рассмотрим на примере.
| Scroll Pagebreak |
|---|
Допустим, мы установили 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: 300 ms
Multiplier: 5
Actual Tx Interval: 300 ms
Actual Detection Interval: 1500 ms
Number of transmitted packets: 1149
Number of received packets: 1153
Uptime: 2m
Client: BGP
Last received packet:
Desired Min Tx Interval: 300 ms
Required Min Rx Interval: 300 ms
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 |
|---|
Конфигурацию необходимо производить на обоих устройствах. После переустановки сессии ее режим сменится на multi-hop:
| Блок кода |
|---|
esr-200# sh 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: Multi-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: 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 рекомендуется увеличить значение таймеров. |
Таймеры, вне зависимости от режима работы протокола (single или multi-hop mode), могут быть настроены в контексте глобальной конфигурации или на определенных интерфейсах. Настройка на интерфейсах имеет наибольший приоритет.
| Блок кода |
|---|
ESR(config)# ip bfd min-tx-interval 1000
ESR(config)# ip bfd min-rx-interval 1000
ESR(config)# do commmit
ESR# sh ip bfd
Minimum RX interval: 1000 ms
Minimum TX interval: 1000 ms
Idle TX interval: 1000 ms
Multiplier: 5 packets
Passive: No
|
После того как BFD-сессия установлена, каждая сторона индивидуально вычисляет свои Tx Interval и Detection Interval. Tx Interval выбирается как наибольшее значение из локального Tx Interval и удаленного RX Interval. Detection Interval вычисляется по следующей формуле: Detection Interval = remoteMultiplier * MAX( RxLocal || TxRemote), где remoteMultiplier – значение Multiplier удаленной стороны, RxLocal – локальный Tx Interval, TxRemote – Tx Interval удаленной стороны.
Локально настроенные таймеры, таймеры удаленной стороны, а также вычисленные таймеры можно посмотреть следующим образом:
| Блок кода |
|---|
esr-200# sh 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: Multi-hop
Local diagnostic code: No Diagnostic
Remote diagnostic code: No Diagnostic
Minimal Tx Interval: 300 ms <---- Локальный Tx Interval
Minimal Rx Interval: 300 ms <---- Локальный Rx Interval
Multiplier: 5 <---- Локальный Multiplier
Actual Tx Interval: 300 ms <---- Вычисленный Tx Interval
Actual Detection Interval: 1500 ms <---- Вычисленный Detection Interval
Number of transmitted packets: 21781
Number of received packets: 21804
Uptime: 1d21h54m
Client: BGP
Last received packet:
Desired Min Tx Interval: 300 ms <----
Required Min Rx Interval: 300 ms <---- Таймеры удаленной стороны
Multiplier: 5 <----
|
Алгоритм настройки
...
Шаг
...
Описание
...
Команда
...
Ключи
...
1
...
Активировать BFD для протокола OSPF на интерфейсе.
...
esr(config-if-gi)# ip ospf bfd-enable
...
2
...
Активировать BFD для neighbor протокола BGP.
...
esr(config-bgp-neighbor)# fall-over bfd
...
4
...
Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. Глобально (необязательно).
...
esr(config)# ip bfd idle-tx-interval <TIMEOUT>
...
<TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне:
- для ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – [200..65535]; - для ESR-10/12V(F)/
15/15R/1VF/20/21/
30/31/100/200 –
[300..65535].
По умолчанию: 1 секунда.
...
5
...
Включить логирование изменений состояния BFD-протокола (необязательно).
...
esr(config)# ip bfd log-adjacency-changes
...
6
...
Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение.
Глобально (необязательно).
...
esr(config)# ip bfd min-rx-interval <TIMEOUT>
...
<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
- для ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – [200..65535]; - для ESR-10/12V(F)/
15/15R/15VF/20/21/
30/31/100/200 –
[300..65535].
По умолчанию:
- на ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/3250/3300/3350:
200 миллисекунд; - на ESR-10/12V(F)/
15/15R/15/VF/20/21/
30/31/100/200:
300 миллисекунд.
...
7
...
Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу.
Глобально (необязательно).
...
esr(config)# ip bfd min-tx-interval <TIMEOUT>
...
<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
- для ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – [200..65535]; - для ESR-10/12V(F)/
15/15R/15VF/20/21/
30/31/100/200 –
[300..65535].
По умолчанию:
- на ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – 200 миллисекунд; - на ESR-10/12V(F)/
15/15R/15VF/20/21/30/31/
100/200 – 300 миллисекунд.
...
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> } ]
[local-address <ADDR> [multihop]] [vrf <VRF>]
...
<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-пакета, принимает значение в миллисекундах в диапазоне:
- для ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – [200..65535]; - для ESR-10/12V(F)/
15/15R/15VF/20/21/30/31/
100/200 – [300..65535].
По умолчанию: 1 секунда.
...
12
...
Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение.
На интерфейсе (необязательно).
...
esr(config-if-gi)# ip bfd min-rx-interval <TIMEOUT>
...
<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
- для ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200.3200L/
3250/3300/3350 – [200..65535]; - для ESR-10/12V(F)/
15/15R/15VF/20/21/30/31/
100/200 – [300..65535].
По умолчанию:
- на ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – 200 миллисекунд; - на ESR-10/12V(F)/
15/15R/15VF/20/21/30/31/
100/200 – 300 миллисекунд.
...
13
...
Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу.
На интерфейсе (необязательно).
...
esr(config-if-gi)# ip bfd min-tx-interval <TIMEOUT>
...
<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
- для ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – [200..65535]; - для ESR-10/12V(F)/
15/15R/15VF/20/21/30/31/
100/200 – [300..65535].
По умолчанию:
- на ESR-1000/1200/
1500/1511 (rev.B)/1700/
3100/3200/3200L/
3250/3300/3350 – 200 миллисекунд; - на ESR-10/12V(F)/
15/15R/15VF/20/21/30/31/
100/200 – 300 миллисекунд.
...
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
...
| Scroll Pagebreak |
|---|
Пример настройки
Задача:
Необходимо настроить протокол BFD для статического маршрута на маршрутизаторе R1.
Решение:
Предварительно необходимо настроить интерфейс Gi1/0/1 на R1 и R2:
| Блок кода | ||
|---|---|---|
| ||
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: 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#
|
Настройка завершена.
Настройка 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> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:
- OSPF ESR-1000/1200/1500/
1511 (rev.B)/1700/3100/3200/3200L/3250/3300/3350 – [1..500000], ESR-20/21/30/31/100/
200 – [1..300000], ESR-10/12V(F)/15/15R/
15VF – [1..30000] - BGP ESR-1000/1200/1500/
1511 (rev.B)/1700/3100/3200/3200L/3250/3300/3350 – [1..5000000], ESR-20/21/30/31/100/
200 – [1..2500000], ESR-10/12V(F)/15/
15VF/15R – [1..1000000].
Значение по умолчанию: 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(config)# security zone vrf-sec
esr(config-zone)# ip vrf forwarding bit
esr(config-zone)# exit |
Создадим правило для пары зон и разрешим любой TCP/UDP-трафик:
| Блок кода |
|---|
esr(config)# security zone-pair vrf-sec vrf-sec
esr(config-zone-pair)# rule 1
esr(config-zone-rule)# match protocol udp
esr(config-zone-rule)# action permit
esr(config-zone-rule)# enable
esr(config-zone-rule)# exit
esr(config-zone-pair)# rule 2
esr(config-zone-rule)# match protocol tcp
esr(config-zone-rule)# action permit
esr(config-zone-rule)# enable
esr(config-zone-rule)# exit |
Создадим привязку интерфейсов, назначим IP-адреса, укажем принадлежность к зоне:
| Блок кода |
|---|
esr(config)# interface gigabitethernet 1/0/7
esr(config-if-gi)# ip vrf forwarding bit
esr(config-if-gi)# ip address 10.20.0.1/24
esr(config-if-gi)# security-zone vrf-sec
esr(config-if-gi)# exit
esr(config)# interface gigabitethernet 1/0/14.10
esr(config-if-sub)# ip vrf forwarding bit
esr(config-if-sub)# ip address 10.30.0.1/16
esr(config-if-sub)# security-zone vrf-sec
esr(config-if-sub)# exit
esr(config)# exit |
Информацию об интерфейсах, привязанных к VRF, можно посмотреть командой:
| Блок кода |
|---|
esr# show ip vrf |
| Scroll Pagebreak |
|---|
Таблицу маршрутов VRF можно просмотреть с помощью команды:
| Блок кода |
|---|
esr# show ip route vrf bit |
Настройка MultiWAN
Технология MultiWAN позволяет организовать отказоустойчивое соединение с резервированием линков от нескольких провайдеров, а также решает проблему балансировки трафика между резервными линками.
...
esr(config)# ip route <SUBNET> wan load-balance rule <ID> [<METRIC>]
...
<ID> – идентификатор создаваемого правила из п.2.
[METRIC] – метрика маршрута, принимает значения [0..255].
...
esr(config)# wan load-balance rule <ID>
...
esr(config-wan-rule)# outbound
{ interface <IF> | tunnel <TUN> } [WEIGHT]
...
<IF>– имя интерфейса;
<TUN> – имя туннеля;
[WEIGHT] – вес туннеля или интерфейса, определяется в диапазоне [1..255]. Если установить значение 2, то по данному интерфейсу будет передаваться в 2 раза больше трафика, чем по интерфейсу со значением по умолчанию. В режиме резервирования активным будет маршрут с наибольшим весом. Значение по умолчанию 1.
...
esr(config-wan-rule)# description <DESCRIPTION>
...
esr(config-wan-rule)# failover
...
esr(config-wan-rule)# enable
...
esr(config)# wan load-balance target-list <NAME>
...
esr(config-target-list)# target <ID>
...
esr(config-wan-target)# description <DESCRIPTION>
...
esr(config-wan-target)# resp-time <TIME>
...
Указать IP-адрес проверки.
...
esr(config-wan-target)# ip address <ADDR>
...
esr(config-wan-target)# ipv6 address <IPV6-ADDR>
...
esr(config-wan-target)# enable
...
Команды для пунктов 14–17 необходимо применить на интерфейсах/туннелях в MultiWAN.
...
esr(config-if-gi)# wan load-balance enable
...
esr(config-if-gi)# ipv6 wan load-balance enable
...
Задать количество неудачных попыток проверки соединения, после которых, при отсутствии ответа от встречной стороны, соединение будет считается неактивным (необязательно).
...
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>
...
Задать количество успешных попыток проверки соединения, после которых, в случае успеха, соединение считается вновь активным (необязательно).
...
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>
...
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> }
...
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> }
...
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) с возможностью балансировки нагрузки.
Решение:
Предварительно нужно выполнить следующие действия:
- настроить зоны для интерфейсов te1/0/1 и te1/0/2;
- указать IP-адреса для интерфейсов te1/0/1 и te1/0/2.
Основной этап конфигурирования:
Настроим маршрутизацию:
| Блок кода |
|---|
esr(config)# ip route 108.16.0.0/28 wan load-balance rule 1 |
Создадим правило WAN:
| Блок кода |
|---|
еsr(config)# wan load-balance rule 1 |
Укажем участвующие интерфейсы:
| Блок кода |
|---|
еsr(config-wan-rule)# outbound interface tengigabitethernet 1/0/2
еsr(config-wan-rule)# outbound interface tengigabitethernet 1/0/1 |
Включим созданное правило балансировки и выйдем из режима конфигурирования правила:
| Блок кода |
|---|
еsr(config-wan-rule)# enable
еsr(config-wan-rule)# exit |
| Scroll Pagebreak |
|---|
Создадим список для проверки целостности соединения:
| Блок кода |
|---|
еsr(config)# wan load-balance target-list google |
Создадим цель проверки целостности:
| Блок кода |
|---|
esr(config-target-list)# target 1 |
Зададим адрес для проверки, включим проверку указанного адреса и выйдем:
| Блок кода |
|---|
еsr(config-wan-target)# ip address 8.8.8.8
еsr(config-wan-target)# enable
еsr(config-wan-target)# exit |
Настроим интерфейсы. В режиме конфигурирования интерфейса te1/0/1 указываем nexthop:
| Блок кода |
|---|
еsr(config)# interface tengigabitethernet 1/0/1
еsr(config-if)# wan load-balance nexthop 203.0.0.1 |
В режиме конфигурирования интерфейса te1/0/1 указываем список целей для проверки соединения:
| Блок кода |
|---|
еsr(config-if)# wan load-balance target-list google |
В режиме конфигурирования интерфейса te1/0/1 включаем WAN-режим и выходим:
| Блок кода |
|---|
еsr(config-if)# wan load-balance enable
еsr(config-if)# exit |
В режиме конфигурирования интерфейса te1/0/2 указываем nexthop:
| Блок кода |
|---|
еsr(config)# interface tengigabitethernet 1/0/2
еsr(config-if)# wan load-balance nexthop 65.6.0.1 |
В режиме конфигурирования интерфейса te1/0/2 указываем список целей для проверки соединения:
| Блок кода |
|---|
еsr(config-if)# wan load-balance target-list google |
В режиме конфигурирования интерфейса te1/0/2 включаем WAN-режим и выходим:
| Блок кода |
|---|
еsr(config-if)# wan load-balance enable
еsr(config-if)# exit |
Для переключения в режим резервирования настроим следующее:
Заходим в режим настройки правила WAN:
| Блок кода |
|---|
еsr(config)# wan load-balance rule 1 |
| Scroll Pagebreak |
|---|
Функция MultiWAN также может работать в режиме резервирования, в котором трафик будет направляться в активный интерфейс с наибольшим весом. Включить данный режим можно следующей командой:
| Блок кода |
|---|
е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
...
esr(config-isis)# net {<NET>}
...
3
...
esr(config-isis)# enable
...
4
...
esr(config-isis)# authentication domain algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм аутентификации:
- cleartext – пароль, передается открытым текстом;
- md5 – пароль, хешируется по алгоритму md5.
...
Установить пароль аутентификации для 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 символов.
...
Выбрать алгоритм аутентификации для L1-уровня (необязательно).
...
esr(config-isis)# authentication area algorithm <ALGORITHM>
...
<ALGORITHM> – алгоритм аутентификации:
- cleartext – пароль, передается открытым текстом;
- md5 – пароль, хешируется по алгоритму md5.
...
Установить пароль аутентификации для L1-уровня (необязательно).
...
esr(config-isis)# authentication area key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> }
...
<CLEAR-TEXT> – пароль, задаётся строкой 8 символов;
<ENCRYPTED-TEXT> – зашифрованный пароль размером 8 байт (16 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...).
...
Установить список ключей для аутентификации (необязательно).
...
esr(config-isis)# authentication area key chain <KEYCHAIN>
...
<KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов.
...
esr(config-isis)# hostname dynamic
...
esr(config-isis)# is-type {<LEVEL>}
...
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-1-2 – работа производится и на 1, и на 2 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-isis)# metric-style { narrow | wide | transition } [<LEVEL>]
...
narrow – принимает и генерирует TLV (о достижимости сетей) старого типа;
wide – принимает и генерирует TLV (о достижимости сетей) нового типа;
transition – принимает и генерирует TLV (о достижимости сетей) нового и старого типа;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-isis)# preference {<VALUE>}
...
Включить работу IS-IS с IPv4 и/или IPv6 адресами (необязательно).
...
esr(config-isis)# address-family { ipv4 | ipv6 }
...
ipv4 – семейство адресов IPv4;
ipv6 – семейство адресов IPv6.
...
esr(config-isis)# lsp-refresh-interval { min | max } <TIME> [ <LEVEL> ]
...
min – минимальный интервал обновления/генерации;
max – максимальный интервал обновления/генерации;
<TIME> – время в секундах, принимает значения [1..65535];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-isis)# max-lsp-lifetime <TIME> [<LEVEL>]
...
<TIME> – время в секундах, принимает значения [1..65535];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-isis)# spf-timeout <TIME> [<LEVEL>]
...
<TIME> – время в миллисекундах, принимает значения [1..10000];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
Включить анонсирование маршрутов, полученных альтернативным способом (необязательно).
...
esr(config-isis)# redistribute bgp <AS> [ route-map <NAME> ] [is-type <LEVEL>]
...
<AS> – номер автономной системы, может принимать значения [1..4294967295];
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых маршрутов, задаётся строкой до 31 символа;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
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> – тип маршрута:
- intra-area – анонсирование маршрутов OSPF-процесса в пределах зоны;
- inter-area – анонсирование маршрутов OSPF-процесса между зонами;
- external1 – анонсирование внешних маршрутов OSPF-формата 1;
- external2 – анонсирование внешних маршрутов OSPF-формата 2;
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
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> – тип маршрута:
- level-1 – анонсирование маршрутов 1 уровня;
- level-2 – анонсирование маршрутов 1 уровня;
- inter-area – анонсирование маршрутов IS-IS-процесса между зонами;
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых IS-IS-маршрутов, задаётся строкой до 31 символа;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-isis)# redistribute rip [ route-map <NAME> ] [is-type <LEVEL>]
...
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых RIP-маршрутов, задаётся строкой до 31 символа;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-isis)# redistribute static [ route-map <NAME> ] [is-type <LEVEL>]
...
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-isis)# redistribute connected [ route-map <NAME> ] [is-type <LEVEL>]
...
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых подключённых маршрутов, задаётся строкой до 31 символа;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
Добавить фильтрацию подсетей во входящих или исходящих обновлениях (необязательно).
...
esr(config-isis)# prefix-list { ipv6 <LIST_NAME> | <LIST_NAME> } {in|out}
...
<LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа.
in – фильтрация входящих маршрутов;
out – фильтрация анонсируемых маршрутов.
...
Добавить фильтрацию подсетей во входящих или исходящих обновлениях (необязательно).
...
esr(config-isis)# route-map <NAME> {in|out}
...
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых маршрутов, задаётся строкой до 31 символа.
...
esr(config-if-gi)# isis instance <ID>
...
esr(config-if-gi)# isis enable
...
...
esr(config-if-gi)# isis hello-padding
...
esr(config-if-gi)# isis priority <VALUE> [<LEVEL>]
...
<VALUE> – число, принимающее значения [0..127];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis metric <VALUE> [<LEVEL>]
...
<VALUE> – число, принимающее значения [1..16777215];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis circuit-type {<LEVEL>}
...
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-1-2 – работа производится и на 1, и на 2 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis hello-interval <TIME> [<LEVEL>]
...
<TIME> – время в секундах, принимает значения [1..65535];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis hello-multiplier <VALUE> [<LEVEL>]
...
<VALUE> – число, принимающее значения [3..1000];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis network point-to-point
...
esr(config-if-gi)# isis csnp-interval <TIME> [<LEVEL>]
...
<TIME> – время в секундах, принимает значения [1..65535];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis psnp-interval <TIME> [<LEVEL>]
...
<TIME> – время в секундах, принимает значения [1..65535];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis lsp-interval <TIME> [<LEVEL>]
...
<TIME> – время в миллисекундах, принимает значения [1-10000];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis lsp-retransmit-interval <TIME> [<LEVEL>]
...
<TIME> – время в секундах, принимает значения [1..65535];
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis authentication algorithm <ALGORITHM> [<LEVEL>]
...
<ALGORITHM> – алгоритм аутентификации:
- cleartext – пароль, передается открытым текстом;
- md5 – пароль, хешируется по алгоритму md5;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
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:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis authentication key chain <KEYCHAIN> [<LEVEL>]
...
<KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов;
<LEVEL> – уровень работы протокола IS-IS:
- level-1 – работа производится только на 1 уровне;
- level-2 – работа производится только на 2 уровне.
...
esr(config-if-gi)# isis bfd-enable
esr(config-if-gi)# isis ipv6-bfd-enable
| Scroll Pagebreak |
|---|
...
Задача:
Настроить протокол IS-IS на маршрутизаторах для обмена маршрутной информацией с соседями. Маршрутизатор ESR1 будет L1-only, ESR2 – L1/L2, ESR3 – L2-only, который также будет находится в другой area.
Решение:
Предварительно нужно настроить IP-адреса на интерфейсах согласно схеме, приведенной на рисунке.
Перейдём к настройке маршрутизатора ESR1. Создадим IS-IS процесс с идентификатором 1 и перейдём в режим конфигурирования протокола:
| Блок кода |
|---|
ESR1(config)# router isis 1 |
Зададим номер зоны, в которой будет работать маршрутизатор и его системный идентификатор:
| Блок кода |
|---|
ESR1(config-isis)# net 49.0001.1111.1111.1111.00 |
Настроим работу маршрутизатора только на первом уровне протокола IS-IS:
| Блок кода |
|---|
ESR1(config-isis)# is-type level-1 |
Зададим работу маршрутизатора с узкой метрикой на первом уровне:
| Блок кода |
|---|
ESR1(config-isis)# metric-style narrow level-1 |
Включим работу процесса IS-IS на маршрутизаторе:
| Блок кода |
|---|
ESR1(config-isis)# enable |
Перейдём к конфигурированию интерфейсов. Нужно задать номер процесса IS-IS, который будет работать на интерфейсе и включить работу самого протокола на нём:
| Блок кода |
|---|
ESR1(config-if-gi)# isis instance 1
ESR1(config-if-gi)# isis enable |
| Scroll Pagebreak |
|---|
Перейдём к настройке маршрутизатора ESR2:
| Блок кода |
|---|
ESR2(config)# router isis 2 |
Зададим номер зоны такой же, как на ESR1, а также уникальный системный идентификатор:
| Блок кода |
|---|
ESR2(config-isis)# net 49.0001.2222.2222.2222.00 |
Зададим работу маршрутизатора с узкой метрикой на первом уровне и с широкой метрикой на втором и включим работу данного процесса IS-IS:
| Блок кода |
|---|
ESR2(config-isis)# metric-style narrow level-1
ESR2(config-isis)# metric-style wide level-2
ESR2(config-isis)# enable
|
Настроим работу интерфейсов на маршрутизаторе. На обоих интерфейсах настройка будет одинаковая:
| Блок кода |
|---|
ESR2(config-if-gi)# isis instance 2
ESR2(config-if-gi)# isis enable
|
Перейдём к настройке маршрутизатора ESR3:
| Блок кода |
|---|
ESR3(config)# router isis 3
ESR3(config-isis)# net 49.0002.3333.3333.3333.00
ESR3(config-isis)# is-type level-2
ESR3(config-isis)# metric-style wide level-2
ESR3(config-isis)# enable
ESR3(config-if-gi)# isis instance 3
ESR3(config-if-gi)# isis enable |
Установление соседства можно посмотреть командой show isis neighbors. Выполним её на ESR2:
| Блок кода |
|---|
ESR2# show isis neighbors
IS-IS 2
IS-IS Level 1 Neighbors
System ID Hostname Interface State Holdtime SNPA
1111.1111.1111 ESR1 gi1/0/2 Up 25 a8f9.4baa.1d42
IS-IS Level 2 Neighbors
System ID Hostname Interface State Holdtime SNPA
3333.3333.3333 ESR3 gi1/0/1 Up 8 a8f9.4bab.813a |
















