← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1589400] [NEW] In func tunnel_sync flood flows were added many times leading to slow start

 

Public bug reported:

When start ovs-agent, func tunnel_sync will call _setup_tunnel_port when l2_pop is not enabled.
For each tunnel _setup_tunnel_port will be called once, every call will add flood flows to br-tun. But one time call is enough.

    def tunnel_sync(self):
        LOG.debug("Configuring tunnel endpoints to other OVS agents")

        try:
            for tunnel_type in self.tunnel_types:
                details = self.plugin_rpc.tunnel_sync(self.context,
                                                      self.local_ip,
                                                      tunnel_type,
                                                      self.conf.host)
                if not self.l2_pop:
                    tunnels = details['tunnels']
                    for tunnel in tunnels:
                        if self.local_ip != tunnel['ip_address']:
                            remote_ip = tunnel['ip_address']
                            tun_name = self.get_tunnel_name(
                                tunnel_type, self.local_ip, remote_ip)
                            if tun_name is None:
                                continue
                            self._setup_tunnel_port(self.tun_br,
                                                    tun_name,
                                                    tunnel['ip_address'],
                                                    tunnel_type)

In _setup_tunnel_port, this code add flood flows:
        if ofports and not self.l2_pop:
            # Update flooding flows to include the new tunnel
            for vlan_mapping in list(self.local_vlan_map.values()):
                if vlan_mapping.network_type == tunnel_type:
                    br.install_flood_to_tun(vlan_mapping.vlan,
                                            vlan_mapping.segmentation_id,
                                            ofports)

** Affects: neutron
     Importance: Undecided
     Assignee: yujie (16189455-d)
         Status: New

** Changed in: neutron
     Assignee: (unassigned) => yujie (16189455-d)

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

Title:
  In func tunnel_sync flood flows were added many times leading to slow
  start

Status in neutron:
  New

Bug description:
  When start ovs-agent, func tunnel_sync will call _setup_tunnel_port when l2_pop is not enabled.
  For each tunnel _setup_tunnel_port will be called once, every call will add flood flows to br-tun. But one time call is enough.

      def tunnel_sync(self):
          LOG.debug("Configuring tunnel endpoints to other OVS agents")

          try:
              for tunnel_type in self.tunnel_types:
                  details = self.plugin_rpc.tunnel_sync(self.context,
                                                        self.local_ip,
                                                        tunnel_type,
                                                        self.conf.host)
                  if not self.l2_pop:
                      tunnels = details['tunnels']
                      for tunnel in tunnels:
                          if self.local_ip != tunnel['ip_address']:
                              remote_ip = tunnel['ip_address']
                              tun_name = self.get_tunnel_name(
                                  tunnel_type, self.local_ip, remote_ip)
                              if tun_name is None:
                                  continue
                              self._setup_tunnel_port(self.tun_br,
                                                      tun_name,
                                                      tunnel['ip_address'],
                                                      tunnel_type)

  In _setup_tunnel_port, this code add flood flows:
          if ofports and not self.l2_pop:
              # Update flooding flows to include the new tunnel
              for vlan_mapping in list(self.local_vlan_map.values()):
                  if vlan_mapping.network_type == tunnel_type:
                      br.install_flood_to_tun(vlan_mapping.vlan,
                                              vlan_mapping.segmentation_id,
                                              ofports)

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


Follow ups