RFC 3212

Constraint-Based LSP Setup using LDP

๐Ÿ“… published January 2002, from ietf

RFC 3212: Constraint-Based LSP Setup using LDP ๐Ÿ’–

Part 1 of 8 ๐ŸŽ€

Okay bestie, this is the RFC for Constraint-Based LSP Setup using LDP ๐Ÿฆ‹, and it's a Standards Track document from January 2002. The Network Working Group published it. B. Jamoussi (Nortel Networks) is the editor, and the rest of the crew is L. Andersson (Utfors AB), R. Callon (Juniper Networks), R. Dantu (Netrake Corporation), L. Wu (Cisco Systems), P. Doolan (OTB Consulting Corp.), T. Worster, N. Feldman (IBM Corp.), A. Fredette (ANF Consulting), M. Girish (Atoga Systems), E. Gray (Sandburst), J. Heinanen (Song Networks, Inc.), T. Kilty (Newbridge Networks, Inc.), and A. Malis (Vivace Networks). It doesn't obsolete or update anything, since the header doesn't list any. ๐ŸŒธ

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements. ๐Ÿ’… For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited. โœจ

Copyright (C) The Internet Society (2002). All Rights Reserved. ๐Ÿ”ฅ

Abstract

Okay so this doc lays out the mechanisms and TLVs (Type/Length/Value) that support CR-LSPs (constraint-based routed Label Switched Path) using LDP (Label Distribution Protocol). ๐Ÿงš

It proposes an end-to-end setup mechanism for a CR-LSP that the ingress LSR (Label Switching Router) starts. It also specifies mechanisms for reserving resources using LDP. It's giving main character energy ๐Ÿ‘‘

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 [6]. ๐Ÿ’œ

Table of Contents

1. Introduction....................................................3
2. Constraint-based Routing Overview...............................4
2.1 Strict and Loose Explicit Routes...............................5
2.2 Traffic Characteristics........................................5
2.3 Preemption.....................................................5
2.4 Route Pinning..................................................6
2.5 Resource Class.................................................6
3. Solution Overview...............................................6
3.1 Required Messages and TLVs.....................................7
3.2 Label Request Message..........................................7
3.3 Label Mapping Message..........................................9
3.4 Notification Message..........................................10
3.5 Release , Withdraw, and Abort Messages........................11
4. Protocol Specification.........................................11
4.1 Explicit Route TLV (ER-TLV)...................................11
4.2 Explicit Route Hop TLV (ER-Hop TLV)...........................12
4.3 Traffic Parameters TLV........................................13
4.3.1 Semantics...................................................15
4.3.1.1 Frequency.................................................15
4.3.1.2 Peak Rate.................................................16
4.3.1.3 Committed Rate............................................16
4.3.1.4 Excess Burst Size.........................................16
4.3.1.5 Peak Rate Token Bucket....................................16
4.3.1.6 Committed Data Rate Token Bucket..........................17
4.3.1.7 Weight....................................................18
4.3.2 Procedures..................................................18
4.3.2.1 Label Request Message.....................................18
4.3.2.2 Label Mapping Message.....................................18
4.3.2.3 Notification Message......................................19
4.4 Preemption TLV................................................19
4.5 LSPID TLV.....................................................20
4.6 Resource Class (Color) TLV....................................21
4.7 ER-Hop semantics..............................................22
4.7.1. ER-Hop 1: The IPv4 prefix..................................22
4.7.2. ER-Hop 2: The IPv6 address.................................23
4.7.3. ER-Hop 3:  The autonomous system number....................24
4.7.4. ER-Hop 4: LSPID............................................24
4.8. Processing of the Explicit Route TLV.........................26
4.8.1. Selection of the next hop..................................26
4.8.2. Adding ER-Hops to the explicit route TLV...................27
4.9 Route Pinning TLV.............................................28
4.10 CR-LSP FEC Element...........................................28
5. IANA Considerations............................................29
5.1 TLV Type Name Space...........................................29
5.2 FEC Type Name Space...........................................30
5.3 Status Code Space.............................................30
6. Security Considerations........................................31
7. Acknowledgments................................................31
8. Intellectual Property Consideration............................31
9. References.....................................................32
Appendix A: CR-LSP Establishment Examples.........................33
A.1 Strict Explicit Route Example.................................33
A.2 Node Groups and Specific Nodes Example........................34
Appendix B. QoS Service Examples..................................36
B.1 Service Examples..............................................36
B.2 Establishing CR-LSP Supporting Real-Time Applications.........38
B.3 Establishing CR-LSP Supporting Delay Insensitive Applications.38
Author's Addresses................................................39
Full Copyright Statement..........................................42

1. Introduction โœจ

LDP (Label Distribution Protocol) is defined in [1] for handing out labels inside one MPLS domain. ๐Ÿ“ One of the most important things MPLS can do, and LDP especially, is support constraint-based routing of traffic across the routed network. Constraint-based routing lets you extend the info used to set up paths past what the routing protocol has. For example, an LSP can be set up based on explicit route constraints, QoS constraints, and other constraints. Constraint-based routing (CR) is a mechanism for meeting the Traffic Engineering requirements proposed by [2] and [3]. LDP can be extended to meet those requirements, so it supports constraint-based routed label switched paths (CR-LSPs). CR-LSPs also work for other things, like MPLS-based VPNs [4]. You can read more about where CR-LDP applies in [5]. ๐Ÿฆ‹

CR in MPLS has been explored elsewhere in [2] and [3]. Explicit routing is a subset of the bigger constraint-based routing function. At the MPLS WG meeting in Washington IETF (December 1997), the group agreed that LDP should support explicit routing of LSPs, with a way to indicate associated (forwarding) priority. Then at the Chicago meeting (August 1998), they decided explicit path setup in LDP would move to its own document. ๐Ÿ“š That's this document. It was accepted as a working document at the Orlando meeting (December 1998). ๐Ÿ’…

Here's the deal: this specification proposes an end-to-end setup mechanism for a constraint-based routed LSP (CR-LSP) that the ingress LSR starts. It also specifies mechanisms for reserving resources using LDP. ๐ŸŒˆ

This document introduces TLVs and procedures that support:

  • Strict and Loose Explicit Routing
  • Specification of Traffic Parameters
  • Route Pinning
  • CR-LSP Preemption though setup/holding priorities
  • Handling Failures
  • LSPID
  • Resource Class

Section 2 introduces the various constraints defined here. Section 3 outlines the CR-LDP solution. Section 4 defines the TLVs and procedures used to set up constraint-based routed label switched paths. Appendix A has several examples of CR-LSP path setup, and Appendix B has Service Definition Examples. ๐Ÿซถ

2. Constraint-based Routing Overview ๐ŸŒธ

Constraint-based routing is a mechanism that supports the Traffic Engineering requirements defined in [3]. Explicit Routing is a subset of the more general constraint-based routing, where the constraint is the explicit route (ER). Other constraints exist to give a network operator control over the path an LSP takes. This section gives an overview of the constraints this specification supports. ๐Ÿงš

Like any other LSP, a CR-LSP is a path through an MPLS network. The difference is that other paths are set up purely from routing tables or a management system, while the constraint-based route is calculated at one point at the edge of network, based on criteria that include, but aren't limited to, routing information. ๐Ÿ’– The goal is that this functionality shall give special characteristics to the LSP so it better supports the traffic sent over it. People set up CR-LSPs because they want to assign certain bandwidth or other Service Class characteristics to the LSP, or because they want alternative routes to use physically separate paths through the network. โœจ

2.1 Strict and Loose Explicit Routes ๐Ÿฆ‹

An explicit route is represented in a Label Request Message as a list of nodes, or groups of nodes, along the constraint-based route. When the CR-LSP is established, all or a subset of the nodes in a group may be traversed by the LSP. Certain operations to be performed along the path can also be encoded in the constraint-based route. ๐Ÿ”ฅ

Being able to specify groups of nodes, as well as specific nodes, gives the system a lot of local flexibility when it fulfils a constraint-based route request. A subset of each group will be traversed, so the system can choose. This also lets the generator of the constraint-based route work with some imperfect information about the details of the path. ๐Ÿ’…

The constraint-based route is encoded as a series of ER-Hops inside a constraint-based route TLV. Each ER-Hop may identify a group of nodes in the constraint-based route. The constraint-based route is then a path that includes all the identified groups of nodes, in the order they appear in the TLV. ๐ŸŽ€

To keep things simple, each group of nodes is called an "abstract node". So you can also say a constraint-based route is a path including all of the abstract nodes, with the specified operations happening along that path. ๐Ÿ‘‘

Part 1 done! Parts 2 through 8 are still coming, so stay tuned, bestie ๐Ÿซถ๐Ÿ’–

2.2 Traffic Characteristics ๐ŸŽ€

okay so the traffic stuff for a path lives in the Traffic Parameters TLV ๐Ÿ’… It's described with three things: a peak rate, a committed rate, and a service granularity. The peak and committed rates are the bandwidth limits for a path, and the service granularity is how you put a limit on the delay variation the CR-LDP MPLS domain might add to a path's traffic ๐Ÿฆ‹


2.3 Preemption โœจ

okay this one is giving drama ๐Ÿ”ฅ CR-LDP reserves the resources a path needs on every hop of its route. But what if there's no route with enough room? Then existing paths can get rerouted so their resources get freed up for the new path. That's preemption ๐Ÿ‘‘

Priorities decide who gets bumped. Existing paths are ranked by their holding priority, and the new path is ranked by its setup priority, and that's how you figure out whether the new path is allowed to kick an existing one off ๐Ÿ’œ The setupPriority of a new CR-LSP and the holdingPriority of an existing CR-LSP are the attributes that carry these values. A higher holding priority means the path, once it's up, is less likely to get preempted ๐Ÿงš A higher setup priority means that when resources are scarce, the path is more likely to bump other paths ๐ŸŒธ Exactly how bumping works is up to network policy, so that part's not set in stone.

Which setup and holding values you hand out to which paths? Also network policy, babe ๐Ÿ“

Priority values run from zero (0) to seven (7). Zero is the most important path and it's called the highest priority. Seven is the least important one โœจ Default values are also up to network policy, but the recommended default is (4) ๐Ÿ’–

And ngl, here's the big rule: the setupPriority of a CR-LSP should not be higher (numerically less) than its holdingPriority. If it were, the path could bump an LSP and then get bumped by the next "equivalent" request, and that's a whole mess ๐Ÿ˜ญ


2.4 Route Pinning ๐Ÿฆ‹

Route pinning is for the loosely routed bits of an LSP. Those are the segments where the next hop is marked with the L bit set, or where the next hop is an abstract node ๐ŸŒˆ So say you'd rather not switch the path even when a better next hop shows up somewhere along that loose part. You can set up a CR-LSP with route pinning to keep things steady ๐Ÿซถ


2.5 Resource Class ๐ŸŒธ

The network operator can sort network resources into classes in a bunch of different ways. You'll also see these called "colors" or "administrative groups" ๐ŸŽจ When you're establishing a CR-LSP, you have to say which resource classes that CR-LSP is allowed to draw from. Think of it like a guest list for the resources ๐Ÿ’…


3. Solution Overview ๐Ÿงš

The CR-LSP over LDP spec has three main goals, babes:

  1. Meet the requirements outlined in [3] for doing traffic engineering, and give us a solid base for doing more general constraint-based routing ๐Ÿ’–
  2. Build on stuff that's already specified and already does the job, wherever that's possible. That's why this spec is built on [1] ๐Ÿซถ
  3. Keep the solution simple ๐Ÿ“

Quick scope check: this document only specifies support for unidirectional point-to-point CR-LSPs. Point-to-multipoint and multipoint-to-point are for further study (FFS) ๐Ÿ”ฎ

Support for constraint-based routed LSPs here depends on these minimal LDP behaviors from [1]:

  • Use of Basic and/or Extended Discovery Mechanisms.
  • Use of the Label Request Message defined in [1] in downstream on demand label advertisement mode with ordered control.
  • Use of the Label Mapping Message defined in [1] in downstream on demand mode with ordered control.
  • Use of the Notification Message defined in [1].
  • Use of the Withdraw and Release Messages defined in [1].
  • Use of the Loop Detection (in the case of loosely routed segments of a CR-LSP) mechanisms defined in [1].

On top of what [1] already does, this spec adds a few new things ๐Ÿ’œ

  • The Label Request Message used to set up a CR-LSP has one or more CR-TLVs from Section 4. For example, the Label Request Message might include the ER-TLV ๐Ÿ‘‘
  • An LSR works out ordered control all by itself, just from seeing one or more CR-TLVs in the Label Request Message. An LSR can still be configured for independent control for LSPs that come from dynamic routing ๐Ÿงš But if a Label Request Message has one or more CR-TLVs, then ordered control is what sets up the CR-LSP. This is also true for the loosely routed parts of a CR-LSP ๐ŸŒˆ
  • There are new status codes for error notifications when an established path that's specified in the CR-TLVs fails. All the new status codes require the F bit to be set ๐Ÿ”ฅ

Optional TLVs MUST be implemented to be compliant with the protocol. They're still optional to actually carry in the CR-LDP messages, though, and they're how you signal certain characteristics of the CR-LSP being set up or changed ๐Ÿฆ‹

Examples of CR-LSP establishment are in Appendix A, so you can see how all these mechanisms actually work together โœจ


3.1 Required Messages and TLVs ๐Ÿ’…

Anything about Messages, TLVs, and procedures that isn't explicitly defined in this document is defined in the LDP Specification [1]. If you want an informational doc on the state transitions tied to CR-LDP messages, check out [7] ๐ŸŒธ

The subsections below are basically a cross-reference to [1], plus any extra functionality beyond [1] that's needed ๐ŸŽ€

Heads up: the Status TLV isn't only for Notification messages, as Section 3.4.6 of [1] describes. A message other than a Notification can carry a Status TLV as an Optional Parameter ๐Ÿ‘€ When that happens, the U-bit of the Status TLV should be set to 1, which tells the receiver it can quietly drop the TLV if it's not ready to handle it ๐Ÿ™ˆ


3.2 Label Request Message ๐Ÿ’–

The Label Request Message is as defined in 3.5.8 of [1], with these changes (they only kick in if any of the CR-TLVs is included in the Label Request Message) โœจ

  • The Label Request Message MUST include a single FEC-TLV element. The CR-LSP FEC TLV element SHOULD be used. The other FEC-TLVs defined in [1] MAY be used instead for certain applications ๐Ÿฆ‹
  • The Optional Parameters TLV includes the definition of any of the Constraint-based TLVs specified in Section 4 ๐Ÿงš
  • The procedures for handling the Label Request Message get augmented by the CR-TLV procedures in Section 4 ๐ŸŒˆ

Here's how the CR-LDP Label Request Message is encoded ๐Ÿซถ

   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|   Label Request (0x0401)   |      Message Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Message ID                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     FEC TLV                                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     LSPID TLV            (CR-LDP, mandatory)  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     ER-TLV               (CR-LDP, optional)   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Traffic  TLV         (CR-LDP, optional)   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Pinning TLV          (CR-LDP, optional)   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Resource Class TLV (CR-LDP, optional)     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Preemption  TLV      (CR-LDP, optional)   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.3 Label Mapping Message ๐ŸŒธ

The Label Mapping Message is as defined in 3.5.7 of [1], with these changes ๐ŸŽ€

  • The Label Mapping Message MUST include a single Label-TLV ๐Ÿ’…
  • The Label Mapping Message procedures are limited to downstream on demand ordered control mode ๐Ÿงš

A Mapping message gets sent from a downstream LSR to an upstream LSR under either of these conditions ๐ŸŒˆ

  1. The LSR is the egress end of the CR-LSP and an upstream mapping has been requested.
  2. The LSR got a mapping from its downstream next hop LSR for a CR-LSP where an upstream request is still pending.

And here's the CR-LDP Label Mapping Message encoding ๐Ÿฆ‹

   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|   Label Mapping (0x0400)   |      Message Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Message ID                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     FEC TLV                                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Label TLV                                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |              Label Request Message ID TLV                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     LSPID TLV            (CR-LDP, optional)   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Traffic  TLV         (CR-LDP, optional)   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.4 Notification Message โœจ

okay so the Notification Message is defined in Section 3.5.1 of [1], and the Status TLV encoding is defined in Section 3.4.6 of [1] ๐Ÿ’… Setting up a CR-LSP can fail for lots of reasons, and every one of those failures counts as an advisory condition. The Notification Message is how they get reported ๐Ÿ”ฅ

Notification Messages carry Status TLVs to say which event is being signaled. New status codes are defined in Section 4.11 for error notifications about establishing a CR-LSP and processing the CR-TLV ๐ŸŽ€ Every single one of the new status codes requires that the F bit be set, no exceptions bestie ๐Ÿซถ

The Notification Message MAY carry the LSPID TLV of the corresponding CR-LSP ๐Ÿฆ‹

Notification Messages MUST be forwarded toward the LSR originating the Label Request at each hop, and at any time that procedures in this specification - or in [1] - specify sending a Notification Message in response to a Label Request Message โœจ

The encoding of the notification message looks like this ๐Ÿ‘‘

    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|   Notification (0x0001)     |      Message Length           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Message ID                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Status (TLV)                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Optional Parameters                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.5 Release , Withdraw, and Abort Messages ๐ŸŒธ

The Label Release , Label Withdraw, and Label Abort Request Messages work exactly as specified in [1], so no glow-up needed there ๐Ÿ’– These messages MAY also carry the LSPID TLV ๐Ÿงš


4. Protocol Specification โœจ

The Label Request Message defined in [1] MUST carry the LSPID TLV, and it MAY carry one or more of the optional Constraint-based Routing TLVs (CR-TLVs) defined in this section ๐Ÿ’œ If we ever need more constraints, we can add them later by defining new TLVs, which is very giving future-proof energy ๐Ÿ”ฎ In this specification, these are the TLVs defined:

  • Explicit Route TLV
  • Explicit Route Hop TLV
  • Traffic Parameters TLV
  • Preemption TLV
  • LSPID TLV
  • Route Pinning TLV
  • Resource Class TLV
  • CR-LSP FEC TLV

4.1 Explicit Route TLV (ER-TLV) ๐Ÿ—บ๏ธ

okay so the ER-TLV is the object that spells out the path the LSP is going to take ๐Ÿฆ‹ It's made up of one or more Explicit Route Hop TLVs (ER-Hop TLVs), which we get to in Section 4.2 ๐Ÿ’…

    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|         Type = 0x0800     |      Length                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          ER-Hop TLV 1                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          ER-Hop TLV 2                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                          ............                         ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          ER-Hop TLV n                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type ๐ŸŽ€ A fourteen-bit field carrying the value of the ER-TLV, which is Type = 0x0800.

Length ๐Ÿ“ Tells you the length of the value field in bytes.

ER-Hop TLVs ๐Ÿซถ One or more ER-Hop TLVs, defined in Section 4.2.


4.2 Explicit Route Hop TLV (ER-Hop TLV) ๐Ÿงฉ

The contents of an ER-TLV are a series of variable length ER-Hop TLVs ๐ŸŒˆ

A node that gets a label request message containing an ER-Hop type it doesn't support MUST not progress the label request message to the downstream LSR, and it MUST send back a "No Route" Notification Message ๐Ÿ’€ that's a hard stop, bestie ๐Ÿ™ˆ

Each ER-Hop TLV has this form โœจ

    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|                 Type      |      Length                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |L|                                  Content //                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ER-Hop Type ๐Ÿ”ฅ A fourteen-bit field carrying the type of the ER-Hop contents. These are the values defined so far:

         Value  Type
         ------ ------------------------
         0x0801 IPv4 prefix
         0x0802 IPv6 prefix
         0x0803 Autonomous system number
         0x0804 LSPID

Length ๐Ÿ“ Tells you the length of the value field in bytes.

L bit ๐Ÿฆ‹ The L bit in the ER-Hop is a one-bit attribute. If the L bit is set, the attribute is "loose." If it isn't set, the attribute is "strict." For brevity, an ER-Hop with the loose attribute is a "loose ER-Hop," and otherwise it's a "strict ER-Hop." The abstract node of a strict or loose ER-Hop is then called a strict or loose node, respectively ๐Ÿ’… Loose and strict nodes are always interpreted relative to their prior abstract nodes. The path between a strict node and its prior node MUST include only network nodes from the strict node and its prior abstract node ๐Ÿšซ

The path between a loose node and its prior node MAY include other network nodes, which are not part of the strict node or its prior abstract node ๐ŸŒŠ

Contents ๐Ÿงš A variable length field holding a node or abstract node, which is one of the consecutive nodes that make up the explicitly routed LSP.


4.3 Traffic Parameters TLV ๐Ÿ’ธ

The next few sections are all about the CR-LSP Traffic Parameters ๐Ÿ’– The Traffic Parameter values are how you express what the CR-LSP needs in order to behave ๐Ÿ”ฅ Each one gets its own subsection below.

A Traffic Parameters TLV is what carries those values around ๐ŸŽ€ The Traffic Parameters TLV has a Flags field, a Frequency, a Weight, and the five Traffic Parameters: PDR, PBS, CDR, CBS, and EBS ๐Ÿซถ

    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|        Type = 0x0810      |      Length = 24              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Flags     |    Frequency  |     Reserved  |    Weight     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Peak Data Rate (PDR)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Peak Burst Size (PBS)                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Committed Data Rate (CDR)                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Committed Burst Size (CBS)                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Excess Burst Size (EBS)                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type ๐ŸŒธ A fourteen-bit field carrying the value of the Traffic Parameters TLV, which is Type = 0x0810.

Length ๐Ÿ“ Tells you the length of the value field in bytes, which is 24.

Flags ๐Ÿ‘‘ The Flags field looks like this:

         +--+--+--+--+--+--+--+--+
         | Res |F6|F5|F4|F3|F2|F1|
         +--+--+--+--+--+--+--+--+
  • Res - These bits are reserved. Zero on transmission. Ignored on receipt.
  • F1 - Corresponds to the PDR.
  • F2 - Corresponds to the PBS.
  • F3 - Corresponds to the CDR.
  • F4 - Corresponds to the CBS.
  • F5 - Corresponds to the EBS.
  • F6 - Corresponds to the Weight.

Each flag Fi is a Negotiable Flag that matches up with one Traffic Parameter ๐Ÿฆ‹ A value of zero means NotNegotiable, and a value of one means Negotiable ๐Ÿ’…

Frequency ๐ŸŽ€ The Frequency field is an 8 bit unsigned integer with these code points defined:

         0- Unspecified
         1- Frequent
         2- VeryFrequent
         3-255  - Reserved
         Reserved - Zero on transmission.  Ignored on receipt.

Weight ๐Ÿ’œ An 8 bit unsigned integer telling you the weight of the CR-LSP. Valid weight values run from 1 to 255. A value of 0 means weight isn't applicable for the CR-LSP ๐Ÿซถ

Traffic Parameters ๐Ÿ”ฅ Each Traffic Parameter is encoded as a 32-bit IEEE single-precision floating-point number. Positive infinity is represented as an IEEE single-precision floating-point number with an exponent of all ones (255) and a sign and mantissa of all zeros โ™พ๏ธ PDR and CDR are in units of bytes per second, and PBS, CBS, and EBS are in units of bytes ๐ŸŒˆ

The value of PDR MUST be greater than or equal to the value of CDR in a correctly encoded Traffic Parameters TLV ๐Ÿ™Œ


4.3.1 Semantics ๐Ÿง 

4.3.1.1 Frequency ๐Ÿ“

The Frequency tells you the granularity at which the CDR allocated to the CR-LSP gets made available ๐Ÿ’– VeryFrequent means the available rate should average at least the CDR when measured over any time interval equal to or longer than the shortest packet time at the CDR. Frequent means the available rate should average at least the CDR when measured over any time interval equal to or longer than a small number of shortest packet times at the CDR ๐Ÿฆ‹

Unspecified means the CDR MAY be provided at any granularity ๐ŸŒธ

4.3.1.2 Peak Rate ๐Ÿš€

The Peak Rate defines the maximum rate at which traffic SHOULD be sent to the CR-LSP ๐ŸŽ€ It's really useful for resource allocation. If resource allocation within the MPLS domain depends on the Peak Rate value, then it should be enforced at the ingress to the MPLS domain ๐Ÿซถ

The Peak Rate is defined in terms of the two Traffic Parameters PDR and PBS. See section 4.3.1.5 below ๐Ÿ’…

4.3.1.3 Committed Rate ๐Ÿ’ธ

The Committed Rate defines the rate that the MPLS domain commits to making available to the CR-LSP ๐Ÿ‘‘

The Committed Rate is defined in terms of the two Traffic Parameters CDR and CBS. See section 4.3.1.6 below ๐ŸŒˆ

4.3.1.4 Excess Burst Size โšก

The Excess Burst Size may be used at the edge of an MPLS domain for traffic conditioning ๐Ÿงš The EBS MAY be used to measure how far the traffic sent on a CR-LSP goes past the committed rate ๐Ÿ”

The possible traffic conditioning actions, like passing, marking, or dropping, are specific to the MPLS domain ๐Ÿ™ˆ

The Excess Burst Size is defined together with the Committed Rate. See section 4.3.1.6 below ๐Ÿ’œ

4.3.1.5 Peak Rate Token Bucket โœจ

okay so the Peak Rate of a CR-LSP gets described with a token bucket called P. It has a token rate PDR and a maximum bucket size PBS ๐Ÿชฃ

The bucket starts out totally full at time 0, so Tp(0) = PBS ๐Ÿ’– After that, Tp goes up by one PDR each second, but only while it's still below PBS. Then when a packet of B bytes shows up at time t:

  • If Tp(t)-B >= 0, the packet is not over the peak rate, and Tp gets knocked down by B, with 0 as the floor. Otherwise,
  • the packet is over the peak rate, and Tp just stays where it is ๐Ÿ™…โ€โ™€๏ธ

ngl the math is simple: a PDR or PBS that's positive infinity means packets literally never go over the peak rate ๐Ÿฆ‹

Also, the LSR doesn't have to actually build this token bucket in its code. This formal version is just the official way to describe it ๐Ÿงš

4.3.1.6 Committed Data Rate Token Bucket ๐Ÿ’…

the committed rate of a CR-LSP is described with a token bucket C that runs at CDR. How far the offered rate goes over the committed rate MAY be measured with a second bucket, E, which also runs at CDR ๐ŸŒธ The biggest size for C is CBS, and the biggest size for E is EBS.

Both buckets start full at time 0, meaning Tc(0) = CBS and Te(0) = EBS ๐ŸŽ€

After that, Tc and Te get updated CDR times per second like this:

  • If Tc is less than CBS, Tc goes up by one. Otherwise,
  • if Te is less than EBS, Te goes up by one. Otherwise, neither Tc nor Te goes up ๐Ÿซถ

When a packet of B bytes arrives at time t:

  • If Tc(t)-B >= 0, the packet is not over the Committed Rate, and Tc gets reduced by B, with 0 as the floor. Otherwise,
  • if Te(t)-B >= 0, the packet is over the Committed Rate but not over the EBS, and Te gets reduced by B, with 0 as the floor. Otherwise,
  • the packet is over both the Committed Rate and the EBS, and neither Tc nor Te gets reduced ๐Ÿ˜ญ

The vibes here: a CDR of positive infinity means packets are never over the Committed Rate or the EBS ๐Ÿ‘‘ And a positive infinite CBS or EBS means that limit can never be exceeded ๐ŸŒˆ

Again, the LSR's real implementation doesn't need to copy this formal model ๐Ÿ’œ

4.3.1.7 Weight ๐Ÿ“

The Weight decides a CR-LSP's relative share of the spare bandwidth that's above its committed rate โœจ What "relative share" means is up to the MPLS domain, so it's not one universal thing ๐Ÿฆ‹

4.3.2 Procedures ๐Ÿ”ฅ

4.3.2.1 Label Request Message ๐ŸŽ€

If an LSR gets a Traffic Parameters TLV that was encoded wrong, and the PDR value is less than the CDR value, then it MUST send a Notification Message with the Status code Traffic Parameters Unavailable to the upstream LSR that sent it the bad message ๐Ÿ™ˆ

If a Traffic Parameter is marked Negotiable in the Label Request Message by its Negotiable Flag, then an LSR MAY swap in a smaller value for that Traffic Parameter โœจ

If the Weight is marked Negotiable in the Label Request Message by its Negotiable Flag, then an LSR may swap the Weight for a lower value, all the way down to 0 ๐Ÿ’…

After any possible Traffic Parameter negotiation, if an LSR CAN support the CR-LSP Traffic Parameters, then the LSR MUST reserve the matching resources for that CR-LSP ๐Ÿซถ

After any possible Traffic Parameter negotiation, if an LSR CANNOT support the CR-LSP Traffic Parameters, then the LSR MUST send a Notification Message that contains the Resource Unavailable status code ๐Ÿ’€

4.3.2.2 Label Mapping Message ๐ŸŒธ

If an LSR gets a Traffic Parameters TLV that was encoded wrong, and the PDR value is less than the CDR value, then it MUST send a Label Release message with the Status code Traffic Parameters Unavailable to the LSR that sent it the bad message ๐Ÿ˜ญ On top of that, the LSP should send a Notification Message upstream with the status code Label Request Aborted.

If the negotiation flag was set in the label request message, then the egress LSR MUST include the Traffic Parameters and Weight (possibly negotiated ones) in the Label Mapping message ๐Ÿฆ‹

The Traffic Parameters and the Weight in a Label Mapping message MUST be forwarded unchanged ๐Ÿงš

An LSR SHOULD adjust the resources it reserved for a CR-LSP when it gets a Label Mapping Message, if the Traffic Parameters are different from the ones in the matching Label Request Message ๐Ÿ”ฅ

4.3.2.3 Notification Message ๐Ÿ’–

If an LSR gets a Notification Message for a CR-LSP, it SHOULD release any resources it might have reserved for that CR-LSP ๐ŸŽ€ Also, when a Downstream LSR sends a Notification Message that's tied to a Label Request from an upstream LSR, the local LSR MUST propagate the Notification message using the procedures in [1]. And the F bit MUST be set ๐Ÿ‘‘

4.4 Preemption TLV ๐ŸŒˆ

The default setup and holding priorities should sit in the middle of the range (e.g., 4) ๐Ÿ“ That way this feature can be switched on bit by bit in a live network, by moving the priority up or down starting from the middle ๐Ÿงš

Since the Preemption TLV is optional, LSPs that get set up without an explicitly signaled preemption TLV SHOULD be treated as LSPs with the default setup and holding priorities (e.g., 4) ๐Ÿ’…

When an LSP that's already established gets preempted, the LSR doing the preempting sends a Withdraw Message upstream and a Release Message downstream ๐Ÿซถ

When an LSP that's still being set up gets preempted (it has an outstanding Label Request and hasn't gotten a Label Mapping back yet), the LSR doing the preempting sends a Notification Message upstream and an Abort Message downstream ๐Ÿ˜ญ

   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|     Type = 0x0820         |      Length = 4               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  SetPrio      | HoldPrio      |      Reserved                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type ๐Ÿงš A fourteen-bit field carrying the value of the Preemption-TLV Type, which is 0x0820.

Length ๐ŸŽ€ Says how long the value field is, in bytes. Here it's 4.

Reserved ๐Ÿซถ Set to zero when sending. Ignored when receiving.

SetPrio ๐Ÿ‘‘ A SetupPriority of zero (0) is the priority for the most important path, which is called the highest priority. Seven (7) is the priority for the least important path. The higher the setup priority, the more paths CR-LDP can bump to set up the path. The default value should be 4 ๐Ÿ”ฅ

HoldPrio ๐Ÿ’… A HoldingPriority of zero (0) is the priority for the most important path, which is called the highest priority. Seven (7) is the priority for the least important path. The default value should be 4. The higher the holding priority, the less likely it is that CR-LDP will reallocate its bandwidth to a new path ๐ŸŒธ

4.5 LSPID TLV ๐Ÿ’–

the LSPID is a unique identifier for a CR-LSP inside an MPLS network โœจ

It's made from the ingress LSR Router ID (or any of its own IPv4 addresses) plus a Local CR-LSP ID that's unique to that LSR ๐Ÿฆ‹

The LSPID is handy for network management, for CR-LSP repair, and for using an already-established CR-LSP as a hop in an ER-TLV ๐Ÿงš

An "action indicator flag" is carried in the LSPID TLV. This flag explicitly says what to do if the LSP already exists on the LSR that gets the message ๐ŸŽ€

Sometimes a network operator needs to change an established CR-LSP's bandwidth reservation, because the traffic on it has new requirements ๐ŸŒˆ The "action indicator flag" is how you say "modify the bandwidth, and maybe other parameters, without interrupting service." This is super useful for dynamic network resource management, where traffic with different priorities and service classes is mixed together ๐Ÿ‘‘

The procedure for the code point "modify" is defined in [8]. The procedures for the other flags are FFS ๐Ÿ“

   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|       Type = 0x0821       |      Length = 4               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Reserved        |ActFlg |      Local CR-LSP ID          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Ingress LSR Router ID                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type ๐Ÿงš A fourteen-bit field carrying the value of the LSPID-TLV Type, which is 0x0821.

Length ๐ŸŽ€ Says how long the value field is, in bytes. Here it's 4.

ActFlg ๐ŸŒธ The Action Indicator Flag. It's a 4-bit field that explicitly says what to do if the LSP already exists on the LSR that gets the message. These are the proposed indicator code points:

0000: indicates initial LSP setup
0001: indicates modify LSP

Reserved ๐Ÿซถ Set to zero when sending. Ignored when receiving.

Local CR-LSP ID ๐Ÿ’– The Local LSP ID is an identifier for the CR-LSP that's unique within the Ingress LSR that started the CR-LSP โœจ

Ingress LSR Router ID ๐Ÿฆ‹ An LSR may use any of its own IPv4 addresses in this field ๐Ÿงš

4.6 Resource Class (Color) TLV ๐Ÿ’…

The Resource Class from [3] is how you say which links this CR-LSP is allowed to use ๐ŸŒˆ That info lets the network's topology get pruned down to the good stuff ๐Ÿ‘‘

   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|         Type = 0x0822     |      Length = 4               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             RsCls                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type ๐Ÿงš A fourteen-bit field carrying the value of the ResCls-TLV Type, which is 0x0822.

Length ๐ŸŽ€ Says how long the value field is, in bytes. Here it's 4.

RsCls ๐Ÿ”ฅ The Resource Class bit mask. It shows which of the 32 "administrative groups" or "colors" of links the CR-LSP can traverse ๐ŸŒธ

4.7 ER-Hop semantics โœจ

4.7.1. ER-Hop 1: The IPv4 prefix โœจ

The abstract node this ER-Hop stands for is the crew of every node whose IP address sits inside this prefix. ๐ŸŒธ A prefix length of 32 means it's just one IPv4 node, so no squad, just a solo queen. ๐Ÿ‘‘

   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|         Type = 0x0801     |      Length = 8               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |L|      Reserved                               |    PreLen     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    IPv4 Address (4 bytes)                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type โ€” a fourteen-bit field holding the ER-Hop 1 value, IPv4 Address, Type = 0x0801 ๐ŸŽ€
  • Length โ€” the length of the value field in bytes, which is 8 ๐Ÿ“
  • L Bit โ€” set means Loose hop, cleared means strict hop ๐Ÿฆ‹
  • Reserved โ€” zero on transmission, ignored on receipt ๐Ÿซถ
  • PreLen โ€” the Prefix Length, 1-32 ๐Ÿ’œ
  • IP Address โ€” a four-byte field with the IP Address ๐ŸŒˆ

4.7.2. ER-Hop 2: The IPv6 address ๐Ÿ’…

Same energy as ER-Hop 1, just with an IPv6 address. ๐Ÿงš

   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|          0x0802           |      Length = 20              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |L|             Reserved                        |    PreLen     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  IPV6 address                                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  IPV6 address (continued)                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  IPV6 address (continued)                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  IPV6 address (continued)                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type โ€” a fourteen-bit field holding the ER-Hop 2 value, IPv6 Address, Type = 0x0802 ๐Ÿ’–
  • Length โ€” the length of the value field in bytes, which is 20 ๐Ÿ“
  • L Bit โ€” set means Loose hop, cleared means strict hop ๐Ÿฆ‹
  • Reserved โ€” zero on transmission, ignored on receipt ๐Ÿซถ
  • PreLen โ€” the Prefix Length, 1-128 ๐Ÿ’œ
  • IPv6 address โ€” a 128-bit unicast host address ๐ŸŒˆ

4.7.3. ER-Hop 3: The autonomous system number ๐Ÿ“

This ER-Hop's abstract node is every node that belongs to the autonomous system. The whole AS, bestie. ๐ŸŒ

   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|          0x0803           |      Length = 4               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |L|          Reserved           |                AS Number      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type โ€” a fourteen-bit field holding the ER-Hop 3 value, AS Number, Type = 0x0803 ๐ŸŽ€
  • Length โ€” the length of the value field in bytes, which is 4 ๐Ÿ“
  • L Bit โ€” set means Loose hop, cleared means strict hop ๐Ÿฆ‹
  • Reserved โ€” zero on transmission, ignored on receipt ๐Ÿซถ
  • AS Number โ€” the Autonomous System number ๐Ÿ‘‘

4.7.4. ER-Hop 4: LSPID ๐Ÿฆ‹

The LSPID is how you name the tunnel ingress point as the next hop in the ER. โœจ This ER-Hop lets you stack new CR-LSPs inside a CR-LSP that's already set up, and it also lets you splice the CR-LSP being established onto an existing one. Main character energy, ngl. ๐Ÿ’…

If an LSPID Hop is the last ER-Hop in an ER-TLV, the LSR may splice the CR-LSP of the incoming Label Request onto the CR-LSP that already exists with this LSPID. ๐Ÿซถ This is super handy for local repair: say a Label Request shows up at the next ER-Hop right after the loosely specified CR-LSP segment. Using the LSPID Hop here means the ER-Hops don't have to keep the whole leftover ER-TLV around as state at each LSR on either end (upstream or downstream) of that loose segment. ๐Ÿง  Why? The upstream LSR only needs to remember the next ER-Hop and the LSPID, and the downstream LSR only needs the LSPID, so both ends can tell they're talking about the same LSP. Iconic efficiency. ๐ŸŒธ

If the LSPID Hop is not the last hop in an ER-TLV, the LSR must remove the LSP-ID Hop and forward the remaining ER-TLV in a Label Request message over an LDP session with the LSR that is the specified CR-LSP's egress. ๐ŸŒˆ That egress LSR carries on processing the CR-LSP Label Request Message, and the result is a tunneled (or stacked) CR-LSP. ๐Ÿงš

To support labels negotiated for tunneled CR-LSP segments, an LDP session is required [1] between the tunnel end points, possibly using the existing CR-LSP. Using the existence of the CR-LSP in place of a session, or other possible session-less approaches, is FFS. ๐Ÿ™ˆ

   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|          0x0804           |      Length = 8               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |L|          Reserved           |               Local LSPID     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Ingress LSR Router ID                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type โ€” a fourteen-bit field holding the ER-Hop 4 value, LSPID, Type = 0x0804 ๐Ÿ’œ
  • Length โ€” the length of the value field in bytes, which is 8 ๐Ÿ“
  • L Bit โ€” set means Loose hop, cleared means strict hop ๐Ÿฆ‹
  • Reserved โ€” zero on transmission, ignored on receipt ๐Ÿซถ
  • Local LSPID โ€” a 2-byte field with the LSPID, which is unique with reference to its Ingress LSR ๐ŸŽ€
  • Ingress LSR Router ID โ€” an LSR may use any of its own IPv4 addresses in this field ๐ŸŒŸ

4.8. Processing of the Explicit Route TLV ๐Ÿ—บ๏ธ

4.8.1. Selection of the next hop ๐Ÿงญ

A Label Request Message with an explicit route TLV must figure out the next hop for this path. โœจ That choice might come from a bunch of possible alternatives, and how the node picks from that set is implementation dependent and outside the scope of this spec. Picking particular paths is also out of scope, but each node is assumed to make a best effort to find a loop-free path. โ™ป๏ธ Heads up, though: local policy can override those best efforts. ๐Ÿ™…โ€โ™€๏ธ

To work out the next hop, a node runs through these steps:

  1. The node receiving the Label Request Message must first check the first ER-Hop. If the L bit is not set on the first ER-Hop and the node is not part of the abstract node that ER-Hop describes, the message got to the wrong place, and the node should return a "Bad Initial ER-Hop Error" status. If the L bit is set and the local node is not part of that abstract node, the node picks a next hop that's along the path to the abstract node described by the first ER-Hop. If there's no first ER-Hop at all, the message is also in error, and the system should return a "Bad Explicit Routing TLV Error" status using a Notification Message sent upstream. ๐Ÿ˜ญ
  2. If there's no second ER-Hop, that means the explicit route is over. The explicit route TLV should be removed from the Label Request Message. This node may or may not be the end of the LSP. Processing carries on with section 4.8.2, where a new explicit route TLV may be added to the Label Request Message. ๐Ÿ
  3. If the node is also part of the abstract node described by the second ER-Hop, the node deletes the first ER-Hop and goes back to step 2. Notice what happens here: the second ER-Hop becomes the first ER-Hop of the next round. ๐Ÿ”
  4. The node figures out whether it's topologically adjacent to the abstract node described by the second ER-Hop. If it is, the node picks a particular next hop that is a member of that abstract node. Then it deletes the first ER-Hop and continues with section 4.8.2. ๐Ÿ’Œ
  5. Next, the node picks a next hop inside the abstract node of the first ER-Hop that's along the path to the abstract node of the second ER-Hop. If no such path exists, there are two cases:
    • 5.a If the second ER-Hop is a strict ER-Hop, that's an error, and the node should return a "Bad Strict Node Error" status. ๐Ÿšซ
    • 5.b Otherwise, if the second ER-Hop is a loose ER-Hop, the node picks any next hop that's along the path to the next abstract node. If there's no path within the MPLS domain, that's an error, and the node should return a "Bad Loose Node Error" status. ๐Ÿฅฒ
  6. Finally, the node swaps out the first ER-Hop for any ER-Hop that denotes an abstract node containing the next hop. This is needed so the explicit route will be accepted when the next hop receives it. ๐Ÿค
  7. The node progresses the Label Request Message to the next hop. ๐Ÿš€

4.8.2. Adding ER-Hops to the explicit route TLV โž•

After picking a next hop, the node may change the explicit route in the following ways. ๐ŸŒท

If, while running the algorithm in section 4.8.1, the explicit route TLV gets removed, the node may add a brand-new explicit route TLV. ๐ŸŽ€

Otherwise, if the node is a member of the abstract node for the first ER-Hop, a series of ER-Hops may be inserted before the first ER-Hop or may replace it. Each ER-Hop in that series must denote an abstract node that is a subset of the current abstract node. ๐Ÿงฉ

Alternatively, if the first ER-Hop is a loose ER-Hop, an arbitrary series of ER-Hops may be inserted before the first ER-Hop. ๐ŸŒˆ

4.9 Route Pinning TLV

okay so Section 2.4 is where route pinning gets explained, bestie ๐ŸŽ€ Here's how the Route Pinning TLV is encoded:

   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|          Type = 0x0823    |      Length = 4               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |P|                        Reserved                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type ๐Ÿงš is a fourteen-bit field carrying the value of the Pinning-TLV Type = 0x0823.
  • Length is the length of the value field in bytes = 4.
  • P Bit ๐Ÿ’– is set to 1 to indicate that route pinning is requested. It is set to 0 to indicate that route pinning is not requested.
  • Reserved is zero on transmission and ignored on receipt.

4.10 CR-LSP FEC Element

ngl this one is so cute โœจ A brand-new FEC element is introduced in this specification just for CR-LSPs. A FEC TLV containing a FEC of Element type CR-LSP (0x04) is a CR-LSP FEC TLV. The CR-LSP FEC Element is an opaque FEC, and it's only meant to be used in Messages of CR-LSPs ๐Ÿฆ‹

A single FEC element MUST be included in the Label Request Message. The FEC Element SHOULD be the CR-LSP FEC Element. However, one of the other FEC elements (Type=0x01, 0x02, 0x03) defined in [1] MAY be in CR-LDP messages instead of the CR-LSP FEC Element for certain applications. A FEC TLV containing a FEC of Element type CR-LSP (0x04) is a CR-LSP FEC TLV.

         FEC Element     Type    Value
         Type name

         CR-LSP         0x04    No value; i.e., 0 value octets;

The CR-LSP FEC TLV encoding is as follows ๐ŸŒธ

   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|          Type = 0x0100    |      Length = 1               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | CR-LSP (4)    |
   +-+-+-+-+-+-+-+-+
  • Type is a fourteen-bit field carrying the value of the FEC TLV Type = 0x0100.
  • Length is the length of the value field in bytes = 1.
  • CR-LSP FEC Element Type is 0x04.

5. IANA Considerations

the IANA stuff is a little boring but it's important, so let's go ๐Ÿ“‹ CR-LDP defines the following name spaces, which require management:

  • TLV types.
  • FEC types.
  • Status codes.

The following sections provide guidelines for managing these name spaces.

5.1 TLV Type Name Space

RFC 3036 [1] defines the LDP TLV name space. This document further subdivides the range of RFC 3036 from that TLV space for TLVs associated with the CR-LDP in the range 0x0800 - 0x08FF.

Following the policies outlined in [IANA], TLV types in this range are allocated through an IETF Consensus action.

Initial values for this range are specified in the following table:

         TLV                                               Type
         --------------------------------------         ----------
         Explicit Route TLV                              0x0800
         Ipv4 Prefix ER-Hop TLV                          0x0801
         Ipv6 Prefix ER-Hop TLV                          0x0802
         Autonomous System Number ER-Hop TLV             0x0803
         LSP-ID ER-Hop TLV                               0x0804
         Traffic Parameters TLV                          0x0810
         Preemption TLV                                  0x0820
         LSPID TLV                                       0x0821
         Resource Class TLV                              0x0822
         Route Pinning TLV                               0x0823

5.2 FEC Type Name Space

RFC 3036 defines the FEC Type name space. Further, RFC 3036 has assigned values 0x00 through 0x03. FEC types 0 through 127 are available for assignment through IETF consensus action. This specification makes the following additional assignment, using the policies outlined in [IANA]:

         FEC Element                                       Type
         --------------------------------------         ----------
         CR-LSP FEC Element                                0x04

5.3 Status Code Space

RFC 3036 defines the Status Code name space. This document further subdivides the range of RFC 3036 from that TLV space for TLVs associated with the CR-LDP in the range 0x04000000 - 0x040000FF.

Following the policies outlined in [IANA], TLV types in this range are allocated through an IETF Consensus action.

Initial values for this range are specified in the following table:

         Status Code                                       Type
         --------------------------------------         ----------

         Bad Explicit Routing TLV Error                 0x04000001
         Bad Strict Node Error                          0x04000002
         Bad Loose  Node Error                          0x04000003
         Bad Initial ER-Hop Error                       0x04000004
         Resource Unavailable                           0x04000005
         Traffic Parameters Unavailable                 0x04000006
         LSP Preempted                                  0x04000007
         Modify Request Not Supported                   0x04000008

6. Security Considerations

๐Ÿšจ this part is SERIOUS, bestie, no skipping! CR-LDP inherits the same security mechanism described in Section 4.0 of [1] to protect against the introduction of spoofed TCP segments into LDP session connection streams. ๐Ÿ”๐Ÿ’€

7. Acknowledgments

the people who helped make this happen deserve all the flowers ๐Ÿ’ The messages used to signal the CR-LSP setup are based on the work done by the LDP [1] design team.

The list of authors provided with this document is a reduction of the original list. Currently listed authors wish to acknowledge that a substantial amount was also contributed to this work by: Osama Aboul-Magd, Peter Ashwood-Smith, Joel Halpern, Fiffi Hellstrand, Kenneth Sundell and Pasi Vaananen.

The authors would also like to acknowledge the careful review and comments of Ken Hayward, Greg Wright, Geetha Brown, Brian Williams, Paul Beaubien, Matthew Yuen, Liam Casey, Ankur Anand and Adrian Farrel. ๐Ÿซถ

8. Intellectual Property Consideration

the IETF has been notified of intellectual property rights claimed in regard to some or all of the specification contained in this document. For more information consult the online list of claimed rights. โš–๏ธ

9. References

  • [1] Andersson, L., Doolan, P., Feldman, N., Fredette, A. and B. Thomas, "Label Distribution Protocol Specification", RFC 3036, January 2001.
  • [2] Rosen, E., Viswanathan, A. and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, January 2001.
  • [3] Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M. and J. McManus, "Requirements for Traffic Engineering Over MPLS", RFC 2702, September 1999.
  • [4] Gleeson, B., Lin, A., Heinanen, Armitage, G. and A. Malis, "A Framework for IP Based Virtual Private Networks", RFC 2764, February 2000.
  • [5] Ash, J., Girish, M., Gray, E., Jamoussi, B. and G. Wright, "Applicability Statement for CR-LDP", RFC 3213, January 2002.
  • [6] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [7] Boscher, C., Cheval, P., Wu, L. and E. Gray, "LDP State Machine", RFC 3215, January 2002.
  • [8] Ash, J., Lee, Y., Ashwood-Smith, P., Jamoussi, B., Fedyk, D., Skalecki, D. and L. Li, "LSP Modification Using CR-LDP", RFC 3214, January 2002.

Appendix A: CR-LSP Establishment Examples

A.1 Strict Explicit Route Example

this appendix is a worked example and it's giving tutorial energy ๐Ÿง  It shows how a strictly routed CR-LSP gets set up. In this example, a specific node represents each abstract node.

The sample network used here is a four node network with two edge LSRs and two core LSRs as follows:

   abc
   LSR1------LSR2------LSR3------LSR4

LSR1 generates a Label Request Message as described in Section 3.1 of this document and sends it to LSR2. This message includes the CR-TLV.

A vector of three ER-Hop TLVs <a, b, c> composes the ER-TLV. The ER-Hop TLVs used in this example are of type 0x0801 (IPv4 prefix) with a prefix length of 32. Hence, each ER-Hop TLV identifies a specific node as opposed to a group of nodes. At LSR2, the following processing of the ER-TLV per Section 4.8.1 of this document takes place:

  1. The node LSR2 is part of the abstract node described by the first hop <a>. Therefore, the first step passes the test. Go to step 2.
  2. There is a second ER-Hop, <b>. Go to step 3.
  3. LSR2 is not part of the abstract node described by the second ER-Hop <b>. Go to Step 4.
  4. LSR2 determines that it is topologically adjacent to the abstract node described by the second ER-Hop <b>. LSR2 selects a next hop (LSR3) which is the abstract node. LSR2 deletes the first ER-Hop <a> from the ER-TLV, which now becomes <b, c>. Processing continues with Section 4.8.2.

At LSR2, the following processing of Section 4.8.2 takes place: Executing algorithm 4.8.1 did not result in the removal of the ER-TLV.

Also, LSR2 is not a member of the abstract node described by the first ER-Hop <b>.

Finally, the first ER-Hop <b> is a strict hop.

Therefore, processing section 4.8.2 does not result in the insertion of new ER-Hops. The selection of the next hop has been already done is step 4 of Section 4.8.1 and the processing of the ER-TLV is completed at LSR2. In this case, the Label Request Message including the ER-TLV <b, c> is progressed by LSR2 to LSR3.

At LSR3, a similar processing to the ER-TLV takes place except that the incoming ER-TLV = <b, c> and the outgoing ER-TLV is <c>.

At LSR4, the following processing of section 4.8.1 takes place:

  1. The node LSR4 is part of the abstract node described by the first hop <c>. Therefore, the first step passes the test. Go to step 2.
  2. There is no second ER-Hop, this indicates the end of the CR-LSP. The ER-TLV is removed from the Label Request Message. Processing continues with Section 4.8.2.

At LSR4, the following processing of Section 4.8.2 takes place: Executing algorithm 4.8.1 resulted in the removal of the ER-TLV. LSR4 does not add a new ER-TLV.

Therefore, processing section 4.8.2 does not result in the insertion of new ER-Hops. This indicates the end of the CR-LSP and the processing of the ER-TLV is completed at LSR4.

At LSR4, processing of Section 3.2 is invoked. The first condition is satisfied (LSR4 is the egress end of the CR-LSP and upstream mapping has been requested). Therefore, a Label Mapping Message is generated by LSR4 and sent to LSR3.

At LSR3, the processing of Section 3.2 is invoked. The second condition is satisfied (LSR3 received a mapping from its downstream next hop LSR4 for a CR-LSP for which an upstream request is still pending). Therefore, a Label Mapping Message is generated by LSR3 and sent to LSR2.

At LSR2, a similar processing to LSR 3 takes place and a Label Mapping Message is sent back to LSR1, which completes the end-to-end CR-LSP setup. โœจ๐ŸŽ€

A.2 Node Groups and Specific Nodes Example

Okay so picture this ๐ŸŽ€ a request at the ingress LSR to set up a CR-LSP can come from a management system or an application. The details are implementation specific, so it's totally up to whoever builds it โœจ

The ingress LSR takes info from that management system or application, and maybe also from the routing database, to work out the explicit route and build the Label Request Message ๐Ÿ’…

The Label Request Message carries the other necessary info, plus an ER-TLV that defines the explicitly routed path. In our example, the ER-Hop TLVs are supposed to hold an abstract node for a group of nodes, then an abstract node for a specific node, then another abstract node for a group of nodes, and finally an abstract node for a specific egress point. It's giving a whole little obstacle course ๐Ÿงš

In--{Group 1}--{Specific A}--{Group 2}--{Specific Out: B}

The ER-TLV contains four ER-Hop TLVs:

  1. An ER-Hop TLV that specifies a group of LSRs valid for the first abstract node representing a group of nodes (Group 1).
  2. An ER-Hop TLV that indicates the specific node (Node A).
  3. An ER-Hop TLV that specifies a group of LSRs valid for the second abstract node representing a group of nodes (Group 2).
  4. An ER-Hop TLV that indicates the specific egress point for the CR-LSP (Node B).

All the ER-Hop TLVs are strictly routed nodes ๐Ÿ”ฅ

Here's how the setup procedure goes, step by step:

  1. The ingress node sends the Label Request Message to a node that is a member of the group of nodes indicated in the first ER-Hop TLV, following normal routing for the specific node (A).
  2. The node that receives the message identifies itself as part of the group indicated in the first ER-Hop TLV, and that it is not the specific node (A) in the second. Further, it realizes that the specific node (A) is not one of its next hops.
  3. It keeps the ER-Hop TLVs intact and sends a Label Request Message to another node that is part of the group indicated in the first ER-Hop TLV (Group 1), following normal routing for the specific node (A).
  4. The node that receives the message identifies itself as part of the group indicated in the first ER-Hop TLV, and that it is not the specific node (A) in the second ER-Hop TLV. Further, it realizes that the specific node (A) is one of its next hops.
  5. It removes the first ER-Hop TLVs and sends a Label Request Message to the specific node (A).
  6. The specific node (A) recognizes itself in the first ER-Hop TLV and removes the specific ER-Hop TLV.
  7. It sends a Label Request Message to a node that is a member of the group (Group 2) indicated in the ER-Hop TLV.
  8. The node that receives the message identifies itself as part of the group indicated in the first ER-Hop TLV, and further realizes that the specific egress node (B) is one of its next hops.
  9. It sends a Label Request Message to the specific egress node (B).
  10. The specific egress node (B) recognizes itself as the egress for the CR-LSP and returns a Label Mapping Message, which traverses the same path as the Label Request Message in the opposite direction ๐Ÿฆ‹

Appendix B. QoS Service Examples

B.1 Service Examples

Building an end-to-end service is the result of the rules enforced at the edge and the treatment that packets get at the network nodes ๐Ÿ’– The rules define the traffic conditioning actions implemented at the edge, and they include policing with pass, mark, and drop capabilities. The edge rules are expected to be defined by mutual agreements between the service providers and their customers, and they'll be an essential part of the SLA. So the edge rules are not included in the signaling protocol.

Packet treatment at a network node is usually called the local behavior. Local behavior could be specified in many ways. One example is the service frequency introduced in section 4.3.2.1, together with the resource reservation rules implemented at the nodes โœจ

Edge rules and local behaviors are the main building blocks for end-to-end service construction. The table below shows how the building block approach applies to constructing different services, including those defined for ATM ๐Ÿ“Š

Service        PDR  PBS  CDR     CBS   EBS  Service    Conditioning
Examples                                    Frequency  Action

DS             S    S    =PDR    =PBS  0    Frequent   drop>PDR

TS             S    S    S       S     0    Unspecified drop>PDR,PBS
                                                        mark>CDR,CBS

BE             inf  inf  inf     inf   0    Unspecified      -

FRS            S    S    CIR     ~B_C  ~B_E Unspecified drop>PDR,PBS
                                                    mark>CDR,CBS,EBS

ATM-CBR        PCR  CDVT =PCR    =CDVT 0    VeryFrequent    drop>PCR

ATM-VBR.3(rt)  PCR  CDVT SCR     MBS   0    Frequent        drop>PCR
                                                        mark>SCR,MBS

ATM-VBR.3(nrt) PCR  CDVT SCR     MBS   0    Unspecified     drop>PCR
                                                        mark>SCR,MBS

ATM-UBR        PCR  CDVT -       -     0    Unspecified     drop>PCR

ATM-GFR.1      PCR  CDVT MCR     MBS   0    Unspecified     drop>PCR

ATM-GFR.2      PCR  CDVT MCR     MBS   0    Unspecified     drop>PCR
                                                        mark>MCR,MFS

int-serv-CL    p    m    r       b     0    Frequent        drop>p
                                                            drop>r,b

S= User specified

In the table above, DS refers to a delay sensitive service, where the network commits to deliver user datagrams at a rate of PDR with high probability, with minimum delay and delay requirements. Datagrams in excess of PDR will be discarded ๐ŸŒธ

TS refers to a generic throughput sensitive service, where the network commits to deliver user datagrams at a rate of at least CDR with high probability. The user may transmit at a rate higher than CDR, but datagrams in excess of CDR would have a lower probability of being delivered.

BE is the best effort service, and it implies there are no expected service guarantees from the network ๐Ÿ“

B.2 Establishing CR-LSP Supporting Real-Time Applications

In this scenario the customer needs to establish an LSP to support real-time applications like voice and video ๐Ÿ“ž The Delay-sensitive (DS) service is requested in this case.

The first step is specifying the traffic parameters in the signaling message. The two parameters of interest to the DS service are PDR and PBS, and the user specifies their values based on their requirements. Since all the traffic parameters are included in the signaling message, appropriate values must be assigned to all of them. For the DS service, the CDR and CBS values are set equal to PDR and PBS respectively. An indication of whether the parameter values are subject to negotiation is flagged ๐Ÿซถ

The transport characteristics of the DS service require Frequent frequency to be requested, to reflect the real-time delay requirements of the service.

In addition to the transport characteristics, both the network provider and the customer need to agree on the actions enforced at the edge. The specification of those actions is expected to be part of the service level agreement (SLA) negotiation, and it is not included in the signaling protocol. For the DS service, the edge action is to drop packets that exceed the PDR and PBS specifications. The signaling message is sent in the direction of the ER path, and the LSP is established following the normal LDP procedures. Each LSR applies its admission control rules. If sufficient resources are not available and the parameter values are subject to negotiation, then the LSR could negotiate down PDR, PBS, or both ๐Ÿ’€

The new parameter values are echoed back in the Label Mapping Message. LSRs might need to re-adjust their resource reservations based on the new traffic parameter values ๐Ÿ”ฅ

B.3 Establishing CR-LSP Supporting Delay Insensitive Applications

In this example we assume a throughput sensitive (TS) service is requested. For resource allocation, the user assigns values for PDR, PBS, CDR, and CBS. The negotiation flag is set if the traffic parameters are subject to negotiation. Since the service is delay insensitive by definition, the Unspecified frequency is signaled to indicate that service frequency is not an issue ๐ŸŒˆ

Similar to the previous example, the edge actions are not subject to signaling and are specified in the service level agreement between the user and the network provider.

For the TS service, the edge rules might include marking to indicate high discard precedence values for all packets that exceed CDR and CBS. The edge rules will also include dropping packets that conform to neither PDR nor PBS ๐Ÿงš

Each LSR of the LSP is expected to run its admission control rules and negotiate traffic parameters down if sufficient resources do not exist. The new parameter values are echoed back in the Label Mapping Message. LSRs might need to re-adjust their resources based on the new traffic parameter values โœจ


10. Author's Addresses ๐ŸŽ€

Here's who wrote this, bestie ๐Ÿ’œ

   Loa Andersson
   Utfors Bredband AB
   Rasundavagen 12 169 29
   Solna
   Phone: +46 8 5270 50 38
   EMail: loa.andersson@utfors.se

   Ross Callon
   Juniper Networks
   1194 North Mathilda Avenue,
   Sunnyvale, CA  94089
   Phone: 978-692-6724
   EMail: rcallon@juniper.net

   Ram Dantu
   Netrake Corporation
   3000 Technology Drive, #100
   Plano Texas, 75024
   Phone: 214 291 1111
   EMail: rdantu@netrake.com

   Paul Doolan
   On The Beach Consulting Corp
   34 Mill Pond Circle
   Milford MA 01757
   Phone 617 513 852
   EMail: pdoolan@acm.org
   Nancy Feldman
   IBM Research
   30 Saw Mill River Road
   Hawthorne, NY 10532
   Phone:  914-784-3254
   EMail: Nkf@us.ibm.com

   Andre Fredette
   ANF Consulting
   62 Duck Pond Dr.
   Groton, MA  01450
   EMail: afredette@charter.net

   Eric Gray
   600 Federal Drive
   Andover, MA  01810
   Phone: (978) 689-1610
   EMail: eric.gray@sandburst.com

   Juha Heinanen
   Song Networks, Inc.
   Hallituskatu 16
   33200 Tampere, Finland
   EMail: jh@song.fi

   Bilel Jamoussi
   Nortel Networks
   600 Technology Park Drive
   Billerica, MA 01821
   USA
   Phone: +1 978 288-4506
   Mail: Jamoussi@nortelnetworks.com

   Timothy E. Kilty
   Island Consulting
   Phone: (978) 462 7091
   EMail: tim-kilty@mediaone.net

   Andrew G. Malis
   Vivace Networks
   2730 Orchard Parkway
   San Jose, CA 95134
   Phone: +1 408 383 7223
   EMail: Andy.Malis@vivacenetworks.com
   Muckai K Girish
   Atoga Systems
   49026 Milmont Drive
   Fremont, CA 94538
   EMail: muckai@atoga.com

   Tom Worster
   Phone: 617 247 2624
   EMail: fsb@thefsb.org

   Liwen Wu
   Cisco Systems
   250 Apollo Drive
   Chelmsford, MA. 01824
   Phone: 978-244-3087
   EMail: liwwu@cisco.com

Okay bestie, legal stuff is the one place I keep the exact words ๐Ÿ’…

Copyright (C) The Internet Society (2002). 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