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

Reply via email to