Internet DRAFT - draft-bonaventure-mptcp-timestamp
draft-bonaventure-mptcp-timestamp
MPTCP Working Group O. Bonaventure
Internet-Draft UCLouvain
Intended status: Experimental July 02, 2015
Expires: January 3, 2016
Multipath TCP timestamp option
draft-bonaventure-mptcp-timestamp-01
Abstract
The TCP timestamps defined in [RFC1323] were designed to improve
round-trip-time estimations and provide protection against wrapped
sequence numbers (PAWS). This draft clarifies the utilisation of
timestamps by Multipath TCP and proposes a new timestamp option that
better suits the needs of Multipath TCP.
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 3, 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
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Bonaventure Expires January 3, 2016 [Page 1]
Internet-Draft MPTCP-TS July 2015
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. The TCP Timestamps option and Multipath TCP . . . . . . . . . 3
3. The Multipath TCP Timestamp option . . . . . . . . . . . . . 4
4. Security Considerations . . . . . . . . . . . . . . . . . . . 5
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . 5
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
8.1. Normative References . . . . . . . . . . . . . . . . . . 6
8.2. Informative References . . . . . . . . . . . . . . . . . 6
Appendix A. Changelog . . . . . . . . . . . . . . . . . . . . . 6
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Introduction
The Timestamps option was proposed in [RFC1323]. Each Timestamps
option contains two timestamps. The first one corresponds to the
current value of the sender's clock. The second timestamp allows to
echo the most recent timestamp received from the remote host. The
utilisation of this option can be negotiated on a per-connection
basis during the three-way handshake. The timestamps option was
motivated by two usages :
o improve the accuracy of the round-trip-time measurements
o provide protection against wrapped TCP sequence numbers (PAWS)
Although these two usages have completely different purposes, they
are coupled in [RFC1323]. [RFC7323] goes further by requiring that
the TCP timestamps option be included in all segments once the option
has been negotiated in the three-way handshake. Forcing the
utilisation of this option in all segments is required to support
PAWS. However, there is no reason to force TCP hosts to include the
timestamp option in all segments when PAWS is not required.
In practice, there are two important use cases where PAWS is not
required. The first is when the TCP connections are so short that
TCP sequence numbers cannot wrap around. The second use case is when
Multipath TCP is used. Multipath TCP, defined in [RFC6824], is a TCP
extension that enables a TCP connection to exchange data over
multiple paths. This TCP extension uses 64 bits sequence number
which solves the PAWS problem in a cleaner way than [RFC7323]. Once
Multipath TCP has been negotiated, the PAWS part of [RFC1323] becomes
useless and should be disabled.
Bonaventure Expires January 3, 2016 [Page 2]
Internet-Draft MPTCP-TS July 2015
This document is organised as follows. We first summarize in section
Section 2 the issues with the TCP timestamps option defined in
[RFC1323]. We then propose in section Section 3 a Multipath TCP
Timestamp option that should be used by Multipath TCP implementations
instead of the regular [RFC7323] timestamps options.
2. The TCP Timestamps option and Multipath TCP
The TCP timestamps option defined in [RFC1323] is encoded as shown in
figure Figure 1.
+-------+-------+---------------------+---------------------+
|Kind=8 | 10 | TS Value (TSval) |TS Echo Reply (TSecr)|
+-------+-------+---------------------+---------------------+
1 1 4 4
Figure 1: Original RFC1323 Timestamps option
This option consummes 10 bytes. When [RFC1323] was published,
consumming 10 bytes in the SYN segment to negotiate the utilisation
of this option and later in all data segments was not a severe
concern given the limited number of TCP options that were used at
that time. This is not anymore the case today with Multipath TCP
[RFC6824] or the Selective Acknowledgements [RFC2018] option.
A Multipath TCP implementation SHOULD not use the [RFC7323]
timestamps option on Multipath TCP connections. However, a regular
TCP connection SHOULD use the [RFC7323] timestamp option to protect
against wrapped sequence numbers. To achieve this objective,
Multipath TCP implementations SHOULD operate as follows :
o an active Multipath TCP opener SHOULD place both the Timestamps
and MP_CAPABLE options in SYN segments when trying to open a TCP
connection unless the remote host (and the path towards this host)
is known to support Multipath TCP. In this case, the Timestamps
option can be ignored in the SYN segment.
o a passive Multipath TCP opener that receives a SYN segment
containing both the Timestamp and the MP_CAPABLE options SHOULD
only include the MP_CAPABLE option in the returned SYN+ACK
segment. This would disable the [RFC7323] timestamps on the
Multipath TCP connection.
When creating subflows, the Timestamps option SHOULD NOT be
associated with the MP_JOIN option in the SYN segments. Furthermore,
if a Multipath TCP host receives a valid SYN segment that contains
Bonaventure Expires January 3, 2016 [Page 3]
Internet-Draft MPTCP-TS July 2015
both the MP_JOIN option and the Timestamps option, it should not
include the Timestamps option in the returned SYN+ACK segment.
3. The Multipath TCP Timestamp option
The Timestamps option defined in [RFC7323] encodes two 32 bits
timestamps. Having two timestamps is useful when data transfer is
bidirectional but in practice very few TCP connections are totally
bidirectional. Most TCP connections send data in one directions and
acknowledgments in the opposite. For these connections, placing two
timestamps in each segment that carries data and each acknowledgement
is a waste of TCP options space.
When precise round-trip-time measurements are required on a Multipath
TCP connection, those measurements can be performed by using the
experimental Multipath TCP option shown in figure 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| Flags | Experiment |
+---------------+---------------+-------+-------+---------------+
| Id. (16 bits) | Timestamp (24 bits) |
+---------------------------------------------------------------+
Figure 2: The experimental MPTCP Timestamp Option
The experimental MPTCP TS option contains the flags defined in
[I-D.bonaventure-mptcp-exp-option].
The experimental MPTCP TS option may be sent in any TCP segment
except those having the SYN flag set.
When a host receives a segment containing an MPTCP TS option whose
'S' flag is set, it SHOULD reply immediately by echoing the received
timestamp in a returned MPTCP TS option whose 'S' flag is reset.
This MPTCP TS option can be included in either a segment that carries
data, if one is pending, or an acknowledgement. This implies that a
host does not need to maintain additional state to process the
received MPTCP TS option since it can reply directly to any received
MPTCP TS option.
The MPTCP TS option can be used to improve the quality of the round-
trip-time estimator. The discussion in section 4.2 of [RFC7323] is
also applicable for the Timestamp proposed in this document.
Bonaventure Expires January 3, 2016 [Page 4]
Internet-Draft MPTCP-TS July 2015
The MPTCP TS may also be used to verify that a subflow remains active
by forcing a remote host to reply to an MPTCP segment without sending
data.
4. Security Considerations
A middlexbox may remove the experimental MPTCP TS option. This is
unlikely if the Multipath TCP connection operates corectly. Since
the MPTCP TS option is only informational, such a behaviour would not
affect the reliability of the Multipath TCP connection.
Some of the security considerations from [RFC7323] and in particular
the following paragraph apply for the MPTCP TS option :
A naive implementation that derives the timestamp clock value
directly from a system uptime clock may unintentionally leak this
information to an attacker. This does not directly compromise any of
the mechanisms described in this document. However, this may be
valuable information to a potential attacker. It is therefore
RECOMMENDED to generate a random, per-Multipath TCP connection offset
to be used with the clock source when generating the Timestamps
option value.
By carefully choosing this random offset, further improvements as
described in [RFC6191] are possible.
5. IANA Considerations
This document proposes an experimental MPTCP option to carry
timestamps. If [I-D.bonaventure-mptcp-exp-option] is approved, then
an experimental identifier should be added to the IANA registry to
identify the timestamp option.
6. Conclusion
This document has proposed a new Timestamp option to replace the
[RFC7323] Timestamps option on Multipath TCP connections. The MPTCP
TS option can be included in MPTCP segments only when needed to
preserve TCP option space notably for the MPTCP and SACK options.
7. Acknowledgements
This work was partially supported by the EC within the FP7-Trilogy2
project. The author would like to thank Raphael Bauduin for his
comments and Joe Touch whose comments on the mptcp mailing list
encouraged the writing of this draft.
Bonaventure Expires January 3, 2016 [Page 5]
Internet-Draft MPTCP-TS July 2015
8. References
8.1. Normative References
[I-D.bonaventure-mptcp-exp-option]
Bonaventure, O., benjamin.hesmans@uclouvain.be, b., and M.
Boucadair, "Experimental Multipath TCP option", draft-
bonaventure-mptcp-exp-option-00 (work in progress), June
2015.
[RFC2018] Mathis, M., Mahdavi, J., Floyd, S., and A. Romanow, "TCP
Selective Acknowledgment Options", RFC 2018, October 1996.
[RFC6824] Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,
"TCP Extensions for Multipath Operation with Multiple
Addresses", RFC 6824, January 2013.
[RFC7323] Borman, D., Braden, B., Jacobson, V., and R.
Scheffenegger, "TCP Extensions for High Performance", RFC
7323, September 2014.
8.2. Informative References
[RFC1323] Jacobson, V., Braden, B., and D. Borman, "TCP Extensions
for High Performance", RFC 1323, May 1992.
[RFC6191] Gont, F., "Reducing the TIME-WAIT State Using TCP
Timestamps", BCP 159, RFC 6191, April 2011.
Appendix A. Changelog
This appendix should be removed before publication.
Changes in version 01.
o updated the format of the proposed option to use the encoding
proposed in [I-D.bonaventure-mptcp-exp-option]
Author's Address
Olivier Bonaventure
UCLouvain
Email: Olivier.Bonaventure@uclouvain.be
Bonaventure Expires January 3, 2016 [Page 6]