hostprofi.ru
Подобрать хостинг
Термин·буква O

Overlay network

краткое определение

Overlay network (в Docker) — виртуальная сеть поверх физической инфраструктуры, соединяющая контейнеры на разных хостах Docker Swarm в единое сетевое пространство.

Overlay network в Docker — виртуальная сеть, объединяющая контейнеры на разных физических или виртуальных хостах в единое адресное пространство. Контейнер на сервере A «видит» контейнер на сервере B как если бы они находились в одной локальной сети. Overlay network — основа для Docker Swarm: именно она обеспечивает связь сервисов между нодами кластера.

Как работает Overlay network

Overlay network использует протокол VXLAN (Virtual Extensible LAN, RFC 7348). Трафик между контейнерами инкапсулируется в UDP-пакеты и передаётся по физической сети хостов. Порт VXLAN: UDP 4789. Каждая overlay-сеть получает уникальный VNI (VXLAN Network Identifier). Docker-демоны на разных хостах обмениваются информацией об endpoint через встроенный gossip-протокол (порт 7946 TCP/UDP).

# Создать overlay network
docker network create --driver overlay --attachable mynet

# Запустить контейнер в overlay-сети
docker service create --network mynet --name web nginx

# Список сетей
docker network ls

# Детали сети
docker network inspect mynet

Шифрование трафика

Overlay network опционально шифрует трафик данных (data plane) через AES-GCM:

docker network create --driver overlay --opt encrypted mynet

Без опции encrypted управляющие сообщения зашифрованы (через TLS), но данные между контейнерами передаются незашифрованными по сети хостов. Для продакшна в публичных ЦОДах шифрование критично.

История

Docker Overlay network появился в Docker 1.9 (2015) вместе с введением multi-host networking. VXLAN как стандарт разработан VMware, Cisco и другими вендорами и стандартизирован в RFC 7348 (2014). В Docker Swarm mode (Docker 1.12, 2016) overlay network стала основой межноддового взаимодействия. В Kubernetes аналогичную роль играют CNI-плагины: Flannel (также VXLAN), Calico (BGP), Cilium (eBPF).

На что обращать внимание

Требования для overlay network: все ноды кластера должны быть доступны по портам TCP/UDP 2377, TCP/UDP 7946, UDP 4789. Проблемы с overlay часто вызваны файрволом, блокирующим UDP 4789. Производительность overlay ниже, чем у host network (~10–15% overhead на шифрование + VXLAN инкапсуляцию). Для высоконагруженных сервисов (>10 Гбит/с трафика между контейнерами) рассмотри host network или SR-IOV.

История Overlay network в Docker

Overlay network появился в Docker 1.9 (2015) вместе с Docker Swarm mode. До этого multi-host networking требовал сторонних решений (Weave, Flannel). Docker Overlay использует VXLAN (Virtual Extensible LAN, RFC 7348) — протокол инкапсуляции L2-фреймов в UDP-пакеты. VXLAN разработан VMware, Cisco и Arista в 2011 году для масштабирования виртуальных сетей в дата-центрах. Docker использует VXLAN с VNI (VXLAN Network Identifier), UDP-порт 4789.

Как работает Overlay network

При создании overlay network Docker создаёт VXLAN-туннель между хостами через VTEP (VXLAN Tunnel Endpoint) — виртуальный сетевой интерфейс vxlan0. Когда контейнер на Host A отправляет пакет контейнеру на Host B, VTEP инкапсулирует L2-фрейм в UDP/VXLAN-пакет и отправляет на физический IP Host B. Host B декапсулирует и доставляет в нужный контейнер. Для обнаружения адресов (ARP) в overlay Docker использует распределённое KV-хранилище.

Overlay network vs Bridge network vs Host network

Тип сетиОбластьПроизводительностьПрименение
OverlayMulti-host (Swarm)Накладные расходы VXLANSwarm services, K8s
BridgeОдин хостВысокаяDocker Compose
HostОдин хостМаксимальная (нет NAT)High-performance services

На что обращать внимание

Для overlay network с шифрованием (--opt encrypted) требуется открытый UDP-порт 4789 между нодами Swarm. Производительность overlay немного ниже host network из-за VXLAN-инкапсуляции (~10–15% overhead). Для высоконагруженных сервисов (>10 Гбит/с трафика между контейнерами) рассматривай host network или SR-IOV. В Kubernetes аналог overlay — CNI-плагины (Flannel, Calico, Cilium) — используют те же VXLAN или BGP.

Другие термины