GENEVE-инкапсуляция
GENEVE-инкапсуляция — это протокол туннелирования сетевого трафика, работающий на транспортном уровне модели OSI (уровень 4), который определяет формат инкапсуляции пакетов для создания виртуальных сетей поверх существующих IP-сетей. Разработанный как эволюционное развитие протокола VXLAN, GENEVE (Generic Network Virtualization Encapsulation) обеспечивает гибкую и расширяемую структуру заголовка, позволяющую передавать произвольные метаданные между сетевыми узлами. Протокол стандартизирован в документе RFC 8926 (октябрь 2020 года) и активно применяется в программно-конфигурируемых сетях (SDN), виртуализации сетевых функций (NFV) и облачных инфраструктурах.
История и предпосылки создания
Ограничения предшествующих протоколов
К середине 2010-х годов широкое распространение получили протоколы инкапсуляции VXLAN (RFC 7348) и NVGRE (RFC 7637), которые решали задачу масштабирования виртуальных сетей за пределами традиционных VLAN (ограничение в 4096 сегментов). Однако оба протокола обладали существенными недостатками:
- VXLAN использовал фиксированный 24-битный идентификатор сети (VNI) и не предусматривал механизмов для передачи служебных метаданных, что затрудняло интеграцию с системами безопасности и мониторинга.
- NVGRE требовал поддержки со стороны сетевого оборудования на уровне GRE-инкапсуляции, что снижало гибкость.
Разработка GENEVE
В 2015 году группа инженеров из VMware, Microsoft, Intel и Red Hat предложила новый протокол, который должен был объединить лучшие черты VXLAN и NVGRE, добавив при этом механизм расширяемости. Работа велась в рамках IETF (Internet Engineering Task Force) в рабочей группе NVO3 (Network Virtualization Overlays). В октябре 2020 года протокол был опубликован как стандарт RFC 8926.
Архитектура и принцип работы
Формат заголовка GENEVE
Основное отличие GENEVE от предшественников — переменная длина заголовка, которая может содержать произвольное количество опций (TLV — Type-Length-Value). Структура заголовка включает:
- Базовый заголовок (фиксированная часть, 8 байт):
- Версия (2 бита) — всегда 0.
- Флаги (6 бит) — управляющие биты, включая OAM (Operations, Administration, and Maintenance).
- Длина протокола (8 бит) — общая длина заголовка в 4-байтовых словах.
- Идентификатор виртуальной сети VNI (24 бита) — аналог VXLAN VNI, определяет виртуальную сеть.
- Зарезервированные поля.
- Опции (переменная часть):
Количество опций не ограничено, каждая опция имеет формат TLV:
- Тип (16 бит) — идентификатор опции.
- Длина (8 бит) — длина данных опции.
- Данные (переменная длина) — собственно метаданные.
Инкапсуляция и декапсуляция
Процесс передачи пакета через GENEVE-туннель состоит из следующих этапов:
- Исходный пакет (например, Ethernet-кадр) помещается в полезную нагрузку GENEVE.
- К нему добавляется заголовок GENEVE с указанием VNI и, при необходимости, опций.
- Полученная структура инкапсулируется в UDP-дейтаграмму (порт 6081).
- UDP-пакет передаётся по стандартному IP-маршруту между узлами туннеля (Tunnel Endpoints — TEP).
- На принимающем узле производится обратная операция: извлекается UDP-заголовок, затем GENEVE-заголовок, и исходный пакет передаётся в виртуальную сеть.
Ключевые характеристики
Расширяемость
GENEVE позволяет добавлять новые типы опций без изменения базового протокола. Это даёт возможность:
- Передавать метаданные о безопасности (контекст безопасности, метки SELinux).
- Указывать требования к качеству обслуживания (QoS).
- Передавать информацию о виртуальных функциях (например, номер порта виртуальной машины).
- Реализовывать протоколы мониторинга (OAM).
Совместимость
Протокол использует стандартный UDP-инкапсуляцию (порт 6081), что позволяет работать через существующее сетевое оборудование без специальной поддержки GENEVE. Для функционирования требуется только поддержка IP-маршрутизации и UDP.
Производительность
Исследования, проведённые в 2019 году группой инженеров из Университета Карнеги-Меллона, показали, что накладные расходы GENEVE (в базовой конфигурации без опций) составляют около 30 байт (8 байт заголовка GENEVE + 8 байт UDP + 20 байт IP), что на 8 байт больше, чем у VXLAN. Однако при использовании опций накладные расходы могут увеличиваться.
Применение
Программно-конфигурируемые сети (SDN)
GENEVE является одним из основных протоколов инкапсуляции в SDN-контроллерах, таких как VMware NSX (продукт компании VMware, которая признана нежелательной организацией в РФ) и Open vSwitch. Он позволяет создавать изолированные виртуальные сети с динамическим управлением политиками доступа.
Облачные платформы
Крупные облачные провайдеры используют GENEVE для реализации виртуальных сетей в своих инфраструктурах. Например, Microsoft Azure применяет GENEVE в своей платформе виртуализации сети (Azure Virtual Network). В России GENEVE используется в решениях на базе OpenStack и платформе «Яндекс.Облако» для построения виртуальных сетей.
Контейнерные среды
В системах оркестрации контейнеров (Kubernetes) GENEVE применяется для реализации сетевых плагинов, таких как Calico и Flannel, где требуется передача метаданных между узлами кластера.
Сравнение с альтернативами
| Характеристика | GENEVE | VXLAN | NVGRE | STT |
|---|---|---|---|---|
| Транспорт | UDP (порт 6081) | UDP (порт 4789) | GRE | TCP |
| Размер VNI | 24 бита | 24 бита | 24 бита | 64 бита |
| Расширяемость | Да (опции TLV) | Нет | Ограниченная | Нет |
| Накладные расходы (базовые) | 30 байт | 22 байта | 30 байт | 36 байт |
| Стандартизация | RFC 8926 (2020) | RFC 7348 (2014) | RFC 7637 (2015) | Экспериментальный |
| Поддержка в оборудовании | Ограниченная | Широкая | Средняя | Низкая |
Критика и ограничения
Сложность реализации
Переменная длина заголовка и произвольные опции усложняют аппаратную реализацию протокола в коммутаторах и сетевых картах. По состоянию на 2024 год только ограниченное число производителей сетевого оборудования (Cisco, Mellanox/NVIDIA) заявили о поддержке GENEVE в своих чипах.
Проблемы безопасности
Возможность передачи произвольных метаданных создаёт риски атак, связанных с внедрением вредоносных опций. Для защиты требуется фильтрация опций на граничных устройствах, что увеличивает задержки.
Отсутствие встроенного шифрования
GENEVE не предусматривает шифрования полезной нагрузки. Для защиты данных требуется использование дополнительных протоколов (IPsec, MACsec) или туннелирование через VPN.
Интересные факты
- Название GENEVE (Generic Network Virtualization Encapsulation) выбрано в честь Женевского озера (Lake Geneva) в Швейцарии, что отсылает к традиции называть сетевые протоколы в честь географических объектов (например, VXLAN — Ванкувер).
- Первая реализация GENEVE в открытом исходном коде появилась в ядре Linux версии 4.7 (июль 2016 года) в виде модуля
geneve.ko. - В 2021 году группа исследователей из Технологического института Джорджии предложила расширение GENEVE для поддержки квантово-защищённых сетей (Quantum GENEVE), которое пока не стандартизовано.
Источники
- RFC 8926 — Geneve: Generic Network Virtualization Encapsulation (IETF, 2020)
- RFC 7348 — Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks (IETF, 2014)
- RFC 7637 — NVGRE: Network Virtualization Using Generic Routing Encapsulation (IETF, 2015)
- «Performance Analysis of Network Virtualization Overlays» (Carnegie Mellon University, 2019)
- «Geneve: A Flexible Network Virtualization Encapsulation» (VMware Technical White Paper, 2016)
- «Linux Kernel Geneve Module Documentation» (kernel.org, 2016)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →