KOFI Stan Smith Intel SSG/DPD January, 2015 Kernel OpenFabrics Interface.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

Introduction to Sockets Jan Why do we need sockets? Provides an abstraction for interprocess communication.
I/O Organization popo.
Middleware Support for RDMA-based Data Transfer in Cloud Computing Yufei Ren, Tan Li, Dantong Yu, Shudong Jin, Thomas Robertazzi Department of Electrical.
CSE 333 – SECTION 8 Networking and sockets. Overview Network Sockets IP addresses and IP address structures in C/C++ DNS – Resolving DNS names Demos.
OFED TCP Port Mapper Proposal June 15, Overview Current NE020 Linux OFED driver uses host TCP/IP stack MAC and IP address for RDMA connections Hardware.
Operating-System Structures
Extensibility, Safety and Performance in the SPIN Operating System B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. E. Fiuczyski, D. Becker, C. Chambers,
Develop Application with Open Fabrics Yufei Ren Tan Li.
DAPL: Direct Access Transport Libraries Introduction and Example Yufei 10/01/2010.
CSE/EE 461 Getting Started with Networking. Basic Concepts  A PROCESS is an executing program somewhere.  Eg, “./a.out”  A MESSAGE contains information.
Stan Smith Intel SSG/DPD March, 2015 Kernel OpenFabrics Interface Server End point setup.
The SNIA NVM Programming Model
An overview of Infiniband Reykjavik, June 24th 2008 R E Y K J A V I K U N I V E R S I T Y Dept. Computer Science Center for Analysis and Design of Intelligent.
 The Open Systems Interconnection model (OSI model) is a product of the Open Systems Interconnection effort at the International Organization for Standardization.
OFED (iWarp) Enhancements Felix Marti, Open Fabrics Alliance Workshop Sonoma, April 2008 Chelsio Communications.
Stan Smith Intel SSG/DPD June, 2015 Kernel Fabric Interface KFI Framework.
Stan Smith Intel SSG/DPD February, 2015 Kernel OpenFabrics Interface kOFI Framework.
Introduction to RDMA Programming
New Direction Proposal: An OpenFabrics Framework for high-performance I/O apps OFA TAC, Key drivers: Sean Hefty, Paul Grun.
Open Fabrics Interfaces Architecture Introduction Sean Hefty Intel Corporation.
SRP Update Bart Van Assche,.
OpenFabrics 2.0 Sean Hefty Intel Corporation. Claims Verbs is a poor semantic match for industry standard APIs (MPI, PGAS,...) –Want to minimize software.
1/29/2002 CS Distributed Systems 1 Infiniband Architecture Aniruddha Bohra.
FINAL MPX DELIVERABLE Due when you schedule your interview and presentation.
High Performance Computing & Communication Research Laboratory 12/11/1997 [1] Hyok Kim Performance Analysis of TCP/IP Data.
LWIP TCP/IP Stack 김백규.
Boosting Event Building Performance Using Infiniband FDR for CMS Upgrade Andrew Forrest – CERN (PH/CMD) Technology and Instrumentation in Particle Physics.
OpenFabrics 2.0 or libibverbs 1.0 Sean Hefty Intel Corporation.
Scalable Fabric Interfaces Sean Hefty Intel Corporation OFI software will be backward compatible.
2006 Sonoma Workshop February 2006Page 1 Sockets Direct Protocol (SDP) for Windows - Motivation and Plans Gilad Shainer Mellanox Technologies Inc.
OFI SW - Progress Sean Hefty - Intel Corporation.
Fabric Interfaces Architecture Sean Hefty - Intel Corporation.
Swapping to Remote Memory over InfiniBand: An Approach using a High Performance Network Block Device Shuang LiangRanjit NoronhaDhabaleswar K. Panda IEEE.
Scalable RDMA Software Solution Sean Hefty Intel Corporation.
Application Block Diagram III. SOFTWARE PLATFORM Figure above shows a network protocol stack for a computer that connects to an Ethernet network and.
Storage Interconnect Requirements Chen Zhao, Frank Yang NetApp, Inc.
Datacenter Fabric Workshop August 22, 2005 Reliable Datagram Sockets (RDS) Ranjit Pandit SilverStorm Technologies
Advanced Sockets API-II Vinayak Jagtap
InfiniBand support for Socket- based connection model by CM Arkady Kanevsky November 16, 2005 version 4.
Fabric Interfaces Architecture Sean Hefty - Intel Corporation.
Stan Smith Intel SSG/DPD February, 2015 Kernel OpenFabrics Interface Initialization.
CSE/EE 461 Getting Started with Networking. 2 Basic Concepts A PROCESS is an executing program somewhere. –Eg, “./a.out” A MESSAGE contains information.
Intel Research & Development ETA: Experience with an IA processor as a Packet Processing Engine HP Labs Computer Systems Colloquium August 2003 Greg Regnier.
Silberschatz, Galvin and Gagne  Operating System Concepts UNIT II Operating System Services.
IB Verbs Compatibility
OFI SW Sean Hefty - Intel Corporation. Target Software 2 Verbs 1.x + extensions 2.0 RDMA CM 1.x + extensions 2.0 Fabric Interfaces.
How to write a MSGQ Transport (MQT) Overview Nov 29, 2005 Todd Mullanix.
OpenFabrics Interface WG A brief introduction Paul Grun – co chair OFI WG Cray, Inc.
OpenFabrics 2.0 rsockets+ requirements Sean Hefty - Intel Corporation Bob Russell, Patrick MacArthur - UNH.
SCIF. SCIF provides a mechanism for inter-node communication within a single platform, where a node is an Intel® MIC Architecture based PCIe card or an.
Stan Smith Intel SSG/DPD June, 2015 Kernel Fabric Interface Kfabric Framework.
SC’13 BoF Discussion Sean Hefty Intel Corporation.
SOCKET PROGRAMMING Presented By : Divya Sharma.
FPGA Support in the upstream kernel Alan Tull
Agenda About us Why para-virtualize RDMA Project overview Open issues
Overview QEMU VM VMWare pvrdma Func1: RoCE Func0: ETH ETH
developing to the openfabrics interfaces libfabric
A Brief Introduction to OpenFabrics Interfaces - libfabric
Chapter 2: System Structures
Lecture Topics: 11/1 Processes Process Management
Fabric Interfaces Architecture – v4
Advancing open fabrics interfaces
Chet Douglas – DCG NVMS SW Architecture
Persistent memory support
Request ordering for FI_MSG and FI_RDM endpoints
OpenFabrics Alliance An Update for SSSI
Application taxonomy & characterization
System Calls System calls are the user API to the OS
Chapter 13: I/O Systems “The two main jobs of a computer are I/O and [CPU] processing. In many cases, the main job is I/O, and the [CPU] processing is.
Presentation transcript:

KOFI Stan Smith Intel SSG/DPD January, 2015 Kernel OpenFabrics Interface

KOFI Mission Future proof the kernel fabric stack (ibverbs) with a fabric independent framework. Migrate fabric I/F from device specific to higher level message passing semantics. Streamline code paths to device functionality (reduced instruction counts). Incorporate high performance storage interfaces. Coexist with current fabric interfaces. 2

KOFI Framework The KOFI framework consists of at least two cooperating components: KOFI (API interface) a single kernel module KOFI Fabric Providers (>=1) kernel modules Providers : Conceptually, a kofi provider may be viewed as a local hardware NIC driver, though a provider is not limited by this definition. Devices and the drivers that plug into the kofi framework are referred to as kofi fabric providers, or simply providers. 3

KOFI Framework - API KOFI interfaces are designed such that they are cohesive and not simply a union of disjoint interfaces. The interfaces are logically divided into two groups: control interfaces are a common set of operations that provide access to local communication resources. communication interfaces expose particular models of communication and fabric functionality, such as message queues, remote memory access, and atomic operations. Communication operations are associated with fabric endpoints. Kofi applications will typically use the control interfaces to discover local capabilities and allocate necessary resources. They will then allocate and configure a communication endpoint to send and receive data, or perform other types of data transfers, with remote endpoints. 4

KOFI Framework KOFI API kernel IBverbs iWarp InfiniBand KOFI API KOFI Providers Device Drivers Ethernet RDS kSocket RoCE New Providers New Devices IBverbs Provider RDS Provider * Red indicates new kernel components

KOFI API KOFI API exports up fi_getinfo() fi_fabric() fi_domain() fi_endpoint() fi_cq_open() fi_ep_bind() fi_listen() fi_accept() fi_connect() fi_send() fi_recv() fi_read() fi_write() fi_cq_read() fi_cq_sread() fi_eq_read() fi_eq_sread() fi_close() … KOFI API exports down kofi_provider_register() During kofi provider module load a call to kofi_provider_register() supplies the kofi-api with a dispatch vector for fi_* calls. kofi_provider_deregister() During kofi provider module unload/cleanup kofi_provider_deregister() destroys the fi_* runtime linkage for the specific provider (ref counted). 7 KOFI API (extremely thin code layer)

KOFI Provider kofi_provider_register (uint version, struct kofi_provider *provider) kofi_provider_deregister (struct kofi_provider *provider) struct kofi_provider { const char *name; uint32_t version; int (*getinfo)(uint32_t version, const char *node, const int service, uint64_t flags, struct fi_info *hints, struct fi_info **info); int (*freeinfo)(struct fi_info *info); int (*fabric)(struct fi_fabric_attr *attr, struct fid_fabric **fabric, void *context); }; 8

KOFI Application Flow KOFI initialization: fi_getinfo( &fi ) Acquire a list of available fabric providers. Select appropriate fabric (traverse provider list). fi_fabric(fi, &fabric) create a fabric instance based on fabric provider selection. fi_domain(fabric, fi, &domain) create a fabric access domain object. 9

KOFI App. II KOFI End Point setup: fi_ep_open( domain, fi, &ep ) create a communications endpoint. fi_cq_open( domain, attr, &CQ ) create/open a Completion Queue. fi_ep_bind( ep, CQ, send/recv ) bind the CQ to an endpoint fi_enable( ep ) Enable end-point operation (QP RTS). 10

KOFI App. III KOFI connection components: (not for Reliable Datagrams) fi_listen() listen for a connection request fi_bind() bind fabric address to an endpoint fi_accept() accept a connection request fi_connect() post an endpoint connection request fi_eq_sread() blocking read for connection events. fi_eq_error() retrieve connection error information 11

KOFI App. IV KOFI Reliable Datagram data transfer: fi_sendto() post a Reliable Datagram send request fi_recvfrom() post a Reliable Datagram receive request. fi_cq_sread() synchronous/blocking read CQ event. fi_cq_error() retrieve data transfer error information fi_close() close any kofi created object. 12

KOFI App. V KOFI buffered data transfer: fi_mr_reg( domain, &mr ) register a memory region fi_close( mr ) release a registered memory region fi_send( ep, buf, len, fi_mr_desc(mr), ctx ) post async send from memory request. fi_recv( ep, buf, len, fi_mr_desc(mr), ctx ) post async read into memory request. fi_sendmsg() post send using fi_msg (iovec + imm data). fi_readmsg() post read using fi_msg (iovec + imm data). 13

KOFI App. VI KOFI Reliable Datagram data transfer: fi_sendto() post a Reliable Datagram send request fi_recvfrom() post a Reliable Datagram receive request. fi_cq_sread() synchronous/blocking read CQ event. fi_cq_error() retrieve data transfer error information fi_close() close any kofi created object. 14

KOFI App. VII KOFI RDMA data transfer: fi_write() post RDMA write. fi_read() post RDMA read. fi_writemsg() post RDMA write (iovec). fi_readmsg() post RDMA read (iovec). 15