HKG15-110: ODP Project Update
---------------------------------------------------
Speaker: Bill Fischofer
Date: February 9, 2015
---------------------------------------------------
★ Session Summary ★
This session provides a summary of ODP activities since LCU ‰Û÷14 and highlights the main features of ODP v1.0 for applications as well as the validations used by conforming ODP implementation.
--------------------------------------------------
★ Resources ★
Pathable: https://hkg15.pathable.com/meetings/250771
Video: https://www.youtube.com/watch?v=xABcGPOCOuU
Etherpad: http://pad.linaro.org/p/hkg15-110
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2015 - #HKG15
February 9-13th, 2015
Regal Airport Hotel Hong Kong Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
2. ● Open source, open contribution framework for portable high-
performance data plane applications
OpenDataPlane - What Is It?
● Common APIs provide for application portability
● Optimized implementations of these APIs provide accelerated
performance on each platform
● Wide architecture support: ARM, MIPS, PowerPC, x86
● Designed to offer portability without sacrificing performance,
allowing wide choice in platform selection to match application
price/performance needs
3. Application View
OpenDataPlane - The Big Picture
SoC Vendor View
Application
Platform A Platform B Platform C
ODP API
Run on any Platform
Application A Application B Application C
ODP API
SoC Platform
Compete for any Socket
4. ● LNG and its
members are ODP
maintainers and
its upstream
Organization
● Open Source
● Open Contribution
● BSD License
5. OpenDataPlane System Architecture
Design point: Multi-core network SoCs that can run Linux on at least one core
A framework, not an environment, allowing existing apps to add ODP incrementally
Multiple apps, shared
or dedicated cores
A common framework
Leverages existing SDKs
Real or virtual HW
6. ODP: Designed to Support Existing Apps
Existing Applications can add
ODP functionality on an
incremental basis
Apps still have access to
platform SDKs if they wish
Apps can access HW
directly if they wish (real or
virtual)
ODP implementations
leverage existing SDKs
7. ODP APIs
● Common definitions, build tools, and validation tests
● Open contribution, LNG is maintainer and upstream
ODP Implementations
● Developed and maintained by sponsoring owner
● Typically SoC vendor
● Can be open or closed source at implementor’s option
ODP Components
8. Name Owner/Maintainer Target Platform Architecture
linux-generic
Open contribution,
maintained by LNG
Pure SW, runs on any
Linux kernel. Not a
performance target.
Any
odp-dpdk
Open contribution,
developed by LNG
Intel x86 using DPDK as
SW acceleration layer
Intel x86
odp-netmap
Open contribution,
developed by LNG
Linux + NETMAP
support (experimental)
x86 + ARM
ODP Implementations - 1 of 2
9. Name Owner/Maintainer Target Platform Architecture
odp-keystone2 Texas Instruments TI Keystone II SoCs ARM Cortex A15
linux-qoriq Freescale Freescale QorIQ SoCs PowerPC
OCTEON Cavium Networks Cavium Octeon SoCs MIPS64
THUNDER Cavium Networks Cavium ThunderX SoC ARMv8
ODP Implementations - 2 of 2
Additional implementations under development by others
10. API Group Use
Buffers Fixed-sized storage blocks for application use
Classification
Parses and assigns incoming packets to Classes-of-Service (CoS) according to
Pattern Matching Rules (PMRs)
Crypto
Algorithmic offload and acceleration for encryption/decryption of packet and buffer
data
Events
Provide notification of packet arrival, buffered communication, timeouts, and
completions
Packets Manipulation and processing of Ethernet frames and their contents
ODP v1.0 API Groups
11. API Group Use
PktIO Abstracts logical Input/Output ports for RX/TX processing
Pools Storage management for buffers, packets, timers, and events
Queues Channels that store and deliver events
Scheduler
Handles sequencing and scale-out of event processing to available application
threads
Shared Memory Abstracts bulk memory allocation for ODP internal and application use
ODP v1.0 API Groups
12. API Group Use
Synchronizers Atomic operations needed for mulitprocessing
Threads Units of parallel execution
Timers Single-shot and periodic notifications of passage of time
ODP v1.0 API Groups
13. ODP Abstract Types
Used by applications and ODP APIs, defined by ODP
implementations to fit platform needs
● odp_pktio_t
● odp_pmr_t
● odp_pmr_set_t
● odp_pool_t
● odp_queue_t
● odp_shm_t
● odp_buffer_t
● odp_cos_t
● odp_crypto_session_t
● odp_crypto_compl_t
● odp_event_t
● odp_packet_t
● odp_packet_seg_t
14. ODP Functional Abstraction
ODP APIs define functions, not data structures
Applications specify what they want, implementations
determine how to do those functions optimally on their
platform
17. ODP Concepts: Packet Receive
Ethernet
Ethernet
Ethernet
...
PktIO Classifier
PMRs
Pool
Pool
Pool
Pool
Queue
Queue
Queue
Queue
Class of Service (CoS)
Packet storage Input to
Scheduler
18. ODP Concepts: Event Scheduling
Queue
Queue
Queue
...
Scheduler
Thread
Thread
...
odp_schedule()
Threads call odp_schedule() to get next event
Engine
Queues store events
Threads invoke engines via ODP APIs
Implementations “wrapper”
engines to interact with rest
of ODP infrastructure
Threads call odp_queue_enq() to add
events to queues to be scheduled for
further processing
19. ODP Concepts: Packet Transmit
Ethernet
Ethernet
Loopback
...
PktIO
Thread
Thread
Thread
Transmit
Engine
...
Queue
Queue
Queue
...
Back to Ingress
(not in v1.0)
TSRs
20. ODP Project History - 1 of 2
Tag Release Date Major Features
odp-0.1 December 2013 Initial preview release
odp-0.2 April 2014 Development checkpoint
v0.3.0 October 2014 Development checkpoint for internal use
v0.4.0 8 December 2014 Initial CUNIT test coverage
v0.5.0 16 December 2014 New Packet/buffer APIs, Classification APIs
v0.6.0 22 December 2014 Packet/buffer tests, PktIO tests, Init API changes, Crypto bug fixes
v0.7.0 9 January 2015 New timer APIs and implementation, PktIO functions, bug fixes
21. ODP Project History - 2 of 2
Tag Release Date Major Features
v0.8.0 16 January 2015 CPUmask, synchronizer tests, bug fixes
v0.9.0 23 January 2015 PktIO loopback, global logging, timer tests, scheduler tests
v0.10.0 30 January 2015 Events, API directory restructure, Debian packaging
v0.11.0 February 2015 Strong typing, Return code normalization, odp_errno, additional test
cases and bug fixes
v1.0 March 2015 Functionally complete, suitable for evaluation and application
development
TBD December 2015 Suitable for production application deployment
22. Structure and Goals
● Uses CUNIT framework
● Enable verification of conforming ODP implementations
● Provide code coverage and functional API testing
● Restricted to “sunny day” tests for now
ODP Testing and Validation
ODP Test Suite
ODP
Implementation
Pass/Fail
output
23. Visit opendataplane.org for information
Join the ODP mailing list: lng-odp@lists.linaro.org
Participate in ODP project calls and meetings
• Weekly call held Tuesdays at 15:00 UTC
• Next call, Tuesday 24th February
• Go to uberconference.com/opendataplane
Contribute Code/Tests/Documents/Bug Reports, etc.
Getting Involved
24. Tuesday
● HKG-15-209: ODP User Experience Roundtable
Wednesday
● HKG-15-301: OVS on ODP Implementation Overview
● HKG-15-305: RT vs. Core Isolation
● HKG-15-309: VLANd - First Release and Next Steps
Other ODP-Related Sessions of Interest
25. ODP Demos at LNG Demo Thursday
Demo set one:
ODP-Open vSwitch
Benchmarking
Demo Set two:
Performance / Overhead
with full isolation
Demo Set Three:
ODP--Crypto with GPU