Public bug reported: If we have the topology bellow in network node.
https://etherpad.openstack.org/p/neutron_transient_switching_loop The ports on switch connected to eth0 and eth1 set to trunk all VLANs. When neutron-openvswitch-agent restart, First it will set br-int bridge by self.setup_integration_br(), then set br-eth0 and br-ex by self.setup_physical_bridges(self.bridge_mappings). Before this bug (https://bugs.launchpad.net/neutron/+bug/1383674), all flows in br-int will clear when neutron-openvswitch-agent restart, this will cause the transient switching loop decribed bellow. After the bug above fixed, the flows in br-int will remain to keep the network connected if neutron-openvswitch-agent restart, but if the network node reboot, the transient switching loop will also happen as decribed bellow. In self.setup_integration_br(), A normal flow in table 0 will be added in br-int flow. In the self.setup_physical_bridges(self.bridge_mappings), Drop flow for packet coming from int-br-eth0 and int-br-ex will be added in br-int flow. This drop flows will cut the switching loop from switch to br-int. But before the drop flows added to br-int, If there is a broadcast packet coming from switch, the packet will loop bewtween switch and br-int. We should add normal flow in table 0 in br-int after the drop flows added. ** Affects: neutron Importance: Undecided Assignee: Jesse (jesse-5) Status: New ** Description changed: If we have the topology bellow in network node. - +-------------------------------------------+ - | | - | switch | - +---------+---------------------+-----------+ - | | - +------------------------------------------------------------+ - | | | | - | +----+-----+ +----+-----+ | - | | eth0 | | eth1 | | - | +--+----------+--+ +--+----------+--+ | - | | | | | | - | | br-eth0 | | br-ex | | - | +-------+--------+ +-------+--------+ | - | | | | - | | | | - | +---------+---------------------+-----------+ | - | | | | - | | br-int | | - | +-------------------------------------------+ | - | | - | | - | network node | - +------------------------------------------------------------+ + +-------------------------------------------+ + | | + | switch | + +---------+---------------------+-----------+ + | | + +------------------------------------------------------------+ + | | | | + | +----+-----+ +----+-----+ | + | | eth0 | | eth1 | | + | +--+----------+--+ +--+----------+--+ | + | | | | | | + | | br-eth0 | | br-ex | | + | +-------+--------+ +-------+--------+ | + | | | | + | | | | + | +---------+---------------------+-----------+ | + | | | | + | | br-int | | + | +-------------------------------------------+ | + | | + | | + | network node | + +------------------------------------------------------------+ The ports on switch connected to eth0 and eth1 set to trunk all VLANs. When neutron-openvswitch-agent restart, First it will set br-int bridge by self.setup_integration_br(), then set br-eth0 and br-ex by self.setup_physical_bridges(self.bridge_mappings). Before this bug (https://bugs.launchpad.net/neutron/+bug/1383674), all flows in br-int will clear when neutron-openvswitch-agent restart, this will cause the transient switching loop decribed bellow. After the bug above fixed, the flows in br-int will remain to keep the network connected if neutron-openvswitch-agent restart, but if the network node reboot, the transient switching loop will also happen as decribed bellow. In self.setup_integration_br(), A normal flow in table 0 will be added in br-int flow. In the self.setup_physical_bridges(self.bridge_mappings), Drop flow for packet coming from int-br-eth0 and int-br-ex will be added in br-int flow. This drop flows will cut the switching loop from switch to br-int. But before the drop flows added to br-int, If there is a broadcast packet coming from switch, the packet will loop bewtween switch and br-int. We should add normal flow in table 0 in br-int after the drop flows added. ** Description changed: If we have the topology bellow in network node. - - +-------------------------------------------+ - | | - | switch | - +---------+---------------------+-----------+ - | | - +------------------------------------------------------------+ - | | | | - | +----+-----+ +----+-----+ | - | | eth0 | | eth1 | | - | +--+----------+--+ +--+----------+--+ | - | | | | | | - | | br-eth0 | | br-ex | | - | +-------+--------+ +-------+--------+ | - | | | | - | | | | - | +---------+---------------------+-----------+ | - | | | | - | | br-int | | - | +-------------------------------------------+ | - | | - | | - | network node | - +------------------------------------------------------------+ + <pre> + +-------------------------------------------+ + | | + | switch | + +---------+---------------------+-----------+ + | | + +------------------------------------------------------------+ + | | | | + | +----+-----+ +----+-----+ | + | | eth0 | | eth1 | | + | +--+----------+--+ +--+----------+--+ | + | | | | | | + | | br-eth0 | | br-ex | | + | +-------+--------+ +-------+--------+ | + | | | | + | | | | + | +---------+---------------------+-----------+ | + | | | | + | | br-int | | + | +-------------------------------------------+ | + | | + | | + | network node | + +------------------------------------------------------------+ + </pre> The ports on switch connected to eth0 and eth1 set to trunk all VLANs. When neutron-openvswitch-agent restart, First it will set br-int bridge by self.setup_integration_br(), then set br-eth0 and br-ex by self.setup_physical_bridges(self.bridge_mappings). Before this bug (https://bugs.launchpad.net/neutron/+bug/1383674), all flows in br-int will clear when neutron-openvswitch-agent restart, this will cause the transient switching loop decribed bellow. After the bug above fixed, the flows in br-int will remain to keep the network connected if neutron-openvswitch-agent restart, but if the network node reboot, the transient switching loop will also happen as decribed bellow. In self.setup_integration_br(), A normal flow in table 0 will be added in br-int flow. In the self.setup_physical_bridges(self.bridge_mappings), Drop flow for packet coming from int-br-eth0 and int-br-ex will be added in br-int flow. This drop flows will cut the switching loop from switch to br-int. But before the drop flows added to br-int, If there is a broadcast packet coming from switch, the packet will loop bewtween switch and br-int. We should add normal flow in table 0 in br-int after the drop flows added. ** Description changed: If we have the topology bellow in network node. - <pre> + +-------------------------------------------+ | | | switch | +---------+---------------------+-----------+ | | +------------------------------------------------------------+ | | | | | +----+-----+ +----+-----+ | | | eth0 | | eth1 | | | +--+----------+--+ +--+----------+--+ | | | | | | | | | br-eth0 | | br-ex | | | +-------+--------+ +-------+--------+ | | | | | | | | | | +---------+---------------------+-----------+ | | | | | | | br-int | | | +-------------------------------------------+ | | | | | | network node | +------------------------------------------------------------+ - </pre> + The ports on switch connected to eth0 and eth1 set to trunk all VLANs. When neutron-openvswitch-agent restart, First it will set br-int bridge by self.setup_integration_br(), then set br-eth0 and br-ex by self.setup_physical_bridges(self.bridge_mappings). Before this bug (https://bugs.launchpad.net/neutron/+bug/1383674), all flows in br-int will clear when neutron-openvswitch-agent restart, this will cause the transient switching loop decribed bellow. After the bug above fixed, the flows in br-int will remain to keep the network connected if neutron-openvswitch-agent restart, but if the network node reboot, the transient switching loop will also happen as decribed bellow. In self.setup_integration_br(), A normal flow in table 0 will be added in br-int flow. In the self.setup_physical_bridges(self.bridge_mappings), Drop flow for packet coming from int-br-eth0 and int-br-ex will be added in br-int flow. This drop flows will cut the switching loop from switch to br-int. But before the drop flows added to br-int, If there is a broadcast packet coming from switch, the packet will loop bewtween switch and br-int. We should add normal flow in table 0 in br-int after the drop flows added. ** Description changed: If we have the topology bellow in network node. - +-------------------------------------------+ - | | - | switch | - +---------+---------------------+-----------+ - | | - +------------------------------------------------------------+ - | | | | - | +----+-----+ +----+-----+ | - | | eth0 | | eth1 | | - | +--+----------+--+ +--+----------+--+ | - | | | | | | - | | br-eth0 | | br-ex | | - | +-------+--------+ +-------+--------+ | - | | | | - | | | | - | +---------+---------------------+-----------+ | - | | | | - | | br-int | | - | +-------------------------------------------+ | - | | - | | - | network node | - +------------------------------------------------------------+ + https://etherpad.openstack.org/p/neutron_transient_switching_loop The ports on switch connected to eth0 and eth1 set to trunk all VLANs. When neutron-openvswitch-agent restart, First it will set br-int bridge by self.setup_integration_br(), then set br-eth0 and br-ex by self.setup_physical_bridges(self.bridge_mappings). Before this bug (https://bugs.launchpad.net/neutron/+bug/1383674), all flows in br-int will clear when neutron-openvswitch-agent restart, this will cause the transient switching loop decribed bellow. After the bug above fixed, the flows in br-int will remain to keep the network connected if neutron-openvswitch-agent restart, but if the network node reboot, the transient switching loop will also happen as decribed bellow. In self.setup_integration_br(), A normal flow in table 0 will be added in br-int flow. In the self.setup_physical_bridges(self.bridge_mappings), Drop flow for packet coming from int-br-eth0 and int-br-ex will be added in br-int flow. This drop flows will cut the switching loop from switch to br-int. But before the drop flows added to br-int, If there is a broadcast packet coming from switch, the packet will loop bewtween switch and br-int. We should add normal flow in table 0 in br-int after the drop flows added. ** Changed in: neutron Assignee: (unassigned) => Jesse (jesse-5) -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1682805 Title: transient switching loop caused by neutron-openvswitch-agent Status in neutron: New Bug description: If we have the topology bellow in network node. https://etherpad.openstack.org/p/neutron_transient_switching_loop The ports on switch connected to eth0 and eth1 set to trunk all VLANs. When neutron-openvswitch-agent restart, First it will set br-int bridge by self.setup_integration_br(), then set br-eth0 and br-ex by self.setup_physical_bridges(self.bridge_mappings). Before this bug (https://bugs.launchpad.net/neutron/+bug/1383674), all flows in br-int will clear when neutron-openvswitch-agent restart, this will cause the transient switching loop decribed bellow. After the bug above fixed, the flows in br-int will remain to keep the network connected if neutron-openvswitch-agent restart, but if the network node reboot, the transient switching loop will also happen as decribed bellow. In self.setup_integration_br(), A normal flow in table 0 will be added in br-int flow. In the self.setup_physical_bridges(self.bridge_mappings), Drop flow for packet coming from int-br-eth0 and int-br-ex will be added in br-int flow. This drop flows will cut the switching loop from switch to br-int. But before the drop flows added to br-int, If there is a broadcast packet coming from switch, the packet will loop bewtween switch and br-int. We should add normal flow in table 0 in br-int after the drop flows added. To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1682805/+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