<?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.7.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dekater-scion-controlplane-02" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="SCION CP">SCION Control Plane</title>
    <seriesInfo name="Internet-Draft" value="draft-dekater-scion-controlplane-02"/>
    <author initials="C." surname="de Kater" fullname="Corine de Kater">
      <organization>SCION Association</organization>
      <address>
        <email>c_de_kater@gmx.ch</email>
      </address>
    </author>
    <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
      <organization>SCION Association</organization>
      <address>
        <email>nic@scion.org</email>
      </address>
    </author>
    <author initials="S." surname="Hitz" fullname="Samuel Hitz">
      <organization>Anapaya Systems</organization>
      <address>
        <email>hitz@anapaya.net</email>
      </address>
    </author>
    <date year="2024" month="February" day="23"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 155?>

<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 162?>

<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="RFC9473"/>.</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>MAC</strong>: Message Authentication Code. In the rest of this document, "MAC" always refers to "Message Authentication Code" and never to "Medium Access Control". When "Medium Access Control address" is implied, the phrase "Link Layer Address" is used.</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>
            <t>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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </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>
            <t><em>Path exploration (or beaconing)</em>: This is the process where an AS discovers paths to other ASes. See also <xref target="beaconing"/>.</t>
          </li>
          <li>
            <t><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"/>.</t>
          </li>
          <li>
            <t><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"/>.</t>
          </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>
            <t>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.</t>
          </li>
          <li>
            <t>Selecting and registering the set of path segments via which the AS wants to be reached.</t>
          </li>
          <li>
            <t>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.</t>
          </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>
              <t>A path segment from a non-core AS to a core AS is an <em>up-segment</em>.</t>
            </li>
            <li>
              <t>A path segment from a core AS to a non-core AS is a <em>down-segment</em>.</t>
            </li>
            <li>
              <t>A path segment between core ASes is a <em>core-segment</em>.</t>
            </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 link layer 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>Currently, ISD numbers are allocated by Anapaya, the Swiss-based provider of SCION-based networking software and solutions (see <eref target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">Anapaya ISD AS assignments</eref>).</t>
        </section>
        <section anchor="scion-as-numbers">
          <name>SCION AS Numbers</name>
          <t>A SCION AS number is the 48-bit identifier for an AS. Although they play a similar role, there is no relationship between SCION AS numbers and BGP ASNs as defined by RFC4893. For historical reasons some SCION autonomous systems use a SCION AS number where the first 16 bits are 0, and the remaining 32 bits are identical to their BGP ASN. There is no technical requirement for such an equality.</t>
          <section anchor="text-representation">
            <name>Text Representation</name>
            <t>The default text representation for SCION AS numbers 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>
                <t>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.</t>
              </li>
              <li>
                <t>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>.</t>
              </li>
            </ul>
            <t>For historical reasons, SCION AS numbers in the lower 32 bit range may also be represented as decimal for human readability. For example, if a program receives the AS number <tt>0:1:f</tt>, it may display the number as "65551".</t>
          </section>
          <section anchor="special-purpose-scion-as-numbers">
            <name>Special-Purpose SCION AS Numbers</name>
            <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">
                    <tt>0:0:0</tt></td>
                  <td align="left">1</td>
                  <td align="left">The wildcard AS</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>0:0:1-0:ffff:ffff</tt></td>
                  <td align="left">~4.3 bill.</td>
                  <td align="left">Public SCION AS numbers</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">Additional public SCION AS 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>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 has to 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>
            <t>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).</t>
          </li>
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>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"/>.</t>
          </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>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </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>
              <t>selects the best combinations of PCBs and interfaces connecting to a neighboring AS (i.e., a child AS or a core AS), and</t>
            </li>
            <li>
              <t>sends each selected PCB to the selected egress interface(s) associated with it.</t>
            </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>
              <t>For the specification of one PCB, see <xref target="pcbs"/></t>
            </li>
            <li>
              <t>For more details on selecting PCBs, see <xref target="selection"/></t>
            </li>
            <li>
              <t>For more details on propagating PCBs, see <xref target="path-segment-prop"/></t>
            </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 <bcp14>MUST</bcp14> consists of at least:</t>
            <ul spacing="normal">
              <li>
                <t>An information field with an identifier and a timestamp.</t>
              </li>
              <li>
                <t>Entries of all ASes on the path segment represented by this PCB.</t>
              </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>
                <t><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"/>.</t>
              </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>
                    <t><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"/>.</t>
                  </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>
                <t><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).</t>
              </li>
              <li>
                <t><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.</t>
              </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>
                <t><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.</t>
              </li>
              <li>
                <t><tt>PathSegmentUnsignedExtensions</tt>: The unsigned and thus unprotected part of the AS entry. These are extensions with metadata that need no explicit protection.</t>
              </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>
                <t>a header,</t>
              </li>
              <li>
                <t>a body, and</t>
              </li>
              <li>
                <t>a signature.</t>
              </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>
                <t>For the specification of the signed header, see <xref target="ase-header"/>.</t>
              </li>
              <li>
                <t>For the specification of the signed body, see <xref target="ase-sign"/>.</t>
              </li>
              <li>
                <t>For the specification of the <tt>signature</tt> field, see <xref target="sign"/>.</t>
              </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> include at least the following metadata:</t>
              <ul spacing="normal">
                <li>
                  <t>The algorithm to compute the signature</t>
                </li>
                <li>
                  <t>The identifier of the public key used to verify the signature (i.e., the public key certified by the AS's certificate)</t>
                </li>
                <li>
                  <t>The ISD-AS number of the AS</t>
                </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>
                  <t><tt>signature_algorithm</tt>: Specifies the algorithm to compute the signature.</t>
                </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>
                      <t><tt>isd_as</tt>: The ISD-AS number of the current AS.</t>
                    </li>
                    <li>
                      <t><tt>subject_key_id</tt>: Refers to the certificate that contains the public key needed to verify this PCB's signature.</t>
                    </li>
                    <li>
                      <t><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.</t>
                    </li>
                    <li>
                      <t><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.</t>
                    </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>
                  <t><tt>timestamp</tt>: Defines the signature creation timestamp. This field is optional.</t>
                </li>
                <li>
                  <t><tt>metadata</tt>: Can be used to include arbitrary per-protocol metadata. This field is optional.</t>
                </li>
                <li>
                  <t><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.</t>
                </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 <bcp14>MUST</bcp14> consist 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>
                  <t><tt>isd_as</tt>: The ISD-AS number of the AS that created this AS entry.</t>
                </li>
                <li>
                  <t><tt>next_isd_as</tt>: The ISD-AS number of the downstream AS to which the PCB should be forwarded.</t>
                </li>
                <li>
                  <t><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"/>.</t>
                </li>
                <li>
                  <t><tt>peer_entries</tt>: The list of optional peer entries (<tt>PeerEntry</tt>). For a specification of one peer entry, see <xref target="peerentry"/>.</t>
                </li>
                <li>
                  <t><tt>mtu</tt>: The size of the maximum transmission unit (MTU) within the current AS's network.</t>
                </li>
                <li>
                  <t><tt>extensions</tt>: List of (signed) extensions (optional). PCB extensions defined here are part of the signed AS entry. This field <bcp14>SHOULD</bcp14> 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"/>.</t>
                </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>
                  <t>The signed header and body of the current AS (<tt>header_and_body</tt>).</t>
                </li>
                <li>
                  <t>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"/>.</t>
                </li>
                <li>
                  <t>The signed <tt>header_and_body</tt>/<tt>signature</tt> combination of each previous AS on this specific path segment.</t>
                </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>
                <t><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"/>.</t>
              </li>
              <li>
                <t><tt>ingress_mtu</tt>: Specifies the maximum transmission unit (MTU) of the ingress interface of the current AS.</t>
              </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>
                <t><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).</t>
              </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>
                <t><tt>egress</tt>: The 16-bit egress interface identifier (in the direction of beaconing).</t>
              </li>
              <li>
                <t><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.</t>
              </li>
              <li>
                <t><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.</t>
              </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>
                <t><tt>peer_isd_as</tt>: The ISD-AS number of the peer AS. This number is used to match peering segments during path construction.</t>
              </li>
              <li>
                <t><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.</t>
              </li>
              <li>
                <t><tt>peer_mtu</tt>: Specifies the maximum transmission unit MTU on the peering link.</t>
              </li>
              <li>
                <t><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"/>.</t>
              </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>
              <t>Unsigned extensions <tt>PathSegmentUnsignedExtensions</tt> are part of the AS entry component (the <tt>ASEntry</tt> message, see also <xref target="ase-message"/>).</t>
            </li>
            <li>
              <t>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"/>).</t>
            </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>
                <t>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.</t>
              </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>
                <t>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.</t>
              </li>
            </ul>
            <t><strong>Note:</strong> Note that during bootstrapping and if the AS obtains a PCB containing a previously unknown path, the AS <bcp14>SHOULD</bcp14> 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>
                <t>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.</t>
              </li>
              <li>
                <t>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.</t>
              </li>
              <li>
                <t>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.</t>
              </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>
                <t>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.</t>
              </li>
              <li>
                <t>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.</t>
              </li>
              <li>
                <t>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"/>.</t>
              </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>
                <t>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.</t>
              </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>
                    <t>The ingress interface to this AS, in the hop field component.</t>
                  </li>
                  <li>
                    <t>The egress interface to the neighboring AS, also in the hop field component.</t>
                  </li>
                  <li>
                    <t>The ISD_AS number of the next AS, in the signed body component of the AS entry.</t>
                  </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 hop field component of each added peer entry <bcp14>MUST</bcp14> have a specified egress interface.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>The control service <bcp14>MUST</bcp14> now sign each selected, extended PCB and append the computed signature.</t>
              </li>
              <li>
                <t>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"/>).</t>
              </li>
            </ol>
            <t><strong>Note:</strong></t>
            <ul spacing="normal">
              <li>
                <t>For more information on the signed body component of an AS entry, see <xref target="ase-sign"/>.</t>
              </li>
              <li>
                <t>For more information on a peer entry, see <xref target="peerentry"/>.</t>
              </li>
              <li>
                <t>For more information on the hop field component, see <xref target="hopfield"/>.</t>
              </li>
              <li>
                <t>For more information on signing an AS entry, see <xref target="sign"/>.</t>
              </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>
                <t>The core control service selects the best PCBs to forward to neighboring core ASes observed so far.</t>
              </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>
                    <t>The egress interface to the neighboring core AS, in the hop field component.</t>
                  </li>
                  <li>
                    <t>The ISD_AS number of the neighboring core AS, in the signed body component of the AS entry.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>The core control service <bcp14>MUST</bcp14> now sign the extended PCBs and append the computed signature.</t>
              </li>
              <li>
                <t>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"/>).</t>
              </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>
                    <t><tt>Beacon</tt>: Specifies the method that calls the control service at the neighboring AS in order to propagate the extended PCB.</t>
                  </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>
                    <t><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"/>.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconResponse</tt>: Specifies the response message from the neighboring AS.</t>
              </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>
            <t>Up-segments, which allow the infrastructure entities and endpoints in this AS to communicate with core ASes; and</t>
          </li>
          <li>
            <t>down-segments, which allow remote entities to reach this AS.</t>
          </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>
                      <t>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".</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>The egress interface in the hop field component <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>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".</t>
                    </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>
                  <t>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".</t>
                </li>
              </ul>
            </li>
            <li>
              <t>As a last step, the control service <bcp14>MUST</bcp14> sign the modified PCB and append the computed signature.</t>
            </li>
          </ol>
          <t><strong>Note:</strong></t>
          <ul spacing="normal">
            <li>
              <t>For more information on the signed body component of an AS entry, see <xref target="ase-sign"/>.</t>
            </li>
            <li>
              <t>For more information on a peer entry, see <xref target="peerentry"/>.</t>
            </li>
            <li>
              <t>For more information on the hop field component, see <xref target="hopfield"/>.</t>
            </li>
            <li>
              <t>For more information on signing an AS entry, see <xref target="sign"/>.</t>
            </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>
              <t>The control service selects the PCBs that it wants to transform into up-segments from the candidate PCBs in the beacon store.</t>
            </li>
            <li>
              <t>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>.</t>
            </li>
            <li>
              <t>The control service now adds the newly created up-segments to its own path database.</t>
            </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>
              <t>The control service selects the PCBs that it wants to transform into down-segments from the candidate PCBs in the beacon store.</t>
            </li>
            <li>
              <t>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>.</t>
            </li>
            <li>
              <t>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"/>).</t>
            </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>
            <t>The core control service selects the best PCBs towards each core AS observed so far.</t>
          </li>
          <li>
            <t>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>.</t>
          </li>
          <li>
            <t>As a final step, the control service adds the newly created core-segments to its own path database.</t>
          </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>
                <t><tt>SEGMENT_TYPE_DOWN</tt>: Specifies a down-segment.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><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>.</t>
          </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>
            <t>An up-path segment to reach the core of the source ISD (only if the source endpoint is a non-core AS),</t>
          </li>
          <li>
            <t>a core-path segment to reach
            </t>
            <ul spacing="normal">
              <li>
                <t>another core AS in the source ISD, in case the destination AS is in the same source ISD, or</t>
              </li>
              <li>
                <t>a core AS in a remote ISD, if the destination AS is in another ISD, and</t>
              </li>
            </ul>
          </li>
          <li>
            <t>a down-path segment to reach the destination AS.</t>
          </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>
            <t>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.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>Finally, the control service of the source AS returns all retrieved path segments to the source endpoint.</t>
          </li>
          <li>
            <t>Once it has obtained all path segments, the endpoint combines them into an end-to-end path in the data plane.</t>
          </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>
              <t>Request up-segments for the source endpoint at the control service of the source AS.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>Request down-segments starting at core ASes in the destination ISD.</t>
            </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>
              <t>Cache the returned path segments.</t>
            </li>
            <li>
              <t>Send requests in parallel when requesting path segments from other control services.</t>
            </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>
              <t>Determine the requested segment type.</t>
            </li>
            <li>
              <t>In the case of an up-segment request, look up matching up-segments in the path database and return them.</t>
            </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>
                  <t>Expand the source wildcard into separate requests for each reachable core AS in the source ISD.</t>
                </li>
                <li>
                  <t>For each core-segment request,
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching core-segments from cache;</t>
                    </li>
                    <li>
                      <t>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.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>In the case of a down-segment request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>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).</t>
                </li>
                <li>
                  <t>For each segment request,
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching down-segments from cache;</t>
                    </li>
                    <li>
                      <t>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.</t>
                    </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>
                  <t>The source of the path segment must be this core AS.</t>
                </li>
                <li>
                  <t>The request must either be
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>for a core-segment to a core AS in this ISD or another ISD, or</t>
                    </li>
                    <li>
                      <t>for a down-segment to an AS in this ISD.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the destination is a core or wildcard address, then load matching core-segments from the path database and return.</t>
            </li>
            <li>
              <t>Otherwise, load the matching down-segments from the path database and return.</t>
            </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>As described previously, the goal of SCION’s beaconing process in the control plane is to securely discover and disseminate paths between any two ASes. This section describes security considerations for SCION's control plane, that focuses on <em>inter</em>-domain routing. SCION does not provide intra-domain routing, nor does it provide end-to-end payload encryption. These topics lie therefore outside the scope of this section.</t>
      <t><strong>Note:</strong> This section only discusses SCION control plane- and routing-specific security considerations. For security considerations related to the SCION control-plane PKI, see <xref target="I-D.scion-cppki"/>. <xref target="I-D.scion-dp"/> includes security considerations that concern the SCION data plane and data forwarding.</t>
      <t>This section focuses on three kinds of security risks in the control plane. The first risk is when an adversary controls one or all core ASes of an ISD and tries to manipulate the beaconing process from the top down (see <xref target="topdown-manipulate"/>). Also "ordinary" (non-core) adversaries that try to manipulate the beaconing process pose a risk to the control plane (see <xref target="manipulate-beaconing"/>). The third kind of security risks are Denial of Services (DoS) attacks, where attackers overload different parts of the infrastructure (see <xref target="dos-cp"/>).</t>
      <section anchor="topdown-manipulate">
        <name>Manipulation of the Beaconing Process by a Core Adversary</name>
        <t>The first kind of risk to the beaconing process comes from an adversary controlling one or more core ASes in an ISD. If the adversary stops all core AS(es) within an ISD from propagating PCBs, the discovery of new paths halts. In this case, downstream ASes will notice that PCBs are no longer being propagated, but all previously discovered (and still valid) paths remain usable for data-plane forwarding until they expire. This is an unlikely scenario, as it would require compromise of all core ASes within an ISD.</t>
      </section>
      <section anchor="manipulate-beaconing">
        <name>Manipulation of the Beaconing Process by a Non-Core Adversary</name>
        <t>This section examines several possible approaches open to an "ordinary" non-core adversary to manipulate the beaconing process in the SCION control plane, and shows for each case to what extent SCION's design can prevent the corresponding attack or help to mitigate it.</t>
        <ul spacing="normal">
          <li>
            <t>Path hijacking through interposition (see <xref target="path-hijack"/>)</t>
          </li>
          <li>
            <t>Creation of spurious ASes and ISDs (see <xref target="fake-ases"/>)</t>
          </li>
          <li>
            <t>Peering link misuse (see <xref target="peer-link-misuse"/>)</t>
          </li>
          <li>
            <t>Manipulation of the path selection process (see <xref target="manipulate-selection"/>)</t>
          </li>
        </ul>
        <section anchor="path-hijack">
          <name>Path Hijacking through Interposition</name>
          <t>An malicious AS M might try to manipulate the beaconing process between two neighbor ASes A and B, with the goal to hijack traffic to flow via M. If M can interpose itself on the path between A and B, then it could attempt several potential attacks:</t>
          <ul spacing="normal">
            <li>
              <t>The adversary M could intercept and disseminate a PCB on its way from A to the neighboring AS B, and inject its own AS entry into the PCB toward downstream ASes.</t>
            </li>
            <li>
              <t>The adversary could modify the hop fields of an already existing path, in order to insert its own AS in the path.</t>
            </li>
            <li>
              <t>The adversary could fully block traffic between AS A and AS B, in order to force traffic redirection through an alternate path that includes its own AS.</t>
            </li>
          </ul>
          <t>The first type of attack is detectable and blocked by downstream ASes (e.g. B), because a PCB disseminated by AS A towards AS B contains the "Next ISD AS" field in the entry of AS A, pointing to AS B, and protected by A's signature. If M manipulates the PCB while in flight from A to B, then verification of the manipulated inbound PCBs will fail at AS B, as the adversary's PCBs cannot contain A's correct signature.
The second type of attack is made impossible by the hop field's MAC, which protects the hop field's integrity and chains it with the previous hop fields on the path.
The third type of attack generally cannot be prevented, however the alternate path would be immediately visible to endpoints, as traffic must include hop fields from AS M.</t>
        </section>
        <section anchor="fake-ases">
          <name>Creation of Spurious ASes and ISDs</name>
          <t>An alternative scenario is when an adversary tries to introduce and spoof a nonexistent ASes. This would enable the adversary to send traffic with the spoofed AS as a source, allowing the adversary to complicate the detection of its attack and to plausibly deny the misbehavior.</t>
          <t>However, spoofing a new AS requires a registration of that AS with the ISD core to obtain a valid AS certificate; otherwise the adversary cannot construct valid PCBs. As this registration includes a thorough check and authentication by a CA, this cannot be done stealthily, which defeats the original purpose.</t>
          <t>Similarly to creating a fake AS, an adversary could try to introduce a new, malicious ISD. This involves the generation of its own TRC, finding core ASes to peer with, and convincing other ISDs of its legitimacy to accept the new TRC. Although this setup is not entirely impossible, it requires substantial time and effort, and may need the involvement of more than one malicious entity. Here, the "costs" of setting up the fake ISD may outweigh the benefits.</t>
        </section>
        <section anchor="peer-link-misuse">
          <name> Peering Link Misuse</name>
          <t>The misuse of a peering link by an adversary represents another type of attack. Consider the case where AS A wants to share its peering link only with one of its downstream neighbors, AS B, and therefore selectively includes the peering link only in PCBs sent to B. An adversary may now try to gain access to this peering link by prepending the relevant PCBs to its own path. For this, the adversary needs to be able to (1) eavesdrop on the link from A to B, and (2) obtain the necessary hop fields by querying a control service and extracting the hop fields from registered paths.</t>
          <t>Even if an adversary succeeds in misusing a peering link as described above, SCION is able to mitigate this kind of attack: Each AS includes an egress interface as well as specific “next hop” information to the PCB before disseminating it further downstream. If a malicious entity tries to misuse a stolen PCB by adding it to its own segments, verification will fail upstream as the egress interface mismatches. Therefore, the peering link can only be used by the intended AS.</t>
        </section>
        <section anchor="manipulate-selection">
          <name>Manipulation of the Path-Selection Process</name>
          <t>Endpoint path control is one of the main benefits of SCION compared to the current Internet, as SCION endpoints can select inter-domain forwarding paths for each packet. However, with the benefits of path selection comes the risk of endpoints selecting non-optimal paths. This section discusses some mechanisms with which an adversary can attempt to trick endpoints downstream (in the direction of beaconing) into choosing non-optimal paths. The goal of such attacks is to make paths that are controlled by the adversary more attractive than other available paths.</t>
          <t>In SCION, overall path selection is the result of three steps. First, each AS selects which PCBs are further forwarded to its neighbors. Second, each AS chooses the paths it wants to register at the local control service (as up-segments) and at the core control service (as down-segments). Third, the endpoint performs path selection among all available paths resulting from a path lookup process. The following text describes attacks that aim at influencing the path-selection process.</t>
          <t>These attacks are only successful if the adversary is located within the same ISD and upstream relative to the victim AS. It is not possible to attract traffic away from the core as traffic travels upstream towards the core. Furthermore, the attack may either be discovered downstream (e.g., by seeing large numbers of paths becoming available), or during path registrations. After detection, non-core ASes will be able to identify paths traversing the adversary AS and avoid these paths.</t>
          <t><strong>Announcing Large Numbers of Path Segments</strong> <br/>
This attack is possible if the adversary controls multiple (at least two) ASes. The adversary can create a large number of links between the ASes under its control, which do not necessarily correspond to physical links. This allows the adversary to multiply the number of PCBs forwarded to its downstream neighbor ASes. This in turn increases the chance that one or several of these forwarded PCBs are selected by the downstream ASes.</t>
          <t>In general, the number of PCBs that an adversary can announce this way scales exponentially with the number of consecutive ASes the adversary controls. However, this also decreases their chance of being chosen by a downstream AS for PCB dissemination or by an endpoint for path construction, as these relatively long paths have to compete with other, shorter paths. Furthermore, both endpoints and downstream ASes can detect poorer quality paths in the data plane and switch to better paths.</t>
          <t><strong>Wormhole Attack</strong> <br/>
A malicious AS M1 can send a PCB not only to their downstream neighbor ASes, but also out-of-band to another, non-neighbor colluding malicious AS M2. This creates new segments to M2 and M2's downstream neighbor ASes, simulating a link between M1 and M2 which may not correspond to an actual link in the network topology.</t>
          <t>Similarly, a fake path can be announced through a fake peering link between two colluding ASes, even if in different ISDs. An adversary can advertise fake peering links between the two colluding ASes, thus offering short paths to many destination ASes. Downstream ASes might have a policy of preferring paths with many peering links and thus are more likely to disseminate PCBs from the adversary. Similarly, endpoints are more likely to choose short paths that make use of peering links. In the data plane, whenever the adversary receives a packet containing a fake peering link, it can transparently exchange the fake peering hop fields with valid hop fields to the colluding AS. To avoid detection of the path alteration by the receiver, the colluding AS can replace the added hop fields with the fake peering link hop fields the sender inserted.</t>
          <t>To defend against this attack, methods to detect the wormhole attack are needed.  Per link or path latency measurements can help reveal the wormhole and render the fake peering link suspicious or unattractive. Without specific detection mechanisms these so-called wormhole attacks are unavoidable in routing.</t>
        </section>
      </section>
      <section anchor="dos-cp">
        <name>Denial of Service Attacks</name>
        <t>The beaconing process in the SCION control plane relies on control-plane communication. ASes exchange control-plane messages within each other when propagating PCBs to downstream neighbors,  when registering PCBs as path segments at the core control services, or during core path lookup. Volumetric DoS attacks, where attackers overload a link, may make it difficult to exchange these messages. SCION limits the impact of volumetric DoS attacks, which aim to exhaust network bandwidth on links; in this case, ASes can switch to alternative paths that do not contain the congested links. In addition, reflection-based attacks are prevented, as thanks to path-awareness, response packets are returned on the same path to the actual sender. Control plane traffic can also be marked with priority using the TrafficClass field in the SCION common header, and mapped to a prioritized queue on border routers.</t>
        <t>In addition to this, critical control services should be further protected to preserve their availability with filtering and rate-limiting. Thanks to its path-awareness, SCION enables more fine-grained filtering mechanisms, that can be employed to prevent misuse of critical request to the control plane:</t>
        <ul spacing="normal">
          <li>
            <t>ISD / AS whitelisting only allows requests from certain categories to pass the filter (e.g. requests from infrastructure nodes of the same AS, ISD, or from neighboring ASes)</t>
          </li>
          <li>
            <t>Path length filtering discriminates packets based on the length of the traversed path (e.g. empty path for AS internal traffic, one hop paths limiting traffic to one-hop neighbors; and based on the number of path segments  to distinguish requests from external ISDs)</t>
          </li>
          <li>
            <t>Rate limiting, that can be applied based on various identifiers (endpoint address, AS, or ISD)</t>
          </li>
        </ul>
        <t>A combination of the mechanism above is used to prevent flooding attacks on the control service. In addition, the control services are designed to be deployed on replicated instances. Different instances can be made available only to specific groups of endpoints. For example, an AS could set up path server replicas such that one replica handles all requests originating from outside the AS, whereas another replica can only be reached by end hosts within an AS.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The ISD and SCION AS number are SCION-specific numbers. They are currently allocated by Anapaya Systems, a provider of SCION-based networking software and solutions (see <eref target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">Anapaya ISD AS assignments</eref>). This task is currently being transitioned from Anapaya to the SCION Association.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <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="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="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="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 anchor="sec-informative-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-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>
        <reference anchor="I-D.scion-dp" target="https://datatracker.ietf.org/doc/draft-dekater-scion-dataplane/">
          <front>
            <title>SCION Data Plane</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="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date year="2023"/>
          </front>
        </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="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="RFC9473">
          <front>
            <title>A Vocabulary of Path Properties</title>
            <author fullname="R. Enghardt" initials="R." surname="Enghardt"/>
            <author fullname="C. Krähenbühl" initials="C." surname="Krähenbühl"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>Path properties express information about paths across a network and the services provided via such paths. In a path-aware network, path properties may be fully or partially available to entities such as endpoints. This document defines and categorizes path properties. Furthermore, the document identifies several path properties that might be useful to endpoints or other entities, e.g., for selecting between paths or for invoking some of the provided services. This document is a product of the Path Aware Networking Research Group (PANRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9473"/>
          <seriesInfo name="DOI" value="10.17487/RFC9473"/>
        </reference>
      </references>
    </references>
    <?line 1588?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks go to William Boye (Swiss National Bank), Matthias Frei (SCION Association), Kevin Meynell (SCION Association), Juan A. Garcia Prado (ETH Zurich), 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:
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
bsPH+stvswH97/ssoIwdgsDtCCLwN3wBm30Mm3Vvwt9P4O9OtmHLn7ewLR9v
WdAPCH39gb+fugUNogXB34xpHw+zG4z0gwMOoPqOwkEjvGcmxNiP13xB2tje
p06HeC0RMWEWpGEHIgdaYkunbQEjJ1cz5naAFMy8siRZZMVmbiLuxSmq9OKV
5t8D8xuRkrqIbXJIqRYFk6kRxfOCCqHUiciWUCFQuqsVO9scQRqfVXWxEBFp
XE14bfKWzUmZsY0dh0XrGhItmhQJw7ii2AtW71kke82OKRXFnLXOBy+lfdkB
Nc+ZgJFvVtyBvzJ0J5jzc+N4LMtnuiue+tRG0KJBmlPFwiPZd0FsiVxaaTXK
GNBFbMLQgVXeGyB1kyn6CcnJPI2BBubpYfawwiAUWgYFtJDkUg30lV2tIz2r
eUdhVUekAZNPjZw1KhVaQweHx5QgQc8RZeCRUKBiQ5+dhLZOexF/KPpJSIk3
bNI8P/Y2AcGgSNlnFkga/Y4GetIFcPXWdWhMztXC2fD5WECEIamMYLHRnN/z
1ugeyPAO0TjeyL9G5ivGYGO/9jYW45dpxX7RRTCmOsStimwRl5vWVzqPwRmH
cIirScIzLFpeY67rOb8zvUhSiZPrKY5vIMGB8zkQLjGo8uHG8XO0V7FNsHtt
w54DHagJhB3nEj3sdA6GGVsQrRN1H6Dl/INdcu2WtXoCPz9SIDsBlkK7xggM
P/Cwc0dnty7bHeZjgxQababFBeFwPwx+U+eiWlrgaqxXEh0VWrNI04yMUWQg
m0xqE+roDXxCEEF2Ls7zReNMu8ab3eeogo0EdSNsLPkZAEwARHc9iIBKrrcA
CDECpqdLy2hCfqxtOKJXKpM0GOetVae/F/XZtYt3JfTrAoXHm4Nux65aTCXI
D1TiJdGkVFCf6KQj95L1b7o3JaQz5WQzi5ch5YLO4CBoBHL21+LtT0R6BqDn
NaMn9Ahkex81ICyMbu96tSIhAB76+FGkpzufPnE0kVEevBgUXDel/KXX6kID
zA5qgEhy2xWFJ/Yuu8AfEND5ke9Fvnxt4yRU0vy8ucOnb3ayz/q5uub5eC3X
jS/jbdzC+Wag8futEenmvXY3b9OMm3Wza5Z6lVruxkO+Gb7Isz7ny2ZewPN9
ZG6TPB2/aFdj/933KRTd6MVftNTNGLX5OGId5Y7qKL/4amXXX2tUa4jJ9nqR
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
3+L2s++yg2/1a1hvQU7XoxM+k7x+q27k77I79NwnmgiA8M4O8+5Q/bIIxbJm
+wrlqi/XjUtyxR25lnS2B6L2Xycnta/T4hsfvpO9HPsje6cl6ZzlCqudjDek
x1NiL1cfTwxlZvIp41xFx9cf5NTWUxyf6ga+8+CB/T/Snns42zuBoB34F2ML
QH3gRzzkTSQmGNsVuB5G7ayYuFOdloqz7eq2r0zAuWkh20EIpGogWNr11bsN
3dCFflRop4lTzFU6XqYJqFCW4lLttyPee40S1rZDxwNsEFw3EDdavLPJMINl
w0xy8fHbKcrnKvGEhC5sJnrtnaEs5K3chzO/UhN4g6Nrmk6XI3UD3+m4cW8c
Qxx9q+XWYkzhLSU210zjDZU6RvtxTzmBrT+457lAQDbX8OXdO56sTkJiydTS
vSoXWMr6+xGln5TQftfwnWJp6FIKORCqiZ1G5S5Wq/KUCiH4IjnSK8yLbX6Y
OJUwuOnS4myNN52bfJwXnH2NhNrxQO505ZdeOwIuzWalZDZMCEJZRUUiZvkS
eUJdYjgUneGPJ8f/kD1ZVoC0+wff/Ob24PYB/F+Gpcjx/7Kf3jxiOushK8CT
nhaGSxsIuU4fm/fJG9BNwx2zFfIUfxgQQd0wxZSoGhYXWQd5uOsaXn5V+0oR
PBuKy8oYqVOCKyRxbm0jiTaTb9JnzLd8WmptTSvBJGrSrAAsWHCJ26JZ4fNE
5EZYEY3BnbY21dH0645EEOPsMfV5TwIXUsrJFFXy3AB6BJ8ebAAw+d4vqw1B
ZTJO1vxomdCn610WMfW9JtTe2ou36nyfM66ylxsbOFJyLV/woR0sONcZCL6I
BX8n6/01hvsvY7lXtssVXbk2S4ubOm4oycuOPQcFWmx9CisnCg93SL2dpIVd
NzewBpl9wr5bVzNGtVZi143WGXP14MLCM74+Om6C62eZGlYyBZabP2vN4gUL
rG/va9YkhVe81YGWJrn2YaflRVzpKYBL1AAyzwRxtD+qIpI7KdHPjODBjl3V
zWxlIC/+XqecBaKGKlhOvmCEVe1cVmSFDKPPKepTVamaLBpuE7HkceyqYcWt
ib0lgtThd8EKhM/GkPHdsmn3w811hLiGllEo9B1TJYgGZ6dzl0FM3H7rTmVh
br/MEtYIAVt0rT2vNqpA73zhAUfsMixQSY0iFxXVDcVO5lrNjQs0RpxECI3z
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
/YEwmSrruFUxL8JJrFHBjf29JawXlHWkzEjj7P0ArohmGB9D5mc7o6gAEJcb
bJJdLXDx2OXb186QPBRa1v4SYFp2QRpkrBrGfl1Awkhhl1c6nfTnMNSyHgbp
K1dbFDt41mdo/PHgT8ON6/j8MTxQtr0NF3XXoeFufoEF2lG854WEcA5ccroj
MHmVCyNbQTLr8cq8ebX1yS35kJFXbnuGRJxZtiUfdPubJh5mm84qklo+boCq
oTTrFYBARkh+YQJPNvT5VFEiDuw2TbxFqku0xAmbTOL8G5SKfVUWtDOgUiUX
u9ndVRtO7dIrQlsU4sOEV0t10o9GS+XTQ7WLZehESoXUSHrLGmgrp8K9G6df
mfh8ookpqWZ7q9QUHB0MWyeHZv/0sak2yO0d6w3nxhxM6/aH2aqBHsfx+aTv
GNi0DJzX6VOCFO3OAwn/iCEcfGIf3UK2R87vkj1t7/EmIrfLOLsnYV9T7OGz
6znsSsGuy4TmOMJfmIP9GZmzqZlNkIFmUfSd6kudeW3XBmpSbwwEfWep4Nsy
u2ybLETKiFqcHmK4wYYOqkHf1LCDJityPovSUFxqupu9qUgdQAyG704LtEe0
24zVEZkQpfbaHJ/PIaBM2UICStj++QRULl9sHxSESRgIC/3mTkxWiw/Lt+SN
s4ZBcd3n45TLW6aJ0q9a5MPI8xs5EcmaY1Oerq9el/52qruBdnZbnkNrTfT9
6J3NOE35zNJJInj5I4evalylM9DReNImmepia8odAapIwKndoO8aMFlmTZYt
Pi4Z9WseVDT+DTl+5iJLYiEuGRUI6scd4ids4zyflbpHdlmVlOhQTaeYaRjm
ArIhte35o6RE377vq9rnFSbzQ70735oCQAF5eCk6vhjza+6myI1xXbNn7Gto
QyvyUV3N8I/rYDKkBDXR/zxnBnTh9t8WNvm0EdtRPKpGOE9W1XIpRmS4PnJK
16cKpo27kYobJRH+p06vM76nj97uu7uQsFVOsKPvJCpcKy3snEq3cxmtzxYK
tmZ1q1AQVr4hMKAKBH/Q7y4GUf50VGb3EobJmSW37VJSyrhivzHwsw5FrcYX
i2rNWb1IcRuxE9hOotRkfsHxQSjuHpmhlNKo8yGRPz7AUdHZv5i5ZuwT9J43
vtlCazqeYnf3n1mRYdje9/F5HNu712KWTQ6YzX49/tqdYoJ90xOsEt39dqtC
1eLjZu5tLjSFHPMD+U6lPIAtbBlNrgJxV5F2wrmCLQ7v/U5uX7EkkWCNZi3u
XLVuBq8vw7xLZcz+xS+x0M/TqvA+mqXpcof/MUqq1f9tt7t4OdfJV4PM8WNX
APbBp0/dv726625XSxe0YSlX/AEoLgKNq+QTG/TJq/SvaCcfPns6VHXbgd9T
1xt2wDb7SEXv+3p8dnXut1dPhoSFyRKJyYKE/kO3wK3vXmU3HYu60VrggEtv
6zXbNu+rADrxlhLz+q+v/LVvb2Pn/bqfrXA+N100LWO8YZ+2w/O+ivjQ7SOC
Gdueaf3eRr4WfuIn2rvIf7J1nLiG2gNXQdxwWduwcSshkILiXDrMRHh8VO/x
J8piy6VBJd57dh/CXW9iuyf5B7abDyh+eBxGAwIdmwNppYjb3HXCdA4o2gFm
lnsf99AuVVue+yRhzRgeasCcccqTp99lDzt3tA3702aeLvE4eh1kG8poJ+FC
0ss4Jmlz4ZxoCJ/CF7gUB77UgXnhmizpVvCCybN32ldzZss3yer6WaCU2WJN
pI22ofcuGQ/UXoINr9qYyhgsKhFFlVgeJWiFVgBWk+iper3EIIva9tFC3Wh8
RpHKfh97wuYS3yGmFbOprZGVi4KbwAeOEY1KsKBM7EoCJufQ0E/Adr4CBmYW
y9+crbHwAl1OMVklx2tfAdbrxNKFEkY+btbkxA0j59IgWESRqCx2iZ2NBHDX
fourQ+BwGHiB3ixYjWY9zvIV5h3E9WkG/gKa3UpnA9PqDVsEIL0AYoT9DrAL
XNzJQAvys8OUsxPwflHjLYGFa6XrFFoSBjHnv1o5ZRq3oYX0T2zfLhoUzkhX
RjEz+gCs50irREifYcqmLrS8R+ka2VUrNh/heH1UcuYY3M0jqRmlxs8vsMwP
WSe4aEi5WBfWIaGROvw+UZJLmBOUHGqMNivHlyqhIq2mZXCckYNPgeaVnFy7
DlSwvmJWzjHYopho1aSZ7xiBAFJMc43VegjKHoEYo3kwhKwYng77EnfdB7ZT
/xnbwC1ItKXuDabtMr5dd20mOo4Jy0wNSSRhVcwljGVWTgs1+dRseEI3Nyyz
C4KOdoHDsC3sIyFt2+Ay1IUdmyMP1mWjpBNwSXx/EjuAh3leYuuJnIAaGqIq
6kc3y/4JbheGPGiMCjw8KSeILXh5bSO6YH4Npim9qUvCIKjJnDkBn2WEARAF
8NMxL35VTPGZmngki+vcwYI8jKwEEXtSrakWLyFgDyGEBAXUXmdypVeMU+ik
qVZqrJf7gQESdpt1p/MzwocvAj2s9VNxY9NyhQgL45iilyX2SWwKjI7DPAD8
VvhmCEKAj4m97fF14MF6sEaH2eFlH6FOWNSu4g28s2BsDyNHqaHhtPyA2d4I
uGIxvuQD6dnekyT3wdXpDbOjRmOR/NdEHvsO9fjsmBw03jmrYHd6m9un0/Ls
7vrY7LFil4dwCoqeM3eTrrwQaZxKMOgsPy/ctjAEs6+w0yXQw/BFb6iBbakv
NeJxRCmi8woe2Lt/e09bzOBReSrnVUwqJeCeDx4nOugpmmXnj4tlwRWPhIT5
fQKhbzBfholnfokLgtNEYYHLDb0viiXHBoWog/dksXHvaaCjoItmZs5wAjZZ
rIA0Fv4M5UxxrGF2LDkfEqI3huuuWB8ehsuxB2Y6CNpDRkuGRYECPi5I+oXj
R8O07DBeLLwKOjgSHyTfSLzdaSaRNzxPTvmlA5L6fdceqbzy4Hb8zpZz9XFG
YpAZVVWDjT+XSx25dOJrNWLTCUs+JnQxd7F/IMmsF+8XWDMaiZejnrI3H5kt
ZGY+LyboHJpd0tmC0IEBPUAix++VKgDJAhiie2M0K+szCSDUmqV6VK+YwT7h
0s2mf85vPn2S4lG+p2kdoTCcc9grlHAP+ZOEN9fC3uVP5AK2uyxzTOUfl9zV
iASIYFiHADqMhHeBfAx4NCumUh9kQnmPhCj4OvPsntbaLWsOjtZ4s1a9R1D1
DBnT+mOKBz7unSWT2MaI7BR7yHLR0knkhMAFAZXDlMMFEjfTyhejfZkUaNEU
3SZJTqFE5YNYWwUwjwY/kE9ugz8OV++4yXAbQGHjZw0fVc8a4eqewqxFxAJX
aAhVc9YyFjnACc4oaSwwjJAB7P3iVD86DO47zI6yU4okWpnRgzFBF0BNV1Pl
QH2flWdVNcEHpyWT4Rwp2KoZgw6RqGT8VzmYh4Mng+PB888+HLh7uFeZU9kv
kVMvsFqBtCd6oJVRo0K2Y+qyHFdI9XylYco+wobPhjbVBJtXJFaJzFyU4hIZ
6Hx4Yogn7oNh8C0LZTT8gq0kaINestRyS++Yi1t3JldvwQgGl/EmFSU01mco
LeULDHoeNBX6BciM3WbAFaVL49adfaHPkSLKkK1B59BugYV+sm7wCU9Kilpv
XNgIR25wT+sFi9+wUWwRt+B8gro8L7gAf7AZGtm5QOHRclZS8+1yQdwX10pe
hGlezkiFDXqBB8PsjrN1iLTxZQB5efB48MPg2eDvacWPAI+fAib//Wdgstq/
T1QtC6/0DbXZwqn3+PdehxxQuKDnsOPD7NVzqqyArPvokHAwe85ZsPEPPvLw
MHi93lQt01i7t6V5Ojssjm27WRu75pWdP+h4zTbgIYwzdJ/IX+H74SP2sc7V
fgaUL+uKxRv+eoR/Be+HjwSPwfzvBjcGX7mn38HAX/n5b2bwt35ofvQx2j+1
ntI1sh28vX+3Db8K9z6v6CGvMQDalfwK/xnoIxH85Il3g5uyxvT89MiNQdgm
iw3mV+GhXpnzN/PrP7EfPDB2m3XbBYR/pjp2bmt2JTh4pcsL13szHoP/GQI8
hpuHvJlav7wDgH5iAB3tKbVSPz+8+5jebeNMuKXU/sMzzKJ9yBJvuG2Zr9ow
NPuXNQ1ePSeAyfYG+Df8/hR+b4FPPudP/FZklf7C6Ipptk64vGBD1wBB1/kD
LUZ+wcPZ8OzAf9d2tNGsHV53iKubF3B9GrklQttOYcsP7OuZHgT8fmxO4e/1
FLb9WJwKT2EQnMLn/LTAB4v5nVkMUe3D7LHlodcMYxbVuYZ/BG+EyOOuXScY
vcVFgplh8c8Nqe+kr2t60QzFFHmLmZQuFz+j5bU5jOMxvPx3g17rIvAJ6vau
HN0auPt+ZbZ/lemoD3Wm+HuzC7+/KzmCqwT4idJ3UrCQzzq0nEGvRUiH5F8d
dmA5SFtCrkTHgDQGsYguYa9FBN7RAIAflr2Ek2d6oxJubPi50WHOsumAlSb2
2q/2OjFTCmaVfd9oH3k2pNF430/N0m74ff9g9u3P3B0PDXDVsbP3orXFQIi3
xUc5jL8fDvzansmoPb9GXOKxX1sbH/2Z2AXHk9vvglsh36mcSiTNgSckSkwa
Yt/2b9S3LdYWZyWhIjLOykIysjbLNrq2U/rS5hM0v3v/d+h3cuK3dUDJDOqI
OsLqZwt8A40jWKAKE+XGGIizCk1vS1QvJr1s39kRuSgoG4q7aip0aoBad3V+
3C0Z98vTs1Hl9Hexp5zlS1DZnCmAHdIazb/JjBeZ6rINXjUaQ5w/bJ8m+ypH
nGK0XeUNeRLFhEHTM+PUxwHFeWk3oBZMdq702SCBTg/vvAXADjCcgBRXXSL6
u2D89+Vi4sxpZ7CjGa7WbXEEiIIqeQwyk3S/qOJsAjUq++JWlwUWlV+AFjlu
+hKYiLts8vp9FLBeoVJJtXwyKkYVjS1F0Zbr1bKqteOb3x0PvKajHoHu/l7M
KeUKDRArADhq5WwKw3F+hJcxWJS0uzdYTY3UVQxRdi3Kw8MK00VNWHEQk+UD
fA36DrKn5Lo5aYplHUdYqlcHvnK2O4v6roM62hvIFpbP2b8T4WcbKw87nYNh
9tOySriUmoSDzsUXiPdbbG+asMrma1Tq1bFtzWfD345W30ft7I31udZwafKQ
sz3NbbihOl0rrNM1tnW69uuulmvDzfl6B/gFGT3Ih9vOeMbb7lcpqF8sECfr
5NbRVXxWjN+j6YfMTBKai8+6qn6wEpy4vZZvuToVN3i6VHMOOcIw/9e4qtoQ
Z/MmW4zQXXhnmB3V0UEidjtirA8TZXPhCc7K7Mwket8CF09+XpWTbFah5TmI
7NTScknPLbpXnMWUYvkbV70jBJt3S0ptwskaOwPkTRjYpIVrJH5IbXESO4K4
fZlpBHTB/qG66rvRXToBUAyqShM4ecweAZYuIAo9F34XY/IqwQ5G5cSYktG0
59hIX06gti6U0GDFmd/Sz8NfT7yPRDvIc4ZMbZj5q/EzuQX4EAiB89lFflkz
6YS1Y1gBn12u8QgToDG1DxyFRdMck2oNKD2gsABiQ1i5nLFvVpzCxueUCIsp
sRg4EK5vPWtKFAooJ+WQHOnSULOvviR8rl7m5EriYJTTwkeiIEnKMb6GYEKh
vmXDDJIPj6bJLzluuGzQ5+/N4cPsWXUBvHalm10vjZ/ZOUBw55PC3suLnCBf
sWWUCP2wc1eciIwgYZsoLHE6xkswXc/SlI8nqT0aV+Ia1AEpSt+7GClFz1Bp
czljbyuH0OApFqbKBg4g4sv2coetEBJbD0S+6ia5jobewNU4dkzioSMpH28w
63BRQQm+QyHUSRFoQ+1RYmPMdp623PPiN0a4TjY4jbcxJfVHhFEA1vqrcp6J
TYjll74/qnRwSHBCLobjTpou5pMJV3m4CJsDAfpdBiKocKAwkd55ggWYWJI1
k8rPrZw7bSyHzgOtodhOmhz6IVqZdK6IloWItCXaaUTAgLet9AepyeUWtTFy
0UZWyqDH7lNktYHnL40LEguADZmi7k6JfBRXSCmqVWcX8m1Ui8ss2d3QMFlG
K33ACJ4OTc5RHKgLX/MgTmbVsCaOWDQTEiZocIOLao0Pj+hbCgPpdayxg5vk
KRTvJGh2whjIwhsqOtrwT2rymHqZ90j0wIgXjB/Gu5w+BqNn0YzBPFoGGM9n
3KQuIDqvzqv36gHSokePRAQ54VmGTKreYcQaxj54QRi1m2z/9SsQC12rr2CB
tUfOSHsJsyhxH1w1lWJivfCqXRg2EuUdwnO3tFZIDZvvUBFu25ISSLehGsL1
BYA2NKC6ls2QEdFxmK08JZZvr2Unb1RMbNGETWzBhbBUAR4Y1/8Ix8ArAA/n
K0fl/+rUfRfSLMvckdhvIM2bh9uRTN/dAviQ9JAz2tCB+tcQnAShaY+/GWh/
QyrjsWs7qdl6j1wWRKsDvR9GRLZZLsYDXQwXevdGDFoQZ1eoFJc0L5AFxdW+
ChIrdkvm1DNLw9lndq6WY6ER+/zPa1aTu3AEgBVYdFI/p/iFopt9/NTudxC8
60e3rdzVoKmJo+kBeBKcw5f2SBtgNhCpoLPVBjRr5UcqtM5BQfA1VwNGShkD
LhjXsdWkASFkdNoGXXC7lZsJOk41YVEGsTxtERE5Jxw50LON3B2tnZI5gxNq
LUKMI77tE56UtmrQS6kr/Zy9S/Mub3NqnZRQYpuL01peEE8V6xipWbfx5tbl
ofYNwfxBlUcuLWdhyEiaAKJgr7uVqnTFCIEUJ3tdnJZk8Vd6g5s8UVNGZKRf
FaefUCSih1bmzV5PrbjKzy+4BizJDWQFQAjENnigP1VoPOGwJOKyDYX1e6tK
FRreOPYpb3JU3kg3WGP5FSXu87CdgjEcRU4GH2CGVgsTCIgnor2fNQulLig1
IRG3pN9EpiAn+Kp84W0owlUxvHVxio8Osx/Xym9rDdCngzOL8qINmrxRqx3E
1idOGZZ4U2MaIfMjyOaoBjiN9+hk4NTbtqFiKAGaH4ShlDQQn7w2MtQTpbW4
Zbg6zxtuqDtHw5+DoPzc5MeQ56JnuJX1TQV4KMIDnMt61vR9dZmv6nbqiRIE
ZOrh2B6aulVvl4xCRadkXYAXyaehqZb90GTVoqOUWcdJG4BD02K1ErYcH2bl
msI4KInk0aPHk0BwqVfZw9DVlK+sGKDNBSlHzJuD8HIPlF8G5EHNQ0wGnpDM
27MzX++UY6RPnIbD6wsMv+Yei06kU/rBBAMfQWpZt0K/Od1zOfDUhG+BGgWJ
Eq9y773Ay9toVi2wqiUGX0gEOUvvUS4tobU7jG+lQ2WA+uGkIkO6iej6UMNn
lwuEV2y9HNAawkskcaVkCuALXGBOFCA50VU0o15Ia6HNiyR5Ak0ayo3WHkDM
8NmV6xmFXQR7Va4nKUQp2Pxva5uwB8I4i6MUG6n4SNOmYEC4APudqanfIzMS
EkUM58Si3KeF2WJG5daDIWW79QxDzGeXu94SFM7fEFJzMSie7+MNRPTBcjyC
K0EDbdoKOpsmmTMVDdHfKC4H7zmpcynci9QmtTumjAbpFdp7jawNa+mqidoY
LBP2w1zXg602Kyk0RaZ/18K7bXcNuBF5KuDS0+VM6OmII35he7wLq7zvZDuV
3Wiqg/3WeX18PoVL/XaasNgjNxQmYzVhgOR7Y6p5k+gNbzrTFGFzhbDSUyob
26vXuoG923vbDLWbNf6/6q6kHFu0IV+Eb8M+7gz/E9hxYfN/BUNu62SOH287
nO023uSp/Y3O7K6ITs56kD4mesdZd+bVhI3TO1qT/39z6g7mVOY0m4j/AgUc
Ec9UCEvIYJsdZwEBF9qdNLKGopdX2Iz8sJmUWxOsz+uxskMk1VmppJ3G6+xg
TeQg3OiHa/HDUPUcXere1RrIew5CffBYlL13nfvSc0tNb7HXgOUH1Vl6Zlu9
3kaXDZpMVelFBoeNASQcIpDW2JepCZpO/d2p+Z+rL+FFMA71O5WyCqxwpj3J
23Eye4xyzt8UKQNJ6wuiZSjB/TdCzGBj16CmasEp/NxN7XeWD6+WEOQ1wbVQ
nmE5P+eBa5+WCXLzTSZ8q6eqGV+tWPa7X2XUb9ssIos+wMkY9P/6V5K9axsV
dhXiA7eas6rQ+dWRvYMQ3ETaaHFeRI2ax/KHLdGHi7DmTsszbClVhAZZ1LKs
8FoNNalFhxklOnP1DVGlVU1HBZPT2rlEFUdbxcskwwwtivpwV2IHUHNHSKYU
K/qsk3G3GqoAEhi+QjgQ0kd2mmw/r0MjEAWTiiVRi4Q45Ce4sxcxGAhP+ngh
33weRb2GmmK4NpcM/IXOVHSkRlvc5D1NjvufhA4GRyl0cKeIhw38OkSNvx3H
RlfiRktehY75STF4TnHtHz3h+rSj4k9xsJEl+G/BF4IroSbqX+OyLBbrufo/
KAbct5J/8sOLJy/fvH3zj6+evP3p5cmrJ4+Onx4/eZx9l93+Nv3Qq6BAbfDd
4x9/fhkUpw2+ffTj6yeuPC37KCNfaoLhhf7UFPfbT33Y9rWmn9rmed0yrl9V
/LD/htbsGmu23bVhoV+emkbMl7+lmr59N+j37Xd2WWrs8fVeW0SClpONnHW2
IL9zC9oAdO88GGaPuJQAepmoCnNIjLl3O9fdlS7sLWwJFhGaNKV2+hZgUEt2
cVdx9aRlTmk+2rsyqFPFppFgX7BApuXUd0ybTQApwlodOnJQbSS8swE4iT5J
Fn1VvV8vgQTN6BehP1I7hT7qcdDzdL2Y5NSDa5aN1uWMRuUq1JhbhBkYX9Wa
crKAkxbjKJV/0zB/LzugZ4VFh0gAqtZotzVh8LamHYshziVkH7OUSIiTVGlA
YAQTu5LJ+DEWikCTCaesOAVDSiH5ooCRWwqvqndKGXB55w8CUj4TRwlG2qIU
otlNkbxL1Yl9pQv5ylV3duEkVPawvfZo1LjCvR71K15fp3O0cGABObpar8aF
ZHA4ZaxusF5kKu9Josn9ACAXNNLUsNv3vaA4gJzrAbV9RUfkKogd++qgEa6k
CRm0QnLd7nMh9eBztxLCVsMru32YKG9799xMdN91Qy7tYRFN2ndlOAi4frdS
kU9fwFB++1a14vHtyLnK0jzudPOQJmq/L86uvO11DoEWDhRIOm88+vi4NNf9
N8RxTs/yKXhVWMwoWm5Y7pDQlP3/pZYQ1BwDX0LXWaSH2YuE+OVbaHAald4E
zT5z6WFSM8Xdxmu6TEyq8dp00lSFDGCItxUxFuebFk1EhMlpiq3BndCUDrLH
5LF+EjWBIa+UhcUinhQERkmVGqENi2EwCCCy89S5E/M6VkpqRCExul421h+n
C4XiKDMntUxKLaoRZ7VRwhLjcFZYh4zvmHe8tcqCcf6GoMq3zs1Lt6psnADU
YPiIqW5mHBqScwc6YWterxbHjr/0TsIbDjDfcjrGBKGlZb3AnCAVWjiuHU7Q
es3eI6JtrlCZFFfChxAryJHq6UaX+kRFpDJe9kb1NNz52pXLqjjgRpAkRh5S
zl4WH5odx+UbXCSw0OkjrLSssPZncZ4MwkjjNtk9djsxgth1cKcKenznU0E9
VYqyhgcQT/S5sDeVtlgyklK/AsSJc2rTDP5I7iHJ2XJjWzPqNcvJHqKAT244
ImDDzn10m48Lvfx+obNZHEhmxS6PCXy3xZMSiTBJyeXjRyouObjrShFyM1np
Mt5Og+DyWSnyS0gnkZ2iQESdla9UdP8fi1G9/JYU0KtM1JOSr30wIYZnJH6u
OqlCFNtqhGz6wdpHPqLGja8NejefcmpNZK8Mx0qOFFwWI3eZkR7biI4dR2qR
OkPh2MwoNaUDOndF1RMECbR4wqP4tq/MGSH19REv6VAlKpIghbGpNi4tV0Rk
UZ0lL1zLIdfmQQmVFSNMXc0oWYhncC2fgzr4IBmoRh642rTveISr4lq+7jIT
a9RxAzaoYVAswrvhAisPslLP0eh6rG30lkRltd9O01AXdRAf9Bi2JMmcSvct
t+Rm52g8cmANaFzIN31j5whkY2zk1PgujkyaRV0xGyMupjALzWQELJI4m+t3
K/jzCGah1BrXQj5/TwdVTKcYYOXKLl9LmAVzxhjQxTYAp2dGPexp7UOdWiq/
CmiMLsqm1ina3RHPpAw0wob7XfoNCZdds4dgLOOSDl1XGcZlLagEhi8z646B
gkFD3ZfSe+E+E1oRy+L8ZzEoSwl/rG3piqGSmf20WOBVI15czpGW+9t3DTS5
yOVsxicmkJxUoZhOOucjAi9z7AR0a+oSUUi1cUJGMlLgIooZKucL/aadek7m
A1Ukw/WJEv6wOMuBzZPidTQGMcuhV0s9t7Z2KcWSQnshP7VTiqgsiSVWEd7U
mzxFLeKSlLxacnO+qC/QN6kXD3VezfTSMPJ46tVmlloHfIO8R6TQaedLKYif
SaFSrJIik7T2mSaioQPCXD8XZc+kgcde9QiDez4APP1Un/bEVUVnvnK5uA0C
6+XI4EDjfW7xkA4zYsOS0TDlwoImPBkTuJOvUK0KkPOmcPPzyQTjk6iiNtGv
n3iIn2UI1AFXrjJOGzGzjzd0NgxCDpyBuBr90k1Uc8UAjkLi8qzGFBKFkvPB
ac7fBrCQfbf4sJSGj+lJ6UuMJZhJNoyInTYSV0wh7qVhptLmvZa0WWVlW8q4
ABxsuZKEiqVCmKLjMsstHZZ7d9LqHGvDjsmd5CRTx7mu/JEZ03L65wrbL+eY
CnTrjcJkgm1K2w+a748RXtdItZ8j06Zk4s9/MCURX2V7jz0z23MIts9pMCYc
uaDC7hvlZ08OetghK8CPQAAwKGwE5JSMDSfHD0SLCvIHSPCou7+t18vvD357
C//5hYusw8l2Wd/jxL5Si9wRdjLE7gCMxcWUfgEnzGBsHW4Yrm7geOcLw7G9
TK+Y3FPF5KcEQY59B0zkUAM56MIlkwxGFF68zOlreoXh9N5B4fhW8QFtklzr
6c7GARMb0PZLFoBMq0P7sepJTI6V/jxjcsy+6ZfVYkDBMCe6LOmbsoW/eUdV
wtndUwt+L7BcuG5EKYGYitZQgCzxvbgT2QEWArc9L3wxqMDNRtZG8cxIyEx4
Bm46tRdTm06UBq1mZ/syufAbdmCh2EksiWvkRHOFl06BxrXyY7Sk6L/EtZLo
+yeOSeqLjvUQM3RuSCcyOfdjy9LZtnNKuPRTfSW17r4LhPfOtL6CwMEtNOBy
EBSK6d/q2yRTX5R10XcAUY00FR2YkCg3bCrUJfeJfnRtUITTGlEwUrXBGitb
yYa4cDLLtQ42uGmyj193UhSXFB1Qy8wSf0AZb269lAtZmYxn+7jTMiRNshuf
+S867kRQ507HHcBv62mH5oqthxw48knz04Anlw+dX6rLha483/T06Uf3MzlH
G5FCgISItAP1fcSz7UZyc6fL9Fqk91cT2N/nMw7LNfAzmUACnVTkhgZtsEdI
wh79m+4sSPZnu+GoUHyZktEwoD9EGYObUdbOvmi9quSgNaPE7JCTBcwINr/G
3hVyPLPHetUS8fvssZhV+WQr2dvGMohb/OivBg2GL2y7WNsH7FD2xnI5GHVF
0xnZjukLX5EWd3gmWZxhVEPg4mPfK7f94Qz3k2K8XqEP+JG052GDU2TgsGng
OMVplc9cYMm//8v/qhMhtKnwCUmRrnFS0MN9AVPyCpaga3HMo1hLtKYqaqWY
13rkS9C2C8fWupNxsBPCGw2AiWI5yEgxrcbk5YHBepS41BtMKmz5px1nhwK2
SVXUWu4Q3RgSJhs+jAURV/xo6Z8MXCmXhBnFgrpUagVJar64LMfYQqVgXyql
PMKouBkmG+NKA6s8BKIIAgMaCsNACK9Jh+VNBBBgj5Ws3Ga6JyHJJRs2gZna
1fg452C2AR/+q98dswL98ePx4PGwHpcoRS6X78tPn4bBh5MlaPiuesimKTk8
GmtFrmylWdNLnNAK//S1cYdRP09z/BwHg3V+azbMybSrsn6fxmc2hXBBWnwK
8ZtskPmCU+Ooiqi8Uqt1IxT9+SZrPVqu9knN5Rflcq3mkcT9cvQD8IZIC4fb
U9BvtSRa48fodjlNONujGgKwqr1sX4X4rlur608puaXXLoJKC+e898huySfg
1uSHGvhWNNL9HfAZaLEWWI7gjubAx8WiFIqjYsT+4+oEFt40+fh93deKGvQn
1cmFDdE9s5W4Vz44JEp1d8ucVDWgZFeDhF/oqk1sja8IqUa30aVj8+7QPyZO
QeL3GF90uxZ2iUQE6k3E6kUCp2bcNskbzQKVMg8dP/7tusFKqgYP97GHKWqc
7i2e09X1kcBiJv9KtilyCDOONcRtJgkFLnCkH7a9LCQsCKgohwnkjQ86X2CI
z+KURAcBgdTykabH6MX2bnhdBNCcfbw5HLx3jiJOVxbErVuzdZ07xyMQA6FG
plz2egHv4s4u0XBZuv7DJTXaXS+oTxlAbVzAzSkrjZu8IDeGyp6Y9gggK0Wd
CO54ANnPRy2nv1v0Sl2ouFkxVqclx74rwKIRkxSgk1OrUmAqCxGlDHVwMXoe
a3YhCEHN74jd0imRGOP0WA7Zq8hUywWRGses2SpNpmtpBK2Kg4mc5RuP6H9W
zCiacV42JdUdKhvqSkiBtGfln+ExVh24XAOxegAHd5l3958s3vx0t4v+KClL
RYRpCXQJkE/UlgVVFK79u9P8fTHAejv05iubPA1ogdblfZtXO6D+YvwNvZHC
CBHh4q7IKbLqMxy62mIAX37W2vpxsPWPds+fKPB0nmPxCd5p9gIWj90Gd2UJ
KrShwKZFlRhiRwSzh33vZyY5EgblydEjgH5ECvZB6z7W5nhB5OsFoYGeWeHq
Xhsrjs7rZiGRvkQJgVLnG+z525ib0IjXVHjIobaw9Aj/Qt6lecfFsmnJqZzn
WXG43gVookQ1j9I1r7KHfSksh/3tbEBhQVnvXL/lrJCqoFSLMSKfw9YaeYWU
wsPxlS4RW0WLfAavTy7ZEqle0bDLa7kAHTNYkbGPbZpzusZgNA4y15Nzh3Ai
58C7tnPB3UfSLy8A+XZd6hQ/ac0AcacJMKNw8qBf5tAyVI0aEpKASZEFNn13
fm5aKgeixlyJGn5nD7tYwJy6ycvJmrOm92hfmt2Fe8uCyml7GH7HffBO9sIa
A3zE6FeGIfoZ2W2kmJPHDN+mHuf6ypTkl1vgb5/L0kXb0Iwcv1Oq2WJQUC9B
UNxbCIsfCZc4osB+KZAPrAubGKJhRpZWh/LDV9LjUmI6BAS0YK1ia8oasLcQ
HpokjmieoyI1d3xpFCExDPni6JGGywh86tYzlGxBQiMFNJzRiZSNpzQqOATX
w+K4l0OjRYrDcHap2x0Vyo9QMjnjkuwMoBBrLzTUyETLAk3jjVKshrhnGcJy
I8iGIrhuV8vHCvTYhbYY1nSSZk0fPU9iyq4rxCxLFWfSSotTRFDLrSZrqYgD
jFfT3YieFNQA1KnlvGVOKIlkTtL72e1L+/TBRjhkMZE4dTWi9zlBRK19wTgo
akmPBDbzNL7PZUmRBXRypE9VKH2sEebYE2DB6AVMV938AE1XVZ9Wwun7UkfH
ZUrkYTIdXSK+H24fHEu1Kkz2TM7yKEXb+v4X33oLarQ3f6EkBYZf55S+o5rl
6mAhjijm8GXF9JMbTFDBkTXe/0avPuspR32VzxWdKXkczhKwA2jJpd62STEF
DOPLJimHM+0nA2A7KeflLF/N+EgIGQl0iHIZFUpftHiGCBEGpxDSfSNxkMLC
0vfinENnSFKgW2gPGTnAm9dAGrRvsAlCq7iYCR5NX/MTzjHKDbUlNS66+nTa
+GHMDT/GxOmZfV/gFKg6Y9OQ0zO1vDTrJSc/N1S7jGxZnoj1OVxeMKdejzAo
hgO0yjlfo2IKbLDhtaEBm3OoSS+lTXN+7jRoiVEYKOGszeUwe1ZoF4C9cYVu
S1agm0as4PgNnYc2lqjWwKDL0zMR3hbFtGwk+unGv/2r7cuavWCZ9WNLWBU1
VmRaIgdBpSBEM3v0K5NbJ7bdkMYOnfXRu2RYoSd+6xOeqIUwZUbY+cjQxWnm
i0IPNdHSoO4bVutNbCI3n9Mh2oq17UkwSZZaMoj1+SEVm/M7paNEMyyj+SnR
gLEmsBDyxJBarlz7Y7bKSxUF24ZLE6TZAofD9CPCgfijNee0quf+QReULLhA
E1CkXaIQtSi2EgICY/9OV0kW4702wDH8B9aKEf2XfMlb+d6I1B+AKo1do+KY
d5nUQO5PRbVQFpitEqALtR4p2DlPOMYzBoDLE+F3rHOizi4AcJogAV7tLYxy
h9z1niRdpaCLdv0qkzjlzKP//i//m2qmwf7+/V/+3yCQyMjvI0YuL0BSyCZI
Z+sV3QCPnyTa5a3LbUyBfNFyNNvMigUPT7FiMqZBEx8eHAh9XqjTdt4q1LW2
DLORx4J5uqta2LoQVF8CL4U2kxLRDUeissYcnXBjg6lD0u9VsfXxaymN1sSy
SfclQb+y1jvPMm25cETN+SdIXMhXpgaHNC4nPXhRcB4sPxqWz5Be3AQbtfPH
XdZsSjBoF7ZJj5MM7JIihZ7te3TzS+7w5pcgT8FMaIyplsijZmFvOvWCOCt/
DeNl8wIk4AWcY22zKkJ2jH+JSkx1fUoQGfzUhnruq+N6Qzdx0lrHZ1VVb1yp
dxhRozpRuMUZNEf2xKB0Ye9q3fRYZWhsxYZeIjXnyh3pTvmixkpgfHiqRipH
8C9dXej1TMoLoxOAMgZdLKdUaM202AfD0xku9UoLajCi2faJNXquUQHyQxHA
TOnsOiiz5CpHiG+c8y9imrvPGYR65bu+ZOWGoiL4QuCEJPs76DxRPpArihIB
K59XSIqRHoaQFvghAkgkzMaca5PWj0TU++8UKxgJynlGKv90hoHSylIkHjWy
hrEVoC7cEHgoRJp8FyvN4/V4BCdPWbMS724zhNUZ42glObfKc1fLHKAJKJ5J
8XSRBJ0Oi0Ik46dTdnJnG3KHY1Q+aoc2q/18amHQhwETGcfmjhaLjoMSh3O4
W5u4vcFo3KAGD3VBlnVuTGZaCqq7FagRMVs93S5Fi29K5EedZIpY6hSwflQA
WnOAlSODiAe8bXqp953bwLV1PIpbn0hfuobOVm90p9c7Ar1lzUjxnHby0u8k
qNDe62UUd8f1BpzNwR1UCyecp861ett3XUmai6rrVN1IaZO6Lq7nm0/fpgxq
bxM9E8CsFxNqzeZc0k7n4qLGKoGVs0tj8CbF5uyyplZykpsd11IIzfW8DanN
7RZFlKtFrRISs1Xt8YJgnBDIS1gAQRM7zzDeny+t+KHUwupqtfuZHMl01YyE
vLfMnGHCSXv1TCVaHI0xQyQ+vHOY6IKlLT5wScqSDDk+v9UNiip3MV7TJZdE
phRiGO7enGkCzqQwEClXChNik6SYYjV60b6DjZLsEJoZib+uRIVyBJm654nc
4ypOqF2OEjiYPsHe0IXm/HFMsVD+KbTyNXHKPuf7Fyvl0QF5oTapXhbQjG1r
L+Xq1Xjr4TbBS6sMS2+j1CrMLM4VZeMRrADD2FBNafzsdKl/BoZzBuJtdkT3
VK/uUeSMOBDBDKkDgQ5vC9eMqQT8m/BYvYhwYqAFD6rpYCQWItFKmXq5d8bA
qdYk6IVLuCMXQmvEoZXARoe9uEObfXHnq813Cg6gnJNETLoNK4NCJGCP/L6Q
BFYqm4gOILZzTDS97DQ3aleNMQHVrDq9tGaavtpmGJM46UtvzMRb3+WhQE81
Ph0PFt5IITpcabteo3kl0o3HeluxXHB7jpBIpiaiHhYVzkA1HRCBlY+QW+oy
io1GyvU4wlt2ZUn3OOkUivyP2wzY4hVcKecyWiNbDtZMxEgSFd9wUwV+Iaaw
yu8dEEAO9Kdhblh7MJYPw11S9SSEm5hdoiodx/Gdo6iIhbdOG4OMCSREpUVN
+MaAZwcngxaeH6XsoC5FaYrFB6R0p4W3MulLRvUnSLIZ03zqYkX8EVPCPnP8
wKDrHHxku3aGTJbaaR+rfmswWu2qADCM1caK/CdeV2vhhO12nWfcaxiZNfnI
KDPrTUW2UaRBaOKppUo8Sxh9acIjmVVEI3GYCyVwap3GkIeimGD9q+wVTMBm
JiH0knmJ0X6Y0CkVTmBT5OZG90M+i4alwMGFGtHa26rX9VLIGMyyXngdapj9
LF2RnZHDH4FRJpnZ+Hbp0ZYYkWFgPEQS+UwQHQc9tAJ5hNyj4s+hN2Jc/JzI
AmR/JYdwhQFnQWmkIVMAh7Tho1IAzYVqkJ7GWiX5RuJAmEyq37ZNjJqEyhqc
ez6Pi4luUdRqK3bTA0adGma/r2brOUYnj4G+newQA5XLLUZOQgSk5D4P5RiV
XvREmZvsmyPVGvk4A6IlfoByvkS9Bg7wfOMqyNhQznngsxz9WcqXkONelBMy
1TLdCgvN9L144YUF67QypFBEZfU+MjBhE5Qz4mmi7zoDRF40xwF3+LFoa1x6
JFblSO4bbsA0APUNrhYFCrsOUkw5a0nTl1zlymiR7LlmQiesmknJ0KU8Me6p
GkgcEsWTEZqyVu81E3u5Kivyba6dqvSGX3k0yzES0PqZnclrjiHBRT5B8shu
huWShf1cRyz/Ah/807rA+vhAVNlFjxcWsIdFcAWemq/71PyoTFgjalNaQQ0i
3p2NgEQfwIoMNiilBQWoaJvTciYXhkgZGgAJ8SgE9407EC2MZA9FjXdcx45Y
KXa8GJyuuACKH9pTMwn/FTmomC9n1aVbKUUbeQeH27TLd0jEOlIACZoObpFb
8KxsiplEXJCAKkqaTxGhzArgKTnVLmsK7Kgs3qtceo/zwiU8IXwzimBcVBOf
XEH4hy44iaHnN+Lmrl2NjpoVi9PgANCOsCql/qzDdNcWi0xS/I5MqA3dJVuf
14vGRVYISIEhWzvd5JmifJ90RuS3fK/1vG0kEDwxwCccif2WgznsYrweF9JY
EctwyHVZn0UQxHgzWg1KqwiM11zzkdcQ4gdcnhmWyHXTnufscBeTRokEd98X
CNG8AjyEityN3Q4oM1xpJwzEUIyUTpRS6NIi4hQov4l2c5EL0RWMyF3iCde+
h/tHsL9oUgjqVywylWMJCpFcfpCinVzvE/wFLhS/4a2Bqok5OeIUyMmyDuza
7MXC0MTlzLdDItqBdR3XSz3E1TmXz8QV1Ww6dnYG+VhSZ7Rckpyu1sd19kgb
RY8nokUc1R2po1mfhrRuog5dCxQd68YGcpJ340Z2fPTyqJU7QeqhFrKjUkyL
ip/Mx2w4YyFH7YxMvnw7Wjwk+szH5IuxjmxPl2wj15qpRFjGLkJpkS/zyzw7
uQQ+iFQu1yyElfOICPsTpkzaVDVtkJyymg6cnSPsOcxQh+S4JmCPiD50wf60
f9Y0y/rw1i3YbT3M+cEhDHyrWNyiMKXmFpbAwIiO+lZZTwZ5PTAD3OIQcLTC
5xw+77fFxhNSOQijtRC4LifINDiq62pc5pIR0RkMBnBVx+/xiI7G7xfVBcir
TBQ6Hw8ZmMXku70p8NsCc31fUI4JM5nTCsf+uZzNShDtHsLdyPZPLkC7y17m
XH8vewgPdvvZC7iQZyWc79NVUcJD8VLgkd8V54AwL4rLBfoRk4/8/RrxaZj9
kK/gw+zVKgfRZv/Jm2fZH0AEHJ91mYG/rjA2+nm+XAOBffKhQa0ge8lnWHP5
QQxyKiRmxqAgyPdcmY+kCwrcPkX+inZxjD+brEpYwSvUgE+jicnyRPiDowIV
nZBti2swFpMRaTIjVB24kw8V2XCIZoqfXfAKShCARq08kQlW2q6WnNQF8jQR
DD1nnMuvqa9FmUpcGN4n5Mt6wrIyqfWj+5fytLRMP6kKYa8kOtm7elVoW2NI
Da3lj4+e/XT05s6dP2UD9uhhbjGHh2PcxwoDPEz+XLlYrhuJ9QSlS7RW129s
AtytkQQstGHF7YtrzOFcw1qeMJEE5QizwPJPadwN3SpjEAQkKtPVW8spWFNp
Lq4Qaah0hCNvbLr0N65Ra3/rN7YCtatRPbpsKMqcPn6LLvGgKLUrXy3dvgDI
bzEgEsUdLfOdLER9bJzrbjJgIg/uUSwNMKP5MphpTUWe/UomG8bXhbhBb93i
HEjmjJgrogzaNfemB2wzLW5aJodmBirVcAD3akZCdqvL2TAxL8VLCu5Q9GrU
tY1qJLnX7Hz4yv4S2192Yb+8hyEL/28BC9/Soq+ukHQT3Skmb9FMhK+U3eSQ
iSdpcPOI/VnWw+Dwr642P+jP/o8HfxpuXOxnDuABuPHV4XC406Dl4Fevyw7h
VtYGdIBAinsWnWGSH5fMcxINu39a8CtPMHGiJo69XrhRktcqmNAi/5MFEo6J
qIwsYls85RsegyNa6+v8woYsR4hN2Uzc9awSo6R5FxP50OgVCMfRalzoVlZF
UAlQlmyg0cr9OtKQeUYzHS3odh6rnrIFQvW6bFxekR+dtyiCSAJ2KZBpTuhn
DylnsHk/pkGDDnc0Qz2zOZv7Gd7m7jO7Op7DxhG9fV9cWpq6AUVPq+p0VgyX
wlSGbxyptkT77rYheO550eRkz/4uu+eeZgofEai3oo9+l91PAOP3Zg+/Ky6P
H3u4rJmbcHPKxPbr9QizNVI7l1eb1fgtpW7bLZnvmA24LST5kGcMu6xMvjFd
NYN1PauWzNxAbX7LeQd2ab6XRFGs+EG0ExuGfC9mp/Nm7SC74cAMWTLkqPC/
fpc9SKGprvWjWT31YqTVs2krweBL7tf6lleWugB+dzFEabebwcpfu3i4+MRh
cnqCZ7777dZ1p47cPdg6aelBm1hTod+01lJ8WL6lsGK7Frk9+dgsgVt3aGuJ
gdSNEwmzFhFztEnErHytgcJVGrBBPqSFkJhf09cXVVB7stB5sOSVVj+clDno
IfNaG6mHvkvlAf5V01Wei6R//DgtT4GADb7WinBkA2EHtryWrsvIAQ0YXjz0
o3wDo3CCIotv4TKdWpGIbdrYfsDN89hbHdx8B7eDCe24rckTfQjc2D+Ib4O7
jD6SELotFdA5ZegJPf60/fj/V921tMYNA+H7/gqRS9aRbZrcCstC7H38gPQW
Aumhhd5CSiEF/fhKI0sePUaWFTWPJQRrPP52NDOSpW+9s7jCb2/ql0h0qKGB
2YT52TTFqqiP16XeOD0QJReMpkz+s/mtML9WFjyEPPbsYry7UOXB1FfvdXl2
2Jv9sNSW2YgkK9pxSP60ykawxEug/5RKLYSIndxDIFU0wvQuECD89sI/dNRE
iBB0II7gqhiEXlrVg3w6SiJoHQdhK21jrJEn5NGgj+iX1DlJHdeGR+mpS8CX
R/zS8dZsg7EUdHw/zFYKOJ7k3Hvvo3xvo5OH4PrhsePdpTbNQ+C4tKKAYyIf
xKzl5AMLbWAegq9mr6uJYH3GSxEEqfZGCH3Heb+MINWm3PcRZKocdKrE1CyC
VDubjOeeDY+dSWqldmvQfBuQGvMQ8AupZc9RivG9jp6mEdQ1N4Dw+rkapnxV
x9Hc5k0hx29mjQAfleBift56o4dS8t6tg8/W5gqRaCPsdxFwktnaik7mmZun
iIhQkNxr7tj2tokIh8ZJRSUaG+tpHutFhlB3jUPXoM2RfszCtFATJCJ+Lh8E
7LEFbPmCPgEifuNS4dGBnwHilBgvBKnSHX3mlY61IOaz7O2fp4bUT4KEo3ef
nzzWkh3rOvevAAQ+wvur+tLe33b74aF5P8d+FBAbYLW4b6/aqwKf1AlxTN0z
b6DMS4Lkmpe2ZOcnYDwD0yA6A3Vn7oduPz40/z/tp6xfetNPl7Hq0TqZsYcP
kbHmBsmDuXsFCH0rWgNC3oreujtGPTfumVMBxH2g4v7JpgLojBqVh4WpIA4S
k9YAcZ09grPXOTb2wwLK2SmU0LFywgsknYsyTW9gaMIr2N2jdjcCgQi0TJ8o
cm2dFUqePgHirh/xuF2zkp1+6M0+IBdsf9/KEn2mwk2jymYlX58C4V241YoK
7f4rKtvMg80H8oVpWbBz/mp2zncBsWxrCOsyC2gTPZVcRpTzIVJn3qkArZci
7EX+NYrz/TnVO336/uvZ/e2gGBL6dsw06CXQwQK5BZRxdWCyCr7+9hruATAC
UUIg2Pa7ArIVEAIBF+DyAGQrIAQCLsDlAXTr6LROzTxIva5xv2vc6UystYnm
/ILAaymMcJiuxwjni5UYHE1c9KSVxlBtWMnhc2sx0G+XFWPMy8BiO2r4g1WI
i8FwCIkSDHdVEln+5dixW1j95fpDr10iSrkYmMt417hUwTDBLcYwLMb2pr1q
auYHsmy9P6xhQ9ywPIx04mbakUzcTAyGCYVCf8CC+9jKf6eHJg+jyphLmZ6L
kTI9FyN1yefDeP24hYUcDI72/I7zumlT9McaDIrMWYVBcDm1+jIHLnfc+hId
uaOKWtE85tIEwaxGYOxSJEEmRjT57Q250B8TwXDs9mefz1llh9NCUSrE0Gad
dJQK4hJGiQqMx4KIZJiKPYLi5M3seke4iDHF6aTjZGd2FbdWC/PsmFuVV4ak
0iLGvGLnlNIihmCGBRKU0jKG3YSXY9ToC6tzp6uxO126ZBEjYIsWBFRrpjXw
dQkB1Qo4pOsvdUikc/iMYZxCkosG9tJ4PBL+fq+lgBYIIOc8PKAS45r027Xs
vI5w0g+8+DzTGXimf0Xzxk/P2gEA

-->

</rfc>
