RFC 4906

Transport of Layer 2 Frames Over MPLS

๐Ÿ“… published June 2007, from ietf

Transport of Layer 2 Frames Over MPLS ๐ŸŽ€

okay bestie, let's get into RFC 4906 โœจ the title block is the official info at the top of every RFC, and this one comes from the Network Working Group ๐ŸŒธ It's marked Historic and dates from June 2007. It has three editors, all marked Ed.: L. Martini and E. Rosen from Cisco Systems, Inc., and N. El-Aawar from Level 3 Communications, LLC ๐Ÿ’… The title block doesn't list any Obsoletes or Updates line, so nothing is replaced or patched by it.


Status of This Memo

this memo is a Historic Document for the Internet community ๐Ÿ“œ it's not a standard of any kind, and it's free for anyone to distribute, no limits ๐Ÿฆ‹

Copyright (C) The IETF Trust (2007). ๐Ÿ’œ

Abstract

so this doc is about carrying the PDUs (Protocol Data Units, the chunks each layer 2 protocol sends) of protocols like Frame Relay, ATM AAL5, and Ethernet across an MPLS network ๐ŸŒˆ it also covers giving SONET circuit emulation over MPLS. the big plot twist is that it describes the so-called "draft-martini" protocol, which has since been superseded by the Pseudowire Emulation Edge to Edge Working Group specs in RFC 4447 and related documents ๐Ÿ˜ญ

Table of Contents

   1. Introduction ....................................................3
   2. Specification of Requirements ...................................3
   3. Special Note ....................................................3
   4. Tunnel Labels and Virtual Circuit (VC) Labels ...................4
   5. Protocol-Specific Details .......................................5
      5.1. Frame Relay ................................................5
      5.2. ATM ........................................................6
           5.2.1. ATM AAL5 VCC Transport ..............................6
           5.2.2. ATM Transparent Cell Transport ......................6
           5.2.3. ATM VCC and VPC Cell Transport ......................6
           5.2.4. OAM Cell Support ....................................6
           5.2.5. ILMI Support ........................................7
      5.3. Ethernet VLAN ..............................................7
      5.4. Ethernet ...................................................8
      5.5. HDLC .......................................................8
      5.6. PPP ........................................................8
   6. LDP .............................................................8
      6.1. Interface Parameters Field ................................10
      6.2. C Bit Handling Procedures .................................12
           6.2.1. VC Types for Which the Control Word is REQUIRED ....12
           6.2.2. VC Types for Which the Control Word is NOT
                  Mandatory ..........................................12
           6.2.3. Status Codes .......................................15
      6.3. LDP Label Withdrawal Procedures ...........................15
      6.4. Sequencing Considerations .................................15
           6.4.1. Label Mapping Advertisements .......................15
           6.4.2. Label Mapping Release ..............................16
   7. IANA Considerations ............................................16
   8. Security Considerations ........................................16
   9. Normative References ...........................................17
   10. Informative References ........................................18
   11. Co-Authors ....................................................18

1. Introduction ๐Ÿฆ‹

in an MPLS network you can carry the PDUs of layer 2 protocols by sticking an MPLS label stack onto them ๐Ÿงš this doc spells out the label distribution steps for doing that with the encapsulation methods in [RFC4905]. we only talk about point-to-point transport, and QoS (quality of service) stuff isn't covered here. the doc describes a bunch of protocols, and sometimes one protocol has several modes, and each of those protocols and/or modes can be implemented on its own ๐Ÿ’–

there's also an accompanying doc, [CEM], that describes sending time division multiplexed (TDM) digital signals (TDM circuit emulation) over a packet-oriented MPLS network ๐ŸŒธ the circuit-oriented TDM world runs on the Synchronous Optical Network (SONET) [ANSI.T1.105] / Synchronous Digital Hierarchy (SDH) [ITU.G.707]. TDM traffic covers voice, data, and private leased line service, so the MPLS network has to act like it has the circuit characteristics of SONET/SDH payloads ๐Ÿ˜ญ MPLS labels plus a new circuit emulation header are used to wrap up the TDM signals and provide the Circuit Emulation Service over MPLS (CEM) โœจ

2. Specification of Requirements ๐Ÿ’œ

this part is the key-word rulebook ๐Ÿ“– the words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document get read the way [RFC2119] describes ๐Ÿ’…

3. Special Note ๐ŸŒˆ

ok this is the big warning โš ๏ธ this document describes the so-called "draft-martini" protocol, which is used in tons of deployed implementations ๐Ÿ“ the doc and its contents have since been superseded by the Pseudowire Emulation Edge to Edge Working Group specs: [RFC4447], [RFC4385], [RFC4448], [RFC4717], [RFC4618], [RFC4619], [RFC4553], [RFC4842], and related docs. this doc works as a record of current implementations, and it "MUST NOT" be used for new implementations ๐Ÿ™ˆ the PWE3 Label Distribution Protocol (LDP) control document [RFC4447], which is backward compatible with this doc, "MUST" be used for all new implementations of this protocol ๐Ÿซถ

4. Tunnel Labels and Virtual Circuit (VC) Labels ๐Ÿงš

so say you want to move layer 2 PDUs from ingress Label Switching Router (LSR) R1 to egress LSR R2, going across an MPLS network in the middle ๐Ÿฆ‹ we assume there's a Label Switched Path (LSP) from R1 to R2. that means R1 can get a packet to R2 by pushing some label onto it and sending the result out to one of its adjacencies. we call that label the "tunnel label", and the matching LSP the "tunnel LSP" ๐Ÿ’–

the tunnel LSP just gets packets from R1 to R2, and its label doesn't tell R2 what to do with the payload ๐ŸŒธ actually, if penultimate hop popping is used, R2 may never even see that label ๐Ÿ‘€ (if R1 itself is the penultimate hop, a tunnel label may not even get pushed on.) so if the payload isn't an IP packet, there must be a label that R2 can see and that tells R2 how to handle the packet. we call that one the "VC label" โœจ

so when R1 sends a layer 2 PDU to R2, it pushes a VC label onto its label stack first, and then (if R1 isn't adjacent to R2) it pushes on a tunnel label ๐ŸŽ€ the tunnel label moves the MPLS packet from R1 to R2, and the VC label isn't visible until the MPLS packet gets to R2. R2 decides what to do with the packet based on the VC label ๐Ÿ’…

note that the tunnel could be a Generic Routing Encapsulation (GRE)-encapsulated MPLS tunnel between R1 and R2 ๐ŸŒˆ in that case R1 is adjacent to R2, only the VC label gets used, and the middle network only needs to carry IP packets ๐Ÿซถ

if the payload of the MPLS packet is, say, an ATM AAL5 PDU, the VC label usually matches a particular ATM VC at R2 ๐Ÿ“ that means R2 has to be able to work out from the VC label the outgoing interface and the VPI/VCI (Virtual Path Identifier / Virtual Circuit Identifier) value for the AAL5 PDU. if the payload is a Frame Relay PDU, R2 needs to figure out the outgoing interface and the DLCI (Data Link Connection Identifier) value from the VC label. and if the payload is an Ethernet frame, R2 needs the outgoing interface from the VC label, and maybe the VLAN identifier too ๐Ÿ”ฅ this process is unidirectional, so it gets repeated on its own for bidirectional operation โœจ it is REQUIRED to assign the same VC ID and VC type for a given circuit in both directions. the group ID (see below) "MUST NOT" be required to match in both directions. the transported frame MAY be modified when it reaches the egress router. if the header of the transported layer 2 frame is modified, this "MUST" be done at the egress LSR only ๐Ÿ‘‘

note that the VC label must always be at the bottom of the label stack, and the tunnel label, if there is one, must be right above the VC label ๐Ÿงš of course, as the packet travels across the MPLS network, extra labels can get pushed on (and then popped off) as needed. even R1 itself can push extra labels above the tunnel label. and if R1 and R2 are directly adjacent LSRs, you may not need a tunnel label at all ๐Ÿ’–

this document doesn't specify a way to distribute the tunnel label or any other labels that might show up above the VC label on the stack ๐ŸŒธ any acceptable MPLS label distribution method will do ๐Ÿฆ‹

this document DOES specify how to assign and distribute the VC label, though ๐Ÿ’œ static label assignment MAY be used, and implementations "SHOULD" provide support for this. when signaling is used, the VC label "MUST" be distributed from R2 to R1 using LDP in the downstream unsolicited mode, which means an LDP session has to be set up between R1 and R2 ๐Ÿ“ก it's worth noting that this LDP session isn't necessarily sent along the same path as the Layer 2 PDUs [RFC3036]. also, when using LDP to distribute the VC label, liberal label retention mode "SHOULD" be used. however, as [RFC3036] requires, the label request operation (mainly used by conservative label retention mode) "MUST" be implemented ๐Ÿ™ˆ VC labels "MUST" be allocated from the per-platform label space ๐Ÿ’…

this technique lets an unbounded number of layer 2 "VCs" get carried together in one single "tunnel" ๐ŸŒˆ so it scales really well in the network backbone ๐Ÿซถ

right now this doc defines the emulation of Frame Relay and ATM Permanent Virtual Circuit (PVC) services, but it specifically does not block future upgrades for switched service emulation (Switched Virtual Circuit (SVC) and Switched Permanent Virtual Circuit (SPVC)) ๐ŸŽ€

5. Protocol-Specific Details ๐Ÿ“

5.1. Frame Relay ๐Ÿ’–

the Frame Relay PDUs get encapsulated using the procedures defined in [RFC4905]. the MPLS edge LSR "MUST" provide Frame Relay PVC status signaling to the Frame Relay network ๐Ÿ“ก if the MPLS edge LSR spots a service affecting condition, as defined in [Q.933] Annex A.5 cited in Implementation Agreement FRF.1.1, it "MUST" withdraw the label that matches the frame relay DLCI ๐Ÿ˜ญ the egress LSR "SHOULD" generate the matching errors and alarms as defined in [Q.933] on the egress Frame relay VC ๐Ÿšจ

5.2. ATM ๐Ÿฆ‹

5.2.1. ATM AAL5 VCC Transport โœจ

ATM AAL5 Common Part Convergence Sublayer - Service Data Units (CPCS-SDUs) get encapsulated according to [RFC4905] ATM AAL5 CPCS-SDU mode ๐ŸŒธ this mode lets you transport ATM AAL5 CSPS-SDUs traveling on one particular ATM PVC across the MPLS network to another ATM PVC ๐Ÿ’œ

5.2.2. ATM Transparent Cell Transport โœจ

okay so this mode is basically the Ethernet port mode's ATM cousin ๐Ÿฆ‹ Every cell that shows up at the ingress ATM port on the ingress LSR, R1, gets wrapped up according to [RFC4905], ATM cell mode, and sent across the LSP to the egress LSR, R2. This mode only lets an ATM port be connected to one other ATM port, so it's a very exclusive relationship ๐Ÿ’…

[RFC4905] lets you group several cells into a single MPLS frame. Grouping is OPTIONAL for the ingress LSR, R1, to do when it's transmitting. If the egress LSR R2 supports cell concatenation, the ingress LSR, R1, should only concatenate cells up to the "Maximum Number of concatenated ATM cells" parameter that came in as part of the FEC element ๐ŸŽ€

5.2.3. ATM VCC and VPC Cell Transport ๐ŸŒธ

this one is giving ATM AAL5 Virtual Channel Connection (VCC) transport, except the cells themselves get carried instead ๐Ÿ’œ Every cell received on a pre-defined ATM PVC or ATM Permanent Virtual Path (PVP) at the ingress ATM port on the ingress LSR, R1, gets encapsulated according to [RFC4905], ATM cell mode, and sent across the LSP to the egress LSR R2. Grouping ATM cells is OPTIONAL for transmission at the ingress LSR, R1. If the egress LSR R2 supports cell concatenation, the ingress LSR, R1, MUST only concatenate cells up to the "Maximum Number of concatenated ATM cells in a frame" parameter received as part of the FEC element. No shortcuts, bestie ๐Ÿซถ

5.2.4. OAM Cell Support ๐Ÿ”ฅ

Operations and Management (OAM) cells MAY be transported on the VC LSP. When the LSR is in AAL5 CPCS-SDU transport mode and it doesn't support transport of ATM cells, the LSR MUST discard incoming MPLS frames on an ATM VC LSP that contain a VC label with the T bit set [RFC4905] ๐Ÿ™ˆ

When operating in AAL5 SDU transport mode, an LSR that supports transport of OAM cells using the T bit defined in [RFC4905], or an LSR operating in any of the three cell transport modes, MUST follow the procedures outlined in [FAST] Section 8 for mode 0 only. It also has to follow the applicable procedures in [ITU.G.707] ๐Ÿ‘‘

5.2.4.1. OAM Cell Emulation Mode ๐Ÿงš

An LSR that doesn't support transport of OAM cells across an LSP MAY provide OAM support on ATM PVCs using these procedures:

A pair of LSRs MAY emulate a bidirectional ATM VC by using two unidirectional LSPs. If an F5 end-to-end OAM cell comes in from an ATM VC, to either LSR transporting that ATM VC, with a loopback indication value of 1, and the LSR has a label mapping for the ATM VC, then the LSR MUST decrement the loopback indication value and loop the cell back on the ATM VC. Otherwise, the loopback cell MUST be discarded by the LSR ๐Ÿ’€

The ingress LSR, R1, may also optionally be configured to periodically generate F5 end-to-end loopback OAM cells on a VC. If the LSR fails to receive a response to an F5 end-to-end loopback OAM cell for a pre-defined period of time, it MUST withdraw the label mapping for the VC.

If an ingress LSR, R1, receives an AIS (Alarm Indication Signal) F5 OAM cell, or R1 fails to receive a pre-defined number of the End-to-End loop OAM cells, or a physical interface goes down, it MUST withdraw the label mappings for all VCs associated with the failure. When a VC label mapping is withdrawn, the egress LSR, R2, MUST generate AIS F5 OAM cells on the VC tied to the withdrawn label mapping. In this mode it's super useful to apply a unique group ID to each interface ๐ŸŒˆ In the case where a physical interface goes down, a wild card label withdraw can be sent to all LDP neighbors, which greatly cuts down the signaling response time โญ

5.2.5. ILMI Support ๐Ÿฆ‹

An MPLS edge LSR MAY provide an ATM Integrated Local Management Interface (ILMI) to the ATM edge switch. If an ingress LSR receives an ILMI message saying the ATM edge switch has deleted a VC, or the physical interface goes down, it MUST withdraw the label mappings for all VCs associated with the failure. When a VC label mapping is withdrawn, the egress LSR SHOULD notify its client of this failure by deleting the VC using ILMI ๐Ÿ“

5.3. Ethernet VLAN ๐Ÿ’…

The Ethernet frame will be encapsulated according to the procedures in [RFC4905]. Lowkey important: if the VLAN identifier gets modified by the egress LSR using the procedures above, the Ethernet spanning tree protocol might fail to work properly ๐Ÿ˜ญ If the LSR detects a failure on the Ethernet physical port, or the port is administratively disabled, it MUST withdraw the label mappings for all VCs associated with the port.

5.4. Ethernet ๐ŸŽ€

The Ethernet frame will be encapsulated according to the procedures in [RFC4905]. If the LSR detects a failure on the Ethernet physical port, or the port is administratively disabled, the corresponding VC label mapping MUST be withdrawn.

5.5. HDLC ๐Ÿ“

HDLC (High-Level Data Link Control) frames are encapsulated according to the procedures in [RFC4905]. If the MPLS edge LSR detects that the physical link has failed, or the port is administratively disabled, it MUST withdraw the label mapping that corresponds to the HDLC link.

5.6. PPP ๐Ÿงš

PPP frames are encapsulated according to the procedures in [RFC4905]. If the MPLS edge LSR detects that the physical link has failed, or the port is administratively disabled, it MUST withdraw the label mapping that corresponds to the PPP link.

6. LDP โœจ

The VC label bindings are distributed using the LDP downstream unsolicited mode described in [RFC3036]. The LSRs will establish an LDP session using the Extended Discovery mechanism described in sections 2.4.2 and 2.5 of [RFC3036]. For this purpose, a new type of FEC element is defined, and its FEC element type is 128. Only a single VC FEC element MUST be advertised per LDP VC label. The Virtual Circuit FEC element is laid out 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    VC tlv     |C|         VC Type             |VC info Length |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Group ID                                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        VC ID                                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Interface parameters                    |
   |                              "                                |
   |                              "                                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • VC Type ๐Ÿ’– A 15-bit quantity containing a value that represents the type of VC. Assigned values are:
        VC Type  Description

        0x0001   Frame Relay DLCI
        0x0002   ATM AAL5 VCC transport
        0x0003   ATM transparent cell transport
        0x0004   Ethernet VLAN
        0x0005   Ethernet
        0x0006   HDLC
        0x0007   PPP
        0x8008   CEM [CEM]
        0x0009   ATM VCC cell transport
        0x000A   ATM VPC cell transport
  • Control word bit (C) ๐ŸŒธ The highest order bit (C) of the VC type flags whether a control word (defined in [RFC4905]) is present, like so:
        bit 15 = 1 control word present on this VC.
        bit 15 = 0 no control word present on this VC.

Please see Section 6.2, "C Bit Handling Procedures", for more on this ๐Ÿซถ

  • VC information length ๐Ÿฆ‹ The length of the VC ID field and the interface parameters field, in octets. If this value is 0, it references all VCs using the specified group ID, and there's no VC ID present, nor any interface parameters ๐Ÿ“
  • Group ID ๐Ÿ”ฅ An arbitrary 32-bit value that represents a group of VCs, used to create groups in the VC space. The group ID is meant to be used as a port index or a virtual tunnel index. To keep configuration simple, a particular VC ID at ingress could be part of the virtual tunnel for transport to the egress router. The group ID is super useful for sending wild card label withdrawals to remote LSRs when a physical port fails ๐ŸŒˆ
  • VC ID ๐ŸŽ€ A non-zero 32-bit connection ID that, together with the VC type, identifies a particular VC โญ
  • Interface parameters ๐Ÿ’œ This variable length field provides interface-specific parameters, such as interface MTU ๐Ÿงš

6.1. Interface Parameters Field โœจ

okay bestie, this field is where the interface-specific parameters live ๐ŸŽ€ When it applies, it MUST be used to validate that the LSRs, and the ingress and egress ports at the edges of the circuit, have the necessary capabilities to interoperate with each other. it's basically the compatibility check before anything gets to vibe ๐Ÿ’… The field structure 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Parameter ID |    Length     |    Variable Length Value      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Variable Length Value                 |
   |                             "                                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here's the lineup of parameter IDs ๐Ÿฆ‹

   Parameter   ID Length    Description

       0x01         4       Interface MTU in octets.
       0x02         4       Maximum Number of concatenated ATM cells.
       0x03   up to 82      Optional Interface Description string.
       0x04         4       CEM [CEM] Payload Bytes.
       0x05         4       CEM options.

The Length field counts the whole interface parameter, including the Parameter ID and Length field itself, so keep that in mind when you're counting bytes ๐Ÿงฎ Processing of the interface parameters should continue when you hit unknown ones, and they MUST be silently ignored. no drama, just skip them ๐Ÿ™ˆ

  • Interface MTU

A 2-octet value giving the MTU in octets. This is the Maximum Transmission Unit, excluding encapsulation overhead, of the egress packet interface that will be transmitting the decapsulated PDU received from the MPLS network. This parameter is applicable only to VC types 1, 2, 4, 5, 6, and 7, and it is REQUIRED for those VC types. If this parameter does not match in both directions of a specific VC, that VC MUST NOT be enabled. the MTU has to match or the VC stays off ๐Ÿšซ

  • Maximum Number of concatenated ATM cells

A 2-octet value specifying the maximum number of concatenated ATM cells that the egress LSR can process as a single PDU. An ingress LSR transmitting concatenated cells on this VC can concatenate up to the value of this parameter, but it MUST NOT exceed it. This parameter is applicable only to VC types 3, 9, and 0x0a, and it is REQUIRED for those VC types. This parameter does not need to match in both directions of a specific VC ๐Ÿ“

  • Optional Interface Description string

This arbitrary, OPTIONAL interface description string can be used to send an administrative description text string to the remote LSR. This parameter is OPTIONAL, and it applies to all VC types. The string length is variable and can be from 0 to 80 octets. it's a little sticky note for the other LSR ๐Ÿ“โœจ

  • Payload Bytes

A 2-octet value showing the number of TDM payload octets in all packets on the CEM stream, from 48 to 1,023 octets. Every packet in a given CEM stream has the same number of payload bytes. Heads up, though: the packet size might go over the Synchronous Payload Envelope (SPE) size in the case of an STS-1 SPE. That could mean two pointers are needed in the CEM header, since the payload may contain two J1 bytes for consecutive SPEs. For this reason, the number of payload bytes must be less than or equal to 783 for STS-1 SPEs. โš ๏ธ this one's a lil tricky, so read it twice ๐Ÿง 

  • CEM Options

An optional 16-bit value of CEM flags. See [CEM] for the definition of the bit values. ๐ŸŒˆ

6.2. C Bit Handling Procedures ๐Ÿ’–

This is the part where we figure out who gets to use the control word ๐Ÿ‘‘ Spoiler: it's mostly about agreeing with each other.

6.2.1. VC Types for Which the Control Word is REQUIRED

The Label Mapping messages sent to set up these VCs MUST have c=1. When a Label Mapping message for a VC of one of these types arrives with c=0, a Label Release MUST be sent, with an "Illegal C-bit" status code. In that case, the VC will not come up. no c=0 allowed here, periodt ๐Ÿ™…โ€โ™€๏ธ

6.2.2. VC Types for Which the Control Word is NOT Mandatory

If a system is capable of sending and receiving the control word on VC types where it's not mandatory, then each such VC endpoint MUST be configurable with a parameter that specifies whether the use of the control word is PREFERRED or NOT PREFERRED. For each VC, there MUST be a default value for this parameter. This specification does NOT state what the default value should be. so the default is up to you, bestie ๐Ÿคทโ€โ™€๏ธ

If a system is NOT capable of sending and receiving the control word on VC types where it's not mandatory, then it behaves exactly as if it were configured for the use of the control word to be NOT PREFERRED. ๐Ÿซถ

If a Label Mapping message for the VC has already been received, but no Label Mapping message for the VC has been sent yet, then the procedure goes like this:

  • -i. If the received Label Mapping message has c=0, send a Label Mapping message with c=0, and the control word is not used.
  • -ii. If the received Label Mapping message has c=1, and the VC is locally configured so that the use of the control word is preferred, then send a Label Mapping message with c=1, and the control word is used.
  • -iii. If the received Label Mapping message has c=1, and the VC is locally configured so that the use of the control word is not preferred or the control word is not supported, then act as if no Label Mapping message for the VC had been received (i.e., proceed to the next paragraph).

If a Label Mapping message for the VC has not already been received (or if the received Label Mapping message had c=1, and either local configuration says the use of the control word is not preferred or the control word is not supported), then send a Label Mapping message where the c bit matches the locally configured preference for the control word. (So: set c=1 if you're locally configured to prefer the control word, and set c=0 if you're locally configured to prefer not to use it or if the control word isn't supported.) ๐ŸŽ€

The next action depends on which control message is received next for that VC. The possibilities are:

  • -i. A Label Mapping message with the same c bit value as the one in the Label Mapping message that was sent. VC setup is now complete, and the control word is used if c=1, but not used if c=0. โœ…
  • -ii. A Label Mapping message with c=1, but the Label Mapping message that was sent has c=0. In this case, ignore the received Label Mapping message, and keep waiting for the next control message for the VC. ๐Ÿ™ˆ
  • -iii. A Label Mapping message with c=0, but the Label Mapping message that was sent has c=1. In this case, send a Label Withdraw message with a "Wrong C-bit" status code, followed by a Label Mapping message that has c=0. VC setup is now complete, and the control word is not used. ๐Ÿซ 
  • -iv. A Label Withdraw message with the "Wrong C-bit" status code. Treat it as a normal Label Withdraw, but do not respond. Keep waiting for the next control message for the VC. ๐Ÿ™Š

If, at any point after a Label Mapping message has been received, a corresponding Label Withdraw or Release arrives, the action taken is the same as for any Label Withdraw or Release that might be received at any time. ๐Ÿ’€

If both endpoints prefer the control word, this procedure will get it used. If either endpoint prefers not to use the control word, or doesn't support it, this procedure will get it not used. And if one endpoint prefers to use the control word but the other doesn't, the one that prefers not to use it has no extra protocol to run. It just waits for a Label Mapping message that has c=0. so chill, it's giving low-maintenance ๐Ÿ˜Œ

The following diagram illustrates the above procedures ๐Ÿ‘‡

                   ------------------
               Y   | Received Label |       N
            -------|  Mapping Msg?  |--------------
            |      ------------------             |
            |                                     |
        --------------                            |
        |            |                            |
        |            |                            |
     -------      -------                         |
     | C=0 |      | C=1 |                         |
     -------      -------                         |
        |            |                            |
        |            |                            |
        |    ----------------                     |
        |    | Control Word |     N               |
        |    |    Capable?  |-----------          |
        |    ----------------          |          |
        |          Y |                 |          |
        |            |                 |          |
        |   ----------------           |          |
        |   | Control Word |  N        |          |
        |   |  Preferred?  |----       |          |
        |   ----------------   |       |          |
        |          Y |         |       |          |
        |            |         |       |   ----------------
        |            |         |       |   | Control Word |
        |            |         |       |   |  Preferred?  |
        |            |         |       |   ----------------
        |            |         |       |     N |     Y |
        |            |         |       |       |       |
      Send         Send      Send    Send    Send    Send
       C=0          C=1       C=0     C=0     C=0     C=1
                               |       |       |       |
                            ----------------------------------
                            | If receive the same as sent,   |
                            | VC setup is complete.  If not: |
                            ----------------------------------
                               |       |       |       |
                              ------------------- -----------
                              |     Receive     | | Receive |
                              |       C=1       | |   C=0   |
                              ------------------- -----------
                                       |               |
                                 Wait for the        Send
                                 next message     Wrong C-Bit
                                                       |
                                              Send Label Mapping
                                               Message with C=0

6.2.3. Status Codes ๐ŸŽ€

RFC 3036 has a range of Status Code values, which IANA assigns on a First Come, First Served basis. These are in the range 0x20000000-0x3effffff. The following new status codes are defined:

           0x20000001 "Illegal C-Bit"
           0x20000002 "Wrong C-Bit"

and that's the whole C bit saga, bestie ๐ŸŒˆ๐Ÿ’œ

6.3. LDP Label Withdrawal Procedures ๐Ÿ—‘๏ธโœจ

okay so, like we said earlier, the Group ID field can be used to withdraw all the VC labels tied to one particular group ID ๐Ÿซถ. This procedure is OPTIONAL, and if you do implement it, the LDP label withdraw message should look like this: the VC information length field is set to 0, the VC ID field is not present, and the interface parameters field is not present. For this document we're calling this the "wild card withdraw procedure" ๐Ÿ’…, and all LSRs that implement this design are REQUIRED to accept such a withdraw message, but are not required to send it.

The interface parameters field MUST NOT be present in any LDP VC label withdrawal message or release message ๐Ÿ™…โ€โ™€๏ธ. A wild card release message MUST include only the group ID. A Label Release message initiated from the imposition router must always include the VC ID.

6.4. Sequencing Considerations ๐Ÿ”ข

In the case where the router considers the sequence number field in the control word, it is important to note the following when advertising labels ๐Ÿง .

6.4.1. Label Mapping Advertisements ๐Ÿท๏ธ

After a label has been withdrawn by the disposition router and/or released by the imposition router, care must be taken to not re-advertise (reuse) the released label until the disposition router can be reasonably certain that old packets containing the released label no longer persist in the MPLS network ๐Ÿ‘€.

This precaution is required to prevent the imposition router from restarting packet forwarding with a sequence number of 1 when it receives the same label mapping, if there are still older packets persisting in the network with sequence numbers between 1 and 32768 ๐Ÿ˜ฌ. For example, if there is a packet with sequence number=n, where n is in the interval [1,32768] traveling through the network, it would be possible for the disposition router to receive that packet after it re-advertises the label. Since the label has been released by the imposition router, the disposition router SHOULD be expecting the next packet to arrive with a sequence number of 1. Receipt of a packet with sequence number equal to n will result in n packets potentially being rejected by the disposition router until the imposition router imposes a sequence number of n+1 into a packet ๐Ÿšซ. Possible methods to avoid this are for the disposition router to always advertise a different VC label, or for the disposition router to wait for a sufficient time before attempting to re-advertise a recently released label โณ. This is only an issue when sequence number processing at the disposition router is enabled.

6.4.2. Label Mapping Release ๐Ÿ“ค

In situations where the imposition router wants to restart forwarding of packets with sequence number 1, the router shall 1) send a label mapping release to the disposition router, and 2) send a label mapping request to the disposition router ๐Ÿ”„. When sequencing is supported, advertisement of a VC label in response to a label mapping request MUST also consider the issues discussed in Section 6.4.1.

7. IANA Considerations ๐Ÿ—‚๏ธ

As specified in this document, a Virtual Circuit FEC element contains the VC Type field. VC Type value 0 is reserved. VC Type values 1 through 10 are defined in this document. VC Type values 11 through 63 are to be assigned by IANA using the "IETF Consensus" policy defined in RFC 2434. VC Type values 64 through 127 are to be assigned by IANA, using the "First Come First Served" policy defined in RFC 2434. VC Type values 128 through 32767 are vendor-specific, and values in this range are not to be assigned by IANA ๐Ÿท๏ธ.

As specified in this document, a Virtual Circuit FEC element contains the Interface Parameters field, which is a list of one or more parameters, and each parameter is identified by the Parameter ID field. Parameter ID value 0 is reserved. Parameter ID values 1 through 5 are defined in this document. Parameter ID values 6 through 63 are to be assigned by IANA using the "IETF Consensus" policy defined in RFC 2434. Parameter ID values 64 through 127 are to be assigned by IANA, using the "First Come First Served" policy defined in RFC 2434. Parameter ID values 128 through 255 are vendor-specific, and values in this range are not to be assigned by IANA ๐Ÿฆ‹.

8. Security Considerations ๐Ÿ”

โš ๏ธ This document does not affect the underlying security issues of MPLS, described in [RFC3032]. More detailed security considerations are also described in Section 8 of [RFC4447]. Go read those, bestie, they matter ๐Ÿ’€.

9. Normative References ๐Ÿ“š

[RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

[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.

[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.

[RFC4842]     Malis, A., Pate, P., Cohen, R., Ed., and D. Zelig,
              "Synchronous Optical Network/Synchronous Digital
              Hierarchy (SONET/SDH) Circuit Emulation over Packet
              (CEP)", RFC 4842, April 2007.

[RFC4553]     Vainshtein, A., Ed., and YJ. Stein, Ed., "Structure-
              Agnostic Time Division Multiplexing (TDM) over Packet
              (SAToP)", RFC 4553, June 2006.

[RFC4619]     Martini, L., Ed., Kawa, C., Ed., and A. Malis, Ed.,
              "Encapsulation Methods for Transport of Frame Relay
              over Multiprotocol Label Switching (MPLS) Networks",
              RFC 4619, September 2006.

[RFC4717]     Martini, L., Jayakumar, J., Bocci, M., El-Aawar, N.,
              Brayley, J., and G. Koleyni, "Encapsulation Methods for
              Transport of Asynchronous Transfer Mode (ATM) over MPLS
              Networks", RFC 4717, December 2006.

[RFC4618]     Martini, L., Rosen, E., Heron, G., and A. Malis,
              "Encapsulation Methods for Transport of PPP/High-Level
              Data Link Control (HDLC) over MPLS Networks", RFC 4618,
              September 2006.

[RFC4448]     Martini, L., Ed., Rosen, E., El-Aawar, N., and G.
              Heron, "Encapsulation Methods for Transport of Ethernet
              over MPLS Networks", RFC 4448, April 2006.

[RFC3036]     Andersson, L., Doolan, P., Feldman, N., Fredette, A.,
              and B. Thomas, "LDP Specification", RFC 3036, January
              2001.

[Q.933]       ITU-T Recommendation Q.933, and Q.922 Specification for
              Frame Mode Basic call control, ITU Geneva 1995.

[RFC3032]     Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
              Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack
              Encoding", RFC 3032, January 2001.

[ANSI.T1.105] American National Standards Institute, "Synchronous
              Optical Network Formats," ANSI T1.105-1995.

[ITU.G.707]   ITU Recommendation G.707, "Network Node Interface For
              The Synchronous Digital Hierarchy", 1996.

[RFC4905]     Martini, L., Ed., Rosen, E., Ed., and N. El-Aawar, Ed.,
              "Encapsulation Methods for Transport of Layer 2 Frames
              over MPLS Networks", RFC 4905, June 2007.

10. Informative References ๐Ÿ’ก

[CEM]         Malis, A., Brayley, J., Vogelsang., S., Shirron, J.,
              and L. Martini, "SONET/SDH Circuit Emulation Service
              Over MPLS (CEM) Encapsulation", Work in Progress, June
              2007.

[FAST]        ATM Forum, "Frame Based ATM over SONET/SDH Transport
              (FAST)", af-fbatm-0151.000, July 2000.

11. Co-Authors ๐Ÿ‘ฏโ€โ™€๏ธ

Giles Heron
Tellabs
Abbey Place
24-28 Easton Street
High Wycombe
Bucks
HP11 1NT
UK
EMail: giles.heron@tellabs.com


Dimitri Stratton Vlachos
Mazu Networks, Inc.
125 Cambridgepark Drive
Cambridge, MA 02140
EMail: d@mazunetworks.com
Dan Tappan
Cisco Systems, Inc.
250 Apollo Drive
Chelmsford, MA 01824
EMail: tappan@cisco.com


Jayakumar Jayakumar,
Cisco Systems Inc.
225, E.Tasman, MS-SJ3/3,
San Jose, CA 95134
EMail: jjayakum@cisco.com


Alex Hamilton,
Cisco Systems Inc.
285 W. Tasman, MS-SJCI/3/4,
San Jose, CA 95134
EMail: tahamilt@cisco.com


Steve Vogelsang
Laurel Networks, Inc.
Omega Corporate Center
1300 Omega Drive
Pittsburgh, PA 15205
EMail: sjv@laurelnetworks.com


John Shirron
Laurel Networks, Inc.
Omega Corporate Center
1300 Omega Drive
Pittsburgh, PA 15205
EMail: jshirron@laurelnetworks.com


Toby Smith
Network Appliance, Inc.
800 Cranberry Woods Drive
Suite 300
Cranberry Township, PA 16066
EMail: tob@netapp.com
Andrew G. Malis
Tellabs
90 Rio Robles Dr.
San Jose, CA 95134
EMail: Andy.Malis@tellabs.com


Vinai Sirkay
Reliance Infocomm
Dhirubai Ambani Knowledge City
Navi Mumbai 400 709
India
EMail: vinai@sirkay.com


Vasile Radoaca
Nortel Networks
600  Technology Park
Billerica MA 01821
EMail: vasile@nortelnetworks.com


Chris Liljenstolpe
Alcatel
11600 Sallie Mae Dr.
9th Floor
Reston, VA 20193
EMail: chris.liljenstolpe@alcatel.com


Dave Cooper
Global Crossing
960 Hamlin Court
Sunnyvale, CA 94089
EMail: dcooper@gblx.net


Kireeti Kompella
Juniper Networks
1194 N. Mathilda Ave
Sunnyvale, CA 94089
EMail: kireeti@juniper.net

Authors' Addresses ๐Ÿ’Œ

Luca Martini
Cisco Systems, Inc.
9155 East Nichols Avenue, Suite 400
Englewood, CO 80112
EMail: lmartini@cisco.com


Nasser El-Aawar
Level 3 Communications, LLC.
1025 Eldorado Blvd.
Broomfield, CO 80021
EMail: nna@level3.net


Eric Rosen
Cisco Systems, Inc.
250 Apollo Drive
Chelmsford, MA 01824
EMail: erosen@cisco.com

Copyright (C) The IETF Trust (2007).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐ŸŒˆ

Intellectual Property โœจ

okay so the IETF is being super upfront here ๐Ÿ’… it takes no position on whether any Intellectual Property Rights or other rights that someone might claim over the tech in this document are valid or in scope, and it doesn't say whether any license under those rights might or might not be available. it also doesn't claim it has made any independent effort to find those rights ๐Ÿ™ˆ if you want the rules on rights for RFC documents, check out BCP 78 and BCP 79 ๐Ÿซถ

copies of IPR disclosures made to the IETF Secretariat, plus any assurances of licenses that will be made available, or the result of an attempt to get a general license or permission for implementers or users to use those proprietary rights, can be found on the IETF on-line IPR repository at http://www.ietf.org/ipr ๐Ÿฆ‹

the IETF also invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. send that info to the IETF at ietf-ipr@ietf.org ๐Ÿ’Œ


Acknowledgement ๐ŸŽ€

funding for the RFC Editor function is currently provided by the Internet Society ๐ŸŒˆ literally the reason this whole system stays running, so thank you ISOC ๐Ÿ’–โœจ

๐Ÿ“ฆ where this page comes from