← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1949967] [NEW] [OVN] OVN mech driver does not map new segments

 

Public bug reported:

Related LP bug: https://bugs.launchpad.net/neutron/+bug/1865889
Related bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2013820

This bug is related to OVN backend. "segments" service plugin must be
enabled.

When a new segment is created (for example when a network is created),
if this segment is associated to a physnet (flat and vlan type networks)
and there is an L2 agent is running on a host with this physnet, a new
"SegmentHostMappings" register is created. This segment links this new
segment with the host. That means we link a segment with a host when (1)
a physnet is mapped in a host and (2) a L2 agent is deployed in this
host (and informs about it).

In OVN the physnet <-> host mapping is done using the OVS DB [1]:
$ ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-provider

When an OVS DB is updated, the corresponding OVN SB chassis register is
updated. This event is captured in Neutron. Neutron retrieves the
current segments associated to the configured physnets (in the example
"provider") and filters by network type (flat and vlan only). If any of
those segments has no "SegmentHostMappings", a new register is created.

However when a new segment is created, OVN mech driver does not
correctly check if this segment is located in an agent [2]. Because OVN
mech driver has no "agent_type", this method never maps the new created
segment with a host.

As reported in the bugzilla #2013820, OVN can be deployed with DHCP
agents (for baremetal servers with Ironic). When a new network (and the
corresponding segment) is created and a new subnet is added to this
network, the DHCP agent receives this update. But Neutron server [3]
reports this subnet as "non_local_subnets" because there is no mapping
between this segment and the DHCP host. Because of this, the DHCP
deletes/do not create the DHCP namespace and the DHCP port.


[1]https://docs.openstack.org/networking-ovn/2.0.1/refarch/provider-networks.html
[2]https://github.com/openstack/neutron/blob/f97baa0b16687453735e46e7a0f73fe03d7d4db7/neutron/plugins/ml2/plugin.py#L2351-L2357
[3]https://github.com/openstack/neutron/blob/9241c76b04e6745cc648ee42037cfe6ddad3600a/neutron/api/rpc/handlers/dhcp_rpc.py#L210-L257

** Affects: neutron
     Importance: Undecided
     Assignee: Rodolfo Alonso (rodolfo-alonso-hernandez)
         Status: New


** Tags: ovn

** Changed in: neutron
     Assignee: (unassigned) => Rodolfo Alonso (rodolfo-alonso-hernandez)

** Tags added: ovn

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1949967

Title:
  [OVN] OVN mech driver does not map new segments

Status in neutron:
  New

Bug description:
  Related LP bug: https://bugs.launchpad.net/neutron/+bug/1865889
  Related bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2013820

  This bug is related to OVN backend. "segments" service plugin must be
  enabled.

  When a new segment is created (for example when a network is created),
  if this segment is associated to a physnet (flat and vlan type
  networks) and there is an L2 agent is running on a host with this
  physnet, a new "SegmentHostMappings" register is created. This segment
  links this new segment with the host. That means we link a segment
  with a host when (1) a physnet is mapped in a host and (2) a L2 agent
  is deployed in this host (and informs about it).

  In OVN the physnet <-> host mapping is done using the OVS DB [1]:
  $ ovs-vsctl set open . external-ids:ovn-bridge-mappings=provider:br-provider

  When an OVS DB is updated, the corresponding OVN SB chassis register
  is updated. This event is captured in Neutron. Neutron retrieves the
  current segments associated to the configured physnets (in the example
  "provider") and filters by network type (flat and vlan only). If any
  of those segments has no "SegmentHostMappings", a new register is
  created.

  However when a new segment is created, OVN mech driver does not
  correctly check if this segment is located in an agent [2]. Because
  OVN mech driver has no "agent_type", this method never maps the new
  created segment with a host.

  As reported in the bugzilla #2013820, OVN can be deployed with DHCP
  agents (for baremetal servers with Ironic). When a new network (and
  the corresponding segment) is created and a new subnet is added to
  this network, the DHCP agent receives this update. But Neutron server
  [3] reports this subnet as "non_local_subnets" because there is no
  mapping between this segment and the DHCP host. Because of this, the
  DHCP deletes/do not create the DHCP namespace and the DHCP port.

  
  [1]https://docs.openstack.org/networking-ovn/2.0.1/refarch/provider-networks.html
  [2]https://github.com/openstack/neutron/blob/f97baa0b16687453735e46e7a0f73fe03d7d4db7/neutron/plugins/ml2/plugin.py#L2351-L2357
  [3]https://github.com/openstack/neutron/blob/9241c76b04e6745cc648ee42037cfe6ddad3600a/neutron/api/rpc/handlers/dhcp_rpc.py#L210-L257

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1949967/+subscriptions



Follow ups