<?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-06" category="std" consensus="true" submissionType="IETF" tocDepth="5" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="BRSKI-discovery">BRSKI discovery and variations</title>

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

    <date year="2025" month="July" day="07"/>

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

    <abstract>


<?line 107?>

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

<t>This document does not define any new discovery methods. Instead, it solves the challenges
of announcing, discovering and selecting an interoperable instance of a BRSKI responder by
defining a data model and simple string based encoding for BRSKI variations and by prescribing
how to encode this encoding of variations into multiple pre-existing discovery mechanisms:
DNS-SD, GRASP and CoAP discovery (CORE-LF).</t>

<t>This document also defines the procedures necessary for interoperable announcement, discovery
and selection in the face of redundant responder, making deployment more resilient by
allowing easy and automatic redundancy.</t>

<t>BRSKI Proxies are a core element of BRSKI. This document specifies how Proxies need to
be implemented to support proxying of BRSKI variations, even supporting possible future
variations not in existance when the proxy was implemented.</t>

<t>Finally, this document defines the IANA registrities to track the definition of variations
and their encoding and hence allow easy introduction of new variations, support of additional
discovery protocols and even discovery of additional BRKI roles (such as MASA). All with
no or minimum additional specification requirements other than new registry entries.</t>



    </abstract>



  </front>

  <middle>


<?line 133?>

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

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

<?line -18?>

<t>This document relies on the terminology defined in <xref target="BRSKI"/>.  The following terms are described partly in addition.</t>

<dl>
  <dt>Context:</dt>
  <dd>
    <t>See Variation Context.</t>
  </dd>
  <dt>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 the context of this document, a type of entity in a variation of BRSKI that can act as a responder and whose supported variations can be discovered. BRSKI roles relevant in this document include Join Registrar, Join Proxy and Pledge. The IANA registry defined by this document allows to specify variations for any roles. See also Variation Context.</t>
  </dd>
  <dt>Socket:</dt>
  <dd>
    <t>The combination of am  IP address, an IP protocol that utilizes a port number (such as TCP or UDP) and a port number of that protocol.</t>
  </dd>
  <dt>Service Name:</dt>
  <dd>
    <t>The name for (a subset of) the functionality/API provided by a discoverable responder socket. This term is inherited from <xref target="DNS-SD"/> but unless otherwise specified also used in this document to apply to any other discovery functionality/API. The terminology used by other mechanisms typically differs. For example, when <xref target="GRASP"/> is used to discover a responder socket for BRSKI, the Objective Name carries the equivalent to the service name. In <xref target="CORE-LF"/>, the Resource Type (rt=) carries the equivalent of the service name.</t>
  </dd>
  <dt>Type:</dt>
  <dd>
    <t>See Variation Type.</t>
  </dd>
  <dt>Variation:</dt>
  <dd>
    <t>A combination one one variation choice each for every variation type applicable to the variation context of one discoverable BRSKI communications.
For example, in the context of BRSKI, a variation is one choice for "mode", one choice for "enroll" and once choice for "vformat".</t>
  </dd>
  <dt>Variation Context:</dt>
  <dd>
    <t>A set of Services for whom the same set of variations applies</t>
  </dd>
  <dt>Variation Type:</dt>
  <dd>
    <t>The name for one aspect of a protocol for which two or more choices exist (or may exist in the future), and where the choice
can technically be combined orthogonal to other variation types. This document defined the BRSKI variation types "mode", "enroll" and "vformat".</t>
  </dd>
  <dt>Variation Type Choice:</dt>
  <dd>
    <t>The name for different values that a particular variation type may have.
For example, this document does defines the choices "rrm" and "prm" for the BRSKI variation "mode".</t>
  </dd>
  <dt>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 such as a Join Proxy or BRSKI pledge uses a mechanism such as
<xref target="DNS-SD"/> to discover an instance of a role it intends to connect to, such
as a registrar, it may discover more than one such instance.</t>

<t>When an initiator uses a discovery mechanism such as <xref target="DNS-SD"/> to discover an instance of
the BRSKI role that it intends to connect to, it may discover more than one such instance.
FOr example, BRSKI pledges want to discover 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 an
interoperable/best responder, the service announcement mechanism needs to carry the necessary
additional information beside the service name that indicates the service/role of the responder.</t>

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

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

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

<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).
BRSKI as specified in <xref target="BRSKI"/> specifies a service it calls</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. It is commonly named after the role name of the responder,
such as Join Proxy, registrar or MASA. This makes specifically sense in the context of
discovery, because initiators need to discover responders to establish the network connection.</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"). Todays these are based on whether <xref target="BRSKI-PRM"/> is used or not.
Finally, and also independent of those two options, the BRSKI connection may use one out of multiple
different enrollment protocol options.</t>

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

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

<t>The actual choices for each of these variation types are hence called "Variation Type Choices":
"prm" or "rrm" for the variation type "mode". "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>"BRSKI" is the context covering <xref target="BRSKI"/> connections pledge to Join Proxy or registrar and Join Proxy to registrar
connections using TCP.</t>

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

<t>"BRSKI-PLEDGE" is the context covering pledges using <xref target="BRSKI-PRM"/> for connections
from Registrar-Agents. 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>This document does also not introduce variation contexts for discovery of other BRSKI roles, such as discovery
of pledges by Registrar-Agents (as defined in <xref target="BRSKI-PRM"/>), or discovery of MASA by registrars. However, the registries
introduced by this document are defined such that those can be introduced later as well through additional
registry entries and specification.</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t>For example, <xref target="BRSKI"/> specifies the empty string "" as the objective-value in <xref target="GRASP"/>
discovery. Because "rrm", "est" and "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>Variation strings may include additional "one-off" variation strings in support of
backward compatibility when the standard scheme does not work.</t>

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

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

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

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

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

<t>Differences in the supported transport stack of a responder are typically included as a
signaling element of the discovery method: Whether TCP or UDP or another IP transport protocol
is used, and whether the responder uses 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 dcoument. All that is needed would be to introduce appropriate
registration entries for the registry tables specified in this document (e.g.: add new Variation Type
for transport and choices such as "coaps" or "quic" ).</t>

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

<t>The following subsections describe requirements for resilient and scalable responder
selection. Resilience is supported by automatically selecting the currently best available
responder. Scalability 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 do 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 or context.</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/unresponsible
service process will not be reflected in the service announcement setup. In addition,
caching of service announcements, such as through the DNS TTL field are a further
possible cause of assuming service aliveness that is not correct. Only actual
connection probing or other similar tracking can determine if a service responder is responsive
to the level of accepting connections.</t>

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

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

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

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

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

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

<t>Replacing to use 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>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 superceeded by better
recommendations for more narrowly scoped deployment scenarios.</t>

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

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

<t>A Join Proxy compliant with this specification <bcp14>MUST</bcp14> support announcing its
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 Connections 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 registrars 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 pledges connection to and from the respective registrar socket.</t>

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

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

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

<t>In the implementation mode "best registrar selection", the Join Proxy creates a separate socket
for a set of all registrar sockets that it discovers and that announce support for the same set
of variations. It then connects pledges to the best available registrar socket from that set.</t>

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

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

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

<t>Stateless proxies can not learn unresponsiveness or unreachability of a responder
through connection attempts. Instead, they <bcp14>SHOULD</bcp14> perform a stateless responsivness/reachability
check for each responder that the 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>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 to use 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>

</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 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
can not discover, select and fail over between different registrars.
Such proxies in name only therefore do not share requirements
against discovering and selecting registrars described for the prior specified
modes.</t>

<t>Like other proxies, proxies in name only <bcp14>SHOULD</bcp14> nevertheless track
aliveness of their registrar function and withdraw its service
announcements (both as 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 BRSKI/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 cade of allowing BRSKI registration in a network
with many geographically spread out sites such as in enterprise,  industrial or
building construction environments. During initial bringup of such sites, 
Internet connectivity may be non-existing, or intermittant, and hence one or more
local registrar in each such site is higly desirable. Such registrars may of course
require private mobile network connectivity to MASA, or rely on out-of-band provisioning
of vouchers.</t>

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

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

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

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

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

<t>Pledges supporting BRSKI-PLEDGE <bcp14>MUST</bcp14> support DNS-SD for discovery via mDNS, using link-local scope.
For DNS-SD discovery beyond link-local scope, pledges <bcp14>MAY</bcp14> support DNS-SD via <xref target="DNSSD-SRP"/>.</t>

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

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

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

<t>Pledges <bcp14>SHOULD</bcp14> support to be discoverable via DNS-SD browsing, so that Registrar-Agents can find
unexpected pledges or can easier enumerate expected pleges, especially in the presence of multiple
different subnets and use of mDNS. A pledge can also only be found by browsing if it is not
possible for the owner to aquire serial-number information of a pledge by the time BRSKI-PRM  needs it
(to create a service instance name).</t>

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

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

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

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

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

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

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

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

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

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

<t><list style="symbols">
  <t>If browsing of DNS-SD service instance name is not supported, Registrar-Agents would have to
always (and mostly wrongly) guess that there is a clash and (mostly unnecessarily) search
for "&lt;service-instance-name&gt; (2)".</t>
  <t>If a clash exists between pledges from the same manufacturer, and even if the Registrar-Agent
then attempts to start enrolling all pledges with the same clashing service instance name,
it may not have enough information to distinguish pledges other than by the randomn numbering. This would happen
especially if the IDevID from both devices (of different product type), had the same serial
number, and the 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 numerica 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 to discover, but in BRSKI and cBRSKI
it is merely an artefact of DNS-SD encoding: Unlike typical user-centric DNS-SD use-cases, there are
no users that need to make sense of the meaning of the service instance name, for example to know,
which printer to to pick. Only operators may need to look at them for troubleshooting.
The choice of instance name (the first component of a service instance name) is hence arbitrary. The same
is true for the host names used in the DNS-SD records for BRSKI.</t>

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

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

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

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

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

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

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

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

<t>Target host names need to follow the requirements for host names. By those requirements, it is not
permitted to use ":" in target host names, for example as part of MAC or IP address based host names.
instance names do not share this limitation, but it <bcp14>SHOULD</bcp14> be useful to pick the same host name requirements
based encoding format for both type of DNS RR nams when using encoded addresses in them. For example
by replacing ":" as commonly used with "-".</t>

<t>If the responder needs to indicate different sockets for different (set of) variations, for example,
when operating as a 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 BRSKI/cBRSKI variations" anchor="dnssd-example-1"><artwork><![CDATA[
# BRSKI
_brski-registrar._tcp.local
               IN PTR  0000-5e00-5314._brski-registrar._tcp.local
0000-5e00-5314._brski-registrar._tcp.local
               IN SRV  1 2 4555 0000-5e00-5314.local
0000-5e00-5314._brski-registrar._tcp.local
               IN TXT  "est-tls" "prm-jose" "cmp"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t><xref target="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
support Service Instance Names, see <xref target="I-D.eckert-anima-grasp-dnssd"/>.</t>

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

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

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

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

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

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

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

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

<t><xref target="cBRSKI"/> specifies the use of CORE-LF as the reference method
for pledges to discover registrars - in the absence of any proxies, to allow deployments
of scenarios where no proxies are needed - and hence also where <xref target="cBRSKI"/>
is not needed. Because BRSKI is designed so that pledges can be agnostic of whether they connect
to a registrar directly or via a 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 assumeption is that
registrar will not necessarily be link-local connected to proxies (this may be different in
specific deployments). Even though the registrar IP address is hence known, the reply still
needs to include this address again because in the <xref target="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 was is specified in <xref target="cBRSKI"/>
and <xref target="cPROXY"/>, except for noted exceptions, where the requirements
are narrowed. This document does not specifiy how to discover
It uses terms from the ABNF in section 2 of <xref target="CORE-LF"/> and from <xref target="RFC3986"/> (URI) for explanations
and relies on the following template example, <xref target="corelf-template"/>.</t>

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

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

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

<t>BRSKI responder sockets are indicated in CORE-LF as a URI-Reference. The URI-Reference <bcp14>SHOULD</bcp14> be
a URI with a scheme, the 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 Variation Contexts" registry table <xref target="fig-contexts"/>. 
A brski-service is a string without "." (single component string).</t>

<t>Discovery of registrar sockets  by stateful proxies uses the resource type "brski.rs".
This can be used in conjunction with any scheme: https:// for BRSKI and coaps:// for cBRSKI.
Stateless registrar sockets use the resource type "brski.rjpy". This currently only support
the coaps+jpy:// scheme. By its nature, it can only be used with schemes that rely on UDP.
These resource type uses are no change over <xref target="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 Variation Contexts registry table for use with CORE-LF,
if they indicate a service, or be specified in a BRSKI specification if
they are resources but not services.</t>

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

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

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

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

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

</section>
</section>
<section anchor="registry"><name>BRSKI Discovery Parameters Registry (section)</name>

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

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

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

<t>Experts:
  TBD.</t>

<t>Reference:
  ThisRFC.</t>

<t>Notes:</t>

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

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

<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 Variation Contexts" anchor="fig-contexts">
      <ttcol align='left'>Context</ttcol>
      <ttcol align='left'>Applicable Variation Types</ttcol>
      <ttcol align='left'>Discovery Mechanism</ttcol>
      <ttcol align='left'>Service Name(s) / Transport</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <c>BRSKI</c>
      <c>mode<br />vformat<br />enroll</c>
      <c>GRASP</c>
      <c>"AN_join_registrar" /<br /> "AN_Proxy"<br />with IPPROTO_TCP</c>
      <c>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>

</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 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="2024"/>
      <abstract>
	 <t>   DNS Service Discovery (DNS-SD) defines a framework for applications
   to announce and discover services.  This includes service names,
   service instance names, common parameters for selecting a service
   instance (weight or priority) as well as other service-specific
   parameters.  For the specific case of autonomic networks, GeneRic
   Autonomic Signaling Protocol (GRASP) intends to be used for service
   discovery in addition to the setup of basic connectivity.
   Reinventing advanced service discovery for GRASP with a similar set
   of features as DNS-SD would result in duplicated work.  To avoid
   that, this document defines how to use GRASP to announce and discover
   services relying upon DNS-SD features while maintaining the intended
   simplicity of GRASP.  To that aim, the document defines name
   discovery and schemes for reusable elements in GRASP objectives.

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


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


    </references>


<?line 2150?>

<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:
H4sIACxGbGgAA+y963LcRpYu+j+fArsccZrsqSpJ1MUS3e0ZWpTbmtGFTdLt
6eh2OFBVIAmrCNQAKNJshc+znGc5T3bWPVcCKPoynr332TEdMWORBBJ5Wbnu
61uz2Sws61VZXR5m2+5i9jyEruzWxWH2uy9Oz/7tdbYq22V9UzR3WV6tspu8
KfOurKv2dyFfLJri5jCj52b2XFjVyyq/hhFWTX7RzcoChs2r8jqfLZr2Qxmf
nD18FtoOhv0uX9cVvNA12yKUm4b+1XYHDx++eHgQ2u3iumxb+Oj53Qaeev3q
/MuQN0V+mL3fFA1Ph2b3Nq/yy+K6qLpwC+s5evf67VH4cAuvVF3RVEU3O8Yp
hWXeHWZtt4KVV21RtdtWvr0pD0OWdfUSln9XwBrph1Wx6a4Os6fw07K+3uTL
Lv65vbtuiovW/aJuuvQ3sKCq7sqLsljBL6uanuqaMg6Tb7urujkMs6ys4MXz
efZq+aFoOniQd/K8Lpp10bbx902NZ1Ssyq5u4Me6gfV+ue22TXFblNnXZ0fw
Sz0g+z0tYFt1zd2hPFJc5+UaFt8V/7Js5xf5dr4qdBqv5tlx+f0Hm8Sr9kOt
v6Hvva7PcQO3azjD5d28WscBC3h2voJn/6Wsu95DuOuw/MW24zXLEq/q67zN
vsFzavxE/1Q013l1px89K/GA2+zoT2769O7slt79l5afmMNZwSPbpjzMrrpu
0x4+eHB7ezt3f35gXz/riouLosq+bMqi/YVfb/nd+QW++6u+/lVRrZryQ/ZF
Uy8/XOXbXzqDK35/vtD3f9Us3pbLq7xYZ6f432bV1pWfxku4W6scfrO5ors6
+acnj7InT7Lnnz7PXsBNncTpXC+bf8Jb/y8tXMpiDbOfw9SVrI7n2U1d/V/V
ot189v6qKK8XRmHH+U25GvnrcOFK2vJLvlFFATfqfdfVs6/yq2p2Ckwte4Zr
KDtYwNttBQujJa2QvT1/9OnjF78b32lZyArnM4f5zGuayi/a1lDVMFxX3hTI
U06/fHnw6fMD+efjF8+fyT+fHjx/iP98+f701ezNl4f4u2fPXjyEX10fvzvj
nz99dgA/w4+zs2P9zWN+HxZB7//p9OjshP72/AW9ffTSfnwCPxKX1l881V/M
jl7R7158+vix/e7k9C1c7tnxfMC6Nw2ueylj9R7Ba941eVkVq9lNvV1e8T0+
OX3/73+99+Hv67KCoesfcOv/9Zuz2V/ef/3yq1eng5e+v23dyK/Ozmnunz58
/JD34vnjZ89lW188ef74kPfs7Hh2dsp78eLZs6fy90dP7NFHn8JhhFBWF/7E
7NsLYLyz4mZTzS7ytputLmZNwQJMj/DF8+d8hEf8mU8Pnh7IjJ6/eKKDFcS7
ZSmXTd5uZquqbVf4969Ov3lBY4DAYfE7+bpF+n0HF2P2Rd4WKN02G/hVCyIJ
BNoSBGBbZF+VXXaad0U7oZdX8M/D7NGLF8/pRxUsGf1vJv91163A63h+la9p
R8ceenlVVnd59pc5fOambK/y6kPOz3Z5c4k3zt+A63LZ1G190dEdKKrZtn3Q
FG2RN8urB7cbPPYOxPOD7WZd56v2wcHDR58+eHjwgNY/36wuQpjNZnC9kTiW
XQjnV2WbgUaxRametZtiiYK0za7qW6bWDH5fdvCradYCZWQgQ5rissT3G/gd
khX9cbMuVpfwYt1kdQcE1IbuKu8y0CMy+BBuNb3ZbmrgWfjmMq+yRWH6DxwA
qhhtsS6WHfywuOt93w1TVvCbHMRbOw0FzTlfr+/g1yCpiuwiXxZZfeF0Kf0L
TBbUjXoNR4xzwxmUwJrq1RbeqOpqVqIeU6PSsyjXwNXCLbB++EuXFf+xpW+0
280GNBCe4AJWGtdE87epzft7u6phDTjUqriAawlP32VVcesUwOsCqGnVzoH6
QOblq2kGxNfW65uipemD2Fiviwp2OcDy8qoCxrqELZnaGLQ/tov8U+YWtS5Q
RqCmQDuUyxbHJSxAvcTp0atI7Xl2Dex8zaOW13DKpFvBnxd0aYqKtdsM7raM
5vYd34J92sAHlqCRwHMBCQsuGL1XwLJgi2yM/qHBc9eg2JT4VRhjVvwAdIcP
+j2DXanK9ro9DMy/p8yq6dsv66MT9/CeCIH9weHk67aWg2mVVJbFCtQ6OLNi
CRwqh/dxjeluyiGQThyP4S64Q6irPmECrW+rVQ6ftY2fZtf5B1pZATf3juZ0
XcPdgSeAEvFHOBo4/voWnwLWxPYCMKAaWerSBgUdMAQ+iBO+m3wHQQzDf2BK
NDbMgp5B5rSbAegAVQEn3dUBriuRAD5Kv9HrQGzgTo6wTwXTrLiBWySP4kOb
GswN3L4L0pyDO3S8ILBddNJEpnQD5UR+uMtu8frHOcBavywrvJlTpqV43dxh
vj56d6Rci3kJTB0Z4Af6M1M8nVRCgXSK8EDZRBLFX8GMYGJ0GHwSykR0CLzW
fv26S3jlViv6Ur4OkS4jX8LhabfiH5OXYHPxvoJx0mZ7yo/fHp0d7c+zo/U6
uy27K1CMkAtfw5qut9f+ZTndJc0LNuQ/tmVDG9kyz0a2WNHsZbPukPui2j1n
uXFdrlbrIoRPsnPQ5cqqXteXd9nHT7r40494tYrsQwFnVYOWm03efn12Ppny
f7N37+nfp6/+/PXr01fH+O+zr47evLF/BHni7Kv3X785jv+Kb758//btq3fH
/DL8Nkt+FSZvj/4Kf8GdnLw/OX/9/t3RmwlfweTGw20AKkCSxhsN7AVJOm+B
/xGvKpCXZ1+8PPl//59HT7KPH/8HapiPHr348Uf5AfTbJ/AD0id/ra5APvCP
sJlwWzcbkMs4CpAKCJtN2QGbmeKJtXC7KqCjpoCN/f3fcGe+Pcz+sFhuHj35
XH6BC05+qXuW/JL2bPibwcu8iSO/GvmM7Wby+95Op/M9+mvys+67++Uf/nmN
Um/26Pk/fx767Lcp1ngra77pjprkGtNZfPxInOXHH+dZhiR2USs7xBeYzcXD
2+RNxzqBXgDY6peoHv3QHQawbIoi+4ve0Uz+AI+8Pplmr09untD/f4ZPvu6R
Dv4FZnwBWgxS0F5ZLdfbFrTa9d0+vYq3D18GQY4yFhhZx1wXKGIt3IeIBQw9
vN605ts6g+veMsPolOnxyvygtMxtS6zvtSobOM0jYNltx5oNzHbbiviHyQKr
q1rl08RpcAqiqrBsqCqRVfAZejznH+G5vGLmQMMvUQUhrhiFl58J6Cughnc8
If43jt6K4Ca9xelvODs4HxiKdUmeHN4m+4HmXW2vFzCFi6a+hisGdiaoRuj6
kSW0bgVtbwm03bnTcfa6u025JG3u6+MTfPr85QmqBO8X3+MQoLSjVaBEclY0
N+WSfwcPnRZtvW3gZ3KW7XyGv/WrzkVmKjLKTgLm6Y4JmXfRAuOmLcHhnOJp
3/8Zp+F08p95GOhO4OOAeehh6DAtr0AmJ8Rtr+/c+lN0t+ldK7IlX0d+P7l6
eQZD0K0hu4AveBS2Uf8wDR+2D1lu3lPUb+FUCqfOOx1kYJnMVU8muQvMqrhB
7W0gU4gTgFb7r2BwZ6dqJU355xPSX/DTJ2QqzYmJedUkcjvQmXvSClkd7S3L
8Ds/X1RL0Zqg6c2JIEmfHWNvZ0YQ57TP16CU287l11lCA0ylkTZxS7cd6KP/
QK0yuZmmjMCB4rnC8e6zhpo8RgeaR3rHGbm7o/NC05iWtQfsc7toCySFfVai
Qd1mdQZO/8HRyWsc66Zc8a7ldmqknje9iyDqLnJVvItlBXytxNOnW/TxI1sQ
INUXW1hpRS5hYn63JRKLKMcr3l5kwkMaQGYDbP6OOeedKFZRnRvMn+nAyzwa
eKGvRgsni7dnVV6g/JlnX8ImFT/kqBFPWVf++JHsH1gEcRvW0/X7yTUQhmCW
G8mdLOWCcBmaphQ9GhXGm3wty8TftHJ4eGBot8LXxcb68UceLuGX2V7T/XF/
15jCLZIxQVNwfDZSNP4W/mi/YBaX0DMKV/i/yBuWVzWOW+RAqbjogg4k/p04
C8noJVGPrNENENkSjpyQGnMImMA1+kH5Zs6BVSYHVA7Ym2y8Z2FlS6PLbHGi
E7TBQaft/7qo4MqvJ6J9LtM/3rC3beJ3KXMKEAgEulYqvJiPAFu85lPAw5cn
vEXPKowfUw8oubg41RwvDFs9kYnwR1BooMqDdgrapTzxlu2+bA9/nd/JT2o9
k624PxXuXaD+fqVvoiMUuFUHd6WSK7JQ9gY3ADjQVX1JNhDqXnSv0nNv+5aw
smL8Rs+i5RfsVJJjGN92ov2XNNPBTvFVxk/CNdgW4pvKSYEtl9t13p8qbc1V
flMMyKsbOpy8GaybPGmaa5ntBv+FsxhbJi8QFoKubpj25KjKjrZdXdXX5ZJI
CdYN0iyvcBs+foTHQDkX7wO98EVddygDybEKrOC67lBZWsJBZv8GFuLr6qLJ
4QEwneFXNIjq+DIMOtDp02uMMJLzOHtF+01rPDHL2RsIcSB43Y2FjncczB4k
e1nkcUYyW3njWz5bHQbepHGWcW0vo4c9+2XrzPZsAvv0jWVcNPm4cXikEf+J
I+ZLdDAnpk+hg4vHwBdlBA509Od4+urs/GK7ht27KZu6YrMfBjh9tZ+9KasP
SEpIuFPPw3HJHGDoD+d0GhIgyQ7YsfDyaAQaTEIsOBj+kx3vqgEcq5Ckt1QW
w1sYicBX3MGTMJMdPlc1mt6Dh+klDtjga38qquIUKDbS7ll5iQLYzZReFcGp
L88ouGGTPTuGA7newBEgvx9MGunn53wp26PB+dTui1vQRHy4BicCP2ctjAnb
9heO1GRHwCcuQMttf/Ig3GA0+Pr25Vveojfl5VV3W+D/z14WOCDSWuEi/p7o
3oJuBz9elGu+IxIPojEpqIZDkud2CVSPMSJ6DP9Ez5y9fMWfPWOPsv8inXHy
Qf0Exnro9U+y9ze4+8VtgB8+AcZqfvFA/jF0Eq4K2SbnpaQpzW6KaoV81zyt
wDxWBckMYgf/KJra++lIv0TDHDdUhFFVgPRqPmTfb9vOf0Gcqq/RQFviIu4K
CpOoG9u7OkXdYa5r8pElm6maUzhtVqwTVjTNgudwnokQY4+X7jNaFE8bdFiV
Dipm4Fs2t3oj9jL+RXy+KEaTmAf6snqBmbK6wSDFim0x+mMo7KrGuBGHiKbi
ycVpWiQJTvXRPDtq261IRZFppK/KM6yky+kdoZrERygfrnBC6MhDVV3OB+No
pEtUW7whWwpcbNZ5lRwaK19FR75WjWOpXV0s6/au7YprUoTo4y1uAg7Ntjzp
iDqrJlp9Yv1EMW6WTP/MI1GgSM/ewD1oKPizgK9fJyEItCo4VoFLpzfrbdub
tdMpbPo08l94ml+ozdSm+0t6AAZk9KUpGULozQTCQWMCbAZUC9fEKGzatM0W
UXiHER5x2JeFO6Xuqqm3l1dZUYqzuYANo+nETTZDhR/CkWO4UR8n0oH/V1+j
Fw1sog+obwL9UAAONMG24EnTn/A7tyDxLt3h4LiRRE0D4m2EGwNEfpGXazyA
fMujCdmOuBpKDlssTTjg6MRKEvNhr91Pr5LoZHVbVMlNgLf9Ht7FgIc6KEC0
YBSI95HOXHam7YDckEguyh+y7YbGKOFW0ZQWMVKBr9NRwgc2SPtIW2AYFFUr
Xj9yUNppTCgMMjHni5uuzDbXzaPp8NnGY0XlnEYEdsL7jltQAF/CsC88GnlC
juRJQxFZ8Uv8IBPuD3dsMisPpmAcuh4rmMYFXE0JHTKfBjMLpeFh9rqTg8Jh
LQIFJjoZIPA8qtQ6aCt8mCK8RzSvL+ySiX9I1zFVKsGBS/rK5uqulaA0UoZ9
DSYJ6nheyd8uipx/39mFTj/IN4j2+H2TlRdM1ezo5ksVA++39XYtQYje3SBn
Ld1YfhZI7GCeneHxw6xndF3EcO0wwkbSoXah8TyNaIlhFxm7oyqcKj9uITMO
a9sdu0ZOBnRS/IB+DUkZ8Cxr6bSBeEfp1NRrlH0BbKmiOwK7LXamHIsZfXQD
0QUTt5/uSzRLmWHhyMg58Pl6S156uhT4fZQVJPe3G6BrFBscsF61eLuA14j1
mtctB+pmV/XSBRSJz5B22JXXwj3jrdhIFAGNZY3NpQxGRDKc2GMUj0gCToNg
GqWcAtg9lDLA8CvksdNIyGgtElVYFNJ9LXASSz2MRbL8Gs4K+Hm5om8uJGao
gXMKGROfwFFH+OSSKDTN+UCNour7yEwwmu+LDumsZtXEmcPo8AL1gxSaO5Ct
OhascVZfXAAx3yXurxKeS8SW+u+QYpW52dNCufYMrI/OG/gxbCRpEfKK7vac
o58xNAUyf9ZqYCLv4NQ3xJ9pHHIVkDtPwlYcjo43ISq2pFp59wYNAAS0RHUH
qPRym9PN/gQU4mh09E16vITOAagZCvDeN7iVPjZjtzv3tp5leQi3BwaCT9hB
6VvBOVMT/2PVy0BBpzVxTUxc4vCBhDngn8xiQp7oKaQZIVXHcyIOfpWz049m
oB8ZXZlMeiSLxBb9s6Yfov5Oy+AYz861/KJpf/neOXb8lrfEoZNZ2fmUzE2j
xjQPrzV7ArT/apAYldgg3tNMK6Fc7KyfFAUip2iIdGG8gISCZjj9AdkCGgju
guuKmBEpD4KVLTsKl+cdKyl2OGh4cMxueVUC7wz972csSO5oQBKvrMzSOIui
7cj2w2/D/W3KJWgLUdcnfYsjcCFJ5XlAb7qEHO+K9mk+jlhsqujQvhOFQzT1
4PIuLPOxRgnV6ly9o1t2vFqR3Gv93x8QbclJ+aArXvWXHM2j3B1ZIt5x77HF
jMHWcZWx5Cl0zdgDUpjg7GPcaRZWPzHOdOQCOc/KNDjfUkwVRM3da9alz3/J
102Rr2JsTL3LY7d321KWXrjKW7Fdm2IWwza4vUApnMkXIwB98ROlDvuEr/MP
xKLqC9jnbEmRLJTkAW1IYqF6xWBnkO7GpkZBuihPTdbYLpsaKVsYHRBp2g7p
vOTsxmnl2RotG9Qu0O0AwxUrl8i1NBHcixfaMYaxY+TAKdqZqKHCZq3hCFgn
XCrBLSm1zNKh+BLrFcUMP86YDGZlr9cjZOm5RY8gkbyjCz2/rOoWE908mXvG
N8i3FM+3+2YrCkTCL0Vt9IltFE8hqwJ/0A+HZBcPM5YrXjjK1Npe3ImP3jkC
Xp9orgd9ytIAwt75y5MphcYpaeRiu35A/8BA5P6UZUXJmq7fVmC/dCNxMA6T
9I8bTidQRGfXp037ZSYm98yvDaj/Fi0PzkO4KC+3XBoEijBmRZPq43wqums9
23XaD7SLnYnUaGm6+R1mLyPVirHQSshwFYRsOorew249wM1yyR/ssUCpQOkz
tjxH25Q8k71DhW/szzgpUm+9s06GdT6xeiapMBLMU9VPQnCUoLA7rXWci1L6
L987Ey1YPtWYahGGWdMLvJ2X+fLOn1Zv1y1DZ71LSsCb5q/BuBGmv2NqUBRi
spjiAt7sDkWrUjUQBrN8h9nRJSmvfCiSfuPmZp4R3U7kefmIqRGQSL3eZ2lR
bjTbqC3lsHQcHUSfqTcTKPdmagxA7pBMMTjXj9eeNHFIf3QZrKkdInJCEipb
S3Fg/kI7GYCdzOKM+kF45nfZl5YckJ1tr69RjdiZoZ9rdDZNIelQmWljUJ98
JejB4t9z1qrZbLR0MEuoXKzoiYY4qNcMa9OGiIOYErrq6Q+otQSXXAQi+bYA
ZpW3klPrvJ7ZsSads5f6pswHK7rOfyivKfMkiqC7YNrNiBCjZNocdX2XgPuz
NKOQCKKvzc27csGeqNJFBUM9nJ3b8n5Y1k4wrIouL9ekhMdcceLh8OsZbSpl
dPjs/tRm6Cejg7S6gXfT3JdpYApwKe1soOBZqu6seeZyqi0wN1O31X5vNVEg
8Wmp4FjdgR5bLkf1id1p2pGe3fT6oj0xdlLrJZo6QTPr7saoAd0ZSrZwOte0
drGnZrRktdSMp+XLZd0gzwMlRtyJ7EWLHIFrICRt1d9uYgTm5BW3W5YNDoKu
Y0icbWnyeNx93WfjmpvLJl+Zm32eYWDszKt9xFKOsYYDo9lrLQtwEUuYwILO
zmebU+KMWKfReqO9tsscWWFwnNuZwrynQOGU14QHA6SsOeadH2rEUaT+H4tI
la3zrrMAeWBWnnrSY3JkLMJhxiwOmOyyvCnaIA8vi00HGipFkjGWiJ+/Upci
7gybnyvRRE8p9w8XpfkyIQwzg3Mz6srWy7Qk66uXsRZlAU4l5ObYlvwsoWuv
QJri8kBtb/gHlXCj4rj8kKTjkUI5peq5aXZ8/uZsfy6UgJnozjiKCRQ9MSMr
4uzfNhtfODty2v5S2VWga3WRwzuNX6B3x3tnvItqHuKcfCoLZ2JauM6nWE69
xoClEfM0dIqGeRykr7YAxWBpPMwIFLmGTxGNqoqsKnrD325J39IDDSoAJA3B
TFxX4hH3mZNTYDuPMjzidaEbg+a2aXCxBIoXPazCk1Auqo1sotq7oacsndYc
hDBPEilK7IcHyqk3oFsKsQkPhPEa9sLTXFALpm8E0sU4Ppnw6rmUw6sXweLN
tKgYUoiKZWM365oSJi96RTmtOmBDlBpX6kqWmJUEUWgPVNj3zGhJjx0Sb3pp
d5GvphCjj50cl3pLI98JGjPGiRMpp5nnc4lBYayFzB50/Kxkj40gyRvU9/ZM
gx77KKHjmTKpm8OijS4AqluEXSqG+YdRWkf3g8vOV1ljwtfxbbRNWlRxylbV
+f6GqDvaZfi2bCVFd+lIQqqZ0ZSiyx4x4k+UuTnmXNFrl1fBR29a8oOTI1wK
3+bescvcjGhh+CQtKcnrz463SGSsMi/Mm6ohB60QvQVGsJYkXko0trC6+nxG
PqbekGZR4nnejWpRfd2JqD0WohgFteb+t+EThyKR2DTg3hpn01s35gRDp8GR
5oSPly3g7fV/CWn5Ri5hKhRh+qkz7/3k8lLaFrwR9yj1JlIHqxz4jHyWqtUA
91Iv9Fp1O013c0Fg8BZMOdTbAoeydjjI4SZ1t0XhZRonu0Q+YFcs0BVbIEVJ
HDiGGrSE1N861jhxL6WCSJglq0J4/NOATJpoI1FPyb+dOqUSx/s82a0Ym7Go
XbyKiztTSqLx5O/KWHo1z4vvPN5RvMscs6bAO2YDu3gXpgMlfIOdwvf5nrmk
z1LkcY9Ag2uwNB5/le0V88v5oWYATHBxc5vdZH8OqsCaa1hlZ9Pv81y7q60Z
+sKimQfrpsaIr4+Xk4wB6s+7lKlwytTkYp13E74JLZBU8ZnLjmLZcM0J3rSv
O7ggxUhfx3q3YTjGs0wzr5vtWoIz67r+ALbnTY3mJGhr3WCBkuiTbsyFxgpH
85kw1QB9RQVXH6SJBGXMHcBUBpqrZgvZRSULkHffOeDUBwlKF2IliOznNBKL
6MYvzUy84e+HC7CUd2fDLHNaMF7OrbuZhdS088T2LG0gahrD+LXoaLd6l9C4
wrHRqlkXP7BFnxiRrd0SoMy3WEGWWMRRA1LGIQ5rtRN5dO+nxV9fXqEpzutt
8WzzVgoO0zomORMp0XDckLdnD/dn35dKmwRGYwt4FeYTDeXQmAxHp+cUvoGa
BGbnRZOfpUmOF97HEarRJCzhVbEK0BUaYLDQlAotVWdNMF4Wb3OTchZpTS9i
IWUWMc8xiqPUXeXIOvSLuTizglm4v9LqxUc5wyp0f5swFT+9PRx7cYVJreYS
MHvuFXjFE9FaANHBNEHDTGjgB4H8slQCb8Hg9hcLO2UjIkaDpv2wd04paw3s
YT2I+WDZBCqM9Sq/mw7myK56G0+Aa0hQkAuDTJVoPcWIl8esuM67VgNnThOC
SbPvYeqUhnR7rAjMjYyafY6R/7221lLZyatqtYGr27UoY2gtrVw/FFgmo9U/
khirVsNF6W3dPLrRyNmHMxhocRgZodqajYQudq4AJz+yVcGlj8YcSWNqMScp
dU2rOo0rU8fNJD1MqctnDbpGqX/VFN5zRpU1CD5nu6f1NMal5Zzl8KZSpWJ/
tt0WU5Z2T90hATZVtlIKiax4R98fW7GUWw+JU2p6xKjBDGMMlMjVsovNCm87
WCedP99gXe348JPDwJU6WNfV+JKdXmWQVOxkk+V1+z2WJi2BGPi17+lfu96L
VUsTUBPpzesNv9gui83uF2X7YHfkwZK8OZq+ra85X/JAaeKSZ5DIhVRAHUoW
JakvKyAlZqLI+JVHpsw3d8Zm3MEzwqmRsxHQGjWue/V2rKDxI+gaBDmKTJNY
qLhmegt3lXak7YU9y/zY7z2bFGnS+c3weGa40S4nLrLtzpdMy00KWhSaOy+d
u87ir6G9VKfADIwvzAzhZNMooaMLQf2jtPLQFJwl1MWC4HSbXPF//L1sG4Ef
iXtDU1LWdzxt0hCj0avG7rinvtWUraTub+r1q8E9Qve93Lq8KRKd0jCDYliR
Zww6Lzr6ONQrPrAVK5IYIrvYgjK6yJcfbvNmZd5npmJyQOvAD2IVwiDoOqzO
ZbuJyZfMPPLNdigVWO1AN+0ZbqOlinPsmV+h1ACOGIoNam4HdL3QxP789euX
oJaS6tNsK4bVqDd4nliVPc+OxAzDpJHpQCe3+nqyliZEiJPgrEDdW/7a6L1o
kfPkm1aqDMFaWk74Gozv6DTo8+RWtJjuooh1mPSTeAZz9MJFxKm4kbzq6yKX
MpYwPP5Mj19N/96NxFPkiAKJxwtdypTTbcVXgOne8Dfaa2/F1qmlXPyAVXsl
prphTDP51Iy3halkOD3JMyhAoejEpN0C+1qAQl9vRarv2PyYWxP6V4VmuaI9
WXbEDtsok+tmxVkYgwB6MjqYLpFJIt23P/22wrMYmgtJBY2wmfYcSHueI2Jn
PxSWTsLtNgZRkTswkTjxIro4VtHhTVcD0DM1kgcSXapbBQLY8U1DcEP6YvKC
/8INM/U7sUv2OA2/Lw5sONRe7dZyZO+2x0MouzIRclgHQABRlJRGXl1z+t7p
DcGM/ikKb8k4Rc2RHyolvYR3CY2/cHvVB5vwwZ+4lcgxHDkXFTzcUK5iL7NL
C8vChwpRjrSyot1iino5TE6jjA2suMHN6DPNgTYc75YLtve3mPQIrm5m7ikb
IR5TTtMAO+Aql6ROc6DGUEei/SlnKXsRs3tUIkuFDFwNoWppWWUpBAajGVlU
KQYg7PITVZQx1GlKa/rpwMuGD/gaAWTSrD3SPd22idcO1X9OK0veQipnUUWv
UmlVSM/CboMqPiXVGOgh4w8CVcLKb7LbpDcNNW0BjdTEXqKbBRqXTErxNsS9
oLqKdGZY/nnblB3wp5glSzlaviZf+aznS+qjS9JDL4HMNpykkQAliGsh9EES
bOSy5WQ5q3qwTdffCjfW3+t5g+pw9FOfZW/V8KMJmzWVLXcQMDHRd43wCqNT
J4e9FR2S5mLT6E26x+enYdefRLufejeuqk7e+ZLkGLOsb0Pioxsd1+Wijs1A
VoaGCtHKRMWWBsMsxWZMv26dgp1WQ0R1G7/v/uZV8eBH4nt1/vIE57KUyew5
wF7WavbvmaDV+obfbIrZcIqgUdl2zU7evDr+06vdu6YhZX41vZAXCXZVy3HS
XuC9pegoeXREo5WKHW8FGM9PxE2R5q+4lAEri00nIMyeQ3MSn982qABgMtBi
AOiYBBXHjA+hQPOEe1+wDPyTeLC7ErRRdMy6elawv6y527D/xtlLX9W3yKqm
4mgzn3NEw6NCMUvqXhQGDBQj8qaZY4635dqg7GoZZiGG/XZ5gGhJnL5aOy/y
EEFHl+izjugYHM5WLCWIaXmuPhtOqU9B2V7eZkPAQCbC/WnW/yRGzHEcVy6T
JVupkKFUf2VmzxCcy0uQLbFncnqiI06zy+Pra6zutmxIs8pjun8fezMpxPOu
jlN98JwSDXclwLOPbTRL1BiAxBsjihWlYTfAbDuEco7KidlcPhWSPT6WiHGR
t1eSFZuUwuntQy0SGF3QGEQyp7loQ72Jwm1tC0JCxt1GwRUVMFoaeR1W2q4i
yMeAiApUD3Q8xo9I/USqHPT2k/1GNDazQBdYtncmvZnq9y7Ky5nSOlbAOMIc
hgOCnhQL9zQ4FSPjxGXtTDSciR6BG9y1lyf7Fl8x38FYHoEhSCbhZvEX1Os+
KlEvYB7i5U/CJ6SLUegjmg8xtCHSgoy+CLDVZ6Wu2r4lmCPRJXDPdIi9TtAI
tOwV/oyVn5ZV7n2LA209QWqjeNi+5O3/DOt1OBYv2Cem7RomJJpKU2SJBY0F
+3VzPaqufDLidiZsazEjfwHV4msD/+i9JMzf+CkKNgIeHHjS04a1NUvuKqLT
TmMufSw2RvoiyRCSBEhxv0p6HvuD+HfTuPlU2F523lIxR5JANQ6NOPMOqsa5
NMVZkvxls8SWZO7Jh8/tADD3C2GqdHt4QSuX4R6jhrIBc0nRTrh8K9WiROKJ
/iurH+SvK8eJpifDxKFbS8N0kvmJHlMpfyeKmQhHQ4/0entdEYttXehowC8R
zgL2Ug0S2BoC+BWAOMK+ZX8wljzfueINXEJwgzBcYi6OA4kQrBE4CDQumD8N
y8X8BNJP4+ksZLq6il646acXQ9fp1yyDy6n691IAfn/pYnrD3Lcmufe2NL16
+XhoKpKxRE6MnBEuvBdq7TEIH4LKCJIaFceq/I9tEQ3FWMbXj9u2g3L9xLqE
xZs3cwCWd+9UqBWVTMduK5oUoGgUDd36ddHRrcxn/5AqlUss/X84exHfZqwU
OQt+ge4hV5psYbiiuuyuOA4yvrlAFo8OMHaAzTSwkFWO7LSgG+mOKQpFju6U
WNzjsmOZ/rwkGf8iJ2gGzvW7be04sy+3DfHJRj/dZpd1BEJ5V3cFXraUtI4v
1nDjv1znl4nTb/zTimCcE0rTmEe+R3JyRWPuahq7tJA0L+CMHtq90elnPZCO
rzJKSofLC/9D67J51eU6WhgkvlK9zPC3Zb1t0OFfre8cQjN+j88tSTm2T+7w
ZSbp9eRzJB4gcbTJRNMRawVinZlfzwqpo143z74QrYl2dyrsnuIuFAVW84RO
KEmClK33fSt0X8TLOhIG9LWnWsXP+4J7ljjA+bipJcFgUmMT8VT5+19MllxI
GtfpkINdyYtVlMADwWjvfHBDsis+BfJfi8Fih03DSp3IPHtTfhDIVbpOghxg
KjvdVorn7Z7NMhcsEximoGvrt79zmzK6B8Z22pvVz9636E2saslD63oaiACw
wj+kawtxny4IopzkgmmtUJJv7jSnfXbBmwM9vcho0muUuhf94FwjoJx5kKXd
J5uwPwHnBZIdWETEIdtw0tadPizBpnMDVRJ2DHYTc+jS7julJ+xmy3x5B9r6
uMrdU9mzj5/Ytfnxt9XfI0/7ZSo8EWf0/6o2L5c2aiQm3nqpi3zWuKUWA1oU
vmCrFypnhBdKfTUfPHrjQdPoY5akrmTKgsJ3J7NJalINEhQGk5cNnJhMpDyR
XXMwI4JgF9QvzQIW45hbtORHMyPwTazyGYYeuCSGMeOdy3Ai6EWTsZhC5WRW
2JWfYKo2lkPj39vlFWx3XISE2n4DzT//30HtH+pbcRFK4jRr/JQLS7nsdEZX
S9TVsg0u4GnOVFpjetKlenLV3xrfY+YHxESlbr2EzHGIaNFm01Jf7dS1ZrL0
bNo2GRNCCfkkUGUUCa1o4k5e4W/k2w9I3rWR+MmjiIxyS3WESTHAPYyDxS67
kPo5S1laB5+DIPQZvVFrqtVjursXk+uAQJFvHdUaYBHWSHRCYjsP0YcHaFfZ
EkH/YWTnYY4l7/o4UaHADTnAI0nYjIOFPYmxCXwuqWlaY7RvpS8udTylHSlF
JTLBPVLnvKpikt5a0pPfS3C4l3sD947x/EbWaHFv7k+kCQfjuC9SnMv1D+al
iAXLiJvBVV4rbdDl9WFSZBx8a1DMR/J1J+CXuz/vNUxETbiqNzgm8jnqO9fP
Nw5JvrFHIFI8Z4IXsixM2xlLOgCjVvO/zI3oQ0AYd/iL22t/NVDx4ZQhvKWs
CA0OwUVdl4WVIsX9iKEVLt9NG7P0ClvMdYWCLwyT7EdKuTB5nABr6ErEFh0E
vSj1a6OFXUHyj6eJL47drDo7QlN7TWNRZooOqPWA6/zOMQf2G09aBI2PMWVG
MswdsbstATKMkov32j8Z68a0VMs1brOQ+jS7BM55i8nXHHtPeREXjhDffc29
A8kHj1g5Oaws0MqU9HADyS+PV+6e3Ys5Zmcvz0+S4BLn4nDidYCD2hTW7KYf
6jm/SiADehXbivMsWWicvGj1YSAKmi1BBw4pDDMNOXUOi8JZTmnsNXYuGbxo
uXYKzUc5cLMIn4lpuoLsKc6HncA0QzChW7aCJGbEyCxx7UlvNpZDcJhc2Hm0
XpstiI5evMyaepGimcZgbkgSkTXepnZDPwh1TyxBgjGgxFHENBXrnLxg++iz
Vc0zIumPaEVSWmC2z4gwp9YrMlqNDEIgPGYEcNICbQYrmbT6EwxIaSsZ0T48
ZkiI0JDYFEGhQXxaKiUje+nruo46hyPxfyyoV2CS4Oogz1KYEWCk1Me8QEhr
ATRo049qvHRFgVkgWfucL/0h9UmrGVw9c4K85L1GFxlharN9ot8wYOGURJm/
hj5/bV1wDgt1upieNHqzNcRszaRslrlVz0uwe5rWfuGR9WPf05CM5nF3mmL4
Og9/6gLf75AzwRhrqvKlwagwUBS/MCB5n6phHY98FN+fSHmhAiT65wyzxvqh
BpMH0suv1LbAY+mdEVxpqJamOfejUX/GqXdbEAKqxKqK9o/LZX+iTdWZ+Oas
D1WVhlShjpIwQEKL4U6WBnGQWsKp2ADat4Rtl2Ddgl6KaSoGuycRWY9ofw+8
WLJMMOHWhaVU5K7kTIrYklyffje2lgFpsWlVaThHwnwC1wO0KT/iqK1RS3Iu
ltgRg8BNwZaVa25rzQamvR67bgRNcmXl8040gdfHVndnvxtp/yYiSfyRnGah
mo4x3ezjJ3bDZjaHH0G1ueiZbVFNKmMii+Iex0vv7OSo10qDTj1UQptEb4QU
dDg04YgyK92tFFg8fj76ajGKAGOAbkcOa3TyYLHDXYLYRnj6bMtfEEhV+hUU
8sOPMBOKhYCygNu87PiTWAy4LtDGf/xQCkUlnxDs2g3ZVaWCSXJ4Rpgt+QWA
K1fMDhhykOhrR783j89liPQjNkdQs1/rjQRt9Aq7t3Ib7ETGRdj+NunSK1DR
i+KCYJM6lHK4AN+ZUk+MxENKGbaXJW15AiSp/tW653Votc9itCpp67X5uCYj
pMhNeHhCOL2MOGqo0ZQ3mgVPFfliwBwKuqkBhLGxC985ib+X3AfSMIrrmoB4
Gf8pztDNxI+oqI7J8mAXdSPm2TfWxURx79J1meFGcVk3tt8aokplMLyfZROc
E4j1TXuX8GA4ruaWQrszOHpnLev7waXreKCJifoWJlFnQGarDczR45C2yDZz
2w9ZVuNW9BoDEmT7zokjjUCs1NQ+sMernLex36YiMqWyS07OzhyuB6ZmWDNF
fItoIMLi7hi/RDKS4zVQQ98c7mec8rR3xhQRoOYH6M+gOoxpKOiImHcS5s4G
48Uz5vm1eIsWNXCB4oYzUrVmoofDyal9/BCxL8YUu1J/CJ4IASPZKW4Qc5Vh
msH4gN9ct6wMxT8gA1ZwavOXXpSNR6UmluyBmVlHyrByD40bU6lgZ1blktOT
6IikfN+BFSkz4nzXqCKLHLqzEhvtfxJpzUi9D/zMfvyofYzRueUIeWYtpE9S
hpFH+b6Q33vZBVuD4xQjmrzvRNxmQ/nJvvsx2HddEfM1/FLwrn3RXB2cXbeD
v+6k0JBwAP7O6P3HWMGZ0y1psBrEcOPs32jAJSqQm0i6+uAQJq/r6hItMpXF
T0Qxcuzg0cPBmpwoCmN6k51r/GPsJQuzv8Zg2t4NfewBVrw92ydy7l3x4LVQ
F8QbYSPo0Reh2FekQIbK+pEJhFx4gAvC8h32PYEjxDs32mXsHWRmeCJPoh7Y
9sG84ybk5MUSX12GpIKJJA5cE77OjUPybI3qfRMM7Q//4rLXDhK8RYo/Euqb
acKGz6JLoD7ThKSAe0w8ibnaQSp2FfEzjnSZI9DjAMHrBu1yVP+2jXRDhT0T
noQMOo6KEApgRc2OXzIUFAZu8QdFnNKP3QkuIvd9U/sMTX+57rgJPdiwI38y
SXPrSNI91xAm/A7V8x9jYSn2e2M3+LbiR7GBewK0pGDsIy0ArNgOZPJa6+9Y
Y2S2HsbfIoNkjQ2f0P5p0J2Wr+G7FfUZvnBAdOTzahWtTshpYECOtyfgqWHX
8BsSx7eWsZYOzhq2BFER/G/DdW58ffAXcKwnKq1iNxD07WHdc9w59Or0Byfn
uhRXw9XFM4ihqNGJ89knCEZhiSicLLpGt3Tq9KpYDQh8NDs/f5NdlAW6ROlO
ih4XTCSbEkj5CJygLl+wM/GWwbIG7rPs5tl7PEXGenDlNyTXaaqqSwCRlwLW
ufxAyAJ5FCGk6efufjhjIBKk4s7ypca5LjFWJDAFqrz7ju+K7Wv5FdqlOgoM
rz8IkyRbmywXVnOCxuPIgz5GyhrWyrlVtEWc40KwTRCmmKAPNpAugZykkIaM
zuzkNXk7Cdnro4NoIYrYkYsmQTIP2O87Bi7usrFTQebLeQ3O9EQ2iVxg1eS3
pneNrvfWIqxsDtdN7NCNlmaLMSI76XiCerXTvUlAJsVYW1AG4o7Pa9WrYowk
bMPP2gB7SRCGi7z1g0aOSddzUaTXDemEpJL1M5pSWdB284AyCRZ3YfCdmLvU
O5PFXdwPzXccLo6ZOrn4mGHpMfB3JWip1KXj1JSpAgchaYOCPS0vEUj+heVD
ktOfhCG6CWDZ3Fyg2uUSyKQ7F90cpJDaOWrae5xCzsf68RMKKCW+oa+5nzyo
e9XKG8TONS91LYtiXd9OLcYtl5R9/JRqS/5nEnibTh0cO2TePMu8W7PQ5nCJ
3hh+hgLLPjVNisRLLC0qYiyeKtRaAkikPV7ka+x1Bye6x0FLwoFWDXtflXmD
aPL+/+iPctWF2Du2/1XZHXSCIjz8Tn3Y9FOnrdH3kxpKfMrmYw5FIPaCG1KQ
zIysIiYoOQ2WoMvuohl8BQsu2BJeYncWugDFbZJqdTtcrWBog21HPm7s67et
2CrBqEK97dyixkeQi1O38ep4VxDFJrZdqKsxL5X3xHJ+XKIrwZfxZ/g4Z9G9
5k2aim2dB8fuSGPs+xGn/digWiwfyg2z2sRCVAE+NtNYx7mbZujyuWQUEl9g
ADVVsi5mqm5tFp1ybhSDuxtz7sWdoI1TO4RTSMik1dnYV/GjD/z3wvKqAO1w
xFa2e+yDqq3IYa5b10yJTU5AMVRdBLQYvDNRNydDEwxMP302J2Os2zbm6BLN
PEUpR4RoMMhrbtJSs8ZQOdHqHNrxTdmKNEvTERHbVWKWhkfPbbR59nV6HDHr
Ae9UeWM6Du4n2Sq6oLbgZmnIMgcz6Zry8rIQeN7eieMxIVgCUXPZqaeGie1R
nJr2h4Ab6DqmFit/08rKnbrS4DWDkmQrPJclbDypQ/PwUvZGYi+IFa0tbTF7
bVQ/kBZD/TseUAkjXO8VYRebhUc9YQcXUDzWZPyiEynSj4N1jLtowDGpcI67
rO2L4wEr0oz/aIG1IjtXVXaWb+d7yDAcKIjD2PGWCV9nzUXmysGJALACYDBH
2Rh0axKfbhybdol1AoC0rTzaxQIWhq2HL+ueRs43Z0n6NuqOxIBlXlT8Z7Fx
mXUMblINixe7Dq0L9fzNOieJGvvmFGJbJdzSs5l+751cdU0gPA0ycTRR07WI
JMuEMUQsDkVcXFk+DOyyy7qxUqORmXkrzU3rovbdEB8/dLeLVH7rcUY1Gz7P
3LVaJGOTTiSJPFdZhOqIaAcfimIjtTgiKvOyE0xIjMzlK3TecGqIOQasNxuu
NaYHCGsX4Px6XS4RoXRdrpxjzLBO4BDfpLrRz3VewD5gjvvpq5fv37599e74
1THhDQ8Zi8ptTJ6T1cWHeooZpyBTSJX5uNjvTNAETkv93PBcLEiFK9KP1VXw
0BWrggL41HMxv6nLFecCRY3JKZ1iOybVNEU/bKo8xMtoBC2btOzdvsrbq8kY
onSI9q+DEkg3+qvTb148x9R4K04wvDpnTn78+Hp2PC+L7mK2gK2ZFTebaoaW
1Wx1MQNmQfYDVpafxQZRrOWKNp0eEWFMY4I0wThR/2DeaNMccHPSc5omzkDO
gXPVrBgGuBSUNEzmKZSbSClbyK/Ji93PsYkBE39l+sAvcVW2kGALQcRJoGky
iuAyd6oNiUvxOsc8aM7nGWPxHz/xP882NsKPiSs/mg89tT9fU0qf9bk2Xdsi
L5rGG6OWPoZmz5W77UGuleceG5qEbEEFtsQoUcUx7csarKUkCWXKrahF/rgu
uwzk7PpIyhICAWyR40/KxnWusRQZtYOiWlkSuvl+yFG3GR5H0TQ1HX3sk2cn
tEMI3yp4d+cq/WRXS8VjIKFlINZKdbr3Bu3C/TnUl53DeQC3HplmpJpkLkE5
W7RRjZ9wtlLaeSlBWXAxrrZD74cF7pRmJICHmSQl+y3wr1h7MD4fAqrEBBpG
msXFTNVwSU6GMpo79rio7KXNwkxZEgGyboqh7fiYNI9Kh26dTg0kWTRLznxc
3Ml3Qv95E7VVDrSAKitln65G04w4BzHJHvORqTQlMWZFMzcYNsakl1zytHhJ
fsR0CPc0scMS09jknAe5WFy/a4DgtEvEVYFG3ED9sHdSuKKqoWsESBiNFhZD
7WhHLrUypOjR/slc0RBT085T5YcWk7vmZEmEy8Xa8I537eiqIpLiKASiprbO
ezs9jJBucpRSovOxLnTXC/LR9mHy0FWepDR589I1TazFDtvVPNF3Hg3WeTTZ
BpFyXEuWp4mV/YTivqkQXP5mYW4/D4FLGRJjXVw719RRog2Sqhek5MPT9cSa
t7gclsk8O/MLTweMUIQ9fThtuSNbSeccE9uHIVh8ACnYR2p393X5FTQc0yuB
jkZW65vSipxkruK0RckfylerYHmH1uuCulk5Sun1wmPopJhqLi3w6Ii5HIBT
HNJkXW2Ql4AmAWW+3yhaEPXHazGXSSxzwUaPGQaqXxb9RDiPHXXuE7FDkvjI
dVU9M1lydRVQJ5Pq0eMS40xY6WYaGc4PuOWK/jKLuhopSXTe96TYb0QGMcI4
j+H1vcnAD8ApGL4WNHFrKKid5BK51ib38F7SAZTLadclHiD1OEt83qFP5S2h
uIAtwe46c6x6ohnRXRD8mUJLhkLuYNwSD0TsRMRZpTwvD7YUUxmm3NKoojbg
+/MsbYTrcyjZX0NjcTTGfRP5LG5Dk19Qf8BaPHsmlaJjkdItV37VeDHFdErZ
LNLQNxFmmm9+/7yNmBW0qf3gWpBq+KVou8HwZG8mODxJCeS6uOh8X82B/7j4
gUF2KQdRpKydO28oddne4Q0ih47GGqK5i+XO97zhiGSm/FNYj1RLeuU7rVWg
q6UbT2kg57WPKMmcccoi5ugQHTixTijpGeOQwIfHw26UWvGFRr41aB7MX3X2
4DWok12ueZeJdGOvBTIoZeoJObRF38Jal9dlN5hBX7wTwO5GUKvZK8RpRY8e
hlFaan+232Pjm75qif0XOGbk5TEIJ6wSvzmzb/4oXf+KPnNE6zWb9Ceog+3m
jI7n8XKCpAQx88IY3XDB2npamWkbu6uY+tf2E7+EJabN54mZkm/S+E3i6RzQ
8fAmM1GTQxnFuY73ExzasUTRLOhDY+LBOF+jPsvgA9XW9k1d0jETruJ+W/xN
dJ2yH7i9T7wgNbEaE8hXTvGaweUy/uhcdrsOf3D2wiw0kJPEGXtb3it0+rmk
Ps96oHqDEKuR730zl5sbdoVE9QWLLt27r/+lMVKOg94TKO3N9j8XLTX3Yi+l
vreRGhfNxuOi4f+MuKhs10xDcciZyP+PL8EWjw4oa1Dh/cyHwf47yvrfUdb/
/aKszprcyS//l0di2ynFMv87HPv/q3CsWuq+qxrqk1gpGhgBG0bWlVIerS/6
tNAjuYfZBFHshHskctAM3ahG4lgsS6idA8e9ejLJPP//HUX+PyOK/IlE3H4g
BO6kqSxlKJMhBC/GCufgqp0zbeoooCHe7hjcnL4aGqSEI7nT6DSjggfUONlH
udspRaxvIciBXqkNfT9Nz17o86NoI7G6GkNzYbCMBdytw6yfyOy63IiW2X8x
+ATHkbd7JDj4riWivas9zJeahaajeS5sxYQ5u6J8VH5VhNKFupJoZMn3+9cf
c1+BC+1VrnVvvUO8b7Hkd6D2lP5wpe7j6+OTP8w+/9eTvwLDyFesnSIjw0H3
GL1OYU32Ydf6yAQM/62t6UWU3JR5GFjlrieIPp8EWrCIxQIU1vvlMCA0Tn91
ujCzhXd4EFkM4wj0pFsljjikyuGuR3+o02Gj1hI/NWeX9V2aT55p1YLPxk4s
UKqsx5hpZA2xVcxkozwluXp0U6m9ZJRhzMaqftMqVftVQE2jdFuRtcPKrfJ9
X8cXwRjOpKM0m72Vm0RnxQqCJ8AU6gM1QQOqOgXtUBidnM4tGDcmFpuVEdSh
WAVcN14sgvqUhiE8ten4HEUeVo50ORs+9DP3S9+fRc9RemJxYQLDKPBZhJT9
7CFLw7N1tKidJfKW68Vk7H2r7DEgCzCQpyGWM4wk2sxjTGRseZoNILoS8eFB
XbRPwAiCkRZ9PVS5Q40yYoyuh7+T7yiKEKlOXiqheWkrt2jV42D8wJ0SuTKt
6E5hdLxnBN3vs3XNbcbsVpLGKUn4tlwDE9OFWKNOLzRYd1C17/51pTAyTsqT
QPcIfePtPqo6uQqWW7DL++mSuXBHa+lLTM58gjap11sFxnA5AnvwzkWJXcBT
0PrEMC+tEYeGwNAiw8rotF2HHDnRgSLiU1GMdqiyNB26iZn0KS2oxVXxQwHL
yiULQfvzdaIHFz9cAa/qiJgZEZCHoHiEwtdIC3WX1NOL+2r+2HX5Q0f1DRpX
NdbBLILAgG/LltoQJD2E+rFM6XEWHCof3lrKQBiGVm1qZRU5z4KC5qQKG1Dl
MPzpW2vZy9lMfP/wSW4fTZl8HA/qo84U1U0JxkNMXojbz3vJ6G1UvV5UDjpX
gayrQstOOWOs7U/zAjvUuC8qgCSyDIar0hvTq4HkwUitwNWT2EofUQgEN/oV
aW1cfutDOOOFbkBTe8UPHZLC+m4/SXY0eKaBo5mvlpRilpVXaFV4Yo3lVXnR
cfB/sQWrk86r57lfJTk2ruS1wmQG4bw8EbTMQ6+GxvE9Bid3xX8eaJGBCxUH
TBISBxWnoeNCr11+FLdoOhi3bi5ldaTUThX1D2jQQxABKbPBRxeYcRSUl5Kb
KJpB0wiqRHAW+Z0mR94KB4iqL1HiJs1iIZNAbTcktiQLaYVM4ZIhD5HP5G2J
K/ejwqpe3ZBT2UmPafYTKpQ1OOR2iQnpJ2oMs2Yq15ZN15rteZYmF7KHyoRW
PB3BGN6C6qnIE1NDYZI+PBRthB2s8jSq7BifT4ml6m6QoKbLUp244VrAaIix
1Sra11C767UQDDpgUnhufibfos4WmPplO6q5pgw7Zjiw0V4lstuETJ7EDxx2
SRhCdofNt+STh3wnYh0ggUEa3zhNKObiV6mCjqmmhPFzqzmaOyhF1E0WJj9F
UFTOiRgx22bBkv5e6YMVXz4MoOAndkA9Nansn0SFH01Mu5+aoaqXuUsv7hnO
lkTBd4B0dtfAmC9MAkxTtn7PUR4SrlZvOaQcBtbf1DcVfaDRmeRHoxWStGNb
Y+qpItGFaXVlyxe03ZZaj0xbxM2jGBtaWl3W3C4N1qlKhO6ygqAK5A+uvOgS
bDS8zJH81OGLWme0Tin0TDyEBtci98RxyalQrwQtmT3x5PtSUH8F4gthpw+n
dUkmm3shOhPEQGCi67tAJ2C59hFtdGPIqbCdyPakXZE471ih4OSsiGI7pzYb
+K0pXSxOqGY5EMEvV6NBHenP56wPQoXY5CWHuD01twqJynnOqK2qsk/TfMAd
lQ6zo/QSdHWIpjD5kPp/pwWp2XNfNHaHIcR4GUuO1egzOzQHhCLeZRQjPzNe
2S/1lr0igZxLyQHm3a2xTw7CbPZqx9mPcY2HawiPOxdgoRYvaJKwy6qQzArG
OVU8dIffSg5r+XqIH78s6ssm31wpSummoTg1+oDLzmGwloQAWzSgryDLxZr7
LcIP5WsEAF5sy/VK4grwW+GsXp+ZZ8db6TRQUjeLBf4kPXzxG/S5aTYu7lRv
Iqh7aVrPPbwrQozo4Ay6qXNo+SxPlIo+46S0PoDyWWRQV+Ulw9iXDUemycXi
mD7OIDa7USYC24E4IvChRbkuxjFiRORPudsso4fDBs/qi9mC4ahAiUGjFSUF
2iQ1fJoN3DeY0znVShMGgcEJk5fiktILyTDCj1KWPVDJDNTEfDATxAspu6h/
NqkjWW4ZF9xgPjTcln94VUksKrAM0t1kUCvBI5DRfWS1Rde4A3cuU0SGHgQM
00LA2ixeZzE+mQhenOKlRvyr2yts1phSd3DULfvjNRuOmjko5Nh7Zc3hXjLk
QSXDD6Lb0nw7vdVIVy1DBGPIBEFvjjc4Bq0fPXy42/HBe8PdZlLVgylepNsD
jT84FYwS8wK7C4X/uDS1e9kOaY4Gq47hRvgPvKA3hCFGPQ0lVmsiH0YTrF1G
HgoKTHrhmjjOJkwUeFg2QfaNo/q0KqikWAP12Gs0nBAcnxDKwDg7qu6WmJUh
iaoKOeO6/VLrBLb5d1AdrgFLz4J5uMpNzHyN3IdGwmXQcBojsHy14Qq4lCTp
xMMs/EQ0l4+fLJr2QykViz+yTPO9pxWWNYTkt72G1IPGwi4gUZG3Qvn9oAF1
0Km4nIG0kXVSd1JyTrP1V1hEdYD1BO95uRAQYMxDKleWeQTDElfCrIJpcnMo
2F4hxGDdlP9I8QxG5plsSTJNQdZL9wXdTNfwl6kocaA4fJgx3yMKY5VKXo2v
LYo7UEcGT09tk98e/bX/YfwUNcQ4O56dnZ5QB1750zd/yv6MAKYoSc+/OD7M
Xrfs3RfDmAHKt109S91FzhmWjDzNkhxqh0gf0gHwWrAPhmma8L+nGE+4jZGi
Ji9dS04fuUv8q4QNKZZEiY2i7fv/HKStpyw3dcvGrmygOZyljT9TSOnoHNAG
n0bD+hC3l0WWl6/KGhshXEUftzhwxecoq3NdcEpglrdVOj0874b9daigYwGZ
KPtRNVDdTckxITspTPX3HSmBPycbMtAwNaglAw7Lk8aGlMEW2A+RlCYNBwz6
gxMuEKh1YVuZk0kPq27MPiEXExZfIsv3D5KfwKGIlpppU1jAwVDno9+j3S6q
QjyJYo3h1ZuDmeASQBxiNV5+RDrGIj5ZlPgMGIosYpipyQDHh3YJiBfW2VoM
SaxnIgk9FjKZgvJZQSCidEfjcpmA5JVd2ItonPn4We3PNZ92F4Q4qH3DA8Kv
Tpjbm+iZZCfnp6ldVFJ/E7j8UmyFQobSQEBBXXIlZLOSAgzenAiIrAwu26MT
Qbm4P01cjZF5pvIEj8m2XcxpssJ68ETTRHeifRLz4JJZ2gO6rRU7oc+j6Ecz
9eNHnNygE2Rs4+Cu2GE26WUnWvhtjc69rg2WWELZ/oJ1GWu+6YQtj4Ysoy1o
epgoKc/GdgpsR3UMFAVEcvBwhlBs1+18Qlni6AiVsIlHIuhqhXVXJUBHpkli
da6Y+u2twFDbwaBTpAkX67rGxCs4wUY81ixGd3cK4joL+6BtwrZpDWc3m3Gh
PcEydq53uDJAMTps7Kk3CB2KcryK1uxLK431Rk19KhAZMFqqXxtILa5clyjX
NwzvQnoPKiZlSxQZK1LvjYmHBHbbuohdFSQ7AfUAiwBL+2oKMeP9Oz2VAco2
nYMrWQHSITUzyveQyvdMApPykRwY4bLTwpMY7RvxMAj/9+ifr/VvmNnEQcHR
1xSSnY7Dd8+wVsEY1KDyI0q78ExR0R9C+H32ihxUUmuqnh03eY84WcTfg1aA
qatol6C7AGTQRXdLyJMCH4/WaZZmnbX5uuCa/UvRS9DILKgAjd+ew4SOvPPa
0Zd9Ac6uWF+k2iPVf1NTqGpZS4knOb7zju+5aaCvj4ub18cYblVLCNE1ltsW
pg2EQQzwgyanslxxFhY5sNHNLLkssiLb2ql2heL8zwXIYpzPgz+f0n9brcfV
UXgt4vpnGnQfVHwO2fw+HQT1plntrIk6+nre1wi8aYy6kWfoe+gL2FaIpb6+
28dkabq6e6sthU26Yp8KW9AaNbT8Xto38ieP5p2uJuEzKfNHa6A9DOER6gjX
ebW9QNjHBiF+k2Z1umtr7gDO+fzUjitRAFrnNQBb+QAu6K1vhJN8gUfoz1lV
CWqPyfxQFynKr7FHS2sZvaaSwDViJ8RsG+dNjhqI9h0fG9TgOYuYGs67u1zn
7RXFyqlJDWuxQVuNsvMzPROtXSEpedB3fySfBcH89z/IX2b6lxn+5fNs72B/
Mg3Duh9tDJgd8Wx+yPDu9VPcXFWe9Ner1zeiXVwA+bHvwqQQHsAhMi8vprDR
8D1qtg5gEZXpUF+OYDrow84UbGUP9w3juxhnbUDfwQtyuTXA3E47t+S8/xxD
lxeSlO19mFveLK9gbCqhv3c757xAHZS8Ra3PHiZytGIiol5P2mzqkTIgLrre
gmEWxA+s2oVBLrHRNUWcyUPuNMi0bplm5f3vKd3D4OKcxF3nnicVBZ68JGLm
hQS4LduIUeHiDgobKiieTLfwvEhdPTKkLvikN1Y8v48JsYrYlO3VFyOsBe1K
UJyv8lWfJcDoemk0ZbtrsJAC1nyF1hRQNJu0JGvoW7fKuXEY6pkmqhs2XXh5
5N/Zd6BMzITdJUext/ug5zC1V3LMvkWfrJxAoXEm6hXzO86si/eEQnvr6Q5S
0ZqHzseGI7wz3YSVNX2MzojoRoAprryhD3sOisA1poBztgTce9CR6Wb/hZ4V
G9siark29r1iAQ1Tt3sgZVCjd5+ymrOE8vK+mmEqgCgKkmMCc2Gnxg5OrNqW
8GuRPHhtZP9luEToUIA267sRPTnN+33unC3A2Z8Cc1OsaL96LgRWg9KPygxN
9dB1+F1h0Vw2OLnt4nvUY6t4Bd4R/c+BrZ9++fLpwfOHwNdRhZLiWVzIvz89
eHjmHx7OTVyppu28G1rtFG7g9iHEdDiKSsjZ7AmA+d27Ds79BC55ddcSpBS6
ELjBXnq+ppW4Ecm3RPs3EJgZKa2pUuc8Yqn31MwWvD3D62DKb18tnjsEYxfU
XGMETK0Mkk6YmZnWSWR7mILucl597KMtllvKTG3K9gN3okHtc/9/DM/Ign73
6TYCPS49yFHRyOTxPhVoBQ2w8FyTCTRrW33I/UuCKyQ+u/XNkGE/8utFebnN
KZZ0E9tH79DvLGiPJN0nZWEn3tHfURYm8N/yquZCxB3mF2tayHOT7zFXULh4
XJy/AqgHeo1zdGgWGqU0uFCTmH91BP9DvfsITFcNhL+S5sOcIDtMQEU3n8an
3FSdzhUzG3rwWazr5wsgwXkG5K3qCk5qJoOiV+eKjufKQ8jACLlCLa5cyxt2
Y7UhyYDhDpZ+HyeyKlCDwv8N/4PjyzIwEN76hzbbxRqkGI1vl/+QHqX/h288
Uka8S1rP0+cP9Hkk4qxcoYVkQFxEL/mhPJxlX6BecmgnkNn/3md/1E2fw45O
U7L7YzY5eX18iBnO69kf4J+fZ2fvDv9w9u7ziRvjs8x1MD9M/nD2DsbgG5a9
E60EhoFfnggTey0Tp4sUX8R5vW8uQZL8g4sXkrU/1kMyL8RZb8F/SK520Xw+
d6uMg4HNJXuSnWxB4cUi0vfUPYhvAnzAzkvHTvdySvnf68Ps4fNHT6ey1sPs
mzfHJy8PHj369OjFi/i5x/PBxNG/V13qxN1243i4234kv4hJHPaJDWt+InNH
7PGd4aDSVeQfc4oT7euHP1M3U+e7VcZ8FDeiJmaZ39iGIMXRmgIMfATIaNh/
gxkhqxvyDfC73/kY4/y7brnh+WXZ63c4MzvXdH/+/vf+Dv3977pH8C/Ypfmu
kT1BAZ2ecoOc838/93s4yvfCf8VM8H+w1LPTv2SPske/frl+xP+SGeIOTSbp
7hGz145SZBRvLZ/Xpa6bmPi18xtMhj58scofH376In92ePGsKA4fwv8ODx8e
wP+nfz57Qv/KH8U5P3W3Xq45s1JvGw04Na/1S/olxfiuxBXJPaZr7DLUXtmj
Z6yXHt7DUceu+GQa+eCAOb9EdhrfZYHz8TD7ZEzeZV3ZrYs//k6XKmtEMtcA
Moi+3/2oJfycnjrSnpPEqu3YpiShNh267cIA4YxCdS3nKZNqNCfnGQPIkkuT
40O9ND/66k8L0Gzv0XyftovyQcRvQqeC6YboIRULlcz63KpWSJVOllpzVgCi
rcJwC+TwrWDUoZTCeYOoOGKUDWWEG5UYFKqW5DLT5GN4mKbIC5WscbfMntjp
z8pz8gNZLdkk9eDxrkALp+ymMaHybaJGkeDCWZjOIsPJ07oskcxEZ9nfWezj
W0hyk0wbCCdSHR4DpQBHmyTEDPv2mLIx1nX9AXTojfd17FZcaOl0CnGuVAcA
HyA/KnEVKi/qCobh9Tw7Xjd2Kli1gO46jiOr9TsoeL5E+LjbNOb7qe4BTofW
mXoUeA+LgWRP7Lds7/F8H31BubcELUVGbRPWMuRN2p9kObzSdGCjpL665I2Y
EeOeW7cO3pT4RJ5drusFc1uMcclgE6+ATB38MwNwsuC3HUALmiDI2KSnmyqt
ZTxhApE8ichZ7CfHtkYIU+GSVSjWhggWpbi11DKOVoE8jR861XD0Kevx2d7p
6b5yhwpUphCeYs+wJVX8CI5Ka1AvrXNkidcJLKnyWsAZFh4oQu+3Zq9gcqvP
Tsu3uLBOSTzGBmEgQRKgvaFsgfaq3KQxIMv0/FDcUV+o1HrXLuWE6qBlZ0KS
ypTO35yR7tdeoU/DQBNKgQBSAMyiBVV5lTqE4lWRiD7dMQSgoWR4PXJ+Be4R
Y3HicMiylzhpN5IGZxPmzvcNLKD92CWSjCDzW5etXddWnWT8tx5F6wTfO5fI
O4uK0WVzIp6mi0PdCgKcuRN8t1y+/Q/45nsWYfzf8xAcjhcEF96WQ1kkgzXR
lVlR4k+8z1yCgsMgzxTQCvI7GpAXEzz7Y4hyN10a3Ev8hJYIR6XhQKRVsQp/
Pn3wRd6QWwh43OmXs/P8cij9EeUgpyYBXOHF14Q+DmRqaA/BJ8fBLDdoV53h
lxSIiQdJPF9OPNO/nQfIfE/BtTrwAC0DTwbdvRrmWEWUE9czO/gva3jv1dG7
2aPH6CZbShn5uZZMUBNGhBDxSYQMktCow972Fz9tkdjUmcpHGjwuihGNfsgB
tGlcsmbKHMQFdp542ONd3/+pRVCRQNrb4Ly/n/g4KUyWMyX60DbpgZy6gUGG
DE/GRnKXLsDqSy4hHYY1+HgWM5wcsMhRyF/8exqSMMFDidLVJX/CppRwAfZO
ijGa+sL73IFGmQaMN2vTOtHpWa1ox1iKQzyQGhoVfqmik6YrvN/3EphGZ2x+
imVgvhIKX5dIwGhm286ntonCxI49YjJ04RnaQ5sW9NQjIiDG9mG3gH5xDWKp
oB51VewDa7dR+wtYlFPB6aT8pOVto5iQ1k9YdZnzMHASB6+Lgz1e4/6y1uYG
VsztRacl0adEZy5lF88MivxKQOWJZqTHkGg2SlD6u+z9bcVlb/5VThxkfHtT
P8cdU0hx39N1kQMJt/mda1++bfNLqQcTouwPMKPGpMAnE9Up5JdYot1pN3AX
oBZWcHrq42kcgnfShr3rQ18NpT+xQ2ICYwAl4GAT9sbgb/AhLtvN12x/se+7
Z7R0dXC5oWr4DDIPLaQYyYTZrBXQ9WbogzACa2JI9D5/Mg6R+ZpRjkRolhjb
sWrGysaVqYeO4uYM/TvT3q34lej7Fm6guxZgj1J3/YhCPhEnBu8xfVYJRRHC
p4a85bJSqdkGXHFqAOLc7x0VWKvD/ZticQL3SyVhXBGRFC2TEwIi0FpVa2ZU
/7pZhcQAyiCkMcMd7mvi0nzhKeOr4ixth5AcnKLsMBqtgGfs2z5QZflGvL5W
cutHwy2i0zOz1IkFZNwbyeiWKh9adrGKib6gr6GSnEAH3EnMmJERFDoslhdY
TQTOcL2WdDvKIOGiLDkpv3eqkOwM3nNULNtjgGOWikKUAzG2L2W2pI8qMxSv
yMi3nYLPdZFoelGiH51XLBglGAX14JMPhs1HKyFl9SVGLye/n5e496vElT3P
joTGCTECk4qjH6BzlzHEy0hLmfz9D38fuvqRvVB+Cpio3vgiFdTlpJkEZ2aC
ow3GGs72c/RqvF+gSGZLWTYw7pnMuuxdBvk19clZr5Zo3jJLkMlIMtzYeYin
AIgd9qa4uFCssISma03Oo2AhN3+KbV0caig3hAWtlzKaqUFPelXGUnuZpTDn
FvybMx2xnwRAmDelYIVw+nFNZjFvf1fa9RVJEB0JfYOfUrUuCNYDNiomaklR
IHJkfNYlvw4yLjWb1joHmYzRqMmoryCMVch8UVh/8jSMqNAoqMajLVAjjJN8
YCohS1fHMSjCluzny20OWlxXYN0uTJlYiRSCu1RfHhbdF6jgrVRtw4mlWcD8
Zc6z4RCQCJNGAUFChdbGZsNArJyzRdLztnZl9mMx1+EaXF2ddFPmcl/fwkiT
alJ0ouxBrwqnjQ2BIt1a4ZYD/oFFBQIstmWzigEHRremlhZMCk8gS4yNvjg9
U1L4xYUwSKgOezooVitEkTPIdonYfwyuTCac9ajYK9p9pBDr2EcUDiIDZ0v9
txqp5nNbZuYbbS8pfCnO4p7UK+2rhkF6tyKtUD1VFdxiQKQybGuO/GOFu3CX
YrLsvT1/vZ8JkpRaSzbpRXoHsPKXixJSMHzXZkbo1dD+HRKYK2hya9ZPp2hP
faAD2PLQK3Yw3BzZ2SSjNbnMgnq35gQXMrrxoEHOp48ZDDjbGxzsKR08uKnV
8RAzAeJUIDY+F4UNiyz5jKXZK+HFIfT/5PImXx+9O9KKUOx9CGrQLG42rgcx
eiStPLfqnn8r7jgjMuTRffxIFYUdmaitBkKdyX+FFwjZsEkOGGjyobibeBcG
/uKPj0BCWpocs6DEcy2Dl9yvIeLQ/wMYXsZuddI/WdhjbRcmf5DhXq1UkqMl
VV2u3eV2mCScGkWQZYiqceQQu8wpQZxxo4KI9ZamiBhaYkZgyumdGgGTieRz
yp0gowe+nG6n7pAUMcruEOE7VBoHIsaDc8MxzuXVotULK/ece+qQnXHpKoSX
zM7IFtFD6BN52nlPxQaXC/VuDvrNDMaQ8ZVpvP403UdFQxVeMHzQ64kE3ev2
iCqPNPR0h27iVnsuEtpCRAwOL1CHbUDLwSAW4o3EM0BTiVVPOS3HWSQsxK4a
WCCCArNoq0EJzxAdA1i6+KaFJGGWbY05cndM8HplB1UveLBfod2FWnFL/Wdc
uqnWMI0g2AtgCBIy6JVcsFXGPmy+b1irmJHcaal1iF4Gb7hnMI4M4bhPIVVv
6nqSduRCNXyjaV2cA1dRLkLMiaDIQ2LMfPyYFIb/OJoxETSn3YEYZNw4CrOi
qcdKP46c1MM6Bssqn1mRODdGdgk8GujraE5h0SZsJKrFTsPUO3mYfU3FI4ow
gNTbzKjqHrQSeRh+N6Nij6noSihpKpKlTWqzcpYo3rgYZCvyKhZc7Cq3SPBU
avJcTIN0QGxI95PVY8/LOUNHR8PS7xCGCaT73jXrBE29xUZxV3XdUc4yXlJm
htSZLzntPbJ/CKTczHJ2RI1XlhJiCV0xg0NkxwX6hBGuFuyWGIw114TkT6Z8
UlLs6Gk6yBQjuVdmrBVbywyIpIgegO6ezM9oiYnhYoVh0aXh1Dlrc2jo3ymy
xDwbTm8tYGBJ69mBm0KqGWlSMw0h2FfaWiJjSQ9bX8Q2ONMgKGy0w7WDQfdw
My0aIWylrhF/5E4wFlE5il4jPayopwJH8+mucUTSmaJblgQLDiaYsnukdv1R
ksumiVb+x542tC+ohfEDue+Roax0q20d4nzFaa6AmM6rJuSFnAs4lnbjjX0d
6cD57VjvcmcUIOwiO3pAiUWnp21f142oZkHMsYImio/qFpMrmw9ITh3HBOFi
nml6QlFthmeRO7Mybi6V7Pk/cU+rYEdGwjIbPbekH4meJWrGvY3O001l5u0D
aXwU2h7Cb70v5IpebPpTsbZOuel5BEaWSZ2LVLDNZ5G2kSgrl24fGQvvNDDn
dCO5DGnaX7NUQRi8ovKUWCxe9M/E/K9HqtYbdehV8Obd+MXBJ9kScxSqu80B
nyG5SilVDBPQ7kcpYNnbjpa9CWppVbCkuJya+kcwMBDn7seIibSLnQlkL4fK
/JDo1HC4/NS4NiUpzYAQCjDvILtDqYEIYcPyBESzSbl27Xzasi0ExUBE4prk
JH0NIpJ8cqbUgVyhB5VJSLMYLU42JUWvcAdCvfKYhTxboWAvun1dF0VoPLxh
U7Jfm7fEAbaZoLXok6sxjx4aN6MBeOI846y9PHDQY7DdGpBJZqToKQRsUTQM
/U6JLZn1vGCBg31JmixIQQSCMAEjoGCT9nKl3i9oXb09ehkFBxElxeBlRrfc
vk5xTZMQvJ/blpoFdQzLTSACzUrqqIMTZOj8sfZ8eITu64zd2aKqyXfQe/6Q
zN5//ZrV29evXr2yYXoLMIubnmb1T8fkNa3vogXiiaEXdWRNIBcIwdf1eRbj
C3UC66mLI6S8m7LpwC4w5CT16a/rLUaFvZAWGCmYHiXuaIcZ2vc9LmPcd+V5
ZPZyXlfLCEGE1PjmyPrv+S6BUsZu3EFyHFD3rfvIpPFxgkdKM+BIM7QHrgl2
otIKc0oloNu+l9wrBjSO+SPs1EjpiPOFXN8XhfdHy5z2hOcr3M/JpKl0DWP7
i/+g5gVb676AB+2LVL5VidbohJyZBJb1NnXUrnkZlU9JCnr68lcE2pE+92j8
zfh+180YR01BuMlLeFWsN21ULamhX9QdCQUL82RCgQ1EuR4qZZ84SMxnOfFX
uwXrtcwNrIReY2iI816KdwRZc8j8iYv3wnN50Ky/wPuC2J09n19E12G4RR4V
WerkkAP1/U+nxhV2pMVaYdhsvOd4E21N2SJHae2ViV7ZZNLKgrzd1HdVvNBE
MJ3TWhl0UM22HoFXjIbicKT58+ZQkzAUJb9iWa6CR4n+CO8nPWrN2WcHxKwi
hbALxAe1sRTuWd4Keuf6jrUVOszJDONawcCd1WFhvgTxvSW5OHVsSB9/u8ea
6b7zZCRHIrqzdbztd+uZYgFlzV384LsfPxKGMcOIcTqdzYljA9HPou1lQmw4
s9vHQZqbC+MKdllSZUqZzqCssamqsjmMemtYG7Te0sq4yX/Cr9OFdy3qUoCV
7Chue0BVSvRRHwDllILEXGD8eNt954aT00lYFztj5RENpyqCSVPclIxPb+nN
qx2fjn3RJUG7VVQ1vXh4RVGE4muvT26eOTpFh1RzI7a2ho94Rpttg2gwiNpa
CxaOliG2RUrqzL89dL6U4Ak+Yfiuh98zVtISi0mwACrDkpHZ0wL/3+NHT+b3
jfALHh1+DGkqe5QdZE+ePn3a/+pvMD4SXTbBZsvdup1g86Dr2fewr/DP5fVm
AkenvrPhuNvVjnF//i7FIX7BoyNfs216+uz5k1+5Tfd+gPepgd1Z4u7gvnxl
ltLo94ZjkDmYHTx8+Ojw+Ivnh1gmcXiIrx3ia7FIZ1W17Uqrc2aPtD7HAUFK
RMOpVT0kSYGydlznd9xDWy/dx4+9ryDb9Go2WX+gEHScUaO1zVojyMKH9K6Y
tKXsrhXPK8sL2DQ2VpC4Jtq+JeZSkuBDNHBhh8RekdynMgBQpwyAJKnNAEH5
sm7Z3RUaHJHZEitJ4mCaG+DYsFH91JH91H8IpaNs5N7XxyfsM7c1kmcOZWPk
pGpHUKa2g6VX1jV1JKSgt37T+/19qNkSIZ6YcxNF8qKszPfBm8obxRfXFsDJ
lWL+cFNkzfzwQXUBrAFKIPSBXjZBjs9G4ON0Apwv2fvCbcM9FP3HJPGOAuo3
CK93mes5sZPY1DcqvoI/aagsOcZ5NoK0w4E6MqzXDEbNmAFci49qVqL9hn50
mHRZVD3va71DcK6xj1cP3FeHCN4yBkL3bZWC+m12HHZiu9rdE1cOWlHkPL6i
8jVx/wWvLhrlcfAms4Bgsh9s4f4OK/dfzlS7FedKX0GehskYZ5tM47VVh4h3
2g9RolNdeR5OR9apgBKwa9u1MxT7njm0ODS0MjAvQwxMo8k7aj6muZa0AN1U
yd52Jh2pz2tDSiUcC67RSICSqE8cgddr+7MEoGsH1IrkmIR+mCppMnunmJwK
cYMeC75wE5TskwyTQbbAzlCATdLgjIsrpQbLPNWAvG0YzeYdepGmuNXNZUik
fVUv47MzfvfxpwdPH+/QSfxA/5l3x3WlZMTf/FtU3hzVplRX+tnbiSrHz9zO
Jb/89PGnz3boLruX+MveHWznp08fP/7Z2/nrvkXbmWhXEdD2V1DkQBNN54jS
/sWnj5/+Yrr8BS+O66i4nY9ggJ9Pnv+pT9K2koKQKqy7P/7LtNbHj3dprQcj
Wmt+H7NRBZVZFrZ93qmrHrCuKilUEiAQ4fPu/UtyPEf8y+5KizHcOinTAGTd
dqNRwjQEI0Xehh4qMvx1x2WnSeZXoPxsB8QqS9accdFR/ddlQlZdGVuBy2z6
CWHnYxUEsgGyFOr/s+NYJQHHnH2SX96q4qxOkPGTYRkqiLIIgYXppJKELBho
0pNdajBQdIkkq+3RyiCh6sRekZcYmUf3ffK6Pp9YsrwWKal45N55NocBFBkK
9BAn4/D1T99ixzfKErtwlkO6WoUjML0Ba3AS/H2iBAJyQDpkswXrG/H04x5G
35g0ttSKV1TktUAl1hTToOZP4VUHSU+V+LEr2U8phOru3YFPesGPGNUjLduT
iRVUoz+r7YVkaYeT581LhHmIhM4nvqEsXyzQL6QuMUvAw02hJluYxWlpFXsM
mozG19L+haxqnwtZSEmVarRYAxmjVjMuf9EgXewbz+l/SWQh0Cn6wJJ240B0
yGIV90DxI1pFVJ4m6U14s09Pp8HSHVsJRFPf3XsATlWLJWMKM+4SGiDWFSTW
q1FkMz722v3ERXgqVTuEbZ19/ASuVLv5cSzVPs0bl/CM5pztTOplr6xLp9aU
dXjqnrRzgp+MjSbuTZ9O3NOM0U2dVw1Rezdy+FS2PYkRUGGwlqtQ7SoRrsRk
kwxyrkwBSwNBd6WgG0vlaRY//pjFRtqkYhvGHB0LrL2lk2u3C2pbBeZ27A9D
LEARxz9+PHp5kgDEI2GSCf3Tg7pCN8x1nXV17P1JvZ8EyT05Qd8b3va97W+8
b/rHHE4B+sPkaNvVVX0NF+6d9J54XV0AdVGpO3DXSbZ39O71/jw7/vrNG6E/
Nf7wq66viG/hEqzjrWVIvIwvDiLxXJEPO4RJetS2i+OavmEV1bRgPesMG+hE
YMK0C3Ts4qz5mZpBTR9xDmnXV15b2Hnrn9wrRiNi/5q3KabbcqF+yS0u5VrX
VAoMd37mEk1V/PAe2iMeo0JSpbAKoG6u9bf91F5Kgw5EwTZfUo+ozUsb5zHM
Joc1bq8NPnIkUbxjUsNQT8pekwU7AGJioVZmbKtq7WououNkJdnaknLuCmTS
/dI2ySKKqX8oCxgXf+kX2fwlHh1zeheI6XseRXwnJjfxE0r5N7orYiut6G+h
zJbjQZhLW6+NLCqzyxT7E2AazFV9S130rje5ZND4wpyYlOljgEo9wJ4xuYWd
VJTqskVIhoaDf1QEJr16c25W3Et11RLda2omRYPUkuaJLkF77LK8keQwim26
nHMSTJKlqa6Fv7397ss379/DCh4dPH7CqHdXv7sonj+853+PfgeP0xMMb/U3
Nkj+9rfJ0bvvMPL3nSVWApN8Ms0O0E08mXyraFh/e/8dxpC+e/P+5dH5+1MD
yfpZX359cnL6/vz9d+cvT2DwJ08efwvj/rwZoObyv3wSzW8+ia+PcRLPnj/5
9tt75vBd8/3mf848nsE88OVvw7fR8iQFaBgv4dvhIUeGBqizQ07R1QBcE2wE
NEU/fuwNy7qBwx7lEfkrY25haebimzpaxq62EyPBQjH8fpgkMizvwcQwCcdH
gDAsy1ZjFC/fH51QoVR2fP7mbB/fhI0L/AIGxnAKHQgndIpfKyCw/vmZwLLA
39G7zg9wzjbnfcc4B4G904S3Asjal3IYmZgQJipWTd1iDSvxk07b1YpIpZnD
1nL+lLRVNoiXlYBPyQL1973S0aDplZKAK2yxWt9p/D4JwcQICCZPUSkMa8Yg
+dflBRl/K6eB3V7dyWJLSXfWTCt13KatUCPYsWvxKZgYI4kGbbaXokhkj/dd
W9uOW9XjQijrS0J/vMZrTCG7LII6zy0/h1v13LkuMiq9RvuyqBIg3FwgPkUX
l5Sdavic5E/3+qNxnwoTqGhIOUkTVoU1ciHfSBSSYFlppgz52EttvyTNuoQo
2t3rCJz6pTlWlDq0vRbXA1YGMaIQ0EQskdmzjgtajFfmlxUIwHIpHSLlSTBM
0d7trlgXE8taIBH6mpxcA1t4NL/4Xv+WUpKF5G7h8MhLyB3s+JeLpqdPn0bR
dP/HvXD8Lb//9Gd+v/mNv0/S6ClJxXu+H6Xif+Ucnn3Lo94jEQ9+WiK6ntU/
XyQeGFI2BoUbMTLNpL9HKLrPkZdrVa5S1BnnjUVDfkwYC0YlJiDKB8yilebn
PLYA7uFzG+6e/g2rwkm5io/mckufsdVat1lK1T4/f4MMAnQeLR9Hl8egw691
wnWr7n2wwWx75nFUDs+QH2geoUktDY0rLNxb1I1zmrpgJpdlyJQepRWXk4mT
2FYXh9rMpeJF3SOlg0lpVgZc6SSGOdOlOHWkbL1RJYHSOioYgRQMOl9PD7Xi
1yDeXFrwN88E3I6tIveWOYAMwQnEDNabg15BTiCucnBNh93pI36DqUUDFUgh
qgjSZUldsNnOx47YWB5Sc/afmnJDZQBOv7vCldWKz6GVQkmUmLNK4kFpXBe5
5zw74jdtR+jOmNPC+35InfS9a0f0x8EGLq1VUBCASH6DJfLiThwTvdkOh8mx
pXxdUwXLqsBkQsILkopFm70/j+FqM2ltgS7HXptlrW+I+8Azt50QtBsqzsMr
xQNSxyPKpllQ+iIsoonlN3EBv63x+lNW673i4Fcaizrm/7RPexMRjMS4c08O
Hj/6L9o5PNPffPPgt9/eI0Uf/7QUPf0Ju5I5jQbbJKhRaOSzL3Aeox/vKD7v
4xcG3KjJaJHMSRwEtsviy+LlIt3Xxx5o2cyE6R5O3SNIT/NwhAUSIlojE+de
ruICThOZnABEBtdfL2jRVudgf+OB9AnOuE7livW7sm1DZhME0O26aC7VoOjZ
SFgWUnjRYSARJDTaQnCq69sqjPBwm6MV89D5FFLciOU7FBZttU7pGhmf5ExK
wXmsuuNMNIr3NUkNb0RMNf/pyAZYLAtnzZEjnjJugxm83k7k1TsQJN+EC+s1
Q0qT+HgLC40z650ulbsL9Jz0SYK9FBTGnG3d4ocOoSXQny2moWoV6yKBBaEU
yp7JxJU4MFX12Y6betjIs0C39evZ8byAWTfdLK/gSGZ8iyhlgKCY0O//8v3p
q9mbLyUK8P4GRyxuQ5h8UyyyN6BjwYQmU2kE9eL5c+x2RBmjeKbsaMa62vKy
ZGNUyzRJP/rq/PwErl2+IlQerLRHpQ0kIf0hNvtCZauVZL7s69PXsM/4+TV/
3qBCBNQaAUiDBAGS4LPr4dMmE6HvIfYUVYswWpwuDpjmSwItZnfC6auzc9R2
XoEW09QVk9jey/r01T69Ie0LaEtk79D/FU3wPHAJHuOkyjQ9yI22eXYNVwee
j3mQsXteH3e3kvXhXI4wqCZeAsINkWbGHgglCT4N/S2GeUrnI54SiRVuS4p6
ZHu3sHcUmgNVYd+CQq1kHzNiuc6eqiQjYIs574kf8wVVh4wQfT87myGPZLwp
J0to5FShbfdieG2fCyWsAzO6+eSqq3pLvkC6PntgJT7eD72+qtqCPCYpsCSL
Lbj1BFnrj89JT+2Nute0eB/mMNeyIF/HwSgR8f0rQv8rKt/NgaHrYpor17LJ
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
1wEA

-->

</rfc>

