Настройка BGP EcoRouter Documentation / Маршрутизация / Настройка BGP
- Базовая настройка BGP
- BGP атрибуты
- Пример настройки BGP
- Фильтрация и соседские отношения в BGP
- Регулярные выражения
- Рефлекторы маршрутов и конфедерации
- Команды конфигурирования BGP
- BGP. Команды просмотра
- Dampening
- Команды clear
- BGP Blackhole
На сегодняшний день в качестве протокола маршрутизации, предназначенного для изучения, анонса и выбора лучшего маршрута в глобальной сети Интернет, используют Border Gateway Protocol (BGP). EcoRouterOS использует расширенную версию протокола Multiprotocol BGP (MP-BGP), что позволяет объединить различные типы адресаций (unicast, multicast) в рамках единой конфигурации и, в будущем, адресацию IPv6. Стоит заметить, что MP-BGP обратно совместим с традиционной четвертой версией протокола BGP, как результат, BGP-4 маршрутизатор может формировать соседские отношения с MP-BGP маршрутизатором и просто игнорировать любые принятые BGP сообщения, содержащие неизвестные расширения.
Приведем несколько основных концепций протокола и сравним их с логикой работы Internal Gateway Protocol (IGP) маршрутизации, в качестве примера будет выступать OSPF.
В таблице ниже приведено сравнение OSPF логики с BGP.
OSPF | BGP |
---|---|
Для отправки маршрутной информации должны сформироваться соседские отношения между маршрутизаторами | Используется подобная логика |
Соседи обнаруживаются при помощи мультикастовых сообщений в непосредственно подключенной подсети | Соседи указываются путем статической конфигурации и могут быть разных подсетях |
Не используют TCP | Используется TCP соединение между соседями (порт 179) |
Рекламирует prefix/length | Рекламирует prefix/length (Network Layer Reachability Information) |
Рекламирует информацию о метрике | Рекламирует атрибуты пути |
Приоритетна скорость переключения сети на самый эффективный и рациональный маршрут | Приоритетна масштабируемость, может выбираться не самый эффективный и рациональный маршрут |
Базовая настройка BGP
Для обмена или получения маршрутной информации по BGP необходимо иметь заранее зарегистрированный номер автономной системы (ASN). Так же как и для открытых маршрутизируемых IP-адресов, процесс присвоения номеров регулируется ассоциацией IANA. При определенных случаях подключения к сети Интернет номера из частного диапазона автономных систем (AS) выделяются провайдером. EcoRouterOS позволяет указать номер AS в диапазоне <1-4294967295>.
В зависимости от принадлежности к локальной автономной системе или к соседней BGP определяет два класса соседств между маршрутизаторами: internal BGP (iBGP) и external BGP (eBGP) соответственно. Реализация протокола в нашем оборудовании дает возможность гибкой настройки для обоих типов соседств. При настройке базовой конфигурации соседств можно выполнить следующие шаги:
для iBGP:
Шаг 1. Настройте IP адрес loopback интерфейса на каждом маршрутизаторе, используя команды:
interface loopback.<number>
ip address <address/mask>
Шаг 2. Запустите протокол BGP, указав нужную автономную систему, командой:
router bgp <number>
Шаг 3. Укажите BGP использовать loopback интерфейс в качестве источника, используя команду:
neighbor <neighbor-ip> update-source <interface-id>
Шаг 4. Сконфигурируйте BGP соседей на каждом маршрутизаторе, указав loopback адрес соседа и номер локальной AS, используя команду:
neighbor <neighbor-ip> remote-as <number>
Шаг 5. Убедитесь, что у каждого маршрутизатора есть маршрут до loopback адреса соседа.
show ip route bgp
для eBGP:
Шаг 1. Настройте IP адрес loopback интерфейса на каждом маршрутизаторе, используя команды:
interface loopback.<number>
ip address <address/mask>
Шаг 2. Запустите протокол BGP, указав нужную автономную систему, командой:
router bgp <number>
Шаг 3. Укажите BGP использовать loopback интерфейс в качестве источника, используя команду:
neighbor <neighbor-ip> update-source <interface-id>
Шаг 4. Сконфигурируйте BGP-соседей на каждом маршрутизаторе, указав loopback адрес соседа и номер удаленной AS, используя команду:
neighbor <neighbor-ip> remote-as <number>
Шаг 5. Убедитесь, что у каждого маршрутизатора есть маршрут до loopback адреса соседа.
show ip route bgp
Шаг 6. Сконфигурируйте eBGP multihop для увеличения значения TTL командой:
neighbor <neighbor-ip> ebgp-multihop <hops>
В данных примерах рассматривался один из способов теоретически верного (с точки зрения отказоустойчивости) конфигурирования при простейшей топологии.
BGP атрибуты
Для управления маршрутной информацией, маршрутами протекания трафика и, в целом, решения задач администрирования сети на основе BGP EcoRouterOS предлагает сетевым инженерам пользоваться атрибутами, представленными в таблице ниже.
Атрибут | Описание | Направление трафика |
---|---|---|
Weight | Числовое значение в диапазоне от 0 до 216-1, влияет на маршрут до префикса, переданного в сообщении update от соседа. Не рекламируется BGP соседям | Влияет на исходящий трафик |
Local Preference | Числовое значение в диапазоне от 0 до 232-1, рассылается маршрутизаторам внутри локальной AS и влияет на маршрут выхода из этой автономной системы | Влияет на исходящий трафик |
AS-path (length) | Количество автономных систем. Чем меньше, тем лучше | Влияет на исходящий / входящий трафик |
Origin | Показывает, каким образом маршрут был добавлен в рекламу BGP (I (IGP), E (EGP), or ? (incomplete information).) | Влияет на исходящий трафик |
Multi-Exit Discriminator (MED) | Аналог метрики маршрута, числовое значение в диапазоне от 0 до 232-1, влияет на выбор маршрута к локальной AS из другой автономной системы. Чем меньше, тем лучше | Влияет на входящий трафик |
BGP-атрибуты предоставляют информацию для выбора лучшего маршрута, однако есть и такие, которые служат для других целей. Например, атрибут Next Hop предоставляет информацию о соседе. Для работы протокола в таблице маршрутизации должен присутствовать маршрут до этого адреса, но при этом атрибут никак не влияет на сам алгоритм выбора лучшего пути. Процесс выбора лучшего пути описан в таблице ниже. Параметры расположены в порядке убывания приоритета, начиная с наиболее предпочитаемых.
Приоритет | Атрибут/свойство | Что лучше? |
---|---|---|
0 | Next Hop | Если адрес недоступен, маршрутизатор не может использовать этот путь |
1 | Weight | Наибольшее значение |
2 | Local Preference | Наибольшее значение |
3 | Локальный маршрут (команды network/redistribution) | Локальный маршрут лучше, чем полученный через eBGP/iBGP |
4 | AS-path length | Наименьшее значение |
5 | Origin | Предпочтение I>E>? |
6 | MED | Наименьшее значение |
7 | iBGP или eBGP | Предпочтение eBGP>iBGP |
8 | IGP метрика до Next Hop | Наименьшее значение |
9 | Время жизни eBGP маршрута | Наибольшее значение |
10 | ID соседнего BGP-маршрутизатора | Минимальное значение |
11 | Длина списка кластера (cluster list) (для множественного пути) | Минимальное значение |
12 | IP адрес соседа | Минимальное значение |
Приведем примеры конфигурационных команд для изменения значений атрибутов/свойств по умолчанию.
Команда для сохранения адреса Next Hop при iBGP соседстве (по умолчанию в iBGP адрес не передается) - neighbor <address> next-hop-self.
Установка значения Weight для соседа (значение по умолчанию 0 для маршрутов, полученных от соседей, 32768 для локально инжектированных маршрутов) - neighbor <address> weight <value>, значение может быть задано через route-map и применено командой neighbor <address> route-map <name> in.
Установка значения Local Preference (значение по умолчанию 100) - bgp default local-preference <0-4294967295>, значение может быть задано через route-map и применено командой neighbor <address> route-map <name> in.
Команды конфигурирования атрибутов через route-map
Их использование требует наличие команды neighbor <address> soft-reconfiguration inbound в конфигурации протокола.
Просмотр всех доступных атрибутов осуществляется на подуровне настройки BGP с помощью команды set <атрибут>.
ecorouter(config-route-map)#set ?
?corouter(config-route-map)#set
aggregator BGP aggregator attribute as-path Prepend string for a BGP AS-path attribute atomic-aggregate BGP atomic aggregate attribute comm-list set BGP community list (for deletion) community BGP community attribute dampening Enable route-flap dampening extcommunity BGP extended community attribute interface Configure interface ip Internet Protocol (IP) level IS-IS level to export route local-preference BGP local preference path attribute metric Metric value for destination routing protocol metric-type Type of metric for destination routing protocol origin BGP origin code originator-id BGP originator ID attribute tag Tag value for destination routing protocol vpnv4 VPNv4 information weight BGP weight for routing table
В таблице ниже описаны доступные для конфигурирования атрибуты.
Атрибут | Описание |
---|---|
Aggregator | Указание на маршрутизатор, который сделал агрегацию маршрутов, соответственно, можно указать адрес маршрутизатора с указанием AS |
AS-path | Указание на все AS, через который пролегает маршрут до сети назначения. С помощью set можно увеличить длину атрибута |
Atomic-Aggregate | Атрибут используется при агрегировании маршрутов. Команда для суммирования маршрутов: aggregate-address <address> [summary-only] [as-set] [summary-only] - ключ, который указывает передавать только суммарный маршрут (по умолчанию передаются все подсети вместе с суммарным маршрутом). [as-set] - ключ для объявления локальной AS. |
Community | Атрибут позволяет выделить необходимые маршруты в логическую группу, чтобы в дальнейшем их специальным образом обработать (пустить их по другому маршруту, применить QoS политики). Установка значения через параметр set: ecorouter(config-route-map)#set community ? <1-65535> community number AA:NN community number in aa:nn format additive Add to the existing community internet Internet (well-known community) local-AS Do not send outside local AS (well-known community) no-advertise Do not advertise to any peer (well-known community) no-export Do not export to next AS (well-known community) none No community attribute Для дальнейшей рекламы маршрутов с атрибутом Community указывается команда: bgp config-type standart в режиме конфигурации, команда neighbor <address> send-community both добавится автоматически |
Comm-list | Параметр позволяет задать список сообществ для удаления. EcoRouterOS позволяет создавать community-list для того, чтобы затем с помощью route-map обработать рекламу подсети (подробнее о route-map читайте в разделе «Карты маршрутов»). Пример настройки для установки метрики для маршрутов с community=100: ip community-list 1 permit <numberAS:100>, numberAS - номер AS, которая прорекламировала маршрут route-map community permit 100 match community 1 set metric 777 Для дальнейшей рекламы маршрутов с атрибутом Community указывается команда: neighbor <address> send-community |
Dampening | Дополнительная функциональность протокола BGP для защиты от нестабильности соединений (route flapping). Команда set dampening <1-45>, где <1-45> устанавливает значение Reachability Half-life time в минутах (время с момента успешного возобновления соединения до снятия штрафных очков (penalty)) |
Extcommunity / extcommunity-list | Атрибут для использования регулярных выражений |
Local Preference | Атрибут указывает на выбор маршрутизатора, который будет использован для выхода из данной автономной системы. Команда set local-preference <0-4294967295> |
Metric | Атрибут Multiexit_Descriminator (MED) представляется аналогом метрики маршрута, устанавливается командой set metric <1-4294967295>, по умолчанию MED равен нулю. |
Origin | Атрибут указывает на то, каким образом был получен маршрут в обновлении. Значение меняется командой set origin |
Originator-ID <0|1|2> | Атрибут указывает Router ID того маршрутизатора, который анонсировал маршрут внутри локальной AS. Если маршрутизатор получает обновление, в котором указан его RID, то этот маршрут не используется и не передается далее соседям. Значение устанавливается командой set originator-id. Возможные значения атрибута:
|
Vpnv4 | Атрибут позволяет задать адрес следующего узла в пути для VPN. Команда set vpnv4 next-hop <address>, где <address> - адрес следующего роутера |
Weight | Атрибут определяет, через какой интерфейс будет осуществляться выход из нашей AS. Чем выше вес, тем приоритетнее интерфейс. Для изменения значения используется команда set weight |
Для одновременной конфигурации большого количества соседств удобнее использовать группы соседей и применять политики ко всей группе. Конфигурация потребует нескольких команд:
- neighbor <name> peer-group, где name - это имя группы;
- neighbor <address> peer-group <name> - привязка соседа к группе.
Пример настройки BGP
Рассмотрим пример настройки топологии:
Задача: установить соседские отношения между R1-ECO1 и ECO1-R2, изменить значение атрибута MED для маршрутов, проанонсированных с R1 так, чтобы для сетей 33.0.0.0/29 метрика была равна 1000, а для 33.0.0.8/29 метрика была равна 500.
Настройка ECO1:
Шаг 1. Переход в режим конфигурации
ECO1>enable
ECO1#configure terminal
Шаг 2. Настройка интерфейсов, сервисных интерфейсов, портов.
ECO1(config)#interface e1
ECO1(config-if)#interface e1
ECO1(config-if)#ip address 77.0.0.200/8
ECO1(config-if)#interface e2
ECO1(config-if)#ip address 200.0.0.200/24
ECO1(config-if)#port ge1
ECO1(config-port)#service-instance ge1/e1
ECO1(config-service-instance)#encapsulation untagged
ECO1(config-service-instance)#connect ip interface e1
ECO1(config-service-instance)#exit
ECO1(config-port)#port ge2
ECO1(config-port)#service-instance ge2/e2
ECO1(config-service-instance)#encapsulation untagged
ECO1(config-service-instance)#connect ip interface e2
ECO1(config-service-instance)#exit
ECO1(config-port)#exit
Шаг 3. Настройка списков фильтрации
ECO1(config)#policy-filter-list 1 permit 33.0.0.0 0.0.0.7
ECO1(config)#policy-filter-list 2 permit 33.0.0.8 0.0.0.7
Шаг 4. Привязка списков фильтрации и назначение метрики для сетей
ECO1(config)#route-map bgp permit 1
ECO1(config-route-map)#match ip address 1
ECO1(config-route-map)#set metric 1000
ECO1(config-route-map)#route-map bgp permit 2
ECO1(config-route-map)#match ip address 2
ECO1(config-route-map)#set metric 500
Шаг 5. Создание пустого списка фильтрации для всех остальных маршрутов с метрикой по умолчанию
ECO1(config-route-map)#route-map bgp permit 3
ECO1(config-route-map)#exit
Шаг 6. Создание и описание групп соседей
ECO1(config)#router bgp 200
ECO1(config-router)#neighbor eBGP peer-group
ECO1(config-router)#neighbor eBGP remote-as 100
ECO1(config-router)#neighbor eBGP ebgp-multihop 2
ECO1(config-router)#neighbor eBGP update-source loopback.0
ECO1(config-router)#neighbor eBGP route-map bgp in
ECO1(config-router)#neighbor iBGP peer-group
ECO1(config-router)#neighbor iBGP remote-as 200
ECO1(config-router)#neighbor iBGP update-source loopback.0
ECO1(config-router)#neighbor iBGP next-hop-self
ECO1(config-router)#neighbor 1.1.1.1 peer-group eBGP
ECO1(config-router)# neighbor 2.2.2.2 peer-group iBGP
ECO1(config-router)#exit
Шаг 7. Создание статических маршрутов
ECO1(config)#ip route 1.1.1.1/32 77.0.0.100
ECO1(config)#ip route 2.2.2.2/32 200.0.0.202
Пример вывода информации таблицы BGP представлен на рисунке ниже.
Для помещения маршрутов в BGP и дальнейшего анонсирования следует воспользоваться командой network либо сделать редистрибуцию из Interior Gateway Protocols (далее IGP) командой redistribute.
connected | Включить в редистрибуцию маршруты к присоединенным сетям |
isis | Включить в редистрибуцию маршруты, полученные через протокол IS-IS |
ospf | Включить в редистрибуцию маршруты, полученные через протокол OSPF |
rip | Включить в редистрибуцию маршруты, полученные через протокол RIP |
static | Включить в редистрибуцию статические маршруты |
Для анонса Loopback интерфейса маршрутизатора R2 используем команду network
ECO1(config-router)#network 2.2.2.2 mask 255.255.255.255
В реализации EcoRouterOS синхронизация выключена по умолчанию, для включения используется команда synchronization в режиме конфигурирования протокола.
Фильтрация и соседские отношения в BGP
Фильтрация маршрутов в BGP осуществляется подобно IGP протоколам, однак о политики указываются конкретно для каждого соседа с отметкой направления in или out .
В таблице ниже представлены команды для фильтрации маршрутов в BGP.
Команда | Список, на который ссылается команда |
---|---|
neighbor allowas-in | |
neighbor soft-reconfiguraition inbound | |
neighbor capability dynamic | |
neighbor capability orf prefix-list | |
neighbor capability route-refresh | |
neighbor distribute-list | policy-filter-list |
neighbor prefix-list | ip prefix-list |
neighbor filter-list | ip as-path access-list |
neighbor route-map | route-map |
Информацию по различным типам списков можно найти в соответствующих разделах, в данном разделе описаны только A S -path списки . AS-path списки позволяют фильтровать маршруты, основываясь на автономных системах, перечисленных в списке атрибута AS-path. Для этого используются регулярные выражения (подробнее см. Регулярные выражения). Для управления маршрутными политиками используется команда ip as-path access-list <номер> permit/deny <регулярное выражение>.
Обновление партнерских BGP отношений
В таблице ниже представлены команды для обновления партнерских BGP отношений.
Команда | Тип обновления | Количество соседей, направление |
---|---|---|
clear ip bgp | Жесткий | Все, входящие/исходящие |
clear ip bgp neighbor-id | Жесткий | Один, входящие/исходящие |
clear ip bgp neighbor-id in/out | Мягкий | Один, входящие/исходящие |
clear ip bgp neighbor-id soft in/out | Мягкий | Один, входящие/исходящие |
clear ip bgp soft | Мягкий | Все, входящие/исходящие |
clear ip bgp neighbor-id soft | Мягкий | Один, входящие/исходящие |
Под "жестким" типом обновления подразумевается обновление соседских отношений со сбросом TCP сессии.
Под "мягким" типом обновления подразумевается обновление соседских отношений без сброса TCP сессии.
Для работы функциональности clear ip bgp neighbor-id in требуется наличие команды neighbor <address> soft-reconfiguration inbound в конфигурации протокола.
Пользователям часто приходится менять политики фильтрации маршрутов в BGP. Крупные изменения в таблицах маршрутизации и сброс TCP-сессий с BGP-соседями вызывают всплеск нагрузки на центральный процессор маршрутизатора. Чтобы уменьшить этот эффект и сделать работу с BGP-соседями и анонсами маршрутной информации более удобной и гибкой, в EcoRouterOS предусмотрен функционал отключения автообновления маршрутной информации при смене политик фильтрации. В BGP маршрутные политики могут настраиваться следующими способами:
- при помощи префикс-листов (prefix-list);
- при помощи карт маршрутов (route-map);
- при помощи специальных листов для маршрутных политик (policy-filter-list);
- при помощи листов распределения (distribute-list);
- при помощи листов фильтрации (filter-list) с листами по BGP AS (ip as-path access-list).
По умолчанию, при создании или изменении политики фильтрации в направлении к соседу маршрутизатор отправит сообщение с анонсами маршрутов (BGP Update) через 30 сек (в случае EBGP-соседства) или мгновенно (в случае iBGP-соседства).
Пример:
ip prefix-list 1 deny 1.1.1.1/32
neighbor 10.0.0.2 prefix-list 1 out
Изменить временной интервал можно командой neighbor 1.1.1.1 advertisement-interval <VALUE>, где <VALUE> указывается в секундах. Выключить подобное поведение можно командой neighbor 10.0.0.2 disable-auto-refresh. Тогда для отправки маршрутной информации соседу необходимо будет сбросить соседские отношения. Для этого без сброса TCP-сессий нужно сбросить соседские отношения (мягкий сброс) - при вызове команд сброса clear ip bgp ... следует добавить ключевое слово soft.По умолчанию, при создании или изменении фильтрующей политики в направлении от соседа маршрутизатор мгновенно (в обоих случаях - EBGP и iBGP соседства) отправит сообщение с запросом обновления маршрутной информации от соседа (BGP Route-Refresh), но только в том случае, если сосед поддерживает эту опцию.
Пример:
ip prefix-list 1 deny 1.1.1.1/32
neighbor 10.0.0.2 prefix-list 1 in
Это поведение вызвано опцией BGP Auto-Refresh, которое в EcoRouterOS включено по умолчанию. Выключить подобное поведение можно командой neighbor 10.0.0.2 disable-auto-refresh, тогда для отправки запроса на обновление маршрутной информации от соседа необходимо будет сбросить соседские отношения (без сброса TCP сессий добавьте ключевое слово soft в командах clear ip bgp …). Здесь также необходима поддержка опции BGP Route-Refresh у соседа.
Команда no neighbor 10.0.0.2 capability route-refresh позволит отключить поддержку опции BGP Route-Refresh и исключить возможность отправки сообщений BGP Route-Refresh соседу.
Внимание! Настоятельно рекомендуется отключать функционал auto-refresh для соседей, если те передают слишком большое количество анонсов в BGP.
Для проверки поддержки этой опции у соседа можно воспользоваться командой:
ecorouter#show ip bgp neighbors
BGP neighbor is 10.0.0.2, remote AS 2, local AS 1, external link
BGP version 4, remote router ID 100.100.100.100
BGP state = Established, up for 02:07:11
Last read 02:07:11, hold time is 90, keepalive interval is 30 seconds
Neighbor capabilities:
Route refresh: advertised and received (old and new)
Address family IPv4 Unicast: advertised and received
Received 315 messages, 0 notifications, 0 in queue
…………..Вывод сокращен…………….
Фраза в выводе «advertised and received» говорит о включенной опции BGP Route-Refresh как на локальном маршрутизаторе, так и у соседа.
Результат отключения этой опции на локальном устройстве показан ниже:
ecorouter#show ip bgp neighbors
BGP neighbor is 10.0.0.2, remote AS 2, local AS 1, external link
BGP version 4, remote router ID 100.100.100.100
BGP state = Established, up for 02:07:11
Last read 02:07:11, hold time is 90, keepalive interval is 30 seconds
Neighbor capabilities:
Route refresh: received (old and new)
Address family IPv4 Unicast: advertised and received
Received 315 messages, 0 notifications, 0 in queue
…………..Вывод сокращен…………….
Регулярные выражения
В реализации EcoRouterOS представлен следующий набор регулярных выражений (см. таблицу ниже):
Выражение | Использование |
---|---|
^ | Начало строки |
$ | Конец строки |
[ ] | Диапазон значений |
- | Спецификация диапазона, например, [0-9] |
( ) | Логическая группа |
. | Любое значение |
* | Ноль или большее количество совпадений с предыдущим символом |
+ | Одно или большее количество совпадений с предыдущим символом |
? | Ноль или одно совпадение с предыдущим символом |
_ | Старт и конец строки, пробел, запятая, открытие или закрытие скобок |
Приведем несколько примеров часто используемых регулярных выражений:
- .* - любое значение попадает под это правило,
- ^$ - маршрут из локальной AS,
- ^100_ - информация о маршруте получена из AS 100,
- _100$ - подсеть находится в AS 100,
- _100_ - маршрут проходит через AS 100,
- ^[0-9]+$ - маршрут из непосредственно подключенной (соседней) AS.
Рефлекторы маршрутов и конфедерации
При администрировании большого BGP домена требуется сконфигурировать рефлекторы. Для этого на маршрутизаторе-рефлекторе используется команда neighbor <address> route-reflector-client.
Рефлекторы маршрутов не оказывают влияния на пути, по которым IP пакеты проходят через сеть, но определяют порядок распространения маршрутной информации в сети.
Конфедерация - группа автономных систем, анонсируемых с общим номером AS внешним узлам BGP. Работа рефлектора рассматривается с точки зрения протокола iBGP, конфедерации функционируют на уровне автономных систем. Применение конфедераций позволяет разбить автономную систему на подсистемы, которые обмениваются маршрутной информацией с помощью протокола eBGP. При создании конфедерации необходимо на всех маршрутизаторах применить команду bgp confederation identifier <1-65535> с указанием номера конфедерации. Соседние AS, которые должны принадлежать конфедерации, указываются с помощью команды bgp confederation peers <numberAS1 numberAS2 ...>. Номера всех нужных соседних AS указываются через пробел.
Команды конфигурирования BGP
Команды конфигурирования протокола BGP представлены в таблице ниже. Данные команды доступны в конфигурационном режиме и в контекстном режиме конфигурирования маршрутизатора (config-router)#.
Команда | Режим | Описание |
---|---|---|
router bgp <номер AS> | конфигурационный | Переход в режим конфигурирования протокола BGP |
address-family ipv4 {unicast | multicast} | контекстный | Переход в режим конфигурирования address-family |
aggregate-address <адрес> | контекстный | Создание суммарного маршрута |
auto-summary | контекстный | Включение автосуммаризации |
bgp always-compare-med | контекстный | Сравнение атрибутов MED для маршрута, полученного из разных AS определяет лучший путь |
bgp as-local-count <2-64> | контекстный | Определяет количество значений собственной AS в атрибуте AS-path |
bgp bestpath ... | контекстный | Изменение алгоритма выбора лучшего пути |
bgp client-to-client reflection | контекстный | Включение роли рефлектора |
bgp cluster-id <1-4294967295> | контекстный | Указание номера кластера |
bgp confederation identifier <1-65535> | контекстный | Указание номера конфедерации |
bgp confederation peers <1-65535> | контекстный | Указание соседей в конфедерации |
bgp config-type {standard | ecorouteros} | конфигурационный | Определение типа конфигурации, по умолчанию включена ecorouteros, для передачи атрибута community используется тип standard |
bgp dampening ... | контекстный | Настройка подавления нестабильных маршрутов |
bgp default local-preference <0-4294967295> | контекстный | Указание значения атрибута local preference |
bgp deterministic-med | контекстный | Сравнение атрибутов MED для маршрута, полученного из одной AS; атрибуты weight, local preference, AS-path и origin должны быть равны |
bgp enforce-first-as | контекстный | Update сообщение, которое пришло не от соседней сконфигурированной AS, будет отброшено |
bgp fast-external-failover | контекстный | Моментальный сброс BGP сессии при падении интерфейса |
bgp nexthop-trigger delay <1-100> | конфигурационный | Установка задержки на изменения параметров в BGP таблице при каких-либо изменениях параметров у соседнего маршрутизатора |
bgp nexthop-trigger enable | конфигурационный | Включение специального мониторинга адреса соседа |
bgp rfc1771-path-select | конфигурационный | Включение алгоритма выбора лучшего пути согласно RFC 1771 |
bgp rfc1771-strict | конфигурационный | Установка атрибута origin согласно RFC 1771 |
bgp router-id <адрес> | контекстный | Указание BGP идентификатора маршрутизатора |
bgp scan-time <0-60> | контекстный | Значение интервала сканирования доступности маршрутов в таблице маршрутизации (по умолчанию 60 сек) |
distance bgp <1-255> <1-255> <1-255> | контекстный | Установка административных расстояний для external, internal, local маршрутов |
max-paths {ebgp | ibgp} <2-64> | контекстный | Максимальное количество возможных маршрутов, которые считаются равными |
mpls-resolution | контекстный | Автоматическое создание FTN записи для префиксов, полученных от BGP соседей |
neighbor <адрес> activate | контекстный | Активация соседских отношений при конфигурировании address-family |
neighbor <адрес> advertisement-interval <0-65535> | контекстный | Указание минимального интервала для отправки Update сообщений |
neighbor <адрес> allowas-in <1-10> | контекстный | Указание на рекламу префиксов (маршрутов) даже если их источник в той же AS |
neighbor <адрес> as-origination-interval <1-65535> | контекстный | Указание минимального интервала для отправки AS-origination Update сообщений |
neighbor <адрес> attribute-unchanged [as-path | next-hop | med] | контекстный | При изменении значений атрибутов отправлять значения по умолчанию |
neighbor <адрес> capability dynamic | контекстный | Включение динамических возможностей для определенного узла |
neighbor <адрес> capability orf prefix-list | контекстный | Включение фильтрации ORF и анонсирования ORF соседям |
neighbor <адрес> capability route-refresh | контекстный | Включение анонсирования поддержки возможностей обновления маршрутов |
neighbor <адрес> connection-retry-time <1-65535> | контекстный | Установка таймера повторного соединения с соседом (по умолчанию 120 сек.) |
neighbor <адрес> default-originate | контекстный | Отправка соседу маршрута по умолчанию |
neighbor <адрес> description | контекстный | Описание для соседнего маршрутизатора (максимум 80 символов) |
neighbor <адрес> disable-infinite-holdtime | контекстный | Невозможность задать бесконечный hold-time |
neighbor <адрес> disable-capability-negotiate | контекстный | Отключение проверки на совместимость версий протокола (отключена по умолчанию) |
neighbor <адрес> ebgp-multihop <1-255> | контекстный | Установка значения TTL в BGP пакетах при eBGP сессии |
neighbor <адрес> enforce-multihop | контекстный | Включение принудительного непрямого соседства |
neighbor <адрес> local-as <1-4294967295> | контекстный | Указание номера локальной AS |
neighbor <адрес> maximum-prefix <1-4294967295> | контекстный | Контроль количества принимаемых маршрутов от соседа |
neighbor <адрес> next-hop-self | контекстный | Отправка информации о Next-Hop соседям iBGP |
neighbor <адрес> passive | контекстный | Включение пассивного режима |
neighbor <адрес> password | контекстный | Задание MD5 пароля для аутентификации (максимум 80 символов) |
neighbor {имя | адрес} peer-group <имя> | контекстный | Создание группы соседей/добавление в группу |
neighbor <адрес> port <0-65535> | контекстный | Указание BGP порта для соседа |
neighbor <адрес> remote-as | контекстный | Задание номера AS соседа |
neighbor <адрес> remove-private-AS | контекстный | Удаление AS из приватного диапазона при отправке обновлений |
neighbor <адрес> route-reflector-client | контекстный | Включение роли рефлектора и указание соседа в роли клиента |
neighbor <адрес> route-server-client | контекстный | Указание соседа в роли сервер-клиента |
neighbor <адрес> send-community <both/extended/standard> | контекстный | Отправка атрибута community |
neighbor <адрес> shutdown | контекстный | Административное выключение BGP отношений |
neighbor <адрес> soft-reconfiguration inbound | контекстный | Включение локальной базы данных для принятых маршрутов |
neighbor <адрес> timers <0-65535> <0-65535> [connect <1-65535>] | контекстный | Задание keepalive, hold и connect таймеров |
neighbor <адрес> transparent-as | контекстный | Включение режима прозрачной AS, не включать значение собственной AS в атрибут AS-path |
neighbor <адрес> transparent-nexthop | контекстный | Включение режима прозрачной AS, не указывать себя в качестве Next-Hop к маршруту |
neighbor <адрес> unsuppress-map <имя группы> | контекстный | Реклама более специфических маршрутов для соседа при созданном суммарном маршруте |
neighbor <адрес> update-source <адрес> | контекстный | Указание интерфейса для создания TCP-сессии |
neighbor <адрес> weight <0-65535> | контекстный | Задание атрибута weight |
network <адрес> | контекстный | Указание подсетей для рекламы |
redistribute {connected | isis | rip | static} | контекстный | Редистрибуция в BGP |
synchronization | контекстный | Включение режима синхронизации |
timers bgp <0-65535> <0-65535> | контекстный | Задание keepalive и hold таймеров |
BGP. Команды просмотра
Команды просмотра информации о настройках и статистике протокола BGP представлены в таблице ниже.
Команда | Описание |
---|---|
show bgp statistics | Вывод статистических данных |
show ip bgp | Выводит BGP таблицу |
show ip bgp <адрес сети> | Выводит информацию о конкретном маршруте |
show ip bgp attribute-info | Отображает информацию обо всех внутренних атрибутах |
show ip bgp community | Выводит список маршрутов, принадлежащих к конкретному сообществу |
show ip bgp community-info | Выводит информацию о сообществах |
show ip bgp dampening {dampened-paths | flap-statistics | parameters} vrf {<vrf-name> | all | default} | Выводит информацию о подавлении нестабильных маршрутов |
show ip bgp filter-list | Выводит список маршрутов, соответствующий AS-path списку |
show ip bgp ipv4 <unicast/multicast> ... | Вывод информации для address-family |
show ip bgp neighbors | Выводит информацию обо всех сконфигурированных соседях |
show ip bgp neighbors <address>advertised-routes | Выводит информацию о рекламируемых маршрутах, которые прошли исходящую фильтрацию |
show ip bgp neighbors <address> routes | Выводит информацию о получаемых маршрутах, которые прошли входящую фильтрацию |
show ip bgp neighbors <address>received-routes* | Выводит информацию о получаемых маршрутах до каких-либо входных фильтров |
show ip bgp paths | Отображает информацию о маршрутах для локального маршрутизатора |
show ip bgp prefix-list | Выводит список маршрутов, соответствующий списку префиксов |
show ip bgp regexp | Выводит список маршрутов, соответствующий регулярному выражению |
show ip bgp route-map | Выводит список маршрутов, соответствующий карте маршрутов |
show ip bgp summary | Отображает состояние всех соединений BGP |
Dampening
Подавление переключающихся маршрутов (dampening) - это инструмент управления, предназначенный для уменьшения нестабильности и нежелательных колебаний в сети. Нежелательные переключения маршрутов возникают в случае, когда маршруты то появляются в таблице маршрутизации, то пропадают. Это может быть вызвано обрывами линков, ошибками в работе устройств, неправильной настройкой оборудования и т.п. Переключающиеся маршруты в таблице маршрутизации повышают нагрузку на процессоры сетевых устройств, что может привести к более серьезным проблемам в сети. Использование технологии подавления переключающихся маршрутов является хорошей инженерной практикой, которую можно встретить в сетях у многих провайдеров.
Переключающийся маршрут за каждое переключение получает штрафные баллы. Эти штрафные баллы суммируются в реальном времени. Когда превышается установленный "предел для подавления", нестабильный маршрут исключается из анонсирования. Накопленный маршрутом штраф автоматически уменьшается со временем на основании заданного "времени уменьшения штрафа вдвое" (Half-life time). Когда значение штрафа станет ниже "предела для повторного использования" подавление будет снято, и маршрут снова станет анонсироваться.
После того как значение штрафа для маршрута станет меньше половины "предела для повторного использования", информация о подавлении маршрута удаляется из маршрутизатора.
Для задания параметров отключения переключающихся маршрутов в контекстном режиме конфигурирования bgp-маршрутизатора используется команда bgp dampening {route-map <ROUTE-MAP-NAME> | <REACHIBILITY-HALF-LIFE-TIME> <REUSE-VALUE> <SUPPRESS-VALUE> <MAX-SUPPRESS-VALUE> <UN-REACHIBILITY-HALF-LIFE-TIME>}. Команда также позволяет в явном виде указать карту маршрутов для подавления.
Параметр | Описание |
---|---|
<ROUTE-MAP-NAME> | Имя карты маршрутов для подавления |
<REACHIBILITY-HALF-LIFE-TIME> | Время доступности в минутах, за которое штраф уменьшается вдвое (default reachability half-life time). Допустимый диапазон 1-45. Значение по умолчанию - 15 |
<REUSE-VALUE> | Значение предела для повторного использования маршрута. Когда значение штрафа опускается ниже этого значения, маршрут перестает подавляться. Допустимый диапазон 1-20000. Значение по умолчанию 750 |
<SUPPRESS-VALUE> | Значение предела для подавления маршрута. Когда значение штрафа превышает это значение, маршрут подавляется. Допустимый диапазон 1-20000. Значение по умолчанию 2000 |
<MAX-SUPPRESS-VALUE> | Максимальная продолжительность подавления стабильного маршрута в минутах. Допустимый диапазон 1-255. Значение по умолчанию в 4 раза больше времени доступности, за которое штраф уменьшается вдвое, или 60 минут |
<UN-REACHIBILITY-HALF-LIFE-TIME> | Время недоступности в минутах, за которое штраф уменьшается вдвое. Допустимый диапазон 1-45. Значение по умолчанию - 15 |
Пример:
#configure terminal
(config)#router bgp 11
(config-router)#bgp dampening 20 800 2500 80 25
Background BGP scanners
Данные параметры отвечают за сканирование таблиц BGP RIB и IP RIB маршрутизатора, а также за сортировку, отправку и удаление записей из них. Как известно, BGP использует только маршруты с доступным next-hop и в случае его исчезновения удаляет подсети из таблиц. Эти действия определяются значением таймера background bgp next-hops, по умолчанию все маршруты проверяются 1 раз в 60 секунд.
Изменить значения данного таймера можно в контекстном режиме конфигурирования bgp командой bgp scan-time next-hops <0-60>. При указании значения 0 сканирование будет отключено.
Помимо доступности next-hop BGP сканирует таблицы маршрутизатора на предмет наличия новых статических записей и маршрута 0.0.0.0. Эти действия определяются значением таймера background bgp networks, по умолчанию все маршруты проверяются 1 раз в 15 секунд.
Изменить значения данного таймера можно в контекстном режиме конфигурирования bgp командой bgp scan-time networks <15-60>.
Для снижения нагрузки на CPU устройства сетевой инженер может выставить максимальные значения таймеров сканирования, но при этом будет увеличено время сходимости сети.
Команды clear
Для очистки информации о подавлении нестабильных маршрутов для протокола BGP для выбранной сети или VRF предназначена команда clear ip bgp dampening, запускаемая в административном режиме. Синтаксис команды следующий: clear ip bgp dampening [<ADDRESS>[/<MASK>] | ] [ vrf {<VRF-NAME> | default | all} ].
Параметр | Описание |
---|---|
<ADDRESS>/<MASK> | Очистить информацию для подсети с указанным IP и маской, например, 35.0.0.0/8 |
vrf {<VRF-NAME> | default | all} | Очистить информацию о сущности VRF - с указанным именем VRF-NAME, выбранной по умолчанию (default) или для всех VRF-сущностей (all) |
Пример:
#clear ip bgp dampening 35.0.0.0/8
Для очистки информации о протоколе BGP (статистики и данных по IPv4) предназначена группа команд clear bgp, запускаемая в административном режиме.
Для очистки статистики синтаксис команды следующий: clear bgp statistics.
Для очистки данных по IPv4 синтаксис команды следующий: clear bgp ipv4 {multicast | unicast} { * | <AS-number> | <ADDRESS>[/<MASK>] | flap-statistics { <ADDRESS>[/<MASK>] | vrf {<VRF-NAME> | all | default} } }.
Параметр | Описание |
---|---|
<ADDRESS>/<MASK> | IP-адрес подсети и маска, например, 35.0.0.0/8 |
multicast | unicast | Выбрать режим multicast или unicast |
<AS-number> | Номер автономной системы в диапазоне от 1 до 4294967295 |
flap-statistics | Очистить статистику по переключающимся маршрутам выбранной по адресу и маске (ADDRESS/MASK) или имени (VRF-NAME) сущности, всех сущностей (all) или сущности по умолчанию (default) |
Примеры:
#clear bgp statistics
#clear bgp ipv4 unicast flap-statistics all
BGP Blackhole
В качестве одного из методов защиты от DDoS атак в EcoRouterOS предусмотрен функционал отбрасывания трафика через Null-интерфейс путем его подстановки в качестве адреса следующего узла для BGP-маршрутов. Подобные сценарии являются эффективным средством борьбы с крупными и масштабными атаками, целью которых является довести атакуемую сеть до «отказа в обслуживании». Более подробную информацию о всех преимуществах и недостатках этого функционала можно найти в Интернете.
Ниже рассматривается пример сценария и конфигурации EcoRouter.
Допустим, что злоумышленник PC из сети 192.168.0.0/24 подает огромное количество трафика в BGP AS на Server 10.10.10.10/32, пытаясь вызвать неработоспособность сервера. Задача сводится к тому, что необходимо с устройства R1 отправить рекламу об адресе 10.10.10.10/32 с определенным номером атрибута community. Маршрутизатор EcoRouter ECO-2, приняв рекламу с этим маршрутом, должен обновить данные в RIB и начать отбрасывать все пакеты, приходящие с PC в сторону адреса 10.10.10.10/32. Конфигурация ECO-2 может выглядеть следующим образом:
ecorouter#sh running-config
!
no service password-encryption
!
hw mgmt ip 192.168.255.1/24
!
ip vrf management
!
mpls propagate-ttl
!
security default
security none vrf management
!
ip pim register-rp-reachability
!
router bgp 1
redistribute connected
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 soft-reconfiguration inbound
neighbor 1.1.1.1 route-map BLACKHOLE in
!
ip route 9.9.9.9/32 Null
!
ip community-list 66 permit 1:777
!
route-map BLACKHOLE permit 10
match community 66
set ip next-hop 9.9.9.9
!
route-map BLACKHOLE permit 20
!
line con 0
line vty 0 39
!
traffic-class default
!
port te0
lacp-priority 32767
mtu 9728
service-instance 1
encapsulation untagged
!
port te1
lacp-priority 32767
mtu 9728
service-instance 1
encapsulation untagged
!
interface 1
ip mtu 1500
connect port te1 service-instance 1
ip address 1.1.1.2/24
!
interface 2
ip mtu 1500
connect port te0 service-instance 1
ip address 192.168.0.1/24
vrf management
Обратите внимание на статический маршрут в Null-интерфейс и инструкцию set ip next-hop 9.9.9.9 в карте маршрутов. Это главные условия для установки рекурсивного маршрута в RIB через Null-интерфейс. Пример вывода таблицы маршрутизации:
ecorouter#sh ip ro
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
IP Route Table for VRF "default"
C 1.1.1.0/24 is directly connected, 1
S 9.9.9.9/32 [1/0] is a summary, Null
B 10.10.10.0/24 [200/0] via 1.1.1.1, 1, 00:08:45
B 10.10.10.10/32 [200/0] via 9.9.9.9 (recursive blackhole), 00:08:45
C 192.168.0.0/24 is directly connected, 2
Gateway of last resort is not set
В примере использовался протокол iBGP, при необходимости этот функционал можно использовать и в eBGP топологии, однако, для создания рекурсивного маршрута через Null потребуется указание команды neighbor <адрес> ebgp-multihop <значение> для соседа, который отсылает информацию о маршруте с атрибутом community (в примере адрес соседа 1.1.1.1) или создать loopback-интерфейс на EcoRouter c адресом из подсети используемого BGP next-hop в карте маршрутов (route-map).