5.4.5 Label Switching and MPLS
While IETF was working out integrated services and
differentiated services, several router vendors were working on better
forwarding methods. This work focused on adding a label in front of each packet
and doing the routing based on the label rather than on the destination address.
Making the label an index into an internal table makes finding the correct
output line becomes just a matter of table lookup. Using this technique, routing
can be done very quickly and any necessary resources can be reserved along the
path.
Of course, labeling flows this way comes perilously close to
virtual circuits. X.25, ATM, frame relay, and all other networks with a
virtual-circuit subnet also put a label (i.e., virtual-circuit identifier) in
each packet, look it up in a table, and route based on the table entry. Despite
the fact that many people in the Internet community have an intense dislike for
connection-oriented networking, the idea seems to keep coming back, this time to
provide fast routing and quality of service. However, there are essential
differences between the way the Internet handles route construction and the way
connection-oriented networks do it, so the technique is certainly not
traditional circuit switching.
This ''new'' switching idea goes by various (proprietary)
names, including label switching and tag switching. Eventually, IETF began to standardize
the idea under the name MPLS (MultiProtocol Label Switching). We will call it MPLS
below. It is described in RFC 3031 and many other RFCs.
As an aside, some people make a distinction between routing and switching.
Routing is the process of looking up a destination address in a table to find
where to send it. In contrast, switching uses a label taken from the packet as
an index into a forwarding table. These definitions are far from universal,
however.
The first problem is where to put the label. Since IP packets
were not designed for virtual circuits, there is no field available for
virtual-circuit numbers within the IP header. For this reason, a new MPLS header
had to be added in front of the IP header. On a router-to-router line using PPP
as the framing protocol, the frame format, including the PPP, MPLS, IP, and TCP
headers, is as shown in Fig. 5-41. In a
sense, MPLS is thus layer 2.5.
Figure 5-41. Transmitting a TCP segment using IP, MPLS, and PPP.
The generic MPLS header has four fields, the most important of
which is the Label field, which holds the index.
The QoS field indicates the class of service. The
S field relates to stacking multiple labels in
hierarchical networks (discussed below). If it hits 0, the packet is discarded.
This feature prevents infinite looping in the case of routing instability.
Because the MPLS headers are not part of the network layer
packet or the data link layer frame, MPLS is to a large extent independent of
both layers. Among other things, this property means it is possible to build
MPLS switches that can forward both IP packets and ATM cells, depending on what
shows up. This feature is where the ''multiprotocol'' in the name MPLS came
from.
When an MPLS-enhanced packet (or cell) arrives at an
MPLS-capable router, the label is used as an index into a table to determine the
outgoing line to use and also the new label to use. This label swapping is used
in all virtual-circuit subnets because labels have only local significance and
two different routers can feed unrelated packets with the same label into
another router for transmission on the same outgoing line. To be distinguishable
at the other end, labels have to be remapped at every hop. We saw this mechanism
in action in Fig.
5-3. MPLS uses the same technique.
One difference from traditional virtual circuits is the level
of aggregation. It is certainly possible for each flow to have its own set of
labels through the subnet. However, it is more common for routers to group
multiple flows that end at a particular router or LAN and use a single label for
them. The flows that are grouped together under a single label are said to
belong to the same FEC (Forwarding Equivalence Class). This class covers not
only where the packets are going, but also their service class (in the
differentiated services sense) because all their packets are treated the same
way for forwarding purposes.
With traditional virtual-circuit routing, it is not possible to
group several distinct paths with different end points onto the same
virtual-circuit identifier because there would be no way to distinguish them at
the final destination. With MPLS, the packets still contain their final
destination address, in addition to the label, so that at the end of the labeled
route the label header can be removed and forwarding can continue the usual way,
using the network layer destination address.
One major difference between MPLS and conventional VC designs
is how the forwarding table is constructed. In traditional virtual-circuit
networks, when a user wants to establish a connection, a setup packet is
launched into the network to create the path and make the forwarding table
entries. MPLS does not work that way because there is no setup phase for each
connection (because that would break too much existing Internet software).
Instead, there are two ways for the forwarding table entries to
be created. In the data-driven approach, when a
packet arrives, the first router it hits contacts the router downstream where
the packet has to go and asks it to generate a label for the flow. This method
is applied recursively. Effectively, this is on-demand virtual-circuit
creation.
The protocols that do this spreading are very careful to avoid
loops. They often use a technique called colored
threads. The backward propagation of an FEC can be compared to pulling a
uniquely colored thread back into the subnet. If a router ever sees a color it
already has, it knows there is a loop and takes remedial action. The data-driven
approach is primarily used on networks in which the underlying transport is ATM
(such as much of the telephone system).
The other way, used on networks not based on ATM, is the control-driven approach. It has several variants. One
of these works like this. When a router is booted, it checks to see for which
routes it is the final destination (e.g., which hosts are on its LAN). It then
creates one or more FECs for them, allocates a label for each one, and passes
the labels to its neighbors. They, in turn, enter the labels in their forwarding
tables and send new labels to their neighbors, until all the routers have
acquired the path. Resources can also be reserved as the path is constructed to
guarantee an appropriate quality of service.
MPLS can operate at multiple levels at once. At the highest
level, each carrier can be regarded as a kind of metarouter, with there being a
path through the metarouters from source to destination. This path can use MPLS.
However, within each carrier's network, MPLS can also be used, leading to a
second level of labeling. In fact, a packet may carry an entire stack of labels
with it. The S bit in Fig. 5-41 allows a router removing a label to know if
there are any additional labels left. It is set to 1 for the bottom label and 0
for all the other labels. In practice, this facility is mostly used to implement
virtual private networks and recursive tunnels.
Although the basic ideas behind MPLS are straightforward, the
details are extremely complicated, with many variations and optimizations, so we
will not pursue this topic further. For more information, see (Davie and
Rekhter, 2000; Lin et al., 2002; Pepelnjak and Guichard, 2001; and Wang,
2001).
No comments:
Post a Comment
silahkan membaca dan berkomentar