OpenDataPlane

{{Short description|Set of application programming interfaces for the networking data plane}}

{{Infobox software

| name = OpenDataPlane

| logo = OpenDataPlane logo.jpg

| author = Open Source Project bootstrapping under Linaro’s Networking Group

| repo = {{URL|https://github.com/OpenDataPlane/odp}}

| programming language = C

| license = BSD-3

| website = {{URL|http://opendataplane.org}}

}}

The OpenDataPlane (ODP) is an open-source project which defines application programming interfaces (APIs) for portable high performance networking data plane applications.{{cite web|author=ARM Connected Community |url=http://community.arm.com/people/bobmonkman/blog/2013/10/29/linaro-networking-group-launches-new-open-source-initiative-around-data-plane-programming-apis|title= Linaro Networking Group launches new open-source initiative around data plane programming APIs|publisher=ARM.com |date=2013-10-29 |accessdate=2013-10-29}} ODP API design enables various implementation strategies without exposing the application to implementation details. This allows the same application (source code or binary) to run efficiently on various hardware platforms with different levels of HW acceleration. For example, the same application source code may be re-compiled to run on a standard server system or a specialized networking System on a Chip (SoC) device.

Networking data plane refers software and hardware that forwards packets/frames from one interface to another, and usually performs various operations (check errors, add/remove/modify protocol headers, etc) on packet data. Commonly, data plane software utilizes hardware acceleration (e.g. protocol checksum calculation) to reach high packet and bit rates. Networking control plane and management plane refer to software that controls and monitors data plane software and hardware operation.

History

On October 29, 2013 Linaro announced that it was collaborating with members of the Linaro Networking interest Group to develop and host an open standard application programming interface for data plane applications.{{cite web|author=Linaro Limited |url=http://www.linaro.org/news/linaro-launches-opendataplane-odp-project-deliver-open-source-cross-platform-interoperability-networking-platforms/|title= Linaro launches OpenDataPlane™ (ODP) project to deliver open-source, cross-platform interoperability for networking platforms |publisher=Linaro.org |date=2013-10-29 |accessdate=2013-10-29}} Initially defined by members of the Linaro Networking Group, this project is open to contributions from all individuals and companies who share an interest in promoting a standard set of APIs to be used across the full range of network processor architectures available.

Technology Overview

File:ODP diagram.jpg ODP consists of an API specification and a set of reference implementations that realize these APIs on different platforms.{{cite web |url=https://www.ietf.org/proceedings/90/slides/slides-90-forces-6.pdf |title=Controlling the Data Path: Acceleration Behaviors using ForCES |author=Zhen Cao |date= |website=IETF}} Implementations range from pure software to those that deeply exploit the various hardware acceleration and offload features found on modern networking System-on-Chip (SoC) processors.

ODP's goal is to allow implementers of the API great flexibility to exploit and optimize the implementation. This is intended to enable easy platform portability such that an application written to the API can pick up performance gains without needing significant platform knowledge when ported.

ODP is currently being used to develop reference platform implementations of Open Platform for NFV (OPNFV) {{cite web|author=Enea|url=http://www.businesswire.com/news/home/20150505006472/en/Enea-AB-ARM-Enea-Demonstrate-Reference-Platform#.VUop8nU4l4s |title= Enea AB: ARM and Enea Demonstrate Reference Platform of Open Platform for Network Function Virtualization|publisher=Businesswire.com |date=2015-05-05 |accessdate=2015-05-05}} and is being promoted {{cite web|author=ARM Connected Community|url=http://community.arm.com/docs/DOC-10220|title= The Emergence of the OpenDataPlane Standard|publisher=ARM.com |date=2015-05-18 |accessdate=2015-05-18}}{{cite web|author=Marvell|url=http://www.marvell.com/company/news/pressDetail.do?releaseID=7816|title= Marvell Expands its 32-bit and 64-bit ARMADA SoC Family of Embedded Processors with Robust Ecosystem of Software Solutions and Partners for a Variety of Applications|publisher=Marvell.com |date=2016-02-23 |accessdate=2016-02-23}} by companies as part of their data plane support initiatives.

Products were announced by companies such as Kalray with many acronyms.{{cite web|author=Kalrayinc|url=http://www.kalrayinc.com/kalray-to-launch-high-speed-io-processors/|title= Kalray To Launch High Speed I/O Processors|publisher=kalrayinc.com |date=2016-02-09 |accessdate=2016-02-09}} The OpenDataPlane run to completion execution models and framework are also being used by FastPath applications to leverage OpenFastPath functionality. DPDK is supported in the OpenFastPath release through the ODP-DPDK layer. The intent of OpenFastPath is to enable accelerated routing/forwarding for IPv4 and IPv6, tunneling and termination for a variety of protocols.{{cite web|author=OpenFastPath|url=https://www.youtube.com/watch?v=c6qM98_xtjQ|title= OpenFastPath-An Open Source Accelerated IP Fast Path|publisher=openfastpath.org |date=2016-03-15 |accessdate=2016-03-15}}

Implementations

There is a Linux based reference software implementation of the ODP API, intended to be a functional model to establish the API behavior. In conjunction with a validation suite, this gives a base for accelerated implementations to extend.

Current ODP implementations exist for several processors, with varying degrees of hardware offload:

=Current ODP Implementations=

class="wikitable" style="font-size: 85%; text-align: center"
Name

! Owner/Maintainer

! Target Platform

! Architecture

[https://github.com/OpenDataPlane/odp odp-linux]

|Open contribution

|Pure software implementation, runs on any Linux system. Not a performance target but can utilize DPDK and Netmap.

|Any

[https://github.com/OpenDataPlane/odp-dpdk odp-dpdk]

|Open contribution

|Intel x86 and ARMv8 servers using DPDK as a software acceleration layer

|Intel x86, ARMv8

odp-keystone2

|Texas Instruments

|TI Keystone II SoCs

|ARM Cortex-A-15

linux-qoriq

|NXP

|NXP QorIQ SoCs{{cite web|author=Freescale (currently NXP)|url=http://media.nxp.com/phoenix.zhtml?c=254228&p=irol-newsArticle&ID=2118929|title=Freescale Supports OpenDataPlane for Software-Defined Networking Based on QorIQ Processing Platforms|publisher=NXP.com |date=2015-03-03 |accessdate=2015-08-12}}

|Power & ARMv8

OCTEON

|Cavium Networks

|Cavium Octeon™ SoCs

|MIPS64

THUNDER{{cite web|author=Cavium|url=http://www.cavium.com/newsevents-Cavium-Breaks-100Gbps-IPsec-Throughput-Barrier-using-OpenDataPlane_MWC2015.htm|title=Cavium Breaks 100Gbps IPsec Throughput Barrier using OpenDataPlane™ at Mobile World Congress 2015|publisher=Cavium.com |date=2015-03-02 |accessdate=2015-03-02}}

|Cavium Networks

|Cavium ThunderX™ SoC

|ARMv8

Kalray{{cite web|author=Kalray|url=https://github.com/kalray/odp-mppa/|title=OpenDataPlane port for the MPPA platform|website=GitHub|date=2017-10-11}}

|Kalray

|MPPA platform

|MPPA

odp-hisilicon{{cite web|author=HiSilicon|url=https://github.com/open-estuary/packages/tree/master/odp|title=OpenDataPlane port for the Hisilicon platform|website=GitHub|date=2017-03-25}}

|Hisilicon

|Hisilicon platform

|ARMv8

Releases

The following lists the different OpenDatePlane releases:

class="wikitable sortable"
Release NameRelease Date
OpenDataPlane v1.0.0February 27, 2015
OpenDataPlane v1.0.1March 17, 2015
OpenDataPlane v1.0.2March 27, 2015
OpenDataPlane v1.0.3April 17, 2015
OpenDataPlane v1.0.4April 30, 2015
OpenDataPlane v1.1May 13, 2015
OpenDataPlane v1.2July 22, 2015
OpenDataPlane v1.3August 31, 2015
OpenDataPlane v1.4September 30, 2015
OpenDataPlane v1.4.1November 13, 2015
OpenDataPlane v1.5December 1, 2015
OpenDataPlane v1.6December 31, 2015
OpenDataPlane v1.7February 8, 2016
OpenDataPlane v1.8March 4, 2016
OpenDataPlane v1.9April 15, 2016
OpenDataPlane v1.10April 29, 2016
OpenDataPlane v1.10.1June 14, 2016
OpenDataPlane v1.11August 18, 2016
OpenDataPlane v1.12December 2, 2016
OpenDataPlane v1.13January 18, 2017
OpenDataPlane v1.14March 1, 2017
OpenDataPlane v1.15June 19, 2017
OpenDataPlane v1.16November 10, 2017
OpenDataPlane v1.17December 30, 2017
OpenDataPlane v1.18March 5, 2018
OpenDataPlane v1.18.0.1March 16, 2018
OpenDataPlane v1.19April 19, 2018
OpenDataPlane v1.19.0.1May 10, 2018
OpenDataPlane v1.19.0.2July 4, 2018
OpenDataPlane v1.20.0.0December 3, 2018
OpenDataPlane v1.21.0.0January 28, 2019
OpenDataPlane v1.22.0.0August 22, 2019
OpenDataPlane v1.23.0.0November 21, 2019

Ecosystem

The following organizations currently sponsor the development of ODP.

  • ARM
  • Broadcom{{cite web|author=Broadcom|url=http://www.broadcom.com/press/release.php?id=s827048|title=Broadcom Announces Open Network Function Virtualization Platform|publisher=broadcom.com |date=2014-02-20 |accessdate=2014-02-20}}
  • Cavium{{cite web|author=Cavium|url=http://www.cavium.com/newsevents-Linaro-Announces-First-LTS-Monarch-Release-of-OpenDataPlane.html|title=Linaro Announces First LTS Monarch Release of OpenDataPlane|publisher=cavium.com |date=2016-08-19 |accessdate=2016-08-19}}
  • Cisco
  • ENEA AB{{cite web|author=Enea|url=http://www.enea.com/Corporate/Press/Press-releases/Press-release/?item=853938|title=Enea Demonstrates Open Event Machine Implementation on Broadcom XLP Architecture at MWC|publisher=enea.com |date=2015-02-13 |accessdate=2015-02-13}}
  • Ericsson
  • HiSilicon
  • Linaro
  • MontaVista
  • Nokia
  • NXP
  • Texas Instruments
  • Wind - formerly Wind River Systems
  • ZTE

Projects

The following open source projects use ODP API as the abstraction layer towards data plane hardware.

  • [https://github.com/openeventmachine OpenEventMachine] data plane application framework
  • [https://openfastpath.org OpenFastPath] TCP/IP stack

References