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

Bug #1589400 reported by yujie
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Medium
yujie

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)

yujie (16189455-d)
Changed in neutron:
assignee: nobody → yujie (16189455-d)
Changed in neutron:
importance: Undecided → Medium
status: New → Confirmed
milestone: none → newton-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (master)

Fix proposed to branch: master
Review: https://review.openstack.org/326818

Changed in neutron:
status: Confirmed → In Progress
Changed in neutron:
milestone: newton-2 → newton-3
Changed in neutron:
milestone: newton-3 → newton-rc1
Changed in neutron:
milestone: newton-rc1 → ocata-1
Changed in neutron:
milestone: ocata-1 → ocata-2
Changed in neutron:
milestone: ocata-2 → ocata-3
Changed in neutron:
milestone: ocata-3 → ocata-rc1
tags: added: ocata-rc-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/326818
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=3a612fc870cd044e126c0f66a484e696318ae9cb
Submitter: Jenkins
Branch: master

commit 3a612fc870cd044e126c0f66a484e696318ae9cb
Author: yujie <email address hidden>
Date: Mon Sep 19 15:17:48 2016 +0800

    Improve tunnel_sync

    When start ovs-agent, method 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.

    Change-Id: I80f25edb35a89c5476f5216e151a27cbd3dcd120
    Co-Authored-By: Yan Xing an <email address hidden>
    Closes-bug: #1589400

Changed in neutron:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/ocata)

Fix proposed to branch: stable/ocata
Review: https://review.openstack.org/430053

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/ocata)

Reviewed: https://review.openstack.org/430053
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=7d04882f137417c971d40461994e835f16a42496
Submitter: Jenkins
Branch: stable/ocata

commit 7d04882f137417c971d40461994e835f16a42496
Author: yujie <email address hidden>
Date: Mon Sep 19 15:17:48 2016 +0800

    Improve tunnel_sync

    When start ovs-agent, method 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.

    Change-Id: I80f25edb35a89c5476f5216e151a27cbd3dcd120
    Co-Authored-By: Yan Xing an <email address hidden>
    Closes-bug: #1589400
    (cherry picked from commit 3a612fc870cd044e126c0f66a484e696318ae9cb)

tags: added: in-stable-ocata
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 10.0.0.0rc2

This issue was fixed in the openstack/neutron 10.0.0.0rc2 release candidate.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 11.0.0.0b1

This issue was fixed in the openstack/neutron 11.0.0.0b1 development milestone.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.