Как стать автором
Поиск
Написать публикацию
Обновить
524.83
OTUS
Развиваем технологии, обучая их создателей

VxLAN iBGP vs eBGP

Время на прочтение5 мин
Количество просмотров8.3K

Предыдущие части цикла можно найти по ссылкам:

1 часть цикла - L2 связанность между серверами
2 часть цикла - Маршрутизация между VNI
2.5 часть цикла - Теоретическое отступление
3 часть цикла - Подключение внешнего маршрутизатора/firewall
4 часть цикла - Multipod
5 часть цикла - Multisite


До этого момента тема eBGP в overlay практически не затрагивалась, за исключением Multipod топологии, однако, и там все было довольно поверхностно и не хватает деталей для полной реализации в одном поде. Так что исправим это допущение и рассмотрим поближе eBGP.

Для начала предлагаю определиться для чего использовать eBGP и для чего iBGP(тут чисто субъективный взгляд. Ваше мнение может сильно отличаться от мнения автора):

  • iBGP - удобно использовать, когда в underlay сети настроен протокол семейства IGP, например, OSPF или IS-IS. В этом случае нет смысла усложнять топологию различными AS в BGP и вполне логично использовать только iBGP.

  • eBGP - используется, когда в underlay так же настроен BGP. При этом довольна частая ситуация, что сеть underlay разделяют на различные AS(возможно в данном случае удобно делать фильтры по AS-path). Тогда ничего не остается и приходится использовать eBGP еще и в Overlay(большая редкость, когда устройства позволяют запустить несколько процессов BGP с разным номер AS)

Перейдем непосредственно к сравнению различных реализаций протокола. Сеть underlay у нас остается неизменна и представлена ниже:

Underlay Сеть
Underlay Сеть

При использовании eBGP в underlay сеть принято разделять на зоны следующим образом:

  1. Каждый Spine находится в одной автономной системе. Будем использовать AS 65000

  2. Каждый Leaf находится в своей автономной системе. Номера AS начинаются с 65500 и далее

Такой подход позволяет избежать петель в сети, так как update пришедший от одного Spine к другому Spine будет отброшен из-за одинаково номера AS:

Решение для без петлевой сети, при одинаковом номере AS на Spine
Решение для без петлевой сети, при одинаковом номере AS на Spine

При этом Leaf находятся в разных AS и все update от одного Leaf спокойно дойдут до всех остальных:

Распространение update к Leaf в разных AS
Распространение update к Leaf в разных AS

Таким образом, underlay сеть может работать стабильно без дополнительных конфигураций и добавления роли Route-reflector в сеть. Но такая простота в одном месте способна усложнить жизнь в другом. Для начала рассмотрим конфигурации iBGP:

Spine:

feature bgp
nv overlay evpn
router bgp 65001
  template peer LEAF 
    remote-as 65001
    update-source loopback0
    address-family l2vpn evpn
      send-community
      send-community extended
      route-reflector-client
  neighbor 10.255.1.11
    inherit peer LEAF
  neighbor 10.255.1.12
    inherit peer LEAF
  neighbor 10.255.1.21
    inherit peer LEAF

И на Leaf:

feature bgp
nv overlay evpn
router bgp 65001
  template peer SPINE
    remote-as 65001
    update-source loopback0
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.255.1.101
    inherit peer SPINE
  neighbor 10.255.1.102
    inherit peer SPINE

В целом все выглядит довольно просто и никаких сложностей тут не должно возникнуть. Далее рассмотрим конфигурации route-targer на Leaf коммутаторе для L2VNI, который используется при передаче update по overlay сети и позволяет отдельным VTEP добавлять только определенные update, а не update из всей в сети overlay.

evpn
  vni 10000 l2
    route-target import auto 
    route-target export auto

Как видно все довольно просто и не требует каких-либо сложностей и дополнительных вопросов.

Думаю с iBGP разобрались, все-таки большая часть цикла посвящена именно данной задаче и пора бы приступить к рассмотрению eBGP.

Для начала рассмотрим настройку BGP Spine:

feature bgp
nv overlay evpn
router bgp 65000
  template peer LEAF 
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.255.1.11
    remote-as 65501
    inherit peer LEAF
  neighbor 10.255.1.12
    remote-as 65502
    inherit peer LEAF
  neighbor 10.255.1.21
    remote-as 65503
    inherit peer LEAF

Leaf:

feature bgp
nv overlay evpn
router bgp 65501
  template peer SPINE
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.255.1.101
    remote-as 65000
    inherit peer SPINE
  neighbor 10.255.1.102
    remote-as 65000
    inherit peer SPINE

Настройка eBGP особо не отличается от iBGP, за исключением номеров AS и удаление Route-reflector. Однако, попробуйте остановиться и подумать что может пойти не так, если мы оставим настройку в таком состоянии.

А пойти не так может следующее:

Первая проблема - в отличии от iBGP в eBGP меняется Next-hop при переходе из одной AS в другую, то есть Leaf в AS 65502 увидит не NH Leaf в 65501, а адрес Spine из AS 65000 и попытается построить VxLAN до этого NH. Вполне логично, что это не заработает:

  1. На Spine нет того клиента к которому обращается Leaf

  2. Spine не имеет включенных фич для работы с VxLAN и не может выступать в роли VTEP.

Такая задача решается принудительным запретов Spine менять адрес Next-hop в сторону leaf коммутаторов. Необходимо создать route-map в котором будет следующая настройка:

route-map UNCHANCHED_NH permit 10
    set ip next-hop unchanged  

Далее применяем это все к соседям Leaf:

template peer LEAF 
    route-map UNCHANCHED_NH out

После применения команды Spine перестанет менять NH. Дополнительно замечу, что на Cisco Nexus не предусмотрена отдельная команда для запрета смены NH. Этот вопрос можно решить только с помощью route-map, что в свою очередь дает возможность применять команду только к отдельным update(например, использовать различные ACL или Prefix-list и т.п. для выбора определенного update).

Вторая проблема, на первый взгляд, не такая явная и связана она с route-target и будет основным не удобством eBGP в Overlay. Тут появляется сразу два неудобства:

Первое неочевидное неудобство заключается в невозможности использовать параметр auto, так как в этом случае route-target берет значения AS:VNI, в eBGP же AS всегда будет разный, а значит route-target не совпадет между разными Leaf. Решается проблема довольно просто - заданием данной настройки вручную:

evpn
  vni 10000 l2
    route-target import 9999:10000 
    route-target export 9999:10000

Под каждый VNI необходимо задавать свои настройки и соблюдать идентичность RT между VTEP. Это задача довольно просто решается автоматизацией настройки VTEP, вручную вполне можно запутаться. Можно сказать, что тут наступает момент когда сетевику надо пойти в автоматизацию.

Второе неочевидное неудобство, как ни странно, находится на Spine. Все дело в том, что Spine тоже смотрит в поле RT и если значение пришло не из внутренней AS - update отбрасывается. Тут придется немного схитрить и добавить команды:

router bgp 65000
    address-family l2vpn evpn
      retain route-target all

Подведем некий итог. Если посмотрим более внимательно на логику работы Spine, то получается он берет на себя некую роль Route-reflector и просто пересылает update без какой-либо обработки. То есть:

  • Не меняется NH, как при использовании RR.

  • На Spine принимаются абсолютно все update, даже если устройство не знает путь до хоста назначения, и передается на Leaf, что нарушает логику выбора лучшего маршрута BGP(маршрут должен быть валидным. При неопределённом route-target, маршрут никогда таковым не станет)

На Leaf же настройки особо не меняются, за исключением ручной записи RT, что, опять же, решает автоматизацией такой задачи.

В результате, выбирая между iBGP и eBGP в unerlay, нет точного решения что использовать. Однако, я в своих проектах придерживаюсь логики:

  1. iBGP, если в underlay работает протокол IGP

  2. eBGP, если в underlay работает eBGP.

И тут наверняка могут возникнуть споры по поводу больших сетей и, что протоколы IGP не смогут обеспечить необходимую скорость сходимости сети. Тут отвечу просто - сегментируйте сеть. Используйте Multisite и делайте независимые поды.

И, конечно же, не используйте Overlay. Используйте только маршрутизацию.

Данная статья написана специально для курса "Дизайн сетей ЦОД". В преддверии старта курса приглашаем всех желающих на бесплатный демоурок в рамках которого мы рассмотрим плюсы и минусы реализации iBGP. Преимущества перед eBGP.

Теги:
Хабы:
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS