Internet DRAFT - draft-bonaventure-mptcp-addr

draft-bonaventure-mptcp-addr







MPTCP Working Group                                       O. Bonaventure
Internet-Draft                                                 UCLouvain
Updates: RFC6824 (if approved)                             July 06, 2015
Intended status: Informational
Expires: January 7, 2016


                  Multipath TCP Address Advertisement
                    draft-bonaventure-mptcp-addr-00

Abstract

   Multipath TCP [RFC6824] defines the ADD_ADDR option to allow a host
   to announce its addresses to the remote host.  In this document we
   analyze some of the issues with the address advertisement technique
   defined [RFC6824] and propose some modifications to mitigate these
   problems.  We also show that the reverse DNS could be an excellent
   alternative to advertise the stable addresses of a server.

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 January 7, 2016.

Copyright Notice

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



Bonaventure              Expires January 7, 2016                [Page 1]

Internet-Draft                 MPTCP ADDR                      July 2015


   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Issues with ADD_ADDR  . . . . . . . . . . . . . . . . . . . .   3
     2.1.  Usage of the Address Identifiers  . . . . . . . . . . . .   4
     2.2.  Reliability of the ADD_ADDR Option  . . . . . . . . . . .   5
   3.  Learning the Addresses bound to a host through the DNS  . . .   5
   4.  Conclusion  . . . . . . . . . . . . . . . . . . . . . . . . .   7
   5.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   7
   6.  Informative References  . . . . . . . . . . . . . . . . . . .   7
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   Multipath TCP is an extension to TCP [RFC0793] that was specified in
   [RFC6824].  Multipath TCP was designed with multi-addressed hosts in
   mind [RFC6182].  A Multipath TCP connection is composed of subflows
   that are established between any of the addresses of the
   communicating hosts.  [RFC6824] defines two options to manage the
   host addresses :

   o  ADD_ADDR is used to announce one address bound to a host (possibly
      combined with a port number)

   o  REMOVE_ADDR is used to indicate that an address previously
      attached to a host is not anymore attached to this host

   To cope with Network Address Translation (NAT), the ADD_ADDR and
   REMOVE_ADDR options contain an address identifier encoded as an 8
   bits integer.

   When the initial subflow is created, it is assumed to be initiated
   from the address of the client whose identifier is 0 towards the
   address of the server whose identifier is also 0.  Both the client
   and the server can use ADD_ADDR to advertise the other addresses that
   they use.  When an additional subflow is created, the MP_JOIN option
   placed in the SYN (resp.  SYN+ACK) contains the identifier of the
   address used to create (resp. accept) the subflow.

   Experience with Multipath TCP shows that these two options allow to
   support multi-homed or dual-stack servers [TMA2015] and mobile
   devices [Cellnet12].  While the ADD_ADDR option has been supported in
   the Linux implementation of Multipath TCP, other implementors have
   chosen to not support it [I-D.eardley-mptcp-implementations-survey]
   while still supporting the REMOVE_ADDR option.



Bonaventure              Expires January 7, 2016                [Page 2]

Internet-Draft                 MPTCP ADDR                      July 2015


   In this document, we first analyse in Section 2 several issues with
   the current ADD_ADDR option as defined in [RFC6824] and
   [I-D.ietf-mptcp-rfc6824bis].  Then in Section 3 we show how Multipath
   TCP could leverage the existing DNS to obtain information about the
   different addresses attached to a server.

2.  Issues with ADD_ADDR

   A first issue are the security risks if an attacker is able to send
   spoofed TCP segments that include the ADD_ADDR option.  Multipath TCP
   [RFC6824] defines the ADD_ADDR option shown in Figure 1.

                          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| IPVer |  Address ID   |
     +---------------+---------------+-------+-------+---------------+
     |          Address (IPv4 - 4 octets / IPv6 - 16 octets)         |
     +-------------------------------+-------------------------------+
     |   Port (2 octets, optional)   |
     +-------------------------------+


                       Figure 1: The ADD_ADDR option

   From a security viewpoint, this option introduces a potential
   security risk if an attacker is able to send a spoofed ADD_ADDR
   option.  [I-D.ietf-mptcp-rfc6824bis] proposes a new format for this
   option by placing a truncated HMAC inside the option to authenticate
   it.  The format for this new option (ADD_ADDR2) is shown in 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| IPVer |  Address ID   |
     +---------------+---------------+-------+-------+---------------+
     |          Address (IPv4 - 4 octets / IPv6 - 16 octets)         |
     +-------------------------------+-------------------------------+
     |   Port (2 octets, optional)   |                               |
     +-------------------------------+                               |
     |                      Truncated HMAC (8 octets)                |
     |                               +-------------------------------+
     |                               |
     +-------------------------------+


                      Figure 2: The ADD_ADDR2 option




Bonaventure              Expires January 7, 2016                [Page 3]

Internet-Draft                 MPTCP ADDR                      July 2015


2.1.  Usage of the Address Identifiers

   A second issue with the ADD_ADDR option is the management of the
   address identifiers.  At first glance, a Multipath TCP implementation
   could maintain a table of the IP addresses bound to the local host
   and associate one identifier with each address.  When a new IP
   address is configured, it is added to the table and the index in the
   table can be used as its identifier.  If a local address stops to be
   bound to the host, the Multipath TCP can extract its identifier from
   the table and send the REMOVE_ADDR option over all existing Multipath
   TCP connections.  Unfortunately, such a naive implementation is not
   possible with the current Multipath TCP implementation.

   As defined in [RFC6824], the identifiers 0 are assigned to the
   addresses that were used for the establishment of the initial
   subflow.  This is because the MP_CAPABLE option does not contain any
   field to encode an address identifier in contrast with the MP_JOIN
   option.

   An annoying consequence of this design choice is that a Multipath TCP
   implementation must at least remember the identifier of the address
   that was used to create the initial subflow.  It cannot simply rely
   on the global address table described above because when an address
   fails, it must be able to send a REMOVE_ADDR with for address
   identifier 0 if this address was used to create the initial subflow.
   This forces a Multipath TCP implementation to at least store the
   address identifier of the initial subflow for each connection.

   One suggestion to ease the maintenance of the addresses on a
   Multipath TCP implementation would be to stop assuming that the
   address identifier 0 corresponds to the address used to establish the
   initial subflow.  Instead, the implementation should maintain a table
   of all the addresses that it uses with Multipath TCP and assign one
   strictly positive identifier to each address.  In this case, each
   address assigned to the host has the same address identifier for all
   the Multipath TCP connections.  When a new address is learned, it is
   automatically assigned the next available address identifier and can
   be announced over all existing Multipath TCP connections depending on
   the policy applied for the address announcements.  When an address is
   not bound anymore to this host, then the same REMOVE_ADDR option can
   be sent over all Multipath TCP connections.

   There is one missing element in the solution discussed above : how to
   announce the real address identifier that corresponds to the initial
   subflow.  A simple solution to this problem is to use the ADD_ADDR
   option without an address as shown in Figure 3.





Bonaventure              Expires January 7, 2016                [Page 4]

Internet-Draft                 MPTCP ADDR                      July 2015


                          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| IPVer |  Address ID   |
     +---------------+---------------+-------+-------+---------------+


    Figure 3: The ADD_ADDR option indicating the address identifier of
                            the current subflow

   This empty ADD_ADDR option indicates the address identifier of the
   address on the subflow over which it has been transmitted.  It MUST
   only be used on the initial subflow since on the other subflows the
   same information is carried reliably in the MP_JOIN option of the SYN
   segments.  The IPVer field of this ADD_ADDR option MUST match the IP
   version used for the initial subflow.

2.2.  Reliability of the ADD_ADDR Option

   A third issue with the ADD_ADDR option is that since it is
   transmitted as a TCP option, it is not delivered reliably
   [Cellnet12].  If it announces an IPv4 address, the ADD_ADDR option
   could be inserted inside a segment that carries data and would thus
   be delivered reliably like the user data.  However, if the ADD_ADDR
   option contains an IPv6 address, it might be too large to fit inside
   a segment that already contains a DSS option and possibly other
   options such as the [RFC1323] timestamps.  Given its length, the
   ADD_ADDR2 option cannot be placed in the same segment as a DSS
   option.  In these two cases, the ADD_ADDR/ADD_ADDR2 option will be
   often transmitted inside a duplicate ACK that is not delivered
   reliably.  [Cellnet12] proposes a method to improve the reliability
   of the transmission of the ADD_ADDR option, but to our knowledge this
   method has never been implemented.  To cope with packet losses, some
   implementations could decide to transmit several copies of the
   ADD_ADDR option over the same connection.

3.  Learning the Addresses bound to a host through the DNS

   [RFC6824] defines the ADD_ADDR option as the basic technique to learn
   the addresses bound to the remote host.  Given the importance of
   learning those addresses, one would expect this technique to be
   supported by all Multipath TCP implementations.  This is not the
   case, since only the Linux implementation of Multipath TCP supports
   the ADD_ADDR option [I-D.eardley-mptcp-implementations-survey] as
   defined in [RFC6824].  The other implementations do not support this
   option [I-D.eardley-mptcp-implementations-survey].  This design
   choice was probably motivated by security concerns with this option
   and also because these implementations assume that only the client



Bonaventure              Expires January 7, 2016                [Page 5]

Internet-Draft                 MPTCP ADDR                      July 2015


   creates the subflows and the server is single-homed.  In this case,
   the client (e.g. a smartphone), can create the subflows from any of
   its own addresses towards the single address of the server.

   However, with the deployment of IPv6, the number of dual-stack
   clients and servers will grow and it will be important for a host
   that creates a connection towards the IPv4 address of a server to
   also learn the IPv6 address associated to this particular server.  We
   show in this section that the DNS could be used to distribute the
   addressing information that is required by Multipath TCP.

   There are three possibilities to use to DNS to distribute the list of
   addresses associated to a given server.  A first approach is to use
   the existing forward DNS and consider that all the 'A' and 'AAAA'
   records associated with a name correspond to the same server and can
   be used to establish Multipath TCP subflows.  Unfortunately, when
   several records are associated to a DNS name, this is often for load
   balancing reasons and those records point to the addresses of
   different hosts.  A second approach would be to define a new DNS
   record that contains the list of the IP addresses associated to a
   given host.  However, this would require to deploy a new type of DNS
   record.  Proposals that were made in the past to define new RR types
   were not endorsed by the IETF (e.g., one single RR for dual stack
   hosts [I-D.li-dnsext-ipv4-ipv6] or a distinct RR for IPv4-Embedded
   IPv6 Address [I-D.boucadair-behave-dns-a64]).

   The third approach that we propose in this document is to use the
   reverse DNS to encode the information about the alternate addresses
   that are associated to a given host.  The reverse DNS tree typically
   only contains PTR records that associate names to reverse IPv4 or
   IPv6 addresses.  However, nothing prevents the use of the reverse DNS
   to store A and AAAA records.  This is the approach that we recommend.
   It does not require any change to the DNS protocol and can leverage
   dynamic updates to the DNS [RFC3007] and DNSSec to authenticate the
   advertisement of addresses [RFC4034].

   As an example, consider the server whose name is mptcp.example.org
   and which is reachable via the following IP addresses taken from the
   documentation prefixes [RFC3849] [RFC5737] :

   o  192.0.2.10

   o  198.51.100.23

   o  2001:db8::1234

   The forward DNS will contain the following records for this server




Bonaventure              Expires January 7, 2016                [Page 6]

Internet-Draft                 MPTCP ADDR                      July 2015


     mptcp.example.org.    7200    IN  A     192.0.2.10
     mptcp.example.org.    7200    IN  A     198.51.100.23
     mptcp.example.org.    7200    IN      AAAA  2001:db8::1234


   In addition, the following entries would be added in the reverse DNS.

      10.2.0.192.in-addr.arpa. 7200 IN AAAA  2001:db8::1234
      10.2.0.192.in-addr.arpa. 7200 IN A     198.51.100.23


      23.100.51.198.in-addr.arpa. 7200 IN  AAAA  2001:db8::1234
      23.100.51.198.in-addr.arpa. 7200 IN  A     192.0.2.10


      4.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
           8.b.d.0.1.0.0.2.ip6.arpa. 7200 IN A  192.0.2.10
      4.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
           8.b.d.0.1.0.0.2.ip6.arpa. 7200 IN A  198.51.100.23


   These reverse records can, of course, be signed with DNSSec
   [RFC4034].

4.  Conclusion

   In this document, we have discussed several issues with the
   advertisement of addresses with the ADD_ADDR and ADD_ADDR2 options in
   Multipath TCP.  Then, we have shown that the reverse DNS can be used
   by servers to advertise their alternate IP addresses.  This does not
   require any modification to the DNS protocol and could be used by
   applications that do not want or cannot rely on the ADD_ADDR option.

5.  Acknowledgements

   This work was partially supported by the FP7-Trilogy2 project.  This
   document was improved thanks to the comments and suggestions received
   from Fabien Duchene, Benjamin Hesmans and Mohammed Boucadair.

6.  Informative References

   [Cellnet12]
              Paasch, C., Detal, G., Duchene, F., Raiciu, C., and O.
              Bonaventure, "Exploring Mobile/WiFi Handover with
              Multipath TCP", ACM SIGCOMM workshop on Cellular Networks
              (Cellnet12) , 2012,
              <http://inl.info.ucl.ac.be/publications/
              exploring-mobilewifi-handover-multipath-tcp>.



Bonaventure              Expires January 7, 2016                [Page 7]

Internet-Draft                 MPTCP ADDR                      July 2015


   [I-D.boucadair-behave-dns-a64]
              Boucadair, M. and E. Burgey, "A64: DNS Resource Record for
              IPv4-Embedded IPv6 Address", draft-boucadair-behave-dns-
              a64-02 (work in progress), September 2010.

   [I-D.eardley-mptcp-implementations-survey]
              Eardley, P., "Survey of MPTCP Implementations", draft-
              eardley-mptcp-implementations-survey-02 (work in
              progress), July 2013.

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

   [I-D.li-dnsext-ipv4-ipv6]
              Li, L., Li, Z., and X. Duan, "DNS Extensions to Support
              IPv4 and IPv6", draft-li-dnsext-ipv4-ipv6-02 (work in
              progress), October 2009.

   [RFC0793]  Postel, J., "Transmission Control Protocol", STD 7, RFC
              793, September 1981.

   [RFC1323]  Jacobson, V., Braden, B., and D. Borman, "TCP Extensions
              for High Performance", RFC 1323, May 1992.

   [RFC3007]  Wellington, B., "Secure Domain Name System (DNS) Dynamic
              Update", RFC 3007, November 2000.

   [RFC3849]  Huston, G., Lord, A., and P. Smith, "IPv6 Address Prefix
              Reserved for Documentation", RFC 3849, July 2004.

   [RFC4034]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "Resource Records for the DNS Security Extensions",
              RFC 4034, March 2005.

   [RFC5737]  Arkko, J., Cotton, M., and L. Vegoda, "IPv4 Address Blocks
              Reserved for Documentation", RFC 5737, January 2010.

   [RFC6182]  Ford, A., Raiciu, C., Handley, M., Barre, S., and J.
              Iyengar, "Architectural Guidelines for Multipath TCP
              Development", RFC 6182, March 2011.

   [RFC6824]  Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,
              "TCP Extensions for Multipath Operation with Multiple
              Addresses", RFC 6824, January 2013.




Bonaventure              Expires January 7, 2016                [Page 8]

Internet-Draft                 MPTCP ADDR                      July 2015


   [TMA2015]  Hesmans, B., Hoang Tran-Viet, ., Sadre, R., and O.
              Bonaventure, "A first look at real Multipath TCP traffic",
              TMA 2015 , April 2015,
              <http://inl.info.ucl.ac.be/publications/
              first-look-real-multipath-tcp-traffic>.

Author's Address

   Olivier Bonaventure
   UCLouvain

   Email: Olivier.Bonaventure@uclouvain.be







































Bonaventure              Expires January 7, 2016                [Page 9]