| < draft-ietf-rddp-ddp-06.txt | draft-ietf-rddp-ddp-07.txt > | |||
|---|---|---|---|---|
| Remote Direct Data Placement Hemal Shah | Remote Direct Data Placement Hemal Shah | |||
| Working Group Broadcom Corporation | Working Group Broadcom Corporation | |||
| INTERNET-DRAFT James Pinkerton | INTERNET-DRAFT James Pinkerton | |||
| Category: Standards Track Microsoft Corporation | Category: Standards Track Microsoft Corporation | |||
| draft-ietf-rddp-ddp-06.txt Renato Recio | draft-ietf-rddp-ddp-07.txt Renato Recio | |||
| IBM Corporation | IBM Corporation | |||
| Paul Culley | Paul Culley | |||
| Hewlett-Packard Company | Hewlett-Packard Company | |||
| Expires: January, 2007 June, 2006 | Expires: March, 2007 September, 2006 | |||
| Direct Data Placement over Reliable Transports | Direct Data Placement over Reliable Transports | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| skipping to change at line 47 ¶ | skipping to change at line 46 ¶ | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| Abstract | Abstract | |||
| The Direct Data Placement protocol provides information to Place the | The Direct Data Placement protocol provides information to Place the | |||
| incoming data directly into an upper layer protocol's receive buffer | incoming data directly into an upper layer protocol's receive buffer | |||
| without intermediate buffers. This removes excess CPU and memory | without intermediate buffers. This removes excess CPU and memory | |||
| utilization associated with transferring data through the | utilization associated with transferring data through the | |||
| intermediate buffers. | intermediate buffers. | |||
| Shah, et. al. Expires January 2007 1 | Shah, et. al. Expires March 2007 1 | |||
| Table of Contents | Table of Contents | |||
| Status of this Memo...............................................1 | Status of this Memo ....................................... 1 | |||
| Abstract..........................................................1 | Abstract................................................. 1 | |||
| 1 Introduction................................................4 | 1 Introduction......................................... 4 | |||
| 1.1 Architectural Goals.........................................4 | 1.1 Architectural Goals................................... 4 | |||
| 1.2 Protocol Overview...........................................5 | 1.2 Protocol Overview .................................... 5 | |||
| 1.3 DDP Layering................................................6 | 1.3 DDP Layering......................................... 6 | |||
| 2 Glossary....................................................9 | 2 Glossary............................................ 9 | |||
| 2.1 General.....................................................9 | 2.1 General............................................. 9 | |||
| 2.2 LLP........................................................10 | 2.2 LLP.................................................10 | |||
| 2.3 Direct Data Placement (DDP)................................11 | 2.3 Direct Data Placement (DDP)............................11 | |||
| 3 Reliable Delivery LLP Requirements.........................13 | 3 Reliable Delivery LLP Requirements......................13 | |||
| 4 Header Format..............................................15 | 4 Header Format........................................15 | |||
| 4.1 DDP Control Field..........................................15 | 4.1 DDP Control Field ....................................15 | |||
| 4.2 DDP Tagged Buffer Model Header.............................16 | 4.2 DDP Tagged Buffer Model Header.........................16 | |||
| 4.3 DDP Untagged Buffer Model Header...........................17 | 4.3 DDP Untagged Buffer Model Header .......................17 | |||
| 4.4 DDP Segment Format.........................................18 | 4.4 DDP Segment Format....................................18 | |||
| 5 Data Transfer..............................................19 | 5 Data Transfer........................................19 | |||
| 5.1 DDP Tagged or Untagged Buffer Models.......................19 | 5.1 DDP Tagged or Untagged Buffer Models....................19 | |||
| 5.1.1 Tagged Buffer Model.......................................19 | 5.1.1 Tagged Buffer Model.................................19 | |||
| 5.1.2 Untagged Buffer Model.....................................19 | 5.1.2 Untagged Buffer Model................................19 | |||
| 5.2 Segmentation and Reassembly of a DDP Message...............19 | 5.2 Segmentation and Reassembly of a DDP Message.............19 | |||
| 5.3 Ordering Among DDP Messages................................21 | 5.3 Ordering Among DDP Messages............................21 | |||
| 5.4 DDP Message Completion & Delivery..........................22 | 5.4 DDP Message Completion & Delivery.......................22 | |||
| 6 DDP Stream Setup & Teardown................................23 | 6 DDP Stream Setup & Teardown............................23 | |||
| 6.1 DDP Stream Setup...........................................23 | 6.1 DDP Stream Setup.....................................23 | |||
| 6.2 DDP Stream Teardown........................................23 | 6.2 DDP Stream Teardown...................................23 | |||
| 6.2.1 DDP Graceful Teardown.....................................23 | 6.2.1 DDP Graceful Teardown................................23 | |||
| 6.2.2 DDP Abortive Teardown.....................................24 | 6.2.2 DDP Abortive Teardown................................24 | |||
| 7 Error Semantics............................................25 | 7 Error Semantics......................................25 | |||
| 7.1 Errors detected at the Data Sink...........................25 | 7.1 Errors detected at the Data Sink .......................25 | |||
| 7.2 DDP Error Numbers..........................................26 | 7.2 DDP Error Numbers ....................................26 | |||
| 8 Security Considerations....................................27 | 8 Security Considerations...............................27 | |||
| 8.1 Protocol-specific Security Considerations..................27 | 8.1 Protocol-specific Security Considerations................27 | |||
| 8.2 Association of an STag and a DDP Stream....................27 | 8.2 Association of an STag and a DDP Stream.................27 | |||
| 8.3 Security Requirements......................................28 | 8.3 Security Requirements.................................28 | |||
| 8.3.1 RNIC Requirements.........................................29 | 8.3.1 RNIC Requirements...................................29 | |||
| 8.3.2 Privileged Resources Manager Requirement..................29 | 8.3.2 Privileged Resources Manager Requirement...............30 | |||
| 8.4 Security Services for DDP..................................30 | 8.4 Security Services for DDP..............................30 | |||
| 8.4.1 Available Security Services...............................30 | 8.4.1 Available Security Services..........................30 | |||
| 8.4.2 Requirements for IPsec Services for DDP...................31 | 8.4.2 Requirements for IPsec Services for DDP................31 | |||
| 9 IANA Considerations........................................33 | 9 IANA Considerations...................................33 | |||
| 10 References.................................................34 | 10 References...........................................34 | |||
| 10.1 Normative References......................................34 | 10.1 Normative References ................................34 | |||
| 10.2 Informative References....................................34 | 10.2 Informative References...............................34 | |||
| 11 Appendix...................................................36 | 11 Appendix............................................36 | |||
| 11.1 Receive Window sizing.....................................36 | 11.1 Receive Window sizing................................36 | |||
| 12 Authors' Addresses.........................................37 | 12 Authors' Addresses....................................37 | |||
| 13 Contributors...............................................38 | 13 Contributors.........................................38 | |||
| 14 Intellectual Property Statement............................41 | 14 Intellectual Property Statement........................41 | |||
| 15 Copyright Notice...........................................42 | 15 Copyright Notice.....................................42 | |||
| Shah, et. al. Expires January 2007 2 | Shah, et. al. Expires March 2007 2 | |||
| Table of Figures | Table of Figures | |||
| Figure 1 DDP Layering.............................................7 | Figure 1 DDP Layering...................................... 7 | |||
| Figure 2 MPA, DDP, and RDMAP Header Alignment.....................8 | Figure 2 MPA, DDP, and RDMAP Header Alignment................. 8 | |||
| Figure 3 DDP Control Field.......................................15 | Figure 3 DDP Control Field.................................15 | |||
| Figure 4 Tagged Buffer DDP Header................................16 | Figure 4 Tagged Buffer DDP Header...........................16 | |||
| Figure 5 Untagged Buffer DDP Header..............................17 | Figure 5 Untagged Buffer DDP Header .........................17 | |||
| Figure 6 DDP Segment Format......................................18 | Figure 6 DDP Segment Format ................................18 | |||
| Shah, et. al. Expires January 2007 3 | Shah, et. al. Expires March 2007 3 | |||
| 1 Introduction | 1 Introduction | |||
| Direct Data Placement Protocol (DDP) enables an Upper Layer Protocol | Direct Data Placement Protocol (DDP) enables an Upper Layer Protocol | |||
| (ULP) to send data to a Data Sink without requiring the Data Sink to | (ULP) to send data to a Data Sink without requiring the Data Sink to | |||
| Place the data in an intermediate buffer - thus when the data | Place the data in an intermediate buffer - thus when the data | |||
| arrives at the Data Sink, the network interface can Place the data | arrives at the Data Sink, the network interface can Place the data | |||
| directly into the ULP's buffer. This can enable the Data Sink to | directly into the ULP's buffer. This can enable the Data Sink to | |||
| consume substantially less memory bandwidth than a buffered model | consume substantially less memory bandwidth than a buffered model | |||
| because the Data Sink is not required to move the data from the | because the Data Sink is not required to move the data from the | |||
| intermediate buffer to the final destination. Additionally, this can | intermediate buffer to the final destination. Additionally, this can | |||
| skipping to change at line 141 ¶ | skipping to change at line 140 ¶ | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119. | document are to be interpreted as described in RFC 2119. | |||
| 1.1 Architectural Goals | 1.1 Architectural Goals | |||
| DDP has been designed with the following high-level architectural | DDP has been designed with the following high-level architectural | |||
| goals: | goals: | |||
| * Provide a buffer model that enables the Local Peer to Advertise | * Provide a buffer model that enables the Local Peer to Advertise | |||
| a named buffer (i.e. a Tag for a buffer) to the Remote Peer, | a named buffer (i.e., a Tag for a buffer) to the Remote Peer, | |||
| such that across the network the Remote Peer can Place data | such that across the network the Remote Peer can Place data | |||
| into the buffer at Remote Peer specified locations. This is | into the buffer at Remote Peer specified locations. This is | |||
| referred to as the Tagged Buffer Model. | referred to as the Tagged Buffer Model. | |||
| * Provide a second receive buffer model which preserves ULP | * Provide a second receive buffer model which preserves ULP | |||
| message boundaries from the Remote Peer and keeps the Local | message boundaries from the Remote Peer and keeps the Local | |||
| Peer's buffers anonymous (i.e. Untagged). This is referred to | Peer's buffers anonymous (i.e., Untagged). This is referred to | |||
| as the Untagged Buffer Model. | as the Untagged Buffer Model. | |||
| * Provide reliable, in-order Delivery semantics for both Tagged | * Provide reliable, in-order Delivery semantics for both Tagged | |||
| and Untagged Buffer Models. | and Untagged Buffer Models. | |||
| * Provide segmentation and reassembly of ULP messages. | * Provide segmentation and reassembly of ULP messages. | |||
| * Enable the ULP buffer to be used as a reassembly buffer, | * Enable the ULP buffer to be used as a reassembly buffer, | |||
| without a need for a copy, even if incoming DDP Segments arrive | without a need for a copy, even if incoming DDP Segments arrive | |||
| out of order. This requires the protocol to separate Data | out of order. This requires the protocol to separate Data | |||
| Placement of ULP Payload contained in an incoming DDP Segment | Placement of ULP Payload contained in an incoming DDP Segment | |||
| from Data Delivery of completed ULP Messages. | from Data Delivery of completed ULP Messages. | |||
| * If the LLP supports multiple LLP streams within a LLP | * If the Lower Layer Protocol (LLP) supports multiple LLP Streams | |||
| Connection, provide the above capabilities independently on | within a LLP Connection, provide the above capabilities | |||
| Shah, et. al. Expires January 2007 4 | Shah, et. al. Expires March 2007 4 | |||
| each LLP stream and enable the capability to be exported on a | independently on each LLP Stream and enable the capability to | |||
| per LLP stream basis to the ULP. | be exported on a per LLP Stream basis to the ULP. | |||
| 1.2 Protocol Overview | 1.2 Protocol Overview | |||
| DDP supports two basic data transfer models - a Tagged Buffer data | DDP supports two basic data transfer models - a Tagged Buffer data | |||
| transfer model and an Untagged Buffer data transfer model. | transfer model and an Untagged Buffer data transfer model. | |||
| The Tagged Buffer data transfer model requires the Data Sink to send | The Tagged Buffer data transfer model requires the Data Sink to send | |||
| the Data Source an identifier for the ULP buffer, referred to as a | the Data Source an identifier for the ULP buffer, referred to as a | |||
| Steering Tag (STag). The STag is transferred to the Data Source | Steering Tag (STag). The STag is transferred to the Data Source | |||
| using a ULP defined method. Once the Data Source ULP has an STag for | using a ULP defined method. Once the Data Source ULP has an STag for | |||
| skipping to change at line 220 ¶ | skipping to change at line 219 ¶ | |||
| * For the Tagged Buffer Model, a DDP Message can start at an | * For the Tagged Buffer Model, a DDP Message can start at an | |||
| arbitrary offset within the Tagged Buffer. For the Untagged | arbitrary offset within the Tagged Buffer. For the Untagged | |||
| Buffer Model, a DDP Message can only start at offset 0. | Buffer Model, a DDP Message can only start at offset 0. | |||
| * The Tagged Buffer Model allows multiple DDP Messages targeted | * The Tagged Buffer Model allows multiple DDP Messages targeted | |||
| to a Tagged Buffer with a single ULP buffer Advertisement. The | to a Tagged Buffer with a single ULP buffer Advertisement. The | |||
| Untagged Buffer Model requires associating a receive ULP buffer | Untagged Buffer Model requires associating a receive ULP buffer | |||
| for each DDP Message targeted to an Untagged Buffer. | for each DDP Message targeted to an Untagged Buffer. | |||
| Shah, et. al. Expires January 2007 5 | Shah, et. al. Expires March 2007 5 | |||
| Either data transfer model Places a ULP Message into a DDP Message. | Either data transfer model Places a ULP Message into a DDP Message. | |||
| Each DDP Message is then sliced into DDP Segments that are intended | Each DDP Message is then sliced into DDP Segments that are intended | |||
| to fit within a lower-layer-protocol's (LLP) Maximum Upper Layer | to fit within a lower-layer-protocol's (LLP) Maximum Upper Layer | |||
| Protocol Data Unit (MULPDU). Thus the ULP can post arbitrary size | Protocol Data Unit (MULPDU). Thus the ULP can post arbitrary size | |||
| ULP Messages, containing up to 2^32 - 1 octets of ULP Payload, and | ULP Messages, containing up to 2^32 - 1 octets of ULP Payload, and | |||
| DDP slices the ULP message into DDP Segments which are reassembled | DDP slices the ULP message into DDP Segments which are reassembled | |||
| transparently at the Data Sink. | transparently at the Data Sink. | |||
| DDP provides in-order Delivery for the ULP. However, DDP | DDP provides in-order Delivery for the ULP. However, DDP | |||
| differentiates between Data Delivery and Data Placement. DDP | differentiates between Data Delivery and Data Placement. DDP | |||
| skipping to change at line 249 ¶ | skipping to change at line 248 ¶ | |||
| A DDP Message's payload is Delivered to the ULP when: | A DDP Message's payload is Delivered to the ULP when: | |||
| * all DDP Segments of a DDP Message have been completely received | * all DDP Segments of a DDP Message have been completely received | |||
| and the payload of the DDP Message has been Placed into the | and the payload of the DDP Message has been Placed into the | |||
| associated ULP Buffer, | associated ULP Buffer, | |||
| * all prior DDP Messages have been Placed, and | * all prior DDP Messages have been Placed, and | |||
| * all prior DDP Message Deliveries have been performed. | * all prior DDP Message Deliveries have been performed. | |||
| The LLP under DDP may support a single LLP stream of data per | The LLP under DDP may support a single LLP Stream of data per | |||
| connection (e.g. TCP) or multiple LLP streams of data per connection | connection (e.g., TCP [TCP]) or multiple LLP Streams of data per | |||
| (e.g. SCTP). But in either case, DDP is specified such that each DDP | connection (e.g., SCTP [SCTP]). But in either case, DDP is specified | |||
| Stream is independent and maps to a single LLP stream. Within a | such that each DDP Stream is independent and maps to a single LLP | |||
| specific DDP Stream, the LLP Stream is required to provide in-order, | Stream. Within a specific DDP Stream, the LLP Stream is required to | |||
| reliable Delivery. Note that DDP has no ordering guarantees between | provide in-order, reliable Delivery. Note that DDP has no ordering | |||
| DDP Streams. | guarantees between DDP Streams. | |||
| A DDP protocol could potentially run over reliable Delivery LLPs or | A DDP protocol could potentially run over reliable Delivery LLPs or | |||
| unreliable Delivery LLPs. This specification requires reliable, in | unreliable Delivery LLPs. This specification requires reliable, in | |||
| order Delivery LLPs. | order Delivery LLPs. | |||
| 1.3 DDP Layering | 1.3 DDP Layering | |||
| DDP is intended to be LLP independent, subject to the requirements | DDP is intended to be LLP independent, subject to the requirements | |||
| defined in section 3. However, DDP was specifically defined to be | defined in section 3. However, DDP was specifically defined to be | |||
| part of a family of protocols that were created to work well | part of a family of protocols that were created to work well | |||
| together, as shown in Figure 1 DDP Layering. For LLP protocol | together, as shown in Figure 1 DDP Layering. For LLP protocol | |||
| definitions of each LLP, see Marker PDU Aligned Framing for TCP | definitions of each LLP, see Marker PDU Aligned Framing for TCP | |||
| Specification [MPA] and Stream Control Transmission Protocol (SCTP) | Specification [MPA] and Stream Control Transmission Protocol (SCTP) | |||
| Direct Data Placement (DDP) Adaptation [SCTPDDP]. | Direct Data Placement (DDP) Adaptation [SCTPDDP]. | |||
| DDP enables direct data Placement capability for any ULP, but it has | DDP enables direct data Placement capability for any ULP, but it has | |||
| been specifically designed to work well with RDMAP (see [RDMAP]), | been specifically designed to work well with Remote Direct Memory | |||
| and is part of the iWARP protocol suite. | ||||
| Shah, et. al. Expires March 2007 6 | ||||
| Access Protocol (RDMAP) (see [RDMAP]), and is part of the iWARP | ||||
| protocol suite. | ||||
| Shah, et. al. Expires January 2007 6 | ||||
| +-------------------+ | +-------------------+ | |||
| | | | | | | |||
| | RDMA ULP | | | RDMA ULP | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | | | |||
| | ULP | RDMAP | | | ULP | RDMAP | | |||
| | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| skipping to change at line 299 ¶ | skipping to change at line 300 ¶ | |||
| | | | | | | | | |||
| | MPA | | | | MPA | | | |||
| | | | | | | | | |||
| | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+ SCTP | | +-+-+-+-+-+-+-+-+-+ SCTP | | |||
| | | | | | | | | |||
| | TCP | | | | TCP | | | |||
| | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1 DDP Layering | Figure 1 DDP Layering | |||
| If DDP is layered below RDMAP and on top of MPA and TCP, then the | If DDP is layered below RDMAP and on top of MPA and TCP, then the | |||
| respective headers and payload are arranged as follows (Note: For | respective headers and payload are arranged as follows (Note: For | |||
| clarity, MPA header and CRC are included but framing markers are not | clarity, MPA header and CRC are included but framing markers are not | |||
| shown.): | shown.): | |||
| Shah, et. al. Expires January 2007 7 | Shah, et. al. Expires March 2007 7 | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| // TCP Header // | // TCP Header // | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MPA Header | | | | MPA Header | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | | |||
| // DDP Header // | // DDP Header // | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| // RDMAP Header // | // RDMAP Header // | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| // // | ||||
| // RDMAP ULP Payload // | // RDMAP ULP Payload // | |||
| // // | ||||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MPA CRC | | | MPA CRC | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2 MPA, DDP, and RDMAP Header Alignment | Figure 2 MPA, DDP, and RDMAP Header Alignment | |||
| Shah, et. al. Expires January 2007 8 | Shah, et. al. Expires March 2007 8 | |||
| 2 Glossary | 2 Glossary | |||
| 2.1 General | 2.1 General | |||
| Advertisement (Advertised, Advertise, Advertisements, Advertises) - | Advertisement (Advertised, Advertise, Advertisements, Advertises) - | |||
| The act of informing a Remote Peer that a local RDMA Buffer is | The act of informing a Remote Peer that a local RDMA Buffer is | |||
| available to it. A Node makes available an RDMA Buffer for | available to it. A Node makes available an RDMA Buffer for | |||
| incoming RDMA Read or RDMA Write access by informing its | incoming RDMA Read or RDMA Write access by informing its | |||
| RDMA/DDP peer of the Tagged Buffer identifiers (STag, base | RDMA/DDP peer of the Tagged Buffer identifiers (STag, base | |||
| address, length). This advertisement of Tagged Buffer | address, length). This advertisement of Tagged Buffer | |||
| skipping to change at line 371 ¶ | skipping to change at line 374 ¶ | |||
| Source can be required to both send and receive RDMA/DDP | Source can be required to both send and receive RDMA/DDP | |||
| Messages to transfer a data payload. | Messages to transfer a data payload. | |||
| Delivery - See Data Delivery in Section 2.1. | Delivery - See Data Delivery in Section 2.1. | |||
| Delivered - See Data Delivery in Section 2.1. | Delivered - See Data Delivery in Section 2.1. | |||
| Delivers - See Data Delivery in Section 2.1. | Delivers - See Data Delivery in Section 2.1. | |||
| iWARP - A suite of wire protocols comprised of RDMAP [RDMAP], DDP | iWARP - A suite of wire protocols comprised of RDMAP [RDMAP], DDP | |||
| (this specification), and MPA [MPA]. The iWARP protocol suite | (this specification), and Marker PDU Aligned Framing for TCP | |||
| may be layered above TCP, SCTP, or other transport protocols. | (MPA) [MPA]. The iWARP protocol suite may be layered above TCP, | |||
| SCTP, or other transport protocols. | ||||
| Local Peer - The RDMA/DDP protocol implementation on the local end | Local Peer - The RDMA/DDP protocol implementation on the local end | |||
| of the connection. Used to refer to the local entity when | of the connection. Used to refer to the local entity when | |||
| describing a protocol exchange or other interaction between two | describing a protocol exchange or other interaction between two | |||
| Nodes. | Nodes. | |||
| Node - A computing device attached to one or more links of a | Node - A computing device attached to one or more links of a | |||
| network. A Node in this context does not refer to a specific | network. A Node in this context does not refer to a specific | |||
| application or protocol instantiation running on the computer. A | application or protocol instantiation running on the computer. A | |||
| Node may consist of one or more RNICs installed in a host | Node may consist of one or more RDMA Enabled Network Interface | |||
| computer. | Controllers (RNICs) installed in a host computer. | |||
| Placement - See "Data Placement" in Section 2.3 | Placement - See "Data Placement" in Section 2.3 | |||
| Shah, et. al. Expires January 2007 9 | Shah, et. al. Expires March 2007 9 | |||
| Placed - See "Data Placement" in Section 2.3 | Placed - See "Data Placement" in Section 2.3 | |||
| Places - See "Data Placement" in Section 2.3 | Places - See "Data Placement" in Section 2.3 | |||
| Remote Peer - The RDMA/DDP protocol implementation on the opposite | Remote Peer - The RDMA/DDP protocol implementation on the opposite | |||
| end of the connection. Used to refer to the remote entity when | end of the connection. Used to refer to the remote entity when | |||
| describing protocol exchanges or other interactions between two | describing protocol exchanges or other interactions between two | |||
| Nodes. | Nodes. | |||
| RNIC - RDMA Enabled Network Interface Controller. In this context, | RNIC - RDMA Enabled Network Interface Controller. In this context, | |||
| this would be a network I/O adapter or embedded controller with | this would be a network I/O adapter or embedded controller with | |||
| iWARP functionality. | iWARP functionality. | |||
| ULP - Upper Layer Protocol. The protocol layer above the protocol | ULP - Upper Layer Protocol. The protocol layer above the protocol | |||
| layer currently being referenced. The ULP for RDMA/DDP is | layer currently being referenced. The ULP for RDMA/DDP is | |||
| expected to be an OS, application, adaptation layer, or | expected to be an Operating System (OS), application, adaptation | |||
| proprietary device. The RDMA/DDP documents do not specify a ULP | layer, or proprietary device. The RDMA/DDP documents do not | |||
| - they provide a set of semantics that allow a ULP to be | specify a ULP - they provide a set of semantics that allow a ULP | |||
| designed to utilize RDMA/DDP. | to be designed to utilize RDMA/DDP. | |||
| ULP Message - The ULP data that is handed to a specific protocol | ULP Message - The ULP data that is handed to a specific protocol | |||
| layer for transmission. Data boundaries are preserved as they | layer for transmission. Data boundaries are preserved as they | |||
| are transmitted through iWARP. | are transmitted through iWARP. | |||
| ULP Payload - The ULP data that is contained within a single | ULP Payload - The ULP data that is contained within a single | |||
| protocol segment or packet (e.g. a DDP Segment). | protocol segment or packet (e.g., a DDP Segment). | |||
| 2.2 LLP | 2.2 LLP | |||
| LLP - Lower Layer Protocol. The protocol layer beneath the protocol | LLP - Lower Layer Protocol. The protocol layer beneath the protocol | |||
| layer currently being referenced. For example, for DDP the LLP | layer currently being referenced. For example, for DDP the LLP | |||
| is SCTP DDP Adaptation, MPA, or other transport protocols. For | is SCTP DDP Adaptation, MPA, or other transport protocols. For | |||
| RDMA, the LLP is DDP. | RDMA, the LLP is DDP. | |||
| LLP Connection - Corresponds to an LLP transport-level connection | LLP Connection - Corresponds to an LLP transport-level connection | |||
| between the peer LLP layers on two nodes. | between the peer LLP layers on two nodes. | |||
| LLP Stream - Corresponds to a single LLP transport-level stream | LLP Stream - Corresponds to a single LLP transport-level stream | |||
| between the peer LLP layers on two Nodes. One or more LLP | between the peer LLP layers on two Nodes. One or more LLP | |||
| Streams may map to a single transport-level LLP Connection. For | Streams may map to a single transport-level LLP Connection. For | |||
| transport protocols that support multiple streams per connection | transport protocols that support multiple streams per connection | |||
| (e.g. SCTP), a LLP Stream corresponds to one transport-level | (e.g., SCTP), a LLP Stream corresponds to one transport-level | |||
| stream. | stream. | |||
| MULPDU - Maximum Upper Layer Protocol Data Unit (ULPDU). The current | MULPDU - Maximum Upper Layer Protocol Data Unit (ULPDU). The current | |||
| maximum size of the record that is acceptable for DDP to pass to | maximum size of the record that is acceptable for DDP to pass to | |||
| the LLP for transmission. | the LLP for transmission. | |||
| ULPDU - Upper Layer Protocol Data Unit. The data record defined by | ULPDU - Upper Layer Protocol Data Unit. The data record defined by | |||
| the layer above MPA. | the layer above MPA. | |||
| Shah, et. al. Expires January 2007 10 | Shah, et. al. Expires March 2007 10 | |||
| 2.3 Direct Data Placement (DDP) | 2.3 Direct Data Placement (DDP) | |||
| Data Placement (Placement, Placed, Places) - For DDP, this term is | Data Placement (Placement, Placed, Places) - For DDP, this term is | |||
| specifically used to indicate the process of writing to a data | specifically used to indicate the process of writing to a data | |||
| buffer by a DDP implementation. DDP Segments carry Placement | buffer by a DDP implementation. DDP Segments carry Placement | |||
| information, which may be used by the receiving DDP | information, which may be used by the receiving DDP | |||
| implementation to perform Data Placement of the DDP Segment ULP | implementation to perform Data Placement of the DDP Segment ULP | |||
| Payload. See "Data Delivery" and "Direct Data Placement". | Payload. See "Data Delivery" and "Direct Data Placement". | |||
| DDP Abortive Teardown - The act of closing a DDP Stream without | DDP Abortive Teardown - The act of closing a DDP Stream without | |||
| skipping to change at line 493 ¶ | skipping to change at line 497 ¶ | |||
| within DDP Segments may be Placed directly into its final | within DDP Segments may be Placed directly into its final | |||
| destination in memory without processing of the ULP. This may | destination in memory without processing of the ULP. This may | |||
| occur even when the DDP Segments arrive out of order. Out of | occur even when the DDP Segments arrive out of order. Out of | |||
| order Placement support may require the Data Sink to implement | order Placement support may require the Data Sink to implement | |||
| the LLP and DDP as one functional block. | the LLP and DDP as one functional block. | |||
| Direct Data Placement Protocol (DDP) - Also, a wire protocol that | Direct Data Placement Protocol (DDP) - Also, a wire protocol that | |||
| supports Direct Data Placement by associating explicit memory | supports Direct Data Placement by associating explicit memory | |||
| buffer placement information with the LLP payload units. | buffer placement information with the LLP payload units. | |||
| Shah, et. al. Expires January 2007 11 | Shah, et. al. Expires March 2007 11 | |||
| Message Offset (MO) - For the DDP Untagged Buffer Model, specifies | Message Offset (MO) - For the DDP Untagged Buffer Model, specifies | |||
| the offset, in octets, from the start of a DDP Message. | the offset, in octets, from the start of a DDP Message. | |||
| Message Sequence Number (MSN) - For the DDP Untagged Buffer Model, | Message Sequence Number (MSN) - For the DDP Untagged Buffer Model, | |||
| specifies a sequence number that is increasing with each DDP | specifies a sequence number that is increasing with each DDP | |||
| Message. | Message. | |||
| Protection Domain (PD) - A Mechanism used to associate a DDP Stream | Protection Domain (PD) - A Mechanism used to associate a DDP Stream | |||
| and an STag. Under this mechanism, the use of an STag is valid | and an STag. Under this mechanism, the use of an STag is valid | |||
| on a DDP Stream if the STag has the same Protection Domain | on a DDP Stream if the STag has the same Protection Domain | |||
| skipping to change at line 543 ¶ | skipping to change at line 547 ¶ | |||
| Untagged Buffer - A buffer that is not explicitly Advertised to the | Untagged Buffer - A buffer that is not explicitly Advertised to the | |||
| Remote Peer. | Remote Peer. | |||
| Untagged Buffer Model - A DDP data transfer model used to transfer | Untagged Buffer Model - A DDP data transfer model used to transfer | |||
| Untagged Buffers from the Local Peer to the Remote Peer. | Untagged Buffers from the Local Peer to the Remote Peer. | |||
| Untagged DDP Message - A DDP Message that targets an Untagged | Untagged DDP Message - A DDP Message that targets an Untagged | |||
| Buffer. | Buffer. | |||
| Shah, et. al. Expires January 2007 12 | Shah, et. al. Expires March 2007 12 | |||
| 3 Reliable Delivery LLP Requirements | 3 Reliable Delivery LLP Requirements | |||
| Any protocol that can serve as an LLP to DDP MUST meet the following | Any protocol that can serve as an LLP to DDP MUST meet the following | |||
| requirements. | requirements. | |||
| 1. LLPs MUST expose MULPDU & MULPDU Changes. This is required so | 1. LLPs MUST expose MULPDU & MULPDU Changes. This is required so | |||
| that the DDP layer can perform segmentation aligned with the | that the DDP layer can perform segmentation aligned with the | |||
| MULPDU and can adapt as MULPDU changes come about. The corner | MULPDU and can adapt as MULPDU changes come about. The corner | |||
| case of how to handle outstanding requests during a MULPDU | case of how to handle outstanding requests during a MULPDU | |||
| change is covered by the requirements below. | change is covered by the requirements below. | |||
| skipping to change at line 579 ¶ | skipping to change at line 583 ¶ | |||
| 4. The LLP MUST preserve DDP Segment and Message boundaries at the | 4. The LLP MUST preserve DDP Segment and Message boundaries at the | |||
| Data Sink. | Data Sink. | |||
| 5. The LLP MAY provide the incoming segments out of order for | 5. The LLP MAY provide the incoming segments out of order for | |||
| Placement, but if it does, it MUST also provide information that | Placement, but if it does, it MUST also provide information that | |||
| specifies what the sender specified order was. | specifies what the sender specified order was. | |||
| 6. LLP MUST provide a strong digest (at least equivalent to CRC32- | 6. LLP MUST provide a strong digest (at least equivalent to CRC32- | |||
| C) to cover at least the DDP Segment. It is believed that some | C) to cover at least the DDP Segment. It is believed that some | |||
| of the existing data integrity digests are not sufficient and | of the existing data integrity digests are not sufficient and | |||
| that direct memory transfer semantics require a stronger digest | that direct memory transfer semantics requires a stronger digest | |||
| than, for example, a simple checksum. | than, for example, a simple checksum. | |||
| 7. On receive, the LLP MUST provide the length of the DDP Segment | 7. On receive, the LLP MUST provide the length of the DDP Segment | |||
| received. This ensures that DDP does not have to carry a length | received. This ensures that DDP does not have to carry a length | |||
| field in its header. | field in its header. | |||
| 8. If an LLP does not support teardown of a LLP stream independent | 8. If an LLP does not support teardown of a LLP Stream independent | |||
| of other LLP streams and a DDP error occurs on a specific DDP | of other LLP Streams and a DDP error occurs on a specific DDP | |||
| Stream, then the LLP MUST label the associated LLP stream as an | Stream, then the LLP MUST label the associated LLP Stream as an | |||
| erroneous LLP stream and MUST NOT allow any further data | erroneous LLP Stream and MUST NOT allow any further data | |||
| transfer on that LLP stream after DDP requests the associated | transfer on that LLP Stream after DDP requests the associated | |||
| DDP Stream to be torn down. | DDP Stream to be torn down. | |||
| 9. For a specific LLP Stream, the LLP MUST provide a mechanism to | 9. For a specific LLP Stream, the LLP MUST provide a mechanism to | |||
| indicate that the LLP Stream has been gracefully torn down. For | indicate that the LLP Stream has been gracefully torn down. For | |||
| a specific LLP Connection, the LLP MUST provide a mechanism to | a specific LLP Connection, the LLP MUST provide a mechanism to | |||
| indicate that the LLP Connection has been gracefully torn down. | indicate that the LLP Connection has been gracefully torn down. | |||
| Shah, et. al. Expires January 2007 13 | Shah, et. al. Expires March 2007 13 | |||
| Note that if the LLP does not allow an LLP Stream to be torn | Note that if the LLP does not allow an LLP Stream to be torn | |||
| down independently of the LLP Connection, the above requirements | down independently of the LLP Connection, the above requirements | |||
| allow the LLP to notify DDP of both events at the same time. | allow the LLP to notify DDP of both events at the same time. | |||
| 10. For a specific LLP Connection, when all LLP Streams are either | 10. For a specific LLP Connection, when all LLP Streams are either | |||
| gracefully torn down or are labeled as erroneous LLP streams, | gracefully torn down or are labeled as erroneous LLP Streams, | |||
| the LLP Connection MUST be torn down. | the LLP Connection MUST be torn down. | |||
| 11. The LLP MUST NOT pass a duplicate DDP Segment to the DDP Layer | 11. The LLP MUST NOT pass a duplicate DDP Segment to the DDP Layer | |||
| after it has passed all the previous DDP Segments to the DDP | after it has passed all the previous DDP Segments to the DDP | |||
| Layer and the associated ordering information for the previous | Layer and the associated ordering information for the previous | |||
| DDP Segments and the current DDP Segment. | DDP Segments and the current DDP Segment. | |||
| Shah, et. al. Expires January 2007 14 | Shah, et. al. Expires March 2007 14 | |||
| 4 Header Format | 4 Header Format | |||
| DDP has two different header formats: one for Data Placement into | DDP has two different header formats: one for Data Placement into | |||
| Tagged Buffers, and the other for Data Placement into Untagged | Tagged Buffers, and the other for Data Placement into Untagged | |||
| Buffers. See Section 5.1 for a description of the two models. | Buffers. See Section 5.1 for a description of the two models. | |||
| 4.1 DDP Control Field | 4.1 DDP Control Field | |||
| The first 8 bits of the DDP Header carry a DDP Control Field that is | The first 8 bits of the DDP Header carry a DDP Control Field that is | |||
| common between the two formats. It is shown below in Figure 3, | common between the two formats. It is shown below in Figure 3, | |||
| skipping to change at line 665 ¶ | skipping to change at line 669 ¶ | |||
| Delivered to the ULP after: | Delivered to the ULP after: | |||
| . Placement of all DDP Segments of this DDP Message and all | . Placement of all DDP Segments of this DDP Message and all | |||
| prior DDP Messages, and | prior DDP Messages, and | |||
| . Delivery of each prior DDP Message. | . Delivery of each prior DDP Message. | |||
| If the Last flag is set to zero, the DDP Segment is an | If the Last flag is set to zero, the DDP Segment is an | |||
| intermediate DDP Segment. | intermediate DDP Segment. | |||
| Shah, et. al. Expires January 2007 15 | Shah, et. al. Expires March 2007 15 | |||
| Rsvd - Reserved: 4 bits. | Rsvd - Reserved: 4 bits. | |||
| Reserved for future use by the DDP protocol. This field MUST be | Reserved for future use by the DDP protocol. This field MUST be | |||
| set to zero on transmit, and not checked on receive. | set to zero on transmit, and not checked on receive. | |||
| DV - Direct Data Placement Protocol Version: 2 bits. | DV - Direct Data Placement Protocol Version: 2 bits. | |||
| The version of the DDP Protocol in use. This field MUST be set | The version of the DDP Protocol in use. This field MUST be set | |||
| to one to indicate the version of the specification described | to one to indicate the version of the specification described | |||
| in this document. The value of DV MUST be the same for all the | in this document. The value of DV MUST be the same for all the | |||
| skipping to change at line 720 ¶ | skipping to change at line 724 ¶ | |||
| specific DDP Message MUST contain the same value for this | specific DDP Message MUST contain the same value for this | |||
| field. The Data Source MUST ensure that each DDP Segment within | field. The Data Source MUST ensure that each DDP Segment within | |||
| a specific DDP Message contains the same value for this field. | a specific DDP Message contains the same value for this field. | |||
| STag - Steering Tag: 32 bits. | STag - Steering Tag: 32 bits. | |||
| The Steering Tag identifies the Data Sink's Tagged Buffer. The | The Steering Tag identifies the Data Sink's Tagged Buffer. The | |||
| STag MUST be valid for this DDP Stream. The STag is associated | STag MUST be valid for this DDP Stream. The STag is associated | |||
| with the DDP Stream through a mechanism that is outside the | with the DDP Stream through a mechanism that is outside the | |||
| Shah, et. al. Expires January 2007 16 | Shah, et. al. Expires March 2007 16 | |||
| scope of the DDP Protocol specification. At the Data Source, | scope of the DDP Protocol specification. At the Data Source, | |||
| DDP MUST set the STag field to the value specified by the ULP. | DDP MUST set the STag field to the value specified by the ULP. | |||
| At the Data Sink, the DDP MUST provide the STag field when the | At the Data Sink, the DDP MUST provide the STag field when the | |||
| ULP Message is delivered. Each DDP Segment within a specific | ULP Message is delivered. Each DDP Segment within a specific | |||
| DDP Message MUST contain the same value for this field and MUST | DDP Message MUST contain the same value for this field and MUST | |||
| be the value supplied by the ULP. The Data Source MUST ensure | be the value supplied by the ULP. The Data Source MUST ensure | |||
| that each DDP Segment within a specific DDP Message contains | that each DDP Segment within a specific DDP Message contains | |||
| the same value for this field. | the same value for this field. | |||
| TO - Tagged Offset: 64 bits. | TO - Tagged Offset: 64 bits. | |||
| skipping to change at line 759 ¶ | skipping to change at line 763 ¶ | |||
| |T|L| Rsvd | DV| RsvdULP[0:7] | | |T|L| Rsvd | DV| RsvdULP[0:7] | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | RsvdULP[8:39] | | | RsvdULP[8:39] | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | QN | | | QN | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MSN | | | MSN | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MO | | | MO | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5 Untagged Buffer DDP Header | Figure 5 Untagged Buffer DDP Header | |||
| T is set to zero. | T is set to zero. | |||
| RsvdULP - Reserved for use by the ULP: 40 bits. | RsvdULP - Reserved for use by the ULP: 40 bits. | |||
| The RsvdULP field is opaque to the DDP protocol and can be | The RsvdULP field is opaque to the DDP protocol and can be | |||
| structured in any way by the ULP. At the Data Source, DDP MUST | structured in any way by the ULP. At the Data Source, DDP MUST | |||
| set RsvdULP Field to the value specified by the ULP. It is | set RsvdULP Field to the value specified by the ULP. It is | |||
| transferred unmodified from the Data Source to the Data Sink. | transferred unmodified from the Data Source to the Data Sink. | |||
| At the Data Sink, DDP MUST provide RsvdULP field to the ULP | At the Data Sink, DDP MUST provide RsvdULP field to the ULP | |||
| when the ULP Message is Delivered. Each DDP Segment within a | when the ULP Message is Delivered. Each DDP Segment within a | |||
| specific DDP Message MUST contain the same value for the | specific DDP Message MUST contain the same value for the | |||
| Shah, et. al. Expires January 2007 17 | Shah, et. al. Expires March 2007 17 | |||
| RsvdULP field. At the Data Sink, the DDP implementation is NOT | RsvdULP field. At the Data Sink, the DDP implementation is NOT | |||
| REQUIRED to verify that the same value is present in the | REQUIRED to verify that the same value is present in the | |||
| RsvdULP field of each DDP Segment within a specific DDP Message | RsvdULP field of each DDP Segment within a specific DDP Message | |||
| and MAY provide the value from any one of the received DDP | and MAY provide the value from any one of the received DDP | |||
| Segment to the ULP when the ULP Message is Delivered. | Segment to the ULP when the ULP Message is Delivered. | |||
| QN - Queue Number: 32 bits. | QN - Queue Number: 32 bits. | |||
| The Queue Number identifies the Data Sink's Untagged Buffer | The Queue Number identifies the Data Sink's Untagged Buffer | |||
| queue referenced by this header. Each DDP segment within a | queue referenced by this header. Each DDP segment within a | |||
| skipping to change at line 819 ¶ | skipping to change at line 823 ¶ | |||
| 4.4 DDP Segment Format | 4.4 DDP Segment Format | |||
| Each DDP Segment MUST contain a DDP Header. Each DDP Segment may | Each DDP Segment MUST contain a DDP Header. Each DDP Segment may | |||
| also contain ULP Payload. Following is the DDP Segment format: | also contain ULP Payload. Following is the DDP Segment format: | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | DDP | | | | DDP | | | |||
| | Header| ULP Payload (if any) | | | Header| ULP Payload (if any) | | |||
| | | | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 6 DDP Segment Format | Figure 6 DDP Segment Format | |||
| Shah, et. al. Expires January 2007 18 | Shah, et. al. Expires March 2007 18 | |||
| 5 Data Transfer | 5 Data Transfer | |||
| DDP supports multi-segment DDP Messages. Each DDP Message is | DDP supports multi-segment DDP Messages. Each DDP Message is | |||
| composed of one or more DDP Segments. Each DDP Segment contains a | composed of one or more DDP Segments. Each DDP Segment contains a | |||
| DDP Header. The DDP Header contains the information required by the | DDP Header. The DDP Header contains the information required by the | |||
| receiver to Place any ULP Payload included in the DDP Segment. | receiver to Place any ULP Payload included in the DDP Segment. | |||
| 5.1 DDP Tagged or Untagged Buffer Models | 5.1 DDP Tagged or Untagged Buffer Models | |||
| DDP uses two basic Buffer Models for the Placement of the ULP | DDP uses two basic Buffer Models for the Placement of the ULP | |||
| skipping to change at line 843 ¶ | skipping to change at line 847 ¶ | |||
| 5.1.1 Tagged Buffer Model | 5.1.1 Tagged Buffer Model | |||
| The Tagged Buffer Model is used by the Data Source to transfer a DDP | The Tagged Buffer Model is used by the Data Source to transfer a DDP | |||
| Message into a Tagged Buffer at the Data Sink that has been | Message into a Tagged Buffer at the Data Sink that has been | |||
| previously Advertised to the Data Source. An STag identifies a | previously Advertised to the Data Source. An STag identifies a | |||
| Tagged Buffer. For the Placement of a DDP Message using the Tagged | Tagged Buffer. For the Placement of a DDP Message using the Tagged | |||
| Buffer model, the STag is used to identify the buffer, and the TO is | Buffer model, the STag is used to identify the buffer, and the TO is | |||
| used to identify the offset within the Tagged Buffer into which the | used to identify the offset within the Tagged Buffer into which the | |||
| ULP Payload is transferred. The protocol used to Advertise the | ULP Payload is transferred. The protocol used to Advertise the | |||
| Tagged Buffer is outside the scope of this specification (i.e. ULP | Tagged Buffer is outside the scope of this specification (i.e., ULP | |||
| specific). A DDP Message can start at an arbitrary TO within a | specific). A DDP Message can start at an arbitrary TO within a | |||
| Tagged Buffer. | Tagged Buffer. | |||
| Additionally, a Tagged Buffer can potentially be written multiple | Additionally, a Tagged Buffer can potentially be written multiple | |||
| times. This might be done for error recovery or because a buffer is | times. This might be done for error recovery or because a buffer is | |||
| being re-used after some ULP specific synchronization mechanism. | being re-used after some ULP specific synchronization mechanism. | |||
| 5.1.2 Untagged Buffer Model | 5.1.2 Untagged Buffer Model | |||
| The Untagged Buffer Model is used by the Data Source to transfer a | The Untagged Buffer Model is used by the Data Source to transfer a | |||
| skipping to change at line 876 ¶ | skipping to change at line 880 ¶ | |||
| communicate how many buffers have been queued is outside the scope | communicate how many buffers have been queued is outside the scope | |||
| of this specification. Similarly, the exact implementation of the | of this specification. Similarly, the exact implementation of the | |||
| buffer queue is outside the scope of this specification. | buffer queue is outside the scope of this specification. | |||
| 5.2 Segmentation and Reassembly of a DDP Message | 5.2 Segmentation and Reassembly of a DDP Message | |||
| At the Data Source, the DDP layer MUST segment the data contained in | At the Data Source, the DDP layer MUST segment the data contained in | |||
| a ULP message into a series of DDP Segments, where each DDP Segment | a ULP message into a series of DDP Segments, where each DDP Segment | |||
| contains a DDP Header and ULP Payload, and MUST be no larger than | contains a DDP Header and ULP Payload, and MUST be no larger than | |||
| Shah, et. al. Expires January 2007 19 | Shah, et. al. Expires March 2007 19 | |||
| the MULPDU value advertised by the LLP. The ULP Message Length MUST | the MULPDU value advertised by the LLP. The ULP Message Length MUST | |||
| be less than 2^32. At the Data Source, the DDP layer MUST send all | be less than 2^32. At the Data Source, the DDP layer MUST send all | |||
| the data contained in the ULP message. At the Data Sink, the DDP | the data contained in the ULP message. At the Data Sink, the DDP | |||
| layer MUST Place the ULP Payload contained in all valid incoming DDP | layer MUST Place the ULP Payload contained in all valid incoming DDP | |||
| Segments associated with a DDP Message into the ULP Buffer. | Segments associated with a DDP Message into the ULP Buffer. | |||
| DDP Message segmentation at the Data Source is accomplished by | DDP Message segmentation at the Data Source is accomplished by | |||
| identifying a DDP Message (which corresponds one-to-one with a ULP | identifying a DDP Message (which corresponds one-to-one with a ULP | |||
| Message) uniquely and then, for each associated DDP Segment of a DDP | Message) uniquely and then, for each associated DDP Segment of a DDP | |||
| Message, by specifying an octet offset for the portion of the ULP | Message, by specifying an octet offset for the portion of the ULP | |||
| skipping to change at line 931 ¶ | skipping to change at line 935 ¶ | |||
| of the STag effectively enables the ULP to implement | of the STag effectively enables the ULP to implement | |||
| segmentation and reassembly due to ULP specific constraints. | segmentation and reassembly due to ULP specific constraints. | |||
| See [RDMAP] for details of how this is done. | See [RDMAP] for details of how this is done. | |||
| A different implementation of a ULP could use an Untagged DDP | A different implementation of a ULP could use an Untagged DDP | |||
| Message sent after the Tagged DDP Message which details the | Message sent after the Tagged DDP Message which details the | |||
| initial TO for the STag that was used in the Tagged DDP | initial TO for the STag that was used in the Tagged DDP | |||
| Message. And finally, another implementation of a ULP could | Message. And finally, another implementation of a ULP could | |||
| choose to always use an initial TO of zero such that no | choose to always use an initial TO of zero such that no | |||
| Shah, et. al. Expires January 2007 20 | Shah, et. al. Expires March 2007 20 | |||
| additional message is required to convey the initial TO used in | additional message is required to convey the initial TO used in | |||
| a Tagged DDP Message. | a Tagged DDP Message. | |||
| Regardless of whether the ULP chooses to recover the original ULP | Regardless of whether the ULP chooses to recover the original ULP | |||
| Message boundary at the Data Sink for a Tagged DDP Message, DDP | Message boundary at the Data Sink for a Tagged DDP Message, DDP | |||
| supports segmentation and reassembly of the Tagged DDP Message. The | supports segmentation and reassembly of the Tagged DDP Message. The | |||
| STag is used to identify the ULP Buffer at the Data Sink and the TO | STag is used to identify the ULP Buffer at the Data Sink and the TO | |||
| is used to identify the octet-offset within the ULP Buffer | is used to identify the octet-offset within the ULP Buffer | |||
| referenced by the STag. The ULP at the Data Source MUST specify the | referenced by the STag. The ULP at the Data Source MUST specify the | |||
| STag and the initial TO when the ULP Message is handed to DDP. | STag and the initial TO when the ULP Message is handed to DDP. | |||
| skipping to change at line 985 ¶ | skipping to change at line 989 ¶ | |||
| * SHOULD transmit DDP Segments within a DDP Message in increasing | * SHOULD transmit DDP Segments within a DDP Message in increasing | |||
| MO order for Untagged DDP Messages and in increasing TO order | MO order for Untagged DDP Messages and in increasing TO order | |||
| for Tagged DDP Messages. | for Tagged DDP Messages. | |||
| At the Data Sink, DDP (Note: The following rules are motivated by | At the Data Sink, DDP (Note: The following rules are motivated by | |||
| LLP implementations that separate Placement and Delivery.): | LLP implementations that separate Placement and Delivery.): | |||
| * MAY perform Placement of DDP Segments out of order, | * MAY perform Placement of DDP Segments out of order, | |||
| Shah, et. al. Expires January 2007 21 | Shah, et. al. Expires March 2007 21 | |||
| * MAY perform Placement of a DDP Segment more than once, | * MAY perform Placement of a DDP Segment more than once, | |||
| * MUST Deliver a DDP Message to the ULP at most once, | * MUST Deliver a DDP Message to the ULP at most once, | |||
| * MUST Deliver DDP Messages to the ULP in the order they were | * MUST Deliver DDP Messages to the ULP in the order they were | |||
| sent by the Data Source. | sent by the Data Source. | |||
| 5.4 DDP Message Completion & Delivery | 5.4 DDP Message Completion & Delivery | |||
| At the Data Source, DDP Message transfer is considered completed | At the Data Source, DDP Message transfer is considered completed | |||
| skipping to change at line 1022 ¶ | skipping to change at line 1026 ¶ | |||
| At the Data Sink, DDP MUST provide the ULP Message Length to the ULP | At the Data Sink, DDP MUST provide the ULP Message Length to the ULP | |||
| when an Untagged DDP Message is Delivered. The ULP Message Length | when an Untagged DDP Message is Delivered. The ULP Message Length | |||
| may be calculated by adding the MO and the ULP Payload length in the | may be calculated by adding the MO and the ULP Payload length in the | |||
| last DDP Segment (with the Last flag set) of an Untagged DDP | last DDP Segment (with the Last flag set) of an Untagged DDP | |||
| Message. | Message. | |||
| At the Data Sink, DDP MUST provide the RsvdULP Field of the DDP | At the Data Sink, DDP MUST provide the RsvdULP Field of the DDP | |||
| Message to the ULP when the DDP Message is delivered. | Message to the ULP when the DDP Message is delivered. | |||
| Shah, et. al. Expires January 2007 22 | Shah, et. al. Expires March 2007 22 | |||
| 6 DDP Stream Setup & Teardown | 6 DDP Stream Setup & Teardown | |||
| This section describes LLP independent issues related to DDP Stream | This section describes LLP independent issues related to DDP Stream | |||
| setup and teardown. | setup and teardown. | |||
| 6.1 DDP Stream Setup | 6.1 DDP Stream Setup | |||
| It is expected that the ULP will use a mechanism outside the scope | It is expected that the ULP will use a mechanism outside the scope | |||
| of this specification to establish an LLP Connection, and that the | of this specification to establish an LLP Connection, and that the | |||
| LLP Connection will support one or more LLP Streams (e.g. MPA/TCP or | LLP Connection will support one or more LLP Streams (e.g., MPA/TCP | |||
| SCTP). After the LLP sets up the LLP Stream, it will enable a DDP | or SCTP). After the LLP sets up the LLP Stream, it will enable a DDP | |||
| Stream on a specific LLP Stream at an appropriate point. | Stream on a specific LLP Stream at an appropriate point. | |||
| The ULP is required to enable both endpoints of an LLP Stream for | The ULP is required to enable both endpoints of an LLP Stream for | |||
| DDP data transfer at the same time, in both directions; this is | DDP data transfer at the same time, in both directions; this is | |||
| necessary so that the Data Sink can properly recognize the DDP | necessary so that the Data Sink can properly recognize the DDP | |||
| Segments. | Segments. | |||
| 6.2 DDP Stream Teardown | 6.2 DDP Stream Teardown | |||
| DDP MUST NOT independently initiate Stream Teardown. DDP either | DDP MUST NOT independently initiate Stream Teardown. DDP either | |||
| skipping to change at line 1075 ¶ | skipping to change at line 1079 ¶ | |||
| torn down. | torn down. | |||
| If the Local Peer LLP supports a half-closed LLP Stream, on the | If the Local Peer LLP supports a half-closed LLP Stream, on the | |||
| receipt of a LLP graceful teardown request of the DDP Stream, DDP | receipt of a LLP graceful teardown request of the DDP Stream, DDP | |||
| SHOULD indicate the half-closed state to the ULP, and continue to | SHOULD indicate the half-closed state to the ULP, and continue to | |||
| process outbound data transfer requests normally. Following this | process outbound data transfer requests normally. Following this | |||
| event, when the Local Peer ULP requests graceful teardown, DDP MUST | event, when the Local Peer ULP requests graceful teardown, DDP MUST | |||
| indicate to the LLP that it SHOULD perform a graceful close of the | indicate to the LLP that it SHOULD perform a graceful close of the | |||
| other half of the LLP Stream. | other half of the LLP Stream. | |||
| Shah, et. al. Expires January 2007 23 | Shah, et. al. Expires March 2007 23 | |||
| If the Local Peer LLP supports a half-closed LLP Stream, on the | If the Local Peer LLP supports a half-closed LLP Stream, on the | |||
| receipt of a ULP graceful half-close teardown request of the DDP | receipt of a ULP graceful half-close teardown request of the DDP | |||
| Stream, DDP SHOULD keep data reception enabled on the other half of | Stream, DDP SHOULD keep data reception enabled on the other half of | |||
| the LLP stream. | the LLP Stream. | |||
| 6.2.2 DDP Abortive Teardown | 6.2.2 DDP Abortive Teardown | |||
| As previously mentioned, DDP does not independently terminate a DDP | As previously mentioned, DDP does not independently terminate a DDP | |||
| Stream. Thus any of the following fatal errors on a DDP Stream MUST | Stream. Thus any of the following fatal errors on a DDP Stream MUST | |||
| cause DDP to indicate to the ULP that a fatal error has occurred: | cause DDP to indicate to the ULP that a fatal error has occurred: | |||
| * Underlying LLP Connection or LLP Stream is lost. | * Underlying LLP Connection or LLP Stream is lost. | |||
| * Underlying LLP reports a catastrophic error. | * Underlying LLP reports a fatal error. | |||
| * DDP Header has one or more invalid fields. | * DDP Header has one or more invalid fields. | |||
| If the LLP indicates to the ULP that a fatal error has occurred, the | If the LLP indicates to the ULP that a fatal error has occurred, the | |||
| DDP layer SHOULD report the error to the ULP (see Section 7.2, DDP | DDP layer SHOULD report the error to the ULP (see Section 7.2, DDP | |||
| Error Numbers) and complete all outstanding ULP requests with an | Error Numbers) and complete all outstanding ULP requests with an | |||
| error. If the underlying LLP Stream is still intact, DDP SHOULD | error. If the underlying LLP Stream is still intact, DDP SHOULD | |||
| continue to allow the ULP to transfer additional DDP Messages on the | continue to allow the ULP to transfer additional DDP Messages on the | |||
| outgoing half connection after the fatal error was indicated to the | outgoing half connection after the fatal error was indicated to the | |||
| ULP. This enables the ULP to transfer an error syndrome to the | ULP. This enables the ULP to transfer an error syndrome to the | |||
| Remote Peer. After indicating to the ULP a fatal error has occurred, | Remote Peer. After indicating to the ULP a fatal error has occurred, | |||
| the DDP Stream MUST NOT be terminated until the Local Peer ULP | the DDP Stream MUST NOT be terminated until the Local Peer ULP | |||
| indicates to the DDP layer that the DDP Stream should be abortively | indicates to the DDP layer that the DDP Stream should be abortively | |||
| torndown. | torndown. | |||
| Shah, et. al. Expires January 2007 24 | Shah, et. al. Expires March 2007 24 | |||
| 7 Error Semantics | 7 Error Semantics | |||
| All LLP errors reported to DDP SHOULD be passed up to the ULP. | All LLP errors reported to DDP SHOULD be passed up to the ULP. | |||
| 7.1 Errors detected at the Data Sink | 7.1 Errors detected at the Data Sink | |||
| For non-zero length Untagged DDP Segments, the DDP Segment MUST be | For non-zero length Untagged DDP Segments, the DDP Segment MUST be | |||
| validated before Placement by verifying: | validated before Placement by verifying: | |||
| 1. The QN is valid for this stream. | 1. The QN is valid for this stream. | |||
| skipping to change at line 1158 ¶ | skipping to change at line 1162 ¶ | |||
| available to handle the incoming DDP Segments. | available to handle the incoming DDP Segments. | |||
| For non-zero length Tagged DDP Segments, the segment MUST be | For non-zero length Tagged DDP Segments, the segment MUST be | |||
| validated before Placement by verifying: | validated before Placement by verifying: | |||
| 1. The STag is valid for this stream. | 1. The STag is valid for this stream. | |||
| 2. The STag has an associated buffer that allows Placement of the | 2. The STag has an associated buffer that allows Placement of the | |||
| payload. | payload. | |||
| Shah, et. al. Expires January 2007 25 | Shah, et. al. Expires March 2007 25 | |||
| 3. The TO falls in the range of legal offsets registered for the | 3. The TO falls in the range of legal offsets registered for the | |||
| STag. | STag. | |||
| 4. The sum of the DDP Segment payload length and the TO falls in | 4. The sum of the DDP Segment payload length and the TO falls in | |||
| the range of legal offsets registered for the STag. | the range of legal offsets registered for the STag. | |||
| 5. A 64-bit unsigned sum of the DDP Segment payload length and the | 5. A 64-bit unsigned sum of the DDP Segment payload length and the | |||
| TO does not wrap. | TO does not wrap. | |||
| If the DDP layer detects any of the receive errors listed in this | If the DDP layer detects any of the receive errors listed in this | |||
| skipping to change at line 1206 ¶ | skipping to change at line 1210 ¶ | |||
| 0x2 Untagged Buffer Error | 0x2 Untagged Buffer Error | |||
| 0x01 Invalid QN | 0x01 Invalid QN | |||
| 0x02 Invalid MSN - no buffer available | 0x02 Invalid MSN - no buffer available | |||
| 0x03 Invalid MSN - MSN range is not valid | 0x03 Invalid MSN - MSN range is not valid | |||
| 0x04 Invalid MO | 0x04 Invalid MO | |||
| 0x05 DDP Message too long for available buffer | 0x05 DDP Message too long for available buffer | |||
| 0x06 Invalid DDP version | 0x06 Invalid DDP version | |||
| 0x3 Rsvd Reserved for the use by the LLP | 0x3 Rsvd Reserved for the use by the LLP | |||
| Shah, et. al. Expires January 2007 26 | Shah, et. al. Expires March 2007 26 | |||
| 8 Security Considerations | 8 Security Considerations | |||
| This section discusses both protocol-specific considerations and the | This section discusses both protocol-specific considerations and the | |||
| implications of using DDP with existing security mechanisms. The | implications of using DDP with existing security mechanisms. The | |||
| security requirements for the DDP implementation are provided at the | security requirements for the DDP implementation are provided at the | |||
| end of the section. A more detailed analysis of the security issues | end of the section. A more detailed analysis of the security issues | |||
| around the implementation and the use of the DDP can be found in | around the implementation and the use of the DDP can be found in | |||
| [RDMASEC]. | [RDMASEC]. | |||
| The IPsec requirements for RDDP are based on the version of IPsec | ||||
| specified in RFC 2401 [IPSEC] and related RFCs, as profiled by RFC | ||||
| 3723 [RFC 3723], despite the existence of a newer version of IPsec | ||||
| specified in RFC 4301 [RFC 4301] and related RFCs. One of the | ||||
| important early applications of the RDDP protocols is their use with | ||||
| iSCSI [iSER]; RDDP's IPsec requirements follow those of IPsec in | ||||
| order to facilitate that usage by allowing a common profile of IPsec | ||||
| to be used with iSCSI and the RDDP protocols. In the future, RFC | ||||
| 3723 may be updated to the newer version of IPsec, the IPsec | ||||
| security requirements of any such update should apply uniformly to | ||||
| iSCSI and the RDDP protocols. | ||||
| 8.1 Protocol-specific Security Considerations | 8.1 Protocol-specific Security Considerations | |||
| The vulnerabilities of DDP to active third-party interference are no | The vulnerabilities of DDP to active third-party interference are no | |||
| greater than any other protocol running over transport protocols | greater than any other protocol running over transport protocols | |||
| such as TCP and SCTP over IP. A third party, by injecting spoofed | such as TCP and SCTP over IP. A third party, by injecting spoofed | |||
| packets into the network that are Delivered to a DDP Data Sink, | packets into the network that are Delivered to a DDP Data Sink, | |||
| could launch a variety of attacks that exploit DDP-specific | could launch a variety of attacks that exploit DDP-specific | |||
| behavior. Since DDP directly or indirectly exposes memory addresses | behavior. Since DDP directly or indirectly exposes memory addresses | |||
| on the wire, the Placement information carried in each DDP Segment | on the wire, the Placement information carried in each DDP Segment | |||
| must be validated, including invalid STag and octet level | must be validated, including invalid STag and octet level | |||
| skipping to change at line 1247 ¶ | skipping to change at line 1263 ¶ | |||
| Protection Domain (PD) association and a DDP Stream association. | Protection Domain (PD) association and a DDP Stream association. | |||
| Under the Protection Domain (PD) association, a unique Protection | Under the Protection Domain (PD) association, a unique Protection | |||
| Domain Identifier (PD ID) is created and used locally to associate | Domain Identifier (PD ID) is created and used locally to associate | |||
| an STag with a set of DDP Streams. Under this mechanism, the use of | an STag with a set of DDP Streams. Under this mechanism, the use of | |||
| the STag is only permitted on the DDP Streams that have the same PD | the STag is only permitted on the DDP Streams that have the same PD | |||
| ID as the STag. For an incoming DDP Segment of a Tagged DDP Message | ID as the STag. For an incoming DDP Segment of a Tagged DDP Message | |||
| on a DDP Stream, if the PD ID of the DDP Stream is not the same as | on a DDP Stream, if the PD ID of the DDP Stream is not the same as | |||
| the PD ID of the STag targeted by the Tagged DDP Message, then the | the PD ID of the STag targeted by the Tagged DDP Message, then the | |||
| DDP Segment is not placed and the DDP layer MUST surface a local | DDP Segment is not placed and the DDP layer MUST surface a local | |||
| Shah, et. al. Expires March 2007 27 | ||||
| error to the ULP. Note that the PD ID is locally defined, and cannot | error to the ULP. Note that the PD ID is locally defined, and cannot | |||
| be directly manipulated by the Remote Peer. | be directly manipulated by the Remote Peer. | |||
| Under the DDP Stream association, a DDP Stream is identified locally | Under the DDP Stream association, a DDP Stream is identified locally | |||
| by a unique DDP Stream identifier (ID). An STag is associated with a | by a unique DDP Stream identifier (ID). An STag is associated with a | |||
| DDP Stream by using a DDP Stream ID. In this case, for an incoming | DDP Stream by using a DDP Stream ID. In this case, for an incoming | |||
| DDP Segment of a Tagged DDP Message on a DDP Stream, if the DDP | DDP Segment of a Tagged DDP Message on a DDP Stream, if the DDP | |||
| Stream ID of the DDP Stream is not the same as the DDP Stream ID of | Stream ID of the DDP Stream is not the same as the DDP Stream ID of | |||
| the STag targeted by the Tagged DDP Message, then the DDP Segment is | the STag targeted by the Tagged DDP Message, then the DDP Segment is | |||
| not placed and the DDP layer MUST surface a local error to the ULP. | not placed and the DDP layer MUST surface a local error to the ULP. | |||
| Note that the DDP Stream ID is locally defined, and cannot be | Note that the DDP Stream ID is locally defined, and cannot be | |||
| directly manipulated by the Remote Peer. | directly manipulated by the Remote Peer. | |||
| Shah, et. al. Expires January 2007 27 | ||||
| A ULP SHOULD associate an STag with at least one DDP Stream. DDP | A ULP SHOULD associate an STag with at least one DDP Stream. DDP | |||
| MUST support Protection Domain association and DDP Stream | MUST support Protection Domain association and DDP Stream | |||
| association mechanisms for associating an STag and a DDP Stream. | association mechanisms for associating an STag and a DDP Stream. | |||
| 8.3 Security Requirements | 8.3 Security Requirements | |||
| [RDMASEC] defines the security model and general assumptions for | [RDMASEC] defines the security model and general assumptions for | |||
| RDMAP/DDP. This subsection provides the security requirements for | RDMAP/DDP. This subsection provides the security requirements for | |||
| the DDP implementation. For more details on the type of attacks, | the DDP implementation. For more details on the type of attacks, | |||
| type of attackers, trust models, and resource sharing for the DDP | type of attackers, trust models, and resource sharing for the DDP | |||
| skipping to change at line 1300 ¶ | skipping to change at line 1317 ¶ | |||
| buffers in order to directly Place data into a user buffer and is | buffers in order to directly Place data into a user buffer and is | |||
| therefore constrained by the same techniques mentioned to guard | therefore constrained by the same techniques mentioned to guard | |||
| against attempts to read or write from unauthorized memory regions. | against attempts to read or write from unauthorized memory regions. | |||
| DDP does not require a node to open its buffers to arbitrary attacks | DDP does not require a node to open its buffers to arbitrary attacks | |||
| over the DDP Stream. It may access ULP memory only to the extent | over the DDP Stream. It may access ULP memory only to the extent | |||
| that the ULP has enabled and authorized it to do so. The STag | that the ULP has enabled and authorized it to do so. The STag | |||
| access control model is defined in [RDMASEC]. Specific security | access control model is defined in [RDMASEC]. Specific security | |||
| operations include: | operations include: | |||
| Shah, et. al. Expires March 2007 28 | ||||
| 1. STags are only valid over the exact byte range established by the | 1. STags are only valid over the exact byte range established by the | |||
| ULP. DDP MUST provide a mechanism for the ULP to establish and | ULP. DDP MUST provide a mechanism for the ULP to establish and | |||
| revoke the TO range associated with the ULP Buffer referenced by | revoke the TO range associated with the ULP Buffer referenced by | |||
| the STag. | the STag. | |||
| 2. STags are only valid for the duration established by the ULP. The | 2. STags are only valid for the duration established by the ULP. The | |||
| ULP may revoke them at any time, in accordance with its own upper | ULP may revoke them at any time, in accordance with its own upper | |||
| layer protocol requirements. DDP MUST provide a mechanism for the | layer protocol requirements. DDP MUST provide a mechanism for the | |||
| ULP to establish and revoke STag validity. | ULP to establish and revoke STag validity. | |||
| 3. DDP MUST provide a mechanism for the ULP to communicate the | 3. DDP MUST provide a mechanism for the ULP to communicate the | |||
| association between a STag and a specific DDP Stream. | association between a STag and a specific DDP Stream. | |||
| Shah, et. al. Expires January 2007 28 | ||||
| 4. A ULP may only expose memory to remote access to the extent that | 4. A ULP may only expose memory to remote access to the extent that | |||
| it already had access to that memory itself. | it already had access to that memory itself. | |||
| 5. If an STag is not valid on a DDP Stream, DDP MUST pass the invalid | 5. If an STag is not valid on a DDP Stream, DDP MUST pass the invalid | |||
| access attempt to the ULP. The ULP may provide a mechanism for | access attempt to the ULP. The ULP may provide a mechanism for | |||
| terminating the DDP Stream. | terminating the DDP Stream. | |||
| Further, DDP provides a mechanism that directly Places incoming | Further, DDP provides a mechanism that directly Places incoming | |||
| payloads in user-mode ULP Buffers. This avoids the risks of prior | payloads in user-mode ULP Buffers. This avoids the risks of prior | |||
| solutions that relied upon exposing system buffers for incoming | solutions that relied upon exposing system buffers for incoming | |||
| payloads. | payloads. | |||
| skipping to change at line 1353 ¶ | skipping to change at line 1369 ¶ | |||
| revoke the association of a ULP Buffer to an STag and TO range. | revoke the association of a ULP Buffer to an STag and TO range. | |||
| 5. An RNIC MUST provide a mechanism for the ULP to establish and | 5. An RNIC MUST provide a mechanism for the ULP to establish and | |||
| revoke read, write, or read and write access to the ULP Buffer | revoke read, write, or read and write access to the ULP Buffer | |||
| referenced by an STag. | referenced by an STag. | |||
| 6. An RNIC MUST ensure that the network interface can no longer | 6. An RNIC MUST ensure that the network interface can no longer | |||
| modify an advertised buffer after the ULP revokes remote access | modify an advertised buffer after the ULP revokes remote access | |||
| rights for an STag. | rights for an STag. | |||
| Shah, et. al. Expires March 2007 29 | ||||
| 7. An RNIC MUST NOT enable firmware to be loaded on the RNIC | 7. An RNIC MUST NOT enable firmware to be loaded on the RNIC | |||
| directly from an untrusted Local Peer or Remote Peer, unless | directly from an untrusted Local Peer or Remote Peer, unless | |||
| the Peer is properly authenticated (by a mechanism outside the | the Peer is properly authenticated (by a mechanism outside the | |||
| scope of this specification. The mechanism presumably entails | scope of this specification. The mechanism presumably entails | |||
| authenticating that the remote ULP has the right to perform the | authenticating that the remote ULP has the right to perform the | |||
| update), and the update is done via a secure protocol, such as | update), and the update is done via a secure protocol, such as | |||
| IPsec. | IPsec. | |||
| 8.3.2 Privileged Resources Manager Requirement | 8.3.2 Privileged Resources Manager Requirement | |||
| The PRM MUST implement the security semantics described below. | The PRM MUST implement the security semantics described below. | |||
| Shah, et. al. Expires January 2007 29 | ||||
| 1. All Non-Privileged ULP interactions with the RNIC Engine that | 1. All Non-Privileged ULP interactions with the RNIC Engine that | |||
| could affect other ULPs MUST be done using the Privileged | could affect other ULPs MUST be done using the Privileged | |||
| Resource Manager as a proxy. | Resource Manager as a proxy. | |||
| 2. All ULP resource allocation requests for scarce resources MUST | 2. All ULP resource allocation requests for scarce resources MUST | |||
| also be done using a Privileged Resource Manager. | also be done using a Privileged Resource Manager. | |||
| 3. The Privileged Resource Manager MUST NOT assume different ULPs | 3. The Privileged Resource Manager MUST NOT assume different ULPs | |||
| share Partial Mutual Trust unless there is a mechanism to | share Partial Mutual Trust unless there is a mechanism to | |||
| ensure that the ULPs do indeed share partial mutual trust. | ensure that the ULPs do indeed share partial mutual trust. | |||
| skipping to change at line 1394 ¶ | skipping to change at line 1410 ¶ | |||
| from allocating more than its fair share of resources. | from allocating more than its fair share of resources. | |||
| If an RNIC provides the ability to share receive buffers across | If an RNIC provides the ability to share receive buffers across | |||
| multiple DDP Streams, the combination of the RNIC and the | multiple DDP Streams, the combination of the RNIC and the | |||
| Privileged Resource Manager MUST be able to detect if the | Privileged Resource Manager MUST be able to detect if the | |||
| Remote Peer is attempting to consume more than its fair share | Remote Peer is attempting to consume more than its fair share | |||
| of resources so that the Local Peer can apply countermeasures | of resources so that the Local Peer can apply countermeasures | |||
| to detect and prevent the attack. | to detect and prevent the attack. | |||
| 8.4 Security Services for DDP | 8.4 Security Services for DDP | |||
| DDP uses an IP based network services, therefore, all exchanged DDP | DDP uses IP based network services, therefore, all exchanged DDP | |||
| Segments are vulnerable to spoofing, tampering and information | Segments are vulnerable to spoofing, tampering and information | |||
| disclosure attacks. If a DDP Stream may be subject to impersonation | disclosure attacks. If a DDP Stream may be subject to impersonation | |||
| attacks, or Stream hijacking attacks, it is highly RECOMMENDED that | attacks, or Stream hijacking attacks, it is highly RECOMMENDED that | |||
| the DDP Stream be authenticated, integrity protected, and protected | the DDP Stream be authenticated, integrity protected, and protected | |||
| from replay attacks; it MAY use confidentiality protection to | from replay attacks; it MAY use confidentiality protection to | |||
| protect from eavesdropping. | protect from eavesdropping. | |||
| 8.4.1 Available Security Services | 8.4.1 Available Security Services | |||
| IPsec can be used to protect against the packet injection attacks | IPsec can be used to protect against the packet injection attacks | |||
| outlined above. Because IPsec is designed to secure arbitrary IP | outlined above. Because IPsec is designed to secure arbitrary IP | |||
| Shah, et. al. Expires March 2007 30 | ||||
| packet streams, including streams where packets are lost, DDP can | packet streams, including streams where packets are lost, DDP can | |||
| run on top of IPsec without any change. | run on top of IPsec without any change. | |||
| DDP security may also profit from SSL or TLS security services | DDP security may also profit from SSL or TLS security services | |||
| provided for TCP or SCTP based ULPs [TLS] as well as from DTLS | provided for TCP or SCTP based ULPs [TLS] as well as from DTLS | |||
| [DTLS] security services provided beneath the transport protocol. | [DTLS] security services provided beneath the transport protocol. | |||
| See [RDMASEC] for further discussion of these approaches and the | See [RDMASEC] for further discussion of these approaches and the | |||
| rationale for selection of IPsec security services for the RDDP | rationale for selection of IPsec security services for the RDDP | |||
| protocols. | protocols. | |||
| Shah, et. al. Expires January 2007 30 | ||||
| 8.4.2 Requirements for IPsec Services for DDP | 8.4.2 Requirements for IPsec Services for DDP | |||
| IPsec packets are processed (e.g., integrity checked and possibly | IPsec packets are processed (e.g., integrity checked and possibly | |||
| decrypted) in the order they are received, and a DDP Data Sink will | decrypted) in the order they are received, and a DDP Data Sink will | |||
| process the decrypted DDP Segments contained in these packets in the | process the decrypted DDP Segments contained in these packets in the | |||
| same manner as DDP Segments contained in unsecured IP packets. | same manner as DDP Segments contained in unsecured IP packets. | |||
| The IP Storage working group has defined the normative IPsec | The IP Storage working group has defined the normative IPsec | |||
| requirements for IP Storage [RFC3723]. Portions of this | requirements for IP Storage [RFC3723]. Portions of this | |||
| specification are applicable to the DDP. In particular, a compliant | specification are applicable to the DDP. In particular, a compliant | |||
| skipping to change at line 1444 ¶ | skipping to change at line 1461 ¶ | |||
| utilized, per-packet data origin authentication, integrity and | utilized, per-packet data origin authentication, integrity and | |||
| replay protection MUST be used. | replay protection MUST be used. | |||
| 2. It MUST support ESP in tunnel mode and MAY implement ESP in | 2. It MUST support ESP in tunnel mode and MAY implement ESP in | |||
| transport mode. | transport mode. | |||
| 3. It MUST support IKE [RFC2409] for peer authentication, | 3. It MUST support IKE [RFC2409] for peer authentication, | |||
| negotiation of security associations, and key management, using | negotiation of security associations, and key management, using | |||
| the IPsec DOI [RFC2407]. | the IPsec DOI [RFC2407]. | |||
| 4. It MUST NOT interpret the receipt of a IKE Phase 2 delete | 4. It MUST NOT interpret the receipt of a IKE delete message as a | |||
| message as a reason for tearing down the DDP stream. Since | reason for tearing down the DDP stream. Since IPsec | |||
| IPsec acceleration hardware may only be able to handle a | acceleration hardware may only be able to handle a limited | |||
| limited number of active IKE Phase 2 SAs, idle SAs may be | number of active IPsec Security Associations (SAs), idle SAs | |||
| dynamically brought down and a new SA be brought up again, if | may be dynamically brought down and a new SA be brought up | |||
| activity resumes. | again, if activity resumes. | |||
| 5. It MUST support peer authentication using a pre-shared key, and | 5. It MUST support peer authentication using a pre-shared key, and | |||
| MAY support certificate-based peer authentication using digital | MAY support certificate-based peer authentication using digital | |||
| signatures. Peer authentication using the public key encryption | signatures. Peer authentication using the public key encryption | |||
| methods [RFC2409] SHOULD NOT be used. | methods [RFC2409] SHOULD NOT be used. | |||
| 6. It MUST support IKE Main Mode and SHOULD support Aggressive | 6. It MUST support IKE Main Mode and SHOULD support Aggressive | |||
| Mode. IKE Main Mode with pre-shared key authentication SHOULD | Mode. IKE Main Mode with pre-shared key authentication SHOULD | |||
| Shah, et. al. Expires March 2007 31 | ||||
| NOT be used when either of the peers uses a dynamically | NOT be used when either of the peers uses a dynamically | |||
| assigned IP address. | assigned IP address. | |||
| 7. Access to locally stored secret information (pre-shared or | 7. Access to locally stored secret information (pre-shared or | |||
| private key for digital signing) must be suitably restricted, | private key for digital signing) must be suitably restricted, | |||
| since compromise of the secret information nullifies the | since compromise of the secret information nullifies the | |||
| security properties of the IKE/IPsec protocols. | security properties of the IKE/IPsec protocols. | |||
| 8. It MUST follow the guidelines of Section 2.3.4 of [RFC3723] on | 8. It MUST follow the guidelines of Section 2.3.4 of [RFC3723] on | |||
| the setting of IKE parameters to achieve a high level of | the setting of IKE parameters to achieve a high level of | |||
| interoperability without requiring extensive configuration. | interoperability without requiring extensive configuration. | |||
| Shah, et. al. Expires January 2007 31 | ||||
| Furthermore, implementation and deployment of the IPsec services for | Furthermore, implementation and deployment of the IPsec services for | |||
| DDP should follow the Security Considerations outlined in Section 5 | DDP should follow the Security Considerations outlined in Section 5 | |||
| of [RFC3723]. | of [RFC3723]. | |||
| Shah, et. al. Expires January 2007 32 | Shah, et. al. Expires March 2007 32 | |||
| 9 IANA Considerations | 9 IANA Considerations | |||
| This document requests no direct action from IANA. The following | This document requests no direct action from IANA. The following | |||
| consideration is listed here as commentary. | consideration is listed here as commentary. | |||
| If DDP was enabled a priori for a ULP by connecting to a well-known | If DDP was enabled a priori for a ULP by connecting to a well-known | |||
| port, this well-known port would be registered for the DDP with | port, this well-known port would be registered for the DDP with | |||
| IANA. The registration of the well-known port will be the | IANA. The registration of the well-known port will be the | |||
| responsibility of the ULP specification. | responsibility of the ULP specification. | |||
| Shah, et. al. Expires January 2007 33 | Shah, et. al. Expires March 2007 33 | |||
| 10 References | 10 References | |||
| 10.1 Normative References | 10.1 Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2406] Kent, S. and Atkinson, R., "IP Encapsulating Security | [RFC2406] Kent, S. and Atkinson, R., "IP Encapsulating Security | |||
| Payload (ESP)", RFC 2406, November 1998. | Payload (ESP)", RFC 2406, November 1998. | |||
| skipping to change at line 1531 ¶ | skipping to change at line 1549 ¶ | |||
| [SCTPDDP] C. Bestler and R. Stewart, "Stream Control Transmission | [SCTPDDP] C. Bestler and R. Stewart, "Stream Control Transmission | |||
| Protocol (SCTP) Direct Data Placement (DDP) Adaptation", | Protocol (SCTP) Direct Data Placement (DDP) Adaptation", | |||
| Internet Draft draft-ietf-rddp-sctp-04.txt (work in progress), | Internet Draft draft-ietf-rddp-sctp-04.txt (work in progress), | |||
| June 2006. | June 2006. | |||
| [TCP] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, | [TCP] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, | |||
| September 1981. | September 1981. | |||
| 10.2 Informative References | 10.2 Informative References | |||
| [RFC 4301] S. Kent and K. Seo, "Security Architecture for the | ||||
| Internet Protocol", RFC 4301, December 2005. | ||||
| [DTLS] Rescorla, E. and Modadugu, N., "Datagram Transport Layer | [DTLS] Rescorla, E. and Modadugu, N., "Datagram Transport Layer | |||
| Security", RFC 4347, April 2006. | Security", RFC 4347, April 2006. | |||
| [IPSEC] Atkinson, R. and Kent, S., "Security Architecture for the | [IPSEC] Atkinson, R. and Kent, S., "Security Architecture for the | |||
| Internet Protocol", RFC 2401, November 1998. | Internet Protocol", RFC 2401, November 1998. | |||
| Shah, et. al. Expires March 2007 34 | ||||
| [TLS] Dierks, T. and Rescorla, E., "The Transport Layer Security | [TLS] Dierks, T. and Rescorla, E., "The Transport Layer Security | |||
| (TLS) Protocol Version 1.1", RFC 4346, April 2006. | (TLS) Protocol Version 1.1", RFC 4346, April 2006. | |||
| Shah, et. al. Expires January 2007 34 | [iSER] M. Ko, et. al., "iSCSI Extensions for RDMA Specification”, | |||
| Shah, et. al. Expires January 2007 35 | Internet Draft draft-ietf-ips-iser-05.txt (work in progress), | |||
| October 2005. | ||||
| Shah, et. al. Expires March 2007 35 | ||||
| 11 Appendix | 11 Appendix | |||
| 11.1 Receive Window sizing | 11.1 Receive Window sizing | |||
| This section provides guidance to LLP implementers. | This section provides guidance to LLP implementers. | |||
| Reliable, sequenced, LLPs include a mechanism to advertise the | Reliable, sequenced, LLPs include a mechanism to advertise the | |||
| amount of receive buffer space a sender may consume. This is | amount of receive buffer space a sender may consume. This is | |||
| generally called a "receive window". | generally called a "receive window". | |||
| skipping to change at line 1575 ¶ | skipping to change at line 1601 ¶ | |||
| the rate that DDP Segments can be retired; there may be some cases | the rate that DDP Segments can be retired; there may be some cases | |||
| where segment processing cannot keep up with the incoming packet | where segment processing cannot keep up with the incoming packet | |||
| rate. If this occurs, one reasonable way to slow the incoming packet | rate. If this occurs, one reasonable way to slow the incoming packet | |||
| rate is to reduce the receive window. | rate is to reduce the receive window. | |||
| Note that the LLP should take care to comply with the applicable | Note that the LLP should take care to comply with the applicable | |||
| RFCs; for instance, for TCP, receivers are highly discouraged from | RFCs; for instance, for TCP, receivers are highly discouraged from | |||
| "shrinking" the receive window (reducing the right edge of the | "shrinking" the receive window (reducing the right edge of the | |||
| window after it has been advertised). | window after it has been advertised). | |||
| Shah, et. al. Expires January 2007 36 | Shah, et. al. Expires March 2007 36 | |||
| 12 Authors' Addresses | 12 Authors' Addresses | |||
| Hemal Shah | Hemal Shah | |||
| Broadcom Corporation | Broadcom Corporation | |||
| 16215 Alton Parkway | 16215 Alton Parkway | |||
| Irvine, CA. USA 92619-7013 | Irvine, CA. USA 92619-7013 | |||
| Phone: 949-926-6941 | Phone: 949-926-6941 | |||
| Email: hemal@broadcom.com | Email: hemal@broadcom.com | |||
| James Pinkerton | James Pinkerton | |||
| skipping to change at line 1606 ¶ | skipping to change at line 1632 ¶ | |||
| Phone: +1 (512) 838-1365 | Phone: +1 (512) 838-1365 | |||
| Email: recio@us.ibm.com | Email: recio@us.ibm.com | |||
| Paul R. Culley | Paul R. Culley | |||
| Hewlett-Packard Company | Hewlett-Packard Company | |||
| 20555 SH 249 | 20555 SH 249 | |||
| Houston, TX 77070-2698 USA | Houston, TX 77070-2698 USA | |||
| Phone: +1 (281) 514-5543 | Phone: +1 (281) 514-5543 | |||
| Email: paul.culley@hp.com | Email: paul.culley@hp.com | |||
| Shah, et. al. Expires January 2007 37 | Shah, et. al. Expires March 2007 37 | |||
| 13 Contributors | 13 Contributors | |||
| Many thanks to the following individuals for their contributions. | Many thanks to the following individuals for their contributions. | |||
| John Carrier | John Carrier | |||
| Adaptec, Inc. | Adaptec, Inc. | |||
| 691 S. Milpitas Blvd. | 691 S. Milpitas Blvd. | |||
| Milpitas, CA 95035 USA | Milpitas, CA 95035 USA | |||
| Phone: +1 (360) 378-8526 | Phone: +1 (360) 378-8526 | |||
| Email: john_carrier@adaptec.com | Email: john_carrier@adaptec.com | |||
| skipping to change at line 1659 ¶ | skipping to change at line 1685 ¶ | |||
| Irvine, CA. USA 92619-7013 | Irvine, CA. USA 92619-7013 | |||
| Phone: +1-949-926-8635 | Phone: +1-949-926-8635 | |||
| email: pthaler@broadcom.com | email: pthaler@broadcom.com | |||
| Ted Compton | Ted Compton | |||
| EMC Corporation | EMC Corporation | |||
| Research Triangle Park, NC 27709, USA | Research Triangle Park, NC 27709, USA | |||
| Phone: 919-248-6075 | Phone: 919-248-6075 | |||
| Email: compton_ted@emc.com | Email: compton_ted@emc.com | |||
| Shah, et. al. Expires January 2007 38 | Shah, et. al. Expires March 2007 38 | |||
| Jim Wendt | Jim Wendt | |||
| Hewlett-Packard Company | Hewlett-Packard Company | |||
| 8000 Foothills Boulevard | 8000 Foothills Boulevard | |||
| Roseville, CA 95747-5668 USA | Roseville, CA 95747-5668 USA | |||
| Phone: +1 (916) 785-5198 | Phone: +1 (916) 785-5198 | |||
| Email: jim_wendt@hp.com | Email: jim_wendt@hp.com | |||
| Mike Krause | Mike Krause | |||
| Hewlett-Packard Company, 43LN | Hewlett-Packard Company, 43LN | |||
| 19410 Homestead Road | 19410 Homestead Road | |||
| skipping to change at line 1714 ¶ | skipping to change at line 1740 ¶ | |||
| Dave Garcia | Dave Garcia | |||
| Hewlett-Packard Company | Hewlett-Packard Company | |||
| 19333 Vallco Parkway | 19333 Vallco Parkway | |||
| Cupertino, Ca. 95014 USA | Cupertino, Ca. 95014 USA | |||
| Phone: +1 (408) 285-6116 | Phone: +1 (408) 285-6116 | |||
| Email: dave.garcia@hp.com | Email: dave.garcia@hp.com | |||
| Jeff Hilland | Jeff Hilland | |||
| Hewlett-Packard Company | Hewlett-Packard Company | |||
| Shah, et. al. Expires January 2007 39 | Shah, et. al. Expires March 2007 39 | |||
| 20555 SH 249 | 20555 SH 249 | |||
| Houston, Tx. 77070-2698 USA | Houston, Tx. 77070-2698 USA | |||
| Phone: +1 (281) 514-9489 | Phone: +1 (281) 514-9489 | |||
| Email: jeff.hilland@hp.com | Email: jeff.hilland@hp.com | |||
| Barry Reinhold | Barry Reinhold | |||
| Lamprey Networks | Lamprey Networks | |||
| Durham, NH 03824 USA | Durham, NH 03824 USA | |||
| Phone: +1 (603) 868-8411 | Phone: +1 (603) 868-8411 | |||
| Email: bbr@LampreyNetworks.com | Email: bbr@LampreyNetworks.com | |||
| Shah, et. al. Expires January 2007 40 | Shah, et. al. Expires March 2007 40 | |||
| 14 Intellectual Property Statement | 14 Intellectual Property Statement | |||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| Intellectual Property Rights or other rights that might be claimed | Intellectual Property Rights or other rights that might be claimed | |||
| to pertain to the implementation or use of the technology described | to pertain to the implementation or use of the technology described | |||
| in this document or the extent to which any license under such | in this document or the extent to which any license under such | |||
| rights might or might not be available; nor does it represent that | rights might or might not be available; nor does it represent that | |||
| it has made any independent effort to identify any such rights. | it has made any independent effort to identify any such rights. | |||
| Information on the procedures with respect to rights in RFC | Information on the procedures with respect to rights in RFC | |||
| documents can be found in BCP 78 and BCP 79. | documents can be found in BCP 78 and BCP 79. | |||
| skipping to change at line 1751 ¶ | skipping to change at line 1777 ¶ | |||
| of such proprietary rights by implementers or users of this | of such proprietary rights by implementers or users of this | |||
| specification can be obtained from the IETF on-line IPR repository | specification can be obtained from the IETF on-line IPR repository | |||
| at http://www.ietf.org/ipr. | at http://www.ietf.org/ipr. | |||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF at ietf- | this standard. Please address the information to the IETF at ietf- | |||
| ipr@ietf.org. | ipr@ietf.org. | |||
| Shah, et. al. Expires January 2007 41 | Shah, et. al. Expires March 2007 41 | |||
| 15 Copyright Notice | 15 Copyright Notice | |||
| Copyright (C) The Internet Society (2006). | Copyright (C) The Internet Society (2006). | |||
| This document is subject to the rights, licenses and restrictions | This document is subject to the rights, licenses and restrictions | |||
| contained in BCP 78, and except as set forth therein, the authors | contained in BCP 78, and except as set forth therein, the authors | |||
| retain all their rights. | retain all their rights. | |||
| This document and the information contained herein are provided on | This document and the information contained herein are provided on | |||
| an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE | an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE | |||
| REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE | REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE | |||
| INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR | INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | |||
| THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| Shah, et. al. Expires January 2007 42 | Shah, et. al. Expires March 2007 42 | |||
| End of changes. 79 change blocks. | ||||
| 149 lines changed or deleted | 175 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||