<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-dnssd-tsr-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="TSR EDNS option for mDNS">Multicast DNS conflict resolution using the Time Since Received (TSR) EDNS option</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-dnssd-tsr-01"/>
    <author fullname="Ted Lemon">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino</city>
          <code>California 95014</code>
          <country>United States of America</country>
        </postal>
        <email>mellon@fugue.com</email>
      </address>
    </author>
    <author fullname="Esko Dijk">
      <organization>IoTconsultancy.nl</organization>
      <address>
        <postal>
          <city>Utrecht</city>
          <country>Netherlands</country>
        </postal>
        <email>esko.dijk@iotconsultancy.nl</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>int</area>
    <workgroup>dnssd</workgroup>
    <keyword>mDNS</keyword>
    <keyword>TSR</keyword>
    <keyword>conflict resolution</keyword>
    <keyword>EDNS</keyword>
    <keyword>DNS</keyword>
    <abstract>
      <?line 55?>

<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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://datatracker.ietf.org/doc/html/draft-ietf-dnssd-tsr"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-dnssd-tsr/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG 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-tsr"/>.</t>
    </note>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Unlike the Domain Name System <xref target="RFC1034"/>, with its authority servers and delegation of authority,
Multicast DNS has no single source of authority. Because of this, mDNS has a mechanism, conflict resolution
(<xref section="9" sectionFormat="of" target="RFC6762"/>) for detecting and fixing conflicts in mDNS advertisements.</t>
      <t>The current goal of mDNS conflict resolution is to prevent a newly advertised service from taking the place of
an existing service with the same name that is already being advertised. This goal, however, assumes that the
entity advertising an mDNS service is in fact authoritative for that service. In the case of an advertising
proxy <xref target="I-D.ietf-dnssd-advertising-proxy"/>, this is not the case: the source of truth for the service
being advertised is an SRP <xref target="RFC9665"/> requester.</t>
      <t>On a link with more than one SRP registrar, an SRP requester may register with one SRP registrar, and then subsequently
update its registration on a different SRP registrar. Both SRP registrars may be acting as advertising proxies. If so, the
original server may still be advertising the old SRP registration using mDNS. If the information in the new SRP
registration is identical to that in the old registration, this is often not a problem. However if some information has
changed (e.g., a new IP address has been added, or a TXT record updated), then the new registration will be seen to
be in conflict with the old registration. In addition, the method used in mDNS to detect conflicts can sometimes produce apparent
conflicts where no actual conflict exists because of the way records in mDNS packets are marshalled.</t>
      <t>In the case of such an apparent conflict, the current behavior of mDNS is for the older (stale) registration to win, and the
newer (current) information to be discarded. This behavior, which is entirely correct for services that are
advertising on their own behalf, is exactly wrong when a service registration is being proxied.</t>
      <section anchor="current-behavior">
        <name>Current Behavior</name>
        <t>When a new service is to be advertised, the registrant (the entity requesting the registration) typically registers the
service with a central mDNS registrar on the host on which it is running.  This mDNS registrar may have an internal
database of services already registered, and may detect a conflict with one of those services. This can be true whether
the conflicting database entry is data for which the mDNS registrar is authoritative, or data it has received via mDNS and
cached.</t>
        <t>In the case of such a conflict, no network transaction is required: the mDNS registrar detects it locally. It
addresses the conflict in one of two ways. The first alternative is that the mDNS registrar will report the
conflict to the registrant as an error, which it must fix. Alternatively, if the registrant has indicated that
the mDNS registrar should automatically choose a new name for it in case of conflict, the mDNS registrar does so
automatically, without notifying the registrant.</t>
        <t>Once any locally-detectable conflicts have been resolved, the mDNS registrar probes (see <xref section="8.1" sectionFormat="of" target="RFC6762"/>)
local network to see if any other host has already registered a service the conflicts with the proposed new
service. If such a service is present on the network, the mDNS registrar follows the same process previously
described, either reporting the error to the registrant or automatically choosing a new name.</t>
        <t>The effect of this approach is that generally whichever registrant first registers a service under a particular name
wins. If a registrant comes along later and registers the same service with conflicting information, the newcomer’s
information is rejected.</t>
      </section>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>The current behavior works well for registrants registering on their own behalf. However, for example in the case of
an SRP registrar, it works poorly: an SRP registrar acting as an advertising proxy publishes the contents of its
DNS zone using mDNS. The sources of truth for this information are the SRP requesters,
not the SRP registrar itself. The SRP registrar in this case acts as a proxy for the SRP requesters.</t>
        <t>In the case of an advertising proxy publishing records originating from an SRP Update, what we want to see published
is not the oldest information, but the newest.
When the SRP requester is able to continue registering with the same SRP registrar, this works well: stale
data is automatically removed and replaced with current data. However, if more than one SRP registrar is
available, the SRP requester may wind up sending its SRP Updates to a different SRP registrar. This can happen as a result of
a network partition, or in cases where the SRP registrar is advertised on a anycast address.</t>
        <t>When the SRP requester registers with a different SRP registrar, the behavior we get with the current mDNS conflict
resolution approach is that the SRP requester will be given a new name, and both the old (stale) advertisement (A)
and the new (more recent) advertisement (A’) will be discoverable as separate services.</t>
        <t>This creates a new burden on consumers of such services: they need to parse through the whole list of services of
their type, using metadata from the TXT record in the service instance data, if possible, to determine that
service A and service A’ are the same service. If no such information is present in the TXT record, the only way
to determine that one of these two registrations is stale is to attempt to use the advertised service, which may
no longer be reachable if, for example, the change that produced the conflict was an IP address change. When the
SRP lease for the stale service expires, that service's advertisement will be removed, and the service will no
longer be discoverable under the original name, even if the IP address hasn't changed.</t>
        <t>This document proposes an enhancement to the current conflict resolution algorithm for mDNS, which allows an mDNS
proxy to report the time at which it received the registration for DNS records it is newly advertising, and the source from which
it was received. This is done using a new Time Since Received (TSR) EDNS option, of which there must be exactly one
per name being advertised by the mDNS proxy.</t>
      </section>
      <section anchor="conventions-terms-and-definitions">
        <name>Conventions, Terms and Definitions</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?>

<dl>
          <dt><strong>mDNS registrar</strong></dt>
          <dd>
            <t>an mDNS <xref target="RFC6762"/> implementation on a host that accepts local requests for advertising/registering DNS records from
one or more registrants. This could for example be an mDNS daemon process running in an operating system, accepting
API calls from local processes to register or update DNS records for that process.</t>
          </dd>
          <dt><strong>mDNS registrant</strong></dt>
          <dd>
            <t>an entity or software process requesting a DNS name to be advertised by the (local) mDNS registrar.</t>
          </dd>
          <dt><strong>mDNS proxy</strong></dt>
          <dd>
            <t>a host that runs an mDNS registrar and at least one mDNS registrant acting as a proxy. That is, it needs to advertise
mDNS records on behalf of one or more entities not located on the host itself.
The advertising proxy <xref target="I-D.ietf-dnssd-advertising-proxy"/> is an example of an mDNS proxy.</t>
          </dd>
          <dt><strong>SRP requester</strong></dt>
          <dd>
            <t>a client that uses the Service Registration Protocol (SRP) <xref target="RFC9665"/> to send an SRP Update to an SRP registrar.</t>
          </dd>
          <dt><strong>SRP registrar</strong></dt>
          <dd>
            <t>a server that accepts SRP Updates sent by SRP requesters using the SRP <xref target="RFC9665"/>.
DNS records registered via SRP to an SRP registrar may then be advertised by mDNS using an advertising proxy
<xref target="I-D.ietf-dnssd-advertising-proxy"/> located on the same host.
In that case, the SRP registrar process acts as a registrant towards its local mDNS registrar process.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="tsrrr">
      <name>Time Since Received EDNS Option</name>
      <t>Each Time Since Received (TSR) EDNS option is applicable to exactly one DNS owner name. So all the records for that owner
name that appear in the answer, authority and/or additional sections of an mDNS message would be covered by a single TSR
option.</t>
      <t>The TSR EDNS option consists of three fields: the RR index (two byte integer in network
byte order), a key checksum (four bytes), and a time of registration (four bytes).</t>
      <t>The RR index is the number of the RR in the mDNS packet. Question RRs are not counted.  So if the message includes two
answer RRs, one authority RR and two additional RRs, an index of 0 would refer to the first answer, an index of 1 to the
second answer, and index of 2 to the single authority record, and so on. Questions are excluded because they have no
data associated with them, and so it makes no sense for them to have TSR records associated with them.</t>
      <t>If there is more than one record in the mDNS Message with the same owner name, only one TSR option is emitted for
that name, and it applies to every RR in the mDNS Message with that owner name. It is not possible in the
SRP protocol for two updates at two different times to contain records that apply to the same name: in such a
situation, the second update completely replaces the first, so all data in the first update is then rendered stale.</t>
      <t>The second field, the key checksum, is simple 32-bit checksum of the public key that the owner of the data (for example
the SRP requester) used to authenticate itself. The key checksum is computed by treating the key as a series of 32-bit
unsigned integers in network byte order, and adding these integers together to produce a 32-bit unsigned checksum.
Overflow is not considered. This checksum need not be cryptographically secure: mDNS messages are not authenticated, so
an attacker on the local link can always cause problems with mDNS by providing spurious responses. The purpose of
the checksum is simply to notice whether, for a specific owner name, two different authoritative sources have provided
information.</t>
      <t>The TSR time offset field contains the difference, in seconds, between the the time at which the TSR record is being
generated and the time of receipt for recorded for that owner name.</t>
      <t>The time of registration is represented in the mDNS message as a time in seconds relative to the time when the mDNS message
is sent. If this difference is greater than seven days (7 * 24 * 60 * 60), the mDNS registrar <bcp14>MUST</bcp14> use a value of seven days
rather than the larger value.  The relative time represented in the TSR option is converted to an absolute time when stored
in a cache or authority database on an mDNS registrar, and is converted to a relative time whenever an mDNS message is
generated from local data.</t>
    </section>
    <section anchor="mdns-registrar-behavior">
      <name>mDNS Registrar Behavior</name>
      <section anchor="locval">
        <name>Validating requested local RR registrations that include a TSR option</name>
        <t>When an mDNS registrant asks an mDNS registrar to register one or more records on an owner name, and provides TSR data
for that name, the mDNS registrar first checks to see if there are any records either in cache or from other local registrations
on that owner name. If no such data exists, the mDNS registrar puts the record(s) in this registration in the probing state.</t>
        <t>When such data exists, the registrar <bcp14>MUST</bcp14> check to see if it has TSR data for that owner name. If it does not, or if there
is TSR data on that name but the key checksum does not match, the registrar <bcp14>MUST</bcp14> treat this registration as a conflict
and return an appropriate error to the registrant.</t>
        <t>If such data exists and the key checksums match, there are three possibilities based on the known TSR time and the proposed TSR time:</t>
        <dl>
          <dt><strong>Known time is more recent</strong></dt>
          <dd>
            <t>In this case, the registrar <bcp14>MUST</bcp14> treat the new registration as stale, and return an indication to the
registrant that its registration is stale. This indication must be different than the conflict indication.</t>
          </dd>
          <dt><strong>Both times are the same</strong></dt>
          <dd>
            <t>In this case, the new record is added to the local registration database and put in the probing state.</t>
          </dd>
          <dt><strong>Proposed time is more recent</strong></dt>
          <dd>
            <t>In this case, all cached data on the name is discarded. The registrant for any existing locally-registered data is notified that
the data they have registered is stale, and the stale data is removed from the local registration database. The new data is
added and put in the probing state, and the TSR data is updated with the proposed TSR data.</t>
          </dd>
        </dl>
        <t>It is in principle possible for two different mDNS registrants to ask the same mDNS registrar to publish different RRs on
the same name, some of which are shared and some of which are unique (see <xref section="2" sectionFormat="of" target="RFC6762"/>).
If an mDNS registrant registers an RR on a name for which the registrar already has data, cached or
authoritative, on the same name, whether of the same type or a different type, for which there is no TSR data, or for
which the key checksum in the TSR data being registered does not match what is already known, the registrar <bcp14>MUST</bcp14> treat
this as an immediate conflict, and <bcp14>MUST NOT</bcp14> probe.</t>
        <t>As with any local mDNS registration, the mDNS registrar treats all of the records in the registration as tentative (that
is, in the probing state) until they have been probed and no conflicting answers have been received.</t>
      </section>
      <section anchor="probing-resource-records-on-names-for-which-tsr-data-has-been-proposed">
        <name>Probing resource records on names for which TSR data has been proposed</name>
        <t><xref section="8.1" sectionFormat="of" target="RFC6762"/> describes how an mDNS registrar probes to ensure that there is
no conflicting data for records in the probing state. The behavior for records that are in the probing state on names to
which no TSR data applies is unchanged.  When there is TSR data on a name for which records are being probed,
the mDNS registar <bcp14>MUST</bcp14> include TSR options for each such name as described in <xref target="tsrrr"/>. Handling of
responses is described in <xref target="procmes"/>.</t>
      </section>
      <section anchor="processing-questions-for-which-tsr-data-exists">
        <name>Processing questions for which TSR data exists</name>
        <t>When processing a question for which local TSR data is present, the mDNS registrar <bcp14>MUST</bcp14> first check to see if there is corresponding
data in the mDNS message being processed. If there is, the question is part of a probe. In this case, before constructing a response,
the mDNS registrar <bcp14>MUST</bcp14> process the non-question records in the packet, since this could result in stale data being flushed. Processing
is performed as described in <xref target="procmes"/>.</t>
        <t>Once all non-question records have been processed, the responder <bcp14>MUST</bcp14> respond to any questions that match
locally-registered resource records for which a known answer is not present in the query. Responses are constructed as
described in <xref target="tsrrr"/>.</t>
      </section>
      <section anchor="procmes">
        <name>Processing messages containing TSR options</name>
        <t>For each TSR option in an mDNS message, the mDNS registrar first determines the owner name of the TSR option by assigning
an index to each non-question resource record in the mDNS message. The index of each TSR option is then matched to the
index of a resource record, and the owner name for that resource record is applied to the TSR option. The time on the TSR
option is then computed by taking the current local clock time and subtracting from it the time offset in the TSR record.</t>
        <t>If there is a TSR option in an mDNS message for which there is no matching resource record in the mDNS message, the mDNS
registrar <bcp14>MUST</bcp14> ignore that TSR option. The mDNS registrar <bcp14>MUST NOT</bcp14> use the index from the TSR option to search across the
mDNS Packet since such an index can easily be out of bounds.</t>
        <t>Now, for each record in the mDNS message, the mDNS registrar first determines whether the record is an OPT record, is in
the question section, or is a known answer (QD bit = 0 and it's a record in the answer section). For all such records, no
special processing is done for TSRs, since no TSR should exist in the mDNS message.</t>
        <t>For each remaining resource record in the mDNS message, the mDNS registrar <bcp14>MUST</bcp14> check to see if there is a TSR option in
the mDNS message for that owner name. If there is not, the mDNS registrar <bcp14>MUST</bcp14> check to see if there is TSR data with that
owner name locally. If there is not, the record is processed normally.</t>
        <t>If there is local TSR data for the record's owner name, the mDNS registrar checks to see if there are any resource records
in the local registration database (that is, not just in the cache) on that name. If there are, the record is treated as a
conflict. This conflict exists even if the locally registered records are all shared records. In cases where there are
records on the name in the cache, those records are all discarded, because they are in conflict with the new data.</t>
        <t>In the case that there is TSR data for the record in the mDNS packet, and no local TSR record, this always means that any
data is in conflict. How that conflict is addressed depends on the data. First, note that resource records in the answer
section of an mDNS Query (QR bit in the header is 0) are "known answers" and therefore are not relevant when adding data
to the mDNSResponder cache. Such records can never have TSR options associated with them.  However, resource records in
the authority and additional sections of a query do need to be processed (but in the case of authority records, are not
added to the cache).</t>
        <t>In cases where the TSR data for a particular name is present both locally and in the mDNS message, the mDNS responder
<bcp14>MUST</bcp14> compare the key checksums. If they are different, then the records are always in conflict, and are handled according
to the context of the conflict, as described in <xref section="9" sectionFormat="of" target="RFC6762"/>.</t>
        <t>In cases where the key checksums match, the mDNS registrar <bcp14>MUST</bcp14> compare the times. When the TSR time from the mDNS Message
is more recent than the local TSR time, local data in the cache is flushed and registered data is removed and reported
to the registrant that registered it as stale.</t>
        <t>When the TSR times are the same, any resource records on that name in the answer section and additional section are added
to the cache.</t>
        <t>When the local TSR time is more recent, the data in the message is not added to the cache, and no action is taken with
respect to any locally-registered data.</t>
      </section>
      <section anchor="constructing-a-mdns-message-with-tsr-options">
        <name>Constructing a mDNS message with TSR options</name>
        <t>For each non-question record that is added to the mDNS message, one of three things must be true:</t>
        <ul spacing="normal">
          <li>
            <t>The mDNS server is has resource records locally registered on that owner name, which may or may not be in the probing
state.</t>
          </li>
          <li>
            <t>It is sending an answer which is either an announcement or a response containing data it has already validated and for
which it is authoritative</t>
          </li>
          <li>
            <t>The message is a query (QD=0) and the record is in the answer section, and is therefore a "known answer."</t>
          </li>
        </ul>
        <t>As described in <xref section="7.1" sectionFormat="of" target="RFC6762"/>, an mDNS registrar asking a question about one
or more RRs on a particular name populates the answer section of its mDNS message with the answers it already knows, to
avoid unnecessary responses. However, in this case it can't also be probing for records on the same name, because probes
are only done for unique (non-shared) records.</t>
        <t>The requirements in <xref target="locval"/> mean that there can never be an mDNS probe that contains known answers on an
owner name for which any RR is being probed to which a TSR option applies.</t>
        <t>This means that for any particular owner name that might be represented in an mDNS packet, it must be the case either that
it is not a known answer, or that it is a known answer and no other records exist in the mDNS packet with the same owner
name to which a TSR record would apply.  That is, one of two things must be true about the set of all records with a
particular owner name being added to the mDNS packet: either a TSR option applies to all of the records, or it applies to
none of the records. Furthermore, either a record is a known answer from cache, or it is a locally-registred record.</t>
        <t>When constructing an mDNS message, the registrar maintains a set of names and associated TSR data. Initially this set is
empty. When the registrar adds a record to the mDNS message, if that record is locally registered, and if the registrar
has TSR data for that name, it first checks to see if it has already added TSR data for that name to the set. If not, then
it adds a new entry to the set containing the TSR data for the owner name of the RR. The data added consists of the
owner name, the index of the record being added (since it is the first), the key checksum, and the time of receipt.</t>
        <t>Once the mDNS responder has added all of the resource records it intends to to the mDNS message that is being constructed,
it emits an OPT record in the additional section. To this OPT record it adds a TSR record for every name in the set that
was generated when adding resource records to the message. The time of receipt is subtracted from the current time to
prodiuce the time difference, and this is clamped to a maximum of seven days.</t>
      </section>
    </section>
    <section anchor="the-effect-of-network-latency-on-time-computations">
      <name>The effect of network latency on time computations</name>
      <t>Because TSR computations are affected by network latency, comparisons can’t be considered accurate. It is
therefore necessary to tolerate some amount of error. In practice, however, it should generally not be the case
that two advertising proxies receive SRP updates from the same SRP requester at nearly the same time. So it should
always be the case either that there is a clear ordering to the timestamps, or that there is no conflict in the
data. For example with anycast, a retransmission could go to a different SRP registrar, but in this case both
servers would simultaneously receive identical data, so the close ordering or even equality of the timestamps
should not affect the outcome.</t>
    </section>
    <section anchor="internal-handling-of-tsr-data">
      <name>Internal Handling of TSR data</name>
      <t>The TSR option that is sent on the wire is expressed in seconds relative to the time of receipt of the
registration. In order to derive the time to send in a TSR option, the registrar must remember the time at which the registration
occurred. This time is recorded as an absolute time, not a relative time. We refer to this as the time of
receipt. When constructing a TSR option, the registrar computes the difference between the current time and the time of
receipt, which must always be in the past. This difference, which should be a positive integer, is converted to
seconds, and that unsigned value is then used to synthesize the TSR RR.</t>
    </section>
    <section anchor="timeliness-of-conflict-resolution">
      <name>Timeliness of Conflict Resolution</name>
      <t>It is expected that if a conflict exists, it will be recent, and will be resolved quickly. Different hosts may be
able to record shorter or longer time differences. However, because of this expectation of recentness, mDNS
registrars should never need to report a TSR of longer than seven days. It’s reasonable to expect that every mDNS
implementation should be able to remember time intervals of at least seven days.</t>
    </section>
    <section anchor="legacy-behavior">
      <name>Legacy Behavior</name>
      <t>mDNS registrars and queriers that do not support the TSR option are expected to ignore the option, so they will behave
as if no TSR option was sent. This may result in such registrars temporarily caching stale data. However, in the
normal course of processing, more recent data will win. In cases where it does not, the Reconfirm process which
is part of <xref target="RFC6762"/> already works to clear stale data: since we expect SRP registrars to implement
TSR, by the time a Reconfirm is attempted, all authoritative stale data should have been cleared.</t>
    </section>
    <section anchor="when-to-use-tsr">
      <name>When to Use TSR</name>
      <t>TSR is only relevant for mDNS proxies. Regular mDNS registrants that don't support mDNS proxy are not expected to use it, since it
will produce the wrong behavior for this use case. An mDNS proxy <bcp14>MUST</bcp14> explicitly allow its mDNS registrar to use
TSR for conflict resolution. mDNS registrars <bcp14>MUST NOT</bcp14> record a time of receipt unless the registrant has
specifically requested it.</t>
    </section>
    <section anchor="registrant-api-considerations">
      <name>Registrant API considerations</name>
      <t>When a registrant registers a service at its mDNS registrar and requests the use of a time of receipt, the registrant <bcp14>MUST</bcp14> also specify when it
received the original registration. In order to support this, the API is required not only to allow the registrant to specify
that TSR conflict resolution is wanted, but also to provide a way for the registrant to specify an absolute time at
which the original registration was received, and the key checksum used to identify the entity that's actually authoritative
for the data.</t>
      <t>This is important, for example, in the case of SRP Replication <xref target="I-D.lemon-srp-replication"/>, where an
SRP registrar may receive a registration from a peer during startup synchronization. This registration will have
occurred at some significant amount of time in the past, and so it would be incorrect for the mDNS registrar receiving
the registration to use the time that the registrant registers the service as the time of receipt.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The TSR option is an optimization: it ameliorates an edge case for mDNS proxies. A malicious host on the same link could
use the TSR option to win conflict resolution processes. However, because TSR is only used by proxies, this technique
will not work for normal mDNS service registrations: in that case, normal mDNS conflict resolution is done, and the
attacker gains no benefit from using TSR.</t>
      <t>Whether or not an mDNS registration has a recorded time of receipt, an attacker can deny service by announcing its
own conflicting data and then answering the subsequent probe as described in <xref section="9" sectionFormat="of" target="RFC6762"/>.
Because it does not include a TSR record in its authority section, it can win the simultaneous conflict resolution
process that follows its bogus announcement.</t>
      <t>So the TSR-based conflict resolution process creates no new vulnerability. Addressing the existing vulnerability is
out of scope for this document. Protocols that rely on mDNS <bcp14>MUST NOT</bcp14> assume that mDNS service is secure or
private. If security (authentication, authorization and/or secrecy) are needed, these must be provided at the
application layer, or by using DNSSEC rather than mDNS for service discovery.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to allocate a new OPT RR option code from the DNS EDNS0 Option Codes (OPT) registry for the 'Time Since
Received' Option. The Name shall be 'mDNS-TSR'. The value shall be allocated by IANA. The meaning shall be
'Multicast DNS Time Since Received". Reference shall refer to this document, once published.  IANA shall determine the registration date.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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="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="I-D.lemon-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="22" month="February" year="2023"/>
          <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-lemon-srp-replication-03"/>
      </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>
          <date day="4" month="March" year="2024"/>
          <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-04"/>
      </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="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>
    </references>
    <?line 447?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge reviewers and contributors.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
J3Hcu8od9M/bYM4A1MfQt9hZ9/8AqlSPqSBtAAA=

-->

</rfc>
