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     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to