diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6182.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6182.txt')
-rw-r--r-- | doc/rfc/rfc6182.txt | 1571 |
1 files changed, 1571 insertions, 0 deletions
diff --git a/doc/rfc/rfc6182.txt b/doc/rfc/rfc6182.txt new file mode 100644 index 0000000..d47bd33 --- /dev/null +++ b/doc/rfc/rfc6182.txt @@ -0,0 +1,1571 @@ + + + + + + +Internet Engineering Task Force (IETF) A. Ford +Request for Comments: 6182 Roke Manor Research +Category: Informational C. Raiciu +ISSN: 2070-1721 M. Handley + University College London + S. Barre + Universite catholique de Louvain + J. Iyengar + Franklin and Marshall College + March 2011 + + + Architectural Guidelines for Multipath TCP Development + +Abstract + + Hosts are often connected by multiple paths, but TCP restricts + communications to a single path per transport connection. Resource + usage within the network would be more efficient were these multiple + paths able to be used concurrently. This should enhance user + experience through improved resilience to network failure and higher + throughput. + + This document outlines architectural guidelines for the development + of a Multipath Transport Protocol, with references to how these + architectural components come together in the development of a + Multipath TCP (MPTCP). This document lists certain high-level design + decisions that provide foundations for the design of the MPTCP + protocol, based upon these architectural requirements. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Not all documents + approved by the IESG are a candidate for any level of Internet + Standard; see Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc6182. + + + + + + +Ford, et al. Informational [Page 1] + +RFC 6182 MPTCP Architecture March 2011 + + +Copyright Notice + + Copyright (c) 2011 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ford, et al. Informational [Page 2] + +RFC 6182 MPTCP Architecture March 2011 + + +Table of Contents + + 1. Introduction ....................................................4 + 1.1. Requirements Language ......................................5 + 1.2. Terminology ................................................5 + 1.3. Reference Scenario .........................................6 + 2. Goals ...........................................................6 + 2.1. Functional Goals ...........................................6 + 2.2. Compatibility Goals ........................................7 + 2.2.1. Application Compatibility ...........................7 + 2.2.2. Network Compatibility ...............................8 + 2.2.3. Compatibility with Other Network Users .............10 + 2.3. Security Goals ............................................10 + 2.4. Related Protocols .........................................10 + 3. An Architectural Basis for Multipath TCP .......................11 + 4. A Functional Decomposition of MPTCP ............................12 + 5. High-Level Design Decisions ....................................14 + 5.1. Sequence Numbering ........................................14 + 5.2. Reliability and Retransmissions ...........................15 + 5.3. Buffers ...................................................17 + 5.4. Signaling .................................................18 + 5.5. Path Management ...........................................19 + 5.6. Connection Identification .................................20 + 5.7. Congestion Control ........................................21 + 5.8. Security ..................................................21 + 6. Software Interactions ..........................................23 + 6.1. Interactions with Applications ............................23 + 6.2. Interactions with Management Systems ......................23 + 7. Interactions with Middleboxes ..................................23 + 8. Contributors ...................................................25 + 9. Acknowledgements ...............................................25 + 10. Security Considerations .......................................26 + 11. References ....................................................26 + 11.1. Normative References .....................................26 + 11.2. Informative References ...................................26 + + + + + + + + + + + + + + + + +Ford, et al. Informational [Page 3] + +RFC 6182 MPTCP Architecture March 2011 + + +1. Introduction + + As the Internet evolves, demands on Internet resources are ever- + increasing, but often these resources (in particular, bandwidth) + cannot be fully utilized due to protocol constraints both on the end- + systems and within the network. If these resources could be used + concurrently, end user experience could be greatly improved. Such + enhancements would also reduce the necessary expenditure on network + infrastructure that would otherwise be needed to create an equivalent + improvement in user experience. By the application of resource + pooling [3], these available resources can be 'pooled' such that they + appear as a single logical resource to the user. + + Multipath transport aims to realize some of the goals of resource + pooling by simultaneously making use of multiple disjoint (or + partially disjoint) paths across a network. The two key benefits of + multipath transport are the following: + + o To increase the resilience of the connectivity by providing + multiple paths, protecting end hosts from the failure of one. + + o To increase the efficiency of the resource usage, and thus + increase the network capacity available to end hosts. + + Multipath TCP is a modified version of TCP [1] that implements a + multipath transport and achieves these goals by pooling multiple + paths within a transport connection, transparently to the + application. Multipath TCP is primarily concerned with utilizing + multiple paths end-to-end, where one or both of the end hosts are + multihomed. It may also have applications where multiple paths exist + within the network and can be manipulated by an end host, such as + using different port numbers with Equal Cost MultiPath (ECMP) [4]. + + MPTCP, defined in [5], is a specific protocol that instantiates the + Multipath TCP concept. This document looks both at general + architectural principles for a Multipath TCP fulfilling the goals + described in Section 2, as well as the key design decisions behind + MPTCP, which are detailed in Section 5. + + Although multihoming and multipath functions are not new to transport + protocols (Stream Control Transmission Protocol (SCTP) [6] being a + notable example), MPTCP aims to gain wide-scale deployment by + recognizing the importance of application and network compatibility + goals. These goals, discussed in detail in Section 2, relate to the + appearance of MPTCP to the network (so non-MPTCP-aware entities see + it as TCP) and to the application (through providing a service + equivalent to TCP for non-MPTCP-aware applications). + + + + +Ford, et al. Informational [Page 4] + +RFC 6182 MPTCP Architecture March 2011 + + + This document has three key purposes: (i) it describes goals for a + multipath transport -- goals that MPTCP is designed to meet; (ii) it + lays out an architectural basis for MPTCP's design -- a discussion + that applies to other multipath transports as well; and (iii) it + discusses and documents high-level design decisions made in MPTCP's + development, and considers their implications. + + Companion documents to this architectural overview are those that + provide details of the protocol extensions [5], congestion control + algorithms [7], and application-level considerations [8]. Put + together, these components specify a complete Multipath TCP design. + Note that specific components are replaceable in accordance with the + layer and functional decompositions discussed in this document. + +1.1. Requirements Language + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in RFC 2119 [2]. + +1.2. Terminology + + Regular/Single-Path TCP: The standard version of TCP [1] in use + today, operating between a single pair of IP addresses and ports. + + Multipath TCP: A modified version of the TCP protocol that supports + the simultaneous use of multiple paths between hosts. + + Path: A sequence of links between a sender and a receiver, defined + in this context by a source and destination address pair. + + Host: An end host either initiating or terminating a Multipath TCP + connection. + + MPTCP: The proposed protocol extensions specified in [5] to provide + a Multipath TCP implementation. + + Subflow: A flow of TCP segments operating over an individual path, + which forms part of a larger Multipath TCP connection. + + (Multipath TCP) Connection: A set of one or more subflows combined + to provide a single Multipath TCP service to an application at a + host. + + + + + + + + +Ford, et al. Informational [Page 5] + +RFC 6182 MPTCP Architecture March 2011 + + +1.3. Reference Scenario + + The diagram shown in Figure 1 illustrates a typical usage scenario + for Multipath TCP. Two hosts, A and B, are communicating with each + other. These hosts are multihomed and multi-addressed, providing two + disjoint connections to the Internet. The addresses on each host are + referred to as A1, A2, B1, and B2. There are therefore up to four + different paths between the two hosts: A1-B1, A1-B2, A2-B1, A2-B2. + + +------+ __________ +------+ + | |A1 ______ ( ) ______ B1| | + | Host |--/ ( ) \--| Host | + | | ( Internet ) | | + | A |--\______( )______/--| B | + | |A2 (__________) B2| | + +------+ +------+ + + Figure 1: Simple Multipath TCP Usage Scenario + + The scenario could have any number of addresses (1 or more) on each + host, as long as the number of paths available between the two hosts + is 2 or more (i.e., num_addr(A) * num_addr(B) > 1). The paths + created by these address combinations through the Internet need not + be entirely disjoint -- potential fairness issues introduced by + shared bottlenecks need to be handled by the Multipath TCP congestion + controller. Furthermore, the paths through the Internet often do not + provide a pure end-to-end service, and instead may be affected by + middleboxes such as NATs and firewalls. + +2. Goals + + This section outlines primary goals that Multipath TCP aims to meet. + These are broadly broken down into the following: functional goals, + which steer services and features that Multipath TCP must provide, + and compatibility goals, which determine how Multipath TCP should + appear to entities that interact with it. + +2.1. Functional Goals + + In supporting the use of multiple paths, Multipath TCP has the + following two functional goals. + + o Improve Throughput: Multipath TCP MUST support the concurrent use + of multiple paths. To meet the minimum performance incentives for + deployment, a Multipath TCP connection over multiple paths SHOULD + achieve no worse throughput than a single TCP connection over the + best constituent path. + + + + +Ford, et al. Informational [Page 6] + +RFC 6182 MPTCP Architecture March 2011 + + + o Improve Resilience: Multipath TCP MUST support the use of multiple + paths interchangeably for resilience purposes, by permitting + segments to be sent and re-sent on any available path. It follows + that, in the worst case, the protocol MUST be no less resilient + than regular single-path TCP. + + As distribution of traffic among available paths and responses to + congestion are done in accordance with resource pooling principles + [3], a secondary effect of meeting these goals is that widespread use + of Multipath TCP over the Internet should improve overall network + utility by shifting load away from congested bottlenecks and by + taking advantage of spare capacity wherever possible. + + Furthermore, Multipath TCP SHOULD feature automatic negotiation of + its use. A host supporting Multipath TCP that requires the other + host to do so too must be able to detect reliably whether this host + does in fact support the required extensions, using them if so, and + otherwise automatically falling back to single-path TCP. + +2.2. Compatibility Goals + + In addition to the functional goals listed above, a Multipath TCP + must meet a number of compatibility goals in order to support + deployment in today's Internet. These goals fall into the following + categories. + +2.2.1. Application Compatibility + + Application compatibility refers to the appearance of Multipath TCP + to the application both in terms of the API that can be used and the + expected service model that is provided. + + Multipath TCP MUST follow the same service model as TCP [1]: in- + order, reliable, and byte-oriented delivery. Furthermore, a + Multipath TCP connection SHOULD provide the application with no worse + throughput or resilience than it would expect from running a single + TCP connection over any one of its available paths. A Multipath TCP + may not, however, be able to provide the same level of consistency of + throughput and latency as a single TCP connection. These, and other, + application considerations are discussed in detail in [8]. + + A multipath-capable equivalent of TCP MUST retain some level of + backward compatibility with existing TCP APIs, so that existing + applications can use the newer transport merely by upgrading the + operating systems of the end hosts. This does not preclude the use + of an advanced API to permit multipath-aware applications to specify + + + + + +Ford, et al. Informational [Page 7] + +RFC 6182 MPTCP Architecture March 2011 + + + preferences, nor for users to configure their systems in a different + way from the default, for example switching on or off the automatic + use of multipath extensions. + + It is possible for regular TCP sessions today to survive brief breaks + in connectivity by retaining state at end hosts before a timeout + occurs. It would be desirable to support similar session continuity + in MPTCP; however, the circumstances could be different. Whilst in + regular TCP the IP addresses will remain constant across the break in + connectivity, in MPTCP a different interface may appear. It is + desirable (but not mandated) to support this kind of "break-before- + make" session continuity. This places constraints on security + mechanisms, however, as discussed in Section 5.8. Timeouts for this + function would be locally configured. + +2.2.2. Network Compatibility + + In the traditional Internet architecture, network devices operate at + the network layer and lower layers, with the layers above the network + layer instantiated only at the end hosts. While this architecture, + shown in Figure 2, was initially largely adhered to, this layering no + longer reflects the "ground truth" in the Internet with the + proliferation of middleboxes [9]. Middleboxes routinely interpose on + the transport layer; sometimes even completely terminating transport + connections, thus leaving the application layer as the first real + end-to-end layer, as shown in Figure 3. + + +-------------+ +-------------+ + | Application |<------------ end-to-end ------------->| Application | + +-------------+ +-------------+ + | Transport |<------------ end-to-end ------------->| Transport | + +-------------+ +-------------+ +-------------+ +-------------+ + | Network |<->| Network |<->| Network |<->| Network | + +-------------+ +-------------+ +-------------+ +-------------+ + End Host Router Router End Host + + Figure 2: Traditional Internet Architecture + + + + + + + + + + + + + + +Ford, et al. Informational [Page 8] + +RFC 6182 MPTCP Architecture March 2011 + + + +-------------+ +-------------+ + | Application |<------------ end-to-end ------------->| Application | + +-------------+ +-------------+ +-------------+ + | Transport |<------------------->| Transport |<->| Transport | + +-------------+ +-------------+ +-------------+ +-------------+ + | Network |<->| Network |<->| Network |<->| Network | + +-------------+ +-------------+ +-------------+ +-------------+ + Firewall, + End Host Router NAT, or Proxy End Host + + Figure 3: Internet Reality + + Middleboxes that interpose on the transport layer result in loss of + "fate-sharing" [10], that is, they often hold "hard" state that, when + lost or corrupted, results in loss or corruption of the end-to-end + transport connection. + + The network compatibility goal requires that the multipath extension + to TCP retain compatibility with the Internet as it exists today, + including making reasonable efforts to be able to traverse + predominant middleboxes such as firewalls, NATs, and performance- + enhancing proxies [9]. This requirement comes from recognizing + middleboxes as a significant deployment bottleneck for any transport + that is not TCP or UDP, and constrains Multipath TCP to appear as TCP + does on the wire and to use established TCP extensions where + necessary. To ensure "end-to-endness" of the transport, Multipath + TCP MUST preserve fate-sharing without making any assumptions about + middlebox behavior. + + A detailed analysis of middlebox behavior and the impact on the + Multipath TCP architecture is presented in Section 7. In addition, + network compatibility must be retained to the extent that Multipath + TCP MUST fall back to regular TCP if there are insurmountable + incompatibilities for the multipath extension on a path. + + Middleboxes may also cause some TCP features to be able to exist on + one subflow but not another. Typically, these will be at the subflow + level (such as selective acknowledgment (SACK) [11]) and thus do not + affect the connection-level behavior. In the future, any proposed + TCP connection-level extensions should consider how they can coexist + with MPTCP. + + The modifications to support Multipath TCP remain at the transport + layer, although some knowledge of the underlying network layer is + required. Multipath TCP SHOULD work with IPv4 and IPv6 + interchangeably, i.e., one connection may operate over both IPv4 and + IPv6 networks. + + + + +Ford, et al. Informational [Page 9] + +RFC 6182 MPTCP Architecture March 2011 + + +2.2.3. Compatibility with Other Network Users + + As a corollary to both network and application compatibility, the + architecture must enable new Multipath TCP flows to coexist + gracefully with existing single-path TCP flows, competing for + bandwidth neither unduly aggressively nor unduly timidly (unless low- + precedence operation is specifically requested by the application, + such as with LEDBAT). The use of multiple paths MUST NOT unduly harm + users using single-path TCP at shared bottlenecks, beyond the impact + that would occur from another single-path TCP flow. Multiple + Multipath TCP flows on a shared bottleneck MUST share bandwidth + between each other with similar fairness to that which occurs at a + shared bottleneck with single-path TCP. + +2.3. Security Goals + + The extension of TCP with multipath capabilities will bring with it a + number of new threats, analyzed in detail in [12]. The security goal + for Multipath TCP is to provide a service no less secure than + regular, single-path TCP. This will be achieved through a + combination of existing TCP security mechanisms (potentially modified + to align with the Multipath TCP extensions) and of protection against + the new multipath threats identified. The design decisions derived + from this goal are presented in Section 5.8. + +2.4. Related Protocols + + There are several similarities between SCTP [6] and MPTCP, in that + both can make use of multiple addresses at end hosts to give some + multipath capability. In SCTP, the primary use case is to support + redundancy and mobility for multihomed hosts (i.e., a single path + will change one of its end host addresses); the simultaneous use of + multiple paths is not supported. Extensions are proposed to support + simultaneous multipath transport [13], but these are yet to be + standardized. By far the most widely used stream-based transport + protocol is, however, TCP [1], and SCTP does not meet the network and + application compatibility goals specified in Section 2.2. For + network compatibility, there are issues with various middleboxes + (especially NATs) that are unaware of SCTP and consequently end up + blocking it. For application compatibility, applications need to + actively choose to use SCTP, and with the deployment issues, very few + choose to do so. MPTCP's compatibility goals are in part based on + these observations of SCTP's deployment issues. + + + + + + + + +Ford, et al. Informational [Page 10] + +RFC 6182 MPTCP Architecture March 2011 + + +3. An Architectural Basis for Multipath TCP + + This section presents one possible transport architecture that the + authors believe can effectively support the goals for Multipath TCP. + The new Internet model described here is based on ideas proposed + earlier in Tng ("Transport next-generation") [14]. While by no means + the only possible architecture supporting multipath transport, Tng + incorporates many lessons learned from previous transport research + and development practice, and offers a strong starting point from + which to consider the extant Internet architecture and its bearing on + the design of any new Internet transports or transport extensions. + + +------------------+ + | Application | + +------------------+ ^ Application-oriented transport + | | | functions (Semantic Layer) + + - - Transport - -+ ---------------------------------- + | | | Network-oriented transport + +------------------+ v functions (Flow+Endpoint Layer) + | Network | + +------------------+ + Existing Layers Tng Decomposition + + Figure 4: Decomposition of Transport Functions + + Tng loosely splits the transport layer into "application-oriented" + and "network-oriented" layers, as shown in Figure 4. The + application-oriented "Semantic" layer implements functions driven + primarily by concerns of supporting and protecting the application's + end-to-end communication, while the network-oriented "Flow+Endpoint" + layer implements functions such as endpoint identification (using + port numbers) and congestion control. These network-oriented + functions, while traditionally located in the ostensibly "end-to-end" + Transport layer, have proven in practice to be of great concern to + network operators and the middleboxes they deploy in the network to + enforce network usage policies [15] [16] or optimize communication + performance [17]. Figure 5 shows how middleboxes interact with + different layers in this decomposed model of the transport layer: the + application-oriented layer operates end-to-end, while the network- + oriented layer operates "segment-by-segment" and can be interposed + upon by middleboxes. + + + + + + + + + + +Ford, et al. Informational [Page 11] + +RFC 6182 MPTCP Architecture March 2011 + + + +-------------+ +-------------+ + | Application |<------------ end-to-end ------------->| Application | + +-------------+ +-------------+ + | Semantic |<------------ end-to-end ------------->| Semantic | + +-------------+ +-------------+ +-------------+ +-------------+ + |Flow+Endpoint|<->|Flow+Endpoint|<->|Flow+Endpoint|<->|Flow+Endpoint| + +-------------+ +-------------+ +-------------+ +-------------+ + | Network |<->| Network |<->| Network |<->| Network | + +-------------+ +-------------+ +-------------+ +-------------+ + Firewall Performance + End Host or NAT Enhancing Proxy End Host + + Figure 5: Middleboxes in the New Internet Model + + MPTCP's architectural design follows Tng's decomposition as shown in + Figure 6. MPTCP, which provides application compatibility through + the preservation of TCP-like semantics of global ordering of + application data and reliability, is an instantiation of the + "application-oriented" Semantic layer; whereas the subflow TCP + component, which provides network compatibility by appearing and + behaving as a TCP flow in the network, is an instantiation of the + "network-oriented" Flow+Endpoint layer. + + +--------------------------+ +-------------------------------+ + | Application | | Application | + +--------------------------+ +-------------------------------+ + | Semantic | | MPTCP | + |------------+-------------| + - - - - - - - + - - - - - - - + + | Flow+Endpt | Flow+Endpt | | Subflow (TCP) | Subflow (TCP) | + +------------+-------------+ +---------------+---------------+ + | Network | Network | | IP | IP | + +------------+-------------+ +---------------+---------------+ + + Figure 6: Relationship between Tng (Left) and MPTCP (Right) + + As a protocol extension to TCP, MPTCP thus explicitly acknowledges + middleboxes in its design, and specifies a protocol that operates at + two scales: the MPTCP component operates end-to-end, while it allows + the TCP component to operate segment-by-segment. + +4. A Functional Decomposition of MPTCP + + The previous two sections have discussed the goals for a Multipath + TCP design, and provided a basis for decomposing the functions of a + transport protocol in order to better understand the form a solution + should take. This section builds upon this analysis by presenting + the functional components that are used within the MPTCP design. + + + + +Ford, et al. Informational [Page 12] + +RFC 6182 MPTCP Architecture March 2011 + + + MPTCP makes use of (what appear to the network to be) standard TCP + sessions, termed "subflows", to provide the underlying transport per + path, and as such these retain the network compatibility desired. + MPTCP-specific information is carried in a TCP-compatible manner, + although this mechanism is separate from the actual information being + transferred so could evolve in future revisions. Figure 7 + illustrates the layered architecture. + + +-------------------------------+ + | Application | + +---------------+ +-------------------------------+ + | Application | | MPTCP | + +---------------+ + - - - - - - - + - - - - - - - + + | TCP | | Subflow (TCP) | Subflow (TCP) | + +---------------+ +-------------------------------+ + | IP | | IP | IP | + +---------------+ +-------------------------------+ + + Figure 7: Comparison of Standard TCP and MPTCP Protocol Stacks + + Situated below the application, the MPTCP extension in turn manages + multiple TCP subflows below it. In order to do this, it must + implement the following functions: + + o Path Management: This is the function to detect and use multiple + paths between two hosts. MPTCP uses the presence of multiple IP + addresses at one or both of the hosts as an indicator of this. + The path management features of the MPTCP protocol are the + mechanisms to signal alternative addresses to hosts, and + mechanisms to set up new subflows joined to an existing MPTCP + connection. + + o Packet Scheduling: This function breaks the byte stream received + from the application into segments to be transmitted on one of the + available subflows. The MPTCP design makes use of a data sequence + mapping, associating segments sent on different subflows to a + connection-level sequence numbering, thus allowing segments sent + on different subflows to be correctly re-ordered at the receiver. + The packet scheduler is dependent upon information about the + availability of paths exposed by the path management component, + and then makes use of the subflows to transmit queued segments. + This function is also responsible for connection-level re-ordering + on receipt of packets from the TCP subflows, according to the + attached data sequence mappings. + + o Subflow (single-path TCP) Interface: A subflow component takes + segments from the packet-scheduling component and transmits them + over the specified path, ensuring detectable delivery to the host. + + + +Ford, et al. Informational [Page 13] + +RFC 6182 MPTCP Architecture March 2011 + + + MPTCP uses TCP underneath for network compatibility; TCP ensures + in-order, reliable delivery. TCP adds its own sequence numbers to + the segments; these are used to detect and retransmit lost packets + at the subflow layer. On receipt, the subflow passes its + reassembled data to the packet scheduling component for + connection-level reassembly; the data sequence mapping from the + sender's packet scheduling component allows re-ordering of the + entire byte stream. + + o Congestion Control: This function coordinates congestion control + across the subflows. As specified, this congestion control + algorithm MUST ensure that an MPTCP connection does not unfairly + take more bandwidth than a single path TCP flow would take at a + shared bottleneck. An algorithm to support this is specified in + [7]. + + These functions fit together as follows. The path management looks + after the discovery (and if necessary, initialization) of multiple + paths between two hosts. The packet scheduler then receives a stream + of data from the application destined for the network, and undertakes + the necessary operations on it (such as segmenting the data into + connection-level segments, and adding a connection-level sequence + number) before sending it on to a subflow. The subflow then adds its + own sequence number, ACKs, and passes them to network. The receiving + subflow re-orders data (if necessary) and passes it to the packet + scheduling component, which performs connection level re-ordering, + and sends the data stream to the application. Finally, the + congestion control component exists as part of the packet scheduling, + in order to schedule which segments should be sent at what rate on + which subflow. + +5. High-Level Design Decisions + + There is seemingly a wide range of choices when designing a multipath + extension to TCP. However, the goals as discussed earlier in this + document constrain the possible solutions, leaving relative little + choice in many areas. This section outlines high-level design + choices that draw from the architectural basis discussed earlier in + Section 3, which the design of MPTCP [5] takes into account. + +5.1. Sequence Numbering + + MPTCP uses two levels of sequence spaces: a connection-level sequence + number and another sequence number for each subflow. This permits + connection-level segmentation and reassembly and retransmission of + the same part of connection-level sequence space on different + subflow-level sequence space. + + + + +Ford, et al. Informational [Page 14] + +RFC 6182 MPTCP Architecture March 2011 + + + The alternative approach would be to use a single connection-level + sequence number, which gets sent on multiple subflows. This has two + problems: first, the individual subflows will appear to the network + as TCP sessions with gaps in the sequence space; this in turn may + upset certain middleboxes such as intrusion detection systems, or + certain transparent proxies, and would thus go against the network + compatibility goal. Second, the sender would not be able to + attribute packet losses or receptions to the correct path when the + same segment is sent on multiple paths (i.e., in the case of + retransmissions). + + The sender must be able to tell the receiver how to reassemble the + data, for delivery to the application. In order to achieve this, the + receiver must determine how subflow-level data (carrying subflow + sequence numbers) maps at the connection level. This is referred to + as the "data sequence mapping". This mapping can be represented as a + tuple of (data sequence number, subflow sequence number, length), + i.e., for a given number of bytes (the length), the subflow sequence + space beginning at the given sequence number maps to the connection- + level sequence space (beginning at the given data sequence number). + This information could conceivably have various sources. + + One option to signal the data sequence mapping would be to use + existing fields in the TCP segment (such as subflow sequence number, + length) and add only the data sequence number to each segment, for + instance, as a TCP option. This would be vulnerable, however, to + middleboxes that re-segment or assemble data, since there is no + specified behavior for coalescing TCP options. If one signaled (data + sequence number, length), this would still be vulnerable to + middleboxes that coalesce segments and do not understand MPTCP + signaling so do not correctly rewrite the options. + + Because of these potential issues, the design decision taken in the + MPTCP protocol is that whenever a mapping for subflow data needs to + be conveyed to the other host, all three pieces of data (data seq, + subflow seq, length) must be sent. To reduce the overhead, it would + be permissible for the mapping to be sent periodically and cover more + than a single segment. Further experimentation is required to + determine what tradeoffs exist regarding the frequency at which + mappings should be sent. It could also be excluded entirely in the + case of a connection before more than one subflow is used, where the + data-level and subflow-level sequence space is the same. + +5.2. Reliability and Retransmissions + + MPTCP features acknowledgements at connection-level as well as + subflow-level acknowledgements, in order to provide a robust service + to the application. + + + +Ford, et al. Informational [Page 15] + +RFC 6182 MPTCP Architecture March 2011 + + + Under normal behavior, MPTCP could use the data sequence mapping and + subflow ACKs to decide when a connection-level segment was received. + The transmission of TCP ACKs for a subflow are handled entirely at + the subflow level, in order to maintain TCP semantics and trigger + subflow-level retransmissions. This has certain implications on end- + to-end semantics. It would mean that once a segment is ACKed at the + subflow level, it cannot be discarded in the re-order buffer at the + connection level. Secondly, unlike in standard TCP, a receiver + cannot simply drop out-of-order segments if needed (for instance, due + to memory pressure). Under certain circumstances, it may be + desirable to drop segments after acknowledgement on the subflow but + before delivery to the application, and this can be facilitated by a + connection-level acknowledgement. + + Furthermore, it is possible to conceive of some cases where + connection-level acknowledgements could improve robustness. Consider + a subflow traversing a transparent proxy: if the proxy ACKs a segment + and then crashes, the sender will not retransmit the lost segment on + another subflow, as it thinks the segment has been received. The + connection grinds to a halt despite having other working subflows, + and the sender would be unable to determine the cause of the problem. + An example situation where this may occur would be mobility between + wireless access points, each of which operates a transport-level + proxy. Finally, as an optimization, it may be feasible for a + connection-level acknowledgement to be transmitted over the shortest + Round-Trip Time (RTT) path, potentially reducing send buffer + requirements (see Section 5.3). + + Therefore, to provide a fully robust multipath TCP solution given the + above constraints, MPTCP for use on the public Internet MUST feature + explicit connection-level acknowledgements, in addition to subflow- + level acknowledgements. A connection-level acknowledgement would + only be required in order to signal when the receive window moves + forward; the heuristics for using such a signal are discussed in more + detail in the protocol specification [5]. + + Regarding retransmissions, it MUST be possible for a segment to be + retransmitted on a different subflow from that on which it was + originally sent. This is one of MPTCP's core goals, in order to + maintain integrity during temporary or permanent subflow failure, and + this is enabled by the dual sequence number space. + + The scheduling of retransmissions will have significant impact on + MPTCP user experience. The current MPTCP specification suggests that + data outstanding on subflows that have timed out should be + rescheduled for transmission on different subflows. This behavior + + + + + +Ford, et al. Informational [Page 16] + +RFC 6182 MPTCP Architecture March 2011 + + + aims to minimize disruption when a path breaks, and uses the first + timeout as indicators. More conservative versions would be to use + second or third timeouts for the same segment. + + Typically, fast retransmit on an individual subflow will not trigger + retransmission on another subflow, although this may still be + desirable in certain cases, for instance, to reduce the receive + buffer requirements. However, in all cases with retransmissions on + different subflows, the lost segments SHOULD still be sent on the + path that lost them. This is currently believed to be necessary to + maintain subflow integrity, as per the network compatibility goal. + By doing this, some efficiency is lost, and it is unclear at this + point what the optimal retransmit strategy is. + + Large-scale experiments are therefore required in order to determine + the most appropriate retransmission strategy, and recommendations + will be refined once more information is available. + +5.3. Buffers + + To ensure in-order delivery, MPTCP must use a connection level + receive buffer, where segments are placed until they are in order and + can be read by the application. + + In regular, single-path TCP, it is usually recommended to set the + receive buffer to 2*BDP (Bandwidth-Delay Product, i.e., BDP = BW*RTT, + where BW = Bandwidth and RTT = Round-Trip Time). One BDP allows + supporting reordering of segments by the network. The other BDP + allows the connection to continue during fast retransmit: when a + segment is fast retransmitted, the receiver must be able to store + incoming data during one more RTT. + + For MPTCP, the story is a bit more complicated. The ultimate goal is + that a subflow packet loss or subflow failure should not affect the + throughput of other working subflows; the receiver should have enough + buffering to store all data until the missing segment is re- + transmitted and reaches the destination. + + The worst-case scenario would be when the subflow with the highest + RTT/RTO (Round-Trip Time or Retransmission TimeOut) experiences a + timeout; in that case, the receiver has to buffer data from all + subflows for the duration of the RTO. Thus, the smallest connection- + level receive buffer that would be needed to avoid stalling with + subflow failures is sum(BW_i)*RTO_max, where BW_i = Bandwidth for + each subflow and RTO_max is the largest RTO across all subflows. + + + + + + +Ford, et al. Informational [Page 17] + +RFC 6182 MPTCP Architecture March 2011 + + + This is an order of magnitude more than the receive buffer required + for a single connection, and is probably too expensive for practical + purposes. A more sensible requirement is to avoid stalls in the + absence of timeouts. Therefore, the RECOMMENDED receive buffer is + 2*sum(BW_i)*RTT_max, where RTT_max is the largest RTT across all + subflows. This buffer sizing ensures subflows do not stall when fast + retransmit is triggered on any subflow. + + The resulting buffer size should be small enough for practical use. + However, there may be extreme cases where fast, high throughput paths + (e.g., 100 Mb/s, 10 ms RTT) are used in conjunction with slow paths + (e.g., 1 Mb/s, 1000 ms RTT). In that case, the required receive + buffer would be 12.5 MB, which is likely too big. In extreme cases + such as this example, it may be prudent to only use some of the + fastest available paths for the MPTCP connection, potentially using + the slow path(s) for backup only. + + Send Buffer: The RECOMMENDED send buffer is the same size as the + recommended receive buffer, i.e., 2*sum(BW_i)*RTT_max. This is + because the sender must locally store the segments sent but + unacknowledged by the connection level ACK. The send buffer size + matters particularly for hosts that maintain a large number of + ongoing connections. If the required send buffer is too large, a + host can choose to only send data on the fast subflows, using the + slow subflows only in cases of failure. + +5.4. Signaling + + Since MPTCP uses TCP as its subflow transport mechanism, an MPTCP + connection will also begin as a single TCP connection. Nevertheless, + it must signal to the peer that it supports MPTCP and wishes to use + it on this connection. As such, a TCP option will be used to + transmit this information, since this is the established mechanism + for indicating additional functionality on a TCP session. + + In addition, further signaling is required during the operation of an + MPTCP session, such as that for reassembly across multiple subflows, + and for informing the other host about other available IP addresses. + + The MPTCP protocol design will use TCP options for this additional + signaling. This has been chosen as the mechanism most fitting in + with the goals as specified in Section 2. With this mechanism, the + signaling required to operate MPTCP is transported separately from + the data, allowing it to be created and processed separately from the + data stream, and retaining architectural compatibility with network + entities. + + + + + +Ford, et al. Informational [Page 18] + +RFC 6182 MPTCP Architecture March 2011 + + + This decision is the consensus of the Working Group (following + detailed discussions at IETF78), and the main reasons for this are as + follows: + + o TCP options are the traditional signaling method for TCP; + + o A TCP option on a SYN is the most compatible way for an end host + to signal it is MPTCP capable; + + o If connection-level ACKs are signaled in the payload, then they + may suffer from packet loss and may be congestion-controlled, + which may affect the data throughput in the forward direction and + could lead to head-of-line blocking; + + o Middleboxes, such as NAT traversal helpers, can easily parse TCP + options, e.g., to rewrite addresses. + + On the other hand, the main drawbacks of TCP options compared to TLV + encoding in the payload are the following: + + o There is limited space for signaling messages; + + o A middlebox may, potentially, drop a packet with an unknown + option; + + o The transport of control information in options is not necessarily + reliable. + + The detailed design of MPTCP alleviates these issues as far as + possible by carefully considering the size of MPTCP options and + seamlessly falling back to regular TCP on the loss of control data. + + Both option and payload encoding may interfere with offloading of TCP + processing to high-speed network interface cards, such as + segmentation, checksumming, and reassembly. For network cards + supporting MPTCP, signaling in TCP options should simplify offloading + due to the separate handling of MPTCP signaling and data. + +5.5. Path Management + + Currently, the network does not expose path diversity between pairs + of IP addresses. In order to achieve path diversity from today's IP + networks, in the typical case, MPTCP uses multiple addresses at one + or both hosts to infer different paths across the network. It is + expected that these paths, whilst not necessarily entirely non- + overlapping, will be sufficiently disjoint to allow multipath to + + + + + +Ford, et al. Informational [Page 19] + +RFC 6182 MPTCP Architecture March 2011 + + + achieve improved throughput and robustness. The use of multiple IP + addresses is a simple mechanism that requires no additional features + in the network. + + Multiple different (source, destination) address pairs will thus be + used as path selectors in most cases. However, each path will be + identified by a standard five-tuple (i.e., source address, + destination address, source port, destination port, protocol), which + can allow the extension of MPTCP to use ports as well as addresses as + path selectors. This will allow hosts to use port-based load + balancing with MPTCP, for example, if the network routes different + ports over different paths (which may be the case with technologies + such as Equal Cost MultiPath (ECMP) routing [4]). It should be + noted, however, that ISPs often undertake traffic engineering in + order to optimize resource utilization within their networks, and + care should be taken (by both ISPs and developers) that MPTCP using + broadly similar paths does not adversely interfere with this. + + For an increased chance of successfully setting up additional + subflows (such as when one end is behind a firewall, NAT, or other + restrictive middlebox), either host SHOULD be able to add new + subflows to an MPTCP connection. MPTCP MUST be able to handle paths + that appear and disappear during the lifetime of a connection (for + example, through the activation of an additional network interface). + + The path management is a separate function from the packet + scheduling, subflow interface, and congestion control functions of + MPTCP, as documented in Section 4. As such, it would be feasible to + replace this IP-address-based design with an alternative path + selection mechanism in the future, with no significant changes to the + other functional components. + +5.6. Connection Identification + + Since an MPTCP connection may not be bound to a traditional 5-tuple + (source address and port, destination address and port, protocol + number) for the entirety of its existence, it is desirable to provide + a new mechanism for connection identification. This will be useful + for MPTCP-aware applications and for the MPTCP implementation (and + MPTCP-aware middleboxes) to have a unique identifier with which to + associate the multiple subflows. + + Therefore, each MPTCP connection requires a connection identifier at + each host, which is locally unique within that host. In many ways, + this is analogous to an ephemeral port number in regular TCP. The + manifestation and purpose of such an identifier is out of the scope + of this architecture document. + + + + +Ford, et al. Informational [Page 20] + +RFC 6182 MPTCP Architecture March 2011 + + + Non-MPTCP-aware applications will not, however, have access to this + identifier and in such cases an MPTCP connection will be identified + by the 5-tuple of the first TCP subflow. It is out of the scope of + this document, however, to define the behavior of the MPTCP + implementation if the first TCP subflow later fails. If there are + MPTCP-unaware applications that make assumptions about continued + existence of the initial address pair, their behavior could be + disrupted by carrying on regardless. It is expected that this is a + very small, possibly negligible, set of applications, however. MPTCP + MUST NOT be used for applications that request to bind to a specific + address or interface, since such applications are making a deliberate + choice of path in use. + + Since the requirements of applications are not clear at this stage, + however, it is as yet unconfirmed whether carrying on in the event of + the loss of the initial address pair would be a damaging assumption + to make. This behavior will be an implementation-specific solution, + and as such it is expected to be chosen by implementors once more + research has been undertaken to determine its impact. + +5.7. Congestion Control + + As discussed in network-layer compatibility requirements + Section 2.2.3, there are three goals for the congestion control + algorithms used by an MPTCP implementation: improve throughput (at + least as well as a single-path TCP connection would perform); do no + harm to other network users (do not take up more capacity on any one + path than if it was a single path flow using only that route -- this + is particularly relevant for shared bottlenecks); and balance + congestion by moving traffic away from the most congested paths. To + achieve these goals, the congestion control algorithms on each + subflow must be coupled in some way. A proposal for a suitable + congestion control algorithm is given in [7]. + +5.8. Security + + A detailed threat analysis for Multipath TCP is presented in a + separate document [12]. That document focuses on flooding attacks + and hijacking attacks that can be launched against a Multipath TCP + connection. + + The basic security goal of Multipath TCP, as introduced in + Section 2.3, can be stated as: "provide a solution that is no worse + than standard TCP". + + + + + + + +Ford, et al. Informational [Page 21] + +RFC 6182 MPTCP Architecture March 2011 + + + From the threat analysis, and with this goal in mind, three key + security requirements can be identified. A multi-addressed Multipath + TCP SHOULD be able to do the following: + + o Provide a mechanism to confirm that the parties in a subflow + handshake are the same as in the original connection setup (e.g., + require use of a key exchanged in the initial handshake in the + subflow handshake, to limit the scope for hijacking attacks). + + o Provide verification that the peer can receive traffic at a new + address before adding it (i.e., verify that the address belongs to + the other host, to prevent flooding attacks). + + o Provide replay protection, i.e., ensure that a request to add/ + remove a subflow is 'fresh'. + + Additional mechanisms have been deployed as part of standard TCP + stacks to provide resistance to Denial-of-Service (DoS) attacks. For + example, there are various mechanisms to protect against TCP reset + attacks [18], and Multipath TCP should continue to support similar + protection. In addition, TCP SYN Cookies [19] were developed to + allow a TCP server to defer the creation of session state in the + SYN_RCVD state, and remain stateless until the ESTABLISHED state had + been reached. Multipath TCP should, ideally, continue to provide + such functionality and, at a minimum, avoid significant computational + burden prior to reaching the ESTABLISHED state (of the Multipath TCP + connection as a whole). + + It should be noted that aspects of the Multipath TCP design space + place constraints on the security solution: + + o The use of TCP options significantly limits the amount of + information that can be carried in the handshake. + + o The need to work through middleboxes results in the need to handle + mutability of packets. + + o The desire to support a 'break-before-make' (as well as a 'make- + before-break') approach to adding subflows (within a limited time + period) implies that a host cannot rely on using a pre-existing + subflow to support the addition of a new one. + + The MPTCP protocol will be designed with these security requirements + in mind, and the protocol specification [5] will document how these + are met. + + + + + + +Ford, et al. Informational [Page 22] + +RFC 6182 MPTCP Architecture March 2011 + + +6. Software Interactions + +6.1. Interactions with Applications + + In the case of applications that have used an existing API call to + bind to a specific address or interface, the MPTCP extension MUST NOT + be used. This is because the applications are indicating a clear + choice of path to use and thus will have expectations of behavior + that must be maintained, in order to adhere to the application + compatibility goals. + + Interactions with applications are presented in [8] -- including, but + not limited to, performances changes that may be expected, semantic + changes, and new features that may be requested through an enhanced + API. + + TCP features the ability to send "Urgent" data, the delivery of which + to the application may or may not be out-of-band. The use of this + feature is not recommended due to security implications and + implementation differences [20]. MPTCP requires contiguous data to + support its data sequence mapping over multiple segments, and + therefore the Urgent pointer cannot interrupt an existing mapping. + An MPTCP implementation MAY choose to support sending Urgent data, + and if it does, it SHOULD send the Urgent data on the soonest + available unassigned subflow sequence space. Incoming Urgent data + SHOULD be mapped to connection-level sequence space and delivered to + the application analogous to Urgent data in regular TCP. + +6.2. Interactions with Management Systems + + To enable interactions between TCP and network management systems, + the TCP [21] and TCP Extended Statistics (ESTATS) [22] MIBs have been + defined. MPTCP should share these MIBs for aspects that are designed + to be transparent to the application. + + It is anticipated that an MPTCP MIB will be defined in the future, + once experience of experimental MPTCP deployments is gathered. This + MIB would provide access to MPTCP-specific properties such as whether + MPTCP is enabled and the number and properties of the individual + paths in use. + +7. Interactions with Middleboxes + + As discussed in Section 2.2, it is a goal of MPTCP to be deployable + today and thus compatible with the majority of middleboxes. This + section summarizes the issues that may arise with NATs, firewalls, + proxies, intrusion detection systems, and other middleboxes that, if + not considered in the protocol design, may hinder its deployment. + + + +Ford, et al. Informational [Page 23] + +RFC 6182 MPTCP Architecture March 2011 + + + This section is intended primarily as a description of options and + considerations only. Protocol-specific solutions to these issues + will be given in the companion documents. + + Multipath TCP will be deployed in a network that no longer provides + just basic datagram delivery. A myriad of middleboxes are deployed + to optimize various perceived problems with the Internet protocols: + NATs primarily address IP address space shortage [15], Performance + Enhancing Proxies (PEPs) optimize TCP for different link + characteristics [17], firewalls [16] and intrusion detection systems + try to block malicious content from reaching a host, and traffic + normalizers [23] ensure a consistent view of the traffic stream to + Intrusion Detection Systems (IDS) and hosts. + + All these middleboxes optimize current applications at the expense of + future applications. In effect, future applications will often need + to behave in a similar fashion to existing ones, in order to increase + the chances of successful deployment. Further, the precise behavior + of all these middleboxes is not clearly specified, and implementation + errors make matters worse, raising the bar for the deployment of new + technologies. + + The following list of middlebox classes documents behavior that could + impact the use of MPTCP. This list is used in [5] to describe the + features of the MPTCP protocol that are used to mitigate the impact + of these middlebox behaviors. + + o NATs: Network Address Translators decouple the host's local IP + address (and, in the case of NAPTs, port) with that which is seen + in the wider Internet when the packets are transmitted through a + NAT. This adds complexity, and reduces the chances of success, + when signaling IP addresses. + + o PEPs: Performance Enhancing Proxies, which aim to improve the + performance of protocols over low-performance (e.g., high-latency + or high-error-rate) links. As such, they may "split" a TCP + connection and behavior such as proactive ACKing may occur, and + therefore it is no longer guaranteed that one host is + communicating directly with another. PEPs, firewalls, or other + middleboxes may also change the declared receive window size. + + o Traffic Normalizers: These aim to eliminate ambiguities and + potential attacks at the network level, and amongst other things, + are unlikely to permit holes in TCP-level sequence space (which + has an impact on MPTCP's retransmission and subflow sequence + numbering design choices). + + + + + +Ford, et al. Informational [Page 24] + +RFC 6182 MPTCP Architecture March 2011 + + + o Firewalls: on top of preventing incoming connections, firewalls + may also attempt additional protection such as sequence number + randomization (so a sender cannot reliably know what TCP sequence + number the receiver will see). + + o IDSs: Intrusion Detection Systems may look for traffic patterns to + protect a network and may have false positives with MPTCP and drop + the connections during normal operation. Future MPTCP-aware + middleboxes will require the ability to correlate the various + paths in use. + + o Content-Aware Firewalls: Some middleboxes may actively change data + in packets, such as rewriting URIs in HTTP traffic. + + In addition, all classes of middleboxes may affect TCP traffic in the + following ways: + + o TCP Options: some middleboxes may drop packets with unknown TCP + options or strip those options from the packets. + + o Segmentation and Coalescing: middleboxes (or even something as + close to the end host as TCP Segmentation Offloading (TSO) on a + Network Interface Card (NIC)) may change the packet boundaries + from those that the sender intended. It may do this by splitting + packets or coalescing them together. This leads to two major + impacts: where a packet boundary will be cannot be guaranteed and + what a middlebox will do with TCP options in these cases (they may + be repeated, dropped, or sent only once) cannot be said for sure. + +8. Contributors + + The authors would like to acknowledge the contributions of Andrew + McDonald and Bryan Ford to this document. + + The authors would also like to thank the following people for + detailed reviews: Olivier Bonaventure, Gorry Fairhurst, Iljitsch van + Beijnum, Philip Eardley, Michael Scharf, Lars Eggert, Cullen + Jennings, Joel Halpern, Juergen Quittek, Alexey Melnikov, David + Harrington, Jari Arkko, and Stewart Bryant. + +9. Acknowledgements + + Alan Ford, Costin Raiciu, Mark Handley, and Sebastien Barre are + supported by Trilogy (http://www.trilogy-project.org), a research + project (ICT-216372) partially funded by the European Community under + its Seventh Framework Program. The views expressed here are those of + the author(s) only. The European Commission is not liable for any + use that may be made of the information in this document. + + + +Ford, et al. Informational [Page 25] + +RFC 6182 MPTCP Architecture March 2011 + + +10. Security Considerations + + This informational document provides an architectural overview for + Multipath TCP and so does not, in itself, raise any security issues. + A separate threat analysis [12] lists threats that can exist with a + Multipath TCP. However, a protocol based on the architecture in this + document will have a number of security requirements. The high-level + goals for such a protocol are identified in Section 2.3, whilst + Section 5.8 provides more detailed discussion of security + requirements and design decisions which are applied in the MPTCP + protocol design [5]. + +11. References + +11.1. Normative References + + [1] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, + September 1981. + + [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + +11.2. Informative References + + [3] Wischik, D., Handley, M., and M. Bagnulo Braun, "The Resource + Pooling Principle", ACM SIGCOMM CCR vol. 38 num. 5, pp. 47-52, + October 2008, + <http://ccr.sigcomm.org/online/files/p47-handleyA4.pdf>. + + [4] Hopps, C., "Analysis of an Equal-Cost Multi-Path Algorithm", + RFC 2992, November 2000. + + [5] Ford, A., Raiciu, C., Handley, M., and O. Bonaventure, "TCP + Extensions for Multipath Operation with Multiple Addresses", + Work in Progress, March 2011. + + [6] Stewart, R., "Stream Control Transmission Protocol", RFC 4960, + September 2007. + + [7] Raiciu, C., Handley, M., and D. Wischik, "Coupled Congestion + Control for Multipath Transport Protocols", Work in Progress, + March 2011. + + [8] Scharf, M. and A. Ford, "MPTCP Application Interface + Considerations", Work in Progress, March 2011. + + [9] Carpenter, B. and S. Brim, "Middleboxes: Taxonomy and Issues", + RFC 3234, February 2002. + + + +Ford, et al. Informational [Page 26] + +RFC 6182 MPTCP Architecture March 2011 + + + [10] Carpenter, B., "Internet Transparency", RFC 2775, + February 2000. + + [11] Mathis, M., Mahdavi, J., Floyd, S., and A. Romanow, "TCP + Selective Acknowledgment Options", RFC 2018, October 1996. + + [12] Bagnulo, M., "Threat Analysis for TCP Extensions for Multipath + Operation with Multiple Addresses", RFC 6181, March 2011. + + [13] Becke, M., Dreibholz, T., Iyengar, J., Natarajan, P., and M. + Tuexen, "Load Sharing for the Stream Control Transmission + Protocol (SCTP)", Work in Progress, December 2010. + + [14] Ford, B. and J. Iyengar, "Breaking Up the Transport Logjam", + ACM HotNets, October 2008. + + [15] Srisuresh, P. and K. Egevang, "Traditional IP Network Address + Translator (Traditional NAT)", RFC 3022, January 2001. + + [16] Freed, N., "Behavior of and Requirements for Internet + Firewalls", RFC 2979, October 2000. + + [17] Border, J., Kojo, M., Griner, J., Montenegro, G., and Z. + Shelby, "Performance Enhancing Proxies Intended to Mitigate + Link-Related Degradations", RFC 3135, June 2001. + + [18] Ramaiah, A., Stewart, R., and M. Dalal, "Improving TCP's + Robustness to Blind In-Window Attacks", RFC 5961, August 2010. + + [19] Eddy, W., "TCP SYN Flooding Attacks and Common Mitigations", + RFC 4987, August 2007. + + [20] Gont, F. and A. Yourtchenko, "On the Implementation of the TCP + Urgent Mechanism", RFC 6093, January 2011. + + [21] Raghunarayan, R., "Management Information Base for the + Transmission Control Protocol (TCP)", RFC 4022, March 2005. + + [22] Mathis, M., Heffner, J., and R. Raghunarayan, "TCP Extended + Statistics MIB", RFC 4898, May 2007. + + [23] Handley, M., Paxson, V., and C. Kreibich, "Network Intrusion + Detection: Evasion, Traffic Normalization, and End-to-End + Protocol Semantics", Usenix Security 2001, 2001, <http:// + www.usenix.org/events/sec01/full_papers/handley/handley.pdf>. + + + + + + +Ford, et al. Informational [Page 27] + +RFC 6182 MPTCP Architecture March 2011 + + +Authors' Addresses + + Alan Ford + Roke Manor Research + Old Salisbury Lane + Romsey, Hampshire SO51 0ZN + UK + Phone: +44 1794 833 465 + EMail: alan.ford@roke.co.uk + + Costin Raiciu + University College London + Gower Street + London WC1E 6BT + UK + EMail: c.raiciu@cs.ucl.ac.uk + + Mark Handley + University College London + Gower Street + London WC1E 6BT + UK + EMail: m.handley@cs.ucl.ac.uk + + Sebastien Barre + Universite catholique de Louvain + Pl. Ste Barbe, 2 + Louvain-la-Neuve 1348 + Belgium + Phone: +32 10 47 91 03 + EMail: sebastien.barre@uclouvain.be + + Janardhan Iyengar + Franklin and Marshall College + Mathematics and Computer Science + PO Box 3003 + Lancaster, PA 17604-3003 + USA + Phone: 717-358-4774 + EMail: jiyengar@fandm.edu + + + + + + + + + + + +Ford, et al. Informational [Page 28] + |