RFC 4906
Transport of Layer 2 Frames Over MPLS
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 Notice
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 hasc=0, send a Label Mapping message withc=0, and the control word is not used.-ii.If the received Label Mapping message hasc=1, and the VC is locally configured so that the use of the control word is preferred, then send a Label Mapping message withc=1, and the control word is used.-iii.If the received Label Mapping message hasc=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 ifc=1, but not used ifc=0. โ-ii.A Label Mapping message withc=1, but the Label Mapping message that was sent hasc=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 withc=0, but the Label Mapping message that was sent hasc=1. In this case, send a Label Withdraw message with a "Wrong C-bit" status code, followed by a Label Mapping message that hasc=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
Full Copyright Statement ยฉ
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
- ietf: rfc4906 2007-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms