<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wang-sidrops-fcbgp-protocol-02" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="FC-BGP">FC-BGP Protocol Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-wang-sidrops-fcbgp-protocol-02"/>
    <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="2024" month="October" day="09"/>
    <workgroup>sidrops</workgroup>
    <abstract>
      <?line 100?>

<!-- TODO: Is FC-BGP proposed for AS_PATH security only?
Then the last sentence says it will process with the data plane.
It is better to revise this abstract to make it more accurate. -->
<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. 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 108?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The FC-BGP mechanism described in this document aims to ensure that advertised routes in BGP <xref target="RFC4271"/> are authentic. 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 (referred to hereafter 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 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.</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 autonomous systems (ASes) 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 ASes 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 ASes can use the authenticated pathlets provided by upstream upgraded ASes, even if the full AS path traverses legacy ASes 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 ASes, regardless of the deployment status of other ASes on the path.</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 simultaneously be enabled in a BGP network. However, if a BGP update message contains both BGPsec and FC-BGP features, the BGP speaker should process the message properly. In such cases, the BGP speaker should prioritize BGPsec over FC-BGP. This means that if a BGP update message includes the BGPsec_PATH attribute, a BGP speaker that supports both BGPsec and FC-BGP should use the Secure_Path instead of the AS_PATH to generate or verify the FC segments. This prioritization ensures that the presence of FC-BGP does not compromise the security benefits of BGPsec in the same update message. More discussion is at <xref target="coexist_bgpsec"/>.</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 protocols are neighbors. It can be divided into iBGP neighbor and eBGP neighbor.</t>
          </dd>
          <dt>BGP speaker:</dt>
          <dd>
            <t>A device, usually a router, exchanging 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., FC segment. It contains several fields and a digital signature to protect the current path.</t>
          </dd>
          <dt>FCList:</dt>
          <dd>
            <t>An ordered list of FC segments to protect the whole AS-Path in the BGP UPDATE message. The order of FCs follows the order of AS numbers in the AS-Path. All FC-BGP-enabled BGP speakers <bcp14>SHOULD</bcp14> add their FCs to the BGP UPDATE message.</t>
          </dd>
          <dt>FC path attribute:</dt>
          <dd>
            <t>The optional, transitive, extended length path attribute is defined in this document to obtain BGP security.</t>
          </dd>
          <dt>FC-BGP UPDATE:</dt>
          <dd>
            <t>A BGP UPDATE message 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.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="fc-bgp-negotiation">
      <name>FC-BGP Negotiation</name>
      <!-- TODO -->
<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>
    </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"/>.</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 definition of the FC segment format is shown in <xref target="figure2"/>. It does not conflict with the AS_PATH attribute. That means the FC-BGP path attribute and AS_PATH attribute can coexist in the same FC-BGP UPDATE message.</t>
        </dd>
      </dl>
      <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Previous Autonomous System Number              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Current Autonomous System Number              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Nexthop Autonomous System Number              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                     Subject Key Identifier                    ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Algorithm ID  |      Flags    |       Signature Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                          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>Previous Autonomous System Number (PASN, 4 octets):</dt>
        <dd>
          <t>The PASN is the AS number of the previous hop AS from whom 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 whom 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 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 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. The leftmost bit of the Flags field in <xref target="figure2"/> is the 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 Confed_Segment flags are set 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. The second leftmost bit (i.e., the second highest) of the Flags field in <xref target="figure2"/> is the Route_Server flag (Flags-RS). The Flags-RS flag is set to 1 to indicate that the FC segment is added by a route server, but the AS number will never appear in the AS_PATH attribute. The remaining 6-bit of the Flags field are unassigned. They <bcp14>MUST</bcp14> be set to 0 by the sender and ignored by the receiver.</t>
        </dd>
        <dt>Signature Length (2 octets):</dt>
        <dd>
          <t>It only contains the length of the Signature field in octets, not including other fields.</t>
        </dd>
      </dl>
      <!-- TODO: I don't know if it should distinguish IPv4 and IPv6 in calculating signature -->

<dl newline="true">
        <dt>Signature (variable length):</dt>
        <dd>
          <t>The signature content and order are Signature=ECDSA(SHA256(PASN, CASN, NASN, Prefix, Prefix Length)), where the Prefix is the IP address prefix which is encapsulated in the BGP UPDATE, i.e. NLRI, and only one prefix is used each time. When hashing and signing, the full IP address and IP prefix length are used, i.e., IPv4 uses 4 octets and IPv6 uses 16 octets.</t>
        </dd>
      </dl>
    </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>
        <!-- TODO: Improve the last sentence. I don't know if it has a ruleset for the insertion position of optional transitive (FC) path attributes. Out of efficiencies, the FC path attribute should be placed as the last path attribute as there are several variable-length signatures. -->
<t>The FC-BGP speaker follows a specific process to create the FC path attribute for the ongoing UPDATE message. Firstly, it generates a new FC Segment containing the necessary information for the FC path. This new FC Segment is then added to the FCList of the outer format defined in <xref target="figure1"/>. It is important to note that if the FC-BGP speaker is not the origin AS and there is already an existing FC path attribute of the UPDATE message, it <bcp14>MUST</bcp14> prepend its new FC segment to the FCList of the existing FC path attribute like the insertion process of ASN in AS_PATH attribute. This allows the FC-BGP speaker to contribute to its own FC segment while maintaining the existing FC path information. Otherwise, if it is the source AS, the FC-BGP speaker 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 receives. 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>
        <!-- TODO: Flags or pCount
The following several paragraphs discuss these two fields in BGPsec. But, we don't need pCount field if it only means for multiple AS in AS_PATH. Because the AS_PATH attribute has remained in FC-BGP. We should separate Flags into different bits for different usages.
It needs more discussion for RS.
The second highest/leftmost one is representative of pCount in RS. The last sentence is not really. It is correct in BGPsec but not in FC-BGP. -->
<t>Typically, the Flags field is set to 0.</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, RS performs like a transit AS except that it does not insert its AS number to the AS_PATH attribute. The route server also can participate in the FC-BGP process. If the RS is an FC-BGP-enabled RS, it may choose to set the Flags-RS bit to 1 when it populates its FC segment. However, when the RS chooses to add its AS number to the AS_PATH attribute, the Flags-RS bit <bcp14>SHOULD</bcp14> be set to 0. If the RS is a non-FC-BGP RS, it propagates the FC-BGP UPDATE message directly. Anyway, the AS number of RS would be used in the FC segment no matter if it appears in the AS_PATH attribute.</t>
        <t>Typically, the route server does not insert ASN into AS_PATH. Take <xref target="fig-rs-ex"/> as an example where AS A advertises a BGP UPDATE to AS C and RS connects AS A and AS B. When RS supports the FC-BGP mechanism, AS A adds its FC segment: FC(NULL, A, RS), RS adds its FC segment: FC(A, RS, B, Flags-RS), and AS B adds its FC segment: FC(RS, B, C). If RS does not support the FC-BGP mechanism, FC(A, RS, B, Flags-RS) is missed in FCList, which <bcp14>SHOULD</bcp14> be considered as a partial deployment scenario.</t>
        <figure anchor="fig-rs-ex">
          <name>A network topology with Router Server linked two ASes.</name>
          <artwork><![CDATA[
+--------+     +--------+     +--------+     +--------+
|    A   | --> |   RS   | --> |    B   | --> |    C   |
+--------+     +--------+     +--------+     +--------+
]]></artwork>
        </figure>
        <t>AS Path Prepending is a traffic engineering mechanism in BGP to deprioritize a route or alternate path, which will prepend the local AS number multiple times to the AS_PATH attribute <xref target="ASPP"/>. To minimize unnecessary processing load during the validation of FC segments, an FC-BGP speaker <bcp14>SHOULD NOT</bcp14> generate multiple consecutive FC segments with the same AS number. Instead, the FC-BGP speaker <bcp14>SHOULD</bcp14> aim to produce a single FC segment once, even if the intention is to achieve the semantics of prepending the same AS number multiple times.</t>
        <!-- TODO: It is difficult to guarantee its neighbors support multiple algorithm suites.
The following parts are copied from BGPsec. We may not need to consider AS migration, carefully.
The following definitions in BGPsec {{RFC8205}} also apply to this document. See {{RFC8206}} for a discussion of setting pCount to 0 to facilitate AS Number migration. Also, see Section 4.3 for the use of pCount=0 in the context of an AS confederation.  See Section 7.2 for operational guidance for configuring a BGPsec router for setting pCount=0 and/or accepting pCount=0 from a neighbor. -->
<t>The Algorithm ID field is set to 1. FC-BGP only supports one algorithm suite in this document as BGPsec Algorithm defined in <xref target="RFC8208"/>. That is the signature algorithm used <bcp14>MUST</bcp14> be the Elliptic Curve Digital Signature Algorithm (ECDSA) with curve P-256 and the hash algorithm used <bcp14>MUST</bcp14> be SHA-256. If it transits from one algorithm suite to another, the FC-BGP speaker <bcp14>MUST</bcp14> place its router certificate in the RPKI repository first and then specify the Algorithm ID in the FC segment.</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 encapsulated in DER format that binds the prefix, its length, and triplet &lt;PASN, CASN, NASN&gt; to the RPKI router certificate corresponding to the FC-BGP speaker. The digital signature is computed as follows: Signature=ECDSA(SHA256(PASN, CASN, NASN, Prefix, Prefix Length))
<!-- TODO: this is not a good way to clarify the calculation of Signature. More details are needed, such as AFI, SAFI, and NLRI in Figure 8 in RFC8205. -->
        </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>
        <!-- TODO: if an received UPDATE message contains AS_SET or AS_CONFED_SET, how can FC-BGP speaker processes that message. IN BGPSEC: the BGPsec speaker MUST remove any existing BGPsec_PATH in the received advertisement(s) for this prefix and produce a traditional (non-BGPsec) UPDATE message. What's more, in the mixed scenario, both AS_SET and FC path attributes are contained in one UPDATE message, how to process it. The second issue pertains to the aggregation of routes following the setting of the FC path attribute. -->

<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="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 the following:</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 the verification for the corresponding signature and immediately moves on 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>
    <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 who launches the advertisement, the FC-BGP speaker only needs to generate the FC-BGP UPDATE message other than 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> need to 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>SHOULD</bcp14> have access to these RPKI router certificates.</t>
        <!-- TODO: this is the origin 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 one result of two states: 'Valid' and 'Not Valid'. 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 generates 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>
        <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. It allows for interoperability and standardized communication between FC-BGP-enabled networks.</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 instead, the following checks on the FC path attribute are performed:</t>
          <ol spacing="normal" type="1"><li>
              <t>Check to ensure that the entire FC path attribute is syntactically correct (conforms to the specification in this document).</t>
            </li>
            <li>
              <t>Check that the triplet &lt;PASN, CASN, NASN&gt; fields in each FC segment follow the order in AS_PATH.</t>
            </li>
            <li>
              <t>Check that each FC segment contains one signature with the supported Algorithm ID.</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 Confed_Segment flag set to 1. <!-- TODO: need more study of AS confederation. -->
              </t>
            </li>
            <li>
              <t>If the UPDATE message was received from a neighbor that is not expected to set Flags-RS bit to 1 (see <xref target="fcbgp-update"/>), then check to ensure that the Flags-RS bit in the most recently added FC Segment is not equal to 0. <!-- TODO: (Note: See Section XXX for router configuration guidance related to this item.) -->
              </t>
            </li>
          </ol>
          <t>If any of the checks for the FC path attribute fail, indicating a syntactical or protocol error, it is considered an error. In such cases, FC speakers are <bcp14>REQUIRED</bcp14> to handle these errors using the "treat-as-withdraw" approach as defined in <xref target="RFC7606"/>. This approach means that the FC-BGP speaker <bcp14>SHOULD</bcp14> treat the FC path attribute as if it were a withdraw message, effectively removing the route from consideration. It's worth noting that when a transparent route server is involved, and its AS number appears in the FC (with the Flags-RS bit set to 1), the route server has the option to check if its local AS is listed in the FC. This additional check can be included as part of the loop-detection mechanism mentioned earlier in the specification.</t>
          <!-- TODO: in BGPsec, it will extract and reconstruct the AS_PATH attribute when it encounters an unsupported algorithm, i.e., downgrade from BGPsec to BGP. How about FC-BGP? Downgrade or propagate? -->
<t>Next, the FC-BGP speaker iterates through the FC segments. Once the FC-BGP speaker has examined the signature field in the FC attribute, it proceeds to validate the signature using the supported algorithm suites. However, if the FC-BGP speaker encounters a signature corresponding to an algorithm suite indexed by an Algorithm ID that it does not support, that particular signature is not considered in the validation process. If there are no signatures corresponding to any algorithm suites supported by the FC-BGP speaker, a specific action is taken to ensure the continuity of the route selection process. To consider the UPDATE message in the route selection process, the FC-BGP speaker has to treat the message as if it were received as an unsigned BGP UPDATE message. By treating the UPDATE message as unsigned, the FC-BGP speaker acknowledges that it cannot verify the integrity and authenticity of the message through the provided signatures. However, it still allows the message to be considered for route selection, ensuring that important routing information is not disregarded solely due to the lack of supported signature algorithms.</t>
          <t>For each remaining signature corresponding to an algorithm suite supported by the FC-BGP speaker, the FC-BGP speaker processes FC-BGP UPDATE message validation with the following steps. As different FC segments are independent, it is recommended to verify FC segments parallelly.</t>
          <!-- TODO: need more details or figures -->
<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 a SKI that matches the value in the Subject Key Identifier field of the FC segment.  If this check finds no such matching SKI value, then mark the entire FC segment as 'Not Valid' and stop.</t>
            </li>
            <li>
              <t>Step 2: Compute the digest function (for the given algorithm suite) on the appropriate data. To verify the digital signature in the FC segment, construct the sequence of octets to be hashed. Note that this sequence is the same sequence that was used by AS that created the FC Segment (see <xref target="fcbgp-update"/>). The elements in this sequence <bcp14>MUST</bcp14> be ordered exactly as shown in the generation process. Note that if an FC-BGP speaker uses multiple AS Numbers (e.g., the FC-BGP speaker is a member of a confederation), the AS number used here <bcp14>MUST</bcp14> be the AS number announced in the OPEN message for the BGP 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 value computed 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 'Not Valid' and stop.  If the signature validation algorithm determines that the signature is valid, then the FC segment is marked as 'Valid' and continues to process the following FC segments.</t>
            </li>
          </ul>
          <t>If all FC segments are marked as 'Valid', then the validation algorithm terminates and the FC-BGP UPDATE message is deemed 'Valid'. Otherwise, the FC-BGP UPDATE message is deemed 'Not Valid'.</t>
          <!-- TODO: This example can be placed in the appendix. It may be not proper here.
An FC-BGP speaker SHOULD no longer propagate an FC-BGP UPDATE message only after completing the first two steps (i.e., validation and best path selection. But they have been removed). For the sake of discussion, we assume that AS 65537 receives an FC-BGP UPDATE message for prefix 192.0.2.0/24, with an originating AS of 65536 and a next hop of 65538. All three ASs support FC-BGP.

The FC-BGP speaker in AS 65537, upon receiving an UPDATE message, retrieves the FC path attribute and extracts the FC list. It then finds the FC with CASN = 65536 and checks if NASN is equal to 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 message, 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 AS 65537 does not support FC-BGP, it simply forwards the BGP UPDATE to its neighbors when propagating this BGP route.

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.

When the AS-PATH uses AS_SEQUENCE in the BGP UPDATE, the FC-BGP function will not be enabled. In other cases, the FC-BGP speaker router will enable the FC-BGP function and update the FC path attribute after verifying the AS_PATH attribute and selecting the preferable BGP path.
All FC-BGP UPDATE messages must comply with the maximum BGP message size. If the final message exceeds the maximum message size, then it must follow the processing of {{Section 9.2 of RFC4271}}.

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. Afterwards, AS65537 will prepend its own FC on the top of the FC List. The FC path attribute uses the message format shown in {{figure1}} and {{figure2}} and should be signed with the RPKI router certificate. When signing the FC attribute, the FC-BGP speaker computes the  SHA256 hash in the order of (PASN ( 0 if absent), CASN, NASN, IP Prefix Address, and IP Prefix Length) firstly. Afterward, the FC-BGP speaker should calculate the digest information Digest, sign the Digest with ECDSA, and then fill the Signature field and FC fields. 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.
-->

</section>
      </section>
    </section>
    <section anchor="implementations-operations-and-management-considerations">
      <name>Implementations, Operations, and Management Considerations</name>
      <section anchor="algorithms-and-extensibility">
        <name>Algorithms and Extensibility</name>
        <t>The content of Algorithm Suite Considerations defined in <xref section="6.1" sectionFormat="of" target="RFC8205"/> and content of Considerations for the SKI Size defined in <xref section="6.2" sectionFormat="of" target="RFC8205"/> are indeed applicable in this context of FC-BGP.</t>
        <t>But the algorithm suite transition in FC-BGP is straightforward: As each FC segment has an Algorithm ID field, just populate this field with a feasible and consensus value that all FC-BGP speaker supports when transitioning.</t>
      </section>
      <section anchor="speedup-and-early-termination-of-signature-verification">
        <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 an FC-BGP UPDATE message is considered 'Valid' only if all FC segments are marked as 'Valid' in the validation steps. This means that if an FC segment is marked as 'Not Valid', 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 considered as 'Not Valid' if at least one signature in each of the FC segments 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="defering-validation">
        <name>Defering 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>
      </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.</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="private-as-numbers">
        <name>Private AS Numbers</name>
        <!-- TODO: need more study about AS confederation and private AS number -->
<t>The process of Private AS Numbers used in BGPsec speaker defined in <xref section="7.5." sectionFormat="of" target="RFC8205"/> also applies here.</t>
      </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="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 ASes can forward this attribute to its peers. Thus, FC-BGP is natively compatible with the BGP and supports partial deployment. It differs from BGPsec which replaces the AS_PATH attribute with a new Secure_Path information of BGPsec_Path attribute.</t>
        <t>As for incremental/partial deployment considerations, in Section 5.1.1 of <xref target="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="ARXIV"/> analyzes the benefits of FC-BGP in 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>It is <bcp14>NOT RECOMMENDED</bcp14> that both BGPsec and FC-BGP be enabled together. However, at the very least, the implementation <bcp14>SHOULD</bcp14> adequately process the coexistence update message.</t>
        <t>When an FC-BGP speaker also enables the BGPsec feature, it <bcp14>MUST</bcp14> also properly process the BGPsec UPDATE message as follows:</t>
        <ul spacing="normal">
          <li>
            <t>General Principle. The BGP speaker <bcp14>SHOULD</bcp14> prioritize BGPsec over FC-BGP. When both features are enabled, the BGP speaker processes the BGPsec UPDATE message first, then processes the FC-BGP UPDATE message.</t>
          </li>
          <li>
            <t>FC-BGP UPDATE Message Generation. The BGP speaker <bcp14>SHOULD</bcp14> prioritize the BGPsec_Path attribute over the AS_PATH attribute. This means that when broadcasting a BGP UPDATE message, the BGP speaker <bcp14>SHOULD</bcp14> first check if the peer supports BGPsec. If so, it <bcp14>SHOULD</bcp14> generate a BGPsec-enabled UPDATE message. In this message, BGPsec_Path replaces the AS_PATH attribute, and an MP_REACH_NLRI attribute <xref target="RFC4760"/> is used for encoding NLRI information. The generation of the FC Path attribute <bcp14>SHOULD</bcp14> use these attributes to generate FC Segments. The impact on FC generation is minimal, as it only needs to obtain PASN, CASN, NASN, Prefix Address, and Prefix Length from BGPsec_Path and MP_REACH_NLRI attributes separately.</t>
          </li>
          <li>
            <t>FC-BGP UPDATE Message Validation. The BGP speaker should also prioritize the BGPsec_Path over AS_PATH. After processing the BGPsec path attribute, the BGP speaker should decode the BGPsec_Path and MP_REACH_NLRI attributes. So, in the validation process, the BGP speaker <bcp14>SHOULD</bcp14> essentially reverse the steps it took during generation. It would first decode the BGPsec_Path and MP_REACH_NLRI attributes to obtain the necessary information (PASN, CASN, NASN, Prefix Address, and Prefix Length). Then, it would use this information to validate the corresponding FC Segment.</t>
          </li>
        </ul>
        <t>In summary, the coexistence of BGPsec and FC-BGP is not overly burdensome.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="security-guarantees">
        <name>Security Guarantees</name>
        <!-- TODO: Here these guarantees are different with BGPsec, from path to path segment -->
<t>TBD.</t>
        <t>When FC-BGP is used in conjunction with origin validation, the following security guarantees can be achieved:</t>
        <ul spacing="normal">
          <li>
            <t>The source AS in a route announcement is authorized.</t>
          </li>
          <li>
            <t>FC-BGP speakers on the AS-Path are authorized to propagate the route announcements.</t>
          </li>
          <li>
            <t>The forwarding path of packets is consistent with the routing path announced by the FC-BGP speakers.</t>
          </li>
        </ul>
        <t>FC-BGP is designed to enhance the security of control plane routing in the Internet at the network layer. Specifically, 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. More crucially, the above security guarantees offered by FC-BGP are not binary, i.e., secure or non-secure. Instead, the security benefits are strictly monotonically increasing as the deployment rate of FC-BGP (i.e., the percentage of ASs that are upgraded to support FC-BGP) increases.</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 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 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>
    <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>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="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="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="20" month="June" year="2024"/>
            <abstract>
              <t>   AS Path Prepending provides a tool to manipulate the BGP AS_PATH
   attribute through prepending multiple entries of an ASN.  AS Path
   Prepending is used to deprioritize a route or alternate path.  By
   prepending the local ASN multiple times, ASs can make advertised AS
   paths appear artificially longer.  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-13"/>
        </reference>
        <reference anchor="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 589?>

<!-- TODO: This chapter can be dropped totally but carefully. There are lots of chapters that refer to the comparison.
The biggest advantage of FC-BGP, compared with BGPsec, is the partial deployment. But it can be compared in the 'Incremental/Partial Deployment Considerations' 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 verification of the FC path attribute upon receiving BGP UPDATE messages, as well as 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.0.2 installed.</t>
      <t>TBD: github repo.</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>TODO acknowledge.
Many many thanks to Keyur Patel and BGPsec authors.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91963IbR5bmfz5FjfxD5A4AkZIs2Yy+UZRkc1sXNknZ7pmY
cBSAAlgtoApdVSCFdrufZZ9ln2zPNfNkVhYp97h3I1YT45YAVFZeTp7rd84Z
j8d7XdmtiuPswevT8YtvzrPzpu7qWb3KLjfFrFyUs7wr6+rBXj6dNsWN+92D
PfiiWNbN7jhru/ne3ryeVfkaBpo3+aIb3+bVctyW86betOPFbLrcjDcy8vjw
8V67na7LtoWRu90GHjp7dfU6y77I8lVbwzvKal5sCvhP1T0YZQ+KednVTZmv
8B9nJy/gf+oG/nZx9frBXrVdT4vmeG8O8znem9VVW1Tttj3OumZb7MGMn+zB
uE2RH2cnF69O9m7r5uOyqbcbmDjPb++mqLbw7BdZJl98/w3+g6f2Pfy+rJbZ
N/gVfrzOyxX+5A/Fp3y9WRWTWb3Gz/Nmdn2cXXfdpj1+9Mh8+QiGg6HL7no7
pQ2E/XsU7skD+MEKFtB28AMdgn444ecmZR098ujejZ5cd2sYeW9THmcZ7u4s
r7JtW8BMm3yX7ZcL2O9VtivaA9zP67y9zq6Lptjbg8eP8fO9tm66pli09C8c
Yl4s8u2qa7Ou5h/s1u77vb18213XcBZZNt7L6M9iu1oxXfyxyH7Yyqd1szzO
rlrY1uttnn2oypuiactuJ1/P4K/H2Yui/Av8Qj+rt1WH1HZ6XVa5fFjwWXza
fiz+0Mlwk2K+ncyq5Bx+KPN6VcKOZd/nbuRfeTJ4IJ/0PYfPHj/5w6L+hF8R
naRm9R/X27rL6+xN+S/an7/xC1bl9rN26U8lTOVfM5O/rsrDo8+axP+E7dvg
vfv+X7Qpf5EX/GFWNFXR9efC8/gznOKiKLNvtrWdx39c19Vyuc2r2bbK3uTT
usmBRf2zc1lu6x2/5w9/W85W+VRns1fVzRo48E2Bl+ri9enTx8+PjuEeIqvW
ey7fPH/8FL/5pslnBexjdgHcJG+67G0xu86rsl1nC7jl8KD+/tkh/v4tXOdS
h8pefeqAfQJfbvXX46f8+y+fffkMf//qFLjGsqav22K2bYqsvS6Aj3RNXrUb
YBjAyXZFw089e/oVveXi/I9nWVktmrwFvjzr4DH3g8f0g/cnuKBFufJfPMEv
bvJVOSchlAEH7grY/3JZIiND6qBx82qOz7vnnuNzJyjKcDia6Q+TLw+/zuDH
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
9JEUFdIzURsTRq3RFXLfgy3yfwCGd1G45QYBAA==

-->

</rfc>
