Public bug reported: The routed-networks feature introduced changes to create mapping entries linking hosts to segments [1]. That feature assumes that only a single L2 agent will be reporting device mappings to physical networks. If multiple agents are running (e.g., OVS + SRIOV) then the "segmenthostmappings" tuples which are created by a first agent reporting state are overwritten when subsequent agents report state.
The segments data model and agent update callbacks [2] do not handle cases where multiple L2 agents are present on a node. 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:physical_network=physnet1, and then another network with provider:physical_network=physnet0. Those networks will each create a NetworkSegment entry. Then restart the OVS agent. This will cause the segmenthostmappings table to be overwritten with only those segments accessible via the OVS agent. Then restart the SRIOV agent. This will cause the segmenthostmappings table to be overwritten with only those segments accessible via the SRIOV agent. This impacts the scheduling of DHCP networks and IP address allocations for networks that have routed segments enabled. [1] https://git.openstack.org/cgit/openstack/neutron/commit/?id=3d3f0595ebb3a20949d52b7226a2d4551f0eaf6d [2] neutron.services.segments.db._update_segment_host_mapping_for_agent ** Affects: neutron Importance: Undecided Status: New ** Description changed: The routed-networks feature introduced changes to create mapping entries linking hosts to segments [1]. That feature assumes that only a single L2 agent will be reporting device mappings to physical networks. If multiple agents are running (e.g., OVS + SRIOV) then the - "segmenthostmappings" tuples which are creating by a first agent + "segmenthostmappings" tuples which are created by a first agent reporting state are overwritten when subsequent agents report state. - The segments data model and agent update callbacks [2] do handle cases - where multiple L2 agents are present on a node. + The segments data model and agent update callbacks [2] do not handle + cases where multiple L2 agents are present on a node. 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:physical_network=physnet1, and then another network with provider:physical_network=physnet0. Those networks will each create a NetworkSegment entry. Then restart the OVS agent. This will cause the segmenthostmappings table to be overwritten with only those segments accessible via the OVS agent. Then restart the SRIOV agent. This will cause the segmenthostmappings table to be overwritten with only those segments accessible via the SRIOV agent. This impacts the scheduling of DHCP networks and IP address allocations for networks that have routed segments enabled. [1] https://git.openstack.org/cgit/openstack/neutron/commit/?id=3d3f0595ebb3a20949d52b7226a2d4551f0eaf6d [2] neutron.services.segments.db._update_segment_host_mapping_for_agent -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1732448 Title: segment host mapping table overwritten by multiple l2 agents Status in neutron: New Bug description: The routed-networks feature introduced changes to create mapping entries linking hosts to segments [1]. That feature assumes that only a single L2 agent will be reporting device mappings to physical networks. If multiple agents are running (e.g., OVS + SRIOV) then the "segmenthostmappings" tuples which are created by a first agent reporting state are overwritten when subsequent agents report state. The segments data model and agent update callbacks [2] do not handle cases where multiple L2 agents are present on a node. 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:physical_network=physnet1, and then another network with provider:physical_network=physnet0. Those networks will each create a NetworkSegment entry. Then restart the OVS agent. This will cause the segmenthostmappings table to be overwritten with only those segments accessible via the OVS agent. Then restart the SRIOV agent. This will cause the segmenthostmappings table to be overwritten with only those segments accessible via the SRIOV agent. This impacts the scheduling of DHCP networks and IP address allocations for networks that have routed segments enabled. [1] https://git.openstack.org/cgit/openstack/neutron/commit/?id=3d3f0595ebb3a20949d52b7226a2d4551f0eaf6d [2] neutron.services.segments.db._update_segment_host_mapping_for_agent To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1732448/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

