On Wed, 25 Nov 2015 09:23:50 +1100, Mark Andrews wrote: 
>
>
>In message <17673.1448400...@dash.isi.edu>, John Heidemann writes:
>> On Mon, 23 Nov 2015 20:25:29 +0000, "Wessels, Duane" wrote: 
>> >
>> >> On Nov 23, 2015, at 11:58 AM, Mukund Sivaraman <m...@isc.org> wrote:
>> >> 
>> >> Hi Jinmei
>> >> 
>> >> On Mon, Nov 23, 2015 at 10:31:23AM -0800, $B?@L@C#:H(B wrote:
>> >>> At Mon, 23 Nov 2015 21:37:48 +0530,
>> >>> Mukund Sivaraman <m...@isc.org> wrote:
>> >>> 
>> >>>> While looking at a bug last week in an implementation of 5966bis and
>> >>>> AXFR, I found that there's no explicit mention of AXFR and out-of-order
>> >>>> replies. AXFR replies [RFC 5936] can arrive in several messages over
>> >>>> TCP. While 5966bis speaks only about re-ordering replies and not
>> >>>> individiual messages (and so, is not incorrect), I feel that explicitly
>> >>>> describing ordering in the AXFR case would avoid confusion.
>> >>>> 
>> >>>> It seems that AXFR messages would have to be sent in order to avoid
>> >>>> confusion at the client about when a transfer correctly completed
>> >>>> vs. when it timed out. While they can be multiplexed with other DNS
>> >>>> messages, the individual messages of a single transfer must not be sent
>> >>>> out of order.
>> >>> 
>> >>> I'm not sure if I understand the concern...do you mean, for example,
>> >>> if an AXFR consists of the following 3 messages:
>> >>> 
>> >>> Message1: beginning SOA and some RRs
>> >>> Message2: some intermediate RRs
>> >>> Message3: some more intermediate RRs
>> >>> Message4: some more RRs and ending SOA
>> >>> 
>> >>> the client side of AXFR receives them in the order of, e.g., Message2,
>> >>> Message3, Message4, and then Message1?  That is, Message1 is not
>> >>> necessarily sent/received first and/or Message4 is not necessarily
>> >>> sent/received last?
>> >> 
>> >> Yes. Without them being in order, it doesn't seem the client can
>> >> determine upon timeout if all messages corresponding to the transfer
>> >> have been received, or if the transfer is incomplete.
>> >> 
>> >> Example:
>> >> 
>> >> (1) Message1, Message4, Message2, Message3 received.
>> >> Timeout complete and TCP still connected.
>> >> 
>> >> (2) Message1, Message4, Message2 received. [Message3] not received when
>> >> timeout complete and TCP still connected.
>> >> 
>> >> How can client know that in (2), the whole transfer was not received?
>> >
>> >
>> >TCP preserves the order of delivery, so if the messages are received in
>> >the order above, it is an AXFR/IXFR protocol violation by the server.  The
>> >server must send Message4 last.
>> 
>> Perhaps some of the confusion here has to do with overloading the term
>> "message".
>> 
>> There are DNS query and response messages and TCP segments.
>> 
>> A DNS message is a query and response (as per RFC1034 and
>> draft-hoffman-dns-terminology-02).
>
>A query is a DNS message.  A response is one or more DNS messages.
> 
>> For AXFRs, the DNS message maybe large enough that it is split into
>> multiple TCP segments (each a separate packet).
>
>For AXFR/IXFR over TCP if the response is large enough or the server
>has been configured to send one record per message it will be split
>into multiple messages each proceeded by its length.  That sequence
>of messages is split into multiple TCP segments.  That sequence of
>messages and lengths may be interleaved with other responses to
>other requests over the same TCP connection with each <length,message>
>pair treated as a atomic unit on the TCP connection.
>
>A TCP segment boundaries and message boundaries are not required
>to be aligned.  The contents of two messages may appear in one
>segment.
>
>The sequence of DNS messages that make up a AXFR / IXFR response
>are orders as per the requirements of AXFR and IXFR.
>
>> The statement:  "an AXFR consists of the following 3 messages: Message1:
>> beginning SOA and some RRs, Message2: some intermediate RRs, Message3:
>> some more intermediate RRs..."  I think conflates these concepts (it
>> uses the term "message" incorrectly).  The AXFR reply does NOT consist
>> of 3 DNS messages, it is ONE DNS message that is split into 3 or more
>> TCP segments.
>
>No.  It consists of a sequence (one or more) messages.

Of course you're correct---with large zones the reply would easily
exceed the 16-bit DNS message length.  Sorry, it was I who misunderstood
the original post.  Apologies to Mukund and Duane.

(You know, clearly what this thing needs is some additional form of
message fragementation and reassembly :-)

   -John Heidemann

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

Reply via email to