Hi,
On 2015年05月29日 17:46, Hm Balarama wrote:
> Hi Iwase,
>
> It didn't work because I used loop topology.
> s1
> / \
> / \
> s2----s3
>
On my mininet environment, I made a looped topology,
gui_topology worked fine and I could get EventLinkAdd/EventLinkDelete events.
$ sudo python test_topo.py
Unable to contact the remote controller at 127.0.0.1:6633
*** Configuring hosts
h1 h2 h3
*** Starting CLI:
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s2-eth1
h3 h3-eth0:s3-eth1
s1 lo: s1-eth1:h1-eth0 s1-eth2:s2-eth2 s1-eth3:s3-eth3
s2 lo: s2-eth1:h2-eth0 s2-eth2:s1-eth2 s2-eth3:s3-eth2
s3 lo: s3-eth1:h3-eth0 s3-eth2:s2-eth3 s3-eth3:s1-eth3
c0
mininet>
$ ryu-manager --observe-links --verbose ryu.app.gui_topology.gui_topology
...
# input 'ifconfig s1-eth2 down' on s1:
---
EVENT ofp_event->switches EventOFPPortStatus
EVENT ofp_event->dpset EventOFPPortStatus
EVENT switches->WebSocketTopology EventLinkDelete
EVENT switches->WebSocketTopology EventLinkDelete
DPSET: A port was modified.(datapath id = 0000000000000001, port number = 2)
EVENT ofp_event->switches EventOFPPortStatus
EVENT ofp_event->dpset EventOFPPortStatus
DPSET: A port was modified.(datapath id = 0000000000000002, port number = 2)
---
Thanks,
Iwase
> I'm sorry if I didn't let you know.
> In this case, what should I do?
>
> Thanks,
> Tsogbayar.
>
>
> On Fri, May 29, 2015 at 2:10 PM, Yusuke Iwase <[email protected]
> <mailto:[email protected]>> wrote:
>
> Hi,
>
> How about using gui_topology.py with --verbose option?
>
> $ ryu-manager --observe-links --verbose ryu.app.gui_topology.gui_topology
>
> With --verbose option, you will get many messages,
> but please check only EventLinkAdd/EventLinkDelete events,
> when a link goes up or down.
>
> eg.)
> EVENT switches->WebSocketTopology EventLinkDelete
> EVENT switches->WebSocketTopology EventLinkDelete
>
> Thanks,
> Iwase
>
>
> On 2015年05月29日 13:54, Hm Balarama wrote:
> > Hi Iwase,
> >
> > I purposed just using Ryu's official apps. Not user's developed one.
> > Are there anyway to test a link failure in Ryu?
> >
> > Thanks,
> > Tsogbayar.
> >
> > On Fri, May 29, 2015 at 1:23 PM, Yusuke Iwase <[email protected]
> <mailto:[email protected]> <mailto:[email protected]
> <mailto:[email protected]>>> wrote:
> >
> > Hi,
> >
> > > So, did you mean I should run like that ryu-manager
> simple_switch_stp.py --observe-links?
> >
> > No, you don't have to use simple_switch_stp.py,
> > but you should write your Ryu application and
> > catch EventLinkAdd/EventLinkDelete events as followings.
> >
> > -----------------
> > Snippet of code:
> > -----------------
> > ...
> > from ryu.topology import api
> > from ryu.topology.event import EventLinkAdd, EventLinkDelete
> > ...
> >
> > class SampleApp(app_manager.RyuApp):
> > ...
> > @set_ev_cls(EventLinkAdd, MAIN_DISPATCHER)
> > def _link_add_handler(self, ev):
> > self.logger.info <http://self.logger.info>
> <http://self.logger.info>('EventLinkAdd = %s', ev)
> > ...
> >
> > @set_ev_cls(EventLinkDelete, MAIN_DISPATCHER)
> > def _link_del_handler(self, ev):
> > self.logger.info <http://self.logger.info>
> <http://self.logger.info>('EventLinkDelete = %s', ev)
> > ...
> > -----------------
> >
> > And start your app with --observe-links option.
> >
> > $ ryu-manager --observe-links ryu.app.sample_app
> > loading app ryu.app.sample_app
> > loading app ryu.topology.switches
> > loading app ryu.controller.ofp_handler
> > instantiating app ryu.app.sample_app of SampleApp
> > instantiating app ryu.topology.switches of Switches
> > instantiating app ryu.controller.ofp_handler of OFPHandler
> > ...
> >
> > if you input "ifconfig s1-eth2 down" on switch, your app will show
> the following messages.
> > ...
> > EventLinkDelete = EventLinkDelete<Link: Port<dpid=1, port_no=2,
> DOWN> to Port<dpid=2, port_no=2, LIVE>>
> > EventLinkDelete = EventLinkDelete<Link: Port<dpid=2, port_no=2,
> LIVE> to Port<dpid=1, port_no=2, LIVE>>
> > ...
> >
> >
> > For more information about developing your app,
> > please refer to the Ryu-Documentation.
> > http://ryu.readthedocs.org/en/latest/developing.html
> >
> >
> > Thanks,
> > Iwase
> >
> >
> > On 2015年05月29日 12:26, Hm Balarama wrote:
> > > Thank you, Iwase.
> > > Yes, I used simple_switch_stp.py.
> > > I see timeout_check_period and others in switches.py.
> > > So, did you mean I should run like that ryu-manager
> simple_switch_stp.py --observe-links?
> > > I'm sorry, I'm a newbee in Ryu.
> > >
> > > Thank you,
> > > Tsogbayar.
> > >
> > > On Fri, May 29, 2015 at 11:16 AM, Yusuke Iwase
> <[email protected] <mailto:[email protected]>
> <mailto:[email protected] <mailto:[email protected]>>
> <mailto:[email protected] <mailto:[email protected]>
> <mailto:[email protected] <mailto:[email protected]>>>> wrote:
> > >
> > > Hi,
> > >
> > > First, what Ryu application are you using?
> simple_switch_stp.py?
> > > If so, simple_switch_stp.py is one of the sample application
> of Ryu.
> > > In other words, Ryu does not require to use BPDU,
> > > just performing like STP switch by using simple_switch_stp.py.
> > >
> > > If you want to recover a link failure with Ryu,
> > > I recommend you to use ryu.topology modules with
> --observe-links option of ryu-manager.
> > > https://github.com/osrg/ryu/tree/master/ryu/topology
> > >
> > > Thanks,
> > > Iwase
> > >
> > > On 2015年05月29日 10:55, Hm Balarama wrote:
> > > > Hello,
> > > >
> > > > I tested Ryu with loop topology. I used 3 switches and
> those are OF enabled.
> > > > I wanted how much time does Ryu recover a link failure when
> I remove cable.
> > > > So I changed DEFAULT_MAX_AGE in bpdu.py. Also I set
> DEFAULT_HELLO_TIME=1.
> > > > I tested 4 times.
> > > > DEFAULT_MAX_AGE =1 and average recovery time was 74 seconds
> > > > DEFAULT_MAX_AGE =2 and average recovery time was 72 seconds
> > > > DEFAULT_MAX_AGE =3 and average recovery time was 71 seconds
> > > > DEFAULT_MAX_AGE =5 and average recovery time was 74 seconds
> > > > It seems to me a little bit strange. I don't know why.
> > > > I expected DEFAULT_MAX_AGE=1 takes very short time than
> DEFAULT_MAX_AGE =2,3,5 but it doesn't.
> > > > Could you please tell me why it happened?
> > > >
> > > > Thank you,
> > > > Tsogbayar.
> > > >
> > > >
> > > >
> ------------------------------------------------------------------------------
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Ryu-devel mailing list
> > > > [email protected]
> <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>
> <mailto:[email protected]
> <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>>
> > > > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> > > >
> > >
> > >
> > >
> > >
> > >
> ------------------------------------------------------------------------------
> > >
> > >
> > >
> > > _______________________________________________
> > > Ryu-devel mailing list
> > > [email protected]
> <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>
> > > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> > >
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> >
> >
> >
> > _______________________________________________
> > Ryu-devel mailing list
> > [email protected] <mailto:[email protected]>
> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >
>
>
>
>
> ------------------------------------------------------------------------------
>
>
>
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>
from mininet.cli import CLI
from mininet.link import Link
from mininet.net import Mininet
from mininet.node import RemoteController
from mininet.log import setLogLevel
if '__main__' == __name__:
setLogLevel('info')
net = Mininet(controller=RemoteController)
c0 = net.addController('c0')
s1 = net.addSwitch('s1')
s2 = net.addSwitch('s2')
s3 = net.addSwitch('s3')
h1 = net.addHost('h1')
h2 = net.addHost('h2')
h3 = net.addHost('h3')
Link(s1, h1)
Link(s2, h2)
Link(s3, h3)
Link(s1, s2)
Link(s2, s3)
Link(s3, s1)
net.build()
c0.start()
s1.start([c0])
s2.start([c0])
s3.start([c0])
CLI(net)
net.stop()
------------------------------------------------------------------------------
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel