| rfc8797xml2.original.xml | rfc8797.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" > | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <?rfc strict="yes" ?> | ||||
| <?rfc toc="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <?rfc compact="yes" ?> | ||||
| <?rfc subcompact="no" ?> | ||||
| <rfc | ||||
| category="std" | ||||
| docName="draft-ietf-nfsv4-rpcrdma-cm-pvt-data-08" | ||||
| ipr="trust200902" | ||||
| submissionType="IETF" | ||||
| updates="8166" | ||||
| xml:lang="en"> | ||||
| <front> | ||||
| <title abbrev="RPC-Over-RDMA CM Private Data"> | ||||
| RDMA Connection Manager Private Data For RPC-Over-RDMA Version 1 | ||||
| </title> | ||||
| <author initials="C.L." surname="Lever" fullname="Charles Lever"> | ||||
| <organization abbrev="Oracle">Oracle Corporation</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street></street> | ||||
| <city></city> | ||||
| <region></region> | ||||
| <code></code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>chuck.lever@oracle.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date /> | ||||
| <area>Transport</area> | ||||
| <workgroup>Network File System Version 4</workgroup> | ||||
| <keyword>NFS-over-RDMA</keyword> | ||||
| <abstract> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | |||
| docName="draft-ietf-nfsv4-rpcrdma-cm-pvt-data-08" | ||||
| number="8797" ipr="trust200902" submissionType="IETF" consensus="true" | ||||
| updates="8166" xml:lang="en" obsoletes="" tocInclude="true" symRefs="true" | ||||
| sortRefs="true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 2.41.0 --> | ||||
| <front> | ||||
| <title abbrev="RPC-over-RDMA CM Private Data"> | ||||
| Remote Direct Memory Access - Connection Manager (RDMA-CM) Private Data for | ||||
| RPC-over-RDMA Version 1</title> | ||||
| <seriesInfo name="RFC" value="8797"/> | ||||
| <author initials="C." surname="Lever" fullname="Charles Lever"> | ||||
| <organization abbrev="Oracle">Oracle Corporation</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street/> | ||||
| <city/> | ||||
| <region/> | ||||
| <code/> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>chuck.lever@oracle.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="June" year="2020"/> | ||||
| <t> | <keyword>NFS-over-RDMA</keyword> | |||
| <abstract> | ||||
| <t> | ||||
| This document specifies the format of | This document specifies the format of | |||
| Remote Direct Memory Access - Connection Manager (RDMA-CM) Private Data | Remote Direct Memory Access - Connection Manager (RDMA-CM) Private Data | |||
| exchanged between RPC-over-RDMA version 1 peers | exchanged between RPC-over-RDMA version 1 peers | |||
| as part of establishing a connection. | as part of establishing a connection. | |||
| The addition of the private data payload specified in this document | The addition of the Private Data payload specified in this document | |||
| is an optional extension | is an optional extension | |||
| that does not alter the RPC-over-RDMA version 1 protocol. | that does not alter the RPC-over-RDMA version 1 protocol. | |||
| This document updates RFC 8166. | This document updates RFC 8166. | |||
| </t> | </t> | |||
| </abstract> | ||||
| </abstract> | </front> | |||
| <middle> | ||||
| </front> | <section anchor="section_A4741DA2-FF86-4A9D-907B-8A73D53C7148" numbered="tru | |||
| e" toc="default"> | ||||
| <middle> | <name>Introduction</name> | |||
| <t> | ||||
| <section | ||||
| title="Introduction" | ||||
| anchor="section:A4741DA2-FF86-4A9D-907B-8A73D53C7148"> | ||||
| <t> | ||||
| The RPC-over-RDMA version 1 transport protocol | The RPC-over-RDMA version 1 transport protocol | |||
| <xref target="RFC8166"/> | <xref target="RFC8166" format="default"/> | |||
| enables payload data transfer using | enables payload data transfer using | |||
| Remote Direct Memory Access (RDMA) | Remote Direct Memory Access (RDMA) | |||
| for upper-layer protocols based on Remote Procedure Calls (RPC) | for upper-layer protocols based on Remote Procedure Calls (RPCs) | |||
| <xref target="RFC5531"/>. | <xref target="RFC5531" format="default"/>. | |||
| The terms "Remote Direct Memory Access" (RDMA) and | The terms "Remote Direct Memory Access" (RDMA) and | |||
| "Direct Data Placement" (DDP) are introduced in | "Direct Data Placement" (DDP) are introduced in | |||
| <xref target="RFC5040"/>. | <xref target="RFC5040" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The two most immediate shortcomings | The two most immediate shortcomings | |||
| of RPC-over-RDMA version 1 are: | of RPC-over-RDMA version 1 are as follows: | |||
| <list style="symbols"> | </t> | |||
| <t> | <ol spacing="normal"> | |||
| <li> | ||||
| <t> | ||||
| Setting up an RDMA data transfer (via RDMA Read or Write) can be costly. | Setting up an RDMA data transfer (via RDMA Read or Write) can be costly. | |||
| The small default size of messages transmitted using RDMA Send | The small default size of messages transmitted using RDMA Send | |||
| forces the use of RDMA Read or Write operations | forces the use of RDMA Read or Write operations | |||
| even for relatively small messages and data payloads. | even for relatively small messages and data payloads. | |||
| <vspace/> | </t> | |||
| <t> | ||||
| The original specification of RPC-over-RDMA version 1 provided | The original specification of RPC-over-RDMA version 1 provided | |||
| an out-of-band protocol for passing inline threshold values | an out-of-band protocol for passing inline threshold values | |||
| between connected peers | between connected peers | |||
| <xref target="RFC5666"/>. | <xref target="RFC5666" format="default"/>. | |||
| However, | However, | |||
| <xref target="RFC8166"/> | <xref target="RFC8166" format="default"/> | |||
| eliminated support for this protocol making it unavailable for this purpose. | eliminated support for this protocol, making it unavailable for this purpose. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| <li> | ||||
| Unlike most other contemporary RDMA-enabled storage protocols, | Unlike most other contemporary RDMA-enabled storage protocols, | |||
| there is no facility in RPC-over-RDMA version 1 | there is no facility in RPC-over-RDMA version 1 | |||
| that enables the use of remote invalidation | that enables the use of remote invalidation | |||
| <xref target="RFC5042"/>. | <xref target="RFC5042" format="default"/>. | |||
| </t> | </li> | |||
| </list> | </ol> | |||
| </t> | <t> | |||
| <t> | Each RPC-over-RDMA version 1 Transport Header follows the | |||
| Each RPC-over-RDMA version 1 transport header follows the | External Data Representation (XDR) definition | |||
| External Data Representation (XDR) | <xref target="RFC4506" format="default"/> | |||
| <xref target="RFC4506"/> | specified in <xref target="RFC8166" format="default"/>. | |||
| definition specified in <xref target="RFC8166"/>. | ||||
| However, RPC-over-RDMA version 1 | However, RPC-over-RDMA version 1 | |||
| has no means of extending this definition | has no means of extending this definition | |||
| in such a way that interoperability with existing implementations is preserved. | in such a way that interoperability with existing implementations is preserved. | |||
| As a result, an out-of-band mechanism is needed | As a result, an out-of-band mechanism is needed | |||
| to help relieve these constraints | to help relieve these constraints | |||
| for existing RPC-over-RDMA version 1 implementations. | for existing RPC-over-RDMA version 1 implementations. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| This document specifies a simple, non-XDR-based message format | This document specifies a simple, non-XDR-based message format | |||
| designed to be passed between RPC-over-RDMA version 1 peers | designed to be passed between RPC-over-RDMA version 1 peers | |||
| at the time each RDMA transport connection is first established. | at the time each RDMA transport connection is first established. | |||
| The mechanism assumes that the underlying RDMA transport has a | The mechanism assumes that the underlying RDMA transport has a | |||
| private data field that is passed between peers at connection time, | Private Data field that is passed between peers at connection time, | |||
| such as is present in the iWARP protocol | such as is present in the Marker PDU Aligned Framing (MPA) protocol | |||
| (described in Section 7.1 of <xref target="RFC5044"/>) | (described in <xref target="RFC5044" sectionFormat="of" section="7.1"/> | |||
| or | and extended in <xref target="RFC6581"/>) or the InfiniBand Connection Manager | |||
| the InfiniBand Connection Manager | <xref target="IBA" format="default"/>. | |||
| <xref target="IBA"/>. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| To enable current RPC-over-RDMA version 1 implementations | To enable current RPC-over-RDMA version 1 implementations | |||
| to interoperate with implementations that support | to interoperate with implementations that support | |||
| the private message format described in this document, | the message format described in this document, | |||
| implementation of the private data message is OPTIONAL. | implementation of the Private Data exchange is <bcp14>OPTIONAL</bcp14>. | |||
| When the private data message has been successfully exchanged, | When Private Data has been successfully exchanged, | |||
| peers may choose to perform extended RDMA semantics. | peers may choose to perform extended RDMA semantics. | |||
| However, the private message format | However, this exchange | |||
| does not alter the XDR definition specified in | does not alter the XDR definition specified in | |||
| <xref target="RFC8166"/>. | <xref target="RFC8166" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The message format is intended to be further extensible | The message format is intended to be further extensible | |||
| within the normal scope of such IETF work | within the normal scope of such IETF work | |||
| (see | (see | |||
| <xref target="section:96A18D5A-2AE4-490D-B140-B964302BF1DF"/> | <xref target="section_96A18D5A-2AE4-490D-B140-B964302BF1DF" format="default"/> | |||
| for further details). | for further details). | |||
| <xref target="section:8701C122-F206-4F87-8FA6-62F1CD648A14"/> | <xref target="section_8701C122-F206-4F87-8FA6-62F1CD648A14" format="default"/> | |||
| of this document defines an IANA registry for this purpose. | of this document defines an IANA registry for this purpose. | |||
| In addition, interoperation between | In addition, interoperation between | |||
| implementations of RPC-over-RDMA version 1 that present this message format to p eers | implementations of RPC-over-RDMA version 1 that present this message format to p eers | |||
| and those that do not recognize this message format is guaranteed. | and those that do not recognize this message format is guaranteed. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="section_6E4898D3-A2A9-47FA-9CBD-069328E610E4" numbered="tru | ||||
| <section | e" toc="default"> | |||
| title="Requirements Language" | <name>Requirements Language</name> | |||
| anchor="section:6E4898D3-A2A9-47FA-9CBD-069328E610E4"> | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| <t> | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | "<bcp14>SHOULD NOT</bcp14>", | |||
| "MAY", and "OPTIONAL" in this document | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| are to be interpreted as described in BCP 14 | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | |||
| <xref target="RFC2119"/> | are to be interpreted as described in BCP 14 | |||
| <xref target="RFC8174"/> | <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | |||
| when, and only when, they appear in all capitals, as shown here. | when, they appear in all capitals, as shown here.</t> | |||
| </t> | </section> | |||
| </section> | <section anchor="section_D6ED5D4A-E123-4DDD-B65F-733F2B377679" numbered="tru | |||
| e" toc="default"> | ||||
| <section | <name>Advertised Transport Properties</name> | |||
| title="Advertised Transport Properties" | <section anchor="section_0F60CBDD-8A7E-4B41-B193-18C04201DB3E" numbered="t | |||
| anchor="section:D6ED5D4A-E123-4DDD-B65F-733F2B377679"> | rue" toc="default"> | |||
| <name>Inline Threshold Size</name> | ||||
| <section | <t> | |||
| title="Inline Threshold Size" | <xref target="RFC8166" sectionFormat="of" section="3.3.2"/> | |||
| anchor="section:0F60CBDD-8A7E-4B41-B193-18C04201DB3E"> | defines the term "inline threshold". | |||
| <t> | ||||
| Section 3.3.2 of | ||||
| <xref target="RFC8166"/> | ||||
| defines the term "inline threshold." | ||||
| An inline threshold is the maximum number of bytes that | An inline threshold is the maximum number of bytes that | |||
| can be transmitted using one RDMA Send and one RDMA Receive. | can be transmitted using one RDMA Send and one RDMA Receive. | |||
| There are a pair of inline thresholds for a connection: | There are a pair of inline thresholds for a connection: | |||
| a client-to-server threshold and a server-to-client threshold. | a client-to-server threshold and a server-to-client threshold. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If an incoming RDMA message exceeds the size | If an incoming RDMA message exceeds the size | |||
| of a receiver's inline threshold, | of a receiver's inline threshold, | |||
| the receive operation fails | the Receive operation fails | |||
| and | and | |||
| the RDMA provider typically terminates the connection. | the RDMA provider typically terminates the connection. | |||
| To convey an RPC message larger than the receiver's inline threshold | To convey an RPC message larger than the receiver's inline threshold | |||
| without risking receive failure, | without risking receive failure, | |||
| a sender must use explicit RDMA data transfer operations, | a sender must use explicit RDMA data transfer operations, | |||
| which are more expensive than an RDMA Send. | which are more expensive than an RDMA Send. | |||
| See Sections 3.3 and 3.5 of | See Sections <xref target="RFC8166" section="3.3" | |||
| <xref target="RFC8166"/> | sectionFormat="bare"/> and <xref target="RFC8166" section="3.5" | |||
| sectionFormat="bare"/> of <xref target="RFC8166"/> | ||||
| for a complete discussion. | for a complete discussion. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The default value of inline thresholds for RPC-over-RDMA version 1 | The default value of inline thresholds for RPC-over-RDMA version 1 | |||
| connections is 1024 bytes (as defined in Section 3.3.3 of | connections is 1024 bytes (as defined in <xref target="RFC8166" | |||
| <xref target="RFC8166"/>). | sectionFormat="of" section="3.3.3"/>). | |||
| This value is adequate for nearly all NFS version 3 procedures. | This value is adequate for nearly all NFS version 3 procedures. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| NFS version 4 COMPOUND operations | NFS version 4 COMPOUND operations | |||
| <xref target="RFC7530"/> | <xref target="RFC7530" format="default"/> | |||
| are larger on average | are larger on average | |||
| than NFS version 3 procedures | than NFS version 3 procedures | |||
| <xref target="RFC1813"/>, | <xref target="RFC1813" format="default"/>, | |||
| forcing clients to use explicit RDMA operations | forcing clients to use explicit RDMA operations | |||
| for frequently-issued requests such as LOOKUP and GETATTR. | for frequently issued requests such as LOOKUP and GETATTR. | |||
| The use of RPCSEC_GSS security also increases the average size | The use of RPCSEC_GSS security also increases the average size | |||
| of RPC messages, | of RPC messages, | |||
| due to the larger size of RPCSEC_GSS credential material | due to the larger size of RPCSEC_GSS credential material | |||
| included in RPC headers | included in RPC headers | |||
| <xref target="RFC7861"/>. | <xref target="RFC7861" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If a sender and receiver could somehow agree on larger inline thresholds, | If a sender and receiver could somehow agree on larger inline thresholds, | |||
| frequently-used RPC transactions avoid the cost of explicit RDMA operations. | frequently used RPC transactions avoid the cost of explicit RDMA operations. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="section_F82BDC05-F8A6-478C-A02C-BC308EE75A18" numbered="t | ||||
| <section | rue" toc="default"> | |||
| title="Remote Invalidation" | <name>Remote Invalidation</name> | |||
| anchor="section:F82BDC05-F8A6-478C-A02C-BC308EE75A18"> | <t> | |||
| <t> | ||||
| After an RDMA data transfer operation completes, | After an RDMA data transfer operation completes, | |||
| an RDMA consumer can request | an RDMA consumer can request | |||
| that its peer's RDMA network interface card (RNIC) | that its peer's RDMA Network Interface Card (RNIC) | |||
| invalidate the Steering Tag (STag) | invalidate the Steering Tag (STag) | |||
| associated with the data transfer | associated with the data transfer | |||
| <xref target="RFC5042"/>. | <xref target="RFC5042" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An RDMA consumer requests remote invalidation by posting | An RDMA consumer requests remote invalidation by posting | |||
| an RDMA Send With Invalidate Work Request | an RDMA Send with Invalidate operation | |||
| in place of an RDMA Send Work Request. | in place of an RDMA Send operation. | |||
| Each RDMA Send With Invalidate carries one STag to invalidate. | Each RDMA Send with Invalidate carries one STag to invalidate. | |||
| The receiver of an RDMA Send With Invalidate performs the | The receiver of an RDMA Send with Invalidate performs the | |||
| requested invalidation and then reports that invalidation | requested invalidation and then reports that invalidation | |||
| as part of the completion of a waiting Receive Work Request. | as part of the completion of a waiting Receive operation. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If both peers support remote invalidation, | If both peers support remote invalidation, | |||
| an RPC-over-RDMA responder might use remote invalidation | an RPC-over-RDMA responder might use remote invalidation | |||
| when replying to an RPC request that provided chunks. | when replying to an RPC request that provided chunks. | |||
| Because one of the chunks has already been invalidated, | Because one of the chunks has already been invalidated, | |||
| finalizing the results of the RPC is made simpler and faster. | finalizing the results of the RPC is made simpler and faster. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| However, there are some important caveats which contraindicate | However, there are some important caveats that contraindicate | |||
| the blanket use of remote invalidation: | the blanket use of remote invalidation: | |||
| <list style="symbols"> | ||||
| <t> | ||||
| Remote invalidation is not supported by all RNICs. | ||||
| </t> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| <li> | ||||
| Remote invalidation is not supported by all RNICs. | ||||
| </li> | ||||
| <li> | ||||
| Not all RPC-over-RDMA responder implementations can generate | Not all RPC-over-RDMA responder implementations can generate | |||
| RDMA Send With Invalidate Work Requests. | RDMA Send with Invalidate operations. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| Not all RPC-over-RDMA requester implementations can recognize | Not all RPC-over-RDMA requester implementations can recognize | |||
| when remote invalidation has occurred. | when remote invalidation has occurred. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| On one connection in different RPC-over-RDMA transactions, | On one connection in different RPC-over-RDMA transactions, | |||
| or in a single RPC-over-RDMA transaction, | or in a single RPC-over-RDMA transaction, | |||
| an RPC-over-RDMA requester can expose a mixture of STags | an RPC-over-RDMA requester can expose a mixture of STags | |||
| that may be invalidated remotely | that may be invalidated remotely | |||
| and some that must not be. | and some that must not be. | |||
| No indication is provided at the RDMA layer as to which is which. | No indication is provided at the RDMA layer as to which is which. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| <t> | ||||
| A responder therefore must not employ remote invalidation unless it is | A responder therefore must not employ remote invalidation unless it is | |||
| aware of support for it in its own RDMA stack, and on the requester. | aware of support for it in its own RDMA stack, and on the requester. | |||
| And, without altering the XDR structure of RPC-over-RDMA version 1 messages, | And, without altering the XDR structure of RPC-over-RDMA version 1 messages, | |||
| it is not possible to support remote invalidation with requesters | it is not possible to support remote invalidation with requesters | |||
| that mix STags that may and must not be invalidated remotely | that include an STag that must not be invalidated | |||
| in a single RPC or on the same connection. | remotely in an RPC with STags that may be invalidated. Likewise, it | |||
| is not possible to support remote invalidation with requesters that | ||||
| mix RPCs with STags that may be invalidated with RPCs with STags that | ||||
| must not be invalidated on the same connection. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| There are some NFS/RDMA client implementations whose STags | There are some NFS/RDMA client implementations whose STags | |||
| are always safe to invalidate remotely. | are always safe to invalidate remotely. | |||
| For such clients, indicating to the responder that remote | For such clients, indicating to the responder that remote | |||
| invalidation is always safe can enable such invalidation | invalidation is always safe can enable such invalidation | |||
| without the need for additional protocol elements to be defined. | without the need for additional protocol elements to be defined. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="section_99541DF3-E579-42B6-9C7A-D020926798F6" numbered="tru | |||
| e" toc="default"> | ||||
| <section | <name>Private Data Message Format</name> | |||
| title="Private Data Message Format" | <t> | |||
| anchor="section:99541DF3-E579-42B6-9C7A-D020926798F6"> | ||||
| <t> | ||||
| With an InfiniBand lower layer, for example, | With an InfiniBand lower layer, for example, | |||
| RDMA connection setup uses a Connection Manager | RDMA connection setup uses a Connection Manager (CM) | |||
| when establishing a Reliable Connection | when establishing a Reliable Connection | |||
| <xref target="IBA"/>. | <xref target="IBA" format="default"/>. | |||
| When an RPC-over-RDMA version 1 transport connection is established, | When an RPC-over-RDMA version 1 transport connection is established, | |||
| the client (which actively establishes connections) | the client (which actively establishes connections) | |||
| and the server (which passively accepts connections) | and the server (which passively accepts connections) | |||
| populate the CM Private Data field exchanged | populate the CM Private Data field exchanged | |||
| as part of CM connection establishment. | as part of CM connection establishment. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The transport properties exchanged via this mechanism | The transport properties exchanged via this mechanism | |||
| are fixed for the life of the connection. | are fixed for the life of the connection. | |||
| Each new connection presents an opportunity | Each new connection presents an opportunity | |||
| for a fresh exchange. | for a fresh exchange. | |||
| An implementation of the extension described in this document | An implementation of the extension described in this document | |||
| MUST be prepared for the settings to change upon a reconnection. | <bcp14>MUST</bcp14> be prepared for the settings to change upon a reconnection. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| For RPC-over-RDMA version 1, the CM Private Data field | For RPC-over-RDMA version 1, the CM Private Data field | |||
| is formatted as described in the following subsection. | is formatted as described below. RPC clients and servers use the same format. | |||
| RPC clients and servers use the same format. | ||||
| If the capacity of the Private Data field is too small | If the capacity of the Private Data field is too small | |||
| to contain this message format | to contain this message format | |||
| or | or | |||
| the underlying RDMA transport is not managed by a Connection Manager, | the underlying RDMA transport is not managed by a CM, | |||
| the CM Private Data field cannot be used on behalf of RPC-over-RDMA version 1. | the CM Private Data field cannot be used on behalf of RPC-over-RDMA version 1. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The first 8 octets of the CM Private Data field | The first eight octets of the CM Private Data field | |||
| is to be formatted as follows: | are to be formatted as follows: | |||
| </t> | </t> | |||
| <figure align="left"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| <artwork xml:space="preserve" align="left"> | 0 1 2 3 | |||
| 0 1 2 3 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Format Identifier | | |||
| | Format Identifier | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Version | Reserved |R| Send Size | Receive Size | | |||
| | Version | Reserved |R| Send Size | Receive Size | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | <dl newline="false" spacing="normal"> | |||
| </artwork> | <dt>Format Identifier:</dt> | |||
| </figure> | <dd> | |||
| <t> | ||||
| <list style="hanging"> | ||||
| <t hangText="Format Identifier:"> | ||||
| This field contains a fixed 32-bit value that identifies | This field contains a fixed 32-bit value that identifies | |||
| the content of the Private Data field as an RPC-over-RDMA | the content of the Private Data field as an RPC-over-RDMA | |||
| version 1 CM Private Data message. | version 1 CM Private Data message. | |||
| In RPC-over-RDMA version 1 Private Data, | In RPC-over-RDMA version 1 Private Data, | |||
| the value of this field is always 0xf6ab0e18, in network byte order. | the value of this field is always 0xf6ab0e18, in network byte order. | |||
| The use of this field is further expanded upon in | The use of this field is further expanded upon in | |||
| <xref target="section:0BD80E15-13FF-4210-A1D8-E0AE531821A4"/>. | <xref target="section_0BD80E15-13FF-4210-A1D8-E0AE531821A4" format="default"/>. | |||
| </t> | </dd> | |||
| <t hangText="Version:"> | <dt>Version:</dt> | |||
| <dd> | ||||
| This 8-bit field contains a message format version number. | This 8-bit field contains a message format version number. | |||
| The value "1" in this field indicates that exactly eight octets are present, | The value "1" in this field indicates that exactly eight octets are present, | |||
| that they appear in the order described in this section, | that they appear in the order described in this section, | |||
| and that each has the meaning defined in this section. | and that each has the meaning defined in this section. | |||
| Further considerations about the use of this field are discussed in | Further considerations about the use of this field are discussed in | |||
| <xref target="section:96A18D5A-2AE4-490D-B140-B964302BF1DF"/>. | <xref target="section_96A18D5A-2AE4-490D-B140-B964302BF1DF" format="default"/>. | |||
| </t> | </dd> | |||
| <t hangText="Reserved:"> | <dt>Reserved:</dt> | |||
| <dd> | ||||
| This 7-bit field is unused. | This 7-bit field is unused. | |||
| Senders MUST set these bits to zero | Senders <bcp14>MUST</bcp14> set these bits to zero, | |||
| and | and | |||
| receivers MUST ignore their value. | receivers <bcp14>MUST</bcp14> ignore their value. | |||
| </t> | </dd> | |||
| <t hangText="R:"> | <dt>R:</dt> | |||
| <dd> | ||||
| This 1-bit field indicates that | This 1-bit field indicates that | |||
| the sender supports remote invalidation. | the sender supports remote invalidation. | |||
| The field is set and interpreted as described in | The field is set and interpreted as described in | |||
| <xref target="section:1D624044-49CC-4464-9BEF-59EA2473ACBF"/>. | <xref target="section_1D624044-49CC-4464-9BEF-59EA2473ACBF" format="default"/>. | |||
| </t> | </dd> | |||
| <t hangText="Send Size:"> | <dt>Send Size:</dt> | |||
| <dd> | ||||
| This 8-bit field contains an encoded value | This 8-bit field contains an encoded value | |||
| corresponding to the maximum number of bytes | corresponding to the maximum number of bytes | |||
| this peer is prepared to transmit in a single RDMA Send | this peer is prepared to transmit in a single RDMA Send | |||
| on this connection. | on this connection. | |||
| The value is encoded as described in | The value is encoded as described in | |||
| <xref target="section:689BD9D4-9C3C-41C7-81F3-8BBE283D252B"/>. | <xref target="section_689BD9D4-9C3C-41C7-81F3-8BBE283D252B" format="default"/>. | |||
| </t> | </dd> | |||
| <t hangText="Receive Size:"> | <dt>Receive Size:</dt> | |||
| <dd> | ||||
| This 8-bit field contains an encoded value | This 8-bit field contains an encoded value | |||
| corresponding to the maximum number of bytes | corresponding to the maximum number of bytes | |||
| this peer is prepared to receive with a single RDMA Receive | this peer is prepared to receive with a single RDMA Receive | |||
| on this connection. | on this connection. | |||
| The value is encoded as described in | The value is encoded as described in | |||
| <xref target="section:689BD9D4-9C3C-41C7-81F3-8BBE283D252B"/>. | <xref target="section_689BD9D4-9C3C-41C7-81F3-8BBE283D252B" format="default"/>. | |||
| </t> | </dd> | |||
| </list> | </dl> | |||
| </t> | <section anchor="section_1D624044-49CC-4464-9BEF-59EA2473ACBF" numbered="t | |||
| rue" toc="default"> | ||||
| <section | <name>Using the R Field</name> | |||
| title="Using the R Field" | <t> | |||
| anchor="section:1D624044-49CC-4464-9BEF-59EA2473ACBF"> | The R field indicates limited support for remote invalidation | |||
| <t> | ||||
| The R field indicates limited support for remote invalidate | ||||
| as described in | as described in | |||
| <xref target="section:F82BDC05-F8A6-478C-A02C-BC308EE75A18"/>. | <xref target="section_F82BDC05-F8A6-478C-A02C-BC308EE75A18" | |||
| format="default"/>. | ||||
| When both connection peers have set this bit flag in their CM Private Data, | When both connection peers have set this bit flag in their CM Private Data, | |||
| the responder MAY use RDMA Send With Invalidate | the responder <bcp14>MAY</bcp14> use RDMA Send with Invalidate operations | |||
| when transmitting RPC Replies. | when transmitting RPC Replies. | |||
| Each RDMA Send With Invalidate MUST invalidate an STag | Each RDMA Send with Invalidate <bcp14>MUST</bcp14> invalidate an STag | |||
| associated only with the XID in the rdma_xid field | associated only with the Transaction ID (XID) in the rdma_xid field | |||
| of the RPC-over-RDMA Transport Header it carries. | of the RPC-over-RDMA Transport Header it carries. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| When either peer on a connection clears this flag, | When either peer on a connection clears this flag, | |||
| the responder MUST use only RDMA Send when transmitting RPC Replies. | the responder <bcp14>MUST</bcp14> use only RDMA Send when transmitting RPC Repli es. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="section_689BD9D4-9C3C-41C7-81F3-8BBE283D252B" numbered="t | ||||
| <section | rue" toc="default"> | |||
| title="Send and Receive Size Values" | <name>Send and Receive Size Values</name> | |||
| anchor="section:689BD9D4-9C3C-41C7-81F3-8BBE283D252B"> | <t> | |||
| <t> | ||||
| Inline threshold sizes from 1024 to 262144 octets | Inline threshold sizes from 1024 to 262144 octets | |||
| can be represented in the Send Size and Receive Size fields. | can be represented in the Send Size and Receive Size fields. | |||
| The inline threshold values provide a pair of | The inline threshold values provide a pair of | |||
| 1024-octet-aligned maximum message lengths that | 1024-octet-aligned maximum message lengths that | |||
| guarantee Send and Receive operations | guarantee that Send and Receive operations | |||
| do not fail due to length errors. | do not fail due to length errors. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The minimum inline threshold for RPC-over-RDMA version 1 | The minimum inline threshold for RPC-over-RDMA version 1 | |||
| is 1024 octets (see Section 3.3.3 of | is 1024 octets (see <xref target="RFC8166" sectionFormat="of" section="3.3.3"/>) | |||
| <xref target="RFC8166"/>). | . | |||
| The values in the Send Size and Receive Size fields represent | The values in the Send Size and Receive Size fields represent | |||
| the unsigned number of additional kilo-octets of length | the unsigned number of additional kilo-octets of length | |||
| beyond the first 1024 octets. | beyond the first 1024 octets. | |||
| Thus, a sender computes the encoded value by | Thus, a sender computes the encoded value by | |||
| dividing its actual buffer size, in octets, by 1024 | dividing its actual buffer size, in octets, by 1024 | |||
| and | and | |||
| subtracting one from the result. | subtracting one from the result. | |||
| A receiver decodes an incoming Size value by performing | A receiver decodes an incoming Size value by performing | |||
| the inverse set of operations: | the inverse set of operations: | |||
| it adds one to the encoded value | it adds one to the encoded value | |||
| and then | and then | |||
| multiplies that result by 1024. | multiplies that result by 1024. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The client uses the smaller of its own send size and | The client uses the smaller of its own send size and | |||
| the server's reported receive size | the server's reported receive size | |||
| as the client-to-server inline threshold. | as the client-to-server inline threshold. | |||
| The server uses the smaller of its own send size and | The server uses the smaller of its own send size and | |||
| the clients's reported receive size | the client's reported receive size | |||
| as the server-to-client inline threshold. | as the server-to-client inline threshold. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="section_58229D50-C3E7-48D1-A82F-7720AC8A9F8B" numbered="tru | |||
| e" toc="default"> | ||||
| <section | <name>Interoperability Considerations</name> | |||
| title="Interoperability Considerations" | <t> | |||
| anchor="section:58229D50-C3E7-48D1-A82F-7720AC8A9F8B"> | ||||
| <t> | ||||
| The extension described in this document is designed to allow | The extension described in this document is designed to allow | |||
| RPC-over-RDMA version implementations that use CM Private Data | RPC-over-RDMA version implementations that use CM Private Data | |||
| to interoperate fully with | to interoperate fully with | |||
| RPC-over-RDMA version 1 implementations that do not exchange this information. | RPC-over-RDMA version 1 implementations that do not exchange this information. | |||
| Implementations that use this extension must also interoperate | Implementations that use this extension must also interoperate | |||
| fully with RDMA implementations that use CM Private Data for other purposes. | fully with RDMA implementations that use CM Private Data for other purposes. | |||
| Realizing these goals requires that implementations of this extension | Realizing these goals requires that implementations of this extension | |||
| follow the practices described in the rest of this section. | follow the practices described in the rest of this section. | |||
| </t> | </t> | |||
| <section anchor="section_9A3B285D-D557-4028-ACB0-60EA1C9C93BE" numbered="t | ||||
| <section | rue" toc="default"> | |||
| title="Interoperability with RPC-over-RDMA Version 1 Implementations" | <name>Interoperability with RPC-over-RDMA Version 1 Implementations</nam | |||
| anchor="section:9A3B285D-D557-4028-ACB0-60EA1C9C93BE"> | e> | |||
| <t> | <t> | |||
| When a peer does not receive a CM Private Data message | When a peer does not receive a CM Private Data message | |||
| which conforms to | that conforms to | |||
| <xref target="section:99541DF3-E579-42B6-9C7A-D020926798F6"/>, | <xref target="section_99541DF3-E579-42B6-9C7A-D020926798F6" format="default"/>, | |||
| it needs to act as if the remote peer supports only the | it needs to act as if the remote peer supports only the | |||
| default RPC-over-RDMA version 1 settings, | default RPC-over-RDMA version 1 settings, | |||
| as defined in | as defined in | |||
| <xref target="RFC8166"/>. | <xref target="RFC8166" format="default"/>. | |||
| In other words, the peer MUST behave as if a Private Data | In other words, the peer <bcp14>MUST</bcp14> behave as if a Private Data | |||
| message was received in which bit 15 of the Flags field is zero, | message was received in which (1) bit 15 of the Flags field is zero | |||
| and both Size fields contain the value zero. | and (2) both Size fields contain the value zero. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="section_0BD80E15-13FF-4210-A1D8-E0AE531821A4" numbered="t | ||||
| <section | rue" toc="default"> | |||
| title="Interoperability Amongst RDMA Transports" | <name>Interoperability amongst RDMA Transports</name> | |||
| anchor="section:0BD80E15-13FF-4210-A1D8-E0AE531821A4"> | <t> | |||
| <t> | ||||
| The Format Identifier field defined in | The Format Identifier field defined in | |||
| <xref target="section:99541DF3-E579-42B6-9C7A-D020926798F6"/> | <xref target="section_99541DF3-E579-42B6-9C7A-D020926798F6" format="default"/> | |||
| is provided to enable implementations | is provided to enable implementations to distinguish the Private Data defined | |||
| to distinguish RPC-over-RDMA version 1 Private Data | in this document from Private Data inserted at other layers, such as the | |||
| from private data inserted at other layers, | additional Private Data defined by the MPAv2 protocol described in | |||
| such as the private data inserted by | <xref target="RFC6581"/>, and others. | |||
| the iWARP MPAv2 enhancement described in | ||||
| <xref target="RFC6581"/>. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| As part of connection establishment, | As part of connection establishment, | |||
| the received private data buffer is searched for the Format Identifier word. | the buffer containing the received Private Data is searched for the Format Ident ifier word. | |||
| The offset of the Format Identifier is not restricted to any alignment. | The offset of the Format Identifier is not restricted to any alignment. | |||
| If the RPC-over-RDMA version 1 CM Private Data Format Identifier | If the RPC-over-RDMA version 1 CM Private Data Format Identifier | |||
| is not present, | is not present, | |||
| an RPC-over-RDMA version 1 receiver MUST | an RPC-over-RDMA version 1 receiver <bcp14>MUST</bcp14> | |||
| behave as if no RPC-over-RDMA version 1 CM Private Data | behave as if no RPC-over-RDMA version 1 CM Private Data | |||
| has been provided. | has been provided. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Once the RPC-over-RDMA version 1 CM Private Data Format Identifier | Once the RPC-over-RDMA version 1 CM Private Data Format Identifier | |||
| is found, | is found, | |||
| the receiver parses the subsequent octets as | the receiver parses the subsequent octets as | |||
| RPC-over-RDMA version 1 CM Private Data. | RPC-over-RDMA version 1 CM Private Data. | |||
| As additional assurance that the private data content is valid | As additional assurance that the content is valid | |||
| RPC-over-RDMA version 1 CM Private Data, | RPC-over-RDMA version 1 CM Private Data, | |||
| the receiver should check that | the receiver should check that | |||
| the format version number field contains a valid and recognized version number | the format version number field contains a valid and recognized version number | |||
| and | and | |||
| the size of the private data does not overrun the length of the buffer. | the size of the content does not overrun the length of the buffer. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="section_96A18D5A-2AE4-490D-B140-B964302BF1DF" numbered="tru | |||
| e" toc="default"> | ||||
| <section | <name>Updating the Message Format</name> | |||
| title="Updating the Message Format" | <t> | |||
| anchor="section:96A18D5A-2AE4-490D-B140-B964302BF1DF"> | ||||
| <t> | ||||
| Although the message format described in this document | Although the message format described in this document | |||
| provides the ability for the client and server | provides the ability for the client and server | |||
| to exchange particular information about | to exchange particular information about | |||
| the local RPC-over-RDMA implementation, | the local RPC-over-RDMA implementation, | |||
| it is possible that there will be a future need | it is possible that there will be a future need | |||
| to exchange additional properties. | to exchange additional properties. | |||
| This would make it necessary to extend or otherwise modify | This would make it necessary to extend or otherwise modify | |||
| the format described in this document. | the format described in this document. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Any modification faces the problem of interoperating properly | Any modification faces the problem of interoperating properly | |||
| with implementations of RPC-over-RDMA version 1 | with implementations of RPC-over-RDMA version 1 | |||
| that are unaware of the existence of the new format. | that are unaware of the existence of the new format. | |||
| These include implementations that that do not recognize | These include implementations that do not recognize | |||
| the exchange of CM Private Data | the exchange of CM Private Data | |||
| as well as | as well as | |||
| those that recognize only the format described in this document. | those that recognize only the format described in this document. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Given the message format described in this document, | Given the message format described in this document, | |||
| these interoperability constraints could be met by the following | these interoperability constraints could be met by the following | |||
| sorts of new message formats: | sorts of new message formats: | |||
| <list style="symbols"> | ||||
| <t> | ||||
| A format which uses a different value for the first four bytes of the format, | ||||
| as provided for in the registry described in | ||||
| <xref target="section:8701C122-F206-4F87-8FA6-62F1CD648A14"/>. | ||||
| </t> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| A format which uses the same value for the Format Identifier field | <li> | |||
| A format that uses a different value for the first four bytes of the format, | ||||
| as provided for in the registry described in | ||||
| <xref target="section_8701C122-F206-4F87-8FA6-62F1CD648A14" format="default"/>. | ||||
| </li> | ||||
| <li> | ||||
| A format that uses the same value for the Format Identifier field | ||||
| and a value other than one (1) in the Version field. | and a value other than one (1) in the Version field. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| <t> | ||||
| Although it is possible to reorganize | Although it is possible to reorganize | |||
| the last three of the eight bytes in the existing format, | the last three of the eight bytes in the existing format, | |||
| extended formats are unlikely to do so. | extended formats are unlikely to do so. | |||
| New formats would take the form of extensions | New formats would take the form of extensions | |||
| of the format described in this document with added fields | of the format described in this document with added fields | |||
| starting at byte eight of the format | starting at byte eight of the format | |||
| or changes to the definition of bits in the Reserved field. | or changes to the definition of bits in the Reserved field. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="section_19F962AD-CDE5-4216-BE3A-44BD238458EC" numbered="tru | ||||
| <section | e" toc="default"> | |||
| title="Security Considerations" | <name>Security Considerations</name> | |||
| anchor="section:19F962AD-CDE5-4216-BE3A-44BD238458EC"> | <t> | |||
| <t> | ||||
| The reader is directed to the Security Considerations section of | The reader is directed to the Security Considerations section of | |||
| <xref target="RFC8166"/> | <xref target="RFC8166" format="default"/> | |||
| for background and further discussion. | for background and further discussion. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The RPC-over-RDMA version 1 protocol framework depends | The RPC-over-RDMA version 1 protocol framework depends | |||
| on the semantics of the Reliable Connected (RC) queue pair (QP) | on the semantics of the Reliable Connected (RC) queue pair (QP) | |||
| type, as defined in Section 9.7.7 of | type, as defined in | |||
| <xref target="IBA"/>. | Section 9.7.7 of <xref target="IBA"/>. | |||
| The integrity of CM Private Data | The integrity of CM Private Data | |||
| and | and | |||
| the authenticity of its source | the authenticity of its source | |||
| are ensured by the exclusive use of RC queue pairs. | are ensured by the exclusive use of RC QPs. | |||
| Any attempt to interfere with or hijack data in transit | Any attempt to interfere with or hijack data in transit | |||
| on an RC connection | on an RC connection | |||
| results in the RDMA provider terminating the connection. | results in the RDMA provider terminating the connection. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The Security Considerations section of | The Security Considerations section of | |||
| <xref target="RFC5042"/> | <xref target="RFC5042" format="default"/> | |||
| refers the reader to further relevant discussion | refers the reader to further relevant discussion | |||
| of generic RDMA transport security. | of generic RDMA transport security. | |||
| That document recommends IPsec as | That document recommends IPsec as | |||
| the default transport layer security solution. | the default transport-layer security solution. | |||
| When deployed with iWARP, IPsec establishes a protected channel | When deployed with the Remote Direct Memory Access Protocol (RDMAP) <xref | |||
| before any iWARP operations are exchanged, | target="RFC5040"/>, DDP <xref target="RFC5041"/>, and MPA <xref | |||
| thus it protects the exchange of Private Data | target="RFC5044"/>, IPsec establishes a protected channel before any | |||
| that occurs as each QP is established. | operations are exchanged; thus, it protects the exchange of Private Data. | |||
| However, IPsec is not available for InfiniBand or RoCE deployments. | However, IPsec is not available for InfiniBand or RDMA over Converged Ethernet ( | |||
| RoCE) deployments. | ||||
| Those fabrics rely on | Those fabrics rely on | |||
| physical security | physical security | |||
| and | and | |||
| cyclic redundancy checks | cyclic redundancy checks | |||
| to protect network traffic. | to protect network traffic. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Exchanging the information | Exchanging the information | |||
| contained in the Private Message format defined in this document | contained in the message format defined in this document | |||
| does not expose upper-layer payloads to an attacker. | does not expose upper-layer payloads to an attacker. | |||
| Furthermore, the behavior changes that occur | Furthermore, the behavior changes that occur | |||
| as a result of processing the CM Private Data | as a result of exchanging the Private Data | |||
| format described in the current document | described in the current document | |||
| do not introduce any new risk of exposure | do not introduce any new risk of exposure | |||
| of upper-layer payload data. | of upper-layer payload data. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Improperly setting one of the fields in a version 1 | Improperly setting one of the fields in version 1 | |||
| Private Message can result in an increased risk of disconnection | Private Data can result in an increased risk of disconnection | |||
| (i.e., self-imposed Denial of Service). | (i.e., self-imposed Denial of Service). | |||
| A similar risk can arise | A similar risk can arise | |||
| if non-RPC-over-RDMA CM Private Data | if non-RPC-over-RDMA CM Private Data | |||
| inadvertently contains the Format Identifier that | inadvertently contains the Format Identifier that | |||
| identifies this protocol's data structure. | identifies this protocol's data structure. | |||
| Additional checking of incoming Private Data, | Additional checking of incoming Private Data, | |||
| as described in | as described in | |||
| <xref target="section:0BD80E15-13FF-4210-A1D8-E0AE531821A4"/>, | <xref target="section_0BD80E15-13FF-4210-A1D8-E0AE531821A4" format="default"/>, | |||
| can help reduce this risk. | can help reduce this risk. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| In addition to describing the structure of a new format version, | In addition to describing the structure of a new format version, | |||
| any document that extends the Private Data format described | any document that extends the Private Data format described | |||
| in the current document must discuss security considerations | in the current document must discuss security considerations | |||
| of new data items exchanged between connection peers. | of new data items exchanged between connection peers. | |||
| Such documents should also explore the risks | Such documents should also explore the risks | |||
| of erroneously identifying non-RPC-over-RDMA CM Private Data | of erroneously identifying non-RPC-over-RDMA CM Private Data | |||
| as the new format. | as the new format. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="section_8701C122-F206-4F87-8FA6-62F1CD648A14" numbered="tru | ||||
| <section | e" toc="default"> | |||
| title="IANA Considerations" | <name>IANA Considerations</name> | |||
| anchor="section:8701C122-F206-4F87-8FA6-62F1CD648A14"> | <t> | |||
| <t> | IANA has created the "RDMA-CM Private Data Identifiers" subregistry within the | |||
| In accordance with | "Remote Direct Data Placement" protocol category group. | |||
| <xref target="RFC8126"/>, | This is a subregistry of 32-bit numbers that identify | |||
| the author requests that IANA create a new registry in the | ||||
| "Remote Direct Data Placement" | ||||
| Protocol Category Group. | ||||
| The new registry is to be called the | ||||
| "RDMA-CM Private Data Identifier Registry". | ||||
| This is a registry of 32-bit numbers that identify | ||||
| the upper-layer protocol associated with data that appears in | the upper-layer protocol associated with data that appears in | |||
| the application-specific RDMA-CM Private Data area. | the application-specific RDMA-CM Private Data area. | |||
| The fields in this registry include: | The fields in this subregistry include the following: | |||
| Format Identifier, | Format Identifier, | |||
| Format Length (in octets), | Length (format length, in octets), | |||
| Description, | Description, | |||
| and | and | |||
| Reference. | Reference. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The initial contents of this registry are a single entry: | The initial contents of this registry are a single entry: | |||
| </t> | </t> | |||
| <texttable | <table align="left" anchor="table_336556D8-B52A-476E-8E9E-FDF4A4C7ED66"> | |||
| align="left" | <name>New "RDMA-CM Private Data Identifiers" Registry</name> | |||
| style="full" | <thead> | |||
| title="RDMA-CM Private Data Identifier Registry" | <tr> | |||
| anchor="table:336556D8-B52A-476E-8E9E-FDF4A4C7ED66"> | <th align="left">Format Identifier</th> | |||
| <ttcol align="left">Format Identifier</ttcol> | <th align="left">Length</th> | |||
| <ttcol align="left">Length</ttcol> | <th align="left">Description</th> | |||
| <ttcol align="left">Description</ttcol> | <th align="left">Reference</th> | |||
| <ttcol align="left">Reference</ttcol> | </tr> | |||
| <c>0xf6ab0e18</c> | </thead> | |||
| <c>8</c> | <tbody> | |||
| <c>RPC-over-RDMA version 1 CM Private Data</c> | <tr> | |||
| <c>[RFC-TBD]</c> | <td align="left">0xf6ab0e18</td> | |||
| </texttable> | <td align="left">8</td> | |||
| <td align="left">RPC-over-RDMA version 1 CM Private Data</td> | ||||
| <!-- RFC Editor: | <td align="left">RFC 8797</td> | |||
| Please replace RFC-TBD with the RFC number assigned to this document | </tr> | |||
| </tbody> | ||||
| </table> | ||||
| <t> | <t> | |||
| IANA is to assign subsequent new entries in this registry using | IANA is to assign subsequent new entries in this registry using | |||
| the Specification Required policy as defined in Section 4.6 of | the Specification Required policy as defined in <xref target="RFC8126" sectionFo | |||
| <xref target="RFC8126"/>. | rmat="of" section="4.6"/>. | |||
| </t> | </t> | |||
| <section anchor="section_DB1C2628-A2D2-4EE7-8CD6-592F832C8C86" numbered="t | ||||
| <section | rue" toc="default"> | |||
| title="Guidance for Designated Experts" | <name>Guidance for Designated Experts</name> | |||
| anchor="section:DB1C2628-A2D2-4EE7-8CD6-592F832C8C86"> | <t> | |||
| <t> | ||||
| The Designated Expert (DE), appointed by the IESG, | The Designated Expert (DE), appointed by the IESG, | |||
| should ascertain the existence of suitable documentation that | should ascertain the existence of suitable documentation that | |||
| defines the semantics and format of the private data, | defines the semantics and format of the Private Data, | |||
| and verify that the document is permanently and publicly available. | and verify that the document is permanently and publicly available. | |||
| Documentation produced outside the IETF must not conflict | Documentation produced outside the IETF must not conflict | |||
| with work that is active or already published within the IETF. | with work that is active or already published within the IETF. | |||
| The new Reference field should contain | The new Reference field should contain | |||
| a reference to that documentation. | a reference to that documentation. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The Description field should contain the name of the | The Description field should contain the name of the | |||
| upper-layer protocol | upper-layer protocol | |||
| that generates and uses the private data. | that generates and uses the Private Data. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The DE should assign a new Format Identifier so that | The DE should assign a new Format Identifier so that | |||
| it does not conflict with existing entries in this registry, | it does not conflict with existing entries in this registry | |||
| and so that | and so that | |||
| it is not likely to be mistaken | it is not likely to be mistaken | |||
| as part of the payload of other registered formats. | as part of the payload of other registered formats. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The DE shall post the request to the nfsv4 WG mailing list | The DE shall post the request to the NFSV4 Working Group mailing list | |||
| (or a successor to that list, if such a list exists), | (or a successor to that list, if such a list exists) | |||
| for comment and review. | for comment and review. | |||
| The DE shall approve or deny the request and publish notice | The DE shall approve or deny the request and publish notice | |||
| of the decision within 30 days. | of the decision within 30 days. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | </middle> | |||
| <back> | ||||
| </middle> | <references> | |||
| <name>References</name> | ||||
| <back> | <references> | |||
| <name>Normative References</name> | ||||
| <references title="Normative References"> | <reference anchor="IBA" target="https://www.infinibandta.org/"> | |||
| <front> | ||||
| <reference | <title>InfiniBand Architecture Specification Volume 1</title> | |||
| anchor="IBA"> | <seriesInfo name="Release" value="1.3"/> | |||
| <front> | <author> | |||
| <title>InfiniBand Architecture Specification Volume 1</title> | <organization>InfiniBand Trade Association</organization> | |||
| <author> | </author> | |||
| <organization>InfiniBand Trade Association</organization> | <date month="March" year="2015"/> | |||
| </author> | </front> | |||
| <date month="March" year="2015"/> | </reference> | |||
| </front> | ||||
| <seriesInfo name="Release" value="1.3"/> | ||||
| <annotation> | ||||
| Available from https://www.infinibandta.org/ | ||||
| </annotation> | ||||
| </reference> | ||||
| <?rfc include="reference.RFC.2119.xml"?> | ||||
| <?rfc include="reference.RFC.4506.xml"?> | ||||
| <?rfc include="reference.RFC.5040.xml"?> | ||||
| <?rfc include="reference.RFC.5042.xml"?> | ||||
| <?rfc include="reference.RFC.8126.xml"?> | ||||
| <?rfc include="reference.RFC.8166.xml"?> | ||||
| <?rfc include="reference.RFC.8174.xml"?> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <?rfc include="reference.RFC.1813.xml"?> | ||||
| <?rfc include="reference.RFC.5044.xml"?> | ||||
| <?rfc include="reference.RFC.5531.xml"?> | ||||
| <?rfc include="reference.RFC.5666.xml"?> | ||||
| <?rfc include="reference.RFC.6581.xml"?> | ||||
| <?rfc include="reference.RFC.7530.xml"?> | ||||
| <?rfc include="reference.RFC.7861.xml"?> | ||||
| </references> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4506. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5040. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5042. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8166. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | ||||
| xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1813. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5041. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5044. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5531. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5666. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6581. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7530. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7861. | ||||
| xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <section | <section anchor="section_3910182B-831B-4CE3-9A51-B23F0C26A43B" numbered="fal | |||
| title="Acknowledgments" | se" toc="default"> | |||
| anchor="section:3910182B-831B-4CE3-9A51-B23F0C26A43B" | <name>Acknowledgments</name> | |||
| numbered="no"> | <t> | |||
| <t> | ||||
| Thanks to | Thanks to | |||
| Christoph Hellwig | <contact fullname="Christoph Hellwig"/> | |||
| and | and | |||
| Devesh Sharma | <contact fullname="Devesh Sharma"/> | |||
| for suggesting this approach, | for suggesting this approach, | |||
| and to | and to | |||
| Tom Talpey | <contact fullname="Tom Talpey"/> | |||
| and | and | |||
| Dave Noveck | <contact fullname="David Noveck"/> | |||
| for their expert comments and review. | for their expert comments and review. | |||
| The author also wishes to thank | The author also wishes to thank | |||
| Bill Baker | <contact fullname="Bill Baker"/> | |||
| and | and | |||
| Greg Marsden | <contact fullname="Greg Marsden"/> | |||
| for their support of this work. | for their support of this work. | |||
| Also, thanks to expert reviewers | Also, thanks to expert reviewers | |||
| Sean Hefty | <contact fullname="Sean Hefty"/> | |||
| and | and | |||
| Dave Minturn. | <contact fullname="Dave Minturn"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Special thanks go to | Special thanks go to | |||
| document shepherd | document shepherd | |||
| Brian Pawlowski, | <contact fullname="Brian Pawlowski"/>, | |||
| Transport Area Director | Transport Area Director | |||
| Magnus Westerlund, | <contact fullname="Magnus Westerlund"/>, | |||
| NFSV4 Working Group Chairs | NFSV4 Working Group Chairs | |||
| David Noveck | <contact fullname="David Noveck"/> | |||
| and | and | |||
| Spencer Shepler, | <contact fullname="Spencer Shepler"/>, | |||
| and | and | |||
| NFSV4 Working Group Secretary Thomas Haynes. | NFSV4 Working Group Secretary <contact fullname="Thomas Haynes"/>. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </back> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 146 change blocks. | ||||
| 450 lines changed or deleted | 425 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||