<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.1.7) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-leon-dnsop-signaling-zone-owner-intent-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Signaling Zone Owner Intent">Signaling Zone Owner Intent</title>

    <author initials="L." surname="Fernandez" fullname="Leon Fernandez">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>leon.fernandez@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="E." surname="Bergström" fullname="Erik Bergström">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>erik.bergstrom@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="J." surname="Stenstam" fullname="Johan Stenstam">
      <organization>The Swedish Internet Foundation</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>johan.stenstam@internetstiftelsen.se</email>
      </address>
    </author>
    <author initials="S." surname="Crocker" fullname="Steve Crocker">
      <organization>Edgemoor Research Institute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>steve@shinkuro.com</email>
      </address>
    </author>

    <date />

    <area>Internet</area>
    <workgroup>DNSOP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 46?>

<t>This document introduces a standardized mechanism for zone owners to
signal their intent regarding DNS provider responsibilities through
DNS itself. It defines two new DNS RRtypes -- HSYNC (Horizontal
Synchronization, per-provider enrollment) and HSYNCPARAM
(zone-wide multi-provider policy) -- that together enable zone
owners to designate which Providers are authorized to serve and/or
sign their zones, control whether Providers or the zone owner
manages the NS RRset, and specify zone transfer chain
configurations.</t>

<t>The HSYNC and HSYNCPARAM records allow DNS Providers to discover
each other and establish secure communication, either using the JOSE
framework over DNS or via a RESTful API secured by TLS. This
provider-to-provider communication enables automated coordination for
tasks such as NS RRset management and DNSSEC-related operations. The
document describes how the Providers discover one another, establish
secure communication, and maintain it with periodic keep-alives; this
specification covers those discovery and communication-establishment
aspects, while the on-the-wire framing of the messages the Providers
exchange is defined in a companion document.</t>

<t>While a distributed DNSSEC multi-signer architecture (similar to 
"model 2" in <xref target="RFC8901"/>) is an important application of this framework, 
the HSYNC-based signaling supports broader provider synchronization
needs.</t>

<t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/johanix/draft-leon-dnsop-signaling-zone-owner-intent">https://github.com/johanix/draft-leon-dnsop-signaling-zone-owner-intent</eref>.
The most recent working version of the document, open issues, etc, should all be
available there.  The authors (gratefully) accept pull requests.</t>



    </abstract>



  </front>

  <middle>


<?line 79?>

<section anchor="introduction"><name>Introduction</name>

<t>DNS zone owners often need to work with multiple DNS Providers to
serve their zones. These Providers may have different
responsibilities - some may sign the zone, some may only serve it, and
some may do both. Traditionally, the configuration of these Providers
and their responsibilities has been handled through manual processes
and provider-specific mechanisms.</t>

<t>This document presents a standardized mechanism for zone owners to
signal their intent regarding DNS provider responsibilities through
DNS itself. It defines two new DNS RRtypes, HSYNC and HSYNCPARAM,
that together allow zone owners to:</t>

<t><list style="symbols">
  <t>Designate which Providers should serve the zone (via the
HSYNCPARAM <spanx style="verb">servers</spanx> key).</t>
  <t>Designate which Providers should sign the zone (via the
HSYNCPARAM <spanx style="verb">signers</spanx> key).</t>
  <t>Control whether Providers or the zone owner manages the NS RRset
(via the HSYNCPARAM <spanx style="verb">nsmgmt</spanx> key).</t>
  <t>Specify on a provider-level how the zone transfer chain should
be set up (via the HSYNC Upstream field).</t>
  <t>Enable Providers to locate each other and establish secure
communication.</t>
</list></t>

<t>By publishing this information in the DNS, zone owners ensure that
all Providers eventually converge on the same configuration,
modulo zone-transfer propagation delays and the integrity of the
zone-transfer path itself (see <xref target="security-considerations"/>). This
enables automated coordination between Providers for tasks like:</t>

<t><list style="symbols">
  <t>NS RRset management across multiple Providers.</t>
  <t>Addition or removal of Providers.</t>
  <t>Transition between different signing configurations.</t>
  <t>Management of DNSSEC-related records when multiple signers are used.</t>
  <t>Zone transfer chain configuration.</t>
</list></t>

<t>The intent of this document is to define a framework for secure
provider-to-provider communication, based directly on intent expressed
by the zone owner.</t>

<t>Although the document's primary purpose is to let a zone owner
signal intent, that intent is what drives the provider-to-provider
coordination. This document therefore also specifies the Agent
communication framework that the intent sets in motion: how Agents
discover one another, establish secure channels, and exchange
synchronization state through the HELLO and BEAT exchanges and other
messages between the Agents. The specific synchronization algorithms
carried over this framework are left to follow-up documents (see
below).</t>

<t>The mechanism by which agents exchange structured data (zone
contributions, key state signals, confirmations, etc.) is defined in
<xref target="I-D.berra-dnsop-chunk-framing"/>, which specifies the CHUNK
framing mechanism with optional authentication and encryption based
on the JOSE framework (JWS, JWE, and JWK).</t>

<t>This framework is not yet complete: the detailed specification of the
individual synchronization processes expressed over it is deferred to
follow-up documents. The framework has been validated by a running
prototype, and the work to specify those processes is well underway.</t>

<t>Knowledge of DNS NOTIFY <xref target="RFC1996"/> and DNS Dynamic Updates
<xref target="RFC2136"/> and <xref target="RFC3007"/> is assumed.</t>

<section anchor="requirements-notation"><name>Requirements Notation</name>

<t>The key words "<strong>MUST</strong>", "<strong>MUST NOT</strong>", "<strong>REQUIRED</strong>", "<strong>SHALL</strong>",
"<strong>SHALL NOT</strong>", "<strong>SHOULD</strong>", "<strong>SHOULD NOT</strong>", "<strong>RECOMMENDED</strong>",
"<strong>NOT RECOMMENDED</strong>", "<strong>MAY</strong>", and "<strong>OPTIONAL</strong>" in this document
are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<t>This document defines five roles. Each is described in detail
later in the document; the short definitions below are provided
here as a reading aid.</t>

<dl>
  <dt>Provider (DNS Provider):</dt>
  <dd>
    <t>An entity that provides DNS services to a zone owner, such as
DNSSEC signing and/or authoritative nameservice. A zone may
have multiple Providers. See <xref target="the-dns-provider"/>.</t>
  </dd>
  <dt>Agent:</dt>
  <dd>
    <t>A service located with each DNS Provider that manages
provider-to-provider communication on behalf of that Provider.
The Agent may be a separate component or may be integrated into
another component of the Provider's infrastructure. See
<xref target="the-agent-integrated-signer-vs-separate-agent"/>.</t>
  </dd>
  <dt>Combiner:</dt>
  <dd>
    <t>A component (deployed per Provider) that persists the contributions
coordinated among the Agents and merges the role-permitted apex
RRsets (DNSKEY, CDS, CSYNC, and possibly NS) with the unsigned zone
data received from the zone owner, feeding the merged zone to the
local Signer. See <xref target="the-combiner"/>.</t>
  </dd>
  <dt>Signer:</dt>
  <dd>
    <t>The component (deployed per Provider) that performs DNSSEC
signing. It receives the merged zone from the local Combiner and
produces the served zone. For an unsigned zone the Signer makes no
changes but remains in the path as the upstream for the Provider's
public secondaries. The
Signer is deliberately kept unaware of the multi-provider
coordination; that complexity is handled by the Combiner and
the Agent. See <xref target="authoritative-source-per-data-class"/>.</t>
  </dd>
  <dt>Auditor:</dt>
  <dd>
    <t>An entity authorized by the zone owner to observe the
multi-provider synchronization for a zone without contributing
to it. The Auditor's role is to detect inconsistencies and
flag them to the zone owner. See <xref target="the-auditor"/>.</t>
  </dd>
</dl>

</section>
<section anchor="requirements"><name>Requirements</name>

<t>The requirements for an architecture facilitating DNS provider
synchronization are defined as follows:</t>

<t><list style="symbols">
  <t>Zone owners MUST be able to signal to their DNS Providers
information sufficient for the Providers to identify each other and
establish secure communication.</t>
  <t>All signaling from zone owner to DNS Providers SHOULD be carried out
via data in the served zone, ensuring that all Providers receive the
same configuration information at approximately the same time.</t>
  <t>Zone owners MUST be able to explicitly specify which DNS Providers
should serve and/or sign their zones.</t>
  <t>Zone owners MUST be able to signal the intent to onboard an
additional DNS Provider. This MUST automatically initiate the
appropriate provider synchronization processes.</t>
  <t>Zone owners MUST be able to signal the intent to offboard an
existing DNS Provider. This MUST automatically initiate the
appropriate provider synchronization processes.</t>
  <t>By engaging DNS Providers for signing, the zone owner MUST give up
control over the following records:
  <list style="symbols">
      <t>All DNSSEC-related records in the zone.</t>
      <t>Any CDS and/or CSYNC RRsets.</t>
    </list></t>
  <t>It SHOULD be possible but NOT MANDATORY for the zone owner to also
delegate the management of the NS RRset to the set of DNS Providers.</t>
  <t>DNS Providers MUST be able to locate and establish secure
communication with each other based on the information
provided by the zone owner in the DNS via the HSYNC RRset
and the HSYNCPARAM record.</t>
  <t>The architecture SHOULD support both DNS-based and API-based
communication between Providers.</t>
  <t>The architecture SHOULD allow for smooth transitions between
different Provider configurations without service interruption.</t>
</list></t>

</section>
<section anchor="dns-provider-synchronization-scenarios"><name>DNS Provider Synchronization Scenarios</name>

<t>The HSYNC-based signaling supports a variety of scenarios where zone
owners need to coordinate multiple DNS Providers. The following
scenarios illustrate the range of use cases this mechanism enables:</t>

<section anchor="coordinated-ns-record-management"><name>Coordinated NS Record Management</name>

<t>A zone owner uses two DNS Providers -- one signs and serves the
zone while another only serves it. The zone owner publishes one
HSYNC record per Provider and an HSYNCPARAM record whose
<xref target="servers"/> key lists both Providers and whose <xref target="signers"/> key
lists only the signing one. The Providers' Agents establish
secure communication channels, allowing them to coordinate NS
RRset management across all authoritative nameservers without
manual intervention. The zone owner can decide whether to retain
control of NS records or delegate this responsibility to the
Providers via the <xref target="nsmgmt"/> key.</t>

</section>
<section anchor="multi-provider-dnssec-redundancy"><name>Multi-Provider DNSSEC Redundancy</name>

<t>A zone owner needs to eliminate the "signing" single point of failure
in their DNSSEC setup. By contracting with multiple "multi-signer
capable" DNS Providers and listing them in the HSYNCPARAM
<xref target="signers"/> key, the zone owner enables each Provider to:</t>

<t><list style="symbols">
  <t>Locate other designated Providers via the HSYNC RRset and
establish secure communications.</t>
  <t>Coordinate DNSKEY, CDS, CSYNC and NS RRset management.</t>
  <t>Sign the zone using its own DNSKEYs while publishing a DNSKEY RRset
that includes keys from all authorized signers.</t>
  <t>Distribute the signed zone to its authoritative nameservers and
possibly to non-signing downstream Providers.</t>
</list></t>

<t>This creates a fully redundant DNSSEC infrastructure with no single
point of failure.</t>

</section>
<section anchor="provider-transition-management"><name>Provider Transition Management</name>

<t>A zone owner wishes to replace their current DNSSEC-signing Provider
with a new one. Using HSYNC + HSYNCPARAM, they are able to:</t>

<t><list style="symbols">
  <t>Add a new HSYNC record for the incoming Provider and add its Label
to the HSYNCPARAM <xref target="signers"/> key, initiating the onboarding
process.</t>
  <t>Allow the automated synchronization between Providers to handle key
exchange and transition.</t>
  <t>Once the new Provider is fully operational, remove the outgoing
Provider's Label from <xref target="signers"/> when convenient, leaving its HSYNC
record in place for the wind-down.</t>
  <t>The Providers then automatically coordinate the safe removal of the
outgoing Provider's data.</t>
</list></t>

<t>This entire process maintains continuous service and valid signatures
while transitioning between DNS Providers.</t>

</section>
<section anchor="delegated-ns-management"><name>Delegated NS Management</name>

<t>A zone owner wants DNS Providers to handle NS RRset management while
retaining control of other zone data. By setting the <xref target="nsmgmt"/> key
in HSYNCPARAM to <spanx style="verb">"agent"</spanx>, the zone owner explicitly delegates NS
management responsibility to the DNS Providers. The DNS Providers
then coordinate to maintain a consistent NS RRset across all
authoritative servers, adding or removing nameservers as needed
based on the current set of authorized Providers.</t>

</section>
<section anchor="phased-migration-to-multi-provider-architecture"><name>Phased Migration to Multi-Provider Architecture</name>

<t>A zone owner currently using a single Provider wants to implement a
more robust architecture but prefers a gradual transition. They can:</t>

<t><list style="symbols">
  <t>First add a single HSYNC record designating their current
Provider, plus an HSYNCPARAM record listing that Provider in
<xref target="servers"/> (and, if signing, in <xref target="signers"/>), making no
immediate operational changes.</t>
  <t>Later add a second HSYNC record for the additional Provider and
extend the HSYNCPARAM lists accordingly.</t>
  <t>Allow the Providers to automatically coordinate the transition.</t>
  <t>Optionally delegate NS management to the Providers by changing
the <xref target="nsmgmt"/> key from <spanx style="verb">"owner"</spanx> to <spanx style="verb">"agent"</spanx>.</t>
</list></t>

<t>This approach enables a controlled, phased migration to a more
resilient multi-provider architecture.</t>

</section>
</section>
<section anchor="the-agent-integrated-signer-vs-separate-agent"><name>The Agent: Integrated Signer vs Separate Agent</name>

<t>In a distributed setup there must be a service located with each
DNS Provider that manages communication with other DNS
Providers. This is referred to as the Agent.</t>

<t>It is possible to implement support for the synchronization and
communication needs directly into an existing component of the
Provider's provisioning infrastructure (which may be as simple as an
authoritative nameserver with or without the ability to do online
DNSSEC signing). In that case this component implements the Agent
functionality.</t>

<t>However, it is also possible to separate the synchronization and
communication needs into a separate agent. This Agent sits next to the
existing infrastructure, and is under the same administrative control
(the "DNS Provider"), but is a separate piece of software. Each Agent
is configured as a "secondary nameserver" and receives the (usually
signed) zone. In this document the functional separation using a
distinct Agent is used for clarity, not as a statement on preferred
implementation choice.</t>

<t>The "separate Agent" design has the major advantage of leaving the
DNSSEC-signer (if any) outside of the synchronization and
communication complexity. The requirements are only that the Agent is
treated as a normal secondary (it receives NOTIFY messages and is able
to request zone transfers).</t>

<t>The remainder of this document writes as if the Agent is a separate
component. References to "the Agent" in subsequent sections apply
equally to an integrated Agent function inside a nameserver,
signer, or other component of the Provider's provisioning
infrastructure.</t>

</section>
<section anchor="authoritative-source-per-data-class"><name>Authoritative Source per Data Class</name>

<t>In the architecture defined by this document, no single component
is the authoritative source for all of a zone's data. Different
classes of data (owner-supplied content, DNSSEC artifacts, the NS
RRset, and the multi-provider coordination RRsets) each have their
own authoritative source. This section identifies which component
authoritatively produces which data class.</t>

<t>A common design for DNSSEC signing (regardless of multi-signer) is to
use a separate, bump-on-the-wire Signer. This is a Signer that
receives the unsigned zone via an incoming zone transfer, signs the
zone, and publishes the signed zone via an outbound zone transfer. In
such a design the responsibility is split between the "zone owner"
(authoritative for all non-DNSSEC zone data) and the Signer
(authoritative for all DNSSEC data in the zone plus the DNSKEY RRset).</t>

<t>In the proposed architecture the responsibility is further split
into three participants:</t>

<t><list style="symbols">
  <t>The zone owner is authoritative for all unsigned zone data,
except DNSSEC data and possibly the NS RRset.</t>
  <t>The Signer is authoritative for all data generated via DNSSEC
signing: own DNSKEYs, NSEC/NSEC3 RRs, RRSIGs, etc.</t>
  <t>The Agent is authoritative for the RRsets that must be kept in
sync across all the Signers for the zone. This includes the DNSKEYs
from other Providers, CDS and CSYNC RRsets. Possibly also the NS RRset.</t>
</list></t>

<t>The NS RRset is an interesting special case. Traditionally the NS
RRset is maintained by the zone owner, but based on data from the DNS
Providers (as authoritative nameservers is a primary service for the
DNS Provider). However, in the proposed architecture the NS RRset
should preferably be maintained by the Agents. For this reason the
proposed design makes control of the NS RRset explicit and the
responsibility of the zone owner to choose whether to retain control
or delegate to the Agents. Hence:</t>

<t><list style="symbols">
  <t>The Agent is authoritative for the NS RRset, subject to the
policy of the zone owner expressed in the <xref target="nsmgmt"/> key of the
HSYNCPARAM record.</t>
</list></t>

<t>Making the control of the NS RRset explicit is useful regardless of
whether a zone uses multiple signers or single signer, as this makes
the zone owner intent explicit.</t>

<t>To be able to keep the Signer as simple as possible, the changes to the
NS, DNSKEY, CDS and CSYNC RRsets must be introduced into the unsigned
zone before the zone reaches the Signer. Likewise, to keep the zone
owner as simple as possible (i.e. not involved in the details of the
multi-signer automation) these changes must be introduced into the
unsigned zone after the zone leaves the zone owner.</t>

<section anchor="the-combiner"><name>The Combiner</name>

<t>The consequence of these requirements is that the DNSKEY, CDS and
CSYNC RRsets (and possibly the NS RRset) are maintained via a separate
piece of software inserted between the zone owner and the Signer. This
is referred to as the Combiner.</t>

<t>The Combiner has the following features:</t>

<t><list style="symbols">
  <t>It supports inbound zone transfer of the unsigned zone from the
zone owner.</t>
  <t>It receives updates for the NS, DNSKEY, CDS and CSYNC
RRsets from the Agent. Typically the mechanism used is DNS UPDATE
with a TSIG signature, as this is easy to configure in a local
context. However, other mechanisms, including APIs, are possible.</t>
  <t>It stores all data received from the Agent separate from
the zone data received from the zone owner.</t>
  <t>Whenever it receives a new unsigned zone from the zone owner it
COMBINES zone data from the zone owner (the majority of the zone)
with specific zone data under control of the Agent: three specific
RRsets, all in the apex of the zone: the DNSKEY, CDS and CSYNC
RRsets. According to zone owner policy expressed in the
HSYNCPARAM <xref target="nsmgmt"/> key it will also update the NS RRset.</t>
  <t>It is policy free (apart from being limited to the four specified
RRsets). I.e. the Combiner is not making any judgement about what
data to include in the zone from the four defined RRsets. That
judgement is the role of the Agent.</t>
  <t>It does not sign the zone.</t>
  <t>It provides outbound zone transfer of the combined zone to the
Signer.</t>
</list></t>

<t>Example setup with two signers showing the logical flow of zone data
between the zone owner, the Combiner, the Signer and the Agent:</t>

<figure><artwork><![CDATA[
                            +--------------+
                            |     owner    |
               xfr          +-+---------+--+    xfr
            /----------------/           \----------------------\
           /                                                     \
    +-----+----+    DNS  +-------+ DNS/API +-------+  DNS    +----+-----+
    | combiner +<--------+ agent +---------+ agent +-------->+ combiner |
    +-----+----+  UPDATE +--+----+         +--+----+ UPDATE  +----+-----+
          |                 ^                 ^                 |
          v xfr             |                 |                 v xfr
    +-----+----+     xfr    |                 |   xfr      +----+-----+
    |  signer  +------------+                 +------------+  signer  |
    +-----+----+                                           +----+-----+
          |                                                     |
          v                                                     v
       +--+--+                                               +--+--+
       | NS  |--+                                            | NS  |+
       +-----+  |--+                                         +-----+|-+
          +-----+  |                                            +---+ |
             +-----+                                              +---+
]]></artwork></figure>

<t>In the reference architecture every Provider deploys all three
components -- Combiner, Signer, and Agent -- and every zone the
Provider serves flows through the same path: from the upstream zone
owner to the Combiner, then to the Signer, then to the Agent and on
to the Provider's public secondary nameservers. A Provider typically
serves a large number of zones, some signed and some not, and a zone
may change between unsigned and signed over its lifetime (for
example when the zone owner requests signing via HSYNCPARAM). Rather
than maintain a different zone-transfer path per zone, all zones use
this one path. For an unsigned zone the Signer makes no
modifications -- it is effectively a pass-through -- but it remains in
the path, continuing to serve as the dependable upstream for the
Provider's public secondaries. Signing status therefore changes what
the components <em>do</em> for a given zone, not which components are
present or how zone data flows between them.</t>

</section>
<section anchor="the-dns-provider"><name>The DNS Provider</name>

<t>A "DNS Provider" is a term that is most commonly used to refer to an
entity that provides authoritative DNS service to one or more zone
owners. In the context of this document it is used to refer to an
entity that provides some subset of the following services:</t>

<t><list style="symbols">
  <t>Signing a zone received from the zone owner.</t>
  <t>Serving the zone via a set of authoritative nameservers.</t>
  <t>Distributing the signed zone to other downstream DNS Providers.</t>
</list></t>

<t>In addition to the above services, a DNS Provider in the reference
architecture provides all three of the internal components:</t>

<t><list style="symbols">
  <t>A Combiner that persists Agent contributions and merges the
role-permitted changes into the zone;</t>
  <t>a Signer that performs DNSSEC signing (a no-op for unsigned zones,
see <xref target="the-combiner"/>); and</t>
  <t>an Agent for synchronization with the other Providers' Agents.</t>
</list></t>

<t>Whether a Provider actually signs a given zone, and which of the
coordinated RRsets it applies, depends on its role for that zone
(expressed via HSYNCPARAM) -- not on which components it deploys.
Every Provider provides all three internal components.</t>

</section>
<section anchor="the-auditor"><name>The Auditor</name>

<t>In addition to the DNS Provider role, this document defines an
Auditor role. An Auditor is an entity authorized by the zone owner
to observe the multi-provider synchronization for a zone without
contributing to it. An Auditor does not serve the zone and does
not sign the zone; its purpose is to detect inconsistencies (for
example, divergence between Providers' DNSKEY contributions, or
NS RRset drift) and to flag them to the zone owner.</t>

<t>Auditors participate in the Agent-to-Agent
communication for the zone. An Auditor is identified via its HSYNC record
just like the Agents, and is designated by the zone owner via the
<xref target="auditors"/> key of the HSYNCPARAM record. Unlike a serving or
signing Provider, the Auditor does not contribute zone data; it
joins the same communication purely to observe the synchronization
state exchanged among the Agents.</t>

<t>The Auditor's interpretation of inconsistencies, and the channel
through which it reports findings to the zone owner, are out of
scope for this document. Implementations are free to express these
as alerts, dashboards, periodic reports, or via any other
mechanism that suits the deployment.</t>

<t>An Auditor SHOULD only receive zone data and observe
synchronization state; it MUST NOT contribute zone data (DNSKEY,
CDS, CSYNC, NS records, etc.) via the Agent-to-Agent SYNC
operation. Any contribution originating from an Auditor MUST be
rejected by the Agents.</t>

</section>
</section>
<section anchor="identifying-the-designated-dns-providers"><name>Identifying the Designated DNS Providers</name>

<t>It is the responsibility of the zone owner to choose a set of "DNS
Providers", either internal or external to the zone owner's
organization. These DNS Providers MUST be clearly and uniquely
designated via the HSYNC RRset (one record per Provider) and the
HSYNCPARAM record (zone-wide policy referencing the Providers by
Label), both located at the apex of the zone.</t>

<t>The HSYNC RRset and HSYNCPARAM record MUST be added, by the zone
owner, to the typically unsigned zone that the zone owner
maintains so that they are visible to the downstream DNS Providers
and their Agents.</t>

<t>TO BE REMOVED BEFORE PUBLICATION:</t>

</section>
<section anchor="rationale-two-records-not-one"><name>Rationale: Two Records, Not One</name>

<t>The signaling described in this document is split across two RR
types: HSYNC carries the per-provider enrollment (one record per
Provider), and HSYNCPARAM carries zone-wide policy (one record per
zone, structured as a list of key-value pairs).</t>

<t>A problem with carrying everything in a single per-provider record
is that it lets the zone owner express inconsistent configurations.
With one record per Provider, the zone owner could publish two records
that disagree on the same zone-wide policy field (one saying "the
agents handle parent synchronization", the other saying "the owner
does"). Both cannot be right, but a single per-provider record format
allows the zone owner to publish both.</t>

<t>The two-record model prevents this by construction: zone-wide policy
lives in HSYNCPARAM (a single record per zone), and each Provider
appears in HSYNCPARAM key values only for the keys where that
Provider participates. Structuring HSYNCPARAM as a registry of keys
(analogous to the SvcParamKey registry for SVCB) also lets new
signaling concerns be added by registering a new key rather than by
changing a record's RDATA.</t>

</section>
<section anchor="the-hsync-rrset"><name>The HSYNC RRset</name>

<t>The HSYNC RRset is published at the apex of the zone and consists
of one HSYNC record per designated DNS Provider. Each record
identifies one Provider and locates that Provider's Agent. HSYNC
carries no role information; roles (signer, server, auditor,
etc.) are expressed in the HSYNCPARAM record described in the next
section.</t>

<t>An HSYNC record has three fields:</t>

<t>zone.example.    IN HSYNC  Label  Identity  Upstream</t>

<t>Label:
    An unqualified token (NOT a fully qualified domain name) that
    serves as a short handle for this Provider within HSYNCPARAM
    key values. Two HSYNC records in the same zone MUST NOT use
    the same Label.</t>

<t>Identity:
    Domain name. Used to uniquely identify the Agent for the DNS
    Provider that this record represents. This is the name under
    which the Agent's URI, SVCB, JWK/KEY discovery records are
    published.</t>

<t>Upstream:
    Either an unqualified Label referring to another HSYNC record
    in the same zone, or "." if this Provider has no upstream
    Provider (or the upstream is to be configured manually).</t>

<t>Example:</t>

<t>zone.example.   IN HSYNC  fox  agent.fox.example.    .
zone.example.   IN HSYNC  hare agent.hare.example.   fox</t>

<t>In this example the zone has two designated Providers, "fox" and
"hare". "fox" has no upstream; "hare" has "fox" as its upstream.
The unqualified token (Label) used in the Upstream field MUST
match the Label of an HSYNC record in the same zone.</t>

<section anchor="offboarding-and-staging-a-provider"><name>Offboarding and Staging a Provider</name>

<t>Whether a DNS Provider is currently active for a zone is determined
not by the HSYNC record itself but by whether the Provider's Label
appears in any of the HSYNCPARAM role keys (<xref target="servers"/>, <xref target="signers"/>,
<xref target="auditors"/>). The HSYNC record only enrolls the Provider and locates
its Agent; the role keys say what, if anything, the Provider currently
does. This gives the zone owner two operations that do not require
adding or removing fields in the HSYNC record:</t>

<t><list style="symbols">
  <t>Offboarding a Provider is signalled by removing its Label from all
HSYNCPARAM role keys while leaving its HSYNC record in place. The
HSYNC record is retained so that the Provider remains identifiable
(by Label and Identity) to the remaining Agents during the
wind-down: the offboarding process typically involves the remaining
DNS Providers removing the departing Provider's contributed data in
the correct order (either during the multi-signer "remove signer"
process of <xref target="RFC8901"/> or a simpler "remove auth nameserver"
process). A Provider whose Label is absent from every role key, but
whose HSYNC record is still present, is understood to be in the
process of being offboarded. Once the offboarding process is
complete, the HSYNC record for the offboarded DNS Provider may be
removed from the zone at the zone owner's discretion.</t>
  <t>Staging a new Provider is signalled by publishing its HSYNC record
before adding its Label to any role key. No data from the Provider
is used by the other Providers as long as its Label is absent from
the role keys, but it is possible to verify that communication and
the discovery records all work as intended before the Provider is
made active by adding its Label to the appropriate role key.</t>
</list></t>

</section>
</section>
<section anchor="the-hsyncparam-record"><name>The HSYNCPARAM Record</name>

<t>The HSYNCPARAM record is published at the apex of the zone. There
is exactly one HSYNCPARAM record per zone. It carries zone-wide
policy as a list of key-value pairs, structurally similar to the
SVCB record's SvcParamKey list.</t>

<t>The RDATA is a sequence of key-value pairs. Each key has a 16-bit
key number registered in the "HSYNCPARAM Keys" registry (see
<xref target="hsyncparam-keys-registry"/>). Three key types are defined:</t>

<t><list style="symbols">
  <t>Flag keys carry no value. The presence of the key signals "true".</t>
  <t>Value keys carry a single value (typically a token).</t>
  <t>List keys carry a comma-separated list of values (typically
Labels referring to HSYNC records in the same zone).</t>
</list></t>

<t>Presentation format places the keys in any order, separated by
whitespace. Flag keys are written as the key name alone. Value
keys are written as <spanx style="verb">key="value"</spanx>. List keys are written as
<spanx style="verb">key="v1,v2,v3"</spanx>.</t>

<t>Example:</t>

<t>zone.example.   IN HSYNCPARAM  servers="fox,hare" signers="fox" nsmgmt="agent"</t>

<t>The specific keys defined by this document are listed in
<xref target="hsyncparam-keys-registry"/>.</t>

<section anchor="unknown-keys-and-private-use"><name>Unknown Keys and Private Use</name>

<t>A receiver that encounters an HSYNCPARAM key number it does not
recognize MUST preserve the key on read-back but MUST NOT take any
action based on it. In presentation format, unknown numeric keys
MUST be written as <spanx style="verb">keyN</spanx> (where N is the decimal key number) so
that they can be parsed unambiguously by tools that have been
updated with the key definition.</t>

<t>The key number range 0-32767 is allocated for IANA-registered keys,
assigned through Specification Required review (see
<xref target="hsyncparam-keys-registry"/>). The range 32768-65534 is reserved for
Private Use; receivers within a single administrative domain may
assign meaning to keys in that range without registration. Key number
65535 is reserved and MUST NOT be assigned.</t>

</section>
</section>
<section anchor="hsyncparam-keys"><name>HSYNCPARAM Keys</name>

<t>This section defines the eight HSYNCPARAM keys assigned by this
document. The order reflects the typical sequence of decisions a
zone owner makes when configuring a multi-provider deployment:
first the role assignments (who serves the zone, who signs it, who
audits it), then auxiliary policy (NS management, parent
synchronization, in-bailiwick naming, and publication intent for
provider-managed records).</t>

<section anchor="servers"><name>servers</name>

<t>Key number: 0</t>

<t>Type: list of Labels.</t>

<t>The <spanx style="verb">servers</spanx> key signals which Providers are designated to serve
the zone authoritatively. Each value in the list is a Label
matching the Label field of an HSYNC record in the same zone.
Providers whose Label appears in <spanx style="verb">servers</spanx> SHOULD configure
themselves as authoritative for the zone.</t>

<t>The Labels used in HSYNCPARAM list keys are unqualified tokens, not
fully qualified domain names. They are short handles defined by
the HSYNC records in the same zone; the FQDN of each Provider's
Agent is given by the HSYNC Identity field. See <xref target="the-hsync-rrset"/>
for the HSYNC record format.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM servers="fox,hare"</t>

</section>
<section anchor="signers"><name>signers</name>

<t>Key number: 1</t>

<t>Type: list of Labels.</t>

<t>The <spanx style="verb">signers</spanx> key signals which Providers are designated to sign
the zone. Each value is an HSYNC Label. A Provider whose Label is
in <spanx style="verb">signers</spanx> is typically also in <xref target="servers"/>, but this is not
required.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM servers="fox,hare" signers="fox,hare"</t>

</section>
<section anchor="auditors"><name>auditors</name>

<t>Key number: 2</t>

<t>Type: list of Labels.</t>

<t>The <spanx style="verb">auditors</spanx> key signals which entities act as Auditors for the
zone. See <xref target="the-auditor"/> for the Auditor role definition.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM servers="fox,hare" signers="fox,hare" auditors="auditor1"</t>

</section>
<section anchor="nsmgmt"><name>nsmgmt</name>

<t>Key number: 3</t>

<t>Type: value, one of "owner" or "agent".</t>

<t>The <spanx style="verb">nsmgmt</spanx> key signals who is responsible for the contents of the
NS RRset for the zone. Two values are defined:</t>

<t><list style="symbols">
  <t>"owner" -- the zone owner is responsible for the NS RRset.
Agents MUST NOT instruct their local Combiner to update the NS
RRset.</t>
  <t>"agent" -- the Providers' Agents collectively are responsible for
the NS RRset. Agents whose Provider is listed in <xref target="signers"/>
MUST instruct their local Combiner to update the NS RRset based
on the union of NS records contributed by Providers via
Agent-to-Agent communication.</t>
</list></t>

<t>If <spanx style="verb">nsmgmt</spanx> is absent, the default is "owner".</t>

<t>In-bailiwick address records (A/AAAA records for nameservers whose
name lies within the zone) are deliberately not covered by
<spanx style="verb">nsmgmt</spanx>. The reasons are to limit the possibility of DNS
Providers polluting the zone's namespace, and to keep the
specification simpler -- the concept of delegated NS management is
already new. See <xref target="suffix"/> for the separate signaling that lets
Providers add their own nameserver names and addresses, scoped
under a label designated by the zone owner.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM nsmgmt="agent" signers="fox,hare"</t>

</section>
<section anchor="parentsync"><name>parentsync</name>

<t>Key number: 4</t>

<t>Type: value, one of "owner" or "agent".</t>

<t>The <spanx style="verb">parentsync</spanx> key signals who is responsible for synchronizing
delegation information (NS, glue, DS) with the parent zone. Two
values are defined:</t>

<t><list style="symbols">
  <t>"owner" -- the zone owner is responsible for sending updates to
the parent (via whichever mechanism the parent announces in its
DSYNC record).</t>
  <t>"agent" -- the Providers' Agents collectively are responsible
for parent synchronization; this is typically coordinated via
leader election among the Agents.</t>
</list></t>

<t>If <spanx style="verb">parentsync</spanx> is absent, the default is "owner". The specific
mechanism by which the parent receives the update (NOTIFY,
DDNS UPDATE, etc.) is announced by the parent via the DSYNC record
defined in <xref target="RFC9859"/>.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM nsmgmt="agent" parentsync="agent" signers="fox,hare"</t>

</section>
<section anchor="suffix"><name>suffix</name>

<t>Key number: 5</t>

<t>Type: value, a single valid DNS label.</t>

<t>When the <spanx style="verb">suffix</spanx> key is present, DNS Providers MAY add
in-bailiwick address records to the zone for nameservers they
contribute -- but only for names below <spanx style="verb">{suffix}.{zone}</spanx>. The value
of the key MUST be a single valid DNS label (not a fully qualified
domain name).</t>

<t>If <spanx style="verb">suffix</spanx> is absent, Providers MUST NOT add in-bailiwick
nameserver records (NS or address records) to the zone. The purpose
of this restriction is to prevent unintended namespace collisions
between owner-controlled names and Provider-added names.</t>

<t>If <spanx style="verb">suffix="ns"</spanx> is present in HSYNCPARAM, then a Provider with
Label "fox" MAY add:</t>

<t>zone.example.         IN NS    fox1.ns.zone.example.
fox1.ns.zone.example. IN A     1.2.3.4
fox1.ns.zone.example. IN AAAA  2001::53</t>

<t>and similarly for other Providers. Providers MUST coordinate
amongst themselves (via Agent-to-Agent communication) to avoid
name collisions below <spanx style="verb">{suffix}.{zone}</spanx>.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM nsmgmt="agent" signers="fox,hare" suffix="ns"</t>

</section>
<section anchor="pubkey"><name>pubkey</name>

<t>Key number: 6</t>

<t>Type: flag.</t>

<t>Keys <spanx style="verb">pubkey</spanx> and <spanx style="verb">pubcds</spanx> (see <xref target="pubcds"/>) instruct DNS Providers
to publish KEY and CDS/CDNSKEY records on behalf of the zone
owner at well-known names. Without these signals, Providers would
have to scan customer zones for various conventional content (per
<xref target="RFC9615"/> Section 3.1 for CDS, and similar conventions for other RR
types). The HSYNCPARAM record provides a single,
designed-for-purpose place where the zone owner expresses such
intent, making the signaling explicit rather than implicit in zone
content.</t>

<t>The <spanx style="verb">pubkey</spanx> flag signals the zone owner's intent that each
Provider SHOULD publish the child's SIG(0) KEY at the special name
<spanx style="verb">_sig0key.{child}._signal.{their-ns-name}.</spanx> in their own
zone. The use case for this key is the SIG(0) bootstrap mechanism
for the cross-zone-cut DNS UPDATE messages defined in
<xref target="I-D.ietf-dnsop-delegation-mgmt-via-ddns"/>.</t>

<t>The <spanx style="verb">_signal</spanx> label in the name pattern is registered in the
"Underscored and Globally Scoped DNS Node Names" registry
<xref target="RFC8552"/> by <xref target="RFC9615"/>.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM signers="fox,hare" pubkey</t>

</section>
<section anchor="pubcds"><name>pubcds</name>

<t>Key number: 7</t>

<t>Type: flag.</t>

<t>The <spanx style="verb">pubcds</spanx> flag signals the zone owner's intent that each
Provider SHOULD publish the zone's CDS and/or CDNSKEY records at
the special name <spanx style="verb">_dsboot.{child}._signal.{their-ns-name}.</spanx> in
their own zone, per the DNSSEC bootstrap mechanism defined in
<xref target="RFC9615"/>.</t>

<t>This signal replaces the implicit RFC 9615 Section 3.1 convention by
which Providers would otherwise scan customer zones for CDS or
CDNSKEY content. Under <spanx style="verb">pubcds</spanx> the zone owner's intent is
explicit; under absence of <spanx style="verb">pubcds</spanx>, Providers MUST NOT publish
CDS or CDNSKEY records on behalf of the zone.</t>

<t>Example:</t>

<t>zone.example. IN HSYNCPARAM signers="fox,hare" pubkey pubcds</t>

</section>
</section>
<section anchor="linking-hsync-and-hsyncparam"><name>Linking HSYNC and HSYNCPARAM</name>

<t>HSYNC and HSYNCPARAM are designed to work together: HSYNC names
the Providers (one record each), and HSYNCPARAM expresses
zone-wide policy that references those Providers by Label.
Resolving a policy decision such as "is Provider X a signer?"
therefore requires consulting both records.</t>

<t>The signaling appears in the zone the Agent receives via zone
transfer. An Agent does not perform DNS lookups to resolve these
links; it analyzes the HSYNC RRset and the HSYNCPARAM record
already present in the zone. This is local zone analysis, not
recursive resolution.</t>

<t>The procedure is straightforward. To determine whether the
Provider identified by HSYNC Label "fox" is a signer for the
zone, an Agent:</t>

<t><list style="numbers" type="1">
  <t>Examines the HSYNCPARAM record at the zone apex.</t>
  <t>Reads the value of the <spanx style="verb">signers</spanx> key (a list of Labels).</t>
  <t>Checks whether "fox" appears in that list.</t>
</list></t>

<t>The same pattern applies to all HSYNCPARAM list keys (<spanx style="verb">servers</spanx>,
<spanx style="verb">signers</spanx>, <spanx style="verb">auditors</spanx>): the value is a list of Labels, each
referring to an HSYNC record in the same zone. Conversely, an
HSYNC Label that does not appear in any HSYNCPARAM list key is
simply not assigned that role.</t>

<t>A Label referenced by an HSYNCPARAM list key MUST match the Label
field of an HSYNC record in the same zone. An HSYNCPARAM list
value that does not match any HSYNC Label SHOULD be logged by the
Agent and treated as if absent.</t>

<t>Example:</t>

<t>zone.example.    IN HSYNC      fox   agent.fox.example.    .
zone.example.    IN HSYNC      hare  agent.hare.example.   fox
zone.example.    IN HSYNCPARAM  servers="fox,hare" signers="fox" nsmgmt="agent"</t>

<t>In this example, both "fox" and "hare" serve the zone (both are in
<spanx style="verb">servers</spanx>), but only "fox" signs the zone (only "fox" is in
<spanx style="verb">signers</spanx>). NS management is delegated to the Agents
(<spanx style="verb">nsmgmt="agent"</spanx>).</t>

</section>
<section anchor="distributed-synchronization-of-dns-data"><name>Distributed Synchronization of DNS Data</name>

<t>When a zone is served (and possibly signed) by more than one
Provider, a small set of apex RRsets must be kept consistent across
all of them: the DNSKEY RRset (the union of every signer's keys),
the CDS and CSYNC RRsets used to drive parent synchronization, and,
when NS management is delegated, the NS RRset. Each Provider
contributes its own part of these RRsets, and every Provider must
converge on the same combined result.</t>

<section anchor="the-synchronization-problem"><name>The Synchronization Problem</name>

<t>The difficulty is that the contributions arrive independently and
asynchronously. Each Provider's Agent contributes when its local
state changes -- a new DNSKEY is published, a nameserver is added or
removed -- and those contributions reach the other Agents at
different times, over a communication mesh that may be partitioned
or delayed. There is no global lock and no single component that
owns the combined result (see <xref target="authoritative-source-per-data-class"/>).</t>

<t>The synchronization model is therefore one of eventual consistency:
given a stable set of contributions, all Providers converge on the
same combined RRsets, but they do not do so atomically. Two
properties bound this convergence:</t>

<t><list style="symbols">
  <t>Safety over liveness. At every point during synchronization the
zone remains available and correctly signed under the data each
Provider already holds. If a contribution is delayed or an Agent
is unreachable, synchronization pauses rather than producing an
inconsistent or unsigned zone; it resumes from where it stopped
once the missing input arrives. A multi-signer key rollover
illustrates this: when one signing Provider introduces a new key,
that key is not relied upon for the zone until every signing
Provider has confirmed it has published the new key in the joint
DNSKEY RRset. If one signer is slow or temporarily unreachable,
the rollover does not fail -- it simply pauses until that signer
catches up, and the zone stays valid under the keys already in
effect throughout.</t>
  <t>Role asymmetry. The Providers do not all play the same role for a
zone. A non-signing Provider still participates in coordination
(for example, contributing NS records when NS management is
delegated), but it must not act on contributions that only a
signer may apply. What a Provider does with a contribution depends
on its role, expressed by the zone owner through the HSYNCPARAM
keys defined in this document.</t>
</list></t>

<t>A second consequence of role asymmetry is that not every Provider
ends up serving identical zone content: the coordinated RRsets are
the same everywhere, but, for example, a Provider's served zone
reflects only the NS management policy in force. The model below
makes this precise.</t>

</section>
<section anchor="persisting-all-applying-by-role"><name>Persisting All, Applying by Role</name>

<t>The Combiner (<xref target="the-combiner"/>) at each Provider receives
contributions from the Agents and merges the role-permitted ones
with the owner's zone data, passing the merged zone to the local
Signer. Conceptually the Combiner maintains three derived views:</t>

<t><list style="symbols">
  <t>the per-Agent contributions, one set per contributing Agent,
retained as received;</t>
  <t>a merged view, deduplicating the per-Agent contributions for the
same owner name and RRtype into a single combined RRset; and</t>
  <t>the live zone served to queries, produced by applying the merged
view to the owner's zone data.</t>
</list></t>

<t>The central rule that makes distributed synchronization well-defined
is the separation of these two actions:</t>

<ul empty="true"><li>
  <t>Every Combiner persists all contributions received from
authorized Agents; each Combiner applies to its live zone only
those contributions that its role permits.</t>
</li></ul>

<t>Persistence is unconditional: a contribution from an authorized
Agent is always retained, regardless of the receiving Provider's
role. Application is conditional on role. A non-signing Provider's
Combiner therefore holds the same set of contributions as a signing
Provider's Combiner; the two differ only in what reaches the served
zone. Retaining the full contribution set at every Provider is what
allows a Provider's role to change -- or a new signer to be
onboarded -- without first having to re-gather data that some
Provider had previously discarded.</t>

<t>In this architecture the Combiner, not the Agent, is the component
responsible for durably persisting contributions, for two reasons:</t>

<t><list style="symbols">
  <t>The Combiner must hold the complete set of contributions so that
it can re-apply the role-permitted changes to every new version of
the unsigned zone it receives from the zone owner. Each inbound
zone transfer from the owner replaces the owner-supplied content,
and the coordinated RRsets must be merged in again; the Combiner
can only do this if it retains the contributions independently of
any single zone version.</t>
  <t>Keeping the persistent state in the Combiner lets the Agent be
restartable at any time. The Agent holds no durable contribution
state of its own; when an Agent restarts, it resynchronizes by
requesting the current set of contributions from its Combiner, on
a per-zone basis, and resumes from there. This keeps the Agent
close to stateless and avoids a separate recovery mechanism in the
Agent.</t>
</list></t>

</section>
<section anchor="role-derived-edit-policy"><name>Role-Derived Edit Policy</name>

<t>Whether a Combiner applies a given contribution to its live zone is
determined by four conditions, all derived from the zone's
HSYNCPARAM record and the Combiner's own role:</t>

<t><list style="symbols">
  <t>whether the zone is signed;</t>
  <t>whether this Provider is a signer (its Label appears in the
<xref target="signers"/> key);</t>
  <t>whether NS management is delegated to the Agents (<xref target="nsmgmt"/> is
"agent"); and</t>
  <t>whether parent synchronization is delegated to the Agents
(<xref target="parentsync"/> is "agent").</t>
</list></t>

<t>Each coordinated RRset is applied only when the corresponding
conditions hold. A Combiner MUST apply a received contribution to
its live zone only when the condition in the following table is
satisfied for that RRset, and MUST otherwise retain the contribution
without applying it:</t>

<texttable>
      <ttcol align='left'>RRset</ttcol>
      <ttcol align='left'>Applied to the live zone when</ttcol>
      <c>NS</c>
      <c>nsmgmt=agent AND (zone unsigned OR we are a signer)</c>
      <c>DNSKEY</c>
      <c>zone signed AND we are a signer</c>
      <c>CDS</c>
      <c>zone signed AND we are a signer AND parentsync=agent</c>
      <c>CSYNC</c>
      <c>zone signed AND we are a signer AND parentsync=agent</c>
      <c>KEY</c>
      <c>parentsync=agent AND (zone unsigned OR we are a signer)</c>
</texttable>

<t>The KEY RRset in this table is the SIG(0) public key used for parent
synchronization via DNS UPDATE; it is unrelated to the JWK-based
keys used for Agent-to-Agent authentication. DNSKEY is meaningful
only for signed zones, while NS and KEY may be applied by any
Provider's Combiner for an unsigned zone, gated only by the
nsmgmt and parentsync policies respectively.</t>

</section>
<section anchor="reporting-whether-a-contribution-was-applied"><name>Reporting Whether a Contribution Was Applied</name>

<t>Because a contribution may be persisted by a Combiner without being
applied, the Agent that originated it needs to learn which of the
two happened. A Combiner reports one of three outcomes for each
contributed RRset:</t>

<t><list style="symbols">
  <t>applied -- the contribution was persisted and reached the live
zone;</t>
  <t>persisted-not-applied -- the contribution was persisted but the
role-derived edit policy did not permit applying it (the running
implementation labels this status IGNORED). This is a definitive
outcome: it is not an error, and the originating Agent SHOULD NOT
retry; the data is safely held; and</t>
  <t>rejected -- the contribution was not accepted at all, for example
because the contributing Agent is not authorized to contribute zone
data. This is the expected outcome for any contribution originating
from an Auditor (<xref target="the-auditor"/>), which participates in the
synchronization but MUST NOT contribute zone data.</t>
</list></t>

<t>Both "applied" and "persisted-not-applied" are definitive answers
that allow the originating Agent to stop tracking the contribution
as outstanding. When an Agent has sent a contribution to several
recipients, the contribution is considered applied for the zone if
ANY recipient reports "applied"; it is considered persisted-not-
applied only if ALL recipients report "persisted-not-applied". This
lets the originating Agent answer the operationally important
question: did any Provider actually apply my data? A contribution
that every recipient persists but none applies (for example, an NS
contribution to a zone whose owner retains NS management) is
correctly reported as applied nowhere, without being treated as a
failure.</t>

</section>
<section anchor="scope"><name>Scope</name>

<t>This section defines the synchronization model and the invariants
that every implementation must share: what data is kept in sync, the
persist-all / apply-by-role rule, the role-derived edit policy, and
the contribution-reporting semantics. The concrete multi-step
synchronization processes built on this model -- adding or removing a
signer, coordinated key rollovers, NS RRset reconciliation, and
parent synchronization -- are out of scope for this document and are
specified separately (see <xref target="I-D.ietf-dnsop-dnssec-automation"/>).</t>

</section>
</section>
<section anchor="communication-between-agents"><name>Communication Between Agents</name>

<t>For the communication between Agents there are two choices that need to
be made among the designated Agents for a zone. The first is what
"transport" to use for the communication. The second is what
"synchronization" model to use when executing future synchronization
processes.</t>

<t>The two defined transport alternatives are:</t>

<t><list style="symbols">
  <t>DNS-based communication (mandatory to support)</t>
  <t>REST API-based communication</t>
</list></t>

<t>Each has pros and cons and at this point in time it is not clear that
one always is better than the other. To simplify the choice of
transport DNS-based communication is mandatory to support and the REST
API-based communication may only be used if all Agents support
it. Agents signal and negotiate their supported transports as part of
the Agent-to-Agent communication.</t>

<t>Synchronization between Agents uses two mechanisms, applied to
different tasks rather than chosen as alternatives:</t>

<t><list style="symbols">
  <t><strong>Peer-to-Peer</strong> synchronization is the baseline, used for the bulk
of the coordination work (DNSKEY, CDS, CSYNC, and NS RRset
reconciliation among the Agents).</t>
  <t><strong>Leader-based</strong> synchronization is used only for tasks that require
a single Agent to act on behalf of the group -- most notably
synchronization with the parent zone -- where the acting Agent is
chosen by leader election.</t>
</list></t>

<t>Both mechanisms run over either DNS or API transport.</t>

<t>Regardless of the synchronization model and communication method used,
the Agents SHOULD exchange all needed information about the zone and
the DNS Provider they represent to enable the synchronization
processes to execute correctly. This includes notifications about
changes to DNSKEYs, changes to the NS RRset, etc. Depending on
synchronization model it may also include instructions for changes to
the zone.</t>

<t>In all cases the information published by a DNS Provider to allow
other Providers to locate its Agent MUST be DNSSEC-signed.</t>

<section anchor="agent-communication-via-dns"><name>Agent Communication via DNS</name>

<t>Structured data -- zone contributions, key state signals,
synchronization state, and confirmations -- cannot be sent over DNS
as-is, since DNS carries only resource records or opaque option data.
The CHUNK framing mechanism defined in
<xref target="I-D.berra-dnsop-chunk-framing"/> encodes such structured data for
transport over DNS; this document relies on that mechanism without
constraining how it works.</t>

<t>CHUNK optionally secures payloads using the JOSE framework:
authentication via JWS signatures (<xref target="RFC7515"/>) and confidentiality
via JWE (<xref target="RFC7516"/>) encryption, using cryptographic keys discovered
from JWK records (<xref target="RFC7517"/>) published in the DNS.</t>

<t>This model builds on the approach used by
<xref target="I-D.berra-dnsop-keystate"/> for delegation synchronization
between child and parent, which has already been implemented and
shown to work.</t>

</section>
<section anchor="agent-communication-via-rest-api"><name>Agent Communication via REST API</name>

<t>REST APIs are well-known and a natural fit for many distributed
systems. Because a REST API can carry arbitrary JSON-serialized data
structures directly, the same Agent messages (HELLO, BEAT, SYNC,
etc.) are sent as JSON in the request and response bodies, with no
CHUNK framing required. The challenge is mostly in the initial setup
of secure communication. The certificates need to be validated, preferably
without a requirement on trusting a third party CA. The API endpoints
for each Agent need to be located. Once secure communication has been
established, using a REST API for Agent communication is
straight-forward.</t>

</section>
<section anchor="locating-remote-agents"><name>Locating Remote Agents</name>

<t>When an Agent receives a zone via zone transfer from the Signer it
analyzes the zone to see whether it contains an HSYNC RRset. If
there is no HSYNC RRset the zone MUST be ignored by the Agent
from the point-of-view of provider synchronization.</t>

<t>If the zone contains an HSYNC RRset, the Agent MUST analyze it to
identify the other Agents for the zone via the Identity field in
each HSYNC record. If any of the other Agents identified by the
HSYNC RRset is previously unknown to this Agent then secure
communication with this other Agent MUST be established.</t>

<t>This document defines two transports: "DNS" (the baseline, which all
Agents MUST support) and "API". An Agent signals which transports it
supports by publishing the corresponding discovery records in the
DNS; this record publication is what replaced the in-band transport
signaling of earlier designs.</t>

<t>Each transport is discovered through the same three-step shape -- a
URI record at the HSYNC Identity, the SVCB record of the URI target,
and a final record at that target -- but the two flows are independent,
starting from different service-prefixed URI names and ending in
different records: <spanx style="verb">_dns._tcp</spanx> ending in a JWK record for DNS
transport, and <spanx style="verb">_https._tcp</spanx> ending in a TLSA record for API
transport. The following two subsections describe each flow.</t>

<section anchor="locating-a-remote-dns-transport-agent"><name>Locating a Remote DNS Transport Agent</name>

<t>Locating a remote Agent using the DNS mechanism consists of the
following steps:</t>

<t><list style="symbols">
  <t>Lookup and DNSSEC-validate a URI record for the DNS protocol for
the HSYNC Identity. This provides the domain name and port to
which DNS messages should be sent.</t>
  <t>Lookup and DNSSEC-validate the SVCB record of the URI record target
to get the IP addresses to use for communication with the remote
Agent.</t>
  <t>If both the URI record and the SVCB record both include information
about the target port then the port information in the SVCB MUST
take precedence.</t>
  <t>Lookup and DNSSEC-validate the JWK record(s) of the URI record
target name. This provides the cryptographic keys needed for
authenticating and optionally encrypting communication with the
remote Agent. The JWK record type is defined in
<xref target="I-D.berra-dnsop-chunk-framing"/>.</t>
</list></t>

<t>Example: given the following HSYNC record for a remote Agent:</t>

<t>zone.example. IN HSYNC  remote  agent.provider.com. .</t>

<t>The local Agent will look up the URI record for agent.provider.com:</t>

<t>_dns._tcp.agent.provider.com.  IN  URI  10 10 "dns://dns.agent.provider.com:5399/"
_dns._tcp.agent.provider.com.  IN  RRSIG URI ...</t>

<t>which triggers a lookup for dns.agent.provider.com. SVCB to get the IPv4
and IPv6 addresses as ipv4hints and ipv6hints in the response to the
SVCB query:</t>

<t>dns.agent.provider.com.   IN  SVCB  1 . ipv4hint=5.6.7.8 ipv6hint=2001::53
dns.agent.provider.com.   IN  RRSIG SVCB ...</t>

<t>and also a lookup for the JWK record(s) for dns.agent.provider.com.
The JWK RDATA is the base64-encoded JSON Web Key; for example, a
P-256 signing key (use="sig"):</t>

<t>dns.agent.provider.com.  0 IN JWK (
                          "eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6In
                          Q2V3pEYmpaazJWYkFEem1ybGNCVDNvbWIzM2ZVSjJLT
                          m96NHFSeUNyRjQiLCJ5IjoiRDlBbEg0bTVnMDktTnhY
                          cnAzSHkxYmdOeXNLUDBBRXp3Qm9aUEVTOGJFdyJ9" )
dns.agent.provider.com.  0 IN JWK ( "...base64 P-256 enc key..." )
dns.agent.provider.com.    IN RRSIG JWK ...</t>

<t>The signing key (use="sig") enables verification of JWS-signed
payloads from the remote Agent. The encryption key (use="enc")
enables JWE-encrypted communication with the remote Agent. Both
key types and their use are defined in
<xref target="I-D.berra-dnsop-chunk-framing"/>.</t>

<t>Once all the DNS lookups and DNSSEC-validation of the returned data
has been done, the local Agent is able to initiate communication with
the remote Agent and verify the identity of the responding party via the
validated JWK record.</t>

<section anchor="discovery-failure-for-dns-transport"><name>Discovery Failure for DNS Transport</name>

<t>If any of the required records (URI, SVCB, JWK) is missing or fails
DNSSEC validation, DNS-transport discovery for this remote Agent
fails. The local Agent SHOULD log
the failure with sufficient detail to support operator
investigation (which record failed, at which step) and SHOULD
retry discovery the next time it analyzes the zone (typically
after the next zone transfer). The Agent MUST NOT attempt
communication with the remote Agent until discovery succeeds; the
synchronization state for this remote Agent remains "NEEDED"
rather than transitioning to "KNOWN".</t>

</section>
</section>
<section anchor="locating-a-remote-api-transport-agent"><name>Locating a Remote API Transport Agent</name>

<t>Locating a remote Agent using the API mechanism consists of the
following steps:</t>

<t><list style="symbols">
  <t>Lookup and DNSSEC-validate the URI record for the HTTPS protocol
for the HSYNC Identity. This provides the base URL that will be used
to construct the individual API endpoints for the REST API. It also
provides the port to use.</t>
  <t>Lookup and DNSSEC-validate the SVCB record for the URI record
target.  This provides the IP-addresses to use for communication
with the Agent.</t>
  <t>If both the URI record and the SVCB record both include information
about the target port then the port information in the SVCB MUST
take precedence.</t>
  <t>Lookup and DNSSEC-validate the TLSA record for the port and protocol
specified in the URI record. This will enable verification of the
certificate of the remote Agent once communication starts.</t>
</list></t>

<t>Example: given the following HSYNC record for a remote Agent:</t>

<t>zone.example.     IN HSYNC  remote  agent.provider.com. .</t>

<t>the local Agent will look up the URI record for agent.provider.com:</t>

<t>_https._tcp.agent.provider.com.  IN  URI  10 10 "https://api.provider.com:443/api/v2/"
_https._tcp.agent.provider.com.  IN  RRSIG URI ...</t>

<t>which triggers a lookup for api.provider.com IPv4 and IPv6
addresses as hints in an SVCB RR:</t>

<t>api.provider.com.   IN  SVCB 1 ipv4hint=1.2.3.4 ipv6hint=2001::bad:cafe:443
api.provider.com.   IN  RRSIG SVCB ...</t>

<t>Now we know the IP-address and the port as well as the base URL to
use. Finally the TLSA record for _443._tcp.api.provider.com is
looked up, with a response that may look like this:</t>

<t>_443._tcp.api.provider.com.  IN  TLSA 3 1 1 ....
  _443._tcp.api.provider.com.  IN  RRSIG TLSA ...</t>

<t>Once all the DNS lookups and DNSSEC-validation of the returned data
has been done, the local Agent is able to initiate communication with
the remote Agent and verify the identity of the responding party via the
TLSA record for the remote Agent's certificate.</t>

<section anchor="fallback-to-dns-based-communication"><name>Fallback to DNS-based Communication</name>

<t>If the API-based communication fails, either because needed DNS
records are missing, the TLSA record fails to validate the remote Agents
certificate or the remote Agent simply doesn't respond, the local Agent
MUST fall back to DNS-based communication.</t>

</section>
</section>
</section>
<section anchor="the-initial-hello-phase"><name>The Initial HELLO Phase</name>

<t>When two Agents need to communicate with each other for the first time
(because they are both designated DNS Providers for the same zone), they
need to establish secure communication. This is done in a "HELLO"
phase where the two Agents exchange HELLO messages to establish
mutual identity.</t>

<t>If all the information needed for API-based transport for the remote
party was available, the Agent SHOULD attempt an API-based HELLO. If,
however, this fails for some reason, it should fall back to DNS-based
HELLO.</t>

<section anchor="dns-based-hello-phase"><name>DNS-based HELLO Phase</name>

<t>When using DNS-based communication the HELLO phase is initiated by
sending a NOTIFY(CHUNK) for the zone that triggered the need for
communication. The HELLO message itself is carried using CHUNK
(<xref target="I-D.berra-dnsop-chunk-framing"/>).</t>

<t>The HELLO CHUNK payload contains the sender's identity and the zone
that triggered the communication. The payload is optionally signed
using JWS with the Agent's signing key published as a JWK record.</t>

<t>In the response to the NOTIFY, the remote Agent does the same and the
two Agents can now verify each other's identity.</t>

</section>
<section anchor="api-based-hello-phase"><name>API-based HELLO Phase</name>

<t>When using API-based communication the HELLO phase is done by sending
a REST API POST request to the remote Agent at the "/hello"
endpoint. The request MUST contain a JSON encoded object with the
sender's identity and the zone that triggered the communication. The
response MUST contain a JSON object with the responder's identity,
establishing mutual identity between the two Agents.</t>

</section>
<section anchor="hello-failure-handling"><name>HELLO Failure Handling</name>

<t>The HELLO exchange may fail to complete: the remote Agent may not
respond, may respond with an error, or may respond with an
unparseable payload. The local Agent MUST treat the absence of a
successful HELLO response within a configurable timeout as a
HELLO failure for that remote Agent.</t>

<t>As a baseline, an Agent SHOULD wait at least 30 seconds before
treating a missing HELLO response as a timeout, SHOULD apply
exponential backoff between successive retries (for example,
doubling the wait time each time), and SHOULD give up after no
more than 5 retries for a given remote Agent. These numbers are
intended as defaults that an implementation may override based on
local operational knowledge.</t>

<t>A remote Agent for which HELLO has not completed remains in the
"NEEDED" synchronization state. Permanent HELLO failure does not
affect the zone's continued service: the zone remains available
and properly signed under the data each Agent already has. What
the failure does affect is the zone's ability to undergo
synchronization events (key rollovers, NS RRset changes, etc.)
that require coordination with the unreachable Agent. An operator
SHOULD be notified when a remote Agent remains in "NEEDED" state
beyond the configured retry budget so that the underlying
connectivity or configuration problem can be addressed.</t>

</section>
<section anchor="choosing-a-transport"><name>Choosing a Transport</name>

<t>An Agent learns which transports each other Agent supports during
discovery, from which discovery chains resolve: a <spanx style="verb">_dns._tcp</spanx> chain
ending in a JWK record indicates DNS transport, and a <spanx style="verb">_https._tcp</spanx>
chain ending in a TLSA record indicates API transport. The transport
used for a zone is then determined from this group-wide knowledge:</t>

<t><list style="symbols">
  <t>If all Agents support API-based communication, the Agents use
API-based communication for this zone.</t>
  <t>Otherwise, the Agents use DNS-based communication, which all Agents
MUST support.</t>
</list></t>

<t>The synchronization mechanisms themselves are not negotiated per
zone: Peer-to-Peer synchronization is the baseline used by all
Agents for the bulk of the coordination work, and leader-based
synchronization is invoked only for tasks that require a single
acting Agent (such as parent synchronization).</t>

</section>
</section>
<section anchor="defined-message-types"><name>Defined Message Types</name>

<t>Each CHUNK message carries a message type that identifies the kind of
message being sent. CHUNK message types are strings, and
implementations may define additional message types as needed. The
message types used by the Agent-to-Agent communication described in
this document are listed below. The structured data payload for each
message type is carried using the CHUNK framing mechanism
(<xref target="I-D.berra-dnsop-chunk-framing"/>), which defines how the message
type and payload are encoded and which DNS carriage is used.</t>

<section anchor="hello"><name>HELLO</name>

<t>The HELLO message type is used during the initial handshake between
two Agents that need to communicate for the first time. It carries
the sender's identity and the zone that triggered the communication.
The response carries the responder's identity, establishing mutual
identity between the two Agents. Once both sides have exchanged HELLO
messages successfully, they transition to the operational state. The
HELLO exchange is described in more detail in
<xref target="the-initial-hello-phase"/>.</t>

</section>
<section anchor="beat"><name>BEAT</name>

<t>The BEAT message type (heartbeat) is used for periodic keep-alive
signaling between Agents that have established communication. The
BEAT message carries the sender's identity, the list of zones shared
between the two Agents, and the sender's intended heartbeat interval.</t>

<t>An Agent that does not receive a BEAT from a peer within a
configurable timeout SHOULD consider the peer unreachable and MAY
attempt to re-establish communication via the HELLO phase.</t>

</section>
<section anchor="ping"><name>PING</name>

<t>The PING message type is used to test connectivity with a remote
Agent. The PING carries a random nonce that the responder echoes back
in the response. This enables round-trip verification of the
communication path.</t>

</section>
<section anchor="sync"><name>SYNC</name>

<t>The SYNC message type is used for Agent-to-Agent zone data
synchronization. The CHUNK payload contains the zone data that the
sending Agent contributes (DNSKEY, CDS, CSYNC, and optionally NS
records). The receiving Agent processes the data according to its
local policy and returns a confirmation indicating which records were
accepted, removed, or rejected.</t>

</section>
<section anchor="update"><name>UPDATE</name>

<t>The UPDATE message type is used for Agent-to-Combiner zone data
contributions. It carries the same payload format as SYNC, but the
recipient is the local Combiner rather than a remote Agent. The
Combiner returns an immediate "pending" acknowledgment and processes
the update asynchronously, sending a detailed CONFIRM message once
processing is complete.</t>

</section>
<section anchor="confirm"><name>CONFIRM</name>

<t>The CONFIRM message type is used to send an explicit confirmation
message, typically as an asynchronous response to a previously
received SYNC or UPDATE. The CHUNK payload contains the distribution
ID of the original message, the processing status (success, partial,
or error), and per-record detail of which records were accepted,
removed, or rejected.</t>

</section>
<section anchor="rfi"><name>RFI</name>

<t>The RFI (Request For Information) message type is used to request
specific data from a remote Agent or Signer. The RFI message includes
an RFI subtype indicating what information is being requested:</t>

<t><list style="symbols">
  <t>SYNC: Request all zone data from the peer.</t>
  <t>UPSTREAM: Request zone data from an upstream Agent.</t>
  <t>DOWNSTREAM: Request zone data from a downstream Agent.</t>
  <t>KEYSTATE: Request the key inventory from a Signer.</t>
</list></t>

<t>The response contains the requested data in the CHUNK payload.</t>

</section>
<section anchor="keystate"><name>KEYSTATE</name>

<t>The KEYSTATE message type is used for DNSSEC key lifecycle signaling
between an Agent and its Signer. The CHUNK payload includes the zone
name, key tag, algorithm, and a signal indicating the key state
transition:</t>

<t><list style="symbols">
  <t>Signals from Agent to Signer: "propagated" (key has been
distributed to all Providers), "rejected" (key was rejected),
"removed" (key has been removed from zones).</t>
  <t>Signals from Signer to Agent: "published" (new key created),
"retired" (key retired), "inventory" (complete key inventory).</t>
</list></t>

<t>The KEYSTATE message type enables coordinated key rollovers across
multiple Providers.</t>

</section>
</section>
</section>
<section anchor="sequence-diagram-example-of-establishing-secure-comms-the-hello-phase"><name>Sequence Diagram Example of Establishing Secure Comms - "The Hello Phase"</name>

<t>The procedure of locating another Agent and establishing a secure
communication, referred to as "The Hello Phase" is exemplified in the
sequence diagram below.</t>

<t>The procedure is as follows:</t>

<t><list style="numbers" type="1">
  <t>The Agents receive a zone via zone transfer. By
analyzing the HSYNC RRset each Agent becomes aware of the
identities of the other Agents for the zone. I.e. each Agent
knows which other Agents it needs to communicate with.
Communication with each of these, previously unknown, remote
Agents is referred to as "NEEDED".</t>
  <t>Each Agent starts acquiring the information needed to establish secure
communications with any previously unknown Agents. Here we only
illustrate the baseline case where DNS-based communications is to
be used in the following phase. Once all needed information has
been collected the communication with this remote Agent is considered
to be "KNOWN".</t>
  <t>Once an Agent has received the required information (URI, SVCB and
JWK records in the baseline case) it sends a HELLO message to the
remote Agent. The HELLO carries the sender's identity and the zone
that triggered the communication; the responder replies in the
same way, establishing mutual identity between the two Agents.</t>
  <t>When an Agent either receives a successful response to its HELLO
message or responds successfully to one, it transitions out of
"The Hello Phase" with the exchanging party and they transition to
the next phase where they start sending BEAT messages instead. The
communication with the remote Agent is now considered to be in the
"OPERATIONAL" state.</t>
</list></t>

<t>In the case where one Agent is aware of the need to communicate with
another Agent, but the other is not (eg. the zone transfer was delayed
for one of them), the slower one SHOULD reject any HELLO message it
receives. Once it is ready, it will send its own HELLO message, which
should then be accepted.</t>

<figure><artwork><![CDATA[
+----------+                 +----------+                        +----------+
|  Owner   |                 |Provider A|                        |Provider B|
+----------+                 +----------+                        +----------+
     |                            |                                    |
     |     AXFR(example.com.)     |                                    |
     |--------------------------->|                                    |
     |     AXFR(example.com.)     |                                    |
     |---------------------------------------------------------------->|
     |                            |                                    |
     |                            |                                    |
     |                            |  QUERY _dns._tcp.providerA.se. URI?|
     |                            |----------------------------------->|
     |                            | (response target:                  |
     |                            |  dns.agent.providerA.se.)          |
     |                            |<-----------------------------------|
     |                            |  QUERY dns.agent.providerA.se. SVCB|
     |                            |----------------------------------->|
     |                            |  QUERY dns.agent.providerA.se. JWK |
     |                            |----------------------------------->|
     |                            |                                    |
     |                            |                                    |
     |                            |  HELLO(example.com)                |
     |                            |----------------------------------->|
     |                            |  HELLO response                    |
     |                            |<-----------------------------------|
     |                            |                                    |
     |                            |                                    |
     |                            |  BEAT                              |
     |                            |----------------------------------->|
     |                            |                                    |
     |                            |                                    |
     |                            |  BEAT                              |
     |                            |<-----------------------------------|
     |                            |                                    |
     |                            |                                    |
     |                            |                                    |

]]></artwork></figure>

<t>Note: the SVCB and JWK queries are sent to the target name learned
from the URI record returned in response to the URI query, not to
the HSYNC Identity directly. The JWK record is a DNS encoding of a
standard JSON Web Key as defined in <xref target="RFC7517"/>; the JWK record
type and its use are described in
<xref target="I-D.berra-dnsop-chunk-framing"/>.</t>

</section>
<section anchor="responsibilities-of-an-agent"><name>Responsibilities of an Agent</name>

<t>Each Agent has certain responsibilities, depending on supported
transports methods.</t>

<section anchor="enabling-remote-agents-to-locate-this-agent"><name>Enabling Remote Agents to Locate This Agent</name>

<t>For a group of Agents to be able to communicate securely and synchronize
data for a zone, each Agent must ensure that the DNS records needed for
secure communication with other Agents are published:</t>

<t><list style="symbols">
  <t>URI, SVCB and JWK records required for DNS-based communication
using CHUNK framing (see <xref target="I-D.berra-dnsop-chunk-framing"/>).</t>
  <t>URI, SVCB and TLSA records required for API-based communication
secured by TLS (if supported).</t>
  <t>All of the above MUST be published in a DNSSEC-signed zone under
the domain name that is the identity of the Agent.</t>
</list></t>

</section>
<section anchor="exchanging-zone-data-between-agents"><name>Exchanging Zone Data Between Agents</name>

<t>Agents exchange synchronization messages -- HELLO, BEAT, SYNC, and
the other message types defined in <xref target="defined-message-types"/> -- over
either DNS- or API-transport. The messages themselves are the same in
both cases; in the DNS case they are encapsulated in CHUNKs, the
framing mechanism defined in <xref target="I-D.berra-dnsop-chunk-framing"/>,
whereas API-transport carries the JSON-serialized messages directly.</t>

<t>The zone data that each Agent contributes to the other Agents for a
zone consists of:</t>

<t><list style="symbols">
  <t>The DNSKEY RRset for the zone consisting of the DNSKEYs that the
local Signer for this DNS Provider uses to sign the zone.</t>
  <t>The CDS RRset for the zone, representing the KSK that the local
Signer uses to sign the zone (when needed).</t>
  <t>The CSYNC RRset for the zone (when needed).</t>
  <t>The NS RRs for the zone, consisting of the NS records of the
authoritative nameservers that this DNS Provider is responsible
for (when NS management is delegated to the Agents).</t>
</list></t>

<t>Each Agent sends its zone data contributions to all other Agents for
the zone using the SYNC message type (see <xref target="defined-message-types"/>).
The receiving Agent is responsible for instructing its local Combiner
to incorporate the received data.</t>

</section>
</section>
<section anchor="migration-from-single-signer-to-multi-signer"><name>Migration from Single-Signer to Multi-Signer</name>

<t>The migration from a single-signer to a multi-signer architecture
is done by adding the second Provider to the <xref target="signers"/> list of
the HSYNCPARAM record. This may be done in several steps.</t>

<section anchor="adding-hsync-and-hsyncparam-records-to-an-already-signed-zone"><name>Adding HSYNC and HSYNCPARAM Records To an Already Signed Zone</name>

<t>Adding HSYNC and HSYNCPARAM records to a zone that is already
signed by a single DNS Provider, while keeping that Provider as
the sole signer and the zone owner in charge of NS management, is
a no-op that does not change anything in the zone:</t>

<t>zone.example. IN HSYNC      provider  agent.provider.com.  .
zone.example. IN HSYNCPARAM  servers="provider" signers="provider"</t>

<t>The zone was already signed by the DNS Provider "provider.com" and
the Provider added any needed DNSSEC records, including DNSKEYs.
The zone NS RRset was managed by the zone owner (the default in
the absence of <xref target="nsmgmt"/>). All of this is unchanged by the
addition of the two records.</t>

<t>What does change is the possibility of further migration steps
that build on the now-published signaling.</t>

</section>
<section anchor="promoting-a-provider-from-server-only-to-signer"><name>Promoting a Provider from Server-Only to Signer</name>

<t>A zone owner may want to start having a Provider sign the zone
without changing which Providers serve it. With the HSYNC
records already in place, this is signaled by adding the
Provider's Label to the <xref target="signers"/> list of HSYNCPARAM. For
example, starting from a zone where "fox" serves but does not
sign:</t>

<t>zone.example. IN HSYNC      fox   agent.fox.example.   .
zone.example. IN HSYNC      hare  agent.hare.example.  fox
zone.example. IN HSYNCPARAM  servers="fox,hare" signers="hare"</t>

<t>the zone owner adds "fox" to the signers list:</t>

<t>zone.example. IN HSYNCPARAM  servers="fox,hare" signers="fox,hare"</t>

<t>The HSYNC records are unchanged. From this point onward, both
Providers are designated signers, and the multi-signer "add signer"
process (see <xref target="I-D.ietf-dnsop-dnssec-automation"/>) is
initiated by the Agents to bring the new signer's keys into the
joint DNSKEY RRset.</t>

</section>
<section anchor="delegating-ns-management-to-the-agents"><name>Delegating NS Management to the Agents</name>

<t>To migrate from owner-maintained NS RRset to Agent-maintained, the
zone owner must first verify that the NS RRset as it would be
computed by the Agents (from the union of their NS contributions)
is in sync with the NS RRset currently published by the zone
owner. After this verification the zone owner adds (or changes)
the <spanx style="verb">nsmgmt</spanx> key in the HSYNCPARAM record to <spanx style="verb">nsmgmt="agent"</spanx>. The
HSYNC records are unchanged.</t>

</section>
<section anchor="migrating-from-a-multi-signer-architecture-back-to-single-signer"><name>Migrating from a Multi-Signer Architecture Back to Single-Signer.</name>

<t>If, for some reason, a zone owner wants to migrate back to a
single-signer architecture (i.e. offboarding the second DNS Provider),
the process is essentially the reverse of the migration from
single-signer to multi-signer:</t>

<t><list style="numbers" type="1">
  <t>The zone owner offboards the second signing DNS Provider (only keeping
one signing DNS Provider).</t>
</list></t>

<t>Offboarding the second signing DNS Provider is signalled by
removing its Label from the HSYNCPARAM <xref target="signers"/> key, leaving its
HSYNC record in place for the wind-down. This initiates the
multi-step "remove signer" process (as defined in
<xref target="I-D.ietf-dnsop-dnssec-automation"/>), which removes the
second DNS Provider's data from the zone in a series of steps.</t>

<t>The zone is now essentially back to a single-signer architecture.
Once the offboarding is complete, the zone owner may remove the
HSYNC record for the offboarded DNS Provider from the zone.</t>

<t>TO BE REMOVED BEFORE PUBLICATION:
# Rationale</t>

</section>
<section anchor="choice-of-the-hsync-mnemonic"><name>Choice of the HSYNC Mnemonic</name>

<t>Initially the mnemonic "MSIGNER" was used for the HSYNC RRset. However,
as work progressed it became clear that we want also non-signing DNS
Providers to be able to participate. So the RRset is a signalling
mechanism from zone owner to DNS Providers, some of which may or may
not be instructed to sign the zone. Therefore we suggest the mnemonic
"HSYNC" to indicate that this is a mechanism for "horizontal
synchronization" inside a zone.</t>

<t>But the mnemonic chosen is a very minor point and should a better
suggestion come up it would be great.</t>

</section>
<section anchor="separation-of-agent-and-combiner"><name>Separation of Agent and Combiner</name>

<t>It is possible to integrate all three multi-signer components (Signer,
Agent and Combiner) into a single piece of software (or two pieces,
depending on the preferred way of slicing the functionality). However,
such a composite module would be a fairly complex piece of software.</t>

<t>This document aims to describe the functional separation of the
different components rather than make a judgement on software design
alternatives.  Hence possible implementation choices are left to the
implementer.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>An architecture for automated multi-provider zone management is a
complex system with a number of components.  The authors believe that
the only way to make such an architecture useful in practice is via
automation. However, automation is a double-edged sword. It can both
make the system more robust and more vulnerable.</t>

<t>While all communication between Agents is authenticated (either via
JWS signatures or TLS), the signalling from the zone owner to the
Agents is via the HSYNC RRset and the HSYNCPARAM record in an
unsigned zone. This is a potential attack vector. However, securing
zone transfers from zone owner to DNS Providers is a well-known
issue with lots of existing solutions (TSIG, zone transfer via a
secure channel, zone transfer-over-TLS, etc). Employing some of
these solutions is strongly recommended.</t>

<t>From a vulnerability point-of-view this architecture introduces
several new components into the zone signing and publication
process. In particular the Combiner and the Agents are new components
that need to be secure. The Combiner has the advantage of not having
to announce its location to the outside world, as it only needs to
communicate with internal components (the zone owner, the Signer and
the Agent).</t>

<t>The Agent is more vulnerable. It needs to be discoverable by other
Agents and hence it is also discoverable by an adversary. On the
other hand, the Agents are not needed for a new zone to be signed and
published, they are only needed when there are changes that require
the Agents to synchronize, which is an infrequent event.</t>

<t>Furthermore, should an Agent be unable to fulfill its role during the
execution of a change requiring synchronization, whether it is a
complex multi-signer process or perhaps only a change to the NS RRset,
the synchronization process will simply stop where it is. Regardless
of where the stop (or rather pause) occurs, the zone will be fully
functional (as in available and properly signed). Once the Agent is
able to resume its role, the synchronization process will continue
from where it left off.</t>

</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors would like to thank the following people for their
valuable feedback and contributions: Felipe Agnelli Barbosa
(InternetNZ), Steve DeJong (Vercara), Cristian Elmerot
(Cloudflare), Matthijs Mekking (ISC), Stefan Ubbink (SIDN), and
Ralf Weber (Akamai).</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t><strong>Note to the RFC Editor</strong>: In this section, please replace
occurrences of "(This document)" with a proper reference.</t>

<section anchor="hsync-rr-type"><name>HSYNC RR Type</name>

<t>IANA is requested to add the following entry to the "Resource Record
(RR) TYPEs" registry under the "Domain Name System (DNS) Parameters"
registry group:</t>

<dl>
  <dt>Type</dt>
  <dd>
    <t>HSYNC</t>
  </dd>
  <dt>Value</dt>
  <dd>
    <t>TBD</t>
  </dd>
  <dt>Meaning</dt>
  <dd>
    <t>Per-provider enrollment for zone-owner-designated DNS Providers</t>
  </dd>
  <dt>Reference</dt>
  <dd>
    <t>(This document)</t>
  </dd>
</dl>

</section>
<section anchor="hsyncparam-rr-type"><name>HSYNCPARAM RR Type</name>

<t>IANA is requested to add the following entry to the "Resource Record
(RR) TYPEs" registry under the "Domain Name System (DNS) Parameters"
registry group:</t>

<dl>
  <dt>Type</dt>
  <dd>
    <t>HSYNCPARAM</t>
  </dd>
  <dt>Value</dt>
  <dd>
    <t>TBD</t>
  </dd>
  <dt>Meaning</dt>
  <dd>
    <t>Zone-wide multi-provider policy expressed as key-value pairs</t>
  </dd>
  <dt>Reference</dt>
  <dd>
    <t>(This document)</t>
  </dd>
</dl>

</section>
<section anchor="hsyncparam-keys-registry"><name>A New Registry for HSYNCPARAM Keys</name>

<t>The HSYNCPARAM record carries policy as a list of key-value pairs.
IANA is requested to create and maintain a new registry entitled
"HSYNCPARAM Keys", used by the HSYNCPARAM RR type. The keys defined
by this document are listed below; future assignments in the 8-32767
range are to be made through Specification Required review
<xref target="BCP26"/>.</t>

<texttable>
      <ttcol align='left'>KEY</ttcol>
      <ttcol align='left'>Mnemonic</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>servers</c>
      <c>Designated Providers serving the zone</c>
      <c>(This document)</c>
      <c>1</c>
      <c>signers</c>
      <c>Designated Providers signing the zone</c>
      <c>(This document)</c>
      <c>2</c>
      <c>auditors</c>
      <c>Designated Auditors for the zone</c>
      <c>(This document)</c>
      <c>3</c>
      <c>nsmgmt</c>
      <c>Who manages the NS RRset</c>
      <c>(This document)</c>
      <c>4</c>
      <c>parentsync</c>
      <c>Who synchronizes with the parent zone</c>
      <c>(This document)</c>
      <c>5</c>
      <c>suffix</c>
      <c>DNS label below which Providers may add NS/glue</c>
      <c>(This document)</c>
      <c>6</c>
      <c>pubkey</c>
      <c>Publish SIG(0) KEY record under _signal.{nsname}</c>
      <c>(This document)</c>
      <c>7</c>
      <c>pubcds</c>
      <c>Publish CDS/CDNSKEY records under _signal.{nsname}</c>
      <c>(This document)</c>
      <c>8-32767</c>
      <c>Unassigned</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>32768-65534</c>
      <c>Private Use</c>
      <c>&#160;</c>
      <c>(This document)</c>
      <c>65535</c>
      <c>Reserved</c>
      <c>MUST NOT be assigned</c>
      <c>(This document)</c>
</texttable>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8901">
  <front>
    <title>Multi-Signer DNSSEC Models</title>
    <author fullname="S. Huque" initials="S." surname="Huque"/>
    <author fullname="P. Aras" initials="P." surname="Aras"/>
    <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
    <author fullname="J. Vcelak" initials="J." surname="Vcelak"/>
    <author fullname="D. Blacka" initials="D." surname="Blacka"/>
    <date month="September" year="2020"/>
    <abstract>
      <t>Many enterprises today employ the service of multiple DNS providers to distribute their authoritative DNS service. Deploying DNSSEC in such an environment may present some challenges, depending on the configuration and feature set in use. In particular, when each DNS provider independently signs zone data with their own keys, additional key-management mechanisms are necessary. This document presents deployment models that accommodate this scenario and describes these key-management requirements. These models do not require any changes to the behavior of validating resolvers, nor do they impose the new key-management requirements on authoritative servers not involved in multi-signer configurations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8901"/>
  <seriesInfo name="DOI" value="10.17487/RFC8901"/>
</reference>
<reference anchor="RFC1996">
  <front>
    <title>A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)</title>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <date month="August" year="1996"/>
    <abstract>
      <t>This memo describes the NOTIFY opcode for DNS, by which a master server advises a set of slave servers that the master's data has been changed and that a query should be initiated to discover the new data. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="1996"/>
  <seriesInfo name="DOI" value="10.17487/RFC1996"/>
</reference>
<reference anchor="RFC2136">
  <front>
    <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
    <author fullname="P. Vixie" initials="P." role="editor" surname="Vixie"/>
    <author fullname="S. Thomson" initials="S." surname="Thomson"/>
    <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
    <author fullname="J. Bound" initials="J." surname="Bound"/>
    <date month="April" year="1997"/>
    <abstract>
      <t>Using this specification of the UPDATE opcode, it is possible to add or delete RRs or RRsets from a specified zone. Prerequisites are specified separately from update operations, and can specify a dependency upon either the previous existence or nonexistence of an RRset, or the existence of a single RR. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2136"/>
  <seriesInfo name="DOI" value="10.17487/RFC2136"/>
</reference>
<reference anchor="RFC3007">
  <front>
    <title>Secure Domain Name System (DNS) Dynamic Update</title>
    <author fullname="B. Wellington" initials="B." surname="Wellington"/>
    <date month="November" year="2000"/>
    <abstract>
      <t>This document proposes a method for performing secure Domain Name System (DNS) dynamic updates. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3007"/>
  <seriesInfo name="DOI" value="10.17487/RFC3007"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC9859">
  <front>
    <title>Generalized DNS Notifications</title>
    <author fullname="J. Stenstam" initials="J." surname="Stenstam"/>
    <author fullname="P. Thomassen" initials="P." surname="Thomassen"/>
    <author fullname="J. Levine" initials="J." surname="Levine"/>
    <date month="September" year="2025"/>
    <abstract>
      <t>This document generalizes and extends the use of DNS NOTIFY (RFC 1996) beyond conventional zone transfer hints to allow other types of actions that were previously lacking a trigger mechanism to be triggered via the DNS. Notifications merely nudge the receiver to initiate a predefined action promptly (instead of on a schedule); they do not alter the action itself (including any security checks it might employ).</t>
      <t>To enable this functionality, a method for discovering the receiver endpoint for such notification messages is introduced, via the new DSYNC record type. Notification types are recorded in a new registry, with initial support for parental NS and DS record updates including DNSSEC bootstrapping.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9859"/>
  <seriesInfo name="DOI" value="10.17487/RFC9859"/>
</reference>
<reference anchor="RFC9615">
  <front>
    <title>Automatic DNSSEC Bootstrapping Using Authenticated Signals from the Zone's Operator</title>
    <author fullname="P. Thomassen" initials="P." surname="Thomassen"/>
    <author fullname="N. Wisiol" initials="N." surname="Wisiol"/>
    <date month="July" year="2024"/>
    <abstract>
      <t>This document introduces an in-band method for DNS operators to publish arbitrary information about the zones for which they are authoritative, in an authenticated fashion and on a per-zone basis. The mechanism allows managed DNS operators to securely announce DNSSEC key parameters for zones under their management, including for zones that are not currently securely delegated.</t>
      <t>Whenever DS records are absent for a zone's delegation, this signal enables the parent's registry or registrar to cryptographically validate the CDS/CDNSKEY records found at the child's apex. The parent can then provision DS records for the delegation without resorting to out-of-band validation or weaker types of cross-checks such as "Accept after Delay".</t>
      <t>This document establishes the DS enrollment method described in Section 4 of this document as the preferred method over those from Section 3 of RFC 8078. It also updates RFC 7344.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9615"/>
  <seriesInfo name="DOI" value="10.17487/RFC9615"/>
</reference>
<reference anchor="RFC8552">
  <front>
    <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
    <author fullname="D. Crocker" initials="D." surname="Crocker"/>
    <date month="March" year="2019"/>
    <abstract>
      <t>Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="222"/>
  <seriesInfo name="RFC" value="8552"/>
  <seriesInfo name="DOI" value="10.17487/RFC8552"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor='I-D.berra-dnsop-chunk-framing'> <front> <title>*** BROKEN REFERENCE ***</title> <author> <organization/> </author> <date/> </front> </reference>

<reference anchor="I-D.ietf-dnsop-delegation-mgmt-via-ddns">
   <front>
      <title>Automating DNS Delegation Management via DDNS</title>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Erik Bergström" initials="E." surname="Bergström">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Leon Fernandez" initials="L." surname="Fernandez">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   Delegation information (i.e. the NS RRset, possible glue, possible DS
   records) should always be kept in sync between child zone and parent
   zone.  However, in practice that is not always the case.

   When the delegation information is not in sync the child zone is
   usually working fine, but without the amount of redundancy that the
   zone owner likely expects to have.  Hence, should any further
   problems ensue it could have catastrophic consequences.

   The DNS name space has lived with this problem for decades and it
   never goes away.  Or, rather, it will never go away until a fully
   automated mechanism for how to keep the information in sync
   automatically is deployed.

   This document proposes such a mechanism based on DNS Dynamic Updates
   (DDNS) secured with SIG(0) signatures, sent from the child to the
   parent across the zone cut.  The target of the update is discovered
   via the DSYNC record defined in [RFC9859].

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/johanix/draft-ietf-dnsop-delegation-mgmt-via-ddns
   (https://github.com/johanix/draft-ietf-dnsop-delegation-mgmt-via-
   ddns).  The most recent working version of the document, open issues,
   etc, should all be available there.  The authors (gratefully) accept
   pull requests.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-delegation-mgmt-via-ddns-01"/>
   
</reference>

<reference anchor="I-D.ietf-dnsop-dnssec-automation">
   <front>
      <title>DNSSEC automation</title>
      <author fullname="Ulrich Wisser" initials="U." surname="Wisser">
         </author>
      <author fullname="Shumon Huque" initials="S." surname="Huque">
         <organization>Salesforce</organization>
      </author>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="19" month="October" year="2024"/>
      <abstract>
	 <t>   This document describes an algorithm and protocol to automate the
   setup, operations, and decomissioning of Multi-Signer DNSSEC
   [RFC8901] configurations.  It employs Model 2 of the multi-signer
   specification, where each operator has their own distinct KSK and ZSK
   sets (or CSK sets), Managing DS Records from the Parent via CDS/
   CDNSKEY [RFC8078], and Child-to-Parent Synchronization in DNS
   [RFC7477] to accomplish this.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-dnssec-automation-03"/>
   
</reference>
<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC7516">
  <front>
    <title>JSON Web Encryption (JWE)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Hildebrand" initials="J." surname="Hildebrand"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries defined by that specification. Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7516"/>
  <seriesInfo name="DOI" value="10.17487/RFC7516"/>
</reference>
<reference anchor="RFC7517">
  <front>
    <title>JSON Web Key (JWK)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7517"/>
  <seriesInfo name="DOI" value="10.17487/RFC7517"/>
</reference>

<reference anchor="I-D.berra-dnsop-keystate">
   <front>
      <title>Signalling Key State Via DNS EDNS(0) OPT</title>
      <author fullname="Erik Bergström" initials="E." surname="Bergström">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Leon Fernandez" initials="L." surname="Fernandez">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <author fullname="Johan Stenstam" initials="J." surname="Stenstam">
         <organization>The Swedish Internet Foundation</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   This document introduces the KeyState EDNS(0) option code, to enable
   the exchange of SIG(0) key state information between DNS entities via
   the DNS protocol.  The KeyState option allows DNS clients and servers
   to include key state data in both queries and responses, facilitating
   mutual awareness of SIG(0) key status between child and parent zones.
   This mechanism addresses the challenges of maintaining
   synchronization of SIG(0) keys used for securing DNS UPDATE messages,
   thereby enhancing the efficiency and reliability of DNS operations
   that require coordinated key management.

   This document proposes such a mechanism.

   TO BE REMOVED: This document is being collaborated on in Github at:
   https://github.com/johanix/draft-berra-dnsop-opt-transaction-state
   (https://github.com/johanix/draft-berra-dnsop-transaction-state-00).
   The most recent working version of the document, open issues, etc,
   should all be available there.  The authors (gratefully) accept pull
   requests.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-berra-dnsop-keystate-02"/>
   
</reference>
<referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/bcp26">
  <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
    <front>
      <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
      <author fullname="M. Cotton" initials="M." surname="Cotton"/>
      <author fullname="B. Leiba" initials="B." surname="Leiba"/>
      <author fullname="T. Narten" initials="T." surname="Narten"/>
      <date month="June" year="2017"/>
      <abstract>
        <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
        <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
        <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
      </abstract>
    </front>
    <seriesInfo name="BCP" value="26"/>
    <seriesInfo name="RFC" value="8126"/>
    <seriesInfo name="DOI" value="10.17487/RFC8126"/>
  </reference>
</referencegroup>



    </references>

</references>


<?line 1929?>

<section anchor="change-history-to-be-removed-before-publication"><name>Change History (to be removed before publication)</name>

<t><list style="symbols">
  <t>draft-leon-dnsop-signaling-zone-owner-intent-01</t>
</list></t>

<ul empty="true"><li>
  <t>Replaced the single-record HSYNC RR with two records: HSYNC
(per-provider enrollment) and HSYNCPARAM (zone-wide policy as
SVCB-shaped key-value pairs). Defined eight HSYNCPARAM keys:
servers, signers, auditors, nsmgmt, parentsync, suffix, pubkey,
pubcds. Added an IANA registry for HSYNCPARAM Keys. Removed the
obsolete Sign field; signing intent is now expressed by
inclusion in the HSYNCPARAM signers key. Removed the HSYNC State
field (HSYNC now has three fields: Label, Identity, Upstream);
offboarding and staging a Provider are now signalled by the
presence or absence of the Provider's Label in the HSYNCPARAM role
keys, with the HSYNC record retained during wind-down. Added a
"Linking HSYNC and HSYNCPARAM" section explaining the Label
indirection. Rewrote scenarios, examples, and the migration chapter
accordingly.</t>
</li></ul>

<ul empty="true"><li>
  <t>Introduced the Auditor and Signer roles in Terminology (the
document now defines five roles) and added a full "The Auditor"
section. Promoted the Combiner to the architecture description.</t>
</li></ul>

<ul empty="true"><li>
  <t>Re-scoped the document to focus on the architecture: the problem
statement, the HSYNC/HSYNCPARAM signaling, the provider model
(Combiner, Signer, Agent), and the synchronization framework. The
detailed agent-to-agent wire mechanics are deferred to
<xref target="I-D.berra-dnsop-chunk-framing"/>.</t>
</li></ul>

<ul empty="true"><li>
  <t>Agent-to-agent communication is carried over two transports, DNS
and API. CHUNK is the DNS-side framing that lets structured data
travel over DNS (REST carries JSON directly). An Agent signals which
transports it supports by publishing the corresponding discovery
records: a _dns._tcp URI chain ending in a JWK record for DNS
transport, and a _https._tcp URI chain ending in a TLSA record for
API transport.</t>
</li></ul>

<ul empty="true"><li>
  <t>The HELLO exchange establishes mutual identity only (sender identity
and the triggering zone); it no longer carries capability signaling.
Agent messages (HELLO, BEAT, SYNC, etc.) are described as message
types rather than as fields of a dedicated EDNS option.</t>
</li></ul>

<ul empty="true"><li>
  <t>Agent authentication uses the JOSE framework: JWS signatures (DNS
transport) or TLS (API transport), with keys discovered from JWK
records; optional payload confidentiality uses JWE. SIG(0) is no
longer used for agent-to-agent authentication. (The child SIG(0) KEY
publication for the delegation-mgmt-via-ddns bootstrap, via the
HSYNCPARAM pubkey key, is a separate use and is retained.)</t>
</li></ul>

<ul empty="true"><li>
  <t>Rewrote and tightened the Abstract to match the re-scoped
architecture. Replaced hardcoded section references with kramdown
anchors and corrected the inter-draft citation anchors. Editorial
fixes throughout (typos, duplicate words, "Provider" capitalization,
sequence-diagram alignment).</t>
</li></ul>

<t><list style="symbols">
  <t>draft-leon-dnsop-signaling-zone-owner-intent-00</t>
</list></t>

<ul empty="true"><li>
  <t>This document is derived from the earlier document
draft-leon-dnsop-distributed-multi-signer-00.
Initial public draft.</t>
</li></ul>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA92963rbRtYm+r+uApv5EdIhaTvOoSNPp0e25ESOLbslOf7S
M7PbEAlKiEmAA4CSmdh9WXMDc2OzjlWrAFCWu7P7mf356SctUUShDqvWeb1r
Mpm4Jm+W2V4yOM0vinSZFxfJ38oiS15cF1mVHBVNVjQDl56fV9nVx741L2dF
uoLB5lW6aCbLrCwm86Iu15NaH5v8Bo9NSnxsktNjk3v33Txt4KnfD/bPDj+4
GfxyUVbbvaRu5s7l62ovaapN3Xx579539750aZWle/TOqsgad11Wby+qcrPe
Sw6OT1+8TF7DBzjBH/BD9zbbwjfm4YHJAU7OubpJi/nf0yXMZy/ZZrVb53vJ
f2vK2Tipy6qpskUNP21X+MP/cC7dNJdlteeSiUvgX17Ue8mzafIExoRxst/o
U179M1h36w9ldZEW+W9pk5fFXnJ2mSWn19k8ry/9tJIn5aaY0xfoiRn82uAm
4Bcz/ixbpflyL8F9nS50/P+aywh1ky+abFlnxbTOonkeTpNHWXVRN9X//l8r
M9HDKn/b/ssfOtMMXjA95xeUq1vM9Ok0OQWigLOx83xaXqZF/Ic/dJq/4vjT
Wsa/xTRPp8njqpy9zSozS5jfVRZ9Hk/ycH6RrcqySk6yOkurGU4VXtFsmiye
4Ksib7I5jAcXobbzrPEN/7W+zIu3m6qczsqVc0VZreAFV9keXJViYX6bTCZJ
eg47n86A3M8u8zqBC7pZwZ2DVcCBzDezrE7ShG5CWs3z3+Ctq2wGm5HXqwTG
SvC2JnRb66QpHV/jpLnM8irh65tU2QU+CxcOrl+yrsqrfA48ocrqdVnU+Xm+
zJsc3tNcwn28uHT4rbyps+Vimhw1yTxb5AX++bpMiuyaBjk5abZr+AwW8OPp
L8ePk+GPZZXDXJp06U63xQyG0n0dJ2tgJf61WVGVyyWucZTAqvj5l/sn+8/d
kFjPNXwtWW2WTR4eWpfLfLYd4fuay7SBlV5ksEYcLT1fZrQLzu8CTJn2ocmS
68scjvGljAN7WWUJMwraS/hunVVAFDCTu2VF2yebh0MCf5mVeBBLGIhfGIaC
zYdPzAG4VVqkF7SRWUKbVGfNmBZZr7NZvtjyl+G8ixq4QwLnmBcO3rDILzYV
bVY9RULIZFfj/YETmwGjhEUslyWfQ5gNrjqvZ+UVzCNLYc0lTRdHyIB8zpd4
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

-->

</rfc>

