Skip to content
YAMAMOTO Takashi edited this page Apr 24, 2013 · 8 revisions

Components of Ryu

Executables

bin/ryu-manager

The main executable.

Base components

ryu/base/app_manager.py

The central management of Ryu applications.

  • Load Ryu applications.
  • Provide 'contexts' to Ryu applications.
  • Route messages among Ryu applications.

OpenFlow controller

ryu/controller/controller.py

The main component of OpenFlow controller.

  • Handle connections from switches.
  • Generate and route events to appropriate entities like Ryu Applications.

ryu/controller/dpset.py

Manage switches. Planned to be replaced by ryu/topology.

ryu/controller/ofp_event.py

OpenFlow event definitions.

ryu/controller/ofp_handler.py

Basic OpenFlow handling including negotiation.

OpenFlow wire protocol encoder and decoder

ryu/ofproto

Ryu applications

ryu/app/cbench.py

A dumb OpenFlow 1.0 responder for benchmarking the controller framework. Intended to be used with oflops cbench.

ryu/app/simple_switch.py

An OpenFlow 1.0 L2 learning switch implementation.

ryu/app/simple_isolation.py

MAC address based isolation logic.

ryu/app/simple_vlan.py

VLAN based isolation logic.

ryu/app/gre_tunnel.py

Flow table updater for OpenStack integration. Despite of the name, this isn't GRE specific.

ryu/app/tunnel_port_updater.py

Tunnel port updater for OpenStack integration.

ryu/app/quantum_adapter.py

Listen OpenFlow port status change notifications from switches. Consult ovsdb to retrieve the corresponding port uuid. Notify relevant parties, including quantum (via Ryu plug-in) and Ryu applications. (via Ryu Events)

ryu/app/rest.py

Provide a basic set of REST API. Used by OpenStack Ryu plug-in.

  • Network registration
  • End-point port management (OpenFlow port number, MAC address for anti-spoofing)

ryu/app/rest_conf_switch.py

Provide a set of REST API for switch configurations. Used by OpenStack Ryu agent.

  • Per-switch Key-Value store

ryu/app/rest_quantum.py

Provide a set of REST API dedicated to OpenStack quantum Ryu plug-in. Used by OpenStack Ryu plug-in.

  • Interface (uuid in ovsdb) registration
  • Manage interface association to a network.

ryu/app/rest_tunnel.py

Provide a set of REST API for tunnel key management. Used by OpenStack Ryu plug-in.

  • Tunnel key registration for a network
  • Manage switches and their ports which are used to establish a tunnel

ryu/topology

Switch and link discovery module. Planned to replace ryu/controller/dpset.

Libraries

ryu/lib/packet

Ryu packet library. Decoder/Encoder implementations of popular protocols like TCP/IP.

ryu/lib/ovs

ovsdb interaction library.

ryu/lib/of_config

OF-Config implementation.

ryu/lib/netconf

NETCONF definitions used by ryu/lib/of_config.

ryu/lib/xflow

An implementation of sFlow and NetFlow.

Third party libraries

ryu/contrib/ovs

Open vSwitch python binding. Used by ryu/lib/ovs.

ryu/contrib/oslo/config

Oslo configuration library. Used for ryu-manager's command-line options and configuration files.

ryu/contrib/ncclient

Python library for NETCONF clients. Used by ryu/lib/of_config.

Clone this wiki locally