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

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

<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 trust 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.</t>
      <t><em>Scalability</em> - to improve the scalability of the inter-domain control plane and data plane, avoiding existing limitations related to convergence and forwarding table size. The advertising of path segments is separated into a beaconing process within each Isolation Domain (ISD) and between ISDs which incurs minimal overhead and resource requirements on routers.</t>
      <t>SCION relies on three main components:</t>
      <t><em>PKI</em> - To achieve scalability and trust, SCION organizes existing ASes into logical groups of independent routing planes called <em>Isolation Domains (ISDs)</em>. All ASes in an ISD agree on a set of trust roots called the <em>Trust Root Configuration (TRC)</em> which is a collection of signed root certificates in X.509 v3 format <xref target="RFC5280"/>. The ISD is governed by a set of <em>core ASes</em> which typically manage the trust roots and provide connectivity to other ISDs. This is the basis of the public key infrastructure which the SCION Control Plane relies upon for the authentication of messages that is used for the SCION Control Plane. See <xref target="I-D.dekater-scion-pki"/></t>
      <t><em>Control Plane</em> - performs inter-domain routing by discovering and securely disseminating path information between ASes. The core ASes use Path-segment Construction Beacons (PCBs) to explore intra-ISD paths, or to explore paths across different ISDs.</t>
      <t><em>Data Plane</em> - carries out secure packet forwarding between SCION-enabled ASes over paths selected by endpoints. A SCION border router reuses existing intra-domain infrastructure to communicate to other SCION routers or SCION endpoints within its AS. See <xref target="I-D.dekater-scion-dataplane"/></t>
      <t>This document describes the SCION Control Plane component. It should be read in conjunction with the other components <xref target="I-D.dekater-scion-pki"/> and <xref target="I-D.dekater-scion-dataplane"/>.</t>
      <t>The SCION architecture was initially developed outside of the IETF by ETH Zurich with significant contributions from Anapaya Systems. It is deployed in the Swiss finance sector to provide resilient connectivity between financial institutions. The aim of this document is to document the existing protocol specification as deployed, 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").</t>
        <t><strong>Endpoint</strong>: An endpoint is the start or the end of a SCION path, as defined in <xref target="RFC9473"/>.</t>
        <t><strong>Forwarding Path</strong>: A forwarding path is a complete end-to-end path between two SCION endpoints which is used to transmit packets in the data plane. It can be created with a combination of up to three path segments (an up segment, a core segment, and a down segment).</t>
        <t><strong>Hop Field (HF)</strong>: Hop Field (HF): As they traverse the network, Path Segment Construction Beacons (PCBs) accumulate cryptographically protected AS-level path information in the form of Hop Fields. In the data plane, Hop Fields are used for packet forwarding: they contain the incoming and outgoing interface IDs of the ASes on the forwarding path.</t>
        <t><strong>Info Field (INF)</strong>: Info Field (INF): Each Path Segment Construction Beacon (PCB) contains a single Info field, which provides basic information about the PCB. Together with Hop Fields (HFs), these are used to create forwarding paths.</t>
        <t><strong>Isolation Domain (ISD)</strong>: Isolation Domain (ISD): In SCION, Autonomous Systems (ASes) are organized into logical groups called Isolation Domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (e.g. a common jurisdiction). A possible model is for ISDs to be formed along national boundaries or federations of nations.</t>
        <t><strong>Leaf AS</strong>: An AS at the "edge" of an ISD, with no other downstream ASes.</t>
        <t><strong>MAC</strong>: Message Authentication Code. In the rest of this document, "MAC" always refers to "Message Authentication Code" and never to "Medium Access Control". When "Medium Access Control address" is implied, the phrase "Link Layer Address" is used.</t>
        <t><strong>Path Segment</strong>: Path segments are derived from Path Segment Construction Beacons (PCBs). A path segment can be (1) an up segment (i.e. a path between a non-core AS and a core AS in the same ISD), (2) a down segment (i.e. the same as an up segment, but in the opposite direction), or (3) a core segment (i.e., a path between core ASes). Up to three path segments can be used to create a forwarding path.</t>
        <t><strong>Path Segment Construction Beacon (PCB)</strong>: Core AS control planes generate PCBs to explore paths within their isolation domain (ISD) and among different ISDs. ASes further propagate selected PCBs to their neighboring ASes. As a PCB traverses the network, it carries and accumulates path segments, which can subsequently be used for traffic forwarding.</t>
        <t><strong>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 SCION path between two endpoints essentially traverses one or more links.</t>
        <t>In SCION, Autonomous Systems (ASes) are organized into logical groups called Isolation Domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (i.e. a common jurisdiction). An ISD is administered by a set of distinguished ASes called core ASes.</t>
        <t>SCION distinguishes three types of links between ASes: (1) core links, (2) parent-child links, and (3) peering links.</t>
        <ul spacing="normal">
          <li>
            <t><em>Core</em> links connect two core ASes, which are either within the same or in different ISDs. Core links can exist for various reasons, including provider-customer (where the customer pays the provider for traffic) and peering relationships.</t>
          </li>
          <li>
            <t><em>Parent-child</em> links create a hierarchy between the parent and the child AS within the same ISD. ASes with a parent-child link typically have a provider-customer relationship.</t>
          </li>
          <li>
            <t><em>Peering</em> links exist between ASes with a (settlement-free or paid) peering relationship. They can be established between any two ASes (core or non-core) and can cross ISD boundaries.</t>
          </li>
        </ul>
        <t>These link types form the basis of the notion of "valley free" paths. Valley free paths means that a child AS does not carry transit traffic from a parent AS.</t>
        <t>The SCION paths are always valley free, and consist of at most three segments: an up segment, traversing links from child to parent, then a core segment consisting of core links, followed by a down segment traversing links from parent to child. Peering links can be used as "shortcuts" in an up-core-down path.</t>
        <t>A path can contain at most one peering link shortcut which means they can only be used in paths between ASes within the "customer cone" of the ASes connected by the peering link.</t>
        <t><xref target="_figure-1"/> shows the three types of links for one small ISD with two core ASes A and C, and four non-core ASes D,E,F, and G.</t>
        <figure anchor="_figure-1">
          <name>The three types of SCION links in one ISD. Each node in the figure is a SCION AS.</name>
          <artwork><![CDATA[
+-------------------------+
|                         |       #
|        ISD Core         |       |      parent-child
|  .---.           .---.  |       |      link
| (  A  )*-------*(  C  ) |       |
|  `-#-'           `-#-'  |       0
|    |               |    |
+----|---------------|----+   *-------*  core link
     |               |
     |               |        < - - - >  peering link
   .-0-.           .-0-.
  (  D  )< - - - >(  E  )
   `-#-'           `-#-'
     |               |
     |               |
     |               |
   .-0-.           .-0-.
  (  G  )         (  F  )
   `---'           `---'
]]></artwork>
        </figure>
        <t>Each link connecting SCION routers is bi-directional and is identified by its corresponding egress and ingress interface IDs. An interface ID consists of a 16-bit identifier that <bcp14>MUST</bcp14> be unique within each AS, with the exception of value 0 (see <xref target="I-D.dekater-scion-dataplane"/>). Therefore, they can be chosen and encoded by each AS independently without any need for coordination between ASes.</t>
      </section>
      <section anchor="routing">
        <name>Routing</name>
        <t>SCION provides path-aware inter-domain routing between ASes across the Internet. The SCION Control Plane is responsible for discovering these inter-domain paths and making them available to the endpoints within the ASes.</t>
        <t>SCION inter-domain routing operates on two levels: within a ISD which is called <em>intra</em>-ISD routing, and between ISD which is called <em>inter</em>-ISD routing. Both levels use <em>Path Segment Construction Beacons (PCBs)</em> to explore network paths. A PCB is initiated by a core AS and then disseminated either within an ISD to explore intra-ISD paths, or among core ASes to explore core paths across different ISDs.</t>
        <t>The PCBs accumulate cryptographically protected path and forwarding information at an AS level and store this information in the form of <em>Hop Fields</em>. Endpoints use information from these Hop Fields to create end-to-end forwarding paths for data packets that carry this information in their headers. This also supports multi-path communication among endpoints.</t>
        <t>The creation of an end-to-end forwarding path consists of the following processes:</t>
        <ol spacing="normal" type="1"><li>
            <t><em>Path exploration (or beaconing)</em>: This is the process where an AS discovers paths to other ASes. See also <xref target="beaconing"/>.</t>
          </li>
          <li>
            <t><em>Path registration</em>: This is the process where an AS selects a few PCBs, according to defined policies, turns the selected PCBs into path segments, and adds these path segments to the relevant path infrastructure, thus making them available to other ASes. See also <xref target="path-segment-reg"/>.</t>
          </li>
          <li>
            <t><em>Path resolution</em>: This is the process of actually creating an end-to-end forwarding path from the source endpoint to the destination. For this, an endpoint performs (a) a path lookup step to obtain path segments, and (b) a path combination step to combine the forwarding path from the segments. This last step takes place in the data plane. See also <xref target="lookup"/>.</t>
          </li>
        </ol>
        <t>All processes operate concurrently.</t>
        <t>The <strong>Control Service</strong> is responsible for the path exploration and registration processes in the Control Plane. It is the main control plane infrastructure component within each SCION AS and has the following tasks:</t>
        <ul spacing="normal">
          <li>
            <t>Generating, receiving, and propagating PCBs. Periodically, the Control Service of a core AS generates a set of PCBs, which are forwarded to the child ASes or neighboring core ASes. In the latter case, the PCBs are sent over policy compliant paths to discover multiple paths between any pair of core ASes.</t>
          </li>
          <li>
            <t>Selecting and registering the set of path segments via which the AS wants to be reached.</t>
          </li>
          <li>
            <t>Managing certificates and keys to secure inter-AS communication. Each PCB contains signatures of all on-path ASes and each time the Control Service of an AS receives a PCB, it validates the PCB's authenticity. When the Control Service lacks an intermediate certificate, it can query the Control Service of the neighboring AS that sent the PCB.</t>
          </li>
        </ul>
        <t><strong>Note:</strong> The Control Service of an AS is decoupled from SCION border routers. The Control Service of a specific AS is part of the Control Plane, is responsible for <em>finding and registering suitable paths</em>, and can be deployed anywhere inside the AS. Border routers are deployed at the edge of an AS and their main tasks are to <em>forward data packets</em>.</t>
        <section anchor="path-segments">
          <name>Path Segments</name>
          <t>SCION distinguishes the following types of path segments:</t>
          <ul spacing="normal">
            <li>
              <t>A path segment from a non-core AS to a core AS is an <em>up segment</em>.</t>
            </li>
            <li>
              <t>A path segment from a core AS to a non-core AS is a <em>down segment</em>.</t>
            </li>
            <li>
              <t>A path segment between core ASes is a <em>core segment</em>.</t>
            </li>
          </ul>
          <t>Each path segment starts and/or ends at a core AS.</t>
          <t>All path segments may be inverted: a core segment can be used bidirectionally, an up segment can be converted into a down segment, and a down segment can be converted into an up segment depending on the direction of the end-to-end path. This means that all path segments can be used to send data traffic in both directions.</t>
          <t>The cryptographic protection of PCBs and path segments is based on the Control Plane PKI. The signatures are structured such that the entire message sequence constituting the path segment can be authenticated by anyone with access to this PKI.</t>
          <t>For fast validation of the path information carried in individual packets during packet forwarding, symmetric key cryptography is used and the Hop Fields contain a MAC. These MACs are structured to allow verification of the sequence of hops, but in contrast to the PCBs can only be validated by the border routers of the respective AS.</t>
        </section>
      </section>
      <section anchor="numbering">
        <name>Addressing</name>
        <t>Inter-domain SCION routing is based on an &lt;ISD, AS&gt; tuple. Although a complete SCION address is composed of the &lt;ISD, AS, endpoint address&gt; 3-tuple, the endpoint address is not used for inter-domain routing or forwarding. The endpoint address is of variable length, does not need to be globally unique, and can thus be an IPv4, IPv6, or link layer address.</t>
        <t><strong>Note:</strong> As a consequence of the fact that SCION relies on existing routing protocols (e.g. IS-IS, OSPF, SR) and communication fabric (e.g. IP, MPLS) for intra-domain forwarding, existing internal routers do not need to be changed to support SCION.</t>
        <section anchor="isd-numbers">
          <name>ISD Numbers</name>
          <t>An ISD number is the 16-bit global identifier for an ISD and <bcp14>MUST</bcp14> be globally unique.</t>
          <t>The following table gives an overview of the ISD number allocation:</t>
          <table anchor="_table-1">
            <name>ISD number allocations</name>
            <thead>
              <tr>
                <th align="left">ISD</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">The wildcard ISD.</td>
              </tr>
              <tr>
                <td align="left">1 - 15</td>
                <td align="left">Reserved for documentation and sample code (analogous to <xref target="RFC5398"/>).</td>
              </tr>
              <tr>
                <td align="left">16 - 63</td>
                <td align="left">Private use (analogous to <xref target="RFC6996"/>). Can be used for testing and private deployments</td>
              </tr>
              <tr>
                <td align="left">64 - 4094</td>
                <td align="left">Public ISDs. Should be allocated in ascending order, without gaps and "vanity" numbers.</td>
              </tr>
              <tr>
                <td align="left">4095 - 65535</td>
                <td align="left">Reserved for future use.</td>
              </tr>
            </tbody>
          </table>
          <t>Currently, ISD numbers are allocated by Anapaya, a provider of SCION-based networking software and solutions (see <xref target="ISD-AS-assignments"/>).</t>
        </section>
        <section anchor="scion-as-numbers">
          <name>SCION AS Numbers</name>
          <t>A SCION AS number is the 48-bit identifier for an AS. Although they play a similar role, there is no relationship between SCION AS numbers and BGP ASNs as defined by <xref target="RFC4893"/>. For historical reasons some SCION Autonomous Systems use a SCION AS number where the first 16 bits are 0 and the remaining 32 bits are identical to their BGP ASN, but there is no technical requirement for this.</t>
          <section anchor="special-purpose-scion-as-numbers">
            <name>Special-Purpose SCION AS Numbers</name>
            <table anchor="_table-2">
              <name>AS number allocations</name>
              <thead>
                <tr>
                  <th align="left">AS</th>
                  <th align="left">Size</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">
                    <tt>0:0:0</tt></td>
                  <td align="left">1</td>
                  <td align="left">The wildcard AS</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>0:0:1-0:ffff:ffff</tt></td>
                  <td align="left">~4.3 bill.</td>
                  <td align="left">Public SCION AS numbers</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>1:0:0</tt></td>
                  <td align="left">1</td>
                  <td align="left">Reserved</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>2:0:0/16</tt></td>
                  <td align="left">~4.3 bill.</td>
                  <td align="left">Additional public SCION AS numbers</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ff00:0:0/32</tt></td>
                  <td align="left">65535</td>
                  <td align="left">Reserved for documentation and test/sample code (analogous to <xref target="RFC5398"/>).</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ffaa:0:0/24</tt></td>
                  <td align="left">~16.8 mill.</td>
                  <td align="left">Reserved for private use (analogous to <xref target="RFC6996"/>). These numbers can be used for testing/private deployments.</td>
                </tr>
                <tr>
                  <td align="left">
                    <tt>ffff:ffff:ffff</tt></td>
                  <td align="left">1</td>
                  <td align="left">Reserved</td>
                </tr>
              </tbody>
            </table>
            <t>The rest of the space is currently unallocated.</t>
          </section>
        </section>
        <section anchor="serv-disc">
          <name>Wildcard Addressing</name>
          <t>SCION endpoints use wildcard AS <tt>0:0:0</tt> to designate any core AS, e.g. to place requests for core segments or down segments during path lookup. These wildcard addresses are of the form I-0, to designate any AS in ISD I. For more information, see <xref target="wildcard"/>.</t>
        </section>
        <section anchor="text-representation">
          <name>Text Representation</name>
          <section anchor="isd-numbers-1">
            <name>ISD numbers</name>
            <t>The text representation of SCION ISD numbers <bcp14>MUST</bcp14> be its decimal ASCII representation.</t>
          </section>
          <section anchor="as-numbers">
            <name>AS numbers</name>
            <t>The text representation of SCION AS numbers is similar to IPv6 (see <xref target="RFC5952"/>) but not identical. It <bcp14>MUST</bcp14> be as follows:</t>
            <ul spacing="normal">
              <li>
                <t>It uses a 16-bit colon-separated lower-case hex encoding with leading 0s omitted: <tt>0:0:0</tt> to <tt>ffff:ffff:ffff</tt>.</t>
              </li>
              <li>
                <t>The <tt>::</tt> zero-compression feature of IPv6 <bcp14>MUST NOT</bcp14> be used. The feature has very limited use in a 48-bit address space and would only add more complexity.</t>
              </li>
              <li>
                <t>A range of AS numbers can be shortened with a notation similar to the one used for CIDR IP ranges (<xref target="RFC4632"/>). For example, the range of the lowest 32-bit AS numbers (0-4294967295) can be represented as <tt>0:0:0/16</tt>.</t>
              </li>
              <li>
                <t>For historical reasons, SCION AS numbers in the lower 32-bit range <bcp14>MAY</bcp14> also be represented as decimal for human readability. For example, if a program receives the AS number <tt>0:1:f</tt>, it <bcp14>MAY</bcp14> display the number as "65551".</t>
              </li>
            </ul>
          </section>
          <section anchor="isd-as-tuples">
            <name>&lt;ISD, AS&gt; tuples</name>
            <t>The text representation of SCION addresses <bcp14>MUST</bcp14> be <tt>&lt;ISD&gt;-&lt;AS&gt;</tt>, where <tt>&lt;ISD&gt;</tt> is the text representation of the ISD number, <tt>&lt;AS&gt;</tt> is the text representation of the AS number, and <tt>-</tt> is the litteral ASCII character 0x2D.</t>
            <t>For example, the text representation of AS number 65551 (0x1000f) in ISD number 4 is <tt>4-0000:1:f</tt>.</t>
          </section>
        </section>
      </section>
      <section anchor="avoiding-circular-dependencies-and-partitioning">
        <name>Avoiding Circular Dependencies and Partitioning</name>
        <t>A secure and reliable routing architecture has to be designed specifically to avoid circular dependencies during network initialization. One goal of SCION is that the Internet can start up even after large outages or attacks, in addition to avoiding cascades of outages caused by fragile interdependencies. This section lists the concepts SCION uses to prevent circular dependencies.</t>
        <ul spacing="normal">
          <li>
            <t>Neighbor-based path discovery: Path discovery in SCION is performed by the beaconing mechanism. In order to participate in this process, an AS only needs to be aware of its direct neighbors. As long as no path segments are available, communicating with the neighboring ASes is possible with the one hop path type which does not rely on any path information. SCION uses these <em>one hop paths</em> to propagate PCBs to neighboring ASes to which no forwarding path is available yet. The One Hop Path Type is described in more detail in <xref target="I-D.dekater-scion-dataplane"/>.</t>
          </li>
          <li>
            <t>Path segment types: SCION uses different types of path segments to compose end-to-end paths. Notably, a single path segment already enables intra-ISD communication. For example, a non-core AS can reach the core of the local ISD simply by using an up segment fetched from the local path storage which is populated during the beaconing process.</t>
          </li>
          <li>
            <t>Path reversal: In SCION, every path is reversible. That is, the receiver of a packet can reverse the path in the packet header in order to produce a reply packet without having to perform a path lookup. Such a packet follows the original packet's path backwards.</t>
          </li>
          <li>
            <t>Availability of certificates: In SCION, every entity is required to be in possession of all cryptographic material (including the ISD's TRC and certificates) that is needed to verify any message it sends. This (together with the path reversal) means that the receiver of a message can always obtain all this material by contacting the sender.<br/></t>
          </li>
        </ul>
        <t><strong>Note:</strong> For a detailed description of a TRC and more information on the availability of certificates and TRCs, see the SCION Control-Plane PKI Internet-Draft <xref target="I-D.dekater-scion-pki"/>.</t>
        <t>Besides inter-dependencies, another threat to the Internet is network partition which occurs when one network is split into two because of a link failure. However, partition of the global SCION inter-domain network is much less likely to happen as during normal operation the full network fabric is available, offering multiple paths between all ASes. Even during failures there is no special failure mode required as SCION-enabled ASes can always switch to otherwise unused links.</t>
        <t>Recovering from a partitioned network is also seamless as only coarse time synchronization between the partitions is required to resume normal operation and move forward with updates of the cryptographic material. <xref target="clock-inaccuracy"/> further describes the impact of time synchronization.</t>
      </section>
      <section anchor="communication-protocol">
        <name>Communication Protocol</name>
        <t>All communication between the Control Services in different ASes is expressed in terms of gRPC remote procedure calls (for details, see <xref target="gRPC"/>). Service interfaces and messages are defined in the Protocol Buffer "proto3" interface definition language (for details, see <xref target="proto3"/>).</t>
        <t>The RPC messages are transported via the <xref target="Connect"/>'s rpc protocol; a gRPC-like protocol that carries messages over HTTP/3 (see <xref target="RFC9114"/>)). HTTP3 traffic uses QUIC/UDP (<xref target="RFC9000"/>) as a transport layer. In the case of SCION, UDP relies on the data plane.</t>
        <t><xref target="app-a"/> provides the entire Control Service API definition in protobuf format.</t>
        <t><xref target="app-b"/> provides details about the establishment of the underlying QUIC connections through the data plane.</t>
      </section>
    </section>
    <section anchor="beaconing">
      <name>Path Exploration or Beaconing</name>
      <section anchor="introduction-and-overview">
        <name>Introduction and Overview</name>
        <t><strong>Path Exploration</strong> is the process where an AS discovers paths to other ASes. In SCION, this process is referred to as <em>beaconing</em> and this section provides a detailed explanation of this.</t>
        <t>In SCION, the <em>Control Service</em> of each AS is responsible for the beaconing process. The Control Service generates, receives, and propagates the <em>Path Segment Construction Beacons (PCBs)</em> on a regular basis, to iteratively construct path segments.</t>
        <t>PCBs contain topology and authentication information, and can also include additional metadata that helps with path management and selection. The beaconing process itself is divided into routing processes on two levels, where <em>inter-ISD</em> or core beaconing is based on the (selective) sending of PCBs without a defined direction, and <em>intra-ISD</em> beaconing on top-to-bottom propagation.</t>
        <ul spacing="normal">
          <li>
            <t><em>Inter-ISD or core beaconing</em> is the process of constructing path segments between core ASes in the same or in different ISDs. During core beaconing, the Control Service of a core AS either initiates PCBs or propagates PCBs received from neighboring core ASes to other neighboring core ASes. PCBs are periodically sent over policy compliant paths to discover multiple paths between any pair of core ASes.</t>
          </li>
          <li>
            <t><em>Intra-ISD beaconing</em> creates path segments from core ASes to non-core ASes. For this, the Control Services of core ASes create PCBs and sends them to the non-core child ASes (typically customer ASes) at regular intervals. The Control Service of a non-core child AS receives these PCBs and forwards them to its child ASes, and so on until the PCB reaches an AS without any customer (leaf AS). As a result, all ASes within an ISD receive path segments to reach the core ASes of their ISD.</t>
          </li>
        </ul>
        <t>On its way, a PCB accumulates cryptographically protected path and forwarding information per traversed AS. At every AS, metadata as well as information about the AS's ingress and egress interfaces is added to the PCB. The full PCB message format is described in <xref target="pcbs"/>.</t>
        <section anchor="peering-links">
          <name>Peering Links</name>
          <t>PCBs do not traverse peering links. Instead, peering links are announced along with a regular path in a PCB. If both ASes at either end of a peering link have registered path segments that include this specific peering link, then it is possible to use this peering link during segment combination to create the end-to-end path.</t>
        </section>
        <section anchor="appending-entries-to-a-pcb">
          <name>Appending Entries to a PCB</name>
          <t>Every propagation period (as configured by the AS), the Control Service:</t>
          <ul spacing="normal">
            <li>
              <t>selects the best combinations of PCBs and interfaces connecting to a neighboring AS (i.e. a child AS or a core AS). This is described in <xref target="selection"/>.</t>
            </li>
            <li>
              <t>propagates each selected PCB to the selected egress interface(s) associated with it. This is described in <xref target="path-segment-prop"/>.</t>
            </li>
          </ul>
          <t>For every selected PCB and egress interface combination, the AS appends an <em>AS entry</em> to the selected PCB. This includes a Hop Field that specifies the ingress and egress interface for the packet forwarding through this AS, in the beaconing direction. The AS entry can also contain peer entries.</t>
        </section>
        <section anchor="pcb-propagation-illustrated-examples">
          <name>PCB Propagation - Illustrated Examples</name>
          <t>The following three figures show how intra-ISD PCB propagation works, from the ISD's core AS down to child ASes. Interface identifiers of each AS are numbered with integer values while ASes are described with an upper case letter for the sake of illustration.</t>
          <t>In <xref target="_figure-3a"/> below, core AS X sends the two different PCBs "a" and "b" via two different links to child AS Y: PCB "a" leaves core AS X via egress interface "2", whereas PCB "b" is sent over egress interface "1". Core AS X adds the respective egress information to the PCBs when sending them off, as can be seen in the figure (the entries "<em>Core - Out:2</em>" and "<em>Core - Out:1</em>", respectively).</t>
          <figure anchor="_figure-3a">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 1</name>
            <artwork><![CDATA[
                            +-------------+
                            | Core AS X   |
                            |             |
                            |    2   1    |
                            +----#---#----+
          +--------+             |   |             +--------+
          |PCB     |     +-----+ |   | +-----+     |PCB     |
          |========|-----|PCB a| |   | |PCB b|=====|++++++++|
          |Core    |     +-----+ |   | +-----+     |Core    |
          |- Out:2 |        |    |   |    |        |- Out:1 |
          +--------+        v    |   |    v        +--------+
                                 v   v
                            +----#---#----+
                            |     AS Y    |

]]></artwork>
          </figure>
          <t>AS Y receives the two PCBs "a" and "b" through two different (ingress) interfaces, namely "2" and "3", respectively (see <xref target="_figure-3b"/> below). Additionally, AS Y forwards to AS Z four PCBs that were previously sent by core AS X. For this, AS Y uses the two different (egress) links "5" and "6". AS Y appends the corresponding ingress and egress interface information to the four PCBs. As can be seen in the figure, AS Y also has two peering links to its neighboring peers V and W, through the interfaces "1" and "4", respectively - AS Y includes this information in the PCBs, as well. Thus, each forwarded PCB cumulates path information on its way "down" from core AS X.</t>
          <figure anchor="_figure-3b">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 2</name>
            <artwork><![CDATA[
                        +-----+ |   | +-----+
                        |PCB a| |   | |PCB b|
                        +-----+ |   | +-----+
                           |    |   |    |
                           v    |   |    v
        +-------------+         v   v
        |             |    +----#---#----+    +-------------+
        |             |    |    2   3    |    |             |
        |    AS V     #- --# 1           |    |             |
        |             |    |     AS Y    |    |    AS W     |
        |             |    |           4 #- --#             |
        +-------------+    |             |    |             |
                           |    6   5    |    +-------------+
            +--------+     +----#---#----+     +--------+
            |PCB     |          |   |          |PCB     |
            |========|          |   |          |========|
            |Core X  |          |   |          |Core X  |
            |- Out:2 |          |   |          |- Out:2 |
+--------+  |--------|  +-----+ |   | +-----+  |--------|  +--------+
|PCB     |  |AS Y    |--|PCB c| |   | |PCB d|--|AS Y    |  |PCB     |
|++++++++|  |-In:2   |  +-----+ |   | +-----+  |-In:2   |  |++++++++|
|Core X  |  |-Out:6  |     |    |   |    |     |-Out:5  |  |Core X  |
|- Out:1 |  |-PeerV:1|     v    |   |    v     |-PeerV:1|  |- Out:1 |
|--------|  |-PeerW:4|          |   |          |-PeerW:4|  |--------|
|AS Y    |  +--------+          |   |          +--------+  |AS Y    |
|-In:3   |              +-----+ |   | +-----+              |-In:3   |
|-Out:6  |==============|PCB e| |   | |PCB f|==============|-Out:5  |
|-PeerV:1|              +-----+ |   | +-----+              |-PeerV:1|
|-PeerW:4|                 |    |   |    |                 |-PeerW:4|
+--------+                 v    |   |    v                 +--------+
                                v   v
                           +----#---#----+
                           |    AS Z     |

]]></artwork>
          </figure>
          <t>The following figure shows how the four PCBs "c", "d", "e", and "f", coming from AS Y, are received by AS Z over two different links: PCBs "c" and "e" reach AS Z over ingress interface "5", whereas PCBs "d" and "f" enter AS Z via ingress interface "1". Additionally, AS Z propagates PCBs "g", "h", "i", and "j" further down, all over the same link (egress interface "3"). AS Z extends the PCBs with the relevant information, so that each of these PCBs now includes AS hop entries from core AS X, AS Y, and AS Z.</t>
          <figure anchor="_figure-3c">
            <name>Intra-ISD PCB propagation from the ISD core to child ASes - Part 3</name>
            <artwork><![CDATA[
                   +-----+      |   |      +-----+
                   |PCB c|      |   |      |PCB d|
                   +-----+      |   |      +-----+
                     |  +-----+ |   | +-----+  |
                     v  |PCB e| |   | |PCB f|  v
                        +-----+ |   | +-----+
                           |    |   |    |
                           v    |   |    v
                                v   v
                         +------#---#------+
                         |      5   1      |
                         |                 |
                         | AS Z            |
            +--------+   |        3        |   +--------+
            |PCB     |   +--------#--------+   |PCB     |
            |========|            |            |========|
            |Core X  |            |            |Core X  |
+--------+  |- Out:2 |            |            |- Out:2 |  +--------+
|PCB     |  |--------|            |            |--------|  |PCB     |
|++++++++|  |AS Y    |            |            |AS Y    |  |++++++++|
|Core X  |  |-In:2   |            |            |-In:2   |  |Core X  |
|- Out:1 |  |-Out:6  |   +-----+  |  +-----+   |-Out:5  |  |- Out:1 |
|--------|  |-PeerV:1|---|PCB g|  |  |PCB h|---|-PeerV:1|  |--------|
|AS Y    |  |-PeerW:4|   +-----+  |  +-----+   |-PeerW:4|  |AS Y    |
|-In:3   |  |--------|      |     |     |      |--------|  |-In:3   |
|-Out:6  |  |AS Z    |      v     |     v      |AS Z    |  |-Out:5  |
|-PeerV:1|  |-In:5   |            |            |-In:1   |  |-PeerV:1|
|-PeerW:4|  |-Out:3  |            |            |-Out:3  |  |-PeerW:4|
|--------|  +--------+            |            +--------+  |--------|
|AS Z    |               +-----+  |  +-----+               |AS Z    |
|-In:5   |===============|PCB i|  |  |PCB j|===============|-In:1   |
|-Out:3  |               +-----+  |  +-----+               |-Out:3  |
+--------+                  |     |     |                  +--------+
                            v     |     v
                                  v

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

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

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

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

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

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

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

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

]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="pcbs">
        <name>Path-Segment Construction Beacons (PCBs)</name>
        <section anchor="pcb-compos">
          <name>PCB Message Format</name>
          <t><xref target="_figure-5"/> graphically represents the PCB message format:</t>
          <figure anchor="_figure-5">
            <name>Top-down composition of one PCB</name>
            <artwork><![CDATA[
                              PCB / PATH SEGMENT

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

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

associated_data(ps, i) = ps.segment_info ||
                         ps.as_entries[1].signed.header_and_body ||
                         ps.as_entries[1].signed.signature ||
                         ...
                         ps.as_entries[i-1].signed.header_and_body ||
                         ps.as_entries[i-1].signed.signature
]]></artwork>
            </section>
          </section>
          <section anchor="hopentry">
            <name>Hop Entry</name>
            <artwork><![CDATA[
       +-----------+
       | Hop Entry |
       +-----------+
       *- - -#- - -*
             |
 - - - - - - v - - - - - - *
+-------------+------------+
| Ingress MTU | Hop Field  |
+-------------+------------+
]]></artwork>
            <t>Each body of an AS entry <bcp14>MUST</bcp14> contain exactly one hop entry component. The hop entry component specifies forwarding information which the data plane requires to create the hop through the current AS (in the direction of the beaconing).</t>
            <t>The following code block defines the hop entry component <tt>HopEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopEntry {
       HopField hop_field = 1;
       uint32 ingress_mtu = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the direction of beaconing. Routers need this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
              <li>
                <t><tt>ingress_mtu</tt>: Specifies the maximum transmission unit (MTU) of the ingress interface (in beaconing direction) of the hop being described. The MTU of paths  constructed from the containing beacon is necessarily less than or equal to this value. How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured. Current practice to make it a configuration item.</t>
              </li>
            </ul>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
          </section>
          <section anchor="hopfield">
            <name>Hop Field</name>
            <artwork><![CDATA[
                      +-----------+
                      | Hop Field |
                      +-----------+
                      *- - -#- - -*
                            |
                            |
*- - - - - - - - - - - - - -v- - - - - - - - - - - - - - - *
+-------------+-------------+-------------------+----------+
|   Ingress   |    Egress   |  Expiration Time  |   MAC    |
+-------------+-------------+-------------------+----------+
]]></artwork>
            <t>The Hop Field, part of both hop entries and peer entries, is used directly in the data plane for packet forwarding and specifies the incoming and outgoing interfaces of the ASes on the forwarding path. To prevent forgery, this information is authenticated with a message authentication code (MAC) which will be checked by the SCION border routers during packet forwarding. The algorithm used to compute the Hop Field MAC is an AS-specific choice and the operator of an AS can freely choose a MAC algorithm without outside coordination. However, the Control Service and routers of the AS do need to agree on the algorithm used.</t>
            <t>Control Service and router implementations <bcp14>MUST</bcp14> support the Default Hop Field MAC algorithm described in <xref target="I-D.dekater-scion-dataplane"/>. This document does not specify any further mechanism to coordinate this choice between Control Services and routers of one AS.</t>
            <t>The following code block defines the Hop Field component <tt>HopField</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopField {
       uint64 ingress = 1;
       uint64 egress = 2;
       uint32 exp_time = 3;
       bytes mac = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>ingress</tt>: The 16-bit ingress interface identifier (in the direction of the path construction, that is, in the direction of beaconing through the current AS).</t>
              </li>
            </ul>
            <t><strong>Note:</strong> For the core AS that initiates the PCB, the ingress interface identifier <bcp14>MUST NOT</bcp14> be specified. This initiating AS is a core AS.</t>
            <ul spacing="normal">
              <li>
                <t><tt>egress</tt>: The 16-bit egress interface identifier (in the direction of beaconing).</t>
              </li>
              <li>
                <t><tt>exp_time</tt>: The 8-bit encoded expiration time of the Hop Field, indicating its validity. This field expresses a duration in seconds according to the formula: <tt>duration = (1 + exp_time) * (24*60*60/256)</tt>. The minimum duration is therefore 337.5 s. This duration is relative to the PCB creation timestamp set in the PCB's segment information component (see also <xref target="seginfo"/>). Therefore, the absolute expiration time of the Hop Field is the sum of these two values.</t>
              </li>
              <li>
                <t><tt>mac</tt>: The message authentication code (MAC) used in the data plane to verify the Hop Field, as described in <xref target="I-D.dekater-scion-dataplane"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="peerentry">
            <name>Peer Entry</name>
            <artwork><![CDATA[
                      +--------------+
                      |  Peer Entry  |
                      +--------------+
                      *- - - -#- - - *
                              |
*- - - - - - - - - - - - - - -v- - - - - - - - - - - - - - *
+-------------+------------+--------------+----------------+
|  Hop Field  |  Peer MTU  | Peer ISD-AS  | Peer Interface |
+-------------+------------+--------------+----------------+
]]></artwork>
            <t>By means of a peer entry, an AS can announce that it has a peering link to another AS. A peer entry is an optional component of a PCB - it is only included if there is a peering link to a peer AS.</t>
            <t>The following code block defines the peer entry component <tt>PeerEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message PeerEntry {
       uint64 peer_isd_as = 1;
       uint64 peer_interface = 2;
       uint32 peer_mtu = 3;
       HopField hop_field = 4;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>peer_isd_as</tt>: The ISD-AS number of the peer AS. This number is used to match peering segments during path construction.</t>
              </li>
              <li>
                <t><tt>peer_interface</tt>: The 16-bit interface identifier of the peering link on the peer AS side. This identifier is used to match peering segments during path construction.</t>
              </li>
              <li>
                <t><tt>peer_mtu</tt>: Specifies the maximum transmission unit (MTU) of the peering link being described. The MTU of paths via such link is necessarily less than or equal to this value.  How the control service obtains the MTU of an inter-AS link is implementation dependent. It may be discovered or configured, but current practice is to make it a configuration item.</t>
              </li>
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the current AS (coming from the peering link, in the direction of beaconing - see also <xref target="_figure-6"/>). The data plane needs this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
            </ul>
            <t>In this description, MTU and packet size are to be understood in the same sense as in <xref target="RFC1122"/>. That is, exclusive of any layer 2 framing or packet encapsulation (for links using an underlay network).</t>
            <figure anchor="_figure-6">
              <name>Peer entry information, in the direction of beaconing</name>
              <artwork><![CDATA[
   +-----------+
   |           |
   | parent AS |
   |           |
   +-----------+
         |
         |
         | ASE.HF.ingress_interface
+--------#-----------+                  +-----------------+
|        |           |         PE.peer_ |                 |
|                    |         interface|                 |
|        | + - - - - #------------------#     peer AS     |
|                    |PE.HF.ingress_    |                 |
|        | |         |interface         |                 |
|                    |                  +-----------------+
|        v v         |
+---------#----------+
          | PE.HF.egress_interface
          | ASE.HF.egress_interface
          |
          |
    +-----------+
    |           |
    |  child AS |
    |           |
    +-----------+
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="pcb-ext">
          <name>PCB Extensions</name>
          <t>In addition to basic routing information such a hop entries and peer entries, PCBs can be used to communicate additional metadata in extensions. Extensions can be signed and unsigned: signed extensions are protected by the AS signature, whereas unsigned extensions are not.</t>
          <t>In Protobuf, extensions are specified as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Unsigned extensions <tt>PathSegmentUnsignedExtensions</tt> are part of the AS entry component (the <tt>ASEntry</tt> message, see also <xref target="ase-message"/>).</t>
            </li>
            <li>
              <t>Signed extensions <tt>PathSegmentExtensions</tt> are part of the signed body component of an AS entry (the <tt>ASEntrySignedBody</tt> message, see also <xref target="ase-sign"/>).</t>
            </li>
          </ul>
          <t><strong>Note:</strong> SCION also supports so-called "detachable extensions". The detachable extension is part of a PCB's unsigned extensions, but a cryptographic hash of the detachable extension data is added to the signed extensions. Thus, a PCB with a detachable extension can be signed and verified without actually including the detachable extension in the signature. This prevents a possible processing overhead caused by large cryptographically-protected extensions.</t>
        </section>
        <section anchor="pcb-validity">
          <name>PCB Validity</name>
          <t>To be valid (that is, usable to construct a valid path), a PCB <bcp14>MUST</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Contain valid AS Entry signatures (<xref target="sign"/>).</t>
            </li>
            <li>
              <t>Have a timestamp (<xref target="seginfo"/>) that is not in the future.</t>
            </li>
            <li>
              <t>Contain only unexpired hops (<xref target="hopfield"/>).</t>
            </li>
          </ul>
          <t>For the purpose of validation, a timestamp is considered "future" if it is later than the current time at the point of validation plus the minimum expiration time of a Hop Field (337.5 seconds, see <xref target="hopfield"/>).</t>
          <t>For the purpose of validation, a hop is considered expired if its absolute expiration time, calculated as defined in <xref target="hopfield"/>, is later than the current time at the point of validation.</t>
        </section>
        <section anchor="configuration">
          <name>Configuration</name>
          <t>For the purpose of constructing and propagating path segments, an AS Control Service <bcp14>MUST</bcp14> be configured with links to neighboring ASes. Such information may be conveyed to the Control Service in an out-of-band fashion (e.g in a configuration file). For each link, these values <bcp14>MUST</bcp14> be configured:</t>
          <ul spacing="normal">
            <li>
              <t>Local interface ID</t>
            </li>
            <li>
              <t>Neighbor type (core, parent, child, peer), depending on link type (see <xref target="paths-links"/>). Link type depends on mutual agreements between the organizations operating the ASes at each end of each link.</t>
            </li>
            <li>
              <t>Neighbor ISD-AS number</t>
            </li>
            <li>
              <t>Neighbor interface underlay address</t>
            </li>
          </ul>
          <t>In addition, the maximum MTU supported by all intra-AS links <bcp14>MAY</bcp14> be configured.</t>
        </section>
      </section>
      <section anchor="path-prop">
        <name>Propagation of PCBs</name>
        <t>This section describes how PCBs are selected and propagated in the path exploration process.</t>
        <section anchor="selection">
          <name>Selection of PCBs to Propagate</name>
          <t>As an AS receives a series of intra-ISD or core PCBs, it <bcp14>MUST</bcp14> select the PCBs that it will propagate further. Each AS specifies a local policy on the basis of which PCBs are evaluated, selected, or eliminated.
The selection process can inspect and compare the properties of the candidate PCBs (e.g., length, disjointness across different paths, age, expiration time) and/or take into account which PCBs have been propagated in the past.</t>
          <t>Naturally, an AS's policy selects PCBs corresponding to paths that are commercially or otherwise operationally viable.
From these viable PCBs, only a relatively small subset <bcp14>SHOULD</bcp14> be propagated to avoid excessive overhead of the path discovery system in bigger networks.</t>
          <t>The goal of the AS <bcp14>SHOULD</bcp14> be to propagate those candidate PCBs with the highest probability of collectively meeting the needs of the endpoints that will perform path construction. As SCION does not provide any in-band signal about the intentions of endpoints nor about the policies of downstream ASes, the policy will typically select a somewhat diverse set optimized for multiple, generic parameters.</t>
          <section anchor="storing-and-selecting-candidate-pcbs">
            <name>Storing and Selecting Candidate PCBs</name>
            <t>When receiving a PCB, an AS first stores the PCB in a temporary storage for candidate PCBs called the <em>Beacon Store</em>.</t>
            <t>PCBs are propagated in batches to each connected AS at a fixed frequency known as the <em>propagation interval</em>. At each propagation event, each AS selects a set of the best PCBs from the candidates in the Beacon Store, according to the AS's selection policy. This set <bcp14>SHOULD</bcp14> have a fixed size, the <em>best PCBs set size</em>.</t>
            <ul spacing="normal">
              <li>
                <t>The <em>best PCBs set size</em> <bcp14>SHOULD</bcp14> be at most "50" (PCBs) for intra-ISD beaconing and at most "5" (PCBs) for core beaconing (i.e. propagation between all core ASes). These are <bcp14>RECOMMENDED</bcp14> maxima; in current practice the intra-ISD set size is typically 20.</t>
              </li>
            </ul>
            <t>Depending on the selection criteria, it may be necessary to keep more candidate PCBs than the <em>best PCBs set size</em> in the Beacon Store, to be able to determine the best set of PCBs. If this is the case, an AS <bcp14>SHOULD</bcp14> have a suitable pre-selection of candidate PCBs in place in order to keep the Beacon Store capacity limited.</t>
            <ul spacing="normal">
              <li>
                <t>The <em>propagation interval</em> <bcp14>SHOULD</bcp14> be at least "5" (seconds) for intra-ISD beaconing and at least "60" (seconds) for core beaconing.</t>
              </li>
            </ul>
            <t>Note that to ensure quick connectivity establishment, an AS <bcp14>MAY</bcp14> attempt to forward a PCB more frequently ("fast recovery"). Current practice is to increase the frequency of attempts if no PCB propagation is know to have succeeded within the last propagation interval:</t>
            <ul spacing="normal">
              <li>
                <t>because the corresponding RPC failed;</t>
              </li>
              <li>
                <t>or because no beacon was available to propagate.</t>
              </li>
            </ul>
            <t>The scalability implications of such parameters are further discussed in <xref target="scalability"/>.</t>
          </section>
          <section anchor="selection-policy-example">
            <name>Selection Policy Example</name>
            <t><xref target="_figure-7"/> below illustrates the selection of path segments in three networks. Each network uses a different path property to select path segments.</t>
            <ul spacing="normal">
              <li>
                <t>The network at the upper left considers the <em>path length</em> which is here defined as the number of hops from the originator core AS to the local AS. This number can give an indication of the path's latency and based this, the network will select the PCB representing path segment A-G (in direction of beaconing) to propagate.</t>
              </li>
              <li>
                <t>The network at the upper right uses <em>peering links</em> as the selection criterion. That is the number of different peering ASes from all non-core ASes on the PCB or path segment: a greater number of peering ASes increases the likelihood of finding a shortcut on the path segment. Based on this, the network will select the PCB representing path segment B-E-I-L (in direction of beaconing) to propagate.</t>
              </li>
              <li>
                <t>The lower network selects PCBs based on <em>disjointness</em>. The disjointness of a PCB is calculated relative to the PCBs that have been previously sent. Paths can be either AS disjoint or link disjoint. AS disjoint paths have no common upstream/core AS for the current AS, whereas link disjoint paths do not share any AS-to-AS link. Depending on the objective of the AS, both criteria can be used: AS disjointness allows path diversity in the event that an AS becomes unresponsive, and link disjointness provides resilience in case of link failure. Based on the disjointness criterion, the network will select the PCBs representing the path segments A-D-G-H-J and C-E-F-I-J (in direction of beaconing) to propagate.</t>
              </li>
            </ul>
            <figure anchor="_figure-7">
              <name>Example networks to illustrate path segment selection based on different path properties.</name>
              <artwork><![CDATA[
Selected path segment: #------# or *------*
 Peering Link: PL

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

   message BeaconRequest {
       PathSegment segment = 1;
   }

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

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

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

       map<int32, Segments> segments = 1;
   }

   message SegmentsRegistrationResponse {}
]]></artwork>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentType</tt>: Specifies the type of the path segment to be registered. Currently, only the following type is used:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>SEGMENT_TYPE_DOWN</tt>: Specifies a down segment.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><tt>map&lt;int32, Segments&gt; segments</tt>: Represents a separate list of segments for each path segment type. The key is the integer representation of the corresponding <tt>SegmentType</tt>.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationResponse</tt>: an empty message returned as an acknowledgement upon success.</t>
          </li>
        </ul>
      </section>
      <section anchor="path-mtu">
        <name>Path MTU</name>
        <t>SCION paths represent a sequence of ASes and inter-AS links; each with possibly different MTUs. As a result, the path MTU is the minimum of the MTUs of each inter-AS link and intra-AS networks it traverses. Such MTU information is disseminated during path construction:</t>
        <ul spacing="normal">
          <li>
            <t>The MTU of each intra-AS network traversed (represented by the MTU field of the corresponding <xref target="ase-sign">AS Entries</xref>)</t>
          </li>
          <li>
            <t>The MTU of each inter-AS link or peering link (indicated by the ingress_mtu field of each <xref target="hopentry"/> or the peer_mtu field of each <xref target="peerentry"/> used)</t>
          </li>
        </ul>
        <t>Such information is then made available to endpoints during the path lookup process (See <xref target="lookup"/>). SCION endpoints are oblivious to the topology of intermediate ASes, therefore when looking up a path they <bcp14>MUST</bcp14> assume that all hops are constrained by the intra-AS MTU of each AS traversed.</t>
      </section>
    </section>
    <section anchor="lookup">
      <name>Path Lookup</name>
      <t>The <em>path lookup</em> is a fundamental building block of SCION's path management as it enables endpoints to obtain path segments found during path exploration and registered during path registration. This allows the endpoints to construct end-to-end paths from the set of possible path segments returned by the path lookup process. The lookup of paths still happens in the control plane, whereas the construction of the actual end-to-end paths happens in the data plane.</t>
      <section anchor="lookup-process">
        <name>Lookup Process</name>
        <t>An endpoint (source) that wants to start communication with another endpoint (destination) requires up to three path segments:</t>
        <ul spacing="normal">
          <li>
            <t>An up segment to reach the core of the source ISD (only if the source endpoint is a non-core AS);</t>
          </li>
          <li>
            <t>a core segment to reach
            </t>
            <ul spacing="normal">
              <li>
                <t>another core AS in the source ISD, in case the destination AS is in the same source ISD, or;</t>
              </li>
              <li>
                <t>a core AS in a remote ISD, if the destination AS is in another ISD, and;</t>
              </li>
            </ul>
          </li>
          <li>
            <t>a down segment to reach the destination AS.</t>
          </li>
        </ul>
        <t>The actual number of required path segments depends on the location of the destination AS as well as on the availability of shortcuts and peering links. More information on combining and constructing paths is provided by <xref target="I-D.dekater-scion-dataplane"/>.</t>
        <t>The process to look up and fetch path segments consists of the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>The source endpoint queries the Control Service in its own AS (i.e. the source AS) for the required segments by sending a SegmentsRequest. The Control Service has up segments stored in its path database and additionally checks if it has appropriate core segments and down segments stored as well - in this case it returns them immediately in a SegmentsResponse.</t>
          </li>
          <li>
            <t>If there are no appropriate core segments and down segments, the Control Service in the source AS queries the Control Services of the reachable core ASes in the source ISD for core segments to core ASes in the destination ISD. To reach the core Control Services, the Control Service of the source AS uses the locally stored up segments.</t>
          </li>
          <li>
            <t>The Control Service of the source AS combines up segments with the newly retrieved core segments. The Control Service then queries the Control Services of the remote core ASes in the destination ISD to fetch down segments to the destination AS. To reach the remote core ASes, the Control Service of the source AS uses the previously obtained and combined up segments and core segments.</t>
          </li>
          <li>
            <t>The Control Service of the source AS returns all retrieved path segments to the source endpoint.</t>
          </li>
          <li>
            <t>Once it has obtained all path segments, the source endpoint combines them into an end-to-end path in the data plane.</t>
          </li>
          <li>
            <t>The destination endpoint, once it receives the first packet, <bcp14>MAY</bcp14> revert the path in the received packet in order to construct a response. This ensures that traffic flows on the same path bidirectionally.</t>
          </li>
        </ol>
        <t><xref target="_table-3"/> below shows which Control Service provides the source endpoint with which type of path segment.</t>
        <table anchor="_table-3">
          <name>Control services responsible for different types of path segments</name>
          <thead>
            <tr>
              <th align="left">Segment Type</th>
              <th align="left">Responsible Control Service(s)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Up-segment</td>
              <td align="left">Control service of the source AS</td>
            </tr>
            <tr>
              <td align="left">Core-segment</td>
              <td align="left">Control service of core ASes in source ISD</td>
            </tr>
            <tr>
              <td align="left">Down-segment</td>
              <td align="left">Control service of core ASes in destination ISD (either the local ISD or a remote ISD)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="sequence-of-lookup-requests">
          <name>Sequence of Lookup Requests</name>
          <t>The overall sequence of requests to resolve a path <bcp14>SHOULD</bcp14> be as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Request up segments for the source endpoint at the Control Service of the source AS.</t>
            </li>
            <li>
              <t>Request core segments, which start at the core ASes that are reachable with up segments, and end at the core ASes in the destination ISD. If the destination ISD coincides with the source ISD, this step requests core segments to core ASes that the source endpoint cannot directly reach with an up segment.</t>
            </li>
            <li>
              <t>Request down segments starting at core ASes in the destination ISD.</t>
            </li>
          </ol>
          <t>The segment lookup API gRPC definition can be found in <xref target="_figure-11"/>.</t>
        </section>
        <section anchor="caching">
          <name>Caching</name>
          <t>For the sake of efficiency, the Control Service of the source AS <bcp14>SHOULD</bcp14> cache each returned path segment request. Caching ensures that path lookups are fast for frequently used destinations and is also essential to ensure that the path lookup process is scalable and can be performed with low latency.</t>
          <t>In general, to improve overall efficiency, the Control Services of all ASes <bcp14>SHOULD</bcp14> do the following:</t>
          <ul spacing="normal">
            <li>
              <t>Cache the returned path segments.</t>
            </li>
            <li>
              <t>Send requests in parallel when requesting path segments from other Control Services.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="behavior-of-actors-in-the-lookup-process">
        <name>Behavior of Actors in the Lookup Process</name>
        <t>As described above, the source endpoint resolves paths with a sequence of segment requests to the Control Service of the source AS. The Control Service in the source AS either answers directly or forwards these requests to the responsible Control Services of core ASes. In SCION, the instances that handle these segment requests at the Control Services are called <em>source AS segment-request handler</em> and <em>core AS segment-request handler</em>, respectively.</t>
        <t>This section specifies the behavior of the segment request handlers in the lookup process.</t>
        <section anchor="wildcard">
          <name>Use of Wildcard Addresses in the Lookup Process</name>
          <t>Endpoints can use wildcard addresses to designate any core AS in path segment requests. The segment request handlers <bcp14>MUST</bcp14> expand these wildcard addresses and translate them into one or more actual addresses. <xref target="_table-4"/> below shows who is responsible for what.</t>
          <t><strong>Note:</strong> For general information on the use of wildcard addresses in SCION, see <xref target="serv-disc"/>.</t>
          <table anchor="_table-4">
            <name>Use of wildcards in path segments requests</name>
            <thead>
              <tr>
                <th align="left">Segment Request</th>
                <th align="left">Wildcard Represents</th>
                <th align="left">Expanded/Translated By</th>
                <th align="left">Translated Into</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Up segment</td>
                <td align="left">"Destination" core AS (where up segment ends)</td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address destination core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core segment</td>
                <td align="left">Source core AS (where core segment starts)<sup>1</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in source ISD</td>
              </tr>
              <tr>
                <td align="left">Core segment</td>
                <td align="left">Destination core AS (where core segment ends)</td>
                <td align="left">Control service of the <em>source core AS</em></td>
                <td align="left">Actual address destination core AS in destination ISD</td>
              </tr>
              <tr>
                <td align="left">Down segment</td>
                <td align="left">"Source" core AS (where down segment starts)<sup>2</sup></td>
                <td align="left">Control service of the <em>source AS</em></td>
                <td align="left">Actual address source core AS in destination ISD</td>
              </tr>
            </tbody>
          </table>
          <t>1) Includes all core ASes for which an up segment from the source AS exists.<br/>
2) Includes all core ASes in destination ISD with a down segment to destination AS.</t>
        </section>
        <section anchor="segment-request-handler-of-a-non-core-source-as">
          <name>Segment-Request Handler of a Non-Core Source AS</name>
          <t>When the segment request handler of the Control Service of a <em>non-core</em> source AS receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Determine the requested segment type.</t>
            </li>
            <li>
              <t>In the case of an up segment request, look up matching up segments in the path database and return them.</t>
            </li>
            <li>
              <t>In the case of a core segment request from a source core AS to a destination core AS:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for each reachable core AS in the source ISD.</t>
                </li>
                <li>
                  <t>For each core segment request;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching core segments from cache;</t>
                    </li>
                    <li>
                      <t>Otherwise, request the core segments from the Control Services of each reachable core AS at the source of the core segment, and then add the retrieved core segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>In the case of a down segment request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for every core AS in the destination ISD (destination ISD refers to the ISD to which the destination endpoint belongs).</t>
                </li>
                <li>
                  <t>For each segment request;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching down segments from cache;</t>
                    </li>
                    <li>
                      <t>Otherwise, request the down segment from the Control Services of the core ASes at the source of the down segment. Sending the request may require looking up core segments to the source core AS of the down segment, and then adding the retrieved down segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="segment-request-handler-of-a-core-as">
          <name>Segment-Request Handler of a Core AS</name>
          <t>When the segment request handler of a <em>core AS</em> Control Service receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validate the request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The source of the path segment <bcp14>MUST</bcp14> be this core AS.</t>
                </li>
                <li>
                  <t>The request <bcp14>MUST</bcp14> either be;
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>for a core segment to a core AS in this ISD or another ISD, or;</t>
                    </li>
                    <li>
                      <t>for a down segment to an AS in this ISD.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the destination is a core or wildcard address, then load matching core segments from the path database and return.</t>
            </li>
            <li>
              <t>Otherwise, load the matching down segments from the path database and return.</t>
            </li>
          </ol>
          <t><xref target="app-c"/> shows by means of an illustration how the lookup of path segments in SCION works.</t>
        </section>
      </section>
    </section>
    <section anchor="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 specifies only messages <bcp14>RECOMMENDED</bcp14> 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. 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="_figure-scmp-format">
          <name>SCMP message format</name>
          <artwork><![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>
        </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 messages 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 messages 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>Implementations <bcp14>MUST</bcp14> respect the following rules 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>
            <name>Packet-too-big format</name>
            <artwork><![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>
          </figure>
          <table>
            <name>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>
            <artwork><![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>
          </figure>
          <table>
            <name>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>
            <artwork><![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>
          </figure>
          <table>
            <name>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 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-26">
            <name>Echo-request format</name>
            <artwork><![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>
          </figure>
          <table>
            <name>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-27">
            <name>Echo-reply format</name>
            <artwork><![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>
          </figure>
          <table>
            <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-24">
            <name>Traceroute-request format</name>
            <artwork><![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>
          </figure>
          <t>Given a SCION path constituted of hop fields, traceroute allows to identify the corresponding on-path ISD-ASes.</t>
          <table>
            <name>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/Path Header/SCION Path Type/Hop Field"). 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-25">
            <name>Traceroute-reply format</name>
            <artwork><![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>
          </figure>
          <table>
            <name>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. In current deployments it is 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.</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 focuses on three kinds of security risks in the control plane:</t>
      <ol spacing="normal" type="1"><li>
          <t>When an adversary controls one or all core ASes of an ISD and tries to manipulate the beaconing process from the top down (see <xref target="topdown-manipulate"/>).</t>
        </li>
        <li>
          <t>When "ordinary" (non-core) adversaries try to manipulate the beaconing process (see <xref target="manipulate-beaconing"/>).</t>
        </li>
        <li>
          <t>Denial of Services (DoS) attacks where attackers overload different parts of the infrastructure (see <xref target="dos-cp"/>).</t>
        </li>
      </ol>
      <section anchor="topdown-manipulate">
        <name>Manipulation of the Beaconing Process by a Core Adversary</name>
        <t>The first risk to the beaconing process comes from an adversary controlling one or more core ASes in an ISD. If the adversary stops all core AS(es) within an ISD from propagating PCBs, the discovery of new paths will halt. In this case, downstream ASes will notice that PCBs are no longer being propagated, but all previously discovered and still valid paths remain usable for data plane forwarding until they expire. This is an unlikely scenario, as it would require compromise of all core ASes within an ISD.</t>
      </section>
      <section anchor="manipulate-beaconing">
        <name>Manipulation of the Beaconing Process by a Non-Core Adversary</name>
        <t>This section examines several possible approaches that could be taken by an "ordinary" non-core adversary to manipulate the beaconing process in the SCION Control Plane. For each case it shows to what extent SCION's design can prevent the corresponding attack or help mitigate it.</t>
        <section anchor="path-hijack">
          <name>Path Hijacking through Interposition</name>
          <t>A malicious AS M might try to manipulate the beaconing process between two neighbor ASes A and B, with the goal to hijack traffic to flow via M. If M can interpose itself on the path between A and B, then it could attempt several potential attacks:</t>
          <ul spacing="normal">
            <li>
              <t>The adversary M could intercept and disseminate a PCB on its way from A to the neighboring AS B, and inject its own AS entry into the PCB toward downstream ASes.</t>
            </li>
            <li>
              <t>The adversary could modify the Hop Fields of an already existing path in order to insert its own AS in the path.</t>
            </li>
            <li>
              <t>The adversary could fully block traffic between AS A and AS B in order to force traffic redirection through an alternate path that includes its own AS.</t>
            </li>
          </ul>
          <t>The first type of attack is detectable and blocked by downstream ASes (e.g. B) because a PCB disseminated by AS A towards AS B contains the "Next ISD AS" field in the entry of AS A, pointing to AS B, and protected by A's signature. If M manipulates the PCB while in flight from A to B, then verification of the manipulated inbound PCBs will fail at AS B, as the adversary's PCBs cannot contain A's correct signature.</t>
          <t>The second type of attack is made impossible by the Hop Field's MAC which protects the Hop Field's integrity and chains it with the previous Hop Fields on the path.</t>
          <t>The third type of attack generally cannot be prevented. However the alternate path would be immediately visible to endpoints as traffic <bcp14>MUST</bcp14> include Hop Fields from AS M.</t>
        </section>
        <section anchor="fake-ases">
          <name>Creation of Spurious ASes and ISDs</name>
          <t>An alternative scenario is when an adversary tries to introduce and spoof a non-existent AS. This would enable the adversary to send traffic with the spoofed AS as a source, allowing the adversary to complicate the detection of its attack and to plausibly deny the misbehavior.</t>
          <t>However, spoofing a new AS requires a registration of that AS with the ISD core to obtain a valid AS certificate, otherwise the adversary cannot construct valid PCBs. As this registration should include a thorough check and authentication by a CA, this cannot be done stealthily which defeats the original purpose.</t>
          <t>Similarly to creating a fake AS, an adversary could try to introduce a new malicious ISD. This involves the generation of its own TRC, finding core ASes to peer with, and convincing other ISDs of its legitimacy to accept the new TRC. Although this setup is not entirely impossible, it requires substantial time and effort and may need the involvement of more than one malicious entity. Here the "costs" of setting up the fake ISD may outweigh the benefits.</t>
        </section>
        <section anchor="peer-link-misuse">
          <name> Peering Link Misuse</name>
          <t>The misuse of a peering link by an adversary represents another type of attack. Consider the case where AS A wants to share its peering link only with one of its downstream neighbors AS B, and therefore selectively includes the peering link only in PCBs sent to B. An adversary may now try to gain access to this peering link by prepending the relevant PCBs to its own path. For this, the adversary needs to be able to (1) eavesdrop on the link from A to B, and (2) obtain the necessary Hop Fields by querying a Control Service and extracting the Hop Fields from registered paths.</t>
          <t>Even if an adversary succeeds in misusing a peering link as described above, SCION is able to mitigate this kind of attack. Each AS includes an egress interface as well as specific “next hop” information to the PCB before disseminating it further downstream. If a malicious entity tries to misuse a stolen PCB by adding it to its own segments, verification will fail upstream as the egress interface mismatches. Therefore, the peering link can only be used by the intended AS.</t>
        </section>
        <section anchor="manipulate-selection">
          <name>Manipulation of the Path-Selection Process</name>
          <t>Endpoint path control is one of the main benefits of SCION compared to the current Internet as SCION endpoints can select inter-domain forwarding paths for each packet. However, with the benefits of path selection comes the risk of endpoints selecting non-optimal paths. This section discusses some mechanisms with which an adversary can attempt to trick endpoints downstream (in the direction of beaconing) into choosing non-optimal paths. The goal of such attacks is to make paths that are controlled by the adversary more attractive than other available paths.</t>
          <t>In SCION, overall path selection is the result of three steps. Firstly, each AS selects which PCBs are further forwarded to its neighbors. Secondly, each AS chooses the paths it wants to register at the local Control Service (as up segments) and at the core Control Service (as down segments). Thirdly, the endpoint performs path selection among all available paths resulting from a path lookup process.</t>
          <t>These attacks are only successful if the adversary is located within the same ISD and upstream relative to the victim AS. It is not possible to attract traffic away from the core as traffic travels upstream towards the core. Furthermore, the attack may either be discovered downstream (e.g., by seeing large numbers of paths becoming available), or during path registrations. After detection, non-core ASes will be able to identify paths traversing the adversary AS and avoid these paths.</t>
          <t><strong>Announcing Large Numbers of Path Segments</strong> <br/>
This attack is possible if the adversary controls at least two ASes. The adversary can create a large number of links between the ASes under its control which do not necessarily correspond to physical links. This allows the adversary to multiply the number of PCBs forwarded to its downstream neighbor ASes and in turn increases the chance that one or several of these forwarded PCBs are selected by the downstream ASes.</t>
          <t>In general, the number of PCBs that an adversary can announce this way scales exponentially with the number of consecutive ASes the adversary controls. However, this also decreases their chance of being chosen by a downstream AS for PCB dissemination or by an endpoint for path construction as these relatively long paths have to compete with other shorter paths. Furthermore, both endpoints and downstream ASes can detect poorer quality paths in the data plane and switch to better paths.</t>
          <t><strong>Wormhole Attack</strong> <br/>
A malicious AS M1 can send a PCB not only to their downstream neighbor ASes, but also out-of-band to another non-neighbor colluding malicious AS M2. This creates new segments to M2 and M2's downstream neighbor ASes, simulating a link between M1 and M2 which may not correspond to an actual link in the network topology.</t>
          <t>Similarly, a fake path can be announced through a fake peering link between two colluding ASes even if in different ISDs. An adversary can advertise fake peering links between the two colluding ASes, thus offering short paths to many destination ASes. Downstream ASes might have a policy of preferring paths with many peering links and thus are more likely to disseminate PCBs from the adversary. Endpoints are also more likely to choose short paths that make use of peering links.
In the data plane, whenever the adversary receives a packet containing a fake peering link, it can transparently exchange the fake peering Hop Fields with valid Hop Fields to the colluding AS. To avoid detection of the path alteration by the receiver, the colluding AS can replace the added Hop Fields with the fake peering link Hop Fields the sender inserted.</t>
          <t>To defend against this attack, methods to detect the wormhole attack are needed.  Per link or path latency measurements can help reveal the wormhole and render the fake peering link suspicious or unattractive. Without specific detection mechanisms these so-called wormhole attacks are unavoidable in routing.</t>
        </section>
      </section>
      <section anchor="dos-cp">
        <name>Denial of Service Attacks</name>
        <t>The beaconing process in the SCION Control Plane relies on control plane communication. ASes exchange control plane messages within each other when propagating PCBs to downstream neighbors, when registering PCBs as path segments, or during core path lookup. Volumetric DoS attacks, where attackers overload a link may make it difficult to exchange these messages.</t>
        <t>SCION limits the impact of such attacks which aim to exhaust network bandwidth on links as ASes can switch to alternative paths that do not contain the congested links. Reflection-based attacks are also prevented as response packets are returned on the same path to the actual sender.</t>
        <t>Other mechanisms are required to avoid transport protocol attacks where the attacker tries to exhaust the resources on a target server, such as for the Control Services, by opening many connections to this. The means to mitigate these kind of DoS attacks are basically the same as for the current Internet, e.g. filtering, geo-blocking or using cookies.</t>
        <t>Thanks to its path awareness, SCION enables more fine-grained filtering mechanisms based on certain path properties. For example, control plane RPC methods that are available to endpoints within an AS are strictly separate from methods available to endpoints from other ASes. Specifically, expensive recursive path segment and trust material lookups are thus shielded from abuse by unauthorized entities.</t>
        <t>For RPC methods exposed to other ASes, the Control Service implementation minimizes its attack surface by rejecting illegitimate callers based on ISD/AS, path type and length and any other available data points as soon as possible, i.e. immediately after determining the request type. For example:</t>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentCreationService.Beacon</tt> can only be called by direct neighbors and thus calls from peers with a path length greater than one can immediately be discarded.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationService.SegmentsRegistration</tt> can only be called from within the same ISD, thus the source address <bcp14>MUST</bcp14> match the local ISD and the number of path segments <bcp14>MUST</bcp14> be 1.</t>
          </li>
        </ul>
        <t>A combination of the mechanism above is used to prevent flooding attacks on the Control Service. In addition, the Control Service <bcp14>SHOULD</bcp14> be deployed in a distributed and replicated manner so that requests can be balanced and a single instance failure does not result in a complete failure of the control plane of a SCION AS.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The ISD and SCION AS number are SCION-specific numbers. They are currently allocated by Anapaya Systems, a provider of SCION-based networking software and solutions (see <xref target="ISD-AS-assignments"/>). This task is currently being transitioned from Anapaya to the SCION Association.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.dekater-scion-dataplane">
          <front>
            <title>SCION Data Plane</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="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="19" month="October" year="2024"/>
            <abstract>
              <t>   This document describes the data plane of the path-aware, inter-
   domain network architecture SCION (Scalability, Control, and
   Isolation On Next-generation networks).  One of the basic
   characteristics of SCION is that it gives path control to endpoints.
   The SCION Control Plane is responsible for discovering these paths
   and making them available as path segments to the endpoints.  The
   role of the SCION Data Plane is to combine the path segments into
   end-to-end paths, and forward data between endpoints according to the
   specified path.

   The SCION Data Plane fundamentally differs from today's IP-based data
   plane in that it is _path-aware_: In SCION, interdomain forwarding
   directives are embedded in the packet header.  This document 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-scion-dataplane-03"/>
        </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="19" month="October" year="2024"/>
            <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 builds
   the basis for SCION's trust model based on Isolation Domains.

   This document describes the trust model behind the SCION's 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.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-panrg-scion-overview-06"/>
        </reference>
        <reference anchor="ISD-AS-assignments" target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">
          <front>
            <title>SCION ISD and AS Assignments</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="CHUAT22" target="https://doi.org/10.1007/978-3-031-05288-0">
          <front>
            <title>The Complete Guide to SCION</title>
            <author initials="L." surname="Chuat" fullname="Laurent Chuat">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Basin" fullname="David Basin">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="P." surname="Mueller" fullname="Peter Mueller">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ISBN" value="978-3-031-05287-3"/>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC4893">
          <front>
            <title>BGP Support for Four-octet AS Number Space</title>
            <author fullname="Q. Vohra" initials="Q." surname="Vohra"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="May" year="2007"/>
            <abstract>
              <t>Currently the Autonomous System (AS) number is encoded as a two-octet entity in BGP. This document describes extensions to BGP to carry the Autonomous System number as a four-octet entity. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4893"/>
          <seriesInfo name="DOI" value="10.17487/RFC4893"/>
        </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 2052?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks go to William Boye (Swiss National Bank), Matthias Frei (SCION Association), Kevin Meynell (SCION Association), Juan A. Garcia Prado (ETH Zurich), and Roger Lapuh (Extreme Networks) for reviewing this document. We are also very grateful to Adrian Perrig (ETH Zurich), for providing guidance and feedback about every aspect of SCION. Finally, we are indebted to the SCION development teams of Anapaya and ETH Zurich, for their practical knowledge and for the documentation about the SCION Control Plane, as well as to the authors of <xref target="CHUAT22"/> - the book is an important source of input and inspiration for this draft.</t>
    </section>
    <section numbered="false" anchor="deployment-testing-scionlab">
      <name>Deployment Testing: SCIONLab</name>
      <t>SCIONLab is a global research network that is available to test the SCION architecture. You can create and use your ASes using your own computation resources which allows you to gain real-world experience of deploying and managing a SCION network.</t>
      <t>More information can be found on the SCIONLab website and in the <xref target="SCIONLAB"/> paper.</t>
    </section>
    <section numbered="false" anchor="app-a">
      <name>Full Control Service gRPC API</name>
      <t>The following code blocks provide, in protobuf format, the entire API by which control services interact.</t>
      <figure anchor="_figure-11">
        <name>Control Service gRPC API - Segment lookup.    This API is exposed on the SCION dataplane by the control    services of core ASes and exposed on the intra-domain protocol    network.</name>
        <artwork><![CDATA[
service SegmentLookupService {
    // Segments returns all segments that match the request.
    rpc Segments(SegmentsRequest) returns (SegmentsResponse) {}
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

]]></artwork>
      </figure>
      <t><br/></t>
    </section>
    <section numbered="false" anchor="app-c">
      <name>Path-Lookup Examples</name>
      <t>To illustrate how the path lookup works, we show two path-lookup examples in sequence diagrams. The network topology of the examples is represented in <xref target="_figure-8"/> below. In both examples, the source endpoint is in AS A. <xref target="_figure-9"/> shows the sequence diagram for the path lookup process in case the destination is in AS D, whereas <xref target="_figure-10"/> shows the path lookup sequence diagram if the destination is in AS G. ASes B and C are core ASes in the source ISD, while E and F are core ASes in a remote ISD. Core AS B is a provider of the local AS, but AS C is not, i.e. there is no up-segment from A to C. "CS" stands for Control Service.</t>
      <figure anchor="_figure-8">
        <name>Topology used in the path lookup examples.</name>
        <artwork><![CDATA[
+----------------------------+     +----------------------------+
|                            |     |                            |
|                            |     |                            |
|    +------------------+    |     |    +------------------+    |
|    |      Core        |    |     |    |          Core    |    |
|    |                  |    |     |    |                  |    |
|    | .---.     .---.  |    |     |    |            .---. |    |
|    |(  C  )---(  B  )-----------------------------(  F  )|    |
|    | `+--'     `+-+'---------+   |    |    .---.   `+-+' |    |
|    |  |         | |   |    | +------------(  E  )   | |  |    |
|    |  |         | |   |    |     |    |    `-+-'----+ |  |    |
|    +--|---------|-|---+    |     |    +------|--------|--+    |
|       |         | |        |     |           |        |       |
|       |         | |        |     |           |        |       |
|       |+--------+ |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|     .-++.         |        |     |         .-+-.      |       |
|    (  D  )      .-+-.      |     |        (  G  )-----+       |
|     `---'      (  A  )     |     |         `---'              |
|                 `---'      |     |                            |
|   ISD 1                    |     |                    ISD 2   |
+----------------------------+     +----------------------------+
]]></artwork>
      </figure>
      <figure anchor="_figure-9">
        <name>Sequence diagram illustrating a path lookup for a destination D in the source ISD. The request (core, x, x) is for all pairs of core ASes in the source ISD. Similarly, (down, x, D) is for down segments between any core AS in the source ISD and destination D.</name>
        <artwork><![CDATA[
+---------+          +---------+          +---------+        +---------+
|Endpoint |          |Source AS|          | Core AS |        | Core AS |
|         |          | CS (A)  |          | CS (B)  |        | CS (C)  |
+----+----+          +----+----+          +----+----+        +-----+---+
    +++                   |                    |                   |
    | |                   |                    |                   |
+---+-+-------+           |                    |                   |
|send requests|           |                    |                   |
| in parallel |           |                    |                   |
+---+-+-------+           |                    |                   |
    | |                   |                    |                   |
    | |  request (up)     |                    |                   |
    | +----------------->+++                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | | reply (up,[A->B]) |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (core,*,*) |                    |                   |
    | +----------------->+++                   |                   |
    | |                  | |request (core,B,*) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(core,[B->C])|                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |reply (core,[B->C])|                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (down,*,D) |                    |                   |
    | +----------------->+++                   |                   |
    | |            +-----+-+-----+             |                   |
    | |            |send requests|             |                   |
    | |            | in parallel |             |                   |
    | |            +-----+-+-----+             |                   |
    | |                  | |                   |                   |
    | |                  | |request (down,B,D) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(down,[B->D])|                   |
    | |                  | |                   |                   |
    | |                  | |                   |request (down,C,D) |
    | |                  | +-------------------+----------------->+++
    | |                  | <-- -- -- -- -- -- -+ -- -- -- -- -- --+++
    | |   reply (down,   | |                   | reply(down,[C->D])|
    | |   [B->D, C->D])  | |                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |                   |                    |                   |
+---+-+----------+        |                    |                   |
|combine segments|        |                    |                   |
+---+-+----------+        |                    |                   |
    | |                   |                    |                   |
    +++                   |                    |                   |
     |                    |                    |                   |
 +---+----+           +---+----+          +----+---+          +----+---+
 +--------+           +--------+          +--------+          +--------+
]]></artwork>
      </figure>
      <figure anchor="_figure-10">
        <name>Sequence diagram illustrating a path lookup for a destination G in a remote ISD. The request (core, x, (2, x)) is for all path segments between a core AS in the source ISD and a core AS in ISD 2. Similarly, (down, (2, x), G) is for down segments between any core AS in ISD 2 and destination G.</name>
        <artwork><![CDATA[
+---------+     +---------+      +---------+   +---------+   +---------+
|Endpoint |     |Source AS|      | Core AS |   | Core AS |   | Core AS |
|         |     | CS (A)  |      | CS (B)  |   | CS (E)  |   | CS (F)  |
+---+-----+     +----+----+      +----+----+   +----+----+   +----+----+
    |                |                |             |             |
   +++               |                |             |             |
   | |               |                |             |             |
+--+-+------+        |                |             |             |
|   send    |        |                |             |             |
|requests in|        |                |             |             |
| parallel  |        |                |             |             |
+--+-+------+        |                |             |             |
   | |               |                |             |             |
   | |  request (up) |                |             |             |
   | +------------->+++               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |    reply      |                |             |             |
   | | (up,[A->B])   |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(core,*,(2,*)) |                |             |             |
   | +------------->+++    request    |             |             |
   | |              | |(core,B,(2,*)) |             |             |
   | |              | +------------->+++            |             |
   | |              | |<- -- -- -- --+++            |             |
   | |              | | reply (core,  |             |             |
   | |              | | [B->E,B->F])  |             |             |
   | |<- -- -- -- --+++               |             |             |
   | | reply (core,  |                |             |             |
   | | [B->E,B->F])  |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(down,(2,*),G) |                |             |             |
   | +------------->+++               |             |             |
   | |        +-----+-+-----+         |             |             |
   | |        |send requests|         |             |             |
   | |        | in parallel |         |             |             |
   | |        +-----+-+-----+         |   request   |             |
   | |              | |               | (down,E,G)  |             |
   | |              | +---------------+----------->+++            |
   | |              | <- -- -- -- -- -+ -- -- -- --+++            |
   | |              | |               |    reply    |             |
   | |              | |               |(down,[E->G])|             |
   | |              | |               |             |   request   |
   | |              | |               |             | (down,F,G)  |
   | |              | +---------------+-------------+----------->+++
   | |              | < -- -- -- -- --|-- -- -- -- -+ -- -- -- --+++
   | |              | |               |             |    reply    |
   | | reply (down, | |               |             |(down,[F->G])|
   | | [E->G,F->G]) | |               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |               |                |             |             |
+--+-+----+          |                |             |             |
| combine |          |                |             |             |
|segments |          |                |             |             |
+--+-+----+          |                |             |             |
   | |               |                |             |             |
   +++               |                |             |             |
    |                |                |             |             |
+---+----+       +---+----+       +---+----+    +---+----+    +---+----+
+--------+       +--------+       +--------+    +--------+    +--------+
]]></artwork>
      </figure>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <t>Changes made to drafts since ISE submission. This section is to be removed before publication.</t>
      <section numbered="false" anchor="draft-dekater-scion-controlplane-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
-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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
aGbg2gx5siwOT0damEvRv8nlW2EPTFkkctaQB8LPqvMPTFrokCi/S1q+1B0d
ZVTNqJn5LRMcJDO880HA8IVlp2s5wDVK45pO271NMXawMAPltbHws/qOOMNL
ScYO4ycCwcfhNxRWRdEsZwcnp1Tzf6xBLGG/Am1QSIGkPfhiA9/YdM77wXwi
VwB4lY1b5NUAGU4yWP8ehutidFFMNfZ7CRVWFqdlnqPBx6OIvU/W6EhvLvxq
hQa8PYoXXIUGuNgYg8JwHrTDl8loOpijKwuwbcAHh7auvCoEjt6DCoIDH1vW
Imm6iCZ9hb8d+GVV6GfFHUsjCObE//3YGczap5avjIkWm2ZDN4+naX/EReTx
lzY3RKiUlMaWJ1coVrRgNBdqkkLPVNtcyyflCfVAoumVQw1wpVrWjXyq+4oc
VcpcgmaOxf5cv6F+Ii6VSf8hNapY8GPdv1CFlSySsMox9SJXt0g/681Z8Te/
CAWi2Gb7/T+sxOI8B+HkXQLIrknPGi2016E+edqQMGh10ZJwoTjiQmaUzDDk
M1717+JqiGs3eiG+AW7GqYlbRFkakUkrBmy4r02beCewCBruC6L4VyBvc2JI
tBsiSrVE+UHxoRBk/oZiWLDdAcfnE+i3r+C9H/v5W5e5+nZ3e/etVT3zogIY
KTwjDE9c3rbUXOEgCNNQT0gYEc68drvGT7FT891uzXePFMQO/Pwoehw9iZ5G
X0ffRN/e5jsCstX+xP+ssXmKf3Q/GLnPB3B4/M/8d0BBHfNx6Fq5b1yqf4hd
2/W82KcAwZo/waUByqp/y3GJoo1S/dzae9N7WxcmPLTX5bIFhVGbyVJN9+AQ
8k9oo7ejtxKkjl2XJFo2jFP338TWoYWcJiukohlBNJzoPrNwOyhes0PDIdnw
cCYBXVQQVuGbYFseZLWiJtL4bL3S+0JggjKHv3sigsIDMJ54PpW+PTLHMnUA
gGwqw1p4b7nuMVsOMrdUw9YS11XF71fKTFAFPo5ZYOy4Wz72qQ9Bek+TvisZ
0xvF6CV9VpblHMttblbAU3/qREelRzHArcT+iI8Kq8NKbG2OX+imwS7xbsLG
dpJOq4yBVLt3z1l0RDzhKs3b7Z3dr9EcrENTuKa9XVRe39n9pr375IldBPhy
SCptFME68zDuMtmx42ChgRtfS0DDCSh7+Pvt/9QlfJdQBs+hu8O84nUiSW10
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
+Y8CAA==

-->

</rfc>
