Introduction

In the last few years, a few emerging technologies and concepts have disrupted how network equipment is designed, and how networks are built and operated: hardware commoditization and disaggregation of software from hardware and of software itself, extensive use of open source (Linux), Software Defined Networking (SDN), Network Functions Virtualization (NFV) and DevOps.

Operators need to deploy new services in order to grow their revenue, and time to market, thus rapid network deployment, is crucial. Rapid deployment is significantly helped by automation and programmability. In this environment, the CLI is no longer the norm: since it cannot be easily used as a programmatic interface, the CLI is not suitable for automation. Network engineers have adapted to an industry where the only constant is change, by combining Development and Operations into DevOps: a practice that aims to unify software development and operations. DevOps combines programming and network administration, and allows rapid prototyping and network build, often using the Python programming language.

OpenSwitch (OPX) – a network operating system (NOS) - was an early adopter of these concepts and technologies. Designed using a standard Debian Linux distribution with an unmodified Linux kernel, OpenSwitch provides a programmable high-level abstraction of network components, such as switching ASICs (Network Processors) and optical transceivers. Architected as a scalable, cloud-ready, agile solution, the open source OpenSwitch software implements a flexible infrastructure to enable both network operators and vendors to rapidly on-board open source Networking OS applications. OpenSwitch provides a YANG based programmatic interface, that can be accessed using Python, thus providing an environment well-suited for DevOps.

OpenSwitch Features

OpenSwitch (or OPX) is an open source project that provides an abstraction of hardware network devices in a Linux OS environment. It has been designed from its inception in order to support the newest technologies and concepts in the networking industry:

OpenSwitch provides support for:

Programmability and Automation

OpenSwitch supports a rich ecosystem for automated deployment:

The OpenSwitch CPS programmatic interface is defined using YANG models, and in combination with Python, provides support for programming the network functionality, automation and DevOps.

In addition, a set of OpenSwitch specific commands are available and can be invoked from a Linux shell (e.g. display the current software version, hardware inventory etc.).

OpenSwitch Architecture

The figure below illustrates the main areas of the OpenSwitch architecture:


OPX Base

The key components of OPX Base are:

NAS – Network Adaptation Service

PAS- Platform Adaptation Service

CPS – Control Plane Service 

SAI – Switch Abstraction Interface

SDI – System Device Interface

OPX Applications

A variety of open source or vendor specific applications are supported and have been tested with Open Switch:

In general, since OpenSwitch is based on Linux Debian distribution with an unmodified kernel, any Debian binary application can be installed and executed on OpenSwitch devices.

Hardware Simulation

OPX software supports hardware virtualization (or simulation). Software simulation of basic hardware functionality is also provided (simulation specific SAI and SDI components), and the higher layer software functionality can be developed and tested on generic PC/server hardware. OPX hardware simulation can be executed under Virtual Box, GNS3 / QEmu etc.