<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.14 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY I-D.ietf-rtgwg-segment-routing-ti-lfa SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-rtgwg-segment-routing-ti-lfa.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3209 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3209.xml">
<!ENTITY RFC4090 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4090.xml">
<!ENTITY RFC5440 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml">
<!ENTITY RFC7490 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7490.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8402 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
]>


<rfc ipr="trust200902" docName="draft-li-rtgwg-tte-01" category="info" submissionType="IETF">
  <front>
    <title abbrev="TTE">Tactical Traffic Engineering (TTE)</title>

    <author initials="C." surname="Barth" fullname="Colby Barth">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States of America</country>
        </postal>
        <email>cbarth@juniper.net</email>
      </address>
    </author>
    <author initials="T." surname="Li" fullname="Tony Li">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States of America</country>
        </postal>
        <email>tony.li@tony.li</email>
      </address>
    </author>
    <author initials="A." surname="Smith" fullname="Andy Smith">
      <organization>Comcast</organization>
      <address>
        <postal>
          <street>1800 Arch St.</street>
          <city>Philadelphia</city>
          <region>PA</region>
          <code>19103</code>
          <country>United States of America</country>
        </postal>
        <email>andy_smith@comcast.com</email>
      </address>
    </author>
    <author initials="B." surname="Wen" fullname="Bin Wen">
      <organization>Comcast</organization>
      <address>
        <postal>
          <street>1800 Arch St.</street>
          <city>Philadelphia</city>
          <region>PA</region>
          <code>19103</code>
          <country>United States of America</country>
        </postal>
        <email>bin_wen@comcast.com</email>
      </address>
    </author>
    <author initials="L." surname="Jalil" fullname="Luay Jalil">
      <organization>Verizon</organization>
      <address>
        <postal>
          <street>400 International Pkwy</street>
          <city>Richardson</city>
          <region>TX</region>
          <code>75081</code>
          <country>United States of America</country>
        </postal>
        <email>luay.jalil@verizon.com</email>
      </address>
    </author>

    <date year="2023" month="May" day="03"/>

    
    <workgroup>RTGWG Working Group</workgroup>
    

    <abstract>


<t>Conventional traffic engineering approaches for resource management
used by RSVP-TE and SR-TE often leverage estimates of the ingress
traffic demands, during path placement.  Unforeseen and/or dynamic
events, can skew these estimates by significant enough margins to
result in unexpected network congestion.  Recomputed paths that
address the new demands may take a considerable amount of time,
leaving the network in a sub-optimal state for far too long.</t>

<t>This document proposes one mechanism that can avert congestion on a
real-time basis.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Conventional traffic engineering approaches for resource management
used by RSVP-TE <xref target="RFC3209"/> and SR-TE <xref target="RFC8402"/> often leverage
estimates of the ingress traffic demands, during path placement.
Unforeseen and/or dynamic events, can skew these estimates by
significant enough margins to result in unexpected network
congestion.  Recomputed paths that address the new demands may take a
considerable amount of time, leaving the network in a sub-optimal
state for far too long.</t>

<t>Ideally, the network should be able to react to unforeseen congestion
events and attempt to distribute load automatically, avoiding as much
congestion as possible. Such mechanisms should be usable to compliment
the conventional traffic engineering approaches.</t>

<section anchor="REQ-lang"><name>Requirement Language</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>

</section>
</section>
<section anchor="real-time-congestion"><name>Real-Time Congestion</name>

<t>Various economic factors of operating real-world networks at scale
require network operators to run their networks at relatively high
utilizations.  While legacy shortest-path routing is helpful in basic
path placement, it does not consider the actual traffic demands on the
network, resulting in highly utilized paths that can quickly become
congested.</t>

<t>To address this, network operators have adopted various traffic
engineering (TE) techniques whereby an input to the path placement for
traffic engineering tunnels utilizes a bandwidth prediction and/or a
demand matrix, with bandwidth requirements for the major sources and
destinations in the network.  These predictions are typically
estimates based on historical telemetry and capture network and/or TE
tunnel usage.</t>

<t>In a more sophisticated view of network demand, a bandwidth
requirement can be more accurately viewed as a function over time,
with the demand waxing and waning, frequently in a diurnal pattern
driven by human interaction. Periodic demands may be driven by complex
processes, sometimes scheduled, sometimes in reaction to external
events. The salient point is that the elements in the demand matrix
are best regarded as time series estimates. As a result, a traffic
engineering solution is a set of paths that may themselves vary over
time, requiring a complex optimization not only for a static demand
but at several points along the time series.</t>

<t>This problem is further compounded by the dynamic changes to demand
that were not anticipated in the estimates. Traffic demands may spike
or ebb without warning. A singer may announce a concert, causing an
unexpected demand as the ticket vendor receives a wave of
traffic. Events on social media can cause an unexpected storm of
traffic to the media's servers. New product announcements can cause
streaming sites to become overloaded.</t>

<t>Network resources are also not always consistently predictable. BGP
next-hops change, links fail, hardware fails, and software
fails. While traffic engineering tools can do contingency analysis and
creating protection paths that should mitigate potential congestion,
this is typically only done for single failures. In the rare event of
multiple failures, traffic engineering would be forced to completely
recalculate a solution, which might not be available for hours.</t>

<t>All of this leaves network operators in the very uncomfortable
situation that in unforeseen circumstances, they may find themselves
with a congested network, unable to meet Service Level Objectives
(SLOs) and potentially in violation of Service Level Agreements
(SLAs). Even more confounding is that this situation could happen even
if there is sufficient capacity in the network to support the actual
demand, but it cannot be implemented until a global optimization
computation completes.</t>

</section>
<section anchor="real-time-tactical-traffic-engineering"><name>Real-Time Tactical Traffic Engineering</name>

<t>To address this issue, we propose an alternate strategy: real-time
tactical traffic engineering (TTE). This would be a set of mechanisms
that would allow the network to react in real-time to avert congestion
and optimize traffic flow. This would work in conjunction with
traditional traffic engineering bandwidth management techniques,
alleviating problems while optimal traffic assignment is being
recomputed.</t>

<t>Real-time traffic engineering is a practical approach to a thorny
problem: full blown optimality is very hard and can take a long
time. A network that can organically, dynamically, and quickly adapt
may provide a significant performance improvement while optimal
traffic engineering path placement is in-progress.</t>

<t>TTE allows the network to dynamically distribute load if congestion is
anticipated. The goal is to simply shift load away from congested
links and then, if the link congestion abates, shift traffic back.</t>

<t>If traffic is on an alternate path, then it has the potential to
create congestion elsewhere in the network. Bringing the traffic back
to its original path causes the network to be more aligned with its
original, near-optimal traffic pattern.</t>

<section anchor="recognizing-congestion"><name>Recognizing Congestion</name>

<t>For TTE to operate effectively, it needs to understand when a link is
nearing congestion and conversely, when congestion has abated. Each
link that is protected by TTE is sampled periodically for its current
utilization. The boundaries of acceptable utilization are defined by
high and low utilization thresholds. To avoid oscillation, the link
must be outside of acceptable utilization for some consecutive number
of periodic samples before any action is performed. Further, the high
and low thresholds need to be sufficiently far apart such that small
load traffic changes will not cause a shift from high to low or low to
high.</t>

</section>
<section anchor="flows"><name>Flows</name>

<t>TTE manipulates traffic flows by changing the IPv4 or IPv6 prefixes
found in the Forwarding Information Base (FIB), or by changing label
entries found the Label Forwarding Information Base (LFIB). For the
purposes of this document, both IP prefixes and labels constitute
'flows'. A flow may have one or more paths to its destination.</t>

</section>
<section anchor="backup-paths"><name>Backup Paths</name>

<t>A number of mechanisms exist that potentially create backup paths for
a single flow.  Typically, these backup paths are used in case of a
failure of the original path and allow for a very rapid transfer of
traffic from the failed link to the backup path. For this rapid
transfer to work, the backup paths are placed in the forwarding table
and then marked as being in a backup and inactive state.</t>

<t>The key properties of a backup path are that it cannot cause
forwarding loops and that it avoids the same link that the primary
path is using. TTE makes use of backup paths by turning them into
active paths in parallel with the primary path. This creates an Equal
Cost Multi-Path (ECMP) situation where some traffic will be forwarded
down each of the active paths. In most implementations, ECMP is
implemented by hashing of the traffic, so each path will have roughly
an equal share of the traffic, however, statistical anomalies are not
impossible.</t>

<t>Potential backup paths can be computed by several mechanisms:</t>

<t><list style="symbols">
  <t>TI-LFA, RLFA: Paths computed by Topology Independent Loop-free
Alternates (TI-LFA) <xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa"/> and
Remote Loop-Free Alternate (RLFA) <xref target="RFC7490"/> can be used as backup
paths.</t>
  <t>Fast Reroute: Paths computed by RSVP Fast Reroute <xref target="RFC4090"/> can be
used as backup paths.</t>
  <t>Unequal Cost Multi-Path: Interior Gateway Protocols (IGPs) that
compute Unequal Cost Multi-Path (UCMP) paths can be used as backup
paths.</t>
  <t>PCE: Paths computed by a Path Computation Element (PCE) <xref target="RFC5440"/>
can be used as backup paths.</t>
</list></t>

</section>
<section anchor="activation-and-deactivation"><name>Activation and Deactivation</name>

<t>When TTE selects a flow and makes appropriate data plane changes so
that traffic is balanced between the primary path(s) and the backup
path(s), we say that the flow is 'active'. Similarly, when TTE shifts
traffic away from its backup path(s) back to the primary path(s), we
say that the flow is 'inactive' or 'deactivated'.</t>

</section>
<section anchor="downstream-congestion"><name>Downstream Congestion</name>

<t>In a carefully traffic engineered network, any change to the traffic
flow may have an impact in multiple places on the network. When a flow
is activated, it may shift traffic to an entirely different path, not
just around a single link, and the change may result in congestion
along the new path. Networks that are engineered to support protection
against link failures should already take this into account. However,
even this backup capacity can be saturated if TTE activates enough
flows on a variety of links. If TTE is also deployed along the backup
path, it may be triggered to activate further flows, further
distributing the traffic load.</t>

</section>
<section anchor="flow-distribution"><name>Flow Distribution</name>

<t>TTE is necessarily stochastic. Since we cannot predict flow
utilization (and thus link utilization) with absolute certainty, any
flow selection is necessarily an estimate of future behavior. TTE
assumes that the flows on the link have a typical Gaussian
distribution and that there not many 'elephant' flows that have
requirements far above the mean and not many 'mice' flows that have
requirements far below the mean. TTE also assumes that there are
enough flows that the Law of Large Numbers applies. Our simulation
results suggest that even 50 flows with a good Gaussian distribution
is ample to meet this requirement.</t>

</section>
<section anchor="flow-lifetimes"><name>Flow Lifetimes</name>

<t>Ideally, TTE would only manipulate long-lived flows, as activating a
short-lived flow would be ineffective at redirecting
bandwidth. However, knowing the lifetime of any specific traffic
stream is effectively impossible and the lifetime of an aggregated
flow is also unknowable. Historical or policy information could be
added to the approaches described here, and this is a matter for
further study.</t>

</section>
<section anchor="flow-selection"><name>Flow Selection</name>

<t>When a link is outside of its bandwidth thresholds, TTE must select
certain paths to activate or deactivate.  TTE can select one or more
paths from one or more flows. Which paths and flows to select is a
critical decision that strongly affects how quickly TTE converges to a
solution where the link bandwidth is within its thresholds.  Ideally,
TTE selects the right paths and flows to activate to create a 'working
set' that avoids congestion.</t>

<t>When a link is above its high threshold, then the set of candidate
flows for activation are those flows on the link that have inactive
paths. Similarly, if a link is below its low threshold, then the set
of candidate flows are those that have a backup path that has been
previously activated. The task of flow selection is to choose the set
of candidates to activate or deactivate to bring the link back within
its bandwidth thresholds.</t>

<t>In the following sections, we discuss several different possible
strategies for flow selection. There are a variety of trade offs
between these strategies and the selection of a specific strategy is
implementation dependent. Many more strategies are possible.</t>

<t>An implementation may employ policy to restrict the set of flows that
may be activated by TTE.</t>

<section anchor="random-selection"><name>Random Selection</name>

<t>One approach to flow selection is to randomly select a flow from the
set of candidate flows. This strategy has a significant advantage in
that it does not require any tracking of per-flow bandwidth, and thus
has minimal state and overhead requirements. The disadvantage of this
approach is that it may not converge very rapidly. If the discrepancy
between current bandwidth and target bandwidth is large, it may take
many iterations and many flows may have to be activated before
sufficient bandwidth has been moved.</t>

<t>In this strategy, overshoot is a distinct possibility. That is, a flow
that is selected and activated/deactivated may shift more bandwidth
than is required and may cause the link to shift from one extreme to
another. However, this is not seriously problematic.  Subsequent
iterations will correct this and shift bandwidth back. Since each flow
selection is an independent event, the odds of continually selecting
the same flow is inconsequential, and thus, the odds of persistent
oscillation are minimal.</t>

<t>More sophisticated strategies are possible, but do require that we
track the bandwidth utilization of each flow.</t>

</section>
<section anchor="no-elephants-selection"><name>No Elephants Selection</name>

<t>An alternate selection strategy is to try to select a set of flows
that will shift the link bandwidth utilization from its current level
to a more comfortable level. We define the 'target bandwidth' as the
average of the high and low bandwidth thresholds. The objective of
flow selection is then to select flows that, in aggregate, amount to
the difference between the target bandwidth and the current
bandwidth. We call this the 'target change'.</t>

<t>Flows with a bandwidth bigger than the target change are then
effectively elephant flows and should be discarded from the candidate
pool. Flows are iteratively randomly selected from the remaining pool
until the target change is satisfied.</t>

<t>Intuitively, this seems like an effective strategy, but our
simulations indicate that it has poor performance. In some situations,
there are simply not enough candidates in the pool to meet the target
change. As a result, this strategy may sometimes not converge to a
solution. From this, we observe that it may sometimes be best to
intentionally overshoot the target by selecting an elephant and then
converge by an opposing selection of other flows in the next
iteration.</t>

</section>
<section anchor="maximum-fit"><name>Maximum Fit</name>

<t>A similar strategy is to first exclude elephant flows and then select
the largest remaining candidates to meet the target change. This has
the benefit that it moves fewer flows than purely random selection. It
still suffers from not selecting elephant flows if one is necessary.</t>

<t>Moving fewer flows is beneficial because it is less disruptive to
network traffic. Every time a flow is moved, transport protocols may
detect a change in latency and thus a change in round-trip time
(RTT). This may be misinterpreted as a congestion event and lead to
congestion avoidance. It would be beneficial to minimize this impact.</t>

</section>
<section anchor="minimum-fit"><name>Minimum Fit</name>

<t>The opposite strategy is to first exclude elephant flows and then
select the smallest remaining candidates. This has the unfortunate
issue of moving the maximum number of flows and retains the problem of
not moving elephants when they are necessary.</t>

</section>
<section anchor="best-fit"><name>Best Fit</name>

<t>Analogies to memory allocation problems suggest that selecting the
set of candidate flows that most closely total the target change would
be a possible strategy. Unfortunately, the number of possibilities is
the power set of the number of candidate flows. This can quickly
explode and become computationally intractable. This strategy was not
simulated.</t>

</section>
<section anchor="maximum-fit-with-elephants"><name>Maximum Fit with Elephants</name>

<t>This strategy is a derivative of the maximum fit strategy. In this
strategy, if the target change cannot be satisfied by selecting all of
the non-elephant candidates, then the smallest elephant is selected
instead. This strategy showed excellent results.</t>

</section>
</section>
</section>
<section anchor="contributors"><name>Contributors</name>

<t>The following people have substantially contributed to this document:</t>

<t>Tarek Saad, Hari Kotni, Minto Jeyananth, Raj Chetan
Boddireddy, Shraddha Hegde</t>

<t>The authors would like to thank Jim Uttaro for his comments.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document makes no requests of IANA.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Tactical Traffic Engineering is a mechanism that shifts traffic across
pre-computed paths. It introduces no new protocols and operates
completely locally on a single system. As such, it creates no new
security issues.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&I-D.ietf-rtgwg-segment-routing-ti-lfa;
&RFC2119;
&RFC3209;
&RFC4090;
&RFC5440;
&RFC7490;
&RFC8174;
&RFC8402;


    </references>




  </back>

<!-- ##markdown-source:
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
Mm7K0+UPWViFpCEjI8z238DRUUf8RAAA

-->

</rfc>

