INTERNET DRAFT Uri Elzur draft-elzur-iwarp-mpa-tcp-analysis-00.txt Broadcom Expires: July, 2003 Bob Teisberg Dwight Barron Paul Culley Hewlett-Packard Jim Pinkerton Microsoft John Carrier Adaptec February 2003 Analysis of MPA over TCP Operations 1 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. 2 Abstract Further explanation and analysis of architectural recommendations contained in the recent Internet-Draft, "Marker PDU Aligned Framing for TCP Specification" [MPA], is provided. The impact of the following three attributes of MPA over TCP is examined: * packing of multiple DDP ULPDUs into one TCP segment; * simplifying the receiver due to transmitter alignment of DDP headers with TCP headers; and * mistakenly attempting to interoperate an MPA-enabled endpoint with a non-MPA-enabled endpoint. Elzur, et al. Expires - August 2003 [Page 1] Analysis of MPA over TCP February 2003 Table of Contents 1 Status of this Memo.........................................1 2 Abstract....................................................1 3 Introduction................................................3 4 Definitions.................................................4 5 Assumptions.................................................6 5.1 MPA is layered beneath DDP [DDP]............................6 5.2 MPA preserves DDP message framing...........................6 5.3 The size of the ULPDU passed to MPA is less than EMSS under normal conditions...........................................6 5.4 Out-of-order placement but NO out-of-order delivery.........6 6 No Packing..................................................7 7 The Value of Header Alignment..............................11 7.1 Impact of lack of Header Alignment on the receiver computational load and complexity..........................12 7.2 Header Alignment effects on TCP wire protocol..............16 8 Interoperating between MPA applications and non-MPA applications...............................................19 8.1 Negotiation of MPA-enabled mode............................20 8.2 Analysis of existing TCP services..........................23 8.2.1 The "Little" TCP Services................................23 8.2.2 ULPs Using Only Text Messages............................24 8.2.3 ULPs with Fixed Initial Message..........................25 8.2.4 Protocols with framed command headers....................25 9 Security Considerations....................................30 10 IANA Considerations........................................31 11 References.................................................32 11.1 Primary References.......................................32 11.2 "Little" TCP Services....................................32 11.3 ULPs using only Text Messages............................33 11.4 ULPs with Fixed Initial Message..........................34 11.5 ULPs with Framed Command Headers.........................34 12 Author's Addresses.........................................36 13 Acknowledgments............................................37 14 Full Copyright Statement...................................38 Table of Figures Figure 1: Non-aligned FPDU freely placed in TCP octet stream....13 Figure 2: Aligned FPDU placed immediately after TCP header......15 Figure 3: MPA Enablement Error..................................19 Figure 4: MPA Transition via Well Known Port or Service Location Protocol..............................................21 Figure 5: MPA Transition via Octet Stream Negotiation...........22 Figure 6: Effect of Improperly MPA-Enabled DNS Resolver.........27 Elzur, et al. Expires - August 2003 [Page 2] Analysis of MPA over TCP February 2003 3 Introduction This paper analyzes the impact of MPA (Marker PDU Aligned Framing for TCP [MPA]) on the TCP sender, receiver, and wire protocol. One of MPA's high level goals is to provide enough information, when combined with the Direct Data Placement Protocol [DDP], to enable out-of-order placement of DDP payload into the final Upper Layer Protocol (ULP) buffer. Note that DDP separates the act of placing data into a ULP buffer from that of notifying the ULP that the ULP buffer is available for use. In DDP terminology, the former is defined as "Placement", and the later is defined as "Delivery". MPA supports in-order delivery of the data to the ULP, including support for direct data placementin the final ULP buffer location when TCP segments arrive out-of-order. Effectively, the goal is to use the pre-posted ULP buffers as the TCP receive buffer, where the reassembly of the ULP Protocol Data Unit (PDU) by TCP (with MPA and DDP) is done in place, in the ULP buffer, with no data copies. The paper walks through the advantages and disadvantages of the two main TCP sender modifications proposed by MPA: 1) that MPA require the TCP sender to do "Header Alignment", where a TCP segment is required to begin with an MPA Framing Protocol Data Unit (FPDU) (if there is payload present) and that there be an integral number of FPDUs in a TCP segment (under conditions where the Path MTU is not changing). 2) that MPA require "no packing" of FPDUs -- i.e. exactly zero or one FPDUs are present in a single TCP segment. The paper concludes that the worst case analysis for "no packing" is bad enough that it out-weighs the advantages and should be removed from the MPA specification. The paper also concludes that the scaling advantages of Header Alignment are strong, based primarily on fairly drastic TCP receive buffer reduction requirements and simplified receive handling. The analysis also shows that there is little effect to TCP wire behavior. Finally, the paper examines interoperability issues between an unmodified TCP stack and a modified TCP stack, for a wide variety of applications and a wide variety of combinations. Elzur, et al. Expires - August 2003 [Page 3] Analysis of MPA over TCP February 2003 4 Definitions DDP - Direct Data Placement Protocol [DDP] Data Delivery (Delivery, Delivered, Delivers) - Delivery is defined as the process of informing the ULP or consumer that a particular Message is available for use. This is specifically different from "Placement", which may generally occur in any order, while the order of "Delivery" is strictly defined. See "Data Placement". Data Placement (Placement, Placed, Places) - For DDP, this term is specifically used to indicate the process of writing to a data buffer by a DDP implementation. DDP Segments carry Placement information, which may be used by the receiving DDP implementation to perform Data Placement of the DDP Segment ULP Payload. See "Data Delivery". EMSS - Effective Maximum Segment Size. EMSS is the smaller of the TCP maximum segment size (MSS) [RFC0793], and the current Path Maximum Transfer Unit (PMTU) [RFC1191]. FPDU - Framing Protocol Data Unit. The unit of data created by a ULP utilizing the MPA framing protocol. A complete MPA FPDU includes the MPA length, MPA payload, MPA CRC and potentially Markers as appropriate. Header Alignment - the property that a TCP segment begins with an FPDU and the TCP segment includes an integer number of FPDUs. MPA - the protocol defined by the "Marker PDU Aligned Framing for TCP Specification" [MPA]. MPA-aware TCP - a TCP implementation that is aware of the receiver efficiencies of MPA Header Alignment and is capable of sending TCP segments that begin with an FPDU. MPA-enabled - MPA is enabled if the MPA protocol is visible on the wire. When the sender is MPA-enabled, it is inserting framing and markers. When the receiver is MPA-enabled, it is interpreting framing and markers. MULPDU - Maximum ULPDU. The current maximum size of the record that is acceptable for DDP to pass to MPA for transmission. PDU - protocol data unit Elzur, et al. Expires - August 2003 [Page 4] Analysis of MPA over TCP February 2003 ULP - Upper Layer Protocol. The protocol layer above the protocol layer currently being referenced. The ULP for MPA is DDP [DDP]. ULPs may be classified as Passive if they are awaiting a connection request or Active if they are initiating a connection request. ULPDU - Upper Layer Protocol Data Unit. The data record defined by the layer above MPA (DDP). ULPDU corresponds to DDP's "DDP Segment". Elzur, et al. Expires - August 2003 [Page 5] Analysis of MPA over TCP February 2003 5 Assumptions 5.1 MPA is layered beneath DDP [DDP] MPA is an adaptation layer between DDP and TCP. DDP requires preservation of DDP segment boundaries and a CRC32C digest covering the DDP header and data. MPA adds these features to the TCP stream so that DDP over TCP has the same basic properties as DDP over SCTP. 5.2 MPA preserves DDP message framing MPA was designed as a framing layer specifically for DDP and was not intended as a general-purpose framing layer for any other ULP using TCP. A framing layer allows ULPs using it to receive indications from the transport layer only when complete ULPDUs are present. As a framing layer, MPA is not aware of the content of the DDP PDU, only that it has received and, if necessary, reassembled a complete PDU for delivery to the DDP. 5.3 The size of the ULPDU passed to MPA is less than EMSS under normal conditions To make reception of a complete DDP PDU on every received segment possible, DDP passes to MPA a PDU that is no larger than the EMSS of the underlying fabric. Each FPDU that MPA creates contains sufficient information for the receiver to directly place the ULP payload in the correct location in the correct receive buffer. Edge cases when this condition does not occur are dealt with, but do not need to be on the fast path 5.4 Out-of-order placement but NO out-of-order delivery DDP receives complete DDP PDUs from MPA. Each DDP PDU contains the information necessary to place its ULP payload directly in the correct location in host memory. Because each DDP segment is self-describing, it is possible for DDP segments received out of order to have their ULP payload placed immediately in the ULP receive buffer. Data delivery to the ULP is guaranteed to be in the order the data was sent. DDP only indicates data delivery to the ULP after TCP has acknowledged the complete byte stream. Elzur, et al. Expires - August 2003 [Page 6] Analysis of MPA over TCP February 2003 6 No Packing MPA as originally proposed requires an MPA-aware TCP sender to segment the datastream in such a way that each TCP segment contains a single FPDU. This requirement is referred to in this document as the "no packing" rule. Let us examine the costs and benefits of the "no packing" rule. The Header Alignment rule means that Placement information is guaranteed to immediately follow the TCP header in the typical case (See Section 7, The Value of Header Alignment, page 11, for the analysis of the value of Header Alignment). If the "no packing" rule is in effect, it further guarantees (in the typical case) that because no additional FPDUs will be in the TCP payload, the receiver does not have to look for additional placement information within the TCP payload. This allows the receiver logic to be simplified. For instance, the receiver logic needs to support one context lookup per frame and one data movement operation per frame. Only in the instance of a PMTU change is it necessary to examine the remainder of the TCP payload for DDP headers. Because PMTU changes are presumed to be rare, the latter case can be delegated to a "slow path" processing mode, while the "fast path" for the common case can be extremely simple. The original argument for "no packing" also examined typical ULP behavior for applications expected to see strong advantages from Direct Data Placement -- specifically transaction based applications or throughput oriented applications. Request/response protocols typically send one FPDU per TCP segment. A response may be short or quite long, but in any case would fill all TCP segments up to the last one, providing TCP segmentation behavior similar to an unmodified TCP stack. A similar argument applies to ULPs optimized for throughput, which send long, uninterrupted sequences of PMTU- sized FPDUs. Thus for many applications the rule has no effect on TCP segmentation, and it enabled simplified receive logic because the receiver did not have to peak into the TCP segment at some arbitrary offset to find the MPA/DDP headers. On the other hand, a ULP which sends long sequences of small FPDUs is strongly affected by the "no packing" rule. Several specific consequences of the "no packing" rule deserve detailed discussion. The "no packing" rule tends to increase the total number of TCP segments transmitted. In the best case, as noted earlier, the number of segments is unchanged. In the worst case, where all Elzur, et al. Expires - August 2003 [Page 7] Analysis of MPA over TCP February 2003 ULPDUs are 1 octet long, the number of segments increases by dozens of times. We will show the penalty for the "no packing" rule for networks using the full Ethernet frames or the smaller default IP frame size. For both calculations, the Minimum FPDU Size (MinFPDUSize) for the worst case ULPDU is the sum of the MPA Header Size (MPAHdrSize), the DDP Header Size (DDPHdrSize), the worst case DDP Payload Size (DDPPayLd), the number of MPA Pad octets (MPAPad) needed to make the FPDU size a multiple of 4, and the MPA CRC size (MPACRC): MPAHdrSize = 2 octets DDPHdrSize = 14 octets DDPPayld = 1 octet MPAPad = 3 octets MPACRC = 4 octets MinFPDUSize = MPAHdrSize + DDPHdrSize + DDPPayld + MPAPad + MPACRC = 2 + 14 + 1 + 3 + 4 = 24 1. Ethernet frames a. The expected Number of Markers in an Ethernet frame (EthNMarkers) is calculated by dividing the MPA Marker Interval (MPAMrkIntvl) into the Ethernet Frame Size (EthFrmSize): MPAMrkIntvl = 512 octets EthFrmSize = 1460 octets of Ethernet payload EthNMarkers =~ EthFrmSize / MPAMrkIntvl =~ 2.9 Elzur, et al. Expires - August 2003 [Page 8] Analysis of MPA over TCP February 2003 b. The expansion of FPDUs into an Ethernet frame (EthExpansion) is the number of times MinFPDUSize octets can be put into an Ethernet Frame (EthFrmSize) after removing the number of octets consumed by markers (MPAMrkSize * EthNMarkers) in the frame: MPAMrkSize = 4 octets EthExpansion = (EthFrmSize - MPAMrkSize * EthNMarkers) / MinFPDUSize =~ (1460 - 4 * 2.9) / 24 =~ 60 2. Default IP packets a. The expected Number of Markers in the Default IP packet (DefNMarkers) is calculated by dividing the MPA Marker Interval (MPAMrkIntvl) into the Default IP Packet Size (DefPktSize): DefPktSize = 536 octets DefNMarkers = DefPktSize / MPAMrkIntvl =~ 1.05 b. The expansion of FPDUs into the Default IP Packet (DefExpansion) is the number of times MinFPDUSize octets can be put into an IP Packet (DefPktSize) after removing the number of octets consumed by markers (MPAMrkSize * DefNMarkers) in the packet: DefExpansion = (DefPktSize - MPAMrkSize * DefNMarkers) / MinFPDUSize =~ (536 - 4 * 1.05) / 24 =~ 22 In the worst case where all ULPDU's are one octet long, the "no packing" rule forces the transmission of roughly 60 times as many packets on Ethernet as MPA with packing allowed. Even with smaller IP packets, the "no packing" rule would force using more than 20 times as many packets. Elzur, et al. Expires - August 2003 [Page 9] Analysis of MPA over TCP February 2003 Clearly the effect of the "no packing" rule on the number of extra packets depends on the nature of the ULP and workload. The worst case involves protocols that send long sequences of small ULPDUs. The existence of protocols such as telnet [RFC0854] shows that at least in some cases real-world applications may tend to approach the worst case. As a direct consequence of the increased number of data segments transmitted, the number of TCP ACKs increases proportionally. A series of minimum-sized ULPDUs which could have been packed into two TCP segments on an Ethernet network, prompting a single ACK in response, would consume 120 segments with the "no packing" rule in effect, resulting in as many as 60 ACKs. Dividing a datastream into a large number of small segments impairs the efficiency of the slow start algorithm. While the number of packets necessary to reach an efficient line utilization is the same as in a conventional TCP implementation, the total payload transmitted during slow start is reduced substantially. In other words, a sender obeying the "no packing" rule could pay a substantial performance penalty during the slow start phase if long sequences of small ULPDUs are used. It is clear from this analysis that the drawbacks of the "no packing" rule are substantial, but the benefits are small. The "no packing" requirement should be changed to state that MPA-aware TCP MAY support packing at the transmitter and MUST support packing at the receiver. However, as noted above, certain applications (e.g., transaction- based applications) will prioritize minimal latency over maximum wire efficiency. In such scenarios it is anticipated there will be minimal opportunity for packing at the transmitter, and receivers may choose to optimize their performance for this anticipated behavior. Elzur, et al. Expires - August 2003 [Page 10] Analysis of MPA over TCP February 2003 7 The Value of Header Alignment Significant receiver optimizations can be achieved when Header Alignment and complete FPDUs are the common case. The optimizations allow utilizing significantly fewer buffers on the receiver and less computation per FPDU. The net effect is the ability to build a "Flow-Through" receiver that enables TCP-based solutions to scale to 10G and beyond in an economical way. The optimizations are especially relevant to hardware implementations of receivers that process multiple protocol layers - Data Link Layer (e.g., Ethernet), Network and Transport Layer (e.g., TCP/IP), and even some ULP on top of TCP (e.g., MPA/DDP). As network speed increases, there is an increasing desire to use a hardware based receiver in order to achieve an efficient high performance solution. A TCP receiver, under worst case conditions, has to allocate buffers (BufferSizeTCP) whose capacities are a function of the bandwidth- delay product. Thus: BufferSizeTCP = K * bandwidth [octets/S] * Delay [S]. Where bandwidth is the end-to-end bandwidth of the connection, delay is the round trip delay of the connection, and K is an implementation dependent constant. Thus BufferSizeTCP scales with the end-to-end bandwidth (10x more buffers for a 10x increase in end-to-end bandwidth). As this buffering approach may scale poorly for hardware or software implementations alike, several approaches allow reduction in the amount of buffering required for high-speed TCP communication. The MPA/DDP approach is to enable the ULP's buffer to be used as the TCP receive buffer. If the application pre-posts a sufficient amount of buffering, and each TCP segment has sufficient information to place the payload into the right application buffer, when an out-of- order TCP segment arrives it could potentially be placed directly in the ULP buffer. However, placement can only be done when a complete FPDU with the placement information is available to the receiver, and the FPDU contents contain enough information to place the data into the correct ULP buffer (e.g., there is a DDP header available). For the case when the FPDU is not aligned with the TCP segment, it may take, on average, 2 TCP segments to assemble one FPDU. Therefore, the receiver has to allocate BufferSizeNAF (Buffer Size, Non-Aligned FPDU) octets: BufferSizeNAF = K1* EMSS * number_of_connections + K2 * EMSS Elzur, et al. Expires - August 2003 [Page 11] Analysis of MPA over TCP February 2003 Where K1 and K2 are implementation dependent constants and EMSS is the effective maximum segment size. For example, a 1 Gbps link with 10,000 connections and an EMSS of 1500B would require 15 MB of memory. Often the number of connections used scales with the network speed, aggravating the situation for higher speeds. A Header Aligned FPDU would allow the receiver to allocate BufferSizeAF (Buffer Size, Aligned FPDU) octets: BufferSizeAF = K2 * EMSS for the same conditions. A Header Aligned receiver may require memory in the range of ~100s of KB - which is feasible for an on- chip memory and enables a "Flow-Through" design, in which the data flows through the NIC and is placed directly in the destination buffer. Assuming most of the connections support Header Alignment, the receiver buffers no longer scale with number of connections. Additional optimizations can be achieved in a balanced I/O sub- system -- where the system interface of the network controller provides ample bandwidth as compared with the network bandwidth. For almost twenty years this has been the case and the trend is expected to continue - while Ethernet speeds have scaled by 1000 (from 10 megabit/sec to 10 gigabit/sec), I/O bus bandwidth of volume CPU architectures has scaled from ~2 MB/sec to ~2 GB/sec (PC-XT bus to PCI-X DDR). Under these conditions, the Header Aligned FPDU approach allows BufferSizeAF to be indifferent to network speed. It is primarily a function of the local processing time for a given frame. Thus when the Header Aligned FPDU approach is used, receive buffering is expected to scale gracefully (i.e. less than linear scaling) as network speed is increased. 7.1 Impact of lack of Header Alignment on the receiver computational load and complexity The receiver must perform IP and TCP processing, and then perform FPDU CRC checks, before it can trust the FPDU header placement information. For simplicity of the description, the assumption is that a FPDU is carried in no more than 2 TCP segments. In reality, with no Header Alignment, an FPDU can be carried by more than 2 TCP segments (e.g., if the PMTU was reduced). Elzur, et al. Expires - August 2003 [Page 12] Analysis of MPA over TCP February 2003 ----++-----------------------------++-----------------------++----- +---||---------------+ +--------||--------+ +----------||----+ | TCP Seg X-1 | | TCP Seg X | | TCP Seg X+1 | +---||---------------+ +--------||--------+ +----------||----+ ----++-----------------------------++-----------------------++----- FPDU #N-1 FPDU #N Figure 1: Non-aligned FPDU freely placed in TCP octet stream The receiver algorithm for processing TCP segments (e.g., TCP segment #X in Figure 1: Non-aligned FPDU freely placed in TCP octet stream) carrying non-aligned FPDUs (in-order or out-of-order) includes: 1. Data Link Layer processing (whole frame) - typically including a CRC calculation. 2. Network Layer processing (assuming not an IP fragment, the whole Data Link Layer frame contains one IP datagram. IP fragments should be reassembled in a local buffer. This is not a performance optimization goal) 3. Transport Layer processing -- TCP protocol processing, header and checksum checks. a. Classify incoming TCP segment using the 5 tuple (IP SRC, IP DST, TCP SRC Port, TCP DST Port, protocol) 4. Find FPDU message boundaries. a. Get MPA state information for the connection i. If the TCP segment is in-order, use the receiver managed MPA state information to calculate where the previous FPDU message (#N-1) ends in the current TCP segment X. (previously, when the MPA receiver processed the first part of FPDU #N-1, it calculated the number of bytes remaining to complete FPDU #N-1 by using the MPA Length field). .1. Get the stored partial CRC for FPDU #N-1 .2. Complete CRC calculation for FPDU #N-1 data (first portion of TCP segment #X) .3. Check CRC calculation for FPDU #N-1 Elzur, et al. Expires - August 2003 [Page 13] Analysis of MPA over TCP February 2003 .4. If no FPDU CRC errors, placement is allowed .5. Locate the local buffer for the first portion of FPDU#N-1, CopyData(local buffer of first portion of FPDU #N-1, host buffer address, length) .6. Compute host buffer address for second portion of FPDU #N-1 .7. CopyData (local buffer of second portion of FPDU #N- 1, host buffer address for second portion, length) .8. Calculate the octet offset into the TCP segment for the next FPDU #N. .9. Start Calculation of CRC for available data for FPDU #N .10. Store partial CRC results for FPDU #N .11. Store local buffer address of first portion of FPDU #N .12. No further action is possible on FPDU #N, before it is completely received ii. If TCP out-of-order, receiver must buffer the data until at least one complete FPDU is received. Typically buffering for more than one TCP segment per connection is required. Use the MPA based Markers to calculate where FPDU boundaries are. .1. When a complete FPDU is available, a similar procedure to the in-order algorithm above is used. There is additional complexity, though, because when the missing segment arrives, this TCP segment must be run through the CRC engine after the CRC is calculated for the missing segment. If we assume Header Alignment, the following diagram and the algorithm below apply. Note that when using MPA, the receiver is assumed to actively detect presence or loss of Header Alignment for every TCP segment received. Elzur, et al. Expires - August 2003 [Page 14] Analysis of MPA over TCP February 2003 +--------------------------+ +--------------------------+ +--|--------------------------+ +--|--------------------------+ | | TCP Seg X | | | TCP Seg X+1 | +--|--------------------------+ +--|--------------------------+ +--------------------------+ +--------------------------+ FPDU #N FPDU #N+1 Figure 2: Aligned FPDU placed immediately after TCP header The receiver algorithm for Header Aligned frames (in-order or out- of-order) includes: 1. Data Link Layer processing (whole frame) - typically including a CRC calculation. 2. Network Layer processing (assuming not an IP fragment, the whole Data Link Layer frame contains one IP datagram. IP fragments should be reassembled in a local buffer. This is not a performance optimization goal) 3. Transport Layer processing -- TCP protocol processing, header and checksum checks. a. Classify incoming TCP segment using the 5 tuple (IP SRC, IP DST, TCP SRC Port, TCP DST Port, protocol) 4. Check for Header Alignment. (Described in detail in [MPA] section 7.4). Assuming Header Alignment for the rest of the algorithm below. a. If the header is not aligned, see the algorithm defined in the prior section. 5. If TCP is in-order or out-of-order the MPA header is at the beginning of the current TCP payload. Get the FPDU length from the FPDU header. 6. Calculate CRC over FPDU 7. Check CRC calculation for FPDU #N 8. If no FPDU CRC errors, placement is allowed 9. CopyData(TCP segment #X, host buffer address, length) 10. Loop to #5 until all the FPDUs in the TCP segment are consumed in order to handle FPDU packing (see section 6). Elzur, et al. Expires - August 2003 [Page 15] Analysis of MPA over TCP February 2003 Implementation note: In both cases the receiver has to classify the incoming TCP segment and associate it with one of the flows it maintains. In the case of no Header Alignment, the receiver is forced to classify incoming traffic before it can calculate the FPDU CRC. In the case of Header Alignment the operations order is left to the implementor. The Header Aligned receiver algorithm is significantly simpler. There is no need to locally buffer portions of FPDUs. Accessing state information is also substantially simplified - the normal case does not require retrieving information to find out where a FPDU starts and ends or retrieval of a partial CRC before the CRC calculation can commence. This avoids adding internal latencies, having multiple data passes through the CRC machine, or scheduling multiple commands for moving the data to the host buffer. The aligned FPDU approach is useful for in-order and out-of-order reception. The receiver can use the same mechanisms for data storage in both cases, and only needs to account for when all the TCP segments have arrived to enable delivery. . The Header Alignment, along with the high probability that at least one complete FPDU is found with every TCP segment, allows the receiver to perform data placement for out-of- order TCP segments with no need for intermediate buffering. Essentially the TCP receive buffer has been eliminated and TCP reassembly is done in place within the ULP buffer. In case Header Alignment is not found, the receiver should follow the algorithm for non aligned FPDU reception which may be slower and less efficient. 7.2 Header Alignment effects on TCP wire protocol An MPA-aware TCP exposes its EMSS to MPA. MPA uses the EMSS to calculate its MULPDU, which it then exposes to DDP, its ULP. DDP uses the MULPDU to segment its payload so that each FPDU sent by MPA fits completely into one TCP segment. This has no impact on wire protocol and exposing this information is already supported on many TCP implementations, including all modern flavors of BSD networking, through the TCP_MAXSEG socket option. In the common case, the ULP (i.e. DDP over MPA) messages provided to the TCP layer are segmented to MULPDU size. It is assumed that the ULP message size is bounded by MULPDU, such that a single ULP message can be encapsulated in a single TCP segment. Therefore, in the common case, there is no increase in the number of TCP segments emitted. For smaller ULP messages, the sender can also apply packing, i.e. the sender packs as many complete FPDUs as possible into one TCP segment (See Section 6, No Packing, on page 7). The requirement to always have a complete FPDU may increase the number Elzur, et al. Expires - August 2003 [Page 16] Analysis of MPA over TCP February 2003 of TCP segments emitted. Typically, a ULP message size varies from few bytes to multiple EMSS (e.g., 64 Kbytes). In some cases the ULP may post more than one message at the time for transmission, giving the sender an opportunity for packing. In the case where more than one FPDU is available for transmission and the FPDUs are encapsulated into a TCP segment and there is no room in the TCP segment to include the next complete FPDU, another TCP segment is sent. In this corner case some of the TCP segments are not full size. In the worst case scenario, the ULP may choose a FPDU size that is EMSS/2 +1 and has multiple messages available for transmission. For this poor choice of FPDU size, the average TCP segment size is therefore about 1/2 of the EMSS and the number of TCP segments emitted is approaching 2x of what is possible without the requirement to encapsulate an integer number of complete FPDUs in every TCP segment. This is a dynamic situation that only lasts for the duration where the sender ULP has multiple non-optimal messages for transmission and this causes a minor impact on the wire utilization. However, it is not expected that requiring Header Alignment will have a measurable impact on wire behavior of most applications. Throughput applications with large I/Os are expected to take full advantage of the EMSS. Another class of applications with many small outstanding buffers (as compared to EMSS) is expected to use packing when applicable. Transaction oriented applications are also optimal. TCP retransmission is another area that can affect sender behavior. TCP supports retransmission of the exact, originally transmitted segment (see [RFC0793] section 2.6, [RFC0793] section 3.7 "managing the window" and [RFC1122] section 4.2.2.15 ). In the unlikely event that part of the original segment has been received and acknowledged by the remote peer (e.g., a resegmenting middlebox, as documented in [MPA]), a better available bandwidth utilization may be possible by re-transmitting only the missing octets. If an MPA-aware TCP retransmits complete FPDUs, there may be some marginal bandwidth loss. Another area where a change in the TCP segment number may have impact is that of Slow Start and Congestion Avoidance. Slow-start exponential increase is measured in segments per second, as the algorithm focuses on the overhead per segment at the source for congestion that eventually results in dropped segments. Slow-start exponential bandwidth growth for MPA-aware TCP is similar to any TCP implementation. Congestion Avoidance allows for a linear growth in available bandwidth when recovering after a packet drop. Similar to the analysis for slow-start, MPA-aware TCP doesn't change the behavior of the algorithm. Therefore the average size of the segment versus EMSS is not a major factor in the assessment of the bandwidth Elzur, et al. Expires - August 2003 [Page 17] Analysis of MPA over TCP February 2003 growth for a sender. Both Slow Start and Congestion Avoidance for an MPA-aware TCP will behave similarly to any TCP sender and allow an MPA-aware TCP to enjoy the theoretical performance limits of the algorithms. In summary, the ULP messages generated at the sender (e.g., the amount of messages grouped for every transmission request) and message size distribution has the most significant impact over the number of TCP segments emitted. The worst case effect for certain ULPs (with average message size of EMSS/2+1 to EMSS), is bounded by an increase of up to 2x in the number of TCP segments and acknowledges. In reality the effect is expected to be marginal. See the MPA specification for additional documentation on corner cases which are expected to lose Header Alignment and cause the previously documented algorithm to be executed. Elzur, et al. Expires - August 2003 [Page 18] Analysis of MPA over TCP February 2003 8 Interoperating between MPA applications and non-MPA applications ULPs that use MPA are required to enable MPA at an agreed-upon point in the TCP datastream. If they fail to do so, the condition illustrated in Figure 3: MPA Enablement Error arises. This condition is referred to as an MPA enablement error. With the understanding that MPA enablement errors should not occur, some concerns have been raised about their effects if they do. The remainder of this section addresses those concerns for a variety of ULPs. MPA is enabled if the MPA protocol is visible on the wire. When the sender is MPA-enabled, it is inserting framing and markers. When the receiver is MPA-enabled, it is interpreting framing and markers. MPA enablement is orthogonal to MPA awareness. MPA can be enabled on a strictly layered MPA implementation running over a non-MPA- aware TCP. It can be disabled on an MPA-aware TCP implementation. When first enabled, MPA always sends a marker preceding the first FPDU. Because the marker is located on the boundary between FPDUs, its initial value is always 0. Consequently, any ULP which never starts its datastream with four zero octets is easily proved safe with respect to MPA enablement errors. Node A Node B (MPA active) (MPA not active) +---------------+ +---------------+ | ULP | | ULP | +---------------+ | | | MPA | | | +---------------+ +---------------+ | TCP | | TCP | +---------------+ +---------------+ | IP | | IP | +---------------+ +---------------+ | | +--------------------------+ Figure 3: MPA Enablement Error Elzur, et al. Expires - August 2003 [Page 19] Analysis of MPA over TCP February 2003 8.1 Negotiation of MPA-enabled mode Transition to MPA can be accomplished by three possible methods examined herein. The first two methods involve the use of specific TCP ports for ULPs using MPA, either by use of a well known IANA port or use of a service locator protocol. In these usage models it is anticipated that both the Active and Passive ULPs will enable MPA mode operation for their respective transmitters and receivers prior to any data exchange. The third model is by negotiation of MPA transition by the ULP using octet stream messages to accomplish a ULP specific , , three way exchange. Transition to MPA framing will cause the transmitter to always insert a 4 octet marker modulo the marker interval, and the receiver to check the MPA CRC. The first MPA marker is defined to have a value of 0, and it will always follow the last expected octet to be transferred in octet stream mode. This leads to two distinct error detection scenarios. Receivers that are expecting MPA framing will quickly detect a CRC error in addition to any ULP header errors (e.g., DDP) if given octet stream data from a non MPA-enabled transmitter. This will cause MPA to drop the connection. Receivers that are not expecting MPA framing will see four octets of zeros immediately in the octet stream at the point the transition to MPA was expected to occur. Anticipated error cases are examined in the following figures. Figure 4: MPA Transition via Well Known Port or Service Location Protocol deals with the cases where the transition to MPA is expected prior to data exchange and examines the four possible combinations of mismatching MPA-enabled endpoints with non-MPA- enabled endpoints. These error scenarios imply a configuration error between active and passive nodes and are likely to simultaneously represent a configuration error of the ULPs as well. Figure 5: MPA Transition via Octet Stream Negotiation examines cases where transition to MPA mode is by exchange of ULP specific MPA Hello/ACK messages. Elzur, et al. Expires - August 2003 [Page 20] Analysis of MPA over TCP February 2003 +-------------+---------------------------+---------------------------+ | | MPA-Enabled | Non-MPA-Enabled | | | Passive | Passive | | | | | +-------------+---------------------------+---------------------------+ | MPA-Enabled | First octets transmitted | Passive receiver does not | | Active | are MPA mode. | understand MPA header, | | | | which starts with 0. | | | Receivers check for MPA | See section 8.2 for | | | framing. | anticipated behavior from | | | | existing protocols that | | | Successful Transition to | run over TCP. | | | MPA mode. | | | | | Active receiver expects | | | | MPA framing and CRC, | | | | which will not be | | | | present. Expect quick | | | | detection and closing | | | | the connection in error. | | | | | +-------------+---------------------------+---------------------------+ | Non- | First octets transmitted | Normal octet stream mode | | MPA-Enabled | in octet streaming mode. | operation could occur, | | Active | | but this indicates a con- | | | Passive receiver expects | figuration error that | | | MPA framing and CRC, | should be detected by the | | | which will not be present.| ULP at either node. | | | Expect quick detection | | | | and closing the connec- | | | | tion in error. | | | | | | +-------------+---------------------------+---------------------------+ Figure 4: MPA Transition via Well Known Port or Service Location Protocol Elzur, et al. Expires - August 2003 [Page 21] Analysis of MPA over TCP February 2003 +-------------+----------------------------+--------------------------+ | | MPA-Enabled | Non-MPA-Enabled | | | Passive | Passive | | | | | +-------------+----------------------------+--------------------------+ | MPA-Enabled | Completes Hello, Hello | Passive does not under- | | Active | Ack exchange. | stand MPA Hello sequence | | | | in octet-stream mode, | | | Successful Transition | either | | | to MPA mode. | | | | | * Passive side ULP dis- | | | | connects due to ULP | | | | protocol error | | | | | | | | * Active side ULP times | | | | out waiting for MPA | | | | Hello ACK. | | | | | +-------------+----------------------------+--------------------------+ | Non- | Active side sends an octet | Normal octet-stream mode | | MPA-Enabled | stream sequence that looks | operation | | Active | like MPA Hello without | | | | being aware of MPA. | | | | Passive side ULP sees this | | | | message and mistakenly | | | | tries to transition to MPA | | | | mode. This situation would | | | | most likely be the result | | | | of a ULP protocol error. | | | | Passive side will trans- | | | | ition to MPA mode on the | | | | receiver and transmit MPA | | | | Hello Ack, resulting in | | | | one of two error cases: | | | | | | | | * MPA Hello Ack should | | | | cause a ULP protocol | | | | error at the Active | | | | side receiver | | | | | | | | * Passive side receiver | | | | will expect MPA framing | | | | and CRC, which will | | | | fail very quickly | | | | | | +-------------+----------------------------+--------------------------+ Figure 5: MPA Transition via Octet Stream Negotiation Elzur, et al. Expires - August 2003 [Page 22] Analysis of MPA over TCP February 2003 8.2 Analysis of existing TCP services The following sections examine the initial octet stream exchanges for many of the ULPs used over a TCP transport to determine behavior if they were inadvertently subjected to MPA framed messages. It should be kept in mind that if the procedures described in the preceding section are followed, none of the conditions analyzed here are possible. If a ULP is determined to be unsafe with respect to MPA enablement errors, it means only that the ULP does not protect itself against connection attempts by clients using some other ULP. Any such protection is the responsibility of the ULP, not MPA. 8.2.1 The "Little" TCP Services There is a group of TCP services, collectively referred to as the "little" TCP services, which are occasionally useful for debugging networks. Normally the "client" for these services is telnet, which simply sends all typed character and displays all received characters verbatim. Most of the "little" services are easily proved safe. The echo [RFC0862] server copies all received data back to the client. Its behavior is identical even if the echo client or server is accidentally MPA-enabled. The discard [RFC0863] server never sends anything and discards everything it receives. Neither the client nor the server can detect the presence or absence of MPA on either side. The chargen [RFC0864] server ignores all data sent to it and sends a continuous stream of data. The format of the data is unspecified, although printable, ASCII text is recommended. In any case, a non- MPA-enabled chargen client receiving MPA frames will simply treat them as data. An MPA-enabled chargen client receiving non-MPA frames will detect a bad initial marker or a CRC error in the first "frame". The quote [RFC0865] server ignores all data sent to it and sends a short octet string before closing the connection. The format of the data is unspecified, although printable, ASCII text is recommended. In any case, a non-MPA-enabled quote client receiving MPA frames will simply treat them as data. An MPA-enabled quote client receiving non-MPA frames will almost certainly detect a CRC error in the first "frame". In the unlikely event that the quote of the day is a properly formed MPA frame, an MPA-enabled client will treat the "payload" of the bogus frame as data. The daytime [RFC0867] server ignores all data sent to it and sends a text timestamp. A non-MPA-enabled daytime client receiving MPA Elzur, et al. Expires - August 2003 [Page 23] Analysis of MPA over TCP February 2003 frames will simply treat them as data. An MPA-enabled daytime client receiving non-MPA frames will detect a CRC error in the first "frame". The time [RFC0868] server ignores all data sent to it and sends a 32-bit binary timestamp representing seconds since 00:00 GMT 01 January, 1900. The timestamp will wrap sometime in 2036. An MPA- enabled time client receiving non-MPA frames will attempt interpret the time as an initial marker. If the timestamp is 0, it will be considered valid, but the server will close the connection before sending an MPA header. If the timestamp is not 0, it will be rejected. A non MPA-enabled time client receiving MPA frames will interpret the initial marker as a 0 timestamp and display the time as 00:00 GMT 01 January, 1900. 8.2.2 ULPs Using Only Text Messages Many ULPs format all TCP payload as lines of printable, ASCII text. Such ULPs may all be analyzed together. If a non-MPA-enabled endpoint A somehow becomes connected to an MPA- enabled endpoint B, the precise sequence of events depends on whether A or B is the first to send. If A sends first, B expects the first four octets to be an initial marker, which must be all zeros. Since A sends printable, ASCII text, and 0h is not printable ASCII, then B detects a protocol violation and should terminate the connection. If B sends first, A expects printable, ASCII text, but receives four octets of zeros, so A detects a protocol violation and should terminate the connection. ULPs of this type are: NNTP [RFC0977] finger [RFC1288] gopher [RFC1436] the first two octets are always CR LF POP3 [RFC1939] IMAP4 [RFC2060] IRC client [RFC2812] IRC server [RFC2813] BEEP [RFC3081] SIP [RFC3261] Elzur, et al. Expires - August 2003 [Page 24] Analysis of MPA over TCP February 2003 whois [RFC0954] TACACS [RFC1492] ident [RFC1413] rwhois [RFC2167] ACAP [RFC2244] TIP [RFC2371] 8.2.3 ULPs with Fixed Initial Message Several ULPs begin every connection with a fixed octet-string. These ULPs are safe with respect to MPA enablement errors if the first four octets of the initial string cannot be mistaken for valid initial marker (four zero octets). These ULPs are: HTTP/1.0 [RFC1945] Initial string begins with "HTTP" RTSP [RFC2326] Initial string begins with "RTSP" HTTP/1.1 [RFC2616] Initial string begins with "HTTP" SMTP [RFC2821] Initial string begins with "HELO" or "EHLO" CIFS [CIFS] Initial string begins with "\xffSMB" gnutella [GNUT] Initial string begins with "GNUTELLA CONNECT" 8.2.4 Protocols with framed command headers Several protocols always exchange command header. This analysis looks at the impact of the first four octets of an MPA datastream being interpreted as a command header and vice versa. 8.2.4.1 iSCSI The first messages on any iSCSI [iSCSI] connection are a login exchange. Since the first octet of a login request or response is a login command code (value 3), iSCSI is safe with respect to MPA enablement errors. 8.2.4.2 iSNS The first two octets of every iSNS [iSNS] transmission are the protocol version, which is currently 1. Consequently iSNS is safe with respect to MPA enablement errors. Elzur, et al. Expires - August 2003 [Page 25] Analysis of MPA over TCP February 2003 8.2.4.3 DNS In many cases, DNS [RFC1035] uses UDP, rendering MPA irrelevant. This section analyzes the implications of MPA enablement errors in the case where DNS runs over TCP. Every DNS message sent over TCP is preceded by a two-octet length field. Consequently, the initial marker of an MPA datastream would be interpreted by a non-MPA-enabled receiver as a length field of 0. The precise consequences of the error depend on whether the receiver is the server or the resolver (i.e. client). If a non-MPA-enabled resolver connects to an (improperly) MPA- enabled DNS server, the server will interpret the length field of the first request as an invalid initial marker and terminate the connection. This configuration is safe with respect to MPA enablement errors. If an (improperly) MPA-enabled client connects to a non-MPA-enabled DNS server, the server will interpret the upper 16 bits of the initial marker as a length field of 0, indicating a null message. The server might be expected to respond to a null message with a format error, which is a safe outcome. However, [RFC1035] does not mandate this behavior. The receiver could instead simply discard the "null message" and continue. This latter case requires more analysis. Elzur, et al. Expires - August 2003 [Page 26] Analysis of MPA over TCP February 2003 intended by resolver interpreted by server 0 1 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-------------------------------+ +-------------------------------+ |marker[0..15] = 0x0000 | |length = 0x0000 (null message) | +-------------------------------+ +-------------------------------+ |marker[16..31] = 0x0000 | |length = 0x0000 (null message) | +-------------------------------+ +-------------------------------+ |MULPDU length | |message length | +-------------------------------+ +-------------------------------+ |ID | |ID | +-+-------+-+-+-+-+-----+-------+ +-+-------+-+-+-+-+-----+-------+ |Q| Opcode|A|T|R|R| 0 | RCODE | |Q| Opcode|A|T|R|R| 0 | RCODE | |R| |A|C|D|A| | | |R| |A|C|D|A| | | +-+-------+-+-+-+-+-----+-------+ +-+-------+-+-+-+-+-----+-------+ |QDCOUNT | |QDCOUNT | +-------------------------------+ +-------------------------------+ |ANCOUNT | |ANCOUNT | +-------------------------------+ +-------------------------------+ |NSCOUNT | |NSCOUNT | +-------------------------------+ +-------------------------------+ |ARCOUNT | |ARCOUNT | +-------------------------------+ +-------------------------------+ |data | |data | | ... | | ... | +-------------------------------+ +-------------------------------+ |pad // | |second message | +-------------------------------+ | | |CRC[0-15] | | | +-------------------------------+ | | |CRC[16-31] | | | +-------------------------------+ +-------------------------------+ Figure 6: Effect of Improperly MPA-Enabled DNS Resolver Figure 6: Effect of Improperly MPA-Enabled DNS Resolver illustrates the correspondence between protocol fields as intended by the sender and interpreted by the receiver. The initial marker would be interpreted as a pair of null messages. The server would then interpret the MULPDU length field as a DNS request length. As it happens, the length field is correct, and the subsequent payload fields line up properly, so the server will correctly interpret the query and respond to it. The response will have a non-zero length field, which MPA at the resolver will interpret as the upper half of an erroneous initial marker, terminating the connection. Elzur, et al. Expires - August 2003 [Page 27] Analysis of MPA over TCP February 2003 Meanwhile the server will continue processing the incoming datastream, interpreting the first 16 bits of the concatenated pad and CRC as the length field of a second query. The second "query" will be null, incomplete or too short to be valid. If the "query" is null, the server will interpret the next 16 bits as a length, and so forth. Eventually it will either safely run out of data or detect a "query" that is incomplete or too short. If the "query" is incomplete, the server will wait for additional payload, doing nothing until the resolver disconnects; if it is too short, the server will respond with a format error. In either case, no harm results. The interaction between MPA and DNS is complex, but as the analysis shows, even in the worst case DNS is safe with respect to MPA enablement errors. 8.2.4.4 LPR The first octet of every request made to the LPR [RFC1179] daemon is a printable ASCII character or a command code from the set {1,2,3,4,5}. Consequently LPR is safe with respect to MPA enablement errors. 8.2.4.5 Kerberos The first octet of every Kerberos [RFC1510] request is the version number (currently 5). Consequently Kerberos is safe with respect to MPA enablement errors. 8.2.4.6 BGP-4 The first PDU in the BGP-4 protocol [RFC1771] is an OPEN with a marker (covering the first four octets) of all one bits. Consequently BGP-4 is safe with respect to MPA enablement errors. 8.2.4.7 LDAP v2 and LDAP v3 All LDAP [RFC1777, RFC2251] messages are encapsulated in an LDAPMessage, which is defined as a SEQUENCE under ASN.1 Basic Encoding Rules. Since the leading octet of a SEQUENCE is an ASN.1 BER type code of 0x30, no LDAP datastream can begin with 4 zero octets. Consequently LDAP is safe with respect to MPA enablement errors. 8.2.4.8 RTP The most significant two bits of the first octet of an RTP [RFC1889] payload contain the protocol version number (currently 2). Consequently RTP is safe with respect to MPA enablement errors. Elzur, et al. Expires - August 2003 [Page 28] Analysis of MPA over TCP February 2003 8.2.4.9 Socks The first octet of a SOCKS [RFC1928] datastream contain the protocol version number (currently 5). Consequently SOCKS is safe with respect to MPA enablement errors. 8.2.4.10 TLS The first octet of a TLS [RFC2246] datastream is a command code from the set {20,21,22,23,255}. Consequently TLS is safe with respect to MPA enablement errors. This implies further than any ULP using TLS is safe with respect to MPA enablement errors. 8.2.4.11 SLP V2 The first octet of an SLPv2 [RFC2608] datastream is the protocol version number (currently 2). Consequently SLPv2 is safe with respect to MPA enablement errors. Elzur, et al. Expires - August 2003 [Page 29] Analysis of MPA over TCP February 2003 9 Security Considerations This document does not define protocols; hence it does not create any new security considerations. Elzur, et al. Expires - August 2003 [Page 30] Analysis of MPA over TCP February 2003 10 IANA Considerations This Internet Draft does not define any new protocols, thus there are no IANA considerations. Elzur, et al. Expires - August 2003 [Page 31] Analysis of MPA over TCP February 2003 11 References 11.1 Primary References [RFC0793] J. Postel, "Transmission Control Protocol", RFC 793, September 1981. [RFC0854] J. Postel & J.K. Reynolds, "Telnet Protocol Specification", RFC 854, May 1983. [RFC1122] R. Braden, Ed., "Requirements for Internet Hosts - Communication Layers", RFC 1122, October 1989. [RFC1191] J.C. Mogul & S.E. Deering, "Path MTU discovery", RFC 1191, November 1990. [RFC2026] S. Bradner, "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996. [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [MPA] P. Culley et al., "Marker PDU Aligned Framing for TCP Specification", draft-cully-iwarp-mpa-01.txt (work in progress), October 2002 [RDMAP] R. Recio et al., "RDMA Protocol Specification", draft-recio- iwarp-01.txt (work in progress), October 2002 [DDP] H. Shah et al., "Direct Data Placement over Reliable Transports", draft-shah-iwarp-ddp-01.txt (work in progress), October 2002 11.2 "Little" TCP Services [RFC0862] J. Postel, "Echo Protocol", RFC 862, May 1983. [RFC0863] J. Postel, "Discard Protocol", RFC 863, May 1983. [RFC0864] J. Postel, "Character Generator Protocol", RFC 864, May 1983. [RFC0865] J. Postel, "Quote of the Day Protocol", RFC 865, May 1983. [RFC0867] J. Postel, "Daytime Protocol", RFC 867, May 1983. [RFC0868] J. Postel & K. Harrenstien, "Time Protocol", RFC 868, May 1983. Elzur, et al. Expires - August 2003 [Page 32] Analysis of MPA over TCP February 2003 11.3 ULPs using only Text Messages [RFC0977] B. Kantor & P. Lapsley, "Network News Transfer Protocol", RFC 977, February 1986. [RFC1288] D. Zimmerman, "The Finger User Information Protocol", RFC 1288, December 1991. [RFC1436] F. Anklesaria, et al., "The Internet Gopher Protocol (a distributed document search and retrieval protocol)", RFC 1436, March 1993. [RFC1939] J. Myers & M. Rose, "Post Office Protocol - Version 3", RFC 1939, May 1996. [RFC2060] M. Crispin, "Internet Message Access Protocol - Version 4rev1", RFC 2060, December 1996. [RFC2812] C. Kalt, "Internet Relay Chat: Client Protocol", RFC 2812, April 2000. [RFC2813] C. Kalt, "Internet Relay Chat: Server Protocol", RFC 2813, April 2000. [RFC3081] M. Rose, "Mapping the BEEP Core onto TCP", RFC 3081, March 2001. [RFC3261] J. Rosenberg, et al., "SIP: Session Initiation Protocol", RFC 3261, June 2002. [RFC0954] K. Harrenstien, et al., "NICNAME/WHOIS", RFC 954, October 1985. [RFC1492] C. Finseth, "An Access Control Protocol, Sometimes Called TACACS", RFC 1492, July 1993. [RFC1413] M. St. Johns, "Identification Protocol", RFC 1413, February 1993. [RFC2167] S. Williamson, et al., "Referral Whois (RWhois) Protocol V1.5", RFC 2167, June 1997. [RFC2244] C. Newman & J. G. Myers, "ACAP -- Application Configuration Access Protocol", RFC 2244, November 1997. [RFC2371] J. Lyon, et al., "Transaction Internet Protocol Version 3.0", RFC 2371, July 1998. Elzur, et al. Expires - August 2003 [Page 33] Analysis of MPA over TCP February 2003 11.4 ULPs with Fixed Initial Message [RFC1945] T. Berners-Lee, et al., "Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, May 1996. [RFC2326] H. Schulzrinne, et al., "Real Time Streaming Protocol (RTSP)", RFC 2326, April 1998. [RFC2616] R. Fielding, et al., "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. [RFC2821] J. Klensin, ed., "Simple Mail Transfer Protocol", RFC 2821, April 2001. [CIFS] Storage Networking Industry Association, "Common Internet File System (CIFS) Technical Reference", http://www.snia.org/tech_activities/CIFS/CIFS-TR-1p00_FINAL.pdf, March 2002. [GNUT] Anonymous, "The Gnutella Protocol Specification v0.4", http://www9.limewire.com/developer/gnutella_protocol_0.4.pdf. 11.5 ULPs with Framed Command Headers [iSCSI] J. Satran et al., "iSCSI", draft-ietf-iscsi-19.txt (work in progress), January 2003 [iSNS] J. Tseng et al., "Internet Storage Name Service (iSNS)", draft-ietf-ips-isns-16.txt (work in progress), January 2003 [RFC1035] P.V. Mockapetris, "Domain names - implementation and specification", RFC 1035, November 1987. [RFC1179] L. McLaughlin, "Line printer daemon protocol", RFC 1179, August 1990. [RFC1510] J. Kohl & C. Neuman, "The Kerberos Network Authentication Service (V5)", RFC 1510, September 1993. [RFC1771] Y. Rekhter & T. Li, "A Border Gateway Protocol 4 (BGP-4)", RFC 1771, March 1995 [RFC1777] W. Yeong, et al., "Lightweight Directory Access Protocol", RFC 1777, March 1995. [RFC2251] M. Wahl, et al., "Lightweight Directory Access Protocol (v3)", RFC 2251, December 1997. Elzur, et al. Expires - August 2003 [Page 34] Analysis of MPA over TCP February 2003 [RFC1889] H. Schulzrinne, et al., "RTP: A Transport Protocol for Real-Time Applications", RFC 1889, January 1996. [RFC1928] M. Leech, et al., "SOCKS Protocol Version 5", RFC 1928,. March 1996. [RFC2246] T. Dierks & C. Allen, "The TLS Protocol Version 1.0", RFC 2246, January 1999. [RFC2608] E. Guttman, et al., "Service Location Protocol, Version 2", RFC 2608, June 1999. Elzur, et al. Expires - August 2003 [Page 35] Analysis of MPA over TCP February 2003 12 Author's Addresses Uri Elzur Broadcom Corporation 16215 Alton Parkway Irvine, CA 92619-7013 USA Phone: +1 (949) 585-6432 Email: Uri@Broadcom.com James Pinkerton Microsoft Corporation One Microsoft Way Redmond, WA 98052 USA Phone: +1 (425) 705-5442 Email: jpink@microsoft.com Robert Teisberg Hewlett-Packard Company 14231 Tandem Blvd. Austin, TX 78728 Phone: +1 (512) 432-8119 Email: Robert.Teisberg@hp.com Dwight Barron Hewlett-Packard Company 20555 SH 249 Houston, TX 77070-2698 USA Phone: +1 (281) 514-2769 Email: Dwight.Barron@Hp.com John Carrier Adaptec, Inc. 691 S. Milpitas Blvd. Milpitas, CA 95035 USA Phone: +1 (360) 378-8526 Email: john_carrier@adaptec.com Paul R. Culley Hewlett-Packard Company 20555 SH 249 Houston, TX 77070-2698 USA Phone: +1 (281) 514-5543 Email: paul.culley@hp.com Elzur, et al. Expires - August 2003 [Page 36] Analysis of MPA over TCP February 2003 13 Acknowledgments Vadim Makhervaks IBM Corp., Haifa Development Lab Haifa, Israel Phone: +972-4-829-6537 Email: VADIK@il.ibm.com Renato Recio IBM Corp. 11501 Burnett Road Austin, Tx. USA 78758 Phone: 512-838-3685 Email: recio@us.ibm.com Tom Talpey Network Appliance 375 Totten Pond Road Waltham, MA 02451 USA Phone: +1 (781) 768-5329 EMail: thomas.talpey@netapp.com Patricia Thaler Agilent Technologies, Inc. 1101 Creekside Ridge Drive, #100 M/S-RG10 Roseville, CA 95678 Phone: +1-916-788-5662 Email: pat_thaler@agilent.com Elzur, et al. Expires - August 2003 [Page 37] Analysis of MPA over TCP February 2003 14 Full Copyright Statement Copyright (C) The Internet Society (2003). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Funding for the RFC Editor function is currently provided by the Internet Society. Elzur, et al. Expires - August 2003 [Page 38]