<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc3978.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4561 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4561.xml">
<!ENTITY RFC3209 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3209.xml">
<!ENTITY RFC4090 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4090.xml">
]>
<?rfc toc="yes"?>
<rfc ipr="pre5378Trust200902"
    docName="draft-sitaraman-nodeid-subobject-clarification-00.txt">

<front>
    <title>Clarification of RRO Node-Id Sub-Object</title>

    <author initials="H." surname="Sitaraman" fullname="Harish Sitaraman">
	<organization>Juniper Networks</organization>
	<address>
	    <postal>
		<street>10 Technology Park Drive</street>
		<city>Westford</city>
		<region>MA</region>
		<code>01886</code>
		<country>US</country>
	    </postal>
	    <email>hsitaraman@juniper.net</email>
	</address>
    </author>

    <author initials="Y." surname="Kamite" fullname="Yuji Kamite">
	<organization>NTT Communications Corporation</organization>
	<address>
	    <postal>
		<street>Granpark Tower</street>
		<street>3-4-1 Shibaura, Minato-ku</street>
		<city>Tokyo</city>
		<code>108-8118</code>
		<country>Japan</country>
	    </postal>
	    <email>y.kamite@ntt.com</email>
	</address>
    </author>

    <date month="March" year="2009" />
    <area>Routing</area>
    <keyword>Internet-Draft</keyword>

    <abstract>
	<t> This document clarifies the RRO format and usage of the node-id
            sub-object as defined in <xref target="RFC4561"/>. The RRO 
            stacking order and allowed formats when including the node-id 
            sub-object is specified. 
	</t>
    </abstract>
</front>

<middle>
<section title="Introduction" anchor='intro'>
    <t> <xref target="RFC4561"/> describes the use of the RRO node-id
        sub-object to find the Merge Point (MP) address for MPLS Fast 
        Reroute <xref target="RFC4090"/> in multi-domain networks,
        where a domain is defined as an Interior Gateway Protocol (IGP) 
        area or an Autonomous System (AS). Finding the MP address using the 
        node-id sub-object for facility backup tunnels is useful to protect 
        inter-domain TE LSPs from a failure of an Area Border Router (ABR) 
        or Autonomous System Border Router (ASBR).
        <vspace blankLines="1" />
        However, <xref target="RFC4561"/> does not define an RRO stacking order 
        when including the node-id sub-object. Therefore different 
        interpretations of the RRO seem acceptable, some of which if allowed do not 
        permit an accurate parsing of the RRO to find the MP address in a 
        multi-domain environment. <xref target="RFC3209" /> provides clear 
        guidelines regarding the order in which sub-objects are pushed on the 
        RRO stack. Such stacking guidelines when pushing a node-id sub-object 
        are required. The lack of a such a guideline can also present 
        interoperability problems between different implementations. 

        <vspace blankLines="1" />
        This draft specifies a RRO stacking order when including the node-id
        sub-object in addition to explaining some of the issues in multi-domain
        environments.
    </t>

    <section title='Terminology'>
        <t>
        The Terminology used in this document is as defined in 
        <xref target="RFC4561"/>.

        <vspace blankLines="1" />
        Additionally the following notation is used describe the contents of
        the Record Route Object:
        
        <vspace blankLines="1" />
        N  = Node-id (node-id sub-object)
        <vspace />
        I  = Interface-address (IPv4 sub-object)
        <vspace />
        L  = Label
        <vspace />
        |  = Marker distinguishing information from neighboring nodes
        <vspace />
        &lt; &gt; = Order of RRO information from a single node
        
        </t>
    </section>

    <section title='Conventions'>
	<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"/>.
	</t>
    </section>
</section>

<section title='PLR Requirements for finding the Merge Point address'>
    <t>This section discusses the requirements at the PLR for finding the MP 
       address in an inter-domain network in order to create a facility backup 
       tunnel to provide link or node protection.  

       <vspace blankLines="1" />
       As described in <xref target="RFC4561" />, the bypass tunnel needs to
       intersect with the primary tunnel at the MP. The MP address can be found
       by examining the RRO of the primary tunnel to check if any of the
       addresses is the MP address. The node-id sub-object was introduced to
       allow the PLR to pick the MP address in inter-domain environments, where
       the interface addresses in the RRO of the facility backup and primary
       tunnel cannot be correlated by the PLR as belonging to the same node (MP). This is
       specifically true when the PLR and MP are not in the same domain.
       As <xref target="RFC4561" /> also describes, the problem of finding the MP
       address within a single IGP area be easily solved since the entire
       topology information is available. 

       <vspace blankLines="1" />
       For example, to provide node protection using facility backup tunnels in
       the inter-area or inter-AS case to protect from the failure of an
       ABR or ASBR, the PLR, which is upstream of the failure node must be able
       to accurately decipher the MP address from the RRO.

       <vspace blankLines="1" />
       Hence, the PLR MUST be able to find the MP address by just parsing the 
       received RRO and not requiring the existence of a Traffic Engineering 
       database in order to provide link or node protection. 
       <xref target="RFC4561" /> was also written with this goal as is implied 
       in its Introduction section though this requirement is not explicitly
       stated.
    </t>
</section>

<section title='RRO Node-id Sub-object formats'>
    <t> When adding the node-id sub-object in the RRO, section 3 of 
        <xref target="RFC4561" /> seems to allow different RRO formats when 
        interpreted along with the RRO definition and usage from 
        <xref target="RFC3209" />.

        <vspace blankLines="1" />
        From section 3 of <xref target="RFC4561" />: 

        <list style="numbers">

        <t>Add the node-id sub-object in the RRO carried in an RSVP Resv
           message and, when required, also add another IPv4/IPv6 sub-object
           to record interface address.

            <vspace blankLines="1" />
            It seems like the following RRO formats are acceptable:
            <vspace blankLines="1" />

            &lt;N, L&gt;, &lt;N, I, L&gt;, &lt;I, N, L&gt;, 
            &lt;N, L, I&gt;, &lt;I, L, N&gt;
        </t>

        <t>Add an IPv4/IPv6 sub-object recording the interface address and,
           when required, add a node-id sub-object in the RRO.

            <vspace blankLines="1" />
            It seems like the following RRO formats are acceptable:
            <vspace blankLines="1" />

            &lt;I, L, N&gt; though the order of the sub-objects is not specified. 
         </t>

        </list>

        The RRO does not have a defined delimiter using which a node can parse
        the RRO in the Resv message to find the set of information that has 
        been added by a specific downstream node.

        <vspace blankLines="1" />
        As a result, the PLR might not be able to deterministically find the MP
        address from the received RRO in the Resv message. The following
        examples illustrate how the PLR might find it difficult to differentiate 
        between two RRO formats just by parsing the received RRO: 

        <vspace blankLines="1" />
        &lt;N, L&gt; | &lt;I, L&gt; | &lt;I, L&gt;
        <vspace blankLines="0" />
        and
        <vspace blankLines="0" />
        &lt;N, L, I, L&gt; | &lt;I, L&gt;

        <vspace blankLines="1" />
        &lt;I, L, N&gt; | &lt;I, L&gt;
        <vspace blankLines="0" />
        and
        <vspace blankLines="0" />
        &lt;I, L&gt; | &lt;N, I, L&gt;

        <vspace blankLines="1" />
        &lt;N, L, I&gt; | &lt;N, L&gt;
        <vspace blankLines="0" />
        and
        <vspace blankLines="0" />
        &lt;N, L&gt; | &lt;I, N, L&gt;

        <vspace blankLines="1" />
        &lt;N, I, L&gt; | &lt;N, L, I, L&gt;
        <vspace blankLines="0" />
        and
        <vspace blankLines="0" />
        &lt;N, I, L&gt; | &lt;N, L&gt; | &lt;I, L&gt;

        <vspace blankLines="1" />
        Using the traffic engineering database to correlate whether an interface 
        and node address received in the RRO belong to the same node is not 
        possible in inter-area or inter-AS environments.

    </t>

    <section title='RRO stacking order for Node-id Sub-object'>
        <t> The following rules need to be followed by an implementation
            of <xref target="RFC4561" />:
            
            <vspace blankLines="1" />
            If the node-id sub-object is included in the RRO, then the IPv4 or 
            IPv6 sub-object MUST also be included. The IPv4 or IPv6 sub-object 
            MUST be pushed onto the RRO prior to pushing on the node-id sub-object. 
            As specified in <xref target="RFC3209" />, if Label_Recording is 
            requested, then the Label Record sub-object is pushed onto the RRO 
            prior to pushing the IP address.

            <vspace blankLines="1" />
            All implementations MUST generate either &lt;N, I, L&gt; or 
            &lt;N, L, I, L&gt; and MUST be able to receive and parse
            both formats in order to find the MP address. No other formats can 
            be generated by a node when the node-id sub-object needs to be 
            added to the RRO. 

            <vspace blankLines="1" />
            In the &lt;N, L, I, L&gt; format, both values of L MUST be
            identical. The above rules are based on already deployed 
            implementations of <xref target="RFC4561" />.
        </t>
    </section>
</section>

<section title='Security Considerations' anchor='sec-con'>

    <t>
     No new security issues are introduced beyond those that are
     described in <xref target="RFC4561" />.
    </t>

</section>

<section anchor="IANA" title="IANA Considerations">

    <t>
    This draft does not have any request for IANA.
    </t>

</section>

<section title='Acknowledgments'>
    <t> The authors would like to thank Miya Kohno, Yakov Rekhter, Avneesh
        Sachdev and Yasuyuki Matsuoka for their valuable and detailed 
        discussions, reviews and feedback.
    </t>
</section>

</middle>

<back>
<references title='Normative References'>
    &RFC2119;
    &RFC3209;
    &RFC4090;
    &RFC4561;
</references>

</back>

</rfc>
