Internet Draft
Multi-Protocol Label Switching WG Yoshihiro Ohba
Internet-Draft Yasuhiro Katsube
Expiration Date: September 1998 Toshiba
Eric Rosen
Cisco Systems
Paul Doolan
Ennovate Networks
March 1998
MPLS Loop Prevention Mechanism Using LSP-id and Hop Count
<draft-ohba-mpls-loop-prevention-00.txt>
Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress."
To learn the current status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).
Abstract
This paper presents a simple mechanism, based on ''LSP-ids'', which
can be used to prevent MPLS from setting up label switched paths
(LSPs) which have loops. The mechanism is compatible with, but does
not require, VC merge. The mechanism can be used with either the
local control or the egress control methods of label distribution.
The amount of information that must be passed in protocol messages
is tightly bounded (i.e., no path-vector is used). When a node
needs to change its next hop, a distributed procedure is executed,
but only nodes which are downstream of the change are involved.
Table of contents
1 Introduction ............................................. 2
2 Loop prevention mechanism ................................ 3
2.1 Overview ................................................. 3
Ohba, et al. [Page 1]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
2.1.1 Assigning LSP-ids ........................................ 3
2.1.2 Preventing looping LSPs .................................. 5
2.2 Messages ................................................ 5
2.3 Data structure .......................................... 6
2.4 Avoiding inconsistency during LSP modification ........... 7
2.5 Loop prevention algorithm ................................ 7
2.5.1 Algorithm for local control .............................. 8
2.5.2 Algorithm for egress control ............................. 11
2.6 Designated LSP-id management ............................. 11
3 Examples ................................................. 12
4 Enhancement of the algorithm ............................. 14
4.1 Enhancement for improving protocol performance ........... 14
4.1.1 How to deal with multiple SETUP messages ................. 14
4.1.2 How to deal with multiple UPDATE messages ................ 15
4.1.3 Interoperation of different message processing policies .. 17
4.2 Enhancement in route change .............................. 17
5 Comparison with path-vector/diffusion method ............. 18
6 Security considerations .................................. 19
7 Intellectual property considerations ..................... 19
8 References ............................................... 19
9 Authors' Addresses ....................................... 20
1. Introduction
This paper presents a simple mechanism, based on "LSP-ids", which
can be used to prevent MPLS from setting up label switched paths
(LSPs) which have loops. The LSP-id mechanism is a generalization
of [1].
The LSP-id mechanism works if some, all, or none of the LSRs in the
LSP support VC-merge. It can also be used with either the local
control or the egress control label distribution mechanism [2,3].
The LSP-id mechanism is conservative. It will always prevent the
formation of looping LSPs. During routing transients, however, it
may delay the formation of some non-looping LSPs.
The loop-prevention information which must be carried in the
protocol messages of the LSP-id mechanism is of fixed size,
independent of the length of the LSP. Thus the LSP-id mechanism is
more scalable than alternatives which require that path-vectors be
carried.
To set up a new LSP after a routing change, the LSP-id mechanism
requires communication only between nodes which are downstream of
the point of change. There is no need to communicate with nodes
that are upstream of the point of change. Thus the LSP-id mechanism
is more robust than alternatives which require that a diffusion
computation be performed.
An LSP for a particular Forwarding Equivalence Class (FEC) [4] can
be thought of as a tree whose root is the egress LSR for that FEC.
With respect to a given node in the tree, we can speak of its
Ohba, et al. [Page 2]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
"downstream link" as the link which is closest to the root; the
node's other edges are "upstream links".
The basis of the LSP-id scheme is the assignment of an "LSP-id" to
each link in an LSP tree. The assignment is done in such a way
that:
o in a steady-state loop-free environment, if some node has two
upstream links in the same LSP tree, each link will be assigned
a distinct LSP-id;
o if there is a looping LSP, then there will be some node which
has two upstream links in the same LSP tree, where the same
LSP-id has been assigned to each link.
Loops can then be prevented as follows. If a given node has an
upstream link in a particular LSP tree, with a particular LSP-id, it
must make sure that it does not acquire any other upstream link in
that LSP tree with the same LSP-id.
In this paper, we assume unicast LSPs. The loop prevention for
multicast LSPs is for further study.
2. Loop prevention mechanism
In the remainder of the paper, we assume the "downstream-on-demand"
is used as the label allocation method between neighboring nodes,
although the LSP-id mechanism is applicable to the upstream
allocation method.
2.1. Overview
2.1.1. Assigning LSP-ids
An LSP for a particular FEC can be thought of as a tree whose root
is the egress LSR for that FEC. With respect to a given node in the
tree, we can speak of its "downstream link" as the link which is
closest to the root; the node's other edges are "upstream links".
The term "link", as used here, refers to a particular relationship
on the tree, rather than to a particular physical relationship. In
the remainder of this section, when we will speak of the upstream
and downstream links of a node, we are speaking with reference to a
single LSP tree for a single FEC.
A leaf node is a node which has no upstream links.
Every node is responsible for assigning an LSP-id and an "LSP-id hop
count" for each of its downstream links.
Each leaf node assigns an LSP-id to its downstream link as follows.
The LSP-id consists of two parts:
Ohba, et al. [Page 3]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
o leaf-address: an L3 address of the leaf node itself, and
o leaf-local-id: a local identifier assigned by the leaf node.
The leaf-local-id must be chosen so that if the node in question is
a leaf on more than one tree for a given FEC, it uses different
LSP-ids for its downstream links on the respective trees. (If there
is no "load-splitting", i.e., there is only one LSP tree per FEC,
the identifier is not really needed.)
A leaf node also assigns an LSP-id hop count of zero to its
downstream link.
When a node assigns an LSP-id to its downstream link, it must inform
its downstream neighbor of the LSP-id and the LSP-id hop count
incremented by one. From the point of view of the downstream
neighbor, this LSP-id is now assigned to a particular one of its
upstream links.
A node which is not a leaf node assigns an LSP-id to its downstream
link as follows. It chooses, from among the LSP-ids assigned to its
upstream links, the one which has the largest LSP-id hop count. (If
the largest LSP-id hop count is shared by two or more LSP-ids, a
deterministic tie breaker is used to select a single LSP-id: the
numerically largest value chosen.) Once the LSP-id for the
downstream link is chosen, the associated hop count is incremented
by one, and the downstream neighbor is informed of the LSP-id and
LSP-id hop count.
If a particular node acquires a new upstream link, or loses an
existing upstream link, or if the LSP-id or LSP-id hop count of an
existing upstream link changes, the node needs to reevaluate its
choice of LSP-id and LSP-id hop count for its downstream link. If
it changes the LSP-id or LSP-id hop count for its downstream link,
it must so inform the downstream neighbor.
If a node acquires a new downstream link, it must assign an LSP-id
and LSP-id hop count, and so inform its new downstream neighbor.
When this procedure has been carried out, every link in an LSP tree
will have been assigned an LSP-id. The LSP-id for a particular link
will include an L3 address for a leaf node which is upstream of that
link. In particular, the LSP-id of a particular link will include
the L3 address of the leaf node which is furthest upstream of it
(modulo the tie breaker).
A routing change causes at least one node to change its next hop,
i.e., to acquire a new downstream link. This triggers a sequence of
LSP-id updates, proceeding downstream from the point of change.
However, change will not necessarily cause a change in the LSP-id of
every downstream link in the tree. The LSP-id updates only need to
percolate downstream until they reach a node which has a downstream
link whose LSP-id and LSP-id hop count do not have to change.
Ohba, et al. [Page 4]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
2.1.2. Preventing looping LSPs
Suppose that node R1's next hop for some FEC changes from what it
was previously to node R2. That is, R1 would like to acquire a new
downstream link. R1 assigns an LSP-id and LSP-id hop count to that
link, according to the above procedures. R1 then informs R2 of the
LSP-id and LSP-id hop count. This begins an LSP-id updating process
which must percolate downstream.
If changing R1's next hop to R2 results in a loop, then, when the
LSP-id updating process is completed, there will be some node in the
tree which has two upstream links with the same LSP-id.
Loops can therefore be prevented as follows:
o R2 should not distribute a label for the tree to R1 unless and
until R2 has determined that the LSP-id updating process has
completed successfully. This requires a procedure in which
LSP-id updates percolate downstream, and acknowledgments to the
LSP-id updates percolate back upstream.
o If, at any point during the process, some node sees that it has
two upstream links with the same LSP-id, it should immediately
terminate the LSP-id updating process with an error. This
requires that there be negative acknowledgments as well as
positive acknowledgments.
2.2. Messages
In the LSP-id algorithm, the following messages are used: SETUP,
SETUP_ACK, SETUP_NACK, UPDATE, UPDATE_ACK, UPDATE_NACK, RELEASE,
RELEASE_ACK, RELEASE_NACK, and TRIGGER. (Note that the message
names might not yet be perfectly aligned with the work of the LDP
team.)
Each message contains (FEC-id,LSP-id,hop-count). FEC-id is the
identifier of the forwarding equivalence class carried by the LSP.
LSP-id is an identifier of the LSP, and composed of a leaf-address
which is an L3 address of a leaf node and a leaf-local-id which is
used for identifying different LSPs with the same leaf-address and
the same FEC-id. Multi-path LSPs may have different leaf-local-id's
for the same leaf-address and FEC-id. Hop-count is the number of
hops from the node represented by the LSP-id to the node that
receives the message.
A SETUP message is transmitted to the downstream neighbor in order
to request a label. A RELEASE message is transmitted to the
downstream neighbor in order to release a label. An UPDATE message
is transmitted to the downstream neighbor in order to update an
LSP-id and a hop-count.
Ohba, et al. [Page 5]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
SETUP, UPDATE, and RELEASE message are acknowledged, either
positively or negatively. The SETUP_ACK, SETUP_NACK, UPDATE_ACK,
UPDATE_NACK, RELEASE_ACK, and RELEASE_NACK messages exist for this
purpose. (In some cases, RELEASE messages do not need to be
acknowledged. See Section 4.1.2.) However, if the receipt of a
SETUP, UPDATE, or RELEASE message causes an UPDATE message to be
sent downstream, the acknowledgment (positive or negative) of the
former message is deferred until an acknowledgment of the latter
message is received.
Note that there are two types of UPDATE messages; UPDATE messages
initiated by SETUP messages (referred to as UPDATE_ADD messages) and
UPDATE messages initiated by RELEASE messages (referred to as
UPDATE_DEL messages).
2.3. Data structure
A leaf node originates a SETUP message with
(FEC-id,LSP-id,hop-count) in which the hop-count is set to 1, the
leaf-address of the LSP-id is set to either the L3 address of its
output interface or its router id, and the leaf-local-id of the
LSP-id is set to a value which is unique in the same leaf-address
and the FEC-id.
For each upstream link of an LSP, a pair of (LSP-id,hop-count),
which is contained in the SETUP or the UPDATE message is maintained
by each node.
A downstream LSP-id is also maintained for a downstream link. The
upstream LSP-id which gives the maximum hop-count among all the
upstream LSP-id's is selected as the downstream LSP-id. If a number
of upstream LSP-id's all share the largest hop-count, the largest
LSP-id among them is selected as the downstream LSP-id. The
downstream LSP-id and hop-count are also referred to as the
designated LSP-id and the designated hop-count, respectively.
Any change in the upstream LSP-ids and/or the upstream LSP-id hop
counts may cause a change in the designated LSP-id.
An example of (LSP-id,hop-count) pairs assigned to each link of an
LSP is shown in Fig. 1, where an LSP-id is represented by
".".
Ohba, et al. [Page 6]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
(LSP-id,hop-count)
=(A.1,1) (B.3,4) (B.3,5)
A-------->R1-------->R2------->R3
^ ^
| (B.3,3) | (C.1,2)
(B.3,1) (B.3,2) | |
B------->R4-------->R5 R6
^
| (C.1,1)
|
C
Fig. 1. Example of LSP-id's in an LSP
2.4. Avoiding inconsistency during LSP modification
In order to ensure that all nodes on the LSP have consistent
information about the LSP-id and hop-count, events which modify the
LSP must be carefully treated.
A simple but conservative rule for avoiding inconsistency is to
ensure that at any given node, there is at most one outstanding
message per LSP at any one time.
In other words, when a node receives a SETUP, UPDATE or RELEASE
message about a particular LSP from one of its upstream neighbors,
it processes the message on the condition that (1) there is no
outstanding SETUP, UPDATE or RELEASE message for the same LSP which
is awaiting acknowledgment, or (2) processing the message does not
cause a change in the designated LSP-id or hop count.
If neither condition (1) nor (2) is satisfied, it blocks the message
(e.g., returns a {SETUP, UPDATE, RELEASE}_NACK message to the sender
or puts the message into a processing queue). We call this rule
"exclusive message processing".
Note that with the exclusive message processing, in the case where a
SETUP_NACK or a RELEASE_NACK message is returned after blocking, the
receiver of the NACK should retry to send the NACK'ed message.
It is however possible to allow multiple outstanding messages, as
long as the order of processing is preserved as the messages
percolate downstream. This is discussed in Section 4. This allows
the LSP modifications to complete more quickly, reducing the time it
takes to adapt to a routing change. There is, however, some cost in
simplicity.
2.5. Loop prevention algorithm
For simplicity, the algorithms for the exclusive message processing
Ohba, et al. [Page 7]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
rule are shown here. See Section 4.1 for the multiple message
processing rule.
2.5.1. Algorithm for local control
o When a leaf node initiates creation of an LSP for a FEC, it
sends a SETUP message that contains the FEC-id for the FEC, the
downstream LSP-id, and a hop-count which is set to 1. The SETUP
message serves as the request for a label.
o When a node receives a SETUP message with regard to a FEC from
an upstream neighbor, one of the following actions is taken:
+ If the received hop-count reaches the allowable maximum
value, it returns a SETUP_NACK message.
+ Otherwise, if the received LSP-id has already been
registered (see below for the meaning of "registered"), for
a different upstream link which belongs to one of the LSPs
having the same FEC-id as the received one, or if the node
is the originator of the LSP-id, then loop freedom cannot be
guaranteed, and a SETUP_NACK is returned.
+ Otherwise, if it is the egress node, it registers the
received LSP-id and hop-count for the upstream link, assigns
a label to that link, and immediately returns a SETUP_ACK
message (thereby distributing the label to its upstream
neighbor).
+ Otherwise, if accepting the SETUP message does not change
the designated LSP-id (see Section 2.6), it registers the
received LSP-id and hop-count for the upstream link, assigns
a label to that link, and returns a SETUP_ACK message
(thereby distributing the label to its upstream neighbor).
+ Otherwise, if there is an outstanding message for the LSP,
it blocks the message.
+ Otherwise, if there is a downstream link for the LSP, it
sends an UPDATE_ADD message which contains the received
FEC-id, LSP-id, and hop-count incremented by one, to the
downstream neighbor. it also registers the received LSP-id
for the upstream link.
+ Otherwise, it sends a SETUP message which contains the
received FEC-id, LSP-id, and hop-count incremented by one,
to the downstream neighbor. It registers the received
LSP-id for the upstream link. If the optimistic mode [5] is
adopted, a SETUP_ACK message is returned. If the optimistic
mode is adopted, loops are not prevented, but any loop which
may be formed will soon be detected by the receipt of a
negative acknowledgment.
Ohba, et al. [Page 8]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
o When a node receives an UPDATE_{ADD,DEL} message with regard to
an LSP, one of the following actions is taken:
+ If there is no corresponding upstream link or the received
hop-count reaches the allowable maximum value, it returns an
UPDATE_{ADD,DEL}_NACK message.
+ Otherwise, if the received LSP-id has already been
registered for a different upstream link which belongs to
one of the LSPs having the same FEC-id as the received one,
loop freedom cannot be guaranteed, so an UPDATE_ADD_NACK is
returned. This case won't happen for UPDATE_DEL messages.
+ Otherwise, if accepting the message changes neither the
designated LSP-id nor the designated hop-count (see Section
2.6), it registers the received LSP-id and hop-count for the
corresponding upstream link, and immediately returns an
UPDATE_{ADD,DEL}_ACK message.
+ Otherwise, if there is an outstanding message for the LSP,
it blocks the message.
+ Otherwise, if there is a downstream link allocated for the
LSP, it forwards the UPDATE_{ADD,DEL} message, with the
candidate for the designated LSP-id and the candidate for
the designated hop-count incremented by one, to the
downstream neighbor. If the received message is UPDATE_DEL,
the node also replaces the LSP-id and hop-count for the
corresponding upstream link with the received ones and
returns an UPDATE_DEL_ACK message to the upstream neighbor.
+ Otherwise, replaces the LSP-id and hop-count for the
corresponding upstream link with the received ones and
immediately returns an UPDATE_{ADD,DEL}_ACK message. If it
is not the egress node for the LSP, it must also send a
SETUP message to the downstream node.
o When a node receives a RELEASE message with regard to an LSP,
one of the following actions is taken:
+ If there is no upstream link for the LSP other than the one
to be released, it removes the upstream link and the
associated (LSP-id,hop-count) pair, returns a RELEASE_ACK
message, and sends a RELEASE message to the downstream
neighbor.
+ Otherwise, if accepting the message does not change the
designated LSP-id (see Section 2.6), it removes the upstream
link and the associated (LSP-id,hop-count) pair, and returns
a RELEASE_ACK message.
+ Otherwise, if there is an outstanding message for the same
LSP, it blocks the message.
Ohba, et al. [Page 9]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
+ Otherwise, it removes the upstream link and the associated
(LSP-id,hop-count) pair, returns a RELEASE_ACK message. It
also sends an UPDATE_DEL message with the candidate for the
designated LSP-id and the candidate for the designated
hop-count incremented by one, to the downstream neighbor.
o When the route with regard to an LSP changes at a node, the node
sends a RELEASE message to the old downstream neighbor and a
SETUP message to the new downstream neighbor.
o When a node receives a SETUP_ACK message with regard to an LSP,
it returns a SETUP_ACK or an UPDATE_ADD_ACK message to the
upstream neighbor if needed. The designated LSP-id and
hop-count is set to the ACK'ed ones. When an UPDATE_ADD_ACK
message is returned to the upstream neighbor, the LSP-id and
hop-count being registered for the corresponding upstream link
are replaced with the ACK'ed ones. Now it is able to start
label switching. Note that received SETUP_ACK message contains
the label which was assigned by the downstream neighbor, and
that any SETUP_ACK message which is sent upstream must also
contain a newly assigned label.
o When a node receives a SETUP_NACK message with regard to an LSP,
instead of starting label switching, it returns a SETUP_ACK, a
SETUP_NACK or an UPDATE_ADD_ACK message to the upstream neighbor
depending on the operation policy. A halfway LSP is formed as a
result when a SETUP_ACK or an UPDATE_ADD_ACK message is
returned. When a SETUP_ACK or an UPDATE_ADD_ACK message is
returned to the upstream neighbor, it may retry to send a SETUP
message to its downstream neighbor. When a SETUP_NACK message
is returned to the upstream neighbor, it deletes the
corresponding upstream link. When an UPDATE_ADD_ACK message is
returned to the upstream neighbor, the LSP-id and hop-count
being registered for the corresponding upstream link are
replaced with the ACK'ed ones.
o When a node receives an UPDATE_{ADD,DEL}_ACK message with regard
to an LSP, it replaces the designated LSP-id and hop-count with
the ACK'ed ones. If the received message is UPDATE_ADD, it
returns a SETUP_ACK or an UPDATE_ADD_ACK message. When an
UPDATE_ADD_ACK is returned to the downstream neighbor, the the
LSP-id and hop-count being registered for the corresponding
upstream link are replaced with the ACK'ed ones.
o When a node receives an UPDATE_ADD_NACK message with regard to
an LSP, it returns a SETUP_NACK or an UPDATE_ADD_NACK message to
the upstream neighbor, without updating the designated LSP-id
and hop-count. When a SETUP_NACK is returned to the upstream
neighbor, the corresponding upstream link is deleted.
o When a node receives an UPDATE_DEL_NACK message with regard to
an LSP, it retries to send the UPDATE_DEL message to its
downstream neighbor.
Ohba, et al. [Page 10]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
o When a node receives a RELEASE_ACK message with regard to an
LSP, it removes the downstream link.
o When a node receives a RELEASE_NACK message (due to, e.g.,
existence of an outstanding message) with regard to an LSP, it
retries to send a RELEASE message.
2.5.2. Algorithm for egress control
o An egress node, when it first comes up, issues a TRIGGER message
to all neighbors. Also, any node which creates a downstream
link for a particular LSP, sends a TRIGGER message to each
upstream neighbor for which there is no upstream link.
o Any node which gets a TRIGGER message (specifying a particular
FEC) from its next hop for that FEC will send a SETUP message,
which implicitly acknowledges the TRIGGER message.
o When a node receives a SETUP message, if neither it has a
corresponding downstream link nor it is the egress node, it
returns a SETUP_NACK message. Otherwise, if it is the egress
node or the current selection of the designated LSP-id and
hop-count does not change, it returns a SETUP_ACK message.
Otherwise, it sends an UPDATE message to its own next hop.
o For other events, nodes follow the same procedure as described
in Section 2.5.1.
Note that a node which has no upstream link for the LSP yet behaves
as a leaf. In the case where the tree is being initially built up
(e.g., the egress node has just come up), each node in turn will
behave as a leaf for a short period of time.
2.6. Designated LSP-id management
In the algorithm described in Section 2.5, a change in the
designated LSP-id and hop-count is needed in the following cases.
(a) When a node receives a SETUP message, if the designated LSP-id
does not exist, the designated LSP-id and hop-count need to be
set to the received ones.
(b) When a node receives a SETUP or an UPDATE_ADD message, if the
LSP-id being registered for the received upstream link is not
the current designated LSP-id, then if the received hop-count is
greater than the designated one, or if the received hop-count is
equal to the designated one and the received LSP-id is greater
than the designated one, the designated LSP-id and hop-count
needs to be updated to the received one.
(c) When a node receives an UPDATE_{ADD,DEL} message, if the LSP-id
being registered for the received upstream link is the current
Ohba, et al. [Page 11]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
designated LSP-id, the designated LSP-id and hop-count need to
be updated. In this case, the node chooses the LSP-id which has
the largest LSP-id hop count from among the upstream LSP-ids
(the received LSP-id and hop-count are used for the received
upstream link) as the candidate for the designated LSP-id. If
the largest LSP-id hop count is shared by two or more LSP-ids, a
deterministic tie breaker is used to select a single LSP-id: the
numerically largest value chosen.
(d) When a node receives a RELEASE message, if the LSP-id being
registered for the received upstream link is the current
designated LSP-id, the designated LSP-id and hop-count need to
be updated. In this case, the node chooses the LSP-id which has
the largest LSP-id hop count from among the upstream LSP-ids
(excluding the one for the received upstream link) as the
candidate for the designated LSP-id. If the largest LSP-id hop
count is shared by two or more LSP-ids, a deterministic tie
breaker is used to select a single LSP-id: the numerically
largest value chosen.
3. Examples
Consider an MPLS network shown in Fig. 2 which employs local
control. Assume that an L3 loop exists for a FEC-id=F. Now leaf
nodes R1 and R6 initiates creation of an LSP. In this example, a
router id is used as a leaf-address, and leaf-local-id=0 is used
hence leaf-local-id is omitted. It is assumed that all nodes are
VC-merge capable, and operate in the conservative mode and allow
creation of halfway LSPs.
+<---------- R5 <---------+
| ^
| |
v |
R1 -------> R2 --------> R3 --------> R4
^
|
|
R6 -------> R7 --------> R8
Fig. 2 Example MPLS network
An example in which the loop is detected before the hop count
reaches the predetermined threshold is described below.
Assume that R1 sends a SETUP message before R6 does, and that the
maximum hop count is set to eight. First we show an example of how
to create an LSP.
The SETUP message from R1 contains (FEC-id,LSP-id,hop-count) =
Ohba, et al. [Page 12]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
(F,R1,1). Then R2, R3, R4, and R5 send SETUP messages with
(FEC-id,LSP-id,hop-count) = (F,R1,2), (F,R1,3), (F,R1,4), (F,R1,5),
respectively. These nodes registers the received
(LSP-id,hop-count).
When R2 receives the SETUP message from R5, it finds that the
leaf-address R1 is already registered by the SETUP message sent by
R1, and thus returns a SETUP_NACK message to R5. R5 then returns a
SETUP_ACK message to R4. Similarly, SETUP_ACK messages are returned
from R4 to R3, R3 to R2, and finally R2 to R1. Then a halfway LSP
R1->R2->R3->R4->R5 is created without forming a loop. R5 also sets
a retry timer to send a new SETUP message to R6 after certain period
of time. Note that the all designated LSP-id's for R1, R2, R3, and
R4 are set to R1.
Then R6 starts to send a SETUP message to R7. The SETUP message
from R6 contains (FEC-id,LSP-id,hop-count) = (F,R6,1). Then R7 and
R8 send SETUP messages with (FEC-id,LSP-id,hop-count) = (F,R6,2) and
(F,R6,3) to R8 and R3, respectively. These nodes also registers the
received (LSP-id,hop-count).
When R3 receives the SETUP message from R8, the designated LSP-id
changes since the received hop-count(=3) is larger than the already
registered one(=2). Then R3 sends an UPDATE_ADD message to R4 with
(FEC-id,LSP-id,hop-count) = (F,R6,4). When R4 receives the UPDATE
message from R3, it also sends an UPDATE_ADD message to R5 with
(FEC-id,LSP-id,hop-count) = (F,R6,5), since the designated LSP-id
also changes.
When R5 receives the UPDATE_ADD message from R4, since it is the
current egress node, it returns an UPDATE_ADD_ACK message to R4. R4
then returns an UPDATE_ADD_ACK message to R3. R3 returns a
SETUP_ACK message to R8. Similarly, a SETUP_ACK message is returned
from R8 to R7, and finally R7 to R8. Then a halfway merged LSP
((R1->R2),(R6->R7->R8))->R3->R4->R5 is created. Note that the
designated LSP-id's for R1 and R2 are set to R1, and for other
nodes, to R6.
R5 also resends a SETUP message to R2 with (FEC-id,LSP-id,hop-count)
= (F,R6,6). When R2 receives the SETUP message from R5, since the
received LSP-id is not registered by any other upstream neighbors
and the received hop-count is less than the threshold, it registers
the received LSP-id and hop-count and sends an UPDATE_ADD message to
R3 with (FEC-id,LSP-id,hop-count) = (F,R6,7).
When R3 receives the UPDATE_ADD message from R2, it finds that the
leaf-address R6 is already registered for R8. Then it considers
that a loop is about to be formed and thus returns an
UPDATE_ADD_NACK message to R2. R2 returns a SETUP_NACK message to
R5. R5 does not returns any message to R4 since there is no
outstanding message. In this case the halfway merged LSP holds.
On the contrary, in the case that R6 sends a SETUP message before R1
does, the SETUP message originated by R1 does not trigger the
Ohba, et al. [Page 13]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
transmission of an UPDATE_ADD message at R3 since the designated
LSP-id at R3 is not changed by setting up the upstream link from R2.
Next, an example of how to release an LSP is described by using
Fig. 2. Assume that a halfway merged LSP
((R1->R2),(R6->R7->R8))->R3->R4->R5 already exists.
If R6 sends a RELEASE message before R1 does, the RELEASE message is
forwarded until it reaches R3. R3 then issues an UPDATE_DEL message
since the designated LSP-id for R3 changes from R6 to R1. The
UPDATE_DEL message contains (FEC-id,LSP-id,hop-count) = (F,R1,3).
R4 returns an UPDATE_DEL_ACK to R3 and sends an UPDATE_DEL message
with (FEC-id,LSP-id,hop-count) = (F,R1,4) to R5. In this case, the
LSP is changed to R1->R2->R3->R4->R5.
On the contrary, if R1 sends a RELEASE message before R6 does, the
RELEASE message originated by R1 does not trigger the transmission
of an UPDATE_DEL message at R3 since the designated LSP-id for R3 is
not changed by releasing the upstream link between R2 and R3. In
this case, the LSP is changed to R6->R7->R8->R3->R4->R5.
4. Enhancement of the algorithm
The basic algorithm can be enhanced by the following two methods.
4.1. Enhancement for improving protocol performance
At some cost in simplicity, the time needed to adapt to a routing
change can be decreased by modifying the algorithms described in
Section 2.5. Instead of adhering to the exclusive processing rule,
we can allow a node to have multiple outstanding messages about the
same LSP, provided that certain conditions are met.
Since a RELEASE message is sent to the downstream neighbor only when
all the upstream link has been released, we consider dealing with
only multiple SETUP and UPDATE messages. In addition, for the
egress control, we need only consider the case of multiple UPDATE
messages since SETUP messages are transmitted from downstream to
upstream.
4.1.1. How to deal with multiple SETUP messages
When a node receives a SETUP message, it can forward the SETUP
message to the downstream neighbor even if there is an outstanding
SETUP message.
Each time a node receives a SETUP_ACK message for one of the
outstanding SETUP message(s) with regard to a FEC, the designated
LSP-id is replaced with the ACK'ed LSP-id if:
o the ACK'ed hop-count is greater than the designated hop-count,
Ohba, et al. [Page 14]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
or
o the ACK'ed hop-count is equal to the designated hop-count and
the ACK'ed LSP-id is greater than the designated LSP-id.
If the designated LSP-id changes, the designated hop-count is also
updated.
The final result on the designated LSP-id and hop-count after
receiving all acknowledgments is independent of the message
processing order.
Note that during the multiple outstanding message processing, a node
may receive a SETUP message from upstream neighbor after returning a
SETUP_ACK message for other SETUP message. In this case, if the
received hop-count is greater than the one which is already
registered for the upstream link, or if the received hop-count is
equal to the registered one and the received LSP-id is greater than
the registered one, the registered values need to be replaced with
the received ones. If the replacement does not need to change the
designated LSP-id and hop-count, it executes the replacement and
immediately returns a SETUP_ACK message, otherwise, it sends an
UPDATE_ADD message to the downstream neighbor. If there is no need
to replace the registered values, it immediately returns a SETUP_ACK
message.
4.1.2. How to deal with multiple UPDATE messages
(a) Multiple UPDATE_ADD messages
UPDATE_ADD messages can be processed concurrently in the same manner
as multiple SETUP messages regardless of the sending order of the
UPDATE_ADD messages and receiving order of the UPDATE_ADD_ACK or
UPDATE_ADD_NACK messages.
(b) Multiple UPDATE_DEL messages
For the multiple UPDATE_DEL messages, however, message order must be
preserved. For example, in Fig. 3, assume that the current
designated LSP-id for R1 is B, and that R1 receives a RELEASE
message from B, then receives a RELEASE message from C.
Consider the case where R1 sends an UPDATE_DEL message with
(LSP-id,hop-count) = (C,2) as a result of B's removal and then sends
an UPDATE_DEL message with (LSP-id,hop-count) = (A,2) as a result of
C's removal.
If R2 processes the UPDATE_DEL message with (LSP-id,hop-count) =
(A,2) before the UPDATE_DEL message with (LSP-id,hop-count) = (C,2),
R2 may finally select C as the designated LSP-id. R1, however, will
have selected (A,1), since C is no longer a leaf of the tree. Thus
R1 and R2 have made inconsistent choices. Hence, the message order
must be preserved at all nodes in order to avoid inconsistency with
Ohba, et al. [Page 15]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
multiple UPDATE_DEL messages.
A
| (LSP-id,hop-count)
| =(A,1)
v
B-------->R1-------->R2------->R3
(B,1) ^ (B,2) (B,3)
|
| (C,1)
C
Fig. 3. Example of multiple UPDATE_DEL messages
(c) A mixture of UPDATE_ADD and UPDATE_DEL messages
Similarly, message order must be preserved at all nodes when there
are multiple outstanding UPDATE_ADD and UPDATE_DEL messages.
For example, in Fig. 4, assume that the current designated LSP-id
for R2 is B, and that A sends a SETUP message. In this case, R2
sends an UPDATE_ADD message with (LSP-id,hop-count) = (A,3) to R3 as
a result of A's participation.
Consider the case where A sends a RELEASE message before receiving a
SETUP_ACK message. If R2 receives the RELEASE message initiated by
A before receiving an UPDATE_ADD_ACK message for the UPDATE_ADD
message, R2 sends an UPDATE_DEL message with (LSP-id,hop-count) =
(B,2) to R3.
If R3 processes the UPDATE_ADD and UPDATE_DEL messages from R2 in
reverse order, R3 may finally select A as the designated LSP-id,
despite the fact that A is no longer a leaf on the tree. To avoid
this problem, message order must also be preserved in this case.
A---------R1
|
|
|
v
B-------->R2-------->R3------->R4
(B,1) (B,2) (B,3)
Fig. 4. Example of a mixture of UPDATE_ADD and UPDATE_DEL messages
As a result of discussions in Section 4.1.1 and 4.1.2, it is
concluded that multiple outstanding message processing is possible
only if the message order is preserved at all nodes. This
Ohba, et al. [Page 16]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
requirement would be satisfied if the protocol is (i) implemented
over a reliable transport such as TCP for message transfer between
neighboring nodes, and (ii) implemented in a way that messages are
processed in exactly the same as the received order. Note that if
both conditions (i) and (ii) are satisfied, RELEASE_ACK and
UPDATE_DEL_ACK messages are not necessary since a change toward hop
count decrease is always loop-free.
4.1.3. Interoperation of different message processing policies
Nodes with exclusive message processing policy and with multiple
message processing policy can interoperate by the following way. If
a node with exclusive message processing receives multiple SETUP or
UPDATE messages, it simply blocks the message. Since both types of
nodes have their own mechanism to handle blocking events, they can
coexist in the same network.
4.2. Enhancement in route change
Consider the case where a route changes at R1. With the basic
algorithm for local control, R1 sends a RELEASE message to R2, and
sends a SETUP message to R6. If the SETUP message reaches R4 before
the RELEASE message, the SETUP message is blocked since the LSP-id=A
is already registered at R4 for the upstream link on the old route.
This would occur during a transient state of the routing protocol
where a SETUP message and a RELEASE message may be transmitted in
parallel for the same LSP. In such a case, the request is refused
though there is actually no loop, and the blocked node has to wait
until the links on the old path are removed.
old route
==========> (A,4)
+----->R2----->R3-----+
| |
| v
A----->R1 R4----->R5
| ^ (A,5)
| |
+--------->R6---------+
new route
==========>
Fig. 5. Example of route change
The performance during the route change can be enhanced by
introducing an additional rule. That is, when a SETUP message is
received, if the same LSP-id as the received one is already
registered for a different upstream link but the received hop-count
Ohba, et al. [Page 17]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
is less than or equal to the registered one, the node withdraws the
upstream link for the old path and accept the SETUP message for the
new path. For this purpose, an additional WITHDRAW message is used.
This modification does not violate the loop-free characteristics,
because the scheme still has the restriction against allowing a node
to have the same LSP-id registered for the same FEC by two different
neighbors.
Further enhancement can be expected by using not only hop count but
also routing metric information when a node makes a decision whether
the node replaces the old upstream link with the new one or not.
The use of routing metric is for further study.
Note that the nodes with and without this enhanced algorithm are
interoperable.
5. Comparison with path-vector/diffusion method
Advantages:
1. Whereas the size of the path-vector increases with the length of
the LSP, the sizes of the LSP-id and hop count are constant.
Thus the size of messages used by the LSP-id algorithm are
unaffected by the network size or topology. This leads to
improved scalability.
2. In the LSP-id algorithm, a node which is changing its next hop
for a particular LSP must interact only with nodes that are
between it and the LSP egress on the new path. In the
path-vector algorithm, however, it is necessary for the node to
initiate a diffusion computation that involves nodes which do
not lie between it and the LSP egress.
This characteristic makes the LSP-id algorithm more robust. If
a diffusion computation is used, misbehaving nodes which aren't
even in the path can delay the path setup. In the LSP-id
algorithm, the only nodes which can delay the path setup are
those nodes which are actually in the path.
3. The LSP-id algorithm is well suited for use with both the local
control and the egress control. The path-vector/diffusion
algorithm, however, is tightly coupled with the egress control
method.
Disadvantages:
1. When a particular node's next hop on a particular LSP tree
changes, the LSP-id algorithm does not necessarily allow the
node to continue using the old path while the new path is being
set up. If there is some node D which is downstream on both
paths, then it is not possible to have both paths set up at the
Ohba, et al. [Page 18]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
same time; otherwise D would have two upstream links with the
same LSP-id. So in this case, the old path must be torn down
before the new path can be used.
So it is possible that during routing transients, there may be
periods when there is no LSP for a particular FEC. This
disadvantage is a consequence of the fact that the LSP-id
algorithm maintains only the LSP-id, not a complete path vector.
This reduction of information is thus the source both of the
advantages and the disadvantages of the LSP-id algorithm.
However, the enhanced mechanism described in section 4.2 can be
used to greatly reduce the effects of this disadvantage. That
mechanism allows one to leave the existing path set up while
initiating the setup of the new path. If it turns out that the
two paths have no downstream node in common, then the old path
need not be torn down until the new path is put into use. If,
on the other hand, the two paths have a node in common, and the
newer path is the better one (i.e., the newer path brings the
leafs closer to the egress), tear down of the old path will be
initiated by the node which is on both paths. This minimizes
the time during which there is no label switching for the given
FEC. If the new path is worse than the old path, this may cause
more delay in switching over. That seems inconsequential
though, since in this case data is likely not being delivered
along the old path anyway.
6. Security considerations
Security considerations are not discussed in this document.
7. Intellectual property considerations
Toshiba and/or Cisco may seek patent or other intellectual property
protection for some of the technologies disclosed in this document.
If any standards arising from this document are or become protected
by one or more patents assigned to Toshiba and/or Cisco, Toshiba
and/or Cisco intend to disclose those patents and license them on
reasonable and non-discriminatory terms.
8. References
[1] Y. Ohba, et al., "Flow Attribute Notification Protocol Version 2
(FANPv2) Ingress Control Mode," Internet Draft,
draft-ohba-csr-fanpv2-icmode-00.txt, Dec. 1997.
[2] L. Andersson, et al., "LSP Specification," Internet Draft,
draft-mplsdt-ldp-spec-00.txt, Nov. 1997.
[3] E Rosen, et al., "A Proposed Architecture for MPLS,"
Internet Draft, draft-ietf-mpls-arch-00.txt, Aug. 1997.
Ohba, et al. [Page 19]
Internet-Draft draft-ohba-mpls-loop-prevention-00.txt March 1998
[4] R. Callon, et al., "A Framework for Multiprotocol Label
Switching," Internet Draft, draft-ietf-mpls-framework-02.txt,
Nov. 1997.
[5] B. Davie, et al., "Use of Label Switching With ATM,"
Internet Draft, draft-davie-mpls-atm-00.txt, Nov. 1997.
9. Authors' Addresses
Yoshihiro Ohba
R&D Center, Toshiba Corp.
1, Komukai-Toshiba-cho, Saiwai-ku
Kawasaki, 210, Japan
Email: ohba@csl.rdc.toshiba.co.jp
Yasuhiro Katsube
R&D Center, Toshiba Corp.
1, Komukai-Toshiba-cho, Saiwai-ku
Kawasaki, 210, Japan
Email: katsube@isl.rdc.toshiba.co.jp
Eric Rosen
Cisco Systems, Inc.
250 Apollo Drive
Chelmsford, MA, 01824
Email: erosen@cisco.com
Paul Doolan
Ennovate Networks
330 Codman Hill Road
Boxborough, MA
Email: pdoolan@ennovatenetworks.com
Ohba, et al. [Page 20]