| < draft-ietf-dnsind-edns0-01.txt | draft-ietf-dnsind-edns0-02.txt > | |||
|---|---|---|---|---|
| DNSIND Working Group Paul Vixie | DNSIND Working Group Paul Vixie | |||
| INTERNET-DRAFT ISC | INTERNET-DRAFT ISC | |||
| <draft-dnsind-edns0-01.txt> January, 1999 | <draft-ietf-dnsind-edns0-02.txt> June, 1999 | |||
| Extension mechanisms for DNS (EDNS0) | Extension mechanisms for DNS (EDNS0) | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft. Internet-Drafts are working | This document is an Internet-Draft and is in full conformance with | |||
| documents of the Internet Engineering Task Force (IETF), its areas, | all provisions of Section 10 of RFC2026. | |||
| and its working groups. Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | ||||
| other groups may also distribute working documents as Internet- | ||||
| Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as ``work in progress.'' | material or to cite them other than as "work in progress." | |||
| To view the entire list of current Internet-Drafts, please check the | The list of current Internet-Drafts can be accessed at | |||
| "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern | ||||
| Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific | The list of Internet-Draft Shadow Directories can be accessed at | |||
| Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). | http://www.ietf.org/shadow.html. | |||
| Abstract | Abstract | |||
| The Domain Name System's wire protocol includes a number of fixed | The Domain Name System's wire protocol includes a number of fixed | |||
| fields whose range has been or soon will be exhausted and does not | fields whose range has been or soon will be exhausted and does not | |||
| allow clients to advertise their capabilities to servers. This | allow clients to advertise their capabilities to servers. This | |||
| document describes backward compatible mechanisms for allowing the | document describes backward compatible mechanisms for allowing the | |||
| protocol to grow. | protocol to grow. | |||
| 1 - Rationale and Scope | 1 - Rationale and Scope | |||
| skipping to change at page 2, line 45 ¶ | skipping to change at page 2, line 45 ¶ | |||
| 3.1. The ``0 1'' label type will now indicate an extended label type, | 3.1. The ``0 1'' label type will now indicate an extended label type, | |||
| whose value is encoded in the lower six bits of the first octet of a | whose value is encoded in the lower six bits of the first octet of a | |||
| label. All subsequently developed label types should be encoded using | label. All subsequently developed label types should be encoded using | |||
| an extended label type. | an extended label type. | |||
| 3.2. The ``1 1 1 1 1 1'' extended label type will be reserved for future | 3.2. The ``1 1 1 1 1 1'' extended label type will be reserved for future | |||
| expansion of the extended label type code space. | expansion of the extended label type code space. | |||
| 4 - OPT pseudo-RR | 4 - OPT pseudo-RR | |||
| 4.1. The OPT pseudo-RR can be added to the additional data section of | 4.1. One OPT pseudo-RR can be added to the additional data section of | |||
| either a request or a response. An OPT is called a pseudo-RR because it | either a request or a response. An OPT is called a pseudo-RR because it | |||
| pertains to a particular transport level message and not to any actual | pertains to a particular transport level message and not to any actual | |||
| DNS data. OPT RRs shall never be cached, forwarded, or stored in or | DNS data. OPT RRs shall never be cached, forwarded, or stored in or | |||
| loaded from master files. | loaded from master files. The quantity of OPT pseudo-RRs per message | |||
| shall be either zero or one, but not greater. | ||||
| 4.2. An OPT RR has a fixed part and a variable set of options expressed | 4.2. An OPT RR has a fixed part and a variable set of options expressed | |||
| as {attribute, value} pairs. The fixed part holds some DNS meta data | as {attribute, value} pairs. The fixed part holds some DNS meta data | |||
| and also a small collection of new protocol elements which we expect to | and also a small collection of new protocol elements which we expect to | |||
| be so popular that it would be a waste of wire space to encode them as | be so popular that it would be a waste of wire space to encode them as | |||
| {attribute, value} pairs. | {attribute, value} pairs. | |||
| 4.3. The fixed part of an OPT RR is structured as follows: | 4.3. The fixed part of an OPT RR is structured as follows: | |||
| Field Name Field Type Description | Field Name Field Type Description | |||
| skipping to change at page 3, line 42 ¶ | skipping to change at page 3, line 43 ¶ | |||
| / OPTION-DATA / | / OPTION-DATA / | |||
| / / | / / | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| OPTION-CODE (Assigned by IANA.) | OPTION-CODE (Assigned by IANA.) | |||
| OPTION-LENGTH Size (in octets) of OPTION-DATA. | OPTION-LENGTH Size (in octets) of OPTION-DATA. | |||
| OPTION-DATA Varies per OPTION-CODE. | OPTION-DATA Varies per OPTION-CODE. | |||
| 4.5. The sender's UDP buffer size (which OPT stores in the RR CLASS | 4.5. The sender's UDP payload size (which OPT stores in the RR CLASS | |||
| field) is the number of octets of the largest UDP payload that can be | field) is the number of octets of the largest UDP payload that can be | |||
| reassembled and delivered in the sender's network stack. Note that path | reassembled and delivered in the sender's network stack. Note that path | |||
| MTU, with or without fragmentation, may be smaller than this. | MTU, with or without fragmentation, may be smaller than this. | |||
| 4.5.1. Note that a 512-octet UDP payload requires a 576-octet IP | 4.5.1. Note that a 512-octet UDP payload requires a 576-octet IP | |||
| reassembly buffer. Choosing 1280 on an Ethernet connected requestor | reassembly buffer. Choosing 1280 on an Ethernet connected requestor | |||
| would be reasonable. The consequence of choosing too large a value may | would be reasonable. The consequence of choosing too large a value may | |||
| be an ICMP message from an intermediate gateway, or even a silent drop | be an ICMP message from an intermediate gateway, or even a silent drop | |||
| of the response message. Requestors are advised to retry in such cases. | of the response message. | |||
| 4.5.2. Both requestors and responders are advised to take account of the | 4.5.2. Both requestors and responders are advised to take account of the | |||
| path's already discovered MTU (if known) when considering message sizes. | path's discovered MTU (if already known) when considering message sizes. | |||
| 4.5.3. The requestor's maximum payload size can change over time, and | ||||
| should therefore not be cached for use beyond the transaction in which | ||||
| it is advertised. | ||||
| 4.5.4. The responder's maximum payload size can change over time, but | ||||
| can be reasonably expected to remain constant between two sequential | ||||
| transactions; for example, a meaningless QUERY to discover a responder's | ||||
| maximum UDP payload size, followed immediately by an UPDATE which takes | ||||
| advantage of this size. (This is considered preferrable to the outright | ||||
| use of TCP for oversized requests, if there is any reason to suspect | ||||
| that the responder implements EDNS, and if a request will not fit in the | ||||
| default 512 payload size limit.) | ||||
| 4.5.5. Due to transaction overhead, it is unwise to advertise an | ||||
| architectural limit as a maximum UDP payload size. Just because your | ||||
| stack can reassemble 64KB datagrams, don't assume that you want to spend | ||||
| more than about 4KB of state memory per ongoing transaction. | ||||
| 4.6. The extended RCODE and flags (which OPT stores in the RR TTL field) | 4.6. The extended RCODE and flags (which OPT stores in the RR TTL field) | |||
| are structured as follows: | are structured as follows: | |||
| +0 (MSB) +1 (LSB) | +0 (MSB) +1 (LSB) | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| 0: | EXTENDED-RCODE | VERSION | | 0: | EXTENDED-RCODE | VERSION | | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| 2: | Z | | 2: | Z | | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| EXTENDED-RCODE Forms upper 8 bits of extended 12-bit RCODE. Note that | EXTENDED-RCODE Forms upper 8 bits of extended 12-bit RCODE. Note that | |||
| EXTENDED-RCODE value "0" indicates that an unextended | EXTENDED-RCODE value "0" indicates that an unextended | |||
| RCODE is in use (values "0" through "15"). | RCODE is in use (values "0" through "15"). | |||
| VERSION Indicates the implementation level of whoever sets it. | VERSION Indicates the implementation level of whoever sets it. | |||
| Full conformance with this specification is indicated by | Full conformance with this specification is indicated by | |||
| version ``0.'' Note that both requestors and responders | version ``0.'' Requestors are encouraged to set this to | |||
| should set this to the highest level they implement, | the lowest implemented level capable of expressing a | |||
| that responders should send back RCODE=BADVERS and that | transaction, to minimize the responder and network load | |||
| requestors should be prepared to probe using lower | of discovering the greatest common implementation level | |||
| version numbers if they receive an RCODE=BADVERS. | between requestor and responder. A requestor's version | |||
| numbering strategy should ideally be a run time | ||||
| configuration option. | ||||
| If a responder does not implement the VERSION level of | ||||
| the request, then it answers with RCODE=BADVERS. All | ||||
| responses will be limited in format to the VERSION level | ||||
| of the request, but the VERSION of each response will be | ||||
| the highest implementation level of the responder. In | ||||
| this way a requestor will learn the implementation level | ||||
| of a responder as a side effect of every response, | ||||
| including error responses, including RCODE=BADVERS. | ||||
| Z Set to zero by senders and ignored by receivers, unless | Z Set to zero by senders and ignored by receivers, unless | |||
| modified in a subsequent specification. | modified in a subsequent specification. | |||
| 5 - Transport Considerations | 5 - Transport Considerations | |||
| 5.1. The presence of an OPT pseudo-RR in a request should be taken as an | 5.1. The presence of an OPT pseudo-RR in a request should be taken as an | |||
| indication that the requestor fully implements the given version of | indication that the requestor fully implements the given version of | |||
| EDNS, and can correctly understand any response that conforms to that | EDNS, and can correctly understand any response that conforms to that | |||
| feature's specification. | feature's specification. | |||
| skipping to change at page 6, line 25 ¶ | skipping to change at page 7, line 18 ¶ | |||
| Specification,'' RFC 1035, USC/Information Sciences | Specification,'' RFC 1035, USC/Information Sciences | |||
| Institute, November 1987. | Institute, November 1987. | |||
| 10 - Author's Address | 10 - Author's Address | |||
| Paul Vixie | Paul Vixie | |||
| Internet Software Consortium | Internet Software Consortium | |||
| 950 Charter Street | 950 Charter Street | |||
| Redwood City, CA 94063 | Redwood City, CA 94063 | |||
| +1 650 779 7001 | +1 650 779 7001 | |||
| <paul@vix.com> | <vixie@isc.org> | |||
| End of changes. 12 change blocks. | ||||
| 22 lines changed or deleted | 54 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/ | ||||