<?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-10" category="std" consensus="true" submissionType="IETF" updates="draft-ietf-anima-brski-prm, rfc6690, rfc9733" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="BRSKI-discovery">BRSKI discovery and variations</title>

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

    <date year="2026" month="March" day="18"/>

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

    <abstract>


<?line 108?>

<t>This document specifies how to make BRSKI communications autoconfiguring, extensible and resilient
in the face of simultaneous use of different variations of the BRSKI protocol (BRSKI, BRSKI-AE,
BRSKI-PRM, constrained BRSKI, stateless constrained BRSKI proxies). This document
specifies a data model, IANA registry and BRSKI component procedures to achieve this.</t>

<t>This document does not define any new discovery methods. Instead, its data model allows
signaling of all current (and future) variations of the BRSKI family of protocols consistently
via different existing network discovery mechanisms: DNS-SD, CoAP discovery (CORE-LF) and GRASP.
Additional/future discovery mechanisms can also be supported through the IANA registry.</t>

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

<t>Future-proof deployments of BRSKI require Join Proxies that automatically support any current and future
BRSKI variation. This document specifies the procedures by which Join Proxies can support this through
specific Join Proxy protocol behavior and the use of discovery mechanisms.</t>

<t>The specification of discovery of pledges by their IDevID as introduced by BRSKI-PRM is refined in this document.</t>



    </abstract>



  </front>

  <middle>


<?line 131?>

<section anchor="terminology"><name>Terminology</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>This document relies on the terminology defined in <xref target="BRSKI"/>.  The following additional terms are also used.</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</section>
</section>
<section anchor="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 eases support of variations across different discovery
mechanisms.</t>

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

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

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

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

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

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

<t>In this document, a service is a specific functionality provided by a responder over
a network socket using a particular transport/security/session stack (such as TCP, UDP, COAP, DTLS).</t>

<t>In this document, a role is functionality performed by a BRSKI entity either as an initiator or responder.
<xref target="BRSKI"/> defines the roles of pledge, Join Proxy, registrar, MASA. <xref target="BRSKI-PRM"/>
adds the role Registrar-Agent. Trust anchor is a dependent role required by BRSKI, provided
through <xref target="EST"/> or other protocols in <xref target="BRSKI-AE"/>.</t>

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

<t>In this document a service is functionality performed as a result of a network connection
from an initiator to a responder. The service is commonly named after the role name of the responder,
such as Join Proxy, registrar or MASA.</t>

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

<t>The role that a responder socket supports is indicated in each discovery mechanism through an
appropriate 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 Address, IP transport protocol and IP transport
protocol port are not part of the Service name and are signaled through discovery-mechanism-specific signaling elements.</t>

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

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

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

<t><list style="numbers">
  <t>Service Names in different discovery mechanisms are typically not hierarchical (e.g.: not
"role.variation"). Relying only on Service Names would thus require 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 BRSKI 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 Join Proxies should be able to operate without
configuration though.</t>
</list></t>

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

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

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

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

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

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

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

<t>The actual choices for each of these variation types are hence called "Variation Type Choices":
"prm" or "rrm" for the variation type "mode". "cmsj", "cose" or "jose" for the variation type "vformat".
"est", "cmp" or "scep" for the variation type "enroll".</t>

<t>"scep" is an example 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>The string name of a variation is as a string concatenating a single variation type choice for every
(necessary) variation type. For example "rrm-cmsj-est" could be describing the protocol options
used by a <xref target="BRSKI"/> connection pledge to registrar - potentially through a Join Proxy. This string
representation of a variation is called the variation string and it is consistently
used for 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-cmsj-est" imply the use of "coaps", whereas the use
of QUIC would have to be indicated explicitly via "rrm-cmsj-est-quic".</t>

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

<t>Just because a variation name is composed from variation type choices does not mean that
an unspecified variation of (random) variation type choices can work without new implementation
or specification. Or even make sense. This may be the case, or it may not. This is also the reason
why this document specifies a registry that explicitly enumerates all variations that are
known to have sufficient specification and will work.</t>

<t>For example, <xref target="BRSKI-PRM"/> is indicated through the variation type value "prm", but it may also requires
enhancements to the enrolment protocol used, which is specified in the variation type "enroll", such as
new endpoints in that protocol.  The required functional semantic implied by the "enroll" variation type
value in variations with "prm" is thus a different one than in variations not using "prm". And
<xref target="BRSKI-PRM"/> does not necessarily sufficiently specify these enhancements for enrollment protocols
that may not have been known or specified by the time <xref target="BRSKI-PRM"/> was written.</t>

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

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

<t>Different 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>"tBRSKI" is the context covering <xref target="BRSKI"/> connections (which are using TCP, hence the "t") from pledge to Join Proxy or registrar and from Join Proxy to registrar connections.</t>

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

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

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

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

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

<t>Variations as defined by this document only cover protocol options that proxies can
transparently support so that the definition of variations 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 IP or even another network layer protocol.</t>

<t>In "sane" services where a change in transport spec does not imply a change in signalled messages
and their semantics, gateways could transparently proxy from IP and vice versa or
even between TCP and some other IP transport protocols such as SCTP. However, this is out of
scope of this specification.</t>

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

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

<t>This sub-section re-states and summarizes the desired Data Model introduced before in its
instantiation of the IANA Registry (and sub-registries) requested by this document,
the so-called "BRSKI Discovery Parameters" registry (<xref target="reg-discovery"/>).</t>

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

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

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

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

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

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

<t>Grouping services allows to limit registrations/definitions in other registry tables to
these Contexts as opposed to repeating them for every service (Registrar, Stateless-Registrar, Proxy 
for example).</t>

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

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

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

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

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

<t>The "IANA Variation Type Choices", <xref target="subreg-choices"/> depends on the definition of Variation Types
from the Contexts sub-registry, <xref target="subreg-contexts"/> by defining the specified choices for each
Variation Type and registers the specification(s) where they are defined.</t>

<t>Registration of a Variation Type Choice is per Context, so that different Contexts can
have different specification (and hence procedures) for the same Variation Type. In
the initial registry content requested by this document, this is used to refer to the
separate specification for BRSKI variations and cBRSKI variations.</t>

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

<t>The IANA "Variations" sub-registry, <xref target="subreg-variations"/> registers the so-called "Variation String"
encoding of variations of BRSKI protocols services for each Context. This is ultimately the
encoding specified in this document to be used to signal across all Discovery Methods the
actual Variations supported by a Service Instance. This sub-registry depends on the definitions
of the prior registry tables, which is why it is last.</t>

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

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

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

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

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

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

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

<t>Note that while pledges are discoverable in the context of this documents technologies, this section
and its subsections do not apply to discovery of pledges because there is no redundancy involved,
and selection of pledges is also only by their ID and not by their supported variation.</t>

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

<t>If more than one responder is discovered by an initiator, then the initiator
<bcp14>SHOULD</bcp14> 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 initiator.</t>

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

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

<t>If a responder socket offers more than one variation supported by the initiator
its preference order is calculated from the most preferred variation supported by it.</t>

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

<t>Initiators <bcp14>SHOULD</bcp14> 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 (v4 and/or v6). If more responders
are discovered for the preferred variation(s) of the initiator, then it <bcp14>SHOULD</bcp14> pick
a random subset of those responder announcements to select from.</t>

<t>4 Responders for a specific variation are a typical minimum resilience setup in a larger
network setup, in which 2 responders serve as redundancy at the responder host level and
the other 2 responders provide redundancy against network connectivity failure to those
first two responders. Intra-DC and Inter-DC service redundancy is a simple example of such a setup.</t>

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

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

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

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

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

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

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

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

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

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

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

<t>Initiators including proxies <bcp14>SHOULD</bcp14> always pick the highest possible priority and weight
parameters possible in the discovery mechanism used that allows 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 superseded by better
recommendations for more narrowly scoped deployment scenarios.</t>

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

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

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

<t>A Join Proxy <bcp14>SHOULD</bcp14> support 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 Join Proxy
or configured on the Join Proxy. If a Join Proxy supports this requirements, this is
called support for "arbitrary variations". Supporting this requirement requires
the Join Proxy to discover registrar(s) and their supported variation(s) via one or more
of the discovery mechanisms included in the registry tables specified in this document.</t>

<t>Arbitrary variations support allows 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>Direct Connection Mode</name>

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

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

<t>To reduce the number of sockets that have to be announced by proxies when using direct connections
and to also reduce the number of responder sockets that need to be maintained by a Join Proxy operating
in this approach, these proxies <bcp14>SHOULD</bcp14> limit the number of registrar sockets they 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 Join Proxy creates a separate responder socket
for a set of all registrar sockets that it discovers and that announce support for the same set
of variations.</t>

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

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

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

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

<t>Replacing a selected responder in a stateless Join Proxy with a better one
<bcp14>SHOULD</bcp14> hence only be done if no packets have been exchanged between pledges
and the current selected responder through the Join Proxy for more than 300 seconds.
This long timeout specifically intends to not break connections in which the
registrar keeps the pledge waiting for an administrative response such as
an operator performing a policy validation for enrollment.</t>

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

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

<t>Registrars that implement support for connections from stateful proxies
and/or from pledges may minimize their Join Proxy implementation work by only implementing
the appropriate service name announcements for the same socket to support
connections from both:  announcements as a registrar for connections from
proxies and announcements as a Join Proxy for connections from pledges.
No additional sockets or other Join Proxy specific packet processing code
is required to support this.</t>

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

<t>Proxy functionality that is implemented as described here on registrars
is called "proxy in service name only mode", because such an implementation
cannot discover, select and fail over between different registrars.
Such proxies in name only therefore do not share requirements
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 Join Proxy as well as registrar) when it does not run,
fails or becomes unresponsive.</t>

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

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

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

<t>The list of possible modes presented is exemplary and not meant to be exhaustive.
Other modes are equally able to support the requirements, such as mixtures
of the described modes. Likewise, introduction of new variations may not
only work well via arbitrary variation support in proxies, but through
explicit configuration of variations on proxies - this all depends on
the target deployment environment. The presented modes were chosen
primarily as the ones providing most configuration free deployment options and
for registrar implementations most simplicity in implementation.</t>

<t>If a deployment has a larger number of service announcements and (extremely)
constrained pledges, direct connection mode may be inappropriate because it shifts
the burden of best available discovery and selection 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
Join Proxy code together is easiest to implement.</t>

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

<t>Likewise, proxy in service name only mode will disturb the introduction of new variations
on pledges and other registrars in the network if the registrar node implementing
proxy in service name only mode becomes a necessary Join Proxy for a pledge requiring a
variation not supported by this registrar, but by another registrar that
would only be reachable through this registrar node. Therefore, Join Proxy
in name only mode is best suited for node types not deployed on an edge
of the network where a future variety of pledges may connect to, and those
pledges will require the use of a Join Proxy.</t>

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

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

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

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

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

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

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

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

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

<t>BRSKI-PLEDGE is the context for discovery of pledges by nodes such as Registrar-Agents.
Pledges supporting <xref target="BRSKI-PRM"/> <bcp14>MUST</bcp14> support it. It may also be used by other variations of BRSKI
outside of the PRM use case, for example for 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="DNSSD-SRP"/>, using
automatic discovery of the SRP server and registering the below defined DNS-SD data with it.</t>

<t>These DNS-SD requirements are defaults. Specifications for specific deployment contexts such as specific
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 enumerate expected pledges more easily, especially in the presence of multiple
different subnets and use of mDNS. A pledge can also only be found by browsing if it is not
possible for the owner to acquire serial-number information of a pledge by the time BRSKI-PRM needs it
(to create a service instance name).</t>

<t>When pledges are discoverable via DNS-SD browsing, the "brski-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="DNSSD-SRP"/>. This does not affect operations for the service instance name.</t>

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

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

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

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

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

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

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

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

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

<t>As a result:</t>

<t><list style="symbols">
  <t>Vendors <bcp14>MUST</bcp14> document a scheme how their pledges form a service instance name from
information available to the customer of the pledge.</t>
  <t>These service instance names <bcp14>MUST</bcp14> be unique across all IDevID of the manufacturer that
share the same trust anchor.</t>
</list></t>

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

<t><list style="symbols">
  <t>Pledges <bcp14>SHOULD</bcp14> encode manufacturer unique product instance information in their
subject name serialNumber. <xref target="RFC5280"/> calls this the X520SerialNumber.</t>
  <t>Pledges <bcp14>SHOULD</bcp14> make this serialNumber information consistent with easily accessible
product instance information when in physical possession of the pledge, such as
product type code and serial number on bar-code/QR-code to enable <xref target="BRSKI-PRM"/> discovery
without additional backend sales integration. Note that discovery alone does not
allow for enrollment (so it does not introduce a security risk by itself)!</t>
  <t>Pledges <bcp14>SHOULD</bcp14> construct their service instance name by concatenating
their X520SerialNumber with a domain name that is used by the manufacturer
and thus allows 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 manufacturer's approach using the recommendations
from above.  <xref target="service-name-example"/> shows the different data involved in DNS-SD records
for a pledge from manufacturer "Example".</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<section anchor="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="DNSSD-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 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="DNSSD-SRP"/> and fall back to mDNS
if <xref target="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".
As a 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 discover, but in tBRSKI and cBRSKI
it is merely an artefact of DNS-SD encoding: Unlike typical user-centric DNS-SD use-cases, there are
no users that need to make sense of the meaning of the service instance name, for example to know,
which printer to pick. Only operators may need to look at them for troubleshooting.
The choice of instance name (the first component of a service instance name) is hence arbitrary. The same
is true for the host names used in the DNS-SD records for BRSKI.</t>

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

<t>If the host on which the registrar is running already has a DNS host name for the IP addresses
used by the registrar and for the desired DNS method (mDNS = .local, unicast DNS = default domain),
then the registrar <bcp14>SHOULD</bcp14> be able to use that host name as the target domain name in the SRV RR.
This requirement avoids the unnecessary addition of DNS A/AAAA RRs because of the registrar,
when 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 unnecessarily required to configure a host name
on a system that does not need one - and none is required to run a registrar.</t>

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

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

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

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

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

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

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

<t>These 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 tBRSKI/cBRSKI variations" anchor="dnssd-example-1"><artwork><![CDATA[
# tBRSKI context
_brski-registrar._tcp.local
               IN PTR  0000-5e00-5314._brski-registrar._tcp.local
0000-5e00-5314._brski-registrar._tcp.local
               IN SRV  1 2 4555 0000-5e00-5314.local
0000-5e00-5314._brski-registrar._tcp.local
               IN TXT  "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 tBRSKI with "rrm" and "prm" modes across the same TCP socket port 4555, with "est" and "cmp".
This leads to the three supported and IANA registry defined 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 its MAC-address as its target host name,
"0000-5e00-5314.local", the same name is used in the registrar service instance names.
Running on a router without modular software, the registrar knows that no other registrar
instances can run on the same host and hence the name has no further disambiguating elements.</t>

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

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

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

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

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

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

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

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

<section anchor="signaling-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="ACP"/> 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
in <xref target="subreg-variations"/>, and listed in the Variation String column of the <xref target="fig-variations"/> table.</t>

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

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

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

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

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

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

<t><xref target="grasp-example-1"/> is an example for a GRASP service announcement by a registrar in support of BRSKI
with both "rrm" and "prm" supported on the same TCP port 4443 and for cBRSKI (COAP over DTLS) on UDP
port 4684 in stateful mode and port 4686 for stateless mode . The first variation for "rrm" uses an objective-value of ""
for backward compatibility with <xref target="BRSKI"/> where it was introduced. With cBRSKI introducing definitions
for the use of GRASP only with this document, this special case is not proliferated, which is why "rrm" is
used in the cBRSKI announcements.</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t>In summary, CORE-LF including CORE-RD is a mechanism for registration and discovery of resources and
hence services which may be preferred in deployments over other options and can equally be applicable
to register/discover any variation of BRSKI for any type of BRSKI service.</t>

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

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

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

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

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

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

Example:

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

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

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

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

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

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

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

Example:

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

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

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

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

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

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

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

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

<t>URL-references <bcp14>SHOULD</bcp14> not use a domain name instead of an address to allow responders to
select a BRSKI responder without requiring DNS support. Likewise, port and scheme
<bcp14>MUST</bcp14> be included so that the information can be passed on to consumers without having to
modify it. When omitting this information, the full information can only be known in the
context of the connections scheme and port through which it was retrieved.</t>

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

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

<t>Discovery of registrar sockets  by stateful proxies uses the resource type "brski.rs".
This can be used in conjunction with any scheme: https:// for BRSKI and coaps:// for cBRSKI.
Stateless registrar sockets use the resource type "brski.rjpy". This currently only support
the coaps+jpy:// scheme. By its nature, it can only be used with schemes that rely on UDP.
These resource type uses are no change over <xref target="cBRSKI"/>
and <xref target="cPROXY"/>. This document does not specify how to discover
BRSKI-PLEDGE via CORE-LF.</t>

<t>The variations supported by a BRSKI responder socket are indicated via the optional "var="
link-extension. The value is a quoted-string of one or more space-concatenated
BRSKI variation strings. The absence of a "var=" link-extension indicates support for only
the default variation for the BRSKI context to which the BRSKI service belongs. This
can also be indicated as "var=".</t>

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

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

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

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

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

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

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

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

<t>Example [2] is the same socket as [1], but announced as a Join Proxy
socket for pledges. Likewise, [4] is the same socket as [2] announced
as a Join Proxy socket for pledges. Finally, [5] announces the registrars
socket in support of stateless Join Proxies using the JPY header encapsulation.</t>

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

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

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

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

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

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

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

<t>[2] and [3] show how to shorten those two endpoints to
"/b/rv" and "/b/rs" by creating resource types "brski.rs.rv"
and "brski.rs.vs". By using resource type prefix "brski.rs."
for both of them as well as path prefix "/b", it can be implied
that these endpoints are part of the service specified in [1],</t>

<t>These discovery options can be further compacted such as
shown in example [4] and [5] when assuming that the
abbreviations "rv" and "vs" are also known even by BRSKI
implementations from <xref target="cBRSKI"/>. Likewise,
the full socket details can be avoided when one can infer it
from context.</t>

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

<t>Considerations for such non-service resource type use in BRSKI
nevertheless 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" cannot 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="updates"><name>Updates</name>

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

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

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

<t>For DNS-SD, the equivalent for "brski-reg-cmp" is "brski-registrar"
(see {#subreg-service-names}) with the TXT string "cmp"
(see <xref target="subreg-variations"/>). This automatically allows to use Join Proxies
supporting this specification. They will use "brski-proxy" with TXT
string "cmp" to indicate their support to transparently proxy also for a
CMP supporting registrar. Note that this will allow to use CMP in
cBRSKI as both "brski-registrar" and "brski-proxy" are also registered
for use with UDP.</t>

<t>Likewise, "brski-registrar-rjp" with TXT string "cmp" and UDP
can be used to support CMP with stateless Join Proxies supporting
this specification and the registrations in {#subreg-service-names}
allow to discover Registrars / Proxies for BRSKI and cBRSKI with CMP 
also with GRASP and CORE-LF Discovery Mechanisms.</t>

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

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

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

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

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

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

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

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

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

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

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

<t>Resource Type values with the "brski" prefix <bcp14>SHOULD</bcp14> support BRSKI discovery as specified in ([ThisRFC]).
The specification of such a Resource Type <bcp14>SHOULD NOT</bcp14> prohibit or conflict with the ability to
combine variation type values as established by [ThisRFC]. The specification <bcp14>SHOULD</bcp14> include
or point to a definition how the Resource Type is to be included into the "BRSKI Context Registry Table"
<xref target="contexts"/>. Review of these requirements is to be coordinated between Designated Experts for
the Core parameters (core-parameters@ietf.org) and those for the BRSKI Discovery Parameters Registry 
(<xref target="reg-discovery"/>).</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<texttable title="Discovery Mechanisms initial registry table" anchor="fig-discovery-mechanisms">
      <ttcol align='left'>Discovery Mechanism</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>DNS-SD</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>GRASP</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>CORE-LF</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
</texttable>

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

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

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

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

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

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

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

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

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

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

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

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

<texttable title="Contexts initial sub-registry table" anchor="fig-subreg-contexts">
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Variation Types</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>BRSKI</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>cBRSKI</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
      <c>BRSKI-PLEDGE</c>
      <c>mode, vformat, enroll</c>
      <c>ThisRFC</c>
      <c>&#160;</c>
</texttable>

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

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

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

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

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

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

<t>o For DNS-SD, the tables Service Name is the DNS-SD Service Name which <bcp14>MUST</bcp14> also be registered in
  the IANA "Service Name and Transport Protocol Port Number Registry" for use with the DNS-SD
  protocol indicated in the Parameter(s) column.</t>

<t>o For GRASP, the Service Name is the GRASP Objective Name which <bcp14>MUST</bcp14> also be registered
  in the IANA "GeneRic Autonomic Signaling Protocol (GRASP) Parameters" /
  "GRASP Objective Names" registry.</t>

<t>o For CORE-LF, the Service Name is the CoRE Resource Type (rt=) value, which
  <bcp14>MUST</bcp14> be registered in the IANA "Constrained RESTful Environments (CoRE) Parameters" /
  "Resource Type (rt=) Link Target Attribute Values" registry.</t>

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

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

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

<t>The initial registry table adds to the registrations from other BRSKI RFCs new registrations
to discover BRSKI Registrar and Join Proxy via CORE-LF. These do not require new registrations in
the CORE registry because those registrations do not distinguish on the transport stack, and hence the
prior CORE registrations for cBRSKI are equally applicable to BRSKI.  In addition, the registrations
to discover cBRSKI stateful and stateless Registrars and Join Proxies via GRASP and DNS-SD are included.
The necessary additional registrations for these are included in <xref target="service-name-registry"/> for DNS-SD
and <xref target="grasp-registry"/> for GRASP.  With these registrations, both BRSKI and cBRSKI services can use DNS-SD, GRASP or CORE-LF for discovery.</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t>Any Variation String not meeting that construction scheme <bcp14>SHOULD</bcp14> receive a note explaining why.</t>

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

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

<t>The subregistries specified below register the permissible Context and Variation Type Values.</t>

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

<dl>
  <dt>Designated Experts:</dt>
  <dd>
    <t>TBD.</t>
  </dd>
  <dt>Registration Procedure:</dt>
  <dd>
    <t>Specification required.</t>
  </dd>
  <dt>Notes:</dt>
  <dd>
    <t>(1) The Variation String "EST-TLS" is equivalent to the Variation String "" and
is required and only permitted for the AN_join_registrar objective value in GRASP
for backward compatibility with <xref target="BRSKI"/>, where it is used for this variation. Note that AN_proxy uses "".</t>
  </dd>
</dl>

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

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

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

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

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

<t>In <xref target="BRSKI-PRM"/>, pledges are 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-Agent's connection to the pledge may not be possible. Discovery
of the pledge via DNS-SD increases the ability of attackers to discover pledges against which such
DoS attacks can be attempted.</t>

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

<t>Browsing via DNS-SD, especially via unicast DNS which makes information available network-wide does
also introduce a perpass attack, gathering intelligence about the 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-assigned serial numbers. Today, DNS-SD does not provide security
against impersonation of such service instance names. Instead, impersonation can and
will only be discovered after performing BRSKI connections to the pledge. It should
be noted, that the scheme used by <xref target="brski-pledge"/> could actually be used to protect
against impersonation when <xref target="DNSSD-SRP"/> with some security extension is used:
Pledges need to signal their IDevID for their SRP TLS connection, and the SRV server
needs to have the same manufacturer Service Instance Name schema and manufacturer
trust anchor information as BRSKI registrars and can then allow only the permissible
service instance name DNS-SD RRs for this pledge. In fact, the SRP server could
create all the necessary <xref target="brski-pledge"/> required DNS-SD RRs from the IDevID
information even if the pledge itself is not requesting them or is requesting other
DNS-SD RRs. Definition of these procedures is outside the scope of this specification
though.</t>

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

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

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

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

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

<t>WG draft 10:</t>

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

<t>WG draft 09:</t>

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

<t>WG draft 08:</t>

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

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

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

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

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

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

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

<t>WG draft 07:</t>

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

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

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

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

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

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

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

<t>WG draft 06:</t>

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

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

<t>Review Steffen Fries:</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

<t>WG draft 05:</t>

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

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

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

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

<t>WG draft 01:</t>

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

<t>WG draft 00:</t>

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

<t>Individual version 01:</t>

<t>Various enhancements</t>

<t>Individual version 00:</t>

<t>Initial version.</t>

</section>
</section>


  </middle>

  <back>


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



<reference anchor="RFC2782">
  <front>
    <title>A DNS RR for specifying the location of services (DNS SRV)</title>
    <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
    <author fullname="P. Vixie" initials="P." surname="Vixie"/>
    <author fullname="L. Esibov" initials="L." surname="Esibov"/>
    <date month="February" year="2000"/>
    <abstract>
      <t>This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2782"/>
  <seriesInfo name="DOI" value="10.17487/RFC2782"/>
</reference>

<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</reference>

<reference anchor="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>

<reference anchor="CORE-LF">
  <front>
    <title>Constrained RESTful Environments (CoRE) Link Format</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <date month="August" year="2012"/>
    <abstract>
      <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6690"/>
  <seriesInfo name="DOI" value="10.17487/RFC6690"/>
</reference>

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

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

<reference anchor="RFC7390">
  <front>
    <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
    <author fullname="A. Rahman" initials="A." role="editor" surname="Rahman"/>
    <author fullname="E. Dijk" initials="E." role="editor" surname="Dijk"/>
    <date month="October" year="2014"/>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for constrained devices and constrained networks. It is anticipated that constrained devices will often naturally operate in groups (e.g., in a building automation scenario, all lights in a given room may need to be switched on/off as a group). This specification defines how CoAP should be used in a group communication context. An approach for using CoAP on top of IP multicast is detailed based on existing CoAP functionality as well as new features introduced in this specification. Also, various use cases and corresponding protocol flows are provided to illustrate important concepts. Finally, guidance is provided for deployment in various network topologies.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7390"/>
  <seriesInfo name="DOI" value="10.17487/RFC7390"/>
</reference>

<reference anchor="GRASP">
  <front>
    <title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
    <author fullname="B. Liu" initials="B." role="editor" surname="Liu"/>
    <date month="May" year="2021"/>
    <abstract>
      <t>This document specifies the GeneRic Autonomic Signaling Protocol (GRASP), which enables autonomic nodes and Autonomic Service Agents to dynamically discover peers, to synchronize state with each other, and to negotiate parameter settings with each other. GRASP depends on an external security environment that is described elsewhere. The technical objectives and parameters for specific application scenarios are to be described in separate documents. Appendices briefly discuss requirements for the protocol and existing protocols with comparable features.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8990"/>
  <seriesInfo name="DOI" value="10.17487/RFC8990"/>
</reference>

<reference anchor="ACP">
  <front>
    <title>An Autonomic Control Plane (ACP)</title>
    <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
    <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer"/>
    <author fullname="S. Bjarnason" initials="S." surname="Bjarnason"/>
    <date month="May" year="2021"/>
    <abstract>
      <t>Autonomic functions need a control plane to communicate, which depends on some addressing and routing. This Autonomic Control Plane should ideally be self-managing and be as independent as possible of configuration. This document defines such a plane and calls it the "Autonomic Control Plane", with the primary use as a control plane for autonomic functions. It also serves as a "virtual out-of-band channel" for Operations, Administration, and Management (OAM) communications over a network that provides automatically configured, hop-by-hop authenticated and encrypted communications via automatically configured IPv6 even when the network is not configured or is misconfigured.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8994"/>
  <seriesInfo name="DOI" value="10.17487/RFC8994"/>
</reference>

<reference anchor="BRSKI">
  <front>
    <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
    <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="T. Eckert" initials="T." surname="Eckert"/>
    <author fullname="M. Behringer" initials="M." surname="Behringer"/>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <date month="May" year="2021"/>
    <abstract>
      <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8995"/>
  <seriesInfo name="DOI" value="10.17487/RFC8995"/>
</reference>

<reference anchor="BRSKI-AE">
  <front>
    <title>BRSKI with Alternative Enrollment (BRSKI-AE)</title>
    <author fullname="D. von Oheimb" initials="D." role="editor" surname="von Oheimb"/>
    <author fullname="S. Fries" initials="S." surname="Fries"/>
    <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
    <date month="March" year="2025"/>
    <abstract>
      <t>This document defines enhancements to the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol, known as BRSKI with Alternative Enrollment (BRSKI-AE). BRSKI-AE extends BRSKI to support certificate enrollment mechanisms instead of the originally specified use of Enrollment over Secure Transport (EST). It supports certificate enrollment protocols such as the Certificate Management Protocol (CMP) that use authenticated self-contained signed objects for certification messages, allowing for flexibility in network device onboarding scenarios. The enhancements address use cases where the existing enrollment mechanism may not be feasible or optimal, providing a framework for integrating suitable alternative enrollment protocols. This document also updates the BRSKI reference architecture to accommodate these alternative methods, ensuring secure and scalable deployment across a range of network environments.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9733"/>
  <seriesInfo name="DOI" value="10.17487/RFC9733"/>
</reference>


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

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


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

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


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

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


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

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

<reference anchor="EST">
  <front>
    <title>Enrollment over Secure Transport</title>
    <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
    <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
    <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
    <date month="October" year="2013"/>
    <abstract>
      <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7030"/>
  <seriesInfo name="DOI" value="10.17487/RFC7030"/>
</reference>

<reference anchor="RFC8368">
  <front>
    <title>Using an Autonomic Control Plane for Stable Connectivity of Network Operations, Administration, and Maintenance (OAM)</title>
    <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
    <author fullname="M. Behringer" initials="M." surname="Behringer"/>
    <date month="May" year="2018"/>
    <abstract>
      <t>Operations, Administration, and Maintenance (OAM), as per BCP 161, for data networks is often subject to the problem of circular dependencies when relying on connectivity provided by the network to be managed for the OAM purposes.</t>
      <t>Provisioning while bringing up devices and networks tends to be more difficult to automate than service provisioning later on. Changes in core network functions impacting reachability cannot be automated because of ongoing connectivity requirements for the OAM equipment itself, and widely used OAM protocols are not secure enough to be carried across the network without security concerns.</t>
      <t>This document describes how to integrate OAM processes with an autonomic control plane in order to provide stable and secure connectivity for those OAM processes. This connectivity is not subject to the aforementioned circular dependencies.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8368"/>
  <seriesInfo name="DOI" value="10.17487/RFC8368"/>
</reference>

<reference anchor="RFC9483">
  <front>
    <title>Lightweight Certificate Management Protocol (CMP) Profile</title>
    <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
    <author fullname="D. von Oheimb" initials="D." surname="von Oheimb"/>
    <author fullname="S. Fries" initials="S." surname="Fries"/>
    <date month="November" year="2023"/>
    <abstract>
      <t>This document aims at simple, interoperable, and automated PKI management operations covering typical use cases of industrial and Internet of Things (IoT) scenarios. This is achieved by profiling the Certificate Management Protocol (CMP), the related Certificate Request Message Format (CRMF), and transfer based on HTTP or Constrained Application Protocol (CoAP) in a succinct but sufficiently detailed and self-contained way. To make secure certificate management for simple scenarios and constrained devices as lightweight as possible, only the most crucial types of operations and options are specified as mandatory. More specialized or complex use cases are supported with optional features.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9483"/>
  <seriesInfo name="DOI" value="10.17487/RFC9483"/>
</reference>

<reference anchor="DNSSD-SRP">
  <front>
    <title>Service Registration Protocol for DNS-Based Service Discovery</title>
    <author fullname="T. Lemon" initials="T." surname="Lemon"/>
    <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
    <date month="June" year="2025"/>
    <abstract>
      <t>The Service Registration Protocol (SRP) for DNS-based Service Discovery (DNS-SD) uses the standard DNS Update mechanism to enable DNS-SD using only unicast packets. This makes it possible to deploy DNS-SD without multicast, which greatly improves scalability and improves performance on networks where multicast service is not an optimal choice, particularly IEEE 802.11 (Wi-Fi) and IEEE 802.15.4 networks. DNS-SD Service registration uses public keys and SIG(0) to allow services to defend their registrations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9665"/>
  <seriesInfo name="DOI" value="10.17487/RFC9665"/>
</reference>

<reference anchor="RFC9148">
  <front>
    <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
    <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
    <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="S. Raza" initials="S." surname="Raza"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>Enrollment over Secure Transport (EST) is used as a certificate provisioning protocol over HTTPS. Low-resource devices often use the lightweight Constrained Application Protocol (CoAP) for message exchanges. This document defines how to transport EST payloads over secure CoAP (EST-coaps), which allows constrained devices to use existing EST functionality for provisioning certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9148"/>
  <seriesInfo name="DOI" value="10.17487/RFC9148"/>
</reference>

<reference anchor="RFC9176">
  <front>
    <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
    <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="M. Koster" initials="M." surname="Koster"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9176"/>
  <seriesInfo name="DOI" value="10.17487/RFC9176"/>
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>




    </references>

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




<reference anchor="I-D.ietf-bess-evpn-fast-df-recovery">
   <front>
      <title>Fast Recovery for EVPN Designated Forwarder Election</title>
      <author fullname="Patrice Brissette" initials="P." surname="Brissette">
         <organization>Cisco</organization>
      </author>
      <author fullname="Ali Sajassi" initials="A." surname="Sajassi">
         <organization>Cisco</organization>
      </author>
      <author fullname="Luc André Burdet" initials="L. A." surname="Burdet">
         <organization>Cisco</organization>
      </author>
      <author fullname="John Drake" initials="J." surname="Drake">
         <organization>Independent</organization>
      </author>
      <author fullname="Jorge Rabadan" initials="J." surname="Rabadan">
         <organization>Nokia</organization>
      </author>
      <date day="20" month="November" year="2024"/>
      <abstract>
	 <t>   The Ethernet Virtual Private Network (EVPN) solution in RFC 7432
   provides Designated Forwarder (DF) election procedures for multihomed
   Ethernet Segments.  These procedures have been enhanced further by
   applying the Highest Random Weight (HRW) algorithm for Designated
   Forwarder election to avoid unnecessary DF status changes upon a
   failure.  This document improves these procedures by providing a fast
   Designated Forwarder election upon recovery of the failed link or
   node associated with the multihomed Ethernet Segment.  This document
   updates RFC 8584 by optionally introducing delays between some of the
   events therein.

   The solution is independent of the number of EVPN Instances (EVIs)
   associated with that Ethernet Segment and it is performed via a
   simple signaling in BGP between the recovered node and each of the
   other nodes in the multihoming group.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-bess-evpn-fast-df-recovery-12"/>
   
</reference>

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

<reference anchor="COAP">
  <front>
    <title>The Constrained Application Protocol (CoAP)</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="K. Hartke" initials="K." surname="Hartke"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
      <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7252"/>
  <seriesInfo name="DOI" value="10.17487/RFC7252"/>
</reference>

<reference anchor="RFC8894">
  <front>
    <title>Simple Certificate Enrolment Protocol</title>
    <author fullname="P. Gutmann" initials="P." surname="Gutmann"/>
    <date month="September" year="2020"/>
    <abstract>
      <t>This document specifies the Simple Certificate Enrolment Protocol (SCEP), a PKI protocol that leverages existing technology by using Cryptographic Message Syntax (CMS, formerly known as PKCS #7) and PKCS #10 over HTTP. SCEP is the evolution of the enrolment protocol sponsored by Cisco Systems, which enjoys wide support in both client and server implementations, as well as being relied upon by numerous other industry standards that work with certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8894"/>
  <seriesInfo name="DOI" value="10.17487/RFC8894"/>
</reference>


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

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


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


    </references>


<?line 2518?>


    <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:
H4sIAP47umkAA9y9+3Lj1pU3+v9+Cnx01bE0Q7Lv7W4l8Yzcasc90xeNJCeT
SlwukAQluEmCA4CSmS5/z3Ke5TzZWfe9NgDKl8l8p+qkKklLAjb2Ze11X781
mUzCvFqUm+uTbNcuJy9CaMt2VZxkn391cfnvb7JF2cyr26LeZ/lmkd3mdZm3
ZbVpPg/5bFYXtycZPTex58Kimm/yNYywqPNlOykLGDbflOt8Mqubj2V8cvLo
YWhaGPb7fFVt4IW23hWh3Nb0r6Z9/PDhy4ePQ7ObrcumgY9e7bfw1JvXV1+H
vC7yk+zDtqh5OjS7d/kmvy7WxaYNd7Ce0/dv3p2Gj3fwyqYt6k3RTs5wSmG3
XeRt0Ryc4bZej7N6OX/+/OVD+sfLL548CfO8PcmadgH7tWmKTbNrZMbb8iRk
WVvNYdP2BewM/bAotu3NSfYMfppX620+b+Ofm/26LpaN+0VVt+lvYBs2VVsu
y2IBv9xU9FRbl3GYfNfeVPVJmGTlBl68mmav5x+LuoUHef+vqqJeFU0Tf19X
eLLFomyrGn6satilr3ftri7uijL79vIUfqnHar+nBew2bb0/kUeKdV6uYPFt
8a/zZrrMd9NFodN4Pc3Oyh8+2iReNx8r/Q197011hRu4W8HJz/fTzSoOWMCz
0wU8+69l1XYewl2H5c92La9ZlnhTrfMm+zOebu0n+seiXuebvX70skSyaLLT
P7rp07uTO3r3Xxt+YgpnBY/s6vIku2nbbXPy4MHd3d3U/fmBff2yLZbLYpN9
XZdF8yu/3vC70yW++5u+/k2xWdTlx+yrupp/vMl3v3YGN/z+dKbv/6ZZvCvn
N3mxyi7w/+tFU238NF7BjVzk8JvtDd3w0T8/fZQ9fZq9+OJF9hLu9yhOZz2v
/xlv4r82cJWLFcx+ClNXsjqbZrfV5v/azJrt7z7cFOV6ZhR2lt+Wi4G/9heu
pC2/5BtVFHCjPrRtNfkmv9lMLoAVZs9xDWULC3i328DCaEkLZIovHn3x5OXn
wzstC1ngfKYwn2lFU/lV2xo2FQzXlrcF8pSLr189/uLFY/nnk5cvnss/nz1+
8RD/+erDxevJ269P8HfIreBX67P3l/zzF88fw8/w4+TyTH/zhN+HRdD7f7w4
vTynv714SW+fvrIfn8KPxNv1F8/0F5PT1/Q7Yov6u/OLd3C5J2fTIXaKGyZj
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

-->

</rfc>

