OpenDataPlane: network packet journey

Similar documents
OpenDataplane project

OpenDataPlane (ODP) A Quick Introduction and Overview. Linaro Networking Group (LNG) Presented by Bill Fischofer.

Software Datapath Acceleration for Stateless Packet Processing

ANIC Host CPU Offload Features Overview An Overview of Features and Functions Available with ANIC Adapters

ODP Relationship to NFV. Bill Fischofer, LNG 31 October 2013

Table of Contents. Cisco Quality of Service Options on GRE Tunnel Interfaces

Open vswitch DPDK Acceleration Using HW Classification

DPDK Summit China 2017

Configuring Quality of Service

EVC Quality of Service

Research on DPDK Based High-Speed Network Traffic Analysis. Zihao Wang Network & Information Center Shanghai Jiao Tong University

HKG net_mdev: Fast-path userspace I/O. Ilias Apalodimas Mykyta Iziumtsev François-Frédéric Ozog

An Intelligent NIC Design Xin Song

Enhanced Ethernet Switching Technology. Time Applications. Rui Santos 17 / 04 / 2009

SFO17-315: OpenDataPlane Testing in Travis. Dmitry Eremin-Solenikov, Cavium Maxim Uvarov, Linaro

Configuring Priority Flow Control

EVC Quality of Service

QoS Setup Guide. Application Note 306 QoS Setup Procedure. QoS Set-up Guide

Cisco - Catalyst G-L3 Series Switches and WS-X4232-L3 Layer 3 Modules QoS FAQ

A Look at Intel s Dataplane Development Kit

Modular Quality of Service Overview on Cisco IOS XR Software

Finding Support Information for Platforms and Cisco IOS and Catalyst OS Software Images

XDP now with REDIRECT

Per-Session QoS. Finding Feature Information

Event Device Drivers. Release rc1

Configuring Firewall Filters (J-Web Procedure)

QoS: Time-Based Thresholds for WRED and Queue Limit

Sharing Bandwidth Fairly During Congestion

Lecture Outline. Bag of Tricks

Demystifying Network Cards

Using (Suricata over) PF_RING for NIC-Independent Acceleration

Speeding up Linux TCP/IP with a Fast Packet I/O Framework

QoS MIB Implementation

EVC Quality of Service

Cisco ASR 1000 Series Aggregation Services Routers: QoS Architecture and Solutions

Platform Specific Guides. Release

Technology Overview. Frequently Asked Questions: MX Series 3D Universal Edge Routers Quality of Service. Published:

Technology for Adaptive Hard. Rui Santos, UA

Software Routers: NetMap

EE 122: Differentiated Services

IP Premium Agenda. - Services specification and implementation discussion. - Qos Parameters. M. Campanella - TF-TNG - Münster 7 feb 2001

High-Speed Forwarding: A P4 Compiler with a Hardware Abstraction Library for Intel DPDK

Configuring QoS CHAPTER

BUILDING A NEXT-GENERATION FIREWALL

Managing and Securing Computer Networks. Guy Leduc. Chapter 2: Software-Defined Networks (SDN) Chapter 2. Chapter goals:

Anand Raghunathan

A Next Generation Home Access Point and Router

"Charting the Course... Implementing Cisco Quality of Service (QOS) Course Summary

Configuring 4-Port Gigabit Ethernet WAN Optical Services Modules

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective. Part I: Operating system overview: Processes and threads

Understanding How Routing Updates and Layer 2 Control Packets Are Queued on an Interface with a QoS Service Policy

Quality of Service for VPNs

High-Speed Network Processors. EZchip Presentation - 1

AlcatelLucent.Selftestengine.4A0-107.v by.Ele.56q. Exam Code: 4A Exam Name: Alcatel-Lucent Quality of Service

VortiQa Software with Unified Threat Management for Service Provider Equipment

Configuring Priority Flow Control

Next Generation Enterprise Solutions from ARM

H3C S9500 QoS Technology White Paper

Monitoring QoS Statistics

DPDK+eBPF KONSTANTIN ANANYEV INTEL

Data Plane Development Kit

Configuring QoS. Understanding QoS CHAPTER

Configuring Modular QoS on Link Bundles

Maintaining Cisco Service Provider Quality of Service

A Preferred Service Architecture for Payload Data Flows. Ray Gilstrap, Thom Stone, Ken Freeman

Port-Shaper and LLQ in the Presence of EFPs

Quality of Service. Ib Hansen TECRST-2500_c Cisco Systems, Inc. All rights reserved. Cisco Public 1

Basics (cont.) Characteristics of data communication technologies OSI-Model

DPDK on Arm64 Status Review & Plan

Networking in a Vertically Scaled World

Register Bit Name Description Default Global Ctrl Reg 2 SGCR2. Table 1. Registers are used for Common and Egress Port Setting

Quality of Service (QoS) Computer network and QoS ATM. QoS parameters. QoS ATM QoS implementations Integrated Services Differentiated Services

Configuring Priority Flow Control

Freescale, the Freescale logo, AltiVec, C-5, CodeTEST, CodeWarrior, ColdFire, C-Ware, t he Energy Efficient Solutions logo, mobilegt, PowerQUICC,

Fast packet processing in linux with af_xdp

Part1: Lecture 4 QoS

Performance Evaluation of Myrinet-based Network Router

Freescale, the Freescale logo, AltiVec, C-5, CodeTEST, CodeWarrior, ColdFire, C-Ware, t he Energy Efficient Solutions logo, mobilegt, PowerQUICC,

Last time! Overview! 14/04/15. Part1: Lecture 4! QoS! Router architectures! How to improve TCP? SYN attacks SCTP. SIP and H.

Flexplane: An Experimenta0on Pla3orm for Resource Management in Datacenters

Implementing Cisco Quality of Service 2.5 (QOS)

Configuring Quality of Service

Fast packet processing in the cloud. Dániel Géhberger Ericsson Research

Proven IP Network Services: from End-User to Router and vice versa

Hardware Flow Offload. What is it? Why you should matter?

Supporting Cloud Native with DPDK and containers KEITH INTEL CORPORATION

Configuring Modular Quality of Service Congestion Management on Cisco IOS XR Software

Quality of Service Configuration Guide, Cisco IOS XE Everest 16.6.x (Catalyst 9300 Switches)

Monitoring Ports. Port State

New Approach to OVS Datapath Performance. Founder of CloudNetEngine Jun Xiao

T4P4S: When P4 meets DPDK. Sandor Laki DPDK Summit Userspace - Dublin- 2017

QoS: Match on ATM CLP

Differentiated Service Router Architecture - Classification, Metering and Policing

Configuring sflow. Information About sflow. sflow Agent. This chapter contains the following sections:

lib/librte_ipsec A NATIVE DPDK IPSEC LIBRARY UPDATE 2018/12 DECLAN DOHERTY, MOHAMMAD ABDUL AWAL, KONSTANTIN ANANYEV

Understanding Queuing and Scheduling QoS on Catalyst 4000 Supervisor III and IV

Configuring PFC QoS CHAPTER

Networking at the Speed of Light

PFC and Untagged Frames

Table of Contents. Table of Contents

Transcription:

OpenDataPlane: network packet journey Maxim Uvarov This presentation describes what is ODP. Touches common data types and APIs to work with network packets. Answers the question why ODP is needed and how to use it. Gives basic overview of internal components.

Linux kernel stack

More complex but not complete view: https://wiki.linuxfoundation.org/images/1/1c/network_data_flow_through_kernel.png

Issues with kernel network stack: - Long and unpredictable latencies for network packets; Memory size for metadata for network packet (SKB metadata, TCP/IP and netfilter metadata) - few kilobytes for 64 byte packet; System fight for cpu time between kernel and userland, spending cpu cycles is not optimal; TLB entries for both userland and kernel, no Huge Pages support; Packet body copy, strip out vlan tags and later re insertion in user land for AF packet; Other interrupts involved which may delay execution; No hw accelerators support; Crash in kernel makes whole system not operable and you have to reboot. Reboot whole system vs one single application.

Abstract network hardware

What is OpenDataPlane? ODP is the set of APIs describing hardware in software. It is represented as library both static and dynamic. Supported ABI compatibility libodp version to use with different implementations. Non ABI compat version uses native types for more speed optimization. ODP defines API and does not put any restrictions for implementations. Know similar projects to ODP are: dpdk, netmap, pf_ring, libpcap. Know implementations are: Linux generic, DPDK based, Cavium Thunder-X, Freescale based on DPAA, TI Keystone II, Kalray MPAA. Current ODP implementations done in linux user space. Where hardware delivers packets directly to user space memory. If ODP API can not be accelerated with hardware, than software realisation is used.

ODP network packet odp_packet_t handle odp_packet_t = odp_packet_alloc() void *odp_packet_data(odp_packet_t pkt); uint32_t odp_packet_len(odp_packet_t pkt); uint32_t odp_packet_headroom(odp_packet_t pkt); uint32_t odp_packet_tailroom(odp_packet_t pkt); void *odp_packet_push_head(odp_packet_t pkt, uint32_t len); void *odp_packet_pull_head(odp_packet_t pkt, uint32_t len); void *odp_packet_pull_head(odp_packet_t pkt, uint32_t len); int odp_packet_extend_tail(odp_packet_t *pkt, uint32_t len, void **data_ptr, int odp_packet_move_data(odp_packet_t pkt, uint32_t dst_offset, uint32_t src_offset, uint32_t len); int odp_packet_copy_data(odp_packet_t pkt, uint32_t dst_offset, uint32_t src_offset, uint32_t len); uint32_t *seg_len);

Packet journey begins: ODP classifier Classifier is the hw block on ingress pipeline doing matching packet with configured Packet Matching Rules (PMRs). As the result packet scheduled for processing to specific queue. Packet classification does not take any cpu time. No latency delays in packet processing.

PKTIO, QUEUES and POOLS odp_pktio_t - handle to control packets Input / Output, set up modes, get statistics counters and link status, describe connection to odp queue. odp_queue_t - handle to describe queue of the packet. odp_pool_t - handle for memory storage for the packets. Example of usage: odp_pktio_t pktio = odp_pktio_create( netmap:eth0 ); odp_queue_t queue = odp_queue_create( qname ); odp_pool_t pool = odp_pool_create( pool name, &params);

Run model

ODP_PKTIN_MODE_DIRECT odp_pktin_queue_t queue_in, odp_pktout_queue_t queue_out odp_pktin_queue(pktio, &queue_in, 1); odp_pktout_queue(pktio, &queue_out, 1); while (1) { pkts = odp_pktin_recv_tmo(queue_in, pkt_tbl, MAX_PKT_BURST, ODP_PKTIN_NO_WAIT); sent = odp_pktout_send(queue_out, pkt_tbl, pkts); }

ODP_PKTIN_MODE_SCHED while (1) { odp_event_t ev; ev = odp_schedule(); switch (odp_event_type(ev)) { case ODP_EVENT_PACKET: pkt = odp_packet_from_event(ev); sent = odp_pktout_send(queue_out, pkt, 1); case ODP_EVENT_TIMEOUT: case ODP_EVENT_CRYPTO_COMPL: } }

Crypto operation: encrypt / decrypt packet odp_crypto_session_t - struct provides crypto block setups (sync, async, cipher and auth algorithms) int odp_crypto_operation(odp_crypto_op_param_t *param, odp_bool_t *posted, odp_crypto_op_result_t *result); odp_crypto_compl_t odp_crypto_compl_from_event(odp_event_t ev);

Egress Traffic manager QoS packet scheduling ODP block using following algorithms: Strict Priority scheduling. Weighted Fair Queueing scheduling (WFQ). Bandwidth Shaping. Weighted Random Early Discard (WRED). odp_tm_t tm = odp_tm_create("tm", &tm_params); odp_tm_queue_t tq = odp_tm_queue_create(tm, &queue_params); tn = odp_tm_node_create(tm, "TmNode", &node_params); odp_tm_queue_connect(tq, tn); sched_profile_rr = odp_tm_sched_create("schedprofilerr", &sched_params);

Areas where ODP can be useful: - Routers; IoT sensors information collector servers; Industrial real time networking application; DPI systems (like Snort, Suricata); VPN applications; OS kernel network stack less network apps (OFP); Virtual switches;

Links API, Linux-generic implementation and tests: https://git.linaro.org/lng/odp.git ODP-DPDK: https://git.linaro.org/lng/odp-dpdk.git ODP Freescale DPAA1, DPAA2: http://git.freescale.com/git/cgit.cgi/ppc/sdk/odp.git Cavium ARM 64 Thunder-X: https://github.com/linaro/odp-thunderx