OpenFlow Data Plane Abstraction (OF-DPA) API Guide and Reference Manual
INDIGO OF-DPA Integration

The following sections give a brief overview of the steps involved in integrating Indigo Openflow agent with OF-DPA.

Indigo Code Organization

The Indigo agent code is organized into modules and submodules subdirectories. The modules comprise of the core architecture while code from other repositories are organized into submodules.

Architectural Overview

The architecture is divided into two sets of modules, platform independent modules and platform dependent modules. The implementation for platform independent modules is available in the Indigo repository. These include the Socket Manager, Connection Manager, State Manager and Configuration. The platform specific modules are not included in the Indigo distribution. These are the Forwarding and the Port Manager modules.

Platform-Specific Modules

Implementing Platform specific modules form an integral part of integrating the Indigo agent on a platform. These are implemented as indigo-ofdpa driver located in the folder openflow/ofdpa/ofagent/ofdpadriver. Changes done in the Indigo code are flagged with the macro OFDPA_FIXUP.

Forwarding Module

This module exposes interfaces that integrate with the platforms forwarding engine. The forwarding APIs are declared in the header file indigo/modules/indigo/module/inc/indigo/forwarding.h.

The following APIs are implemented:

Port Module

This module exposes interfaces that integrate with the ports of the platforms. The port APIs are declared in the header file indigo/modules/indigo/module/inc/indigo/port_manager.h

The following APIs are implemented

Asynchronous Messages

The following functions are implemented to add support for asynchronous messages sent by OF-DPA to the Controller

Indigo Initialization

The Indigo agent initialization code is implemented in the file openflow/ofdpa/ofagent/application/ofagent.c. This file primarily implements the following:

OF-DPA Changes in Indigo

Changes have been made in the following Indigo files for OF-DPA:

Compiling Indigo

Two top-level makefiles are used to compile Indigo:

A bunch of makefiles with the name "make.ofagent" have been added in the various modules and submodules of the Indigo code to compile Indigo. These are invoked through the above mentioned makefiles.

Executing Indigo

With reference to communication with a Controller, Indigo can be run in Active and Passive modes. It can also be in the Interprocess mode or a Single Process mode.

Active Mode

In this mode a Controller IP is passed as a command line argument and the agent connects to the Controller.

Passive Mode

In this mode the agent's local IP is passed as a command line argument and the agent listens on a socket on the IP. A Controller would need to connect to the agent for agent configurations.

Interprocess Mode

# ./ofagent –help
Jan 11 20:50:52.081 ofagent: MSG:
version 0.0.0.0 – Built on Sat Feb 15 2014 at 12:40:38 IST

Usage: ofagent [OPTION...]
Runs the main OFAgent application.

-a, –agentdebuglvl=AGENTDEBUGLVL The verbosity of OF Agent debug messages.
-l, –listen=IP:PORT Listen
-t, –controller=IP:PORT Controller
-?, –help Give this help list
–usage Give a short usage message
-V, –version Print program version

Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.

Default values: OFAGENTDEBUGLVL = 0 Valid OF Agent debug levels are 0 - 2.

Single-Process Mode

# ./ofagentapp –help
Jan 11 20:50:43.291 ofagent: MSG:
version 0.0.0.0 – Built on Wed Feb 12 2014 at 15:21:41 IST

Usage: ofagentapp [OPTION...]
Runs the main OFAgent application.

-a, –agentdebuglvl=AGENTDEBUGLVL The verbosity of OF Agent debug messages.
-c, –ofdpadebugcomp=OFPDACOMPONENT The OF-DPA component for which debug messages are enabled.
-d, –ofdpadebuglvl=OFDPADEBUGLVL The verbosity of OF-DPA debug messages.
-l, –listen=IP:PORT Listen
-t, –controller=IP:PORT Controller
-?, –help Give this help list
–usage Give a short usage message
-V, –version Print program version

Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.

Default values:
OFAGENTDEBUGLVL = 0
Valid OF Agent debug levels are 0 - 2.
OFDPADEBUGLVL = 0
Valid OF-DPA debug levels are 0 - 0.
No components enabled for debug:
Valid OF-DPA components are:
1 = API
2 = Mapping
3 = RPC
4 = OFDB
5 = Datapath