Understanding the controller architecture

The HPE VAN SDN Controller is designed as a platform for custom solutions and extended functions. The controller provides Java and REST API interfaces for applications to interface with and to program the network.

Software stack

The controller software is built upon off-the-shelf Ubuntu Linux, Java 1.7, and OSGi (Virgo stack and Equinox framework). The controller stack resides on top of these platforms. HPE VAN SDN Controller software stack illustrates this stack. The paragraphs following the figure provide short descriptions of the controller components shown in the figure.

HPE VAN SDN Controller software stack

Keystone

Keystone is an external service that provides authentication and high level authorization services. It supports token-based authentication, which is used to secure the RESTful web services (REST APIs) and the web user interfaces.

REST API Shell/Framework

Jersey is a JAX-RS (JSR 311) reference Implementation for building RESTful Web services. In Representational State Transfer (REST) architectural style, data and functionality are considered resources, and these resources are accessed using Uniform Resource Identifiers (URIs), typically links on the web. REST-style architectures conventionally consist of clients and servers and they are designed to use a stateless communication protocol, typically HTTP. Clients initiate requests to servers; servers process requests and return appropriate responses. Requests and responses are built around the transfer of representations of resources. Clients and servers exchange representations of resources using a standardized interface and protocol. These principles encourage RESTful applications to be simple, lightweight, and have high performance.

For an example of how the sample application uses the REST API framework, see Creating a REST API and Domain service REST API integration.

GUI Shell/Framework

The HPE VAN SDN Controller also offers a framework to develop web-based user interfaces: The SKI Framework.

For information about using the SKI Framework to add a UI to your application, see Extending the controller GUI.

For an example of how the sample application uses the GUI API framework, see Creating a GUI.

PostgreSQL

PostgreSQL is used for persisting controller and application data.

App Deployment

The controller Application Manager enables installing, upgrading, enabling (starting), disabling (stopping), and uninstalling SDN applications on the controller. When you create applications to be installed on the controller (internal applications), your applications must comply with the requirements for these kinds of applications.

For more information about application requirements and interacting with the controller application manager, see Requirements for applications installed on the controller and Including Debian packages with applications to be installed on the controller

Audit Log

The audit log records events related to activities, operations, and configuration changes initiated by an authorized user. The audit log is managed by the controller audit log service.

For information about adding entries to the audit log, see Integrating your application with the audit log and alert logs.

For an example of how the sample application integrates with the audit log, see Auditing with logs.

Alerts

The alert log records information about events that affect controller operation, and in some cases indicate that some action is needed to correct a condition. Alerts are managed by the controller alert service.

For information about adding alerts, see Integrating your application with the audit log and alert logs.

For an example of how the sample application adds alerts, see Posting alerts.

Topology

The controller uses the embedded applications Topology Manager and Topology Viewer to collect and display information about the OpenFlow network.

For information about the Topology Manager and the APIs it publishes, see Topology Manager. For information about the Topology Viewer, see Topology Viewer.

Backup and restore framework (not shown)

The HPE VAN SDN Controller provides a framework to back up and restore controller and application state in a backup file. The backup file can be copied and stored for later use. The stored backup file can be uploaded to the controller.

For information about integrating your application with the backup and restore framework, see Integrating your application with the controller backup and restore framework

Distributed Coordination Framework

The Distributed Coordination Framework is one of the high-availability features of the controller. It provides the infrastructure for controller-to-controller communication and coordination of state information for controllers in a controller team.

For more information about the high-availablity features of the controller and creating team-aware applications, see Understanding the high-availability features of the controller.

Teaming

The HPE VAN SDN Controller can be configured in a team. The teaming services of the controller keeps the runtime state of each controller in the team (active, unreachable, or suspended) up to date and is used by other parts of the controller for functions related to high-availability.

For more information about the high-availablity features of the controller and creating team-aware applications, see Understanding the high-availability features of the controller.

Device Drivers

The Device Drivers model the capabilities of the devices and provide APIs for interacting with different device types.

For information about integrating your application with devices, see Interacting with devices. For more information about the device driver framework, see Understanding the device driver framework.

Discovery

The controller uses the embedded applications OpenFlow Link Discovery and OpenFlow Node Discovery to discover information about the OpenFlow network.

For information about the OpenFlow Link Discovery application, see OpenFlow Link Discovery. For information about the OpenFlow Node Discovery application, see OpenFlow Node Discovery.

OpenFlow Controller

The OpenFlow controller (also called the core controller) handles the connections from OpenFlow devices and provides the means for upper layers of software to interact with those devices.

For information about integrating your application with the OpenFlow controller, see Interacting with the built-in OpenFlow controller.

For information about the sample application interacts with the OpenFlow controller, see Using the built-in OpenFlow Controller.

Cassandra

Apache Cassandra is a high performance, extremely scalable, fault tolerant (no single point of failure), distributed post-relational database solution. Cassandra combines all the benefits of Google Bigtable and Amazon Dynamo to handle the types of database management needs that traditional RDBMS vendors cannot support. Cassandra is used for persisting application data.

OSGi (Virgo/Equinox)

The principal software stack of the controller uses an OSGi framework (Equinox) and a container (Virgo) as a basis for modular software deployment and to enforce service provider/consumer separation. The software running in the principal OSGi container can interact with other components running as other processes on the controller. Virgo, based on Tomcat, is a module-based Java application server that is designed to run enterprise Java applications with a high degree of flexibility and reliability.