MPTCP                                                     C. Paasch, Ed.
Internet-Draft                                            O. Bonaventure
Intended status: Informational                                 UCLouvain
Expires: April 18, 2013                                 October 15, 2012


                       MultiPath TCP Low Overhead
                   draft-paasch-mptcp-lowoverhead-00

Abstract

   This document describes a low overhead connection establishment
   mechanism for Multipath TCP.  Its goal is to reduce the computational
   overhead of establishing an MPTCP connection and the associated TCP
   subflows in controlled environments where security attacks are not a
   concern.

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   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."

   This Internet-Draft will expire on April 18, 2013.

Copyright Notice

   Copyright (c) 2012 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.



Paasch & Bonaventure     Expires April 18, 2013                 [Page 1]


Internet-Draft             MPTCP Low Overhead               October 2012


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  Connection initiation . . . . . . . . . . . . . . . . . . . . . 3
   3.  Starting a new subflow  . . . . . . . . . . . . . . . . . . . . 6
   4.  Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
     4.1.  Generating the token  . . . . . . . . . . . . . . . . . . . 7
     4.2.  Stateless Servers . . . . . . . . . . . . . . . . . . . . . 7
   5.  Security Considerations . . . . . . . . . . . . . . . . . . . . 8
   6.  Informative References  . . . . . . . . . . . . . . . . . . . . 8
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . . 8








































Paasch & Bonaventure     Expires April 18, 2013                 [Page 2]


Internet-Draft             MPTCP Low Overhead               October 2012


1.  Introduction

   This document introduces a variant of the MPTCP handshake that is
   suitable for an environment where security attacks are not an issue.
   The proposed handshake is a low overhead, low security version of the
   MPTCP handshake defined in [I-D.ietf-mptcp-multiaddressed].

   Its goal is to provide an MPTCP handshake and authentication
   mechanism, reducing the computational overhead provided by MPTCP
   version 0.


2.  Connection initiation

   MultiPath TCP uses the MP_CAPABLE option in the handshake for the
   initial subflow.  This handshake was designed to meet several
   requirements.  When designing another variant of the Multipath TCP
   handshake, it is important to have these requirements in mind.  These
   requirements are :

   1.  Detect whether the peer supports MultiPath TCP.

   2.  Each host generates a locally unique token that unambiguously
       identifies the Multipath TCP connection

   3.  Agree on an Initial Data Sequence Number to initialize the MPTCP
       state on each direction of the Multipath TCP connection

   Before discussing the proposed low overhead handshake, it is
   important to have in mind how [I-D.ietf-mptcp-multiaddressed] meets
   the three requirements above.

   The first requirement is simply met by using a Multipath TCP specific
   option like all TCP extensions.

   To meet the second requirement, a simple solution would have been to
   encode the token inside the MP_CAPABLE option.  However, this would
   have increased the size of the MP_CAPABLE option.  This would have
   limited the possibility of extending Multipath TCP later by adding
   new TCP options that require space inside the SYN segments.  To
   minimize the number of option bytes consummed in the SYN segment,
   [I-D.ietf-mptcp-multiaddressed] uses a hash function to compute the
   token based on the keys exchanged in clear.  However, using hash
   functions implies that implementations must handle the possible
   collisions which increases the complexity of the Multipath TCP
   handshake.

   The third requirement is more subtle but is also important to ensure



Paasch & Bonaventure     Expires April 18, 2013                 [Page 3]


Internet-Draft             MPTCP Low Overhead               October 2012


   the reliability of a Multipath TCP connection.  Let us assume that
   Multipath TCP hosts do not agree on an Initial Data Sequence Number.
   Consider the following scenario.  Host A opens the initial TCP
   subflow of the Multipath TCP connection.  Host B opens a second
   subflow in this Multipath TCP connection.  Host B sends one byte with
   DSN x over the initial subflow, but this data never reaches host A.
   Host B then sends one byte, starting at DSN x+1 over the second
   subflow.  If host A does not know the Initial Data Sequence Number
   used by host B, it cannot determine whether the byte received over
   the second subflow can be acknowledged at the DSN level or not.
   [I-D.ietf-mptcp-multiaddressed] solves this problem by allowing the
   two hosts to derive the Initial Data Sequence Number from the keys
   exchanged in the MP_CAPABLE option.  However, this is achieved by
   computing a hash over the exchanged keys, which increases the
   computational overhead of generating/processing the MP_CAPABLE
   option.

   The figure below provides a simpler and low overhead handshake that
   meets the three requirements identified above.

                Host A                               Host B
              ----------                           ----------
              Address A1                           Address B1
              ----------                           ----------
                  |                                    |
                  |  SYN+MP_CAPABLE(Token-A, Rand-A)   |
                  |----------------------------------->|
                  |                                    |
                  |SYN/ACK+MP_CAPABLE(Token-B, Rand-B) |
                  |<-----------------------------------|
                  |                                    |
                  |  ACK+MP_CAPABLE(Token-A, Rand-A,   |
                  |                 Token-B, Rand-B)   |
                  |----------------------------------->|

                     Handshake of the initial subflow.

                                 Figure 1

   MPTCP's establishment of the initial subflow follows TCP's regular
   3-way handshake, but the SYN, SYN/ACK and ACK packets contain the
   MP_CAPABLE-option.  The proposed MP_CAPABLE option contains one 32
   bits token and one 32 bits random number in the SYN and SYN/ACK
   segments.  The third ACK includes an MP_CAPABLE option that contains
   the two tokens and random numbers.  The tokens are used to explictely
   exchange identifier of the Multipath TCP connection.  The random
   numbers, combined with the tokens produce the Initial Data Sequence
   Numbers.  Echoing all the information back in the third ACK allows



Paasch & Bonaventure     Expires April 18, 2013                 [Page 4]


Internet-Draft             MPTCP Low Overhead               October 2012


   stateless operation of the server.

   The format of the proposed MP_CAPABLE option is proposed in the
   figures below.

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------+---------------+-------+-------+---------------+
     |     Kind      |    Length     |Subtype|Version|A|B|C|D|E|F|G|H|
     +---------------+---------------+-------+-------+---------------+
     |                     Sender's Token (32 bits)                  |
     +---------------------------------------------------------------+
     |                 Sender's Random Number (32 bits)              |
     +---------------------------------------------------------------+

      Format of the MP_CAPABLE-option in the SYN and SYN/ACK packets

                                 Figure 2


                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------+---------------+-------+-------+---------------+
     |     Kind      |    Length     |Subtype|Version|A|B|C|D|E|F|G|H|
     +---------------+---------------+-------+-------+---------------+
     |                     Sender's Token (32 bits)                  |
     +---------------------------------------------------------------+
     |                 Sender's Random Number (32 bits)              |
     +---------------------------------------------------------------+
     |                     Receiver's Token (32 bits)                |
     +---------------------------------------------------------------+
     |                 Receivers's Random Number (32 bits)           |
     +---------------------------------------------------------------+

     Format of the MP_CAPABLE-option in the third ACK of the handshake

                                 Figure 3

   The format of the MP_CAPABLE option is shown in Figure 2.  To
   indicate that this MP_CAPABLE contains tokens/random numbers and not
   keys (as in [I-D.ietf-mptcp-multiaddressed], the Version-field is set
   to 1.  The message format of the third ACK's MP_CAPABLE option is
   show in Figure 3.

   The Initial Data Sequence Number (IDSN) serves to initialize the
   MPTCP state on the end-hosts in the same way as TCP's sequence
   numbers do during the 3-way handshake.  There is one IDSN for each
   direction of the data-stream.  The IDSN for the data from the client



Paasch & Bonaventure     Expires April 18, 2013                 [Page 5]


Internet-Draft             MPTCP Low Overhead               October 2012


   to the server is the concatenation of Rand-A and Token-A (Rand-A||
   Token-A).  Rand-A is thus the high-order 32 bits of the IDSN, and
   Token-A the low-order 32 bits.  For the data from server to client,
   the IDSN is the concatenation of Rand-B and Token-B (Rand-B||
   Token-B).  Rand-A and Rand-B MUST be random numbers with sufficient
   randomness so that they are hard to guess.  Recommendations for
   generating random numers for use in keys are given in [RFC4086].

   The meaning of the other fields and behavior of the end-hosts during
   the MP_CAPABLE exchange is the same as specified in
   [I-D.ietf-mptcp-multiaddressed].


3.  Starting a new subflow

   Once an MPTCP connection has been established and the tokens
   exchanged, new subflows can be established.  The establishment of the
   new subflows follows the handshake as show in Figure 4.

               Host A                                Host B
              ----------                           ----------
              Address A2                           Address B2
              ----------                           ----------
                  |                                    |
                  |       SYN + MP_JOIN(Token B)       |
                  |----------------------------------->|
                  |                                    |
                  |         SYN/ACK + MP_JOIN()        |
                  |<-----------------------------------|
                  |                                    |
                  |        ACK + MP_JOIN(Token B)      |
                  |----------------------------------->|

                       Handshake for a new subflow.

                                 Figure 4

   As the low-overhead version of MPTCP does not try to protect against
   hijacking attacks, the only goal of the MP_JOIN inside the 3-way
   handshake is to identify the MPTCP connection this subflow is
   joining.  The token inside the MP_JOIN of the SYN-segment allows the
   server to identify the connection.  The SYN/ACK also contains an
   MP_JOIN option because the server needs to signal to the client that
   it indeed received the SYN together with the MP_JOIN and that there
   is no middlebox that removes MPTCP options on this path.  Finally,
   the client replies with the third ack.  This third ack contains again
   token B. This allows the server to handle MP_JOIN's in a stateless
   manner, as described below.  The third ack is sent in a reliable



Paasch & Bonaventure     Expires April 18, 2013                 [Page 6]


Internet-Draft             MPTCP Low Overhead               October 2012


   manner as explained in [I-D.ietf-mptcp-multiaddressed].

                         1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +---------------+---------------+-------+-------+---------------+
     |     Kind      |     Length    |Subtype|     |B|   Address ID  |
     +---------------+---------------+-------+-------+---------------+
     |                     Receiver's Token (32 bits)                |
     |                      (if option Length == 8)                  |
     +---------------------------------------------------------------+

                       Format of the MP_JOIN-option

                                 Figure 5

   The semantics of the backup-bit "B" and the Address ID are the same
   as in [I-D.ietf-mptcp-multiaddressed].


4.  Operation

4.1.  Generating the token

   The token must only be locally unique.  The method used to generate
   the token is implementation specific.  One possible way to generate
   the token is by applying a block-cipher on a counter together with a
   local secret.  This approach has the benefit of a higher probability
   of uniqueness of the token.  We will only have a token collision
   after the counter has wrapped around.  This means, that a connection
   must have survived 2^32 other connections to cause a collision.
   Thus, a token collision is less likely to occur than with
   [I-D.ietf-mptcp-multiaddressed].

4.2.  Stateless Servers

   To allow stateless SYN+Join handling, the server has to perform the
   following upon reception of a SYN:

   o  Check whether there exists an MPTCP-connection corresponding to
      the token inside the MP_JOIN option.

   o  Send a SYN/ACK as it is done on today's stateless servers.

   When receiving the third ACK (sent reliably as it is done in today's
   MPTCP), the server verifies that indeed it has generated a SYN/ACK
   (like regular TCP's SYN-cookie mechanism) and thanks to the token
   echoed back in the third ACK, the server can find the MPTCP-session
   this subflow is joining.



Paasch & Bonaventure     Expires April 18, 2013                 [Page 7]


Internet-Draft             MPTCP Low Overhead               October 2012


   Handling the SYN+Join in a stateless manner allows the server to
   protect itself against attackers that are flooding the server with
   SYN+Join messages.  As the server does not need to create state when
   sending the SYN/ACK, flooding performed by the attacker will not
   prevent real clients from establishing new subflows.


5.  Security Considerations

   The proposed solution removes the HMAC authentication mechanism
   described in [I-D.ietf-mptcp-multiaddressed].  It is assumed that
   end-hosts will only use this low-overhead version of MPTCP for non-
   security critical traffic or in controlled environments like isolated
   data-centers.

   Security-critical traffic is nowadays typically sent over SSL/TLS or
   similar secure application level protocols.  This is done because the
   transport protocols like TCP do not provide a sufficient security.
   An application using SSL over MPTCP benefits from the same security
   provided by SSL.  There is one downside of using SSL over MPTCP.  If
   an attacker manages to join an existing connection thanks to a JOIN-
   exchange, he can inject data into the SSL-session.  However, thanks
   to the MAC-authentication of the SSL messages, the end-hosts will
   tear down the SSL session.


6.  Informative References

   [I-D.ietf-mptcp-multiaddressed]
              Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,
              "TCP Extensions for Multipath Operation with Multiple
              Addresses", draft-ietf-mptcp-multiaddressed-10 (work in
              progress), October 2012.

   [RFC4086]  Eastlake, D., Schiller, J., and S. Crocker, "Randomness
              Requirements for Security", BCP 106, RFC 4086, June 2005.


Authors' Addresses

   Christoph Paasch (editor)
   UCLouvain
   Place Sainte Barbe, 2
   Louvain-la-Neuve,   1348
   BE

   Email: christoph.paasch@uclouvain.be




Paasch & Bonaventure     Expires April 18, 2013                 [Page 8]


Internet-Draft             MPTCP Low Overhead               October 2012


   Olivier Bonaventure
   UCLouvain
   Place Sainte Barbe, 2
   Louvain-la-Neuve,   1348
   BE

   Email: olivier.bonaventure@uclouvain.be












































Paasch & Bonaventure     Expires April 18, 2013                 [Page 9]