Role of ODP in high performance networking
Why to read this?
You love DPDK and keen to use it in your product. However, you are worried about tight coupling of your existing product with DPDK. Note that you also want to run your software in non-DPDK platform as well.
ODP helps in this regard. If you like to know how and many more benefits, then this document helps.
Technical explanation
The Open Data Plane (ODP) is an open-source project which defines application programming interfaces(APIs) for portable high performance networking data plane applications. 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.
ODP Architecture
ODP Benefits
Core benefit
ODP API design enables various implementation strategies without exposing the application to implementation details.
Detailed features
- Open Source, open contribution, BSD-3 licensed
- Vendor and platform neutral
- Application-centric. Covers functional needs of data plane applications
- Ensures portability by specifying the functional behavior of ODP
- Both applications and implementations must conform to the API specification
- Defined jointly and openly by application writers and platform implementers
- Architected to be implementable on a wide range of platforms efficiently
ODP and SDN
The goal of ODP is to support Software-defined networking (SDN) in which control is decoupled from the physical infrastructure, allowing network administrators to support a network fabric across multi-vendor equipment.
ODP and DPDK
ODP provides abstraction layer over the lower level DPDK API. This has engineering benefit where DPDK can be implemented in your product without losing portability
ODP cross-platform view
ODP implementations
odp-linux
It is pure software implementation, runs on any Linux system. Not a performance target but can utilize DPDK and Netmap.
odp-dpdk
It is derived from ODP-LINUX, but it is optimized using the full DPDK SDK, and tries to connect as many DPDK APIs to ODP as possible.
Reference
https://en.wikipedia.org/wiki/OpenDataPlane https://github.com/OpenDataPlane/odp https://github.com/OpenDataPlane/odp-dpdk https://images.app.goo.gl/egVGJApMJZzcnj5i6 https://images.app.goo.gl/vnXyFsomFvhPy62o8 https://opendataplane.org/index.php/resources/faq/ https://opendataplane.org/index.php/services/technical-overview/ https://images.app.goo.gl/5wkbsm2WvtWfhB747 https://images.app.goo.gl/JvxBBELcYu4REVwZ9
Thanks Madhusudan Karan for your inspiration to write on this topic