My Wiki!

OVSDB Dev

Learning Path

Developer guide:

Integration Design

https://wiki.opendaylight.org/view/OVSDB_Integration:Design

The controller

In the SDN space, controllers and applications can interact with the OpenVSwitch by means of two different channels : OpenFlow and OVSDB. While the protocol OpenFlow addresses the forwarding-side of the OVS functionality, OVSDB addresses the management-plane. A simple and concise overview of OVSDB can be found at http://networkstatic.net/getting-started-ovsdb/ (Thanks to Brent's tireless efforts).

The controller comprises many Java OSGi bundles that work together to provide the needed controller functionalities. The bundles are placed in the following broad categories:

Network Service Functional Modules (such as Topology Manager, Inventory Manager, Forwarding Rules Manager,...)
NorthBound API Modules (such as Topology APIs, Bridge Domain APIs, Neutron APIs, Connection Manager APIs, ...)
Service Abstraction Layer(SAL)- (Inventory Services, DataPath Services, Topology Services, Network Config,...)
SouthBound Plugins (OpenFlow Plugin, OVSDB Plugin, OpenDove Plugin,...)
Application Modules (Simple Forwarding, Load Balancer)
              +--------------+--------------+-----------+
              |  Connection  |Network Config|  Neutron  |
              |  Service APIs|     APIs     |    APIs   |
              +--------------+--------------+-----------+
              |       NorthBound API Layer (REST)       |
              +-----------------------------------------+
              +-----------------------------------------+
              | +------------+ +---------+ +---------+  |
              | |Connection  | |Topology | | Switch  |  |
              | |  Manager   | | Manager | | Manager |  |
              | +------------+ +---------+ +---------+  |
              |    Network Service Functions Layer      |
              +-----------------------------------------+
              +-----------------------------------------+
              |  +------------+ +---------+ +---------+ |
              |  |Connection  | |Data Pkt | |Inventory| |
              |  |  Service   | | Service | | Service | |
              |  +------------+ +---------+ +---------+ |
              |     Service Abstraction Layer (SAL)     |
              +-----------------------------------------+
              +-----------------------------------------+
              |            SouthBound API Layer         |
              |  +----------------+ +----------------+  |
              |  | OpenFlow Plugin| | OVSDB Plugin   |  |
              |  | +------------+ | | +------------+ |  |
              |  | | Flow Prog  | | | | Connection | |  |
              |  | |  Service   | | | |  Service   | |  |
              |  | +------------+ | | +------------+ |  |
              |  | +------------+ | | +------------+ |  |
              |  | | Data Pkt   | | | | Net Config | |  |
              |  | |  Service   | | | |  Service   | |  |
              |  | +-----.------+ | | +-----.------+ |  |
              |  |       .        | |       .        |  |
              |  +----------------+ +----------------+  |
              +-----------------------------------------+

Each of the SouthBound Plugins serves a different purpose, with some overlapping. For example, the OpenFlow plugin might serve the Data-Plane needs of an OVS element while the OVSDB plugin can serve the management plane needs of the same OVS element. As the Openflow Plugin talks OpenFlow protocol with the OVS element, the OVSDB plugin will use OVSDB schema over JSON-RPC transport.

The OVSDB tables can be viewed with the following command:

  ovsdb-client dump

The command can be called remotely also:

  ovsdb-client dump tcp:172.16.58.131:6640

ovsdb-client dump tcp:172.16.58.131:6640

OVSDB Southbound plugin

The OpenDaylight OVSDB southbound plugin consists of one or more OSGi bundles addressing the following services or functionalities :

Connection Service - Based on Netty
Network Configuration Service
Bidirectional JSON-RPC Library
OVSDB Schema definitions and Object mappers
Overlay Tunnel management
OVSDB to OpenFlow plugin mapping service
Inventory Service

.

Connection Service - Based on Netty

Every succesful connection to a network element will result in a Node object (Refer to OpenDaylight SAL Node.java) with the type = “OVSDB” and value = User-Readable Name of the Connection as specified by the Connection Manager. This Node object is returned to the OpenDaylight Connection Manager and the application that invoked the Connect() functionality.

IPluginInConnectionService : public Node connect(String identifier, Map<ConnectionConstants, String> params)

.

Southbound

Northbound

Openflowplugin

Testing

  mvn clean install -Dskip
  mvn install -DskipTests -DskipIT -nsu
  

Load karaf feature:

  feature:install odl-mdsal-apidocs odl-netconf-mdsal odl-restconf

Load dlux:

  feature:install odl-dlux-all

Load ovsdb feature:

  feature:install odl-ovsdb-library odl-ovsdb-schema-openvswitch odl-ovsdb-schema-hardwarevtep odl-ovsdb-plugin odl-ovsdb-northbound \
  odl-ovsdb-compatibility-layer odl-ovsdb-ovssfc
  

Load l2switch

  feature:install odl-l2switch-all
  

Now mininet ping work!!

openflowplugin

Following should be installed:

  odl-openflowplugin-southbound odl-openflowplugin-flow-services odl-openflowplugin-nsf-services odl-openflowplugin-nsf-model
  
  feature:install odl-openflowplugin-flow-services-rest

Then the end-to-end tutorials here should work: https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:User_Guide

All in one:

feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-core

Log

  tail -f distribution/distribution-karaf/target/assembly/data/log/karaf.log
  

dlux

karaf> http:list | grep -i dlux
271 | DluxLoaderIndexServlet | ServletModel-33   | Deployed    | /index.html                  | [/index.html/*]                                             
271 | ResourceServlet        | /dlux             | Deployed    | /                            | [/]                 

Mininet

  mn --topo single,3 --mac --switch ovsk,protocols=OpenFlow13 --controller remote,ip=10.10.11.44,port=6653
  

python:


Navigation