ODP Application proof point: OpenFastPath ODP mini-summit 2015-11-10
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 Enables companies to focus investments on differentiating features
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 Major TEM s onboard - Nokia, Ericsson, Huawei, ZTE, Cisco etc.
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 OFP IP and ICMP implementations passing Ixia conformance tests
OpenFastPath system components NICs ODP API Packet processing API Application API IPv4 IPv6 Routes, ARP API TAP Linux kernel MAC Netlink Application OFP ODP API Linux ODP HW Interface configuration API CLI Configuration Packets Information Confidential Under NDA
Init API OFP System View User Termination or Forwarding Socket Egress API Socket Hook API Host OS (Linux) User Conf Code Route tables Netlink OpenFastPath (OFP) pkt_cnt = odp_pktio_recv(pktio, pkt_tbl, OFP_PKT_BURST_SIZE); or buf = odp_schedule(&queue, ODP_SCHED_WAIT); Slow path TAP PKTIO Interface Management ODP FW ODP API ODP SW Ingress API User/Default Dispatcher Application OFP ODP API Linux ODP HW Ctrl HW / NICs Packets
Init API Open Fast Path multicore System View User Termination or Forwarding A User Termination or Forwarding B. User Termination or Forwarding X Host OS (Linux) Route tables Slow path Netlink TAP User Conf Code Socket callback /Hook API PKTIO Ingress API Dispatcher 1 Socket callback /Hook API OpenFastPath (OFP) (SMP multicore library) PKTIO Ingress API Dispatcher 2. Socket callback /Hook API PKTIO Ingress API Dispatcher N One ODP thread context Core 0 Core 1 ODP FW/HW NICs ODP API ODP SW Core 2. Core N Application OFP ODP API Linux ODP HW
Ingress Packet Processing Loopback to VXLAN IP, UDP, TCP, classified by HW Ingress API VXLAN Ethernet VLAN IPv4/v6 IPv4 Reassembly IPv4 local hook API IPv4 forward hook API Transport(L4) classifier UDP input TCP input IPv4 GRE Socket API GRE hook API ICMP IGMP Fallback to slowpath for unknown traffic IPv4/v6 routing Update MAC table IPv4/v6 output User API L4 L3 L2 Pre-classified ARP Send ARP request Packets Information
Egress Packet Processing UDP output Socket/Egress API User API L4 L3 L2 Pre-classified TCP output ICMP error IPv6 output IPv4 output IPv4 GRE tunneling VXLAN IPv4 Fragmentation Ethernet VLAN Packets Information Confidential Under NDA
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 Confidential Under NDA
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 dependency
Shaped in Telecom, authority in communication, future in connectivity Multicore RTOS maximizing hardware utilization and powering embedded systems from telecom to automotive to industrial automation and beyond 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
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 Since 2006 Contributor and Maintainer of LINX Open Source messaged based IPC mechanism
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