Subject: [dnssd] Draft-ietf-dnsop-edns-tcp-keepalive and DNS Push Notifications

From: Stuart Cheshire <[email-masked]>
Date: Mon, 21 Mar 2016 19:54:17 -0700

Dear Keepalive authors,

Draft-ietf-dnssd-push-06 (see below) references draft-ietf-dnsop-edns-tcp-keepalive.

However, at present, a more accurate title might be “draft-ietf-dnsop-edns-tcp-idle-timeout” instead of “draft-ietf-dnsop-edns-tcp-keepalive”, because while it tells the client how to learn what the idle timeout is, it doesn’t say anything about what the client does to actually keep a connection alive.

Draft-ietf-dnssd-push-06 currently has the text included below.

1. It states what actions reset the idle timer.

2. It states that the client should send keepalive traffic before the idle timeout expires, but the server should not kill a connection until 1.5x the idle timeout, to allow for clock rate differences and propagation delays.

3. Particularly note the final paragraph, which calls for suggestions for a specified keepalive action.

   At both servers and clients, the generation or reception of any
   request, response, update, or keepalive message resets the keepalive
   timer for that connection.

   In the absence of any requests, responses, or update messages on a
   connection, a client MUST generate keepalive traffic before the idle
   timeout expires, or the server is entitled to close the connection.

   If a client disconnects from the network abruptly, without closing
   its connection, the server learns of this after failing to receive
   further traffic from that client.  If no requests, responses, update
   messages or keepalive traffic occurs on a connection for 1.5 times
   the idle timeout, then this indicates that the client is probably no
   longer on the network, and the server SHOULD abort the connection
   with a TCP RST.

   [We need to discuss the nature of "the required keepalives".  Are
   they TCP-layer keepalives?  DNS-layer keepalives?  There is currently
   no DNS-layer keepalive or 'no-op' operation defined.  What would that
   operation be?  A DNS QUERY containing zero questions?  A DNS
   SUBSCRIBE containing zero questions?  An "empty" DNS message over the
   TCP connection (just a pair of zero bytes, signifying a zero-length
   message)?  One benefit of TCP-layer keepalives is that they transmit
   fewer bytes, and involve less software overhead for processing those
   bytes.  Another benefit is that it is more feasible to implement
   these in networking offload hardware, which can allow devices to meet
   their TCP keepalive obligations while sleeping.  This is particularly
   important for battery-powered devices like mobile phones and tablets.
   On the other hand, using TCP-layer keepalives requires an API for a
   client to tell the networking stack at what frequency to perform TCP-
   layer keepalives, and an API for a server to request the networking
   stack to inform it when TCP-layer keepalives are not received by the
   required deadline.  TCP-layer keepalives also only verify liveness of
   the remote networking stack, whereas DNS-layer keepalives provide
   higher assurance of liveness of the remote server application
   software -- though this a limited benefit, since there is no reason
   to expect that DNS Push Notification server software will routinely
   become wedged and unresponsive.]

I could define this specified keepalive action in the DNS Push document, but I think it would be better to have that specification in the keepalive document.

Thoughts?

Stuart Cheshire

Begin forwarded message:

> From: [email-masked]
> Subject: [dnssd] I-D Action: draft-ietf-dnssd-push-06.txt
> Date: 21 March 2016 at 16:58:41 Pacific Daylight Time
> To: [email-masked]
> 
> A New Internet-Draft is available from the on-line Internet-Drafts directories.
> This draft is a work item of the Extensions for Scalable DNS Service Discovery  of the IETF.
> 
>        Title           : DNS Push Notifications
>        Authors         : Tom Pusateri
>                          Stuart Cheshire
> 	Filename        : draft-ietf-dnssd-push-06.txt
> 	Pages           : 31
> 	Date            : 2016-03-21
> 
> Abstract:
>  The Domain Name System (DNS) was designed to return matching records
>  efficiently for queries for data that is relatively static.  When
>  those records change frequently, DNS is still efficient at returning
>  the updated results when polled.  But there exists no mechanism for a
>  client to be asynchronously notified when these changes occur.  This
>  document defines a mechanism for a client to be notified of such
>  changes to DNS records, called DNS Push Notifications.
> 
> 
> The IETF datatracker status page for this draft is:
> https://datatracker.ietf.org/doc/draft-ietf-dnssd-push/
> 
> There's also a htmlized version available at:
> https://tools.ietf.org/html/draft-ietf-dnssd-push-06
> 
> A diff from the previous version is available at:
> https://www.ietf.org/rfcdiff?url2=draft-ietf-dnssd-push-06
> 
> 
> Please note that it may take a couple of minutes from the time of submission
> until the htmlized version and diff are available at tools.ietf.org.
> 
> Internet-Drafts are also available by anonymous FTP at:
> ftp://ftp.ietf.org/internet-drafts/
> 
> _______________________________________________
> dnssd mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/dnssd

---

From: Paul Wouters <[email-masked]>
Date: Mon, 21 Mar 2016 23:02:29 -0400

Our document is in AUTH48 already, so making those kind of changed there might be very difficult.

Also, if you are so idle that you might run into tcp issues timing out, you probably should be nice to the other end and close your tcp session.

Sent from my iPhone

> On Mar 21, 2016, at 22:54, Stuart Cheshire <[email-masked]> wrote:
> 
> Dear Keepalive authors,
> 
> DNSOP mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/dnsop

---

From: Stuart Cheshire <[email-masked]>
Date: Mon, 21 Mar 2016 21:16:17 -0700

> Our document is in AUTH48 already, so making those kind of changed there might be very difficult.

I didn’t realise that. I agree, it’s too late to make substantive changes at this point.

> Also, if you are so idle that you might run into tcp issues timing out, you probably should be nice to the other end and close your tcp session.

The idea of DNS Push Notifications is for moderately long-standing queries (on the order of 5-10 minutes) waiting to be notified of some change.

For example, you go to print, but the printer is turned off. You walk down the hall and turn the printer on, and when you get back to your office your computer has been notified that a new printer has become available (without you having to repeatedly cancel and try again until the printer shows up).

It’s not something that would be useful for all DNS servers. Think of it as a different protocol, that happens to leverage existing DNS protocols and message formats instead of inventing new protocols and message formats.

The draft explains it in more detail.

DNSOP feedback on the draft would be appreciated.

Stuart Cheshire

---

From: Paul Wouters <[email-masked]>
Date: Tue, 22 Mar 2016 00:42:21 -0400

Sent from my iPhone

> On Mar 22, 2016, at 00:16, Stuart Cheshire <[email-masked]> wrote:
> 

Sound more like a match for xmpp than DNS?

Paul