[e2e] 64-bit timestamps?

David P. Reed dpreed at reed.com
Tue Sep 8 15:24:37 PDT 2009


In regard to DNS security issues, I suggest reading Appendix B of RFC 
1323 on whether PAWS helps. (I quote B.2 below).  Since DNS queries do 
not *require* the full duplex TCP close to be reliable (the close 
provides no correctness to the DNS app), only the second point in B.2 
really ought to matter.   But PAWS may not be useful, since DNS itself 
might be made to maintain state across connections, moving the problem 
out of TCP and into the app (DNS) layer where it probably belongs.

---------------
from appendix B of RFC 1323:
----------------


      B.2 Closing and Reopening a Connection

When a TCP connection is closed, a delay of 2*MSL in TIME-WAIT state 
ties up the socket pair for 4 minutes (see Section 3.5 of [Postel81]. 
Applications built upon TCP that close one connection and open a new one 
(e.g., an FTP data transfer connection using Stream mode) must choose a 
new socket pair each time. The TIME- WAIT delay serves two different 
purposes:

   1. Implement the full-duplex reliable close handshake of TCP.

      The proper time to delay the final close step is not really
      related to the MSL; it depends instead upon the RTO for the FIN
      segments and therefore upon the RTT of the path. (It could be
      argued that the side that is sending a FIN knows what degree of
      reliability it needs, and therefore it should be able to determine
      the length of the TIME-WAIT delay for the FIN's recipient. This
      could be accomplished with an appropriate TCP option in FIN
      segments.)

      Although there is no formal upper-bound on RTT, common network
      engineering practice makes an RTT greater than 1 minute very
      unlikely. Thus, the 4 minute delay in TIME-WAIT state works
      satisfactorily to provide a reliable full-duplex TCP close. Note
      again that this is independent of MSL enforcement and network speed.

      The TIME-WAIT state could cause an indirect performance problem if
      an application needed to repeatedly close one connection and open
      another at a very high frequency, since the number of available
      TCP ports on a host is less than 2**16. However, high network
      speeds are not the major contributor to this problem; the RTT is
      the limiting factor in how quickly connections can be opened and
      closed. Therefore, this problem will be no worse at high transfer
      speeds.

   2. Allow old duplicate segments to expire.

      To replace this function of TIME-WAIT state, a mechanism would
      have to operate across connections. PAWS is defined strictly
      within a single connection; the last timestamp is TS.Recent is
      kept in the connection control block, and discarded when a
      connection is closed.

      An additional mechanism could be added to the TCP, a per-host
      cache of the last timestamp received from any connection. This
      value could then be used in the PAWS mechanism to reject old
      duplicate segments from earlier incarnations of the connection, if
      the timestamp clock can be guaranteed to have ticked at least once
      since the old connection was open. This would require that the
      TIME-WAIT delay plus the RTT together must be at least one tick of
      the sender's timestamp clock. Such an extension is not part of the
      proposal of this RFC.

      Note that this is a variant on the mechanism proposed by Garlick,
      Rom, and Postel [Garlick77], which required each host to maintain
      connection records containing the highest sequence numbers on
      every connection. Using timestamps instead, it is only necessary
      to keep one quantity per remote host, regardless of the number of
      simultaneous connections to that host.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.postel.org/pipermail/end2end-interest/attachments/20090908/03944ac4/attachment.html


More information about the end2end-interest mailing list