Huawei-Neutron

= Huawei ML2 Mechanism Driver = --

Overview
Huawei ML2 mechanism driver works with Huawei SDN controller.

Introduction

 * HW-SDN MD : Huawei SDN Mechanism Driver
 * HW-SDN CR : Huawei SDN Controller

Huawei SDN controller enables network automation and provision to simplify virtual machine deployments and move on a larger layer 2 network. When a cloud administrator provisions VMs, instances of network flow rules are automatically created and applied to the OpenvSwitch(OVS) which hosted on each compute node. As VMs move across the compute nodes, the network flow rules are automatically applied to each OVS.

Huawei SDN controller requires information of OpenStack Neutron based networks and ports to manage virtual network appliances and OVS flow rules.

In order to recieve such information from neutron service, a new ML2 mechanism driver is needed to post the _postcommit data to Huawei SDN controller.

The following sections describe the proposed changes in Neutron, a new ML2 mechanism driver, and make it possible to use OpenStack in Huawei SDN topology. The following diagram depicts the OpenStack deployment in Huawei SDN topology.

Huawei SDN Topology::

+---+             ++  |                       |              |                |  |     OpenStack         |              |                | |    Controller        |              |                | |    Node              |              |                | |                      |              |                |  | +-+              |   Huawei SDN   | | |Huawei SDN mechanism | REST API    |   controller   | | |driver              |--|                | | |                    |              |                |  +-++-+--+              +--+--+--+             |     |                        |          |             |     |                        |          |             |     +--+         |          |             |                    |         |          |  +--+-+      +---+-+--+   |  |                    |      |                    |   |  |      OVS           |      |      OVS           |   | ++ ++   |  | OpenStack compute  |      | OpenStack compute  |   | | node 1            |      | node n             |   | +--+-+     ++   |             |                                         |             |                                         |             +-+

As shown in the diagram above, each OpenStack compute node is connected to Huawei SDN controller, which is responsible for provisioning, monitoring and troubleshooting of cloud network infrastructures. The Neutron API requests will be proxied to SDN controller, then network topology information can be built. When a VM instance starts to communicate with another, the first packet will be pushed to Huawei SDN controller by OVS, then the flow rules will be calculated and applied to related compute nodes by SDN controller. Finally, OVS follows the rules to forward packets to the destination instance.

How does Huawei SDN Mechanism Driver work?
Huawei Mechanism driver handles the following postcommit operations.

Network create/update/delete Subnet create/update/delete Port   create/delete

Supported network types include vlan and vxlan.

Huawei SDN mechanism driver handles VM port binding within the mechanism driver.

'bind_port' function verifies the supported network types (vlan, vxlan) and calls context.set_binding with binding details.

Huawei SDN Controller manages the flows required on OVS, so we don't have an extra agent.

Sequence flow of events for create_network is as follow:



create_network {  neutron    ->  ML2_plugin ML2_plugin -> HW-SDN-MD HW-SDN-MD ->  HW-SDN-CR HW-SDN-MD <-- HW-SDN-CR ML2_plugin <-- HW-SDN-MD neutron   <-- ML2_plugin }

Port binding task is handled within the mechanism driver, So OVS mechanism driver is not required when this mechanism driver is enabled.

How to use Huawei SDN Mechanism Driver?
1. Add new configuration options for SDN controller, which are ip address and credentials.

Update /etc/neutron/plugins/ml2/ml2_conf_huawei.ini, as follow:



[ml2_Huawei] nos_host = 128.100.1.7 nos_port = 8080 nos_username = admin nos_password = my_password

2. Configure parameters of section ml2_type_vxlan in ml2_conf.ini, setting vni_ranges for vxlan network segment ids and vxlan_group for multicast.

Update /etc/neutron/plugins/ml2/ml2_conf.ini, as follow:



[ml2_type_vxlan] vni_ranges = 1001:2000 vxlan_group = 239.1.1.1