<?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.1 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-li-trustworthy-routing-discovery-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" updates="draft-li-trustworthy-routing-discovery-00" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="Trustworthy Routing Discovery">Trustworthy Routing Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-li-trustworthy-routing-discovery-00"/>

    <author initials="X." surname="Li" fullname="Xiaoyong Li">
      <organization>Beijing University of Posts and Telecommunications</organization>
      <address>
        <postal>
          <street>No.10 Xitucheng Road</street>
          <city>Beijing</city>
          <code>100876</code>
          <country>China</country>
        </postal>
        <email>lixiaoyong@bupt.edu.cn</email>
      </address>
    </author>

    <author initials="X." surname="Wei" fullname="Xinghai Wei">
      <organization>Beijing University of Posts and Telecommunications</organization>
      <address>
        <postal>
          <street>No.10 Xitucheng Road</street>
          <city>Beijing</city>
          <code>100876</code>
          <country>China</country>
        </postal>
        <email>junjuntvt@bupt.edu.cn</email>
      </address>
    </author>


    <date year="2025" month="February" day="24"/>
    <keyword>trustworthy routing</keyword>
    <keyword>BGP</keyword>
    <keyword>BGPsec</keyword>
    <abstract>
      <!-- <?line 88?> -->
      <t>End users with high security and privacy requirements expect their data to be transmitted only through trusted devices to mitigate the risk of data leakage. Therefore, the development of trustworthy routing mechanisms is anticipated to be a key trend in the future evolution of the internet. This specification describes a network architecture that supports trustworthy routing and a scheme for carrying trustworthy routing information (TRI) using the BGP and BGPsec protocols.</t>

    </abstract>
  </front>
  <middle>
    <!-- <?line 103?> -->

    <section anchor="intro">
      <name>Introduction</name>
      <t>In the existing network system, data transmission security is almost entirely achieved through end-to-end encryption. However, users with high security and privacy requirements are no longer satisfied with this mechanism. They now demand that traffic be forwarded only by network devices that meet their expected security properties. For example, some clients may require their data to traverse through trusted devices and links only, to avoid data being exposed to insecure devices, causing leakage. By utilizing remote attestation technology <xref target="RFC9334"/>, network Autonomous Systems (AS) can provide evidence of the level of security they support. This evidence can be exchanged between ASes through existing network protocols, such as BGP <xref target="RFC4271"/> or BGPsec <xref target="RFC8205"/>, and parsed by ASes that support trustworthy routing. Through distributed management, ASes can perceive the trustworthiness of other ASes and plan appropriate transmission paths according to the security requirements of endpoints' traffic. Note that despite the extensive body of work on trust assessment for devices, there is still no standardized framework for trustworthiness evaluation among researchers. Therefore, in this draft, a more flexible solution-the Trust Assessment Profile (TAP) is proposed, which contains a set of evaluation rules designed to assess whether a device meets specific trust requirements. Any network domain can maintain a set of TAPs, provided they are recognized by other domains. Within a domain, the orchestrator evaluates network devices based on specific TAPs and classifies them as either "trusted" or "untrusted" according to the rules of the current TAP. Additionally, we recommend advancing towards a multi-level trust classification in future research to enable more granular control over trust management. This document presents a network architecture that supports trustworthy routing and a scheme for carrying trustworthy routing information (TRI) using the BGP and BGPsec protocols.</t>
      
    </section>

    <section anchor="terminology">
      <name>Terminology</name>
      <section anchor="terms">
        <name>Terms</name>
        <t>The following terms are imported from <xref target="RFC9334"/>: Attester, Evidence, Verifier.</t>
        <t>Newly defined terms for this document:</t>
        <dl>
          <dt>Trust Assessment Profile ---</dt>
          <dd>
            <t>a set of rules that specify how the verifier evaluates the trustworthiness of the attester based on the evidence provided during the remote attestation process.</t>
          </dd>
          <dt>Trustworthy Routing Information ---</dt>
          <dd>
            <t>a series of messages that are exchanged between Autonomous Systems (AS) to propagate information regarding the trustworthiness of forwarding devices within the domain.</t>
          </dd>
          <dt>Trust Assessment Result ---</dt>
          <dd>
            <t>whether a network device meets a specific trust assessment profile, with the result being either "trusted" or "untrusted".</t>
          </dd>
        </dl>
      </section>

      <section anchor="requirements-notation">
        <name>Requirements Notation</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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t> 
      </section>
    </section>



    <section anchor="architecture">
      <name>Architecture</name>

            <figure anchor="overview">
          <name>Example architecture of trustworthy-routing supported network</name>
          <artwork><![CDATA[
                    +---------------------------------+                                          
                    |  +--------+          +-------+  |                                          
                    |  |        |          |       |  |                                          
                  +-+  |  TAP 1 |   ...    | TAP n |  +--+                                       
                  | |  |        |          |       |  |  |                                       
                  | |  +--------+          +-------+  |  |                                       
                  | +---------------------------------+  |                                       
                  |                                      |                                       
   +--------------+--------------------------------------+---------------+                       
   |       +------+-------+                       +------v-------+       |                       
   |       |    Verifer   |                       |    Verifer   |       |                       
   |       |              |         ..            |              <-------+---------------+       
   |       |   Vendor A   |                       | Vendor B & C |       |               |       
   |       +------^-------+                       +------^-------+       |               |       
   +--------------+--------------------------------------+---------------+               |       
                  |                Inter AS              |                Inter AS       |       
   +--------------+---------------+  API  +--------------+---------------+  API  +-------+------+
   |              |               |       |              |               |       |       |      |
   | AS A   +-----v------+        |       |        +-----v------+   AS B |       |+------v-----+|
   |        |            |<-------+-------+------->|            <--------+-------+>            ||
   |        |Orchestrator|        |       |        |Orchestrator|        |       ||Orchestrator||
   | +----->|            |<-----+ |       | +----->|            |<-----+ |       ||            ||
   | |      +-----^------+      | |       | |      +-----^------+      | |       |+--^---------+|
   | |            |             | |       | |            |             | |       |   |          |
+--+-v----+  +----v----+  +-----v-+-+  +--+-v----+  +----v----+  +-----v-+-+  +--+---v--+       |
|Attester |  |Attester |  |Attester |  |Attester |  |Attester |  |Attester |  |Attester |       |
|Vendor A1<-->Vendor A2<-->Vendor A3|  |Vendor B1<-->Vendor B2<-->Vendor B3<-->Vendor C1|  AS C |
|  (BR)   |  |  (IR)   |  |  (BR)   <-->  (BR)   |  |  (IR)   |  |  (BR)   |  |  (BR)   |       |
+--+------+  +---------+  +-------+-+  +--+------+  +---------+  +-------+-+  +--+------+       |
   |                              |       |                              |       |              |
   +------------------------------+Routing+------------------------------+Routing+--------------+
                                  UPDTE Msg.                             UPDTE Msg.                                                                                             
]]></artwork>
        </figure>

      <t><xref target="overview"/> illustrates an example architecture of a trustworthy-routing supported network in a scenario involving multiple ASes. Please note that the proposed architecture is based on the "multi client-multi operator" framework from <xref target="nasr-arch"/>. With this architecture, each orchestrator is operated by the AS's operator and is responsible for managing devices (Attesters) within its domain, providing TRI to other ASes, and communicating with other ASes' orchestrators via the Inter-AS API to negotiate trustworthy routing policy flexibly. Each attester holds a remote attestation report issued by the verifier of its respective domain, indicating its trustworthiness assessment results (TAR). The TAR of an attester is determined by a set of remote attestation rules, which are described in a trust assessment profile (TAP) and identified by a globally unique identifier, i.e., the trust assessment profile ID. All verifiers maintain consensus on the TAP. Note that within this framework, the TAR of a device is relative, determined by whether it is considered trusted under the specific rules of a given TAP.</t>

      <t>TRI is propagated among ASes through BGP UPDATE or BGPsec UPDATE messages. How the BGP and BGPsec protocol stacks are extended to carry TRI will be explained later. With the assistance of BGP or BGPsec, each AS can perceive the TAR of other ASes and select appropriate paths for transmission according to the service requirements of the client. It is important to note that the design of this architecture also allows non-adjacent ASes to establish an L3 logical link through orchestrator negotiation, thereby shielding the trustworthiness of intermediate domains from affecting the entire transmission chain. For example, in Fig 1, supposing AS A and AS C are considered trusted under a specific TAP T, while AS B is not. Without additional measures, the transmission path from A to C cannot support the TAP T due to the trust bottleneck at B. In this case, orchestrators in AS A and AS C can negotiate and establish a logical link between the edge routers (A3 - C1) of the two domains using L3 security technologies (such as IPsec), thereby satisfying the requirement of TAP T in the data transmission from A to C.</t>
    

    </section>

    <section anchor="protocol-design">
      <name>Protocol Design</name>
      <t>This draft presents the implementation of inter-domain propagation of TRI using the BGP or BGPsec protocols. Specifically, these protocols are extended to carry TRI segments. Each segment contains the TRI of an AS that supports trustworthy routing along the path. </t>

      <t>The format of the TRI segment is shown in <xref target="tri-segment-format"/>. The first three fields represent the AS identifier that publishes the TRI, the identifier of the verifier that conducts the remote attestation for the AS, and the remote attestation report identifier, respectively. The attestation report ID can be provided as a URL, allowing the administrators of the BGP router's domain to directly access the report and verify its authenticity. The trust assessment profile ID indicates the TAP identifier adopted by the AS. The TAR denotes whether this AS can be considered trusted under the given TAP. The timestamp denotes the publication time of the remote attestation result, serving to ensure the freshness of this information so that it consistently reflects the attester's latest state. Additionally, each TRI segment contains a signature field, where the AS sign the entire segment using its private key to ensure the authenticity of the TRI issuer's identity and prevents tampering of the TRI field during transmission. The selection of algorithms and key formats in the signing process can be guided by <xref target="RFC8205"/>.</t>

      <figure anchor="tri-segment-format">
          <name>TRI segment format</name>
          <artwork><![CDATA[
+-----------------------------------+
|             AS Number             |
+-----------------------------------+
|          Verifier Name/ID         |
+-----------------------------------+
|       Attestation Report ID       |
+-----------------------------------+
|    Trust Assessment Profile ID    |
+-----------------------------------+
|                TAR                |
+-----------------------------------+
|             Timestamp             |
+-----------------------------------+
|             Signature             |
+-----------------------------------+
]]></artwork>
        </figure>


      <t>This draft follows the passport model outlined in <xref target="RFC9334"/> to construct the data flow diagram between network entities. As shown in <xref target="data-flow-diagram"/>, when BGP router 1 seeks to prove the TAR of its AS to a router in another AS, such as BGP router 2, it first conveys its state information, known as "evidence", to a verifier that compares this evidence against a specific TAP. The verifier then returns the attestation result to BGP router 1. BGP router 1 does not consume the attestation result, but caches it and further encapsulates it into the TRI following the format outlined in Fig. 2. BGP router 1 then presents this TRI to BGP router 2 via BGP or BGPsec protocol, and BGP router 2 checks this information to determine whether to accept it. Specifically, BGP router 2 first compares the TAP ID contained in this message to determine whether the TAP is supported within BGP router 2's AS. It then verifies the signature field to ensure the authenticity of the TRI and subsequently updates the TAR associated with the AS of BGP router 1.</t>

        <figure anchor="data-flow-diagram">
          <name>The data flow diagram between network entities</name>
          <artwork><![CDATA[
    +------------+               +------------+         +------------+
    |            |               |            |         |            |
    |BGP Router 1|               |  Verifier  |         |BGP Router 2|
    |            |               |            |         |            |
    +------+-----+               +------+-----+         +------+-----+
           |                            |                      |      
           |          Evidence          |                      |      
           +--------------------------->|                      |      
           |                            |                      |      
           |                      Verification                 |      
           |                            |                      |      
           |     Attestaion results     |                      |      
           |<---------------------------+                      |      
           |                            |                      |      
Encapsulate the results                 |                      |      
     into the TRI                       |                      |      
           |                           TRI                     |      
           +----------------------------+--------------------->|      
           |                            |                      |      
           |                            |                Check the TRI
           |                            |                      |      
]]></artwork>
        </figure>

      <section anchor="bgp">
        <name>BGP</name>
              <figure anchor="tri-path-attribute-format-in-bgp">
          <name>TRI path attribute format in BGP</name>
          <artwork><![CDATA[
+---------------------------------------+ 
|     Path attribute type (2 octet)     | 
+---------------------------------------+ 
| Path attribute length (1 or 2 octecs) | 
+---------------------------------------+ 
|        TRI segments (variable)        | 
+---------------------------------------+ 
]]></artwork>
        </figure>

        <t>When using the BGP protocol, an extended field called the trustworthy routing path attribute is introduced to carry TRI. This extended field follows the TLV format and <xref target="RFC4271"/>, as shown in <xref target="tri-path-attribute-format-in-bgp"/>. The path attribute type is a 2 octets field that consists of the attribute flags and attribute type code, as shown in <xref target="path-attribute-type-format"/>.</t>

        <figure anchor="path-attribute-type-format">
          <name>Path attribute type format</name>
          <artwork><![CDATA[
+---------------------------------------+   
|       Attribute Flags (1 octet)       |   
+---------------------------------------+   
|     Attribute type code (1 octet)     |   
+---------------------------------------+   
]]></artwork>
        </figure>

        <t>Since the trustworthy routing path attribute is an optional transitive BGP path attribute, the first two bits of its attribute flags are set to 11. The remaining 6 bits of the path flags are configured according to <xref target="RFC4271"/>. The attribute type code indicates that this path attribute carries TRI. The path attribute length is a 1-octet or 2-octet field that indicates the total length of the value field. The value field of the trustworthy routing path attribute contains a series of consecutively arranged TRI segments that represent the TRI along the path.</t>




       </section>

       <section anchor="bgpsec">
        <name>BGPsec</name>
        <figure anchor="secure-path-segment">
          <name>The secure_path segment format of trustworthy-routing supported BGPsec</name>
          <artwork><![CDATA[
+-------------------+-------------------+
|  pCount (1 octet) |  Flags (1 octet)  |
+-------------------+-------------------+
|         AS Number (4 octets)          |
+---------------------------------------+
|             TRI segment               |
+---------------------------------------+
]]></artwork>
        </figure>

        <t>When using the BGPsec protocol, the TRI segment for each AS is separately placed within the corresponding secure_path segment, as shown in <xref target="secure-path-segment"/>. One of the seven unassigned bits in the Flags field is used to indicate whether the AS supports trustworthy routing, referred to as the E_T_R Flag in <xref target="flags-format"/>. If E_T_R Flag = 0, the AS does not support trustworthy routing, and the routing update message will be parsed according to the original BGPsec protocol. If E_T_R Flag = 1, the AS supports trustworthy routing, and its TRI will be included in the corresponding secure_path segment.</t>

        <figure anchor="flags-format">
          <name>Flags format</name>
          <artwork><![CDATA[
+-------------------+-------------------+-----------------------+
|  C_S Flag (1 bit) | E_T_R Flag (1 bit)|  Unassigned (6 bits)  |
+-------------------+-------------------+-----------------------+
]]></artwork>
        </figure>
        <t>It is important to note that the AS number is already included in the secure_path segment of BGPsec, so this information is omitted from the TRI. Additionally, since BGPsec already applies a signature mechanism to ensure the authenticity of the secure_path, the signature field in the TRI segment is also omitted.</t>


       </section>


    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document has no further security considerations.</t>
    </section>

    

  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>

        <reference anchor="RFC9334" target="https://www.rfc-editor.org/info/rfc9334">
          <front>
          <title>Remote ATtestation procedureS (RATS) Architecture</title>
          <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
          <author fullname="D. Thaler" initials="D." surname="Thaler"/>
          <author fullname="M. Richardson" initials="M." surname="Richardson"/>
          <author fullname="N. Smith" initials="N." surname="Smith"/>
          <author fullname="W. Pan" initials="W." surname="Pan"/>
          <date month="January" year="2023"/>
          <abstract>
          <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
          </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>

        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="RFC4271" target="https://www.rfc-editor.org/info/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="RFC8205" target="https://www.rfc-editor.org/info/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="nasr-arch" target="https://datatracker.ietf.org/doc/html/draft-liu-nasr-architecture">
          <front>
            <title>Network Attestation for Secure Routing (NASR) Architecture</title>
            <author initials="C." surname="Liu" fullname="Chunchi Liu"/>
            <author initials="M." surname="Chen" fullname="Meiling Chen"/>
            <author initials="M." surname="Richardson" fullname="Michael Richardson"/>
            <author initials="D." surname="Lopez" fullname="Diego Lopez"/>
            
            <date year="2024" month="October"/>
          </front>
        </reference>



      </references>
    </references>
    <!-- <?line 209?> -->



  </back>
  
</rfc>
