Hyper-V Neutron Agent NVGRE implementation

Registered by Claudiu Belu

This blueprint targets Windows Hyper-V / Server 2012 R2 or Windows 8.1.

Hyper-V Network Virtualization (HNV) was first introduced in Windows Hyper-V / Server 2012 and has the purpose of enabling the virtualization of Layer 2 and Layer 3 networking models. One of the HNV configuration approches is called NVGRE (Network Virtualization through GRE).

NVGRE is currently used between Windows Hyper-V / Server 2012 and Windows Hyper-V / Server 2012 R2 VMs, but the usage can be extended to other hypervisors which support GRE by using OpenVSwitch.

NVGRE can be utilized by Neutron by creating a GRE network and deploying instances on it. The Hyper-V Neutron Agent can then proceed to set the network's segmentation_id on the instance's port as VirtualSubnetId. The Agent will then proceed to create the proper ProviderAddress, ProviderRoute, CustomerRoute and LookupRecord WMI objects needed in order for this feature to function properly.

Additional information is needed from Neutron in order to create objects mentioned above. In order to retrieve the information, admin Neutron credentials are necessary. They should be added in the neutron_hyperv_agent.conf file:

    [neutron]
    url=http://<neutron_ip>:9696
    auth_strategy=keystone
    admin_tenant_name=service
    admin_username=neutron
    admin_password=<password>
    admin_auth_url=http://<keystone_ip>:35357/v2.0

To enable this feature, add the config option enable_nvgre_support=True in the neutron_hyperv_agent.conf file, under the AGENT section and restart the Hyper-V Neutron Agent.

Limitations:

1. Segmentation ID should be higher than 4095. Hyper-V cannot create Customer Routes or Lookup Records if the SegmentationId is lower or equal to 4095.

2. Cannot have network gateway ending with '.1'. This will cause WMI exceptions, as ending with '.1' are reserved by Hyper-V. Any other gateway (including networks without a gateway) is acceptable.

3. Only one subnet per network. The reason is that it cannot be created more Customer Routes for the same VirtualSubnetID. Adding new routes for the same VirtualSubnetId will cause exceptions. For a given network, the customer routes that will be created will be:
Get-NetVirtualizationCustomerRoute

    RoutingDomainID : {6AC1D964-5ACF-51D7-ACD5-98A8DF5CA268}
    VirtualSubnetID : 5000
    DestinationPrefix : 10.0.1.0/24
    NextHop : 0.0.0.0
    Metric : 255

    RoutingDomainID : {6AC1D964-5ACF-51D7-ACD5-98A8DF5CA268}
    VirtualSubnetID : 5000
    DestinationPrefix : 0.0.0.0/0
    NextHop : 10.0.1.2
    Metric : 255

Notes:

- WNV (Windows Network Virtualization) is enabled by default for Windows Hyper-V / Server 2012 R2.
- Lookup Records should be added for the metadata address (169.254.169.254) in order for instances to properly fetch their metadata.
- Lookup Records should be added for 0.0.0.0. One reason why they're necessary is that they are required in order to receive DHCP offers.
- ProviderAddress, ProviderRoute, CustomerRoute and LookupRecord WMI objects are not persistent. Which means they will not exist after the host restarts.

Blueprint information

Status:
Complete
Approver:
Claudiu Belu
Priority:
Medium
Drafter:
Claudiu Belu
Direction:
Approved
Assignee:
Claudiu Belu
Definition:
Approved
Series goal:
None
Implementation:
Implemented
Milestone target:
None
Started by
Claudiu Belu
Completed by
Claudiu Belu

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/hyper-v-nvgre,n,z

Addressed by: https://review.openstack.org/175586
    Adds Hyper-V NVGRE support

Gerrit topic: https://review.openstack.org/#q,topic:bp/s,n,z

Addressed by: https://review.openstack.org/214819
    Adds Hyper-V Neutron Agent NVGRE tunnel type spec

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.