Skip to content
This repository has been archived by the owner on Jan 20, 2022. It is now read-only.
Hechao Li edited this page Apr 5, 2018 · 1 revision

What is OVSDB Client Library?

OVSDB Client Library is an open-source Java implementation of Open vSwitch Database Management Protocol (RFC 7047). It can be used to interact with any OVSDB server compatible with RFC 7047.

What is OVSDB Client Library for?

SDN (Software-Defined Network) Controller

Configure Open vSwitch Deamon

Open vSwitch Deamon(ovs-vswitchd) is a daemon that manages and controls any number of Open vSwitch switches on a local machine [1]. The configuration data for ovs-vswitched is stored in an OVSDB server with Open_vSwitch database schema. As shown below:

      +----------------------+
      |      Control &       |
      |     Management       |
      |      Cluster         |
      +----------------------+
         |                \
         | OVSDB           \ OpenFlow
         | Mgmt             \
         |                   \
   +============================================+
   | +--------------+       +--------------+    |
   | |              |       |              |    |
   | | ovsdb-server |-------| ovs-vswitchd |    |
   | |              |       |              |    |
   | +--------------+       +--------------+    |
   |                               |            |
   |                        +----------------+  |
   |                        | Forwarding Path|  |
   |                        +----------------+  |
   +============================================+

The utilities for querying and updating the configuration of ovs-vswitchd provided by OvS project are all written in C, making it hard for a Java control and management cluster to configure the deamon. One solution is to run an C agent together with the deamon, which receives the configuration from the Java controller and then configures the deamon. Now, with the help of this library, this agent is not needed and the Java controller can configure ovs-vswitchd directly.

Configure Hardware VTEP

SDN abstracts the network from physical devices and topology using overlay protocols such as VXLAN, GENEVE, etc. However, many networking appliances and physical servers such as proprietary networking appliances and legacy physical servers do not support these protocols. For these situations, you must provide a bridge between the physical and virtual network. One solution provided by VMware NSX is to use a hardware gateway as a VXLAN Tunnel EndPoint (VTEP). A hardware VTEP is basically a physical switch that runs an OVSDB server with hardware_vtep database schema. The SDN controller configures a hardware VTEP by populating the OVSDB tables. In this scenario, the SDN controller can use this library to interact with the OVSDB server running on the hardware VTEP.

OVSDB Server Implementation Testing

According to RFC 7047, "An OVSDB server MUST implement all of the following methods. An OVSDB client MUST implement the 'Echo' method and is otherwise free to implement whichever methods suit the implementation’s needs." Since all RPC methods are implemented by this library, it can be used to validate the correctness of an OVSDB server implementation.

Key Features

  • Schema-independent - The OVSDB Client library does not depend on any specific OVSDB schema. It can operate on all valid OVSDB databases. Currently, OvS project defines two OVSDB schema: Open_vSwitch schema and hardware_vtep schema. But the user can also define their own schema on an OVSDB server and use this library to interact with it.
  • Completely Asynchronous Interfaces - All the interfaces provided by this library are asynchronous. This enables asynchronous programming for the library user.
  • ORM and JPA-like interfaces (WIP) - This feature is still under development. Once the ORM layer is added, the user can define entities with JPA annotation and use JPA-like interfaces to do CRUD operations on an OVSDB server. That means the user does not need to know anything about the OVSDB management protocol but can still use this library.