| < draft-andrews-dns-more-00.txt | draft-andrews-dns-more-01.txt > | |||
|---|---|---|---|---|
| Mark Andrews (CSIRO) | Mark Andrews (CSIRO) | |||
| INTERNET-DRAFT Paul Vixie (ISC) | INTERNET-DRAFT Paul Vixie (ISC) | |||
| <draft-andrews-dns-more-00.txt> June 1996 | <draft-andrews-dns-more-01.txt> June 1996 | |||
| Amends: RFC 1035 | Updates: RFC 1035 | |||
| Large Responses to DNS Queries (DNS MORE) | Large Responses to DNS Queries (DNS MORE) | |||
| Status of This Memo | Status of This Memo | |||
| This document is an Internet-Draft. Internet-Drafts are working | This document is an Internet-Draft. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its | documents of the Internet Engineering Task Force (IETF), its | |||
| areas, and its working groups. Note that other groups may also | areas, and its working groups. Note that other groups may also | |||
| distribute working documents as Internet-Drafts. | distribute working documents as Internet-Drafts. | |||
| skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
| DNS messages are limited to 64 kilobytes in size. At times it is | DNS messages are limited to 64 kilobytes in size. At times it is | |||
| necessary to send a message that is greater that 64 kilobytes. | necessary to send a message that is greater that 64 kilobytes. | |||
| This is currently not possible. AXFR is the one exception. This | This is currently not possible. AXFR is the one exception. This | |||
| document describes how to send a sequence of messages, the total | document describes how to send a sequence of messages, the total | |||
| length which may be greater than 64 kilobytes, by extending the | length which may be greater than 64 kilobytes, by extending the | |||
| protocol. | protocol. | |||
| In addition average message sizes are increasing and the 512 | In addition average message sizes are increasing and the 512 | |||
| byte payload limit for UDP is now too small. This document | byte payload limit for UDP is now too small. This document | |||
| describes how servers can identify when they can send | describes how servers can identify when they can send bigger | |||
| bigger messages without necessarily resorting to TCP. | messages without necessarily resorting to TCP. | |||
| 1 - Protocol | 1 - Protocol | |||
| This extension uses one of the RESERVED flags bits from DNS header | This extension uses one of the RESERVED flags bits from DNS header | |||
| [RFC1035 4.1.1] to indicate when a message is one of a sequence of mes- | [RFC1035 4.1.1] to indicate when a server can send the extended | |||
| sages. This flag bit shall be known as MORE. | response. This flag bit shall be known as MORE. | |||
| The MORE flag's semantics depend upon the underlying transport protocol. | The MORE flag's semantics depend upon the underlying transport protocol. | |||
| This document only defines the use of the MORE flag with the opcode | This document only defines the use of the MORE flag with the opcode | |||
| QUERY. | QUERY. | |||
| 1.1 - TCP Usage | 1.1 - TCP Usage | |||
| When using TCP a resolver sets the MORE flag to indicate that it is | When using TCP a resolver sets the MORE flag to indicate that it is | |||
| capable of receiving a multi message response (which we call a ``message | capable of receiving a multi message response (which we call a ``message | |||
| sequence''). | sequence''). | |||
| To indicate that the message sequence is not complete, the server | To indicate that the message sequence is not complete the server shall | |||
| inserts an additional record with name = QNAME, class = QCLASS, TTL = 0, | set the RCODE to CONTINUED (TBA) in all but the last message of the mes- | |||
| type = ANY and dlen = 0, in all but the last message of the sequence. | sage sequence. | |||
| This record shall be known as the Message Continuation Indicator (MCI | ||||
| RR). | ||||
| The order of resource records in a multi message response MUST be the | The order of resource records in a multi message response MUST be the | |||
| same as if the response could have been sent is a single response, after | same as if the response could have been sent is a single response. The | |||
| the MCI RR has been removed. | Questions first followed by, the Answer RRs, Authority RRs and Addi- | |||
| tional RRs. | ||||
| Each message in a sequence will contain a header with the same ID value, | Each message in a sequence will contain a header with the same ID value, | |||
| flags, opcode and response code. Only the count fields are permitted to | flags, opcode. Only the count fields and the rcode are permitted to | |||
| change. The counts shall represent the number of resource records in | change. The counts shall represent the number of resource records in | |||
| this message. TC MUST be set, and MORE cleared in the response. | this message. MORE MUST cleared in the response. | |||
| 1.1.1 - TCP Example | ||||
| The following example show how to send an answer with one question, 10 | ||||
| answer records, 14 authority records and 5 additional records. The | ||||
| answer is split up across 3 messages. | ||||
| MESSAGE 1: QCOUNT=1, ANCOUNT=10, AUCOUNT=0, | ||||
| ADCOUNT=0, RCODE=CONTINUED | ||||
| MESSAGE 2: QCOUNT=0, ANCOUNT=0, AUCOUNT=11, | ||||
| ADCOUNT=0. RCODE=CONTINUED | ||||
| MESSAGE 3: QCOUNT=0, ANCOUNT=0, AUCOUNT=3, | ||||
| ADCOUNT=5, RCODE=NOERROR | ||||
| 1.2 - UDP Usage | 1.2 - UDP Usage | |||
| When using UDP, a resolver may set the MORE flag in a QUERY request to | When using UDP, a resolver may set the MORE flag in a QUERY request to | |||
| indicate that its receive buffer is 8192 bytes in size, rather than the | indicate that its receive buffer is greater than 512 bytes in size, | |||
| 512 byte size given in [RFC1035 3.2.4]. The resolver is expected to set | rather than the 512 byte size given in [RFC1035 3.2.4]. The resolver is | |||
| this flag only if it knows that the host's reassembly buffer is large | expected to set this flag only if it knows that the host's reassembly | |||
| enough to accomadate datagrams of that size. | buffer is large enough to accommodate datagrams of the size indicated. | |||
| The new size is indicated by the RCODE is the query. The receive buffer | ||||
| is 512 * (2 ^ RCODE) bytes in size. | ||||
| RCODE SIZE | ||||
| 0 512 | ||||
| 1 1024 | ||||
| 2 2048 | ||||
| 3 4096 | ||||
| 4 8192 | ||||
| 5 16384 | ||||
| 6 32768 | ||||
| 7 65536 | ||||
| 8 131072 | ||||
| 9 262144 | ||||
| 10 524288 | ||||
| 11 1048576 | ||||
| 12 2097152 | ||||
| 13 4194304 | ||||
| 14 8388608 | ||||
| 15 16777216 | ||||
| A server receiving a QUERY request with the MORE flag set is allowed to | A server receiving a QUERY request with the MORE flag set is allowed to | |||
| transmit a response of up to 8192 bytes. If the response will not fit | transmit a response of up to the size indicated. If the response will | |||
| in 8192 bytes, then the rules given in [RFC1035 4.1.1, 4.2.1, 6.2] | not fit in size indicated, then the rules given in [RFC1035 4.1.1, | |||
| apply. | 4.2.1, 6.2] apply. | |||
| The server MUST clear the MORE flag in the response. | The server MUST clear the MORE flag in the response. | |||
| The server SHOULD disable path MTU discovery on the UDP response packet | The server SHOULD disable path MTU discovery on the UDP response packet | |||
| resulting in host fragmentation. | resulting in host fragmentation. | |||
| 2 - Header Format | 2 - Header Format | |||
| The header format is that described in [RFC1035 4.1.1] with the MORE | The header format is that described in [RFC1035 4.1.1] with the MORE | |||
| flag added: | flag added: | |||
| End of changes. 10 change blocks. | ||||
| 22 lines changed or deleted | 55 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||