dhcp scheduled to node without l2 segment access
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Won't Fix
|
Medium
|
Unassigned |
Bug Description
In a past release a feature was introduced to make DHCP scheduling physical network aware [1]. While that commit addressed the simple case of each node only having a single L2 agent running it makes it clear in the description that it does not support cases where two L2 agents (e.g., OVS + SRIOV) exist on the same node. In such a configuration it is possible for the SRIOV mechanism driver to report that it has access to a segment while the OVS mechanism driver reports that it does not. Since the ML2 plugin [2] assumes that a host has access to a segment as long as one mechanism driver reports that it does it will cause the DHCP scheduler to create a binding on a host that potentially does not have L2 access to that segment.
We have run it to this problem in stable/newton but the most recent code in master appears to also have this same limitation.
The configuration to reproduce this is simple. Create a compute node where the OVS agent reports interface mappings to physnet0 and the SRIOV agent reports device mappings to physnet1. Then create a network with provider:
[1] https:/
[2] neutron.
This bug seems to be referenced in the commit message of that change:
"Such host filtering has some limitations if a dhcp-agent is on a host handled by multiple l2 mechanisms with one mechanism claiming network reachability but not the one handling dhcp-agent ports. Indeed the host is able to reach the network but not dhcp-agent ports! Such limitation will be handled in a follow-up change using host+vif_type filtering."
And the code in filter_ hosts_with_ segment_ access( ) has this comment:
This method returns all hosts from candidate_hosts with access to a
segment according to at least one driver.