Welcome to OpenDataPlane (ODP). This section of the web site is designed to provide information and resources of interest to data plane application writers. Here you’ll learn how to use ODP to create portable applications that take advantage of acceleration capabilities found in the diverse platforms that offer ODP implementations.
ODP applications consist of one or more threads (shown in yellow above) that use the ODP framework to perform packet processing. Everything else shown here is provided automatically by the ODP framework for applications. From Receive (RX) to Transmit (TX), ODP provides a range of APIs that encompass every stage of a packet’s processing. These APIs were carefully chosen not only to provide portability across all platforms offering ODP implementations, but to transparently exploit advanced hardware acceleration features found on many platforms. For example, many platforms offer hardware buffer and packet managers or queuing support. By using the ODP APIs this hardware will automatically be used to boost application performance while at the same time offering the same functionality on those platforms that offer optimized software implementations of these APIs.
ODP supports both polling and event driven programming models for packet processing, and applications are free to choose whatever model (or combination of the two) that best suits their needs. In a polling model threads poll I/O interfaces and event queues directly to look for work. In an event driven model, by contrast, threads call the ODP scheduler that selects work for them based on programmer-specified criteria. The scheduler offers superior scalability to many-core environments as well as advanced synchronization and context management features that simplify packet processing. These APIs are also implemented in hardware on many platforms, resulting in additional performance gains.