Найти в Дзене
Кадр за кадром

Введение в VXLAN

Эта статья является переводом, как и все последующие на данную тематику. Автор оригинала Daniels Networking Blog В предыдущей статье мы рассмотрели некоторые проблемы, связанные с сетями на базе уровня 2 (L2). Теперь давайте углубимся в то, что такое VXLAN и какие возможности он предоставляет. Для начала поговорим о технологии оверлеев . Оверлеи — это не новая концепция. Мы используем их уже много лет. Наиболее известные примеры — это GRE и MPLS . В общем смысле оверлеи используются для создания уровня абстракции, который расширяет возможности сети. Например, MPLS L3 VPN предоставил следующие функции для IP-сетей: В случае использования оверлеев, интеллектуальные функции часто переносятся на границы сети (например, на маршрутизаторы или коммутаторы), в то время как промежуточные устройства могут быть "глупыми". Это позволяет снизить затраты, так как не все устройства должны обладать продвинутыми возможностями. Как работает оверлей? Для создания абстракции исходный фрейм или пакет долже
Оглавление

Эта статья является переводом, как и все последующие на данную тематику. Автор оригинала Daniels Networking Blog

В предыдущей статье мы рассмотрели некоторые проблемы, связанные с сетями на базе уровня 2 (L2). Теперь давайте углубимся в то, что такое VXLAN и какие возможности он предоставляет. Для начала поговорим о технологии оверлеев .

Overlays

Оверлеи — это не новая концепция. Мы используем их уже много лет. Наиболее известные примеры — это GRE и MPLS . В общем смысле оверлеи используются для создания уровня абстракции, который расширяет возможности сети. Например, MPLS L3 VPN предоставил следующие функции для IP-сетей:

  • Сегментацию .
  • Перекрытие IP-адресов .
  • Пользовательские топологии .
  • Масштабируемость .
  • Многопутевое подключение (Multihoming) .

В случае использования оверлеев, интеллектуальные функции часто переносятся на границы сети (например, на маршрутизаторы или коммутаторы), в то время как промежуточные устройства могут быть "глупыми". Это позволяет снизить затраты, так как не все устройства должны обладать продвинутыми возможностями. Как работает оверлей? Для создания абстракции исходный фрейм или пакет должен быть инкапсулирован . В зависимости от типа оверлея фрейм или пакет может быть помещен внутрь другого фрейма или пакета. Сеть, которая передает данные между узлами оверлея, называется underlay. Для VXLAN андерлей представляет собой сеть уровня 3.

Увеличение размера фреймов

Поскольку оверлеи инкапсулируют фреймы или пакеты, их размер увеличивается. Чтобы компенсировать это, MTU сети часто увеличивают с стандартных 1500 байт до большего значения, например, 1550 байт , или даже используют джамбо-фреймы , где MTU может достигать 9000 байт и более. Однако стоит отметить, что джамбо-фреймы обычно недоступны в интернете.

Определение расположения хостов

Для работы оверлея необходимо знать, какие хосты находятся за какими устройствами оверлея. Существуют различные механизмы для этого:

  • Flood and Learn (Заливка и обучение).
  • Централизованный контроллер, например, APIC в ACI .
  • EVPN (Ethernet Virtual Private Network).

Flood and Learn — это традиционный механизм, используемый в сетях уровня 2, где коммутаторы изучают MAC-адреса на основе входящих фреймов. Напомним, что нет протокола для обмена MAC-адресами между коммутаторами. Соседства между устройствами также не формируются. В программно-определяемых сетях (SDN) используется контроллер, такой как APIC в ACI или vSmart для Catalyst SD-WAN , чтобы предоставлять информацию о хостах/сетях устройствам в сети. EVPN — это протокол на базе BGP, который может использоваться для предоставления информации о хостах/сетях и их местоположении.

Работа оверлея

Оверлей, используя эту информацию, добавляет соответствующий заголовок для отправки фрейма/пакета на целевое устройство и, в конечном итоге, к целевому хосту. Хост обычно принадлежит определенному арендатору(tenant), будь то VLAN, VRF или другой тип аренды. Оверлей должен учитывать это и заполнять соответствующие поля с учетом аренды.

Хотел бы добавить от себя и объяснить на примере, что tenant, это может быть дочерняя организация или вообще любая организация (сеть) связанная с вашей инфраструктурой, которая будет с вами взаимодействовать.

Кроме одноадресного трафика (unicast ), оверлей также должен поддерживать многоадресный трафик (multicast). Этот трафик часто называют BUM : Broadcast (широковещание), Unknown Unicast (неизвестный одноадресный трафик) и Multicast (многоадресная рассылка). Существует два основных метода обработки BUM-трафика:

  • IP multicast .
  • Ingress replication (также называемый head-end replication или unicast mode).

Хотя мы обычно ассоциируем оверлеи с сетевыми устройствами, существуют также хосты, которые могут работать с VXLAN . Кроме того, платформы виртуализации, такие как NSX-T , могут быть частью оверлея. На приведенной ниже диаграмме показана концепция underlay:

Концепция андерлея
Концепция андерлея

На диаграмме ниже показана концепция наложения VXLAN:

Концепция VXLAN-оверлея
Концепция VXLAN-оверлея

Узлы на границах сети называются VXLAN Tunnel Endpoints (VTEP) . Для идентификации конкретной службы в VXLAN используется VXLAN Network Identifier (VNI) .

Что такое VXLAN?

VXLAN — это протокол MAC-over-IP/UDP , который расширяет количество сетевых идентификаторов с 4096 (для VLAN) до 16 миллионов (для VXLAN). Устройства на границах сети имеют функционал VTEP , что означает, что они добавляют и удаляют заголовки VXLAN.

Прелесть VXLAN заключается в том, что он работает поверх сетей уровня 3 (L3 ), при этом предоставляя услуги уровня 2 (L2 ). Это означает, что андерлей может быть простой L3-сетью, которая не полагается на STP для предотвращения петель. Это также означает, что можно использовать ECMP (Equal-Cost Multi-Path) для предоставления множества путей, распределения нагрузки и лучшего использования доступных каналов.

Как упоминалось ранее, оверлеи добавляют заголовки к исходным фреймам/пакетам. VXLAN инкапсулирует фрейм в заголовок VXLAN/UDP , как показано ниже:

Процесс инкапсуляции VXLAN
Процесс инкапсуляции VXLAN

  1. Добавляется заголовок VXLAN , содержащий в основном VNI .
  2. Заголовок 802.1Q удаляется и отображается на VNI в заголовке VXLAN.
  3. Исходный CRC отбрасывается и вычисляется новый.
  4. Так как старый CRC отбрасывается, новый CRC не увеличивает накладные расходы.
  5. Добавляется заголовок UDP с портом назначения 4789 . Порт источника основывается на полях внутреннего заголовка.
  6. Добавление заголовка UDP обеспечивает энтропию для алгоритмов распределения нагрузки в андерлее.
  7. Внешний IP-заголовок устанавливается на IP-адрес источника VTEP и IP-адрес назначения VTEP .
  8. Внешний MAC состоит из MAC-адреса источника VTEP и MAC-адреса следующего прыжка для достижения VTEP назначения.
  9. VXLAN добавляет в общей сложности 50 байт overhead для IPv4-пакетов.
  10. Если в андерлее используется 802.1Q , добавьте еще 4 байта .
  11. Для IPv6 добавьте еще 20 байт из-за большего размера заголовка.

Андерлей и многоадресный трафик

Андерлей должен обеспечивать доставку как одноадресных, так и многоадресных пакетов. Андерлей строится с использованием протоколов маршрутизации, таких как OSPF или ISIS , хотя может использоваться любой протокол, например, BGP , для обеспечения IP-соединения. Для многоадресных пакетов, таких как BUM , можно использовать Protocol Independent Multicast (PIM) в андерлее. Различные режимы, такие как Any Source Multicast (ASM) , Source Specific Multicast (SSM) и Bidirectional PIM (BIDIR) , могут применяться. VXLAN VNI отображается на IP-многоадресную группу. Это делается через конфигурацию. VTEP присоединяется к многоадресному дереву, созданному через PIM , как и все остальные VTEP , которые являются частью того же VNI . IP-адрес назначения внешнего заголовка изменяется с IP-адреса VTEP назначения на IP-адрес многоадресной группы.

VXLAN Flood and Learn
VXLAN Flood and Learn

Поскольку VXLAN часто используется вместе с EVPN , стандартное поведение Flood and Learn часто остается в тени. Flood and Learn — это тот же тип обучения, который происходит в традиционной L2-сети.

(Изображение: Концепция Flood and Learn)

  1. H1 генерирует ARP-запрос и отправляет его на L1 .
  2. L1 узнает MAC-адрес H1 .
  3. L1 выполняет L2-поиск на основе MAC-адреса назначения и VNI и определяет, что это многоадресный фрейм.
  4. L1 добавляет заголовок VXLAN и отправляет пакет в многоадресную группу 239.0.0.1 .
  5. Пакет маршрутизируется в андерлее и передается на L2 .
  6. L2 декапсулирует пакет VXLAN, так как он является частью той же многоадресной группы и имеет одинаковый VNI .
  7. L2 узнает MAC-адрес H1 .
  8. L2 пересылает ARP-запрос (широковещательный фрейм) всем участникам VNI , включая H2 .
  9. H2 отправляет ARP-ответ на L2 .
  10. L2 узнает MAC-адрес H2 и выполняет L2-поиск для H1 .
  11. L2 добавляет заголовок VXLAN и отправляет пакет непосредственно на L1 (без многоадресной рассылки).
  12. L1 узнает MAC-адрес H2 .
  13. L1 пересылает ARP-ответ непосредственно на H1 (без широковещания).

С помощью процесса Flood and Learn многоадресный трафик (BUM — Broadcast, Unknown Unicast, Multicast) рассылается между VTEP через VXLAN , чтобы определить, какие MAC-адреса хостов находятся за какими VTEP .

Поскольку существует 16 миллионов VNIs , но гораздо меньше мультиадресных групп, несколько VNIs могут использовать одну и ту же мультиадресную группу. Создание взаимно однозначного соответствия (1:1 mapping ) между VNIs и мультиадресными группами потребовало бы значительных программных и аппаратных ресурсов. В андерлее было бы слишком много записей мультикаста. Большинство развертываний поддерживают только 512 или 1024 мультиадресные группы . Если уникальные мультиадресные группы не используются, VTEP может получать трафик для VNI , который не настроен локально. Хотя это приводит к избыточному использованию полосы пропускания, изоляция на сетевом уровне сохраняется, так как VTEP отбрасывает такие пакеты. Поиск выполняется на основе VNI и MAC-адреса.

Одной из альтернатив мультикасту является использование Ingress Replication (также называемого Head-End Replication ). При Ingress Replication каждый VTEP должен знать о других VTEP и их участии в VNIs . Исходный VTEP создает x копий пакета для каждого VTEP , участвующего в VNI . Это устраняет необходимость использования мультикаста в VNI , но генерирует дополнительный трафик по сравнению с мультикастом.

Заключение

Использование Flood and Learn в сети на базе VXLAN имеет некоторые недостатки традиционных сетей уровня 2. Именно здесь на помощь приходит EVPN .