> On 15 Oct 2015, at 02:29, 神明達哉 <jin...@wide.ad.jp <mailto:jin...@wide.ad.jp>> 
> wrote:
> 
> At Wed, 14 Oct 2015 11:55:02 +0100,
> 
> I have no objection to this text per se, but the described reason why
> the client might want to do this is different from what I intended.  I
> was more concerned about the case where the client only includes the
> option in the first query and the server can't send updated
> notification.  And, in that sense,
> while the text looks good to me, I thought it would be safer to use
> some RFC2119 keyword here.  Combining these, what I would have
> proposed is something like this:
> 
>  DNS clients MAY include the edns-tcp-keepalive option in the first
>  query sent to a server using TCP transport to signal their desire
>  to keep the connection open when idle.  If a client include the
>  option in the first query, it SHOULD include the option regularly
>  during a TCP session to increase the chance of being notified
>  should the server modify the timeout associated with a session.
>  The algorithm for specifically when to include the option in
>  subsequent queries is out of scope of this document and is left up
>  to the implementor and/or operator.


My hesitation here is that if it is a SHOULD, then I think the document would 
need a bit more detail regarding what ‘regularly’ means, rather than simply 
saying the precise behaviour is out of scope. I like to think that when 
something is specified as a SHOULD then it should be relatively easy to 
determine if an implementation is compliant with that requirement, and without 
specifying more detail here I don’t think that would be easy. Do you have any 
thoughts on that?  IIRC there were some discussions among the authors about 
this prior to the -02 version and we deliberately left this out because how to 
time these subsequent signals isn’t obvious. However maybe this isn’t really 
necessary and the above text is acceptable. 

A couple of details to consider:

1) If the client is regularly sending messages with an EDNS0 OPT RR, then the 
server can respond to these by adding the edns-tcp-keepalive option and there 
is no need for the client to specifically send the edns-tcp-keepalive option in 
the query.  See Section 3.3.2:

  A DNS server that receives a query sent using TCP transport that
  includes an OPT RR MAY include the edns-tcp-keepalive option in the
  response to signal the expected idle timeout on a connection.

2) Also, it is perfectly possible that a client opens a connection, sends a 
single message but does not have any further queries for that server before the 
timeout expires. I don’t think there is any desire to have clients send ‘fake’ 
heartbeat-like messages to check on the timeout during the idle period, so I 
think it would be useful to clarify that. 

The best wording I can come up with to try to cover this is:

If a client includes the edns-tcp-keepalive option in the first query, it 
SHOULD include an EDNS0 OPT RR periodically
in any further messages it sends during the TCP session. 
This will increase the chance of the client being notified should the server 
modify the timeout associated with a session.

Regards

Sara. 
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to