<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2328 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2328.xml">
<!ENTITY RFC5340 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5340.xml">
<!ENTITY RFC6987 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6987.xml">
<!ENTITY RFC4203 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4203.xml">
<!ENTITY RFC4915 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4915.xml">
<!ENTITY RFC5329 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5329.xml">
<!ENTITY RFC7770 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7770.xml">
<!ENTITY RFC3630 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3630.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-ospf-link-overload-02" ipr="trust200902">
<front>
<title abbrev="OSPF link overload"> OSPF Link Overload</title>
<author initials="S." surname="Hegde" fullname="Shraddha Hegde">
<organization>Juniper Networks, Inc.</organization>
<address>
<postal>
<street>Embassy Business Park</street>
<city>Bangalore</city>
<region>KA</region>
<code>560093</code>
<country>India</country>
</postal>
<email>shraddha@juniper.net</email>
</address>
</author>
<author initials="P." surname="Sarkar" fullname="Pushpasis Sarkar">
<organization>Individual</organization>
<address>
<postal>
<street></street>
<city></city>
<region></region>
<code></code>
<country></country>
</postal>
<email>pushpasis.ietf@gmail.com</email>
</address>
</author>
<author fullname="Hannes Gredler" initials="H." surname="Gredler">
<organization>Individual</organization>
<address>
<postal>
<street></street>
<city></city>
<region></region>
<code></code>
<country></country>
</postal>
<email>hannes@gredler.at</email>
</address>
</author>
<author fullname="Mohan Nanduri" initials="M." surname="Nanduri">
<organization>Microsoft Corporation</organization>
<address>
<postal>
<street>One Microsoft Way</street>
<city>Redmond</city>
<region>WA</region>
<code>98052</code>
<country>US</country>
</postal>
<email>mnanduri@microsoft.com</email>
</address>
</author>
<author fullname="Luay Jalil" initials="L." surname="Jalil">
<organization>Verizon</organization>
<address>
<postal>
<street></street>
<city></city>
<region></region>
<code></code>
<country></country>
</postal>
<email>luay.jalil@verizon.com</email>
</address>
</author>
<date year="2016"/>
<area>Routing</area>
<workgroup>Open Shortest Path First IGP</workgroup>
<keyword>MPLS</keyword>
<keyword>IGP</keyword>
<keyword>OSPF</keyword>
<abstract>
<t> When a link is being prepared to be taken out of service, the traffic needs to be diverted from both ends of the link.
 Increasing the metric to the highest metric on one side of the link
is not sufficient to divert the traffic flowing in the other direction.</t> 

<t>It is useful for routers in an OSPFv2 or OSPFv3 routing domain to be able to
advertise a  link being in an overload state to indicate impending maintenance activity on the link.
This information can be used by the network devices to re-route the traffic effectively.
 </t>
<t>This document describes the protocol extensions to disseminate
link overload information in OSPFv2 and OSPFv3.</t>
</abstract>
<note title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref target="RFC2119">RFC 2119</xref>.</t>
</note>
</front>
<middle>

<section title="Introduction" anchor='intro'>

<t>When a node is being prepared for a planned maintenance or upgrade, 
<xref target="RFC6987"/> provides mechanisms to advertise the 
node being in an overload state by setting all outgoing link costs  to MAX-METRIC (0xffff). These procedures
are specific to the maintenance activity on a node and cannot be used when a single  link attached to the node
requires maintenance. </t>

<t>  In traffic-engineering deployments, 
LSPs need to be moved away from the link without disrupting the services.
It is useful to be able to advertise the impending maintenance
activity on the link and to have LSP re-routing policies at the ingress to route the LSPs away from the link. </t>

<t>Many OSPFv2 or OSPFv3 deployments run on overlay networks provisioned by means of pseudo-wires or L2-circuits.
When the devices in the underlying network go for maintenance, it is useful to divert the traffic
away from the node before the maintenance is actually scheduled. Since the nodes in the underlying network are not visible to OSPF,
the existing stub router mechanism described in <xref target="RFC6987"/> cannot be used.
 Application specific to this use case is described in <xref target="Pseudowire_services"/></t>

 <t>
This document provides mechanisms to advertise link overload state in the flexible encodings provided by
RI LSA( <xref target="RFC7770"/>) for OSPFv2 and OSPFv3.

Throughout this document, OSPF is used when the text applies to both
OSPFv2 and OSPFv3.  OSPFv2 or OSPFv3 is used when the text is
specific to one version of the OSPF protocol.
</t>
</section>

<section title="Motivation" anchor='Motivation'>

<t>The motivation of this document is to reduce manual intervention during maintenance activities.
The following objectives help to accomplish this in a range of deployment scenarios.</t>
<t>
<list style="numbers">
<t> Advertise impending maintenance activity so that the traffic from both directions 
can be diverted away from the link.</t>
<t> Allow the solution to be backward compatible so that nodes that do not understand the new advertisement do not
    cause routing loops.</t>
<t> Advertise the maintenance activity to other nodes in the network so that LSP ingress routers/controllers can learn the impending
    maintenance activity and apply specific policies to re-route the LSP for traffic-engineering based deployments.</t>
<t> Allow the link to be used as last resort link to prevent traffic disruption when alternate paths are not available.</t>

</list>
</t>
</section>

<section title='Link overload sub-TLV'>

<section title='OSPF Link overload sub-TLV'>
<t> The Link Overload sub-TLV is  defined as below. This sub-TLV is attached to the Link TLV <xref target="RFC3630"/> 
and carried in RI LSA <xref target="RFC7770"/> for OSPFv2 and OSPFv3

<vspace blankLines="2" />
<figure anchor="OSPFv2-link-overload-sub-TLV" title="Link Overload sub-TLV for OSPFv2">
<artwork>
       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              Type             |             Length            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     

</artwork>
</figure>
<vspace blankLines="1" />

Type : TBA (suggested value 35)
<vspace blankLines="1" />
Length: 0
<vspace blankLines="1" />

</t>
</section>
</section>
<section title='Flooding Scope'>
<t>The link overload information can be flood in area scoped RI LSA or link scoped RI LSA  or both based on the need of the application.
 <xref target="applications"/> describes applications requiring area scope as well as link scope Link-overload information.
The Link TLV and the link-overload sub-tlv MAY appear in any instance of the RI-LSA.</t>

<section title='Area scope flooding'>
<t>For OSPFv2, Link overload Sub-TLV is carried in the Link TLV as defined in <xref target="RFC3630"/>. Link TLV is carried in 
area scoped RI LSA  <xref target="RFC7770"/>. When there are more than one parallel links between two nodes, the link carrying link-overload
information, need to be uniquely identified among the parallel links. Remote interface IP address sub-tlv as defined by <xref target="RFC3630"/>
is also carried in the Link TLV which is used by the remote nodes to uniquely identify the overloaded link.</t>
<t>For OSPFv3, Link-overload sub-tlv is carried in Link TLV as defined in <xref target="RFC5329"/> Link TLV is carried in the OSPFv3 area scoped RI-LSA
<xref target="RFC7770"/></t>
</section>
<section title='Link scope flooding'>
<t>The link local scope RI-LSA corresponds to the link on which the LSA arrives and there is no need to explicitly carry the link TLV.
The Link overload sub-TLV is carried in the RI-LSA for both OSPFv2 and OSPFv3. </t>
</section>
</section>
<section title='Elements of procedure'>
<t>The Link Overload sub-TLV indicates that the link identified in which it is carried is overloaded.
 The node that has the link to be taken out of service 
SHOULD originate the Link Overload sub-TLV in the  Link TLV in the
RI LSA as defined in  <xref target="RFC7770"/>.
The link-overload information is carried 
as a property of the link and is flooded across the area. This information can be used by ingress routers or controllers to take
special  actions. Application specific to this use case is described in  <xref target="controller_TE"/>.</t>


<t>The precise action taken by the remote node at the other end of the link identified as overloaded depends on the link type.</t>

<section title='Point-to-point links'>
<t>The node that has the link to be taken
   out of service SHOULD set metric of the link to MAX-METRIC (0xffff) and re-
   originate the Router-LSA.  The TE metric SHOULD be set to MAX-TE-METRIC-1
   (0xfffffffe) and the node SHOULD re-originate the TE Link Opaque LSAs.
When a Link Overload sub-TLV is received for a point-to-point link either by link local or area scoped RI-LSA, 
the remote node SHOULD identify the local link which corresponds to the
overloaded link and set the metric to MAX-METRIC (0xffff). The remote node MUST re-originate  the router-LSA with the changed metric and flood 
into the OSPF area. The TE metric SHOULD be set to MAX-TE-METRIC-1 (0xfffffffe) and the TE opaque LSA for the link
 MUST be re-originated with new value.</t>
 
 <t> In multi-topology deployments <xref target="RFC4915"/>, the Link overload Sub-TLV carried in an RI LSA corresponds to all the topologies the link belongs to.
 The receiver node SHOULD change the metric in the reverse direction corresponding to all the topologies to which the reverse link belongs.</t>
 
 <t>When the originator of the Link Overload sub-TLV purges the RI-LSA or re-originates it without the Link Overload sub-TLV,
 the remote node must re-originate the appropriate LSAs with the metric and TE metric values set to their original values.</t>
 
</section>

<section title='Broadcast/NBMA links'>
<t>Broadcast or NBMA networks in OSPF are represented by a star topology where the Designated Router (DR) is the central point to
which all other routers on the broadcast or NBMA network connect logically.  As a result, routers on the broadcast or NBMA network advertise only 
their adjacency to the DR.  Routers that do not act as DR do not form or advertise adjacencies with each other. 
 For the Broadcast links, the MAX-METRIC on the remote link cannot be changed since all the neighbours are on same link. 
Setting the link cost to MAX-METRIC would impact paths going via all neighbours. 
<vspace blankLines="1" />
The node that has the link to be taken out of service SHOULD set metric of the link to MAX-METRIC (0xffff) and re-originate the Router-LSA.  
The TE metric SHOULD be set to MAX-TE-METRIC-1(0xfffffffe) and the node SHOULD re-originate the TE Link Opaque LSAs.
For a broadcast link, the two part metric as described in <xref target="I-D.ietf-ospf-two-part-metric"/> is used. The node originating the Link
Overload sub-TLV MUST set the metric in the Network-to-Router Metric sub-TLV to MAX-METRIC 0xffff for OSPFv2 and OSPFv3
and re-originate the LSAs the TLV is carried-in.
<vspace blankLines="1" />
The nodes that receive the two part metric should follow the procedures described in <xref target="I-D.ietf-ospf-two-part-metric"/>.
The backward compatibility procedures described in <xref target="I-D.ietf-ospf-two-part-metric"/> should be followed to ensure 
loop free routing. 
</t>
</section>

<section title='Point-to-multipoint links'>
   <t> Operation for the point-to-multipoint links is similar to the point-to-point links.
    When a Link Overload sub-TLV is received for a point-to-multipoint link the remote node SHOULD identify the link which corresponds to the
    overloaded link and set the metric to MAX-METRIC (0xffff). The remote node MUST re-originate the Router-LSA with the changed metric and flood 
    into the OSPF area.</t>
</section>

<section title='Unnumbered interfaces'>
   <t> Unnumbered interface do not have a unique IP addresses and borrow address from other interfaces. 
       The Link TLV carries the local and remote interface ids to uniquely identify the link when there are
       more than one parallel links between the nodes.	   
       Procedures to obtain interface-id of the remote side is defined in  <xref target="RFC4203"/> and are applicable to the Link TLV
	   added in the RI LSA for the purpose of carrying the Link overload sub-tlv. </t>
</section>
    
</section>


<section title='Backward compatibility'>
   <t>The mechanism described in the document is fully backward compatible.It is required that the originator
   of the Link Overload sub-TLV as well as the node at the remote end of the link identified as overloaded 
    understand the extensions defined in this document.  In the case of broadcast links, the backward
   compatibility procedures as described in
  <xref target="I-D.ietf-ospf-two-part-metric"/> are applicable.
.</t>

</section>

<section anchor ="applications" title='Applications'>
<section anchor="Pseudowire_services" title='Pseudowire Services'> 

<figure anchor="Pseudo_wire_services" title="Pseudowire Services">
<artwork>
     
        ---------PE3----------------PE4----------
       |                                         |
       |                                         |
     CE1---------PE1----------------PE2---------CE2
       |                                         |
       |                                         |
        -----------------------------------------
                 Private VLAN

</artwork>
</figure>
 <t>Many service providers offer pseudo-wire services to customers using L2 circuits. The IGP protocol that
runs in the customer network would also run over the pseudo-wire to create seamless private network for the customer. 
Service providers want to offer overload kind of functionality when the PE device is taken-out for maintenance.
The provider should guarantee that the PE is taken out for maintenance only after the service is successfully diverted
on an alternate path. There can be large number of customers attached to a PE node and the remote end-points for these pseudo-wires 
are spread across the service provider's network. It is a tedious and error-prone process to change the metric for all
pseudo-wires in both directions.The link overload feature 
simplifies the process by increasing the metric on the link in the reverse direction as well so that traffic
in both directions is diverted away from the PE undergoing maintenance.
 The link-overload feature allows the link to be used as a last resort link so that traffic is not disrupted when alternative
paths are not available.</t>
</section>

<section anchor="controller_TE" title='Controller based Traffic Engineering Deployments'>  

<figure anchor="TE_deployments" title="Controller based Traffic Engineering">
<artwork>
                      _____________
                     |             |
        -------------| Controller  |--------------
       |             |____________ |             |
       |                                         |
       |--------- Primary Path ------------------|
       PE1---------P1----------------P2---------PE2
                   |                  |
                   |                  |
                   |________P3________|      
                   
                      Alternate Path

</artwork>
</figure>
 <t>In controller-based deployments where the controller participates in the IGP protocol, 
 the controller can also receive the link-overload information as a warning that link maintenance is imminent.
 Using this information, the controller can find alternate paths for traffic which use the affected link.  
 The controller can apply various policies and re-route the LSPs away from the link undergoing maintenance. 
 If there are no alternate paths satisfying the traffic engineering constraints, the controller might
 temporarily relax those constraints and put the service on a different path. </t>
 <t>In the above example, PE1->PE2 LSP
 is set-up which satisfies a constraint of 10 GB bandwidth on each link.The links P1->P3 and P3->P2 have only 1 GB capacity.
 and there is no alternate path satisfying the bandwidth constraint of 10GB.
 When P1->P2 link is being prepared for maintenance, 
 the controller receives the link-overload information, as there is no alternate path available which satisfies the constraints,
 controller chooses a path that is less optimal and sets up an alternate path via P1->P3->P2 temporarily.
 Once the traffic is diverted, P1->P2 link can be taken out for maintenance/upgrade.</t>
</section>

</section>
<!-- HG: FIXME: add traffic-engineering reference -->
<section title='Security Considerations' anchor='sec-con'>
<t>
This document does not introduce any further security issues other
than those discussed in <xref target="RFC2328"/> and <xref target="RFC5340"/>.
</t>
</section>
<section anchor="IANA" title="IANA Considerations">

<t>This specification updates one OSPF registry:</t>
<t><vspace blankLines="1"/>
OSPF Link TLVs Registry</t>
<t><vspace blankLines="1"/>
  i) TBD – Link Overload sub TLV </t>

  <t>OSPFV3 Link TLV Registry</t>
 <t><vspace blankLines="1"/>
   i) TBD – Link Overload sub TLV</t>
   
   <t>OSPF Router Information (RI)TLVs  Registry</t>
   <t>i) TBD - Link TLV </t>

</section>
<section title='Acknowledgements'>
<t>Thanks to Chris Bowers for valuable inputs and edits to the document. Thanks to Jeffrey Zhang and Acee Lindem for inputs.</t>
</section>


</middle>
<back>

<references title='Normative References'>
&RFC5329;
&RFC7770;
&RFC3630;
<?rfc include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-ospf-two-part-metric-01.xml"?>
</references>
<references title='Informative References'>
&RFC2328;
&RFC5340;
&RFC2119;
&RFC6987;
&RFC4203;
&RFC4915;

</references>

</back>
</rfc>