<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dekater-scion-controlplane-01" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="SCION CP">SCION Control Plane</title>
    <seriesInfo name="Internet-Draft" value="draft-dekater-scion-controlplane-01"/>
    <author initials="C." surname="de Kater" fullname="Corine de Kater">
      <organization>SCION Association</organization>
      <address>
        <email>cdk@scion.org</email>
      </address>
    </author>
    <author initials="M." surname="Frei" fullname="Matthias Frei">
      <organization>SCION Association</organization>
      <address>
        <email>matzf@scion.org</email>
      </address>
    </author>
    <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
      <organization>SCION Association</organization>
      <address>
        <email>nic@scion.org</email>
      </address>
    </author>
    <date year="2023" month="August" day="23"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 147?>

<t>This document describes the control plane of the path-aware, inter-domain network architecture SCION (Scalability, Control, and Isolation On Next-generation networks). One of the basic characteristics of SCION is that it gives path control to SCION-capable endpoints. In fact, endpoints can choose between multiple path options, enabling the optimization of network paths. The SCION control plane is responsible for discovering these paths and making them available to the endpoints.</t>
      <t>The main goal of SCION's control plane is to create and manage path segments, which can then be combined into forwarding paths to transmit packets in the data plane. This document first discusses how path exploration is realized through beaconing and how path segments are created and registered. Each SCION autonomous system (AS) can register segments according to its own policy - it is free to specify which path properties and algorithm(s) to use in the selection procedure. The document then describes the path lookup process, where endpoints obtain path segments - a fundamental building block for the construction of end-to-end paths.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://scionassociation.github.io/scion-cp_I-D/draft-dekater-scion-controlplane.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dekater-scion-controlplane/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/scionassociation/scion-cp_I-D"/>.</t>
    </note>
  </front>
  <middle>
    <?line 154?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The SCION control plane is responsible for discovering path segments and making them available to endpoints. This process includes path exploration, registration, and lookup. This section explains the basic concepts of the control plane in SCION and introduces SCION's routing concept.</t>
      <t>As SCION is an <em>inter-domain</em> network architecture, it only deals with <em>inter</em>-domain routing. One feature of SCION is the decoupling of inter-domain routing from endpoint addressing. This Introduction section provides a description of the SCION addressing system in more detail.</t>
      <t><strong>Note:</strong> It is assumed that readers of this draft are familiar with the basic concepts of the SCION next-generation inter-domain network architecture. If not, please find more detailed information in the IETF Internet Drafts <xref target="I-D.scion-overview"/>, <xref target="I-D.scion-components"/>, and <xref target="I-D.scion-cppki"/>, as well as in <xref target="CHUAT22"/>, especially Chapter 2. A short description of the SCION basic terms and elements can be found in <xref target="terms"/> below.</t>
      <section anchor="terms">
        <name>Terminology</name>
        <t><strong>Autonomous System (AS)</strong>: An autonomous system is a network under a common administrative control. For example, the network of an Internet service provider, company, or university can constitute an AS.</t>
        <t><strong>Beaconing</strong>: The control-plane process where an AS discovers paths to other ASes.</t>
        <t><strong>Control Plane</strong>: The SCION control plane is responsible for the propagation and discovery of network paths, i.e., for the exchange of routing information between network nodes. The control plane thus determines where traffic can be sent and deals with questions such as how paths are discovered, which paths exist, what quality individual links offer, etc. Within a SCION AS, such functionalities are carried out by the control service. Packet forwarding is instead a task pertaining to the data plane.</t>
        <t><strong>Control Service</strong>: The control service is the main control-plane infrastructure component within a SCION AS. It is responsible for the path exploration and registration processes that take place within the control plane.</t>
        <t><strong>Core AS</strong>: Each isolation domain (ISD) is administered by a set of distinguished autonomous systems (ASes) called core ASes, which are responsible for initiating the path-discovery and -construction process (in SCION called "beaconing").</t>
        <t><strong>Endpoint</strong>: An endpoint is the start- or the endpoint of a SCION path. For example, an endpoint can be a host as defined in <xref target="RFC1122"/>, or a gateway bridging a SCION and an IP domain. This definition is based on the definition in <xref target="I-D.path-properties-voc"/>.</t>
        <t><strong>Forwarding Path</strong>: A forwarding path is a complete end-to-end path between two SCION hosts, which is used to transmit packets in the data plane and can be created with a combination of up to three path segments (an up-segment, a core-segment, and a down-segment).</t>
        <t><strong>Hop Field (HF)</strong>: As they traverse the network, path-segment construction beacons (PCBs) accumulate cryptographically protected AS-level path information in the form of hop fields. In the data plane, hop fields are used for packet forwarding: they contain the incoming and outgoing interface IDs of the ASes on the forwarding path.</t>
        <t><strong>Info Field (INF)</strong>: Each path-segment construction beacon (PCB) contains a single info field, which provides basic information about the PCB. Together with hop fields (HFs), info fields are used to create forwarding paths.</t>
        <t><strong>Isolation Domain (ISD)</strong>: In SCION, autonomous systems (ASes) are organized into logical groups called isolation domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (i.e., a common jurisdiction). A possible model is for ISDs to be formed along national boundaries or federations of nations.</t>
        <t><strong>Leaf AS</strong>: An AS at the "edge" of an ISD, with no other downstream ASes.</t>
        <t><strong>Packet-Carried Forwarding State (PCFS)</strong>: Rather than relying on costly inter-domain forwarding tables, SCION data packets contain all the necessary path information. We refer to this property as packet-carried forwarding state or PCFS.</t>
        <t><strong>Path Segment</strong>: Path segments are derived from path-segment construction beacons (PCBs) and registered at control services. A path segment can be (1) an up-segment (i.e., a path between a non-core AS and a core AS in the same ISD), (2) a down-segment (i.e., the same as an up-segment, but in the opposite direction), or (3) a core-segment (i.e., a path between core ASes). Up to three path segments can be used to create a forwarding path.</t>
        <t><strong>Path-Segment Construction Beacon (PCB)</strong>: Core ASes generate PCBs to explore paths within their isolation domain (ISD) and among different ISDs. ASes further propagate selected PCBs to their neighboring ASes. As a PCB traverses the network, it carries path segments, which can subsequently be used for traffic forwarding.</t>
        <t><strong>Trust Root Configuration (TRC)</strong>: A trust root configuration or TRC is a signed collection of certificates pertaining to an isolation domain (ISD). TRCs also contain ISD-specific policies.</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</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?>

</section>
      <section anchor="paths-and-links">
        <name>Paths and Links</name>
        <t>SCION routers and endpoints connect to each other via links. A SCION path between two endpoints essentially traverses one or more links.</t>
        <t>In SCION, autonomous systems (ASes) are organized into logical groups called isolation domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (i.e., a common jurisdiction). An ISD is administered by a set of distinguished ASes called core ASes. Within and between ISDs, SCION supports three types of links: (1) core links, (2) parent-child links, and (3) peering links.</t>
        <ul spacing="normal">
          <li>A <em>core</em> link always connects two core ASes, which are either within the same or in a different ISD. Core links can exist for various underlying business relationships, including provider-customer (where the customer pays the provider for traffic) and peering relationships.</li>
          <li>
            <em>Parent-child</em> links create a hierarchy between the parent and the child. ASes with a parent-child link typically have a provider-customer relationship.</li>
          <li>
            <em>Peering</em> links exist between ASes with a (settlement-free or paid) peering relationship. Peering links can only be used to reach destinations within or downstream of the peering AS. They can be established between any two core or non-core ASes, and between core and non-core ASes. Peering links can also cross ISD boundaries.</li>
        </ul>
        <t>The following figure shows the three types of links for one small ISD with the two core ASes A and C, and the four non-core ASes D,E,F, and G.</t>
        <figure anchor="_figure-1">
          <name>The three types of SCION links in one ISD</name>
          <artwork><![CDATA[
+-------------------------+
|                         |       #
|        ISD Core         |       |      parent-child
|  .---.           .---.  |       |      link
| (  A  )*-------*(  C  ) |       |
|  `-#-'           `-#-'  |       0
|    |               |    |
+----|---------------|----+   *-------*  core link
     |               |
     |               |        < - - - >  peering link
   .-0-.           .-0-.
  (  D  )< - - - >(  E  )
   `-#-'           `-#-'
     |               |
     |               |
     |               |
   .-0-.           .-0-.
  (  G  )         (  F  )
   `---'           `---'
]]></artwork>
        </figure>
        <t>Each link connecting SCION routers is bidirectional and identified by its corresponding egress and ingress interface IDs. These interface IDs only need to be unique within each AS. Therefore, they can be chosen and encoded by each AS independently and without any need for coordination.</t>
      </section>
      <section anchor="routing">
        <name>Routing</name>
        <t>SCION provides path-aware inter-domain routing between ASes across the Internet. The SCION control plane is responsible for discovering these inter-domain paths and making them available to the endpoints within the ASes. SCION inter-domain routing operates on two levels: Within a SCION isolation domain (ISD), which is called <em>intra</em>-ISD routing, and between ISDs, called <em>inter</em>-ISD routing. Both levels use the so-called <em>path-segment construction beacons (PCBs)</em> to explore network paths. A PCB is initiated by a core AS and then disseminated either within an ISD to explore intra-ISD paths, or among core ASes, to explore core paths across different ISDs.</t>
        <t>The PCBs accumulate cryptographically protected path and forwarding information on AS-level, and store this information in the form of <em>hop fields</em>. Endpoints use information from these hop fields to create end-to-end forwarding paths for data packets, who carry this information in their packet headers. This concept is called <em>packet-carried forwarding state</em>. The concept also supports multi-path communication among endpoints.</t>
        <t>The creation of an end-to-end forwarding path consists of the following processes:</t>
        <ol spacing="normal" type="1"><li>
            <em>Path exploration (or beaconing)</em>: This is the process where an AS discovers paths to other ASes. See also <xref target="beaconing"/>.</li>
          <li>
            <em>Path registration</em>: This is the process where an AS selects a few PCBs, according to defined policies, turns the selected PCBs into path segments, and adds these path segments to the relevant path infrastructure, thus making them available to other ASes. See also <xref target="path-segment-reg"/>.</li>
          <li>
            <em>Path resolution</em>: This is the process of actually creating an end-to-end forwarding path from the source endpoint to the destination. For this, an endpoint performs (a) a path lookup step, to obtain path segments, and (b) a path combination step, to combine the forwarding path from the segments. This last step takes place in the data plane. See also <xref target="lookup"/>.</li>
        </ol>
        <t>All processes operate concurrently.</t>
        <t><xref target="_figure-2"/> below shows the SCION routing processes and their relation to each other.</t>
        <figure anchor="_figure-2">
          <name>SCION routing processes and their relation to each other. All processes operate concurrently</name>
          <artwork><![CDATA[
+-------------------------+       +-------------------------+
| Exploration (Beaconing) |------>|      Registration       |
+-------------------------+       +-----------+-------------+
                                              |
                              +---------------+
                              |
     +------------------------v------------------------+
     |                 Path Resolution                 |
     |                                                 |
     |   +----------------+       +----------------+   |
     |   |     Lookup     +------>|  Combination   |   |
     |   |                |       |    (Data Plane)|   |
     |   +----------------+       +----------------+   |
     +-------------------------------------------------+
]]></artwork>
        </figure>
        <t>The <strong>control service</strong> is responsible for the path exploration and registration processes in the control plane. It is the main control-plane infrastructure component within each SCION AS. The control service of an AS has the following tasks:</t>
        <ul spacing="normal">
          <li>Generating, receiving, and propagating PCBs. Periodically, the control service of a core AS generates a set of PCBs, which are forwarded to the child ASes or neighboring core ASes. In the latter case, the PCBs are sent over policy-compliant paths to discover multiple paths between any pair of core ASes.</li>
          <li>Selecting and registering the set of path segments via which the AS wants to be reached.</li>
          <li>Managing certificates and keys to secure inter-AS communication. Each PCB contains signatures of all on-path ASes. Every time the control service of an AS receives a PCB, it validates the PCB's authenticity. When the control service lacks an intermediate certificate, it can query the control service of the neighboring AS that sent the PCB.</li>
        </ul>
        <t><strong>Note:</strong> The control service of an AS must not be confused with a border router. The control service of a specific AS is part of the control plane and responsible for <em>finding and registering suitable paths</em>. It can be deployed anywhere inside the AS. A border router belongs to the data plane; its main task is to <em>forward data packets</em>. Border routers are deployed at the edge of an AS.</t>
        <section anchor="path-segments">
          <name>Path Segments</name>
          <t>As described previously, the main goal of SCION's control plane is to create and manage path segments, which can then be combined into forwarding paths to transmit packets in the data plane. SCION distinguishes the following types of path segments:</t>
          <ul spacing="normal">
            <li>A path segment from a non-core AS to a core AS is an <em>up-segment</em>.</li>
            <li>A path segment from a core AS to a non-core AS is a <em>down-segment</em>.</li>
            <li>A path segment between core ASes is a <em>core-segment</em>.</li>
          </ul>
          <t>So each path segment either ends at a core AS, or starts at a core AS, or both.</t>
          <t><strong>Note:</strong> There are no SCION path segments that start and end at a non-core AS. However, when combining path segments into an end-to-end SCION path, it is possible to use peering links. For more information on SCION and peering links, see <xref target="beaconing"/>.</t>
          <t>All path segments are invertible: A core-segment can be used bidirectionally, and an up-segment can be converted into a down-segment, or vice versa, depending on the direction of the end-to-end path. This means that all path segments can be used to send data traffic in both directions.</t>
        </section>
      </section>
      <section anchor="numbering">
        <name>Addressing</name>
        <t>The inter-domain SCION routing is based on the &lt;ISD, AS&gt; tuple. Although a complete SCION address is composed of the &lt;ISD, AS, endpoint address&gt; 3-tuple, the endpoint address is not used for inter-domain routing or forwarding. The endpoint address can be of variable length, does not need to be globally unique, and can thus be an IPv4, IPv6, or MAC address, for example - in fact, the endpoint address is the "normal", currently used, non-SCION-specific endpoint address.</t>
        <t>However, the ISD-AS number is a SCION-specific number. It consists of 64-bits, with the top 16 bits indicating the ISD, and the bottom 48 bits indicating the AS. The text representation uses a dash-separator between the ISD and AS numbers, for example: <tt>4-ff00:1:f</tt>. This section provides more details about the numbering scheme for SCION ISD and AS numbers.</t>
        <t><strong>Note:</strong> As a consequence of the fact that SCION relies on existing routing protocols (e.g., IS-IS, OSPF, SR) and communication fabric (e.g., IP, MPLS) for intra-domain forwarding, existing internal routers do not need to be changed to support SCION.</t>
        <section anchor="isd-numbers">
          <name>ISD Numbers</name>
          <t>An ISD number is the 16-bit global identifier for an ISD. It <bcp14>MUST</bcp14> be globally unique. The following table gives an overview of the ISD number allocation.</t>
          <table anchor="_table-1">
            <name>ISD number allocations</name>
            <thead>
              <tr>
                <th align="left">ISD</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">The wildcard ISD.</td>
              </tr>
              <tr>
                <td align="left">1 - 15</td>
                <td align="left">Reserved for documentation and sample code (analogous to <xref target="RFC5398"/>).</td>
              </tr>
              <tr>
                <td align="left">16 - 63</td>
                <td align="left">Private use (analogous to <xref target="RFC6996"/>). Can be used for testing and private deployments.</td>
              </tr>
              <tr>
                <td align="left">64 - 4094</td>
                <td align="left">Public ISDs. Should be allocated in ascending order, without gaps and "vanity" numbers.</td>
              </tr>
              <tr>
                <td align="left">4095 - 65535</td>
                <td align="left">Reserved for future use.</td>
              </tr>
            </tbody>
          </table>
          <t>A suitable mechanism to globally coordinate the assignation of ISD numbers does not yet exist. However, we hope that in the future an organization such as ICANN or a regional Internet registry (e.g., RIPE NCC) will take on the responsibility of assigning ISD and AS numbers.</t>
          <t>Currently, ISD numbers are allocated by Anapaya, the Swiss-based provider of SCION-based networking software and solutions.</t>
        </section>
        <section anchor="as-numbers">
          <name>AS Numbers</name>
          <t>An AS number is the 48-bit identifier for an AS.  SCION inherits the existing 32-bit AS numbers from RFC4893, but provides an extended 48-bit space, allowing for additional SCION-only AS numbers beyond the 32-bit space in use today.</t>
          <section anchor="formatting">
            <name>Formatting</name>
            <t>The default formatting for AS numbers in SCION is very similar to IPv6 (see <xref target="RFC5952"/>). It uses a 16-bit colon-separated lower-case hex encoding with leading 0's omitted: <tt>0:0:0</tt> to <tt>ffff:ffff:ffff</tt>.</t>
            <t>In SCION, the following rules apply:</t>
            <ul spacing="normal">
              <li>The <tt>::</tt> zero-compression feature of IPv6 is NOT allowed. The feature has very limited use in a 48-bit address space and would only add more complexity.</li>
              <li>In order to provide easy comparison with BGP AS numbers, any AS number in the BGP AS range should be represented as decimal. This is especially relevant for display representation. For example, if a program receives the AS number <tt>0:1:f</tt>, it should display the number as "65551".</li>
              <li>A range of AS numbers can be shortened with a notation similar to the one used for CIDR IP ranges (<xref target="RFC4632"/>). For example, the range of the lowest 32-bit AS numbers (0-4294967295) can be represented as <tt>0:0:0/16</tt>.</li>
            </ul>
            <t>The next table gives an overview of the AS number allocation.</t>
            <table anchor="_table-2">
              <name>AS number allocations</name>
              <thead>
                <tr>
                  <th align="left">AS</th>
                  <th align="left">Size</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">0</td>
                  <td align="left">1</td>
                  <td align="left">The wildcard AS</td>
                </tr>
                <tr>
                  <td align="left">1-4294967295</td>
                  <td align="left">~4.3 bill.</td>
                  <td align="left">32-bit BGP AS numbers, formatted as decimal. If a BGP AS deploys SCION, it has the same AS number for both BGP and SCION.<sup>1</sup></td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>1:0:0</tt></td>
                  <td align="left">1</td>
                  <td align="left">Reserved</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>2:0:0/16</tt></td>
                  <td align="left">~4.3 bill.</td>
                  <td align="left">Public SCION-only ASes (i.e., ASes that are created for SCION, and are no existing BGP ASes). They should be allocated in ascending order, without gaps and "vanity" numbers.</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ff00:0:0/32</tt></td>
                  <td align="left">65535</td>
                  <td align="left">Reserved for documentation and test/sample code (analogous to <xref target="RFC5398"/>).</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ff00:0:0/24</tt></td>
                  <td align="left">~16.8 mill.</td>
                  <td align="left">Reserved for private use (analogous to <xref target="RFC6996"/>). These numbers can be used for testing/private deployments.</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ffff:ffff:ffff</tt></td>
                  <td align="left">1</td>
                  <td align="left">Reserved</td>
                </tr>
              </tbody>
            </table>
            <t>1) Some 32-bit AS numbers are reserved for special purposes. For more details, see <eref target="https://www.iana.org/assignments/iana-as-numbers-special-registry/iana-as-numbers-special-registry.xhtml">"IANA: Special-Purpose Autonomous System (AS) Numbers"</eref>.</t>
            <t>The rest of the space is currently unallocated.</t>
          </section>
        </section>
        <section anchor="serv-disc">
          <name>Wildcard Addressing</name>
          <t>SCION allows endpoints to use wildcard addresses in the control-plane routing, to designate any core AS, e.g., to place requests for core- or down-segments during path lookup. These wildcard addresses are of the form I-0, to designate any AS in ISD I. Here, "0" is the wildcard for the AS. For more information, see <xref target="wildcard"/>.</t>
        </section>
      </section>
      <section anchor="avoiding-circular-dependencies-and-partitioning">
        <name>Avoiding Circular Dependencies and Partitioning</name>
        <t>A secure and reliable routing architecture must be designed specifically to avoid circular dependencies during network initialization. One goal of SCION is that the Internet can start up even after large outages or attacks, in addition to avoiding cascades of outages caused by fragile interdependencies. This section lists the concepts SCION uses to prevent circular dependencies.</t>
        <ul spacing="normal">
          <li>Neighbor-based path discovery: Path discovery in SCION is performed by the beaconing mechanism. In order to participate in this process, an AS only needs to be aware of its direct neighbors. As long as no path segments are available, communicating with the neighboring ASes is possible with the one-hop path type, which does not rely on any path information. SCION uses these <em>one-hop paths</em> to propagate PCBs to neighboring ASes to which no forwarding path is available yet. The One-Hop Path Type will be described in more detail in the SCION Data Plane specification (this document will be available later this year).</li>
          <li>Path segment types: SCION uses different types of path segments to compose end-to-end paths. Notably, a single path segment already enables intra-ISD communication. For example, a non-core AS can reach the core of the local ISD simply by using an up-segment fetched from the local path storage, which is populated during the beaconing process.</li>
          <li>Path reversal: In SCION, every path is reversible—i.e., the receiver of a packet can reverse the path in the packet header to send back a reply packet without having to perform a path lookup.</li>
          <li>Availability of certificates: In SCION, every entity is required to be in possession of all cryptographic material (including the ISD's Trust Root Configuration TRC and certificates) that is needed to verify any message it sends. This (together with the path reversal) means that the receiver of a message can always obtain all this necessary material by contacting the sender.<br/>
            <strong>Note:</strong> For a detailed description of a TRC and more information on the availability of certificates and TRCs, see the SCION Control-Plane PKI Internet-Draft <xref target="I-D.scion-cppki"/>.</li>
        </ul>
        <section anchor="partition-and-healing">
          <name>Partition and Healing</name>
          <t>Besides inter-dependencies, another threat to the Internet is network partition. Partition occurs when one network is split into two because of a link failure. However, partition of the global SCION inter-domain network is much less likely to happen: During normal operation, the full network fabric is available, offering multiple paths between all ASes. Even during failures there is no special failure mode required, as SCION-enabled ASes could always switch to otherwise unused links.</t>
          <t>Recovering (also called healing) from a partitioned network is also seamless, as only coarse time synchronization between the partitions is required to resume normal operation and move forward with updates of the cryptographic material.</t>
        </section>
      </section>
      <section anchor="communication-protocol">
        <name>Communication Protocol</name>
        <t>All communication between the control services in different ASes is expressed in terms of gRPC remote procedure calls (for details, see <xref target="gRPC"/>). Service interfaces and messages are defined in the Protocol Buffer "proto3" interface definition language (for details, see <xref target="proto3"/>).</t>
        <t><strong>Note:</strong> The details of how gRPC is mapped to the SCION data plane will be described in a separate document.</t>
      </section>
    </section>
    <section anchor="beaconing">
      <name>Path Exploration or Beaconing</name>
      <section anchor="introduction-and-overview">
        <name>Introduction and Overview</name>
        <t><strong>Path exploration</strong> is the process where an AS discovers paths to other ASes. In SCION, this process is referred to as <em>beaconing</em>. This section gives a detailed explanation of the SCION beaconing process.</t>
        <t>In SCION, the <em>control service</em> of each AS is responsible for the beaconing process. The control service generates, receives, and propagates so-called <em>path-segment construction beacons (PCBs)</em> on a regular basis, to iteratively construct path segments. PCBs contain topology and authentication information, and can also include additional metadata that helps with path management and selection. The beaconing process itself is divided into routing processes on two levels, where <em>inter-ISD</em> or core beaconing is based on the (selective) sending of PCBs without a defined direction, and <em>intra-ISD</em> beaconing on top-to-bottom propagation.</t>
        <ul spacing="normal">
          <li>
            <em>Inter-ISD or core beaconing</em> is the process of constructing path segments between core ASes in the same or in different ISDs. During core beaconing, the control service of a core AS either initiates PCBs or propagates PCBs received from neighboring core ASes to other neighboring core ASes. Core beaconing is periodic; PCBs are sent over policy-compliant paths to discover multiple paths between any pair of core ASes.</li>
          <li>
            <em>Intra-ISD beaconing</em> creates path segments from core ASes to non-core ASes. For this, the control service of a core AS creates PCBs and sends them to the non-core child ASes (typically customer ASes). The control service of a non-core child AS receives these PCBs and forwards them to its child ASes, and so on. This procedure continues until the PCB reaches an AS without any customer (leaf AS). As a result, all ASes within an ISD receive path segments to reach the core ASes of their ISD.</li>
        </ul>
        <t>On its way, a PCB accumulates cryptographically protected path- and forwarding information per traversed AS. At every AS, metadata as well as information about the AS's ingress and egress interfaces are added to the PCB.</t>
        <section anchor="peering-links">
          <name>Peering Links</name>
          <t>PCBs do not traverse peering links. Instead, peering links are announced along with a regular path in a PCB. If both ASes at either end of a peering link have registered path segments that include this specific peering link, then it is possible to use this peering link during segment combination to create the end-to-end path.</t>
        </section>
        <section anchor="extending-a-pcb">
          <name>Extending a PCB</name>
          <t>Every propagation period (as configured by the AS), the control service</t>
          <ul spacing="normal">
            <li>selects the best combinations of PCBs and interfaces connecting to a neighboring AS (i.e., a child AS or a core AS), and</li>
            <li>sends each selected PCB to the selected egress interface(s) associated with it.</li>
          </ul>
          <t>For every selected PCB and egress interface combination, the AS extends the PCB by adding a so-called <em>AS entry</em> to the selected PCB. Such an AS entry includes a hop field that specifies the incoming (ingress) and outgoing (egress) interface for the packet forwarding through this AS, in the beaconing direction. The AS entry can also contain peer entries.</t>
          <ul spacing="normal">
            <li>For the specification of one PCB, see <xref target="pcbs"/></li>
            <li>For more details on selecting PCBs, see <xref target="selection"/></li>
            <li>For more details on propagating PCBs, see <xref target="path-segment-prop"/></li>
          </ul>
        </section>
        <section anchor="pcb-propagation-illustrated-examples">
          <name>PCB Propagation - Illustrated Examples</name>
          <t>The following three figures show how intra-ISD PCB propagation works, from the ISD's core AS down to child ASes. For the sake of illustration, the interfaces of each AS are numbered with integer values.</t>
          <t>In <xref target="_figure-3a"/> below, core AS X sends the two different PCBs "a" and "b" via two different links to child AS Y: PCB "a" leaves core AS X via egress interface "2", whereas PCB "b" is sent over egress interface "1". Core AS X adds the respective egress information to the PCBs when sending them off, as can be seen in the figure (the entries "<em>Core - Out:2</em>" and "<em>Core - Out:1</em>", respectively).</t>
          <figure anchor="_figure-3a">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 1</name>
            <artwork><![CDATA[
                            +-------------+
                            | Core AS X   |
                            |             |
                            |    2   1    |
                            +----#---#----+
          +--------+             |   |             +--------+
          |PCB     |     +-----+ |   | +-----+     |PCB     |
          |========|-----|PCB a| |   | |PCB b|=====|++++++++|
          |Core    |     +-----+ |   | +-----+     |Core    |
          |- Out:2 |        |    |   |    |        |- Out:1 |
          +--------+        v    |   |    v        +--------+
                                 v   v
                            +----#---#----+
                            |     AS Y    |
]]></artwork>
          </figure>
          <t>AS Y receives the two PCBs "a" and "b" through two different (ingress) interfaces, namely "2" and "3", respectively (see <xref target="_figure-3b"/> below). Additionally, AS Y forwards to AS Z four PCBs that were previously sent by core AS X. For this, AS Y uses the two different (egress) links "5" and "6". AS Y extends the four PCBs with the corresponding ingress and egress interface information. As can be seen in the figure, AS Y also has two peering links to its neighboring peers V and W, through the interfaces "1" and "4", respectively - AS Y includes this information in the PCBs, as well. Thus, each forwarded PCB cumulates path information on its way "down" from core AS X.</t>
          <figure anchor="_figure-3b">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 2</name>
            <artwork><![CDATA[
                        +-----+ |   | +-----+
                        |PCB a| |   | |PCB b|
                        +-----+ |   | +-----+
                           |    |   |    |
                           v    |   |    v
                                v   v
                           +----#---#----+
                 .---.     |    2   3    |
                (  V  )- --# 1           |
                 `---'     |     AS Y    |     .---.
                           |           4 #- --(  W  )
                           |             |     `---'
                           |    6   5    |
            +--------+     +----#---#----+     +--------+
            |PCB     |          |   |          |PCB     |
            |========|          |   |          |========|
            |Core X  |          |   |          |Core X  |
            |- Out:2 |          |   |          |- Out:2 |
+--------+  |--------|  +-----+ |   | +-----+  |--------|  +--------+
|PCB     |  |AS Y    |--|PCB c| |   | |PCB d|--|AS Y    |  |PCB     |
|++++++++|  |-In:2   |  +-----+ |   | +-----+  |-In:2   |  |++++++++|
|Core X  |  |-Out:6  |     |    |   |    |     |-Out:5  |  |Core X  |
|- Out:1 |  |-PeerV:1|     v    |   |    v     |-PeerV:1|  |- Out:1 |
|--------|  |-PeerW:4|          |   |          |-PeerW:4|  |--------|
|AS Y    |  +--------+          |   |          +--------+  |AS Y    |
|-In:3   |              +-----+ |   | +-----+              |-In:3   |
|-Out:6  |==============|PCB e| |   | |PCB f|==============|-Out:5  |
|-PeerV:1|              +-----+ |   | +-----+              |-PeerV:1|
|-PeerW:4|                 |    |   |    |                 |-PeerW:4|
+--------+                 v    |   |    v                 +--------+
                                v   v
                           +----#---#----+
                           |    AS Z     |
]]></artwork>
          </figure>
          <t>The following figure shows how the four PCBs "c", "d", "e", and "f", coming from AS Y, are received by AS Z over two different links: PCBs "c" and "e" reach AS Z over ingress interface "5", whereas PCBs "d" and "f" enter AS Z via ingress interface "1". Additionally, AS Z propagates PCBs "g", "h", "i", and "j" further down, all over the same link (egress interface "3"). AS Z extends the PCBs with the relevant information, so that each of these PCBs now includes AS hop entries from core AS X, AS Y, and AS Z.</t>
          <figure anchor="_figure-3c">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 3</name>
            <artwork><![CDATA[
                   +-----+      |   |      +-----+
                   |PCB c|      |   |      |PCB d|
                   +-----+      |   |      +-----+
                     |  +-----+ |   | +-----+  |
                     v  |PCB e| |   | |PCB f|  v
                        +-----+ |   | +-----+
                           |    |   |    |
                           v    |   |    v
                                v   v
                         +------#---#------+
                         |      5   1      |
                         |                 |
                         | AS Z            |
            +--------+   |        3        |   +--------+
            |PCB     |   +--------#--------+   |PCB     |
            |========|            |            |========|
            |Core X  |            |            |Core X  |
+--------+  |- Out:2 |            |            |- Out:2 |  +--------+
|PCB     |  |--------|            |            |--------|  |PCB     |
|++++++++|  |AS Y    |            |            |AS Y    |  |++++++++|
|Core X  |  |-In:2   |            |            |-In:2   |  |Core X  |
|- Out:1 |  |-Out:6  |   +-----+  |  +-----+   |-Out:5  |  |- Out:1 |
|--------|  |-PeerV:1|---|PCB g|  |  |PCB h|---|-PeerV:1|  |--------|
|AS Y    |  |-PeerW:4|   +-----+  |  +-----+   |-PeerW:4|  |AS Y    |
|-In:3   |  |--------|      |     |     |      |--------|  |-In:3   |
|-Out:6  |  |AS Z    |      v     |     v      |AS Z    |  |-Out:5  |
|-PeerV:1|  |-In:5   |            |            |-In:1   |  |-PeerV:1|
|-PeerW:4|  |-Out:3  |            |            |-Out:3  |  |-PeerW:4|
|--------|  +--------+            |            +--------+  |--------|
|AS Z    |               +-----+  |  +-----+               |AS Z    |
|-In:5   |===============|PCB i|  |  |PCB j|===============|-In:1   |
|-Out:3  |               +-----+  |  +-----+               |-Out:3  |
+--------+                  |     |     |                  +--------+
                            v     |     v
                                  v
]]></artwork>
          </figure>
          <t>Based on the figures above, one could say that a PCB represents a single path segment. However, there is a difference between a PCB and a (registered) path segment. A PCB is a so-called "travelling path segment" that accumulates AS entries when traversing the Internet. A (registered) path segment, instead, is a "snapshot" of a travelling PCB at a given time T and from the vantage point of a particular AS A. This is illustrated by <xref target="_figure-4"/>. This figure shows several possible path segments to reach AS Z, based on the PCBs "g", "h", "i", and "j" from <xref target="_figure-3c"/> above. It is up to AS Z to use all of these path segments or just a selection of them.</t>
          <figure anchor="_figure-4">
            <name>Possible up- or down-segments for AS Z</name>
            <artwork><![CDATA[
                AS Entry Core         AS Entry Y          AS Entry Z

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |     AS Z    |
path segment 1 |            1#     #3            5     #1            |
               |             |     |             |     |             |
               |            2#-----#2----------- 6-----#5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 2       ingress 2 - egress 6      ingress 5

----------------------------------------------------------------------

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |     AS Z    |
               |            1#     #3     +-----5#-----#1            |
path segment 2 |             |     |      |      |     |             |
               |            2#-----#2-----+     6#     #5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 2       ingress 2 - egress 5      ingress 1

------------------------------------------------------------------------

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |     AS Z    |
               |            1#-----#3-----+     5#     #1            |
path segment 3 |             |     |      |      |     |             |
               |            2#     #2     +-----6#-----#5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 1       ingress 3 - egress 6      ingress 5

------------------------------------------------------------------------

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |   AS Y      |     |     AS Z    |
               |            1#-----#3-----------5#-----#1            |
path segment 4 |             |     |             |     |             |
               |            2#     #2           6#     #5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                 egress 1       ingress 3 - egress 5      ingress 1
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="pcbs">
        <name>Path-Segment Construction Beacons (PCBs)</name>
        <t>This section provides a detailed specification of a single PCB and its message format.</t>
        <t><strong>Note:</strong> The SCION open-source implementation makes use of Protobuf (Protocol Buffers), a free and open-source cross-platform data format developed by Google and used to serialize structured data. The messages and remote procedure calls described below are in "proto3" language. For more information on Protobuf, see the official <eref target="https://protobuf.dev/">"Protocol Buffers Documentation"</eref>.</t>
        <section anchor="pcb-compos">
          <name>Components of a PCB in Message Format</name>
          <t><xref target="_figure-5"/> graphically represents the PCB message format:</t>
          <figure anchor="_figure-5">
            <name>Top-down composition of one PCB</name>
            <artwork><![CDATA[
                              PCB / PATH SEGMENT

+-------------+------------+------------+--------+--------------------+
|Segment Info | AS Entry 0 | AS Entry 1 |  ...   |     AS Entry N     |
+-------------+------------+------------+--------+--------------------+
*- - - - # - -*            *- - - # - - *
         |                        |
*- - - - v - - - *                |
+---------+------+                |
|Timestamp|Seg ID|                |
+---------+------+                |
                                  |
*- - - - - - - - - - - - - - - - -v- - - - - - - - - - - - - - - - - - *
+-----------------------+----------------------------------------------+
|    Unsigned Ext.      |               Signed AS Entry                |
+-----------------------+----------------------------------------------+
                        *- - - - - - - - - - - - # - - - - - - - - - - *
                                                 |
                                                 |
*- - - - - - - - - - - - - - - - - - - - - - - - v - - - - - - - - - - *
+--------------------+-----------------++------------------------------+
|     Signature      |    Header       ||                    Body      |
+--------------------+-----------------++------------------------------+
                     *- - - - # - - - -**- - - - - - - - # - - - - - - *
                              |                          |
*- - - - - - - - - - - - - - -v- - - - *                 |
+----------------+---------------------+                 |
| Signature Alg. | Verification Key ID |                 |
+----------------+---------------------+                 |
                 *- - - - - # - - - - -*                 |
                            |                            |
*- - - - - - - - - - - - - -v- - - - - - - - - -*        |
+---------+---------+------------+--------------+        |
| ISD-AS  |TRC Base | TRC Serial |Subject Key ID|        |
+---------+---------+------------+--------------+        |
                                                         |
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - v - - - - - - *
+------+-----------+---------++------------+----+------------++---+----+
|ISD-AS|Next ISD-AS|Hop Entry||Peer Entry 0| ...|Peer Entry N||MTU|Ext.|
+------+-----------+---------++------------+----+------------++---+----+
                   *- - # - -**- - - # - - *
                        |            |
                        |            |
*- - - - - - - - - - - -v- *  *- - - v - - - - - - - - - - - - - - - - *
+-------------+------------+  +--------+--------+----------+-----------+
| Ingress MTU | Hop Field  |  |HopField|PeerMTU |PeerISD-AS|PeerInterf.|
+-------------+--------+---+  +----+---+--------+----------+-----------+
                       *- - -#- - -*
                             |
                             |
*- - - - - - - - - - - - - - v - - - - - - - - - - - - - - *
+------------+-------------+-------------------+-----------+
|  Ingress   |    Egress   |  Expiration Time  |   MAC     |
+------------+-------------+-------------------+-----------+
]]></artwork>
          </figure>
          <t>The following sections provide detailed specifications of the PCB messages, starting with the top-level message of one PCB, and then diving deeper into each of the PCB's message components.</t>
          <t><strong>Note:</strong> For a full example of one PCB in the Protobuf message format, please see <xref target="app-a"/>.</t>
          <section anchor="segment">
            <name>PCB Top-Level Message Format</name>
            <artwork><![CDATA[
+-------------+-------------+------------+------+------------+
|Segment Info | AS Entry 0  | AS Entry 1 |  ... | AS Entry N |
+-------------+-------------+------------+------+------------+
]]></artwork>
            <t>Each PCB at least consists of:</t>
            <ul spacing="normal">
              <li>An information field with an identifier and a timestamp.</li>
              <li>Entries of all ASes on the path segment represented by this PCB.</li>
            </ul>
            <t>The following code block defines the PCB on top level in Protobuf message format.</t>
            <artwork><![CDATA[
   message PathSegment {
       bytes segment_info = 1;
       repeated ASEntry as_entries = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <tt>segment_info</tt>: This field is used as input for the PCB signature. It is the encoded version of the component <tt>SegmentInformation</tt>, which provides basic information about the PCB.  The <tt>SegmentInformation</tt> component is specified in detail in <xref target="seginfo"/>.</li>
              <li>
                <t><tt>as_entries</tt>: Contains the <tt>ASEntry</tt> component of all ASes on the path segment represented by this PCB.
                </t>
                <ul spacing="normal">
                  <li>
                    <tt>ASEntry</tt>: The <tt>ASEntry</tt> component contains the complete path information of a specific AS that is part of the path segment represented by the PCB. The <tt>ASEntry</tt> component is specified in detail in <xref target="ase-message"/>.</li>
                </ul>
              </li>
            </ul>
          </section>
          <section anchor="seginfo">
            <name>Segment Information</name>
            <artwork><![CDATA[
+----------------------------+
|         Segment Info       |
+----------------------------+
*- - - - - - - # - - - - - - *
               |
               |
*- - - - - - - v - - - - - - *
+--------------+-------------+
|   Timestamp  |   Seg ID    |
+--------------+-------------+
]]></artwork>
            <t>Each PCB <bcp14>MUST</bcp14> include an information component with basic information about the PCB.</t>
            <t>In the Protobuf message format, the information component of a PCB is called the <tt>SegmentInformation</tt> message. The following code block shows the Protobuf message definition for the <tt>SegmentInformation</tt> message.</t>
            <artwork><![CDATA[
   message SegmentInformation {
       int64 timestamp = 1;
       uint32 segment_id = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <tt>timestamp</tt>: The 32-bit timestamp indicates the creation time of this PCB. It is set by the originating core AS. The expiration time of the corresponding path segment is computed relative to this timestamp. The timestamp is encoded as the number of seconds elapsed since the POSIX Epoch (1970-01-01 00:00:00 UTC).</li>
              <li>
                <tt>segment_id</tt>: The 16-bit identifier of this PCB and the corresponding path segment. The segment ID is required for the computation of the message authentication code (MAC) of an AS's hop field. The MAC is used for hop field verification in the data plane. The originating core AS <bcp14>MUST</bcp14> fill this field with a cryptographically random number.</li>
            </ul>
            <t><strong>Note:</strong> See <xref target="hopfield"/> for more information on the hop field message format. The SCION Data Plane Specification provides a detailed description of the computation of the MAC and the verification of the hop field in the data plane.</t>
          </section>
          <section anchor="ase-message">
            <name>AS Entry</name>
            <artwork><![CDATA[
                           +--------------+
                           |  AS Entry    |
                           +--------------+
                           *- - - -#- - - *
                                   |
                                   |
                                   |
*- - - - - - - - - - - - - - - - - v - - - - - - - - - - - - - - - *
+-----------------------+------------------------------------------+
|    Unsigned Ext.      |          Signed AS Entry                 |
+-----------------------+------------------------------------------+
]]></artwork>
            <t>Beside the basic information component, each PCB <bcp14>MUST</bcp14> also contain the entries of all ASes included in the corresponding path segment. This means that the originating core AS <bcp14>MUST</bcp14> add its AS entry to each PCB it creates. During the beaconing process, also each traversed AS <bcp14>MUST</bcp14> attach its AS entry to the PCB.</t>
            <t>One AS entry contains the complete hop information for this specific AS in this specific path segment. It consists of a signed and an unsigned component.</t>
            <t>The code block below defines an AS entry <tt>ASEntry</tt> in Protobuf message format.</t>
            <artwork><![CDATA[
   message ASEntry {
       SignedMessage signed = 1;
       PathSegmentUnsignedExtensions unsigned = 2;
   }
]]></artwork>
            <t>It includes the following components:</t>
            <ul spacing="normal">
              <li>
                <tt>SignedMessage</tt>: The signed component of an AS entry. For the specification of this part of the AS entry, see <xref target="signed-compo"/> below.</li>
              <li>
                <tt>PathSegmentUnsignedExtensions</tt>: The unsigned and thus unprotected part of the AS entry. These are extensions with metadata that need no explicit protection.</li>
            </ul>
          </section>
          <section anchor="signed-compo">
            <name>AS Entry Signed Component</name>
            <artwork><![CDATA[
        +------------------------------------------------------+
        |                   Signed AS Entry                    |
        +------------------------------------------------------+
        *- - - - - - - - - - - - -#- - - - - - - - - - - - - - *
                                  |
                                  |
*- - - - - - - - - - - - - - - - -v- - - - - - - - - - - - - - - - - -*
+--------------------+-----------------+------------------------------+
|      Header        |     Body        |            Signature         |
+--------------------+-----------------+------------------------------+
]]></artwork>
            <t>Each AS entry of a PCB <bcp14>MUST</bcp14> include a signed component as well as a signature computed over the signed component. Each AS entry <bcp14>MUST</bcp14> be signed with a private key that corresponds to the public key certified by the AS's certificate.</t>
            <t>This section specifies the signed component of an AS entry. The signed component of an AS entry <bcp14>MUST</bcp14> include the following elements:</t>
            <ul spacing="normal">
              <li>a header,</li>
              <li>a body, and</li>
              <li>a signature.</li>
            </ul>
            <t>In the Protobuf message-format implementation, the signed component of an AS entry is specified by the <tt>SignedMessage</tt>. It consists of a header-and-body part (<tt>header_and_body</tt>) and a raw signature (<tt>signature</tt>). See also the code block below.</t>
            <artwork><![CDATA[
   message SignedMessage {
       bytes header_and_body = 1;
       bytes signature = 2;
   }
]]></artwork>
            <t>The following code block shows the low-level representation of the <tt>HeaderAndBodyInternal</tt> message used for signature computation input. This message should not be used by external code.</t>
            <artwork><![CDATA[
   message HeaderAndBodyInternal {
       // Encoded header suitable for signature computation.
       bytes header = 1;
       // Raw payload suitable for signature computation.
       bytes body = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>For the specification of the signed header, see <xref target="ase-header"/>.</li>
              <li>For the specification of the signed body, see <xref target="ase-sign"/>.</li>
              <li>For the specification of the <tt>signature</tt> field, see <xref target="sign"/>.</li>
            </ul>
            <section anchor="ase-header">
              <name>AS Entry Signed Header</name>
              <artwork><![CDATA[
           +-----------------+
           |     Header      |
           +-----------------+
           *- - - - # - - - -*
                    |
 - - - - - - - - - -v- - - - - - - - - *
+----------------+---------------------+
| Signature Alg. | Verification Key ID |
+----------------+---------------------+
                 *- - - - - # - - - - -*
                            |
 - - - - - - - - - - - - - -v- - - - - - - - - -
+---------+---------+------------+--------------+
| ISD-AS  |TRC Base | TRC Serial |Subject Key ID|
+---------+---------+------------+--------------+
]]></artwork>
              <t>The header part defines metadata that is relevant to (the computation and verification of) the signature. It <bcp14>MUST</bcp14> at least include the following metadata:</t>
              <ul spacing="normal">
                <li>The algorithm to compute the signature</li>
                <li>The identifier of the public key used to verify the signature (i.e., the public key certified by the AS's certificate)</li>
                <li>The ISD-AS number of the AS</li>
              </ul>
              <t>The following code block defines the signed header of an AS entry in Protobuf message format (called the <tt>Header</tt> message).</t>
              <artwork><![CDATA[
   message Header {
       SignatureAlgorithm signature_algorithm = 1;
       bytes verification_key_id = 2;
       // Optional
       google.protobuf.Timestamp timestamp = 3;
       // Optional
       bytes metadata = 4;
       int32 associated_data_length = 5;
   }

   message VerificationKeyID {
       uint64 isd_as = 1;
       bytes subject_key_id = 2;
       uint64 trc_base = 3;
       uint64 trc_serial = 4;
   }
]]></artwork>
              <ul spacing="normal">
                <li>
                  <tt>signature_algorithm</tt>: Specifies the algorithm to compute the signature.</li>
                <li>
                  <t><tt>verification_key_id</tt>: Holds the serialized data defined by the <tt>VerificationKeyID</tt> message type. The <tt>VerificationKeyID</tt> message contains more information that is relevant to signing and verifying PCBs and other control-plane messages. The <tt>VerificationKeyID</tt> message type includes the following fields (see also the above code block):
                  </t>
                  <ul spacing="normal">
                    <li>
                      <tt>isd_as</tt>: The ISD-AS number of the current AS.</li>
                    <li>
                      <tt>subject_key_id</tt>: Refers to the certificate that contains the public key needed to verify this PCB's signature.</li>
                    <li>
                      <tt>trc_base</tt>: Defines the <em>base</em> number of the latest Trust Root Configuration (TRC) available to the signer at the time of the signature creation.</li>
                    <li>
                      <tt>trc_serial</tt>: Defines the <em>serial</em> number of the latest TRC available to the signer at the time of the signature creation.</li>
                  </ul>
                </li>
              </ul>
              <t><strong>Note:</strong> For more information on signing and verifying control-plane messages (such as PCBs), see the chapter Signing and Verifying Control-Plane Messages of the SCION Control-Plane PKI Specification <xref target="I-D.scion-cppki"/>. For more information on the TRC base and serial number, see the chapter Trust Root Configuration Specification of the SCION Control-Plane PKI Specification <xref target="I-D.scion-cppki"/>.</t>
              <ul spacing="normal">
                <li>
                  <tt>timestamp</tt>: Defines the signature creation timestamp. This field is optional.</li>
                <li>
                  <tt>metadata</tt>: Can be used to include arbitrary per-protocol metadata. This field is optional.</li>
                <li>
                  <tt>associated_data_length</tt>: Specifies the length of associated data that is covered by the signature, but is not included in the header and body. The value of this field is zero, if no associated data is covered by the signature.</li>
              </ul>
            </section>
            <section anchor="ase-sign">
              <name>AS Entry Signed Body</name>
              <artwork><![CDATA[
                +--------------------------------------+
                |                 Body                 |
                +--------------------------------------+
                *- - - - - - - - - -#- - - - - - - - - *
                                    |
                                    |
*- - - - - - - - - - - - - - - - - -v- - - - - - - - - - - - - - - - -*
+------+-----------+---------++------------+---+------------++---+----+
|ISD-AS|Next ISD-AS|Hop Entry||Peer Entry 0|...|Peer Entry N||MTU|Ext.|
+------+-----------+---------++------------+---+------------++---+----+
]]></artwork>
              <t>The body of an AS entry consists of the signed component <tt>ASEntrySignedBody</tt> of all ASes in the path segment represented by the PCB, up until and including the current AS.</t>
              <t>The following code block defines the signed body of one AS entry in Protobuf message format (called the <tt>ASEntrySignedBody</tt> message).</t>
              <artwork><![CDATA[
   message ASEntrySignedBody {
       uint64 isd_as = 1;
       uint64 next_isd_as = 2;
       HopEntry hop_entry = 3;
       repeated PeerEntry peer_entries = 4;
       uint32 mtu = 5;
       PathSegmentExtensions extensions = 6;
   }
]]></artwork>
              <ul spacing="normal">
                <li>
                  <tt>isd_as</tt>: The ISD-AS number of the AS that created this AS entry.</li>
                <li>
                  <tt>next_isd_as</tt>: The ISD-AS number of the downstream AS to which the PCB should be forwarded.</li>
                <li>
                  <tt>hop_entry</tt>: The hop entry (<tt>HopEntry</tt>) with the information required to forward this PCB through the current AS to the next AS. This information is used in the data plane. For a specification of the hop entry, see <xref target="hopentry"/>.</li>
                <li>
                  <tt>peer_entries</tt>: The list of optional peer entries (<tt>PeerEntry</tt>). For a specification of one peer entry, see <xref target="peerentry"/>.</li>
                <li>
                  <tt>mtu</tt>: The size of the maximum transmission unit (MTU) within the current AS's network.</li>
                <li>
                  <tt>extensions</tt>: List of (signed) extensions (optional). PCB extensions defined here are part of the signed AS entry. This field should therefore only contain extensions that include important metadata for which cryptographic protection is required. For more information on PCB extensions, see <xref target="pcb-ext"/>.</li>
              </ul>
            </section>
            <section anchor="sign">
              <name>AS Entry Signature</name>
              <t>Each AS entry is signed with a private key K<sub>i</sub> that corresponds to the public key certified by the AS's certificate. The signature Sig<sub>i</sub> of an AS entry ASE<sub>i</sub> is computed over the AS entry's signed component. This is the input for the computation of the signature:</t>
              <ul spacing="normal">
                <li>The signed header and body of the current AS (<tt>header_and_body</tt>).</li>
                <li>The <tt>segment_info</tt> component of the current AS. This is the encoded version of the <tt>SegmentInformation</tt> component containing basic information about the path segment represented by the PCB. For the specification of <tt>SegmentInformation</tt>, see <xref target="seginfo"/>.</li>
                <li>The signed <tt>header_and_body</tt>/<tt>signature</tt> combination of each previous AS on this specific path segment.</li>
              </ul>
              <t>The signature Sig<sub>i</sub> of an AS entry ASE<sub>i</sub> is now computed as follows:</t>
              <t>Sig<sub>i</sub> =
K<sub>i</sub>( SegInfo || ASE<sub>0</sub><sup>(signed)</sup> || Sig<sub>0</sub> || ... || ASE<sub>i-1</sub><sup>(signed)</sup> || Sig<sub>i-1</sub> || ASE<sub>i</sub><sup>(signed)</sup> )</t>
              <t>The signature metadata minimally contains the ISD-AS number of the signing entity and the key identifier of the public key that should be used to verify the message. For more information on signing and verifying control-plane messages, see the chapter "Signing and Verifying Control-Plane Messages" of the SCION Control-Plane PKI Specification <xref target="I-D.scion-cppki"/>.</t>
              <t>The following code block shows how the signature input is defined in the SCION Protobuf implementation ("ps" stands for path segment). Note that the signature has a nested, onion-like structure.</t>
              <artwork><![CDATA[
input(ps, i) = signed.header_and_body || associated_data(ps, i)

associated_data(ps, i) = ps.segment_info ||
                         ps.as_entries[1].signed.header_and_body ||
                         ps.as_entries[1].signed.signature ||
                         ...
                         ps.as_entries[i-1].signed.header_and_body ||
                         ps.as_entries[i-1].signed.signature
]]></artwork>
            </section>
          </section>
          <section anchor="hopentry">
            <name>Hop Entry</name>
            <artwork><![CDATA[
       +-----------+
       | Hop Entry |
       +-----------+
       *- - -#- - -*
             |
 - - - - - - v - - - - - - *
+-------------+------------+
| Ingress MTU | Hop Field  |
+-------------+------------+
]]></artwork>
            <t>Each body of an AS entry <bcp14>MUST</bcp14> contain exactly one hop entry component. The hop entry component specifies forwarding information for the data plane. The data plane requires this information to create the hop through the current AS (in the direction of the beaconing).</t>
            <t>The following code block defines the hop entry component <tt>HopEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopEntry {
       HopField hop_field = 1;
       uint32 ingress_mtu = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the direction of beaconing. The data plane needs this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</li>
              <li>
                <tt>ingress_mtu</tt>: Specifies the maximum transmission unit (MTU) of the ingress interface of the current AS.</li>
            </ul>
          </section>
          <section anchor="hopfield">
            <name>Hop Field</name>
            <artwork><![CDATA[
                      +-----------+
                      | Hop Field |
                      +-----------+
                      *- - -#- - -*
                            |
                            |
*- - - - - - - - - - - - - -v- - - - - - - - - - - - - - - *
+-------------+-------------+-------------------+----------+
|   Ingress   |    Egress   |  Expiration Time  |   MAC    |
+-------------+-------------+-------------------+----------+
]]></artwork>
            <t>The hop field, part of both hop entries and peer entries, is used directly in the data plane for packet forwarding: It specifies the incoming and outgoing interfaces of the ASes on the forwarding path. To prevent forgery, this information is authenticated with a message authentication code (MAC).</t>
            <t>The following code block defines the hop field component <tt>HopField</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopField {
       uint64 ingress = 1;
       uint64 egress = 2;
       uint32 exp_time = 3;
       bytes mac = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <tt>ingress</tt>: The 16-bit ingress interface identifier (in the direction of the path construction, that is, in the direction of beaconing through the current AS).</li>
            </ul>
            <t><strong>Note:</strong> For the AS that initiates the PCB, the ingress interface identifier <bcp14>MUST NOT</bcp14> be specified. This initiating AS is a core AS.</t>
            <ul spacing="normal">
              <li>
                <tt>egress</tt>: The 16-bit egress interface identifier (in the direction of beaconing).</li>
              <li>
                <tt>exp_time</tt>: The 8-bit encoded expiration time of the hop field, indicating how long the hop field is valid. This value is an offset relative to the PCB creation timestamp set in the PCB's segment information component (see also <xref target="seginfo"/>). By combining these two values, the AS can compute the absolute expiration time of the hop field. Data-plane packets that use the hop field after the expiration time <bcp14>MUST</bcp14> be dropped.</li>
              <li>
                <tt>mac</tt>: The message authentication code (MAC) used in the data plane to verify the hop field. The SCION Data Plane Specification provides a detailed description of the computation of the MAC and the verification of the hop field in the data plane.</li>
            </ul>
          </section>
          <section anchor="peerentry">
            <name>Peer Entry</name>
            <artwork><![CDATA[
                      +--------------+
                      |  Peer Entry  |
                      +--------------+
                      *- - - -#- - - *
                              |
*- - - - - - - - - - - - - - -v- - - - - - - - - - - - - - *
+-------------+------------+--------------+----------------+
|  Hop Field  |  Peer MTU  | Peer ISD-AS  | Peer Interface |
+-------------+------------+--------------+----------------+
]]></artwork>
            <t>By means of a peer entry, an AS can announce that it has a peering link to another AS. A peer entry is an optional component of a PCB - it is only included if there is a peering link to a peer AS.</t>
            <t>The following code block defines the peer entry component <tt>PeerEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message PeerEntry {
       uint64 peer_isd_as = 1;
       uint64 peer_interface = 2;
       uint32 peer_mtu = 3;
       HopField hop_field = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <tt>peer_isd_as</tt>: The ISD-AS number of the peer AS. This number is used to match peering segments during path construction.</li>
              <li>
                <tt>peer_interface</tt>: The 16-bit interface identifier of the peering link on the peer AS side. This identifier is used to match peering segments during path construction.</li>
              <li>
                <tt>peer_mtu</tt>: Specifies the maximum transmission unit MTU on the peering link.</li>
              <li>
                <tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the current AS (coming from the peering link, in the direction of beaconing - see also <xref target="_figure-6"/>). The data plane needs this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</li>
            </ul>
            <figure anchor="_figure-6">
              <name>Peer entry information, in the direction of beaconing</name>
              <artwork><![CDATA[
   +-----------+
   |           |
   | parent AS |
   |           |
   +-----------+
         |
         |
         | ASE.HF.ingress_interface
+--------#-----------+                  +-----------------+
|        |           |         PE.peer_ |                 |
|                    |         interface|                 |
|        | + - - - - #------------------#     peer AS     |
|                    |PE.HF.ingress_    |                 |
|        | |         |interface         |                 |
|                    |                  +-----------------+
|        v v         |
+---------#----------+
          | PE.HF.egress_interface
          | ASE.HF.egress_interface
          |
          |
    +-----------+
    |           |
    |  child AS |
    |           |
    +-----------+
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="pcb-ext">
          <name>PCB Extensions</name>
          <t>In addition to basic routing information like hop entries and peer entries, PCBs can be used to communicate additional metadata, in its extensions. Extensions can be signed and unsigned. Signed extensions are protected by the AS signature, whereas unsigned extensions are not.</t>
          <t>On code-level and in Protobuf message format, extensions are specified as follows:</t>
          <ul spacing="normal">
            <li>Unsigned extensions <tt>PathSegmentUnsignedExtensions</tt> are part of the AS entry component (the <tt>ASEntry</tt> message, see also <xref target="ase-message"/>).</li>
            <li>Signed extensions <tt>PathSegmentExtensions</tt> are part of the signed body component of an AS entry (the <tt>ASEntrySignedBody</tt> message, see also <xref target="ase-sign"/>).</li>
          </ul>
          <t><strong>Note:</strong> SCION also supports so-called "detachable extensions". The detachable extension itself is part of a PCB's unsigned extensions, but a cryptographic hash of the detachable extension data is added to the signed extensions. Thus, a PCB with a detachable extension can be signed and verified without actually including the detachable extension in the signature. This prevents a possible processing overhead caused by large cryptographically-protected extensions.</t>
        </section>
      </section>
      <section anchor="path-prop">
        <name>Propagation of PCBs</name>
        <t>This section describes how PCBs are selected and propagated in the path exploration process.</t>
        <section anchor="selection">
          <name>Selection of PCBs to Propagate</name>
          <t>As an AS receives a series of intra-ISD or core PCBs, it must select the PCBs it will use to continue beaconing. Each AS must specify a local policy on the basis of which PCBs are evaluated, selected or eliminated. The selection process can be based on <em>path</em> properties (e.g., length, disjointness across different paths) as well as on <em>PCB</em> properties (e.g., age, remaining lifetime of sent instances) - each AS is free to use those properties that suit the AS best. The control service can then compute the overall quality of each candidate PCB based on these properties. For this, the AS should use a selection algorithm or metric that reflects its needs and requirements and identifies the best PCBs or paths segments for this AS.</t>
          <section anchor="storing-and-selecting-candidate-pcbs">
            <name>Storing and Selecting Candidate PCBs</name>
            <t>When receiving a PCB, an AS first stores the PCB in a temporary storage for candidate PCBs, called the <em>beacon store</em>.</t>
            <t>PCBs are propagated in batches to each connected downstream AS at a fixed frequency, the <em>propagation interval</em>. At each propagation event, each AS selects a set of the best PCBs from the candidates in the beacon store, according to the AS's selection policy. This set should have a fixed size, the <em>best PCBs set size</em>.</t>
            <ul spacing="normal">
              <li>The <em>best PCBs set size</em> <bcp14>SHOULD</bcp14> be at most "50" (PCBs) for intra-ISD beaconing and at most "5" (PCBs) for core beaconing.</li>
            </ul>
            <t><strong>Note:</strong> Depending on the selection criteria, it may be necessary to keep more candidate PCBs than the <em>best PCBs set size</em> in the beacon store, to be able to determine the best set of PCBs. If this is the case, an AS should have a suitable pre-selection of candidate PCBs in place, in order to keep the beacon store capacity limited.</t>
            <ul spacing="normal">
              <li>The <em>propagation interval</em> <bcp14>SHOULD</bcp14> be at least "5" (seconds) for intra-ISD beaconing and at least "60" (seconds) for core beaconing.</li>
            </ul>
            <t><strong>Note:</strong> Note that during bootstrapping and if the AS obtains a PCB containing a previously unknown path, the AS should forward the PCB immediately, to ensure quick connectivity establishment.</t>
          </section>
          <section anchor="selection-policy-example">
            <name>Selection Policy Example</name>
            <t><xref target="_figure-7"/> below illustrates the selection of path segments in three networks. Each network uses a different path property to select path segments.</t>
            <ul spacing="normal">
              <li>The network at the upper left considers the <em>path length</em>, which is here defined as the number of hops from the originator core AS to the local AS. This number can give an indication of the path's latency. Based on this criterion, the network will select the PCB representing path segment A-G (in direction of beaconing) to propagate.</li>
              <li>The network at the upper right uses <em>peering links</em> as the selection criterion, that is, the number of different peering ASes from all non-core ASes on the PCB or path segment: A greater number of peering ASes increases the likelihood of finding a shortcut on the path segment. Based on this criterion, the network will select the PCB representing path segment B-E-I-L (in direction of beaconing) to propagate.</li>
              <li>The lower network selects PCBs based on <em>disjointness</em>. The disjointness of a PCB is calculated relative to the PCBs that have been previously sent. Paths can be either AS-disjoint or link-disjoint. AS-disjoint paths have no common upstream/core AS for the current AS, whereas link-disjoint paths do not share any AS-to-AS link. Depending on the objective of the AS, both criteria can be used: AS-disjointness allows path diversity in the event that an AS becomes unresponsive, and link-disjointness provides resilience in case of link failure. Based on the disjointness criterion, the network will select the PCBs representing the path segments A-D-G-H-J and C-E-F-I-J (in direction of beaconing) to propagate.</li>
            </ul>
            <figure anchor="_figure-7">
              <name>Example networks to illustrate path-segment selection based on different path properties.</name>
              <artwork><![CDATA[
 Selected path segment: #------# or *------*
 Peering Link: PL

   ISD A: Path Length                 ISD B: Peering Links
+----------------------+          +---------------------------+
|      ISD Core        |          |        ISD Core           |
| .---.         .---.  |          |  .---.             .---.  |
|(  A  ) - - - (  C  ) |          | (  A  ) - - - - - (  C  ) |
| `-#-'         `---'  |       + --- `---'             `---'  |
|   ||   .---.   | |   |          |      |  .---. - - - - -   |
|   | - (  B  ) -      |       |  |    |  -(  B  )            |
|   |    `-+-'     |   |          |         `-#-||            |
+---|--------------|---+       |  |    |      |   - - - - - - - - +
    |      |       |           |  |           | |             |
    |                          |  +----|------|-|-------------+   |
    |      |     .-+-.                        | + - - - - +
    |    .-+-.  (  E  )        |       |      |                   |
    |   (  D  )  `---'                        |           |
    |    `-+-'     |         .-+-.     |    .-#-.       .-+-.     |
    |            .-+-.      (  D  )-PL-----(  E  )--PL-(  F  )
    |      |    (  F  )      `---'     |    `-#-'       `-+-'   .-+-.
  .-#-.          `-+-'                        |                (  G  )
 (  G  ) - +       |               - - +      |           |     `-+-'
  `---- - - - - - -               |           |
                                .---.       .-#-.       .-+-.     |
                               (  H  )-PL--(  I  )--PL-(  J  )
                                `---'       `-#-'       `---'   .-+-.
                                              |           |    (  K  )
       ISD C: Disjointness                    |                 `---'
  +---------------------------+             .-#-.         |       |
  |          ISD Core         |            (  L  ) - - - -
  |                           |             `---' - - - - - - - - +
  | .---.               .---. |
  |(  A  ) - - - - - - (  C  )|
  | `-*-'               `-#-' |
  |   | |     .---.     | |   |
  |   |  - - (  B  ) - -  |   |
  |   |       `---'       |   |
  +---|-------------------|---+
      |                   |
 .----*.                .-#---.
(   D   )              (   E   )
 `----*'                `-#---'
 |    |                   |   |
    #---------------------#
 |  | |                       |
    | *------------------*
 |  |                    |    |
 .--#--.                .*----.
(   F   #-------#      (   G   )
 `-----'        |       `*----|
 |          *------------*
            |   |             |
 |-----.    |   |       .-----.
(   H  *----*   #------#   I   )
 `---*-'                `-#---'
     |                    |
     |       .---.        |
     *------*  J  #-------#
             `---'
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="path-segment-prop">
          <name>Propagation of Selected PCBs</name>
          <t>As mentioned above, once per <em>propagation period</em> (determined by each AS), an AS propagates selected PCBs to its neighboring ASes. This happens on the level of both intra-ISD beaconing and core beaconing. This section describes both processes in more detail.</t>
          <t>To bootstrap the initial communication with a neighboring beacon service, ASes use so-called one-hop paths. This special kind of path handles beaconing between neighboring ASes for which no forwarding path may be available yet. In fact, it is the task of beaconing to discover such forwarding paths. The purpose of one-hop paths is thus to break this circular dependency. The One-Hop Path Type will be described in more detail in the SCION Data Plane specification.</t>
          <section anchor="propagation-first-steps">
            <name>Propagation - First Steps</name>
            <t>The following first steps of the propagation procedure are the same for both intra-ISD and core beaconing:</t>
            <ol spacing="normal" type="1"><li>Upon receiving a PCB, the control service of an AS verifies the structure and all signatures on the PCB.<br/>
                <strong>Note:</strong> The PCB contains the version numbers of the trust root configuration(s) (TRC) and certificate(s) that must be used to verify its signatures. This enables the control service to check whether it has the relevant TRC(s) and certificate(s); if not, they can be requested from the control service of the sending AS.</li>
              <li>As core beaconing is based on sending PCBs without a defined direction, it is necessary to avoid loops during path creation. The control service of core ASes <bcp14>MUST</bcp14> therefore check whether the PCB includes duplicate hop entries created by the core AS itself or by other ASes. If so, the PCB <bcp14>MUST</bcp14> be discarded in order to avoid loops. Additionally, core ASes could forbid, that is, not propagate, beacons containing path segments that traverse the same ISD more than once. <strong>Note:</strong> Where loops must always be avoided, it is a policy decision to forbid ISD double-crossing. It can be legitimate to cross the same ISD multiple times: For example, if the ISD spans a large geographical area, a path transiting another ISD may constitute a shortcut. However, it is up to each core AS to decide whether it wants to allow this.</li>
              <li>If the PCB verification is successful, the control service decides whether to store the PCB as a candidate for propagation based on selection criteria and polices specific for each AS. For more information on the selection process, see <xref target="selection"/>.</li>
            </ol>
          </section>
          <section anchor="intra-prop">
            <name>Propagation of PCBs in Intra-ISD Beaconing</name>
            <t>The propagation process in intra-ISD beaconing includes the following steps:</t>
            <ol spacing="normal" type="1"><li>From the candidate PCBs stored in the beacon store, the control service of an AS selects the best PCBs to propagate to its downstream neighboring ASes, based on a selection algorithm specific for this AS.</li>
              <li>
                <t>The control service adds a new AS entry to every selected PCB. This AS entry <bcp14>MUST</bcp14> at least include:
                </t>
                <ul spacing="normal">
                  <li>The ingress interface to this AS, in the hop field component.</li>
                  <li>The egress interface to the neighboring AS, also in the hop field component.</li>
                  <li>The ISD_AS number of the next AS, in the signed body component of the AS entry.</li>
                  <li>If the AS has peering links, the control service should add corresponding peer entry components to the signed body of the AS entry; one peer entry component for each peering link that the AS wants to advertise. The hop field component of each added peer entry must have a specified egress interface.</li>
                </ul>
              </li>
              <li>The control service <bcp14>MUST</bcp14> now sign each selected, extended PCB and append the computed signature.</li>
              <li>As a final step, the control service propagates each extended PCB to the correct neighboring ASes, by invoking the <tt>SegmentCreationService.Beacon</tt> remote procedure call (RPC) in the control services of the neighboring ASes (see also <xref target="prop-proto"/>).</li>
            </ol>
            <t><strong>Note:</strong></t>
            <ul spacing="normal">
              <li>For more information on the signed body component of an AS entry, see <xref target="ase-sign"/>.</li>
              <li>For more information on a peer entry, see <xref target="peerentry"/>.</li>
              <li>For more information on the hop field component, see <xref target="hopfield"/>.</li>
              <li>For more information on signing an AS entry, see <xref target="sign"/>.</li>
            </ul>
          </section>
          <section anchor="propagation-of-pcbs-in-core-beaconing">
            <name>Propagation of PCBs in Core Beaconing</name>
            <t>The propagation process in core beaconing includes the following steps:</t>
            <ol spacing="normal" type="1"><li>The core control service selects the best PCBs to forward to neighboring core ASes observed so far.</li>
              <li>
                <t>The service adds a new AS entry to every selected PCB. This AS entry <bcp14>MUST</bcp14> at least include:
                </t>
                <ul spacing="normal">
                  <li>The egress interface to the neighboring core AS, in the hop field component.</li>
                  <li>The ISD_AS number of the neighboring core AS, in the signed body component of the AS entry.</li>
                </ul>
              </li>
              <li>The core control service <bcp14>MUST</bcp14> now sign the extended PCBs and append the computed signature.</li>
              <li>As a final step, the service propagates the extended PCBs to the neighboring core ASes, by invoking the <tt>SegmentCreationService.Beacon</tt> remote procedure call (RPC) in the control services of the neighboring core ASes (see also <xref target="prop-proto"/>).</li>
            </ol>
          </section>
          <section anchor="prop-proto">
            <name>Propagation of PCBs in Protobuf Message Format</name>
            <t>The last step of the above described core and intra-ISD propagation procedures is implemented as follows in Protobuf message format:</t>
            <artwork><![CDATA[
   service SegmentCreationService {
       rpc Beacon(BeaconRequest) returns (BeaconResponse) {}
   }

   message BeaconRequest {
       PathSegment segment = 1;
   }

   message BeaconResponse {}
]]></artwork>
            <t>The propagation procedure includes the following elements:</t>
            <ul spacing="normal">
              <li>
                <t><tt>SegmentCreationService</tt>: Specifies the service via which the extended PCB is propagated to the control service of the neighboring AS.
                </t>
                <ul spacing="normal">
                  <li>
                    <tt>Beacon</tt>: Specifies the method that calls the control service at the neighboring AS in order to propagate the extended PCB.</li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconRequest</tt>: Specifies the request message sent by the <tt>Beacon</tt> method to the control service of the neighboring AS. It contains the following element:
                </t>
                <ul spacing="normal">
                  <li>
                    <tt>PathSegment</tt>: Specifies the path segment to propagate to the neighboring AS. For more information on the Protobuf message type <tt>PathSegment</tt>, see <xref target="segment"/>.</li>
                </ul>
              </li>
              <li>
                <tt>BeaconResponse</tt>: Specifies the response message from the neighboring AS.</li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="path-segment-reg">
      <name>Registration of Path Segments</name>
      <t><strong>Path registration</strong> is the process where an AS transforms selected PCBs into path segments, and adds these segments to the relevant path databases, thus making them available to other ASes.</t>
      <t>As mentioned previously, a non-core AS typically receives several PCBs representing several path segments to the core ASes of the ISD the AS belongs to. Out of these PCBs, the non-core AS selects those down-path segments through which it wants to be reached, based on AS-specific selection criteria. The next step is to register the selected down-segments with the control service of the relevant core ASes, according to a process called <em>intra-ISD path-segment registration</em>. As a result, a core AS's control service contains all intra-ISD path segments registered by the non-core ASes of its ISD. In addition, each core AS control service also stores preferred core-path segments to other core ASes, in the <em>core-segment registration</em> process. Both processes are described below.</t>
      <section anchor="intra-reg">
        <name>Intra-ISD Path-Segment Registration</name>
        <t>Every <em>registration period</em> (determined by each AS), the AS's control service selects two sets of PCBs to transform into two types of path segments:</t>
        <ul spacing="normal">
          <li>Up-segments, which allow the infrastructure entities and endpoints in this AS to communicate with core ASes; and</li>
          <li>down-segments, which allow remote entities to reach this AS.</li>
        </ul>
        <t>The up- and down-segments do not have to be equal. An AS may want to communicate with core ASes via one or more up-segments that differ from the down-segment(s) through which it wants to be reached. Therefore, an AS can define different selection policies for the up- and down-segment sets. Also, the processes of transforming a PCB in an up-segment or a down-segment differ slightly. Both processes are described below.</t>
        <section anchor="term-pcb">
          <name>Terminating a PCB</name>
          <t>Both the up- and down-segments end at the AS. One could therefore say that by transforming a PCB into a path segment, an AS "terminates" the PCB for this AS ingress interface and at this moment in time.</t>
          <t>The control service of a non-core AS must perform the following steps to "terminate" a PCB:</t>
          <ol spacing="normal" type="1"><li>
              <t>The control service adds a new AS entry to the PCB. This new AS entry <bcp14>MUST</bcp14> be defined as follows:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The next AS <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>In Protobuf message format, this means that the value of the <tt>next_isd_as</tt> field in the <tt>ASEntrySignedBody</tt> component <bcp14>MUST</bcp14> be "0".</li>
                  </ul>
                </li>
                <li>
                  <t>The egress interface in the hop field component <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>In Protobuf message format, this means that the value of the <tt>egress</tt> field in the <tt>HopField</tt> component <bcp14>MUST</bcp14> be "0".</li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the AS has peering links, the control service should add corresponding peer entry components to the signed body of the AS entry - one peer entry component for each peering link that the AS wants to advertise. The egress interface ID in the hop field component of each added peer entry <bcp14>MUST NOT</bcp14> be specified.
              </t>
              <ul spacing="normal">
                <li>In Protobuf message format, this means that the value of the <tt>egress</tt> field in the <tt>HopField</tt> component <bcp14>MUST</bcp14> be "0".</li>
              </ul>
            </li>
            <li>As a last step, the control service <bcp14>MUST</bcp14> sign the modified PCB and append the computed signature.</li>
          </ol>
          <t><strong>Note:</strong></t>
          <ul spacing="normal">
            <li>For more information on the signed body component of an AS entry, see <xref target="ase-sign"/>.</li>
            <li>For more information on a peer entry, see <xref target="peerentry"/>.</li>
            <li>For more information on the hop field component, see <xref target="hopfield"/>.</li>
            <li>For more information on signing an AS entry, see <xref target="sign"/>.</li>
          </ul>
        </section>
        <section anchor="transforming-a-pcb-into-an-up-segment">
          <name>Transforming a PCB into an Up-Segment</name>
          <t>Every registration period, the control service of a non-core AS performs the following steps to transform PCBs into up-segments:</t>
          <ol spacing="normal" type="1"><li>The control service selects the PCBs that it wants to transform into up-segments from the candidate PCBs in the beacon store.</li>
            <li>The control service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>up-segments</strong>.</li>
            <li>The control service now adds the newly created up-segments to its own path database.</li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
        <section anchor="transforming-a-pcb-into-a-down-segment">
          <name>Transforming a PCB into a Down-Segment</name>
          <t>Every registration period, the control service of a non-core AS performs the following steps to transform PCBs into down-segments:</t>
          <ol spacing="normal" type="1"><li>The control service selects the PCBs that it wants to transform into down-segments from the candidate PCBs in the beacon store.</li>
            <li>The control service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>down-segments</strong>.</li>
            <li>The control service now registers the newly created down-segments with the control services of the core ASes that originated the corresponding PCBs. This is done by invoking the <tt>SegmentRegistrationService.SegmentsRegistration</tt> remote procedure call (RPC) in the control services of the relevant core ASes (see also <xref target="reg-proto"/>).</li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
      </section>
      <section anchor="core-path-segment-registration">
        <name>Core Path-Segment Registration</name>
        <t>The core beaconing process creates path segments from core AS to core AS. These core-segments are then added to the control service path database of the core AS that created the segment, so that local and remote endpoints can obtain and use these core-segments. In contrast to the intra-ISD registration procedure, there is no need to register core-segments with other core ASes (as each core AS will receive PCBs originated from every other core AS).</t>
        <t>In every registration period, the control service of a core AS performs the following operations:</t>
        <ol spacing="normal" type="1"><li>The core control service selects the best PCBs towards each core AS observed so far.</li>
          <li>The core control service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>core-segments</strong>.</li>
          <li>As a final step, the control service adds the newly created core-segments to its own path database.</li>
        </ol>
        <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
      </section>
      <section anchor="reg-proto">
        <name>Path-Segment Registration on Code-Level</name>
        <t>The control service of a non-core AS has to register the newly created down-segments with the control services of the core ASes that originated the corresponding PCBs. This registration step is implemented as follows in Protobuf message format:</t>
        <artwork><![CDATA[
   enum SegmentType {
       SEGMENT_TYPE_UNSPECIFIED = 0;
       SEGMENT_TYPE_UP = 1;
       SEGMENT_TYPE_DOWN = 2;
       SEGMENT_TYPE_CORE = 3;
   }

   service SegmentRegistrationService {
       rpc SegmentsRegistration(SegmentsRegistrationRequest) returns (SegmentsRegistrationResponse) {}
   }

   message SegmentsRegistrationRequest {
       message Segments {
           repeated PathSegment segments = 1;
       }

       map<int32, Segments> segments = 1;
   }

   message SegmentsRegistrationResponse {}
]]></artwork>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentType</tt>: Specifies the type of the path segment that must be registered. Currently, only the following type is used:
            </t>
            <ul spacing="normal">
              <li>
                <tt>SEGMENT_TYPE_DOWN</tt>: Specifies a down-segment.</li>
            </ul>
          </li>
          <li>
            <tt>map&lt;int32, Segments&gt; segments</tt>: Represents a separate list of segments for each path segment type. The key is the integer representation of the corresponding <tt>SegmentType</tt>.</li>
        </ul>
      </section>
    </section>
    <section anchor="lookup">
      <name>Path Lookup</name>
      <t>The <em>path lookup</em> is a fundamental building block of SCION's path management, as it enables endpoints to obtain path segments found during path exploration and registered during path registration. This allows the endpoints to construct end-to-end paths from the set of possible path segments returned by the path lookup process. The lookup of paths still happens in the control plane, whereas the construction of the actual end-to-end paths happens in the data plane.</t>
      <section anchor="lookup-process">
        <name>Lookup Process</name>
        <t>An endpoint (source) that wants to start communication with another endpoint (destination), requires up to three path segments:</t>
        <ul spacing="normal">
          <li>An up-path segment to reach the core of the source ISD (only if the source endpoint is a non-core AS),</li>
          <li>
            <t>a core-path segment to reach
            </t>
            <ul spacing="normal">
              <li>another core AS in the source ISD, in case the destination AS is in the same source ISD, or</li>
              <li>a core AS in a remote ISD, if the destination AS is in another ISD, and</li>
            </ul>
          </li>
          <li>a down-path segment to reach the destination AS.</li>
        </ul>
        <t><strong>Note:</strong> The actual number of required path segments depends on the location of the destination AS as well as on the availability of shortcuts and peering links. More information on combining and constructing paths will be provided by the SCION Data Plane Specification document.</t>
        <t>The process to look up and fetch path segments consists of the following steps:</t>
        <ol spacing="normal" type="1"><li>First, the source endpoint queries the control service in its own AS (i.e., the source AS) for the required segments. The control service has up-path segments stored in its path database. Additionally, the control service checks if it has appropriate core- and down-path segments in store as well; in this case it returns them immediately.</li>
          <li>If there are no appropriate core-segments and down-segments, the control service in the source AS queries the control services of the reachable core ASes in the source ISD, for core-path segments to core ASes in the destination ISD (which is either the own or a remote ISD). To reach the core control services, the control service of the source AS uses the locally stored up-path segments.</li>
          <li>Next, the control service of the source AS combines up-path segments with the newly retrieved core-path segments. The control service then queries the control services of the remote core ASes in the destination ISD, to fetch down-path segments to the destination AS. To reach the remote core ASes, the control service of the source AS uses the previously obtained and combined up- and core segments.</li>
          <li>Finally, the control service of the source AS returns all retrieved path segments to the source endpoint.</li>
          <li>Once it has obtained all path segments, the endpoint combines them into an end-to-end path in the data plane.</li>
        </ol>
        <t><xref target="_table-3"/> below shows which control service provides the source endpoint with which type of path segment.</t>
        <table anchor="_table-3">
          <name>Control services responsible for different types of path segments</name>
          <thead>
            <tr>
              <th align="left">Segment Type</th>
              <th align="left">Responsible control service(s)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Up-segment</td>
              <td align="left">Control service of the source AS</td>
            </tr>
            <tr>
              <td align="left">Core-segment</td>
              <td align="left">Control service of core ASes in source ISD</td>
            </tr>
            <tr>
              <td align="left">Down-segment</td>
              <td align="left">Control service of core ASes in destination ISD (either the local ISD or a remote ISD)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sequence-of-lookup-requests">
          <name>Sequence of Lookup Requests</name>
          <t>The overall sequence of requests to resolve a path should be as follows:</t>
          <ol spacing="normal" type="1"><li>Request up-segments for the source endpoint at the control service of the source AS.</li>
            <li>Request core-segments, which start at the core ASes that are reachable with up-segments, and end at the core ASes in the destination ISD. If the destination ISD coincides with the source ISD, this step requests core segments to core ASes that the source endpoint cannot directly reach with an up-segment.</li>
            <li>Request down-segments starting at core ASes in the destination ISD.</li>
          </ol>
        </section>
        <section anchor="caching">
          <name>Caching</name>
          <t>For the sake of efficiency, the control service of the source AS should cache each returned path segment request. Caching ensures that path lookups are fast for frequently used destinations. The use of caching is also essential to ensure that the path-lookup process is scalable and can be performed with low latency.</t>
          <t>In general, to improve overall efficiency, the control services of all ASes should do the following:</t>
          <ul spacing="normal">
            <li>Cache the returned path segments.</li>
            <li>Send requests in parallel when requesting path segments from other control services.</li>
          </ul>
        </section>
      </section>
      <section anchor="behavior-of-actors-in-the-lookup-process">
        <name>Behavior of Actors in the Lookup Process</name>
        <t>As described above, the source endpoint resolves paths with a sequence of segment requests to the control service of the source AS. The control service in the source AS answers directly, or forwards these requests to the responsible control services of core ASes. In SCION, the instances that handle these segment requests at the control services are called <em>source AS segment-request handler</em> and <em>core AS segment-request handler</em>, respectively. This section specifies the behavior of the segment-request handlers in the lookup process. First, the use of wildcards in the lookup process is briefly addressed.</t>
        <section anchor="wildcard">
          <name>Use of Wildcard Addresses in the Lookup Process</name>
          <t>Endpoints can use wildcard addresses to designate any core AS in path-segment requests. The segment-request handlers must expand these wildcard addresses and translate them into one or more actual addresses. <xref target="_table-4"/> below shows who is responsible for what.</t>
          <t><strong>Note:</strong> For general information on the use of wildcard addresses in SCION, see <xref target="serv-disc"/>.</t>
          <table anchor="_table-4">
            <name>Use of wildcards in path segments requests</name>
            <thead>
              <tr>
                <th align="left">Segment Request</th>
                <th align="left">Wildcard Represents</th>
                <th align="left">Expanded/Translated By</th>
                <th align="left">Translated Into</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Up-segment</td>
                <td align="left">"Destination" core AS (where up-segment ends)</td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address destination core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core-segment</td>
                <td align="left">Source core AS (where core-segment starts)<sup>1</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core-segment</td>
                <td align="left">Destination core AS (where core-segment ends)</td>
                <td align="left">Control service of the <em>source core AS</em></td>
                <td align="left">Actual address destination core AS in destination ISD</td>
              </tr>
              <tr>
                <td align="left">Down-segment</td>
                <td align="left">"Source" core AS (where down-segment starts)<sup>2</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in destination ISD</td>
              </tr>
            </tbody>
          </table>
          <t>1) Includes all core ASes for which an up-segment from the source AS exists.<br/>
2) Includes all core ASes in destination ISD with a down-segment to destination AS.</t>
        </section>
        <section anchor="segment-request-handler-of-a-non-core-source-as">
          <name>Segment-Request Handler of a Non-Core Source AS</name>
          <t>When the segment-request handler of the control service of a <em>non-core</em> source AS receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>Determine the requested segment type.</li>
            <li>In the case of an up-segment request, look up matching up-segments in the path database and return them.</li>
            <li>
              <t>In the case of a core-segment request from a source core AS to a destination core AS:
              </t>
              <ul spacing="normal">
                <li>Expand the source wildcard into separate requests for each reachable core AS in the source ISD.</li>
                <li>
                  <t>For each core-segment request,
                  </t>
                  <ul spacing="normal">
                    <li>If possible, return matching core-segments from cache;</li>
                    <li>otherwise, request the core-segments from the control services of each reachable core AS at the source (start) of the core-segment. Add the retrieved core-segments to the cache.</li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>In the case of a down-segment request:
              </t>
              <ul spacing="normal">
                <li>Expand the source wildcard into separate requests for every core AS in the destination ISD (destination ISD refers to the ISD to which the destination endpoint belongs).</li>
                <li>
                  <t>For each segment request,
                  </t>
                  <ul spacing="normal">
                    <li>If possible, return matching down-segments from cache;</li>
                    <li>otherwise, request the down-segment from the control services of the core ASes at the source (start) of the down-segment. Sending the request may require looking up core-segments to the source core AS of the down-segment. Add the retrieved down-segments to the cache.</li>
                  </ul>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="segment-request-handler-of-a-core-as">
          <name>Segment-Request Handler of a Core AS</name>
          <t>When the segment-request handler of a <em>core AS</em> control service receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validate the request:
              </t>
              <ul spacing="normal">
                <li>The source of the path segment must be this core AS.</li>
                <li>
                  <t>The request must either be
                  </t>
                  <ul spacing="normal">
                    <li>for a core-segment to a core AS in this ISD or another ISD, or</li>
                    <li>for a down-segment to an AS in this ISD.</li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>If the destination is a core or wildcard address, then load matching core-segments from the path database and return.</li>
            <li>Otherwise, load the matching down-segments from the path database and return.</li>
          </ol>
          <t><xref target="app-b"/> shows by means of an illustration how the lookup of path segments in SCION works.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>One of the fundamental objectives that guided the design of SCION is security, in particular network security. See chapter 7 of the SCION book (Security Analysis), which states the precise security goals of various network participants and how SCION achieves these goals in the presence of different types of adversaries <xref target="CHUAT22"/>.</t>
      <t>To be precised.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO IANA considerations.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </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="RFC4632">
          <front>
            <title>Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan</title>
            <author fullname="V. Fuller" initials="V." surname="Fuller"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>This memo discusses the strategy for address assignment of the existing 32-bit IPv4 address space with a view toward conserving the address space and limiting the growth rate of global routing state. This document obsoletes the original Classless Inter-domain Routing (CIDR) spec in RFC 1519, with changes made both to clarify the concepts it introduced and, after more than twelve years, to update the Internet community on the results of deploying the technology described. 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="122"/>
          <seriesInfo name="RFC" value="4632"/>
          <seriesInfo name="DOI" value="10.17487/RFC4632"/>
        </reference>
        <reference anchor="RFC5398">
          <front>
            <title>Autonomous System (AS) Number Reservation for Documentation Use</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <date month="December" year="2008"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, two blocks of Autonomous System numbers (ASNs) are reserved for use in examples in RFCs, books, documentation, and the like. This document describes the reservation of two blocks of ASNs as reserved numbers for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5398"/>
          <seriesInfo name="DOI" value="10.17487/RFC5398"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC6996">
          <front>
            <title>Autonomous System (AS) Reservation for Private Use</title>
            <author fullname="J. Mitchell" initials="J." surname="Mitchell"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document describes the reservation of Autonomous System Numbers (ASNs) that are for Private Use only, known as Private Use ASNs, and provides operational guidance on their use. This document enlarges the total space available for Private Use ASNs by documenting the reservation of a second, larger range and updates RFC 1930 by replacing Section 10 of that document.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="6"/>
          <seriesInfo name="RFC" value="6996"/>
          <seriesInfo name="DOI" value="10.17487/RFC6996"/>
        </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>
        <reference anchor="gRPC" target="https://grpc.io/">
          <front>
            <title>gRPC, an open-source universal RPC framework</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="I-D.path-properties-voc" target="https://datatracker.ietf.org/doc/draft-irtf-panrg-path-properties/">
          <front>
            <title>A Vocabulary of Path Properties</title>
            <author initials="R." surname="Enghardt" fullname="Reese Enghardt">
              <organization>Netflix</organization>
            </author>
            <author initials="C." surname="Krähenbühl" fullname="Cyrill Krähenbühl">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="proto3" target="https://protobuf.dev/programming-guides/proto3/">
          <front>
            <title>Protocol Buffers Language Guide version 3</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="CHUAT22" target="https://doi.org/10.1007/978-3-031-05288-0">
          <front>
            <title>The Complete Guide to SCION</title>
            <author initials="L." surname="Chuat" fullname="Laurent Chuat">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Basin" fullname="David Basin">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="P." surname="Mueller" fullname="Peter Mueller">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ISBN" value="978-3-031-05287-3"/>
        </reference>
        <reference anchor="I-D.scion-components" target="https://datatracker.ietf.org/doc/draft-rustignoli-panrg-scion-components/">
          <front>
            <title>SCION Components Analysis</title>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="I-D.scion-cppki" target="https://datatracker.ietf.org/doc/draft-dekater-scion-pki/">
          <front>
            <title>SCION Control-Plane PKI</title>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="I-D.scion-overview" target="https://datatracker.ietf.org/doc/draft-dekater-panrg-scion-overview/">
          <front>
            <title>SCION Overview</title>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1497?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks go to William Boye (Swiss National Bank), Juan A. Garcia Prado (ETH Zurich), Samuel Hitz (Anapaya), and Roger Lapuh (Extreme Networks) for reviewing this document. We are also very grateful to Adrian Perrig (ETH Zurich), for providing guidance and feedback about each aspect of SCION. Finally, we are indebted to the SCION development teams of Anapaya and ETH Zurich, for their practical knowledge and for the documentation about the SCION Control Plane, as well as to the authors of <xref target="CHUAT22"/> - the book is an important source of input and inspiration for this draft.</t>
    </section>
    <section numbered="false" anchor="app-a">
      <name>PCB Protobuf Messages - Full Example</name>
      <t>The following code block provides a full example of one PCB in the Protobuf message format.</t>
      <artwork><![CDATA[
   message PathSegment {
       bytes segment_info = 1;
       repeated ASEntry as_entries = 2;
   }

   message SegmentInformation {
       int64 timestamp = 1;
       uint32 segment_id = 2;
   }

   message ASEntry {
       // The signed part of the AS entry. The body of the SignedMessage
       // is the serialized ASEntrySignedBody.
       // The signature input is defined as following:
       //
       // input(ps, i) = signed.header_and_body || associated_data(ps,i)
       //
       // associated_data(ps, i) =
       //             ps.segment_info ||
       //             ps.as_entries[1].signed.header_and_body ||
       //             ps.as_entries[1].signed.signature ||
       //             ...
       //             ps.as_entries[i-1].signed.header_and_body ||
       //             ps.as_entries[i-1].signed.signature
       //
       SignedMessage signed = 1;
       // Optional
       PathSegmentUnsignedExtensions unsigned = 2;
   }

   message SignedMessage {
       // Encoded header and body.
       bytes header_and_body = 1;
       // Raw signature. The signature is computed over the
       // concatenation of the header and body, and the optional
       // associated data.
       bytes signature = 2;
   }

   message HeaderAndBodyInternal {
       // Encoded header suitable for signature computation.
       bytes header = 1;
       // Raw payload suitable for signature computation.
       bytes body = 2;
   }

   message Header {
       SignatureAlgorithm signature_algorithm = 1;
       bytes verification_key_id = 2;
       // Optional
       google.protobuf.Timestamp timestamp = 3;
       // Optional
       bytes metadata = 4;
       int32 associated_data_length = 5;
   }

   message VerificationKeyID {
       uint64 isd_as = 1;
       bytes subject_key_id = 2;
       uint64 trc_base = 3;
       uint64 trc_serial = 4;
   }

   message ASEntrySignedBody {
       uint64 isd_as = 1;
       uint64 next_isd_as = 2;
       HopEntry hop_entry = 3;
       repeated PeerEntry peer_entries = 4;
       uint32 mtu = 5;
       // Optional
       PathSegmentExtensions extensions = 6;
   }

   message HopEntry {
       HopField hop_field = 1;
       uint32 ingress_mtu = 2;
   }

   message PeerEntry {
       uint64 peer_isd_as = 1;
       uint64 peer_interface = 2;
       uint32 peer_mtu = 3;
       HopField hop_field = 4;
   }

   message HopField {
       uint64 ingress = 1;
       uint64 egress = 2;
       uint32 exp_time = 3;
       bytes mac = 4;
   }
]]></artwork>
    </section>
    <section numbered="false" anchor="app-b">
      <name>Path-Lookup Examples</name>
      <t>To illustrate how the path lookup works, we show two path-lookup examples in sequence diagrams. The network topology of the examples is represented in <xref target="_figure-8"/> below. In both examples, the source endpoint is in AS A. <xref target="_figure-9"/> shows the sequence diagram for the path lookup process in case the destination is in AS D, whereas <xref target="_figure-10"/> shows the path lookup sequence diagram if the destination is in AS G. ASes B and C are core ASes in the source ISD, while E and F are core ASes in a remote ISD. Core AS B is a provider of the local AS, but AS C is not, i.e., there is no up-segment from A to C. "CS" stands for controle service.</t>
      <figure anchor="_figure-8">
        <name>Topology used in the path lookup examples.</name>
        <artwork><![CDATA[
+----------------------------+     +----------------------------+
|                            |     |                            |
|                            |     |                            |
|    +------------------+    |     |    +------------------+    |
|    |      Core        |    |     |    |          Core    |    |
|    |                  |    |     |    |                  |    |
|    | .---.     .---.  |    |     |    |            .---. |    |
|    |(  C  )---(  B  )-----------------------------(  F  )|    |
|    | `+--'     `+-+'---------+   |    |    .---.   `+-+' |    |
|    |  |         | |   |    | +------------(  E  )   | |  |    |
|    |  |         | |   |    |     |    |    `-+-'----+ |  |    |
|    +--|---------|-|---+    |     |    +------|--------|--+    |
|       |         | |        |     |           |        |       |
|       |         | |        |     |           |        |       |
|       |+--------+ |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|     .-++.         |        |     |         .-+-.      |       |
|    (  D  )      .-+-.      |     |        (  G  )-----+       |
|     `---'      (  A  )     |     |         `---'              |
|                 `---'      |     |                            |
|   ISD 1                    |     |                    ISD 2   |
+----------------------------+     +----------------------------+
]]></artwork>
      </figure>
      <figure anchor="_figure-9">
        <name>Sequence diagram illustrating a path lookup for a destination D in the source ISD. The request (core, x, x) is for all pairs of core ASes in the source ISD. Similarly, (down, x, D) is for down-segments between any core AS in the source ISD and destination D.</name>
        <artwork><![CDATA[
+---------+          +---------+          +---------+        +---------+
|Endpoint |          |Source AS|          | Core AS |        | Core AS |
|         |          | CS (A)  |          | CS (B)  |        | CS (C)  |
+----+----+          +----+----+          +----+----+        +-----+---+
    +++                   |                    |                   |
    | |                   |                    |                   |
+---+-+-------+           |                    |                   |
|send requests|           |                    |                   |
| in parallel |           |                    |                   |
+---+-+-------+           |                    |                   |
    | |                   |                    |                   |
    | |  request (up)     |                    |                   |
    | +----------------->+++                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | | reply (up,[A->B]) |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (core,*,*) |                    |                   |
    | +----------------->+++                   |                   |
    | |                  | |request (core,B,*) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(core,[B->C])|                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |reply (core,[B->C])|                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (down,*,D) |                    |                   |
    | +----------------->+++                   |                   |
    | |            +-----+-+-----+             |                   |
    | |            |send requests|             |                   |
    | |            | in parallel |             |                   |
    | |            +-----+-+-----+             |                   |
    | |                  | |                   |                   |
    | |                  | |request (down,B,D) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(down,[B->D])|                   |
    | |                  | |                   |                   |
    | |                  | |                   |request (down,C,D) |
    | |                  | +-------------------+----------------->+++
    | |                  | <-- -- -- -- -- -- -+ -- -- -- -- -- --+++
    | |   reply (down,   | |                   | reply(down,[C->D])|
    | |   [B->D, C->D])  | |                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |                   |                    |                   |
+---+-+----------+        |                    |                   |
|combine segments|        |                    |                   |
+---+-+----------+        |                    |                   |
    | |                   |                    |                   |
    +++                   |                    |                   |
     |                    |                    |                   |
 +---+----+           +---+----+          +----+---+          +----+---+
 +--------+           +--------+          +--------+          +--------+
]]></artwork>
      </figure>
      <figure anchor="_figure-10">
        <name>Sequence diagram illustrating a path lookup for a destination G in a remote ISD. The request (core, x, (2, x)) is for all path segments between a core AS in the source ISD and a core AS in ISD 2. Similarly, (down, (2, x), G) is for down-segments between any core AS in ISD 2 and destination G.</name>
        <artwork><![CDATA[
+---------+     +---------+      +---------+   +---------+   +---------+
|Endpoint |     |Source AS|      | Core AS |   | Core AS |   | Core AS |
|         |     | CS (A)  |      | CS (B)  |   | CS (E)  |   | CS (F)  |
+---+-----+     +----+----+      +----+----+   +----+----+   +----+----+
    |                |                |             |             |
   +++               |                |             |             |
   | |               |                |             |             |
+--+-+------+        |                |             |             |
|   send    |        |                |             |             |
|requests in|        |                |             |             |
| parallel  |        |                |             |             |
+--+-+------+        |                |             |             |
   | |               |                |             |             |
   | |  request (up) |                |             |             |
   | +------------->+++               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |    reply      |                |             |             |
   | | (up,[A->B])   |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(core,*,(2,*)) |                |             |             |
   | +------------->+++    request    |             |             |
   | |              | |(core,B,(2,*)) |             |             |
   | |              | +------------->+++            |             |
   | |              | |<- -- -- -- --+++            |             |
   | |              | | reply (core,  |             |             |
   | |              | | [B->E,B->F])  |             |             |
   | |<- -- -- -- --+++               |             |             |
   | | reply (core,  |                |             |             |
   | | [B->E,B->F])  |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(down,(2,*),G) |                |             |             |
   | +------------->+++               |             |             |
   | |        +-----+-+-----+         |             |             |
   | |        |send requests|         |             |             |
   | |        | in parallel |         |             |             |
   | |        +-----+-+-----+         |   request   |             |
   | |              | |               | (down,E,G)  |             |
   | |              | +---------------+----------->+++            |
   | |              | <- -- -- -- -- -+ -- -- -- --+++            |
   | |              | |               |    reply    |             |
   | |              | |               |(down,[E->G])|             |
   | |              | |               |             |   request   |
   | |              | |               |             | (down,F,G)  |
   | |              | +---------------+-------------+----------->+++
   | |              | < -- -- -- -- --|-- -- -- -- -+ -- -- -- --+++
   | |              | |               |             |    reply    |
   | | reply (down, | |               |             |(down,[F->G])|
   | | [E->G,F->G]) | |               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |               |                |             |             |
+--+-+----+          |                |             |             |
| combine |          |                |             |             |
|segments |          |                |             |             |
+--+-+----+          |                |             |             |
   | |               |                |             |             |
   +++               |                |             |             |
    |                |                |             |             |
+---+----+       +---+----+       +---+----+    +---+----+    +---+----+
+--------+       +--------+       +--------+    +--------+    +--------+
]]></artwork>
      </figure>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+2963YbSZIY/B9PUabOcRMgAInUZbrZF5siKYk7akmfqJ7e
mTlzpAJQIGsEoLBVACW2oD1+CD+Af/gx/Mt+k+9JHNe8VRYAqtlz2WPObosE
qjIjIyPjHpG9Xq+1yBeT7DDZOT8+e/kiOS5mi7KYJK8m6SzbaaWDQZld2W9f
7bSG6SK7KMrrwySfjYtWtRxM86rK4b3reYYfjrJ5Bv+ZLVqtUTGcpVP4dFSm
40VvlL2Hl8teNYTHe0Oeao4z9e7tt2Ca+607SVpmKUx49vrNkx3480NRvr8o
i+UcPnuVLi6Tow/wRPIiW+A3+ewief10p/U+u4Y/R4fJ2QwmmGWL3gnO2LrK
ZsvsEIZJNo8BD/ESdl5nVZaWw8vkKb5E30zTfALfzNNZefFf83Ix7hflBX2D
D8I3l4vFvDq8e/fDhw/9POPv7+JbPXwgv8rufsgGd+n9uzstgCdfXC4H8CIh
I62qYpinC/j1rmBn/vasd4JPTgBn1cKZInyjz2P188J79+4mpPcvF9PJTquV
LheXRXnYSnpJAvtXHSbH/WSUJb/H9wAA+OFdPC7KfJYFX8E6DxMmjyMLE3+X
MdqGo/f/laZHpLSceX7sJ0/KLHfn+DFdLC7ztHK+2GKGabr4ZRyf40U/eb2s
FvnFrJh4M73Ih8UkrX25xWyzfOjONStKmB+2GFCYvH5yvL9/cCC/HuzvfyO/
Pnh0Xz99eP+br/XXbx7qp4+++eaR/Pr1/u8e4K8Xr18dH9LUekrxk26SzpIC
DlmvKpblMEuWM5i8rNJJAt8m4xKWh4S9Q2+OYKsOk4N7B/d5oLS8yICalJgu
yvkQKQe+BJrpz+F49OYljF4u8qzqXRVDD4Cj5A/FMB0sJ2l5nRTjhI7TK/P8
NjPC1+miTIfvs9KeFOAUQq94uHp0TnoBMHdpOEOt9NOTf2WzX/eT09nFZVqO
FuYL3u3XGRzq+pe028AIxpP8Y3xIOAu/L//P/7zMZoP/878uJ8Gwx9dlPpnE
n6CxT988S/60zMp8eAlfwGIWxX1/S1/hZ0CKyePleAzbmDxPZxfL9CJLni5z
OGu4tUBryf2t9pNmGCzH/VF2hX9cADVMgcX1LnCwir+/f7fVQu7t0O3xs5+O
3jDdWtDeXGZw6KfzSbZQaBYFH44AmIP4Vhc57e7+vf7+vXu/u/vN777u3e/d
u7/fu/fw4Ouve/forQqwk1UIj+7q2fnjF4eJ//Tvevc37//zfnJ8uUzDzX+e
LksQSMF3kf2JDAk86nl2MVN2l1hGVb5fVuF324150k8ep7DiYMiT9CofBd9s
PeCzdFldZjUweczalzTsywXs5hWQ1lMa+32W/MScJF9cw/ouRtlgCQwuOuM5
zJgvfglmO0+ny2zif0NTHc3SeXqdJufX1SKbVvExX/WTH+H1SW0Rr4D+ytp3
26HmqA+vl2V+EYx5NCpz4KPBd5ExkS2q8JzOixkQUuUdE9Wc9Etc7OS6ym+D
G5ZGOglPDCHZgilGJGCyQQgm6+VghEf6SkGyVmVYN7qD7fn8fR5FNKkwPVJR
k1e/P7sFNPtKEsy7BVpvcdG/9aZ5eC3ghF/l2YcIal/KV7eIUZdqdeb/WMiN
zvAruU6r1+sl6aBCBIMd9eYyrxLA7XKKUgzE+LDMB1mVLEA+i0afkEqPKhl+
SJpTilZOF+DBfRgVoLvOkhnbPGS15ItsuADBKGvaPR+mk3SQT4D7d/WUoa45
Ss4qQAkuNnk5A23p46J3kYHU449kyKrdh28NBAOQYsNkCNoWrAAWBdgcVvgl
T5Yj8OkiyRdgCV3BUhBisxZVMnpDkBqDSZaAQTkvYCFVHyy8ZAxDdu1nyRAw
OrwsClDwBgBMls2S6XKyyEFv4XGLOUJa4TswHBp8CCJ+Os1/4VUAZIobfAUm
QuWHgfVRDKCXWQXst8oRNNCiklFeDZG4ZeSKp60Id9P0vXw8TdIrsB9oQbBC
BMGuCzc5S2iPLgrQ5BVTX1X16eHlIVjJoJPxBDNUFmmhVXaBJAIr/XAJdESY
gXlmgBcYZjqAkzNCgigQbCCPEYLGsCJEZTqrprAlczzWgNic3kZOkPLsiBWX
FMd5WS1o+cuqgl28LD4wINnH+aQQAiGEpZP8F5h7cQkm9cUlwJPCsnB2XIJ5
TeFHL4CscURPlNkFkFBWZiPQ8FNYGe8M8JBiVkwLUMQq0iyS3aPzNi1b33DG
HA4LXjGsNYcPig+zZA4nfHgN5iIsGwAdlxltTjXPhvn4WtBIsFlDhCBKJxfA
iRaX092qjW8sYdcFX1U2gZOFS4d3htkIzhiTk8Eb7Yl/jmmOSVG8X875tYp2
EZbsUHoxWCCF+LgCTpGMl7NRin8C6QyW+YSWOZgUw/dEoMIogJ8sh0ruMGpv
UfTgH6H4FrOdaT4aTbJW6w46U8pixG8wfX7BeQj2dd2JcE45kZmgAdA6nCxH
yiQc0urKLutfODqjUEaoZB/wHUBc5bKmYjbM5otKGVawqJlS2IwODOEBINAz
CVS8wEXIKIC7o8qyNiC/jst2O1G+20WaK2aTa6CEdFIlH4Ca5L2O8muZh1nr
GM4D8mufi6IsHBbLOfE1+Mrj9wrnuCymBr9JOhrBllU0MOHJ3WmDNED/FdqM
QF5MqnMlnYUhBTuSHkCYdFqUCBSQ6gQQ0+m8KECT6HSSMzpiaVXBIRgx/4cj
PkKblwZFzoLKA53+cToFUZSWjJbmfWM4ZoFQ2ij0QJAAxy9AjoCUSOHsjnMk
TQs5MUoxkWlAmu3s9M0T42RMyMlYJZ8+1bWrz5+73udWY8dvkKq8b1HXpS+A
DMDKwX9hxk+fxCzHrzLiSekE6OX4Mp0jazvoJ0dJBVrUonmHGGvw9JRPH/Am
PorIJAd4XpdE4smf/7J7hx5rw8eT4gPyg9adO8kb+CwHRai4uE4+8ROfcVeP
LO89t7y300FjL8KYcefNTsCUAH6KMmkKAKcjmEHO8ZU5iv3kCfCS7GOKDogu
LUnfhxUC9GYfKsT5MFOKLbs4MGieoMfACEtr1JKmgHwwXyxJfCZH50Sij1Ue
IfxvLDvoMTtQTsT8mF4zTK6yArQAGEv4LqtoUM+ZrgNvyUJJJIDESS+Y/nDr
dMbrmrYCrKSf9bvmzewjaF6zC2IVygJcalY1SQeZFUA/fXfhAtniEnZwhOY3
7FCmCICNGo/xLDIJVSjSCEDLx/5tmVWkdCXVEiRoanUDFu66lmzUdYRsBZAD
HeBHwBz+bZmiMooxhRz2Ff5KgMm9x6M/xk3OFsN+8jPMBtSbqmZ+3uUZQSIS
G8MhSGajRpGC2g0HGzCSDK49ti8kBGo76T6ufpTjWQQaTkHogxlUAc5BDwDG
IqpEoCK5O3/OowZEZehV+DcxKZ/gYLPKlMU1cnzDPQi53nL7wlajBBSqYlaV
kg+EsDNRxxfp+wyXAbDJRDXRKOsDoI7OcV2kjeXGQBCWu3t2ftKmMy9HG3ca
cZ7C4hdIliM0CWYXy7y6RB0v5BcVcpOsQl1ugrx4yDNmRrXF/QzXDDMt0CoT
BZ+sIHtocPE9TwvSY71rxL3MtmP00502LfhURKewNyNJZQcrsI4XvURPn36L
bEoGRlgChpY648hJSuGUgEKd4pkbi7IOUkCCCigFCmSbwBOyD+l1Mijz0QUp
0Y62gozxleyD6us4WK7KOEgEPAOi2ztfzUQmRYIAnz8TGp7YU4Gef8JGaEow
px+q2zhQMw3rAcYjQOOSzbbCy0sEbytzhNYrqFNrgbhPKtaOse1AqaaTiuq9
r5HuwuvLeU/+7tKrZeb8jSgFdH6Y6WdMEc+KefIkzyajZPfZExZ7RAvXCDeK
hcyVWF0mRhnB18WZ1gCSV8ePgeDBTFmC+Yrm3bC8ni/QhT8H3JDkR/c9KDCw
zqPz3iS7yiaC87qqgh/g0i8B0DECysazj8Gu8zUdKUI+nqV5yAcPeXXIDFKZ
AhTzYqpGHDDVi4IFDZz2MfKQsxOjpuHRVZoLCIbQeQYLUHyevWCEEmvZhDdC
W1vBQtJDbXRCLLTglRkJowot60QuztIBygQEDkaDU1NcZCTLiZocFMFeV+2u
M7aDNWuWh8Y1r9DwyBOHR+I6z4T7dNewQZylKC/SGZnRZMKDRoZUwaHtSllX
yIorZBkwUyWGM/xKaAT2S5tDG0PMvwKNCbkHRuD1GIHuRHS0QEc0nOWrvCxm
tBW7rHEYHe6vyzKvRjltTRv10nlRMWeegnIxIeNaIEFMDZhAkfVPCsATH1W0
XlEfTTEihICPs5Go9AQsP8X4fJ6lY5FBR6SQpbyBO9noIttRFfH8pMtrmal6
hkcZiChLp1ZTY6HfOxb9wGFz5wvcUKCxJ6zbvk5pEEAYuhgm12R0ofSuFpNr
3+xwqGCBJi7wOGZ4fPyEqel5gt0ThoEiCcOr4cEGXQdF3hinL9hcEiZ9jRKD
B+ypjuPMXtEaAJu4ClkvDH3OhwpX9armfAG0g9Y8YsNxe97luWpwRwKVpyLK
cGZT9r27j287nNgSmCc2wIYga4q0AWHO+pe6X9JphhsP53T3oB0wbx3WPJhW
SSABBsAJZKhiDlQMJiNoKyVbxW0Swbv324GgaADXqC1wJH5qlEGCg4CLpFFG
iVvVk61DL63di8cOP8RNPda5EzGMibnR6WOdUN2UVtXLyyZVjjA9xZM6ylH7
xtmZq9AM42VJ50JNFnWCwYJ0Th5+luUXl4OCXEN0/FBspviQkZuVLzjzhejt
VbOPs1oOqgxMjhkewoEjxdRSsZgkJL4hdva6KAiF4/xiKfrw7pvXxyzMheWV
+MzQewaGhadYzanyixlppxN1+QHfGaLeBLNi4k5gK6SzBgT3cUwYcVIVhiXA
5z12RMIKyFGZE79CqxzAvoLlEmPEvTkxelzFrrr3IKsxJ6pKdn786fzNTpf/
TV68pN9fn/5/P529Pj3B38+fHT1/bn5pyRPnz17+9PzE/mbfPH7544+nL074
Zfg08T5q7fx49McdVpx2Xr56Axzv6PkOnyjXd4xchgUBcc15mZGzt2qpX5SU
38fHr/73/9h/AJrpf5J8ms+f5Q/MkoE/wCQV1x/50vhPVFVa6XyepWgVEHMd
pvN8AfglJ0t1ic5fNGaRHv6MmPnLYfLdYDjff/CDfIAL9j5UnHkfEs7qn9Re
ZiRGPopMY7DpfR5g2of36I/e34p358Pv/ssEA2e9/a//yw8t8e28MmGK52hY
t1osoNBlgI4N8hfZMEsxA+G0IP6BmgSL06s8ZascObu1dTw9346BtiZQLemy
9rwXMxJP5H3jsVqt/5BKEZ3pG5jFBEdoAVufB2yPohkXo/pFtQSxVS4qkTWY
1UirItQekqgdGlSzkJynyNF7w8scFHD5HIdHQTfP2JOvO9ODje7gAB36CA4X
2KKGPCra8ai5nuVGp3ZFdcFH1BcsfRZf7O9BFk+OIeLpV6AdIjGQE5E1sMGy
QvcUekF4n6vLfI5eMYockPwU12BvCHtWTAGMXfFloYNDP5vjQsT1Ro+7QoSF
oGLDm6kPSAHJbHHYUchVlF/mIIHL4eW1PRjkoSjVd0Zw4KsiUYXWahuD2ynG
4CWcH3yktjQXNgaNgVaoGJcKiDvdLpDhgj3EPYqFkSWYj9rRdWOQ26EN2idi
wo4yUxKvGKE3ULR3JYDC08U1ci0DomPrDdmbrBvB+xi6pVNhdMHZtSU2GM3R
DDOhX08Pww+8Z2LwswQuwXihs2rNEQnRjkHUFx8opoIqQUaihIkmdtyIgJC/
VVMUQjikCWh4BwUOFcJ33DXUMC6WwZqSk+5p9wk/8RTg+Xf4ae31mn72Wquk
6Ue/uWOfQdjo0IXPyL8uKeJbfZii7wwpfwdvIRbg6d0EFpi0OwJaB/4+hr/t
0zjiu96d3lfOiPK3PnOPYQ0XxR8yHlYBCujvPfjeTJxY3tdKosM1fKy/fJf0
6H8/JB5nbBEG7gUYgb/hC1jsCSzWvAl/n8LfraRhyTcDbM3HawB6itjXH/j7
iQGoFwAEfzOlfTpM7jDR9/Y5ceh7ShEN6J6FEFM/HvMZWWM7n1stkrXExERY
kIXtqRzon8yNtQWCnAKwWE4AWjDLypx0kZKdv8TcswsMQkqsln/3nFDESqos
9Ewhp5plzKYGlEYNJoRyJ2JbwoXA6C5KDkEZhjS8LKpsJirSsBgxbPKWWwYx
Yc8zDos+JmRaNCkyhmFBGQls3rNK9prDNaqKGZ+VTemJR3g9bp4yA6OIpQTJ
fmVCizfnTbNbXJHPfFfi17GFoEeDLKeClUfycoLaEgR64maU40YWtQkD6mXa
6SF3kym6Ec3JeRrD787T/eRxgakZBAaleZDmUvT0lW29Ix3X8g6SjY7IAqZI
E4UwVCt0HR2cNJKDBj1FkoFHfIWK3V3uJLR0WotECTF6QEa8Iyad54fWJyAU
FBj7LALJot/STU22AELvBtQcx2sxM55s3hZQYUgrI1w0OrU71ifbwZx/JTTO
wrGvkfuKKdjx4lofixOdqGVE0UFwXHVIWwX5Iq6b4MuN3/ySExskACNJCy5Z
bnDXdUw0ll4krcTo9ZTd1pOUuekUGNdQ3Ni0uWFWGa1VfBMcdGpYs2cDLTxl
xwQKD1ut/X7CHkQ3tLgL2DJRszYFPPNK42M3j58n5yBSaNWYl2AH7rcOdHY3
kLnFfOyQQqfNOPtANNz1U8I05KaeFjgay1JyhnxvFlmagTOKHGSjUeUkAFoH
nzBE0J2zq3S2MK5dJ8bb5Vh7I0NtxI3LfnqAE0DRfYsi4JLLNQhCioDp6dAy
mVA0Zx2N6JFKpPrIxDA1FG5VfQ544lnxo53A4fHkYPCtrR5TSX0Dk3hOPCmW
6iY26cC85Eb5zJuS6BgLNTnAy5ByQCewETQChcAriYFH8h891DPMGA88At3e
xtJFhNHpXZYlKQHw0KdPoj0dfP7MOTaO8WDVIO+4KefPrVXnO2C2MANEk1tv
KJy6Z9mkw4CCzo/8IPrlazd7QDXNm83tP73XSm70s9rwfAjLpvFlvMYlXDUj
jd+vjUgn77U5eU0zNttmG0BdxcBt3OQ9/0We9TkfNucF3N9j5zTJ0+GLLjTu
v7sneEYo0akdvPhFoDZTVPN2hDbKgdooX3y0ks3HGs0aErKdThDq6nRuIy0n
moIjKT9fmDuU2fxpsW9qiUmsKIDQvEyrQBHABChUAnrJU0m3RIUa7LUsvzK6
tclcw0QRkJhUDZEXI1YPu7HMK06WUX1XI1aV9YyyxLbeRGHtkiui3jNJNPAD
TY7DRzIgYLsxgXKYVpJZyDptKclsqJdIajhlbk5yldoky1V18csMKs8xNU+B
rjAYZOYGlJ1zZrhkTGikVPOVZKG+6oD+dV40W0/Jh1Q0ikHGzrVshEP/iGUA
tFg3+oTTvM+u6fkqGy6N9QgDeaqjOMLRCjGpFBjcooxj1hPgLGBxFBXQEy5P
Ka1qkU+zxg0lImLiyCTORxG9q3SSjwhCQf5XFRUEoZ0/zBfX/eTny2wWHRYk
83uK2dJCptkopzNpVy0hwxnmIJbRLD9Vb/1gpDj8JT+fEkHc7OW152SKkYBZ
seBCi9mYvJ/iU4UJ0JPMHo7m85aYUB/6D1ArLhfx5HSmHZ+vdDB/OUZY1TKn
7AMm0Q7xDnFhjDJgQddUYXHNmjLsOhX5EqWhVerBTjrL7MKos1Yv+pacMsSL
KEGSi1Q6ckQ9K6qD9rQzqKYbKCiMfMzhMNhlzwhHqzRroaKMexsqnJfZFUYF
lLv841fSSC6IE++psVr1qHkQHXIExkuiILXWT43AYLPNjOCaBJvl0Ok3DuIN
4I5IAe+Om0wRG6WW+SDvuckS8F7rXCSt97I4NMBQqJASDDDkuaAky8jng0JS
I5yTilYfelkKNyRpzTE66Dichjh5VGe1/eRZ8SG7wjRjjCjLntcLWogEfIPJ
ztiVqiKTCiV1Qn5EjYykKftrPMeIzen0XujC7FnNLGYTpJbHk8+ukDMOuHmD
l7HiZp14Plc8Q5JJ6uTjqN+zoBGV+v3sGtoP4mjUkKKbsBdUkqToBOg0ytqC
/FCxx6ZZOpN9SmvrCtJlKnyXTpZme8BpQ6Kwk2nWxJEtV/l0Z7acDgitn1mD
87yRvs4YZs1+R3llR+c/JIsliH9UFNG7e3HpZr56FTLk+kFNjEYZe6N0a5U5
PyT3ezRy108odgZDYWPSXOKO1NJNeyG5UxtIUAkAYVSV5MQkm10g6Y6KjGdx
XOQXk2JAvgL2lXdNAi75LgYZJx9fPejifx8RNfx4dKyzcX2C5D9jyZ2Wcjat
kdL5qL3KZKebGJ2b1t2l08plokZyhoPAtptjTM7w8xPUfHjnmTEFI/BXLCUd
Z9ijB71BTtLABO+KebL/KMFPqUBhaPPOaVs1igeEuAC++uDr6KOqgC+yj1gM
BVIM9Q/mAMuKa6/SCv07oA6kC/Kx2fAxenZxHrMkH8WHybsHvfH43r3D/cPx
u6AkzgQWnJqnysmDNacjqUDFnLKWwSRdn9Zjv0ec/z3jjCyrbeFe85GWw5VN
cnbzUzyagsvWRqOeKFWym/Uv+kBO570zOCcvz1896SbnrzkU7/s+x+mghA3U
F151kx9fPT9v6/ko03peZtfOTCcI402qlYyKkPi5pIZZDntieSGqniBaXjA+
gBuzM95SGmJg/xFSkZwiG9XiLAN23xPlUfZR/bgxqbimGJ5Xrp/GyLuUnim+
nflhkGKoUaYVfePY8SdO7dht/qxaQTj25lb9tj8YPr7neycQVx/AIhyiBkqY
vbVVJfvAvfYfmqmwYVh5JbxYE9ysaV8xw8MgIZYbpJPiAvNXgI6otAPbQX3+
3I7BR3M9gske3de5XpX5FSqsqEdEBsMuUjTYsSMkyfGQVcbwnMsYrHWLHxTn
evQA5npw75sHMtdyACawJEqdg4CbjIjJMzVxgl5aDVXCl1R6p4HOi3TO9ufO
VToDk27HMAuaCmZ5+J9ng2r+bY//efTw4f2HITLHS/JhwCq+cPtW5BGik2KD
1tGTUaEr58jaS9MMD3xeTRG35iSaiC1bSWnFRrIoNHbgysrPazDric+4OiXF
ozJmhxrb4rXiSeacNvFrS/3c2fHRixdc/4P2HQXHTQWkeI+ulf29Pnt1mrw4
Pm7jEZhwXZfoLsZypE4PZGTRInALo5z9WOVu11sfapeWEgbX2uOHJe35h7yq
eqw0mWQqNcXk85ltwFcV4wXFtum8iOe0Us4K4LiM1ZPgONmDr4mv1hkqilcT
awarIF/wC4bt3z+gN+162QrCfm1ff3Ofc8FtHTRKqgVG9Uc6ZQUGHqpBJicI
5x2Nckle4NVSooEzxSC7LkQ7kPlpGKQDCi8Xo/Raln4HjQOwCDgl4A0XbKXL
CWXCyec0qTO80V4BO+ShqfJpPkmpagDVMkzyyoT1fPPwgLjF2ULVDZFRIHyL
maodGZbVf8AMM6yUvsw+csoDzk360CRL6Y97YGMXYPbCC6B73DuE/73DWd+N
4efQ/Oedl97p27zlcoJgzOeTazJ0ccnvDg/fJb9kZUG+OFLgUd7banhaFawW
M2RpK7BNBMlKeQbdmISKCaAClyPdGlLdR1U6eSMoX4O4HW0dfMlaEqv2H9E/
BaCdzZjl4QqFRsCkra65+LjMKwCS0PP46StPRUP3oEPDfCzloZLKdivDa41O
SLnRWOqfgzbcN8E8pyrcRBclg2M+Sa8DnTKoQMzHnD6ITeKsl078jALeO9Ye
yZQVsHRsqyYiaDvAwB/u77BLoNTqY4cutVoY69WzmfWPAY8UTmfplIovZo74
Oj47eY11jTQwqIVEvthTkci3Vihu5idnLxBEtYic9d17vQcH3zz45tHvDr55
2FYAA5QzHd/df/ROwunYa2CT7mXxF6he8EUgoJLz/JfM/nWbylhNAasrYber
ktXUMF7TvveXp5jV8HHjFSb7zibKFP/+oH+ftQqQchNKSpTdD8+isNHgdJ3h
wZBHWUmqlF3BGBoUoexlu9Nj8UXRi6k6gvrfgbHww/53d/EfgvfdPjPGRgQZ
DegWfmjCA6VgM0UEQaLseSILTxqntNuMeLc1j7EJxWHELjcjXRmDVPxEubzV
7aqQ78i2xaXdP3jH62IlsobIuF6OKvHdbZVzf8KDBzLhv+8/6n/NmJwSJoNZ
51uq65ygGLDKUHm/26i4hxL2N6Ypq1ObIGuM45FKvd9OzotpFmG/UsJvkSWy
LJkvS3SUua5RcVCI73Pn7OjF0WFyzs/3XvHzSbwlieqOO3/Z9bo0w25Q0zpW
fwmZd/HDXlr1BMSeQNRT/XrjA/2P2FW5LaKiRLkjIkF0vMr1Y83MOVBV92fD
GF1XJeKIOhl81rxQUnMqJ8VSXMuGsYpGUwshS5DYpEJS4hMbMRlpJsa1zpYE
KjeUDFNm1NOjksTVMutpBn/PeGZHS9vzyTZiyuJwpaV1DWFa31nvXgQcrutE
w+MM7KcME6V27u2o5m+G1dg6avwxf7p1musrbfUJXxU5MZ/jvBxiY2MQwZy6
O9ReX6/SckEqPWnhRxpJ5VDbhN2m6rryOutRWJAibVIoqH5GLoAqkhQnT4Y6
88idWZCpmaKcGToRs5A7QnkBLtNUz0375fJICnUs5wkYn8D6xhjLm2A/Ryza
Ty84YA5SECOrXeLIYsIYECmwDHw6HXFESt8bphw+uMa20xf5RLzo7joCv+OE
XKoLm9uofbPI/iBVGqFcxJFC5UcvJGyr5mVKrn5p8yHFzLbth2sOSeIZQ0ze
WdOHzpj7fV+xx60f5nMkRy1hNO3ZOPZr8sg1Ks9Z2tiKC48ExSBMqJkLXqnk
PUX3QCRkY9L+uq6HU22tetyaQ2wmxmSeAv25h0mvNAPGEjWWaTwTWMCeFJqv
EFabu9tCZ7jjjlh1xO6Rel8t863BBp/xtLNarJQ88CbJ8VqT1IGye9hegzby
DQDOTgw+R7Y01JELyuMYZJuLZM8b57X5Fag6qgUB05k5YRGgScs2GjNubTyH
ZA9d1NgM6Xi4VjISST7VWu4lLwoUoxhv07YVXjw0nWCDtGvuW0msXBO6g+QN
v7GMF7blZoipJJBwrZTaRVgpiaOB5TXHsi0MrUgGqBP5G2cLzDKxyZP8IkO6
KODgZ07e/byYU1r4SBmYf87k8BjM4mnH3vVuG4yMDq5SCD+BtP3//7f/bqv3
xV4tOXlC0q55sbb9ilC1/O5kZpvA4QA+JZcaIkAeUf3zMr2S3GBhHH6yKpm6
TDvGl+Zm39SXhP4pbGhVkTTNSxNbwEzXAqVipXnaWLHs5tXjHQdZidrRrq1q
FDf/V1XSWNGOpeoULHEAa4vfsSK2xUBgtcf4mljBFBtQgHDIKRtmpBx8d+F1
RTHo1R1su1Hb+g7pqFxkRyWjkuPLrS8IGu19YRY7kI4zQxMyQ5Cysv/doPzB
CTo9Iceoad0XtMNLDRpicXZy5K7ZR3oRy/NZibCMptaKOrh/JNbjzyaziE5B
oz/DBqmoXDzOKvI1SkTXEX0objgJHOutUpNvbSQ9IVCrSmTwvjNPMQStpeJ0
BvStGMUC3V4T9J9iQB9LbgYZyXXGHNVrjQE71DXReLDndlzmJhLVilT2OBNN
0Zk9QU/bJH+fsQ50iXX6s8PkRPQdivdKsiVpbuwcByLRgSTU50qPLjeFI0ne
kJQHA5i8tZkyJ1kYibgy48C6sUPkS+pgY04s9Q9gK5nZspZpk20rlF3BEUGO
K3n7H/IK68tIV9Iy6teZKbHa5aJTrgy5ZFJoaz6OQbT1mNPKqSIkS6cTVkWk
nm1YpMT7MCmvup4NL8vCRBKCymMetQq5ESADxGNtG+T0XJnES+YCyzmn8Wmi
WpRlmZ4VbrxW773gzBU/lutCGnaQQV5pha6qP9lHcgyzZsDdLgEkvC4FFjQF
JmF78RKigZ2RU8A1Kz99wufJHD/XDn1aMSjlbszDNGfNtGijfEH/Ho9kh6/a
2HGqDp1maxO95CMGBr+JgIQJiBqnp75eH3h9eKzwCJlEWLfLEHGmqPqEibXs
3TcaEe0Ti2W3HAAANAUBYIwaWf6Zt9VrHotYMm3ktdOQk+vMWdFuCcoNaoLc
oIHbH7jitkhCwHAUOgbGTmB+iMfWSgpqDWwjeBZ/EZUliFrUMr6prbJWgMZz
v+ujRhNCTf5z1/jl/cxqWMQXlSDiFmG0kCwr7IPGFYBgsXLzVWIh8r6vyPZZ
xTf934o594Qlx5+m7moxnGN3a4oQMSxp5ezGyKawE5y9hXrDZTaZSzcCmp1z
MqfaJcG01ma01bCJJlc2GSP2qWeopqnVk/+96lLttC1dm0Gl6iTi5XDmCLPA
dgWaq6xNWknODZgJTabc17AJk4zGKOkYXb7jTEEm9xyNBMkbcnrAku3bOVMI
6wDWjhalnysx1FIXI5mata4cYbMnkdH+vFvk80tip1a3VoykonTpmT4Sahdj
I5rEb7lCQ47/cW3b5lJ98O3fKM8fd0kMNWd32GsetLHihXqLC3pU2Bq6jWjW
GXiVdF5mXJI4VeFgBnfKJXZtTxHTQ8T67eNT1sbxAohVZmEQfcGCQQX8ZnYp
+4U91XaljqSGmfPZMsNmL4t8onn5UvdQidRwS+tte5cJ9wdsS4cxVGsmi65R
A4OqaQG+brsHpjOXl4ylbgjTilqtlzNaEih+XWllZoujq43V0b115dHzrDR9
kkack78QWxJdtIZ3en3DY20tj86/qkxzBEp6DvokiO9p5BTUcAUEWyuSgCxt
omhvJUPOtDsNsprPuGdy1/+cZ5nNiuVsaJo/SiBYxZIa7Sk34zwbc1iNOxu4
SeJi+jvjc08cpwVhJPFbZRDpELa/mjNKl1P948nbrHq4c4opYeWvLaOzBQax
XGdB7ikllZDfBVfcanFhjdv+mxkYGAqVaUZnnZhA5FHegPJCq55Z96g86Coj
reSWA6UEpzsHVwH4dTK2y5Ue/aK0TKhNB5qmRt5Dx8ctn1bqMp+FlIgXauj1
lpolkKNuSk4uzmhxx4tRs7vMrkbkOXnHlBxRh4WR4N1RpvBJwON1pwYpkeM5
5WMR46HH7PUUqe0xICUGTFySU2G65e7KOWz7fXN3M/nUrsJWDIZNyfUiFaJG
ZAUiu63YM/oGM3EDrm1yJJoc0jJ9p/71JzKr7zxFr/8s4woujaXMh4OqLW94
ecR0jYTWunHlnr5jVLimF8PiQWc6t9QdH2sre4LdfOUcl15yNpksqZwStu2U
HaNV2MCJ+9bwYeKWgGRUWScrDuueQrrnqGv9oOx6U+GLoTA68Ea09S0qKQEP
9FIFy9Clc+wc64Ei6RRiNCcAnrvAfnvpZJmJLWIKyu+nWlHeNeD8qxX+pOla
VY6O/E66w6H1wQ7VGPqPMK92FpP88ZDQga+BZL3KKmcifL92AncOdkStTit+
dUBhO6t41V/Z3+lr21IYVtspkCHFirZ9xwo5K63EuaW6OOkbxXhM3hFzV0Fm
m4lwA69dZs1E/8kO97bvJS+Xi8ODjuDI/XC/s9N1IJpct7UEf13M/CZF7ysH
B5sK3v2y7C2ePYD/39/8LMF7R/7fg9esZM97oV4jvhdb7QopwQK+JyPx23vO
uPZB9+3v5YfzmuiZdCVv018DfmS1Jz/e29rdbOPc5kH3baEJu0rTjcxvSyYP
7ntv17F25b19tRZrDT/40tUXbmP9hxeAR53+qtXT309N/nQjh3RZIzMIjyEm
PfJHJ/uUa40zeVmHyINqzMlIOo9BWRlqGWiXLtkDBRtYD79+PziqmvqqKxoo
20QrwbgkMB5HwFnLpcAP/sQt+TjSifL9A/oMbOUps7bBteWMrvFGI2o0NVyN
in7muzsPBf5HO31+z1VdLBAmDuO3Q1un5vsh3qM1fFEgJlWBMt4+FIEqL6ac
qx3iA1XyB5r6566jpXiCDvg8r+9BuD89ntSoVE19oKR9D1s9qOAs8XY/FJ62
LQDVshszrHZNQmGstmQHRfeOZ4nD3m3g6lH20fh0lFXd0thJjRWtezTgOxu5
zEYms5HH2EaRRgLdj4O5mwDtJO1eAoP5CWz1UW2jwoBx2Tk3Ykx+HiR3cEqY
/WfpgrjNW/oXd0jc9NIj+H/KTPSXEsiFAJfBI96bgSQ1v65ij/hvGina/KZ5
xH+TBOO/rp3TPOK/WZOe9TfNIy0XKyaFedUosuuPELZcDK0MeYjaMPTO4gg/
dijIwZxVJfDls9nhAT/SCIt9xNFCXMyterjOR7r4mBrBjzzkxy1GrWqBj6BT
5g+H+/xGTJ1wH3G0Ehdd/MjPhw/W7Yt9xL7actEV0wmDUbwttUoGoeu+/6h9
PKacOXDpqy2L0e+9H9rGzNvpcfiIwXQrwOjNYNFXWzGMOiiJKIwRTLcatGz8
aVAcI5j+G/B2B3j8D2lJ9FddfRzcmvp4sPN5bTNmtOJ9TWlniHcVjPA/md5N
MN6hBDt6G+dFouxKUrIEIQbXvCIyVyMW8qEZnYfMdsRfbN/Kaw1pQbvzDOMK
AVOQ0BAl7zu8j2Z15HU0kmvK6p9qkZSdC1ztJf4n1yX/dcfc1IEqD3vDeXEa
9yGP5m7dNL+/0+7zRIEbzVFDTQWSn3hbsLbMjbXGbnhgRu4W0fWw3VQxN5a4
r411dXu4OvFPa7Qz74A6XGiNGqUSIXxFZMMtzbJWbMRfuBIYQh627tj+EymP
wqoMg1kLqCAYlShRDdeAGmGu6x42fCv6sMeMzcj33bm2UdLMM3e88bZX0oJl
3UBJC/+wKoWvatWVtPBN55EmVctRLxpHcTSQBlXL1+ejo7gKW5OqZbWxRlgc
ha1J1XIUNntkXSbgKWzrVC3UEXqig16srLJ5SZ96Cpu+6qlannrRBIujsMVV
rXCPVrX/+nsUU7V48D85r1w571/ZPdJHGlQtGvzh5j3adxFQU7V48PvrR7GP
OKpW3HpoHCVum7RCXATPh3vkDW9ebVlcfB+oqdQf3KGXv9aeMDhqxXGxHSzm
1XUqaIxe4jhaKyE8etmiD+xVXakc3ppSeR+Vysdufo9GhtIBqEhdin5xkmdF
xc/UMoyzEaRguIqn8TtZsybL1F53M8ycy+00npkmuzaI3Q5GM83i3bDlDsXh
J5Mwz2dHIHUyEiQUmGcSL5EIvkkoNzcGHDVDgQFHie8TIDvVLJ2D9r3gmxcT
BxpaE+IKc+9mnJr6hpMedGdQaaTWe/baXC68oXwAgPfIVrznTmQP9HPjzH3w
+bM85NkCFSIeqxU0jN+Q4YFnsOvnd61VoxF060gefv7MZKK9WfnCWTrYkjdA
qrZqvz4QRZn8FdP3U5vfJo9Om/RcGPmUwrnejS3m0z9GnvxTKxwlCEpt+1k4
zCpxA1YOU1DZ4zEKy+y8Upd9n4/s36F/7tx3P+TK3juuY7Cu1q0if23x2dph
Dlhju3PgoCF5xJ899N76jaC5pZ1KNB5wIH+qeXkAXFC+euR/87DV6t3Kzz8a
9dWHsT8+9TEAD4UGAurziPhg3d5GVC07zDpofOpjpDwSCP+jUd9D/5v926K+
fzb6o7nu3HfAeCg7vo7+7v9G9Mcz87YxOh4JhP+U9KcoVCq7/9tzv789/Rny
+9X0xz/b8L8Hv5H0pX/uHDif/VPzvzX0V+N/ocXzQA2eV6rQLueRTgzSE+xP
O5/tTa/rro02V3h/oqQ+8q/HuoU6lTO19EBj/KgVQ03BpeyTHcK1giautSnm
GcDO98lgKXJmG7VM6T4WqUakGqvBcgzA+tVWFWadJnRjJeVUOuPRRVbY9WJB
FbyULs3AwFLARinmbEg8LQqEHV+3nYVL6rgAtoRep8Cdhjml0laDUSOIaJWZ
LbniC1+4J7MtDtM6sOYu0LpmW3xaYJNjrE/8806IhuTE7XLjdDyZyyh9WPPd
tmYeH+vdENzhn+3KWfKj7Bn3nmOS6HER+2fnGpuHYPS4ee2OHawptv7uH26R
KJfQe3eTV0dvniXnp09/PH3xphXcMLO3+Y9oX6u91kqPwBkgmf2+bBzdc/8g
W6Tf7ycO1+RvXgiDuC14Oj25E/IO/rfjoqHjfJF0LM4i7hZlW2a0K/m3U39m
L4St5t1ZtVZvwEavFul0jvhKzk5qc243zrpdrsHc+L+rjU8Qgpo6md2ww5lc
mvrTTDq2nH5c9OOIP+cHDG2sQdGvhKgJe424u9OAo80bUlvEF7yyeUuD/11F
P23Y0vqHexsQqvfgnut9JgIo/ucZd4OQT6Jn63Exutal3RpEUdT53IA4Qg2X
dwIcbdiML98nc+xqTCSGh/iC655jbFZm9+FocoEd0/6AvSdUkfh9dg0cJwL5
r5q1GdceSmNrbUbhWvxuwnCMrXXsqzX+Gi43WPuefXWlfe6TFba9QJ82AIq/
nnNTjdX5cvBX7ErEuF7dyqzrMLH25wsYRpxxGIaxFwV4r74Q/5M983FrxRhc
vcBen/I7tiQiTr9aYexIFYcVagruJy9Wqx/f/LRCwbG6PYgiiOsY4u00KQsh
qn28b/lY0/ZcEW/orOPh0e2J0pUbNIo84SEQKVwMJMA0gItb84Tqrig+Bn/S
X7Qr9AT+IttIv1JeS79Rj9tzINoLv4hC1IBJRs4dPtzrj8iGE7ThlKxHf4D6
NfvQgG6DbyGOU+ev04/zXJsNYWyHnsBrPxjsXzVzaP0+NPeOF/MeFVyxWZIH
JWr1BDGxZCvTqjlux5pOJo71ghVo2EHP68GGZfrUPMDYOG6BnHNfM7WQGmXZ
nJLBzAWDZpavrI1srurzL9Tg3kbUAUcvT7Fzee1H0DT2Ta5uAo+jANAaunQ+
76VoAN7RwjlE5XNaSc3uE3fC5+gdo5ttIP+zdcZX1PpauXbXWptrm9lpBS1z
yx2sDxHjXfPCV2t5/SuknJMrlGdui3kO0y7UUsKy/1OJqkr/Lq4V1347jpvM
7TA9kMukudjap1lqSjuYFMP30kXCGtbcKILbVyAJNGw/hw+Rs+jn6AjSffik
LGdwTQ1F+OO3uPzk+2T/W/0a4OV+v0fnvB1p9VYjyN8nB/TcZ5oIkPDOHebd
oYZkEYt5xa4VqlKfLxemvhVXZG4bdK+3pD7z8AbFp22HFnun5TtZy5ndsnfa
jM44rbDPybChMJ5qernNfGQoZyZbLM79c2znQa5qvcDxqWPgO4seWP+xXqeI
s70TDLoDfzG1ANZ7dsRDXkRkgqELgbmeql4QE15CqE3i3JsI10Mm6GwCZD0K
gUv1hErb5voDl2UooJ8U23G+FAqUllVnPAaUxARU/e1A7G6wv+ou6HCABp21
ga8R8MYdw7KVfTJR4MO3A6ZHFwuZHjw+o/Pvid14ZqgAea3g4aKv2ATW11hp
1zM6HLET+E7HDW8/cpijvUW7BozTckuZzYZprI9Sx6g/bjknSPRHD6wU8Njm
Er68f2DZ6shnlswtzatygKVNth1RbgwT3s+XtBeSRkOHUtiBcE28RFbOYlHm
F9QDwbbHkWvgrMZmhwmrCL2TLrfXLfGk82XJVxkXXiOjNjKQ7zKzoFeGgUvL
fGkRDhOCPlZQf4hJOkeZUOWYCUV7+PL87F+T03kBRLu7/83v7vXu7cP/Jdh6
Hf8v+enNMfNZi1lBnlxe4khpB0PmSrbmdfICdNFwxtzeeEo/jAivY5hSStAH
i5vKgyrcNneZflXZJhE8G2rKKhhxCttD4sp1i0RuEH0T32M+5eNcu2q6Gkyk
G00JaMFWS3zxnat3novKCBDRGHyXWlMHTQt3oII4cR6nM++5Fz2KxZeCHp4N
qKf7BWVjPYTJ9xasOgZVyBg185MrhD5vjlaE3HdDlr3rKl5r7t1kXBUvdxok
UhSWW3xoC+fNJt/ArTjvt3Lcb/DZ347TXsUu93Lltiw1aWqkodQtG/Hs9WZx
W1O4eqLIcEPU61maf6Fqg2iQ2UcctjXtYtRgJXG90A5jphOc33PGdkbHRXDn
LKd7lUyBjeYva7NYxQI729t2NVHlFU+1Z6VJmb1/ifYs7PHk4SW44jNNhHD0
6lslJLNTYp85igfHdNU2c5sCWfV3k3HmqRpqYBn9gglWDXOByFUyHHtOSZ/6
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
DKQGS2yKnkbH/Qfhg95WCh/cKuOhQV77pPH3k9gYSmz05BUYmB9lveeU1/7J
Mq7PWxr+lAcbeIL/HnLBOxLqov41Ictstpxq/INywO018qdPfzx98ebtmz++
On3704vzV6fHZ0/OTk+S75N738YfeuU1qPW+O3n58wuvOa337fHL16emPS3H
KINYakTg+fHUmPTbjX1Yj7XGn1oXeV0zroUqfNh+QzCbizXr4Vq/0S9PTSOm
8++op2/XDPpD/Z1tQA0jvjZqi0RQC7JRsM5tyG/Cgm4Cug0e9JNjbiWAUSbq
wuwzY763nfvuyg3sNWrxgPBdmtI7fQ0y6Dp2CVdx96R5SmU+enel16eKXSPe
ugBA5uV075heNgGsCHt16MhetxH/zHroJP4kVfRF8X45BxY0oV+E/0jvFPqo
w0nP4+VslNIdXJNksMwnNCp3ocbaIqzA+KrSkpMZ7LQ4R6n9m6b5W90BIyus
OgQKULFEv62TBu/2tGM1xISE3MdcTiTMSbo0IDK8iU3LZPwYG0Wgy4RLVoyB
Ia2QbFPAICyFR9UGpRx02eAPIlI+k0AJZtqiFqLVTYG+S92JbacL+cp0dzbp
JNT2sA57MGrY4V63+hXD12odzQxaQI8uluUwkwoOY4xVC+wXGat7kmxyOwDo
BQu51LDdtXdBcQI59wOqx4qOKFQQBvY1QCNSSQsyCEIK3e5yI3XvcwMJUasj
K9tdmCitR/fMTHTedUGm7GEWTNo1bTgIuXa10pFPX8BUfvetouTx3ZFT1aV5
3HHzkE7WfleCXWk96uwjzR/I03TeWPKxeWnm9l+fxrk8y5bgFX4zowBcv90h
kSnH/3NtIag1BraFrvFI95MfI+qXvUKDy6j0JGj1mSkPk54p5jRuuGViVAyX
zk2aapABDvG0IsXifONsETBhCpp6d4PHk+yxeKwbJU0QyKWKsFDFk4bAqKnS
RWj9rO8NAoRsInVmx6yNFdMaUUkMjpeb64/T+UpxUJkTA5NKiyqkWb0oYY55
OCX2IeMzZgNvtbZgXL8hpPKtCfPSqcoXRgFaYPqI093MCWhIzR3YhLV5rVkc
Bv7iK/FPOOB8ze44LghtLWsV5gir0MZx9XSC2mvuOSLeZhqVSXMlfAipggKp
lm+06Z6ogFWGYDeap/7Kl6ZdVsEJN0IkIfGQcfYi+7jYclw+wVmECo09wkZL
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
9CTBqQEA

-->

</rfc>
