Stan Smith Intel SSG/DPD June, 2015 Kernel Fabric Interface KFI Framework.

Slides:



Advertisements
Similar presentations
Introduction to Sockets Jan Why do we need sockets? Provides an abstraction for interprocess communication.
Advertisements

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.
KOFI Stan Smith Intel SSG/DPD January, 2015 Kernel OpenFabrics Interface.
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.
Sockets Programming CS144 Review Session 1 April 4, 2008 Ben Nham.
Windows Sockets Purpose Windows Sockets 2 (Winsock) enables programmers to create advanced internet, intranet, and other network-capable applications to.
Develop Application with Open Fabrics Yufei Ren Tan Li.
Tutorial 8 Socket Programming
1 Generic Transport Service Primitives Listen –notify Transport layer a call is expected Connect –establish Transport layer connection Send (or Write)
DAPL: Direct Access Transport Libraries Introduction and Example Yufei 10/01/2010.
Netkit ftpd/ftp migration Part 3 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 Open Systems Interconnection model (OSI model) is a product of the Open Systems Interconnection effort at the International Organization for Standardization.
Stan Smith Intel SSG/DPD February, 2015 Kernel OpenFabrics Interface kOFI Framework.
UNIX Sockets COS 461 Precept 1.
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,.
Hands On Networking Socket Programming Ram P Rustagi, ISE Dept Abhishek Gupta, ISE Dept Laxmi Kuber, MCA Dept June 28-30, 2012.
CS345 Operating Systems Φροντιστήριο Άσκησης 2. Inter-process communication Exchange data among processes Methods –Signal –Pipe –Sockets.
OpenFabrics 2.0 Sean Hefty Intel Corporation. Claims Verbs is a poor semantic match for industry standard APIs (MPI, PGAS,...) –Want to minimize software.
FINAL MPX DELIVERABLE Due when you schedule your interview and presentation.
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.
2006 Sonoma Workshop February 2006Page 1 Sockets Direct Protocol (SDP) for Windows - Motivation and Plans Gilad Shainer Mellanox Technologies Inc.
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.
---- IT Acumens. COM IT Acumens. COMIT Acumens. COM.
Scalable RDMA Software Solution Sean Hefty Intel Corporation.
Remote Shell CS230 Project #4 Assigned : Due date :
Storage Interconnect Requirements Chen Zhao, Frank Yang NetApp, Inc.
Datacenter Fabric Workshop August 22, 2005 Reliable Datagram Sockets (RDS) Ranjit Pandit SilverStorm Technologies
CS 158A1 1.4 Implementing Network Software Phenomenal success of the Internet: – Computer # connected doubled every year since 1981, now approaching 200.
Advanced Sockets API-II Vinayak Jagtap
Fabric Interfaces Architecture Sean Hefty - Intel Corporation.
UNIX Sockets COS 461 Precept 1. Socket and Process Communication The interface that the OS provides to its networking subsystem application layer transport.
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.
Part 4: Network Applications Client-server interaction, example applications.
IB Verbs Compatibility
Socket Programming.
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.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
Review: – Why layer architecture? – peer entities – Protocol and service interface – Connection-oriented/connectionless service – Reliable/unreliable service.
OpenFabrics 2.0 rsockets+ requirements Sean Hefty - Intel Corporation Bob Russell, Patrick MacArthur - UNH.
UNIX Sockets Outline UNIX sockets CS 640.
Inter-Process Communication 9.1 Unix Sockets You may regard a socket as being a communication endpoint. –For two processes to communicate, both must create.
1 Spring Semester 2008, Dept. of Computer Science, Technion Internet Networking recitation #7 Socket Programming.
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.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
SC’13 BoF Discussion Sean Hefty Intel Corporation.
SOCKET PROGRAMMING Presented By : Divya Sharma.
Agenda About us Why para-virtualize RDMA Project overview Open issues
Chapter 2: System Structures
Fabric Interfaces Architecture – v4
Advancing open fabrics interfaces
Chet Douglas – DCG NVMS SW Architecture
Socket Programming in C
Request ordering for FI_MSG and FI_RDM endpoints
Application taxonomy & characterization
Internet Networking recitation #8
Outline Communications in Distributed Systems Socket Programming
Presentation transcript:

Stan Smith Intel SSG/DPD June, 2015 Kernel Fabric Interface KFI Framework

Kfabric 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 Verbs interfaces. 2

KFI Framework KFI API kernel Verbs iWarp InfiniBand KFI API KFI Providers Device Drivers NIC Kernel Sockets RoCE New Providers New Devices Verbs Provider Sockets Provider * Red indicates new kernel components

KFI API KFI interfaces are designed such that they are a cohesive set 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. kfi 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 storage endpoints. 4

KFI API KFI API exports up kfi_getinfo() kfi_fabric() kfi_domain() kfi_endpoint() kfi_cq_open() kfi_ep_bind() kfi_listen() kfi_accept() kfi_connect() kfi_send() kfi_recv() kfi_read() kfi_write() kfi_cq_read() kfi_cq_sread() kfi_eq_read() kfi_eq_sread() kfi_close() … KFI API exports down kfi_provider_register() During kfi provider module load a call to kfi_provider_register() supplies the kfi-api with a dispatch vector for kfi_* calls. kfi_provider_deregister() During kfi provider module unload/cleanup kfi_provider_deregister() destroys the kfi_* runtime linkage for the specific provider (ref counted). 5 KFI API (extremely thin code layer)

KFI Provider kfi_provider_register (uint version, struct kfi_provider *provider) kfi_provider_deregister (struct kfi_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 kfi_info **info); int (*freeinfo)(struct kfi_info *info); int (*fabric)(struct kfi_fabric_attr *attr, struct fid_fabric **fabric, void *context); }; 6

KFI Application Flow Initialization Server connection setup ( if required ) Client connection setup ( if required ) Connection finalization ( if required ) Data transfer Shutdown 9

KFI Initialization kfi_getinfo( &fi ) Acquire a list of desirable/available fabric providers. Select appropriate fabric (traverse provider list). kfi_fabric(fi, &fabric) Create a fabric instance based on fabric provider selection. kfi_domain(fabric, fi, &domain) create a fabric access domain object. 10

KOFI End Point setup kfi_ep_open( domain, fi, &ep ) create a communications endpoint. kfi_cq_open( domain, attr, &CQ ) create/open a Completion Queue. kfi_ep_bind( ep, CQ, send/recv ) bind the CQ to an endpoint kfi_enable( ep ) Enable end-point operation (e.g. QP- >RTS). 11

kOFI connection components kfi_listen() listen for a connection request kfi_bind() bind fabric address to an endpoint kfi_accept() accept a connection request kfi_connect() post an endpoint connection request kfi_eq_sread() blocking read for connection events. kfi_eq_error() retrieve connection error information 12

KFI Reliable Datagram transfer kfi_sendto() post a Reliable Datagram send request kfi_recvfrom() post a Reliable Datagram receive request. kfi_cq_sread() synchronous/blocking read CQ event(s). kfi_cq_read() non-blocking read CQ event(s). kfi_cq_error() retrieve data transfer error information fi_close() close any kofi created object. 13

KFI message data transfer kfi_mr_reg( domain, &mr ) register a memory region kfi_close( mr ) release a registered memory region kfi_send( ep, buf, len, fi_mr_desc(mr), ctx ) post async send from memory request. kfi_recv( ep, buf, len, fi_mr_desc(mr), ctx ) post async read into memory request. kfi_sendmsg() post send using fi_msg (kvec + imm data). kfi_readmsg() post read using fi_msg (kvec + imm data). 14

KFI RDMA data transfer kfi_write() post RDMA write. kfi_read() post RDMA read. kfi_writemsg() post RDMA write msg (kvec). kfi_readmsg() post RDMA read msg (kvec). 15

KFI message data transfer kfi_send() post send. kfi_recv() post read. kfi_sendmsg() post write msg (kvec + imData). kfi_recvmsg() post read msg (kvec+ imData). kfi_recvv(), kfi_sendv() post recv/send with kvec. 16