A doctor can bury his mistakes, but an architect can only advise his client to plant vines.
- Frank Lloyd Wright
4.1 MPLS System Components
MPLS as a system relies on the concepts of Label Switching Router (LSR), Label-Switched Path (LSP), and labeled packets. In its simplest form, MPLS is the concept of LSRs forwarding labled packets on LSPs. This section describes these components in more detail.
Label Switching Router
This section describes the components that make up a label switching router.
Forwarding Information Base
The MPLS architecture document (Rosen, Viswanathan, and Callon 2001) defines the components of the forwarding information base (FIB) 1 as follows:
Next Hop Label Forwarding Entry (NHLFE): An entry containing next-hop information (interface and next-hop address) and label manipulation 2 instructions; it may also include label encoding, L2 encapsulation information, and other information required for processing packets in the associated stream.
Incoming Label Map (ILM): A mapping from incoming labels to corresponding NHLFEs.
FEC-to-NHLFE map (FTN): A mapping from the FEC of any incoming packets to corresponding NHLFEs.
It is important to note that this is a reasonable, but arbitrary, division of the tasks that are performed in a FIB lookup, based on the local LSR's role in any LSP. An actual implementation may, for example, internally classify unlabeled packets and assign an internal label. This would permit the implementation to include a label as part of each NHLFE to be used as a key in accessing successive matching NHLFEs. Note also that the existence of more than one matching NHLFE may be a function of the label retention mode (discussed later in this chapter) and whether or not the local LSR is supporting multipathing3 or multicast LSPs.
How the required NHLFE is accessed depends on the role the LSR plays in the specific LSP: If the LSR is the ingress, it uses an FTN; otherwise, it uses an ILM.
Route Determination Module
The route determination function is used to construct FIB entries in the normal mode of MPLS operation. Information from routing protocol interactions determines FECs for which it is desirable to create an NHLFE, as well as the next-hop information needed to construct the NHLFE. Because MPLS currently only defines downstream allocation4 of labels, an NHLFE will not contain an output (downstream) label until a label has been allocated by the downstream peer LSR.
The LSR constructs NHLFEs by one of the following methods:
Allocating one or more labels to be used as the incoming label, creating ILMs for each, binding each ILM to the set of NHLFEs, and distributing the labels allocated to upstream LSRs
Creating FTNs for FECs associated with specific routing entries and binding each to a set of NHLFEs with corresponding next-hop information
Note that an NHLFE that does not contain a downstream label will either have a pop label manipulation instruction or a drop forwarding instruction. 5 For this reason, it does not make sense to create an NHLFE associated with an FTN and without a downstream label.
The route determination function is also used to remove (or update) FIB entries when, for instance, routes associated with a given FEC are removed or next-hop information is changed.
The forwarding function in MPLS is based on a simple exact match of a label to an ILM, which in turn maps to an NHLFE. The LSR follows the label manipulation instructions of the NHLFE and delivers the packet to the interface specified in the next-hop information. The LSR may also need to use L2 encapsulation information provided in the NHLFE to properly encapsulate the packet for delivery to the correct next hop.6
In the event that the matched ILM maps to more than one NHLFE, the specific behavior is determined based on the context within which multiple NHLFEs were created. One NHLFE may be selected based on associated preference values among multiple NHLFEs (if, for example, each additional NHLFE is used to provide a redundant LSP or to support load sharing). Multiple NHLFEs may be used (if multicasting data, for instance). Hence, the behavior in the event that a single ILM maps to multiple NHLFEs depends on why the LSR allowed a second, and each subsequent, NHLFE to be created.
Figure 4.1 shows the decision tree for the forwarding function using PPP links as an example. The PPP Protocol field is used to determine whether the LSR is looking for an ILM (protocol number 0x0281 or 0x0283) 7 or an FTN (various other protocol numbers).8 The ILM or FTN is then used to find at least one NHLFE, which is then used to determine the output interface, label manipulation instructions, and related forwarding information. A very similar decision tree would apply to Ethernet links (using Ether type values 0x8847 or 0x8848). 9 The decision tree for ATM or Frame Relay is simpler because the label is incorporated in the L2 header itself, eliminating the need to evaluate a higher-level protocol identifier at L2.
Figure 4.1 Forwarding decision tree
This section describes the components that make up a label-switched path.
Ingress, Egress, Intermediate, and Transparent
At ingress to an LSP, an LSR pushes at least one label onto the label stack. Label(s) pushed onto the label stack may be the first label(s) in the stack.
In this case, we know that the NHLFE that contained the label manipulation instructions used to push the label(s) onto the stack was located using an FTN and that the local LSR may be an ingress to MPLS generally. 10
An LSR that pops at least one label off the label stack is either the egress or the penultimate hop for the LSP. The distinction between penultimate hop and egress is a small one when both pop a label. In fact, for LSRs that can terminate an LSP at an output interface, the distinction is essentially nonexistent. An LSR that performs a simple label swap is an intermediate LSR.
Labels in the label stack below11 those changed by label manipulation instructions correspond to LSPs for which the local LSR is transparent.
In the independent control mode,12 an LSP for which the local LSR is an egress may be spliced together with another LSP for which it is the ingress. 13 Where it would have popped one label and pushed another, it now swaps one label for the other. In this case, the LSR has become an intermediate LSR with respect to the concatenated LSP.
An implementation may allow for fairly complex label manipulation instructions in an NHLFE (for example, pop one or more labels and then push one or more labels). This LSR may splice LSPs for which it is the egress at multiple levels with LSPs for which it is the ingress at multiple levels. By analogy, it has become an intermediate LSR for concatenated LSPs corresponding to each label popped off where a corresponding label is also pushed onto the label stack.
LSRs that push at least one more label onto a label stack than they pop off are ingress LSRs for LSPs at all levels corresponding to additional labels pushed.
LSRs that pop at least one more label than they push are egress LSRs for LSPs corresponding to labels popped with no matching push.
LSRs are intermediate LSRs in all LSPs for which they effectively perform a label swap.
LSRs are transparent in all LSPs corresponding to labels that are unaffected by push, pop, and swap label manipulation instructions.
Note that this summary is a generalization. The simplicity of the forwarding function in MPLS depends on the fact that for any particular atomic forwarding decision, the decision is based entirely on the top-level label. Therefore, the NHLFE selection is based on the top-level label rather than the label stack in the simplified forwarding paradigm.
Characteristics and Associated State
In addition to the forwarding information associated with an LSP, additional characteristics and state information may need to be maintained. Examples of these types of information include the following:
QoS characteristics of the LSP, which are used to determine queue assignment and priority
Information used to determine whether an LSP setup in progress can be merged with an existing LSP (if merging is supported)
State of LSP setup, used to determine when the LSP may be used for forwarding data (in ordered control mode or when a loop has been detected)14
This section describes the MPLS-specific components that make up a labeled packet.
MPLS defines specific label formats for ATM and Frame Relay, and a generic label format intended for use with most other media. 15 ATM labels correspond to VPI/VCI numbers and may be as long as 24 bits. Frame Relay labels correspond to DLCI numbers and are either 10 or 23 bits long. The generic label is 20 bits long.
The label stack is a succession of labels in order (as viewed in network arrival order) from top to bottom. Operations on the label stack include the following:
Pushing one or more labels onto the stack (adding labels to the beginning, or top, of the stack)
Popping a label off the stack (removing it from the beginning, or top, of the stack)
The format of the label stack is described in the Encapsulation section in Chapter 6.