VLAN aware VMs

Registered by Erik Moe

This blueprint proposes how to incorporate VLAN aware VM:s into OpenStack. In this document a VLAN aware VM is a VM that sends and receives VLAN tagged frames over its vNIC.

Blueprint information

Armando Migliaccio
Bence Romsics
Rossella Sblendido
Series goal:
Accepted for newton
Milestone target:
milestone icon newton-rc1
Started by
Armando Migliaccio
Completed by
Armando Migliaccio

Related branches



Sep-12-2016(armax): virtually complete, a few gaps still to fill. Optimistically marking complete.

Aug-19-2016(russellb): networking-ovn is working on a driver for this API.


July-25-2016(armax): for more details look at work items window. Current snapshot:


Biggest bulk missing - agent side/server integration.

July-5-2016(armax): patches moving along the Gerrit pipeline, more details in Work Items section below.

Apr-20-2016(armax): retargeted, swapped primary assignee and approver. Need nova side taken care of (e.g. for publishing information through metadata server).

Apr-4-2016(armax): Needs new assignee. Will have to assess other resources to bring this to completion.

Mar-3-2106(armax): Moved to Newton. Please ensure you re-submit spec if necessary.

Feb-23-2016(armax): patches started popping up during the month of Feb. This is still most certainly unable to complete in time for Mitaka, but depending on review bandwidth, we can at least address glaring issues. Code available below.


Feb-09-2016(armax): coding has not yet started. It's unlikely something of this critical mass can make Mitaka. To be resubmitted for Newton.

Jan-18-2016(armax): no major code nor documentation as of today. Chances of getting in Mitaka are getting slim.

Dec-15-2015(armax): latest spec revision is https://review.openstack.org/#/c/243786/, code patches need to be rebooted. There's a dependency on nova.

September-14 (mestery): All patches are WIP and the RC is next week. Thus, this is out of Liberty and hopefully will make Mitaka.

September-8 (mestery): Needs some really beefy reviews this week, we'll re-evaluate at the 9-14 Neutron meeting. Likely moving to Mitaka.

Sept-1-2015(armax): Pushing to L-RC1 - late submission of code patches, and gate issues are a bad combination.

Gerrit topic: https://review.openstack.org/#q,topic:bp/vlan-aware-vms,n,z

Addressed by: https://review.openstack.org/343816
    Pass bridge_name in OVS port's vif_details

Addressed by: https://review.openstack.org/335536
    TrunkManager for the OVS agent

Addressed by: https://review.openstack.org/347466
    OVSDBHandler for trunk ports

Addressed by: https://review.openstack.org/341212
    Add notifications for trunk CRUD and standardize payload

Addressed by: https://review.openstack.org/347662
    WIP Add openvswitch driver and callback handlers

Addressed by: https://review.openstack.org/348476
    Introduce bulk push to rpc callback mechanism

Addressed by: https://review.openstack.org/346377
    [WIP]: Implementation of vlan-aware-vms for linux bridge.

Addressed by: https://review.openstack.org/349274
    Add linux bridge trunk server side driver

Addressed by: https://review.openstack.org/349275
    Port device events for common agent

Addressed by: https://review.openstack.org/349990
    WIP: ovs-agent: Seperate VLAN mapping outside of the agent

Addressed by: https://review.openstack.org/350298
    Introduce state management for trunk resources

Addressed by: https://review.openstack.org/350780
    Add scaffolding for trunk plugin/server-side driver integration

Addressed by: https://review.openstack.org/350784
    Add agent-side driver scaffolding for trunk functionality

Gerrit topic: https://review.openstack.org/#q,topic:bp/adopt-oslo-versioned-objects-for-db,n,z

Addressed by: https://review.openstack.org/350991
    objects: rename tenant_id field to project_id for trunks

Addressed by: https://review.openstack.org/351375
    Allow bound ports to be trunked if the driver can support it

Gerrit topic: https://review.openstack.org/#q,topic:vlan-aware-vms,n,z

Addressed by: https://review.openstack.org/353086
    Relax bound constraint for trunk parent ports

Gerrit topic: https://review.openstack.org/#q,topic:bp/vlan-aware-vms1,n,z

Addressed by: https://review.openstack.org/355245
    ovs_lib add a new methods to add attributs to ports

Addressed by: https://review.openstack.org/356127
    Revisit support for trunk segmentation types

Addressed by: https://review.openstack.org/356134
    [WIP] Implement state management for trunks

Addressed by: https://review.openstack.org/359399
    functional: Make trunk tests more robust

Addressed by: https://review.openstack.org/360115
    Make OVS and LinuxBridge trunk drivers' is_loaded() property more robust

Addressed by: https://review.openstack.org/360089
    Add release note for trunk extension

Addressed by: https://review.openstack.org/361481
    [WIP] Set trunk status to DOWN when parent port is unbound

Addressed by: https://review.openstack.org/362612
    Expose description attribute on trunk API

Addressed by: https://review.openstack.org/362636
    Expose timestamp attributes on trunk API

Addressed by: https://review.openstack.org/363151
    api: Test trunk API without optional attributes

Addressed by: https://review.openstack.org/363798
    trunk: Handle subports notification in ovs agent side

Addressed by: https://review.openstack.org/362917
    Check MTU sanity of trunk port subports

Addressed by: https://review.openstack.org/364208
    API tests: Check MTU sanity of trunk/subport

Addressed by: https://review.openstack.org/365176
    Add resync mechanism for trunks

Addressed by: https://review.openstack.org/365184
    Expose revision_number to trunk API

Addressed by: https://review.openstack.org/365459
    Trunk: remove database transactions from the plugin

Addressed by: https://review.openstack.org/366571
    [WIP] Resync handler for trunks

Addressed by: https://review.openstack.org/366871
    Be more clear about DOWN_STATUS for trunk resources

Addressed by: https://review.openstack.org/367011
    Provide a property to access the integration bridge for OVS

Addressed by: https://review.openstack.org/368162
    Fix misnomer in _set_trunk_metadata

Addressed by: https://review.openstack.org/368182
    Skip can_be_trunked validation for subports

Addressed by: https://review.openstack.org/368247
    Move 'get_tap_device_name' to utils module

Addressed by: https://review.openstack.org/368248
    Add Trunk Plumber module for Linux Bridge

Addressed by: https://review.openstack.org/368289
    Set device_owner for trunk subports

Addressed by: https://review.openstack.org/368691
    ovsdb-handler: Follow up patch

Addressed by: https://review.openstack.org/368709
    Catch RPC errors in trunk skeleton

Addressed by: https://review.openstack.org/368882
    trunk: Remove ovs constants from trunk utils module

Addressed by: https://review.openstack.org/369001
    [WIP] fullstack: VLAN aware VMs test

Addressed by: https://review.openstack.org/370543
    Stop olso_messaging from error logging CallbackNotFound

Addressed by: https://review.openstack.org/370551
    Don't warn in VLAN Plumber on tagless children

Addressed by: https://review.openstack.org/372592
    Don't warn in VLAN Plumber on tagless children

Gerrit topic: https://review.openstack.org/#q,topic:bug/1626010,n,z

Addressed by: https://review.openstack.org/374388
    Add MAC address to subports in trunk_details

Addressed by: https://review.openstack.org/375484
    trunk: Log RPC communication

Addressed by: https://review.openstack.org/375885
    Add MAC address to subports in trunk_details

Addressed by: https://review.openstack.org/376023
    Handle add/remove subports events loss due to agent failures

Addressed by: https://review.openstack.org/378081
    Fix misleading error trace in trunk fullstack life cycle test

Addressed by: https://review.openstack.org/382624
    Add required extension to trunk_details descriptor

Addressed by: https://review.openstack.org/383979
    Fix misleading error trace in trunk fullstack life cycle test

Addressed by: https://review.openstack.org/383980
    Add required extension to trunk_details descriptor

Addressed by: https://review.openstack.org/419028
    Revert "Set device_owner for trunk subports"


Work Items

Work items:
Spec (https://review.openstack.org/#/c/308521/): DONE
Server side - DB Models Models (https://review.openstack.org/#/c/279251/): DONE
Server side - DB OVO (https://review.openstack.org/#/c/310410/): DONE
Server side - API (https://review.openstack.org/#/c/320092/): DONE
Server side - Service Plugin (https://review.openstack.org/#/c/320092/): DONE
Server side - RPC (https://review.openstack.org/#/c/347662/): DONE
Server side - Trunk business rules (https://review.openstack.org/#/c/345015/): DONE
Server-side - State machine (https://review.openstack.org/#/c/350298/): DONE
Client side - neutronclient (https://review.openstack.org/#/c/340624/): DONE
Agent side OVS - Design strategies (https://review.openstack.org/#/c/273954/): DONE
Agent side OVS - Implementation details (https://review.openstack.org/#/c/318317/): DONE
Agent side OVS - Data plane implementation (https://review.openstack.org/#/c/335536/): DONE
Agent side OVS - Handling OVSDB events (https://review.openstack.org/#/c/347466/): DONE
Agent side LINUX Bridge - (https://review.openstack.org/#/c/346377/): DONE
Other project support - Nova/os-vif (https://review.openstack.org/#/c/330818/): DONE
Horizon support (optional): TODO
Documentation (https://review.openstack.org/#/c/361776/): INPROGRESS

Dependency tree

* Blueprints in grey have been implemented.