Политика фильтрации маршрутной информации
Фильтрация маршрутной информации в динамических протоколах маршрутизации осуществляется с помощью prefix-list и route-map. Структурно они состоят из последовательных условий, совпадений (match) и действий, применяемых для заданных условий - permit/deny. В зависимости от политики обработки маршрутов (импорт или экспорт) конечное неявное условие (правило) может быть разным для некоторых протоколов маршрутизации.
Правила фильтрации маршрутов в prefix-list и route-map выглядят следующим образом:
- В route-map: маршруты сопоставляются с IP-префиксами по очереди в списке правил в соответствии с их нумераций - от самого младшего до самого старшего.
В prefix-list: маршруты сопоставляются с IP-префиксами по очереди в списке IP-префиксов, указанных в prefix-list в том порядке, котором они были заданы при создании/редактировании этого prefix-list. - Если маршрут соответствует префиксу, указанному в последовательности или правиле, к нему применяются описанные действия и он перестает сопоставляться с другими префиксами в списке IP-префиксов.
- Если маршруты не соответствуют ни одному префиксу в списке IP-префиксов, к ним применяется неявное правило в конце prefix-list или route-map.
Ниже приведены блок-схемы с автоматом состояний обработки правил фильтрации маршрутной информации для политик import и export.
Обработка правил фильтрации маршрутной информации политики export для протоколов RIP, OSPF, IS-IS, iBGP:
Обработка правил фильтрации маршрутной информации политики import для протоколов RIP, OSPF, IS-IS, iBGP:
Обработка правил фильтрации маршрутной информации политик import/export для протоколa eBGP:
Далее приведена обобщенная таблица по протоколам:
Протокол RIP
in/out | Политика по умолчанию | Способы Анонсирования | Способы фильтрации | Уровни применения политик фильтрации |
---|---|---|---|---|
Import | Получение маршрутной информации не ограничено | Network, Redistribute | Route-map — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. Prefix-list — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. | Процесс RIP |
Export | Без отдельных команд анонсирования маршрутизатор не отправляет маршрутную информацию | Prefix-list — последнее (неявное) правило разрешает все, что явно не запрещено предыдущими правилами. Prefix-list — последнее (неявное) правило разрешает все, что явно не запрещено предыдущими правилами. |
Протокол OSPF
in/out | Политика по умолчанию | Способы Анонсирования | Способы фильтрации | Уровни применения политик фильтрации |
---|---|---|---|---|
Import | Получение маршрутной информации не ограничено | Network, Redistribute | Route-map — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. Prefix-list — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. | Процесс OSPF |
Export | Анонсируется информация о интерфейсах, на которых включен протокол OSPF | Route-map — последнее (неявное) правило разрешает все, что явно не запрещено предыдущими правилами. Prefix-list — последнее (неявное) правило разрешает все, что явно не запрещено предыдущими правилами. Фильтрация анонсируемой маршрутной информации возможна для следующих типов OSPF-маршрутов: E2, E1. |
Протокол IS-IS
in/out | Политика по умолчанию | Способы Анонсирования | Способы фильтрации | Уровни применения политик фильтрации |
---|---|---|---|---|
Import | Получение маршрутной информации не ограничено | Network, Redistribute | Route-map — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. Prefix-list — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. | Процесс IS-IS |
Export | Анонсируется информация о интерфейсах, на которых включен протокол IS-IS | Route-map — последнее (неявное) правило разрешает все, что явно не запрещено предыдущими правилами. Prefix-list — последнее (неявное) правило разрешает все, что явно не запрещено предыдущими правилами. |
Протокол iBGP
in/out | Политика по умолчанию | Способы Анонсирования | Способы фильтрации | Уровни применения политик фильтрации |
---|---|---|---|---|
Import | Получение маршрутной информации не ограничено | Network, Redistribute | Route-map — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. Prefix-list — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. | address-family, peer-group, neighbor |
Export | Анонсируются все маршруты, попавшие в RIB по протоколу BGP | Route-map — последнее (неявное) правило разрешает все, что явно не разрешено предыдущими правилами. Prefix-list — последнее (неявное) правило разрешает все, что явно не разрешено предыдущими правилами. |
Протокол eBGP
in/out | Политика по умолчанию | Способы Анонсирования | Способы фильтрации | Уровни применения политик фильтрации |
---|---|---|---|---|
Import | Получение маршрутной информации не ограничено | Network, Redistribute | Route-map — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. Prefix-list — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. | address-family, peer-group, neighbor |
Export | Анонсирование маршрутов запрещено до применения разрешающего route-map или prefix-list | Route-map — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. Prefix-list — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами. |
Конфигурирование статических маршрутов
Статическая маршрутизация — вид маршрутизации, при котором маршруты указываются в явном виде при конфигурации маршрутизатора без использования протоколов динамической маршрутизации.
Алгоритм настройки
Добавить статический маршрут возможно командой в режиме глобальной конфигурации:
esr(config)# ip route [ vrf <VRF> ] <SUBNET> { <NEXTHOP> [ resolve ] | interface <IF> | tunnel <TUN> | wan load-balance rule <RULE> [<METRIC>] | blackhole | unreachable | prohibit } [ <METRIC> ] [ track <TRACK-ID> ] [ bfd ]
- <VRF> – имя экземпляра VRF, задается строкой до 31 символа;
- <SUBNET> – адрес назначения, может быть задан в следующем формате:
- AAA.BBB.CCC.DDD – IP-адрес хоста, где каждая часть принимает значения [0..255];
- AAA.BBB.CCC.DDD/NN – IP-адрес подсети с маской в виде префикса, где AAA-DDD принимают значения [0..255] и NN принимает значения [1..32].
- <NEXTHOP> – IP-адрес шлюза задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];
- resolve – при указании данного параметра IPv6-адрес шлюза будет рекурсивно вычислен через таблицу маршрутизации. Если при рекурсивном вычислении не удастся найти шлюз из напрямую подключенной подсети, то данный маршрут не будет установлен в систему. Глубина поиска – 5;
- <IF> – имя IP-интерфейса, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора;
- <TUN> – имя туннеля, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора;
- <RULE> – номер правила wan, задаётся в диапазоне [1..50];
- blackhole – при указании команды пакеты до данной подсети будут удаляться устройством без отправки уведомлений отправителю;
- unreachable – при указании команды пакеты до данной подсети будут удаляться устройством, отправитель получит в ответ ICMP Destination unreachable (Host unreachable, code 1);
- prohibit – при указании команды пакеты до данной подсети будут удаляться устройством, отправитель получит в ответ ICMP Destination unreachable (Communication administratively prohibited, code 13);
- bfd – при указании данного ключа активируется удаление статического маршрута в случае недоступности next-hop.
Для добавления статического IPv6-маршрута к указанной подсети используется команда:
ipv6 route [ vrf <VRF> ] <SUBNET> { <NEXTHOP> [ resolve ] | interface <IF> | wan load-balance rule <RULE> | blackhole | unreachable | prohibit } [ <METRIC> ] [ bfd ]
- <VRF> – имя экземпляра VRF, задается строкой до 31 символа;
- <SUBNET> – адрес назначения, может быть задан в следующих видах:
- X:X:X:X::X – IPv6-адрес хоста, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF];
- X:X:X:X::X/EE – IPv6-адрес подсети с маской в виде префикса, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128].
- <NEXTHOP> – IPv6-адрес шлюза, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF];
- resolve – при указании данного параметра IPv6-адрес шлюза будет рекурсивно вычислен через таблицу маршрутизации. Если при рекурсивном вычислении не удастся найти шлюз из напрямую подключенной подсети, то данный маршрут не будет установлен в систему. Глубина поиска – 5;
- <IF> – имя IP-интерфейса, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора;
- blackhole – при указании команды пакеты до данной подсети будут удаляться устройством без отправки уведомлений отправителю;
- unreachable – при указании команды пакеты до данной подсети будут удаляться устройством, отправитель получит в ответ ICMP Destination unreachable (Host unreachable, code 1);
- prohibit – при указании команды пакеты до данной подсети будут удаляться устройством, отправитель получит в ответ ICMP Destination unreachable (Communication administratively prohibited, code 13);
- [METRIC] – метрика маршрута, принимает значения [0..255].
- bfd – при указании данного ключа активируется удаление статического маршрута в случае недоступности next-hop.
Пример настройки статических маршрутов
Задача:
Настроить доступ к сети Internet для пользователей локальных сетей 192.168.1.0/24 и 10.0.0.0/8, используя статическую маршрутизацию. На устройстве R1 создать шлюз для доступа к сети Internet. Трафик внутри локальной сети должен маршрутизироваться внутри зоны LAN, трафик из сети Internet должен относиться к зоне WAN.
Решение:
Зададим имя устройства для маршрутизатора R1:
esr# hostname R1
Для интерфейса gi1/0/1 укажем адрес 192.168.1.1/24 и зону «LAN». Через данный интерфейс R1 будет подключен к сети 192.168.1.0/24:
esr(config)# interface gi1/0/1 esr(config-if-gi)# security-zone LAN esr(config-if-gi)# ip address 192.168.1.1/24 esr(config-if-gi)# exit
Для интерфейса gi1/0/2 укажем адрес 192.168.100.1/30 и зону «LAN». Через данный интерфейс R1 будет подключен к устройству R2 для последующей маршрутизации трафика:
esr(config)# interface gi1/0/2 esr(config-if-gi)# security-zone LAN esr(config-if-gi)# ip address 192.168.100.1/30 esr(config-if-gi)# exit
Для интерфейса gi1/0/3 укажем адрес 128.107.1.2/30 и зону «WAN». Через данный интерфейс R1 будет подключен к сети Internet:
esr(config)# interface gi1/0/3 esr(config-if-gi)# security-zone WAN esr(config-if-gi)# ip address 128.107.1.2/30 esr(config-if-gi)# exit
Создадим маршрут для взаимодействия с сетью 10.0.0.0/8, используя в качестве шлюза устройство R2 (192.168.100.2):
esr(config)# ip route 10.0.0.0/8 192.168.100.2
Создадим маршрут для взаимодействия с сетью Internet, используя в качестве nexthop шлюз провайдера (128.107.1.1):
esr(config)# ip route 0.0.0.0/0 128.107.1.1
Зададим имя устройства для маршрутизатора R2:
esr# hostname R2
Для интерфейса gi1/0/1 укажем адрес 10.0.0.1/8 и зону «LAN». Через данный интерфейс R2 будет подключен к сети 10.0.0.0/8:
esr(config)# interface gi1/0/1 esr(config-if-gi)# security-zone LAN esr(config-if-gi)# ip address 10.0.0.1/8 esr(config-if-gi)# exit
Для интерфейса gi1/0/2 укажем адрес 192.168.100.2/30 и зону «LAN». Через данный интерфейс R2 будет подключен к устройству R1 для последующей маршрутизации трафика:
esr(config)# interface gi1/0/2 esr(config-if-gi)# security-zone LAN esr(config-if-gi)# ip address 192.168.100.2/30 esr(config-if-gi)# exit
Создадим маршрут по умолчанию, указав в качестве nexthop IP-адрес интерфейса gi1/0/2 маршрутизатора R1 (192.168.100.1):
esr(config)# ip route 0.0.0.0/0 192.168.100.1
Проверить таблицу маршрутов можно командой:
esr# show ip route
Настройка RIP
RIP — дистанционно-векторный протокол динамической маршрутизации, который использует количество транзитных участков в качестве метрики маршрута. Максимальное количество транзитных участков (hop), разрешенное в RIP, равно 15. Каждый RIP-маршрутизатор по умолчанию вещает в сеть свою полную таблицу маршрутизации один раз в 30 секунд. RIP работает на 3 уровне стека TCP/IP, используя UDP-порт 520.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить приоритетность протокола RIP-маршрутизации для основной таблицы маршрутизации (не обязательно). | esr(config)# ip protocols rip preference <VALUE> | <VALUE> – приоритетность протокола, принимает значения в диапазоне [1..255]. Значение по умолчанию: RIP (100). |
2 | Настроить емкость таблиц маршрутизации протокола RIP (не обязательно). | esr(config)# ip protocols rip max-routes <VALUE> | <VALUE> – количество маршрутов протокола RIP в маршрутной таблице, принимает значения в диапазоне [1..10000]; 10000. |
3 | Создать списки IP-подсетей, которые в дальнейшем будут использоваться для фильтрации анонсируемых и получаемых IP-маршрутов. | esr(config)# ip prefix-list <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
4 | Разрешить (permit) или запретить (deny) списки префиксов. | esr(config-pl)# permit {object-group <OBJ-GROUP-NETWORK-NAME > <ADDR/LEN> | <IPV6-ADDR/LEN> } [ { eq <LEN> | le <LEN> | ge <LEN> [ le <LEN> ] } ] | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа; <LEN> – длина префикса, принимает значения [1..32] в IP-списках префиксов;
|
esr(config-pl)# deny {object-group <OBJ-GROUP-NETWORK-NAME> <ADDR/LEN> | <IPV6-ADDR/LEN> } [ { eq <LEN> | le <LEN> | ge <LEN> [ le <LEN> ] } | |||
5 | Перейти в режим настройки параметров RIP-процесса. | esr(config)# router rip esr(config-rip)# | |
6 | Включить RIP-протокол. | esr(config-rip)# enable | |
7 | Определить алгоритм аутентификации протокола RIP (не обязательно). | esr(config-rip)# authentication algorithm { cleartext | md5 } |
|
8 | Установить пароль для аутентификации с соседом (не обязательно). | esr(config-rip)# authentication key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
9 | Определить список паролей для аутентификации через алгоритм хеширования md5 (не обязательно). | esr(config-rip)# authentication key-chain <KEYCHAIN> | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов. |
10 | Выключить анонсирование маршрутов на интерфейсах/туннелях/bridge, где это не нужно (не обязательно). | esr(config-rip)# passive-interface {<IF> | <TUN> } | <IF> – интерфейс и идентификатор; <TUN> – имя и номер туннеля. |
11 | Установить временной интервал, по истечении которого производится анонсирование (не обязательно). | esr(config-rip)# timers update <TIME> | <TIME> – время в секундах, принимает значения [12..65535]. Значение по умолчанию: 180 секунд. |
12 | Установить временной интервал корректности маршрутной записи без обновления (не обязательно). | esr(config-rip)# timers invalid <TIME> | <TIME> – время в секундах, принимает значения [12..65535]. Значение по умолчанию: 180 секунд. |
13 | Установить временной интервал, по истечении которого производиться удаление маршрута (не обязательно). | esr(config-rip)# timers flush <TIME> | <TIME> – время в секундах, принимает значения [12..65535]. При установке значения нужно учитывать следующее правило: «timersinvalid + 60» Значение по умолчанию: 240 секунд. |
14 | Включить анонсирование подсетей. | esr(config-rip)# network <ADDR/LEN> | <ADDR/LEN> – адрес подсети, указывается в следующем формате: AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32]. |
15 | Добавить фильтрацию подсетей во входящих или исходящих обновлениях (не обязательно). | esr(config-rip)# prefix-list <PREFIX-LIST-NAME> { in | out } | <PREFIX-LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа.
|
16 | Включить анонсирование маршрутов, полученных альтернативным способом (не обязательно). | esr(config-rip)# redistribute static [ route-map <NAME> ] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа. |
esr(config-rip)# redistribute connected [ route-map <NAME> ] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых напрямую подключенных подсетей, задаётся строкой до 31 символа. | ||
esr(config-rip)# redistribute ospf <ID><ROUTE-TYPE> [ route-map <NAME> ] | <ID> – номер процесса, может принимать значение [1..65535]; <ROUTE-TYPE> – тип маршрута:
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа. | ||
esr(config-rip)# redistribute bgp <AS> [ route-map <NAME> ] | <AS> – номер автономной системы, может принимать значения [1..4294967295]; <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа. | ||
17 | Перейти в режим конфигурирования интерфейса/туннеля/сетевого моста. | esr(config)# interface <IF-TYPE><IF-NUM> | <IF-TYPE> – тип интерфейса; <IF-NUM> – F/S/P – F-фрейм (1), S – слот (0), P – порт. |
esr(config)# tunnel <TUN-TYPE><TUN-NUM> | <TUN-TYPE> – тип туннеля; <TUN-NUM> – номер туннеля. | ||
esr(config)# bridge <BR-NUM> | <BR-NUM> – номер bridge. | ||
18 | Установить величину метрики RIP-маршрутов на интерфейсе (не обязательно). | esr(config-if-gi)# ip rip metric <VALUE> | <VALUE> – величина метрики, задаётся в размере [0..32767]. Значение по умолчанию: 5. |
19 | Установить режим анонсирования маршрутов по протоколу RIP (не обязательно). | esr(config-if-gi)# ip rip mode <MODE> | <MODE> – режим анонсирования маршрутов:
Значение по умолчанию: multicast. |
20 | Задать IP-адрес соседа для установления отношения в unicast-режиме анонсирования маршрутов (не обязательно). | esr(config-if-gi)# ip rip neighbor <ADDR> | <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
21 | Включить суммаризацию подсетей (не обязательно). | esr(config-if-gi)# ip rip summary-address <ADDR/LEN> | <ADDR/LEN> – IP-адрес и маска подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. |
Пример настройки RIP
Задача:
Настроить на маршрутизаторе протокол RIP для обмена маршрутной информацией с соседними маршрутизаторами. Маршрутизатор должен анонсировать статические маршруты и подсети 115.0.0.0/24, 14.0.0.0/24, 10.0.0.0/24. Анонсирование маршрутов должно происходить каждые 25 секунд.
Решение:
Предварительно нужно настроить IP-адреса на интерфейсах согласно схеме сети, приведенной на рисунке.
Перейдём в режим конфигурирования протокола RIP:
esr(config)# router rip
Укажем подсети, которые будут анонсироваться протоколом: 115.0.0.0/24, 14.0.0.0/24 и 10.0.0.0/24:
esr(config-rip)# network 115.0.0.0/24 esr(config-rip)# network 14.0.0.0/24 esr(config-rip)# network 10.0.0.0/24
Для анонсирования протоколом статических маршрутов выполним команду:
esr(config-rip)# redistribute static
Настроим таймер, отвечающий за отправку маршрутной информации:
esr(config-rip)# timers update 25
После установки всех требуемых настроек включаем протокол:
esr(config-rip)# enable
Для того чтобы просмотреть таблицу маршрутов RIP, воспользуемся командой:
esr# show ip rip
Помимо настройки протокола RIP необходимо в firewall разрешить UDP-порт 520.
Настройка RIPng
RIPng - дистанционно-векторный протокол динамической маршрутизации использующий алгоритм Беллмана-Форда для нахождения наилучшего маршрута. Данная версия протокола включает в себя поддержку работы с IPv6. RIPng работает на 3 уровне стека TCP/IP, используя UDP-порт 521.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить приоритетность протокола RIPng для основной таблицы маршрутизации (не обязательно). | esr(config)# ipv6 protocols rip preference <VALUE> | <VALUE> – приоритетность протокола, принимает значения в диапазоне [1..255]. Значение по умолчанию: RIPng (100). |
2 | Настроить емкость таблиц маршрутизации протокола RIPng (не обязательно). | esr(config)# ipv6 protocols rip max-routes <VALUE> | <VALUE> – количество маршрутов протокола RIP в маршрутной таблице, принимает значения в диапазоне [1..10000]; 10000. |
3 | Создать списки IPv6-подсетей, которые в дальнейшем будут использоваться для фильтрации анонсируемых и получаемых IPv6-маршрутов. | esr(config)# ipv6 prefix-list <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
4 | Разрешить (permit) или запретить (deny) списки префиксов. | esr(config-pl)# permit {object-group <OBJ-GROUP-NETWORK-NAME > <IPV6-ADDR/LEN> } [ { eq <LEN> | le <LEN> | ge <LEN> [ le <LEN> ] } ] | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа; <IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задаётся в виде X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128];
|
esr(config-pl)# deny {object-group <OBJ-GROUP-NETWORK-NAME> <IPV6-ADDR/LEN> } [ { eq <LEN> | le <LEN> | ge <LEN> [ le <LEN> ] } | |||
5 | Перейти в режим настройки параметров RIPng-процесса. | esr(config)# ipv6 router rip esr(config-ripng)# | |
6 | Включить протокол RIPng. | esr(config-ripng)# enable | |
7 | Выключить анонсирование маршрутов на интерфейсах/туннелях/bridge, где это не нужно (не обязательно). | esr(config-ripng)# passive-interface {<IF> | <TUN>| <BR-NUM> } | <IF> – интерфейс и идентификатор; <BR-NUM> - номер bridge; <TUN> – имя и номер туннеля. |
8 | Установить временной интервал, по истечении которого производится анонсирование (не обязательно). | esr(config-ripng)# timers update <TIME> | <TIME> – время в секундах, принимает значения [12..65535]. Значение по умолчанию: 180 секунд. |
9 | Установить временной интервал корректности маршрутной записи без обновления (не обязательно). | esr(config-ripng)# timers invalid <TIME> | <TIME> – время в секундах, принимает значения [12..65535]. Значение по умолчанию: 180 секунд. |
10 | Установить временной интервал, по истечении которого производиться удаление маршрута (не обязательно). | esr(config-ripng)# timers flush <TIME> | <TIME> – время в секундах, принимает значения [12..65535]. При установке значения нужно учитывать следующее правило: «timersinvalid + 60» Значение по умолчанию: 240 секунд. |
11 | Включить анонсирование подсетей. | esr(config-ripng)# network <IPV6-ADDR/LEN> | <IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задаётся в виде X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128]. |
12 | Добавить фильтрацию подсетей во входящих или исходящих обновлениях (не обязательно). | esr(config-ripng)# prefix-list <PREFIX-LIST-NAME> { in | out } | <PREFIX-LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа.
|
13 | Включить анонсирование маршрутов, полученных альтернативным способом (не обязательно). | esr(config-ripng)# redistribute static [ route-map <NAME> ] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа. |
esr(config-ripng)# redistribute connected [ route-map <NAME> ] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых напрямую подключенных подсетей, задаётся строкой до 31 символа. | ||
esr(config-ripng)# redistribute ospf <ID><ROUTE-TYPE> [ route-map <NAME> ] | <ID> – номер процесса, может принимать значение [1..65535]; <ROUTE-TYPE> – тип маршрута:
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа. | ||
esr(config-ripng)# redistribute bgp <AS> [ route-map <NAME> ] | <AS> – номер автономной системы, может принимать значения [1..4294967295]; <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа. | ||
14 | Перейти в режим конфигурирования интерфейса/туннеля/сетевого моста. | esr(config)# interface <IF-TYPE><IF-NUM> | <IF-TYPE> – тип интерфейса; <IF-NUM> – F/S/P – F-фрейм (1), S – слот (0), P – порт. |
esr(config)# tunnel <TUN-TYPE><TUN-NUM> | <TUN-TYPE> – тип туннеля; <TUN-NUM> – номер туннеля. | ||
esr(config)# bridge <BR-NUM> | <BR-NUM> – номер bridge. | ||
15 | Установить величину метрики RIPng-маршрутов на интерфейсе (не обязательно). | esr(config-if-gi)# ipv6 rip metric <VALUE> | <VALUE> – величина метрики, задаётся в размере [0..32767]. Значение по умолчанию: 5. |
16 | Включить суммаризацию подсетей (не обязательно). | esr(config-if-gi)# ipv6 rip summary-address <IPV6-ADDR/LEN> | <IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задаётся в виде X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128]. |
Пример настройки RIPng
Задача:
Настроить на маршрутизаторах протокол RIPng для обмена маршрутной информацией. Маршрутизаторы должны анонсировать адреса, присвоенные Loopback интерфейсам.
Решение:
Предварительно нужно настроить IPv6-адреса на интерфейсах согласно схеме сети, приведенной выше.
Перейдём в режим конфигурирования протокола RIPng и укажем сети, которые будут анонсироваться протоколом:
ESR1(config)# ipv6 router rip ESR1(config-ripng)# network c00:0:1409:3900::1/128
На втором маршрутизаторе производим аналогичные действия:
ESR2(config)# ipv6 router rip ESR2(config-ripng)# network c00:0:1409:3900::2/128
Активируем протокол RIPng на обоих маршрутизаторах:
ESR1(config-ripng)# enable ESR2(config-ripng)# enable
Проверяем распространение маршрутной информации:
ESR1# sh ipv6 route rip R * fc00:0:1409:3900::2/128 [100/2] via fe80::aaf9:4bff:fead:fed2 on gi1/0/1 [rip 06:01:33] ESR2# sh ipv6 route rip R * fc00:0:1409:3900::2/128 [100/2] via fe80::aaf9:4bff:fead:fed1 on gi1/0/1 [rip 06:01:33]
На этом базовая настройка протокола RIPng закончена.
Настройка OSPF
OSPF — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути алгоритм Дейкстры.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Настроить приоритетность протокола OSPF-маршрутизации для основной таблицы маршрутизации (не обязательно). | esr(config)# ip protocols ospf preference <VALUE> | <VALUE> – приоритетность протокола, принимает значения в диапазоне [1..255]. Значение по умолчанию: 150. |
esr(config-vrf)# ip protocols ospf preference <VALUE> | |||
2 | Настроить емкость таблиц маршрутизации протокола OSPF (не обязательно). | esr(config)# ip protocols ospf max-routes <VALUE> | <VALUE> – количество маршрутов протокола OSPF в маршрутной таблице, принимает значения в диапазоне:
Значение по умолчанию для глобального режима:
Значение по умолчанию для VRF: 0. |
esr(config)# ipv6 protocols ospf max-routes <VALUE> | |||
3 | Включить вывод информации о состоянии отношений с соседями для протокола маршрутизации OSPF (не обязательно). | esr(config)# router ospf log-adjacency-changes | |
esr(config)# ipv6 router ospf log-adjacency-changes | |||
4 | Создать списки IP-подсетей, которые в дальнейшем будут использоваться для фильтрации анонсируемых и получаемых IP-маршрутов (не обязательно). | esr(config)# ip prefix-list <NAME> | <NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа. |
esr(config)# ipv6 prefix-list <NAME> | |||
5 | Разрешить (permit) или запретить (deny) списки префиксов (не обязательно). | esr(config-pl)# permit [ { object-group <OBJ-GROUP-NETWORK-NAME> | <ADDR/LEN> | <IPV6-ADDR/LEN> } ] [ { eq <LEN> | le <LEN> | ge <LEN> [ le <LEN> ] } ] | <OBJ-GROUP-NETWORK-NAME> – имя профиля IPv4/IPv6 -адресов, задаётся строкой до 31 символа; <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <LEN> – длина префикса, принимает значения [1..32] в IP-списках префиксов;
|
esr(config-pl)# deny [ { object-group <OBJ-GROUP-NETWORK-NAME> | <ADDR/LEN > | <IPV6-ADDR/LEN> } ] [ { eq <LEN> | le <LEN> | ge <LEN> [ le <LEN> ] } ] | |||
6 | Добавить OSPF-процесс в систему и осуществить переход в режим настройки параметров OSPF-процесса. | esr(config)# router ospf <ID> [vrf <VRF>] | <ID> – номер автономной системы процесса, принимает значения [1..65535] <VRF> – имя экземпляра VRF, задается строкой до 31 символа, в рамках которого будет работать протокол маршрутизации. |
esr(config)# ipv6 router ospf <ID> [vrf <VRF>] | |||
7 | Установить идентификатор маршрутизатора для данного OSPF-процесса. | esr(config-ospf)# router-id { <ID> | <IF> | <TUN> } | <ID> – идентификатор маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. <IF> – интерфейс, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора. <TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора. |
esr(config-ipv6-ospf)# router-id { <ID> | <IF> | <TUN> } | |||
8 | Определить приоритетность маршрутов процесса OSPF (не обязательно). | esr(config-ospf)# preference <VALUE> | <VALUE> – приоритетность маршрутов процесса OSPF, принимает значения в диапазоне [1..255]. |
esr(config-ipv6-ospf)# preference <VALUE> | |||
9 | Определить максимальное количество равнозначных маршрутов до цели (не обязательно). | esr(config-ospf)# maximum-path <PATHS> | <PATHS> – количество равноценных маршрутов до цели, принимает значения в диапазоне [1..32]. Значение по умолчанию: 16. |
esr(config-ipv6-ospf)# maximum-path <PATHS> | |||
10 | Включить совместимость с RFC 1583 (не обязательно). | esr(config-ospf)# compatible rfc1583 | |
esr(config-ipv6-ospf)# compatible rfc1583 | |||
11 | Добавить фильтрацию подсетей во входящих или исходящих обновлениях (не обязательно). | esr(config-ospf)# prefix-list <PREFIX-LIST-NAME> { in | out } | <PREFIX-LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа.
|
esr(config-ipv6-ospf)# prefix-list <PREFIX-LIST-NAME> { in | out } | |||
12 | Включить анонсирование маршрутов, полученных альтернативным способом (не обязательно). | esr(config-ospf)# redistribute static [metric <TYPE> <METRIC>] [ route-map <NAME> ] | <TYPE> – тип атрибута OSPF Metric, принимает значение type-1 и type-2; <METRIC> – значение атрибута OSPF Metric, принимает значения [0..65535]. <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа. |
esr(config-ipv6-ospf)# redistribute static [metric <TYPE> <METRIC>] [route-map <NAME> ] | |||
esr(config-ospf)# redistribute connected [metric <TYPE> <METRIC>] [ route-map <NAME> ] | <TYPE> – тип атрибута OSPF Metric, принимает значение type-1 и type-2; <METRIC> – значение атрибута OSPF Metric, принимает значения [0..65535]. <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых напрямую подключенных подсетей, задаётся строкой до 31 символа. | ||
esr(config-ipv6-ospf)# redistribute connected [metric <TYPE> <METRIC>] [ route-map <NAME> ] | |||
esr(config-ospf)# redistribute rip [metric <TYPE> <METRIC>] [ route-map <NAME> ] | <TYPE> – тип атрибута OSPF Metric, принимает значение type-1 и type-2; <METRIC> – значение атрибута OSPF Metric, принимает значения [0..65535]. <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых RIP-маршрутов, задаётся строкой до 31 символа. | ||
esr(config-ospf)# redistribute isis <ID> <ROUTE-TYPE> [metric <TYPE> <METRIC>] [ route-map <NAME> ] | <TYPE> – тип атрибута OSPF Metric, принимает значение type-1 и type-2; <METRIC> – значение атрибута OSPF Metric, принимает значения [0..65535]. <ID> – номер процесса, может принимать значение [1..65535]. <ROUTE-TYPE> – тип маршрута:
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа. | ||
esr(config-ipv6-ospf)# redistribute isis <ID> <ROUTE-TYPE> [ route-map <NAME> ] | |||
esr(config-ospf)# redistribute bgp <AS> [metric <TYPE> <METRIC>] [ route-map <NAME> ] | <TYPE> – тип атрибута OSPF Metric, принимает значение type-1 и type-2; <METRIC> – значение атрибута OSPF Metric, принимает значения [0..65535]. <AS> – номер автономной системы, может принимать значения [1..4294967295]; <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа. | ||
13 | Активировать OSPF-процесс. | esr(config-ipv6-ospf)# redistribute bgp <AS> [metric <TYPE> <METRIC>] [ route-map <NAME> ] | |
esr(config-ipv6-ospf)# enable | |||
14 | Создать OSPF-область и перейти в режим конфигурирования области. | esr(config-ospf)# area <AREA_ID> | <AREA_ID> – идентификатор области, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-ipv6-ospf)# area <AREA_ID> | |||
15 | Включить анонсирование подсетей (не обязательно). | esr(config-ospf-area)# network <ADDR/LEN> | <ADDR/LEN> – адрес подсети, указывается в следующем формате: AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32]. |
esr(config-ipv6-ospf-area)# network <IPV6-ADDR/LEN> | <IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задаётся в виде X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128]. | ||
16 | Определить тип области (не обязательно). | esr(config-ospf-area)# area-type <TYPE> [ no-summary ] | <TYPE> – тип области:
|
esr(config-ipv6-ospf-area)# area-type <TYPE> [ no-summary ] | |||
17 | Включить генерацию маршрута по умолчанию для NSSA или stub-области и анонсирование его в качестве Type-7 или Type-3 LSA соответственно (не обязательно). | esr(config-ospf-area)# default-information-originate | |
esr(config-ipv6-ospf-area)# default-information-originate | |||
18 | Определить тип метрики маршрута по умолчанию для NSSA-области (не обязательно). | esr(config-ospf-area)# default-metric-type <TYPE> |
|
esr(config-ipv6-ospf-area)# default-metric-type <TYPE> | |||
19 | Активировать OSPF-область. | esr(config-ospf-area)# enable | |
esr(config-ipv6-ospf-area)# enable | |||
20 | Установить виртуальное соединение между основной и удаленными областями, имеющими между ними несколько областей (не обязательно). | esr(config-ospf-area)# virtual-link <ID> | <ID> – идентификатор маршрутизатора, с которым устанавливается виртуальное соединение, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-ipv6-ospf-area)# virtual-link <ID> | |||
21 | Установить интервал времени в секундах, по истечении которого маршрутизатор повторно отправит пакет, который не получил подтверждения о получении (не обязательно). | esr(config-ospf- vlink)# restransmit-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 5 секунд. |
esr(config-ipv6-ospf- vlink)# restransmit-interval <TIME> | |||
22 | Установить интервал времени в секундах, по истечении которого маршрутизатор отправляет следующий hello-пакет (не обязательно). | esr(config-ospf- vlink)# hello-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 10 секунд. |
esr(config-ipv6-ospf- vlink)# hello-interval <TIME> | |||
23 | Установить интервал времени в секундах, по истечении которого сосед будет считаться неактивным (не обязательно). Этот интервал должен быть кратным значению «hello-interval». | esr(config-ospf- vlink)# dead-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 40 секунд. |
esr(config-ipv6-ospf- vlink)# dead-interval <TIME> | |||
24 | Определяется интервал времени в секундах, по истечении которого маршрутизатор выберет DR в сети (не обязательно). | esr(config-ospf- vlink)# wait-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. |
esr(config-ipv6-ospf- vlink)# wait-interval <TIME> | |||
25 | Определить алгоритм аутентификации (не обязательно). | esr(config-ospf- vlink)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации:
|
26 | Установить пароль для аутентификации с соседом (не обязательно). | esr(config-ospf- vlink)# authentication key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов. <ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
27 | Определить список паролей для аутентификации через алгоритм хеширования md5 (не обязательно). | esr(config-ospf- vlink)# authentication key chain <KEYCHAIN> | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов. |
28 | Активировать виртуальное соединение (не обязательно). | esr(config-ospf- vlink)# enable | |
29 | Перейти в режим конфигурирования интерфейса/туннеля/сетевого моста. | esr(config)# interface <IF-TYPE><IF-NUM> | <IF-TYPE> тип интерфейса; <IF-NUM> – F/S/P – F-фрейм (1), S – слот (0), P – порт. |
esr(config)# tunnel <TUN-TYPE><TUN-NUM> | <TUN-TYPE> – тип туннеля; <TUN-NUM> – номер туннеля. | ||
esr(config)# bridge <BR-NUM> | <BR-NUM> – номер bridge. | ||
30 | Определить принадлежность интерфейса/туннеля/сетевого моста к определенному OSPF-процессу. | esr(config-if-gi)# ip ospf instance <ID> | <ID> – номер процесса, принимает значения [1..65535]. |
esr(config-if-gi)# ipv6 ospf instance <ID> | |||
31 | Определить принадлежность интерфейса к определенной области OSPF-процесса. | esr(config-if-gi)# ip ospf area <AREA_ID> | <AREA_ID> – идентификатор области, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-if-gi)# ipv6 ospf area <AREA_ID> | |||
32 | Включить маршрутизацию по протоколу OSPF на интерфейсе. | esr(config-if-gi)# ip ospf | |
esr(config-if-gi)# ipv6 ospf | |||
33 | Включить режим, в котором OSPF-процесс будет игнорировать значение MTU интерфейса во входящих Database Description-пакетах (не обязательно). | esr(config-if-gi)# ip ospf mtu-ignore | |
esr(config-if-gi)# ipv6 ospf mtu-ignore | |||
34 | Определить алгоритм аутентификации протокола OSPF (не обязательно). | esr(config-if-gi)# ip ospf authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации:
|
35 | Установить пароль для аутентификации с OSPF-соседом при передаче пароля открытым текстом (не обязательно). | esr(config-if-gi)# ip ospf authentication key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
36 | Определить список паролей для аутентификации по алгоритму хеширования md5 с соседом (не обязательно). | esr(config-if-gi)# ip ospf authentication key-chain <KEYCHAIN> | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов. |
37 | Определить интервал времени в секундах, по истечении которого маршрутизатор выберет DR в сети (не обязательно). | esr(config-if-gi)# ip ospf wait-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 40 секунд. |
esr(config-if-gi)# ipv6 ospf wait-interval <TIME> | |||
38 | Установить интервал времени в секундах, по истечении которого маршрутизатор повторно отправит пакет, на который не получил подтверждения о получении (не обязательно). | esr(config-if-gi)# ip ospf restransmit-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 5 секунд. |
esr(config-if-gi)# ipv6 ospf restransmit-interval <TIME> | |||
39 | Установить интервал времени в секундах, по истечении которого маршрутизатор отправляет следующий hello-пакет (не обязательно). | esr(config-if-gi)# ip ospf hello-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 10 секунд. |
esr(config-if-gi)# ipv6 ospf hello-interval <TIME> | |||
40 | Установить интервал времени в секундах, по истечении которого сосед будет считаться неактивным (не обязательно). Этот интервал должен быть кратным значению hello-interval. | esr(config-if-gi)# ip dead-interval <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 40 секунд. |
esr(config-if-gi)# ipv6 dead-interval <TIME> | |||
41 | Установить интервал времени, в течение которого NBMA-интерфейс ждет, прежде чем отправить HELLO-пакет соседу, даже в случае, если сосед неактивен (не обязательно). | esr(config-if-gi)# ip poll-interval <TIME> | <TIME> – время в секундах, принимает значения [1 .. 65535]. Значение по умолчанию: 120 секунд. |
esr(config-if-gi)# ipv6 poll-interval <TIME> | |||
42 | Задать статический IP-адрес соседа для установления отношения в NMBA и P2MP (Point-to-MultiPoint) сетях (не обязательно). | esr(config-if-gi)# ip ospf neighbor <IP> [ eligible ] | <IP> – IP-адрес соседа, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. eligible – опциональный параметр, позволяет устройству участвовать в процессе выбора DR в NBMA-сетях. Приоритет интерфейса должен быть больше нуля. |
esr(config-if-gi)# ip ospf neighbor <IP> [ eligible ] | <IPV6-ADDR> – IPv6-адрес соседа, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]; eligible – опциональный параметр, позволяет устройству участвовать в процессе выбора DR в NBMA-сетях. Приоритет интерфейса должен быть больше нуля. | ||
43 | Определить тип сети для установления OSPF-соседства (не обязательно). | esr(config-if-gi)# ip ospf network <TYPE> | <TYPE> – тип сети:
Значение по умолчанию: broadcast. |
esr(config-if-gi)# ipv6 ospf network <TYPE> | |||
44 | Перевести интерфейс в пассивный режим работы. В этом режиме не рассылаются hello-пакеты, не устанавливаются отношения соседства, но подключенная сеть анонсируется соседям. (не обязательно) | esr(config-if-gi)# ip ospf passive-interface | |
esr(config-if-gi)# ipv6 ospf passive-interface | |||
45 | Установить приоритет маршрутизатора, который используется для выбора DR и BDR (не обязательно). | esr(config-if-gi)# ip ospf priority <VALUE> | <VALUE> – приоритет интерфейса, принимает значения [1..65535]. Значение по умолчанию: 120. |
esr(config-if-gi)# ipv6 ospf priority <VALUE> | |||
46 | Установить величину метрики на интерфейсе или туннеле (не обязательно). | esr(config-if-gi)# ip ospf cost <VALUE> | <VALUE> – величина метрики, задаётся в размере [0..32767]. Значение по умолчанию: 10. |
esr(config-if-gi)# ipv6 ospf cost <VALUE> | |||
47 | Включить протокол BFD для протокола OSPF (не обязательно). | esr(config-if-gi)# ip ospf bfd-enable | |
esr(config-if-gi)# ipv6 ospf bfd-enable |
Пример настройки OSPF
Задача:
Настроить протокол OSPF на маршрутизаторе для обмена маршрутной информацией с соседними маршрутизаторами. Маршрутизатор должен находиться в области с идентификатором 1.1.1.1 и анонсировать маршруты, полученные по протоколу RIP.
Решение:
Предварительно нужно настроить IP-адреса на интерфейсах согласно схеме, приведенной на рисунке.
Создадим OSPF-процесс с идентификатором 10 и перейдём в режим конфигурирования протокола OSPF:
esr(config)# router ospf 10
Создадим и включим требуемую область:
esr(config-ospf)# area 1.1.1.1 esr(config-ospf-area)# enable esr(config-ospf-area)# exit
Включим анонсирование маршрутной информации из протокола RIP:
esr(config-ospf)# redistribute rip
Включим OSPF-процесс:
esr(config-ospf)# enable esr(config-ospf)# exit
Соседние маршрутизаторы подключены к интерфейсам gi1/0/5 и gi1/0/15. Для установления соседства с другими маршрутизаторами привяжем их к OSPF-процессу и области. Далее включим на интерфейсе маршрутизацию по протоколу OSPF:
esr(config)# interface gigabitethernet 1/0/5 esr(config-if-gi)# ip ospf instance 10 esr(config-if-gi)# ip ospf area 1.1.1.1 esr(config-if-gi)# ip ospf esr(config-if-gi)# exit
esr(config)# interface gigabitethernet 1/0/15 esr(config-if-gi)# ip ospf instance 10 esr(config-if-gi)# ip ospf area 1.1.1.1 esr(config-if-gi)# ip ospf esr(config-if-gi)# exit esr(config)# exit
Пример настройки OSPF stub area
Задача:
Изменить тип области 1.1.1.1, область должна быть тупиковой.
Решение:
Предварительно нужно настроить протокол OSPF и IP-адреса на интерфейсах согласно схеме, приведенной на рисунке.
Изменим тип области на тупиковый. На каждом маршрутизаторе из области 1.1.1.1 в режиме конфигурирования области выполним команду:
esr(config-ospf-area)# area-type stub
Пример настройки Virtual link
Задача:
Объединить две магистральные области в одну с помощью virtual link.
Решение:
В firewall необходимо разрешить протокол OSPF (89).
Virtual link — это специальное соединение, которое позволяет соединять разорванную на части зону или присоединить зону к магистральной через другую зону. Настраивается между двумя пограничными маршрутизаторами зоны (Area Border Router, ABR).
Предварительно нужно настроить протокол OSPF и IP-адреса на интерфейсах согласно схеме, приведенной на рисунке.
На маршрутизаторе R1 перейдем в режим конфигурирования области 1.1.1.1:
esr(config-ospf)# area 1.1.1.1
Создадим virtual link с идентификатором 0.0.0.3 и включим его:
esr(config-ospf-area)# virtual-link 0.0.0.3 esr(config-ospf-vlink)# enable
На маршрутизаторе R3 перейдем в режим конфигурирования области 1.1.1.1:
esr(config-ospf)# area 1.1.1.1
Создадим virtual link с идентификатором 0.0.0.1 и включим его:
esr(config-ospf-area)# virtual-link 0.0.0.1 esr(config-ospf-vlink)# enable
Рассмотрим таблицу маршрутизации на маршрутизаторе R1:
esr# show ip route C * 10.0.0.0/24 [0/0] dev gi1/0/12, [direct 00:49:34] O * 10.0.1.0/24 [150/20] via 10.0.0.1 on gi1/0/12, [ospf1 00:49:53] (0.0.0.3) O * 192.168.20.0/24 [150/30] via 10.0.0.1 on gi1/0/12, [ospf1 00:50:15] (0.0.0.3) C * 192.168.10.0/24 [0/0] dev lo1, [direct 21:32:01]
Рассмотрим таблицу маршрутизации на маршрутизаторе R3:
esr# show ip route O * 10.0.0.0/24 [150/20] via 10.0.1.1 on gi1/0/12, [ospf1 14:38:35] (0.0.0.2) C * 10.0.1.0/24 [0/0] dev gi1/0/12, [direct 14:35:34] C * 192.168.20.0/24 [0/0] dev lo1, [direct 14:32:58] O * 192.168.10.0/24 [150/30] via 10.0.1.1 on gi1/0/12, [ospf1 14:39:54] (0.0.0.1)
Так как OSPF считает виртуальный канал частью области, в таблице маршрутизации R1 маршруты, полученные от R3, отмечены как внутризоновые и наоборот.
Для просмотра соседей можно воспользоваться следующей командой:
esr# show ip ospf neighbors 10
Таблицу маршрутов протокола OSPF можно просмотреть командой:
esr# show ip ospf 10
Настройка BGP
Протокол 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 в маршрутной таблице, принимает значения в диапазоне:
Значение по умолчанию для глобальной таблицы маршрутизации:
Значение по умолчанию для 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-адрес и маска подсети, задается в виде:
<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:
<OBJ-GRP-NETNAME> – имя профиля IP-адресов, задаётся строкой до 31 символа*; <LEN>, <LEN 1>, <LEN 2> – длина префикса, принимает значения [1..32] в IP-списках префиксов для IPv4 и [1..128] для IPv6; eq – при указании команды длина префикса должна соответствовать указанной; le – при указании команды длина префикса должна быть меньше либо соответствовать указанной; ge – при указании команды длина префикса должна быть больше либо соответствовать указанной; ge <LEN 1> le <LEN 2> – при указании команды длина префикса должна быть больше либо соответствовать <LEN>, но меньше или равна <LEN1>. *При использовании фильтрации по object-group их необходимо создать заранее. |
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-адрес и маска подсети, задается в виде:
<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задаётся в виде:
<OBJ-GRP-NETNAME> – имя профиля IP -адресов, задаётся строкой до 31 символа*; <LEN>, <LEN 1>, <LEN 2> – длина префикса, принимает значения [1..32] в IP-списках префиксов для IPv4 и [1..128] для IPv6; eq – при указании команды длина префикса должна соответствовать указанной; le – при указании команды длина префикса должна быть меньше либо соответствовать указанной; ge – при указании команды длина префикса должна быть больше либо соответствовать указанной; ge <LEN 1> le <LEN 2> – при указании команды длина префикса должна быть больше либо соответствовать <LEN> но меньше или равна <LEN1>. *При использовании фильтрации по object-group их необходимо создать заранее. |
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..65535]. Значение по умолчанию: 60 секунд. |
11 | Установить временной интервал, по истечении которого встречная сторона считается недоступной (не обязательно). | esr(config-bgp-af)# timers holdtime <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 180 секунд. |
12 | Установить время минимальной и максимальной задержки, в течение которого запрещено устанавливать соединение, в целях защиты от частых разрывов соединения (не обязательно). | esr(config-bgp-af)# timers error-wait <TIME1> <TIME2> | <TIME1> – время минимальной задержки в секундах, принимает значения [1..65535]; <TIME2> – время максимальной задержки в секундах, принимает значения [1..65535]. |
13 | Определить глобальный алгоритм аутентификации с соседями (при необходимости). | esr(config-bgp)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм шифрования:
Значение по умолчанию: шифрование не используется. |
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> – тип маршрута:
<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> | <ADDR/LEN> – адрес подсети, указывается в одном из следующих формате:
|
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-af)# 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]. |
30 | Включить BFD-протокол на конфигурируемом BGP-соседе (не обязательно, используется совместно с параметром update-source). | esr(config-bgp-neighbor)# bfd-enable | |
31 | Определить алгоритм аутентификации с соседом (не обязательно). | esr(config-bgp-neighbor)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм шифрования: md5 – пароль шифруется по алгоритму md5. |
32 | Установить пароль для аутентификации с соседом (не обязательно). | 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...). |
33 | Сделать соседство активным. | esr(config-bgp-neighbor)# enable | |
34 | Определить тип конфигурируемой маршрутной информации соседа и перейти в данный режим настройки. | esr(config-bgp-neighbor)# address-family { ipv4 | ipv6 | vpnv4 } unicast | ipv 4 – семейство IPv4; ipv 6 – семейство IPv6; vpnv4 – семейство VPNv4. |
35 | При выборе режима фильтрации на основе префикс-листов добавить фильтрацию подсетей во входящих или исходящих обновлениях (обязательно при конфигурировании eBGP для анонсирования подсетей). | esr(config-bgp-neighbor-af)# prefix-list <PREFIX-LIST-NAME> { in | out } | <PREFIX-LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа. in – фильтрация входящих маршрутов; out – фильтрация анонсируемых маршрутов. |
36 | Задать режим, в котором BGP-соседу в обновлении на ряду с другими маршрутами всегда отправляется маршрут по умолчанию. (не обязательно, отсутствует для vpnv4). | esr(config-bgp-neighbor-af)# default-originate | |
37 | Задать режим, в котором все обновления отправляются BGP-соседу с указанием в качестве next-hop IP-адреса исходящего интерфейса локального маршрутизатора | esr(config-bgp-neighbor-af)# next-hop-self | |
38 | Определить приоритетность маршрутов, получаемых от соседа (не обязательно). | esr(config-bgp-neighbor-af)# preference <VALUE> | <VALUE> – приоритетность маршрутов соседа, принимает значения в диапазоне [1..255]. Значение по умолчанию: 170. |
39 | Задать режим, в котором перед отправлением обновления из 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. |
40 | Включить обмен маршрутной информацией. | esr(config-bgp-neighbor-af)# enable | |
41 | Задать режим, в котором маршрутизатор будет представляться указанным номером автономной системы вместо реального номера автономной системы (не обязательно). | esr(config-bgp-neighbor)# local-as <AS> | <AS> – номер автономной системы, принимает значения [1..4294967295]. |
42 | Не добавлять указанный в local-as номер автономной системы в AS-Path при приёме маршрута (не обязательно). | esr(config-bgp-local-as)# no-prepend | |
43 | Добавлять в AS-Path только номер автономной системы, указанный в local-as (не обязательно). | esr(config-bgp-local-as)# replace-as | |
44 | Включить агрегирование маршрутной информации (не обязательно). | esr(config-bgp)# aggregate-address { <ADDR/LEN> | <IPV6-ADDR/LEN } | <ADDR/LEN> – IP-адрес и маска подсети, задается в виде:
<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:
|
45 | Задать route-map для установки дополнительных условий агрегирования маршрутов (не обязательно). | esr(config-bgp-aggregate)# advertise-map [ route-map <NAME> ] | <NAME> – имя маршрутной карты, которая будет использоваться для задания условий агрегирования BGP-маршрутов, задаётся строкой до 31 символа. |
46 | Добавлять в AS-Path агрегированного маршрута номера автономных систем из AS-Path его компонентов (не обязательно). | esr(config-bgp-aggregate)# as-set | |
47 | Задать route-map для установки дополнительных аттрибутов агрегированного маршрута (не обязательно). | esr(config-bgp-aggregate)# attribute-map [ route-map <NAME> ] | <NAME> – имя маршрутной карты, которая будет использоваться для задания атрибутов агрегированного BGP-маршрута, задаётся строкой до 31 символа. |
48 | Подавлять все компоненты агрегированного маршрута (не обязательно). | esr(config-bgp-aggregate)# summary-only | |
49 | Задать route-map для подавления компонентов агрегированного маршрута (не обязательно). | esr(config-bgp-aggregate)# suppress-map [ route-map <NAME> ] | <NAME> – имя маршрутной карты, которая будет использоваться для задания подавляемых компонентов агрегированного BGP-маршрута, задаётся строкой до 31 символа. |
Часто бывает, особенно при конфигурировании 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.
Решение:
Сконфигурируем необходимые сетевые интерфейсы:
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 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
Создадим 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.
Для VPNv4 маршрутов выбор лучшего маршрута происходит следующим образом:
Сначала выбор лучшего маршрута происходит в рамках своего RD. Далее в рамках VRF, куда он попадет в соответствии своего RT.
Прежде всего проверяется доступность next-hop-a у маршрута. Next-hop считается доступным, если до него можно определить connected-маршрут.
- Маршрут, помеченный как "stale", является менее приоритетным, чем маршрут без таковой метки. Маршрут помечается как "stale" в процессе работы технологии LLGR (подробнее);
- Сравнивается значение атрибута Weight – лучшим становится маршрут, имеющий большее значение;
- Сравнивается значение атрибута Local preferences – лучшим становится маршрут, имеющий большее значение;
- Сравнивается длина AS-path – маршрут с меньшим количеством "хопов" становится лучшим;
- Сравнивается значение атрибута Origin – IGP является самым приоритетным. EGP приоритетнее, чем Incomplete;
- Сравнивается значение атрибута multiple exit discriminator (MED) – наименьшее значение атрибута имеет больший приоритет;
- Маршрут, полученный от EBGP-пира, имеет больший приоритет по сравнению с маршрутом, полученным от IBGP-пира;
7.1 Если включен ECMP, то дальнейших сравнений не производится и маршрут (multipath) попадет в таблицу маршрутизации; - Сравнивается параметр Router-Id – маршрут, полученный от BGP-соседа с наименьшим 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
Условное анонсирование маршрутной информации ( Conditional Advertisement )
В обычных сценариях BGP анонсирует все лучшие маршруты из своей BGP RIB. Иногда необходимо более гибкое управление анонсируемой маршрутной информацией. Для этого случая может подойти функционал Conditional advertisement, который позволяет описать условия, при совпадении которых, будет анонсироваться ( или наоборот отзываться) необходимая маршрутная информация.
В текущей реализации функционал поддержан для IPv4( AFI -1 , SAFI -1), IPv6 (AFI -2 , SAFI -1) маршрутов.
Реализована поддержка как для GRT, так и в VRF.
Для работы функционала Conditional advertisement необходимо выполнить следующие шаги:
- Описать маршрутные карты с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 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 exit
Ниже привидена диаграмма состояний для условия EXIST-MAP и ее описание:
После активации функционала, 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
Далее планировщик проверяет условие EXIST-MAP для соответствующей сondition-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
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
Настройка BFD
BFD (Bidirectional Forwarding Detection) — это протокол, работающий поверх других протоколов, позволяющий сократить время обнаружения проблемы до 50 мс. BFD является двусторонним протоколом, т. е. требует настройки обоих маршрутизаторов (оба маршрутизатора генерируют BFD-пакеты и отвечают друг другу).
По умолчанию, сессия устанавливается в следующем режиме:
Протокол | Режим |
---|---|
iBGP | multi-hop |
eBGP | single-hop |
eBGP multi-hop | multi-hop |
OSPF | single-hop |
Static route | single-hop |
Для изменения поведения (режима) необходимо в ручную переопределить параметры сессии, указав необходимый режим. Рассмотрим на примере:
Допустим, мы установили eBGP-соседство и включили для него BFD:
ESR# show running-config routing bgp router bgp 65516 neighbor 10.100.0.2 remote-as 65515 update-source 10.100.0.1 bfd-enable 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
Конфигурацию необходимо производить на обоих устройствах. После переустановки сессии ее режим сменится на 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 для протокола BGP neighbor на интерфейсе. | esr(config-bgp-neighbor)# bfd-enable | |
3 | Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. Глобально (не обязательно). | esr(config)# ip bfd idle-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне:
По умолчанию: 1 секунда. |
4 | Включить логирование изменений состояния BFD-протокола (не обязательно). | esr(config)# ip bfd log-adjacency-changes | |
5 | Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение. | esr(config)# ip bfd min-rx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
6 | Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config)# ip bfd min-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
7 | Задать число пропущенных пакетов, после достижения которого BFD-сосед считается недоступным. Глобально. | esr(config)# ip bfd multiplier <COUNT> | <COUNT> – число пропущенных пакетов, после достижения которого сосед считается недоступным, принимает значение в диапазоне [1..100]. По умолчанию: 5. |
8 | Запустить работу механизма BFD с определенным IP-адресом. | esr(config)# ip bfd neighbor <ADDR> [ { interface <IF> | tunnel <TUN> } ] | <ADDR> – IP-адрес шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IF> – интерфейс или группы интерфейсов; <TUN> – тип и номер туннеля; <VRF> – имя экземпляра VRF, задается строкой до 31 символа; multihop – ключ для установки TTL=255, для работы механизма BFD через маршрутизируемую сеть. |
9 | Перевести BFD-сессию в пассивный режим, то есть BFD-сообщения не будут отправляться до тех пор, пока не будут получены сообщения от BFD-соседа. Глобально (не обязательно). | esr(config)# ip bfd passive | |
10 | Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config-if-gi)# ip bfd idle-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне:
По умолчанию: 1 секунда. |
11 | Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение. | esr(config-if-gi)# ip bfd min-rx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
12 | Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу. | esr(config-if-gi)# ip bfd min-tx-interval <TIMEOUT> | <TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:
По умолчанию:
|
13 | Задать число пропущенных пакетов, после достижения которого BFD-сосед считается недоступным. | esr(config-if-gi)# ip bfd multiplier <COUNT> | <COUNT> – число пропущенных пакетов, после достижения которого сосед считается недоступным, принимает значение в диапазоне [1..100]. По умолчанию: 5. |
14 | Перевести BFD-сессию в пассивный режим, то есть BFD-сообщения не будут отправляться до тех пор, пока не будут получены сообщения от BFD-соседа. На интерфейсе | esr(config-if-gi)# ip bfd passive | |
15 | При активизации работы протока BFD на интерфейсе с включенным firewall, необходимо разрешить работу протокола UDP порт назначения – 3784 из зоны сконфигурированной на интерфейсе в зону self. Как создать необходимое правило описано в разделе Конфигурирование Firewall. |
Пример настройки BFD c BGP
Задача:
Необходимо настроить eBGP между ESR 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
Настроим 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)# bfd-enable 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
Настроим 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)# bfd-enable esr(config-bgp-neighbor)# enable esr(config-bgp-neighbor)# exit esr(config-bgp)# enable esr(config-bgp)# exit
Настройка политики маршрутизации PBR
Алгоритм настройки Route-map для BGP
Route-map могут служить фильтрами, позволяющими обрабатывать маршрутную информацию при приеме этой информации от соседа либо при ее передаче соседу. Обработка может включать в себя фильтрацию на основании различных признаков маршрута, а также установку атрибутов (MED, AS-PATH, community, LocalPreference и другое) на соответствующие маршруты.
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать маршрутную карту для фильтрации и модификации IP-маршрутов. | esr(config)# route-map <NAME> | <NAME> – имя маршрутной карты, задается строкой до 31 символа. |
2 | Создать правило маршрутной карты. | esr(config-route-map)# rule <ORDER> | <ORDER> – номер правила, принимает значения [1 .. 10000]. |
3 | Указать действие, которое должно быть применено для маршрутной информации. | esr(config-route-map-rule)# action <ACT> | <ACT> – назначаемое действие:
|
4 | Задать значение атрибута BGP AS-Path в маршруте, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match as-path { [begin | contain | end ] <AS-PATH> | empty | regex <REGEX> } | <AS-PATH> – список номеров автономных систем, задается в виде AS,AS,AS, принимает значения [1..4294967295]. Опциональные параметры: <REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions
|
5 | Задать значение атрибута BGPCommunity, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match community { <COMMUNITY-LIST> | regex <REGEX> } | <COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, принимает значения [1..4294967295]. Можно указать до 64 community.
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions |
6 | Задать значение атрибута BGPExtendedCommunity, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match extcommunity { <EXTCOMMUNITY-LIST> | regex <REGEX> } | <EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где KIND – тип extcommunity:
N – номер extcommunity, принимает значения [1..65535].
<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions |
7 | Задать профиль IP-адресов, содержащий значения подсетей назначения в маршруте (не обязательно). | esr(config-route-map-rule)# match ip address object-group <OBJ-GROUP-NETWORK-NAME> | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задаётся строкой до 31 символа. |
esr(config-route-map-rule)# match ipv6 address object-group <OBJ-GROUP-NETWORK-NAME> | |||
8 | Задать профиль IP-адресов, содержащий значения атрибута BGPNext-Hop в маршруте для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match ip next-hop object-group <OBJ-GROUP-NETWORK-NAME> | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа. |
esr(config-route-map-rule)# match ipv6 next-hop object-group <OBJ-GROUP-NETWORK-NAME> | |||
9 | Задать профиль, содержащий IP-адреса маршрутизатора, анонсировавшего маршрут, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match ip route-source object-group <OBJ-GROUP-NETWORK-NAME> | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа. |
esr(config-route-map-rule)# match ipv6 route-source object-group <OBJ-GROUP-NETWORK-NAME> | |||
10 | Задать ACL-группу, для которой должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match access-group <NAME> | <NAME> – имя списка контроля доступа, задается строкой до 31 символа. |
11 | Задать значение атрибута BGP MED в маршруте для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match metric bgp <METRIC> | <METRIC> – значение атрибута BGPMED, принимает значения [0..4294967295]. |
12 | Задать значение атрибута OSPF Metric в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match metric ospf <TYPE> <METRIC> | <TYPE> – тип атрибута OSPF Metric, принимает значение type-1 и type-2; <METRIC> – значение атрибута OSPF Metric, принимает значения [0..65535]. |
13 | Задать значение атрибута RIP Metric в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match metric rip <METRIC> | <METRIC> – значение атрибута RIP Metric, принимает значения [0..16]. |
14 | Задать значение атрибута OSPF Tag в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match tag ospf <TAG> | <TAG> – значение атрибута OSPF Tag, принимает значения [0..4294967295]. |
15 | Задать значение атрибута RIP Tag в маршруте, для которого должно срабатывать правило. | esr(config-route-map-rule)# match tag rip <TAG> | <RIP> – значение атрибута RIP Tag, принимает значения [0..65535]. |
16 | Задать значение атрибута BGP AS-Path, которое будет добавляться в начало списка AS-Path (не обязательно). | esr(config-route-map-rule)# action set as-path | <AS-PATH> – список номеров автономных систем, который будет добавлен к текущему значению в маршруте. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295]. <TCACK-ID> – идентификатор vrrp-tracking, при котором будет исполняться указанное действие. Изменяется в диапазоне [1..60]. |
17 | Задать значение атрибута BGP Community, которое будет установлено в маршруте (не обязательно). | esr(config-route-map-rule)# action set community {COMMUNITY-LIST> | no-advertise | no-export } | <COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, где каждая часть принимает значения [1..65535];
|
18 | Задать значение атрибута BGP ExtCommunity, которое будет установлено в маршруте (не обязательно). | esr(config-route-map-rule)# action set extcommunity <EXTCOMMUNITY-LIST> | <EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где KIND – тип extcommunity:
N – номер extcommunity, принимает значения [1..65535]. |
19 | Задать атрибут BGP Next-Hop, который будет установлен в маршруте при анонсировании (не обязательно). | esr(config-route-map-rule)# action set ip bgp-next-hop <ADDR> | <ADDR> – IP-адрес шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-route-map-rule)# action set ipv6 bgp-next-hop <IPV6-ADDR> | <IPV6-ADDR> – IPv6-адрес шлюза, задается в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
20 | Задать значение Next-Hop, которое будет установлено в маршруте, полученном по BGP (не обязательно). | esr(config-route-map-rule)# action set ip next-hop {NEXTHOP> | blackhole | unreachable | prohibit} | <NEXTHOP> – IP-адрес шлюза, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];
|
esr(config-route-map-rule)# action set ipv6 next-hop <IPV6-NEXTHOP> | <IPV6-NEXTHOP> – IPv6-адрес шлюза, задается в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
21 | Задать значение атрибута BGP Local Preference, который будет установлен в маршруте (не обязательно). | esr(config-route-map-rule)# action set local-preference <PREFERENCE> | <PREFERENCE> – значение атрибута BGP Local Preference, принимает значения [0..255]. |
22 | Задать значение атрибута BGP Origin, которое будет установлено в маршруте (не обязательно). | esr(config-route-map-rule)# action set origin <ORIGIN> | <ORIGIN> – значение атрибута BGP Origin:
|
23 | Задать значение BGP MED, которое будет установлено в маршруте | esr(config-route-map-rule)# action set metric bgp <METRIC> | <METRIC> – значение атрибута BGP MED, принимает значения [0..4294967295]. |
24 | Добавить фильтрацию и модификацию маршрутов во входящих или исходящих направлениях. | esr(config-bgp-neighbor)# route-map <NAME><DIRECTION> | <NAME> – имя сконфигурированной маршрутной карты; <DIRECTION> – направление:
|
esr(config-ipv6-bgp-neighbor)# route-map <NAME><DIRECTION> |
Пример настройки 1. Route-map для BGP
Задача:
Назначить сommunity для маршрутной информации, приходящей из AS20:
Предварительно нужно выполнить следующие действия:
- Настроить BGP c AS2500 на маршрутизаторе ESR;
- Установить соседство с AS20.
Решение:
Создаем политику:
esr# configure esr(config)# route-map from-as20
Создаем правило 1:
esr(config-route-map)# rule 1
Если AS PATH содержит AS20, то назначаем ему сommunity 20:2020 и выходим:
esr(config-route-map-rule)# match as-path contain 20 esr(config-route-map-rule)# action set community 20:2020 esr(config-route-map-rule)# exit esr(config-route-map)# exit
В BGP процессе AS2500 заходим в настройки параметров соседа:
esr(config)# router bgp 2500 esr(config-bgp)# neighbor 185.0.0.2 esr(config-bgp-neighbor)# address-family ipv4 unicast
Привязываем политику к принимаемой маршрутной информации:
esr(config-bgp-neighbor-af)# route-map from-as20 in
Пример настройки 2. Route-map для BGP
Задача:
Для всей передаваемой маршрутной информации (с community 2500:25) назначить MED, равный 240, и указать источник маршрутной информации EGP:
Предварительно:
Настроить BGP c AS2500 на ESR.
Решение:
Создаем политику:
esr(config)# route-map to-as20
Создаем правило:
esr(config-route-map)# rule 1
Если community содержит 2500:25, то назначаем ему MED 240 и Origin EGP:
esr(config-route-map-rule)# match community 2500:25 esr(config-route-map-rule)# action set metric bgp 240 esr(config-route-map-rule)# action set origin egp esr(config-route-map-rule)# exit esr(config-route-map)# exit
В BGP процессе AS2500 заходим в настройки параметров соседа:
esr(config)# router bgp 2500 esr(config-bgp)# neighbor 185.0.0.2 esr(config-bgp-neighbor-af)# address-family ipv4 unicast
Привязываем политику к анонсируемой маршрутной информации:
esr(config-bgp-neighbor-af)# route-map to-as20 out esr(config-bgp-neighbor-af)# exit esr(config-bgp-neighbor)# exit esr(config-bgp)# exit
Пример настройки 3. Использование регулярных выражений в Route-map для BGP
Начиная с версии 1.23 доступно использование регулярных выражений в Route-map для контроля распространения маршрутной информации по протоколу BGP. Контроль можно производить по трём атрибутам BGP: AS-path, community, extcommunity. Синтаксис регулярных выражений соответствует стандарту POSIX ERE. В таблице ниже представлены некоторые примеры регулярных выражений.
Условие совпадения | Регулярное выражение |
---|---|
Маршруты с любым содержимым AS-path | .* |
Маршруты с пустым AS-path | ^$ |
Маршруты с одной, любой AS в AS-path | ^[0-9]+$ |
Маршруты с двумя, любыми AS в AS-path | ^[0-9]+ [0-9]+$ |
Маршруты, зарождённые в AS 15 | (^|.* )15$ |
Маршруты, полученные из AS 20 | ^20( .*|$) |
Маршруты, проходящие через AS 22 | .* 22 .* |
Маршруты, проходящие через AS 30, а затем через AS 22 | .* 22 30 .* |
Маршруты, проходящие через AS 30 или AS 43 | .* (30|43) .* |
Маршруты, зарождённые в AS 66 и проходящие через AS 60 | .* 60 (.* )*66$ |
Маршруты, зарождённые в AS 70 или проходящие через неё | .* 70( .*|$) |
Маршруты, содержащие приватные AS в AS-path | (^|.* )((6451[2-9])|(645[2-9][0-9])|(64[6-9][0-9]{2})|(65[0-4][0-9]{2})|(655[0-2][0-9])|(6553[0-4]))( .*|$) |
Номер AS 100, номер community 200 | ^100:200$ |
Номера AS 112 или 232, любой номер community | ^(112|232):[0-9]*$ |
Номер AS 277, номер community начинается с 3 | ^277:3[0-9]*$ |
Любой номер AS, номер community в диапазоне 150-1230 | ^([0-9]*):((1[5-9][0-9])|([2-9][0-9]{2})|(1[0-2][0-2][0-9])|(1230))$ |
Тип route target, ip адрес 10.10.10.1, номер extcommunity 653 и 654 | ^rt:10\.10\.10\.1:65[34]$ |
Алгоритм настройки Route-map на основе списков доступа (Policy-based routing)
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать маршрутную карту для фильтрации и модификации IP-маршрутов. | esr(config)# route-map <NAME> | <NAME> – имя маршрутной карты, задаётся строкой до 31 символа. |
2 | Создать правило маршрутной карты. | esr(c onfig-route-map)# rule <ORDER> | <ORDER> – номер правила, принимает значения [1 .. 10000]. |
3 | Указать действие, которое должно быть применено для маршрутной информации. | esr(config-route-map-rule)# action <ACT> | <ACT> – назначаемое действие:
|
4 | Задать ACL, для которого должно срабатывать правило (не обязательно). | esr(config-route-map-rule)# match ip access-group <NAME> | <NAME> – имя списка контроля доступа, задаётся строкой до 31 символа. |
5 | Задать Next-Hop для пакетов, которые попадают под критерии в указанном списке доступа (ACL) (не обязательно). | esr(config-route-map-rule)# action set ip next-hop verify-availability <NEXTHOP><METRIC> | <NEXTHOP> – IP-адрес шлюза задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <METRIC> – метрика маршрута, принимает значения [0..255]. |
6 | Назначить политику маршрутизации на основе списков доступа (ACL). | esr(config-if-gi)# ip policy route-map <NAME> | <NAME> – имя сконфигурированной политики маршрутизации, строка до 31 символа. |
7 | Разрешить фильтрацию и модификацию локального трафика на основе политики маршрутизации. | esr(config)# ip local policy [ vrf <VRF> ] route-map <NAME> | <NAME> – имя сконфигурированной политики маршрутизации, строка до 31 символа. |
Пример настройки Route-map на основе списков доступа (Policy-based routing)
Задача:
Распределить трафик между Интернет-провайдерами на основе подсетей пользователей.
Предварительно нужно назначить IP-адреса на интерфейсы.
Требуется направлять трафик с адресов 10.0.20.0/24 через ISP1 (184.45.0.150), а трафик с адресов 10.0.30.0/24 – через ISP2 (80.16.0.23). Требуется контролировать доступность адресов провайдеров (работоспособность подключений к ISP), и при неработоспособности одного из подключений переводить с него на рабочее подключение весь трафик.
Решение:
Создаем ACL:
esr# configure esr(config)# ip access-list extended sub20 esr(config-acl)# rule 1 esr(config-acl-rule)# match source-address 10.0.20.0 255.255.255.0 esr(config-acl-rule)# match destination-address any esr(config-acl-rule)# match protocol any esr(config-acl-rule)# action permit esr(config-acl-rule)# enable esr(config-acl-rule)# exit esr(config-acl)# exit esr(config)# ip access-list extended sub30 esr(config-acl)# rule 1 esr(config-acl-rule)# match source-address 10.0.30.0 255.255.255.0 esr(config-acl-rule)# match destination-address any esr(config-acl-rule)# match protocol any esr(config-acl-rule)# action permit esr(config-acl-rule)# enable esr(config-acl-rule)# exit esr(config-acl)# exit
Создаем политику:
esr(config)# route-map PBR
Создаем правило 1:
esr(config-route-map)# rule 1
Указываем список доступа (ACL) в качестве фильтра:
esr(config-route-map-rule)# match ip access-group sub20
Указываем next-hop для sub20:
esr(config-route-map-rule)# action set ip next-hop verify-availability 184.45.0.150 10 esr(config-route-map-rule)# action set ip next-hop verify-availability 80.16.0.23 30 esr(config-route-map-rule)# exit esr(config-route-map)# exit
Правилом 1 будет обеспечена маршрутизация трафика из сети 10.0.20.0/24 на адрес 184.45.0.150, а при его недоступности – на адрес 80.16.0.23. Приоритетность шлюзов задается значениями метрик – 10 и 30.
Создаем правило 2:
esr(config-route-map)# rule 2
Указываем список доступа (ACL) в качестве фильтра:
esr(config-route-map-rule)# match ip access-group sub30
Указываем nexthop для sub30 и выходим:
esr(config-route-map-rule)# action set ip next-hop verify-availability 80.16.0.23 10 esr(config-route-map-rule)# action set ip next-hop verify-availability 184.45.0.150 30 esr(config-route-map-rule)# exit esr(config-route-map)# exit
Правилом 2 будет обеспечена маршрутизация трафика из сети 10.0.30.0/24 на адрес 80.16.0.23, а при его недоступности – на адрес 184.45.0.150. Приоритетность задается значениями метрик.
Заходим на интерфейс TE 1/0/1:
esr(config)# interface tengigabitethernet 1/0/1
Привязываем политику на соответствующий интерфейс:
esr(config-if-te)# ip policy route-map PBR
Настройка VRF
VRF (Virtual Routing and Forwarding) – технология, которая позволяет изолировать маршрутную информацию, принадлежащую различным классам (например, маршруты одного клиента).
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать экземпляр VRF и перейти в режим настройки параметров экземпляра VRF. | esr(config)# ip vrf <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
2 | Назначить описание конфигурируемого экземпляра VRF. | esr(config-vrf)# description <DESCRIPTION> | <DESCRIPTION> – описание экземпляра VRF, задаётся строкой до 255 символов. |
3 | Настроить емкость таблиц маршрутизации в конфигурируемом VRF для IPv4/IPv6 протоколов маршрутизации (не обязательно). | esr(config-vrf)# ip protocols <PROTOCOL> max-routes <VALUE> | <PROTOCOL> – вид протокола, принимает значения: ospf, bgp; <VALUE> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:
Значение по умолчанию: 0. |
esr(config-vrf)#ipv6 protocols <PROTOCOL> max-routes <VALUE> | |||
4 | Включить и настроить протоколы динамической маршрутизации трафика (Static/OSPF/BGP/IS-IS) в экземпляре VRF (не обязательно). См. соответствующий раздел Конфигурирование статических маршрутов, Настройка OSPF и Настройка BGP. | ||
5 | В режиме конфигурирования физического/логического интерфейса, туннеля, правила DNAT/SNAT, DAS-сервера или SNMPv3 пользователя указать имя экземпляра VRF для которого будет использоваться (при необходимости). | esr(config-snat-ruleset)# ip vrf forwarding <VRF> | <VRF> – имя экземпляра VRF, задается строкой до 31 символа. |
6 | Настроить LT-туннель для передачи трафика в глобальный режим или другие VRF (при необходимости). | См. раздел Настройка LT-туннелей. |
Пример настройки
Задача:
К маршрутизатору серии ESR подключены 2 сети, которые необходимо изолировать от остальных сетей.
Решение:
Создадим VRF:
esr(config)# ip vrf bit esr(config-vrf)# exit
Создадим зону безопасности:
esr(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 source-address any esr(config-zone-rule)# match destination-address any esr(config-zone-rule)# match protocol udp esr(config-zone-rule)# match source-port any esr(config-zone-rule)# match destination-port any 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 source-address any esr(config-zone-rule)# match destination-address any esr(config-zone-rule)# match protocol tcp esr(config-zone-rule)# match source-port any esr(config-zone-rule)# match destination-port any 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-subif)# ip vrf forwarding bit esr(config-subif)# ip address 10.30.0.1/16 esr(config-subif)# security-zone vrf-sec esr(config-subif)# exit esr(config)# exit
Информацию об интерфейсах, привязанных к VRF, можно посмотреть командой:
esr# show ip vrf
Таблицу маршрутов VRF можно просмотреть с помощью команды:
esr# show ip route vrf bit
Настройка MultiWAN
Технология MultiWAN позволяет организовать отказоустойчивое соединение с резервированием линков от нескольких провайдеров, а также решает проблему балансировки трафика между резервными линками.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Сконфигурировать интерфейсы, по которым будет работать MultiWAN: установить IP-адреса и указать security-zone. | ||
2 | Прописать статические маршруты через WAN (если необходимо). | esr(config)# ip route <SUBNET> wan load-balance rule <ID> [<METRIC>] | <ID> – идентификатор создаваемого правила из п.2. [METRIC] – метрика маршрута, принимает значения [0..255]. |
3 | Создать правило WAN и перейти в режим настройки параметров правила. | esr(config)# wan load-balance rule <ID> | <ID> – идентификатор создаваемого правила, принимает значения [1..50]. |
4 | Задать интерфейсы или туннели, которые являются шлюзами в маршруте, создаваемом службой MultiWAN. | esr(config-wan-rule)# outbound | <IF>– имя интерфейса; <TUN> – имя туннеля; [WEIGHT] – вес туннеля или интерфейса, определяется в диапазоне [1..255]. Если установить значение 2, то по данному интерфейсу будет передаваться в 2 раза больше трафика, чем по интерфейсу со значением по умолчанию. В режиме резервирования активным будет маршрут с наибольшим весом. Значение по умолчанию 1. |
5 | Описать правила (не обязательно). | esr(config-wan-rule)# description <DESCRIPTION> | <DESCRIPTION> – описание правила wan, задаётся строкой до 255 символов. |
6 | Данной командой осуществляется переключение из режима балансировки в режим резервирования (если необходимо). | esr(config-wan-rule)# failover | |
7 | Данной командой включается отправка ответных пакетов сессии через тот же интерфейс, через который получены входящие пакеты сессии (если необходимо). | esr(config-wan-rule)# stickiness | |
8 | Включить wan-правило. | esr(config-wan-rule)# enable | |
9 | Создать список IP-адресов для проверки целостности соединения и осуществить переход в режим настройки параметров списка. | esr(config)# wan load-balance target-list <NAME> | <NAME> – название списка, задается строкой до 31 символа. |
10 | Задать цель проверки и перейти в режим настройки параметров цели. | esr(config-target-list)# target <ID> | <ID> – идентификатор цели, задаётся в пределах [1..50]. Если при удалении используется значение параметра «all», то будут удалены все цели для конфигурируемого списка целей. |
11 | Описать target (не обязательно). | esr(config-wan-target)# description <DESCRIPTION> | <DESCRIPTION> – описание target, задаётся строкой до 255 символов. |
12 | Указать время ожидания ответа на запрос по протоколу ICMP (не обязательно). | esr(config-wan-target)# resp-time <TIME> | <TIME> – время ожидания, определяется в секундах [1..30]. |
13 | Указать IP-адрес проверки. | esr(config-wan-target)# ip address <ADDR> | <ADDR> – IP-адрес назначения, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
esr(config-wan-target)# ipv6 address <IPV6-ADDR> | <IPV6-ADDR> – IPv6-адрес назначения, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
14 | Включить проверку цели. | esr(config-wan-target)# enable | |
Команды для пунктов 14–17 необходимо применить на интерфейсах/туннелях в MultiWAN. | |||
15 | Включить WAN-режим на интерфейсе для IPv4/IPv6-стека. | esr(config-if-gi)# wan load-balance enable | |
esr(config-if-gi)# ipv6 wan load-balance enable | |||
16 | Задать количество неудачных попыток проверки соединения, после которых, при отсутствии ответа от встречной стороны, соединение будет считается неактивным (не обязательно). | esr(config-if-gi)# wan load-balance failure-count <VALUE> | <VALUE> – количество попыток, определяется в диапазоне [1..10]. Значение по умолчанию: 1. |
esr(config-if-gi)# ipv6 wan load-balance failure-count <VALUE> | |||
17 | Задать количество успешных попыток проверки соединения, после которых, в случае успеха, соединение считается вновь активным (не обязательно). | esr(config-if-gi)# wan load-balance success-count <VALUE> | <VALUE> – количество попыток, определяется в диапазоне [1..10]. Значение по умолчанию: 1. |
esr(config-if-gi)# ipv6 wan load-balance success-count <VALUE> | |||
18 | Задать IP-адрес соседа, который будет указан в качестве одного из шлюзов в статическом маршруте, создаваемом службой MultiWAN. | esr(config-if-gi)# wan load-balance nexthop { <IP> | dhcp enable | tunnel enable } | <IP> – IP-адрес назначения (шлюз), задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. dhcp enable – если на интерфейсе IP-адрес получен через DHCP-клиента, используется шлюз с DHCP-сервера. tunnel enable – использовать в качестве nexthop – p-t-p адрес назначения. Применимо для подключаемых интерфейсов работающих через ppp. |
esr(config-if-gi)# ipv6 wan load-balance nexthop { <IPV6> } | <IPV6> – IPv6-адрес назначения (шлюз), задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
19 | Данной командой будут проверяться IP-адреса из списка проверки целостности. В случае недоступности всех (по умолчанию)/хотя бы одной (с использованием ключа chack-all) из проверяемых узлов, шлюз будет считаться недоступным. | esr(config-if-gi)# wan load-balance target-list { check-all | <NAME> } | <NAME> – проверку производить на основании конкретного target листа (заданного в п.7). check-all – проверку производить на основании всех target листа. |
esr(config-if-gi)# ipv6 wan load-balance target-list { check-all | <NAME> } | |||
20 | Прописать статические маршруты через WAN. | esr(config)# ip route <SUBNET> wan load-balance rule <ID> [<METRIC>] | <ID> – идентификатор создаваемого правила из п.2. [METRIC] – метрика маршрута, принимает значения [0..255]. |
esr(config)# ipv6 route <SUBNET> wan load-balance rule <ID [<METRIC>] |
Пример настройки
Задача:
Настроить маршрут к серверу (108.16.0.1/28) с возможностью балансировки нагрузки.
Решение:
Предварительно нужно выполнить следующие действия:
- настроить зоны для интерфейсов 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
Создадим список для проверки целостности соединения:
е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
Функция 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 | Установить NET-адрес. | esr(config-isis)# net {<NET>} | <NET> – NET-адрес, формат: ff[.ffff.ffff.ffff.ffff.ffff.ffff].ffff.ffff.ffff.00. |
3 | Включить IS-IS процесс. | esr(config-isis)# enable | |
4 | Установить алгоритм аутентификации для L2-уровня (не обязательно). | esr(config-isis)# authentication domain algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации:
|
5 | Установить пароль аутентификации для L2-уровня (не обязательно). | esr(config-isis)# authentication domain key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой 8 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером 8 байт (16 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
6 | Установить список ключей для аутентификации (не обязательно). | esr(config-isis)# authentication domain key chain <KEYCHAIN> | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов. |
7 | Выбрать алгоритм аутентификации для L1-уровня (не обязательно). | esr(config-isis)# authentication area algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации:
|
8 | Установить пароль аутентификации для L1-уровня (не обязательно). | esr(config-isis)# authentication area key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой 8 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером 8 байт (16 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
9 | Установить список ключей для аутентификации (не обязательно). | esr(config-isis)# authentication area key chain <KEYCHAIN> | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов. |
10 | Включить передачу имени маршрутизатора в LSP (не обязательно). | esr(config-isis)# hostname dynamic | |
11 | Установить уровень работы IS-IS процесса (не обязательно). | esr(config-isis)# is-type {<LEVEL>} | <LEVEL> – уровень работы протокола IS-IS:
|
12 | Установить тип метрики, который будет использоваться в работе IS-IS процесса (не обязательно). | esr(config-isis)# metric-style { narrow | wide | transition } [<LEVEL>] | narrow — принимает и генерирует TLV (о достижимости сетей) старого типа; wide — принимает и генерирует TLV (о достижимости сетей) нового типа; transition — принимает и генерирует TLV (о достижимости сетей) нового и старого типа; <LEVEL> — уровень работы протокола IS-IS:
|
13 | Установить приоритетность маршрутов для данного IS-IS процесса (не обязательно). | esr(config-isis)# preference {<VALUE>} | <VALUE> – принимает значения [1..255]. |
14 | Включить работу IS-IS с IPv4 и/или IPv6 адресами (не обязательно). | esr(config-isis)# address-family { ipv4 | ipv6 } | ipv4 – семейство адресов IPv4; ipv6 – семейство адресов IPv6. |
15 | Установить интервал обновления собственных LSP (не обязательно). | esr(config-isis)# lsp-refresh-interval { min | max } <TIME> [ <LEVEL> ] | min — минимальный интервал обновления/генерации; max — максимальный интервал обновления/генерации; <TIME> — время в секундах, принимает значения [1..65535]; <LEVEL> — уровень работы протокола IS-IS:
|
16 | Установить время жизни собственных LSP (не обязательно). | esr(config-isis)# max-lsp-lifetime <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
17 | Установить таймаут перед следующим расчётом SPF (не обязательно). | esr(config-isis)# spf-timeout <TIME> [<LEVEL>] | <TIME> – время в миллисекундах, принимает значения [1..10000]; <LEVEL> – уровень работы протокола IS-IS:
|
18 | Включить анонсирование маршрутов, полученных альтернативным способом (не обязательно). | esr(config-isis)# redistribute bgp <AS> [ route-map <NAME> ] [is-type <LEVEL>] | <AS> – номер автономной системы, может принимать значения [1..4294967295]; <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых маршрутов, задаётся строкой до 31 символа; <LEVEL> — уровень работы протокола IS-IS:
|
esr(config-isis)# redistribute ipv6 bgp <AS> [ route-map <NAME> ] [is-type <LEVEL>] | |||
esr(config-isis)# redistribute ospf <ID> <ROUTE-TYPE> [ route-map <NAME> ] [is-type <LEVEL>] | <ID> – номер процесса, может принимать значение [1..65535]; <ROUTE-TYPE> – тип маршрута:
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
esr(config-isis)# redistribute ipv6 ospf <ID> <ROUTE-TYPE> [ route-map <NAME> ] [is-type <LEVEL>] | |||
esr(config-isis)# redistribute isis <ID> <ROUTE-TYPE> [ route-map <NAME> ] [is-type <LEVEL>] | <ID> – номер процесса, может принимать значение [1..65535]; <ROUTE-TYPE> – тип маршрута:
<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых IS-IS-маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
esr(config-isis)# redistribute rip [ route-map <NAME> ] [is-type <LEVEL>] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых RIP-маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
esr(config-isis)# redistribute static [ route-map <NAME> ] [is-type <LEVEL>] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
esr(config-isis)# redistribute connected [ route-map <NAME> ] [is-type <LEVEL>] | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых подключённых маршрутов, задаётся строкой до 31 символа; <LEVEL> – уровень работы протокола IS-IS:
| ||
19 | Добавить фильтрацию подсетей во входящих или исходящих обновлениях (не обязательно). | esr(config-isis)# prefix-list { ipv6 <LIST_NAME> | <LIST_NAME> } {in|out} | <LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа. in – фильтрация входящих маршрутов; out – фильтрация анонсируемых маршрутов. |
20 | Добавить фильтрацию подсетей во входящих или исходящих обновлениях (не обязательно). | esr(config-isis)# route-map <NAME> {in|out} | <NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых маршрутов, задаётся строкой до 31 символа. |
21 | Установить принадлежность интерфейса к определенному IS-IS процессу. | esr(config-if-gi)# isis instance <ID> | <ID> – номер процесса, принимает значения [1..65535]. |
22 | Включить работу протокола IS-IS на интерфейсе. | esr(config-if-gi)# isis enable | |
23 | Включить использование TLV#8 в hello-пакетах (не обязательно). | esr(config-if-gi)# isis hello-padding | |
24 | Установить приоритет при выборе DIS (не обязательно). | esr(config-if-gi)# isis priority <VALUE> [<LEVEL>] | <VALUE> – число, принимающее значения [0..127]; <LEVEL> – уровень работы протокола IS-IS:
|
25 | Установить значение метрики для интерфейсa (не обязательно). | esr(config-if-gi)# isis metric <VALUE> [<LEVEL>] | <VALUE> – число, принимающее значения [1..16777215]; <LEVEL> – уровень работы протокола IS-IS:
|
26 | Установить на каком уровне маршрутизации будет работать текущий процесс IS-IS на конкретном интерфейсе (не обязательно). | esr(config-if-gi)# isis circuit-type {<LEVEL>} | <LEVEL> – уровень работы протокола IS-IS:
|
27 | Установить интервал отправки hello-пакетов (не обязательно). | esr(config-if-gi)# isis hello-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
28 | Установить множитель для вычисления и отправки Hold Time (не обязательно). | esr(config-if-gi)# isis hello-multiplier <VALUE> [<LEVEL>] | <VALUE> – число, принимающее значения [3..1000]; <LEVEL> – уровень работы протокола IS-IS:
|
29 | Перевести интерфейс в режим работы point-to-point протокола IS-IS (не обязательно). | esr(config-if-gi)# isis network point-to-point | |
30 | Установить интервал генерации и отправки CSNP (не обязательно). | esr(config-if-gi)# isis csnp-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
31 | Установить интервал генерации и отправки PSNP (не обязательно). | esr(config-if-gi)# isis psnp-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
32 | Установить интервал между передачами LSP в Broadcast-сети (не обязательно). | esr(config-if-gi)# isis lsp-interval <TIME> [<LEVEL>] | <TIME> – время в миллисекундах, принимает значения [1-10000]; <LEVEL> - уровень работы протокола IS-IS:
|
33 | Установить интервал повторного распространения LSP в PtP-сети (не обязательно). | esr(config-if-gi)# isis lsp-retransmit-interval <TIME> [<LEVEL>] | <TIME> – время в секундах, принимает значения [1..65535]; <LEVEL> – уровень работы протокола IS-IS:
|
34 | Установить алгоритм аутентификации для hello-пакетов (не обязательно). | esr(config-if-gi)# isis authentication algorithm <ALGORITHM> [<LEVEL>] | <ALGORITHM> – алгоритм аутентификации:
<LEVEL> – уровень работы протокола IS-IS:
|
35 | Установить пароль для аутентификации hello-пакетов (не обязательно). | esr(config-if-gi)# isis authentication key ascii-text { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } [<LEVEL>] | <CLEAR-TEXT> – пароль, задаётся строкой 8 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером 8 байт (16 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...); <LEVEL> – уровень работы протокола IS-IS:
|
36 | Установить список ключей для аутентификации hello-пакетов (не обязательно). | esr(config-if-gi)# isis authentication key chain <KEYCHAIN> [<LEVEL>] | <KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов; <LEVEL> – уровень работы протокола IS-IS:
|
Пример настройки
Задача:
Настроить протокол 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
Перейдём к настройке маршрутизатора 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