mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-01-30 04:52:03 +01:00
If a switch connects multiple times, there are a number of potential causes. A potential cause is that the OF agent on the switch crashed, and was re-launched - but, because of the crash, Ryu believes that the switch is still connected. Should this occur, the newly re-launched OF agent on the switch often clears the flow tables on the switch, before connecting to the controller. When the switch agent re-connects to Ryu, the state of the flow tables on the switch may not match what Ryu expects. As a result, I suggest generating a new event: EventDPReconnected Extending the existing EventDP would change semantics, and would break apps others have written that rely on those semantics. Applications registering a handler for EventDPReconnected would then be able to choose whether to wipe the flow tables on the switch and re-send flow rules, or whether to probe the switch with a flow-stats message, and re-send rules more carefully. Adding EventDPReconnected is the best solution to not break existing apps, and to implement the following portion of section 6.3.3 (“Connection Interruption”) of the OpenFlow 1.3.4 specification, for switches that have connected multiple times: " When the OpenFlow channel is reestablished, the flow entries present in the flow tables at that time are preserved and normal OpenFlow operation resumes. If desired, the controller has then the option of reading all flow entries with a flow-stats request (see 7.3.5.2), to re-synchronise its state with the switch state. Alternatively, the controller then has the option of deleting all flow entries with a flow-mod request (see 6.4), to start from a clean state on the switch. " Signed-off-by: Victor J. Orlikowski <vjo@duke.edu> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
What's Ryu
==========
Ryu is a component-based software defined networking framework.
Ryu provides software components with well defined API that make it
easy for developers to create new network management and control
applications. Ryu supports various protocols for managing network
devices, such as OpenFlow, Netconf, OF-config, etc. About OpenFlow,
Ryu supports fully 1.0, 1.2, 1.3, 1.4, 1.5 and Nicira Extensions.
All of the code is freely available under the Apache 2.0 license. Ryu
is fully written in Python.
Quick Start
===========
Installing Ryu is quite easy::
% pip install ryu
If you prefer to install Ryu from the source code::
% git clone git://github.com/osrg/ryu.git
% cd ryu; python ./setup.py install
If you want to use Ryu with `OpenStack <http://openstack.org/>`_,
please refer `networking-ofagent project <https://github.com/stackforge/networking-ofagent>`_.
If you want to write your Ryu application, have a look at
`Writing ryu application <http://ryu.readthedocs.org/en/latest/writing_ryu_app.html>`_ document.
After writing your application, just type::
% ryu-manager yourapp.py
Optional Requirements
=====================
Some functionalities of ryu requires extra packages:
- OF-Config requires lxml
- NETCONF requires paramiko
- BGP speaker (ssh console) requires paramiko
If you want to use the functionalities, please install requirements::
% pip install lxml
% pip install paramiko
Support
=======
Ryu Official site is `<http://osrg.github.io/ryu/>`_.
If you have any
questions, suggestions, and patches, the mailing list is available at
`ryu-devel ML
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>`_.
`The ML archive at Gmane <http://dir.gmane.org/gmane.network.ryu.devel>`_
is also available.
Description
Languages
Python
86.8%
Erlang
12.4%
C
0.4%
Shell
0.3%
JavaScript
0.1%