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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   message BeaconRequest {
       PathSegment segment = 1;
   }

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

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

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

       map<int32, Segments> segments = 1;
   }

   message SegmentsRegistrationResponse {}
]]></artwork>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentType</tt>: Specifies the type of the path segment that must be registered. Currently, only the following type is used:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>SEGMENT_TYPE_DOWN</tt>: Specifies a down-segment.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><tt>map&lt;int32, Segments&gt; segments</tt>: Represents a separate list of segments for each path segment type. The key is the integer representation of the corresponding <tt>SegmentType</tt>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="lookup">
      <name>Path Lookup</name>
      <t>The <em>path lookup</em> is a fundamental building block of SCION's path management, as it enables endpoints to obtain path segments found during path exploration and registered during path registration. This allows the endpoints to construct end-to-end paths from the set of possible path segments returned by the path lookup process. The lookup of paths still happens in the control plane, whereas the construction of the actual end-to-end paths happens in the data plane.</t>
      <section anchor="lookup-process">
        <name>Lookup Process</name>
        <t>An endpoint (source) that wants to start communication with another endpoint (destination), requires up to three path segments:</t>
        <ul spacing="normal">
          <li>
            <t>An up-path segment to reach the core of the source ISD (only if the source endpoint is a non-core AS),</t>
          </li>
          <li>
            <t>a core-path segment to reach
            </t>
            <ul spacing="normal">
              <li>
                <t>another core AS in the source ISD, in case the destination AS is in the same source ISD, or</t>
              </li>
              <li>
                <t>a core AS in a remote ISD, if the destination AS is in another ISD, and</t>
              </li>
            </ul>
          </li>
          <li>
            <t>a down-path segment to reach the destination AS.</t>
          </li>
        </ul>
        <t><strong>Note:</strong> The actual number of required path segments depends on the location of the destination AS as well as on the availability of shortcuts and peering links. More information on combining and constructing paths will be provided by the SCION Data Plane Specification document.</t>
        <t>The process to look up and fetch path segments consists of the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>First, the source endpoint queries the control service in its own AS (i.e., the source AS) for the required segments. The control service has up-path segments stored in its path database. Additionally, the control service checks if it has appropriate core- and down-path segments in store as well; in this case it returns them immediately.</t>
          </li>
          <li>
            <t>If there are no appropriate core-segments and down-segments, the control service in the source AS queries the control services of the reachable core ASes in the source ISD, for core-path segments to core ASes in the destination ISD (which is either the own or a remote ISD). To reach the core control services, the control service of the source AS uses the locally stored up-path segments.</t>
          </li>
          <li>
            <t>Next, the control service of the source AS combines up-path segments with the newly retrieved core-path segments. The control service then queries the control services of the remote core ASes in the destination ISD, to fetch down-path segments to the destination AS. To reach the remote core ASes, the control service of the source AS uses the previously obtained and combined up- and core segments.</t>
          </li>
          <li>
            <t>Finally, the control service of the source AS returns all retrieved path segments to the source endpoint.</t>
          </li>
          <li>
            <t>Once it has obtained all path segments, the endpoint combines them into an end-to-end path in the data plane.</t>
          </li>
        </ol>
        <t><xref target="_table-3"/> below shows which control service provides the source endpoint with which type of path segment.</t>
        <table anchor="_table-3">
          <name>Control services responsible for different types of path segments</name>
          <thead>
            <tr>
              <th align="left">Segment Type</th>
              <th align="left">Responsible control service(s)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Up-segment</td>
              <td align="left">Control service of the source AS</td>
            </tr>
            <tr>
              <td align="left">Core-segment</td>
              <td align="left">Control service of core ASes in source ISD</td>
            </tr>
            <tr>
              <td align="left">Down-segment</td>
              <td align="left">Control service of core ASes in destination ISD (either the local ISD or a remote ISD)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sequence-of-lookup-requests">
          <name>Sequence of Lookup Requests</name>
          <t>The overall sequence of requests to resolve a path should be as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Request up-segments for the source endpoint at the control service of the source AS.</t>
            </li>
            <li>
              <t>Request core-segments, which start at the core ASes that are reachable with up-segments, and end at the core ASes in the destination ISD. If the destination ISD coincides with the source ISD, this step requests core segments to core ASes that the source endpoint cannot directly reach with an up-segment.</t>
            </li>
            <li>
              <t>Request down-segments starting at core ASes in the destination ISD.</t>
            </li>
          </ol>
        </section>
        <section anchor="caching">
          <name>Caching</name>
          <t>For the sake of efficiency, the control service of the source AS should cache each returned path segment request. Caching ensures that path lookups are fast for frequently used destinations. The use of caching is also essential to ensure that the path-lookup process is scalable and can be performed with low latency.</t>
          <t>In general, to improve overall efficiency, the control services of all ASes should do the following:</t>
          <ul spacing="normal">
            <li>
              <t>Cache the returned path segments.</t>
            </li>
            <li>
              <t>Send requests in parallel when requesting path segments from other control services.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="behavior-of-actors-in-the-lookup-process">
        <name>Behavior of Actors in the Lookup Process</name>
        <t>As described above, the source endpoint resolves paths with a sequence of segment requests to the control service of the source AS. The control service in the source AS answers directly, or forwards these requests to the responsible control services of core ASes. In SCION, the instances that handle these segment requests at the control services are called <em>source AS segment-request handler</em> and <em>core AS segment-request handler</em>, respectively. This section specifies the behavior of the segment-request handlers in the lookup process. First, the use of wildcards in the lookup process is briefly addressed.</t>
        <section anchor="wildcard">
          <name>Use of Wildcard Addresses in the Lookup Process</name>
          <t>Endpoints can use wildcard addresses to designate any core AS in path-segment requests. The segment-request handlers must expand these wildcard addresses and translate them into one or more actual addresses. <xref target="_table-4"/> below shows who is responsible for what.</t>
          <t><strong>Note:</strong> For general information on the use of wildcard addresses in SCION, see <xref target="serv-disc"/>.</t>
          <table anchor="_table-4">
            <name>Use of wildcards in path segments requests</name>
            <thead>
              <tr>
                <th align="left">Segment Request</th>
                <th align="left">Wildcard Represents</th>
                <th align="left">Expanded/Translated By</th>
                <th align="left">Translated Into</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Up-segment</td>
                <td align="left">"Destination" core AS (where up-segment ends)</td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address destination core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core-segment</td>
                <td align="left">Source core AS (where core-segment starts)<sup>1</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core-segment</td>
                <td align="left">Destination core AS (where core-segment ends)</td>
                <td align="left">Control service of the <em>source core AS</em></td>
                <td align="left">Actual address destination core AS in destination ISD</td>
              </tr>
              <tr>
                <td align="left">Down-segment</td>
                <td align="left">"Source" core AS (where down-segment starts)<sup>2</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in destination ISD</td>
              </tr>
            </tbody>
          </table>
          <t>1) Includes all core ASes for which an up-segment from the source AS exists.<br/>
2) Includes all core ASes in destination ISD with a down-segment to destination AS.</t>
        </section>
        <section anchor="segment-request-handler-of-a-non-core-source-as">
          <name>Segment-Request Handler of a Non-Core Source AS</name>
          <t>When the segment-request handler of the control service of a <em>non-core</em> source AS receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Determine the requested segment type.</t>
            </li>
            <li>
              <t>In the case of an up-segment request, look up matching up-segments in the path database and return them.</t>
            </li>
            <li>
              <t>In the case of a core-segment request from a source core AS to a destination core AS:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for each reachable core AS in the source ISD.</t>
                </li>
                <li>
                  <t>For each core-segment request,
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching core-segments from cache;</t>
                    </li>
                    <li>
                      <t>otherwise, request the core-segments from the control services of each reachable core AS at the source (start) of the core-segment. Add the retrieved core-segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>In the case of a down-segment request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for every core AS in the destination ISD (destination ISD refers to the ISD to which the destination endpoint belongs).</t>
                </li>
                <li>
                  <t>For each segment request,
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching down-segments from cache;</t>
                    </li>
                    <li>
                      <t>otherwise, request the down-segment from the control services of the core ASes at the source (start) of the down-segment. Sending the request may require looking up core-segments to the source core AS of the down-segment. Add the retrieved down-segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="segment-request-handler-of-a-core-as">
          <name>Segment-Request Handler of a Core AS</name>
          <t>When the segment-request handler of a <em>core AS</em> control service receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validate the request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The source of the path segment must be this core AS.</t>
                </li>
                <li>
                  <t>The request must either be
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>for a core-segment to a core AS in this ISD or another ISD, or</t>
                    </li>
                    <li>
                      <t>for a down-segment to an AS in this ISD.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the destination is a core or wildcard address, then load matching core-segments from the path database and return.</t>
            </li>
            <li>
              <t>Otherwise, load the matching down-segments from the path database and return.</t>
            </li>
          </ol>
          <t><xref target="app-b"/> shows by means of an illustration how the lookup of path segments in SCION works.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As described previously, the goal of SCION’s beaconing process in the control plane is to securely discover and disseminate paths between any two ASes. This section describes security considerations for SCION's control plane, that focuses on <em>inter</em>-domain routing. SCION does not provide intra-domain routing, nor does it provide end-to-end payload encryption. These topics lie therefore outside the scope of this section.</t>
      <t>This section focuses on three kinds of security risks in the control plane. The first risk is when an adversary controls one or all core ASes of an ISD and tries to manipulate the beaconing process from the top down (see <xref target="topdown-manipulate"/>). Also "ordinary" (non-core) adversaries that try to manipulate the beaconing process pose a risk to the control plane (see <xref target="manipulate-beaconing"/>). The third kind of security risks are Denial of Services (DoS) attacks, where attackers overload different parts of the infrastructure (see <xref target="dos-cp"/>).</t>
      <section anchor="topdown-manipulate">
        <name>Manipulation of the Beaconing Process by a Core Adversary</name>
        <t>The first kind of risk to the beaconing process comes from an adversary controlling one or more core ASes in an ISD. If the adversary stops all core AS(es) within an ISD from propagating PCBs, the discovery of new paths halts. In this case, downstream ASes will notice that PCBs are no longer being propagated, but all previously discovered (and still valid) paths remain usable for data-plane forwarding until they expire. This is an unlikely scenario, as it would require compromise of all core ASes within an ISD.</t>
      </section>
      <section anchor="manipulate-beaconing">
        <name>Manipulation of the Beaconing Process by a Non-Core Adversary</name>
        <t>This section examines several possible approaches open to an "ordinary" non-core adversary to manipulate the beaconing process in the SCION control plane, and shows for each case to what extent SCION's design can prevent the corresponding attack or help to mitigate it.</t>
        <ul spacing="normal">
          <li>
            <t>Path hijacking through interposition (see <xref target="path-hijack"/>)</t>
          </li>
          <li>
            <t>Creation of spurious ASes and ISDs (see <xref target="fake-ases"/>)</t>
          </li>
          <li>
            <t>Peering link misuse (see <xref target="peer-link-misuse"/>)</t>
          </li>
          <li>
            <t>Manipulation of the path selection process (see <xref target="manipulate-selection"/>)</t>
          </li>
        </ul>
        <section anchor="path-hijack">
          <name>Path Hijacking through Interposition</name>
          <t>An malicious AS M might try to manipulate the beaconing process between two neighbor ASes A and B, with the goal to hijack traffic to flow via M. If M can interpose itself on the path between A and B, then it could attempt several potential attacks:</t>
          <ul spacing="normal">
            <li>
              <t>The adversary M could intercept and disseminate a PCB on its way from A to the neighboring AS B, and inject its own AS entry into the PCB toward downstream ASes.</t>
            </li>
            <li>
              <t>The adversary could modify the hop fields of an already existing path, in order to insert its own AS in the path.</t>
            </li>
            <li>
              <t>The adversary could fully block traffic between AS A and AS B, in order to force traffic redirection through an alternate path that includes its own AS.</t>
            </li>
          </ul>
          <t>The first type of attack is detectable and blocked by downstream ASes (e.g. B), because a PCB disseminated by AS A towards AS B contains the "Next ISD AS" field in the entry of AS A, pointing to AS B, and protected by A's signature. If M manipulates the PCB while in flight from A to B, then verification of the manipulated inbound PCBs will fail at AS B, as the adversary's PCBs cannot contain A's correct signature.
The second type of attack is made impossible by the hop field's MAC, which protects the hop field's integrity and chains it with the previous hop fields on the path.
The third type of attack generally cannot be prevented, however the alternate path would be immediately visible to endpoints, as traffic must include hop fields from AS M.</t>
        </section>
        <section anchor="fake-ases">
          <name>Creation of Spurious ASes and ISDs</name>
          <t>An alternative scenario is when an adversary tries to introduce and spoof a nonexistent ASes. This would enable the adversary to send traffic with the spoofed AS as a source, allowing the adversary to complicate the detection of its attack and to plausibly deny the misbehavior.</t>
          <t>However, spoofing a new AS requires a registration of that AS with the ISD core to obtain a valid AS certificate; otherwise the adversary cannot construct valid PCBs. As this registration includes a thorough check and authentication by a CA, this cannot be done stealthily, which defeats the original purpose.</t>
          <t>Similarly to creating a fake AS, an adversary could try to introduce a new, malicious ISD. This involves the generation of its own TRC, finding core ASes to peer with, and convincing other ISDs of its legitimacy to accept the new TRC. Although this setup is not entirely impossible, it requires substantial time and effort, and may need the involvement of more than one malicious entity. Here, the "costs" of setting up the fake ISD may outweigh the benefits.</t>
        </section>
        <section anchor="peer-link-misuse">
          <name> Peering Link Misuse</name>
          <t>The misuse of a peering link by an adversary represents another type of attack. Consider the case where AS A wants to share its peering link only with one of its downstream neighbors, AS B, and therefore selectively includes the peering link only in PCBs sent to B. An adversary may now try to gain access to this peering link by prepending the relevant PCBs to its own path. For this, the adversary needs to be able to (1) eavesdrop on the link from A to B, and (2) obtain the necessary hop fields by querying a control service and extracting the hop fields from registered paths.</t>
          <t>Even if an adversary succeeds in misusing a peering link as described above, SCION is able to mitigate this kind of attack: Each AS includes an egress interface as well as specific “next hop” information to the PCB before disseminating it further downstream. If a malicious entity tries to misuse a stolen PCB by adding it to its own segments, verification will fail upstream as the egress interface mismatches. Therefore, the peering link can only be used by the intended AS.</t>
        </section>
        <section anchor="manipulate-selection">
          <name>Manipulation of the Path-Selection Process</name>
          <t>Endpoint path control is one of the main benefits of SCION compared to the current Internet, as SCION endpoints can select inter-domain forwarding paths for each packet. However, with the benefits of path selection comes the risk of endpoints selecting non-optimal paths. This section discusses some mechanisms with which an adversary can attempt to trick endpoints downstream (in the direction of beaconing) into choosing non-optimal paths. The goal of such attacks is to make paths that are controlled by the adversary more attractive than other available paths.</t>
          <t>In SCION, overall path selection is the result of three steps. First, each AS selects which PCBs are further forwarded to its neighbors. Second, each AS chooses the paths it wants to register at the local control service (as up-segments) and at the core control service (as down-segments). Third, the endpoint performs path selection among all available paths resulting from a path lookup process. The following text describes attacks that aim at influencing the path-selection process.</t>
          <t>These attacks are only successful if the adversary is located within the same ISD and upstream relative to the victim AS. It is not possible to attract traffic away from the core as traffic travels upstream towards the core. Furthermore, the attack may either be discovered downstream (e.g., by seeing large numbers of paths becoming available), or during path registrations. After detection, non-core ASes will be able to identify paths traversing the adversary AS and avoid these paths.</t>
          <t><strong>Announcing Large Numbers of Path Segments</strong> <br/>
This attack is possible if the adversary controls multiple (at least two) ASes. The adversary can create a large number of links between the ASes under its control, which do not necessarily correspond to physical links. This allows the adversary to multiply the number of PCBs forwarded to its downstream neighbor ASes. This in turn increases the chance that one or several of these forwarded PCBs are selected by the downstream ASes.</t>
          <t>In general, the number of PCBs that an adversary can announce this way scales exponentially with the number of consecutive ASes the adversary controls. However, this also decreases their chance of being chosen by a downstream AS for PCB dissemination or by an endpoint for path construction, as these relatively long paths have to compete with other, shorter paths. Furthermore, both endpoints and downstream ASes can detect poorer quality paths in the data plane and switch to better paths.</t>
          <t><strong>Wormhole Attack</strong> <br/>
A malicious AS M1 can send a PCB not only to their downstream neighbor ASes, but also out-of-band to another, non-neighbor colluding malicious AS M2. This creates new segments to M2 and M2's downstream neighbor ASes, simulating a link between M1 and M2 which may not correspond to an actual link in the network topology.</t>
          <t>Similarly, a fake path can be announced through a fake peering link between two colluding ASes, even if in different ISDs. An adversary can advertise fake peering links between the two colluding ASes, thus offering short paths to many destination ASes. Downstream ASes might have a policy of preferring paths with many peering links and thus are more likely to disseminate PCBs from the adversary. Similarly, endpoints are more likely to choose short paths that make use of peering links. In the data plane, whenever the adversary receives a packet containing a fake peering link, it can transparently exchange the fake peering hop fields with valid hop fields to the colluding AS. To avoid detection of the path alteration by the receiver, the colluding AS can replace the added hop fields with the fake peering link hop fields the sender inserted.</t>
          <t>To defend against this attack, methods to detect the wormhole attack are needed.  Per link or path latency measurements can help reveal the wormhole and render the fake peering link suspicious or unattractive. Without specific detection mechanisms these so-called wormhole attacks are unavoidable in routing.</t>
        </section>
      </section>
      <section anchor="dos-cp">
        <name>Denial of Service Attacks</name>
        <t>The beaconing process in the SCION control plane relies on control-plane communication. ASes exchange control-plane messages within each other when propagating PCBs to downstream neighbors,  when registering PCBs as path segments at the core control services, or during core path lookup. Volumetric DoS attacks, where attackers overload a link, may make it difficult to exchange these messages. SCION limits the impact of volumetric DoS attacks, which aim to exhaust network bandwidth on links; in this case, ASes can switch to alternative paths that do not contain the congested links. In addition, reflection-based attacks are prevented, as thanks to path-awareness, response packets are returned on the same path to the actual sender.</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 a control service server, by opening many connections to this server. Possible means to mitigate this 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.
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 must match the local ISD and the number of path segments must 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 services are designed to be deployed on replicated instances so that requests can be balanced.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The ISD and SCION AS number are SCION-specific numbers. They are currently allocated by Anapaya Systems, a provider of SCION-based networking software and solutions (see <eref target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">Anapaya ISD AS assignments</eref>). This task is currently being transitioned from Anapaya to the SCION Association.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.scion-components" target="https://datatracker.ietf.org/doc/draft-rustignoli-panrg-scion-components/">
          <front>
            <title>SCION Components Analysis</title>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="I-D.scion-cppki" target="https://datatracker.ietf.org/doc/draft-dekater-scion-pki/">
          <front>
            <title>SCION Control-Plane PKI</title>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4632">
          <front>
            <title>Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan</title>
            <author fullname="V. Fuller" initials="V." surname="Fuller"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>This memo discusses the strategy for address assignment of the existing 32-bit IPv4 address space with a view toward conserving the address space and limiting the growth rate of global routing state. This document obsoletes the original Classless Inter-domain Routing (CIDR) spec in RFC 1519, with changes made both to clarify the concepts it introduced and, after more than twelve years, to update the Internet community on the results of deploying the technology described. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="122"/>
          <seriesInfo name="RFC" value="4632"/>
          <seriesInfo name="DOI" value="10.17487/RFC4632"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="gRPC" target="https://grpc.io/">
          <front>
            <title>gRPC, an open-source universal RPC framework</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="proto3" target="https://protobuf.dev/programming-guides/proto3/">
          <front>
            <title>Protocol Buffers Language Guide version 3</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CHUAT22" target="https://doi.org/10.1007/978-3-031-05288-0">
          <front>
            <title>The Complete Guide to SCION</title>
            <author initials="L." surname="Chuat" fullname="Laurent Chuat">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Basin" fullname="David Basin">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="P." surname="Mueller" fullname="Peter Mueller">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ISBN" value="978-3-031-05287-3"/>
        </reference>
        <reference anchor="I-D.scion-overview" target="https://datatracker.ietf.org/doc/draft-dekater-panrg-scion-overview/">
          <front>
            <title>SCION Overview</title>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="I-D.scion-dp" target="https://datatracker.ietf.org/doc/draft-dekater-scion-dataplane/">
          <front>
            <title>SCION Data Plane</title>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="RFC5398">
          <front>
            <title>Autonomous System (AS) Number Reservation for Documentation Use</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <date month="December" year="2008"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, two blocks of Autonomous System numbers (ASNs) are reserved for use in examples in RFCs, books, documentation, and the like. This document describes the reservation of two blocks of ASNs as reserved numbers for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5398"/>
          <seriesInfo name="DOI" value="10.17487/RFC5398"/>
        </reference>
        <reference anchor="RFC6996">
          <front>
            <title>Autonomous System (AS) Reservation for Private Use</title>
            <author fullname="J. Mitchell" initials="J." surname="Mitchell"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document describes the reservation of Autonomous System Numbers (ASNs) that are for Private Use only, known as Private Use ASNs, and provides operational guidance on their use. This document enlarges the total space available for Private Use ASNs by documenting the reservation of a second, larger range and updates RFC 1930 by replacing Section 10 of that document.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="6"/>
          <seriesInfo name="RFC" value="6996"/>
          <seriesInfo name="DOI" value="10.17487/RFC6996"/>
        </reference>
        <reference anchor="RFC9473">
          <front>
            <title>A Vocabulary of Path Properties</title>
            <author fullname="R. Enghardt" initials="R." surname="Enghardt"/>
            <author fullname="C. Krähenbühl" initials="C." surname="Krähenbühl"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>Path properties express information about paths across a network and the services provided via such paths. In a path-aware network, path properties may be fully or partially available to entities such as endpoints. This document defines and categorizes path properties. Furthermore, the document identifies several path properties that might be useful to endpoints or other entities, e.g., for selecting between paths or for invoking some of the provided services. This document is a product of the Path Aware Networking Research Group (PANRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9473"/>
          <seriesInfo name="DOI" value="10.17487/RFC9473"/>
        </reference>
      </references>
    </references>
    <?line 1590?>

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

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

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

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

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

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

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

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

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

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

   message HopField {
       uint64 ingress = 1;
       uint64 egress = 2;
       uint32 exp_time = 3;
       bytes mac = 4;
   }
]]></artwork>
    </section>
    <section numbered="false" anchor="app-b">
      <name>Path-Lookup Examples</name>
      <t>To illustrate how the path lookup works, we show two path-lookup examples in sequence diagrams. The network topology of the examples is represented in <xref target="_figure-8"/> below. In both examples, the source endpoint is in AS A. <xref target="_figure-9"/> shows the sequence diagram for the path lookup process in case the destination is in AS D, whereas <xref target="_figure-10"/> shows the path lookup sequence diagram if the destination is in AS G. ASes B and C are core ASes in the source ISD, while E and F are core ASes in a remote ISD. Core AS B is a provider of the local AS, but AS C is not, i.e., there is no up-segment from A to C. "CS" stands for controle service.</t>
      <figure anchor="_figure-8">
        <name>Topology used in the path lookup examples.</name>
        <artwork><![CDATA[
+----------------------------+     +----------------------------+
|                            |     |                            |
|                            |     |                            |
|    +------------------+    |     |    +------------------+    |
|    |      Core        |    |     |    |          Core    |    |
|    |                  |    |     |    |                  |    |
|    | .---.     .---.  |    |     |    |            .---. |    |
|    |(  C  )---(  B  )-----------------------------(  F  )|    |
|    | `+--'     `+-+'---------+   |    |    .---.   `+-+' |    |
|    |  |         | |   |    | +------------(  E  )   | |  |    |
|    |  |         | |   |    |     |    |    `-+-'----+ |  |    |
|    +--|---------|-|---+    |     |    +------|--------|--+    |
|       |         | |        |     |           |        |       |
|       |         | |        |     |           |        |       |
|       |+--------+ |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|     .-++.         |        |     |         .-+-.      |       |
|    (  D  )      .-+-.      |     |        (  G  )-----+       |
|     `---'      (  A  )     |     |         `---'              |
|                 `---'      |     |                            |
|   ISD 1                    |     |                    ISD 2   |
+----------------------------+     +----------------------------+
]]></artwork>
      </figure>
      <figure anchor="_figure-9">
        <name>Sequence diagram illustrating a path lookup for a destination D in the source ISD. The request (core, x, x) is for all pairs of core ASes in the source ISD. Similarly, (down, x, D) is for down-segments between any core AS in the source ISD and destination D.</name>
        <artwork><![CDATA[
+---------+          +---------+          +---------+        +---------+
|Endpoint |          |Source AS|          | Core AS |        | Core AS |
|         |          | CS (A)  |          | CS (B)  |        | CS (C)  |
+----+----+          +----+----+          +----+----+        +-----+---+
    +++                   |                    |                   |
    | |                   |                    |                   |
+---+-+-------+           |                    |                   |
|send requests|           |                    |                   |
| in parallel |           |                    |                   |
+---+-+-------+           |                    |                   |
    | |                   |                    |                   |
    | |  request (up)     |                    |                   |
    | +----------------->+++                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | | reply (up,[A->B]) |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (core,*,*) |                    |                   |
    | +----------------->+++                   |                   |
    | |                  | |request (core,B,*) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(core,[B->C])|                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |reply (core,[B->C])|                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (down,*,D) |                    |                   |
    | +----------------->+++                   |                   |
    | |            +-----+-+-----+             |                   |
    | |            |send requests|             |                   |
    | |            | in parallel |             |                   |
    | |            +-----+-+-----+             |                   |
    | |                  | |                   |                   |
    | |                  | |request (down,B,D) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(down,[B->D])|                   |
    | |                  | |                   |                   |
    | |                  | |                   |request (down,C,D) |
    | |                  | +-------------------+----------------->+++
    | |                  | <-- -- -- -- -- -- -+ -- -- -- -- -- --+++
    | |   reply (down,   | |                   | reply(down,[C->D])|
    | |   [B->D, C->D])  | |                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |                   |                    |                   |
+---+-+----------+        |                    |                   |
|combine segments|        |                    |                   |
+---+-+----------+        |                    |                   |
    | |                   |                    |                   |
    +++                   |                    |                   |
     |                    |                    |                   |
 +---+----+           +---+----+          +----+---+          +----+---+
 +--------+           +--------+          +--------+          +--------+
]]></artwork>
      </figure>
      <figure anchor="_figure-10">
        <name>Sequence diagram illustrating a path lookup for a destination G in a remote ISD. The request (core, x, (2, x)) is for all path segments between a core AS in the source ISD and a core AS in ISD 2. Similarly, (down, (2, x), G) is for down-segments between any core AS in ISD 2 and destination G.</name>
        <artwork><![CDATA[
+---------+     +---------+      +---------+   +---------+   +---------+
|Endpoint |     |Source AS|      | Core AS |   | Core AS |   | Core AS |
|         |     | CS (A)  |      | CS (B)  |   | CS (E)  |   | CS (F)  |
+---+-----+     +----+----+      +----+----+   +----+----+   +----+----+
    |                |                |             |             |
   +++               |                |             |             |
   | |               |                |             |             |
+--+-+------+        |                |             |             |
|   send    |        |                |             |             |
|requests in|        |                |             |             |
| parallel  |        |                |             |             |
+--+-+------+        |                |             |             |
   | |               |                |             |             |
   | |  request (up) |                |             |             |
   | +------------->+++               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |    reply      |                |             |             |
   | | (up,[A->B])   |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(core,*,(2,*)) |                |             |             |
   | +------------->+++    request    |             |             |
   | |              | |(core,B,(2,*)) |             |             |
   | |              | +------------->+++            |             |
   | |              | |<- -- -- -- --+++            |             |
   | |              | | reply (core,  |             |             |
   | |              | | [B->E,B->F])  |             |             |
   | |<- -- -- -- --+++               |             |             |
   | | reply (core,  |                |             |             |
   | | [B->E,B->F])  |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(down,(2,*),G) |                |             |             |
   | +------------->+++               |             |             |
   | |        +-----+-+-----+         |             |             |
   | |        |send requests|         |             |             |
   | |        | in parallel |         |             |             |
   | |        +-----+-+-----+         |   request   |             |
   | |              | |               | (down,E,G)  |             |
   | |              | +---------------+----------->+++            |
   | |              | <- -- -- -- -- -+ -- -- -- --+++            |
   | |              | |               |    reply    |             |
   | |              | |               |(down,[E->G])|             |
   | |              | |               |             |   request   |
   | |              | |               |             | (down,F,G)  |
   | |              | +---------------+-------------+----------->+++
   | |              | < -- -- -- -- --|-- -- -- -- -+ -- -- -- --+++
   | |              | |               |             |    reply    |
   | | reply (down, | |               |             |(down,[F->G])|
   | | [E->G,F->G]) | |               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |               |                |             |             |
+--+-+----+          |                |             |             |
| combine |          |                |             |             |
|segments |          |                |             |             |
+--+-+----+          |                |             |             |
   | |               |                |             |             |
   +++               |                |             |             |
    |                |                |             |             |
+---+----+       +---+----+       +---+----+    +---+----+    +---+----+
+--------+       +--------+       +--------+    +--------+    +--------+
]]></artwork>
      </figure>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
