<?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.17 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dekater-scion-dataplane-02" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="SCION DP">SCION Data Plane</title>
    <seriesInfo name="Internet-Draft" value="draft-dekater-scion-dataplane-02"/>
    <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="08"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 151?>

<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.</t>
      <t>The SCION data plane fundamentally differs from today's IP-based data plane in that it is <em>path-aware</em>: 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>
    <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-dp_I-D/draft-dekater-scion-dataplane.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dekater-scion-dataplane/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/scionassociation/scion-dp_I-D"/>.</t>
    </note>
  </front>
  <middle>
    <?line 157?>

<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>The data transmission order for SCION is the same as for IPv6 as defined in Introduction of <xref target="RFC8200"/>.</t>
      <t>SCION has been developed with the following goals:</t>
      <t><em>Availability</em> - to provide highly available communication that can send traffic over paths with optimal or required characteristics, quickly handle inter-domain link or router failures (both on the last hop or anywhere along the path) and provide continuity in the presence of adversaries.</t>
      <t><em>Security</em> - to provide higher levels of trust in routing information in order to prevent traffic hijacking, reduce potential for denial-of-service and other attacks. Endpoints can decide the trust roots they wish to rely on, routing information can be unambiguously attributed to an AS, and packets are only forwarded along authorized path segments. A particular use case is to enable geofencing.</t>
      <t><em>Scalability</em> - to improve the scalability of the inter-domain control plane and data plane, avoiding existing limitations related to convergence and forwarding table size. The advertising of path segments is separated into a beaconing process within each Isolation Domain (ISD) and between ISDs which incurs minimal overhead and resource requirements on routers.</t>
      <t>SCION relies on three main components:</t>
      <t><em>PKI</em> - To achieve scalability and trust, SCION organizes existing ASes into logical groups of independent routing planes called <em>Isolation Domains (ISDs)</em>. All ASes in an ISD agree on a set of trust roots called the <em>Trust Root Configuration (TRC)</em> which is a collection of signed root certificates in X.509 v3 format <xref target="RFC5280"/>. The ISD is governed by a set of <em>core ASes</em> which typically manage the trust roots and provide connectivity to other ISDs. This is the basis of the public key infrastructure which the SCION control plane relies upon for the authentication of messages that is used for the SCION control plane. See <xref target="I-D.scion-cppki"/></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. See <xref target="I-D.scion-cp"/></t>
      <t><em>Data Plane</em> - carries out secure packet forwarding between SCION-enabled ASes over paths selected by endpoints. A SCION border router reuses existing intra-domain infrastructure to communicate to other SCION routers or SCION endpoints within its AS.</t>
      <t>This document describes the SCION Data 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>Core AS</strong>: Each SCION 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>Data Plane</strong>: The data plane (sometimes also referred to as the forwarding plane) is responsible for forwarding data packets that endpoints have injected into the network. After routing information has been disseminated by the control plane, packets are forwarded according to such information by the data plane.</t>
        <t><strong>Endpoint</strong>: An endpoint is the start- or the end 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 Key</strong>: A forwarding key is a symmetric key that is shared between the control service (control plane) and the routers (data plane) of an AS. It is used to authenticate hop fields in the end-to-end SCION path. The forwarding key is an AS-local secret and is not shared with other ASes.</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>Interface Identifier (Interface ID)</strong>: 16 bit identifier that designates a SCION interface at the end of a link connecting two SCION ASes. Each interface belongs to one border router. Hop fields describe the traversal of an AS by a pair of interface IDs (the ingress and egress interfaces). The Interface ID <bcp14>MUST</bcp14> be unique within each AS. Interface ID 0 is not a valid identifier, implementations can use it as the "unspecified" value.</t>
        <t><strong>Isolation Domain (ISD)</strong>: In SCION, Autonomous Systems (ASes) are organized into logical groups called isolation domains or ISDs. Each ISD consists of ASes that span an area with a uniform trust environment (e.g., a common jurisdiction). A possible model is for ISDs to be formed along national boundaries or federations of nations.</t>
        <t><strong>Leaf AS</strong>: An AS at the "edge" of an ISD, with no other downstream ASes.</t>
        <t><strong>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 inter-domain forwarding tables, SCION data packets contain all the necessary, cryptographically-protected path information. This property is referred to as packet-carried forwarding state.</t>
        <t><strong>Path Authorization</strong>: A requirement for the data plane is that endpoints can only use paths that were constructed and authorized by ASes in the control plane. This property is called path authorization. The goal of path authorization is to prevent endpoints from crafting hop fields (HFs) themselves, modifying HFs in authorized path segments, or combining HFs of different path segments.</t>
        <t><strong>Path Control</strong>: Path control is a property of a network architecture that gives endpoints the ability to select how their packets travel through the network. Path control is stronger than path transparency.</t>
        <t><strong>Path Segment</strong>: Path segments are derived from path-segment construction beacons (PCBs). A path segment can be (1) an up-segment (i.e., a path between a non-core AS and a core AS in the same ISD), (2) a down-segment (i.e., the same as an up-segment, but in the opposite direction), or (3) a core-segment (i.e., a path between core ASes). Up to three path segments can be used to create a forwarding path.</t>
        <t><strong>Path-Segment Construction Beacon (PCB)</strong>: Core 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>Path Transparency</strong>: Path transparency is a property of a network architecture that gives endpoints full visibility over the network paths their packets are taking. Path transparency is weaker than path control.</t>
        <t><strong>Peering Link</strong>: A link between two SCION border routers of different ASes, where at least one of the two ASes is not core. Two peering ASes may be in different ISDs. A peering link can be seen as a short-cut on a normal path. Peering link information is added to segment information during the beaconing process and used to shorten paths while assembling them from segments.</t>
        <t><strong>Valley Route</strong>: A valley route contains ASes that do not profit economically from traffic on this route. The name comes from the fact that such routes go "down" (following parent-child links) before going "up" (following child-parent links).</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="overview">
        <name>Overview</name>
        <t>The SCION data plane forwards inter-domain packets between SCION-enabled ASes. SCION routers are normally deployed at the edge of an AS, and peer with neighbor SCION routers. Inter-domain forwarding is based on end-to-end path information contained in the packet header. This path information consists of a sequence of hop fields (HFs). Each hop field corresponds to an AS on the path, and it includes an ingress- as well as an egress interface ID, which univocally identify the ingress and egress interfaces within the AS. The information is authenticated with a Message Authentication Code (MAC) to prevent forgery.</t>
        <t>This concept allows SCION routers to forward packets to a neighbor AS without inspecting the destination address and also without consulting an inter-domain forwarding table. Intra-domain forwarding and routing are based on existing mechanisms (e.g., IP). A SCION border router reuses existing intra-domain infrastructure to communicate to other SCION routers or SCION endpoints within its AS. The last SCION router at the destination AS therefore uses the destination address to forward the packet to the appropriate local endpoint.</t>
        <t>This SCION design choice has the following advantages:</t>
        <ul spacing="normal">
          <li>
            <t>It provides control and transparency over forwarding paths to endpoints.</t>
          </li>
          <li>
            <t>It simplifies the packet-processing at routers: Instead of having to perform longest-prefix matching on IP addresses, which requires expensive hardware and substantial amounts of energy, a router can simply access the next hop from the packet header, after having verified the authenticity of the hop field's MAC.</t>
          </li>
        </ul>
        <section anchor="inter-and-intra-domain-forwarding">
          <name> Inter- and Intra-Domain Forwarding</name>
          <t>As SCION is an inter-domain network architecture, it is not concerned with intra-domain forwarding. This corresponds to the general practice today where BGP and IP are used for inter-domain routing and forwarding, respectively, but ASes use an intra-domain protocol of their choice, for example OSPF or IS-IS for routing and IP, MPLS, and various layer-2 protocols for forwarding. In fact, even if ASes use IP-forwarding internally today, they typically encapsulate the original IP packet they receive at the edge of their network into another IP packet with the destination address set to the egress border router, to avoid full inter-domain forwarding tables at internal routers.</t>
          <t>SCION emphasizes this separation, as SCION is used exclusively for inter-domain forwarding, and re-uses the intra-domain network fabric to provide connectivity among all SCION infrastructure services, border routers, and endpoints. As a consequence, minimal change to the infrastructure is required for ISPs when deploying SCION.</t>
          <t>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. This implies that the endpoint addresses are not required to be globally unique or globally routable, they can be selected independently by the corresponding ASes. This means, for example, that an endpoint identified by a link-local IPv6 address in the source AS can directly communicate with an endpoint identified by a globally routable IPv4 address via SCION. Alternatively, it is possible for two SCION hosts with the same IPv4 address 10.0.0.42 but located in different ASes to communicate with each other via SCION (<xref target="RFC1918"/>).</t>
        </section>
        <section anchor="intra-domain-forwarding-process">
          <name> Intra-Domain Forwarding Process</name>
          <t>The full forwarding process for a packet transiting an intermediate AS consists of the following steps.</t>
          <t><strong>Note:</strong> In this context, a border router is called <strong>ingress</strong> border router when it refers to an entrance border router to an AS, as seen from the direction of travel of the SCION packet. A border router is called <strong>egress</strong> border router when it refers to an exit border router of an AS, as seen from the direction of travel of the SCION packet.</t>
          <ol spacing="normal" type="1"><li>
              <t>The AS's SCION ingress router receives a SCION packet from the neighboring AS.</t>
            </li>
            <li>
              <t>The SCION router parses, validates, and authenticates the SCION header.</t>
            </li>
            <li>
              <t>The SCION router maps the egress interface ID in the current hop field of the SCION header to the destination address of the intra-domain protocol (e.g. MPLS or IP) on the egress border router.</t>
            </li>
            <li>
              <t>The packet is forwarded within the AS by routers and switches based on the header of the intra-domain protocol.</t>
            </li>
            <li>
              <t>Upon receiving the packet, the SCION egress router strips off the header of the intra-domain protocol, again validates and updates the SCION header, and forwards the packet to the neighboring SCION router.</t>
            </li>
            <li>
              <t>The last SCION router on the path forwards the packet to the packet's destination endpoint indicated by the field <tt>DstHostAddr</tt> of <xref target="address-header">the Address Header</xref>.</t>
            </li>
          </ol>
        </section>
        <section anchor="configuration">
          <name>Configuration</name>
          <t>Border routers require mappings from SCION interface IDs to underlay addresses. Such information <bcp14>MUST</bcp14> be supplied to each router in an out of band fashion (e.g in a configuration file). For each link to a neighbor, these values <bcp14>MUST</bcp14> be configured. A typical implementation will require:</t>
          <ul spacing="normal">
            <li>
              <t>Interface ID.</t>
            </li>
            <li>
              <t>Link type (core, parent, child, peer). 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>For the router that manages the interface: the neighbor interface underlay address.</t>
            </li>
            <li>
              <t>For the routers that do not manage the interface:  the address of the intra-domain protocol on the router that does.</t>
            </li>
          </ul>
          <t>In order to forward traffic to a service endpoint addresse (<tt>DT/DS</tt> == 0b01 in the <xref target="common-header">common header</xref>), a border router translates the service number into a specific destination address. The method used to accomplish the translation is not defined by this document. It only depends on the implementation and the choices of each AS's administrator. In current practice this is accomplished by way of a configuration file.</t>
          <t><strong>Note:</strong> The current SCION implementation runs over the UDP/IP protocol. However, the use of other lower layers protocols is possible.</t>
        </section>
      </section>
      <section anchor="construction">
        <name>Path Construction (Segment Combinations)</name>
        <t>Paths are discovered by the SCION control plane, which makes them available to SCION endpoints in the form of path segments. As described in <xref target="I-D.scion-cp"/>, there are three kinds of path segments: up, down, and core. In the data plane, a SCION endpoint creates end-to-end paths from the path segments, by combining multiple path segments. Depending on the network topology, a SCION forwarding path can consist of one, two, or three segments. Each path segment contains several hop fields representing the ASes on the segment as well as one info field with basic information about the segment, such as a timestamp.</t>
        <t>Segments cannot be combined arbitrarily. To construct a valid forwarding path, the source endpoint <bcp14>MUST</bcp14> obey the following rules:</t>
        <ul spacing="normal">
          <li>
            <t>There can be at most one of each type of segment (up-, core-, and down-segment). Allowing multiple up- or down-segments would decrease efficiency and the ability of ASes to enforce path policies.</t>
          </li>
          <li>
            <t>If an up-segment is present, it <bcp14>MUST</bcp14> be the first segment in the path.</t>
          </li>
          <li>
            <t>If a down-segment is present, it <bcp14>MUST</bcp14> be the last segment in the path.</t>
          </li>
          <li>
            <t>If there are two path segments (one up- and one down-segment) that both announce the same peering link, then a shortcut via this peering link is possible.</t>
          </li>
          <li>
            <t>If there are two path segments (one up- and one down-segment) that share a common ancestor AS (in the direction of beaconing), then a shortcut via this common ancestor AS is possible.</t>
          </li>
          <li>
            <t>Additionally, all segments without any peering possibility <bcp14>MUST</bcp14> consist of at least two hop fields.</t>
          </li>
        </ul>
        <t><strong>Note:</strong> The type of segment is known to the endpoint but is not visible in the path header of data packets. Therefore, a SCION router needs to explicitly verify that these rules were followed correctly.</t>
        <t>Besides enabling the enforcement of path policies, the above rules also protect the economic interest of ASes, as they prevent building "valley paths". A valley path contains ASes that do not profit economically from traffic on this route. The name comes from the fact that such paths go "down" (following parent-child links) before going "up" (following child-parent links).</t>
        <t><xref target="_figure-1"/> below shows valid segment combinations.</t>
        <t><strong>Note:</strong> It is assumed that the source and destination endpoints are in different ASes (as endpoints from the same AS use an empty forwarding path to communicate with each other).</t>
        <figure anchor="_figure-1">
          <name>Illustration of valid path-segment combinations. Each node represents a SCION Autonomous System.</name>
          <artwork><![CDATA[
                                  ------- = end-to-end path
   C = Core AS                    - - - - = unused links
   * = source/destination AS      ------> = direction of beaconing


          Core                        Core                  Core
      ---------->                 ---------->           ---------->
     .-.       .-.               .-.       .-.         .-.       .-.
+-- ( C )-----( C ) --+     +-- ( C )-----(C/*)       (C/*)-----(C/*)
|    `+'       `+'    |     |    `+'       `-'         `-'       `-'
|     |    1a   |     |     |     |     1b                   1c
|     |         |     |     |     |
|     |         |     |     |     |
|    .+.       .+.    |     |    .+.                       Core
|   (   )     (   )   |     |   (   )                 -------------->
|    `+'       `+'    |     |    `+'                        .-.
|     |         |     |     |     |                   +----( C )----+
|     |         |     |     |     |                   |     `-'     |
|     |         |     |     |     |                   |             |
|    .+.       .+.    |     |    .+.                 .+.     1d    .+.
+-> ( * )     ( * ) <-+     +-> ( * )               (C/*)         (C/*)
     `-'       `-'               `-'                 `-'           `-'



          .-.                      .-.                   .-.
+--   +--( C )--+   --+      +--  (C/*)        +--    - ( C ) -    --+
|     |   `-'   |     |      |     `+'         |     |   `-'   |     |
|     |         |     |      |      |          |                     |
|     |    2a   |     |      |  2b  |          |     |    3a   |     |
|     |         |     |      |      |          |                     |
|    .+.       .+.    |      |     .+.         |    .+.       .+.    |
|   (   )     (   )   |      |    (   )        |   (   #-----#   )   |
|    `+'       `+'    |      |     `+'         |    `+'  Peer `+'    |
|     |         |     |      |      |          |     |         |     |
|     |         |     |      |      |          |     |         |     |
|     |         |     |      |      |          |     |         |     |
|    .+.       .+.    |      |     .+.         |    .+.       .+.    |
+-> ( * )     ( * ) <-+      +->  ( * )        +-> ( * )     ( * ) <-+
     `-'       `-'                 `-'              `-'       `-'


          Core                                    Core
      ---------->                              ---------->
     .-.       .-.             .-.            .-.       .-.        .-.
 +--( C )- - -( C )--+  +---- ( C ) ----+    ( C )- - -( C )  +-- ( C )
 |   `+'       `+'   |  |      `+'      |     `+'       `+'   |    `+'
 |         3b        |  |           4a  |          4b         |  5
 |    |         |    |  |       |       |      |         |    |     |
 |                   |  |               |                     |
 |   .+.       .+.   |  |      .+.      |      + - --. - +    |    .+.
 |  (   #-----#   )  |  |   +-(   )-+   |      +--(   )--+    |   ( * )
 |   `+'  Peer `+'   |  |   |  `-'  |   |      |   `-'   |    |    `+'
 |    |         |    |  |   |       |   |      |         |    |     |
 |    |         |    |  |   |       |   |      |         |    |     |
 |    |         |    |  |   |       |   |      |         |    |     |
 |   .+.       .+.   |  |  .+.     .+.  |     .+.       .+.   |    .+.
 +->( * )     ( * )<-+  +>( * )   ( * )<+    ( * )     ( * )  +-> ( * )
     `-'       `-'         `-'     `-'        `-'       `-'        `-'
]]></artwork>
        </figure>
        <t>Valid path-segment combinations:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Communication through core ASes</strong>:  </t>
            <ul spacing="normal">
              <li>
                <t><strong>Core-segment combination</strong> (Cases 1a, 1b, 1c, 1d in <xref target="_figure-1"/>): The up- and down-segments of source and destination do not have an AS in common. In this case, a core-segment is <bcp14>REQUIRED</bcp14> to connect the source's up- and the destination's down-segment (Case 1a). If either the source or the destination AS is a core AS (Case 1b) or both are core ASes (Cases 1c and 1d), then no up- or down-segment(s) are <bcp14>REQUIRED</bcp14> to connect the respective AS(es) to the core-segment.</t>
              </li>
              <li>
                <t><strong>Immediate combination</strong> (Cases 2a, 2b in <xref target="_figure-1"/>): The last AS on the up-segment (which is necessarily a core AS) is the same as the first AS on the down-segment. In this case, a simple combination of up- and down-segments creates a valid forwarding path. In Case 2b, only one segment is required.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Peering shortcut</strong> (Cases 3a and 3b): A peering link exists between the up- and down-segment. The extraneous path segments to the core are cut off. Note that the up- and down-segments do not need to originate from the same core AS and the peering link could also be traversing to a different ISD.</t>
          </li>
          <li>
            <t><strong>AS shortcut</strong> (Cases 4a and 4b): The up- and down-segments intersect at a non-core AS below the ISD core, thus creating a shortcut. In this case, a shorter path is made possible by removing the extraneous part of the path to the core. Note that the up- and down-segments do not need to originate from the same core AS and can even be in different ISDs (if the AS at the intersection is part of multiple ISDs).</t>
          </li>
          <li>
            <t><strong>On-path</strong> (Case 5): In the case where the source's up-segment contains the destination AS or the destination's down-segment contains the source AS, a single segment is sufficient to construct a forwarding path. Again, no core AS is on the final path.</t>
          </li>
        </ul>
      </section>
      <section anchor="path-authorization">
        <name> Path Authorization</name>
        <t>The SCION data plane provides <em>path authorization</em>. This property ensures that data packets always traverse the network using path segments that were explicitly authorized by the respective ASes, and prevents endpoints from constructing unauthorized paths or paths containing loops. SCION uses symmetric cryptography in the form of Message Authentication Codes (MACs) to authenticate the information encoded in hop fields. Such MACs are verified by routers at forwarding. For a detailed specification, see <xref target="path-auth"/>.</t>
      </section>
    </section>
    <section anchor="header">
      <name>SCION Header Specification</name>
      <t>This section provides a detailed specification of the SCION packet header. SCION also supports extension headers - these are described, too.</t>
      <section anchor="format">
        <name>SCION Packet Header Format</name>
        <t>The SCION packet header is composed of a common header, an address header, a path header, and an <bcp14>OPTIONAL</bcp14> extension header, see <xref target="_figure-2"/> below.</t>
        <figure anchor="_figure-2">
          <name>High-level SCION header structure</name>
          <artwork><![CDATA[
+--------------------------------------------------------+
|                     Common header                      |
|                                                        |
+--------------------------------------------------------+
|                     Address header                     |
|                                                        |
+--------------------------------------------------------+
|                      Path header                       |
|                                                        |
+--------------------------------------------------------+
|               Extension header (OPTIONAL)              |
|                                                        |
+--------------------------------------------------------+
]]></artwork>
        </figure>
        <t>The <em>common header</em> contains important meta information like a version number and lengths of the header and payload. In particular, it contains flags that control the format of subsequent headers such as the address and path headers. For more details, see <xref target="common-header"/>.</t>
        <t>The <em>address header</em> contains the ISD-, AS-, and endpoint-addresses of source and destination. The type and length of endpoint addresses are variable and can be set independently using flags in the common header. For more details, see <xref target="address-header"/>.</t>
        <t>The <em>path header</em> contains the full AS-level forwarding path of the packet. A path type field in the common header specifies the path format used in the path header. For more details, see <xref target="path-header"/>.</t>
        <t>Finally, the <bcp14>OPTIONAL</bcp14> <em>extension</em> header contains a variable number of hop-by-hop and end-to-end options, similar to the extensions in the IPv6 header <xref target="RFC8200"/>. For more details, see <xref target="ext-header"/>.</t>
        <section anchor="header-alignment">
          <name> Header Alignment</name>
          <t>The SCION header is aligned to 4 bytes.</t>
        </section>
      </section>
      <section anchor="scion-header-structure">
        <name> SCION Header Structure</name>
        <section anchor="common-header">
          <name> Common Header</name>
          <t>The SCION common header has the following packet format:</t>
          <figure anchor="_figure-3">
            <name>The SCION common header packet format</name>
            <artwork><![CDATA[
0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  TraffCl      |                FlowID                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    NextHdr    |    HdrLen     |          PayloadLen           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    PathType   |DT |DL |ST |SL |              RSV              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <ul spacing="normal">
            <li>
              <t><tt>Version</tt>: The version of the SCION common header. Currently, only version "0" is supported.</t>
            </li>
            <li>
              <t><tt>TrafficClass</tt> (<tt>TraffCl</tt> in the image above): The 8-bit long identifier of the packet's class or priority. The value of the traffic class bits in a received packet or fragment might differ from the value sent by the packet's source. The current use of the <tt>TrafficClass</tt> field for Differentiated Services and Explicit Congestion Notification is specified in <xref target="RFC2474"/> and <xref target="RFC3168"/>.</t>
            </li>
            <li>
              <t><tt>FlowID</tt>: This 20-bit field labels sequences of packets to be treated in the network as a single flow. Sources <bcp14>MUST</bcp14> set this field.</t>
            </li>
            <li>
              <t><tt>NextHdr</tt>: Encodes the type of the first header after the SCION header. This can be either a SCION extension or a layer-4 protocol such as TCP or UDP. Values of this field respect the Assigned SCION Protocol Numbers (see <xref target="protnum"/>).</t>
            </li>
            <li>
              <t><tt>HdrLen</tt>: Specifies the entire length of the SCION header in bytes, i.e., the sum of the lengths of the common header, the address header, and the path header. All SCION header fields are aligned to a multiple of 4 bytes. The SCION header length is computed as <tt>HdrLen</tt> * 4 bytes. The 8 bits of the <tt>HdrLen</tt> field limit the SCION header to a maximum of 255 * 4 = 1020 bytes.</t>
            </li>
            <li>
              <t><tt>PayloadLen</tt>: Specifies the length of the payload in bytes. The payload includes (SCION) extension headers and the L4 payload. This field is 16 bits long, supporting a maximum payload size of 65'535 bytes.</t>
            </li>
            <li>
              <t><tt>PathType</tt>: Specifies the type of the SCION path. It is possible to specify up to 256 different types. The format of one path type is independent of all other path types. The currently defined SCION path types are Empty (0), SCION (1), OneHopPath (2), EPIC (3) and COLIBRI (4). This document only specifies the Empty, SCION and OneHopPath path types. The other path types are currently experimental.</t>
            </li>
          </ul>
          <table anchor="_table-1">
            <name>SCION path types</name>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Path Type</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">Empty path (<tt>EmptyPath</tt>)</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">SCION (<tt>SCION</tt>)</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">One-hop path (<tt>OneHopPath</tt>)</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">EPIC path (experimental)</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">COLIBRI path (experimental)</td>
              </tr>
            </tbody>
          </table>
          <ul spacing="normal">
            <li>
              <t><tt>DT/DL/ST/SL</tt>: These fields define the endpoint-address type and endpoint-address length for the source and destination endpoint. <tt>DT</tt> and <tt>DL</tt> stand for Destination Type and Destination Length, whereas <tt>ST</tt> and <tt>SL</tt> stand for Source Type and Source Length. The possible endpoint address length values are 4 bytes, 8 bytes, 12 bytes, and 16 bytes. If some address has a length different from the supported values, the next larger size can be used and the address can be padded with zeros. <xref target="_table-2"/> below lists the currently used values for address length. The "type" identifier is only defined in combination with a specific address length. For example, address type "0" is defined as IPv4 in combination with address length 4, but in combination with address length 16, it stands for IPv6. Per address length, several sub-types are possible. <xref target="_table-3"/> shows the currently assigned combinations of lengths and types.</t>
            </li>
          </ul>
          <table anchor="_table-2">
            <name>Address length values</name>
            <thead>
              <tr>
                <th align="left">DL/SL Value</th>
                <th align="left">Address Length</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">4 bytes</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">8 bytes</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">12 bytes</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">16 bytes</td>
              </tr>
            </tbody>
          </table>
          <table anchor="_table-3">
            <name>Allocations of type values to length values</name>
            <thead>
              <tr>
                <th align="left">Length (bytes)</th>
                <th align="left">Type</th>
                <th align="left">DT/DL or ST/SL encoding</th>
                <th align="left">Conventional Use</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">4</td>
                <td align="left">0</td>
                <td align="left">0b0000</td>
                <td align="left">IPv4</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">1</td>
                <td align="left">0b0100</td>
                <td align="left">Service</td>
              </tr>
              <tr>
                <td align="left">16</td>
                <td align="left">0</td>
                <td align="left">0b0011</td>
                <td align="left">IPv6</td>
              </tr>
              <tr>
                <td align="left">other</td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left">Unassigned</td>
              </tr>
            </tbody>
          </table>
          <t>A service address designates a set of endpoint addresses rather than a singular one. A packet addressed to a service is redirected to any one endpoint-addresses that is known to be part of the set. <xref target="_table-4"/> lists the known services.</t>
          <ul spacing="normal">
            <li>
              <t><tt>RSV</tt>: These bits are currently reserved for future use.</t>
            </li>
          </ul>
        </section>
        <section anchor="address-header">
          <name> Address Header</name>
          <t>The SCION address header has the following format:</t>
          <figure anchor="_figure-4">
            <name>The SCION address header packet format</name>
            <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            DstISD             |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                             DstAS                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            SrcISD             |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                             SrcAS                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    DstHostAddr (variable Len)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    SrcHostAddr (variable Len)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <ul spacing="normal">
            <li>
              <t><tt>DstISD, SrcISD</tt>: The 16-bit ISD identifier of the destination/source.</t>
            </li>
            <li>
              <t><tt>DstAS, SrcAS</tt>: The 48-bit AS identifier of the destination/source.</t>
            </li>
            <li>
              <t><tt>DstHostAddr, SrcHostAddr</tt>: Specifies the variable length endpoint address of the destination/source. The accepted type and length are defined in the <tt>DT/DL/ST/SL</tt> fields of the common header.</t>
            </li>
          </ul>
          <t>If a service address is implied by the <tt>DT/DL</tt> or <tt>ST/SL</tt> field of the common header, the corresponding address field has the following format:</t>
          <figure anchor="_figure-20">
            <name>Service address format</name>
            <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Service Number        |              RSV              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <ul spacing="normal">
            <li>
              <t><tt>RSV</tt>: reserved for future use</t>
            </li>
          </ul>
          <t>The currently known service numbers are:</t>
          <table anchor="_table-4">
            <name>Known Service Numbers</name>
            <thead>
              <tr>
                <th align="left">Service Number (hex)</th>
                <th align="left">Short Name</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0x0001</td>
                <td align="left">DS</td>
                <td align="left">Discovery Service</td>
              </tr>
              <tr>
                <td align="left">0x0002</td>
                <td align="left">CS</td>
                <td align="left">Control Service</td>
              </tr>
              <tr>
                <td align="left">0xFFFF</td>
                <td align="left">None</td>
                <td align="left">Reserved invalid value</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Note:</strong> For more information on addressing in SCION, see the introduction of the SCION Control Plane Specification (<xref target="I-D.scion-cp"/>).</t>
        </section>
        <section anchor="path-header">
          <name> Path Header</name>
          <t>The path header of a SCION packet differs for each SCION path type.</t>
          <t><strong>Note:</strong> The path type is set in the <tt>PathType</tt> field of the SCION common header.</t>
          <t>Currently, SCION supports three path types:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>Empty</tt> path type (<tt>PathType=0</tt>). For more information, see <xref target="empty"/>.</t>
            </li>
            <li>
              <t>The <tt>SCION</tt> path type (<tt>PathType=1</tt>). This is the standard path type in SCION. For a detailed description, see <xref target="scion-path-type"/>.</t>
            </li>
            <li>
              <t>The <tt>OneHopPath</tt> path type (<tt>PathType=2</tt>). For more information, see <xref target="onehop"/>.</t>
            </li>
          </ul>
          <section anchor="empty">
            <name> Empty Path Type</name>
            <t>The <tt>Empty</tt> path type is used to send traffic within an AS. It has no additional fields, i.e., it consumes 0 bytes on the wire.</t>
            <t>One use case of the <tt>Empty</tt> path type lies in the context of link-failure detection. To this end, SCION uses the Bidirectional Forwarding Detection (BFD) protocol (<xref target="RFC5880"/> and <xref target="RFC5881"/>). BFD is a protocol intended to detect faults in the bidirectional path between two forwarding engines, with typically very low latency. It operates independently of media, data protocols, and routing protocols. SCION uses the <tt>Empty</tt> path type, together with <tt>OneHopPath</tt> path type, to bootstrap BFD within SCION. (For more information on the <tt>OneHopPath</tt> path type, see <xref target="onehop"/>.)</t>
          </section>
          <section anchor="scion-path-type">
            <name> SCION Path Type</name>
            <t>This section specifies the standard <tt>SCION</tt> path type.
A SCION path has the following layout:</t>
            <figure anchor="_figure-5">
              <name>Layout of a standard SCION path</name>
              <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          PathMetaHdr                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           InfoField                           |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              ...                              |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           InfoField                           |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           HopField                            |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           HopField                            |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              ...                              |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
            <t>It consists of a path meta header, up to 3 info fields and up to 64 hop fields.</t>
            <ul spacing="normal">
              <li>
                <t>The path meta header (<tt>PathMetaHdr</tt>) indicates the currently valid info field and hop field while the packet is traversing the network along the path, as well as the number of hop fields per segment.</t>
              </li>
              <li>
                <t>The number of info fields (<tt>InfoField</tt>) equals the number of path segments that the path contains - there is one info field per path segment. Each info field contains basic information about the corresponding segment, such as a timestamp indicating the creation time. There are also two flags. One specifies whether the segment is to be traversed in construction direction, the other whether the first or last hop field in the segment represents a peering hop field.</t>
              </li>
              <li>
                <t>Each hop field (<tt>HopField</tt>) represents a hop through an AS on the path, with the ingress and egress interface identifiers for this AS. This information is authenticated with a Message Authentication Code (MAC) to prevent forgery.</t>
              </li>
            </ul>
            <t>The SCION header is created by extracting the required info fields and hop fields from the corresponding path segments. The process of extracting is illustrated in <xref target="_figure-6"/> below. Note that ASes at the joints of multiple segments are represented by two hop fields. Be aware that these hop fields are not equal! In the hop field that represents the last hop in the first segment (seen in the direction of travel), only the ingress interface will be specified. However, in the hop field that represents the first hop in the second segment (also in the direction of travel), only the egress interface will be defined. Thus, the two hop fields for this one AS build a full hop through the AS, specifying both the ingress and egress interface. As such, they bring the two adjacent segments together.</t>
            <figure anchor="_figure-6">
              <name>Path construction example</name>
              <artwork><![CDATA[
                   +-----------------+
                   |    ISD Core     |
  .--.    .--.     |  .--.     .--.  |     .--.    .--.
 (AS 3)--(AS 4)----|-(AS 1)---(AS 2)-|----(AS 5)--(AS 6)
  `--'    `--'     |  `--'     `--'  |     `--'    `--'
                   +-----------------+

 Up-Segment           Core-Segment        Down-Segment
+---------+           +---------+         +---------+
| +-----+ |           | +-----+ |         | +-----+ |
| + INF + |--------+  | + INF + |---+     | + INF + |--+
| +-----+ |        |  | +-----+ |   |     | +-----+ |  |
| +-----+ |        |  | +-----+ |   |     | +-----+ |  |
| | HF  | |------+ |  | | HF  | |---+-+   | | HF  | |--+-+
| +-----+ |      | |  | +-----+ |   | |   | +-----+ |  | |
| +-----+ |      | |  | +-----+ |   | |   | +-----+ |  | |
| | HF  | |----+ | |  | | HF  | |---+-+-+ | | HF  | |--+-+-+
| +-----+ |    | | |  | +-----+ |   | | | | +-----+ |  | | |
| +-----+ |    | | |  +---------+   | | | | +-----+ |  | | |
| | HF  | |--+ | | |                | | | | | HF  | |--+-+-+-+
| +-----+ |  | | | |  +----------+  | | | | +-----+ |  | | | |
+---------+  | | | |  | ++++++++ |  | | | +---------+  | | | |
             | | | |  | | Meta | |  | | |              | | | |
             | | | |  | ++++++++ |  | | |              | | | |
             | | | |  | +------+ |  | | |              | | | |
             | | | +->| + INF  + |  | | |              | | | |
             | | |    | +------+ |  | | |              | | | |
             | | |    | +------+ |  | | |              | | | |
             | | |    | + INF  + |<-+ | |              | | | |
             | | |    | +------+ |    | |              | | | |
             | | |    | +------+ |    | |              | | | |
             | | |    | + INF  + |<---+-+--------------+ | | |
             | | |    | +------+ |    | |                | | |
             | | |    | +------+ |    | |                | | |
             | | +--->| |  HF  | |    | |                | | |
             | |      | +------+ |    | |                | | |
             | |      | +------+ |    | |                | | |
             | +----->| |  HF  | |    | |                | | |
             |        | +------+ |    | |                | | |
             |        | +------+ |    | |                | | |
             +------->| |  HF  | |    | |                | | |
                      | +------+ |    | |                | | |
                      | +------+ |    | |                | | |
                      | |  HF  | |<---+ |                | | |
                      | +------+ |      |                | | |
                      | +------+ |      |                | | |
     Forwarding Path  | |  HF  | |<-----+                | | |
                      | +------+ |                       | | |
                      | +------+ |                       | | |
                      | |  HF  | |<----------------------+ | |
                      | +------+ |                         | |
                      | +------+ |                         | |
                      | |  HF  | |<------------------------+ |
                      | +------+ |                           |
                      | +------+ |                           |
                      | |  HF  | |<--------------------------+
                      | +------+ |
                      +----------+
]]></artwork>
            </figure>
            <section anchor="PathMetaHdr">
              <name> Path Meta Header Field</name>
              <t>The 4-byte Path Meta Header field (<tt>PathMetaHdr</tt>) defines meta information about the SCION path that is contained in the path header. It has the following format:</t>
              <figure anchor="_figure-7">
                <name>SCION path type - Format of the Path Meta Header field</name>
                <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| C |  CurrHF   |    RSV    |  Seg0Len  |  Seg1Len  |  Seg2Len  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure>
              <ul spacing="normal">
                <li>
                  <t><tt>C</tt> (urrINF): Specifies a 2-bits index (0-based) pointing to the current info field for the packet on its way through the network. For details, see <xref target="offset-calc"/> below.</t>
                </li>
                <li>
                  <t><tt>CurrHF</tt>: Specifies a 6-bits index (0-based) pointing to the current hop field for the packet on its way through the network. For details, see <xref target="offset-calc"/> below. Note that the <tt>CurrHF</tt> index <bcp14>MUST</bcp14> point to a hop field that is part of the current path segment, as indicated by the <tt>CurrINF</tt> index.</t>
                </li>
              </ul>
              <t>Both indices are used by SCION routers when forwarding data traffic through the network. The SCION routers also increment the indexes if required. For more details, see <xref target="process-router"/>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>Seg{0,1,2}Len</tt>: The number of hop fields in a given segment. Seg{i}Len &gt; 0 implies that segment <em>i</em> contains at least one hop field, which means that info field <em>i</em> exists. (If Seg{i}Len = 0 then segment <em>i</em> is empty, meaning that this path does not include segment <em>i</em>, and therefore there is no info field <em>i</em>.) The following rules apply:  </t>
                  <ul spacing="normal">
                    <li>
                      <t>The total number of hop fields in an end-to-end path <bcp14>MUST</bcp14> be equal to the sum of all <tt>Seg{0,1,2}Len</tt> contained in this end-to-end path.</t>
                    </li>
                    <li>
                      <t>It is an error to have Seg{X}Len &gt; 0 AND Seg{Y}Len == 0, where 2 &gt;= <em>X</em> &gt; <em>Y</em> &gt;= 0. That is, if path segment Y is empty, the following path segment X <bcp14>MUST</bcp14> also be empty.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t><tt>RSV</tt>: Unused and reserved for future use.</t>
                </li>
              </ul>
            </section>
            <section anchor="offset-calc">
              <name> Path Offset Calculations</name>
              <t>The path offset calculations are used by the SCION border routers to determine the info field and hop field that are currently valid for the packet on its way through the network.</t>
              <t>The following rules apply when calculating the path offsets:</t>
              <artwork><![CDATA[
   if Seg2Len > 0: NumINF = 3
   else if Seg1Len > 0: NumINF = 2
   else if Seg0Len > 0: NumINF = 1
   else: invalid
]]></artwork>
              <t>The offsets of the current info field and current hop field (relative to the end of the address header) are now calculated as:</t>
              <artwork><![CDATA[
   B = byte
   InfoFieldOffset = 4B + 8B.CurrINF
   HopFieldOffset = 4B + 8B.NumINF + 12B.CurrHF
]]></artwork>
              <t>To check that the current hop field is in the segment of the current info field, the <tt>CurrHF</tt> needs to be compared to the <tt>SegLen</tt> fields of the current and preceding info fields.</t>
            </section>
            <section anchor="inffield">
              <name> Info Field</name>
              <t>The 8-byte Info Field (<tt>InfoField</tt>) has the following format:</t>
              <figure anchor="_figure-8">
                <name>SCION path type - Format of the Info Field</name>
                <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|r r r r r r P C|      RSV      |             Acc               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure>
              <ul spacing="normal">
                <li>
                  <t><tt>r</tt>: The <tt>r</tt> bits are unused and reserved for future use.</t>
                </li>
                <li>
                  <t><tt>P</tt>: Peering flag. If the flag has value "1", the segment represented by this info field contains a peering hop field, which requires special processing in the data plane. For more details, see <xref target="peerlink"/> and <xref target="packet-verif"/>.</t>
                </li>
                <li>
                  <t><tt>C</tt>: Construction direction flag. If the flag has value "1", the hop fields in the segment represented by this info field are arranged in the direction they have been constructed during beaconing.</t>
                </li>
                <li>
                  <t><tt>RSV</tt>: Unused and reserved for future use.</t>
                </li>
                <li>
                  <t><tt>Acc</tt>: This updatable field/counter is <bcp14>REQUIRED</bcp14> for calculating the MAC in the data plane. <tt>Acc</tt> stands for "Accumulator". For more details, see <xref target="auth-chained-macs"/>.</t>
                </li>
                <li>
                  <t><tt>Timestamp</tt>: Timestamp created by the initiator of the corresponding beacon. The timestamp is defined as the number of seconds elapsed since the POSIX Epoch (1970-01-01 00:00:00 UTC), encoded as a 32-bit unsigned integer. This timestamp enables the validation of a hop field in the segment represented by this info field, by verifying the expiration time and MAC set in the hop field - the expiration time of a hop field is calculated relative to the timestamp. A Info field with a timestamp in the future is invalid. For the purpose of validation, a timestamp is considered "future" if it is later than the locally available current time plus 337.5 seconds (i.e. the minimum time to live of a hop).</t>
                </li>
              </ul>
            </section>
            <section anchor="hopfld">
              <name>Hop Field</name>
              <t>The 12-byte Hop Field (<tt>HopField</tt>) has the following format:</t>
              <figure anchor="_figure-9">
                <name>SCION path type - Format of the Hop Field</name>
                <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|r r r r r r I E|    ExpTime    |           ConsIngress         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        ConsEgress             |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                              MAC                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure>
              <ul spacing="normal">
                <li>
                  <t><tt>r</tt>: The <tt>r</tt> bits are unused and reserved for future use.</t>
                </li>
                <li>
                  <t><tt>I</tt>: The ConsIngress Router Alert flag. If the ConsIngress Router Alert flag has value "1", the ingress router (in construction direction) will process the L4 payload in the packet. The construction direction is the direction of beaconing.</t>
                </li>
                <li>
                  <t><tt>E</tt>: The ConsEgress Router Alert flag. If the ConsEgress Router Alert flag has value "1", the egress router (in construction direction) will process the L4 payload in the packet.</t>
                </li>
              </ul>
              <t><strong>Note:</strong> A sender cannot rely on multiple routers retrieving and processing the payload even if it sets multiple router alert flags. This is use-case dependent: In the case of Traceroute informational messages, for example, the router for which the traceroute request is intended will process the request (if the corresponding Router Alert flag is set to "1") and reply to it without further forwarding the request along the path. Use cases that require multiple routers/hops on the path to process a packet have to instead rely on a hop-by-hop extension (see <xref target="ext-header"/>). For general information on router alerts, see <xref target="RFC2711"/>.</t>
              <ul spacing="normal">
                <li>
                  <t><tt>ExpTime</tt>: Expiration time of a hop field. The field is 1-byte long, thus there are 256 different values available to express an expiration time. The expiration time specified in this field is relative. An absolute expiration time in seconds is computed in combination with the <tt>Timestamp</tt> field (from the corresponding info field), as follows:  </t>
                  <ul spacing="normal">
                    <li>
                      <t><tt>Timestamp</tt> + (1 + <tt>ExpTime</tt>) * (24 hours/256)</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t><tt>ConsIngress</tt>, <tt>ConsEgress</tt>: The 16-bits ingress/egress interface IDs in construction direction, that is, the direction of beaconing.</t>
                </li>
                <li>
                  <t><tt>MAC</tt>: The 6-byte Message Authentication Code to authenticate the hop field. For details on how this MAC is calculated, see <xref target="hf-mac-calc"/>.</t>
                </li>
              </ul>
            </section>
          </section>
          <section anchor="onehop">
            <name>One-Hop Path Type</name>
            <t>The one-hop path type <tt>OneHopPath</tt> is currently used to bootstrap beaconing between neighboring ASes. This is necessary, as neighbor ASes do not have a forwarding path yet before beaconing is started.</t>
            <t>A one-hop path has exactly one info field and two hop fields with the specialty that the second hop field is not known a priori, but is instead created by the ingress SCION border router of the neighboring AS while processing the one-hop path. Any entity with access to the forwarding key of the source endpoint AS can create a valid info and hop field as described in <xref target="inffield"/> and <xref target="hopfld"/>, respectively.</t>
            <t>Upon receiving a packet containing a one-hop path, the ingress border router of the destination AS fills in the <tt>ConsIngress</tt> field in the second hop field of the one-hop path with the ingress interface ID. It sets the <tt>ConsEgress</tt> field to an invalid value (e.g. unspecified value 0), ensuring the path cannot be used beyond the destination AS. Then it calculates and appends the appropriate MAC for the hop field.</t>
            <t><xref target="_figure-10"/> below shows the layout of a SCION one-hop path type. There is only a single info field; the appropriate hop field can be processed by a border router based on the source and destination address. In this context, the following rules apply:</t>
            <ul spacing="normal">
              <li>
                <t>At the source endpoint AS, <em>CurrHF := 0</em>.</t>
              </li>
              <li>
                <t>At the destination endpoint AS, <em>CurrHF := 1</em>.</t>
              </li>
            </ul>
            <figure anchor="_figure-10">
              <name>Layout of the SCION one-hop path type</name>
              <artwork><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           InfoField                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           HopField                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           HopField                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
          </section>
          <section anchor="reverse">
            <name>Path Reversal</name>
            <t>When a destination endpoint receives a SCION packet, it can use the path information in the SCION header for sending the reply packets. For this, the destination endpoint <bcp14>MUST</bcp14> perform the following steps:</t>
            <ol spacing="normal" type="1"><li>
                <t>Reverse the order of the info fields;</t>
              </li>
              <li>
                <t>Reverse the order of the hop fields;</t>
              </li>
              <li>
                <t>For each info field, negate the construction direction flag <tt>C</tt>; do not change the accumulator field <tt>Acc</tt>.</t>
              </li>
              <li>
                <t>In the <tt>PathMetaHdr</tt> field:  </t>
                <ul spacing="normal">
                  <li>
                    <t>Set the <tt>CurrINF</tt> and <tt>CurrHF</tt> to "0".</t>
                  </li>
                  <li>
                    <t>Reverse the order of the non-zero <tt>SegLen</tt> fields.</t>
                  </li>
                </ul>
                <t>
<strong>Note:</strong> For more information on the <tt>PathMetaHdr</tt> field, see <xref target="PathMetaHdr"/>.</t>
              </li>
            </ol>
          </section>
        </section>
      </section>
      <section anchor="ext-header">
        <name>Extension Headers</name>
        <t>This section specifies the SCION extension headers. SCION currently provides two types of extension headers: the Hop-by-Hop (HBH) Options header and the End-to-End (E2E) Options header.</t>
        <ul spacing="normal">
          <li>
            <t>The Hop-by-Hop Options header is used to carry <bcp14>OPTIONAL</bcp14> information that <bcp14>MAY</bcp14> be examined and processed by every SCION router along a packet's delivery path. The Hop-by-Hop Options header is identified by value "200" in the <tt>NextHdr</tt> field of the SCION common header (see <xref target="common-header"/>).</t>
          </li>
          <li>
            <t>The End-to-End Options header is used to carry <bcp14>OPTIONAL</bcp14> information that <bcp14>MAY</bcp14> be examined and processed by the sender and/or the receiver of the packet. The End-to-End Options header is identified by value "201" in the <tt>NextHdr</tt> field of the SCION common header (see <xref target="common-header"/>).</t>
          </li>
        </ul>
        <t>If both headers are present, the HBH Options header <bcp14>MUST</bcp14> come before the E2E Options header.</t>
        <t><strong>Note:</strong> The SCION extension headers are defined and used based on and similar to the IPv6 extensions as specified in section 4 of <xref target="RFC8200"/>. The SCION Hop-by-Hop Options header and End-to-End Options header resemble the IPv6 Hop-by-Hop Options Header (section 4.3 in the RFC) and Destination Options Header (section 4.6), respectively.</t>
        <section anchor="oh-format">
          <name> Format of the SCION Options Headers</name>
          <t>The SCION Hop-by-Hop Options and End-to-End Options headers have the following format:</t>
          <figure anchor="_figure-11">
            <name>Extension headers: Options header</name>
            <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    NextHdr    |     ExtLen    |            Options            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <ul spacing="normal">
            <li>
              <t><tt>NextHdr</tt>: Unsigned 8-bit integer. Identifies the type of header immediately following the Hop-by-Hop/End-to-End Options header. Values of this field respect the Assigned SCION Protocol Numbers (see also <xref target="protnum"/>).</t>
            </li>
            <li>
              <t><tt>ExtLen</tt>: 8-bit unsigned integer. The length of the Hop-by-hop or End-to-end options header in 4-octet units, not including the first 4 octets. That is: <tt>ExtLen = uint8(((L + 2) / 4) - 1)</tt>, where <tt>L</tt> is the size of the header in bytes, assuming that <tt>L + 2</tt> is a multiple of 4.</t>
            </li>
            <li>
              <t><tt>Options</tt>: This is a variable-length field. The length of this field <bcp14>MUST</bcp14> be such that the complete length of the Hop-by-Hop/End-to-End Options header is an integer multiple of 4 bytes. This can be achieved by using options of type 0 or 1 (see <xref target="_table-4"/>) . The <tt>Options</tt> field contains one or more Type-Length-Value (TLV) encoded options. For details, see <xref target="optfld"/>.</t>
            </li>
          </ul>
          <t>The Hop-by-Hop/End-to-End Options header is aligned to 4 bytes.</t>
          <section anchor="optfld">
            <name> Options Field</name>
            <t>The <tt>Options</tt> field of the Hop-by-Hop Options and the End-to-End Options headers carries a variable number of options that are type-length-value (TLV) encoded. Each TLV-encoded option has the following format:</t>
            <figure anchor="_figure-12">
              <name>Options field: TLV-encoded options</name>
              <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    OptType    |  OptDataLen   |            OptData            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
            <ul spacing="normal">
              <li>
                <t><tt>OptType</tt>: 8-bit identifier of the type of option. The following option types are assigned to the SCION HBH/E2E Options header:</t>
              </li>
            </ul>
            <table anchor="_table-5">
              <name>Option types of SCION Options header</name>
              <thead>
                <tr>
                  <th align="left">Decimal</th>
                  <th align="left">Option Type</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">0</td>
                  <td align="left">Pad1 (see <xref target="pad1"/>)</td>
                </tr>
                <tr>
                  <td align="left">1</td>
                  <td align="left">PadN (see <xref target="padn"/>)</td>
                </tr>
                <tr>
                  <td align="left">2</td>
                  <td align="left">SCION Packet Authenticator Option.<br/> Only used by the End-to-End Options header (experimental).</td>
                </tr>
                <tr>
                  <td align="left">253</td>
                  <td align="left">Used for experimentation and testing</td>
                </tr>
                <tr>
                  <td align="left">254</td>
                  <td align="left">Used for experimentation and testing</td>
                </tr>
                <tr>
                  <td align="left">255</td>
                  <td align="left">Reserved</td>
                </tr>
              </tbody>
            </table>
            <ul spacing="normal">
              <li>
                <t><tt>OptDataLen</tt>: Unsigned 8-bit integer denoting the length of the <tt>OptData</tt> field of this option in bytes.</t>
              </li>
              <li>
                <t><tt>OptData</tt>: Variable-length field. Option-type specific data.</t>
              </li>
            </ul>
            <t>The options within a header <bcp14>MUST</bcp14> be processed strictly in the order they appear in the header. This is to prevent a receiver from, for example, scanning through the header looking for a specific option and processing this option prior to all preceding ones.</t>
            <t>Individual options may have specific alignment requirements, to ensure that multibyte values within the <tt>OptData</tt> fields have natural boundaries. The alignment requirement of an option is specified using the notation "xn+y". This means that the <tt>OptType</tt> <bcp14>MUST</bcp14> appear at an integer multiple of x bytes from the start of the header, plus y bytes. For example:</t>
            <ul spacing="normal">
              <li>
                <t><tt>2n</tt>: means any 2-bytes offset from the start of the header.</t>
              </li>
              <li>
                <t><tt>4n+2</tt>: means any 4-bytes offset from the start of the header, plus 2 bytes.</t>
              </li>
            </ul>
            <t>There are two padding options to align subsequent options and to pad out the containing header to a multiple of 4 bytes in length - for details, see below. All SCION implementations <bcp14>MUST</bcp14> recognize these padding options.</t>
            <section anchor="pad1">
              <name> Pad1 Option</name>
              <t>Alignment requirement: none.</t>
              <figure anchor="_figure-13">
                <name>TLV-encoded options - Pad1 option</name>
                <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
|       0       |
+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure>
              <t><strong>Note:</strong> The format of the Pad1 option is a special case - it does not have length and value fields.</t>
              <t>The Pad1 option is used to insert 1 byte of padding into the <tt>Options</tt> field of an extension header. If more than one byte of padding is required, the PadN option <bcp14>SHOULD</bcp14> be used, rather than multiple Pad1 options. See the next section for more information on the PadN option.</t>
            </section>
            <section anchor="padn">
              <name> PadN Option</name>
              <t>Alignment requirement: none.</t>
              <figure anchor="_figure-14">
                <name>TLV-encoded options - PadN option</name>
                <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       1       |  OptDataLen   |            OptData            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure>
              <t>The PadN option is used to insert two or more bytes of padding into the <tt>Options</tt> field of an extension header. For N bytes of padding, the <tt>OptDataLen</tt> field contains the value N-2, and the <tt>OptData</tt> consists of N-2 zero-valued bytes.</t>
            </section>
          </section>
        </section>
      </section>
      <section anchor="upper-layer-protocol-issues">
        <name>Upper-Layer Protocol Issues</name>
        <section anchor="pseudo">
          <name> Pseudo Header for Upper-Layer Checksum</name>
          <t>Any transport or other upper-layer protocol that includes addresses from the SCION header in the checksum computation <bcp14>MUST</bcp14> use the following pseudo header:</t>
          <figure anchor="_figure-15">
            <name>Layout of the pseudo header for the upper-layer checksum</name>
            <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -----+
|            DstISD             |                               |      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               + SCION|
|                             DstAS                             |   ad-|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ dress|
|            SrcISD             |                               |  hea-|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +   der|
|                             SrcAS                             |      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |
|                    DstHostAddr (variable Len)                 |      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      |
|                    SrcHostAddr (variable Len)                 |      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -----+
|                    Upper-Layer Packet Length                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      zero                     |  Next Header  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <ul spacing="normal">
            <li>
              <t><tt>DstISD</tt>, <tt>SrcISD</tt>, <tt>DstAS</tt>, <tt>SrcAS</tt>, <tt>DstHostAddr</tt>, <tt>SrcHostAddr</tt>: These values are taken from the SCION address header.</t>
            </li>
            <li>
              <t><tt>Upper-Layer Packet Length</tt>: The length of the upper-layer header and data. Some upper-layer protocols define headers that carry the length information explicitly (e.g., UDP). This information is used as the upper-layer packet length in the pseudo header for these protocols. The remaining protocols, which do not carry the length information directly, use the value from the <tt>PayloadLen</tt> field in the SCION common header, minus the sum of the extension header lengths.</t>
            </li>
            <li>
              <t><tt>Next Header</tt>: The protocol identifier associated with the upper-layer protocol (e.g., 17 for UDP - see also <xref target="protnum"/>). This field can differ from the <tt>NextHdr</tt> field in the SCION common header, if extensions are present.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="life-of-a-scion-data-packet">
      <name>Life of a SCION Data Packet</name>
      <t>This section gives a high-level description of the life cycle of a SCION packet: How it is crafted at its source endpoint, passes through a number of routers, and finally reaches its destination endpoint. It is assumed that both source and destination are native SCION endpoints (i.e., they both run a native SCION network stack).</t>
      <t>To keep it brief, the example illustrates an intra-ISD case, i.e., all communication happens within a single ISD. As the sample ISD only consists of one core AS, the end-to-end path only includes an up-path and down-path segment. In the case of inter-ISD forwarding, the complete end-to-end path from source endpoint to destination endpoint would always require a core-path segment, too. But this makes no difference for the forwarding process, which works the same in an intra- and inter-ISD context. We therefore abstain from describing the inter-ISD forwarding.</t>
      <section anchor="description">
        <name> Description</name>
        <figure anchor="_figure-16">
          <name>Sample topology to illustrate the life cycle of a SCION packet. AS 1 is the core AS of ISD 1, and AS 2 and AS 3 are non-core ASes of ISD 1.</name>
          <artwork><![CDATA[
                    +--------------------+
                    |                    |
                    |        AS 1        |
                    |                    |
                    |                    |
                    |     198.51.100.4 .-+. i1b (1-1,198.51.100.17)
                    |          +------( R3 )---+
                   .+-.        |       `-+'    |
          +-------( R2 )-------+         |     |
          |    i1a `+-' 198.51.100.1     |     |
          |         |                    |     |
          |         +--------------------+     | (1-3,198.51.100.18)
          |                                    | i3a
          |                                   .+-.
    i2a .-+.                          +------( R4 )--------+
+------( R1 )--------+                |       `-+'         |
|       `-+'         |                |         |192.0.2.34|
|         |203.0.113.17               |         |          |
|         |          |                |         |    AS 3  |
|         |    AS 2  |                |         |          |
|         |          |                |       +---+        |
|       +---+        |                |       | B |        |
|       | A |        |                |       +---+        |
|       +---+        |                |   1-3,192.0.2.7    |
|  1-2,203.0.113.6   |                |                    |
|                    |                +--------------------+
+--------------------+
]]></artwork>
        </figure>
        <t>Based on the network topology in <xref target="_figure-16"/> above, this example shows the path of a SCION packet sent from source endpoint A to destination endpoint B, and how it will be processed by each router on the path. This is done by means of simplified snapshots of the packet header after each such processing step. These snapshots, which are depicted in tables, show the most relevant information of the header, i.e., the SCION path and IP encapsulation for local communication.</t>
      </section>
      <section anchor="creating-an-end-to-end-scion-forwarding-path">
        <name> Creating an End-to-End SCION Forwarding Path</name>
        <t>In this example, source endpoint A in AS 2 wants to send a data packet to destination endpoint B in AS 3. Both AS 2 and AS 3 are part of ISD 1. To create an end-to-end SCION forwarding path, source endpoint A first requests its own AS-2 control service for up-segments to the core AS in its ISD. The AS-2 control service will return up-segments from AS 2 to the ISD core. Endpoint A will also query its AS-2 control service for a down-segment from its ISD core AS to AS 3, in which destination endpoint B is located. The AS-2 control service (possibly after connecting to the core control service) will return down-segments from the ISD core down to AS 3.</t>
        <t><strong>Note:</strong> For more details on the lookup of path segments, see the section "Path Lookup" in the Control Plane specification (<xref target="I-D.scion-cp"/>).</t>
        <t>Based on its own selection criteria, source endpoint A selects the up-segment (0,i2a)(i1a,0) and the down-segment (0,i1b)(i3a,0) from the path segments returned by its own AS-2 control service. The path segments consist of hop fields that carry the ingress and egress interfaces of each AS (e.g., i2a, i1a, ...), as described in detail in <xref target="format"/> - (x,y) represents one hop field.</t>
        <t>To obtain an end-to-end forwarding path from the source AS to the destination AS, source endpoint A combines the two path segments into the resulting SCION forwarding path, which contains the two info fields <em>IF1</em> and <em>IF2</em> and the hop fields (0,i2a), (i1a,0), (0,i1b), and (i3a,0).</t>
        <t><strong>Note:</strong> As this brief sample path does not contain a core-segment, the end-to-end path only consists of two path segments.</t>
        <t>Source endpoint A now adds this end-to-end forwarding path to the header of the packet that A wants to send to destination endpoint B, and starts transferring the packet. The following section describes what happens with the SCION packet header on the packet's way from A to B.</t>
      </section>
      <section anchor="step-by-step-explanation">
        <name> Step-by-Step Explanation</name>
        <t>This section explains the packet header modifications at each router, based on the network topology in <xref target="_figure-16"/> above. Each step includes a table that represents a simplified snapshot of the packet header at the end of this specific step. Regarding the notation used in the figure/tables, each SRC and DST entry should be read as router (or endpoint) followed by its address. The current info field (with metadata on the current path segment) in the SCION header is depicted italic/cursive in the tables. The current hop field, representing the current AS, is shown bold. The snapshot tables also include references to IP/UDP addresses.</t>
        <t><strong>Note:</strong> In this context, a border router is called <strong>ingress</strong> border router when it refers to an entrance border router to an AS, as seen from the direction of travel of the SCION packet. So in the context here, the ingress border router is the <em>(packet) incoming</em> border router. A border router is called <strong>egress</strong> border router when it refers to an exit border router of an AS, as seen from the direction of travel of the SCION packet. So in this context, the egress border router is the <em>(packet) leaving</em> border router.</t>
        <ul spacing="normal">
          <li>
            <t><em>Step 1</em> <br/> <strong>A-&gt;R1</strong>: The SCION-enabled source endpoint A in AS 2 creates a new SCION packet destined for destination endpoint B in AS 3, with payload P. Endpoint A sends the packet (for the chosen forwarding path) to the next SCION router as provided by its control service, which is in this case R1. A encapsulates the SCION packet into an underlay UDP/IPv4 header for the local delivery to R1, utilizing AS 2's internal routing protocol. The current info field is <em>IF1</em>. Upon receiving the packet, R1 will forward the packet on the egress interface that endpoint A has included into the first hop field of the SCION header.</t>
          </li>
        </ul>
        <table>
          <name>Snapshot header - step 1</name>
          <thead>
            <tr>
              <th align="left">A -&gt; R1</th>
              <th align="left"> </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SCION</td>
              <td align="left">SRC = 1-2,203.0.113.6 (source endpoint A) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 1-3,192.0.2.7 (dest. endpoint B) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">PATH = <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- <em>IF1</em> <strong>(0,i2a)</strong> (i1a,0) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- IF2 (0,i1b) (i3a,0) <br/></td>
            </tr>
            <tr>
              <td align="left">UDP</td>
              <td align="left">P<sub>S</sub> = 30041, P<sub>D</sub> = 30041 <br/></td>
            </tr>
            <tr>
              <td align="left">IP</td>
              <td align="left">SRC = 203.0.113.6 (endpoint A) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 203.0.113.17 (router R1) <br/></td>
            </tr>
            <tr>
              <td align="left">Link layer</td>
              <td align="left">SRC=A, DST=R1</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t><em>Step 2</em> <br/> <strong>R1-&gt;R2</strong>: Router R1 inspects the SCION header and considers the relevant info field of the specified SCION path, which is the info field indicated by the current info field pointer. In this case, it is the first info field <em>IF1</em>. The current hop field is the first hop field (0,i2a), which instructs router R1 to forward the packet on its interface i2a. After reading the current hop field, R1 moves the pointer forward by one position to the second hop field (i1a,0). Note that, at this point, no underlay IP header is necessary, since the routers R1 and R2 are directly connected over layer 2.  </t>
            <t><strong>Note:</strong> Although technically there is no need for a UDP/IP underlay if two routers are directly connected, the SCION implementation always uses a UDP/IP underlay in practice. This is to enable a common interface for all routers.</t>
          </li>
        </ul>
        <table>
          <name>Snapshot header - step 2</name>
          <thead>
            <tr>
              <th align="left">R1 -&gt; R2</th>
              <th align="left"> </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SCION</td>
              <td align="left">SRC = 1-2,203.0.113.6 (source endpoint A) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 1-3,192.0.2.7 (dest. endpoint B) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">PATH = <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- <em>IF1</em> (0,i2a) <strong>(i1a,0)</strong>  <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- IF2 (0,i1b) (i3a,0) <br/></td>
            </tr>
            <tr>
              <td align="left">Link layer</td>
              <td align="left">SRC=R1, DST=R2</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t><em>Step 3</em> <br/> <strong>R2-&gt;R3</strong>: When receiving the packet, router R2 of core AS 1 checks whether the packet has been received through the ingress interface i1a as specified by the current hop field. Otherwise, the packet is dropped by router R2. The router notices that it has consumed the last hop field of the current path segment, and hence moves the pointer from the current info field to the next info field <em>IF2</em>. The corresponding current hop field is (0,i1b), which contains egress interface i1b. R2 maps the i1b interface ID to egress router R3, it therefore encapsulates the SCION packet inside an intra-AS underlay IP packet with the address of R3 as the underlay destination.</t>
          </li>
        </ul>
        <table>
          <name>Snapshot header - step 3</name>
          <thead>
            <tr>
              <th align="left">R2 -&gt; R3</th>
              <th align="left"> </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SCION</td>
              <td align="left">SRC = 1-2,203.0.113.6 (source endpoint A) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 1-3,192.0.2.7 (dest. endpoint B) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">PATH =  <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- IF1 (0,i2a) (i1a,0) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- <em>IF2</em> <strong>(0,i1b)</strong> (i3a,0) <br/></td>
            </tr>
            <tr>
              <td align="left">UDP</td>
              <td align="left">P<sub>S</sub> = 30041, P<sub>D</sub> = 30041 <br/></td>
            </tr>
            <tr>
              <td align="left">IP</td>
              <td align="left">SRC = 198.51.100.1 (router R2) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 198.51.100.4 (router R3) <br/></td>
            </tr>
            <tr>
              <td align="left">Link layer</td>
              <td align="left">SRC=R2, DST=R3</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t><em>Step 4</em> <br/> <strong>R3-&gt;R4</strong>: Router R3 inspects the current hop field in the SCION header, uses interface i1b to forward the packet to its neighbor SCION router R4 of AS 3, and moves the current hop-field pointer forward. It adds an IP header to reach R4.</t>
          </li>
        </ul>
        <table>
          <name>Snapshot header - step 4</name>
          <thead>
            <tr>
              <th align="left">R3 -&gt; R4</th>
              <th align="left"> </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SCION</td>
              <td align="left">SRC = 1-2,203.0.113.6 (source endpoint A) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 1-3,192.0.2.7 (dest. endpoint B) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">PATH =  <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- IF1 (0,i2a) (i1a,0) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- <em>IF2</em> (0,i1b) <strong>(i3a,0)</strong> <br/></td>
            </tr>
            <tr>
              <td align="left">UDP</td>
              <td align="left">P<sub>S</sub> = 30041, P<sub>D</sub> = 30041 <br/></td>
            </tr>
            <tr>
              <td align="left">IP</td>
              <td align="left">SRC = 1-1,198.51.100.17 (router R3) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 1-3,198.51.100.18 (router R4) <br/></td>
            </tr>
            <tr>
              <td align="left">Link layer</td>
              <td align="left">SRC=R3, DST=R4</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t><em>Step 5</em> <br/> <strong>R4-&gt;B</strong>: SCION router R4 first checks whether the packet has been received through the ingress interface i3a as specified by the current hop field. R4 will then also realize, based on the fields <tt>CurrHF</tt> and <tt>SegLen</tt> in the SCION header, that the packet has reached the last hop in its SCION path. Therefore, instead of stepping up the pointers to the next info or hop field, router R4 inspects the SCION destination address and extracts the endpoint address 192.0.2.7. It creates a fresh underlay UDP/IP header with this address as destination and with itself as source. The intra-domain forwarding can now deliver the packet to destination endpoint B.</t>
          </li>
        </ul>
        <table>
          <name>Snapshot header - step 5</name>
          <thead>
            <tr>
              <th align="left">R4 -&gt; B</th>
              <th align="left"> </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SCION</td>
              <td align="left">SRC = 1-2,203.0.113.6 (source endpoint A) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 1-3,192.0.2.7 (dest. endpoint B) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">PATH =  <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- IF1 (0,i2a) (i1a,0) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">- <em>IF2</em> (0,i1b) <strong>(i3a,0)</strong> <br/></td>
            </tr>
            <tr>
              <td align="left">UDP</td>
              <td align="left">P<sub>S</sub> = 30041, P<sub>D</sub> = 30041 <br/></td>
            </tr>
            <tr>
              <td align="left">IP</td>
              <td align="left">SRC = 192.0.2.34 (router R4) <br/></td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">DST = 192.0.2.7 (endpoint B) <br/></td>
            </tr>
            <tr>
              <td align="left">Link layer</td>
              <td align="left">SRC=R4, DST=B</td>
            </tr>
          </tbody>
        </table>
        <t>When destination endpoint B wants to respond to source endpoint A, it can just swap the source and destination addresses in the SCION header, reverse the SCION path, and set the pointers to the info and hop fields at the beginning of the reversed path (see also <xref target="reverse"/>).</t>
      </section>
    </section>
    <section anchor="path-auth">
      <name>Path Authorization</name>
      <t>Path authorization guarantees that data packets always traverse the network along paths segments authorized by all on-path ASes in the control plane. In contrast to the IP-based Internet, where forwarding decisions are made by routers based on locally stored information, SCION routers base their forwarding decisions purely on the forwarding information carried in the packet header and set by endpoints.</t>
      <t>SCION uses cryptographic mechanisms to efficiently provide path authorization. The mechanisms are based on <em>symmetric</em> cryptography in the form of Message Authentication Codes (MACs) in the data plane to secure forwarding information encoded in hop fields. This chapter first explains how hop field MACs are computed, then how they are validated as they traverse the network.</t>
      <section anchor="auth-chained-macs">
        <name>Authorizing Segments through Chained MACs</name>
        <t>When authorizing SCION PCBs and path segments in the control plane and forwarding information in the data plane, an AS authenticates not only its own hop information but also an aggregation of all upstream hops. This section describes how this works.</t>
        <section anchor="hf-mac-calc">
          <name> Hop Field MAC Computation</name>
          <t>The MAC in the hop fields of a SCION path has two purposes:</t>
          <ul spacing="normal">
            <li>
              <t>Preventing malicious endpoints from illegally adding, removing, or reordering hops within a path segment created during beaconing in the control plane.
In particular, preventing path splicing, i.e. the combination of parts of different valid path segments into a new, unauthorized, path segment.</t>
            </li>
            <li>
              <t>Authentication of the information contained in the hop field itself, in particular the <tt>ExpTime</tt>, <tt>ConsIngress</tt>, and <tt>ConsEgress</tt>.</t>
            </li>
          </ul>
          <t>To fulfill the above purposes, the MAC for the hop field of AS<sub>i</sub> includes both the components of the current hop field HF<sub>i</sub> and an aggregation of the path segment identifier and all preceding hop fields/entries in the path segment. The aggregation is a 16-bit XOR-sum of the path segment identifier and the hop field MACs.</t>
          <t>When originating a path-segment construction beacon PCB in the <strong>control plane</strong>, a core AS chooses a random 16-bit value as segment identifier <tt>SegID</tt> for the path segment and includes it in the PCB's <tt>Segment Info</tt> component. In the control plane, each AS<sub>i</sub> on the path segment computes the MAC for the current hop HF<sub>i</sub>, based on the value of <tt>SegID</tt> and the MACs of the preceding hop entries. Here, the full XOR-sum is computed explicitly.</t>
          <t>For high-speed packet processing in the <strong>data plane</strong>, computing even cheap operations such as the XOR-sum over a variable number of inputs is complicated, in particular for hardware router implementations. To avoid this overhead for the MAC-chaining in path authorization in the data plane, the XOR-sum is tracked incrementally for each (of the up to three) path segments in a path, as a separate, updatable accumulator field <tt>Acc</tt>. The routers update the accumulator field <tt>Acc</tt> by adding/subtracting only a single 16-bit value each.</t>
          <t>When combining path segments to create a path to the destination endpoint, the source endpoint <bcp14>MUST</bcp14> also initialize the value of accumulator field <tt>Acc</tt> for each path segment. The <tt>Acc</tt> field <bcp14>MUST</bcp14> contain the correct XOR-sum of the path segment identifier and preceding hop field MACs expected by the first router that is traversed.</t>
          <t>The aggregated 16-bit path segment identifier and preceding MACs prevents the splicing parts of different path segments, unless there is a per-chance collision of the <tt>Acc</tt> value among compatible path segments in on AS. See <xref target="path-splicing"/> for more details.</t>
          <t>In the following, the computation of the hop field MAC as well as the accumulator field <tt>Acc</tt> is explained.</t>
          <section anchor="def-mac">
            <name> Hop Field MAC - Definition</name>
            <ul spacing="normal">
              <li>
                <t>Consider a path segment with "n" hops, containing ASes AS<sub>0</sub>, ... , AS<sub>n-1</sub>, with forwarding keys K<sub>0</sub>, ... , K<sub>n-1</sub> in this order.</t>
              </li>
              <li>
                <t>AS<sub>0</sub> is the core AS that created the PCB representing the path segment and that added a random initial 16-bit segment identifier <tt>SegID</tt> to the <tt>Segment Info</tt> field of the PCB.</t>
              </li>
            </ul>
            <t>The MAC<sub>i</sub> of the hop field of AS<sub>i</sub> is now calculated as:</t>
            <t>MAC<sub>i</sub> = <br/> Ck<sub>i</sub> (<tt>SegID</tt> XOR MAC<sub>0</sub> [:2] ... XOR MAC<sub>i-1</sub> [:2], Timestamp, ExpTime<sub>i</sub>, ConsIngress<sub>i</sub>, ConsEgress<sub>i</sub>)</t>
            <t>where</t>
            <ul spacing="normal">
              <li>
                <t>k<sub>i</sub> = The forwarding key k of the current AS<sub>i</sub></t>
              </li>
              <li>
                <t>Ck<sub>i</sub> (...) = Cryptographic checksum C over (...) computed with forwarding key k<sub>i</sub></t>
              </li>
              <li>
                <t><tt>SegID</tt> = The random initial 16-bit segment identifier set by the core AS when creating the corresponding PCB</t>
              </li>
              <li>
                <t>XOR = The bitwise "exclusive or" operation</t>
              </li>
              <li>
                <t>MAC<sub>i</sub> [:2] = The hop field MAC for AS<sub>i</sub>, truncated to 2 bytes</t>
              </li>
              <li>
                <t>Timestamp = The timestamp set by the core AS when creating the corresponding PCB</t>
              </li>
              <li>
                <t>ExpTime<sub>i</sub>, ConsIngress<sub>i</sub>, ConsEgress<sub>i</sub> = The content of the hop field HF<sub>i</sub></t>
              </li>
            </ul>
            <t>Thus, the current MAC is based on the XOR-sum of the truncated MACs of all preceding hop fields in the path segment as well as the path segment's <tt>SegID</tt>. In other words, the current MAC is <em>chained</em> to all preceding MACs.
In order to effectively prevent path-splicing, the cryptographic checksum function used <bcp14>MUST</bcp14> ensure that the truncation of the MACs is non-degenerate and roughly uniformly distributed (see <xref target="mac-requirements"/>).</t>
          </section>
          <section anchor="def-acc">
            <name> Accumulator Acc - Definition</name>
            <t>The accumulator Acc<sub>i</sub> is an updatable counter introduced in the data plane to avoid the overhead caused by MAC-chaining for path authorization. This is achieved by incrementally tracking the XOR-sum of the previous MACs as a separate, updatable accumulator field <tt>Acc</tt>, which is part of the path segment's info field <tt>InfoField</tt> in the packet header (see also <xref target="inffield"/>). Routers update this field by adding/subtracting only a single 16-bit value each.</t>
            <figure anchor="_figure-17">
              <name>The Info Field of a specific path segment in the packet header, with the updatable accumulator field `Acc`.</name>
              <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|r r r r r r P C|      RSV      |             Acc               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
            <t>This is how it works:</t>
            <t><xref target="def-mac"/> defines MAC<sub>i</sub> as follows:</t>
            <t>MAC<sub>i</sub> = <br/> Ck<sub>i</sub> (<tt>SegID</tt> XOR MAC<sub>0</sub> [:2] ... XOR MAC<sub>i-1</sub> [:2], Timestamp, ExpTime<sub>i</sub>, ConsIngress<sub>i</sub>, ConsEgress<sub>i</sub>)</t>
            <t>In the data plane, the expression <tt>SegID XOR MAC_0 [:2] ... XOR MAC_i-1 [:2]</tt> is replaced by Acc<sub>i</sub>. This results in the following alternative procedure for the computation of MAC<sub>i</sub> used in the data plane:</t>
            <t>MAC<sub>i</sub> = Ck<sub>i</sub> (Acc<sub>i</sub>, Timestamp, ExpTime<sub>i</sub>, ConsIngress<sub>i</sub>, ConsEgress<sub>i</sub>)</t>
            <t>During forwarding in the data plane, each AS<sub>i</sub> updates the <tt>Acc</tt> field in the packet header, such, that it contains the correct input value of the Accumulator Acc for the next AS in the path segment to be able to calculate the MAC over its hop field. Note that the correct input value of the <tt>Acc</tt> field depends on the direction of travel.</t>
            <t>The value of the accumulator Acc<sub>i+1</sub> is calculated based on the following definition (in the direction of beaconing):</t>
            <t>Acc<sub>i+1</sub> = Acc<sub>i</sub> XOR MAC<sub>i</sub> [:2]</t>
            <ul spacing="normal">
              <li>
                <t>XOR = The bitwise "exclusive or" operation</t>
              </li>
              <li>
                <t>MAC<sub>i</sub> [:2] = The hop field MAC for the current AS<sub>i</sub>, truncated to 2 bytes</t>
              </li>
            </ul>
          </section>
          <section anchor="default-hop-field-mac-algorithm">
            <name> Default Hop Field MAC Algorithm</name>
            <t>The algorithm used to compute the hop field MAC is an AS-specific choice. The operator of an AS can freely choose any MAC algorithm without outside coordination. However, the control service and routers of the AS do need to agree on the algorithm used.
All control service and router implementations <bcp14>MUST</bcp14> support the Default Hop Field MAC algorithm described below.</t>
            <t>The default MAC algorithm is AES-CMAC (<xref target="RFC4493"/>) truncated to 48-bits, computed over the info field and the first 6 bytes of the hop field, with flags and reserved fields zeroed out. The input is padded to 16 bytes. The <em>first</em> 6 bytes of the AES-CMAC output are used as resulting hop field MAC.
<xref target="_figure-18"/> below shows the layout of the input data to calculate the hop field MAC.</t>
            <figure anchor="_figure-18">
              <name>Input data to calculate the hop field MAC for the default hop-field MAC algorithm</name>
              <artwork><![CDATA[
0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -----+
|               0               |           Acc                 |  Info|
|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| Field|
|                           Timestamp                           |      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| -----+
|       0       |    ExpTime    |          ConsIngress          |   Hop|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Field|
|          ConsEgress           |               0               |      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -----+
]]></artwork>
            </figure>
          </section>
          <section anchor="mac-requirements">
            <name>Alternative Hop Field MAC Algorithms</name>
            <t>For alternative algorithms, the following requirements <bcp14>MUST</bcp14> all be met:
- The hop field MAC field is computed as a function of the secret forwarding key, the <tt>Acc</tt>, <tt>Timestamp</tt> fields of the info field and the <tt>ExpTime</tt>, <tt>ConsIngress</tt> and <tt>ConsEgress</tt> fields of the hop field.
  Function is used in the mathematical sense, that is, for any values of these inputs there is exactly one result.
- The algorithm returns an unforgable 48-bit value.
  Unforgable specifically means "existentially unforgable under a chosen message attack" (<xref target="CRYPTOBOOK"/>). Informally, this means an attacker without access to the secret key has no computationally efficient means to create a valid MAC for some attacker chosen input values, even if it has access to an "oracle" providing a valid MAC for any other input values.
- The truncation of the result value to the first 2 bytes / 16 bits of the result value:
    - is not degenerate, i.e. any small change in any input value <bcp14>SHOULD</bcp14> have an "avalanche effect" on these bits, and
    - is roughly uniformly distributed when considering all possible input values.</t>
            <t>This additional requirment is naturally satisfied for MAC algorithms based on typical block ciphers or hash algorithms.
  It ensures that the MAC chaining via the <tt>Acc</tt> field is not degenerate.</t>
          </section>
        </section>
        <section anchor="peerlink">
          <name> Peering Links</name>
          <t>The above described computation of a hop field MAC does not apply to a peering hop field, i.e., to a hop field that allows transiting from a child interface/link to a peering interface/link.</t>
          <t>The reason for this is that the MACs of the hop fields "after" the peering hop field (in beaconing direction) are not chained to the MAC of the peering hop field, but to the MAC of the main hop field in the corresponding AS entry. To make this work, the MAC of the peering hop field is also chained to the MAC of the main hop field - this allows to validate the chained MAC for both the peering hop field and the following hop fields, by using the same <tt>Acc</tt> field value.</t>
          <t>This results in the following definition for the calculation of the MAC for a peering hop field.</t>
          <t>The Control Plane Internet-Draft defines a peering hop field as follows:</t>
          <t>hop field<sup>Peer</sup><sub>i</sub> = (ExpTime<sup>Peer</sup><sub>i</sub>, ConsIngress<sup>Peer</sup><sub>i</sub>, ConsEgress<sup>Peer</sup><sub>i</sub>, MAC<sup>Peer</sup><sub>i</sub>)</t>
          <t>This definition, the general definition of a hop field MAC and the explanation above leads to the following definition of the MAC for a peering hop field<sup>Peer</sup><sub>i</sub>:</t>
          <t>MAC<sup>Peer</sup><sub>i</sub> = <br/> Ck<sup>Peer</sup><sub>i</sub> (<tt>SegID</tt> XOR MAC<sub>0</sub> [:2] ... XOR MAC<sub>i</sub> [:2], Timestamp, ExpTime<sup>Peer</sup><sub>i</sub>, ConsIngress<sup>Peer</sup><sub>i</sub>, ConsEgress<sup>Peer</sup><sub>i</sub>)</t>
          <t><strong>Note:</strong> The XOR-sum of the MACs in the formula of the peering hop field <strong>also includes</strong> the MAC of the main hop field (whereas for the calculation of the MAC for the main hop field itself only the XOR-sum of the <em>previous</em> MACs is used).</t>
          <t><strong>Note:</strong> The Control-Plane Internet-Draft is available here: <xref target="I-D.scion-cp"/>.</t>
        </section>
      </section>
      <section anchor="packet-verif">
        <name> Path Initialization and Packet Processing</name>
        <t>As is described in <xref target="format"/>, the path header of the data-plane packets only contains a sequence of info fields and hop fields without any additional data from the corresponding PCBs. Also, the SCION path does not contain any AS numbers (except for the source and destination ASes), and there is no field explicitly defining the type of each segment (up, core, or down). This chapter describes the required steps for the source endpoint and each SCION router to ensure that a data packet only traverses authorized segments. The chapter first specifies the initialization of a path at the source endpoint, followed by the steps that the SCION routers needs to perform when a data-plane packet traverses an AS on its way to the destination.</t>
        <section anchor="initialization-at-source-endpoint">
          <name> Initialization at Source Endpoint</name>
          <t>The source endpoint needs to initialize a path correctly for the SCION routers to be able to verify the hop fields in the data plane. To this end, the source endpoint <bcp14>MUST</bcp14> perform the following steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>Combine the preferred end-to-end path from the path segments obtained during path lookup.</t>
            </li>
            <li>
              <t>Extract the info fields and hop fields from the different path segments that together build the end-to-end path to the destination endpoint. Then insert the relevant information from the path segments' info and hop fields into the corresponding <tt>InfoFields</tt> and <tt>Hopfields</tt>, respectively, in the data packet header.</t>
            </li>
            <li>
              <t>Each 8-byte info field <tt>InfoField</tt> in the packet header contains the updatable <tt>Acc</tt> field as well as a Peering flag <tt>P</tt> and a Construction Direction flag <tt>C</tt> (see also <xref target="inffield"/>). As a next step in the path initialization process, the source <bcp14>MUST</bcp14> correctly set the flags and the <tt>Acc</tt> field of all <tt>InfoFields</tt> included in the path, according to the following rules:  </t>
              <t><strong>Note:</strong> As already stated above, the type of segment is not visible directly in the forwarding path but can be inferred from flags and other information. See also <xref target="process-router"/>.  </t>
              <ul spacing="normal">
                <li>
                  <t>The Construction Direction flag <tt>C</tt> <bcp14>MUST</bcp14> be set to "1" whenever the corresponding segment is traversed in construction direction, i.e., for down-path segments and potentially for core-segments. It <bcp14>MUST</bcp14> be set to "0" for up-path segments and "reversed" core-segments.</t>
                </li>
                <li>
                  <t>The Peering flag <tt>P</tt> <bcp14>MUST</bcp14> be set to "1" for up- and down-segments if, and only if, the path contains a peering hop field.</t>
                </li>
                <li>
                  <t>The field <tt>Acc</tt> field is an updatable field. It is used to compute the MAC over the current hop field. The value of the field <tt>Acc</tt> field corresponds to the value of the Accumulator Acc<sub>i</sub> for AS<sub>i</sub>.  It is initialized based on the location of the sender in relation to path construction.</t>
                </li>
              </ul>
              <t>
The following <tt>InfoField</tt> settings are possible, based on the following possible use cases:  </t>
              <ul spacing="normal">
                <li>
                  <t><strong>Use case 1</strong> <br/> The path segment is traversed in construction direction and includes no peering hop field. It starts at the <em>i</em>-th AS of the full segment discovered in beaconing. In this case:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The Peering flag <tt>P</tt> = "0"</t>
                    </li>
                    <li>
                      <t>The Construction Direction flag <tt>C</tt> = "1"</t>
                    </li>
                    <li>
                      <t>The value of the <tt>Acc</tt> = Acc<sub>i</sub>. For more details, see <xref target="def-acc"/>.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t><strong>Use case 2</strong> <br/> The path segment is traversed in construction direction and includes a peering hop field (which is the first hop field of the segment). It starts at the <em>i</em>-th AS of the full segment discovered in beaconing. In this case:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The Peering flag <tt>P</tt> = "1"</t>
                    </li>
                    <li>
                      <t>The Construction Direction flag <tt>C</tt> = "1"</t>
                    </li>
                    <li>
                      <t>The value of the <tt>Acc</tt> = Acc<sub>i+1</sub>. For more details, see <xref target="def-acc"/>.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t><strong>Use case 3</strong> <br/> The path segment is traversed against construction direction. The full segment has "n" hops. In this case:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>The Peering flag <tt>P</tt> = "0" or "1" (depending on whether the last hop field in the up-segment is a peering hop field)</t>
                    </li>
                    <li>
                      <t>The Construction Direction flag <tt>C</tt> = "0"</t>
                    </li>
                    <li>
                      <t>The value of the <tt>Acc</tt> = Acc<sub>n-1</sub>. This is because seen from the direction of beaconing, the source endpoint is the last AS in the path segment. For more details, see <xref target="def-mac"/> and <xref target="def-acc"/>.</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>Besides setting the flags and the <tt>Acc</tt> field, the source endpoint <bcp14>MUST</bcp14> also set the pointers in the <tt>CurrInf</tt> and <tt>CurrHF</tt> fields of the Path Meta Header <tt>PathMetaHdr</tt> (see <xref target="PathMetaHdr"/>). As the source endpoint builds the starting point of the forwarding, both pointers <bcp14>MUST</bcp14> be set to "0".</t>
            </li>
          </ol>
        </section>
        <section anchor="process-router">
          <name> Processing at Routers</name>
          <t>During forwarding, each AS<sub>i</sub> verifies the path contained in the packet header with the help of the current value of the MAC in the current hop field, and the current value of the Accumulator in the <tt>Acc</tt> field of the current info field. Additionally, each AS has to correctly set the value of the Accumulator in the <tt>Acc</tt> field for the next AS to be able to verify its hop field. The exact operations differ based on the location of the AS on the path.</t>
          <t>The processing of SCION packets for ASes where a peering link is crossed between path segments is special cased. A path containing a peering link contains exactly two path segments, one against construction direction (up) and one in construction direction (down). On the path segment against construction direction (up), the peering hop field is the last hop of the segment. In construction direction (down), the peering hop field is the first hop of the segment.</t>
          <t>The following sections describe the tasks to be performed by the ingress and egress border router of each on-path AS. Each operation is described from the perspective of AS<sub>i</sub>, where i belongs to [0 ... n-1], and n == the number of ASes in the path segment (counted from the first AS in the beaconing direction).</t>
          <t><strong>Note:</strong> In this context, a border router is called <strong>ingress</strong> border router when it refers to an entrance border router to an AS, as seen from the direction of travel of the SCION packet. So in the context here, the ingress border router is the <em>(packet) incoming</em> border router. A border router is called <strong>egress</strong> border router when it refers to an exit border router of an AS, as seen from the direction of travel of the SCION packet. So in this context, the egress border router is the <em>(packet) leaving</em> border router.</t>
          <t>The following figure provides a simplified representation of the processing at routers both in construction direction and against construction direction.</t>
          <figure anchor="_figure-19">
            <name>A simplified representation of the processing at routers in both directions.</name>
            <artwork><![CDATA[
                              .--.
                             ( RR )  = Router
Processing in                 `--'
construction
direction

      1. Verify MAC of AS1          1. Verify MAC of AS2
      2. Update Acc for AS2         2. Update Acc for AS3
                 |                            |
>>>--------------o----------------------------o---------------------->>>

+-------------+  |           +-------------+  |          +-------------+
|             |              |             |             |             |
|           .--. |          .--.         .--. |         .--.           |
|   AS1    ( RR )o---------( RR )  AS2  ( RR )o--------( RR )  AS3     |
|           `--' |          `--'         `--' |         `--'           |
|             |              |             |             |             |
+-------------+  |           +-------------+  |          +-------------+

                 |                            |
<<<--------------o----------------------------o----------------------<<<
                 |                            |
      1. Update Acc for AS1         1. Update Acc for AS2
      2. Verify MAC of AS1          2. Verify MAC of AS2

                                                      Processing against
                                                            construction
                                                               direction
]]></artwork>
          </figure>
          <section anchor="steps-ingress-border-router">
            <name>Steps Ingress Border Router</name>
            <t>This section describes the steps that a SCION ingress border router <bcp14>MUST</bcp14> perform when it receives a SCION packet.</t>
            <ol spacing="normal" type="1"><li>
                <t>Check that the interface through which the packet was received is equal to the ingress interface in the current hop field. If not, the router <bcp14>MUST</bcp14> drop the packet.</t>
              </li>
              <li>
                <t>Check if the current hop field is expired or originated in the future. That is, the current info field <bcp14>MUST NOT</bcp14> have a timestamp in the future, as defined in <xref target="inffield"/>. If either is true, the router <bcp14>MUST</bcp14> drop the packet.</t>
              </li>
              <li>
                <t>The next steps depend on the direction of travel and whether this segment includes a peering hop field. Both features are indicated by the settings of the Construction Direction flag <tt>C</tt> and the Peering flag <tt>P</tt> in the current info field. Therefore, check the settings of both flags. The following combinations are possible:  </t>
                <ul spacing="normal">
                  <li>
                    <t>The packet traverses the path segment in <strong>construction direction</strong> (<tt>C</tt> = "1" and <tt>P</tt> = "0" or "1"). In this case, proceed with step 4.</t>
                  </li>
                  <li>
                    <t>The packet traverses the path segment <strong>against construction direction</strong> (<tt>C</tt> = "0"). The following use cases are possible:      </t>
                    <ul spacing="normal">
                      <li>
                        <t><strong>Use case 1</strong> <br/> The path segment includes <strong>no peering hop field</strong> (<tt>P</tt> = "0"). In this case, the ingress border router <bcp14>MUST</bcp14> take the following step(s):          </t>
                        <ul spacing="normal">
                          <li>
                            <t>Compute the value of the Accumulator Acc as follows:              </t>
                            <t>
Acc = Acc<sub>i+1</sub> XOR MAC<sub>i</sub> <br/>
where <br/>
Acc<sub>i+1</sub> = the current value of the field <tt>Acc</tt> in the current info field <br/>
MAC<sub>i</sub> = the value of MAC<sub>i</sub> in the current hop field representing AS<sub>i</sub>              </t>
                            <t><strong>Note:</strong> In the case described here the packet travels against direction of beaconing. That is, the packet comes from AS<sub>i+1</sub> and is going to enter AS<sub>i</sub>. This means that the <tt>Acc</tt> field of this incoming packet represents the value of Accumulator Acc<sub>i+1</sub>. However, to compute the MAC<sub>i</sub> for the current AS<sub>i</sub>, we need the value of Accumulator Acc<sub>i</sub> (see <xref target="def-acc"/>). Because the border router knows that the formula for Acc<sub>i+1</sub> = Acc<sub>i</sub> XOR MAC<sub>i</sub> [:2] (see also <xref target="def-acc"/>), and because the values of Acc<sub>i+1</sub> and MAC<sub>i</sub> are known, the router will be able to recover the value Acc<sub>i</sub> based on the just-mentioned formula for Acc.</t>
                          </li>
                          <li>
                            <t>Replace the current value of the field <tt>Acc</tt> in the current info field with the newly calculated value of Acc.</t>
                          </li>
                          <li>
                            <t>Compute the MAC<sup>Verify</sup><sub>i</sub> over the hop field of the current AS<sub>i</sub>. For this, use the formula in <xref target="def-mac"/>, but replace <tt>SegID XOR MAC_0[:2] ... XOR MAC_i-1 [:2]</tt> in the formula with the value of the accumulator Acc as just set in the <tt>Acc</tt> field in the current info field.</t>
                          </li>
                          <li>
                            <t>Check that the MAC<sub>i</sub> in the current hop field matches the just-calculated MAC<sup>Verify</sup><sub>i</sub>. If yes, it is fine. Otherwise, drop the packet.</t>
                          </li>
                          <li>
                            <t>Check whether the current hop field is the last hop field in the path segment. For this, look at the value of the current <tt>SegLen</tt> and other metadata in the path meta header. If yes, increment both <tt>CurrInf</tt> and <tt>CurrHF</tt> in the path meta header. Proceed with step 4.</t>
                          </li>
                        </ul>
                      </li>
                      <li>
                        <t><strong>Use case 2</strong> <br/> The path segment includes a <strong>peering hop field</strong> (<tt>P</tt> = "1"), but the current hop is <strong>not</strong> the peering hop, that is, the current hop field is <strong>not</strong> the <em>last</em> hop field of the segment, seen from the direction of travel - this can be determined by looking at the value of the current <tt>SegLen</tt> and other metadata in the path meta header. In this case, the ingress border router needs to perform the steps previously described for the path segment without peering hop field. However, the border router <bcp14>MUST NOT</bcp14> increment <tt>CurrInf</tt> and <bcp14>MUST NOT</bcp14> increment <tt>CurrHF</tt> in the path meta header. Proceed with step 4.</t>
                      </li>
                      <li>
                        <t><strong>Use case 3</strong> <br/> The path segment includes a <strong>peering hop field</strong> (<tt>P</tt> = "1"), and the current hop field <em>is</em> the peering hop field. This would be the case if the current hop field is the <em>last</em> hop field of the segment, seen from the direction of travel - to find out whether this is true, check the value of the current <tt>SegLen</tt> and other metadata in the path meta header. In this case, the ingress border router <bcp14>MUST</bcp14> take the following step(s):          </t>
                        <ul spacing="normal">
                          <li>
                            <t>Compute MAC<sup>Peer</sup><sub>i</sub>. For this, use the formula in <xref target="peerlink"/>, but replace <tt>SegID XOR MAC_0[:2] ... XOR MAC_i [:2]</tt> in the formula with the value of the accumulator Acc as set in the <tt>Acc</tt> field in the current info field (this is the value of the accumulator Acc as it comes with the packet).</t>
                          </li>
                          <li>
                            <t>Check that the MAC<sub>i</sub> in the current hop field matches the just-calculated MAC<sup>Peer</sup><sub>i</sub>. If yes, it is fine. Otherwise, drop the packet.</t>
                          </li>
                          <li>
                            <t>Increment both <tt>CurrInf</tt> and <tt>CurrHF</tt> in the path meta header. Proceed with step 4.</t>
                          </li>
                        </ul>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
              <li>
                <t>Forward the packet to the egress border router (based on the egress interface ID in the current hop field) or to the destination endpoint, if this is the destination AS.</t>
              </li>
            </ol>
            <t><strong>Note:</strong> For more information on the path meta header, see <xref target="PathMetaHdr"/>.</t>
          </section>
          <section anchor="steps-egress-border-router">
            <name>Steps Egress Border Router</name>
            <t>This section describes the steps that a SCION egress border router <bcp14>MUST</bcp14> perform when it receives a SCION packet.</t>
            <ol spacing="normal" type="1"><li>
                <t>Parse the SCION packet.</t>
              </li>
              <li>
                <t>The next steps depend on the direction of travel and whether this segment includes a peering link. Both features are indicated by the settings of the Construction Direction flag <tt>C</tt> and the Peering flag <tt>P</tt> in the currently valid info field. Therefore, first check the settings of both flags. The following use cases are possible:  </t>
                <ul spacing="normal">
                  <li>
                    <t><strong>Use case 1</strong> <br/> The packet traverses the path segment in <strong>construction direction</strong> (<tt>C</tt> = "1"). The path segment either includes <strong>no peering hop field</strong> (<tt>P</tt> = "0"), or the path segment does include a <strong>peering hop field</strong> (<tt>P</tt> = "1"), but the current hop is <strong>not</strong> the peering hop, that is, the current hop field is <strong>not</strong> the <em>first</em> hop field of the segment, seen from the direction of travel. To check whether this is true, look at the value of the current <tt>SegLen</tt> and other metadata in the path meta header. In this case, the egress border router <bcp14>MUST</bcp14> take the following step(s):      </t>
                    <ul spacing="normal">
                      <li>
                        <t>Compute MAC<sup>Verify</sup><sub>i</sub> over the hop field of the current AS<sub>i</sub>. For this, use the formula in <xref target="def-mac"/>, but replace <tt>SegID XOR MAC_0[:2] ... XOR MAC_i-1 [:2]</tt> in the formula with the value of the accumulator Acc as set in the <tt>Acc</tt> field in the current info field.</t>
                      </li>
                      <li>
                        <t>Check that the just-calculated MAC<sup>Verify</sup><sub>i</sub> matches MAC<sub>i</sub> in the hop field of the current AS<sub>i</sub>. If yes, it is fine. Otherwise, drop the packet.</t>
                      </li>
                      <li>
                        <t>Compute the value of Acc<sub>i+1</sub>. For this, use the formula in <xref target="def-acc"/>. Replace Acc<sub>i</sub> in the formula with the current value of the accumulator Acc as set in the <tt>Acc</tt> field of the current info field.</t>
                      </li>
                      <li>
                        <t>Replace the value of the <tt>Acc</tt> field in the current info field with the just-calculated value of Acc<sub>i+1</sub>.</t>
                      </li>
                      <li>
                        <t>Proceed with step 3.</t>
                      </li>
                    </ul>
                  </li>
                  <li>
                    <t><strong>Use case 2</strong> <br/> The packet traverses the path segment in <strong>construction direction</strong> (<tt>C</tt> = "1"). The path segment includes a <strong>peering hop field</strong> (<tt>P</tt> = "1"), and the current hop field <em>is</em> the peering hop field. This would be the case if the current hop field is the <em>first</em> hop field of the segment, seen from the direction of travel - to find out whether this is true, check the value of the current <tt>SegLen</tt> and other metadata in the path meta header. In this case, the egress border router <bcp14>MUST</bcp14> take the following steps:      </t>
                    <ul spacing="normal">
                      <li>
                        <t>Compute MAC<sup>Peer</sup><sub>i</sub>. For this, use the formula in <xref target="peerlink"/>, but replace <tt>SegID XOR MAC_0 [:2] ... XOR MAC_i [:2]</tt> with the value in the <tt>Acc</tt> field of the current info field.</t>
                      </li>
                      <li>
                        <t>Check that the MAC<sub>i</sub> in the hop field of the current AS<sub>i</sub> matches the just-calculated MAC<sup>Peer</sup><sub>i</sub>. If yes, it is fine - proceed with step 3. Otherwise, drop the packet.</t>
                      </li>
                    </ul>
                  </li>
                  <li>
                    <t><strong>Use case 3</strong> <br/> The packet traverses the path segment <strong>against construction direction</strong> (<tt>C</tt> = "0" and <tt>P</tt> = "0" or "1"). In this case, proceed with the next step, step 3.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Increment <tt>CurrHF</tt> in the path meta header.</t>
              </li>
              <li>
                <t>Forward the packet to the neighbor AS.</t>
              </li>
            </ol>
            <t><strong>Note:</strong> For more information on the path meta header, see <xref target="PathMetaHdr"/>.</t>
          </section>
          <section anchor="effects-of-clock-inaccuracy">
            <name>Effects of Clock Inaccuracy</name>
            <t>A PCB originated by a given control service is used to construct data plane paths. Specifically, the timestamp in the Info Field and the expiry time of hop fields are used for hop field MAC computation, see <xref target="hf-mac-calc"/>, which is used to validate paths at each on-path SCION router. A segment's originating control service and the routers that the segment refers to 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 validation 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 validation 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, one minute). As a result of this and the way they are iteratively constructed, PCBs with N hops may become available for path construction up to N intervals (so typically 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="hopfld"/>) would render useless any path segment longer than 5 hops. For this reason, it is unadvisable to create hops with a short expiration time. The norm is 6 hours.</t>
            <t>In comparison to these time scales, clock offsets in the order of minutes are immaterial.</t>
            <t>Each administrator of SCION control services and routers is responsible for maintaining sufficient clock accuracy. No particular method is assumed by this specification.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section describes the possible security risks and attacks that SCION's data plane may be prone to, and how these attacks may be mitigated. It first discusses security risks that pertain to path authorization, followed by a section on other forwarding-related security considerations.</t>
      <section anchor="path-authorization-1">
        <name>Path Authorization</name>
        <t>A central property of the SCION path-aware data plane is path authorization. Path authorization guarantees that data packets always traverse the network along path segments authorized in the control plane by all on-path ASes. This section discusses how an adversary may attempt to violate the path-authorization property, as well as SCION's prevention mechanisms to these attacks; either an attacker can attempt to create unauthorized hop fields, or they can attempt to create illegitimate paths assembled from authentic individual hop fields.</t>
        <t>The main protection mechanism here is the hop field MAC (see <xref target="auth-chained-macs"/>), authenticating the hop field content, consisting of ingress/egress interface identifiers, creation and expiration timestamp and, virtually, the preceding hop field MACs in the path segment.
Recall that each hop field MAC is computed using the respective AS's secret forwarding key, which is shared across the SCION routers and control plane services within each AS.</t>
        <section anchor="forwarding-key-compromise">
          <name>Forwarding key compromise</name>
          <t>For the current default MAC algorithm, AES-CMAC truncated to 48 bits, key recovery attacks from (any number of) known plaintext/MAC combinations is computationally infeasible, as far as publicly known.
In addition, the MAC algorithm can be freely chosen by each AS, enabling algorithmic agility for MAC computations. Should a MAC algorithm be discovered to be weak or insecure, each AS can quickly switch to a secure algorithm without the need for coordination with other ASes.</t>
          <t>A more realistic risk to the secrecy of the forwarding key is exfiltration from a compromised router or control plane service.
An AS can optionally rotate its forwarding key at regular intervals to limit the exposure after a temporary device compromise. However, as is perhaps self-evident, such a key rotation scheme cannot mitigate the impact of an undiscovered, permanent compromise of a device.</t>
          <t>When an AS's forwarding key is compromised, an attacker can forge hop field MACs, undermining path authorization. Recall that path segments are checked for validity and policy compliance during the path discovery phase, and during forwarding, routers only validate the MAC and basic validity of the current the hop field. Consequently, creating fraudulent hop fields with valid MACs allows an attacker to bypass most path segment validity checks, and to create path segments that violate the AS's local policy and/or general path segment validity requirements.
In particular, an attacker could create paths that include loops (limited by the maximum number of hop fields of a path).</t>
          <t>Unless an attacker has access to the forwarding keys of all ASes on the illegitimate path it wants to fabricate, it will need to splice fragments of two legitimate path segments with an illegitimate hop field. For this, it needs to create a hop field with a MAC that fits into the MAC chain expected by the second path segment fragment. The only input that the attacker can vary relatively freely is the 8 bit <tt>ExpTime</tt>, but the resulting MAC needs to match a specific 16 bit <tt>Acc</tt> value. While there is a low probability of this working for a specific attempt (1/256), the attack will succeed eventually if the attacker can keep retrying over a longer time period or with many different path segment fragments.</t>
          <t>While a forwarding key compromise and the resulting loss of path authorization is a serious degradation of SCION's routing security properties, this does not affect, for example, access control or data security for the hosts in the affected AS.
Unauthorized paths are available to the attacker, but the routing of packets from legitimate senders is not affected.</t>
        </section>
        <section anchor="forging-hop-field-mac">
          <name>Forging hop field MAC</name>
          <t>As a second method to break path authorization is to directly forge a hop field in an online attack, using the router as an oracle to determine the validity of the hop field MAC. The adversary needs to send one packet per guess for verification. For a 6-byte MAC, the adversary would need an expected 2<sup>47</sup> (~140 trillion) tries to successfully forge the MAC of a single hop field.
As the router only checks MACs during the encoded validity period of the hop field, which is limited by the packet header format to at most 24 hours, these tries need to occur in a limited time period. This results in a seemingly infeasible number of ~1.6e9 guesses per second.
In the unlikely case that an online brute-force attack succeeds, the obtained hop field can be used until its inevitable expiration after the just mentioned 24 hour limit.</t>
        </section>
        <section anchor="path-splicing">
          <name>Path Splicing</name>
          <t>In a path-splicing attack, an adversary source endpoint takes valid hop fields of multiple path segments and splices them together to obtain a new unauthorized path.</t>
          <t>Two candidates path segments for splicing must have at least one AS interface in common as a connection point.
The path segments must have the same origination timestamp, as this is directly protected by the hop field MAC. This can occur by chance, or if the two candidate path segments were originated as the same segment that then diverged and converged back.
Finally, the hop field MAC protects the 16-bit aggregation of path segment identifier and preceding MACs. For details, see <xref target="auth-chained-macs"/>. This MAC chaining prevents splicing even in the case that the AS interface and segment timestamp match.</t>
          <t>As the segment identifier and aggregation of preceding MACs is only 16-bits wide, per-chance collision among compatible path segments can occur.
With typical network sizes and numbers of paths of today, such collisions might occur rarely.
Successful path splicing would allow an attacker to briefly use a path that violates an ASes path policy, e.g. making a special transit link available to a customer AS that is not billed accordingly, or violate general path segment validity requirements. In particular, a spliced path segment could traverse one or multiple links twice. However, creating a loop traversing a link an arbitrary number of times would involve multiple path splices and therefore multiple random collisions happening simultaneously, which is exceedingly unlikely.
A wider security margin against path splicing could be obtained by increasing the width of the segment identifier / <tt>Acc</tt> field, e.g. by extending it into the 8-bit reserved field next to it in the info field.</t>
        </section>
      </section>
      <section anchor="on-path-attacks">
        <name> On-Path Attacks</name>
        <t>When an adversary sits on the path between the source and destination endpoint, it is able to intercept the data packets that are being forwarded. This would allow the adversary to hijack traffic onto a path that is different from the intended one selected by the source endpoint. Possible on-path attacks in the data plane are modifications of the SCION path header and SCION address header. In addition, an on-path adversary can always simply drop packets. This kind of attack is fundamental and generally cannot be prevented. However, in this case, the endpoint can use SCION's path-awareness to immediately select an alternate path if available.</t>
        <section anchor="modification-of-the-path-header">
          <name>Modification of the Path Header</name>
          <t>An on-path adversary could modify the SCION path header, and replace the remaining part of path segments to the destination with different segments. Such replaced segments must include authorized segments, as otherwise the packet would be simply dropped on its way to the destination. The already traversed portion of the current segment and past segments can also be modified by the adversary (for instance, deleting and adding valid and invalid hop fields). On reply packets from the destination, the adversary can transparently revert the changes to the path header again. For instance, if an adversary M is an intermediate AS on the path of a packet from A to B, then M can replace the packet’s past path (leading up to, but not including M). The new path may not be a valid end-to-end path. However, when B reverses the path and sends a reply packet, that packet would go via M, which can then transparently change the invalid path back to the valid path to A. In addition, the endpoint address header can also be modified.</t>
          <t>Modifications of the SCION path and address header can be discovered by the destination endpoint by a data integrity protection system. Such a data integrity protection system, loosely analogous to the IPSec Authentication Header, exists for SCION but is out of scope for this document. This is described as the SCION Packet Authentication Option (SPAO) in <xref target="CHUAT22"/>.</t>
          <t>Moreover, packet integrity protection is not enough if there are two colluding adversaries on the path. These colluding adversaries can forward the packet between them using a different path than selected by the source endpoint: The first on-path attacker remodels the packet header arbitrarily, and the second on-path attacker changes the path back to the original source-selected path, such that the integrity check by the destination endpoint succeeds. To prevent this attack and to defend against multiple on-path adversaries in general, proof of transit is required, which is not in scope for this document.</t>
        </section>
      </section>
      <section anchor="off-path-attacks">
        <name>Off-Path Attacks</name>
        <t>SCION's path-awareness limits the abilities of an off-path adversary to influence forwarding in the data plane. Once a packet is "in flight", it will follow its set route, no matter what an adversary may do.
An adversary can attempt to disrupt the connectivity of said path by flooding a link with excessive traffic (see <xref target="dos"/> below). After detecting congestion, the endpoint can switch to another, non-congested path for subsequent packets.</t>
      </section>
      <section anchor="dos">
        <name>Volumetric Denial of Service Attacks</name>
        <t>An adversary can attempt to disrupt the connectivity of a network path by flooding a link with excessive traffic. In this case, the endpoint can switch to another, non-congested path for subsequent packets.</t>
        <t>SCION provides protection against certain reflection-based DoS attacks. Here, the adversary sends requests to a server with the source address set to the address of the victim. The server will send a reply, typically larger than the request, to the victim. As long as the attacker and the victim are located in different ASes, this can be prevented in SCION. The reply packets are simply returned along reversed path to the actual sender, regardless of the source address information. Thus, the reflected will be forwarded to the attackers AS (where it will be discarded because the destination AS does not match).</t>
        <t>On the flip side, the path choice of the endpoint may possibly be exploited by an attacker to create intermittent congestion with relatively low send rate; the attacker can abuse the latency differences of the available paths, sending at precisely timed intervals to cause short, synchronized bursts of packets near the victim.</t>
        <t><strong>Note</strong> that SCION does not protect against two other types of DoS attacks, namely transport protocol attacks and application layer attacks. Such attacks are out of SCION's scope. However, the additional information contained in the SCION header enables more targeted filtering, e.g., by ISD, AS or path length.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The SCION AS and ISD number are SCION-specific numbers. They are currently allocated by Anapaya Systems, a provider of SCION-based networking software and solutions (see <eref target="https://docs.anapaya.net/en/latest/resources/isd-as-assignments/">Anapaya ISD AS assignments</eref>). This task is currently being transitioned from Anapaya to the SCION Association.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.scion-cp" target="https://datatracker.ietf.org/doc/draft-dekater-scion-controlplane/">
          <front>
            <title>SCION Control Plane</title>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="I-D.scion-cppki" target="https://datatracker.ietf.org/doc/draft-dekater-scion-pki/">
          <front>
            <title>SCION Control-Plane PKI</title>
            <author initials="C." surname="de Kater" fullname="Corine de Kater">
              <organization>SCION Association</organization>
            </author>
            <author initials="N." surname="Rustignoli" fullname="Nicola Rustignoli">
              <organization>SCION Association</organization>
            </author>
            <author initials="S." surname="Hitz" fullname="Samuel Hitz">
              <organization>Anapaya Systems</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="RFC2474">
          <front>
            <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
            <author fullname="K. Nichols" initials="K." surname="Nichols"/>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines the IP header field, called the DS (for differentiated services) field. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2474"/>
          <seriesInfo name="DOI" value="10.17487/RFC2474"/>
        </reference>
        <reference anchor="RFC3168">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishnan"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3168"/>
          <seriesInfo name="DOI" value="10.17487/RFC3168"/>
        </reference>
        <reference anchor="RFC4493">
          <front>
            <title>The AES-CMAC Algorithm</title>
            <author fullname="JH. Song" initials="JH." surname="Song"/>
            <author fullname="R. Poovendran" initials="R." surname="Poovendran"/>
            <author fullname="J. Lee" initials="J." surname="Lee"/>
            <author fullname="T. Iwata" initials="T." surname="Iwata"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>The National Institute of Standards and Technology (NIST) has recently specified the Cipher-based Message Authentication Code (CMAC), which is equivalent to the One-Key CBC MAC1 (OMAC1) submitted by Iwata and Kurosawa. This memo specifies an authentication algorithm based on CMAC with the 128-bit Advanced Encryption Standard (AES). This new authentication algorithm is named AES-CMAC. The purpose of this document is to make the AES-CMAC algorithm conveniently available to the Internet Community. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4493"/>
          <seriesInfo name="DOI" value="10.17487/RFC4493"/>
        </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="RFC5880">
          <front>
            <title>Bidirectional Forwarding Detection (BFD)</title>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes a protocol intended to detect faults in the bidirectional path between two forwarding engines, including interfaces, data link(s), and to the extent possible the forwarding engines themselves, with potentially very low latency. It operates independently of media, data protocols, and routing protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5880"/>
          <seriesInfo name="DOI" value="10.17487/RFC5880"/>
        </reference>
        <reference anchor="RFC5881">
          <front>
            <title>Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)</title>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes the use of the Bidirectional Forwarding Detection (BFD) protocol over IPv4 and IPv6 for single IP hops. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5881"/>
          <seriesInfo name="DOI" value="10.17487/RFC5881"/>
        </reference>
        <reference anchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </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="RFC1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="B. Moskowitz" initials="B." surname="Moskowitz"/>
            <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
            <author fullname="G. J. de Groot" initials="G. J." surname="de Groot"/>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <date month="February" year="1996"/>
            <abstract>
              <t>This document describes address allocation for private internets. 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="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
        <reference anchor="RFC2711">
          <front>
            <title>IPv6 Router Alert Option</title>
            <author fullname="C. Partridge" initials="C." surname="Partridge"/>
            <author fullname="A. Jackson" initials="A." surname="Jackson"/>
            <date month="October" year="1999"/>
            <abstract>
              <t>This memo describes a new IPv6 Hop-by-Hop Option type that alerts transit routers to more closely examine the contents of an IP datagram. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2711"/>
          <seriesInfo name="DOI" value="10.17487/RFC2711"/>
        </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="SCMP" target="https://docs.scion.org/en/latest/protocols/scmp.html">
          <front>
            <title>SCMP Documentation</title>
            <author initials="" surname="Anapaya" fullname="Anapaya Systems">
              <organization>Anapaya Systems</organization>
            </author>
            <author initials="" surname="ETH" fullname="ETH Zuerich">
              <organization>ETH Zuerich</organization>
            </author>
            <author initials="" surname="SCION" fullname="SCION Association">
              <organization>SCION Association</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="CRYPTOBOOK" target="https://toc.cryptobook.us/">
          <front>
            <title>A Graduate Course in Applied Cryptography</title>
            <author initials="D." surname="Boneh" fullname="Dan Boneh">
              <organization/>
            </author>
            <author initials="V." surname="Shoup" fullname="Victor Shoup">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1538?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks go to Matthias Frei (SCION Association), Juan A. Garcia Prado (ETH Zurich), Kevin Meynell (SCION Association) and Jean-Christophe Hugly (SCION Association) 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 Data 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="protnum">
      <name>Assigned SCION Protocol Numbers</name>
      <t>This appendix lists the assigned SCION protocol numbers.</t>
      <section numbered="false" anchor="considerations">
        <name> Considerations</name>
        <t>SCION attempts to take the IANA's assigned Internet protocol numbers into consideration. Widely employed protocols have the same protocol number as the one assigned by IANA. SCION specific protocol numbers start at 200.</t>
        <t>The protocol numbers are used in the SCION header to identify the upper layer protocol.</t>
        <t>SCMP refers to the SCION Control Message Protocol, used for diagnostics and error messages. Support for this protocol is <bcp14>OPTIONAL</bcp14>. A work-in-progress specification is available at: <xref target="SCMP"/>.</t>
      </section>
      <section numbered="false" anchor="assignment">
        <name>Assignment</name>
        <table>
          <name>The assigned SCION protocol numbers</name>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Keyword</th>
              <th align="left">Protocol</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-5</td>
              <td align="left"> </td>
              <td align="left">Unassigned</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">TCP/SCION</td>
              <td align="left">Transmission Control Protocol over SCION</td>
            </tr>
            <tr>
              <td align="left">7-16</td>
              <td align="left"> </td>
              <td align="left">Unassigned</td>
            </tr>
            <tr>
              <td align="left">17</td>
              <td align="left">UDP/SCION</td>
              <td align="left">User Datagram Protocol over SCION</td>
            </tr>
            <tr>
              <td align="left">18-199</td>
              <td align="left"> </td>
              <td align="left">Unassigned</td>
            </tr>
            <tr>
              <td align="left">200</td>
              <td align="left">HBH</td>
              <td align="left">SCION Hop-by-Hop Options</td>
            </tr>
            <tr>
              <td align="left">201</td>
              <td align="left">E2E</td>
              <td align="left">SCION End-to-End Options</td>
            </tr>
            <tr>
              <td align="left">202</td>
              <td align="left">SCMP</td>
              <td align="left">SCION Control Message Protocol</td>
            </tr>
            <tr>
              <td align="left">203</td>
              <td align="left">BFD/SCION</td>
              <td align="left">BFD over SCION</td>
            </tr>
            <tr>
              <td align="left">204-252</td>
              <td align="left"> </td>
              <td align="left">Unassigned</td>
            </tr>
            <tr>
              <td align="left">253</td>
              <td align="left"> </td>
              <td align="left">Use for experimentation and testing</td>
            </tr>
            <tr>
              <td align="left">254</td>
              <td align="left"> </td>
              <td align="left">Use for experimentation and testing</td>
            </tr>
            <tr>
              <td align="left">255</td>
              <td align="left"> </td>
              <td align="left">Reserved</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+x963obyXXgfz5FL+fHABQAESSl0Sgzs6EoKeJnjcQVOY69
3nxmA2iQbQFopLtBiZYmz5JnyZPtuVadqm6ApC6O7ZhORmRfqqtOnTr3S7/f
36rzepY9TrZPj45fv0qepnWanMzSRba9lY5GZXblb51sb43TOrsoyuvHSb6Y
FlvVajTPqyovFvX1MsOLk2yZwX8W9dbWpBgv0jlcnZTptO5PsrfwctmvxvB4
fwLfWeJn+rt7W/CN/a1vkrTMUvja8Zuz59vw57uifHtRFqslXDtJ68vk8B08
kbzKaryTLy6SN/+yvfU2u4Y/J4+T4wWMvsjq/lP83NZVtlhlj2GY5OYx4CGe
//abrMrScnyZ/Au+RHfmaT6DO8t0UV78c17W00FRXtAdfBDuXNb1snp8//67
d+8Gecb37+NbfXwgv8ruv8tG9+n9+9tbMJ+8vlyN4EWCRFpVxThPa/j1voBm
+cfj/lN8cgYAq2rzifiNAY81yIvg3fsbIT64rOez7a2tdFVfFuXjraSfJLBz
1ePkaJBMsuQ3+BJ8HX54/46KMl9k0S1Y5OOEEePQT4jvZQyz8R8n2R9pCv98
MX8/GF9umW+9GiRvVlWdXyyKWW6/9iofF7O0cfMW31vk43+mteIO2G+dDpIX
ef1n+5XTdL7KZuYyjX+4SJfpdZqcXld1Nq+C0S/h0X9O+YEB4NnW1taiKOcw
jSvAsyQBuA8Y0uPlY3pTThZP+gjOSFnM+GzRbdgQuLu3u3fAT6flRQabrXuN
+1WX6fhtVnq0gjPVurljHp329z4N53aXfvry77qN3rzXN4A/Hr1la2/a3Tt+
IdjQ9Xu6flvtZi3f5uv3q0/7lZz85viL7xl89x9bdfNWvXl+tHfw3cFj/nV/
+PCR/Hpw8P2+/Ppg79Gu/vrI/jqUXx/t7cLVLWRa5sgevfjl8GxvL9j97bPL
DEA7X86yOkv+ZZUDfOuCV7sd4sBeOw4UOW37cHcw3N397v733z3q7/d394f9
XZjmo/4uvVVlZZ5VOB/d9+PTJ68eJ+HT3/X3b8aQl4Pk6HKV1hGIX6arEvhw
dI+A/OzsRfJ/VzADIMmtQ/48SF5mF4sGyv2clm9XVXzvdmM+HSRPUlhxNOTT
9CqfRHduPeCLdFVdZo1p8piNmzTs6xp286pYwNbi2G+z5JcFoENZ5fU1rO9i
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
kFxjRz2SR4csjngNHRTuSDcowWDr0FLBpsQ0S68BiH+PElPjB8H7M1A2CfVo
//lqepL8YL9Ybhe7aQ6fHAL5F1oF/AwG62pN/M2s4u9jL4DS3LSIL7KKf8Dh
S43w93E2/xrgEOumD1TleUlsTTouKXf0jJCUn+M6as1ELJJCtNUCwUEO+2Hf
bKrLjNcfHoTl1vpeqTCjiAAsnOe862okx4406f7s6zLil3zdbe5s5wPGSJ43
+YA2nopC3jROp2dLP9JjNhRXl7VEV6zmqvJK/HN2/Z1zRzdhMdm/r9JZPGxL
SpULGnKxwZRQw90gonqUS42gcDma0vjbPeEG2VS1MjQdbaphqVuicOSkRpTm
4AkpbCfRTFXBYi5GiA8wEsKIYu8us9olK/tcutqmbqon2dRzdfI0W7zYl2XH
4lC2ouQEYI8ReVjgM0hX1yRS9zRuatRdrHOuNBM2Mngbn9H89JamY66pwqYG
Ycb8WUnkRK4NpCgK6Cu2CmvGcI8l8nB0zfmlvveX68YRH3JzOFw4Q4hTUW1Y
Ov3SuAH9fP47uF6tQ5CF2foPXR6WyWfV2tn4yT9xJqFNKA26+rqNEztrWAQy
eQJY+y4tfaJsldmVaU8SOsf/S3NRPY7QWwY3KPRN0VBzD4NCpB3qn9BWOpO7
J3Ql1tfij0caKmY+8qdqYooo57eZnMR9+tlVWHDRVyns0Bm+3fQaKK2zE1M5
bvlKQlpCuHuER9qGCdRYPRLTZzHnwx4vCgs97WlcHWILVSy46XhRiWWkZdIa
ZuTapeJM0smf4JlFbaiwqL0bahw2LaH32h4jxo9eElf45+MWltbhMjv6L9UT
0d/5l4+JfQD/3Uo6AJv9br+P/x5QbbeP9PsQf8df9rp9MuHi7w/kwYdYNuS8
zxVA9F+u6uJKhmh9l/DB2y57K/ll6Zo2+x+qyxFdfoo51nLNJKDda/3CvbZr
IErdk7tWqGq7aq7hW8nxq+fw349m+PDqPX3LX2v93Mf4cx+bU/j4OS9+TF48
x8sf++Z6cPWelPUx1+61TfZj2zc/Nr7ZNt27vBpM+J6+Gk1YbtgJN6f8cd13
Pza+25y0vBxi0IaX7WT05fDno/tfOO144h+b32b8av92kH1pnsNH5cc/2/bk
Vuss6T8oO/u/PrauZ+3rza/f7fV+vNDbvn6v/5MevOQTXk8+7+tf5HU3+R/0
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
X6neon2W5AEA

-->

</rfc>
