RFC 8359

Network-Assigned Upstream Label

πŸ“… published March 2018, from ietf

RFC 8359: Network-Assigned Upstream Label πŸŽ€

bestie, this one is from March 2018, and it's a Standards Track doc from the IETF (the Internet Engineering Task Force, the folks who write the Internet's rulebook πŸ“œ). It's an ISSN 2070-1721 document, and it updates RFC 3471, RFC 3473, and RFC 6205 ✨. The header doesn't list anything it obsoletes.

The editors are X. Zhang (Huawei Technologies) and V. Beeram (Juniper Networks), both marked "Ed." because they're the ones who pulled the whole thing together 🫢. The other authors are I. Bryskin (Huawei Technologies), D. Ceccarelli (Ericsson), and O. Gonzalez de Dios (Telefonica). Such a big squad, and so iconic πŸ’…


Abstract ✨

okay so the big idea is this: a GMPLS (Generalized Multi-Protocol Label Switching) RSVP-TE mechanism (Resource reSerVation Protocol with Traffic Engineering) that lets the network pick an upstream label for a bidirectional Label Switched Path (LSP) πŸ¦‹. This is clutch when a node just doesn't have enough info to choose the right upstream label by itself, so it leans on the downstream node to pick one. The doc also updates RFCs 3471, 3473, and 6205 because it adds handling for a special label value in the UPSTREAM_LABEL object πŸ’œ


Status of This Memo 🌸

this is an Internet Standards Track document, no cap. It's a product of the IETF, it represents the consensus of the IETF community, it got public review, and the IESG (Internet Engineering Steering Group) approved it for publication πŸ’–. If you want more on Internet Standards, check Section 2 of RFC 7841.

Info about its current status, any errata, and how to send feedback lives at https://www.rfc-editor.org/info/rfc8359 πŸ”₯


the IETF Trust and the document authors own the copyright for 2018, and all rights are reserved πŸŽ€. This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which you can find at https://trustee.ietf.org/license-info as they stood on the publication date. Please actually read those, because they spell out what you can and can't do with this doc πŸ™ˆ

If you pull Code Components out of this document, they must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions. They also come without warranty, as described in the Simplified BSD License πŸ’€


Table of Contents 🧚

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Requirements Language . . . . . . . . . . . . . . . . . . . .   3
   3.  Unassigned Upstream Label . . . . . . . . . . . . . . . . . .   3
     3.1.  Procedures  . . . . . . . . . . . . . . . . . . . . . . .   4
     3.2.  Backwards Compatibility . . . . . . . . . . . . . . . . .   5
   4.  Use-Case: Wavelength Setup for IP over Optical Networks . . .   5
     4.1.  Initial Setup . . . . . . . . . . . . . . . . . . . . . .   6
     4.2.  Wavelength Change . . . . . . . . . . . . . . . . . . . .   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   8
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   9
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .   9
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  10

1. Introduction ✨

okay so the GMPLS signaling extensions for setting up a bidirectional LSP are functionally described in [RFC3471] πŸ’…. The GMPLS RSVP-TE extensions for that same setup are specified in [RFC3473] πŸ¦‹. A bidirectional LSP shows up as an UPSTREAM_LABEL object in the Path message, and that's how you know it's bidirectional 🌸

here's the existing vibe: every upstream node must allocate a valid upstream label on the outgoing interface before it sends the initial Path message downstream. BUT (and this is the tea β˜•) there are certain scenarios, see Section 4, where it's not desirable or possible for a node to pick that upstream label on its own 😭

so this doc defines the protocol mechanism for those scenarios. A node can offload the job of assigning the upstream label to nodes downstream in the network 🧚 This is only meant for bidirectional LSPs that use symmetric labels at each hop along the LSP path. Bidirectional Lambda Switch Capable (LSC) LSPs use symmetric lambda labels (format specified in [RFC6205]) at each hop, so they're the main vibe here 🌈

now, per the bidirectional LSP setup procedures in [RFC3471] and [RFC3473], the UPSTREAM_LABEL object must indicate a label that is valid for forwarding. This doc updates that rule by letting the UPSTREAM_LABEL object indicate a special label that is not valid for forwarding πŸ”₯

also per the bidirectional LSC LSP setup procedures in [RFC6205], the LABEL_SET object and the UPSTREAM_LABEL object must contain the same label value. Again, this doc updates that by letting the UPSTREAM_LABEL object carry a special label value that's different from the one in the LABEL_SET object πŸ’–


2. Requirements Language πŸŽ€

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 read as described in BCP 14 [RFC2119] [RFC8174], but only when they appear in all capitals, as shown here 🫢 Lowercase versions are just regular English, bestie πŸ’…


3. Unassigned Upstream Label πŸ¦‹

this doc defines a special label value, "0xFFFFFFFF" (for a 4-octet label), to mean an Unassigned Upstream Label 🌸 Similar "all-ones" patterns are expected for labels of other sizes ✨

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

         Figure 1: Unassigned UPSTREAM_LABEL - "all-ones" Pattern

when this value shows up in the UPSTREAM_LABEL object of a Path message, it tells you the upstream node hasn't assigned an upstream label on its own. It's basically asking the downstream node for a label it can use in both the forward and reverse directions 🧚

and here's the bit that matters: the presence of this value in the UPSTREAM_LABEL object of a Path message MUST also be interpreted by the receiving node as a request to mandate symmetric labels for the LSP πŸ”₯ That's not optional, babe.

3.1. Procedures πŸ’œ

the procedures only cover messages exchanged between an upstream node and its immediate downstream node 🌈 The Unassigned Upstream Label gets used by an upstream node when it isn't in a position to pick the upstream label on its own. In that case, the upstream node sends a Path message downstream carrying the Unassigned Upstream Label, and it asks the downstream node to provide a symmetric label πŸ¦‹

if the upstream node wants the downstream node to know about its limits on label selection, it MUST specify a list of valid labels via the LABEL_SET object, as specified in [RFC3473] πŸ’–

then the downstream node picks a suitable symmetric label and sends it back via the LABEL object in the Resv message ✨ The upstream node then starts using that symmetric label for both directions of the LSP πŸŽ€ If the downstream node can't pick a symmetric label, it MUST issue a PathErr message with a "Routing Problem/Unacceptable Label Value" indication 😭 And if the upstream node that signaled the Unassigned Upstream Label gets a label with the "all-ones" pattern, or any other unacceptable label, in the LABEL object of the Resv message, it MUST issue a ResvErr message with a "Routing Problem/Unacceptable Label Value" indication πŸ’€

the upstream node keeps signaling the Unassigned Upstream Label in the Path message even after it gets a good symmetric label in the Resv message 🌸 Why? So the downstream node can pick a different symmetric label if it ever needs to change the label later on 🧚 And if the upstream node gets an unacceptable changed label, it MUST issue a ResvErr message with a "Routing Problem/Unacceptable Label Value" indication πŸ”₯

                  +----------+                    +------------+
               ---| Upstream |--------------------| Downstream |---
                  +----------+                    +------------+

                              Path
                               Upstream Label (Unassigned)
                               Label-Set (L1, L2 ... Ln)
                              ------------------->

                              Resv
                               Label (Assigned - L2)
                              <-------------------

                       Figure 2: Signaling Sequence

3.2. Backwards Compatibility 🫢

okay so if the downstream node runs an implementation that doesn't support the semantics of an Unassigned UPSTREAM LABEL, it will do one of two things πŸ™ˆ Option (a): it rejects the special label value and generates an error as specified in Section 3.1 of [RFC3473]. Option (b): it accepts the value and treats it as a valid label πŸ’€

if the behavior is (a), there are no backwards compatibility concerns 🌈 If the behavior is (b), the downstream node sends back a label with the "all-ones" pattern in the LABEL object of the Resv message, and the upstream node responds by issuing a ResvErr message with a "Routing Problem/Unacceptable Label Value" indication 😭


4. Use-Case: Wavelength Setup for IP over Optical Networks 🌸

picture this, it's giving real world 🌍 Consider the network topology in Figure 3. Nodes A and B are client IP routers hooked up to an optical Wavelength Division Multiplexing (WDM) transport network ✨ F and I are WDM nodes. The transponder sits on the router and connects directly to the add-drop port on a WDM node πŸ¦‹

the optical signal coming from "Router A" gets tuned to a particular wavelength πŸŽ€ On "WDM-Node F", it gets multiplexed with optical signals at other wavelengths πŸ’– Depending on how that multiplexing works, the router might not be allowed to send its signal into the optical network unless it's on the right wavelength. Sending a signal on the wrong wavelength could hurt existing optical trails 😭 And if the clients don't have full visibility into the optical network, they can't pick the correct wavelength ahead of time 🧚

so the rest of this section looks at how the protocol mechanism in this doc lets the optical network pick and tell its clients the correct wavelength 🌈 It's giving network-assigned energy, periodt πŸ‘‘

4.1. Initial Setup ✨

Okay so, here's the handshake, bestie πŸŽ€ Picture three nodes in a row: Router A, Node F in the middle, and Router B at the end.

         +---+                 /-\             /-\                 +---+
         | A |----------------( F ) ~~~~~~~~~ ( I )----------------| B |
         +---+                 \-/             \-/                 +---+

            Path
              Upstream Label (Unassigned/0xFFFFFFFF)
            --------------------->
                                  -- ~~ -- ~~ -->
                                                  Path
                                                  -------------------->
                                                  Resv
                                                  <--------------------
                                  <-- ~~ -- ~~ --
            Resv
              Label (Assigned)
            <---------------------

                     Figure 3: Initial Setup Sequence

Here's how the steps go πŸ’…

  • "Router A" doesn't have enough info to pick a good client wavelength yet 🫠 So it sends a Path message downstream asking the network to assign a symmetric label it can use. Since the client wavelength is unknown, the laser is off at the ingress client. Lowkey iconic, honestly.
  • The downstream node (Node F) gets the Path message, picks the right wavelength values, and forwards them in the right label fields over to the egress client ("Router B") 🧚
  • "Router B" gets the Path message, turns the laser ON, and tunes it to the right wavelength (the one it got in the UPSTREAM_LABEL/LABEL_SET of the Path). Then it sends a Resv message upstream πŸ¦‹
  • The Resv message that the ingress client receives carries a valid symmetric label in the LABEL object. "Router A" turns its laser on and tunes it to the wavelength in that network-assigned symmetric LABEL 🌈

Now, if the egress node relies on RSVP signaling to figure out exactly when to start using the LSP, implementations may choose to combine the sequence above with any of the existing graceful setup procedures 🌸 Those are:

  • "ResvConf" setup procedure ([RFC2205])
  • Two-step "ADMIN STATUS" based setup procedure ("A" bit set in the first step; "A" bit cleared when the LSP is ready for use) ([RFC3473])

4.2. Wavelength Change

Okay, plot twist πŸ™ˆ After the LSP is set up, the network might decide to change the wavelength for that LSP. There are a bunch of reasons this could happen, like policy stuff, restoration within the core, preemption, etc. Main character energy from the network, fr.

So if the ingress client gets a changed label through the LABEL object in a modified Resv message, it retunes the laser at the ingress to the new wavelength ✨ Same deal on the other side: if the egress client gets a changed label via UPSTREAM_LABEL/LABEL_SET in a modified Path message, it retunes the laser at the egress to the new wavelength πŸ’œ

5. IANA Considerations 🌈

IANA maintains the "Generalized Multi-Protocol Label Switching (GMPLS) Signaling Parameters" registry. IANA has added a new subregistry titled "Special Purpose Generalized Label Values". New values get assigned according to Standards Action [RFC8126] πŸ“‹

Here's the new subregistry, bestie:

Special Purpose Generalized Label Values

Pattern/    Label Name            Applicable        Reference
Value                             Objects
--------    ----------------      --------------    ----------
all-ones    Unassigned            UPSTREAM_LABEL    [RFC8359]
            Upstream Label

6. Security Considerations πŸ”

This document defines a special label value that gets carried in the UPSTREAM_LABEL object of a Path message. That special label value is used to enable the function of requesting network assignment of an upstream label 🫢 The changes proposed here are about the semantics of one specific field in an existing RSVP object, plus the procedures around it. So, no new security implications come up from this document, and the security considerations discussed by [RFC3473] still apply.

⚠️ Security is not a vibe to skip! The security considerations in [RFC3473] still apply here, so don't treat this section as the whole story.

For a general discussion on MPLS and GMPLS related security issues, check out the MPLS/GMPLS security framework [RFC5920] πŸ’€

7. References πŸ“š

7.1. Normative References

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

[RFC2205]  Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S.
           Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
           Functional Specification", RFC 2205, DOI 10.17487/RFC2205,
           September 1997, <https://www.rfc-editor.org/info/rfc2205>.

[RFC3471]  Berger, L., Ed., "Generalized Multi-Protocol Label
           Switching (GMPLS) Signaling Functional Description",
           RFC 3471, DOI 10.17487/RFC3471, January 2003,
           <https://www.rfc-editor.org/info/rfc3471>.

[RFC3473]  Berger, L., Ed., "Generalized Multi-Protocol Label
           Switching (GMPLS) Signaling Resource ReserVation Protocol-
           Traffic Engineering (RSVP-TE) Extensions", RFC 3473,
           DOI 10.17487/RFC3473, January 2003,
           <https://www.rfc-editor.org/info/rfc3473>.

[RFC6205]  Otani, T., Ed. and D. Li, Ed., "Generalized Labels for
           Lambda-Switch-Capable (LSC) Label Switching Routers",
           RFC 6205, DOI 10.17487/RFC6205, March 2011,
           <https://www.rfc-editor.org/info/rfc6205>.

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

7.2. Informative References

[RFC5920]  Fang, L., Ed., "Security Framework for MPLS and GMPLS
           Networks", RFC 5920, DOI 10.17487/RFC5920, July 2010,
           <https://www.rfc-editor.org/info/rfc5920>.

[RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
           Writing an IANA Considerations Section in RFCs", BCP 26,
           RFC 8126, DOI 10.17487/RFC8126, June 2017,
           <https://www.rfc-editor.org/info/rfc8126>.

Acknowledgements 🫢

The authors would like to thank Adrian Farrel and Chris Bowers for their inputs. Thank you, legends πŸ’–

Contributors πŸŽ€

John Drake
Juniper Networks
Email: jdrake@juniper.net

Gert Grammel
Juniper Networks
Email: ggrammel@juniper.net

Pawel Brzozowski
ADVA Optical Networking
Email: pbrzozowski@advaoptical.com

Zafar Ali
Cisco Systems, Inc.
Email: zali@cisco.com

Authors' Addresses πŸ¦‹

Xian Zhang (editor)
Huawei Technologies

Email: zhang.xian@huawei.com


Vishnu Pavan Beeram (editor)
Juniper Networks

Email: vbeeram@juniper.net


Igor Bryskin
Huawei Technologies

Email: igor.bryskin@huawei.com


Daniele Ceccarelli
Ericsson

Email: daniele.ceccarelli@ericsson.com


Oscar Gonzalez de Dios
Telefonica

Email: ogondio@tid.es
πŸ“¦ where this page comes from