Our MulTreeLDP signaling protocol is a new label distribution protocol which conforms to the requirements of the MPLS architecture [62]. The MulTreeLDP protocol is different from CR-LDP, however we kept the CD-LDP message formats, making it possible to envision a merging of MulTreeLDP with CR-LDP. MulTreeLDP defines three different categories of messages. Advertisement messages create label mappings and LSPs. Link failure and recovery detection messages are used to detect the failure or the recovery of links attached to interfaces of an MPLS router. For proper MulTreeLDP operation, advertisement and notification messages must be delivered reliably and in-order. To satisfy this requirement, we chose TCP (port 2646) as the transport protocol for these messages. On the other hand, a link failure or repair needs to be detected as early as possible and TCP retransmission timers would increase the detection time. Therefore, link failure and recovery detection messages run over UDP (port 2646).
All MulTreeLDP routers listen for advertisement and notification messages on TCP port 2646. When a router needs to send a MulTreeLDP message to another router, it opens a new connection on port 2646 of the destination router. MulTreeLDP advertisement and notification messages consist of a MulTreeLDP header, a message header, and a series of Type-Length-Value (TLV) objects as illustrated in Figure 5.4. A TLV is a 3-tuple which contains the type of the message, the length of the value field, and a value field.
|
Our implementation of MulTreeLDP consists of three threads. The main thread handles all advertisement and notification messages. On reception of an advertisement message, the main thread can modify the FIB of the router and send other MulTreeLDP messages in accordance with the MulTreeLDP protocol described in the remainder of this section. The main thread can also perform switchback and switchover when it receives notification messages. The second and the third threads detect failures between a router and its neighbors in the multicast routing tree. The second thread sends link failure and recovery detection messages to every neighbor of a router while the third thread listens for these messages. In the remainder of this chapter, we describe the MulTreeLDP signaling protocol.
First we explain how a user can provide the description of a multicast routing tree that is understandable by MulTreeLDP. Users must write in a configuration file the multicast routing tree description before MulTreeLDP establishes the mLSP that maps the multicast routing tree. Multicast routing tree description files contain IP addresses separated by a ``,'' symbol, a ``('' symbol, a ``)'' symbol or a combination of these three symbols. We next describe the rules for describing multicast routing trees.
Trees must be described depth-first, starting from
. The IP address chosen for a router is the address of the interface via which packets would arrive if they were sent by
over the multicast routing tree. The IP address of any interface of
can be used for
. A ``,'' separates the IP addresses of two consecutive routers if the only router downstream of the first router of the expression with regards to
is the second router of the expression. If a router has several children in
, then all subtrees of this router are successively described in the configuration file. The descriptions of the subtrees are put between a ``('' and a ``)'' symbol and the description of the first subtree follows immediately the IP address of the parent router. Subtrees are described using the above rules recursively. Let us take an example to illustrate the rules. Consider Figure 5.5 and tree
rooted at
. The configuration file first contains any IP address of
. This IP address can be either 10.0.1.1 or 10.0.2.1. We arbitrarily choose 10.0.1.1 as the address that describes
and write this address in the configuration file. Node
has two children
and
, therefore two subtrees
and
of
originate from a child node of
. We put the description of these subtrees in brackets. The first subtree
is constituted by node
only. If packets are sent from
to
then they arrive at
via the interface associated with IP address 10.0.1.2. Therefore
is described by (10.0.1.2). The second subtree
is the subtree of
rooted at
. Node
has only one child
so the description of
will start with (10.0.2.2,10.0.3.2. Then
has three children
,
and
that are leaves of the tree, hence
is described by (10.0.2.2,10.0.3.2(10.0.4.2)(10.0.5.2)(10.0.6.2)). Consequently the configuration file for
contains:
10.0.1.1(10.0.1.2)(10.0.2.2,10.0.3.2(10.0.4.2)(10.0.5.2)(10.0.6.2)).
|
We now explain how MulTreeLDP builds the bidirectional mLSP that maps a multicast routing tree described in a tree configuration file. Any computer can establish an explicit mLSP. For example, a multicast routing tree can be computed by a computer offline and this computer can establish the mLSP. The computer responsible for establishing the tree first parses the configuration file. The computer creates an Explicit Route Hop TLV for each IP address found in the file, a New Branch TLV for each ``('' symbol and an End Branch TLV for each ``('' symbol. Then the computer responsible for establishing the mLSP creates an Explicit Route Tree TLV that contains all Explicit Route, New Branch and End Branch TLVs it has created in the order their corresponding entries were parsed in the file. In Figure 5.5, we show the contents of the Explicit Route Tree TLV (ER-Tree TLV) for the example developed in the previous paragraph. Also the computer creates a FEC TLV which contains the IP multicast address of the group for which we want to create the mLSP. Finally the computer sends an Explicit Route Request message that contains the Explicit Route Tree TLV and the previously created FEC TLV to the router designated by the IP address of the first Explicit Route Hop TLV. This IP address is the address of one of the interfaces of the core of the tree. The size of a multicast routing tree established with MulTreeLDP is limited by the maximum size of a TCP datagram.
Each child of the core is the root of a subtree of the multicast routing tree. When the core receives the Explicit Route Request message, it extracts the tree topology from the contents of the message. The core of the multicast routing tree builds a new Explicit Route Tree TLV that contains the description of one of these subtrees for each of its children. Then the core sends a Label Request Message that contains one of the Explicit Route Tree TLVs to the corresponding child. When a node
receives a Label Request Message from a node
, it performs two actions. First,
sends a label mapping to
. Node
chooses a label, creates the corresponding Label TLV and sends to
a Label Mapping message that contains the Label TLV. Because the mLSP that maps the multicast routing tree is bidirectional, node
that sent the Label Mapping message also sends a Label Request message to
. The Explicit Route Tree TLV sent in this message contains only the IP address of the interface of
on the link between
and
. Node
replies with a Label Mapping message. At that point, a bidirectional LSP is established between
and
, or in this case the core and one of its children. Second, for each child
of
,
builds an Explicit Route Tree TLV that contains the description of the subtree rooted at
and sends a Label Request Message that contains this Explicit Route Tree TLV to
. The mLSP formerly created between the core and its children is thus expanded until all leaves of the tree are reached. When all leaves of the tree are reached, the mLSP maps the entire multicast routing tree.
As an example, consider the tree depicted in Figure 5.6(a). Figures 5.6(b), (d), (f), (g), (h), (j), (l) depict the MulTreeLDP messages exchanges in the MPLS network while Figures 5.6(c), (e), (g), (i), (k), (m) depict the expansion of the mLSP that maps the multicast routing tree after a message exchange. Suppose node
receives a Label Request message that contains the Explicit Route Tree TLV presented in Figure 5.5. Node
sends a Label Request message to nodes
and
(Figure 5.6(b)). Both messages contain an Explicit Route Tree TLV. The Explicit Route Tree TLV that is sent to
contains the IP address 10.0.1.2 of
. The Explicit Route Tree TLV that is sent to
describes the subtree of the multicast routing tree that is rooted at node
: 10.0.2.2,10.0.3.2(10.0.4.2)(10.0.5.2)(10.0.6.2). At that point no label mapping is established yet as shown in Figure 5.6(c). Then, nodes
and
send a Label Mapping message to
(Figure 5.6(d)). The portions of the mLSP that correspond to the label mapping established after
receives the Label Mapping messages from
and
are shown in Figure 5.6(e). Also, node
sends to
a Label Request message that contains the Explicit Route Tree TLV which contains the description the subtree of the multicast routing tree rooted at
: 10.0.3.2(10.0.4.2)(10.0.5.2)(10.0.5.2). In Figure 5.6(f), nodes
and
send a Label Request message to
in order to establish the second direction of the portions of the mLSP between
and
on the one hand, and between
and
on the other hand. The Label Request message sent by
to
contains the Explicit Route Tree TLV 10.0.1.1 and the Label Request message sent by
to
contains the Explicit Route Tree TLV 10.0.2.1. Node
sends a Label Request message to
,
and
. The Label Request message sent to
contains the Explicit Route Tree TLV 10.0.4.2, the Label Request message sent to
contains the Explicit Route Tree TLV 10.0.5.2, and the Label Request message sent to
contains the Explicit Route Tree TLV 10.0.6.2. Node
also sends a Label Mapping message to
and establishes the portion of the mLSP from
to
as shown in Figure 5.6(g). In Figure 5.6(h), node
sends a Label Mapping message to
and
and a bidirectional mLSP is established between
and
on the one hand, and
and
on the other hand. Node
sends a Label Request message to
to establish the other direction of the part of the mLSP between
and
. The Label Request message sent by
to
contains the Explicit Route Tree TLV 10.0.3.1. Nodes
,
and
send a Label Mapping message to
and the three corresponding mLSP portions are established. The new mLSP portions are depicted in Figure 5.6(i). In Figure 5.6(j), node
sends a Label Mapping message to
. The part of the mLSP between
and
becomes bidirectional (Figure 5.6(k)). Nodes
,
and
send a Label Request message to
. In Figure 5.6(l),
replies to
,
and
with Label Mapping messages to establish a bidirectional mLSP between
and
,
and
, and
and
. The mLSP that maps the multicast routing tree is complete (Figure 5.6(m)).
Backup path establishment is very similar to mLSP establishment, except that unidirectional mLSPs are created instead of bidirectional mLSPs. When a computer wants to advertise a backup path, it sends a Backup Route Request message to each of the end nodes of the backup path. This message contains the FEC TLV that corresponds to the FEC of the protected multicast routing tree, the Explicit Route Tree TLV that corresponds to the backup path as described in Section 4.4, and a Routers TLV. Since a path can be viewed as a tree where every node has only one child, we kept the format of the Explicit Route Tree TLV to describe a backup path. Therefore the Explicit Route Tree TLV contains Explicit Route Hop TLVs only. The routers TLV contains all the IP addresses of MPLS routers interfaces on the protected path. Then, the node that receives the Backup Route Request message removes the first hop from the Explicit Route Tree TLV and sends a Backup Label Request message to the next hop of the backup path. The Backup Label Request message contains the new Explicit Route Tree TLV and the FEC TLV of the protected tree. When a node receives a Backup Label Request message, it sends another Backup Label Request message to the next hop of the backup path after it has removed a Explicit Route Hop TLV from the Explicit Route Tree TLV which describes the backup path. Also, this node sends a Backup Label Mapping message to the sender of the Backup Label Request message. The Backup Label Mapping message contains a Label TLV. At that point a label mapping is established in one direction between the first node and the second node of the backup path. Other mappings are established similarly with exchanges of Backup Label Request and Backup Label Mapping messages.
The process we have described establishes a LSP that maps only one direction of a backup path. Using the notations of Section 4.4, this path is for instance the path between PSL
and node
via the backup path. In order to establish the second direction, the node that sent the Backup Route Request message needs to send a Backup Route Request message to the other end of the backup path. This second Backup Route Request message describes the reverse direction of the backup path, that is, the path between PSL
and node
via the backup path.
|
|
The second thread listens for probe messages on UDP port 2646. Every period
(
), the second thread checks the number of received probes for each neighbor. If this number is zero, then the link from
to its neighbor has failed. Router
has detected a link failure and sends link failure notification messages using the mechanism described in Section 5.2.3. Router
internally records the link failure. When router
receives a probe on a link recorded as failed, it immediately sends link recovery notification messages using the mechanism described in Section 5.2.3.
The payload of the probes is not used in our implementation of MulTreeLDP but can be used in future work for probe numbering to dismiss reordered or duplicate probes.
Suppose a node detects a link failure using the link failure detection mechanism presented in Section 5.2.2. After the link has failed, the node creates an IPv4 node TLV which contains the IP address of the interface on which the failed link is connected. The node then considers in turn each link from which it receives traffic, except the failed link. For each of these links, it builds a list of the labels of packets for flows forwarded from the considered link to the failed link. Then the node sends a Link Failure Notification message that contains the IPv4 node TLV and a Label TLV per label in the aforementioned list on all links except the failed link. When a node receives a Link Failure Notification message, it knows that all outgoing packets that are labeled with a label of the list embedded in the Link Failure Notification message will eventually be dropped due to the failed link. A node which receives a Link Failure Notification message acts as if the link through which it received the message had failed and builds a list of incoming labels for packets that are forwarded on this link. This node sends on every link, except the link through which it has been notified of the failure, a Link Failure Notification message which contains a Label TLV for each label of the list and the same IPv4 node TLV as the one it received in the Link Failure Notification message. The failure notification information is thus propagated by each node that detects the failure to all routers of all mLSPs that use the failed link.
Consider, for instance, the multicast routing tree topology from Figure 5.8(a) and the mLSP that maps the tree in Figure 5.8(b). Suppose that the link
between nodes
and
fails. Figure 5.8(c) shows the Failure Notification process. Both
and
detect the failure. Before the failure, node
forwards packets labeled with ``2'' on link
. Those packets are the packets labeled with ``1'' coming from
, and the packets labeled with ``3'' coming from
. The IP address of the interface of
at the failed link is 10.0.1.2. Therefore,
sends a Link Failure Notification message with an IPv4 node TLV containing the IP address 10.0.1.2 and the Label TLV for label ``1'' to
, and a Link Failure Notification message with an IPv4 node TLV containing the IP address 10.0.1.2 and the Label TLV for label ``3'' to
. When
receives the Link Failure Notification message from
, it knows that the packets forwarded with label ``3'' will eventually reach the interface with IP address 10.0.1.2 and then will be dropped. Node
forwards packets with label ``5'' coming from node
on link
with label ``3''. Therefore,
sends a Link Failure Notification message with an IPv4 node TLV containing the IP address 10.0.1.2 and the Label TLV for label ``5'' to
. On the other end of the failed link, node
also detects the failure. Before the failure, node
forwards packets with label ``14'' coming from node
on link
with label ``12''. The IP address of the interface of
at the failed link is 10.0.1.1. Therefore,
sends a Link Failure Notification message with an IPv4 node TLV containing IP address 10.0.1.1 and the Label TLV for label ``14'' to
. At this point, all nodes of the mLSP are notified of the link failure. If the mLSP is protected by a backup path, then the end nodes of the backup path must perform a switchover.
There is no difference between the link recovery notification and link failure notification processes except in the type of the messages used. Indeed, the link recovery notification process uses Link Recovery Notification messages to notify the other nodes of mLSP whose traffic was forwarded on the recovered link before the failure. On the example illustrated by Figure 5.8(c), suppose that the formerly failed link
is repaired. Nodes
and
detect the recovery with the mechanism described in Section 5.2.2. Node
sends a Link Recovery Message to node
with the IPv4 node TLV containing the IP address 10.0.1.2 and a Label TLV for label ``1'', and a Link Recovery Message to node
with the same IPv4 node TLV and a Label TLV for label ``3'' to
. When it receives the Link Recovery Notification message from
,
sends a Link Recovery notification message to
which contains the same IPv4 node TLV again and a Label TLV for label ``5''. Node
also detects the link recovery and sends Link Recovery notification message to
which contains the IPv4 node TLV for the IP address 10.0.1.1 and a Label TLV for label ``14''. At this point all nodes of the mLSP are notified of the link recovery. If the mLSP is protected by a backup path, then the end nodes of the backup path must perform a switchback.
When a node receives a Link Failure Notification message or detects the failure of a link attached to one of its interfaces, it first checks if it is a PSL for a mLSP that uses the failed link. PSLs are nodes which receive a Backup Route Request message. Backup Route Request messages contain the list of the interfaces that end a link of the protected path. We call failed interface the IP address contained in the IPv4 Node TLV of the Link Failure Notification message if the PSL received such a message, or the IP address of the interface at the failed link if the PSL itself detected the failure. If the failed interface matches one of the addresses previously received in the Router TLV of a Backup Route Request message, the PSL knows that one link on the protected path has failed and must perform a switchover. The switchover consists of modifying the MPLS forwarding tables of the LSRs and is performed instantaneously on each of the LSRs. Tables are changed such that all incoming traffic from the protected mLSP is forwarded also on the backup path.
Consider, for example, Figure 5.9(a). Nodes
and
are the PSLs for the tree represented as solid lines protected by the backup path represented in dotted lines. The backup path consists of link
and the protected path consists of links
and
. We study the behavior of PSL
on failure and recovery of link
. When link
has not failed,
forwards traffic from
to
and from
to
as shown in Figure 5.9(b) where only one direction of the backup path between
and
is represented. Packets coming from
with label ``13'' are forwarded to
with label ``15'' and packets coming from
with label ``5'' are forwarded to
with label ``3''. Node
does not forward packets over the backup path (Figure 5.9(b)). When
learns that it must perform switchover because a link of the protected path has failed,
forwards packets with label ``13'' from
both to
using label ``15'' and over the backup path to
using label ``14''. Node
also forwards packets with label ``5'' from
both to
using label ``3'' and over the backup path to
using label ``14'' (Figure 5.9(c)). When node
learns it must perform switchback because the failed link has been repaired, it stops forwarding packets over the backup path as in Figure 5.9(b).
MulTreeLDP header
The Version field is set to 0x1. The Length is the length in bytes of the MulTreeLDP message, version and length fields of the MulTreeLDP message excluded.We now give the format of all TLVs and messages presented in this chapter. MulTreeLDP TLVs and messages are compatible with CR-LDP. The ``u'' and ``unused'' bits that appear in the MulTreeLDP TLV and messages formats correspond to CR-LDP fields that are not used in MulTreeLDP.
The FEC TLV, of type 0x0100, is adapted from CR-LDP. A FEC is defined in a FEC element by a prefix and a prefix length. For an IPv4 address like an IP multicast group address, the LDP specification [3] requires that the element type field is set to ``2'', the Address Family to ``1'' and the Host Address Length to ``4'' which is the number of bytes of the IP address. The host address is the IPv4 address of the multicast group described by the FEC element.
Label TLV
The Label TLV, of type 0x0200, is adapted from CR-LDP and contains a label number.IPv4 node TLV
The IPv4 node TLV, of type 0x0805, is a new TLV and does not exist in CR-LDP. It contains an IPv4 address and is used in the notification messages.Explicit Route Tree TLV
The Explicit Route Tree TLV, of type 0x0900, is a new TLV and does not exist in CR-LDP. It defines a multicast explicit route tree. A multicast routing tree definition consists of New Branch TLVs (Figure 5.16), End Branch TLVs (Figure 5.17), and Explicit Route Hop TLVs (Figure 5.18).New Branch TLV
The New Branch TLV, of type 0x0901, is a new TLV and does not exist in CR-LDP. It has no payload and therefore the length field is set to ``0''.End Branch TLV
The End Branch TLV, of type 0x0902, is a new TLV and does not exist in CR-LDP. It has no payload and the length field is set to ``0''.Explicit Route Hop TLV
The Explicit Route Hop TLV, of type 0x0801, is adapted from CR-LDP. An Explicit Route Hop TLV contains the IP address in the IPv4 address field of an interface of a router part of an multicast route tree. The Prefix Length field is set to ``32'', which is the number of bits of an IPv4 address. If the ``E'' bit is set then packets received on this interface must be passed to the IP layer and the host can perform mixed L2/L3 forwarding.Routers TLV
The Routers TLV of type 0x0910 is a new TLV and does not exist in CR-LDP. The Routers TLV contains a list of Explicit Route Hop TLV.Explicit Backup Route Request message
Label Request message
Backup Label Request message
Label Mapping message
Backup Label Mapping message
Link Failure Notification message
The Link Failure Notification message, of type 0x0501, is a new message and does not exist in CR-LDP. This message contains the IP address in the IPv4 node TLV (see Figure 5.14) of an interface on which a failed link is attached. It also contains a list of (incoming) labels in the Label TLVs (Figure 5.13) as explained in Section 5.2.3.Link Recovery Notification message
The Link Recovery Notification message, of type 0x0502, is a new message and does not exist in CR-LDP. This message contains the IP address in the IPv4 node TLV (see Figure 5.14) of an interface on which a recovered link is attached. It also contains a list of (incoming) labels in the Label TLVs (Figure 5.13) as explained in Section 5.2.3.