LCU13: Discussion on ODP – Fastpath networking applications on manycore SoCs


Published on

Resource: LCU13
Name: Discussion on ODP – Fastpath networking applications on manycore SoCs
Date: 29-10-2013
Speaker: Ola Liljedahl

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

LCU13: Discussion on ODP – Fastpath networking applications on manycore SoCs

  1. 1. Fastpath networking applications on manycore SoCs Ola Liljedahl, Oct 29 2013
  2. 2. 0 20 40 60 80 100 120 140 160 1995 2000 2005 2010 2015 2020 2025 2030 •  Super-linear growth in: o  Number of users o  Number of connected devices o  Number of over the top (OTT) applications o  Number of protocols (RFC’s) o  Bandwidth usage o  Power consumption of network infrastructure What Is Happening Logos and trademarks are used for illustration only and remain the property of their respective owners.
  3. 3. So the Requirements Change •  Need aggregate capacity of multiple processors •  Need hardware accelerations for PPA-efficient execution of repetitive work •  Need flexibility of software and programmable hardware •  Need familiar programming environments with robust tools •  Need portability between different implementations •  Need high abstraction level •  Need efficient support for virtualisation
  4. 4. Example Logical View of Packet Processing Flow Ingress interfaces Scheduler* Thread Thread Thread Thread queue queue queue queue queue Classifier* queue queue queue Crypto Axel queue queue queue queue queue queue queue queue Scheduler/ Shaper* Egress interfaces Wirespeed domain Wirespeed domainNon-wirespeed domain *May be SW or HW-based
  5. 5. The Pillars of OpenDataPlane " Event Machine o  Event based IO object handling paradigm and application interface " SoC Abstraction o  Portable API’s for access to HW/SoC resources " “Bare Metal” Linux o  Minimal overhead and deterministic execution in Linux user space EM SoCA BML Application
  6. 6. Application Interface •  ODP adopts Event Machine, originally developed by Nokia Solutions and Networks o  Open-ended architecture with reusable concepts o  C-based API’s and implementations •  Event based programming model abstraction for handling IO o  Logical queue based interface o  Supports packet flows, physical and virtual network interfaces, accelerators, SW endpoints o  Events represent different types of data that should be processed: packets, timers, baseband data, HW notifications, SW messages... •  Supports scheduler based IO model o  Enables scheduling of IO events using different algorithms and knowledge of work in progress o  Support for both HW and SW based schedulers •  Supports different IO load balancing approaches o  Enables implicit synchronisation and mutual exclusion between threads •  Proven, already half a dozen HW-specific implementations
  7. 7. APIs for IO Load Balancing – “Push” model IO event objects distributed to queues Threads Threads processing high bandwidth IO Threads sharing latency critical events Classifier Programmable (with dedicated CPU’s) or SW Configurable IO objects pulled directly from queues Queues Thread handling lower- frequency events O D P A P Is
  8. 8. APIs for IO Load Balancing – “Pull” model Queue groups Scheduler Threads Idle/unused thread Execution objects associated with queues IP-fwd IP-reasm GTP-U DPI RoHC Exception Log svc O D P A P Is IO objects scheduled on “Pull” requests Classifier Programmable (with dedicated CPUs) or SW Configurable IO event objects distributed to queues Name svc
  9. 9. SoC Abstraction •  Portable API’s for accelerator access, timer management & delivery... •  Per-operation access functions + queues & events for completion notification •  Example: crypto (as proposed) •  int odp_crypto_operation( •  struct odp_crypto_session *sesssion, •  odp_packet_buf_desc *pkt_buf_desc, // Data to process •  const struct odp_data_range *cipher_data, •  const struct odp_data_range *hash_data, •  unsigned hash_result_offset, •  caddr_t override_iv_ptr, •  unsigned num_notif, const em_notif_t *notif_tbl // Events and queue-id to use for notification when operation is complete •  ) o  Supports both synchronous and asynchronous operation o  Supports both processor/ISA and loosely coupled accelerator implementations o  Might define an (optional) synchronous blocking function as well as this is a common usage •  Compression, DPI, timer management potential candidates
  10. 10. “Bare Metal” Linux •  Need to dedicate some cores for dataplane applications " No TLB misses (huge pages for code and data) " No context switches (one worker thread per HW-thread/core) " No thread migration (core affinity and isolation) " No ticks (NOHZ/dynticks) " No interrupts " No kernel background tasks ü  Direct HW access from user space •  Can still ü  Launch, supervise and kill applications, dump core ü  Debug and profile applications ü  Perform system calls from the application
  11. 11. More about Linaro: More about Linaro engineering: How to join: Linaro members: