[CONTROLLER-79] Writing forwarding rules only once Created: 04/Dec/13  Updated: 25/Jul/23  Resolved: 04/May/15

Status: Resolved
Project: controller
Component/s: adsal
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Fedor Goncharov Assignee: Venkata Siva Vijayendra Bhamidipati
Resolution: Cannot Reproduce 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: 209

 Description   

I've made a simple test on mininet. And it showed that controller writes forwarding rules only for the first iteration of packet exchange.

1)Start the controller on local ip(127.0.0.1:6633)
2)sudo mn --controller=remote,ip=127.0.0.1 --topo tree,3
3)login to controller ui via browser, and adding the ip getaway(10.0.0.254/24)

Then perform command in mininet:
4)dpctl dump-flows
It shows that all switch's flow-tables are empty. Then do

5)pingall
After that flow-tables are filled(may be checked via same dpctl)
doing ping for any host pair(measure time approx (I had 0.1ms))
7)dpctl del-flows
8)try to ping again the same pair - ping goes well, but time increases a lot(I got about 3.7ms) - it means that all packages forwarded through the controller
9)check again flow-tables - no rules are written(so the controller knows how to forward those packages - but it doesn't write rules)



 Comments   
Comment by Alessandro Boch [ 23/Dec/13 ]

Fixed with
https://git.opendaylight.org/gerrit/#/c/3487/

Comment by Alessandro Boch [ 23/Dec/13 ]

Please discard previous comment

Comment by Venkata Siva Vijayendra Bhamidipati [ 22/Jan/14 ]

Hi Fedor,

This doesn't look like a bug to me. If your concern is that flows seem to disappear after a ping, it's because OVS times out flows after a set interval. So the flows do disappear in around 5 seconds after they are entered. I assume that mininet honors this behavior of OVS in its code as well (if I'm not wrong it uses ovs code itself).

For example, to begin with, I have no flows:

mininet> dpctl dump-flows

      • s1 ------------------------------------------------------------------------
      • s2 ------------------------------------------------------------------------
      • s3 ------------------------------------------------------------------------
      • s4 ------------------------------------------------------------------------
      • s5 ------------------------------------------------------------------------
      • s6 ------------------------------------------------------------------------
      • s7 ------------------------------------------------------------------------
        mininet>

Then, I ping h6 from h1, and then ctrl^c it, and immediately check the flows:

mininet> h1 ping h6
PING 10.0.0.6 (10.0.0.6) 56(84) bytes of data.
64 bytes from 10.0.0.6: icmp_req=1 ttl=64 time=6.15 ms
64 bytes from 10.0.0.6: icmp_req=2 ttl=64 time=0.054 ms
^C
— 10.0.0.6 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.054/3.105/6.156/3.051 ms
mininet> dpctl dump-flows

      • s1 ------------------------------------------------------------------------
        in_port(1),eth(src=da:4b:88:0c:1b:56,dst=0a:0d:4c:0c:50:9f),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.6,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:1, bytes:98, used:1.156s, actions:2
        in_port(2),eth(src=0a:0d:4c:0c:50:9f,dst=da:4b:88:0c:1b:56),eth_type(0x0800),ipv4(src=10.0.0.6,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0), packets:1, bytes:98, used:1.156s, actions:1
      • s2 ------------------------------------------------------------------------
        in_port(1),eth(src=da:4b:88:0c:1b:56,dst=0a:0d:4c:0c:50:9f),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.6,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:1, bytes:98, used:1.160s, actions:3
        in_port(3),eth(src=0a:0d:4c:0c:50:9f,dst=da:4b:88:0c:1b:56),eth_type(0x0800),ipv4(src=10.0.0.6,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0), packets:1, bytes:98, used:1.160s, actions:1
      • s3 ------------------------------------------------------------------------
        in_port(1),eth(src=da:4b:88:0c:1b:56,dst=0a:0d:4c:0c:50:9f),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.6,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:1, bytes:98, used:1.160s, actions:3
        in_port(3),eth(src=0a:0d:4c:0c:50:9f,dst=da:4b:88:0c:1b:56),eth_type(0x0800),ipv4(src=10.0.0.6,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0), packets:1, bytes:98, used:1.160s, actions:1
      • s4 ------------------------------------------------------------------------
      • s5 ------------------------------------------------------------------------
        in_port(1),eth(src=0a:0d:4c:0c:50:9f,dst=da:4b:88:0c:1b:56),eth_type(0x0800),ipv4(src=10.0.0.6,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0), packets:1, bytes:98, used:1.160s, actions:3
        in_port(3),eth(src=da:4b:88:0c:1b:56,dst=0a:0d:4c:0c:50:9f),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.6,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:1, bytes:98, used:1.160s, actions:1
      • s6 ------------------------------------------------------------------------
        in_port(3),eth(src=da:4b:88:0c:1b:56,dst=0a:0d:4c:0c:50:9f),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.6,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0), packets:1, bytes:98, used:1.164s, actions:2
        in_port(2),eth(src=0a:0d:4c:0c:50:9f,dst=da:4b:88:0c:1b:56),eth_type(0x0800),ipv4(src=10.0.0.6,dst=10.0.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0), packets:1, bytes:98, used:1.164s, actions:3
      • s7 ------------------------------------------------------------------------
        mininet>

After a few seconds, I recheck the flows:

mininet> dpctl dump-flows

      • s1 ------------------------------------------------------------------------
      • s2 ------------------------------------------------------------------------
      • s3 ------------------------------------------------------------------------
      • s4 ------------------------------------------------------------------------
      • s5 ------------------------------------------------------------------------
      • s6 ------------------------------------------------------------------------
      • s7 ------------------------------------------------------------------------
        mininet>

And they're gone, owing to ovs timeouts.

I will mark this bug as invalid for the above reason. Please do note that the flows do get written on the switches by the controller before they time out, so the controller is doing its job.

Comment by Carol Sanders [ 04/May/15 ]

This bug is part of the project to Move all ADSAL associated component bugs to ADSAL

Generated at Wed Feb 07 19:52:08 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.