draft-ietf-tcpm-tcp-uto-07.txt | draft-ietf-tcpm-tcp-uto-08.txt | |||
---|---|---|---|---|
TCP Maintenance and Minor L. Eggert | TCP Maintenance and Minor L. Eggert | |||
Extensions (tcpm) Nokia | Extensions (tcpm) Nokia | |||
Internet-Draft F. Gont | Internet-Draft F. Gont | |||
Intended status: Standards Track UTN/FRH | Intended status: Standards Track UTN/FRH | |||
Expires: May 16, 2008 November 13, 2007 | Expires: May 22, 2008 November 19, 2007 | |||
TCP User Timeout Option | TCP User Timeout Option | |||
draft-ietf-tcpm-tcp-uto-07 | draft-ietf-tcpm-tcp-uto-08 | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
skipping to change at page 1, line 35 | skipping to change at page 1, line 35 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on May 16, 2008. | This Internet-Draft will expire on May 22, 2008. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2007). | |||
Abstract | Abstract | |||
The TCP user timeout controls how long transmitted data may remain | The TCP user timeout controls how long transmitted data may remain | |||
unacknowledged before a connection is forcefully closed. It is a | unacknowledged before a connection is forcefully closed. It is a | |||
local, per-connection parameter. This document specifies a new TCP | local, per-connection parameter. This document specifies a new TCP | |||
skipping to change at page 2, line 30 | skipping to change at page 2, line 30 | |||
4.1. Middleboxes . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.1. Middleboxes . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.2. TCP Keep-Alives . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. TCP Keep-Alives . . . . . . . . . . . . . . . . . . . . . 10 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References . . . . . . . . . . . . . . . . . . . 12 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . . 13 | 8.2. Informative References . . . . . . . . . . . . . . . . . . 13 | |||
Appendix A. Document Revision History . . . . . . . . . . . . . . 14 | Appendix A. Document Revision History . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 16 | Intellectual Property and Copyright Statements . . . . . . . . . . 17 | |||
1. Introduction | 1. Introduction | |||
The Transmission Control Protocol (TCP) specification [RFC0793] | The Transmission Control Protocol (TCP) specification [RFC0793] | |||
defines a local, per-connection "user timeout" parameter that | defines a local, per-connection "user timeout" parameter that | |||
specifies the maximum amount of time that transmitted data may remain | specifies the maximum amount of time that transmitted data may remain | |||
unacknowledged before TCP will forcefully close the corresponding | unacknowledged before TCP will forcefully close the corresponding | |||
connection. Applications can set and change this parameter with OPEN | connection. Applications can set and change this parameter with OPEN | |||
and SEND calls. If an end-to-end connectivity disruption lasts | and SEND calls. If an end-to-end connectivity disruption lasts | |||
longer than the user timeout, no acknowledgments will be received for | longer than the user timeout, no acknowledgments will be received for | |||
skipping to change at page 4, line 4 | skipping to change at page 4, line 4 | |||
Although some TCP implementations allow applications to set their | Although some TCP implementations allow applications to set their | |||
local user timeout, TCP has no in-protocol mechanism to signal | local user timeout, TCP has no in-protocol mechanism to signal | |||
changes to the local user timeout to the other end of a connection. | changes to the local user timeout to the other end of a connection. | |||
This causes local changes to be ineffective in allowing a connection | This causes local changes to be ineffective in allowing a connection | |||
to survive extended periods without connectivity, because the other | to survive extended periods without connectivity, because the other | |||
end will still close the connection after its user timeout expires. | end will still close the connection after its user timeout expires. | |||
The ability to inform the other end of a connection about the local | The ability to inform the other end of a connection about the local | |||
user timeout can improve TCP operation in scenarios that are | user timeout can improve TCP operation in scenarios that are | |||
currently not well supported. One example of such scenarios are | currently not well supported. One example of such a scenario is | |||
mobile hosts that change network attachment points based on current | mobile hosts that change network attachment points based on current | |||
location. Such hosts, maybe using Mobile IP [RFC3344], HIP [RFC4423] | location. Such hosts, maybe using Mobile IP [RFC3344], HIP [RFC4423] | |||
or transport-layer mobility mechanisms [I-D.eddy-tcp-mobility], are | or transport-layer mobility mechanisms [I-D.eddy-tcp-mobility], are | |||
only intermittently connected to the Internet. In between connected | only intermittently connected to the Internet. In between connected | |||
periods, mobile hosts may experience periods without end-to-end | periods, mobile hosts may experience periods without end-to-end | |||
connectivity. Other factors that can cause transient connectivity | connectivity. Other factors that can cause transient connectivity | |||
disruptions are high levels of congestion or link or routing failures | disruptions are high levels of congestion or link or routing failures | |||
inside the network. In these scenarios, a host may not know exactly | inside the network. In these scenarios, a host may not know exactly | |||
when or for how long connectivity disruptions will occur, but it | when or for how long connectivity disruptions will occur, but it | |||
might be able to determine an increased likelihood for such events | might be able to determine an increased likelihood for such events | |||
skipping to change at page 5, line 6 | skipping to change at page 5, line 6 | |||
UTO option advertised to the remote TCP peer. This is an | UTO option advertised to the remote TCP peer. This is an | |||
application-specified value, and may be specified on a system-wide | application-specified value, and may be specified on a system-wide | |||
basis. If unspecified, it defaults to the default system-wide | basis. If unspecified, it defaults to the default system-wide | |||
USER TIMEOUT. | USER TIMEOUT. | |||
ENABLED (Boolean) | ENABLED (Boolean) | |||
Flag that controls whether the UTO option is enabled for a | Flag that controls whether the UTO option is enabled for a | |||
connection. Defaults to false. | connection. Defaults to false. | |||
CHANGEABLE (Boolean) | CHANGEABLE (Boolean) | |||
Flag that controls whether USER_TIMEOUT (TCP's USER_TIMEOUT | Flag that controls whether USER_TIMEOUT (TCP's USER TIMEOUT | |||
parameter) may be changed based on an UTO option received from the | parameter) may be changed based on an UTO option received from the | |||
other end of the connection. Defaults to true and becomes false | other end of the connection. Defaults to true and becomes false | |||
when an application explicitly sets USER_TIMEOUT. | when an application explicitly sets USER_TIMEOUT. | |||
Note that an exchange of UTO options between both ends of a | Note that an exchange of UTO options between both ends of a | |||
connection is not a binding negotiation. Transmission of a UTO | connection is not a binding negotiation. Transmission of a UTO | |||
option is a suggestion that the other end consider adapting its user | option is a suggestion that the other end consider adapting its user | |||
timeout. This adaptation only happens if the the other end of the | timeout. This adaptation only happens if the the other end of the | |||
connection has explicitly allowed it (both ENABLED and CHANGEABLE are | connection has explicitly allowed it (both ENABLED and CHANGEABLE are | |||
true). | true). | |||
Before opening a connection, an application that wishes to use the | Before opening a connection, an application that wishes to use the | |||
UTO option enables its use by setting ENABLED to true. It may choose | UTO option enables its use by setting ENABLED to true. It may choose | |||
an appropriate local UTO by explicitly setting ADV_UTO; otherwise, | an appropriate local UTO by explicitly setting ADV_UTO; otherwise, | |||
UTO is set to the default USER TIMEOUT value. Finally, the | UTO is set to the default USER TIMEOUT value. Finally, the | |||
application should determine whether it will allow the local USER | application should determine whether it will allow the local USER | |||
TIMEOUT to change based on received UTO options from the other end of | TIMEOUT to change based on received UTO options from the other end of | |||
a connection. The default is to allow this for connections that do | a connection. The default is to allow this for connections that do | |||
not have specific user timeout concerns. If an application | not have specific user timeout concerns. If an application | |||
explicitly sets the USER TIMEOUT, CHANGEABLE MUST become false, to | explicitly sets the USER_TIMEOUT, CHANGEABLE MUST become false, to | |||
prevent UTO options from the other end to override local application | prevent UTO options from the other end to override local application | |||
requests. Alternatively, applications can set or clear CHANGEABLE | requests. Alternatively, applications can set or clear CHANGEABLE | |||
directly through socket API calls. | directly through socket API calls. | |||
Performing these steps before an active or passive open causes UTO | Performing these steps before an active or passive open causes UTO | |||
options to be exchanged in the SYN and SYN-ACK packets and is a | options to be exchanged in the SYN and SYN-ACK packets and is a | |||
reliable way to initially exchange, and potentially adapt to, UTO | reliable way to initially exchange, and potentially adapt to, UTO | |||
values. TCP implementations MAY provide system-wide default settings | values. TCP implementations MAY provide system-wide default settings | |||
for the ENABLED, ADV_UTO and CHANGEABLE connection parameters. | for the ENABLED, ADV_UTO and CHANGEABLE connection parameters. | |||
skipping to change at page 7, line 39 | skipping to change at page 7, line 39 | |||
REMOTE_UTO | REMOTE_UTO | |||
Last user timeout value received from the other end in a TCP User | Last user timeout value received from the other end in a TCP User | |||
Timeout Option. | Timeout Option. | |||
L_LIMIT | L_LIMIT | |||
Current lower limit imposed on the user timeout of a connection by | Current lower limit imposed on the user timeout of a connection by | |||
the local host. | the local host. | |||
The RECOMMENDED formula results in the maximum of the two advertised | The RECOMMENDED formula results in the maximum of the two advertised | |||
values to be adopted for the user timeout of the connection on both | values, adjusted for the configured upper and lower limits, to be | |||
ends, provided they are within the upper and lower limits. The | adopted for the user timeout of the connection on both ends. The | |||
rationale is that choosing the maximum of the two values will let the | rationale is that choosing the maximum of the two values will let the | |||
connection survive longer periods without end-to-end connectivity. | connection survive longer periods without end-to-end connectivity. | |||
If the end that announced the lower of the two user timeout values | If the end that announced the lower of the two user timeout values | |||
did so in order to reduce the amount of TCP state information that | did so in order to reduce the amount of TCP state information that | |||
must be kept on the host, it can close or abort the connection | must be kept on the host, it can close or abort the connection | |||
whenever it wants. | whenever it wants. | |||
It must be noted that the two endpoints of the connection will not | It must be noted that the two endpoints of the connection will not | |||
necessarily adopt the same user timeout. | necessarily adopt the same user timeout. | |||
skipping to change at page 12, line 39 | skipping to change at page 12, line 39 | |||
The following people have improved this document through thoughtful | The following people have improved this document through thoughtful | |||
suggestions: Mark Allman, Caitlin Bestler, David Borman, Bob Braden, | suggestions: Mark Allman, Caitlin Bestler, David Borman, Bob Braden, | |||
Marcus Brunner, Wesley Eddy, Gorry Fairhurst, Abolade Gbadegesin, Ted | Marcus Brunner, Wesley Eddy, Gorry Fairhurst, Abolade Gbadegesin, Ted | |||
Faber, Guillermo Gont, Tom Henderson, Joseph Ishac, Jeremy Harris, | Faber, Guillermo Gont, Tom Henderson, Joseph Ishac, Jeremy Harris, | |||
Alfred Hoenes, Phil Karn, Michael Kerrisk, Dan Krejsa, Jamshid | Alfred Hoenes, Phil Karn, Michael Kerrisk, Dan Krejsa, Jamshid | |||
Mahdavi, Kostas Pentikousis, Juergen Quittek, Anantha Ramaiah, Joe | Mahdavi, Kostas Pentikousis, Juergen Quittek, Anantha Ramaiah, Joe | |||
Touch, Stefan Schmid, Simon Schuetz, Tim Shepard and Martin | Touch, Stefan Schmid, Simon Schuetz, Tim Shepard and Martin | |||
Stiemerling. | Stiemerling. | |||
Lars Eggert has been partly funded by Ambient Networks, a research | ||||
project supported by the European Commission under its Sixth | ||||
Framework Program. | ||||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[I-D.narten-iana-considerations-rfc2434bis] | [I-D.narten-iana-considerations-rfc2434bis] | |||
Narten, T. and H. Alvestrand, "Guidelines for Writing an | Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", | IANA Considerations Section in RFCs", | |||
draft-narten-iana-considerations-rfc2434bis-08 (work in | draft-narten-iana-considerations-rfc2434bis-08 (work in | |||
progress), October 2007. | progress), October 2007. | |||
skipping to change at page 14, line 12 | skipping to change at page 14, line 12 | |||
Sun Microsystems, "Solaris Tunable Parameters Reference | Sun Microsystems, "Solaris Tunable Parameters Reference | |||
Manual", Part No. 806-7009-10, 2002. | Manual", Part No. 806-7009-10, 2002. | |||
Appendix A. Document Revision History | Appendix A. Document Revision History | |||
[[Note to the RFC Editor: Section to be removed upon publication.]] | [[Note to the RFC Editor: Section to be removed upon publication.]] | |||
+----------+--------------------------------------------------------+ | +----------+--------------------------------------------------------+ | |||
| Revision | Comments | | | Revision | Comments | | |||
+----------+--------------------------------------------------------+ | +----------+--------------------------------------------------------+ | |||
| 07 | Addressed working group last call comments. | | | -08 | Addressed additional, minor working group last call | | |||
| 06 | Includes a note on the limited space for TCP options | | | | comments. | | |||
| | and miscelaneous editorial changes(suggested by | | | | | | |||
| -07 | Addressed working group last call comments. | | ||||
| | | | ||||
| -06 | Includes a note on the limited space for TCP options | | ||||
| | and miscellaneous editorial changes (suggested by | | ||||
| | Anantha Ramaiah). Includes possible enforcement of | | | | Anantha Ramaiah). Includes possible enforcement of | | |||
| | per-outgoing-interface limits for the UTO, and | | | | per-outgoing-interface limits for the UTO, and | | |||
| | miscellaneous editorial changes (suggested by Alfred | | | | miscellaneous editorial changes (suggested by Alfred | | |||
| | Hoenes). Includes relevant changes to reflect WG | | | | Hoenes). Includes relevant changes to reflect WG | | |||
| | consesus how the local user timeout should be selected | | | | consensus how the local user timeout should be | | |||
| | (i.e., record both the current user timeout, and the | | | | selected (i.e., record both the current user timeout, | | |||
| | advertised UTO). | | | | and the advertised UTO). | | |||
| 05 | Made behavior on when to change/not change the local | | | | | | |||
| -05 | Made behavior on when to change/not change the local | | ||||
| | UTO in response to incoming options consistent through | | | | UTO in response to incoming options consistent through | | |||
| | the document. This required some reshuffling of text | | | | the document. This required some reshuffling of text | | |||
| | and also removed the need for the special "don't care" | | | | and also removed the need for the special "don't care" | | |||
| | option value. | | | | option value. | | |||
| 04 | Clarified the results obtained by Medina et al. Added | | | | | | |||
| -04 | Clarified the results obtained by Medina et al. Added | | ||||
| | text to suggest inclusion of the UTO in the first | | | | text to suggest inclusion of the UTO in the first | | |||
| | non-SYN segment by the TCP that sent a SYN in response | | | | non-SYN segment by the TCP that sent a SYN in response | | |||
| | to an active OPEN. | | | | to an active OPEN. | | |||
| 03 | Corrected use of RFC2119 terminology. Clarified how | | | | | | |||
| -03 | Corrected use of RFC2119 terminology. Clarified how | | ||||
| | use of the TCP UTO is triggered. Clarified reason for | | | | use of the TCP UTO is triggered. Clarified reason for | | |||
| | sending a UTO in the SYN and SYN/ACK segments. | | | | sending a UTO in the SYN and SYN/ACK segments. | | |||
| | Removed discussion of the SO_SNDTIMEO and SO_RCVTIMEO | | | | Removed discussion of the SO_SNDTIMEO and SO_RCVTIMEO | | |||
| | socket options. Removed text that suggested that a | | | | socket options. Removed text that suggested that a | | |||
| | UTO should be sent upon receipt of an UTO from the | | | | UTO should be sent upon receipt of an UTO from the | | |||
| | other end. Required minimum value for the lower limit | | | | other end. Required minimum value for the lower limit | | |||
| | of the user timeout. Moved alternative solutions to | | | | of the user timeout. Moved alternative solutions to | | |||
| | appendix. Miscellaneous editorial changes. | | | | appendix. Miscellaneous editorial changes. | | |||
| 02 | Corrected terminology by replacing terms like | | | | | | |||
| -02 | Corrected terminology by replacing terms like | | ||||
| | "negotiate", "coordinate", etc. that were left from | | | | "negotiate", "coordinate", etc. that were left from | | |||
| | pre-WG-document times when the UTO was a more | | | | pre-WG-document times when the UTO was a more | | |||
| | formalized exchange instead of the advisory one it is | | | | formalized exchange instead of the advisory one it is | | |||
| | now. Application-requested UTOs take precedence over | | | | now. Application-requested UTOs take precedence over | | |||
| | ones received from the peer (pointed out by Ted | | | | ones received from the peer (pointed out by Ted | | |||
| | Faber). Added a brief mention of SO_SNDTIMEO and a | | | | Faber). Added a brief mention of SO_SNDTIMEO and a | | |||
| | slightly longer discussion of SO_RCVTIMEO. | | | | slightly longer discussion of SO_RCVTIMEO. | | |||
| 01 | Clarified and corrected the description of the | | | | | | |||
| -01 | Clarified and corrected the description of the | | ||||
| | existing user timeout in RFC793 and RFC1122. Removed | | | | existing user timeout in RFC793 and RFC1122. Removed | | |||
| | distinction between operating during the 3WHS and the | | | | distinction between operating during the 3WHS and the | | |||
| | established states and introduced zero-second "don't | | | | established states and introduced zero-second "don't | | |||
| | care" UTOs in response to mailing list feedback. | | | | care" UTOs in response to mailing list feedback. | | |||
| | Updated references and addressed many other comments | | | | Updated references and addressed many other comments | | |||
| | from the mailing list. | | | | from the mailing list. | | |||
| 00 | Resubmission of | | | | | | |||
| -00 | Resubmission of | | ||||
| | draft-eggert-gont-tcpm-tcp-uto-option-01.txt to the | | | | draft-eggert-gont-tcpm-tcp-uto-option-01.txt to the | | |||
| | secretariat after WG adoption. Thus, permit | | | | secretariat after WG adoption. Thus, permit | | |||
| | derivative works. Updated Lars Eggert's funding | | | | derivative works. Updated Lars Eggert's funding | | |||
| | attribution. Updated several references. No | | | | attribution. Updated several references. No | | |||
| | technical changes. | | | | technical changes. | | |||
+----------+--------------------------------------------------------+ | +----------+--------------------------------------------------------+ | |||
Authors' Addresses | Authors' Addresses | |||
Lars Eggert | Lars Eggert | |||
End of changes. 16 change blocks. | ||||
25 lines changed or deleted | 31 lines changed or added | |||
This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |