Открыть сервисСервис

Протокол GENEVE

Протокол GENEVE (Generic Network Virtualization Encapsulation) — это сетевой протокол инкапсуляции, предназначенный для создания виртуальных сетей поверх существующих физических сетей (оверлейных сетей). Он обеспечивает стандартизированный способ упаковки кадров сетевого уровня (L2/L3) в пакеты транспортного протокола (обычно UDP) для передачи через IP-сеть, позволяя строить изолированные виртуальные сети с произвольной топологией.

История и предпосылки создания

Протокол GENEVE был разработан в рамках рабочей группы NVO3 (Network Virtualization Overlays) организации IETF (Internet Engineering Task Force). Его создание было обусловлено необходимостью преодоления ограничений более ранних протоколов инкапсуляции, таких как VXLAN (Virtual Extensible LAN) и NVGRE (Network Virtualization using Generic Routing Encapsulation). Основные недостатки предшественников включали фиксированную структуру заголовка, что затрудняло добавление новых метаданных (например, для телеметрии, безопасности или политик), а также негибкость в выборе транспортного протокола.

Первая версия спецификации GENEVE была предложена в 2014 году. В 2020 году протокол был стандартизирован в документе RFC 8926 «Geneve: Generic Network Virtualization Encapsulation». Разработка велась с участием таких компаний, как VMware, Microsoft, Intel, Cisco и Red Hat.

Принцип работы

GENEVE работает по принципу инкапсуляции. Исходный кадр (например, Ethernet-кадр) помещается в полезную нагрузку нового пакета, который затем передаётся через транспортную сеть. Ключевые элементы протокола:

  1. Инкапсуляция: Исходный кадр (L2 или L3) упаковывается в UDP-пакет. UDP-порт назначения по умолчанию — 6081.
  2. Идентификатор виртуальной сети (VNI): Каждый пакет содержит 24-битный идентификатор VNI (Virtual Network Identifier), который позволяет различать до 16 миллионов изолированных виртуальных сетей в одном физическом канале.
  3. Гибкие опции (TLV): Главное отличие GENEVE от VXLANподдержка переменного набора опций (Type-Length-Value). Через опции можно передавать дополнительные метаданные, например:
  • Информацию о безопасности (контекст безопасности, токены).
  • Данные телеметрии (задержки, потери пакетов).
  • Политики доступа (например, метки для микросегментации).
  • Информацию о протоколах (например, для поддержки MPLS-over-GENEVE).
  1. Транспорт: Пакеты GENEVE передаются через стандартные IP-сети (IPv4 или IPv6) с использованием UDP. Это позволяет использовать существующую инфраструктуру маршрутизаторов и коммутаторов без специальной настройки (кроме поддержки UDP-порта 6081).

Структура заголовка

Заголовок GENEVE состоит из нескольких частей:

  • Base Header (фиксированная часть, 8 байт):
  • Версия (2 бита) — всегда 0.
  • Флаги (6 бит) — управляющие биты, включая флаг O (опции присутствуют).
  • Длина опций (8 бит) — длина поля опций в 4-байтовых словах.
  • Идентификатор виртуальной сети (VNI, 24 бита) — номер виртуальной сети.
  • Резерв (8 бит) — зарезервировано для будущего использования.
  • Опции (переменная длина): Набор TLV-блоков, каждый из которых содержит:
  • Класс (16 бит) — определяет тип опции (например, стандартный IETF или вендорский).
  • Тип (8 бит) — уточняет тип опции в рамках класса.
  • Длина (8 бит) — длина данных опции.
  • Данные (переменная длина) — значение опции.

Применение

Протокол GENEVE используется в основном в программно-определяемых сетях (SDN) и виртуализации сетевой инфраструктуры (NFV). Основные области применения:

  • Виртуализация сетей (Network Virtualization): Создание изолированных виртуальных сетей (VPC) для арендаторов облачных платформ (например, OpenStack, VMware NSX). GENEVE позволяет гибко настраивать политики безопасности и маршрутизации для каждой виртуальной сети.
  • Микросегментация: Использование опций GENEVE для передачи меток безопасности (например, контекст безопасности SELinux) позволяет реализовать политики «нулевого доверия» (Zero Trust) на уровне отдельных виртуальных машин или контейнеров.
  • Телеметрия и мониторинг: Опции GENEVE могут нести данные о состоянии сети (например, задержки, потери) для систем управления и аналитики.
  • Интеграция с контейнерами: GENEVE поддерживается в решениях для оркестрации контейнеров (например, в CNI-плагинах для Kubernetes, таких как Calico или Cilium) для создания оверлейных сетей между узлами кластера.

Преимущества и недостатки

Преимущества

  • Гибкость: Возможность добавлять произвольные метаданные через опции TLV, что позволяет адаптировать протокол под конкретные задачи без изменения базовой спецификации.
  • Стандартизация: RFC 8926 обеспечивает совместимость между различными вендорами и платформами.
  • Масштабируемость: Поддержка до 16 миллионов виртуальных сетей.
  • Совместимость: Работает поверх стандартных IP-сетей и не требует модификации существующего аппаратного обеспечения (кроме поддержки UDP-порта).

Недостатки

  • Накладные расходы: Заголовок GENEVE (минимум 8 байт + UDP-заголовок 8 байт + IP-заголовок 20 байт) может быть больше, чем у VXLAN (8 байт + 8 байт + 20 байт), особенно при использовании большого количества опций.
  • Сложность реализации: Поддержка переменных опций требует более сложной обработки на коммутаторах и сетевых адаптерах, что может увеличить задержки.
  • Необходимость поддержки: Для использования GENEVE требуется, чтобы все участники сети (виртуальные коммутаторы, гипервизоры, физические коммутаторы) поддерживали этот протокол.

Сравнение с другими протоколами

ХарактеристикаVXLANNVGREGENEVE
ТранспортUDP (порт 4789)GRE (IP-протокол 47)UDP (порт 6081)
Идентификатор сети24 бита (VNI)24 бита (VSID)24 бита (VNI)
ОпцииФиксированный заголовокФиксированный заголовокПеременные TLV-опции
ГибкостьНизкаяНизкаяВысокая
СтандартизацияRFC 7348RFC 7637RFC 8926
Основное применениеВиртуализация сетей в дата-центрахВиртуализация сетей (Microsoft Hyper-V)SDN, микросегментация, телеметрия

Интересные факты

  • Название GENEVE является отсылкой к Женеве (Швейцария), где проходили ключевые заседания рабочей группы NVO3.
  • Протокол GENEVE поддерживает не только инкапсуляцию Ethernet-кадров, но и кадров других протоколов, например, MPLS (Multiprotocol Label Switching).
  • В отличие от VXLAN, который использует фиксированный UDP-порт, GENEVE использует порт 6081, зарезервированный IANA специально для этого протокола.

Источники

  1. RFC 8926 — «Geneve: Generic Network Virtualization Encapsulation» (IETF, 2020).
  2. «Network Virtualization Overlays (NVO3)» — рабочая группа IETF.
  3. «GENEVE: A New Protocol for Network Virtualization» — техническая документация VMware.
  4. «OpenStack Networking Guide: GENEVE» — документация OpenStack.
  5. «Cilium: GENEVE Encapsulation» — документация проекта Cilium.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru