[OPNFLWPLUG-67] OpenFlow 1.3 plugin does not discover topology with mininet 2.0 on Ubuntu Precise Created: 02/Feb/14  Updated: 27/Sep/21  Resolved: 12/Aug/14

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

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

Operating System: Linux
Platform: PC


Attachments: HTML File bug 400     File screen-exchange.bz2    
Issue Links:
Blocks
is blocked by OPNFLWPLUG-61 ping between hosts not working with m... Resolved
External issue ID: 400
Priority: Normal

 Description   

Hello,
The OpenFlow 1.3 plugin does not discover the topology with mininet 2.0 on Ubuntu precise. How to reproduce:

Download the controller from http://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distributions-base/0.1.0/distributions-base-0.1.0-osgipackage.zip

and run it with ./run.sh -of13

Install Ubuntu Precise 64 Bit. And issue the following commands:

apt-get install mininet
service openvswitch-switch start
cat > mininet_sample_topo.py <<EOF
from mininet.topo import Topo

class SampleTopo( Topo ):
"Simple topology"

def _init_( self ):
"Create custom topo."

  1. Initialize topology
    Topo._init_( self )
  1. Add hosts
    h1= self.addHost( 'h1' )
    h2= self.addHost( 'h2' )
    h3= self.addHost( 'h3' )
    h4= self.addHost( 'h4' )
    h5= self.addHost( 'h5' )
    h6= self.addHost( 'h6' )
    h7= self.addHost( 'h7' )
    h8= self.addHost( 'h8' )
    h9= self.addHost( 'h9' )
  1. Switches
    s1= self.addSwitch( 's1' )
    s2= self.addSwitch( 's2' )
    s3= self.addSwitch( 's3' )
    s4= self.addSwitch( 's4' )
  1. Add links
    self.addLink( s1, h1 )
    self.addLink( s1, h2 )
    self.addLink( s3, s4 )

self.addLink( h3, s2 )
self.addLink( h4, s2 )

self.addLink( h5, s3 )
self.addLink( h6, s3 )

self.addLink( s1, s2 )
self.addLink( s1, s3 )
self.addLink( s2, s4 )

self.addLink( s4, h7 )
self.addLink( s4, h8 )
self.addLink( s4, h9 )

topos =

{ 'sampletopo': ( lambda: SampleTopo() ) }

EOF

(ubuntu) [/root] mn --custom mininet_sample_topo.py --mac --topo sampletopo --switch ovsk,protocols=OpenFlow13 --controller remote,ip=<ip>

Find the log file attached.

Cheers,
Thomas



 Comments   
Comment by Thomas Glanzmann [ 02/Feb/14 ]

Attachment screen-exchange.bz2 has been added with description: Output of the error messages of the controller

Comment by Deepankar Gupta [ 05/Feb/14 ]

Hi Thomas Glanzmann,

Please find below the inline comments:

1. I have downloaded the controller from http://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distributions-base/0.1.0/distributions-base-0.1.0-osgipackage.zip

and run it with ./run.sh -of13

2. I use the following mininet script to create the topology:

-------------------------------------------------------------------------------

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, OVSKernelSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel,info
from mininet.node import RemoteController
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections

Switch = OVSKernelSwitch

def addHost( net, N ):
"Create host hN and add to net."
name = 'h%d' % N
ip = '10.0.0.%d' % N
return net.addHost( name, ip=ip )

def multiControllerNet():

net = Mininet( controller=RemoteController, switch=Switch, host=CPULimitedHost, link=TCLink)

c1 = net.addController( 'c1',controller=RemoteController,ip="192.168.56.1",port=6633 )

print "*** Creating switches"
s1 = net.addSwitch( 's1' )
s2 = net.addSwitch( 's2' )
s3 = net.addSwitch( 's3' )
s4 = net.addSwitch( 's4' )

print "*** Creating hosts"
hosts1 = [ addHost( net, n ) for n in 1, 2 ]
hosts2 = [ addHost( net, n ) for n in 3, 4 ]
hosts3 = [ addHost( net, n ) for n in 5, 6 ]
hosts4 = [ addHost( net, n ) for n in 7,8,9]

print "*** Creating links"
for h in hosts1:
s1.linkTo( h )
for h in hosts2:
s2.linkTo( h )
for h in hosts3:
s3.linkTo(h)
for h in hosts4:
s4.linkTo(h)
s3.linkTo( s4 )
s2.linkTo( s1 )
s1.linkTo( s3 )
s2.linkTo( s4 )

print "*** Starting network"
net.build()
c1.start()
s1.start( [ c1 ] )
s2.start( [ c1 ] )
s3.start( [ c1 ] )
s4.start( [ c1 ] )

print "*** Running CLI"
CLI( net )

print "*** Stopping network"
net.stop()

if _name_ == '_main_':
setLogLevel( 'info' ) # for CLI output
multiControllerNet()

--------------------------------------------------------------------------------

3. run the topology in mininet

4. Used opendaylight controller UI i.e at http://localhost:8080 and am able to view the topology.

5. I tested 4-5 times by connecting mininet topology with the controller and checked the OpenDayLight dashboard and it worked fine.

Please re-verify and confirm for the bug closure.

Thanks

Comment by Deepankar Gupta [ 05/Feb/14 ]

Attachment OPNFLWPLUG-67 has been added with description: Bug - 400

Comment by Thomas Glanzmann [ 05/Feb/14 ]

Hello Deepankar,
I still see the same issue:

(ubuntu) [/root] mn --custom mininet_sample_topo.py --mac --topo sampletopo --switch ovsk,protocols=OpenFlow13 --controller remote,ip=192.168.0.7

      • Creating network
      • Adding controller
      • Adding hosts:
        h1 h2 h3 h4 h5 h6 h7 h8 h9
      • Adding switches:
        s1 s2 s3 s4
      • Adding links:
        (h1, s1) (h2, s1) (h3, s2) (h4, s2) (h5, s3) (h6, s3) (h7, s4) (h8, s4) (h9, s4) (s1, s2) (s1, s3) (s2, s4) (s3, s4)
      • Configuring hosts
        h1 h2 h3 h4 h5 h6 h7 h8 h9
      • Starting controller
      • Starting 4 switches
        s1 s2 s3 s4
      • Starting CLI:
        mininet> pingall
      • Ping: testing ping reachability
        h1 -> X X X X X X X X
        h2 -> X X X X X X X X
        h3 -> X X X X X X X X
        h4 -> X X h3 X X X X X
        h5 -> X X X X X X X X
        h6 -> X X X X X X X X
        h7 -> X X X X X X X X
        h8 -> X X X X X X X X
        h9 -> X X X X X X X X
      • Results: 98% dropped (71/72 lost)

See also: https://upload.gmvl.de/stillaproblem.png

It also looks that in your test case you have connected using OpenFlow 1.0 and
not using OpenFlow 1.3 can you confirm this?

I also see a lot of error messages on the controller:

https://thomas.glanzmann.de/tmp/screen-exchange.bz2

java.lang.IllegalArgumentException: adflow is unknown
at org.opendaylight.controller.sal.compatibility.FlowProgrammerAdapter.internalRemoveFlowAsync(FlowProgrammerAdapter.java:301) ~[na:na]
at org.opendaylight.controller.sal.compatibility.FlowProgrammerAdapter.removeFlow(FlowProgrammerAdapter.java:136) ~[na:na]
at org.opendaylight.controller.sal.implementation.internal.FlowProgrammerService.removeFlow(FlowProgrammerService.java:197) ~[na:na]
at org.opendaylight.controller.forwardingrulesmanager.internal.ForwardingRulesManager.removeEntryInternal(ForwardingRulesManager.java:705) ~[na:na]
at org.opendaylight.controller.forwardingrulesmanager.internal.ForwardingRulesManager.removeEntry(ForwardingRulesManager.java:648) ~[na:na]
at org.opendaylight.controller.forwardingrulesmanager.internal.ForwardingRulesManager.uninstallFlowEntry(ForwardingRulesManager.java:981) ~[na:na]
at org.opendaylight.controller.samples.simpleforwarding.internal.SimpleForwardingImpl.uninstallPerHostRules(SimpleForwardingImpl.java:686) ~[na:na]
at org.opendaylight.controller.samples.simpleforwarding.internal.SimpleForwardingImpl.notifyHTClientHostRemoved(SimpleForwardingImpl.java:838) ~[na:na]
at org.opendaylight.controller.hosttracker.internal.HostTracker.notifyHostLearnedOrRemoved(HostTracker.java:574) [bundlefile:na]
at org.opendaylight.controller.hosttracker.internal.HostTracker.replaceHost(HostTracker.java:486) [bundlefile:na]
at org.opendaylight.controller.hosttracker.internal.HostTracker.access$200(HostTracker.java:103) [bundlefile:na]
at org.opendaylight.controller.hosttracker.internal.HostTracker$NotifyHostThread.run(HostTracker.java:528) [bundlefile:na]

Actually I get flooded with that. This is with mininet on ubuntu precise.

Cheers,
Thomas

Comment by Michal Rehak [ 06/Mar/14 ]

Hi Thomas,
I tried with current integration/distribution/base build and:
mininet> pingall

      • Ping: testing ping reachability
        h1 -> X h3 h4 h5 h6 h7 h8 h9
        h2 -> h1 h3 h4 X h6 h7 h8 h9
        h3 -> h1 h2 h4 h5 h6 h7 h8 h9
        h4 -> h1 h2 h3 h5 h6 h7 h8 h9
        h5 -> h1 h2 h3 h4 h6 h7 h8 h9
        h6 -> h1 h2 h3 h4 h5 h7 h8 h9
        h7 -> h1 h2 h3 h4 h5 h6 h8 h9
        h8 -> h1 h2 h3 h4 h5 h6 h7 h9
        h9 -> h1 h2 h3 h4 h5 h6 h7 h8
      • Results: 2% dropped (2/72 lost)
        mininet> pingall
      • Ping: testing ping reachability
        h1 -> h2 h3 h4 h5 h6 h7 h8 h9
        h2 -> h1 h3 h4 h5 h6 h7 h8 h9
        h3 -> h1 h2 h4 h5 h6 h7 h8 h9
        h4 -> h1 h2 h3 h5 h6 h7 h8 h9
        h5 -> h1 h2 h3 h4 h6 h7 h8 h9
        h6 -> h1 h2 h3 h4 h5 h7 h8 h9
        h7 -> h1 h2 h3 h4 h5 h6 h8 h9
        h8 -> h1 h2 h3 h4 h5 h6 h7 h9
        h9 -> h1 h2 h3 h4 h5 h6 h7 h8
      • Results: 0% dropped (0/72 lost)

On second run pings were fast and complete. Could you retest you scenario?
Thank you.

Comment by Thomas Glanzmann [ 07/Mar/14 ]

Hello,
I downloaded http://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distributions-base/0.1.1/distributions-base-0.1.1-osgipackage.zip

started it with ./run.sh -of13 and conncted the same mininet topolgy on Ubuntu
precise to it and get a lot of error messages:

(ubuntu) [/root] mn --custom mininet_sample_topo.py --mac --topo sampletopo --switch ovsk,protocols=OpenFlow13 --controller remote,ip=192.168.0.7

      • Creating network
      • Adding controller
      • Adding hosts:
        h1 h2 h3 h4 h5 h6 h7 h8 h9
      • Adding switches:
        s1 s2 s3 s4
      • Adding links:
        (h1, s1) (h2, s1) (h3, s2) (h4, s2) (h5, s3) (h6, s3) (h7, s4) (h8, s4) (h9, s4) (s1, s2) (s1, s3) (s2, s4) (s3, s4)
      • Configuring hosts
        h1 h2 h3 h4 h5 h6 h7 h8 h9
      • Starting controller
      • Starting 4 switches
        s1 s2 s3 s4
      • Starting CLI:
        mininet> pingall
      • Ping: testing ping reachability
        h1 -> X X X X X X X X
        h2 -> X X X X X X X X
        h3 -> X X X X X X X X
        h4 -> X X X X X X X X
        h5 -> X X X X X X X X
        h6 -> X X X X X X X X
        h7 -> X X X X X X X X
        h8 -> X X X X X X X X
        h9 -> X X X X X X X X
      • Results: 100% dropped (72/72 lost)
        2014-03-07 08:26:04.169 MEZ [Thread-797] ERROR o.o.c.h.internal.HostTracker - Exception on new host notification
        java.lang.IllegalArgumentException: adflow is unknown
        at org.opendaylight.controller.sal.compatibility.FlowProgrammerAdapter.internalRemoveFlowAsync(FlowProgrammerAdapter.java:301) ~[na:na]
        at org.opendaylight.controller.sal.compatibility.FlowProgrammerAdapter.removeFlow(FlowProgrammerAdapter.java:136) ~[na:na]
        at org.opendaylight.controller.sal.implementation.internal.FlowProgrammerService.removeFlow(FlowProgrammerService.java:197) ~[na:na]
        at org.opendaylight.controller.forwardingrulesmanager.internal.ForwardingRulesManager.removeEntryInternal(ForwardingRulesManager.java:705) ~[na:na]
        at org.opendaylight.controller.forwardingrulesmanager.internal.ForwardingRulesManager.removeEntry(ForwardingRulesManager.java:648) ~[na:na]
        at org.opendaylight.controller.forwardingrulesmanager.internal.ForwardingRulesManager.uninstallFlowEntry(ForwardingRulesManager.java:981) ~[na:na]
        at org.opendaylight.controller.samples.simpleforwarding.internal.SimpleForwardingImpl.uninstallPerHostRules(SimpleForwardingImpl.java:686) ~[na:na]
        at org.opendaylight.controller.samples.simpleforwarding.internal.SimpleForwardingImpl.notifyHTClientHostRemoved(SimpleForwardingImpl.java:838) ~[na:na]
        at org.opendaylight.controller.hosttracker.internal.HostTracker.notifyHostLearnedOrRemoved(HostTracker.java:574) ~[na:na]
        at org.opendaylight.controller.hosttracker.internal.HostTracker.replaceHost(HostTracker.java:486) ~[na:na]
        at org.opendaylight.controller.hosttracker.internal.HostTracker.access$200(HostTracker.java:103) ~[na:na]
        at org.opendaylight.controller.hosttracker.internal.HostTracker$NotifyHostThread.run(HostTracker.java:528) ~[na:na]

Which mininet version do you use on which operating system?

Cheers,
Thomas

Comment by Michal Rehak [ 07/Mar/14 ]

Thomas, could you try with current integration build?

E.g.:
http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/distributions-base/0.1.2-SNAPSHOT/distributions-base-0.1.2-20140307.103149-154-osgipackage.zip

Thank you.

Comment by Abhijit Kumbhare [ 24/Mar/14 ]

Thomas,

Can you try with the latest build as per Michal Rehak's suggestion?

Thanks,
Abhijit

Comment by Abhijit Kumbhare [ 14/Apr/14 ]

Thomas,

Any update?

Thanks,
Abhijit

Comment by Abhijit Kumbhare [ 12/Aug/14 ]

Luis, Chris,

Can we close this bug? I think this is very old one - and likely not happening anymore (there was also no response from Thomas Glanzmann - the reporter).

Thanks,
Abhijit

Comment by Abhijit Kumbhare [ 12/Aug/14 ]

Closing as per Chris O'Shea's thoughts over the IRC that it does not exist any longer.

Generated at Wed Feb 07 20:31:29 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.