Bug #4314

Context problems with IPv6 networks

Added by Laurent Grawet over 5 years ago. Updated about 5 years ago.

Status:ClosedStart date:01/29/2016
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:Core & System
Target version:Release 5.0
Resolution:fixed Pull request:
Affected Versions:OpenNebula 4.14

Description

Hi,

We are currently testing OpenNebula IPv6 implementation. Here is a non exhaustive list of problems we are currently facing:

  1. In IPv4/6 networks, IPv6 context variables are not pushed to the VM (IP6, GATEWAY6...)
  2. Context variables are pushed if we force IPv6 address in vm template. But there is no IP6_ULA variable in vm templates, only IP6_GLOBAL. If we use it for ULA address, the vm instance shows two times the same IPv6 (in ULA and GLOBAL fields)
  3. We receive IP assignments from our network team, but we can't choose IPv6 addresses because we are forced to use SLAAC addresses. We don't want to use SLAAC on virtual servers and it is not a good practice to configure theses addresses statically.
  4. We can force any IPv6 address on the VM if there is no IPv6 range defined in virtual network. It is not coherent with IPv4 behavior.
  5. There is no way to convert IPv4 network to dual stack and this is a real problem!
  6. So we tried to configure an IPv6 address range in addition to the IPv4 one in a virtual network. The IPv6 leases are never used when we force IPv4 and IPv6 addresses in vm network interface but the IPv6 address is assigned to the VM! If we configure in vm template a dedicated IPv6 network interface with only one (forced) IPv6 address (and no IPv4) OpenNebula will also pick the next available IPv4 address.

Best regards,

Laurent

Associated revisions

Revision 20b84754
Added by Ruben S. Montero about 5 years ago

Bug #4314 Feature #4320: VMs get IP6 context with ULA only addresses.
Re-design of update logic to work as other update methods

History

#1 Updated by Ruben S. Montero over 5 years ago

Hi Laurent

First, thanks for your detailed feedback! Let see if we can improve IPv6 ;)

Laurent Grawet wrote:

Hi,

We are currently testing OpenNebula IPv6 implementation. Here is a non exhaustive list of problems we are currently facing:

  1. In IPv4/6 networks, IPv6 context variables are not pushed to the VM (IP6, GATEWAY6...)

I cannot reproduce this, it is getting all the defined context variables see below

  1. Context variables are pushed if we force IPv6 address in vm template. But there is no IP6_ULA variable in vm templates, only IP6_GLOBAL. If we use it for ULA address, the vm instance shows two times the same IPv6 (in ULA and GLOBAL fields)

These are the current context variables:

const char*  VirtualMachine::NETWORK6_CONTEXT[][2] = {                                                                                               
        {"IP6", "IP6_GLOBAL"},                                                                                                                        
        {"GATEWAY6", "GATEWAY6"},                                                                                                                      
        {"CONTEXT_FORCE_IPV4", "CONTEXT_FORCE_IPV4"}
};   

i.e. NIC[IP6_GLOBAL] ---> CONTEXT[ETH0_IP6]

What else would you like to see here?

  1. We receive IP assignments from our network team, but we can't choose IPv6 addresses because we are forced to use SLAAC addresses. We don't want to use SLAAC on virtual servers and it is not a good practice to configure theses addresses statically.

This is not our experience (but I've also seen very different approaches, see for example GATEWAY6 which is not really needed by an IPv6 network), IPv6 network should be managed using SLAAC or a combination of neighbor discovery for the prefix + DHCP6 for the rest of parameters (e.g. DNS) I agree that forcing EUI64 for the host ID may be not assumed for all institutions and we could implement other algorithms like random or static and update context to configure the host for this. Note however that link-local addresses may be a problem...

I propose to open a backlog feature to expose other host-id generation algorithms including random or static.

I think that as a work around that you can generate 1 leases AR's setting the MAC according the IPv6 leases given by your team. This should be fairly ease to automate till we clear the host-id part...

  1. We can force any IPv6 address on the VM if there is no IPv6 range defined in virtual network. It is not coherent with IPv4 behavior.

OK, Verified. I'll open a separate issue for this.

  1. There is no way to convert IPv4 network to dual stack and this is a real problem!

You can use IP4/6 Address Range it was designed for dual stack hosts. For example, this a NIC with IPv4 + IPv6 addresses:

NIC    
AR_ID    0
BRIDGE    vbr0
IP    10.0.0.3
IP6_GLOBAL    2002::400:aff:fe00:0
IP6_LINK    fe80::400:aff:fe00:0
IP6_ULA    fd00::2:400:aff:fe00:0
MAC    02:00:0a:00:00:00
NETWORK    Dual Stack
NETWORK_ID    1
NETWORK_UNAME    ruben
NIC_ID    0
SECURITY_GROUPS    0
VLAN    NO

  1. So we tried to configure an IPv6 address range in addition to the IPv4 one in a virtual network. The IPv6 leases are never used when we force IPv4 and IPv6 addresses in vm network interface but the IPv6 address is assigned to the VM! If we configure in vm template a dedicated IPv6 network interface with only one (forced) IPv6 address (and no IPv4) OpenNebula will also pick the next available IPv4 address.

The Dual stack IP+IPv6 address range is the preferred option, as shown above.

Best regards,

Laurent

#2 Updated by Laurent Grawet over 5 years ago

Hi Ruben,

The problem only shows up with virtual networks with IPv6 ULA address range defined (no IPv6 Global range). The VM instance isn't getting the ETHx_IP6 and ETHx_GATEWAY6 context variables.

For example :
  • Public IPV4/6 network with Global IPv6 range : context variables are pushed to vm instance
  • Private IPV4/6 network with ULA IPv6 range : context variables are NOT pushed to vm instance

Those variables are pushed if we force the IPv6 ULA address with the IP6_GLOBAL= vm template variable. But in this case, the nic is getting the same IP twice : one in IPv6 ULA field and one in IPv6 GLobal field. It looks like there is no way to force IPv6 ULA in VM template, only IPv6 GLobal. Also, I don't really understand the need to differentiate IPv6 Global and ULA addresses treatment inside OpenNebula.

The last point is how to convert an IP4 address range to IP4/6 address range ? All our virtual networks have a full IP4 range defined so there is no room left for a new IP4/6 range.

Thank you very much,

Laurent

#3 Updated by Laurent Grawet about 5 years ago

Hi Ruben,

Can we expect to see some improvement about this matter in 5.0 ?

Thank you,

Laurent

#4 Updated by Ruben S. Montero about 5 years ago

  • Subject changed from Many problems with OpenNebula IPv6 implementation to Context problems with IPv6 networks

Somehow, I lost the track on this one.

This is a bug, something we can take a look for 5.0 definitely:

The problem only shows up with virtual networks with IPv6 ULA address range defined (no IPv6 Global range). The VM instance isn't getting the ETHx_IP6 and ETHx_GATEWAY6 context variables.

For example :
  • Public IPV4/6 network with Global IPv6 range : context variables are pushed to vm instance
  • Private IPV4/6 network with ULA IPv6 range : context variables are NOT pushed to vm instance

About this one:

The last point is how to convert an IP4 address range to IP4/6 address >range ? All our virtual networks have a full IP4 range defined so there is >no room left for a new IP4/6 range.

I am not sure but maybe you can add an AR. However, considering your use case I think you may be interested in feature #4446. This issue is to implement external IPAM drivers, maybe you can hook on whatever system is using your network team...

We'll use this issue to fix the context bug and if #4446 is not what you are looking for, we can maybe open an other issue...

#5 Updated by Ruben S. Montero about 5 years ago

  • Target version set to Release 5.0

#6 Updated by Ruben S. Montero about 5 years ago

  • Status changed from Pending to Closed
  • Resolution set to fixed

This is now fixed in 5.0, the IP6 ULA address is added as long as other IP6 variables.

Also available in: Atom PDF