<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wang-sidrops-fcbgp-protocol-06" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="FC-BGP">FC-BGP Protocol Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-wang-sidrops-fcbgp-protocol-06"/>
    <author fullname="Ke Xu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>xuke@tsinghua.edu.cn</email>
      </address>
    </author>
    <author fullname="Xiaoliang Wang">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>wangxiaoliang0623@foxmail.com</email>
      </address>
    </author>
    <author fullname="Zhuotao Liu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>zhuotaoliu@tsinghua.edu.cn</email>
      </address>
    </author>
    <author fullname="Qi Li">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>qli01@tsinghua.edu.cn</email>
      </address>
    </author>
    <author fullname="Jianping Wu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>jianping@cernet.edu.cn</email>
      </address>
    </author>
    <author initials="Y." surname="Guo" fullname="Yangfei Guo">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>guoyangfei@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <workgroup>sidrops</workgroup>
    <abstract>
      <?line 106?>

<t>This document defines an extension, Forwarding Commitment BGP (FC-BGP), to the Border Gateway Protocol (BGP). FC-BGP provides security for the path of Autonomous Systems (ASs) through which a BGP UPDATE message passes. Forwarding Commitment (FC) is a cryptographically signed segment to certify an AS's routing intent on its directly connected hops. Based on FC, FC-BGP aims to build a secure inter-domain system that can simultaneously authenticate the AS_PATH attribute in the BGP UPDATE message and alleviate route leaks in the BGP routing system. The extension is backward compatible, which means a router that supports the extension can interoperate with a router that doesn't support the extension.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://FCBGP.github.io/fcbgp-protocol/draft-wang-sidrops-fcbgp-protocol.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wang-sidrops-fcbgp-protocol/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/FCBGP/fcbgp-protocol"/>.</t>
    </note>
  </front>
  <middle>
    <?line 111?>

<section anchor="Introduction">
      <name>Introduction</name>
      <t>In a post-ROV (Route Origin Validation) era, route hijacks are largely mitigated but not eliminated, which fundamentally shifts the security focus up the stack. The problem space becomes less about "who owns the prefix" and more about "how routes propagate and whether that propagation is trustworthy and policy-compliant".</t>
      <t>The FC-BGP mechanism described in this document aims to ensure that advertised routes in BGP <xref target="RFC4271"/> are authentic and alleviate the BGP route leaks.</t>
      <t>FC-BGP accomplishes this by introducing a new optional, transitive, and extended-length path attribute called FC (Forwarding Commitment) to the BGP UPDATE message. This attribute can be used by an FC-BGP-compliant BGP speaker (hereafter referred to as an FC-BGP speaker) to generate, propagate, and validate BGP UPDATE messages to enhance security. In other words, when the BGP UPDATE message travels through an FC-BGP-enabled autonomous system (AS), it adds a new FC based on the AS order in AS_PATH. Subsequent ASs can then utilize the list of FCs in the BGP UPDATE message to ensure that the advertised path is consistent with the AS_PATH attribute. And as a complementary of <xref target="RFC9234"/>, it can also alleviate the BGP route leaks.</t>
      <t>BGPsec is a path-level authentication approach described in <xref target="RFC8205"/>. It replaces the AS_PATH attribute, which is used to record the sequence of ASs that a BGP update has traversed, with the non-transitive BGPsec_Path attribute. However, when a peer does not support BGPsec, the BGPsec_Path attribute will be downgraded to the standard AS_PATH attribute, losing the security benefits BGPsec provides. In contrast, FC-BGP (Forwarding Commitment BGP) preserves the AS_PATH attribute and introduces an additional list of signed messages called Forwarding Commitments. Each Forwarding Commitment (FC) is a publicly verifiable code certifying the correctness of a three-hop pathlet. FC-BGP builds its path authentication based on these FCs.</t>
      <t>FC-BGP and BGPsec offer different levels of security benefits in the case of partial deployment, even though they achieve the same security benefits when fully deployed. BGPsec tightly couples path authentication with the BGP path construction process, requiring each AS to iteratively verify the signatures of each prior hop before extending the authentication chain. Consequently, a single legacy AS that does not support BGPsec can break the authentication chain, preventing subsequent BGPsec-aware ASs from reviving the authentication process. As a result, in partial deployment scenarios, BGPsec is often downgraded to the legacy BGP protocol, losing its security benefits.</t>
      <t>In contrast to BGPsec, FC-BGP treats partial deployability as a first-class citizen. It adopts a pathlet-driven authentication paradigm, in which the authenticity of an AS path can be incrementally built based on authenticated pathlets.  This design ensures that downstream FC-BGP-aware ASs can use the authenticated pathlets provided by upstream upgraded ASs, even if the full AS path traverses legacy ASs that do not support FC-BGP. By allowing the authentication of sub-paths, FC-BGP enables incremental deployment and provides security benefits to the FC-BGP-aware ASs, regardless of the deployment status of other ASs on the path <xref target="DeploymentBenefitsAnalysis"/>.</t>
      <t>Similar to BGPsec, FC-BGP relies on RPKI to perform route origin validation <xref target="RFC6483"/>. Additionally, any FC-BGP speaker that wishes to process the FC path attribute along with BGP UPDATE messages <bcp14>MUST</bcp14> obtain a router certificate and store it in the RPKI repository. This certificate is associated with its AS number. The router key generation here follows <xref target="RFC8208"/> and <xref target="RFC8635"/>.</t>
      <t>It is <bcp14>NOT RECOMMENDED</bcp14> that both BGPsec and FC-BGP be enabled simultaneously in a BGP network. However, a BGP UPDATE message could carry both a BGPsec_Path attribute and an FC path attribute, and an FC-BGP speaker that also supports BGPsec <bcp14>MUST</bcp14> process such a message properly. The fundamental rule for coexistence is that the FC segments <bcp14>MUST</bcp14> be generated and verified against the same representation of the path that the UPDATE message actually carries: the AS_PATH attribute when no BGPsec_Path attribute is present, or the AS_Path reconstructed from the BGPsec_Path attribute when one is present. A speaker <bcp14>MUST NOT</bcp14> generate FC segments against one representation and verify them against the other. See <xref target="coexist_bgpsec"/> for the three cases (FC-BGP only, BGPsec only, and both present).</t>
      <section anchor="requirements-language">
        <name>Requirements Language</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="definitions-and-acronyms">
        <name>Definitions, and Acronyms</name>
        <t>The following terms are used with a specific meaning:</t>
        <dl newline="true">
          <dt>BGP neighbor:</dt>
          <dd>
            <t>Also just 'neighbor'. Two BGP speakers that communicate using the BGP protocol are neighbors. It can be divided into iBGP neighbors and eBGP neighbors.</t>
          </dd>
          <dt>BGP speaker:</dt>
          <dd>
            <t>A device, usually a router, exchanges routes with other BGP speakers using the BGP protocol.</t>
          </dd>
          <dt>BGP UPDATE:</dt>
          <dd>
            <t>The message is generated with several path attributes to advertise routes.</t>
          </dd>
          <dt>iBGP:</dt>
          <dd>
            <t>iBGP neighbor, internal BGP neighbor, or internal neighbor. Internal neighbors are in the same AS.</t>
          </dd>
          <dt>eBGP:</dt>
          <dd>
            <t>eBGP neighbor, external BGP neighbor, or external neighbor. External neighbors are in different ASs.</t>
          </dd>
          <dt>Router:</dt>
          <dd>
            <t>In this document, the router always refers to a BGP speaker.</t>
          </dd>
        </dl>
        <t>In addition to the list above, the following terms are used in this document:</t>
        <dl newline="true">
          <dt>FC:</dt>
          <dd>
            <t>Forwarding Commitment, i.e., an FC segment. It contains several fields and a digital signature that together certify a three-hop pathlet, identified by the triplet &lt;Previous AS Number, Current AS Number, Nexthop AS Number&gt;, and bind that pathlet to the AS_PATH attribute and the prefix of the route being advertised.</t>
          </dd>
          <dt>FCList:</dt>
          <dd>
            <t>An ordered list of FC segments that protects the AS_PATH attribute in the BGP UPDATE message. The order of the FC segments follows the order of the AS numbers in the AS_PATH attribute: the FC segment added most recently is placed at the front of the FCList and corresponds to the AS number at the front of the AS_PATH (the ASN most recently prepended). The formal correspondence is defined as the FC-to-AS_PATH Mapping in <xref target="fcmapping"/>.</t>
          </dd>
          <dt>FC path attribute:</dt>
          <dd>
            <t>The optional, transitive, extended-length path attribute defined in this document that carries the FCList.</t>
          </dd>
          <dt>FC-BGP UPDATE:</dt>
          <dd>
            <t>A BGP UPDATE message that carries the FC path attribute.</t>
          </dd>
          <dt>FC-BGP speaker:</dt>
          <dd>
            <t>A BGP speaker that enables the FC-BGP feature. It can generate, propagate, and validate FC-BGP UPDATE messages. See also FC-capable, FC-enabled, and FC-required below.</t>
          </dd>
          <dt>FC-capable:</dt>
          <dd>
            <t>A BGP speaker that implements the processing of the FC path attribute as specified in this document.</t>
          </dd>
          <dt>FC-enabled:</dt>
          <dd>
            <t>An FC-capable BGP speaker, or an AS, or a BGP session, for which the FC-BGP feature is actually activated and for which FC segments are being generated. An AS that is FC-capable is not necessarily FC-enabled on every BGP session or for every prefix.</t>
          </dd>
          <dt>FC-required:</dt>
          <dd>
            <t>An AS for which, given a particular route propagation scenario and the deployment state defined in <xref target="deployment"/>, the protocol requires that an FC segment be present in the FC path attribute for the FC coverage of the path to be complete.</t>
          </dd>
          <dt>FC-to-AS_PATH Mapping:</dt>
          <dd>
            <t>The deterministic correspondence between the FC segments in an FCList and the AS numbers in the AS_PATH attribute of the same BGP UPDATE message, as defined in <xref target="fcmapping"/>.</t>
          </dd>
          <dt>Prepending Count (PC):</dt>
          <dd>
            <t>A 1-octet field in an FC segment that records the number of consecutive occurrences of the Current AS Number (CASN) in the AS_PATH attribute that this single FC segment represents, and that is covered by the FC segment's signature.</t>
          </dd>
          <dt>Valid:</dt>
          <dd>
            <t>The validation result for an FC-BGP UPDATE message when all applicable protocol checks, including the FC-to-AS_PATH Mapping check and all signature verifications, have passed.</t>
          </dd>
          <dt>Invalid:</dt>
          <dd>
            <t>The validation result for an FC-BGP UPDATE message when a protocol violation, an FC-to-AS_PATH Mapping failure, or a cryptographic verification failure has been detected.</t>
          </dd>
          <dt>Not Validated:</dt>
          <dd>
            <t>An internal validation state indicating that the validation of an FC-BGP UPDATE message has been started but has not yet finished (for example, because validation has been deferred). It is not a security statement.</t>
          </dd>
          <dt>Unsupported:</dt>
          <dd>
            <t>The validation result for an FC-BGP UPDATE message that contains an algorithm or a protocol feature that the FC-BGP speaker cannot process.</t>
          </dd>
          <dt>Incomplete:</dt>
          <dd>
            <t>The validation result for an FC-BGP UPDATE message whose FC path attribute authenticates only part of the AS_PATH (for example, because the path traverses ASes that are not FC-required). Incomplete does not imply that the authenticated portion is invalid; see <xref target="deployment"/> and <xref target="validation-states"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="fc-bgp-negotiation">
      <name>FC-BGP Negotiation</name>
      <t>FC-BGP does not need to negotiate with neighbors since it is considered a transitive path attribute within the BGP UPDATE message. BGP speakers that do not recognize the FC path attribute or do not support FC-BGP <bcp14>SHOULD</bcp14> still transmit the FC path attribute to their neighbors. As a result, there is no need to establish a new BGP capability as defined in <xref target="RFC5492"/>.</t>
      <!-- Jeffery: The FC state can be removed from BGP without detection in the current procedure. An RPKI-registered policy could address the validation case. -->
<t>Because there is no capability negotiation, an FC-BGP speaker cannot learn directly from BGP whether a neighbor has activated FC-BGP on a session. The only public and verifiable signal is the existence of a valid RPKI router certificate for the neighbor's AS number <xref target="RFC8209"/>. This signal is used to determine whether the neighbor is FC-capable and, together with the deployment rules in <xref target="deployment"/>, whether the neighbor is FC-required for a given UPDATE. The existence of a router certificate does not, by itself, prove that the AS generated an FC segment for every UPDATE it sent. The FC Deployment and Coverage Semantics in <xref target="deployment"/> define the conditions under which the absence of an FC segment is a protocol violation, and the conditions under which it is merely a result of partial deployment.</t>
    </section>
    <section anchor="deployment">
      <name>FC Deployment and Coverage Semantics</name>
      <t>FC-BGP is designed for incremental deployment: a single BGP UPDATE message may traverse ASes that support FC-BGP and ASes that do not. This section defines the deployment concepts used by the rest of this document and the conditions under which the absence of an FC segment is a protocol violation rather than an expected consequence of partial deployment. The concepts FC-capable, FC-enabled, and FC-required are defined in <xref target="Introduction"/>; this section gives their operational semantics. The three concepts are distinct and <bcp14>MUST NOT</bcp14> be used interchangeably.</t>
      <section anchor="sources-of-deployment-state">
        <name>Sources of Deployment State</name>
        <t>The only public and verifiable signal of FC support is the existence of a valid RPKI router certificate for the relevant AS number <xref target="RFC8209"/>. Such a certificate establishes that the certificate holder is FC-capable: it demonstrates that the holder possesses the private key associated with the certificate and is able to generate FC segments. A valid router certificate does not, by itself, prove any of the following:</t>
        <ul spacing="normal">
          <li>
            <t>that the AS is FC-enabled on a particular BGP session;</t>
          </li>
          <li>
            <t>that the AS generates FC segments for a particular prefix or address family;</t>
          </li>
          <li>
            <t>that the AS generated FC segments at the time the UPDATE message was transmitted;</t>
          </li>
          <li>
            <t>that an FC segment, once generated, was not removed by an intermediate AS;</t>
          </li>
          <li>
            <t>that the AS's routing behavior matches what its certificate would allow.</t>
          </li>
        </ul>
        <t>The FC-enabled state and the set of prefixes, address families, and sessions for which FCs are generated (the "coverage configuration") <bcp14>MAY</bcp14> be communicated out of band, for example by an operator agreement, a routing registry, or administrative configuration. Absent such information, a receiver <bcp14>MUST</bcp14> apply the default determination rules defined below.</t>
      </section>
      <section anchor="determining-whether-an-as-is-fc-required">
        <name>Determining Whether an AS Is FC-required</name>
        <t>An AS is FC-required for a given route if and only if ALL of the following conditions hold:</t>
        <ol spacing="normal" type="1"><li>
            <t>The AS is FC-enabled on the BGP session over which the route is propagated (or, for the origin AS, over which the route was originated toward the next hop); and</t>
          </li>
          <li>
            <t>The route falls within the coverage configuration of that AS, considering at least the prefix, the address family, the SAFI, and the propagation scenario; and</t>
          </li>
          <li>
            <t>The AS is expected to propagate the FC path attribute, i.e., it is not an AS that is only forwarding the attribute as an optional transitive attribute without generating FCs.</t>
          </li>
        </ol>
        <t>A validating FC-BGP speaker <bcp14>MUST</bcp14> determine whether an AS on the AS_PATH attribute is FC-required as follows:</t>
        <ul spacing="normal">
          <li>
            <t>An AS on the AS_PATH attribute that has a valid RPKI router certificate for its AS number is considered FC-required for a route unless local configuration or out-of-band information establishes that the AS is not FC-enabled for the session over which that AS received or forwarded the route, or that the route is outside the AS's coverage configuration.</t>
          </li>
          <li>
            <t>An AS on the AS_PATH attribute without a valid RPKI router certificate is not FC-required.</t>
          </li>
        </ul>
      </section>
      <section anchor="fc-coverage-scenarios">
        <name>FC Coverage Scenarios</name>
        <t>The following scenarios determine how the absence of an FC segment is treated. For each scenario, the indicated handling <bcp14>MUST</bcp14> be followed.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Scenario</th>
              <th align="left">Handling</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1. The AS is FC-required, and the corresponding FC segment is absent.</td>
              <td align="left">The FC-to-AS_PATH Mapping (<xref target="fcmapping"/>) cannot be completed. The UPDATE message is handled as 'Invalid' per <xref target="error-matrix"/>.</td>
            </tr>
            <tr>
              <td align="left">2. The AS is FC-capable but not FC-required for this route (e.g., it is not FC-enabled on the session, or the route is outside its coverage configuration).</td>
              <td align="left">No violation. The absence is expected, and this AS is not part of the FC coverage of the route.</td>
            </tr>
            <tr>
              <td align="left">3. The AS is not FC-capable (a legacy AS).</td>
              <td align="left">No violation. The AS cannot generate FC segments; this is the partial-deployment case.</td>
            </tr>
            <tr>
              <td align="left">4. The FC path attribute is absent from the UPDATE message.</td>
              <td align="left">The UPDATE message is not an FC-BGP UPDATE message. See "FC Path Attribute Wholly Absent" below.</td>
            </tr>
            <tr>
              <td align="left">5. The FC path attribute is present but covers only part of the AS_PATH attribute.</td>
              <td align="left">The covered portion is still valid; the validation state is 'Incomplete' (see <xref target="validation-states"/>).</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="fc-path-attribute-wholly-absent">
        <name>FC Path Attribute Wholly Absent</name>
        <t>If an UPDATE message carries no FC path attribute, there is no FC to validate. The FC-BGP validation state is 'Not Validated' (see <xref target="validation-states"/>), and the route <bcp14>MAY</bcp14> be processed as an ordinary BGP UPDATE message. An operator whose coverage policy requires FCs for the route <bcp14>MAY</bcp14> additionally apply a locally configured route policy (for example, to reject such routes). FC-BGP itself <bcp14>MUST NOT</bcp14> mark the route 'Invalid' solely because the attribute is absent, because absence is also what partial deployment produces when a legacy AS does not propagate the optional transitive attribute.</t>
      </section>
      <section anchor="missing-fc-detectability-and-attack">
        <name>Missing FC: Detectability and Attack</name>
        <t>Whether the absence of an FC segment can be detected and whether it indicates an attack are two distinct questions:</t>
        <ul spacing="normal">
          <li>
            <t>The absence is DETECTABLE when the FC-required determination above can be made independently of the FC path attribute in the received UPDATE message, i.e., from public signals and configuration.</t>
          </li>
          <li>
            <t>The absence INDICATES AN ATTACK, or at least a protocol violation by the FC-required AS, when the AS was FC-required for the route and the corresponding FC segment is absent (scenario 1 above).</t>
          </li>
          <li>
            <t>When the AS is not FC-required (scenarios 2 and 3 above), the absence is expected and <bcp14>MUST NOT</bcp14> be treated as an attack.</t>
          </li>
        </ul>
        <t>In particular, the mere presence of a valid router certificate does not prove that an FC should have been generated for a specific route. Therefore, when an AS is FC-capable but its FC-required status for the route cannot be established, the absence of an FC segment <bcp14>MUST NOT</bcp14> be treated as a violation.</t>
      </section>
      <section anchor="security-guarantees-per-deployment-state">
        <name>Security Guarantees per Deployment State</name>
        <table>
          <thead>
            <tr>
              <th align="left">Deployment state</th>
              <th align="left">Guarantee provided by this document</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Fully deployed, i.e., all ASes on the AS_PATH attribute are FC-required and all corresponding FC segments are present and valid</td>
              <td align="left">The FC-to-AS_PATH Mapping is complete: every path node is bound to a valid FC segment. The route can be marked 'Valid'.</td>
            </tr>
            <tr>
              <td align="left">Partially deployed, i.e., some ASes on the AS_PATH attribute are not FC-required</td>
              <td align="left">The authenticated portion of the path is still verified. The route can be marked 'Incomplete'. The guarantees of <xref target="security-considerations"/> apply to the covered portions only.</td>
            </tr>
            <tr>
              <td align="left">No FC path attribute</td>
              <td align="left">'Not Validated'. No FC-BGP guarantee applies.</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="fc-path-attribute">
      <name>FC Path Attribute</name>
      <t>Unlike BGPsec, FC-BGP does not modify the AS_PATH. Instead, FC is enclosed in a BGP UPDATE message as an optional, transitive, and extended-length path attribute. This document registers a new attribute type code for this attribute: TBD, see <xref target="iana-considerations"/> for more information.</t>
      <t>The FC path attribute includes the digital signatures that protect the pathlet information. We refer to those update messages that contain the FC path attribute as "FC-BGP UPDATE messages". Although FC-BGP would not modify the AS_PATH path attribute, it is <bcp14>REQUIRED</bcp14> to never use the AS_SET or AS_CONFED_SET in FC-BGP according to <xref target="RFC6472"/> and <xref target="Deprecation-AS_SET-AS_CONFED_SET"/>.</t>
      <t>The format of the FC path attribute is shown in <xref target="figure1"/> and <xref target="figure2"/>. <xref target="figure1"/> shows the format of FC path attribute and <xref target="figure2"/> shows the FC segment format.</t>
      <figure anchor="figure1">
        <name>Format of FC path attribute.</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Flags    |      Type     |         FCList Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                            FCList                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>FC path attribute includes the following parts:</t>
      <dl newline="true">
        <dt>Flags (1 octet):</dt>
        <dd>
          <t>The current value is 0b11010000, representing the FC path attribute as optional, transitive, partial, and extended-length.</t>
        </dd>
        <dt>Type (1 octet):</dt>
        <dd>
          <t>The current value is TBD. Refer to <xref target="iana-considerations"/> for more information.</t>
        </dd>
        <dt>FCList Length (2 octets):</dt>
        <dd>
          <t>The value is the total length of the FCList in octets.</t>
        </dd>
        <dt>FCList (variable length):</dt>
        <dd>
          <t>The value is a sequence of FC segments, in order. The order of the FC segments follows the order of the AS numbers in the AS_PATH attribute: the FC segment added most recently is at the front of the FCList and corresponds to the AS number at the front of the AS_PATH; see <xref target="fcmapping"/>. The FCList does not conflict with the AS_PATH attribute; the FC path attribute and the AS_PATH attribute can coexist in the same FC-BGP UPDATE message.</t>
        </dd>
      </dl>
      <t>The FC path attribute and the FCList are variable length, and each FC segment contains a variable-length signature. To keep FC-BGP UPDATE messages within BGP's maximum message size <xref target="RFC4271"/> and to bound the resources required to parse and verify them, the following limits apply:</t>
      <ul spacing="normal">
        <li>
          <t>The FCList Length <bcp14>MUST NOT</bcp14> exceed 4095 octets (leaving room for the BGP message header and other path attributes within BGP's maximum message size).</t>
        </li>
        <li>
          <t>A single FC segment <bcp14>MUST NOT</bcp14> exceed 1024 octets.</t>
        </li>
        <li>
          <t>The number of FC segments in an FCList <bcp14>MUST NOT</bcp14> exceed 128.</t>
        </li>
      </ul>
      <t>A speaker that receives an FC path attribute or an FC segment that exceeds any of these limits <bcp14>MUST</bcp14> handle the FC path attribute as a malformed attribute as specified in <xref target="error-matrix"/>.</t>
      <figure anchor="figure2">
        <name>Format of FC segment.</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                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Previous Autonomous System Number (PASN)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Current Autonomous System Number (CASN)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Nexthop Autonomous System Number (NASN)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                  Subject Key Identifier (SKI)                 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Algorithm ID  |      Flags    |       Signature Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      PC       |                 RESERVED                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                          Signature                            ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>In FC-BGP, all ASs <bcp14>MUST</bcp14> use 4-byte AS numbers in FC segments. Existing 2-byte AS numbers are converted into 4-byte AS numbers by setting the two high-order octets of the 4-octet field to 0 <xref target="RFC6793"/>.</t>
      <t>FC segment includes the following parts. (See <xref target="fcbgp-update"/> for more details on populating these fields.)</t>
      <dl newline="true">
        <dt>Version (1 octet):</dt>
        <dd>
          <t>The version of the FC segment format. The current value is 1. The Version field is the first field of the FC segment, in a positionally fixed location, so that a receiver can determine, before parsing the rest of the segment, whether it understands the segment format. The Version field is covered by the FC segment's signature (<xref target="sig-input"/>); an FC segment whose Version is not recognized <bcp14>MUST NOT</bcp14> be treated as authenticated and is handled as 'Unsupported' per <xref target="error-matrix"/>. Future versions <bcp14>MUST NOT</bcp14> change the position or the 1-octet size of the Version field; see <xref target="iana-considerations"/> for version management.</t>
        </dd>
        <dt>Previous Autonomous System Number (PASN, 4 octets):</dt>
        <dd>
          <t>The PASN is the AS number of the previous hop AS from which the FC-BGP speaker receives the FC-BGP UPDATE message. If the current AS has no previous AS hop, it <bcp14>MUST</bcp14> be filled with 0. It will be discussed more at <xref target="sec-three-asn"/>.</t>
        </dd>
        <dt>Current Autonomous System Number (CASN, 4 octets):</dt>
        <dd>
          <t>The CASN is the AS number of the FC-BGP speaker that added this FC segment to the FC path attribute.</t>
        </dd>
        <dt>Nexthop Autonomous System Number (NASN, 4 octets):</dt>
        <dd>
          <t>The NASN is the AS number of the next hop AS to which the FC-BGP speaker will send the BGP UPDATE message.</t>
        </dd>
        <dt>Subject Key Identifier (SKI, 20 octets):</dt>
        <dd>
          <t>The SKI in the RPKI router certificate is a unique identifier for the public key used for signature verification. If the SKI length exceeds 20 octets, it should retrieve the leftmost 20 octets.</t>
        </dd>
      </dl>
      <!-- TODO: Different from BGPsec as each FC segment has its algorithm ID, there is no need to set more than one FC segment for each hop. Hope so. -->

<dl newline="true">
        <dt>Algorithm ID (1 octet):</dt>
        <dd>
          <t>The current assigned value is 1, indicating that SHA256 is used to hash the content to be signed, and ECDSA is used for signing. It follows the algorithm suite defined in <xref target="RFC8208"/> and its updates. Each FC segment has an Algorithm ID, so there is no need to worry about sudden changes in its algorithm suite. The key in FC-BGP uses the BGPsec Router Key, so its generation and management follow <xref target="RFC8635"/>.</t>
        </dd>
      </dl>
      <!-- TODO: Flags in BGPsec used to indicate the AS_CONFED_SEQUENCE. But the pCount field is omitted here. We may merge the Flags field and pCount field. However, in BGPsec, setting the pCount field to a value greater than 1 has the same semantics as repeating an AS number multiple times in the AS_PATH of a non-BGPsec UPDATE message (e.g., for traffic engineering purposes). If 0, it means this is for the IXP Route Server. And the leftmost bit in Flags is the Confed_Segment flag to indicate the BGPsec speaker that constructed this Secure_Path Segment is sending the UPDATE message to a peer AS within the same AS confederation [RFC5065]. I have no idea how to deal with Confed_Segment/AS confederation. -->

<dl newline="true">
        <dt>Flags (1 octet):</dt>
        <dd>
          <t>Several flag bits. Bits are numbered from bit 7 (the most significant, leftmost bit) down to bit 0 (the least significant, rightmost bit) in <xref target="figure2"/>. The following flags are defined:
</t>
          <ul spacing="normal">
            <li>
              <t>Bit 7 - Confed_Segment flag (Flags-CS). The Flags-CS flag is set to 1 to indicate that the FC-BGP speaker that constructed this FC segment is sending the UPDATE message to a peer AS within the same AS confederation <xref target="RFC5065"/>. That is, a sequence of consecutive Flags-CS flags appears in an FC-BGP UPDATE message whenever, in a non-FC-BGP UPDATE message, an AS_PATH segment of type AS_CONFED_SEQUENCE occurs. In all other cases, the Flags-CS flag is set to 0.</t>
            </li>
            <li>
              <t>Bit 6 - Route_Server flag (Flags-RS). The Flags-RS flag is set to 1 to indicate that the FC segment was added by a route server whose AS number does not appear in the AS_PATH attribute. If the AS number of the route server is inserted into the AS_PATH attribute, the Flags-RS flag <bcp14>MUST</bcp14> be set to 0. See <xref target="rs-processing"/>.</t>
            </li>
            <li>
              <t>Bit 5 - Provider_to_Customer flag (Flags-P2C). The Flags-P2C flag is set to 1 to indicate that the FC segment's issuer AS sends routes to its customer or RS-Client; see <xref target="route-leak"/>.</t>
            </li>
            <li>
              <t>Bit 4 - Peer_to_Peer flag (Flags-P2P). The Flags-P2P flag is set to 1 to indicate that the FC segment's issuer AS sends routes to its peer; see <xref target="route-leak"/>.</t>
            </li>
          </ul>
        </dd>
      </dl>
      <t>The remaining bits (bits 3 to 0) of the Flags field are unassigned. They <bcp14>MUST</bcp14> be set to 0 by the sender and ignored by the receiver. New flags are registered in the FC Flags registry defined in <xref target="iana-considerations"/>.</t>
      <t>Note that the behavior that was previously expressed by an AS_Path_Prepending flag (Flags-ASPP) is now expressed by the Prepending Count field defined below.</t>
      <dl>
        <dt>Signature Length (2 octets):</dt>
        <dd>
          <t>The length, in octets, of the Signature field. It does not include any other field of the FC segment.</t>
        </dd>
        <dt>Prepending Count (PC, 1 octet):</dt>
        <dd>
          <t>The number of consecutive occurrences of the Current AS Number (CASN) in the AS_PATH attribute that this single FC segment represents. In the normal case, in which an ASN appears once in the AS_PATH attribute, the PC <bcp14>MUST</bcp14> be set to 1. When the issuer AS uses AS Path Prepending and its ASN appears n (n greater than or equal to 2) consecutive times in the AS_PATH attribute <xref target="ASPP"/>, the issuer <bcp14>MUST</bcp14> generate a single FC segment with PC set to n rather than n FC segments. The PC field is covered by the FC segment's signature and <bcp14>MUST</bcp14> match the number of consecutive occurrences of the CASN in the AS_PATH attribute of the same BGP UPDATE message; see <xref target="fcmapping"/> and <xref target="validation-steps"/>.</t>
        </dd>
        <dt>RESERVED:</dt>
        <dd>
          <t>Three octets reserved for future allocation. For the version of the FC segment format defined in this document, the sender <bcp14>MUST</bcp14> set this field to 0. The field is included in the FC Signature Input (<xref target="sig-input"/>), so that any future allocation is covered by the FC segment's signature and cannot be altered without detection. New allocations <bcp14>MUST</bcp14> preserve the 3-octet size of the field; see <xref target="iana-considerations"/>.</t>
        </dd>
        <dt>Signature (variable length):</dt>
        <dd>
          <t>A digital signature, in DER format, computed over the canonical FC Signature Input defined in <xref target="sig-input"/>. The signature is generated with the algorithm suite identified by the Algorithm ID field, using the private key that corresponds to the RPKI router certificate identified by the SKI field. For Algorithm ID 1, the suite is ECDSA over P-256 with SHA-256 <xref target="RFC8208"/>. The Signature Length field is set to the length of the encoded signature; when computing the signature, the value 0 is used for the Signature Length component of the canonical input as specified in <xref target="sig-input"/>.</t>
        </dd>
      </dl>
      <section anchor="sig-input">
        <name>FC Signature Input Construction</name>
        <t>This section defines the canonical serialization of the data that is covered by the signature of an FC segment. The signature <bcp14>MUST</bcp14> be computed over exactly the byte string defined here, so that different implementations produce and verify identical inputs.</t>
        <t>All fields are concatenated in the order listed below, and each integer field is encoded in network byte order (big-endian):</t>
        <artwork><![CDATA[
FC-Signature-Input =
    Domain-Separation       (8 octets)
 || Version                 (1 octet)
 || PASN                    (4 octets)
 || CASN                    (4 octets)
 || NASN                    (4 octets)
 || SKI                     (20 octets)
 || Algorithm ID            (1 octet)
 || Flags                   (1 octet)
 || Canonical Sig Length    (2 octets, always 0)
 || PC                      (1 octet)
 || RESERVED                (3 octets)
 || AFI                     (2 octets)
 || SAFI                    (1 octet)
 || Prefix                  (4 or 16 octets)
 || Prefix Length           (1 octet)
]]></artwork>
        <t>The individual components are defined as follows:</t>
        <dl>
          <dt>Domain-Separation:</dt>
          <dd>
            <t>8 octets containing the ASCII encoding of the string "FC-BGP" followed by two 0x00 octets. The Domain-Separation string prevents a signature computed for FC-BGP from being valid for a different protocol that signs similar data.</t>
          </dd>
          <dt>Version:</dt>
          <dd>
            <t>1 octet, the value of the Version field of the FC segment (<xref target="figure2"/>). The current value is 1. Because the Version value both appears in a positionally fixed field of the FC segment and is covered by the FC segment's signature, a receiver can detect an unknown segment version before cryptographic verification and handle it as 'Unsupported' without treating the segment as authenticated (<xref target="error-matrix"/>), and an on-path attacker cannot change the signer's Version without breaking the signature.</t>
          </dd>
          <dt>PASN, CASN, NASN:</dt>
          <dd>
            <t>The three AS numbers of the FC segment, each encoded as 4 octets as defined in <xref target="figure2"/>.</t>
          </dd>
          <dt>SKI:</dt>
          <dd>
            <t>The Subject Key Identifier of the RPKI router certificate used for verification, encoded as 20 octets as defined in <xref target="figure2"/>.</t>
          </dd>
          <dt>Algorithm ID:</dt>
          <dd>
            <t>1 octet, the value of the Algorithm ID field.</t>
          </dd>
          <dt>Flags:</dt>
          <dd>
            <t>1 octet, the value of the Flags field.</t>
          </dd>
          <dt>Canonical Sig Length:</dt>
          <dd>
            <t>2 octets, fixed to 0. This is the canonical value of the Signature Length field used for signature computation. It is fixed so that the signer does not need to modify the wire-format field to compute the signature, and so that the same signature can be reproduced given the same FC segment content.</t>
          </dd>
          <dt>PC:</dt>
          <dd>
            <t>1 octet, the value of the Prepending Count field.</t>
          </dd>
          <dt>RESERVED:</dt>
          <dd>
            <t>3 octets, the value of the RESERVED field of the FC segment (<xref target="figure2"/>). For the version of the FC segment format defined in this document, the value <bcp14>MUST</bcp14> be 0. Future allocations from the RESERVED field <bcp14>MUST</bcp14> preserve its 3-octet size so that the FC Signature Input defined here remains stable; see <xref target="iana-considerations"/>.</t>
          </dd>
          <dt>AFI and SAFI:</dt>
          <dd>
            <t>The Address Family Identifier (2 octets) and Subsequent Address Family Identifier (1 octet) of the prefix being announced, as carried in the MP_REACH_NLRI attribute <xref target="RFC4760"/>. This document supports only unicast IPv4 (AFI 1, SAFI 1) and unicast IPv6 (AFI 2, SAFI 1). The same prefix announced under a different AFI or SAFI yields a different signature input and therefore a different signature, which prevents signatures from being replayed across address families.</t>
          </dd>
          <dt>Prefix:</dt>
          <dd>
            <t>The network prefix, encoded in network byte order using the full address length: 4 octets for IPv4 and 16 octets for IPv6.</t>
          </dd>
          <dt>Prefix Length:</dt>
          <dd>
            <t>1 octet, the length of the prefix in bits.</t>
          </dd>
        </dl>
        <t>The signature for Algorithm ID 1 is ECDSA over P-256 using SHA-256, as defined in <xref target="RFC8208"/>. The Signature field carries the ECDSA signature in DER format. Only the DER encoding produced by the algorithms of <xref target="RFC8208"/> is considered valid; a signature that is not valid DER <bcp14>MUST</bcp14> cause the FC segment to be handled as specified in <xref target="error-matrix"/>.</t>
        <t>Test vectors for the FC Signature Input are provided in <xref target="test-vectors"/>.</t>
      </section>
    </section>
    <section anchor="fcbgp-update">
      <name>FC-BGP UPDATE Messages</name>
      <section anchor="generation">
        <name>Generation</name>
        <t>This part defines the generation of the FC path attribute and the FC segment. An FC-BGP speaker <bcp14>SHOULD</bcp14> generate a new FC segment or even a new FC path attribute when it propagates a route to its external neighbors. For internal neighbors, the FC path attribute in the BGP UPDATE message remains unchanged.</t>
        <t>Because the FC path attribute carries several variable-length signatures, it <bcp14>SHOULD</bcp14> be placed as the last path attribute in the BGP UPDATE message.</t>
        <t>The FC-BGP speaker follows a specific process to create the FC path attribute for the ongoing UPDATE message. First, it generates a new FC Segment containing the information described below and adds it to the FCList of the outer format defined in <xref target="figure1"/>. If the FC-BGP speaker is not the origin AS and an FC path attribute already exists in the UPDATE message, the speaker <bcp14>MUST</bcp14> prepend the new FC segment to the FCList, in the same way that an AS number is prepended to the AS_PATH attribute. This keeps the FCList ordered in the same direction as the AS_PATH attribute, so that the first FC segment in the FCList corresponds to the first AS number (the most recently prepended ASN) in the AS_PATH; see <xref target="fcmapping"/>. Otherwise, if the speaker is the origin AS, it generates the FC path attribute defined in <xref target="figure1"/> and inserts it into the UPDATE message.</t>
        <t>There are three AS numbers in one FC segment, as <xref target="figure2"/> shows. The populating of the Current AS number (CASN) within the FC segment is like the AS number in BGPsec; it <bcp14>MUST</bcp14> match the AS number in the Subject field of the RPKI router certificate that will be used to verify the FC segment constructed by this FC-BGP speaker (see <xref section="3.1.1" sectionFormat="of" target="RFC8209"/> and <xref target="RFC6487"/>). The Previous AS number (PASN) is typically set to the AS number from which the UPDATE message is received. However, if the FC-BGP speaker is located in the origin AS, the PASN <bcp14>SHOULD</bcp14> be filled with 0. The Nexthop AS number (NASN) is set to the AS number of the peer to whom the route is advertised. So if there are several neighbors, the FC-BGP speaker should generate separate FCs for different neighbors. But it would never generate a new FC segment for the iBGP neighbor.</t>
        <t>The Subject Key Identifier field (SKI) within the new FC segment is populated with the identifier found in the Subject Key Identifier extension of the RPKI router certificate associated with the FC-BGP speaker. This identifier serves as a crucial piece of information for recipients of the route advertisement. It enables them to identify the appropriate certificate to employ when verifying the signatures in FC segments attached to the route advertisement. This practice adheres to the guidelines outlined in <xref target="RFC8209"/>.</t>
        <t>The Version field <bcp14>MUST</bcp14> be set to 1 by an FC-BGP speaker that implements this version of the protocol; see <xref target="iana-considerations"/> and <xref target="algorithms-extensibility"/>. Typically, the Flags field is set to 0 and the PC field is set to 1. The PC field is set to a value greater than 1 only when AS Path Prepending is used, as described below.</t>
        <t>A route server (RS) is a third-party brokering system that interconnects three or more BGP-speaking routers using eBGP in IXPs <xref target="RFC7947"/>. Typically, an RS behaves like a transit AS except that it does not insert its AS number into the AS_PATH attribute. An RS can also participate in FC-BGP. If the RS is FC-enabled, it adds its FC segment with the Flags-RS bit set to 1 when its AS number does not appear in the AS_PATH attribute; when its AS number is inserted into the AS_PATH attribute, the Flags-RS bit <bcp14>MUST</bcp14> be set to 0. A non-FC RS propagates the FC-BGP UPDATE message directly without adding an FC segment. Note that the AS number of an RS is used in the FC segment whether or not it appears in the AS_PATH attribute; how the resulting FC-to-AS_PATH Mapping is established is defined in <xref target="rs-processing"/>.</t>
        <t>Typically, the route server does not insert its ASN into the AS_PATH. Take <xref target="fig-rs-ex"/> as an example, where AS A advertises a BGP UPDATE to AS C and the RS connects AS A and AS B. When the RS supports FC-BGP, AS A adds its FC segment FC(NULL, A, RS), the RS adds FC(A, RS, B) with Flags-RS set to 1, and AS B adds FC(RS, B, C). If the RS does not support FC-BGP, FC(A, RS, B) is missing from the FCList; this is the partial-deployment case for Route Servers, and its treatment is defined in <xref target="rs-processing"/> and <xref target="deployment"/>.</t>
        <figure anchor="fig-rs-ex">
          <name>A network topology with a Router Server linking two ASs.</name>
          <artwork><![CDATA[
+--------+     +--------+     +--------+     +--------+
|  AS A  | --> |   RS   | --> |  AS B  | --> |  AS C  |
+--------+     +--------+     +--------+     +--------+
]]></artwork>
        </figure>
        <t>AS Path Prepending is a traffic-engineering mechanism in BGP in which the local AS number is prepended to the AS_PATH attribute multiple times to deprioritize a route <xref target="ASPP"/>. To minimize the number of signatures, an FC-BGP speaker <bcp14>MUST NOT</bcp14> generate multiple consecutive FC segments whose CASN is the same. Instead, the speaker <bcp14>MUST</bcp14> generate a single FC segment and set the PC field to the number of consecutive occurrences of the CASN in the AS_PATH attribute. For example, if the path segment contributed by the local AS is "65001 65002 65002 65002 65003", the speaker that represents AS 65002 sets PC to 3. The PC value is covered by the FC segment's signature, so a downstream receiver can detect any modification of the number of consecutive occurrences; see <xref target="fcmapping"/> and <xref target="validation-steps"/>.</t>
        <t>The Algorithm ID field for FC-BGP is set to 1. FC-BGP supports the same algorithm suite as BGPsec in this document, as defined in <xref target="RFC8208"/>: the signature algorithm <bcp14>MUST</bcp14> be the Elliptic Curve Digital Signature Algorithm (ECDSA) with curve P-256, and the hash algorithm <bcp14>MUST</bcp14> be SHA-256. Algorithm transitions are governed by <xref target="algorithms-extensibility"/>, and AS number migration is governed by <xref target="asn-processing"/>.</t>
        <t>The Signature Length field is populated with the length, in octets, of the value in the Signature field.</t>
        <t>The Signature field in the new FC segment is a variable-length field. It contains a digital signature in DER format that binds the pathlet identified by the triplet &lt;PASN, CASN, NASN&gt;, together with the PC, the RESERVED field, the SKI, the Algorithm ID, the Flags, and the prefix, to the RPKI router certificate of the FC-BGP speaker. The signature is computed over the canonical FC Signature Input defined in <xref target="sig-input"/>.</t>
        <t>The signatures within the FC segments of an FC-BGP UPDATE message ensure the protection of crucial information, including the AS number of the neighbor involved in the message exchange. This information is explicitly included in the generated FC segment. Consequently, if an FC-BGP speaker intends to transmit an FC-BGP UPDATE message to multiple BGP neighbors, it <bcp14>MUST</bcp14> generate a distinct FC-BGP UPDATE message for each unique neighbor AS to whom the UPDATE message is being sent.</t>
        <t>Indeed, an FC-BGP UPDATE message is <bcp14>REQUIRED</bcp14> to advertise a route to just one prefix. This is because if an FC-BGP speaker receives an UPDATE message containing multiple prefixes, it would be unable to construct a valid FC-BGP UPDATE message, including valid path signatures, with a subset of the received prefixes. To advertise routes to multiple prefixes, the FC-BGP speaker <bcp14>MUST</bcp14> generate individual FC-BGP UPDATE messages for each prefix. This ensures the proper construction of valid path signatures for each advertised prefix.
<!-- TODO: we don't use this rule, though I don't know why BGPsec uses it. Additionally, an FC-BGP UPDATE message MUST use the MP_REACH_NLRI attribute {{RFC4760}} to encode the prefix. -->
        </t>
        <t>All FC-BGP UPDATE messages <bcp14>MUST</bcp14> conform to BGP's maximum message size. If the resulting message exceeds the maximum message size, then the guidelines in <xref section="9.2" sectionFormat="of" target="RFC4271"/> <bcp14>MUST</bcp14> be followed.</t>
      </section>
      <section anchor="propagation">
        <name>Propagation</name>
        <t>Any BGP speaker should propagate the optional transitive FC path attribute encapsulated in the FC-BGP UPDATE message, even though they do not support the FC-BGP feature. However, it is important to note that an FC-BGP speaker <bcp14>SHOULD NOT</bcp14> make any attestation regarding the validation state of the FC-BGP UPDATE message it receives. They <bcp14>MUST</bcp14> verify the FC path attribute themselves.</t>
        <!-- The last part is for iBGP and eBGP. -->
<t>To incorporate or create a new FC segment for an FC-BGP UPDATE message using a specific algorithm suite, the FC-BGP speaker <bcp14>MUST</bcp14> possess an appropriate private key capable of generating signatures for that particular algorithm suite. Moreover, this private key <bcp14>MUST</bcp14> correspond to the public key found in a valid RPKI End Entity (EE) certificate. The AS number resource extension within this certificate should include the FC-BGP speaker's AS number as specified in <xref target="RFC8209"/>. It is worth noting that these new segments are only prepended to an FC-BGP UPDATE message when the FC-BGP speaker generates the UPDATE message for transmission to an external neighbor. In other words, this occurs when the AS number of the neighbor differs from the AS number of the FC-BGP speaker.</t>
        <t>The RPKI allows the legitimate holder of IP address prefix(es) to issue a digitally signed object known as a Route Origin Authorization (ROA). This ROA authorizes a specific AS to originate routes for a particular set of prefixes <xref target="RFC6482"/>. It is anticipated that most Relying Parties (RPs) will combine FC-BGP with origin validation <xref target="RFC6483"/> and <xref target="RFC6811"/>. Therefore, it is strongly <bcp14>RECOMMENDED</bcp14> that an FC-BGP speaker only advertises a route for a given prefix in an FC-BGP UPDATE message if there is a valid ROA that authorizes the FC-BGP speaker's AS to originate routes for that specific prefix.</t>
        <t>If an FC-BGP router receives a non-FC-BGP UPDATE message from an external neighbor, meaning that the origin BGP speaker does not support FC-BGP, the router processes the UPDATE message as a regular BGP UPDATE message typically. In this case, it <bcp14>SHOULD NOT</bcp14> add its own FC segment to the UPDATE message. On the other hand, when the FC-BGP speaker advertises routes belonging to its local AS and receives them from an internal neighbor, it <bcp14>MUST</bcp14> add its FC segment to the UPDATE message if it decides to propagate those routes. Furthermore, if the FC-BGP router receives an FC-BGP UPDATE message from a neighbor for a specific prefix and chooses to propagate that neighbor's route for the prefix, it <bcp14>MUST</bcp14> propagate the route as an FC-BGP UPDATE message containing the FC path attribute.</t>
        <!-- The handling of received AS_SET / AS_CONFED_SET and of route aggregation is defined in {{aggregation}}. -->

<t>When an FC-BGP speaker sends an FC-BGP UPDATE message to an iBGP (internal BGP) neighbor, the process is straightforward. When the FC-BGP speaker originates a new route advertisement and sends it to an iBGP neighbor, it <bcp14>MUST NOT</bcp14> include the FC path attribute of the UPDATE message. In other words, the FC-BGP speaker omits the FC path attribute. Similarly, when an FC-BGP speaker decides to forward an FC-BGP UPDATE message to an iBGP neighbor, it <bcp14>MUST</bcp14> refrain from adding a new FC segment to the FC-BGP UPDATE message.</t>
        <t>When an FC-BGP speaker receives an FC-BGP UPDATE message containing an FC path attribute (with one or more FC segments) from an (internal or external) neighbor, it may choose to propagate the route advertisement by sending it to its other (internal or external) neighbors. When sending the route advertisement to an internal FC-BGP-speaking neighbor, the FC path attribute <bcp14>SHALL NOT</bcp14> be modified. When sending the route advertisement to an external FC-BGP-speaking neighbor, the following procedures are used to form or update the FC path attribute.</t>
      </section>
      <section anchor="ibgp-propagation">
        <name>iBGP Propagation and Validation Semantics</name>
        <t>Within an AS, iBGP is used to convey an FC-BGP route and its validation state from an ingress edge router to an egress edge router. The cryptographic validation of the FC path attribute and its propagation within the AS are distinct concerns; this section defines both, and the conditions under which a validation result remains valid inside an AS.</t>
        <ol spacing="normal" type="1"><li>
            <t>Attribute integrity. The FC path attribute <bcp14>MUST NOT</bcp14> be modified, re-ordered, or deleted when an FC-BGP UPDATE message is propagated over an iBGP session. No FC segment is added over iBGP, and an iBGP speaker <bcp14>MUST NOT</bcp14> re-sign or edit the FC path attribute before propagating it further. In particular, the FC path attribute <bcp14>SHALL NOT</bcp14> be modified when the route is sent to an internal FC-BGP-speaking neighbor (see <xref target="fcbgp-update"/>).</t>
          </li>
          <li>
            <t>Revalidation. An iBGP speaker <bcp14>MUST NOT</bcp14> assume that a route received over iBGP has already been validated unless it can attribute a validation result to the identical FC path attribute, the identical AS_PATH attribute, the identical prefix, and an unchanged RPKI certificate state. An implementation <bcp14>MAY</bcp14> reuse a validation result under those conditions, as described in <xref target="speedup-early-termination"/>; otherwise it <bcp14>MUST</bcp14> re-run the validation of <xref target="validation-steps"/>. A validation result remains valid across multiple internal routers only while the FC path attribute, the AS_PATH attribute, the prefix, and the certificate state are unchanged.</t>
          </li>
          <li>
            <t>Propagation of the validation state. The validation state (<xref target="validation-states"/>) <bcp14>MAY</bcp14> be conveyed to other routers within the AS by a mechanism local to the AS, or each internal router <bcp14>MAY</bcp14> re-run the validation itself; the protocol does not mandate a particular mechanism. A router <bcp14>MUST NOT</bcp14> report a validation state as authoritative for a route over iBGP if it did not itself complete the validation of the FC path attribute, or if the state was computed over inputs that are not known to be identical to the route it is propagating.</t>
          </li>
          <li>
            <t>Route reflectors, confederations, and ordinary iBGP. Route reflectors and ordinary iBGP speakers <bcp14>MUST</bcp14> obey the same rules with respect to the FC path attribute: they <bcp14>MUST NOT</bcp14> modify, re-order, or delete the FC path attribute, and they <bcp14>MUST NOT</bcp14> add FC segments. The treatment of the eBGP sessions between AS Confederation members is defined separately in <xref target="fcbgp-update"/>; the Flags-CS checks of <xref target="validation-steps"/> apply to those sessions.</t>
          </li>
        </ol>
      </section>
      <section anchor="aggregation">
        <name>Route Aggregation and Multi-Prefix UPDATE Messages</name>
        <t>Each FC-BGP UPDATE message announces exactly one route prefix. This is an explicit protocol limitation: because the Prefix and the Prefix Length are covered by the signature of every FC segment (<xref target="sig-input"/>), a single FCList cannot attest to multiple prefixes with different path semantics. An FC-BGP speaker <bcp14>MUST NOT</bcp14> include more than one route prefix in the NLRI of an FC-BGP UPDATE message that carries an FC path attribute. When multiple prefixes are to be announced, the FC-BGP speaker <bcp14>MUST</bcp14> generate a separate FC-BGP UPDATE message for each prefix, each with its own FC path attribute.</t>
        <t>An UPDATE message that carries an FC path attribute and more than one NLRI cannot be bound to a single Prefix and Prefix Length and <bcp14>MUST</bcp14> be handled as malformed per <xref target="error-matrix"/>.</t>
        <t>Route aggregation changes the prefix that is announced. Because the aggregated prefix has a new Prefix and Prefix Length, the existing FC segments cannot be reused for the aggregated route. An FC-BGP speaker that aggregates routes <bcp14>MUST</bcp14> either (a) generate a fresh FC path attribute for the aggregated route in accordance with <xref target="fcbgp-update"/>, or (b) remove the FC path attribute from the aggregated UPDATE message and propagate the route as an ordinary BGP UPDATE message. An FC-BGP speaker <bcp14>MUST NOT</bcp14> merge the FC path attributes of the aggregated UPDATE messages.</t>
        <t>Because FC-BGP does not use AS_SET or AS_CONFED_SET (<xref target="fc-path-attribute"/>), an UPDATE message that contains both an FC path attribute and an AS_SET or AS_CONFED_SET segment in its AS_PATH attribute is malformed and <bcp14>MUST</bcp14> be handled per <xref target="error-matrix"/>. A speaker that receives an UPDATE message containing an AS_SET or AS_CONFED_SET <bcp14>MUST NOT</bcp14> add an FC segment to it. When propagating such a route, the speaker <bcp14>MUST</bcp14> either generate a fresh, valid FC path attribute for a route whose AS_PATH attribute contains only AS_SEQUENCE segments, or propagate the route without the FC path attribute.</t>
      </section>
      <section anchor="processing-instructions-for-as-confederation-members">
        <name>Processing Instructions for AS Confederation Members</name>
        <!-- TODO: need more study.
1. AS-CONFED-SET and AS-CONFED-SEQUENCE
-->

<t>Members of AS Confederation <xref target="RFC5065"/> <bcp14>MUST</bcp14> additionally follow the instructions in this section for processing FC-BGP UPDATE messages.</t>
        <t>When an FC-BGP speaker in an AS confederation receives an FC-BGP UPDATE message from a neighbor that is external to the confederation and chooses to propagate the UPDATE message within the confederation, it first adds an FC segment and the signature signed to its own Member-AS (i.e., the 'Current AS Number' is the FC-BGP speaker's Member-AS Number). In this internally modified UPDATE message, the newly added FC segment contains the public AS number (i.e., Confederation Identifier), and the segment's Confed_Segment flag is set to 1. The newly added signature is generated using a private key corresponding to the public AS number of the confederation. The FC-BGP speaker propagates the modified UPDATE message to its peers within the confederation. (Note: In this document, intra-Member-AS peering is regarded as iBGP, and inter-Member-AS peering is regarded as eBGP. The latter is also known as confederation-eBGP.)</t>
        <t>Within a confederation, the verification of FC-BGP signatures added by other members of the confederation is optional. Note that if a confederation chooses not to verify digital signatures within the confederation, then FC-BGP is not able to provide any assurances about the integrity of the Member-AS Numbers placed in FC segments where the Confed_Segment flag is set to 1.</t>
        <t>When a confederation member receives an FC-BGP UPDATE message from a peer within the confederation and propagates it to a peer outside the confederation, it needs to remove all of the FC segments added by confederation members when it removes all path segments of the AS_PATH with the type of AS_CONFED_SEQUENCE or AS_CONFED_SET. To do this, the confederation members propagated the route outside the confederation as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Starting with the most recently added FC segment, remove FC segments whose Flags-CS bit is 1. Stop this process once an FC segment that has its Confed_Segment flags set to 0 is reached.</t>
          </li>
          <li>
            <t>Add an FC segment containing, in the CASN field, the AS Confederation Identifier (the public AS number of the confederation).  Note that all fields other than the CASN field are populated.</t>
          </li>
        </ol>
        <t>Finally, as discussed above, an AS confederation <bcp14>MAY</bcp14> optionally decide that its members will not verify digital signatures added by members. In such a confederation, when an FC-BGP speaker runs the algorithm in <xref target="validation-steps"/>, the FC-BGP speaker, during the process of signature verifications, first checks whether the Confed_Segment flag in an FC segment is set to 1. If the flag is set to 1, the FC-BGP speaker skips verification for the corresponding signature and proceeds immediately to the next FC segment. It is an error when an FC-BGP speaker receives, from a neighbor who is not in the same AS confederation, an FC-BGP UPDATE message containing a Confed_Segment flag set to 1.</t>
      </section>
      <section anchor="route-leak">
        <name>Processing Instructions for BGP Route Leak Prevention</name>
        <t>The BGP routing system is susceptible to numerous vulnerabilities. The systemic vulnerability of the BGP routing system is known as "route leaks" <xref target="RFC7908"/>. There are 6 types of route leaks defined in <xref target="RFC7908"/>.</t>
        <t><xref target="RFC9234"/> can detect and prevent BGP route leaks by adding a new BGP OPEN Role capability and OTC transitive path attribute. However, it may be forged.</t>
        <t>When using BGP route leak prevention with FC-BGP, it <bcp14>SHOULD</bcp14> tell the neighbor its BGP Role as <xref section="4" sectionFormat="of" target="RFC9234"/>. If the peer's role is Customer or RS-Client, the Flags-P2C <bcp14>MUST</bcp14> be set to 1 on route advertisement. If the peer's role is peer, the Flags-P2P <bcp14>MUST</bcp14> be set to 1 on the route advertisement. Then, the route <bcp14>SHOULD</bcp14> subsequently go only to the Customers. It is worth noting that if the recently added FC Segment already set the Flags-P2C or Flags-P2P flags to 1, it <bcp14>MUST NOT</bcp14> be propagated to Providers, Peers, or RSes.</t>
      </section>
    </section>
    <section anchor="rs-processing">
      <name>Route Server Processing</name>
      <t>A route server (RS) is a third-party brokering system that interconnects three or more BGP-speaking routers using eBGP at an Internet exchange point <xref target="RFC7947"/>. Unlike a transit AS, a route server typically does not insert its AS number into the AS_PATH attribute. This section defines the FC semantics in this case and how they relate to <xref target="fcmapping"/>.</t>
      <section anchor="as-numbers-that-do-not-appear-in-the-aspath">
        <name>AS Numbers That Do Not Appear in the AS_PATH</name>
        <t>The AS number of a route server can appear in an FC segment (as the Current AS Number) without appearing in the AS_PATH attribute. The following four combinations <bcp14>MUST</bcp14> be distinguished:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Case</th>
              <th align="left">FC segment</th>
              <th align="left">Flags-RS</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Ordinary AS whose ASN appears in the AS_PATH attribute</td>
              <td align="left">Normal FC segment, CASN is the ASN</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Route server whose ASN does NOT appear in the AS_PATH attribute</td>
              <td align="left">FC segment with CASN equal to the RS's ASN</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">Route server whose ASN IS inserted into the AS_PATH attribute</td>
              <td align="left">Normal FC segment, CASN is the RS's ASN</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Ordinary AS whose ASN does not appear in the AS_PATH attribute (e.g., a transparent RS configured as such)</td>
              <td align="left">FC segment with Flags-RS set to 1</td>
              <td align="left">1</td>
            </tr>
          </tbody>
        </table>
        <t>When the Flags-RS bit is set to 1, the FC segment does not consume any path node in the FC-to-AS_PATH Mapping (<xref target="fcmapping"/>); it bridges the two data-path hops that are adjacent in the AS_PATH attribute. The identity of the route server is authenticated by its RPKI router certificate, exactly as for any other AS.</t>
      </section>
      <section anchor="route-server-neighbor-adjacency">
        <name>Route Server Neighbor Adjacency</name>
        <t>For the FC segment added by a route server with Flags-RS set to 1:</t>
        <ul spacing="normal">
          <li>
            <t>the Previous AS Number <bcp14>MUST</bcp14> be the AS number of the upstream sender (the AS from which the route server received the UPDATE message);</t>
          </li>
          <li>
            <t>the Nexthop AS Number <bcp14>MUST</bcp14> be the AS number of the downstream receiver (the AS to which the route server sends the UPDATE message);</t>
          </li>
          <li>
            <t>the Previous and Nexthop AS numbers <bcp14>MUST</bcp14> be adjacent in the AS_PATH attribute in the sense of <xref target="fcmapping"/> (the data-path hops that the route server bridges are exactly two consecutive path-node groups, or the receiver and the first path node).</t>
          </li>
        </ul>
        <t>When multiple customers share the same route server, each propagation leg is a separate data-path hop. A route server that is FC-enabled <bcp14>MUST</bcp14> generate a separate FC segment for each (upstream, downstream) pair, just as any FC-BGP speaker generates a distinct FC segment for each unique next hop (see <xref target="fcbgp-update"/>). The FC segments of different customers are therefore kept distinct by their PASN and NASN fields, and the Flags-RS bit does not by itself distinguish one customer from another.</t>
      </section>
      <section anchor="non-fc-route-server">
        <name>Non-FC Route Server</name>
        <t>A route server that does not support FC-BGP propagates the FC-BGP UPDATE message without adding an FC segment (see <xref target="fcbgp-update"/>). A downstream receiver then observes a gap in the FCList where the route server's FC segment would be. Whether this is expected behavior or the result of the FC segment being deleted is determined by the FC-required determination of <xref target="deployment"/>:</t>
        <ul spacing="normal">
          <li>
            <t>If the route server is not FC-required for the propagation leg (e.g., it has no valid router certificate, or it is not FC-enabled), the absence is expected and the FC coverage is 'Incomplete' (<xref target="validation-states"/>).</t>
          </li>
          <li>
            <t>If the route server is FC-required for the leg but its FC segment is absent, the FC-to-AS_PATH Mapping cannot be completed, and the UPDATE message is 'Invalid' per <xref target="error-matrix"/>.</t>
          </li>
        </ul>
        <t>Note that because a route server does not appear in the AS_PATH attribute, the receiver <bcp14>MUST NOT</bcp14> require an FC segment for the route server unless it can independently establish, per <xref target="deployment"/>, that the route server was FC-required for the leg. The Flags-RS bit alone does not create such a requirement.</t>
      </section>
    </section>
    <section anchor="fcmapping">
      <name>The FC-to-AS_PATH Mapping</name>
      <t>The FCList and the AS_PATH attribute of an FC-BGP UPDATE message use the SAME order. In generation, the FC-BGP speaker prepends its new FC segment to the front of the FCList in the same way that it prepends its AS number to the front of the AS_PATH attribute (see <xref target="fcbgp-update"/>). Therefore:</t>
      <ul spacing="normal">
        <li>
          <t>the first FC segment in the FCList corresponds to the first AS number in the AS_PATH attribute (the AS number most recently prepended, i.e., the one closest to the receiver);</t>
        </li>
        <li>
          <t>the last FC segment in the FCList corresponds to the last AS number in the AS_PATH attribute that is covered by the FCList (nearest the origin);</t>
        </li>
        <li>
          <t>validation walks the FCList from front to back while walking the AS_PATH attribute from front to back, i.e., from the receiver toward the origin.</t>
        </li>
      </ul>
      <t>The FC-to-AS_PATH Mapping is the deterministic correspondence between the FC segments in an FCList and the AS numbers in the AS_PATH attribute of the same FC-BGP UPDATE message. Given the same AS_PATH attribute, FCList, and certificate state, different implementations <bcp14>MUST</bcp14> obtain the same mapping and the same validation result.</t>
      <t>FC-BGP requires that the AS_PATH attribute of an FC-BGP UPDATE message contain only AS_SEQUENCE segments; AS_SET and AS_CONFED_SET are not used (see <xref target="fcbgp-update"/>). For this section, the "path nodes" of an UPDATE message are the AS numbers obtained by concatenating the AS_SEQUENCE segments of the AS_PATH attribute in the order in which they appear, from the front (closest to the receiver) to the back (closest to the origin). Let P = [p0, p1, ..., p(m-1)] denote this sequence, where p0 is closest to the receiver and p(m-1) is the origin. Let F = [f0, f1, ..., f(k-1)] denote the FC segments of the FCList in the order in which they appear on the wire, where f0 is the most recently added FC segment.</t>
      <t>The FC-to-AS_PATH Mapping holds for a pair (P, F) if and only if all of the following properties hold.</t>
      <section anchor="direction-and-ordering">
        <name>Direction and Ordering</name>
        <t>For any two FC segments f(i) and f(j) with i &lt; j, the path nodes covered by f(i) <bcp14>MUST</bcp14> all be closer to the receiver than the path nodes covered by f(j). The FCList is never in the reverse order of the AS_PATH attribute. An FC segment that is out of order, or an FC segment whose group overlaps the group of another FC segment, is a Mapping failure.</t>
      </section>
      <section anchor="data-path-adjacency">
        <name>Data-Path Adjacency</name>
        <t>The FC segments describe a chain of data-path hops, each of which is a three-hop pathlet &lt;PASN, CASN, NASN&gt;. Consecutive FC segments <bcp14>MUST</bcp14> be adjacent in this chain, where f(j) denotes the FC segment at wire position j, f(0) being the most recently added FC segment:</t>
        <ul spacing="normal">
          <li>
            <t>For each j in [0, k-2], the Previous AS Number of f(j) <bcp14>MUST</bcp14> equal the Current AS Number of f(j+1): the issuer of f(j) received the UPDATE message from the issuer of f(j+1).</t>
          </li>
          <li>
            <t>For each j in [1, k-1], the Nexthop AS Number of f(j) <bcp14>MUST</bcp14> equal the Current AS Number of f(j-1): the issuer of f(j) sent the UPDATE message to the issuer of f(j-1).</t>
          </li>
          <li>
            <t>The Nexthop AS Number of f(0) <bcp14>MUST</bcp14> equal the AS number of the local FC-BGP speaker that validates the message; this is the receiver boundary (see below).</t>
          </li>
        </ul>
        <t>A violation of either adjacency rule is a Mapping failure. These two rules are the two directions of the same adjacency requirement; both <bcp14>MUST</bcp14> be checked so that a broken or spliced chain is detected.</t>
      </section>
      <section anchor="receiver-and-origin-boundaries">
        <name>Receiver and Origin Boundaries</name>
        <ul spacing="normal">
          <li>
            <t>The Nexthop AS Number of f0 <bcp14>MUST</bcp14> equal the AS number of the local FC-BGP speaker that validates the message (the AS number announced in the BGP OPEN of the session over which the UPDATE message was received); see <xref target="sec-three-asn"/>.</t>
          </li>
          <li>
            <t>The Previous AS Number of the FC segment whose group includes the origin path node <bcp14>MUST</bcp14> be 0 (AS 0), because there is no previous hop <xref target="sec-three-asn"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="coverage-of-path-nodes">
        <name>Coverage of Path Nodes</name>
        <t>Each path node is covered by at most one FC segment. A compliant implementation <bcp14>MUST</bcp14> construct the mapping by processing F in wire order while walking P from front to back, as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Set a cursor i over P to 0 and an index j over F to 0.</t>
          </li>
          <li>
            <t>While j &lt; k:  </t>
            <t>
a. If the Flags-RS bit of f(j) is 0 (a normal FC segment), let n be the Prepending Count (PC) of f(j). This FC segment <bcp14>MUST</bcp14> cover n consecutive path nodes starting at i:
   - If i + n is greater than m, or if i + n exceeds the end of P, the Mapping fails.
   - Every path node p(i) ... p(i+n-1) <bcp14>MUST</bcp14> equal the Current AS Number of f(j); otherwise the Mapping fails.
   - If two consecutive normal FC segments have the same Current AS Number (which is a non-canonical encoding, because they <bcp14>MUST</bcp14> have been merged into a single FC segment with PC greater than 1 per <xref target="fcbgp-update"/>), the Mapping fails.
   - Mark the nodes covered by f(j) and set i := i + n.  </t>
            <t>
b. If the Flags-RS bit of f(j) is 1 (an FC segment of a route server), the FC segment does not consume any path node; the route server's AS number does not appear in the AS_PATH attribute. This FC segment bridges two path-node groups (or, when the route server is the immediate neighbor, the receiver and the first path node):
   - If i is 0, then the Previous AS Number of f(j) <bcp14>MUST</bcp14> equal p0 and the Nexthop AS Number of f(j) <bcp14>MUST</bcp14> equal the AS number of the local FC-BGP speaker.
   - Otherwise, the Previous AS Number of f(j) <bcp14>MUST</bcp14> equal p(i) and the Nexthop AS Number of f(j) <bcp14>MUST</bcp14> equal p(i-1).
   - Any violation is a Mapping failure. No node is consumed.</t>
          </li>
          <li>
            <t>After processing all FC segments:
            </t>
            <ul spacing="normal">
              <li>
                <t>If i is equal to m (every path node is covered) and every path node whose AS is FC-required (<xref target="deployment"/>) was covered by a normal FC segment, the Mapping is complete.</t>
              </li>
              <li>
                <t>If i is less than m, the uncovered path nodes are the origin-ward tail of the path. If every uncovered path node is not FC-required (<xref target="deployment"/>), the Mapping is complete with respect to the FC coverage, and the FC coverage is partial. If any uncovered path node is FC-required, the corresponding FC segment is missing and the Mapping fails.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>Any Mapping failure is a protocol violation. It is handled as 'Invalid' per <xref target="error-matrix"/> and <bcp14>MUST NOT</bcp14> be downgraded to a mere missing-FC case.</t>
      </section>
      <section anchor="repeated-current-as-numbers">
        <name>Repeated Current AS Numbers</name>
        <t>The handling of repeated Current AS Numbers is fully determined by the PC field and the rules above:</t>
        <ul spacing="normal">
          <li>
            <t>Consecutive occurrences of the same AS number in the AS_PATH attribute (AS Path Prepending, <xref target="ASPP"/>) are expressed by a single FC segment whose PC equals the number of consecutive occurrences. The PC is covered by the FC segment's signature (<xref target="sig-input"/>) and <bcp14>MUST</bcp14> equal the number of consecutive occurrences, which is verified by the coverage walk above. A malicious change of the number of consecutive occurrences therefore either breaks the signature (if the PC is changed) or breaks the coverage walk (if consecutive occurrences are inserted or removed).</t>
          </li>
          <li>
            <t>Two consecutive normal FC segments with the same Current AS Number are a non-canonical encoding and are a Mapping failure.</t>
          </li>
          <li>
            <t>Non-consecutive occurrences of the same AS number in the FCList are a Mapping failure: a well-formed BGP path contains an AS number at most once (loop prevention, <xref target="RFC4271"/>), so a repeated CASN indicates an invalid AS_PATH attribute or a misplaced or replayed FC segment.</t>
          </li>
        </ul>
      </section>
      <section anchor="treatment-on-generation">
        <name>Treatment on Generation</name>
        <t>On generation, an FC-BGP speaker constructs the FCList so that the FC-to-AS_PATH Mapping holds by construction: it prepends each new FC segment to the front of the FCList in the same order in which the corresponding AS number is prepended to the AS_PATH attribute, and it sets the PASN, CASN, NASN, and PC fields according to the rules above (see <xref target="fcbgp-update"/>).</t>
      </section>
    </section>
    <section anchor="processing-a-received-fc-bgp-update-message">
      <name>Processing a Received FC-BGP UPDATE Message</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>When receiving an FC-BGP UPDATE message from an external BGP neighbor carrying the FC path attribute, an FC-BGP speaker <bcp14>SHOULD</bcp14> first validate the message to determine the authenticity of the path information. Same as BGPsec, an FC-BGP speaker will wish to perform origin validation (see <xref target="RFC6483"/> and <xref target="RFC6811"/>) on an incoming FC-BGP UPDATE message, but such validation is independent of the validation described in this section.</t>
        <t>After the validation, the FC-BGP speaker may want to send the FC-BGP UPDATE message to neighbors according to local route policies. Then it <bcp14>SHOULD</bcp14> update the FC path attributes and continue advertising the BGP route.</t>
        <t>For the origin AS that launches the advertisement, the FC-BGP speaker only needs to generate the FC-BGP UPDATE message without the validation.</t>
        <t>The FC-BGP speaker stores the router certificates in the RPKI repository, and any changes in the RPKI state can impact the validity of the UPDATE messages. That means the validity of FC-BGP UPDATE messages relies on the current state of the RPKI repository. When an FC-BGP speaker becomes aware of a change in the RPKI state, such as through an RPKI validating cache using the RTR protocol (as specified in <xref target="RFC8210"/>), it is <bcp14>REQUIRED</bcp14> to rerun validation on all affected UPDATE messages stored in its Adj-RIB-In <xref target="RFC4271"/>. For instance, if a specific RPKI router certificate becomes invalid due to expiration or revocation, all FC-BGP UPDATE messages containing an FC segment with an SKI matching the SKI in the affected certificate must be reassessed to determine their current validity. If the reassessment reveals a change in the validity state of an UPDATE message, the FC-BGP speaker, depending on its local policy, <bcp14>SHOULD</bcp14> rerun the best path selection process. This allows for the appropriate handling of the updated information and ensures that the most valid and suitable paths are chosen for routing purposes.</t>
      </section>
      <section anchor="Validation">
        <name>Validation</name>
        <t>When verifying the authenticity of an FC-BGP UPDATE message, information from the RPKI router certificates is utilized. The RPKI router certificates provide the data, including the triplet &lt;AS Number, Public Key, Subject Key Identifier&gt;, to verify the AS_PATH and FC path attributes. As a prerequisite, the recipient <bcp14>MUST</bcp14> have access to these RPKI router certificates.</t>
        <!-- Jeffery: The FC state can be removed from BGP without detection in the current procedure. RPKI RPKI-registered policy could address the validation case. -->
<t>Note that the existence of a valid RPKI router certificate for an AS makes that AS FC-capable; it does not, by itself, make the AS FC-enabled on a particular BGP session or FC-required for a particular route (see <xref target="deployment"/>). Whether the absence of an FC segment is a protocol violation is determined by the FC-required determination of <xref target="deployment"/>, and the resulting handling is defined in <xref target="fcmapping"/> and <xref target="error-matrix"/>. The validation process <bcp14>MUST</bcp14> ensure that a malicious on-path AS cannot remove FC segments without detection when the corresponding AS is FC-required.</t>
        <!-- TODO: this is the original BGPsec description, except replacing BGPsec with FC-BGP. Anything to update? -->
<t>Note that the FC-BGP speaker could perform the validation of RPKI router certificates on its own and extract the required data, or it could receive the same data from a trusted cache that performs RPKI validation on behalf of (some set of) FC-BGP speakers. (For example, the trusted cache could deliver the necessary validity information to the FC-BGP speaker by using the Router Key PDU (Protocol Data Unit) for the RPKI-Router protocol <xref target="RFC8210"/>.)</t>
        <!-- TODO: If it is reasonable to separate the validation steps and the description. It seems that here is the overview, but {{validation-steps}} describes the validation steps. -->
<t>The recipient validates an FC-BGP UPDATE message containing the FC path attribute and obtains exactly one of the validation states defined in <xref target="validation-states"/>: 'Valid', 'Invalid', 'Not Validated', 'Unsupported', or 'Incomplete'. We will describe the validation procedure in <xref target="validation-steps"/> in this document. The validation result will be used at BGP route selection, thus it will be discussed at <xref target="BGP-route-selection"/>.</t>
        <t>As the FC-BGP UPDATE message is generated at the eBGP router, the FC-BGP validation needs only to be performed at the eBGP router. The iBGP route plays a crucial role in the FC-BGP UPDATE message propagation and distribution. The function of iBGP is to convey the validation status of an FC-BGP UPDATE message from an ingress edge router to an egress edge router within an AS. The specific mechanisms used to convey the validation status can vary depending on the implementation and local policies of the AS. By propagating this information through iBGP, the eBGP router and other routers within the AS can be aware of the validation status of the FC-BGP UPDATE messages and make routing decisions accordingly. As stated in <xref target="fcbgp-update"/>, when an FC-BGP speaker decides to forward a syntactically correct FC-BGP UPDATE message, it is <bcp14>RECOMMENDED</bcp14> to do so while preserving the FC path attribute. This recommendation applies regardless of the validation state of the UPDATE message.</t>
        <t>Ultimately, the decision to forward the FC-BGP UPDATE message with the FC path intact and the choice to perform independent validation at the egress router are both determined by local policies implemented within the AS. Note that the decision to perform validation on the received FC-BGP UPDATE message is left to the discretion of the egress router, which is the router receiving the message within its own AS. The egress router has the freedom to choose whether or not it wants to independently validate the FC path attribute based on its local policy, even if the FC path attribute has already been validated by the ingress router. This additional validation performed at the egress router helps ensure the integrity and security of the received FC-BGP UPDATE message.</t>
        <t>The rules governing whether an iBGP speaker may modify or delete the FC path attribute, whether validation <bcp14>MUST</bcp14> be re-run, how the validation state is conveyed within an AS, and how route reflectors and confederation member speakers behave, are defined uniformly in <xref target="ibgp-propagation"/>.</t>
        <section anchor="validation-states">
          <name>Validation States</name>
          <t>The validation of an FC-BGP UPDATE message produces exactly one of the following states. A state is an output of the protocol; it is deliberately decoupled from route policy, which is the responsibility of the operator (see <xref target="BGP-route-selection"/>).</t>
          <table>
            <thead>
              <tr>
                <th align="left">State</th>
                <th align="left">Meaning</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">'Valid'</td>
                <td align="left">All applicable protocol checks, including the FC-to-AS_PATH Mapping (<xref target="fcmapping"/>) and all signature verifications, have passed, and the FC coverage (<xref target="deployment"/>) is complete.</td>
              </tr>
              <tr>
                <td align="left">'Invalid'</td>
                <td align="left">A protocol violation, an FC-to-AS_PATH Mapping failure, or a cryptographic verification failure has been detected.</td>
              </tr>
              <tr>
                <td align="left">'Not Validated'</td>
                <td align="left">Validation has been started but has not yet finished (for example, because it has been deferred, see <xref target="deferring-validation"/>). It is an internal processing state, not a security statement, and it <bcp14>MUST NOT</bcp14> be reported as if validation had produced a definitive result.</td>
              </tr>
              <tr>
                <td align="left">'Unsupported'</td>
                <td align="left">The UPDATE message contains an algorithm or a protocol feature that the FC-BGP speaker cannot process, and no other failure has been detected. It is not 'Invalid'.</td>
              </tr>
              <tr>
                <td align="left">'Incomplete'</td>
                <td align="left">The FC coverage is partial: at least one AS on the AS_PATH attribute is not FC-required and therefore has no FC segment, while every FC segment that is present is valid. 'Incomplete' does not imply that the authenticated portion is invalid.</td>
              </tr>
            </tbody>
          </table>
          <t>The dominance relationship among the states is strict: 'Invalid' dominates all others; 'Unsupported' dominates 'Incomplete'; 'Incomplete' dominates 'Valid'. 'Not Validated' is only a pre-completion state and must not be stored as a final result.</t>
          <t>The protocol defines the following behavior for each state. Whether a route in a given state is admitted to the candidate route set or becomes the best path is a matter of local policy under <xref target="BGP-route-selection"/>; the protocol only requires that the state be available to the route selection process and that the validation result be conveyable within the AS as described in <xref target="fcbgp-update"/>.</t>
          <table>
            <thead>
              <tr>
                <th align="left">State</th>
                <th align="left">Required and permitted route-selection behavior</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">'Valid'</td>
                <td align="left">
                  <bcp14>MAY</bcp14> be considered a candidate and <bcp14>MAY</bcp14> become the best path.</td>
              </tr>
              <tr>
                <td align="left">'Invalid'</td>
                <td align="left">
                  <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid. It <bcp14>MAY</bcp14> still be used by local policy (for example, if it is also propagated without an FC path attribute), but the state <bcp14>MUST</bcp14> remain visible as 'Invalid'.</td>
              </tr>
              <tr>
                <td align="left">'Not Validated'</td>
                <td align="left">
                  <bcp14>MAY</bcp14> be treated as an ordinary BGP route by local policy while validation is pending, but <bcp14>MUST NOT</bcp14> be reported as validated.</td>
              </tr>
              <tr>
                <td align="left">'Unsupported'</td>
                <td align="left">
                  <bcp14>MUST NOT</bcp14> be silently reclassified as 'Valid' or as an ordinary unsigned route merely because an algorithm or feature is unsupported; local policy decides its fate.</td>
              </tr>
              <tr>
                <td align="left">'Incomplete'</td>
                <td align="left">
                  <bcp14>MAY</bcp14> be used, with the understanding that only the authenticated portion of the path is guaranteed.</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="error-matrix">
          <name>Error Handling</name>
          <t>This section specifies how the different kinds of failures that can occur while processing an FC-BGP UPDATE message are handled. It distinguishes:</t>
          <ul spacing="normal">
            <li>
              <t>errors in the encoding of the UPDATE message or of the FC path attribute, which are handled following RFC 7606 <xref target="RFC7606"/>;</t>
            </li>
            <li>
              <t>failures of the security semantics, which produce the validation states defined in <xref target="validation-states"/>; and</t>
            </li>
            <li>
              <t>the absence of FC segments, which is governed by the deployment semantics of <xref target="deployment"/>.</t>
            </li>
          </ul>
          <t>In particular, a cryptographic verification failure <bcp14>MUST NOT</bcp14> be treated as an UPDATE syntax error, and an FC-to-AS_PATH Mapping failure <bcp14>MUST NOT</bcp14> be treated as a mere missing FC.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Error type</th>
                <th align="left">Examples</th>
                <th align="left">Protocol handling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Attribute structure damaged</td>
                <td align="left">FC path attribute flags/type/length inconsistent; FCList Length not matching the content; an FC segment shorter than the fixed fields</td>
                <td align="left">Follow RFC 7606 <xref target="RFC7606"/>: handle the attribute as malformed (e.g., treat-as-withdraw) and do not continue to parse it.</td>
              </tr>
              <tr>
                <td align="left">Length or field encoding illegal</td>
                <td align="left">Signature Length inconsistent with the Signature field; reserved Flags bits set to 1; a PC value that cannot be represented or that would exceed the FCList limits</td>
                <td align="left">Follow RFC 7606 <xref target="RFC7606"/> as a malformed attribute.</td>
              </tr>
              <tr>
                <td align="left">Signature verification failure</td>
                <td align="left">A signature does not verify under the identified certificate; a signature that is not valid DER</td>
                <td align="left">The FC segment is marked 'Invalid'; the UPDATE message becomes 'Invalid' per <xref target="validation-states"/>. Not an UPDATE syntax error.</td>
              </tr>
              <tr>
                <td align="left">FC-to-AS_PATH Mapping failure</td>
                <td align="left">FCList order reversed; triplet not data-path adjacent; PC not equal to the number of consecutive occurrences; two consecutive normal FCs with the same CASN; a non-consecutive repeated CASN</td>
                <td align="left">'Invalid' per <xref target="validation-states"/>. Not a mere missing FC.</td>
              </tr>
              <tr>
                <td align="left">Missing FC</td>
                <td align="left">An FC-required (<xref target="deployment"/>) AS has no corresponding FC segment</td>
                <td align="left">If the AS is FC-required, the Mapping cannot be completed and the UPDATE message is 'Invalid'. If the AS is not FC-required, there is no violation and the coverage is 'Incomplete' (partial deployment).</td>
              </tr>
              <tr>
                <td align="left">Unsupported algorithm</td>
                <td align="left">An Algorithm ID that is not recognized; an unknown FC segment Version field</td>
                <td align="left">The affected FC segment(s) are not cryptographically verified. If no other failure is detected, the UPDATE message is 'Unsupported' per <xref target="validation-states"/>. It <bcp14>MUST NOT</bcp14> be silently downgraded to an ordinary unsigned BGP route.</td>
              </tr>
              <tr>
                <td align="left">Certificate missing or invalid</td>
                <td align="left">No valid RPKI router certificate for the CASN; the certificate is revoked or expired; the SKI is not found</td>
                <td align="left">An FC segment whose verifying certificate cannot be found or is invalid cannot be verified. If the certificate state is definitive (absent, revoked, or expired), the FC segment is marked 'Invalid'. If the certificate state is only temporarily unknown (e.g., RPKI data not yet synchronized), validation may be deferred to 'Not Validated' per local policy; see <xref target="deployment"/> and <xref target="Validation"/>.</td>
              </tr>
              <tr>
                <td align="left">RPKI state change</td>
                <td align="left">A certificate used by FC segments becomes revoked or expires, is replaced, or a new certificate appears</td>
                <td align="left">Revalidation of the affected UPDATE messages is triggered as specified in <xref target="Validation"/>; the state of the affected FC segments is reevaluated.</td>
              </tr>
            </tbody>
          </table>
          <t>All limits on the size of the FC path attribute, the FCList, and the FC segments are defined in <xref target="fc-path-attribute"/>; exceeding them is handled as a malformed attribute per this section.</t>
        </section>
        <section anchor="validation-steps">
          <name>Validation Algorithm</name>
          <t>This section specifies the concrete validation algorithm of FC-BGP UPDATE messages. A compliant implementation <bcp14>MUST</bcp14> have an FC-BGP UPDATE validation algorithm that behaves the same as the specified algorithm. This ensures consistency and security in validating FC-BGP UPDATE messages across different implementations and allows for interoperability between FC-BGP-enabled networks.</t>
          <t>The validation of an FC-BGP UPDATE message proceeds in three phases:</t>
          <ol spacing="normal" type="1"><li>
              <t>syntax checking, in which the structure of the FC path attribute is verified and structural errors are handled per <xref target="error-matrix"/> using the RFC 7606 <xref target="RFC7606"/> procedures;</t>
            </li>
            <li>
              <t>FC-to-AS_PATH Mapping construction, in which the correspondence defined in <xref target="fcmapping"/> is constructed and verified;</t>
            </li>
            <li>
              <t>signature validation, in which each FC segment is verified cryptographically.</t>
            </li>
          </ol>
          <t>The result of validation is one of the states defined in <xref target="validation-states"/>: 'Valid', 'Invalid', 'Not Validated', 'Unsupported', or 'Incomplete'. Which state a given failure produces is defined by <xref target="error-matrix"/>.</t>
          <t>First, the integrity of the FC-BGP UPDATE message <bcp14>MUST</bcp14> be checked. Both syntactical and protocol violation errors are checked. The FC path attribute <bcp14>MUST</bcp14> be present when an FC-BGP UPDATE message is received from an external FC-BGP neighbor and also when such an UPDATE message is propagated to an internal FC-BGP neighbor. The error checks specified in <xref section="6.3" sectionFormat="of" target="RFC4271"/> are performed, except that for FC-BGP UPDATE messages the checks on the FC path attribute do not apply, and the following checks on the FC path attribute are performed instead:</t>
          <ol spacing="normal" type="1"><li>
              <t>Check that the FC path attribute is syntactically correct, including the length limits defined in <xref target="fc-path-attribute"/>. A structural error is handled per <xref target="error-matrix"/> (RFC 7606 <xref target="RFC7606"/>).</t>
            </li>
            <li>
              <t>Construct the FC-to-AS_PATH Mapping of <xref target="fcmapping"/>. If the Mapping cannot be constructed (an order violation, a data-path adjacency violation, a receiver or origin boundary violation, a PC mismatch, a non-canonical or non-consecutive repeated CASN, or a missing FC segment for an FC-required AS per <xref target="deployment"/>), the check fails and the UPDATE message is marked 'Invalid' per <xref target="error-matrix"/>. A Mapping failure is a protocol violation and <bcp14>MUST NOT</bcp14> be downgraded to a mere absence.</t>
            </li>
            <li>
              <t>If the UPDATE message was received from an FC-BGP neighbor that is not a member of the FC-BGP speaker's AS confederation, check to ensure that none of the FC segments contain a Flags field with the Confed_Segment flag set to 1. <!-- TODO: need more study of AS confederation -->
              </t>
            </li>
            <li>
              <t>If the UPDATE message was received from an FC-BGP neighbor that is a member of the FC-BGP speaker's AS confederation, check to ensure that the FC segment corresponding to that peer contains a Flags field with the Flags-CS flag set to 1. See <xref target="fcbgp-update"/>.</t>
            </li>
            <li>
              <t>If the UPDATE message was received from a neighbor that is not expected to set the Flags-RS bit to 1 (see <xref target="rs-processing"/>), check to ensure that the Flags-RS bit in the most recently added FC segment is equal to 0.</t>
            </li>
            <li>
              <t>If the UPDATE message was received from a neighbor that is expected to set the Flags-RS bit to 1 (see <xref target="rs-processing"/>), check to ensure that the Flags-RS bit in the most recently added FC segment is equal to 1.</t>
            </li>
            <li>
              <t>If the UPDATE message was received from a neighbor that is not expected to set the Flags-P2C bit or the Flags-P2P bit to 1 (see <xref target="route-leak"/>), check to ensure that the Flags-P2C bit and the Flags-P2P bit in the most recently added FC segment are both equal to 0.</t>
            </li>
            <li>
              <t>If the UPDATE message was received from a neighbor that is expected to set the Flags-P2C bit or the Flags-P2P bit to 1 (see <xref target="route-leak"/>), check to ensure that the corresponding flag in the most recently added FC segment is equal to 1.</t>
            </li>
          </ol>
          <t>If any of the checks for the FC path attribute fail because of a structural or encoding error, the FC-BGP speaker <bcp14>MUST</bcp14> handle the FC path attribute as a malformed attribute following <xref target="RFC7606"/>, as specified in <xref target="error-matrix"/>. Failures that are protocol violations or security failures, such as a Mapping failure or a failed signature, are NOT UPDATE syntax errors: they produce the validation states defined in <xref target="error-matrix"/> and <bcp14>MUST NOT</bcp14> be collapsed into "treat-as-withdraw" as if the UPDATE message were malformed.</t>
          <t>When an AS appears on the AS_PATH attribute and is FC-required for the UPDATE message per <xref target="deployment"/>, it <bcp14>MUST</bcp14> have an FC segment in the FC path attribute. The absence of such an FC segment is detected by the Mapping construction in check 2 above and is handled as 'Invalid' per <xref target="error-matrix"/>.</t>
          <t>Then, the FC-BGP speaker iterates through the FC segments and validates the signatures. If the FC-BGP speaker encounters a signature corresponding to an algorithm suite indexed by an Algorithm ID that it does not support, that signature is not considered in the validation process for that FC segment. After completing the signature validation phase, the FC-BGP speaker determines the aggregate state of the UPDATE message as follows (see <xref target="validation-states"/>):</t>
          <ul spacing="normal">
            <li>
              <t>If any FC segment is 'Invalid' or any check above fails, the UPDATE message is 'Invalid'.</t>
            </li>
            <li>
              <t>Otherwise, if at least one FC segment could not be verified because of an unsupported Algorithm ID or an unsupported protocol feature, the UPDATE message is 'Unsupported'. The presence of an unsupported algorithm <bcp14>MUST NOT</bcp14> cause the UPDATE message to be silently treated as an ordinary unsigned BGP route.</t>
            </li>
            <li>
              <t>Otherwise, if the FC coverage is partial because some ASes on the AS_PATH attribute are not FC-required (<xref target="deployment"/>), the UPDATE message is 'Incomplete'.</t>
            </li>
            <li>
              <t>Otherwise (every FC segment is valid and the FC coverage is complete), the UPDATE message is 'Valid'.</t>
            </li>
          </ul>
          <t>For each FC segment, the FC-BGP speaker processes FC-BGP UPDATE message validation with the following steps. As different FC segments are independent, it is <bcp14>RECOMMENDED</bcp14> to verify FC segments in parallel; see <xref target="speedup-early-termination"/>.</t>
          <!-- TODO: agree that this section is the FC-BGP analogue of the BGPsec signature validation; the differences are (a) each FC segment carries its own Algorithm ID, and (b) the input to the signature is the FC Signature Input of {{sig-input}}. -->

<ul spacing="normal">
            <li>
              <t>Step 1: Locate the public key needed to verify the signature in the current FC segment. To do this, consult the valid RPKI router certificate data and look up all valid &lt;AS Number, Public Key, Subject Key Identifier&gt; triples in which the AS matches the Current AS Number (CASN) in the corresponding FC segment. Of these triples that match the AS number, check whether there is an Subject Key Identifier (SKI) that matches the value in the SKI field of the FC segment. If this check finds no such matching SKI value, then mark the entire FC segment as 'Invalid' and stop.</t>
            </li>
            <li>
              <t>Step 2: Construct the digest input for the current FC segment exactly as specified in <xref target="sig-input"/>, using the Version, PASN, CASN, NASN, SKI, Algorithm ID, Flags, PC, RESERVED, AFI/SAFI, Prefix, and Prefix Length of the FC segment and of the UPDATE message. Note that if an FC-BGP speaker uses multiple AS numbers (e.g., the FC-BGP speaker is a member of an AS confederation), the AS number used for the CASN <bcp14>MUST</bcp14> be the AS number announced in the BGP OPEN message for the session over which the FC-BGP UPDATE message was received. All three AS numbers in one FC segment follow this rule.</t>
            </li>
            <li>
              <t>Step 3: Use the signature validation algorithm (for the given algorithm suite) to verify the signature in the current segment. That is, invoke the signature validation algorithm on the following three inputs: the value of the Signature field in the current FC segment, the digest constructed in Step 2 above, and the public key obtained from the valid RPKI data in Step 1 above. If the signature validation algorithm determines that the signature is invalid, then mark the entire FC segment as 'Invalid' and stop. If the signature validation algorithm determines that the signature is valid, then the FC segment is marked as 'Valid' and validation continues with the following FC segments.</t>
            </li>
          </ul>
          <t>When one FC Segment has set the Flags-P2C flag to 1, the subsequent FC segments added by the following ASes <bcp14>MUST</bcp14> all set the Flags-P2C flag to 1 in their corresponding FC segments. The Flags-P2C flag is set to 1 only when the role of its neighbor, to whom the propagator AS sends routes, is Customer or RS-Client. The Flags-P2P flag is set to 1 only when the role of its neighbor, to whom the propagator AS sends routes, is Peer.</t>
          <t>The following ingress procedure applies to the processing of the Flags-P2C flag and the Flags-P2P flag on route receipt:</t>
          <ol spacing="normal" type="1"><li>
              <t>If a route, with the Flags-P2C flag in the recently added FC segment, is received from a Customer, a Peer, or an RS-Client, then it is a route leak and <bcp14>MUST</bcp14> be considered ineligible.</t>
            </li>
            <li>
              <t>If a route is received from a Peer (i.e., remote AS with a Peer Role) and with the Flags-P2P flag in both of the two most recently consecutively added FC segments, then it is a route leak and <bcp14>MUST</bcp14> be considered ineligible.</t>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="implementations-operations-and-management-considerations">
      <name>Implementations, Operations, and Management Considerations</name>
      <section anchor="algorithms-extensibility">
        <name>Algorithms and Extensibility</name>
        <t>The content of Algorithm Suite Considerations defined in <xref section="6.1" sectionFormat="of" target="RFC8205"/> and the content of Considerations for the SKI Size defined in <xref section="6.2" sectionFormat="of" target="RFC8205"/> apply to FC-BGP, with the difference that each FC segment carries its own Algorithm ID field. This document registers the Algorithm ID 1, whose suite is ECDSA over P-256 with SHA-256, as defined in <xref target="RFC8208"/> (see <xref target="iana-considerations"/>).</t>
        <t>The following rules govern algorithm registration, transition, and deprecation:</t>
        <ul spacing="normal">
          <li>
            <t>An Algorithm ID <bcp14>MUST</bcp14> be registered with IANA before it is used in FC segments (see <xref target="iana-considerations"/>).</t>
          </li>
          <li>
            <t>An FC-BGP speaker <bcp14>MUST NOT</bcp14> generate an FC segment with an Algorithm ID for which it has not placed the corresponding router certificate in the RPKI repository.</t>
          </li>
          <li>
            <t>During a transition between algorithm suites, a speaker <bcp14>MAY</bcp14> generate FC segments with different Algorithm IDs for different FC segments, provided that the private key and certificate for each Algorithm ID are available. Each FC segment's Algorithm ID is covered by that FC segment's own signature (<xref target="sig-input"/>), so mixed-Algorithm-ID FC lists are cryptographically self-contained.</t>
          </li>
          <li>
            <t>An FC-BGP speaker that encounters an FC segment whose Algorithm ID it does not recognize <bcp14>MUST NOT</bcp14> verify that FC segment and <bcp14>MUST</bcp14> handle it per <xref target="error-matrix"/>: the UPDATE message becomes 'Unsupported' (or 'Invalid' if another failure is present) per <xref target="validation-states"/>. An unsupported algorithm <bcp14>MUST NOT</bcp14> cause the UPDATE message to be silently treated as an ordinary unsigned BGP route.</t>
          </li>
          <li>
            <t>An algorithm <bcp14>MUST NOT</bcp14> be removed from use without a documented transition plan. Before deprecating an algorithm, operators <bcp14>MUST</bcp14> stop generating FC segments under it, allow enough time for the remaining FC segments signed under it to expire from the network, and then remove the Algorithm ID from the registry.</t>
          </li>
          <li>
            <t>The Version field (<xref target="figure2"/>) is the first field of the FC segment, in a positionally fixed location, and is also included in the FC Signature Input (<xref target="sig-input"/>). A receiver that does not recognize the Version value handles the FC segment as 'Unsupported' per <xref target="error-matrix"/>; the signed value prevents the version from being altered in transit.</t>
          </li>
        </ul>
      </section>
      <section anchor="speedup-early-termination">
        <name>Speedup and Early Termination of Signature Verification</name>
        <t>It is advantageous for an implementation to establish a parallel verification process for FC-BGP if the router's processor supports such operations. As each FC segment contains the integral data that needs to be verified, parallel verification can significantly enhance the efficiency and speed of the validation process. By utilizing parallel processing capabilities, an implementation can simultaneously verify multiple FC segments, thereby reducing the overall verification time. This is particularly beneficial in scenarios where the FC path attribute contains a substantial number of segments or in high-traffic networks with a large volume of FC-BGP UPDATE messages. Implementations that leverage parallel verification take advantage of the processing power available in modern router processors. This allows for more efficient and faster verification, ensuring that the FC-BGP UPDATE messages are promptly validated and routed accordingly.</t>
        <t>However, it's important to note that the feasibility of parallel verification depends on the specific capabilities and constraints of the router's processor. Implementations <bcp14>SHOULD</bcp14> consider factors such as available resources, concurrency limitations, and the impact on overall system performance when implementing parallel verification processes. Overall, setting up a parallel verification process for FC-BGP, if feasible, can contribute to improved performance and responsiveness in validating FC segments, further enhancing the reliability and efficiency of the FC-BGP protocol.</t>
        <t>During the validation of an FC-BGP UPDATE message, route processor performance speedup can be achieved by incorporating the following observations. These observations provide valuable insights into optimizing the validation process and reducing the workload on the route processor. One of the key observations is that the FC-BGP UPDATE message can be marked 'Valid' only if all FC segments are marked as 'Valid' in the validation steps. This means that if an FC segment is marked as 'Invalid' or 'Unsupported', there is no need to continue verifying the remaining unverified FC segments. This optimization can significantly reduce the processing time and workload on the route processor. Furthermore, when the FC-BGP UPDATE message is selected as the best path, the FC-BGP speaker appends its own FC segment, including the appropriate signature generated with the corresponding algorithm, to the FC path attribute. This ensures that the updated path is propagated correctly.</t>
        <t>Additionally, an FC-BGP UPDATE message is 'Invalid' if at least one signature in an FC segment is invalid. Thus, the verification process for an FC segment can terminate early as soon as the first invalid signature is encountered. There is no need to continue validating the remaining signatures in that FC segment.</t>
        <t>By incorporating these observations, an FC-BGP implementation can achieve significant performance improvements and reduce the computational burden on the route processor. It allows for more efficient validation of FC-BGP UPDATE messages, ensuring the integrity and security of the routing information while maximizing system resources.</t>
      </section>
      <section anchor="signature-count">
        <name>Signature Generation Load and Performance Metrics</name>
        <t>A single FC-BGP speaker generates one FC segment per (prefix, next-hop AS, propagation leg) for each route it propagates to external neighbors (see <xref target="fcbgp-update"/>). Because the Prefix and the Nexthop AS Number are covered by the signature (<xref target="sig-input"/>), the number of signatures generated by a speaker grows with the number of prefixes and with the number of distinct externally reachable next hops. This is a design property that bounds the amount of path information each signature covers; operators <bcp14>MUST</bcp14> account for this growth when dimensioning the control plane.</t>
        <t>Where the path semantics are identical, an implementation <bcp14>MAY</bcp14> reuse a signature or a validation result: for the same prefix, the same next-hop AS, the same FCList, and the same set of FC fields, the signature computation is deterministic and <bcp14>MAY</bcp14> be cached and reused, provided that the reused signature is valid for the same FC Signature Input (<xref target="sig-input"/>). Batch or parallel verification, and caching of verification results, <bcp14>MUST NOT</bcp14> change the validation state produced by the algorithm of <xref target="validation-steps"/>; they are performance optimizations only.</t>
        <t>To support capacity planning, FC-BGP implementations <bcp14>SHOULD</bcp14> expose, at a minimum, the following metrics:</t>
        <ul spacing="normal">
          <li>
            <t>the number of FC-BGP UPDATE messages processed per second;</t>
          </li>
          <li>
            <t>the signature generation latency per UPDATE message;</t>
          </li>
          <li>
            <t>the signature verification latency for FCList of different lengths;</t>
          </li>
          <li>
            <t>the CPU utilization attributable to FC generation and FC verification;</t>
          </li>
          <li>
            <t>the additional octets contributed by the FC path attribute to the UPDATE message;</t>
          </li>
          <li>
            <t>the BGP convergence time with FC-BGP enabled; and</t>
          </li>
          <li>
            <t>the memory footprint growth with the size of the RIB and of the RPKI dependency index (<xref target="rpkideps"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="deferring-validation">
        <name>Deferring Validation</name>
        <t>When an FC-BGP speaker receives an exceptionally large number of UPDATE messages simultaneously, though it can use parallel verification to speed up the validation, it can be beneficial to defer the validation of incoming FC-BGP UPDATE messages. The decision to defer the validation process may depend on the local policy of the FC-BGP speaker, taking into account factors such as available resources and system load.</t>
        <t>By deferring the validation of these messages, the FC-BGP speaker can prioritize its processing power and resources to handle other critical tasks or ongoing operations. Deferring the validation allows the FC-BGP speaker to temporarily postpone the resource-intensive validation process until it can allocate sufficient resources to handle the influx of incoming messages effectively.</t>
        <t>The implementation <bcp14>SHOULD</bcp14> provide visibility to the operator regarding the deferment of validation and the status of the deferred messages. This visibility enables the operator to have awareness of the deferred messages and understand the current state of the system. This information is crucial for monitoring and managing the FC-BGP speaker's behavior, ensuring that the operator can make informed decisions based on the system's status.</t>
        <t>The validation of an FC-BGP UPDATE message proceeds through the following states:</t>
        <figure anchor="fig-val-state">
          <name>Validation state machine for an FC-BGP UPDATE message.</name>
          <artwork><![CDATA[
 Received
    |
    v
 Syntax Check
    |
    v
 Pending Validation
    |
    +------> Valid
    |
    +------> Invalid
    |
    +------> Unsupported
]]></artwork>
        </figure>
        <t>The following rules apply while an UPDATE message is in the 'Pending Validation' state:</t>
        <ul spacing="normal">
          <li>
            <t>A route in the 'Pending Validation' state <bcp14>MAY</bcp14> be admitted to the candidate route set as an ordinary BGP route by local policy, but <bcp14>MUST NOT</bcp14> be reported as validated (see <xref target="validation-states"/>).</t>
          </li>
          <li>
            <t>An FC-BGP speaker <bcp14>MAY</bcp14> forward a route in the 'Pending Validation' state, provided that it does not claim a definitive validation state for it.</t>
          </li>
          <li>
            <t>The time an UPDATE message <bcp14>MAY</bcp14> remain in the 'Pending Validation' state is bounded by local policy; on timeout, the implementation <bcp14>SHOULD</bcp14> re-evaluate the route and keep the 'Pending Validation' state visible to the operator.</t>
          </li>
          <li>
            <t>Validation <bcp14>MAY</bcp14> be cancelled (for example, when the UPDATE message is withdrawn, when its route is no longer in the candidate set, or on session reset). Cancellation <bcp14>MUST NOT</bcp14> leave the route reported with a definitive validation state; the affected routes <bcp14>MUST</bcp14> be re-queued or reported as 'Not Validated'.</t>
          </li>
          <li>
            <t>When the validation of a previously pending UPDATE message completes, the FC-BGP speaker <bcp14>SHOULD</bcp14> re-run the best path selection process for routes affected by the new state (see <xref target="BGP-route-selection"/>).</t>
          </li>
          <li>
            <t>When resources are exhausted, an FC-BGP speaker <bcp14>MAY</bcp14> rate-limit the validation of UPDATE messages received from specific neighbors, but <bcp14>MUST NOT</bcp14> silently treat unvalidated messages as validated (see <xref target="validation-states"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="BGP-route-selection">
        <name>BGP Route Selection</name>
        <!-- TODO: An expert says the ROV takes the highest level in BGP route selection. Need confirmation. -->

<t>While FC-BGP does modify the BGP route selection result, it is not the primary intention of FC-BGP to modify the BGP route selection process itself. Instead, FC-BGP focuses on providing an additional layer of validation and verification for BGP UPDATE messages. The validation state produced by <xref target="validation-steps"/> (see <xref target="validation-states"/>) is an input to route selection; the protocol does not prescribe a single mapping from validation states to routing decisions. The per-state route-selection behavior that the protocol requires and permits is defined in <xref target="validation-states"/>.</t>
        <t>However, the handling of FC-BGP validation states, as well as the integration of FC-BGP with the BGP route selection, is indeed a matter of local policy. FC-BGP implementations <bcp14>SHOULD</bcp14> provide mechanisms that allow operators to define and configure their own local policies on a per-session basis. This flexibility enables operators to customize the behavior of FC-BGP based on their specific requirements and preferences.</t>
        <t>By allowing operators to set local policies, FC-BGP implementations empower them to control how the validation status of FC-BGP UPDATE messages influences the BGP route selection process. Operators may choose to treat FC-BGP validation status differently for UPDATE messages received over different BGP sessions, based on their network's needs and security considerations.</t>
        <t>To ensure consistency and interoperability, it is <bcp14>RECOMMENDED</bcp14> that FC-BGP implementations treat the priority of FC-BGP UPDATE messages at the same level as Route Origin Validation (ROV). This means that the validation status of FC-BGP UPDATE messages should be considered alongside other route selection criteria, such as path attributes, AS path length, and local preference.</t>
      </section>
      <section anchor="non-deterministic-signature-algorithms">
        <name>Non-deterministic Signature Algorithms</name>
        <t>The non-deterministic nature of many signature algorithms can introduce variations in the signatures produced, even when signing the same data with the same key. This means that if an FC-BGP router receives two FC-BGP UPDATE messages from the same peer, for the same prefix, with the same FC path attribute except the signature fields, the signature fields <bcp14>MAY</bcp14> differ when using a non-deterministic signature algorithm. Note that if the sender caches and reuses the previous signature, the two sets of signature fields will not differ. This applies specifically to deterministic signature algorithms, where the signature fields between the two UPDATE messages <bcp14>MUST</bcp14> be identical.</t>
        <t>Considering these observations, an FC-BGP implementation <bcp14>MAY</bcp14> incorporate optimizations in the UPDATE validation processing. These optimizations can take advantage of the non-deterministic nature of signature algorithms to reduce computational overhead. For example, if an FC-BGP router has already validated an FC segment and its corresponding signature in a previous UPDATE message from the same peer, it may choose to cache and reuse the previous validation result. This can help avoid redundant computations for subsequent UPDATE messages with the same FC path attribute and SKIs, as long as the sender does not generate new signatures.</t>
        <t>By incorporating such optimizations, an implementation can reduce the computational load and processing time needed for validating FC-BGP UPDATE messages. However, it is important to ensure that the implementation adheres to the requirements and specifications of the FC-BGP protocol while considering the performance benefits of these optimizations.</t>
      </section>
      <section anchor="asn-processing">
        <name>AS Number Processing</name>
        <t>This section defines how FC-BGP handles AS number changes and special cases, and which cases remain inside the FC-BGP protection scope. The process for Private AS Numbers used in BGPsec speakers defined in <xref section="7.5" sectionFormat="of" target="RFC8205"/> applies, with the additions below.</t>
        <section anchor="casn-certificate-session-and-aspath-identity">
          <name>CASN, Certificate, Session, and AS_PATH Identity</name>
          <t>The Current AS Number (CASN) of an FC segment is the identity on which the whole validation of that FC segment rests. The following <bcp14>MUST</bcp14> all refer to the same AS:</t>
          <ul spacing="normal">
            <li>
              <t>the CASN of the FC segment;</t>
            </li>
            <li>
              <t>the AS number in the Subject field of the RPKI router certificate used to verify the FC segment (see <xref target="fcbgp-update"/> and <xref target="RFC8209"/>); and</t>
            </li>
            <li>
              <t>for the FC segment of the immediate neighbor, the AS number announced in the BGP OPEN message of the session over which the FC-BGP UPDATE message was received (see <xref target="validation-steps"/>).</t>
            </li>
          </ul>
        </section>
        <section anchor="as-number-migration">
          <name>AS Number Migration</name>
          <t>When an AS migrates from one AS number to another (e.g., an AS number change following a merger), FC segments signed under the old AS number cannot be validated against a router certificate for the new AS number, and the FC-to-AS_PATH Mapping (<xref target="fcmapping"/>) would not be satisfiable for FCs whose CASN is the old AS number. The migrating AS <bcp14>MUST</bcp14> therefore publish a router certificate for the new AS number, generate all subsequent FC segments with the new AS number as the CASN, and stop using the old AS number in new FC segments before traffic is moved to the new AS number. This document does not define a mechanism analogous to the pCount=0 convention of BGPsec <xref target="RFC8205"/> <xref target="RFC8206"/>; a receiver <bcp14>MUST</bcp14> reject an FC segment whose CASN does not have a corresponding valid router certificate (see <xref target="error-matrix"/>). <!-- TODO: decide whether an explicit migration mechanism (e.g., a "PC=0"-like placeholder) is needed in a future revision. -->
          </t>
        </section>
        <section anchor="private-as-numbers">
          <name>Private AS Numbers</name>
          <t>Private AS numbers may appear in FC segments. The removal or replacement of private AS numbers from the AS_PATH attribute (e.g., by an edge router that strips them per local policy) changes the AS_PATH attribute of the UPDATE message. Because the FC-to-AS_PATH Mapping binds the FCList to the AS_PATH attribute, the FC path attribute <bcp14>MUST NOT</bcp14> be propagated in an UPDATE message whose AS_PATH attribute has been modified after the FCList was constructed. A speaker that modifies the AS_PATH attribute in a way that is not reflected in the FCList <bcp14>MUST</bcp14> either generate a fresh FC path attribute consistent with the new AS_PATH attribute or remove the FC path attribute from the UPDATE message before propagation.</t>
        </section>
        <section anchor="repeated-and-changed-asns">
          <name>Repeated and Changed ASNs</name>
          <ul spacing="normal">
            <li>
              <t>Consecutive repetitions of an AS number in the AS_PATH attribute are represented by the PC field of a single FC segment and are protected as described in <xref target="fcmapping"/>.</t>
            </li>
            <li>
              <t>Non-consecutive repetitions of an AS number in the AS_PATH attribute indicate an invalid AS_PATH attribute or a loop, and the corresponding Mapping failures are handled per <xref target="fcmapping"/> and <xref target="error-matrix"/>.</t>
            </li>
            <li>
              <t>AS Confederation membership changes are governed by <xref target="fcbgp-update"/>: on entering a confederation, an FC segment for the Confederation Identifier with the Confed_Segment flag set to 1 is added, and on leaving a confederation the confederation members' FC segments are removed and replaced.</t>
            </li>
          </ul>
        </section>
        <section anchor="certificate-and-asn-mismatch">
          <name>Certificate and ASN Mismatch</name>
          <t>If the CASN of an FC segment does not correspond to any valid router certificate for that AS number (for example, because the certificate was issued for a different AS number), the FC segment cannot be verified and is handled per <xref target="error-matrix"/>. This covers the case where a router certificate and the AS number actually used in the BGP session are inconsistent.</t>
        </section>
        <section anchor="supported-and-out-of-scope-cases">
          <name>Supported and Out-of-Scope Cases</name>
          <t>FC-BGP protects AS numbers that appear in the AS_PATH attribute of the UPDATE message. AS numbers that are not FC-required (<xref target="deployment"/>) are outside the protection scope for the route in question. Private AS numbers and AS numbers in AS Confederation are protected only while they remain in the AS_PATH attribute (or in the FCList under the Flags-RS or Flags-CS rules) and only for as long as the corresponding AS is FC-required.</t>
        </section>
      </section>
      <section anchor="robustness-considerations-for-accessing-rpki-data">
        <name>Robustness Considerations for Accessing RPKI Data</name>
        <t>As there is a mature RPKI to Router protocol <xref target="RFC8210"/>, the implementation is <bcp14>REQUIRED</bcp14> to use this protocol to access the RPKI data. The content defined in <xref section="7.6" sectionFormat="of" target="RFC8205"/> also applies here.</t>
      </section>
      <section anchor="rpkideps">
        <name>Dependency Handling on RPKI State Change</name>
        <t>When the state of a router certificate changes, the validity of every FC segment that references that certificate can change. To make revalidation on RPKI state change scalable, an FC-BGP speaker <bcp14>SHOULD</bcp14> maintain a dependency index keyed by the Subject Key Identifier (SKI) and, where a SKI is shared, by the Current AS Number (CASN) of the FC segments:</t>
        <ul spacing="normal">
          <li>
            <t>a key (SKI, CASN) maps to the set of FC segments whose SKI and CASN fields match; and</t>
          </li>
          <li>
            <t>each such FC segment maps to the FC-BGP UPDATE messages that contain it.</t>
          </li>
        </ul>
        <t>When the state of a router certificate changes, the FC-BGP speaker <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>locate the (SKI, CASN) entries affected by the certificate change;</t>
          </li>
          <li>
            <t>identify the FC segments that reference the affected certificate through those entries;</t>
          </li>
          <li>
            <t>locate the FC-BGP UPDATE messages that contain those FC segments;</t>
          </li>
          <li>
            <t>re-run the signature validation and, if needed, the FC-to-AS_PATH Mapping for the affected UPDATE messages (<xref target="validation-steps"/>); and</t>
          </li>
          <li>
            <t>update the FC validation state and, if the state of an UPDATE message changed, re-run the best path selection process according to local policy (see <xref target="BGP-route-selection"/>).</t>
          </li>
        </ol>
        <t>The following certificate state changes have distinct semantics:</t>
        <ul spacing="normal">
          <li>
            <t>Revocation: the certificate <bcp14>MUST</bcp14> no longer be used to verify FC segments; affected FC segments become 'Invalid' (<xref target="validation-states"/>).</t>
          </li>
          <li>
            <t>Expiration: same as revocation once the certificate's validity period has ended.</t>
          </li>
          <li>
            <t>Replacement (a new certificate for the same AS number): new FC segments <bcp14>MUST</bcp14> be signed with the new certificate; FC segments signed under the replaced certificate are handled as signatures whose key is no longer valid, per <xref target="error-matrix"/>.</t>
          </li>
          <li>
            <t>Key rollover: until the new key is valid and the old key has expired or been revoked, the same AS <bcp14>MAY</bcp14> have FC segments signed with either key; the SKI identifies which key to use (<xref target="fcbgp-update"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="graceful-restart">
        <name>Graceful Restart</name>
        <t>During Graceful Restart (GR), restarting and receiving FC-BGP speakers <bcp14>MUST</bcp14> follow the procedures specified in <xref target="RFC4724"/> for restarting and receiving BGP speakers, respectively. In particular, the behavior of retaining the forwarding state for the routes in the Loc-RIB <xref target="RFC4271"/> and marking them as stale, as well as not differentiating between stale routing information and other information during forwarding, will be the same as the behavior specified in <xref target="RFC4724"/>.</t>
      </section>
      <section anchor="robustness-of-secret-random-number-in-ecdsa">
        <name>Robustness of Secret Random Number in ECDSA</name>
        <t>As both FC-BGP and BGPsec use ECDSA, the content of Robustness of Secret Random Number in ECDSA defined in <xref section="7.8" sectionFormat="of" target="RFC8205"/> applies here.</t>
        <!-- TODO: check and rewrite the following parts copied from BGPsec -->

</section>
      <section anchor="comparison">
        <name>Incremental/Partial Deployment Considerations</name>
        <t>The core difference between FC-BGP and BGPsec is that BGPsec is a path-level authentication approach, whereas FC-BGP is a pathlet-driven authentication approach.</t>
        <t>In design, FC-BGP does not modify the AS_PATH attribute. It defines a new transitive path attribute to transport the FC segments so that the legacy ASs can forward this attribute to their peers. Thus, FC-BGP is natively compatible with BGP and supports partial deployment. It differs from BGPsec, which replaces the AS_PATH attribute with a new Secure_Path information of the BGPsec_Path attribute.</t>
        <t>As for incremental/partial deployment considerations, in Section 5.1.1 of <xref target="FC-ARXIV"/>, we have proved that the adversary cannot forge a valid AS path when FC-BGP is universally deployed. Section 5.1.2 of <xref target="FC-ARXIV"/> analyzes the benefits of FC-BGP in the case of partial deployment. The results show that FC-BGP provides more benefits than BGPsec in partial deployment. As a result, attackers are forced to pretend to be at least two hops away from the destination AS, which reduces the probability of successful path hijacks.</t>
      </section>
      <section anchor="coexist_bgpsec">
        <name>Co-existence with BGPsec</name>
        <t>BGPsec and FC-BGP are two different mechanisms for authenticating the path of a BGP UPDATE message. This section defines their behavior when they are enabled on the same speaker or on neighboring speakers. Three cases are distinguished:</t>
        <ol spacing="normal" type="1"><li>
            <dl>
              <dt>Only FC-BGP is in use:</dt>
              <dd>
                <t>The FC path attribute is generated and validated against the AS_PATH attribute, as defined in <xref target="fcbgp-update"/> and <xref target="fcmapping"/>. The BGPsec_Path attribute is absent.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Only BGPsec is in use:</dt>
              <dd>
                <t>The BGP speaker follows <xref target="RFC8205"/>; the FC path attribute is absent and no FC processing is performed.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Both BGPsec and FC-BGP are in use:</dt>
              <dd>
                <t>The BGP speaker processes the BGPsec UPDATE message first, then processes the FC-BGP UPDATE message, as described below. It is <bcp14>NOT RECOMMENDED</bcp14> that both be enabled together except during a migration period.</t>
              </dd>
            </dl>
          </li>
        </ol>
        <t>When both mechanisms are enabled on the same speaker, the BGPsec_Path attribute is the authoritative path representation: the BGP speaker <bcp14>SHOULD</bcp14> generate the FC segments from the BGPsec_Path and MP_REACH_NLRI attributes, and <bcp14>SHOULD</bcp14> validate the FC segments against the BGPsec_Path and MP_REACH_NLRI attributes, of the same UPDATE message, rather than against the AS_PATH attribute. The receiver <bcp14>MUST</bcp14> use the same path representation (BGPsec_Path or AS_PATH) for both generation and validation; using one representation at generation and the other at validation results in an FC-to-AS_PATH Mapping failure (<xref target="fcmapping"/>) or a signature mismatch and <bcp14>MUST</bcp14> be treated as 'Invalid' per <xref target="error-matrix"/>.</t>
        <t>When the BGPsec validation of an UPDATE message fails, the UPDATE message is 'Invalid' for BGPsec. The FC-BGP validation of the same UPDATE message <bcp14>MAY</bcp14> still be performed; however, the FC path attribute does not repair the BGPsec failure. Whether an UPDATE message whose BGPsec validation failed may still be selected on the basis of the FC-BGP validation result is a matter of local policy under <xref target="BGP-route-selection"/>; the protocol does not provide a default that silently ignores the BGPsec failure. In all cases, a BGPsec-enabled speaker that propagates a route whose BGPsec_Path attribute it removed because BGPsec validation failed <bcp14>MUST</bcp14> follow the rules of <xref target="RFC8205"/> and <bcp14>MUST NOT</bcp14> attach an FC path attribute that was validated against the removed BGPsec_Path attribute.</t>
        <t>In summary, an implementation <bcp14>SHOULD</bcp14> be able to process a coexistence UPDATE message; the priority is that the FC segments and the path representation used for their generation and validation are always consistent, and that a BGPsec failure is never silently overridden by FC-BGP validation.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="security-guarantees">
        <name>Security Guarantees</name>
        <t>This section states the security guarantees that FC-BGP provides and the conditions (preconditions) under which each guarantee holds. Each guarantee is conditional: it holds only when the stated preconditions are met. All of the guarantees below are control-plane guarantees about the FC path attribute; none of them, by itself, constrains the data plane.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Security goal</th>
              <th align="left">Preconditions</th>
              <th align="left">Protocol mechanism</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AS identity authentication</td>
              <td align="left">The signer holds a valid RPKI router certificate for the AS; the FC segment verifies under that certificate; the CASN matches the certificate subject and, for the immediate neighbor, the session's BGP OPEN AS number (<xref target="asn-processing"/>).</td>
              <td align="left">Signature validation (<xref target="validation-steps"/>); RPKI router certificates (<xref target="RFC8209"/>).</td>
            </tr>
            <tr>
              <td align="left">Pathlet (path segment) integrity</td>
              <td align="left">The full FC Signature Input of <xref target="sig-input"/> is covered by the signature and the signature is valid DER; the FC segment is in its correct position in the FCList.</td>
              <td align="left">
                <xref target="sig-input"/>; <xref target="fcmapping"/>.</td>
            </tr>
            <tr>
              <td align="left">AS_PATH consistency</td>
              <td align="left">The FC-to-AS_PATH Mapping of <xref target="fcmapping"/> completes: FCList order, data-path adjacency, PC, and coverage all hold.</td>
              <td align="left">
                <xref target="fcmapping"/>.</td>
            </tr>
            <tr>
              <td align="left">Origin authorization</td>
              <td align="left">FC-BGP validation is combined with route origin validation (ROV) (<xref target="RFC6811"/>); a valid ROA authorizes the origin AS for the prefix.</td>
              <td align="left">
                <xref target="fcbgp-update"/>; <xref target="RFC6811"/>.</td>
            </tr>
            <tr>
              <td align="left">Route leak detection</td>
              <td align="left">The BGP Role capability <xref target="RFC9234"/> or equivalent out-of-band role information is present, and the Flags-P2C / Flags-P2P rules of <xref target="route-leak"/> are applied with correct validation.</td>
              <td align="left">
                <xref target="route-leak"/>.</td>
            </tr>
            <tr>
              <td align="left">Data-plane path consistency</td>
              <td align="left">NOT guaranteed by FC-BGP alone. Control-plane FC signatures do not prove that the actual data-plane forwarding path matches the announced AS_PATH. Claiming this guarantee requires additional mechanisms (for example, forwarding-path attestation) and additional trust assumptions, which are outside the scope of this document.</td>
              <td align="left">None in this document.</td>
            </tr>
          </tbody>
        </table>
        <t>FC-BGP allows an AS to independently prove its BGP routing decisions with publicly verifiable cryptography commitments, based on which any on-path AS can verify the authenticity of a BGP path. The security benefits of FC-BGP are not binary, i.e., secure or non-secure; they increase monotonically with the deployment rate of FC-BGP, that is, the percentage of ASes that are upgraded to support FC-BGP. In partial deployment, the FC coverage is reflected in the 'Incomplete' validation state (<xref target="validation-states"/>), so that the authenticated portion of a path can be distinguished from the unauthenticated portion.</t>
      </section>
      <section anchor="mitigation-of-denial-of-service-attacks">
        <name>Mitigation of Denial-of-Service Attacks</name>
        <!-- This is also mentioned at IETF 118 by Keyur: you may think about decentralizing this to solve different kinds of DoS attacks.
https://github.com/FCBGP/fcbgp-protocol/discussions/8 for more information. -->
<t>The FC-BGP UPDATE process, due to its involvement in numerous cryptographic operations, becomes vulnerable to Denial-of-Service (DoS) attacks targeting FC-BGP speakers. This section addresses the mitigation strategies tailored for the specific DoS threats the FC-BGP protocol poses. To prevent the Denial-of-Service (DoS) attacks faced by the FC-BGP control plane mechanism, there is no need to put in more effort than BGPsec.</t>
        <t>To reduce the impact of DoS attacks, FC-BGP speakers <bcp14>SHOULD</bcp14> employ an UPDATE validation algorithm that prioritizes inexpensive checks (such as syntax checks) before proceeding to more resource-intensive operations (like signature verification). The validation algorithm described in <xref target="validation-steps"/> is designed to sequence checks in order of likely expense, starting with less costly operations. However, the actual cost of executing these validation steps can vary across different implementations, and the algorithm in <xref target="validation-steps"/> may not offer the optimal level of DoS protection for all cases.</t>
        <t>Moreover, the transmission of UPDATE messages with the FC path attribute, which entails a multitude of signatures, is a potential vector for denial-of-service attacks. To counter this, implementations of the validation algorithm must cease signature verification immediately upon encountering an invalid signature. This prevents prolonged sequences of invalid signatures from being exploited for DoS purposes. Additionally, implementations can further mitigate such attacks by limiting validation efforts to only those UPDATE messages that, if found to be valid, would be chosen as the best path. In other words, if an UPDATE message includes a route that would be disqualified by the best path selection process for some reason (such as an excessively long AS path), it is OPTIONALLY to determine its FC-BGP validity status.</t>
      </section>
      <section anchor="route-server">
        <name>Route Server</name>
        <t>When the Route Server populates its FC Segment into the FC path attribute, it is secure as the path is fully deployed.</t>
        <t>When the Route Server fails to insert the FC Segment, no matter whether its ASN is listed in the AS path, it is considered a partial deployment, which poses a risk of path forgery.</t>
      </section>
      <section anchor="additional-security-considerations">
        <name>Additional Security Considerations</name>
        <section anchor="sec-three-asn">
          <name>Three AS Numbers</name>
          <!-- TODO: prove that insertion of 0 does not include route loop/BGP dispute in security consideration. Question asked by Keyur. See [Discussions: IETF119](https://github.com/FCBGP/fcbgp-protocol/discussions/10) for more information. -->

<t>An FC segment contains only partial path information, and FCs in the FCList are independent. To prevent BGP Path Splicing attacks, we propose to use the triplet &lt;Previous AS Number, Current AS Number, Nexthop AS Number&gt; to locate the pathlet information.</t>
          <t>But if there is no previous hop, i.e., this is the origin AS that tries to add its FC segment to the BGP UPDATE message, the Previous AS Number <bcp14>SHOULD</bcp14> be populated with 0. But, carefully, AS 0 <bcp14>SHOULD</bcp14> only be used in this case.</t>
          <t>In the context of BGP <xref target="RFC4271"/>, to detect an AS routing loop, it scans the full AS path (as specified in the AS_PATH attribute) and checks that the autonomous system number of the local system does not appear in the AS path. As outlined in <xref target="RFC7607"/>, Autonomous System 0 was listed in the IANA Autonomous System Number Registry as "Reserved - May be used to identify non-routed networks". So, there should be no AS 0 in the AS_PATH attribute of the BGP UPDATE message. Therefore, AS 0 could be used to populate the PASN field when there are no previous AS hops in the AS path.</t>
        </section>
        <section anchor="misc">
          <name>MISC</name>
          <t>For a discussion of the BGPsec threat model and related security considerations, please see <xref target="RFC7132"/>. The security considerations of <xref target="RFC4272"/> also apply to FC-BGP.</t>
        </section>
      </section>
      <section anchor="threat-model">
        <name>Threat Model</name>
        <t>This section presents a systematic threat model for FC-BGP. It complements the BGPsec threat model of <xref target="RFC7132"/>; the security considerations of <xref target="RFC4272"/> also apply to FC-BGP. For each threat, the table states the assumed attacker capability, the attacker's goal, whether FC-BGP can detect the attack, the deployment conditions required for detection, the behavior when detection fails, and the mechanisms that complement FC-BGP.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Threat</th>
              <th align="left">Attacker capability</th>
              <th align="left">FC-BGP detection</th>
              <th align="left">Required deployment</th>
              <th align="left">Behavior if not detected</th>
              <th align="left">Complementary mechanism</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Malicious origin AS</td>
              <td align="left">The origin AS signs (or does not sign) an FC segment for a prefix it does not own.</td>
              <td align="left">No. FC-BGP does not prove origin authenticity: an FC segment for an unauthorized prefix still verifies.</td>
              <td align="left">Full FC-BGP on the origin and the path, plus ROV.</td>
              <td align="left">The route is accepted as 'Valid' even though the origin is not authorized.</td>
              <td align="left">Origin validation (ROV) <xref target="RFC6811"/> with ROAs.</td>
            </tr>
            <tr>
              <td align="left">Malicious intermediate AS</td>
              <td align="left">The AS lies about its position on the path; it removes or re-orders FC segments.</td>
              <td align="left">Yes, if the tampered AS is FC-required: the FC-to-AS_PATH Mapping (<xref target="fcmapping"/>) fails, or the signatures do not verify, and the UPDATE message becomes 'Invalid'.</td>
              <td align="left">The tampered AS or an adjacent hop is FC-required and FC-enabled, and FC coverage is complete.</td>
              <td align="left">A path with a missing or misplaced FC for an FC-required AS is accepted.</td>
              <td align="left">BGP loop prevention; RPKI-based neighbor validation; operator monitoring.</td>
            </tr>
            <tr>
              <td align="left">Malicious downstream AS</td>
              <td align="left">The AS advertises a path that it did not receive.</td>
              <td align="left">Yes, if the receiver enforces FC-required semantics: the NASN of the most recent FC segment does not equal the receiver's AS number (<xref target="fcmapping"/> receiver boundary).</td>
              <td align="left">FC enforcement by the receiver and complete coverage.</td>
              <td align="left">A forged path with an out-of-place boundary FC is accepted.</td>
              <td align="left">Neighbor verification; RPKI; route policies.</td>
            </tr>
            <tr>
              <td align="left">FC removal (FC stripping)</td>
              <td align="left">An on-path AS removes FC segments that it cannot forge.</td>
              <td align="left">Yes, if the removed AS was FC-required: the Mapping shows a gap and the UPDATE message is 'Invalid' (<xref target="deployment"/>, <xref target="fcmapping"/>).</td>
              <td align="left">The removed AS is FC-required and its FC presence can be independently established.</td>
              <td align="left">The path is treated as 'Incomplete' (partial deployment) and accepted with partial coverage.</td>
              <td align="left">RPKI router certificates; operational verification of coverage.</td>
            </tr>
            <tr>
              <td align="left">AS_PATH modification</td>
              <td align="left">An on-path AS adds, removes, or re-orders AS numbers.</td>
              <td align="left">Yes, for additions or re-ordering of covered ASes: Mapping or signature failure. For the removal of an AS, see 'FC removal' above.</td>
              <td align="left">FC coverage of the modified portion.</td>
              <td align="left">The modified path is accepted.</td>
              <td align="left">
                <xref target="fcmapping"/>; route monitoring.</td>
            </tr>
            <tr>
              <td align="left">Replay of old FC segments</td>
              <td align="left">An attacker replays a previously valid FCList with an older path or older certificate state.</td>
              <td align="left">Partially. A replayed FC whose PASN / CASN / NASN no longer match the current AS_PATH and certificate state fails the Mapping or signature validation.</td>
              <td align="left">Fresh certificate state at the receiver; complete coverage.</td>
              <td align="left">A replayed FC is accepted if the path and certificates are unchanged.</td>
              <td align="left">Certificate time validity; RPKI state tracking (<xref target="rpkideps"/>).</td>
            </tr>
            <tr>
              <td align="left">Route leak</td>
              <td align="left">An AS advertises a route learned from a peer or provider to customers, or reverses roles.</td>
              <td align="left">Yes, when the BGP Role capability <xref target="RFC9234"/> is present and the Flags-P2C / Flags-P2P rules of <xref target="route-leak"/> are enforced.</td>
              <td align="left">Role capability exchange and enforcement of <xref target="route-leak"/>.</td>
              <td align="left">The leaked route is selected.</td>
              <td align="left">BGP Roles <xref target="RFC9234"/>; OTC; ASPA.</td>
            </tr>
            <tr>
              <td align="left">Malicious route server</td>
              <td align="left">A route server inserts, omits, or alters an FC segment with the Flags-RS bit set to 1.</td>
              <td align="left">Yes. The RS's FC is authenticated by its own router certificate, and the PASN / NASN adjacency and Flags-RS handling are checked (<xref target="rs-processing"/>).</td>
              <td align="left">The RS is FC-enabled and the receiver enforces the Flags-RS checks.</td>
              <td align="left">A forged or omitted RS FC is treated as partial deployment.</td>
              <td align="left">
                <xref target="rs-processing"/>; IXP operator verification.</td>
            </tr>
            <tr>
              <td align="left">Certificate revocation / private key exposure</td>
              <td align="left">An attacker uses a revoked or compromised key.</td>
              <td align="left">Yes, when revocation information is fresh: the affected certificate becomes invalid and the affected FC segments become 'Invalid' (<xref target="rpkideps"/>).</td>
              <td align="left">Timely RPKI state propagation.</td>
              <td align="left">Signatures under the exposed key continue to verify until the certificate is withdrawn.</td>
              <td align="left">RPKI; key management <xref target="RFC8635"/>.</td>
            </tr>
            <tr>
              <td align="left">Algorithm downgrade</td>
              <td align="left">An attacker selects an unsupported Algorithm ID that the receiver cannot verify.</td>
              <td align="left">The FC segment is marked 'Unsupported'; the UPDATE message <bcp14>MUST NOT</bcp14> be silently treated as ordinary and unauthenticated (<xref target="validation-states"/>).</td>
              <td align="left">Receiver-side policy for 'Unsupported' routes.</td>
              <td align="left">The route is treated as ordinary if local policy so chooses.</td>
              <td align="left">Algorithm registration and deprecation (<xref target="algorithms-extensibility"/>).</td>
            </tr>
            <tr>
              <td align="left">DoS / resource exhaustion</td>
              <td align="left">An attacker floods a speaker with FC-BGP UPDATE messages that require expensive verification.</td>
              <td align="left">The protocol sequences checks by cost and allows early termination, deferral, and rate limiting (<xref target="validation-steps"/>, <xref target="deferring-validation"/>).</td>
              <td align="left">Implementation limits and operator configuration.</td>
              <td align="left">Excessive CPU or memory use; legitimate UPDATE messages are delayed.</td>
              <td align="left">
                <xref target="validation-steps"/>; <xref target="deferring-validation"/>; rate limiting; the limits of <xref target="fc-path-attribute"/>.</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD. Wait for IANA to assign FC-BGP-UPDATE-PATH-ATTRIBUTE-TYPE.</t>
      <t>TBD. Regist Flags. The leftmost bit is the Confed_Segment flag, and the second highest/leftmost bit is the Route_Server flag in this document.</t>
      <t>TBD. The 3-octet RESERVED field of the FC segment (<xref target="figure2"/>) is reserved for future allocation. Allocations <bcp14>MUST NOT</bcp14> change the size of the field, so that the FC Signature Input (<xref target="sig-input"/>) remains stable; any allocated content is covered by the FC segment's signature.</t>
      <t>TBD. Regist the FC Segment Version field (<xref target="figure2"/>). The current value is 1. Allocations <bcp14>MUST NOT</bcp14> change the position or the 1-octet size of the Version field, so that receivers can always locate it before parsing the rest of the FC segment.</t>
      <t>TBD. A new OID should be assigned for keys used in FC-BGP.</t>
      <t>AS number 0 is used here to populate the PASN in an FC segment where there is no previous hop for an AS, i.e., the origin AS when adding the FC segment to the FC-BGP UPDATE message.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC4724">
          <front>
            <title>Graceful Restart Mechanism for BGP</title>
            <author fullname="S. Sangli" initials="S." surname="Sangli"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="R. Fernando" initials="R." surname="Fernando"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document describes a mechanism for BGP that would help minimize the negative effects on routing caused by BGP restart. An End-of-RIB marker is specified and can be used to convey routing convergence information. A new BGP capability, termed "Graceful Restart Capability", is defined that would allow a BGP speaker to express its ability to preserve forwarding state during BGP restart. Finally, procedures are outlined for temporarily retaining routing information across a TCP session termination/re-establishment.</t>
              <t>The mechanisms described in this document are applicable to all routers, both those with the ability to preserve forwarding state during BGP restart and those without (although the latter need to implement only a subset of the mechanisms described in this document). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4724"/>
          <seriesInfo name="DOI" value="10.17487/RFC4724"/>
        </reference>
        <reference anchor="RFC4760">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document defines extensions to BGP-4 to enable it to carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, L3VPN, etc.). The extensions are backward compatible - a router that supports the extensions can interoperate with a router that doesn't support the extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4760"/>
          <seriesInfo name="DOI" value="10.17487/RFC4760"/>
        </reference>
        <reference anchor="RFC5656">
          <front>
            <title>Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer</title>
            <author fullname="D. Stebila" initials="D." surname="Stebila"/>
            <author fullname="J. Green" initials="J." surname="Green"/>
            <date month="December" year="2009"/>
            <abstract>
              <t>This document describes algorithms based on Elliptic Curve Cryptography (ECC) for use within the Secure Shell (SSH) transport protocol. In particular, it specifies Elliptic Curve Diffie-Hellman (ECDH) key agreement, Elliptic Curve Menezes-Qu-Vanstone (ECMQV) key agreement, and Elliptic Curve Digital Signature Algorithm (ECDSA) for use in the SSH Transport Layer protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5656"/>
          <seriesInfo name="DOI" value="10.17487/RFC5656"/>
        </reference>
        <reference anchor="RFC6480">
          <front>
            <title>An Infrastructure to Support Secure Internet Routing</title>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes an architecture for an infrastructure to support improved security of Internet routing. The foundation of this architecture is a Resource Public Key Infrastructure (RPKI) that represents the allocation hierarchy of IP address space and Autonomous System (AS) numbers; and a distributed repository system for storing and disseminating the data objects that comprise the RPKI, as well as other signed objects necessary for improved routing security. As an initial application of this architecture, the document describes how a legitimate holder of IP address space can explicitly and verifiably authorize one or more ASes to originate routes to that address space. Such verifiable authorizations could be used, for example, to more securely construct BGP route filters. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6480"/>
          <seriesInfo name="DOI" value="10.17487/RFC6480"/>
        </reference>
        <reference anchor="RFC6482">
          <front>
            <title>A Profile for Route Origin Authorizations (ROAs)</title>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="D. Kong" initials="D." surname="Kong"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document defines a standard profile for Route Origin Authorizations (ROAs). A ROA is a digitally signed object that provides a means of verifying that an IP address block holder has authorized an Autonomous System (AS) to originate routes to one or more prefixes within the address block. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6482"/>
          <seriesInfo name="DOI" value="10.17487/RFC6482"/>
        </reference>
        <reference anchor="RFC6483">
          <front>
            <title>Validation of Route Origination Using the Resource Certificate Public Key Infrastructure (PKI) and Route Origin Authorizations (ROAs)</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document defines the semantics of a Route Origin Authorization (ROA) in terms of the context of an application of the Resource Public Key Infrastructure to validate the origination of routes advertised in the Border Gateway Protocol. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6483"/>
          <seriesInfo name="DOI" value="10.17487/RFC6483"/>
        </reference>
        <reference anchor="RFC6487">
          <front>
            <title>A Profile for X.509 PKIX Resource Certificates</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <author fullname="R. Loomans" initials="R." surname="Loomans"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document defines a standard profile for X.509 certificates for the purpose of supporting validation of assertions of "right-of-use" of Internet Number Resources (INRs). The certificates issued under this profile are used to convey the issuer's authorization of the subject to be regarded as the current holder of a "right-of-use" of the INRs that are described in the certificate. This document contains the normative specification of Certificate and Certificate Revocation List (CRL) syntax in the Resource Public Key Infrastructure (RPKI). This document also specifies profiles for the format of certificate requests and specifies the Relying Party RPKI certificate path validation procedure. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6487"/>
          <seriesInfo name="DOI" value="10.17487/RFC6487"/>
        </reference>
        <reference anchor="RFC6793">
          <front>
            <title>BGP Support for Four-Octet Autonomous System (AS) Number Space</title>
            <author fullname="Q. Vohra" initials="Q." surname="Vohra"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="December" year="2012"/>
            <abstract>
              <t>The Autonomous System number is encoded as a two-octet entity in the base BGP specification. This document describes extensions to BGP to carry the Autonomous System numbers as four-octet entities. This document obsoletes RFC 4893 and updates RFC 4271. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6793"/>
          <seriesInfo name="DOI" value="10.17487/RFC6793"/>
        </reference>
        <reference anchor="RFC7606">
          <front>
            <title>Revised Error Handling for BGP UPDATE Messages</title>
            <author fullname="E. Chen" initials="E." role="editor" surname="Chen"/>
            <author fullname="J. Scudder" initials="J." role="editor" surname="Scudder"/>
            <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>According to the base BGP specification, a BGP speaker that receives an UPDATE message containing a malformed attribute is required to reset the session over which the offending attribute was received. This behavior is undesirable because a session reset would impact not only routes with the offending attribute but also other valid routes exchanged over the session. This document partially revises the error handling for UPDATE messages and provides guidelines for the authors of documents defining new attributes. Finally, it revises the error handling procedures for a number of existing attributes.</t>
              <t>This document updates error handling for RFCs 1997, 4271, 4360, 4456, 4760, 5543, 5701, and 6368.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7606"/>
          <seriesInfo name="DOI" value="10.17487/RFC7606"/>
        </reference>
        <reference anchor="RFC7947">
          <front>
            <title>Internet Exchange BGP Route Server</title>
            <author fullname="E. Jasinska" initials="E." surname="Jasinska"/>
            <author fullname="N. Hilliard" initials="N." surname="Hilliard"/>
            <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
            <author fullname="N. Bakker" initials="N." surname="Bakker"/>
            <date month="September" year="2016"/>
            <abstract>
              <t>This document outlines a specification for multilateral interconnections at Internet Exchange Points (IXPs). Multilateral interconnection is a method of exchanging routing information among three or more External BGP (EBGP) speakers using a single intermediate broker system, referred to as a route server. Route servers are typically used on shared access media networks, such as IXPs, to facilitate simplified interconnection among multiple Internet routers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7947"/>
          <seriesInfo name="DOI" value="10.17487/RFC7947"/>
        </reference>
        <reference anchor="RFC8205">
          <front>
            <title>BGPsec Protocol Specification</title>
            <author fullname="M. Lepinski" initials="M." role="editor" surname="Lepinski"/>
            <author fullname="K. Sriram" initials="K." role="editor" surname="Sriram"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>This document describes BGPsec, an extension to the Border Gateway Protocol (BGP) that provides security for the path of Autonomous Systems (ASes) through which a BGP UPDATE message passes. BGPsec is implemented via an optional non-transitive BGP path attribute that carries digital signatures produced by each AS that propagates the UPDATE message. The digital signatures provide confidence that every AS on the path of ASes listed in the UPDATE message has explicitly authorized the advertisement of the route.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8205"/>
          <seriesInfo name="DOI" value="10.17487/RFC8205"/>
        </reference>
        <reference anchor="RFC8208">
          <front>
            <title>BGPsec Algorithms, Key Formats, and Signature Formats</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="O. Borchert" initials="O." surname="Borchert"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>This document specifies the algorithms, algorithm parameters, asymmetric key formats, asymmetric key sizes, and signature formats used in BGPsec (Border Gateway Protocol Security). This document updates RFC 7935 ("The Profile for Algorithms and Key Sizes for Use in the Resource Public Key Infrastructure").</t>
              <t>This document also includes example BGPsec UPDATE messages as well as the private keys used to generate the messages and the certificates necessary to validate those signatures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8208"/>
          <seriesInfo name="DOI" value="10.17487/RFC8208"/>
        </reference>
        <reference anchor="RFC8209">
          <front>
            <title>A Profile for BGPsec Router Certificates, Certificate Revocation Lists, and Certification Requests</title>
            <author fullname="M. Reynolds" initials="M." surname="Reynolds"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>This document defines a standard profile for X.509 certificates used to enable validation of Autonomous System (AS) paths in the Border Gateway Protocol (BGP), as part of an extension to that protocol known as BGPsec. BGP is the standard for inter-domain routing in the Internet; it is the "glue" that holds the Internet together. BGPsec is being developed as one component of a solution that addresses the requirement to provide security for BGP. The goal of BGPsec is to provide full AS path validation based on the use of strong cryptographic primitives. The end entity (EE) certificates specified by this profile are issued to routers within an AS. Each of these certificates is issued under a Resource Public Key Infrastructure (RPKI) Certification Authority (CA) certificate. These CA certificates and EE certificates both contain the AS Resource extension. An EE certificate of this type asserts that the router or routers holding the corresponding private key are authorized to emit secure route advertisements on behalf of the AS(es) specified in the certificate. This document also profiles the format of certification requests and specifies Relying Party (RP) certificate path validation procedures for these EE certificates. This document extends the RPKI; therefore, this document updates the RPKI Resource Certificates Profile (RFC 6487).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8209"/>
          <seriesInfo name="DOI" value="10.17487/RFC8209"/>
        </reference>
        <reference anchor="RFC8210">
          <front>
            <title>The Resource Public Key Infrastructure (RPKI) to Router Protocol, Version 1</title>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>In order to verifiably validate the origin Autonomous Systems and Autonomous System Paths of BGP announcements, routers need a simple but reliable mechanism to receive Resource Public Key Infrastructure (RFC 6480) prefix origin data and router keys from a trusted cache. This document describes a protocol to deliver them.</t>
              <t>This document describes version 1 of the RPKI-Router protocol. RFC 6810 describes version 0. This document updates RFC 6810.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8210"/>
          <seriesInfo name="DOI" value="10.17487/RFC8210"/>
        </reference>
        <reference anchor="RFC8635">
          <front>
            <title>Router Keying for BGPsec</title>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>BGPsec-speaking routers are provisioned with private keys in order to sign BGPsec announcements. The corresponding public keys are published in the Global Resource Public Key Infrastructure (RPKI), enabling verification of BGPsec messages. This document describes two methods of generating the public-private key pairs: router-driven and operator-driven.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8635"/>
          <seriesInfo name="DOI" value="10.17487/RFC8635"/>
        </reference>
        <reference anchor="RFC9234">
          <front>
            <title>Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages</title>
            <author fullname="A. Azimov" initials="A." surname="Azimov"/>
            <author fullname="E. Bogomazov" initials="E." surname="Bogomazov"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="K. Sriram" initials="K." surname="Sriram"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>Route leaks are the propagation of BGP prefixes that violate assumptions of BGP topology relationships, e.g., announcing a route learned from one transit provider to another transit provider or a lateral (i.e., non-transit) peer or announcing a route learned from one lateral peer to another lateral peer or a transit provider. These are usually the result of misconfigured or absent BGP route filtering or lack of coordination between autonomous systems (ASes). Existing approaches to leak prevention rely on marking routes by operator configuration, with no check that the configuration corresponds to that of the External BGP (eBGP) neighbor, or enforcement of the two eBGP speakers agreeing on the peering relationship. This document enhances the BGP OPEN message to establish an agreement of the peering relationship on each eBGP session between autonomous systems in order to enforce appropriate configuration on both sides. Propagated routes are then marked according to the agreed relationship, allowing both prevention and detection of route leaks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9234"/>
          <seriesInfo name="DOI" value="10.17487/RFC9234"/>
        </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="RFC4272">
          <front>
            <title>BGP Security Vulnerabilities Analysis</title>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>Border Gateway Protocol 4 (BGP-4), along with a host of other infrastructure protocols designed before the Internet environment became perilous, was originally designed with little consideration for protection of the information it carries. There are no mechanisms internal to BGP that protect against attacks that modify, delete, forge, or replay data, any of which has the potential to disrupt overall network routing behavior.</t>
              <t>This document discusses some of the security issues with BGP routing data dissemination. This document does not discuss security issues with forwarding of packets. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4272"/>
          <seriesInfo name="DOI" value="10.17487/RFC4272"/>
        </reference>
        <reference anchor="RFC5065">
          <front>
            <title>Autonomous System Confederations for BGP</title>
            <author fullname="P. Traina" initials="P." surname="Traina"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>The Border Gateway Protocol (BGP) is an inter-autonomous system routing protocol designed for Transmission Control Protocol/Internet Protocol (TCP/IP) networks. BGP requires that all BGP speakers within a single autonomous system (AS) must be fully meshed. This represents a serious scaling problem that has been well documented in a number of proposals.</t>
              <t>This document describes an extension to BGP that may be used to create a confederation of autonomous systems that is represented as a single autonomous system to BGP peers external to the confederation, thereby removing the "full mesh" requirement. The intention of this extension is to aid in policy administration and reduce the management complexity of maintaining a large autonomous system.</t>
              <t>This document obsoletes RFC 3065. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5065"/>
          <seriesInfo name="DOI" value="10.17487/RFC5065"/>
        </reference>
        <reference anchor="RFC5492">
          <front>
            <title>Capabilities Advertisement with BGP-4</title>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <date month="February" year="2009"/>
            <abstract>
              <t>This document defines an Optional Parameter, called Capabilities, that is expected to facilitate the introduction of new capabilities in the Border Gateway Protocol (BGP) by providing graceful capability advertisement without requiring that BGP peering be terminated.</t>
              <t>This document obsoletes RFC 3392. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5492"/>
          <seriesInfo name="DOI" value="10.17487/RFC5492"/>
        </reference>
        <reference anchor="RFC6472">
          <front>
            <title>Recommendation for Not Using AS_SET and AS_CONFED_SET in BGP</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="K. Sriram" initials="K." surname="Sriram"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document recommends against the use of the AS_SET and AS_CONFED_SET types of the AS_PATH in BGPv4. This is done to simplify the design and implementation of BGP and to make the semantics of the originator of a route more clear. This will also simplify the design, implementation, and deployment of ongoing work in the Secure Inter-Domain Routing Working Group. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="172"/>
          <seriesInfo name="RFC" value="6472"/>
          <seriesInfo name="DOI" value="10.17487/RFC6472"/>
        </reference>
        <reference anchor="RFC6811">
          <front>
            <title>BGP Prefix Origin Validation</title>
            <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>To help reduce well-known threats against BGP including prefix mis- announcing and monkey-in-the-middle attacks, one of the security requirements is the ability to validate the origination Autonomous System (AS) of BGP routes. More specifically, one needs to validate that the AS number claiming to originate an address prefix (as derived from the AS_PATH attribute of the BGP route) is in fact authorized by the prefix holder to do so. This document describes a simple validation mechanism to partially satisfy this requirement. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6811"/>
          <seriesInfo name="DOI" value="10.17487/RFC6811"/>
        </reference>
        <reference anchor="RFC7132">
          <front>
            <title>Threat Model for BGP Path Security</title>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="A. Chi" initials="A." surname="Chi"/>
            <date month="February" year="2014"/>
            <abstract>
              <t>This document describes a threat model for the context in which External Border Gateway Protocol (EBGP) path security mechanisms will be developed. The threat model includes an analysis of the Resource Public Key Infrastructure (RPKI) and focuses on the ability of an Autonomous System (AS) to verify the authenticity of the AS path info received in a BGP update. We use the term "PATHSEC" to refer to any BGP path security technology that makes use of the RPKI. PATHSEC will secure BGP, consistent with the inter-AS security focus of the RPKI.</t>
              <t>The document characterizes classes of potential adversaries that are considered to be threats and examines classes of attacks that might be launched against PATHSEC. It does not revisit attacks against unprotected BGP, as that topic has already been addressed in the BGP-4 standard. It concludes with a brief discussion of residual vulnerabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7132"/>
          <seriesInfo name="DOI" value="10.17487/RFC7132"/>
        </reference>
        <reference anchor="RFC7607">
          <front>
            <title>Codification of AS 0 Processing</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="H. Schiller" initials="H." surname="Schiller"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>This document updates RFC 4271 and proscribes the use of Autonomous System (AS) 0 in the Border Gateway Protocol (BGP) OPEN, AS_PATH, AS4_PATH, AGGREGATOR, and AS4_AGGREGATOR attributes in the BGP UPDATE message.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7607"/>
          <seriesInfo name="DOI" value="10.17487/RFC7607"/>
        </reference>
        <reference anchor="RFC7908">
          <front>
            <title>Problem Definition and Classification of BGP Route Leaks</title>
            <author fullname="K. Sriram" initials="K." surname="Sriram"/>
            <author fullname="D. Montgomery" initials="D." surname="Montgomery"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <author fullname="E. Osterweil" initials="E." surname="Osterweil"/>
            <author fullname="B. Dickson" initials="B." surname="Dickson"/>
            <date month="June" year="2016"/>
            <abstract>
              <t>A systemic vulnerability of the Border Gateway Protocol routing system, known as "route leaks", has received significant attention in recent years. Frequent incidents that result in significant disruptions to Internet routing are labeled route leaks, but to date a common definition of the term has been lacking. This document provides a working definition of route leaks while keeping in mind the real occurrences that have received significant attention. Further, this document attempts to enumerate (though not exhaustively) different types of route leaks based on observed events on the Internet. The aim is to provide a taxonomy that covers several forms of route leaks that have been observed and are of concern to the Internet user community as well as the network operator community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7908"/>
          <seriesInfo name="DOI" value="10.17487/RFC7908"/>
        </reference>
        <reference anchor="RFC8206">
          <front>
            <title>BGPsec Considerations for Autonomous System (AS) Migration</title>
            <author fullname="W. George" initials="W." surname="George"/>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>This document discusses considerations and methods for supporting and securing a common method for Autonomous System (AS) migration within the BGPsec protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8206"/>
          <seriesInfo name="DOI" value="10.17487/RFC8206"/>
        </reference>
        <reference anchor="RFC8416">
          <front>
            <title>Simplified Local Internet Number Resource Management with the RPKI (SLURM)</title>
            <author fullname="D. Ma" initials="D." surname="Ma"/>
            <author fullname="D. Mandelberg" initials="D." surname="Mandelberg"/>
            <author fullname="T. Bruijnzeels" initials="T." surname="Bruijnzeels"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>The Resource Public Key Infrastructure (RPKI) is a global authorization infrastructure that allows the holder of Internet Number Resources (INRs) to make verifiable statements about those resources. Network operators, e.g., Internet Service Providers (ISPs), can use the RPKI to validate BGP route origin assertions. ISPs can also use the RPKI to validate the path of a BGP route. However, ISPs may want to establish a local view of exceptions to the RPKI data in the form of local filters and additions. The mechanisms described in this document provide a simple way to enable INR holders to establish a local, customized view of the RPKI, overriding global RPKI repository data as needed.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8416"/>
          <seriesInfo name="DOI" value="10.17487/RFC8416"/>
        </reference>
        <reference anchor="ASPP">
          <front>
            <title>AS Path Prepending</title>
            <author fullname="Mike McBride" initials="M." surname="McBride">
              <organization>Futurewei</organization>
            </author>
            <author fullname="Doug Madory" initials="D." surname="Madory">
              <organization>Kentik</organization>
            </author>
            <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
              <organization>Nvidia</organization>
            </author>
            <author fullname="Robert Raszuk" initials="R." surname="Raszuk">
              <organization>NTT Network Innovations</organization>
            </author>
            <author fullname="Hongwei Li" initials="H." surname="Li">
              <organization>HPE</organization>
            </author>
            <author fullname="Jakob Heitz" initials="J." surname="Heitz">
              <organization>Cisco</organization>
            </author>
            <author fullname="Gyan Mishra" initials="G. S." surname="Mishra">
              <organization>Verizon Inc.</organization>
            </author>
            <date day="14" month="April" year="2026"/>
            <abstract>
              <t>   Autonomous System (AS) path prepending is a tool to manipulate the
   BGP AS_PATH attribute through prepending one or more Autonomous
   System Numbers (ASNs).  AS path prepending is used to deprioritize a
   route in the presence of a route with a shorter AS_PATH.  By
   prepending a local ASN multiple times, ASes can make advertised AS
   paths appear artificially longer.  However, excessive AS path
   prepending has caused routing issues in the Internet.  This document
   provides guidance for the use of AS path prepending, including
   alternative solutions, in order to avoid negatively affecting the
   Internet.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-grow-as-path-prepending-19"/>
        </reference>
        <reference anchor="ASPA-Profile">
          <front>
            <title>A Profile for Autonomous System Provider Authorization</title>
            <author fullname="Job Snijders" initials="J." surname="Snijders">
              <organization>BSD Software Development</organization>
            </author>
            <author fullname="Alexander Azimov" initials="A." surname="Azimov">
              <organization>Yandex</organization>
            </author>
            <author fullname="Eugene Uskov" initials="E." surname="Uskov">
              <organization>JetLend</organization>
            </author>
            <author fullname="Randy Bush" initials="R." surname="Bush">
              <organization>Internet Initiative Japan</organization>
            </author>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="Ben Maddison" initials="B." surname="Maddison">
              <organization>Workonline</organization>
            </author>
            <date day="29" month="July" year="2026"/>
            <abstract>
              <t>   This document defines a Cryptographic Message Syntax (CMS) protected
   content type for Autonomous System Provider Authorization (ASPA)
   objects for use with the Resource Public Key Infrastructure (RPKI).
   An ASPA is a digitally signed object through which the issuer (the
   holder of an Autonomous System identifier), can authorize one or more
   other Autonomous Systems (ASes) as its transit providers.  When
   validated, an ASPA's eContent can be used for detection and
   mitigation of route leaks.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-sidrops-aspa-profile-29"/>
        </reference>
        <reference anchor="ASPA-Verification">
          <front>
            <title>BGP AS_PATH Verification Based on Autonomous System Provider Authorization (ASPA) Objects</title>
            <author fullname="Alexander Azimov" initials="A." surname="Azimov">
              <organization>Yandex</organization>
            </author>
            <author fullname="Eugene Bogomazov" initials="E." surname="Bogomazov">
              <organization>Qrator Labs</organization>
            </author>
            <author fullname="Randy Bush" initials="R." surname="Bush">
              <organization>Internet Initiative Japan &amp; Arrcus, Inc.</organization>
            </author>
            <author fullname="Keyur Patel" initials="K." surname="Patel">
              <organization>Arrcus</organization>
            </author>
            <author fullname="Job Snijders" initials="J." surname="Snijders">
              <organization>BSD Software Development</organization>
            </author>
            <author fullname="Kotikalapudi Sriram" initials="K." surname="Sriram">
              <organization>USA National Institute of Standards and Technology</organization>
            </author>
            <date day="24" month="August" year="2026"/>
            <abstract>
              <t>   This document describes procedures that make use of Autonomous System
   Provider Authorization (ASPA) objects in the Resource Public Key
   Infrastructure (RPKI) to verify the Border Gateway Protocol (BGP)
   AS_PATH attribute of advertised routes.  This AS_PATH verification
   enhances routing security by adding means to detect and mitigate
   route leaks and AS_PATH manipulations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-sidrops-aspa-verification-28"/>
        </reference>
        <reference anchor="Deprecation-AS_SET-AS_CONFED_SET">
          <front>
            <title>Deprecation of AS_SET and AS_CONFED_SET in BGP</title>
            <author fullname="Warren Kumari" initials="W." surname="Kumari">
              <organization>Google, Inc.</organization>
            </author>
            <author fullname="Kotikalapudi Sriram" initials="K." surname="Sriram">
              <organization>USA NIST</organization>
            </author>
            <author fullname="Lilia Hannachi" initials="L." surname="Hannachi">
              <organization>USA NIST</organization>
            </author>
            <author fullname="Jeffrey Haas" initials="J." surname="Haas">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <date day="7" month="March" year="2025"/>
            <abstract>
              <t>   BCP 172 (i.e., RFC 6472) recommends not using AS_SET and
   AS_CONFED_SET AS_PATH segment types in the Border Gateway Protocol
   (BGP).  This document advances that recommendation to a standards
   requirement in BGP; it prohibits the use of the AS_SET and
   AS_CONFED_SET path segment types in the AS_PATH.  This is done to
   simplify the design and implementation of BGP and to make the
   semantics of the originator of a BGP route clearer.  This will also
   simplify the design, implementation, and deployment of various BGP
   security mechanisms.  This document updates RFC 4271 by deprecating
   the origination of BGP routes with AS_SET (Type 1 AS_PATH segment)
   and updates RFC 5065 by deprecating the origination of BGP routes
   with AS_CONFED_SET (Type 4 AS_PATH segment).  Finally, it obsoletes
   RFC 6472.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-deprecate-as-set-confed-set-18"/>
        </reference>
        <reference anchor="FC-ARXIV" target="https://arxiv.org/abs/2309.13271">
          <front>
            <title>Secure Inter-domain Routing and Forwarding via Verifiable Forwarding Commitments</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="September"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1111?>

<section anchor="attachment">
      <name>Attachment</name>
      <section anchor="comparison-to-other-technologies">
        <name>Comparison to Other Technologies</name>
        <section anchor="bgpsec">
          <name>BGPsec</name>
          <t>For basic comparison, please see <xref target="Introduction"/>.</t>
          <section anchor="DeploymentBenefitsAnalysis">
            <name>Deployment Benefits Analysis</name>
            <t>One of the core differences between FC-BGP and BGPsec is the partial deployment scenario. It is difficult for FC-BGP and BGPsec to make an entire deployment, which is an evolution process.</t>
            <t>The propagation of the BGP UPDATE message can be simplified as a line. Take the following propagation path as an example.</t>
            <figure anchor="fig-deploy-topo">
              <name>An BGP UPDATE propagation path example.</name>
              <artwork><![CDATA[
AS(1) --- AS(2) -...- AS(k-1) ---- AS(k) -...- AS(n)
                             \               /
                              \--- AS(m) ---/
]]></artwork>
            </figure>
            <t>In this propagation path, the settings are:
- A path from AS(1) to AS(n) with N-1 hops, where FC-BGP is deployed consecutively from AS(1) to AS(k-1). AS(k) is the first legacy AS that doesn't enable FC-BGP.
- An upgraded AS(n) located after AS(k) tries to validate its received BGP path.
- A compromised AS(m) intents to hijack the traffic from AS(n) to AS(1).</t>
            <t>Suppose the distance between AS(m), i.e., the compromised AS, and AS(n) is L hops. The best choice for AS(m) is to pretend to be a neighbor of AS(k) and construct a fake path AS(1)-AS(2)-...-AS(k)-AS(m)-...-AS(n) with length <tt>K-1+1+L</tt> hops. AS(m) can successfully hijack the traffic only if <tt>N-1&gt;K-1+1+L</tt>, which implies that has to be smaller than <tt>N-L-1</tt>.</t>
            <t>In the full path deployment scenario, i.e., <tt>K=N+1</tt>, FC-BGP and BGPsec have the same path protection rate. However, in the partial path deployment scenario, i.e., <tt>K&lt;N-L-1</tt>, FC-BGP can protect more paths than BGPsec.</t>
            <t>The conclusion can be drawn that FC-BGP provides strictly more security benefits than BGPsec in partial/incremental deployment.</t>
            <t>Under full deployment, FC-BGP and BGPsec achieve comparable security benefits as both are capable of preserving the authenticity and immutability of the AS_PATH attribute within BGP UPDATE messages. From a security guarantee perspective, FC-BGP establishes a cryptographic commitment and propagates this commitment across the entire network. Through this mechanism, each BGP router can verify that it has received routes from the preceding AS and has forwarded them to the subsequent AS in the path. This approach ensures security through modular pathlets, which are incrementally validated and aggregated to construct a fully authenticated end-to-end routing path. In contrast, BGPsec does not incorporate such a commitment-based framework, relying instead on cryptographic path validation at each AS hop without modular decomposition of path security.</t>
          </section>
        </section>
        <section anchor="aspa">
          <name>ASPA</name>
          <t>The ASPA <xref target="ASPA-Profile"/> <xref target="ASPA-Verification"/> mechanism is designed to solve the problem of route leak with RPKI ASPA signed objects and AS_PATH attribute. It is an off-path mechanism with a lightweight cryptographic cost for BGP routers. However, it does not protect the AS_PATH attribute. Thus, ASPA and FC-BGP are complementary technologies.</t>
        </section>
        <section anchor="only-to-customer-otc-attribute">
          <name>Only to Customer (OTC) Attribute</name>
          <t>OTC is a route-leak detection and prevention mechanism. However, the OTC value itself is not protected. It can be forged. With the signature, FC-BGP can protect the Flags-P2C flag and the Flags-P2P flag. So the FC-BGP route leak prevention mechanism is complementary to the OTC attribute.</t>
        </section>
      </section>
      <section anchor="test-vectors">
        <name>Test Vectors</name>
        <t>This section specifies the interoperability test cases for FC-BGP validation. Each row gives the input, the expected validation state (per <xref target="validation-states"/>), the expected route behavior, and the error handling (per <xref target="error-matrix"/>). Implementers <bcp14>SHOULD</bcp14> reproduce these cases in their test suites. Concrete byte-level vectors, including the wire encoding of the FC path attribute, the exact FC Signature Input of <xref target="sig-input"/>, and the digital signatures, are published together with the implementation described in <xref target="implementation-status"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Case</th>
              <th align="left">Input</th>
              <th align="left">Expected validation state</th>
              <th align="left">Expected route behavior</th>
              <th align="left">Error handling</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1. Legal IPv4 FC</td>
              <td align="left">AS_PATH = [65001, 65002]; FCList complete and cryptographically valid; IPv4 unicast; PC = 1</td>
              <td align="left">'Valid'</td>
              <td align="left">
                <bcp14>MAY</bcp14> be admitted to the candidate route set per local policy</td>
              <td align="left">None</td>
            </tr>
            <tr>
              <td align="left">2. Legal IPv6 FC</td>
              <td align="left">Same as case 1, but with an IPv6 unicast NLRI (AFI 2, SAFI 1)</td>
              <td align="left">'Valid'</td>
              <td align="left">
                <bcp14>MAY</bcp14> be admitted to the candidate route set per local policy</td>
              <td align="left">None</td>
            </tr>
            <tr>
              <td align="left">3. FC order reversed</td>
              <td align="left">FCList is in the reverse order of the AS_PATH attribute</td>
              <td align="left">'Invalid'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid</td>
              <td align="left">Mapping failure per <xref target="fcmapping"/> and <xref target="error-matrix"/>; not a syntax error</td>
            </tr>
            <tr>
              <td align="left">4. Missing FC for an FC-required AS</td>
              <td align="left">An AS that is FC-required (<xref target="deployment"/>) has no corresponding FC segment</td>
              <td align="left">'Invalid'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid</td>
              <td align="left">Mapping failure; <bcp14>MUST NOT</bcp14> be downgraded to a mere absence</td>
            </tr>
            <tr>
              <td align="left">5. Missing FC for a legacy AS</td>
              <td align="left">An AS without a valid router certificate has no FC segment</td>
              <td align="left">'Incomplete'</td>
              <td align="left">
                <bcp14>MAY</bcp14> be used as an ordinary route, with the authenticated portion only guaranteed</td>
              <td align="left">No violation; partial deployment</td>
            </tr>
            <tr>
              <td align="left">6. Non-canonical repeated CASN</td>
              <td align="left">Two consecutive normal FC segments with the same CASN and PC = 1</td>
              <td align="left">'Invalid'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid</td>
              <td align="left">Mapping failure per <xref target="fcmapping"/></td>
            </tr>
            <tr>
              <td align="left">7. AS Path Prepending, PC matches</td>
              <td align="left">AS_PATH = [65001, 65002, 65002, 65003]; a single FC segment for AS 65002 with PC = 2</td>
              <td align="left">'Valid'</td>
              <td align="left">
                <bcp14>MAY</bcp14> be admitted to the candidate route set per local policy</td>
              <td align="left">None</td>
            </tr>
            <tr>
              <td align="left">8. AS Path Prepending, PC mismatch</td>
              <td align="left">The PC field does not equal the number of consecutive occurrences of the CASN</td>
              <td align="left">'Invalid'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid</td>
              <td align="left">Mapping failure or signature failure per <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">9. PASN, CASN, or NASN tampered</td>
              <td align="left">An AS number field is modified after signing</td>
              <td align="left">'Invalid'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid</td>
              <td align="left">Signature failure per <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">10. Prefix or Prefix Length tampered</td>
              <td align="left">The NLRI is modified after signing</td>
              <td align="left">'Invalid'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid</td>
              <td align="left">Signature failure per <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">11. Signature Length inconsistent</td>
              <td align="left">The Signature Length field does not match the length of the Signature field</td>
              <td align="left">Malformed attribute</td>
              <td align="left">Treated as a malformed attribute</td>
              <td align="left">Per RFC 7606 <xref target="RFC7606"/> via <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">12. Invalid DER signature</td>
              <td align="left">The Signature field is not valid DER</td>
              <td align="left">'Invalid'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be treated as FC-BGP-valid</td>
              <td align="left">Cryptographic failure; not a syntax error</td>
            </tr>
            <tr>
              <td align="left">13. Unsupported Algorithm ID</td>
              <td align="left">The FC segment carries an Algorithm ID the receiver does not recognize</td>
              <td align="left">'Unsupported'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be silently downgraded to an ordinary unsigned BGP route</td>
              <td align="left">Per <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">14. Certificate revoked or expired</td>
              <td align="left">The router certificate referenced by an FC segment is revoked or expired</td>
              <td align="left">'Invalid' after revalidation</td>
              <td align="left">Best-path selection rerun per local policy</td>
              <td align="left">Revalidation per <xref target="Validation"/> and <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">15. Route Server FC</td>
              <td align="left">An FC segment with the Flags-RS bit set to 1 bridges two path nodes per <xref target="rs-processing"/></td>
              <td align="left">'Valid' if the FC coverage is complete, otherwise 'Incomplete'</td>
              <td align="left">
                <bcp14>MAY</bcp14> be admitted to the candidate route set per local policy</td>
              <td align="left">None</td>
            </tr>
            <tr>
              <td align="left">16. iBGP propagation</td>
              <td align="left">The FC path attribute is propagated unchanged over iBGP</td>
              <td align="left">State unchanged; not revalidated</td>
              <td align="left">Validation status conveyed within the AS</td>
              <td align="left">None</td>
            </tr>
            <tr>
              <td align="left">17. AS Confederation</td>
              <td align="left">FC segments with the Confed_Segment flag are processed per <xref target="fcbgp-update"/></td>
              <td align="left">Per the confederation rules of <xref target="fcbgp-update"/></td>
              <td align="left">FCList reconstructed at the confederation boundary</td>
              <td align="left">Per <xref target="fcbgp-update"/> and <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">18. Aggregation or AS_PATH modification</td>
              <td align="left">The AS_PATH attribute is changed after the FCList was constructed</td>
              <td align="left">'Invalid', or the FC path attribute is removed before propagation</td>
              <td align="left">Regenerate a fresh FC path attribute or remove it</td>
              <td align="left">Per <xref target="fcmapping"/> and <xref target="asn-processing"/></td>
            </tr>
            <tr>
              <td align="left">19. Over-long FCList</td>
              <td align="left">The FCList Length exceeds the limits of <xref target="fc-path-attribute"/></td>
              <td align="left">Malformed attribute</td>
              <td align="left">Treated as a malformed attribute</td>
              <td align="left">Per RFC 7606 <xref target="RFC7606"/> via <xref target="error-matrix"/></td>
            </tr>
            <tr>
              <td align="left">20. FC-BGP and BGPsec coexisting</td>
              <td align="left">The UPDATE message carries both a BGPsec_Path attribute and an FC path attribute</td>
              <td align="left">Per <xref target="coexist_bgpsec"/></td>
              <td align="left">The FC segments are generated and verified against the same path representation</td>
              <td align="left">Per <xref target="coexist_bgpsec"/></td>
            </tr>
            <tr>
              <td align="left">21. Unknown FC segment Version</td>
              <td align="left">FC segments carry a Version field value the receiver does not recognize</td>
              <td align="left">'Unsupported'</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be silently downgraded to an ordinary unsigned BGP route</td>
              <td align="left">Per <xref target="error-matrix"/></td>
            </tr>
          </tbody>
        </table>
        <t>The byte-level test vectors for IPv4, IPv6, AS Path Prepending, invalid DER, and tampered fields are derived from the canonical FC Signature Input defined in <xref target="sig-input"/> and <bcp14>MUST</bcp14> be reproducible from the wire encoding of the FC path attribute and of the UPDATE message alone. Any two conforming implementations <bcp14>MUST</bcp14> compute the same FC Signature Input and <bcp14>MUST</bcp14> obtain the same validation state for a given input.</t>
      </section>
      <section anchor="implementation-status">
        <name>Implementation Status</name>
        <t>We implement the FC-BGP mechanism with FRR version 9.0.1. The implementation includes verifying the FC path attribute upon receiving BGP UPDATE messages and adding and signing the FC path attribute when sending BGP UPDATE messages. The development and testing of this implementation were conducted on Ubuntu 22.04 with OpenSSL 3.X installed.</t>
        <t>GitHub repository: https://github.com/fcbgp/fcbgp-implementation.</t>
      </section>
      <section anchor="an-example">
        <name>An Example</name>
        <figure anchor="fig-atta-ex">
          <name>An FC-BGP UPDATE propagation example.</name>
          <artwork><![CDATA[
AS(65536) --> AS(65537) --> AS(65538)
                      \
                       \--> AS(65539)
]]></artwork>
        </figure>
        <t>It is important to note that this example only introduces important steps here and see <xref target="Validation"/> for details. What's more,  here ASs are global AS and not RS or AS Confederation. No ASPP is taken into consideration.</t>
        <t>For the sake of discussion, we assume that AS 65537 receives an FC-BGP UPDATE message for prefix 192.0.2.0/24 from AS 65536 and will send the route to AS 65538 and AS 65539 as <xref target="fig-atta-ex"/> shows. An FC-BGP speaker <bcp14>SHOULD</bcp14> propagate an FC-BGP UPDATE message to downstream ASs only after completing the validation and best route path selection.</t>
        <t>When the FC-BGP speaker in AS 65536 plans to propagate routes to its downstream AS 65537, it fills the FC path attribute first. The PASN is 0/NULL, the CASN is 65536, and the NASN is 65537. Then it calculates the signature, fills the FC, and forms the FC path attribute and FC-BGP UPDATE message. Then, it sends the UPDATE message out.</t>
        <t>When receiving an UPDATE message from AS 65536, the FC-BGP speaker in AS 65537 retrieves the FC path attribute and extracts the FC list. It then finds the FC with <tt>CASN == 65536</tt> as the AS_PATH has only one AS(65536) and checks whether PASN is 0 as well as NASN is 65537. If so, it uses the SKI field to find the public key and calculates the signature using the algorithm specified in the Algorithm ID. If the calculated signature matches the signature in the FC segment, then the AS-Path hop associated with the AS 65536 is verified. This process repeats for all FCs and AS-Paths in the FC list if it has other ASs in AS_PATH. However, if AS 65537 does not support FC-BGP, the BGP speaker of AS 65537 simply forwards the BGP UPDATE to its neighbors when propagating this FC-BGP route without validating the FC path attribute.</t>
        <t>FC-BGP speakers need to generate different UPDATE messages for different neighbors. Each UPDATE announcement contains only one route prefix and cannot be aggregated. This is because different route prefixes may have different announcement paths due to different routing policies. Multiple aggregated route prefixes may cause FC generation and verification errors. When multiple route prefixes need to be announced, the FC-BGP speaker needs to generate different UPDATE messages for each route prefix. Thus, the FC-BGP speaker of AS 65537 generates different UPDATE messages for AS 65538 and AS 65539 separately. The biggest difference is that the NASN is 65538 for AS 65538 and 65539 for AS 65539 in the FC segment generated by AS 65537.</t>
        <t>Take AS 65538 as the next hop. The FC-BGP speaker in AS 65537 will encapsulate each prefix to be sent to AS 65538 in a single UPDATE message, add the FC path attribute, and sign the path content using its private key to fill a new FC segment. The FC path attribute and the FC segment use the message format shown in <xref target="figure1"/> and <xref target="figure2"/> separately. When signing, the FC-BGP speaker constructs the canonical FC Signature Input defined in <xref target="sig-input"/> (which covers the Domain-Separation, Version, PASN, CASN, NASN, SKI, Algorithm ID, Flags, canonical signature length, PC, RESERVED, AFI/SAFI, Prefix, and Prefix Length), computes the SHA-256 hash over that byte string, signs the digest with ECDSA, and then fills in the Signature field and the other FC fields. After that, AS 65537 prepends its own FC on top of the FC List. At this point, the processing of FC path attributes by the FC-BGP speaker is complete. The subsequent processing of BGP messages follows the standard BGP process.</t>
      </section>
      <section numbered="false" anchor="acknowledgments">
        <name>Acknowledgments</name>
        <!-- It is better to update this part gradually with the completion of this document. -->

<t>The authors would like to thank Keyur Patel, Jeffery Hass, Randy Bush, Maria Matejka, Tobias Fiebig, Nan Geng, Tom Strickx, Susan Hares, Rüdiger Volk, Jun Zhang, Kotikalapudi Sriram, John Scudder, Job Snijders, Russ Housley, and Andrew for their review and valuable comments.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
