[RFE] Advance configuration of SR-IOV ports- api extension

Bug #1662650 reported by Trevor McCasland
24
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Invalid
Wishlist
Trevor McCasland

Bug Description

The need to configure and manage virtual functions (VFs) on a NIC in order to apply policy has grown to the point that we have implemented a small, DPDK based, tool to do so. The tool, VFd
(Virtual Function daemon), allows users to configure VFs using a per VF description provided by an external source (e.g. a virtualization manager such as Openstack).

We would like to exercise the use case described here[1]
“Software Defined Network (SDN) trends are demanding fast host-based packet handling. In a virtualization environment, the DPDK VF PMD driver performs the same throughput result as a non-VT native environment.
With such host instance fast packet processing, lots of services such as filtering, QoS, DPI can be offloaded on the host fast path.”

The following has been identified to be offloaded into the host fast path:
VLAN_FILTER – Filters traffic based on a list of VLAN ID(s), this filter is applied on SR-IOV VF before passing the traffic to VM.
VLAN_STRIP – Enable to strip outer VLAN tag per VF
INSERT_STAG – Enable to Insert outer VLAN tag per VF
BROADCAST_ALLOW – Enable to allow broadcast per VF
UNKNOWN_UNICAST_ALLOW – Enable to allow unicast per VF
UNKNOWN_MULTICAST_ALLOW – Enable to allow multicast per VF
MAC_FILTER – Directs outbound traffic based on a list of MAC address. This will allow a VM to transmit packets with specified source MAC address in addition to MAC which belongs to VM.
VLAN_ANTI_SPOOF_CHECK – Enable to ensure anti MAC spoof checks are done at the SR-IOV VF level to comply with security.

Some API extension is needed for the user to pass the VF configuration.
The extensions for per VF configuration are suggested to go into any of the following:
1. The port’s profile:binding field
2. The port’s profile:vif_details
3. A new vf_policy object to manage vf_policies, where vf_policy_id is an attached synthetic field on port, see [2]
4. Distribute properties across neutron
     a. VLAN_STRIP and INSERT_STAG, are added as network attributes
     b. BROADCAST, UNICAST, MULTICAST, are added into security groups [3]
     c. VLAN_FILTER, MAC_FILTER, and VLAN_ANTI_SPOOF_CHECK are TBD perhaps added as an extension of port-security (if it doesn’t exist already)

Using the existing SR-IOV agent we can configure virtual functions to use a tool called IPLEX[4] to interface with VFd[5] to complete the requested operations.

VFd was added as experimental in the DPDK Release 17.02[6]

[1] http://dpdk.readthedocs.io/en/latest/nics/intel_vf.html#dpdk-sr-iov-pmd-pf-vf-driver-usage-model
[2] https://review.openstack.org/#/c/453904/
[3] https://review.openstack.org/#/c/455445/
[4] https://github.com/att/vfd/blob/master/src/system/iplex
[5] https://github.com/att/vfd/wiki
[6] http://dpdk.org/doc/guides/rel_notes/release_17_02.html

description: updated
tags: added: sriov-pci-pt
summary: - [RFE] Accelerating SR-IOV with DPDK
+ [RFE] Advance configuration of SR-IOV ports- api extension
description: updated
description: updated
description: updated
description: updated
Munish (mm6021)
description: updated
description: updated
Munish (mm6021)
description: updated
description: updated
Changed in neutron:
importance: Undecided → Wishlist
description: updated
description: updated
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (master)

Fix proposed to branch: master
Review: https://review.openstack.org/453904

Changed in neutron:
assignee: nobody → Trevor McCasland (twm2016)
status: New → In Progress
Changed in neutron:
status: In Progress → New
Changed in neutron:
status: New → Triaged
Munish (mm6021)
description: updated
Revision history for this message
Trevor McCasland (twm2016) wrote :

Here is what I put together for what I think best fits what is being asked here.

I was not able to confirm if all of the following are compatible with SR-IOV and DPDK combined, kernel space vs user space issues (because that is what VFd solves (I think)). We are trying to activate the hardware (currently works on the intel Niantic NIC) to do these operations for us, rather than relying on the software below.

VF Agent Feature | Neutron Equivalent Functionality
==================================================
VLAN_FILTER | OVS Firewall [1]
VLAN_STRIP | vlan transparency [2]
INSERT_STAG | OVS does this already. [3]
BROADCAST_ALLOW | traffic protection [4]
UNKNOWN_UNICAST_ALLOW | traffic protection [4]
UNKNOWN_MULTICAST_ALLOW | traffic protetion [4]
MAC_FILTER | allowed address pairs [5]
VLAN_ANTI_SPOOF_CHECK | port security [6]

[1] https://docs.openstack.org/developer/neutron/devref/openvswitch_firewall.html
[2] http://specs.openstack.org/openstack/neutron-specs/specs/kilo/nfv-vlan-trunks.html
[3] https://docs.openstack.org/developer/neutron/devref/openvswitch_agent.html#implementation-trunk-bridge-option-c
[4] https://wiki.openstack.org/wiki/Neutron/TrafficProtection
[5] http://specs.openstack.org/openstack/neutron-specs/specs/api/allowed_address_pairs.html
[6] http://specs.openstack.org/openstack/neutron-specs/specs/kilo/ml2-ovs-portsecurity.html

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/455445

Revision history for this message
Trevor McCasland (twm2016) wrote :

The related fix proposed above is for adding the broadcast, multicast, unicast fields to secgroups

description: updated
description: updated
Revision history for this message
Kevin Benton (kevinbenton) wrote :

Split into other RFEs:

https://bugs.launchpad.net/neutron/+bug/1690937
Launchpad bug 1690937 in neutron "[RFE] Support allowed address pairs without ip address" [Wishlist,Triaged]
https://bugs.launchpad.net/neutron/+bug/1690921
Launchpad bug 1690921 in neutron "[RFE] Manage Broadcast, Unicast, and Multicast traffic" [Wishlist,Triaged]

Changed in neutron:
status: Triaged → Invalid
tags: removed: rfe sriov-pci-pt
Revision history for this message
Trevor McCasland (twm2016) wrote :

split into two more

https://bugs.launchpad.net/tap-as-a-service/+bug/1693248
[RFE] Mirror VF Ports
and
https://bugs.launchpad.net/neutron/+bug/1693240
[RFE] Support SRIOV VF VLAN Filtering

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on neutron (master)

Change abandoned by Trevor McCasland (<email address hidden>) on branch: master
Review: https://review.openstack.org/455445

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Change abandoned by Trevor McCasland (<email address hidden>) on branch: master
Review: https://review.openstack.org/453904

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.