home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 900s / rfc973.txt < prev    next >
Text File  |  1986-01-30  |  22KB  |  571 lines

  1.  
  2.  
  3. Network Working Group                                   Paul Mockapetris
  4. Request for Comments: 973                                            ISI
  5.                                                             January 1986
  6.  
  7.                  Domain System Changes and Observations
  8.  
  9.  
  10. STATUS OF THIS MEMO
  11.  
  12.    This RFC documents updates to Domain Name System specifications
  13.    RFC-882 [1] and RFC-883 [2], suggests some operational guidelines,
  14.    and discusses some experiences and problem areas in the present
  15.    system.  Distribution of this memo is unlimited.
  16.  
  17.    This document includes all changes to the Domain System through
  18.    January, 1986.  Change notices and additional discussion are
  19.    available online in file [USC-ISIB.ARPA]<DOMAIN>DOMAIN.CHANGES.
  20.  
  21. OVERVIEW
  22.  
  23.    This memo is divided into four major sections:
  24.  
  25.       "UPDATES" which discusses changes to the domain specification
  26.       which are in widespread use and should be regarded as being part
  27.       of the specification.
  28.  
  29.       "OPERATION GUIDELINES" which suggests rules-of-thumb for using the
  30.       domain system and configuring your database which are appropriate
  31.       in most cases, but which may have rare exceptions.
  32.  
  33.       "EXPERIENCES" which discusses some unusual situations and common
  34.       bugs which are encountered in the present system, and should be
  35.       helpful in problem determination and tuning.
  36.  
  37.       "PROBLEM AREAS" which discusses some shortcomings in the present
  38.       system which may be addressed in future versions.
  39.  
  40. UPDATES
  41.  
  42.    This section discusses changes to the specification which are final,
  43.    and should be incorporated in all domain system software.
  44.  
  45.    TTL timeouts too small
  46.  
  47.       The 16 bit TTL field in RRs could not represent a large enough
  48.       time interval.  The 16 bit field, using seconds for units, has a
  49.       maximum period of approximately 18 hours.
  50.  
  51.       All time values, including all TTLs and the MINIMUM field of the
  52.       SOA RR, are expanded to 32 bits.
  53.  
  54.  
  55.  
  56. Mockapetris                                                     [Page 1]
  57.  
  58.  
  59.  
  60. RFC 973                                                     January 1986
  61. Domain System Changes and Observations
  62.  
  63.  
  64.    CLASS changes
  65.  
  66.       Class 2, originally reserved for CSNET, is obsolete.  Class 3 has
  67.       been assigned for use by CHAOS.
  68.  
  69.    CNAME usage
  70.  
  71.       The specification allows CNAME RRs to exist with other RRs at the
  72.       same node.  This creates difficulties since the other RRs stored
  73.       with the CNAME at the alias might not agree with the RRs stored at
  74.       the primary name.
  75.  
  76.       If a node has a CNAME RR, it should have no other RRs.
  77.  
  78.    * semantics
  79.  
  80.       The use of * to represent a single label wildcard, along with the
  81.       possibility of multiple * labels, led to difficult server
  82.       implementations and complicated search algorithms.  There were
  83.       also questions regarding whether a * based specification could
  84.       refer to names that were not contained in the zone which had the *
  85.       specification.
  86.  
  87.       While we might want the "inheritability" for some cases, it leads
  88.       to implementation difficulties.  The first of these is that
  89.       whenever we can't find a RR in a particular zone, we have to
  90.       search all parent zones to look for a suitable * result.
  91.       (Alternatively we could develop some automatic method for insuring
  92.       consistency or insist on careful duplication of inherited data.)
  93.       We also must deal with conflicts, i.e. what if a subdomain doesn't
  94.       want to inherit defaults.
  95.  
  96.       Given these difficulties, the solution is to insist that
  97.       delegation of authority cancels the * defaults.  This is quite
  98.       simple to implement; all you need to do is to check for delegation
  99.       before looking for * RRs.
  100.  
  101.       A second difficulty is the restriction that * match a single
  102.       label.  Thus if a name server is looking for RRs for the name
  103.       A.B.C.D.E.F, it must check for *.B.C.D.E.F, *.*.C.D.E.F,
  104.       *.*.*.D.E.F, etc.  This check must also be careful of zone
  105.       boundaries and multiplies the effort to handle a query.
  106.  
  107.       The solution adopted is to allow a single * label in the leftmost
  108.       part of a name stored in a zone, and to allow this label to match
  109.  
  110.  
  111.  
  112.  
  113. Mockapetris                                                     [Page 2]
  114.  
  115.  
  116.  
  117. RFC 973                                                     January 1986
  118. Domain System Changes and Observations
  119.  
  120.  
  121.       any number of unknown labels or a single known label in the query
  122.       name.  However, the * match is only taken for parts of the tree
  123.       which are neither delegated or explicitly represented.
  124.  
  125.       The algorithm for performing the search in a tree structured
  126.       database has the following steps:
  127.  
  128.       1) Descend in the tree matching labels from right to left.  If a
  129.       delegation is found return that;  if the specified node is found
  130.       go to step 2, if the tree ends go to step 3.
  131.  
  132.       2) Look for RRs that answer the query.  If any are found, return
  133.       them as the answer.  If none are found, look for answers in a *
  134.       node which has the same name as the query name except for the
  135.       rightmost label.  (e.g. if you can't find an answer at F.ISI.ARPA,
  136.       look for a RR at *.ISI.ARPA)
  137.  
  138.       3) The search for a desired name has failed; look for a node whose
  139.       name is * plus however much matched.  Look for answers there.
  140.       (e.g. If you are looking for X.Y.ISI.ARPA and the tree ends at
  141.       ISI.ARPA, look at *.ISI.ARPA.  The same thing holds for
  142.       Y.ISI.ARPA, or any name of the form <anything>.Z.ISI.ARPA, where Z
  143.       is a label that doesn't exist under ISI.ARPA)
  144.  
  145.       Note that this interpretation means that * matches names that are
  146.       not in the tree, no matter how much of the tree is missing, and
  147.       also matches one level's worth of known tree.
  148.  
  149.    AA semantics
  150.  
  151.       When a name server is responding to a query for a particular name
  152.       and finds a CNAME, it may optionally restart the search at the
  153.       canonical name.  If the server uses the restart feature, the
  154.       answer section of the returned query contains one (or more)
  155.       CNAMEs, possibly followed by answers for the primary name.  The
  156.       canonical name will usually be in the same zone as the alias, but
  157.       this need not be the case.  If the server is authoritative for one
  158.       of the names but not both, it is not clear whether the AA bit
  159.       should be set.
  160.  
  161.       The solution adopted is to make the AA refer to the original query
  162.       name.
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Mockapetris                                                     [Page 3]
  171.  
  172.  
  173.  
  174. RFC 973                                                     January 1986
  175. Domain System Changes and Observations
  176.  
  177.  
  178.    Master file format
  179.  
  180.       The present specification uses a somewhat awkward method for
  181.       representing domain names in master files.
  182.  
  183.       The change adopted is that all domain names in this file will be
  184.       represented as either absolute or relative.  An absolute domain
  185.       name ends with a ".".  A free standing "." is assumed to refer to
  186.       the root.  A relative domain name doesn't end with a dot, and is
  187.       assumed to be relative to the current origin.
  188.  
  189.    SERIAL number size
  190.  
  191.       If the master file changes rapidly, an infrequently updated copy
  192.       may miss the wrapping of the sequence number in the SERIAL field
  193.       of the SOA, or misinterpret the number of updates that have taken
  194.       place.
  195.  
  196.       The SERIAL field is increased to 32 bits.
  197.  
  198.    MD and MF replaced by MX
  199.  
  200.       The original specification uses MD and MF RRs for mail agent
  201.       binding.  The problem is that a mailer making a MAILA query, which
  202.       asks for both types, can't use the cache since the cache might
  203.       have the results for a MD or MF query.  That is, the presence of
  204.       one of these types of information in the cache doesn't imply
  205.       anything about the other type.  The result was that either mailers
  206.       would have to always consult authoritative servers or try to use
  207.       partial information; neither of these is really acceptable.
  208.  
  209.       The change is to replace MD and MF with a new type of RR called MX
  210.       which conveys similar information in a single RR type.  MX has
  211.       been assigned a type code of 15 decimal.  The format of the MX RR
  212.       is a 16 bit preference value followed by a domain name.  A node
  213.       may have multiple MX RRs, and multiple MX RRs with the same
  214.       preference value are allowed at a given node.
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227. Mockapetris                                                     [Page 4]
  228.  
  229.  
  230.  
  231. RFC 973                                                     January 1986
  232. Domain System Changes and Observations
  233.  
  234.  
  235.       The preference values denote the relative preference that the mail
  236.       destination places on the mail agents, with lower values being
  237.       "better".  A mailer is expected to at least try the mail agent(s)
  238.       with the lowest preference value.  The significance of particular
  239.       preference values, the units of preference, and the linearity of
  240.       preference values are not defined but left open; preference values
  241.       should only be used to establish relative rankings.
  242.  
  243.       For example, the current RRs:
  244.  
  245.                        MAIL-ORG   MD    HOST1    
  246.                                   MD    HOST2    
  247.                                   MF    HOST3    
  248.  
  249.       might be replaced by:
  250.  
  251.                        MAIL-ORG   MX    10 HOST1 
  252.                                   MX    10 HOST2 
  253.                                   MX    20 HOST3 
  254.  
  255.       The values 10 and 20 have no significance other than 10<20.  A
  256.       detailed discussion of the use of MX is the subject of [3].
  257.  
  258.    Zone transfer
  259.  
  260.       The original specification states that zone transfers take place
  261.       in breadth first order.  The intent was to make the transfer
  262.       easier for the accepting name server to handle.  This now doesn't
  263.       work out to be very helpful, and is a severe pain for implementers
  264.       using various hashing algorithms.  The new rule is that you can
  265.       transmit the records in any order you choose, so long as the SOA
  266.       node of the zone is transmitted first and last, and no other
  267.       duplication occurs.
  268.  
  269.    IN-ADDR domain renamed
  270.  
  271.       The name of the IN-ADDR domain is now IN-ADDR.ARPA.  This change
  272.       was made because many felt that the use of a top-level name was
  273.       inappropriate to network-specific information.
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284. Mockapetris                                                     [Page 5]
  285.  
  286.  
  287.  
  288. RFC 973                                                     January 1986
  289. Domain System Changes and Observations
  290.  
  291.  
  292. OPERATIONAL GUIDELINES
  293.  
  294.    This section suggests rules-of-thumb for using the domain system and
  295.    configuring your database which are appropriate in most cases, but
  296.    which may have rare exceptions.
  297.  
  298.    Zone delegation
  299.  
  300.       When a domain wishes to become independent from its parent, the
  301.       RRs which mark the delegation in the parent and child zones should
  302.       be carefully synchronized to minimize the possibility that
  303.       resolvers become confused.
  304.  
  305.       For example, suppose that we wish to create a new zone called
  306.       ISI.EDU under an existing EDU zone, and that the servers for the
  307.       child zone are X.ISI.EDU and Y.GOV.
  308.  
  309.       We might add the following to the parent zone:
  310.  
  311.        ISI.EDU.      10000 NS  X.ISI.EDU.              
  312.                      10000 NS  Y.GOV.                  
  313.        X.ISI.EDU.    10000 A   <address of X.ISI.EDU.> 
  314.        Y.GOV.        10000 A   <address of Y.GOV.>     
  315.  
  316.       and the following to the child zone:
  317.  
  318.        ISI.EDU.      10000 NS  X.ISI.EDU.              
  319.                      10000 NS  Y.GOV.                  
  320.                      50000 SOA <SOA information>       
  321.        X.ISI.EDU.    10000 A   <address of X.ISI.EDU.> 
  322.        Y.GOV.        10000 A   <address of Y.GOV.>     
  323.  
  324.       Note the following:
  325.  
  326.          In both cases, the A RR for Y.GOV is included, even though
  327.          Y.GOV isn't in the EDU or ISI.EDU domains.  This RR isn't
  328.          authoritative, but is included to guarantee that the address of
  329.          Y.GOV is passed with delegations to it.  Strictly speaking this
  330.          RR need not be in either zone, but its presence is recommended.
  331.          The X.ISI.EDU A RR is absolutely essential.  The only time that
  332.          a server should use the glue RRs is when it is returning the NS
  333.          RRs and doesn't otherwise have the address of the server.  For
  334.          example, if the parent server also was authoritative for GOV,
  335.          the glue RR would typically not be consulted.  However, it is
  336.          still a good idea for it to be present, so that the zone is
  337.          self-sufficient.
  338.  
  339.  
  340.  
  341. Mockapetris                                                     [Page 6]
  342.  
  343.  
  344.  
  345. RFC 973                                                     January 1986
  346. Domain System Changes and Observations
  347.  
  348.  
  349.          The child zone and the parent zone have identical NS RRs for
  350.          the ISI.EDU domain.  This guarantees that no matter which
  351.          server is asked about the ISI.EDU domain, the same set of name
  352.          servers is returned.
  353.  
  354.          The child zone and the parent zone have A RRs for the name
  355.          servers in the NS RRs that delegate the ISI.EDU domain.  This
  356.          guarantees that in addition to knowing the name servers for the
  357.          ISI.EDU domain, the addresses of the servers are known as well.
  358.  
  359.          The TTLs for the NS RRs that delegate the ISI.EDU domain and
  360.          the A RRs that represent the addresses of the name servers are
  361.          all the same.  This guarantees that all of these RRs will
  362.          timeout simultaneously.  In this example, the value 10000 has
  363.          no special significance, but the coincidence of the TTLs is
  364.          significant.
  365.  
  366.       These guidelines haven't changed any of the flexibility of the
  367.       system; the name of a name server and the domains it serves are
  368.       still independent.
  369.  
  370.       It might also be the case that the organization called ISI wanted
  371.       to take over management of the IN-ADDR domain for an internal
  372.       network, say 128.99.0.0.  In this case, we would have additions to
  373.       the parent zone, say IN-ADDR.ARPA.
  374.  
  375.       We might add the following to the parent zone:
  376.  
  377.        99.128.IN-ADDR.ARPA. 2000 NS  Q.ISI.EDU.               
  378.                             2000 NS  XX.MIT.EDU.              
  379.        Q.ISI.EDU.           2000 A   <address of Q.ISI.EDU.>  
  380.        XX.MIT.EDU.          2000 A   <address of XX.MIT.EDU.> 
  381.  
  382.       and the following to the child zone:
  383.  
  384.        99.128.IN-ADDR.ARPA. 2000 NS  Q.ISI.EDU.               
  385.                             2000 NS  XX.MIT.EDU.              
  386.                             5000 SOA <SOA information>        
  387.        Q.ISI.EDU.           2000 A   <address of Q.ISI.EDU.>  
  388.        XX.MIT.EDU.          2000 A   <address of XX.MIT.EDU.> 
  389.  
  390.    SOA serials
  391.  
  392.       The serial field of the SOA RR for a domain is supposed to be a
  393.       continuously increasing (mod 2**32) value which denotes the
  394.  
  395.  
  396.  
  397.  
  398. Mockapetris                                                     [Page 7]
  399.  
  400.  
  401.  
  402. RFC 973                                                     January 1986
  403. Domain System Changes and Observations
  404.  
  405.  
  406.       version of the database.  The idea is that you can tell that a
  407.       zone has changed by comparing serial numbers.  When you change a
  408.       zone, you should increment the serial field of the SOA.
  409.  
  410.    All RRs with the same name, class, and type should have the same TTL.
  411.  
  412.       The logic here is that all of them will timeout simultaneously if
  413.       cached and hence the cache can be reliably used.
  414.  
  415.    Case consistency
  416.  
  417.       The domain system is supposed to preserve case, but be case
  418.       insensitive.  However, it does nobody any good to put both RRs for
  419.       domain name xxx and XXX in the data base - It merely makes caching
  420.       ambiguous and decreases the efficiency of compression.  This
  421.       consistency should also exist in the duplicate RRs that mark
  422.       delegation in the delegator and delegatee.  For example, if you
  423.       ask the NIC to delegate UZOO.EDU to you, your database shouldn't
  424.       say uzoo.edu.
  425.  
  426.    Inappropriate use of aliases
  427.  
  428.       Canonical names are preferred to aliases in all RRs.  One reason
  429.       is that the canonical names are closer to the information
  430.       associated with a name.  A second is that canonical names are
  431.       unique, and aliases are not, and hence comparisons will work.
  432.  
  433.       In particular, the use of aliases in PTR RRs of the IN-ADDR domain
  434.       or in NS RRs that mark delegation is discouraged.
  435.  
  436. EXPERIENCES
  437.  
  438.    This section discusses some unusual situations and common bugs which
  439.    are encountered in the present system, and should be helpful in
  440.    problem determination and tuning.  Put differently, you should try to
  441.    make your code defend against these attacks, and you should expect to
  442.    be the object of complaint if you make these attacks.
  443.  
  444.    UDP addresses
  445.  
  446.       When you send a query to a host with multiple addresses, you might
  447.       expect the response to be from the address to which you sent the
  448.       query.  This isn't the case with almost all UNIX implementations.
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455. Mockapetris                                                     [Page 8]
  456.  
  457.  
  458.  
  459. RFC 973                                                     January 1986
  460. Domain System Changes and Observations
  461.  
  462.  
  463.    UDP checksums
  464.  
  465.       Many versions of UNIX generate incorrect UDP checksums, and most
  466.       ignore the checksum of incoming UDP datagrams.  The typical
  467.       symptom is that your UNIX domain code works fine with other
  468.       UNIXes, but won't communicate with TOPS-20 or other systems.
  469.       (JEEVES, the TOPS-20 server used for 3 of the 4 root servers,
  470.       ignores datagrams with bad UDP checksums.)
  471.  
  472.    Making up data
  473.  
  474.       There are lots of name servers which return RRs for the root
  475.       servers with 99999999 or similar large values in the TTL.  For
  476.       example, some return RRs that suggest that ISIF is a root server.
  477.       (It was months ago, but is no longer.)
  478.  
  479.       One of the main ideas of the domain system is that everybody can
  480.       get a chunk of the name space to manage as they choose.  However,
  481.       you aren't supposed to lie about other parts of the name space.
  482.       Its OK to remember about other parts of the name space for caching
  483.       or other purposes, but you are supposed to follow the TTL rules.
  484.  
  485.       Now it may be that you put such records in your server or whatever
  486.       to ensure a server of last resort.  That's fine.  But if you
  487.       export these in answers to queries, you should be shot.  These
  488.       entries get put in caches and never die.
  489.  
  490.       Suggested domain meta-rule:
  491.  
  492.          If you must lie, lie only to yourself.
  493.  
  494. PROBLEM AREAS
  495.  
  496.    This section discusses some shortcomings in the present system which
  497.    may be addressed in future versions.
  498.  
  499.    Compression and types
  500.  
  501.       The present specification attempts to allow name servers and
  502.       resolvers to cache RRs for classes they don't "understand" as well
  503.       as to allow compression of domain names to minimize the size of
  504.       UDP datagrams.  These two goals conflict in the present scheme
  505.       since the only way to expand a compressed name is to know that a
  506.       name is expected in that position.
  507.  
  508.       One technique for addressing this problem would be to preface
  509.       binary data (i.e. anything but a domain name) with a length octet.
  510.  
  511.  
  512. Mockapetris                                                     [Page 9]
  513.  
  514.  
  515.  
  516. RFC 973                                                     January 1986
  517. Domain System Changes and Observations
  518.  
  519.  
  520.       The high order two bits of the length octet could contain either
  521.       01 or 10, which are illegal for domain names.  To compensate for
  522.       the additional bytes of data, we could omit the RDATA length field
  523.       and terminate each RR with a binary length field of zero.
  524.  
  525.    Caching non-existent names
  526.  
  527.       In the present system, a resolver has no standard method for
  528.       caching the result that a name does not exist, which seems to make
  529.       up a larger than expected percentage of queries.  Some resolvers
  530.       create "does not exist" RRs with TTLs to guarantee against
  531.       repetitive queries for a non-existent name.
  532.  
  533.       A standard technique might be to return the SOA RR for the zone
  534.       (note that only authoritative servers can say name does not exist)
  535.       in the reply, and define the semantics to be that the requester is
  536.       free to assume that the name does not exist for a period equal to
  537.       the MINIMUM field of the SOA.
  538.  
  539.    Cache conflicts
  540.  
  541.       When a resolver is processing a reply, it may well decide to cache
  542.       all RRs found in sections of the reply.  The problem is that the
  543.       resolver's cache may already contain a subset of these RRs,
  544.       probably with different TTLs.
  545.  
  546.       If the RRs are from authoritative data in the answer section, then
  547.       the cache RRs should be replaced.  In other cases, the correct
  548.       strategy isn't completely clear.  Note that if the authoritative
  549.       data's TTL has changed, then the resolver doesn't have enough
  550.       information to make the correct decision in all cases.
  551.  
  552.       This issue is tricky, and deserves thought.
  553.  
  554. REFERENCES
  555.  
  556.    [1]  Mockapetris, P., "Domain Names - Concepts and Facilities",
  557.         RFC-882, USC Information Sciences Institute, November 1983.
  558.  
  559.    [2]  Mockapetris, P., "Domain Names - Implementation and
  560.         Specification", RFC-883, USC Information Sciences Institute,
  561.         November 1983.
  562.  
  563.    [3]  Partridge, C., "Mail Routing and the Domain System", RFC-974,
  564.         CSNET-CIC, BBN Laboratories, January 1986.
  565.  
  566.  
  567.  
  568.  
  569. Mockapetris                                                    [Page 10]
  570.  
  571.