RFC 3443
Time To Live (TTL) Processing in Multi-Protocol Label Switching (MPLS) Networks
RFC 3443 ๐ Time To Live (TTL) Processing in Multi-Protocol Label Switching (MPLS) Networks
part 1 of 2 ๐
Okay bestie, this RFC is the official Internet Standards Track doc from January 2003 ๐ฆ It was written by P. Agarwal from Brocade and B. Akyol from Cisco Systems, under the Network Working Group. It's Standards Track, so it's a real spec people implement, and it updates RFC 3032 (that's "MPLS Label Stack Encoding") โจ It's all about how TTL works in MPLS networks, and it's giving serious networking main character energy ๐
Status of This Memo
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. ๐ฎ
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved. ยฉ๏ธ๐ธ
Abstract
Okay so this doc describes Time To Live (TTL) processing in hierarchical Multi-Protocol Label Switching (MPLS) networks ๐ง It's motivated by the need to formalize a TTL-transparent mode of operation for an MPLS label-switched path. It updates RFC 3032, "MPLS Label Stack Encoding". TTL processing in both Pipe and Uniform Model hierarchical tunnels is specified, with examples for both "push" and "pop" cases. The doc also complements RFC 3270, "MPLS Support of Differentiated Services", and ties together the terminology introduced in that document with TTL processing in hierarchical MPLS networks. It's a whole glow-up for TTL handling ๐
Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC-2119]. ๐ซถ
1. Introduction and Motivation
Hiii, so this document describes TTL processing in hierarchical MPLS networks ๐ธ The authors believe it adds details that haven't been addressed in [MPLS-ARCH, MPLS-ENCAPS], and that the methods here complement [MPLS-DS]. No cap, it fills in gaps ๐
Here's the big new thing: a new mode of operation, called the Pipe Model, is introduced. It supports the practice of configuring MPLS LSPs so that packets transiting the LSP see the tunnel as a single hop, no matter how many intermediary label switch routers (LSR) are in the middle ๐ฆ The Pipe Model for TTL is already being used in multiple networks, and several vendors provide it as an option that the network operator can configure โจ
This document formalizes TTL processing in MPLS networks and ties it to the terminology introduced in [MPLS-DS]. Periodt ๐
2. TTL Processing in MPLS Networks
2.1. Changes to RFC 3032 [MPLS-ENCAPS]
a) [MPLS-ENCAPS] only covers the Uniform Model and does not address the Pipe Model or the Short Pipe Model. This document addresses these two models and, for completeness, will also address the Uniform Model ๐
b) [MPLS-ENCAPS] does not cover hierarchical LSPs. This document addresses this issue. ๐
c) [MPLS-ENCAPS] does not define TTL processing in the presence of Penultimate Hop Popping (PHP). This document addresses this issue. ๐โก๏ธโจ
2.2. Terminology and Background
As defined in [MPLS-ENCAPS], MPLS packets use an MPLS shim header that indicates the following information about a packet:
a) MPLS Label (20 bits) b) TTL (8 bits) c) Bottom of stack (1 bit) d) Experimental bits (3 bits)
The experimental bits were later redefined in [MPLS-DS] to indicate the scheduling and shaping behavior that could be associated with an MPLS packet. Glow-up era ๐
[MPLS-DS] also defined two models for MPLS tunnel operation: Pipe and Uniform Models. In the Pipe Model, an MPLS network acts like a circuit when MPLS packets traverse it, so only the LSP ingress and egress points are visible to nodes outside the tunnel ๐ A Short variation of the Pipe Model is also defined in [MPLS-DS] to differentiate between different egress forwarding and QoS treatments. The Uniform Model, on the other hand, makes all the nodes that an LSP traverses visible to nodes outside the tunnel ๐ This document extends the Pipe and Uniform Models to include TTL processing in the following sections. TTL processing when performing PHP is also described here. For a detailed description of the Pipe and Uniform Models, please see [MPLS-DS]. ๐
TTL processing in MPLS networks can be broken down into two logical blocks: (i) the incoming TTL determination, which takes into account any tunnel egress due to MPLS Pop operations; and (ii) packet processing of (possibly) exposed packets and outgoing TTLs. Two steps, super clean ๐ง
We also note that signaling the LSP type (Pipe, Short Pipe or Uniform Model) is out of the scope of this document. It isn't addressed in the current versions of the label distribution protocols either, e.g. LDP [MPLS-LDP] and RSVP-TE [MPLS-RSVP]. Right now, the LSP type is configured manually by the network operator, by means of either a command line or a network management interface ๐ ๏ธ
2.3. New Terminology
Here are the new terms, bestie ๐
- iTTL: The TTL value to use as the incoming TTL. No checks are performed on the iTTL.
- oTTL: The TTL value used as the outgoing TTL value (see section 3.5 for exception). It is always (iTTL - 1) unless otherwise stated.
- oTTL Check: Check if oTTL is greater than 0. If the oTTL Check is false, then the packet is not forwarded. The oTTL check is performed only if any outgoing TTL (either IP or MPLS) is set to oTTL (see section 3.5 for exception). โ
3. TTL Processing in different Models
This section describes the TTL processing for LSPs conforming to each of the 3 models (Uniform, Short Pipe and Pipe) in the presence or absence of PHP, where applicable. Three models, three vibes ๐
3.1. TTL Processing for Uniform Model LSPs (with or without PHP)
(consistent with [MPLS-ENCAPS]):
========== LSP =============================>
+--Swap--(n-2)-...-swap--(n-i)---+
/ (outer header) \
(n-1) (n-i)
/ \
>--(n)--Push...............(x).....................Pop--(n-i-1)->
(I) (inner header) (E or P)
(n) represents the TTL value in the corresponding header (x) represents non-meaningful TTL information (I) represents the LSP ingress node (P) represents the LSP penultimate node (E) represents the LSP Egress node
This picture shows TTL processing for a Uniform Model MPLS LSP. Notice that the inner and outer TTLs of the packets are synchronized at tunnel ingress and egress. Matching energy, every time ๐ซถ๐
3.2. TTL Processing for Short Pipe Model LSPs
3.2.1. TTL Processing for Short Pipe Model LSPs without PHP
========== LSP =============================>
+--Swap--(N-1)-...-swap--(N-i)-----+
/ (outer header) \
(N) (N-i)
/ \
>--(n)--Push...............(n-1).....................Pop--(n-2)->
(I) (inner header) (E)
(N) represents the TTL value (may have no relationship to n) (n) represents the tunneled TTL value in the encapsulated header (I) represents the LSP ingress node (E) represents the LSP Egress node
The Short Pipe Model was introduced in [MPLS-DS]. In the Short Pipe Model, the forwarding treatment at the egress LSR is based on the tunneled packet, as opposed to the encapsulating packet. Its the packet inside that gets the final say ๐
3.2.2. TTL Processing for Short Pipe Model with PHP:
========== LSP =====================================>
+-Swap-(N-1)-...-swap-(N-i)-+
/ (outer header) \
(N) (N-i)
/ \
>--(n)--Push.............(n-1)............Pop-(n-1)-Decr.-(n-2)->
(I) (inner header) (P) (E)
(N) represents the TTL value (may have no relationship to n) (n) represents the tunneled TTL value in the encapsulated header (I) represents the LSP ingress node (P) represents the LSP penultimate node (E) represents the LSP egress node.
Since the label has already been popped by the LSP's penultimate node, the LSP egress node just decrements the header TTL. Simple, but make it make sense ๐
Also note that at the end of the Short Pipe Model LSP, the TTL of the tunneled packet has been decremented by two, with or without PHP. Two hops of TTL gone, and that's the tea โ
3.3. TTL Processing for Pipe Model LSPs (without PHP only):
========== LSP =============================>
+--Swap--(N-1)-...-swap--(N-i)-----+
/ (outer header) \
(N) (N-i)
/ \
>--(n)--Push...............(n-1)....................Pop--(n-2)->
(I) (inner header) (E)
(N) represents the TTL value (may have no relationship to n) (n) represents the tunneled TTL value in the encapsulated header (I) represents the LSP ingress node (E) represents the LSP Egress node
From the TTL perspective, the treatment for a Pipe Model LSP is identical to the Short Pipe Model without PHP. Same energy, different name ๐ฆ
3.4. Incoming TTL (iTTL) determination
If the incoming packet is an IP packet, then the iTTL is the TTL value of the incoming IP packet. ๐ธ
If the incoming packet is an MPLS packet and we are performing a Push, Swap or PHP, then the iTTL is the TTL of the topmost incoming label. ๐ท๏ธ
If the incoming packet is an MPLS packet and we are performing a Pop (tunnel termination), the iTTL is based on the tunnel type (Pipe or Uniform) of the LSP that was popped. If the popped label belonged to a Pipe Model LSP, then the iTTL is the value of the TTL field of the header, exposed after the label was popped. (Note that for the purpose of this document, the exposed header may be either an IP header or an MPLS label.) If the popped label belonged to a Uniform Model LSP, then the iTTL is equal to the TTL of the popped label. ๐
If multiple Pop operations are performed sequentially, then the procedure given above is repeated with one exception: the iTTL computed during the previous Pop is used as the TTL of subsequent labels being popped. In other words, the TTL contained in the subsequent label is essentially ignored and replaced with the iTTL computed during the previous pop. Plot twist, the earlier number wins ๐งโจ
3.5. Outgoing TTL Determination and Packet Processing โจ
okay so once iTTL is sorted out, the oTTL check runs next ๐ฅ If that check passes, we work out the outgoing TTL for the packet (labeled or unlabeled) and update the headers ๐
If the packet got routed as a plain IP packet, the IP TTL gets set to oTTL (iTTL - 1) ๐ฆ and the TTL for any pushed labels gets worked out the way section 3.6 describes.
For packets routed as MPLS, there are four cases ๐ธ
- Swap-only: the routed label gets swapped for another label, and the TTL field of the outgoing label is set to oTTL.
- Swap followed by a Push: the swap happens exactly like in (1). The TTL value(s) of any pushed label(s) get determined as described in section 3.6.
- Penultimate Hop Pop (PHP): the routed label gets popped. The oTTL check should be performed no matter what, even if oTTL isn't going to be used to update the TTL field of the outgoing header ๐ If the PHPed label belonged to a Short Pipe Model LSP, the TTL field of the PHP exposed header is neither checked nor updated ๐ If the PHPed label was a Uniform Model LSP, the TTL field of the PHP exposed header is set to the oTTL. The TTL value(s) of any additional labels are determined as described in section 3.6.
- Pop: the pop happens before routing, so it doesn't come into this discussion ๐
3.6. Tunnel Ingress Processing (Push) ๐ง
For each pushed Uniform Model label, the TTL gets copied from the label or IP packet sitting right underneath it ๐ซถ
For each pushed Pipe Model or Short Pipe Model label, the TTL field gets set to a value the network operator configures. In most implementations, that value is 255 by default ๐
3.7. Implementation Remarks ๐
- Okay, so iTTL can be decremented by more than 1 while it's being updated or while oTTL is being determined. But this feature should be only used for compensating for network nodes that are not capable of decrementing TTL values. Don't go using it for fun ๐ โโ๏ธ
- Whenever iTTL is decremented, the implementer must make sure that the value does not become negative. Negative TTLs are a no ๐
- In the Short Pipe Model with PHP enabled, the TTL of the tunneled packet is unchanged after the PHP operation โจ
4. Conclusion ๐ธ
bestie, this Internet Document explains how the TTL field can be processed in an MPLS network ๐ฆ We went through the different methods that get used when there are hierarchical tunnels, and we finished tying Pipe and Uniform Models into TTL processing. iconic work, honestly ๐
5. Security Considerations ๐ฅ
okay, the serious part ๐ซถ This document doesn't add any new security issues beyond the ones already defined in [MPLS-ENCAPS, MPLS-DS]. It doesn't define a new protocol or expand an existing one, and it doesn't introduce security problems into the existing protocols. The authors believe that clarifying TTL handling in MPLS networks helps service providers and their customers, because troubleshooting becomes simpler ๐
6. References ๐
6.1. Normative References
[RFC-2119] Bradner, S. "Key words for use in RFC's to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[MPLS-ARCH] Rosen, E., Viswanathan, A. and R. Callon,
"Multiprotocol Label Switching Architecture", RFC 3031,
January 2001.
[MPLS-ENCAPS] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
Farinacci, D., Li, T. and A. Conta, "MPLS Label Stack
Encoding", RFC 3032, January 2001.
[MPLS-DS] Le Faucheur, F., Wu, L., Davie, B., Davari, S.,
Vaananen, P., Krishnan, R., Cheval, P. and J. Heinanen,
"Multi-Protocol Label Switching (MPLS) Support of
Differentiated Services", RFC 3270, May 2002.
6.2. Informative References
[MPLS-LDP] Andersson, L., Doolan, P., Feldman, N., Fredette, A.
and B. Thomas, "LDP Specification", RFC 3036, January
2001.
[MPLS-RSVP] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan,
V. and G. Swallow, "RSVP-TE: Extensions to RSVP for
LSP Tunnels", RFC 3209, December 2001.
7. Acknowledgements ๐ซถ
The authors want to thank the members of the MPLS working group for their feedback ๐ Shahram Davari and Loa Andersson get a special shoutout for their careful review of the document and their comments ๐
8. Author's Addresses ๐
Puneet Agarwal
Brocade Communications Systems, Inc.
1745 Technology Drive
San Jose, CA 95110
EMail: puneet@acm.org
Bora Akyol
Cisco Systems
170 W. Tasman Drive
San Jose, CA 95134
EMail: bora@cisco.com
9. Full Copyright Statement ๐
the legal stuff stays exactly as written, no edits ๐
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement ๐ท
Funding for the RFC Editor function is currently provided by the Internet Society ๐
๐ฆ where this page comes from
- ietf: rfc3443 2003-01
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms