<?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.8 (Ruby 2.6.10) -->


<!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-13" 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="June" day="23"/>

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

    <abstract>


<?line 111?>

<t>This document specifies procedures for variations of the
"Bootstrapping Remote Secure Key Infrastructure" (BRSKI) series 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 supporting
the variation(s) they support. Procedures for BRSKI proxies are defined that
allow proxying of traffic for any current and future variation. Procedures to
discover BRSKI Pledges by their identifier are defined.</t>

<t>All procedures are defined such that they rely on IANA defined tables through
which not only well specified but also possible but not yet validated variations
of BRSKI or additional discovery mechanisms can be supported simply by adding entries
to the IANA tables.</t>

<t>Many of the procedures and mechanisms covered by this document may equally be applied
to discovery of other protocols, especially when they have non-interoperable variations.</t>



    </abstract>



  </front>

  <middle>


<?line 130?>

<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 whom 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 is using 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 and protocol port number from which it
initiates connections or transactions to a responder (typically UDP or TCP).</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 is using 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 and protocol port
number on which it responds to requests of the protocol (typically UDP or TCP).</t>
  </dd>
  <dt>Role:</dt>
  <dd>
    <t>In this document, functionality of an entity in a variation of BRSKI that can act as a responder and whose supported variations can be discovered. BRSKI roles relevant in this document include (Join) Registrar, Join Proxy and pledge. The IANA registry defined by this document allows specifying variations for any roles. 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 also used in this document to apply to any other discovery functionality/API. The terminology used by other mechanisms typically differs. For example, when <xref target="GRASP"/> is used to discover a responder socket for BRSKI, the Objective Name carries the equivalent to the service name. In <xref target="CORE-LF"/>, the Resource Type (rt=) 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 choice each for every variation type applicable to the context of one discoverable BRSKI communications.
For example, in the context of BRSKI, 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 where the choice
can technically be combined orthogonal to other variation types. This document defines the BRSKI variation types "mode", "enroll" and "vformat".</t>
  </dd>
  <dt>Variation Type Choice:</dt>
  <dd>
    <t>The name for different values that a particular variation type may have.
For example, this document defines the choices "rrm" and "prm" for the BRSKI variation "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 (BRSKI) is a protocol to automatically and securely
enroll pledge devices with a registrar of an owner, relying also on Join Proxies to facilitate
the communication, and on Manufacturer Authorized Signing Authorities (MASA) and Certificate 
Authorities (CA) to enable the enrollment. The protocol itself has multiple variations which
are not interoperable with each other, such as <xref target="BRSKI"/>, BRSKI with alternative enrollments (<xref target="BRSKI-AE"/>),
BRSKI in Pledge Responder Mode (<xref target="BRSKI-PRM"/>) and constrained BRSKI (<xref target="cBRSKI"/>). The
non-interoperability is a direct consequence of the different market requirements that caused
these different variations.</t>

<t>Pledges need to discover and select the best interoperable proxy or registrar, Join Proxies need
to discover all possible registrars and announce the same protocol variations - and proxy
for each of these variations to the right registrar. Pledges need to be discoverable by their
product identification ("serial number") and enumerable. These mechanisms need to be able to
use the discovery mechanisms supported by the network the devices are deployed in: <xref target="DNS-SD"/>
with mDNS or unicast DNS, GeneRic Autonomic Signaling Protocol (<xref target="GRASP"/>), or the discovery
mechanism used in networks predominantly relying on the Constrained Application Protocol (CoAP),
called <xref target="CORE-LF"/>.</t>

<t>This document specifies how to support these requirements by defining the discovery, selection
and proxy machineries independent of the encoding used by specific discovery mechanisms and by
defining a cross-discovery mechanism data model to represent protocol variations and discoverable
entities via a set of IANA tables. These IANA tables allow adding new variations, discoverable
device types and discovery mechanisms.</t>

<t>Automatic resiliency and load-sharing are enabled through the use of discovery mechanisms and the
provisioning of multiple instances of BRSKI components such as registrars and Join Proxies. This document
specifies the procedures to support load-sharing and (fast) failover under failure and recovery of
redundant components.</t>

<t>All these mechanisms need to be easily extensible and backward compatible, such that for example
unchanged deployed pledges can support BRSKI protocol variations not specified when they were implemented
(without any configuration changes).</t>

<t>Readers should understand the basic use cases for <xref target="BRSKI"/> and at least one variation
such as <xref target="BRSKI-PRM"/>, <xref target="BRSKI-AE"/> or <xref target="cBRSKI"/>. Nevertheless, this document
attempts to explain all discovery problem relevant aspects so that it should not
be necessary to understand the actual protocol details.</t>

<t>While this document is specific to BRSKI, many of the mechanisms specified in this document
may serve as templates for other protocols: Resilience and failover with discovery protocols,
signaling non-interoperable variations of a protocol, abstracting the data model from the
encoding specifics of different discovery mechanisms, specifying discoverable entities, variations
and discovery protocol specific encodings via IANA tables.</t>

</section>
<section anchor="challenges"><name>Challenges</name>

<t>BRSKI was designed to support multi-vendor deployments ideally with zero additional
provisioning in the network just to support BRSKI. In recent years, multiple
variations of the BRSKI protocol were specified, such as BRSKI with Pledge in Responder Mode <xref target="BRSKI-PRM"/>,
BRSKI with Alternate Enrollment <xref target="BRSKI-AE"/>, constrained BRSKI <xref target="cBRSKI"/> and constrained BRSKI <xref target="cPROXY"/>;
within these documents there are multiple options that need to be supported by all BRSKI entities involved in a BRSKI
enrollment, such as pledge, proxy and registrar.</t>

<t><list style="numbers">
  <t>Assume for example a registrar from vendor A is deployed in an enterprise network
or manufacturing plant to support a variety of pledges from an ecosystem of vendors all
using the vendor A registrar, and a particular subset of BRSKI protocol variations.
Later, it becomes necessary to also deploy various pledges from a different ecosystem.
Vendor B provides a registrar for this ecosystem, but they do use some slight variation
of BRSKI. Now the proxies deployed through either the A or B ecosystem discover either
registrar A or registrar B and randomly pick one. And in case they pick the wrong registrar,
enrollment for the pledge will fail because the proxy variation of BRSKI is not compatible
with the variation(s) supported by the chosen registrar.  <vspace blankLines='1'/>
Now the proxy implementations coming either from A or B start to fix up the issue
by introducing some proprietary extension to only discover "their" type of registrar.
Now a pledge from the A ecosystem can only be enrolled behind an A proxy and a B pledge
only behind a B proxy. The network operator now falls into the next trap: It is not
possible anymore to have networks where both A and B pledges can be enrolled, because
it is physically not possible or financially feasible to deploy both A and B proxies.
Or if they are deployed, pledges would only randomly pick the right proxy.</t>
  <t>Some use-case community wants to introduce a new variation aspect, such as introducing
a new encoding method for the message exchanges or a different certificate enrollment
protocol. But now this aspect can be combined with any possible other aspect of BRSKI.
And without appropriate planning upfront this ends up in more chaos of ad-hoc definition
every time some ecosystem prefers one specific variation of options.</t>
  <t>As if variations were not difficult enough, some networks may only support one specific
autodiscovery protocol, and a particular variation of BRSKI may not have defined how it
can be discovered through that protocol. That variation then has to invent yet another
one-off way to be discovered through this now more important discovery mechanism.</t>
</list></t>

<t>The following sub-sections attempt to more formally describe the different challenges
in a technically more precise language.</t>

<section anchor="signaling-brski-variation-for-responder-selection"><name>Signaling BRSKI variation for responder selection</name>

<t>When an initiator uses a discovery mechanism such as <xref target="DNS-SD"/>
to discover an instance of the service that it intends to connect to, it may discover more than one such instance.</t>

<t>For example, BRSKI pledges want to discover Join Proxies or registrars.
In the presence of variations of the BRSKI mechanisms that impact interoperability, performance
or security, not all discovered instances may support exactly what the initiator needs to achieve
interoperability or they may not provide the best desired metric. To support choosing the best
interoperable responder, the discovery mechanism needs to carry the necessary
additional information beside the service name that indicates the service/role of the responder.</t>

</section>
<section anchor="consistent-support-for-variations-across-different-discovery-mechanisms"><name>Consistent support for variations across different discovery mechanisms.</name>

<t>Different BRSKI deployments may prefer different discovery mechanisms, such as <xref target="DNS-SD"/>, <xref target="GRASP"/>,
<xref target="CORE-LF"/> or others. Any variation in discovery already defined for one discovery mechanism usually
has to be re-specified individually for every other discovery mechanism. This makes it often cumbersome
to select the preferred discovery mechanism for a specific type of deployment, because such additional
specification work can take a long time. Independent specification of variations for different
discovery mechanisms can also easily lead to inconsistencies and hence the inability to equally
support all variations across all discovery mechanisms.</t>

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

<t>Pledges or Agents often need to connect to a registrar that supports the variation of BRSKI
supported by the pledge or Agent via a Join Proxy. The Join Proxy needs to discover registrars
and the variations they support and then announce themselves to pledges or Agents accordingly
so that when the pledge or Agent connects to the Proxy that it will connect it to the right
registrar.</t>

<t>This document defines variations so that Join Proxies can be implemented and operated agnostic 
of variations: When a Join Proxy supports one variation for a particular IP version and transport
(TCP, UDP stateful/stateless), then it can support all current and future variations for the
same IP version and transport without the need for Join Proxy software or configuration updates.</t>

<t>To support agnostic implementations, variations can only differ in the payload of messages carried
across those TCP/UDP connections, but not the transport mechanisms used. New transport mechanisms cannot be
variations, but need to be so-called contexts.</t>

<t>The choice of encoding of variations into different discovery methods also needs to ensure that it
can be discovered by legacy Join Proxy implementations.</t>

<t>Initial support for variations in proxies does create additional coding effort:
When a pledge or Registrar-Agent connects to a Join Proxy with the need to use a specific variation
on a registrar, then the Join Proxy needs to understand which variation that is, so that it can connect
the pledge or registrar to a registrar supporting that variation. This requires that proxies create
per-variation responder sockets.</t>

</section>
</section>
<section anchor="discovery-challenges"><name>Discovery Challenges</name>

<t>While <xref target="DNS-SD"/> is widely deployed, it is most commonly used in non-automated workflows, such as
when (human) users are using (graphical) user interfaces to browse DNS-SD Service Instance (names) and
selecting an instance of a service based on out-of-band criteria ("this printer sounds good"). In
BRSKI, selection is meant to be fully automated with no human in the loop. Except for discovery
of pledges, the Service Instance names are unused artefacts of DNS-SD.  Other discovery mechanisms
such as GRASP for example only need to be set up to discover the socket addresses of service instances
but no names for them.</t>

<t>Fully automated use of discovery mechanisms specifically allows for automated
redundancy and expedient resilience through automated failover when a service instance fails or recovers.
The details of those redundancy operations are untypical for most human driven discovery and are
hence described in more detail in this document.</t>

<t>DNS and DNS-SD libraries are widely used but not necessarily available or usable for all embedded devices
targeted for BRSKI, especially constrained devices or "general purpose" network equipment such as ethernet-
connected routers in industrial, enterprise and service provider networks. Hence this document also discusses
considerations and requirements for such libraries as well as operational aspects in <xref target="dnssd-signaling"/>.</t>

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

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

<t>Using the discovery information specified through these tables, this document specifies
details of selection and fail-over when discovering more than one interoperable and available responder.
These procedures intend to provide resilience and scalability of BRSKI services not possible without dynamic
discovery mechanisms.</t>

<t>Finally, this document specifies procedures for Join Proxies to discover variations of registrars
using any discovery mechanism, announce them to pledges - and connect a pledge accordingly
to the right registrar based on the variation required by the pledge.  These procedures allow
introducing new variations of BRSKI without need to upgrade proxies.</t>

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

<section anchor="data-model"><name>Data Model</name>

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

<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 network socket using a particular transport/security/session stack
(such as TCP, UDP, COAP, DTLS). These functionalities are called roles and initiators are
enabled by the functionality of this document to automatically discover responders and select one
that is interoperable with it.</t>

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

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

<t>In this document a service is functionality performed as a result of a network connection
from an initiator to a responder. The service is commonly named after the role name of the responder,
such as Join Proxy, registrar or MASA.</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. Due to
the absence of another 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 and 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 encoding of messages or 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 based 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 challenges</t>

<t><list style="numbers">
  <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 them separately
for each discovery mechanism. In addition, not all discovery mechanism registry rules may
look favorably at the registration of Service Names for such protocol variations.</t>
  <t>Whenever a new variation is introduced, all deployed BRSKI 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 proxies (without additional protocol mechanisms that would be more
complex than the variations approach). Most Join Proxies should be able to operate without
configuration though.</t>
</list></t>

<t>For these reasons, this document introduces the encoding of BRSKI (role) variations
through a secondary signaling element in each discovery method, enabling 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, and not once for each current or future discovery method.</t>

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

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

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

<t>This document calls these options "Variation Type", and the above three variation types
are called "vformat" for the voucher format, "mode" for the Endpoints being 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 hence called "Variation Type Choices":
"prm" or "rrm" for the variation type "mode". "cmsj", "cose" or "jose" for the variation type "vformat".
"est", "cmp" or "scep" for the variation type "enroll".</t>

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

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

<t>The string name of a variation is a string formed by concatenating a single variation type choice for every
(necessary) variation type. For example "rrm-cmsj-est" could be describing the protocol options
used by a <xref target="BRSKI"/> connection pledge to registrar - potentially through a Join Proxy. This string
representation of a variation is called the variation string and it is consistently
used for signaling across any discovery mechanisms.</t>

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

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

<t>For variation strings to be semantically unambiguous, the variation type choices across all
variation types have distinct names, and the order in which variation type choices are
concatenated is the order in which variation types are defined in the according registry
table. Hence new variation type choices have to be appended to the end of the registry table.</t>

<t>Just because a variation name is composed from variation type choices does not mean that
an unspecified variation of (random) variation type choices can work without new implementation
or specification. Or even make sense. This may be the case, or it may not. This is also the reason
why this document specifies a registry that explicitly enumerates all variations that are
known to have sufficient specification and will 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 in the variation type "enroll", such as
new endpoints in that protocol.  The required functional semantic implied by the "enroll" variation type
value in variations with "prm" is thus a different one than in variations not using "prm". And
<xref target="BRSKI-PRM"/> does not necessarily sufficiently specify these enhancements for enrollment protocols
that may not have been known or specified by the time <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 are using TCP, hence the "t") from pledge to Join Proxy or registrar and from Join Proxy to registrar connections.</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 connections.</t>

<t>"BRSKI-PLEDGE" is the context covering pledges using <xref target="BRSKI-PRM"/> for connections
from Registrar-Agents to pledges. It can equally cover in the future through variations the discovery of 
<xref target="BRSKI"/> pledges for connections to them for other purposes - by introduction of
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 backward incompatible new secure transport options.</t>

<t>Also, this document does not introduce contexts for discovery of other BRSKI roles beyond those mentioned,
such as discovery of MASA by registrars. However, the registries introduced by this document are defined such
that those can be introduced later as well 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 proxies can
transparently support, so that the definition of variations makes proxies automatically
extensible.</t>

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

<t>Differences in the supported transport stack of a responder are typically included as a
signaling element of the discovery method: Whether TCP or 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 where a change in transport spec does not imply a change in signalled messages
and their semantics, gateways could transparently proxy from IP and vice versa or
even between TCP and some other IP transport protocols such as SCTP. However, this is out of
scope of this specification.</t>

<t>The procedures specified in <xref target="cPROXY"/> would allow not only to
run a transport stack of COAP over DTLS, but equally any other transport stack over UDP, such
as QUIC - without any changes to the Join Proxy implementation or configuration when following
the procedures described in this document. All that is needed would be to introduce appropriate
registration entries for the registry tables specified in this document (e.g.: add new Variation Type
for transport and choices such as "coaps" or "quic" ).</t>

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

<t>This sub-section re-states and summarizes the desired Data Model introduced before in its
instantiation of 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 initial content of the registry tables are
defined in the IANA section for it.</t>

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

<t>The main Discovery Parameters table ({#reg-discovery}) simply defines the abbreviations
for the Discovery Mechanisms specified for use with BRSKI Discovery: CORE-LF, DNS-SD and GRASP.
It allows adding new Discovery mechanisms and tracking where they are specified - including
outside the IETF.</t>

<t>This table is called the "main" table because the "BRSKI Discovery Parameters" is a
registry with sub-registries and one table has to be associated with the registry itself
instead of 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 framework: BRSKI 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, as opposed to repeating them for every service (Registrar, Stateless-Registrar, Proxy 
for example).</t>

<t>Distinguishing BRSKI from cBRSKI is also necessary so that the different Transport Stack
parameter(s) between the two can be appropriately included into 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 specified 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 discovery the different BRSKI services for each context and Discovery Mechanism. It also
specifies the necessary (Transport Stack) Parameters that needs to be used in the discovery
mechanism to indicate (discover or recognize in discovery replies) the service. In the
initial table as specified by this document this is primarily used to distinguish BRSKI
services which use TCP and cBRSKI services which use coaps, also 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", <xref target="subreg-choices"/> depends on the definition of Variation Types
from the Contexts sub-registry, <xref target="subreg-contexts"/> by defining the specified choices for each
Variation Type and registers the specification(s) where they are defined.</t>

<t>Registration of a Variation Type Choice is per Context, so that different Contexts can
have different specification (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 specification for BRSKI 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 protocols services for each Context. This is ultimately the
encoding specified in this document to be used to signal across all Discovery Methods the
actual Variations supported by a Service Instance. This sub-registry depends on the definitions
of the prior registry tables, which is why it is last.</t>

<t>A Variation is a combination of one Variation Type Choice for every Variation Type. Effectively,
it describes one way that a particular BRSKI service can operate. With the Variation Types
"mode", "vformat" (voucher format) and "enroll" (enrollment protocol) specified in this
document, it is possible to specify a Variation that has a different overall procedure: "mode"
can be "rrm" to indicate the pledge driven progression of BRSKI (as in <xref target="BRSKI"/> and
<xref target="cBRSKI"/>) or the "prm" Variation Type Choice as specified
in <xref target="BRSKI-PRM"/>. "vformat" specifies one of the encoding options possible
for the voucher exchanged in BRSKI, and "enroll" specifies the enrollment protocol, which
logically is separate from BRSKI but factually included into BRSKI because it so far not only
shares most of the time the secure Pledge to Registrar connection, but it also is an
interoperability requirement between Registrar and Pledge: Both need to support the same
encoding for a BRSKI exchange to finish successfully.</t>

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

<t>Variations are encoded as Variation Strings which are combined 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 introducing new Variation Types in a backward
compatible fashion. The backward compatible choice for a new Variation Type is marked
as "Dflt", does hence not need to be included in the Variation Type Choice, and hence
the pre-existing Variation Strings without the new Variation Type can 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 through distributing the connections from multiple
initiators to different responders if so desired through operator configuration of the
discovery methods parameters.</t>

<t>At the time of this specification, the relevant initiators are BRSKI pledges, Join Proxies and Registrar-Agents,
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 MASA by BRSKI
Registrars.</t>

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

<t>Note that while pledges are discoverable in the context of this document's technologies, this section
and its subsections do not apply to discovery of pledges because there is no redundancy involved,
and selection of pledges is also only by their ID and 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 and update its discoverable responder information from the discovery mechanism
if that is not already happening automatically by the chosen discovery method before it
restarts connection attempts.</t>

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

<t>The order of responders to attempt connections to is derived from two criteria: preference and weight.</t>

<t>Preference order is foremost determined by the responder's preference across the variations it
supports. Within the set of responders with the same preference by the initiator because of their
variation, the preference is further determined from discovery method 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 calculated from the most preferred variation supported by it.</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 is to ensure that those events have
the chance to overcome possible persistent problems when 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 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 
into account when determining the order of responders with the same preference,
such as the "weight" parameter in DNS-SD.</t>

<t>Implementations of the resilient responder selection described so far <bcp14>SHOULD</bcp14> support
selection amongst at least 4 and no more than 10 responders with one or more
supported variation for each supported IP address family (v4 and/or v6). 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>4 Responders for a specific variation are a typical minimum resilience setup in a larger
network setup, in which 2 responders serve as redundancy at the responder host level and
the other 2 responders provide redundancy against network connectivity failure to those
first two responders. 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 aliveness of a service process.</t>

<t>In typical implementations, service announcement 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 announcement setup. In addition,
caching of service announcements, such as through the DNS TTL field are a further
possible cause of assuming service aliveness that is not correct. Only actual
connection probing or other similar tracking can determine if 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 died or would
have failed to successfully accept connection for 120 seconds or more. This can
be implemented for example by connection probing once every 30 seconds and
withdrawing the service announcements when this fails or by other forms
of tracking responsiveness of the responder functionality.</t>

<t>The better service announcements indicate actual aliveness of the 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 system 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 the
description from <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 selection of responders for each variation across
connections for multiple pledges instead of starting the sequence of responders
to try from the highest precedence anew for every new connecting pledge - and repeatedly run
into timeouts for each new 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 unresponsiveness or unreachability of a responder
through connection attempts. Instead, they <bcp14>SHOULD</bcp14> perform a stateless responsiveness/reachability
check for each responder that the Join Proxy is actively forwarding packets to from
one or more pledges.  If no packets are returned from such a responder over a period of 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 after 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 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="I-D.ietf-bess-evpn-fast-df-recovery"/>.
Supporting weights with stateless proxying is even more complex. Instead of
load balancing, responders simply need to be designed to scale to the maximum
amount of simultaneous initiator connections necessary when supporting stateless
proxying mode.</t>

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

<t>Initiators including proxies <bcp14>SHOULD</bcp14> always pick the highest possible priority and weight
parameters possible in the discovery mechanism used that allows support for the
desired preference goals. For example, any primary initiator should select the highest
numerical values possible.</t>

<t>This recommendation is intended as a protection against erroneous, but not malicious
service announcements whenever the default priorities are lower than the maximum
priority. It can also serve as a 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 being 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-proxies-support-for-discovery-and-variations"><name>Join Proxies 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 methods 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
need for the variation to be known at the time of implementation of the Join Proxy
or configured on the Join Proxy. If a Join Proxy supports this requirement, this is
called support for "arbitrary variations". Supporting 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>Arbitrary variations support allows deploying proxies once and adding
pledges and registrars supporting new variations later - without upgrade
or change of configuration of proxies.</t>

</section>
<section anchor="registrar-operations-modes"><name>Registrar Operations Modes</name>

<t>Proxies may use different approaches to connect to registrars. The following
subsections discuss the primary 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 for every discovered registrar
socket a separate Join Proxy responder socket. It announces this socket with the same set of parameters
as it did learn 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 because they are exposed to at least the same number 
of service announcements from proxies as proxies see service announcements from registrars - and the
pledge has to select the best available one from them.</t>

<t>To reduce the number of sockets that have to be announced by proxies when using direct connections
and to also reduce the number of responder sockets that need to be maintained by a Join Proxy operating
in this approach, these proxies <bcp14>SHOULD</bcp14> limit the number of registrar sockets they map to between 4 and 10
best registrar sockets as described in <xref target="responder-selection"/> per variation.</t>

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

<t>In the implementation mode "best registrar selection", the Join Proxy creates a separate responder socket
for a set of all registrar sockets that it discovers and 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, replacing the service name and network parameter names with those
for its Join Proxy responder socket as in the case of a direct connection.</t>

<t>The Join Proxy then connects pledges to the best available registrar socket from that set when
it receives a connection to that socket.</t>

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

<t>Using newly discovered responders in stateless proxies supporting best registrar selection must be done carefully.
Consider the common case that service announcements for a primary responder
did stop due to network issues, now the Join Proxy starts to send packets to a secondary
responder, and then the primary responder becomes reachable and the Join Proxy sees
service announcements for it. If the Join Proxy would now start to forward packets
from pledges to this primary responder due to its higher precedence, then this
could unnecessarily break ongoing connections from clients whose packets
are currently forwarded to the lower preference Join Proxy. 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>Replacing a selected responder in a stateless Join Proxy with a better one
<bcp14>SHOULD</bcp14> hence only be done if no packets have been exchanged between pledges
and the current selected responder through the Join Proxy for more than 300 seconds.
This long timeout specifically intends to not break 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 selection of registrar for each Join Proxy responder socket across
connections for multiple pledges instead of starting the sequence of responders
to try anew from the highest precedence registrar for every new connecting pledge - and repeatedly run
into timeouts when one or more of the best registrar 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 and re-consider it only for new
connection attempts 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 implement support for connections from stateful proxies
and/or from pledges may minimize their Join Proxy implementation work by only implementing
the appropriate service name announcements for the same socket to support
connections from both:  announcements as a registrar for connections from
proxies and announcements as a Join Proxy for connections from pledges.
No additional sockets or other Join Proxy specific packet processing code
is required to support this.</t>

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

<t>Proxy functionality that is implemented as described here on registrars
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 requirements
regarding discovering and selecting registrars described for the prior specified
modes.</t>

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

<t>Proxies in name only <bcp14>SHOULD</bcp14> default to the same discovery method priority and
weight parameter as those configured for the registrar service announcements.
This is so that in the absence of separate proxies in the network selection
of registrars co-located proxies would follow the same criteria as those
used by proxies and which use the registrar service announcement parameters.</t>

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

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

<t>The list of possible modes presented is exemplary and not meant to be exhaustive.
Other modes are equally able to support the requirements, such as mixtures
of the described modes. Likewise, introduction of new variations may not
only work well via arbitrary variation support in proxies, but through
explicit configuration of variations on proxies - this all depends on
the target deployment environment. The presented modes were chosen
primarily as the ones providing most configuration free deployment options and
for registrar implementations most simplicity in implementation.</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 best available discovery and selection onto the pledge. If
simultaneously 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 both pledge and
Join Proxy code together is easiest to implement.</t>

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

<t>Likewise, proxy in service name only mode will disturb the introduction of new variations
on pledges and other registrars in the network if the registrar node implementing
proxy in service name only mode becomes a necessary Join Proxy for a pledge requiring a
variation not supported by this registrar, but by another registrar that
would only be reachable through this registrar node. Therefore, Join Proxy
in name only mode is best suited for node types not deployed on an edge
of the network where a future variety of pledges may connect to, and 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 other protocols beside BRSKI as long as they use TCP or UDP.
For this, it would simply be required 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 Join Proxy responder socket service announcements.</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 registration in a network
with many geographically spread out sites such as in enterprise,  industrial or
building construction environments. During initial bringup of such sites, 
Internet connectivity may be non-existing, or intermittent, and hence one or more
local registrar in each such site is highly desirable. Such registrars may of course
require private mobile network connectivity to MASA, or rely on out-of-band provisioning
of vouchers.</t>

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

<t>Such large number of redundant service announcements is typically highly undesirable,
and appropriate configurations of service discovery mechanisms need to be used
to avoid them. For example, in GRASP, service announcements can be scoped to small hop counts,
Anycast addressing can be used to make all decentralized registrars overload
the same IP address, and hence make them all share 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 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 BRSKI
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 below defined DNS-SD data 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 overriding or amending 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 enumerate expected pledges more easily, especially in the presence of multiple
different subnets and use of mDNS. A pledge can also only be found by browsing if it is not
possible for the owner to acquire serial-number information of a pledge by the time BRSKI-PRM needs it
(to create a service instance name).</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 equally <bcp14>RECOMMENDED</bcp14> to apply the same random delay rule for answers to multicasted or
flooded queries in other discovery mechanisms that have the same response burst problem - even when
they do not specify such a mechanism, such as in GRASP.</t>

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

<t>This specification does not introduce the procedures to discover pledges via CORE-LF or GRASP
because it is unclear if there is currently demand for this, and because it can easily be added
via additional specs and adding entries to the registry.  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 from information which is</t>

<t><list style="symbols">
  <t>Easily known by BRSKI operations, such as the operational personnel or software automation,
specifically sales integration backend software.</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-code/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 (but unlikely) lead to (duplicate) replies
from two or more pledges having the same serial number, such as in the following cases:</t>

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

<t>If pledges enable browsing of their service instance name, they <bcp14>MAY</bcp14> support DNS-SD specified
procedures to create unique service instance names when they discover such clashes, by appending
a space and serial 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 name is not supported, Registrar-Agents would have to
always (and 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, and even if the Registrar-Agent
then attempts to start enrolling all pledges with the same clashing service instance name,
it may not have enough information to distinguish pledges other than by the random numbering. This would happen
especially if the IDevID from both devices (of different product type), had the same serial
number, and the trust anchor certificate of both was the same (e.g. same root CA certificate), which is likely when they are from the same manufacturer.
Even if some other IDevID field was used to distinguish their device model, 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 a scheme how their pledges form a service instance name from
information available to the customer of the pledge.</t>
  <t>These service instance names <bcp14>MUST</bcp14> be unique across all IDevID of 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 their
subject name serialNumber. <xref target="RFC5280"/> calls this the X520SerialNumber.</t>
  <t>Pledges <bcp14>SHOULD</bcp14> make this serialNumber information consistent with easily accessible
product instance information when in physical possession of the pledge, such as
product type code and serial number on 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 thus allows devices from different manufacturers using the
same serialNumber scheme to be disambiguated, reducing the likelihood of service instance name clashes if manufacturer names are 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
from above.  <xref target="service-name-example"/> shows the different data involved in DNS-SD records
for a pledge from 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
    
      ; SRC 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.: openssh
        Subject: serialNumber = "PID:Model-0815 SN:WLDPC2117A99",
         O = example.com, CN = Model-0815
]]></artwork></figure>

<t>Using the information from the above Example picture, a Registrar-Agent
implementation operates as follows.</t>

<t><list style="numbers">
  <t>Initially, it is configured with the Manufacturer published information (1.),
and as not shown it will likely have a list of such information for various
brands of products.</t>
  <t>After a pledge purchase and initial physical deployment,
it is provided with the Purchase Order information for the pledge (2.),
this order information tells it, that the Manufacturers Brand is "Example",
that the pledge product Model &lt;PID&gt; is "0815" and its Serial Number &lt;SN&gt;
"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. With the Organization being a global
DNS domain "example.com", including this in the Instance makes it unique
across manufacturers.</t>
  <t>It then uses standard DNS-SD via mDNS to find the pledge, using the DNS-SD 
Resource Records (RR) 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 in the IDevID matches the public key of the
desired Manufacturer from (1.1), then it trusts that this pledge is from
that manufacturer. When the O and serialNumber of the certificate match
what it constructed from the &lt;PID&gt;/&lt;SN&gt; values from purchase information 
from (3.) then 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/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 know the IDevID of the pledge
through the purchase process instead of having to match the IDevID from 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 is not unique across the certificate chain,
but further Subject fields of the certificate are required for a unique
identification, such as the O(rganization) field. It could contain for example
one out of multiple brand names that use simple numerical serialNumber formats
and hence could collide.  None of such 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 usage 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 for 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 the domain name of the "IN AAAA" RR. This is just an option,
and the pledge can use whatever host name it wants.</t>

</section>
<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 it is deemed appropriate by vendors and
operators of BRSKI-PLEDGE installations to rely on WebPKI trust anchors.</t>

<t>The trust anchor certificate itself (or a sub-CA in the certificate chain)
would then have to have a WebPKI trust anchor signature and a DNS Name
that can easily be identified as being used for IDevID, such as
"*.idevid.example.com". And 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&gt;".</t>

<t>Obtaining a WebPKI signature for their trust anchor for these wildcard domain
names from a WebPKI trust anchor is the added effort for manufacturers of this scheme.</t>

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

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

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

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

<t>Implementations of BRSKI responders 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> equally announce their services with mDNS. BRSKI responder implementations  that only 
need to announce their services across adjacent subnets such as most proxies <bcp14>SHOULD</bcp14> only use mDNS to announce them.</t>

<t>Network equipment implementing BRSKI may support a DNS(-SD) resolver library at the operating system 
level because such an operating system level use of 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
because it typically results in undesired DNS resolution dependencies in components such as
in 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 no undesired dependencies against DNS or DNS-SD result from using DNS-SD discovery
for BRSKI. Such as by limiting the use of DNS-SD resolver functionality only to BRSKI discovery
unless also explicitly enabled for other functions.  Note that these DNS(-SD) resolver considerations
are independent of supporting other DNS functionalities such as <xref target="RFC8106"/>.</t>

<t>Ideally, BRSKI should be able to run as autonomously and as reliably as possible, not depending on 
any unnecessary manual configuration or unnecessary single points of failure. While any of the discovery
mechanisms described in this document (especially including DNS-SD via unicast) allow support for
fully autonomic redundancy of registrars, DNS itself relies on DNS servers for
which redundancy and autonomous operations require additional considerations that are outside
the scope of this specification.</t>

<t>Except for networks defining additional automated procedures (such as Thread networks),
discovery of DNS servers does in general rely on procedures requiring non-automatic configuration
of the DNS server IP addresses, such as IPv6 router discovery as in <xref target="RFC8106"/>. Note that once
DNS servers are discovered <xref target="DNSSD-SRP"/> registrars can be automatically discovered via DNS-SD.</t>

<t>However, redundant setups of DNS servers and SRP registrars also require additional
non-standardized considerations. Networks wanting to support more automated operations of discovery
for BRSKI may consider to use GRASP or use 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
to resolve the above described challenge.</t>

<t>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"/>, but also via unicast DNS, including registering them via <xref target="DNSSD-SRP"/>.</t>

</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 a comma separated
Values to 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 Variation String. Likewise "var=" indicates support for it. If multiple
Variation Strings are encoded, the empty string <bcp14>SHOULD</bcp14> come first: "var=,variation2".
However, it is <bcp14>RECOMMENDED</bcp14> for the registry table to also define a non-empty string alternative
and use that in the encoding of the TXT RR "var" key because that makes it easier for humans
to understand which variation is meant.</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 for each responder socket individually its supported variations as well
as its selection criteria (priority weight), it needs to be represented in DNS-SD as a
service instance name with an SRV and 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, but in tBRSKI and cBRSKI
it is merely an artefact of DNS-SD encoding: Unlike typical user-centric DNS-SD use-cases, there are
no users that 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 their DNS-SD
operation to avoid additional need for operator configurations. Registrars <bcp14>SHOULD</bcp14> likewise support the
configuration of such a name - if the operator so desires to support operational troubleshooting.</t>

<t>If the host on which the registrar is running already has a DNS host name for the IP addresses
used by the registrar and for the desired DNS method (mDNS = .local, unicast DNS = default domain),
then 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 because of the registrar,
when usable RRs already exist.</t>

<t>If such a DNS RR does not exist, but a DNS host name for a different DNS method, or a different set of
addresses than used by the registrar, then 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 requirement
exist 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 for example would happen if a registrar tried to
use an instance component such as "registrar" and there is already another registrar. 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, and that the MAC address was assigned by registering its OUI with IEEE and that
MAC addresses from the OUI were assigned uniquely. This is for example not necessarily the
case for IoT equipment or registrars running in a virtual context in the cloud. IP addresses
can be assumed to be unique (enough) when they have global scope or ULA.</t>

<t>When registrar software does not know that no other registrar software or instance of the same
software may run on the same host (for example when being packaged as an application), the
registrar <bcp14>SHOULD</bcp14> not assume that a host unique name is actually unique, but instead disambiguate
it by appending an additional name element to make it unique, such as a process number of the
running process.</t>

<t>Picking well-known or unique identifiers for registrar also helps operator to troubleshoot by often
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, it is not
permitted to use ":" in target host names, for example as part of MAC or IP address based host names.
Instance names do not share these syntactical limitation. For operational simplicity,
instance names <bcp14>SHOULD</bcp14> be constructed in the same manner as target hostnames in an implementation.
For example by replacing ":" with "-".</t>

<t>If the responder needs to indicate different sockets for different (set of) variations, for example,
when operating as a Join Proxy, according to <xref target="proxy"/>, then it needs to signal for each socket a
separate service instance name with the appropriate port information in its SRV record and the
supported variations for that socket in the TXT Record of that service instance name. 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 OUI and IPv6 addresses reserved for documentation
purposes. Do not re-use these addresses in actual deployments.</t>

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

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

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

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

<t>Such a registrar implementation might even support a combination of "prm" with "jose" and "cmp",
but the interoperability aspects of such a combination have not been investigated at the
time of writing of this specification, and hence it is not listed 
in the IANA registry. Nevertheless, this may happen later, so it is useful for registrar
implementations to allow configuration of variations for its service announcements to allow
operational modifications.</t>

<t>This registrar implementation is running on a router that otherwise has no need for a 
host name registered in DNS or DNS-SD, so it is using its MAC-address as its target host name,
"0000-5e00-5314.local", the same name is used in the registrar service instance names.
Running on a router without modular software, the registrar knows that no other registrar
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 a 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=est-tls,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=rrm-cose"

# 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" 

# 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 customer with
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 into 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 that has
pledges using BRSKI-PRM.</t>

<t>Each of the three applications operates 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
some 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-RR,
using these creates 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="signaling"><name>Signaling</name>

<t>This document does not specify a mandatory to implement set of signaling options to guarantee
interoperability of discovery between initiator and responders when using GRASP. Like for the
other discovery mechanisms, these requirements will have to come from other specifications
that outline what in <xref target="GRASP"/> is called the "security and transport substrate" to be used for
GRASP.</t>

<t><xref target="ACP"/> specifies one such "security and transport substrate", which is zero-touch deployable.
It is mandatory for initiators and responders implementing the so-called
"Autonomic Network Infrastructure" (ANI) 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="encoding-and-examples"><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 method of forming the Variation String
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, but the same location information if the different Variations can be
supported across the same socket 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 choice of encoding for GRASP optimizes for minimum parsing effort, whereas
the DNS-SD encoding is optimized for most compact encoding given the 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, ""],
      [O_IPv6_LOCATOR,
       h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]],

     [["AN_Join_Registrar", 4, 255, "prm"],
      [O_IPv6_LOCATOR,
       h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]],

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

     [["AN_Join_Registrar_rjp", 4, 255, "rrm"],
      [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 in support of BRSKI
with both "rrm" and "prm" supported on the same TCP port 4443 and for cBRSKI (COAP over DTLS) on UDP
port 4684 in stateful mode and port 4686 for stateless mode. The first variation for "rrm" uses an objective-value of ""
for backward compatibility with <xref target="BRSKI"/> where it was introduced. With cBRSKI introducing definitions
for the use of GRASP only with this document, this special case is not perpetuated, which is why "rrm" is
used in the cBRSKI announcements.</t>

<t>Note that one or more complete service instances (in the example 3) can be contained within a single GRASP message
without the need for any equivalent to 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 RR, but 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_Join_Registrar", 4, 1, ""],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 5553]],

    [["AN_Join_Registrar", 4, 1, "prm"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_TCP, 5555]],

    [["AN_Join_Registrar", 4, 1, "rrm"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_UDP, 5684]],

    [["AN_Join_Registrar_rjp", 4, 1, "rrm"],
     [O_IPv6_LOCATOR,
      h'fe800000000000000000000000000001', IPPROTO_UDP, 5686]],
   ]
]
]]></artwork></figure>

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

<t>The use of "" for "rrm" in BRSKI is again for backward compatibility with
<xref target="BRSKI"/>. The absence of two announcements for cBRSKI is because there is no stateless
mode from Join Proxy to pledge or Registrar-Agent. Instead, the Join Proxy will have
to decide whether to connect to the registrar via stateful or stateless mode,
but this decision is invisible on its GRASP announcements.</t>

<t>Noteworthy too is the use of two different ports for "rrm" versus "prm". As the Registrar
did announce 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, "",
     [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",
     [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 "rrm", with port 4443.
Assuming there is no shared GRASP implementation across the two separate processes,
such as a separate GRASP process for each, the announcements from both processes
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
it is necessary for receivers to support receiving multiple announcements from the
same sender in GRASP not only within a single packet, but also when they arrive
via separate packets, in order 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="RFC5988"/> defines a format, originally for use with
HTTP headers, to link an HTTP document against other URIs. Web linking is not a standalone
method for 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 discovery of
service instances that use HTTP or any other suitable (web transfer) protocols.
This makes CORE-LF an alternative to DNS-SD and GRASP for any of the BRSKI variations.</t>

<t>In CORE-LF, an initiator may use (link-local) IPv6 multicast UDP packet to the COAP port (5683)
to discover a possible responder for a requested resource. The responder will reply with unicast UDP.
If the IPv6 address of a responder has been configured or is otherwise known to the initiator, it
may instead of multicast equally 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 which is 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) and 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 registration and discovery of resources and
hence services which may be preferred in deployments over other options and can equally be applicable
to register/discover any variation of BRSKI for any type of BRSKI service.</t>

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

<t><xref target="cBRSKI"/> specifies the use of CORE-LF as the reference method
for pledges to discover registrars - in the absence of any proxies, to allow deployments
of scenarios where no proxies are needed - and hence also where <xref target="cBRSKI"/>
is not needed. Because BRSKI is designed so that pledges can be agnostic of whether they connect
to a registrar directly or via a Join Proxy, the resource/service that the pledge needs to discover
is nevertheless called "(BRSKI) Join Proxy (for pledges)", and encoded in CORE-LF as the value
"brski.jp" for the resource type attribute ("rt=resource-type") according to <xref target="CORE-LF"/>.</t>

<t>The following picture, <xref target="corelf-example-1"/> shows the encoding and an example of this discovery.
"ff02::fd" is the link-local scope address for "All Coap Nodes" in IPv6, as introduced in <xref target="RFC7390"/>,
which also defines IPv6 and site-scoped address options.</t>

<figure title="CORE-LF discovery of registrar/proxy by pledges" anchor="corelf-example-1"><artwork><![CDATA[
Template:

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

RES: 2.05 Content
   <coaps://[Responder_IP_unicast_address]:join-port>; rt="brski.jp"

Example:

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

RES: 2.05 Content
   <coaps://[fe80::c78:e3c4:58a0:a4ad]:8485>;rt=brski.jp
]]></artwork></figure>

<t><xref target="cPROXY"/> introduces the operations of a CoAP based Join Proxy
both as 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"/>), but also as a new, stateless Join Proxy - to eliminate the
need for potentially highly constrained Join Proxy nodes to keep connection state and avoid
the complexity of protecting that state against attacks. The new resource type "brski.rjp" is
defined to support stateless Join Proxies to discover registrars and their UDP port number
that support the stateless, so-called JPY protocol.</t>

<t>The following picture, <xref target="corelf-example-2"/> shows the encoding and an example of this discovery.
<xref target="cPROXY"/> introduces the new scheme "coaps+jpy" for the packet
header used by the stateless JPY" protocol. The request in the template is assumed to be
based on unicast, relying on another method to discover the IP address of the registrar first.
It could equally use COAP site-scoped IP multicast, but in general, the assumption is that
registrar will not necessarily be link-local connected to proxies (this may be different in
specific deployments). Even though the registrar IP address is hence known, the reply still
needs to include this address again because in the <xref target="CORE-LF"/> link format, and <xref target="RFC3986"/>, Section 3.2, the
authority attribute cannot include a port number unless it also includes the IP address.</t>

<figure title="CORE-LF discovery of registrars that support stateless JPY protocol by proxies" anchor="corelf-example-2"><artwork><![CDATA[
Template:

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

RES: 2.05 Content
     <coaps+jpy://[Responder_IP_unicast_address]:join-port>;rt=brski.jpy

Example:

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

RES: 2.05 Content
     <coaps+jpy://[2001:db8:0:abcd::52]:7633>;rt=brski.jpy
]]></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 to what is specified in <xref target="cBRSKI"/>
and <xref target="cPROXY"/>, except for noted exceptions, where the requirements
are narrowed. The following uses terms from the ABNF in section 2 of <xref target="CORE-LF"/> and from <xref target="RFC3986"/> (URI) for explanations
and relies 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.*

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

<t>BRSKI responder sockets 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>URL-references <bcp14>SHOULD</bcp14> not use a domain name instead of an address to allow responders to
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. When omitting this information, the full information can only be known in the
context of the connections scheme and port through which it was retrieved.</t>

<t>Note that these URL-Reference requirements are stronger than those from <xref target="cBRSKI"/>
and <xref target="cPROXY"/> to make extensibility easier.</t>

<t>BRSKI responder sockets <bcp14>MUST</bcp14> include a resource type field indicating a resource type
value indicating a BRSKI service, indicated as "brski-service" in <xref target="corelf-template"/>.
This <bcp14>MUST</bcp14> be registered in the IANA "Resource Type Link Target Attribute Values" registry table,
and also referenced in the "BRSKI Contexts" registry table <xref target="subreg-contexts"/>. 
A brski-service is a string without "." (single component string).</t>

<t>Discovery of registrar sockets  by stateful proxies uses the resource type "brski.rs".
This can be used in conjunction with any scheme: https:// for BRSKI and coaps:// for cBRSKI.
Stateless registrar sockets use the resource type "brski.rjpy". This currently only support
the coaps+jpy:// scheme. By its nature, it can only be used with schemes that rely on UDP.
These resource type uses are no change over <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="
link-extension. The value is a quoted-string of one or more space-concatenated
BRSKI variation strings. The absence of a "var=" link-extension indicates support for only
the default variation for 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 semantic and format defined in <xref target="RFC2782"/> for priority
and weight in DNS SRV resource records. If the attribute pw is absent, then
it is assumed to mean pw="65535 0".</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 BRSKI variations" anchor="corelf-example-4"><artwork><![CDATA[
REQ: GET /.well-known/core?rt=brski.*

RES: 2.05 Content
Content-Format: 40
Payload:
 <https://[2001:DB8:0815::5e00:5314]:4555>;        # [1]
        rt=brski.rs;var="est-tls prm-jose cmp";
        pw="1 2",
 <https://[2001:DB8:0815::5e00:5314]:4555>;        # [2]
        rt=brski.jp;var="est-tls prm-jose cmp";
        pw="1 2",
 <coaps://[2001:DB8:0815::5e00:5314]:5684/b>;      # [3]
        rt=brski.rs;var=,
        pw="1 2",
 <coaps://[2001:DB8:0815::5e00:5314]:5684/b>;      # [4]
        rt=brski.jp;var=,
        pw="1 2",
 <coaps+jpy://[2001:DB8:0815::5e00:5314]:6534/b>;  # [5]
        rt=brski.rjpy;var=,
        pw="1 2"
]]></artwork></figure>

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

<t>Example [1] is the equivalent announcement for a BRSKI registrar service as
shown for DNS-SD in <xref target="dnssd-example-1"/> except for the absence of any
service instance. Note the use of "var=" to indicate the list of variation
strings supported and "pw=" to indicate priority and weight as in DNS-SD.</t>

<t>[3] is likewise the comparable example for the cBRSKI registrar example with
DNS-SD. Note that here, a non-empty path-abempty "/b" is used to indicate a
shortened endpoint prefix path for the service. There is no equivalent
in DNS-SD defined. When discovering a service via DNS-SD, the service
will need to use the (longer) pre-defined endpoint prefixes, such as
"/brski" and "/est" instead of "/b".</t>

<t>Example [2] is the same socket as [1], but announced as a Join Proxy
socket for pledges. Likewise, [4] is the same socket as [2] announced
as a Join Proxy socket for pledges. Finally, [5] announces the registrars
socket in support of stateless Join Proxies using the JPY header encapsulation.</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 encodes BRSKI services in CORE-LF also as
a resource types, 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 - instead of a service - describe details of
as little as a single endpoint, such as its URL prefix and format encoding.
The reason why this fine-grained specification is not a good replacement
for the concept of service and variation is that the availability of a set
of endpoints with specific encodings does not imply whether the target does
support the desired specific sequencing of instantiating those endpoints,
including 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 benefit.</t>

<t>BRSKI resource types which are not treated as services according to 
this specification 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:
 <https://[2001:DB8:0815::5e00:5314]:4555/b>;      # [1]
        rt=brski.rs;var="est-tls prm-jose cmp";
        pw="1 2",
 <https://[2001:DB8:0815::5e00:5314]:4555/b/rv>;   # [2]
        rt=brski.rs.requestvoucher,                           
 <https://[2001:DB8:0815::5e00:5314]:4555/b/vs>;   # [3]
        rt=brski.rs.voucher_status,                           
 </b/rv>;rt=brski.rs.rv,                           # [4]
 </b/vs>;rt=brski.rs.vs,                           # [5]
]]></artwork></figure>

<t>[1] shows how the prefix for all BRSKI endpoints over "https://"
can be shortened from "/.well-known/brski" to "/b". Nevertheless,
this would still make it necessary to use "/b/requestvoucher"
and "/b/voucher_status" as endpoints.</t>

<t>[2] and [3] show how to shorten those two endpoints to
"/b/rv" and "/b/rs" by creating resource types "brski.rs.rv"
and "brski.rs.vs". By using resource type prefix "brski.rs."
for both of them as well as 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 such as
shown in example [4] and [5] when assuming that the
abbreviations "rv" and "vs" are also known even by BRSKI
implementations from <xref target="cBRSKI"/>. Likewise,
the full socket details can be avoided when one can infer it
from context.</t>

<t>While these shortenings can be highly useful in often called
resources, each endpoint in BRSKI is typically only  instantiated
once by a pledge, so the overall savings in communication data
because of these shortenings is likely negligible, and it is
better to define short endpoint paths into the variation
specification if they are likely needed, such as done in
<xref target="cBRSKI"/>, such that it is not
necessary in cBRSKI to add such shortenings in discovery.
For these reasons, this document does not specify if 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</bcp14> not duplicate the endpoint names of any resources specified
for BRSKI protocols. This means that "rv" or "vs" cannot be
used to create BRSKI service name resource types "brski.rv" or
"brski.rs", and likewise, additional BRSKI endpoints cannot
be called "rs", "jp", "jpy" or any other string registered in the
BRSKI discovery registry tables.</t>

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

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

<t>This document updates <xref target="BRSKI-AE"/>, section 5.1 with the following
text which is to be read as if appended to the end of that section.</t>

<t>Instead of using the minimalist "brski-reg-cmp" specified in <xref target="BRSKI-AE"/>,
this document RECOMMENDS for new implementations of BRSKI with CMP and
DNS-SD discovery to use the signaling elements specified in this document
with the following benefits.</t>

<t>For DNS-SD, the equivalent for "brski-reg-cmp" is "brski-registrar"
(see {#subreg-service-names}) with the TXT string "cmp"
(see <xref target="subreg-variations"/>). This automatically allows the use of Join Proxies
supporting this specification. They will use "brski-proxy" with TXT
key "var" value of "cmp" to indicate their support for also transparently proxying for a
CMP supporting registrar. Note that this 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 TXT key "var" value "cmp" and UDP
can be used to support CMP with stateless Join Proxies supporting
this specification and the registrations in {#subreg-service-names}
allow Registrars / Proxies for BRSKI and cBRSKI with CMP to also be discovered
with GRASP and CORE-LF Discovery Mechanisms.</t>

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

</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>With the procedures specified in this document, Registrar Agents can discover
Registrars supporting PRM by discovering Registrars that announce a variation
which includes "prm". Because <xref target="BRSKI-PRM"/> specifies the
use of JOSE for voucher encoding, the correct Variation String to discover is
"prm-jose", as also registered in <xref target="subreg-variations"/>. Discovery can use
DNS-SD, CORE-LF or GRASP using the encodings specified in this document and
registered in <xref target="subreg-variations"/> for the Variation String and 
<xref target="subreg-service-names"/> for the Service Name.</t>

<t>Registrar Agents <bcp14>MAY</bcp14> use Join Proxies supporting the procedures of this
document to reach Registrars supporting PRM and using the procedures of this
document. This may be of interest if the network available in the location
where the Registrar Agent is operating to access the Pledge is not fully
trusted but Join Proxies are used to only allow connections to Registrars.</t>

<t>This document updates <xref target="BRSKI-PRM"/> section 6.1.2 with the
procedures specified in <xref target="brski-pledge"/>. Those procedures are meant to be
fully backward compatible with those specified in <xref target="BRSKI-PRM"/>,
but adds more details and suggestions for encoding of signaling elements.</t>

</section>
<section anchor="updates-to-rfc6690"><name>Updates to RFC6690</name>

<t>This document adds the text of <xref target="adtl"/> to <xref target="CORE-LF"/>. It recommends to IANA to document that
addition as indicated in <xref target="rtreg"/>.</t>

<section anchor="adtl"><name>Additional Resource Type requirements for "brski"</name>

<t>The following text is to be read as if inserted into <xref target="CORE-LF"/> section 7.4 after the second paragraph.</t>

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

<t>Resource Type values with the "brski" prefix <bcp14>SHOULD</bcp14> support BRSKI discovery as specified in ([ThisRFC]).
The specification of such a Resource Type <bcp14>SHOULD</bcp14> not 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 how the Resource Type is to be included into the "BRSKI Context Registry Table"
<xref target="contexts"/>. Review of these requirements is to be coordinated between Designated Experts for
the Core parameters (core-parameters@ietf.org) and those for the BRSKI Discovery Parameters Registry 
(<xref target="reg-discovery"/>).</t>

</section>
</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 prefix "brski" into 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 suggested 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" according to above <xref target="fig-attrs"/> to
the "Target Attributes" table.</t>

<t>The "var" target attribute is meant to be used for BRSKI targets as specified in
this document. It is also meant to be usable for other targets if so desired - to
indicate variations of the resource type of the target. For targets with a non-BRSKI
resource target (not using "rt=brski.*"), the format of the value may be different
than specified for BRSKI.</t>

<t>The "pw" target attribute indicates priority and weight for the selection of
the resource target with the semantic and format defined in <xref target="RFC2782"/> for priority
and weight in DNS SRV resource records. If the attribute pw is absent, then
it is assumed to mean 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"
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 for 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, brski-registrar and brski-registrar-rjp for "tcp" and "udp"
protocols are 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
 "GeneRic Autonomic Signaling Protocol (GRASP) Parameters Registry" page,
"GRASP Objective Names Registry".</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 webpage (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.  Due to the requirement of an IANA registry with sub-registries,
one table has to be chosen to represent the overall registry. The table
used to represent the BRSKI Discovery Parameters is the list of discovery
mechanisms supported.</t>

<t>The Registration Procedure for this registry is Specification Required, where Expert Review has to ensure compliance
of entries 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 done by adding such specification to the Reference(s) column.</t>

<t>Any incremental changes to a discovery mechanism procedures require the same or higher level 
of specification as the first one introducing the discovery mechanism. Changes to the procedures
for DNS-SD, GRASP, CORE-LF do hence require an IETF standards track specification for updates.</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>&#160;</c>
      <c>GRASP</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>CORE-LF</c>
      <c>ThisRFC</c>
      <c>&#160;</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 Expert Review has to ensure feasibility
of entries with 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 independent, 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 BRSKI, 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 registering and
hence discovering different protocol stacks for otherwise logically the same type of services, or
else a BRSKI pledge might be discovering 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 Variation Types,
once registered, <bcp14>SHOULD</bcp14> not be changed or deleted so that new Variation Strings will be constructed
consistently with old ones. Only new Variation Types may be appended through registration updates.</t>

<t>Registration of additional Variation Types <bcp14>MUST</bcp14> include a specification of how they map
to specific function of the services that use them as this specification does for BRSKI, 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 a 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>BRSKI</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>cBRSKI</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>BRSKI-PLEDGE</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>&#160;</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 Expert Review has to ensure feasibility
of entries with the following behavior/rules.</t>

<t>Each entry registers a Service Name intended for 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 are required to be known by the discovery mechanism.</t>

<t>Because they may be used in the future in protocol encodings, Variation Type Choices
<bcp14>SHOULD</bcp14> be as simple as possible. They <bcp14>SHOULD</bcp14> consist only of the letters a-z and the digits 0-9,
<bcp14>SHOULD</bcp14> start with a letter and be at most 12 characters long.</t>

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

<t>o For DNS-SD, the tables Service Name 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>o 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>o For CORE-LF, the Service Name is the 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.</t>

<t>Context is a grouping of one or more services with the same set of Variation Types and Values 
as defined below (<xref target="subreg-contexts"/>). Re-use of the same Service Name across multiple
Contexts requires distinction of the services through Parameter(s) that are used as
additional distinguishers (beside 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"/>
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>The initial registry table adds to the registrations from other BRSKI RFCs new registrations
to discover BRSKI Registrar and Join Proxy via CORE-LF. These do not require new registrations in
the CORE registry because those registrations do not distinguish on the transport stack, and hence the
prior CORE registrations for cBRSKI are equally applicable to BRSKI.  In addition, the registrations
to discover cBRSKI stateful and stateless Registrars and Join Proxies via GRASP and DNS-SD are included.
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, both BRSKI and cBRSKI services can use DNS-SD, GRASP or CORE-LF for discovery.</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.jp</c>
      <c>BRSKI</c>
      <c>CORE-LF</c>
      <c>https</c>
      <c>THIS-RFC</c>
      <c>Proxy</c>
      <c>brski.rs</c>
      <c>BRSKI</c>
      <c>CORE-LF</c>
      <c>https</c>
      <c>THIS-RFC</c>
      <c>Registrar (stateful)</c>
      <c>brski-proxy</c>
      <c>BRSKI</c>
      <c>DNS-SD</c>
      <c>tcp</c>
      <c>RFC8995</c>
      <c>Proxy</c>
      <c>brski-registrar</c>
      <c>BRSKI</c>
      <c>DNS-SD</c>
      <c>tcp</c>
      <c>RFC8995</c>
      <c>Registrar (stateful)</c>
      <c>AN_Proxy</c>
      <c>BRSKI</c>
      <c>GRASP</c>
      <c>IPPROTO_TCP</c>
      <c>RFC8995</c>
      <c>Proxy</c>
      <c>AN_join_registrar</c>
      <c>BRSKI</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</c>
      <c>I-D.ietf-anima-constrained-voucher</c>
      <c>Proxy</c>
      <c>brski.rs</c>
      <c>cBRSKI</c>
      <c>CORE-LF</c>
      <c>coaps</c>
      <c>I-D.ietf-anima-constrained-join-proxy</c>
      <c>Registrar (stateful)</c>
      <c>brski.rjp</c>
      <c>cBRSKI</c>
      <c>CORE-LF</c>
      <c>coaps</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>Proxy (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 Expert Review has to ensure feasibility
of entries with 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, permitting future encodings that do not necessarily
have to use the Variation String representation (as registered in <xref target="subreg-variations"/>), and also allowing
to recognize erroneous variation representations easier.</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, then the choice that
is backward compatible has to become the Default choice for that new Variation Type.</t>

<t>The "Rsvd" flag indicates a choice that has not sufficiently been 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 parenthesis 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>BRSKI</c>
      <c>(RFC8995),ThisRFC</c>
      <c>Registrar Responder Mode</c>
      <c>&#160;</c>
      <c>prm</c>
      <c>mode</c>
      <c>BRSKI</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>BRSKI</c>
      <c>(RFC8368,RFC8995),ThisRFC</c>
      <c>CMS-signed JSON Voucher</c>
      <c>&#160;</c>
      <c>jose</c>
      <c>vformat</c>
      <c>BRSKI</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>BRSKI</c>
      <c>ThisRFC</c>
      <c>CBOR with COSE signature</c>
      <c>Dflt</c>
      <c>est</c>
      <c>enroll</c>
      <c>BRSKI</c>
      <c>(RFC7030,RFC8995),ThisRFC</c>
      <c>Enrollment over Secure Transport</c>
      <c>&#160;</c>
      <c>cmp</c>
      <c>enroll</c>
      <c>BRSKI</c>
      <c>(RFC9733,RFC9483),ThisRFC</c>
      <c>Lightweight CMP Profile / BRSKI-AE</c>
      <c>Rsvd</c>
      <c>scep</c>
      <c>enroll</c>
      <c>BRSKI</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>(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 Expert Review has to ensure feasibility
of entries with 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 they 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 for erroneous registration).</t>

<t>The primary Variation String <bcp14>SHOULD</bcp14> be derived by concatenating the Variation Type 
Values listed, concatenated 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 not meeting that construction scheme <bcp14>SHOULD</bcp14> receive a note explaining why.</t>

<t>When later potentially new Variation Types are introduced into the Variation Type Choices table, 
then they will not lead to a change in the Variation String(s), instead it is understood
that the Variation will represent the default Variation Type Values for any such additional
Variation Types.</t>

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

<t>The subregistries specified below 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) The Variation String "est-tls" is equivalent to the Variation String "" and
is required and only permitted for the AN_join_registrar objective value in GRASP
for backward compatibility with <xref target="BRSKI"/>, where it is used for this variation. Note that AN_proxy uses "".</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>"" / "est-tls"</c>
      <c>BRSKI</c>
      <c>rrm cmsj est</c>
      <c>RFC8995</c>
      <c>See Note (1)</c>
      <c>cmp</c>
      <c>BRSKI</c>
      <c>rrm cmsj cmp</c>
      <c>RFC9733</c>
      <c>&#160;</c>
      <c>prm-jose</c>
      <c>BRSKI</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>prm-jose</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 support for Endpoint URIs is implied by the mechanisms specified in this document and the existing registry has these cosmetic issues.</t>

<t><list style="numbers">
  <t>IANA is asked to change the name of the first column of the table from "URI" to "URI Suffix". This is in alignment with other table columns with the same syntax/semantic, such as "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>In <xref target="BRSKI-PRM"/>, pledges are more easily subject to DoS attacks than in <xref target="BRSKI"/>, because attackers
can be initiators and delay or prohibit 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 discover 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 mDNS and/or DNS RR/services
level to prohibit such data collection if there is a risk, and this 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 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"/> with some security extension is used:
Pledges need to signal their IDevID for their SRP TLS connection, and the SRP server
needs to have the same manufacturer Service Instance Name schema and manufacturer
trust anchor information as BRSKI registrars and can then allow only the permissible
service instance name DNS-SD RRs for this pledge. In fact, the SRP server could
create all the necessary <xref target="brski-pledge"/> required DNS-SD RRs from the IDevID
information even if the pledge itself is not requesting them or is requesting other
DNS-SD RRs. Definition of these procedures is outside the scope of this specification
though.</t>

<t>None of the discovery mechanisms (DNS-SD, GRASP or CORE-LF) are necessarily secure. Instead,
it is a matter of their deployment, how trustworthy service announcements are. 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 are typically assumed to be trustworthy and with them their
service parameters. In those deployments, the security question is then primarily the
attack vectors to impair such a responder to make it behave in undesirable ways.</t>

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

<t>Many thanks for reviews by Arthur Hecker, Steffen Fries and discussions/feedbacks by Brian Carpenter, Michael Richardson, Michael Kovatsch and Stuart Cheshire.  Special thanks to Amanda Barber for her IANA section review.</t>

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

<t>[RFC Editor: please remove this section.]</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='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="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="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="8" month="June" 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-20"/>
   
</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="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="RFC8368">
  <front>
    <title>Using an Autonomic Control Plane for Stable Connectivity of Network Operations, Administration, and Maintenance (OAM)</title>
    <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
    <author fullname="M. Behringer" initials="M." surname="Behringer"/>
    <date month="May" year="2018"/>
    <abstract>
      <t>Operations, Administration, and Maintenance (OAM), as per BCP 161, for data networks is often subject to the problem of circular dependencies when relying on connectivity provided by the network to be managed for the OAM purposes.</t>
      <t>Provisioning while bringing up devices and networks tends to be more difficult to automate than service provisioning later on. Changes in core network functions impacting reachability cannot be automated because of ongoing connectivity requirements for the OAM equipment itself, and widely used OAM protocols are not secure enough to be carried across the network without security concerns.</t>
      <t>This document describes how to integrate OAM processes with an autonomic control plane in order to provide stable and secure connectivity for those OAM processes. This connectivity is not subject to the aforementioned circular dependencies.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8368"/>
  <seriesInfo name="DOI" value="10.17487/RFC8368"/>
</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="I-D.ietf-bess-evpn-fast-df-recovery">
   <front>
      <title>Fast Recovery for EVPN Designated Forwarder Election</title>
      <author fullname="Patrice Brissette" initials="P." surname="Brissette">
         <organization>Cisco</organization>
      </author>
      <author fullname="Ali Sajassi" initials="A." surname="Sajassi">
         <organization>Cisco</organization>
      </author>
      <author fullname="Luc André Burdet" initials="L. A." surname="Burdet">
         <organization>Cisco</organization>
      </author>
      <author fullname="John Drake" initials="J." surname="Drake">
         <organization>Independent</organization>
      </author>
      <author fullname="Jorge Rabadan" initials="J." surname="Rabadan">
         <organization>Nokia</organization>
      </author>
      <date day="20" month="November" year="2024"/>
      <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 Designated
   Forwarder election to avoid unnecessary DF status changes upon a
   failure.  This document improves these procedures by providing a fast
   Designated Forwarder 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.

   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="Internet-Draft" value="draft-ietf-bess-evpn-fast-df-recovery-12"/>
   
</reference>

<reference anchor="RFC5988">
  <front>
    <title>Web Linking</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="October" year="2010"/>
    <abstract>
      <t>This document specifies relation types for Web links, and defines a registry for them. It also defines the use of such links in HTTP headers with the Link header field. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5988"/>
  <seriesInfo name="DOI" value="10.17487/RFC5988"/>
</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="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="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="7" month="July" year="2025"/>
      <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-08"/>
   
</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>


<?line 2643?>


    <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:
H4sIAJlcO2oAA9y9/XLkxpUv+H8+BW4pYkXOrar+brU4tu9QzZbFmf4akrJn
wnY4UFUgC+oqoBZAkeJ0aJ9ln2WfbM93ngRQlOSx70asI2w3SSCReTLzfJ/f
mc1mYVmvyurmJNt317NXIXRltylOsi+/ubj8t/NsVbbL+rZo7rO8WmW3eVPm
XVlX7ZchXyya4vYko+dm9lxY1csq38IIqya/7mZlAcPmVbnNZ4um/VTGJ2dP
noW2g2H/mm/qCl7omn0Ryl1D/2q7p48ff/34aWj3i23ZtvDRq/sdPHX+5urb
kDdFfpJ92BUNT4dm9y6v8ptiW1RduIP1nL4/f3caPt3BK1VXNFXRzc5wSmG/
W+Vd0R6c4a7ZTrPmevny5deP6R9ff/XsWVjm3UnWdiugV9UWVbtvZca78iRk
WVcvgWj3BVCGflgVu259kr2An5b1dpcvu/jn9n7bFNet+0XddOlvgAxV3ZXX
ZbGCX1Y1PdU1ZRwm33frujkJs6ys4MWrefZm+aloOniQ6X9VF82maNv4+6bG
nS1WZVc38GPdAJW+3Xf7prgryuz7y1P4pW6r/Z4WsK+65v5EHim2ebmBxXfF
vyzb+XW+n68KncabeXZW/vDJJvGm/VTrb+h75/UVEnC/gZ1f3s+rTRywgGfn
K3j2X8q66z2EVIflL/Ydr1mWuK63eZv9EXe38RP9fdFs8+peP3pZ4rFos9Pf
u+nTu7M7evdfWn5iDnsFj+yb8iRbd92uPXn06O7ubu7+/Mi+ftkV19dFlX3b
lEX7K7/e8rvza3z3b/r6d0W1aspP2TdNvfy0zve/dgZrfn++0Pf/plm8K5fr
vNhkF/j/zaqtKz+N13AjVzn8ZremGz75n8+fZM+fZ6++epV9Dfd7EqezXTb/
E2/iv7RwlYsNzH4OU9djdTbPbuvq/6gW7e6fP6yLcruwE3aW35arkb8OF65H
W37JN6oo4EZ96Lp69l2+rmYXwAqzl7iGsoMFvNtXsDBa0gqZ4qsnXz37+stx
SstCVjifOcxnXtNUfhVZQ1XDcF15WyBPufj29dOvXj2Vfz77+tVL+eeLp68e
4z9ff7h4M3v77Qn+DrkV/Gp79v6Sf/7q5VP4GX6cXZ7pb57x+7AIev/3F6eX
H+lvr76mt09f24/P4Ufi7fqLF/qL2ekb+h2xRf3dx4t3cLlnZ/MxdooEk7F6
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
mkVHKXjz6kDhX53Cf1D7Ps0uLtSAfMOmkHodBhnBaOFr0NBN9UunecWMkx76
Fav8+QLOIZj3nz/73vEzGRVdgGvcI0rZjZ2wMGqgzaNc7wn2ebYhyUziFnKe
kBNZFihD4f+C/8CWZhnYCe/8Q7v9YgPCjMY3DnBCj9L/4BtPlBsfEtrz9Pmn
+jye5KxcoaFkXhw6Q/mJPJxl36B2cmJbkNl/PmS/VarPgaLT9Cj+Npt8PD87
wZzzzew38M/fZZfvT35z+f53EzfGP8O4u01euVXpHy7fwxh8zbL3opzAMPDL
j8LJzmXidJviizivD80NiJP/4mKSZO3PdJPMGXHZW/Bv+vf7d3O3zDga2F5C
lOzjHvRezDL5QB09+C7AF2zDdPCUmFNKyd+cZI9fPXkxlcWeZH98e/bx9dMn
T746/frr+Lln88HMua2nztzRG8dDcvuR/CImcdjnNqz5Fc0tccSXhmN9MXo7
p+jdsX73n9UrmXSLi2lCbkBNmLMQgw1B+qNhdA9cBchp2I2DiTqrW3IR8LuJ
V3b+12654/ll2fl7nJnta0qeP/+5T6A//1lJBP8CIs0PjewPFJzTC25YcfUf
V56Eo4wv/CNmgv+BpV5e/CF7kj3525frR/yHzBApNJmk1CNurx1eyDTeO6wL
KyYwOfG3zm8wGfrw9Sp/dvLV1/nLk+uXRXHyGP5zcvL4Kfwv/fPlc/pX/iTO
+YW79HLLmZV6E2nAqXmt39IvKf67Fo8kHvsT9DxWbbu2Ry9ZOT15gKOO3fDJ
NPLBAXN+jew0vssC5/NJ9sWYvMu6stsUv/1SlyprxGPuAuZf/qRYIJw2PNIo
j8SqUWxXklCbDr13YQBPRiHelvPHST+akw+NAWDJs8mxgV76JX315wVodvRk
fkzkIqe/eE9oVzANFB2lYqiScZ9bHRHp08lSa07VQLBUGG6BDL4VfDmUUjhv
kBSnXIutjHCnAoNaWkrOn6nzMXWApsgLlWx+t8ye1OnPyjPyp7JaMkzqweNd
gWZOSU5USXR9l6idJLdwFqazyHDytC5LJDOds+zPLPbxLTxyk0z7dyZSHR4D
pQBHmySHGej2jFJkNnX9CRTfnXd5HFZcaOm0C3GuVJ8BHyB3KnEVKvjqCkbR
9Tw7Xjf2LVgVh1Idx7FYR6SgwPHSwUdq05gfpkoDnA6tM3UsMA2LgWBPjLjs
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
NwIA

-->

</rfc>

