<?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-07" category="std" consensus="true" submissionType="IETF" updates="draft-ietf-anima-brski-prm" 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="2025" month="July" day="19"/>

    <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
to signal 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 requires Join Proxies that automatically support any current and future
BRSKI variation. This document specifies the procedures how Join Proxies can support this through
specific Join Proxy protocol behavior and the use of discovery mechanisms.</t>

<t>The specification for 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 terms are described partly in addition.</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 am  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 one 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 once 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 defined the BRSKI variation types "mode", "enroll" and "vformat".</t>
  </dd>
  <dt>Variation Type Choice:</dt>
  <dd>
    <t>The name for different values that a particular variation type may have.
For example, this document does defines the choices "rrm" and "prm" for the BRSKI variation "mode".</t>
  </dd>
  <dt>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>BRKI 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 where specified, sich as <xref target="BRSKI-PRM"/>, 
<xref target="BRSKI-AE"/>, <xref target="cBRSKI"/> and <xref target="cPROXY"/>; within these documents that 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 randomnly 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 choosen 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 physcially not possible or financially feasible to deploy both A and B proxies.
Or if they are deployed, pledges would only randomnly pick the right pledge.</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 where 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. Indepedent specification of variations for different
discovery mechanisms can also easily lead to inconsistencies and hence the inability to equally
support all variations across all discovery mechanisms.</t>

</section>
<section anchor="variation-agnostic-support-for-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), than 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 can not 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, annnounce them to pledges - and connect a pledge accordingly
to the right registrar based on the variation required by the pledge.  These procedures allow
to introduce new variations of BRSKI without need to upgrade proxies.</t>

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

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

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

<section anchor="roles-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 change 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 initator 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 signalled across discovery mechanisms specific signaling elements.</t>

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

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

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

<t><list style="numbers">
  <t>Service Names in different discovery mechanisms are typically not hierarchical (e.g.: not
"role.variation"). Relying only on Service Names would thus require the registration for
every variation as a separate Service Name in a "flat" name space; and register them once for each discovery mechanism.
In addition, not all discovery mechanism registry rules may look favorably at the registration
of Service Names for such protocol variations.</t>
  <t>Whenever a new variation is introduced, all deployed 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 supports proxying.</t>

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

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

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

<t>Today, BRSKI connections can exchange vouchers in one out of multiple different
encoding formats. Independent of that option, the BRSKI connection may also use different
commands (so called "Endpoints"). 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 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="registry-tables"><name>Registry Tables</name>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t>Variations may be identified through other "irregular" strings, such as "",
which are not created from concatenation of varation type values, whenever necessary for backward compatibility.</t>

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

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

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

<t>Variations as defined by this document only cover protocol options that proxies can
transparently support so that the definition of variations allows to make proxies automatically
extensible.</t>

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

<t>Differences in the supported transport stack of a responder are typically included as a
signaling element of the discovery method: Whether TCP or UDP or another IP transport protocol
is used, and whether the responder uses 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>
<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 inititor.</t>

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

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

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

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

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

<t>Support for the so far described resilient selection of responders <bcp14>SHOULD</bcp14> support
selection amongst at least 4 and no more than 10 responders with one or more
supported variation for each supported IP address family (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 redundany is a simple example of such a setup.</t>

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

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

<t>In typical implementations, service announcement may be activated when the
service process starts, and stopped, when it stops. Problems such as a hanging (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 announcemements
and activating the backup only when the primary ones fail. Such dynamic backup
can further reduce the overall load on the discovery mechanism system used and
on initiators.</t>

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

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

<t>Stateful proxies <bcp14>SHOULD</bcp14> optimize selection of responders for each variation across
connections for multiple pledges instead of starting the sequence of responders
to try from the highest precedence anew for every new connecting pledge - and repeatedly run
into timeouts for each new connecting pledge when those primary responders time out
on connection attempts because they are unresponsive or unreachable. Instead, after a
responder first fails to connect, the 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 availalable 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 pleges
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 as registrar) when it does not run,
fails or becomes unresponsive.</t>

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

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

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

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

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

<t>In environments, where all pledges are expected to become proxies after enrollment,
implementers may simply want to implement the option for which both pledge and
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 intermittant, and hence one or more
local registrar in each such site is higly desirable. Such registrars may of course
require private mobile network connectivity to MASA, or rely on out-of-band provisioning
of vouchers.</t>

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

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

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

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

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

<t>Pledges supporting BRSKI-PLEDGE <bcp14>MUST</bcp14> support DNS-SD for discovery via mDNS, using link-local scope.
For DNS-SD discovery beyond link-local scope, pledges <bcp14>MAY</bcp14> support DNS-SD via <xref target="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 pleges 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 aquire serial-number information of a pledge by the time BRSKI-PRM  needs it
(to create a service instance name).</t>

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

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

<t>If browsing is not desired by a pledge, the pledge does simply not respond to queries for the
"brski-registrar" service name in mDNS or other discovery mechanism queries for the equivalent
service name, or does not register its PTR RR for this service name when using unicast DNS-SD via
<xref target="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 randomn 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>In result:</t>

<t><list style="symbols">
  <t>Vendors <bcp14>MUST</bcp14> document a scheme how their pledges form a service instance name from
information available to the customer of the pledge.</t>
  <t>These service instance names <bcp14>MUST</bcp14> be unique across all IDevID of the manufacturer that
share the same 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 manufacturers approach using the recommendations
from above.  <xref target="service-name-example"/> shows the different data involved in DNS-SD records
for a pledge from manufacturer "Example".</t>

<figure title="Example IDevID and DNS-SD data" anchor="service-name-example"><artwork><![CDATA[
    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:
        <X520SerialNumer>.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 will 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 can not be known by the time the
pledge needs to be enrolled by a Registar-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. The 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;X520SerialNumer&gt;.DNS-name&gt;", authenticating instance
names of the format "&lt;X520SerialNumer&gt;.idevid.example.com&gt;".</t>

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

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

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

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

<t>The following definitions apply to any instantiation of DNS-SD including DNS-SD via mDNS as defined in
<xref target="DNS-SD"/>, but also via unicast DNS, for example by registering the necessary DNS-SD Resource Records (RR) 
via <xref target="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".
In result, the value of the TXT RR is a sequence of zero terminated strings, each one indicating a single supported
variation type choice.</t>

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

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

<t>The use of variation strings can easily break the DNS-SD rule that they keys should be no more than
9 characters long. This is justified by the absence of value fields to keep the total length of the
TXT RR reasonably short.</t>

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

<t>To be able to specify for each responder socket individually its supported variations as well
as its selection criteria (priority weight), it needs to be represented in DNS-SD as a
service instance name with an SRV and TXT RR. In BRSKI-PLEDGE <xref target="brski-pledge"/> the service instance
name is significant as it is what a Registrar-Agent may need to 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 registar <bcp14>SHOULD</bcp14> be able to use that host name as the target domain name in the SRV RR.
This requirement avoids the unnecessary addition of DNS A/AAAA RRs because of the registrar,
when useable RRs already exist.</t>

<t>If such a DNS RR does not exist, but a DNS host name for a different DNS method, or a different set of
addresses than used by the registrar, then the registrar <bcp14>MAY</bcp14> be able to use a target domain
name derived from that primary domain name by appending a unique name element. This requirement
exist to avoid the creation of unnecessarily inconsistent host names.</t>

<t>If no DNS host name exists, the registrar <bcp14>MUST</bcp14> be able to automatically create a DNS host name
and the A and/or AAAA RRs for the address(es) used by the registrar for use in the SRV RR target field.
This requirement exists to ensure that operators are not 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 it's MAC-address as its target host name,
"0000-5e00-5314.local", the same name is used in the registrar service instance names.
Running on a router without modular software, the registrar knows that no other registrar
instances can run on the same host and hence the name has no further disambiguating elements.</t>

<t>Note also that there is never a need for two different service instance names between
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 term
in <xref target="variation"/>, and listed in the Variation String column of the <xref target="fig-variations"/> table.</t>

<t>If more than one Variation is supported, then multiple objectives have to be announced, each with
a different objective-value, but the same location information if the different Variations 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 exampe 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 packes. 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 pleges)", and encoded in CORE-LF as the value
"brski.jp" for the resource type attribute ("rt=resource-type") according to <xref target="CORE-LF"/>.</t>

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

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

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

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

Example:

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

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

<t><xref target="cPROXY"/> introduces the operations of a CoAP based Join Proxy
both as a connection based 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 can not include a port number unless it also includes the IP address.</t>

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

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

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

Example:

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

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

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

<t>This section specifies the use of CORE-LF for BRSKI variations.
These specifications are backward compatible extensions to what 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="fig-contexts"/>. 
A brski-service is a string without "." (single component string).</t>

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

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

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

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

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

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

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

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

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

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

<t>Example [2] is the same socket as [1], but announced as a Join Proxy
socket for pledges. Likewise, [4] is the same socket as [2] announced
as a Join Proxy socket for pledges. Finally, [5] announces the registrars
socket in support of stateless 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 avilability of a set
of endpoints with specific encodings does not imply whether the target does
support the desired specific sequencing of instantiating those endpoints,
including the use of any endpoint encoding option in any combination.</t>

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

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

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

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

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

<t>These discovery options can be further compacted such as
shown in example [4] and [5] when assuming that the
abbreviations "rv" and "vs" are also known even by BRSKI
implementations from <xref target="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
becauseof these shortenings is likely negligible, and it is
better to define short endpoint paths into the variation
specification if they are likely needed, such as done in
<xref target="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 cunjunction with BRSKI discovery
but only discusses possibilities and limitations here.</t>

<t>Considerations for such non-service resource type use in BRSKI
nevertheless introduces one requirement to avoid conflicts:
The names of BRSKI services
<bcp14>MUST</bcp14> not duplicate the endpoint names of any resources specified
for BRSKI protocols. This means that "rv" or "vs" can not be
used to create BRSKI service name resource types "brski.rv" or
"brski.rs", and likewise, additional BRSKI endpoints can not
be called "rs", "jp", "jpy" or any other string registered in the
BRSKI discover registry tables.</t>

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

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

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

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

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

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

<t>IANA is asked to add 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="registry"><name>BRSKI Discovery Parameters Registry (section)</name>

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

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

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

<t>Experts:
  TBD.</t>

<t>Reference:
  ThisRFC.</t>

<t>Notes:</t>

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

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

<t>[RFC-Editor / IANA: The following IANA tables should also have hotlinks for the referenced RFC/drafts. Unfortunately, several of the referenced documents are already referenced in this document with protocol names such as cBRSKI instead of draft-if/RFC-number, which is to make it easier to read the draft. However, this is not appropriate for pictures or IANA tables. But as you can see from explanations in Changelog for rev 06, i can not figure out how to have both type of references. Hence i have removed the references from draft/RFC in this section. Please re-establish them in the RFC if possible.]</t>

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

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

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

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

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

<dl>
  <dt>Note 1:</dt>
  <dd>
    <t>The Variation String "EST-TLS" is equivalent to the Variation String "" and is required and only permitted for the AN_join_registrar objective value in GRASP for backward compatibility with RFC8995, where it is used for this variation. Note that AN_proxy uses "".</t>
  </dd>
</dl>

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

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

<t>brski-proxy and brski-registrar are to be added as Service Names for the "udp" protocol using ThisRFC as the reference.</t>

<t>The registrations for brski-proxy and brski-registrar for the "tcp" protocol are to be updated to also include ThisRFC as their reference.</t>

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

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

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

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

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

<t><list style="numbers">
  <t>IANA is asked to change the name of the first column of the table from "URI" to "URI Suffix". This is in alignment with other table columns with the same syntax/semantic, such as "https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml".</t>
  <t>IANA is asked to change the Reference from "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-Agents connection to the pledge may not be possible. Discovery
of the pledge via DNS-SD increases the ability of attackers to discover pledges against which such
DoS attacks can be attempted.</t>

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

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

<t>Service instance names as defined in <xref target="brski-pledge"/> are used to discover pledges
by their manufacturer assiged serial numbers. Today, DNS-SD does not provide security
against impersonation of such service instance names. Instead, impersonation can and
will only be discovered after performing BRSKI connections to the pledge. It should
be noted, that the scheme used by <xref target="brski-pledge"/> could actually be used to protect
against impersonation when <xref target="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 the all necessary <xref target="brski-pledge"/> required DNS-SD RRs from the IDevID
information even if the pledge itself is not requesting them or is requesting other
DNS-SD RRs. Definition of these procedures is outside the scope of this specification
though.</t>

<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 responders 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 means.</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.</t>

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

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

<t>WG draft 07:</t>

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

<t>Resolved open Q text wether 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 Artur 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", not 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 cncept 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 Kovatch and Artur Hecker</t>

<t>Made abstract and Challenges introduction hopefully better explaining the scope of
the document and motivate it's 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 functionalty of variation agnostistic proxying clearer (hopefully)</t>

<t>Rewrite 3.1.1 to clearer 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 (registrat 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>Mayor update to specifiy resilience aspects in selection of responders.</t>

<t>Mayor update/simpliciation of CORE-LF section.</t>

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

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

<t>WG draft 01:</t>

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

<t>WG draft 00:</t>

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

<t>Individual version 01:</t>

<t>Various enhancements</t>

<t>Individual version 00:</t>

<t>Initial version.</t>

</section>
</section>


  </middle>

  <back>


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



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

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

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

<reference anchor="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="6" month="July" year="2025"/>
      <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-28"/>
   
</reference>


<reference anchor="cPROXY">
   <front>
      <title>Join Proxy for Bootstrapping of Constrained Network Elements</title>
      <author fullname="Michael Richardson" initials="M." surname="Richardson">
         <organization>Sandelman Software Works</organization>
      </author>
      <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         <organization>vanderstok consultancy</organization>
      </author>
      <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Esko Dijk" initials="E." surname="Dijk">
         <organization>IoTconsultancy.nl</organization>
      </author>
      <date day="5" month="July" 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-17"/>
   
</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 2163?>

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

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

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

</section>

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

  </back>

<!-- ##markdown-source:
H4sIALHBe2gAA9y9+3LkxpU3+H8+Bb5SxIqcqaq+t7ppWzNUs2X1TF84JGWP
w1YowCoUCXURqAFQpMod2mfZZ9kn23PPkwCKuozn2411hO0mCSQyT2ae+/md
2WwWFvWyrK6Osm23mr0IoSu7dXGUff7V2fm/v8mWZbuob4tml+XVMrvNmzLv
yrpqPw/55WVT3B5l9NzMngvLelHlNzDCsslX3awsYNi8Km/y2WXTfizjk7OH
X4S2g2G/z9d1BS90zbYI5aahf7Xd44cPXz58HNrt5U3ZtvDRi90Gnnrz+uLr
kDdFfpR92BQNT4dm9y6v8qvipqi6cAfrOX7/5t1x+HgHr1Rd0VRFNzvBKYXt
Zpl3Rbt3hpvmJizy7ihruyVQp2qLqt22Mr9NeRSyrKsXQKJdAXSgH5bFprs+
yp7BT4v6ZpMvuvjndnfTFKvW/aJuuvQ3sOiq7spVWSzhl1VNT3VNGYfJt911
3RyFWVZW8OLFPHu9+Fg0HTzI1L6oi2ZdtG38fVPjPhbLsqsb+LFugCZfb7tt
U9wVZfbt+TH8UjfRfk8L2FZdszuSR4qbvFzD4rviXxftfJVv58tCp/F6np2U
P3y0SbxuP9b6G/rem/oCCbhdwz4vdvNqHQcs4Nn5Ep7917Lueg8h1WH5l9uO
1yxLvK5v8jb7M+5l4yf6x6K5yaudfvS8xEPQZsd/dNOnd2d39O6/tvzEHPYK
Htk25VF23XWb9ujBg7u7u7n78wP7+nlXrFZFlX3dlEX7K7/e8rvzFb77m77+
TVEtm/Jj9lVTLz5e59tfO4Nrfn9+qe//plm8KxfXebHOzvD/m2VbV34ar+D+
LXP4zeaa7vPkn58+yp4+zV588SJ7Cbd5Eqdzs2j+Ge/dv7ZwcYs1zH4OU9dj
dTLPbuvq/6gu283vPlwX5c2lnbCT/LZcjvx1uHA92vJLvlFFATfqQ9fVs2/y
62p2Bowve45rKDtYwLttBQujJS2RBb549MWTl5+PU1oWssT5zGE+85qm8qvI
GqoahuvK2wJ5ytnXrx5/8eKx/PPJyxfP5Z/PHr94iP989eHs9ezt10f4u+fP
Xz6EX92cvD/nn794/hh+hh9n5yf6myf8PiyC3v/j2fH5Kf3txUt6+/iV/fgU
fiROrr94pr+YHb+m37384skT+93p2Tu43LOT+SjzBILJWL1H8Jp3TV5WxXJ2
W28X13yPT88+/Odf7n34h7qsYOj6RyT9v/35fPanD9+++ub12eClH+5aN/Lr
8wua+xcPnzxkWrx48vyFkPXl0xdPjphm5yez8zOmxcvnz5/J3x89tUcffQGb
EUJZrfyO2bcvgfHOittNNVvlbTdbrmZNwUJOt/Dlixe8hcf8mS8eP3ssM3rx
8qkOVhDvlqVcNXm7mS2rtl3i3785+/NLGgMEDovoybctnt/3cDFmX+VtgRJw
s4FftSCSQOgtQEi2RfZN2WVnKPAm9DLKvqPs0cuXL+hHFSwZ/Wcm/++uW4HX
8eI6XxNFxx56dV1Wuzz70xw+c1u213n1Mednu7y5whvnb8BNuWjqtl51dAeK
arZtHzRFW+TN4vrB3Qa3vQMR/mC7Wdf5sn3w+OGjLx48fPyA1j/fLFchzGYz
uN54OBZdCBfXZZuB1rFFyZ+1m2KBgrTNrus7pMNN/rHgU4ui+QavuOoMIF7g
a6vyCq5pdTXNih/hy215uS5In4BZlesS1YmyAgFSZKt8UWT1KmvLGxJWRb1t
s21Lv1uWwOEbnEFUkvD3+B5/HY4vfm+dHdDPU7te02CXapq5U5/Jc6AkdQXJ
9sEfcdAfYbGHuEWODCGSIccdz7MbYGnrafbm+P0xLOyqhHFYpzPSbIBpw/Rh
xEWxBG2ATlG+uC4LOAMdjD7v03pZw0OguGTLYgVzguF2WVXcOaXxpoDTtWzn
cBpBBubLaVZ2rZtQlq/X9V0b4EtteVXl9ItssW2Ikgc4vxWpJod7ybrKb8r1
Dn+nBGY6wQphjPUu3Ja5253iR/gDXhvQB+/q5mMyWZBqVdneoAgiRjrNXtXH
p+6RA+HBh0Q6YqjzcLwEHQsmlq8f8GRHx8wWeQWra+vsssja7WYDWiBsY3fd
1Nura1pQsjlA7WM4oMhtFnYUF7xneDNmcNHw2GagC2dFlcOpTUezgzkyFxwE
nglAMrixMHccCB7Gc11u4PyDHEZtrCBi945IC9NfXGegislc84ZH/Dfg0tkp
n8j9BxLnlh4yoUZvWTDgAbLTQ9jico1LyLagLDT0I1KZ76gsrl6FBkasljls
cpwqUJF1W/wkUqMAtrK7oVXYypriv7YlzsUvAOaZd8QjaAvgXO5sonjQ9ZDG
M8rXOB7UHgmyvSRATpV8Go+Kfgtvnu6rUnERH99FvnJZXAP/rRvd3ftOAN3l
QqfEHDED4eYexhsFZ+oK5nO5w/HKJntzUty+OcGtL0EhqpdbWAL+1RhYVuKp
WBGHIq7pCDBnzn1TLpfrIoTPsgvQpsqqXtdXu+zTZ1386See3cdil8EdXbbZ
5N235xeTKf9/9v4D/fvs9X98++bs9Qn++/yb47dv7R9Bnjj/5sO3b0/iv+Kb
rz68e/f6/Qm/DL/Nkl+Fybvjv8BfkJCTD6cXbz68P347GSyIrl5HF7pEE3PT
FHil8zYsi3YB9gsT4atXp//3//Xoafbp0/9CHe/Ro5c//SQ/gIb5FH64A/Wc
v1ZXcMz4R6D4LoBAB8mIoxBjzDdlBzxkijvQwrGpQLFvCiDsP/0VKfPdUfb7
y8Xm0dMv5Re44OSXSrPkl0Sz4W8GLzMRR3418hmjZvL7HqXT+R7/JflZ6e5+
+ft/WaOcmT168S9fhr40aoo13p2aZbU7TSKeaC8+faKj+tNP8yzDI7aqUQAh
v8EXWtrRuHmbvAEJQtQXHg+kfoUKyo/dUTjKjrO26PCinBfNbYncEq/QHdia
NIcW1CN9wokv2FOcKSzgzSlI5NPbp/S/z3HEN70jhn/BC1U0xCkPymqx3rag
f653h/QqWD70MojYFch60hX4bPJX8C06VMAPVXCC4MvgiiPfb+mcRZK1yaBE
DuAiS1j2mwoIkJNBjgu/rtuOWWSJOhBzbJwsiIOqJc5ljAmmUPLbwLRROFfF
ghgOfIYez/lH1DdAnYAjzcMj0y2YlQGbBI4O3N/PJGvBmC10J+jfKvpFnsGU
Sn0al4b7CEPBqm1yeOvsB5p3tb25RDHTwDbeXYNFCEoLOmlkCa1bQdtbAutM
cbbZQbfbiPD49uQUn754dXoIi/hw+QMOAaoV6u+4hPOi0HNEv4OHzoq23jbw
M7m+9j7D3/pN+yIzxX/6nYB5um1C+Vi0IDGJJDic0tR//xfsRiTML90MNPx5
O2Aeuhk6TMsrkMnJ4Y5q9j7Sn6FjbPSurbbVgjW5stvJ+YE/4A/IA+IljroD
kZpUu0WHXNlvPq4GmEHr9T3HB/Cty6gswi1TfQQmiGJ0XdyiNjMQO8QElgUr
AWeqg029UkCEJOk9Jz6X6v3KEEmuJwKN1HHSyUgz2Pn5rki12PH05nQWSZ8V
hgiUPbcTgN8ELeyyrIxe+U2WbDofy3gYkZDbDtTcv5PV4q/igSqcsIO4kbCf
rIGnj9EJyOMBxxm5y6LzQquVFnMA/HJ7yQz6kC08fwAeHJ+SgXVbLplWue0V
attuo/m0i76HbBQvX1kBIytxz+nafPrENgWI+8strLQii4643V3ZmiqG+gMS
FbnucOeRuwBf3zGr3PHrTmcbzJ933wtDGvhSX3U2QbwubC3BFn8NRCp+zG/g
JE1JK4FVkNEDiyD2UhDn0O8nh184ANJZ7FgkcMr24Ao0jSrEqITf5mtZJslP
2TzcMDQh4etif/30Ew+XMMjsoOn+cLhvTGEPyZigQjjG+ie73fhb+KP9gnla
cp5RmsJ/I0dYXNc4bgEWMy26oA2Jf+9whiSUF3R6ZI0Lvjw4PRwvOWBjXos5
cMRkW8Q34cYRcnt2VbY0uswRpzdB+xtU3P6viwqu93oiyugi/eMtu78mnjYm
m5KrhcPmeKQ7Zvx2zVlBQj6OWgj8cFM3+pGWrfPsAH+d7+Qndb6wH2AqXLVA
1fta30QvIvCTDk5zJYf4UhkQnFHgEdf1FV4LUofo5Kc707dXjUVGR0PvBaNg
QrL9JMpe0UwHlPKOo/XW7E7SPcvFdp33p0qkAUuvGByFbuid4WW0jlQw8aa5
kdlu8F84i7Fl8gLRD/HqFKc9Oa4ydElU9Q1YoMj1Yd3Z6TqvkAyfPsFjoFcH
NoPpha/qukPZRF5JuKw3dYf6ywLt8X8H4+5NtWrAwm+2C9xbGkTVcxkGvc/0
6TWG8Mjzmr0metMaT83l43X7OBC87sZCrzUOZg9md2V3DStAOZmRLFXu9Y73
VoeBN2mcRVzbK++L+1XrzA5sAof0jUVcNDmIcXg8I/4Tx8w5aGNOTcVB9xSP
gS/KCBwl6M/x7PX5xWq7Burdlk1dsQsEBjh7fZi9LauPeJTw4E49l8Uls3e+
P5zTNYjFJxSwbeHl0Qg0mMQncDD8J3utVUafqBijt1RawlvoxsdX3MaTuBEK
X6hmS+/Bw/QSRzvwtT8WVXEGJzae3XPyNfqZ0qsi2vTlGUUGbLLnJ7AhNxvY
AuTNg0nj+fklX8oOaHDetfuc/jQRH+vAicDP5CkFsv2JwxzZMfCJFWif7c9u
hBuMBl/fvXrHJHpbXl13dwX+b/aqwAHxrBUupO4P3TvQvuDHVbnmOyLBFBqT
IlI4JLkSF3Dq0ZdKj+Gf6JnzV6/5s+clMq7ki7THyQf1Exgoodc/yz7cIvWL
OzChP/sMGCvaidUVmtRfnQELu8uR8QmZnH+RpjS7Laol8l3nCQQFj2QGsYO/
F01t9n6+Tn2kIozUefzDtu38F+gik6rSFAtcxK7IG9B11a8afjY4wJLNlMEp
7DarvgkrmmbBczjPRIixx0v3O1oUTxu0TJUOKmbgWza3eiMmLP6lKph2ibMa
deD1WqZMhhEqWmV1W69vWV3N+Y+hsKs6NW8x2yNk7YmFYv5j2NVH8+y4bbci
FUWmkUYpz7AaLbt3jCoNb6F8mCw19MGhMi37g0Eo0iWqLd4QCvPANPIq2TRW
lIoucXmqqVss6nbXdsUNOXHo4y0SAYdm8xo30WbVRGtM7JMoxs3W6O95PBQo
0rO3cA8ajJQA8UGFwRgLHKa2zRvW+9E84KXTmxiESmftwx06fRr5TzzNr9Sq
aVP6kh4AdLWXpmSqoCMSDg65k9saXVprYhQ2bSLzSg//e4y7sSFOzmzbJQ1O
FCUpYPjMcUbTiUQ2U4IfwpFdkEEep6MD/1PfoGMLrJaPqG/C+anoKCww6kmT
pj/hd+5A4l25zcFx4xE1DYjJCDcGDjlGGXAD8i2PJsd2xAVQchBsYcIBRydW
QkdDXzhoD9OrJDpZ3RZVchPgbU9DkCx4FXCi6jgA0QLLETrSngtl2i5v6Gyv
yh+z7YbGKOFW0ZQud+a1x9dpK+EDGzz7eLYk/MmOOPIZ2m5MyP0/Yf0TFu6m
K7PNlXg0Hd7buK2onNOIl4XQHUlQAF9a4iU7djwhx+NJQ9Gx4pf4QT64P+7Y
qFUeXFMWGCy/gmms4GpScKIWPg0mEUrDo+xNJxuFw27qVuO8OzJA4HlUqXXQ
VvjwJdgKMDuKk9olE7+NrmOqpwQHLukrm+tduyhJpODJsK/BJEEdzyv526rI
+fedXej0gxJKw4E/NFm54lPNPmq+VFOb1V29XUv8oHc3yH9KN1Y8QiE8nmfn
uP0w6xldFzEygQfe5SQd6hjhAcJjVDeefDbsImN3pwqnyo8XFScWSgzY7tgN
cjI4J8WP6HnAmaNbybGshdMG4h2lXVO/TvYVsKWK7ghQW+xM2RYz+ugGopMk
kp/uSzRLmWHhyMg58Pl6S45zuhT4fZQVJPe3GzjXlUTjCnQ9wu0CXiPWa16T
PM+Xs+t6wUZXqZyRHQFdeSPcM96KjTj20Vi2yF7CYEQkw449QfGIR8BpEHxG
KQAP1EMpAwy/Qh47jQcZrUU6FSru/NcCZ4DU0YOkNGb5NZwV8PNySd+8ZHLS
2aXw/zUzrZK49gifXNAJTTyepFFUfS+WCUbzTtEmndesmjhzGF1SoH6QQrMr
OhsL1jirVys4zLvEQYXZB4nYUg8bnlhlbva0nFx7BtZH+w38GAhJWoS8otSW
sGqMKoHMn7UaK8g72PUN8Wcah1wF5HCTiBNdEHcTomJLqpV3b9AAcIAWqO7A
Kb3a5nSzPwOFOBodfZMeL6Fz0RVrnhq892ckpQ+XIG9oncvTRY/t4kcrLSRu
wMryB/puN45MdBQvFQe+BBrgn6Tz4HmNO0C8+Tpnhxt9VkfGyL53fohOpdxQ
dDwbKYmvExVUq5iHN5UIW9CQZc779HTvL6WlULIvh39JEF2W6HoFtlw0tL0w
XsBIFZqq9Ae8OqhEu0sQky1w8XpPYWWLjqLBeceC3LYGlXOfnhP638+Y2e5o
QBJBrPDROJdF25F9hN+GM96UC5CoUR8mnUQ1W3zYD+/93lM5r8MDYhNEZ+xO
RLHosCHaVpkl1NXIu1udoXfSCp2rJUmE1v/9AUYidH98hBAvwSvLAbKF4en3
cVhMRGvdfduTKHFiD0hOvLMckb7Mxn9mnOnIpXE+h2lwXhfcPeJjLeq0XueE
M+wy8tdNkS9jNEf9rmMbsm23yDbCdd6KVdcUsxhyQPLC+diyWmLe6z5jjvyY
vaWYW9fipa1XQOhsQWEYFHKU0EXcRW8WkAaP29jcKK4URY2xYSOzaVhCw2ib
p/krpA6SHxhz/vJsjUo/Cl60yGG4YunScBYmnXohLtvHcH8aFypvQK017AGr
S5Z1tqC8OxCf18RO+O7qzYRHi//izTADdL0eOZeeSfROJJ7v6F3Or6q6xSwx
f849vwvhVNgi2qhXkvyEO6ZWfuTBiUVIV09GbVNrxsR6GNg0YgjotzJMwMud
w5DVd+dANG5h3Dpy56DJTI5AxNliLtaS9QDQ1Oqt0PsGDt8tJz9sBkvPF4u6
QdUUt0B0ijtNguhPXijTaryGZ6xijCxFJV5pgSvStoO36caCC61fk05kkAd2
WUT7D4ODGJchiwd/0J0PyTE+yliaexrbLqZRK757zknx5lRTQ5iy6lsNBxev
TqcUSacck9V2/cASUw+nLKTLLkld87mcMU2uf98wD5EyZfZ92jRzFiPC6fza
4DDfoVXEaQuU0MvLk1If3ADn71Gq9ezqaT84LzYwsgN1/G3yHWYpUq4kGzKt
BByXQe5tRxF/oNYDJJbLFWFvCkpjyrax5TnmQrk22XtURsf+jJMi1ds7EmVY
56+rZ5I5I0FBVUsllAdzN+MsZX9kN4/LMcrjZcZn1xXrohrT6cIgnwEZwrq4
yhc7v1s9qltCz3qfnIY3zZeEMS3Ma8dMoqhGyGKKFbzZHYku666y5UjMhpc6
uSXmtVFyotDJR8yggIfUe/ssi2qMr1HeKtW6SezTmzCUqjM1BiB3SKYYUp7k
WHPKqYV0rLV5G0kktaW4aoIE8xeiZAB2Mosz6ofwWeBkX1tqQXa+vblBRW5v
6n2uWW9p2kmH6mMbUwJIEKB3jX9PySfRnqSlg8lEdWBFTzbHQb1GXkchgLQ2
cbLsaXCoNwaXiwRK0V0BzCpvJc/VeWSzE7LmWR2GyaI066/oJv+xvKG8lagD
7ILpl3sSsLE6o41m+eqX6aYh0QS+NUV96QJRUamOKp5LDTeS90PGtoNhWXR5
uSbjx6xE5uHw6xkRlUSmfpUcPYmxltoM5Nm7hXd7FkTgE+CSodkyJMktNosl
v/MwLTA3M3PUt9BqAmbib1PBsdyBJVEuRhU6tCNBOwN9bC81/PT6ulWitqRW
o1NiNBFvN3Ya0NXidRevtcxoyaphGE/zKozXORxHuKTYqmTD+ttNjKCnrHE2
bLoRdB1D4ghM3IAugV7pbFxzc9XkSwsBzDMM2p17vZtYygnWgWCkfS0Reh9N
hQlc0t75hHRKuxG3QFKi4C5zZIXBce548YWmcMIpKwo3Bo6yhCTyzg814sRS
35RFy8rWef5ZgDww61q9/DGX0ox4YcziHMquStBXgzy8KDYdmAgU5cY4J37+
Wt2dSBk2+5diCpxRviAuSvOQQxgmN+ZmVpetl2lp0mOa7xZlAU4l5OZ0l+wu
OddegTTF5YH6POAfVL+NiuPiY5LMRwrllMriptnJxdvzw/n41Gnj4He9ybKT
RWfr4pI7jY5gSqb3ankH2DzETBCfKMP5lxYM9ImVUy/z3x2fH8/TwCw6N+Ig
fcUD9hwr22FGoIo1vA9ol1ZkmNIb/n5KIpduSVAWLkkO5iZwlU8xDYZTX+Dm
HWe4SetCCYMuC9PBYsUPL3qksocDxaj4sc1o74aeunNWc4jDfHCk6rCXH/a+
3oB2KMdFuBiM17CPn+aCeix9I5A2xdHPXlWRVPOIJ8ai2bSoGLCIqmFjd+OG
EibZWRQ99K26d0Pk+9fqqHYFgRp4VXHd80RIUuzw8KbXbt/x1cRh9OBTvpze
s8g5gkakceJ0lNNUc7aq3bcwpEMWDHrRlkJsO5nkWuu7zqZB93/0xOPm8pkX
P7NLrm3ZxKCxJYNtkAtqNihlx7JDj9zrlDQ55hrSE59XwYdluFaQPNwFn8W5
z69dUBCQtmH4JK04yaHPTra4v6xvXpoLWGMJ4q0B1g6CSvJnKcfX4uXqsRr5
mPpymssSKbgbVUH6igcdtFj0YXvWml/fhk/8obSp04C0NaaiB37Mh4cW97Gm
Y4+XCODF8X8JaalELvEn5P/6qXPvvCWFjcmCZ/Aejdjk0WCVA49X63IrW7XM
ezkVepC7vXav2e8YlQU7CJWewDGqPV59YAndXVF4cSJ1wnoFrTCiDaQLXeKJ
kgBvjI4s1TfqVA1W15CWUq0jfIr1CNz+aUD+yBWkXrcjd37q0UmiBfOEWlyG
gafJwnHxKl7uTKJHy8PflbHMZp4X33m8o3iXORhNEXVM83WBLMzzSfgG+7Tv
c51zmZ1lpyONQP1psGAcf5UdFPOr+ZGG9ie4uLnNbnI4Bym83tGmC2XT7/Nc
u+utWcnCFJnrKVFjKNcHwom9w+nPu5SpcC7UZLXOuwnfhBaOVPE7l/bE3PiG
s6yJrnu4IAU/38QatGEMybNMs02b7VoiSuu6/giG222NthgoSt1ggZLBkxIG
50TXaDRRCXMI0NFScOJ/miFQ+gLRKc9V04CSwnWhvvNeqQMP9B1EEBCxuxG3
q4Rq45dmFhvA3w8X0GkdnjMAFjktGC/n1t1MvgA6sQPLB4hCfhiYFvXoTu8S
WiY4NpoE6+JHNod77mu9JXAy32G1VmJORuVDGYd4e9XI4tG9kxN/fXUt8VA2
7xH5QYr70sIh2ROpjnDckMlzgPTxtfamc+I5h88uMVFoKIfGZDh6DKdcmU5p
d9FeZmmSN1yf74uqRwwu4VWx4s5VELg4QMtHBL7ESli8LN5gJXUonjW9iIXU
OsQExiiOUl+PO9ahXz3FKRPMwv2VVhc4ypkhPgCSCXPs09vDkSNXE9RqkgCz
515tVdwRTfIXHUwzL8z+BH4QyKlJYROLYLe/WtgpGxExGjSfh11berLWwB7W
g4gV1kOgwlgv8910MEf2c9t4AudCgoLsf7ISouES43X2VfZ/tRr2c5oQTJoN
96lTGlLyWP2VGxl16RzzFQ7aWstSJ6+r5QaubteijJG18PVDgWUyWp0LiZ1o
5VOUt9bNow+KPGU4g4EWh2EFKprZiN9/7wqo8H9IquDyQmPyozG1mGyU+nVV
ncaVqddjkm6m1MqzBl0TXkhTeLcTlcwgbJtRTwtljEvLPsvmTaX8xP5s1BYr
kqinvoSA0ANMSqkQsqocfX9sxVLaPDycUqwjRg2mDmOUQa6WXWxWeNvBOmn/
+QbraseHnxwFLsHB4qrG1+L0Sn6kFCebLG7aH7DmaAGHgV/7gf61771YjjQB
NZHevNnwi+2i2Ox/UcgH1JEHS3KkaF62vuYcsQOlicuLQSIXUtp0JOmRpL4s
4SgxE/VoGinzzSU5Kd2g8w7dzbI3Lf1g5myv6I0VNH4E/WogR5FpEgsVr0hv
4a7cjbS9cGCJK4e9Z5P6SNq/GW7PDAntkt0i2+58ebLcpKD1mHmsX/LXWVwl
REs1w2dgfGFiC2eRRgmdhtjR+qWVh6bg1KYu1uKmZHKF9vH3Qja8TLxtCaoO
TZs0xGj0qrE77uZuNcssKeibev1qcI/Q9y23Lm+KRKc0IJ8Yk+MZg86LPjaO
k4r7acmKJMaXVltQRi/zxce7vFma65ZPMXlvdeAHsbxgELEcFsay3cTHl8w8
cmx2KBVY7UAf5zmS0fIlOHDLr1BcncNtYoOa2wHdQDSx//j2zStQS0n1abYV
Q13UG9xPLIieZ8dihmHKy3Sgk6uXgq2lCR3ESXBWoAG60NdG70WLnCfftFI+
CNbSYsLXYJyi06DPk0fPAqKXRSywpJ/EKZejA8zig46QvOqbIpf6lDDc/ky3
X03/3o3EXWR3vODiyNSmnEcrvgLM44a/Ea29FVunlnLxI5bjlZifhwHB5FMz
JgufkuH0JEhfgEKhuEJbYF+XoNDXW5Hqe4gfM4NC/6rQLJdEk0VH7LCNMrlu
lpzCMIg+J6OD6RKZJJ779uffVsgUB/njwlOmPQfSnueIY9mPI6WTcNTGCCRy
Bz4kTryILo7lcXjT1QD0TI3kgYRm6lZr8Pd803DM8Hzx8YL/hxtm6ndilxxw
fn1fHNhwqL3areWw2F2Ph1BKaCLkMMEfBE7FeHUIOVtYkt1Obwim6k9ReEue
LGqO/FApuRlMJTT+wt11H93BB+gjKZFjuONcVPBwQ6mWvbw0rRgLHytEHtKS
iXaLueflMLWO0h0wQQqJ0WeaA2043i0PYtYjMekRXLbM3FMIIR5TznEAO+Aa
A4NS51ZH9W+o/SlnKdvMZ0PepxJZJmfgMgdVS8vKkiukSoE88hbQib5/u/x0
KsoYJzSlNf104GXDB3zyPzJp1h7pnm7bxGuH6j/nZCVv4SlnUUWvUs1USPfC
boMqPiUVD+gm4w+CDcLKb0Jt0puGmjb6EXI7s3xuLtG45KMUb0OkBRVMpDPD
us67puyAP8UkX0pw8sX2ymc9X1IfXZLdegXHbMMZDgl6k7gWQh+5yUYuW840
s3IGI7r+Vrix/l73G1SH45/7LHurhh9N2KypbLlDX4l5ymvETRidOjnsrZqQ
NBebRm/SPT4/Dfv+JNr91LtxVXXyzpckRZplfRsSH93ouC6TdmwGsjI0VDo6
LBOVWwqJYQkqYwp2qxoVQ13hYxSXjqm7k25yyOIj6uIu6plkZVGGDD7qHkhU
d/dhnPFCZnwwWUz62J6H96zDin1DshKeP6Hj/A9NWK7j29cnf3y9n9AaAeb5
pJd4lWBLtRzW7MXJfeLuHCv3yCEkCrFU8ngjwkRGmiSc5o64YL+Vy6ZzEVnB
kT2JrG8b1B8wEceVT4omkMQkx2wXOcDmSPeuZBn4Z0FV92Wno+SZdfWsYHdb
s9uw+8eZW9/Ud8jppuKnM5d1BLijAjIPTKqQPjGWboo9JrhbnguKvpbhF2LU
MDqQjmG4UTwSXFgcW/NTh8iTTH0Ph3VZ7AiojNxgOCB8CuS3Razj68lAGK/G
rXP1PllCF/kDF7J7TMsh1KNJE/gkCzSejaZpx9fXWMJtaYVmobt0AVW/ioq/
7avtzMyk5B598oJS9valkrPDbTTf0u6zBB8jmhQlNDfAeeFPbYiaihlgPqmQ
3T+WELHK22vJL00K3vQuoUoJ3CxoQCKZ01xUo95EY+I+khulWNTGaGnkglhq
14cgHwONrEBdQcdjlAivH/SoyK4jGpE5most2zuT3vz0K6vyaqYHF2t48jbb
h6c2zYLuDwuZND4Vg+PENG0nNKKJToFbpNUrYOgaYjH3wVgqgQE2JhFncRnU
6z7iUC9mHuIFTiIopI5R9CNaEDG6Icyf7L4Ib9Vnh66SviUII1EnkGY6xEEn
SANa0gp/xqpOy8r27sWBwp7gpFFI7FDy3n+BATscixfs08L2DRMSZaUpssSI
xmL8urkZ1Vg+G/E846EQ9/CvObX42sBFeu8R5m/83Am2AzzY8KQhDCtsllpV
RL+dhl36SGiM4kVsPiQJhOKBleQ4dgnx76aR+FS0XnbeWDFfksAjDu04cxCq
0rkw3VmS5BUXnc1J5pm8+YyTj5lXCEGl5OEFLV2GeAwcCgHmkuKcMncpc6Uj
nqjAsvpB/rdynGh9MlwberY0UseHgpymUtpOJ2YiHA2d0uvtTUWMtXXRI/k7
AlQABdUSAYIQ2q4AyRLALDuCsYh550oecOLBDcIQhbl4DCQ0sEYoINCVYNY0
LJfnw95VMxpPZyGT1Ln34kz7ltC7RL9lGVyE1L+NgqL7axfTG+a+Ncltt6Xp
hcvHY1Lx8ErIxA7xMagavRhrjy342FNG+NCo8lXlf22LaCHG6sN+wLYdFOAn
ZiUs3tyYA/i7e6dC3ZtkOnZH0S4ApaJo6K6vi47uYj77u9R2XGEx/8PZy/g2
o5/IXvALdPu4PmMLwxXVVXfNAZBx4sKxePQYgwbYWwILcGXLzgq6h26b+mju
JZbEuIxUPn9efox/EYUiq0kgoe8wwbUhptjoF9vsqo6IJu/rrsA7lp6ok9Ua
rvfX6/wqcfKNf1HRgXOCWxrzwPdOmtzMqGunsUoLQdMxzM7pof30TT/rq0d9
SU5S6Vx6EHvEV7HEWXWxjlbRiG9U7zD8bVFvG3TwV+udQz/G7/F2Jdm99sk9
vkswJNNDwFdf4maTiaYf1op5OjM/ntV9RyVunn0lKhJRdyq8neIsFPVVE4R2
KEl6FNJPXZGQ0kW8qiNhP1+oqVADTBekWeLw5u3GIcNgUmMT8afyn371seSq
y7hOB9Lr6kOs/AIeCHb2LgY3JLvmXSB/tdgkttk0rBRVzLO35UfBOaXrxHpv
1M/pklL8bv9sFrmAksAwBV1bT/7OEWWUBsZt2tvlL6Zb9B5WteSddf3ODoyk
Cv+QpjjEdLog0HCS+6WFNfbqem3lK0jeQ3a5m8M8vchYLqFR6V60g3OL4OTM
gyztPpGEPQI4D5BMvSJCBxnBSTV3yq8Ely4MHUm4MBhJzJhLu++UjrCfG/Pl
Hajm4/p1Tz/PPn1m1+anf6yyHnnar9PX6XBGf6+q7nJpoyJiUq2Xqhhdoxbz
uSx8dVMvNB444QJTXc3njt53UDD6wCqp65iynvDdyWyS2k+DhITB5IWAE5OJ
lBeybw5mMRBIhPqhWcBi3HKLZvtoJgS+iaUPbiMlNldiklZaZskOrEkJOtoV
mjUTVWwiEMhkMg2RwAQhR/W44pF1+SqGUzFCuTvNwY3bvNobj//vWAT5/xfM
gaEeFqeud4BmTcgVMU7l0tUZRy1RY8s2uAiouUdpjelRKNU3qx7U+B5zR9gi
KjvrZWiOg0GLlpsWzmpPojWfW8/HjciYIUpILoGqlEiqRYN38hp/I99+QAKx
jbeDvIrISbdUlZec53s4C8tldij1k5iytKo8B0npU3yjWiUGhPkJSne2bQ7W
g4BC4Tpq0okpREck9tIQhXmAawUXqgTJU+ZZ9BLHAnJ9nE6hgCY52CbJ4IyD
hQMJuglQLulxWnR0GC9xzCVPz44UdtIxQRqpu111Ncl3LenJHyRa3EvGgXvH
yH0ja7RAODcR0gyEcRgbKXXlggjzWcTyX0ShsAZpDOXlFWbSdBxQa1B0R3J4
J5Aw+z/vVVDEILiuNzgmsi3kt4ME5JAkIHtEJUVuJrgkS8s0ylgWAhi7mhBm
TkUf1MHUnz85WvurgZoR5xDhLWVNabAJLgy7KKw2ybV7s2AJF8OmXVF6lS7m
yELJGIZZ9yO1XZhNTvAvdCViuwwCWZSCttFKryAJydPEM8dOV50dIcK9obEo
VUUH1GLFdb5zzIG9yJMW4eFjkJkxC3N32B1J4Bi6MBHR2j8ZC8m0dkvRgcom
xtin2RVwzrt810owPuVFXElCfBe7kaATExU/RJ7JYWWBVqZHDwlIXnq8cvdQ
Lyadnb+6OE0iTJycw5nYATZqI2WXMePE0lwvrpMC/MQnHRGdJS2NsxmtYAxE
QbMlkMDhCcPUQ86lwxJrllMaTY1dRAYvWvIdxbtgbZQUN4tAmZi3Kxie4p3Y
C/MyhOa5YzNJ4kaMcxLXnjRQS7vIZcfrtRmL6PbFy6y5GCluaQzPhiQzWYNu
alj0A1H3RBYkNJMvlxQDTcU6ZzMYHX36qil9kg+JZiblCWaHjK9yZt0Lo1nJ
Jf3CY0agJS3YZgCSEsOLyTjWxNRhZ3gEjhBBILH9gQJt+DxVyk5O+yDyO+Lx
Fkck8X8sbleYj+AKI89T0I6kg6rAA7TpR1WRXlJ0Fo6sfc7XApH6pOUNrtVX
gmPk3UqrjNCz2YAxZV0hhNMjyvw19Plr60J1GOvuYr7S6M3WOLO1c7JZ5lbJ
LhkJ07QYDLesnxoxDcloHsWmKYav8/BnLvr9HjkTjLGmsl8ajCoFRfELgyPv
ky+s+5AP0PsdKVcqQKIDzxBgrENnMHkgDfdoO8gIHMn3jFBFQ7U0TcIfDf0z
TJ0jQQioEqsq2t8ulw4KE6Jyc4dLZarS8FSoJyUMcMVi8JOlQcQ6rCW4in2S
HeIhXFQw/EAvxcQTS0WS+KzHrr8HrCtZJphw68LyXnJXgyZVbUkijx5j1y0A
oWexgVRpqEHCfAIXCLQpP+IYrp2W8a6iMSTcFGxZ2QlZ7KytwDTEimm5lTqC
Zr2y8hmblFohnv1upAGb5VeoemOcNvv0mV2rmX34J9BnVj1bLepGZcxAUVjj
eNOdcRyVWWmdaX1ea/FRSFmHAwt26IzcXkpxw+PnowcXQwowBih05MZGnwCW
POwS0DOCy2cDfkU4Tz0MyGo38hHmPLEcUBZwl5cdfxJLAtcFGvZPHkq5qGQV
gjG7IWOq1Kw6jtUIhyVnALDiinkAo/Zxq+jxhmse4soA50cMjaC2vlYdCWTq
NfZVpZBtKtgiKn9bVIMrBSd2RchDiO1IC/C9IHXHSCakJ8NoWRLJEyxG9brW
PVdDq50NoylJpOeK/pjWkIIf4ebJwekltlG/jKa8VfcS1eWL1XIkCK2GscUW
LnznNP5e0h9IrShuasIQZgilOEM3Ez+iAiMmywMqKiHm2Z+tSYlCx6XrMmuN
grRubE8aOpXKVZieZROc54eVTHuXAFk42uaWQtQZbL0zkfX94DJ2PNzERB0K
k6goIIfVnuLoZlCEslgQTDa2H7Ksxk3nNYYppPV4eJPajwK0UlP/vh6vcv7M
PmJrZEpll+yc7TlcD8zOMOckvkVnIEL77hm/xGMk22u4gL732y/Y5WlvjylO
QL0N0IlB1RjTUNAWMe8krJsNBo9nbHvU4iK6rIELFAQYHysnelCWnNTHDxH7
Yliua3WC4I4QMpHt4gZhSxlrGiwO+M1NyxpQ/AMyYI+rTU7SVdm0ToUjluzR
pVkxyrB+Dy0a06OAMstywRlKtEVSxO/QgpQZcdpq1ItFDu2s0Ebbm8SzZke9
j17N3v2ocoydc0sT8sxajj5JGQbv5PtCPvFFF2wNjlOMqO++92+bDeUne/TH
8Op1RczX8EvBO/xFXXWIcN0e/rr3hIaEA/B3Ru8/RhDOnUJJg9Ughhtn9Ear
LdF73ETS1QcH0nhTV1dohqksfirakGMHjx4O1uREURhRluK+xj/GZq4w+xsM
sR3c0sceYN3b80M6zr0rHrzq6UJ7I2wE3fgiFPuKFMhQWT8ygZALD3ChWb7D
vhUvAyxaTZAg8CAzwx15GvXAtg9I7vBeyHUlDroMjwpmlTh8Svg69wXJszXq
9E0wwDz8i0tge5xAFlJUkmDXTP01lBZdAnV2JjwFpDHxJOZqj1Oxq6CZcaSr
HLESB5hit2iMo/q3baQdKdBMeBIy6DgqAimA6TQ7ecWAUBjOxR8Ud0o/thNo
QW7rpkYZ2vty3ZEI8xQ87NjvTNJOOh7pnj8IM32H6vlPDke8gO0h3/e24kex
ZXoCt6SA8jKL9HxIWA9k8lqr8FhjZLYext8iK2SN/ZzQ6GnQh5av4bsVNfpd
OSQ4cnS1Chcnx2lgNY59RaeGfbpvSRzfWfpaOjhr2BJaRfS9DVe78fXBX8C2
nqq0Uu6VZ+jQQw544El3OBidXOpSYw13FzchBqBGZ86bnwAZhQUiWbLsGqXp
1ClWsSgQGGl2cfE2W5UFOkLpUooiF0wmmxZIaQqcmi5fsE3xpsGiBvaz6ObZ
B9xGhnxw1TUk2GmqqkzAKS8F8HLxkQAG8ihDSNXP3QVx1kAkq2K38q3GuS4w
QiRoBa7uxjEnxse1tAvtEx0lhlcghEuShU2mC+s5WrzAfvOxs6zBrJybNRs8
flzIsmT0EnK9BtImkJcU0nHRGZ68KG8pIYN99DjaiCJ45KpJbMyj3vuWgJe7
bGxbkP1yvoMzPpFRIh9YNvmdaV6jC76zwCobxHUTm2SjrdliaMi2Om6hXu6U
OAnOo5hrl5SQuOfzWv2qWCMJ4/CzNtRbEoVhlbd+0Mgz6X5eFul9w4NCcska
Fk0pUWC7eUDo5Je7MPhOzGnq7cnlLtJD0x+Hi2O2Tp49ZlnWWIa+K7FK674g
49SUwQIbIemEAuAsLxHS/MryJMnXT+IQHQWwbEbor/Y5BTJpv0VXB09I7Vw1
7T1uIeda/fQZxZES79C33NIdFL5q6U1i55GXkpbLYl3fTS20LbeUXfuUeUtu
ZxJ5m05dHHuk3jzLvDez0O5vieYYfoEKy640TZbESyx9HmIInkrNWgJKJBpf
5mtsZofSgmOVBKasOvahqvMG1eTd/tEj5SoGsTls/6tCHfR9Isb6Xo3YNFSn
r9H3kxpJfMrmY35EOOwFd3UgqRlZRUxccjosQZjtoiF8DQsu2BZeYI8ZugDF
XZKCdTdcrQBRg3VHrm1s3Let2C7BYEK97dyixkeQi1O38ep4ZxCFJLZdqKsx
P5V3wHLeXKItwZfxZ/g4Z9e9YSJNxbrOg2N3pDP2PYnTfkhQbZaP5YZZbWIj
qgQfm2ksyNx/ZujyuRwUFF9gATVVsizmqW5pFpNyfhRDvRvz7kVCEN3UEOHE
EbJpdTLpVx/4D4bFdQH64Yi1bPfYx1JbEcRcv64JEpucAGOoxAjOYvDuRKue
RSMMjD99NidzrNs25uoS3TyF+kaQZjDJa+50UrPKUDnR6lza8U2hRZq96Q4R
W1ZimIZHL2y0efZtuh8x2QHvVHlrSg4SlKwVXVBbVNp3Jwxm0jXl1VUhML29
Lcd9QtAEOs1lp74aPmyP4tRCeJvyul9qjsAnMZf17PWrD+/evX5/8vqEcETb
wWHVe4g5MHKx40M9RstA1xQZ4X0RhZx1RgKdpC5TuFvmdsYV6cfqCm+YlZov
C4rDUQO4/LYulxzSjxzQCRFRBpOs+aIfCNGexf7SIRjRpGV/1XXeXk/GkGJD
VGij2t8j9Ddnf375AlNgLQnZcKicesh91cuiW80ugTSz4nZTzVBTmi1XMzhP
pA9gkeh57JrCUkukY7pFhB2LeY4Ez0INP5nQxgqQOOk+TRPznlNZXIla0p0c
jL9CI4FSqRLyG/JL9UPl0QXqZVof0CGuyhYSbCGIJCc6DnZYV+4mPoKbHLMZ
OSo/pqd++sz/PNvYCD8lvrmoDfSkeL6mxBzrS2ui01ypmowXwxDeKW7PlfvV
O65/ZdR6TSU0LyErVhRudqrPVQ3KTxJKnnLrWBGqke6Cz+qa28kSAuHmkCUv
paA611heiDCSBcaUJZXUbDmyvDfD7Siapqadj72jbIf2eCEsH7hzBT1C1VIr
q9Eznhk2rR46pb1BLjDivTqnctiP/OPYNOOpSeYSlLFFldPYCeccpN1Ikspp
57RuOzRmzBOvZ0Y88hgPLtkMwb9iBvH4fAh/DsPgDCCJi5mqHpLsDOUldmxA
qdlGxMJ8N5IAsm5yiu/5mDRUSYdunYiEIwknuhBTgT8T+o+vVJ5XORyFO8y9
wRSy5WiuACcSJSkg3tOc5hXF1EZmBsNecfSSy4AUm+cnDG+6p4kZlpiLIts8
SKjg4jyD+SUiEU+FI+IG6oexkuxz33xbI9XUWFDd3HBPwp6ESOVH0UH1swlf
IeaXXKS6GC3G9xpMPNbOd45XvGtHVxXx0UaBzTQ/bd6j9DDisclRRokmRMpV
AqJspUGYDHCdJykKXll0fcRq0ar29RPzzfiCNeNLE51ZxnHFSJ5mR/WzAlc9
VTe4JKzCjHgPbEkRz7HGhp3rcybOQ8m3CZK37c/1xFoyuJj0ZJ6d+4WnA0aA
sZ56Ptq5kvY5ZqcOQyr4AJ5gH3nZ363hN5zhmCMF52hktb5Po4hJ6UIfdUXJ
B8iXy2DJQ4ZgT+1h3EnptYdiEJSYLypdoWiLOaeXQ5Zpxp01vffoJ3AyP2wU
9oNaRmFTU5mlIh7HiKFql0U/scWjwCTZlCHJXuLiiMQjZQl3ipGRSY3YSYlu
YyxXUUsRpwfMckl/mEVFjVQk2u570mQ3IoEYNpjH8MreZGBVc0TVF3y5W24L
DpIa4PoV3MN6SQNQJqetVHiA1H0k4TaHIpNTQ2BsEs/Gt3lJbCqfjyuXCOlK
jmLDFnboSv7Cu/4inBrGE/P4KTE0OeVGJRW1Jj6cZ2lvyLS7K5YM0VjsW3Xf
RD6LdGjyFbXMqsVO52E+T9KAKH9q6deNN1Msp5TP4iH6c0SP5avf33E7zQrE
0n50bflcm+7B8GRuJtgaSSHTulh1vtfcwB1U/MjYmZRUJGLWdp4pSp1nxxVR
RiBT12G0drGq8Z43HGuZKQMV3iM1T175TjOO6XIp4Smue1F7B7HMGacsco52
0WGO6oSSVhAO4He4PVyCUCtmyMi3Bg01+avOHLwBdbLLNZEqEW+cmowcSrl6
chzaom9hrcubshvMoC/fO24OvxE4Wq524EyBRw/D6Glqf7HjY+NbIWot7Vc4
ZmTn0asu7BK/ObNv/iSdtIo+g0TzNZv0J6iD7eeOju/19yNIvJ9ZGbrfx+jF
rVmVtbaxgYLpgm0/q0MYZNqcWcAE9NJ53SGd+mApne9yvYcpOyZYr4LdkDGJ
YLyuAaGfL/rhMWvfpGkDMZel4r45/E3KGSBI2vY+iYKHR7OMcwnMDm8TXdmR
VRufdmQbuf5DBsi8IKfoM8fuy05dii1VaXq+7USAgpWLX5fr0cYPXRQHcbTB
5gnrUjdxEsRADudW0qvQ+KXXDmnH7WBBD1v3tACPqzF0QDodbu8ibxhqGZTK
CrewKSi4O8dCX/L08tZSzzneYSH7KKOnCzeIWATUGqhR4JI6stnRK9uWap0r
6oGZagOchktSATPjokvcdayJjmHDxE7jjUP3ZfRZK4h2ooIU+9wvfBWsctj3
luZOR7AEzn1mYDCq0ZZZBwfaKUccwU4GcxTq4I0jX0jjIk+uRFiw3beVB/K9
bNCHU1dXdS/LQIrOKYcARR7FlGReBGpmVT4y61imwe4k507z9tpJ/44zC8ci
i8BokDCyrpSyUXy9hDW/Jp8My30tO7yH2wTNc4n8GsfiOBVBI7OvuRfvMncb
pVwoV8zlw/4iCTCJ3aR+D/Fc/UbolhDJzHUcWihL96hMYjMRFlmb3yxNNgMZ
XL2jgT+NzMxnyrhpmSdJAjkuwEHeyXWNAoDjjikECHsp6UBSwg+doKTmR5Pa
OAajvONjUWxav4dYKSDtebA8Il9iBh0X5VlYodXcUFxrLMxybBgYR70uF2jJ
rsuly0402Ok+fuEgkG06xb0cj7ct7As86wsWw7tX+v2PRqI52nxPOLo32/9e
TNqCPr3ShR4hNfqcjUefw/8/os9CrpkGPJHp0BXHl4DEowPKGtSmeu6DjZ9J
ZOZHwlxNegpSZhqpyzBYrGcLrrYt055eUiLuddIBs+/fiyC5u4kYQu8KZbri
FWBn1n73BUnrSwGS8rcs9A36nprZF6FRf+b7E0M4YbCMS9ibo6yfwOaaHMix
778YfF7LyNs95jn4ruUfvK89tK+aDHZovOJgVSQ5+yx88HZZhNKFRJKoVcki
6bdvcz87IrTXuRY89DbxvsWSfUrdyfzmSsLvtyenv599+W+nfwFRly/5uqDs
xUEPGMxIi9gPgWr9OlSGfhWreCnaz22ZB2e7KTs1SHh9PvHIY/ayebIN+v8o
IBDCvaszO2qPv4nVRxyGnnRLxWGHR3NI+ug+c2kiUfbET83Zwbnr9YzWlFWf
iZcYCFRMiQG2yB9iu4DJRhlLcv/oulKLsah7sRSu+o1LJLFG9appVMqWxII5
e0S1Fl/EEctvz6WpKMviys0hJqpKBSmfUu/VDxp80ylok6roEHMupEiXWGlQ
xjLeYhlw2ZTkgWVV1k79R6pzHZ2jyJHKHV9OhAz9pM3SI+3rNkpbFM5J5cJZ
3oqQsqADZGtpK24DFM/bpEf7oaV1W+kySO1piJmsIzkZ8+hAH1ueRo5FxSde
PCiK88H6IKg40U1AWduEjx4DOj3EhXxPPqzopOTgkCMvnYVif27jCW6XyO1l
FRcKnODVNXTVztY1d5qxS0mGkuRf2nINPkYXYr3avOBgzVetlfvXlQIHOElP
Qt1jMo2DvFd1chUsDr3PT+byfpCitbSmJMcvFbPX6y0rtI0PKB/AO6sSG8H2
EOl96ltp8OsaL0FHApbFpSDtsuV0DhQRmXw82qTEUjroJmbSqq6gLifFj6Aw
rXMJWWuLpk7Mt+LHa2BVHR1mxoDiIch3rYAF0kXXJYD0goSaanRT/sg9wDUI
Z6yDWQThQ96VLcFQJ30g+oEvaXMTHA4T3loKVw/jcDa1soqch1tqkyFn0GTD
WJnvrmIvgwrPfmJuukymW80As0OcgaK6LcHmjZHuSH6mJeP1UOliUTk0RcU2
rQqtOeLkorY/zRX2JXBfVMgwZBmrpBdJrwCGByPVAldPUit9ROtf3ejXpLlx
7ZV3948XOcCZOih+7PAorHeHSV6cAXIMfJR8tRT5r/JKrcpOLLC5LlcdR4ov
t82yoP3quSuXSUKGq3eqMPItnJcngg6l0EufdnyP8Wpd4YeH1mKoKkV+0c7U
/XKj0HGO/z73n1s0bYxbN9vb7ii1U8V5gjPoQSfgKLO7gi4wF9EqLyWbKBrx
0wijQbXM+U7z6O6EA0T1l07iJk15ILNArVo8bEnKyhKZwhWDXCGfydsSV+5H
hVW9viVL10mPafYzGpT1uOKOWcnRT9QYZs1UqydE14K9eZYmorFj1YRW3B3O
BUX3WdCy46nhbkgfBopMAQWrPI1AOsbnsyeptA8kqKmyVCRoRc0wGqKqtIrv
MtTuel2kgg6YVB2ae9T3GbIFponPHRXcUTYWMxwgtFeJ7DYhkyfxA5tdEoCE
3WFzifpME9+MUgdIMDDGCae5p1z3JBVwMS2RAB7uNJ9vz0kRdZOFyc8dKKrk
QYCAbXPJkv5e6YPJ/t43oZXvtkE9Nans70SFH03Mu5+boaqXuctE7RnPFnHn
O0A6u+thyRcmQSUoW09zlIcEqtJbDimHgfU39axG1310hfrRaIUk7djWmPpT
kejCtLqy5QvabkstRSMScfMQRgOVbmc1N8mBdaoSoVRW2DvBe8CVF12ChoOX
OR4/jVOg1hmNUwpNEg+hwbXAMfG3c97Ma8HH5FR38twqzrNCL4Ww14/TuoSE
XwTKxhhRwETXu0A7YGnZEV8uYuUBOZHtSbsKcT3nEpTGRUXcwjkFS/FbU7pY
nHzLciDCnUkkth/65bZMzvqgkuBNXlJ0NDnNrYLgcU4saquq7HNXuQfcUuMo
O05vQVeHaAuTI6n/d1qR2j33+Yj3WEJcLb3gagh9Zo/qgOiT+6xiZGjGLPtl
fkIsksi5pKdjltYaWyYgslqvbpD9GDe4uwbqtXcBFiL0kqYfLuTQO0PbKQSu
g+yjeIt8PcSPXxX1VZNvrhWYbtOQ9xxDGGXnYPdKAv0rGlBYkOdiveUWwSfy
NWI+Xm7L9VLiYfBbYa1eoZlnJ1tBny4J4fwSf5I+jvgN+tw0G5d3qjgRurE0
LuY+rhWVC3ewB93UebV8TiCKRZ+SUFojKPkscqjr8oqRi8uG/eXkY3FcH2cQ
GyAoFwFyYBU5fOiyXBfjCAEi86fcOJABY4HAs3o1u2QwEtBi0GpFUYFGSQ2f
Zgv3LWYATrUqgSEAcMLkpriibDSyjPCjlJINp2QGemI+mAkWi5ddVECb1Jss
t4yLMzB7Fm7L372uJCYVmAYpNRnSRGpRZXRfu9Sif9zheZZpNW4PAIDPQsA6
Hl5nMT6ZiFeZQuRF9JO7a+zWlZ7u4E630MerNhztdeiXSZd4vNBkyYNOhh9E
t6U5d3qrkQYrhgfD5bIC2BlvcCwLe/Tw4X7PB9OGOxCkugefeBFvDzQI4XQw
yuIK7C8U/uNymu5lO6Q6GpIuhsSoz7bdEEaV82coMVsTATGajuvSt1BSYCiO
66c49SzR4GHZBNg0junQqqSS1H5UZG/QckI8ZMKnAevsuNotMFYkaY2KN+Ba
NhJaNhv9e04drgHLlIK5uMpNzJOM3IdGwmXQcBoosISm4Qq48CDpzsAs/FRU
l0+fXTbtx1Kq235imeZ7iSr0YAjJb3sNRgdtIl1UoiJ3hfL7PmrmPOhUXK5L
2pg0qVIoOQXWILUvoz7AioJ3vawE9xGjo6jYiO4HwxJX4q7d/uZQkkiFAFN1
U/49rWUdmWdCkmSagquU0gX9TDfwl6locaA4fJwx36MTxjqVvBpfkwab/aen
RuR3x3/pfxg/RRjo5yez87NTrMyjbwaD1Uv3C8kCz3FNUeNSyVlh4SgyOmEV
hV5nmXc5qxyldJdpC/1b6hGNPXJAZp+nPddS/M5ol1sbUj09+hB39kNmky/L
GlGnr6N7WXyn4u4TbuBaDpTApu6qdHpIiIZdZagbY6GPrDsKZdWa9CAkGy7l
g/6m4R7w54QgA91Ow0ky4LCMZGxIGeyyqe9aUlfUEz/o1UtoDKBQhW1l/h09
MzUjxVtT+cw/QWYPoZKQ5TDNHIRbqQlahTn8DefXNdbeXlaFePLEGsKTPwct
3eUNOYxQvHsIM4kVV7IysdkZBibix6jGDnuIdgFwd1aZWgwJrGciiDwQJZli
8lnfxNyYTCYIRWUXDiIUWj6+YYeWgbgPtBW0ruEu4VcnzGyN80+y04uz1Cwp
CVG+nmllDPJ4SiIC/XDBVWvNUrLlmTgRjVL5S3ZAO4Ji6XCauPoi70rZOW6T
kV3MWTKCesgQ00R1ITqJdg6jI60f0JWt2Al8ESUvmomfPuHkBs25InC2u2dH
2aRXfm/hrzU617o2WFoSZWYL0Fgsz6UdtiwsYlFbULQwx1OejQDWbMZ0jNEB
h+Txwxmi4Ny080kIb7iXioQtfNF4VyuQrspgHZkmiZWUYmq3d4IBahtDGD1h
ta5rzNeDHZRGxyLF9vdm4Jx4+6ARYdu0BnKYzbgmmvJqO9e7Vbmg6Pw29tTb
Yw7CMl5Fa6+iVaF6o6Y+kYzsB62qrg0hEFeuS5TrG4Z3Ib0HFR9lS9YYKyju
jYmbBGbTuog41pIcgGLYIrDachlDvHj/zs5kgLJN5+DKC+DokJYXxWtIxKsg
JNlHcmCEi06LBGK0bcTAFyFwcQ/edbQdeo4fn6Sudxy5wKsPZ69nb7/GddNu
BhcAIcCFBdYAidHEGM8xjXSJDRuWRhNWQN0A0aVEHlrEBQ8UQnOpNrCOVgvU
qDOGAPv3yirFoy7TncbzBhdYXgmqg8dCPV3g2Ul28Ons61cvH33x/KefgNVx
hqczHVDbmQ0UHX2ZlR3WusQMcAabpoLS0jSwfgOj4/zkHFD+nVoQ1vQEQQ6K
xcei6WZwTm/yGdiK7Wa2rNp2CZpYSPu4xRCoX71cqOSUmM9JjtAb/SMmoXHs
dvR0KWwy3VoPa2+9PTH2RBVFlBzjZafiOYTwT9lr3nSuH1X8dnfGPShcEX8P
5wELqtF6RKcO6Cur7o7A4UQXRR9Clqa2tvm64DL8K/EzoSugoKIyfnsOEzr2
MQbHhuwLcMWL9SrV8ammm8/kopayTYpP5B2LA7MT3pwUt29O8G6qvYp4GYtt
C9OGC0dy8qOmvrP64exgijNgNEAyjmRFRtqptmvh7PJL0NtwPg/+44z+v9Ua
Wx2F1yIRGmZV7oOKuCHE75+DoD5PYxemEdHX87726B0YqEd7uX+AHptthXjH
690h5koShz9Ybim61RWHVLqCl9cQrXvwNyjGPOJuuppEHKU6Atps7VEIj1CV
BD61XSEwW4MwnEkXKaXamlv2ci4o9clJ9MTW+XZu5uEx8PE736HCf6GVIfqT
VpWTOtux3NRVFhWdTn+xuwTcL7mnkmw3Ys7FrKiU+Yumqp2CxwY1BL0iVp4w
eRfrvL2mnAZqH8EmT9AugeyjTjdFE5+Jzz7ue6mSz4IC97ffy19m+pcZ/uXL
7ODx4WQahtUz2rIrO+bZ/Jjh5eunI7pKO+l8Va9vRQtdwfljF5NpK7gBR8i9
vDqDPULvscl0AJM506FxFfFxMNSQKYDKAdIN4/AYD29AL8YbcrU1UEuTtznT
n3Md5IWkIuQQ5pY3i2sYm+ri7yXnnBeog5JTr/U1CnQcLROdTq8/2yzkSWkU
T2pvwTALYgiWKs04dNijljIDKJDhLI20Gplm5cMk6bmHwcWHjFTnxgQVBQi9
KGLuhQdwW7YReMLFhxTZT4D2+Nxi21DWznTL8HTBJ71R6xl+TF5WEKbsoF6N
8BZ0QoDWcZ0v+ywBRtdLo4UhXYN1WrDmazS94USznkfChr51p6wbh6FuRqLi
IzL6q2P/zqHDWWIu7C45yr39Gz2Hqb2WbfbNs2TlBNyKM1Hnpac4sy6mCYVg
19M9R0VLqjofw48QrHQTltaOLTauihokTHHpvUJAc9AEbrDQhLNa4N6DLUU3
+0/0rDhkLPIJjGwBTL3g1ro0dbsHAgg3evcpAz1LTl7e1zNMBxBNQXKBYC7s
AdvDiXud3V1Hd6G/DJfINQqkZ31vrz9O834HKmczcpauYNcUS6JXz9/EelD6
UZmh6R66Dk8Vls1lg5PbUittJiBfgfd0/ufA1kFDf/b4xUPg66hDSX0sLuQ/
nz1+eO4fHs5NPN6m7rwfencoKsQY/8R0xDTJCegWPUYwv3vXwTm6wCWvdy3B
RKGriVtfpftraokbkRyRRL+BwMxIa021Om5pwE2JEyd37BCejV0H0377evHc
gYy62PMaLRe1H0k6ofM2rcbKDrBcoBszM6lEc0sZxE3ZfuR2Eah+Hv6v4R5Z
bPY+3UbQgbVxLigamTzePwVapwcsPNekD02ut9B/75LgConPbn2bUqBHfnNZ
Xm1zCvndxsau4wpeTK7AI90/ysJOfDymo2xZ4L/ldc2IjHvsL9a0kOcm32Ou
oJDOuDh/BVAP9Brn6NAsNEpBoVfXCf/qGP6DivdxdnamtuNraQsq/oZBojDa
9hpGTHRf07liBkoPE4uV/fwSjiDY9Z8+qbqCk5rJoOj9u6btufa4MBRG0L5S
ri8FuzvbkGQqcW85T8eJrArUoPB/wn9g+7IMLIR3/qHN9nINUozGt8t/RI/S
/+Abj5QR75PW8/T5x/o8HmLrNi3uGzov+ZE8nGVfoV5yZDuQ2X8+ZH9Qos+B
otP02P0hm5y+OTnCTPT17Pfwzy+z8/dHvz9//+XEjfG7zPUWPkr+cP4exuAb
lr0XrQSGgV+eChN7o22ym+RFnNeH5gokyd+5xiRZ+xPdJHNDnPcW/PvkahfN
l3O3yjgYGF1Ck+x0CwovJp18oBYffBPgA7ZfOnZKyynl6a+PsocvHj2bylqP
sj+/PTl99fjRoy+OX76Mn3syH0ycO4DrxB25cTykth/JL2ISh31qw5o/0fwR
B3xnOPZ3HfnHnMJ5h/rh36k7MukjF9OG3IiaQGfxBRuCFEfD7R44CZDRsAMH
E3eWt+Qc4He/96Hg+ffdYsPzy7I373Fmtq8pff72tz6F/vY3pRH8C6g03zey
P1BwTs+4i8XFf154Go7yvfA/MRP8Dyz1/OxP2aPs0W9frh/xf2SGSKHJJKUe
MXtt+0JG8dZhYFiJgYmJ3zq/wWTow6tl/uToi5f586PV86I4egj/OTp6+Bj+
l/75/Cn9K38U5/zM3Xq55sxKvW004NS81q/plxQQvhZfJHd/rbEVSHttj56z
Xnp0D0cdu+KTaeSDA+b8CtlpfJcFzqej7LMxeZd1Zbcu/vC5LlXWiMfcRdA/
/0kRQjiNeKSHHolVo9imJKE2HfrtwgC3jMK7LeeTk2o0J+8Zg8KST5ODAr10
TPrqzwvQ7ODR/JDIRd5+8ZvQrmBaKLpIxUIlsz636iJSpZOl1py8gQiqMNwl
cvhWgOdQSuG8QVQcc4m2MsKNSgzqdik5gKbJx1wCmiIvVLL73TJ7Yqc/K8/J
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

-->

</rfc>

