Internet Engineering Task Force                             M. Sivaraman
Internet-Draft                                                 S. Morris
Intended status: Experimental                                  R. Bellis
Expires: January 4, September 2, 2018                                   W. Krecicki
                                             Internet Systems Consortium
                                                            July 3, 2017
                                                           March 1, 2018

                           DNS catalog zones
                 draft-muks-dnsop-dns-catalog-zones-03 Catalog Zones
                 draft-muks-dnsop-dns-catalog-zones-04

Abstract

   This document describes a method for automatic DNS zone catalog provisioning and synchronization
   among DNS primary and secondary nameservers by storing and
   transferring the catalogs catalog of zones to be provisioned as one or more
   regular DNS zones.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on January 4, September 2, 2018.

Copyright Notice

   Copyright (c) 2017 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3   2
   2.  Catalog zones  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.1.
   3.  Description . . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.2.  Resource record fields
   4.  Catalog Zone Structure  . . . . . . . . . . . . . . . . . . .   4
     2.3.
     4.1.  SOA and NS records at apex Records  . . . . . . . . . . . . . . . . . . .   4
     2.4.
     4.2.  Zone properties map and owner names Data . . . . . . . . . . .   5
     2.5.  Zone property value data types . . . . . . . . . . . . .   6
       2.5.1.  Strings   4
       4.2.1.  Resource Record Format  . . . . . . . . . . . . . . .   5
       4.2.2.  Multi-valued Properties . . . . . . . .   6
       2.5.2.  Booleans . . . . . . .   5
       4.2.3.  Vendor-specific Properties  . . . . . . . . . . . . .   6
     4.3.  Zone Structure  . .   6
       2.5.3.  Integers . . . . . . . . . . . . . . . . . . .   6
       4.3.1.  List of Member Zones  . . . . . . . . . . . .   6
       2.5.4.  Floating-point values . . . .   6
       4.3.2.  Catalog Zone Schema Version . . . . . . . . . . . . .   7
       2.5.5.  Single domain names
       4.3.3.  Default Zone Configuration  . . . . . . . . . . . . .   7
       4.3.4.  Zone Properties Specific to a Member Zone . . . . . .   7
       2.5.6.  Unordered list of domain names
   5.  Data Types  . . . . . . . . . . .   8
       2.5.7.  List of network addresses . . . . . . . . . . . . . .   8
       2.5.8.  Single host address
     5.1.  String  . . . . . . . . . . . . . . . . .   9
       2.5.9.  Comments . . . . . . . .   8
     5.2.  Booleans  . . . . . . . . . . . . . .   9
     2.6.  Catalog zone schema version . . . . . . . . . .   8
     5.3.  Integers  . . . . .   9
     2.7.  List of member zones . . . . . . . . . . . . . . . . . .   9
     2.8.  Zone configuration properties .   8
     5.4.  Floating-Point Values . . . . . . . . . . . . .  10
       2.8.1.  zone-soa-default-serial . . . . .   9
     5.5.  Domain Name . . . . . . . . . .  10
       2.8.2.  zone-soa-default-refresh . . . . . . . . . . . . .   9
     5.6.  IP Prefix .  10
     2.9.  Zone properties specific to a member zone . . . . . . . .  10
     2.10. Example of a catalog zone . . . . . . . . . . . . . . .   9
     5.7.  Single Host Address .  11
   3.  Nameserver behavior and requirements . . . . . . . . . . . .  11
     3.1.  General requirements . . . . . .  10
   6.  Nameserver Behavior . . . . . . . . . . . .  11
     3.2.  Updating catalog zones . . . . . . . . .  10
     6.1.  General Requirements  . . . . . . . .  12
     3.3.  Implementation notes . . . . . . . . . .  10
     6.2.  Updating Catalog Zones  . . . . . . . .  12
   4.  Security considerations . . . . . . . . .  11
     6.3.  Implementation Notes  . . . . . . . . . .  13
   5.  IANA considerations . . . . . . . .  11
   7.  Security Considerations . . . . . . . . . . . . .  13
   6.  Acknowledgements . . . . . .  11
   8.  IANA Considerations . . . . . . . . . . . . . . . .  13
   7.  References . . . . .  12
   9.  Acknowledgements  . . . . . . . . . . . . . . . . . . . .  14
     7.1.  Normative references . .  12
   10. References  . . . . . . . . . . . . . . . .  14
     7.2.  Informative references . . . . . . . . .  12
     10.1.  Normative references . . . . . . . . . .  15
   Appendix A.  Glossary . . . . . . . .  12
     10.2.  Informative references . . . . . . . . . . . . . .  15 . . .  13
   Appendix B. A.  Open issues and discussion (to be removed before
                final publication) . . . . . . . . . . . . . . . . .  16  14
   Appendix C. B.  Change History (to be removed before final
                publication) . . . . . . . . . . . . . . . . . . . .  17  14
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  18  15

1.  Introduction

   DNS nameservers implement AXFR and IXFR for zone

   The data synchronization
   among in a zone's DNS zone is synchronized amongst its primary and
   secondary nameservers, but nameservers using AXFR and IXFR.  However, the list of
   zones served by the primary (called a catalog in [RFC1035]) is not
   automatically synchronized.  The administrator of a DNS nameserver
   farm has synchronized with the secondaries.  To add or remove a
   zone, the administrator of a DNS nameserver farm not only has to synchronize such add
   or remove the zone catalogs among primaries and their
   secondary nameservers from the primary, they must also add/remove the
   zone from all secondaries, either manually or via an external application layer.
   application.  This can be inconvenient, error-prone both inconvenient and error-prone; it will
   also be dependent on the nameserver implementation.

   A method for automatic zone catalog provisioning and synchronization
   is useful, so that the zone catalog can be maintained in a reference
   location by an administrator, similar to zone data.

   This document describes one such method, a method in which the catalog is represented
   as a regular DNS zone called (called a "catalog zone", zone" here), and transferred
   using DNS zone transfers.  The representation of catalogs
   within DNS  As zones is specified and nameserver requirements are listed
   so that DNS implementations can support added to or removed from the
   catalog zones. zone, the changes are propagated to the secondary nameservers
   in the normal way.  The secondary nameservers then add/remove/modify
   the zones they serve in accordance with the changes to the zone.

   The contents and representation of catalog zones are described in
   Section 2. 3.  Nameserver behavior is described in Section 3.  A
   glossary of some terms used in this memo is provided in Appendix A. 6.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.

   Catalog zone:  A DNS zone containing a DNS catalog, that is, a list
         of DNS zones

2.1. and associated zone configuration.

   Member zone:  A DNS zone whose configuration is published inside a
         catalog zone.

   Zone property:  A configuration parameter of a zone, sometimes also
         called a zone option, represented as a key/value pair.

   $CATZ:  Used in examples as a placeholder to represent the domain
         name of the catalog zone itself (c.f. $ORIGIN).

3.  Description

   A catalog zone is a specially crafted DNS zone that contains, as DNS
   zone data, a data:

   o  A list of DNS zones called member zones, associated
   template (called "member zones").

   o  Default zone configuration information common to all its member zones, and zone-
   specific zones.

   o  Zone-specific configuration that applies to a respective zone. information.

   An implementation of catalog zones MAY allow the catalog zones to include contain
   other catalog zones as member zones, but template default zone configuration
   present in a catalog zone only applies to its immediate member zones.  A

   Although the contents of a catalog zone are interpreted and acted
   upon by nameservers, a catalog zone is meant to be used to provision a regular DNS catalogs to secondary
   nameservers via zone transfers, for the purpose of setting up member
   zones and so must
   adhere to be served from these secondary nameservers. the standards for such zones.

   A catalog zone uses some RR TYPEs such as PTR with alternate
   semantics is primarily intended for its purposes.  Although this may be controversial, the
   situation is similar to other similar zone-based representations such
   as response-policy zones [RPZ].  A design criterion management of catalog zones a farm of
   authoritative nameservers.  It is not expected that none of the RR TYPEs used therein may incur content of
   catalog zones will be accessible from any additional
   section processing during recursive nameserver.

4.  Catalog Zone Structure

4.1.  SOA and NS Records

   As with any other DNS QUERY.

   Member zones' configuration is specified as a map of zone properties,
   represented as a subtree of a node [RFC1034] in the domain name space
   inside zone, a catalog zone.  This is described in Section 2.4.  Each zone
   property has MUST have a name syntactically
   correct SOA record and an associated value of a specific data type.
   Zone property value data types are described in Section 2.5.  A list
   of permitted zone property names one or more NS records at its apex.

   The SOA record's SERIAL, REFRESH, RETRY and their data types is given in
   Section 2.8.

   TBD: Transitive catalogs

2.2.  Resource record EXPIRE fields [RFC1035]
   are used during zone transfer.  A catalog zone contains various resource records (RRs).  They have
   NAME, TYPE, CLASS, TTL, RDLENGTH and RDATA as fields [RFC1035].

   The NAME zone's SOA SERIAL field contains the owner name of the respective RR.  As with
   all DNS zones, the owner name must be a child of
   MUST increase when an update is made to the catalog zone
   name.

   The TYPE field depends on zone's contents
   as per serial number arithmetic defined in [RFC1982].  Otherwise,
   secondary nameservers might not notice updates to the type of catalog zone's
   contents.

   Should the zone property value
   being represented.  Section 2.5 describes how various zone property
   value types are represented.

   The CLASS field of the RR MUST be set to IN(1) [RFC1035].  This is
   because some RR TYPEs such as APL used by catalog zones are defined
   only made available for querying, the IN CLASS.

   The TTL SOA record's
   MINIMUM field's value is not specially the negative cache time (as defined by this memo.  Catalog
   zones are for nameserver management only and in
   [RFC2308]).  Since recursive nameservers are not intended for
   general querying.  Operators should use whatever value seems
   convenient for any management applications that may query the catalog
   zone.

   The RDLENGTH field contains the length of the RDATA field.

   The content of the RDATA field depends on the type of catalog zone
   property value being represented.  Section 2.5 describes how various
   zone property value types are represented.

2.3.  SOA and NS records at apex

   Similar expected to any other DNS zone, a catalog zone would be expected able
   to
   have access (and subsequently cache) entries from a syntactically correct SOA record and one or more NS records at
   its apex.

   The SOA record's SERIAL, REFRESH, RETRY and EXPIRE fields [RFC1035]
   are used during zone transfer.  A catalog zone's SOA SERIAL field
   SHOULD increase when an update is made to the catalog zone's contents
   as per serial number arithmetic defined in [RFC1982].  Otherwise,
   secondary nameservers may not notice updates to the catalog zone's
   contents.

   The SOA record's MINIMUM field's value is not specially defined by
   this memo.  Although they are regular DNS zones, catalog zones
   contain only information for the management of zone a set
   value of nameservers.
   For this reason, operators may want zero (0) is RECOMMENDED.

   Since there is no requirement to limit the systems be able to query these zones.

   As the catalog zones do not participate in zone
   via recursive namservers the DNS, NS records at the apex are will not be used but they
   and no parent delegation is required.  However, they are still
   required so that catalog zones are syntactically correct DNS zones.  No parent delegation for the
   catalog zone is required.
   Any valid DNS name can be used in the NSDNAME field of such NS
   records [RFC1035] and they MUST be ignored.  A single NS RR with an
   NSDNAME field containing the absolute name "invalid." is recommended RECOMMENDED
   [RFC2606].

2.4.

4.2.  Zone properties map and owner names

   Member zones' configuration is specified as a map of Data

   A catalog zone properties,
   represented as a subtree of a node [RFC1034] in the domain name space
   inside contains a catalog zone.  A subtree set of child nodes is used for a nested
   map, occuping another label level.  A map element's key/value pairs, where each key (property
   name) is represented in
   encapsulated within the label at that level.  For example, if owner name of a
   catalog zone is named "catalog1.example.org." DNS RR and contains a property
   with name "prop0", the corresponding
   value is stored in the RR's RDATA.  The specific owner name of depends
   on whether the node
   representing that property is "prop0.catalog1.example.org."

   Zone property relates to the catalog zone itself, a member
   zone thereof, or to default zone properties described in Section 4.3.
   The owner names are case-insensitive. case insensitive.

4.2.1.  Resource Record Format

   Each zone property may use
   only one key/value pair has a defined data type for its values.  A list of permitted zone property
   names type, and their each data types is given type
   accordingly uses a particular RR TYPE to represent its possible
   values, as specified in Section 2.8.

   Many properties are single-valued, but some properties can be
   collections with thousands 5.

   The general form of values.  An example a catalog zone record is as follows:

         [<unique-id>.]<key>.<path>.$CATZ 0 IN <RRTYPE> <value>

   where <path> is a sequence of labels with values depending on the list
   purpose (and hence position) of
   member zones the record within a the catalog zone, which can be larger than any
   single RDATA instance can allow.  Multiple RRs are used to represent
   such properties.

   TBD: Currently a hashing method in owner names is used to split zone
   (see Section 4.3) and where the
   elements of such <unique-id> prefix is only present
   for multi-valued properties (see Section 4.2.2).

   NB: Catalog zones use some RR TYPEs (such as PTR) with multiple RRs into individual RRsets,
   one per RR.  This needs alternate
   semantics to those originally defined for them.  Although this may be revisited as IXFR and DNS UPDATE both
   allow individual RRs within an RRset to be modified.  The hashing
   method used is described in
   controversial, the appropriate property value data types
   in Section 2.5.

2.5.  Zone property value data types

2.5.1.  Strings

   A property with a string value situation is specified using a single TXT RR
   [RFC1035] with owner name set similar to the name of the property other similar zone-based
   representations such as a sub-
   domain response-policy zones [RPZ].

   The CLASS field of the catalog zone name, and RDATA set to the property value.

   For example, if every RR in a catalog zone MUST be IN (1).  This
   is named "catalog1.example.org." and
   contains a property "prop0" with string value "Example", the
   corresponding because some RR would appear TYPEs such as follows:

           prop0.catalog1.example.org. 3600 IN TXT "Example"

   Here, "prop0" can contain multiple TXT RRs at that node of APL used by catalog zones are
   defined only for the domain
   name space [RFC1034]. IN class.

   The single string property SHOULD be checked TTL field's value is not specially defined by the implementation.

2.5.2.  Booleans

   A property with this memo.  Catalog
   zones are for authoritative nameserver management only and are not
   intended for general querying via recursive resolvers and therefore a boolean
   value of zero (0) is specified using a RECOMMENDED.

   It is an error for any single TXT RR
   with owner name set to the name of the property as within a sub-domain catalog zone (other
   than the apex of the catalog zone name, and RDATA set itself) to "true" for true condition and
   "false" for false condition.  The RDATA is case-insensitive.

   For example, if have more than one RR associated
   with it.

4.2.2.  Multi-valued Properties

   Some properties do not represent single values but instead represent
   a catalog zone collection of values.  The specification for each property
   describes whether it is named "catalog1.example.org." and
   contains a single-valued or multi-valued.  A multi-
   valued property "active" with boolean value false, the
   corresponding RR would appear is encoded as follows:

           active.catalog1.example.org. 3600 IN TXT "false"

   Here, "active" can contain multiple TXT RRs at that node of where the
   domain owner name space [RFC1034].  The single boolean property SHOULD of
   each individual RR contains a unique (user specified) DNS label.

   So, while a single-valued key might be
   checked by the implementation.

2.5.3.  Integers

   A represented like this:

                 <key>.<path>.$CATZ IN TXT "value"

   a multi-valued key would be represented like this:

         <unique-id-1>.<key>.<path>.$CATZ IN TXT "value 1"
         <unique-id-2>.<key>.<path>.$CATZ IN TXT "value 2"
         ...

   NB: a property with an integer value that is specified using a single TXT RR
   for signed integers or unsigned integers, with owner name set to be multi-valued MUST be encoded
   using the
   name unique prefixed key syntax even if there is only one value
   present.

   The specification of the any multi-valued property as a sub-domain of MUST document whether
   the catalog zone name, and
   RDATA set to collection represents either an ordered or un-ordered list.  In
   the property value.

   A signed integer's TXT RDATA uses former case the representation ordering of an unsuffixed
   "integer constant" as defined in the C programming language standard
   [ISO.9899.1990] (of prefixes according to the type matching usual
   DNS canonical name ordering will determine the sort order.

4.2.3.  Vendor-specific Properties

   TBD: Prepare a 64-bit signed integer on list of zone configuration properties that
   platform), with an optional minus prefix.  The representation MUST be
   specified are common
   to DNS implementations.  This is so that a company may manage a
   catalog zone using a single <character-string> [RFC1034].

   An unsigned integer's TXT RDATA uses the representation of an
   unsuffixed "integer constant" Windows DNS server as defined in the C programming
   language standard [ISO.9899.1990] (of primary, and a
   secondary nameserver hosting service may pick up the type matching common
   properties and may use a 64-bit
   unsigned integer different nameserver implementation such as
   BIND or NSD on a POSIX operating system to serve it.

   TBD: We may specify that platform).  The representation MUST unrecognized zone property names must be
   ignored, or that nameserver specific properties must be specified
   using a single <character-string> [RFC1034].

   For example, if a catalog zone is named "catalog1.example.org." and
   contains a property "min-ttl" with unsigned integer value 300, the
   corresponding RR would appear "x-" prefix similar to MIME type naming.

   TBD: Any list of zone properties is ideally maintained as follows:

           min-ttl.catalog1.example.org. 3600 IN TXT "300"

   Here, "min-ttl" can contain multiple TXT RRs at that node a registry
   rather than within this memo.

4.3.  Zone Structure

4.3.1.  List of the
   domain name space [RFC1034]. Member Zones

   The single integer property SHOULD be
   checked by the implementation.

2.5.4.  Floating-point values

   A property with a floating-point value list of member zones is specified using as a single
   TXT RR with owner name set to the name multi-valued collection of
   domain names under the property as owner name "zones" where "zones" is a sub- direct
   child domain of the catalog zone name, and RDATA set to zone.

   The names of member zones are represented on the property value.

   A floating-point value's TXT RDATA uses the representation side (instead
   of an
   unsuffixed "floating constant" as defined in the C programming
   language standard [ISO.9899.1990].  The representation MUST be
   specified using a single <character-string> [RFC1034]. part of owner names) so that all valid domain names may be
   represented regardless of their length [RFC1035].

   For example, if a catalog zone is named "catalog1.example.org." lists three zones "example.com.",
   "example.net." and
   contains a property "decay-rate" with value 0.15, "example.org.", the corresponding
   RR may RRs would appear as follows:

           decay-rate.catalog1.example.org. 3600

           <m-unique-1>.zones.$CATZ 0 IN TXT "15e-2"

   Here, "decay-rate" can contain multiple TXT RRs at PTR example.com.
           <m-unique-2>.zones.$CATZ 0 IN PTR example.net.
           <m-unique-3>.zones.$CATZ 0 IN PTR example.org.

   where <m-unique-N> is a label that node of the
   domain name space [RFC1034].  The single floating-point property
   SHOULD be checked by uniquely tags each record in the implementation.

2.5.5.  Single domain names

   A property with a single domain name
   collection, as value described in Section 4.2.2.

   Although any legal label could be used for <m-unique-N> it is specified using
   RECOMMENDED that it be a
   PTR RR [RFC1035] with owner name set to value deterministically derived from the name
   fully-qualified member zone name.  The BIND9 implementation uses the
   40 character hexadecimal representation of the property as a
   sub-domain SHA-1 digest
   [FIPS.180-4.2015] of the catalog lower-cased member zone name, and RDATA set to the property
   value.

   For example, if a name as encoded in
   uncompressed wire format.

4.3.2.  Catalog Zone Schema Version

   The catalog zone schema version is named "catalog1.example.org." and
   contains a specified by an unsigned integer
   property "prop1" with value "val1.example.com.", the
   corresponding RR would appear as follows:

           prop1.catalog1.example.org. 3600 IN PTR val1.example.com.

   Here, "prop1" can contain multiple PTR RRs at that node of the domain
   name space [RFC1034].  The single domain name property SHOULD be
   checked by the implementation.

2.5.6.  Unordered list of domain names

   Let N be an absolute name formed by concatenating the RDATA hash (see
   Appendix A), the name of the property, "version".  All catalog zones MUST
   have this property present.  Primary and the secondary nameservers MUST
   NOT use catalog zone name in
   that order, such that N is a unique owner name zones with an unexpected value in this property, but
   they may be transferred as ordinary zones.  For this memo, the catalog zone.

   Then, a
   "version" property containing an unordered list of domain names as value is specified using multiple PTR RRs [RFC1035] with owner name MUST be set to N, 2, i.e.

               version.$CATZ 0 IN TXT "2"

   NB: Version 1 was used in a draft version of this memo and each RR's RDATA reflected
   the implementation first found in BIND 9.11.

4.3.3.  Default Zone Configuration

   Default zone configuration comprises a set of properties that are
   applied to each domain name all member zones listed in the list catalog zone unless
   overridden my member zone-specific information.

   All such properties are stored as child nodes of the property's value respectively.

   For example, if owner name
   "defaults" itself a direct child node of the catalog zone, e.g.:

        example-prop.defaults.$CATZ 0 IN TXT "Example"

4.3.4.  Zone Properties Specific to a Member Zone

   Default zone is named "catalog1.example.org." and
   contains properties can be overridden on a per-zone basis by
   specifying the property "prop2" under the the sub-domain associated with its value being an unordered the
   member zone in the list of
   two names "a.example.com." and "b.example.com.", the corresponding
   RRs would appear as follows:

          <hash1>.prop2.catalog1.example.org. 3600 IN PTR a.example.com.
          <hash2>.prop2.catalog1.example.org. 3600 zones, e.g.:

        example-prop.<m-unique>.zones.$CATZ 0 IN PTR b.example.com.

   Here, "prop2"'s subtree child nodes (in TXT "Example"

   where "m-unique" is the domain name space
   [RFC1034]) can contain multiple PTR RRs at each child.  For example,
   <hash1>.prop2 may contain multiple PTR RRs at label that node.  The single
   domain name property SHOULD be checked by uniquely identifies the implementation.

2.5.7.  List of network addresses

   A property with a list of network addresses member
   zone name as value is specified
   using described in Section 4.3.1.

   NB: when a single APL RR [RFC3123] with owner name set to zone-specific property is multi-valued the owner name of will
   contain two unique identifiers, the property as a sub-domain of left-most tagging being
   associated with the catalog zone name, individual value (<unique-id-N>) and RDATA set
   to the property value.  In its presentation format, the "!" character
   (corresponding to the negation flag) is used to negate a network
   element.  The exact meaning of a negated network element is left to
   be described by other
   (<m-unique>) associated with the property that APL is used for.  Note that member zone itself, e.g.:

        $ORIGIN <m-unique>.zones.$CATZ
        <unique-id-1>.example-prop 0 IN TXT "Value 1"
        <unique-id-2>.example-prop 0 IN TXT "Value 2"
        ...

5.  Data Types

   This section lists the APL
   RR TYPE is various data types defined only for the IN(1) RR CLASS.

   For example, if a use within
   catalog zone is named "catalog1.example.org." and
   contains a property "allow-query" zones.

5.1.  String

   A key with a string value [192.0.2.0/24,
   2001:db8::/32] as the list of networks, the corresponding is represented with a TXT RR would
   appear as follows:

           allow-query.catalog1.example.org. 3600 [RFC1035],
   e.g.:

        example-prop.<m-unique>.zones.$CATZ 0 IN APL (
                   1:192.0.2.0/24 2:2001:db8::/32)

   Here, "allow-query" can contain TXT "Example"

   If the RDATA is split into multiple APL RRs at that node of <character-string> elements the
   domain name space [RFC1034].  The single APL RR property SHOULD
   MUST be
   checked by the implementation.

2.5.8.  Single host address directly concatenated without any separating character.

5.2.  Booleans

   A single host address key with a boolean value is represented using the list of network
   addresses data type (see Section 2.5.7) with a suitable network and
   prefix to result in TXT RR containing a
   single host address.

2.5.9.  Comments

   Comments may be added anywhere in a catalog zone using <character-string> with a scheme such
   as NOTE RRs [I-D.hunt-note-rr].  This memo does not depend on NOTE
   RRs and it is only suggested here as an informative reference.

2.6.  Catalog zone schema version value of "true" for true condition
   and "false" for false condition, e.g:

        example-prop.<m-unique>.zones.$CATZ 0 IN TXT "false"

   The catalog zone schema version RDATA is specified by an unsigned integer
   property with the property name "version".  All catalog zones MUST
   have this property present.  Primary and secondary nameservers MUST
   NOT use catalog zones case-insensitive.

5.3.  Integers

   A key with an unexpected value in this property, but
   they may be transferred as ordinary zones.  For this memo, the
   "version" property integer value MUST be set to 1.

   For example, if a catalog zone is named "catalog1.example.org.", the
   corresponding RR MUST look as follows:

           version.catalog1.example.org. 3600 IN TXT "1"

   Here, "version" can contain multiple TXT RRs at that node of the
   domain name space [RFC1034].  The single specified using a TXT RR property SHOULD be
   checked by the implementation.

2.7.  List of member zones

   The list of member zones are specified as an unordered list (see
   Section 2.5.6) of domain names under the owner name "zones" where
   "zones" is containing a sub-domain of the catalog zone.

   The names of member zones are represented on the
   single <character-string>.

   A signed integer's TXT RDATA side instead
   of as part of owner names so that all valid domain names may be
   represented regardless of their length.  [RFC1035]

   For example, if a catalog zone is named "catalog1.example.org." and
   lists 3 zones "example.com.", "example.net." and "example.org.", uses the
   RRs would appear as follows:

           <hash>.zones.catalog1.example.org. 3600 IN PTR example.com.
           <hash>.zones.catalog1.example.org. 3600 IN PTR example.net.
           <hash>.zones.catalog1.example.org. 3600 IN PTR example.org.

2.8.  Zone configuration properties

   TBD: Prepare a list representation of zone configuration properties that are common
   to DNS implementations.  This is so that a company may manage a
   catalog zone using a Windows DNS server an unsuffixed
   "integer constant" as defined in the primary, and a
   secondary nameserver hosting service may pick up the common
   properties and may use a different nameserver implementation such as
   BIND or NSD on a POSIX operating system to serve it.

   TBD: We may specify that unrecognized zone property names must be
   ignored, or that nameserver specific properties must be specified
   using C programming language standard
   [ISO.9899.1990] (of the "x-" prefix similar to MIME type naming.

   TBD: Any list of zone properties is ideally maintained as a registry
   rather than within this memo.

2.8.1.  zone-soa-default-serial

   TBD.

2.8.2.  zone-soa-default-refresh

   TBD.

2.9.  Zone properties specific to a member zone

   Member zones in matching a catalog zone share template zone configuration that
   is common to all member zones in that catalog.  This section
   describes the syntax 64-bit signed integer on that can be used to specify zone properties
   specific to single member zones.

   Let N be
   platform), with an absolute name formed by concatenating the member zone
   name hash as a label (see Appendix A), the label "zones", and the
   catalog zone name in that order, such that N is a unique owner name optional minus prefix.

   An unsigned integer's TXT RDATA uses the representation of an
   unsuffixed "integer constant" as defined in the catalog zone.

   Zone properties specific to a particular member zone are specified
   under C programming
   language standard [ISO.9899.1990] (of the respective sub-domain N. type matching a 64-bit
   unsigned integer on that platform).

   For example, if a catalog zone is named "catalog1.example.org." and a
   member zone "example.com." contains a property "prop0" with string
   (see Section 2.5.1) an unsigned integer value "Example", the corresponding RR of 300 would
   appear as follows:

        prop0.<m-hash>.zones.catalog1.example.org. 3600

        example-prop.<m-unique>.zones.$CATZ 0 IN TXT "Example"

   As another example, if "300"

5.4.  Floating-Point Values

   A key with a catalog zone floating-point value is named "cat1.example.org."
   and specified using a member zone "example.com." contains TXT RR
   containing a single <character-string>.

   A floating-point value's TXT RDATA uses the representation of an
   unsuffixed "floating constant" as defined in the C programming
   language standard [ISO.9899.1990].

   For example, a property "prop2" with its
   value being an unordered list (see Section 2.5.6) unsigned integer value of two domain names
   "a.example.com." and "b.example.com.", the corresponding RRs would 0.15 may
   appear as follows:

           (<hash>.prop2.<m-hash>.zones.cat1.example.org.
            3600

        example-prop.<m-unique>.zones.$CATZ 0 IN TXT "15e-2"

5.5.  Domain Name

   A key whose value is a domain name is specified using a PTR a.example.com.)
           (<hash>.prop2.<m-hash>.zones.cat1.example.org.
            3600 RR
   [RFC1035], e.g.:

        example-prop.defaults.$CATZ 0 IN PTR b.example.com.)

2.10.  Example of ns1.example.com.

5.6.  IP Prefix

   A property whose value is an IP network prefix is specified using an
   APL RR [RFC3123].  The negation flag ("!" in presentation format) may
   be used to indicate all addresses not included within that prefix,
   e.g.  for use in Access Control Lists, e.g.:

   Although a catalog zone single APL record is capable of containing multiple
   prefixes, for consistency of representation lists of prefixes MUST
   use the multi-valued property syntax as documented in Section 4.2.2,
   e.g.:

        $ORIGIN catalog.example.org.
               @           IN SOA  . . 1 3600 3600 86400 3600
                           IN NS   invalid.
               version <m-unique>.zones.$CATZ
        <unique-id-1>.example-prop 0 IN TXT  "1"
               (5960775ba382e7a4e09263fc06e7c00569b6a05c.zones APL ( 1:192.0.2.0/24 )
        <unique-id-2>.example-prop 0 IN PTR domain1.example.com.)

3.  Nameserver behavior APL ( !1:0.0.0.0/0 )

   Implementations MUST accept only the first prefix within each APL
   record and requirements

3.1.  General requirements

   TBD: Explain nameserver behavior in a more detailed way here.  It MUST ignore any subsequent prefixes found therein.

5.7.  Single Host Address

   A single host address is
   under-specified. represented using either an A or AAAA record
   as appropriate, e.g.:

        example-prop1.<m-unique>.zones.$CATZ 0 IN A 192.0.2.1
        example-prop2.<m-unique>.zones.$CATZ 0 IN AAAA 2001:db8::1

6.  Nameserver Behavior

6.1.  General Requirements

   As it is a regular DNS zone, a catalog zone can be transferred using
   DNS zone transfers among nameservers.

   Although they are regular DNS zones, catalog zones contain only
   information for the management of a set of authoritative nameservers.
   For this reason, operators may want to limit the systems able to
   query these zones.  It may be inconvenient to serve some contents of
   catalog zones via DNS queries anyway due to the nature of their
   representation.  A separate method of querying entries inside the
   catalog zone may be made available by nameserver implementations (see
   Section 3.3). 6.3).

   Catalog updates should be automatic, i.e., when a nameserver that
   supports catalog zones completes a zone transfer for a catalog zone,
   it SHOULD apply changes to the catalog within the running nameserver
   automatically without any manual intervention.

   As with regular zones, primary and secondary nameservers for a
   catalog zone may be operated by different administrators.  The
   secondary nameservers may be configured to synchronize catalog zones
   from the primary, but the primary's administrators may not have any
   administrative access to the secondaries.

   A catalog zone can be updated via DNS UPDATE on a reference primary
   nameserver, or via zone transfers.  Nameservers MAY allow loading and
   transfer of broken zones with incorrect catalog zone syntax (as they
   are treated as regular zones), but nameservers MUST NOT process such
   broken zones as catalog zones.  For the purpose of catalog
   processing, the broken catalogs MUST be ignored.  If a broken catalog
   zone was transferred, the newly transferred catalog zone MUST be
   ignored (but the older copy of the catalog zone SHOULD be left
   running subject to values in SOA fields).

   If there is a clash between an existing member zone's name and an
   incoming member zone's name (via transfer or update), the new
   instance of the zone MUST be ignored and an error SHOULD be logged.

   When zones are introduced into a catalog zone, a primary SHOULD first
   make the new zones available for transfers before making the updated
   catalog zone available for transfer, or sending NOTIFY for the
   catalog zone to secondaries.  Note that secondary nameservers may
   attempt to transfer the catalog zone upon refresh timeout, so care
   must be taken to make the member zones available before any update to
   the list of member zones is visible in the catalog zone.

   When zones are deleted from a catalog zone, a primary MAY delete the
   member zone immediately after notifying secondaries.  It is up to the
   secondary nameserver to handle this condition correctly.

   TBD: Transitive primary-secondary relationships

3.2.

6.2.  Updating catalog zones Catalog Zones

   TBD: Explain updating catalog zones using DNS UPDATE.

3.3.

6.3.  Implementation notes Notes

   Catalog zones on secondary nameservers would have to be setup
   manually, perhaps as static configuration, similar to how ordinary
   DNS zones are configured.  Members of such catalog zones will be
   automatically synchronized by the secondary after the catalog zone is
   configured.

   An administrator would may want to look at data inside a catalog zone.
   Typical queries may might include dumping the list of member zones,
   dumping a member zone's effective configuration, querying a specific
   property value of a member zone, etc.  Because of the syntax structure of
   catalog zones, it may not be possible to perform these queries
   intuitively, or in some cases, at all, using DNS QUERY.  The list of member zones may  For example
   it is not fit in a single DNS message.  The set possible to enumerate the contents of present properties for a
   zone cannot be queried using multi-valued
   property (such as the list of member zones) with a single DNS QUERY.
   Implementations are therefore advised to provide a tool that uses
   either the output of AXFR or an out-of-band method to perform queries
   on catalog zones.

4.

7.  Security considerations Considerations

   As catalog zones are transmitted using DNS zone transfers, it is
   absolutely essential for these transfers to be protected from
   unexpected modifications on the route.  So, catalog zone transfers
   SHOULD be authenticated using TSIG [RFC2845].  A primary nameserver
   SHOULD NOT serve a catalog zone for transfer without using TSIG and a
   secondary nameserver SHOULD abandon an update to a catalog zone that
   was received without using TSIG.

   Use of DNS UPDATE [RFC2136] to modify the content of catalog zones similarly
   SHOULD similarly be authenticated using TSIG.

   Zone transfers of member zones SHOULD similarly be authenticated
   using TSIG [RFC2845].  The TSIG shared secrets used for member zones
   MUST NOT be mentioned anywhere in the catalog zone data.  However,
   key identifiers may be shared within catalog zones.

   Catalog zones do not need to be signed using DNSSEC; DNSSEC, their zone
   transfers being authenticated by TSIG.  Signed zones MUST be handled
   normally by nameservers, and their contents MUST NOT be DNSSEC-
   validated.

5.

8.  IANA considerations Considerations

   This document has no IANA actions.

6.

9.  Acknowledgements

   Catalog zones originated as the chosen method among various proposals
   that were evaluated at ISC for easy zone management.  The chosen
   method of storing the catalog as a regular DNS zone was proposed by
   Stephen Morris.

   We later discovered that Paul Vixie's earlier [Metazones] proposal
   implemented a similar approach and reviewed it.  Catalog zones
   borrows some syntax ideas from Metazones, as both share this scheme
   of representing the catalog as a regular DNS zone.

   Thanks to Brian Conry, Tony Finch, Evan Hunt, and Patrik Lundin, Victoria
   Risk for reviewing
   draft proposals and providing support, comments and suggestions.
   Thanks to Tony Finch and Patrik Lundin Carsten Strettman for reviewing the draft and
   providing comments.

   Thanks to BIND users who reviewed draft proposals and offered offering
   comments and suggestions.

7.

10.  References

7.1.

10.1.  Normative references

   [FIPS.180-4.2015]
              National Institute of Standards and Technology, "Secure
              Hash Standard", FIPS PUB 180-4, August 2015,
              <http://csrc.nist.gov/publications/fips/fips180-4/
              fips-180-4.pdf>.

   [ISO.9899.1990]
              International Organization for Standardization,
              "Programming languages - C", ISO Standard 9899, 1990.

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
              <http://www.rfc-editor.org/info/rfc1034>.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
              November 1987, <http://www.rfc-editor.org/info/rfc1035>. <https://www.rfc-editor.org/info/rfc1035>.

   [RFC1982]  Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982,
              DOI 10.17487/RFC1982, August 1996,
              <http://www.rfc-editor.org/info/rfc1982>. <https://www.rfc-
              editor.org/info/rfc1982>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, 10.17487/
              RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/
              rfc2119>.

   [RFC2136]  Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound,
              "Dynamic Updates in the Domain Name System (DNS UPDATE)",
              RFC 2136, DOI 10.17487/RFC2136, April 1997,
              <http://www.rfc-editor.org/info/rfc2136>.
              <https://www.rfc-editor.org/info/rfc2136>.

   [RFC2308]  Andrews, M., "Negative Caching of DNS Queries (DNS
              NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998,
              <https://www.rfc-editor.org/info/rfc2308>.

   [RFC2606]  Eastlake 3rd, D. and A. Panitz, "Reserved Top Level DNS
              Names", BCP 32, RFC 2606, DOI 10.17487/RFC2606, June 1999,
              <http://www.rfc-editor.org/info/rfc2606>.
              <https://www.rfc-editor.org/info/rfc2606>.

   [RFC2845]  Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B.
              Wellington, "Secret Key Transaction Authentication for DNS
              (TSIG)", RFC 2845, DOI 10.17487/RFC2845, May 2000,
              <http://www.rfc-editor.org/info/rfc2845>.

   [RFC3123]  Koch, P., "A DNS RR Type for Lists of Address Prefixes
              (APL RR)", RFC 3123, DOI 10.17487/RFC3123, June 2001,
              <http://www.rfc-editor.org/info/rfc3123>.

   [RFC7719]  Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS
              Terminology", RFC 7719, DOI 10.17487/RFC7719, December
              2015, <http://www.rfc-editor.org/info/rfc7719>.

7.2.  Informative references

   [I-D.hunt-note-rr]
              Hunt, E. and D. Mahoney, "A DNS Resource Record for
              Confidential Comments (NOTE RR)", draft-hunt-note-rr-01
              (work in progress), May 2014.

   [Metazones]
              Vixie, P., "Federated Domain Name Service Using DNS
              Metazones", 2005, <http://ss.vix.su/~vixie/mz.pdf>.

   [RPZ]      Vixie, P. and V. Schryver, "DNS Response Policy Zones (DNS
              RPZ)", 2010,
              <http://ftp.isc.org/isc/dnsrpz/isc-tn-2010-1.txt>.

Appendix A.  Glossary

   Catalog zone:  A DNS zone containing a DNS catalog, that is, a list
         of DNS zones and associated template zone configuration common
         to all member zones.

   Member zone:  A DNS zone whose configuration is published inside a
         catalog zone.

   Primary nameserver:  An authoritative server configured to be the
         source of zone transfer to one or more [secondary] nameservers.
         Also see [RFC7719].

   RDATA hash:  The hexadecimal format 40-digit SHA-1 [FIPS.180-4.2015]
         digest, of the RDATA of the corresponding RR.  For RDATA
         containing
              Wellington, "Secret Key Transaction Authentication for DNS names, no name compression must be in use, i.e.,
         the name must be in its full expanded wire data format when it
         is hashed.

   Member zone name hash:  The hexadecimal format 40-digit SHA-1
         [FIPS.180-4.2015] digest, of a zone name in uncompressed wire
         format.

   Secondary nameserver:  An authoritative server which uses zone
         transfer to retrieve the zone.  Also see [RFC7719].

   Zone property:  A configuration parameter
              (TSIG)", RFC 2845, DOI 10.17487/RFC2845, May 2000,
              <https://www.rfc-editor.org/info/rfc2845>.

   [RFC3123]  Koch, P., "A DNS RR Type for Lists of a zone, sometimes also
         called a zone option. Address Prefixes
              (APL RR)", RFC 3123, DOI 10.17487/RFC3123, June 2001,
              <https://www.rfc-editor.org/info/rfc3123>.

10.2.  Informative references

   [Metazones]
              Vixie, P., "Federated Domain Name Service Using DNS
              Metazones", 2005, <http://ss.vix.su/~vixie/mz.pdf>.

   [RPZ]      Vixie, P. and V. Schryver, "DNS Response Policy Zones (DNS
              RPZ)", 2010,
              <http://ftp.isc.org/isc/dnsrpz/isc-tn-2010-1.txt>.

Appendix B. A.  Open issues and discussion (to be removed before final
             publication)

   1.  Config options

       We want catalog zones to be adopted by multiple DNS
       implementations.  Towards this, we have to generalize zone config
       options and adopt a minimal set that we can expect most
       implementations to support.

   2.  Catalog zone and member zones on different primary nameservers

       Will it be possible to setup a catalog zone on one nameserver as
       primary, and allow its member zones to be served by different
       primary namesservers? nameservers?

   3.  Transitive relationships

       For a catalog zone, a secondary nameserver may be a primary
       nameserver to a different set of nameservers in a nameserver
       farm.  In these transitive relationships, zone configuration
       options (such as also-notify and allow-transfer) may differ based
       on the location of the primary in the hierarchy.  It may not be
       possible to specify this within a catalog zone.

   4.  Templates

       Are support for config and zone data templates useful at this
       level?  They would add complexity across implementations.  If
       added, it would be better to restrict templates at the primary
       nameserver and let the secondary receive regular expanded zones.

   5.  Overriding controls

       A way to override zone config options (as prescribed by the
       catalog zones) on secondary nameservers was requested.  As this
       would be configured outside catalog zones, it may be better to
       leave this to implementations.

   6.  Use of hashing

       Should use of hashing be completely removed, and replaced with
       the same common owner name for all property RRs in a collection?
       Both IXFR and DNS UPDATE allow changing individual RRs in a
       RRset.

   7.  Choice of hash function

       Should a different faster hash function be chosen to replace
       SHA-1 when computing catalog member zone name hashes?

   8.  Overriding existing RR types

       This memo currently overrides only the PTR RR TYPE's meaning as
       PTR is currently used for reverse lookups.  But such overridden
       use seems like a non-issue as PTR is defined to be a pointer to
       any name in [RFC1035].

   9.  APL limits

       APL can only support as many networks as can fit in its RDATA.
       Though a very large number of networks can be listed in a single
       RDATA field, it is still limited in size.  Will this limitation
       become a problem for any users?

Appendix C. B.  Change History (to be removed before final publication)

   o  draft-muks-dnsop-dns-catalog-zones-00
      Initial public draft.

   o  draft-muks-dnsop-dns-catalog-zones-01
      Added Witold, Ray as authors.  Fixed typos, consistency issues.
      Fixed references.  Updated Area.  Removed newly introduced custom
      RR TYPEs.  Changed schema version to 1.  Changed TSIG requirement
      from MUST to SHOULD.  Removed restrictive language about use of
      DNS QUERY.  When zones are introduced into a catalog zone, a
      primary SHOULD first make the new zones available for transfers
      first (instead of MUST).  Updated examples, esp. use IPv6 in
      examples per Fred Baker.  Add catalog zone example.

   o  draft-muks-dnsop-dns-catalog-zones-02
      Addressed some review comments by Patrik Lundin.

   o  draft-muks-dnsop-dns-catalog-zones-03
      Revision bump.

   o  draft-muks-dnsop-dns-catalog-zones-04
      Reordering of sections into more logical order.
      Separation of multi-valued properties into their own category.

Authors' Addresses

   Mukund Sivaraman
   Internet Systems Consortium
   950 Charter Street
   Redwood City, CA  94063
   US

   Email: muks@mukund.org
   URI:   http://www.isc.org/

   Stephen Morris
   Internet Systems Consortium
   950 Charter Street
   Redwood City, CA  94063
   US

   Email: stephen@isc.org
   URI:   http://www.isc.org/

   Ray Bellis
   Internet Systems Consortium
   950 Charter Street
   Redwood City, CA  94063
   US

   Email: ray@isc.org
   URI:   http://www.isc.org/
   Witold Krecicki
   Internet Systems Consortium
   950 Charter Street
   Redwood City, CA  94063
   US

   Email: wpk@isc.org
   URI:   http://www.isc.org/