Dear,
Sorry for sending again. I have attached the logfile from RYU controller.
Here, dpset for _unregister is not generated when I shutdown the physical
openflow switch. _unregister is generated when OpenFlow switch has
completely reconnected again. Moreover, I have testbed by shutting the
OpenFlow switch for 5 times but _unregister is only generated only one
time. I am planning to make rerouting in my SDN network when the node is
failure. Can anyone suggest me how to detect node failure when the OpenFlow
switch is down.
loading app testing.py
require_app: ryu.topology.switches is required by testing
loading app ryu.controller.ofp_handler
instantiating app None of Switches
creating context switches
instantiating app None of DPSet
creating context dpset
instantiating app testing.py of testing
instantiating app ryu.controller.ofp_handler of OFPHandler
BRICK switches
PROVIDES EventSwitchLeave TO {'testing': set(['main', 'config', 'dead'])}
CONSUMES EventOFPPortStatus
CONSUMES EventLinkRequest
CONSUMES EventOFPStateChange
CONSUMES EventOFPPacketIn
CONSUMES EventSwitchRequest
CONSUMES EventHostRequest
BRICK dpset
PROVIDES EventDP TO {'testing': set(['dead'])}
CONSUMES EventOFPPortStatus
CONSUMES EventOFPSwitchFeatures
CONSUMES EventOFPStateChange
BRICK testing
CONSUMES EventOFPSwitchFeatures
CONSUMES EventDP
CONSUMES EventSwitchLeave
BRICK ofp_event
PROVIDES EventOFPPacketIn TO {'switches': set(['main'])}
PROVIDES EventOFPPortStatus TO {'switches': set(['main']), 'dpset':
set(['main'])}
PROVIDES EventOFPSwitchFeatures TO {'dpset': set(['config']), 'testing':
set(['config'])}
PROVIDES EventOFPStateChange TO {'switches': set(['main', 'dead']),
'dpset': set(['main', 'dead'])}
CONSUMES EventOFPEchoReply
CONSUMES EventOFPPortStatus
CONSUMES EventOFPPortDescStatsReply
CONSUMES EventOFPErrorMsg
CONSUMES EventOFPSwitchFeatures
CONSUMES EventOFPHello
CONSUMES EventOFPEchoRequest
connected socket:<eventlet.greenio.base.GreenSocket object at 0xb03d4cac>
address:('10.0.0.1', 52576)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0xb796380c>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
EVENT ofp_event->testing EventOFPSwitchFeatures
switch features ev
version=0x4,msg_type=0x6,msg_len=0x20,xid=0xb1070f11L,OFPSwitchFeatures(auxiliary_id=0,capabilities=79,datapath_id=1152921504606846978L,n_buffers=256,n_tables=254)
{1152921504606846978L: ('10.0.0.1', 52576)}
move onto main mode
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
<ryu.controller.controller.Datapath object at 0xb03d49ec>
register Switch<dpid=1152921504606846978, Port<dpid=1152921504606846978,
port_no=1, LIVE> >
DPSET: register datapath <ryu.controller.controller.Datapath object at
0xb03d49ec>
EVENT dpset->testing EventDP
Connected_Switch_ID: 1152921504606846978 (IP Address: ('10.0.0.1',
52576))[Status: True]
connected socket:<eventlet.greenio.base.GreenSocket object at 0xb03d4f2c>
address:('10.0.0.4', 47416)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0xb03eb60c>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
EVENT ofp_event->testing EventOFPSwitchFeatures
switch features ev
version=0x4,msg_type=0x6,msg_len=0x20,xid=0xc6dec9d1L,OFPSwitchFeatures(auxiliary_id=0,capabilities=79,datapath_id=1152921504606846981L,n_buffers=256,n_tables=254)
{1152921504606846978L: ('10.0.0.1', 52576), 1152921504606846981L:
('10.0.0.4', 47416)}
move onto main mode
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
<ryu.controller.controller.Datapath object at 0xb03d4d6c>
register Switch<dpid=1152921504606846981, Port<dpid=1152921504606846981,
port_no=1, LIVE> >
DPSET: register datapath <ryu.controller.controller.Datapath object at
0xb03d4d6c>
EVENT dpset->testing EventDP
Connected_Switch_ID: 1152921504606846981 (IP Address: ('10.0.0.4',
47416))[Status: True]
connected socket:<eventlet.greenio.base.GreenSocket object at 0xb03eb5cc>
address:('10.0.0.6', 35670)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0xb03ebbac>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
EVENT ofp_event->testing EventOFPSwitchFeatures
switch features ev
version=0x4,msg_type=0x6,msg_len=0x20,xid=0x73761078,OFPSwitchFeatures(auxiliary_id=0,capabilities=79,datapath_id=255421810004811L,n_buffers=256,n_tables=254)
{255421810004811L: ('10.0.0.6', 35670), 1152921504606846978L: ('10.0.0.1',
52576), 1152921504606846981L: ('10.0.0.4', 47416)}
move onto main mode
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
<ryu.controller.controller.Datapath object at 0xb03eb2ac>
register Switch<dpid=255421810004811, Port<dpid=255421810004811, port_no=1,
LIVE> >
DPSET: register datapath <ryu.controller.controller.Datapath object at
0xb03eb2ac>
EVENT dpset->testing EventDP
Connected_Switch_ID: 255421810004811 (IP Address: ('10.0.0.6',
35670))[Status: True]
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
<ryu.controller.controller.Datapath object at 0xb03d4d6c>
unregister Switch<dpid=1152921504606846981, Port<dpid=1152921504606846981,
port_no=1, LIVE> >
EVENT switches->testing EventSwitchLeave
DPSET: unregister datapath <ryu.controller.controller.Datapath object at
0xb03d4d6c>
EVENT dpset->testing EventDP
Switch 1152921504606846981 is leaved
('Switch ID %s is down', 1152921504606846981L)
datapath leave
connected socket:<eventlet.greenio.base.GreenSocket object at 0xb796380c>
address:('10.0.0.4', 47424)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0xb03eb28c>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
EVENT ofp_event->testing EventOFPSwitchFeatures
switch features ev
version=0x4,msg_type=0x6,msg_len=0x20,xid=0xa4e84d6bL,OFPSwitchFeatures(auxiliary_id=0,capabilities=79,datapath_id=1152921504606846981L,n_buffers=256,n_tables=254)
{255421810004811L: ('10.0.0.6', 35670), 1152921504606846978L: ('10.0.0.1',
52576), 1152921504606846981L: ('10.0.0.4', 47416)}
move onto main mode
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
<ryu.controller.controller.Datapath object at 0xb03eb78c>
register Switch<dpid=1152921504606846981, Port<dpid=1152921504606846981,
port_no=1, LIVE> >
DPSET: register datapath <ryu.controller.controller.Datapath object at
0xb03eb78c>
EVENT dpset->testing EventDP
Connected_Switch_ID: 1152921504606846981 (IP Address: ('10.0.0.4',
47424))[Status: True]
connected socket:<eventlet.greenio.base.GreenSocket object at 0xb03eb18c>
address:('10.0.0.4', 47432)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0xb03ff30c>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
EVENT ofp_event->testing EventOFPSwitchFeatures
switch features ev
version=0x4,msg_type=0x6,msg_len=0x20,xid=0xc320b55,OFPSwitchFeatures(auxiliary_id=0,capabilities=79,datapath_id=1152921504606846981L,n_buffers=256,n_tables=254)
{255421810004811L: ('10.0.0.6', 35670), 1152921504606846978L: ('10.0.0.1',
52576), 1152921504606846981L: ('10.0.0.4', 47416)}
move onto main mode
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
<ryu.controller.controller.Datapath object at 0xb03eb48c>
Multiple connections from 1000000000000005
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
register Switch<dpid=1152921504606846981, Port<dpid=1152921504606846981,
port_no=1, LIVE> >
<ryu.controller.controller.Datapath object at 0xb03eb78c>
DPSET: register datapath <ryu.controller.controller.Datapath object at
0xb03eb48c>
DPSET: Multiple connections from 1000000000000005
DPSET: Forgetting datapath <ryu.controller.controller.Datapath object at
0xb03eb78c>
DPSET: New datapath <ryu.controller.controller.Datapath object at
0xb03eb48c>
connected socket:<eventlet.greenio.base.GreenSocket object at 0xb03eb66c>
address:('10.0.0.1', 52586)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0xb03ff50c>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
EVENT ofp_event->testing EventOFPSwitchFeatures
switch features ev
version=0x4,msg_type=0x6,msg_len=0x20,xid=0xdff5e52bL,OFPSwitchFeatures(auxiliary_id=0,capabilities=79,datapath_id=1152921504606846978L,n_buffers=256,n_tables=254)
{255421810004811L: ('10.0.0.6', 35670), 1152921504606846978L: ('10.0.0.1',
52576), 1152921504606846981L: ('10.0.0.4', 47416)}
move onto main mode
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
<ryu.controller.controller.Datapath object at 0xb03eb90c>
Multiple connections from 1000000000000002
EVENT ofp_event->switches EventOFPStateChange
EVENT ofp_event->dpset EventOFPStateChange
register Switch<dpid=1152921504606846978, Port<dpid=1152921504606846978,
port_no=1, LIVE> >
<ryu.controller.controller.Datapath object at 0xb03d49ec>
DPSET: register datapath <ryu.controller.controller.Datapath object at
0xb03eb90c>
DPSET: Multiple connections from 1000000000000002
DPSET: Forgetting datapath <ryu.controller.controller.Datapath object at
0xb03d49ec>
DPSET: New datapath <ryu.controller.controller.Datapath object at
0xb03eb90c>
On Mon, Jul 23, 2018 at 7:19 PM, Soe Ye Htet <soeyehtet1...@gmail.com>
wrote:
> Dear,
>
> Here is my source code. I put the dpset.EventDP for detecting node failure
> but when I shut down the OpenFlow switch, node failure case cannot be
> detected from RYU controller. When I turn on back the OpenFlow switch, the
> words of "datapath leave" has been appeared. Actually, it should have
> appeared when I shut down the OpenFlow switch.
>
> from ryu.lib.packet import ethernet
> from operator import attrgetter
> from ryu.base import app_manager
> from ryu import controller
> from ryu.controller import ofp_event
> from ryu.controller import handler
> from ryu.controller.handler import CONFIG_DISPATCHER, MAIN_DISPATCHER,
> DEAD_DISPATCHER
> from ryu.controller.handler import set_ev_cls
> from ryu.ofproto import ofproto_v1_3
> from ryu.controller import dpset
> from ryu.lib.mac import haddr_to_bin
> from ryu.lib.packet import ipv4
> from ryu.lib.packet import tcp
> from ryu.lib.packet import packet
> from ryu.lib.packet import ethernet
> from ryu.lib.packet import ether_types
> from ryu.controller import event
> from ryu.topology import event, switches
> from ryu.lib import hub
> from ryu.topology.switches import LLDPPacket
> from ryu import topology
> import numpy
> from ryu.app.wsgi import ControllerBase
> from ryu.topology.api import get_switch, get_link, get_all_link,
> get_all_switch
> from ryu.lib import dpid
> from threading import Lock
> from collections import defaultdict
> import copy
> import os
> import time
> import socket
> class testing (app_manager.RyuApp):
> _CONTEXTS = {'dpset':dpset.DPSet}
> OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
>
> def __init__(self,*args,**kwargs):
> super(testing,self).__init__(*args,**kwargs)
> self.switch_table={}
> self.dpset = kwargs['dpset']
>
> @set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
> def switch_features_handler(self, ev):
> dp = ev.msg.datapath
> dp.socket.settimeout(20)
> self.switch_table.setdefault(dp.id,dp.address)
> print(self.switch_table)
>
> @set_ev_cls(dpset.EventDP,dpset.DPSET_EV_DISPATCHER)
> def switch_enter(self,ev):
> if ev.enter:
> self.logger.info("Connected_Switch_ID: %s (IP Address:
> %s)[Status: %s] ",ev.dp.id,ev.dp.address,ev.enter)
> else:
> print("datapath leave")
>
>
>
> On Mon, Jul 23, 2018 at 6:10 PM, Soe Ye Htet <soeyehtet1...@gmail.com>
> wrote:
>
>> Dear,
>>
>> You means I have to write dpset.DPSet._unregister(self,dp).
>>
>> Best Regards,
>> Soe Ye Htet
>>
>> On Mon, Jul 23, 2018 at 4:28 PM, IWAMOTO Toshihiro <iwam...@valinux.co.jp
>> > wrote:
>>
>>> On Sat, 21 Jul 2018 02:26:08 +0900,
>>> Soe Ye Htet wrote:
>>> >
>>> > [1 <multipart/alternative (7bit)>]
>>> > [1.1 <text/plain; UTF-8 (7bit)>]
>>> > Dear,
>>> >
>>> > Sorry for my simple question.
>>> >
>>> > I tried to put False in dpset in order to track the disconnection from
>>> the
>>> > switch. Is there any example to put False.
>>> >
>>>
>>> DPSet._unregister sends EventDP with self.enter == False.
>>>
>>> --
>>> IWAMOTO Toshihiro
>>>
>>
>>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel