lca14: lca14-209: odp project update

27
Tue-4-Mar, 12:10pm, Bill Fischofer. LCA14-209: ODP project update

Upload: linaro

Post on 13-Jun-2015

362 views

Category:

Technology


2 download

DESCRIPTION

Resource: LCA14 Name: LCA14-209: ODP Project Update Date: 04-03-2014 Speaker: Bill Fischofer Video: https://www.youtube.com/watch?v=jXKfL9qLazg

TRANSCRIPT

Page 1: LCA14: LCA14-209: ODP Project Update

Tue-4-Mar, 12:10pm, Bill Fischofer.

LCA14-209: ODP project update

Page 2: LCA14: LCA14-209: ODP Project Update

Brief intro and overview of ODP

Where we’ve been

Where we’re going

Other ODP sessions of interest at LCA 14

Topics for Today

Page 3: LCA14: LCA14-209: ODP Project Update

Introduction and Overview

Page 4: LCA14: LCA14-209: ODP Project Update

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

Page 5: LCA14: LCA14-209: ODP Project Update

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

Page 6: LCA14: LCA14-209: ODP Project Update

OpenDataPlane System Architecture

Design point: Multi-core network SoCs that can run Linux on at least one core

Page 7: LCA14: LCA14-209: ODP Project Update

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

Page 8: LCA14: LCA14-209: ODP Project Update

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

Page 9: LCA14: LCA14-209: ODP Project Update

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

Page 10: LCA14: LCA14-209: ODP Project Update

Queue-based event-driven programming model

Run to completion

Automatic scale out with number of available cores

Key ODP Concepts Inherited from OpenEM

Page 11: LCA14: LCA14-209: ODP Project Update

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

Page 12: LCA14: LCA14-209: ODP Project Update

Example ODP Queue Usage Model

ODP queue concepts inherited from Open EMQueues may be owned by HW or SW, depending on implementationImplementations may impose limits on number of queues or their sizes

Page 13: LCA14: LCA14-209: ODP Project Update

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

Page 14: LCA14: LCA14-209: ODP Project Update

Automatic Scale Out

Events

Queue

Queue

Queue

Queue

Queue

Queue

Queue

Thread

Thread

SchedulerHW 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)

Page 15: LCA14: LCA14-209: ODP Project Update

ODP Packet Processing Model

Page 16: LCA14: LCA14-209: ODP Project Update

Where We’ve Been

Page 17: LCA14: LCA14-209: ODP Project Update

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

Page 18: LCA14: LCA14-209: ODP Project Update

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

Page 19: LCA14: LCA14-209: ODP Project Update

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

Page 20: LCA14: LCA14-209: ODP Project Update

Where We’re Going

Page 21: LCA14: LCA14-209: ODP Project Update

● 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

Page 22: LCA14: LCA14-209: ODP Project Update

● 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

Page 23: LCA14: LCA14-209: ODP Project Update

● 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

Page 24: LCA14: LCA14-209: ODP Project Update

World Domination!

2015 and Beyond

Page 25: LCA14: LCA14-209: ODP Project Update

Thursday morning● ODP Application Example Walkthrough

Thursday afternoon● ODP User Experience Roundtable

Friday afternoon● ODP Demos

Other ODP Sessions at LCA 14

Page 26: LCA14: LCA14-209: ODP Project Update

Thank You

Page 27: LCA14: LCA14-209: ODP Project Update

More about Linaro Connect: http://connect.linaro.orgMore about Linaro: http://www.linaro.org/about/

More about Linaro engineering: http://www.linaro.org/engineering/Linaro members: www.linaro.org/members