It's on line 104:

if src not in self.net: self.net.add_node(src) self.net.add_edge(dpid,src,{'
port':msg.in_port}) self.net.add_edge(src,dpid)

Flávio Castro Jr.
MSCS student at Georgia Tech
B.S.E in Networks Engineering from the University of Brasilia.
CCNA Certified
(404) 660-9373

On Fri, Jan 9, 2015 at 5:31 PM, Flavio Junior <flaviojr...@gmail.com> wrote:

> That is right.
>
> The topology API only talks to the switch. The way I did that was by
> learning the hosts when the ARPs arrive. If you look at the code you'll
> find it in the part who says if host is unknown.
>
> Regarding the backup path, I don't know what is your timeline, but you
> might also want to check other strategies. A friend of mine did something
> similar, but he would pre-compute the backup paths. That can add a lot of
> complexity, but it also adds a very interesting feature to the topology.
>
> Flávio Castro Jr.
> MSCS student at Georgia Tech
> B.S.E in Networks Engineering from the University of Brasilia.
> CCNA Certified
> (404) 660-9373
>
> On Fri, Jan 9, 2015 at 7:59 AM, Padma Jayasankar <padmaj...@gmail.com>
> wrote:
>
>> Hi,
>>   In Ryu, will the topology discovery find the links between the hosts
>> and the switch. when i checked the gui_topology app, it displays the links
>> in between the switches but doesn't show the links between the host and
>> switch.
>>  Please clarify.
>>
>> Thanks and Regards,
>> Padma V
>>
>> On Fri, Jan 9, 2015 at 9:39 AM, Flavio Junior <flaviojr...@gmail.com>
>> wrote:
>>
>>> I guess the problem is that I only add links to the graph, I don't
>>> update it. So you have to figure out a way to dynamically update the graph.
>>>
>>> I don't understand why you are using the EventLinkAdd methods from the
>>> topology class. What are you trying to do again?
>>>
>>> Flávio Castro Jr.
>>> MSCS student at Georgia Tech
>>> B.S.E in Networks Engineering from the University of Brasilia.
>>> CCNA Certified
>>> (404) 660-9373
>>>
>>> On Thu, Jan 8, 2015 at 11:01 PM, Padma Jayasankar <padmaj...@gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>   Now shortestpath is working with my topology..i am able to ping b/w
>>>> the hosts.
>>>>   But, when i am trying to make a link down, the updated topology is
>>>> not getting reflected in shortestpath. According to my understanding, i
>>>> have to add handlers in the app for EventLinkAdd and EventLinkDelete. Is it
>>>> the correct approach?Pease clarify.
>>>>
>>>>
>>>> Thanks and Regards,
>>>> Padma V
>>>>
>>>> On Wed, Jan 7, 2015 at 11:52 PM, Padma Jayasankar <padmaj...@gmail.com>
>>>> wrote:
>>>>
>>>>> HI,
>>>>>  Thanks, will try with this
>>>>>
>>>>> On Wed, Jan 7, 2015 at 11:43 PM, Flavio Junior <flaviojr...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I can't help without seeing your code because it's a KeyError.
>>>>>>
>>>>>> Make sure link.src is what you are looking for. I guess link.src is
>>>>>> an object rather than a string, so it may be it.
>>>>>>
>>>>>> One thing that was really useful for me was this method to figure out
>>>>>> the exact content of the given objects.
>>>>>>
>>>>>> def ls(self,obj):
>>>>>>     print("\n".join([x for x in dir(obj) if x[0] != "_"]))
>>>>>>
>>>>>>
>>>>>>
>>>>>> Flávio Castro Jr.
>>>>>> MSCS student at Georgia Tech
>>>>>> B.S.E in Networks Engineering from the University of Brasilia.
>>>>>> CCNA Certified
>>>>>> (404) 660-9373
>>>>>>
>>>>>> On Wed, Jan 7, 2015 at 12:27 PM, Padma Jayasankar <
>>>>>> padmaj...@gmail.com> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>   Now the topology discovery identifies the links and am able to
>>>>>>> ping b/w two hosts..But when i am trying to down a link(link s3 s7 
>>>>>>> down),
>>>>>>> it gives some error. Further if i try to ping it doesn't compute the
>>>>>>> alternate path. Instead it shows"destination not reachable"
>>>>>>>
>>>>>>> *Error:*
>>>>>>> hub: uncaught exception: Traceback (most recent call last):
>>>>>>>   File "/usr/local/lib/python2.7/
>>>>>>> dist-packages/ryu/lib/hub.py", line 52, in _launch
>>>>>>>     func(*args, **kwargs)
>>>>>>>   File
>>>>>>> "/usr/local/lib/python2.7/dist-packages/ryu/topology/switches.py", line
>>>>>>> 819, in link_loop
>>>>>>>     self.links.link_down(link)
>>>>>>>   File
>>>>>>> "/usr/local/lib/python2.7/dist-packages/ryu/topology/switches.py", line
>>>>>>> 329, in link_down
>>>>>>>     del self._map[link.src]
>>>>>>> KeyError: <ryu.topology.switches.Port object at 0x29a2a90>
>>>>>>>
>>>>>>> Could u please help to solve this issue
>>>>>>>
>>>>>>> On Mon, Jan 5, 2015 at 12:11 AM, Flavio Junior <
>>>>>>> flaviojr...@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi.
>>>>>>>>
>>>>>>>> Sometimes the topology discovery would not work for, apparently, no
>>>>>>>> reason. Are there any known bugs there?
>>>>>>>>
>>>>>>>> I know it's a huge pain to debug the topology discovery but if you
>>>>>>>> can't build the view of the topology then you won't be able to forward.
>>>>>>>>
>>>>>>>> What solved the problem was the order in which I would start
>>>>>>>> mininet/ryu. So try starting ryu after mininet if you are not doing 
>>>>>>>> that,
>>>>>>>> or the opposite if that's the case.
>>>>>>>>
>>>>>>>> Flavio Castro
>>>>>>>>
>>>>>>>> On Sun, Jan 04, 2015 at 8:27 AM, Padma Jayasankar <
>>>>>>>> padmaj...@gmail.com> wrote:
>>>>>>>>
>>>>>>>> HI,
>>>>>>>> I tried shortest path code with two topologies(with loops). For the
>>>>>>>> simple one with 3 switches it worked. But for the other with 9 
>>>>>>>> switches it
>>>>>>>> displays the "list of links" as follows and when i try to ping, i got
>>>>>>>> "destination unreachable". I am not able to find the reason. Could u 
>>>>>>>> please
>>>>>>>> help to solve the issue? I have given the topology and the o/p below.
>>>>>>>>
>>>>>>>> *Topology:*
>>>>>>>> """Custom topology example
>>>>>>>> 2 hosts and 8 switches(with loops)
>>>>>>>>
>>>>>>>> """
>>>>>>>>
>>>>>>>> from mininet.topo import Topo
>>>>>>>>
>>>>>>>> class MyTopo( Topo ):
>>>>>>>> "Simple topology example."
>>>>>>>>
>>>>>>>> def __init__( self ):
>>>>>>>> "Create custom topo."
>>>>>>>>
>>>>>>>> # Initialize topology
>>>>>>>> Topo.__init__( self )
>>>>>>>>
>>>>>>>> # Add hosts and switches
>>>>>>>> leftHost = self.addHost( 'h1' )
>>>>>>>> rightHost = self.addHost( 'h2' )
>>>>>>>> leftSwitch = self.addSwitch( 's3' )
>>>>>>>> midSwitch1 = self.addSwitch( 's4' )
>>>>>>>> midSwitch2 = self.addSwitch( 's5' )
>>>>>>>> midSwitch3 = self.addSwitch( 's6' )
>>>>>>>> midSwitch4 = self.addSwitch( 's7' )
>>>>>>>> midSwitch5 = self.addSwitch( 's8' )
>>>>>>>> midSwitch6 = self.addSwitch( 's9' )
>>>>>>>> midSwitch7 = self.addSwitch( 's10' )
>>>>>>>> rightSwitch = self.addSwitch( 's11' )
>>>>>>>>
>>>>>>>> # Add links
>>>>>>>> self.addLink( leftHost, leftSwitch )
>>>>>>>> self.addLink( leftSwitch, midSwitch1 )
>>>>>>>> self.addLink( leftSwitch, midSwitch4 )
>>>>>>>> self.addLink( midSwitch1, midSwitch2 )
>>>>>>>> self.addLink( midSwitch1, midSwitch6 )
>>>>>>>> self.addLink( midSwitch2, midSwitch3 )
>>>>>>>> self.addLink( midSwitch3, midSwitch7 )
>>>>>>>> self.addLink( midSwitch3, rightSwitch )
>>>>>>>> self.addLink( midSwitch6, midSwitch4 )
>>>>>>>> self.addLink( midSwitch4, midSwitch5 )
>>>>>>>> self.addLink( midSwitch5, midSwitch7 )
>>>>>>>> self.addLink( midSwitch5, rightSwitch )
>>>>>>>> self.addLink( rightSwitch, rightHost )
>>>>>>>>
>>>>>>>>
>>>>>>>> topos = { 'mytopo': ( lambda: MyTopo() ) }
>>>>>>>>
>>>>>>>> * Output*:
>>>>>>>> [('1a:5a:80:13:c6:88', 3), (3, '1a:5a:80:13:c6:88'), (3, 4), (3,
>>>>>>>> 5), (3, 7), (3, '7a:e0:42:3f:43:6c'), (3, '5a:ad:d3:ff:a3:bf'), (3,
>>>>>>>> 'ca:3d:88:e0:9a:ae'), (3, '9e:f3:a0:76:66:4d'), (3, 
>>>>>>>> '5e:aa:98:96:4d:35'),
>>>>>>>> (3, 'd6:c8:2f:4f:c6:0d'), (4, 3), (4, 5), (4, '0e:2a:7b:f8:01:93'), (4,
>>>>>>>> '1e:8d:b2:c4:1b:4c'), (4, 9), (4, '92:a9:20:d5:53:db'), (4,
>>>>>>>> '22:61:b2:eb:8e:b4'), (4, '0a:9c:68:b3:ca:bc'), (4, 
>>>>>>>> '7e:80:62:59:a2:bc'),
>>>>>>>> (4, '3e:71:c4:4a:c7:41'), (5, 3), (5, 4), (5, 6), (5, 
>>>>>>>> 'f2:60:bf:5e:48:85'),
>>>>>>>> (5, '06:b1:18:f4:97:c1'), (5, '06:21:a5:1e:f5:a2'), (5,
>>>>>>>> '0a:be:81:3b:ff:4d'), (5, '6e:75:10:aa:61:14'), (6, 
>>>>>>>> '72:1d:1a:4f:6d:63'),
>>>>>>>> (6, 10), (6, 5), (6, '52:72:8d:59:c9:bb'), (7, 'b2:82:29:6b:0a:f5'), 
>>>>>>>> (7,
>>>>>>>> 3), (7, 8), (7, 9), (7, '9e:8f:84:40:03:40'), (7, 
>>>>>>>> '56:95:25:54:ce:02'), (8,
>>>>>>>> '06:05:ce:ee:71:87'), (8, '26:11:6f:94:9d:ca'), (8, 
>>>>>>>> 'fa:f6:43:45:19:4d'),
>>>>>>>> (8, 7), (8, 10), (8, 'de:0f:9b:2b:49:bd'), (9, 4), (9,
>>>>>>>> '9a:a4:04:22:4a:75'), (9, '3e:81:2f:d8:c7:77'), (9, 7), (10, 8), (10,
>>>>>>>> '42:0b:0f:4a:da:55'), (10, '2a:9e:7c:68:48:5d'), (10, 6), (10,
>>>>>>>> 'e2:fd:fc:c4:06:45'), ('ca:3d:88:e0:9a:ae', 3), ('5e:aa:98:96:4d:35', 
>>>>>>>> 3),
>>>>>>>> ('2a:9e:7c:68:48:5d', 10), ('fa:f6:43:45:19:4d', 8), 
>>>>>>>> ('0a:be:81:3b:ff:4d',
>>>>>>>> 5), ('92:a9:20:d5:53:db', 4), ('f2:60:bf:5e:48:85', 5),
>>>>>>>> ('5a:ad:d3:ff:a3:bf', 3), ('06:b1:18:f4:97:c1', 5), 
>>>>>>>> ('0a:9c:68:b3:ca:bc',
>>>>>>>> 4), ('e2:fd:fc:c4:06:45', 10), ('3e:71:c4:4a:c7:41', 4),
>>>>>>>> ('b2:82:29:6b:0a:f5', 7), ('0e:2a:7b:f8:01:93', 4), 
>>>>>>>> ('7a:e0:42:3f:43:6c',
>>>>>>>> 3), ('7e:80:62:59:a2:bc', 4), ('9a:a4:04:22:4a:75', 9),
>>>>>>>> ('9e:f3:a0:76:66:4d', 3), ('6e:75:10:aa:61:14', 5), 
>>>>>>>> ('06:05:ce:ee:71:87',
>>>>>>>> 8), ('26:11:6f:94:9d:ca', 8), ('de:0f:9b:2b:49:bd', 8),
>>>>>>>> ('3e:81:2f:d8:c7:77', 9), ('1e:8d:b2:c4:1b:4c', 4), 
>>>>>>>> ('9e:8f:84:40:03:40',
>>>>>>>> 7), ('22:61:b2:eb:8e:b4', 4), ('42:0b:0f:4a:da:55', 10),
>>>>>>>> ('06:21:a5:1e:f5:a2', 5), ('72:1d:1a:4f:6d:63', 6), 
>>>>>>>> ('52:72:8d:59:c9:bb',
>>>>>>>> 6), ('56:95:25:54:ce:02', 7), ('d6:c8:2f:4f:c6:0d', 3)]
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Dec 31, 2014 at 10:00 PM, Flavio Junior <
>>>>>>>> flaviojr...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Yes, I had a 5 nodes ring topology and it worked fine.
>>>>>>>>>
>>>>>>>>> But the flood actions are probably causing a flood storm.
>>>>>>>>>
>>>>>>>>> Spanning tree is not added to the code. It shouldn't be hard to
>>>>>>>>> add it thou.
>>>>>>>>>
>>>>>>>>> I created this post
>>>>>>>>> <http://sdn-lab.com/2014/12/25/shortest-path-forwarding-with-openflow-on-ryu/#more-108>
>>>>>>>>> in my blog trying to explain the code a little better.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Flávio Castro Jr.
>>>>>>>>> MSCS student at Georgia Tech
>>>>>>>>> B.S.E in Networks Engineering from the University of Brasilia.
>>>>>>>>> CCNA Certified
>>>>>>>>> (404) 660-9373
>>>>>>>>>
>>>>>>>>> On Wed, Dec 31, 2014 at 10:16 AM, Padma Jayasankar <
>>>>>>>>> padmaj...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> HI,
>>>>>>>>>> Will this code work for the networks which have loops. If not, is
>>>>>>>>>> it possible to incorporate this code with simple_switch_stp.py? 
>>>>>>>>>> Please
>>>>>>>>>> clarify.
>>>>>>>>>>
>>>>>>>>>> Thanks and Regards,
>>>>>>>>>> Padma V
>>>>>>>>>>
>>>>>>>>>> On Fri, Dec 19, 2014 at 6:20 AM, Flavio Junior <
>>>>>>>>>> flaviojr...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> I just posted it to github here:
>>>>>>>>>>> https://github.com/castroflavio/ryu
>>>>>>>>>>>
>>>>>>>>>>> Please take a look at the code (shortestpath.py). The most
>>>>>>>>>>> important parts are the networkx SP computation and the topology 
>>>>>>>>>>> discovery
>>>>>>>>>>> (ryu.topology). Networkx is a python library to do graph operations.
>>>>>>>>>>>
>>>>>>>>>>> We just finished the project, so I wasn't able to delete
>>>>>>>>>>> unnecessary info there. Feel free to modify it and add your name to 
>>>>>>>>>>> the
>>>>>>>>>>> list of collaborators. Also, if you use our code as starting point 
>>>>>>>>>>> I'd be
>>>>>>>>>>> extremely glad if recognize it on your code.
>>>>>>>>>>>
>>>>>>>>>>> It's a very simple code. If you still have doubts after spending
>>>>>>>>>>> some time reading I'll be glad to answer your questions.
>>>>>>>>>>>
>>>>>>>>>>> *Flávio Jr*
>>>>>>>>>>>
>>>>>>>>>>> (61) 8448-4003
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Dec 18, 2014 at 6:35 PM, Padma Jayasankar <
>>>>>>>>>>> padmaj...@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> Thanks for the info..But i haven't used networkx earlier..I
>>>>>>>>>>>> have to do the shortest path calculation in openflow networks..If 
>>>>>>>>>>>> i ues
>>>>>>>>>>>> networkx, can it be used with openflow(Am using Mininet,Ryu and 
>>>>>>>>>>>> OVS).
>>>>>>>>>>>> Please clarify.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks and Regards,
>>>>>>>>>>>> Padma V
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Dec 18, 2014 at 10:08 PM, Flavio Junior <
>>>>>>>>>>>> flaviojr...@gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> I've done shortest path forwarding using networkx. You can get
>>>>>>>>>>>>> the topology using the get topology api.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I haven't posted my code to github yet, but I'll do it asap.
>>>>>>>>>>>>> Let me know if there are other solutions.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Dec 18, 2014 at 10:41 AM, Padma Jayasankar <
>>>>>>>>>>>>> padmaj...@gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>> I am new to Rye. I went through ryu ebook to know the basics.
>>>>>>>>>>>>> For my project , i have to find the backup path along with 
>>>>>>>>>>>>> working path
>>>>>>>>>>>>> when a ping request comes. Am using Mininet , OVS and Ryu. 
>>>>>>>>>>>>> Earlier i used
>>>>>>>>>>>>> POX and used the l2_multi that computes the shortest path by 
>>>>>>>>>>>>> accessing the
>>>>>>>>>>>>> topology. Now as i want to use openflow 1.3 features , i am 
>>>>>>>>>>>>> moving to Ryu.
>>>>>>>>>>>>> In Ryu is thee any app which is equivalent to l2_multi. If not is 
>>>>>>>>>>>>> it
>>>>>>>>>>>>> possible to write such one..If yes, please give some guidance.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks and Regards,
>>>>>>>>>>>>> Padma V
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>>>>>>>>>>> from Actuate! Instantly Supercharge Your Business Reports and
>>>>>>>>>>> Dashboards
>>>>>>>>>>> with Interactivity, Sharing, Native Excel Exports, App
>>>>>>>>>>> Integration & more
>>>>>>>>>>> Get technology previously reserved for billion-dollar
>>>>>>>>>>> corporations, FREE
>>>>>>>>>>>
>>>>>>>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Ryu-devel mailing list
>>>>>>>>>>> Ryu-devel@lists.sourceforge.net
>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to