← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1682805] [NEW] transient switching loop caused by neutron-openvswitch-agent

 

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


Follow ups