<?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-05" category="std" consensus="true" submissionType="IETF" 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="2024"/>

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

    <abstract>


<?line 107?>

<t>This document specifies how BRSKI entities, such as registrars, proxies, pledges or others
that are acting as responders, can be discovered and selected by BRSKI entities acting as initiators,
especially in the face of variations in the protocols that can introduce non-interoperability
when not equally supported by both responder and initiator.</t>



    </abstract>



  </front>

  <middle>


<?line 114?>

<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 terms are described partly in addition.</t>

<dl>
  <dt>Context:</dt>
  <dd>
    <t>See Variation Context.</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 initiators IP or IPv6 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 responders IP or IPv6 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 the context of this document, a type of 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 to specify variations for any roles. See also Variation Context.</t>
  </dd>
  <dt>Socket:</dt>
  <dd>
    <t>The combination of am  IP or IPv6 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 one one variation choice each for every variation type applicable to the variation 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 once choice for "vformat".</t>
  </dd>
  <dt>Variation Context:</dt>
  <dd>
    <t>A set of Services for whom the same set of variations applies</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 defined 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 does defines the choices "rrm" and "prm" for the BRSKI variation "mode".</t>
  </dd>
  <dt anchor="ACP">ACP:</dt>
  <dd>
    <t>"An Autonomic Control Plane", <xref target="RFC8994"/>.</t>
  </dd>
  <dt anchor="BRSKI">BRSKI:</dt>
  <dd>
    <t>"Bootstrapping Remote Secure Key Infrastructure", <xref target="RFC8995"/>.</t>
  </dd>
  <dt anchor="BRSKI-AE">BRSKI-AE:</dt>
  <dd>
    <t>"Alternative Enrollment Protocols in <xref target="BRSKI"/>", <xref target="I-D.ietf-anima-brski-ae"/>.</t>
  </dd>
  <dt anchor="BRSKI-PRM">BRSKI-PRM:</dt>
  <dd>
    <t>"<xref target="BRSKI"/> with Pledge in Responder Mode", <xref target="I-D.ietf-anima-brski-prm"/>.</t>
  </dd>
  <dt anchor="cBRSKI">cBRSKI:</dt>
  <dd>
    <t>"Constrained Bootstrapping Remote Secure Key Infrastructure (<xref target="BRSKI"/>)", <xref target="I-D.ietf-anima-constrained-voucher"/>.</t>
  </dd>
  <dt anchor="COAP">COAP:</dt>
  <dd>
    <t>"The Constrained Application Protocol (CoAP)", <xref target="RFC7252"/>.</t>
  </dd>
  <dt anchor="CORE-LF">CORE-LF:</dt>
  <dd>
    <t>"Constrained RESTful Environments (CoRE) Link Format", <xref target="RFC6690"/>.</t>
  </dd>
  <dt anchor="cPROXY">cPROXY:</dt>
  <dd>
    <t>"Constrained Join Proxy for Bootstrapping Protocols", <xref target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
  </dd>
  <dt anchor="DNS-SD">DNS-SD:</dt>
  <dd>
    <t>"DNS-Based Service Discovery", <xref target="RFC6763"/>.</t>
  </dd>
  <dt anchor="EST">EST:</dt>
  <dd>
    <t>"Enrollment over Secure Transport", <xref target="RFC7030"/>.</t>
  </dd>
  <dt anchor="GRASP">GRASP:</dt>
  <dd>
    <t>"GeneRic Autonomic Signaling Protocol", <xref target="RFC8990"/>.</t>
  </dd>
  <dt anchor="GRASP-DNSSD">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 anchor="JWS-VOUCHER">JWS-VOUCHER:</dt>
  <dd>
    <t>"JWS signed Voucher Artifacts for Bootstrapping Protocols", <xref target="I-D.ietf-anima-jws-voucher"/>.</t>
  </dd>
  <dt anchor="lwCMP">lwCMP:</dt>
  <dd>
    <t>"Lightweight Certificate Management Protocol (CMP) Profile", <xref target="I-D.ietf-lamps-lightweight-cmp-profile"/>.</t>
  </dd>
  <dt anchor="mDNS">mDNS:</dt>
  <dd>
    <t>"multicast DNS", <xref target="RFC6762"/>.</t>
  </dd>
  <dt anchor="SCEP">SCEP:</dt>
  <dd>
    <t>"Simple Certificate Enrolment Protocol", <xref target="RFC8894"/>.</t>
  </dd>
</dl>

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

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

<t>BRSKI is a protocol with several current variations of aspects of the protocol.
These variations exist to best serve different use-cases, product development
and solution deployment preferences. Additional/new use-case preferences may prefer
even further variations. All these current and future variations introduce challenges
with interoperability, that the mechanisms defined in this document intent to help sove. These challenges are as follows.</t>

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

<t>When an initiator such as a BRSKI proxy or BRSKI pledge uses a mechanism such as
<xref target="DNS-SD"/> to discover an instance of a role it intends to connect to, such
as a registrar, it may discover more than one such instance.</t>

<t>When an initiator uses a discovery mechanism such as <xref target="DNS-SD"/> to discover an instance of
the BRSKI role that it intends to connect to, it may discover more than one such instance.
FOr example, BRSKI pledges want to discover BRSKI 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 an
interoperable/best responder, the service announcement 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 make 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. Indepedent 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-brski-proxies"><name>Variation agnostic support for BRSKI proxies</name>

<t>BRSKI proxies can be agnostic to variations of BRSKI because those variations only impact
the payload of messages carried across TCP or UDP connections; but not the proxying of those
TCP or UDP connections by the proxy. Nevertheless, if a pledge requires a specific BRSKI
variation from a registrar, then this variation needs to be passed on by the proxy so that
the pledge can connect via the proxy in such a way that the proxy connects to a registrar
supporting the desired variation. This proxying for variations needs to be defined such
that proxies do not require software or configuration updates when new variations are
introduced. Likewise, this variation agnostic proxying should also work across any
supported discovery mechanism.</t>

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

<t>This document specifies a set of IANA registry tables for BRSKI. These tables allow to define
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 makes support for variations across different discovery
mechanisms easier and consistent.</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 BRSKI proxies to discover variations of registrars
using any discovery mechanism, annnounce them to pledges - and connect a pledge accordingly
to the right registrar based on the variation required by the pledge.  These procedures allow
to introduce 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 specific
a specific BRSKI role - and determining whether that responders 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"><name>Roles</name>

<t>In BRSKI, a connection initiator needs to discover the transport parameters of a feasible 
connection responder: IP/IPv6 address, IP transport protocol (such as primarily UDP or TCP) and the IP transport protocol port.
This is also called a responder socket.</t>

<t>This document calls the type of responder the "BRSKI role" or "BRSKI service". BRSKI roles
for which this document defines variation discovery are registrar, proxy and pledge. Discovery for
other BRSKI roles such as MASA or other future roles can be added through the registry tables introduced by this document.</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 signalling element. <xref target="DNS-SD"/> calls this signalling element the Service Name. Due to
the absence of another equally widely used term for this type of signalling element across arbitrary
discovery mechanisms, this document also refers to the role signaling element as the service name,
 independent of the discovery mechanism.  IP/IPv6 Address, IP transport protocol and IP transport
protocol port are not part of the Service name and signalled across discovery mechanisms 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 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 the registration for
every variation as a separate Service Name in a "flat" name space; and register them once 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 BRKSI proxies would need to be configured
to also proxy this new variation - because new Service Names for the same BRSKI role can
be auto discovered by proxies (without additional protocol mechanisms that would be more
complex than the variations approach). Most BRSKI 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 supports 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"). Todays 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". "cms", "cose" or "jose" for the variation type "vformat".
"est", "cmp" or "scep" for the variation type "enroll".</t>

<t>"scep" is an example for 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>A variation is encoded as a string concatenating a single variation type choice for every
(necessary) variation type. For example "rrm-cms-est" could be describing the protocol options
used by a RFC8995 BRSKI connection pledge to registrar - potentially through a proxy. This string
representation of a variation is called the variation string and it is consistently
used for signalling across any discovery mechanisms.</t>

<t>When in the future, 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-cms-est" imply the use of "coaps", whereas the use
of QUIC would have to be indicated explicitly via "rrm-cms-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 tail added to the registry table.</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 list 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>"BRSKI" is the context covering <xref target="RFC8995"/> connections pledge to proxy or registrar and proxy to registrar
connections using TCP.</t>

<t>"cBRSKI" (constrained BRSKI) is the context covering <xref target="I-D.ietf-anima-constrained-voucher"/> 
connections pledge to proxy or registrar and proxy to registrar connections using UDP.</t>

<t>"BRSKI-PLEDGE" is the context covering pledges using <xref target="I-D.ietf-anima-brski-prm"/> for connections
from agents. It can equally cover in the future through variations the discovery of 
<xref target="RFC8995"/> 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>This document does also not introduce variation contexts for discovery of other BRSKI roles, such as discovery
of pledges by agents (as defined in <xref target="BRSKI-PRM"/>), or 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 specification.</t>

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

<t>This document defines three IANA registry tables to register and document the parameters
required for BRSKI discovery in an extensible fashion. The following sections explain
these registry tables. The registry tables themselves are listed in the IANA considerations
section, see <xref target="registry"/>.</t>

<section anchor="variation-contexts-registry-table"><name>Variation Contexts Registry Table</name>

<t>The IANA "BRSKI Variations Contexts" registry table, see <xref target="fig-contexts"/>, as defined by this document, 
defines which Service Names and signaling parameters (e.g.: UDP vs. TCP) in each supported
discovery mechanism are used to discover which role for different BRSKI protocol 
options.</t>

<t>In addition, the table specifies for each context the applicable variation types because these may
differ by context (they do not differ yet with the registrations specified in this document though).</t>

<t>The order in which variation types are specified in this table defines the order in which variation
type values are concatenated to form variation strings.</t>

</section>
<section anchor="variation-type-and-choices-registry-table"><name>Variation Type and Choices Registry Table</name>

<t>The IANA "BRSKI Variations and Variation Strings" registry table, see <xref target="fig-choices"/>, as defined by this document,
defines for each context and variation type the defined choices of that variation type and whether 
a particular choice is a default choice, in which case it does not need to be included in the variation
strings for the context.</t>

<t>This registry also registers the authoritative documentation defining the specific choices.
These specifications may differ for the same choice across different contexts, such as
for "est" between BRSKI and cBRSKI.</t>

<t>The "Context" column lists the BRSKI Variation Context(s) to which this line applies. If it is empty, then the same
Context(s) apply as that of the last prior line with a non-empty Context column.</t>

<t>The "Variation Type" column lists the BRSKI Variation Type to which this line applies. If it is empty, then the
same Variation Type applies as that of the last prior line with a non-empty Variation Type column.</t>

<t>The "Variation Type Choice" column defines a Variation Type Choice for the current context.
All Variation Types and Variation Type Choices <bcp14>MUST</bcp14> be unique strings across all Variation Types
so that variation strings are non-ambiguous.</t>

<t>Variation Types and Variation Type Choices and <bcp14>MUST</bcp14> be strings from lowercase letters a-z and digits 0-9 and <bcp14>MUST</bcp14> start with a letter.
The maximum length of a Variation Type Choice is 12 characters.</t>

<t>The "Reference" column specifies the primary documents which defines the Variation Type Choice use in
the rows context. Further references go into the Note(s) column.</t>

<t>The "Dflt" Flag specifies a Variation Type Choice that is assumed to be the default Choice for the Context,
such as "rrm" for the BRSKI context. Such a Variation Type Choice is assumed to be supported by
responders in discovery if discovery is performed without support of variations. This applies of course
only to responders which support such discovery.</t>

<t>For example, <xref target="BRSKI"/> specifies the empty string "" as the objective-value in <xref target="GRASP"/>
discovery. Because "rrm", "est" and "cms" are default in the BRSKI context, discovery
without indication of a variation can support exactly only this variation of "rrm" with
"est" and "cms" in the BRSKI context.</t>

<t>The "Dflt<em>" Flag specifies a Variation Type Choice that is only default in a subset of Discovery options in a
context. The Note(s) column has then to explain which subset this is. Like for "Dflt", the signaling in
this subset of Discovery options can then forego indication of the "Dflt</em>" Variation Type Choice.</t>

<t>The "Rsvd" Flag specifies a Variation Type Choice for which no complete specification exist on how to use it
within BRSKI (or more specifically the context), but which is assumed to be of potential implementation interest.
"Rsvd" Variation Type Choices <bcp14>MUST NOT</bcp14> be considered for the  Discoverable Variations table. They are documented
primarily to reserve the Variation Type Choice string.</t>

</section>
<section anchor="variation"><name>Variations and Variation String Registry Table</name>

<t>The IANA "BRSKI Variations and Variation Strings" registry table, see <xref target="fig-variations"/>, as defined by this document,
defines for every necessary context in the "Variation" column the variations which are known to be desired by implementations
as a space separated sequence of variation type values, and as a "-" concatenated variation string in the "Variation String" column.
The space separated sequence does not take defaults into account, the variation string does.</t>

<t>Variation strings may include additional "one-off" variation strings in support of
backward compatibility when the standard scheme does not work.</t>

<t>The "Context" column lists the BRSKI Variation Context(s) to which a line applies. If it is empty, then the same
Context(s) apply as that of the last prior line with a non-empty Context column.</t>

<t>The "Reference" column lists the document(s) that specify the variation, if that variation is
explicitly described. If the variation is not described explicitly, but rather a combination of
Variation Type Choices from more than one BRSKI related specification, then this has to
be explained in the "Explanation / Notes" column.</t>

</section>
</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 allows to make 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 IPv4 or IPv6 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 IPv4 to IPv6 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="I-D.ietf-anima-constrained-join-proxy"/> 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 proxy implementation or configuration when following
the procedures described in this dcoument. 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>
<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 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 pledges and proxies,
the relevant responders proxies and registrars. Nevertheless, the rules can equally apply
to other BRSKI connections if and when discoverable, redundant services are desired and
added to the registries created by this document. For example discovery of MASA by registrars.</t>

<t>Note that this specification does not mandate support for specific discovery methods in BRSKI
implementations, because this is specific do the target deployment scenarios - hence the
option to support different discovery methods.</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> support 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 inititor.</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 responders preference across the variations it
supports. Within the set of 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 reproducable 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 responder.</t>

<t>Initiators <bcp14>SHOULD</bcp14> support to 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>Support for the so far described resilient selection of responders <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 (IP and/or IPv6). If more responders
are discovered for the preferred variation(s) of the initiator, then it <bcp14>SHOULD</bcp14> pick
a random subset of those responder announcements to select from.</t>

<t>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 redundany 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/unresponsible
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 did 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 announcemements
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
descripton from <xref target="responder-selection"/>.  Note that the randomn 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 proxy <bcp14>SHOULD</bcp14> skip this responder in further
connection attempts for other connecting pledges.</t>

<t>Stateless proxies can not learn unresponsiveness or unreachability of a responder
through connection attempts. Instead, they <bcp14>SHOULD</bcp14> perform a stateless responsivness/reachability
check for each responder that the 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>Using newly discovered responders in stateless proxies must be done carefully.
Consider the common case that service annuncements for a primary responder
did stop due to network issue, the proxy starts to send packets to a secondary
responder, and then the primary responder becomes reachable and the proxy sees
service announcements for it. If the 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 proxy.</t>

<t>Replacing to use a selected responder in a stateless proxy with a better one
<bcp14>SHOULD</bcp14> hence only be done if no packets have been exchanged between pleges
and the current selected responder through the 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>Load balancing 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 to support 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 announcement. These recommendations <bcp14>SHOULD</bcp14> be superceeded 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
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 proxy <bcp14>SHOULD</bcp14> support to pass 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 proxy
or configured on the proxy. If a proxy supports this requirements, this is
called support for "arbitrary variations". Supporting this requirement requires
the 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 to deploy proxies once and add
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>Direction Connections Mode</name>

<t>In one proxy implementation option called "direct connections", the proxy creates for every discovered registrar
socket a separate proxy-responder socket. It announces this socket with the same set of parameters
as it did learn from the registrars service announcement, except for the appropriate proxy service name
and socket parameters (IP/IPv6 address, port number). When a pledge connects to that socket, the
proxy passes traffic for that pledges 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 proxy operating
in this approach, these proxies <bcp14>SHOULD</bcp14> limit the number of registrar sockets it maps 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 proxy creates a separate socket
for a set of all registrar sockets that it discovers and that announce support for the same set
of variations. It then connects pledges to the best available registrar socket from that set.</t>

<t>It 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 proxy-responder socket as in the
case of a direct connection.</t>

<t>When performing best registrar selection, the proxy has to perform selection of the best availalable
responder as described in <xref target="responder-selection"/>.</t>

<t>In addition, stateful proxies implementing best registrar selection <bcp14>SHOULD</bcp14>
optimize selection of registrar for each 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 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>

<t>Stateless proxies can not learn unresponsiveness or unreachability of a responder
through connection attempts. Instead, they <bcp14>SHOULD</bcp14> perform a stateless responsivness/reachability
check for each responder that the 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>Using newly discovered responders in stateless proxies supporting best registrar selection must be done carefully.
Consider the common case that service annuncements for a primary responder
did stop due to network issues, now the proxy starts to send packets to a secondary
responder, and then the primary responder becomes reachable and the proxy sees
service announcements for it. If the 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 proxy. Direct connection mode does
not incur this problem, because the pledge can select another proxy-responder socket
when it discovers the first one to be unresponsive or erroneous.</t>

<t>Replacing to use a selected responder in a stateless proxy with a better one
<bcp14>SHOULD</bcp14> hence only be done if no packets have been exchanged between pleges
and the current selected responder through the 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>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="proxy-in-name-only-mode-on-registrars"><name>Proxy in Name Only Mode on Registrars</name>

<t>Registrars that implement support for connections from stateful proxies
and/or from pledges may minimize their 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 proxy for connections from pledges.
No additional sockets or other 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. Nevertheless, they do need to do this via
a separate socket and hence need to announce the two sockets separately:
UDP for connections pledges with the 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 name only mode", because such an implementation
can not discover, select and fail over between different registrars.
Such proxies in name only therefore do not share requirements
against 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 proxy as well as 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 where choosen
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 and 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
proxy code together is easiest to implement.</t>

<t>Even on registrars, proxy in 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 proxy is then
still the only proxy available to some candidate pledges, then this proxy
needs to be able to connect to an alternative registrar, which would
not be possible if it was a a proxy in name only.</t>

<t>Likewise, proxy in 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 name only mode becomes a necessary 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, 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 proxy.</t>

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

<t>BRSKI 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 BRSKI proxy can be configured with
pairs of service names other than those used by BRSKI/cBRSKI: A service name to
discover, and a service name to use for the 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 cade 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 intermittant, and hence one or more
local registrar in each such site is higly 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 announcments 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 inventorizing 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="I-D.ietf-dnssd-srp"/>.</t>

<t>DNS-SD WG Question TBD: Is there sufficient auto-configuration support in <xref target="I-D.ietf-dnssd-srp"/>, that pledges without any
configuration can use it, and if so, do we need to raise specific additional requirements to enable this
in pledges ?</t>

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

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

<t>Pledges <bcp14>SHOULD</bcp14> support to be discoverable via DNS-SD browsing, so that registrar-agents can find
unexpected pledges or can easier enumerate expected pleges, 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 aquire 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 vis DNS-SD browsing, the "brski-registrar" 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-registrar" 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="I-D.ietf-dnssd-srp"/>. This does not affect operations for the service instance name.</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 manufacturer 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 randomn numbering. This would happen
especially if the IDevID from both devices (of different product type), had the same serial
number, and the CA of both was the same, 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>In 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 CA.</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 to disambiguate devices from different manufacturer using the
same serialNumber scheme, and hence 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 manufacturers 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[
Pledge IDevID certificate information:
  ; Format as shown by e.g.: openssh
  Subject: serialNumber = "PID:Model-0815 SN:WLDPC2117A99",
    O = example.com, CN = Model-0815

Manufacturer published LDevID identification schema:
 Brand: Example: O = example.com, serialNumber = "PID:<PID> SN:<SN>"
 SN = Serial Number, PID = Product Identifier

Manufacturer published DNS-SD Instance Schema (options):
 <X520SerialNumer>.example.com

DNS-SD Instance:
  "PID:Model-0815 SN:WLDPC2117A99.example.com"

DNS-SD RR for the pledge (using mDNS, hand hence .local):
  ; PTR RR to support browsing / discovery of service instance name
  _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
]]></artwork></figure>

<t>"Pledge IDevID certificate information" shows the relevant parts of
an IDevID.  As defined in <xref target="BRSKI"/>, the serial number of the pledge is 
the value of the X520SerialNumber field, shown as the value after
"serialNumber =" in openssh. BRSKI components perform cryptographic
authentication of the IDevID and determine the manufacturer from the
trust anchor (root CA) of the certificate (chain) that has signed
the IDevID. Normally, the serialNumber is unique within
the scope of the root-CA certificate used by the manufacturer.</t>

<t>In this normal case, a BRSKI component only needs to be configured
with a list of root CA certificates that the BRSKI component trusts to provide
pledges with IDevIDs and configure a manufacturer-name for each. 
The identity of a pledge after successful IDevID authentication is then
(manufacturer-name, serialNumber).</t>

<t>Unique identification may be more complex though. A 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 numerica serialNumber formats
and hence could collide.  None of these complexities are desirable for new designs,
but they may be necessary to support BRSKI for existing products, their
IDevID and signing chains.</t>

<t>Typically, an owner will not know the IDevID of a pledge before being able to
connect to it. Instead, it needs to match the certificate content with
identification information from on-device or on-packaging labels and/or backend information
such as sales receipts. The owner needs to be able to convert
this identification information into the relevant fields such as X520SerialNumber
to then match those fields against the fields found in the LDevID - of course after
the cryptographic authentication of the LDevIDs signature by the manufacturers
root CA certificate.</t>

<t>In the example, the manufacturer identifies pledges of the brand "Example"
in sales receipts with information like "Model: Model-0815, Serial Number:  WLDPC2117A99".
The "Manufacturer published LDevID identification schema" is then the example
information needed by BRSKI components of the owner to be able to convert such
backend identification information the fields to be match in the LDevID. In this
case not only the serialNumber, but also the Organization field to identify the
brand - just in case the manufacturer re-uses the same root CA across multiple
brands with not necessarily unique serial numbers across brands.</t>

<t>Understanding the identification via the IDevID is important to understand
the security of the instance string used by a manufacturer. In this example,
the manufacturer owns the DNS domain name "example.com". It uses
and publishes the DNS-SD instance scheme "&lt;X520SerialNumer&gt;.example.com",
in other words: the instance string is a concatenation of the X250 serial number of the
pledge and ".example.com".  Note that owning the domain name "example.com" is not a
requirement for this approach to work, but instead it merely allows the owner
to be more confident that there will be no serialNumber clash with other
manufacturers pledges.</t>

<t>A BRSKI component discovering such a pledge by its service instance name
can then determine the root CA of the pledge from it's IDevID and then
match/authenticate the instance string from the instance schema.</t>

<t>Authorizing a pledge in a registrar or other beckend management system
interacting with the registrar will likely require to match the relevant
fields of the LDevID with some non-cryptographic identification of the pledge,
such as from a sales receipt or label/code on the device itself or its packaging.</t>

<t>In the example, such identification could be written out for example
as "Product: Model-0815, Serial Number: WLDPC2117A99". For validation
of the IDevID, any such information needs to be converted into the
values of the field (or fields of the certificate). The second example</t>

<t>Finally in the example, the same string that is used as the instance string
is also used as the host name and hence appears in the SRV and
AAAA RR. This host name  could be any other choice, but re-using the instance string
also allows to avoid DNS name conflicts across at least all pledges using this
choice - as it does for the instance string.</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 root CA 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 root CA 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;X520SerialNumer&gt;.DNS-name&gt;", authenticating instance
names of the format "&lt;X520SerialNumer&gt;.idevid.example.com&gt;".</t>

<t>Obtaining a WebPKI signature for their root CA for these wildcard domain
names from a WebPKI trust anchor is the added effort for manufacturer 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="signaling"><name>Signaling</name>

<t>The following definitions apply to any instantiation of DNS-SD including DNS-SD via mDNS as defined in
<xref target="DNS-SD"/>, but also via unicast DNS, for example by registering the necessary DNS-SD Resource Records (RR) 
via <xref target="I-D.ietf-dnssd-srp"/> (SRP).</t>

<t>Because of the different options of how to run DNS-SD, the requirements in this document do not guarantee
interoperability when using DNS-SD. One side could use unicast DNS-SD, the other mDNS, and there may be
no mapping between the two. Therefore the recommendations in this document need to be amended
with deployment specific specifications / requirements as to which signaling variation, such as mDNS
or unicast DNS with SRP is to be supported between initiator and responder. When using unicast DNS
(with SRP), additional mechanisms are required to learn the IP / IPv6 address(es) of feasible DNS and
SRP servers, and deployment may also need agreements for the (default) domain they want to use in
unicast DNS. Hence, a mandatory to implement (MTI) profile is not feasible because of the wide range
of variations to deploy DNS-SD.</t>

<t>In the absence of overriding deployment profile requirements, implementations are
<bcp14>RECOMMENDED</bcp14> to support mDNS and <bcp14>MAY</bcp14> support <xref target="I-D.ietf-dnssd-srp"/> and fall back to mDNS
if <xref target="I-D.ietf-dnssd-srp"/> fails to work, e.g.: it fails to discover SRP server and/or default domain.</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 DNS-SD Keys with
a value of 1 in the DNS-SD service instances TXT RR using the shortened encoding of "key" instead of "key=1".
In result, the value of the TXT RR is a sequence of zero terminated strings, each one indicating a single supported
variation type choice.</t>

<t>A variation may have the option of being represented by the empty string "". This is not allowed
in the DNS-SD encoding, and instead the alternative variation string <bcp14>MUST</bcp14> always be used for DNS-SD.</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>

<t>The use of variation strings can easily break the DNS-SD rule that they keys should be no more than
9 characters long. This is justified by the absence of value fields to keep the total length of the
TXT RR reasonably short.</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 to discover, but in BRSKI 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 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/IPv6 addresses
used by the registrar and for the desired DNS method (mDNS = .local, unicast DNS = default domain),
then the registar <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 useable 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 unnecessary 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 understand 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 where assigned uniquely. This is for example not necessarily the
case for IoT equipment or registrars running in a virtual context in the cloud. IP/IPv6 addresses
can be assumed to be unique (enough) when they have globals 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/IPv6 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 this limitation, but it <bcp14>SHOULD</bcp14> be useful to pick the same host name requirements
based encoding format for both type of DNS RR nams when using encoded addresses in them. For example
by replacing ":" as commonly used with "-".</t>

<t>If the responder needs to indicate different sockets for different (set of) variations, for example,
when operating as a 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 example 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 BRSKI/cBRSKI variations" anchor="dnssd-example-1"><artwork><![CDATA[
# BRSKI
_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  "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  "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 BRSKI 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 variations "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 at the time of this specification, this exact interoperability aspects of such a combination
have at the time of writing of this spec not been investigated 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 for a 
host name registered in DNS or DNS-SD, so it is using it's 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
BRSKI and cBRSKI, because they are distinguished bt the "_tcp" versus "_udp" component of the service
instance name.</t>

<figure title="DNS-SD for a BRSKI registrar applications" anchor="dnssd-example-2"><artwork><![CDATA[
# BRSKI 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 "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 "rrm-cose"

# BRSKI-PRM 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 "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="I-D.ietf-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 BRSKI, one from an integrator supporting pledges
from various "IoT" vendors that usecBRSKI, 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 useable, 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 appening
some string  abbreviation indicating its mode of operation ("brski", "cbrski", "prm"),
and it's 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-1"><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="RFC8994"/> specifies one such "security and transport substrate", which is zero-touch deployable.
It is mandatory to support for initiators and responders implementing the so-called
"Autonomic Network Infrastructure" (ANI). 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 term
in <xref target="variation"/>, 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 are
supported across the same socket. 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_Proxy", 4, 1, "",
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_TCP, 4443],
     ["AN_Proxy", 4, 1, "prm",
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_TCP, 4443],
     ["AN_Proxy", 4, 1, "",
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_UDP, 4684]]
]
]]></artwork></figure>

<t><xref target="grasp-example-1"/> is an example for a GRASP service announcement for "AN_Proxy" in support of BRSKI
with both "rrm" and "prm" supported on the same TCP port 4443 and for cBRSKI with
COAP over DTLS on UDP port 4684.</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 with two different processes" anchor="grasp-example-2"><artwork><![CDATA[
[M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
    [["AN_Proxy", 4, 1, "",
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_TCP, 4443],
     ["AN_Proxy", 4, 1, "",
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_UDP, 4684]]
]

[M_FLOOD, 42310815, h'fe800000000000000000000000000001', 180000,
    [["AN_Proxy", 4, 1, "prm",
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_TCP, 44000]]
]
]]></artwork></figure>

<t>In <xref target="grasp-example-2"/>, A separate application process supports "prm" and hence
uses a separate socket, with example TCP port 44000. In this case, there is
no need nor significant benefit to merge all service instance announcements into
a single GRASP message. Instead, the BRSKI-"rrm"/cBRSKI process would be
able to generate and send its own, first, message shown in the example, and the
second process would send its own, second message in the example.</t>

<t>For a more extensive, DNS-SD compatible encoding of the objective-value that also
support 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
stand alone 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 summaery, 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 proxy, the resource/service that the pledge needs to discover
is nevertheless called "(brski) join proxy (for pleges)", 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 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 assumeption 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="RFC6690"/> link format, and <xref target="RFC3986"/>, Section 3.2, the
authority attribute can not include a port number unless it also includes the IP address.</t>

<figure title="CORE-LF discovery of registrars that support stateless JPY protocll 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 was is specified in <xref target="I-D.ietf-anima-constrained-voucher"/>
and <xref target="I-D.ietf-anima-constrained-join-proxy"/>, except for noted exceptions, where the requirements
are narrowed. This document does not specifiy how to discover
It 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 IPv4 or IPv6 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="I-D.ietf-anima-constrained-voucher"/>
and <xref target="I-D.ietf-anima-constrained-join-proxy"/> 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 Variation Contexts" registry table <xref target="fig-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="I-D.ietf-anima-constrained-voucher"/>
and <xref target="I-D.ietf-anima-constrained-join-proxy"/>. This document does not specifiy 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 contatenated
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.*

01234567890123456789012345678901234567890123456789012345678901234567890123456789
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 registar 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 BRSKI 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 avilability 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="I-D.ietf-anima-constrained-voucher"/>. 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
becauseof 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="I-D.ietf-anima-constrained-voucher"/>, such that it is not
necessary in cBRKSI to add such shortenings in discovery.
For these reasons, this document does not specify if or how
to use such resource targets in cunjunction with BRSKI discovery
but only discusses possibilities and limitations here.</t>

<t>Considerations for such non-service resource type use in BRSKI
nevertheless introduces 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" can not be
used to create BRSKI service name resource types "brski.rv" or
"brski.rs", and likewise, Additional BRSKI endpoints can not
be called "rs", "jp", "jpy" or any other string registered in the
BRSKI discover registry tables.</t>

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

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

<section anchor="resource-type-link-target-attribute-values"><name>Resource Type Link Target Attribute Values</name>

<t>IANA is asked to reserve all resource type values starting with "brski."
in the "Resource Type (rt=) Link Target Attribute Values" table. Resources
with this prefix are meant to be required for discovery
of BRSKI services and resources (see <xref target="brski-resources"/>) and hence <bcp14>SHOULD</bcp14>
be listed in the BRSKI Variation Contexts registry table for use with CORE-LF,
if they indicate a service, or be specified in a BRSKI specification if
they are resources but not services.</t>

</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 an 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 useable 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="registry"><name>BRSKI Discovery Parameters Registry (section)</name>

<t>This document requests a new section named "BRSKI Variations Discovery Parameters"
in the "Bootstrapping Remote Secure Key Infrastructures (BRSKI) Parameters"
registry (https://www.iana.org/assignments/brski-parameters/brski-parameters.xhtml).
Its initial content is as follows.</t>

<t>[ RFC editor. Please remove the following sentence.
Note to IANA: This section contains three tables according to the specifications of this document.
Each of these tables should include the table title so that they can be more easily
distinguished.  If it is not possible to introduce more than one table per section, then we will modify the request
accordingly for three sections, but given how the three tables are tightly linked, that would be unfortunate. ]</t>

<t>Registration Procedure(s):
  Standards action or expert review based on registration.  See ThisRFC.</t>

<t>Experts:
  TBD.</t>

<t>Reference:
  ThisRFC.</t>

<t>Notes:</t>

<dl>
  <dt>Dflt flag:</dt>
  <dd>
    <t>Indicates a Variation Type Choice that is assumed to be used if the service discover/selection mechanism does not indicate any variation.</t>
  </dd>
  <dt>Rsvd Flag:</dt>
  <dd>
    <t>Indicates a Variation Type Choice that is reserved for use with the mechanism described in the Note(s) column, but for which no specification yet exists.</t>
  </dd>
  <dt>Spec / Applicability:</dt>
  <dd>
    <t>A "-" indicates that the variation is considered to be feasible through existing specifications, but not explicitly mentioned in them.
An "NA" indicates that the combination is assumed to be not working with the currently available specifications.</t>
  </dd>
</dl>

<section anchor="brski-variation-context-registry-table"><name>BRSKI Variation Context Registry Table</name>

<texttable title="BRSKI Variation Contexts" anchor="fig-contexts">
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Applicable Variation Types</ttcol>
      <ttcol align='left'>Discovery Mechanism</ttcol>
      <ttcol align='left'>Service Name(s) / Transport</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <c>BRSKI</c>
      <c>mode<br />vformat<br />enroll</c>
      <c>GRASP</c>
      <c>"AN_join_registrar" /<br /> "AN_Proxy"<br />with IPPROTO_TCP</c>
      <c><xref target="RFC8995"/></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>DNS-SD</c>
      <c>"brski-registrar" /<br /> "brski-proxy"<br /> with TCP</c>
      <c><xref target="RFC8995"/></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>CORE-LF</c>
      <c>"rt=brski.jp" /<br /> "rt=brski.rs" with https</c>
      <c>[THIS-RFC\</c>
      <c>cBRSKI</c>
      <c>mode<br />vformat<br />enroll</c>
      <c>CORE-LF</c>
      <c>rt=brski.jp with coaps</c>
      <c><xref target="I-D.ietf-anima-constrained-voucher"/></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>rt=brski.rs /<br /> rt=brski.rjpy with coaps</c>
      <c><xref target="I-D.ietf-anima-constrained-join-proxy"/></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>DNS-SD</c>
      <c>"brski-proxy"<br /> /<br /> "brski-registrar" /<br /> "brski-registrar-rpy" with UDP</c>
      <c>[THIS-RFC]</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>GRASP</c>
      <c>"AN_join_registrar" /<br /> "AN_join_registrar_rjp" /<br /> "AN_Proxy"<br /> with IPPROTO_UDP</c>
      <c>[THIS-RFC]</c>
      <c>BRSKI-PLEDGE</c>
      <c>mode<br />vformat<br />enroll</c>
      <c>DNS-SD</c>
      <c>"brski-pledge" with TCP</c>
      <c>[THIS-RFC]</c>
</texttable>

</section>
<section anchor="brski-variation-type-and-choices-registry-table"><name>BRSKI Variation Type and Choices Registry Table</name>

<texttable title="BRSKI Variation Type and Choices" anchor="fig-choices">
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Variation Type</ttcol>
      <ttcol align='left'>Variation Type Choice</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <ttcol align='left'>Flags</ttcol>
      <ttcol align='left'>Note(s)</ttcol>
      <c>BRSKI, cBRSKI</c>
      <c>mode</c>
      <c>rrm</c>
      <c><xref target="RFC8995"/><br />ThisRFC</c>
      <c>Dflt</c>
      <c>Registrar Responder Mode <br /> the mode specified in <xref target="RFC8995"/></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>prm</c>
      <c>ThisRFC  <br /></c>
      <c>&#160;</c>
      <c>Pledge Responder Mode    <br /> <xref target="I-D.ietf-anima-brski-prm"/></c>
      <c>BRSKI</c>
      <c>vformat</c>
      <c>cms</c>
      <c><xref target="RFC8368"/><br />ThisRFC</c>
      <c>Dflt</c>
      <c>CMS-signed JSON Voucher  <br /></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>cose</c>
      <c>ThisRFC<br /></c>
      <c>&#160;</c>
      <c>CBOR with COSE signature<br /></c>
      <c>cBRSKI</c>
      <c>&#160;</c>
      <c>cose</c>
      <c>ThisRFC<br /></c>
      <c>Dflt</c>
      <c>CBOR with COSE signature <br /> <xref target="I-D.ietf-anima-constrained-voucher"/></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>cms</c>
      <c><xref target="RFC8368"/><br />ThisRFC</c>
      <c>&#160;</c>
      <c>CMS-signed JSON Voucher  <br /></c>
      <c>BRSKI, cBRSKI</c>
      <c>&#160;</c>
      <c>jose</c>
      <c>ThisRFC<br /></c>
      <c>Dflt*</c>
      <c>JOSE-signed JSON, Default when prm is used<br /> <xref target="I-D.ietf-anima-jws-voucher"/>, <xref target="I-D.ietf-anima-brski-ae"/></c>
      <c>BRSKI-PLEDGE</c>
      <c>mode</c>
      <c>prm</c>
      <c>ThisRFC</c>
      <c>Dflt</c>
      <c>Pledge responder Mode<br /><xref target="I-D.ietf-anima-brski-prm"/></c>
      <c>&#160;</c>
      <c>vformat</c>
      <c>jose</c>
      <c>ThisRFC</c>
      <c>Dflt</c>
      <c>JOSE-signed JSON, Default when prm is used<br /> <xref target="I-D.ietf-anima-jws-voucher"/>, <xref target="I-D.ietf-anima-brski-ae"/></c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>cms</c>
      <c>ThisRFC</c>
      <c>Rsvd</c>
      <c>CMS-signed JSON Voucher, not specified.</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>cose</c>
      <c>ThisRFC</c>
      <c>Rsvd</c>
      <c>CBOR with COSE signature, not specified.</c>
      <c>BRSKI, BRSKI-PLEDGE</c>
      <c>enroll</c>
      <c>est</c>
      <c><xref target="RFC8995"/><br /><xref target="RFC7030"/></c>
      <c>Dflt</c>
      <c>Enroll via EST           <br /> as specified in <xref target="RFC8995"/>, extension for <xref target="BRSKI-PRM"/> when used in context BRSKI-PLEDGE</c>
      <c>cBRSKI</c>
      <c>&#160;</c>
      <c>est</c>
      <c>ThisRFC</c>
      <c>Dflt</c>
      <c>Enroll via EST over COAP, <xref target="RFC9148"/></c>
      <c>BRSKI, BRSKI-PLEDGE</c>
      <c>&#160;</c>
      <c>cmp</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>Lightweight CMP Profile  <br /> <xref target="I-D.ietf-anima-brski-ae"/>, <xref target="I-D.ietf-lamps-lightweight-cmp-profile"/>.</c>
      <c>BRSKI</c>
      <c>&#160;</c>
      <c>scep</c>
      <c>ThisRFC</c>
      <c>Rsvd</c>
      <c><xref target="RFC8894"/></c>
</texttable>

</section>
<section anchor="brski-variations-and-variation-strings"><name>BRSKI Variations and Variation Strings</name>

<texttable title="BRSKI Variation and Variation Strings" anchor="fig-variations">
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <ttcol align='left'>Variation String</ttcol>
      <ttcol align='left'>Variation</ttcol>
      <ttcol align='left'>Explanations / Notes</ttcol>
      <c>BRSKI</c>
      <c><xref target="RFC8995"/></c>
      <c>"" / "EST-TLS"</c>
      <c>rrm cms  est</c>
      <c>Note 1</c>
      <c>&#160;</c>
      <c><xref target="I-D.ietf-anima-brski-ae"/></c>
      <c>cmp</c>
      <c>rrm cms  cmp</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c><xref target="I-D.ietf-anima-brski-prm"/></c>
      <c>prm-jose</c>
      <c>prm jose est</c>
      <c>&#160;</c>
      <c>BRSKI-PLEDGE</c>
      <c><xref target="I-D.ietf-anima-brski-prm"/></c>
      <c>"" / "prm-jose"</c>
      <c>prm jose est</c>
      <c>&#160;</c>
      <c>cBRSKI</c>
      <c><xref target="I-D.ietf-anima-constrained-voucher"/></c>
      <c>"" / "rrm-cose"</c>
      <c>rrm cose est</c>
      <c>&#160;</c>
</texttable>

<dl>
  <dt>Note 1:</dt>
  <dd>
    <t>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 RFC8995, where it is used for this variation. Note that AN_proxy uses "".</t>
  </dd>
</dl>

</section>
</section>
<section anchor="service-names-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>brski-proxy and brski-registrar are to be added as Service Names for the "udp" protocol using ThisRFC 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 as their reference.</t>

<t>The Defined TXT keys column for brski-proxy and brski-registrar for both "tcp" and "udp" protocols are to state the following text:</t>

<t>See ThisRFC and the "BRSKI Variation Type Choices" table in the "Bootstrapping Remote Secure Key Infrastructures (BRSKI) Parameters" registry.</t>

<t>TBD: This request likely does not include all the necessary formatting.</t>

</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 <xref target="RFC8995"/> to <xref section="8.3.1" sectionFormat="comma" target="RFC8995"/>.</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 easier 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-agents 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 does
also introduce a perpass attack, gathering intelligence against what type and serial number of
devices are 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 assiged 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="I-D.ietf-dnssd-srp"/> with some security extension is used:
Pledges need to signal their IDevID for their SRP TLS connection, and the SRV server
needs to have the same manufacturer Service Instance Name schema and manufacturer
root CA 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 the all 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>

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

<t>TBD.</t>

</section>
<section anchor="draft-considerations"><name>Draft considerations</name>

<section anchor="open-issues"><name>Open Issues</name>

<t>Questions to the DNS-SD community.</t>

<t>TBD</t>

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

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

<t>WG draft 05:</t>

<t>Mayor update to specifiy resilience aspects in selection of responders.</t>

<t>Mayor update/simpliciation 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="RFC6690">
  <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="RFC6762">
  <front>
    <title>Multicast DNS</title>
    <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
    <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
    <date month="February" year="2013"/>
    <abstract>
      <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
      <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
      <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6762"/>
  <seriesInfo name="DOI" value="10.17487/RFC6762"/>
</reference>

<reference anchor="RFC6763">
  <front>
    <title>DNS-Based Service Discovery</title>
    <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
    <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
    <date month="February" year="2013"/>
    <abstract>
      <t>This document specifies how DNS resource records are named and structured to facilitate service discovery. Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6763"/>
  <seriesInfo name="DOI" value="10.17487/RFC6763"/>
</reference>

<reference anchor="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="RFC8990">
  <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="RFC8994">
  <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="RFC8995">
  <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="I-D.ietf-anima-brski-ae">
   <front>
      <title>BRSKI-AE: Alternative Enrollment Protocols in BRSKI</title>
      <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
         <organization>Siemens AG</organization>
      </author>
      <author fullname="Steffen Fries" initials="S." surname="Fries">
         <organization>Siemens AG</organization>
      </author>
      <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
         <organization>Siemens AG</organization>
      </author>
      <date day="17" month="September" year="2024"/>
      <abstract>
	 <t>   This document defines enhancements to the Bootstrapping Remote Secure
   Key Infrastructure (BRSKI) protocol, known as BRSKI-AE (Alternative
   Enrollment).
   BRSKI-AE extends BRSKI to support certificate enrollment mechanisms
   instead of the originally specified use of EST.  It supports
   certificate enrollment protocols, such as 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="Internet-Draft" value="draft-ietf-anima-brski-ae-13"/>
   
</reference>


<reference anchor="I-D.ietf-anima-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="26" month="August" year="2024"/>
      <abstract>
	 <t>   This document defines enhancements to Bootstrapping a Remote Secure
   Key Infrastructure (BRSKI, RFC8995) to enable bootstrapping in
   domains featuring no or only limited connectivity between a pledge
   and the domain registrar.  It specifically changes the interaction
   model from a pledge-initiated mode, as used in BRSKI, to a pledge-
   responding mode, where the pledge is in server role.  For this, BRSKI
   with Pledge in Responder Mode (BRSKI-PRM) introduces new endpoints
   for the Domain Registrar and pledge, and a new component, the
   Registrar-Agent, which facilitates the communication between pledge
   and registrar during the bootstrapping phase.  To establish the trust
   relation between pledge and registrar, BRSKI-PRM relies on object
   security rather than transport security.  The approach defined here
   is agnostic to the enrollment protocol that connects the domain
   registrar to the Key Infrastructure (e.g., domain CA).

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


<reference anchor="I-D.ietf-anima-constrained-voucher">
   <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="July" year="2024"/>
      <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-25"/>
   
</reference>


<reference anchor="I-D.ietf-anima-constrained-join-proxy">
   <front>
      <title>Join Proxy for Bootstrapping of Constrained Network Elements</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>
      <date day="6" month="November" year="2023"/>
      <abstract>
	 <t>   This document extends the work of Bootstrapping Remote Secure Key
   Infrastructures (BRSKI) by replacing the Circuit-proxy between Pledge
   and Registrar by a stateless/stateful constrained Join Proxy.  The
   constrained Join Proxy is a mesh neighbor of the Pledge and can relay
   a DTLS session originating from a Pledge with only link-local
   addresses to a Registrar which is not a mesh neighbor of the Pledge.

   This document defines a protocol to securely assign a Pledge to a
   domain, represented by a Registrar, using an intermediary node
   between Pledge and Registrar.  This intermediary node is known as a
   &quot;constrained Join Proxy&quot;.  An enrolled Pledge can act as a
   constrained Join Proxy.

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


<reference anchor="I-D.ietf-anima-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="12" month="September" year="2024"/>
      <abstract>
	 <t>   I-D.ietf-anima-rfc8366bis defines a digital artifact called voucher
   as a YANG-defined JSON document that is signed using a Cryptographic
   Message Syntax (CMS) structure.  This document introduces a variant
   of the voucher artifact in which CMS is replaced by the JSON Object
   Signing and Encryption (JOSE) mechanism described in RFC7515 to
   support deployments in which JOSE is preferred over CMS.

   In addition to explaining how the format is created, 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-12"/>
   
</reference>

<reference anchor="RFC7030">
  <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="I-D.ietf-lamps-lightweight-cmp-profile">
   <front>
      <title>Lightweight Certificate Management Protocol (CMP) Profile</title>
      <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
         <organization>Siemens</organization>
      </author>
      <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
         <organization>Siemens</organization>
      </author>
      <author fullname="Steffen Fries" initials="S." surname="Fries">
         <organization>Siemens AG</organization>
      </author>
      <date day="17" month="February" 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="Internet-Draft" value="draft-ietf-lamps-lightweight-cmp-profile-21"/>
   
</reference>


<reference anchor="I-D.ietf-dnssd-srp">
   <front>
      <title>Service Registration Protocol for DNS-Based Service Discovery</title>
      <author fullname="Ted Lemon" initials="T." surname="Lemon">
         <organization>Apple Inc.</organization>
      </author>
      <author fullname="Stuart Cheshire" initials="S." surname="Cheshire">
         <organization>Apple Inc.</organization>
      </author>
      <date day="4" month="March" year="2024"/>
      <abstract>
	 <t>   The Service Registration Protocol for DNS-Based Service Discovery
   uses the standard DNS Update mechanism to enable DNS-Based Service
   Discovery using only unicast packets.  This makes it possible to
   deploy DNS Service Discovery 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="Internet-Draft" value="draft-ietf-dnssd-srp-25"/>
   
</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="15" month="October" 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-11"/>
   
</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="RFC7252">
  <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="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="2024"/>
      <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-07"/>
   
</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 1963?>

<section anchor="future"><name>Possible future variations</name>

<t>The following table <xref target="fig-future-variations"/> shows possible future entries for "Variation String" if
there is an interest for such a variation. Thesew would be subject to expert review and could
hence require appropriate additional specification so that interoperability based on that variation string
can be guaranteed.</t>

<texttable anchor="fig-future-variations">
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <ttcol align='left'>Variation String</ttcol>
      <ttcol align='left'>Variations</ttcol>
      <ttcol align='left'>Explanations / Notes</ttcol>
      <c>BRSKI</c>
      <c>-</c>
      <c>jose</c>
      <c>rrm jose est</c>
      <c>possible variation of <xref target="RFC8995"/> with voucher according to <xref target="I-D.ietf-anima-jws-voucher"/></c>
      <c>&#160;</c>
      <c>-</c>
      <c>jose-cmp</c>
      <c>rrm jose cmp</c>
      <c>possible variation of <xref target="RFC8995"/> with voucher according to <xref target="I-D.ietf-anima-jws-voucher"/> and enrollment according to <xref target="I-D.ietf-lamps-lightweight-cmp-profile"/></c>
      <c>&#160;</c>
      <c>-</c>
      <c>cose</c>
      <c>rrm cose est</c>
      <c>possible variation of <xref target="RFC8995"/> with voucher according to <xref target="I-D.ietf-anima-constrained-voucher"/></c>
      <c>&#160;</c>
      <c>-</c>
      <c>cose-cmp</c>
      <c>rrm cose cmp</c>
      <c>possible variation of <xref target="RFC8995"/> with voucher according to <xref target="I-D.ietf-anima-constrained-voucher"/> and enrollment according to <xref target="I-D.ietf-lamps-lightweight-cmp-profile"/></c>
      <c>&#160;</c>
      <c>-</c>
      <c>prm-cmp</c>
      <c>prm jose cmp</c>
      <c>possible variation of <xref target="I-D.ietf-anima-brski-prm"/> and <xref target="I-D.ietf-anima-brski-ae"/></c>
      <c>&#160;</c>
      <c>-</c>
      <c>prm-cose</c>
      <c>prm cose est</c>
      <c>possible variation of <xref target="I-D.ietf-anima-brski-prm"/> and <xref target="I-D.ietf-anima-constrained-voucher"/></c>
      <c>&#160;</c>
      <c>-</c>
      <c>prm-cose-cmp</c>
      <c>prm cose cmp</c>
      <c>possible variation of <xref target="I-D.ietf-anima-brski-prm"/>, <xref target="I-D.ietf-anima-constrained-voucher"/> and <xref target="I-D.ietf-anima-brski-ae"/></c>
</texttable>

</section>

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

  </back>

<!-- ##markdown-source:
H4sIAEW+FmcAA+y9+3LbVpY3+v9+CnxM1WlphqR8j63uzoxiOx3POLZGUjrT
1Z1KgSQkISYBDgFKYbv9Pct5lvNkZ9332gCo2OnMd+ZMTaqSUCSw73vd129N
JpMwrxdldXWcbdvLydMQ2rJdFsfZb748O//XV9mibOb1TbHZZXm1yG7yTZm3
ZV01vwn5bLYpbo4zem5iz4VFPa/yFbSw2OSX7aQsoNm8Klf5ZLZp3pXxycm9
x6Fpodkf8mVdwQvtZluEcr2hT0374N69Z/cehGY7W5VNA51e7Nbw1KuXF1+F
fFPkx9nbdbHh4dDovsmr/KpYFVUbbmE+J29efXMS3t3CK1VbbKqinbzAIYV5
3h5nTbuAmVdNUTXbRvpe5C108ODeg0dhXR6HLGvrOazEroDp0h+LYt1eH2eP
4a95vVrn8zb+3OxWm+KycV/Umzb9BuZW1W15WRYL+LKq6al2U8Zm8m17XW+O
wyQrK3jxYpq9nL8rNi08yIt6URebZdE08ftNjdtVLMq23sCf9Qam/tW23W6K
26LMvj0/gS91r+x7msC2aje7Y3mkWOXlEtahLf553kwv8+10UegwXk6zF+WP
72wQL5t3tX5D/b2qL3Att0vYzvluWi1jgwU8O13As/9c1m3nIdwAmP5s2/Kc
ZYrX9Spvsu9wyzZ+oH8oNqu82mmn5yXudZOd/MENn96d3NK7/9zwE1PYK3hk
uymPs+u2XTfHR0e3t7dT9/OR9X7eFpeXRZV9tSmL5hN7b/jd6SW++4t6/7qo
FpvyXfblpp6/u863nzqCa35/OtP3f9Eovinn13mxzM7w/5tFU1d+GM/hmi1y
+GZ9Tdd29I+P7mePHmVPP3+aPYNLO4rDWc03/4gE4J8buJ/FEkY/haHrsXox
zW7q6v+qZs36t2+vi3I1sxP2Ir8pFwO/9ieuR1u+5BtVFHCj3rZtPfk6v64m
Z0Dfsic4h7KFCXyzrWBiNKUFUrqn9z9/+Ow3wystE1ngeKYwnmlNQ/mkZQ1V
Dc215U2BNOXsq+cPPn/6QD4+fPb0iXx8/ODpPfn45Mkz+/j5kwfx40P5CAPW
B54+8x8fxY+P8eOryYtpjwTnxd6f1pvVwG94b9tNXlbFYnJTb+fXxeZnnvqx
LitorP5pN/Dgj7eNbwbnc++hTeLhk6fJO8t8tW4my/LqugXKBf+dzFdrbPuy
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

-->

</rfc>

