<?xml version="1.0"?>
<?rfc compact="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc toc="yes" ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc ipr="trust200902" docName="draft-andrews-dnsop-update-parent-zones-03">
  <front>
    <title abbrev="Updating Parent Zones">Updating Parent Zones</title>
    <author initials="M." surname="Andrews" fullname="M. Andrews">
      <organization abbrev="ISC">Internet Systems Consortium</organization>
      <address>
        <postal>
          <street>950 Charter Street</street>
          <city>Redwood City</city>
          <region>CA</region>
          <code>94063</code>
          <country>US</country>
        </postal>
        <email>marka@isc.org</email>
      </address>
    </author>
    <date month="November" year="2013"/>
    <abstract>
      <t>
	DNS UPDATE was developed to allow DNS zones to be updated.
      </t>
      <t>
	There is a perception that UPDATE cannot be used in conjuction
	with the Registry, Registar, Registrant (RRR) model to update a zone.
      </t>
      <t>
	This document explains how UPDATE can be used in the RRR model.
      </t>
    </abstract>
  </front>
  <middle>
    <section toc="yes" anchor="intro" title="Introduction">
      <t>
	UPDATE <xref target="RFC2136"/> is designed to update any
	zone in the DNS.  This includes updating delegating NS
	records, glue address records and DS records.
      </t> <t>
	While UPDATE is primarily designed to UPDATE a zone directly
	there in no reason why UPDATE requests cannot be translated
	to the EPP requests to perform the changes.
      </t> <t>
	This would provide a uniform model to update parent zone
	regardless of where they are in the DNS hierarchy or whether
	the zone is signed or not.
      </t>
    </section>
    <section toc="yes" anchor="translation" title="Translation">
      <t>
	The Registrar would host a server that authenticates UPDATE
	requests received directly or relayed by the Registry using
	TSIG <xref target="RFC2845"/>, then translate the actions
	in the UPDATE request into EPP transaction requests.  The
	results of those EPP transactions would be relayed to the
	UPDATE client.
      </t> <t>
	Requests that are not TSIG signed or fail verification must
	be rejected.
      </t> <t>
	The translating server would handle a restricted subset of
	UPDATE requests, possibly ignoring the prerequiste section.
	UPDATE requests would be limited to those supported by EPP.
      </t> <t>
	e.g.  Add NS record.  Delete all NS records.  Add A record.
	Delete AAAA record.  Add DS record.  Delete DS record.
      </t> <t>
	The translating server may also override/ignore the TTL in
	the UPDATE request.
      </t>
    </section>
    <section toc="yes" anchor="authentication" title="Authentication">
      <t>
	Authentication would be done using TSIG.  TSIG was designed
	to be used in a environment where requests are relayed.
      </t> <t>
	Authentication can be done down to the &lt;NAME,TYPE&gt;
	tuple.  There exist nameservers that already implement
	access contols down to this level of granularity based on
	the presented TSIG.
      </t> <t>
	This would allow nameservers to update their own address
	records as they get renumbered without being able to update
	anything else.
      </t> <t>
	This would allow DNSSEC key management software to update
	DS records without being able to update anything else.
      </t> <t>
	As Registrars do all the authentication and generate the
	signed responses there is no need for the Registry to have
	access to the private key material used in TSIG.
      </t> <t>
	Registrars already handle shared keys in these numbers with
	their web interfaces so it is not unreasonable to expect
	them to be able to handle a similar number of shared TSIG
	keys.
      </t>
    </section>
    <section toc="yes" anchor="direct" title="Direct to Registrar">
      <t>
	The hardest part of Direct to Registrar is finding where
	to send the UPDATE request.  This would most probably just
	be advised to the Registrant.
      </t>
    </section>
    <section toc="yes" anchor="indirect" title="Indirect to Registrar">
      <t>
	In the indirect model the Registry would host a UPDATE relay
	server which would examine the first record of the UPDATE
	section and relay the request to the Registrar of record
	for the owner name of that record.  The Registrar would
	verify the validity if the request based on the TSIG then
	update the registry contents using EPP if appropriate.  The
	response from the Registrar would be relayed back to the
	client via the Registry.
      </t> <t>
	The Registry takes no action other than to relay the request
	and response unless it is directed to do so by the Registrar.
      </t> <t>
	The relay can use either TCP or UDP when forwarding UPDATE
	requests as TSIG supports changes to the DNS id field when
	a request/response is relayed.  Only the Registrar and the
	client (Registrant) need to know the TSIG secret.
      </t> <t>
	This is consistent with how tools like nsupdate work out
	where to send a UPDATE request if the zone is not explicity
	set.  They look at the ownername of the first record and
	use it to discover the containing zone.
      </t>
    </section>
    <section toc="yes" anchor="discovery" title="UPDATE Server Discovery">
      <t>
	UPDATE server discovery is a issue when the RRR model is
	in use as the UPDATE may need to be directed through EPP
	and/or sent to a Registrar.  There are a number of way this
	could be done:
      </t> <t>
	1) Adding a underscore infix labels to the zone which contain
	SRV records at pointing to Registar/Registry servers for
	each child.
      </t> <t>
	e.g. &lt;child&gt;._update._tcp.&lt;parent&gt; SRV 0 0 53
	server.example.tld
      </t> <t>
	The server pointed to could be be a relay server, as described
	above, or a UDPATE to EPP translating server.  A relay
	server would allow for slower zone growth.
      </t> <t>
	Using underscore infix labels requires no changes to
	nameservers operated by Registries but does require the
	zone content to be updated or a separate zone (e.g.
	_update._tcp.&lt;parent&gt;) to be delegated to contain
	this information.
      </t> <t>
	A level of indirection could be added by using CNAME records
	to point to a domain operated by the registrar which contains
	the SRV record.  This would allow the registrar to update
	the SRV records without having to update the zone being
	served by the registry.  The CNAME would be updated on
	registrar changes.  Note the target name the CNAME could
	also be managed by the registry as a way to consolidate the
	SRV record management.
      </t>
      <figure>
        <artwork>
        child._update._tcp.tld CNAME registrar._registrars.tld
        registrar._registrars.tld SRV 0 0 53 server.example.tld
        </artwork>
      </figure>
      <t>
	As with traditional use of SRV, non-support can be signaled
	with
      </t>
      <figure>
        <artwork>
        *._update._tcp SRV 0 0 0 .
        </artwork>
      </figure>
      <t>
	If the Resistry is operating a relay this can be supported
	with a single wildcard record.
      </t>
      <figure>
        <artwork>
        *._update._tcp SRV 0 0 0 server.registry.tld
        </artwork>
      </figure>
      <t>
	The client can fallback to direct update to parent servers
	if no SRV record is discovered.  This allows the scheme to
	work outside of the registry, registrar, registant model.
      </t> <t>
	2) Extend UDPATE to return the update server.  Currently
	the Zone section of the UPDATE refers to the zone to be
	update and is identified by the &lt;QNAME,SOA,QCLASS&gt;
	tuple.  Replacing SOA with one or more of DS, NS, A and
	AAAA would allow a nameserver to distingish between a
	traditional UPDATE request and a request to find the UPDATE
	servers.  The tuple would contain the resource to be updated
	and the reply would contain SRV records pointing to the
	UPDATE servers.  As there would possibly more than one
	parent the owner records would refer to the parent zone
	being updated.
      </t>
    </section>
    <section toc="yes" anchor="security" title="Security Considerations">
      <t>
	The UPDATE requests are all TSIG signed.  This is a proven method
	for securing UPDATE requests in the DNS.
      </t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <reference anchor="RFC2136">
	<front>
	  <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
          <author initials="P." surname="Vixie" fullname="P. Vixie"/>
          <author initials="S." surname="Thomson" fullname="S. Thomson"/>
          <author initials="Y." surname="Rekhter" fullname="Y. Rekhter"/>
          <author initials="J." surname="Bound" fullname="J. Bound"/>
          <date month="April" year="1997" />
        </front>
        <seriesInfo name="RFC" value="2136" />
      </reference>
      <reference anchor="RFC2845">
	<front>
	  <title>Secret Key Transaction Authentication for DNS (TSIG)</title>
          <author initials="P." surname="Vixie" fullname="P. Vixie"/>
          <author initials="O." surname="Gudmundsson" fullname="O. Gudmundsson"/>
          <author initials="D." surname="Eastlake" fullname="D. Eastlake 3rd"/>
          <author initials="B." surname="Wellington" fullname="B. Wellington"/>
          <date month="May" year="2000" />
        </front>
        <seriesInfo name="RFC" value="2845" />
      </reference>
    </references>
  </back>
</rfc>
