[L2SWITCH-44] Loopremover module does not recalculate after link down Created: 23/May/15  Updated: 19/Oct/17

Status: Confirmed
Project: l2switch
Component/s: General
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Luis Gomez Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: PC


External issue ID: 3345
Priority: Normal

 Description   

I guess related with 1995.

To reproduce:

  • Start controller with odl-l2switch-switch-ui
  • Bring a mininet loop topology (i can provide one)
  • pingall works
  • Remove 1 link: link s1 s2 down
  • pingall does not work

BR/Luis



 Comments   
Comment by Sai MarapaReddy [ 13/May/16 ]

If link goes down between two switches the topology reacts correctly, but if the link connects a switch and host topology doesn't react correctly.

Luis - Are we interested in both cases or only case between switch and switch.

Comment by Luis Gomez [ 13/May/16 ]

This bug is only for switch to switch link, are you saying this work now?

Comment by Sai MarapaReddy [ 17/May/16 ]

Yes Luis. It works with switch-switch link.

Comment by Luis Gomez [ 17/May/16 ]

Here is the test I just did and failed:

1) Start ring:

vagrant@mininet-vm-ubuntu-new:~\> sudo mn --controller=remote,ip=192.168.0.1 --mac --custom customtopo.py --topo ring

      • Creating network
      • Adding controller
      • Adding hosts:
        h1 h2 h3
      • Adding switches:
        s1 s2 s3
      • Adding links:
        (s1, h1) (s2, h2) (s2, s1) (s3, h3) (s3, s1) (s3, s2)
      • Configuring hosts
        h1 h2 h3
      • Starting controller
        c0
      • Starting 3 switches
        s1 s2 s3 ...
      • Starting CLI:

2) Pingall:
mininet> pingall

      • Ping: testing ping reachability
        h1 -> h2 h3
        h2 -> h1 h3
        h3 -> h1 h2
      • Results: 0% dropped (6/6 received)
        mininet> dpctl dump-flows
      • s1 ------------------------------------------------------------------------
        NXST_FLOW reply (xid=0x4):
        cookie=0x2b00000000000004, duration=37.310s, table=0, n_packets=14, n_bytes=1136, idle_age=28, priority=0 actions=drop
        cookie=0x2b00000000000005, duration=33.401s, table=0, n_packets=10, n_bytes=700, idle_age=12, priority=2,in_port=1 actions=output:2,CONTROLLER:65535
        cookie=0x2b00000000000006, duration=33.400s, table=0, n_packets=24, n_bytes=1680, idle_age=12, priority=2,in_port=2 actions=output:1
        cookie=0x2b00000000000002, duration=37.285s, table=0, n_packets=16, n_bytes=1360, idle_age=2, priority=100,dl_type=0x88cc actions=CONTROLLER:65535
      • s2 ------------------------------------------------------------------------
        NXST_FLOW reply (xid=0x4):
        cookie=0x2b00000000000002, duration=37.314s, table=0, n_packets=12, n_bytes=996, idle_age=35, priority=0 actions=drop
        cookie=0x2b00000000000003, duration=33.403s, table=0, n_packets=12, n_bytes=840, idle_age=12, priority=2,in_port=3 actions=output:2,output:1
        cookie=0x2b00000000000004, duration=33.403s, table=0, n_packets=12, n_bytes=840, idle_age=12, priority=2,in_port=1 actions=output:2,output:3
        cookie=0x2b00000000000002, duration=33.403s, table=0, n_packets=10, n_bytes=700, idle_age=12, priority=2,in_port=2 actions=output:3,output:1,CONTROLLER:65535
        cookie=0x2b00000000000000, duration=37.305s, table=0, n_packets=16, n_bytes=1360, idle_age=2, priority=100,dl_type=0x88cc actions=CONTROLLER:65535
      • s3 ------------------------------------------------------------------------
        NXST_FLOW reply (xid=0x4):
        cookie=0x2b00000000000000, duration=37.290s, table=0, n_packets=13, n_bytes=1058, idle_age=28, priority=0 actions=drop
        cookie=0x2b00000000000000, duration=33.406s, table=0, n_packets=24, n_bytes=1680, idle_age=12, priority=2,in_port=1 actions=output:2
        cookie=0x2b00000000000001, duration=33.406s, table=0, n_packets=10, n_bytes=700, idle_age=12, priority=2,in_port=2 actions=output:1,CONTROLLER:65535
        cookie=0x2b00000000000004, duration=37.309s, table=0, n_packets=16, n_bytes=1360, idle_age=2, priority=100,dl_type=0x88cc actions=CONTROLLER:65535

3) From the above, link s1-s3 is being blocked by loop-remover, lets remove link s1-s2:
mininet> link s1 s2 down
mininet> dpctl dump-flows

      • s1 ------------------------------------------------------------------------
        NXST_FLOW reply (xid=0x4):
        cookie=0x2b00000000000004, duration=114.608s, table=0, n_packets=14, n_bytes=1136, idle_age=105, priority=0 actions=drop
        cookie=0x2b00000000000005, duration=110.699s, table=0, n_packets=10, n_bytes=700, idle_age=89, priority=2,in_port=1 actions=output:2,CONTROLLER:65535
        cookie=0x2b00000000000006, duration=110.698s, table=0, n_packets=24, n_bytes=1680, idle_age=89, priority=2,in_port=2 actions=output:1
        cookie=0x2b00000000000002, duration=114.583s, table=0, n_packets=47, n_bytes=3995, idle_age=0, priority=100,dl_type=0x88cc actions=CONTROLLER:65535
      • s2 ------------------------------------------------------------------------
        NXST_FLOW reply (xid=0x4):
        cookie=0x2b00000000000002, duration=114.612s, table=0, n_packets=12, n_bytes=996, idle_age=112, priority=0 actions=drop
        cookie=0x2b00000000000003, duration=110.701s, table=0, n_packets=12, n_bytes=840, idle_age=89, priority=2,in_port=3 actions=output:2,output:1
        cookie=0x2b00000000000004, duration=110.701s, table=0, n_packets=12, n_bytes=840, idle_age=89, priority=2,in_port=1 actions=output:2,output:3
        cookie=0x2b00000000000002, duration=110.701s, table=0, n_packets=10, n_bytes=700, idle_age=89, priority=2,in_port=2 actions=output:3,output:1,CONTROLLER:65535
        cookie=0x2b00000000000000, duration=114.603s, table=0, n_packets=47, n_bytes=3995, idle_age=0, priority=100,dl_type=0x88cc actions=CONTROLLER:65535
      • s3 ------------------------------------------------------------------------
        NXST_FLOW reply (xid=0x4):
        cookie=0x2b00000000000000, duration=114.588s, table=0, n_packets=13, n_bytes=1058, idle_age=105, priority=0 actions=drop
        cookie=0x2b00000000000000, duration=110.704s, table=0, n_packets=24, n_bytes=1680, idle_age=89, priority=2,in_port=1 actions=output:2
        cookie=0x2b00000000000001, duration=110.704s, table=0, n_packets=10, n_bytes=700, idle_age=89, priority=2,in_port=2 actions=output:1,CONTROLLER:65535
        cookie=0x2b00000000000004, duration=114.607s, table=0, n_packets=48, n_bytes=4080, idle_age=0, priority=100,dl_type=0x88cc actions=CONTROLLER:65535

4) From the above, flows do not get updated so ping will fail:
mininet> pingall

      • Ping: testing ping reachability
        h1 -> ^C
        Interrupt
        stopping h1
Generated at Wed Feb 07 20:05:46 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.