Giter VIP home page Giter VIP logo

multipath's Introduction

Multipath Routing SDN Controller

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's People

Contributors

srini084 avatar wildan2711 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

multipath's Issues

IndexError: list index out of range

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?

Thank you!
Error
Error2

ARP storm

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).

ConnectionError

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',))

about loop free probem

DFS only can find multipath.

if put multipath together,that will have loop.

how to fix that

No connectivity between hosts

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

user warning and hub.py problem

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

AttributeError: 'EventSwitchLeave' object has no attribute 'dpid'

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'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.