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

<t>This document describes the Control Plane of the path-aware, inter-domain network architecture SCION (Scalability, Control, and Isolation On Next-generation networks). A fundamental characteristic of SCION is that it gives path control to SCION-capable endpoints that can choose between multiple path options, thereby enabling the optimization of network paths. The Control Plane is responsible for discovering these paths and making them available to the endpoints.</t>
      <t>The SCION Control Plane creates and securely disseminates path segments between SCION Autonomous Systems (AS) which can then be combined into forwarding paths to transmit packets in the data plane. This document describes mechanisms of path exploration through beaconing and path registration. In addition, it describes how Endpoints construct end-to-end paths from a set of possible path segments through a path lookup process.</t>
      <t>This document contains new approaches to secure path aware networking. It is not an Internet Standard, has not received any formal review of the IETF, nor was the work developed through the rough consensus process. The approaches offered in this work are offered to the community for its consideration in the further evolution of the Internet.</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 174?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>SCION is a path-aware internetworking routing architecture as described in <xref target="RFC9217"/>. It allows endpoints and applications to select paths across the network to use for traffic, based on trustworthy path properties. SCION is an inter-domain network architecture and is therefore not concerned with intra-domain forwarding.</t>
      <t>SCION has been developed with the following goals:</t>
      <t><em>Availability</em> - to provide highly available communication that can send traffic over paths with optimal or required characteristics, quickly handle inter-domain link or router failures (both on the last hop or anywhere along the path) and provide continuity in the presence of adversaries.</t>
      <t><em>Security</em> - to introduce a new approach to inter-domain path security that leverages path awareness in combination with a unique trust model. The goal is to provide higher levels of trustworthiness in routing information to prevent traffic hijacking, and enable users to decide where their data travels based on routing information that can be unambiguously attributed to an AS, ensuring that packets are only forwarded along authorized path segments. A particular use case is to enable geofencing. Security properties are further discussed in <xref target="security-properties"/>.</t>
      <t><em>Scalability</em> - to improve the scalability of the inter-domain control plane and data plane, avoiding existing limitations related to convergence and forwarding table size. The advertising of path segments is separated into a beaconing process within each Isolation Domain (ISD) and between ISDs which incurs minimal overhead and resource requirements on routers.</t>
      <t>SCION relies on three main components:</t>
      <t><em>PKI</em> - To achieve scalability and trust, SCION organizes existing ASes into logical groups of independent routing planes called <em>Isolation Domains (ISDs)</em>. All ASes in an ISD agree on a set of trust roots called the <em>Trust Root Configuration (TRC)</em> which is a collection of signed root certificates in X.509 v3 format <xref target="RFC5280"/>. The ISD is governed by a set of <em>core ASes</em> which typically manage the trust roots and provide connectivity to other ISDs. This is the basis of the public key infrastructure used for the authentication of messages used by the SCION Control Plane.</t>
      <t><em>Control Plane</em> - performs inter-domain routing by discovering and securely disseminating path information between ASes. The core ASes use Path-segment Construction Beacons (PCBs) to explore intra-ISD paths, or to explore paths across different ISDs.</t>
      <t><em>Data Plane</em> - carries out secure packet forwarding between SCION-enabled ASes over paths selected by endpoints. A SCION border router reuses existing intra-domain infrastructure to communicate to other SCION routers or SCION endpoints within its AS.</t>
      <t>This document describes the SCION Control Plane component. It should be read in conjunction with the other components <xref target="I-D.dekater-scion-pki"/> and <xref target="I-D.dekater-scion-dataplane"/>.</t>
      <t>The SCION architecture was initially developed outside of the IETF by ETH Zurich with significant contributions from Anapaya Systems. It is deployed in the Swiss finance sector to provide resilient connectivity between financial institutions. The aim of this document is to document the existing protocol specification as deployed, to encourage interoperability among implementations, and to introduce new concepts that can potentially be further improved to address particular problems with the current Internet architecture. This document is not an Internet Standards Track specification; it does not have IETF consensus and it is published for informational purposes.</t>
      <t>Note (to be removed before publication): this document, together with the other components <xref target="I-D.dekater-scion-pki"/> and <xref target="I-D.dekater-scion-dataplane"/>, deprecates <xref target="I-D.dekater-panrg-scion-overview"/>.</t>
      <section anchor="terms">
        <name>Terminology</name>
        <t><strong>Autonomous System (AS)</strong>: An Autonomous System is a network under a common administrative control. For example, the network of an Internet service provider, company, or university can constitute an AS.</t>
        <t><strong>Beaconing</strong>: The Control Plane process where an AS discovers paths to other ASes.</t>
        <t><strong>Control Plane</strong>: The SCION Control Plane is responsible for the propagation and discovery of network paths, i.e., for the exchange of routing information between SCION nodes. The Control Plane thus determines where traffic can be sent and deals with questions such as how paths are discovered, which paths exist, how they are disseminated to endpoints, etc. Within a SCION AS, such functionalities are carried out by the Control Service whereas packet forwarding is a task carried out by the data plane.</t>
        <t><strong>Control Service</strong>: The Control Service is the main control plane infrastructure component within a SCION AS. It is responsible for the path exploration and registration processes that take place within the Control Plane.</t>
        <t><strong>Core AS</strong>: Each Isolation Domain (ISD) is administered by a set of distinguished autonomous systems (ASes) called core ASes, which are responsible for initiating the path-discovery and -construction process (in SCION called "beaconing"). Each ISD <bcp14>MUST</bcp14> have at least one Core AS.</t>
        <t><strong>Endpoint</strong>: An endpoint is the start or the end of a SCION path, as defined in <xref target="RFC9473"/>.</t>
        <t><strong>Forwarding Path</strong>: A forwarding path is a complete end-to-end path between two SCION endpoints which is used to transmit packets in the data plane. It can be created with a combination of up to three path segments (an up segment, a core segment, and a down segment).</t>
        <t><strong>Hop Field (HF)</strong>: 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), these 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 (e.g. a common jurisdiction). A possible model is for ISDs to be formed along national boundaries or federations of nations.</t>
        <t><strong>Leaf AS</strong>: An AS at the "edge" of an ISD, with no other downstream ASes.</t>
        <t><strong>Message Authentication Code (MAC)</strong>. In the rest of this document, "MAC" always refers to "Message Authentication Code" and never to "Medium Access Control". When "Medium Access Control address" is implied, the phrase "Link Layer Address" is used.</t>
        <t><strong>Path Segment</strong>: Path segments are derived from Path Segment Construction Beacons (PCBs). A path segment can be (1) an up segment (i.e. a path between a non-core AS and a core AS in the same ISD), (2) a down segment (i.e. the same as an up segment, but in the opposite direction), or (3) a core segment (i.e. a path between core ASes). Up to three path segments can be used to create a forwarding path.</t>
        <t><strong>Path Segment Construction Beacon (PCB)</strong>: Core AS control planes generate PCBs to explore paths within their isolation domain (ISD) and among different ISDs. ASes further propagate selected PCBs to their neighboring ASes. These PCBs traverse each AS accumulating information, including Hop Fields (HFs) which can subsequently be used for traffic forwarding.</t>
        <t><strong>SCION Control Message Protocol (SCMP)</strong>: A signaling protocol analogous to the Internet Control Message Protocol (ICMP). This is described in <xref target="scmp"/>.</t>
        <t><strong>Trust Root Configuration (TRC)</strong>: A Trust Root Configuration or TRC is a signed collection of certificates pertaining to an isolation domain (ISD). TRCs also contain ISD-specific policies.</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
      <section anchor="paths-links">
        <name>Paths and Links</name>
        <t>SCION routers and endpoints connect to each other via links. A link refers to a physical or logical connection between two SCION nodes (e.g., router or endpoint). A SCION path between two endpoints 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 are part of a uniform trust environment (i.e. a common jurisdiction) and is administered by a set of distinguished ASes called core ASes.</t>
        <t>SCION distinguishes three types of links between ASes: (1) core links, (2) parent-child links, and (3) peering links.</t>
        <ul spacing="normal">
          <li>
            <t><em>Core</em> links connect two core ASes, which are either within the same or in different ISDs. Core links can exist for various reasons, including provider-customer (where the customer pays the provider for traffic) and peering relationships.</t>
          </li>
          <li>
            <t><em>Parent-child</em> links create a hierarchy between the parent and the child AS within the same ISD. ASes with a parent-child link typically have a provider-customer relationship.</t>
          </li>
          <li>
            <t><em>Peering</em> links exist between ASes with a (settlement-free or paid) peering relationship. They can be established between any two ASes (core or non-core) and can cross ISD boundaries.</t>
          </li>
        </ul>
        <t>SCION paths are comprised of at most three path segments: an up segment, traversing links from child to parent, then a core segment consisting of core links, followed by a down segment traversing links from parent to child. Each path segment is established over one or more links.</t>
        <t>SCION paths are always "valley free" whereby a child AS does not carry transit traffic from a parent AS to another parent AS. These paths can contain at most one peering link which can be used as shortcut between two path segments containing two peer ASes.</t>
        <t><xref target="_figure-1"/> shows the three types of links for one small ISD with two core ASes A and C, and four non-core ASes D,E,F, and G.</t>
        <figure anchor="_figure-1">
          <name>The three types of SCION links in one ISD. Each node in the figure is a SCION AS.</name>
          <artwork><![CDATA[
+-------------------------+
|                         |       #
|        ISD Core         |       |      parent-child
| +-----+         +-----+ |       |      link
| |AS A +c-------c+AS C | |       |
| +--+--+         +--+--+ |       *
|    #               #    |
+----|---------------|----+   c-------c  core link
     |               |
     *               *        p-------p  peering link
  +--+--+         +--+--+
  |AS D +p-------p+AS E |
  +--+--+         +--+--+
     #               #
     |               |
     *               *
  +--+--+         +--+--+
  |AS G |         |AS F |
  +-----+         +-----+
]]></artwork>
        </figure>
        <t>Each link connecting SCION routers is bi-directional and is identified by its corresponding egress and ingress Interface IDs. An Interface ID is a 16-bit identifier as described in <xref target="I-D.dekater-scion-dataplane"/> in section Terminology. It is required to be unique within each AS and can therefore be chosen without any need for coordination between ASes.</t>
      </section>
      <section anchor="routing">
        <name>Routing</name>
        <t>SCION provides path-aware inter-domain routing between ASes across the Internet. The SCION Control Plane is responsible for discovering these inter-domain paths and making them available to the endpoints within the ASes.</t>
        <t>SCION inter-domain routing operates on two levels: within a ISD which is called <em>intra</em>-ISD routing, and between ISD which is called <em>inter</em>-ISD routing. Both levels use <em>Path Segment Construction Beacons (PCBs)</em> to explore network paths. A PCB is initiated by a core AS and then disseminated either within an ISD to explore intra-ISD paths, or among core ASes to explore core paths across different ISDs.</t>
        <t>The PCBs accumulate cryptographically protected path and forwarding information at an AS level and store this information in the form of <em>Hop Fields</em>. Endpoints use information from these Hop Fields to create end-to-end forwarding paths for data packets that carry this information in their headers. This also supports multi-path communication among endpoints.</t>
        <t>The creation of an end-to-end forwarding path consists of the following processes:</t>
        <ol spacing="normal" type="1"><li>
            <t><em>Path exploration (or beaconing)</em>: This is the process where an AS discovers paths to other ASes. See also <xref target="beaconing"/>.</t>
          </li>
          <li>
            <t><em>Path registration</em>: This is the process where an AS selects a few PCBs, according to defined policies, turns the selected PCBs into path segments, and adds these path segments to the relevant path infrastructure, thus making them available to other ASes. See also <xref target="path-segment-reg"/>.</t>
          </li>
          <li>
            <t><em>Path resolution</em>: This is the process of actually creating an end-to-end forwarding path from the source endpoint to the destination. For this, an endpoint performs (a) a path lookup step to obtain path segments, and (b) a path combination step to combine the forwarding path from the segments. This last step takes place in the data plane. See also <xref target="lookup"/>.</t>
          </li>
        </ol>
        <t>All processes operate concurrently.</t>
        <t>The <strong>Control Service</strong> is responsible for the path exploration and registration processes in the Control Plane. It is the main control plane infrastructure component within each SCION AS and has the following tasks:</t>
        <ul spacing="normal">
          <li>
            <t>Generating, receiving, and propagating PCBs. Periodically, the Control Service of a core AS generates a set of PCBs, which are forwarded to the child ASes or neighboring core ASes. In the latter case, the PCBs are sent over policy compliant paths to discover multiple paths between any pair of core ASes.</t>
          </li>
          <li>
            <t>Selecting and registering the set of path segments via which the AS wants to be reached.</t>
          </li>
          <li>
            <t>Managing certificates and keys to secure inter-AS communication. Each PCB contains signatures of all on-path ASes and each time the Control Service of an AS receives a PCB, it validates the PCB's authenticity. When the Control Service lacks an intermediate certificate, it can query the Control Service of the neighboring AS that sent the PCB through the API described in <xref target="_figure-36"/>.</t>
          </li>
        </ul>
        <t><strong>Note:</strong> The Control Service of an AS is decoupled from SCION border routers. The Control Service of a specific AS is part of the Control Plane, is responsible for <em>finding and registering suitable paths</em>, and can be deployed anywhere inside the AS. Border routers are deployed at the edge of an AS and their main tasks are to <em>forward data packets</em>.</t>
        <section anchor="path-segments">
          <name>Path Segments</name>
          <t>SCION distinguishes the following types of path segments:</t>
          <ul spacing="normal">
            <li>
              <t>A path segment from a non-core AS to a core AS is an <em>up segment</em>.</t>
            </li>
            <li>
              <t>A path segment from a core AS to a non-core AS is a <em>down segment</em>.</t>
            </li>
            <li>
              <t>A path segment between core ASes is a <em>core segment</em>.</t>
            </li>
          </ul>
          <t>Each path segment starts and/or ends at a core AS.</t>
          <t>All path segments may be reversed: a core segment can be used bidirectionally, an up segment can be converted into a down segment, and a down segment can be converted into an up segment depending on the direction of the end-to-end path. This means that all path segments can be used to send data traffic in both directions.</t>
          <t>The cryptographic protection of PCBs and path segments is based on the Control Plane PKI. The signatures are structured such that the entire message sequence constituting the path segment can be authenticated by anyone with access to this PKI.</t>
          <t>For fast validation of the path information carried in individual packets during packet forwarding, symmetric key cryptography is used and the Hop Fields contain a MAC. These MACs are structured to allow verification of the sequence of hops, but in contrast to the PCBs can only be validated by the border routers of the respective AS.</t>
        </section>
      </section>
      <section anchor="numbering">
        <name>Addressing</name>
        <t>Inter-domain SCION routing is based on an &lt;ISD, AS&gt; tuple. Although a complete SCION address is composed of the &lt;ISD, AS, endpoint address&gt; 3-tuple, the endpoint address is not used for inter-domain routing or forwarding. The endpoint address is of variable length, does not need to be globally unique, and can thus be an IPv4, IPv6, or link layer address.</t>
        <t><strong>Note:</strong> As a consequence of the fact that SCION relies on existing routing protocols (e.g. IS-IS, OSPF, SR) and communication fabric (e.g. IP, MPLS) for intra-domain forwarding, existing internal routers do not need to be changed to support SCION.</t>
        <section anchor="isd-numbers">
          <name>ISD Numbers</name>
          <t>An ISD number is the 16-bit global identifier for an ISD and <bcp14>MUST</bcp14> be globally unique.</t>
          <t>The following table gives an overview of the ISD number allocation:</t>
          <table anchor="_table-1">
            <name>ISD number allocations</name>
            <thead>
              <tr>
                <th align="left">ISD</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">The wildcard ISD</td>
              </tr>
              <tr>
                <td align="left">1 - 15</td>
                <td align="left">Reserved for documentation and sample code (analogous to <xref target="RFC5398"/>).</td>
              </tr>
              <tr>
                <td align="left">16 - 63</td>
                <td align="left">Private use (analogous to <xref target="RFC6996"/>) - can be used for testing and private deployments</td>
              </tr>
              <tr>
                <td align="left">64 - 4094</td>
                <td align="left">Public ISDs - should be allocated in ascending order, without gaps and "vanity" numbers</td>
              </tr>
              <tr>
                <td align="left">4095 - 65535</td>
                <td align="left">Unallocated</td>
              </tr>
            </tbody>
          </table>
          <t>ISD numbers are currently allocated by Anapaya, a provider of SCION-based networking software and solutions (see <xref target="ISD-AS-assignments-Anapaya"/>). This function is being transitioned to the SCION Association (<xref target="ISD-AS-assignments"/>).</t>
        </section>
        <section anchor="scion-as-numbers">
          <name>SCION AS Numbers</name>
          <t>A SCION AS number is the 48-bit identifier for an AS. Although they play a similar role, there is no relationship between SCION AS numbers and BGP ASNs as defined by <xref target="RFC4271"/>. For historical reasons some SCION Autonomous Systems use a SCION AS number where the first 16 bits are 0 and the remaining 32 bits are identical to their BGP ASN, but there is no technical requirement for this.</t>
          <section anchor="serv-disc">
            <name>Wildcard Addressing</name>
            <t>SCION endpoints use wildcard AS <tt>0</tt> to designate any core AS, e.g. to place requests for core segments or down segments during path lookup. These wildcard addresses are of the form I-0, to designate any AS in ISD I. For more information, see <xref target="wildcard"/>.</t>
          </section>
          <section anchor="scion-as-numbers-1">
            <name>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</tt></td>
                  <td align="left">1</td>
                  <td align="left">The wildcard AS</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>1 - 4294967295</tt></td>
                  <td align="left">~4.3 billion</td>
                  <td align="left">Public SCION AS numbers</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>1:0:0 - 1:ffff:ffff</tt></td>
                  <td align="left">~4.3 billion</td>
                  <td align="left">Unallocated</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>2:0:0 - 2:ffff:ffff</tt></td>
                  <td align="left">~4.3 billion</td>
                  <td align="left">Public SCION AS numbers</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>3:0:0 - feff:ffff:ffff</tt></td>
                  <td align="left">~280 trillion</td>
                  <td align="left">Unallocated</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ff00:0:0 - ff00:0:ffff</tt></td>
                  <td align="left">65536</td>
                  <td align="left">Reserved for documentation and sample code (analogous to <xref target="RFC5398"/>)</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ff00:1:0 - ffa9:ffff:ffff</tt></td>
                  <td align="left">~730 billion</td>
                  <td align="left">Unallocated</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ffaa:0:0 - ffaa:ff:ffff</tt></td>
                  <td align="left">~16.8 million</td>
                  <td align="left">Reserved for private use (analogous to <xref target="RFC6996"/>) - these numbers can be used for testing and private deployments</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ffaa:100:0 - ffff:ffff:fffe</tt></td>
                  <td align="left">~369 billion</td>
                  <td align="left">Unallocated</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>
          </section>
        </section>
        <section anchor="text-representation">
          <name>Text Representation</name>
          <section anchor="isd-numbers-1">
            <name>ISD numbers</name>
            <t>The text representation of SCION ISD numbers <bcp14>MUST</bcp14> be its decimal ASCII representation.</t>
          </section>
          <section anchor="as-numbers">
            <name>AS numbers</name>
            <t>The text representation of SCION AS numbers is as follows:</t>
            <ul spacing="normal">
              <li>
                <t>SCION AS numbers in the lower 32-bit range <bcp14>MUST</bcp14> be printed as decimal by implementations. Implementations may parse AS numbers in the lower 32-bit range in hexadecimal notation too (e.g., a program may accept AS number '0:1:f' for AS 65551).</t>
              </li>
              <li>
                <t>SCION AS numbers in the higher 32-bit range <bcp14>MUST</bcp14> be printed using big-endian hexadecimal notation in 3 groups of 4, in the range <tt>1:0:0</tt> to <tt>ffff:ffff:ffff</tt>. Leading zeros in each group are omitted, with the exception that one zero <bcp14>MUST</bcp14> be notated if a group is entirely zeros (e.g., <tt>1:0:1</tt>). The <tt>::</tt> zero-compression feature of IPv6 <bcp14>MUST NOT</bcp14> be used.</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"/>). In such case, hexadecimal notation <bcp14>MUST</bcp14> be used. 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>
          </section>
          <section anchor="isd-as-tuples">
            <name>&lt;ISD, AS&gt; tuples</name>
            <t>The text representation of SCION addresses <bcp14>MUST</bcp14> be <tt>&lt;ISD&gt;-&lt;AS&gt;</tt>, where <tt>&lt;ISD&gt;</tt> is the text representation of the ISD number, <tt>&lt;AS&gt;</tt> is the text representation of the AS number, and <tt>-</tt> is the literal ASCII character 0x2D.</t>
            <t>For example, the text representation of AS number ff00:0:1 in ISD number 15 is <tt>15-ff00:0:1</tt>.</t>
          </section>
        </section>
      </section>
      <section anchor="bootstrapping-ability">
        <name>Bootstrapping ability</name>
        <t>A secure and reliable routing architecture has to be designed specifically to avoid circular dependencies during network bootstrapping. One goal is that the SCION network can start up even after large outages or attacks, in addition to avoiding cascades of outages caused by fragile interdependencies. This section lists the concepts SCION uses to prevent circular dependencies:</t>
        <ul spacing="normal">
          <li>
            <t>Neighbor-based path discovery: Path discovery in SCION is performed by the beaconing mechanism. In order to participate in this process, an AS only needs to be aware of its direct neighbors. As long as no path segments are available, communicating with the neighboring ASes is possible with the one-hop path type which does not rely on any path information. SCION uses these <em>one-hop paths</em> to propagate PCBs to neighboring ASes to which no forwarding path is available yet. The One-Hop Path Type is described in more detail in <xref target="I-D.dekater-scion-dataplane"/>.</t>
          </li>
          <li>
            <t>Path reversal: In SCION, every path is reversible. That is, the receiver of a packet can reverse the path in the packet header in order to produce a reply packet without having to perform a path lookup. Such a packet follows the original packet's path backwards.</t>
          </li>
          <li>
            <t>Availability of certificates: In SCION, every entity is required to be in possession of all cryptographic material (including the ISD's TRC and certificates) that is needed to verify any message it sends. This (together with the path reversal) means that the receiver of a message can always obtain all this material by contacting the sender. This avoids circular dependencies between the PKI and connectivity.<br/></t>
          </li>
        </ul>
        <t><strong>Note:</strong> For a detailed description of a TRC and more information on the availability of certificates and TRCs, see <xref target="I-D.dekater-scion-pki"/>.</t>
      </section>
      <section anchor="resistance-to-partitioning">
        <name>Resistance to partitioning</name>
        <t>Partitioning occurs when a network splits into two because of link failures. Partitioning of the global SCION inter-domain network is much less likely to happen, thanks to its path awareness that exposes multiple paths between SCION ASes. Even during failures there is no special failure mode required as SCION-enabled ASes can always switch to already known paths that use other links.</t>
        <t>Recovering from a partitioned network is also seamless as only coarse time synchronization between the partitions is required to resume normal operation and move forward with updates of the cryptographic material. <xref target="clock-inaccuracy"/> further describes the impact of time synchronization and path discovery time.</t>
      </section>
      <section anchor="communication-protocol">
        <name>Communication Protocol</name>
        <t>All communication between the Control Services in different ASes is expressed in terms of gRPC remote procedure calls (for details, see <xref target="gRPC"/>). Service interfaces and messages are defined in the Protocol Buffer "proto3" interface definition language (for details, see <xref target="proto3"/>).</t>
        <t>The RPC messages are transported via the <xref target="Connect"/>'s rpc protocol; a gRPC-like protocol that carries messages over HTTP/3 (see <xref target="RFC9114"/>)). HTTP3 traffic uses QUIC/UDP (<xref target="RFC9000"/>) as a transport layer. In the case of SCION, UDP relies on the data plane.</t>
        <t><xref target="app-a"/> provides the entire Control Service API definition in protobuf format.</t>
        <t><xref target="app-b"/> provides details about the establishment of the underlying QUIC connections through the data plane.</t>
      </section>
    </section>
    <section anchor="beaconing">
      <name>Path Exploration or Beaconing</name>
      <section anchor="introduction-and-overview">
        <name>Introduction and Overview</name>
        <t><strong>Path Exploration</strong> is the process where an AS discovers paths to other ASes. In SCION, this process is referred to as <em>beaconing</em> and this section provides a detailed explanation of this.</t>
        <t>In SCION, the <em>Control Service</em> of each AS is responsible for the beaconing process. The Control Service generates, receives, and propagates the <em>Path Segment Construction Beacons (PCBs)</em> on a regular basis, to iteratively construct path segments.</t>
        <t>PCBs contain inter-domain 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. Beaconing is initiated by core ASes, therefore each ISD <bcp14>MUST</bcp14> have at least one core AS.</t>
        <ul spacing="normal">
          <li>
            <t><em>Inter-ISD or core beaconing</em> is the process of constructing path segments between core ASes in the same or in different ISDs. During core beaconing, the Control Service of a core AS either initiates PCBs or propagates PCBs received from neighboring core ASes to other neighboring core ASes. PCBs are periodically sent over policy compliant paths to discover multiple paths between any pair of core ASes.</t>
          </li>
          <li>
            <t><em>Intra-ISD beaconing</em> creates path segments from core ASes to non-core ASes. For this, the Control Services of core ASes create PCBs and sends them to the non-core child ASes (typically customer ASes) at regular intervals. The Control Service of a non-core child AS receives these PCBs and forwards them to its child ASes, and so on until the PCB reaches an AS without any children (leaf AS). As a result, all ASes within an ISD receive path segments to reach the core ASes of their ISD and register reciprocal segments with the Control Service of the associated core ASes.</t>
          </li>
        </ul>
        <t>On its way, a PCB accumulates cryptographically protected path and forwarding information per traversed AS. At every AS, metadata as well as information about the AS's ingress and egress interfaces is added to the PCB. The full PCB message format is described in <xref target="pcbs"/>. PCBs are used to construct path segments. ASes register them to make them available to other ASes, as described in <xref target="path-segment-reg"/>.</t>
        <section anchor="peering-links">
          <name>Peering Links</name>
          <t>PCBs do not traverse peering links. Instead, peering links are announced along with a regular path in a PCB. If both ASes at either end of a peering link have registered path segments that include this specific peering link, then it is possible to use this peering link during segment combination to create the end-to-end path.</t>
        </section>
        <section anchor="appending-entries-to-a-pcb">
          <name>Appending Entries to a PCB</name>
          <t>Every propagation interval (as configured by the AS), the Control Service:</t>
          <ul spacing="normal">
            <li>
              <t>selects the best combinations of PCBs and interfaces connecting to a neighboring AS (i.e. a child AS or a core AS). This is described in <xref target="selection"/>.</t>
            </li>
            <li>
              <t>propagates each selected PCB to the selected egress interface(s) associated with it. This is described in <xref target="path-segment-prop"/>.</t>
            </li>
          </ul>
          <t>For every selected PCB and egress interface combination, the AS appends an <em>AS entry</em> to the selected PCB. This includes a Hop Field that specifies the ingress and egress interface for the packet forwarding through this AS, in the beaconing direction. The AS entry can also contain peer entries.</t>
        </section>
        <section anchor="pcb-propagation-illustrated-examples">
          <name>PCB Propagation - Illustrated Examples</name>
          <t>The following three figures show how intra-ISD PCB propagation works, from the ISD's core AS down to child ASes. Interface identifiers of each AS are numbered with integer values while ASes are described with an upper case letter for the sake of illustration.</t>
          <t>In <xref target="_figure-3a"/> below, core AS X sends the two different PCBs "a" and "b" via two different links to child AS Y: PCB "a" leaves core AS X via egress interface "2", whereas PCB "b" is sent over egress interface "1". Core AS X adds the respective egress information to the PCBs when sending them off, as can be seen in the figure (the entries "<em>Core - Out:2</em>" and "<em>Core - Out:1</em>", respectively).</t>
          <figure anchor="_figure-3a">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 1</name>
            <artwork><![CDATA[
                           +-------------+
                           |  Core AS X  |
                           |             |
                           |    2   1    |
                           +----+---+----+
           +--------+           #   #           +--------+
           | PCB a  |   +-----+ |   | +-----+   | PCB b  |
           +========+ <-+PCB a| |   | |PCB b|-> +========+
           | Core   |   +--+--+ |   | +--+--+   |Core    |
           |- Out:2 |      |    |   |    │      |- Out:1 |
           +--------+      v    |   |    v      +--------+
                                *   *
                           +----+---+----+
                           |    AS Y     |
]]></artwork>
          </figure>
          <t>AS Y receives the two PCBs "a" and "b" through two different (ingress) interfaces, namely "2" and "3", respectively (see <xref target="_figure-3b"/> below). Additionally, AS Y forwards to AS Z four PCBs that were previously sent by core AS X. For this, AS Y uses the two different (egress) links "5" and "6". AS Y appends the corresponding ingress and egress interface information to the four PCBs. As can be seen in the figure, AS Y also has two peering links to its neighboring peers V and W, through the interfaces "1" and "4", respectively - AS Y includes this information in the PCBs, as well. Thus, each forwarded PCB cumulates path information on its way "down" from core AS X.</t>
          <figure anchor="_figure-3b">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 2</name>
            <artwork><![CDATA[
                        +-----+ |   | +-----+
                        |PCB a| |   | |PCB b|
                        +--+--+ |   | +--+--+
                           |    |   |    |
                           v    |   |    v
                                *   *
       +-------------+     +----+---+----+     +-------------+
       |             |     |    2   3    |     |             |
       |             +p---p+ 1           |     |             |
       |    AS V     |     |    AS Y     |     |    AS W     |
       |             |     |           4 +p---p+             |
       |             |     |    6   5    |     |             |
       +-------------+     +----+---+----+     +-------------+
            +--------+          #   #          +--------+
            | PCB c  │          |   |          | PCB d  |
            +========+          |   |          +========+
            |Core X  |          |   |          |Core X  |
            |- Out:2 |          |   |          |- Out:2 |
+--------+  +--------+   +-----+|   |+-----+   +--------+  +--------+
| PCB e  |  |AS Y    | <-|PCB c||   ||PCB d|-> |AS Y    |  | PCB f  │
+========+  |-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                 +--------+
                                *   *
                           +----+---+----+
                           |    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
                                *   *
                           +----+---+----+
                           |    5   1    |
                           |             |
                           |    AS Z     |
            +--------+     |             |     +--------+
            │ PCB g  |     |      3      |     | PCB h  |
            +========+     +------+------+     +========+
            │Core X  |            #            |Core X  |
+--------+  │- Out:2 |            |            |- Out:2 |  +--------+
| PCB i  |  +--------+            |            +--------+  | PCB j  |
+========+  │AS Y    |            |            |AS Y    |  +========+
|Core X  |  │-In:2   |            |            |-In:2   |  |Core X  |
|- Out:1 |  │-Out:6  |   +-----+  |  +-----+   |-Out:5  |  |- Out:1 |
+--------+  │-PeerV:1| <-|PCB g│  |  |PCB h|-> |-PeerV:1|  +--------+
|AS Y    |  │-PeerW:4|   +--+--+  |  +--+--+   |-PeerW:4|  |AS Y    |
|-In:3   |  +--------+      |     |     |      +--------+  |-In:3   |
|-Out:6  |  │AS Z    |      v     |     v      |AS Z    |  |Out:5   |
|-PeerV:1|  │-In:5   |            |            |-In:1   |  |-PeerV:1|
|-PeerW:4|  │-Out:3  |            |            |-Out:3  |  |-PeerW:4|
+--------+  +--------+            |            +--------+  +--------+
|AS Z    |               +-----+  |  +-----+               |AS Z    |
|-In:5   | <-------------|PCB i|  |  |PCB j|------------>  |-In:1   |
|-Out:3  |               +--+--+  |  +--+--+               |-Out:3  |
+--------+                  |     |     |                  +--------+
                            v     |     v
                                  v

]]></artwork>
          </figure>
          <t>Based on the figures above, one could say that a PCB represents a single path segment. However, there is a difference between a PCB and a registered path segment as a PCB is a so-called "travelling path segment" that accumulates AS entries when traversing the Internet. A registered path segment is instead a "snapshot" of a travelling PCB at a given time T and from the vantage point of a particular AS A. This is illustrated by <xref target="_figure-4"/>. This figure shows several possible path segments to reach AS Z, based on the PCBs "g", "h", "i", and "j" from <xref target="_figure-3c"/> above. It is up to AS Z to use all of these path segments or just a selection of them.</t>
          <figure anchor="_figure-4">
            <name>Possible up- or down segments for AS Z</name>
            <artwork><![CDATA[
                AS Entry Core        AS Entry Y          AS Entry Z

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |    AS Z     |
Path Segment 1 |            1+     +3           5+     +1            |
               |             |     |             |     |             |
               |            2+#---*+2-----------6+#---*+5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                  Egress 2       Ingress 2 - Egress 6     Ingress 5

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

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |    AS Z     |
               |            1+     +3     +-----5+#---*+1            |
Path Segment 2 |             |     |      |      |     |             |
               |            2+#---*+2-----+     6+     +5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                  Egress 2       Ingress 2 - Egress 5     Ingress 1

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

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |    AS Z     |
               |            1+#---*+3-----+     5+     +1            |
Path Segment 3 |             |     |      |      |     |             |
               |            2+     +2     +-----6+#---*+5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                  Egress 1       Ingress 3 - Egress 6     Ingress 5

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

               +-------------+     +-------------+     +-------------+
               |  Core AS X  |     |    AS Y     |     |    AS Z     |
               |            1+#---*+3-----------5+#---*+1            |
Path Segment 4 |             |     |             |     |             |
               |            2+     +2           6+     +5            |
               |             |     |             |     |             |
               +-------------+     +-------------+     +-------------+
                  Egress 1       Ingress 3 - Egress 5      Ingress 1

]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="pcbs">
        <name>Path-Segment Construction Beacons (PCBs)</name>
        <section anchor="pcb-compos">
          <name>PCB Message Format</name>
          <figure anchor="_figure-5">
            <name>Top-down composition of a 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                                   |
+-------------------------------------------------------------+   |
+---------+-------------------+---------+--------+------------+   |
|Sig. Alg.|Verification Key ID|Timestamp|Metadata|AssocDataLen|   |
+---------+-------------------+---------+--------+------------+   |
          +---------+---------+                                   |
                    |                                             |
                    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  | |Hop Field|PeerMTU |PeerISD-AS|PeerInterf.|
+-------------+------------+ +---------+--------+----------+-----------+
                       +----+----+
                            |
                            v
+----------------------------------------------------------+
+------------+-------------+-------------------+-----------+
|  Ingress   |    Egress   |  Expiration Time  |    MAC    |
+------------+-------------+-------------------+-----------+

]]></artwork>
          </figure>
          <t>Note: For a full example of a PCB in the Protobuf message format, please see <xref target="_figure-34"/>.</t>
          <section anchor="segment">
            <name>PCB Top-Level Message Format</name>
            <figure anchor="_figure-6">
              <name>PCB Top-Level Message Format</name>
              <artwork><![CDATA[
+-------------+------------+------------+-----+------------+
|Segment Info | AS Entry 0 | AS Entry 1 | ... | AS Entry N |
+-------------+------------+------------+-----+------------+

]]></artwork>
            </figure>
            <t>Each PCB <bcp14>MUST</bcp14> consists of at least:</t>
            <ul spacing="normal">
              <li>
                <t>An information field with an identifier and a timestamp.</t>
              </li>
              <li>
                <t>Entries of all ASes on the path segment represented by this PCB.</t>
              </li>
            </ul>
            <t>The following code block defines the PCB at the top level in Protobuf message format.</t>
            <artwork><![CDATA[
   message PathSegment {
       bytes segment_info = 1;
       repeated ASEntry as_entries = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>segment_info</tt>: This field is used as input for the PCB signature. It is the encoded version of the component <tt>SegmentInformation</tt>, which provides basic information about the PCB. The <tt>SegmentInformation</tt> component is specified in detail in <xref target="seginfo"/>.</t>
              </li>
              <li>
                <t><tt>as_entries</tt>: Contains the <tt>ASEntry</tt> component of all ASes on the path segment represented by this PCB.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>ASEntry</tt>: The <tt>ASEntry</tt> component contains the complete path information of a specific AS that is part of the path segment represented by the PCB. The <tt>ASEntry</tt> component is specified in detail in <xref target="as-entry"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </section>
          <section anchor="seginfo">
            <name>Segment Information</name>
            <figure anchor="_figure-7">
              <name>Segment Information Component</name>
              <artwork><![CDATA[
+----------------------------+
|         Segment Info       |
+----------------------------+
+-------------+--------------+
              |
              v
+----------------------------+
+-------------+--------------+
|  Timestamp  |    Seg ID    |
+-------------+--------------+

]]></artwork>
            </figure>
            <t>Each PCB <bcp14>MUST</bcp14> include an information component with basic information about the PCB.</t>
            <t>In the Protobuf message format, the information component of a PCB is called the <tt>SegmentInformation</tt> message. The following code block shows the Protobuf message definition for the <tt>SegmentInformation</tt> message.</t>
            <artwork><![CDATA[
   message SegmentInformation {
       int64 timestamp = 1;
       uint32 segment_id = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>timestamp</tt>: The 32-bit timestamp indicates the creation time of this PCB. It is set by the originating core AS and the expiration time of each Hop Field in the PCB is computed relative to this timestamp. The timestamp is encoded as the number of seconds elapsed since the POSIX Epoch (1970-01-01 00:00:00 UTC).</t>
              </li>
              <li>
                <t><tt>segment_id</tt>: The 16-bit identifier of this PCB and the corresponding path segment. The segment ID is <bcp14>REQUIRED</bcp14> for the computation of the message authentication code (MAC) of an AS's Hop Field. The MAC is used for Hop Field verification in the data plane and the originating core AS <bcp14>MUST</bcp14> fill this field with a cryptographically random number.</t>
              </li>
            </ul>
            <t><strong>Note:</strong> See <xref target="hopfield"/> for more information on the Hop Field message format. <xref target="I-D.dekater-scion-dataplane"/> provides a detailed description of the computation of the MAC and the verification of the Hop Field in the data plane.</t>
          </section>
          <section anchor="as-entry">
            <name>AS Entry</name>
            <figure anchor="_figure-8">
              <name>AS Entry</name>
              <artwork><![CDATA[
                           +--------------+
                           |   AS Entry   |
                           +--------------+
                           +------+-------+
                                  |
                                  v
+------------------------------------------------------------------+
+-----------------------+------------------------------------------+
|  Unsigned Extension   |             Signed AS Entry              |
+-----------------------+------------------------------------------+

]]></artwork>
            </figure>
            <t>Each PCB <bcp14>MUST</bcp14> also contain the entries of all ASes included in the corresponding path segment. This means that the originating core AS <bcp14>MUST</bcp14> add its AS entry to each PCB it creates, and each traversed AS <bcp14>MUST</bcp14> attach its AS entry to the PCB.</t>
            <t>One AS entry contains the complete hop information for this specific AS in this specific path segment. It consists of a signed and an unsigned component.</t>
            <t>The code block below defines an AS entry <tt>ASEntry</tt> in Protobuf message format.</t>
            <artwork><![CDATA[
   message ASEntry {
       SignedMessage signed = 1;
       PathSegmentUnsignedExtensions unsigned = 2;
   }
]]></artwork>
            <t>It includes the following components:</t>
            <ul spacing="normal">
              <li>
                <t><tt>SignedMessage</tt>: The signed component of an AS entry. For the specification of this part of the AS entry, see <xref target="signed-compo"/> below.</t>
              </li>
              <li>
                <t><tt>PathSegmentUnsignedExtensions</tt>: The unsigned and thus unprotected part of the AS entry. These are extensions with metadata that need no explicit protection.</t>
              </li>
            </ul>
          </section>
          <section anchor="signed-compo">
            <name>AS Entry Signed Component</name>
            <figure anchor="_figure-9">
              <name>AS Entry Signed Component</name>
              <artwork><![CDATA[
        +------------------------------------------------------+
        |                   Signed AS Entry                    |
        +------------------------------------------------------+
        +--------------------------+---------------------------+
                                   |
                                   v
+---------------------------------------------------------------------+
+--------------------+------------------+-----------------------------+
|     Signature      |      Header      |             Body            |
+--------------------+------------------+-----------------------------+

]]></artwork>
            </figure>
            <t>Each AS entry of a PCB <bcp14>MUST</bcp14> include a signed component as well as a signature computed over the signed component. Each AS entry <bcp14>MUST</bcp14> be signed with the Control Plane AS Certificate (see <xref target="I-D.dekater-scion-pki"/>).</t>
            <t>The signed component of an AS entry <bcp14>MUST</bcp14> include the following elements:</t>
            <ul spacing="normal">
              <li>
                <t>a header,</t>
              </li>
              <li>
                <t>a body, and</t>
              </li>
              <li>
                <t>a signature.</t>
              </li>
            </ul>
            <t>In the Protobuf message format implementation, the signed component of an AS entry is specified by the <tt>SignedMessage</tt>. It consists of a header-and-body part (<tt>header_and_body</tt>) and a raw signature (<tt>signature</tt>). See also the code block below.</t>
            <artwork><![CDATA[
   message SignedMessage {
       bytes header_and_body = 1;
       bytes signature = 2;
   }
]]></artwork>
            <t>The following code block shows the low level representation of the <tt>HeaderAndBodyInternal</tt> message used for signature computation input. This message <bcp14>SHOULD NOT</bcp14> be used by external code.</t>
            <artwork><![CDATA[
   message HeaderAndBodyInternal {
       // Encoded header suitable for signature computation.
       bytes header = 1;
       // Raw payload suitable for signature computation.
       bytes body = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t>For the specification of the signed header, see <xref target="ase-header"/>.</t>
              </li>
              <li>
                <t>For the specification of the signed body, see <xref target="ase-sign"/>.</t>
              </li>
              <li>
                <t>For the specification of the <tt>signature</tt> field, see <xref target="sign"/>.</t>
              </li>
            </ul>
            <section anchor="ase-header">
              <name>AS Entry Signed Header</name>
              <figure anchor="_figure-10">
                <name>AS Entry Signed Header</name>
                <artwork><![CDATA[
                      +-----------------+
                      |     Header      |
                      +-----------------+
                      +--------+--------+
                               |
                               v
+-------------------------------------------------------------+
+---------+-------------------+---------+--------+------------+
|Sig. Alg.|Verification Key ID|Timestamp|Metadata|AssocDataLen|
+---------+-------------------+---------+--------+------------+
          +---------+---------+
                    |
                    v
     +-----------------------------------------------+
     +---------+---------+------------+--------------+
     | ISD-AS  |TRC Base | TRC Serial |Subject Key ID|
     +---------+---------+------------+--------------+

]]></artwork>
              </figure>
              <t>The header part defines metadata that is relevant to the computation and verification of the signature. It <bcp14>MUST</bcp14> include at least the following metadata:</t>
              <ul spacing="normal">
                <li>
                  <t>The algorithm to compute the signature</t>
                </li>
                <li>
                  <t>The subjectKeyIdentifier of the public key to be used to verify the signature (see <xref target="I-D.dekater-scion-pki"/>)</t>
                </li>
                <li>
                  <t>The ISD-AS number of the AS</t>
                </li>
              </ul>
              <t>The following code block defines the signed header of an AS entry in Protobuf message format (called the <tt>Header</tt> message).</t>
              <artwork><![CDATA[
   message Header {
       SignatureAlgorithm signature_algorithm = 1;
       bytes verification_key_id = 2;
       // Optional
       google.protobuf.Timestamp timestamp = 3;
       // Optional
       bytes metadata = 4;
       int32 associated_data_length = 5;
   }

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

associated_data(ps, i) = ps.segment_info ||
                         ps.as_entries[1].signed.header_and_body ||
                         ps.as_entries[1].signed.signature ||
                         ...
                         ps.as_entries[i-1].signed.header_and_body ||
                         ps.as_entries[i-1].signed.signature
]]></artwork>
            </section>
          </section>
          <section anchor="hopentry">
            <name>Hop Entry</name>
            <figure anchor="_figure-12">
              <name>Hop Entry</name>
              <artwork><![CDATA[
        +-----------+
        | Hop Entry |
        +-----------+
        +-----+-----+
              |
              v
+---------------------------+
+-------------+-------------+
| Ingress MTU |  Hop Field  |
+-------------+-------------+

]]></artwork>
            </figure>
            <t>Each body of an AS entry <bcp14>MUST</bcp14> contain exactly one hop entry component. The hop entry component specifies forwarding information which the data plane requires to create the hop through the current AS (in the direction of the beaconing).</t>
            <t>The following code block defines the hop entry component <tt>HopEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopEntry {
       HopField hop_field = 1;
       uint32 ingress_mtu = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the direction of beaconing. Routers need this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
              <li>
                <t><tt>ingress_mtu</tt>: Specifies the maximum transmission unit (MTU) of the ingress interface (in beaconing direction) of the hop being described. The MTU of paths constructed from the containing beacon is necessarily less than or equal to this value. How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured. Current practice to make it a configuration item.</t>
              </li>
            </ul>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
          </section>
          <section anchor="hopfield">
            <name>Hop Field</name>
            <figure anchor="_figure-13">
              <name>Hop Field</name>
              <artwork><![CDATA[
                      +-----------+
                      | Hop Entry |
                      +-----------+
                      +-----+-----+
                            |
                            V
+----------------------------------------------------------+
+-------------+-------------+-------------------+----------+
|   Ingress   |    Egress   |  Expiration Time  |   MAC    |
+-------------+-------------+-------------------+----------+

]]></artwork>
            </figure>
            <t>The Hop Field, part of both hop entries and peer entries, is used directly in the data plane for packet forwarding and specifies the incoming and outgoing interfaces of the ASes on the forwarding path. This information is authenticated with a Message Authentication Code (MAC) which is used by the Control Service of an AS to authenticate path segments with its border routers during packet forwarding.</t>
            <t>The algorithm used to compute the Hop Field MAC is an AS-specific choice, although the Control Services and border routers within an AS <bcp14>MUST</bcp14> use the same algorithm. Implementations <bcp14>MUST</bcp14> also support the Default Hop Field MAC algorithm. See <xref target="I-D.dekater-scion-dataplane"/> section "Authorizing Segments through Chained MACs") for more information including configuration. Endpoints do not compute MACs.</t>
            <t>The following code block defines the Hop Field component <tt>HopField</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopField {
       uint64 ingress = 1;
       uint64 egress = 2;
       uint32 exp_time = 3;
       bytes mac = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>ingress</tt>: The 16-bit ingress interface identifier (in the direction of the path construction, that is, in the direction of beaconing through the current AS).</t>
              </li>
            </ul>
            <t><strong>Note:</strong> For the core AS that initiates the PCB, the ingress interface identifier <bcp14>MUST</bcp14> be set to the "unspecified" value (see <xref target="I-D.dekater-scion-dataplane"/> section Terminology).</t>
            <ul spacing="normal">
              <li>
                <t><tt>egress</tt>: The 16-bit egress interface identifier (in the direction of beaconing).</t>
              </li>
              <li>
                <t><tt>exp_time</tt>: The 8-bit encoded expiration time of the Hop Field, indicating its validity. This field expresses a duration in seconds according to the formula: <tt>duration = (1 + exp_time) * (24*60*60/256)</tt>. The minimum duration is therefore 337.5 s. This duration is relative to the PCB creation timestamp set in the PCB's segment information component (see also <xref target="seginfo"/>). Therefore, the absolute expiration time of the Hop Field is the sum of these two values.</t>
              </li>
              <li>
                <t><tt>mac</tt>: The message authentication code (MAC) used in the data plane to verify the Hop Field, as described in <xref target="I-D.dekater-scion-dataplane"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="peerentry">
            <name>Peer Entry</name>
            <figure anchor="_figure-14">
              <name>Peer Entry</name>
              <artwork><![CDATA[
                      +--------------+
                      |  Peer Entry  |
                      +--------------+
                      +------+-------+
                             |
                             v
+----------------------------------------------------------+
+-------------+------------+--------------+----------------+
|  Hop Field  │  Peer MTU  │ Peer ISD-AS  │ Peer Interface |
+-------------+------------+--------------+----------------+

]]></artwork>
            </figure>
            <t>By means of a peer entry, an AS can announce that it has a peering link to another AS. A peer entry is an optional component of a PCB - it is only included if there is a peering link to a peer AS.</t>
            <t>The following code block defines the peer entry component <tt>PeerEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message PeerEntry {
       uint64 peer_isd_as = 1;
       uint64 peer_interface = 2;
       uint32 peer_mtu = 3;
       HopField hop_field = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>peer_isd_as</tt>: The ISD-AS number of the peer AS. This number is used to match peering segments during path construction.</t>
              </li>
              <li>
                <t><tt>peer_interface</tt>: The 16-bit interface identifier of the peering link on the peer AS side. This identifier is used to match peering segments during path construction.</t>
              </li>
              <li>
                <t><tt>peer_mtu</tt>: Specifies the maximum transmission unit (MTU) of the peering link being described. The MTU of paths via such link is necessarily less than or equal to this value. How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured, but current practice is to make it a configuration item.</t>
              </li>
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the current AS (coming from the peering link, in the direction of beaconing - see also <xref target="_figure-6"/>). The data plane needs this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
            </ul>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
            <figure anchor="_figure-15">
              <name>Peer entry information, in the direction of beaconing</name>
              <artwork><![CDATA[
   +-----------+
   |           |
   | Parent AS |
   |           |
   +-----+-----+
         #
         |
         * ASE.HF.ingress_interface
+--------+-----------+
|        |           |        PE.peer_  +-----------+
|        |           |        interface |           |
|        | +---------+p----------------p+  Peer AS  |
|        | |         | PE.HF.ingress_   |           |
|        | |         | interface        +-----------+
|        | |         |
|        v v         |
+---------+----------+
          # PE.HF.egress_interface
          │ ASE.HF.egress_interface
          *
    +-----+-----+
    |           |
    | Child AS  |
    |           |
    +-----------+

]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="pcb-ext">
          <name>PCB Extensions</name>
          <t>In addition to basic routing information such a hop entries and peer entries, PCBs can be used to communicate additional metadata in extensions. Extensions can be signed and unsigned: signed extensions are protected by the AS signature, whereas unsigned extensions are not.</t>
          <t>In Protobuf, extensions are specified as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Unsigned extensions <tt>PathSegmentUnsignedExtensions</tt> are part of the AS entry component (the <tt>ASEntry</tt> message, see also <xref target="as-entry"/>).</t>
            </li>
            <li>
              <t>Signed extensions <tt>PathSegmentExtensions</tt> are part of the signed body component of an AS entry (the <tt>ASEntrySignedBody</tt> message, see also <xref target="ase-sign"/>).</t>
            </li>
          </ul>
          <t><strong>Note:</strong> SCION also supports so-called "detachable extensions". The detachable extension is part of a PCB's unsigned extensions, but a cryptographic hash of the detachable extension data is added to the signed extensions. Thus, a PCB with a detachable extension can be signed and verified without actually including the detachable extension in the signature. This prevents a possible processing overhead caused by large cryptographically-protected extensions.</t>
        </section>
        <section anchor="pcb-validity">
          <name>PCB Validity</name>
          <t>To be valid (that is, usable to construct a valid path), a PCB <bcp14>MUST</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Contain valid AS Entry signatures (<xref target="sign"/>).</t>
            </li>
            <li>
              <t>Have a timestamp (<xref target="seginfo"/>) that is not in the future.</t>
            </li>
            <li>
              <t>Contain only unexpired hops (<xref target="hopfield"/>).</t>
            </li>
          </ul>
          <t>For the purpose of validation, a timestamp is considered "future" if it is later than the current time at the point of validation plus an allowance for differences between the validator's and originator's clock. As an allowance, it is recommended to use the granularity of the hopfield expiration time (that is 337.5 seconds, see <xref target="hopfield"/>).</t>
          <t>For the purpose of validation, a hop is considered expired if its absolute expiration time, calculated as defined in <xref target="hopfield"/>, is later than the current time at the point of validation.</t>
        </section>
        <section anchor="configuration">
          <name>Configuration</name>
          <t>For the purpose of constructing and propagating path segments, an AS Control Service must be configured with links to neighboring ASes. Such information may be conveyed to the Control Service in an out-of-band fashion (e.g in a configuration file). For each link, these values <bcp14>MUST</bcp14> be configured:</t>
          <ul spacing="normal">
            <li>
              <t>Local Interface ID. This <bcp14>MUST</bcp14> be unique within each AS.</t>
            </li>
            <li>
              <t>Neighbor type (core, parent, child, peer), depending on link type (see <xref target="paths-links"/>). Link type depends on mutual agreements between the organizations operating the ASes at each end of each link.</t>
            </li>
            <li>
              <t>Neighbor ISD-AS number</t>
            </li>
            <li>
              <t>Neighbor interface underlay address</t>
            </li>
          </ul>
          <t>The maximum MTU supported by all intra-AS links <bcp14>MAY</bcp14> also be configured.</t>
          <t>The AS <bcp14>SHOULD</bcp14> adopt a PCB selection policy that does not accidentally isolate the AS from the network, i.e. such that it does not block connectivity to parent providers and ensures downstream connectivity for children. For more details, see <xref target="selection"/>.</t>
        </section>
      </section>
      <section anchor="path-prop">
        <name>Propagation of PCBs</name>
        <t>This section describes how PCBs are received, selected and further propagated in the path exploration process.</t>
        <section anchor="reception">
          <name>Reception of PCBs</name>
          <t>Upon receiving a PCB, the Control Service of an AS performs the following checks:</t>
          <ol spacing="normal" type="1"><li>
              <t>PCB validity: It verifies the validity of the PCB (see <xref target="pcb-validity"/>) and invalid PCBs <bcp14>MUST</bcp14> be discarded. The PCB contains the version numbers of the TRC(s) and certificate(s) that <bcp14>MUST</bcp14> be used to verify its signatures which enables the Control Service to check whether it has the relevant TRC(s) and certificate(s). If not, they can be requested from the Control Service of the sending AS through the API described in <xref target="_figure-36"/>.</t>
            </li>
            <li>
              <t>Loop avoidance: If it is a core AS, the Control Service <bcp14>MUST</bcp14> 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. This step is necessary because core beaconing is based on propagating PCBs to all AS neighbors. Additionally, core ASes <bcp14>SHOULD</bcp14> discard PCBs that were propagated at any point by a non-core AS. Ultimately, core ASes <bcp14>MAY</bcp14> make a policy decision not to propagate beacons containing path segments that traverse the same ISD more than once as this can be legitimate, e.g. if the ISD spans a large geographical area, a path transiting another ISD may constitute a shortcut.</t>
            </li>
            <li>
              <t>Incoming Interface: the last ISD-AS entry in a received PCB (in its AS Entry Signed Body) <bcp14>MUST</bcp14> coincide with the ISD-AS neighbor of the interface where the PCB was received. If not, the PCB <bcp14>MUST</bcp14> be discarded.</t>
            </li>
            <li>
              <t>Continuity: when a PCB contains two or more AS entries, the receiver Control Service <bcp14>MUST</bcp14> check every AS entry except the last and discard beacons where the ISD-AS of an entry does not equal the ISD-AS of the next entry.</t>
            </li>
          </ol>
          <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.</t>
        </section>
        <section anchor="storing">
          <name>Storing Candidate PCBs</name>
          <t>An AS stores candidate PCBs in a temporary storage called the <em>Beacon Store</em>. The management of this storage is implementation defined.</t>
          <t>Current practice is to retain all PCBs until expired or replaced by one describing the same path with a later origination time.</t>
        </section>
        <section anchor="selection">
          <name>PCB Selection Policies</name>
          <t>An AS <bcp14>MUST</bcp14> select which PCBs to propagate further. The selection process can inspect and compare the properties of the candidate PCBs (e.g. length, disjointness across different paths, age, expiration time) and/or take into account which PCBs have been propagated in the past. The PCBs to select or eliminate is determined by the policy of the AS.</t>
          <t>In order to avoid excessive overhead on the path discovery system in bigger networks, an AS should only propagate those candidate PCBs with the highest probability of meeting the needs of the endpoints that will perform path construction, in accordance with <xref target="propagation-interval-size"/>.</t>
          <t>As SCION does not provide any in-band signal about the intentions of endpoints nor about the policies of downstream ASes, the policy will typically select a somewhat diverse set optimized for multiple, generic parameters. Selection may be based on criteria such as:</t>
          <ul spacing="normal">
            <li>
              <t>AS path length: from the originator core AS to the child (non-core) AS.</t>
            </li>
            <li>
              <t>Expiration time: the maximum value for the expiration time when extending the segment.</t>
            </li>
            <li>
              <t>ISD or AS exclusion lists: certain ASes or ISD that may not appear in a segment.</t>
            </li>
            <li>
              <t>ISD loops: if permitted, they allow core AS to reach other core ASes in the same ISD via a third party ISDs.</t>
            </li>
            <li>
              <t>Availability of peering links: 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.</t>
            </li>
            <li>
              <t>Path disjointness: Paths can be either AS disjointed or link disjointed. AS disjointed paths have no common upstream/core AS for the current AS, whereas link disjointed paths do not share any AS-to-AS link. AS disjointness allows path diversity in the event that an AS becomes unresponsive, and link disjointness provides resilience in case of link failure. Both criteria can be used depending on the objective of the AS.</t>
            </li>
          </ul>
          <t>The relative disjointness of two PCBs A and B may be calculated by assigning a disjointness score, calculated as the number of links in A that don't appear in B. For example, the beacon that has the highest disjointness score and is not the shortest path should be selected, but if this not better than what has already been selected, then the beacon with the shortest path yet to be selected should be chosen instead.</t>
          <t>A PCB Selection Policy can be expressed as a stateful filter of segments, i.e., a function which indicates whether to accept or deny a given segment. This filter is stateful in that it can be updated each time its AS registers a new segment.
Naturally, an AS's policy selects PCBs corresponding to paths that are commercially or otherwise operationally viable.</t>
        </section>
        <section anchor="propagation-interval-size">
          <name>Propagation Interval and Best PCBs Set Size</name>
          <t>PCBs are propagated in batches to each neighboring AS at a fixed frequency known as the <em>propagation interval</em> which happens for both intra-ISD beaconing and core beaconing. At each propagation event, each AS selects a set of the best PCBs from the candidates in the Beacon Store according to the AS's selection policy. This set <bcp14>SHOULD</bcp14> have a fixed size, the <em>best PCBs set size</em>.</t>
          <t>The <em>best PCBs set size</em> <bcp14>SHOULD</bcp14> be:</t>
          <ul spacing="normal">
            <li>
              <t>For intra-AS beaconing (i.e. propagating to children ASes): at most 50.</t>
            </li>
            <li>
              <t>For core beaconing (i.e. propagation between core ASes): at most 5 per immediate neighbor core AS. Current practice is that each set of 5 is chosen among the PCBs received from each neighbor.</t>
            </li>
          </ul>
          <t>Note that the PCBs set size should not be too low, in order to make sure that beaconing can discover a wide amount of paths.
Values above are <bcp14>RECOMMENDED</bcp14> maxima which represent a tradeoff between scalability and amount of paths discovered.
In current practice the intra-ISD set size is typically 20.</t>
          <t>Depending on the selection criteria, it may be necessary to keep more candidate PCBs than the <em>best PCBs set size</em> in the Beacon Store in order to determine the best set of PCBs. If this is the case, an AS <bcp14>SHOULD</bcp14> have a suitable pre-selection of candidate PCBs in place in order to keep the Beacon Store capacity limited.</t>
          <ul spacing="normal">
            <li>
              <t>The <em>propagation interval</em> <bcp14>SHOULD</bcp14> be at least "5" (seconds) for intra-ISD beaconing and at least "60" (seconds) for core beaconing.</t>
            </li>
          </ul>
          <t>Note that to ensure establish quick connectivity, an AS <bcp14>MAY</bcp14> attempt to forward a PCB more frequently ("fast recovery"). Current practice is to increase the frequency of attempts if no PCB propagation is known to have succeeded within the last propagation interval:</t>
          <ul spacing="normal">
            <li>
              <t>because the corresponding RPC failed;</t>
            </li>
            <li>
              <t>or because no beacon was available to propagate.</t>
            </li>
          </ul>
          <t>The scalability implications of such parameters are further discussed in <xref target="scalability"/>.</t>
        </section>
        <section anchor="path-segment-prop">
          <name>Propagation of Selected PCBs</name>
          <t>To bootstrap the initial communication with a neighboring beacon service, ASes use one-hop paths. This special kind of path handles beaconing between neighboring ASes for which no forwarding path may be available yet. It is the task of beaconing to discover such forwarding paths and the purpose of one-hop paths is to break this circular dependency. The One-Hop Path Type is described in more detail in <xref target="I-D.dekater-scion-dataplane"/>.</t>
          <section anchor="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 <bcp14>MUST</bcp14> add a new AS entry (see <xref target="as-entry"/>), including any Peer Entry information (see <xref target="peerentry"/>) the AS is configured to advertise to every selected PCB.</t>
              </li>
              <li>
                <t>The Control Service <bcp14>MUST</bcp14> 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 neighboring AS specified in the new AS entry by invoking the <tt>SegmentCreationService.Beacon</tt> remote procedure call (RPC) in the Control Services of the neighboring ASes (see also <xref target="prop-proto"/>).</t>
              </li>
            </ol>
          </section>
          <section anchor="propagation-of-pcbs-in-core-beaconing">
            <name>Propagation of PCBs in Core Beaconing</name>
            <t>The propagation process in core beaconing includes the following steps:</t>
            <ol spacing="normal" type="1"><li>
                <t>The core Control Service selects the best PCBs to forward to neighboring core ASes observed so far.</t>
              </li>
              <li>
                <t>The service adds a new AS entry to every selected PCB which <bcp14>MUST</bcp14> include:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>The egress interface to the neighboring core AS in the Hop Field component.</t>
                  </li>
                  <li>
                    <t>The ISD_AS number of the neighboring core AS in the signed body component of the AS entry.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>The core Control Service <bcp14>MUST</bcp14> sign the extended PCBs and append the computed signature.</t>
              </li>
              <li>
                <t>As a final step, the service propagates the extended PCBs to the neighboring core ASes by invoking the <tt>SegmentCreationService.Beacon</tt> remote procedure call (RPC) in the Control Services of the neighboring core ASes (see also <xref target="prop-proto"/>).</t>
              </li>
            </ol>
          </section>
          <section anchor="prop-proto">
            <name>Propagation of PCBs in Protobuf Message Format</name>
            <t>The last step of the above described core and intra-ISD propagation procedures is implemented as follows in Protobuf message format:</t>
            <artwork><![CDATA[
   service SegmentCreationService {
       rpc Beacon(BeaconRequest) returns (BeaconResponse) {}
   }

   message BeaconRequest {
       PathSegment segment = 1;
   }

   message BeaconResponse {}
]]></artwork>
            <t>The propagation procedure includes the following elements:</t>
            <ul spacing="normal">
              <li>
                <t><tt>SegmentCreationService</tt>: Specifies the service via which the extended PCB is propagated to the Control Service of the neighboring AS.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>Beacon</tt>: Specifies the method that calls the Control Service at the neighboring AS in order to propagate the extended PCB.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconRequest</tt>: Specifies the request message sent by the <tt>Beacon</tt> method to the Control Service of the neighboring AS. It contains the following element:
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>PathSegment</tt>: Specifies the path segment to propagate to the neighboring AS. For more information on the Protobuf message type <tt>PathSegment</tt>, see <xref target="segment"/>.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconResponse</tt>: An empty message returned as an acknowledgement upon success.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <section anchor="monitoring-considerations">
        <name>Monitoring Considerations</name>
        <t>In order to maintain service availability, an AS <bcp14>SHOULD</bcp14> monitor the following aspects when deploying the SCION control plane:</t>
        <ul spacing="normal">
          <li>
            <t>For routers (to enable correlation with link states): state of configured links (core, child, parent)</t>
          </li>
          <li>
            <t>For any control service:
            </t>
            <ul spacing="normal">
              <li>
                <t>Fraction of path lookups served successfully (see <xref target="lookup"/>)</t>
              </li>
              <li>
                <t>Time synchronization offset with other ASes (see <xref target="clock-inaccuracy"/>)</t>
              </li>
              <li>
                <t>Fraction of ASes found in non-expired segments for which a non-expired certificate exists</t>
              </li>
            </ul>
          </li>
          <li>
            <t>For a core AS:
            </t>
            <ul spacing="normal">
              <li>
                <t>Fraction of core ASes (preferably only those to which the link is up) that can be found in non-expired core segments</t>
              </li>
              <li>
                <t>Fraction of ASes, core or children, (preferably only those to which the link is up) whereto a beacon was initiated during the last propagation interval</t>
              </li>
              <li>
                <t>Fraction of freshly propagated beacons for which at least one corresponding down segment has been registered (see <xref target="path-segment-reg"/>)</t>
              </li>
            </ul>
          </li>
          <li>
            <t>For a non-core AS:
            </t>
            <ul spacing="normal">
              <li>
                <t>Number of up segments available (may be just 0/non-0) younger than the propagation interval (or some multiple thereof).</t>
              </li>
              <li>
                <t>Fraction of up segments that were successfully registered as down segments (see <xref target="path-segment-reg"/>).</t>
              </li>
              <li>
                <t>Fraction of children ASes (preferably only those to which the link is up) whereto a beacon was propagated during the last propagation interval</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="clock-inaccuracy">
        <name>Effects of Clock Inaccuracy</name>
        <t>A PCB originated by a given Control Service is validated by all the Control Services that receive it. All have different clocks and their differences affect the validation process:</t>
        <ul spacing="normal">
          <li>
            <t>A fast clock at origination or a slow clock at reception will yield a lengthened expiration time for hops, and possibly an origination time in the future.</t>
          </li>
          <li>
            <t>A slow clock at origination or a fast clock at reception will yield a shortened expiration time for hops, and possibly an expiration time in the past.</t>
          </li>
        </ul>
        <t>This bias comes in addition to a structural delay: PCBs are propagated at a configurable interval - typically around one minute. As a result of this and the way they are iteratively constructed, PCBs with N hops may be validated up to N intervals (so maximally N minutes) after origination which creates a constraint on the expiration of hops. Hops of the minimal expiration time (337.5 seconds - see <xref target="hopfield"/>) would make any PCB describing a path longer than 5 hops expire. For this reason it is unadvisable to create hops with a short expiration time - they <bcp14>SHOULD</bcp14> be around 6 hours.</t>
        <t>The Control Service and its clients authenticate each-other according to their respective AS's certificate. Path segments are authenticated based on the certificates of the ASes that they refer to. The <bcp14>RECOMMENDED</bcp14> expiration time of a SCION AS certificate is between 3h and 3 days. Some deployments use up to 5 days.
In comparison to these time scales, clock offsets in the order of minutes are immaterial.</t>
        <t>Each administrator of a SCION Control Service is responsible for maintaining sufficient clock accuracy. No particular method is assumed by this specification.</t>
      </section>
      <section anchor="scalability">
        <name>Path Discovery Time and Scalability</name>
        <t>The path discovery mechanism balances the number of discovered paths and the time it takes to discover them versus resource overhead of the discovery.</t>
        <t>The resource costs for path discovery are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Communication overhead is transmitting the PCBs and occasionally obtaining the required PKI material.</t>
          </li>
          <li>
            <t>Processing overhead is validating the signatures of the AS entries, signing new AS entries, and to a lesser extent, evaluating the beaconing policies.</t>
          </li>
          <li>
            <t>Storage overhead is both the temporary storage of PCBs before the next propagation interval, and the storage of complete discovered path segments.</t>
          </li>
        </ul>
        <t>All of these are dependent on the number and length of the discovered path segments, i.e. the total number of AS entries of the discovered path segments.</t>
        <t>Interesting metrics for scalability and speed of path discovery are the time until all discoverable path segments have been discovered after a network bootstrap, and the time until a new link is usable. In general, the time until a specific PCB is built depends on its length, the propagation interval, and whether on-path ASes use "fast recovery".</t>
        <t>At each AS, the PCB will be processed and propagated at the subsequent propagation event. As propagation events are not synchronized between different ASes, a PCB arrives at a random point in time during the interval and may be buffered before potentially being propagated. With a propagation interval T at each AS, the mean time until the PCB is propagated in one AS therefore is T / 2 and the mean total time for the propagation steps of a PCB of length L is at worst L * T / 2 (with a variance of L * T^2 / 12).</t>
        <t>Note that link removal is not part of path discovery in SCION. For scheduled removal of links, operators let path segments expire. On link failures, endpoints route around the failed link by switching to different paths in the data plane (see <xref target="I-D.dekater-scion-dataplane"/> section "Handling Link Failures").</t>
        <t>To achieve scalability, SCION partitions ASes into ISDs and in an ideal topology the inter-ISD core network should be kept to a moderate size. For more specific observations, we distinguish between intra-ISD and inter-ISD beaconing.</t>
        <section anchor="intra-isd-beaconing">
          <name>Intra-ISD Beaconing</name>
          <t>In the intra-ISD beaconing, PCBs are propagated top down along parent-child links from core to leaf ASes. Each AS discovers path segments from itself to the core ASes of its ISD.</t>
          <t>This typically produces an acyclic graph which is narrow at the top, widens towards the leafs, and is relatively shallow. Intermediate provider ASes will have a large number of children, while they only have a small number of parents and the chain of intermediate providers from a leaf AS to a core AS is typically not long (e.g. local, regional, national provider, then core).</t>
          <t>Each AS potentially receives PCBs for all down path segments from the core to itself. While the number of distinct provider chains to the core is typically moderate, the multiplicity of links between provider ASes has multiplicative effect on the number of PCBs. Once this number grows above the maximum recommended best PCBs set size of 50, ASes <bcp14>SHOULD</bcp14> trim the set of PCBs propagated.</t>
          <t>Ultimately, the number of PCBs received by an AS per propagation interval remains bounded by 50 for each parent link of an AS, and at most 50 PCBs per child link are propagated. The length of these PCBs and thus the number of AS entries to be processed and stored, is expected to be moderate and not grow considerably with network size. The total resource overhead for beacon propagation is easily manageable even for highly connected ASes.</t>
          <t>To illustrate this, an AS with a rather large number of 100 parent links receives at most 5000 PCBs during a propagation interval. Assuming a generous average length of 10 AS entries for these PCBs, this corresponds to 50000 AS entries.</t>
          <t>Due to the variable length fields in AS entries, the sizes for storage and transmission cannot be predicted exactly, but assume an average of 250 bytes per AS entry. At the shortest recommended propagation interval of 5 seconds, this corresponds to an average bandwidth of around 2.5 MB/s and the processing of 10000 signature verifications per second.</t>
          <t>If the same AS has 1000 child links, the propagation of the beacons will require signing one new AS entry for each of the propagated PCBs for each link (at most 50 per link), i.e. at most 50000 signatures per propagation event. The total bandwidth for the propagation of these PCBs for all 1000 child links would, be roughly around 25 MB/s which is manageable with even modest consumer hardware.</t>
          <t>On a network bootstrap, path segments to each AS are discovered within a number of propagation steps proportional to the longest path. With a 5 second propagation interval and a generous longest path of length 10, all path segments are discovered after 25 seconds on average. When all ASes start propagation just after they've received the first PCBs from any of their upstreams (see 'fast recovery'), the construction of a first path to connect each AS to the ISD core is accelerated.</t>
          <t>When a new parent-child link is added to the network, the parent AS will propagate the available PCBs in the next propagation event. If the AS on the child side of the new link is a leaf AS, path discovery is thus complete after at most one propagation interval. Otherwise, child ASes at distance D below the new link, learn of the new link after at worst D further propagation intervals.</t>
        </section>
        <section anchor="inter-isd-beaconing">
          <name>Inter-ISD Beaconing</name>
          <t>In the inter-ISD core beaconing, PCBs are propagated omnidirectionally along core links. Each AS discovers path segments from itself to any other core AS.</t>
          <t>The number of distinct paths through the core network is typically very large. To keep the overhead manageable, at most 5 path segments to every destination AS are discovered and the propagation frequency is slower than in the intra-ISD beaconing (at least 60 seconds between propagation events).</t>
          <t>Without making strong assumptions on the topology of the core network, we can assume that shortest paths through real world networks are relatively short, e.g. the Barabási-Albert random graph model predicts a diameter of log(N)/log(log(N)) for a network with N nodes <xref target="BollRio-2000"/> and the average distance scales in the same way. Whilst we cannot assume that the selected PCBs are strictly the shortest paths through the network, they are likely to be not very much longer than the shortest paths either.</t>
          <t>With N the number of participating core ASes, an AS receives up to 5 * N PCBs per propagation interval per core link interface. For highly connected ASes, the number of PCBs received thus becomes rather large and in a network of 1000 ASes, a AS with 300 core links receives up to 1.5 million PCBs per propagation interval.</t>
          <t>Assuming an average PCB length of 6 and the shortest propagation interval of 60 seconds, this corresponds to roughly 150 thousand signature validations per second or roughly 38 MB/s. For much larger, more highly connected ASes, the path discovery tasks of the Control Service can be distributed over many instances in order to increase the PCB throughput.</t>
          <t>On a network bootstrap, full connectivity is obtained after a number of propagation steps corresponding to the diameter of the network. Assuming a network diameter of 6, this corresponds to roughly 3 minutes on average. When a new link is added to the network, it will be available to connect two ASes at distances D1 and D2 from the link, respectively, at worst after a mean time (D1+D2)*T/2.</t>
        </section>
      </section>
    </section>
    <section anchor="path-segment-reg">
      <name>Registration of Path Segments</name>
      <t><strong>Path registration</strong> is the process where an AS transforms selected PCBs into path segments, and adding these segments to the relevant path databases thereby making them available to other ASes.</t>
      <t>As mentioned previously, a non-core AS typically receives several PCBs representing several path segments to the core ASes of the ISD the AS belongs to. Out of these PCBs, the non-core AS selects those down path segments through which it wants to be reached, based on AS-specific selection criteria.</t>
      <t>The next step is to register the selected down segments with the Control Service of the relevant core ASes in accordance with a process called <em>intra-ISD path segment registration</em>. As a result, a core AS's Control Service contains all intra-ISD path segments registered by the non-core ASes of its ISD. In addition, each core AS Control Service also stores the preferred core path segments to other core ASes during the <em>core segment registration</em> process.</t>
      <t>Both processes are described below.</t>
      <section anchor="intra-reg">
        <name>Intra-ISD Path Segment Registration</name>
        <t>Every <em>registration period</em> (determined by each AS), the AS's Control Service selects two sets of PCBs to transform into two types of path segments:</t>
        <ul spacing="normal">
          <li>
            <t>Up segments, which allow the infrastructure entities and endpoints in this AS to communicate with core ASes; and</t>
          </li>
          <li>
            <t>Down segments, which allow remote entities to reach this AS.</t>
          </li>
        </ul>
        <t>The up segments and down segments do not have to be equal as AS may want to communicate with core ASes via one or more up segments that differ from the down segment(s) through which it wants to be reached. Therefore, an AS can define different selection policies for the up segment and down segment sets. In addition, the processes of transforming a PCB in an up segment or a down segment differ slightly.</t>
        <section anchor="term-pcb">
          <name>Terminating a PCB</name>
          <t>Both the up segments and down segments end at the AS, so by transforming a PCB into a path segment, an AS "terminates" the PCB for this AS ingress interface and at that moment in time.</t>
          <t>The Control Service of a non-core performs the following steps to "terminate" a PCB:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Control Service adds a new AS entry to the PCB which <bcp14>MUST</bcp14> be defined as follows:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The next AS <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>In Protobuf message format, this means that the value of the <tt>next_isd_as</tt> field in the <tt>ASEntrySignedBody</tt> component <bcp14>MUST</bcp14> be "0".</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>The egress interface in the Hop Field component <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>In Protobuf message format, this means that the value of the <tt>egress</tt> field in the <tt>HopField</tt> component <bcp14>MUST</bcp14> be "0".</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the AS has peering links, the Control Service <bcp14>MAY</bcp14> add corresponding peer entry components to the signed body of the AS entry - one peer entry component for each peering link that the AS wants to advertise. The egress Interface ID in the Hop Field component of each added peer entry <bcp14>MUST NOT</bcp14> be specified.
              </t>
              <ul spacing="normal">
                <li>
                  <t>In Protobuf message format, this means that the value of the <tt>egress</tt> field in the <tt>HopField</tt> component <bcp14>MUST</bcp14> be "0".</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The Control Service <bcp14>MUST</bcp14> sign the modified PCB and append the computed signature.</t>
            </li>
          </ol>
          <t><strong>Note:</strong></t>
          <ul spacing="normal">
            <li>
              <t>For more information on the signed body component of an AS entry, see <xref target="ase-sign"/>.</t>
            </li>
            <li>
              <t>For more information on a peer entry, see <xref target="peerentry"/>.</t>
            </li>
            <li>
              <t>For more information on the Hop Field component, see <xref target="hopfield"/>.</t>
            </li>
            <li>
              <t>For more information on signing an AS entry, see <xref target="sign"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="transforming-a-pcb-into-an-up-segment">
          <name>Transforming a PCB into an Up Segment</name>
          <t>Every registration period, the Control Service of a non-core AS performs the following steps to transform PCBs into up segments:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Control Service selects the PCBs that it wants to transform into up segments from the candidate PCBs in the Beacon Store.</t>
            </li>
            <li>
              <t>The Control Service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>up segments</strong>.</t>
            </li>
            <li>
              <t>The Control Service adds the newly created up segments to its own path database.</t>
            </li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
        <section anchor="transforming-a-pcb-into-a-down-segment">
          <name>Transforming a PCB into a Down Segment</name>
          <t>Every registration period, the Control Service of a non-core AS performs the following steps to transform PCBs into down segments:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Control Service selects the PCBs that it wants to transform into down segments from the candidate PCBs in the Beacon Store.</t>
            </li>
            <li>
              <t>The Control Service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>down segments</strong>.</t>
            </li>
            <li>
              <t>The Control Service registers the newly created down segments with the Control Services of the core ASes that originated the corresponding PCBs. This is done by invoking the <tt>SegmentRegistrationService.SegmentsRegistration</tt> remote procedure call (RPC) in the Control Services of the relevant core ASes (see also <xref target="reg-proto"/>). The first ISD-AS entry of the path segment <bcp14>MUST</bcp14> be equal to the core ISD-AS where the segment is being registered. If not, the core AS <bcp14>MUST</bcp14> reject the segment.</t>
            </li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
      </section>
      <section anchor="core-path-segment-registration">
        <name>Core Path Segment Registration</name>
        <t>The core beaconing process creates path segments from core AS to core AS. These core segments are then added to the Control Service path database of the core AS that created the segment, so that local and remote endpoints can obtain and use these core segments. In contrast to the intra-ISD registration procedure, there is no need to register core segments with other core ASes as each core AS will receive PCBs originated from every other core AS.</t>
        <t>In every registration period, the Control Service of a core AS performs the following operations:</t>
        <ol spacing="normal" type="1"><li>
            <t>The core Control Service selects the best PCBs towards each core AS observed so far.</t>
          </li>
          <li>
            <t>The core Control Service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>core segments</strong>.</t>
          </li>
          <li>
            <t>The Control Service adds the newly created core segments to its own path database.</t>
          </li>
        </ol>
        <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
      </section>
      <section anchor="reg-proto">
        <name>Path Segment Registration gRPC API</name>
        <t>The Control Service of a non-core AS has to register the newly created down segments with the Control Services of the core ASes that originated the corresponding PCBs. This registration step is implemented as follows in Protobuf message format:</t>
        <artwork><![CDATA[
   enum SegmentType {
       SEGMENT_TYPE_UNSPECIFIED = 0;
       SEGMENT_TYPE_UP = 1;
       SEGMENT_TYPE_DOWN = 2;
       SEGMENT_TYPE_CORE = 3;
   }

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

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

       map<int32, Segments> segments = 1;
   }

   message SegmentsRegistrationResponse {}
]]></artwork>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentType</tt>: Specifies the type of the path segment to be registered. Currently, only the following type is used:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>SEGMENT_TYPE_DOWN</tt>: Specifies a down segment.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><tt>map&lt;int32, Segments&gt; segments</tt>: Represents a separate list of segments for each path segment type. The key is the integer representation of the corresponding <tt>SegmentType</tt>.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationResponse</tt>: an empty message returned as an acknowledgement upon success.</t>
          </li>
        </ul>
      </section>
      <section anchor="path-mtu">
        <name>Path MTU</name>
        <t>SCION paths represent a sequence of ASes and inter-AS links; each with possibly different MTUs. As a result, the path MTU is the minimum of the MTUs of each inter-AS link and intra-AS networks it traverses. Such MTU information is disseminated during path construction:</t>
        <ul spacing="normal">
          <li>
            <t>The MTU of each intra-AS network traversed (represented by the MTU field of the corresponding <xref target="ase-sign">AS Entries</xref>)</t>
          </li>
          <li>
            <t>The MTU of each inter-AS link or peering link (indicated by the ingress_mtu field of each <xref target="hopentry"/> or the peer_mtu field of each <xref target="peerentry"/> used)</t>
          </li>
        </ul>
        <t>Such information is then made available to endpoints during the path lookup process (See <xref target="lookup"/>). SCION endpoints are oblivious to the topology of intermediate ASes and when looking up a path they assume that all hops are constrained by the intra-AS MTU of each AS traversed.</t>
      </section>
    </section>
    <section anchor="lookup">
      <name>Path Lookup</name>
      <t>The <em>path lookup</em> is a fundamental building block of SCION's path management as it enables endpoints to obtain path segments found during path exploration and registered during path registration. This allows the endpoints to construct end-to-end paths from the set of possible path segments returned by the path lookup process. The lookup of paths still happens in the control plane, whereas the construction of the actual end-to-end paths happens in the data plane.</t>
      <section anchor="lookup-process">
        <name>Lookup Process</name>
        <t>An endpoint (source) that wants to start communication with another endpoint (destination) requires up to three path segments:</t>
        <ul spacing="normal">
          <li>
            <t>An up segment to reach the core of the source ISD (only if the source endpoint is a non-core AS);</t>
          </li>
          <li>
            <t>a core segment to reach
            </t>
            <ul spacing="normal">
              <li>
                <t>another core AS in the source ISD, in case the destination AS is in the same source ISD, or;</t>
              </li>
              <li>
                <t>a core AS in a remote ISD, if the destination AS is in another ISD, and;</t>
              </li>
            </ul>
          </li>
          <li>
            <t>a down segment to reach the destination AS.</t>
          </li>
        </ul>
        <t>The actual number of required path segments depends on the location of the destination AS as well as on the availability of shortcuts and peering links. More information on combining and constructing paths is provided by <xref target="I-D.dekater-scion-dataplane"/>.</t>
        <t>The process to look up and fetch path segments consists of the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>The source endpoint queries the Control Service in its own AS (i.e. the source AS) for the required segments by sending a SegmentsRequest. The Control Service has up segments stored in its path database and additionally checks if it has appropriate core segments and down segments stored as well - in this case it returns them immediately in a SegmentsResponse.</t>
          </li>
          <li>
            <t>If there are no appropriate core segments and down segments, the Control Service in the source AS queries the Control Services of the reachable core ASes in the source ISD for core segments to core ASes in the destination ISD. To reach the core Control Services, the Control Service of the source AS uses the locally stored up segments.</t>
          </li>
          <li>
            <t>The Control Service of the source AS combines up segments with the newly retrieved core segments. The Control Service then queries the Control Services of the remote core ASes in the destination ISD to fetch down segments to the destination AS. To reach the remote core ASes, the Control Service of the source AS uses the previously obtained and combined up segments and core segments.</t>
          </li>
          <li>
            <t>The Control Service of the source AS returns all retrieved path segments to the source endpoint.</t>
          </li>
          <li>
            <t>Once it has obtained all path segments, the source endpoint combines them into an end-to-end path in the data plane.</t>
          </li>
          <li>
            <t>The destination endpoint, once it receives the first packet, <bcp14>MAY</bcp14> revert the path in the received packet in order to construct a response. This ensures that traffic flows on the same path bidirectionally.</t>
          </li>
        </ol>
        <t><xref target="_table-3"/> below shows which Control Service provides the source endpoint with which type of path segment.</t>
        <table anchor="_table-3">
          <name>Control services responsible for different types of path segments</name>
          <thead>
            <tr>
              <th align="left">Segment Type</th>
              <th align="left">Responsible Control Service(s)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Up-segment</td>
              <td align="left">Control service of the source AS</td>
            </tr>
            <tr>
              <td align="left">Core-segment</td>
              <td align="left">Control service of core ASes in source ISD</td>
            </tr>
            <tr>
              <td align="left">Down-segment</td>
              <td align="left">Control service of core ASes in destination ISD (either the local ISD or a remote ISD)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sequence-of-lookup-requests">
          <name>Sequence of Lookup Requests</name>
          <t>The overall sequence of requests to resolve a path <bcp14>SHOULD</bcp14> be as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Request up segments for the source endpoint at the Control Service of the source AS.</t>
            </li>
            <li>
              <t>Request core segments, which start at the core ASes that are reachable with up segments, and end at the core ASes in the destination ISD. If the destination ISD coincides with the source ISD, this step requests core segments to core ASes that the source endpoint cannot directly reach with an up segment.</t>
            </li>
            <li>
              <t>Request down segments starting at core ASes in the destination ISD.</t>
            </li>
          </ol>
          <t>The segment lookup API gRPC definition can be found in <xref target="_figure-11"/>.</t>
        </section>
        <section anchor="caching">
          <name>Caching</name>
          <t>For the sake of efficiency, the Control Service of the source AS <bcp14>SHOULD</bcp14> cache each returned path segment request. Caching ensures that path lookups are fast for frequently used destinations and is also essential to ensure that the path lookup process is scalable and can be performed with low latency.</t>
          <t>In general, to improve overall efficiency, the Control Services of all ASes <bcp14>SHOULD</bcp14> do the following:</t>
          <ul spacing="normal">
            <li>
              <t>Cache the returned path segments.</t>
            </li>
            <li>
              <t>Send requests in parallel when requesting path segments from other Control Services.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="behavior-of-actors-in-the-lookup-process">
        <name>Behavior of Actors in the Lookup Process</name>
        <t>As described above, the source endpoint resolves paths with a sequence of segment requests to the Control Service of the source AS. The Control Service in the source AS either answers directly or forwards these requests to the responsible Control Services of core ASes. In SCION, the instances that handle these segment requests at the Control Services are called <em>source AS segment-request handler</em> and <em>core AS segment-request handler</em>, respectively.</t>
        <t>This section specifies the behavior of the segment request handlers in the lookup process.</t>
        <section anchor="wildcard">
          <name>Use of Wildcard Addresses in the Lookup Process</name>
          <t>Endpoints can use wildcard addresses to designate any core AS in path segment requests. The segment request handlers <bcp14>MUST</bcp14> expand these wildcard addresses and translate them into one or more actual addresses. <xref target="_table-4"/> below shows who is responsible for what.</t>
          <t><strong>Note:</strong> For general information on the use of wildcard addresses in SCION, see <xref target="serv-disc"/>.</t>
          <table anchor="_table-4">
            <name>Use of wildcards in path segments requests</name>
            <thead>
              <tr>
                <th align="left">Segment Request</th>
                <th align="left">Wildcard Represents</th>
                <th align="left">Expanded/Translated By</th>
                <th align="left">Translated Into</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Up segment</td>
                <td align="left">"Destination" core AS (where up segment ends)</td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address destination core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core segment</td>
                <td align="left">Source core AS (where core segment starts)<sup>1</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core segment</td>
                <td align="left">Destination core AS (where core segment ends)</td>
                <td align="left">Control service of the <em>source core AS</em></td>
                <td align="left">Actual address destination core AS in destination ISD</td>
              </tr>
              <tr>
                <td align="left">Down segment</td>
                <td align="left">"Source" core AS (where down segment starts)<sup>2</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in destination ISD</td>
              </tr>
            </tbody>
          </table>
          <t>1) Includes all core ASes for which an up segment from the source AS exists.<br/>
2) Includes all core ASes in destination ISD with a down segment to destination AS.</t>
        </section>
        <section anchor="segment-request-handler-of-a-non-core-source-as">
          <name>Segment-Request Handler of a Non-Core Source AS</name>
          <t>When the segment request handler of the Control Service of a <em>non-core</em> source AS receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Determine the requested segment type.</t>
            </li>
            <li>
              <t>In the case of an up segment request, look up matching up segments in the path database and return them.</t>
            </li>
            <li>
              <t>In the case of a core segment request from a source core AS to a destination core AS:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for each reachable core AS in the source ISD.</t>
                </li>
                <li>
                  <t>For each core segment request;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching core segments from cache;</t>
                    </li>
                    <li>
                      <t>Otherwise, request the core segments from the Control Services of each reachable core AS at the source of the core segment, and then add the retrieved core segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>In the case of a down segment request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for every core AS in the destination ISD (destination ISD refers to the ISD to which the destination endpoint belongs).</t>
                </li>
                <li>
                  <t>For each segment request;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching down segments from cache;</t>
                    </li>
                    <li>
                      <t>Otherwise, request the down segment from the Control Services of the core ASes at the source of the down segment. Sending the request may require looking up core segments to the source core AS of the down segment, and then adding the retrieved down segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="segment-request-handler-of-a-core-as">
          <name>Segment-Request Handler of a Core AS</name>
          <t>When the segment request handler of a <em>core AS</em> Control Service receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validate the request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The source of the path segment <bcp14>MUST</bcp14> be this core AS.</t>
                </li>
                <li>
                  <t>The request <bcp14>MUST</bcp14> either be;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>for a core segment to a core AS in this ISD or another ISD, or;</t>
                    </li>
                    <li>
                      <t>for a down segment to an AS in this ISD.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the destination is a core or wildcard address, then load matching core segments from the path database and return.</t>
            </li>
            <li>
              <t>Otherwise, load the matching down segments from the path database and return.</t>
            </li>
          </ol>
          <t><xref target="app-c"/> shows by means of an illustration how the lookup of path segments in SCION works.</t>
        </section>
      </section>
    </section>
    <section anchor="scmp">
      <name>SCMP</name>
      <t>The SCION Control Message Protocol (SCMP) provides functionality for network diagnostics, such as traceroute, and error messages that signal packet processing or network-layer problems. SCMP is a helpful tool for network diagnostics and, in the case of External Interface Down and Internal Connectivity Down messages, a signal for endpoints to detect network failures more rapidly and fail-over to different paths. However, SCION nodes should not strictly rely on the availability of SCMP, as this protocol may not be supported by all devices and/or may be subject to rate limiting.</t>
      <t>This document only specifies the messages used for the purposes of path diagnosis and recovery. An extended specification, still a work in progress, can be found in <xref target="SCMP"/>.</t>
      <section anchor="general-format">
        <name>General Format</name>
        <t>Every SCMP message is preceded by a SCION header and zero or more SCION extension headers (see <xref target="I-D.dekater-scion-dataplane"/> section "SCION Header Specification"). The SCMP header is identified by a <tt>NextHdr</tt> value of <tt>202</tt> in the immediately preceding header.</t>
        <t>The messages have the following general format:</t>
        <figure anchor="scmp-format">
          <name>SCMP message format</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="528" viewBox="0 0 528 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="68" y="84">Type</text>
                  <text x="196" y="84">Code</text>
                  <text x="388" y="84">Checksum</text>
                  <text x="252" y="116">Type-dependent</text>
                  <text x="336" y="116">Block</text>
                  <text x="208" y="148">(</text>
                  <text x="252" y="148">variable</text>
                  <text x="316" y="148">length</text>
                  <text x="352" y="148">)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Type-dependent Block                    |
+                                                               +
|                        ( variable length )                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </artset>
        </figure>
        <ul spacing="normal">
          <li>
            <t><tt>Type</tt>: it indicates the type of SCMP message. Its value determines the format of the type-dependent block.</t>
          </li>
          <li>
            <t><tt>Code</tt>: it provides additional granularity to the SCMP type.</t>
          </li>
          <li>
            <t><tt>Checksum</tt>: it is used to detect data corruption.</t>
          </li>
          <li>
            <t><tt>Type-dependent Block</tt>: optional field of variable length which format is dependent on the message type.</t>
          </li>
        </ul>
      </section>
      <section anchor="message-types">
        <name>Message Types</name>
        <t>SCMP messages are grouped into two classes: error messages and informational messages. Error messages are identified by a zero in the high-order bit of the type value. I.e., error messages have a type value in the range of 0-127. Informational messages have type values in the range of 128-255.</t>
        <t>This specification defines the message formats for the following SCMP messages:</t>
        <table>
          <name>Error Message Types</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">Reserved for future use</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">
                <xref target="packet-too-big">Packet Too Big</xref></td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Reserved for future use</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Reserved for future use</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">
                <xref target="external-interface-down">External Interface Down</xref></td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">
                <xref target="internal-connectivity-down">Internal Connectivity Down</xref></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">100</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left">101</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">127</td>
              <td align="left">Reserved for expansion of SCMP error messages</td>
            </tr>
          </tbody>
        </table>
        <table>
          <name>Informational Message Types</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">128</td>
              <td align="left">
                <xref target="echo-request">Echo Request</xref></td>
            </tr>
            <tr>
              <td align="left">129</td>
              <td align="left">
                <xref target="echo-reply">Echo Reply</xref></td>
            </tr>
            <tr>
              <td align="left">130</td>
              <td align="left">
                <xref target="traceroute-request">Traceroute Request</xref></td>
            </tr>
            <tr>
              <td align="left">131</td>
              <td align="left">
                <xref target="traceroute-reply">Traceroute Reply</xref></td>
            </tr>
            <tr>
              <td align="left">200</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left">201</td>
              <td align="left">Private Experimentation</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">255</td>
              <td align="left">Reserved for expansion of SCMP informational messages</td>
            </tr>
          </tbody>
        </table>
        <t>Type values 100, 101, 200, and 201 are reserved for private experimentation.</t>
        <t>All other values are reserved for future use.</t>
      </section>
      <section anchor="checksum-calculation">
        <name>Checksum Calculation</name>
        <t>The checksum is the 16-bit one's complement of the one's complement sum of the
entire SCMP message, starting with the SCMP message type field, and prepended
with a "pseudo-header" consisting of the SCION address header and the Layer 4
protocol type as defined in <xref target="I-D.dekater-scion-dataplane"/> section "SCION Header Specification/Pseudo Header for Upper-Layer Checksum".</t>
      </section>
      <section anchor="processing-rules">
        <name>Processing Rules</name>
        <t>The following rules apply when processing SCMP messages:</t>
        <ul spacing="normal">
          <li>
            <t>If an SCMP error message of unknown type is received at its destination, it <bcp14>MUST</bcp14> be passed to the upper-layer process that originated the packet that caused the error, if it can be identified.</t>
          </li>
          <li>
            <t>If an SCMP informational message of unknown type is received, it <bcp14>MUST</bcp14> be silently dropped.</t>
          </li>
          <li>
            <t>Every SCMP error message <bcp14>MUST</bcp14> include as much of the offending SCION packet as possible. The error message packet - including the SCION header and all extension headers - <bcp14>MUST NOT</bcp14> exceed <strong>1232 bytes</strong> in order to fit into the minimum MTU (see <xref target="I-D.dekater-scion-dataplane"/> section "Deployment Considerations/MTU").</t>
          </li>
          <li>
            <t>In case the implementation is required to pass an SCMP error message to the upper-layer process, the upper-layer protocol type is extracted from the original packet in the body of the SCMP error message and used to select the appropriate process to handle the error. In case the upper-layer protocol type cannot be extracted from the SCMP error message body, the SCMP message <bcp14>MUST</bcp14> be silently dropped.</t>
          </li>
          <li>
            <t>An SCMP error message <bcp14>MUST NOT</bcp14> be originated in response to any of the following:
            </t>
            <ul spacing="normal">
              <li>
                <t>An SCMP error message.</t>
              </li>
              <li>
                <t>A packet which source address does not uniquely identify a single node. E.g., an IPv4 or IPv6 multicast address.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The maximum size 1232 bytes is chosen so that the entire datagram, if encapsulated in UDP and IPv6, does not exceed 1280 bytes (L2 Header excluded). 1280 bytes is the minimum MTU required by IPv6 and it is assumed that, nowadays, this MTU can also be safely expected when using IPv4.</t>
      </section>
      <section anchor="scmp-notification">
        <name>Error Messages</name>
        <section anchor="packet-too-big">
          <name>Packet Too Big</name>
          <figure anchor="_figure-21">
            <name>Packet Too Big format</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="528" viewBox="0 0 528 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="68" y="84">Type</text>
                    <text x="196" y="84">Code</text>
                    <text x="380" y="84">Checksum</text>
                    <text x="140" y="116">Reserved</text>
                    <text x="384" y="116">MTU</text>
                    <text x="148" y="148">As</text>
                    <text x="180" y="148">much</text>
                    <text x="212" y="148">of</text>
                    <text x="240" y="148">the</text>
                    <text x="296" y="148">offending</text>
                    <text x="364" y="148">packet</text>
                    <text x="132" y="164">as</text>
                    <text x="180" y="164">possible</text>
                    <text x="248" y="164">without</text>
                    <text x="296" y="164">the</text>
                    <text x="332" y="164">SCMP</text>
                    <text x="380" y="164">packet</text>
                    <text x="208" y="180">exceeding</text>
                    <text x="268" y="180">1232</text>
                    <text x="316" y="180">bytes.</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Reserved           |             MTU               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                As much of the offending packet                |
+              as possible without the SCMP packet              +
|                    exceeding 1232 bytes.                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </artset>
          </figure>
          <table>
            <name>Error Message field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">2</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">MTU</td>
                <td align="left">The Maximum Transmission Unit of the next-hop link.</td>
              </tr>
            </tbody>
          </table>
          <t>A <strong>Packet Too Big</strong> message <bcp14>SHOULD</bcp14> be originated by a router in response to a
packet that cannot be forwarded because the packet is larger than the MTU of the
outgoing link. The MTU value is set to the maximum size a SCION packet can have
to still fit on the next-hop link, as the sender has no knowledge of the
underlay.</t>
        </section>
        <section anchor="external-interface-down">
          <name>External Interface Down</name>
          <figure anchor="_figure-22">
            <name>External Interface Down format</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="528" viewBox="0 0 528 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,288" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,288" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 264,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                  <path d="M 8,224 L 520,224" fill="none" stroke="black"/>
                  <path d="M 8,288 L 520,288" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="68" y="84">Type</text>
                    <text x="196" y="84">Code</text>
                    <text x="380" y="84">Checksum</text>
                    <text x="136" y="116">ISD</text>
                    <text x="380" y="132">AS</text>
                    <text x="240" y="196">Interface</text>
                    <text x="292" y="196">ID</text>
                    <text x="148" y="244">As</text>
                    <text x="180" y="244">much</text>
                    <text x="212" y="244">of</text>
                    <text x="240" y="244">the</text>
                    <text x="296" y="244">offending</text>
                    <text x="364" y="244">packet</text>
                    <text x="132" y="260">as</text>
                    <text x="180" y="260">possible</text>
                    <text x="248" y="260">without</text>
                    <text x="296" y="260">the</text>
                    <text x="332" y="260">SCMP</text>
                    <text x="380" y="260">packet</text>
                    <text x="208" y="276">exceeding</text>
                    <text x="268" y="276">1232</text>
                    <text x="316" y="276">bytes.</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              ISD              |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+             AS                +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                        Interface ID                           +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                As much of the offending packet                |
+              as possible without the SCMP packet              +
|                    exceeding 1232 bytes.                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </artset>
          </figure>
          <table>
            <name>Error Message field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">5</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">The 16-bit ISD identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">The 48-bit AS identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">Interface ID</td>
                <td align="left">The interface ID of the external link with connectivity issue.</td>
              </tr>
            </tbody>
          </table>
          <t>A <strong>External Interface Down</strong> message <bcp14>SHOULD</bcp14> be originated by a router in response
to a packet that cannot be forwarded because the link to an external AS is broken.
The ISD and AS identifier are set to the ISD-AS of the originating router.
The Interface ID identifies the link of the originating AS that is down.</t>
          <t>Recipients can use this information to route around broken data-plane links.</t>
        </section>
        <section anchor="internal-connectivity-down">
          <name>Internal Connectivity Down</name>
          <figure anchor="_figure-23">
            <name>Internal Connectivity Down format</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="528" viewBox="0 0 528 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,352" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,352" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 264,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                  <path d="M 8,224 L 520,224" fill="none" stroke="black"/>
                  <path d="M 8,288 L 520,288" fill="none" stroke="black"/>
                  <path d="M 8,352 L 520,352" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="68" y="84">Type</text>
                    <text x="196" y="84">Code</text>
                    <text x="380" y="84">Checksum</text>
                    <text x="136" y="116">ISD</text>
                    <text x="380" y="132">AS</text>
                    <text x="192" y="196">Ingress</text>
                    <text x="264" y="196">Interface</text>
                    <text x="316" y="196">ID</text>
                    <text x="188" y="260">Egress</text>
                    <text x="256" y="260">Interface</text>
                    <text x="308" y="260">ID</text>
                    <text x="148" y="308">As</text>
                    <text x="180" y="308">much</text>
                    <text x="212" y="308">of</text>
                    <text x="240" y="308">the</text>
                    <text x="296" y="308">offending</text>
                    <text x="364" y="308">packet</text>
                    <text x="132" y="324">as</text>
                    <text x="180" y="324">possible</text>
                    <text x="248" y="324">without</text>
                    <text x="296" y="324">the</text>
                    <text x="332" y="324">SCMP</text>
                    <text x="380" y="324">packet</text>
                    <text x="208" y="340">exceeding</text>
                    <text x="268" y="340">1232</text>
                    <text x="316" y="340">bytes.</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              ISD              |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+             AS                +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                   Ingress Interface ID                        +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                   Egress Interface ID                         +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                As much of the offending packet                |
+              as possible without the SCMP packet              +
|                    exceeding 1232 bytes.                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </artset>
          </figure>
          <table>
            <name>Error Message field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">6</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">The 16-bit ISD identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">The 48-bit AS identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">Ingress ID</td>
                <td align="left">The interface ID of the ingress link.</td>
              </tr>
              <tr>
                <td align="left">Egress ID</td>
                <td align="left">The interface ID of the egress link.</td>
              </tr>
            </tbody>
          </table>
          <t>A <strong>Internal Connectivity Down</strong> message <bcp14>SHOULD</bcp14> be originated by a router in
response to a packet that cannot be forwarded inside the AS because the
connectivity between the ingress and egress routers is broken. The ISD and AS
identifier are set to the ISD-AS of the originating router. The ingress
Interface ID identifies the interface on which the packet enters the AS. The
egress Interface ID identifies the interface on which the packet is destined to
leave the AS, but the connection is broken to.</t>
          <t>Recipients can use this information to route around a broken data plane inside an
AS.</t>
        </section>
      </section>
      <section anchor="scmp-information">
        <name>Informational Messages</name>
        <section anchor="echo-request">
          <name>Echo Request</name>
          <figure anchor="_figure-24">
            <name>Echo Request format</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="528" viewBox="0 0 528 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="68" y="84">Type</text>
                    <text x="196" y="84">Code</text>
                    <text x="380" y="84">Checksum</text>
                    <text x="140" y="116">Identifier</text>
                    <text x="364" y="116">Sequence</text>
                    <text x="428" y="116">Number</text>
                    <text x="196" y="148">Data</text>
                    <text x="224" y="148">(</text>
                    <text x="268" y="148">variable</text>
                    <text x="324" y="148">Len.</text>
                    <text x="352" y="148">)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Identifier          |        Sequence Number        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Data ( variable Len. )                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </artset>
          </figure>
          <table>
            <name>Informational Message field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">128</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">A 16-bit identifier to aid matching replies with requests</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">A 16-bit sequence number to aid matching replies with requests</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">Variable length of arbitrary data</td>
              </tr>
            </tbody>
          </table>
          <t>Every node <bcp14>SHOULD</bcp14> implement a SCMP Echo responder function that receives Echo Requests and originates corresponding Echo replies.</t>
        </section>
        <section anchor="echo-reply">
          <name>Echo Reply</name>
          <figure anchor="_figure-25">
            <name>Echo Reply format</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="528" viewBox="0 0 528 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="68" y="84">Type</text>
                    <text x="196" y="84">Code</text>
                    <text x="380" y="84">Checksum</text>
                    <text x="140" y="116">Identifier</text>
                    <text x="364" y="116">Sequence</text>
                    <text x="428" y="116">Number</text>
                    <text x="196" y="148">Data</text>
                    <text x="224" y="148">(</text>
                    <text x="268" y="148">variable</text>
                    <text x="324" y="148">Len.</text>
                    <text x="352" y="148">)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Identifier          |        Sequence Number        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Data ( variable Len. )                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </artset>
          </figure>
          <table>
            <name>Informational Message field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">129</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">The identifier of the Echo Request</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">The sequence number of the Echo Request</td>
              </tr>
              <tr>
                <td align="left">Data</td>
                <td align="left">The data of the Echo Request</td>
              </tr>
            </tbody>
          </table>
          <t>Every node <bcp14>SHOULD</bcp14> implement a SCMP Echo responder function that receives Echo Requests and originates corresponding Echo replies.</t>
          <t>The data received in the SCMP Echo Request message <bcp14>MUST</bcp14> be returned entirely and unmodified in the SCMP Echo Reply message.</t>
        </section>
        <section anchor="traceroute-request">
          <name>Traceroute Request</name>
          <figure anchor="_figure-26">
            <name>Traceroute Request format</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="528" viewBox="0 0 528 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,256" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,160" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,256" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 264,160" fill="none" stroke="black"/>
                  <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                  <path d="M 8,256 L 520,256" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="68" y="84">Type</text>
                    <text x="196" y="84">Code</text>
                    <text x="380" y="84">Checksum</text>
                    <text x="140" y="116">Identifier</text>
                    <text x="364" y="116">Sequence</text>
                    <text x="428" y="116">Number</text>
                    <text x="136" y="148">ISD</text>
                    <text x="388" y="164">AS</text>
                    <text x="256" y="228">Interface</text>
                    <text x="308" y="228">ID</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Identifier          |        Sequence Number        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              ISD              |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+              AS               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                          Interface ID                         +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </artset>
          </figure>
          <t>Given a SCION path constituted of hop fields, traceroute allows to identify the corresponding on-path ISD-ASes.</t>
          <table>
            <name>Informational Message field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">130</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">A 16-bit identifier to aid matching replies with requests</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">A 16-bit sequence number to aid matching replies with request</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">Place holder set to zero by SCMP sender</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">Place holder set to zero by SCMP sender</td>
              </tr>
              <tr>
                <td align="left">Interface ID</td>
                <td align="left">Place holder set to zero by SCMP sender</td>
              </tr>
            </tbody>
          </table>
          <t>A border router is alerted of a Traceroute Request message through the Ingress or Egress Router Alert flag set to 1 in the hop field that describes the traversal of that router in a packet's path (see <xref target="I-D.dekater-scion-dataplane"/> section "SCION Header Specification"). When such a packet is received, the border router <bcp14>SHOULD</bcp14> reply with a <xref target="traceroute-reply">Traceroute Reply message</xref>.</t>
        </section>
        <section anchor="traceroute-reply">
          <name>Traceroute Reply</name>
          <figure anchor="_figure-27">
            <name>Traceroute Reply format</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="528" viewBox="0 0 528 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,256" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,160" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,256" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 264,160" fill="none" stroke="black"/>
                  <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                  <path d="M 8,256 L 520,256" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="68" y="84">Type</text>
                    <text x="196" y="84">Code</text>
                    <text x="380" y="84">Checksum</text>
                    <text x="140" y="116">Identifier</text>
                    <text x="364" y="116">Sequence</text>
                    <text x="428" y="116">Number</text>
                    <text x="136" y="148">ISD</text>
                    <text x="388" y="164">AS</text>
                    <text x="256" y="228">Interface</text>
                    <text x="308" y="228">ID</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Identifier          |        Sequence Number        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              ISD              |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+              AS               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                          Interface ID                         +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </artset>
          </figure>
          <table>
            <name>Informational Message field values</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Type</td>
                <td align="left">131</td>
              </tr>
              <tr>
                <td align="left">Code</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Identifier</td>
                <td align="left">The identifier set in the Traceroute Request</td>
              </tr>
              <tr>
                <td align="left">Sequence Nr.</td>
                <td align="left">The sequence number of the Tracroute Request</td>
              </tr>
              <tr>
                <td align="left">ISD</td>
                <td align="left">The 16-bit ISD identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">AS</td>
                <td align="left">The 48-bit AS identifier of the SCMP originator</td>
              </tr>
              <tr>
                <td align="left">Interface ID</td>
                <td align="left">The interface ID of the SCMP originating router</td>
              </tr>
            </tbody>
          </table>
          <t>The identifier is set to the identifier value from the <xref target="traceroute-request">Traceroute Request message</xref>. The ISD and AS identifiers are set to the ISD-AS of the originating border router.</t>
        </section>
      </section>
      <section anchor="scmp-authentication">
        <name>SCMP Authentication</name>
        <t>Authentication of SCMP packets is not specified here. It is currently still experimental so endpoints should validate link down messages (<xref target="external-interface-down">External Interface Down</xref> and <xref target="internal-connectivity-down">Internal Connectivity Down</xref>) with additional signals for reliable operations. These additional signals are outside the scope of this specification.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As described previously, the goal of SCION’s beaconing process in the control plane is to securely discover and disseminate paths between any two ASes. This section describes security considerations for SCION's Control Plane that focuses on <em>inter</em>-domain routing. SCION does not provide intra-domain routing, nor does it provide end-to-end payload encryption so these topics lie outside the scope of this section.</t>
      <t>This section discusses three kinds of threats to the control plane:</t>
      <ol spacing="normal" type="1"><li>
          <t>When an adversary controls one or all core ASes of an ISD and tries to manipulate the beaconing process from the top down (see <xref target="topdown-manipulate"/>).</t>
        </li>
        <li>
          <t>When "ordinary" (non-core) adversaries try to manipulate the beaconing process (see <xref target="manipulate-beaconing"/>).</t>
        </li>
        <li>
          <t>Denial of Services (DoS) attacks where attackers overload different parts of the infrastructure (see <xref target="dos-cp"/>).</t>
        </li>
      </ol>
      <section anchor="security-properties">
        <name>Security Properties</name>
        <t>The SCION control plane provides various security properties, as discussed below.
Here, an AS is described as 'honest' if its private keys are unknown to the attacker and if it uses a unique interface identifier for each link. An honest path is one that only traverses honest ASes. A honest segment is the one created by an honest AS.</t>
        <t>Security properties are:</t>
        <ul spacing="normal">
          <li>
            <t>Connectivity - For every pair of honest ASes X and Y, X will eventually register enough segments to build at least one path (of any length) leading to Y.</t>
          </li>
          <li>
            <t>Forwarding Path Consistency - For every honest path segment registered in any AS
            </t>
            <ul spacing="normal">
              <li>
                <t>its sequence of AS entries corresponds to a continuous SCION forwarding path in the network of inter-domain links</t>
              </li>
              <li>
                <t>the inter-domain network topology remains unchanged since the segment was first generated.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Loop Freedom - For every honest path segment registered in any AS, its sequence of AS entries contains no duplicates, including current and next ISD-AS and Interface IDs.</t>
          </li>
          <li>
            <t>Path Authorization - For every honest path segment registered in any AS and any AS X appearing on that segment (except for the previous one), AS X propagated a PCB corresponding to the segment portion ending in its own entry to its successor AS on the segment.</t>
          </li>
        </ul>
        <t>To ensure that the properties hold across the overall SCION network, all core ASes should be able to reach each other with some sequence of core links, and all non-core ASes should have at least one path up to a core AS. Furthermore, to ensure that the properties hold within a single ISD, all cores ASes of the ISD should be able to reach each other without leaving the ISD, i.e., for every pair of cores in an ISD there is a sequence of SCION links that only traverses ISD members.
A core AS may reach other core ASes in the same ISD via other ISDs. This may be permitted, depending on the ISD's policies.</t>
      </section>
      <section anchor="topdown-manipulate">
        <name>Manipulation of the Beaconing Process by a Core Adversary</name>
        <t>The first risk to the beaconing process comes from an adversary controlling one or more core ASes in an ISD. If the adversary stops all core AS(es) within an ISD from propagating PCBs, the discovery of new paths will halt. In this case, downstream ASes will notice that PCBs are no longer being propagated, but all previously discovered and still valid paths remain usable for data plane forwarding until they expire. This is an unlikely scenario, as it would require compromise of all core ASes within an ISD.</t>
      </section>
      <section anchor="manipulate-beaconing">
        <name>Manipulation of the Beaconing Process by a Non-Core Adversary</name>
        <t>This section examines several possible approaches that could be taken by an "ordinary" non-core adversary to manipulate the beaconing process in the Control Plane. For each case it shows to what extent SCION's design can prevent the corresponding attack or help mitigate it.</t>
        <section anchor="path-hijack">
          <name>Path Hijacking through Interposition</name>
          <t>A malicious AS M might try to manipulate the beaconing process between two neighbor ASes A and B, with the goal to hijack traffic to flow via M. If M can interpose itself on the path between A and B, then it could attempt several potential attacks:</t>
          <ul spacing="normal">
            <li>
              <t>The adversary M could intercept and disseminate a PCB on its way from A to the neighboring AS B, and inject its own AS entry into the PCB toward downstream ASes.</t>
            </li>
            <li>
              <t>The adversary could modify the Hop Fields of an already existing path in order to insert its own AS in the path.</t>
            </li>
            <li>
              <t>The adversary could fully block traffic between AS A and AS B in order to force traffic redirection through an alternate path that includes its own AS.</t>
            </li>
          </ul>
          <t>The first type of attack is detectable and blocked by downstream ASes (e.g. B) because a PCB disseminated by AS A towards AS B contains the "Next ISD AS" field in the entry of AS A, pointing to AS B, and protected by A's signature. If M manipulates the PCB while in flight from A to B, then verification of the manipulated inbound PCBs will fail at AS B, as the adversary's PCBs cannot contain A's correct signature (see <xref target="reception"/>).</t>
          <t>The second type of attack is made impossible by the Hop Field's MAC which protects the Hop Field's integrity and chains it with the previous Hop Fields on the path.</t>
          <t>The third type of attack generally cannot be prevented. However the alternate path would be immediately visible to endpoints as traffic <bcp14>MUST</bcp14> include Hop Fields from AS M.</t>
        </section>
        <section anchor="fake-ases">
          <name>Creation of Spurious ASes and ISDs</name>
          <t>An alternative scenario is when an adversary tries to introduce and spoof a non-existent AS. This would enable the adversary to send traffic with the spoofed AS as a source, allowing the adversary to complicate the detection of its attack and to plausibly deny the misbehavior.</t>
          <t>However, spoofing a new AS requires a registration of that AS with the ISD core to obtain a valid AS certificate, otherwise the adversary cannot construct valid PCBs. As this registration should include a thorough check and authentication by a CA, this cannot be done stealthily which defeats the original purpose.</t>
          <t>Similarly to creating a fake AS, an adversary could try to introduce a new malicious ISD. This involves the generation of its own TRC, finding core ASes to peer with, and convincing other ISDs of its legitimacy to accept the new TRC. Although this setup is not entirely impossible, it requires substantial time and effort and may need the involvement of more than one malicious entity. Here the "costs" of setting up the fake ISD may outweigh the benefits.</t>
        </section>
        <section anchor="peer-link-misuse">
          <name>Peering Link Misuse</name>
          <t>The misuse of a peering link by an adversary represents another type of attack. Consider the case where AS A wants to share its peering link only with one of its downstream neighbors AS B, and therefore selectively includes the peering link only in PCBs sent to B. An adversary may now try to gain access to this peering link by prepending the relevant PCBs to its own path. For this, the adversary needs to be able to (1) eavesdrop on the link from A to B, and (2) obtain the necessary Hop Fields by querying a Control Service and extracting the Hop Fields from registered paths.</t>
          <t>Even if an adversary succeeds in misusing a peering link as described above, SCION is able to mitigate this kind of attack. Each AS includes an egress interface as well as specific “next hop” information to the PCB before disseminating it further downstream. If a malicious entity tries to misuse a stolen PCB by adding it to its own segments, verification will fail upstream as the egress interface mismatches. Therefore, the peering link can only be used by the intended AS.</t>
        </section>
        <section anchor="manipulate-selection">
          <name>Manipulation of the Path-Selection Process</name>
          <t>SCION endpoints select inter-domain forwarding paths. This section discusses some mechanisms with which an adversary can attempt to trick endpoints downstream (in the direction of beaconing) into choosing non-optimal paths. The goal of such attacks is to make paths that are controlled by the adversary more attractive than other available paths.</t>
          <t>In SCION, overall path selection is the result of three steps. Firstly, each AS selects which PCBs are further forwarded to its neighbors. Secondly, each AS chooses the paths it wants to register at the local Control Service (as up segments) and at the core Control Service (as down segments). Thirdly, the endpoint performs path selection among all available paths resulting from a path lookup process.</t>
          <t>These attacks are only successful if the adversary is located within the same ISD and upstream relative to the victim AS. It is not possible to attract traffic away from the core as traffic travels upstream towards the core. Furthermore, the attack may either be discovered downstream (e.g., by seeing large numbers of paths becoming available), or during path registrations. After detection, non-core ASes will be able to identify paths traversing the adversary AS and avoid these paths.</t>
          <t><strong>Announcing Large Numbers of Path Segments</strong> <br/>
This attack is possible if the adversary controls at least two ASes. The adversary can create a large number of links between the ASes under its control which do not necessarily correspond to physical links. This allows the adversary to multiply the number of PCBs forwarded to its downstream neighbor ASes and in turn increases the chance that one or several of these forwarded PCBs are selected by the downstream ASes.</t>
          <t>In general, the number of PCBs that an adversary can announce this way scales exponentially with the number of consecutive ASes the adversary controls. However, this also decreases their chance of being chosen by a downstream AS for PCB dissemination or by an endpoint for path construction as these relatively long paths have to compete with other shorter paths. Furthermore, both endpoints and downstream ASes can detect poorer quality paths in the data plane and switch to better paths.</t>
          <t><strong>Wormhole Attack</strong> <br/>
A malicious AS M1 can send a PCB not only to their downstream neighbor ASes, but also out-of-band to another non-neighbor colluding malicious AS M2. This creates new segments to M2 and M2's downstream neighbor ASes, simulating a link between M1 and M2 which may not correspond to an actual link in the network topology.</t>
          <t>Similarly, a fake path can be announced through a fake peering link between two colluding ASes even if in different ISDs. An adversary can advertise fake peering links between the two colluding ASes, thus offering short paths to many destination ASes. Downstream ASes might have a policy of preferring paths with many peering links and thus are more likely to disseminate PCBs from the adversary. Endpoints are also more likely to choose short paths that make use of peering links.
In the data plane, whenever the adversary receives a packet containing a fake peering link, it can transparently exchange the fake peering Hop Fields with valid Hop Fields to the colluding AS. To avoid detection of the path alteration by the receiver, the colluding AS can replace the added Hop Fields with the fake peering link Hop Fields the sender inserted.</t>
          <t>To defend against this attack, methods to detect the wormhole attack are needed. Per link or path latency measurements can help reveal the wormhole and render the fake peering link suspicious or unattractive. Without specific detection mechanisms these so-called wormhole attacks are unavoidable in routing.</t>
        </section>
      </section>
      <section anchor="dos-cp">
        <name>Denial of Service Attacks</name>
        <t>The beaconing process in the SCION Control Plane relies on control plane communication. ASes exchange control plane messages within each other when propagating PCBs to downstream neighbors, when registering PCBs as path segments, or during core path lookup. Volumetric DoS attacks, where attackers overload a link may make it difficult to exchange these messages.</t>
        <t>SCION limits the impact of such attacks which aim to exhaust network bandwidth on links as ASes can switch to alternative paths that do not contain the congested links. Reflection-based attacks are also prevented as response packets are returned on the same path to the actual sender.</t>
        <t>Other mechanisms are required to avoid transport protocol attacks where the attacker tries to exhaust the resources on a target server, such as for the Control Services, by opening many connections to this. The means to mitigate these kind of DoS attacks are basically the same as for the current Internet, e.g. filtering, geo-blocking or using cookies.</t>
        <t>Thanks to its path awareness, SCION enables more fine-grained filtering mechanisms based on certain path properties. For example, control plane RPC methods that are available to endpoints within an AS are strictly separate from methods available to endpoints from other ASes. Specifically, expensive recursive path segment and trust material lookups are thus shielded from abuse by unauthorized entities.</t>
        <t>For RPC methods exposed to other ASes, the Control Service implementation minimizes its attack surface by rejecting illegitimate callers based on ISD/AS, path type and length and any other available data points as soon as possible, i.e. immediately after determining the request type. For example:</t>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentCreationService.Beacon</tt> can only be called by direct neighbors and thus calls from peers with a path length greater than one can immediately be discarded.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationService.SegmentsRegistration</tt> can only be called from within the same ISD, thus the source address <bcp14>MUST</bcp14> match the local ISD and the number of path segments <bcp14>MUST</bcp14> be 1.</t>
          </li>
        </ul>
        <t>A combination of the mechanism above is used to prevent flooding attacks on the Control Service. In addition, the Control Service <bcp14>SHOULD</bcp14> be deployed in a distributed and replicated manner so that requests can be balanced and a single instance failure does not result in a complete failure of the control plane of a SCION AS.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The ISD and SCION AS number are SCION-specific numbers. They are currently allocated by Anapaya Systems, a provider of SCION-based networking software and solutions (see <xref target="ISD-AS-assignments-Anapaya"/>). This task is being transitioned from Anapaya to the SCION Association (see <xref target="ISD-AS-assignments"/>).</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.dekater-scion-dataplane">
          <front>
            <title>SCION Data Plane</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Jean-Christophe Hugly" initials="J." surname="Hugly">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Samuel Hitz" initials="S." surname="Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   This document describes the data plane of the path-aware, inter-
   domain network architecture SCION (Scalability, Control, and
   Isolation On Next-generation networks).  One of the basic
   characteristics of SCION is that it gives path control to endpoints.
   The SCION Control Plane is responsible for discovering these paths
   and making them available as path segments to the endpoints.  The
   role of the SCION Data Plane is to combine the path segments into
   end-to-end paths, and forward data between endpoints according to the
   specified path.

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

   This document contains new approaches to secure path aware
   networking.  It is not an Internet Standard, has not received any
   formal review of the IETF, nor was the work developed through the
   rough consensus process.  The approaches offered in this work are
   offered to the community for its consideration in the further
   evolution of the Internet.

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

   This document describes the trust model behind the SCION Control
   Plane PKI, including specifications of the different types of
   certificates and the Trust Root Configuration.  It also specifies how
   to deploy the Control Plane PKI infrastructure.

   This document contains new approaches to secure path aware
   networking.  It is not an Internet Standard, has not received any
   formal review of the IETF, nor was the work developed through the
   rough consensus process.  The approaches offered in this work are
   offered to the community for its consideration in the further
   evolution of the Internet.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-panrg-scion-overview-06"/>
        </reference>
        <reference anchor="ISD-AS-assignments-Anapaya" target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">
          <front>
            <title>SCION ISD and AS Assignments</title>
            <author>
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="ISD-AS-assignments" target="http://scion.org/registry/">
          <front>
            <title>SCION Registry</title>
            <author>
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="CHUAT22" target="https://doi.org/10.1007/978-3-031-05288-0">
          <front>
            <title>The Complete Guide to SCION</title>
            <author initials="L." surname="Chuat" fullname="Laurent Chuat">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Basin" fullname="David Basin">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="P." surname="Mueller" fullname="Peter Mueller">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ISBN" value="978-3-031-05287-3"/>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC5398">
          <front>
            <title>Autonomous System (AS) Number Reservation for Documentation Use</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <date month="December" year="2008"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, two blocks of Autonomous System numbers (ASNs) are reserved for use in examples in RFCs, books, documentation, and the like. This document describes the reservation of two blocks of ASNs as reserved numbers for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5398"/>
          <seriesInfo name="DOI" value="10.17487/RFC5398"/>
        </reference>
        <reference anchor="RFC6996">
          <front>
            <title>Autonomous System (AS) Reservation for Private Use</title>
            <author fullname="J. Mitchell" initials="J." surname="Mitchell"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document describes the reservation of Autonomous System Numbers (ASNs) that are for Private Use only, known as Private Use ASNs, and provides operational guidance on their use. This document enlarges the total space available for Private Use ASNs by documenting the reservation of a second, larger range and updates RFC 1930 by replacing Section 10 of that document.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="6"/>
          <seriesInfo name="RFC" value="6996"/>
          <seriesInfo name="DOI" value="10.17487/RFC6996"/>
        </reference>
        <reference anchor="RFC9217">
          <front>
            <title>Current Open Questions in Path-Aware Networking</title>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>In contrast to the present Internet architecture, a path-aware internetworking architecture has two important properties: it exposes the properties of available Internet paths to endpoints, and it provides for endpoints and applications to use these properties to select paths through the Internet for their traffic. While this property of "path awareness" already exists in many Internet-connected networks within single domains and via administrative interfaces to the network layer, a fully path-aware internetwork expands these concepts across layers and across the Internet.</t>
              <t>This document poses questions in path-aware networking, open as of 2021, that must be answered in the design, development, and deployment of path-aware internetworks. It was originally written to frame discussions in the Path Aware Networking Research Group (PANRG), and has been published to snapshot current thinking in this space.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9217"/>
          <seriesInfo name="DOI" value="10.17487/RFC9217"/>
        </reference>
        <reference anchor="RFC9473">
          <front>
            <title>A Vocabulary of Path Properties</title>
            <author fullname="R. Enghardt" initials="R." surname="Enghardt"/>
            <author fullname="C. Krähenbühl" initials="C." surname="Krähenbühl"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>Path properties express information about paths across a network and the services provided via such paths. In a path-aware network, path properties may be fully or partially available to entities such as endpoints. This document defines and categorizes path properties. Furthermore, the document identifies several path properties that might be useful to endpoints or other entities, e.g., for selecting between paths or for invoking some of the provided services. This document is a product of the Path Aware Networking Research Group (PANRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9473"/>
          <seriesInfo name="DOI" value="10.17487/RFC9473"/>
        </reference>
        <reference anchor="BollRio-2000" target="https://kam.mff.cuni.cz/~ksemweb/clanky/BollobasR-scale_free_random.pdf">
          <front>
            <title>The diameter of a scale-free random graph</title>
            <author initials="B." surname="Bollobás" fullname="Béla Bollobás">
              <organization/>
            </author>
            <author initials="O." surname="Riordan" fullname="Oliver Riordan">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SCMP" target="https://docs.scion.org/en/latest/protocols/scmp.html">
          <front>
            <title>SCMP Documentation</title>
            <author initials="" surname="Anapaya">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="" surname="ETH">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="" surname="SCION">
              <organization>SCION Association</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SCIONLAB" target="https://ieeexplore.ieee.org/abstract/document/9259355">
          <front>
            <title>SCIONLAB - A Next-Generation Internet Testbed</title>
            <author initials="J." surname="Kown" fullname="Jonghoon Kwon">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="J." surname="García-Pardo" fullname="Juan A. García-Pardo">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="F." surname="Wirz" fullname="François Wirz">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Frei" fullname="Matthias Frei">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2079?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks go to Alvaro Retana (Futurewei), Joel M. Halpern (Ericsson), 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 also thank Daniel Galán Pascual and Christoph Sprenger from the Information Security Group at ETH Zurich for their inputs based on their formal verification work on SCION. We are also very grateful to Adrian Perrig (ETH Zurich), for providing guidance and feedback about every aspect of SCION. Finally, we are indebted to the SCION development teams of Anapaya, ETH Zurich, and the SCION Association for their practical knowledge and for the documentation about the SCION Control Plane, as well as to the authors of <xref target="CHUAT22"/> - the book is an important source of input and inspiration for this draft.</t>
    </section>
    <section numbered="false" anchor="deployment-testing-scionlab">
      <name>Deployment Testing: SCIONLab</name>
      <t>SCIONLab is a global research network that is available to test the SCION architecture. You can create and use your ASes using your own computation resources which allows you to gain real-world experience of deploying and managing a SCION network.</t>
      <t>More information can be found on the SCIONLab website and in the <xref target="SCIONLAB"/> paper.</t>
    </section>
    <section numbered="false" anchor="app-a">
      <name>Full Control Service gRPC API</name>
      <t>The following code blocks provide, in protobuf format, the entire API by which control services interact.</t>
      <figure anchor="_figure-31">
        <name>Control Service gRPC API - Segment lookup.    This API is exposed on the SCION dataplane by the control    services of core ASes and exposed on the intra-domain protocol    network.</name>
        <artwork><![CDATA[
service SegmentLookupService {
    // Segments returns all segments that match the request.
    rpc Segments(SegmentsRequest) returns (SegmentsResponse) {}
}

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

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

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

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

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

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

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

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

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

message SegmentInformation {
    // Segment creation time set by the originating AS. Segment
    // expiration time is computed relative to this timestamp.
    // The timestamp is encoded as the number of seconds elapsed
    // since January 1, 1970 UTC.
    int64 timestamp = 1;
    // The 16-bit segment ID integer used for MAC computation.
    uint32 segment_id = 2;
}

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

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

message HopEntry {
    // Material to create the data-plane Hop Field.
    HopField hop_field = 1;
    // MTU on the ingress link.
    uint32 ingress_mtu = 2;
}

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

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

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

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

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

message VerificationKeyID {
    uint64 isd_as = 1;
    bytes subject_key_id = 2;
    uint64 trc_base = 3;
    uint64 trc_serial = 4;
}
]]></artwork>
      </figure>
      <t><br/></t>
      <figure anchor="_figure-36">
        <name>Control Service gRPC API - Trust Material representation</name>
        <artwork><![CDATA[
service TrustMaterialService {
    // Return the certificate chains that match the request.
    rpc Chains(ChainsRequest) returns (ChainsResponse) {}
    // Return a specific TRC that matches the request.
    rpc TRC(TRCRequest) returns (TRCResponse) {}
}

message ChainsRequest {
    // ISD-AS of Subject in the AS certificate.
    uint64 isd_as = 1;
    // SubjectKeyID in the AS certificate.
    bytes subject_key_id = 2;
    // Point in time at which the AS certificate must still be valid. In seconds
    // since UNIX epoch.
    google.protobuf.Timestamp at_least_valid_until = 3;
    // Point in time at which the AS certificate must be or must have been
    // valid. In seconds since UNIX epoch.
    google.protobuf.Timestamp at_least_valid_since = 4;
}

message ChainsResponse {
    // List of chains that match the request.
    repeated Chain chains = 1;
}

message Chain {
    // AS certificate in the chain.
    bytes as_cert = 1;
    // CA certificate in the chain.
    bytes ca_cert = 2;
}

message TRCRequest {
    // ISD of the TRC.
    uint32 isd = 1;
    // BaseNumber of the TRC.
    uint64 base = 2;
    // SerialNumber of the TRC.
    uint64 serial = 3;
}

message TRCResponse {
    // Raw TRC.
    bytes trc = 1;
}

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

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

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

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

]]></artwork>
      </figure>
      <t><br/></t>
    </section>
    <section numbered="false" anchor="app-c">
      <name>Path-Lookup Examples</name>
      <t>To illustrate how the path lookup works, we show two path-lookup examples in sequence diagrams. The network topology of the examples is represented in <xref target="_figure-41"/> below. In both examples, the source endpoint is in AS A. <xref target="_figure-42"/> shows the sequence diagram for the path lookup process in case the destination is in AS D, whereas <xref target="_figure-43"/> shows the path lookup sequence diagram if the destination is in AS G. ASes B and C are core ASes in the source ISD, while E and F are core ASes in a remote ISD. Core AS B is a provider of the local AS, but AS C is not, i.e. there is no up-segment from A to C. "CS" stands for Control Service.</t>
      <figure anchor="_figure-41">
        <name>Topology used in the path lookup examples</name>
        <artwork><![CDATA[
+----------------------------+     +----------------------------+
|                            |     |                            |
|                            |     |                            |
|    +------------------+    |     |    +------------------+    |
|    |       Core       |    |     |    |       Core       |    |
|    |                  |    |     |    |                  |    |
|    | +-----+  +-----+ |    |     |    |          +-----+ |    |
|    | |AS C +--+AS B +----------------------------+AS F | |    |
|    | +-+---+  ++-+-++ |    |     |    |          +-+-+-+ |    |
|    |   |       | | |  |    |     |    | +-----+    | |   |    |
|    |   |       | | +--------------------+AS E +----+ |   |    |
|    |   |       | |    |    |     |    | +--+--+      |   |    |
|    +---|-------|-|----+    |     |    +----│---------|---+    |
|        |       | |         |     |         │         |        |
|        |       | |         |     |         │         |        |
|        | +-----+ |         |     |         │         |        |
|        | |       |         |     |         │         |        |
|        | |       |         |     |         │         |        |
|      +-+-+-+  +--+--+      |     |      +--+--+      |        |
|      |AS D |  |AS A |      |     |      |AS G +------+        |
|      +-----+  +-----+      |     |      +-----+               |
|                            |     |                            |
|            ISD 1           |     |            ISD 2           |
+----------------------------+     +----------------------------+

]]></artwork>
      </figure>
      <figure anchor="_figure-42">
        <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,[C->D])|
   | | |                 | |                   |                   |
   | | |<-- -- -- -- -- -+++                   |                   |
   | | | reply (down,[B->D, C->D])             |                   |
   | | |                  |                    |                   |
+--+-+-+---------+        |                    |                   |
|Combine Segments|        |                    |                   |
+----+-----------+        |                    |                   |
     |                    |                    |                   |
     |                    |                    |                   |
     |                    |                    |                   |

]]></artwork>
      </figure>
      <figure anchor="_figure-43">
        <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,*,(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 (down,[F->G])
   | | |<- -- -- -- +++              |               |               |
   | | | reply (down,[E->G,F->G])    |               |               |
   | | |             |               |               |               |
+--+-+-+---------+   |               |               |               |
|Combine Segments|   |               |               |               |
+----+-----------+   |               |               |               |
     |               |               |               |               |
     |               |               |               |               |
     |               |               |               |               |

]]></artwork>
      </figure>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <t>Changes made to drafts since ISE submission. This section is to be removed before publication.</t>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-09">
        <name>draft-dekater-scion-controlplane-09</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>"SCION AS numbers": make text representation for lower 32-bit ASes consistent with PKI draft, add reference to allocation</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Nits and wording improvements</t>
          </li>
          <li>
            <t>Reviewed use of normative language</t>
          </li>
          <li>
            <t>Figures: redraw and use aasvg when possible</t>
          </li>
          <li>
            <t>"Paths and Links": clarify relationship between path segments and links</t>
          </li>
          <li>
            <t>Ensure consistent use of example ranges</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-08">
        <name>draft-dekater-scion-controlplane-08</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>Abstract: reword, mention goal and that document is not an Internet Standard</t>
          </li>
          <li>
            <t>"Propagation of PCBs" section:
            </t>
            <ul spacing="normal">
              <li>
                <t>clarify checks at reception</t>
              </li>
              <li>
                <t>introduce criteria for PCB selection policies</t>
              </li>
              <li>
                <t>remove superfluous policy example figure</t>
              </li>
              <li>
                <t>Propagation Interval and Best PCBs Set Size: mention tradeoff between scalability and amount of paths discovered.</t>
              </li>
              <li>
                <t>reorganize order of paragraphs</t>
              </li>
            </ul>
          </li>
          <li>
            <t>New section "Security Properties" in Security considerations, based on formal model of SCION</t>
          </li>
          <li>
            <t>New figure: Control Service gRPC API - Trust Material definitions</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Moved "Special-Purpose SCION AS Numbers" table later in text</t>
          </li>
          <li>
            <t>Split "Circular dependencies and partitioning" into two sections: "Bootstrapping ability" and "Resistance to partitioning".</t>
          </li>
          <li>
            <t>Explain why PCBs have a next_isd_as field</t>
          </li>
          <li>
            <t>Qualified better the choice of time allowance in the definition of segment from the future in section "PCB Validity".</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-07">
        <name>draft-dekater-scion-controlplane-07</name>
        <ul spacing="normal">
          <li>
            <t>Moved SCMP specification from draft-dekater-scion-dataplane-03 to this document</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-06">
        <name>draft-dekater-scion-controlplane-06</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>New section: Path MTU</t>
          </li>
          <li>
            <t>New section: Monitoring Considerations</t>
          </li>
          <li>
            <t>Completed description of Control Services gRPC API in appendix</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Introduction: clarify goal of the document</t>
          </li>
          <li>
            <t>Clarify typical vs recommended-limits values for best PCB set size and for certificate validity duration.</t>
          </li>
          <li>
            <t>Clarify text representation of ISD-AS</t>
          </li>
          <li>
            <t>General rewording</t>
          </li>
          <li>
            <t>Added reference to SCIONLab as a testbed for implementors</t>
          </li>
          <li>
            <t>Introduced this change log</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-05">
        <name>draft-dekater-scion-controlplane-05</name>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Clarify beaconing fast retry at bootstrapping</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-04">
        <name>draft-dekater-scion-controlplane-04</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>
            <t>Clarified selection of MAC including a default algorithm</t>
          </li>
          <li>
            <t>New section: PCB validity</t>
          </li>
          <li>
            <t>New section: configuration</t>
          </li>
          <li>
            <t>New section: Path Discovery Time and Scalability</t>
          </li>
          <li>
            <t>New section: Effects of Clock Inaccuracy</t>
          </li>
          <li>
            <t>New appendix: Control Service gRPC API</t>
          </li>
        </ul>
        <t>Minor changes:</t>
        <ul spacing="normal">
          <li>
            <t>Introduction: Added overview of SCION components</t>
          </li>
          <li>
            <t>Clarified path reversibility, link types, Interface IDs</t>
          </li>
          <li>
            <t>Fixed private AS range typo</t>
          </li>
          <li>
            <t>Clarified PCB selection policies and endpoint requirements</t>
          </li>
          <li>
            <t>Clarified PCB propagation</t>
          </li>
          <li>
            <t>General edits to make terminology consistent, remove duplication and rationalize text</t>
          </li>
          <li>
            <t>Removed forward references</t>
          </li>
          <li>
            <t>Added RFC2119 compliant terminology</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
2fE/a5Fx1OpPI8k0fXhzP0DcnKpUvgKQm1OsICYWaHFzy/PzgFCKa4zVhpNR
dEcg9zKd6D53Rx0EG7Pp5l2ANJ/fb1bE5HftdlT/X5WpLTEdKgxyjbNp/bDX
/mb/L5s/18LeCxDbHVT0W1+0vlh5Ok37s+ruzJlOiNw+ILc6kKXRW4hJE/k0
Ec8tu0O0w7P5Yb/9zUEz8SiQZQddkmL9YVcHstTz/1SKxZg9oNjDjzyAyirr
HPMWIA98gqLytXmDAFgBk/kCYOXpqARYYTr1Lxt37A5Awh3bhx1bFUijDFj1
FDfLgBVPsZ0nngwep8PFp/gTLmzTC+FiH9BiLwKyUD32F3shJs3itb7Yq6+J
v9gHvNj3u7A11B88aKSJhUCUxzqiaEWM7SpAlhp0DpBQ8fOP/ioq6AFVZ3N5
7TeLnp+PSbvtk9VdMFnt+V88kJqVueP89FWHrnrUpcePZ3ByuI7v6j2se3E7
FpruVKfoHfxvE52tBILamaR5pUJGAySv0jiTNgI6NEBBPxCLRuKipWx91mBy
5Xl/Bh1nPut61czoj/i7ZkhXbeiq+bzg75opXbWiqwY0/31U+ftZozFdNZlX
+LuZg1Qp8da/7wtMow26OphGo/oOYJq0qp9tUtH97lRgXN8JTE3+19Sqf+qk
6tL47tjULPWfa1KfYsPFXt/YAat4czUwDz7Rhi/EbWkwK2M3B5vfLXb1LL1T
Vev5qAX/PPvLHF+Ws91XG30+NovG/9VTMSkVRCet5ytSsWEzx4BfGswDobNm
E35VbOYY8XebVM2Mv9tO1WyLygYcucVfBOY2U7F+VJuxuc1YrF81LTep0Ag7
an/zPGT5y4K55e+fF0y4c89g5+YAWtKwt72bh8/vFm9Wde/uujrB3j2jvfNM
dI+TVq3z1Vmpo4/WMyOSn0k7lsN9B7W2yVS/EzZ1Y/1OjP0Or/3CwdSM9t37
Mdqf12Opmk12EIxgtlfsdr+0vpnctxjcwfd0i95k2/Nwrej5agY+38pX7frn
bNf/G6ZxYr+aV9lFcxAhf4+VVfoUUE41nTV39eXpESbljTHCEovfBd1rU83C
wZXE8HNpMDyddUfaK4iaFRHIdphVIdG3FHzb3vp6XjH3/8i48x9gSB0i1itF
84v1p9yop8T+x5VKIriEo+wqyaPdHapzwylHWLa/KC3q/eSPLxnDFsZ3umRF
brNDNfax3NTacTqpIPM6lVZ+Vxn3+E3HGIXHPabg+zdUjT3pa5exCWdOXWLi
4ORihoXf2tEzIu7iKQwMWFxZweo4Li4vpGeSdNnA+XPKED6EDdFx+j2gIswN
41I9MLlhOjVaCemVGn3gawDpaFJwvRFbDcFSwiqinCa65AZ+tewG7nULapaF
88Vlwx5fEw6PzaQGvXQyknQKqZcRT6w1TnSKEYlx3qf10H5SXDkGe0StK4Vi
ZHHb1qc3TKgVT0nNzqZSQ6xNZWiz/qyHuZgpZUpaB0nXPJda26VJQW8wvcPB
wFa7oxn2AZPWd7p2zLHoYR9BmsGlTHMfmQ31tDrFOaV/TZ7aWsAS9ZNsMLB9
xI6bEp3OHGWczSZW87XwmtJ2BMUsv4gnADTiNBJ6MkduOR3i9r+mHos8uXWr
5n9irX3WkbXY572g1UXLFfSXUv7jrJ+MrIi+gOdFeDq/JnktQdUFRhdN5+2Y
uMw6NfWJR+2TWY7lV10fDelRux5xYZ0R9XVBjgy8AV4/ncLyResHad6j3JA+
tbmHo55K1VaqXYqjw1le5wbZGDEtywRHdH0/SHGUDVmnl9ffJHiQYuEcASxs
G3OEua6AzNXwmnddmib6BU4oWQ2e/Xds/Mn5tdzUk/Pls5QTMrlWAWaz0Gha
R8sWj7PSvHheTm6RepFu25HEv8PweJxEB73AS531L5vPuu7P6cHxieUJCCNG
JJoAW25de2vXConq0V8SnSfLsh6P5J9y3trx2dvq58ewYyUnW1b6u7QxAY66
xfQt3UEWu9pFzJE4ahpTJLP0XRNFvxTew2Mrp9Ku61wZRxYDhpevy+sp9Yq4
xMh7TGmk5vZtaT0nSQ7IwrrCYSjNsUBeoE0l/HIMl0IBWGFPhLY3VoNYBcy4
JgA895y7CQszh1VDFk8NIgM5au0MYgxVx6T5riRqWZOrLC+8BdFyQtJtbwTa
y3LU8HgONdSWXmfoGiQOsBl1nlC93TLMZl5y8EfLkiIPTtXjTMTAsmJpPC4M
xXosHOkYexVZOa4aFcPm6v5VvwPUiAOz+tJE/ociNK6jM+Io2JPIyZnqK0eD
AfxKl1YHlDv3chL3QD7EPX1UKX0+y7/9DDDxIFaoO5lIoUpm1Gy6CJZP+qVT
OjKj3eIOjpiSCoLqpdVEfHlYkLb1Dt/K08uY8plZy8GnswBus/TnKvZ6nyXl
p8Y1pPDlqRP73jFJ+mkp7XVJZ8XWaBzk6vSwluoX/dlU9WhuiSXdh/Agi0h7
I5q3ZIe6Q1fYOXzz7GBne/trbnWVxtSvxoZd+/+7jxdeYp4CAA==

-->

</rfc>
