RFC 8169

Residence Time Measurement in MPLS Networks

๐Ÿ“… published May 2017, from ietf

RFC 8169: Residence Time Measurement in MPLS Networks ๐Ÿ’– (Part 1 of 6)

okay bestie, this one is a Standards Track document from the IETF, which means it's the official rulebook for how this stuff should work ๐Ÿ”ฅ

Quick header tea โ˜• The author crew is G. Mirsky (ZTE Corp.), S. Ruffini and E. Gray (Ericsson), J. Drake (Juniper Networks), S. Bryant (Huawei), and A. Vainshtein (ECI Telecom). It's dated May 2017, the ISSN is 2070-1721, and there's no Obsoletes or Updates line, so it isn't replacing or amending anything else ๐Ÿ’…

Abstract โœจ

So this doc defines a brand new Generic Associated Channel (G-ACh) for Residence Time Measurement (RTM) and explains how time sync protocols can use it inside an MPLS domain ๐Ÿงš

Residence time is the variable part of the propagation delay that timing and sync messages experience. Knowing it for every single message means you can work out the delay more accurately when you apply the value in a Precision Time Protocol event message ๐Ÿ’œ

Status of This Memo ๐Ÿ“œ

This is an Internet Standards Track document ๐ŸŽ€

This doc is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). For more on Internet Standards, check out Section 2 of RFC 7841 ๐ŸŒธ

For the current status, any errata, and how to give feedback, head to http://www.rfc-editor.org/info/rfc8169 ๐Ÿ”—

Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved. ๐Ÿ’œ

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the date of publication. Read these carefully, because they spell out your rights and restrictions for this doc. Any Code Components pulled from this doc must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License ๐Ÿ™ˆ


Table of Contents ๐Ÿ—‚๏ธ

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
  1.1.  Conventions Used in This Document . . . . . . . . . . . .   4
    1.1.1.  Terminology . . . . . . . . . . . . . . . . . . . . .   4
    1.1.2.  Requirements Language . . . . . . . . . . . . . . . .   5
2.  Residence Time Measurement  . . . . . . . . . . . . . . . . .   5
  2.1.  One-Step Clock and Two-Step Clock Modes . . . . . . . . .   6
    2.1.1.  RTM with Two-Step Upstream PTP Clock  . . . . . . . .   7
    2.1.2.  Two-Step RTM with One-Step Upstream PTP Clock . . . .   8
3.  G-ACh for Residence Time Measurement  . . . . . . . . . . . .   8
  3.1.  PTP Packet Sub-TLV  . . . . . . . . . . . . . . . . . . .  10
  3.2.  PTP Associated Value Field  . . . . . . . . . . . . . . .  11
4.  Control-Plane Theory of Operation . . . . . . . . . . . . . .  11
  4.1.  RTM Capability  . . . . . . . . . . . . . . . . . . . . .  11
  4.2.  RTM Capability Sub-TLV  . . . . . . . . . . . . . . . . .  12
  4.3.  RTM Capability Advertisement in Routing Protocols . . . .  13
    4.3.1.  RTM Capability Advertisement in OSPFv2  . . . . . . .  13
    4.3.2.  RTM Capability Advertisement in OSPFv3  . . . . . . .  14
    4.3.3.  RTM Capability Advertisement in IS-IS . . . . . . . .  14
    4.3.4.  RTM Capability Advertisement in BGP-LS  . . . . . . .  14
  4.4.  RSVP-TE Control-Plane Operation to Support RTM  . . . . .  15
    4.4.1.  RTM_SET TLV . . . . . . . . . . . . . . . . . . . . .  16
5.  Data-Plane Theory of Operation  . . . . . . . . . . . . . . .  20
6.  Applicable PTP Scenarios  . . . . . . . . . . . . . . . . . .  21
7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  22
  7.1.  New RTM G-ACh . . . . . . . . . . . . . . . . . . . . . .  22
  7.2.  New MPLS RTM TLV Registry . . . . . . . . . . . . . . . .  22
  7.3.  New MPLS RTM Sub-TLV Registry . . . . . . . . . . . . . .  23
  7.4.  RTM Capability Sub-TLV in OSPFv2  . . . . . . . . . . . .  23
  7.5.  RTM Capability Sub-TLV in IS-IS . . . . . . . . . . . . .  24
  7.6.  RTM Capability TLV in BGP-LS  . . . . . . . . . . . . . .  24
  7.7.  RTM_SET Sub-object RSVP Type and Sub-TLVs . . . . . . . .  25
  7.8.  RTM_SET Attribute Flag  . . . . . . . . . . . . . . . . .  26
  7.9.  New Error Codes . . . . . . . . . . . . . . . . . . . . .  26
8.  Security Considerations . . . . . . . . . . . . . . . . . . .  26
9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  27
  9.1.  Normative References  . . . . . . . . . . . . . . . . . .  27
  9.2.  Informative References  . . . . . . . . . . . . . . . . .  28
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  29
Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  30

1. Introduction โœจ

Time sync protocols like the Network Time Protocol version 4 (NTPv4) [RFC5905] and the Precision Time Protocol version 2 (PTPv2) [IEEE.1588] define timing messages that sync clocks across a network domain. The cumulative time one of these timing messages spends passing through the nodes from ingress node to egress node is called "residence time", and it's used to make clock sync more accurate โฑ๏ธ Residence time is the sum, for each node along the path from an ingress node to an egress node, of the difference between when the message was received at an ingress interface and when it was transmitted from an egress interface. This doc defines a new Generic Associated Channel (G-ACh) value and an associated Residence Time Measurement (RTM) message, which can be used in a Multiprotocol Label Switching (MPLS) network to measure residence time over a Label Switched Path (LSP) ๐Ÿฆ‹

This doc describes RTM over an LSP signaled using RSVP-TE [RFC3209]. With RSVP-TE, the LSP's path can be either explicitly specified or determined during signaling ๐Ÿ›ค๏ธ It's possible to use RTM over an LSP set up with the Label Distribution Protocol [RFC5036], but that's outside the scope of this doc ๐Ÿ™ˆ

Comparing this with other proposed solutions, like [TIMING-OVER-MPLS], is also outside the scope of this doc ๐Ÿ’…

1.1. Conventions Used in This Document ๐Ÿ“š

1.1.1. Terminology ๐Ÿ”ค

MPLS:   Multiprotocol Label Switching

ACH:    Associated Channel Header

TTL:    Time to Live

G-ACh:  Generic Associated Channel

GAL:    Generic Associated Channel Label

NTP:    Network Time Protocol

ppm:    parts per million

PTP:    Precision Time Protocol

BC:     boundary clock
LSP:    Label Switched Path

OAM:    Operations, Administration, and Maintenance

RRO:    Record Route Object

RTM:    Residence Time Measurement

IGP:    Internal Gateway Protocol

BGP-LS: Border Gateway Protocol - Link State

1.1.2. Requirements Language ๐Ÿซถ

So here's the deal with 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 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.


2. Residence Time Measurement ๐Ÿ“

Okay so "Packet Loss and Delay Measurement for MPLS Networks" [RFC6374] can measure one-way or two-way end-to-end propagation delay over an LSP or a pseudowire (PW). But those measurements aren't enough for some apps, like time sync across a network as defined in PTP ๐Ÿ˜ญ In PTPv2 [IEEE.1588], residence time gets accumulated in the correctionField of the PTP event message, which is defined in [IEEE.1588] and called using a one-step clock. It can also go in the associated follow-up message (or the Delay_Resp message tied to the Delay_Req message), which is called using a two-step clock. See the detailed discussion in Section 2.1 ๐Ÿ’–

IEEE 1588 uses this residence time to correct for the transit times of nodes on an LSP, which basically makes the transit nodes transparent ๐Ÿช„

This doc proposes a mechanism that can work as one type of on-path support for a clock sync protocol, or it can be used to do a one-way measurement of residence time ๐Ÿฆ‹ The mechanism adds up residence time from all nodes along a particular LSP's path that support this extension, storing it in the Scratch Pad field of an RTM message (Figure 1). The egress node can then use this value to update, for example, the correctionField of the PTP event packet carried inside the RTM message before it does its PTP processing ๐Ÿ‘‘

2.1. One-Step Clock and Two-Step Clock Modes ๐Ÿฆ‹

okay so one-step mode is when an egress interface updates the correctionField right on the original event message, no cap โœจ. Two-step mode is when that same update gets dropped into a follow-up message that shows up afterwards ๐Ÿ’….

Here's the tea ๐Ÿซ–: the downstream endpoint has to wait for the follow-up to arrive so it can combine the correctionField values from the original (event) message and the follow-up. Same energy for every two-step node: it has to wait for the related follow-up (if there is one) so it can update that follow-up instead of making a brand new one ๐Ÿซถ. So the first node that uses two-step mode MUST do two things:

  1. Mark the original event message so it's clear a follow-up is coming. This is needed so that:
    • any later two-step node knows there's already a follow-up message ๐Ÿ‘€
    • the endpoint knows to wait for a follow-up message ๐Ÿงš
  2. Create a follow-up message and put the RTM it measured in there as the initial correctionField value. ๐Ÿ’–

[IEEE.1588] is where IEEE 1588v2 defines this behaviour for PTP messages ๐ŸŒธ.

So, for example, with the PTP protocol, the PTPType field tells you whether the message is a Sync message, a Follow_up message, a Delay_Req message, or a Delay_Resp message ๐Ÿ“‹. The 10-octet-long Port ID field holds the identity of the source port [IEEE.1588], which is the specific PTP port of the boundary clock (BC) hooked up to the MPLS network ๐Ÿ”Œ. The Sequence ID is the sequence ID of the PTP message riding in the Value field of the message ๐Ÿ”ข.

PTP messages also have a bit that says whether a follow-up message is coming โœจ. A two-step mode PTP device MAY set this bit. Once it's set, it MUST NOT be unset until an endpoint (like a BC) has combined the original and follow-up messages. ๐Ÿ”’

For PTP compatibility, RTM (when it's carrying PTP packets) must act in a similar way ๐Ÿค. Heads up ๐Ÿ“: handling Sync event messages is different from handling Delay_Req/Delay_Resp event messages when they cross a two-step RTM node. Here's how a two-step RTM node handles a PTP Sync event message. The Delay_Resp/Delay_Req details live in Section 2.1.1 ๐Ÿ’โ€โ™€๏ธ.

The quick version: a two-step RTM-capable egress interface needs to check the S bit in the Flags field of the PTP sub-TLV (for RTM messages that say they're carrying PTP) ๐Ÿ‘€. If it's clear (set to zero), the interface MUST set the S bit and create a follow-up PTP Type RTM message ๐Ÿ™Œ. If the S bit is already set, the RTM-capable node MUST wait for the RTM message whose PTP type is follow-up and whose originator and sequence number match, so it can make the matching residence time update to the Scratch Pad field. The wait period MUST be reasonably bounded. โณ

So an RTM packet that carries residence time info about an earlier packet also carries info that identifies that earlier packet ๐Ÿง .

In practice, a two-step RTM node acts like a two-step transparent clock ๐ŸŽ€.

A one-step-capable RTM node MAY pick either one-step mode (updating the Scratch Pad field of the RTM message holding the PTP event message) or two-step mode (updating the Scratch Pad of a follow-up message when a follow-up is indicated), but it MUST NOT do both ๐Ÿ™…โ€โ™€๏ธ.

There are two main subcases for an RTM node running as a two-step clock, and we'll go through them in the sub-sections below ๐ŸŒˆ.

2.1.1. RTM with Two-Step Upstream PTP Clock

So, if any earlier RTM-capable node or the earlier PTP clock (e.g., the BC hooked up to the first node) is a two-step clock, AND the local RTM-capable node is also running two-step mode, the residence time gets added to the RTM packet that was created to carry the second PTP packet (i.e., the downstream follow-up message) ๐ŸŽฏ. That RTM packet carries the related accumulated residence time, the right Sequence ID and Port ID (the same identifiers as the original packet), and the two-step flag set to 1 ๐Ÿ’œ.

Quick note ๐Ÿ“: just because an upstream RTM node made a follow-up message in two-step mode doesn't mean every later RTM node has to be two-step too ๐Ÿ™Œ. That's true as long as the later node forwards the follow-up on the same LSP it forwards the matching previous message on.

A one-step-capable RTM node MAY choose to update the RTM follow-up message as if it were in two-step mode; however, it MUST NOT update both messages ๐Ÿ’….

A PTP Sync packet rides inside the RTM packet to tell the RTM node that RTM has to be done on that exact packet ๐ŸŽฏ.

To handle residence time for a Delay_Req going upstream, an RTM packet must be created to carry that residence time in the matching downstream Delay_Resp message โœจ.

The last RTM node in the MPLS network has a double job ๐Ÿ‘‘. Besides updating the correctionField of the associated PTP packet, it must also react properly to the two-step flag on the PTP packets.

2.1.2. Two-Step RTM with One-Step Upstream PTP Clock

When the PTP network hooked up to the MPLS runs in one-step clock mode, but an RTM node runs in two-step mode, the follow-up RTM packet must be made by the RTM node itself ๐Ÿ™‹โ€โ™€๏ธ. The RTM packet carrying the PTP event packet now needs to say a follow-up message is coming.

The egress RTM-capable node of the LSP strips off the RTM encapsulation. If two-step clock mode is indicated, it generates PTP messages with the follow-up correction as appropriate (according to [IEEE.1588]) ๐Ÿ’ซ. In this case, the common header of the PTP packet carrying the synchronization message would have to be tweaked by setting the twoStepFlag field, to show there's now a follow-up message attached to the current message ๐Ÿฆ‹.

3. G-ACh for Residence Time Measurement ๐ŸŒธ

[RFC5586] and [RFC6423] define the G-ACh, which extends the Pseudowire Associated Channel Header (ACH) [RFC5085] to LSPs ๐Ÿงš. G-ACh is the way to carry OAM and other control messages over an LSP. Which transit nodes actually process these messages is controlled by the Time-to-Live (TTL) value in the MPLS header ๐Ÿ•ฐ๏ธ.

Here's the RTM message format, shown in Figure 1 ๐Ÿ‘‡

     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 (optional)                        |
    ~                                                               ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 1: RTM G-ACh Message Format for Residence Time Measurement
  • The first four octets are a G-ACh header, per [RFC5586] ๐Ÿ’–.
  • The Version field is set to 0, as defined in [RFC4385] ๐Ÿท๏ธ.
  • The Reserved field MUST be set to 0 on transmit and ignored on receipt ๐Ÿ™ˆ.
  • The RTM G-ACh field (value 0x000F; see Section 7.1) is what marks the packet as RTM ๐Ÿท๏ธ.
  • The Scratch Pad field is 8 octets long ๐Ÿ“. It's the spot where the residence time spent in each RTM-capable node transited by the packet (on its path from ingress node to egress node) gets accumulated ๐Ÿ“ˆ. The first RTM-capable node MUST initialize the Scratch Pad field with its RTM ๐Ÿ”ฅ. Its format is a 64-bit signed integer, and it holds the residence time measured in nanoseconds, multiplied by 2^16 โœจ. Heads up ๐Ÿ“: depending on whether the timing procedure is one-step or two-step (Section 2.1), the residence time is either for the timing packet carried in the Value field of this RTM message, or for an associated timing packet carried in the Value field of another RTM message ๐Ÿ‘ฏ.
  • The Type field identifies the type and encapsulation of a timing packet carried in the Value field, e.g., NTP [RFC5905] or PTP [IEEE.1588] ๐Ÿง. Per this document, IANA has created a sub-registry called the "MPLS RTM TLV Registry" in the "Generic Associated Channel (G-ACh) Parameters" registry (see Section 7.2) ๐Ÿ—‚๏ธ.
  • The Length field contains the length, in octets, of any Value field defined for the Type given in the Type field ๐Ÿ“.
  • The TLV MUST be included in the RTM message, even if the length of the Value field is zero ๐Ÿ’€.

3.1. PTP Packet Sub-TLV โœจ

Okay bestie, so Figure 2 shows the format of a PTP sub-TLV that MUST be included in the Value field of an RTM message sent right before the carried timing packet, whenever that timing packet is PTP ๐ŸŽ€

     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         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 2: PTP Sub-TLV Format

Next up is the Flags field, which has its own little layout ๐Ÿฆ‹

     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                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 3: Flags Field Format of PTP Packet Sub-TLV

Here's the breakdown of each field, and it's honestly so clean ๐Ÿ’…

  • The Type field identifies the PTP packet sub-TLV and is set to 1 according to Section 7.3.
  • The Length field of the PTP sub-TLV contains the number of octets of the Value part of the TLV and MUST be 20 ๐Ÿ”ฅ
  • The Flags field currently defines one bit, the S bit. It tells you whether the current message has been processed by a two-step node. The flag is cleared if the message has been handled exclusively by one-step nodes and there is no follow-up message. It is set if there has been at least one two-step node and a follow-up message is forthcoming ๐ŸŒธ
  • The PTPType field indicates the type of PTP packet to which this PTP sub-TLV applies. PTPType is the messageType field of a PTPv2 packet, with possible values defined in Table 19 of [IEEE.1588] ๐Ÿงš
  • The 10-octet-long Port ID field contains the identity of the source port ๐Ÿ’œ
  • The Sequence ID is the sequence ID of the PTP message to which this PTP sub-TLV applies โœจ

Okay, the key thing ๐Ÿ‘‘ A tuple of PTPType, Port ID, and Sequence ID uniquely identifies the PTP timing message included in an RTM message, and it's used in two-step RTM mode. See Section 2.1.1 for the full story ๐Ÿซถ

3.2. PTP Associated Value Field ๐ŸŒˆ

So the Value field (see Figure 1), in addition to the PTP sub-TLV, MAY carry a packet of the PTP Time synchronization protocol (as was identified by the Type field). This is lowkey the best part: the timing message packet may be authenticated or encrypted and carried over this LSP unchanged, and it's inaccessible to intermediate RTM capable LSRs, while the residence time is accumulated in the Scratch Pad field ๐Ÿ”

The LSP ingress RTM-capable LSR fills in the identifying tuple information of the PTP sub-TLV (see section 3.1) before it puts the (possibly authenticated/encrypted) PTP message packet after the PTP sub-TLV in the Value field of the RTM message. This is for an RTM message of the PTP Type (Type 1; see Section 7.3) ๐ŸŽ€


4. Control-Plane Theory of Operation ๐Ÿง 

Here's the big idea. RTM depends on 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 ๐Ÿ’–

4.1. RTM Capability ๐Ÿ’…

The RTM capability of a node is about a pair of interfaces, the ones 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, so that this information is available to the egress interface of the node ๐Ÿฆ‹

The supported mode (one-step or two-step) of any pair of interfaces is 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. From that and the arrival time information from the corresponding ingress interface, it determines the difference, which is the residence time for the packet โฑ๏ธ

An interface that can do this and update the associated Scratch Pad in real time (i.e., while the packet is being forwarded) is said to be one-step capable โšก

So, while both ingress and egress interfaces are required to support RTM for the pair to be RTM capable, it's the egress interface that decides whether the node is one-step or two-step capable with respect to the interface pair ๐Ÿ‘‘

The RTM capability used in the sub-TLV shown in Figures 4 and 5 is a non-routing-related capability associated with the interface being advertised, based on its egress capability. Whether any pair of interfaces on a node that includes this egress interface can support any mode of RTM depends on the ingress interface of the node being able to record packet arrival time and convey it to the egress interface on that node ๐Ÿซง

When a node uses an IGP to support the RTM capability advertisement, the IGP sub-TLV MUST reflect the RTM capability (one-step or two-step) associated with the advertised interface. Changes of RTM capability are unlikely to be frequent. They would happen, for example, if the operator decided to include or exclude a particular port from RTM processing, or to switch between RTM modes ๐ŸŒธ

4.2. RTM Capability Sub-TLV ๐Ÿ“

[RFC4202] explains that the Interface Switching Capability Descriptor describes the switching capability of an interface. For bidirectional links, the switching capabilities of an interface are defined to be the same in either direction, meaning 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 ๐Ÿ™ˆ

A node that supports RTM MUST be able to act in two-step mode and MAY also support one-step RTM mode. You can find a detailed discussion of one-step and two-step RTM modes in Section 2.1 โœจ

4.3. RTM Capability Advertisement in Routing Protocols ๐Ÿ“ก

4.3.1. RTM Capability Advertisement in OSPFv2 ๐ŸŒท

The format for the RTM Capability sub-TLV in OSPF is shown in Figure 4 ๐Ÿ’–

     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 |  Value       ...
    +-+-+-+-+-+-+-+-+-+- ...

                Figure 4: RTM Capability Sub-TLV in OSPFv2

Here are the rules, bestie ๐Ÿ“

  • The Type value (5) has been assigned by IANA in the "OSPFv2 Extended Link TLV Sub-TLVs" registry (see Section 7.4).
  • The Length value equals the number of octets of the Value field.
  • The Value contains a variable number of bitmap fields, so that the overall number of bits in the fields equals Length * 8.
  • Bits are defined/sent starting with Bit 0. Additional bitmap field definitions that may be defined in the future SHOULD be assigned in ascending bit order, so as to minimize the number of bits that will need to be transmitted ๐Ÿงš
  • Undefined bits MUST be transmitted as 0 and MUST be ignored on receipt ๐Ÿšซ
  • Bits that are not transmitted MUST be treated as if they are set to 0 on receipt.
  • RTM (capability) is a 3-bit-long bitmap field with values defined as follows:
    • 0b001 - one-step RTM supported
    • 0b010 - two-step RTM supported
    • 0b100 - reserved

The capability to support RTM on a particular link (interface) is advertised in the OSPFv2 Extended Link Opaque LSA, as described in Section 3 of [RFC7684], via the RTM Capability sub-TLV ๐Ÿฆ‹

4.3.2. RTM Capability Advertisement in OSPFv3 ๐ŸŒ™

The capability to support RTM on a particular link (interface) can be advertised in OSPFv3 using LSA extensions, as described in [OSPFV3-EXTENDED-LSA]. The sub-TLV SHOULD use the same format as in Section 4.3.1. The type allocation and full details of the exact use of OSPFv3 LSA extensions are for further study ๐Ÿ”ฎ

4.3.3. RTM Capability Advertisement in IS-IS ๐Ÿ›ค๏ธ

The capability to support RTM on a particular link (interface) is advertised in a new sub-TLV. That sub-TLV may be included in TLVs advertising Intermediate System (IS) Reachability on a specific link (TLVs 22, 23, 222, and 223) ๐Ÿ’

The format for the RTM Capability sub-TLV is shown in Figure 5 ๐ŸŽ€

     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 ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...
    |      Type     |     Length    | RTM |   Value      ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...

                     Figure 5: RTM Capability Sub-TLV

And the details ๐Ÿซถ

  • The Type value (40) has been assigned by IANA in the "Sub-TLVs for TLVs 22, 23, 141, 222, and 223" registry for IS-IS (see Section 7.5).
  • Definitions, rules of handling, and values for the Length and Value fields are as defined in Section 4.3.1.
  • RTM (capability) is a 3-bit-long bitmap field, with values defined in Section 4.3.1.

4.3.4. RTM Capability Advertisement in BGP-LS ๐ŸŒ

The format for the RTM Capability TLV is shown in Figure 4 ๐Ÿฆ„

The Type value (1105) has been assigned by IANA in the "BGP-LS Node Descriptor, Link Descriptor, Prefix Descriptor, and Attribute TLVs" sub-registry (see Section 7.6) ๐Ÿ’œ

Definitions, rules of handling, and values for the fields Length, Value, and RTM are as defined in Section 4.3.1 โœจ

The RTM capability will be advertised in BGP-LS as a Link Attribute TLV associated with the Link NLRI, as described in Section 3.3.2 of [RFC7752] ๐ŸŒธ

4.4. RSVP-TE Control-Plane Operation to Support RTM โœจ

Okay bestie, so throughout this doc we call a node an RTM-capable node whenever at least one of its interfaces is RTM capable ๐Ÿ’–. Figure 6 shows the different roles a node can play when it comes to RTM capability ๐ŸŽ€:

    -----     -----     -----     -----     -----     -----     -----
    | A |-----| B |-----| C |-----| D |-----| E |-----| F |-----| G |
    -----     -----     -----     -----     -----     -----     -----

                        Figure 6: RTM-Capable Roles
  • 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. ๐Ÿงš
  • B is the ingress Label Edge Router (LER) for the MPLS LSP and is the first RTM-capable node. It creates RTM packets, and in each one it places a timing packet, possibly encrypted, in the Value field and initializes the Scratch Pad field with its RTM. ๐Ÿฆ‹
  • C is a transit node that is not RTM capable. It forwards RTM packets without modification. ๐ŸŒธ
  • D is an RTM-capable transit node. It updates the Scratch Pad field of the RTM packet without updating the timing packet. ๐Ÿ’…
  • E is a transit node that is not RTM capable. It forwards RTM packets without modification. ๐Ÿ“
  • F is the egress LER and the last RTM-capable node. It removes the RTM ACH encapsulation and processes the timing packet carried in the Value field using the value in the Scratch Pad field. In particular, the value in the Scratch Pad field of the RTM ACH is used in updating the Correction field of the PTP message(s). The LER should also include its own residence time before creating the outgoing PTP packets. The details of this process depend on whether or not the node F is itself operating as a one-step or two-step clock. ๐Ÿ‘‘
  • G is a boundary clock with its ingress port in Slave state. Node G receives PTP messages. ๐Ÿ’œ

An ingress node that is configured to perform RTM along a path through an MPLS network to an egress node MUST verify that the selected egress node has an interface that supports RTM, via the egress node's advertisement of the RTM Capability sub-TLV, as covered in Section 4.3. ๐Ÿ”ฅ In the Path message that the ingress node uses to instantiate the LSP to that egress node, it places an LSP_ATTRIBUTES object [RFC5420] with an RTM_SET Attribute Flag set, as described in Section 7.8. That tells the egress node that RTM is requested for this LSP โœจ. The RTM_SET Attribute Flag SHOULD NOT be set in the LSP_REQUIRED_ATTRIBUTES object [RFC5420], unless it is known that all nodes recognize the RTM attribute (but need not necessarily implement it). Why? Because a node that does not recognize the RTM_SET Attribute Flag would reject the Path message ๐Ÿ’€.

If an egress node receives a Path message with the RTM_SET Attribute Flag in an LSP_ATTRIBUTES object, the egress node MUST include an initialized RRO [RFC3209] and an LSP_ATTRIBUTES object where the RTM_SET Attribute Flag is set and the RTM_SET TLV (Section 4.4.1) is initialized. When the Resv message is received by the ingress node, the RTM_SET TLV will contain an ordered list, from egress node to ingress node, of the RTM-capable nodes along the LSP's path ๐ŸŒˆ.

After the ingress node receives the Resv, it MAY begin sending RTM packets on the LSP's path. Each RTM packet has its Scratch Pad field initialized and its TTL set to expire on the closest downstream RTM-capable node ๐Ÿซถ.

It should be noted that RTM can also be used for LSPs instantiated using [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. Lowkey a nice shortcut ๐Ÿ™ˆ.


4.4.1. RTM_SET TLV

RTM-capable interfaces can be recorded via the RTM_SET TLV ๐Ÿฆ‹. The RTM_SET sub-object format is a generic TLV format, shown in Figure 7 โœจ:

     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                             ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 7: RTM_SET TLV Format

The Type value (5) has been assigned by IANA in the RSVP-TE "Attributes TLV Space" sub-registry (see Section 7.7) ๐Ÿ“‹.

The Length contains the total length of the sub-object in bytes, including the Type and Length fields ๐Ÿ“.

The I bit indicates whether the downstream RTM-capable node along the LSP is present in the RRO ๐Ÿ”.

The Reserved field must be zeroed on initiation and ignored on receipt ๐ŸงŠ.

The content of an RTM_SET TLV is a series of variable-length sub-TLVs. Only a single RTM_SET can be present in a given LSP_ATTRIBUTES object. The sub-TLVs are defined in Section 4.4.1.1 ๐ŸŒธ.

The following processing procedures apply to every RTM-capable node along the LSP. In this paragraph, an RTM-capable node is referred to as a node for the sake of brevity ๐Ÿซถ. Each node MUST examine the Resv message for whether the RTM_SET Attribute Flag in the LSP_ATTRIBUTES object is set. If the RTM_SET flag is set, the node MUST inspect the LSP_ATTRIBUTES object for the presence of an RTM_SET TLV. If more than one is found, then the LSP setup MUST fail with generation of the ResvErr message with Error Code "Duplicate TLV" (Section 7.9) and Error Value that contains the Type value in its 8 least significant bits. If no RTM_SET TLV is found, then the LSP setup MUST fail with generation of the ResvErr message with Error Code "RTM_SET TLV Absent" (Section 7.9) ๐Ÿ˜ญ.

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 a reachable RTM-capable interface. If the node cannot find a matching ID in the RRO, then it MUST try to use the ID of the next node in the RTM_SET until it finds the match or reaches the end of the RTM_SET TLV. If a match has been found, the calculated value is used by the node as the TTL value in the 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 an RTM_SET sub-TLV with the same address it used in the RRO sub-object at the beginning of the RTM_SET TLV in the associated outgoing Resv message before forwarding it upstream ๐ŸŽ€. If the calculated TTL value has been set to 255, as described above, then the I flag in the node's RTM_SET TLV MUST be set to 1 before the Resv message is forwarded upstream. Otherwise, the I flag MUST be cleared (0) ๐Ÿ”ฅ.

The ingress node MAY inspect the I bit received in each RTM_SET TLV contained in the LSP_ATTRIBUTES object of a received Resv message. The presence of the RTM_SET TLV with the I bit set to 1 indicates that some RTM nodes along the LSP could not 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 ๐Ÿ“ฃ.

There are scenarios when some information is removed from an RRO due to policy processing (e.g., as may happen between providers), or the RRO is limited due to size constraints. Such changes affect the core assumption of this method and the processing of RTM packets, so yikes ๐Ÿ˜ฌ. RTM SHOULD NOT be used if it is not guaranteed that the RRO contains complete information ๐Ÿšซ.


4.4.1.1. RTM_SET Sub-TLVs

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 ๐Ÿ“œ.

The contents of an 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 (the smallest IPv4 sub-object) ๐Ÿงฉ.

Sub-TLVs are organized as a last-in-first-out stack. The first-out sub-TLV relative to the beginning of the 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 ๐Ÿฅž.

The RTM_SET TLV is intended to include the subset of the RRO sub-TLVs that represent those egress interfaces on the LSP that are RTM capable. After a node chooses an egress interface to use in the RRO sub-TLV, that same egress interface, if RTM capable, SHOULD be placed into the RTM_SET TLV using one of the following: IPv4 sub-TLV, IPv6 sub-TLV, or Unnumbered Interface sub-TLV. The address family chosen SHOULD match that of the RESV message and that used in the RRO. The unnumbered interface sub-TLV is used when the egress interface has no assigned IP address ๐ŸŒท. A node MUST NOT place more sub-TLVs in the RTM_SET TLV than the number of RTM-capable egress interfaces the LSP traverses that are under that node's control ๐Ÿšง. 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 with the same value (e.g., a duplicated address) is found, the LSP setup MUST fail with the generation of a ResvErr message with the Error Code "Duplicate sub-TLV" (Section 7.9) and the Error Value containing a 16-bit value composed of (Type of TLV, Type of sub-TLV) ๐Ÿ™…โ€โ™€๏ธ.

Three kinds of sub-TLVs for RTM_SET are currently defined ๐Ÿ’–.


4.4.1.1.1. IPv4 Sub-TLV

     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                            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 8: IPv4 Sub-TLV Format
  • Type: 0x01 IPv4 address. ๐ŸŒŸ
  • Length: The Length contains the total length of the sub-TLV in bytes, including the Type and Length fields. The Length is always 8. ๐Ÿ“
  • IPv4 address: A 32-bit unicast host address. ๐Ÿ 
  • Reserved: Zeroed on initiation and ignored on receipt. ๐Ÿซง

4.4.1.1.2. IPv6 Sub-TLV

     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                          |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 9: IPv6 Sub-TLV Format
  • Type: 0x02 IPv6 address. ๐ŸŒˆ
  • Length: The Length contains the total length of the sub-TLV in bytes, including the Type and Length fields. The Length is always 20. ๐Ÿ“
  • IPv6 address: A 128-bit unicast host address. ๐ŸŒ
  • Reserved: Zeroed on initiation and ignored on receipt. ๐Ÿซง

4.4.1.1.3. Unnumbered Interface Sub-TLV โœจ

Okay bestie, this is the Unnumbered Interface Sub-TLV ๐Ÿฆ‹ It's how you point at a link that doesn't have its own IP address. Here's the layout:

     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                            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 10: IPv4 Sub-TLV Format

Type is 0x03, which means Unnumbered interface ๐ŸŽ€

Length counts the whole sub-TLV in bytes, Type and Length fields included. It's always 12, so no surprises there ๐Ÿ’…

Node ID is interpreted as the Router ID, just like Section 2 of [RFC3477] explains ๐ŸŒธ

Interface ID is the identifier given to the link by whichever node the Node ID points to ๐Ÿงš

Reserved gets zeroed when it's created and gets ignored when it's received. Super chill ๐Ÿซถ


5. Data-Plane Theory of Operation ๐Ÿš€

Okay so once you've set up an LSP for a path with RSVP-TE [RFC3209] (see Section 4.4), the ingress node MAY start sending RTM packets to the first downstream RTM-capable node on that path ๐Ÿ’œ Each RTM packet has its Scratch Pad field set up, and its TTL is set so it expires at the next downstream RTM-capable node. Every RTM-capable node on the explicit path catches an RTM packet and notes two times: when it came in on the ingress interface, and when it goes out the egress interface. Main character energy ๐Ÿ‘‘

Now, these actions should be done as close to the physical layer as possible, at the same point in packet processing ๐Ÿ”ฅ The goal is to avoid making jitter show up in the propagation delay. Instead, that time gets counted as residence time. The RTM-capable node works out the difference between those two times. With one-step operation, that difference gets figured out just before or while the packet is sent, and the egress interface adds it to the value in the Scratch Pad field of the message in progress ๐Ÿ’– Also, for calculating residence time, a common free-running clock that syncs all the interfaces involved might be enough. For example, 4.6 ppm accuracy leads to a 4.6 nanosecond error for a residence time around 1 millisecond. That's probably fine for apps that want accuracy in the hundreds of nanoseconds range โœจ One example is wireless stuff, which is happy with 1.5 microseconds of accuracy, per [ITU-T.G.8271] ๐ŸŒˆ

For two-step operation, the difference between packet arrival time (at an ingress interface) and the later departure time (from an egress interface) gets worked out at some point before the follow-up message is sent. That way, the value can update the correctionField in the follow-up message ๐Ÿฆ‹

Check out Section 2.1 for more on one-step versus two-step operation ๐Ÿงš

The last RTM-capable node on the LSP MAY then use the value in the Scratch Pad field to do time correction, if there's no follow-up message. For example, the egress node might be a PTP boundary clock synced to a Master Clock, and it'll use the Scratch Pad value to update PTP's correctionField ๐Ÿซถ


6. Applicable PTP Scenarios ๐ŸŒธ

This approach plugs right into a PTP network that's based on the IEEE 1588 delay request-response mechanism ๐Ÿ’… The RTM-capable nodes act as end-to-end transparent clocks. Boundary clocks at the edges of the MPLS network usually use the Scratch Pad value to update the correctionField of the matching PTP event packet, and they do that before the usual PTP processing happens ๐ŸŽ€


7. IANA Considerations ๐Ÿ“‹

7.1. New RTM G-ACh ๐Ÿฆ‹

IANA has given a new G-ACh the following value ๐Ÿ’–

      +--------+----------------------------+---------------+
      | Value  |        Description         | Reference     |
      +--------+----------------------------+---------------+
      | 0x000F | Residence Time Measurement | This document |
      +--------+----------------------------+---------------+

              Table 1: New Residence Time Measurement

7.2. New MPLS RTM TLV Registry ๐ŸŒˆ

IANA made a sub-registry inside the "Generic Associated Channel (G-ACh) Parameters" registry, and it's called the "MPLS RTM TLV Registry" โœจ Every codepoint from 0 through 127 in this registry shall be allocated using the "IETF Review" procedure from [RFC5226]. Codepoints from 128 through 191 shall be allocated using the "First Come First Served" procedure from [RFC5226]. This document defines these new RTM TLV types ๐Ÿ‘‘

    +---------+-------------------------------+---------------+
    | Value   |          Description          | Reference     |
    +---------+-------------------------------+---------------+
    | 0       |            Reserved           | This document |
    | 1       |           No payload          | This document |
    | 2       | PTPv2, Ethernet encapsulation | This document |
    | 3       |   PTPv2, IPv4 encapsulation   | This document |
    | 4       |   PTPv2, IPv6 encapsulation   | This document |
    | 5       |              NTP              | This document |
    | 6-191   |           Unassigned          |               |
    | 192-254 |    Reserved for Private Use   | This document |
    | 255     |            Reserved           | This document |
    +---------+-------------------------------+---------------+

                      Table 2: RTM TLV Types

7.3. New MPLS RTM Sub-TLV Registry ๐Ÿงš

IANA made another sub-registry, this time inside the "MPLS RTM TLV Registry" (see Section 7.2). It's called the "MPLS RTM Sub-TLV Registry" ๐Ÿ’œ Codepoints 0 through 127 shall be allocated using the "IETF Review" procedure from [RFC5226]. Codepoints 128 through 191 shall be allocated using the "First Come First Served" procedure from [RFC5226]. These are the new RTM sub-TLV types this document defines ๐Ÿซถ

      +---------+--------------------------+---------------+
      | Value   |       Description        | Reference     |
      +---------+--------------------------+---------------+
      | 0       |         Reserved         | This document |
      | 1       |           PTP            | This document |
      | 2-191   |        Unassigned        |               |
      | 192-254 | Reserved for Private Use | This document |
      | 255     |         Reserved         | This document |
      +---------+--------------------------+---------------+

                     Table 3: RTM Sub-TLV Type

7.4. RTM Capability Sub-TLV in OSPFv2 ๐ŸŽ€

IANA gave a new type for the RTM Capability sub-TLV in the "OSPFv2 Extended Link TLV Sub-TLVs" registry ๐ŸŒธ

            +-------+----------------+---------------+
            | Value |  Description   | Reference     |
            +-------+----------------+---------------+
            | 5     | RTM Capability | This document |
            +-------+----------------+---------------+

                  Table 4: RTM Capability Sub-TLV

7.5. RTM Capability Sub-TLV in IS-IS ๐Ÿ’…

IANA gave a new type for the RTM Capability sub-TLV from the "Sub-TLVs for TLVs 22, 23, 141, 222, and 223" registry ๐Ÿฆ‹

+------+----------------+----+----+-----+-----+-----+---------------+
| Type |  Description   | 22 | 23 | 141 | 222 | 223 | Reference     |
+------+----------------+----+----+-----+-----+-----+---------------+
| 40   | RTM Capability | y  | y  | n   | y   | y   | This document |
+------+----------------+----+----+-----+-----+-----+---------------+

     Table 5: IS-IS RTM Capability Sub-TLV Registry Description

7.6. RTM Capability TLV in BGP-LS ๐ŸŒˆ

IANA gave a new codepoint for the RTM Capability TLV from the "BGP-LS Node Descriptor, Link Descriptor, Prefix Descriptor, and Attribute TLVs" sub-registry, which lives in the "Border Gateway Protocol - Link State (BGP-LS) Parameters" registry โœจ

+---------------+----------------+------------------+---------------+
| TLV Code      |  Description   |  IS-IS TLV/Sub-  | Reference     |
| Point         |                |       TLV        |               |
+---------------+----------------+------------------+---------------+
| 1105          | RTM Capability |      22/40       | This document |
+---------------+----------------+------------------+---------------+

                Table 6: RTM Capability TLV in BGP-LS

7.7. RTM_SET Sub-object RSVP Type and Sub-TLVs ๐Ÿ‘‘

IANA gave a new type for the RTM_SET sub-object from the RSVP-TE "Attributes TLV Space" sub-registry ๐Ÿซถ

+------+------------+-----------+---------------+-----------+----------+
| Type |    Name    |  Allowed  | Allowed on    | Allowed   | Reference|
|      |            | on LSP_   | LSP_REQUIRED_ | on LSP    |          |
|      |            | ATTRIBUTES|   ATTRIBUTES  | Hop       |          |
|      |            |           |               | Attributes|          |
+------+------------+-----------+---------------+-----------+----------+
| 5    |  RTM_SET   |    Yes    |       No      |    No     | This     |
|      | sub-object |           |               |           | document |
+------+------------+-----------+---------------+-----------+----------+

                     Table 7: RTM_SET Sub-object Type

IANA also made a new sub-registry for sub-TLV types of the RTM_SET sub-object, called the "RTM_SET Object Sub-Object Types" registry ๐Ÿ’– Codepoints 0 through 127 shall be allocated using the "IETF Review" procedure from [RFC5226]. Codepoints 128 through 191 shall be allocated using the "First Come First Served" procedure from [RFC5226]. These are the new RTM_SET object sub-object values this document defines ๐ŸŒธ

      +---------+--------------------------+---------------+
      | Value   |       Description        | Reference     |
      +---------+--------------------------+---------------+
      | 0       |         Reserved         | This document |
      | 1       |       IPv4 address       | This document |
      | 2       |       IPv6 address       | This document |
      | 3       |   Unnumbered interface   | This document |
      | 4-191   |        Unassigned        |               |
      | 192-254 | Reserved for Private Use | This document |
      | 255     |         Reserved         | This document |
      +---------+--------------------------+---------------+

             Table 8: RTM_SET Object Sub-object Types

7.8. RTM_SET Attribute Flag โœจ

okay so IANA has assigned a brand new flag in the RSVP-TE "Attribute Flags" registry ๐Ÿ’– bestie, that's an official stamp of approval ๐Ÿ’…

+-----+---------+-----------+-----------+-----+-----+---------------+
| Bit | Name    | Attribute | Attribute | RRO | ERO | Reference     |
| No  |         | Flags     | Flags     |     |     |               |
|     |         | Path      | Resv      |     |     |               |
+-----+---------+-----------+-----------+-----+-----+---------------+
| 15  | RTM_SET | Yes       | Yes       | No  | No  | This document |
+-----+---------+-----------+-----------+-----+-----+---------------+

                   Table 9: RTM_SET Attribute Flag

7.9. New Error Codes ๐Ÿšจ

IANA also added some new error codes to the RSVP "Error Codes and Globally-Defined Error Value Sub-Codes" registry. Three new ones, all pointing back to this doc ๐ŸŽ€

         +------------+--------------------+---------------+
         | Error Code | Meaning            | Reference     |
         +------------+--------------------+---------------+
         | 41         | Duplicate TLV      | This document |
         | 42         | Duplicate sub-TLV  | This document |
         | 43         | RTM_SET TLV Absent | This document |
         +------------+--------------------+---------------+

                      Table 10: New Error Codes

8. Security Considerations ๐Ÿ”

okay this section is serious, so listen up bestie ๐Ÿซถ

Routers that support RTM are subject to the same security considerations as defined in [RFC4385] and [RFC5085].

Now the big one ๐Ÿ˜ญ Especially when RTM is used with PTP, there's a presumed trust model. It depends on a trusted relationship with at least all of the PTP-aware nodes on the path that PTP messages travel. This is necessary because those nodes are expected to correctly modify specific content in PTP messages, and the protocol only works if they can do that. So in practice, those parts of the messages can't be covered by confidentiality or integrity protection. Yes, there are methods that could in theory give you either or both protections while still letting intermediate nodes make changes that can be detected but are authenticated, but they don't seem practical right now ๐Ÿ’€ especially for timing protocols that are sensitive to latency and/or jitter.

The ability to potentially authenticate and/or encrypt RTM and PTP data, for scenarios both with and without participation of intermediate RTM-/PTP-capable nodes, is left for further study. This is still an open question ๐Ÿ™ˆ

While it's possible for a supposedly compromised node to intercept and modify the G-ACh content, this is an issue that exists for nodes in general. It applies to any and all data that may be carried over an LSP, and that's the basis for an additional presumed trust model tied to existing LSPs and nodes ๐Ÿงš

Security requirements of time protocols are provided in RFC 7384 [RFC7384]. Go read that one too ๐Ÿ“š

9. References ๐Ÿ“–

9.1. Normative References

[IEEE.1588]
           IEEE, "IEEE Standard for a Precision Clock Synchronization
           Protocol for Networked Measurement and Control Systems",
           IEEE Std 1588-2008, DOI 10.1109/IEEESTD.2008.4579760.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <http://www.rfc-editor.org/info/rfc2119>.

[RFC3209]  Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
           and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
           Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
           <http://www.rfc-editor.org/info/rfc3209>.

[RFC3477]  Kompella, K. and Y. Rekhter, "Signalling Unnumbered Links
           in Resource ReSerVation Protocol - Traffic Engineering
           (RSVP-TE)", RFC 3477, DOI 10.17487/RFC3477, January 2003,
           <http://www.rfc-editor.org/info/rfc3477>.

[RFC4385]  Bryant, S., Swallow, G., Martini, L., and D. McPherson,
           "Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for
           Use over an MPLS PSN", RFC 4385, DOI 10.17487/RFC4385,
           February 2006, <http://www.rfc-editor.org/info/rfc4385>.

[RFC5085]  Nadeau, T., Ed. and C. Pignataro, Ed., "Pseudowire Virtual
           Circuit Connectivity Verification (VCCV): A Control
           Channel for Pseudowires", RFC 5085, DOI 10.17487/RFC5085,
           December 2007, <http://www.rfc-editor.org/info/rfc5085>.

[RFC5420]  Farrel, A., Ed., Papadimitriou, D., Vasseur, JP., and A.
           Ayyangarps, "Encoding of Attributes for MPLS LSP
           Establishment Using Resource Reservation Protocol Traffic
           Engineering (RSVP-TE)", RFC 5420, DOI 10.17487/RFC5420,
           February 2009, <http://www.rfc-editor.org/info/rfc5420>.

[RFC5586]  Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed.,
           "MPLS Generic Associated Channel", RFC 5586,
           DOI 10.17487/RFC5586, June 2009,
           <http://www.rfc-editor.org/info/rfc5586>.

[RFC5905]  Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch,
           "Network Time Protocol Version 4: Protocol and Algorithms
           Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010,
           <http://www.rfc-editor.org/info/rfc5905>.

[RFC6423]  Li, H., Martini, L., He, J., and F. Huang, "Using the
           Generic Associated Channel Label for Pseudowire in the
           MPLS Transport Profile (MPLS-TP)", RFC 6423,
           DOI 10.17487/RFC6423, November 2011,
           <http://www.rfc-editor.org/info/rfc6423>.

[RFC7684]  Psenak, P., Gredler, H., Shakir, R., Henderickx, W.,
           Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute
           Advertisement", RFC 7684, DOI 10.17487/RFC7684, November
           2015, <http://www.rfc-editor.org/info/rfc7684>.

[RFC7752]  Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and
           S. Ray, "North-Bound Distribution of Link-State and
           Traffic Engineering (TE) Information Using BGP", RFC 7752,
           DOI 10.17487/RFC7752, March 2016,
           <http://www.rfc-editor.org/info/rfc7752>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <http://www.rfc-editor.org/info/rfc8174>.

9.2. Informative References

[ITU-T.G.8271]
           ITU-T, "Time and phase synchronization aspects of packet
           networks", ITU-T Recomendation G.8271/Y.1366, July 2016.

[OSPFV3-EXTENDED-LSA]
           Lindem, A., Roy, A., Goethals, D., Vallem, V., and F.
           Baker, "OSPFv3 LSA Extendibility", Work in Progress,
           draft-ietf-ospf-ospfv3-lsa-extend-14, April 2017.

[RFC4202]  Kompella, K., Ed. and Y. Rekhter, Ed., "Routing Extensions
           in Support of Generalized Multi-Protocol Label Switching
           (GMPLS)", RFC 4202, DOI 10.17487/RFC4202, October 2005,
           <http://www.rfc-editor.org/info/rfc4202>.

[RFC5036]  Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed.,
           "LDP Specification", RFC 5036, DOI 10.17487/RFC5036,
           October 2007, <http://www.rfc-editor.org/info/rfc5036>.

[RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
           IANA Considerations Section in RFCs", BCP 26, RFC 5226,
           DOI 10.17487/RFC5226, May 2008,
           <http://www.rfc-editor.org/info/rfc5226>.

[RFC6374]  Frost, D. and S. Bryant, "Packet Loss and Delay
           Measurement for MPLS Networks", RFC 6374,
           DOI 10.17487/RFC6374, September 2011,
           <http://www.rfc-editor.org/info/rfc6374>.

[RFC7384]  Mizrahi, T., "Security Requirements of Time Protocols in
           Packet Switched Networks", RFC 7384, DOI 10.17487/RFC7384,
           October 2014, <http://www.rfc-editor.org/info/rfc7384>.

[TIMING-OVER-MPLS]
           Davari, S., Oren, A., Bhatia, M., Roberts, P., and L.
           Montini, "Transporting Timing messages over MPLS
           Networks", Work in Progress, draft-ietf-tictoc-
           1588overmpls-07, October 2015.

Acknowledgments ๐Ÿ™

The authors want to thank Loa Andersson, Lou Berger, Acee Lindem, Les Ginsberg, and Uma Chunduri for their thorough reviews, thoughtful comments, and, most of all, patience ๐Ÿซถ๐Ÿ’œ

Authors' Addresses ๐Ÿ’Œ

Greg Mirsky
ZTE Corp.

Email: gregimirsky@gmail.com


Stefano Ruffini
Ericsson

Email: stefano.ruffini@ericsson.com


Eric Gray
Ericsson

Email: eric.gray@ericsson.com


John Drake
Juniper Networks

Email: jdrake@juniper.net


Stewart Bryant
Huawei

Email: stewart.bryant@gmail.com


Alexander Vainshtein
ECI Telecom

Email: Alexander.Vainshtein@ecitele.com
       Vainshtein.alex@gmail.com
๐Ÿ“ฆ where this page comes from