RFC 6478

Pseudowire Status for Static Pseudowires

πŸ“… published May 2012, from ietf

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