<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" consensus="true"
     category="std" docName="draft-ietf-dnssd-advertising-proxy-03" ipr="trust200902"
     obsoletes="" updates="" submissionType="IETF" xml:lang="en"
     tocInclude="true" tocDepth="3" symRefs="true" sortRefs="false">

  <front>
    <title abbrev="Advertising Proxy for DNS-SD SRP">Advertising Proxy for DNS-SD Service Registration Protocol</title>

    <author initials="S." surname="Cheshire" fullname="Stuart Cheshire">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino</city>
          <region>California</region>
          <code>95014</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 (408) 996-1010</phone>
        <email>cheshire@apple.com</email>
      </address>
    </author>

    <author initials="T." surname="Lemon" fullname="Ted Lemon">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino</city>
          <region>California</region>
          <code>95014</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 (408) 996-1010</phone>
        <email>elemon@apple.com</email>
      </address>
    </author>

    <date year='2023' month='July' day='28'/>

    <area>INT</area>
    <workgroup>DNSSD</workgroup>

    <keyword>Multicast DNS</keyword>
    <keyword>DNS-Based Service Discovery</keyword>

    <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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dnssd-wg.github.io/draft-ietf-dnssd-advertising-proxy/draft-ietf-dnssd-advertising-proxy.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dnssd-advertising-proxy/"/>.
      </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/dnssd-wg/draft-ietf-dnssd-advertising-proxy"/>.</t>
    </note>
  </front>

  <middle>
    <section numbered="true">
      <name>Introduction</name>
      <t>
	DNS-Based Service Discovery
	<xref target="RFC6763"/>
	<xref target="I-D.cheshire-dnssd-roadmap"/>
	was designed to facilitate Zero Configuration IP Networking
	<xref target="RFC6760"/>
	<xref target="ZC"/>.<br/>

	When used with Multicast DNS
	<xref target="RFC6762"/>
	with ".local" domain names
	<xref target="RFC6761"/>
	this works well on a single link (a single broadcast domain).
      </t>

      <t>However, in some applications, multicast may be a poor choice for advertising. Most
      obviously, multicast DNS is constrained to a single network link, and for example in the
      case of stub networks <xref target="I-D.ietf-snac-simple"/>, service discovery
      for devices on the stub network by devices on the infrastructure network, or vice versa,
      requires some kind of proxy.</t>

      <t>Also, even in single-link use cases, multicast isn't always the best choice. On some
      network media, multicast is inefficient and/or unreliable. Also, mDNS-based DNS-SD requires
      that each host providing services receive and process all mDNS service discovery messages,
      whether or not they are relevant to that host (for example, irrelevant service
      advertisements and queries for services not provided by the host). For power-constrained
      hosts, keeping a radio listening all the time for these messages is prohibitively expensive.</t>

      <t>Ideally, in situations where multicast DNS is not the right choice, an obvious
      alternative is to use regular unicast DNS <xref target="RFC1035"/>. Unfortunately, this
      isn't always possible: the DNS protocol relies on a delegation hierarchy, and on
      per-network DNS resolvers.</t>

      <t> The operational model for DNS service is that the infrastructure serving each network
      link provides a DNS resolver, and all DNS queries go to that resolver. Using unicast
      DNS for discovery of services through a stub network proxy, for example, would require
      that the stub network proxy be able to somehow register with the infrastructure DNS
      service. No standard mechanism for doing this currently exists.</t>

      <t>This document describes a new type of proxy, an Advertising Proxy, which can be used to
      address some of these issues.  An Advertising Proxy advertises the contents of some DNS
      zone (or zones) <xref target="RFC1034"/> to one or more network links using multicast
      DNS. This allows the DNS protocol, for example using the Service Registration Protocol
      registrar function <xref target="I-D.ietf-dnssd-srp"/>, to be used by servers to
      advertise their services, while using the permissionless model of multicast DNS to make those
      services discoverable to devices on links supported by the Advertising Proxy.</t>

      <t>In its simplest realization, an advertising proxy monitors the contents of a DNS
      zone. When a new DNS resource record is added to the zone, the advertising proxy rewrites
      that record, replacing the domain name of the zone with ".local," and advertises the
      result using mDNS on one or more network links.</t>

      <t>However, more commonly, the advertising proxy function is combined with an SRP
      registrar. In this case, the SRP registrar and the advertising proxy service cooperate to
      minimize name collisions. Such a service may or may not actually respond to DNS
      queries.</t>

      <t>When an Advertising Proxy is implemented as part of an SRP
      registrar (a DNS authoritative server that implements Service Registration Protocol), an
      SRP requestor can send registration requests for any valid DNS records to the SRP
      registrar.  SRP supports updating the resource record types most commonly used by DNS-SD:
      the PTR, SRV and TXT records that describe a DNS-SD service <xref target="RFC6763"/>, and
      the A and AAAA records that give the IPv4 and/or IPv6 addresses of the host on which that
      service can be reached.</t>

      <t>Notionally, SRP service updates a DNS zone. The context in which this DNS zone exists
      is important in discussing the advertising proxy, however. If the DNS zone being
      maintained by SRP is part of the network infrastructure, there is no need for an
      advertising proxy. The reason for this is that we can assume
      that all DNS-SD implementations will discover and use infrastructure provided service
      discovery using the DNS protocol if it is available. Since no DNS-SD implementation
      relies solely on multicast DNS, providing an mDNS proxy for an existing DNS-based DNS-SD
      infrastructure service is unnecessary.</t>

      <t>However, it's also possible for the DNS zone that SRP manages to be provided by some
      opportunistic service, such as a stub router <xref target="I-D.ietf-snac-simple"/>. A
      stub router may need to allow devices on the stub network to be discovered from the
      infrastructure link to which it is connected. If the stub router is unable to integrate
      its SRP-maintained DNS zone with the infrastructure, some other means of providing this
      service must be provided.</t>

      <t>One way of providing this service discovery functionality is through an Advertising
      Proxy. Because the advertising proxy is advertising the content of the SRP-maintained DNS
      zone using mDNS, there is no need for integration with the infrastructure DNS service:
      services registered in the SRP DNS zone will be discoverable through mDNS.</t>

      <t>An authoritative DNS zone that is not managed as part of the Advertising Proxy really
      can only exist as an infrastructure service. If it exists as an infrastructure service,
      the right way to make it available is to make it discoverable using the mechanisms
      described in <xref target="RFC6763" section="11" sectionFormat="of"/>. Since no use case
      exists for this model of Advertising Proxy, we do not attempt to specify how such an
      Advertising Proxy could be made to work.</t>

      <t>Similarly, an Advertising Proxy that, as part of its functioning, answers unicast DNS
      queries, would ideally be included in the DNS service provided by the infrastructure, and
      in this case the Advertising Proxy function would not be necessary. However, because in
      this case the Advertising Proxy functionality is superfluous, discussion of this topic is
      out of scope for this document.</t>

      <t>Therefore, this document limits itself to describing how to implement an Advertising
      Proxy that manages service registrations using the Service Registration Protocol. We do
      talk about how the Service Registration Protocol database should be advertised, but not
      how it can be integrated into an existing DNS infrastructure.</t>

      <section numbered="true">
	<name>Conventions and Terminology Used in This Document</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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
          when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>

    <section numbered="true">
      <name>Advertising Proxy</name>

      <t>An Advertising Proxy advertises the contents of one or more DNS zones that are
      maintained using the Service Registration Protocol. Such a service consists of three
      parts, four of which are required, one of which is optional. These are:</t>

      <ul spacing="compact">
	<li>
	  The mDNS Registrar function
	</li>
	<li>
	  The Advertising Proxy function
	</li>
	<li>
	  <t>The SRP registrar function, which includes:</t>
	  <ul spacing="compact">
	    <li>The SRP protocol implementation</li>
	    <li>The zone database that is updated using the SRP protocol</li>
	  </ul>
	</li>
	<li>
	  <t>The DNS authoritative server function, which may include any or all of:</t>
	  <ul spacing="compact">
	    <li>Authoritative DNS service for all zones managed by SRP</li>
	    <li>Discovery Proxy service for all links managed by the Advertising Proxy</li>
	    <li>Full-service DNS resolver or DNS Proxy</li>
	  </ul>
	</li>
      </ul>

      <t>These functions are somewhat interdependent, so while we will discuss each separately,
      there is no way to completely separate them. After discussing each function, we will
      describe the operation of the system as a whole.</t>

      <section>
	<name>The mDNS Registrar function</name>

	<t>The mDNS registrar function is an mDNS responder, as described in <xref
	target="RFC6762"/>.  We use the term "mDNS registrar" rather than simply "mDNS
	responder" to emphasize the specific function of advertising mDNS records, as opposed to
	browsing or resolving services.</t>

	<t>If Discovery Proxy authoritative resolution service is being offered by the Advertising Proxy,
	the mDNS registrar MUST support querying for services and records on the link that are not
	advertised by the Advertising Proxy.</t>

	<t>The mDNS Registrar MUST implement the Time Since Received <xref target="I-D.tllq-tsr"/> record.
	This makes it possible to set up redundant Advertising Proxies that use SRP replication
	<xref target="I-D.ietf-dnssd-srp-replication"/> to maintain a common set of SRP zones and advertise
	them without SRP Updates creating conflicts. Such conflicts can occur when, for example, the IP
	address of a host changes and it sends an SRP update. The new IP address conflicts with the old
	address, which is being advertised. Without TSR, the old address will win the conflict, resulting
	in stale data being advertised. With TSR, the newer data supersedes the old data.</t>
      </section>

      <section>
	<name>The Advertising Proxy function</name>

	<t>The Advertising Proxy function mediates between an mDNS registrar and the SRP zone
	database. Whenever a record is tentatively added to the SRP zone database, the
	Advertising Proxy registers it with the mDNS registrar. If this registration succeeds,
	the registration is finalized; otherwise it is rejected. The usual reason for rejection
	would be that the name is already taken. When records expire in the SRP zone database,
	the Advertising Proxy function removes those records from its mDNS advertisement.</t>

	<t>Each SRP Update includes a KEY record that is applicable to every name claimed in the
	Update. SRP Update also includes an EDNS0 Update Lease option which may include a
	KEY-LEASE value that's longer than the LEASE value. In this case, the Advertising Proxy
	SHOULD advertise the KEY record for the duration of the KEY-LEASE, even if the other
	records are removed when the LEASE value has expired. The Advertising Proxy MAY
	advertise the KEY record even if the LEASE and KEY-LEASE values are the same, or the
	KEY-LEASE valid isn't specified.</t>

	<t>Records advertised by the Advertising Proxy all appear in the .local
	domain. Consequently, these records MUST be rewritten in somewhat the opposite of
	the way a Discovery Proxy <xref target="RFC8766" section="5.5" sectionFormat="of"/>
	rewrites them.</t>

	<t>Each zone managed by the SRP registrar function must have a name. In some cases, SRP
	requestor will discover the name using the Domain Enumeration process described in <xref
	target="RFC6763" section="11" sectionFormat="of"/>. However in most cases, since
	advertising proxies aren't integrated into infrastructures, the registration domain used
	by the SRP requestor will be the 'default.service.arpa.' domain. The SRP registrar may
	rewrite incoming registrations into a different zone, or retain the
	'default.service.arpa.' zone name.</t>

	<t>In either case, before advertising a tentative record, the Advertising Proxy function
	first rewrites the record. First, the owner name is transformed by replacing the zone
	name with '.local'. Secondly, for any RR that contains a domain name, that domain is
	transformed in the same way.</t>

	<t>In some cases, the SRP requestor may register one or more address records for
	addresses that aren't valid or reachable on some link on which the advertising proxy
	could advertise them. The Advertising Proxy function MAY filter out such records
	entirely, or MAY explicitly advertise such records only on the link(s) on which they are
	reachable. This is optional because it requires the Advertising Proxy function to have
	enough information to make such a determination, which may not always be the case.</t>

	<t>Where such determinations are possible, the advertising proxy SHOULD NOT advertise an
	IPv4 or IPv6 link-local address, or any other media-specific link-scoped address, on any
	link other than the link on which the SRP registration was received.</t>
      </section>

      <section anchor="registrar">
	<name>The SRP Registrar function</name>

	<t>The SRP registrar function comprises two components: the SRP protocol and the zone
	database (or databases). The details of the SRP protocol are described in
	<xref target="I-D.ietf-dnssd-srp"/>.
	</t>

	<t>In the context of an Advertising Proxy, the SRP protocol will be updating one or more
	DNS zones. It's possible, for example, for an SRP registrar to provide SRP service on
	more than one link, and for each link to be treated as a separate DNS zone. SRP
	requestors may not know what zone they are updating: they may be using
	'default.service.arpa' as a placeholder rather than discovering the name of the zone to
	update. In this case, updates for 'default.service.arpa' will be rewritten into the name
	of the zone specific to a particular link. Note that this separation is not required,
	but is possible and may be desirable.</t>

	<t>In an Advertising Proxy, when an SRP update is received, it is first validated
	according to the SRP specification. It is then checked for uniqueness in the context of
	SRP, using the SRP first-come, first-served mechanism.</t>

	<t>There are two additional opportunities for conflicts with an advertising proxy, however.
	First, there may be more than one DNS zone that is being advertised by an advertising proxy.
	Because mDNS uses only the leftmost label of the domain name in its advertisements, there is no
	way to differentiate between two fully-qualified domain names with identical leftmost labels
	when advertising them using mDNS. So for example foo.bar.example.com and foo.baz.example.com
	would appear identical when discovered via mDNS.</t>

	<t>Additionally, we can consider the set of names advertised by mDNS on a particular
	link as being equivalent to a DNS zone. In that sense, if a name being advertised by
	mDNS on a particular link has the same leftmost label as a name registered in an SRP
	zone (e.g., foo.local and foo.bar.example.com), there is no way to disambiguate.</t>

	<t>mDNS does provide a means for detecting name conflicts. In principle, we could check
	with mDNS before accepting an SRP registration, for example. However, this requires
	treating mDNS as a sort of black box, when in fact it's a dynamic process.  Relying on
	mDNS conflicts for this purpose works very poorly in practice. Consequently, maintenance
	of each SRP zone should be handled independently of other SRP zones, and independently
	of mDNS. The presence of names in any of these zones that are ambiguous when queried
	over mDNS MUST NOT be treated as a conflict for the purposes of maintaining these
	zones.</t>

	<t>In order to deal with conflicts, then, when an mDNS conflict is seen, the advertising
	proxy withdraws the conflicting name. Because such conflicts can be temporary, the
	advertising proxy MUST attempt to re-advertise the conflicting name from time to
	time. [I suggest every ten minutes, what does WG think?]</t>
      </section>

      <section>
	<name>The DNS Authoritative Server function</name>

	<t>An Advertising Proxy SHOULD answer DNS queries for the zones it manages. This is not
	required because in some cases it may not be possible. The zones it manages may not have
	names in the DNS hierarchy, for example, so even if they have locally-assigned names,
	answering authoritatively for these names may be problematic.</t>

	<t>The primary purpose of the Advertising Proxy is to support DNS Service Discovery.  In
	some use cases where Advertising Proxy is desirable, the mDNS function can only work on
	some links, while unicast DNS is the only option on others. This is the case, for example,
	for an Advertising Proxy operating on a stub network router.</t>

	<t>In such a situation, devices on the infrastructure link will do service discovery
	using mDNS. However, devices on the stub network link may not be able to use mDNS, or it
	may be preferable that they do not.  In this case, the Advertising Proxy will need to be
	able to provide the same information that is provided on the infrastructure link through
	a DNS resolver, using the DNS protocol, or, ideally, DNS Push <xref target="RFC8765"/>.</t>

	<t>Any Advertising Proxy implementing this functionality MAY use the
	'default.service.arpa.' zone as a catch-all zone. A query to the 'default.service.arpa.'
	zone SHOULD return the same set of answers that would be returned by an mDNS query to
	the .local zone on a link served by the Advertising Proxy's mDNS registrar.</t>

	<t>When using the 'default.service.arpa.' zone for queries, all responses that reference
	link-specific domains MUST be rewritten to use 'default.service.arpa.' domain
	instead. This includes domain names in the resource record data. Because the Advertising
	Proxy is required to enforce name uniqueness across all the zones it manages, this
	should not result in any conflicts.</t>

	<section>
	  <name>Discovery Proxy</name>

	  <t>In order to fully support the ability to query the Advertising Proxy either with
	  mDNS or DNS, it is necessary to provide a Discovery Proxy <xref target="RFC8766"/>.
	  The Discovery Proxy provides answers for link-specific domains that represent each
	  of the links supported by the Advertising Proxy. These responses are combined with
	  responses from zones managed by SRP to produce a complete set of answers to any
	  query received by the Advertising Proxy over DNS or DNS Push.</t>

	</section>

	<section>
	  <name>Full Service Resolver</name>

	  <t>In the case of a stub network, the Advertising Proxy may appear to devices on the
	  stub network as an infrastructure service. This would mean that the DNS Listener on
	  port 53 (TCP and UDP) and port 853 (TLS) could be expected to receive queries for
	  arbitrary domain names, not just domain names for which the Advertising Proxy is
	  authoritative.</t>

	  <t>Resolution of such names may not be required for devices on the stub network. For
	  instance, if the stub network has only locally-provided IPv6 service using a ULA,
	  devices on the stub network will not be able to contact arbitrary devices on the
	  Internet anyway.</t>

	  <t>However, in cases where support for connecting to hosts outside of the scope of the
	  Advertising Proxy is needed, the Advertising Proxy will have to provide a full service
	  resolver (or a DNS Proxy <xref target="RFC5625"/>) in addition to its DNS
	  authoritative service and Discovery Proxy service. The details of how this is
	  configured are likely to be implementation-specific, and therefore outside the scope
	  of this document.</t>
	</section>
      </section>

      <section>
	<name>Operation</name>

	<section>
	  <name>Late Conflicts</name>

	  <t>It is possible for two mDNS responders to advertise conflicting records on the same
	  name, but, as a consequence of a network partition or multicast packet loss, for
	  neither server to immediately detect a conflict. When this happens, then at some later
	  time one or the other mDNS responder will notice the conflict, and begin the conflict
	  resolution process. The outcome of this process may be that the record advertised by
	  the Advertising Proxy loses. In this case, the Advertising Proxy MUST handle the conflict
	  as described in <xref target="registrar"/>.</t>

	</section>

	<section numbered="true">
          <name>No Text-Encoding Translation</name>

          <t>
            As with a Discovery Proxy
            <xref target="RFC8766"/>,
            an Advertising Proxy does no translation between
            text encodings
            <xref target="RFC6055"/>.
            Specifically, an Advertising Proxy does no
            translation between Punycode encoding
            <xref target="RFC3492"/>
            and UTF-8 encoding
            <xref target="RFC3629"/>,
            either in the owner name of DNS records or
            anywhere in the RDATA of DNS records
            (such as the RDATA of PTR records, SRV records, NS
            records, or other record types like TXT, where it is
            ambiguous whether the RDATA may contain DNS names).
            All bytes are treated as-is with no attempt at
            text-encoding translation.
            A server implementing DNS-based Service Discovery
            <xref target="RFC6763"/>
            will use UTF-8 encoding for its unicast DNS-based
            record registrations, which the Advertising Proxy
            passes through without any text-encoding
            translation to the Multicast DNS subsystem.
            Queries from peers on the configured multicast-capable
            interface are answered directly from the advertised data
            without any text-encoding translation.
          </t>
	</section>

	<section numbered="true">
          <name>No Support for Reconfirm</name>
          <t>
            For network efficiency,
            Multicast DNS
            <xref target="RFC6762"/>
            uses fairly long record lifetimes
            (typically 75 minutes).
            When a client is unable to reach
            a service that it discovered,
            Multicast DNS provides a "reconfirm"
            mechanism that enables the client
            to signal to the Multicast DNS subsystem
            that its cached data may be suspect,
            which causes the Multicast DNS subsystem
            to reissue queries, and remove the stale
            records if the queries are not answered.
          </t>
          <t>
            Similarly, when using unicast service discovery
            with a Discovery Proxy <xref target="RFC8766"/>,
            the DNS Push Notifications <xref target="RFC8765"/> protocol
            provides the RECONFIRM mechanism to signal that
            the Discovery Proxy should perform a local
            Multicast DNS reconfirm operation to
            re-verify the validity of the records.
          </t>
          <t>
            When an Advertising Proxy is used,
            to support legacy clients that only implement Multicast DNS,
            reconfirm operations have no effect.

            If a device uses unicast Service Registration Protocol
            <xref target="I-D.ietf-dnssd-srp"/>
            to register its services
            with a service registry with Advertising Proxy capability,
            and the device then gets disconnected from the network,
            the Advertising Proxy will continue to advertise
            those records until the registrations expire.

            If a client discovers the service instance using
            Multicast DNS and is unable to reach it,
            and uses a Multicast DNS reconfirm operation to re-verify
            the validity of the records, then
            the Advertising Proxy will continue
            to answer on behalf of the departed device
            until the record registrations expire.

            The Advertising Proxy has no reliable way
            to determine whether the additional Multicast DNS
            queries are due to a reconfirm operation,
            or due to other routine causes,
            like a client being rebooted,
            or disconnecting and then reconnecting to the network.

            The service registry has no reliable automatic way
            to determine whether a device that
            registered records has failed or disconnected from the network.
            Particularly with sleepy battery powered devices,
            the service registry does not know what active duty cycle
            any given service is expected to provide.
          </t>
          <t>
            Consequently, reconfirm operations are not supported
            with an Advertising Proxy using multicast DNS.
            In cases where use of the reconfirm mechanism
            is important, clients should be upgraded to use the unicast
            DNS Push Notifications <xref target="RFC8765"/> protocol's
            RECONFIRM message.
            This RECONFIRM message provides an unambiguous signal
            to the service registry that it may be retaining stale records.
            (A future update to the Service Registration Protocol document
            <xref target="I-D.ietf-dnssd-srp"/>
            will consider ways that this unambiguous signal
            can be used to trigger expedited removal of stale data.)
          </t>
	</section>
      </section>
    </section>

    <section numbered="true">
      <name>Security Considerations</name>
      <t>An Advertising Proxy may made data visible
      to eavesdroppers on the configured multicast-capable link(s).</t>
    </section>
    <section numbered="true">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

  </middle>

  <back>
    <displayreference target="I-D.cheshire-dnssd-roadmap" to="ROADMAP"/>
    <displayreference target="I-D.ietf-dnssd-srp" to="SRP"/>
    <displayreference target="I-D.ietf-dnssd-srp-replication" to="REPLICATION"/>
    <displayreference target="I-D.ietf-snac-simple" to="STUBNET"/>
    <displayreference target="I-D.tllq-tsr" to="TSR"/>

    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1034.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6760.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6761.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6762.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6763.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8765.xml"/>

        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dnssd-srp.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.tllq-tsr.xml"/>
      </references>

      <references>
        <name>Informative References</name>

        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3492.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5625.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6055.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7558.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8766.xml"/>

        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.cheshire-dnssd-roadmap.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dnssd-srp-replication.xml"/>
        <xi:include
            href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-snac-simple.xml"/>

        <reference anchor="ZC">
          <front>
            <title>Zero Configuration Networking: The Definitive Guide</title>
            <seriesInfo name="ISBN" value="0-596-10100-7"/>
            <author initials="S." surname="Cheshire"
		    fullname="Stuart Cheshire"/>
            <author initials="D. H." surname="Steinberg"
		    fullname="Daniel H. Steinberg"/>
            <date year="2005" month="December"/>
          </front>
          <refcontent>O'Reilly Media, Inc.</refcontent>
        </reference>

      </references>
    </references>

    <!--
	<section numbered="false">
	<name>Acknowledgments</name>
	<t>Thanks to <contact fullname="A Person"/>.</t>
	</section>
    -->

  </back>
</rfc>
