> Francis Dupont <mailto:francis.dup...@fdupont.fr> > Wednesday, March 25, 2015 3:48 PM > In your previous mail you wrote: > >> i believe that the last of the old-style initiators who treated >> premature closure by the responder as an urgent condition warranting a >> message to the console or the system log file have diminished to the >> level of noise, but that the change francis is asking for here, along >> with the clarification i'm asking for above as to non-idleness, along >> with a clarification to the effect that initiators SHOULD NOT treat >> premature closure by the responder as an urgent condition, reaches the >> level of "protocol change" not "clarification". > > => so we should not allow servers to use a too small timeout, i.e., > we have to propose a value of some seconds. BTW this should be enough > for the only standard case of idling which is the SOA + xXFR (the > initiator just checks the serial in the returned SOA is greater).
i don't think we should give a specific timeout period. if a server decides to send a FIN immediately after its first response, or immediately after it detects an empty "input socket buffer" or implementation dependent equivalent, then the initiator will have to send its subsequent request in a new TCP session. in other words it's not the two minute timeout that's a problem in RFC 1035, it's any known minimum, since such a limit merely describes the minimum size of the botnet that keeps all of those resources tied up and unavailable to clients. we should allow servers to use whatever timeout they want -- but we should warn server implementers in this document that some existing AXFR/IXFR clients attempt to send an SOA query first, and then once they hear the SOA response, they may decide to send an AXFR or IXFR within the same session, and they may not be prepared for a server-initiated close between those two transactions, thus causing the client to always restart from the first transaction, and potentially never reach the point of sending the second transaction. and then we should advise that due to this old style behaviour, a timeout of at least a few seconds is advisable, other than when the server is experiencing heavy connection load such as an attack. similarly, we must advise client implementers that the server may close the connection at any time, and that they should not count on being able to send any transactions on a newly open session, or more than one transaction. and we should advise client implementers that older servers which faithfully implement RFC 1035 4.2.2 may not have timeout logic that is in the server's best interests, and thus no connection should be allowed to become idle on the client (initiator) side unless explicitly negotiated using some later signaling. in other words: << Too many implementations have guessed differently when presented with a loose specification, and interoperability today is a moving, organic target. When I periodically itch to rewrite the specification from scratch, I know there are too many things that must be said that also cannot be said. It's as though, in a discussion of the meaning of some bit pattern, a modern description of the protocol---written with full perspective on all that has been done in the DNS field---would have to say, "It could mean x but some implementations will think it means y so you must be cautious." >> (http://queue.acm.org/detail.cfm?id=1242499) -- Paul Vixie
_______________________________________________ DNSOP mailing list DNSOP@ietf.org https://www.ietf.org/mailman/listinfo/dnsop