Перейти к основному содержимому

Сети кластера: типы, dual-stack и пулы адресов

Сеть в vStack Center — объект уровня кластера. У неё есть тип, подсеть (одна на IPv4, одна на IPv6 или обе), шлюз по умолчанию, MTU и пул адресов. Кто вправе создать сеть — зависит от её типа; созданную сеть назначают виртуальному ЦОД (ВЦОД), а виртуальные машины этого ВЦОД подключаются к ней сетевым интерфейсом и получают адрес из пула.

Создание и удаление сети — асинхронные операции. Диспетчер кластера принимает запрос, передаёт его агенту сети и отвечает по факту: финальный результат приходит отдельным сообщением-callback. Поэтому у создания два исхода: принятый запрос и подтверждённая сеть. Между ними сеть ещё не готова принимать машины.

Изменение сети, наоборот, синхронное и очень узкое: у существующей сети можно поменять только имя. Подсеть, шлюз, MTU и VLAN ID фиксируются при создании — это видно и в интерфейсе, где в карточке сети редактируется одно поле Name, а остальные показаны только для чтения.

Адресами внутри сети управляет пул. Пул решает, какой адрес свободен для выдачи машине, какой уже занят, а какой исключён администратором. Механика пула у IPv4 и IPv6 разная — это главная асимметрия, которую стоит понять до первой выдачи адресов; ей посвящён отдельный раздел ниже.

Типы сетей​

Тип задаётся при создании и не меняется. От типа зависят обязательные параметры и то, какая роль вправе создать такую сеть.

ТипЗначение typeVLAN IDC-VLAN (qinq_id)Кто может создать
Isolated1необязателензапрещёнCluster master, vDC admin и выше
Routed2обязателензапрещёнтолько Cluster master
GENEVE3необязателензапрещёнCluster master, vDC admin и выше
Q-in-Q4обязателен (внешний тег, S-VLAN)обязателен (внутренний тег)только Cluster master

Для Q-in-Q оба тега обязательны: vlan_id несёт внешний тег, qinq_id — внутренний. Для типов 1–3 внутренний тег запрещён — запрос с ним отклоняется.

Параметры сети и их границы​

ПараметрПо умолчаниюГраницыКомментарий
cidrнетпрефикс от /16 до /29IPv4-подсеть сети
cidr_v6неткорректный IPv6-CIDRIPv6-подсеть сети
vlan_idнетдиапазон VLAN, принятый в кластереS-VLAN для Q-in-Q
qinq_idнетдиапазон VLAN, принятый в кластереC-VLAN, только для Q-in-Q
mtu15001000–9180 и не выше максимума кластераJumbo Frames — в пределах максимума
default_gwнетадрес внутри cidrшлюз IPv4
default_gw_v6нетадрес внутри cidr_v6шлюз IPv6
backend2целое ≥ 0сетевой backend; 2 — NetGraph
ext_managed_ippool0—признак того, что пул адресов ведёт внешняя система

Хотя бы одна подсеть обязательна: сеть без cidr и без cidr_v6 не создаётся. Границы префикса IPv4 проверяются с двух сторон — слишком широкая и слишком узкая подсеть отклоняются с разными кодами ошибок, и в тексте ответа указано число бит.

Dual-stack: IPv4 и IPv6 в одной сети​

Сеть может быть только IPv4, только IPv6 или dual-stack. Оба протокола живут в одном объекте: у сети две подсети и два шлюза по умолчанию, каждый — в границах своей подсети. Виртуальная машина в dual-stack-сети получает адреса обоих семейств, и в списке занятых адресов они лежат рядом, без разделения по протоколу.

Шлюз IPv6 сразу исключается из выдачи: при указании default_gw_v6 его адрес автоматически попадает в список зарезервированных IPv6-адресов, поэтому машине он не достанется.

Пул адресов: разрешающий список для IPv4, запрещающий для IPv6​

Это ключевое различие. Для IPv4 пул — список разрешённых адресов: адрес доступен для выдачи, потому что он в пуле. Для IPv6 пул — список резервов: адрес доступен, потому что его в списке резервов нет. Одна и та же операция «добавить адрес в пул» поэтому работает противоположно на уровне данных, хотя означает одно и то же: адрес снова можно выдать машине.

АспектIPv4IPv6
Что хранит пулразрешённые адресазарезервированные (исключённые) адреса
Адрес доступен, еслион есть в пулеего нет среди резервов
«Добавить адрес в пул»добавляет запись — адрес становится доступенснимает резерв — адрес становится доступен
«Удалить адрес из пула»убирает запись — адрес больше не выдаётсяставит резерв — адрес больше не выдаётся
Счётчик свободныхсчитается по пулусчитается как размер подсети минус резервы минус выданные

Из асимметрии следует практическое правило: у IPv6-подсети список разрешённых адресов не заполняется вообще. Поэтому не ищите там записи после создания сети — управление идёт через резервы.

Пустой список резервов IPv6 тоже ни о чём не говорит: он остаётся пустым и у сети с IPv6-подсетью, пока шлюз IPv6 не задан, администратор не исключал адреса и ни одна машина не получила IPv6-адрес. Есть у сети IPv6-подсеть или нет, определяет cidr_v6, заданный при создании.

Счётчик свободных IPv6-адресов упирается в разрядность: для широких подсетей (префикс /65 и короче, включая обычный /64) количество адресов не помещается в знаковое 64-битное число, и вместо него возвращается -1. Это не ошибка, а признак «слишком много, чтобы считать». Точное число появляется только у узких IPv6-подсетей; у сети без IPv6-подсети счётчик равен 0.

Что показывает интерфейс​

ЭкранЧто тамЗачем
Provider Data Center → All Networksтаблица ID, Type, Name, VLAN ID, MTU, CIDR, Used IP Addresses, Free IP Addresses, выгрузка CSVвсе сети кластера и запас адресов в них
Карточка сетиформа с редактируемым Name и полями только для чтения; блоки General properties, IPPool usage, IPPool spaceпараметры сети, разбивка занятых адресов по ВЦОД и счётчики пула
ВЦОД → Networks, таб Primaryтаблица с колонкой Assignкакие сети назначены этому ВЦОД
ВЦОД → Networks, таб IP DataUsed IP addresses by this vDC, Used IP Addresses, Free IP Addresses, Addrs limitсколько адресов ВЦОД израсходовал и его лимит
Карточка ВМ, блок Networksтаблица ID, Name, Slot, Port, MAC, IP, IP guard, MBps limitкакой адрес получила машина

Таб All Networks: таблица сетей с колонками ID, Type, Name, VLAN ID, MTU, CIDR, Used IP Addresses и Free IP Addresses

Блок IPPool space в карточке сети разделяет адреса на три счётчика: свободные, занятые и отсутствующие в пуле. Третий счётчик — прямое следствие разрешающей логики IPv4: адрес входит в подсеть, но выдать его нельзя, пока он не добавлен в пул.

Ограничения, о которых лучше знать заранее​

ОграничениеПочему такЧто делать
У сети меняется только имяподсеть, шлюз, MTU и теги VLAN фиксируются при созданиисоздайте новую сеть с нужными параметрами и переключите машины на неё
Сеть с подключёнными потребителями не удаляетсяудаление оборвало бы связность работающих машинотключите от сети интерфейсы машин и программно-определяемых маршрутизаторов (Edge), затем удаляйте
vDC admin не создаёт routed и Q-in-Qэти типы затрагивают внешнюю маршрутизацию и разметку VLAN всего кластерапопросите создать сеть роль Cluster master
Счётчик свободных IPv6 показывает -1подсеть шире /65, объём не считаетсяориентируйтесь на список резервов и выданных адресов либо используйте узкую подсеть
vDC admin изменяет и удаляет только свои сетидля этих ролей владение объектом закреплено за создателемдействуйте от имени Cluster master: он меняет и удаляет любую сеть независимо от того, кто её создал

См. также​

Методы API​

Операции этой страницы в API: nets-create, net-list, net-set, nets-delete, net-ippool-show, net-ippool-free — см. Справочник API.