<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.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="yes" ?>
<!-- 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="std" docName="draft-smirnov-ospf-xaf-te-07" ipr="trust200902"
     obsoletes="" submissionType="IETF" updates="5786" xml:lang="en">
  <!-- 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="OSPF Routing with Cross-AF MPLS TE">
      OSPF Routing with Cross-Address Family MPLS Traffic Engineering
      Tunnels</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Anton Smirnov" initials="A." surname="Smirnov">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>De kleetlaan 6a</street>

          <!-- Reorder these if your country does things differently -->

          <city>Diegem</city>

          <region/>

          <code>1831</code>

          <country>Belgium</country>
        </postal>

        <email>as@cisco.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Alvaro Retana" initials="A." surname="Retana">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>7025 Kit Creek Rd.</street>

          <!-- Reorder these if your country does things differently -->

          <city>Research Triangle Park</city>

          <region>NC</region>

          <code>27709</code>

          <country>USA</country>
        </postal>

        <email>aretana@cisco.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Michael Barnes" initials="M." surname="Barnes">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>510 McCarthy Blvd.</street>

          <!-- Reorder these if your country does things differently -->

          <city>Milpitas</city>

          <region>CA</region>

          <code>95035</code>

          <country>USA</country>
        </postal>

        <email>mjbarnes@cisco.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date year="2017"/>

    <!-- 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>OSPF</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>OSPF IPv4 IPv6 TE MPLS</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->



    <abstract>
      <t>When using Traffic Engineering (TE) in a dual-stack IPv4/IPv6
      network the Multiprotocol Label Switching (MPLS) TE Label
      Switched Paths (LSP) infrastructure may be duplicated, even if
      the destination IPv4 and IPv6 addresses belong to the same
      remote router. In order to achieve an integrated MPLS TE LSP
      infrastructure, OSPF routes must be computed over MPLS TE
      tunnels created using information propagated in another OSPF
      instance. This is solved by advertising cross-address family
      (X-AF) OSPF TE information.</t>

      <t>This document describes an update to RFC5786 that allows for
      the easy identification of a router's local X-AF IP
      addresses.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction" toc="default">
      <t>TE Extensions to <xref target="RFC3630">OSPFv2</xref> and to
      <xref target="RFC5329">OSPFv3</xref> have been described to
      support intra-area TE in IPv4 and IPv6 networks,
      respectively. In both cases the TE database provides a tight
      coupling between the routed protocol and TE signaling
      information in it. In other words, any use of the TE link state
      database is limited to IPv4 for <xref target="RFC2328">
      OSPFv2</xref> and IPv6 for <xref target="RFC5340">OSPFv3
      </xref>.</t>

      <t>In a dual stack network it may be desirable to set up common
      MPLS TE LSPs to carry traffic destined to addresses from
      different address families on a router. The use of common LSPs
      eases potential scalability and management concerns by halving
      the number of LSPs in the network. Besides, it allows operators
      to group traffic based on business characteristics and/or
      applications or class of service, not constrained by the network
      protocol which carries it.</t>
      
      <t>For example, an LSP created based on MPLS TE information
      propagated by OSPFv2 instance can be defined to carry both IPv4
      and IPv6 traffic, instead of having both OSPFv2 and OSPFv3 to
      provision a separate LSP for each address family. Even if in
      some cases the address family-specific traffic is to be
      separated, the calculation from a common database may prove
      operationally beneficial.</t>
      
      <t>A requirement when creating a common MPLS TE infrastructure
      is the ability to reliably map the X-AF family addresses to the
      corresponding advertising tail-end router. This mapping is a
      challenge because the LSAs containing the routing information
      are carried in one OSPF instance while the TE calculation may be
      done using a TE database from a different instance.</t>
      
      <t>A simple solution to this problem is to rely on the Router ID
      to identify a node in the corresponding OSPFv2 and OSPFv3
      databases. This solution would mandate both instances on the
      same router to be configured with the same Router ID. However,
      relying on the correctness of the configuration puts additional
      burden on network management and adds cost to the operation of
      the network. The network becomes even more difficult to manage
      if OSPFv2 and OSPFv3 topologies do not match exactly, for
      example if area borders are drawn differently in the two
      protocols. Also, if the routing processes do fall out of sync
      (having different Router IDs, even if for local administrative
      reasons), there is no defined way for other routers to discover
      such misalignment and to take any corrective measures (such as
      to avoid routing through affected TE tunnels or issuing warning
      to network management). The use of misaligned router IDs may
      result in delivering the traffic to the wrong tail-end router,
      which could lead to suboptimal routing or even traffic
      loops.</t>
      
      <t>This document describes an update to <xref target="RFC5786"/>
      that allows for the easy identification of a router's local X-AF
      IP addresses. Routers using the <xref target="RFC5786">Node
      Attribute TLV</xref> can include non-TE enabled interface
      addresses in their OSPF TE advertisements, and also use the same
      sub-TLVs to carry X-AF information, facilitating the mapping
      mentioned above.</t>

      <t>The method described in this document can also be used to
      compute X-AF mapping of egress LSR for sub-LSPs of a
      Point-to-Multipoint LSP (see <xref target="RFC4461"/>).
      Considerations of using Point-to-Multipoint MPLS TE for X-AF
      traffic forwarding is outside the scope of this
      specification.</t>
    </section>

    <section title="Requirements Language" toc="default">
      <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 format="default" pageno="false" target="RFC2119"/>.</t>
    </section>

    <section title="Operation" toc="default">
      <t><xref target="RFC5786"/> defined the Node IPv4 Local Address
      and Node IPv6 Local Address sub-TLVs of the Node Attribute TLV
      for a router to advertise additional local IPv4 and IPv6
      addresses. To solve the problem outlined in <xref
      target="RFC5786"/> OSPFv2 would advertise and use only IPv4
      addresses and OSPFv3 would advertise and use only IPv6
      addresses.</t>
      
      <t>This document updates <xref target="RFC5786"/> so that a
      router can also announce one or more local X-AF addresses using
      the corresponding Local Address sub-TLV. In other words, to
      implement the X-AF routing technique proposed in this document,
      OSPFv2 will advertise the Node IPv6 Local Address sub-TLV and
      OSPFv3 will advertise the Node IPv4 Local Address sub-TLV,
      possibly in addition to advertising other IP addresses as
      documented by <xref target="RFC5786"/>.</t>

      <t>A node that implements X-AF routing SHOULD advertise in the
      corresponding Node Local Address sub-TLV all X-AF IP addresses
      local to the router that can be used by Constrained SPF (CSPF)
      to calculate MPLS TE LSPs. In general, OSPF SHOULD advertise the
      IP address listed in the Router Address TLV of the X-AF instance
      maintaining MPLS TE database plus any additional local addresses
      advertised by the X-AF OSPF instance in its Node Local Address
      sub-TLV. Implementation MAY advertise other local X-AF
      addresses.</t>
      
      <t>If the Node Attribute TLV carries both the Node IPv4 Local
      Address sub-TLV and the Node IPv6 Local Address sub-TLV, then
      the X-AF component must be considered for the consolidated
      calculation of MPLS TE LSPs. Both instances may carry the
      required information, it is left to local configuration to
      determine which database is used.</t>
      
      <t>On Area Border Routers (ABR), each advertised X-AF IP address
      MUST be advertised into at most one area. If OSPFv2 and OSPFv3
      area borders match (i.e. for each interface area number for
      OSPFv2 and OSPFv3 instances is numerically equal), then the X-AF
      addresses MUST be advertised into the same area in both
      instances. This allows other ABRs connected to the same set of
      areas to know with which area to associate MPLS TE tunnels.</t>

      <t>During the X-AF routing calculation, X-AF IP addresses are
      used to map locally created LSPs to tail-end routers in the
      LSDB. The mapping algorithm can be described as:
      
	<list hangIndent="10" style="empty">
	  <t>Walk the list of all MPLS TE tunnels for which the
	  computing router is a head-end. For each MPLS TE tunnel
	  T:</t>
	</list>
	<list style="numbers">

	<t>If T's destination IP address is from the same address
	family as the computing OSPF instance, then the tunnel must
	have been signaled based on MPLS TE information propagated in
	the same OSPF instance. Process the tunnel as per <xref
	target="RFC3630"/> or <xref target="RFC5329"/>.</t>
      
	<t>Otherwise it is a X-AF MPLS TE tunnel. Note tunnel's
	destination IP address.</t>
      
	<t>Walk the X-AF IP addresses in the LSDBs of all connected
	areas. If a matching IP address is found, advertised by router
	R in area A, then mark the tunnel T as belonging to area A and
	terminating on tail-end router R. Assign an intra-area SPF
	cost to reach router R within area A as the IGP cost of tunnel
	T.</t>

	</list>
      </t>

      <t>After completing this calculation, each TE tunnel is
      associated with an area and tail-end router in terms of the
      routing LSDB of the computing OSPF instance and has a
      metric.</t>

      <t>Note that for clarity of description the mapping algorithm is
      specified as a single calculation. Actual implementations for
      the efficiency may choose to support equivalent mapping
      functionality without implementing the algorithm exactly as it
      is described.</t>
      
      <t>As an example lets consider a router in dual-stack network
      running OSPFv2 and OSPFv3 for IPv4 and IPv6 routing
      correspondingly. Suppose OSPFv2 instance is used to propagate
      MPLS TE information and the router is configured to accept TE
      LSPs terminating at local addresses 198.51.100.1 and
      198.51.100.2. Then the router will advertise into OSPFv2
      instance IPv4 address 198.51.100.1 in the Router Address TLV,
      additional local IPv4 address 198.51.100.2 in the Node IPv4
      Local Address sub-TLV, plus other Traffic Engineering TLVs as
      required by <xref target="RFC3630"/>. If OSPFv3 instance in the
      network is enabled for X-AF TE routing (that is, to use for IPv6
      routing MPLS TE LSPs computed by OSPFv2), then the OSPFv3
      instance of the router will advertise the Node IPv4 Local
      Address sub-TLV listing local IPv4 addresses 198.51.100.1 and
      198.51.100.2. Other routers in the OSPFv3 network will use this
      information to reliably identify this router as egress LSR for
      MPLS TE LSPs terminating at either 198.51.100.1 or
      198.51.100.2.</t>
    </section>

    <section title="Backward Compatibility" toc="default">
      <t>Node Attribute TLV and Node Local Address sub-TLVs and their
      usage are defined in <xref target="RFC5786"/> and updated by
      <xref target="RFC6827"/>. Way of using these TLVs as specified
      in this document is fully backward compatible with previous
      standard documents.</t>

      <t>An implementation processing Node Attribute TLV MUST
      interpret its content as follows:

	<list style="symbols">
	<t>If the Node Attribute TLV contains Local TE Router ID
	sub-TLV then this Node Attribute TLV MUST be treated as
	carrying routing information for ASON (Automatically Switched
	Optical Network) and processed as specified in <xref
	target="RFC6827"/>.</t>

	<t>Otherwise Node Attribute TLV contains one or more
	instance(s) of Node IPv4 Local Address and/or Node IPv6 Local
	Address sub-TLVs. Meaning of each Local Address sub-TLV has to
	be identified separately.

	  <list>
	  <t>If Node Local Address sub-TLV belongs to the same address
	  family as instance of OSPF protocol advertising it then
	  address carried in the sub-TLV MUST be treated as described
	  in <xref target="RFC5786"/>.</t>

	  <t>Otherwise the address is used for X-AF tunnel tail-end
	  mapping as defined by this document.</t>

	  </list>
	</t>
	</list>
      </t>
    </section>

    <section title="Security Considerations" toc="default">
      <t>This document introduces no new security concerns. Security
      considerations of using Node Attribute TLV are discussed in 
      <xref target="RFC5786"/>.</t>
    </section>

    <section title="IANA Considerations" toc="default">
      <t>This document has no IANA actions.</t>
    </section>

    <section title="Acknowledgements" toc="default">
      <t>The authors would like to thank Peter Psenak and Eric Osborne
      for early discussions and Acee Lindem for discussing
      compatibility with ASON extensions.</t>

      <t>We would also like to thank the authors of RFC5786 for laying
      down the foundation for this work.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->

      <?rfc include="reference.RFC.2119.xml"?>

      <?rfc include="reference.RFC.5786.xml"?>
    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      <?rfc include="reference.RFC.2328.xml"?>

      <?rfc include="reference.RFC.4461.xml"?>

      <?rfc include="reference.RFC.5340.xml"?>

      <?rfc include="reference.RFC.5329.xml"?>

      <?rfc include="reference.RFC.3630.xml"?>

      <?rfc include="reference.RFC.6827.xml"?>

    </references>
  </back>
</rfc>
