Support SRIOV bond

Registered by zhangyanxian

In the NFV field, many scenes need L2 redundant for SR-IOV. But current
nova or neutron solutions for L2 bond is usually configured multiple
neutron ports and allocate different VFs on different physical network
adapters to implement this.
For example:

https://blueprints.launchpad.net/nova/+spec/distribute-pci-allocation
https://blueprints.launchpad.net/nova/+spec/user-controlled-sriov-ports-allocation

The two BP above all mention the demand about L2 redundant for SR-IOV. Both of
them give a solution how to allocate VFs in different PFs to meet the demand of
L2 redundant.

But these BPs have some limits in the following areas:
1. The bond port is one logic port, but both BP need to create two or more
    neutron ports in a VM. These member ports can not have same mac under
    neutron mac conflict check. So we must turn off VF spoof checking,
    otherwise, there will be some problem when the member ports switch. But
    if we turn off VF spoof checking, data traffic on VF will be overflowing,
    and it affects the performance of packets forwarding.

2. How to manage the mode of bond ports? The mode of bond can be "active-backup" or
    "balance-tcp" or "balance-slb". We need a mechanism to maintain the status
    of bond port and its members port.

3. IF we get a mechanism to maintain the mode of bond ports(PFs) on compute node, how
    to feed back the status of bond PFs to bond nics in VM.

So there should be a solution to use just one neutron port for two or more
VFs on different PFs if we need bond sriov port.

It needs to add a bond port(its mode can be "active-backup" or "balance-tcp" or "balance-slb") using SR-IOV NICs. It's just **one port** logically, but support HA. When create a VM with the bond logic port, we use two SR-IOV Virtual Functions (VFs) in two different Physical Functions (PFs).

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
zhangyanxian
Direction:
Needs approval
Assignee:
zhangyanxian
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.