Skip to main content

Cluster networks: types, dual-stack, and address pools

A network in vStack Center is a cluster-level object. It has a type, a subnet (one for IPv4, one for IPv6, or both), a default gateway, an MTU, and an address pool. Who can create a network depends on its type. Once created, a network is assigned to a virtual data center (VDC), and the VDC's virtual machines connect to it through a network interface and receive an address from the pool.

Creating and deleting a network are asynchronous operations. The cluster dispatcher accepts the request, passes it to the network agent, and responds when it completes: the final result arrives in a separate callback message. Creation therefore has two outcomes: an accepted request and a confirmed network. Between them, the network is not yet ready to accept machines.

Modifying a network, by contrast, is synchronous and very limited: only the name of an existing network can be changed. The subnet, gateway, MTU, and VLAN ID are fixed at creation. This is also reflected in the interface, where the network card allows editing only the Name field, while the others are read-only.

The pool manages addresses within the network. It determines which addresses are free to assign to a machine, which are already used, and which have been excluded by an administrator. The pool works differently for IPv4 and IPv6. This is the main asymmetry to understand before assigning addresses for the first time; a separate section below covers it.

Network types​

The type is set at creation and cannot be changed. It determines the required parameters and which role can create the network.

Typetype valueVLAN IDC-VLAN (qinq_id)Who can create it
Isolated1OptionalNot allowedCluster master, vDC admin and above
Routed2RequiredNot allowedCluster master only
GENEVE3OptionalNot allowedCluster master, vDC admin and above
Q-in-Q4Required (outer tag, S-VLAN)Required (inner tag)Cluster master only

Both tags are required for Q-in-Q: vlan_id carries the outer tag, and qinq_id carries the inner tag. For types 1–3, the inner tag is not allowed; a request containing it is rejected.

Network parameters and limits​

ParameterDefaultLimitsComment
cidrNonePrefix from /16 to /29The network's IPv4 subnet
cidr_v6NoneValid IPv6 CIDRThe network's IPv6 subnet
vlan_idNoneVLAN range accepted by the clusterS-VLAN for Q-in-Q
qinq_idNoneVLAN range accepted by the clusterC-VLAN, only for Q-in-Q
mtu15001000–9180 and no higher than the cluster maximumJumbo Frames within the maximum
default_gwNoneAddress within cidrIPv4 gateway
default_gw_v6NoneAddress within cidr_v6IPv6 gateway
backend2Integer ≥ 0Network backend; 2 is NetGraph
ext_managed_ippool0—Indicates that an external system manages the address pool

At least one subnet is required: a network cannot be created without both cidr and cidr_v6. The IPv4 prefix is checked against both limits: a subnet that is too broad and one that is too narrow are rejected with different error codes, and the response text specifies the number of bits.

Dual-stack: IPv4 and IPv6 in one network​

A network can be IPv4-only, IPv6-only, or dual-stack. Both protocols coexist in one object: the network has two subnets and two default gateways, each within its own subnet. A virtual machine on a dual-stack network receives addresses from both families, and they appear together in the list of used addresses, without separation by protocol.

The IPv6 gateway is immediately excluded from assignment: when default_gw_v6 is specified, its address is automatically added to the list of reserved IPv6 addresses, so it cannot be assigned to a machine.

Address pool: an allowlist for IPv4, a denylist for IPv6​

This is the key difference. For IPv4, the pool is a list of allowed addresses: an address is available for assignment because it is in the pool. For IPv6, the pool is a list of reservations: an address is available because it is not in the reservation list. The same "add an address to the pool" operation therefore has the opposite effect on the underlying data, although it means the same thing: the address can be assigned to a machine again.

AspectIPv4IPv6
What the pool storesAllowed addressesReserved (excluded) addresses
An address is available ifIt is in the poolIt is not among the reservations
"Add an address to the pool"Adds a record; the address becomes availableRemoves a reservation; the address becomes available
"Remove an address from the pool"Removes a record; the address can no longer be assignedAdds a reservation; the address can no longer be assigned
Free address counterCalculated from the poolCalculated as subnet size minus reservations minus assigned addresses

This asymmetry leads to a practical rule: the allowlist for an IPv6 subnet is never populated. Do not look for entries there after creating the network; management uses reservations.

An empty IPv6 reservation list does not indicate anything either: it remains empty even for a network with an IPv6 subnet until an IPv6 gateway is set, an administrator excludes addresses, or a machine receives an IPv6 address. Whether a network has an IPv6 subnet is determined by cidr_v6, set at creation.

The free IPv6 address counter is limited by its integer width: for broad subnets (prefix /65 or shorter, including the usual /64), the number of addresses does not fit in a signed 64-bit integer, so -1 is returned instead. This is not an error; it means "too many to count". An exact number is available only for narrow IPv6 subnets; for a network without an IPv6 subnet, the counter is 0.

What the interface shows​

ScreenContentsPurpose
Provider Data Center → All NetworksTable with ID, Type, Name, VLAN ID, MTU, CIDR, Used IP Addresses, Free IP Addresses, and CSV exportAll cluster networks and their available addresses
Network cardForm with editable Name and read-only fields; General properties, IPPool usage, and IPPool space sectionsNetwork parameters, used addresses broken down by VDC, and pool counters
VDC → Networks, Primary tabTable with an Assign columnNetworks assigned to this VDC
VDC → Networks, IP Data tabUsed IP addresses by this vDC, Used IP Addresses, Free IP Addresses, Addrs limitHow many addresses the VDC has used and its limit
VM card, Networks sectionTable with ID, Name, Slot, Port, MAC, IP, IP guard, MBps limitThe address received by the machine

All Networks tab: network table with ID, Type, Name, VLAN ID, MTU, CIDR, Used IP Addresses, and Free IP Addresses columns

The IPPool space section on the network card divides addresses into three counters: free, used, and absent from the pool. The third counter follows directly from the IPv4 allowlist logic: the address is within the subnet but cannot be assigned until it is added to the pool.

Limitations to know in advance​

LimitationReasonAction
Only a network's name can be changedThe subnet, gateway, MTU, and VLAN tags are fixed at creationCreate a new network with the required parameters and switch the machines to it
A network with connected consumers cannot be deletedDeletion would break connectivity for running machinesDisconnect the interfaces of machines and software-defined routers (Edge) from the network, then delete it
vDC admin cannot create routed or Q-in-Q networksThese types affect external routing and VLAN tagging across the clusterAsk a user with the Cluster master role to create the network
The free IPv6 counter shows -1The subnet is broader than /65, and its size is not calculatedUse the list of reservations and assigned addresses as a guide, or use a narrow subnet
vDC admin can modify and delete only their own networksFor these roles, object ownership is tied to the creatorAct as Cluster master: this role can modify and delete any network regardless of who created it

See also​

API methods​

The API operations covered on this page are nets-create, net-list, net-set, nets-delete, net-ippool-show, and net-ippool-free. See the API reference.