<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-altanai-tsv-multipath-nested-tunnels-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Multipath Tunnel Selection">Congestion-Aware Multipath Tunnel Selection for Transport Services</title>
    <seriesInfo name="Internet-Draft" value="draft-altanai-tsv-multipath-nested-tunnels-01"/>
    <author fullname="Altanai Bisht">
      <organization>Cisco Meraki</organization>
      <address>
        <email>albisht@cisco.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="14"/>
    <area>tsv</area>
    <workgroup>tsvwg</workgroup>
    <keyword>MASQUE</keyword>
    <keyword>VPN</keyword>
    <keyword>IPSec</keyword>
    <keyword>Congestion Control</keyword>
    <keyword>ECN</keyword>
    <keyword>Multipath</keyword>
    <keyword>Transport Services</keyword>
    <abstract>
      <?line 255?>

<t>This document addresses the transport-layer challenges of path selection in environments with multiple available tunneling options and congestion control mechanisms. It identifies congestion control conflicts that arise from nested tunneling protocols and proposes a congestion-aware multipath tunnel selection algorithm that conforms to the guidelines established in <xref target="RFC9599"/> for adding congestion notification to protocols that encapsulate IP. The proposed approach considers Explicit Congestion Notification (ECN) propagation, transport protocol characteristics, and network conditions to optimize path selection while avoiding multilevel congestion control issues. This work aligns with current Transport and Services Working Group efforts on Non-Queue-Building (NQB) behaviors, careful congestion control resume, and multipath transport protocols.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://altanai.github.io/tunnel-path-selection/draft-altanai-tsv-multipath-nested-tunnels.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-altanai-tsv-multipath-nested-tunnels/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        tsvwg WG mailing list (<eref target="mailto:tsvwg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tsvwg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tsvwg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/altanai/tunnel-path-selection"/>.</t>
    </note>
  </front>
  <middle>
    <?line 260?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A path for sending data across a network can consist of a combination of many factors such as uplink, application layer protocol, tunneling protocol among others. For example TLS  operates above the network layer, SSH and Secure Real-time Transport Protocol (SRTP) <xref target="RFC5764"/> operates at the application layer to carry data. Stream Control Transmission Protocol (SCTP), intended to tunnel signaling messages over IP networks, can encapsulate data as well. Tunneling can build a secure interconnection called Virtual Private Network(VPN) that provides a private subnet to pass traffic between the tunneled endpoints. This setup caters to enterprises and small private home networks alike. The protocols for such network level tunneling may include GRE, L2P, IPSec, WireGuard, OpenVPN and even proprietary protocols such as AutoVPN or custom implementtion over DTLS. Now multiple proxied stream- and datagram-based flows are possible inside an HTTP connection through the MASQUE which is build on QUIC. However there may be real world use-cases where network tunnels could nest application tunnels, which leads to large overheads in latency and quality of data.</t>
      <section anchor="fundamental-differences-tunneled-vs-non-tunneled-traffic-path-selection">
        <name>Fundamental Differences: Tunneled vs Non-Tunneled Traffic Path Selection</name>
        <t>Path selection for tunneled traffic operates under fundamentally different constraints and objectives compared to open internet traffic:</t>
        <t>Open internet traffic path selection is primarily controlled by either Applications (CDN selection, server choice) or Client-side networking stacks (Happy Eyeballs, etc.). To some extend user preferences and browser settings also play a role.
Over this the Internet Service Providers may further controlouting policies and peering agreements and add their propertiary Traffic engineering algorithms.</t>
        <t>Tunneled traffic path selection is primarily governed by enterprise or service provider security policies. These policies determine which traffic must be tunneled for compliance or security reasons along with geographic or jurisdictional routing constraints. The data sovereignty and privacy protection requirements apply strongly to secure networks service providers. For this reason Network service providers (NSPs) maintain strict control over tunneled traffic routing through:
- Dedicated tunnel infrastructure with specific performance guarantees
- Policy-based routing that may override optimal path selection for security
- Service Level Agreement (SLA) enforcement mechanisms
- Centralized management
- predtermined ingress and egress points
Unlike open internet traffic where applications can freely choose destinations, tunneled traffic has limited Endpoint Flexibility.</t>
      </section>
      <section anchor="current-path-selection-challenges">
        <name>Current Path Selection Challenges</name>
        <t>Today's heterogeneous networking landscape presents critical path selection challenges that span across multi-cloud environments, SASE architectures, and ISP networks, where vendors employ fundamentally incompatible approaches for routing incoming traffic flows. Multi-cloud deployments (AWS, Azure, Google Cloud so on ) suffer from inconsistent path selection decisions as traffic traverses between theirs and other's cloud providers, each implementing proprietary routing algorithms that optimize for local rather than global performance. SASE architectures compound these challenges by attenmpting to integrate  networking and security functions across multiple vendor solutions, yet current path selection mechanisms fail to coordinate effectively between edge security appliances, SD-WAN controllers, and cloud security services. Meanwhile, ISPs and network service providers continue to rely on fragmented approaches—ranging from load balancing across multiple paths to sophisticated ML-based traffic classification and queing—but these vendor-specific implementations lack standardization and interoperability, creating significant operational complexity and suboptimal performance when traffic flows cross vendor boundaries in modern hybrid network deployments.</t>
        <t>The key challenge is developing a standardized algorithm that can operate within the constraints of tunneled traffic while providing optimal performance, unlike open internet traffic where applications and ISPs have more flexibility in path selection decisions.</t>
        <section anchor="vendor-interoperability">
          <name>Vendor Interoperability Challenges</name>
          <t>When different vendors implement proprietary or incompatible path selection algorithms, several critical disadvantages emerge that significantly impact network operations and performance:</t>
          <section anchor="inconsistent-traffic-behavior-across-vendor-boundaries">
            <name>1. Inconsistent Traffic Behavior Across Vendor Boundaries</name>
            <t>Different vendor implementations may make contradictory path selection decisions for the same traffic flow, leading to conflicts and worst Suboptimal Routing where traffic may take longer, more expensive, or less reliable paths when crossing vendor boundaries.
This leads to performance Oscillation and inconsistencies across vendor implementations.</t>
            <t><strong>Example Scenario</strong>: A flow from Vendor A's SD-WAN appliance to Vendor B's tunnel endpoint may experience optimal path selection within Vendor A's domain but suboptimal selection when entering Vendor B's infrastructure due to incompatible metrics and decision criteria.</t>
          </section>
          <section anchor="operational-complexity-and-management-overhead">
            <name>2. Operational Complexity and Management Overhead</name>
            <t>Network operators face significant challenges with multiple proprietary path selection implementation across multi-vendor deployments. The challenges not only include tracking but synchoirnizing any updates. Incompatible algorithms from different vendors lead to redundant Path Probing where Multiple vendors may independently probe the same paths, consuming bandwidth and generating unnecessary traffic, thus duplicate discovery processes.  This makes troubleshoting tough ans also deuplicate configurations.  This further leads to computational overhead leading to inconsistent resource utilization and cache inefficiency due to no decision sharing among vendors.</t>
            <t>Network-Wide Suboptimization is another concern as Vendor algorithms optimizing for local criteria may create network-wide inefficiencies and Load Balancing Imbalances leading to uneven traffic distribution and congestion hotspots. Unpredictable path selection behavior makes accurate capacity planning difficult for everyone.</t>
          </section>
          <section anchor="security-and-compliance-risks">
            <name>3. Security and Compliance Risks</name>
            <t>Policy Enforcement Gaps based on varied interpretion makes may inadvertently route traffic through non-compliant paths or jurisdictions
Multiple proprietary implementations increase the overall attack surface as Vendor-specific path selection patterns may reveal sensitive network topology or traffic information.</t>
            <t>Proprietary unstandardised best path selection algorithms create dependencies resulting in increased Total Cost of Ownership (TCO) through vendor lock-in. Service quality degradation occurs through inconsistent user experiences with varying service quality depending on which vendor's equipment handles their traffic. Unpredictable path selection behavior also makes it difficult to guarantee service level agreements and createing network  continuity risks. Furthermore, this artificial differentiation fragments innovation as vendor-specific implementations prevent collaborative development of industry-wide improvements, create interoperability stagnation, and establish barriers to technology evolution.</t>
          </section>
        </section>
        <section anchor="the-need-for-standardization">
          <name>The Need for Standardization</name>
          <t>These disadvantages collectively demonstrate the critical importance of standardized path selection algorithms that can ensure consistent behavior by providing predictable path selection decisions across vendor boundaries, enable interoperability through seamless integration of multi-vendor network infrastructure, reduce operational complexity and enable global optimization rather than vendor-specific local optimization, and enhance security through consistent policy enforcement and threat response across all network elements.</t>
          <section anchor="path-discovery-overhead-and-resulting-conflicts">
            <name>Path discovery overhead and resulting conflicts</name>
            <t>The absence of standardized path selection algorithms creates significant overhead in discovering optimal paths and leads to widespread fragmentation challenges across heterogeneous tunnel deployments. When networking protocols use hole punching to establish paths between endpoints and multiple tunnels are formed for primary-standby or load sharing configurations, each vendor implements proprietary Path MTU Discovery (PMTUD) mechanisms that operate independently and often conflict with each other. This lack of coordination results in redundant path probing, where multiple vendors simultaneously attempt to discover the same path characteristics, consuming valuable bandwidth and generating unnecessary control traffic. The fragmentation problem is particularly acute because nested tunnels greatly impact traffic quality, with each encapsulation layer introducing additional headers that reduce the effective payload size, leading to frequent fragmentation and defragmentation cycles that increase computational overhead especially for time-sensitive applications operating under limited bandwidth constraints.</t>
            <t>While <xref target="RFC9868"/> Transport Options for UDP provides mechanisms for enhanced path characteristic discovery through embedded metrics, congestion state signaling, and capability advertisement within regular data packets, UDP options-based signaling falls fundamentally short in addressing the core challenges of optimal path selection in multi-vendor environments. The UDP options approach suffers from limited cross-vendor coordination where different implementations may interpret or prioritize the embedded path quality indicators differently. Furthermore, the DPLPMTUD implementation through UDP options designed to minimize fragmentation-related overhead becomes ineffective when vendors use incompatible fragmentation strategies or fail to coordinate MTU discovery across nested tunnel layers, resulting in suboptimal path selections that may actually increase rather than decrease fragmentation.</t>
            <t>The inadequacy becomes evident in complex multi-vendor scenarios where algorithm negotiation, ECN propagation and conflict detection mechanisms fail to provide the comprehensive coordination needed for truly globally optimal path selection. Even with sophisticated features like authenticated ECN marking propagation through nested tunnel layers and active identification of congestion control interference, the fundamental problem remains that these mechanisms operate in isolation without a standardized framework for making unified path selection decisions. This fragmentation of approaches leads to situations where UDP options may indicate one path as optimal based on embedded metrics, while vendor-specific algorithms select different paths based on proprietary criteria, resulting in inconsistent path selection behavior** that undermines the very benefits that UDP options were designed to provide. The lack of a unified decision-making framework means that even advanced signaling capabilities cannot overcome the coordination challenges inherent in multi-vendor tunnel deployments, necessitating the standardized path selection algorithm proposed in this document.</t>
          </section>
        </section>
        <section anchor="congestion">
          <name>Multilevel Congestion Control and ECN Propagation</name>
          <t>Nested tunneling protocols create significant challenges for congestion control mechanisms, particularly when multiple layers independently attempt to manage network congestion. This section addresses these challenges in accordance with <xref target="RFC9599"/> guidelines that add congestion notification to protocols that encapsulate IP. When transport protocols are tunneled within other transport protocols, multiple congestion control loops can interfere with each other, creating a complex interaction where the inner transport congestion control (e.g., TCP or QUIC) implements its own congestion control based on observed packet loss and RTT measurements, while simultaneously the tunnel transport congestion control (e.g., QUIC for MASQUE, UDP for IPsec) may implement its own independent congestion control mechanisms. These interaction effects result in the tunnel's congestion control affecting the RTT and loss measurements of the inner transport, leading to suboptimal performance and potential oscillations that degrade overall network efficiency.</t>
          <t>During ECN encapsulation, tunnel endpoints must copy the ECN field from the inner header to the outer header as specified in <xref target="RFC6040"/> to negotiate ECN capability during tunnel establishment to enable proper congestion notification propagation, but this process becomes increasingly complex when multiple ECMP tunnels or aggregated flows are involved, each potentially implementing different ECN handling strategies.</t>
          <t>To address these multilevel congestion control challenges, the proposed congestion-aware path selection algorithm incorporates multiple sophisticated mechanisms that work synergistically to provide comprehensive network congestion awareness. The algorithm monitors ECN CE (Congestion Experienced) markings on different paths to assess real-time congestion levels, while it also identifies increased RTT variability that often indicates congestion for path quality assessment that inform path selection decisions, and where available, queue delay measurements offer early congestion detection capabilities that enable proactive path switching before performance degradation becomes severe.</t>
          <t>This integrated approach to congestion management represents a significant advancement over current fragmented solutions, providing a standardized framework that can effectively coordinate congestion control across multiple tunnel layers while maintaining compatibility with existing <xref target="RFC9599"/> and <xref target="RFC6040"/> standards. By incorporating these multiple congestion indicators into a unified decision-making process, the algorithm can make intelligent path selection decisions that avoid the oscillations and performance degradation inherent in current multilevel congestion control implementations.</t>
          <t>In order to remain interoperable with the <xref target="RFC6040"/> tunneling requirements, implementations of this algorithm <strong><bcp14>MUST</bcp14></strong> behave as <em>full-functionality</em> encapsulators unless an operator explicitly configures <em>limited-functionality</em> mode. Specifically:</t>
          <ul spacing="normal">
            <li>
              <t>Tunnel ingress nodes <strong><bcp14>MUST</bcp14></strong> copy the inner IP ECN field to the outer IP header when encapsulating, set the outer header to Not-ECT only when the inner header is Not-ECT, and retain CE markings so downstream AQM devices can react consistently.</t>
            </li>
            <li>
              <t>Tunnel egress nodes <strong><bcp14>MUST</bcp14></strong> follow the decapsulation logic in Section 4 of <xref target="RFC6040"/>, including the requirement to set the restored ECN field to CE if either the inner or outer header indicated CE and to increment congestion counters exposed to the algorithm.</t>
            </li>
            <li>
              <t>When multiple tunnels are chained, each decapsulating node <strong><bcp14>MUST</bcp14></strong> aggregate CE counters from all upstream segments before feeding the data into the scoring routine to avoid double counting or suppression of congestion events.</t>
            </li>
            <li>
              <t>If an outer path is not ECN-capable, the algorithm <strong><bcp14>MUST</bcp14></strong> downgrade the effective ECN capability of the composite path to Not-ECT and, when possible, prefer alternate tunnels that preserve ECN signaling to comply with <xref target="RFC9599"/> guidance on congestion notification transparency.</t>
            </li>
          </ul>
          <t>These requirements ensure that the congestion-aware scoring logic aligns with existing ECN propagation standards and that nested tunnels do not introduce contradictory congestion signals.</t>
        </section>
        <section anchor="prioritization">
          <name>Prioritization</name>
          <t>Mainstream techniques such as packet marking( DSCP, ECN so on ) and queuing of other non-critical traffic (Fq-CODEL, CAKE AQM) to optimize for realtime streams is essentially prioritization in practice. However, VPN providers, CSPs and/or ISP may employ polar-opposite algorithms to shape traffic based on their interest which could lead to  an overall non-synchronized approach, where a stream is prioritized in some networks and deprioritized in other networks.</t>
        </section>
      </section>
      <section anchor="limited-scope-of-past-proposals-for-prioritiztion-or-path-selection">
        <name>Limited scope of past proposals for prioritiztion or path selection</name>
        <t>Some prior work presented to IETF with the inevitable need for traffic shaping and prioritiation may include one or more of the following</t>
        <t>At present, in the case of multiple active uplinks connecting to various ISPs, there are multiple techniques to steer or prioritize traffic across the network (see <xref target="I-D.ietf-intarea-tunnels"/>), which may include,</t>
        <section anchor="full-or-split-tunnel-based-on-diff-serv-via-differentiated-services-code-point-dscp">
          <name>1: Full or Split tunnel based on Diff Serv via Differentiated Services Code Point (DSCP)</name>
          <t><xref target="RFC3270"/> defines how to support the Diffserv architecture in MPLS networks, including how to encode DSCP in an MPLS header. Application priorities even though using the same protocol have also been used to mark the packets differently such as DSCP Packet Markings for WebRTC QoS <xref target="RFC8807"/>.
An example of path selection based on prioritiztion is that in case of dual uplinks available hosting an active tunnel tunnel each, use the one more with better performance for RTP since that is more prirotized over FTP data.</t>
          <t>The DSCP-based approach offers the advantage of being widely adopted across network infrastructures, making it a familiar and standardized method for traffic differentiation. However, this approach has significant limitations including unreliability in some cases where network operators may choose not to honor markings, and the inherent coarse-grained classification that cannot adequately differentiate between nuanced application requirements.</t>
        </section>
        <section anchor="multiple-active-vpn-uplinks-used-in-weighted-round-robin-order-or-ecmp">
          <name>2: Multiple Active VPN Uplinks used in weighted round robin order or ECMP</name>
          <t>In case of multiple Active VPN Uplinks available, multiple paths are available to a  destination which can be split tunneled, tunneled via different application or network layer or both such as nested tunneled.  With so many options generic traffic shaping rules are often applied which may be based on QoS such as MOS, loss, latency, jitter, usage history, throughput on all VPN sessions or any other customized score. Attributes such as app type, address or even client identifier such as mac address can also be used to balance load across available options.  Simple loop techniques such as Weighted Round Robin do not offer much granularity and can also result in misconfiguration or worse still creating a bottleneck. Other means of balancing the traffic across available paths are Equal-cost multi-path (ECMP) <xref target="RFC2992"/> which is fair by design and routes packets along multiple paths of equal cost but suffers from limited adaptability especially in sudden changes of network conditions and heterogeneous environments of unequal costs.
Although it is tough to make a path selection algorithm which is ideal for balance, scalability as well optimized for all kinds of resource utilization, not having a common basis for path selection can not only lead to detrimental user experience but also undue strain on the network.</t>
        </section>
        <section anchor="policy-based-routing-that-use-flow-preferences-to-pin-traffic-to-a-particular-path">
          <name>3. Policy-Based routing that use flow preferences to pin traffic to a particular path</name>
          <t>It is common for device or network policy to manage network flows such as bandwidth allocation or rate limiting, Geo or proximity based rules. At the device level these policies may prioritize some packets over others to avoid queing delay. Modern hybrid deployments employ many uplinks with a varity of traffic shaping policies which can be adjusted dynmaically not only based on Qos but also on hop-by-hop insights from network, tracking uplink's utilization, uptime, failure or outages.</t>
          <t>Policy-based routing provides the benefit of simplicity in implementation and configuration, making it straightforward for network administrators to define and manage traffic flows. However, this approach suffers from poor scalability as the number of policies and network complexity grows, often requiring manual intervention and becoming unwieldy in large-scale deployments.</t>
        </section>
        <section anchor="dynamic-path-selection-with-application-or-domain-identification">
          <name>4. Dynamic Path Selection with application or domain identification</name>
          <t>The aplication knows its type and can directly feed the information to the algorithm. If the sender is not aware of the application it can attempt to obtain this information from intelligent ML models as Network Based Application Recognition (NBAR) from Cisco. Models exist that can suggest bottlenecks for a traffic type on a path by analysising patterns.
Dynamic path selection can even rely on explicitly identifying Provisioning Domain Names through a Router Advertisement (RA) option. Discovering Provisioning Domain Names and Data, its architecture involving the authenticatio and trust model has been decribed in prior work <xref target="RFC7556"/> and <xref target="RFC8801"/>.</t>
        </section>
        <section anchor="masque-quic-multiplexing-for-all-web-trafic">
          <name>5. MASQUE (QUIC multiplexing) for all Web trafic</name>
          <t>MASQUE provides the advantage of being able to handle both reliable and unreliable data streams efficiently through QUIC multiplexing, offering flexibility in transport protocol selection. However, this approach has the limitation of not being well-suited for non-web-based traffic, potentially requiring additional adaptations or alternative solutions for enterprise applications that do not follow web protocols.</t>
        </section>
        <section anchor="whitelist-for-ip-address-or-tuples-to-prioritize">
          <name>6. Whitelist for IP address or tuples to prioritize</name>
          <t>Using whitelists for IP addresses or tuples offers the advantage of simplicity in implementation and clear, understandable traffic prioritization rules. However, this approach suffers from poor scalability as networks grow and IP address ranges change, requiring constant maintenance and becoming impractical for large-scale dynamic environments.</t>
        </section>
        <section anchor="entropy-headers">
          <name>7. Entropy headers</name>
          <t>Entropy headers are extension to traditional packet header that include information about the randomness of the packet's payload. These help distributing traffic more evenly in a multipath network, mitigating the risk of hotspots and potential congestion points.</t>
          <t>Entropy headers provide the advantage of being protected from in-path modification by making these headers non-updatable, ensuring the integrity of load balancing decisions. However, this approach raises privacy concerns as the entropy information may reveal patterns about the payload content or application behavior that could be exploited by network observers.</t>
        </section>
        <section anchor="tunnelling-of-explicit-congestion-notificationecn">
          <name>8. Tunnelling of Explicit Congestion Notification(ECN)</name>
          <t>Addition of ECN to IP <xref target="RFC3168"/> paved the way for much optimization in managing queues based on these marking. <xref target="RFC6040"/> describes the problems related to obscured original ECN markings in tunneled traffic. It proposes a standard for tunnels to propagate an extra level of congestion severity.</t>
          <t>ECN tunneling benefits from having existing standards that provide a foundation for implementation and interoperability across different network equipment vendors. However, the approach becomes significantly more complicated when dealing with nested tunnels, where multiple layers of ECN marking can create conflicts and require complex processing to maintain proper congestion signaling.</t>
        </section>
        <section anchor="flow-labelling-or-classification-for-traffic-steering">
          <name>9. Flow labelling or classification for traffic steering</name>
          <t>Flow labeling and classification approaches provide the significant advantage of enabling the application of artificially intelligent machine learning models for sophisticated traffic analysis and optimization, allowing for adaptive and predictive traffic management. However, this approach can compromise privacy by potentially exposing sensitive information about user behavior, application usage patterns, and business processes through the classification metadata.</t>
        </section>
      </section>
    </section>
    <section anchor="proposal-to-standardize-the-selection-algorithm">
      <name>Proposal to standardize the selection algorithm</name>
      <t>The VPN can be considered a limited premium network that protects confidential information of an organization such as business communication between retail stores. Hybrid work and move towards private access has increased the interest in tunneling traffic between endpoints. However at present, the traffic steering decision is made in a limited scoped or rule based manner which is different for various networks and service providers. Instead an alternative dynamic strategy is proposed which gauges the confidence in the various available options dynamically and may choose to send data directly via edge gateway, use one or more of the available tunnels or create a new on-demand tunnel, leveraging any of the tunneling protocols best suited.</t>
      <t>By dynamically deciding the tunnel type for a stream or packet, we could avoid the non-performing or counter-productive use-cases such as
* added latency on real time streaming
* added encryption for already end-to-end encrypted VoIP calls
* NAT traversal nightmare
* nested tunneling and double congestion control
* exhausting limited bandwidth available from VPN providers</t>
      <t>The proposal is to standardize an algorithm that computes multiple available options and decides whether, on-demand tunnels are created (via  MASQUE, IPSec, SSH, GRE other proprietary protocols such as AutoVPN), an existing set of tunnels be reused or any other route, based on the current network dynamics and vulnerability of the traffic.
Standardized Path selection decision making algorithm would ensure same treatment of the stream across heterogeneous networks.</t>
      <section anchor="algorithm-inputs">
        <name>Algorithm Input Parameters</name>
        <t>The congestion-aware multipath tunnel selection algorithm processes multiple input parameters organized into the following categories. These parameters are selected to ensure vendor-agnostic standardization for inter-cloud and inter-vendor tunneling scenarios:</t>
        <section anchor="transport-layer-metrics">
          <name>Transport Layer Metrics</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Available Bandwidth</strong>: Measured in bits per second, obtained through bandwidth estimation algorithms or derived from Bandwidth Delay Product (BDP) calculations. The algorithm uses techniques similar to those in QUIC congestion control <xref target="RFC9002"/>.</t>
            </li>
            <li>
              <t><strong>Round-Trip Time (RTT)</strong>: Both baseline RTT and RTT variation measurements, which indicate path latency characteristics and potential congestion.</t>
            </li>
            <li>
              <t><strong>Packet Loss Rate</strong>: Measured loss percentage that indicates network congestion or path quality issues.</t>
            </li>
            <li>
              <t><strong>ECN Markings Ratio</strong>: The percentage of packets marked with ECN Congestion Experienced (CE) bits, providing early congestion detection as per <xref target="RFC9599"/>.</t>
            </li>
            <li>
              <t><strong>UDP Options Enhanced Metrics</strong>: Leveraging <xref target="RFC9868"/> Transport Options for UDP to enable real-time path characteristic discovery:  </t>
              <ul spacing="normal">
                <li>
                  <t>Real-time Path Probing: UDP options carrying path quality metrics for immediate assessment without dedicated probe traffic</t>
                </li>
                <li>
                  <t>Congestion Control Compatibility Signaling: Transport options indicating supported congestion control algorithms (BBR, CUBIC, etc.) and ECN capabilities</t>
                </li>
                <li>
                  <t>Authentication Status: AUTH option validation confirming tunnel endpoint authenticity and preventing path manipulation attacks</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="path-characteristics-and-historical-performance">
          <name>Path Characteristics and Historical Performance</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Enhanced Tunnel Overhead Calculations</strong>: Leveraging <xref target="RFC9868"/> UDP options for precise overhead assessment:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Base Protocol Overhead: Static overhead from tunneling protocols (IPsec, MASQUE, WireGuard, etc.)</t>
                </li>
                <li>
                  <t>Dynamic UDP Options Overhead: Additional bytes from <xref target="RFC9868"/> transport options based on active feature set</t>
                </li>
                <li>
                  <t>Fragmentation Impact Assessment: Real-time evaluation of fragmentation probability using UDP options for Path MTU Discovery (DPLPMTUD)</t>
                </li>
                <li>
                  <t>Processing Overhead Metrics: CPU and memory costs for UDP option parsing and generation at tunnel endpoints</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Path MTU Discovery Enhanced</strong>: <xref target="RFC9868"/> DPLPMTUD support enabling:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Adaptive MTU Sizing: Dynamic adjustment based on observed fragmentation</t>
                </li>
                <li>
                  <t>Multi-layer MTU Coordination: Coordinated MTU discovery across nested tunnel layers</t>
                </li>
                <li>
                  <t>Fragmentation Avoidance: Proactive path selection to minimize fragmentation overhead</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Advanced Congestion Control Compatibility Assessment</strong>: <xref target="RFC9868"/> enhanced evaluation including:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Transport Option Negotiation: Capability discovery for congestion control algorithms through UDP options</t>
                </li>
                <li>
                  <t>ECN Propagation Verification: Active testing of ECN handling across tunnel layers using authenticated transport options</t>
                </li>
                <li>
                  <t>Congestion Control Interference Detection: Identification of nested congestion control conflicts through option-based signaling</t>
                </li>
                <li>
                  <t>Algorithm Compatibility Matrix: Real-time assessment of congestion control algorithm effectiveness on each path</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Historical Performance Database</strong>: Time-series data including:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Average throughput over different time periods (hourly, daily, weekly)</t>
                </li>
                <li>
                  <t>Failure frequency and duration statistics</t>
                </li>
                <li>
                  <t>Congestion pattern analysis</t>
                </li>
                <li>
                  <t>Peak usage periods and capacity utilization trends</t>
                </li>
                <li>
                  <t>UDP Options Performance History: <xref target="RFC9868"/> specific metrics including option parsing latency, authentication success rates, and DPLPMTUD effectiveness</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Predictive Performance Indicators</strong>:
   - Projected path quality based on historical patterns
   - Anticipated congestion windows based on time-of-day patterns
   - Failure probability predictions based on infrastructure health
   - Expected performance degradation under various load conditions
   - Real-time Path Quality Prediction: ML models path characteristic forecasting</t>
            </li>
          </ol>
        </section>
        <section anchor="network-state-information">
          <name>Network State Information</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Provisioning Domains (PvD)</strong>: Network characteristics and policies as defined in <xref target="RFC7556"/> and <xref target="RFC8801"/>.</t>
            </li>
            <li>
              <t><strong>Network Telemetry</strong>: Real-time network health data including queue depths, interface utilization, and error rates.</t>
            </li>
            <li>
              <t><strong>NQB Traffic Classification</strong>: Identification of Non-Queue-Building traffic that requires special handling as per TSVWG NQB PHB specifications.</t>
            </li>
            <li>
              <t><strong>UDP Options Network Discovery</strong>: <xref target="RFC9868"/> enhanced network state assessment:  </t>
              <ul spacing="normal">
                <li>
                  <t>Real-time Path Characteristic Discovery: Active measurement of path properties using UDP options without additional probe traffic</t>
                </li>
                <li>
                  <t>Transport Capability Negotiation: Dynamic discovery of network and endpoint transport feature support through option exchange</t>
                </li>
                <li>
                  <t>Security Policy Enforcement: Authenticated path validation using AUTH options to prevent path spoofing and ensure policy compliance</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="operational-requirements-and-constraints">
          <name>Operational Requirements and Constraints</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Failure Tolerance Specification</strong>: Configurable parameters defining acceptable service degradation:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Maximum acceptable RTT increase which is a percentage or absolute value</t>
                </li>
                <li>
                  <t>Minimum acceptable bandwidth threshold</t>
                </li>
                <li>
                  <t>Maximum tolerable packet loss rate</t>
                </li>
                <li>
                  <t>Service availability requirements e.g., 99.9% uptime</t>
                </li>
                <li>
                  <t>Graceful degradation preferences vs hard failover</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Cost Considerations</strong>: Economic factors affecting path selection:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Per-byte or per-minute tunnel service charges</t>
                </li>
                <li>
                  <t>Bandwidth cost differentials between providers</t>
                </li>
                <li>
                  <t>Infrastructure maintenance and operational costs</t>
                </li>
                <li>
                  <t>Service Level Agreement penalty costs</t>
                </li>
                <li>
                  <t>Peak usage surcharge implications</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Green Networking Parameters</strong>: Environmental impact considerations:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Carbon intensity of different network paths (grams CO2/kWh)</t>
                </li>
                <li>
                  <t>Energy efficiency ratings of tunnel endpoints</t>
                </li>
                <li>
                  <t>Renewable energy percentage of infrastructure providers</t>
                </li>
                <li>
                  <t>Geographic routing preferences for low-carbon paths</t>
                </li>
                <li>
                  <t>Time-of-day energy grid composition data</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Prioritization Matrix</strong>: Traffic classification and handling preferences:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Real-time traffic prioritization (VoIP, video conferencing)</t>
                </li>
                <li>
                  <t>Business-critical application identification</t>
                </li>
                <li>
                  <t>Time-sensitive transaction requirements</t>
                </li>
                <li>
                  <t>Bulk transfer tolerance levels</t>
                </li>
                <li>
                  <t>Interactive vs batch workload classification</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="security-and-policy-metrics">
          <name>Security and Policy Metrics</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Traffic Vulnerability Assessment</strong>: A normalized value (0.0-1.0) indicating the security exposure of traffic, where higher values indicate greater need for tunneling protection.</t>
            </li>
            <li>
              <t><strong>Policy Constraints</strong>: Enterprise or regulatory policies that may mandate or prohibit certain tunneling approaches for specific traffic types including:  </t>
              <ul spacing="normal">
                <li>
                  <t>Data sovereignty requirements (geographic routing restrictions)</t>
                </li>
                <li>
                  <t>Compliance framework mandates (GDPR, HIPAA, SOX)</t>
                </li>
                <li>
                  <t>Cryptographic algorithm requirements</t>
                </li>
                <li>
                  <t>Audit trail and logging requirements</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="path-evaluation-input-structure">
          <name>Path Evaluation Input Structure</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Available Path Inventory</strong>: Comprehensive catalog of available paths including:</t>
            </li>
          </ol>
          <t>For example :
<tt>yaml
path_inventory:
  - path_id: "path_001"
    tunnel_type: "ipsec"
    endpoints: ["gateway1.provider.com", "gateway2.provider.com"]
    characteristics:
      bandwidth_capacity: "1000 Mbps"
      baseline_rtt: "25 ms"
      provider: "Provider A"
      geographic_route: ["US-West", "US-East"]
      sla_guarantees:
        uptime: "99.95%"
        max_latency: "50 ms"
        min_bandwidth: "800 Mbps"
    historical_performance:
      avg_throughput_30d: "850 Mbps"
      failure_incidents_30d: 2
      avg_failure_duration: "4.2 minutes"
      peak_usage_hours: ["09:00-12:00", "14:00-17:00"]
    cost_structure:
      base_cost_per_gb: "$0.12"
      peak_surcharge: "25%"
      setup_cost: "$500"
    environmental_impact:
      carbon_intensity: "0.45 kg CO2/kWh"
      renewable_percentage: "75%"
</tt></t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Incoming Traffic Profile</strong>: Characteristics of traffic requiring path assignment:</t>
            </li>
          </ol>
          <t>For example :
<tt>yaml
traffic_profile:
  - flow_id: "flow_001"
    application_type: "video_conference"
    requirements:
      min_bandwidth: "5 Mbps"
      max_latency: "100 ms"
      max_jitter: "20 ms"
      priority: "high"
      failure_tolerance: "low"
    security_requirements:
      encryption_required: true
      compliance_frameworks: ["SOC2", "GDPR"]
      geographic_constraints: ["no_transit_through_china"]
    duration_estimate: "60 minutes"
    data_volume_estimate: "2.25 GB"
</tt></t>
        </section>
        <section anchor="telemetry-and-policy-acquisition">
          <name>Telemetry and Policy Acquisition</name>
          <t>The algorithm assumes access to verifiable telemetry, policy, and sustainability data. Rather than inventing a bespoke transport, implementations <strong><bcp14>SHOULD</bcp14></strong> reuse existing IETF mechanisms so that collectors and controllers can interoperate:</t>
          <ul spacing="normal">
            <li>
              <t>Provisioning Domain data <strong><bcp14>MUST</bcp14></strong> follow <xref target="RFC8801"/>/<xref target="RFC7556"/> JSON conventions so that geographic and policy constraints can be authenticated via PvD signatures.</t>
            </li>
            <li>
              <t>Streaming telemetry such as queue depth, interface utilization, and carbon-intensity metadata <strong><bcp14>SHOULD</bcp14></strong> be delivered via YANG-Push dynamic subscriptions (<xref target="RFC8641"/>/<xref target="RFC9232"/>) using existing models (e.g., <xref target="RFC8343"/> <tt>ietf-interfaces</tt>). Subscriptions <strong><bcp14>MUST</bcp14></strong> employ NETCONF/RESTCONF over mutually authenticated TLS to protect metric integrity.</t>
            </li>
            <li>
              <t>Energy metrics and SLA parameters that originate from external providers <strong><bcp14>SHOULD</bcp14></strong> be distributed using the <xref target="RFC8896"/> ALTO protocol when available, allowing multiple vendors to consume the same cost and carbon datasets.</t>
            </li>
            <li>
              <t>Policy repositories conveying compliance requirements <strong><bcp14>MUST</bcp14></strong> sign their payloads (JSON Web Signatures or CMS) and <strong><bcp14>SHOULD</bcp14></strong> expose a YANG model so operators can audit which constraints feed the scoring logic.</t>
            </li>
          </ul>
          <t>By explicitly binding telemetry collection to existing IETF standards, the draft avoids creating a parallel data plane and enables heterogeneous vendors to exchange the inputs required for consistent scoring.</t>
        </section>
      </section>
      <section anchor="technical-algorithm">
        <name>Technical Algorithm Details</name>
        <t>The core algorithm performs a multi-dimensional optimization to match incoming traffic profiles with available paths while respecting policy constraints and performance objectives.</t>
        <section anchor="algorithm-overview-for-a-sample-implementation">
          <name>Algorithm Overview for a sample implementation</name>
          <t>```
Input:
  - Traffic_Profile (T)
  - Available_Paths (P = {p1, p2, ..., pn})
  - Policy_Constraints (C)
  - Optimization_Weights (W)</t>
          <t>Output:
  - Selected_Path (p*)
  - Confidence_Score (0.0-1.0)
  - Fallback_Paths (list of p_fallback1, p_fallback2, etc.)</t>
          <t>Function: SelectOptimalTunnelPath(T, P, C, W)
```</t>
          <section anchor="step-1-policy-filtering">
            <name>Step 1: Policy Filtering</name>
            <t>Apply hard security and compliance constraints to eliminate paths that violate geographic, regulatory, or encryption requirements.
Remove paths that cannot satisfy data sovereignty, compliance framework, or mandatory security policy requirements.</t>
            <t>```python
def policy_filter(traffic_profile, available_paths, constraints):
    """
    Filter paths based on hard security and compliance constraints
    """
    eligible_paths = ..</t>
            <artwork><![CDATA[
for path in available_paths:
    # Check geographic constraints
    if not satisfies_geographic_constraints(path, constraints):
        continue

    # Check compliance requirements
    if not meets_compliance_requirements(path, traffic_profile.compliance):
        continue

    # Check encryption requirements
    if traffic_profile.encryption_required and not path.supports_encryption:
        continue

    # Check data sovereignty requirements
    if violates_data_sovereignty(path, constraints):
        continue

    eligible_paths.append(path)

return eligible_paths ```
]]></artwork>
          </section>
          <section anchor="step-2-performance-scoring">
            <name>Step 2: Performance Scoring</name>
            <t>Calculate performance compatibility scores for bandwidth adequacy, latency suitability, reliability, and congestion likelihood.
Generate normalized scores (0.0-1.0) based on current network metrics and historical performance data.</t>
            <t>```python
def calculate_performance_score(traffic_profile, path):
  """
  Calculate performance compatibility score (0.0-1.0)
  """
  scores = {}</t>
            <artwork><![CDATA[
# Bandwidth adequacy
bandwidth_ratio = path.available_bandwidth / traffic_profile.min_bandwidth
scores['bandwidth'] = min(1.0, bandwidth_ratio)

# Latency suitability
if path.current_rtt <= traffic_profile.max_latency:
    scores['latency'] = 1.0 - (path.current_rtt / traffic_profile.max_latency)
else:
    scores['latency'] = 0.0

# Reliability based on historical data
uptime_score = path.historical_uptime / 100.0
mtbf_score = calculate_mtbf_score(path.failure_history)
scores['reliability'] = (uptime_score + mtbf_score) / 2

# Congestion likelihood
current_utilization = path.current_load / path.capacity
congestion_risk = predict_congestion_risk(path, traffic_profile.duration)
scores['congestion'] = 1.0 - (current_utilization * 0.6 + congestion_risk * 0.4)

return scores ```
]]></artwork>
          </section>
          <section anchor="step-3-cost-benefit-analysis">
            <name>Step 3: Cost-Benefit Analysis</name>
            <t>Evaluate economic factors including data transfer costs, duration charges, and setup fees against traffic profile budget constraints.
Normalize cost scores where lower total costs yield higher scores, with zero score for budget-exceeding paths.</t>
            <t>```python
def calculate_cost_score(traffic_profile, path):
    """
    Calculate normalized cost score (lower cost = higher score)
    """
    # Calculate total cost for traffic profile
    data_cost = traffic_profile.data_volume * path.cost_per_gb
    duration_cost = traffic_profile.duration * path.cost_per_minute
    setup_cost = path.setup_cost if path.requires_setup else 0</t>
            <artwork><![CDATA[
total_cost = data_cost + duration_cost + setup_cost

# Normalize against maximum acceptable cost
if total_cost <= traffic_profile.max_cost:
    return 1.0 - (total_cost / traffic_profile.max_cost)
else:
    return 0.0  # Exceeds budget ```
]]></artwork>
          </section>
          <section anchor="step-4-environmental-impact-scoring">
            <name>Step 4: Environmental Impact Scoring</name>
            <t>Assess carbon intensity, renewable energy percentage, energy efficiency ratings, and geographic routing efficiency.
Combine environmental factors into composite green scores to support sustainable networking decisions.</t>
            <t>```python
def calculate_green_score(traffic_profile, path):
    """
    Calculate environmental impact score (lower impact = higher score)
    """
    # Carbon intensity scoring
    carbon_score = 1.0 - (path.carbon_intensity / MAX_CARBON_INTENSITY)</t>
            <artwork><![CDATA[
# Renewable energy percentage
renewable_score = path.renewable_percentage / 100.0

# Energy efficiency of path
efficiency_score = path.energy_efficiency_rating / 5.0  # Assume 5-star rating

# Geographic routing efficiency (shorter paths generally more efficient)
routing_efficiency = calculate_routing_efficiency(path.geographic_route)

return (carbon_score * 0.4 + renewable_score * 0.3 +
        efficiency_score * 0.2 + routing_efficiency * 0.1) ```
]]></artwork>
          </section>
          <section anchor="step-5-failure-tolerance-evaluation">
            <name>Step 5: Failure Tolerance Evaluation</name>
            <t>Verify each path's ability to meet RTT degradation tolerance, bandwidth guarantees, and availability requirements.
Generate binary tolerance scores based on SLA guarantees and traffic profile failure tolerance specifications.</t>
            <t>```python
def evaluate_failure_tolerance(traffic_profile, path):
    """
    Assess path's ability to meet failure tolerance requirements
    """
    tolerance_scores = {}</t>
            <artwork><![CDATA[
# RTT degradation tolerance
predicted_rtt_increase = predict_rtt_degradation(path)
if predicted_rtt_increase <= traffic_profile.max_rtt_increase:
    tolerance_scores['rtt_tolerance'] = 1.0
else:
    tolerance_scores['rtt_tolerance'] = 0.0

# Bandwidth degradation tolerance
min_guaranteed_bw = path.sla_guarantees.min_bandwidth
if min_guaranteed_bw >= traffic_profile.min_bandwidth:
    tolerance_scores['bandwidth_tolerance'] = 1.0
else:
    tolerance_scores['bandwidth_tolerance'] = 0.0

# Availability requirements
if path.sla_guarantees.uptime >= traffic_profile.min_availability:
    tolerance_scores['availability'] = 1.0
else:
    tolerance_scores['availability'] = 0.0

return tolerance_scores ```
]]></artwork>
          </section>
          <section anchor="step-6-composite-scoring-and-selection">
            <name>Step 6: Composite Scoring and Selection</name>
            <t>Calculate weighted composite scores using optimization weights and apply priority multipliers.
Sort paths by final scores and select optimal path with confidence calculation and fallback path identification.</t>
            <t>```python
def select_optimal_path(traffic_profile, eligible_paths, weights):
    """
    Calculate composite scores and select optimal path
    """
    scored_paths = ...</t>
            <artwork><![CDATA[
for path in eligible_paths:
    perf_scores = calculate_performance_score(traffic_profile, path)
    cost_score = calculate_cost_score(traffic_profile, path)
    green_score = calculate_green_score(traffic_profile, path)
    tolerance_scores = evaluate_failure_tolerance(traffic_profile, path)

    # Calculate weighted composite score
    composite_score = (
        perf_scores['bandwidth'] * weights['bandwidth'] +
        perf_scores['latency'] * weights['latency'] +
        perf_scores['reliability'] * weights['reliability'] +
        perf_scores['congestion'] * weights['congestion'] +
        cost_score * weights['cost'] +
        green_score * weights['environmental'] +
        tolerance_scores['rtt_tolerance'] * weights['rtt_tolerance'] +
        tolerance_scores['bandwidth_tolerance'] * weights['bw_tolerance'] +
        tolerance_scores['availability'] * weights['availability']
    )

    # Apply priority multiplier
    priority_multiplier = get_priority_multiplier(traffic_profile.priority)
    final_score = composite_score * priority_multiplier

    scored_paths.append({
        'path': path,
        'score': final_score,
        'component_scores': {
            'performance': perf_scores,
            'cost': cost_score,
            'environmental': green_score,
            'tolerance': tolerance_scores
        }
    })

# Sort by score (descending)
scored_paths.sort(key=lambda x: x['score'], reverse=True)

if not scored_paths:
    return None, 0.0, ..

# Select best path and prepare fallbacks
best_path = scored_paths[0]
fallback_paths = [sp['path'] for sp in scored_paths[1:4]]  # Top 3 alternatives

# Calculate confidence based on score separation
confidence = calculate_confidence_score(scored_paths)

return best_path['path'], confidence, fallback_paths ```
]]></artwork>
          </section>
          <section anchor="step-7-dynamic-re-evaluation">
            <name>Step 7: Dynamic Re-evaluation</name>
            <t>Monitor selected path performance continuously and trigger re-evaluation when degradation exceeds thresholds.
Implement seamless path migration with minimal service disruption when better alternatives become available.
The algorithm includes continuous monitoring and re-evaluation capabilities:</t>
            <t>```python
def continuous_path_monitoring(selected_path, traffic_flow):
    """
    Monitor path performance and trigger re-evaluation if needed
    """
    while traffic_flow.active:
        current_metrics = measure_path_performance(selected_path)</t>
            <artwork><![CDATA[
    # Check if path performance has degraded
    if performance_degraded(current_metrics, expected_performance):
        # Trigger re-evaluation
        new_path, confidence, fallbacks = SelectOptimalTunnelPath(
            traffic_flow.profile,
            get_current_available_paths(),
            get_current_constraints(),
            get_current_weights()
        )

        if new_path != selected_path and confidence > SWITCH_THRESHOLD:
            initiate_path_migration(traffic_flow, selected_path, new_path)
            selected_path = new_path

    time.sleep(MONITORING_INTERVAL) ```
]]></artwork>
          </section>
        </section>
        <section anchor="algorithm-flow-diagrams">
          <name>Algorithm Flow Diagrams</name>
          <t>```
Tunnel Path Selection Algorithm Flow
====================================</t>
          <t>Input Attributes → Traffic Profile (T) + Available Paths (P) + Policy Constraints (C) + Weights (W)
     │
     ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│  STEP 1: POLICY FILTERING                                                           │
│  ────────────────────────                                                           │
│  Input: Traffic Profile (Geographic, Compliance, Encryption, Data Sovereignty)     │
│  Process: Filter paths based on hard security constraints                          │
│  Output: Eligible Paths (Filtered P)                                               │
└──────────────────────────────────┬──────────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│  STEP 2: PERFORMANCE SCORING                                                        │
│  ──────────────────────────                                                         │
│  Input: Traffic Profile (Min Bandwidth, Max Latency, Duration)                     │
│  Process: Calculate scores for Bandwidth, Latency, Reliability, Congestion         │
│  Output: Performance Scores per Path                                                │
└──────────────────────────────────┬──────────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│  STEP 3: COST-BENEFIT ANALYSIS (Based on Input Attributes)                         │
│  ─────────────────────────────────────────────────────                             │
│  Input: Traffic Profile (Data Volume, Duration, Max Cost)                          │
│  Process: Calculate data_cost + duration_cost + setup_cost                         │
│  Output: Cost Scores per Path                                                       │
└──────────────────────────────────┬──────────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│  STEP 4: ENVIRONMENTAL IMPACT SCORING (Based on Input Attributes)                  │
│  ────────────────────────────────────────────────────────────────                  │
│  Input: Traffic Profile (Green Preferences, Geographic Constraints)                │
│  Process: Score Carbon Intensity, Renewable %, Energy Efficiency, Route Efficiency │
│  Output: Environmental Scores per Path                                              │
└──────────────────────────────────┬──────────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│  STEP 5: FAILURE TOLERANCE EVALUATION (Based on Input Attributes)                  │
│  ────────────────────────────────────────────────────────────────                  │
│  Input: Traffic Profile (Max RTT Increase, Min Bandwidth, Min Availability)        │
│  Process: Check RTT tolerance, Bandwidth tolerance, Availability requirements      │
│  Output: Tolerance Scores per Path                                                  │
└──────────────────────────────────┬──────────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│  STEP 6: COMPOSITE SCORING AND SELECTION                                           │
│  ───────────────────────────────────────                                           │
│  Input: All Previous Scores + Optimization Weights (W)                             │
│  Process: Calculate weighted composite score for each path                          │
│  Output: Selected Path + Confidence Score + Fallback Paths                         │
└──────────────────────────────────┬──────────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
│  STEP 7: DYNAMIC RE-EVALUATION                                                     │
│  ─────────────────────────────                                                     │
│  Input: Current Path Performance + Original Traffic Profile                        │
│  Process: Continuous monitoring and trigger re-evaluation if degraded              │
│  Output: Path Migration Decision (if needed)                                       │
└─────────────────────────────────────────────────────────────────────────────────────┘
```</t>
        </section>
        <section anchor="algorithm-configuration-and-weights">
          <name>Algorithm Configuration and Weights</name>
          <t>The algorithm uses configurable weights to adapt to different deployment scenarios:</t>
          <t>```yaml
algorithm_weights:
  # Performance factors (sum to 1.0)
  bandwidth: 0.25
  latency: 0.20
  reliability: 0.20
  congestion: 0.15</t>
          <t># Operational factors
  cost: 0.10
  environmental: 0.05</t>
          <t># Tolerance factors
  rtt_tolerance: 0.02
  bw_tolerance: 0.02
  availability: 0.01</t>
          <t># Priority multipliers for different traffic classes
  priority_multipliers:
    critical: 1.5
    high: 1.2
    normal: 1.0
    low: 0.8</t>
          <t># Thresholds for decision making
  thresholds:
    minimum_acceptable_score: 0.6
    path_switch_threshold: 0.15  # Switch if new path scores 15% higher
    monitoring_interval: "30s"
    re_evaluation_triggers:
      - "rtt_increase &gt; 50%"
      - "bandwidth_drop &gt; 20%"
      - "packet_loss &gt; 1%"
      - "availability &lt; sla_requirement"
```</t>
          <t>Prior work that standardized algorithms for networking include:</t>
          <ul spacing="normal">
            <li>
              <t>Happy Eyeballs <xref target="RFC6555"/> and Happy Eyeballs Version 2 <xref target="RFC8305"/> algorithms for dual-stack hosts</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="interop">
        <name>Interoperability with Existing Multipath Transports</name>
        <t>The algorithm is transport-agnostic, but it is intentionally designed to interoperate with active multipath efforts:</t>
        <ul spacing="normal">
          <li>
            <t><strong>MPTCP (<xref target="RFC8684"/>)</strong>: Controllers can expose the computed path rankings via the MPTCP path manager API so that subflow establishment favors tunnels whose composite score exceeds the <tt>minimum_acceptable_score</tt>. CE counter aggregation from Section <xref target="congestion"/> feeds directly into the coupled congestion controllers defined in <xref target="RFC8684"/>.</t>
          </li>
          <li>
            <t><strong>Multipath DCCP (<xref target="MULTIPATH-DCCP"/>)</strong>: The per-path congestion likelihood and failure-tolerance outputs map to the connection tuple selection procedure in Section 4 of the draft, allowing endpoints to bias the creation of additional DCCP flows toward tunnels with higher headroom.</t>
          </li>
          <li>
            <t><strong>QUIC + MASQUE</strong>: MASQUE clients can transport the scoring metadata inside DATAGRAM or H3 control streams so that MASQUE relay selection reflects the same policy inputs as underlay VPNs. QUIC multipath extensions can subscribe to the monitoring hooks from Step 7 to trigger seamless path migration.</t>
          </li>
          <li>
            <t><strong>PCE/TE Controllers</strong>: When paths terminate on MPLS or SR-MPLS fabrics, the algorithm’s path inventory can be realized as TE tunnels computed by PCE. The composite scores then act as inputs to RFC8231 Stateful PCE updates, ensuring LSP selection aligns with congestion-aware tunnel scoring.</t>
          </li>
        </ul>
        <t>An implementation that already participates in these ecosystems therefore only needs a binding layer that translates the algorithm outputs (preferred path, confidence, fallback set) into the transport’s native control messages.</t>
      </section>
      <section anchor="relationship-to-existing-ietf-traffic-engineering-solutions">
        <name>Relationship to Existing IETF Traffic Engineering Solutions</name>
        <t>This work complements, rather than replaces, other IETF optimizers:</t>
        <ul spacing="normal">
          <li>
            <t><strong>RFC9308 (BIER-TE)</strong>: BIER-TE distributes bitstrings for deterministic replication within a single domain. It does not examine congestion telemetry or multi-constraint scoring. The proposed algorithm can select which overlay tunnel (potentially backed by BIER-TE segments) should carry a flow, while BIER-TE continues to engineer the underlay multicast topology.</t>
          </li>
          <li>
            <t><strong>RFC8938 (ALTO)</strong>: ALTO provides cost maps and endpoint properties at the application layer. The algorithm reuses ALTO as one of its telemetry inputs (Section <xref target="telemetry-and-policy-acquisition"/>) but adds congestion, compliance, and environmental criteria plus real-time re-evaluation logic that ALTO alone does not define.</t>
          </li>
          <li>
            <t><strong>RFC8679 (L4S)</strong>: L4S describes low-latency differentiated services and dual-queue AQMs. The algorithm leverages L4S signals (e.g., ECN CE ratios, queue delay) when available but targets the decision layer that arbitrates between multiple tunnels, ensuring that L4S-enabled traffic is placed onto paths where dual-queue AQMs actually exist.</t>
          </li>
        </ul>
        <t>By articulating these boundaries, the draft clarifies that it builds a standardized decision layer above existing TE, ALTO, and L4S mechanisms while remaining fully compatible with them.</t>
      </section>
      <section anchor="design-goals">
        <name>Design goals</name>
        <t>The goal of standardizing such a path selection algorithm is to enable the network devices including endpoints to make decisions independently when choosing path characteristics over others. An endpoint, for example, can achieve different prioritization based on the application contained inside flows. At the network devices the decision can be propagated or the device can re-use the same decision making algorithms at its end with richer data points to make a more optimized decision.
The goals of this design are as follows :
* Applications do not need to understand Failover Groups with multiple uplinks.
* Avoid strict priority ordering of multiple paths.
* Avoid static scheduling algorithms such as weighted round robin which do not benefit the majority of use cases such as low latency path for time-sensitive data.
* Other indirect impacts of the algorithm may also be to overcome strategies which unfairly maximize bandwidth usage in the public internet.</t>
      </section>
      <section anchor="nested-tunnel-benefits">
        <name>Benefits for Nested Tunnel Deployments</name>
        <t>Nested tunnels arise whenever a flow is encapsulated more than once before it reaches its destination. This is common and often unavoidable in modern deployments: a remote worker's MASQUE or QUIC session may traverse a corporate IPsec VPN, which itself rides over a carrier GRE or SR-MPLS underlay, which may in turn be tunneled across a cloud provider's overlay. Each layer is typically provisioned by a different administrative domain that is unaware of the layers above or below it. As noted in <xref target="congestion"/> and <xref target="I-D.ietf-intarea-tunnels"/>, this stacking introduces cumulative header overhead, repeated fragmentation, redundant cryptography, and, most damagingly, multiple independent congestion control loops that interact in ways none of the individual layers can observe.</t>
        <t>The congestion-aware multipath tunnel selection algorithm is uniquely positioned to mitigate these problems because it treats the <em>composite</em> path, that is the full stack of nested encapsulations, as the unit of evaluation rather than scoring each layer in isolation. The following subsections describe the specific benefits.</t>
        <section anchor="nested-stack-model">
          <name>Modeling the Nested Tunnel Stack</name>
          <t>To reason about nesting, the algorithm models every candidate path as an ordered stack of encapsulation layers. Each layer contributes its own overhead, congestion-control behavior, ECN capability, and cryptographic properties, and the composite metrics are derived by folding the per-layer contributions together.</t>
          <t>```
Composite Path = Nested Tunnel Stack
=====================================</t>
          <t>┌───────────────────────────────────────────────┐
  │ Application flow (inner transport: TCP / QUIC)  │  &lt;- inner CC loop
  ├───────────────────────────────────────────────┤
  │ Layer 3: MASQUE / QUIC (CONNECT-UDP or -IP)     │  &lt;- CC loop + ECN + crypto
  ├───────────────────────────────────────────────┤
  │ Layer 2: IPsec (ESP over UDP)                   │  &lt;- ECN copy (RFC 6040) + crypto
  ├───────────────────────────────────────────────┤
  │ Layer 1: GRE / SR-MPLS carrier underlay         │  &lt;- ECN copy + overhead
  └───────────────────────────────────────────────┘
                       │
                       ▼
      Composite metrics fed to scoring routine:
        overhead   = sum of per-layer header bytes
        ecn_cap    = AND of per-layer ECN transparency
        ce_ratio   = aggregate of upstream CE counters (RFC 6040)
        cc_loops   = count of independent congestion controllers
        crypto     = set of encryption layers (detect redundancy)
        eff_mtu    = min over layers after overhead subtraction
```</t>
          <t>By making the stack explicit, the algorithm can detect and penalize pathological nesting instead of silently inheriting its costs.</t>
        </section>
        <section anchor="benefit-1-elimination-of-redundant-congestion-control-loops">
          <name>Benefit 1: Elimination of Redundant Congestion Control Loops</name>
          <t>When an inner transport with its own congestion controller (for example QUIC or TCP) is carried inside a tunnel transport that also runs congestion control (for example QUIC for MASQUE), the two loops compete: the outer loop's backoff distorts the RTT and loss signals that the inner loop measures, producing oscillation and throughput collapse as described in <xref target="congestion"/>.</t>
          <t>The algorithm addresses this directly by exposing a <tt>cc_loops</tt> count and a congestion-control-interference indicator (Section <xref target="algorithm-inputs"/>, inputs 8 and its UDP-options extensions) for every composite path. During composite scoring (Section <xref target="technical-algorithm"/>, Step 2) paths that stack multiple active congestion controllers receive a reduced congestion sub-score, biasing selection toward:</t>
          <ul spacing="normal">
            <li>
              <t>paths where at most one layer performs congestion control, or</t>
            </li>
            <li>
              <t>paths where the outer layer operates in an unreliable/datagram mode (for example MASQUE <tt>CONNECT-UDP</tt> carrying an already-congestion-controlled inner flow) so that only the inner loop governs the rate.</t>
            </li>
          </ul>
          <t>This gives operators a standardized way to prefer "congestion-control-neutral" encapsulations over doubly-controlled ones, rather than each vendor guessing independently.</t>
        </section>
        <section anchor="benefit-2-coherent-ecn-propagation-across-layers">
          <name>Benefit 2: Coherent ECN Propagation Across Layers</name>
          <t>Correct congestion signaling in a nested stack requires every encapsulating and decapsulating node to honor <xref target="RFC6040"/> and <xref target="RFC9599"/>. If any single layer resets or drops the ECN field, the congestion experienced by inner packets becomes invisible to the endpoints, and CE marks applied at one layer may be double-counted or suppressed at another.</t>
          <t>The algorithm enforces the full-functionality encapsulation rules already mandated in <xref target="congestion"/> and turns compliance into a selection input:</t>
          <ul spacing="normal">
            <li>
              <t>The composite <tt>ecn_cap</tt> of a stack is the logical AND of each layer's ECN transparency; a single non-transparent layer downgrades the whole path to Not-ECT, which the algorithm penalizes so ECN-preserving stacks are preferred.</t>
            </li>
            <li>
              <t>CE counters are aggregated across all upstream segments before scoring, exactly as required in <xref target="congestion"/>, so a CE mark applied deep in the stack is counted once and drives path selection consistently regardless of which layer observed it.</t>
            </li>
          </ul>
          <t>The result is that ECN remains a trustworthy congestion signal end-to-end even through several encapsulations, which is precisely the property that ad hoc per-layer tunneling fails to guarantee.</t>
        </section>
        <section anchor="benefit-3-cumulative-overhead-and-mtu-coordination">
          <name>Benefit 3: Cumulative Overhead and MTU Coordination</name>
          <t>Every layer of nesting adds header bytes and lowers the effective MTU. Uncoordinated layers each run their own Path MTU Discovery, leading to conflicting MTU estimates, black holes, and the repeated fragmentation/reassembly cycles called out in <xref target="RFC4459"/> and the path-discovery discussion above.</t>
          <t>Using the enhanced overhead and MTU inputs (Section <xref target="algorithm-inputs"/>, inputs 6 and 7) the algorithm:</t>
          <ul spacing="normal">
            <li>
              <t>computes the <em>summed</em> header overhead of the entire stack and the <em>minimum</em> effective MTU across layers as first-class metrics, so a deeply nested but nominally high-bandwidth path is correctly scored below a shallower path once fragmentation risk is accounted for;</t>
            </li>
            <li>
              <t>performs multi-layer MTU coordination via <xref target="RFC9868"/> DPLPMTUD so a single PMTU value is negotiated for the composite path instead of each layer probing independently;</t>
            </li>
            <li>
              <t>proactively steers fragmentation-sensitive, latency-critical flows (for example real-time media) away from stacks whose effective MTU would force fragmentation.</t>
            </li>
          </ul>
        </section>
        <section anchor="benefit-4-detection-of-redundant-encryption-and-layer-collapse">
          <name>Benefit 4: Detection of Redundant Encryption and Layer Collapse</name>
          <t>A frequent nested-tunnel anti-pattern is wrapping already-encrypted traffic in additional encryption, for example tunneling an end-to-end-encrypted VoIP call through an IPsec VPN through a TLS proxy. This adds latency and CPU cost for no additional security benefit, one of the explicitly non-performing cases listed in <xref target="proposal-to-standardize-the-selection-algorithm"/>.</t>
          <t>Because the algorithm's path model records the <tt>crypto</tt> set for each layer, it can identify stacks that apply redundant confidentiality and, subject to policy, prefer a path that collapses unnecessary layers, for example sending an already-encrypted flow directly through an edge gateway or a single tunnel rather than nesting. Where policy or compliance (<xref target="algorithm-inputs"/>, input 18) requires a specific encryption layer, that layer is retained as a hard constraint and only genuinely redundant layers are candidates for elimination.</t>
        </section>
        <section anchor="benefit-5-nested-aware-composite-scoring">
          <name>Benefit 5: Nested-Aware Composite Scoring</name>
          <t>The per-layer contributions are folded into the existing scoring pipeline so that no new decision framework is needed; nesting simply becomes another dimension of the composite score. The helper below illustrates how a nested stack is reduced to the composite metrics consumed by <tt>calculate_performance_score</tt> in Section <xref target="technical-algorithm"/>:</t>
          <t>```python
def summarize_nested_stack(path):
    """
    Fold a stack of encapsulation layers into composite metrics.
    Layers are ordered outer-most first.
    """
    overhead_bytes = 0
    eff_mtu = INITIAL_MTU
    ecn_transparent = True
    ce_events = 0
    cc_loops = 0
    crypto_layers = []</t>
          <artwork><![CDATA[
for layer in path.layers:
    overhead_bytes += layer.header_bytes
    eff_mtu = min(eff_mtu, layer.mtu - layer.header_bytes)

    # RFC 6040 / RFC 9599: one non-transparent layer breaks ECN end-to-end
    ecn_transparent = ecn_transparent and layer.ecn_transparent

    # Aggregate CE once across the stack to avoid double counting
    ce_events += layer.ce_counter

    if layer.runs_congestion_control:
        cc_loops += 1

    if layer.encrypts:
        crypto_layers.append(layer.cipher_suite)

return {
    "overhead_bytes": overhead_bytes,
    "effective_mtu": eff_mtu,
    "ecn_capable": ecn_transparent,
    "aggregate_ce": ce_events,
    "cc_loop_count": cc_loops,
    "redundant_crypto": len(crypto_layers) > path.required_crypto_layers,
} ```
]]></artwork>
          <t>The <tt>cc_loop_count</tt>, <tt>ecn_capable</tt>, <tt>effective_mtu</tt>, and <tt>redundant_crypto</tt> fields feed the congestion, latency, and cost sub-scores respectively, so a badly nested path is naturally out-competed by a better-formed one without any special-case logic.</t>
        </section>
        <section anchor="worked-example-masque-over-ipsec-over-gre">
          <name>Worked Example: MASQUE over IPsec over GRE</name>
          <t>Consider a flow with three candidate composite paths to the same destination:</t>
          <t>```
Candidate composite paths to the same destination
==================================================</t>
          <t>Path | Stack (outer -&gt; inner)                  | CC   | ECN         | Eff.  | Redundant
     |                                         | loops| transparent | MTU   | crypto
-----+-----------------------------------------+------+-------------+-------+----------
 A   | GRE -&gt; IPsec -&gt; MASQUE/QUIC -&gt; QUIC app |  3   | no (GRE     | 1240B | yes
     |                                         |      | resets ECN) |       |
 B   | IPsec -&gt; MASQUE(CONNECT-UDP) -&gt; QUIC app|  1   | yes         | 1360B | no
 C   | Direct edge gateway -&gt; QUIC app         |  1   | yes         | 1420B | no
```</t>
          <t>Under legacy per-layer selection, Path A might be chosen because each domain independently reports adequate bandwidth. The composite algorithm instead:</t>
          <ol spacing="normal" type="1"><li>
              <t>Filters on policy (Step 1). If compliance requires the corporate VPN, Path C is dropped and Paths A and B remain; otherwise all three continue.</t>
            </li>
            <li>
              <t>Applies nested-aware scoring (Steps 2-6): Path A is penalized for three stacked congestion controllers, lost ECN transparency, the lowest effective MTU, and redundant encryption; Path B scores well with a single effective congestion loop, preserved ECN, and no redundant crypto.</t>
            </li>
            <li>
              <t>Selects Path B (or Path C where policy allows), records the composite confidence score, and keeps the other as a fallback.</t>
            </li>
            <li>
              <t>Continuously re-evaluates (Step 7); if Path B's aggregate CE ratio rises, the algorithm can migrate to the fallback without reintroducing a doubly-controlled stack.</t>
            </li>
          </ol>
          <t>The outcome is a path selection that a set of independent, layer-local optimizers could not reach, because only the composite view exposes the true cost of nesting. This is the central benefit this work brings to nested tunnel deployments.</t>
        </section>
      </section>
      <section anchor="sdwan-sase-benefits">
        <name>Benefits for SD-WAN and SASE Architectures</name>
        <t>The standardized congestion-aware multipath tunnel selection algorithm provides significant advantages for Software-Defined Wide Area Network (SD-WAN) and Secure Access Service Edge (SASE) deployments:</t>
        <t><strong>Unified Path Selection Framework</strong>: The standardized algorithm enables consistent path selection decisions across heterogeneous SD-WAN deployments, regardless of vendor-specific implementations. This addresses a key challenge in multi-vendor SD-WAN environments where different vendors may use incompatible path selection algorithms.</t>
        <t><strong>Dynamic Service Chaining</strong>: SD-WAN architectures benefit from the algorithm's ability to dynamically route traffic through appropriate service chains based on real-time network conditions and security requirements. This enables optimal integration with Network Function Virtualization (NFV) and service function chaining deployments.</t>
        <t><strong>Branch Office Optimization</strong>: The algorithm's consideration of cost factors and environmental impact aligns with SD-WAN's focus on optimizing branch office connectivity, enabling automatic selection between MPLS, broadband, and cellular connections based on application requirements and cost constraints.</t>
        <t><strong>Zero-Touch Provisioning</strong>: The standardized approach supports ero-touch provisioning capabilities by providing automated path selection without requiring manual configuration of complex routing policies at each branch location.</t>
        <t><strong>Integrated Security and Networking</strong>: SASE architectures benefit from the algorithm's ability to make security-aware path selection decisions that integrate network optimization with security policy enforcement, supporting the SASE principle of converged networking and security.</t>
        <t><strong>Edge-to-Cloud Optimization</strong>: The algorithm's multi-dimensional scoring approach optimizes paths between edge locations and cloud services, considering latency, security, and compliance requirements that are critical for SASE deployments.</t>
        <t><strong>Dynamic Service Selection</strong>: SASE environments require dynamic selection between different security service instances (firewall, secure web gateway, CASB) based on traffic characteristics and performance requirements, which the algorithm supports through its service-aware path selection capabilities.</t>
        <section anchor="zero-trust-considerations">
          <name>Zero Trust Security Considerations</name>
          <t>In zero trust network architectures, traditional network-based trust assumptions are eliminated, requiring more sophisticated approaches to traffic classification and path selection. DSCP marking limitations present significant security and privacy risks in zero trust environments, as these markings can be easily spoofed or manipulated by malicious actors, making them unreliable indicators of actual traffic priority or security requirements. Furthermore, consistent DSCP marking patterns may reveal sensitive information about traffic nature, application types, and business processes to unauthorized observers, while violating zero trust principles that mandate "never trust, always verify" by inherently trusting network-provided markings without independent verification of their authenticity or accuracy.</t>
          <t>The proposed algorithm addresses these zero trust challenges through self verifying traffic characteristics rather than relying on easily spoofed network markings.</t>
        </section>
      </section>
      <section anchor="algorithms-requirements">
        <name>Algorithm's Requirements</name>
        <t>The algorithm has primary goal of optimization the network path for the traffic stream for achieving the best result in terms of fairness and criticality. This algorithm must be implemented on a stateful system where the sender can make decisions on the path to be traversed.</t>
        <t>The algorithm requires prior categorization pf paths such as uplinks based on their characteristics as type and bandwidth for example ethernet/10 megabit per second or cellular/5 megabit per second. The algorithm also requires available tunneling protocols for data transfer such as GRE, L2P, IPSec, OpenVPN and even propertiary protocols such as AutoVPN as avaiable.</t>
        <t>The algorithm doesnot involve the approach to break out critical traffic from non-critical traffic. The algorithm should fairly suggest what traffic is to be passed through the available best path or failover to best path when experincing issues such as loss, jitter on current path.</t>
        <t>It should
- encourage load sharing between available paths
- collect all data points in realtime
- weights for various data points must be adjustable
- have the ability to input feedback from observed performance which may be due to nested congestion control or multi-layer redudnant security etc</t>
        <t>It should not
- cause a surge of unnecessary traffic
- be impacted by NAT setups
- impact the outbound firewall policies</t>
      </section>
      <section anchor="implementation-strategies">
        <name>Implementation Strategies</name>
        <t>The simplest venue for the implementation of the Path selection algorithm is within the application itself.</t>
        <ul spacing="normal">
          <li>
            <t>Minimal OS support : This algorithm require no specific support from the operating system beyond the commonly available APIs that provide transport service.</t>
          </li>
          <li>
            <t>Feedback loop : The algorithm has feedback on the path consumed by all applications for this sender and tries to balance the utilization by load balacing between them.
The proposed path selection algorithm is only tasked with suggesting the protocol and path and can be overridden by the application.</t>
          </li>
          <li>
            <t>Course correction : While the algorithm relies on the data points to suggest a transport protocol on a link, it can also be misguided by ambiguous or untrust worthy input. The algorithm should be self correcting with the help of feedback and any course correction should minimally impact  cross traffic.</t>
          </li>
        </ul>
        <t>Examples of the decision that may be taken by the standardized algorithm could include:
- Example 1 : Resource intensive ultra low latency application benefit from direct internet connection such as multiplayer games and if the algorithm's path suggestion doesn't meet the latency target the application can select its own path.
```
Example 1: Multiplayer Games - Ultra Low Latency Path Selection
==============================================================</t>
        <t>Input Parameters (Gaming Scenario)     Selection Algorithm              Output Decision
===================================     ===================              ===============</t>
        <t>Bandwidth: 100Mbps ─────────────────┐
                                    │
Network State: ────────────────────┐│
  • 0.1 loss                       ││   ┌─────────────────────────────┐
  • 0.2 jitter                     ││   │                             │
                                   ┌┴┴───┤    Selection Algorithm      │    Direct Traffic
Vulnerability of data: 0.9 ────────┤     │                             │──► on Ethernet
                                   │     │  Gaming Traffic Detected:   │    (Ultra Low
Time sensitivity: GAMES ───────────┤─────┤  • High time sensitivity    │     Latency)
                                   │     │  • Low vulnerability OK     │
Provisioning domains: 0.5 ─────────┤     │  • Adequate bandwidth       │
                                   │     │  • Direct path preferred    │
Criticality: 0.7 ──────────────────┤     │                             │
                                   │     └─────────────────────────────┘
```</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The congestion-aware multipath tunnel selection algorithm introduces several security considerations that implementers and operators <bcp14>MUST</bcp14> address to ensure secure operation in production environments.</t>
      <section anchor="algorithm-input-integrity">
        <name>Algorithm Input Integrity</name>
        <t>The path selection algorithm relies on multiple input parameters including network metrics, historical performance data, and policy constraints. Attackers who can manipulate these inputs may influence path selection decisions to their advantage:</t>
        <t><strong>Metric Manipulation</strong>: An attacker with access to network telemetry systems could inject false latency, bandwidth, or loss measurements to force traffic onto paths under their control or to degrade service quality. Implementations <strong><bcp14>MUST</bcp14></strong> authenticate and integrity-protect all metric collection channels (for example, via mutually authenticated TLS on NETCONF/RESTCONF sessions). Where possible, metrics <strong><bcp14>SHOULD</bcp14></strong> be validated through independent measurement sources.</t>
        <t><strong>Historical Data Poisoning</strong>: Long-term manipulation of historical performance databases could gradually shift path selection preferences. Implementations <strong><bcp14>SHOULD</bcp14></strong> implement anomaly detection for historical data and <strong><bcp14>MUST</bcp14></strong> maintain audit logs of all data modifications.</t>
        <t><strong>Policy Injection</strong>: Unauthorized modification of policy constraints could bypass geographic routing restrictions or compliance requirements. Policy databases <strong><bcp14>MUST</bcp14></strong> implement strong access controls and <strong><bcp14>SHOULD</bcp14></strong> require multi-party authorization for policy changes affecting security-sensitive traffic classifications.</t>
      </section>
      <section anchor="congestion-signal-security">
        <name>Congestion Signal Security</name>
        <t>The algorithm's reliance on ECN markings and congestion signals creates potential attack vectors:</t>
        <t><strong>ECN Spoofing</strong>: Malicious intermediate nodes could inject false ECN Congestion Experienced (CE) markings to influence path selection away from legitimate paths. While <xref target="RFC6040"/> provides guidance on ECN propagation in tunnels, implementations <strong><bcp14>SHOULD</bcp14></strong> implement mechanisms to detect anomalous ECN marking patterns that may indicate spoofing attempts and <strong><bcp14>MUST</bcp14></strong> rate-limit path switches triggered solely by CE spikes.</t>
        <t><strong>Congestion Amplification</strong>: An attacker could artificially induce congestion on specific paths to force traffic redistribution, potentially overwhelming alternative paths. The algorithm <bcp14>SHOULD</bcp14> implement rate limiting on path switching decisions and <bcp14>SHOULD</bcp14> detect patterns consistent with deliberate congestion induction.</t>
      </section>
      <section anchor="traffic-analysis-and-privacy">
        <name>Traffic Analysis and Privacy</name>
        <t>Path selection decisions may inadvertently reveal sensitive information:</t>
        <t><strong>Selection Pattern Analysis</strong>: Consistent path selection patterns may reveal information about traffic types, application usage, or organizational priorities to network observers. Implementations <strong><bcp14>SHOULD</bcp14></strong> consider adding controlled randomization to path selection decisions for non-critical traffic to reduce fingerprinting opportunities and <strong><bcp14>MUST</bcp14></strong> suppress exporting raw scoring outputs to unsecured analytics feeds.</t>
        <t><strong>Timing Correlation</strong>: The timing of path switches may correlate with specific application behaviors or user activities. Implementations <bcp14>SHOULD</bcp14> avoid immediate path switching in response to transient conditions and <bcp14>SHOULD</bcp14> implement hysteresis mechanisms that obscure the relationship between traffic characteristics and path changes.</t>
        <t><strong>Metadata Exposure</strong>: The algorithm's input parameters, if transmitted across network boundaries, could expose sensitive operational information. All algorithm signaling between distributed components <bcp14>MUST</bcp14> be encrypted and authenticated.</t>
      </section>
      <section anchor="multi-vendor-trust-boundaries">
        <name>Multi-Vendor Trust Boundaries</name>
        <t>In heterogeneous deployments spanning multiple vendors, trust relationships require careful consideration:</t>
        <t><strong>Cross-Vendor Metric Sharing</strong>: When path selection decisions depend on metrics from different vendors' equipment, implementations <strong><bcp14>MUST NOT</bcp14></strong> blindly trust metrics from external sources. Cross-vendor metric exchanges <strong><bcp14>MUST</bcp14></strong> be authenticated and <strong><bcp14>SHOULD</bcp14></strong> be validated against locally observable network behavior.</t>
        <t><strong>Algorithm Coordination Attacks</strong>: In federated deployments where multiple instances of the algorithm coordinate, a compromised or malicious instance could provide false information to influence global path selection. Implementations <strong><bcp14>SHOULD</bcp14></strong> implement reputation systems and anomaly detection for federated algorithm participants, and coordination messages <strong><bcp14>MUST</bcp14></strong> be signed.</t>
        <t><strong>Vendor-Specific Vulnerabilities</strong>: Different vendor implementations may have varying security postures. The algorithm <bcp14>SHOULD</bcp14> support configurable trust levels for different vendor domains and <bcp14>SHOULD</bcp14> allow operators to constrain path selection based on security assessments of traversed infrastructure.</t>
      </section>
      <section anchor="policy-enforcement-and-compliance">
        <name>Policy Enforcement and Compliance</name>
        <t>The algorithm must ensure that security and compliance policies are consistently enforced:</t>
        <t><strong>Policy Bypass Prevention</strong>: The algorithm <strong><bcp14>MUST</bcp14></strong> ensure that performance optimization cannot override mandatory security policies. Geographic routing restrictions, encryption requirements, and compliance constraints <strong><bcp14>MUST</bcp14></strong> be treated as hard constraints that cannot be relaxed by the optimization process.</t>
        <t><strong>Audit and Accountability</strong>: All path selection decisions affecting security-sensitive traffic <bcp14>MUST</bcp14> be logged with sufficient detail to support forensic analysis. Logs <bcp14>SHOULD</bcp14> include the input parameters, evaluated alternatives, and rationale for the selected path.</t>
        <t><strong>Regulatory Compliance</strong>: Operators deploying this algorithm in regulated environments <bcp14>MUST</bcp14> ensure that path selection decisions comply with applicable data protection regulations. The algorithm <bcp14>SHOULD</bcp14> support configurable compliance profiles for different regulatory frameworks (e.g., GDPR, HIPAA, SOX).</t>
      </section>
      <section anchor="denial-of-service-considerations">
        <name>Denial of Service Considerations</name>
        <t>The algorithm may be targeted by denial of service attacks:</t>
        <t><strong>Path Exhaustion</strong>: An attacker could attempt to make all available paths appear unsuitable, forcing traffic to fail or use suboptimal routing. Implementations <strong><bcp14>MUST</bcp14></strong> maintain fallback paths and <strong><bcp14>SHOULD</bcp14></strong> implement graceful degradation rather than complete service denial when optimal paths are unavailable.</t>
        <t><strong>Algorithmic Complexity Attacks</strong>: Carefully crafted inputs could potentially cause excessive computation in the path selection algorithm. Implementations <strong><bcp14>SHOULD</bcp14></strong> bound computational complexity and <strong><bcp14>SHOULD</bcp14></strong> implement timeouts for path selection decisions.</t>
        <t><strong>Oscillation Induction</strong>: An attacker could manipulate network conditions to induce rapid path switching, potentially destabilizing network operations. The algorithm <strong><bcp14>MUST</bcp14></strong> implement dampening mechanisms to prevent rapid oscillation between paths and <strong><bcp14>MUST</bcp14></strong> log each forced switch for forensic review.</t>
      </section>
      <section anchor="authentication-and-authorization">
        <name>Authentication and Authorization</name>
        <t>Access to algorithm configuration and control interfaces requires protection:</t>
        <t><strong>Configuration Access Control</strong>: Modification of algorithm weights, thresholds, and policies <strong><bcp14>MUST</bcp14></strong> require authentication and authorization. Role-based access control <strong><bcp14>SHOULD</bcp14></strong> be implemented to limit configuration capabilities based on operator responsibilities, and sensitive changes <strong><bcp14>MUST</bcp14></strong> generate audit events.</t>
        <t><strong>Runtime Control Security</strong>: Interfaces that allow runtime modification of path selection behavior <bcp14>MUST</bcp14> be protected against unauthorized access. All control plane communications <bcp14>SHOULD</bcp14> use mutual TLS authentication.</t>
      </section>
      <section anchor="zero-trust-alignment">
        <name>Zero Trust Alignment</name>
        <t>As discussed in <xref target="zero-trust-considerations"/>, the algorithm <bcp14>SHOULD NOT</bcp14> rely on network-layer trust indicators that can be easily spoofed. Instead, implementations <bcp14>SHOULD</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Verify traffic characteristics through behavioral analysis rather than declared markings</t>
          </li>
          <li>
            <t>Implement continuous validation of path security properties</t>
          </li>
          <li>
            <t>Assume that any network segment may be compromised and select paths accordingly</t>
          </li>
          <li>
            <t>Support integration with zero trust network access (ZTNA) frameworks for identity-aware path selection</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC9599">
          <front>
            <title>Guidelines for Adding Congestion Notification to Protocols that Encapsulate IP</title>
            <author initials="B." surname="Briscoe" fullname="B. Briscoe">
              <organization/>
            </author>
            <author initials="J." surname="Kaippallimalil" fullname="J. Kaippallimalil">
              <organization/>
            </author>
            <date year="2024" month="August"/>
          </front>
        </reference>
        <reference anchor="RFC3168">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author initials="K." surname="Ramakrishnan" fullname="K. Ramakrishnan">
              <organization/>
            </author>
            <author initials="S." surname="Floyd" fullname="S. Floyd">
              <organization/>
            </author>
            <author initials="D." surname="Black" fullname="D. Black">
              <organization/>
            </author>
            <date year="2001" month="September"/>
          </front>
        </reference>
        <reference anchor="RFC6040">
          <front>
            <title>Tunnelling of Explicit Congestion Notification</title>
            <author initials="B." surname="Briscoe" fullname="B. Briscoe">
              <organization/>
            </author>
            <date year="2010" month="November"/>
          </front>
        </reference>
        <reference anchor="RFC8305">
          <front>
            <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
            <author initials="D." surname="Schinazi" fullname="D. Schinazi">
              <organization/>
            </author>
            <author initials="T." surname="Pauly" fullname="T. Pauly">
              <organization/>
            </author>
            <date year="2017" month="December"/>
          </front>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author initials="J." surname="Iyengar" fullname="J. Iyengar">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson">
              <organization/>
            </author>
            <date year="2021" month="May"/>
          </front>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author initials="J." surname="Iyengar" fullname="J. Iyengar">
              <organization/>
            </author>
            <author initials="I." surname="Swett" fullname="I. Swett">
              <organization/>
            </author>
            <date year="2021" month="May"/>
          </front>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization/>
            </author>
            <date year="2017" month="June"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6555">
          <front>
            <title>Happy Eyeballs: Success with Dual-Stack Hosts</title>
            <author initials="D." surname="Wing" fullname="D. Wing">
              <organization/>
            </author>
            <author initials="A." surname="Yourtchenko" fullname="A. Yourtchenko">
              <organization/>
            </author>
            <date year="2012" month="April"/>
          </front>
        </reference>
        <reference anchor="RFC8807">
          <front>
            <title>Login Security Extension for the Extensible Provisioning Protocol (EPP)</title>
            <author fullname="J. Gould" initials="J." surname="Gould"/>
            <author fullname="M. Pozun" initials="M." surname="Pozun"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>The Extensible Provisioning Protocol (EPP) includes a client authentication scheme that is based on a user identifier and password. The structure of the password field is defined by an XML Schema data type that specifies minimum and maximum password length values, but there are no other provisions for password management other than changing the password. This document describes an EPP extension that allows longer passwords to be created and adds additional security features to the EPP login command and response.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8807"/>
          <seriesInfo name="DOI" value="10.17487/RFC8807"/>
        </reference>
        <reference anchor="RFC3270">
          <front>
            <title>Multi-Protocol Label Switching (MPLS) Support of Differentiated Services</title>
            <author fullname="F. Le Faucheur" initials="F." role="editor" surname="Le Faucheur"/>
            <author fullname="L. Wu" initials="L." surname="Wu"/>
            <author fullname="B. Davie" initials="B." surname="Davie"/>
            <author fullname="S. Davari" initials="S." surname="Davari"/>
            <author fullname="P. Vaananen" initials="P." surname="Vaananen"/>
            <author fullname="R. Krishnan" initials="R." surname="Krishnan"/>
            <author fullname="P. Cheval" initials="P." surname="Cheval"/>
            <author fullname="J. Heinanen" initials="J." surname="Heinanen"/>
            <date month="May" year="2002"/>
            <abstract>
              <t>This document defines a flexible solution for support of Differentiated Services (Diff-Serv) over Multi-Protocol Label Switching (MPLS) networks. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3270"/>
          <seriesInfo name="DOI" value="10.17487/RFC3270"/>
        </reference>
        <reference anchor="RFC2992">
          <front>
            <title>Analysis of an Equal-Cost Multi-Path Algorithm</title>
            <author initials="C." surname="Hopps" fullname="C. Hopps">
              <organization/>
            </author>
            <date year="2000" month="November"/>
          </front>
        </reference>
        <reference anchor="RFC4459">
          <front>
            <title>MTU and Fragmentation Issues with In-the-Network Tunneling</title>
            <author initials="P." surname="Savola" fullname="P. Savola">
              <organization/>
            </author>
            <date year="2006" month="April"/>
          </front>
        </reference>
        <reference anchor="RFC7556">
          <front>
            <title>Multiple Provisioning Domain Architecture</title>
            <author fullname="D. Anipko" initials="D." role="editor" surname="Anipko"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document is a product of the work of the Multiple Interfaces Architecture Design team. It outlines a solution framework for some of the issues experienced by nodes that can be attached to multiple networks simultaneously. The framework defines the concept of a Provisioning Domain (PvD), which is a consistent set of network configuration information. PvD-aware nodes learn PvD-specific information from the networks they are attached to and/or other sources. PvDs are used to enable separation and configuration consistency in the presence of multiple concurrent connections.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7556"/>
          <seriesInfo name="DOI" value="10.17487/RFC7556"/>
        </reference>
        <reference anchor="RFC8801">
          <front>
            <title>Discovering Provisioning Domain Names and Data</title>
            <author fullname="P. Pfister" initials="P." surname="Pfister"/>
            <author fullname="É. Vyncke" surname="É. Vyncke"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="W. Shao" initials="W." surname="Shao"/>
            <date month="July" year="2020"/>
            <abstract>
              <t>Provisioning Domains (PvDs) are defined as consistent sets of network configuration information. PvDs allows hosts to manage connections to multiple networks and interfaces simultaneously, such as when a home router provides connectivity through both a broadband and cellular network provider.</t>
              <t>This document defines a mechanism for explicitly identifying PvDs through a Router Advertisement (RA) option. This RA option announces a PvD identifier, which hosts can compare to differentiate between PvDs. The option can directly carry some information about a PvD and can optionally point to PvD Additional Information that can be retrieved using HTTP over TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8801"/>
          <seriesInfo name="DOI" value="10.17487/RFC8801"/>
        </reference>
        <reference anchor="RFC5764">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document describes a Datagram Transport Layer Security (DTLS) extension to establish keys for Secure RTP (SRTP) and Secure RTP Control Protocol (SRTCP) flows. DTLS keying happens on the media path, independent of any out-of-band signalling channel present. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5764"/>
          <seriesInfo name="DOI" value="10.17487/RFC5764"/>
        </reference>
        <reference anchor="NQB-PHB">
          <front>
            <title>A Non-Queue-Building Per-Hop Behavior (NQB PHB) for Differentiated Services</title>
            <author initials="G." surname="White" fullname="G. White">
              <organization/>
            </author>
            <author initials="T." surname="Fossati" fullname="T. Fossati">
              <organization/>
            </author>
            <author initials="R." surname="Geib" fullname="R. Geib">
              <organization/>
            </author>
            <date year="2025" month="September"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-nqb-33"/>
        </reference>
        <reference anchor="CAREFUL-RESUME">
          <front>
            <title>Convergence of Congestion Control from Retained State</title>
            <author initials="M." surname="Seemann" fullname="M. Seemann">
              <organization/>
            </author>
            <author initials="I." surname="Swett" fullname="I. Swett">
              <organization/>
            </author>
            <date year="2025" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-careful-resume-24"/>
        </reference>
        <reference anchor="L4S-OPS">
          <front>
            <title>Operational Guidance on Coexistence with Classic ECN during L4S Deployment</title>
            <author initials="B." surname="Briscoe" fullname="B. Briscoe">
              <organization/>
            </author>
            <date year="2025" month="July"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-l4sops-08"/>
        </reference>
        <reference anchor="MULTIPATH-DCCP">
          <front>
            <title>DCCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author initials="A." surname="Dreibholz" fullname="A. Dreibholz">
              <organization/>
            </author>
            <date year="2025" month="April"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-multipath-dccp-24"/>
        </reference>
        <reference anchor="UDP-ECN">
          <front>
            <title>Configuring UDP Sockets for ECN for Common Platforms</title>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst">
              <organization/>
            </author>
            <date year="2025" month="August"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-udp-ecn-03"/>
        </reference>
        <reference anchor="RFC9868">
          <front>
            <title>Transport Options for UDP</title>
            <author initials="T." surname="Herbert" fullname="T. Herbert">
              <organization/>
            </author>
            <author initials="C." surname="Huitema" fullname="C. Huitema">
              <organization/>
            </author>
            <date year="2024" month="December"/>
          </front>
          <seriesInfo name="RFC" value="9868"/>
        </reference>
        <reference anchor="RFC8684">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author initials="A." surname="Ford" fullname="A. Ford">
              <organization/>
            </author>
            <author initials="C." surname="Raiciu" fullname="C. Raiciu">
              <organization/>
            </author>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization/>
            </author>
            <author initials="O." surname="Bonaventure" fullname="O. Bonaventure">
              <organization/>
            </author>
            <author initials="C." surname="Paasch" fullname="C. Paasch">
              <organization/>
            </author>
            <date year="2020" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC8938">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Protocol Northbound API: Use Cases</title>
            <author initials="Q." surname="Wu" fullname="Q. Wu">
              <organization/>
            </author>
            <author initials="R." surname="Yang" fullname="R. Yang">
              <organization/>
            </author>
            <author initials="S." surname="Randriamasy" fullname="S. Randriamasy">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
        </reference>
        <reference anchor="RFC8896">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Cost Calendar</title>
            <author initials="Y." surname="Yang" fullname="Y. Yang">
              <organization/>
            </author>
            <author initials="Q." surname="Wu" fullname="Q. Wu">
              <organization/>
            </author>
            <author initials="R." surname="Yang" fullname="R. Yang">
              <organization/>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="RFC9308">
          <front>
            <title>Bit Index Explicit Replication (BIER) Traffic Engineering (BIER-TE)</title>
            <author initials="A." surname="Przygienda" fullname="A. Przygienda">
              <organization/>
            </author>
            <author initials="S." surname="Aldrin" fullname="S. Aldrin">
              <organization/>
            </author>
            <author initials="J." surname="Chen" fullname="J. Chen">
              <organization/>
            </author>
            <author initials="K." surname="Nagaraj" fullname="K. Nagaraj">
              <organization/>
            </author>
            <date year="2022" month="October"/>
          </front>
        </reference>
        <reference anchor="RFC8679">
          <front>
            <title>A Framework for Low-Latency, Low-Loss, and Scalable Throughput (L4S) Internet Service</title>
            <author initials="R." surname="Briscoe" fullname="R. Briscoe">
              <organization/>
            </author>
            <author initials="K. D." surname="Schepper" fullname="K. De Schepper">
              <organization/>
            </author>
            <author initials="B." surname="Briscoe" fullname="B. Briscoe">
              <organization/>
            </author>
            <date year="2019" month="December"/>
          </front>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author initials="A." surname="Clemm" fullname="A. Clemm">
              <organization/>
            </author>
            <author initials="E." surname="Voit" fullname="E. Voit">
              <organization/>
            </author>
            <author initials="A." surname="Bierman" fullname="A. Bierman">
              <organization/>
            </author>
            <author initials="M." surname="Bjorklund" fullname="M. Bjorklund">
              <organization/>
            </author>
            <date year="2019" month="August"/>
          </front>
        </reference>
        <reference anchor="RFC9232">
          <front>
            <title>Dynamic Subscription to YANG Events and Datastore Updates</title>
            <author initials="E." surname="Voit" fullname="E. Voit">
              <organization/>
            </author>
            <author initials="A." surname="Clemm" fullname="A. Clemm">
              <organization/>
            </author>
            <author initials="A." surname="Bierman" fullname="A. Bierman">
              <organization/>
            </author>
            <date year="2022" month="June"/>
          </front>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="I-D.ietf-intarea-tunnels">
          <front>
            <title>IP Tunnels in the Internet Architecture</title>
            <author fullname="Dr. Joseph D. Touch" initials="J. D." surname="Touch">
              <organization>Independent Consultant</organization>
            </author>
            <author fullname="Mark Townsley" initials="M." surname="Townsley">
              <organization>Cisco</organization>
            </author>
            <date day="9" month="May" year="2025"/>
            <abstract>
              <t>   This document discusses the role of IP tunnels in the Internet
   architecture. An IP tunnel transits IP datagrams as payloads in non-
   link layer protocols. This document explains the relationship of IP
   tunnels to existing protocol layers and the challenges in supporting
   IP tunneling, based on the equivalence of tunnels to links. The
   implications of this document updates RFC 4459 and its MTU and
   fragmentation recommendations for IP tunnels.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-intarea-tunnels-15"/>
        </reference>
      </references>
    </references>
    <?line 1322?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y9S28jV5oouE/A/yFuehqWZJIpKR/OVLWrL5NSZqpLD1pU
OrtuoSAHySMynMEIVkRQStqVQKMXs5pFY9C4uAPMYjDo5SxnNZjV/JT6JfM9
zyMiKKVdVbe7cW0ITomMxznf+d7Pbrf72YMqqVJzED0c5NnMlFWSZ93+bVyY
6HSVVskyrubR5SrLTBqNTGomeEF0nRfRZRFn5TIvKvi8uEkmpnz42YN4PC7M
DTxt881w1SSuzCwv1gdRWU0/e/DZg2k+yeIFrGJaxNdVN06rOIuTblXedBf6
oG4GqzPTbkXPK7u7e589KFfjRVKW8NRqvYTbj48uX332IFstxqY4gMfCew6i
/d39p9293e7eE3hznpUmK1flQVQVK/PZA1jrY1h2YWJYNLwPVnebF+9nRb5a
8ie3M/jsvVnDx1N4ZtSNTvujb94e0a/fDs/o3+PhyEzoNwdG/LUq8pQ+Phrw
hRYu9FcThrAik60MviiqLyKKeJcP372mvxZxkurX/zkx1XUvL/i6uJjM4Zt5
VS3Lg0eP8EL8KLkxPb3uEX7waFzkt6V5RI94RLfOkmq+GsPNcgiPGN5dOoLS
O8QoSgG8ZeW9R27p8TN6Sd5+86NPP+XevFqkDxFF4lU1z/FQu/jq61WaMsb0
+SnRy6ScV/gV7C3Okh9ifNNBNEjKSR6dmiJ+n+C3RoAWp2O84T9P8PveJF/Q
S7K8WMCNNwz/i1eD/b29F/Q7wF7o5DdmHSEulEQFq9JESYaXllGVR8fZNEHs
ji7MH1ZJYRYmq6ITcwNbeciPYZzce/Hiq+7uY/7Ibi2i/7oR72zUi14W8TQz
hSzm+d5XT2qL6S/GyWyVVOsov47eLpemmMSwopsyOslv5Q9eXoRbiXDx73Dx
wWr2d/dgNU/vXM3LHuwjGceylhdPX9QB83qVTE2awAESZPrTaZLNfHo4y6vk
GsGDfwCwhkVe5ZM8BcjN4yo6yibxslwhVgE91Ra4/6S7+/y+Bb4s8DRN/Zu/
70W/iZPlMk7TZBGnSSp7eLz37HltD5dzQwunJQJIjz4s02SSVBu3sQWEvU0n
X1/x7l5398WdK/5NL7qIF/F7WPU8i7OW83+V5utp/fND2GgaT97LLp7tPtmt
74KIJ0Xwf8Ie6qgAnHLvJ0AaEfPx7tPaEt7Ey+U6OlqbMUC9jL41BXLpaB/u
NlVlClxMhuzgBpH3bSmoMlkVhckm6yZ67u3fuSYAyggYXBb/kNS/uuxFw3iV
rhVzd3fr8Prm7fEAOEn09nDYfQkkMxU2nZoP8HucTYE9w8qM49d17Ny7j3wA
B4/XJpvFRf2b0150Oc8XZZ65Be63LBAouiyjQ1OJDMZlNYXNX3BhxwDSWzgs
y332n91N8e8KoBs4xziLjvtnfVxSCRcUhGUlwpBWKuyyhQM9u3OlAKhBXlV5
g1B81lQ7+LO4qEyGrD3JruvM/dnTp3ejLdDgagJCuYxuQaJFh6s47Y4qIL3o
TV5WjR3sd3ef3Iek7wBA9Y/7vei3+aqoJnOTvc8V3M93v6ot7nA0GAIqT96b
KjqNi/fwKAG8GV9cDqJv8lH9+Hfv45rAZA7npkzeN/kPrPawWFUNsA570d/n
GaoqDUwa5qmypcf7X9XJjIiqq1w/OonHqBcCaJFwZ9HW6fBktA0gX5JGBJzr
MLm+NsAPqgT2M/X1zIDR7t+H468QQaJX8QogvFJpuv/iRZ3M+lmcrsukxHcD
Eh/9AQ98AEcdydJRn+2noLoCOizqy7iXbw56gDfLZSkLePLkaV2Enl6+Jbp+
VcQzVB1YxhyX5coIDh5n3WpuumemQjVVlGuAXn0xz+7DRTjFUXyTpyrQv3r6
tE7eygRRUN8kyL/xmA5zUKGyqI/6JPIi4It1Qnh6HykDavWzZOkj+14d2VHA
3JgCX9n2/jN4UEnAOoyruAXvv7pzBUegEyDnapHJh6vUNJnJfwF4/RAvAPHf
t9DQaV6aBgN9B+9YLeIikV0+/epZXX/Dtc+KeOFZAifxGsQjCRwUjVuHl0gV
Rx+Aj5WiOB2VVTxOQWtAfY5ZACCFCqkLA1hbJQtPXFlVK9oaXVwOt5si/x4K
ggM7nbwuzG0LHC8MnFTBiHT2zcvu8M3LOl2BvpF1v1mZlem+XCUpKYZDU3SB
HEAfmMc3CWxhC26O4OZt2tCn0T5YdvcoWa+B5yKitgiHVyBQgcLq31z0otcg
TvhjONYE2CMID/vk4wz0l8xU3UM0Y9RmRbuqS3ZUN/vDuPuYdPtB/+Lo1duT
7sXR6O3pUQ0qIB4Bv2eg7hhkOE1ZHl0X+QLAWwG+IwiAHdRJjSzb+6TmyIDV
kzX4uy/ff95GJ2A3gyXWLUy5WpjuPnGckyej7vlwVNvs+VL0gDiNUG2Iade4
VfMhAYsP/yQGN0hjMOgnaDBH0xWRPzwR9J4l6MLIE1sw4G5SrxsGP2en6ZMy
X5YiTE/fnlweD/uXb7qHg8GwTtHwkaNWJk7nDLFg4M1aDgs2BwCxbMXvu/l4
H6U0oOs8T3/4+ftz9vd0MlnKSaI6DMfQRNtrsDnpZOCKaJSjQsIbxUPDfwf5
AjhlNARbDrWutl3drZYA1b6Kk2K+Kso/Az9X02XXTDIxtFG1ft60+CyPPF9W
9sRgY00D9B4TBDjKG1OMTVG1CX4w0oEKN+4FFncQ4fJUIj57XpcVl39RxNq9
z/3QRwZZNKzPARqtYE6uWhjNGxDHqVnXvzkHAgTCvwHiBfnU8sBhHJeTue78
xeP6GfWXaMHS9rosHuHUrsF+pTNbiLMn2uqfXJ5vO1l3Bqc6H+cr0BH6w+MD
sDJNNIhbYXEPE/0GhEhjwyAnfhs3tfkRAiibFgmY9qUanc+fv6hrVz9tU6SF
DuLUZNO4aDnLu4Xgb9uXet+2kGIe79ZP42VSoZ/LfHCehQtj9xJtvTw+uti2
mznKZiC9WI+jr7qXR3X9Y3//vgMAZBwWP6xnCe6/BeL9FADekHBgkQzmpvHx
b9AuBIM3/t4S21d1TbyPOvjCkJKNlHaS38IpoZxad/gPUB467BuYxCmoY6Bu
zYt8NZsvV1W0BTJr2zIo1V7qateL+1jKxUafFuqpBl0eBp1+d4s82uGTuoI9
Wo3LSZEs1Rv32/7Z68AvxCwGNdSyykGvfLvEhTes3hf38XI4u0FqFosW1fHb
PGkwS7j8ZWLAVG+cG3CYl9/DgaRA0Yqe+4/rRtzhGq4GxGvd3xEyIWc23LUx
QMp7rJjNG2jdb7gxcps9edxAO1omrg1siinYx3gGhEfXMahIp3EWz0yLGrT3
/D5+XofecfeQggHdBOzMwsTqcq+t6HgoRmaJjhs0MxSrW4T63fYvkONlvmJG
X1vZZX6blVZ0/DRZX1t/d+8p+ns+e9DtdqN4XFZFPKnw78s5WPbTfLIip3ys
gpH2VKkW0E2JFU/mcQq8FhRyVM1JwtrwBcLBZDdJkWcLwiaSuAuVuPENRluQ
H1RqnEe5qBaIdxOn509Ez18YeF+WlIuyFx1XUTJFs+caQNB2Mfx7Dcy2Eq85
mJcg1shS4NCJ99qldbDji+GvZY4bjr3HdmOK9Vn9T+72dhurv4Pfh69HlQ5J
CiE3cz5Ao2YpLAJg9OOPEif4+JGwOOaAgLelrBYQWIYBARMEBNBNanQT0yhe
wq/xZI7PIy9j+anOenwEsH/8pOMO3r4czx5RBnAQHjERJp+JwwXextEBAkDO
ktrUMeR2nhAm5AltmaCbYhSo7UATcu/g9gA/6SVxmswywSv2iFeeLc/+aDaH
MZiDfsDoNcYKI3MNgAbMoI03LG40sLejsdjbsDGx39oWxSYd791Djga0yp4j
tkUyBfUP//oc6bXIpysCB37SZxAhHpQgw3E5U2Ry8aRAt3bsABxnfKQluQAR
VxfjJIs1IgPscx0BLwTOXUYlcJMoLqMVHHz2voNIYfUQJmRdZ6eFLCJ05wBx
AhoXJWm7kfkQL5CIL09GEZwu6tRIMOP8xhC26yrp4Z1oNHrjhwc+wfMCVPF3
4goCsnBvqOjxzfUDksEpFWuCFhjsFXC6hXUQ0GskAu6/aQBv6gANgr4yRY6Q
W7IGxIoJCAtgfjHxtxt4DXB52RqhRRbQHh8U4KNJ055zOdJ1Y0QuOKWSIYCv
LCYS2kF0QjY6jb5NimoFlv+wSG7wieK+3Pp2iMEzpPUluvimxJyWclG5GqPu
hHwhBhSpRKEcw73GsCjiXcELYJ/LHF6uZFSaCsgBI7EFEarBdS2RVTIvLBew
MPumeb6wR1si9b03ltsIQyLERWyzGEDk7JBqEa9h95N0NTXR64sjUBL3hx3O
C+hE75LCvF7FxbSDhloG26ZVwCMyYkcg7kCGrb33KWb3V1WOl8PrJytQVxZR
ggiKgocpAk8PXYSg0+a3TgrBkz4kAJiSEKZLr5uKs7E7phjXdZrfwm7h1ICj
lglKrIRYKfq+31xeDiPvICvWbQnqnP+ATA7WCMBmHICLMEyFPu5bg6tCsjIE
l7EBfgLHD4CDC1el6WJgGhCKrlCIivyGt67SKQmzgB7k6468NzXxlI42jYuZ
ITjM6aMko8QEUNRp0+jDl/g4kRCxp8+jV6AFxeRiT62rEfjpgaA3gOemJB5q
/1aDhoIANpsFHzcMmT+5Y/UuxVpL6fBegM21e30KtK2+TuJ8cEuiSmo+/p6C
pKQKLJZwWFOWOyZjWiMK4Xcc4FrO275pKDAloj56puHlwvFxseN1ZBI8tsgz
Tstoa3B45u7uoHp2QzpSDiJoG1FzkIJhVnUJeeQ4kSZKjJXB/WFUrROZatLb
RqUvKpHyDDo1CC+QXxs9CwIAJ6ig0KgqinfFaQkMAZgjcApYtoEDPWdsS8pA
PVUZydEDUhAQF69XBe1Qtp2vKGS5zFFzkHcuxVwFYjFmYQ0G0F/wBQkJFTjO
KkGSVbQwnp1rVSaWjpd1ZLjrOGaIyZkchuVaEclN3o+wyoJ5LuK2rp6YVmnc
bqYGHrCAdQnR6AIWwEqQKi2aIs4igqUJO2a9hwPllqS7pigsSSeZmRz4yHKO
eF1E38N15TSZiHe3EJB6qMzMlMRIidszIIWqtSilwIInzPkEHIVLnSmJA6yR
i8HL4RfAfZE0ll3XwSKSnPCB167ipnkpqESjYbmNmVQZetnxRbARqwURd23Q
su5QeCLmJIExzok/qn4DDV4XYF8WK4qQMdzKpZkkhABgzmE0GmE9A7kQw0Fj
QLWLEdRkshYO7V4EEhKRF9dTIJGR4gnAXjZZjx4cPk1JgDKQor7iM2gIJ/1t
QC+4fsKfOBME7xvARwXwzR9gEQtrcuI3QJ9TwSlU8mdoQ7Es419ZCn/24G2G
UrSdUQnfj30eg7rENSwPGdI8Bw0fcBc0Utb7yk7zEOYgHFNQvhHkRyL9o1ep
+ZCME2T4yugHoj+HbDsaWAOPKDSfxusvymiO9JLPTGbyVelzshS2WIJGhLgD
FIaYOcFsh0nzDDzTkc6tXMLWRM0l8dydANeZBiYkaJL90RGl7WlMVeyO45Gv
mTHgQGuYovZrFhgTqckS0EFQUFQkz9VIkgQNxSe6hhBLgEmqQE+i3Ly8qQ24
AJX03406Uf8HWFYnep3nM3j0gK4CXgxb3gZ1BSUYm6H4dNLfEew14EyBANh9
HTuNDv4FvEaFwNPtkkIkIHJrOBpelaVcECJo/FllSPR6q0npVh0r5tOwFhvC
I83x/EAuz0mAwDnN0nyMR+ros9dyNMQqya9cEb/1jhy4dlzBzhdLptycsH+G
sj/yEYqUUGWxcIITcRB4eIJqHB81gDldCSGsgY7UJqwB19EwGEhJSrZDnhdT
pCKDtiGrEunawtlMQXWyyyCCxD0jPh523/XPnHJQCD7yMdhbhKMi7pg4I7O3
gzhbBkZzk+/ic5NsZXCNBa4ImZckPXjGvSn/9I//AtxxhiAj5ErzGERjDPQ4
ITDW4IUQIa2wzEE8of1OPPn0RDiqotyEoozWMcCKooEnwvvGq0rOlaHftWzb
YpswLczCQyUHffJTddjjs4jjkcrHzAhsKhBFhBFogdGLs0qUQhabJH2Be4lc
BOPH8nhPWAADyEKqjRgCgigU7YjRe4Z68CIHYGfRfD0GoWFPw6NsVk9ANr83
a4fFqJBMUWLkS4Kxt0U8m5o/CKhGlFsScuIk9BVZUL0b7Js9JIwQ6iGrbbYD
uvJPEyLCMIGPA0OB3cP3104iIEQ2sSORFp9H3zIcj2sH6MmL6MfPBS/qp/wR
H/IOT8gp9MqrLeoEXAreFPDr2vIc80KlG3gk4omKnWlSxtMbQCOy4uHZaAax
xHEohgIBng4qjZ6+xTnVdS28DwQGn0d7PQCAx8RVx7WpGn1GOgHWS4t0+ITD
2t4bVIOKzCJ+b5i5xKg55mj7bpIUmt5SgpALcL9DRqCwWecWxW3BVkHDHTki
uhB5wFhj9WBYSoVLQd0WHTqEM+bDEoOsN4CBKCRQrQEelcRjy2CIDAkG+MwG
7fXE2WxtVJ+Ez8tJkqY+r7CQZgskIOga8AhPd3aOxE01mpgM3pjv7GD6KsKE
uaQcTB/kpjByy9txOXpu8LVoq+o/IYjg/mEbZAi065lC6N5rppyVhbzTY12+
RxTFDRIMQsxbQE1PnrJMCKhiYVAr54NVtCA6gIepQQ9Yu9+L/CyTQchQXeQk
OhdfAd55FpAFUirFWXwu7Un30NMfeG5qJl1wbKH6Jyfrs2Gyj7z3ZDkIhyx1
HiUMYpDeQABeZ2h7F1nyA6sS62jFISymW6f+OeWH0KLJlhBDWQZPEXlVTwaT
eeyo5TTURkrxdcEG0L1ITAZAMTaOSolKOiQEVqRojuEIbpMpPBrPAhXsgsUh
oh9m2CIMhSpB2Z+D9j1dMWc3yOkoFZBeM6GgTS9iPx/yEVQk8xXst5znonSh
pyrOxFkwNfZJE8ldEWKSh6hLwJIrgnBVKSKpa8nnNoGOCxphvgJDKgIWk/pq
wARVGLjW4LYSckkJfme5w+RyHrPXgLzRAuOeh5zdd2jyKTPTFyRIELn6MiYo
6GPLkr2Tl5tIg7I6r1IPHSXpJtai7t7i27xFq1vkBFWvl1b1Ol6wGmZKHzCr
jJyaymDh6IB2xysHEhdqgNMqlzli/9sMzUpg3nGLENR4hZx1PJmsSNkAayye
kPcDVkGZoYjeyQSQlTaK8nKdZ8YxiMc9l1bJ2fPW4XGRlO9JerH9DRalM41f
x0vQ60l9hOXcIIcXDQ9WzYo3rYypAmSywZxzpAo0QpywURdqlmdd9bVUIlBq
bhRYymkbl6mLUkBDdHEw5eWkIKRof5BeuuKQsUUKp8fWILxEi6UQyVwA3Ihz
A3qjteDcs/kyT/MZKS26JZtUn2cE5qG31lVm1UYE3Rj9uRv1G8VB5SmEdBiD
SsVgtVudRpd5ReydA0Tnt8BLynmyjLYuB+fbFsrCZQHd34Oi1rOuEPUHT9Eo
m0pYCXGqtLcGxE1eSScRRQYAFqxJm288dSnRLY4CTnQhIOnQrbUkjJpTnlQp
3kQB5qeSAfE0xrik8nAeiM+6kuy6OEpRc2QyrHGRerZqj5G/D0mhF71ipogK
UYedaXFBodSEdE+XnJt4phtiZJbfCAcs7zWgloht5PYGjWicF1SeobYHgQpO
GCTNCrjIWhjTAo0GI24TQZu6Jo4WyyyTEC95p2zG9Dgu4CQ5KgT2/DxjpDY3
YmJbSwBF8pkR3+goNPLEbCpNTQvHfVgje2oWbARVTJ9Wc4ct5EUVS95vYFxt
JhBrbGH5amEiD0UtaozXnkV1By55XpgN1mMHXhNzRKgGWSWS0sQLUo3Vv6Hx
WV/HUfwKlbwOqRukXW60f+X14o8JBJ/vr6kjGEs3/3I5/2xO8LaOC92G76pi
1u97RWNy8SCOITNaYvGwjVgDp9XtGUbq0oka0qKc3mJVCHygY2vWZlEzPB6X
5qehBRNAGboV9G1JZtcQ2NgkcnApVuNB0ioBY+Cm66D2xFNKZeOhj1Tsh0CZ
JRPY83W5qCZWy85zRMhVxkU/GJu1tMkLs84pjel6SQg2q4YDlyh9hEI5grLu
EtzGJKXIV6TaVaj6ifuwbmSVgbSlQ8SSnEN7kFtD+Ptw23e1iVuRPSChVkz+
y+vKZPakWXrQu0l1k3A1OZLg0K27juMgiCfkyHHqOWHCktVz9Qcv6vp5meBH
MZ1Qyg7JxZIkhKJDqKo3U16c5n4TpysixU9S4TVwYmUaYnWIUbh4gDZFvVCk
gPCKC1zlBJWlsZnEiCVBLlMZzRDNnTND9Q8Rux0PrC5xwSVRJJKMQlq2VPcC
HSCNkCSYE30TS0K4WE8pLHDNSARUGHgbrjFIhRwi3BtbqDUKWk9SjQVYfW2D
hWGIkZEfn7weycJ0nSYW+LqEdxL8MRiosRB3TH4Ajj1T6HLjrKznz55//Ohl
qdRy3106hu9TRqWa+ei0DW08fqfc1SzGZooZKGLCd3z9v6woy0MzUsS/DFq9
SBrWpEF5JFYsLofCzBBfOJi4pFpIeCouWXLsxNHrEl2uqQA5DJKApVjgaWgW
IAfZ8FgKU8v92+ABQe+qL+n8aA5jvbcml6zGcRIxx/XIiK/qgwIWwPTtzPY2
V5q1RCLmgigZMMBBmKzwp9WrkppwkwLkFPbR6bqh8pnocHhC/K7uztDj9bcI
yAIg5/QEYBwSZPEpoVuYlLzxFt2B2PMFuaodyZGjSBkZd1fwPBohabFyNUNb
AfbeEvNA5u2wUgRYwFqYQ5Sd0Njwve/BuZcuFguIv9KIGxO1r5iAisUfBiu2
/na0E4GDYORbgWBuKO8TXy+6UIhhpfj6NG3G+eEzM8tFE+9QCY6X4ahGN0uf
qa0eb4kVCc0LIYCabebsBg1xMgOdWGQuKHSYsUA6GsZwWkHWo6RrCYAHUZlr
4OkUTiMvPyYNo0XB3+E2FrHVH+x2rBHdcoicpcFopDm0E6uYtmVeUl41p5sw
xntswgqqAnuG6MlzYMiDnpP8INHy1NXggO1fD51cByUFYMMx+8ZU34aO50IT
4qQKMB8zI11s16pxIChWwhoYSXwKFa8de8LyTER/XNpzsz6OJtvmcE1d2/b0
UF64x6pEl9NH+nqVOp86DQt/Y9xYTZydHT4GknkLyjrGYyPyHoNKcp1oXrS/
81vioh6DElRnRq3KV2yPQmHflSNy57YwsWIC+bnI9psE8sZKMMrfjjPy5d5g
VuRCacujJk/YJNlcuHxNtjR17E7EKldSxZXKrk8yGFz+NMXpvIR4yeNF4+XU
pSu3FKUikSF1Dj2q/PFzR10f2XO5MRVdTPYNHnZORLojQ74Tao0kLqwCLHyg
poU79ZdzWfxkbnmRTRsVePnFAWGAH5WGCegJXMFKXM1PdPfS4Tk9fxr4PH9i
xvs7CffWk67J+LExVVGN2BfccnXHAagFtGmeLzn/xrLDupXiha9jK5zo6thG
dwpG7gTW5C+i5YVbpjfrdSIsZ4TDxpzRbd8CQwrOb7O2Oy03yceUgzgVDRD2
IFlIF5eXSKPoIRFCYc5Vs4hc7vAnLZXar1C9JWW+sr5JhTlDwJht5qw2wKsb
8LDwvqIP9iX5EGWFSH2gWnrDa/6itS4kZhVKuAECgix8ijt5EKFofPOgAutm
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
AG+k2j2VcQEA

-->

</rfc>
