Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление
maxLevel5

Политика фильтрации маршрутной информации

Фильтрация маршрутной информации в динамических протоколах маршрутизации осуществляется с помощью 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.

Scroll Pagebreak

Обработка правил фильтрации маршрутной информации политики export для протоколов RIP, OSPF, IS-IS, iBGP:


Scroll Pagebreak
Обработка правил фильтрации маршрутной информации политики import для протоколов RIP, OSPF, IS-IS, iBGP:

Scroll Pagebreak
Обработка правил фильтрации маршрутной информации политик 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 — последнее (неявное) правило запрещает все, что явно не разрешено предыдущими правилами.


Scroll Pagebreak

Якорь
Конфигурирование статических маршрутов
Конфигурирование статических маршрутов

Конфигурирование статических маршрутов

Статическая маршрутизация — вид маршрутизации, при котором маршруты указываются в явном виде при конфигурации маршрутизатора без использования протоколов динамической маршрутизации.

Алгоритм настройки

Добавить статический маршрут возможно командой в режиме глобальной конфигурации:

Блок кода
esr(config)# ip route [ vrf <VRF> ] <SUBNET> { { <NEXTHOP> [ resolve ] [ bfd ] [ unit <ID> ] | interface <IF> | tunnel <TUN> | blackhole | unreachable | prohibit } [ track <TRACK-ID> ] [ name <NAME>] } | wan load-balance rule <RULE> } [ <METRIC> ]
no ip route [ vrf <VRF> ] <SUBNET> [ <METRIC> ] [ unit <ID> ]
  • <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 – при указании данного параметра IP-адрес шлюза будет рекурсивно вычислен через таблицу маршрутизации. Если при рекурсивном вычислении не удастся найти шлюз из напрямую подключенной подсети, то данный маршрут не будет установлен в систему;

  • <ID> – номер юнита, принимает значения [1..2];

  • <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);

  • <METRIC> – метрика маршрута, принимает значения [0..255];

  • <TRACK-ID> – идентификатор Tracking-объекта. Если маршрут привязан к Tracking-объекту, то он появится в системе только при выполнении всех условий, заданных в объекте;

  • <NAME> – имя (описание) маршрута, текстовая переменная длиной до 31 символа;

  • bfd – при указании данного ключа активируется удаление статического маршрута в случае недоступности next-hop. Для работы данного механизма должен быть запущен механизм BFD с IP-адресом next-hop (см. раздел ip bfd neighbor).

    Проверка next-hop при помощи протокола BFD. В случае недоступности next-hop маршрут удаляется.

Для добавления статического IPv6-маршрута к указанной подсети используется команда:

Блок кода
esr(config)# ipv6 route [ vrf <VRF> ] <SUBNET> { { <NEXTHOP> [ resolve ] [bfd] [ unit <ID> ] | interface <IF> | blackhole | unreachable | prohibit [ <METRIC> ] [ name <NAME>] } | wan load-balance rule <RULE> [ <METRIC> ] }
no ipv6 route [ vrf <VRF> ] <SUBNET> [ <METRIC> ] [ unit <ID> ]
  • <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-адрес шлюза будет рекурсивно вычислен через таблицу маршрутизации. Если при рекурсивном вычислении не удастся найти шлюз из напрямую подключенной подсети, то данный маршрут не будет установлен в систему;
  • <ID> – номер юнита, принимает значения [1..2];
  • <IF> – имя IP-интерфейса, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора;
  • blackhole – при указании команды пакеты до данной подсети будут удаляться устройством без отправки уведомлений отправителю;
  • unreachable – при указании команды пакеты до данной подсети будут удаляться устройством, отправитель получит в ответ ICMP Destination unreachable (Host unreachable, code 1);
  • prohibit – при указании команды пакеты до данной подсети будут удаляться устройством, отправитель получит в ответ ICMP Destination unreachable (Communication administratively prohibited, code 13);
  • [METRIC] – метрика маршрута, принимает значения [0..255];
  • <NAME> – имя (описание) маршрута, текстовая переменная длиной до 31 символа;
  • bfd – при указании данного ключа активируется проверка next-hop при помощи протокола 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

Scroll Pagebreak

Для интерфейса 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

Якорь
Настройка PPP через E1
Настройка PPP через E1

Настройка 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-списках префиксов;

  • eq – при указании команды длина префикса должна соответствовать указанной;
  • le – при указании команды длина префикса должна быть меньше либо соответствовать указанной;
  • ge – при указании команды длина префикса должна быть больше либо соответствовать указанной;
  • default - route – фильтрация маршрута по умолчанию.

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 }

  • cleartext – пароль, передается открытым текстом;
  • md5 – пароль, хешируется по алгоритму 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 символа.

  • in – фильтрация входящих маршрутов;
  • out – фильтрация анонсируемых маршрутов.

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> – тип маршрута:

  • intra - area – анонсирование маршрутов OSPF-процесса в пределах зоны;
  • inter - area – анонсирование маршрутов OSPF-процесса между зонами;
  • external 1 – анонсирование внешних маршрутов OSPF-формата 1;
  • external 2 – анонсирование внешних маршрутов OSPF-формата 2;

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа.

esr(config-rip)# redistribute isis <ID><ROUTE-TYPE> [ route-map <NAME> ]

<ID> – номер процесса, может принимать значение [1..65535];

<ROUTE-TYPE> – тип маршрута:

  • level-1 – анонсирование маршрутов ISIS-процесса уровня 1;
  • level-2 – анонсирование маршрутов ISIS-процесса уровня 2;
  • inter-area – анонсирование межзоновых маршрутов ISIS-процесса.

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых ISIS-маршрутов, задаётся строкой до 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 – маршруты анонсируются в многоадресном режиме;
  • broadcast – маршруты анонсируются в широковещательном режиме;
  • unicast – маршруты анонсируются в unicast-режиме соседям.

Значение по умолчанию: 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 для обмена маршрутной информацией с соседними маршрутизаторами. Маршрутизатор должен анонсировать статические маршруты и подсети 115.0.0.0/24, 14.0.0.0/24, 10.0.0.0/24. Анонсирование маршрутов должно происходить каждые 25 секунд.

Якорь
Пример настройки RIP рисунок
Пример настройки RIP рисунок

Решение:

Предварительно нужно настроить 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.

Scroll Pagebreak

Настройка 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];
<LEN> – длина префикса, принимает значения [1..128] в IPv6-списках префиксов;

  • eq – при указании команды длина префикса должна соответствовать указанной;
  • le – при указании команды длина префикса должна быть меньше либо соответствовать указанной;
  • ge – при указании команды длина префикса должна быть больше либо соответствовать указанной.

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 символа.

  • in – фильтрация входящих маршрутов;
  • out – фильтрация анонсируемых маршрутов.

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> – тип маршрута:

  • intra - area – анонсирование маршрутов OSPF-процесса в пределах зоны;
  • inter - area – анонсирование маршрутов OSPF-процесса между зонами;
  • external 1 – анонсирование внешних маршрутов OSPF-формата 1;
  • external 2 – анонсирование внешних маршрутов OSPF-формата 2.

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа.

esr(config-ripng)# redistribute isis <ID><ROUTE-TYPE> [ route-map <NAME> ]

<ID> – номер процесса, может принимать значение [1..65535];

<ROUTE-TYPE> – тип маршрута:

  • level-1 – анонсирование маршрутов ISIS-процесса уровня 1;
  • level-2 – анонсирование маршрутов ISIS-процесса уровня 2;
  • inter-area – анонсирование межзоновых маршрутов ISIS-процесса.

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых ISIS-маршрутов, задаётся строкой до 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 для обмена маршрутной информацией. Маршрутизаторы должны анонсировать адреса, присвоенные 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 в маршрутной таблице, принимает значения в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – [1..500000];
  • для ESR-20/21/30/31/
    100/200 – [1..300000];
  • для ESR-10/12V(F)/15/
    15R/15VF – [1..30000].

Значение по умолчанию для глобального режима:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – (500000);
  • для ESR-20/21/30/31/
    100/200 – (300000);
  • для ESR-10/12V(F)/15/
    15R/15VF – (30000).

Значение по умолчанию для 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-списках префиксов;

  • eq – при указании команды длина префикса должна соответствовать указанной;
  • le – при указании команды длина префикса должна быть меньше либо соответствовать указанной;
  • ge – при указании команды длина префикса должна быть больше либо соответствовать указанной.

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Определить референсное значение для автоматического расчёта стоимости (cost) интерфейсов (не обязательно).esr(config-ospf)# auto-cost reference bandwidth <VALUE>

<VALUE> – референсное значение для расчета стоимости интерфейса в диапазоне [1..100000000K].

Значение по умолчанию: 100000K.

esr(config-ipv6-ospf)# auto-cost reference bandwidth <VALUE>
10Определить максимальное количество равнозначных маршрутов до цели (не обязательно).esr(config-ospf)# maximum-path <PATHS>

<PATHS> – количество равноценных маршрутов до цели, принимает значения в диапазоне [1..32].

Значение по умолчанию: 16.

esr(config-ipv6-ospf)# maximum-path <PATHS>

11

Включить совместимость с RFC 1583 (не обязательно).

esr(config-ospf)# compatible rfc1583


esr(config-ipv6-ospf)# compatible rfc1583

12

Добавить фильтрацию подсетей во входящих или исходящих обновлениях (не обязательно).

esr(config-ospf)# prefix-list <PREFIX-LIST-NAME> { in | out }

<PREFIX-LIST-NAME> – имя сконфигурированного списка подсетей, задаётся строкой до 31 символа.

  • in – фильтрация входящих маршрутов;
  • out – фильтрация анонсируемых маршрутов.

esr(config-ipv6-ospf)# prefix-list <PREFIX-LIST-NAME> { in | out }

13

Включить анонсирование маршрутов, полученных альтернативным способом (не обязательно).

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> – тип маршрута:

  • level-1 – анонсирование маршрутов ISIS-процесса уровня 1;
  • level-2 – анонсирование маршрутов ISIS-процесса уровня 2;
  • inter-area – анонсирование межзоновых маршрутов ISIS-процесса.

<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 символа.

14

Активировать OSPF-процесс.

esr(config-ipv6-ospf)# redistribute bgp <AS> [metric <TYPE> <METRIC>] [ route-map <NAME> ]

esr(config-ipv6-ospf)# enable


15

Создать OSPF-область и перейти в режим конфигурирования области.

esr(config-ospf)# area <AREA_ID>

<AREA_ID> – идентификатор области, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

esr(config-ipv6-ospf)# area <AREA_ID>

16

Включить анонсирование подсетей (не обязательно).

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].

17

Определить тип области (не обязательно).

esr(config-ospf-area)# area-type <TYPE> [ no-summary ]

<TYPE> – тип области:

  • stub – устанавливает значение stub (тупиковая область);
    no-summary – команда в связке с параметром «stub» образует область «totallystubby» (для передачи информации за пределы области используется только маршрут по умолчанию).
  • nssa – устанавливает значение nssa (область NSSA);
    no-summary – в связке с параметром nssa образует область totallynssa (автоматически генерирует маршрут по умолчанию как межобластной).

esr(config-ipv6-ospf-area)# area-type <TYPE> [ no-summary ]

18

Включить генерацию маршрута по умолчанию для NSSA или stub-области и анонсирование его в качестве Type-7 или Type-3 LSA соответственно (не обязательно).

esr(config-ospf-area)# default-information-originate


esr(config-ipv6-ospf-area)# default-information-originate

19

Определить тип метрики маршрута по умолчанию для NSSA-области (не обязательно).

esr(config-ospf-area)# default-metric-type <TYPE>

  • type-1 – устанавливает тип метрики E1 для маршрута по умолчанию в NSSA-области;
  • type-2 – устанавливает тип метрики E2 для маршрута по умолчанию в NSSA-области.

esr(config-ipv6-ospf-area)# default-metric-type <TYPE>

20

Активировать OSPF-область.

esr(config-ospf-area)# enable


esr(config-ipv6-ospf-area)# enable

21

Установить виртуальное соединение между основной и удаленными областями, имеющими между ними несколько областей (не обязательно).

esr(config-ospf-area)# virtual-link <ID>

<ID> – идентификатор маршрутизатора, с которым устанавливается виртуальное соединение, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

esr(config-ipv6-ospf-area)# virtual-link <ID>

22

Установить интервал времени в секундах, по истечении которого маршрутизатор повторно отправит пакет, который не получил подтверждения о получении (не обязательно).

esr(config-ospf- vlink)# restransmit-interval <TIME>

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 5 секунд.

esr(config-ipv6-ospf- vlink)# restransmit-interval <TIME>

23

Установить интервал времени в секундах, по истечении которого маршрутизатор отправляет следующий hello-пакет (не обязательно).

esr(config-ospf- vlink)# hello-interval <TIME>esr(config-bgp-neighbor)# fall-over bfd

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 10 секунд.

esr(config-ipv6-ospf- vlink)# hello-interval <TIME>

24

Установить интервал времени в секундах, по истечении которого сосед будет считаться неактивным (не обязательно).

Этот интервал должен быть кратным значению «hello-interval».

esr(config-ospf- vlink)# dead-interval <TIME>

<TIME> – время в секундах, принимает значения [1..65535]. Для (config-(ipv6)-ospf- vlink) - [2..65535]

Значение по умолчанию: 40 секунд.

esr(config-ipv6-ospf-vlink)# dead-interval <TIME>

25

Определяется интервал времени в секундах, по истечении которого маршрутизатор выберет DR в сети (не обязательно).

esr(config-ospf- vlink)# wait-interval <TIME>

<TIME> – время в секундах, принимает значения [2..65535].
Значение по умолчанию: 40 секунд.

esr(config-ipv6-ospf- vlink)# wait-interval <TIME>

26

Определить алгоритм аутентификации (не обязательно).

esr(config-ospf- vlink)# authentication algorithm <ALGORITHM>

<ALGORITHM> – алгоритм аутентификации:

  • cleartext – пароль, передается открытым текстом (доступно только для RIP и OSPF-VLINK);
  • md 5 – пароль, хешируется по алгоритму md5.

27

Установить пароль для аутентификации с соседом (не обязательно).

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...).

28

Определить список паролей для аутентификации через алгоритм хеширования md5 (не обязательно).

esr(config-ospf- vlink)# authentication key chain <KEYCHAIN>

<KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов.

29

Активировать виртуальное соединение (не обязательно).

esr(config-ospf- vlink)# enable


30

Перейти в режим конфигурирования интерфейса/туннеля/сетевого моста.

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.

31

Определить принадлежность интерфейса/туннеля/сетевого моста к определенному OSPF-процессу.

esr(config-if-gi)# ip ospf instance <ID>

<ID> – номер процесса, принимает значения [1..65535].

esr(config-if-gi)# ipv6 ospf instance <ID>

32

Определить принадлежность интерфейса к определенной области 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>

33

Включить маршрутизацию по протоколу OSPF на интерфейсе.

esr(config-if-gi)# ip ospf



esr(config-if-gi)# ipv6 ospf

34

Включить режим, в котором OSPF-процесс будет игнорировать значение MTU интерфейса во входящих Database Description-пакетах (не обязательно).

esr(config-if-gi)# ip ospf mtu-ignore


esr(config-if-gi)# ipv6 ospf mtu-ignore

35

Определить алгоритм аутентификации протокола OSPF (не обязательно).

esr(config-if-gi)# ip ospf authentication algorithm <ALGORITHM>

<ALGORITHM> – алгоритм аутентификации:

  • cleartext – пароль, передается открытым текстом;
  • md 5 – пароль, хешируется по алгоритму md5.

36

Установить пароль для аутентификации с 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...).

37

Определить список паролей для аутентификации по алгоритму хеширования md5 с соседом (не обязательно).

esr(config-if-gi)# ip ospf authentication key-chain <KEYCHAIN>

<KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов.

38

Определить пропускную способность интерфейса для расчёта стоимости (cost) интерфейса (не обязательно).


esr(config-if-gi)# ip ospf bandwidth <VALUE><VALUE> – пропускная способность интерфейса, принимает значения [1..100000000K].
esr(config-if-gi)# ipv6 ospf bandwidth <VALUE>

39

Определить интервал времени в секундах, по истечении которого маршрутизатор выберет DR в сети (не обязательно).

esr(config-if-gi)# ip ospf wait-interval <TIME>

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 40 секунд.

esr(config-if-gi)# ipv6 ospf wait-interval <TIME>

40

Установить интервал времени в секундах, по истечении которого маршрутизатор повторно отправит пакет, на который не получил подтверждения о получении (не обязательно).

esr(config-if-gi)# ip ospf restransmit-interval <TIME>

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 5 секунд.

esr(config-if-gi)# ipv6 ospf restransmit-interval <TIME>

41

Установить интервал времени в секундах, по истечении которого маршрутизатор отправляет следующий hello-пакет (не обязательно).

esr(config-if-gi)# ip ospf hello-interval <TIME>

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 10 секунд.

esr(config-if-gi)# ipv6 ospf hello-interval <TIME>

42

Установить интервал времени в секундах, по истечении которого сосед будет считаться неактивным (не обязательно).

Этот интервал должен быть кратным значению hello-interval.

esr(config-if-gi)# ip dead-interval <TIME>

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 40 секунд.

esr(config-if-gi)# ipv6 dead-interval <TIME>

43

Установить интервал времени, в течение которого NBMA-интерфейс ждет, прежде чем отправить hello-пакет соседу, даже в случае, если сосед неактивен (не обязательно).

esr(config-if-gi)# ip poll-interval <TIME>

<TIME> – время в секундах, принимает значения [1 .. 65535].

Значение по умолчанию: 120 секунд.

esr(config-if-gi)# ipv6 poll-interval <TIME>

44

Задать статический 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-сетях. Приоритет интерфейса должен быть больше нуля.

45


Определить тип сети для установления OSPF-соседства (не обязательно).

esr(config-if-gi)# ip ospf network <TYPE>

<TYPE> – тип сети:

  • broadcast – тип соединения широковещательный;
  • non - broadcast – тип соединения NBMA;
  • point - to - multipoint – тип соединения точка-многоточие;
  • point-to-multipoint non-broadcast – тип соединения NBMA точка-многоточие;
  • point - to - point – тип соединения точка-точка.

Значение по умолчанию: broadcast.


esr(config-if-gi)# ipv6 ospf network <TYPE>

46Перевести интерфейс в пассивный режим работы. В этом режиме не рассылаются hello-пакеты, не устанавливаются отношения соседства, но подключенная сеть анонсируется соседям (не обязательно).esr(config-if-gi)# ip ospf passive-interface

esr(config-if-gi)# ipv6 ospf passive-interface

47


Установить приоритет маршрутизатора, который используется для выбора DR и BDR (не обязательно).

esr(config-if-gi)# ip ospf priority <VALUE>

<VALUE> – приоритет интерфейса, принимает значения [1..65535].

Значение по умолчанию: 120.


esr(config-if-gi)# ipv6 ospf priority <VALUE>

48

Установить величину метрики на интерфейсе или туннеле (не обязательно).

esr(config-if-gi)# ip ospf cost <VALUE>

<VALUE> – величина метрики, задаётся в размере [0..32767].

Значение по умолчанию: 10.

esr(config-if-gi)# ipv6 ospf cost <VALUE>

49

Включить протокол BFD для протокола OSPF (не обязательно).


esr(config-if-gi)# ip ospf bfd-enable



esr(config-if-gi)# ipv6 ospf bfd-enable

50

Включить механизм ttl-security hops (не обязательно).esr(config-if-gi)# ip ospf ttl-security-hops <VALUE>

<VALUE> – значение ttl, задаётся в размере [1..255].

Значение по умолчанию: 0.

esr(config-if-gi)# ipv6 ospf ttl-security-hops <VALUE>

Пример настройки

Задача:

Настроить протокол OSPF на маршрутизаторе для обмена маршрутной информацией с соседними маршрутизаторами. Маршрутизатор должен находиться в области с идентификатором 1.1.1.1 и анонсировать маршруты, полученные по протоколу RIP.

Якорь
Пример настройки OSPF рисунок
Пример настройки OSPF рисунок


Решение:

Предварительно нужно настроить 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 stub area рисунок
Пример настройки OSPF stub area рисунок

Решение:

Предварительно нужно настроить протокол OSPF и IP-адреса на интерфейсах согласно схеме, приведенной на рисунке.

Изменим тип области на тупиковый. На каждом маршрутизаторе из области 1.1.1.1 в режиме конфигурирования области выполним команду:

Блок кода
esr(config-ospf-area)# area-type stub
Задача:

Объединить две магистральные области в одну с помощью virtual link.

Якорь
Пример настройки 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]

Scroll Pagebreak

Рассмотрим таблицу маршрутизации на маршрутизаторе 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

Протокол BGP предназначен для обмена информацией о достижимости подсетей между автономными системами (далее АС), то есть группами маршрутизаторов под единым техническим управлением, использующими протокол внутридоменной маршрутизации для определения маршрутов внутри себя и протокол междоменной маршрутизации для определения маршрутов доставки пакетов в другие АС. Передаваемая информация включает в себя список АС, к которым имеется доступ через данную систему. Выбор наилучших маршрутов осуществляется исходя из правил, принятых в сети.

Алгоритм настройки

Примечание

Для установлении BGP-сессии необходимо в firewall разрешить TCP-порт 179.


Шаг

Описание

Команда

Ключи

1

Настроить приоритетность протокола BGP-маршрутизации для основной таблицы маршрутизации (не обязательно).

esr(config)# ip protocols bgp preference <VALUE>

<VALUE> – приоритетность протокола, принимает значения в диапазоне [1..255].

Значение по умолчанию: BGP (170).

2

Настроить емкость таблиц маршрутизации протокола BGP (не обязательно при использовании глобальной таблицы маршрутизации).

esr(config)# ip protocols bgp max-routes <VALUE>

<VALUE> – количество маршрутов протокола BGP в маршрутной таблице, принимает значения в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – [1..5000000];
  • для ESR-20/21/30/31/
    100/200 – [1..2500000];
  • для ESR-10/12V(F)/15/
    15R/15VF – [1..1000000].

Значение по умолчанию для глобальной таблицы маршрутизации:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – [5000000];
  • для ESR-20/21/30/31/
    100/200 – [2500000];
  • для ESR-10/12V/12VF/
    15/15R/15VF –
    [1000000].

Значение по умолчанию для VRF: 0.

esr(config)# ipv6 protocols bgp max-routes <VALUE>

esr(config-vrf)# ip protocols bgp max-routes <VALUE>

esr(config-vrf)# ipv6 protocols bgp max-routes <VALUE>

3

Включить вывод информации о состоянии отношений с соседями для протокола маршрутизации BGP (не обязательно).

esr(config)# router bgp log-neighbor-changes


esr(config)# ipv6 router bgp log-neighbor-changes

4

Включить ECMP и определяется максимальное количество равноценных маршрутов до цели.

esr(config)# router bgp maximum-paths <VALUE>

<VALUE> – количество допустимых равноценных маршрутов до цели, принимает значения [1..16].

5

Выбрать метод фильтрации для передаваемой информации между роутерами (обязательно при конфигурировании eBGP для анонсирования подсетей).



5.1.1

При выборе метода фильтрации на основе route-map создать список правил, который в дальнейшем будет использоваться для фильтрации анонсируемых и получаемых IP-маршрутов.

esr(config)# route-map <NAME>

<NAME> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.

5.1.2

Создать правило.

(config-route-map)# rule <ORDER>

<ORDER> – номер правила, принимает значения [1 .. 10000].

5.1.3

Определить список подсетей, которые затрагиваются правилом.

esr(config-route-map-rule)#match ip address  { <ADDR/LEN> | object-group <OBJ-GRP-NETNAME> }  [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]

<ADDR/LEN> – IP-адрес и маска подсети, задается в виде:

  • AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];

<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:

  • X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128];

<OBJ-GRP-NETNAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. При использовании фильтрации по object-group их необходимо создать заранее;

<LEN>, <LEN 1>, <LEN 2> – длина префикса, принимает значения [1..32] в IP-списках префиксов для IPv4 и [1..128] для IPv6;

eq – при указании команды длина префикса должна соответствовать указанной;

le – при указании команды длина префикса должна быть меньше либо соответствовать указанной;

ge – при указании команды длина префикса должна быть больше либо соответствовать указанной;

ge <LEN 1> le <LEN 2> – при указании команды длина префикса должна быть больше либо соответствовать <LEN>, но меньше или равна <LEN1>.

esr(config-route-map-rule)#match ipv6 address  { <IPV6-ADDR/LEN> | object-group <OBJ-GRP-NETNAME> }  [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]

5.1.4

Разрешить (permit) или запретить (deny) действие для указанных подсетей в правиле.

esr(config-route-map-rule)# action {deny | permit}


5.2.1

При выборе метода фильтрации на основе префикс-листов создать списки IP-подсетей, которые в дальнейшем будут использоваться для фильтрации анонсируемых и получаемых IP-маршрутов.

esr(config)# ip prefix-list <NAME>

<NAME> – имя конфигурируемого списка подсетей, задаётся строкой до 31 символа.

esr(config)# ipv6 prefix-list <NAME>

5.2.2

Разрешить (permit) или запретить (deny) списки префиксов.

esr(config-pl)# permit  { <ADDR/LEN> | object-group <OBJ-GRP-NETNAME>}  [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]

<ADDR/LEN> – IP-адрес и маска подсети, задается в виде:

  • AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];

<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задаётся в виде:

  • X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128];

<OBJ-GRP-NETNAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. При использовании фильтрации по object-group их необходимо создать заранее;

<LEN>, <LEN 1>, <LEN 2> – длина префикса, принимает значения [1..32] в IP-списках префиксов для IPv4 и [1..128] для IPv6;

eq – при указании команды длина префикса должна соответствовать указанной;

le – при указании команды длина префикса должна быть меньше либо соответствовать указанной;

ge – при указании команды длина префикса должна быть больше либо соответствовать указанной;

ge <LEN 1> le <LEN 2> – при указании команды длина префикса должна быть больше либо соответствовать <LEN> но меньше или равна <LEN1>.

esr(config-pl)# deny  {<ADDR/LEN> | object-group <OBJ-GRP-NETNAME>}  [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]

esr(config-ipv6-pl)# permit  { <IPV6-ADDR/LEN> | object-group <OBJ-GRP-NETNAME>}  [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]

esr(config-ipv6-pl)# deny  {<IPV6-ADDR/LEN> | object-group <OBJ-GRP-NETNAME> }  [ { eq <LEN> | le <LEN> | ge <LEN 1> [ le <LEN 2> ] } ]

6

Добавить BGP-процесс в систему и осуществить переход в режим настройки параметров BGP-процесса.

esr(config)# router bgp <AS>

<AS> – номер автономной системы процесса, принимает значения [1..4294967295].

7

Установить идентификатор маршрутизатора.

esr(config-bgp)# router-id { <ID> | <IF> | <TUN> }

<ID> – идентификатор маршрутизатора, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

<IF> – интерфейс, задаётся в виде, описанном в разделе 
Типы и порядок именования интерфейсов маршрутизатора.

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.

8

Установить идентификатор Route-Reflector кластера, которому принадлежит BGP-процесс маршрутизатора (при необходимости).

esr(config-bgp)# cluster-id <ID>

<ID> – идентификатор Route-Reflector кластера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

9

Включить генерацию и отправку маршрута по умолчанию, если маршрут по умолчанию есть в таблице маршрутизации FIB (не обязательно).

esr(config-bgp)# default-information-originate


10

Установить временной интервал, по истечении которого идет проверка соединения со встречной стороной (не обязательно).

esr(config-bgp-af)# timers keeaplive <TIME>

<TIME> – время в секундах, принимает значения [1..32767].

Значение по умолчанию: 60 секунд.

11

Установить временной интервал, по истечении которого встречная сторона считается недоступной (не обязательно).

esr(config-bgp-af)# timers holdtime <TIME>

<TIME> – время в секундах, принимает значения [2..65535].

Значение по умолчанию: 180 секунд.

12

Установить время минимальной и максимальной задержки, в течение которого запрещено устанавливать соединение, в целях защиты от частых разрывов соединения (не обязательно).

esr(config-bgp)# timers error-wait <TIME1> <TIME2>

<TIME1> – время минимальной задержки в секундах, принимает значения [1..65535];

<TIME2> – время максимальной задержки в секундах, принимает значения [1..65535].

13

Определить глобальный алгоритм аутентификации с соседями (при необходимости).

esr(config-bgp)# authentication algorithm <ALGORITHM>

<ALGORITHM> – алгоритм шифрования:

  • md5 – пароль шифруется по алгоритму md5.

Значение по умолчанию: шифрование не используется.

14

Установить глобальный пароль для аутентификации с соседями (используется совместно с "authentication algorithm").

esr(config-bgp)# authentication key ascii-text  { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> }

<CLEAR-TEXT> – пароль, задаётся строкой от 8 до 16 символов;

<ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 16 байт (от 16 до 32 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...).

15

Активировать BGP-процесс.

esr(config-bgp)# enable


16

Определить тип конфигурируемой маршрутной информации и перейти в данный режим настройки.

esr(config-bgp)# address-family { ipv4 | ipv6 } unicast

ipv 4 – семейство IPv4;

ipv 6 – семейство IPv6.

17

Включить анонсирование маршрутов процессом BGP полученных альтернативным образом (при необходимости).

esr(config-bgp-af)# redistribute static [ route-map <NAME> ]

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа.

esr(config-bgp-af)# redistribute connected [ route-map <NAME> ]

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых напрямую подключенных подсетей, задаётся строкой до 31 символа.

esr(config-bgp-af)# redistribute rip [ route-map <NAME> ]

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых RIP-маршрутов, задаётся строкой до 31 символа.

esr(config-bgp-af)# redistribute ospf <ID> <ROUTE-TYPE 1>  [<ROUTE-TYPE 2>] [<ROUTE-TYPE 3>] [<ROUTE-TYPE 4>]  [ route-map <NAME> ]

<ID> – номер процесса, может принимать значение {1..65535};

<ROUTE-TYPE> – тип маршрута:

  • intra - area – анонсирование маршрутов OSPF-процесса в пределах зоны;
  • inter - area – анонсирование маршрутов OSPF-процесса между зонами;
  • external 1 – анонсирование внешних маршрутов OSPF-формата 1;
  • external 2 – анонсирование внешних маршрутов OSPF-формата 2;

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа.

esr(config-bgp-af)# redistribute bgp <AS> [ route-map <NAME> ]

<AS> – номер автономной системы, может принимать значения [1..4294967295];

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа.

18

Включить анонсирование подсетей.

esr(config-bgp-af)# network <ADDR/LEN> [ route-map <NAME> ]

<ADDR/LEN> – адрес подсети, указывается в одном из следующих формате:

  • AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];
  • X:X:X:X::X/EE – IPv6-адрес и маска подсети, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128].

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых BGP-маршрутов, задаётся строкой до 31 символа.

19

Осуществить выход из режима глобального конфигурирования анонсов маршрутной информации процесса BGP

esr(config-bgp-af)# exit


20

Добавить BGP-соседа и осуществить переход в режим настройки параметров BGP-соседа.

esr(config-bgp)# neighbor <ADDR>|<IPV6-ADDR>

<ADDR> – IP-адрес соседа, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<IPV6-ADDR> – IPv6-адрес клиента, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF].

21

Задать описание соседа (не обязательно).

esr(config-bgp-neighbor)# description <DESCRIPTION>

<DESCRIPTION> – описание соседа, задаётся строкой до 255 символов.

22

Установить временной интервал, по истечении которого идет проверка соединения со встречной стороной
(не обязательно).

esr(config-bgp-neighbor)# timers keepalive <TIME>

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 60 секунд.

23

Установить временной интервал, по истечении которого встречная сторона считается недоступной (не обязательно).

esr(config-bgp- neighbor)# timers holdtime <TIME>

<TIME> – время в секундах, принимает значения [1..65535].

Значение по умолчанию: 180 секунд.

24

Установить время минимальной и максимальной задержки, в течение которого запрещено устанавливать соединение, в целях защиты от частых разрывов соединения (не обязательно).

esr(config-bgp)# timers error-wait <TIME1> <TIME2>

<TIME1> – время минимальной задержки в секундах, принимает значения [1..65535];

<TIME2> – время максимальной задержки в секундах, принимает значения [1..65535].

Значение по умолчанию: 60 и 300 секунд.

25

Установить номер автономной системы BGP-соседа.

esr(config-bgp-neighbor)# remote-as <AS>

<AS> – номер автономной системы, принимает значения [1..4294967295].

26

Разрешить подключение к соседям, которые находятся не в напрямую подключенных подсетях (не обязательно).

esr(config-bgp-neighbor)# ebgp-multihop <NUM>

<NUM> – максимальное количество хопов при установке EBGP (используется для TTL).

27

Указать, что BGP-сосед является Route-Reflector клиентом (не обязательно).

esr(config-bgp-neighbor)# route-reflector-client


28

Задать IP/IPv6-адрес маршрутизатора, который будет использоваться в качестве IP/IPv6-адреса источника в отправляемых обновлениях маршрутной информации BGP (не обязательно).

esr(config-bgp-neighbor)# update-source { <ADDR> | <IPV6-ADDR> | <IF> | <TUN> }

<ADDR> – IP-адрес источника, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<IPV6-ADDR> – IPv6-адрес источника, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF].

<IF> – интерфейс, задаётся в виде, описанном в разделе 
Типы и порядок именования интерфейсов маршрутизатора.

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.

29

Включить режим, в котором разрешен приём маршрутов в BGP-атрибуте, AS Path которых содержит номера автономной системы процесса (не обязательно).

esr(config-bgp-neighbor)# allow-local-as <NUMBER>

<NUMBER> – пороговое число вхождений номера автономной системы процесса в атрибуте AS Path, при которых маршрут будет принят, диапазон допустимых значений [1..10].

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-адреса исходящего интерфейса локального маршрутизатора. По умолчанию изменяет next-hop только eBGP-маршрутов (не обязательно, отсутствует для vpnv4).

esr(config-bgp-neighbor-af)# next-hop-self [ all ]

all – заменить next-hop для eBGP-, iBGP-маршрутов.

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-адрес и маска подсети, задается в виде:

  • AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];

<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:

  • X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128];
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 символа.
50Задать возможность динамически устанавливать BGP-сессию без указания конкретного адреса соседа. Соседство может быть установлено с любым адресом, попадающим в указанную подсеть (не обязательно).esr(config-bgp-aggregate)# listen-range { <ADDR/LEN> | <IPV6-ADDR/LEN }

<ADDR/LEN> – IP-адрес и маска подсети, задается в виде:

  • AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32];

<IPV6-ADDR/LEN> – IPv6-адрес и маска подсети, задается в виде:

  • X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128].
51Разрешить возможность динамической установки BGP-сессии только с соседями, которые имеют определённые номера AS.esr(config-bgp-listen)# as-range <AS-PATH>

<AS-PATH> – список номеров автономных систем, задается в виде AS-AS,AS,AS-AS, принимает значения [1..4294967295].


Подсказка

Часто бывает, особенно при конфигурировании iBGP, что в одном bgp-процессе необходимо настроить несколько bgp neighbor с одинаковыми параметрами. Во избежание избыточности конфигурации рекомендуется использовать bgp peer-group, в которой возможно описать общие параметры, а в конфигурации bgp neighbor просто указать причастность к bgp peer-group.

Пример настройки

Задача:

Настроить BGP-протокол на маршрутизаторе R3 со следующими параметрами:

  • собственные подсети: 80.66.0.0/24, 80.66.16.0/24;
  • анонсирование подсетей, подключенных напрямую;
  • собственная AS 2500;
  • первое соседство – подсеть 219.0.0.0/30, собственный IP-адрес 219.0.0.1, IP-адрес соседа 219.0.0.2, AS2500;
  • второе соседство – подсеть 185.0.0.0/30, собственный IP-адрес 185.0.0.1, IP-адрес соседа 185.0.0.2, AS20.

Решение:

Сконфигурируем необходимые сетевые интерфейсы:

Блок кода
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

Scroll Pagebreak
Сконфигурируем 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

Scroll Pagebreak
И включим обмен 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-маршрут.

  1. Маршрут, помеченный как «stale», является менее приоритетным, чем маршрут без таковой метки. Маршрут помечается как «stale» в процессе работы технологии LLGR;
  2. Сравнивается значение атрибута Weight – лучшим становится маршрут, имеющий большее значение;
  3. Сравнивается значение атрибута Local preferences – лучшим становится маршрут, имеющий большее значение;
  4. Сравнивается длина AS-path – маршрут с меньшим количеством hop-ов становится лучшим;
  5. Сравнивается значение атрибута Origin – IGP является самым приоритетным. EGP приоритетнее, чем Incomplete; 
  6. Для маршрутов, принятых от одной и той же автономной системы, сравнивается значение атрибута multiple exit discriminator (MED) – наименьшее значение атрибута имеет больший приоритет;
  7. Маршрут, полученный от EBGP-пира, имеет больший приоритет по сравнению с маршрутом, полученным от IBGP-пира;
  8. Сравнивается IGP-метрика сети, через который доступен маршрут – наименьшее значение имеет больший приоритет;
    8.1 Если включен ECMP, то дальнейших сравнений не производится и маршрут (multipath) попадет в таблицу маршрутизации;
  9. Сравнивается параметр Router-Id – маршрут, полученный от BGP-соседа с наименьшим Router-Id, является приоритетным. При наличии атрибута Originator ID будет учитываться Router-id источника маршрута;
  10. Сравнивается количество адресов в Cluster list – маршрут, имеющий наименьшее количество адресов становится лучшим;
  11. Сравниваются адреса BGP-пиров – маршрут, полученный от BGP-пира с наименьшим из адресов, является приоритетным.

Scroll Pagebreak
В выводе маршрутной информации для определенного префикса лучший маршрут будет отмечен как «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 необходимо выполнить следующие шаги:

1. Описать маршрутные карты сondition-map и advertise-map:

  • Condition-map – это карта, в которой необходимо описать маршрутную информацию для проверки. Планировщик будет запускаться каждые 60 секунд для проверки наличия в BGP RIB маршрутной информации, описанной в этой карте;
  • Advertise-map – это карта, в который необходимо описать маршрутную информацию, которая будет анонсироваться при выполнении условий, описанных в condition-map. 

2. В контексте настройки BGP-соседа необходимо задать условие, при котором будет анонсироваться маршрутная информация, описанная в advertise-map. Рассмотрим этот пункт на примере ниже:

Условие EXIST-MAP:

  • Если R2 содержит в BGP RIB маршрут 192.0.2.255/32, то R2 анонсирует в сторону R3 маршрут 198.51.100.0/24 (пример на рисунке ниже);
  • Если R2 не содержит в BGP RIB маршрут 192.0.2.255/32, то анонсирование маршрута 198.51.100.0/24 соседу R3 не происходит.

Блок кода
route-map CONDITION
  rule 1
    match ip address 192.0.2.255/32
  exit
exit
route-map ADVERTISE
  rule 1
    match ip address 198.51.100.0/24
  exit
exit
router bgp 65540
  neighbor R3
    description "To R3"
    address-family ipv4 unicast
      advertise-map ADVERTISE exist-map CONDITION
	  enable
    exit

Условие not EXIST-MAP:        

  • Если R2 содержит в BGP RIB маршрут 192.0.2.255/32, то анонсирование маршрута 198.51.100.0/24 соседу R3 не происходит;
  • Если R2 не содержит в BGP RIB маршрут 192.0.2.255/32, то R2 анонсирует в сторону R3 маршрут 198.51.100.0/24 (пример на рисунке ниже).

Блок кода
route-map CONDITION
  rule 1
    match ip address 192.0.2.255/32
  exit
exit
route-map ADVERTISE
  rule 1
    match ip address 198.51.100.0/24
  exit
exit
router bgp 65540
  neighbor R3
    description "To R3"
    address-family ipv4 unicast
      advertise-map ADVERTISE not exist-map CONDITION
	  enable
    exit

Scroll Pagebreak

Ниже приведена диаграмма состояний для условия 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

Scroll Pagebreak

Далее планировщик проверяет условие EXIST-MAP для соответствующей condition-map. Если условие истинно, происходит анонсирование (обновление) маршрутной информации в соответствии с правилами, заданными в advertise-map. Cостояние статуса меняется на «Advertise». Время нахождения в этом состоянии – 60 секунд:

Блок кода
vesr# sh bgp neighbors 
BGP neighbor is 192.0.2.2
    BGP state:                          Established
    Type:                               Static neighbor
    Neighbor address:                   192.0.2.2
    Neighbor AS:                        202766
    Neighbor ID:                        192.0.2.2
    Neighbor caps:                      refresh enhanced-refresh restart-aware AS4
    Session:                            external AS4
    Source address:                     192.0.2.1
    Weight:                             0
    Hold timer:                         136/180
    Keepalive timer:                    41/60
    Address family ipv4 unicast:       
      Send-label:                       No
      Default originate:                No
      Default information originate:    No
      Incoming route-map:               IN
      Outgoing route-map:               OUT
      Advertise-map:                    ADVERTISE
      Condition-map:                    CONDITION
      Conditional advertisement status: Advertise    <----
    Uptime:                             1119 s

Если  условие EXIST-MAP для соответствующей сondition-map не выполняется, происходит отзыв маршрутной информации, описанной в соответствующей advertise-map. Cостояние статуса меняется на «Withdrawal». Время нахождения в этой стадии – 60 секунд:

Блок кода
vESR# sh bgp neighbors 
BGP neighbor is 192.0.2.2
    BGP state:                          Established
    Type:                               Static neighbor
    Neighbor address:                   192.0.2.2
    Neighbor AS:                        202766
    Neighbor ID:                        192.0.2.2
    Neighbor caps:                      refresh enhanced-refresh restart-aware AS4
    Session:                            external AS4
    Source address:                     192.0.2.1
    Weight:                             0
    Hold timer:                         136/180
    Keepalive timer:                    41/60
    Address family ipv4 unicast:       
      Send-label:                       No
      Default originate:                No
      Default information originate:    No
      Incoming route-map:               IN
      Outgoing route-map:               OUT
      Advertise-map:                    ADVERTISE
      Condition-map:                    CONDITION
      Conditional advertisement status: Withdrawal   <----
    Uptime:                             1119 s


Примечание

Порядок выполнения политик фильтрации маршрутной информации:

1. Выполняется политика, заданная при редистрибуции маршрутов (AF_POLICY_OUT);

2. Применяется advertise-map, описанная в Conditional advertisement (advertise-map ADVERTISE ..);

3. Обрабатывается политика фильтрации исходящей маршрутной информации (route-map OUT out).

Блок кода
route-map ADVERTISE
  rule 1
    match ip address 10.100.0.255/32
    action set local-preference 101
    action set metric bgp 78
  exit
exit
route-map OUT
  rule 1
    action set local-preference 200
  exit
exit
route-map CONDITION
  rule 1
    match ip address 10.100.0.255/32
  exit
exit
route-map AF_POLICY_OUT
  rule 1
    match ip address 10.100.0.255/32
    action set community 65:65
  exit
exit
router bgp 64512
  neighbor 192.0.2.2
    remote-as 64512
    address-family ipv4 unicast
      route-map OUT out                           <----- 3
      advertise-map ADVERTISE exist-map CONDITION <----- 2
      enable
    exit
    enable
  exit
  address-family ipv4 unicast
    redistribute static route-map AF_POLICY_OUT   <----  1
  exit
  enable
exit

// Вывод атрибутов BGP маршрута после прохождения всех политик:
show bgp ipv4 unicast 10.100.0.255/32
Administrative Distance: 170
Type: unicast
Origin: Incomplete
AS path: --
Next Hop: 192.168.1.1
Output Label: --
Input Label: imp-null
Local Preference: 200
MED: 78
Cluster List: --
Community: 65:65
EXT Community: --
Weight: --


Алгоритм настройки

ШагОписаниеКомандаКлюч
1Настроить протокол BGP (см. раздел Настройка BGP).
2Cоздать advertise-map, описав в нем список подсетей для дальнейшего анонсирования.esr(config)# route-map <ADVERTISE><ADVERTISE> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.
3Создать condition-map, описав в нем список подсетей по которым будет осуществляться проверка.esr(config)# route-map <CONDITION><CONDITION> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.
4В контексте настройки address-family заданного BGP соседа указать условие и созданные ранее маршрутные карты.esr(config-bgp-neighbor-af)# advertise-map <ADVERTISE> {EXIST-MAP | NOT-EXIST-MAP} <CONDITION>

<ADVERTISE> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.

<CONDITION> – имя конфигурируемых правил маршрутизации, задаётся строкой до 31 символа.

<EXIST-MAP> – условие проверки: если маршруты, описанные в condition-map, присутствуют в BGP RIB, то происходит анонсирование маршрутов, описанных в advertise-map.

<NOT-EXIST-MAP> – условие проверки: если маршруты, описанные в condition-map, отсутствуют в BGP RIB, то происходит анонсирование маршрутов, описанных в advertise-map.

Пример настройки

Задача:

ESR получает маршрут по умолчанию от двух провайдеров – ISP «Zero» и «ISP One». Дополнительно ISP «Zero» анонсирует маршрут 10.1.1.1/32, наличие которого в BGP RIB в дальнейшем и будет отслеживаться.

Необходимо в случае присутствия маршрута 10.1.1.1/32 в BGP RIB анонсировать маршрут 198.51.100.0/24 провайдеру ISP «Zero», если маршрут 10.1.1.1/32 отсутствует в BGP RIB – анонсировать 198.51.100.0/24 провайдеру ISP «One».

Решение:

Сконфигурируем необходимые сетевые интерфейсы на каждом устройстве в сети:

Блок кода
ISP-ZERO(config)# interface gigabitethernet 1/0/1
ISP-ZERO(config-if-gi)# ip firewall disable 
ISP-ZERO(config-if-gi)# ip address 192.0.2.1/30
ISP-ZERO(config-if-gi)# do commit
ISP-ZERO(config-if-gi)# do confirm


Блок кода
ESR(config)# interface gigabitethernet 1/0/1
ESR(config-if-gi)# ip firewall disable 
ESR(config-if-gi)# description "FROM ISP-ZERO"
ESR(config-if-gi)# ip address 192.0.2.2/30
ESR(config-if-gi)# exit
ESR(config)# interface gigabitethernet 1/0/2
ESR(config-if-gi)# ip firewall disable 
ESR(config-if-gi)# ip address 192.0.2.5/30
ESR(config-if-gi)# description "TO ISP-ONE"
ESR(config-if-gi)# exit
ESR(config)# do commit
ESR(config)# do confirm


Блок кода
ISP-ONE(config)# interface gigabitethernet 1/0/1
ISP-ONE(config-if-gi)# ip firewall disable 
ISP-ONE(config-if-gi)# ip address 192.0.2.6/30
ISP-ONE(config-if-gi)# do commit
ISP-ONE(config-if-gi)# do confirm

Scroll Pagebreak

Произведем настройку BGP:

Блок кода
ISP-ZERO(config)# ip route 10.1.1.1/32 blackhole 
ISP-ZERO(config)# ip route 0.0.0.0/0 blackhole 
ISP-ZERO(config)# route-map OUT
ISP-ZERO(config-route-map)# rule 1
ISP-ZERO(config-route-map-rule)# exit
ISP-ZERO(config-route-map)# exit
ISP-ZERO(config)# router bgp 64515 
ISP-ZERO(config-bgp)# neighbor 192.0.2.2
ISP-ZERO(config-bgp-neighbor)# remote-as 64516
ISP-ZERO(config-bgp-neighbor)# enable 
ISP-ZERO(config-bgp-neighbor)# address-family ipv4 unicast 
ISP-ZERO(config-bgp-neighbor-af)# route-map OUT out 
ISP-ZERO(config-bgp-neighbor-af)# enable 
ISP-ZERO(config-bgp-neighbor-af)# exit
ISP-ZERO(config-bgp-neighbor)# exit
ISP-ZERO(config-bgp)# enable 
ISP-ZERO(config-bgp)# address-family ipv4 unicast 
ISP-ZERO(config-bgp-af)# redistribute static 
ISP-ZERO(config-bgp-af)# do commit
ISP-ZERO(config-bgp-af)# do confirm


Блок кода
ESR(config)# route-map OUT
ESR(config-route-map)# rule 1
ESR(config-route-map-rule)# match ip address 198.51.100.0/24
ESR(config-route-map-rule)# exit
ESR(config-route-map)# exit
ESR(config)# router bgp 64516
ESR(config-bgp)# neighbor 192.0.2.1
ESR(config-bgp-neighbor)# remote-as 64515
ESR(config-bgp-neighbor)# address-family ipv4 unicast 
ESR(config-bgp-neighbor-af)# route-map OUT out 
ESR(config-bgp-neighbor-af)# enable 
ESR(config-bgp-neighbor-af)# exit
ESR(config-bgp-neighbor)# enable 
ESR(config-bgp-neighbor)# exit
ESR(config-bgp)# neighbor 192.0.2.6
ESR(config-bgp-neighbor)# remote-as 64517
ESR(config-bgp-neighbor)# address-family ipv4 unicast 
ESR(config-bgp-neighbor-af)# enable 
ESR(config-bgp-neighbor-af)# route-map OUT out 
ESR(config-bgp-neighbor-af)# exit
ESR(config-bgp-neighbor)# enable 
ESR(config-bgp-neighbor)# exit
ESR(config-bgp)# enable 
ESR(config-bgp)# do commit
ESR(config-bgp)# do confirm


Блок кода
ISP-ONE(config)# ip route 0.0.0.0/0 blackhole 
ISP-ONE(config)# route-map OUT
ISP-ONE(config-route-map)# rule 1
ISP-ONE(config-route-map-rule)# exit
ISP-ONE(config-route-map)# exit
ISP-ONE(config)# router bgp 64517
ISP-ONE(config-bgp)# neighbor 192.0.2.5
ISP-ONE(config-bgp-neighbor)# address-family ipv4 unicast 
ISP-ONE(config-bgp-neighbor-af)# route-map OUT out 
ISP-ONE(config-bgp-neighbor-af)# enable 
ISP-ONE(config-bgp-neighbor-af)# exit
ISP-ONE(config-bgp-neighbor)# remote-as 64516
ISP-ONE(config-bgp-neighbor)# enable 
ISP-ONE(config-bgp-neighbor)# exit
ISP-ONE(config-bgp)# enable 
ISP-ONE(config-bgp)# address-family ipv4 unicast 
ISP-ONE(config-bgp-af)# redistribute static 
ISP-ONE(config-bgp-af)# do commit
ISP-ONE(config-bgp-af)# do confirm

Опишем advertise и condition maps на ESR:

Блок кода
ESR(config)# ip route 198.51.100.0/24 blackhole 
ESR(config)# route-map CONDITION
ESR(config-route-map)# rule 1
ESR(config-route-map-rule)# match ip address 10.1.1.1/32
ESR(config-route-map-rule)# exit 
ESR(config-route-map)# exit
ESR(config)# route-map ADVERTISE
ESR(config-route-map)# rule 1
ESR(config-route-map-rule)# match ip address 198.51.100.0/24
ESR(config-route-map-rule)# exit
ESR(config-route-map)# exit
ESR(config)# router bgp 64516 
ESR(config-bgp)# address-family ipv4 unicast 
ESR(config-bgp-af)# network 198.51.100.0/24
ESR(config-bgp-af)# do commit
ESR(config-bgp-af)# do confirm

Активируем функцию Сonditional advertisement, применив ранее созданные маршрутные карты:

Блок кода
ESR(config)# router bgp 64516 
ESR(config-bgp)# neighbor 192.0.2.6
ESR(config-bgp-neighbor)# address-family ipv4 unicast 
ESR(config-bgp-neighbor-af)# advertise-map ADVERTISE not exist-map CONDITION 
ESR(config-bgp-neighbor-af)# do commit
ESR(config-bgp-neighbor-af)# do confirm

Scroll Pagebreak

Проверим корректность настройки:

Блок кода
//Проверяем наличие маршрута 10.1.1.1/32 в BGP RIB

ESR# sh bgp ipv4 unicast 10.1.1.1/32
10.1.1.1/32        via 192.0.2.1 on gi1/0/1          [bgp64516 07:07:59] (64515?)
    Administrative Distance: 170
    Type:                    unicast
    Origin:                  Incomplete
    AS path:                 64515
    Next Hop:                192.0.2.1
    Output Label:            --
    Input Label:             --
    Local Preference:        100
    MED:                     --
    Cluster List:            --
    Community:               --
    EXT Community:           --
    Weight:                  0
    Valid, Best
// Проверяем статус сonditional advertisement и отсутствие анонса 198.51.100.0/24 провайдеру ISP "One"
ESR# sh bgp ipv4 unicast neighbor 192.0.2.6 advertise-routes 

ESR# sh bgp neighbors 192.0.2.6
BGP neighbor is 192.0.2.6
    BGP state:                          Established
    Type:                               Static neighbor
    Neighbor address:                   192.0.2.6
    Neighbor AS:                        64517
    Neighbor ID:                        192.0.2.6
    Neighbor caps:                      refresh enhanced-refresh restart-aware AS4
    Session:                            external AS4
    Source address:                     192.0.2.5
    Weight:                             0
    Hold timer:                         99/180
    Keepalive timer:                    4/60
    RR client:                          No
    Address family ipv4 unicast:       
      Send-label:                       No
      Default originate:                No
      Default information originate:    No
      Outgoing route-map:               OUT
      Advertise-map:                    ADVERTISE
      Condition-map:                    CONDITION
      Conditional advertisement status: Withdrawal
      Preference:                       170
      Remove private AS:                No
      Next-hop self:                    No
      Next-hop unchanged:               No
    Uptime:                             1300 s

Настройка завершена.

Scroll Pagebreak

Быстрая деактивация пиринговых сессий

В случае когда возникновения проблем между соседями BGP, по умолчанию BGP ожидает 180 секунд (3 таймера keepalive) для того чтобы разорвать соседство и отозвать все маршруты полученные от неактивного соседа. Для обхода данной проблемы существуют методы, которые помогают быстрее обнаружить проблемы в работе сети и произвести отключение соседа, улучшая время реакции на изменения смежности с соседями BGP. Рассмотрим существующие реализации этих методов.

Метод на основе протокола BFD

BFD (Bidirectional Forwarding Detection) — протокол для быстрого обнаружения проблем на канальном уровне. В текущей реализации для его работы необходима настройка с обеих сторон (на каждом BGP-пире).

По умолчанию BFD-сессия устанавливается в следующем режиме:

ПротоколРежим
eBGPsingle-hop
eBGP multi-hopmulti-hop
iBGPmulti-hop
Алгоритм настройки
ШагОписаниеКоманда Ключи
1Настроить протокол BGP (см. раздел Настройка BGP).
2Включить поддержку протокола BFD в контексте настройки пира или пир-группыesr(config-bgp-neighbor)# fall-over bfd

Scroll Pagebreak

Пример настройки
Задача:

Необходимо настроить eBGP между маршрутизаторами R1, R2 и включить протокол BFD.

Решение:

На R1 предварительно необходимо настроить интерфейс Gi1/0/1:

Блок кода
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# ip address 10.0.0.1/24

 Следующим шагом на R1 настроим eBGP и включим BFD:

Блок кода
esr(config)# router bgp 100
esr(config-bgp)# neighbor 10.0.0.2
esr(config-bgp-neighbor)# remote-as 200
esr(config-bgp-neighbor)# update-source 10.0.0.1
esr(config-bgp-neighbor)# fall-over bfd
esr(config-bgp-neighbor)# enable
esr(config-bgp-neighbor)# exit
esr(config-bgp)# enable
esr(config-bgp)# exit

На R2 предварительно необходимо настроить интерфейс Gi1/0/1:

Блок кода
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# ip address 10.0.0.2/24

Далее на R2 настроим eBGP и включим BFD:

Блок кода
esr(config)# router bgp 200
esr(config-bgp)# neighbor 10.0.0.1
esr(config-bgp-neighbor)# remote-as 100
esr(config-bgp-neighbor)# update-source 10.0.0.2
esr(config-bgp-neighbor)# fall-over bfd
esr(config-bgp-neighbor)# enable
esr(config-bgp-neighbor)# exit
esr(config-bgp)# enable
esr(config-bgp)# exit

Scroll Pagebreak

Настройка завершена. Для просмотра оперативной информации можно использовать следующие команды:

Блок кода
esr# sh bgp neighbors 
BGP neighbor is 10.0.0.2
    BGP state:                          Established    <---- BGP сессия установлена
    Type:                               Static neighbor
    Neighbor address:                   10.0.0.2
    Neighbor AS:                        200
    Neighbor ID:                        10.0.0.2
    Neighbor caps:                      refresh enhanced-refresh restart-aware AS4
    Session:                            external AS4
    Source address:                     10.0.0.1
    Weight:                             0
    Hold timer:                         144/180
    Keepalive timer:                    29/60
    Uptime (d,h:m:s):                   00,00:00:20
    BFD address:                        10.0.0.2
    BFD state:                          Up            <---- Статус протокола BFD
    BFD interval:                       0.300 s
    BFD timeout:                        1.500 s

esrv#  sh bfd neighbors 10.0.0.2
Neighbor address:                   10.0.0.2
Local address:                      10.0.0.1
Interface:                          gi1/0/1
Remote discriminator:               889907056
Local discriminator:                924658435
State:                              Up
Session type:                       Control
Session mode:                       Single-hop
Local diagnostic code:              No Diagnostic
Remote diagnostic code:             No Diagnostic
Minimal Tx Interval:                300 ms
Minimal Rx Interval:                300 ms
Multiplier:                         5
Actual Tx Interval:                 300 ms
Actual Detection Interval:          1500 ms
Number of transmitted packets:      257
Number of received packets:         156
Uptime (d,h:m:s):                   00,00:00:38
Client:                             BGP 
Last received packet:
    Desired Min Tx Interval:        200 ms
    Required Min Rx Interval:       200 ms
    Multiplier:                     5

Scroll Pagebreak

Метод на основе Fast Peer Deactivation (Fall-over)

BGP Fast Peer Deactivation – это метод оптимизации конвергенции BGP, при котором соседство BGP разрывается, как только указанный маршрут (или более/менее специфичный) к соседу удаляется из таблицы маршрутизации. Механизм реализован с совместным использованием маршрутных карт (route-map).

Информация

Если правило route-map будет пустым, то под правило будет попадать любой доступный маршрут до соседа в таблице маршрутизации.


Информация

Функционал поддержан для IPv4 ( AFI -1 , SAFI -1), IPv6 (AFI -2 , SAFI -1) маршрутов.

В route-map поддерживаются все значения команды match. Команды action set игнорируются.

Реализована поддержка как для GRT, так и в VRF.

Алгоритм настройки
ШагОписаниеКомандаКлючи
1Настроить протокол BGP (см. раздел Настройка BGP).

2Описать в маршрутной карте подсеть, наличие которой будет отслеживаться в таблице маршрутизации (см. раздел Настройка Route-map).

3Активировать функционал, привязав маршрутную карту в соответствующему пиру или пир-группе.esr(config-bgp-neighbor)# fall-over route-map <NAME><NAME> – имя маршрутной карты, задается строкой до 31 символа.
Scroll Pagebreak
Пример настройки
Задача:

Настроить механизм Fast Peer Deactivation  между iBGP пирами R1 и R2.

Решение:

Предварительно настроим связность между маршрутизаторами в схеме:

Блок кода
titleR1
R1(config)# interface gigabitethernet 1/0/1
R1(config-if-gi)# ip firewall disable 
R1(config-if-gi)# ip address 198.51.100.1/24


Блок кода
titleR2
R2(config)# interface gigabitethernet 1/0/1
R2(config-if-gi)# ip firewall disable 
R2(config-if-gi)# ip address 198.51.100.2/24

Scroll Pagebreak

На каждом устройстве настроим протокол OSPF и анонсируем адреса loopback-интерфейсов:

Блок кода
titleR1
R1(config)# router ospf 1
R1(config-ospf)# area 0.0.0.0
R1(config-ospf-area)# enable 
R1(config-ospf-area)# exit
R1(config-ospf)# enable 
R1(config-ospf)# exit
R1(config)# interface loopback 1
R1(config-if-loopback)# ip ospf instance 1
R1(config-if-loopback)# ip ospf 
R1(config-if-loopback)# exit
R1(config)# interface gigabitethernet 1/0/1
R1(config-if-gi)# ip ospf instance 1
R1(config-if-gi)# ip ospf 


Блок кода
titleR2
R2(config)# router ospf 1
R2(config-ospf)# area 0.0.0.0
R2(config-ospf-area)# enable 
R2(config-ospf-area)# exit
R2(config-ospf)# enable 
R2(config-ospf)# exit
R2(config)# interface loopback 1
R2(config-if-loopback)# ip address 192.0.2.255/32
R2(config-if-loopback)# ip ospf instance 1
R2(config-if-loopback)# ip ospf 
R2(config-if-loopback)# exit
R2(config)# interface gigabitethernet 1/0/1
R2(config-if-gi)# ip ospf instance 1
R2(config-if-gi)# ip ospf 

Настроим протокол BGP на обоих маршрутизаторах:

Блок кода
titleR1
R1(config)# router bgp 65500
R1(config-bgp)# neighbor 192.0.2.255
R1(config-bgp-neighbor)# remote-as 65500
R1(config-bgp-neighbor)# update-source loopback 1
R1(config-bgp-neighbor)# enable 
R1(config-bgp-neighbor)# exit
R1(config-bgp)# enable 


Блок кода
R2(config)# router bgp 65500
R2(config-bgp)# neighbor 192.0.2.254
R2(config-bgp-neighbor)# remote-as 65500
R2(config-bgp-neighbor)# update-source loopback 1
R2(config-bgp-neighbor)# enable 
R2(config-bgp-neighbor)# exit
R2(config-bgp)# enable 

Cоздадим маршрутную карту, в которой опишем адрес BGP-пира для дальнейшего отслеживания c помощью функционала Fast Peer Deactivation:

Блок кода
titleR1
R1(config)# route-map Failover
R1(config-route-map)#   rule 1
R1(config-route-map-rule)#     match ip address 192.0.2.255/32
R1(config-route-map-rule)#   exit
R1(config-route-map)# exit


Блок кода
titleR2
R2(config)# route-map Failover
R2(config-route-map)# rule 1
R2(config-route-map-rule)# match ip address 192.0.2.254/32

Привяжем созданные маршрутные карты в контексте настройки BGP-пира:

Блок кода
titleR1
R1(config)# router bgp 65500
R1(config-bgp)# neighbor 192.0.2.255
R1(config-bgp-neighbor)# fall-over route-map Failover


Блок кода
titleR2
R2(config)# router bgp 65500 
R2(config-bgp)# neighbor 192.0.2.254 
R2(config-bgp-neighbor)# fall-over route-map Failover 

Scroll Pagebreak

Для просмотра оперативного состояния можно воcпользоваться следующей командой:

Блок кода
R2# sh bgp neighbors 
BGP neighbor is 192.0.2.254
    BGP state:                          Established
    Type:                               Static neighbor
    Neighbor address:                   192.0.2.254
    Neighbor AS:                        65500
    Neighbor ID:                        192.0.2.254
    Neighbor caps:                      refresh enhanced-refresh restart-aware AS4
    Session:                            internal multihop AS4
    Source address:                     192.0.2.255
    Weight:                             0
    Hold timer:                         164/180
    Keepalive timer:                    23/60
    Uptime:                             437 s
    Fall-over route-map:                Failover        <---- Функционал активирован

R2# sh bgp neighbors 192.0.2.254 
BGP neighbor is 192.0.2.254
    BGP state:                          Down
    Type:                               Static neighbor
    Neighbor address:                   192.0.2.254
    Neighbor AS:                        65500
    Fall-over route-map:                Failover
    Last error:                         Error: Fall over route-map   <---- Сессия BGP была разорвана из-за отработавшего механизма Fast Peer Deactivation

Настройка завершена.

Настройка BFD

BFD (Bidirectional Forwarding Detection) — это протокол, работающий поверх других протоколов и позволяющий сократить время обнаружения проблемы до 50 мс. BFD является двусторонним протоколом, т. е. требует настройки обоих маршрутизаторов (оба маршрутизатора генерируют BFD-пакеты и отвечают друг другу).

По умолчанию сессия устанавливается в следующем режиме:

ПротоколРежим
iBGPmulti-hop
eBGPsingle-hop
eBGP multi-hopmulti-hop
OSPFsingle-hop
Static routesingle-hop

Для изменения поведения (режима) необходимо вручную переопределить параметры сессии, указав необходимый режим. Рассмотрим на примере.

Scroll Pagebreak

Допустим, мы установили eBGP-соседство и включили для него BFD:

Блок кода
ESR# show running-config routing bgp 
router bgp 65516
  neighbor 10.100.0.2
    remote-as 65515
    update-source 10.100.0.1
    fall-over bfd
    enable
  exit
  enable
exit

ESR# show bfd neighbors  10.100.0.2
Neighbor address:                   10.100.0.2
Local address:                      10.100.0.1
Interface:                          --
Remote discriminator:               3751534121
Local discriminator:                1670865501
State:                              Up
Session type:                       Control
Session mode:                       Single-hop
Local diagnostic code:              No Diagnostic
Remote diagnostic code:             No Diagnostic
Minimal Tx Interval:                300 ms
Minimal Rx Interval:                300 ms
Multiplier:                         5
Actual Tx Interval:                 300 ms
Actual Detection Interval:          1500 ms
Number of transmitted packets:      1149
Number of received packets:         1153
Uptime:                             2m
Client:                             BGP 
Last received packet:
    Desired Min Tx Interval:        300 ms
    Required Min Rx Interval:       300 ms
    Multiplier:                     5

Как видно, по умолчанию BFD установился в режиме single-hop. Переключим режим в multi-hop:

Блок кода
ESR(config)# ip bfd neighbor 10.100.0.2 local-address 10.100.0.1 multihop 
ESR(config)# do commit
ESR(config)# do confirm

Scroll Pagebreak
Конфигурацию необходимо производить на обоих устройствах. После переустановки сессии ее режим сменится на multi-hop:

Блок кода
esr-200# sh bfd neighbors  10.100.0.2
Neighbor address:                   10.100.0.2
Local address:                      10.100.0.1
Interface:                          --
Remote discriminator:               3751534121
Local discriminator:                1670865501
State:                              Up
Session type:                       Control
Session mode:                       Multi-hop
Local diagnostic code:              No Diagnostic
Remote diagnostic code:             No Diagnostic
Minimal Tx Interval:                300 ms
Minimal Rx Interval:                300 ms
Multiplier:                         5
Actual Tx Interval:                 300 ms
Actual Detection Interval:          1500 ms
Number of transmitted packets:      9
Number of received packets:         11
Uptime:                             2m
Client:                             BGP 
Last received packet:
    Desired Min Tx Interval:        300 ms
    Required Min Rx Interval:       300 ms
    Multiplier:                     5

Настройка таймеров 

Подсказка

Значение таймеров индивидуально для каждой сети и во многом зависит от ее параметров. В случае частого флапинга BFD рекомендуется увеличить значение таймеров.

Таймеры, вне зависимости от режима работы протокола (single или multi-hop mode), могут быть настроены в контексте глобальной конфигурации или на определенных интерфейсах. Настройка на интерфейсах имеет наибольший приоритет.

Блок кода
ESR(config)# ip bfd min-tx-interval 1000
ESR(config)# ip bfd min-rx-interval 1000
ESR(config)# do commmit

ESR# sh ip bfd 
Minimum RX interval: 1000 ms
Minimum TX interval: 1000 ms
Idle TX interval:    1000 ms
Multiplier:          5 packets
Passive:             No

После того как BFD-сессия установлена, каждая сторона индивидуально вычисляет свои Tx Interval и Detection Interval. Tx Interval выбирается как наибольшее значение из локального Tx Interval и удаленного RX Interval. Detection Interval вычисляется по следующей формуле: Detection Interval = remoteMultiplier * MAX( RxLocal || TxRemote), где remoteMultiplier – значение Multiplier удаленной стороны, RxLocal – локальный Tx Interval, TxRemote – Tx Interval удаленной стороны.

Локально настроенные таймеры, таймеры удаленной стороны, а также вычисленные таймеры можно посмотреть следующим образом:

Блок кода
esr-200# sh bfd neighbors 10.100.0.2
Neighbor address:                   10.100.0.2
Local address:                      10.100.0.1
Interface:                          --
Remote discriminator:               3751534121
Local discriminator:                1670865501
State:                              Up
Session type:                       Control
Session mode:                       Multi-hop
Local diagnostic code:              No Diagnostic
Remote diagnostic code:             No Diagnostic
Minimal Tx Interval:                300 ms       <----  Локальный  Tx Interval 
Minimal Rx Interval:                300 ms       <----  Локальный  Rx Interval 
Multiplier:                         5            <----  Локальный  Multiplier 
Actual Tx Interval:                 300 ms       <----  Вычисленный Tx Interval 
Actual Detection Interval:          1500 ms      <----  Вычисленный Detection Interval
Number of transmitted packets:      21781
Number of received packets:         21804
Uptime:                             1d21h54m
Client:                             BGP 
Last received packet:
    Desired Min Tx Interval:        300 ms       <----
    Required Min Rx Interval:       300 ms       <----    Таймеры удаленной стороны
    Multiplier:                     5            <----

Алгоритм настройки

Шаг

Описание

Команда

Ключи

1

Активировать BFD для протокола OSPF на интерфейсе.

esr(config-if-gi)# ip ospf bfd-enable


2

Активировать BFD для протокола BGP neighbor на интерфейсе.

esr(config-bgp-neighbor)# fall-over bfd


3

Задать интервал, по истечении которого происходит отправка BFD-сообщения соседу. Глобально (не обязательно).

esr(config)# ip bfd idle-tx-interval <TIMEOUT>

<TIMEOUT> – интервал, по истечении которого происходит отправка BFD-пакета, принимает значение в миллисекундах в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300– [200..65535];
  • для ESR-10/12V(F)/
    15/15R/1VF/20/21/
    30/31/100/200 –
    [300..65535].

По умолчанию: 1 секунда.

4

Включить логирование изменений состояния BFD-протокола (не обязательно).

esr(config)# ip bfd log-adjacency-changes


5

Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение.
Глобально (не обязательно).

esr(config)# ip bfd min-rx-interval <TIMEOUT>

<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – [200..65535];
  • для ESR-10/12V(F)/
    15/15R/15VF/20/21/
    30/31/100/200 –
    [300..65535].

По умолчанию:

  • на ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/3300:
    200 миллисекунд;
  • на ESR-10/12V(F)/
    15/15R/15/VF/20/21/
    30/31/100/200:
    300 миллисекунд.

6

Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу.
Глобально (не обязательно).

esr(config)# ip bfd min-tx-interval <TIMEOUT>

<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – [200..65535];
  • для ESR-10/12V(F)/
    15/15R/15VF/20/21/
    30/31/100/200 –
    [300..65535].

По умолчанию:

  • на ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – 200 миллисекунд;
  • на ESR-10/12V(F)/
    15/15R/15VF/20/21/30/31/
    100/200 – 300 миллисекунд.

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> } ]
[local-address <ADDR> [multihop]] [vrf <VRF>]

<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-пакета, принимает значение в миллисекундах в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – [200..65535];
  • для ESR-10/12V(F)/
    15/15R/15VF/20/21/30/31/
    100/200 – [300..65535].

По умолчанию: 1 секунда.

11

Задать минимальный интервал, по истечении которого сосед должен сгенерировать BFD-сообщение.
На интерфейсе (не обязательно).

esr(config-if-gi)# ip bfd min-rx-interval <TIMEOUT>

<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200.3200L/
    3300 – [200..65535];
  • для ESR-10/12V(F)/
    15/15R/15VF/20/21/30/31/
    100/200 – [300..65535].

По умолчанию:

  • на ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – 200 миллисекунд;
  • на ESR-10/12V(F)/
    15/15R/15VF/20/21/30/31/
    100/200 – 300 миллисекунд.

12

Задать минимальный интервал, по истечении которого происходит отправка BFD-сообщения соседу.
На интерфейсе (не обязательно).

esr(config-if-gi)# ip bfd min-tx-interval <TIMEOUT>

<TIMEOUT> – интервал, по истечении которого должна происходить отправка BFD-сообщения соседом, принимает значение в миллисекундах в диапазоне:

  • для ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – [200..65535];
  • для ESR-10/12V(F)/
    15/15R/15VF/20/21/30/31/
    100/200 – [300..65535].

По умолчанию:

  • на ESR-1000/1200/
    1500/1511/1700/
    3100/3200/3200L/
    3300 – 200 миллисекунд;
  • на ESR-10/12V(F)/
    15/15R/15VF/20/21/30/31/
    100/200 – 300 миллисекунд.

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 для статического маршрута на маршрутизаторе R1.

Решение:

Предварительно необходимо настроить интерфейс Gi1/0/1 на R1 и R2:

Блок кода
titleR1
R1(config)# interface gigabitethernet 1/0/1
R1(config-if-gi)# ip firewall disable
R1(config-if-gi)# ip address 198.51.100.1/24


Блок кода
titleR2
R2(config)# interface gigabitethernet 1/0/1
R2(config-if-gi)#   ip firewall disable
R2(config-if-gi)#   ip address 198.51.100.2/24

На R1 настроим статический маршрут и привяжем к нему функционал BFD:

Блок кода
titleR1
R1(config)# ip route 192.0.2.0/24 198.51.100.2 bfd 

Для установки BFD-сессии на R2  также необходимо настроить соседа:

Блок кода
titleR2
R2(config)# ip bfd neighbor 198.51.100.1

Для вывода оперативной информации возможно использование следующих команд:

Блок кода
R1# sh bfd neighbors 
Neighbor                                Discriminator State     Interface       
--------------------------------------- ------------- --------- ----------------
198.51.100.2                            2907010617    Up        gi1/0/1         
R1# sh bfd neighbors  198.51.100.2
Neighbor address:                   198.51.100.2
Local address:                      198.51.100.1
Interface:                          gi1/0/1
Remote discriminator:               2907010617
Local discriminator:                2856477782
State:                              Up                <--- состояние протокола
Session type:                       Control
Session mode:                       Single-hop
Local diagnostic code:              No Diagnostic
Remote diagnostic code:             No Diagnostic
Minimal Tx Interval:                300 ms
Minimal Rx Interval:                300 ms
Multiplier:                         5
Actual Tx Interval:                 300 ms
Actual Detection Interval:          1500 ms
Number of transmitted packets:      1444
Number of received packets:         1402
Uptime (d,h:m:s):                   00,00:03:39
Client:                             STATIC              <---- сервис, который подписан на отслеживание изменения состояния
 
R1# sh ip route 192.0.2.0/24
 Codes: C - connected, S - static, R - RIP derived,
        O - OSPF derived, IA - OSPF inter area route,
        E1 - OSPF external type 1 route, E2 - OSPF external type 2 route
        B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route
        i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
        H - NHRP, * - FIB route

S     * 192.0.2.0/24       [1/0]             via 198.51.100.2 on gi1/0/1       [static 16:22:27] 
R1# sh bfd neighbors  
Neighbor                                Discriminator State     Interface       
--------------------------------------- ------------- --------- ----------------
198.51.100.2                            2907010617    Up        gi1/0/1         
R1# sh ip route 192.0.2.0/24
 Codes: C - connected, S - static, R - RIP derived,
        O - OSPF derived, IA - OSPF inter area route,
        E1 - OSPF external type 1 route, E2 - OSPF external type 2 route
        B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route
        i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
        H - NHRP, * - FIB route

S     * 192.0.2.0/24       [1/0]             via 198.51.100.2 on gi1/0/1       [static 16:22:27]   <---- маршрут присутствует в FIB

// После того как BFD-сессия разрушилась, отслеживаемый маршрут удалился из FIB:

R1# sh bfd neighbors  
Neighbor                                Discriminator State     Interface       
--------------------------------------- ------------- --------- ----------------
198.51.100.2                            2907010617     Down      gi1/0/1  

R1# sh ip route 192.0.2.0/24
 Codes: C - connected, S - static, R - RIP derived,
        O - OSPF derived, IA - OSPF inter area route,
        E1 - OSPF external type 1 route, E2 - OSPF external type 2 route
        B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route
        i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
        H - NHRP, * - FIB route

R1# 

Настройка завершена.

Настройка политики маршрутизации 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> – назначаемое действие:

  • permit – прием или анонсирование маршрутной информации разрешено;
  • deny – запрещено.
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.

  • begin – значение атрибута начинается с указанных номеров AS;
  • contain – значение атрибута содержит указанные номера AS;
  • empty – значение атрибута пусто;
  • end – значение атрибута заканчивается указанными номерами AS;
  • regex – значение атрибута соответствует регулярному выражению.

5

Задать значение атрибута BGP Community, для которого должно срабатывать правило (не обязательно).

esr(config-route-map-rule)# match community  { <COMMUNITY-LIST> | regex <REGEX> }

<COMMUNITY-LIST> – список community, задается в виде AS:N,AS:N, принимает значения [1..4294967295]. Можно указать до 64 community.

  • regex – значение атрибута соответствует регулярному выражению.

<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.

6

Задать значение атрибута BGP Extended Community, для которого должно срабатывать правило (не обязательно).

esr(config-route-map-rule)# match extcommunity  { <EXTCOMMUNITY-LIST> | regex <REGEX> }

<EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где

KIND – тип extcommunity:

  • rt (Route Target);
  • ro (Route Origin).

N – номер extcommunity, принимает значения [1..65535].

  • regex – значение атрибута соответствует регулярному выражению.

<REGEX> – регулярное выражение, задаётся по стандарту POSIX-Extended Regular Expressions.

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-адресов, содержащий значения атрибута BGP Next-Hop в маршруте для которого должно срабатывать правило (не обязательно).

esr(config-route-map-rule)# match ip bgp next-hop  object-group <OBJ-GROUP-NETWORK-NAME>

<OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа.

esr(config-route-map-rule)# match ipv6 bgp next-hop  object-group <OBJ-GROUP-NETWORK-NAME>

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
prepend <AS-PATH> {track <TRACK-ID>}

<AS-PATH> – список номеров автономных систем, который будет добавлен к текущему значению в маршруте. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295].

<TCACK-ID> – идентификатор vrrp-tracking, при котором будет исполняться указанное действие. Изменяется в диапазоне [1..60].

16.1Заменять номер или последовательность номеров AS в атрибуте BGP AS-Path на номер локальной AS (не обязательно).esr(config-route-map-rule)# action set as-path
 replace { any | <AS-PATH> }

<AS-PATH> – список номеров автономных систем, который будет заменён на локальный номер AS. Задаётся в виде AS,AS,AS, принимает значения [1..4294967295].

  • any – заменять любой номер AS.

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];

  • no - advertise – маршруты, передаваемые с данным community, не должны анонсироваться другим BGP-соседям;
  • no - export – маршруты, передаваемые с таким community, не должны анонсироваться eBGP-соседям, но анонсируются внешним соседям в конфедерации.

18

Задать значение атрибута BGP ExtCommunity, которое будет установлено в маршруте (не обязательно).

esr(config-route-map-rule)# action set extcommunity  <EXTCOMMUNITY-LIST>

<EXTCOMMUNITY-LIST> – список extcommunity, задается в виде KIND:AS:N, KIND:AS:N, где

KIND – тип extcommunity:

  • rt (Route Target);
  • ro (Route Origin).

N – номер extcommunity, принимает значения [1..65535].

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];

  • blackhole – пакеты до данной подсети будут удаляться без отправки уведомлений отправителю;
  • unreachable – пакеты до данной подсети будут удаляться, отправитель получит в ответ ICMP Destination unreachable (Host unreachable, code 1);
  • prohibit – пакеты до данной подсети будут удаляться устройством, отправитель получит в ответ ICMP Destination unreachable (Communication administratively prohibited code 13).

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:

  • egp – маршрут выучен по протоколу EGP;
  • igp – маршрут получен внутри исходной AS;
  • incomplete – маршрут выучен другим образом.

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> – направление:

  • in – фильтрация и модификация получаемых маршрутов;
  • out – фильтрация и модификация анонсируемых маршрутов.

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

Scroll Pagebreak

В 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 

Scroll Pagebreak

Привязываем политику к анонсируемой маршрутной информации:

Блок кода
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)
Алгоритм настройки Route-map на основе списков доступа (Policy-based routing)
Алгоритм настройки 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> – назначаемое действие:

  • permit – прием или анонсирование маршрутной информации разрешено;
  • deny – запрещено.

4

Задать ACL, для которого должно срабатывать правило (не обязательно).

esr(config-route-map-rule)# match ip access-group <NAME>

<NAME> – имя списка контроля доступа, задаётся строкой до 31 символа.

5

Задать Next-Hop для пакетов, которые попадают под критерии в указанном списке доступа (ACL) (не обязательно).

esr(config-route-map-rule)# action set ip next-hop  verify-availability <NEXTHOP><METRIC>

<NEXTHOP> – IP-адрес шлюза задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<METRIC> – метрика маршрута, принимает значения [0..255].

6

Назначить политику маршрутизации на основе списков доступа (ACL).

esr(config-if-gi)# ip policy route-map <NAME>

<NAME> – имя сконфигурированной политики маршрутизации, строка до 31 символа.

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

Scroll Pagebreak

Настройка VRF

VRF (Virtual Routing and Forwarding) – технология, которая позволяет изолировать маршрутную информацию, принадлежащую различным классам (например, маршруты одного клиента).

Алгоритм настройки

Шаг

Описание

Команда

Ключи

1

Создать экземпляр VRF и перейти в режим настройки параметров экземпляра VRF.

esr(config)# ip vrf <VRF>

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.

2

Назначить описание конфигурируемого экземпляра VRF.

esr(config-vrf)# description <DESCRIPTION>

<DESCRIPTION> – описание экземпляра VRF, задаётся строкой до 255 символов.

3

Настроить емкость таблиц маршрутизации в конфигурируемом VRF для IPv4/IPv6 протоколов маршрутизации (не обязательно).

esr(config-vrf)# ip protocols <PROTOCOL> max-routes <VALUE>

<PROTOCOL> – вид протокола, принимает значения: ospf, bgp;

<VALUE> – количество маршрутов в маршрутной таблице, принимает значения в диапазоне:

  • OSPF ESR-1000/1200/1500/
    1511/1700/3100/3200/3200L/3300 – [1..500000], ESR-20/21/30/31/100/
    200 – [1..300000], ESR-10/12V(F)/15/15R/
    15VF – [1..30000]
  • BGP ESR-1000/1200/1500/
    1511/1700/3100/3200/3200L/3300 – [1..5000000], ESR-20/21/30/31/100/
    200 – [1..2500000], ESR-10/12V(F)/15/
    15VF/15R – [1..1000000].

Значение по умолчанию: 0.

esr(config-vrf)#ipv6 protocols <PROTOCOL> max-routes <VALUE>

4

Включить и настроить протоколы динамической маршрутизации трафика (Static/OSPF/BGP/IS-IS) в экземпляре VRF (не обязательно). См. соответствующий раздел Конфигурирование статических маршрутов, Настройка OSPF и Настройка BGP.



5

В режиме конфигурирования физического/логического интерфейса, туннеля, правила DNAT/SNAT, DAS-сервера или SNMPv3 пользователя указать имя экземпляра VRF для которого будет использоваться (при необходимости).

esr(config-snat-ruleset)# ip vrf forwarding <VRF>

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.

6

Настроить LT-туннель для передачи трафика в глобальный режим или другие VRF (при необходимости).

 

См. раздел Настройка LT-туннелей.

Пример настройки

Задача:

К маршрутизатору ESR подключены 2 сети, которые необходимо изолировать от остальных сетей.

Решение:

Создадим VRF:

Блок кода
esr(config)# ip vrf bit
esr(config-vrf)# exit

Создадим зону безопасности:

Блок кода
esr(config)# security zone vrf-sec
esr(config-zone)# ip vrf forwarding bit
esr(config-zone)# exit

Создадим правило для пары зон и разрешим любой TCP/UDP-трафик:

Блок кода
esr(config)# security zone-pair vrf-sec vrf-sec
esr(config-zone-pair)# rule 1
esr(config-zone-rule)# match 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

Scroll Pagebreak

Создадим привязку интерфейсов, назначим IP-адреса, укажем принадлежность к зоне:

Блок кода
esr(config)# interface gigabitethernet 1/0/7
esr(config-if-gi)# ip vrf forwarding bit
esr(config-if-gi)# ip address 10.20.0.1/24
esr(config-if-gi)# security-zone vrf-sec
esr(config-if-gi)# exit
esr(config)# interface gigabitethernet 1/0/14.10
esr(config-if-sub)# ip vrf forwarding bit
esr(config-if-sub)# ip address 10.30.0.1/16
esr(config-if-sub)# security-zone vrf-sec
esr(config-if-sub)# exit
esr(config)# exit

Информацию об интерфейсах, привязанных к VRF, можно посмотреть командой:

Блок кода
esr# show ip vrf 

Таблицу маршрутов VRF можно просмотреть с помощью команды:

Блок кода
esr# show ip route vrf bit

Якорь
Настройка MultiWAN
Настройка MultiWAN
Настройка 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
{ interface <IF> | tunnel <TUN> } [WEIGHT]

<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>]

Scroll Pagebreak

Пример настройки

Задача:

Настроить маршрут к серверу (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 

Scroll Pagebreak
Зададим адрес для проверки, включим проверку указанного адреса и выйдем:

Блок кода
е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

Scroll Pagebreak

Настройка 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> – алгоритм аутентификации:

  • cleartext – пароль, передается открытым текстом;
  • md5 – пароль, хешируется по алгоритму md5.
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> – алгоритм аутентификации:

  • cleartext – пароль, передается открытым текстом;
  • md5 – пароль, хешируется по алгоритму md5.
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:

  • level-1 – работа производится только на 1 уровне;
  • level-1-2 – работа производится и на 1, и на 2 уровне;
  • level-2 – работа производится только на 2 уровне. 
12Установить тип метрики, который будет использоваться в работе IS-IS процесса (не обязательно).

esr(config-isis)# metric-style  { narrow | wide | transition } [<LEVEL>]

narrow – принимает и генерирует TLV (о достижимости сетей) старого типа;

wide – принимает и генерирует TLV (о достижимости сетей) нового типа;

transition – принимает и генерирует TLV (о достижимости сетей) нового и старого типа;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
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:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
16Установить время жизни собственных LSP (не обязательно).

esr(config-isis)# max-lsp-lifetime <TIME> [<LEVEL>]

<TIME> – время в секундах, принимает значения [1..65535];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
17Установить таймаут перед следующим расчётом SPF (не обязательно).

esr(config-isis)# spf-timeout <TIME> [<LEVEL>]

<TIME> – время в миллисекундах, принимает значения [1..10000];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
18






Включить анонсирование маршрутов, полученных альтернативным способом (не обязательно).







esr(config-isis)# redistribute bgp <AS>  [ route-map <NAME> ] [is-type <LEVEL>]

<AS> – номер автономной системы, может принимать значения [1..4294967295];

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых маршрутов, задаётся строкой до 31 символа;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне.

esr(config-isis)# redistribute ipv6 bgp <AS>  [ route-map <NAME> ] [is-type <LEVEL>]

esr(config-isis)# redistribute ospf <ID> <ROUTE-TYPE>  [ route-map <NAME> ] [is-type <LEVEL>]

<ID> – номер процесса, может принимать значение [1..65535];

<ROUTE-TYPE> – тип маршрута:

  • intra-area – анонсирование маршрутов OSPF-процесса в пределах зоны;
  • inter-area – анонсирование маршрутов OSPF-процесса между зонами;
  • external1 – анонсирование внешних маршрутов OSPF-формата 1;
  • external2 – анонсирование внешних маршрутов OSPF-формата 2;

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых OSPF-маршрутов, задаётся строкой до 31 символа;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне.

esr(config-isis)# redistribute ipv6 ospf <ID> <ROUTE-TYPE>  [ route-map <NAME> ] [is-type <LEVEL>]

esr(config-isis)# redistribute isis <ID> <ROUTE-TYPE>  [ route-map <NAME> ] [is-type <LEVEL>]

<ID> – номер процесса, может принимать значение [1..65535];

<ROUTE-TYPE> – тип маршрута:

  • level-1 – анонсирование маршрутов 1 уровня;
  • level-2 – анонсирование маршрутов 1 уровня;
  • inter-area – анонсирование маршрутов IS-IS-процесса между зонами;

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых IS-IS-маршрутов, задаётся строкой до 31 символа;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне.

esr(config-isis)# redistribute rip  [ route-map <NAME> ] [is-type <LEVEL>]

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых RIP-маршрутов, задаётся строкой до 31 символа;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне.
esr(config-isis)# redistribute ipv6 rip  [ route-map <NAME> ] [is-type <LEVEL>]

esr(config-isis)# redistribute static  [ route-map <NAME> ] [is-type <LEVEL>]

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых статических маршрутов, задаётся строкой до 31 символа;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне.

esr(config-isis)# redistribute connected  [ route-map <NAME> ] [is-type <LEVEL>]

<NAME> – имя маршрутной карты, которая будет использоваться для фильтрации и модификации анонсируемых подключённых маршрутов, задаётся строкой до 31 символа;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне.
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:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
25Установить значение метрики для интерфейсa (не обязательно).

esr(config-if-gi)# isis metric <VALUE> [<LEVEL>]

<VALUE> – число, принимающее значения [1..16777215];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
26Установить на каком уровне маршрутизации будет работать текущий процесс IS-IS на конкретном интерфейсе (не обязательно).

esr(config-if-gi)# isis circuit-type {<LEVEL>}

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-1-2 – работа производится и на 1, и на 2 уровне;
  • level-2 – работа производится только на 2 уровне. 
27Установить интервал отправки hello-пакетов (не обязательно).

esr(config-if-gi)# isis hello-interval <TIME> [<LEVEL>]

<TIME> – время в секундах, принимает значения [1..65535];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
28Установить множитель для вычисления и отправки Hold Time (не обязательно).

esr(config-if-gi)# isis hello-multiplier <VALUE> [<LEVEL>]

<VALUE> – число, принимающее значения [3..1000];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
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:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
31Установить интервал генерации и отправки PSNP (не обязательно).

esr(config-if-gi)# isis psnp-interval <TIME> [<LEVEL>]

<TIME> – время в секундах, принимает значения [1..65535];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
32Установить интервал между передачами LSP в Broadcast-сети (не обязательно).

esr(config-if-gi)# isis lsp-interval <TIME> [<LEVEL>]

<TIME> – время в миллисекундах, принимает значения [1-10000];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
33Установить интервал повторного распространения LSP в PtP-сети (не обязательно).

esr(config-if-gi)# isis lsp-retransmit-interval <TIME> [<LEVEL>]

<TIME> – время в секундах, принимает значения [1..65535];

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
34Установить алгоритм аутентификации для hello-пакетов (не обязательно).

esr(config-if-gi)# isis authentication algorithm  <ALGORITHM> [<LEVEL>]

<ALGORITHM> – алгоритм аутентификации:

  • cleartext – пароль, передается открытым текстом;
  • md5 – пароль, хешируется по алгоритму md5;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
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:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 
36Установить список ключей для аутентификации hello-пакетов (не обязательно).

esr(config-if-gi)# isis authentication key chain <KEYCHAIN> [<LEVEL>]

<KEYCHAIN> – идентификатор списка ключей, задаётся строкой до 16 символов;

<LEVEL> – уровень работы протокола IS-IS:

  • level-1 – работа производится только на 1 уровне;
  • level-2 – работа производится только на 2 уровне. 

Якорь
Пример настройки IS-IS рисунок
Пример настройки 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

Scroll Pagebreak
Настроим работу интерфейсов на маршрутизаторе. На обоих интерфейсах настройка будет одинаковая:

Блок кода
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