<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5905 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5905.xml">
<!ENTITY RFC6374 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6374.xml">
<!ENTITY RFC5586 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5586.xml">
<!ENTITY RFC6423 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6423.xml">
<!ENTITY RFC5085 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5085.xml">
<!ENTITY RFC3209 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3209.xml">
<!ENTITY RFC4385 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4385.xml">
<!ENTITY RFC5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC6823 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6823.xml">
<!ENTITY RFC3477 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3477.xml">
<!ENTITY RFC4202 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4202.xml">
<!ENTITY RFC7384 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7384.xml">
<!ENTITY RFC7684 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7684.xml">

<!ENTITY RFC5420 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5420.xml">

<!ENTITY I-D.ietf-ospf-ospfv3-lsa-extend SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-ospf-ospfv3-lsa-extend-10.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" ipr="trust200902" docName="draft-ietf-mpls-residence-time-11">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<front>
	<title abbrev='Residence Time Measurement'>Residence Time Measurement in MPLS network</title>
	<author initials='G.' surname="Mirsky" fullname='Greg Mirsky'>
		<organization>Ericsson</organization>
		<address>
			<email>gregory.mirsky@ericsson.com</email>
		</address> 
	</author>
	
 	<author initials='S.' surname="Ruffini" fullname='Stefano Ruffini'>
		<organization>Ericsson</organization>
		<address>
			<email>stefano.ruffini@ericsson.com</email>
		</address> 
	</author>

 	<author initials='E.' surname="Gray" fullname='Eric Gray'>
		<organization>Ericsson</organization>
		<address>
			<email>eric.gray@ericsson.com</email>
		</address> 
	</author>

	<author initials='J.' surname="Drake" fullname='John Drake'>
		<organization>Juniper Networks</organization>
		<address>
			<email>jdrake@juniper.net</email>
		</address> 
	</author>
	
 	<author initials='S.' surname="Bryant" fullname='Stewart Bryant'>
		<organization>Independent</organization>
		<address>
			<email>stewart.bryant@gmail.com</email>
		</address> 
	</author>

 	<author initials='A.' surname="Vainshtein" fullname='Alexander Vainshtein'>
		<organization>ECI Telecom</organization>
		<address>
			<email>Alexander.Vainshtein@ecitele.com</email>
		</address> 
	</author>

    <date day="21" month="July" year="2016" />

    <area>Routing</area>

    <workgroup>MPLS Working Group</workgroup>

    <keyword>Internet-Draft</keyword>

   <keyword>G-ACh</keyword>
   
   <keyword>Resident Time</keyword>
   
   <keyword>MPLS</keyword>
	
	<abstract>
	<t>
	This document specifies G-ACh based Residence Time Measurement and how it can be used
	by time synchronization protocols being transported over MPLS domain.
	 </t>
	 <t>
	 Residence time is the variable part of propagation delay of timing and synchronization messages
	 and knowing what this delay is for each message allows for a more accurate determination of the
	 delay to be taken into account in applying the value included in a PTP event message.
	 </t>
	</abstract>
</front>

<middle>
  <section anchor="intro" title="Introduction">
        <t>
        Time synchronization protocols, e.g., Network Time Protocol version 4 (NTPv4) <xref target="RFC5905"/> and 
        Precision Time Protocol (PTP) Version 2 <xref target="IEEE.1588.2008"/> define timing messages that 
        can be used to synchronize
 clocks across a network domain.
 Measurement of the cumulative
        time one of these timing messages spends transiting the nodes
        on the path from ingress node to egress node is termed 
        Residence Time and it is used to improve the accuracy of clock  synchronization. 
        (I.e., it is the sum of the difference between the time of receipt at an ingress interface 
        and the time of transmission from an egress interface for each node along the path 
        from ingress node to egress node.)
 This document defines a new Generalized Associated Channel (G-ACh) 
        value and an associated residence time measurement (RTM) packet that can be
        used in a Multi-Protocol Label Switching (MPLS) network to measure residence time over a Label Switched Path (LSP).
       <!-- Mechanisms for transport  of time synchronization protocol packets over MPLS are out of scope in this document.
 -->
         </t>
          <t>
  Although it is possible to use RTM over an LSP instantiated using LDP, that is outside the scope of this document.
  Rather, this document describes RTM over an LSP signaled using RSVP-TE <xref target="RFC3209"/>
  because the LSP's path
 can be either explicitly specified or determined during signaling. 
  </t>
 <t>
<!--  <xref target="I-D.ietf-tictoc-1588overmpls"/> describes alternative method of on-path support for timing distribution protocols.
 -->
 Comparison with alternative proposed solutions such as <xref target="I-D.ietf-tictoc-1588overmpls"/>
  is outside the scope of this document.
 </t>

         
     <section title="Conventions used in this document">
         <section title="Terminology">

          <t>MPLS:     Multi-Protocol Label Switching</t>
          <t>ACH:       Associated Channel</t>
          <t>TTL:        Time-to-Live</t>
          <t>G-ACh:   Generic Associated Channel</t>
          <t>GAL:       Generic Associated Channel Label</t>
          <t>NTP:       Network Time Protocol</t>
          <t>ppm:       parts per million
</t>
          <t>PTP:       Precision Time Protocol</t>
          <t>LSP:        Label Switched Path</t> 
<!--           <t>node:        Label Switching Router</t> 
 -->
          <t>OAM:       Operations, Administration, and Maintenance</t>
          <t>RRO:       Record Route Object          </t>
          <t>RTM:       Residence Time Measurement</t>
          <t>IGP:          Internal Gateway Protocol</t>
         </section>    
         
        <section title="Requirements Language">
             <t>
	  The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
                "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 
	  "OPTIONAL" in this document are to be interpreted as described in 
	  <xref target="RFC2119"></xref>.
             </t>
          </section>
      </section>
     </section>
      
     <section anchor="residence-time" title="Residence Time Measurement">
          <t>
           Packet Loss and Delay Measurement for MPLS Networks <xref target="RFC6374"/> can be used to
           measure one-way or two-way end-to-end propagation delay over LSP or PW. But these measurements
           are insufficient for use in some applications, for example, time synchronization across a network
           as defined in the Precision Time Protocol (PTP). In PTPv2 <xref target="IEEE.1588.2008"/> residence times
           is accumulated in the correctionField of the PTP event message, as defined in <xref target="IEEE.1588.2008"/>, 
           or in the associated follow-up message (or Delay_Resp message associated with
           the Delay_Req message) in case of two-step clocks (see the detailed discussion in <xref target="one-two-step-modes"/>).
<!--            The residence time values are specific to each output PTP
 port and message. 
-->
           </t>
           <!--
           <t>
          Note the delay of propagation over a link connected to a port receiving the PTP event message is handled by
          IEEE 1588 <xref target="IEEE.1588.2008"/> by means of specific messages, Pdelay_Req and Pdelay_Resp,or
          Delay_Req and Delay_Resp depending on the applicable delay mechanism, peer-to-peer or delay request-response
          mechanism respectively.  
           </t>
           -->
           <t>
           IEEE 1588 uses this residence time to correct the transit time from ingress node to egress node,
           effectively making the transit nodes transparent.
           </t>
           <t>
           This document proposes a mechanism that can be used as one of types of on-path support 
           for a clock synchronization protocol or to perform one-way measurement of residence time.
           The proposed mechanism accumulates residence time from all nodes that support 
           this extension along the path of a particular LSP in Scratch Pad 
           field of an RTM packet
 <xref target="residence-time-format"/>.
           This value can then be used by the egress node to update, for example, the correctionField of the PTP 
           event packet carried within the RTM packet prior to performing its PTP processing.
 
           </t>
          </section>
          
          <section anchor="associated-channel" title="G-ACh for Residence Time Measurement">
          <t>
          RFC 5586 <xref target="RFC5586"/> and RFC 6423 <xref target="RFC6423"/> 
          define the G-ACh to extend the applicability of the PW Associated
          Channel (ACH) <xref target="RFC5085"/> to LSPs. G-ACh provides a mechanism to transport OAM 
          and other control messages over an LSP. Processing of these messages by select transit nodes
          is controlled by the use of 
 the Time-to-Live (TTL) value in the MPLS header of these messages.
          <!--
          In a way that is analogous to PTP operations, the packet residence time can be 
          handled by the RTM capable node either as &quot;one-step clock&quot; or as a  &quot;two-step clock&quot;.
          -->
          </t>
          <t>
          The packet format for Residence Time Measurement (RTM) is presented in <xref target="residence-time-format"/>
         <figure align="left" anchor="residence-time-format"
                title="RTM G-ACh packet format for Residence Time Measurement">
          <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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |0 0 0 1|Version|   Reserved    |           RTM G-ACh           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                        Scratch Pad                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |            Type               |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                             Value                             |
 ~                                                               ~
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>

</t>

<t>
<list style="symbols">
<t>First four octets are defined as G-ACh Header in <xref target="RFC5586"/></t>
<t>The Version field is set to 0, as defined in RFC 4385 <xref target="RFC4385"/>.  </t>
<t>The Reserved field MUST be 
set to 0 on transmit and ignored on receipt. </t>
<t>The RTM G-ACh field, value (TBA1) to be allocated by IANA, identifies the packet
 as such.  </t>
<t>The Scratch Pad field is 8 octets in length. It is used to accumulate the residence 
time spent in each RTM capable node transited by the packet on its path from ingress node to egress node.
The first RTM-capable node MUST initialize the Scratch
Pad field with its residence time measurement. 
<!--The Scratch Pad is used to accumulate the residence
time spent in each RTM capable node
transited by the packet on its path from ingress node to egress node.  -->
Its format is IEEE double precision and its
units are nanoseconds. Note that depending on whether the timing procedure is 
one-step or two-step operation (<xref target="one-two-step-modes"/>),
the residence time is either for the timing packet carried in the Value field of this RTM 
packet or for an associated timing packet carried in the Value field of another RTM packet.
</t>
<t>
The Type field identifies the type and encapsulation of a timing packet carried in the Value field,
e.g., NTP <xref target="RFC5905"/> or PTP <xref target="IEEE.1588.2008"/>.
IANA will be asked to create a
 sub-registry in Generic
 Associated Channel (G-ACh) Parameters Registry called "MPLS RTM TLV Registry".</t>
<t>The Length field contains the length, in octets
, of the 
of the timing packet carried in the Value field.</t>
<t>The optional Value field MAY carry a packet of the time
synchronization protocol identified by Type field.
 It is important to note that the
packet may be authenticated or encrypted
 and carried over LSP edge to edge unchanged while
the residence time is accumulated in the Scratch Pad field.
</t>
<t>The TLV MUST be included in the RTM message, even if the length of the Value field is zero.
</t>
</list>
</t>

<section anchor="ptp-sub-tlv" title="PTP Packet Sub-TLV">
<t>
<xref target="ptp-sub-tlv-fig"/> presents format of a PTP sub-TLV that MUST be
included in the Value field of an RTM packet preceding the carried timing 
packet when the timing packet is PTP.
         <figure align="left" anchor="ptp-sub-tlv-fig" title="PTP Sub-TLV format">
          <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              |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                         Flags                         |PTPType|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                            Port ID                            |
 |                                                               |
 |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                               |           Sequence ID         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        
</t>
          <t>
          where Flags field has format
         <figure align="left" anchor="flags-filed-format"
                title="Flags field format of PTP Packet Sub-TLV">
          <artwork><![CDATA[    
  0                   1                   2
  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |S|                      Reserved                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
</t>

<t>
<list style="symbols">
<t>The Type field identifies PTP sub-TLV defined in the Table 19 Values of messageType field
in <xref target="IEEE.1588.2008"/>.</t>
<t>The Length field of the PTP sub-TLV contains the number of octets of the Value field and MUST be 20.</t>
<!--
<t>The Flags field  has one bit, S, which acts as a step flag, set to 0 if the boundary clocks are operating in
one-step mode, and set to 1 if they are operating in two-step mode.</t>
-->
<t>
The Flags field currently defines one bit, the S-bit, that defines whether the current message
has been processed by a 2-step node, where the flag is cleared if the message has been handled
exclusively by 1-step nodes and there is no follow-up message, and set if there has been at least
one 2-step node and a follow-up message is forthcoming.
</t>
<t>
The PTPType indicates the type of PTP packet carried in the TLV. PTPType is the messageType
field of the PTPv2 packet whose values are defined in the Table 19 <xref target="IEEE.1588.2008"/>. 
</t>
<t>The 10 octets long Port ID field contains the identity of the source port. </t>
<t>The Sequence ID is the sequence
 ID of the PTP message carried in the Value field of the message. </t>
</list>
</t>

</section>

</section>
 
<section anchor="cp-operation-theory" title="Control Plane Theory of Operation">
 <t>
The operation of RTM depends upon TTL expiry to deliver an RTM packet from one RTM capable interface to the next
along the path from ingress node to egress node. This means that a node with RTM capable interfaces MUST be able to
compute a TTL which will cause the expiry of an RTM packet at the next node with RTM capable interfaces. 
 </t>
 <!--
 <t>
 However, because of Equal Cost Multipath, labels distributed by LDP do not necessarily
 instantiate a single path between a given ingress/egress
 node pair but rather MAY create a graph in which different flows will take different
 paths through this network.  This means one doesn't necessarily know
 the path that RTM packets will take or even if they all take the same path. 
 In an environment in which not all interfaces in
 an IGP domain support RTM, it is effectively impossible to use TTL
 expiry to deliver RTM packets. Hence RTM cannot be
 used for LSPs instantiated using LDP, if multi-pathing is in use and not all nodes are RTM-capable.
 In the special but important case of environment in which all interfaces in an IGP
 domain support RTM, setting the TTL to
 1 will always cause the expiry of an RTM packet on the next RTM capable
 downstream node and hence in such an environment,
 RTM can be used for LSPs instantiated using LDP. 
 </t>
 <t>Also, if it is possible and desirable, multi-path forwarding may be
   disabled,at least for LSPs used for RTM.
 </t>
 -->

<section anchor="rtm-capability" title="RTM Capability">
<t>
Note that the RTM capability of a node is with respect to the pair of interfaces that will be used to
forward an RTM packet.  In general, the ingress interface of this pair must be able to capture
the arrival time of the packet and encode it in some way such that this information will be
available to the egress interface.
</t>
<t>
The supported modes (1-step verses 2-step) of any pair of interfaces is then determined
by the capability of the egress interface. For both modes, the egress interface implementation
MUST be able to determine the precise departure time of the same packet and determine from
this, and the arrival time information from the corresponding ingress interface, the difference
representing the residence time for the packet.
</t>
<t>
An interface with the ability to do this and update the associated Scratch Pad in real-time
(i.e. while the packet is being forwarded) is said to be 1-step capable.
</t>
<t>
Hence while both ingress and egress interfaces are required to support RTM for the pair to
be RTM-capable, it is the egress interface that determines whether or not the node is 1-step
or 2-step capable with respect to the interface-pair.
</t>
<t>
The RTM capability used in the sub-TLV shown in <xref target="rtm-capab-sub-tlv"/> is thus associated with the egress
port of the node making the advertisement, while the ability of any pair of interfaces that includes
this egress interface to support any mode of RTM depends on the ability of that interface to record
packet arrival time in some way that can be conveyed to and used by that egress interface.
</t>
<t>
<!--
When an IGP is used to carry the above defined RTM capability sub-TLV, the implementation
MUST associate the advertisement with the interface that has the ability used to determine its
supported RTM capabilities, and MUST NOT propagate this sub-TLV via any interface that does
not have the associated ingress ability described in this section.
-->
When a node uses an IGP to carry the RTM capability sub-TLV, the sub-TLV MUST reflect the
RTM capability (1-step or 2-step) associated with egress interfaces.    
</t>
</section>

<section anchor="rtm-capability-sub-tlv" title="RTM Capability Sub-TLV">
<t>
The format for the RTM Capabilities sub-TLV is presented in <xref target="rtm-capab-sub-tlv"/>

         <figure align="left" anchor="rtm-capab-sub-tlv"
                title="RTM Capability sub-TLV">
          <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             |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | RTM |                       Reserved                          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
</t>
<t>
<list  style="symbols">
<t>Type value (TBA2) will be assigned by IANA from appropriate 
registry for OSPFv2.</t>
<t>Length MUST be set to 4.</t>
<t>RTM (capability) - is a three-bit long bit-map field with values defined as follows:
<list style="symbols">
<t>0b001 - one-step RTM supported;</t>
<t>0b010 - two-step RTM supported;</t>
<t>0b100 - reserved.</t>
</list>
</t>
<t>Reserved field must be set to all zeroes on transmit and ignored on receipt.</t>
</list>
</t>

<t>
<xref target="RFC4202"/> explains that the Interface Switching Capability Descriptor

describes switching capability of an interface.  For bi-directional links, the switching

capabilities of an interface are defined to be the same in either direction.  I.e., for data

entering the node through that interface and for data leaving the node through that interface.

That principle SHOULD be applied when a node advertises RTM Capability.

</t>
<t>
A node that supports RTM MUST be able to act in two-step mode 
and MAY also support one-step RTM mode.
Detailed discussion of one-step and two-step RTM modes in <xref target="one-two-step-modes"/>.
</t>
</section>

<section anchor="rtm-capability-ospfv2" title="RTM Capability Advertisement in OSPFv2">
<t>
The capability to support RTM on a particular link (interface) is 
advertised in the OSPFv2 Extended Link Opaque LSA 
described in Section 3 <xref target="RFC7684"/> via the
RTM Capability sub-TLV.
</t>
<t>
Its Type value will be assigned by IANA from the OSPF Extended 
Link TLV Sub-TLVs registry that will be created per
<xref target="RFC7684"/> request.
</t>
</section> 

<section anchor="rtm-capability-ospfv3" title="RTM Capability Advertisement in OSPFv3">
<t>
  The capability to support RTM on a particular link (interface) can be advertised in OSPFv3 using 
  LSA extensions as described in <xref target="I-D.ietf-ospf-ospfv3-lsa-extend"/>. Exact use of OSPFv3 LSA extensions
  is for further study.
<!--
The capability to support RTM on a particular link (interface) is advertised
in the OSPFv3 be Intra-Area-Prefix TLV, IPv6 Link-Local Address TLV, or the 
IPv4 Link-Local Address TLV described in <xref target="I-D.ietf-ospf-ospfv3-lsa-extend"/> 
via the  RTM Capability sub-TLV.
-->
</t>
</section> 

<section anchor="isis-rtm-ext" title="RTM Capability Advertisement in IS-IS">

<t>
The capability to support RTM on a particular link (interface) is advertised 
in the GENINFO TLV described in <xref target="RFC6823"/> via the RTM Capability sub-TLV.
</t>
<t>
With respect to the Flags field of the GENINFO TLV:
<list style="symbols">
<t>The S bit MUST be cleared to prevent the RTM Capability sub-TLV from leaking between levels.</t>
<t>The D bit of the Flags field MUST be cleared as required by <xref target="RFC6823"/>.</t>
<t> The I bit and the V bit MUST be set accordingly depending on whether RTM capability being
advertised is for an IPv4 or an IPv6 interface.</t>
</list>
</t>
 
<t>
Application 
ID (TBA3) will be assigned from the Application Identifiers for TLV 251
IANA registry. The RTM Capability
 sub-TLV MUST be included in GENINFO TLV in Application
 Specific Information.
</t>
</section> 

 <section anchor="rsvp-operation-RTM" title="RSVP-TE Control Plane Operation to Support RTM">
 <t>
 Throughout this document we refer to a node as RTM
 capable node when at least one of its interfaces is RTM capable. <xref target="rtm-capability-figure"/> 
 provides an example of roles a node may have with respect to RTM capability:
 </t>

         <figure align="left" anchor="rtm-capability-figure"
                title="RTM capable roles">
          <artwork><![CDATA[    
 -----     -----     -----     -----     -----     -----     -----
 | A |-----| B |-----| C |-----| D |-----| E |-----| F |-----| G |
 -----     -----     -----     -----     -----     -----     -----                       
]]></artwork>
        </figure>
<t>
<list style="symbols">
<t>A is a Boundary Clock with its egress port in Master state. Node A transmits
IP encapsulated timing packets whose destination IP address is G.</t>
<t>B is the ingress LER for the MPLS LSP and is the first RTM capable node. 
It creates RTM packets and in each it places 
a timing packet, possibly encrypted, in the Value field and initializes the 
Scratch Pad field with its residence time measurement</t>
<t>C is a transit node that is not RTM capable. It forwards RTM packets without modification.</t>
<t>D is RTM capable transit node. It updates the Scratch Pad filed of the RTM packet without updating
of the timing packet.</t>
<t>E is a transit node that is not RTM capable. It forwards RTM packets without modification.</t>
<t>F is the egress LER and the last RTM capable node. It processes the timing packet carried in the Value field 
using the value in the Scratch Pad field. It updates the Correction field of the PTP
message with the value in the Scratch Pad field of the RTM ACH, and 
removes the RTM ACH encapsulation.</t>
<t>G is a Boundary Clock with its ingress port in Slave state. Node G receives PTP messages.
</t>
</list>
</t>
 <t>
 An ingress node that is configured to perform RTM along a path through an MPLS network 
 to an egress node verifies that
 the selected egress node has an interface that supports RTM via the egress node&apos;s 
 advertisement of the RTM
 Capability sub-TLV.  In the Path
message that the ingress node uses to instantiate the LSP to that egress node
it places LSP_ATTRIBUTES Object <xref target="RFC5420"/> with RTM_SET 
Attribute Flag set <xref target="iana-rtm-set-flag"/>
which indicates to the egress node that RTM is
 requested for this LSP.
RTM_SET Attribute Flag SHOULD NOT be set in
the LSP_REQUIRED_ATTRIBUTES object <xref target="RFC5420"/>
, 
unless it is known that all nodes support RTM,
because a node that does not recognize RTM_SET Attribute Flag would reject the Path message.
</t>
<t>
If egress node receives Path message with RTM_SET Attribute Flag in LSP_ATTRIBUTES object,
it MUST include initialized
RRO <xref target="RFC3209"/> and LSP_ATTRIBUTES object where RTM_SET Attribute Flag is set and 
RTM_SET TLV <xref target="rtm-set-tlv"/> is initialized.  When Resv message received by ingress node the RTM_SET TLV
will contain an ordered list, from egress
 node to ingress node, of the RTM capable node along the LSP&apos;s path. 

<!--It will also insert its ID at the beginning of the RTM_SET TLV before forwarding the Resv message upstream.  
-->
 </t>
 <t>
After the ingress node receives the Resv, it MAY begin sending RTM packets on the
LSP&apos;s path.  Each RTM packet has its Scratch Pad field initialized and its TTL set to expire on the
closest downstream RTM capable node.    
</t>
<t> 
It should be noted that RTM can also be used for LSPs instantiated using <xref target="RFC3209"/>
in an environment in which all interfaces in an IGP support RTM.  In this case the RTM_SET TLV 
and LSP_ATTRIBUTES Object
 MAY be omitted.
</t>
  </section>
  
  <section anchor="rtm-set-tlv" title="RTM_SET TLV">
  <t>
  RTM capable interfaces can be recorded via RTM_SET TLV.
 The RTM_SET sub-object format is of generic Type, Length, Value (TLV),
  presented in <xref target="RTM_SET-figure"/>
.
  
         <figure align="left" anchor="RTM_SET-figure"
                title="RTM_SET TLV format">
          <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    |     Length    |I|         Reserved            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 ~                             Value                           ~
 |                                                             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
]]></artwork>
        </figure>
</t>

<t>
Type value (TBA4) will be assigned by IANA from its Attributes TLV Space sub-registry.
</t>

<t>
The Length contains the total length of the sub-object in bytes, including the Type and Length fields.  
</t>
<t>
The I bit flag indicates whether the downstream RTM capable node along the LSP  is present in the RRO.
</t>
<t>
Reserved field must be zeroed on initiation and ignored on receipt.
</t>
<t>
         The content of an RTM_SET TLV is a series of
 variable-length sub-TLVs.  
         Only a single RTM_SET can be present in the LSP_ATTRIBUTES object.
         The sub-TLVs
 are defined in <xref target="RTM_SET-sub-TLVs"/> below.
  </t>
<t>
The following processing procedures apply to every RTM capable node along the LSP that in this paragraph 
is referred as node for sake of brevity.  Each
node MUST examine Resv message whether RTM_SET Attribute Flag in the LSP_ATTRIBUTES object is set.
If the RTM_SET flag set, the node MUST inspect the LSP_ATTRIBUTES object for presence of RTM_SET TLV.
If more than one found, then the LSP setup MUST fail with generation
of the ResvErr message with Error Code Duplicate TLV <xref target="iana-error-code"/> and Error Value
that contains Type value in its 8 least significant bits.
 If no RTM_SET TLV has been found, 
then the LSP setup MUST fail with generation
of the ResvErr message with Error Code RTM_SET TLV Absent <xref target="iana-error-code"/>.
If one RTM_SET TLV has been found the node will use the ID of the 
first node in the RTM_SET in conjunction with the RRO
to compute the hop count to its downstream node with reachable RTM capable interface. 
If the node cannot find matching ID in RRO, then it MUST try to use ID of the next node in the RTM_SET until it
finds the match or reaches the end of RTM_SET TLV.  If match have been found, then the calculated value is used by the node as TTL
value in outgoing label to reach the next RTM capable node on the LSP.  Otherwise, the TTL value MUST be set to 255.   
The node MUST add RTM_SET sub-TLV with the same address it used in RRO sub-object
at the beginning of the RTM_SET TLV in associated outgoing Resv message before forwarding it upstream.

If the calculated TTL value been set to 255, as described above, then the I flag in node RTM_SET TLV MUST be set to 1

before Resv message forwarded upstream. Otherwise, 
the I flag MUST be cleared (0).
</t>
<t>
   The ingress node MAY inspect the I bit flag received in each RTM_SET TLV
   contained in the LSP_ATTRIBUTES object of a received Resv
   message.  Presence of the RTM_SET TLV with I bit field set to 1 indicates
   that some RTM nodes along the LSP could be included in the
   calculation of the residence time.  An ingress node MAY choose to resignal
   the LSP to include all RTM nodes or simply notify the user via a management
   interface.
</t>
   <!-- If an LSP_ATTRIBUTES 
   contains multiple RTM_SET TLVs, only the first RTM_SET is
   meaningful.  Subsequent RTM_SET TLVs SHOULD be ignored and SHOULD NOT be
   propagated. Similarly, if in a Resv message multiple RTM_SET TLVs are
   encountered following a FILTER_SPEC before another FILTER_SPEC is
   encountered, only the first RTM_SET TLV is meaningful.  Subsequent RTM_SET TLVs
   SHOULD be ignored and SHOULD NOT be propagated.
   -->
   <t>
There are scenarios when some information is removed from an RRO due to policy processing (e.g., as may happen between providers)
or RRO is limited due to size constraints .
 Such changes affect the core assumption of the method to control processing of RTM packets.
RTM SHOULD NOT be used if it is not guaranteed that RRO contains complete information.
</t>
    <section anchor="RTM_SET-sub-TLVs" title="RTM_SET Sub-TLVs">
    <t>
    The RTM Set sub-object contains an ordered list, from egress node to
     ingress node, of the RTM capable nodes along the LSP's path.
    </t>
    <t>
   The contents of a RTM_SET sub-object are a series of variable-length
   sub-TLVs.  Each sub-TLV has its own Length
   field.  The Length contains the total length of the sub-TLV in
   bytes, including the Type and Length fields.  The Length MUST always
   be a multiple of 4, and at least 8 (smallest IPv4 sub-object).
    </t>
    <t>
   Sub-TLVs are organized as a last-in-first-out stack.  The first
-out
   sub-TLV relative to the beginning of RTM_SET TLV is considered the top.
   The last-out sub-TLV is considered the bottom.  When a new sub-TLV is
   added, it is always added to the top.
 Only a single RTM_SET sub-TLV with the given
   Value field MUST be present in the RTM_SET TLV. If more than one sub-TLV is found 
   the LSP setup MUST fail with the generation of a ResvErr message with the Error Code
   "Duplicate sub-TLV" <xref target="iana-error-code"/> and Error Value contains
   16-bit value composed of (Type of TLV, Type of sub-TLV).
    </t>
    <t>
    Three kinds of sub-TLVs for RTM_SET are currently defined.
    </t>
    
    <section anchor="ipv4-sub-object" title="IPv4 Sub-TLV">
    <t>
         <figure align="left" anchor="ipv4-sub-figure"
                title="IPv4 sub-TLV format">
          <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     |     Length    |           Reserved            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                       IPv4 address                          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
]]></artwork>
        </figure>
</t>
<t>
      Type
</t>
<t><list><t>  
         0x01  IPv4 address
</t></list></t>
<t>
      Length
</t>
<t><list><t>
         The Length contains the total length of the sub-TLV in bytes,
         including the Type and Length fields.  The Length is always 8.
</t></list></t>
<t>
      IPv4 address
</t>
<t><list><t>    
         A 32-bit unicast host address. 
</t></list></t>
<t>
     Reserved
</t>
<t><list><t>
Zeroed on initiation and ignored on receipt.    
</t></list></t>
<t>
</t>            
    </section>
    
    <section anchor="ipv6-sub-TLV" title="IPv6 Sub-TLV">
    <t>
         <figure align="left" anchor="ipv6-sub-figure"
                title="IPv6 sub-TLV format">
          <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     |     Length    |           Reserved            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                                                             |
 |                         IPv6 address                        |
 |                                                             |
 |                                                             |   
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
]]></artwork>
        </figure>
 </t>    
<t>
      Type
</t>
<t><list><t>  
         0x02  IPv6 address
</t></list></t>
<t>
      Length
</t>
<t><list><t>
         The Length contains the total length of the sub-TLV in bytes,
         including the Type and Length fields.  The Length is always 20.
</t></list></t>
<t>
      IPv6 address
</t>
<t><list><t>    
         A 128-bit unicast host address.
</t></list></t>
<t>
     Reserved
</t>
<t><list><t>
Zeroed on initiation and ignored on receipt.     
</t></list></t>
    </section>


    <section anchor="unnum-sub-TLV" title="Unnumbered Interface Sub-TLV">
    <t>
         <figure align="left" anchor="unnum-sub-figure"
                title="IPv4 sub-TLV format">
          <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     |     Length    |           Reserved            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                          Node ID                            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                       Interface ID                          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
]]></artwork>
        </figure>
</t>
<t>
      Type
</t>
<t><list><t>  
         0x03  Unnumbered interface
</t></list></t>
<t>
      Length
</t>
<t><list><t>
         The Length contains the total length of the sub-TLV in bytes,
         including the Type and Length fields.  The Length is always 12.
</t></list></t>
<t>
      Node ID
</t>
<t><list><t>    
         The Node ID interpreted as Router ID as discussed in the Section 2 <xref target="RFC3477"/>.
</t></list></t>
<t>
      Interface ID
</t>
<t><list><t>    
         The identifier assigned to the link by the node specified by the Node ID.
</t></list></t>
<t>
     Reserved
</t>
<t><list><t>
Zeroed on initiation and ignored on receipt.     
</t></list></t>

</section>
    </section>

  </section>
  
  </section>
    
  <section anchor="dp-operation-theory" title="Data Plane Theory of Operation">
  <t>
  After instantiating an LSP for a path using RSVP-TE <xref target="RFC3209"/> as described in <xref target="rsvp-operation-RTM"/>
  or as described in the second paragraph of <xref target="cp-operation-theory"/> and in <xref target="rsvp-operation-RTM"/>,
 ingress node MAY begin sending RTM packets to the first downstream
  RTM capable node on that path. Each RTM packet has its Scratch Pad field initialized
  and its TTL set to expire on the next downstream RTM-capable node.
  Each RTM-capable node on the explicit path receives an RTM packet and
  records the time at which it receives that packet at its ingress interface as well
 as the time
 at which it transmits that packet from its egress interface;  this should be done as close to the physical
 layer as possible to ensure precise accuracy in time determination.
 The RTM-capable node determines the difference between those two
  times; for 1-step operation, this difference is determined just prior to or while sending the packet,
  and the RTM-capable egress interface adds it to the value in
 the Scratch Pad field of the message
  in progress. Note, for the purpose
 of calculating a residence time, a common free running clock
  synchronizing all the involved interfaces may be sufficient,
  as, for example, 4.6 ppm accuracy  leads to 4.6 nanosecond error for residence time
  on the order of 1 millisecond.
  </t>
  <t>
  For 2-step operation, the difference between packet arrival time (at an ingress interface)
  and subsequent departure time (from an egress interface) is determined at some later
  time prior to sending a subsequent follow-up message, so that this value can be used
  to update the correctionField in the follow-up message.
  </t>
  <t>
  See <xref target="one-two-step-modes"/> for further details on the difference between 1-step and 2-step operation.
  </t>
 <!-- <t>
  The RTM capable node also sets the RTM packet's TTL to expire on the
  next downstream RTM capable node. </t>
  <t>-->
<t>
  The last RTM-capable node on the LSP MAY then use the value in the Scratch Pad field to perform time correction,
  if there is no follow-up message. 
For example, the egress node
 may be a PTP Boundary Clock synchronized to a Master Clock and
  will use the value in the Scratch Pad field to update PTP's correctionField. 
  </t>
<!--
  <t>
  The above description is directly applicable to the case of one-step clock modes. In case of two-step clock modes
  there are some differences, see <xref target="one-two-step-modes"/>).
  </t>
-->
  </section>   
 
 <section anchor="PTP-scenarios" title="Applicable PTP Scenarios">
 <t>
 The proposed approach can be directly integrated in a PTP network based
 on the IEEE 1588 delay request-response mechanism. The RTM capable node nodes act
 as end-to-end transparent clocks, and typically boundary clocks, at the edges of the
 MPLS network, use the value in the Scratch Pad field to update the correctionField of
 the corresponding PTP event
 packet prior to performing the usual PTP processing.
 </t>
 <!--
 <t>
 Under certain assumptions the proposed solution in a network where peer delay mechanism is used is also possible.
 The solution in this case requires the definition of a specific protocol to be used to calculate the link delays according to
 a peer delay link measurement approach. This is not described in this version of the draft.
 </t>
 -->
 </section>
 
 
<section anchor="one-two-step-modes" title="One-step Clock and Two-step Clock Modes">
 
<!--
<t>
One-step mode refers to no &quot;follow_up&quot; type message containing the residence time of an earlier event message.

Two-step mode indicates there is a further message containing the residence time of an earlier event message.

</t>
--> 
<t>
One-step mode refers to the mode of operation where an egress interface updates the correctionField
value of an original event message. Two-step mode refers to the mode of operation where this update
is made in a subsequent follow-up message.
</t>
<t>
Processing of the follow-up message, if present, requires the downstream end-point to wait for the
arrival of the follow-up message in order to combine correctionField values from both the
original (event) message and the subsequent (follow-up) message.  In a similar fashion,
each 2-step node needs to wait for the related follow-up message, if there is one, in order
to update that follow-up message (as opposed to creating a new one.  Hence the first node
that uses 2-step mode MUST do two things:
<list style="numbers">
<t>
Mark the original event message to indicate that a follow-up message will be forthcoming (this is necessary in order to 
<list style="latin">
<t>
Let any subsequent 2-step node know that there is already a follow-up message, and 
</t>
<t>
Let the end-point know to wait for a follow-up message;
</t>
</list>
</t>
<t>
Create a follow-up message in which to put the RTM determined as an initial correctionField value.
</t>
</list>
</t>
<t>
IEEE 1588v2 <xref target="IEEE.1588.2008"/> defines this behavior for PTP messages.
</t>
<t>

Thus, for example, with reference to the PTP protocol, the PTPType field identifies whether the message is a
Sync message, Follow_up message, Delay_Req message, or Delay_Resp message. The 10 octet long Port ID field

contains the identity of the source port, that is, the specific PTP port of the boundary clock connected to the MPLS network.

The Sequence ID is the sequence ID of the PTP message carried in the Value field of the message.

</t>
<t>
PTP messages also include a bit that indicates whether or not a follow-up message will be coming. 
This bit, once it is set by a 2-step mode device, MUST stay set accordingly until the original and
follow-up messages are combined by an end-point (such as a Boundary Clock).
</t>
<t>
Thus, an RTM packet, containing residence time information relating to an earlier packet, also contains

information identifying that earlier packet.
</t>

<t>
For compatibility with PTP, RTM (when used for PTP packets) must behave in a similar fashion.
To do this, a 2-step RTM capable egress interface will need to examine the S-bit in the Flags field
of the PTP sub-TLV (for RTM messages that indicate they are for PTP) and - if it is clear (set to zero),
it MUST set it and create a follow-up PTP Type RTM message.  If the S bit is already set, then the
RTM capable node MUST wait for the RTM message with the PTP type of follow-up and matching
originator and sequence number to make the corresponding residence time update to the Scratch Pad field.
</t>
<t>
In practice an RTM operating according to two-step clock behaves like a two-steps transparent clock. 

</t>
<t>
A 1-step capable RTM node MAY elect to operate in either 1-step mode (by making an update to
the Scratch Pad field of the RTM message containing the PTP even message), or in 2-step mode
(by making an update to the Scratch Pad of a follow-up message when its presence is indicated),
but MUST NOT do both.
</t>
<!--
<t>

In particular, with reference to PTP protocol, in case of a two-step RTM node, the PTP (event) packets are

still carried by RTM but without updating the Scratch Pad with the residence time of that packet. The related

residence time information is accumulated and carried in a subsequent RTM packet.

</t>
<t>
The use of two-step clock mode is communicated between RTM nodes via the Two-step clock flag and by
the message type (e.g. in case of sync messages, indicating the associated follow up message). 
</t>
-->
<t>
Two main subcases can be identified for an RTM node operating as a two-step clock:  
 </t>

<t>
A) 
If any of the previous RTM capable node or the previous PTP clock
(e.g. the BC connected to the first node), is a
 
two-step clock, the residence time is added to the RTM
packet that has been created to include the
 associated PTP packet (i.e. follow-up message in the
downstream direction), if the local RTM-capable node is also operating
 as a two-step clock. This RTM packet carries
the related accumulated residence time and the appropriate
 values of the Sequence Id and Port Id (the
same identifiers carried in the packet processed) and the Two-step Flag set to 1.

</t>
<t>
Note that the fact that an upstream RTM-capable node operating in the two-step
mode has created a follow-up message does not require any subsequent RTM
capable node to also operate in the 2-step mode, as long as that RTM-capable node
forwards the follow-up message on the same LSP on which it forwards the
corresponding previous message.
</t>
<t>
A one-step capable RTM node MAY elect to update the RTM follow-up message
as if it were operating in two-step mode, however, it MUST NOT update both messages.
</t>
<t>  
A PTP event packet (sync) is carried in the RTM packet in order for an RTM node to identify that
residence time measurement must be performed on that specific packet. 

</t>
 <t>
 To handle the residence time of the Delay request message on the upstream direction, an RTM
 packet must be created to carry the residence time on the associated downstream Delay Resp message.
 </t>
 
 <t>
 The last RTM node of the MPLS network in addition to update the correctionField of the associated PTP
 packet, must also properly handle the two-step flag of the PTP packets.
 </t>
 
<t>
 B) When the PTP network connected to the MPLS and RTM node, operates in one-step clock mode, the
 associated RTM packet must be created by the RTM node itself. The associated RTM packet
 including the PTP event packet needs now to
 indicate that a
 follow up message will be coming.
 </t>
 <t>
 The last RTM node of the LSP, if it receives an RTM message with a PTP payload indicating
 a follow-up message will be forthcoming, must generate a
 follow-up message and properly set the two-step flag of the PTP packets.
 </t>
 
</section>
 
 <section anchor="iana-consider" title="IANA Considerations">
 
     <section anchor="rtm-gach" title="New RTM G-ACh">
     <t>
     IANA is requested to reserve a new G-ACh as follows:
     </t>

  <texttable anchor="residence-time-table" title="New Residence Time Measurement">
    <ttcol align='left'>Value</ttcol>
    <ttcol align='center'>Description</ttcol>
    <ttcol align='left'>Reference</ttcol>
     <c>TBA1</c>
    <c>Residence&nbsp;Time&nbsp;Measurement</c>
    <c>This&nbsp;document</c>
   </texttable>
     </section>
 
     <section anchor="rtm-tlv-registry" title="New RTM TLV Registry">
     <t>
     IANA is requested to create sub-registry in Generic Associated Channel (G-ACh) Parameters Registry
     called "MPLS RTM TLV Registry". All code points in the range 0 through 127 in this registry shall be allocated
     according to the "IETF Review" procedure as specified in <xref target="RFC5226"/>
. Code points in the range
     128 through 191 in this registry shall be allocated according to the "First Come First Served" procedure as
     specified in <xref target="RFC5226"/>.
     This document defines the following new values RTM TLV type
s:
     </t>

  <texttable anchor="rtm-tlv-table" title="RTM TLV Type">
    <ttcol align='left'>Value</ttcol>
    <ttcol align='center'>Description</ttcol>
    <ttcol align='left'>Reference</ttcol>
    <c>0</c>
    <c>Reserved</c>
    <c>This&nbsp;document</c>
    <c>1</c>
    <c>No payload</c>
    <c>This&nbsp;document</c>
    <c>2</c>
    <c>PTPv2, Ethernet encapsulation</c>
    <c>This&nbsp;document</c>
    <c>3</c>
    <c>PTPv2, IPv4 Encapsulation</c>
    <c>This&nbsp;document</c>
    <c>4</c>
    <c>PTPv2, IPv6 Encapsulation</c>
    <c>This&nbsp;document</c>
     <c>5</c>
    <c>NTP</c>
    <c>This&nbsp;document</c>
     <c>6-127</c>
    <c>Unassigned</c>
    <c></c>
     <c>128 - 191</c>
    <c>Unassigned</c>
    <c></c>
     <c>192 - 254</c>
    <c>Private Use</c>
    <c>This&nbsp;document</c>
    <c>255</c>
    <c>Reserved</c>
    <c>This&nbsp;document</c>

    </texttable>

     </section>


     <section anchor="rtm-su-tlv-registry" title="New RTM Sub-TLV Registry">

     <t>

     IANA is requested to create sub-registry in MPLS RTM TLV Registry, requested in <xref target="rtm-tlv-registry"/>,

     called "MPLS RTM Sub-TLV Registry". All code points in the range 0 through 127 in this registry shall be allocated
     according to the "IETF Review" procedure as specified in <xref target="RFC5226"/>
. Code points in the range
     128 through 191 in this registry shall be allocated according to the "First Come First Served" procedure as
     specified in <xref target="RFC5226"/>.
.
    This document defines the following new values RTM sub-TLV types:

     </t>

  <texttable anchor="rtm-sub-tlv-table" title="RTM Sub-TLV Type">
    <ttcol align='left'>Value</ttcol>
    <ttcol align='center'>Description</ttcol>
    <ttcol align='left'>Reference</ttcol>
    <c>0</c>
    <c>Reserved</c>
    <c>This&nbsp;document</c>
    <c>1</c>
    <c>PTP 2-step</c>
    <c>This&nbsp;document</c>
     <c>2-127</c>
    <c>Unassigned</c>
    <c></c>
     <c>128 - 191</c>
    <c>Unassigned</c>
    <c></c>
     <c>192 - 254</c>
    <c>Private Use</c>
    <c>This&nbsp;document</c>
    <c>255</c>
    <c>Reserved</c>
    <c>This&nbsp;document</c>

    </texttable>
     
     </section>
     
     <section anchor="iana-ospfv2-rtm-capability-sub-tlv" title="RTM Capability sub-TLV in OSPFv2">
     <t>
     IANA is requested to assign a new type for RTM Capability sub-TLV from OSPFv2 Extended Link TLV
     Sub-TLVs registry as follows:
     </t>

  <texttable anchor="iana-ospfv2-rtm-cap-sub-tlv" title="RTM Capability sub-TLV">
    <ttcol align='left'>Value</ttcol>
    <ttcol align='center'>Description</ttcol>
    <ttcol align='left'>Reference</ttcol>
     <c>TBA2</c>
    <c>RTM Capability</c>
    <c>This&nbsp;document</c>
   </texttable>
     </section>
      
 <!--
     <section anchor="iana-ospfv3-rtm-capability-sub-tlv" title="RTM Capability sub-TLV in OSPFv3">
     <t>
     IANA is requested to assign a new type for RTM Capability sub-TLV from future OSPFv3 Extended-LSA
     Sub-TLVs registry that would be part of OSPFv3 IANA registry as follows:
     </t>

  <texttable anchor="iana-ospfv3-rtm-cap-sub-tlv" title="RTM Capability sub-TLV">
    <ttcol align='left'>Value</ttcol>
    <ttcol align='center'>Description</ttcol>
    <ttcol align='left'>Reference</ttcol>
     <c>TBA3</c>
    <c>RTM Capability</c>
    <c>This&nbsp;document</c>
   </texttable>
     </section>

-->
     <section anchor="iana-isis-rtm-application-id" title="IS-IS RTM Application ID">
     <t>
     IANA is requested to assign a new Application ID for RTM from the Application Identifiers for TLV 251 registry as follows:
     </t>

  <texttable anchor="iana-rtm-app-id" title="IS-IS RTM Application ID">
    <ttcol align='left'>Value</ttcol>
    <ttcol align='center'>Description</ttcol>
    <ttcol align='left'>Reference</ttcol>
     <c>TBA3</c>
    <c>RTM</c>
    <c>This&nbsp;document</c>
   </texttable>
     </section>
     
     <section anchor="iana-rtm-set-type" title="RTM_SET Sub-object RSVP Type and sub-TLVs">
     <t>
     IANA is requested to assign a new Type for RTM_SET sub-object from Attributes TLV Space sub-registry as follows:
     </t>

  <texttable anchor="iana-rtm-set-type-tbl" title="RTM_SET Sub-object Type">
    <ttcol align='left'>Type&nbsp;</ttcol>
    <ttcol align='center'>&nbsp;Name</ttcol>
    <ttcol align='center'>Allowed&nbsp; on &nbsp;LSP_ATTRIBUTES&nbsp;</ttcol>
    <ttcol align='center'>Allowed&nbsp; on &nbsp;LSP_REQUIRED_ATTRIBUTES&nbsp;</ttcol>
    <ttcol align='center'>Allowed&nbsp; on LSP Hop Attributes&nbsp;</ttcol>
    <ttcol align='left'>Reference&nbsp;</ttcol>
     <c>TBA4&nbsp;</c>
    <c>&nbsp;RTM_SET&nbsp;sub-object</c>
     <c>Yes</c>
     <c>No</c>
     <c>No</c>
     <c>This&nbsp;document</c>
   </texttable>

   <t>
   IANA requested to create new sub-registry for sub-TLV types of RTM_SET sub-object.
   All code points in the range 0 through 127 in this registry shall be allocated
     according to the "IETF Review" procedure as specified in <xref target="RFC5226"/>
. Code points in the range
     128 through 191 in this registry shall be allocated according to the "First Come First Served" procedure as
     specified in <xref target="RFC5226"/>.
      This document defines the following new values of RTM_SET object sub-object types:
   </t>
   
  <texttable anchor="iana-rtm-set-sub-type-tbl" title="RTM_SET object sub-object types">
    <ttcol align='left'>Value</ttcol>
    <ttcol align='center'>Description</ttcol>
    <ttcol align='left'>Reference</ttcol>
     <c>0</c>
    <c>Reserved</c>
    <c>This&nbsp;document</c>
     <c>1</c>
    <c>IPv4 address</c>
    <c>This&nbsp;document</c>
     <c>2</c>
    <c>IPv6 address</c>
    <c>This&nbsp;document</c>
     <c>3</c>
    <c>Unnumbered interface</c>
    <c>This&nbsp;document</c>
     <c>4-127</c>
    <c>Unassigned</c>
    <c></c>
     <c>128 - 191</c>
    <c>Unassigned</c>
    <c></c>
     <c>192 - 254</c>
    <c>Private Use</c>
    <c>This&nbsp;document</c>
     <c>255</c>
    <c>Reserved</c>
    <c>This&nbsp;document</c>
    
   </texttable> 
   
     </section>
     
    
      <section anchor="iana-rtm-set-flag" title="RTM_SET Attribute Flag">
<t>
IANA is requested to assign new flag from Attribute Flags registry
</t>

  <texttable anchor="iana-rtm-set-flag-table" title="RTM_SET Attribute Flag">
    <ttcol align='left'>Bit No</ttcol>
    <ttcol align='center'>Name</ttcol>
     <ttcol align='center'>Attribute Flags&nbsp;Path</ttcol>
    <ttcol align='center'>Attribute Flags&nbsp;Resv</ttcol>
     <ttcol align='center'>RRO</ttcol>
     <ttcol align='center'>ERO</ttcol>
     <ttcol align='left'>Reference</ttcol>
    <c>&nbsp;TBA5</c>
    <c>&nbsp;RTM_SET</c>
    <c>Yes</c>
    <c>Yes</c>
    <c>No</c>
    <c>No</c>
     <c>This&nbsp;document</c>
    </texttable>

</section>

     <section anchor="iana-error-code" title="New Error Codes">
<t>
IANA is requested to assign new Error Codes from Error Codes and Globally-Defined Error Value Sub-Codes registry
</t>

  <texttable anchor="iana-error-code-table" title="New Error Codes">
    <ttcol align='left'>Error Code</ttcol>
    <ttcol align='center'>Meaning</ttcol>
    <ttcol align='left'>Reference</ttcol>
    <c>TBA6</c>
    <c>Duplicate TLV</c>
    <c>This&nbsp;document</c>
    <c>TBA7</c>
    <c>Duplicate sub-TLV</c>
    <c>This&nbsp;document</c>
    <c>TBA8</c>
    <c>RTM_SET&nbsp;TLV&nbsp;Absent</c>
     <c>This&nbsp;document</c>
    </texttable>

</section>

 </section>
     
     <section anchor="security" title="Security Considerations">
     <t>
     Routers that support Residence Time Measurement are subject to the same security considerations as defined in
     <xref target="RFC5586"/> <!-- and <xref target="RFC6423"/> -->.
     </t>
     <t>
     In addition - particularly as applied to use related to PTP - there is a presumed trust model that 
     depends on the existence of a trusted relationship of at least all PTP-aware nodes on the path
     traversed by PTP messages.  This is necessary as these nodes are expected to correctly modify
     specific content of the data in PTP messages and proper operation of the protocol depends on this ability.
     </t>
     <t>
     As a result, the content of the PTP-related data in RTM messages that will be modified by intermediate
     nodes cannot be authenticated, and the additional information that must be accessible for proper
     operation of PTP 1-step and 2-step modes MUST be accessible to intermediate nodes (i.e. - MUST NOT
     be encrypted in a manner that makes this data inaccessible).
     </t>
     <t>
     While it is possible for a supposed compromised node to intercept and modify the G-ACh content,
     this is an issue that exists for nodes in general - for any and all data that may be carried over an LSP - and
     is therefore the basis for an additional presumed trust model associated with existing LSPs and nodes.
     </t>
     <t>
     The ability for potentially authenticating and/or encrypting RTM and PTP data that is not needed by
     intermediate RTM/PTP-capable nodes is for further study.
     </t>
     <t>
     Security requirements of time protocols are provided in RFC 7384 <xref target="RFC7384"/>.
     </t>
     </section>
     
      <section title="Acknowledgements">
         <t>
        Authors want to thank Loa Andersson, Lou Berger and Acee Lindem for their thorough reviews, thoughtful comments
        and, most of, patience.
         </t>  
      </section>

  </middle>
  
    <back>
    <references title="Normative References">
     
     &RFC2119;
     
     &RFC5905;
     
     &RFC5586;
     
     &RFC5085;
     
     &RFC4385;
     
     &RFC6423;

    &RFC3209;
    
    &RFC6823;
    
    &RFC3477;
    
    &RFC7684;

    &RFC5420;
      
 <reference anchor="IEEE.1588.2008">
<front>
<title>Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title>
<author>
<organization/>
</author>
<date month="July" year="2008"/>
</front>
<seriesInfo name="IEEE" value="Standard 1588"/>
</reference> 

    </references>

    <references title="Informative References">
    &RFC6374;
 
   &RFC5226;
  
&RFC4202;
 
  &RFC7384;
  
     &I-D.ietf-ospf-ospfv3-lsa-extend;
  
        <?rfc include='reference.I-D.ietf-tictoc-1588overmpls'?>

 <!--?rfc.include='reference.IANA'?-->
    </references>
 </back>
 </rfc>   
    
