<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tlmk-infra-dnssd-03" category="std" submissionType="IETF" updates="6762" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Unicast Local Discovery">Providing Local Unicast DNS-SD Service on Infrastructure</title>
    <seriesInfo name="Internet-Draft" value="draft-tlmk-infra-dnssd-03"/>
    <author fullname="Ted Lemon">
      <organization>Apple Inc</organization>
      <address>
        <email>mellon@fugue.com</email>
      </address>
    </author>
    <author fullname="Karsten Sperling">
      <organization>Apple Inc</organization>
      <address>
        <email>ksperling@apple.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="27"/>
    <area>INT</area>
    <workgroup>DNSSD</workgroup>
    <keyword>DNSSD</keyword>
    <keyword>mDNS</keyword>
    <keyword>DNS</keyword>
    <keyword>ULD</keyword>
    <abstract>
      <?line 43?>

<t>DNS Service Discovery provides several mechanisms whereby hosts can discover and advertise services on an IP network. Such discovery can be done using Multicast DNS (mDNS) or DNS, and advertising can be done with DNS-SD Service Registration Protocol (SRP) or mDNS. This document defines Unicast Local Discovery (ULD), a service that combines an SRP registrar, a Discovery Proxy, and an Advertising Proxy. Hosts can use a ULD server to advertise and discover services on the local link entirely via unicast SRP and DNS while remaining interoperable with hosts that use mDNS.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-tlmk-infra-dnssd/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        DNSSD Working Group mailing list (<eref target="mailto:dnssd@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dnssd/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dnssd/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/Abhayakara/draft-tlmk-infra-dnssd"/>.</t>
    </note>
  </front>
  <middle>
    <?line 47?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>DNS Service Discovery (DNS-SD) <xref target="RFC6763"/> is a general mechanism for advertising and discovering services on IP networks. While DNS-SD can operate over either unicast DNS or Multicast DNS (mDNS) <xref target="RFC6762"/>, in practice mDNS is the prevalent method for local service discovery in home networks and other unmanaged environments, because unicast DNS-SD requires infrastructure support (managed DNS zones, service registration mechanisms) that is not typically present on such networks.</t>
      <t>However, mDNS relies entirely on multicast, and places the responsibility for answering queries on each device that is publishing a service. This interacts poorly with Wi-Fi in several compounding ways: Multicast frames are not acknowledged or retransmitted at the MAC layer, making them inherently less reliable. Unlike unicast frames, they are also not buffered by the access point when a station is sleeping. This creates a problematic tradeoff especially for battery-powered devices: either wake at every DTIM beacon (usually multiple times per second) at a significant power cost, or extend sleep intervals and miss a large proportion of queries, making mDNS unreliable. Finally, multicast frames are transmitted at the lowest mandatory data rate, consuming many times more airtime than equivalent unicast frames. This means that even moderate amounts of mDNS traffic can consume a disproportionate share of available airtime.</t>
      <t>To address this, this document defines a way of combining several existing technologies into a Unicast Local Discovery (ULD) service: an SRP registrar <xref target="RFC9665"/> with its Authoritative DNS Server <xref target="RFC1034"/> <xref target="RFC1035"/> to handle registration and discovery over unicast, and an Advertising Proxy <xref target="I-D.ietf-dnssd-advertising-proxy"/> and Discovery Proxy <xref target="RFC8766"/> to provide interoperability with mDNS.</t>
      <t>While each of these components can be deployed today, only when they are integrated in a standardized way into a discoverable service can a client rely entirely on unicast discovery and cease participating in mDNS itself. From a client's perspective, ULD is a drop-in replacement for mDNS: If a ULD server is available on a particular link, the client uses it for all local advertisement and discovery on that link; otherwise it falls back to mDNS. Note that because SRP is used for registration, advertisement via ULD is limited to the record patterns defined by DNS-SD.</t>
      <t>A ULD server can be deployed as part of the network infrastructure, for example on a CE router <xref target="RFC7084"/>, or on an ad-hoc basis on devices such as SNAC Routers <xref target="I-D.ietf-snac-simple"/> that already have the required capabilities. It can be implemented in any device that is expected to be continuously operational on a network link and has sufficient resources to provide the service.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<t>This document uses the terms "infrastructure" and "ad-hoc" to refer to the two different ways a ULD server can be deployed:</t>
      <dl>
        <dt>Infrastructure server:</dt>
        <dd>
          <t>The ULD server is a router on the link that has been intentionally deployed as part of the network infrastructure. At most one infrastructure server is expected per link.</t>
        </dd>
        <dt>Ad-hoc server:</dt>
        <dd>
          <t>The ULD server is a device on the link that is not part of the network infrastructure but has the required capabilities, such as a SNAC router. Multiple ad-hoc servers may be present on the same link.</t>
        </dd>
      </dl>
      <t>This document uses the terms "shared" and "unique" when referring to resource record sets in the sense of Section 2 of <xref target="RFC6762"/>: A unique record set is conceptually under the sole control of a single owning device, whereas a shared record set may contain records contributed by multiple devices.</t>
    </section>
    <section anchor="unicast-local-discovery">
      <name>Unicast Local Discovery</name>
      <t>ULD provides service registration and discovery within the ".local." domain, the same domain used by mDNS <xref target="RFC6762"/>. This ensures that ULD is a transparent replacement for mDNS from the perspective of applications and resolver libraries (see <xref target="local-zone"/> for further discussion of this design choice). Unlike mDNS, where the separate IPv4 and IPv6 multicast addresses effectively result in two independent .local namespaces (Section 20 of <xref target="RFC6762"/>), ULD maintains a single unified .local zone per link.</t>
      <t>This document updates <xref target="RFC6762"/> to allow .local queries to be directed to a ULD server as an alternative to mDNS multicast: Any DNS query for a name ending with ".local." <bcp14>MUST</bcp14> be sent to the ULD server for the link, or to the mDNS IPv4 link-local multicast address 224.0.0.251 or its IPv6 equivalent FF02::FB.</t>
      <t>The following sections describe the architecture and operation of a ULD server on a single link. There are five logical parts to a ULD server:</t>
      <ul spacing="normal">
        <li>
          <t>The DNS <xref target="RFC1035"/> zone in which DNS-SD information will be stored</t>
        </li>
        <li>
          <t>The SRP <xref target="RFC9665"/> service, which is used to add and update services in the DNS zone</t>
        </li>
        <li>
          <t>The Authoritative DNS Server <xref target="RFC1035"/> which authoritatively answers unicast DNS queries, drawing on both the zone and the Discovery Proxy</t>
        </li>
        <li>
          <t>The Discovery Proxy <xref target="RFC8766"/>, which enables unicast discovery of local services that are advertised via mDNS but have not been registered via SRP</t>
        </li>
        <li>
          <t>The Advertising Proxy <xref target="I-D.ietf-dnssd-advertising-proxy"/> service, which advertises the contents of the zone using mDNS, ensuring SRP-registered services are discoverable via mDNS</t>
        </li>
      </ul>
      <figure anchor="fig-architecture">
        <name>ULD Server Architecture</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="408" viewBox="0 0 408 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 8,128 L 8,176" fill="none" stroke="black"/>
              <path d="M 8,224 L 8,320" fill="none" stroke="black"/>
              <path d="M 64,88 L 64,120" fill="none" stroke="black"/>
              <path d="M 64,184 L 64,216" fill="none" stroke="black"/>
              <path d="M 120,128 L 120,176" fill="none" stroke="black"/>
              <path d="M 136,128 L 136,176" fill="none" stroke="black"/>
              <path d="M 168,224 L 168,320" fill="none" stroke="black"/>
              <path d="M 184,88 L 184,120" fill="none" stroke="black"/>
              <path d="M 200,224 L 200,320" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,80" fill="none" stroke="black"/>
              <path d="M 296,128 L 296,176" fill="none" stroke="black"/>
              <path d="M 296,224 L 296,320" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,320" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,320" fill="none" stroke="black"/>
              <path d="M 8,32 L 296,32" fill="none" stroke="black"/>
              <path d="M 360,32 L 400,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 296,80" fill="none" stroke="black"/>
              <path d="M 8,128 L 120,128" fill="none" stroke="black"/>
              <path d="M 136,128 L 296,128" fill="none" stroke="black"/>
              <path d="M 8,176 L 120,176" fill="none" stroke="black"/>
              <path d="M 136,176 L 296,176" fill="none" stroke="black"/>
              <path d="M 8,224 L 168,224" fill="none" stroke="black"/>
              <path d="M 200,224 L 296,224" fill="none" stroke="black"/>
              <path d="M 304,240 L 352,240" fill="none" stroke="black"/>
              <path d="M 200,272 L 296,272" fill="none" stroke="black"/>
              <path d="M 176,288 L 192,288" fill="none" stroke="black"/>
              <path d="M 304,288 L 352,288" fill="none" stroke="black"/>
              <path d="M 8,320 L 168,320" fill="none" stroke="black"/>
              <path d="M 200,320 L 296,320" fill="none" stroke="black"/>
              <path d="M 360,320 L 400,320" fill="none" stroke="black"/>
              <path d="M 196,184 L 212,216" fill="none" stroke="black"/>
              <path d="M 156,216 L 172,184" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="360,288 348,282.4 348,293.6" fill="black" transform="rotate(0,352,288)"/>
              <polygon class="arrowhead" points="312,240 300,234.4 300,245.6" fill="black" transform="rotate(180,304,240)"/>
              <polygon class="arrowhead" points="204,184 192,178.4 192,189.6" fill="black" transform="rotate(243.43494882292202,196,184)"/>
              <polygon class="arrowhead" points="200,288 188,282.4 188,293.6" fill="black" transform="rotate(0,192,288)"/>
              <polygon class="arrowhead" points="192,88 180,82.4 180,93.6" fill="black" transform="rotate(270,184,88)"/>
              <polygon class="arrowhead" points="180,184 168,178.4 168,189.6" fill="black" transform="rotate(296.565051177078,172,184)"/>
              <polygon class="arrowhead" points="72,216 60,210.4 60,221.6" fill="black" transform="rotate(90,64,216)"/>
              <polygon class="arrowhead" points="72,120 60,114.4 60,125.6" fill="black" transform="rotate(90,64,120)"/>
              <g class="text">
                <text x="112" y="52">Unicast</text>
                <text x="160" y="52">DNS</text>
                <text x="196" y="52">over</text>
                <text x="100" y="68">UDP,</text>
                <text x="140" y="68">TCP,</text>
                <text x="172" y="68">or</text>
                <text x="200" y="68">TLS</text>
                <text x="64" y="148">SRP</text>
                <text x="216" y="148">Authoritative</text>
                <text x="64" y="164">Registrar</text>
                <text x="212" y="164">Server</text>
                <text x="380" y="180">mDNS</text>
                <text x="248" y="244">Discovery</text>
                <text x="84" y="260">.local</text>
                <text x="248" y="260">Proxy</text>
                <text x="84" y="276">zone</text>
                <text x="248" y="292">Advertising</text>
                <text x="248" y="308">Proxy</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+-----------------------------------+       +----+
|         Unicast DNS over          |       |    |
|         UDP, TCP, or TLS          |       |    |
+-----------------------------------+       |    |
       |              ^                     |    |
       v              |                     |    |
+-------------+ +-------------------+       |    |
|     SRP     | |   Authoritative   |       |    |
|  Registrar  | |      Server       |       |    |
+-------------+ +-------------------+       |mDNS|
       |            ^   ^                   |    |
       v           /     \                  |    |
+-------------------+   +-----------+       |    |
|                   |   | Discovery |<------|    |
|      .local       |   |   Proxy   |       |    |
|       zone        |   +-----------+       |    |
|                   |-->|Advertising|------>|    |
|                   |   |   Proxy   |       |    |
+-------------------+   +-----------+       +----+
]]></artwork>
        </artset>
      </figure>
      <t>A device serving multiple links (e.g. a CE router with multiple VLAN interfaces) conceptually maintains a separate ULD instance per link, each with its own .local zone; the server's link-local address on each interface inherently scopes queries to the correct zone. Selection of the preferred server is also per link: a client operating on multiple links performs discovery separately for each, and may use ULD on some links while falling back to mDNS on others.</t>
      <section anchor="transports">
        <name>Transports</name>
        <t>A ULD server <bcp14>MUST</bcp14> support DNS over UDP, DNS over TCP, and DNS over TLS <xref target="RFC7858"/>. DNS over TLS support is required by the SRP specification <xref target="RFC9665"/> and is also the basis for DNS Push Notifications. All services (DNS queries, SRP registration, and DNS Push) operate on the standard ports: port 53 for UDP and TCP, port 853 for TLS. A ULD server <bcp14>MUST</bcp14> support IPv6; dual-stack requirements are addressed in <xref target="dual-stack"/>.</t>
        <t>On IPv6, clients <bcp14>MUST</bcp14> address ULD traffic to the server's link-local address, and a ULD server <bcp14>MUST</bcp14> refuse requests for ".local." that are not received on a link-local address, responding with RCODE 5 (REFUSED).</t>
        <t>ULD clients <bcp14>MAY</bcp14> use TLS, however clients that do support TLS <bcp14>SHOULD NOT</bcp14> fall back to plain TCP or UDP. TLS in ULD provides opportunistic encryption as described in Section 4.1 of <xref target="RFC7858"/>. Servers <bcp14>MUST NOT</bcp14> require client certificates and <bcp14>MAY</bcp14> use self-signed server certificates. Clients <bcp14>SHOULD NOT</bcp14> reject a server's TLS certificate, as server authentication is not a goal in this context.</t>
      </section>
      <section anchor="protocol-operations">
        <name>Protocol Operations</name>
        <section anchor="registering-services">
          <name>Registering Services</name>
          <t>A ULD server <bcp14>MUST</bcp14> accept service registrations via the Service Registration Protocol (SRP) <xref target="RFC9665"/>. Registrations <bcp14>MUST</bcp14> use ".local." as the registration domain, matching the names that would be used if the service were advertised via mDNS. The use of any other registration domain, including default.service.arpa, is out of scope for this specification.</t>
          <t>Because the .local zone is link-scoped, clients <bcp14>MUST</bcp14> only include address records (A, AAAA) in their SRP registrations that are valid on the link, following the same rules as for mDNS responses in Section 6.2 of <xref target="RFC6762"/>.</t>
        </section>
        <section anchor="discovering-services">
          <name>Discovering Services</name>
          <t>A ULD server <bcp14>MUST</bcp14> answer authoritatively for queries in ".local." and <bcp14>MUST</bcp14> support both standard DNS queries (over UDP, TCP, or TLS) and DNS Push Notifications <xref target="RFC8765"/> (over TLS using DSO <xref target="RFC8490"/>).</t>
          <t>The server draws on two sources: its authoritative zone (containing SRP-registered services) and the Discovery Proxy (reflecting services advertised via mDNS). Because ULD uses .local for both its zone and mDNS interactions, the Discovery Proxy operates without name rewriting or text-encoding translation — mDNS records are served to unicast clients with names unchanged. This is in contrast to deployments where a Discovery Proxy rewrites names between a delegated subdomain and .local as described in Section 5.5 of <xref target="RFC8766"/>.</t>
          <t>Since records matching a query could be shared, by default the server <bcp14>MUST</bcp14> answer from the union of both sources: for a given query it returns the matching records from the zone together with the matching records from the Discovery Proxy; a DNS Push subscription <bcp14>MUST</bcp14> likewise reflect changes from both sources, even when initial results came from only one.</t>
          <t>As an important optimization, when the query matches a unique record set in the .local zone, the server <bcp14>SHOULD</bcp14> treat the zone data as complete and not consult the Discovery Proxy. A record set registered via SRP is considered unique if it was part of a Host Description or Service Description Instruction (Section 3.3.1 of <xref target="RFC9665"/>). Because unique records have a single owner, the zone can be assumed to hold the entire set.</t>
          <t>Because the Advertising Proxy publishes zone contents via mDNS on the same link that the Discovery Proxy monitors, it is conceivable for the server to see records from its own .local zone reflected back via the Discovery Proxy; the server <bcp14>MUST</bcp14> ensure that such duplicate records are not returned to clients.</t>
          <t>The server <bcp14>SHOULD</bcp14> include additional records as defined in Section 12 of <xref target="RFC6763"/> (e.g., SRV, TXT, and address records alongside PTR answers), except where doing so would cause the response to be excessively large.</t>
        </section>
        <section anchor="discovery-proxy">
          <name>Discovery Proxy</name>
          <t>The Discovery Proxy's contributions to ULD queries generally follow the answer-aggregation behavior of Section 5.6 of <xref target="RFC8766"/>, answering from its mDNS cache when populated and otherwise issuing mDNS queries on the link. However, the behavior described there for standard DNS queries assumes that such queries are used only for one-shot operations expected to return unique records, while long-lived subscriptions are used when browsing for shared record sets. This is a reasonable assumption in the context of a generic Discovery Proxy, since off-link clients performing wide-area DNS-SD discovery will generally have the resources needed to implement DNS Push <xref target="RFC8765"/> over TLS. In the context of ULD, DNS Push subscriptions remain <bcp14>RECOMMENDED</bcp14> when querying for shared records, but it is desirable to support constrained clients that cannot use them: Such clients <bcp14>MAY</bcp14> implement time-bounded browse operations using repeated standard DNS queries. The interval between repeated queries <bcp14>MUST</bcp14> be at least 9 seconds (90% of the 10-second TTL cap imposed by the Discovery Proxy, Section 5.5.1 of <xref target="RFC8766"/>).</t>
          <t>To support such clients, the ULD server <bcp14>MUST</bcp14> continue to issue mDNS queries for the requested records for at least 20 seconds after the most recent matching standard DNS query, as it would for records in which a local client has an active interest (Section 5.2 of <xref target="RFC6762"/>). Where the requested records are unique (indicated by the cache-flush bit), whether received from the link or already held in the cache, the server need issue no further mDNS queries other than to refresh them as they approach expiry. Where the records may be shared, the server responds to each query immediately from its cache, while the continued querying surfaces any additional records on the link and keeps the cache current, so that the client's successive point-in-time snapshots converge on the complete set. This effectively matches the treatment that Section 5.6 of <xref target="RFC8766"/> describes for subscriptions.</t>
        </section>
        <section anchor="advertising-proxy">
          <name>Advertising Proxy</name>
          <t>A ULD server <bcp14>MUST</bcp14> publish the contents of its ".local." zone into mDNS using an Advertising Proxy, ensuring that services registered via SRP are discoverable via mDNS. As with the Discovery Proxy, the Advertising Proxy in ULD effectively operates without name rewriting: Because the records are already in the .local domain, the rewriting operation mandated by Section 2.1.2 of <xref target="I-D.ietf-dnssd-advertising-proxy"/> is a no-op.</t>
          <t>A ULD server <bcp14>MUST</bcp14> implement TSR <xref target="I-D.ietf-dnssd-tsr"/> to correctly resolve conflicts that arise when the same records reach mDNS via different paths, for example when a client transitions from direct mDNS participation to using ULD.</t>
        </section>
        <section anchor="administrative-records">
          <name>Administrative Records</name>
          <t>The ".local." zone <bcp14>MUST</bcp14> contain a number of administrative records. These records have no meaning in the mDNS namespace and <bcp14>MUST NOT</bcp14> be published by the Advertising Proxy.</t>
          <t>As described in Section 6 of <xref target="RFC8766"/>, the zone <bcp14>MUST</bcp14> contain:</t>
          <ul spacing="normal">
            <li>
              <t>A SOA record for the zone</t>
            </li>
            <li>
              <t>Exactly one NS record for the zone, referencing the ULD server's own hostname in .local</t>
            </li>
            <li>
              <t>AAAA record(s) for that hostname, and A record(s) if applicable</t>
            </li>
          </ul>
          <t>For compatibility with client libraries that perform standard DNS Push or SRP service endpoint discovery, the zone <bcp14>MUST</bcp14> also contain the following SRV records, each pointing to the server's hostname in .local and the relevant well-known port:</t>
          <ul spacing="normal">
            <li>
              <t><tt>_dns-push-tls._tcp.local.</tt> — port 853 (DNS Push Notifications)</t>
            </li>
            <li>
              <t><tt>_dnssd-srp-tls._tcp.local.</tt> — port 853 (SRP registration over TLS)</t>
            </li>
            <li>
              <t><tt>_dnssd-srp._tcp.local.</tt> — port 53 (SRP registration over UDP/TCP)</t>
            </li>
          </ul>
          <t>The ULD server <bcp14>MUST</bcp14> ensure its own hostname is unique on the link. This can be achieved either by using a randomly generated name that is statistically guaranteed to be unique, or by claiming the name via mDNS probing as defined in Section 8 of <xref target="RFC6762"/>. In either case, the server's hostname is owned and defended directly by the server as an mDNS participant, not published on behalf of a client via the Advertising Proxy.</t>
        </section>
      </section>
      <section anchor="server-discovery-and-monitoring">
        <name>Server Discovery and Monitoring</name>
        <section anchor="advertisement">
          <name>Server Advertisement</name>
          <t>All active ULD servers <bcp14>MUST</bcp14> advertise their presence using mDNS, as a DNS-SD service instance of type <tt>&lt;uld-service-name&gt;._tcp</tt>. The service advertisement consists of:</t>
          <ul spacing="normal">
            <li>
              <t>A PTR record at <tt>&lt;uld-service-name&gt;._tcp.local.</tt> pointing to the service instance name</t>
            </li>
            <li>
              <t>An SRV record for the service instance, pointing to the server's hostname and port 53</t>
            </li>
            <li>
              <t>A TXT record for the service instance, containing a <tt>pri</tt> key indicating the server's priority as defined below</t>
            </li>
          </ul>
          <t>The SRV priority and weight fields <bcp14>SHOULD</bcp14> be set to zero and <bcp14>MUST</bcp14> be ignored by clients. Per Section 5 of <xref target="RFC6763"/>, these fields are used for selecting among multiple SRV records for a single service instance, which does not apply here; additionally, mDNS APIs do not typically expose them to applications.</t>
          <t>Selection among ULD servers is based on the numeric value of the <tt>pri</tt> TXT key (lower priority values are preferred). If there are multiple servers with the same priority, the one with the numerically lowest IPv6 link-local address <bcp14>MUST</bcp14> be preferred. Services <bcp14>MUST</bcp14> advertise a priority based on their deployment mode and capabilities:</t>
          <ul spacing="normal">
            <li>
              <t>0: Infrastructure server</t>
            </li>
            <li>
              <t>100: Non-constrained ad-hoc server on a wired network link</t>
            </li>
            <li>
              <t>200: Non-constrained ad-hoc server on a Wi-Fi link</t>
            </li>
            <li>
              <t>1000: Constrained ad-hoc server, but otherwise well able to provide service</t>
            </li>
            <li>
              <t>65535: Ad-hoc server that can provide service if needed, but should not be preferred</t>
            </li>
          </ul>
        </section>
        <section anchor="infrastructure-ra-option">
          <name>Infrastructure RA Option</name>
          <t>An infrastructure ULD server <bcp14>MUST</bcp14> additionally advertise its presence by including the ULD RA option in its IPv6 Router Advertisements. The presence of the RA option signals that the sender of the RA is a ULD server, and the server's link-local source address in the RA is the address clients use to reach it.</t>
          <t>This additional advertisement mechanism serves a dual purpose: It provides IPv6 clients with a faster discovery path that does not rely on mDNS, and it enables the designation of the infrastructure ULD server to be protected by RA Guard <xref target="RFC6105"/>. In order for this protection to be effective, IPv6-capable clients <bcp14>MUST</bcp14> use the RA option for infrastructure server discovery, either exclusively or to verify the infrastructure designation of a server discovered via DNS-SD. The DNS-SD advertisement remains necessary to enable clients already using an ad-hoc server to discover a new infrastructure server via their existing ULD connection (avoiding the need to wake for multicast RA reception), and to support IPv4-only clients.</t>
        </section>
        <section anchor="client-behavior">
          <name>Client Behavior</name>
          <t>A client that wishes to use ULD on a particular link must first discover the preferred ULD server. Discovery follows a series of steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>Attempt to discover an infrastructure server.</t>
            </li>
            <li>
              <t>Failing that, browse for a list of ad-hoc servers, and determine the preferred one using the priority specified in the TXT record (see <xref target="advertisement"/>). Since all ULD servers <bcp14>MUST</bcp14> support IPv6, an IPv6 client need only query the IPv6 mDNS multicast address (FF02::FB) for this.</t>
            </li>
            <li>
              <t>If no server is discovered, or if no discovered server appears to work, fall back to mDNS for .local service registration and discovery.</t>
            </li>
          </ol>
          <t>Once a client has started to use a ULD server, it <bcp14>SHOULD</bcp14> cease its own mDNS participation on that link, and rely on the ULD server for all .local operations. The client <bcp14>MUST</bcp14> also monitor the availability of the service. If the client detects that the service is no longer available, it <bcp14>MUST</bcp14> restart the discovery process.</t>
          <t>The client <bcp14>MUST</bcp14> consider its ULD server unavailable when operations directed at the server persistently fail (DNS queries time out, SRP lease refresh fails, or a DNS Push session is lost). When a client currently using an infrastructure server is awake and processing Router Advertisements, it <bcp14>MUST</bcp14> check for the continued presence of the ULD RA option. However, clients are not required to wake specifically for RA reception.</t>
          <t>As motivated in <xref target="convergence"/>, clients of an ad-hoc server <bcp14>MUST</bcp14> additionally keep looking for the appearance of a more-preferred server; this could be an infrastructure server or another ad-hoc server that is preferable to the current server according to the rules defined in <xref target="advertisement"/>. Clients <bcp14>SHOULD</bcp14> utilize a DNS Push subscription with the current server for this purpose. When a client migrates to a new server (whether due to server failure or the appearance of a more-preferred server), it <bcp14>MUST</bcp14> re-register all its services with the new server.</t>
        </section>
      </section>
      <section anchor="dual-stack">
        <name>IPv4 and Dual-Stack Operation</name>
        <t>ULD is designed primarily for IPv6 operation: Infrastructure server discovery uses IPv6 Router Advertisements, and clients connect to the server's IPv6 link-local address, which provides inherent link-scoping. However, dual-stack mDNS interoperability is required to ensure that services on IPv4-only devices remain discoverable through the Discovery Proxy, and services on dual-stack ULD clients can be discovered over IPv4.</t>
        <t>A ULD server <bcp14>MUST</bcp14> therefore participate in mDNS on both the IPv6 multicast address (FF02::FB) and the IPv4 multicast address (224.0.0.251), unless deployed in an IPv6-only environment. The server <bcp14>SHOULD</bcp14> also accept ULD client connections over IPv4.</t>
        <t>Clients <bcp14>MAY</bcp14> connect to the ULD server over IPv4 using an on-link address. When a server receives ULD traffic over IPv4, it <bcp14>MUST</bcp14> verify that the source address falls within a directly-connected subnet of the receiving interface before processing a ".local." request. Even when connecting over IPv4, clients <bcp14>MUST</bcp14> use the server's IPv6 link-local address for the tiebreaker comparison defined in <xref target="advertisement"/>; this ensures all clients converge on the same server regardless of transport. If the preferred server is not reachable over IPv4, an IPv4-only client <bcp14>MUST</bcp14> fall back to mDNS. As the RA-based discovery mechanism is IPv6-only, an IPv4-only client discovers all servers, including the infrastructure server, via mDNS.</t>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>The ideal deployment state for ULD is a single infrastructure server on each link, providing streamlined discovery for all clients.</t>
      <t>A device that implements ULD <bcp14>MAY</bcp14> provide ULD service by default. Unless it qualifies as an infrastructure server (see below), it <bcp14>MUST</bcp14> advertise as an ad-hoc server with a priority reflecting its capabilities.</t>
      <t>In managed networks, the infrastructure ULD server designation <bcp14>MUST</bcp14> be enabled via explicit configuration by the network operator. Where multiple managed routers are present on a link, the operator <bcp14>MUST</bcp14> ensure that at most one advertises the ULD RA option.</t>
      <t>In unmanaged networks such as home networks, CE routers <xref target="RFC7084"/> are typically autonomously operating devices that form the basis for the network infrastructure. A CE router that provides ULD <bcp14>SHOULD</bcp14> claim infrastructure status by default, since it is already the de facto infrastructure for the link. Indications that a device is serving in this role include being the default router (sending RAs with nonzero Router Lifetime) and providing services such as DHCPv4 that are inherently singleton on the link. A device that is not clearly the primary gateway for the link <bcp14>MUST NOT</bcp14> claim infrastructure status without explicit configuration.</t>
      <t>Note that Homenet <xref target="RFC7788"/> does not define a "primary router" designation — it uses a distributed model with no single designated device. ULD's "one infrastructure server" assumption does not align well with this architecture. In Homenet networks, ULD servers may need to operate in ad-hoc mode, or Homenet could be extended to elect a ULD infrastructure server.</t>
    </section>
    <section anchor="snac-router-considerations">
      <name>SNAC Router Considerations</name>
      <t>TODO: The AdProxy and DiscProxy components of the SNAC router could use ULD, and the device itself can host a ULD server.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="domain-name-reservation-considerations">
      <name>Domain Name Reservation Considerations</name>
      <t>The considerations set out in <xref target="RFC6762"/> for handling of names within the ".local." domain continue to apply.
Name resolution APIs and libraries <bcp14>SHOULD</bcp14> continue to recognize .local names as special
and <bcp14>SHOULD NOT</bcp14> send queries for these names to their configured (unicast) caching DNS server,
unless that server is also the ULD server for the link in question.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Allocate <tt>&lt;uld-service-name&gt;</tt>, "_uld" is preferred</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6763">
          <front>
            <title>DNS-Based Service Discovery</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document specifies how DNS resource records are named and structured to facilitate service discovery. Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6763"/>
          <seriesInfo name="DOI" value="10.17487/RFC6763"/>
        </reference>
        <reference anchor="RFC6762">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="RFC9665">
          <front>
            <title>Service Registration Protocol for DNS-Based Service Discovery</title>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>The Service Registration Protocol (SRP) for DNS-based Service Discovery (DNS-SD) uses the standard DNS Update mechanism to enable DNS-SD using only unicast packets. This makes it possible to deploy DNS-SD without multicast, which greatly improves scalability and improves performance on networks where multicast service is not an optimal choice, particularly IEEE 802.11 (Wi-Fi) and IEEE 802.15.4 networks. DNS-SD Service registration uses public keys and SIG(0) to allow services to defend their registrations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9665"/>
          <seriesInfo name="DOI" value="10.17487/RFC9665"/>
        </reference>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="I-D.ietf-dnssd-advertising-proxy">
          <front>
            <title>Advertising Proxy for DNS-SD Service Registration Protocol</title>
            <author fullname="Stuart Cheshire" initials="S." surname="Cheshire">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Ted Lemon" initials="T." surname="Lemon">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   An Advertising Proxy advertises the contents of a DNS zone, for
   example maintained using the DNS-SD Service Registration Protocol
   (SRP), using Multicast DNS.  This allows legacy clients to discover
   services registered with SRP using Multicast DNS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnssd-advertising-proxy-06"/>
        </reference>
        <reference anchor="RFC8766">
          <front>
            <title>Discovery Proxy for Multicast DNS-Based Service Discovery</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document specifies a network proxy that uses Multicast DNS to automatically populate the wide-area unicast Domain Name System namespace with records describing devices and services found on the local link.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8766"/>
          <seriesInfo name="DOI" value="10.17487/RFC8766"/>
        </reference>
        <reference anchor="RFC7084">
          <front>
            <title>Basic Requirements for IPv6 Customer Edge Routers</title>
            <author fullname="H. Singh" initials="H." surname="Singh"/>
            <author fullname="W. Beebee" initials="W." surname="Beebee"/>
            <author fullname="C. Donley" initials="C." surname="Donley"/>
            <author fullname="B. Stark" initials="B." surname="Stark"/>
            <date month="November" year="2013"/>
            <abstract>
              <t>This document specifies requirements for an IPv6 Customer Edge (CE) router. Specifically, the current version of this document focuses on the basic provisioning of an IPv6 CE router and the provisioning of IPv6 hosts attached to it. The document also covers IP transition technologies. Two transition technologies in RFC 5969's IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) and RFC 6333's Dual-Stack Lite (DS-Lite) are covered in the document. The document obsoletes RFC 6204.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7084"/>
          <seriesInfo name="DOI" value="10.17487/RFC7084"/>
        </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="RFC7858">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="2016"/>
            <abstract>
              <t>This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS. Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626. In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t>
              <t>This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7858"/>
          <seriesInfo name="DOI" value="10.17487/RFC7858"/>
        </reference>
        <reference anchor="RFC8765">
          <front>
            <title>DNS Push Notifications</title>
            <author fullname="T. Pusateri" initials="T." surname="Pusateri"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>The Domain Name System (DNS) was designed to return matching records efficiently for queries for data that are relatively static. When those records change frequently, DNS is still efficient at returning the updated results when polled, as long as the polling rate is not too high. But, there exists no mechanism for a client to be asynchronously notified when these changes occur. This document defines a mechanism for a client to be notified of such changes to DNS records, called DNS Push Notifications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8765"/>
          <seriesInfo name="DOI" value="10.17487/RFC8765"/>
        </reference>
        <reference anchor="RFC8490">
          <front>
            <title>DNS Stateful Operations</title>
            <author fullname="R. Bellis" initials="R." surname="Bellis"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <author fullname="T. Pusateri" initials="T." surname="Pusateri"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a new DNS OPCODE for DNS Stateful Operations (DSO). DSO messages communicate operations within persistent stateful sessions using Type Length Value (TLV) syntax. Three TLVs are defined that manage session timeouts, termination, and encryption padding, and a framework is defined for extensions to enable new stateful operations. This document updates RFC 1035 by adding a new DNS header OPCODE that has both different message semantics and a new result code. This document updates RFC 7766 by redefining a session, providing new guidance on connection reuse, and providing a new mechanism for handling session idle timeouts.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8490"/>
          <seriesInfo name="DOI" value="10.17487/RFC8490"/>
        </reference>
        <reference anchor="I-D.ietf-dnssd-tsr">
          <front>
            <title>Multicast DNS conflict resolution using the Time Since Received (TSR) EDNS option</title>
            <author fullname="Ted Lemon" initials="T." surname="Lemon">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document specifies a new conflict resolution mechanism for DNS,
   for use in cases where the advertisement is being proxied, rather
   than advertised directly, e.g. when using a combined DNS-SD
   advertising proxy and SRP registrar.  A new EDNS option is defined
   that communicates the time at which the set of resource records on a
   particular DNS owner name was most recently updated.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnssd-tsr-03"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-snac-simple">
          <front>
            <title>Automatically Connecting Stub Networks to Unmanaged Infrastructure</title>
            <author fullname="Ted Lemon" initials="T." surname="Lemon">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Jonathan Hui" initials="J." surname="Hui">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="6" month="May" year="2026"/>
            <abstract>
              <t>   This document describes a set of practices for connecting stub
   networks to adjacent infrastructure networks.  This is applicable in
   cases such as constrained (Internet of Things) networks where there
   is a need to provide functional parity of service discovery and
   reachability between devices on the stub network and devices on an
   adjacent infrastructure link (for example, a home network).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-snac-simple-10"/>
        </reference>
        <reference anchor="RFC6105">
          <front>
            <title>IPv6 Router Advertisement Guard</title>
            <author fullname="E. Levy-Abegnoli" initials="E." surname="Levy-Abegnoli"/>
            <author fullname="G. Van de Velde" initials="G." surname="Van de Velde"/>
            <author fullname="C. Popoviciu" initials="C." surname="Popoviciu"/>
            <author fullname="J. Mohacsi" initials="J." surname="Mohacsi"/>
            <date month="February" year="2011"/>
            <abstract>
              <t>Routed protocols are often susceptible to spoof attacks. The canonical solution for IPv6 is Secure Neighbor Discovery (SEND), a solution that is non-trivial to deploy. This document proposes a light-weight alternative and complement to SEND based on filtering in the layer-2 network fabric, using a variety of filtering criteria, including, for example, SEND status. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6105"/>
          <seriesInfo name="DOI" value="10.17487/RFC6105"/>
        </reference>
        <reference anchor="RFC7788">
          <front>
            <title>Home Networking Control Protocol</title>
            <author fullname="M. Stenberg" initials="M." surname="Stenberg"/>
            <author fullname="S. Barth" initials="S." surname="Barth"/>
            <author fullname="P. Pfister" initials="P." surname="Pfister"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document describes the Home Networking Control Protocol (HNCP), an extensible configuration protocol, and a set of requirements for home network devices. HNCP is described as a profile of and extension to the Distributed Node Consensus Protocol (DNCP). HNCP enables discovery of network borders, automated configuration of addresses, name resolution, service discovery, and the use of any routing protocol that supports routing based on both the source and destination address.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7788"/>
          <seriesInfo name="DOI" value="10.17487/RFC7788"/>
        </reference>
        <reference anchor="I-D.ietf-dnssd-srp-replication">
          <front>
            <title>Automatic Replication of DNS-SD Service Registration Protocol Zones</title>
            <author fullname="Ted Lemon" initials="T." surname="Lemon">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Abtin Keshavarzian" initials="A." surname="Keshavarzian">
              <organization>Google</organization>
            </author>
            <author fullname="Jonathan Hui" initials="J." surname="Hui">
              <organization>Google</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document describes a protocol that can be used for ad-hoc
   replication of a DNS zone by multiple servers where a single primary
   DNS authoritative server is not available and the use of stable
   storage is not desirable.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnssd-srp-replication-02"/>
        </reference>
      </references>
    </references>
    <?line 271?>

<section anchor="local-zone">
      <name>Choice of Local Domain</name>
      <t>To make ULD a drop-in replacement for mDNS, a client querying a ULD server must see the same records it would have seen via mDNS, and a device advertising services via the ULD server must be discoverable as if it was advertising those services via mDNS. In other words, the ULD zone must have the same semantics as the ".local." namespace for that link.</t>
      <t>Indeed, when users or applications reference names in .local, their intent is generally semantic: to find or resolve services on the local link, not to trigger the use of the Multicast DNS protocol specifically. Because of this, the intended adoption path for ULD is for resolver libraries to use it transparently as the resolution mechanism for .local when a ULD server is available, requiring no changes to most applications.</t>
      <t>So while a new locally-served special-use domain could be defined for ULD on the wire, this would create two namespaces with identical content and semantics, and would require implementations and libraries to map between them. It would also contradict the insight that .local is about semantics rather than implementation, further discouraging the intended adoption path. Instead, ULD directly uses the .local zone defined by mDNS.</t>
    </section>
    <section anchor="why-ad-hoc">
      <name>Rationale for Supporting Ad-Hoc Servers</name>
      <t>From the point of view of a ULD client, the simplest deployment would be one where the network's DNS resolver also provides ULD. The client already sends all DNS queries to this resolver, so queries for names in .local could simply be handled alongside all other queries at the same endpoint. Many real-world networks are in fact structured in a way that would support this: In home networks, the CE Router <xref target="RFC7084"/> typically acts as a DNS forwarder, DHCP server, and IPv6 router for the local link. The same architecture extends to many small and medium enterprise networks, where a single site gateway commonly provides these services across multiple network segments (VLANs), making it a natural deployment point for ULD across the entire site.</t>
      <t>However, adding ULD support to existing network infrastructure requires firmware updates to devices such as CE routers and site gateways, which may not happen quickly across the installed base. Meanwhile, SNAC routers <xref target="I-D.ietf-snac-simple"/> and similar devices already implement all the components needed for ULD (SRP registrar, Advertising Proxy, Discovery Proxy) and are typically updated more frequently. To enable ULD deployment in the near term, it is therefore important to support a mode of operation where such devices can offer ULD service on an ad-hoc basis.</t>
      <t>Supporting ad-hoc ULD servers means that clients must be able to discover and select among them, directing .local queries to the ULD server while sending other DNS queries to the configured resolver. This adds complexity, but also enables deployment in networks where the DNS resolver is an off-link service that cannot provide ULD; this is a common configuration in more complex enterprise networks.</t>
    </section>
    <section anchor="convergence">
      <name>Convergence on a Preferred Server</name>
      <t>At first glance, multiple ULD servers on a link would seem to provide workable service through their mDNS proxies: Services registered on one server would become visible through others via the Advertising Proxy and Discovery Proxy. However, name conflict resolution breaks down in this configuration. If two clients were to register the same name on different servers, both SRP servers would accept the registration, and the resulting conflict would only manifest at the mDNS layer, where it may persist unresolved or be resolved silently and incorrectly, but in both cases without feedback to either client.</t>
      <t>This can be addressed either through server-to-server replication of registrations <xref target="I-D.ietf-dnssd-srp-replication"/>, or by having all clients converge on the same server — that is, all clients independently select the same server using a deterministic priority mechanism. ULD takes the latter approach: since its target deployment state is a stable infrastructure server per link, the added complexity of replication is not warranted.</t>
      <t>Convergence also needs to be maintained over time: Ad-hoc servers in particular can appear and disappear at any time, and an infrastructure server may become available after clients have already begun using an ad-hoc server. If discovery were a one-time process, clients performing it at different times could observe different sets of available servers and make different server choices, breaking convergence. Therefore, discovery of ULD servers must be an ongoing process: Clients need to monitor the availability of their chosen server, discover newly available servers, and migrate to a higher-priority server when one appears.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA519/ZbbRpbf/3yKSuvkTPeapD4syXJ71jM9ammts/pKd3tn
5yTZMUgUSaxAgAuA3aJl5+Qh8gB5ljxKniT3dz+qCiAp2ek5Y3WDQKHq1v2+
v1ucTCajruhKf+5O3jf1bZEX1dK9rudZ6X6sinnWdu7y7fXk+tJd++a2mHtX
V+5VtWjok2Y777aNPxlls1njb2kIe0QGuCzaeX3rm93JaJ51flk3u3PXdvlo
u8np7/bcPf3m6aPRKK/nVbamKeRNtugmhe8Wk7xq23yyLfNJiVu7UbudrYu2
Leqq223o3lcvbl6Oqu165pvzEYY7H83rqvVVu6WBF1nZ+hFN6etR1viMbn97
M7qrmw/Lpt5uzrGm68vRB7+ja/n5yE30Cv2ypt/0Av758fXl6NZXWxrfud7T
zslM/krDgmr/hA/p6jorSloLFvBnrGVaN0u6nDXz1blbdd2mPb9/HzfhSnHr
p3bTfVy4P2vqu9bf5+fv451Ft9rO4pPy93Rer+Weyd3y/iHCjUbZtlvVDVZH
wzi32Jal0PnG5+61X9cVX6c3Z1Xxc9YRbc/dxWZTetrhOX/mZTFrX5Z19efF
drn1ePNof8x/zpq285W73vimJHL81qE/tPrAnzN8LKNXdbOmh26J6EW1iH+M
ptPpaDSZTFw2I/7L5t1oRJsReDNwnNswM/vWtZ7+JmZc+/mK5tKuW3e38o2f
7dyqbrvWzbPK5fqcy6rcZTn91hWtp2d52BY8T3e9eu8q34GLpu56O1+Fx3Y8
yMy7vK6827bghjfbsgvy407BVWdED/w17r0GN6eP39H+DmXuyi8LrBd0dCSn
XT2vS3d6ffWex8TgU3ezKloaYr5d+6pzuV8UFU39iEi6U2LsM5qJLdJ1q6xz
RP0ZP0YTotFdoy9ucGd8mKbwcafLqNxFshL+ZOp+CKTdEh0zSBG/iEjc1QmF
MUIgfkrubuVdyVMm3vjgaEVF48uduy0yt9UlYYIYAAS+WxXEWw2YqsI8iqrz
TU2slc1KpalsNy8Tk2KiCTOtizwv/Wh0j5iza+qc9BoR+hhrncrmnLlPn/7T
1cvnpMO+/vVXR7TP3NJXfWZzxLy9nU4XjL/TNUf+aqfur7wg5QMQkhfTkf4F
qTwtiP7ZRhUNPjjIc2GWj379dUx0IdEgucGS8DnmDVpvSIFnJRhn7Ulr5Dxx
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
SGCmX+M1Hf0/jQYgT75zAAA=

-->

</rfc>
