Subject: [DNSOP] Fwd: New Version Notification for draft-bellis-dnsop-connection-close-00.txt

From: Ray Bellis <[email-masked]>
Date: Fri, 24 Oct 2014 10:09:39 +0000

I’ve just posted the following draft:

> A new version of I-D, draft-bellis-dnsop-connection-close-00.txt
> has been successfully submitted by Ray Bellis and posted to the
> IETF repository.
> 
> Name:		draft-bellis-dnsop-connection-close
> Revision:	00
> Title:		Connection Close Signalling for DNS
> Document date:	2014-10-24
> Group:		Individual Submission
> Pages:		5
> URL:            http://www.ietf.org/internet-drafts/draft-bellis-dnsop-connection-close-00.txt
> Status:         https://datatracker.ietf.org/doc/draft-bellis-dnsop-connection-close/
> Htmlized:       http://tools.ietf.org/html/draft-bellis-dnsop-connection-close-00
> 
> 
> Abstract:
>   This document updates [RFC6891] by specifying a new single-bit flag
>   in a DNS response that when seen in a packet carried over a
>   connection-orientated transport protocol indicates to the client that
>   it should close the current connection.

It’s intended as a simple mechanism to improve TCP connection handling that’s far closer to HTTP’s “Connection: close” semantics than that proposed in draft-wouters-edns-tcp-keepalive.

There are several outstanding questions therein - some relating to TCP state where I don’t know the technical answer, and a couple where opinions from the WG would be welcomed.  The latter mostly relate to whether it’s useful to define a request-side semantic for the proposed flag in addition to the response-side semantics already written.

kind regards,

Ray

---

From: Mukund Sivaraman <[email-masked]>
Date: Fri, 24 Oct 2014 19:33:29 +0530

Hi Ray

On Fri, Oct 24, 2014 at 10:09:39AM +0000, Ray Bellis wrote:
> There are several outstanding questions therein - some relating to TCP
> state where I don’t know the technical answer, and a couple where
> opinions from the WG would be welcomed.  The latter mostly relate to
> whether it’s useful to define a request-side semantic for the proposed
> flag in addition to the response-side semantics already written.

This is not a review of the draft, though the method seems simple enough
that the main decision is whether to add such a bit or not.

>  TODO: does it make sense to specify a request side meaning for this
>  flag, indicating that the server may half-close its "read" side of
>  the connection?  This would make the semantics even closer to those
>  of the HTTP/1.1 "Connection: close" header (see Section 14.10 of
>  [RFC2616]).

TCP doesn't have a half-close of the read side. See below.

>  TODO: if a request-side semantic is defined for this flag, what are
>  the TCP state-maintenance implications if the server performs a
>  'shutdown(fd, SHUT_RD)'?

This would be implementation specific. TCP being full-duplex, a TCP can
half-close only its writing end of the connection which is to say it
sends a FIN to the other side to indicate it is done and does not have
any more data to send. The other end of the connection can only be
closed by the other TCP. Even after sending a FIN during an active close
and having it ACKd by the other side, the sender could be stuck in the
FIN_WAIT_2 state for a long time until the other side closes its end of
the connection. (Operating systems timeout after a while.)

How do operating systems handle shutdown(..., SHUT_RD) on TCP sockets?

1. The TCP could send RST to the other side if it receives any further
segments on such a socket.

2. The OS could simply ignore such a shutdown(), and the unread data
accumulating (assuming the application doesn't read from the fd anymore)
would then reduce the receive window to 0 and flow control the sender to
stop transmissing.

3. The TCP could send ACKs and just discard the received data.

		Mukund