Modular L2 Port Binding
The ml2 plugin currently returns a hard-coded value of "unbound" for the binding:vif_type port attribute. Instead, when a port needs to be bound, it should call into the registered MechanismDrivers to determine what mechanism and details will be used to bind that specific port, including the binding:vif_type value and the specific network segment to use.
MechanismDrivers for the openvswitch, linuxbridge, and hyperv agents would use the binding:host_id value from nova with the agents_db to see if their supported agent is running on that host. If so, it would would determine if a segment of the port's network can be bound by checking that agent's configuration to see if it supports the segment's network_type, and, where needed, if that host has a bridge or interface mapping for the segment's physical_network. If one MechanismDriver cannot bind, others would be tried, based on a prioritized list. MechanismDrivers for SDN controllers would also eventually participate in binding in the same way.
Before the binding:host_id has been set by nova, the binding:vif_type should have the value "unbound". If the binding:host_id has been supplied, and a valid binding cannot be created, then the binding:vif_type should have the value "binding_failed".
One open question is whether its sufficient to perform port binding each time get_port() executes, or if it should only be performed when details such as binding:host_id change, with the results cached in a database table.
Another open question, likely deferred until a future blueprint, is whether to support establishment of composite bindings. For example, a hypervisor vSwitch might be bound at the lowest level, along with a top-of-rack switch binding, and maybe a core switch binding. The port binding mechanism would need to make sure a complete and valid chain of bindings could be established.
Blueprint information
- Status:
- Complete
- Approver:
- Robert Kukura
- Priority:
- Medium
- Drafter:
- None
- Direction:
- Approved
- Assignee:
- Robert Kukura
- Definition:
- Approved
- Series goal:
- Accepted for havana
- Implementation:
- Implemented
- Milestone target:
- 2013.2
- Started by
- Robert Kukura
- Completed by
- Mark McClain
Related branches
Related bugs
Sprints
Whiteboard
8-Jul (markmcclain): Moving to H3. If code is proposed and merged before H2 cutoff will move back.
Gerrit topic: https:/
Addressed by: https:/
Implement ML2 port binding