ODP Application proof point:
OpenFastPath
What is Our Intention with OpenFastPath?
To enable efficient IP communication Essential in practically all networking use-cases, including NFV To enable efficient system design
The IP stack runs close to the underlying hardware and can leverage hardware features To lower the barriers to build network applications in a multivendor environment
ODP based IP stack offers application portability across hardware architectures To reduce development costs through Open Source business model
What is OpenFastPath (OFP)?
IP fast path incubation project between Nokia, Enea and ARM Developers and supporting staff active from all three companies
Organized as an Open source project
Democratic governance model Using open source software BSD license
Source code on GitHub
Mailing list, shared Google docs, weekly calls, Freenode chat etc
API’s towards hardware is based on ODP (Open Data Plane)
Maximizes portability and software reuse
Linux user space IP fast path implementation
Maximizes throughput and scalability by minimizing Linux overhead Leverages Linux for slowpath and route/ARP table updates
Why base the OFP stack on ODP?
Standardized data plane API to enable networking applications across any architecture Open support for ARM, Intel, MIPS, PowerPC, RTOS, Linux, bare metal
Designed to be an generic yet high performance data plane abstraction layer
Lightweight without prescribing lower level processing structure which can be vendor specific Access and management of HW accelerators and classification
Supports optional schedulers to provision easy management and traffic load balancing Defined to enable high throughput user plane applications
Run to completion
Core isolation (only 1 work thread per core scheduled by ODP) Minimal use to no use of Linux APIs
Features implemented
Fast path protocols processing:
Layer 4: UDP termination, TCP termination, ICMP protocol Layer 3
ARP/NDP
IPv4 and IPv6 forwarding and routing IPv4 fragmentation and reassembly VRF for IPv4
IGMP and multicast
Layer 2: Ethernet, VLAN, VxLAN GRE Tunneling
Routes and MACs are in sync with Linux through Netlink
Integration with Linux Slow path IP stack through TAP interface Command line interface
Packet dumping and other debugging
Statistics, ARP, routes, and interface printing
Configuration of routes and interfaces with VRF support
NICs API Interface configuration ODP Application CLI Packet processing API Routes, ARP IPv4 IPv6 MAC API Configuration Packets Information Linux kernel TAP Netlink API API ODP Linux ODP API OFP HW Application
Confidential Under NDA
Ingress API User/Default
Dispatcher
OFP System View
Packets Ctrl HW / NICs ODP API Host OS (Linux) ODP FW ODP SW TAP N etli nk
Socket Hook API Socket Egress API
User Termination or Forwarding
In it API OpenFastPath (OFP) PKTIO Interface Management User Conf Code pkt_cnt = odp_pktio_recv(pktio, pkt_tbl, OFP_PKT_BURST_SIZE); or buf = odp_schedule(&queue, ODP_SCHED_WAIT); ODP Linux ODP API OFP HW Application Slow path Route tables
Open Fast Path multicore System View
NICs Dispatcher 1 Ingress API Socket callback /Hook API User Termination or Forwarding A In it API PKTIO Host OS (Linux) ODP FW/HW Core 1Core 0 Core 2 Core N
Dispatcher 2 Ingress API User Termination or Forwarding B OpenFastPath (OFP) (SMP multicore library) N etli nk TAP PKTIO Dispatcher N Ingress API User Termination or Forwarding X PKTIO User Conf Code
….
….
ODP API ODP SW….
ODP Linux ODP API OFP HW Application Slow path Route tables One ODP thread context Socket callbackIngress Packet Processing
Ethernet VLAN IPv4/v6 ARP IPv4 local hook API IPv4 GRE IPv4/v6routing IPv4/v6 output IPv4 forward hook API Transport(L4) classifier UDP input TCP input ICMP Send ARP request Socket API Update MAC table Pre-classified L2 L3 L4 User API Packets Information IPv4 Reassembly Ingress API Fallback to slowpath for unknown traffic
GRE hook API IP, UDP, TCP, … classified by HW VXLAN IGMP Loopback to VXLAN
Egress Packet Processing
Socket/Egress API IPv4 output UDP output TCP output ICMP error IPv6 output IPv4 GRE tunneling VXLAN IPv4 Fragmentation Pre-classified L2 L3 L4 User API Packets InformationConfidential Under NDA
Ethernet VLAN
Optimized OFP socket APIs
New zero-copy APIs optimized for single thread run-to-completion environments UDP
Send: Optimized send function with ODP packet container (odp_packet_t)
Receive: A function callback can be registered to read on a socket. Receives ODP packet container and socket handle
TCP
Accept event: A function callback can be registered for TCP accept event. Receives socket handle.
Receive: A function callback can be registered to read on socket. Receives ODP packet container and a socket handle
Standard BSD Socket interface
For compatibility with legacy applications
Why should someone use OFP?
Open source project Enables companies to focus investments on differentiating features
Highly optimized and scalable solution
Non-blocking event based API focused on performance and scalability
Portable high performance solution supporting multiple HW and SW platforms
Functionality verified on ARM, MIPS and x86 HW with native ODP, ODP-DPDK, ODP-NETMAP support
Reliable
OFP IP and ICMP implementations passing Ixia conformance test
User space implementation
Simplifies maintenance and maximizes throughput and scalability by minimizing Linux kernel
Shaped in Telecom, authority in
communication, future in connectivity
www.enea.com
Solutions
Services
Training
Linux, RTOS and NFV
software platforms for
network applications
Experienced and
multidisciplinary teams
Enea is a Linux
Foundation Authorised
Training Partner
Multicore RTOS maximizing hardware utilization and
powering embedded systems from telecom to
Enea - A part of the Open Source Community
Enea provides Open Source community leadership
Provides the Linaro Networking Group kernel tree maintainer at Linaro (Linux for ARM) Is a contributing member of the Linaro Networking Group and key contributor to the Open
Data Plane solution
Initiator (in cooperation with Nokia and ARM) of an open source IP Fast-path project (Not yet
public announced)
Hardware independent open source IP solution – OpenFastPath (OFP)
Silver member in the OPNFV project – Demoed COSNOS an NFV implementation for ARM Enea participates in the Yocto project
Initiator of the virtualization layer
Initiator and maintainer of a Carrier Grade Linux layer to be included in the Yocto Project Contributor of ptest-framework, helps to increase the quality of contributions
Enea is the innovator of LINX
Thank You
F o r a d d i t i o n a l i n f o r m a t i o n o n E n e a , p l e a s e v i s i t w w w . e n e a . c o m