ВКСЛАН (Virtual eXtensible Local Area Network
, виртуальная расширяемая локальная сеть) — это виртуализированная технология туннельной связи. Это технология Overlay (оверлейная сеть), которая строит виртуальную двухуровневую сеть через трехуровневую сеть.
просто говоря,VXLAN
Он использует технологию туннелирования в базовой физической сети (подложке) с помощьюUDP
Логическая сеть наложения, созданная уровнем, отделяет логическую сеть от физической сети и реализует гибкие сетевые требования. Это почти не влияет на исходную сетевую архитектуру, и новый уровень сети можно настроить без внесения каких-либо изменений в исходную сеть. Именно из-за этой особенности многие CNI-плагины (контейнерные сетевые интерфейсы в кластерах Kubernetes, это должен знать каждый, если вы не знаете, теперь знаете) выберутVXLAN
как коммуникационная сеть.
VXLAN
Поддерживает не только один к одному, но и один ко многим, одинVXLAN
Устройство может узнать IP-адреса других одноранговых узлов с помощью метода обучения, такого как мост, а также может напрямую настроить статическую таблицу переадресации.
Типичная топология сети VXLAN центра обработки данных показана на рисунке:
где VM относится к виртуальной машине,Hypervisor
Относится к диспетчеру виртуализации.
1. Зачем вам VXLAN?
По сравнению с VLAN,VXLAN
Это, очевидно, намного сложнее, и в сочетании с преимуществом первопроходца VLAN, которые уже широко поддерживаются, более тогоVXLAN
Что делаешь?
Ограничение на количество идентификаторов VLAN
Тег VLAN имеет в общей сложности 4 байта, включая12 bit
Используется для идентификации различных сетей уровня 2 (т.е.LAN ID
), поэтому он может поддерживать только до $2^{12}$, т.е.4096
разделение подсетей. С развитием виртуализации (виртуальные машины и контейнеры) тысячи машин в центре обработки данных нуждаются в обмене данными, и в настоящее время виртуальные локальные сети не могут удовлетворить этот спрос. Заголовок пакета VXLAN зарезервирован24 bit
для идентификации различных сетей уровня 2 (т.е.VNI
, Идентификатор сети VXLAN), который составляет 3 байта и может поддерживать подсети $2^{24}$.
Ограничения таблицы MAC-адресов коммутатора
Для связи между хостами в одном сегменте сети пакет будет запрашиваться после того, как коммутатор достигнет конца.MAC
Таблица адресов выполняет пересылку уровня 2. После виртуализации центра обработки данных количество ВМ увеличивается на порядки по сравнению с исходными физическими машинами, а после контейнеризации приложений количество контейнеров также увеличивается на порядки по сравнению с ВМ. . . Память коммутатора ограничена, поэтому таблица MAC-адресов также ограничена.При беспрецедентном увеличении количества MAC-адресов сетевой карты виртуальной машины (или контейнера) коммутатор находится под большим давлением!
И VXLAN великолепен, он используетVTEP
(поясняется позже) Кадры Ethernet уровня 2 инкапсулируются вUDP
средний, одинVTEP
Может совместно использоваться всеми виртуальными машинами (или контейнерами) на физической машине, одна физическая машина соответствует однойVTEP
. С точки зрения коммутатора, это просто другоеVTEP
проходя междуUDP
Данные, просто нужно записать записи таблицы MAC-адресов, эквивалентные количеству физических машин, и все вернется к тому же, что и раньше.
Объем миграции виртуальной машины или контейнера ограничен.
VLAN интегрирован с физической сетью, а оверлейной сети нет, проблема в том, что виртуальная сеть не может преодолеть ограничения физической сети. Например,если вы хотитеVLAN 100
Развертывание виртуальных машин (или контейнеров), которые могут поддерживаться толькоVLAN 100
развертывание на физических устройствах.
На самом деле, у VLAN тоже есть решение, то есть все коммутаторыTrunk
Проблема, связанная с созданием большого второго уровня, заключается в том, что широковещательный домен чрезмерно расширяется, а также включает в себя больше неизвестных одноадресных и многоадресных передач, то естьBUM
(Broadcast, Unknown Unicast, Multicast), да и таблица МАС-адресов коммутатора тоже будет иметь невыносимые проблемы.
VXLAN, с другой стороны, инкапсулирует кадры Ethernet уровня 2 вUDP
Средний (упомянутый выше), что эквивалентно построению двухслойной сети на трехслойной сети. Таким образом, независимо от того, относится ли ваша физическая сеть к уровню 2 или 3, это не повлияет на сетевое взаимодействие виртуальных машин (или контейнеров), и не имеет значения, на каком физическом устройстве развернуто, вы можете мигрировать по своему усмотрению.
В целом традиционные сети уровня 2 и уровня 3 не в состоянии справиться с этими требованиями.Хотя многие усовершенствованные технологии, такие как стекирование, SVF, TRILL и т. д., могут расширить возможности уровня 2 и стремиться улучшить классическую сеть, это необходимо. сделать Очень трудно внести изменения в сеть как можно меньше, сохраняя при этом гибкость. Для решения этих проблем было предложено множество решений,Overlay
является одним из них, иVXLAN
даOverlay
типовое техническое решение. Прямо внизуOverlay
Сделайте краткое введение.
2. Что такое наложение?
Overlay
В области сетевых технологий это относится к модели технологии виртуализации, наложенной на сетевую архитектуру, в которой доминирует базовая сетевая технология на основе IP.
IETF вOverlay
техническая областьVXLAN
,NVGRE
,STT
Три технических решения. Общая идея заключается в том, чтобы нести пакеты Ethernet на определенный туннельный уровень, разница заключается в выборе и построении туннелей, а нижний уровень — это IP-пересылка.VXLAN
а такжеSTT
Для существующего сетевого оборудования требования к балансировке трафика низкие, т. е. распределение нагрузки канала нагрузки имеет хорошую адаптируемость, а общее сетевое оборудование можетL2-L4
параметры содержания данных для агрегации каналов или балансировки трафика равноценной маршрутизации, в то время какNVGRE
требуется сетевое оборудование дляGRE
расширенное восприятие головы иflow ID
выполнить ХЭШ,Требуется обновление оборудования;STT
заTCP
Существуют серьезные модификации, режим туннеля близок к природе UDP, технология строительства туннеля является инновационной, а сложность высока, в то время какVXLAN
Использует существующую общую передачу UDP, и зрелость чрезвычайно высока.
Общее сравнение,VLXAN
технология имеет большие преимущества, и нынешняяVLXAN
Он также был поддержан большим количеством производителей и клиентов и сталOverlay
Основной стандарт техники.
3. Принцип протокола VXLAN
Существует несколько общих терминов для VXLAN:
-
VTEP(конечные точки туннеля VXLAN, конечные точки туннеля VXLAN)
Пограничное устройство сети VXLAN используется для обработки (инкапсуляции и декапсуляции) пакетов VXLAN. VTEP может быть сетевым устройством (например, коммутатором) или машиной (например, хостом в виртуализированном кластере).
-
VNI(идентификатор сети VXLAN, идентификатор сети VXLAN)
VNI
идентификатор каждого сегмента VXLAN, 24-битное целое число, всего $2^{24} = 16777216$ (более десяти миллионов), обычно каждыйVNI
Соответствует арендатору, то есть используетVXLAN
Построенное общедоступное облако теоретически может поддерживать десятки миллионов арендаторов. -
Tunnel(туннель VXLAN)
Туннель — это логическое понятие, и в модели VXLAN нет конкретного физического объекта. Туннель можно рассматривать как своего рода виртуальный канал.Обе стороны связи VXLAN думают, что они общаются напрямую и не знают о существовании базовой сети. В целом каждая сеть VXLAN действует как отдельный коммуникационный канал или туннель для связи виртуальных машин.
На фото вышеVXLAN
Он создается в исходной IP-сети (уровень 3) и может быть развернут до тех пор, пока сеть доступна для уровня 3 (которые могут взаимодействовать друг с другом через IP).VXLAN
. В каждой конечной точке сети VXLAN имеетсяVTEP
Устройство отвечает за распаковку и инкапсуляцию пакетов протокола VXLAN, то есть инкапсуляцию на виртуальных пакетахVTEP
Заголовок сообщения связи.
В физической сети можно создать несколькоVXLAN
сети, это могут бытьVXLAN
Сеть рассматривается как туннель, и виртуальные машины/контейнеры на разных узлах могут напрямую подключаться через туннель. пройти черезVNI
Идентифицирует разные сети VXLAN, чтобы их можно было изолировать друг от друга.
Структура пакета VXLAN показана на следующем рисунке:
-
VXLAN Header: добавить перед исходным кадром слоя 2
8
байт заголовка VXLAN, самые важные из которыхVNID
, занимать3
байт (то есть 24 бита), аналогично идентификатору VLAN, может иметь сегменты сети $2^{24}$. -
UDP Header: используется перед VXLAN и необработанными кадрами L2
8
байтUDP
Заголовок инкапсулирован (MAC IN UDP), номер порта назначения по умолчанию равен 4789, а исходный порт назначается случайным образом в соответствии с потоком (операция хеширования выполняется по MAC-адресу, IP-адресу и четырехуровневому номеру порта). что можно сделать лучше.ECMP
.IANA
(Управление по присвоению номеров в Интернете) присвоено4789
В качестве номера порта назначения по умолчанию для VXLAN.
После инкапсуляции уровня 2, добавленной выше, добавьте заголовок IP базовой сети (20
байты) и заголовок MAC (14
байт),Здесь IP и MAC — это IP-адрес и MAC-адрес хоста..
В то же время здесь следует отметитьMTU
Проблема традиционного сетевого MTU, как правило,1500
, вот дополнительный пакет VXLAN (36+14/18, для14
дело в томaccess
рот, опущен4
байт тега VLAN)50
или54
байт, MTU необходимо настроить на1550
или1554
, чтобы предотвратить частые субподряды.
Flood and Learn для VXLAN
В общем случае процесс пересылки пакетов VXLAN выглядит следующим образом:VTEP
, добавленный ядром LinuxVXLAN
головка и внешнийUDP
Заголовок, а затем отправить егоVTEP
Удалите внешний уровень после получения пакетов VXLANUDP
заголовок, а по заголовку VXLANVNI
Отправьте исходное сообщение на целевой сервер. Но вот вопрос, откуда обе стороны знают всю коммуникационную информацию до первого общения? Эта информация включает:
- который
VTEP
Нужно добавить в ту же группу VNI? - Как отправитель узнает о другой стороне
MAC
адрес? - Как узнать, на каком узле находится целевой сервер (т. е. адрес целевого VTEP)?
Первая проблема проста, VTEP обычно настраивается сетевым администратором. Чтобы ответить на последние два вопроса, мы должны вернуться к сообщению протокола VXLAN и посмотреть, какая информация требуется для полного сообщения VXLAN:
-
внутреннее сообщение: IP-адреса обеих сторон в связи были уточнены, и только VXLAN необходимо заполнить IP-адресом другой стороны.
MAC
адрес, поэтому необходим механизм для реализацииARP
Функции. -
Заголовок VXLAN: просто нужно знать
VNI
. Как правило, он настраивается непосредственно на VTEP, либо планируется заранее, либо генерируется автоматически на основе внутренних пакетов. -
UDP-заголовок: необходимо знать порт источника и порт назначения, порт источника автоматически создается системой, а порт назначения по умолчанию
4789
. -
IP-заголовок: Нужно знать ровесника
VTEP
IP-адрес,Это самая важная часть.По факту,
VTEP
Он также будет иметь свою собственную таблицу переадресации.Таблица переадресации поддерживается механизмом лавинной рассылки и обучения.Для неизвестного одноадресного и широковещательного трафика, MAC-адрес назначения которого отсутствует в таблице переадресации, он будет рассылаться всем VTEP, кроме исходного VTEP. После того, как VTEP-получатель ответит на пакет, VTEP-источник узнает из пакетаMAC
,VNI
а такжеVTEP
Отношение отображения добавляется в таблицу пересылки.Когда другой пакет данных пересылается на этот MAC-адрес, VTEP напрямую получает целевой VTEP-адрес из таблицы пересылки, тем самым отправляя одноадресные данные целевому VTEP.Изучение таблицы переадресации VTEP можно выполнить следующими двумя способами:
- многоадресная рассылка
- Внешние центры управления (плагины CNI, такие как Flannel, Cilium и т. д.)
-
заголовок MAC: подтвержденный
VTEP
IP-адрес легко обработать позже, MAC-адрес можно передать через классическийARP
способ получения.
4. VXLAN для Linux
Linux
Поддержка протокола VXLAN не очень долгая,2012
Соответствующая работа была объединена в ядро Стивеном Хеммингером и в конечном итоге появилась вkernel 3.7.0
Версия. Для стабильности и многих функций вы можете увидеть некоторое программное обеспечение, рекомендованное в3.9.0
или3.10.0
VXLAN используется в более поздних версиях ядра.
прибытьkernel 3.12
Версия Linux имеет полную поддержку VXLAN, поддержку одноадресной и многоадресной рассылки, IPv4 и IPv6. использоватьman
просмотреть IP-адресаlink
Подкомандой можно проверить, есть ли тип VXLAN:
$ man ip-link
Найдите VXLAN, и вы увидите следующее описание:
Управление интерфейсами VXLAN
Базовое управление интерфейсами Linux VXLAN выглядит следующим образом:
-
Создайте двухточечный интерфейс VXLAN:
$ ip link add vxlan0 type vxlan id 4100 remote 192.168.1.101 local 192.168.1.100 dstport 4789 dev eth0
в
id
для ВНИ,remote
это IP удаленного хоста,local
для вашего локального IP-адреса,dev
Представляет интерфейс, с которого передаются данные VXLAN.В ВКСЛАН,Интерфейс VXLAN (в данном примере vxlan0) обычно называют VTEP..
-
Создайте интерфейс VXLAN в многоадресном режиме:
$ ip link add vxlan0 type vxlan id 4100 group 224.1.1.1 dstport 4789 dev eth0
Многоадресные группы в основном проходят через
ARP
наводнение, чтобы узнатьMAC
адрес, т.е. широковещательный в пределах подсети VXLANARP
запрос, а затем соответствующий узел отвечает.group
Указывает адрес многоадресной группы. -
Просмотр сведений об интерфейсе VXLAN:
$ ip -d link show vxlan0
FDB-таблица
FDB
(запись базы данных переадресации, таблица переадресации) — это таблица переадресации уровня 2, поддерживаемая мостом Linux, которая используется для хранения MAC-адреса удаленной виртуальной машины/контейнера, удаленного IP-адреса VTEP и отношения сопоставления VNI. .bridge fdb
приказатьFDB
Таблица для работы:
-
Добавлена запись:
$ bridge fdb add <remote_host_mac> dev <vxlan_interface> dst <remote_host_ip>
-
запись удалена:
$ bridge fdb del <remote_host_mac> dev <vxlan_interface>
-
Обновление статьи:
$ bridge fdb replace <remote_host_mac> dev <vxlan_interface> dst <remote_host_ip>
-
Запрос товара:
$ bridge fdb show
5. Резюме
Эта статья дает вам предварительное представление о VXLAN, представляя предысторию эпохи VXLAN, концепцию и сетевую модель VXLAN, а также структуру пакетов VXLAN; вводя лавинную рассылку и изучение таблицы переадресации VXLAN, вы узнаете, как две взаимодействующие стороны воспринимают другую сторону; наконец, представлена базовая конфигурация VXLAN в Linux, чтобы вы могли больше узнать о том, как играть в VXLAN в Linux. В следующей статье будет рассказано, как построить на основе VXLANOverlay
Network, кстати, чтобы объяснить, как работают многоадресные и внешние центры управления, упомянутые выше.
6. Ссылки
Публичный аккаунт WeChat
Отсканируйте QR-код ниже, чтобы подписаться на официальную учетную запись WeChat, и ответьте на официальную учетную запись ◉Добавить группу◉, чтобы присоединиться к нашей облачной коммуникационной группе и обсудить облачные технологии с Сунь Хунляном, директором Чжаном, Ян Мином и другими важными шишками.