From 97ea9a972fd63e1fedb685bfa0b46b444b851263 Mon Sep 17 00:00:00 2001 From: MarioRobres Date: Mon, 12 Jan 2026 16:05:27 +0100 Subject: [PATCH 1/4] F OpenNebula/one#6534: add shared AR documentation --- .../networking_system/manage_vnets.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/content/product/cluster_configuration/networking_system/manage_vnets.md b/content/product/cluster_configuration/networking_system/manage_vnets.md index 113b9662..77fe371d 100644 --- a/content/product/cluster_configuration/networking_system/manage_vnets.md +++ b/content/product/cluster_configuration/networking_system/manage_vnets.md @@ -69,6 +69,49 @@ AR=[ ] ``` +### Shared Address Ranges (Shared AR) for Virtual IPs + +Marking an Address Range as `SHARED` converts its IPs into **Virtual IPs**. This allows **multiple VMs** to use the same IP address. + +To mark an Address Range as `SHARED`, add the `SHARED` attribute: + +```default +AR=[ + TYPE = "IP4", + IP = "10.0.0.211", + SIZE = "3", + SHARED = "YES" +] +``` + +Shared Address Ranges behave slightly differently from regular Address Ranges: + +- Same IP, multiple VMs: The same IP address from a Shared AR can be used by more than one VM. +- No MAC addresses: Leases from a Shared AR do not include a MAC address. +- Explicit request required: Shared IPs are not assigned automatically. You must explicitly request a Shared IP using [`NIC ALIAS`](#request-virtual-ips-with-nic-alias). +- Attribute `USED_LEASES` shows how many different shared IPs are in use, not how many VMs are using them. + +For example, a Virtual Network with a no shared AR (`ID=0`) and a shared AR (`ID=1`): + +```default +ADDRESS RANGE POOL +AR 0 +SIZE : 51 +LEASES : 4 + +RANGE FIRST LAST +MAC 02:00:c0:a8:96:64 02:00:c0:a8:96:c7 +IP 10.0.0.150 10.0.0.201 + +AR 1 +SIZE : 3 +LEASES : 1 + +RANGE FIRST LAST +MAC +IP 10.0.0.211 10.0.0.213 +``` + ### Guest Configuration Attributes (Context) To set up the guest network, the Virtual Network may include additional information to be injected into the VM at boot time. These contextualization attributes may include, for example, network masks, DNS servers, or gateways. For example, to define a gateway and DNS server for the Virtual Machines in the Virtual Network, simply add: @@ -392,6 +435,30 @@ Any attribute supported by an NIC attribute can be also used in an alias except {{< alert title="Important" color="success" >}} The [Security Groups]({{% relref "../../virtual_machines_operation/virtual_machines_networking/security_groups#security-groups" %}}) and IP/MAC spoofing filters from the NIC network will be applied to the NIC_ALIAS. Those ones belonging to the NIC_ALIAS network won’t apply.{{< /alert >}} +### Request Virtual IPs with NIC Alias + +To request a Virtual IP from a [Shared Address Range](#shared-address-ranges-shared-ar) follow these steps: + +1. Define the primary NIC and give it a `NAME` so aliases can refer to it + +```default +NIC = [ NETWORK = "private", NAME = "virtual" ] +``` + +2. Add a `NIC_ALIAS` that **explicity requests the shared IP** from the Shared AR (you must include the `IP` attribute) + +```default +NIC_ALIAS = [ NETWORK = "private", PARENT = "virtual", IP = "10.0.0.211" ] +``` + +This will result in the VM having a **single network interface** (the parent NIC) with **two IPs** configured: + +- The IP assigned to the main NIC +- The explicitly requested shared IP from the `NIC_ALIAS` + +{{< alert title="Important" color="success" >}} +Requesting a Shared IP from a Shared AR **without** using `NIC_ALIAS` will create a **new interface** in the VM, with a random MAC assigned by Libvirt. For this reason, the recommended approach is to use `NIC_ALIAS`.{{< /alert >}} + ### Configuring the Virtual Machine Network Hypervisors will set the MAC address for the NIC of the Virtual Machines, but not the IP address. The IP configuration inside the guest is performed by the contextualization process, check the [contextualization guide]({{% relref "../../virtual_machines_operation/virtual_machines/vm_templates#context-overview" %}}) to learn how to prepare your Virtual Machines to automatically configure the network From de6c0e75a759aa8df2cc877bf6f7328e3c586cad Mon Sep 17 00:00:00 2001 From: MarioRobres Date: Mon, 12 Jan 2026 16:05:52 +0100 Subject: [PATCH 2/4] F OpenNebula/one#6534: add release notes --- content/software/release_information/release_notes/whats_new.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/software/release_information/release_notes/whats_new.md b/content/software/release_information/release_notes/whats_new.md index cc6c05a6..dd01c283 100644 --- a/content/software/release_information/release_notes/whats_new.md +++ b/content/software/release_information/release_notes/whats_new.md @@ -68,6 +68,7 @@ We encourage you to review the [Known Issues]({{% relref "known_issues" %}}) and - [Transparent proxying](../../../product/virtual_machines_operation/virtual_machines_networking/tproxy) allows VMs to access external services like OneGate without requiring complex networking setup. - [Virtual Machine memory encryption](../../../product/virtual_machines_operation/virtual_machines/vm_templates#memory-encryption) allows VM workloads whose memory cannot be read by the hypervisor. +- Add [Shared Address Ranges](../../../product/cluster_configuration/networking_system/manage_vnets.md#shared-address-ranges-shared-ar-for-virtual-ips) with [NIC Alias support](../../../product/cluster_configuration/networking_system/manage_vnets.md#request-virtual-ips-with-nic-alias) to assign Virtual IPs that can be shared across multiple VMs ## LXC - NIC Hotplugging, recontextualization and NIC PCI passthrough are now available [driver features](../../../product/operation_references/hypervisor_configuration/lxc_driver.md). From b4fe12102f67765df0662d8f7f94b6d281cc15fe Mon Sep 17 00:00:00 2001 From: MarioRobres Date: Tue, 27 Jan 2026 15:53:50 +0100 Subject: [PATCH 3/4] F OpenNebula/one#6534: update Shared AR documentation --- .../networking_system/manage_vnets.md | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/content/product/cluster_configuration/networking_system/manage_vnets.md b/content/product/cluster_configuration/networking_system/manage_vnets.md index 77fe371d..beec426a 100644 --- a/content/product/cluster_configuration/networking_system/manage_vnets.md +++ b/content/product/cluster_configuration/networking_system/manage_vnets.md @@ -73,7 +73,7 @@ AR=[ Marking an Address Range as `SHARED` converts its IPs into **Virtual IPs**. This allows **multiple VMs** to use the same IP address. -To mark an Address Range as `SHARED`, add the `SHARED` attribute: +To mark an Address Range as `SHARED`, add the `SHARED` attribute in the AR definition: ```default AR=[ @@ -88,30 +88,33 @@ Shared Address Ranges behave slightly differently from regular Address Ranges: - Same IP, multiple VMs: The same IP address from a Shared AR can be used by more than one VM. - No MAC addresses: Leases from a Shared AR do not include a MAC address. -- Explicit request required: Shared IPs are not assigned automatically. You must explicitly request a Shared IP using [`NIC ALIAS`](#request-virtual-ips-with-nic-alias). +- Explicit request required: Shared IPs are not assigned automatically. They must be explicitly requested using [`NIC ALIAS`](#request-virtual-ips-with-nic-alias). - Attribute `USED_LEASES` shows how many different shared IPs are in use, not how many VMs are using them. For example, a Virtual Network with a no shared AR (`ID=0`) and a shared AR (`ID=1`): ```default -ADDRESS RANGE POOL -AR 0 -SIZE : 51 -LEASES : 4 +ADDRESS RANGE POOL +AR 0 +SIZE : 51 +LEASES : 4 RANGE FIRST LAST MAC 02:00:c0:a8:96:64 02:00:c0:a8:96:c7 IP 10.0.0.150 10.0.0.201 -AR 1 -SIZE : 3 -LEASES : 1 +AR 1 +SIZE : 3 +LEASES : 1 RANGE FIRST LAST -MAC +MAC IP 10.0.0.211 10.0.0.213 ``` +{{< alert title="Important" color="success" >}} +The Sharedness of an Address Range can be changed only if the Address Range does not contain any leases. All leases must be released before modifying the `SHARED` attribute. {{< /alert >}} + ### Guest Configuration Attributes (Context) To set up the guest network, the Virtual Network may include additional information to be injected into the VM at boot time. These contextualization attributes may include, for example, network masks, DNS servers, or gateways. For example, to define a gateway and DNS server for the Virtual Machines in the Virtual Network, simply add: @@ -457,7 +460,7 @@ This will result in the VM having a **single network interface** (the parent NIC - The explicitly requested shared IP from the `NIC_ALIAS` {{< alert title="Important" color="success" >}} -Requesting a Shared IP from a Shared AR **without** using `NIC_ALIAS` will create a **new interface** in the VM, with a random MAC assigned by Libvirt. For this reason, the recommended approach is to use `NIC_ALIAS`.{{< /alert >}} +Requesting a Shared IP from a Shared AR **without** using `NIC_ALIAS` will create a **new interface** in the VM, with a random MAC assigned by Libvirt. For this reason, the recommended approach is to use `NIC_ALIAS`.{{< /alert >}} ### Configuring the Virtual Machine Network From 1bc068153923fafa73719a24992f38eb8aacf58d Mon Sep 17 00:00:00 2001 From: MarioRobres Date: Fri, 6 Feb 2026 14:13:27 +0100 Subject: [PATCH 4/4] M #-: update docs --- .../cluster_configuration/networking_system/manage_vnets.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/product/cluster_configuration/networking_system/manage_vnets.md b/content/product/cluster_configuration/networking_system/manage_vnets.md index beec426a..7d54c20e 100644 --- a/content/product/cluster_configuration/networking_system/manage_vnets.md +++ b/content/product/cluster_configuration/networking_system/manage_vnets.md @@ -108,12 +108,12 @@ SIZE : 3 LEASES : 1 RANGE FIRST LAST -MAC +MAC 00:00:00:00:00:00 00:00:00:00:00:00 IP 10.0.0.211 10.0.0.213 ``` {{< alert title="Important" color="success" >}} -The Sharedness of an Address Range can be changed only if the Address Range does not contain any leases. All leases must be released before modifying the `SHARED` attribute. {{< /alert >}} +The Sharedness of an Address Range can not be changed. {{< /alert >}} ### Guest Configuration Attributes (Context) @@ -460,7 +460,7 @@ This will result in the VM having a **single network interface** (the parent NIC - The explicitly requested shared IP from the `NIC_ALIAS` {{< alert title="Important" color="success" >}} -Requesting a Shared IP from a Shared AR **without** using `NIC_ALIAS` will create a **new interface** in the VM, with a random MAC assigned by Libvirt. For this reason, the recommended approach is to use `NIC_ALIAS`.{{< /alert >}} +Requesting a Shared IP from a Shared AR **without** using `NIC_ALIAS` will create a **new interface** in the VM, with a random MAC assigned by OpenNebula. For this reason, the recommended approach is to use `NIC_ALIAS`.{{< /alert >}} ### Configuring the Virtual Machine Network