Components of Ryu¶
Base components¶
ryu.base.app_manager¶
The central management of Ryu applications.
- Load Ryu applications
- Provide contexts to Ryu applications
- Route messages among Ryu applications
OpenFlow controller¶
ryu.controller.controller¶
The main component of OpenFlow controller.
- Handle connections from switches
- Generate and route events to appropriate entities like Ryu applications
ryu.controller.ofp_event¶
OpenFlow event definitions.
ryu.controller.ofp_handler¶
Basic OpenFlow handling including negotiation.
OpenFlow wire protocol encoder and decoder¶
ryu.ofproto.ofproto_v1_0¶
OpenFlow 1.0 definitions.
ryu.ofproto.ofproto_v1_0_parser¶
Decoder/Encoder implementations of OpenFlow 1.0.
ryu.ofproto.ofproto_v1_2¶
OpenFlow 1.2 definitions.
ryu.ofproto.ofproto_v1_2_parser¶
Decoder/Encoder implementations of OpenFlow 1.2.
ryu.ofproto.ofproto_v1_3¶
OpenFlow 1.3 definitions.
ryu.ofproto.ofproto_v1_3_parser¶
This module implements OpenFlow 1.3.x.
This module also implements some of extensions shown in “OpenFlow Extensions for 1.3.X Pack 1”. Namely, the following extensions are implemented.
- EXT-236 Bad flow entry priority error Extension
- EXT-237 Set async config error Extension
- EXT-256 PBB UCA header field Extension
- EXT-260 Duplicate instruction error Extension
- EXT-264 Multipart timeout errors Extension
The following extensions are partially implemented.
- EXT-187 Flow entry notifications Extension (ONFMP_FLOW_MONITOR only)
- EXT-230 Bundle Extension (Error codes only)
- EXT-232 Table synchronisation Extension (Error codes only)
The following extensions are not implemented yet.
- EXT-191 Role Status Extension
- EXT-192-e Flow entry eviction Extension
- EXT-192-v Vacancy events Extension
ryu.ofproto.ofproto_v1_4¶
OpenFlow 1.4 definitions.
ryu.ofproto.ofproto_v1_4_parser¶
Decoder/Encoder implementations of OpenFlow 1.4.
Ryu applications¶
ryu.app.cbench¶
A dumb OpenFlow 1.0 responder for benchmarking the controller framework. Intended to be used with oflops cbench.
ryu.app.simple_switch¶
An OpenFlow 1.0 L2 learning switch implementation.
ryu.app.simple_isolation¶
MAC address based isolation logic.
ryu.app.simple_vlan¶
VLAN based isolation logic.
ryu.app.gre_tunnel¶
Flow table updater for OpenStack integration. Despite of the name, this isn’t GRE specific.
ryu.app.tunnel_port_updater¶
This module updates OVS tunnel ports for OpenStack integration.
ryu.app.quantum_adapter¶
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¶
This module provides a basic set of REST API.
Network registration
- End-point port management
- OpenFlow port number
- MAC address (for anti-spoofing)
Used by OpenStack Ryu plug-in.
ryu.app.rest_conf_switch¶
This module provides a set of REST API for switch configuration. - Per-switch Key-Value store
Used by OpenStack Ryu agent.
ryu.app.rest_quantum¶
This module provides a set of REST API dedicated to OpenStack Ryu plug-in.
- Interface (uuid in ovsdb) registration
- Maintain interface association to a network
Used by OpenStack Ryu plug-in.
ryu.app.rest_tunnel¶
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.