<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dekater-scion-controlplane-06" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="SCION CP">SCION Control Plane</title>
    <seriesInfo name="Internet-Draft" value="draft-dekater-scion-controlplane-06"/>
    <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="October" day="19"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 147?>

<t>This document describes the Control Plane of the path-aware, inter-domain network architecture SCION (Scalability, Control, and Isolation On Next-generation networks). One of the basic characteristics of SCION is that it gives path control to SCION-capable endpoints that can choose between multiple path options, enabling the optimization of network paths. The Control Plane is responsible for discovering these paths and making them available to the endpoints.</t>
      <t>The main goal of the SCION 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 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 and can specify which path properties and algorithm(s) to use in the selection procedure. The document also describes the path lookup process whereby endpoints obtain path segments - a fundamental building block for the construction of end-to-end paths.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://scionassociation.github.io/scion-cp_I-D/draft-dekater-scion-controlplane.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dekater-scion-controlplane/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/scionassociation/scion-cp_I-D"/>.</t>
    </note>
  </front>
  <middle>
    <?line 154?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>SCION is a path-aware internetworking routing architecture as described in <xref target="RFC9217"/>. It allows endpoints and applications to select paths across the network to use for traffic, based on trustworthy path properties. SCION is an inter-domain network architecture and is therefore not concerned with intra-domain forwarding.</t>
      <t>SCION has been developed with the following goals:</t>
      <t><em>Availability</em> - to provide highly available communication that can send traffic over paths with optimal or required characteristics, quickly handle inter-domain link or router failures (both on the last hop or anywhere along the path) and provide continuity in the presence of adversaries.</t>
      <t><em>Security</em> - to provide higher levels of trust in routing information in order to prevent traffic hijacking, reduce potential for denial-of-service and other attacks. Endpoints can decide the trust roots they wish to rely on, routing information can be unambiguously attributed to an AS, and packets are only forwarded along authorized path segments. A particular use case is to enable geofencing.</t>
      <t><em>Scalability</em> - to improve the scalability of the inter-domain control plane and data plane, avoiding existing limitations related to convergence and forwarding table size. The advertising of path segments is separated into a beaconing process within each Isolation Domain (ISD) and between ISDs which incurs minimal overhead and resource requirements on routers.</t>
      <t>SCION relies on three main components:</t>
      <t><em>PKI</em> - To achieve scalability and trust, SCION organizes existing ASes into logical groups of independent routing planes called <em>Isolation Domains (ISDs)</em>. All ASes in an ISD agree on a set of trust roots called the <em>Trust Root Configuration (TRC)</em> which is a collection of signed root certificates in X.509 v3 format <xref target="RFC5280"/>. The ISD is governed by a set of <em>core ASes</em> which typically manage the trust roots and provide connectivity to other ISDs. This is the basis of the public key infrastructure which the SCION Control Plane relies upon for the authentication of messages that is used for the SCION Control Plane. See <xref target="I-D.dekater-scion-pki"/></t>
      <t><em>Control Plane</em> - performs inter-domain routing by discovering and securely disseminating path information between ASes. The core ASes use Path-segment Construction Beacons (PCBs) to explore intra-ISD paths, or to explore paths across different ISDs.</t>
      <t><em>Data Plane</em> - carries out secure packet forwarding between SCION-enabled ASes over paths selected by endpoints. A SCION border router reuses existing intra-domain infrastructure to communicate to other SCION routers or SCION endpoints within its AS. See <xref target="I-D.dekater-scion-dataplane"/></t>
      <t>This document describes the SCION Control Plane component. It should be read in conjunction with the other components <xref target="I-D.dekater-scion-pki"/> and <xref target="I-D.dekater-scion-dataplane"/>.</t>
      <t>The SCION architecture was initially developed outside of the IETF by ETH Zurich with significant contributions from Anapaya Systems. It is deployed in the Swiss finance sector to provide resilient connectivity between financial institutions. The aim of this document is to document the existing protocol specification as deployed, and to introduce new concepts that can potentially be further improved to address particular problems with the current Internet architecture.</t>
      <t>The SCION architecture was initially developed outside of the IETF by ETH Zurich with significant contributions from Anapaya Systems. It is deployed in the Swiss finance sector to provide resilient connectivity between financial institutions. The aim of this document is to document the existing protocol specification as deployed, and to introduce new concepts that can potentially be further improved to address particular problems with the current Internet architecture.</t>
      <t>Note (to be removed before publication): this document, together with the other components <xref target="I-D.dekater-scion-pki"/> and <xref target="I-D.dekater-scion-dataplane"/>, deprecates <xref target="I-D.dekater-panrg-scion-overview"/>.
This document provides an extensive description of how the SCION Data Plane is implemented in order to facilitate understanding, but could potentially be split into separate documents if considered suitable for submission to the Internet Standards Process.</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 SCION nodes. The Control Plane thus determines where traffic can be sent and deals with questions such as how paths are discovered, which paths exist, how they are disseminated to endpoints, etc. Within a SCION AS, such functionalities are carried out by the Control Service whereas packet forwarding is a task carried out by 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 end of a SCION path, as defined in <xref target="RFC9473"/>.</t>
        <t><strong>Forwarding Path</strong>: A forwarding path is a complete end-to-end path between two SCION endpoints which is used to transmit packets in the data plane. It 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>: Hop Field (HF): 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>: Info Field (INF): Each Path Segment Construction Beacon (PCB) contains a single Info field, which provides basic information about the PCB. Together with Hop Fields (HFs), these are used to create forwarding paths.</t>
        <t><strong>Isolation Domain (ISD)</strong>: Isolation Domain (ISD): 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 (e.g. 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>Path Segment</strong>: Path segments are derived from Path Segment Construction Beacons (PCBs). 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 AS control planes 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 and accumulates 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-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.</t>
        <t>SCION distinguishes three types of links between ASes: (1) core links, (2) parent-child links, and (3) peering links.</t>
        <ul spacing="normal">
          <li>
            <t><em>Core</em> links connect two core ASes, which are either within the same or in different ISDs. Core links can exist for various reasons, 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 AS within the same ISD. 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. They can be established between any two ASes (core or non-core) and can cross ISD boundaries.</t>
          </li>
        </ul>
        <t>These link types form the basis of the notion of "valley free" paths. Valley free paths means that a child AS does not carry transit traffic from a parent AS.</t>
        <t>The SCION paths are always valley free, and consist of at most three segments: an up segment, traversing links from child to parent, then a core segment consisting of core links, followed by a down segment traversing links from parent to child. Peering links can be used as "shortcuts" in an up-core-down path.</t>
        <t>A path can contain at most one peering link shortcut which means they can only be used in paths between ASes within the "customer cone" of the ASes connected by the peering link.</t>
        <t><xref target="_figure-1"/> shows the three types of links for one small ISD with two core ASes A and C, and four non-core ASes D,E,F, and G.</t>
        <figure anchor="_figure-1">
          <name>The three types of SCION links in one ISD. Each node in the figure is a SCION AS.</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 bi-directional and is identified by its corresponding egress and ingress interface IDs. An interface ID consists of a 16-bit identifier that <bcp14>MUST</bcp14> be unique within each AS, with the exception of value 0 (see <xref target="I-D.dekater-scion-dataplane"/>). Therefore, they can be chosen and encoded by each AS independently without any need for coordination between ASes.</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.</t>
        <t>SCION inter-domain routing operates on two levels: within a ISD which is called <em>intra</em>-ISD routing, and between ISD which is called <em>inter</em>-ISD routing. Both levels use <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 at an 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 that carry this information in their headers. This 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>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 and 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 and each 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 is decoupled from SCION border routers. The Control Service of a specific AS is part of the Control Plane, is responsible for <em>finding and registering suitable paths</em>, and can be deployed anywhere inside the AS. Border routers are deployed at the edge of an AS and their main tasks are to <em>forward data packets</em>.</t>
        <section anchor="path-segments">
          <name>Path Segments</name>
          <t>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>Each path segment starts and/or ends at a core AS.</t>
          <t>All path segments may be inverted: a core segment can be used bidirectionally, an up segment can be converted into a down segment, and a down segment can be converted into an up segment 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>
          <t>The cryptographic protection of PCBs and path segments is based on the Control Plane PKI. The signatures are structured such that the entire message sequence constituting the path segment can be authenticated by anyone with access to this PKI.</t>
          <t>For fast validation of the path information carried in individual packets during packet forwarding, symmetric key cryptography is used and the Hop Fields contain a MAC. These MACs are structured to allow verification of the sequence of hops, but in contrast to the PCBs can only be validated by the border routers of the respective AS.</t>
        </section>
      </section>
      <section anchor="numbering">
        <name>Addressing</name>
        <t>Inter-domain SCION routing is based on an &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 is of variable length, does not need to be globally unique, and can thus be an IPv4, IPv6, or link layer address.</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 and <bcp14>MUST</bcp14> be globally unique.</t>
          <t>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, a provider of SCION-based networking software and solutions (see <xref target="ISD-AS-assignments"/>).</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, but there is no technical requirement for this.</t>
          <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>ffaa: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 endpoints use wildcard AS <tt>0:0:0</tt> to designate any core AS, e.g. to place requests for core segments or down segments during path lookup. These wildcard addresses are of the form I-0, to designate any AS in ISD I. For more information, see <xref target="wildcard"/>.</t>
        </section>
        <section anchor="text-representation">
          <name>Text Representation</name>
          <section anchor="isd-numbers-1">
            <name>ISD numbers</name>
            <t>The text representation of SCION ISD numbers <bcp14>MUST</bcp14> be its decimal ASCII representation.</t>
          </section>
          <section anchor="as-numbers">
            <name>AS numbers</name>
            <t>The text representation of SCION AS numbers is similar to IPv6 (see <xref target="RFC5952"/>) but not identical. It <bcp14>MUST</bcp14> be as follows:</t>
            <ul spacing="normal">
              <li>
                <t>It uses a 16-bit colon-separated lower-case hex encoding with leading 0s omitted: <tt>0:0:0</tt> to <tt>ffff:ffff:ffff</tt>.</t>
              </li>
              <li>
                <t>The <tt>::</tt> zero-compression feature of IPv6 <bcp14>MUST NOT</bcp14> be used. 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>
              <li>
                <t>For historical reasons, SCION AS numbers in the lower 32-bit range <bcp14>MAY</bcp14> also be represented as decimal for human readability. For example, if a program receives the AS number <tt>0:1:f</tt>, it <bcp14>MAY</bcp14> display the number as "65551".</t>
              </li>
            </ul>
          </section>
          <section anchor="isd-as-tuples">
            <name>&lt;ISD, AS&gt; tuples</name>
            <t>The text representation of SCION addresses <bcp14>MUST</bcp14> be <tt>&lt;ISD&gt;-&lt;AS&gt;</tt>, where <tt>&lt;ISD&gt;</tt> is the text representation of the ISD number, <tt>&lt;AS&gt;</tt> is the text representation of the AS number, and <tt>-</tt> is the litteral ASCII character 0x2D.</t>
            <t>For example, the text representation of AS number 65551 (0x1000f) in ISD number 4 is <tt>4-0000:1:f</tt>.</t>
          </section>
        </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 is described in more detail in <xref target="I-D.dekater-scion-dataplane"/>.</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. That is, the receiver of a packet can reverse the path in the packet header in order to produce a reply packet without having to perform a path lookup. Such a packet follows the original packet's path backwards.</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 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 material by contacting the sender.<br/></t>
          </li>
        </ul>
        <t><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.dekater-scion-pki"/>.</t>
        <t>Besides inter-dependencies, another threat to the Internet is network partition which 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 as 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 can always switch to otherwise unused links.</t>
        <t>Recovering 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. <xref target="clock-inaccuracy"/> further describes the impact of time synchronization.</t>
      </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>The RPC messages are transported via the <xref target="Connect"/>'s rpc protocol; a gRPC-like protocol that carries messages over HTTP/3 (see <xref target="RFC9114"/>)). HTTP3 traffic uses QUIC/UDP (<xref target="RFC9000"/>) as a transport layer. In the case of SCION, UDP relies on the data plane.</t>
        <t><xref target="app-a"/> provides the entire Control Service API definition in protobuf format.</t>
        <t><xref target="app-b"/> provides details about the establishment of the underlying QUIC connections through the data plane.</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> and this section provides a detailed explanation of this.</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 the <em>Path Segment Construction Beacons (PCBs)</em> on a regular basis, to iteratively construct path segments.</t>
        <t>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. PCBs are periodically 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 Services of core ASes create PCBs and sends them to the non-core child ASes (typically customer ASes) at regular intervals. The Control Service of a non-core child AS receives these PCBs and forwards them to its child ASes, and so on 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 is added to the PCB. The full PCB message format is described in <xref target="pcbs"/>.</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="appending-entries-to-a-pcb">
          <name>Appending Entries to 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). This is described in <xref target="selection"/>.</t>
            </li>
            <li>
              <t>propagates each selected PCB to the selected egress interface(s) associated with it. This is described in <xref target="path-segment-prop"/>.</t>
            </li>
          </ul>
          <t>For every selected PCB and egress interface combination, the AS appends an <em>AS entry</em> to the selected PCB. This includes a Hop Field that specifies the ingress and egress interface for the packet forwarding through this AS, in the beaconing direction. The AS entry can also contain peer entries.</t>
        </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. Interface identifiers of each AS are numbered with integer values while ASes are described with an upper case letter for the sake of illustration.</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 appends the corresponding ingress and egress interface information to the four PCBs. 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    |    |             |
        |    AS V     #- --# 1           |    |             |
        |             |    |     AS Y    |    |    AS W     |
        |             |    |           4 #- --#             |
        +-------------+    |             |    |             |
                           |    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 as a PCB is a so-called "travelling path segment" that accumulates AS entries when traversing the Internet. A registered path segment is instead 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>
        <section anchor="pcb-compos">
          <name>PCB 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><strong>Note:</strong> For a full example of one PCB in the Protobuf message format, please see <xref target="app-a"/>, <xref target="_figure-14"/>.</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 at the 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 and the expiration time of each Hop Field in the PCB 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 <bcp14>REQUIRED</bcp14> 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 and 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. <xref target="I-D.dekater-scion-dataplane"/> 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>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, and 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 the Control Plane AS Certificate (See <xref target="I-D.dekater-scion-pki"/>).</t>
            <t>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 <bcp14>SHOULD NOT</bcp14> 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 subjectKeyIdentifier of the public key to be used to verify the signature (see <xref target="I-D.dekater-scion-pki"/>)</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>: Contains information that is relevant to signing and verifying PCBs and other control-plane messages. It 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.dekater-scion-pki"/>. 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.dekater-scion-pki"/>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>timestamp</tt>: Defines the signature creation timestamp. This field is <bcp14>OPTIONAL</bcp14>.</t>
                </li>
                <li>
                  <t><tt>metadata</tt>: Can be used to include arbitrary per-protocol metadata. This field is <bcp14>OPTIONAL</bcp14>.</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 <bcp14>SHOULD</bcp14> 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 maximum transmission unit (MTU) that is supported by all intra-domain links within the current AS. This value is set by the control service when adding the AS entry to the beacon. How the control service obtains this information is implementation dependent. Current practice is to make it a configuration item.</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 <bcp14>MUST</bcp14> be signed with the AS certificate's private key K<sub>i</sub>. The certificate <bcp14>MUST</bcp14> have a validity period fully containing that of the segment being verified, regardless of current time. The signature Sig<sub>i</sub> of an AS entry ASE<sub>i</sub> is computed over the AS entry's signed component.</t>
              <t>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 to 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.dekater-scion-pki"/>.</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 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 which the data plane requires 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. Routers need 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 (in beaconing direction) of the hop being described. The MTU of paths  constructed from the containing beacon is necessarily less than or equal to this value. How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured. Current practice to make it a configuration item.</t>
              </li>
            </ul>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
          </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 and 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) which will be checked by the SCION border routers during packet forwarding. The algorithm used to compute the Hop Field MAC is an AS-specific choice and the operator of an AS can freely choose a MAC algorithm without outside coordination. However, the Control Service and routers of the AS do need to agree on the algorithm used.</t>
            <t>Control Service and router implementations <bcp14>MUST</bcp14> support the Default Hop Field MAC algorithm described in <xref target="I-D.dekater-scion-dataplane"/>. This document does not specify any further mechanism to coordinate this choice between Control Services and routers of one AS.</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 core 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 its validity. This field expresses a duration in seconds according to the formula: <tt>duration = (1 + exp_time) * (24*60*60/256)</tt>. The minimum duration is therefore 337.5 s. This duration is relative to the PCB creation timestamp set in the PCB's segment information component (see also <xref target="seginfo"/>). Therefore, the absolute expiration time of the Hop Field is the sum of these two values.</t>
              </li>
              <li>
                <t><tt>mac</tt>: The message authentication code (MAC) used in the data plane to verify the Hop Field, as described in <xref target="I-D.dekater-scion-dataplane"/>.</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) of the peering link being described. The MTU of paths via such link is necessarily less than or equal to this value.  How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured, but current practice is to make it a configuration item.</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>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
            <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 such a hop entries and peer entries, PCBs can be used to communicate additional metadata in extensions. Extensions can be signed and unsigned: signed extensions are protected by the AS signature, whereas unsigned extensions are not.</t>
          <t>In Protobuf, 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 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 anchor="pcb-validity">
          <name>PCB Validity</name>
          <t>To be valid (that is, usable to construct a valid path), a PCB <bcp14>MUST</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Contain valid AS Entry signatures (<xref target="sign"/>).</t>
            </li>
            <li>
              <t>Have a timestamp (<xref target="seginfo"/>) that is not in the future.</t>
            </li>
            <li>
              <t>Contain only unexpired hops (<xref target="hopfield"/>).</t>
            </li>
          </ul>
          <t>For the purpose of validation, a timestamp is considered "future" if it is later than the current time at the point of validation plus the minimum expiration time of a Hop Field (337.5 seconds, see <xref target="hopfield"/>).</t>
          <t>For the purpose of validation, a hop is considered expired if its absolute expiration time, calculated as defined in <xref target="hopfield"/>, is later than the current time at the point of validation.</t>
        </section>
        <section anchor="configuration">
          <name>Configuration</name>
          <t>For the purpose of constructing and propagating path segments, an AS Control Service <bcp14>MUST</bcp14> be configured with links to neighboring ASes. Such information may be conveyed to the Control Service in an out-of-band fashion (e.g in a configuration file). For each link, these values <bcp14>MUST</bcp14> be configured:</t>
          <ul spacing="normal">
            <li>
              <t>Local interface ID</t>
            </li>
            <li>
              <t>Neighbor type (core, parent, child, peer), depending on link type (see <xref target="paths-links"/>). Link type depends on mutual agreements between the organizations operating the ASes at each end of each link.</t>
            </li>
            <li>
              <t>Neighbor ISD-AS number</t>
            </li>
            <li>
              <t>Neighbor interface underlay address</t>
            </li>
          </ul>
          <t>In addition, the maximum MTU supported by all intra-AS links <bcp14>MAY</bcp14> be configured.</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 <bcp14>MUST</bcp14> select the PCBs that it will propagate further. Each AS specifies a local policy on the basis of which PCBs are evaluated, selected, or eliminated.
The selection process can inspect and compare the properties of the candidate PCBs (e.g., length, disjointness across different paths, age, expiration time) and/or take into account which PCBs have been propagated in the past.</t>
          <t>Naturally, an AS's policy selects PCBs corresponding to paths that are commercially or otherwise operationally viable.
From these viable PCBs, only a relatively small subset <bcp14>SHOULD</bcp14> be propagated to avoid excessive overhead of the path discovery system in bigger networks.</t>
          <t>The goal of the AS <bcp14>SHOULD</bcp14> be to propagate those candidate PCBs with the highest probability of collectively meeting the needs of the endpoints that will perform path construction. As SCION does not provide any in-band signal about the intentions of endpoints nor about the policies of downstream ASes, the policy will typically select a somewhat diverse set optimized for multiple, generic parameters.</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 AS at a fixed frequency known as 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 <bcp14>SHOULD</bcp14> 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 (i.e. propagation between all core ASes). These are <bcp14>RECOMMENDED</bcp14> maxima; in current practice the intra-ISD set size is typically 20.</t>
              </li>
            </ul>
            <t>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 <bcp14>SHOULD</bcp14> 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>Note that to ensure quick connectivity establishment, an AS <bcp14>MAY</bcp14> attempt to forward a PCB more frequently ("fast recovery"). Current practice is to increase the frequency of attempts if no PCB propagation is know to have succeeded within the last propagation interval:</t>
            <ul spacing="normal">
              <li>
                <t>because the corresponding RPC failed;</t>
              </li>
              <li>
                <t>or because no beacon was available to propagate.</t>
              </li>
            </ul>
            <t>The scalability implications of such parameters are further discussed in <xref target="scalability"/>.</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 and based this, 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, 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 which happens at 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 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 and the purpose of one-hop paths is to break this circular dependency. The One-Hop Path Type is described in more detail in <xref target="I-D.dekater-scion-dataplane"/>.</t>
          <section anchor="reception-of-pcbs">
            <name>Reception of PCBs</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 validity of the PCB (see <xref target="pcb-validity"/>) and invalid PCBs <bcp14>MUST</bcp14> be discarded. The PCB contains the version numbers of the TRC(s) and certificate(s) that <bcp14>MUST</bcp14> be used to verify its signatures which 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 propagating PCBs to all AS neighbors, 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, and if so, the PCB <bcp14>MUST</bcp14> be discarded in order to avoid loops. Additionally, core ASes <bcp14>MAY</bcp14> make a policy decision not to propagate beacons containing path segments that traverse the same ISD more than once as this can be legitimate, e.g. if the ISD spans a large geographical area, a path transiting another ISD may constitute a shortcut.</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 which <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 <bcp14>MAY</bcp14> 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>
          </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 which <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> 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>: An empty message returned as an acknowledgement upon success.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <section anchor="monitoring-considerations">
        <name>Monitoring Considerations</name>
        <t>In order to maintain service availability, an AS <bcp14>SHOULD</bcp14> monitor the following aspects when deploying the SCION control plane:</t>
        <ul spacing="normal">
          <li>
            <t>For routers (to enable correlation with link states): state of configured links (core, child, parent)</t>
          </li>
          <li>
            <t>For any control service:
            </t>
            <ul spacing="normal">
              <li>
                <t>Fraction of path lookups served successfully (see <xref target="lookup"/>)</t>
              </li>
              <li>
                <t>Time synchronization offset with other ASes (see <xref target="clock-inaccuracy"/>)</t>
              </li>
              <li>
                <t>Fraction of ASes found in non-expired segments for which a non-expired certificate exists</t>
              </li>
            </ul>
          </li>
          <li>
            <t>For a core AS:
            </t>
            <ul spacing="normal">
              <li>
                <t>Fraction of core ASes (preferably only those to which the link is up) that can be found in non-expired core segments</t>
              </li>
              <li>
                <t>Fraction of ASes, core or children, (preferably only those to which the link is up) whereto a beacon was initiated during the last propagation interval</t>
              </li>
              <li>
                <t>Fraction of freshly propagated beacons for which at least one corresponding down segment has been registered (see <xref target="path-segment-reg"/>)</t>
              </li>
            </ul>
          </li>
          <li>
            <t>For a non-core AS:
            </t>
            <ul spacing="normal">
              <li>
                <t>Number of up segments available (may be just 0/non-0) younger than the propagation interval (or some multiple thereof).</t>
              </li>
              <li>
                <t>Fraction of up segments that were successfully registered as down segments (see <xref target="path-segment-reg"/>).</t>
              </li>
              <li>
                <t>Fraction of children ASes (preferably only those to which the link is up) whereto a beacon was propagated during the last propagation interval</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="clock-inaccuracy">
        <name>Effects of Clock Inaccuracy</name>
        <t>A PCB originated by a given Control Service is validated by all the Control Services that receive it. All have different clocks and their differences affect the validation process:</t>
        <ul spacing="normal">
          <li>
            <t>A fast clock at origination or a slow clock at reception will yield a lengthened expiration time for hops, and possibly an origination time in the future.</t>
          </li>
          <li>
            <t>A slow clock at origination or a fast clock at reception will yield a shortened expiration time for hops, and possibly an expiration time in the past.</t>
          </li>
        </ul>
        <t>This bias comes in addition to a structural delay: PCBs are propagated at a configurable interval - typically around one minute. As a result of this and the way they are iteratively constructed, PCBs with N hops may be validated up to N intervals (so maximally N minutes) after origination which creates a constraint on the expiration of hops. Hops of the minimal expiration time (337.5 seconds - see <xref target="hopfield"/>) would make any PCB describing a path longer than 5 hops expire. For this reason it is unadvisable to create hops with a short expiration time - they <bcp14>SHOULD</bcp14> be around 6 hours.</t>
        <t>The Control Service and its clients authenticate each-other according to their respective AS's certificate. Path segments are authenticated based on the certificates of the ASes that they refer to. The <bcp14>RECOMMENDED</bcp14> expiration time of a SCION AS certificate is between 3h and 3 days. Some deployments use up to 5 days.
In comparison to these time scales, clock offsets in the order of minutes are immaterial.</t>
        <t>Each administrator of a SCION Control Service is responsible for maintaining sufficient clock accuracy. No particular method is assumed by this specification.</t>
      </section>
      <section anchor="scalability">
        <name>Path Discovery Time and Scalability</name>
        <t>The path discovery mechanism balances the number of discovered paths and the time it takes to discover them versus resource overhead of the discovery.</t>
        <t>The resource costs for path discovery are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Communication overhead is transmitting the PCBs and occasionally obtaining the required PKI material.</t>
          </li>
          <li>
            <t>Processing overhead is validating the signatures of the AS entries, signing new AS entries, and to a lesser extent, evaluating the beaconing policies.</t>
          </li>
          <li>
            <t>Storage overhead is both the temporary storage of PCBs before the next propagation interval, and the storage of complete discovered path segments.</t>
          </li>
        </ul>
        <t>All of these are dependent on the number and length of the discovered path segments, i.e. the total number of AS entries of the discovered path segments.</t>
        <t>Interesting metrics for scalability and speed of path discovery are the time until all discoverable path segments have been discovered after a "cold start", and the time until new link is usable. In general, the time until a specific PCB is built depends on its length, the propagation interval, and whether on-path ASes use "fast recovery".</t>
        <t>At each AS, the PCB will be processed and propagated at the subsequent propagation event. As propagation events are not synchronized between different ASes, a PCB arrives at a random point in time during the interval and may be buffered before potentially being propagated. With a propagation interval T at each AS, the mean time until the PCB is propagated in one AS therefore is T / 2 and the mean total time for the propagation steps of a PCB of length L is at worst L * T / 2 (with a variance of L * T^2 / 12).</t>
        <t>Note that link removal is not part of path discovery in SCION. For scheduled removal of links, operators let path segments expire. On link failures, endpoints route around the failed link by switching to different paths in the data plane.</t>
        <t>To achieve scalability, SCION partitions ASes into ISDs and in an ideal topology the inter-ISD core network should be kept to a moderate size. For more specific observations, we distinguish between intra-ISD and inter-ISD beaconing.</t>
        <section anchor="intra-isd-beaconing">
          <name>Intra-ISD Beaconing</name>
          <t>In the intra-ISD beaconing, PCBs are propagated top down along parent-child links from core to leaf ASes. Each AS discovers path segments from itself to the core ASes of its ISD.</t>
          <t>This typically produces an acyclic graph which is narrow at the top, widens towards the leafs, and is relatively shallow. Intermediate provider ASes will have a large number of children, while they only have a small number of parents and the chain of intermediate providers from a leaf AS to a core AS is typically not long (e.g. local, regional, national provider, then core).</t>
          <t>Each AS potentially receives PCBs for all down path segments from the core to itself. While the number of distinct provider chains to the core is typically moderate, the multiplicity of links between provider ASes has multiplicative effect on the number of PCBs. Once this number grows above the maximum recommended best PCBs set size of 50, ASes <bcp14>SHOULD</bcp14> trim the set of PCBs propagated.</t>
          <t>Ultimately, the number of PCBs received by an AS per propagation interval remains bounded by 50 for each parent link of an AS, and at most 50 PCBs per child link are propagated. The length of these PCBs and thus the number of AS entries to be processed and stored, is expected to be moderate and not grow considerably with network size. The total resource overhead for beacon propagation is easily manageable even for highly connected ASes.</t>
          <t>To illustrate this, an AS with a rather large number of 100 parent links receives at most 5000 PCBs during a propagation interval. Assuming a generous average length of 10 AS entries for these PCBs, this corresponds to 50000 AS entries.</t>
          <t>Due to the variable length fields in AS entries, the sizes for storage and transmission cannot be predicted exactly, but assume an average of 250 bytes per AS entry. At the shortest recommended propagation interval of 5 seconds, this corresponds to an average bandwidth of around 2.5 MB/s and the processing of 10000 signature verifications per second.</t>
          <t>If the same AS has 1000 child links, the propagation of the beacons will require signing one new AS entry for each of the propagated PCBs for each link (at most 50 per link), i.e. at most 50000 signatures per propagation event. The total bandwidth for the propagation of these PCBs for all 1000 child links would, be roughly around 25 MB/s which is manageable with even modest consumer hardware.</t>
          <t>On a cold start of the network, path segments to each AS are discovered within a number of propagation steps proportional to the longest path. With a 5 second propagation period and a generous longest path of length 10, all path segments are discovered after 25 seconds on average. When all ASes start propagation just after they've received the first PCBs from any of their upstreams (see 'fast recovery'), the construction of a first path to connect each AS to the ISD core is accelerated.</t>
          <t>When a new parent-child link is added to the network, the parent AS will propagate the available PCBs in the next propagation event. If the AS on the child side of the new link is a leaf AS, path discovery is thus complete after at most one propagation interval. Otherwise, child ASes at distance D below the new link, learn of the new link after at worst D further propagation intervals.</t>
        </section>
        <section anchor="inter-isd-beaconing">
          <name>Inter-ISD Beaconing</name>
          <t>In the inter-ISD core beaconing, PCBs are propagated omnidirectionally along core links. Each AS discovers path segments from itself to any other core AS.</t>
          <t>The number of distinct paths through the core network is typically very large. To keep the overhead manageable, at most 5 path segments to every destination AS are discovered and the propagation frequency is slower than in the intra-ISD beaconing (at least 60 seconds between propagation events).</t>
          <t>Without making strong assumptions on the topology of the core network, we can assume that shortest paths through real world networks are relatively short: e.g. the Barabási-Albert random graph model predicts a diameter of log(N)/log(log(N)) for a network with N nodes <xref target="BollRio-2000"/> and The average distance scales in the same way. Whilst we cannot assume that the selected PCBs are strictly the shortest paths through the network, they are likely to be not very much longer than the shortest paths either.</t>
          <t>With N the number of participating core ASes, an AS receives up to 5 * N PCBs per propagation interval per core link interface. For highly connected ASes, the number of PCBs received thus becomes rather large and in a network of 1000 ASes, a AS with 300 core links receives up to 1.5 million PCBs per propagation interval.</t>
          <t>Assuming an average PCB length of 6 and the shortest propagation interval of 60 seconds, this corresponds to roughly 150 thousand signature validations per second or roughly 38 MB/s. For much larger, more highly connected ASes, the path discovery tasks of the Control Service can be distributed over many instances in order to increase the PCB throughput.</t>
          <t>On a cold start of the network, full connectivity is obtained after a number of propagation steps corresponding to the diameter of the network. Assuming a network diameter of 6, this corresponds to roughly 3 minutes on average. When a new link is added to the network, it will be available to connect two ASes at distances D1 and D2 from the link, respectively, at worst after a mean time (D1+D2)*T/2.</t>
        </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 adding these segments to the relevant path databases thereby 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.</t>
      <t>The next step is to register the selected down segments with the Control Service of the relevant core ASes in accordance with 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 the preferred core path segments to other core ASes during the <em>core segment registration</em> process.</t>
      <t>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 segments and down segments do not have to be equal as 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 segment and down segment sets. In addition, the processes of transforming a PCB in an up segment or a down segment differ slightly.</t>
        <section anchor="term-pcb">
          <name>Terminating a PCB</name>
          <t>Both the up segments and down segments end at the AS, so by transforming a PCB into a path segment, an AS "terminates" the PCB for this AS ingress interface and at that moment in time.</t>
          <t>The Control Service of a non-core AS <bcp14>MUST</bcp14> 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 which <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 <bcp14>MAY</bcp14> 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>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 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 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>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 gRPC API</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 to 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>
          <li>
            <t><tt>SegmentRegistrationResponse</tt>: an empty message returned as an acknowledgement upon success.</t>
          </li>
        </ul>
      </section>
      <section anchor="path-mtu">
        <name>Path MTU</name>
        <t>SCION paths represent a sequence of ASes and inter-AS links; each with possibly different MTUs. As a result, the path MTU is the minimum of the MTUs of each inter-AS link and intra-AS networks it traverses. Such MTU information is disseminated during path construction:</t>
        <ul spacing="normal">
          <li>
            <t>The MTU of each intra-AS network traversed (represented by the MTU field of the corresponding <xref target="ase-sign">AS Entries</xref>)</t>
          </li>
          <li>
            <t>The MTU of each inter-AS link or peering link (indicated by the ingress_mtu field of each <xref target="hopentry"/> or the peer_mtu field of each <xref target="peerentry"/> used)</t>
          </li>
        </ul>
        <t>Such information is then made available to endpoints during the path lookup process (See <xref target="lookup"/>). SCION endpoints are oblivious to the topology of intermediate ASes, therefore when looking up a path they <bcp14>MUST</bcp14> assume that all hops are constrained by the intra-AS MTU of each AS traversed.</t>
      </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 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 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 segment to reach the destination AS.</t>
          </li>
        </ul>
        <t>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 is provided by <xref target="I-D.dekater-scion-dataplane"/>.</t>
        <t>The process to look up and fetch path segments consists of the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>The source endpoint queries the Control Service in its own AS (i.e. the source AS) for the required segments by sending a SegmentsRequest. The Control Service has up segments stored in its path database and additionally checks if it has appropriate core segments and down segments stored as well - in this case it returns them immediately in a SegmentsResponse.</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 segments to core ASes in the destination ISD. To reach the core Control Services, the Control Service of the source AS uses the locally stored up segments.</t>
          </li>
          <li>
            <t>The Control Service of the source AS combines up segments with the newly retrieved core segments. The Control Service then queries the Control Services of the remote core ASes in the destination ISD to fetch down 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 segments and core segments.</t>
          </li>
          <li>
            <t>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 source endpoint combines them into an end-to-end path in the data plane.</t>
          </li>
          <li>
            <t>The destination endpoint, once it receives the first packet, <bcp14>MAY</bcp14> revert the path in the received packet in order to construct a response. This ensures that traffic flows on the same path bidirectionally.</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 <bcp14>SHOULD</bcp14> 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>
          <t>The segment lookup API gRPC definition can be found in <xref target="_figure-11"/>.</t>
        </section>
        <section anchor="caching">
          <name>Caching</name>
          <t>For the sake of efficiency, the Control Service of the source AS <bcp14>SHOULD</bcp14> cache each returned path segment request. Caching ensures that path lookups are fast for frequently used destinations and 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 <bcp14>SHOULD</bcp14> 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 either 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.</t>
        <t>This section specifies the behavior of the segment request handlers in the lookup process.</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 <bcp14>MUST</bcp14> 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 of the core segment, and then 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 of the down segment. Sending the request may require looking up core segments to the source core AS of the down segment, and then adding 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 <bcp14>MUST</bcp14> be this core AS.</t>
                </li>
                <li>
                  <t>The request <bcp14>MUST</bcp14> 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-c"/> 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 so these topics lie outside the scope of this section.</t>
      <t>This section focuses on three kinds of security risks in the control plane:</t>
      <ol spacing="normal" type="1"><li>
          <t>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"/>).</t>
        </li>
        <li>
          <t>When "ordinary" (non-core) adversaries try to manipulate the beaconing process (see <xref target="manipulate-beaconing"/>).</t>
        </li>
        <li>
          <t>Denial of Services (DoS) attacks where attackers overload different parts of the infrastructure (see <xref target="dos-cp"/>).</t>
        </li>
      </ol>
      <section anchor="topdown-manipulate">
        <name>Manipulation of the Beaconing Process by a Core Adversary</name>
        <t>The first 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 will halt. 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 that could be taken by an "ordinary" non-core adversary to manipulate the beaconing process in the SCION Control Plane. For each case it shows to what extent SCION's design can prevent the corresponding attack or help mitigate it.</t>
        <section anchor="path-hijack">
          <name>Path Hijacking through Interposition</name>
          <t>A 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.</t>
          <t>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.</t>
          <t>The third type of attack generally cannot be prevented. However the alternate path would be immediately visible to endpoints as traffic <bcp14>MUST</bcp14> 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 non-existent AS. 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 should include 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. Firstly, each AS selects which PCBs are further forwarded to its neighbors. Secondly, 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). Thirdly, the endpoint performs path selection among all available paths resulting from a path lookup 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 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 and 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. Endpoints are also 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, or during core path lookup. Volumetric DoS attacks, where attackers overload a link may make it difficult to exchange these messages.</t>
        <t>SCION limits the impact of such attacks which aim to exhaust network bandwidth on links as ASes can switch to alternative paths that do not contain the congested links. Reflection-based attacks are also prevented as response packets are returned on the same path to the actual sender.</t>
        <t>Other mechanisms are required to avoid transport protocol attacks where the attacker tries to exhaust the resources on a target server, such as for the Control Services, by opening many connections to this. The means to mitigate these kind of DoS attacks are basically the same as for the current Internet, e.g. filtering, geo-blocking or using cookies.</t>
        <t>Thanks to its path awareness, SCION enables more fine-grained filtering mechanisms based on certain path properties. For example, control plane RPC methods that are available to endpoints within an AS are strictly separate from methods available to endpoints from other ASes. Specifically, expensive recursive path segment and trust material lookups are thus shielded from abuse by unauthorized entities.</t>
        <t>For RPC methods exposed to other ASes, the Control Service implementation minimizes its attack surface by rejecting illegitimate callers based on ISD/AS, path type and length and any other available data points as soon as possible, i.e. immediately after determining the request type. For example:</t>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentCreationService.Beacon</tt> can only be called by direct neighbors and thus calls from peers with a path length greater than one can immediately be discarded.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationService.SegmentsRegistration</tt> can only be called from within the same ISD, thus the source address <bcp14>MUST</bcp14> match the local ISD and the number of path segments <bcp14>MUST</bcp14> be 1.</t>
          </li>
        </ul>
        <t>A combination of the mechanism above is used to prevent flooding attacks on the Control Service. In addition, the Control Service <bcp14>SHOULD</bcp14> be deployed in a distributed and replicated manner so that requests can be balanced and a single instance failure does not result in a complete failure of the control plane of a SCION 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 <xref target="ISD-AS-assignments"/>). This task is currently being transitioned from Anapaya to the SCION Association.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.dekater-scion-dataplane">
          <front>
            <title>SCION Data Plane</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Samuel Hitz" initials="S." surname="Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document describes the data 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 endpoints.
   The SCION control plane is responsible for discovering these paths
   and making them available as path segments to the endpoints.  The
   role of the SCION data plane is to combine the path segments into
   end-to-end paths, and forward data between endpoints according to the
   specified path.

   The SCION data plane fundamentally differs from today's IP-based data
   plane in that it is _path-aware_: In SCION, interdomain forwarding
   directives are embedded in the packet header.  This document first
   provides a detailed specification of the SCION data packet format as
   well as the structure of the SCION header.  SCION also supports
   extension headers - these are described, too.  The document then
   shows the life cycle of a SCION packet while traversing the SCION
   Internet.  This is followed by a specification of the SCION path
   authorization mechanisms and the packet processing at routers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-scion-dataplane-02"/>
        </reference>
        <reference anchor="I-D.dekater-scion-pki">
          <front>
            <title>SCION Control-Plane PKI</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Samuel Hitz" initials="S." surname="Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document presents the trust concept and design of the SCION
   _control-plane Public Key Infrastructure (PKI)_, SCION's public key
   infrastructure model.  SCION (Scalability, Control, and Isolation On
   Next-generation networks) is a path-aware, inter-domain network
   architecture.  The control-plane PKI, or short CP-PKI, handles
   cryptographic material and lays the foundation for the authentication
   procedures in SCION.  It is used by SCION's control plane to
   authenticate and verify path information, and builds the basis for
   SCION's special trust model based on so-called Isolation Domains.

   This document first introduces the trust model behind the SCION's
   control-plane PKI, as well as clarifications to the concepts used in
   it.  This is followed by specifications of the different types of
   certificates and the Trust Root Configuration.  The document then
   specifies how to deploy the whole infrastructure.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-scion-pki-06"/>
        </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="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="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="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </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>
        <reference anchor="Connect" target="https://connectrpc.com/docs/protocol/">
          <front>
            <title>Connect Protocol Reference</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.dekater-panrg-scion-overview">
          <front>
            <title>SCION Overview</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Adrian Perrig" initials="A." surname="Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date day="7" month="May" year="2024"/>
            <abstract>
              <t>   The Internet has been successful beyond even the most optimistic
   expectations and is intertwined with many aspects of our society.
   But although the world-wide communication system guarantees global
   reachability, the Internet has not primarily been built with security
   and high availability in mind.  The next-generation inter-network
   architecture SCION (Scalability, Control, and Isolation On Next-
   generation networks) aims to address these issues.  SCION was
   explicitly designed from the outset to offer security and
   availability by default.  The architecture provides route control,
   failure isolation, and trust information for end-to-end
   communication.  It also enables multi-path routing between hosts.

   This document discusses the motivations behind the SCION architecture
   and gives a high-level overview of its fundamental components,
   including its authentication model and the setup of the control- and
   data plane.  As SCION is already in production use today, the
   document concludes with an overview of SCION deployments.

   For detailed descriptions of SCION's components, refer to
   [I-D.dekater-scion-pki], [I-D.dekater-scion-controlplane], and
   [I-D.dekater-scion-dataplane].  A more detailed analysis of
   relationships and dependencies between components is available in
   [I-D.rustignoli-scion-components].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-panrg-scion-overview-06"/>
        </reference>
        <reference anchor="ISD-AS-assignments" target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">
          <front>
            <title>SCION ISD and AS Assignments</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <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="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="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="RFC9217">
          <front>
            <title>Current Open Questions in Path-Aware Networking</title>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>In contrast to the present Internet architecture, a path-aware internetworking architecture has two important properties: it exposes the properties of available Internet paths to endpoints, and it provides for endpoints and applications to use these properties to select paths through the Internet for their traffic. While this property of "path awareness" already exists in many Internet-connected networks within single domains and via administrative interfaces to the network layer, a fully path-aware internetwork expands these concepts across layers and across the Internet.</t>
              <t>This document poses questions in path-aware networking, open as of 2021, that must be answered in the design, development, and deployment of path-aware internetworks. It was originally written to frame discussions in the Path Aware Networking Research Group (PANRG), and has been published to snapshot current thinking in this space.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9217"/>
          <seriesInfo name="DOI" value="10.17487/RFC9217"/>
        </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>
        <reference anchor="BollRio-2000" target="https://kam.mff.cuni.cz/~ksemweb/clanky/BollobasR-scale_free_random.pdf">
          <front>
            <title>The diameter of a scale-free random graph</title>
            <author initials="B." surname="Bollobás" fullname="Béla Bollobás">
              <organization/>
            </author>
            <author initials="O." surname="Riordan" fullname="Oliver Riordan">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SCIONLAB" target="https://ieeexplore.ieee.org/abstract/document/9259355">
          <front>
            <title>SCIONLAB - A Next-Generation Internet Testbed</title>
            <author initials="J." surname="Kown" fullname="Jonghoon Kwon">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="J." surname="García-Pardo" fullname="Juan A. García-Pardo">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="F." surname="Wirz" fullname="François Wirz">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Frei" fullname="Matthias Frei">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1717?>

<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 every 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="deployment-testing-scionlab">
      <name>Deployment Testing: SCIONLab</name>
      <t>SCIONLab is a global research network that is available to test the SCION architecture. You can create and use your ASes using your own computation resources which allows you to gain real-world experience of deploying and managing a SCION network.</t>
      <t>More information can be found on the SCIONLab website and in the <xref target="SCIONLAB"/> paper.</t>
    </section>
    <section numbered="false" anchor="app-a">
      <name>Full Control Service gRPC API</name>
      <t>The following code blocks provide, in protobuf format, the entire API by which control services interact.</t>
      <figure anchor="_figure-11">
        <name>Control Service gRPC API - Segment lookup.    This API is exposed on the SCION dataplane by the control    services of core ASes and exposed on the intra-domain protocol    network.</name>
        <artwork><![CDATA[
service SegmentLookupService {
    // Segments returns all segments that match the request.
    rpc Segments(SegmentsRequest) returns (SegmentsResponse) {}
}

message SegmentsRequest {
    // The source ISD-AS of the segment.
    uint64 src_isd_as = 1;
    // The destination ISD-AS of the segment.
    uint64 dst_isd_as = 2;
}

enum SegmentType {
    // Unknown segment type.
    SEGMENT_TYPE_UNSPECIFIED = 0;
    // Up segment.
    SEGMENT_TYPE_UP = 1;
    // Down segment.
    SEGMENT_TYPE_DOWN = 2;
    // Core segment.
    SEGMENT_TYPE_CORE = 3;
}

message SegmentsResponse {
    message Segments {
        // List of path segments.
        repeated PathSegment segments = 1;
    }

    // Mapping from path segment type to path segments.
    // The key is the integer representation of the SegmentType enum.
    map<int32, Segments> segments = 1;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-12">
        <name>Control Service gRPC API - Segment registration.    This API is only exposed by core ASes and only on the SCION    dataplane.</name>
        <artwork><![CDATA[
service SegmentRegistrationService {
    // SegmentsRegistration registers segments at the remote.
    rpc SegmentsRegistration(SegmentsRegistrationRequest) returns (
        SegmentsRegistrationResponse) {}
}

message SegmentsRegistrationRequest {
    message Segments {
        // List of path segments.
        repeated PathSegment segments = 1;
    }

    // Mapping from path segment type to path segments.
    // The key is the integer representation of the SegmentType enum.
    map<int32, Segments> segments = 1;
}

message SegmentsRegistrationResponse {}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-13">
        <name>Control Service gRPC API - Segment creation</name>
        <artwork><![CDATA[
service SegmentCreationService {
    // Beacon sends a beacon to the remote control service.
    rpc Beacon(BeaconRequest) returns (BeaconResponse) {}
}

message BeaconRequest {
    // Beacon in form of a partial path segment.
    PathSegment segment = 1;
}

message BeaconResponse {}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-14">
        <name>Control Service gRPC API - Segment representation</name>
        <artwork><![CDATA[
message PathSegment {
    // The encoded SegmentInformation. It is used for signature input.
    bytes segment_info = 1;
    // Entries of ASes on the path.
    repeated ASEntry as_entries = 2;
}

message SegmentInformation {
    // Segment creation time set by the originating AS. Segment
    // expiration time is computed relative to this timestamp.
    // The timestamp is encoded as the number of seconds elapsed
    // since January 1, 1970 UTC.
    int64 timestamp = 1;
    // The 16-bit segment ID integer used for MAC computation.
    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 follows:
    //
    //  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
    //
    proto.crypto.v1.SignedMessage signed = 1;
    // The unsigned part of the AS entry.
    proto.control_plane.v1.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 HopEntry {
    // Material to create the data-plane Hop Field.
    HopField hop_field = 1;
    // MTU on the ingress link.
    uint32 ingress_mtu = 2;
}

message PeerEntry {
    // ISD-AS of peer AS. This is used to match peering segments
        // during path construction.
    uint64 peer_isd_as = 1;
    // Remote peer interface identifier. This is used to match
    // peering segments
    // during path construction.
    uint64 peer_interface = 2;
    // MTU on the peering link.
    uint32 peer_mtu = 3;
    // Material to create the data-plane Hop Field
    HopField hop_field = 4;
}

message HopField {
    // Ingress interface identifier.
    uint64 ingress = 1;
    // Egress interface identifier.
    uint64 egress = 2;
    // 8-bit encoded expiration offset relative to the segment
        // creation timestamp.
    uint32 exp_time = 3;
    // MAC used in the dataplane to verify the Hop Field.
    bytes mac = 4;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-15">
        <name>Control Service gRPC API - Signed ASEntry representation</name>
        <artwork><![CDATA[
enum SignatureAlgorithm {
    // Unspecified signature algorithm. This value is never valid.
    SIGNATURE_ALGORITHM_UNSPECIFIED = 0;
    // ECDS with SHA256.
    SIGNATURE_ALGORITHM_ECDSA_WITH_SHA256 = 1;
    // ECDS with SHA384.
    SIGNATURE_ALGORITHM_ECDSA_WITH_SHA384 = 2;
    // ECDS with SHA512.
    SIGNATURE_ALGORITHM_ECDSA_WITH_SHA512 = 3;
}

// Low-level representation of HeaderAndBody used for signature
// computation input. This should not be used by external code.
message HeaderAndBodyInternal {
    // Encoded header suitable for signature computation.
    bytes header = 1;
    // Raw payload suitable for signature computation.
    bytes body = 2;
}

message Header {
    // Algorithm used to compute the signature.
    SignatureAlgorithm signature_algorithm = 1;
    // Optional arbitrary per-protocol key identifier.
    bytes verification_key_id = 2;
    // Optional signature creation timestamp.
    google.protobuf.Timestamp timestamp = 3;
    // Optional arbitrary per-protocol metadata.
    bytes metadata = 4;
    // Length of associated data that is covered by the signature, but
    // is not included in the header and body. This is zero, if no
    // associated data is covered by the signature.
    int32 associated_data_length = 5;
}

message ASEntrySignedBody {
    // ISD-AS of the AS that created this AS entry.
    uint64 isd_as = 1;
    // ISD-AS of the downstream AS.
    uint64 next_isd_as = 2;
    // The required regular hop entry.
    HopEntry hop_entry = 3;
    // Optional peer entries.
    repeated PeerEntry peer_entries = 4;
    // Intra AS MTU.
    uint32 mtu = 5;
    // Optional extensions.
    proto.control_plane.v1.PathSegmentExtensions extensions = 6;
}

message VerificationKeyID {
    uint64 isd_as = 1;
    bytes subject_key_id = 2;
    uint64 trc_base = 3;
    uint64 trc_serial = 4;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <t>In case of failure, gRPC calls return an error as specified by the gRPC framework. That is, a non-zero status code and an explanatory string.</t>
    </section>
    <section numbered="false" anchor="app-b">
      <name>SCION Data Plane use by the SCION Control Plane</name>
      <t>The SCION Control Plane RPC APIs rely on QUIC connections carried by the SCION dataplane. The main difference between QUIC over native UDP and QUIC over UDP/SCION is the need for a UDP/SCION connection initiator to identify the relevant peer (service resolution) and to select a path to it. Since the Control Service is itself the source of path segment information, the following bootstrapping strategies apply:</t>
      <ul spacing="normal">
        <li>
          <t>Neighboring ASes craft one-hop-paths directly. This allows multihop paths to be constructed and propagated incrementally.</t>
        </li>
        <li>
          <t>Constructed multihop paths are registered with the Control Service at the origin core AS. The path to that AS is the very path being
registered.</t>
        </li>
        <li>
          <t>Paths to far ASes are available from neighboring ASes. Clients obtain paths to remote ASes from their local Control Service.</t>
        </li>
        <li>
          <t>Control services respond to requests from remote ASes by reversing the path via which the request came.</t>
        </li>
        <li>
          <t>Clients find the relevant Control Service endpoint by resolving a "service address" (that is an address where the <tt>DT/DL</tt> field of the common header is set to 1/0 (see <xref target="I-D.dekater-scion-dataplane"/>).</t>
        </li>
      </ul>
      <t>The mechanics of service address resolution are the following:</t>
      <ul spacing="normal">
        <li>
          <t>To resolve the address of the control service at a given AS, a client sends a ServiceResolutionRequest RPC (which has no parameters) to an endpoint address constructed as follows:
          </t>
          <ul spacing="normal">
            <li>
              <t>Common Header:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Path type: SCION (0x01)</t>
                </li>
                <li>
                  <t>DT/DL: "Service" (0b0100)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Address Header:
              </t>
              <ul spacing="normal">
                <li>
                  <t>DstHostAddr: "SVC_CS" (0x0002)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>UDP Header:
              </t>
              <ul spacing="normal">
                <li>
                  <t>DstPort: 0</t>
                </li>
              </ul>
            </li>
          </ul>
        </li>
        <li>
          <t>The ingress border router at the destination AS resolves the service destination to an actual endpoint address. This document does not mandate any specific method for this resolution.</t>
        </li>
        <li>
          <t>The ingress border router forwards the message to the resolved address.</t>
        </li>
        <li>
          <t>The destination service responds to the client with a ServiceResolutionResponse. That response contain one or more transport options.</t>
        </li>
        <li>
          <t>The client uses the address and port from the "QUIC" option to establish a QUIC connection, which can then be used for regular RPCs.</t>
        </li>
      </ul>
      <t>The following code block provides the full service resolution API in the Protobuf message format.</t>
      <figure anchor="_figure-16">
        <name>Service Resolution gRPC API definition</name>
        <artwork><![CDATA[
package proto.control_plane.v1;

// A ServiceResolutionRequest must always fit within a UDP datagram. If
// the request does not fit, there is no mechanism for clients and
// servers to establish control-plane reachability.
message ServiceResolutionRequest {}

// A ServiceResolutionResponse must always fit within a UDP datagram. If
// the response does not fit, there is no mechanism for clients and
// servers to establish control-plane reachability.
message ServiceResolutionResponse {
    // Supported transports to reach the service,
    //
    // List of known transports:
    // - QUIC
    //
    // Unknown values should be ignored by clients.
    map<string, Transport> transports = 1;
}

message Transport {
    // Protocol specific server address descriptor.
    //
    // Supported address format for QUIC:
    //  192.168.0.1:80
    //  [2001:db8::1]:80
    //
    //  Missing ports / zero port / invalid port values should be
    // treated by clients as errors.
    string address = 1;
}

]]></artwork>
      </figure>
      <t><br/></t>
    </section>
    <section numbered="false" anchor="app-c">
      <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 Control 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>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <t>Changes made to drafts since ISE submission. This section is to be removed before publication.</t>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-06">
        <name>draft-dekater-scion-controlplane-06</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>New section: Path MTU
-New section: Monitoring Considerations</t>
          </li>
          <li>
            <t>Completed description of Control Services gRPC API in appendix</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Introduction: clarify goal of the document</t>
          </li>
          <li>
            <t>Clarify typical vs recommended-limits values for best PCB set size and for certificate validity duration.</t>
          </li>
          <li>
            <t>Clarify text representation of ISD-AS</t>
          </li>
          <li>
            <t>General rewording</t>
          </li>
          <li>
            <t>Added reference to SCIONLab as a testbed for implementors</t>
          </li>
          <li>
            <t>Introduced this change log</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-05">
        <name>draft-dekater-scion-controlplane-05</name>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Clarify beaconing fast retry at bootstrapping</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-04">
        <name>draft-dekater-scion-controlplane-04</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>Clarified selection of MAC including a default algorithm</t>
          </li>
          <li>
            <t>New section: PCB validity</t>
          </li>
          <li>
            <t>New section: configuration</t>
          </li>
          <li>
            <t>New section: Path Discovery Time and Scalability</t>
          </li>
          <li>
            <t>New section: Effects of Clock Inaccuracy</t>
          </li>
          <li>
            <t>New appendix: Control Service gRPC API</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Introduction: Added overview of SCION components</t>
          </li>
          <li>
            <t>Clarified path reversibility, link types, interface IDs</t>
          </li>
          <li>
            <t>Fixed private AS range typo</t>
          </li>
          <li>
            <t>Clarified PCB selection policies and endpoint requirements</t>
          </li>
          <li>
            <t>Clarified PCB propagation</t>
          </li>
          <li>
            <t>General edits to make terminology consistent, remove duplication and rationalize text</t>
          </li>
          <li>
            <t>Removed forward references</t>
          </li>
          <li>
            <t>Added RFC2119 compliant terminology</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y923YbR5Yo+I6vyKHWOiYgAOJFkm36cpoSJZtdsqQW6aqu
6tUjJYAEmSUAic5MUGaJ6m8552nWPMxPnP6x2deIHZkBgLTlqdO9ht1lkUBm
XHbs2PfLYDDo1Hk9y46SnbOnp69eJk+LRV0Ws+T1LF1kO510NCqzK//t653O
OK2zi6K8PkryxbToVKvRPK+qHN67Xmb44SRbZvCfRd3pTIrxIp3Dp5MyndaD
SfYeXi4H1RgeH4x5qiXONNh73IFpDjv3krTMUpjw9M358x3480NRvr8oi9US
Pnud1pfJ8Qd4InmZ1fhNvrhI3vyw03mfXcOfk6PkdAETLLJ6cIIzdq6yxSo7
gmGS7WPAQ7yFnTdZlaXl+DL5AV+ib+ZpPoNvlumivPiHvKynw6K8oG/wQfjm
sq6X1dGDBx8+fBjmGX//AN8a4AP5VfbgQzZ6QO8/2OnAevL6cjWCFwkYaVUV
4zyt4dcHAp3l29PBCT45A5hVtZmi+caQxxrmRfDug21AH17W89lOp5Ou6sui
POokgySB86uOkqfDZJIlf8D3YAHww6f4tCjzRdb4CvZ5lDB6HPs18XcZg238
dpK9pVX8w8X8l+H4smPmejlM3qyqOr9YFLPczvYyHxeztPXlLeZb5ON/oO3i
Idi5zobJj3n9NzvLWTpfZTPzMY1/vEiX6XWanF1XdTavgtEv4dF/SPmBIaBa
p7Moyjms4gowLUkA8sMQ5pO0Tgng8a+X73P84s3zpw8fHx7Ir48OvtrTX79+
pJ9+vbenn369v/8Qf7148/rpEa1PLzJ+0k/SRVLAPRxUxaocZ8lqAcsrq3SW
wLfJtIS9I+7v0JuwQHjxYO/gkAdKy4sMEE7x7aJcjhG54MtlWdTFYTjfa/wM
jip5sppOYY7kRbq4WKUXWfLDKgdcwXlhn8nhrSajGUarKQDpCv+4gKXO4YoO
LnCwir8/xLUAqVpk4zpcjHyYuEW9yWBN2WKcNWZ/GJ19zK/jhsfF/AHQL5kR
hnrQ6SDFW3PUdLPlRAvY8lWefaBnzk4Gx2cDuK6AxHOgilW4YMZkeApObJIc
nyFS65O3WjKucWjQ8UG2eMAk40GZ8elXD/JqAkuwqyAI/vjz8fnBQbig88sM
QDtfzrJaT7Au+MI11nOwZj050b79veH+3t6XD77+8qvB4WDvcH+wB0j91WCP
3qqyMs8qhCfPjoB68vIoCZ/+csBI4igU/QzkX7nUL4bJ08tVWrtP+WK/SFdw
7nXjO7rdz85/TP6yghUAJYoO+dMweZFdLJTEuTF/Ssv3q6r53e3GPBkmT1LY
cWPIk/QqnzS+ufWAP6ar6jJrLZPHbH1Jw76q4TSv4Dr+QGO/z5KfmTTk9TXs
72KSjVZANKMzBuQzWUtBk01EtDnm62HyE7w+a23iNeBf2frudqA5HsLrZZlf
NMY8npQ5EMbGd5ExgcDu7x84Ynz49Vfy6+Ovv36sFPhg/0v99eGXRBSfFLPZ
m7wYHAiddrcKL9UkhzXgnoppkibVOJ1lg2mZZUkJN7+Yg4SSLi+jV+p9Oh/O
p9PhGKj4cPy3B//+vsrmKE6Mgau8v36A0xajtHozoFHf4qhvedThcjLdfoWe
DBMe4z/+Z9UA2ZP/+L+BCTe/bbz/Cnh4DvJX2sTuVzPELfMl0ZEXx08C6OiH
wKiPQSr7pR78kMEFI8buJLrkHEjaKJuENGgvCrA8y7JflrOizIb4K9GjdFTV
ZTqukWCukAQ++Prg0deHjx5tB88/DpM/FB+ae/vHYnFxWcAK//ChuOvdhRF/
ALnwP/6fdPA6LSdFc+gVYOnxumf+fjTs+TD5U142CcBzQLX/+L+KvAq/vPUy
n5dZ3lpkXV/maRV+978rXfyN5KYzGAwSRc9O5/wSIKlICsJ2NS7zUVYlNTFm
o54hIcEPl6DSDFJUafqwHhRG4OKn+SJZsIJDKkpeg1wDHFFE590zoBTpKJ/B
9vo6bJ9kkNMKxG66eq8WfBsv/G2UIavuEL51KwDak4+T8WWKO4BNgcQ+rvBL
nizHxad1kteg9lzBVnDFiagiTroYjIFdjGZZAtrjsoCNyFtjAOEYLloF88Ds
WbZI5qtZnYOEwgMVS1xa1YcX4X1U53BN+Ok8/xsvG5aiwMBXqmFy3oImrBIE
piWMlOMqQNIDkl2NUZiTMSuesCIwzdP38vE8Sa9AM6C1w2ZwcreFIZ5nltBx
XBQgfgvEIto2galIxqD/guTFUyxQjKZNVtkFyW3Jh0vAGQIKjLMAkAAg5yPQ
yyZ4+AWuG1BhgmvjxeKS4IZWcwD/MgXMhkFyehvJaJqwLpg00A52vqoqOKvL
4gOvgCkqw5Nglc7yv8Gs9SVoyReXsJIUjhTnxbW719zCUeXmzU3oiTK7AEQB
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
mFKa0e0oshijvNiJS1uCl8jmAhOWJ0CtIZx4cEZZjpMC97rkEDPdKLfnM2e0
vOpvv/4nlqo7K+a//fpfQSCHUd4ZeM8rkNB3JxSk0r9nT1Tt0sbWNt4s2mcA
2FxMsxmRv5J7gry2bOJDMgOlzyt1giIhSl1jyO5r6CwmN6fWfWxsCKz6MUM8
QQrv82mMhClD18OfdVj+YJcODrTGgo8fMma+FlcwsUSaU4vsl1ey5UmnzWcq
09Q3nBDwrq+MMqbEcLKBZxnmO8Z5oTA6+jxnybKP1ThROPnQJ29DoLvqg8bE
tT1ib7gW6EV/F2588IvBVaR2gVsBCKtTtop5jUjTtHUiB3RejRcYKFQBErGi
5FY2jD08ieEvNoexzlLulAWTV+tl55rcG6qV5jrp/ZRksY7PiqLq7Kn31VeQ
5Cu+y5xdtT+Lq10jjcXb55nKiNiCHJ4oaS7kaMQt5ZOERb74qD4J84zmnzPE
LUg5OK4xhcxJWzAr4b5BUnGlCgvNqLrxZE8zcxCnwYLrwQNXiGAAWWI4aXLU
UM6cyeLUUh98PUlB77HYXQszyHq+PmhHvRd4IbgC6iEvlRO5VtE7Xa1YE01Z
eo7YFCAUw/nmWQQ24HiEtgxbVB2qTLkAE7BBjHAlgZPFVNIs/aLnFaU4etAg
tBwgFUR8/yrXBMJCEbly1+9ztFFe1YrwKeYmaHvETGqZpOrE0Vk05hlmY08r
/z2LqwiNHdsQO5yr3GSDBLQDvZm0zly73cAP0adcQnQJW4Q0lSAMu4AHoyxC
Dy4qO7OrwYDASvJqLfWj4tday56nBVAja/Ao8eakLPSmQQZ2GzDdRZFLwKVs
v0ePRs66WJDS/RoH8sYPJChT/+hRgjFKlAOu3gFdpwZL6L2Qoq3Y27nIquIq
OS2AlSFYInwCJwNQAktCtucNxOYQFW0WBSlHkAZxyKLRcXZVQbV5yZ2Nc9pD
bzIhMXIp8hBloyFLWvRZWzYjwSAKgW9gdjxLZ3LnwLcm4vsspDy9/47HQpES
UCx8Gw7IMJa+2XcS5I3zhniB1THYZIzfkn2gyp0EsukTFz2qKGSIjRe4qzmz
o40VzNlbn0luwSQzM5KXMid4iKHJCAX42SoOBoone+gDxNOvZPNGBaWCvwd5
/6kPSldIHQaSpbz/i0x8GZnU9aZjjNBJSjk/A2mCaOnGbTRruIe5NDdscrd7
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
ui52Dso9AgA=

-->

</rfc>
