RFC 6478
Pseudowire Status for Static Pseudowires
RFC 6478: Pseudowire Status for Static Pseudowires π
okay so bestie, this is RFC 6478, and it's an IETF Standards Track doc from May 2012 π It was written by L. Martini, G. Swallow, and G. Heron (all at Cisco) and M. Bocci (at Alcatel-Lucent), and it lives under ISSN 2070-1721. The big headline is that it updates RFC 5885 π¦ Only that one, so no obsoleting drama here. Let's get into it β¨
Abstract
This doc is all about sending Pseudowire (PW) status messages over a PW associated channel (ACh) π§ It's built for static PWs, which are the ones with no dynamic control plane at all. It also covers the case where a Terminating Provider Edge (T-PE) needs to send a PW status message straight to the far-end T-PE. The whole mechanism lets PW Operations, Administration, and Maintenance (OAM) message mapping and PW redundancy work on static PWs too, which is so iconic π It also updates RFC 5885 for when Bi-directional Forwarding Detection (BFD) is being used to carry the PW status-signaling info.
Status of This Memo
This is an Internet Standards Track document π₯
It comes from the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community. It went through public review and got the green light from the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 5741 πΈ
For the current status, any errata, and how to give feedback, go to http://www.rfc-editor.org/info/rfc6478 π
Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved π«Ά
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stood on the publication date. Read these carefully, because they spell out your rights and restrictions. Any Code Components pulled out of this document must include the 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 says π
Table of Contents
1. Introduction ....................................................3
2. Specification of Requirements ...................................3
3. Terminology .....................................................3
4. Applicability ...................................................3
5. Pseudowire Status Operation .....................................4
5.1. PW OAM Message .............................................4
5.2. Sending a PW Status Message ................................5
5.3. PW OAM Status Message Transmit and Receive .................6
5.3.1. Acknowledgment of PW Status .........................7
5.4. MPLS Label Stack ...........................................7
5.4.1. Label Stack for a Message Destined to the Next PE ...8
5.4.2. Label Stack for a Message Destined to the Egress PE .8
5.5. S-PE Bypass Mode ...........................................8
5.5.1. S-PE Bypass Mode LDP Flag Bit .......................9
6. S-PE Operation .................................................10
6.1. Static PW to Another Static PW ............................10
6.2. Dynamic PW to Static PW or Vice Versa .....................10
7. Security Considerations ........................................11
8. IANA Considerations ............................................11
9. References .....................................................11
9.1. Normative References ......................................11
9.2. Informative References ....................................12
1. Introduction β¨
okay so the default control plane for PW tech, as defined in [RFC4447], is the Label Distribution Protocol (LDP) π BUT that doc also describes a static provisioning mode that has no control plane at all. When you're using a static PW, there's no way to send the status of the PW or the attachment circuit (AC) between the two Provider Edge (PE) devices at each end, and that's giving "no way to know what's going on" π
So this doc defines a way to carry the PW status codes from Section 5.4.2 of [RFC4447] (and the ones in [REDUNDANCY]) in-band with the PW data, using a generic associated channel from [RFC5586] π¦
2. Specification of Requirements π
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 [RFC2119]. These are the official requirement words, so they hit different π
3. Terminology π§
Here's the glossary, bestie:
ACh: Associated Channel
ACH: Associated Channel Header
FEC: Forwarding Equivalence Class
LDP: Label Distribution Protocol
LSP: Label Switching Path
MS-PW: Multi-Segment Pseudowire
PE: Provider Edge
PW: Pseudowire
SS-PW: Single-Segment Pseudowire
S-PE: Switching Provider Edge Node of MS-PW
T-PE: Terminating Provider Edge Node of MS-PW
4. Applicability π
As described in [RFC4447] and [RFC6310], a PE that sets up an MPLS PW by some means other than LDP, like static configuration, MUST support some alternative method of status reporting. This doc's procedures are for when PWs are statically configured and there's no LDP control plane available π
As defined in [RFC4447], a PE that sets up a PW using LDP MUST use the PW status TLV mechanism for AC and PW status and defect notification on that PW. To avoid duplicate and potentially conflicting notifications, those PEs MUST NOT use the mechanisms in this doc for those PWs. The one exception is the S-PE bypass mode from Section 5.5, which MAY be used when both T-PEs at each end of the PW use LDP to set up the PW π
Same goal here: to protect against duplicate and potentially conflicting notifications. When the Pseudowire Status protocol for Static Pseudowires from this doc is in use, the BFD VCCV (Virtual Circuit Connectivity Verification) status-signaling mechanisms from [RFC5885] (CV Types 0x08 and 0x20) MUST NOT be used. BFD VCCV for fault detection (CV types 0x04 and 0x10) MAY still be used π«Ά
5. Pseudowire Status Operation π₯
5.1. PW OAM Message π
The PW status TLV from Section 5.4.2 of [RFC4447] gets carried in a PW OAM message using the PW ACH. Here's the packet 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 1|Version| Reserved | 0x0027 PW OAM Message |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Refresh Timer | TLV Length |A| Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ TLVs ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: ACh PW OAM Message Packet Header
The first 32 bits are the standard ACH header construct from [RFC5586] π§
The first nibble (0001b) tells you it's the ACH and not PW data. The version and the reserved values are both set to 0, as specified in [RFC4385] π
The refresh timer is an unsigned integer that gives the refresh time in seconds, from 1 to 65535. A value of 0 means the refresh timer is set to infinity: the PW OAM message never gets refreshed and never times out β³
The TLV length field only counts the length of the TLVs. This doc only covers carrying the PW status TLV from Section 5.4.2 of [RFC4447] in the TLV field. Later on, more TLVs might be defined for this field, with code points from the IANA registry called "LDP TLV Type Name Space" πΈ
The A flag bit says there's an acknowledgment of the PW status TLV that's included. The rest of the flag bits are reserved, and they MUST be set to 0 on transmit and ignored on receipt. When the A bit is set, the refresh timer value is a requested timer value π
The PW OAM Message code point value is 0x0027 π
5.2. Sending a PW Status Message π¨
PW Status messages go in-band, inside a PW OAM message that holds the PW Status TLV for a particular PW, as defined in [RFC4447]. The PW Status TLV format is almost the same as in [RFC4447], and it's repeated here so you don't have to flip around π«Ά
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Res| PW Status (0x096A) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status Code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: PW Status TLV Format
Unlike in [RFC4447], the first 2 bits here are reserved, and they MUST be set to zero on transmit and ignored on receipt. Not the same as before, so watch out π
The PW Status TLV gets a PW OAM message header in front of it, and it's sent on the ACh of the PW that the status update applies to π¦
To clear a particular status indication, the PE needs to send a new PW OAM message with a PW Status TLV where the corresponding bit is cleared, as defined in [RFC4447] β¨
The procedures in [RFC6073] that apply to an S-PE and a PW using an LDP control plane also apply when you send PW status over the PW OAM channel. The OPTIONAL procedures that use the SP-PE TLV from [RFC6073] can also be applied when sending PW status over the PW OAM channel π
The detailed message transmit and receive procedures are in the next section π Also, PW OAM status messages MUST NOT be used as a connectivity verification method. Don't skip this one bestie, it's a big deal π
5.3. PW OAM Status Message Transmit and Receive β¨
Okay bestie, this one is different from the PW status stuff in [RFC4447] π because there is no TCP/IP session and no session management π ββοΈ. So a message isn't sent just once like it is in the TCP/IP case. The PW OAM message carrying the PW status TLV has to keep getting resent so it actually arrives π. If a malformed TLV or an unknown TLV shows up in a PW OAM status message, the TLV MUST be ignored, and the PE SHOULD report the event to the operator π¨.
A PW OAM message with a PW status TLV whose status bit has just been set or reset gets sent right away by the PE β‘. If nobody acknowledges it within a second, that same PW OAM message gets sent twice more, one second apart to start. After that, it goes out on the interval set by the refresh timer value in the packet β°. And here's the bit I'm obsessed with: this value MAY be updated in the new PW OAM message packet π¦. When that happens, the new refresh timer value becomes the new packet transmit interval π.
The suggested default for the refresh timer is 600 seconds πΈ. That's totally fine for typical deployments, and PEs are built to handle processing these messages at the required rate πͺ.
When a PW OAM message with a status TLV comes in, a timer starts based on the refresh rate in the packet β±οΈ. If another non-zero PW status message doesn't show up within 3.5 times the timer value, the status condition times out after 3.5 times the last refresh timer value received, and the PW falls back to the default status of zero π. Also, it's good practice to add some jitter to the delay between refresh transmissions π, as long as the maximum jitter delay stays within the prescribed maximum refresh time of 3.5 times the specified timer value for 3 consecutive refresh packets π§.
To clear a status fault, the PE only needs to send an updated message with the matching bit cleared π«Ά. If the PW status code is zero, the PW OAM message gets sent like any other PW OAM status message, using the procedures above. The difference is that transmission stops after 3 PW status messages have gone out at one second intervals, and before the refresh timer expires π. A PW status message of zero MAY be acknowledged using the procedures in Section 5.3.1 π. If it is acknowledged, then a timer value of zero MUST be used π―. This SHOULD make the PE that sent the PW status notification with a PW status code of zero stop sending and go back to normal operation β .
5.3.1. Acknowledgment of PW Status π
A PE that receives a PW OAM message containing a PW status message MAY acknowledge it π. To do that, it builds a reply packet with the same format and status code as the received PW OAM message, sets the A bit, and sends it on the PW ACh back to the source of the PW OAM message. The receiving PE MAY also use the refresh timer field in that acknowledgement packet to ask the originator of the PW OAM message for a new refresh interval π. The timer value in the reply packet SHOULD then be used by the originator as its new transmit interval π. If the requested refresh timer value is going to be used, then, when the current timer expires, the PW OAM message transmission interval gets set to the new value, and the new value is sent in the PW OAM message β³.
If the transmitting PE doesn't want the new timer value, whether for local policy reasons or because it simply can't support it, it MUST refresh the PW OAM message with the timer value it does want π ββοΈ. The receiving PE then sets its timeout timer based on the new refresh timer value in the packet it received, no matter what value it asked for π« . And the receiving PE MUST NOT request a new refresh timer value more than once per refresh interval π«.
The suggested default for the refresh timer value in the acknowledgment packet is 600 seconds π.
If the sender PE gets an acknowledgment that doesn't match the current active PW status message it's sending, it just ignores that acknowledgment packet π€·ββοΈ.
If a PE that received a non-zero status code for a PW finds out, by any means, that the far end PE has become unreachable, it follows the standard defect entry procedures in Section 6.2 of [RFC6310] π¨π.
5.4. MPLS Label Stack π·οΈ
With one exception, all PW OAM status messages go to the adjacent PE across the PSN tunnel π. A lot of the time, the transmitting PE has no way to tell whether the adjacent PE is an S-PE or a T-PE π€. That's on purpose, to stay backward compatible with PEs that don't understand MS-PWs π«Ά. In the procedures in this document, the PW OAM status messages have two possible destinations: the adjacent PE or the T-PE π―. Sending a PW status message straight to the T-PE is an enhanced method, and it only works with PW OAM status messages sent in the PW ACH β¨.
5.4.1. Label Stack for a Message Destined to the Next PE π
A PE that needs to forward a PW OAM status message to the adjacent PE across the PSN tunnel MUST set the PW label TTL field to 1 β¬οΈ. And if the control word isn't in use on that particular PW, the PE MUST put the GAL reserved label [RFC5586] below the PW label, with its TTL field also set to 1 π·οΈ.
5.4.2. Label Stack for a Message Destined to the Egress PE π―
This one is also called "S-PE bypass mode", more on that below π¦. A T-PE that needs to send a PW OAM status message straight to the corresponding T-PE at the other end of the PW MUST set the TTL of the PW label to a value that's enough to reach that corresponding T-PE π«. That value will be greater than one, and it's set according to the local policy on the transmitting T-PE π. And if the control word isn't in use on that PW, the PE MUST also put the GAL reserved label [RFC5586] below the PW label, with the TTL field set to 1 π·οΈπ .
5.5. S-PE Bypass Mode π
S-PE bypass mode lets a T-PE that uses LDP as its PW setup and control protocol skip over all the S-PEs that might be along the MS-PW and send a message directly to the remote T-PE πββοΈπ¨. It's used for super fast, in-band message transmission alongside the PW PDUs β‘. This mode is OPTIONAL, and it MUST be supported by both T-PEs before it can be enabled π€. And it MUST NOT be used if the first PW segment connected to each T-PE isn't using LDP π ββοΈ.
Heads up: this method MUST NOT be used to send messages that are allowed to originate at an S-PE π«. Otherwise, you could get race conditions between messages sent over the control plane by S-PEs and messages sent over the data plane by T-PEs π.
Status codes MUST NOT be sent using the S-PE bypass procedure, and they MUST be ignored on reception, with one exception: the ones listed below π.
0x00000002 - Local Attachment Circuit (ingress) Receive Fault
0x00000004 - Local Attachment Circuit (egress) Transmit Fault
0x00000020 - PW forwarding standby
0x00000040 - Request switchover to this PW
Also, since "clear all failures" can be sent by an S-PE, it MUST NOT be sent using S-PE bypass mode π ββοΈπ« .
When S-PE bypass mode is enabled, all PW Status TLVs received this way take priority over PW Status TLVs sent through control protocols like LDP [RFC4447] π. But the same PW Status TLVs MUST also be sent in LDP so the S-PEs stay updated π§.
5.5.1. S-PE Bypass Mode LDP Flag Bit π
When a PW Segment along an MS-PW uses the LDP control protocol and wants to use the S-PE bypass status message mode, it sets the B bit in the generic protocol flags interface parameters sub-TLV, as shown in Figure 3 πββοΈ. Only a T-PE that uses LDP as its PW configuration and management protocol can set this flag π. If the S-PE bypass mode LDP flag bit in the generic protocol flags interface parameter doesn't match in the FEC advertisement for the directions of a specific PW, that PW MUST NOT be enabled π.
The interface parameter 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=0x18 | Length=4 |R R R R R R R R R R R R R R R B|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: PW Generic Protocol Flags Sub-TLV
TLV Type: Type 0x18, which is PW Generic Protocol Flags π·οΈ.
Length: The TLV length is always 4 octets π.
Flags: Bit B, in position 31 above, is set to request S-PE bypass mode π―. The R bits are to be allocated by IANA, as described in the IANA section π. If they aren't allocated, they're considered reserved for future use, and they MUST be zero on transmission and ignored on reception of this TLV π«Ά.
If the T-PE gets an LDP label mapping message with a generic protocol flags interface parameter TLV that has bit B set, then the T-PE receiving that label mapping message MAY send S-PE bypass status messages in the PW ACh π¦. If bit B of that TLV isn't set, or the TLV isn't there at all, then the T-PE receiving the label mapping message MUST NOT send S-PE bypass status messages in the PW ACh π«.
6. S-PE Operation π§
The S-PE operates according to the procedures defined in [RFC6073] π. The following extra procedures apply when a static PW segment is switched to a dynamic PW segment that uses LDP, and also when a static PW segment is switched to another static PW segment π.
6.1. Static PW to Another Static PW π¦
The procedures described in [RFC6073] Section 10 also apply when a static PW is switched to another static PW π. The LDP header is simply replaced by the PW OAM header, and otherwise the packet format is identical π¦. The information needed to form an SP-PE TLV MUST be configured in the S-PE, or no SP-PE TLV gets sent π οΈ. [RFC6073] defines the IANA "Pseudowire Switching Point PE TLV Type" registry π. To support the static PW configuration and addressing scheme, the following new code point has been assigned π:
Type Length Description
---- ------ -----------
0x07 24 Static PW/MPLS-TP PW segment ID of last
PW segment traversed
The format of this TLV is that of the "Static Pseudowire Sub-TLV" defined in [RFC6426] β¨.
6.2. Dynamic PW to Static PW or Vice Versa π
The procedures described in Section 10 of [RFC6073] also apply to this situation π . However, if the adjacent PE withdraws the PW label of the LDP-controlled PW segment, the S-PE sets the PW status code "0x00000001 - Pseudowire Not Forwarding" on the adjacent PW on the static PW segment π.
The S-PE only withdraws its label for the dynamic, LDP-controlled PW segment if the S-PE is not provisioned π.
7. Security Considerations π
Okay, this is the serious part π€. The security measures described in [RFC4447], [RFC5085], and [RFC6073] are adequate for the proposed mechanism π«‘π₯.
8. IANA Considerations β¨
okay so IANA has set up the registry of "PW Generic Protocol Flags" ποΈπ. These are bit strings of length 16. Bit 0 is defined in this document. Bits 1 through 15 are to be assigned by IANA using the "IETF Review" policy defined in [RFC5226] π.
Any requests for allocation from this registry require a description of up to 65 characters βοΈ.
Initial PW Generic Protocol Flags value allocations are as follows π:
Bit Mask Description
====================================================================
0x0001 - S-PE bypass mode [RFC6478]
This document uses a new Associated Channel Type π¦. IANA already maintains the "Pseudowire Associated Channel Types" registry, and the value 0x0027 has been assigned with the description "PW OAM Message" β¨.
This document also uses a new Pseudowire Switching Point PE TLV Type πΈ. IANA already maintains the "Pseudowire Switching Point PE sub-TLV Type" registry, and a value of 0x07 has been assigned with the description "Static PW/MPLS-TP PW segment ID of last PW segment traversed" π§.
And this document uses a new interface parameter type π. IANA already maintains the "Pseudowire Interface Parameters Sub-TLV type Registry", and a value of 0x18 has been assigned with the description "PW Generic Protocol Flags" π₯.
9. References π
9.1. Normative References
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC4385] Bryant, S., Swallow, G., Martini, L., and D. McPherson, "Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN", RFC 4385, February 2006.
- [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.
- [RFC5085] Nadeau, T., Ed., and C. Pignataro, Ed., "Pseudowire Virtual Circuit Connectivity Verification (VCCV): A Control Channel for Pseudowires", RFC 5085, December 2007.
- [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
- [RFC6073] Martini, L., Metz, C., Nadeau, T., Bocci, M., and M. Aissaoui, "Segmented Pseudowire", RFC 6073, January 2011.
- [RFC6310] Aissaoui, M., Busschbach, P., Martini, L., Morrow, M., Nadeau, T., and Y(J). Stein, "Pseudowire (PW) Operations, Administration, and Maintenance (OAM) Message Mapping", RFC 6310, July 2011.
- [RFC6426] Gray, E., Bahadur, N., Boutros, S., and R. Aggarwal, "MPLS On-Demand Connectivity Verification and Route Tracing", RFC 6426, November 2011.
9.2. Informative References
- [REDUNDANCY] Muley, P., Ed., and M. Aissaoui, Ed., "Pseudowire Preferential Forwarding Status Bit", Work in Progress, September 2011.
- [RFC5885] Nadeau, T., Ed., and C. Pignataro, Ed., "Bidirectional Forwarding Detection (BFD) for the Pseudowire Virtual Circuit Connectivity Verification (VCCV)", RFC 5885, June 2010.
- [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., "MPLS Generic Associated Channel", RFC 5586, June 2009.
Authors' Addresses π
Luca Martini π
Luca Martini
Cisco Systems, Inc.
9155 East Nichols Avenue, Suite 400
Englewood, CO, 80112
EMail: lmartini@cisco.com
George Swallow π
George Swallow
Cisco Systems, Inc.
300 Beaver Brook Road
Boxborough, Massachusetts 01719
United States
EMail: swallow@cisco.com
Giles Heron π¦
Giles Heron
Cisco Systems
9-11 New Square
Bedfont Lakes
Feltham
Middlesex
TW14 8HA
United Kingdom
EMail: giheron@cisco.com
Matthew Bocci π
Matthew Bocci
Alcatel-Lucent
Voyager Place
Shoppenhangers Road
Maidenhead
Berks
SL6 2PJ
United Kingdom
EMail: matthew.bocci@alcatel-lucent.com
π¦ where this page comes from
- ietf: rfc6478 2012-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms