<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY I-D.ietf-isis-te-metric-extensions SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-isis-te-metric-extensions.xml">

<!ENTITY I-D.ietf-spring-segment-routing-mpls SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-spring-segment-routing-mpls.xml">

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3209 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3209.xml">
<!ENTITY RFC3473 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3473.xml">
<!ENTITY RFC4594 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4594.xml">
<!ENTITY RFC6049 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6049.xml">
<!ENTITY RFC7471 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7471.xml">
<!ENTITY RFC4655 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4655.xml">

<!ENTITY RFC3246 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3246.xml">
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="no" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->

<rfc category="info" docName="draft-ietf-teas-te-express-path-04" ipr="trust200902" >
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="Path Selection with TE Metric Extensions">Performance-based Path Selection for Explicitly Routed LSPs using TE Metric Extensions</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Alia Atlas" initials="A.K.A." surname="Atlas">
     <organization>Juniper Networks</organization>
     <address>
       <postal>
         <street>10 Technology Park Drive</street>
         <city>Westford</city>
         <region>MA</region>
         <code>01886</code>
         <country>USA</country>
       </postal>
       <email>akatlas@juniper.net</email>
      </address>
    </author>

    <author fullname="John Drake" initials="J.D." surname="Drake">
     <organization>Juniper Networks</organization>
     <address>
       <postal>
         <street>1194 N. Mathilda Ave.</street>
         <city>Sunnyvale</city>
         <region>CA</region>
         <code>94089</code>
         <country>USA</country>
       </postal>
       <email>jdrake@juniper.net</email>
      </address>
    </author>

    <author fullname="Spencer Giacalone" initials="S.G." surname="Giacalone">
     <organization>Unaffiliated</organization>
     <address>
       <email>spencer.giacalone@gmail.com</email>
      </address>
    </author>

    <author fullname="Stefano Previdi" initials="S.P." surname="Previdi">
     <organization>Cisco Systems</organization>
     <address>
       <postal>
         <street>Via Del Serafico 200</street>
         <city>Rome</city>
         <code>00142</code>
         <country>Italy</country>
       </postal>
       <email>sprevidi@cisco.com</email>
      </address>
    </author>

    <date year="2015" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>Routing</area>

    <workgroup>TEAS Working Group</workgroup>

<abstract>

<t>In certain networks, it is critical to consider network performance
criteria when selecting the path for an explicitly routed RSVP-TE LSP.
Such performance criteria can include latency, jitter, and loss or
other indications such as the conformance to link performance
objectives and non-RSVP TE traffic load. This specification describes
how a path computation function may use network performance data, such
as is advertised via the OSPF and ISIS TE metric extensions (defined
outside the scope of this document) to perform such path selections.
</t>

</abstract>

</front>
<middle>
<section anchor="sec_intro" title="Introduction">

<t>In certain networks, such as financial information networks,
network performance information is becoming as critical to data path
selection as other existing metrics.  Network performance information
can be obtained via either the TE Metric Extensions in OSPF <xref
target="RFC7471"/> or ISIS <xref
target="I-D.ietf-isis-te-metric-extensions"/> or via a management
system.  As with other TE information flooded via OSPF or ISIS, the TE
metric extensions have a flooding scope limited to the local area or
level.  This document describes how a path computation function,
whether in an ingress LSR or a PCE<xref target="RFC4655"/> , can use
that information for path selection for explicitly routed LSPs.  The
selected path may be signaled via RSVP-TE <xref target="RFC3209"/>,
<xref target="RFC3473"/> or simply used by the ingress with segment
routing <xref target="I-D.ietf-spring-segment-routing-mpls"/> to
properly forward the packet.  Methods of optimizing path selection for
multiple parameters are generally computationally complex. However,
there are good heuristics for the delay-constrained lowest-cost (DCLC)
computation problem <xref target="k-Paths_DCLC"/> that can be applied
to consider both path cost and a maximum delay bound.  Some of the
network performance information can also be used to prune links from a
topology before computing the path.</t>


<t>The path selection mechanisms described in this document apply to
paths that are fully computed by the head-end of the LSP and then
signaled in an Explicit Route Object (ERO) where every sub-object is
strict. This allows the head-end to consider IGP-distributed
performance data without requiring the ability to signal the
performance constraints in an object of the RSVP Path message.</t>

<!--

<t>If there are use-cases where loose EROs are desired, then the
performance-related constraints can be signaled in new TLVs in the
LSP_REQUIRED_ATTRIBUTES<xref target="RFC5420"/>.  Each LSR would
receive the constraints, make its path selection decision, and
update the associated TLVs with the reduced constraint.</t> -->

<t>When considering performance-based data, it is obvious that there
are additional contributors to latency beyond just the links. Clearly
end-to-end latency is a combination of router latency (e.g. latency
from traversing a router without queueing delay), queuing latency,
physical link latency and other factors.  While traversing a router
can cause delay, that router latency can be included in the advertised
link delay.  As described in <xref
target="RFC7471"/> and <xref
target="I-D.ietf-isis-te-metric-extensions"/>, queuing delay must not
be included in the measurements advertised by OSPF or ISIS.
</t>

<t>Queuing latency is specifically excluded to insure freedom from
oscillations and stability issues that have plagued prior attempts to
use delay as a routing metric.  If application traffic follows a path
based upon latency constraints, the same traffic might be in an
Expedited Forwarding Per-Hop-Behavior <xref target="RFC3246"/> with
minimal queuing delay or another PHB with potentially very substantial
per-hop queuing delay.  Only traffic which experiences relatively low
congestion, such as Expedited Forwarding traffic, will experience
delays very close to the sum of the reported link delays.</t>

<t>This document does not specify how a router determines what values
to advertise by the IGP; it does assume that the constraints specified
in <xref target="RFC7471"/> and <xref
target="I-D.ietf-isis-te-metric-extensions"/> are
followed. Additionally, the end-to-end performance that is computed
for an LSP path should be built from the individual link data. Any
end-to-end characterization used to determine an LSP's performance
compliance should be fully reflected in the Traffic Engineering
Database so that a path calculation can also determine whether a path
under consideration would be in compliance.</t>

<section title="Basic Requirements">
<t>The following are the requirements that motivate this document.</t>
<t><list style="numbers">

 <t>Select a TE tunnel's path based upon a combination of existing
 constraints as well as on link-latency, packet loss, jitter, link performance objectives
 conformance, and bandwidth consumed by non-RSVP-TE traffic.</t>

 <t>Ability to define different end-to-end performance requirements
 for each TE tunnel regardless of common use of resources.</t>

 <t>Ability to periodically verify with the TE LSDB that a TE tunnel's
 current LSP complies with its configured end-to-end performance
 requirements.</t>

 <t>Ability to move tunnels, using make-before-break, based upon
 computed end-to-end performance complying with constraints.</t>

 <t>Ability to move tunnels away from any link that is violating an
 underlying link performance objective.</t>

 <t>Ability to optionally avoid setting up tunnels using any link that
 is violating a link performance objective, regardless of whether
 end-to-end performance would still meet requirements.</t>

 <t>Ability to revert back using make-before-break to the best path
 after a configurable period.</t>

</list></t>

</section>

<section anchor="sec_stability" title="Oscillation and Stability Considerations">

<t>Past attempts to use unbounded delay or loss as metric sufferred
from severe oscillations.  The use of performance based data must be
such that undampened oscillations are not possible and stability
cannot be impacted.</t>

<t>The use of timers is often cited as a cure.  Oscillation that is
   damped by timers is known as "slosh".  If advertisement timers are
   very short relative to the jitter applied to RSVP-TE CSPF timers,
   then a partial oscillation occurs.  If RSVP-TE CSPF timers are
   short relative to advertisement timers, full oscillation (all
   traffic moving back and forth) can occur.  Even a partial
   oscillation causes unnecessary reordering which is considered at
   least minimally disruptive.</t>

<t>Delay variation or jitter is affected by even small traffic levels.
At even tiny traffic levels, the probability of a queue occupancy of
one can produce a measured jitter proportional to or equal to the
packet serialization delay.  Very low levels of traffic can increase
the probability of queue occupancies of two or three packets enough to
further increase the measured jitter.  Because jitter measurement is
extremely sensitive to very low traffic levels, any use of jitter
is likely to oscillate.  However, there may be uses of a jitter
measurement in path computation that can be considered free of
oscillation.</t>

<t>Delay measurements that are not sensitive to traffic loads may be
safely used in path computation.  Delay measurements made at the link
layer or measurements made at a queuing priority higher than any
significant traffic (such as DSCP CS7 or CS6 <xref target="RFC4594"/>,
but not CS2 if traffic levels at CS3 and higher or EF and AF can
affect the measurement).  Making delay measurements at the same
priority as the traffic on affected paths is likely to cause
oscillations.</t>

</section>
</section>

<section title="Using Performance Data Constraints" >

<section title="End-to-End Constraints">

<t>The per-link performance data available in the IGP <xref
target="RFC7471"/> <xref
target="I-D.ietf-isis-te-metric-extensions" /> includes:
unidirectional link delay, unidirectional delay variation, and link
loss. Each (or all) of these parameters can be used to create the
path-level link-based parameter.</t>

<t>It is possible to compute a CSPF where the link latency values are
used instead of TE metrics, this results in ignoring the TE metrics
and causing LSPs to prefer the lowest-latency paths.  In practical
scenarios, latency constraints are typically a bound constraint rather
than a minimization objective. An end-to-end latency upper bound
merely requires that the path computed be no more than that bound and
does not require that it be the minimum latency path.  The latter is
exactly the delay-constrained lowest-cost (DCLC) problem to which good
heuristics have been proposed in the literature (e.g. <xref
target="k-Paths_DCLC"/>).</t>

<t>An end-to-end bound on delay variation can be used similarly as a
constraint in the path computation on what links to explore where the
path's delay variation is the sum of the used links' delay
variations.</t>

<t>For link loss, the path loss is not the sum of the used links'
losses.  Instead, the path loss fraction is 1 - (1 - loss_L1)*(1 -
loss_L2)*...*(1 - loss_Ln), where the links along the path are L1 to
Ln with loss_Li in fractions.  This computation is discussed in more
detail in Sections 5.1.4 and 5.1.5 in <xref target="RFC6049"/>.  The
end-to-end link loss bound, computed in this fashion, can also be used
as a constraint in the path computation.</t>

<t>The heuristic algorithms for DCLC only address one constraint bound
but having a CSPF that limits the paths explored (i.e. based on
hop-count) can be combined <xref target="hop-count_DCLC"/>.</t>
</section>

<section title="Link Constraints">

<t>In addition to selecting paths that conform to a bound on
performance data, it is also useful to avoid using links that do not
meet a necessary constraint.  Naturally, if such a parameter were a
known fixed value, then resource attribute flags could be used to
express this behavior.  However, when the parameter associated with a
link may vary dynamically, there is not currently a configuration-time
mechanism to enforce such behavior.  An example of this is described
in <xref target="sec_anomalous"/>, where links may move in and out of
conformance for link performance objectives with regards to latency,
delay variation, and link loss.</t>

<t>When doing path selection for TE tunnels, it has not been possible
to know how much actual bandwidth is available that includes the
bandwidth used by non-RSVP-TE traffic.  In <xref
target="RFC7471"/> <xref
target="I-D.ietf-isis-te-metric-extensions" />, the Unidirectional
Available Bandwidth is advertised as is the Residual Bandwidth.  When
computing the path for a TE tunnel, only links with at least a
minimum amount of Unidirectional Available Bandwidth might be
permitted.</t>

<t>Similarly, only links whose loss is under a configurable value
might be acceptable.  For these constraints, each link can be tested
against the constraint and only explored in the path computation if the
link passes. In essence, a link that fails the constraint test is
treated as if it contained a resource attribute in the exclude-any
filter.</t>

</section>

<section anchor="sec_anomalous" 
title="Links out of compliance with Link Performance Objectives">
<t>Link conformance to a link performance objective can change as a
result of rerouting at lower layers.  This could be due to optical
regrooming or simply rerouting of a FA-LSP.  When this occurs, there
are two questions to be asked:</t> 

<t><list style="letters">
<t>Should the link be trusted and used for the setup of new LSPs?</t>

<t>Should LSPs using this link automatically be moved to a secondary
path?</t>

</list></t>

<section title="Use of Anomalous Links for New Paths">

<t>If the answer to (a) is no for link latency performance objectives,
then any link which has the Anomalous bit set in the Unidirectional
Link Delay sub-TLV<xref target="RFC7471"/>
<xref target="I-D.ietf-isis-te-metric-extensions" /> should be removed
from the topology before a path calculation is used to compute a new
path.  In essence, the link should be treated exactly as if it fails
the exclude-any resource attributes filter.<xref
target="RFC3209"/>.</t>

<t>Similarly, if the answer to (a) is no for link loss performance
objectives, then any link which has the Anomalous bit set in the Link
Loss sub-TLV should be treated as if it fails the exclude-any resource
attributes filter.</t>

</section>

<section title="Links entering the Anomalous State">

<t>When the Anomalous bit transitions from clear to set, this
indicates that the associated link has entered the Anomalous state
with respect to the associated parameter; similarly, a transition from
set to clear indicates that the Anomalous state has been exited for
that link and associated parameter.</t>

<t> When a link enters the Anomalous state with respect to a
parameter, this is an indication that LSPs using that link might also
no longer be in compliance with their performance bounds.  It can also
be considered an indication that something is changing that link and
so it might no longer be trustworthy to carry performance-critical
traffic.  Naturally, which performance criteria are important for a
particular LSP is dependent upon the LSP's configuration and thus the
compliance of a link with respect to a particular link performance
objective is indicated per performance criterion.</t>

<t>At the ingress of a TE tunnel, a TE tunnel may be configured to be
sensitive to the Anomalous state of links in reference to latency,
delay variation, and/or loss.  Additionally, such a TE tunnel may
be configured to either verify continued compliance, to switch
immediately to a standby LSP, or to move to a different path.</t> 

<t>When a sub-TLV is received with the Anomalous bit set when
previously it was clear, the list of interested TE tunnels must be
scanned.  Each such TE tunnel should either have its continued
compliance verified, be switched to a hot standby, or do a
make-before-break to a secondary path.</t>

<t>It is not sufficient to just look at the Anomalous bit in order to
determine when TE tunnels must have their compliance verified.  When
changing to set, the Anomalous bit merely provides a hint that
interested TE tunnels should have their continued
compliance verified.</t>

</section>

<section title="Links leaving the Anomalous State">

<t>When a link leaves the Anomalous state with respect to a parameter,
this can serve as an indication that those TE tunnels, whose LSPs were
changed due to administrative policy when the link entered the
Anomalous state, may want to reoptimize to a better path.  The hint
provided by the Anomalous state change may help optimize when to
recompute for a better path.</t>

</section>

</section>
</section>

 <section anchor="IANA" title="IANA Considerations">
    <t>This document includes no request to IANA.</t>
 </section>

  <section anchor="Security" title="Security Considerations">
    <t>This document is not currently believed to introduce new security concerns.</t>
   </section>

<section title="Contributors">

<t>Dave Ward and Clarence Filsfils contributed to this document.</t>

</section>

<section anchor="Acknowledgement" title="Acknowledgements">

   <t>The authors would like to thank Curtis Villamizar for his
   extensive detailed comments and suggested text in the <xref
   target="sec_intro"/> and <xref target="sec_stability"/>.  The
   authors would like to thank Dhruv Dhody for his useful comments,
   and his care and persistence in making sure that these important
   corrections weren't missed.  The authors would also like to thank
   Xiaohu Xu and Sriganesh Kini for their review.</t>
</section>

</middle>

  <!--  *****BACK MATTER ***** -->

<back>

    <!-- References split into informative and normative -->

<references title="Normative References">
&RFC3209;
&RFC7471;
&I-D.ietf-isis-te-metric-extensions;
</references>

<references title="Informative References">
&RFC3246;
&RFC4594;
&RFC6049;
&RFC4655;
&RFC3473;
&I-D.ietf-spring-segment-routing-mpls;
<reference anchor="k-Paths_DCLC"
         target="http://paleale.eecs.berkeley.edu/~varaiya/papers_ps.dir/kdclc-ieeev4.pdf">
  <front>
    <title>Heuristic methods for delay constrained least cost routing using k-shortest-paths</title>
    <author fullname="Zhanfeng Jia" initials="Z.J." surname="Jia"/>
    <author fullname="Pravin Varaiya" initials="P.V." surname="Varaiya"/>
    <date year="2006"/>
  </front>
  <seriesInfo name="IEEE Transactions on Automatic Control" value="51(4)"/>
  <format type='PDF' 
    target="http://paleale.eecs.berkeley.edu/~varaiya/papers_ps.dir/kdclc-ieeev4.pdf"/>
</reference>

<reference anchor="hop-count_DCLC"
    target="http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4276447">
  <front>
    <title>Optimization of QoS Routing</title>
    <author fullname="Himanshu Agrawal" initials="H.A." surname="Agrawal"/>
    <author fullname="Melanie Grah" initials="M.G." surname="Grah"/>
    <author fullname="Mark Gregory" initials="M.G." surname="Gregory"/>
    <date year="2007"/>
   </front>
  <seriesInfo name="6th IEEE/AACIS International Conference on Computer and Information Science" value="2007"/>
</reference>
</references>

</back>
</rfc>