As seen on articles:
Multipath routing is a routing method which finds multiple routes to a destination in a network topology. Here is an Implementation of a Multipath Routing SDN Controller in Ryu (OpenFlow1.3).
Multipath routing with Ryu and Pyretic SDN Controllers
License: MIT License
File "/home/xxxx/ryu/ryu/app/ryu_multipath.py", line 229, in install_paths
return paths_with_ports[0][src][1]
When I want to run this experiment, the CMD reports this error. Then, we discover the controller cannot get the global view of the network by self.adjacency[node], defaultdict.
Can you tell me how to solve this problem? Whether the other files are changed?
I think this code doesn't install a group table into switch for ARP packet if there is a loop, which may cause severe ARP storm when the topology contains lots of loops(e.g., FAT Tree).
What do you need to run on 127.0.0.1:8008?
I have the following issue in the ryu log:
hub: uncaught exception: Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/ryu/lib/hub.py", line 77, in _launch
return func(*args, **kwargs)
File "/home/ryu/ryu/app/ryu_multipath.py", line 111, in measure_link
r = get(url)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/api.py", line 67, in get
return request('get', url, params=params, **kwargs)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/adapters.py", line 437, in send
raise ConnectionError(e, request=request)
ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8008): Max retries exceeded with url: /metric/127.0.0.1/911.ifoutoctets/json (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7ff650cca0d0>: Failed to establish a new connection: [Errno 111] ECONNREFUSED',))
DFS only can find multipath.
if put multipath together,that will have loop.
how to fix that
I test your app in a linear topology without problems, but when I tried it on a topology with multipaths it doesn't reach the host.
mininet> h0 ping -c 3 h1
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
--- 10.0.0.2 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 1999ms
The network is the following:
mininet> net
h0 h0-eth0:s0-eth1
h1 h1-eth0:s7-eth1
s0 lo: s0-eth1:h0-eth0 s0-eth2:s1-eth1 s0-eth3:s3-eth1 s0-eth4:s5-eth1
s1 lo: s1-eth1:s0-eth2 s1-eth2:s2-eth1
s2 lo: s2-eth1:s1-eth2 s2-eth2:s7-eth2
s3 lo: s3-eth1:s0-eth3 s3-eth2:s4-eth1
s4 lo: s4-eth1:s3-eth2 s4-eth2:s7-eth3
s5 lo: s5-eth1:s0-eth4 s5-eth2:s6-eth1
s6 lo: s6-eth1:s5-eth2 s6-eth2:s7-eth4
s7 lo: s7-eth1:h1-eth0 s7-eth2:s2-eth2 s7-eth3:s4-eth2 s7-eth4:s6-eth2
controller
This is an extract of the info reported by ryu app:
Available paths from 7 to 138627926075983 : []
Path installation finished in 2.90870666504e-05
Available paths from 138627926075983 to 7 : []
Path installation finished in 7.86781311035e-06
Available paths from 7 to 138627926075983 : []
Path installation finished in 1.4066696167e-05
Available paths from 138627926075983 to 7 : []
Path installation finished in 6.91413879395e-06
Available paths from 7 to 138627926075983 : []
Path installation finished in 1.21593475342e-05
Available paths from 138627926075983 to 7 : []
Path installation finished in 5.96046447754e-06
Available paths from 7 to 138627926075983 : []
Path installation finished in 2.50339508057e-05
Available paths from 138627926075983 to 7 : []
Path installation finished in 9.05990600586e-06
Available paths from 7 to 138627926075983 : []
Path installation finished in 1.59740447998e-05
Available paths from 138627926075983 to 7 : []
Path installation finished in 8.10623168945e-06
Available paths from 7 to 138627926075983 : []
Path installation finished in 1.50203704834e-05
Available paths from 138627926075983 to 7 : []
Path installation finished in 8.82148742676e-06
can you help us?
I was learning about RYU controller and was trying to run this multipath program and i am getting this following errors.
/home/ubuntu/ryu/ryu/topology/switches.py:478: UserWarning: Datapath#ports is kept for compatibility with the previous openflow versions (< 1.3). This not be updated by EventOFPPortStatus message. If you want to be updated, you can use 'ryu.controller.dpset' or 'ryu.topology.switches'.
for port in dp.ports.values():
Available paths from 6 to 1 : []
Path installation finished in 0.000164031982422
hub: uncaught exception: Traceback (most recent call last):
File "/home/ubuntu/ryu/ryu/lib/hub.py", line 52, in _launch
func(*args, **kwargs)
File "/home/ubuntu/ryu/ryu/base/app_manager.py", line 275, in _event_loop
handler(ev)
File "/home/ubuntu/ryu/ryu/app/ryu_multipath.py", line 289, in _packet_in_handler
out_port = self.install_paths(h1[0], h1[1], h2[0], h2[1], src_ip, dst_ip)
File "/home/ubuntu/ryu/ryu/app/ryu_multipath.py", line 214, in install_paths
return paths_with_ports[0][src][1]
IndexError: list index out of range
I was running the code using own topology created a follows
from mininet.topo import Topo
class MyTopo(Topo):
def __init__(self):
Topo.__init__(self)
#add hosts and switches
h1 = self.addHost( 'H1' )
h2 = self.addHost( 'H2' )
s1 = self.addSwitch( 'S1' )
s2 = self.addSwitch( 'S2' )
s3 = self.addSwitch( 'S3' )
s4 = self.addSwitch( 'S4' )
s5 = self.addSwitch( 'S5' )
s6 = self.addSwitch( 'S6' )
#add links
self.addLink( h1, s1 )
self.addLink( h2, s6 )
self.addLink( s1, s2 )
self.addLink( s2, s3 )
self.addLink( s3, s6 )
self.addLink( s1, s4 )
self.addLink( s4, s5 )
self.addLink( s5, s6 )
topos = { 'mytopo': (lambda:MyTopo() ) }
please provide us some solution to overcome these errors
This message appears many times in the ryu console when I create the topology:
ProjectController: Exception occurred during handler processing. Backtrace from offending handler [switch_leave_handler] servicing event [EventSwitchLeave] follows.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/ryu/base/app_manager.py", line 290, in _event_loop
handler(ev)
File "/usr/local/lib/python2.7/dist-packages/ryu/app/ryu_multipath.py", line 435, in switch_leave_handler
switch = event.dpid
AttributeError: 'EventSwitchLeave' object has no attribute 'dpid'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.