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

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>SCION is a path-aware internetworking routing architecture as described in <xref target="RFC9217"/>. It allows endpoints and applications to select paths across the network to use for traffic, based on trustworthy path properties. SCION is an inter-domain network architecture and is therefore not concerned with intra-domain forwarding.</t>
      <t>SCION has been developed with the following goals:</t>
      <t><em>Availability</em> - to provide highly available communication that can send traffic over paths with optimal or required characteristics, quickly handle inter-domain link or router failures (both on the last hop or anywhere along the path) and provide continuity in the presence of adversaries.</t>
      <t><em>Security</em> - to provide higher levels of trust in routing information in order to prevent IP prefix hijacking/leaks, denial-of-service and other attacks. Endpoints can decide the trust roots they wish to rely on, routing information can be unambiguously attributed to an AS, and packets are only forwarded along authorized path segments. A particular use case is to enable geofencing.</t>
      <t><em>Scalability</em> - to improve the scalability of the inter-domain control plane and data plane, avoiding existing limitations related to convergence and forwarding table size. The advertising of path segments is separated into a beaconing process within each Isolation Domain (ISD) and between ISDs which incurs minimal overhead and resource requirements on routers.</t>
      <t>SCION relies on three main components:</t>
      <t><em>PKI</em> - To achieve scalability and trust, SCION organizes existing ASes into logical groups of independent routing planes called <em>Isolation Domains (ISDs)</em>. All ASes in an ISD agree on a set of trust roots called the <em>Trust Root Configuration (TRC)</em> which is a collection of signed root certificates in X.509 v3 format <xref target="RFC5280"/>. The ISD is governed by a set of <em>core ASes</em> which typically manage the trust roots and provide connectivity to other ISDs. This is the basis of the public key infrastructure which the SCION control plane relies upon for the authentication of messages that is used for the SCION control plane. See <xref target="I-D.dekater-scion-pki"/></t>
      <t><em>Control Plane</em> - performs inter-domain routing by discovering and securely disseminating path information between ASes. The core ASes use Path-segment Construction Beacons (PCBs) to explore intra-ISD paths, or to explore paths across different ISDs.</t>
      <t><em>Data Plane</em> - carries out secure packet forwarding between SCION-enabled ASes over paths selected by endpoints. A SCION border router reuses existing intra-domain infrastructure to communicate to other SCION routers or SCION endpoints within its AS. See <xref target="I-D.dekater-scion-dataplane"/></t>
      <t>This document describes the SCION Control Plane component.</t>
      <section anchor="terms">
        <name>Terminology</name>
        <t><strong>Autonomous System (AS)</strong>: An autonomous system is a network under a common administrative control. For example, the network of an Internet service provider, company, or university can constitute an AS.</t>
        <t><strong>Beaconing</strong>: The control-plane process where an AS discovers paths to other ASes.</t>
        <t><strong>Control Plane</strong>: The SCION control plane is responsible for the propagation and discovery of network paths, i.e., for the exchange of routing information between network nodes. The control plane thus determines where traffic can be sent and deals with questions such as how paths are discovered, which paths exist, what quality individual links offer, etc. Within a SCION AS, such functionalities are carried out by the control service. Packet forwarding is instead a task pertaining to the data plane.</t>
        <t><strong>Control Service</strong>: The control service is the main control-plane infrastructure component within a SCION AS. It is responsible for the path exploration and registration processes that take place within the control plane.</t>
        <t><strong>Core AS</strong>: Each isolation domain (ISD) is administered by a set of distinguished autonomous systems (ASes) called core ASes, which are responsible for initiating the path-discovery and -construction process (in SCION called "beaconing").</t>
        <t><strong>Endpoint</strong>: An endpoint is the start- or the endpoint of a SCION path. For example, an endpoint can be a host as defined in <xref target="RFC1122"/>, or a gateway bridging a SCION and an IP domain. This definition is based on the definition in <xref target="RFC9473"/>.</t>
        <t><strong>Forwarding Path</strong>: A forwarding path is a complete end-to-end path between two SCION hosts, which is used to transmit packets in the data plane and can be created with a combination of up to three path segments (an up-segment, a core-segment, and a down-segment).</t>
        <t><strong>Hop Field (HF)</strong>: As they traverse the network, path-segment construction beacons (PCBs) accumulate cryptographically protected AS-level path information in the form of hop fields. In the data plane, hop fields are used for packet forwarding: they contain the incoming and outgoing interface IDs of the ASes on the forwarding path.</t>
        <t><strong>Info Field (INF)</strong>: Each path-segment construction beacon (PCB) contains a single info field, which provides basic information about the PCB. Together with hop fields (HFs), info fields are used to create forwarding paths.</t>
        <t><strong>Isolation Domain (ISD)</strong>: In SCION, Autonomous Systems (ASes) are organized into logical groups called isolation domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (i.e., a common jurisdiction). A possible model is for ISDs to be formed along national boundaries or federations of nations.</t>
        <t><strong>Leaf AS</strong>: An AS at the "edge" of an ISD, with no other downstream ASes.</t>
        <t><strong>MAC</strong>: Message Authentication Code. In the rest of this document, "MAC" always refers to "Message Authentication Code" and never to "Medium Access Control". When "Medium Access Control address" is implied, the phrase "Link Layer Address" is used.</t>
        <t><strong>Packet-Carried Forwarding State (PCFS)</strong>: Rather than relying on costly inter-domain forwarding tables, SCION data packets contain all the necessary path information. We refer to this property as packet-carried forwarding state or PCFS.</t>
        <t><strong>Path Segment</strong>: Path segments are derived from path-segment construction beacons (PCBs) and registered at control services. A path segment can be (1) an up-segment (i.e., a path between a non-core AS and a core AS in the same ISD), (2) a down-segment (i.e., the same as an up-segment, but in the opposite direction), or (3) a core-segment (i.e., a path between core ASes). Up to three path segments can be used to create a forwarding path.</t>
        <t><strong>Path-Segment Construction Beacon (PCB)</strong>: Core ASes generate PCBs to explore paths within their isolation domain (ISD) and among different ISDs. ASes further propagate selected PCBs to their neighboring ASes. As a PCB traverses the network, it carries path segments, which can subsequently be used for traffic forwarding.</t>
        <t><strong>Trust Root Configuration (TRC)</strong>: A trust root configuration or TRC is a signed collection of certificates pertaining to an isolation domain (ISD). TRCs also contain ISD-specific policies.</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

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

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

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

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

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

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

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

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

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

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

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

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

   message VerificationKeyID {
       uint64 isd_as = 1;
       bytes subject_key_id = 2;
       uint64 trc_base = 3;
       uint64 trc_serial = 4;
   }
]]></artwork>
              <ul spacing="normal">
                <li>
                  <t><tt>signature_algorithm</tt>: Specifies the algorithm to compute the signature.</t>
                </li>
                <li>
                  <t><tt>verification_key_id</tt>: Holds the serialized data defined by the <tt>VerificationKeyID</tt> message type. The <tt>VerificationKeyID</tt> message contains more information that is relevant to signing and verifying PCBs and other control-plane messages. The <tt>VerificationKeyID</tt> message type includes the following fields (see also the above code block):
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t><tt>isd_as</tt>: The ISD-AS number of the current AS.</t>
                    </li>
                    <li>
                      <t><tt>subject_key_id</tt>: Refers to the certificate that contains the public key needed to verify this PCB's signature.</t>
                    </li>
                    <li>
                      <t><tt>trc_base</tt>: Defines the <em>base</em> number of the latest Trust Root Configuration (TRC) available to the signer at the time of the signature creation.</t>
                    </li>
                    <li>
                      <t><tt>trc_serial</tt>: Defines the <em>serial</em> number of the latest TRC available to the signer at the time of the signature creation.</t>
                    </li>
                  </ul>
                </li>
              </ul>
              <t><strong>Note:</strong> For more information on signing and verifying control-plane messages (such as PCBs), see the chapter Signing and Verifying Control-Plane Messages of the SCION Control-Plane PKI Specification <xref target="I-D.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 size of the maximum transmission unit (MTU) within the current AS's network.</t>
                </li>
                <li>
                  <t><tt>extensions</tt>: List of (signed) extensions (optional). PCB extensions defined here are part of the signed AS entry. This field <bcp14>SHOULD</bcp14> therefore only contain extensions that include important metadata for which cryptographic protection is required. For more information on PCB extensions, see <xref target="pcb-ext"/>.</t>
                </li>
              </ul>
            </section>
            <section anchor="sign">
              <name>AS Entry Signature</name>
              <t>Each AS entry <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. 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 for the data plane. The data plane requires this information to create the hop through the current AS (in the direction of the beaconing).</t>
            <t>The following code block defines the hop entry component <tt>HopEntry</tt> in Protobuf message format:</t>
            <artwork><![CDATA[
   message HopEntry {
       HopField hop_field = 1;
       uint32 ingress_mtu = 2;
   }
]]></artwork>
            <ul spacing="normal">
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the direction of beaconing. The data plane needs this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
              <li>
                <t><tt>ingress_mtu</tt>: Specifies the maximum transmission unit (MTU) of the ingress interface of the current AS.</t>
              </li>
            </ul>
          </section>
          <section anchor="hopfield">
            <name>Hop Field</name>
            <artwork><![CDATA[
                      +-----------+
                      | Hop Field |
                      +-----------+
                      *- - -#- - -*
                            |
                            |
*- - - - - - - - - - - - - -v- - - - - - - - - - - - - - - *
+-------------+-------------+-------------------+----------+
|   Ingress   |    Egress   |  Expiration Time  |   MAC    |
+-------------+-------------+-------------------+----------+
]]></artwork>
            <t>The hop field, part of both hop entries and peer entries, is used directly in the data plane for packet forwarding: It specifies the incoming and outgoing interfaces of the ASes on the forwarding path. To prevent forgery, this information is authenticated with a message authentication code (MAC), which will be checked by the SCION border routers during packet forwarding.</t>
            <t>The algorithm used to compute the hop field MAC is an AS-specific choice. 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.
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 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 on the peering link.</t>
              </li>
              <li>
                <t><tt>hop_field</tt>: Contains the authenticated information about the ingress and egress interfaces in the current AS (coming from the peering link, in the direction of beaconing - see also <xref target="_figure-6"/>). The data plane needs this information to forward packets through the current AS. For further specifications, see <xref target="hopfield"/>.</t>
              </li>
            </ul>
            <figure anchor="_figure-6">
              <name>Peer entry information, in the direction of beaconing</name>
              <artwork><![CDATA[
   +-----------+
   |           |
   | parent AS |
   |           |
   +-----------+
         |
         |
         | ASE.HF.ingress_interface
+--------#-----------+                  +-----------------+
|        |           |         PE.peer_ |                 |
|                    |         interface|                 |
|        | + - - - - #------------------#     peer AS     |
|                    |PE.HF.ingress_    |                 |
|        | |         |interface         |                 |
|                    |                  +-----------------+
|        v v         |
+---------#----------+
          | PE.HF.egress_interface
          | ASE.HF.egress_interface
          |
          |
    +-----------+
    |           |
    |  child AS |
    |           |
    +-----------+
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="pcb-ext">
          <name>PCB Extensions</name>
          <t>In addition to basic routing information like hop entries and peer entries, PCBs can be used to communicate additional metadata, in its extensions. Extensions can be signed and unsigned. Signed extensions are protected by the AS signature, whereas unsigned extensions are not.</t>
          <t>On code-level and in Protobuf message format, extensions are specified as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Unsigned extensions <tt>PathSegmentUnsignedExtensions</tt> are part of the AS entry component (the <tt>ASEntry</tt> message, see also <xref target="ase-message"/>).</t>
            </li>
            <li>
              <t>Signed extensions <tt>PathSegmentExtensions</tt> are part of the signed body component of an AS entry (the <tt>ASEntrySignedBody</tt> message, see also <xref target="ase-sign"/>).</t>
            </li>
          </ul>
          <t><strong>Note:</strong> SCION also supports so-called "detachable extensions". The detachable extension itself is part of a PCB's unsigned extensions, but a cryptographic hash of the detachable extension data is added to the signed extensions. Thus, a PCB with a detachable extension can be signed and verified without actually including the detachable extension in the signature. This prevents a possible processing overhead caused by large cryptographically-protected extensions.</t>
        </section>
        <section 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>
        </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 it will use to continue beaconing. 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.
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 downstream AS at a fixed frequency, the <em>propagation interval</em>. At each propagation event, each AS selects a set of the best PCBs from the candidates in the beacon store, according to the AS's selection policy. This set <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.</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
The scalability implications of such parameters are further discussed in <xref target="scalability"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="selection-policy-example">
            <name>Selection Policy Example</name>
            <t><xref target="_figure-7"/> below illustrates the selection of path segments in three networks. Each network uses a different path property to select path segments.</t>
            <ul spacing="normal">
              <li>
                <t>The network at the upper left considers the <em>path length</em>, which is here defined as the number of hops from the originator core AS to the local AS. This number can give an indication of the path's latency. Based on this criterion, the network will select the PCB representing path segment A-G (in direction of beaconing) to propagate.</t>
              </li>
              <li>
                <t>The network at the upper right uses <em>peering links</em> as the selection criterion, that is, the number of different peering ASes from all non-core ASes on the PCB or path segment: A greater number of peering ASes increases the likelihood of finding a shortcut on the path segment. Based on this criterion, the network will select the PCB representing path segment B-E-I-L (in direction of beaconing) to propagate.</t>
              </li>
              <li>
                <t>The lower network selects PCBs based on <em>disjointness</em>. The disjointness of a PCB is calculated relative to the PCBs that have been previously sent. Paths can be either AS-disjoint or link-disjoint. AS-disjoint paths have no common upstream/core AS for the current AS, whereas link-disjoint paths do not share any AS-to-AS link. Depending on the objective of the AS, both criteria can be used: AS-disjointness allows path diversity in the event that an AS becomes unresponsive, and link-disjointness provides resilience in case of link failure. Based on the disjointness criterion, the network will select the PCBs representing the path segments A-D-G-H-J and C-E-F-I-J (in direction of beaconing) to propagate.</t>
              </li>
            </ul>
            <figure anchor="_figure-7">
              <name>Example networks to illustrate path-segment selection based on different path properties.</name>
              <artwork><![CDATA[
 Selected path segment: #------# or *------*
 Peering Link: PL

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

   message BeaconRequest {
       PathSegment segment = 1;
   }

   message BeaconResponse {}
]]></artwork>
            <t>The propagation procedure includes the following elements:</t>
            <ul spacing="normal">
              <li>
                <t><tt>SegmentCreationService</tt>: Specifies the service via which the extended PCB is propagated to the control service of the neighboring AS.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>Beacon</tt>: Specifies the method that calls the control service at the neighboring AS in order to propagate the extended PCB.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconRequest</tt>: Specifies the request message sent by the <tt>Beacon</tt> method to the control service of the neighboring AS. It contains the following element:
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>PathSegment</tt>: Specifies the path segment to propagate to the neighboring AS. For more information on the Protobuf message type <tt>PathSegment</tt>, see <xref target="segment"/>.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t><tt>BeaconResponse</tt>: Specifies the response message from the neighboring AS.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="effects-of-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. 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. This creates a constraint on the expiration of hops. Hops of the minimal expiration time (337.5 seconds - see <xref target="hopfield"/>) would render useless any PCB describing a path longer than 5 hops. For this reason, it is unadvisable to create hops with a short expiration time, that should 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 expiration of a SCION AS certificate typically ranges from 3h to 5 years.
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>
      <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 communication overhead, processing and storage. Communication is transmitting the PCBs and occasionally obtaining the required PKI material. Processing cost is validating the signatures of the AS entries, signing new AS entries, and, to a lesser extent, evaluating the beaconing policies. Storage is both the temporary storage of PCBs before the next propagation interval, and the storage of complete discovered path segments.
All of these depend on the the number and length of the discovered path segments, that is, on 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.
Generally, the time until a specific PCB is built depends on its length, the propagation interval, whether on-path ASes use "fast recovery".
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 in its routing process, SCION uses a divide-and-conquer approach, partitioning  ASes into ISDs. In order to benefit from this, an ideal topology SCION should keep the inter-ISD core network to a moderate size. For more specific observations, we distinguish between intra- 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>Typically, this directed, acyclic graph is narrow at the top, widens towards the leafs, and is relatively shallow; intermediate provider ASes have a large number of children, while they only have a small number of parents. 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 trim the set of PCBs propagated. As the choice is among different ways to transit the local AS, operators are well equipped to choose among this set of PCBs.
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 with some numbers, 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. Due to the variable length fields in AS entries, the sizes for storage and transmission cannot be predicted exactly, and we'll assume an average of 250 bytes per AS entry. At the shortest, and thus chattiest, recommended propagation interval of 5 seconds, this corresponds to an average bandwidth of around 2.5MB/s, and processing 10000 signature verifications per second.
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), that is at most 50000 signatures per propagation event.
The total bandwidth for the propagation of these PCBs for all 1000 child links would, again very roughly, be around 25MB/s.
All of these are 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 interval 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.
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, internet-like networks are relatively short; for example, 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"/>. The average distance scales in the same way.
We cannot assume that the selected PCBs are strictly shortest paths through the network, but it's reasonable to assume that they will not be 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. In a network of 1000 ASes, a highly connected AS with 300 core links receives up to 1.5 million PCBs per propagation interval.
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. In terms of bandwidth, this corresponds to very roughly 38MB/s.
All of these are manageable on a present day small server or desktop machine.
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.</t>
          <t>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 adds these segments to the relevant path databases, thus making them available to other ASes.</t>
      <t>As mentioned previously, a non-core AS typically receives several PCBs representing several path segments to the core ASes of the ISD the AS belongs to. Out of these PCBs, the non-core AS selects those down-path segments through which it wants to be reached, based on AS-specific selection criteria. The next step is to register the selected down-segments with the control service of the relevant core ASes, according to a process called <em>intra-ISD path-segment registration</em>. As a result, a core AS's control service contains all intra-ISD path segments registered by the non-core ASes of its ISD. In addition, each core AS control service also stores preferred core-path segments to other core ASes, in the <em>core-segment registration</em> process. Both processes are described below.</t>
      <section anchor="intra-reg">
        <name>Intra-ISD Path-Segment Registration</name>
        <t>Every <em>registration period</em> (determined by each AS), the AS's control service selects two sets of PCBs to transform into two types of path segments:</t>
        <ul spacing="normal">
          <li>
            <t>Up-segments, which allow the infrastructure entities and endpoints in this AS to communicate with core ASes; and</t>
          </li>
          <li>
            <t>down-segments, which allow remote entities to reach this AS.</t>
          </li>
        </ul>
        <t>The up- and down-segments do not have to be equal. An AS may want to communicate with core ASes via one or more up-segments that differ from the down-segment(s) through which it wants to be reached. Therefore, an AS can define different selection policies for the up- and down-segment sets. Also, the processes of transforming a PCB in an up-segment or a down-segment differ slightly. Both processes are described below.</t>
        <section anchor="term-pcb">
          <name>Terminating a PCB</name>
          <t>Both the up- and down-segments end at the AS. One could therefore say that by transforming a PCB into a path segment, an AS "terminates" the PCB for this AS ingress interface and at this moment in time.</t>
          <t>The control service of a non-core AS <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. This new AS entry <bcp14>MUST</bcp14> be defined as follows:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The next AS <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>In Protobuf message format, this means that the value of the <tt>next_isd_as</tt> field in the <tt>ASEntrySignedBody</tt> component <bcp14>MUST</bcp14> be "0".</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>The egress interface in the hop field component <bcp14>MUST NOT</bcp14> be specified.
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>In Protobuf message format, this means that the value of the <tt>egress</tt> field in the <tt>HopField</tt> component <bcp14>MUST</bcp14> be "0".</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the AS has peering links, the control service <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>As a last step, the control service <bcp14>MUST</bcp14> sign the modified PCB and append the computed signature.</t>
            </li>
          </ol>
          <t><strong>Note:</strong></t>
          <ul spacing="normal">
            <li>
              <t>For more information on the signed body component of an AS entry, see <xref target="ase-sign"/>.</t>
            </li>
            <li>
              <t>For more information on a peer entry, see <xref target="peerentry"/>.</t>
            </li>
            <li>
              <t>For more information on the hop field component, see <xref target="hopfield"/>.</t>
            </li>
            <li>
              <t>For more information on signing an AS entry, see <xref target="sign"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="transforming-a-pcb-into-an-up-segment">
          <name>Transforming a PCB into an Up-Segment</name>
          <t>Every registration period, the control service of a non-core AS performs the following steps to transform PCBs into up-segments:</t>
          <ol spacing="normal" type="1"><li>
              <t>The control service selects the PCBs that it wants to transform into up-segments from the candidate PCBs in the beacon store.</t>
            </li>
            <li>
              <t>The control service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>up-segments</strong>.</t>
            </li>
            <li>
              <t>The control service now adds the newly created up-segments to its own path database.</t>
            </li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
        <section anchor="transforming-a-pcb-into-a-down-segment">
          <name>Transforming a PCB into a Down-Segment</name>
          <t>Every registration period, the control service of a non-core AS performs the following steps to transform PCBs into down-segments:</t>
          <ol spacing="normal" type="1"><li>
              <t>The control service selects the PCBs that it wants to transform into down-segments from the candidate PCBs in the beacon store.</t>
            </li>
            <li>
              <t>The control service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>down-segments</strong>.</t>
            </li>
            <li>
              <t>The control service now registers the newly created down-segments with the control services of the core ASes that originated the corresponding PCBs. This is done by invoking the <tt>SegmentRegistrationService.SegmentsRegistration</tt> remote procedure call (RPC) in the control services of the relevant core ASes (see also <xref target="reg-proto"/>).</t>
            </li>
          </ol>
          <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
        </section>
      </section>
      <section anchor="core-path-segment-registration">
        <name>Core Path-Segment Registration</name>
        <t>The core beaconing process creates path segments from core AS to core AS. These core-segments are then added to the control service path database of the core AS that created the segment, so that local and remote endpoints can obtain and use these core-segments. In contrast to the intra-ISD registration procedure, there is no need to register core-segments with other core ASes (as each core AS will receive PCBs originated from every other core AS).</t>
        <t>In every registration period, the control service of a core AS performs the following operations:</t>
        <ol spacing="normal" type="1"><li>
            <t>The core control service selects the best PCBs towards each core AS observed so far.</t>
          </li>
          <li>
            <t>The core control service "terminates" the selected PCBs by performing the steps described in <xref target="term-pcb"/>. From this moment on, the modified PCBs are called <strong>core-segments</strong>.</t>
          </li>
          <li>
            <t>As a final step, the control service adds the newly created core-segments to its own path database.</t>
          </li>
        </ol>
        <t><strong>Note:</strong> For more information on possible selection strategies of PCBs, see <xref target="selection"/>.</t>
      </section>
      <section anchor="reg-proto">
        <name>Path-Segment Registration on Code-Level</name>
        <t>The control service of a non-core AS has to register the newly created down-segments with the control services of the core ASes that originated the corresponding PCBs. This registration step is implemented as follows in Protobuf message format:</t>
        <artwork><![CDATA[
   enum SegmentType {
       SEGMENT_TYPE_UNSPECIFIED = 0;
       SEGMENT_TYPE_UP = 1;
       SEGMENT_TYPE_DOWN = 2;
       SEGMENT_TYPE_CORE = 3;
   }

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

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

       map<int32, Segments> segments = 1;
   }

   message SegmentsRegistrationResponse {}
]]></artwork>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentType</tt>: Specifies the type of the path segment 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>
        </ul>
      </section>
    </section>
    <section anchor="lookup">
      <name>Path Lookup</name>
      <t>The <em>path lookup</em> is a fundamental building block of SCION's path management, as it enables endpoints to obtain path segments found during path exploration and registered during path registration. This allows the endpoints to construct end-to-end paths from the set of possible path segments returned by the path lookup process. The lookup of paths still happens in the control plane, whereas the construction of the actual end-to-end paths happens in the data plane.</t>
      <section anchor="lookup-process">
        <name>Lookup Process</name>
        <t>An endpoint (source) that wants to start communication with another endpoint (destination), requires up to three path segments:</t>
        <ul spacing="normal">
          <li>
            <t>An up-path segment to reach the core of the source ISD (only if the source endpoint is a non-core AS),</t>
          </li>
          <li>
            <t>a core-path segment to reach
            </t>
            <ul spacing="normal">
              <li>
                <t>another core AS in the source ISD, in case the destination AS is in the same source ISD, or</t>
              </li>
              <li>
                <t>a core AS in a remote ISD, if the destination AS is in another ISD, and</t>
              </li>
            </ul>
          </li>
          <li>
            <t>a down-path segment to reach the destination AS.</t>
          </li>
        </ul>
        <t>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>First, the source endpoint queries the control service in its own AS (i.e., the source AS) for the required segments. The control service has up-path segments stored in its path database. Additionally, the control service checks if it has appropriate core- and down-path segments in store as well; in this case it returns them immediately.</t>
          </li>
          <li>
            <t>If there are no appropriate core-segments and down-segments, the control service in the source AS queries the control services of the reachable core ASes in the source ISD, for core-path segments to core ASes in the destination ISD (which is either the own or a remote ISD). To reach the core control services, the control service of the source AS uses the locally stored up-path segments.</t>
          </li>
          <li>
            <t>Next, the control service of the source AS combines up-path segments with the newly retrieved core-path segments. The control service then queries the control services of the remote core ASes in the destination ISD, to fetch down-path segments to the destination AS. To reach the remote core ASes, the control service of the source AS uses the previously obtained and combined up- and core segments.</t>
          </li>
          <li>
            <t>Finally, the control service of the source AS returns all retrieved path segments to the source endpoint.</t>
          </li>
          <li>
            <t>Once it has obtained all path segments, the 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>
        </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. The use of caching is also essential to ensure that the path-lookup process is scalable and can be performed with low latency.</t>
          <t>In general, to improve overall efficiency, the control services of all ASes <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 answers directly, or forwards these requests to the responsible control services of core ASes. In SCION, the instances that handle these segment requests at the control services are called <em>source AS segment-request handler</em> and <em>core AS segment-request handler</em>, respectively. This section specifies the behavior of the segment-request handlers in the lookup process. First, the use of wildcards in the lookup process is briefly addressed.</t>
        <section anchor="wildcard">
          <name>Use of Wildcard Addresses in the Lookup Process</name>
          <t>Endpoints can use wildcard addresses to designate any core AS in path-segment requests. The segment-request handlers <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 (start) of the core-segment. Add the retrieved core-segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>In the case of a down-segment request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Expand the source wildcard into separate requests for every core AS in the destination ISD (destination ISD refers to the ISD to which the destination endpoint belongs).</t>
                </li>
                <li>
                  <t>For each segment request,
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>If possible, return matching down-segments from cache;</t>
                    </li>
                    <li>
                      <t>otherwise, request the down-segment from the control services of the core ASes at the source (start) of the down-segment. Sending the request may require looking up core-segments to the source core AS of the down-segment. Add the retrieved down-segments to the cache.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="segment-request-handler-of-a-core-as">
          <name>Segment-Request Handler of a Core AS</name>
          <t>When the segment-request handler of a <em>core AS</em> control service receives a path segment request, it <bcp14>MUST</bcp14> proceed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validate the request:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The source of the path segment <bcp14>MUST</bcp14> be this core AS.</t>
                </li>
                <li>
                  <t>The request <bcp14>MUST</bcp14> either be
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>for a core-segment to a core AS in this ISD or another ISD, or</t>
                    </li>
                    <li>
                      <t>for a down-segment to an AS in this ISD.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>If the destination is a core or wildcard address, then load matching core-segments from the path database and return.</t>
            </li>
            <li>
              <t>Otherwise, load the matching down-segments from the path database and return.</t>
            </li>
          </ol>
          <t><xref target="app-c"/> shows by means of an illustration how the lookup of path segments in SCION works.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As described previously, the goal of SCION’s beaconing process in the control plane is to securely discover and disseminate paths between any two ASes. This section describes security considerations for SCION's control plane, that focuses on <em>inter</em>-domain routing. SCION does not provide intra-domain routing, nor does it provide end-to-end payload encryption. These topics lie therefore outside the scope of this section.</t>
      <t>This section focuses on three kinds of security risks in the control plane. The first risk is when an adversary controls one or all core ASes of an ISD and tries to manipulate the beaconing process from the top down (see <xref target="topdown-manipulate"/>). Also "ordinary" (non-core) adversaries that try to manipulate the beaconing process pose a risk to the control plane (see <xref target="manipulate-beaconing"/>). The third kind of security risks are Denial of Services (DoS) attacks, where attackers overload different parts of the infrastructure (see <xref target="dos-cp"/>).</t>
      <section anchor="topdown-manipulate">
        <name>Manipulation of the Beaconing Process by a Core Adversary</name>
        <t>The first kind of risk to the beaconing process comes from an adversary controlling one or more core ASes in an ISD. If the adversary stops all core AS(es) within an ISD from propagating PCBs, the discovery of new paths halts. In this case, downstream ASes will notice that PCBs are no longer being propagated, but all previously discovered (and still valid) paths remain usable for data-plane forwarding until they expire. This is an unlikely scenario, as it would require compromise of all core ASes within an ISD.</t>
      </section>
      <section anchor="manipulate-beaconing">
        <name>Manipulation of the Beaconing Process by a Non-Core Adversary</name>
        <t>This section examines several possible approaches open to an "ordinary" non-core adversary to manipulate the beaconing process in the SCION control plane, and shows for each case to what extent SCION's design can prevent the corresponding attack or help to mitigate it.</t>
        <ul spacing="normal">
          <li>
            <t>Path hijacking through interposition (see <xref target="path-hijack"/>)</t>
          </li>
          <li>
            <t>Creation of spurious ASes and ISDs (see <xref target="fake-ases"/>)</t>
          </li>
          <li>
            <t>Peering link misuse (see <xref target="peer-link-misuse"/>)</t>
          </li>
          <li>
            <t>Manipulation of the path selection process (see <xref target="manipulate-selection"/>)</t>
          </li>
        </ul>
        <section anchor="path-hijack">
          <name>Path Hijacking through Interposition</name>
          <t>An malicious AS M might try to manipulate the beaconing process between two neighbor ASes A and B, with the goal to hijack traffic to flow via M. If M can interpose itself on the path between A and B, then it could attempt several potential attacks:</t>
          <ul spacing="normal">
            <li>
              <t>The adversary M could intercept and disseminate a PCB on its way from A to the neighboring AS B, and inject its own AS entry into the PCB toward downstream ASes.</t>
            </li>
            <li>
              <t>The adversary could modify the hop fields of an already existing path, in order to insert its own AS in the path.</t>
            </li>
            <li>
              <t>The adversary could fully block traffic between AS A and AS B, in order to force traffic redirection through an alternate path that includes its own AS.</t>
            </li>
          </ul>
          <t>The first type of attack is detectable and blocked by downstream ASes (e.g. B), because a PCB disseminated by AS A towards AS B contains the "Next ISD AS" field in the entry of AS A, pointing to AS B, and protected by A's signature. If M manipulates the PCB while in flight from A to B, then verification of the manipulated inbound PCBs will fail at AS B, as the adversary's PCBs cannot contain A's correct signature.
The second type of attack is made impossible by the hop field's MAC, which protects the hop field's integrity and chains it with the previous hop fields on the path.
The third type of attack generally cannot be prevented, however the alternate path would be immediately visible to endpoints, as traffic <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 nonexistent ASes. This would enable the adversary to send traffic with the spoofed AS as a source, allowing the adversary to complicate the detection of its attack and to plausibly deny the misbehavior.</t>
          <t>However, spoofing a new AS requires a registration of that AS with the ISD core to obtain a valid AS certificate; otherwise the adversary cannot construct valid PCBs. As this registration includes a thorough check and authentication by a CA, this cannot be done stealthily, which defeats the original purpose.</t>
          <t>Similarly to creating a fake AS, an adversary could try to introduce a new, malicious ISD. This involves the generation of its own TRC, finding core ASes to peer with, and convincing other ISDs of its legitimacy to accept the new TRC. Although this setup is not entirely impossible, it requires substantial time and effort, and may need the involvement of more than one malicious entity. Here, the "costs" of setting up the fake ISD may outweigh the benefits.</t>
        </section>
        <section anchor="peer-link-misuse">
          <name> Peering Link Misuse</name>
          <t>The misuse of a peering link by an adversary represents another type of attack. Consider the case where AS A wants to share its peering link only with one of its downstream neighbors, AS B, and therefore selectively includes the peering link only in PCBs sent to B. An adversary may now try to gain access to this peering link by prepending the relevant PCBs to its own path. For this, the adversary needs to be able to (1) eavesdrop on the link from A to B, and (2) obtain the necessary hop fields by querying a control service and extracting the hop fields from registered paths.</t>
          <t>Even if an adversary succeeds in misusing a peering link as described above, SCION is able to mitigate this kind of attack: Each AS includes an egress interface as well as specific “next hop” information to the PCB before disseminating it further downstream. If a malicious entity tries to misuse a stolen PCB by adding it to its own segments, verification will fail upstream as the egress interface mismatches. Therefore, the peering link can only be used by the intended AS.</t>
        </section>
        <section anchor="manipulate-selection">
          <name>Manipulation of the Path-Selection Process</name>
          <t>Endpoint path control is one of the main benefits of SCION compared to the current Internet, as SCION endpoints can select inter-domain forwarding paths for each packet. However, with the benefits of path selection comes the risk of endpoints selecting non-optimal paths. This section discusses some mechanisms with which an adversary can attempt to trick endpoints downstream (in the direction of beaconing) into choosing non-optimal paths. The goal of such attacks is to make paths that are controlled by the adversary more attractive than other available paths.</t>
          <t>In SCION, overall path selection is the result of three steps. First, each AS selects which PCBs are further forwarded to its neighbors. Second, each AS chooses the paths it wants to register at the local control service (as up-segments) and at the core control service (as down-segments). Third, the endpoint performs path selection among all available paths resulting from a path lookup process. The following text describes attacks that aim at influencing the path-selection process.</t>
          <t>These attacks are only successful if the adversary is located within the same ISD and upstream relative to the victim AS. It is not possible to attract traffic away from the core as traffic travels upstream towards the core. Furthermore, the attack may either be discovered downstream (e.g., by seeing large numbers of paths becoming available), or during path registrations. After detection, non-core ASes will be able to identify paths traversing the adversary AS and avoid these paths.</t>
          <t><strong>Announcing Large Numbers of Path Segments</strong> <br/>
This attack is possible if the adversary controls multiple (at least two) ASes. The adversary can create a large number of links between the ASes under its control, which do not necessarily correspond to physical links. This allows the adversary to multiply the number of PCBs forwarded to its downstream neighbor ASes. This in turn increases the chance that one or several of these forwarded PCBs are selected by the downstream ASes.</t>
          <t>In general, the number of PCBs that an adversary can announce this way scales exponentially with the number of consecutive ASes the adversary controls. However, this also decreases their chance of being chosen by a downstream AS for PCB dissemination or by an endpoint for path construction, as these relatively long paths have to compete with other, shorter paths. Furthermore, both endpoints and downstream ASes can detect poorer quality paths in the data plane and switch to better paths.</t>
          <t><strong>Wormhole Attack</strong> <br/>
A malicious AS M1 can send a PCB not only to their downstream neighbor ASes, but also out-of-band to another, non-neighbor colluding malicious AS M2. This creates new segments to M2 and M2's downstream neighbor ASes, simulating a link between M1 and M2 which may not correspond to an actual link in the network topology.</t>
          <t>Similarly, a fake path can be announced through a fake peering link between two colluding ASes, even if in different ISDs. An adversary can advertise fake peering links between the two colluding ASes, thus offering short paths to many destination ASes. Downstream ASes might have a policy of preferring paths with many peering links and thus are more likely to disseminate PCBs from the adversary. Similarly, endpoints are more likely to choose short paths that make use of peering links. In the data plane, whenever the adversary receives a packet containing a fake peering link, it can transparently exchange the fake peering hop fields with valid hop fields to the colluding AS. To avoid detection of the path alteration by the receiver, the colluding AS can replace the added hop fields with the fake peering link hop fields the sender inserted.</t>
          <t>To defend against this attack, methods to detect the wormhole attack are needed.  Per link or path latency measurements can help reveal the wormhole and render the fake peering link suspicious or unattractive. Without specific detection mechanisms these so-called wormhole attacks are unavoidable in routing.</t>
        </section>
      </section>
      <section anchor="dos-cp">
        <name>Denial of Service Attacks</name>
        <t>The beaconing process in the SCION control plane relies on control-plane communication. ASes exchange control-plane messages within each other when propagating PCBs to downstream neighbors,  when registering PCBs as path segments at the core control services, or during core path lookup. Volumetric DoS attacks, where attackers overload a link, may make it difficult to exchange these messages. SCION limits the impact of volumetric DoS attacks, which aim to exhaust network bandwidth on links; in this case, ASes can switch to alternative paths that do not contain the congested links. In addition, reflection-based attacks are prevented, as thanks to path-awareness, response packets are returned on the same path to the actual sender.</t>
        <t>Other mechanisms are required to avoid transport protocol attacks, where the attacker tries to exhaust the resources on a target server, such as a control service server, by opening many connections to this server. Possible means to mitigate this kind of DoS attacks are basically the same as for the current Internet, e.g., filtering, geo-blocking or using cookies.</t>
        <t>Thanks to its path-awareness, SCION enables more fine-grained filtering mechanisms based on certain path properties. For example, control-plane RPC methods that are available to endpoints within an AS are strictly separate from methods available to endpoints from other ASes. Specifically, expensive recursive path segment and trust material lookups are thus shielded from abuse by unauthorized entities.
For RPC methods exposed to other ASes, the control service implementation minimizes its attack surface by rejecting illegitimate callers based on ISD/AS, path type and length and any other available data points as soon as possible, i.e. immediately after determining the request type. For example:</t>
        <ul spacing="normal">
          <li>
            <t><tt>SegmentCreationService.Beacon</tt> can only be called by direct neighbors and thus calls from peers with a path length greater than one can immediately be discarded.</t>
          </li>
          <li>
            <t><tt>SegmentRegistrationService.SegmentsRegistration</tt> can only be called from within the same ISD, thus the source address <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 <eref target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">Anapaya ISD AS assignments</eref>). This task is currently being transitioned from Anapaya to the SCION Association.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.dekater-scion-dataplane">
          <front>
            <title>SCION Data Plane</title>
            <author fullname="Corine de Kater" initials="C." surname="de Kater">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Nicola Rustignoli" initials="N." surname="Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author fullname="Samuel Hitz" initials="S." surname="Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document describes the data plane of the path-aware, inter-
   domain network architecture SCION (Scalability, Control, and
   Isolation On Next-generation networks).  One of the basic
   characteristics of SCION is that it gives path control to endpoints.
   The SCION control plane is responsible for discovering these paths
   and making them available as path segments to the endpoints.  The
   role of the SCION data plane is to combine the path segments into
   end-to-end paths, and forward data between endpoints according to the
   specified path.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekater-scion-pki-06"/>
        </reference>
        <reference anchor="RFC4632">
          <front>
            <title>Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan</title>
            <author fullname="V. Fuller" initials="V." surname="Fuller"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>This memo discusses the strategy for address assignment of the existing 32-bit IPv4 address space with a view toward conserving the address space and limiting the growth rate of global routing state. This document obsoletes the original Classless Inter-domain Routing (CIDR) spec in RFC 1519, with changes made both to clarify the concepts it introduced and, after more than twelve years, to update the Internet community on the results of deploying the technology described. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="122"/>
          <seriesInfo name="RFC" value="4632"/>
          <seriesInfo name="DOI" value="10.17487/RFC4632"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="gRPC" target="https://grpc.io/">
          <front>
            <title>gRPC, an open-source universal RPC framework</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="proto3" target="https://protobuf.dev/programming-guides/proto3/">
          <front>
            <title>Protocol Buffers Language Guide version 3</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="Connect" target="https://connectrpc.com/docs/protocol/">
          <front>
            <title>Connect Protocol Reference</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CHUAT22" target="https://doi.org/10.1007/978-3-031-05288-0">
          <front>
            <title>The Complete Guide to SCION</title>
            <author initials="L." surname="Chuat" fullname="Laurent Chuat">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="M." surname="Legner" fullname="Markus Legner">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Basin" fullname="David Basin">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="D." surname="Hausheer" fullname="David Hausheer">
              <organization>Otto von Guericke University Magdeburg</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="P." surname="Mueller" fullname="Peter Mueller">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="A." surname="Perrig" fullname="Adrian Perrig">
              <organization>ETH Zuerich</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ISBN" value="978-3-031-05287-3"/>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC5398">
          <front>
            <title>Autonomous System (AS) Number Reservation for Documentation Use</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <date month="December" year="2008"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, two blocks of Autonomous System numbers (ASNs) are reserved for use in examples in RFCs, books, documentation, and the like. This document describes the reservation of two blocks of ASNs as reserved numbers for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5398"/>
          <seriesInfo name="DOI" value="10.17487/RFC5398"/>
        </reference>
        <reference anchor="RFC6996">
          <front>
            <title>Autonomous System (AS) Reservation for Private Use</title>
            <author fullname="J. Mitchell" initials="J." surname="Mitchell"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document describes the reservation of Autonomous System Numbers (ASNs) that are for Private Use only, known as Private Use ASNs, and provides operational guidance on their use. This document enlarges the total space available for Private Use ASNs by documenting the reservation of a second, larger range and updates RFC 1930 by replacing Section 10 of that document.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="6"/>
          <seriesInfo name="RFC" value="6996"/>
          <seriesInfo name="DOI" value="10.17487/RFC6996"/>
        </reference>
        <reference anchor="RFC9217">
          <front>
            <title>Current Open Questions in Path-Aware Networking</title>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>In contrast to the present Internet architecture, a path-aware internetworking architecture has two important properties: it exposes the properties of available Internet paths to endpoints, and it provides for endpoints and applications to use these properties to select paths through the Internet for their traffic. While this property of "path awareness" already exists in many Internet-connected networks within single domains and via administrative interfaces to the network layer, a fully path-aware internetwork expands these concepts across layers and across the Internet.</t>
              <t>This document poses questions in path-aware networking, open as of 2021, that must be answered in the design, development, and deployment of path-aware internetworks. It was originally written to frame discussions in the Path Aware Networking Research Group (PANRG), and has been published to snapshot current thinking in this space.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9217"/>
          <seriesInfo name="DOI" value="10.17487/RFC9217"/>
        </reference>
        <reference anchor="RFC9473">
          <front>
            <title>A Vocabulary of Path Properties</title>
            <author fullname="R. Enghardt" initials="R." surname="Enghardt"/>
            <author fullname="C. Krähenbühl" initials="C." surname="Krähenbühl"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>Path properties express information about paths across a network and the services provided via such paths. In a path-aware network, path properties may be fully or partially available to entities such as endpoints. This document defines and categorizes path properties. Furthermore, the document identifies several path properties that might be useful to endpoints or other entities, e.g., for selecting between paths or for invoking some of the provided services. This document is a product of the Path Aware Networking Research Group (PANRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9473"/>
          <seriesInfo name="DOI" value="10.17487/RFC9473"/>
        </reference>
        <reference anchor="BollRio-2000" target="https://kam.mff.cuni.cz/~ksemweb/clanky/BollobasR-scale_free_random.pdf">
          <front>
            <title>The diameter of a scale-free random graph</title>
            <author initials="B." surname="Bollobás" fullname="Béla Bollobás">
              <organization/>
            </author>
            <author initials="O." surname="Riordan" fullname="Oliver Riordan">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1679?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks go to William Boye (Swiss National Bank), Matthias Frei (SCION Association), Kevin Meynell (SCION Association), Juan A. Garcia Prado (ETH Zurich), and Roger Lapuh (Extreme Networks) for reviewing this document. We are also very grateful to Adrian Perrig (ETH Zurich), for providing guidance and feedback about each aspect of SCION. Finally, we are indebted to the SCION development teams of Anapaya and ETH Zurich, for their practical knowledge and for the documentation about the SCION Control Plane, as well as to the authors of <xref target="CHUAT22"/> - the book is an important source of input and inspiration for this draft.</t>
    </section>
    <section numbered="false" anchor="app-a">
      <name>Control Service gRPC API</name>
      <t>The following code block provides, in protobuf format, the API by which control services interract.</t>
      <figure anchor="_figure-11">
        <name>Control Service gRPC API definition</name>
        <artwork><![CDATA[
enum SegmentType {
    // Unknown segemnt type.
    SEGMENT_TYPE_UNSPECIFIED = 0;
    // Up segment.
    SEGMENT_TYPE_UP = 1;
    // Down segment.
    SEGMENT_TYPE_DOWN = 2;
    // Core segment.
    SEGMENT_TYPE_CORE = 3;
}


// This API is exposed by the control services of core ASes expose this on the SCION dataplane and also by all
// control services on the "intra-domain protocol" network.
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;
}

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;
}

// This API is only exposed by core ASes and only on the SCION dataplane.
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 {}

service SegmentCreationService {
    // Beacon sends a beacon to the remote.
    rpc Beacon(BeaconRequest) returns (BeaconResponse) {}
}

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

message BeaconResponse {}

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 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 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;
}

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;
}

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 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;
}

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

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

]]></artwork>
      </figure>
    </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 bootstraping 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 enpoint 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-12">
        <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>
    </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 controle service.</t>
      <figure anchor="_figure-8">
        <name>Topology used in the path lookup examples.</name>
        <artwork><![CDATA[
+----------------------------+     +----------------------------+
|                            |     |                            |
|                            |     |                            |
|    +------------------+    |     |    +------------------+    |
|    |      Core        |    |     |    |          Core    |    |
|    |                  |    |     |    |                  |    |
|    | .---.     .---.  |    |     |    |            .---. |    |
|    |(  C  )---(  B  )-----------------------------(  F  )|    |
|    | `+--'     `+-+'---------+   |    |    .---.   `+-+' |    |
|    |  |         | |   |    | +------------(  E  )   | |  |    |
|    |  |         | |   |    |     |    |    `-+-'----+ |  |    |
|    +--|---------|-|---+    |     |    +------|--------|--+    |
|       |         | |        |     |           |        |       |
|       |         | |        |     |           |        |       |
|       |+--------+ |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|       ||          |        |     |           |        |       |
|     .-++.         |        |     |         .-+-.      |       |
|    (  D  )      .-+-.      |     |        (  G  )-----+       |
|     `---'      (  A  )     |     |         `---'              |
|                 `---'      |     |                            |
|   ISD 1                    |     |                    ISD 2   |
+----------------------------+     +----------------------------+
]]></artwork>
      </figure>
      <figure anchor="_figure-9">
        <name>Sequence diagram illustrating a path lookup for a destination D in the source ISD. The request (core, x, x) is for all pairs of core ASes in the source ISD. Similarly, (down, x, D) is for down-segments between any core AS in the source ISD and destination D.</name>
        <artwork><![CDATA[
+---------+          +---------+          +---------+        +---------+
|Endpoint |          |Source AS|          | Core AS |        | Core AS |
|         |          | CS (A)  |          | CS (B)  |        | CS (C)  |
+----+----+          +----+----+          +----+----+        +-----+---+
    +++                   |                    |                   |
    | |                   |                    |                   |
+---+-+-------+           |                    |                   |
|send requests|           |                    |                   |
| in parallel |           |                    |                   |
+---+-+-------+           |                    |                   |
    | |                   |                    |                   |
    | |  request (up)     |                    |                   |
    | +----------------->+++                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | | reply (up,[A->B]) |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (core,*,*) |                    |                   |
    | +----------------->+++                   |                   |
    | |                  | |request (core,B,*) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(core,[B->C])|                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |reply (core,[B->C])|                    |                   |
    | |                   |                    |                   |
    | |                   |                    |                   |
    | |request (down,*,D) |                    |                   |
    | +----------------->+++                   |                   |
    | |            +-----+-+-----+             |                   |
    | |            |send requests|             |                   |
    | |            | in parallel |             |                   |
    | |            +-----+-+-----+             |                   |
    | |                  | |                   |                   |
    | |                  | |request (down,B,D) |                   |
    | |                  | +----------------->+++                  |
    | |                  | |<-- -- -- -- -- --+++                  |
    | |                  | | reply(down,[B->D])|                   |
    | |                  | |                   |                   |
    | |                  | |                   |request (down,C,D) |
    | |                  | +-------------------+----------------->+++
    | |                  | <-- -- -- -- -- -- -+ -- -- -- -- -- --+++
    | |   reply (down,   | |                   | reply(down,[C->D])|
    | |   [B->D, C->D])  | |                   |                   |
    | |< -- -- -- -- -- -+++                   |                   |
    | |                   |                    |                   |
+---+-+----------+        |                    |                   |
|combine segments|        |                    |                   |
+---+-+----------+        |                    |                   |
    | |                   |                    |                   |
    +++                   |                    |                   |
     |                    |                    |                   |
 +---+----+           +---+----+          +----+---+          +----+---+
 +--------+           +--------+          +--------+          +--------+
]]></artwork>
      </figure>
      <figure anchor="_figure-10">
        <name>Sequence diagram illustrating a path lookup for a destination G in a remote ISD. The request (core, x, (2, x)) is for all path segments between a core AS in the source ISD and a core AS in ISD 2. Similarly, (down, (2, x), G) is for down-segments between any core AS in ISD 2 and destination G.</name>
        <artwork><![CDATA[
+---------+     +---------+      +---------+   +---------+   +---------+
|Endpoint |     |Source AS|      | Core AS |   | Core AS |   | Core AS |
|         |     | CS (A)  |      | CS (B)  |   | CS (E)  |   | CS (F)  |
+---+-----+     +----+----+      +----+----+   +----+----+   +----+----+
    |                |                |             |             |
   +++               |                |             |             |
   | |               |                |             |             |
+--+-+------+        |                |             |             |
|   send    |        |                |             |             |
|requests in|        |                |             |             |
| parallel  |        |                |             |             |
+--+-+------+        |                |             |             |
   | |               |                |             |             |
   | |  request (up) |                |             |             |
   | +------------->+++               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |    reply      |                |             |             |
   | | (up,[A->B])   |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(core,*,(2,*)) |                |             |             |
   | +------------->+++    request    |             |             |
   | |              | |(core,B,(2,*)) |             |             |
   | |              | +------------->+++            |             |
   | |              | |<- -- -- -- --+++            |             |
   | |              | | reply (core,  |             |             |
   | |              | | [B->E,B->F])  |             |             |
   | |<- -- -- -- --+++               |             |             |
   | | reply (core,  |                |             |             |
   | | [B->E,B->F])  |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |               |                |             |             |
   | |   request     |                |             |             |
   | |(down,(2,*),G) |                |             |             |
   | +------------->+++               |             |             |
   | |        +-----+-+-----+         |             |             |
   | |        |send requests|         |             |             |
   | |        | in parallel |         |             |             |
   | |        +-----+-+-----+         |   request   |             |
   | |              | |               | (down,E,G)  |             |
   | |              | +---------------+----------->+++            |
   | |              | <- -- -- -- -- -+ -- -- -- --+++            |
   | |              | |               |    reply    |             |
   | |              | |               |(down,[E->G])|             |
   | |              | |               |             |   request   |
   | |              | |               |             | (down,F,G)  |
   | |              | +---------------+-------------+----------->+++
   | |              | < -- -- -- -- --|-- -- -- -- -+ -- -- -- --+++
   | |              | |               |             |    reply    |
   | | reply (down, | |               |             |(down,[F->G])|
   | | [E->G,F->G]) | |               |             |             |
   | |<- -- -- -- --+++               |             |             |
   | |               |                |             |             |
+--+-+----+          |                |             |             |
| combine |          |                |             |             |
|segments |          |                |             |             |
+--+-+----+          |                |             |             |
   | |               |                |             |             |
   +++               |                |             |             |
    |                |                |             |             |
+---+----+       +---+----+       +---+----+    +---+----+    +---+----+
+--------+       +--------+       +--------+    +--------+    +--------+
]]></artwork>
      </figure>
    </section>
  </back>
  <!-- ##markdown-source:
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
akKi3OwNzqFNMLXhLtPpN4nGUz67STewc39nU5Ls+oSrv+qupG10tCHfLHzN
Pg4Gf+scWtj5XyGJtnUsZ6ebTmZzfm3yyP5GB3YoYpPL3FpzRtRNRTPrZtWY
E4Nvmcn7/6ey3iKVldnMOso/R+lGZDOVwBIC2PqKBQH1FsKdTHAN5S6vrBnh
YT0dt+mvvqSyFRwikc6KJO3GEYFHwlZmWFsAocUMQ7UTmKvs3UUc056DUkt4
LMrb91zdCM8qtbKwvQYsPKi+0jXb6nbXpstjuqoqvMjd0HojdWgCUY2LSIBE
Eaq+QZPCdcjn+uh5+YvDCS4k7JeVzXQJj804mZ2ikPM3RcpAzPqEaBmKb/8b
IWawsS2oqRpwCj9vp/LXgXfE57mYtD751nB+jtN6LQ1IxsjN16VPWyVVU6jV
gmW/+10J1W17RZRNDXAyydR//SvJlQ3WausqwQclDZxFRXLIEi5EU+JIPYeI
GjWP5Q9bAvnnoX2zVZXDUqoIDRgJFJX4MohKU1f8JQe/oWzh9GjV0VG7ZOsw
t+Jlu3O8TDLK0KJQspFFeltPSKYUK3qskHH8NXXOCoxeIRwI6SMbTbab16EB
SEJhOOWU7qNBfoI7u0SDgfYo30K++TiKuoWauq5pv7WQBcfaBltcV7kiOe5/
EToYHKXQwVtVm1nDr0PU+NtxbEl0S5vxKiyKMi76z6ik6HtPuD7cUuun4oOR
FfhvwReCK6Hm6d9TLqKYr2bq+6Dym66Ew/mT73548vz1z6//9PLJzz8+P3/5
5OTs6dmT0+yb7P5X6YdeuhoPre9OX/z0HL49SH978uLVE/j20NSHiOpYJBhe
WMsixf12Ux+261z4Cr7p5zfVv9gwg19f/LD/hlZfLBiFEkUz6gCiPDWNmC++
Bpp+eNBzg37bfuc2S43rbvjaGYgOrVIHVDJBwxaj4gxkGlXfgWvchU4mShoI
6XEjtV6p10qHCkG0ECaYPTRpUlmGjVCAl1+pt4pb9mHnrAbdhzVp1l4I8HHc
dkOwQCbnb4trdfWhHQSDJZwfLIgCDa9tAEf2PHIPk6p6u1oAFZrSL0KCpHMV
fdTlALLJaj7OcQSM1VyVUxp1KInKnKnzWa0Ff9GrLsZRaveq5VVN48tKpYdI
BqIQTVuC1PawZUnEeYTsY5YYCX2SHjkIjGBiFxKIH2ObHrSacHyJ0zEkdt/3
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
VFOOHYUyhRFON/WiYT1rcxN2A2dDfrKPB+I2m4F2MJLpeu4j+CSeA208UE40
j4EUGOrX2VWV6S47hQDAQBofzcgRh8keWZRnEDDsgIBInYJ1mvFDLdLY9LEm
Bjj4umBAeQAq4INacFvkhoUfkOcx2dE8icUKGCYyDHkBjnctnNk4nQfbQb9F
NYHnlUMLvdVN6R+uwSSdu5kVAs4cddz5t3S2hFupnW6y8+W/bSdvTw7oFXRS
+TfEJ97OF72z3HMGQn8S/oUu3/HggIfEdpAcgX/Z9es3qk26rEt4SBMGJrCr
bG5J3aKQEAt7Stiyx0RPqORyoQTeM3SGDWIk2r6+ynCde1BItMDqup+kBT2y
MQd1t+NGRt3uj7PU2bun7hg6xX5eX4PViiZXNjqFc4gfick1t0r+qg3kn3nZ
D7bE9XVTE8/q3++867d2bu1H/VQ1PNTv928glPd+RS/sw9oPO3+orvaxckHR
/7DTD7hCGCpm6+VsFadZuqQyn5IC4cgbgfeWiRxBTm2Jngul28Ltngk934eK
ZB0hjoCsTc9YvWzQUUNSQUBJ8KjBbQ7sl5OxuSFxus5yki7wqta8/Vkxp43r
vj+ljDuBbQIS/5izr0KRZ9EPHYhkSIEgGtDIiOXP/EjAIsFQkJO3gUSZVkvX
8PP6+zJdhXXXz6ybf9gR/yJYOR2vLtix+OYlJyfToAC+etDbbZ0yRCLGKaOM
RbtqbohyfuUMVw5Xa8Gw+YdTGn7IW346G3gKl4FKs1K2vbhWyRST22vVi+hG
VOjUAqICNsLVa2DD1ww4meGVvqJ5U2BiDpdYjZ3Rl0Z9UrlsYiRv6JO+1HK3
mWd7aR/MMz5Ok+x5+hYL3r7en8VcRU38ktWQ6s2EBfueGwbq0JrPZvKon5XH
eMCLWmHUleL8HNScOC63jBQioRPpLjyfjt4p6j3BfDqNAVfehLDRPFYF5VRE
GapWJZymQ51NchLJqTCYXDhlrBpPra9IkcbNgZ9KQ2ZEQhOHEGMM5MFIGnbf
PH/6cnDy9vXR6eDF03+8fn7y7LjVsXR0cMiZim+eDXY//6KdArQcnH7n/j6l
puFaWjp/efzZunRc02BhAzqf7+yuS8c1VSeVasjBoarTe8RcQ6c6JYCDgmWW
Kz7wAzmRXtrs60grM4pyIfFVbtvDlcMs4Dw+7qJOaApaUsgR4dUsZLnA0ND3
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
+Zrodd3k6e0cThTwEvuZnqKf6X8Bf12YjxAtAgA=

-->

</rfc>
