Про виртуальные сети (часть 21). Ограничиваем таблицу маршрутизации VRF (часть 2)

Итак, продолжаем разговор. В предыдущей статье мы разобрались, зачем нужно ограничивать таблицу маршрутизации и рассмотрели один из вариантов, как это сделать. Узнали, что можно ограничить таблицу маршрутизации командой maximum routes, но повлиять на использование ресурсов маршрутизатора процессом маршрутизации (OSPF в нашем случае) не можем.

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

Для начала переделаем сеть как показано на рисунке 1.

RL_Logic

Рисунок 1

Подробное описание, как конфигурируется такая сеть и как она работает, я приведу в следующей статье. Теперь же мы рассмотрим только стык PE-CE, настройку протокола BGP и возможности по ограничению количества маршрутов.

Начнем, как всегда, с самого простого. Сконфигурируем BGP на D_Zapad.

D_Zapad#conf t
D_Zapad(config)#router bgp 11
D_Zapad(config-router)#neighbor 10.1.10.1 remote-as 1
D_Zapad(config-router)#network 192.168.10.1 mask 255.255.255.255

Думаю, пояснения излишни. Перейдем к маршрутизатору Zapad. Здесь сконфигурирован одноименный vrf, на использование которого настроен интерфейс клиента.

Zapad#conf t
Zapad(config)#router bgp 1
Zapad(config-router)#addr
Zapad(config-router)#address-family ipv4 vrf Zapad
Zapad(config-router-af)#neighbor 10.1.10.2 remote-as 11
Zapad(config-router-af)#network 10.1.10.0 mask 255.255.255.252

Тоже все понятно. Теперь, собственно, ограничение:

Zapad(config-router-af)#neighbor 10.1.10.2 maximum-prefix 4

Здесь тоже ничего загадочного. Мы разрешаем получение от данного соседа не более четырех префиксов. Все? Конечно, нет. Сейчас, как раз, начинается самое интересное. Что будет делать маршрутизатор, если разрешенное количество будет превышено?

Как мы помним, команда maximum routes позволяла ограничить количество маршрутов в таблице маршрутизации, но больше никак не влияла на общую работоспособность. С BGP все круче. Добавим маршрутов на D_Zapad.

D_Zapad(config-router)#network 192.168.10.2 mask 255.255.255.255
D_Zapad(config-router)#network 192.168.10.3 mask 255.255.255.255
D_Zapad(config-router)#network 192.168.10.4 mask 255.255.255.255

И после добавления последнего получаем на маршрутизаторе Zapad предупреждение

*Mar 8 22:46:17.903: %BGP-4-MAXPFX: Number of prefixes received from 10.1.10.2 vpn vrf Zapad (afi 4) reaches 4, max 4

Понятным английским языком написано – от соседа такого-то получено 4 маршрута, максимум возможно 4.

Говорили мне, но я очень упрямый и добавляю пятый.

D_Zapad(config-router)#network 192.168.10.5 mask 255.255.255.255

Терпение маршрутизатора Zapad лопнуло, и он разразился гневной речью

*Mar 8 22:42:59.907: %BGP-3-MAXPFXEXCEED: Number of prefixes received from 10.1.10.2 vpn vrf Zapad (afi 4): 5 exceeds limit 4
*Mar 8 22:42:59.915: %BGP-5-ADJCHANGE: neighbor 10.1.10.2 vpn vrf Zapad Down BGP Notification sent
*Mar 8 22:42:59.919: %BGP-3-NOTIFICATION: sent to neighbor 10.1.10.2 3/1 (update malformed) 0 bytes
*Mar 8 22:42:59.927: %BGP-4-MSGDUMP: unsupported or mal-formatted message received from 10.1.10.2:
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 0037 0200 0000 1B40 0101 0040 0206 0201
0000 000B 4003 040A 010A 0280 0404 0000 0000 20C0 A80A 04
*Mar 8 22:42:59.939: %BGP_SESSION-5-ADJCHANGE: neighbor 10.1.10.2 IPv4 Unicast vpn vrf Zapad topology base removed from session BGP Notification sent

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

D_Zapad#sh ip bgp neighbors
BGP neighbor is 10.1.10.1, remote AS 1, external link
BGP version 4, remote router ID 0.0.0.0
BGP state = Idle
Neighbor sessions:
0 active, is not multisession capable (disabled)
Default minimum time between advertisement runs is 30 seconds

—-output omited—-

Разумеется, все маршруты, полученные от D_Zapad, удалены.

При данных настройках единственная возможность у нерадивого админа восстановить связь — удалить лишние маршруты, а потом, посыпая голову пеплом, приползти на коленях к провайдеру и умолять его о введении следующей команды:

Zapad#clear ip bgp vrf Zapad 11

После которой снова устанавливается соседство, и все живут дальше мирно и счастливо.

Как мы видим, BGP может относится к нарушениям достаточно жестко и не позволяет превышать расход ресурсов на маршрутизацию клиента ни прямо, ни косвенно. И с этой точки зрения BGP более предпочтителен в качестве ограничителя. Но BGP не был бы сам собой, если бы не предлагал варианты. Смотрим:

Zapad(config-router-af)#neighbor 10.1.10.2 maximum-prefix 4 ?
<1-100> Threshold value (%) at which to generate a warning msg
restart Restart bgp connection after limit is exceeded
warning-only Only give warning message when limit is exceeded

Во-первых, по аналогии с ограничителем таблицы маршрутизации мы можем задать порог, при достижении которого будет выдаваться уведомление. Во-вторых, чтобы не утруждать себя сбросом BGP после потери соседства, мы можем задать интервал в минутах, после истечения которого маршрутизатор сам попытается переустановить соседство. Ну и, наконец, можно просто логировать нарушения не препятствуя клиенту нагружать оборудование. Что из этого выбрать – решать вам.

 Аверьянов Кирилл
network-lab.ru

Как всегда в конце конфиги:D_Zapad D_Vostok Sever Zapad Yug Vostok


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Hide me
Получать регулярно свежие материалы, лабораторные и вебинары
Email Имя
Show me