Openstack + Nutanix : Neutron Networking

In my last post we covered the all-in-one installation of the OpenStack controller with the Nutanix shipped Acropolis Openstack drivers. The install created a single virtual machine, the Openstack Services VM (OVM). In this post I intend to talk about setting up a Network Topology using the Openstack dashboard and the Neutron service integration with Nutanix. I will be able to show how this gets reflected in the Acropolis Prism GUI. First, let’s create a public network for our VMs to reside on. Navigate via the Horizon dashboard to Admin > Networks

Navigate to System > Networks on the Horizon dashboard

1. Navigate to System > Networks on the Horizon dashboard and select +Create Network

Create Network

Currently, only local and VLAN “Provider Network Types” are supported by the Nutanix Openstack drivers. In the screenshot below, I am creating a segmented network (ID 64), named public-network, in the default admin tenant. I specify the network as shared and external.

Pro Tip


Do not use a VLAN/network assignment that has already been defined within the Nutanix cluster. Any network/subnet assignment should be done within Openstack using network parameters reserved specifically for your Openstack deployments.


 

create-network

2. Add your network details – Name, Project (tenant), Network Type, VLAN ID, etc

Create Subnet

Each network needs to have a subnet created with an associated DHCP pool. This DHCP pool information gets sent via the appropriate API call to Acropolis. Acropolis management associates the IP address with the vnic on the Acropolis VM. The Acropolis Openstack driver reads this configuration and, when the cloud instance gets powered on in Openstack, it will register the IP address with the Openstack VM. See setup screenshots below…

Pro Tip

When creating a subnet, you must specify a DNS server.


 

create-subnet

subnet-details

3. Subnet creation – requires subnet name,  network address (CIDR notation), gateway address, DHCP pool range, DNS servers

We can see the newly created network reflected in Acropolis via the Prism GUI in the screenshot below:

prism-network

 

Pro Tip

Once a network has been configured and you decide to add an additional cluster. That network will not be extended across the new cluster. You have a choice, you can either add a new network. Or, you can remove the network and re-add it so that it gets created across all the currently configured clusters.


network-topology

Now that we have a network configured we can look at setting up cloud instances to run on it. To do that we need to set up the Glance Image Service and that’s the subject of my next post.

Additional reading

http://www.ibm.com/developerworks/cloud/library/cl-openstack-neutron/

http://docs.openstack.org/kilo/install-guide/install/apt/content/neutron-concepts.html

10 thoughts on “Openstack + Nutanix : Neutron Networking

  1. Andrey

    Hi,
    I tried to do the same thing and successfully created VLAN external network. Unfortunately, when creating subnet, I get the error im the neutron/server.log

    2016-04-14 10:46:49.157 4675 ERROR neutron.plugins.ml2.managers [req-08a4347b-f292-48b3-b30b-269b2da8f177 ] Mechanism driver ‘acropolis’ failed in create_subnet_postcommit
    2016-04-14 10:46:49.157 4675 TRACE neutron.plugins.ml2.managers Traceback (most recent call last):
    2016-04-14 10:46:49.157 4675 TRACE neutron.plugins.ml2.managers File “/usr/lib/python2.7/site-packages/neutron/plugins/ml2/managers.py”, line 327, in _call_on_drivers
    2016-04-14 10:46:49.157 4675 TRACE neutron.plugins.ml2.managers getattr(driver.obj, method_name)(context)
    2016-04-14 10:46:49.157 4675 TRACE neutron.plugins.ml2.managers File “/usr/lib/python2.7/site-packages/nutanix_openstack/neutron/driver.py”, line 353, in create_subnet_postcommit
    2016-04-14 10:46:49.157 4675 TRACE neutron.plugins.ml2.managers raise ml2_exc.MechanismDriverError()
    2016-04-14 10:46:49.157 4675 TRACE neutron.plugins.ml2.managers MechanismDriverError: %(method)s failed.
    2016-04-14 10:46:49.157 4675 TRACE neutron.plugins.ml2.managers
    2016-04-14 10:46:49.158 4675 ERROR neutron.plugins.ml2.plugin [req-08a4347b-f292-48b3-b30b-269b2da8f177 ] mechanism_manager.create_subnet_postcommit failed, deleting subnet ‘78259ccb-8989-49ac-a448-6248a0e3276d’
    2016-04-14 10:46:49.230 4675 ERROR neutron.api.v2.resource [req-08a4347b-f292-48b3-b30b-269b2da8f177 ] create failed
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource Traceback (most recent call last):
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource File “/usr/lib/python2.7/site-packages/neutron/api/v2/resource.py”, line 83, in resource
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource result = method(request=request, **args)
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource File “/usr/lib/python2.7/site-packages/neutron/api/v2/base.py”, line 461, in create
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource obj = obj_creator(request.context, **kwargs)
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource File “/usr/lib/python2.7/site-packages/neutron/plugins/ml2/plugin.py”, line 805, in create_subnet
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource self.delete_subnet(context, result[‘id’])
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource File “/usr/lib/python2.7/site-packages/oslo_utils/excutils.py”, line 85, in __exit__
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource File “/usr/lib/python2.7/site-packages/neutron/plugins/ml2/plugin.py”, line 800, in create_subnet
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource self.mechanism_manager.create_subnet_postcommit(mech_context)
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource File “/usr/lib/python2.7/site-packages/neutron/plugins/ml2/managers.py”, line 452, in create_subnet_postcommit
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource self._call_on_drivers(“create_subnet_postcommit”, context)
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource File “/usr/lib/python2.7/site-packages/neutron/plugins/ml2/managers.py”, line 338, in _call_on_drivers
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource method=method_name
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource MechanismDriverError: create_subnet_postcommit failed.
    2016-04-14 10:46:49.230 4675 TRACE neutron.api.v2.resource

    Im running NOS 4.6.0.1Have you experienced such issue?

    1. Ray Hassan Post author

      Hi Andrey

      Can you please confirm that none of your Openstack/Neutron network parameters are already in use in Acropolis. The VLAN ID and the IP range you assign to the subnet must be first configured within Openstack only. All configuration must be done in Openstack – do not manipulate anything created via Openstack via Acropolis/Prism (and vice versa).

      Hope that helps
      ray

  2. Andrey

    Dear Ray,
    Thank you so much as this is it! I tried to configure the managed VLAN network which already exists in acropolis. Once I changed that, the subnet has been created with no errors

    Thanks a lot!!

    1. Ray Hassan Post author

      Hi Andrey

      Glad I could help – let us know how it all goes, would love to hear suggestions on what we can do to improve the integration stack?

      Thanks
      ray

  3. Andrey

    Hi Ray,
    With pleasure.
    As for now, I have found out some minor problems with OVM and generally with Acropolis:
    1) With default settings, it creates eth0 interface which is managed by NetworkManager. To fix that, u need to add HWADDR and UUID fields to network/ifcfg-eth0 file and then restart NetworkManager service.
    2) ovmctl does not let you specify more than one DNS server when creating ovm
    3) Sometimes openstack-dashboard return “Something went wrong” error with default configuration. To avoid that, you should to restart you browser – this happens both with Chrome and Mozilla
    4) In 4.6.0.1 Acropolis, there is an issue when u are trying to add multiple DNS server in managed network settings. It just returns an error “Invalid data input”. As a workaround, u can do that with acli with net.update command.
    5) In 4.6.0.1 Acropolis, if u rename container using ncli, adding CIDR to filesystem whitelist will not work properly. Technically, it will ignore that renamed container and add access for others (which were not renamed). As a workaround, u need to manually add whitelist CIDR’s in ncli.
    6) In 4.6.0.1 Acropolis, uploading huge (more than 10GB files) files from local storage to image store will no work properly. It will start uploading and fail is several minutes. As a workaround, u can use URL upload.

    1. Ray Hassan Post author

      Hi Andrey – Thanks for taking the time to write this information up. Much appreciated.

      1 & 2) I will feed back the info to the team responsible
      3) This is a known Openstack issue regarding how it handles (or doesnt) cookies. Solution is to either delete cookies related to the OVM IP or restart browser as you suggest
      4) Not sure I understand what you are trying to do (it may be that this is working as designed, renaming containers while they are mounted as datastores is a bad idea) – can you open a case with Nutanix Support for them to look into this with you please?
      5) this is bug ENG-47946, the fix is due to be released as part of AOS 4.6.1.
      6) I would need more info to help with this – can you open another case with Support so they can assist you further.

      Thanks again for the excellent feedback
      Ray

  4. Brian

    I can create a vlan provider network, but when I create a local tenant network and router, I cant ping the router, which means my tenant instances cant reach the internet.

    I can attach the provider network directly to an instance, but this is not acceptable as users will want to create their own tenant networks in their projects.

    Any ideas?

  5. Brian

    Disregard, I just saw the “provider network types” part. Any idea if tenant networks will be supported?

    “Currently, only local and VLAN “Provider Network Types” are supported by the Nutanix Openstack drivers. In the screenshot below, I am creating a segmented network (ID 64), named public-network, in the default admin tenant. I specify the network as shared and external.”

    1. Ray Hassan Post author

      Hi Brian

      I opened bug ENG-53290 to track this internally with our dev teams. Tenant networks may well be planned for a future release but if you require this feature earlier than we would plan for it, then please speak to your Nutanix sales account team.

      Thanks
      ray

Comments are closed.