Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2010 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: Reliable Datagram Service v3 1.2. Name of Document Author/Supplier: Author: Sherman Pun 1.3 Date of This Document: 05 February, 2010 4. Technical Description
RDSv3 - Reliable Datagram Service version 3 Table of Contents I. Introduction II. Summary of Interfaces III. Man Page Changes I. Introduction This fasttrack defines an upgrade of the current version 1 of the Reliable Datagram Service, rds driver (PSARC 2006/356) to version 3. This driver, RDSv3 will be compliant with version 1 applications but will also add new features like: 1. Remote DMA (RDMA) support. 2. Connect(3SOCKET) interface. However, Oracle, owner of the RDS specification had changed the wire protocol and thus there is no interoperability requirements with systems running with the version 1 driver. The version 3 protocol is used in Exadata 2. This software upgrade involves a porting of the Oracle Linux driver version 1.4.2 which is distributed from the Open Fabrics Enterprise Distribution (OFED) to Solaris. II. Summary of Interfaces This case asserts a micro/patch binding. Same as in the case of version 1, the API is not a general-purpose interface; it is specific to Oracle. These additional interfaces would all be classified as Contracted Project Private, to be contracted to Oracle. A. Socket Call While our v3 implementation is technically a superset of the v1 implementation, we have decided not to alter the socket binding for v1 at this time to minimize risks to the already certified RAC 10gr2 on v1. RDSv3 will use socket type SOCK_SEQPACKET instead of SOCK_DGRAM to distinguish itself from the version 1 driver. A new entry of "30 6 0 sockrds" will be integrated into /etc/sock2path. B. RDMA Interfaces The Solaris driver will support the same RDMA interfaces as the the Linux driver. In summary, the driver supports a. control messages (ancillary data) sent/received via the sendmsg(2) and recvmsg(2) system calls. Control messages are - RDS_CMSG_RDMA_MAP - RDS_CMSG_RDMA_DEST - RDS_CMSG_RDMA_ARGS - RDS_CMSG_RDMA_STATUS b. setsockopt(2) calls of - RDS_GET_MR - RDS_FREE_MR - RDS_RECVERR These interfaces and their usages are documented in the updated rds(3SOCKET). C. Interfaces Dependencies The driver will depend on the RDMA CM APIs and Open Fabrics kernel IB VERBs from the OFUV project, PSARC 2009/421 and Low Latency Socket Framework (Volo), PSARC 2007/587. The dependencies with Open Fabrics kernel IB VERBS are handled via a contract for private interfaces from the OFUV project. OFUV has provided just enough functionality in these interfaces to support RDSv3. At this time, those interfaces are not capable of supporting the full range of OFED kernel verb consumers. Please see the contract file in the case directory for details. III. ManPage Changes The rds(3SOCKET) will be updated with the interface changes above. RDMA usage description is taken from the OFED rds-rdma.7d man page in their 1.4.2 release. Under materials subdirectory: case.txt - this document rdsv3.3socket.txt - update diff.v3-v1.3socket shows the diff between versions 1 and 3. Manpage for existing rds.3socket could be found under: http://sac.sfbay/Archives/CaseLog/arc/PSARC/2006/356/commitment.materials/rds.3socket 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open