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


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

]>

<?rfc compact="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-anima-brski-discovery-16" category="std" consensus="true" submissionType="IETF" updates="draft-ietf-anima-brski-prm, rfc6690, rfc9733" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="BRSKI-discovery">BRSKI discovery and variations</title>

    <author initials="T." surname="Eckert" fullname="Toerless Eckert" role="editor">
      <organization abbrev="Futurewei">Futurewei USA</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>tte@cs.fau.de</email>
      </address>
    </author>
    <author initials="E." surname="Dijk" fullname="Esko Dijk">
      <organization>IoTconsultancy.nl</organization>
      <address>
        <email>esko.dijk@iotconsultancy.nl</email>
      </address>
    </author>

    <date year="2026" month="October" day="31"/>

    <area>Operations and Management</area>
    <workgroup>ANIMA</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 117?>

<t>This document specifies procedures for variations of the
"Bootstrapping Remote Secure Key Infrastructure" (BRSKI) architecture of protocols
to automatically announce, discover, and select responders using different
discovery mechanisms such as DNS-SD, GRASP, or CORE-LF. Different variations
are not interoperable, so initiators need to be able to find responders that support
the variation(s) they support. Procedures are defined for BRSKI proxies that
allow proxying of traffic for any current or future variation. Procedures to
discover BRSKI Pledges by their identifier are defined. Extensibility is provided
through a set of IANA registries.</t>

<t>This document updates I-D.ietf-anima-brski-prm, RFC 6690, and RFC 9733.</t>



    </abstract>



  </front>

  <middle>


<?line 131?>

<section anchor="terminology"><name>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 relies on the terminology defined in <xref target="BRSKI"/>.  The following additional terms are also used.</t>

<dl>
  <dt>Context:</dt>
  <dd>
    <t>A set of Services for which the same set of variations applies.</t>
  </dd>
  <dt>IP, IPv4, IPv6:</dt>
  <dd>
    <t>In this document, IP refers to (inclusively) IPv4 or IPv6. If a statement applies to only one of the two versions, then the terms IPv4 or IPv6 are used.</t>
  </dd>
  <dt>Initiator:</dt>
  <dd>
    <t>A host that uses an IP transport protocol to initiate a connection or transaction to another host, called the responder.</t>
  </dd>
  <dt>Initiator socket:</dt>
  <dd>
    <t>A socket, consisting of an initiator's IP address, protocol (typically UDP or TCP), and protocol port number,
from which the initiator initiates connections or transactions to a responder.</t>
  </dd>
  <dt>Objective Name:</dt>
  <dd>
    <t>See Service Name.</t>
  </dd>
  <dt>Resource Type:</dt>
  <dd>
    <t>See Service Name.</t>
  </dd>
  <dt>Responder:</dt>
  <dd>
    <t>A host that uses an IP transport protocol to respond to transaction or connection requests from an initiator.</t>
  </dd>
  <dt>Responder socket:</dt>
  <dd>
    <t>A socket, consisting of a responder's IP address, protocol (typically UDP or TCP), and protocol port
number, on which the responder responds to requests of the protocol.</t>
  </dd>
  <dt>Role:</dt>
  <dd>
    <t>In this document, the functionality of an entity in a variation of the BRSKI architecture that can act as a responder and whose supported variations can be discovered. BRSKI roles relevant to this document include (Join) Registrar, Join Proxy, and pledge. The IANA registry defined by this document allows variations to be specified for any role. See also Context.</t>
  </dd>
  <dt>Socket:</dt>
  <dd>
    <t>The combination of an IP address, an IP protocol that utilizes a port number (such as TCP or UDP) and a port number of that protocol.</t>
  </dd>
  <dt>Service Name:</dt>
  <dd>
    <t>The name for (a subset of) the functionality/API provided by a discoverable responder socket. This term is inherited from <xref target="DNS-SD"/>, but unless otherwise specified, this document also uses it for the equivalent element of any other discovery mechanism. Other mechanisms typically use different terminology. For example, when <xref target="GRASP"/> is used to discover a responder socket for BRSKI, the Objective Name carries the equivalent of the service name. In <xref target="CORE-LF"/>, the Resource Type (rt=) or a target attribute (such as "brski-jp") carries the equivalent of the service name.</t>
  </dd>
  <dt>Type:</dt>
  <dd>
    <t>See Variation Type.</t>
  </dd>
  <dt>Variation:</dt>
  <dd>
    <t>A combination of one variation type choice for each variation type applicable to the context of a discoverable BRSKI communication.
For example, in the tBRSKI context, a variation is one choice for "mode", one choice for "enroll", and one choice for "vformat".</t>
  </dd>
  <dt>Variation Type:</dt>
  <dd>
    <t>The name for one aspect of a protocol for which two or more choices exist (or may exist in the future), and whose choice
can technically be combined orthogonally with those of other variation types. This document defines the tBRSKI variation types "mode", "enroll", and "vformat".</t>
  </dd>
  <dt>Variation Type Choice:</dt>
  <dd>
    <t>The name for one of the values that a particular variation type may have.
For example, this document defines the choices "rrm" and "prm" for the tBRSKI variation type "mode".</t>
  </dd>
  <dt>ACP:</dt>
  <dd>
    <t>"An Autonomic Control Plane", <xref target="ACP"/>.</t>
  </dd>
  <dt>BRSKI:</dt>
  <dd>
    <t>"Bootstrapping Remote Secure Key Infrastructure", <xref target="BRSKI"/>.</t>
  </dd>
  <dt>BRSKI-AE:</dt>
  <dd>
    <t>"Alternative Enrollment Protocols in <xref target="BRSKI"/>", <xref target="BRSKI-AE"/>.</t>
  </dd>
  <dt>BRSKI-PRM:</dt>
  <dd>
    <t>"<xref target="BRSKI"/> with Pledge in Responder Mode", <xref target="BRSKI-PRM"/>.</t>
  </dd>
  <dt>cBRSKI:</dt>
  <dd>
    <t>"Constrained Bootstrapping Remote Secure Key Infrastructure (<xref target="BRSKI"/>)", <xref target="cBRSKI"/>.</t>
  </dd>
  <dt>COAP:</dt>
  <dd>
    <t>"The Constrained Application Protocol (CoAP)", <xref target="COAP"/>.</t>
  </dd>
  <dt>CORE-LF:</dt>
  <dd>
    <t>"Constrained RESTful Environments (CoRE) Link Format", <xref target="CORE-LF"/>.</t>
  </dd>
  <dt>cPROXY:</dt>
  <dd>
    <t>"Constrained Join Proxy for Bootstrapping Protocols", <xref target="cPROXY"/>.</t>
  </dd>
  <dt>DNS-SD:</dt>
  <dd>
    <t>"DNS-Based Service Discovery", <xref target="DNS-SD"/>.</t>
  </dd>
  <dt>EST:</dt>
  <dd>
    <t>"Enrollment over Secure Transport", <xref target="EST"/>.</t>
  </dd>
  <dt>GRASP:</dt>
  <dd>
    <t>"GeneRic Autonomic Signaling Protocol", <xref target="GRASP"/>.</t>
  </dd>
  <dt>GRASP-DNSSD:</dt>
  <dd>
    <t>"DNS-SD Compatible Service Discovery in GeneRic Autonomic Signaling Protocol (GRASP)", <xref target="I-D.eckert-anima-grasp-dnssd"/>.</t>
  </dd>
  <dt>JWS-VOUCHER:</dt>
  <dd>
    <t>"JWS signed Voucher Artifacts for Bootstrapping Protocols", <xref target="JWS-VOUCHER"/>.</t>
  </dd>
  <dt>lwCMP:</dt>
  <dd>
    <t>"Lightweight Certificate Management Protocol (CMP) Profile", <xref target="RFC9483"/>.</t>
  </dd>
  <dt>mDNS:</dt>
  <dd>
    <t>"Multicast DNS", <xref target="mDNS"/>.</t>
  </dd>
  <dt>SCEP:</dt>
  <dd>
    <t>"Simple Certificate Enrolment Protocol", <xref target="RFC8894"/>.</t>
  </dd>
</dl>

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

<section anchor="overview"><name>Overview</name>

<t>Bootstrapping Remote Secure Key Infrastructure is an architecture of protocols for automatically and
securely enrolling Pledge devices with an owner's Registrar. It optionally relies on Join Proxies and
Agents to overcome the lack of end-to-end connectivity between Pledges and Registrars. It also relies on
Manufacturer Authorized Signing Authorities (MASAs) to authenticate or track the ownership of Pledges,
and on Certification Authorities (CAs) to enroll Pledges into the owner's private PKI.</t>

<t>The BRSKI architecture comprises multiple variations that are not interoperable with each other, such as
its first instance, <xref target="BRSKI"/>; BRSKI with Alternative Enrollment (<xref target="BRSKI-AE"/>); BRSKI with Pledge in
Responder Mode (<xref target="BRSKI-PRM"/>); and Constrained BRSKI (<xref target="cBRSKI"/>). This lack of interoperability is a
direct consequence of the different market requirements that gave rise to these variations.</t>

<t>Readers are expected to understand the basic protocol machinery of the BRSKI architecture and the roles of Pledge, Join Proxy,
Agent, Registrar, MASA, and CA. However, this document attempts to explain all aspects relevant to the
discovery problem, so that understanding the actual protocol details should not be necessary.</t>

<t>Pledges need to discover and select the best interoperable Join Proxy or Registrar. Join Proxies need
to discover all available Registrars, announce the same protocol variations, and proxy each of these
variations to the appropriate Registrar. Pledges need to be discoverable by their product
identification ("serial number") and enumerable.</t>

<t>Discovery needs to work with whichever discovery mechanisms are most easily supported by the network in
which the devices are deployed: <xref target="DNS-SD"/> with mDNS or unicast DNS, the GeneRic Autonomic Signaling
Protocol (<xref target="GRASP"/>), or <xref target="CORE-LF"/>, the discovery mechanism used in networks that rely predominantly on
the Constrained Application Protocol (CoAP).</t>

<t>This document specifies how to meet these requirements. It defines the discovery, selection, and proxy
mechanisms independently of the encoding used by any specific discovery mechanism, and it defines an information
model, common across discovery mechanisms, that represents protocol variations and discoverable entities
through a set of IANA registries. These IANA registries allow new variations, discoverable device types,
and discovery mechanisms to be added.</t>

<t>Although this document is specific to BRSKI, many of its mechanisms may serve as templates for other
protocols: resilience and failover using discovery protocols; signaling of non-interoperable protocol
variations; abstraction of the information model from the encoding specifics of different discovery
mechanisms; and specification of discoverable entities, variations, and discovery-mechanism-specific
encodings via IANA registries.</t>

</section>
<section anchor="scope-limitations"><name>Scope Limitations</name>

<t>Discussion of, or guidelines for, the selection of a discovery mechanism are outside the scope of
this document. Individual RFCs that specify BRSKI protocol variations do specify a single discovery
mechanism; for example, <xref target="BRSKI-PRM"/> specifies one for DNS-SD. To a large extent, however, this reflects
a decision to limit the scope of discovery specification in those RFCs. The subject matter is complex,
and there is a risk of repeating the same definitions and discussions across multiple RFCs
that specify variations within the BRSKI architecture. This is why this document exists.</t>

<t>However, this document does not give recommendations for the selection of specific discovery
mechanisms, because this is highly dependent on the deployment and use case, and mostly independent
of BRSKI architecture choices. For example, whichever discovery mechanism is already deployed in a
network is most likely also going to be preferred for further discovery uses.</t>

<t>In the current BRSKI architecture RFCs, discovery of Join Proxies by Pledges, or of Pledges by Agents,
is mostly assumed to happen across the link layer only. In contrast, discovery of Registrars by Join Proxies,
Agents, or Pledges is mostly assumed to happen across layer 3. For these specifications, discovery of
Join Proxies may therefore rely on a link-local multicast option of the discovery mechanism, such as mDNS
for DNS-SD. The announcement and discovery of Registrars, however, needs to rely on a layer 3
capable option, such as SRP/unicast DNS for DNS-SD. These choices are nevertheless outside the
scope of this document, because its definitions do not need to change based on these transport
choices of the discovery mechanisms. In addition, they are highly deployment-centric, like the
preference for the discovery mechanism itself.</t>

<t>Discovery of instances of CA, MASA, or potentially other future BRSKI architecture roles is not
currently covered by this document, but could easily be added to the IANA registry tables defined by
this document.</t>

</section>
<section anchor="design-rationale"><name>Design Rationale</name>

<t>This section explains in more detail, with examples, the design choices of BRSKI architecture discovery
and the scope of this specification.
It is aimed at both operators and implementers.</t>

<section anchor="simultaneous-deployment-of-non-interoperable-variations"><name>Simultaneous Deployment of Non-Interoperable Variations</name>

<t>As mentioned above, variations are not interoperable. For example, BRSKI and cBRSKI use different
transport stacks: BRSKI uses TLS, while cBRSKI uses CoAP/DTLS, because memory-constrained devices
already use those protocols and save memory by also relying on them for bootstrapping.</t>

<t>While implementations for unconstrained devices can support multiple variations, Pledge vendors will
want to implement only those variation(s) that suit their business goals. Customer networks that
simultaneously use products from different vendors (and market segments) will therefore need to
support different variations at the same time. This requires a discovery approach in which
non-interoperable variations can coexist and in which each device can discover peers that support the
variation(s) it supports.</t>

<t>For example, one manufacturer of BRSKI Pledges may offer only a Registrar product supporting BRSKI, which
uses <xref target="EST"/> as its enrollment protocol, whereas another manufacturer may want its Pledges to support
only <xref target="BRSKI-AE"/> with CMP as the enrollment protocol. Each type of Pledge hence needs to discover a
different Registrar. Third-party Registrars may support multiple or all variations, but such products
may not be viable or may become available only later.</t>

<t>The ad hoc approach to supporting such variations with existing discovery mechanisms is to allocate a
new, unique, discoverable "Service Name" for each variation. Such a name is assigned only when a new
variation is specified, and potentially only for the one discovery mechanism considered most important
at that time, in the hope that all deployments are able and willing to use it.</t>

<t>When another market segment of customers later prefers a different discovery mechanism, supporting it
incurs significant overhead: a separate specification of the overall discovery procedure details, as
well as the registration of "Service Name" parameters per discovery mechanism and per variation.</t>

</section>
<section anchor="variation-agnostic-join-proxies"><name>Variation-Agnostic Join Proxies</name>

<t>The second deployment challenge concerns Join Proxies, which are located in the network between Pledge
and Registrar to overcome the layer 3 connectivity constraints of Pledges. They need to discover
Registrars and announce themselves as Join Proxies to Pledges, and they need to do so in the presence of
variations. Join Proxies operate only at the transport layer (TCP for BRSKI and UDP for cBRSKI), so in
theory they can proxy the traffic of any current or future variation. To do so, however, they need to be
able to recognize all current and future variations and to connect a Pledge to a Registrar that
supports the variation(s) requested by the Pledge.</t>

<t>If variations use unique ad hoc "Service Names", then these "Service Names" have to be built into or
configured on Pledges, which contradicts the goal of zero-touch deployment.</t>

</section>
<section anchor="variation-signaling-through-discovery-metadata"><name>Variation Signaling through Discovery Metadata</name>

<t>To solve these challenges, BRSKI architecture discovery defines, for each discovery mechanism and transport option
(UDP, TCP), a single "Service Name" for each discoverable entity (such as a Registrar). In addition, it
defines, for each discovery mechanism, an encoding of the variation into a unique metadata field of
that discovery mechanism. The string value of this field indicates the variation(s) and is consistent
across all discovery mechanisms.</t>

<t>This design solves both of the deployment challenges described above for all current and future
variations. If a new discovery mechanism needs to be introduced, it requires a new specification of
this encoding, but no further per-variation work.</t>

</section>
<section anchor="variation-definition-through-iana-registries"><name>Variation Definition through IANA Registries</name>

<t>Variations are combinations of choices for different aspects of the BRSKI protocol. For example, a
BRSKI exchange includes both the exchange of a voucher (<xref target="RFC8366bis"/>) and an enrollment protocol
operation. The voucher can be formatted using CMS with JSON, COSE, or JOSE; the enrollment protocol can
be a version of <xref target="EST"/>, SCEP (<xref target="RFC8894"/>), or another protocol appropriate for the transport stack (TCP/TLS or
CoAP). Voucher format and enrollment protocol are examples of what this document calls variation types;
the specific format or protocol selected for each is a variation type choice.</t>

<t>Instead of assigning ad hoc variation names whenever they are needed in deployments, BRSKI architecture discovery
defines both the variation types, such as voucher format and enrollment protocol, and their values
through new IANA registries. It also defines how variation strings are formed from combinations of
variation type choices.</t>

<t>In addition to registering variations composed of variation type choices, the IANA registries likewise
define all other aspects of discovery that need to be extensible. This design choice minimizes the need
for future specification and implementation work when deploying or developing additional variations,
in many cases reducing it to just additional IANA registrations.</t>

</section>
<section anchor="automatic-redundancy-and-failover-specification"><name>Automatic Redundancy and Failover Specification</name>

<t>Automatic resiliency and load sharing are enabled by the use of discovery mechanisms together with the
provisioning of multiple instances of BRSKI architecture roles, such as Registrars and Join Proxies. This
document specifies the procedures that support load sharing and (fast) failover upon failure and
recovery of redundant components.</t>

<t><xref target="DNS-SD"/> is widely deployed, but it is most commonly used in manual workflows, such as when (human)
users browse DNS-SD Service Instance (Names) through (graphical) user interfaces and select an instance
of a service based on out-of-band criteria ("this printer sounds good"). In BRSKI, selection is meant to
be fully automated, for example performed by the bootstrap code of a Pledge, with no human in the loop.</t>

<t>Similarly, DNS/DNS-SD libraries are widely available and used, but predominantly as rather heavyweight
code for "desktop" operating systems. They are less commonly available as lightweight libraries for the variety
of embedded devices targeted by BRSKI, especially constrained devices or "general-purpose" network equipment
such as Ethernet-connected routers in industrial, enterprise, and service provider networks.</t>

<t>Third, GRASP and CORE-LF are relatively new discovery mechanisms, for which little implementation
experience and code exist with respect to automatic redundancy and failover.</t>

<t>For these reasons, this document also describes in detail the procedures for automatic redundancy and
failover. The intent is to help implementers, to help operators understand the subtleties of this
process, which is important for making BRSKI resilient, and to achieve implementations that are
resilient by failing over automatically and quickly.</t>

</section>
<section anchor="discovery-of-pledges-through-idevid"><name>Discovery of Pledges through IDevID</name>

<t><xref target="BRSKI-PRM"/> requires Pledges to be discoverable on the network. This specification expands on the
details provided in <xref target="BRSKI-PRM"/>, Section 6.2, specifically detailing how to derive the DNS-SD Service
Instance Name from IDevID CommonName fields, using an example of a recommended IDevID encoding. It also
explains why manufacturers need to document this mapping scheme, so that third parties can develop
BRSKI Agents that discover Pledges using these mechanisms. Finally, it provides a detailed example.</t>

<t>The procedures for discovering Pledges are documented here only for DNS-SD, because they rely on the
additional (but optional) functionality of browsing, which is not equally well defined or explored in
other discovery mechanisms. When desired, the IANA registries introduced by this document can equally
be used to add definitions that support additional discovery mechanisms for this functionality,
assuming additional specifications of the necessary mechanisms.</t>

</section>
</section>
<section anchor="functional-summary"><name>Functional Summary</name>

<t>This document specifies a set of IANA registries for BRSKI discovery. These registries allow the definition of
the attributes that different discovery mechanisms use to announce and discover the different BRSKI
role responders as well as their variations. Defining these attributes through registries maximizes
consistency across discovery mechanisms and eases the support of variations across different discovery
mechanisms.</t>

<t>Using the discovery information specified through these registries, this document specifies the details
of selection and failover when more than one interoperable and available responder is discovered.
These procedures are intended to provide resilience and scalability of BRSKI services that would not be
possible without dynamic discovery mechanisms.</t>

<t>Finally, this document specifies procedures for Join Proxies to discover Registrar variations using any
discovery mechanism, to announce them to Pledges, and to connect each Pledge to the appropriate
Registrar based on the variation the Pledge requires. These procedures allow new protocol variations within the BRSKI
architecture to be introduced without the need to upgrade Join Proxies.</t>

</section>
</section>
<section anchor="specification"><name>Specification</name>

<section anchor="information-model-and-registrations"><name>Information Model and Registrations</name>

<t>BRSKI architecture discovery is about discovering one or more instances of responders that support
a specific BRSKI architecture role, and determining whether a responder's variation of BRSKI protocol
options is compatible with, and desired by, the connection initiator. This section gives
the conceptual overview of how this is achieved.</t>

<section anchor="summary"><name>Summary</name>

<t>The goal of defining an information model, and IANA registration tables for it, in this
section is to make implementing announcement and discovery of current and future BRSKI architecture
variations as simple as possible. Implementers should not have to painfully work out which specifications
to read, without a central reference for which mechanisms exist and with possibly inconsistent
nomenclature. Instead, they only need to start with the IANA registration tables introduced by this
document and follow the references from them. From there, they can easily derive the necessary
implementation steps.</t>

<t>When supporting a new discovery mechanism, the first step is to understand
the basic encoding of BRSKI discovery attributes for that mechanism. The references for this
are listed in the <xref target="fig-discovery-mechanisms"/> registry table. For
DNS-SD, GRASP, and CORE-LF, these references point to sections of this document;
for future discovery mechanisms (or extensions to existing ones), they would
point to future documents.</t>

<t>The next step is to determine, for the discovery mechanism of interest, the "service name"
to use for each of the different roles (Pledge, Registrar, Join Proxy). This is found in the
<xref target="fig-subreg-service-names"/> registry table.</t>

<t>The last step is to determine, for each variation of interest, the Variation
String to use in the metadata field of the discovery mechanism that encodes it.
This is found in the <xref target="fig-variations"/> registry table.</t>

<t>The remaining tables support the process of adding new variations, and
potentially new BRSKI roles to be discovered, across different transport stacks
for BRSKI in a consistent, backward-compatible fashion. Implementers do not really
need to understand them; they are only needed by experts, or by
new specifications, when adding new variations through deployment testing
and/or additional specifications. <xref target="fig-choices"/> defines
the vocabulary from which variations are derived, and <xref target="fig-subreg-contexts"/>
specifies contexts, which ultimately exist to allow the same
service names to be re-used across disjoint, non-conflicting communication spaces.</t>

</section>
<section anchor="roles-and-services"><name>Roles and Services</name>

<t>In this document, a service is a specific functionality provided by a responder entity to an
initiator entity over a responder socket using a particular transport/security/session stack
(such as TCP, UDP, CoAP, DTLS, TLS, QUIC, ...). The
mechanisms of this document enable initiators to automatically discover responder sockets and to select
one that is interoperable with them.</t>

<t><xref target="BRSKI"/> defines the roles of pledge, Join Proxy, registrar, and MASA. <xref target="BRSKI-PRM"/>
adds the role of Registrar-Agent. Trust anchor (CA) is a dependent role required by the BRSKI
architecture, provided through <xref target="EST"/> or other protocols in <xref target="BRSKI-AE"/>. A service is commonly
named after the role of the responder, such as Join Proxy, registrar, or MASA.</t>

<t>A single entity may implement multiple roles. For example, registrars often also implement
the Join Proxy role, and pledges, which stop being pledges after enrollment, often
then become Join Proxies. Future BRSKI architecture documents may introduce additional roles, and many
of the definitions in this document should be extensible to support such additional roles.</t>

</section>
<section anchor="service-names"><name>Service Names</name>

<t>The role that a responder socket supports is indicated in each discovery mechanism through an
appropriate signaling element. <xref target="DNS-SD"/> calls this signaling element the Service Name. Because
there is no other equally widely used term for this type of signaling element across arbitrary
discovery mechanisms, this document also refers to the role signaling element as the Service Name,
independent of the discovery mechanism. IP address, IP transport protocol, and IP transport
protocol port are not part of the Service Name; they are signaled through discovery-mechanism-specific
signaling elements.</t>

</section>
<section anchor="variations"><name>Variations</name>

<t>Variations in the BRSKI protocol, such as the choice of message encoding or of features,
could impact interoperability between initiator and responder. Initiators
need to be able to discover and select responders based not only on the desired role,
but also on the best variation for the initiator.</t>

<t>Variations of a role could be indicated by using a different Service Name for every variation,
but that approach would have two problems:</t>

<t><list style="numbers" type="1">
  <t>Service Names in different discovery mechanisms are typically not hierarchical (e.g., not
"role.variation"). Relying only on Service Names would thus require registering every
variation as a separate Service Name in a "flat" name space, and registering it separately
for each discovery mechanism. In addition, the registry rules of some discovery mechanisms may
not look favorably on the registration of Service Names for such protocol variations.</t>
  <t>Whenever a new variation is introduced, all deployed Join Proxies would need to be configured
to also proxy this new variation, because new Service Names for the same BRSKI role cannot
be auto-discovered by Join Proxies (without additional protocol mechanisms that would be more
complex than the variations approach). Most Join Proxies, however, should be able to operate
without configuration.</t>
</list></t>

<t>For these reasons, this document introduces the encoding of BRSKI (role) variations
through a secondary signaling element in each discovery mechanism, enabling Join Proxies to transparently
support any variation of BRSKI role connections for which they support proxying.</t>

<t>In addition, variations only need to be registered once, in a BRSKI-specific registry table introduced
by this document, rather than once for each current or future discovery mechanism.</t>

<t>A variation is hence specified as a combination of signaling choices that a BRSKI connection may
use and that affect interoperability between initiator and responder at the level of message
exchange and encoding.</t>

</section>
<section anchor="variation-types"><name>Variation Types</name>

<t>Today, BRSKI connections can exchange vouchers in one of several different
encoding formats. Independent of that option, a BRSKI connection may also use different
commands (so-called "Endpoints"); today, these depend on whether or not <xref target="BRSKI-PRM"/> is used.
Finally, and also independent of those two options, a BRSKI connection may use one of several
different enrollment protocols.</t>

<t>This document calls these options "Variation Types". The three variation types above
are called "vformat" for the voucher format, "mode" for the Endpoints used (such as
PRM or not), and "enroll" for the enrollment protocol used.</t>

</section>
<section anchor="variation-type-choices"><name>Variation Type Choices</name>

<t>The actual choices for each of these variation types are called "Variation Type Choices":
"prm" or "rrm" for the variation type "mode"; "cmsj", "cose", or "jose" for the variation type "vformat";
and "est", "cmp", or "scep" for the variation type "enroll". The semantics of each Variation
Type Choice are described in the Note(s) column of the Variation Type Choices registry (see <xref target="subreg-choices"/>)
and in the references in its Reference(s) column.</t>

<t>"scep" is an example of the ability of the registry to reserve values: it is not adopted
by any current BRSKI architecture specification.</t>

</section>
<section anchor="variation-strings"><name>Variation Strings</name>

<t>The string name of a variation is formed by concatenating a single variation type choice for every
(necessary) variation type. For example, "prm-jose" could describe the protocol options
used by a <xref target="BRSKI-PRM"/> connection from Registrar-Agent to registrar, potentially through a Join Proxy. This string
representation of a variation is called the variation string, and it is used
consistently for signaling across all discovery mechanisms.</t>

<t>In the future, when additional variation types and choices are introduced, existing variation
strings <bcp14>MUST NOT</bcp14> be changed, to allow full backward compatibility with existing/deployed implementations.</t>

<t>For example, when using BRSKI over UDP, only CoAPS is supported today, but BRSKI UDP sockets
could equally work with QUIC (which runs on top of UDP). In that case, a new variation type, e.g., "proto",
could be introduced with the variation type choices "coaps" and "quic". For backward compatibility,
"coaps" would then need to be defined as the default for BRSKI over UDP, which means that
existing variation strings such as "" (for "rrm", "cose", and "est" in cBRSKI) imply the use of "coaps",
whereas the use of QUIC would have to be indicated explicitly via "quic".</t>

<t>For variation strings to be semantically unambiguous, variation type choices have distinct names
across all variation types, and the order in which variation type choices are
concatenated is the order in which the variation types are defined in the corresponding registry
table. Hence, new variation types have to be appended to the end of the list of Variation Types of the
Context in the Contexts registry table (<xref target="subreg-contexts"/>).</t>

<t>The fact that a variation name is composed of variation type choices does not mean that
an unspecified variation of (random) variation type choices can work without new implementation
or specification work, or that it even makes sense. This may or may not be the case. This is also
why this document specifies a registry that explicitly enumerates all variations that are
known to be sufficiently specified and to work.</t>

<t>For example, <xref target="BRSKI-PRM"/> is indicated through the variation type value "prm", but it may also require
enhancements to the enrollment protocol used, which is specified by the variation type "enroll", such as
new endpoints in that protocol. The functional semantics implied by an "enroll" variation type
value are thus different in variations with "prm" than in variations without "prm". Moreover,
<xref target="BRSKI-PRM"/> does not necessarily sufficiently specify these enhancements for enrollment protocols
that were not yet known or specified when <xref target="BRSKI-PRM"/> was written.</t>

</section>
<section anchor="contexts"><name>Contexts</name>

<t>Variation strings are defined separately for every group of services for which the
set of variation strings is, or could be, different or could have different semantics.
A group of services for which the same variation strings are defined is called a Context.</t>

<t>Different lists of variation strings are necessary when services have different variation types,
different variation type values, different deployed variations, or different defaults
for the same variation type values, and hence different variation strings.</t>

<t>"tBRSKI" is the context covering <xref target="BRSKI"/> connections (which use TCP, hence the "t") from pledge to Join Proxy or registrar, and from Join Proxy to registrar.</t>

<t>"cBRSKI" ("c"onstrained BRSKI) is the context covering <xref target="cBRSKI"/>
connections (using UDP) from pledge to Join Proxy or registrar, and from Join Proxy to registrar.</t>

<t>"BRSKI-PLEDGE" is the context covering pledges that use <xref target="BRSKI-PRM"/>, for connections
from Registrar-Agents to pledges. In the future, it can equally cover, through variations, the discovery of
<xref target="BRSKI"/> pledges for connections to them for other purposes, by introducing
appropriate variation types and values for such additional purposes.</t>

<t>This document does not define variations for different end-to-end encryption mechanisms.
However, the mechanisms described here can also be used to introduce new, backward-incompatible secure transport options.</t>

<t>Also, this document does not introduce contexts for the discovery of BRSKI roles other than those mentioned,
such as the discovery of MASAs by registrars. However, the registries introduced by this document are defined
such that such contexts can also be introduced later through additional registry entries and specifications.</t>

</section>
<section anchor="discussion"><name>Discussion</name>

<t>Variations as defined by this document only cover protocol options that Join Proxies can
support transparently, so that the definition of variations makes Join Proxies automatically
extensible.</t>

<t>Other responder selection criteria, such as responder priority or performance-based selection
(called weight in <xref target="DNS-SD"/>), are not covered by the variation concept, but can
be used unchanged in conjunction with variations. Some selection criteria may also only work with
discovery mechanisms that rely on specific procedures. For example, network distance to the responder
can only be well supported by discovery mechanisms that support per-hop forwarding between initiator
and responder, such as <xref target="GRASP"/>. All of these criteria work unchanged with the introduction
of variations. Variations are simply one more selection criterion.</t>

<t>Differences in the supported transport stack of a responder are typically signaled through a
signaling element of the discovery mechanism: whether TCP, UDP, or another IP transport protocol
is used, and whether the responder uses IP or even another network layer protocol.</t>

<t>In "sane" services, a change in the transport stack does not imply a change in the signaled
messages and their semantics. For such services, gateways could transparently proxy from IP to other
network layer protocols and vice versa, or even between TCP and other IP transport protocols such as SCTP.
However, this is out of scope for this specification.</t>

<t>The procedures specified for constrained BRSKI with a Join Proxy (<xref target="cPROXY"/>) would allow running
not only a transport stack of CoAP over DTLS, but equally any other transport stack over UDP, such
as QUIC. When following the procedures described in this document, this would not require any changes
to the Join Proxy implementation or configuration. All that would be needed is to introduce appropriate
entries in the registry tables specified in this document (e.g., adding a new Variation Type
for the transport, with choices such as "coaps" or "quic").</t>

</section>
<section anchor="iana-registry-tables"><name>IANA Registry Tables</name>

<t>This subsection restates and summarizes the information model introduced above, as it is
instantiated in the IANA registry (and sub-registries) requested by this document,
the so-called "BRSKI Discovery Parameters" registry (<xref target="reg-discovery"/>).</t>

<t>The detailed requirements for registrations and the initial content of the registry tables are
defined in the corresponding IANA section.</t>

<section anchor="discovery-mechanisms-registry"><name>Discovery Mechanisms registry</name>

<t>The main Discovery Parameters table (<xref target="reg-discovery"/>) simply defines the abbreviations
for the discovery mechanisms specified for use with BRSKI architecture discovery: CORE-LF, DNS-SD, and GRASP.
It allows new discovery mechanisms to be added and tracks where they are specified, including
outside the IETF.</t>

<t>This table is called the "main" table because "BRSKI Discovery Parameters" is a
registry with sub-registries, and one table has to be associated with the registry itself
rather than with a sub-registry.</t>

</section>
<section anchor="contexts-sub-registry"><name>Contexts sub-registry</name>

<t>The IANA "Contexts" sub-registry (<xref target="subreg-contexts"/>) registers names for different
groups of services in the overall BRSKI architecture: tBRSKI for <xref target="BRSKI"/> Registrar-&gt;Proxy-&gt;Pledge,
cBRSKI for constrained BRSKI (<xref target="cBRSKI"/> / <xref target="cPROXY"/>)
Registrar-&gt;(Proxy)-&gt;Pledge, and BRSKI-PLEDGE for <xref target="BRSKI-PRM"/> discovery of pledges.</t>

<t>Grouping services allows registrations/definitions in other registry tables to be limited to
these Contexts, instead of repeating them for every service (for example, Registrar,
Stateless-Registrar, and Proxy).</t>

<t>Distinguishing tBRSKI from cBRSKI is also necessary so that the different Transport Stack
parameter(s) of the two can be appropriately included in the registries (see <xref target="subreg-service-names"/>).</t>

<t>The Contexts sub-registry also registers the list of Variation Types defined for each context.
The Variation Types are the different aspects of the BRSKI protocols for which different
choices have been, or could be, specified.</t>

</section>
<section anchor="service-names-sub-registry"><name>Service Names sub-registry</name>

<t>The IANA "Service Names" sub-registry (<xref target="subreg-service-names"/>) registers the "Service Names"
used to discover the different BRSKI services for each context and discovery mechanism. It also
specifies the necessary (Transport Stack) Parameters that need to be used in the discovery
mechanism to indicate the service (i.e., to discover it, or to recognize it in discovery replies).
In the initial table, as specified by this document, this is primarily used to distinguish tBRSKI
services, which use TCP, from cBRSKI services, which use CoAPS, represented as UDP in
some discovery mechanisms (such as DNS-SD).</t>

</section>
<section anchor="variation-type-choices-sub-registry"><name>Variation Type Choices sub-registry</name>

<t>The IANA "Variation Type Choices" sub-registry (<xref target="subreg-choices"/>) builds on the definition of
Variation Types in the Contexts sub-registry (<xref target="subreg-contexts"/>): it defines the specified choices
for each Variation Type and registers the specification(s) in which they are defined.</t>

<t>Variation Type Choices are registered per Context, so that different Contexts can
have different specifications (and hence procedures) for the same Variation Type. In
the initial registry content requested by this document, this is used to refer to the
separate specifications for tBRSKI variations and cBRSKI variations.</t>

</section>
<section anchor="variations-sub-registry"><name>Variations sub-registry</name>

<t>The IANA "Variations" sub-registry (<xref target="subreg-variations"/>) registers the so-called "Variation String"
encoding of variations of BRSKI protocol services for each Context. This is ultimately the
encoding specified by this document for signaling, across all discovery mechanisms, the
actual Variations supported by a Service Instance. This sub-registry depends on the definitions
in the preceding registry tables, which is why it is described last.</t>

<t>A Variation is a combination of one Variation Type Choice for every Variation Type. Effectively,
it describes one way in which a particular BRSKI service can operate. The Variation Types specified in
this document are "mode", "vformat" (voucher format), and "enroll" (enrollment protocol). With these,
it is possible to specify Variations with different overall procedures. "mode"
can be "rrm", indicating the pledge-driven progression of BRSKI (as in <xref target="BRSKI"/> and
<xref target="cBRSKI"/>), or "prm", as specified in <xref target="BRSKI-PRM"/>. "vformat" specifies one of the possible
encoding options for the voucher exchanged in BRSKI, and "enroll" specifies the enrollment protocol.
The enrollment protocol is logically separate from BRSKI, but is in practice included in BRSKI.
So far, in most cases, it shares the secure connection between Pledge and Registrar. It is
also an interoperability requirement between Registrar and Pledge: both need to
support the same encoding for a BRSKI exchange to complete successfully.</t>

<t>Some Variation Type Choices may actually impact other Variation Types. For example, "prm"
also impacts details of the enrollment protocol, and <xref target="BRSKI-PRM"/>
accordingly specifies how <xref target="EST"/> ("enroll" = "est") needs to be modified to operate with
"prm". For this reason, the Variations sub-registry only lists Variations that
are explicitly specified somewhere as being a working combination of Variation
Type Choices, instead of simply permitting implementations to announce all Variation
Type Choices separately and hoping that any combination actually works.</t>

<t>Variations are encoded as Variation Strings, which are formed by concatenating the
Variation Type Choice strings with "-", leaving out those Variation Type Choices that
are the "Default" (Dflt in the sub-registry). This encoding scheme allows old Variation Strings to
remain unchanged when new Variation Types are introduced in a backward-compatible fashion.
The backward-compatible choice for a new Variation Type is marked as "Dflt", and hence does not
need to be included in the Variation String. Pre-existing Variation Strings without the new
Variation Type can therefore continue to exist and be used without changes.</t>

</section>
</section>
</section>
<section anchor="redundant-discovery-and-selection"><name>Redundant Discovery and Selection</name>

<t>The following subsections describe requirements for resilient and scalable responder
selection. Resilience is supported by automatically selecting the currently best available
responder. Scalability of simultaneous sessions is supported by distributing the connections from
multiple initiators across different responders, if so desired, through operator configuration of the
discovery mechanism parameters.</t>

<t>At the time of writing of this specification, the relevant initiators are BRSKI pledges, Join Proxies,
and Registrar-Agents, and the relevant responders are Join Proxies and BRSKI Registrars. Nevertheless,
the rules defined in this document can equally apply to other BRSKI connections if and when discoverable
and redundant services are desired and added to the registries created by this document, for example,
discovery of MASAs by BRSKI Registrars.</t>

<t>Note that this specification does not mandate support for specific discovery mechanisms in BRSKI
implementations, because this is specific to the target deployment scenarios - hence the
option to support different discovery mechanisms.</t>

<t>Note that while pledges are discoverable using the mechanisms of this document, this section
and its subsections do not apply to the discovery of pledges. There is no redundancy involved,
and pledges are selected only by their ID, not by their supported variation.</t>

<section anchor="responder-selection"><name>Responder Selection</name>

<t>If more than one responder is discovered by an initiator, then the initiator
<bcp14>SHOULD</bcp14> be able to sequentially attempt to connect to each feasible responder exactly once until
it successfully connects to one. If it fails to connect to any feasible responder,
the initiator <bcp14>SHOULD</bcp14> wait until at least 30 seconds have elapsed since the start of the
last round before it restarts connection attempts. Before restarting, it <bcp14>SHOULD</bcp14> also update its
discovered responder information from the discovery mechanism, if the chosen discovery mechanism
does not already do this automatically.</t>

<t>A responder is feasible if it supports one or more of the variations requested by the initiator.</t>

<t>The order in which connections to responders are attempted is derived from two criteria: preference and weight.</t>

<t>Preference order is foremost determined by the initiator's preference across the variations supported
by the responder. Within the set of responders with the same preference by the initiator because of their
variation, the preference is further determined by discovery-mechanism-specific preference
parameters, such as the "priority" parameter in DNS-SD, or possible future distance
parameters in discovery mechanisms like GRASP.</t>

<t>If a responder socket offers more than one variation supported by the initiator,
its preference order is derived from the most preferred of these variations.</t>

<t>Within a set of two or more responders with the same preference, the initiator <bcp14>MUST</bcp14> pick at random,
especially after power-on or other reboot events. This ensures that those events have
a chance to overcome possible persistent problems that would arise from persistently choosing the same
first responder. If deployments desire reproducible and predictable ordering of connection
attempts by initiators, then they have to use the discovery-mechanism-specific mechanisms, such
as a different "priority" parameter for each responder in DNS-SD, to create such a strict
ordering across the different responders.</t>

<t>Initiators <bcp14>SHOULD</bcp14> take discovery-mechanism-specific weighting, such as the "weight" parameter in
DNS-SD, into account when determining the order of responders with the same preference.</t>

<t>Implementations of the resilient responder selection described so far <bcp14>SHOULD</bcp14> support
selection among at least 4 and no more than 10 responders with one or more
supported variations for each supported IP address family (IPv4 and/or IPv6). If more responders
are discovered for the preferred variation(s) of the initiator, then it <bcp14>SHOULD</bcp14> pick
a random subset of those responder announcements to select from.</t>

<t>Four responders for a specific variation are a typical minimum resilience setup in a larger
network, in which two responders provide redundancy at the responder host level, and
the other two provide redundancy against network connectivity failures to the
first two. Intra-DC and inter-DC service redundancy is a simple example of such a setup.</t>

</section>
<section anchor="service-announcements"><name>Service Announcements</name>

<t>Responder selection as described in <xref target="responder-selection"/> needs to deal with
unresponsive responders, because service announcements may be stale. This happens when
service announcements only loosely track the aliveness of a service process.</t>

<t>In typical implementations, service announcements may be activated when the
service process starts, and stopped when it stops. Problems such as a hanging (unresponsive)
service process will not be reflected in the service announcements. In addition,
caching of service announcements, such as through the DNS TTL field, is a further
possible cause of incorrectly assuming service aliveness. Only actual
connection probing or similar tracking can determine whether a service responder is responsive
to the level of accepting connections.</t>

<t>Responders intended to be used in resilient deployments <bcp14>SHOULD</bcp14> therefore ensure
that their service announcements are not active when the responder has died or has
failed to successfully accept connections for 120 seconds or more. This can
be implemented, for example, by connection probing once every 30 seconds and
withdrawing the service announcements when probing fails, or by other forms
of tracking the responsiveness of the responder functionality.</t>

<t>The better service announcements indicate the actual aliveness of service instances, the
faster service selection will be. In addition, in large networks, backup/standby
service instances can then be implemented by tracking primary service announcements
and activating the backup only when the primary ones fail. Such dynamic backup
can further reduce the overall load on the discovery mechanism used and
on initiators.</t>

</section>
<section anchor="proxy-selection"><name>Responder Selection in Proxies</name>

<t>Unless amended by the requirements listed below, proxies <bcp14>SHOULD</bcp14> follow all of the
descriptions in <xref target="responder-selection"/>. Note that the random selection of
responders with the same preference also applies to stateful proxies, and ensures
load balancing (including weighting) across multiple simultaneously connecting pledges.</t>

<t>Stateful proxies <bcp14>SHOULD</bcp14> optimize the selection of responders for each variation across
connections from multiple pledges. This avoids restarting the sequence of responders
to try from the highest precedence for every newly connecting pledge, which would repeatedly run
into timeouts for each newly connecting pledge when those primary responders time out
on connection attempts because they are unresponsive or unreachable. Instead, after a
responder first fails to connect, the Join Proxy <bcp14>SHOULD</bcp14> skip this responder in further
connection attempts for other connecting pledges.</t>

<t>Stateless proxies cannot learn of the unresponsiveness or unreachability of a responder
through connection attempts. Instead, they <bcp14>SHOULD</bcp14> perform a stateless responsiveness/reachability
check for each responder to which the Join Proxy is actively forwarding packets from
one or more pledges. If no packets are returned from such a responder for more
than 30 seconds, then the responder <bcp14>SHOULD</bcp14> be considered unreachable for at least
180 seconds. Unreachability signaling received in response to packets sent to the
responder <bcp14>SHOULD</bcp14> trigger this unreachability status if it persists for 10 seconds.</t>

<t>Load balancing as described in <xref target="responder-selection"/> is <bcp14>NOT RECOMMENDED</bcp14> for
stateless proxies, because per-pledge stateless load balancing may involve more
processing complexity than is feasible for proxies on
constrained devices. To avoid changing the selection of
active responders when one responder becomes unresponsive, a "stable hash" approach would have
to be used, such as described in <xref target="HRW98"/>, which is used, for example, by <xref target="RFC9722"/>.
Supporting weights with stateless proxying is even more complex. Instead of relying on
load balancing, responders simply need to be designed to scale to the maximum
number of simultaneous initiator connections necessary when supporting stateless
proxying mode.</t>

</section>
<section anchor="announcement-protection"><name>Protection against malicious service announcements</name>

<t>Responders, including Join Proxies announcing their own responder sockets, <bcp14>SHOULD</bcp14> always announce
the most preferred priority and weight parameters possible in the discovery mechanism used that
still allow the desired preference goals to be met. For example, in DNS-SD, a primary responder
should announce the numerically lowest priority value (0) and the highest weight value possible
(<xref target="RFC2782"/>).</t>

<t>This recommendation is intended as protection against erroneous, but not malicious,
service announcements whenever the default priority is less preferred than the most
preferred priority. It can also serve as weak protection against malicious announcements,
because with the selection rules required by this document, initiators still have
the highest chance of picking the non-malicious announcement.</t>

<t>While weak, this recommendation can still be better than nothing against such
malicious announcements. These recommendations <bcp14>SHOULD</bcp14> be superseded by better
recommendations for more narrowly scoped deployment scenarios.</t>

</section>
</section>
<section anchor="join-proxy-support-for-discovery-and-variations"><name>Join Proxy Support for Discovery and Variations</name>

<section anchor="proxy"><name>Join Proxy Support for Variations</name>

<t>A Join Proxy compliant with this specification <bcp14>MUST</bcp14> support announcing its
Join Proxy responder socket(s), to which pledges can connect, via at least one
of the discovery mechanisms included in the registry tables specified in this
document. The Join Proxy <bcp14>MUST</bcp14> announce the variation(s)
supported on its responder socket(s) according to the registry table entries.</t>

<t>A Join Proxy <bcp14>SHOULD</bcp14> support passing packets for any variation for which
it has discovered one or more registrar sockets supporting that variation, without the
variation needing to be known at the time the Join Proxy is implemented, or configured
on the Join Proxy. A Join Proxy that meets this requirement is said to support
"arbitrary variations". Meeting this requirement requires
the Join Proxy to discover registrar(s) and their supported variation(s) via one or more
of the discovery mechanisms included in the registry tables specified in this document.</t>

<t>Support for arbitrary variations allows proxies to be deployed once, and
pledges and registrars supporting new variations to be added later, without upgrading
or reconfiguring the proxies.</t>

<t>Every Variation has exactly one Variation String, with one exception for backward compatibility with
<xref target="BRSKI"/>: the GRASP objective AN_join_registrar uses the objective-value "EST-TLS" for the
Variation String "" in the tBRSKI context (see Note (1) of <xref target="fig-variations"/>). A Join Proxy <bcp14>MUST</bcp14>
treat an AN_join_registrar objective-value of "EST-TLS" as the Variation String "". All other
Variation Strings are compared as they are, and announced unchanged.</t>

</section>
<section anchor="join-proxy-operation-modes"><name>Join Proxy Operation Modes</name>

<t>Proxies may use different approaches to connect to registrars. The following
subsections discuss the most relevant options.</t>

<section anchor="direct-connection"><name>Direct Connection Mode</name>

<t>In one Join Proxy implementation option, called "direct connections", the Join Proxy creates a
separate Join Proxy responder socket for every discovered registrar socket. It announces this socket
with the same set of parameters that it learned from the registrar's service announcement, except for
the appropriate Join Proxy service name and socket parameters (IP address, port number). When a pledge
connects to that socket, the Join Proxy passes traffic for that pledge's connection to and from the
respective registrar socket.</t>

<t>When using the direct connections approach, the task of selecting the best registrar socket for
a particular variation is left to pledges. They are exposed to at least as many
service announcements from proxies as proxies see from registrars, and the
pledge has to select the best available one among them.</t>

<t>Proxies using direct connections <bcp14>SHOULD</bcp14> limit the number of registrar sockets they map to the 4 to 10
best registrar sockets per variation, as described in <xref target="responder-selection"/>. This reduces the number of
sockets that these proxies have to announce, and also the number of responder sockets that they need
to maintain.</t>

</section>
<section anchor="best-registrar"><name>Best Registrar Selection Mode</name>

<t>In the implementation mode "best registrar selection", the Join Proxy creates one separate responder
socket for each set of discovered registrar sockets that announce support for the same set
of variations.</t>

<t>For pledges to discover the Join Proxy, the Join Proxy then announces this socket with the parameters of
the best discovered registrar socket. As in the case of a direct connection, it replaces the service name
and network parameters with those of its Join Proxy responder socket.</t>

<t>When the Join Proxy receives a connection on that socket, it then connects the pledge to the best
available registrar socket from that set.</t>

<t>When performing best registrar selection for that connection, the Join Proxy has to select the
best available responder as described in <xref target="responder-selection"/>.</t>

<t>Stateless proxies supporting best registrar selection must use newly discovered responders carefully.
Consider the following common case. Service announcements for a primary responder
stopped due to network issues, and the Join Proxy then started to send packets to a secondary
responder. Then the primary responder becomes reachable again, and the Join Proxy sees
service announcements for it. If the Join Proxy now started to forward packets
from pledges to this primary responder because of its higher precedence, this
could unnecessarily break ongoing connections from clients whose packets
are currently forwarded to the lower-preference responder. Direct connection mode does
not incur this problem, because the pledge can select another Join Proxy responder socket
when it discovers the first one to be unresponsive or erroneous.</t>

<t>A stateless Join Proxy <bcp14>SHOULD</bcp14> hence only replace a selected responder with a better one
if no packets have been exchanged between pledges and the currently selected responder
through the Join Proxy for more than 300 seconds.
This long timeout is specifically intended to avoid breaking connections in which the
registrar keeps the pledge waiting for an administrative response, such as
an operator performing a policy validation for enrollment.</t>

<t>In addition, stateful proxies implementing best registrar selection <bcp14>SHOULD</bcp14>
optimize the selection of registrars for each Join Proxy responder socket across
connections from multiple pledges. This avoids restarting the sequence of responders
to try from the highest-precedence registrar for every newly connecting pledge, which would repeatedly
run into timeouts when one or more of the best registrars time out on connection attempts
because they are unresponsive or unreachable. Instead, after a
responder first fails to connect, the Join Proxy <bcp14>SHOULD</bcp14> skip this responder in further
connection attempts for other connecting pledges. It <bcp14>SHOULD</bcp14> reconsider it for new
connection attempts only after at least 60 seconds.</t>

</section>
<section anchor="proxy-in-service-name-only-mode-on-registrars"><name>Proxy in Service Name Only Mode on Registrars</name>

<t>Registrars that support connections from stateful proxies
and/or from pledges may minimize their Join Proxy implementation work. They can simply announce
the same socket with the appropriate service names for both types of connections: as a registrar
for connections from proxies, and as a Join Proxy for connections from pledges.
No additional sockets or other Join-Proxy-specific packet processing code
are required to support this.</t>

<t>Registrars that support connections from stateless proxies can
share that implementation for connections from pledges by also implementing
a simple UDP&lt;-&gt;JPY header conversion (see <xref target="cPROXY"/>).
However, they need to do this via
a separate socket, and hence need to announce the two sockets separately.
For connections from pledges, they announce UDP with the Join Proxy service name. For connections
from stateless proxies, they announce UDP with the JPY header and the stateless registrar service name.</t>

<t>Proxy functionality implemented on registrars as described here
is called "proxy in service name only mode", because such an implementation
cannot discover, select, and fail over between different registrars.
Such proxies in name only therefore do not share the requirements
regarding the discovery and selection of registrars described for the previously specified
modes.</t>

<t>Like other proxies, proxies in name only <bcp14>SHOULD</bcp14> nevertheless track
the aliveness of their registrar function and withdraw their service
announcements (both as Join Proxy and as registrar) when it is not running,
fails, or becomes unresponsive.</t>

<t>Proxies in name only <bcp14>SHOULD</bcp14> default to the same discovery mechanism priority and
weight parameters as those configured for the registrar service announcements.
This ensures that, in the absence of separate proxies in the network, the selection
of registrars via co-located proxies follows the same criteria as those
used by proxies that rely on the registrar service announcement parameters.</t>

</section>
<section anchor="proxy-mode-discussion"><name>Proxy Mode Discussion</name>

<t>This document defines no requirements regarding the implementation mode of proxies.
These are left to solution or deployment (profile) specifications. Instead, this
section discusses some considerations for these choices.</t>

<t>The list of modes presented is exemplary and not meant to be exhaustive.
Other modes, such as mixtures of the described modes, are equally able to meet the
requirements. Likewise, new variations may be introduced not only through arbitrary
variation support in proxies, but also through explicit configuration of variations on
proxies; this all depends on the target deployment environment. The presented modes were
chosen primarily because they provide the most configuration-free deployment options and
the greatest implementation simplicity for registrars.</t>

<t>If a deployment has a larger number of service announcements and (extremely)
constrained pledges, direct connection mode may be inappropriate, because it shifts
the burden of discovering and selecting the best available registrar onto the pledge. If,
at the same time, the proxies in such deployments can support more scalable, complex
implementations, then best registrar selection mode may be most appropriate.</t>

<t>In environments where all pledges are expected to become proxies after enrollment,
implementers may simply want to implement the option for which pledge and
Join Proxy code together are easiest to implement.</t>

<t>Even on registrars, proxy in service name only mode may not meet deployment requirements
or provide the best redundancy. For example, the co-located registrar may incur
problems that do not apply to alternative registrars, such as Internet
connectivity problems to MASAs when different registrars have different
Internet connectivity. The Join Proxy co-located with the registrar may then
still be the only Join Proxy available to some candidate pledges. In that case, this Join Proxy
needs to be able to connect to an alternative registrar, which would
not be possible if it were a proxy in service name only.</t>

<t>Likewise, proxy in service name only mode will hinder the introduction of new variations
on pledges and other registrars in the network in the following case: the registrar node implementing
proxy in service name only mode becomes a necessary Join Proxy for a pledge that requires a
variation not supported by this registrar, but by another registrar that
is only reachable through this registrar node. Therefore, Join Proxy
in name only mode is best suited for node types that are not deployed at an edge
of the network to which a future variety of pledges may connect. At such edges, those
pledges will require the use of a Join Proxy.</t>

</section>
</section>
<section anchor="extensibility-to-non-brski-services"><name>Extensibility to Non-BRSKI Services</name>

<t>Join Proxy implementations using the procedures described in this document can easily
be reused for any protocols other than BRSKI, as long as they use TCP or UDP.
This simply requires that the Join Proxy can be configured with
pairs of service names other than those used by tBRSKI/cBRSKI: a service name to
discover, and a service name to use for the service announcements of the Join Proxy responder socket.</t>

</section>
<section anchor="scaling-service-discovery-and-selection"><name>Scaling service discovery and selection</name>

<t>Discovering and selecting an available service instance can become a design challenge
in large networks with many redundant service announcements.</t>

<t>Consider, for example, the common case of allowing BRSKI enrollment in a network
with many geographically spread-out sites, such as in enterprise, industrial, or
building construction environments. During the initial bring-up of such sites,
Internet connectivity may be non-existent or intermittent, and hence one or more
local registrars in each such site are highly desirable. Such registrars may of course
require private mobile network connectivity to the MASA, or rely on out-of-band provisioning
of vouchers.</t>

<t>Later, when such a site gets a well-working wide-area network connection,
it may be more appropriate to use more centralized registrars, but a local registrar
may still be considered useful as a backup. However, the service announcements of such
decentralized per-site registrars might then be discoverable across the whole geographically
spread-out network. This could introduce potentially significant
overhead to the service announcement and discovery system, for example when more
than 100 registrar service announcements exist in the network and pledges/proxies
connect to them.</t>

<t>Such a large number of redundant service announcements is typically highly undesirable,
and appropriate configurations of the service discovery mechanisms need to be used
to avoid them. For example, in GRASP, service announcements can be scoped to small hop counts.
Alternatively, anycast addressing can be used to make all decentralized registrars share
the same IP address, and hence the same service announcement.</t>

</section>
</section>
<section anchor="brski-pledge"><name>Discoverable BRSKI Pledges</name>

<section anchor="brski-pledge-context"><name>BRSKI-PLEDGE context</name>

<t>BRSKI-PLEDGE is the context for the discovery of pledges by nodes such as Registrar-Agents.
Pledges supporting <xref target="BRSKI-PRM"/> <bcp14>MUST</bcp14> support it. It may also be used by other variations of the BRSKI
architecture outside of the PRM use case, for example, for inventorying pledges.</t>

<t>Pledges supporting BRSKI-PLEDGE <bcp14>MUST</bcp14> support DNS-SD for discovery via mDNS, using link-local scope.
For DNS-SD discovery beyond link-local scope, pledges <bcp14>MAY</bcp14> support DNS-SD via <xref target="DNSSD-SRP"/>, using
automatic discovery of the SRP server and registering the DNS-SD data defined below with it.</t>

<t>These DNS-SD requirements are defaults. Specifications for specific deployment contexts, such as specific
types of radio mesh network solutions, may need to specify their own requirements that override or amend
these requirements.</t>

<t>Pledges <bcp14>MUST</bcp14> be discoverable via their DNS-SD service instance name.</t>

<t>Pledges <bcp14>SHOULD</bcp14> be discoverable via DNS-SD browsing, so that Registrar-Agents can find
unexpected pledges, or can more easily enumerate expected pledges, especially in the presence of multiple
different subnets and the use of mDNS. If the owner cannot acquire the serial-number information of a
pledge by the time BRSKI-PRM needs it (to create a service instance name), the pledge can only be found
by browsing.</t>

<t>When pledges are discoverable via DNS-SD browsing, the "_brski-pledge" PTR service name is a
so-called shared resource record. When it is requested via mDNS (multicast), all pledges supporting
BRSKI-PLEDGE and browsing will respond simultaneously, potentially creating congestion/contention.
To avoid this, <xref target="mDNS"/> specifies the following requirement: "each responder <bcp14>SHOULD</bcp14> delay its
response by a random amount of time selected with uniform random distribution in the range 20-120 ms."</t>

<t>It is likewise <bcp14>RECOMMENDED</bcp14> to apply the same random delay rule to answers to multicast or
flooded queries in other discovery mechanisms that have the same response burst problem, even when
they do not specify such a mechanism themselves, such as GRASP.</t>

<t>If a pledge does not want to support browsing, it simply does not respond to queries for the
"_brski-pledge" service name in mDNS, or to queries for the equivalent service name in other discovery
mechanisms. When using unicast DNS-SD via <xref target="DNSSD-SRP"/>, it does not register its PTR RR for this
service name. This does not affect operations for the service instance name.</t>

<t>This specification does not introduce procedures to discover pledges via CORE-LF or GRASP,
because it is unclear whether there is currently demand for this, and because it can easily be added
via additional specifications and registry entries. For CORE-LF, browsing of entries
can be supported via CORE-RD (<xref target="RFC9176"/>), with appropriate auto-discovery of the CORE-RD server.
For GRASP, this could be done via a method mapping DNS-SD into GRASP, such as <xref target="I-D.eckert-anima-grasp-dnssd"/>,
specifically to support browsing of pledge instance names.</t>

</section>
<section anchor="service-instance-name"><name>Service Instance Name</name>

<t>The service instance name chosen by a BRSKI pledge <bcp14>MUST</bcp14> be composed of information that is</t>

<t><list style="symbols">
  <t>easily known by BRSKI operations, such as operational personnel or software automation,
specifically sales integration backend software; and</t>
  <t>available to the pledge software itself, for example, by being encoded in some attribute of the IDevID.</t>
</list></t>

<t>Typically, a customer will know the serial number of a product from sales information, or even
from bar codes/QR codes on the product itself. If this serial number is used as the service instance
name to discover a pledge from a Registrar-Agent, then this may potentially (although unlikely) lead to
(duplicate) replies from two or more pledges with the same serial number, such as in the following cases:</t>

<t><list style="numbers" type="1">
  <t>A manufacturer has different product lines and re-uses serial numbers across them.</t>
  <t>Two different manufacturers use the same serial-number space.</t>
</list></t>

<t>If pledges enable browsing of their service instance name, they <bcp14>MAY</bcp14> support the procedures specified
by DNS-SD to create unique service instance names when they discover such clashes. These procedures append
a space and a number, starting with 2, to the service instance name: "&lt;service-instance-name&gt; (2)",
as described in <xref target="DNS-SD"/>, Appendix D.</t>

<t>Nevertheless, this approach to resolving conflicts is not desirable:</t>

<t><list style="symbols">
  <t>If browsing of DNS-SD service instance names is not supported, Registrar-Agents would always have to
(mostly wrongly) guess that there is a clash and (mostly unnecessarily) search
for "&lt;service-instance-name&gt; (2)".</t>
  <t>If a clash exists between pledges from the same manufacturer, then even if the Registrar-Agent
attempts to start enrolling all pledges with the same clashing service instance name,
it may not have enough information to distinguish the pledges other than by the random numbering.
This would happen especially if the IDevIDs of both devices (of different product types) had the
same serial number, and the trust anchor certificate of both was the same (e.g., the same root CA
certificate), which is likely when they are from the same manufacturer.
Even if some other IDevID field were used to distinguish their device models, the Registrar-Agent
would not be able to determine that difference without additional vendor-specific programming.</t>
</list></t>

<t>As a result:</t>

<t><list style="symbols">
  <t>Vendors <bcp14>MUST</bcp14> document how their pledges form a service instance name from
information available to the customer of the pledge. This may, for example,
take the form of a schema as in <xref target="service-name-example"/>, point 1.2.</t>
  <t>These service instance names <bcp14>MUST</bcp14> be unique across all IDevIDs from the manufacturer that
share the same trust anchor.</t>
</list></t>

<t>The following mechanisms are recommended:</t>

<t><list style="symbols">
  <t>Pledges <bcp14>SHOULD</bcp14> encode manufacturer-unique product instance information in the serialNumber
attribute of their subject name. <xref target="RFC5280"/> calls this the X520SerialNumber.</t>
  <t>Pledges <bcp14>SHOULD</bcp14> make this serialNumber information consistent with product instance information
that is easily accessible when in physical possession of the pledge, such as the
product type code and serial number on a bar code/QR code, to enable <xref target="BRSKI-PRM"/> discovery
without additional backend sales integration. Note that discovery alone does not
allow for enrollment (so it does not introduce a security risk by itself)!</t>
  <t>Pledges <bcp14>SHOULD</bcp14> construct their service instance name by concatenating
their X520SerialNumber with a domain name that is used by the manufacturer,
and that thus allows devices from different manufacturers using the
same serialNumber scheme to be disambiguated, reducing the likelihood of service instance name
clashes that would arise if manufacturer names were not used.</t>
  <t>Pledges <bcp14>MAY</bcp14> re-use the service instance name as their host name in their AAAA or A RRs.</t>
</list></t>

</section>
<section anchor="example"><name>Example</name>

<t>This section discusses an example manufacturer's approach using the recommendations
above. <xref target="service-name-example"/> shows the different data involved in DNS-SD records
for a pledge from the manufacturer "Example".</t>

<figure title="Example IDevID and DNS-SD data" anchor="service-name-example"><artwork><![CDATA[
    1. Manufacturer published information:
    
      1.1 IDevID trust anchor certificate.
    
      1.2 IDevID X520 identification schema:
        Brand: Example
          O = example.com, serialNumber = "PID:Model-<PID> SN:<SN>"
          ; Explanation:
          ; SN = Serial Number, PID = Product Identifier
          ; O = Organization
    
      1.3 DNS-SD Instance Schema:
        <X520SerialNumber>.example.com
    
    2. Example Purchase Order Pledge Information
       Brand: Example, Model: 0815, Serial: WLDPC2117A99
    
    3. DNS-SD Instance string:
      "PID:Model-0815 SN:WLDPC2117A99.example.com"
    
    4. DNS-SD RR for the pledge (using mDNS, and hence .local):
      ; PTR RR to support discovering the pledge through browsing,
      ; e.g. when the serial number is not known in advance
      _brski-pledge._tcp.local  IN PTR
        PID:Model-0815\\ SN:WLDPC2117A99\\.example\\.com._brski-pledge._tcp.local
    
      ; SRV and TXT RR for the service instance name
      PID:Model-0815\\ SN:WLDPC2117A99\\.example\\.com._brski-pledge._tcp.local
        IN SRV 1 1
        PID:Model-0815\\ SN:WLDPC2117A99\\.example\\.com.local
      PID:Model-0815\\ SN:WLDPC2117A99\\.example\\.com._brski-pledge._tcp.local
        IN TXT ""
    
      ; AAAA address resolution for the target host name
      PID:Model-0815\\ SN:WLDPC2117A99\\.example\\.com.local
        IN AAAA fda3:79a6:f6ee:0000::0200:0000:6400:00a1
    
    5. Example Pledge IDevID certificate information:
        ; Format as shown by e.g.: openssl
        Subject: serialNumber = "PID:Model-0815 SN:WLDPC2117A99",
         O = example.com, CN = Model-0815
]]></artwork></figure>

<t>Using the information from <xref target="service-name-example"/>, a Registrar-Agent
implementation operates as follows.</t>

<t><list style="numbers" type="1">
  <t>Initially, it is configured with the manufacturer-published information (1.);
although not shown, it will likely have a list of such information for various
brands of products.</t>
  <t>After a pledge has been purchased and initially physically deployed,
the Registrar-Agent is provided with the purchase order information for the pledge (2.).
This order information tells it that the manufacturer's brand is "Example",
that the pledge product model &lt;PID&gt; is "0815", and that its serial number &lt;SN&gt;
is "WLDPC2117A99".</t>
  <t>It looks up the IDevID X520 identification schema for brand "Example" and
uses the template value for the serialNumber field, together with the
pledge information values from (2.) for O, &lt;PID&gt;, and &lt;SN&gt;, to determine
the DNS-SD Instance of the pledge (3.). That instance is the concatenation
of the X520 serialNumber value of the pledge with the Organization
domain name of the manufacturer. Because the Organization is a global
DNS domain, "example.com", including it in the Instance makes the Instance unique
across manufacturers.</t>
  <t>It then uses standard DNS-SD via mDNS to find the pledge, using the DNS-SD
Resource Records (RRs) shown in (4.).</t>
  <t>Once it receives a response from the device claiming to be the pledge,
it can use any appropriate authentication mechanism to validate
ownership of the IDevID private key. In <xref target="BRSKI-PRM"/>, this is done through
the initial TLS handshake, in which it learns the presumed IDevID of the
pledge. When the signature of the IDevID can be validated with the public key
of the desired manufacturer's trust anchor from (1.1), it trusts that this pledge is from
that manufacturer. When the O and serialNumber of the certificate match
what it constructed in (3.) from the &lt;PID&gt;/&lt;SN&gt; values of the purchase
information, it also trusts that this is indeed the pledge it was
looking for.</t>
</list></t>

<t>Instead of using sales receipt information, the customer may also use scanned
QR code/barcode or RF tag information from packaging after receiving shipments, for
example, for step 2. Scanning packaging information will likely introduce additional
complexity, because the manufacturer name can often only be derived from
information such as EAN-13 barcodes.</t>

<t>The process steps may also be simpler if the customer can learn the IDevID of the pledge
through the purchase process, instead of having to match the IDevID against sales receipt
information (step 2).</t>

<t>The process steps may also become more complex. The manufacturer may have multiple
brands using the same trust anchor. Or the manufacturer may have certificate
chains, and different production sub-companies may use different sub-CA certificates in the
signing chain. Or the serialNumber alone may not be unique across the certificate chain,
so that further Subject fields of the certificate are required for unique
identification, such as the O(rganization) field. That field could, for example, contain
one of multiple brand names that use simple numerical serialNumber formats
and hence could collide. None of these complexities are desirable for new designs,
but they may be necessary to support BRSKI for existing products.</t>

<t>For the described mechanism to work, the manufacturer does not necessarily
have to own a domain name such as "example.com" in the example. Owning a
domain name and using it for the DNS-SD Instance Schema is just a simple
way to ensure the use of a unique Instance Schema - if all manufacturers
agree to use this approach.</t>

<t>The RR used to discover the pledge by its serial number is the
"IN SRV" RR. The "IN PTR" RR is optional and allows the pledge to
be discovered with DNS-SD browsing, which is necessary if the
pledge's serial number information cannot be known by the time the
pledge needs to be enrolled by a Registrar-Agent.</t>

<t>The instance string is also re-used in the host name of the "IN SRV"
RR, and hence in the domain name of the "IN AAAA" RR. This is just an option;
the pledge can use whatever host name it wants.</t>

</section>
</section>
<section anchor="discovery-mechanisms"><name>Variation signaling and encoding rules for different discovery mechanisms</name>

<section anchor="dns-sd-spec"><name>DNS-SD</name>

<section anchor="dnssd-signaling"><name>Requirements</name>

<t><xref target="DNS-SD"/> specifies how to use DNS-SD via mDNS and/or via unicast DNS. Initiator implementations
that discover BRSKI services <bcp14>SHOULD</bcp14> support both mDNS and unicast DNS to discover the desired
responders. They <bcp14>SHOULD</bcp14> support the mechanisms of <xref target="DNS-SD"/>, Section 11, to discover unicast
DNS browsing domains. They <bcp14>SHOULD</bcp14> prefer answers discovered via unicast DNS over those discovered
via mDNS.</t>

<t>Implementations of BRSKI responders that are intended to be reachable over a routed
network, such as registrar services, <bcp14>SHOULD</bcp14> support <xref target="DNSSD-SRP"/> to register their service(s) with
unicast DNS, and <bcp14>SHOULD</bcp14> also announce their services with mDNS. BRSKI responder implementations that
only need to announce their services across directly connected subnets, such as most proxies, <bcp14>SHOULD</bcp14> only use
mDNS to announce them.</t>

</section>
<section anchor="operational-considerations"><name>Operational considerations</name>

<t>The following subsections discuss and provide recommendations for specific
deployment challenges of DNS. The remaining specifications in this DNS-SD
section apply equally to any instantiation of DNS-SD, including DNS-SD via mDNS
as defined in <xref target="DNS-SD"/>, and via unicast DNS, including registration via <xref target="DNSSD-SRP"/>.</t>

<section anchor="dns-resolver"><name>DNS Resolver</name>

<t>Network equipment implementing BRSKI may support a DNS(-SD) resolver library at the operating system
level, because such operating-system-level DNS resolver functionality is common across many
operating systems, including embedded operating systems for network equipment.</t>

<t>However, operators of such networking equipment often prefer not to enable this DNS resolver functionality.
It typically results in undesired DNS resolution dependencies in components such as
the operator CLI, resulting in operational or even functional failures of the network equipment
when DNS servers fail. Therefore, it is <bcp14>RECOMMENDED</bcp14> to implement DNS-SD discovery for BRSKI
such that using it does not result in undesired dependencies on DNS or DNS-SD. This can be achieved,
for example, by limiting the use of DNS-SD resolver functionality to BRSKI discovery only,
unless it is also explicitly enabled for other functions. Note that these DNS(-SD) resolver considerations
are independent of supporting other DNS functionality, such as <xref target="RFC8106"/>.</t>

</section>
<section anchor="dns-server-redundancy"><name>DNS Server Redundancy</name>

<t>Ideally, BRSKI should be able to run as autonomously and reliably as possible, without depending on
any unnecessary manual configuration or unnecessary single points of failure. Any of the discovery
mechanisms described in this document (especially including DNS-SD via unicast DNS) allow for
fully autonomic redundancy of registrars. DNS itself, however, relies on DNS servers, and
their redundancy and autonomous operation require additional considerations that are outside
the scope of this specification. Redundant setups of DNS servers and SRP registrars also require
additional, non-standardized considerations.</t>

</section>
<section anchor="dns-server-discovery"><name>DNS Server Discovery</name>

<t>Except in networks that define additional automated procedures (such as Thread networks),
discovery of DNS servers generally relies on procedures that require non-automatic configuration
of the DNS server IP addresses, such as IPv6 router discovery as in <xref target="RFC8106"/>. Note that once
DNS servers have been discovered, <xref target="DNSSD-SRP"/> registrars can be discovered automatically via DNS-SD.
Networks that want to support more automated discovery operations
for BRSKI may consider using GRASP, or using GRASP to auto-configure DNS server information.</t>

<t>These requirements are not optimized for environments with known deployment profiles, such as
wireless mesh networks, and may hence need to be changed for such networks. For example,
Thread networks use a fully automatic broadcast mechanism to signal the addresses of DNS servers,
which resolves the challenge described above.</t>

</section>
</section>
<section anchor="variation-string-encoding"><name>Variation String Encoding</name>

<t>Variation Strings from the IANA registry <xref target="fig-variations"/> are encoded as comma-separated
values (CSV) in the value of the "var" key.</t>

<t>A Variation String may be the empty string. The absence of any "var" key in the TXT RR indicates
support for that (empty) Variation String. Likewise, "var=" indicates support for it. If multiple
Variation Strings are encoded, the empty string <bcp14>SHOULD</bcp14> come first: "var=,variation2".</t>

<t>Variation strings in DNS-SD are case-insensitive, as required by DNS-SD. It is <bcp14>RECOMMENDED</bcp14> to only
announce lowercase variation strings in DNS-SD.</t>

</section>
<section anchor="service-instance-and-host-names"><name>Service Instance and Host Names</name>

<t>To be able to specify the supported variations as well as the selection criteria (priority and weight)
individually for each responder socket, each responder socket needs to be represented in DNS-SD as a
service instance name with an SRV and a TXT RR. In BRSKI-PLEDGE (<xref target="brski-pledge"/>), the service instance
name is significant, as it is what a Registrar-Agent may need to discover. In tBRSKI and cBRSKI, however,
it is merely an artifact of the DNS-SD encoding. Unlike in typical user-centric DNS-SD use cases, there are
no users who need to make sense of the meaning of the service instance name, for example, to know
which printer to pick. Only operators may need to look at them for troubleshooting.
The choice of instance name (the first component of a service instance name) is hence arbitrary. The same
is true for the host names used in the DNS-SD records for BRSKI.</t>

<t>Registrars <bcp14>SHOULD</bcp14> support automatic generation of their service instance name for DNS-SD
operation, to avoid the need for additional operator configuration. Registrars <bcp14>SHOULD</bcp14> likewise support the
configuration of such a name, if the operator so desires, to support operational troubleshooting.</t>

<t>The host on which the registrar is running may already have a DNS host name for the IP addresses
used by the registrar and for the desired DNS method (mDNS = .local, unicast DNS = default domain).
In that case, the registrar <bcp14>SHOULD</bcp14> be able to use that host name as the target domain name in the SRV RR.
This requirement avoids the unnecessary addition of DNS A/AAAA RRs for the registrar
when usable RRs already exist.</t>

<t>Alternatively, there may be no such DNS RR, but a DNS host name for a different DNS method, or for a
different set of addresses than those used by the registrar. In that case, the registrar <bcp14>MAY</bcp14> be able to use
a target domain name derived from that primary domain name by appending a unique name element. This
suggestion helps to avoid the creation of unnecessarily inconsistent host names.</t>

<t>If no DNS host name exists, the registrar <bcp14>MUST</bcp14> be able to automatically create a DNS host name
and the A and/or AAAA RRs for the address(es) used by the registrar, for use in the SRV RR target field.
This requirement exists to ensure that operators are not unnecessarily required to configure a host name
on a system that does not need one - and none is required to run a registrar.</t>

<t>A registrar <bcp14>MAY</bcp14> use any unique identifiers of its host system as its instance name or host name.
This can avoid, or at least minimize, the need to automatically pick another name in case the chosen
name is already taken by another system. This would happen, for example, if a registrar tried to
use an instance component such as "registrar" while another registrar already exists. Using a
known unique identifier allows a registrar to raise an alert and claim an operational error
with a high degree of confidence.</t>

<t>MAC addresses are only unique when an application such as a registrar understands what hardware it
is running on, that the MAC address was assigned by registering its OUI with the IEEE, and that
MAC addresses from the OUI were assigned uniquely. This is, for example, not necessarily the
case for IoT equipment or for registrars running in a virtual context in the cloud. IP addresses
can be assumed to be unique (enough) when they have global scope or are ULAs.</t>

<t>Registrar software may not know whether other registrar software, or another instance of the same
software, can run on the same host (for example, when it is packaged as an application). In that case, the
registrar <bcp14>SHOULD NOT</bcp14> assume that a host-unique name is actually unique. Instead, it <bcp14>SHOULD</bcp14> disambiguate
the name by appending an additional name element, such as the process number of the
running process.</t>

<t>Picking well-known or unique identifiers for registrars also helps operators to troubleshoot, often
by eliminating the need to also know the IP addresses associated with the name.</t>

<t>Target host names need to follow the requirements for host names. By those requirements, ":" is not
permitted in target host names, for example, as part of MAC- or IP-address-based host names.
Instance names do not share these syntactical limitations. For operational simplicity,
an implementation <bcp14>SHOULD</bcp14> construct instance names in the same manner as target host names,
for example, by replacing ":" with "-".</t>

<t>A responder may need to indicate different sockets for different (sets of) variations, for example,
when operating as a Join Proxy according to <xref target="proxy"/>. It then needs to signal a separate service
instance name for each socket. The SRV record of each service instance name carries the appropriate port
information, and its TXT record carries the variations supported on that socket. A responder
<bcp14>MAY</bcp14> create the instance and host name for such different variation sockets by appending the variation
string to the previously determined instance and host names.</t>

</section>
<section anchor="examples"><name>Examples</name>

<t>These examples use an OUI and IPv6 addresses reserved for documentation
purposes. Do not re-use these addresses in actual deployments.</t>

<figure title="DNS-SD for single proxy supporting tBRSKI/cBRSKI variations" anchor="dnssd-example-1"><artwork><![CDATA[
# tBRSKI context
_brski-proxy._tcp.local
               IN PTR  0000-5e00-5314._brski-proxy._tcp.local
0000-5e00-5314._brski-proxy._tcp.local
               IN SRV  1 2 4555 0000-5e00-5314.local
0000-5e00-5314._brski-proxy._tcp.local
               IN TXT  "var=,prm-jose,cmp"

# cBRSKI
_brski-proxy._udp.local
                IN PTR  0000-5e00-5314._brski-proxy._udp.local
0000-5e00-5314._brski-proxy._udp.local
                IN SRV  1 2 5684 0000-5e00-5314.local
0000-5e00-5314._brski-proxy._udp.local
                IN TXT  "var="

# Host name
0000-5e00-5314.local
               IN AAAA  2001:DB8:0815::5e00:5314
]]></artwork></figure>

<t>In <xref target="dnssd-example-1"/>, a proxy on a router that uses mDNS to be discovered
supports tBRSKI with the "rrm" and "prm" modes across the same TCP socket port 4555, with "est" and "cmp".
This leads to the three supported, IANA-registry-defined Variation Strings "" (empty), "prm-jose", and "cmp".
For cBRSKI (UDP), it supports the only variation registered by this document, "" (empty).</t>

<t>Because the proxy announces ",prm-jose,cmp", it must itself have
discovered one or more registrars supporting all three of these variations. When
it connects an incoming connection from a Pledge to a Registrar, it does not know
which of the three announced variations the Pledge wants to use, so the Registrar must
also support all three.</t>

<t>This proxy implementation is running on a router that otherwise has no need for a
host name registered in DNS or DNS-SD. It therefore uses its MAC address as its target host name,
"0000-5e00-5314.local", and the same name is used in the proxy service instance names.
Because it is running on a router without modular software, the proxy knows that no other proxy
instances can run on the same host, and hence the name has no further disambiguating elements.</t>

<t>Note also that there is never a need for two different service instance names between
tBRSKI and cBRSKI, because they are distinguished by the "_tcp" versus "_udp" component of the service
instance name.</t>

<figure title="DNS-SD for tBRSKI/cBRSKI registrar applications" anchor="dnssd-example-2"><artwork><![CDATA[
# tBRSKI registrar application
_brski-registrar._tcp.example.org
     IN PTR  noc-registrar-brski-37253._brski-registrar._tcp.example.org
noc-registrar-brski-37253._brski-registrar._tcp.example.org
     IN SRV  1 2 4555 noc-registrar.example.org
noc-registrar-brski-37253._brski-registrar._tcp.example.org
     IN TXT "var=,cmp"

# cBRSKI registrar application
_brski-registrar._udp.example.org
     IN PTR  noc-registrar-cbrski-5376._brski-registrar._udp.example.org
noc-registrar-cbrski-5376._brski-registrar._udp.example.org
     IN SRV  1 2 7533 noc-registrar.example.org
noc-registrar-cbrski-5376._brski-registrar._udp.example.org
     IN TXT "var="

# tBRSKI, PRM variation application
_brski-registrar._tcp.example.org
               IN PTR noc-registrar-prm-9735._brski-registrar._tcp.example.org
noc-registrar-prm-9735._brski-registrar._tcp.example.org
               IN SRV 1 2 17355 noc-registrar.example.org
noc-registrar-prm-9735._brski-registrar._tcp.example.org
               IN TXT "var=prm-jose"

# Host name
noc-registrar.example.org
               IN AAAA  2001:DB8:0815::5e00:5333
]]></artwork></figure>

<t>In the second example, <xref target="dnssd-example-2"/>, a server system in the NOC of a customer with the
domain example.org is set up as the registrar for various BRSKI options. It uses <xref target="DNSSD-SRP"/>
to register its DNS-SD names in the example.org domain, which it discovers as the default domain.
The host name of the server is set to noc-registrar.example.org.</t>

<t>The operator installs three separate registrar applications on this server:
one from a vendor whose pledges use tBRSKI, one from an integrator supporting pledges
from various "IoT" vendors that use cBRSKI, and one from a manufacturer whose
pledges use BRSKI-PRM.</t>

<t>Each of the three applications operates in the same way for discovery. It opens a socket for
its registrar responder and notes the port number it receives. It determines that
SRP is usable, that the default domain is "example.org", and that the host name
is noc-registrar. It then forms a unique name from noc-registrar by appending
a string abbreviation indicating its mode of operation ("brski", "cbrski", "prm")
and its numeric process identifier, just in case more than one instance of the
same application can be started. It then publishes its PTR, SRV, and TXT DNS RRs,
using these unique service instance names, the respective port number in the
SRV RR, and the variation(s) in the TXT RR.</t>

</section>
</section>
<section anchor="grasp"><name>GRASP</name>

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

<t>The requirements of this document for supporting GRASP are specified solely in
<xref target="grasp-encoding"/>. This document does not specify a mandatory-to-implement (MTI)
"Security and Transport Substrate" (<xref target="GRASP"/>, Section 2.5.1). Requirements for
it depend on the type of (constrained) network in which it is to be deployed.</t>

<t><xref target="ACP"/> specifies one such "Security and Transport Substrate", which is zero-touch deployable.
Initiators and responders implementing the so-called "Autonomic Network Infrastructure" (ANI)
are required to support it. DULL GRASP is used for link-local discovery of
proxies, and the ACP is used to automatically and securely build the connectivity for multi-hop discovery
of registrars by proxies.</t>

</section>
<section anchor="grasp-encoding"><name>Encoding and Examples</name>

<t>To announce protocol variations with <xref target="GRASP"/>, the supported Variation is indicated in the
objective-value field of the GRASP objective, using the Variation String formed as described
in <xref target="subreg-variations"/> and listed in the Variation String column of the <xref target="fig-variations"/> table.</t>

<t>If more than one Variation is supported, then multiple objectives have to be announced, each with
a different objective-value. If the different Variations can be supported across the same socket,
the objectives carry the same locator information, because they will all be connected to the same
registrar. Different sockets require different objective structures in GRASP anyhow.</t>

<t>Compared to DNS-SD, the encoding chosen for GRASP optimizes for minimum parsing effort, whereas
the DNS-SD encoding is optimized for the most compact encoding, given the size limit for DNS-SD TXT records.</t>

<figure title="GRASP example for a BRSKI registrar supporting RRM and PRM" anchor="grasp-example-1"><artwork><![CDATA[
[M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
    [["AN_join_registrar", 4, 255, "EST-TLS"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]],

    [["AN_join_registrar", 4, 255, "prm-jose"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]],

    [["AN_join_registrar", 4, 255, ""],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_UDP, 4684]],

    [["AN_join_registrar_rjp", 4, 255, ""],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_UDP, 4686]]
]
]]></artwork></figure>

<t><xref target="grasp-example-1"/> is an example of a GRASP service announcement by a registrar. It supports BRSKI
with both "rrm" and "prm" on the same TCP port 4443, and cBRSKI (CoAP over DTLS) on UDP
port 4684 in stateful mode and port 4686 in stateless mode. The first variation, for "rrm", uses the
objective-value "EST-TLS" for backward compatibility with <xref target="BRSKI"/>, Section 4.3, where it was introduced
(see Note (1) of <xref target="fig-variations"/>). This special case applies only to BRSKI (TCP). The cBRSKI
announcements use the Variation String "" of the cBRSKI default variation, and are distinguished
from BRSKI by IPPROTO_UDP.</t>

<t>Note that one or more complete service instances (four in the example) can be contained in a single GRASP
message. This does not require any equivalent of the Service Instance Name of the DNS-SD PTR RR or the
Target name of the DNS-SD SRV RR. DNS-SD requires them because its encoding is
decomposed into different RRs. It also intentionally introduces the Service Instance Name
as an element for human interaction with selection (browsing and/or diagnostics of selection),
something that the current GRASP objective-value encoding does not support.</t>

<figure title="GRASP example for a BRSKI Join Proxy supporting RRM and PRM" anchor="grasp-example-2"><artwork><![CDATA[
[M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
    [["AN_Proxy", 4, 1, ""],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 5553]],

    [["AN_Proxy", 4, 1, "prm-jose"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 5555]],

    [["AN_Proxy", 4, 1, ""],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_UDP, 5684]]
]
]]></artwork></figure>

<t><xref target="grasp-example-2"/> shows a corresponding GRASP service announcement by a Join Proxy that
has discovered the registrar from <xref target="grasp-example-1"/> and is now announcing the services that
it can proxy. Whereas registrar announcements as in <xref target="grasp-example-1"/> typically
use a loop-count of 255 in the objective to be seen across the whole network, Join Proxy announcements are
only intended to reach link-local neighboring pledges, and hence use a loop-count of 1.</t>

<t>The Join Proxy uses the AN_Proxy objective with an objective-value of "" for "rrm" in BRSKI, again for
backward compatibility with <xref target="BRSKI"/>, Section 4.1.1. There are no two announcements for cBRSKI, because there is no stateless
mode from Join Proxy to pledge or Registrar-Agent. Instead, the Join Proxy has
to decide whether to connect to the registrar via stateful or stateless mode,
but this decision is not visible in its GRASP announcements.</t>

<t>Also noteworthy is the use of two different ports for "rrm" versus "prm". As the Registrar
announced support for both variations on the same TCP port, the Join Proxy could have
done the same, but by using different ports, the Join Proxy can choose independently
which Registrar to connect "rrm" versus "prm" sessions to. For example, another Registrar
could announce itself for only "prm" and might be preferred by the Join Proxy.</t>

<figure title="GRASP example for a BRSKI Registrar supporting RRM and PRM via separate processes" anchor="grasp-example-3"><artwork><![CDATA[
[M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
    [["AN_join_registrar", 4, 255, "EST-TLS"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]],

    [["AN_join_registrar", 4, 255, ""],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_UDP, 4684]]
]

[M_FLOOD, 42310815, h'fe800000000000000000000000000001', 180000,
    [["AN_join_registrar", 4, 255, "prm-jose"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 44000]]
]
]]></artwork></figure>

<t>In <xref target="grasp-example-3"/>, a separate application process supports "prm", and hence
uses a separate socket, with port number 44000, from that for "rrm", with port 4443.
Assume that there is no shared GRASP implementation across the two separate processes,
for example, because there is a separate GRASP process for each. The announcements from both
processes then cannot be merged into a single GRASP packet. Instead, each one will send its own
GRASP announcements separately. This example primarily serves as a reminder that
GRASP receivers need to support receiving multiple announcements from the
same sender not only within a single packet, but also in separate packets.
This is necessary to support implementation cases just like this one.</t>

<t>For a more extensive, DNS-SD-compatible encoding of the objective-value that also
supports Service Instance Names, see <xref target="I-D.eckert-anima-grasp-dnssd"/>.</t>

</section>
</section>
<section anchor="core-lf"><name>CORE-LF</name>

<section anchor="overview-1"><name>Overview</name>

<t>"Web Linking" (<xref target="RFC8288"/>) defines a format, originally for use in
HTTP headers, to link an HTTP document to other URIs. Web Linking is not a standalone
method for the discovery of services for use with HTTP.</t>

<t>Based on Web Linking, "Constrained RESTful Environments (CoRE) Link Format" (<xref target="CORE-LF"/>) introduces a
standalone method to discover resources, such as service instances.
CORE-LF was introduced primarily for use with <xref target="COAP"/>, but it can equally be used for the discovery of
service instances that use HTTP or any other suitable (web transfer) protocol.
This makes CORE-LF an alternative to DNS-SD and GRASP for cBRSKI variations.</t>

<t>In CORE-LF, an initiator may send a (link-local) IPv6 multicast UDP packet to the CoAP port (5683)
to discover a possible responder for a requested resource. The responder will reply via unicast UDP.
If the IPv6 address of a responder has been configured or is otherwise known to the initiator, it
may instead query the parameters of the desired resource via unicast to the default CoAP UDP or
TCP port (5683).</t>

<t><xref target="RFC9176"/> defines a "Resource Directory" mechanism for CORE-LF, abbreviated CORE-RD. Initiators
can learn the IPv6 address, protocol (TCP or UDP), and port number of a CORE-RD server by some other
mechanism (such as DNS-SD). They can then use a unicast UDP or TCP CoAP connection to the CORE-RD server
to discover CORE-LF resources available on other systems. Resource providers can likewise register
their resources with the resource directory server using CORE-RD registration procedures.</t>

<t>In summary, CORE-LF, including CORE-RD, is a mechanism for registering and discovering resources, and
hence services. It may be preferred over other options in some deployments, and is equally applicable
to registering/discovering any variation of cBRSKI for any type of cBRSKI service.</t>

</section>
<section anchor="background"><name>Background</name>

<t><xref target="cBRSKI"/> and <xref target="cPROXY"/> define three CORE-LF discovery exchanges for cBRSKI. Each of them uses a
different CORE-LF signaling element to indicate the cBRSKI service, which this document considers
the Service Name of that service in CORE-LF (see <xref target="subreg-service-names"/>).</t>

<t><xref target="cPROXY"/> introduces the operation of a CoAP-based Join Proxy in two forms. The first is a
connection-based Join Proxy as in <xref target="BRSKI"/>, only using UDP connections for CoAPS instead
of TCP for TLS as in <xref target="BRSKI"/>. The second is a new, stateless Join Proxy. It eliminates the
need for potentially highly constrained Join Proxy nodes to keep connection state, and avoids
the complexity of protecting that state against attacks.</t>

<t><list style="numbers" type="1">
  <t>Pledges discover Join Proxies (<xref target="cBRSKI"/>, Section 10.1, and <xref target="cPROXY"/>, Section 5.2) via the
target attribute "brski-jp", which is registered by <xref target="cPROXY"/>. The pledge sends a link-local
multicast query to the "All CoAP Nodes" address ff02::fd. The value of the attribute is the
join-port of the Join Proxy. The link target is empty ("&lt;&gt;"), and the pledge uses the link-local
source address of the response as the IP address of the Join Proxy. Because BRSKI is designed so
that pledges can be agnostic of whether they connect to a registrar directly or via a Join Proxy,
a registrar that also accepts connections directly from pledges announces itself in the same way.</t>
  <t>Stateful Join Proxies discover registrars (<xref target="cPROXY"/>, Section 5.1.2) via the resource type
"brski", which <xref target="cBRSKI"/> registers as the base resource of all cBRSKI resources. The link
target is the coaps:// URI of that base resource. If the port is omitted, the default
CoAPS port 5684 is implied.</t>
  <t>Stateless Join Proxies discover registrars (<xref target="cPROXY"/>, Section 5.1.1) via the resource type
"brski.rjp", which is registered by <xref target="cPROXY"/>. The link target is a jpy:// URI with the IP address
and port of the JPY protocol endpoint of the registrar. The "jpy" scheme is also registered by
<xref target="cPROXY"/>.</t>
</list></t>

<t>Join Proxies typically send their queries to the site-local "All CoAP Nodes" address ff05::fd or to
smaller scopes, as discussed in <xref target="cPROXY"/>. The "All CoAP Nodes" addresses are registered in
<xref target="COAP"/>, Section 12.8 (see also <xref target="RFC7390"/>). Even when the registrar IP address is
known, the reply still needs to include this address, because in the <xref target="CORE-LF"/> link format, and
per <xref target="RFC3986"/>, Section 3.2, the authority component cannot include a port number unless it
also includes the IP address.</t>

<t><xref target="cPROXY"/> specifies that Join Proxies only query for the specific service they need, and do not send
wildcard queries such as "rt=brski*".</t>

<figure title="CORE-LF discovery exchanges of cBRSKI and cPROXY" anchor="corelf-example-1"><artwork><![CDATA[
Pledge discovering Join Proxies:

REQ: GET coap://[ff02::fd]/.well-known/core?brski-jp=*

RES: 2.05 Content
     <>;brski-jp=8485

Stateful Join Proxy discovering registrars:

REQ: GET coap://[ff05::fd]/.well-known/core?rt=brski

RES: 2.05 Content
     <coaps://[2001:db8:0:abcd::52]/b>;rt=brski

Stateless Join Proxy discovering registrars:

REQ: GET coap://[ff05::fd]/.well-known/core?rt=brski.rjp

RES: 2.05 Content
     <jpy://[2001:db8:0:abcd::52]:7634>;rt=brski.rjp
]]></artwork></figure>

</section>
<section anchor="corelf-spec"><name>Specification</name>

<t>This section specifies the use of CORE-LF for BRSKI variations.
These specifications are backward-compatible extensions of what is specified in <xref target="cBRSKI"/>
and <xref target="cPROXY"/>, except where noted, in which case the requirements
are narrowed. The following explanations use terms from the ABNF in Section 2 of <xref target="CORE-LF"/> and from
<xref target="RFC3986"/> (URI), and rely on the following template example, <xref target="corelf-template"/>.</t>

<figure title="Template for BRSKI discovery with variations" anchor="corelf-template"><artwork><![CDATA[
Template:

REQ: GET /.well-known/core?rt=brski-service

RES: 2.05 Content
     <scheme://[address]:port path-abempty>;\
       rt=brski-service(;var="brski-variation-string(s)");\
       pw="priority weight"

REQ: GET /.well-known/core?brski-jp=*

RES: 2.05 Content
     <>;brski-jp=join-port(;var="brski-variation-string(s)");\
       pw="priority weight"
]]></artwork></figure>

<t>BRSKI responder sockets indicated by a resource type are indicated in CORE-LF as a URI-Reference.
The URI-Reference <bcp14>SHOULD</bcp14> be a URI with a scheme, the IP address of the responder socket, and the
port used by the responder. It may optionally be followed by a non-empty path-abempty.</t>

<t>URI-References <bcp14>SHOULD NOT</bcp14> use a domain name instead of an address, so that initiators can
select a BRSKI responder without requiring DNS support. Likewise, port and scheme
<bcp14>MUST</bcp14> be included, so that the information can be passed on to consumers without having to
modify it. If this information is omitted, the full information can only be known in the
context of the scheme and port of the connection through which it was retrieved. Initiators
<bcp14>MUST</bcp14> nevertheless accept links without a port from responders that only follow <xref target="cPROXY"/>, in which
case the default CoAPS port 5684 applies (<xref target="cPROXY"/>, Section 5.1.2).</t>

<t>Note that these URI-Reference requirements are stronger than those of <xref target="cBRSKI"/>
and <xref target="cPROXY"/>, to make extensibility easier. For the target attribute "brski-jp", the link
format is as specified in <xref target="cPROXY"/>: the link target is empty, and the value of the attribute
is the join-port.</t>

<t>BRSKI responder sockets <bcp14>MUST</bcp14> include a resource type attribute or a target attribute
indicating a BRSKI service, shown as "brski-service" and "brski-jp" in <xref target="corelf-template"/>.
This value <bcp14>MUST</bcp14> be registered in the IANA "Resource Type (rt=) Link Target Attribute Values" or
"Target Attributes" registry table, and also referenced in the "Service Names" registry table
(<xref target="subreg-service-names"/>).</t>

<t>Discovery of registrar sockets by stateful proxies uses the resource type "brski".
This is used with the coaps:// scheme for cBRSKI.
Stateless registrar sockets use the resource type "brski.rjp". This currently only supports
the jpy:// scheme. By its nature, it can only be used with schemes that rely on UDP.
Join Proxy sockets are discovered by pledges via the target attribute "brski-jp".
These uses of resource types and target attributes are unchanged from <xref target="cBRSKI"/>
and <xref target="cPROXY"/>. This document does not specify how to discover
BRSKI-PLEDGE via CORE-LF.</t>

<t>The variations supported by a BRSKI responder socket are indicated via the optional "var"
target attribute. The value is a quoted-string of one or more comma-separated
BRSKI variation strings, using the same encoding as the DNS-SD "var" key
(<xref target="variation-string-encoding"/>): if the empty Variation String is included, it <bcp14>SHOULD</bcp14> come first,
as in var=",cmp". Because a comma separates links in the CoRE Link Format, the value <bcp14>MUST</bcp14> be
encoded as a quoted-string whenever it contains a comma. The absence of a "var" target attribute
indicates support for only the default variation of the BRSKI context to which the BRSKI service
belongs. This can also be indicated as "var=".</t>

<t>The optional "pw" target attribute indicates priority and weight for the selection of
the resource target, with the semantics and format defined in <xref target="RFC2782"/> for priority
and weight in DNS SRV resource records. If the pw attribute is absent, it is
assumed to be pw="65535 0". For links with the "brski-jp" target attribute, whose link target is
empty, "pw" applies to the join-port endpoint indicated by the "brski-jp" attribute of the same link.</t>

<t>A non-empty path-abempty indicates a path prefix for the endpoints supporting the BRSKI
service and variation that is shorter than the default endpoint paths specified for
the service.</t>

</section>
<section anchor="examples-1"><name>Examples</name>

<figure title="CORE-LF examples for cBRSKI variations" anchor="corelf-example-4"><artwork><![CDATA[
REQ: GET coap://[ff05::fd]/.well-known/core?rt=brski

RES: 2.05 Content
Content-Format: 40
Payload:
 <coaps://[2001:db8:0:abcd::52]/b>;               # [1]
        rt=brski;var=",cmp";pw="1 2"

REQ: GET coap://[ff05::fd]/.well-known/core?rt=brski.rjp

RES: 2.05 Content
Content-Format: 40
Payload:
 <jpy://[2001:db8:0:abcd::52]:7634>;              # [2]
        rt=brski.rjp;var=",cmp";pw="1 2"

REQ: GET coap://[ff02::fd]/.well-known/core?brski-jp=*

RES: 2.05 Content
Content-Format: 40
Payload:
 <>;brski-jp=61616,                               # [3]
 <>;brski-jp=61617;var=",cmp";pw="1 2"            # [4]
]]></artwork></figure>

<t><xref target="corelf-example-4"/> shows example cBRSKI variations in CORE-LF format. Note that
the example is pretty-printed through indentation and by breaking long lines. This
additional white space is not compatible with actual CORE-LF output. Likewise, the text following
"#" consists of editorial comments.</t>

<t>Example [1] is the reply of a registrar to the query of a stateful Join Proxy. The registrar
supports the default cBRSKI variation "" and the variation "cmp" on its CoAPS socket, on the
default port 5684, with the cBRSKI base resource "/b". "pw=" indicates priority and weight as in
DNS-SD. Example [2] is the reply of the same registrar to the query of a stateless Join Proxy, for
its JPY protocol endpoint on port 7634.</t>

<t>Examples [3] and [4] are the reply of a Join Proxy to the query of a pledge. The Join Proxy uses
join-port 61616 for registrars that support only the default variation, and join-port 61617 for
registrars, such as the one in [1] and [2], that support both the default variation and "cmp".
A pledge that does not support "var" can use either join-port for the default variation.</t>

</section>
<section anchor="brski-resources"><name>Resource Type Considerations</name>

<t>CORE-LF expresses information about resources of a target identified by
a resource type. This specification also encodes BRSKI services in CORE-LF as
resource types (or, for the Join Proxy, as the target attribute "brski-jp"), as specified in <xref target="corelf-spec"/>. For the purpose of CORE-LF,
a BRSKI service is just another resource, except that it characterizes the
overall functionality available across a connection to the target, composed
of a sequence of endpoint instantiations. In addition, this behavior is
further refined by the list of supported variations indicated.</t>

<t>Often, resources in CORE-LF do not describe a service, but details of
as little as a single endpoint, such as its URL prefix and format encoding.
This fine-grained specification is not a good replacement for the concept of
service and variation. The availability of a set of endpoints with
specific encodings does not indicate whether the target supports the desired
specific sequencing of instantiating those endpoints. Nor does it indicate whether the target
supports the use of any endpoint encoding option in any combination.</t>

<t>Making such arbitrary combinations a requirement can easily
lead to more generic, but also more costly, implementations and testing
requirements, without necessarily gaining deployment benefits.</t>

<t>BRSKI resource types that are not treated as services according to
this specification, such as those registered by <xref target="cBRSKI"/>, can still be used, if so desired, to amend the
discovery of shortened endpoints, as shown in <xref target="corelf-shortenings"/>.</t>

<figure title="CORE-LF resource examples" anchor="corelf-shortenings"><artwork><![CDATA[
RES: 2.05 Content
Content-Format: 40
Payload:
 <coaps://[2001:DB8:0815::5e00:5314]:5684/b>;      # [1]
        rt=brski;var=",cmp";
        pw="1 2",
 <coaps://[2001:DB8:0815::5e00:5314]:5684/b/rv>;   # [2]
        rt=brski.rv,
 <coaps://[2001:DB8:0815::5e00:5314]:5684/b/vs>;   # [3]
        rt=brski.vs,
 </b/rv>;rt=brski.rv,                              # [4]
 </b/vs>;rt=brski.vs                               # [5]
]]></artwork></figure>

<t>[1] shows how the prefix for all BRSKI endpoints over "coaps://"
can be shortened from "/.well-known/brski" to "/b".</t>

<t>[2] and [3] show the discovery of the endpoints
"/b/rv" and "/b/vs" via the resource types "brski.rv"
and "brski.vs" registered by <xref target="cBRSKI"/>. By using the resource type prefix "brski."
for both of them, as well as the path prefix "/b", it can be implied
that these endpoints are part of the service specified in [1].</t>

<t>These discovery options can be further compacted, as shown in
examples [4] and [5]: the full socket details can be omitted when
they can be inferred from context.</t>

<t>While these shortenings can be highly useful for frequently used
resources, each endpoint in BRSKI is typically only instantiated
once by a pledge, so the overall savings in communication data
from these shortenings are likely negligible. It is
better to define short endpoint paths in the variation
specification if they are likely to be needed, as is done in
<xref target="cBRSKI"/>, so that it is not
necessary in cBRSKI to add such shortenings in discovery.
For these reasons, this document does not specify whether or how
to use such resource targets in conjunction with BRSKI discovery,
but only discusses possibilities and limitations here.</t>

<t>Considerations for such non-service resource type use in BRSKI
nevertheless introduce one requirement to avoid conflicts:
the names of BRSKI services
<bcp14>MUST NOT</bcp14> duplicate the endpoint names of any resources specified
for BRSKI protocols. This means that the resource types "brski.rv",
"brski.vs", and "brski.es" registered by <xref target="cBRSKI"/> cannot be
used as BRSKI service names, and likewise, additional BRSKI endpoints cannot
be called "rjp" or any other string registered in the
BRSKI discovery registry tables.</t>

</section>
</section>
</section>
<section anchor="use-of-multiple-discovery-mechanisms"><name>Use of Multiple Discovery Mechanisms</name>

<t>When supporting multiple discovery mechanisms, nodes announcing BRSKI services
<bcp14>SHOULD</bcp14> announce them in each supported discovery mechanism and transport
option. Different options of discovery mechanisms may require additional
features to be deployed in the network in order to operate, so options that
do not work because their prerequisites are not met cannot be used.
For example, in DNS-SD, there is the transport
option of mDNS, which always works, and there is SRP for DNS-SD via
unicast DNS, which only works when the announcing node can discover (or be
configured with) the necessary SRP server information and potentially
credentials.</t>

<t>When attempting to discover a particular service while supporting multiple
discovery mechanisms/transport options, discovery <bcp14>SHOULD</bcp14> be sequenced according
to implementation preferences.</t>

<t>These policies are just fallback recommendations: across all possible
networks, there is no clear prioritization among different discovery mechanisms,
so no more specific recommendations are possible. However, different types of
deployment environments, specifically different types of IoT networks,
will likely benefit from network-specific policies, outside the scope
of this document, with stricter preferences
for specific discovery mechanisms.</t>

</section>
</section>
<section anchor="updates"><name>Updates</name>

<section anchor="updates-to-rfc9733"><name>Updates to RFC9733</name>

<t>The following text is to be added to the end of Section 5.1 of <xref target="BRSKI-AE"/>.</t>

<t>NEW:</t>

<blockquote>
  <t>For new implementations of BRSKI with CMP and DNS-SD discovery,
the following is <bcp14>RECOMMENDED</bcp14>.</t>

  <t>For DNS-SD, the service name is "brski-registrar"
(see [ThisRFC], <xref target="subreg-service-names"/>) with the TXT key "var" value "cmp"
(see [ThisRFC], <xref target="subreg-variations"/>). This automatically allows the use of Join Proxies
through the mechanisms of [ThisRFC]. They will use "brski-proxy" with the TXT
key "var" value "cmp" to indicate their support for also transparently proxying for a
CMP-supporting registrar.</t>

  <t>Note that these procedures will allow the use of CMP in
cBRSKI, as both "brski-registrar" and "brski-proxy" are also registered
for use with UDP.</t>

  <t>Likewise, "brski-registrar-rjp" with the TXT key "var" value "cmp" and UDP
is <bcp14>RECOMMENDED</bcp14> to support CMP with stateless Join Proxies that support
the mechanisms of [ThisRFC].</t>

  <t>The registrations in [ThisRFC], <xref target="subreg-service-names"/>, also
allow Registrars/Proxies for tBRSKI with CMP to be discovered with the GRASP
discovery mechanism, and Registrars/Proxies for cBRSKI with CMP with the GRASP and
CORE-LF discovery mechanisms.</t>

  <t>If backward compatibility is required, registrars can continue to
announce "brski-reg-cmp" unchanged.</t>
</blockquote>

</section>
<section anchor="updates-to-brski-prm"><name>Updates to BRSKI-PRM</name>

<t>This document updates <xref target="BRSKI-PRM"/> by adding the following text to the end of Section 6.1.1.</t>

<t>NEW:</t>

<blockquote>
  <t>According to the procedures of [ThisRFC], Registrar-Agents can discover
Registrars supporting PRM by discovering Registrars that announce a variation
that includes the Variation Type Choice "prm". Because <xref target="BRSKI-PRM"/> specifies the
use of JOSE for voucher encoding, the correct Variation String to discover is
"prm-jose", as registered in [ThisRFC], <xref target="subreg-variations"/>. Discovery can use
DNS-SD or GRASP, using the encodings specified in [ThisRFC] and
registered in [ThisRFC], <xref target="subreg-variations"/> for the Variation String and
[ThisRFC], <xref target="subreg-service-names"/> for the Service Name.</t>

  <t>Registrar-Agents <bcp14>MAY</bcp14> use Join Proxies that support the procedures of [ThisRFC]
to reach Registrars supporting PRM and using the procedures of [ThisRFC]. This may be of interest if the network available at the location
where the Registrar-Agent operates to access the Pledge is not fully
trusted, but Join Proxies are used to only allow connections to Registrars.</t>
</blockquote>

<t>This document updates <xref target="BRSKI-PRM"/> by adding the following text to the end of Section 6.1.2.</t>

<t>NEW:</t>

<blockquote>
  <t>For more details about discovering Pledges, including a more complete
example and suggested documentation details for manufacturers'
naming schemes, see [ThisRFC], <xref target="brski-pledge"/>. Those procedures
are meant to be fully backward compatible with those specified in <xref target="BRSKI-PRM"/>.</t>
</blockquote>

</section>
<section anchor="adtl"><name>Updates to RFC6690</name>

<t>The following text adds resource type requirements for
"brski", to be inserted after the second paragraph of Section 7.4 of <xref target="CORE-LF"/>.</t>

<t>It recommends that IANA document this addition as indicated in <xref target="rtreg"/>.</t>

<t>NEW:</t>

<blockquote>
  <t>For the Resource Type (rt=) Link Target Attribute table, values starting with the
characters "brski" are also subject to the requirements in the following paragraph.</t>

  <t>Resource Type values with the "brski" prefix that identify a BRSKI service <bcp14>SHOULD</bcp14> support BRSKI discovery as specified in [ThisRFC].
The specification of such a Resource Type <bcp14>SHOULD NOT</bcp14> prohibit or conflict with the ability to
combine variation type values as established by [ThisRFC]. The specification <bcp14>SHOULD</bcp14> include,
or point to, a definition of how the Resource Type is to be included in the "Service Names" sub-registry
of the BRSKI Discovery Parameters registry (<xref target="subreg-service-names"/>). Review of these requirements is to be coordinated between the Designated Experts for
the CoRE parameters (core-parameters@ietf.org) and those for the BRSKI Discovery Parameters registry
(<xref target="reg-discovery"/>).</t>
</blockquote>

</section>
</section>
<section anchor="IANA"><name>IANA considerations</name>

<section anchor="core-parameters"><name>Core Parameters</name>

<section anchor="rtreg"><name>Resource Type Link Target Attribute Values</name>

<t>This document introduces additional requirements for the registration of CoRE Resource
Type values with the prefix "brski" in the "Resource Type (rt=) Link Target Attribute Values" sub-registry
of the "Constrained RESTful Environments (CoRE) Parameters" registry, as specified in <xref target="adtl"/>.</t>

<t>IANA is requested to document these additions by adjusting the registration procedure table
for the "Resource Type (rt=) Link Target Attribute Values" sub-registry as shown in <xref target="fig-rtproc"/>.</t>

<texttable title="Suggested updated registration procedure table for Core (rt=) Link Target Ranges" anchor="fig-rtproc">
      <ttcol align='left'>Range</ttcol>
      <ttcol align='left'>Registration Procedures</ttcol>
      <ttcol align='left'>Note</ttcol>
      <c>value starts with "core"</c>
      <c>IETF Review</c>
      <c>&#160;</c>
      <c>value starts with "brski"</c>
      <c>Specification Required</c>
      <c>Additional requirements in ThisRFC <xref target="adtl"/></c>
      <c>all other values</c>
      <c>Specification Required</c>
      <c>&#160;</c>
</texttable>

</section>
<section anchor="target-attributes"><name>Target Attributes</name>

<texttable title="Target Variation and Priority/Weight Attributes" anchor="fig-attrs">
      <ttcol align='left'>Attribute Name</ttcol>
      <ttcol align='left'>Brief Description</ttcol>
      <ttcol align='left'>Change Controller</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>var</c>
      <c>List of supported variations of target</c>
      <c>IETF</c>
      <c>[ThisRFC]</c>
      <c>pw</c>
      <c>DNS SRV compatible priority and weight of resource target</c>
      <c>IETF</c>
      <c>[ThisRFC]</c>
</texttable>

<t>IANA is asked to add entries for "var" and "pw" to the "Target Attributes" table, according
to <xref target="fig-attrs"/>.</t>

<t>The "var" target attribute is intended to be used in links for BRSKI services as specified in
this document (<xref target="corelf-spec"/>). It is also intended to be usable in other links, if so desired, to
indicate variations of the service or resource of the link. For links that do not indicate a
BRSKI service, the format of the value may differ from that specified for BRSKI.</t>

<t>The "pw" target attribute indicates priority and weight for the selection of
the resource target, with the semantics and format defined in <xref target="RFC2782"/> for priority
and weight in DNS SRV resource records. If the pw attribute is absent, it
is assumed to be pw="65535 0".</t>

</section>
</section>
<section anchor="service-name-registry"><name>Service Names Registry</name>

<t>IANA is asked to modify and amend the "Service Name and Transport Protocol Port Number Registry"
(https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt) as follows.</t>

<t><list style="symbols">
  <t>brski-proxy, brski-registrar, and brski-registrar-rjp are to be added as Service Names for the "udp" protocol,
using ThisRFC, <xref target="subreg-service-names"/>, as the reference.</t>
  <t>The registrations of brski-proxy and brski-registrar for the "tcp" protocol are to be updated to also
include ThisRFC, <xref target="subreg-service-names"/>, as their reference.</t>
  <t>The Defined TXT keys column for brski-proxy and brski-registrar for the "tcp" and "udp" protocols,
and for brski-registrar-rjp for the "udp" protocol, is to state the following text:  <vspace blankLines='1'/>
Defined TXT keys: var= comma separated &lt;variation-string(s)&gt;, See ThisRFC <xref target="variation-string-encoding"/>, <xref target="subreg-variations"/></t>
</list></t>

</section>
<section anchor="grasp-registry"><name>GRASP Objective Names Registry</name>

<t>IANA is asked to add the following entry to the "GRASP Objective Names" registry on the
"GeneRic Autonomic Signaling Protocol (GRASP) Parameters" registry page.</t>

<texttable title="GRASP Objective Names Registry addition" anchor="fig-grasp-registry">
      <ttcol align='left'>Objective Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>AN_join_registrar_rjp</c>
      <c>ThisRFC, <xref target="subreg-service-names"/></c>
</texttable>

</section>
<section anchor="reg-discovery"><name>BRSKI Discovery Parameters</name>

<t>IANA is asked to add a registry called "BRSKI Discovery Parameters"
to the "Bootstrapping Remote Secure Key Infrastructures (BRSKI) Parameters"
registry page (https://www.iana.org/assignments/brski-parameters/brski-parameters.xhtml).</t>

<t>The BRSKI Discovery Parameters registry includes several sub-registries that
depend on each other. Because the registry has sub-registries,
one table has to be chosen to represent the overall registry. The table
used to represent the BRSKI Discovery Parameters registry is the list of supported
discovery mechanisms.</t>

<t>The Registration Procedure for this registry is Specification Required, where the Expert Review has to ensure
that entries comply with the following rules.</t>

<t>Additions to this registry require a specification of the use of the newly registered discovery mechanism
with BRSKI discovery procedures, in the way they are specified in this document for DNS-SD, GRASP, and CORE-LF.</t>

<t>Changes/extensions to the procedures for any existing registered discovery mechanism, including
DNS-SD, GRASP, or CORE-LF, can be made by adding such a specification to the Reference(s) column.</t>

<t>Any incremental changes to the procedures of a discovery mechanism require the same or a higher level
of specification as the one that first introduced the discovery mechanism. Changes to the procedures
for DNS-SD, GRASP, or CORE-LF hence require an IETF Standards Track specification.</t>

<t>The initial content is as follows.</t>

<dl>
  <dt>Designated Experts:</dt>
  <dd>
    <t>TBD.</t>
  </dd>
  <dt>Registration Procedure:</dt>
  <dd>
    <t>Specification Required.</t>
  </dd>
  <dt>Notes:</dt>
  <dd>
    <t>See [ThisRFC], <xref target="reg-discovery"/></t>
  </dd>
</dl>

<texttable title="Discovery Mechanisms initial registry table" anchor="fig-discovery-mechanisms">
      <ttcol align='left'>Discovery Mechanism</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>DNS-SD</c>
      <c>ThisRFC</c>
      <c><xref target="dns-sd-spec"/></c>
      <c>GRASP</c>
      <c>ThisRFC</c>
      <c><xref target="grasp"/></c>
      <c>CORE-LF</c>
      <c>ThisRFC</c>
      <c><xref target="core-lf"/></c>
</texttable>

<section anchor="subreg-contexts"><name>Contexts</name>

<t>IANA is asked to create a sub-registry called "Contexts" in the "BRSKI Discovery Parameters" registry.</t>

<t>The Registration Procedure for this registry is Specification Required, where the Expert Review has to ensure
the feasibility of entries with respect to the following behavior/rules.</t>

<t>A Context is a name for a group of one or more BRSKI services. This sub-registry registers
a Context name and the list of Variation Types defined for the Context.</t>

<t>Variation Types are case-insensitive, consist only of the letters a-z and the digits 0-9,
must start with a letter, and must be at most 12 characters long.</t>

<t>Registration of new Contexts <bcp14>MUST</bcp14> include a specification of how to use discovery with the new Context,
using the specifications for tBRSKI, cBRSKI, and BRSKI-PLEDGE in this document as examples.</t>

<t>Technically, Contexts with the same set of Variation Types exist, for example, to allow different protocol
stacks for otherwise logically the same type of services to be registered, and hence discovered; otherwise,
a tBRSKI pledge might discover a cBRSKI registrar. See <xref target="subreg-service-names"/> for more details.</t>

<t>The order of Variation Types defines the order in which Variation Type Values are concatenated
to generate Variation Strings, as described in <xref target="subreg-variations"/>. Therefore, once registered,
Variation Types <bcp14>SHOULD NOT</bcp14> be changed or deleted, so that new Variation Strings will be constructed
consistently with old ones. New Variation Types may only be appended through registration updates.</t>

<t>Registration of additional Variation Types <bcp14>MUST</bcp14> include a specification of how they map
to specific functions of the services that use them, as this specification does for tBRSKI, cBRSKI, and
BRSKI-PLEDGE.</t>

<t>Registrations of a new Context <bcp14>MAY</bcp14> initially not define any Variation Types, if Variations
are not yet considered for that Context.</t>

<t>The initial content of this sub-registry is as follows.</t>

<dl>
  <dt>Designated Experts:</dt>
  <dd>
    <t>TBD.</t>
  </dd>
  <dt>Registration Procedure:</dt>
  <dd>
    <t>Specification Required.</t>
  </dd>
  <dt>Notes:</dt>
  <dd>
    <t>See [ThisRFC], <xref target="subreg-contexts"/></t>
  </dd>
</dl>

<texttable title="Contexts initial sub-registry table" anchor="fig-subreg-contexts">
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Variation Types</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>tBRSKI</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>See <xref target="contexts"/></c>
      <c>cBRSKI</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>See <xref target="contexts"/></c>
      <c>BRSKI-PLEDGE</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>See <xref target="brski-pledge-context"/></c>
</texttable>

</section>
<section anchor="subreg-service-names"><name>Service Names</name>

<t>IANA is asked to create a sub-registry called "Service Names" in the "BRSKI Discovery Parameters" registry.</t>

<t>The Registration Procedure for this registry is Specification Required, where the Expert Review has to ensure
the feasibility of entries with respect to the following behavior/rules.</t>

<t>Each entry registers a Service Name intended for the discovery of a BRSKI-related service
using a specific discovery mechanism. The service is to be accessed via specific service (transport) stack
Parameter(s) that need to be known to the discovery mechanism.</t>

<t>Depending on the discovery mechanism, the Service Name represents a different signaling element
of the discovery mechanism, as follows.</t>

<t><list style="symbols">
  <t>For DNS-SD, the Service Name in the table is the DNS-SD Service Name, which <bcp14>MUST</bcp14> also be registered in
the IANA "Service Name and Transport Protocol Port Number Registry" for use with the DNS-SD
protocol indicated in the Parameter(s) column.</t>
  <t>For GRASP, the Service Name is the GRASP Objective Name, which <bcp14>MUST</bcp14> also be registered
in the IANA "GeneRic Autonomic Signaling Protocol (GRASP) Parameters" /
"GRASP Objective Names" registry.</t>
  <t>For CORE-LF, the Service Name is either a CoRE Resource Type (rt=) value, which
<bcp14>MUST</bcp14> be registered in the IANA "Constrained RESTful Environments (CoRE) Parameters" /
"Resource Type (rt=) Link Target Attribute Values" registry, or the name of a CoRE target attribute
(indicated as "(target attribute)" in the Parameter(s) column), which <bcp14>MUST</bcp14> be registered in the
IANA "Constrained RESTful Environments (CoRE) Parameters" / "Target Attributes" registry (<xref target="RFC9423"/>).</t>
</list></t>

<t>A Context is a grouping of one or more services with the same set of Variation Types and Values,
as defined in <xref target="subreg-contexts"/>. Re-use of the same Service Name across multiple
Contexts requires the services to be distinguished through Parameter(s) that are used as
additional distinguishers (besides the Service Name) in the discovery mechanism.</t>

<t>For example, AN_Proxy is used as the GRASP Objective (aka "Service Name") to discover <xref target="BRSKI"/>
Join Proxies and connect to them via TCP. This is indicated through the IPPROTO_TCP parameter in GRASP.
Likewise, when a constrained BRSKI proxy as described in <xref target="cPROXY"/> is to be
discovered via GRASP, IPPROTO_UDP is to be used in GRASP to distinguish such a cBRSKI Proxy from a
BRSKI Proxy.</t>

<t>Informal names for services are best documented in the Notes column.</t>

<t>In addition to the registrations from other BRSKI RFCs, the initial registry table adds registrations
for discovering cBRSKI stateful and stateless Registrars and Join Proxies via GRASP and DNS-SD.
The necessary additional registrations for these are included in <xref target="service-name-registry"/> for DNS-SD
and <xref target="grasp-registry"/> for GRASP. With these registrations, tBRSKI services can use DNS-SD or GRASP,
and cBRSKI services can use DNS-SD, GRASP, or CORE-LF for discovery. This document does not specify
CORE-LF discovery for tBRSKI, because the existing CoRE registrations for BRSKI are specific to cBRSKI
and CoAPS.</t>

<t>The initial content of this sub-registry is as follows.</t>

<dl>
  <dt>Designated Experts:</dt>
  <dd>
    <t>TBD.</t>
  </dd>
  <dt>Registration Procedure:</dt>
  <dd>
    <t>Specification Required.</t>
  </dd>
  <dt>Notes:</dt>
  <dd>
    <t>See [ThisRFC], <xref target="subreg-service-names"/></t>
  </dd>
</dl>

<texttable title="Service Name(s) initial sub-registry table" anchor="fig-subreg-service-names">
      <ttcol align='left'>Service Name(s)</ttcol>
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Discovery Mechanism</ttcol>
      <ttcol align='left'>Parameter(s)</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>brski-proxy</c>
      <c>tBRSKI</c>
      <c>DNS-SD</c>
      <c>tcp</c>
      <c>RFC8995</c>
      <c>Proxy</c>
      <c>brski-registrar</c>
      <c>tBRSKI</c>
      <c>DNS-SD</c>
      <c>tcp</c>
      <c>RFC8995</c>
      <c>Registrar (stateful)</c>
      <c>AN_Proxy</c>
      <c>tBRSKI</c>
      <c>GRASP</c>
      <c>IPPROTO_TCP</c>
      <c>RFC8995</c>
      <c>Proxy</c>
      <c>AN_join_registrar</c>
      <c>tBRSKI</c>
      <c>GRASP</c>
      <c>IPPROTO_TCP</c>
      <c>RFC8995</c>
      <c>Registrar (stateful)</c>
      <c>brski-jp</c>
      <c>cBRSKI</c>
      <c>CORE-LF</c>
      <c>coaps (target attribute)</c>
      <c>I-D.ietf-anima-constrained-join-proxy</c>
      <c>Proxy</c>
      <c>brski</c>
      <c>cBRSKI</c>
      <c>CORE-LF</c>
      <c>coaps</c>
      <c>I-D.ietf-anima-constrained-voucher, I-D.ietf-anima-constrained-join-proxy</c>
      <c>Registrar (stateful)</c>
      <c>brski.rjp</c>
      <c>cBRSKI</c>
      <c>CORE-LF</c>
      <c>jpy</c>
      <c>I-D.ietf-anima-constrained-join-proxy</c>
      <c>Registrar (stateless)</c>
      <c>AN_Proxy</c>
      <c>cBRSKI</c>
      <c>GRASP</c>
      <c>IPPROTO_UDP</c>
      <c>THIS-RFC</c>
      <c>Proxy</c>
      <c>AN_join_registrar</c>
      <c>cBRSKI</c>
      <c>GRASP</c>
      <c>IPPROTO_UDP</c>
      <c>THIS-RFC</c>
      <c>Registrar (stateful)</c>
      <c>AN_join_registrar_rjp</c>
      <c>cBRSKI</c>
      <c>GRASP</c>
      <c>IPPROTO_UDP</c>
      <c>THIS-RFC</c>
      <c>Registrar (stateless)</c>
      <c>brski-proxy</c>
      <c>cBRSKI</c>
      <c>DNS-SD</c>
      <c>udp</c>
      <c>THIS-RFC</c>
      <c>Proxy</c>
      <c>brski-registrar</c>
      <c>cBRSKI</c>
      <c>DNS-SD</c>
      <c>udp</c>
      <c>THIS-RFC</c>
      <c>Registrar (stateful)</c>
      <c>brski-registrar-rjp</c>
      <c>cBRSKI</c>
      <c>DNS-SD</c>
      <c>udp</c>
      <c>THIS-RFC</c>
      <c>Registrar (stateless)</c>
      <c>brski-pledge</c>
      <c>BRSKI-PLEDGE</c>
      <c>DNS-SD</c>
      <c>tcp</c>
      <c>I-D.anima-brski-prm, THIS-RFC</c>
      <c>&#160;</c>
</texttable>

</section>
<section anchor="subreg-choices"><name>Variation Type Choices</name>

<t>IANA is asked to create a sub-registry called "Variation Type Choices" in the "BRSKI Discovery Parameters" registry.</t>

<t>The Registration Procedure for this registry is Specification Required, where the Expert Review has to ensure
the feasibility of entries with respect to the following expectations/rules.</t>

<t>Each row registers one Variation Type Choice for one Context (as registered in <xref target="subreg-contexts"/>), and
specifies the Variation Type (also as registered in <xref target="subreg-contexts"/>) for which it is a choice.</t>

<t>All Variation Type Choices <bcp14>MUST</bcp14> be unique across all Variation Types, so that the Variation Type can
always be deduced from the Variation Type Choice. This permits future encodings that do not necessarily
have to use the Variation String representation (as registered in <xref target="subreg-variations"/>), and also makes
it easier to recognize erroneous variation representations.</t>

<t>Because they are used in protocol encodings, Variation Type Choices
<bcp14>MUST</bcp14> be as simple as possible. They <bcp14>MUST</bcp14> consist only of the characters a-z and 0-9.</t>

<t>The "Dflt" flag indicates that the Variation Type Choice is the default choice for its Variation Type.
Default choices are not included in the Variation String encoding of Variations. When new Variation
Types are added to a Context to introduce variations of a new aspect of BRSKI, the backward-compatible
choice has to become the default choice for that new Variation Type.</t>

<t>The "Rsvd" flag indicates a choice that has not been sufficiently vetted/specified to allow its use in
Variations (<xref target="subreg-variations"/>), but that is known to be a possible candidate and is reserved to track
that possible extension through future specification work.</t>

<t>References in parentheses specify the necessary functionality for a Variation Type Choice, but do not
specify the actual registration of the Variation Type Choice.</t>

<t>The initial content is as follows.</t>

<dl>
  <dt>Designated Experts:</dt>
  <dd>
    <t>TBD.</t>
  </dd>
  <dt>Registration Procedure:</dt>
  <dd>
    <t>Specification required.</t>
  </dd>
</dl>

<texttable title="Variation Type Choices initial sub-registry table" anchor="fig-choices">
      <ttcol align='left'>Flags</ttcol>
      <ttcol align='left'>Variation Type Choice</ttcol>
      <ttcol align='left'>Variation Type</ttcol>
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Note(s)</ttcol>
      <c>Dflt</c>
      <c>rrm</c>
      <c>mode</c>
      <c>tBRSKI</c>
      <c>(RFC8995),ThisRFC</c>
      <c>Registrar Responder Mode</c>
      <c>&#160;</c>
      <c>prm</c>
      <c>mode</c>
      <c>tBRSKI</c>
      <c>(I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>Pledge Responder Mode</c>
      <c>Dflt</c>
      <c>cmsj</c>
      <c>vformat</c>
      <c>tBRSKI</c>
      <c>(RFC8366bis,RFC8995),ThisRFC</c>
      <c>CMS-signed JSON Voucher</c>
      <c>&#160;</c>
      <c>jose</c>
      <c>vformat</c>
      <c>tBRSKI</c>
      <c>(I-D.ietf-anima-jws-voucher),ThisRFC</c>
      <c>JOSE-signed JSON</c>
      <c>&#160;</c>
      <c>cose</c>
      <c>vformat</c>
      <c>tBRSKI</c>
      <c>ThisRFC</c>
      <c>CBOR with COSE signature</c>
      <c>Dflt</c>
      <c>est</c>
      <c>enroll</c>
      <c>tBRSKI</c>
      <c>(RFC7030,RFC8995),ThisRFC</c>
      <c>Enrollment over Secure Transport</c>
      <c>&#160;</c>
      <c>cmp</c>
      <c>enroll</c>
      <c>tBRSKI</c>
      <c>(RFC9733,RFC9483),ThisRFC</c>
      <c>Lightweight CMP Profile / BRSKI-AE</c>
      <c>Rsvd</c>
      <c>scep</c>
      <c>enroll</c>
      <c>tBRSKI</c>
      <c>ThisRFC</c>
      <c>common legacy option</c>
      <c>Dflt</c>
      <c>rrm</c>
      <c>mode</c>
      <c>cBRSKI</c>
      <c>(I-D.anima-constrained-voucher),ThisRFC</c>
      <c>Registrar Responder Mode</c>
      <c>Dflt</c>
      <c>cose</c>
      <c>vformat</c>
      <c>cBRSKI</c>
      <c>(I-D.ietf-anima-constrained-voucher),ThisRFC</c>
      <c>CBOR with COSE signature</c>
      <c>&#160;</c>
      <c>cmsj</c>
      <c>vformat</c>
      <c>cBRSKI</c>
      <c>ThisRFC</c>
      <c>CMS-signed JSON Voucher</c>
      <c>&#160;</c>
      <c>jose</c>
      <c>vformat</c>
      <c>cBRSKI</c>
      <c>ThisRFC</c>
      <c>JOSE-signed JSON</c>
      <c>Dflt</c>
      <c>est</c>
      <c>enroll</c>
      <c>cBRSKI</c>
      <c><xref target="RFC9148"/>, ThisRFC</c>
      <c>Enroll via EST over COAP</c>
      <c>&#160;</c>
      <c>cmp</c>
      <c>enroll</c>
      <c>cBRSKI</c>
      <c>(RFC9733,RFC9483),ThisRFC</c>
      <c>Lightweight CMP Profile / BRSKI-AE</c>
      <c>Dflt</c>
      <c>prm</c>
      <c>mode</c>
      <c>BRSKI-PLEDGE</c>
      <c>(I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>Pledge responder Mode</c>
      <c>Dflt</c>
      <c>jose</c>
      <c>vformat</c>
      <c>BRSKI-PLEDGE</c>
      <c>(I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>JOSE-signed JSON</c>
      <c>Rsvd</c>
      <c>cmsj</c>
      <c>vformat</c>
      <c>BRSKI-PLEDGE</c>
      <c>(I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>CMS-signed JSON Voucher</c>
      <c>Rsvd</c>
      <c>cose</c>
      <c>vformat</c>
      <c>BRSKI-PLEDGE</c>
      <c>(I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>CBOR with COSE signature</c>
      <c>Dflt</c>
      <c>est</c>
      <c>enroll</c>
      <c>BRSKI-PLEDGE</c>
      <c>(I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>Enroll via EST modified for PRM</c>
      <c>&#160;</c>
      <c>cmp</c>
      <c>enroll</c>
      <c>BRSKI-PLEDGE</c>
      <c>(RFC9733,RFC9483,I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>Lightweight CMP Profile with PRM</c>
</texttable>

</section>
<section anchor="subreg-variations"><name>Variations</name>

<t>IANA is asked to create a sub-registry called "Variations" in the "BRSKI Discovery Parameters" registry.</t>

<t>The Registration Procedure for this registry is Specification Required, where the Expert Review has to ensure
the feasibility of entries with respect to the following behavior/rules.</t>

<t>Each row registers one or more Variation String(s) that represent one Variation
in one Context, and specifies the combination of Variation Type Values indicated by that Variation.</t>

<t>Variation Type Values <bcp14>MUST</bcp14> be listed in the order in which their Variation Types appear in <xref target="subreg-contexts"/>,
including the default Variation Type Values for the Variation Types known at the time of registration.
Once a Variation String for a Context is registered, its listed Variation Type Values <bcp14>SHOULD
NOT</bcp14> be modified (except to correct an erroneous registration).</t>

<t>The primary Variation String <bcp14>SHOULD</bcp14> be derived by concatenating the listed Variation Type
Values, separated by "-", except for default values. This is called the standard Variation String construction rule.
The empty string is represented as "".</t>

<t>Any Variation String that does not follow this construction rule <bcp14>SHOULD</bcp14> receive a note explaining why.</t>

<t>When new Variation Types are later introduced into the Contexts table (<xref target="subreg-contexts"/>),
they will not lead to a change in the Variation String(s); instead, it is understood
that the Variation represents the default Variation Type Values for any such additional
Variation Types.</t>

<t>This registry table exists to document which specification(s) use specific
Variations, so that implementations do not have to consider supporting arbitrary
possible (but not validated by specification) Variations.</t>

<t>The sub-registries specified above register the permissible Context and Variation Type Values.</t>

<t>The initial content is as follows.</t>

<dl>
  <dt>Designated Experts:</dt>
  <dd>
    <t>TBD.</t>
  </dd>
  <dt>Registration Procedure:</dt>
  <dd>
    <t>Specification required.</t>
  </dd>
  <dt>Notes:</dt>
  <dd>
    <t>(1) For backward compatibility with <xref target="BRSKI"/>, Section 4.3, the objective-value of the GRASP
objective AN_join_registrar for this Variation <bcp14>MUST</bcp14> be the exact (uppercase) string "EST-TLS",
and receivers <bcp14>MUST</bcp14> treat an AN_join_registrar objective-value of "EST-TLS" as this Variation.
In all other cases, including the GRASP objective AN_Proxy (<xref target="BRSKI"/>, Section 4.1.1), this
Variation is signaled with the Variation String "".</t>
  </dd>
</dl>

<texttable title="Variations initial sub-registry table" anchor="fig-variations">
      <ttcol align='left'>Variation String</ttcol>
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Variation</ttcol>
      <ttcol align='left'>Specification(s)</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>""</c>
      <c>tBRSKI</c>
      <c>rrm cmsj est</c>
      <c>RFC8995</c>
      <c>See Note (1)</c>
      <c>cmp</c>
      <c>tBRSKI</c>
      <c>rrm cmsj cmp</c>
      <c>RFC9733</c>
      <c>&#160;</c>
      <c>prm-jose</c>
      <c>tBRSKI</c>
      <c>prm jose est</c>
      <c>(I-D.ietf-anima-jws-voucher,I-D.ietf-anima-brski-prm),ThisRFC</c>
      <c>I-D.ietf-anima-brski-prm also includes required extensions to EST</c>
      <c>""</c>
      <c>cBRSKI</c>
      <c>rrm cose est</c>
      <c>I-D.ietf-anima-constrained-voucher</c>
      <c>&#160;</c>
      <c>cmp</c>
      <c>cBRSKI</c>
      <c>rrm cose cmp</c>
      <c>(RFC9733,RFC9483),ThisRFC</c>
      <c>&#160;</c>
      <c>""</c>
      <c>BRSKI-PLEDGE</c>
      <c>prm jose est</c>
      <c>I-D.ietf-anima-brski-prm</c>
      <c>&#160;</c>
</texttable>

</section>
</section>
<section anchor="brski-well-known-uris-fixes-opportunistic"><name>BRSKI Well-Known URIs fixes (opportunistic)</name>

<t>The following change requests to "https://www.iana.org/assignments/brski-parameters/brski-parameters.xhtml#brski-well-known-uris" are cosmetic in nature, and are included in this document solely because the mechanisms specified in this document imply support for Endpoint URIs, and the existing registry has these cosmetic issues.</t>

<t><list style="numbers" type="1">
  <t>IANA is asked to change the name of the first column of the table from "URI" to "URI Suffix". This aligns with other table columns with the same syntax/semantics, such as in "https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml".</t>
  <t>IANA is asked to change the Reference from "RFC8995" to "RFC8995, Section 8.3.1".</t>
  <t>IANA is asked to include the following "Note" text: "The following table contains the assigned BRSKI protocol Endpoint URI suffixes under "/.well-known/brski"." This note is added to introduce the term "Endpoint" into the registry table, as that is the term commonly used (instead of URI) in several of the memos for which this discovery document was written. It is meant to help readers map the registry to the terminology used in those documents.</t>
</list></t>

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

<t>This document only discusses the use of discovery for BRSKI within well-controlled networks,
not across the Internet. Procedures for BRSKI across the Internet are covered in
<xref target="I-D.ietf-anima-brski-cloud"/>. That document can support the discovery of Registrars (only) for
trusted DNS names and trust anchors that are hard-coded into the discovering Pledges
(such as those from their manufacturer or its agents), but not the more flexible framework of this document.</t>

<t>None of the attacks possible via discovery can result in a successful BRSKI enrollment,
because of the PKI authentication used. Instead, all attack vectors are
Denial-of-Service attacks: generating fake service announcements to distract
from correct announcements, or overloading the network or service-announcing nodes with
traffic or requests. None of these attacks are specific to or new with BRSKI discovery;
they are all well-understood issues of the discovery mechanisms used, and they
are manageable, as shown by the use of those discovery mechanisms.</t>

<t>In <xref target="BRSKI-PRM"/>, pledges are more easily subject to DoS attacks than in <xref target="BRSKI"/>, because attackers
can act as initiators. They can delay or prevent the enrollment of a pledge by opening so many connections to
the pledge that a valid Registrar-Agent's connection to the pledge may not be possible. Discovery
of the pledge via DNS-SD increases the ability of attackers to find pledges against which such
DoS attacks can be attempted.</t>

<t>Especially when supporting DNS-SD browsing across unicast DNS,
pledges <bcp14>MUST</bcp14> implement DoS prevention measures, such as limiting the number and rate of accepted TCP
connections on a per-initiator basis. If feasible for the implementation, simultaneous connections
<bcp14>SHOULD</bcp14> be possible, so that an ongoing attacker connection will not delay a valid Registrar-Agent
connection. When accepting connections, a strategy such as LRU <bcp14>MAY</bcp14> be used to ensure that an attacker
will not be able to monopolize connections.</t>

<t>Browsing via DNS-SD, especially via unicast DNS, which makes information available network-wide, also
introduces a passive attack: gathering intelligence about the type and serial number of
devices installed in the network. Whether or not this is seen as a relevant risk is highly
installation dependent. Networks <bcp14>SHOULD</bcp14> implement filtering measures at the mDNS and/or DNS RR/service
level to prevent such data collection if there is a risk and it is seen as an undesirable attack
vector.</t>

<t>Service instance names as defined in <xref target="brski-pledge"/> are used to discover pledges
by their manufacturer-assigned serial numbers. Today, DNS-SD does not provide security
against impersonation of such service instance names. Instead, impersonation can only be, and
will only be, discovered after performing BRSKI connections to the pledge. It should
be noted that the scheme used by <xref target="brski-pledge"/> could actually be used to protect
against impersonation when <xref target="DNSSD-SRP"/> is used with some security extension.
Pledges would need to authenticate their SRP registrations with their IDevID. The SRP server
would need to have the same manufacturer Service Instance Name schema and manufacturer
trust anchor information as BRSKI registrars. It could then allow only the permissible
service instance name DNS-SD RRs for this pledge. In fact, the SRP server could
create all the DNS-SD RRs required by <xref target="brski-pledge"/> from the IDevID
information, even if the pledge itself does not request them or requests other
DNS-SD RRs. Definition of these procedures is, however, outside the scope of this
specification.</t>

<t>None of the discovery mechanisms (DNS-SD, GRASP, or CORE-LF) is necessarily secure. Instead,
how trustworthy service announcements are is a matter of their deployment. In an
unprotected deployment with DNS-SD via mDNS, for example, an attacker could attract
connections from initiators by announcing itself with the best priority value. When a
deployment instead uses a secure domain deployment model, such as an <xref target="ACP"/>,
a secured wireless mesh technology, or discovery via a secured DNS server, then
service announcements, and with them their service parameters, are typically assumed to be
trustworthy. In those deployments, the security question is then primarily about the
attack vectors for impairing such a responder to make it behave in undesirable ways.</t>

<t>Encrypted and authenticated transports for discovery mechanisms, such as DoT (<xref target="RFC7858"/>) or DoQ (<xref target="RFC9250"/>),
are useful to have, but they require trust anchors, usually those of the WebPKI. Most
service-announcing entities inside many controlled networks will not be able to provide such trust anchors,
due to an intentional lack of Internet connectivity. These trust anchors may also be fragile with respect to
expiry for requesting devices such as Pledges, which may sit on shelves for a decade before
being activated.</t>

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

<t>Many thanks for reviews by Arthur Hecker and Steffen Fries, and for discussions/feedback from Brian Carpenter, Michael Richardson, Michael Kovatsch, and Stuart Cheshire. Special thanks to Amanda Barber for her IANA section review. Thanks a lot for Russ Housley's IOTDIR review, Xiao Min's OPSDIR review, and Daniele Ceccarelli's RTGDIR review.</t>

<section anchor="limitations"><name>Limitations</name>

<t>[RFC Editor: please remove this section.]</t>

<t>In version -16 of this document, transport-independent discovery via CORE-LF had to be dropped,
because the pre-existing CoRE registrations for BRSKI are specific to CoAPS: the target attribute
"brski-jp" that <xref target="cPROXY"/> registers for the discovery of Join Proxies by pledges is defined only
for CoAPS endpoints (coaps://host:port), and the resource type "brski" registered by <xref target="cBRSKI"/>
is defined as the base resource of the cBRSKI resources. Hence, this version of the document also
removes CORE-LF support for tBRSKI.</t>

<t>Updating these IANA registrations to be transport-independent (for example, by letting the scheme
of the link determine the transport) may open the path to simple, transport-independent resource
types again. It is unclear, however, what impact this would have on pre-existing implementations.</t>

</section>
<section anchor="change-log"><name>Change log</name>

<t>[RFC Editor: please remove this section.]</t>

<t>WG draft 16:</t>

<t>Semantic fixes from claude.ai:</t>

<t><list style="symbols">
  <t>simplify encoding to remove unnecessary variation string aliases to simplify coding
  <list style="symbols">
      <t>fix inconsistencies in specification of EST-TLS backward compatibility: "EST-TLS" is now only used (and required) as the GRASP AN_join_registrar objective-value for the default BRSKI variation, everywhere else this variation is signaled as "". Removed the "est-tls" alternative Variation String.</t>
      <t>Variation Strings: removed the recommendation for non-empty alternative Variation Strings, so every Variation has exactly one Variation String, constructed by the standard rule (default Variation Type Choices omitted). Fixed examples accordingly: "rrm-cmsj-est" -&gt; "prm-jose" (Variation Strings section) and "" (QUIC example), "rrm-cose" and cBRSKI "rrm" -&gt; "", "prm" -&gt; "prm-jose".</t>
      <t>Variations registry: BRSKI-PLEDGE Variation String "prm-jose" -&gt; "" (both "prm" and "jose" are defaults in that context). Note (1) rewritten for the GRASP "EST-TLS" exception.</t>
      <t>CORE-LF: "var=" value is now comma-separated (same as DNS-SD) instead of space-separated, so that the empty Variation String can be included in a list. The value <bcp14>MUST</bcp14> be a quoted-string when it contains a comma.</t>
      <t>Join Proxy support for Variations: added requirement (<bcp14>MUST</bcp14>) for Join Proxies to treat an AN_join_registrar objective-value of "EST-TLS" as the Variation String "".</t>
    </list></t>
  <t>Variations registry: added cBRSKI Variation "cmp" (rrm cose cmp), as already assumed by the update to RFC9733.</t>
  <t>CORE-LF: reworked to align with draft-ietf-anima-constrained-join-proxy-21 and draft-ietf-anima-constrained-voucher-31
  <list style="symbols">
      <t>Join Proxy discovery by pledges now uses the target attribute "brski-jp" (replacing the obsolete resource type "brski.jp").</t>
      <t>Stateful registrar discovery now uses the resource type "brski" (the non-existent "brski.rs" is removed).</t>
      <t>Stateless registrar discovery uses the resource type "brski.rjp" with scheme "jpy" (replacing "brski.rjpy", "brski.jpy" and "coaps+jpy").</t>
      <t>"var" and "pw" are specified as additional target attributes on these links (for "brski-jp" links, "pw" applies to the indicated join-port); the template now queries for a specific service instead of the wildcard "rt=brski.*" (not sent per cPROXY).</t>
      <t>Service Names registry: updated CORE-LF rows accordingly; CORE-LF Service Names can now also be target attributes.</t>
      <t>Endpoint shortening example: updated to the resource types registered in cBRSKI (brski, brski.rv, brski.vs).</t>
      <t>Fixed RFC6690 update text to refer to the Service Names sub-registry instead of the Contexts sub-registry.</t>
    </list></t>
  <t>removed CORE-LF discovery for tBRSKI (https), because the pre-existing CoRE registrations of cPROXY ("brski-jp") and cBRSKI ("brski") are CoAPS/cBRSKI specific. Removed the tBRSKI CORE-LF rows from the Service Names registry and adjusted text and examples. Added section "Limitations" explaining this.</t>
  <t>registry fixes
  <list style="symbols">
      <t>Contexts registry: Notes column now references the section specifying each context.</t>
      <t>Service Names registry: Notes for brski-registrar-rjp corrected from "Proxy (stateless)" to "Registrar (stateless)".</t>
      <t>Service Names registry: removed a misplaced paragraph about Variation Type Choice syntax (belongs to, and is already covered by, the Variation Type Choices registry).</t>
      <t>Service Name registry update: Defined TXT keys text for brski-registrar-rjp now only refers to "udp".</t>
      <t>Variation String ordering: it is the order of Variation Types in the Contexts registry (not of Variation Type Choices) that matters; fixed in the Variation Strings section and the Variations registry text.</t>
    </list></t>
  <t>other fixes
  <list style="symbols">
      <t>Protection against malicious service announcements: the recommendation is for responders (not initiators), and now refers to the most preferred values (in DNS-SD, the lowest priority value and the highest weight) instead of the highest numerical values.</t>
      <t>DNS-SD operational considerations: moved text so that "DNS Server Redundancy" and "DNS Server Discovery" contain the matching content.</t>
      <t>Security considerations: SRP does not use TLS; reworded the IDevID authentication of SRP registrations.</t>
      <t>Renamed section "Registrar Operations Modes" to "Join Proxy Operation Modes".</t>
      <t>Appendix (WebPKI): removed stray "&gt;".</t>
      <t>DNS-SD requirements: "adjacent subnets" -&gt; "directly connected subnets" (mDNS is link-local).</t>
      <t>Roles and Services: removed "These functionalities are called roles", which incorrectly equated services with roles, and removed the duplicate definition of "service" (moving its remaining sentence into the second paragraph).</t>
      <t>Updates to RFC9733: fixed typo "MRSI" -&gt; "BRSKI".</t>
      <t>Updates to BRSKI-PRM: "the procedures of this document" -&gt; "the procedures of [ThisRFC]", because the text is inserted into BRSKI-PRM.</t>
      <t>GRASP Join Proxy example text: "TTL" -&gt; "loop-count" (the GRASP objective field name).</t>
      <t>Fixed reviewer names in Acknowledgments and change log.</t>
    </list></t>
  <t>renamed Context "BRSKI" to "tBRSKI" in all registry tables and in text referring to the context, consistent with the context name already used in the text (since WG draft 07).</t>
  <t>fix GRASP examples
  <list style="symbols">
      <t>fixed capitalization of objective names "AN_Join_Registrar" -&gt; "AN_join_registrar" (as in RFC8995 and the registry tables).</t>
      <t>fixed M_FLOOD syntax to follow the flood-message CDDL of RFC8990 (no extra list around the objective/locator pairs, missing/extra commas, locator option misplaced inside the objective in the separate-processes example).</t>
      <t>Join Proxy example: changed objective name from "AN_join_registrar" to "AN_Proxy", because the announcing node is a Join Proxy, and removed the "AN_join_registrar_rjp" announcement, because stateless (rjp) objectives are only announced by registrars, not by Join Proxies towards pledges (as the text already stated).</t>
      <t>registrar example text: corrected the number of service instances in the example (four, not three).</t>
    </list></t>
</list></t>

<t>WG draft 15:</t>

<t>English language fixup from claude.ai including shortening of long sentences</t>

<t>WG draft 14:</t>

<t>Incorporated replies for IOTDIR early review from Russ Housley.</t>

<t><list style="symbols">
  <t>Shortened abstract</t>
  <t>Rewrote most parts of chapter 2 to better focus on design rationale and remove redundancies</t>
  <t>Changed title of Section 3.1 to "Information Model and Registrations"</t>
  <t>Various details.</t>
  <t>Moved 3.4.4 WebPKI discussion into appendix</t>
  <t>Changed title of 3.5.1.1 to "Requirements"</t>
  <t>Enhanced titles of further 3.5.1.x subsections</t>
  <t>changed title of 3.5.2.1 to "Requirements"</t>
  <t>Fixed "<bcp14>MUST</bcp14>" / "<bcp14>SHOULD NOT</bcp14>" capitalization</t>
  <t>Changed formatting of section 4.1 (Updates to prior RFC) text to use indentation with "|" marking and adjusted text so it reads as if text is insserted into the original (updated) RFC.</t>
  <t>Added paragraphs to security consideration about this being for controlled networks and that attacks
known can not break the authentication mechanisms, just create DoS.</t>
  <t>Added paragraph about problematic benefits of authenticated discovery mechanisms.</t>
</list></t>

<t>Incorporated replies for RTGDIR early review from Daniele Ceccarelli.</t>

<t><list style="symbols">
  <t>Added section 2.2 Scope Limitations</t>
  <t>Added section 3.1.1 "Summary" as a cheat sheet how to read the document, specifically for developers</t>
  <t>changed example 3.5.1.5 to discovery of brski-proxy because that's where the used .local addresses make sense , enhanced text.</t>
  <t>3.1.6 added explanation for semantic of variation type choices.</t>
  <t>5.4 added section references into registration table</t>
</list></t>

<t>Incorporated replies for Xiao Min's OPSDIR review
- added 3.6 use of multiple discovery mechanisms
- various other fixes just also found and fixed for Russ first (random order of processing reviews)</t>

<t>Incorporated RTGDIR</t>

<t>WG draft 13:</t>

<t>3nd run with claude.ai: "Please fix spelling mistakes in this document including fixing real bad sentences."
2 incorrect fixes (recurring from WG-draft 10): "<bcp14>SHOULD</bcp14>/<bcp14>MUST</bcp14> not" -&gt; "<bcp14>SHOULD</bcp14>/<bcp14>MUST NOT</bcp14>". "perpass" -&gt; "passive".
Now hopefully fixed to happen again with editorial note for claude.ai.</t>

<t>WG draft 12:</t>

<t>Third part for Stuart Cheshire review:</t>

<t>Rewrote abstract to be shorter</t>

<t>Rewrote initial part of introduction to be better.</t>

<t>Added "Discovery Challenges" section to Introduction covering the reasons for why this document
does discuss DNS-SD library internals.</t>

<t>Expanded abbreviations on first use.</t>

<t>WG draft 11:</t>

<t>Second part for Stuart Cheshire review:</t>

<t>New intro for Overview section.</t>

<t>Re-did section 3.5.1.1 answering to concerns of Stuart that it was discussing details
only of interest to DNS-SD library developers.</t>

<t>Changed variation encoding for DNS-SD to be fully compliant with DNS-SD RFC. Keys can only
be 9 charcters long (<bcp14>SHOULD</bcp14> really means <bcp14>MUST</bcp14> - there will be pre-existing implementations
that will not allow longer key strings!), so we can not make variation strings keys. Now
it's "var={variation,}".</t>

<t>WG draft 10:</t>

<t>First part for Stuart Cheshire review: Run draft through claude.ai
prompt: "please fix up the english with minimum amount of changes in the following krmdown-rfc format file:.
50++ small fixes.
2 incorrect: "<bcp14>SHOULD</bcp14> not" -&gt; "<bcp14>SHOULD NOT</bcp14>". "perpass" -&gt; "passive".</t>

<t>WG draft 09:</t>

<t>Small editorial fix. Table incorrectly split by empty lines.</t>

<t>WG draft 08:</t>

<t>Overhauled IANA section after IANA early review. Changed tables so every table has only
 one key registered item which is usually in the first column. Eliminated formatting
based registration, eg.: no more "multi-line" registration - does not work because the
registries are databased. Removed optical beautification of keeping cells empty to
indicate repetition of previous row content. This too does not work for IANA registry
because they allow re-ordering of rows by column.</t>

<t>Also rewrote/shortened the Registry Data Model section to fit the new IANA section.
Put Discussions section before IANA discussion so it is clear it is part of the
overall data model, not the IANA representation.</t>

<t>Added updates to BRSKI-AE and BRSKI-PRM text that details how BRSKI Discovery is
to be used for both RFCs mechanisms. Also made this doc an update to BRSKI-AE to
ensure it is tracked that way.</t>

<t>Moved all other IANA consideration before the ask for the new BRSKI Discovery Parameters,
as this looks more logical - except for the opportunistic ask.</t>

<t>As a result of creating more tables and hence removing columns, the tables "should"
actually fit into the 72 character TXT rendering as soon as the I-D... draft
references in them are replaced by RFC references, which should happen in RFC
editor queue before this document gets published (hope, hope...).</t>

<t>Removed appendix "possible future variations"</t>

<t>Made document update to rfc6690 to allow formalizing request to update CORE RT= parameter range table with BRSKI entries, see section 4.1.1.</t>

<t>WG draft 07:</t>

<t>Defined document to be update to draft-ietf-anima-brski-prm (for the specification of IDevID derived DNS-SD discovery of pledges)</t>

<t>Resolved open Q text whether SRP allows discovery of SRP server. According to Stuart Cheshire this is supported.</t>

<t>Incorporated initial Feedback from Michael Kovatsch</t>

<t>Added section explaining that there is no spec for how to do pledge discovery via CORE-LF or GRASP.</t>

<t><list style="symbols">
  <t>Rewrote 2.1 Challenges to now be a more comprehensive set of 3 example deployment issues without this work.</t>
</list></t>

<t>Incorporated review by Arthur Hecker</t>

<t><list style="symbols">
  <t>Rewrote abstract to more comprehensively (and easier understandable) describe the scope of this document</t>
  <t>Simplified terminology: removed "variation context", now only calling it "context".</t>
  <t>changed name of BRSKI context in IANA registry to 'tBRSKI' (TCP BRSKI) - to make it easier to know when text refers to BRSKI
as an overall concept or specifically to the TCP based set of variations of BRSKI.</t>
  <t>Removed duplicate text paragraphs in proxy sections.</t>
  <t>Added note about (in)security of discovery mechanisms in general and how deployments typically defer to the "secure domain" context to overcome this issue.</t>
  <t>Large number of textual fixes (thanks a lot for the thorough read!).</t>
</list></t>

<t>WG draft 06:</t>

<t>Initial overview review feedback from Michael Kovatsch and Arthur Hecker</t>

<t>Made abstract and Challenges introduction hopefully better explaining the scope of
the document and motivate its need.</t>

<t>Review Steffen Fries:</t>

<t>Cleaned up terminology IP/IPv6 -&gt; IP/IPv4/IPv6.</t>

<t>CA -&gt; trust anchor</t>

<t>BRSKI proxy -&gt; Join Proxy for consistency with RFC8995.</t>

<t>Added mentioning of Registrar-Agent from BRSKI-PRM where appropriate</t>

<t>Rewrote 2.1.3 to make the functionality of variation agnostic proxying clearer (hopefully)</t>

<t>Rewrote 3.1.1 to more clearly define role and services and distinguish them.</t>

<t>Changed "cms" to "cmsj"(as well as derived variation strings) so that it is clear that this variation type does not mean all possible encoding options for CMS but only JSON.</t>

<t>Added explanation about the fact that a variation may introduce changes to a variation type component that shares the same name (3.1.6)</t>

<t>Noted that discovery of pledges does not apply in 3.2 which talks about redundant service discovery/selection.</t>

<t>removed last paragraph from 3.3.2.2 - duplicate from earlier section.</t>

<t>Improved 3.4.3 by better structuring the example figure and rewriting the explanation text as a step-by-step explanation how a Registrar-Agent would perform the steps.</t>

<t>Fixed small bugs in GRASP example section 3.5.2.2 but ended up improving examples a lot and make them more useful (registrar AND proxy )</t>

<t>Still can not figure out how to nicely get hotlinks to the terminology section definitions. They just
show up in text format as "Section 1" or the like. Giving up on the idea. TBD: Maybe ask RFC editor/RSWG.
Likewise, i can not have references to BRSKI RFCs both with a logical name like BRSKI-PRM and in other
places references with the RFC number. I need to define both as references and then the same RFC will
have two entries. Stupid. Now i only have logical references, but in all places where i need to
actually reference the RFC by number, such as IANA registries or pictures, i do not use references
anymore.</t>

<t>WG draft 05:</t>

<t>Major update to specify resilience aspects in selection of responders.</t>

<t>Major update/simplification of CORE-LF section.</t>

<t>WG draft 02/03:</t>

<t>Fix up tables to be correctly rendered by html output.</t>

<t>WG draft 01:</t>

<t>Core-LF improvements  / interim work.</t>

<t>WG draft 00:</t>

<t>Added section for CORE-LF. Still missing to update existing text with the CORE-LF definitions.</t>

<t>Individual version 01:</t>

<t>Various enhancements</t>

<t>Individual version 00:</t>

<t>Initial version.</t>

</section>
</section>


  </middle>

  <back>


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

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



<reference anchor="RFC2782">
  <front>
    <title>A DNS RR for specifying the location of services (DNS SRV)</title>
    <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <author fullname="L. Esibov" initials="L." surname="Esibov"/>
    <date month="February" year="2000"/>
    <abstract>
      <t>This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2782"/>
  <seriesInfo name="DOI" value="10.17487/RFC2782"/>
</reference>
<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</reference>
<reference anchor="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>
<reference anchor="CORE-LF">
  <front>
    <title>Constrained RESTful Environments (CoRE) Link Format</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <date month="August" year="2012"/>
    <abstract>
      <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6690"/>
  <seriesInfo name="DOI" value="10.17487/RFC6690"/>
</reference>
<reference anchor="mDNS">
  <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="DNS-SD">
  <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="GRASP">
  <front>
    <title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
    <author fullname="B. Liu" initials="B." role="editor" surname="Liu"/>
    <date month="May" year="2021"/>
    <abstract>
      <t>This document specifies the GeneRic Autonomic Signaling Protocol (GRASP), which enables autonomic nodes and Autonomic Service Agents to dynamically discover peers, to synchronize state with each other, and to negotiate parameter settings with each other. GRASP depends on an external security environment that is described elsewhere. The technical objectives and parameters for specific application scenarios are to be described in separate documents. Appendices briefly discuss requirements for the protocol and existing protocols with comparable features.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8990"/>
  <seriesInfo name="DOI" value="10.17487/RFC8990"/>
</reference>
<reference anchor="ACP">
  <front>
    <title>An Autonomic Control Plane (ACP)</title>
    <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
    <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer"/>
    <author fullname="S. Bjarnason" initials="S." surname="Bjarnason"/>
    <date month="May" year="2021"/>
    <abstract>
      <t>Autonomic functions need a control plane to communicate, which depends on some addressing and routing. This Autonomic Control Plane should ideally be self-managing and be as independent as possible of configuration. This document defines such a plane and calls it the "Autonomic Control Plane", with the primary use as a control plane for autonomic functions. It also serves as a "virtual out-of-band channel" for Operations, Administration, and Management (OAM) communications over a network that provides automatically configured, hop-by-hop authenticated and encrypted communications via automatically configured IPv6 even when the network is not configured or is misconfigured.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8994"/>
  <seriesInfo name="DOI" value="10.17487/RFC8994"/>
</reference>
<reference anchor="BRSKI">
  <front>
    <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
    <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="T. Eckert" initials="T." surname="Eckert"/>
    <author fullname="M. Behringer" initials="M." surname="Behringer"/>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <date month="May" year="2021"/>
    <abstract>
      <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8995"/>
  <seriesInfo name="DOI" value="10.17487/RFC8995"/>
</reference>
<reference anchor="BRSKI-AE">
  <front>
    <title>BRSKI with Alternative Enrollment (BRSKI-AE)</title>
    <author fullname="D. von Oheimb" initials="D." role="editor" surname="von Oheimb"/>
    <author fullname="S. Fries" initials="S." surname="Fries"/>
    <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
    <date month="March" year="2025"/>
    <abstract>
      <t>This document defines enhancements to the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol, known as BRSKI with Alternative Enrollment (BRSKI-AE). BRSKI-AE extends BRSKI to support certificate enrollment mechanisms instead of the originally specified use of Enrollment over Secure Transport (EST). It supports certificate enrollment protocols such as the Certificate Management Protocol (CMP) that use authenticated self-contained signed objects for certification messages, allowing for flexibility in network device onboarding scenarios. The enhancements address use cases where the existing enrollment mechanism may not be feasible or optimal, providing a framework for integrating suitable alternative enrollment protocols. This document also updates the BRSKI reference architecture to accommodate these alternative methods, ensuring secure and scalable deployment across a range of network environments.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9733"/>
  <seriesInfo name="DOI" value="10.17487/RFC9733"/>
</reference>

<reference anchor="BRSKI-PRM">
   <front>
      <title>BRSKI with Pledge in Responder Mode (BRSKI-PRM)</title>
      <author fullname="Steffen Fries" initials="S." surname="Fries">
         <organization>Siemens AG</organization>
      </author>
      <author fullname="Thomas Werner" initials="T." surname="Werner">
         <organization>Siemens AG</organization>
      </author>
      <author fullname="Eliot Lear" initials="E." surname="Lear">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Michael Richardson" initials="M." surname="Richardson">
         <organization>Sandelman Software Works</organization>
      </author>
      <date day="3" month="June" year="2025"/>
      <abstract>
	 <t>   This document defines enhancements to Bootstrapping Remote Secure Key
   Infrastructure (BRSKI, RFC8995) as BRSKI with Pledge in Responder
   Mode (BRSKI-PRM).  BRSKI-PRM supports the secure bootstrapping of
   devices, referred to as pledges, into a domain where direct
   communication with the registrar is either limited or not possible at
   all.  To facilitate interaction between a pledge and a domain
   registrar the registrar-agent is introduced as new component.  The
   registrar-agent supports the reversal of the interaction model from a
   pledge-initiated mode, to a pledge-responding mode, where the pledge
   is in a server role.  To establish the trust relation between pledge
   and registrar, BRSKI-PRM relies on object security rather than
   transport security.  This approach is agnostic to enrollment
   protocols that connect a domain registrar to a key infrastructure
   (e.g., domain Certification Authority).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-prm-23"/>
   
</reference>

<reference anchor="cBRSKI">
   <front>
      <title>Constrained Bootstrapping Remote Secure Key Infrastructure (cBRSKI)</title>
      <author fullname="Michael Richardson" initials="M." surname="Richardson">
         <organization>Sandelman Software Works</organization>
      </author>
      <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         <organization>vanderstok consultancy</organization>
      </author>
      <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Esko Dijk" initials="E." surname="Dijk">
         <organization>IoTconsultancy.nl</organization>
      </author>
      <date day="8" month="June" year="2026"/>
      <abstract>
	 <t>   This document defines the Constrained Bootstrapping Remote Secure Key
   Infrastructure (cBRSKI) protocol, which provides a solution for
   secure zero-touch onboarding of resource-constrained (IoT) devices
   into the network of a domain owner.  This protocol is designed for
   constrained networks, which may have limited data throughput or may
   experience frequent packet loss. cBRSKI is a variant of the BRSKI
   protocol, which uses an artifact signed by the device manufacturer
   called the &quot;voucher&quot; which enables a new device and the owner&#x27;s
   network to mutually authenticate.  While the BRSKI voucher data is
   encoded in JSON, cBRSKI uses a compact CBOR-encoded voucher.  The
   BRSKI voucher data definition is extended with new data types that
   allow for smaller voucher sizes.  The Enrollment over Secure
   Transport (EST) protocol, used in BRSKI, is replaced with EST-over-
   CoAPS; and HTTPS used in BRSKI is replaced with DTLS-secured CoAP
   (CoAPS).  This document Updates RFC 8995 and RFC 9148.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-31"/>
   
</reference>

<reference anchor="cPROXY">
   <front>
      <title>Join Proxy for Onboarding of Constrained Network Elements</title>
      <author fullname="Esko Dijk" initials="E." surname="Dijk">
         <organization>IoTconsultancy.nl</organization>
      </author>
      <author fullname="Michael Richardson" initials="M." surname="Richardson">
         <organization>Sandelman Software Works</organization>
      </author>
      <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         <organization>vanderstok consultancy</organization>
      </author>
      <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
         <organization>Cisco Systems</organization>
      </author>
      <date day="21" month="July" year="2026"/>
      <abstract>
	 <t>   This document supports the constrained Bootstrapping Remote Secure
   Key Infrastructures (cBRSKI) onboarding protocol by adding a required
   network function, the Join Proxy.  This function can be implemented
   on a constrained node.  The goal of the Join Proxy is to help new
   constrained nodes (&quot;Pledges&quot;) securely onboard into a new IP network
   using the cBRSKI protocol.  It acts as a circuit proxy for User
   Datagram Protocol (UDP) packets that carry the onboarding messages.
   The solution is extensible to support other UDP-based onboarding
   protocols as well.  The Join Proxy functionality is designed for use
   in constrained networks, including IPv6 over Low-Power Wireless
   Personal Area Networks (6LoWPAN) based networks in which the
   onboarding authority server (&quot;Registrar&quot;) may be multiple IP hops
   away from a Pledge.  Despite this distance, the Pledge only needs to
   use link-local communication to complete cBRSKI onboarding.  Two
   modes of Join Proxy operation are defined, stateless and stateful, to
   allow different trade-offs regarding resource usage, implementation
   complexity and security.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-21"/>
   
</reference>

<reference anchor="JWS-VOUCHER">
   <front>
      <title>JWS signed Voucher Artifacts for Bootstrapping Protocols</title>
      <author fullname="Thomas Werner" initials="T." surname="Werner">
         <organization>Siemens AG</organization>
      </author>
      <author fullname="Michael Richardson" initials="M." surname="Richardson">
         <organization>Sandelman Software Works</organization>
      </author>
      <date day="15" month="January" year="2025"/>
      <abstract>
	 <t>   This document introduces a variant of the RFC8366 voucher artifact in
   which CMS is replaced by the JSON Object Signing and Encryption
   (JOSE) mechanism described in RFC7515.  This supports deployments in
   which JOSE is preferred over CMS.  In addition to specifying the
   format, the &quot;application/voucher-jws+json&quot; media type is registered
   and examples are provided.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-anima-jws-voucher-16"/>
   
</reference>

<reference anchor="RFC8366bis">
   <front>
      <title>A Voucher Artifact for Onboarding Protocols</title>
      <author fullname="Kent Watsen" initials="K." surname="Watsen">
         <organization>Watsen Networks</organization>
      </author>
      <author fullname="Michael Richardson" initials="M." surname="Richardson">
         <organization>Sandelman Software</organization>
      </author>
      <author fullname="Esko Dijk" initials="E." surname="Dijk">
         <organization>IoTconsultancy.nl</organization>
      </author>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies Inc.</organization>
      </author>
      <author fullname="Qiufang Ma" initials="Q." surname="Ma">
         <organization>Huawei</organization>
      </author>
      <date day="26" month="October" year="2026"/>
      <abstract>
	 <t>   This document defines a strategy to securely assign a candidate
   device (Pledge) to an Owner using a digital artifact signed, directly
   or indirectly, by the Pledge&#x27;s manufacturer.  This artifact is known
   as a &quot;Voucher&quot;.

   This document defines an artifact format as a YANG-defined JSON or
   CBOR document that has been signed using a variety of cryptographic
   systems.

   The Voucher Artifact is normally generated by the Pledge&#x27;s
   manufacturer which is represented by the Manufacturer Authorized
   Signing Authority (MASA).

   This document obsoletes RFC8366: it includes a number of desired
   extensions into the YANG module.  The Voucher Request YANG module
   defined in RFC8995 is also updated and now included in this document,
   as well as other YANG extensions needed for variants of RFC8995.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-anima-rfc8366bis-39"/>
   
</reference>
<reference anchor="EST">
  <front>
    <title>Enrollment over Secure Transport</title>
    <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
    <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
    <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
    <date month="October" year="2013"/>
    <abstract>
      <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7030"/>
  <seriesInfo name="DOI" value="10.17487/RFC7030"/>
</reference>
<reference anchor="RFC9483">
  <front>
    <title>Lightweight Certificate Management Protocol (CMP) Profile</title>
    <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
    <author fullname="D. von Oheimb" initials="D." surname="von Oheimb"/>
    <author fullname="S. Fries" initials="S." surname="Fries"/>
    <date month="November" year="2023"/>
    <abstract>
      <t>This document aims at simple, interoperable, and automated PKI management operations covering typical use cases of industrial and Internet of Things (IoT) scenarios. This is achieved by profiling the Certificate Management Protocol (CMP), the related Certificate Request Message Format (CRMF), and transfer based on HTTP or Constrained Application Protocol (CoAP) in a succinct but sufficiently detailed and self-contained way. To make secure certificate management for simple scenarios and constrained devices as lightweight as possible, only the most crucial types of operations and options are specified as mandatory. More specialized or complex use cases are supported with optional features.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9483"/>
  <seriesInfo name="DOI" value="10.17487/RFC9483"/>
</reference>
<reference anchor="DNSSD-SRP">
  <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="RFC9148">
  <front>
    <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
    <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
    <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="S. Raza" initials="S." surname="Raza"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>Enrollment over Secure Transport (EST) is used as a certificate provisioning protocol over HTTPS. Low-resource devices often use the lightweight Constrained Application Protocol (CoAP) for message exchanges. This document defines how to transport EST payloads over secure CoAP (EST-coaps), which allows constrained devices to use existing EST functionality for provisioning certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9148"/>
  <seriesInfo name="DOI" value="10.17487/RFC9148"/>
</reference>
<reference anchor="RFC9176">
  <front>
    <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
    <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="M. Koster" initials="M." surname="Koster"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9176"/>
  <seriesInfo name="DOI" value="10.17487/RFC9176"/>
</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>

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



<reference anchor="RFC9722">
  <front>
    <title>Fast Recovery for EVPN Designated Forwarder Election</title>
    <author fullname="P. Brissette" initials="P." surname="Brissette"/>
    <author fullname="A. Sajassi" initials="A." surname="Sajassi"/>
    <author fullname="LA. Burdet" initials="LA." role="editor" surname="Burdet"/>
    <author fullname="J. Drake" initials="J." surname="Drake"/>
    <author fullname="J. Rabadan" initials="J." surname="Rabadan"/>
    <date month="May" year="2025"/>
    <abstract>
      <t>The Ethernet Virtual Private Network (EVPN) solution in RFC 7432 provides Designated Forwarder (DF) election procedures for multihomed Ethernet Segments. These procedures have been enhanced further by applying the Highest Random Weight (HRW) algorithm for DF election to avoid unnecessary DF status changes upon a failure. This document improves these procedures by providing a fast DF election upon recovery of the failed link or node associated with the multihomed Ethernet Segment. This document updates RFC 8584 by optionally introducing delays between some of the events therein.</t>
      <t>The solution is independent of the number of EVPN Instances (EVIs) associated with that Ethernet Segment, and it is performed via a simple signaling in BGP between the recovered node and each of the other nodes in the multihoming group.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9722"/>
  <seriesInfo name="DOI" value="10.17487/RFC9722"/>
</reference>
<reference anchor="RFC7390">
  <front>
    <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
    <author fullname="A. Rahman" initials="A." role="editor" surname="Rahman"/>
    <author fullname="E. Dijk" initials="E." role="editor" surname="Dijk"/>
    <date month="October" year="2014"/>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for constrained devices and constrained networks. It is anticipated that constrained devices will often naturally operate in groups (e.g., in a building automation scenario, all lights in a given room may need to be switched on/off as a group). This specification defines how CoAP should be used in a group communication context. An approach for using CoAP on top of IP multicast is detailed based on existing CoAP functionality as well as new features introduced in this specification. Also, various use cases and corresponding protocol flows are provided to illustrate important concepts. Finally, guidance is provided for deployment in various network topologies.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7390"/>
  <seriesInfo name="DOI" value="10.17487/RFC7390"/>
</reference>
<reference anchor="COAP">
  <front>
    <title>The Constrained Application Protocol (CoAP)</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="K. Hartke" initials="K." surname="Hartke"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
      <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7252"/>
  <seriesInfo name="DOI" value="10.17487/RFC7252"/>
</reference>
<reference anchor="RFC8106">
  <front>
    <title>IPv6 Router Advertisement Options for DNS Configuration</title>
    <author fullname="J. Jeong" initials="J." surname="Jeong"/>
    <author fullname="S. Park" initials="S." surname="Park"/>
    <author fullname="L. Beloeil" initials="L." surname="Beloeil"/>
    <author fullname="S. Madanapalli" initials="S." surname="Madanapalli"/>
    <date month="March" year="2017"/>
    <abstract>
      <t>This document specifies IPv6 Router Advertisement (RA) options (called "DNS RA options") to allow IPv6 routers to advertise a list of DNS Recursive Server Addresses and a DNS Search List to IPv6 hosts.</t>
      <t>This document, which obsoletes RFC 6106, defines a higher default value of the lifetime of the DNS RA options to reduce the likelihood of expiry of the options on links with a relatively high rate of packet loss.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8106"/>
  <seriesInfo name="DOI" value="10.17487/RFC8106"/>
</reference>
<reference anchor="RFC8288">
  <front>
    <title>Web Linking</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="October" year="2017"/>
    <abstract>
      <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
      <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8288"/>
  <seriesInfo name="DOI" value="10.17487/RFC8288"/>
</reference>
<reference anchor="RFC8894">
  <front>
    <title>Simple Certificate Enrolment Protocol</title>
    <author fullname="P. Gutmann" initials="P." surname="Gutmann"/>
    <date month="September" year="2020"/>
    <abstract>
      <t>This document specifies the Simple Certificate Enrolment Protocol (SCEP), a PKI protocol that leverages existing technology by using Cryptographic Message Syntax (CMS, formerly known as PKCS #7) and PKCS #10 over HTTP. SCEP is the evolution of the enrolment protocol sponsored by Cisco Systems, which enjoys wide support in both client and server implementations, as well as being relied upon by numerous other industry standards that work with certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8894"/>
  <seriesInfo name="DOI" value="10.17487/RFC8894"/>
</reference>
<reference anchor="RFC9799">
  <front>
    <title>Automated Certificate Management Environment (ACME) Extensions for ".onion" Special-Use Domain Names</title>
    <author fullname="Q Misell" initials="Q" role="editor" surname="Misell"/>
    <date month="June" year="2025"/>
    <abstract>
      <t>This document defines extensions to the Automated Certificate Management Environment (ACME) to allow for the automatic issuance of certificates to Tor Hidden Services (".onion" Special-Use Domain Names).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9799"/>
  <seriesInfo name="DOI" value="10.17487/RFC9799"/>
</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="RFC9250">
  <front>
    <title>DNS over Dedicated QUIC Connections</title>
    <author fullname="C. Huitema" initials="C." surname="Huitema"/>
    <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
    <author fullname="A. Mankin" initials="A." surname="Mankin"/>
    <date month="May" year="2022"/>
    <abstract>
      <t>This document describes the use of QUIC to provide transport confidentiality for DNS. The encryption provided by QUIC has similar properties to those provided by TLS, while QUIC transport eliminates the head-of-line blocking issues inherent with TCP and provides more efficient packet-loss recovery than UDP. DNS over QUIC (DoQ) has privacy properties similar to DNS over TLS (DoT) specified in RFC 7858, and latency characteristics similar to classic DNS over UDP. This specification describes the use of DoQ as a general-purpose transport for DNS and includes the use of DoQ for stub to recursive, recursive to authoritative, and zone transfer scenarios.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9250"/>
  <seriesInfo name="DOI" value="10.17487/RFC9250"/>
</reference>
<reference anchor="RFC9423">
  <front>
    <title>Constrained RESTful Environments (CoRE) Target Attributes Registry</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="April" year="2024"/>
    <abstract>
      <t>The Constrained RESTful Environments (CoRE) specifications apply web technologies to constrained environments. One such important technology is Web Linking (RFC 8288), which CoRE specifications use as the basis for a number of discovery protocols, such as the Link Format (RFC 6690) in the Constrained Application Protocol's (CoAP's) resource discovery process (Section 7.2 of RFC 7252) and the Resource Directory (RD) (RFC 9176).</t>
      <t>Web Links can have target attributes, the names of which are not generally coordinated by the Web Linking specification (Section 2.2 of RFC 8288). This document introduces an IANA registry for coordinating names of target attributes when used in CoRE. It updates the "RD Parameters" IANA registry created by RFC 9176 to coordinate with this registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9423"/>
  <seriesInfo name="DOI" value="10.17487/RFC9423"/>
</reference>

<reference anchor="I-D.eckert-anima-grasp-dnssd">
   <front>
      <title>DNS-SD Compatible Service Discovery in GeneRic Autonomic Signaling Protocol (GRASP)</title>
      <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
         <organization>Futurewei Technologies USA
      Inc.</organization>
      </author>
      <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
         <organization>Orange</organization>
      </author>
      <author fullname="Christian Jacquenet" initials="C." surname="Jacquenet">
         <organization>Orange</organization>
      </author>
      <author fullname="Michael H. Behringer" initials="M. H." surname="Behringer">
         </author>
      <date day="14" month="October" year="2026"/>
      <abstract>
	 <t>   DNS Service Discovery (DNS-SD) defines a framework for applications
   to announce and discover services.  This includes service names,
   service instance names, common parameters for selecting a service
   instance (weight or priority) as well as other service-specific
   parameters.  For the specific case of autonomic networks, GeneRic
   Autonomic Signaling Protocol (GRASP) intends to be used for service
   discovery in addition to the setup of basic connectivity.
   Reinventing advanced service discovery for GRASP with a similar set
   of features as DNS-SD would result in duplicated work.  To avoid
   that, this document defines how to use GRASP to announce and discover
   services relying upon DNS-SD features while maintaining the intended
   simplicity of GRASP.  To that aim, the document defines name
   discovery and schemes for reusable elements in GRASP objectives.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-eckert-anima-grasp-dnssd-09"/>
   
</reference>

<reference anchor="I-D.ietf-anima-brski-cloud">
   <front>
      <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI) Cloud Registrar</title>
      <author fullname="Owen Friel" initials="O." surname="Friel">
         <organization>Cisco</organization>
      </author>
      <author fullname="Rifaat Shekh-Yusef" initials="R." surname="Shekh-Yusef">
         <organization>Ciena</organization>
      </author>
      <author fullname="Michael Richardson" initials="M." surname="Richardson">
         <organization>Sandelman Software Works</organization>
      </author>
      <date day="9" month="September" year="2025"/>
      <abstract>
	 <t>   Bootstrapping Remote Secure Key Infrastructures (BRSKI) defines how
   to onboard a device securely into an operator-maintained
   infrastructure.  It assumes that there is local network
   infrastructure for the device to discover.  On networks without that,
   there is nothing present to help onboard the device.

   This document extends BRSKI and defines behavior for bootstrapping
   devices for deployments where no local infrastructure is available,
   such as in a home or remote office.  This document defines how the
   device can use a well-defined &quot;call-home&quot; mechanism to find the
   operator-maintained infrastructure.

   This document defines how to contact a well-known Cloud Registrar,
   and two ways in which the device may be redirected towards the
   operator-maintained infrastructure.  The Cloud Registrar enables
   discovery of the operator-maintained infrastructure, and may enable
   establishment of trust with operator-maintained infrastructure that
   does not support BRSKI mechanisms.

   This document updates RFC 8995 (BRSKI).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-19"/>
   
</reference>

<reference anchor="HRW98" target="https://www.microsoft.com/en-us/research/wp-content/uploads/2017/02/HRW98.pdf">
  <front>
    <title>Using Name-Based Mappings to Increase Hit Rates</title>
    <author initials="D. D." surname="Thaler" fullname="Dave D. Thaler">
      <organization></organization>
    </author>
    <author initials="C. V." surname="Ravishankar" fullname="Chinya V. Ravishankar">
      <organization></organization>
    </author>
    <date year="1998"/>
  </front>
</reference>


    </references>

</references>


<?line 2855?>

<section anchor="webpki-derived-instance-schema"><name>WebPKI derived instance schema</name>

<t>There is currently no automated mechanism to avoid the configuration of
manufacturer trust anchor certificates in BRSKI components that need to
authenticate pledges. However, the configuration of additional instance
schemas for different manufacturer device names in BRSKI
equipment could be avoided, if vendors and operators of BRSKI-PLEDGE
installations deem it appropriate to rely on WebPKI trust anchors.</t>

<t>The trust anchor certificate itself (or a sub-CA in the certificate chain)
would then need to have a WebPKI trust anchor signature and a DNS name
that can easily be identified as being used for IDevIDs, such as
"*.idevid.example.com". The implied schema for the instance
string is then "&lt;&lt;X520SerialNumber&gt;.DNS-name&gt;", authenticating instance
names of the format "&lt;X520SerialNumber&gt;.idevid.example.com".</t>

<t>The added effort for manufacturers in this scheme is obtaining a WebPKI signature,
from a WebPKI trust anchor, for their trust anchor for these wildcard domain names.
This likely requires similar alignment with the CA/Browser Forum, as the
ACME extensions for .onion did (<xref target="RFC9799"/>).</t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="T." surname="Werner" fullname="Thomas Werner">
      <organization>Siemens AG</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>thomas-werner@siemens.com</email>
        <uri>https://www.siemens.com/</uri>
      </address>
    </contact>
    <contact initials="S." surname="Fries" fullname="Steffen Fries">
      <organization>Siemens AG</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>steffen.fries@siemens.com</email>
        <uri>https://www.siemens.com/</uri>
      </address>
    </contact>
    <contact initials="H." surname="Brockhaus" fullname="Hendrik Brockhaus">
      <organization>Siemens AG</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hendrik.brockhaus@siemens.com</email>
        <uri>https://www.siemens.com/</uri>
      </address>
    </contact>
    <contact initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization></organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <phone>+41 44 878 9200</phone>
        <email>mcr+ietf@sandelman.org</email>
      </address>
    </contact>
    <contact initials="D." surname="von&nbsp;Oheimb" fullname="David von&nbsp;Oheimb">
      <organization abbrev="Siemens">Siemens AG</organization>
      <address>
        <postal>
          <street>Otto-Hahn-Ring 6</street>
          <city>Munich</city>
          <code>81739</code>
          <country>Germany</country>
        </postal>
        <email>david.von.oheimb@siemens.com</email>
        <uri>https://www.siemens.com/</uri>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA9y9e3PkxpUn+n9+Cmwp4oqcrap+t7op2ztUd8vijPoxJGXP
xNihAKtAEuqqQi2AIkV36H6W+1nuJ7vnnScTKKrl8cRGXO+O3SSBRD5Onvf5
ndlsFhbNst5cHRW7/nL2IoS+7lfVUfHlN6dn/3pSLOtu0dxU7V1RbpbFTdnW
ZV83m+7LUF5ctNXNUUHPzey5sGwWm3INIyzb8rKf1RUMW27qdTm7aLuPdXxy
9uh5gPefhK6HsX8sV80G3urbXRXqbUv/6vrHDx++fPg4dLuLdd118OXzuy08
dfLm/NtQtlV5VLzfVi3Piab4ttyUV9W62vThFhZ1/O7k7XH4eAuvbPqq3VT9
7DXOK+y2y7Kvur3T3LbradFeLp4/f/mQ/vHyqydPwqLsj4quX8Kmbbpq0+06
mfG2PgpF0TcL2Lm7CraHflhW2/76qHgGPy2a9bZc9PHP3d26rS4794um7dPf
wDZsmr6+rKsl/HLT0FN9W8dhyl1/3bRHYVbUG3jxfF68WXys2h4e5EM4b6p2
VXVd/H3b4PFWy7pvWvixaWGXvt31u7a6rerih7Nj+KWerf2eFrDb9O3dkTxS
rct6BYvvq39edPPLcjdfVjqNN/Pidf3TR5vEm+5jo7+h750057iBuxWc/OJu
vlnFASt4dr6EZ/+5bvrsIdx1WP7Fruc1yxKvm3XZFX/G0239RP9Ytetyc6cf
PauRLLri+I9u+vTu7Jbe/eeOn5jDWcEju7Y+Kq77ftsdPXhwe3s7d39+YF8/
66vLy2pTfNvWVfcbv97xu/NLfPfv+vp31WbZ1h+Lb9pm8fG63P3WGVzz+/ML
ff/vmsXbenFdVqviFP+3XXbNxk/jFdzIZQm/2V7TDZ/8z6ePiqdPixdfvShe
wv2exOmsF+3/xJv4zx1c5WoFs5/D1JWsXs+Lm2bzf20uuu3X76+ren1hFPa6
vKmXI38dLlxJW37JN6qq4Ea97/tm9l15vZmdAj8snuMa6h4W8Ha3gYXRkpbI
GV88+urJyy/Hd1oWssT5zGE+84am8pu2NWwaGK6vbyrkKaffvnr81YvH8s8n
L188l38+e/ziIf7z1fvTN7Pvvz3C3yG3gl+tX78745+/ev4YfoYfZ2ev9TdP
4Dd/PD0++0C/ePGSXjl+ZT8+hR+Jq+svnukvZsdv6HfEC/V3H07fwo2evZ6P
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
9GkUAPs4QiQ/NmrDAVDbVJOL1f23T6wMnal3MUPQnfNhZlgCB/2sKU45rVic
v5avZYJpQ+QkJ7+WbStAToFFR/7QcpSbi08QDFgYldK/zFrid+vNkqLrIyRJ
umCnCdxogYhTJOXozqbWoAwbc3Sendhdl7nvLJ5wEatlyG7ijIjRe5cwHCp7
wDDE2ImbPsXFOaTsoEyve68z49u54GJLV4+CNaZNY94yYGyzeC7I3gcU/9o8
F0byZF2fmufc5e6xoHfpn8Tg1RDGrYjiWqPESew6apeJkl1yRhr8Qrwlkg8u
B0Iqqv6J/O9Spothvlin+8svkjy9GVNoQ6PAD0xnOoTkrHOQA3kah1RevT1j
JfBfzt6/mxav3p+9IcfHv8A/vt6nNONgAZ0VWriCsxX9flpgno/OmJJ3ODSp
WpEN4mPBlpKY2tMkjx6AqYz8kIOMlgDFK5FA73CKnIPA/gyc3i2peYm/GjN7
ujzH82sKeZpfWr7SuHmzA1sctsQ7yHU/mhpMnlu4qOWSDpS0Xa5sIjkR30GF
uCMFmFzN5vvCO8PKi9ND7+e/ytwiUWVLjK7Dm8/aS9M+6lbSVS1OiZd1EKLU
VCOdB0Z/4xSY8fEVw+9qgn123cLofoorXHk56wX45Uq4abSgG1DyyRd5OX40
4uXKI6noUcR8ftlFYnpMuO6mR+5GTN6lLVRS07lSb0DiRSvWwITWVCHBumi1
DJdRMUrZXuINi6yNrSSmBpJLLfoDqlWzzUrmnIkZ0N1HyljZUYEKcF62JXDa
P+3QyxBf9FtiuT3ITo81JQ7Y5nK3WSIACU3zW43TnvkVhBBfsMAuv4Bl5UV3
XdKp0VXdoBQ3TWvXZTG2JEJ9VdGBSI43On+bGwrViZw2Yztx7O5z2cbrkOno
Xnvm0wwjuQ2sf8d6YO+BSZcJQx5cll1/6OLaWzhV/EmSnAJqueqWbmWTeybm
DeVKhOAySDBMh0HcGHxi2Vj3FnfinAX2jREfQZ8KHDKS0iUWDMXlE2EdXO/g
iUP02WDIpoUnKgknWPbriWxrcUA67KGJ1IOrttxeY8rkIX6vZdfqZbmQhERJ
X6LsCh4ikJzTIg2LHjS7ftZczi7I8YpVOEDKxcGE+DeIDBwVdJkd1pFdNc1y
wiqeOJ1ihBE3oWIfJMqryx2lcjJR4l65GDIqEcKOhAbNY0oAJyyQNe2MSA80
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
qr0Rg1yjYzyp7a5FbC8MZTUSmdVK7c57oVEyEmf23W60TvkL9SSJyAxa/Uf9
DkaK/2LZHZaKFlhcN3tW4X89efR0vu/tz3xs+BEkweJR8bh4+uzZs/xr/8Wx
kQbFM7tt17OfYDOni/V2AicmTrVsN3bLPYN93nbE1z/zsZGv2H48e/7i6d+x
H/cOHjeE9uA7M4BGvzN8nwy94vHDh4+OXn/z4ghLwY6O8LUjfC3WKXJ+ntyA
2SMtUXQYyhpT5maTMZ6edJBw3ALrF6m6JRuaSxR5GLLiJKqnecudFQclwTcN
KnR6O0w8T9p2TcVl2DES/sXdv1yON8kZbLIhbmhyXSHxCorhBGx5GQBpTRtK
g5rUKX/pr9FicKBUGLCZacBmpklJw7DEZKLBjylNj0haivHka9Sqk9d08MPr
D1wWE1d7LXZI5I5qEbg+MsqGpu6DwE98edhW2i9y+AFmlt4w+uoac085Ak/q
dXDBT98Z2aOpR0rABGXeKEsbj+TANTuhtn4RHVuSYELWSRtuRcn7oInE3gef
4oU6Z7So5fx5XWQS8sA/f9D+3Rv2SeyoSzcfcTQXcBcC6Yjm1tWVKXLodqxZ
cGLdZYRNVgQ5YbE0ddM4l26IQtGdbD1I2TkRGDPqOEoXBaW2Nx3FD5ErUtMw
GeMWk4iTRTdEbQbvBN8mrWVzhMxvEqTTsbVrRgvcyd0qsa3i6HiKEjiHfYlN
TO9MH+r22lc5ZD+tQXZY6zecfUPpaSuDEKdcAelX6EHiqDsqtWLRdp8JTOEe
ICiBfQsjcaBBS3CH7BV9bRMUjZMCA9M7uJ8oGCZpwMMFalJlcaA7OG9LtCxV
dkbPFwljLXVo2quQiM5Ns4jPzvjdJ189fvZk/usD/VfeHdc0khH/4d8i+ARS
PFJ947N3EsX4Z+7kgl9+9uSr5yMzzAf6r7w72Mmvnj158tk7+fd9y3aSdrGX
K4BI8VGE/R1EOdDs0rmiMHv51ZNnv5k0f8OL47ofbusjGODzKfS/9EnbXtMm
UsVw/yR+m3b45Mk+7fDxiHaYaoGjd0Y1QmZiC8QrN9s+1xIfs5YouUziZheZ
9O79Kw7+OnxgAQWQaI5bNIX3QRjutuqjcg2tI7SEQSyLrnIiqmiSHBZ8RQIK
Wll/4tTw39aKeyvOVnWq08mk4cZ5DJn6OiHN6OKV9M1+OpOgq4VtSUYwFB/p
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
c7TfnSOT+7dOVeJJHxmlz5ao24JHhiIjLFQDvTj4ifr6IxybXEi0/ZrFaTNJ
T1il53VKcomycP3ReU9Z0Bn9oCV4tupGbOjF73pMYw3viunbmVmHtyAPbP+n
UdwcJbL0q2KO0vSZQgPi0hz6Elb+tJp9VVOIPnQ0FO9JmpgYEY63jJ/HhTx/
+UxJ1SRSDYIoiKyVMTAHH1R5wk41RZ7R+qieonxEFEdNPAk+e9miElzblhTl
JlY+m9gXmiWm2WApRVZiEMQoqSDUZ/QNR30eFxcc+TW4coSj2oVDwGiIO4pn
i2DhoXYH99QCF6zmUH1wzLmt1sRggcIATT7EC8RlgQNCUNIMyh7MoSrCmjmc
SYkvODViNzht0NUOb6hggsrxEXshTyp0UhIINVMm0LXo0KJBIuGKKw4c08Wa
vgmb7g0WFBi5HeLWUYKfyvESapIxmnlWgSU0xz2FlhnMRTuv2HwSWL8OKZxE
lETfH32r6qizAaw8HDtGcDCIj6cxxZvQgOdny+VMaPNDwrR4TmklHYo60mTF
ZuN1Y6egLEfrV4ItgMxCxNpFl6luED4HxtHNnNxLBO/NXLyZll4MdLfmpIjj
JrZuoJKw5jbrnU3GV6HEBSmJXvdWyGlYCc0ZfQ+78qReqBx6zdoEr5kWmfO/
aQR3rYWQCNNeNvX8OkNmafK7oquB6sTVU5fXIR6IpsWCXHHKhvhvKmIpyOIq
Euq19mVbEBtHKYKheusJtHdak8oRI3pEClkdZKrXTjT+M4fyb6I6B1m3LrK/
UZZN5N1kqIwh73BGGGEhrjKqO2SV5mZcA+9CMClxKWI2r3Df2w5gEXguIYQg
/viXuCVDLPKfs4d6iNR/OkS9J1hGtxtE9qVq4qOPaWdvfUlNbTNZLj/ubZeN
vu2g522XDb5NGvVt3GqGPPiJH8T3u9fdbr887NohbiFTS8S2sJokaHyQFsPG
xrkUZ3EGPl5RvP+DJCPAWKGzVmg9orDXyDFaRMYde6pxp5JSi83uq/J0wO2z
bPO7N/IuZAXNrEQQaLKKfjxaY77qyyIL8YbJpTnqu8eMXNTBSxm7vmU+5DVF
ZpnKgtUepXVivZsEx2seb/SfMSwvc8GqMLUoULRWjXNyxCoLrpjVqvZFsiPy
ML3MhdyKQEjh4GdVUM8f6EI8/OkwRB/Fi6wXs7xVopTkxsxaTZ0gt6BA92nx
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
HK7Pt4G/ypx4OxIooCtIXRdq58bbRXs2XZJWxEhYrjhKrb8gYgz6+OUHkPZy
PltFdjs2rQGx5oUP/k9dtadYTmwo7iaUJXqD3mFUiGrHIdmW4nyQz/jYTlN4
Dn5KCb3QMTgp4YVM7hevyK6EF3gXH/X0mvF8dsFNm8ouOZOONAoNMJwr7ULW
e/aiqFlhO+Tj03X6NtGd6fzCtIUsnT4UEIl3Equ4GGIq8H2GimOQqVKhvuZl
ojsZ/V0hctjHriV5QTqb/+QkJBF8rBaxbrEtGsBNfoRGyo7A8Y0pH9TLt0HT
umFT/CP+3EB7bPGSzJf1L/DoGGj2Jn/18t1XenDjnnzsny3tySbTt8YJ8Eda
AQy+ebZlo8NMitC0zSCtoZ+SgxGywzuzub21jx8dRvLDgkoEvzg25YpVw9nO
fSYMV+u+nUV7oymYKaCz3RrcPmHzER3YTf7luq5OUXJO1zX74u88HjDzaDMi
bmS9JKIT3H2amMmruY4f+XYX3gzPP3e6tznaaMlnzsrC9lbpFtQEEKcs9mFs
oyQx7sId2tP1RDiiAjI0+fBfI0zoW2lz7wduz6Um/hrEUtm8l3pzMwT1tGt1
nrDziWvsXBVGhNWT56jpjd7Fz1KEOklCBNWG/twjTq4KxQI0f69eSKpLCE8G
LFQsbrM4gDxIMJhDCaO70ie+rVJo6/lMUps9iChLkUo3j3P+LgNiU7+iZBiX
tyPA3BigV2ZJtitrqIQ9lPewiEIjlYMCjo86SmXJJR+TJ/x/St5URht5a94U
KT2RJqkX1jXoMl4jtCux74RIzj2l8So8LtZQk7qVbxXT/hb/9R0TB2nLRTY4
b1uCPF1dXU3qclGiLrgH4wCFki6RvUhZJZD2mOmHdn01aT+0QzwibOOgO+CP
uXNZj/LE+8w+1B6XNIPrXVCmbJJpNAVkM1sVBh9A9jZ2vIjg2ukm1nwCo6aA
7nbdznAO3Bj6ehw6005dZ9wg9K5DaTcnIjtNVb9zP4kqNe3pC9nr4rdvtGYk
4bo+qtMkbqO5RAygnqveNdqyBGK5MFlj179ziAUR0n4fUv5qkq46y//Uw4jy
BXImVE7F2ZFeu8XdSKeSPfFvrG5L53QyD/muY4kXVzxAvMYCdWNvEy7FXrJp
iq+rRXVUT/NQC/bYmFHtJA/obf1mANh6Z7gpbuK27CIPasp2/Sa7ORz3/dny
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
sz0q4fLu2A8ePTqpm9Gt0wAb5PXxGPco7ND/e/zmu/xfhb6nf+zIzLO79WTs
P181au12e3FDrEFR8z3LE1qf3tb6HVY7GvuXb46E1wrZi/ioolDqnXn0Stuj
gk/ozPzjewf3bp92eu4lvYL8nBRGkPSKEBqNx36xur11pAUcUUDpycEtrX+L
ADRJG0RWLxBAp0heuZcrKSC1jjcS/LqZVqudrX/kzGNyFAipeXVWTpUjO/3R
7ed9Gu26rW6WZCbufN71xG3ZddNte35nF+6862zd+8/79FP3/G9y3j+19Tue
91tOnLXO0dP7D55getxtXdETR5GYl6AX06l7/uaZ98zc4cRNf98TJ2PfdstE
Xog73zV2y6zvdstsW/dPbf2O6y7SZtue/9TW77jntfXfeOy/zS3zqa0ne56y
rzXLHend7rbn09aTnT+6Q2+2HwCaG+xL8ISpWSjOry3eiY/wgTm/l7N2Pt31
9d/W3dUP3+u6uhSKkhrohuQIeYyRZyxDjojgDGO3SuzlcnWIunAWxacnFVVL
x9vRydPQZ9RjgnkfwcWQwOE5Pb2DoVmtkPS637s2ygIZnzf8+3vR5YfkJtjU
Fh9LWzPqyRukk+wN83l2nCJs8TrokM9NQOtfRtzfIcbZZ4KzNwkx0GppS2Pv
xCpQ5t/yXdOk3NUajv+6p/ZzYDOHya4vedlCfoHOXG8/MwEvuWR6eLgYF1bQ
jUAEVm8PfxwQNnJ0CZMk6Xvd7lmKANnbsPMZmcGldhsrX217WqBmhaREdllN
o8qBfLr4iHda0qmBCa4QblTiI+gwWc2l/tXV+bWS0XddR1LzpGSAkCVEwl+X
PnepEYjLoNfVzDVjKF8C+6slvkpJutjmjIOz/pSqusDvpfByvkHlommXy1BL
xz3n8Kx3OyiYRMDAolA4IZmAiRCoJWAeAoA0EU0YH/DI44TiahPIJ6fOQeYK
tiQE6OJ2VlezZi545lSrqpaZC2yArid8DnZoPdNtHPVm6F2afKKSjPXg3StP
4Lqxg87Zregsl9ZUGDD4r2d6/0s8WA7EMrg/JCTrFlpouqUMWTcy0s0HkwN2
xS4VoDdmVh/x1jHHtX3ZExm22zZMi14MDBwqQdINYCmrNab2DfX8F6A/jd99
e1ww1EnO61quFSo2hwKy22BPT+1dlp/jbi9Ethm7GXYhYnsNEMVokBy5HfTO
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
4/Hnn//6K5mK/w+KJRhxtH4CAA==

-->

</rfc>

