Сетевая виртуализация: VXLAN, NFV и Overlay сети
Сетевая виртуализация — это технология, которая отделяет логическую сеть от физической инфраструктуры. Вместо того чтобы прокладывать кабели и настраивать VLAN на каждом коммутаторе, вы создаёте "overlay" поверх существующей IP-сети. Это позволяет строить гибкие, масштабируемые и изолированные сети для облачных провайдеров, дата-центров и крупных предприятий.
Почему VLAN недостаточно?
VLAN имеет ограничения, которые становятся критичными в больших средах:
- Ограничение в 4096 VLAN — для облачных провайдеров с тысячами клиентов этого катастрофически мало
- VLAN не работает через L3-сегменты — VLAN ограничена одним broadcast-доменом
- Требует настройки на каждом коммутаторе — при миграции виртуальных машин VLAN нужно переконфигурировать
- Сложность с multi-tenancy — изоляция арендаторов становится кошмаром
Решение — overlay-сети, которые инкапсулируют L2-кадры в IP-пакеты.
VXLAN — король оверлеев
VXLAN (Virtual Extensible LAN) — это протокол инкапсуляции, который помещает исходный Ethernet-кадр в UDP-пакет (порт 4789). VXLAN использует 24-битный идентификатор сети (VNI), что даёт 16 миллионов изолированных сетей.
Структура VXLAN-пакета
┌─────────────────────────────────────────────────────────┐ │ Outer Ethernet (MAC-адреса VTEP) │ ├─────────────────────────────────────────────────────────┤ │ Outer IP (IP-адреса VTEP) │ ├─────────────────────────────────────────────────────────┤ │ Outer UDP (src=random, dst=4789) │ ├─────────────────────────────────────────────────────────┤ │ VXLAN Header (24-bit VNI + флаги) │ ├─────────────────────────────────────────────────────────┤ │ Inner Ethernet Frame (оригинальный MAC + payload) │ └─────────────────────────────────────────────────────────┘
Ключевые компоненты VXLAN
- VTEP (VXLAN Tunnel Endpoint) — устройство, которое инкапсулирует/деинкапсулирует трафик. Может быть на коммутаторе, гипервизоре или программном свитче.
- VNI (VXLAN Network Identifier) — аналог VLAN ID, но 24-битный.
- Underlay — физическая IP-сеть, которая переносит VXLAN-пакеты (обычно с использованием ECMP для балансировки).
Как работает VXLAN в дата-центре
Представьте два сервера в разных стойках, соединённых через IP-сеть. На каждом сервере — гипервизор с VTEP. Виртуальная машина на Server A отправляет кадр для VM на Server B. Гипервизор узнаёт, что MAC-адрес назначения находится на удалённом VTEP (через распределённую базу). Он инкапсулирует кадр в VXLAN с VNI 5001 и отправляет по underlay. На Server B VTEP деинкапсулирует и доставляет кадр VM. VM даже не знает, что трафик шёл через туннель — для неё всё выглядит как локальная сеть.
Пример настройки VXLAN на Linux (команды iproute2)
# Создаём VXLAN-туннель на VTEP с IP 192.168.10.1 ip link add vxlan10 type vxlan id 10 remote 192.168.10.2 dstport 4789 dev eth0 ip addr add 10.0.0.1/24 dev vxlan10 ip link set vxlan10 up # На втором VTEP (192.168.10.2) ip link add vxlan10 type vxlan id 10 remote 192.168.10.1 dstport 4789 dev eth0 ip addr add 10.0.0.2/24 dev vxlan10 ip link set vxlan10 up
Другие протоколы оверлеев
NVGRE (Network Virtualization using Generic Routing Encapsulation)
Конкурент VXLAN от Microsoft. Использует GRE-инкапсуляцию вместо UDP. Поддерживается в Hyper-V и Azure. Недостаток — отсутствие балансировки через ECMP (GRE не всегда хэшируется).
Geneve (Generic Network Virtualization Encapsulation)
Более гибкий протокол, который позволяет добавлять произвольные метаданные (опции). Используется в Open vSwitch и проекте OpenStack. Порт 6081.
MPLS over UDP / GUE
Для провайдеров — инкапсуляция MPLS в UDP для транзита через IP-сети.
NFV — виртуализация сетевых функций
NFV (Network Functions Virtualization) — это замена физических устройств (роутеров, файрволов, балансировщиков) на виртуальные аналоги, работающие на стандартных серверах.
Примеры VNF (Virtual Network Functions):
- vRouter (VyOS, Cisco CSR1000v)
- vFirewall (pfSense, Fortinet VM, Check Point vSEC)
- vLoadBalancer (HAProxy, NGINX, F5 BIG-IP VE)
- vWAN-optimizer, vCPE (для провайдеров)
Преимущества NFV
- Гибкость — развернуть VNF можно за минуты, а не недели
- Масштабирование — горизонтальное (больше VM) и вертикальное (больше ресурсов)
- Экономия — стандартные серверы дешевле специализированного железа
- Автоматизация — интеграция с OpenStack, Kubernetes, Ansible
Контроллеры и оркестрация
Для управления overlay-сетями нужны централизованные контроллеры. Популярные решения:
- VMware NSX — лидер в области сетевой виртуализации для vSphere. Поддерживает VXLAN, Geneve, распределённый firewall.
- Cisco ACI (Application Centric Infrastructure) — интеграция с физическими коммутаторами Nexus и VXLAN.
- OpenStack Neutron — open-source оркестратор для облаков. Поддерживает VXLAN, GRE, Geneve.
- Calico / Cilium — решения для Kubernetes (на базе eBPF).
Практические сценарии использования
1. Multi-tenant облако
Облачный провайдер выделяет каждому клиенту свой VNI (или несколько). Трафик клиентов полностью изолирован, даже если их виртуальные машины работают на одних физических серверах.
2. Миграция виртуальных машин (vMotion) между ЦОД
VXLAN позволяет сохранить L2-связность при миграции VM из Москвы в Санкт-Петербург. IP-адрес VM не меняется, сессии не рвутся.
3. Сегментация сети в Kubernetes
Cilium с VXLAN создаёт overlay между подами на разных нодах, обеспечивая политики безопасности.
Недостатки и проблемы
- MTU — инкапсуляция добавляет ~50 байт. Нужно увеличить MTU underlay до 1600 или настраивать clamp MSS
- Broadcast и multicast — VXLAN требует либо multicast в underlay, либо контроллер с ARP suppression
- Сложность отладки — трассировка пакета в overlay сложнее, нужны специализированные инструменты
Заключение: Сетевая виртуализация с VXLAN и NFV — это стандарт для современных дата-центров и облаков. 4096 VLAN больше не ограничивают вашу архитектуру. Начните с изучения VXLAN на Linux или в среде VMware NSX — это откроет путь к проектированию действительно масштабируемых сетей.