OpenDataPlane

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
OpenDataPlane
Original authorOpen Source Project bootstrapping under Linaro’s Networking Group
Repositorygithub.com/OpenDataPlane/odp
Written inC
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    LicenseBSD-3
    Websiteopendataplane.org

    The OpenDataPlane (ODP) is an open-source project which defines application programming interfaces (APIs) for portable high performance networking data plane applications.[1] 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

    [edit | edit source]

    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.[2] 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

    [edit | edit source]
    File:ODP diagram.jpg
    The OpenDataPlane project is an open-source, cross-platform set of application programming interfaces (APIs) for the networking data plane.

    ODP consists of an API specification and a set of reference implementations that realize these APIs on different platforms.[3] 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) [4] and is being promoted [5][6] by companies as part of their data plane support initiatives.

    Products were announced by companies such as Kalray with many acronyms.[7] 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.[8]

    Implementations

    [edit | edit source]

    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

    [edit | edit source]
    Name Owner/Maintainer Target Platform Architecture
    odp-linux Open contribution Pure software implementation, runs on any Linux system. Not a performance target but can utilize DPDK and Netmap. Any
    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[9] Power & ARMv8
    OCTEON Cavium Networks Cavium Octeon™ SoCs MIPS64
    THUNDER[10] Cavium Networks Cavium ThunderX™ SoC ARMv8
    Kalray[11] Kalray MPPA platform MPPA
    odp-hisilicon[12] Hisilicon Hisilicon platform ARMv8

    Releases

    [edit | edit source]

    The following lists the different OpenDatePlane releases:

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

    Ecosystem

    [edit | edit source]

    The following organizations currently sponsor the development of ODP.

    Projects

    [edit | edit source]

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

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).