# Components of Ryu

## Executables

### bin/ryu-manager

The main executable.

## 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.dpset

Manage switches.

Planned to be replaced by ryu/topology.

### 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-230 Bundle Extension (without bundle properties)
> - 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-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.ofproto.ofproto_v1_5

OpenFlow 1.5 definitions.

### ryu.ofproto.ofproto_v1_5_parser

Decoder/Encoder implementations of OpenFlow 1.5.

## 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.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 client. Used by ryu.lib.of_config.