Stan Smith Intel SSG/DPD February, 2015 Kernel OpenFabrics Interface kOFI 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.
Sockets Programming CS144 Review Session 1 April 4, 2008 Ben Nham.
G Robert Grimm New York University Lightweight RPC.
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.
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.
McGraw-Hill©The McGraw-Hill Companies, Inc., 2004 Application Layer PART VI.
Stan Smith Intel SSG/DPD March, 2015 Kernel OpenFabrics Interface Server End point setup.
Stan Smith Intel SSG/DPD June, 2015 Kernel Fabric Interface KFI Framework.
Introduction to Linux Network 劉德懿
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,.
Sockets and intro to IO multiplexing. Goals We are going to study sockets programming as means to introduce IO multiplexing problem. We will revisit socket.
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.
Fabtests – test framework ideas/suggestions Howard Pritchard – LANL LA-UR OFI WG F2F - 8/
FINAL MPX DELIVERABLE Due when you schedule your interview and presentation.
LWIP TCP/IP Stack 김백규.
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.
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.
---- IT Acumens. COM IT Acumens. COMIT Acumens. COM.
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.
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.
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.
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.
OIC Open Source Work Group. 1 Architecture IoTivity v1.0 CA API CA Control Network Config. Network Config. CoAP Protocol CoAP Protocol Interface Controller.
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
Overview QEMU VM VMWare pvrdma Func1: RoCE Func0: ETH ETH
developing to the openfabrics interfaces libfabric
UNIX Sockets COS 461 Precept 1.
A Brief Introduction to OpenFabrics Interfaces - libfabric
Chapter 2: System Structures
Fabric Interfaces Architecture – v4
Advancing open fabrics interfaces
Chet Douglas – DCG NVMS SW Architecture
Socket Programming in C
Transport layer API: Socket Programming
Request ordering for FI_MSG and FI_RDM endpoints
Outline Communications in Distributed Systems Socket Programming
Presentation transcript:

Stan Smith Intel SSG/DPD February, 2015 Kernel OpenFabrics Interface 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 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. 3

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). 4 KOFI API (extremely thin code layer)

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

kOFI Initialization fi_getinfo( &fi ) Acquire a list of desirable/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. 6

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 (e.g. QP- >RTS). 7

kOFI connection components 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 8

kOFI Reliable Datagram 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(s). fi_cq_read() non-blocking read CQ event(s). fi_cq_error() retrieve data transfer error information fi_close() close any kofi created object. 9

kOFI message 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). 10

kOFI RDMA data transfer fi_write() post RDMA write. fi_read() post RDMA read. fi_writemsg() post RDMA write msg (iovec). fi_readmsg() post RDMA read msg (iovec). 11

kOFI message data transfer fi_send() post send. fi_recv() post read. fi_sendmsg() post write msg (iovec + imData). fi_recvmsg() post read msg (iovec+ imData). fi_recvv(), fi_sendv() post recv/send with iovec. 12

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); }; 14