4. What Is OpenDataPlane?
• Open Source cross-platform framework for
data plane applications
• Common API for application portability
• Multiple implementations tuned to different
platforms for performance
• Result: Easy app portability and performance
Application Environment
• Applications run in Linux user space with
essentially zero system overhead
OpenDataPlane Project Intro
5. Highly Regular Processing Loads
• Simple operations on packets, just lots of them
Highly Scalable
• Networking is a prime example of an “embarrassingly
parallel” problem domain
• Natural fit for multi-core processing
Extreme Performance Requirements
• At 100Gb/s speeds, need to process 10s of millions
of packets per second with minimal latency
• Fertile domain for hardware offload and acceleration
Data Plane Application Characteristics
7. Architecture
• System view of ODP
• Provides overall definition of components and relationships
APIs
• Programmer’s view of ODP
• Provides a portable platform-independent framework for data plane
applications
• Assumes applications written in C99 and running in Linux user space
or “bare metal” Linux
Implementation
• An embodiment of the ODP framework on a platform
• Maps ODP APIs to underlying platform HW acceleration and offload
capabilities for performance
ODP Concepts and Components
8. ODP Design/Development Methodology
Architecture APIs
Implementations
Iteration as multiple efficient implementations help refine architecture
Stable Release 1.0 when multiple efficient implementations validated for
variety of different network SoCs
9. Open Event Machine
• Open Source project by NSN
• See http://sourceforge.net/projects/eventmachine/
Linux NO_HZ extensions
• Enable cores to be completely dedicated to ODP
threads--effectively achieving “Bare Metal Linux”
• Work being done by LNG (Viresh Kumar)
• Results to date very promising
SoC Abstraction
• Separation of APIs from Implementations
ODP Building Blocks
10. Queue-based event-driven programming model
Run to completion
Automatic scale out with number of available cores
Key ODP Concepts Inherited from OpenEM
11. Use
• Enable communication between entities
• Hold packets, work requests, completion
notifications, etc., based on the queue type
• Used directly by apps and indirectly via a scheduler
Key Queue Operations
• odp_queue_create(name, type, params)
• odp_queue_enq(queue_id, buffer)
• odp_queue_deq(queue_id)
• odp_queue_type(queue_id)
ODP Queues
12. Example ODP Queue Usage Model
ODP queue concepts inherited from Open EM
Queues may be owned by HW or SW, depending on implementation
Implementations may impose limits on number of queues or their sizes
13. Threads are bound to cores
• Ideally 1-to-1 if sufficient cores available, but threads
may share cores in smaller configurations
Threads request work from a scheduler (HW or SW)
• When work is received, thread processes it until:
• Work is complete
• Work must invoke an asynchronous service
• In both cases once work is received it is processed
without interruption until the work unit is complete
Run to Completion
14. Automatic Scale Out
Events
Queue
Queue
Queue
Queue
Queue
Queue
Queue
Thread
Thread
Scheduler
HW or SW
Threads access queued events via a scheduler
that distributes them to threads or groups of
threads according to a scheduling policy.
Permits events to be scaled out to available
cores without explicit application coding
Threads may also interact with
queues directly (application
choice)
17. October 2013
• ODP Project announced at LCU13 Santa Clara
December 2013
• ODP Public Preview Release (v0.1)
January 2014
• Redesigned OpenDataPlane.org web site launched
March 2014
• ODP v0.2 planned for release
Project History
18. ODP v0.1 Contents
● Threads
● Atomics and counters
● Buffers and Buffer Pools
● Basic Packet I/O, queue support
● Pure SW implementation: linux-generic
● Initial Documentation
○ Doxygen
○ PDF docs
● Public git repository
○ git://git.linaro.org/lng/odp.git
● Project web site
○ www.OpenDataPlane.org
4Q13 Activity and Deliverables
19. ODP v0.2 Additional Contents
● Packet parsing
● Atomic, Parallel, and Ordered Queues
● Timer support
● Linux NO_HZ improvements for core dedication
○ Proof of concept, ready for upstreaming work to begin
● Reference Implementations
○ Enhanced linux-generic with Netmap acceleration
○ Texas Instruments Keystone II SoC
● Enhanced project web site
● Demo applications using ODP
○ libpcap and Wireshark
○ OpenVPN
1Q14 Activity and Deliverables
21. ● Add 2nd
and 3rd
SoC reference implementations
● Begin performance tuning work
● Variant scheduler models (push / pull)
● Crypto/RNG APIs
● Additional accelerator functions (e.g., DPI, compression)
● Classification support
● Refine ODP architecture
● Non-trivial applications (e.g., NAT gateway, Snort,
ClamAV, nDPI)
○ API Function/Performance validation
○ Testbench/showcase for demos
Goals for Rest of 2014 - 2Q14
22. ● Next stage linux-generic reference implementation
○ Context management for stateful processing
○ Control plane interaction (Open Daylight)
● Add 4th SoC reference implementation
● Performance metrics / tuning for apps. Present results
at LCU14.
Goals for Rest of 2014 - 3Q14
23. ● Add 5th
SoC reference implementation
● QoS additions
● Bring all implementations and docs to a full Release 1.0
level
● Release ODP v1.0
Goals for Rest of 2014 - 4Q14
27. More about Linaro Connect: http://connect.linaro.org
More about Linaro: http://www.linaro.org/about/
More about Linaro engineering: http://www.linaro.org/engineering/
Linaro members: www.linaro.org/members