RFC 7473

Controlling State Advertisements of Non-negotiated LDP Applications

๐Ÿ“… published March 2015, from ietf

RFC 7473: Controlling State Advertisements of Non-negotiated LDP Applications ๐ŸŽ€

okay so this one is from K. Raza and S. Boutros at Cisco Systems, Inc., published March 2015 as a Standards Track doc, which means it's the real deal and not just an opinion piece ๐Ÿ’… It's got ISSN 2070-1721 and it's an official IETF thing. It doesn't list anything it obsoletes or updates, so it's standing on its own, no drama ๐Ÿซถ

Abstract

okay bestie, here's the tea. LDP applications that set up LSPs for IP prefixes or signal point-to-point (P2P) Pseudowires (PWs) for Layer 2 Virtual Private Networks (L2VPNs) have no capability negotiation at all ๐Ÿ’€ So when an LDP session comes up, a speaker might be sending its local state for those apps even when the session is only there for something else, like Multipoint LDP (mLDP) or the Inter-Chassis Communication Protocol (ICCP). this doc fixes it by letting an LDP speaker tell its peer it's not interested in those non-negotiated apps. the peer then stops sending that app state over the session, which is so iconic ๐Ÿงš

Status of This Memo

this is an Internet Standards Track document ๐ŸŒธ

it's a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). if you want more on Internet Standards, check Section 2 of RFC 5741.

for info on the current status, any errata, or how to send feedback, go to http://www.rfc-editor.org/info/rfc7473 โœจ

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. ๐Ÿฆ‹

this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they're in effect on the publication date. please actually read them, because they explain your rights and restrictions for this doc ๐Ÿ™ˆ any Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as the Simplified BSD License describes.

Table of Contents

   1. Introduction ....................................................3
   2. Conventions Used in This Document ...............................4
   3. Non-negotiated LDP Applications .................................4
      3.1. Uninteresting State ........................................5
           3.1.1. Prefix-LSPs .........................................5
           3.1.2. P2P-PWs .............................................5
   4. Controlling State Advertisement .................................5
      4.1. State Advertisement Control Capability .....................6
      4.2. Capabilities Procedures ....................................8
           4.2.1. State Control Capability in an
                  Initialization Message ..............................9
           4.2.2. State Control Capability in a Capability Message ....9
   5. Applicability Statement .........................................9
   6. Operational Examples ...........................................11
      6.1. Disabling Prefix-LSPs and P2P-PWs on an ICCP Session ......11
      6.2. Disabling Prefix-LSPs on a L2VPN/PW tLDP Session ..........11
      6.3. Disabling Prefix-LSPs Dynamically on an
           Established LDP Session ...................................12
      6.4. Disabling Prefix-LSPs on an mLDP-only Session .............12
      6.5. Disabling IPv4 or IPv6 Prefix-LSPs on a Dual-Stack LSR ....12
   7. Security Considerations ........................................13
   8. IANA Considerations ............................................13
   9. References .....................................................14
      9.1. Normative References ......................................14
      9.2. Informative References ....................................14
   Acknowledgments ...................................................15
   Authors' Addresses ................................................15

1. Introduction โœจ

okay so the LDP Capabilities spec [RFC5561] brought in a way to negotiate LDP capabilities for a feature between peer Label Switching Routers (LSRs). the whole point is that no unnecessary state gets swapped between peers unless the matching feature capability was successfully negotiated ๐Ÿซถ

newer LDP features and apps like Typed Wildcard Forwarding Equivalence Class (FEC) [RFC5918], Inter-Chassis Communication Protocol [RFC7275], mLDP [RFC6388], and L2VPN Point-to-multipoint (P2MP) PW [RFC7338] all use the LDP capabilities framework for feature negotiation, which is so responsible of them ๐Ÿ‘‘ the older LDP apps though let speakers swap application state with no capability negotiation at all ๐Ÿ˜ญ so when an app isn't enabled on one of the speakers, you end up with unnecessary state advertisement. the older apps are (i) setting up LSPs for IP unicast prefixes and (ii) signaling L2VPN P2P PWs [RFC4447] [RFC4762]. for example, if you're bringing up an LDP peer session with a remote Provider Edge (PE) LSR just for ICCP signaling, an LDP speaker might still advertise labels for IP (unicast) prefixes to that ICCP-related peer. not it ๐Ÿ’€

there's another example too, when LDP gets deployed in an IP dual-stack environment. an LSR that's locally enabled to set up LSPs for both IPv4 and IPv6 prefixes might advertise (address and label) bindings for both families to an LDP peer that only wants IPv4 bindings. the IPv6 bindings are unnecessary, and also wasteful from the point of view of LSR memory/CPU and network resource consumption, which is giving "why are we doing this" ๐Ÿ™ˆ

to dodge all this unnecessary advertisement, operators usually have to configure filtering policies on the LSR. that adds unnecessary operational overhead and complexity to these deployments, and nobody wants that ๐Ÿ˜ฉ

this document defines a solution based on LDP Capabilities [RFC5561] where an LDP speaker can tell its peer(s) it's not interested in (or doesn't support) state for setting up IP Prefix LSPs and/or signaling L2VPN P2P PWs, at the time the session gets established. this capability helps avoid unnecessary state advertisement for those feature applications. the doc also explains how to dynamically disable or enable state advertisement for those apps during the session lifetime ๐Ÿฆ‹ what counts as "uninteresting" state depends on the type of application, and it's spelled out later in Section 3.1.

2. Conventions Used in This Document ๐ŸŒˆ

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].

the term "IP" in this document refers to both IPv4 and IPv6 unicast address families.

3. Non-negotiated LDP Applications ๐Ÿงš

for the apps that existed before the LDP Capabilities framework [RFC5561] was defined, an LDP speaker usually advertises its application state to its peers right after the session is established, without waiting for any capabilities exchange and negotiation. these early LDP apps include:

  • IPv4/IPv6 Prefix LSPs Setup
  • L2VPN P2P FEC 128 and FEC 129 PWs Signaling

the rest of this document uses these shorthand terms for those earlier LDP apps:

  • "Prefix-LSPs": refers to an app that sets up LDP LSPs for IP routes/prefixes by advertising label bindings for Prefix FEC (as defined in RFC 5036).
  • "P2P-PWs": refers to an app that signals FEC 128 and/or FEC 129 L2VPN P2P PWs using LDP (as defined in RFC 4447).

to turn off unnecessary state exchange for these LDP apps over an established LDP session, this doc introduces a new capability. it controls the advertisement of app state and lets an LDP speaker tell its peer it isn't interested in the state of one or more of these "Non-negotiated" LDP apps at session establishment time. when the receiving LDP speaker gets this capability and supports it, it turns off advertising the state related to that app toward whoever sent the capability. this new capability can also be sent later in a Capability message, either to turn off a previously enabled app's state advertisement or to turn back on a previously disabled one โœจ

3.1. Uninteresting State ๐Ÿ’…

a uninteresting state of a non-negotiated LDP application:

  • is the application state that is of no interest to an LSR and need not be advertised to the LSR;
  • need not be advertised in any of the LDP protocol messages;
  • is dependent on application type and specified accordingly.

3.1.1. Prefix-LSPs ๐Ÿ“

for the Prefix-LSP app type, uninteresting state means any state related to IP Prefix FEC (like FEC label bindings and LDP Status). this doc, however, does not classify IP address bindings (advertised via ADDRESS message) as uninteresting state, and it allows IP address bindings to be advertised. the reason is that an LSR typically uses peer IP address(es) to map an IP routing next hop to an LDP peer so it can run its control plane procedures. for example, mLDP [RFC6388] uses a peer's IP address(es) to figure out its upstream LSR to reach the Root node, and to pick the forwarding interface toward its downstream LSR. so in an mLDP-only network, disabling advertisement of label bindings for IP (unicast) prefixes is desirable, but disabling advertisement of IP address bindings will break mLDP functionality ๐Ÿ˜ญ other LDP apps may also depend on learnt peer IP addresses too, so this doc doesn't put IP address bindings into the uninteresting state category, to keep those apps working.

3.1.2. P2P-PWs ๐Ÿ’œ

for the P2P-PW app type, uninteresting state means any state related to P2P PW FEC 128 / FEC 129 (like FEC label bindings, Media Access Control (MAC) address withdrawal, and LDP PW Status). in this document, the term "state" refers to the "uninteresting state" for an application, as defined in this section.

4. Controlling State Advertisement ๐ŸŽ€

to control advertisement of uninteresting state related to the non-negotiated LDP apps defined in Section 3, a new capability TLV is defined as follows.

4.1. State Advertisement Control Capability โœจ

okay bestie, this is the State Advertisement Control Capability ๐ŸŽ€ It's a brand new Capability Parameter TLV, defined under Section 3 of the LDP Capabilities spec [RFC5561]. Here's the layout:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F|  SAC Capability (0x050D)  |           Length              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S|  Reserved   |                                               |
+-+-+-+-+-+-+-+-+                                               |
|                                                               |
~            State Advertisement Control Element(s)             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 1: Format of a "State Advertisement Control Capability" TLV

the U-bit on this TLV MUST be set to 1, so a receiver MUST silently ignore it if it doesn't recognise it and just keep processing the rest of the message ๐Ÿ™ˆ The F-bit MUST be set to 0 ๐Ÿ’… And here's the big one: once this capability is advertised, it can't be taken back, so the S-bit MUST be set to 1 in an Initialization and Capability message. no cap, it's permanent โœจ

the capability data is one or more State Advertisement Control Elements, and each element says whether to turn advertisement of uninteresting state on or off for one application ๐Ÿฆ‹ Each element looks like this:

                     0 1 2 3 4 5 6 7
                    +-+-+-+-+-+-+-+-+
                    |D| App |Unused |
                    +-+-+-+-+-+-+-+-+

Figure 2: Format of "State Advertisement Control Element"

here's the breakdown ๐Ÿ’–

  • D-bit: this is the on/off switch for whatever app is in the "App" field:
    • 1: disable state advertisement
    • 0: enable state advertisement
    • when it's sent in an Initialization message, the D-bit MUST be set to 1
  • App: picks the legacy application type you want to control:
    • 1: IPv4 Prefix-LSPs (LSPs for IPv4 prefixes)
    • 2: IPv6 Prefix-LSPs (LSPs for IPv6 prefixes)
    • 3: FEC 128 P2P-PW (L2VPN PWid FEC signaling)
    • 4: FEC 129 P2P-PW (L2VPN Generalized PWid FEC signaling)
    • any other value in this field MUST be treated as an error ๐Ÿ’€
  • Unused: this one is just padding. It must be zero when you send it, and it gets ignored when you receive it.

the Length field of the SAC Capability TLV (in octets) is worked out like this:

Length (in octets) = 1 + number of SAC elements

for example, if there are two SAC elements, then the Length field is set to 3 octets ๐Ÿงš The receiver can figure out how many elements are in the TLV just by reading that Length field, so it's basically self-counting, iconic ๐Ÿ‘‘

quick note: this document uses the word "element" to mean a SAC Element, so when you see "element" just think SAC Element ๐ŸŒธ

so, as we talked about earlier, an LDP speaker MAY include the SAC Capability TLV in an Initialization message. That tells its peer LSR that state exchange for one or more applications should be turned off on that peer session ๐ŸŽ€ It can also show up later in a Capability message to selectively switch those applications on or off ๐Ÿ”ฅ And if one TLV has more than one element, the elements MUST belong to distinct app types, and the same app type MUST NOT appear more than once. if a receiver gets a malformed TLV like that, it SHOULD throw it out and keep going with the rest of the message ๐Ÿ˜ญ And if an LSR gets an element whose "App" field is set to something that isn't listed above, the receiver MUST ignore and discard that element and keep processing the rest of the TLV ๐Ÿ’…

if a sender wants to control more than one application, it has two options: stuff several elements into one capability TLV in one message, or send separate messages each with its own TLV holding one or more elements ๐Ÿฆ‹ Either works! But a receiving LSR MUST treat each incoming capability TLV that has an element for a given application type as an update to its existing policy for that type. it's basically a running update system, bestie ๐ŸŒˆ

okay let's do an example so this clicks ๐Ÿซถ Say we have two LSRs, S (the LDP speaker) and P (the LDP peer), and both support all of the non-negotiated applications from earlier. By default, they'll advertise state for those apps, as configured, to their peer as soon as an LDP session comes up โœจ

  • P gets a SAC capability from S in an Initialization message with "IPv6 Prefix-LSPs" and "FEC 129 P2P-PW" disabled. That updates P's outbound policy toward S, so P only advertises state for IPv4 Prefix-LSPs and FEC 128 P2P-PW now ๐ŸŒธ
  • Later, P gets another capability update from S in a Capability message with "IPv6 Prefix-LSPs" enabled and "FEC 128 P2P-PWs" disabled. Now P's outbound policy toward S advertises both IPv4 and IPv6 Prefix-LSPs, and both FEC 128 and FEC 129 P2P-PWs signaling are turned off ๐Ÿ”ฅ
  • Finally, P gets an update from S in a Capability message that disables all four non-negotiated application states. P's outbound policy toward S now blocks state for all of these apps, and it only advertises state for any other application, as applicable ๐Ÿ™ˆ

That's the whole flow, periodt ๐Ÿ’œ


4.2. Capabilities Procedures

the SAC capability is basically an LSR saying "pls stop sending me stuff I don't want" ๐Ÿ™…โ€โ™€๏ธ It's unilateral and unidirectional, which means the receiving LSR is not required to send a similar capability TLV back in an Initialization or Capability message to the sender. this one-way vibe follows the procedures in Section 6 of LDP Capabilities [RFC5561] โœจ

once this capability is successfully negotiated (meaning it's sent by an LSR and received and understood by its peer), the receiving LSR MUST NOT advertise any state for the disabled applications to the capability-sending LSR. it stays that way until those application states get explicitly enabled again through a capability update ๐Ÿ›‘ And if a capability update turns off an application state that was enabled during the session, the receiving LSR MUST also withdraw any state it previously advertised for that disabled application. no leftovers, bestie ๐Ÿงน

if a receiving LDP speaker doesn't understand the SAC capability TLV, it MUST reply to the sender with an "Unsupported TLV" notification, as described in "LDP Capabilities" [RFC5561] ๐ŸŽ€ And if it doesn't understand or support an application named in an application control element, it SHOULD silently ignore or skip that element and keep processing the rest of the TLV ๐Ÿ’–

4.2.1. State Control Capability in an Initialization Message

the LDP Capabilities framework [RFC5561] says the S-bit of the capability parameter in an Initialization message MUST be set to 1, and SHOULD be ignored on receipt ๐ŸŒˆ (yes, it's a little contradictory on purpose-ish, but it's what the spec says ๐Ÿ™ˆ)

an LDP speaker decides, through local configuration or a default policy, whether it needs to disable Prefix-LSPs and/or P2P-PW applications with a peer LSR ๐Ÿฆ‹ If it does, the SAC TLV goes in the Initialization message with the matching SAC elements, and their D-bits are set to 1 โœจ

an LDP speaker that supports the SAC capability MUST interpret the capability TLV in a received Initialization message so that it disables advertisement of application state toward the capability-sending LSR for Prefix-LSPs and/or P2P-PW applications whenever their SAC element's D-bit is set to 1 ๐Ÿ‘‘

4.2.2. State Control Capability in a Capability Message

if the LDP peer supports the "Dynamic Announcement Capability" [RFC5561], then an LDP speaker MAY send a SAC capability in a Capability message to that peer ๐Ÿซถ Once advertised, these capabilities can't be withdrawn, so the S-bit of the TLV MUST be set to 1 when it's sent in a Capability message ๐Ÿ’…

an LDP speaker may decide to send this TLV to a peer when one or more of its Prefix-LSPs and/or P2P-PW applications get disabled, or when a previously disabled application gets enabled again ๐Ÿ”ฅ In that case, it builds the TLV with the right SAC elements and sends it in a Capability message ๐ŸŒธ

when the receiving LDP speaker gets this TLV in a Capability message, it reacts the same way it would if the TLV had arrived in an Initialization message. On top of that, the peer withdraws or advertises application state to or from the capability-sending LDP speaker, according to the capability update ๐Ÿงš

5. Applicability Statement โš ๏ธ

Okay bestie, this is the "read this before you touch anything" section ๐Ÿซถ. The procedures in this document may result in a disabling announcement of label bindings for IP Prefixes and/or P2P PW FECs, so they should be used with caution and discretion ๐Ÿ˜ญ. This document recommends that this new SAC capability and its procedures SHOULD be enabled on an LSR only via a configuration knob. That knob could be a global LDP knob or be implemented per LDP neighbor ๐ŸŽ€. So it is recommended that an operator SHOULD enable this capability and its associated procedures on an LSR towards a neighbor only if it is known that such bindings advertisement and exchange with the neighbor is unnecessary and wasteful ๐Ÿ—‘๏ธ.

Here's a table of typical LDP session types where this new SAC capability and its procedures are expected to be applied to turn off advertisement of uninteresting state. It's not the full list, but it's a solid starting point ๐Ÿ“‹:

+===============================+=================================+
| Session Type(s)               | Uninteresting State             |
+===============================+=================================+
| P2P-PW FEC 128-only           | IP Prefix LSPs + P2P-PW FEC 129 |
|-------------------------------|---------------------------------|
| P2P-PW only (FEC 128/129)     | IP Prefix LSPs                  |
|-------------------------------|---------------------------------|
| IPv4-only on a Dual-Stack LSR | IPv6 Prefix LSPs + P2P-PW       |
|-------------------------------|---------------------------------|
| IPv6-only on a Dual-Stack LSR | IPv4 Prefix LSPs + P2P-PW       |
|-------------------------------|---------------------------------|
| mLDP-only                     | IP Prefix LSPs + P2P-PW         |
|-------------------------------|---------------------------------|
| ICCP-only                     | IP Prefix LSPs + P2P-PW         |
+-------------------------------+---------------------------------+

Now, a plot twist ๐ŸŒ€. If an application's state needs to change after the session has already started (like turning a disabled app back on, or turning an enabled one off), the procedures in this document expect LSR peers to support the LDP "Dynamic Announcement" Capability. That lets them announce the SAC capability change in an LDP Capability message ๐Ÿ’Œ. But if any of the peering LSRs don't support that capability, the backup plan is to force reset the LDP session so the new SAC capability gets advertised during the next session initialization ๐Ÿ”„.

Here are some more important things an operator needs to think about when it comes to this new capability and its procedures ๐Ÿง :

  • An operator SHOULD disable Prefix-LSP state on any Targeted LDP (tLDP) session that is established for ICCP-only and/or PW-only purposes. ๐Ÿšซ
  • An operator MUST NOT disable Prefix-LSP state on any tLDP session that is established for reasons related to remote Loop-Free Alternate (LFA) Fast Re-Route (FRR) [RLFA]. ๐Ÿ™…โ€โ™€๏ธ Absolutely not, bestie.
  • In a remote network that is LFA FRR [RLFA] enabled, it is RECOMMENDED not to disable Prefix-LSP state on a tLDP session, even if the current session type is PW-only and/or ICCP-only. The reason is that any remote/tLDP neighbor could potentially be picked as a remote LFA PQ node ๐Ÿง.
  • This capability SHOULD be enabled for Prefix-LSPs in the scenarios where it is desirable to disable (or enable) advertisement of "all" the prefix label bindings. For scenarios where a "subset" of bindings needs to be filtered, the existing filtering procedures for label binding announcement should be used ๐ŸŽฏ.
  • Using label advertisement filtering policies together with the procedures defined in this document for Prefix-LSPs is allowed ๐Ÿ™Œ. In that case, label bindings will be announced according to the label filtering policy for the given neighbor when the Prefix-LSP application is enabled.

6. Operational Examples ๐ŸŽฌ

6.1. Disabling Prefix-LSPs and P2P-PWs on an ICCP Session ๐Ÿ’โ€โ™€๏ธ

Picture two PE routers, LSR1 and LSR2 ๐Ÿ–ฅ๏ธ๐Ÿ–ฅ๏ธ. Both understand and support the SAC capability TLV, and they have an established LDP session to exchange ICCP state for the dual-homed devices connected to them. Let's say both LSRs are provisioned not to exchange any state for the Prefix-LSPs (IPv4/IPv6) and P2P-PWs (FEC 128/129) applications ๐Ÿ™….

To show they're not interested in these applications, the LSRs include a SAC capability TLV in the Initialization message. That TLV has four SAC elements, one for each of the four applications, and the D-bit is set to 1 for each one โœ…. When the receiving LSR gets this TLV in the Initialization message, it disables the advertisement of IPv4/IPv6 label bindings, as well as P2P PW FEC 128/129 signaling, towards its peer after the session is established ๐Ÿ’–.

6.2. Disabling Prefix-LSPs on a L2VPN/PW tLDP Session ๐ŸŒ

Say LSR1 and LSR2 have an established tLDP session for P2P-PW applications, exchanging label bindings for FEC 128/129 ๐Ÿ’ž. Since most typical deployments don't need IP label bindings exchanged between PE LSRs over a PW tLDP session, let's assume the LSRs are provisioned to disable the IPv4/IPv6 Prefix-LSPs application state on that PW session ๐Ÿ™ˆ.

To show they're not interested in Prefix-LSP applications over a PW tLDP session, the LSRs follow the same procedures described in the previous section ๐Ÿ”. The result is that only P2P-PW-related state gets exchanged between these LSRs over this tLDP session โœจ.

6.3. Disabling Prefix-LSPs Dynamically on an Established LDP Session ๐ŸŒ™

Imagine the LSRs from the previous sections were first set up to exchange both Prefix-LSP and P2P-PW state over the session between them. They also support the "Dynamic Announcement" Capability from [RFC5561] ๐Ÿ™Œ. Now, LSR1 gets dynamically provisioned to disable (IPv4/IPv6) Prefix-LSPs over a tLDP session with LSR2 ๐Ÿ˜ฎ. In this case, LSR1 sends a SAC capability TLV in a Capability message towards LSR2. The TLV has application control elements for IPv4 and IPv6 Prefix-LSPs, with the D-bit set to 1 ๐Ÿ’…. When LSR2 receives this TLV, it disables the Prefix-LSPs application state(s) towards LSR1 and withdraws all previously advertised application state from LSR1 ๐Ÿซฅ. To withdraw label bindings from its peer, LSR2 MAY use a single Prefix FEC Typed Wildcard Label Withdraw message [RFC5918], as long as the peer supports the Typed Wildcard FEC capability ๐Ÿงน.

Turning off the Prefix-LSPs application this way does not affect the L2VPN P2P-PW application on the session. Both LSRs should keep exchanging state related to the PW Signaling applications ๐Ÿ’œ.

6.4. Disabling Prefix-LSPs on an mLDP-only Session ๐Ÿฆ‹

Assume LSR1 and LSR2 have formed an LDP session to exchange mLDP state only ๐Ÿซง. In typical deployments, LSR1 and LSR2 also exchange bindings for IP (unicast) prefixes over that session. That's unnecessary and wasteful for an mLDP-only LSR ๐Ÿ™„.

Using the procedures defined earlier, an LSR can tell its peer it's not interested in Prefix-LSP application state, either at session establishment time or later on through an LDP capabilities update ๐Ÿ“ฃ.

Looking back at Section 3.1, the peer disables the advertisement of any state related to IP Prefix FECs. It still advertises the IP address bindings that mLDP needs to operate correctly ๐ŸŒธ.

6.5. Disabling IPv4 or IPv6 Prefix-LSPs on a Dual-Stack LSR ๐ŸŒˆ

In IP dual-stack setups, LSR2 may advertise state nobody needs (like IPv6 prefix label bindings) towards peer LSR1 for IPv6 Prefix-LSP applications. This can happen once a session is up that was mainly meant for exchanging IPv4 state ๐Ÿคฆโ€โ™€๏ธ. The same thing can happen the other way around, with IPv4 Prefix-LSP state on a session meant for IPv6. The SAC capability and its procedures in this document help avoid that unnecessary advertising ๐Ÿงผ.

Picture an IP dual-stack environment where LSR2 is enabled for Prefix-LSPs for both IPv4 and IPv6, but LSR1 is only enabled for (or only interested in) IPv4 Prefix-LSPs ๐ŸŽ€. To avoid getting unwanted IPv6 Prefix-LSP state advertisements from LSR2, LSR1 can send a SAC capability with an element for IPv6 Prefix-LSPs, with the D-bit set to 1, in the Initialization message towards LSR2 when the session is set up ๐Ÿ™…โ€โ™€๏ธ. Once LSR2 gets this capability, it disables all IPv6 label binding advertisements towards LSR1 ๐Ÿ’ซ. If IPv6 Prefix-LSP applications get enabled on LSR1 later, LSR1 can update the capability by sending a SAC capability in a Capability message towards LSR2. That turns the application back on dynamically ๐Ÿ”›.

7. Security Considerations ๐Ÿ”๐Ÿ˜ฑ

The proposal introduced in this document does not introduce any new security considerations beyond those that already apply to the base LDP specification [RFC5036] and to MPLS and GMPLS [RFC5920]. No new security drama here, but the base LDP and MPLS/GMPLS security considerations still apply. Stay safe out there, bestie ๐Ÿ’–.

8. IANA Considerations ๐Ÿงพ

This document defines a new LDP capability parameter TLV. IANA has assigned the following value from the "TLV Type Name Space" in the "Label Distribution Protocol (LDP) Parameters" registry as the new code point for the new LDP capability TLV code point ๐Ÿ“š.

+--------+---------------------+-----------+-----------------------+
| Value  | Description         | Reference |Notes/Registration Date|
+--------+---------------------+-----------+-----------------------+
| 0x050D | State Advertisement | RFC 7473  |                       |
|        | Control Capability  |           |                       |
+--------+---------------------+-----------+-----------------------+

9. References ๐Ÿ“–

9.1. Normative References

9.2. Informative References โœจ

okay bestie, these are the extra reads ๐Ÿ“š You don't need them to implement the spec, but they're the good stuff if you want to go deeper ๐Ÿ’–

[RFC4447] Martini, L., Ed., Rosen, E., El-Aawar, N., Smith, T., and G. Heron, "Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP)", RFC 4447, April 2006, http://www.rfc-editor.org/info/rfc4447. ๐ŸŽ€

[RFC4762] Lasserre, M., Ed., and V. Kompella, Ed., "Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling", RFC 4762, January 2007, http://www.rfc-editor.org/info/rfc4762. ๐Ÿฆ‹

[RFC5918] Asati, R., Minei, I., and B. Thomas, "Label Distribution Protocol (LDP) 'Typed Wildcard' Forward Equivalence Class (FEC)", RFC 5918, August 2010, http://www.rfc-editor.org/info/rfc5918. ๐ŸŒธ

[RFC5920] Fang, L., Ed., "Security Framework for MPLS and GMPLS Networks", RFC 5920, July 2010, http://www.rfc-editor.org/info/rfc5920. ๐Ÿ”

[RFC6388] Wijnands, IJ., Ed., Minei, I., Ed., Kompella, K., and B. Thomas, "Label Distribution Protocol Extensions for Point-to-Multipoint and Multipoint-to-Multipoint Label Switched Paths", RFC 6388, November 2011, http://www.rfc-editor.org/info/rfc6388. ๐Ÿ“

[RFC7275] Martini, L., Salam, S., Sajassi, A., Bocci, M., Matsushima, S., and T. Nadeau, "Inter-Chassis Communication Protocol for Layer 2 Virtual Private Network (L2VPN) Provider Edge (PE) Redundancy", RFC 7275, June 2014, http://www.rfc-editor.org/info/rfc7275. ๐Ÿงš

[RFC7338] Jounay, F., Ed., Kamite, Y., Ed., Heron, G., and M. Bocci, "Requirements and Framework for Point-to-Multipoint Pseudowires over MPLS Packet Switched Networks", RFC 7338, September 2014, http://www.rfc-editor.org/info/rfc7338. ๐Ÿ’œ

[RLFA] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. So, "Remote Loop-Free Alternate (LFA) Fast Re-Route (FRR)", draft-ietf-rtgwg-remote-lfa-11, Work in Progress, January 2015. ๐Ÿšง


Acknowledgments ๐Ÿซถ

the authors wanna give a huge shoutout to Eric Rosen and Alexander Vainshtein for reviewing the doc and leaving valuable comments, and we also stan Karthik Subramanian and IJsbrand Wijnands for bringing up the mLDP use case ๐Ÿ‘‘๐Ÿ’…

Authors' Addresses ๐Ÿ’Œ

Kamran Raza

Kamran Raza
Cisco Systems, Inc.
2000 Innovation Drive
Ottawa, ON K2K-3E8
Canada
EMail: skraza@cisco.com

Sami Boutros

Sami Boutros
Cisco Systems, Inc.
3750 Cisco Way
San Jose, CA 95134
United States
EMail: sboutros@cisco.com
๐Ÿ“ฆ where this page comes from