<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?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' ipr='trust200902' docName='draft-ietf-mpls-rfc8287-len-clarification-03'
updates="8287">

<front>
<title abbrev="RFC8287 Sub-TLV Length Clarification">RFC8287 Sub-TLV Length Clarification</title>

<author initials="N." surname="Nainar" fullname="Nagendra Kumar Nainar">
	<organization>Cisco Systems, Inc.</organization>
	<address>
		<postal>
		<street>7200-12 Kit Creek Road</street>
		<city>Research Triangle Park</city> <region>NC</region> <code>27709</code>
		<country>US</country>
		</postal>
	<email>naikumar@cisco.com</email>
	</address>
</author>

<author initials="C." surname="Pignataro" fullname="Carlos Pignataro">
	<organization>Cisco Systems, Inc.</organization>
	<address>
		<postal>
		<street>7200-11 Kit Creek Road</street>
		<city>Research Triangle Park</city> <region>NC</region> <code>27709</code>
		<country>US</country>
		</postal>
	<email>cpignata@cisco.com</email>
	</address>
</author>

<author initials="F." surname="Iqbal" fullname="Faisal Iqbal">
	<organization>Individual</organization>
	<address>
		<postal>
		<street></street>
		<city></city> <region></region> <code></code>
		<country>Canada</country>
		</postal>
	<email>faisal.iqbal@msn.com</email>
	</address>
</author>
    
<author initials="A." surname="Vainshtein" fullname="Alexander Vainshtein">
	<organization>ECI Telecom</organization>
	<address>
	<postal>
		<street></street>
		<city></city> <region></region> <code></code>
		<country>Israel</country>
		</postal>
	<email>vainshtein.alex@gmail.com</email>
	</address>
</author>

<date />
<area>Internet</area>
<workgroup>Network Work group</workgroup>

<keyword>mpls</keyword>

<abstract><t>RFC8287 defines the extensions to MPLS LSP Ping and 
Traceroute for Segment Routing IGP-Prefix and IGP-Adjacency Segment Identifier (SIDs)
with an MPLS data plane. RFC8287 proposes 3 Target FEC Stack Sub-TLVs. While the standard
defines the format and procedure to handle those Sub-TLVs, it does not sufficiently 
clarify how the length of the Segment ID Sub-TLVs should be computed to 
include in the Length field of the Sub-TLVs which may result in interoperability 
issues.</t>

<t>This document updates RFC8287 by clarifying the length of each Segment ID Sub-TLVs 
defined in RFC8287.
</t>

</abstract>
</front>

<middle>
	
<section title="Introduction">
	<t><xref target="RFC8287" /> defines the extensions to MPLS LSP Ping and 
Traceroute for Segment Routing IGP-Prefix and IGP-Adjacency Segment Identifier (SIDs)
with an MPLS data plane. <xref target="RFC8287" /> proposes 3 Target FEC Stack Sub-TLVs. 
While the standard defines the format and procedure to handle those Sub-TLVs, it 
does not sufficiently clarify how the length of the Segment ID Sub-TLVs should be computed to 
include in the Length field of the Sub-TLVs which may result in interoperability issues.</t>

<t>This document updates <xref target="RFC8287" /> by clarifying the length of 
each Segment ID Sub-TLVs defined in <xref target="RFC8287" />.
</t>					
	</section>
		
	<section title="Terminology">
	
<t>This document uses the terminologies defined in 
<xref target="RFC8402" />,
    	<xref target="RFC8029" />, <xref target="RFC8287" />
    	and so the readers are expected to be familiar with the same.
    	</t>	
	</section>
	 
    <section title="Requirements notation">
	<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"/> <xref target="RFC8174"/> when, 
	and only when, they appear in all capitals, as shown here.
	</t>
    </section>
    
<section title="Length field clarification for Segment ID Sub-TLVs">
	
	<t>Section 5 of <xref target="RFC8287" /> defines 3 different Segment ID Sub-TLVs that
	will be included in Target FEC Stack TLV defined in <xref target="RFC8029" />. The 
	length of each Sub-TLVs MUST be calculated as defined in this section.
	</t>
	
	<t>The TLVs representation defined in section 5.1, 5.2 and 5.3 of <xref target="RFC8287" /> are updated 
	to clarify the length calculation as shown in section 4.1, 4.2 and 4.3 respectively. 
	The updated TLV representation contain explicitly defined length.
	</t>
	
	<section title="IPv4 IGP-Prefix Segment ID Sub-TLV">
		<t>The Sub-TLV length for IPv4 IGP-Prefix Segment ID MUST be set to 8 as shown 
		in the below TLV format:
		</t>
			<figure>
			<artwork><![CDATA[
                                
       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 = 34 (IPv4 IGP-Prefix SID)|          Length = 8           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          IPv4 prefix                          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Prefix Length  |    Protocol   |              Reserved         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

             ]]></artwork>
        	</figure>
    </section>
    
    <section title="IPv6 IGP-Prefix Segment ID Sub-TLV">
		<t>The Sub-TLV length for IPv6 IGP-Prefix Segment ID MUST be set to 20 as shown 
		in the below TLV format:
		</t>
			<figure>
			<artwork><![CDATA[
                                
       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 = 35 (IPv6 IGP-Prefix SID)|          Length = 20          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                                                               |
      |                       IPv6 Prefix                             |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Prefix Length  |    Protocol   |              Reserved         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

             ]]></artwork>
        	</figure>
    </section>
    
    <section title="IGP-Adjacency Segment ID Sub-TLV">
      <t>The Sub-TLV length for IGP-Adjacency Segment ID varies depending on the 
		Adjacency Type and Protocol. In any of the allowed combination of Adjacency Type
		and Protocol, the sub-TLV length MUST be calculated by including 2 octets of 
		Reserved field. Table 1 below list the length for different combinations 
		of Adj.Type and Protocol.
		</t>
			<figure>
			<artwork><![CDATA[                         
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Protocol   |            Length for Adj.Type                |
       +             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |             | Parallel  |    IPv4   |    IPv6   | Unnumbered|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    OSPF     |    20     |    20     |    44     |     20    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    ISIS     |    24     |    24     |    48     |     24    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    Any      |    20     |    20     |    44     |     20    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       			Table 1. IGP-Adjacency SID Length Comparison

             ]]></artwork>
        	</figure>
		<t>
		For example, when the Adj. Type is set to Parallel Adjacency 
		and the Protocol is set to 0, the Sub-TLV will be as below:
		</t>
			<figure>
			<artwork><![CDATA[
                                
       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 = 36 (IGP-Adjacency SID)  |          Length = 20          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | Adj. Type = 1 | Protocol = 0  |          Reserved             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |               Local Interface ID (4 octets)                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              Remote Interface ID (4 octets)                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |          Advertising Node Identifier (4 octets)               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           Receiving Node Identifier (4 octets)                |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             ]]></artwork>
        	</figure>
    </section>
    
    
</section>

		
  <section title="IANA Considerations">
    <t>This document does not introduce any IANA consideration.
    </t>
  </section>
		
    <section title="Security Considerations">
		<t>This document updates <xref target="RFC8287" /> and does not introduce
		any additional security considerations.
		</t>
	</section>
		
	<section title="Contributors">
	
	<t>The below individuals contributed to this document:
	<list>
		<t>Zafar Ali, Cisco Systems, Inc.</t>
	</list>
	</t>

    </section>
	<section title="Acknowledgement">
		<t>The authors would like to thank Michael Gorokhovsky and Manohar Doppalapudi 
		for investigating the interop issue during EANTC test.</t>
	</section>

    </middle>
	
<back>

    <references title="Normative References">

	<?rfc include="reference.RFC.2119"?>
	
	<?rfc include="reference.RFC.8174"?>
	
	<?rfc include="reference.RFC.8402"?>

	<?rfc include="reference.RFC.8029"?>
	
	<?rfc include="reference.RFC.8287"?>
	  
    </references>
    
		</back>

</rfc>
