Сети кластера: типы, dual-stack и пулы адресов
Сеть в vStack Center — объект уровня кластера. У неё есть тип, подсеть (одна на IPv4, одна на IPv6 или обе), шлюз по умолчанию, MTU и пул адресов. Кто вправе создать сеть — зависит от её типа; созданную сеть назначают виртуальному ЦОД (ВЦОД), а виртуальные машины этого ВЦОД подключаются к ней сетевым интерфейсом и получают адрес из пула.
Создание и удаление сети — асинхронные операции. Диспетчер кластера принимает запрос, передаёт его агенту сети и отвечает по факту: финальный результат приходит отдельным сообщением-callback. Поэтому у создания два исхода: принятый запрос и подтверждённая сеть. Между ними сеть ещё не готова принимать машины.
Изменение сети, наоборот, синхронное и очень узкое: у существующей сети можно
поменять только имя. Подсеть, шлюз, MTU и VLAN ID фиксируются при создании — это
видно и в интерфейсе, где в карточке сети редактируется одно поле Name, а
остальные показаны только для чтения.
Адресами внутри сети управляет пул. Пул решает, какой адрес свободен для выдачи машине, какой уже занят, а какой исключён администратором. Механика пула у IPv4 и IPv6 разная — это главная асимметрия, которую стоит понять до первой выдачи адресов; ей посвящён отдельный раздел ниже.
Типы сетей
Тип задаётся при создании и не меняется. От типа зависят обязательные параметры и то, какая роль вправе создать такую сеть.
| Тип | Значение type | VLAN ID | C-VLAN (qinq_id) | Кто может создать |
|---|---|---|---|---|
| Isolated | 1 | необязателен | запрещён | Cluster master, vDC admin и выше |
| Routed | 2 | обязателен | запрещён | только Cluster master |
| GENEVE | 3 | необязателен | запрещён | Cluster master, vDC admin и выше |
| Q-in-Q | 4 | обязателен (внешний тег, S-VLAN) | обязателен (внутренний тег) | только Cluster master |
Для Q-in-Q оба тега обязательны: vlan_id несёт внешний тег, qinq_id —
внутренний. Для типов 1–3 внутренний тег запрещён — запрос с ним отклоняется.
Параметры сети и их границы
| Параметр | По умолчанию | Границы | Комментарий |
|---|---|---|---|
cidr | нет | префикс от /16 до /29 | IPv4-подсеть сети |
cidr_v6 | нет | корректный IPv6-CIDR | IPv6-подсеть сети |
vlan_id | нет | диапазон VLAN, принятый в кластере | S-VLAN для Q-in-Q |
qinq_id | нет | диапазон VLAN, принятый в кластере | C-VLAN, только для Q-in-Q |
mtu | 1500 | 1000–9180 и не выше максимума кластера | Jumbo Frames — в пределах максимума |
default_gw | нет | адрес внутри cidr | шлюз IPv4 |
default_gw_v6 | нет | адрес внутри cidr_v6 | шлюз IPv6 |
backend | 2 | целое ≥ 0 | сетевой backend; 2 — NetGraph |
ext_managed_ippool | 0 | — | признак того, что пул адресов ведёт внешняя система |
Хотя бы одна подсеть обязательна: сеть без cidr и без cidr_v6 не создаётся.
Границы префикса IPv4 проверяются с двух сторон — слишком широкая и слишком
узкая подсеть отклоняются с разными кодами ошибок, и в тексте ответа указано
число бит.
Dual-stack: IPv4 и IPv6 в одной сети
Сеть может быть только IPv4, только IPv6 или dual-stack. Оба протокола живут в одном объекте: у сети две подсети и два шлюза по умолчанию, каждый — в границах своей подсети. Виртуальная машина в dual-stack-сети получает адреса обоих семейств, и в списке занятых адресов они лежат рядом, без разделения по протоколу.
Шлюз IPv6 сразу исключается из выдачи: при указании default_gw_v6 его адрес
автоматически попадает в список зарезервированных IPv6-адресов, поэтому машине
он не достанется.
Пул адресов: разрешающий список для IPv4, запрещающий для IPv6
Это ключевое различие. Для IPv4 пул — список разрешённых адресов: адрес доступен для выдачи, потому что он в пуле. Для IPv6 пул — список резервов: адрес доступен, потому что его в списке резервов нет. Одна и та же операция «добавить адрес в пул» поэтому работает противоположно на уровне данных, хотя означает одно и то же: адрес снова можно выдать машине.
| Аспект | IPv4 | IPv6 |
|---|---|---|
| Что хранит пул | разрешённые адреса | зарезервированные (исключённые) адреса |
| Адрес доступен, если | он есть в пуле | его нет среди резервов |
| «Добавить адрес в пул» | добавляет запись — адрес становится доступен | снимает резерв — адрес становится доступен |
| «Удалить адрес из пула» | убирает запись — адрес больше не выдаётся | ставит резерв — адрес больше не выдаётся |
| Счётчик свободных | считается по пулу | считается как размер подсети минус резервы минус выданные |
Из асимметрии следует практическое правило: у 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 Data | Used IP addresses by this vDC, Used IP Addresses, Free IP Addresses, Addrs limit | сколько адресов ВЦОД израсходовал и его лимит |
Карточка ВМ, блок Networks | таблица ID, Name, Slot, Port, MAC, IP, IP guard, MBps limit | какой адрес получила машина |

Блок 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.