> Hi,
>
> I ask you for some help relating to the topology-modul of
> Ryu. I wrote a simple app, which is supposed to give me
> the complete topology of the network (a connected mininet
> network), by listing all switches and links. The problem
> is, that i have to use a trick to get all of the links, by
> specifing, that the number of links is complete if it
> corresponds to the number of switches+1. This works
> because every links is recorded twice, as it has two
> directions and i'm using a tree-topology. My example
i don't understand your calculation.
do yo mean (number_of_links / 2 + 1 == number_of_switches) ?
> program is attached below and started with PYTHONPATH=.
> ./bin/ryu-manager --observe-links ryu/app/topotester.py
> The rest_topology.py app just works fine for me and gives
> me all the links by first reqeust, which is what I hope to
> realize with my application.
i've seen partial results from rest_topology.
i guess your success with it was merely a coincidence.
YAMAMOTO Takashi
>
> Kind regards, Chris
>
>
> from ryu.base import app_manager
>
> from ryu.controller import ofp_event
> from ryu.controller.handler import MAIN_DISPATCHER
> from ryu.controller.handler import CONFIG_DISPATCHER
> from ryu.controller.handler import set_ev_cls
>
> from ryu.topology import switches
> from ryu.topology.switches import get_switch, get_link
>
>
>
> class topotester(app_manager.RyuApp):
> _CONTEXTS = {
>
> 'switches': switches.Switches
> }
>
>
> def __init__(self, *args, **kwargs):
> super(topotester, self).__init__(*args, **kwargs)
>
> self.switches = kwargs['switches']
>
> self.topology_unknown = True
> self.number_of_switches = 0
> self.number_of_links = 0
>
>
> def list_switches(self):
> dpid = None
>
> switch_list = get_switch(self.switches, dpid)
> for switch in switch_list:
> print switch.to_dict()
>
> print "DEBUG: Number of Switches:",
> len(switch_list)
> if self.topology_unknown:
> self.number_of_switches = len(switch_list)
>
> def list_links(self):
> dpid = None
> links = get_link(self.switches, dpid)
> for link in links:
> print link.to_dict()
> print "DEBUG: Number of Links:", len(links)
> self.number_of_links = len(links)
>
>
> @set_ev_cls(ofp_event.EventOFPPacketIn,
> MAIN_DISPATCHER)
> def packet_in_handler(self, ev):
> msg = ev.msg
> dp = msg.datapath
> ofp = dp.ofproto
> ofp_parser = dp.ofproto_parser
>
>
> if self.topology_unknown==True:
>
> print "Switches:"
> self.list_switches()
>
> print
> "---------------------------------------------------"
>
> print "Links:"
> self.list_links()
> print
> "---------------------------------------------------"
> if self.number_of_links ==
> self.number_of_switches+1:
> self.topology_unknown=False
>
>
>
> ------------------------------------------------------------------------------
> Introducing Performance Central, a new site from SourceForge and
> AppDynamics. Performance Central is your source for news, insights,
> analysis and resources for efficient Application Performance Management.
> Visit us today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and
AppDynamics. Performance Central is your source for news, insights,
analysis and resources for efficient Application Performance Management.
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel