draft-ietf-mpls-ldp-state-01.txt   draft-ietf-mpls-ldp-state-02.txt 
MPLS Working Group Liwen Wu
MPLS Working Group Christophe Boscher
Internet Draft Pierrick Cheval Internet Draft Pierrick Cheval
Expiration Date: December 1999 Christophe Boscher Expiration Date: April 2000 Alcatel France
Alcatel USA
Liwen Wu
Cisco
Eric Gray Eric Gray
Lucent Lucent
June 1999 October 1999
LDP State Machine LDP State Machine
draft-ietf-mpls-ldp-state-01.txt draft-ietf-mpls-ldp-state-02.txt
0. Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that other
other groups may also distribute working documents as Internet- groups may also distribute working documents as Internet- Drafts.
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet- Drafts as reference time. It is inappropriate to use Internet- Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Distribution of this memo is unlimited. Distribution of this memo is unlimited.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved. Copyright (C) The Internet Society (1998). All Rights Reserved.
1. Abstract 1. Abstract
In the current LDP draft [Ref5], there is no state machine specified In the current LDP specification [4], there is no state machine
for processing the LDP messages. We think that defining a common specified for processing the LDP messages. We think that defining a
state machine is very important for interoperability between common state machine is very important for interoperability between
different ldp implementations. different ldp implementations.
This draft provides state machine tables for ATM switch LSRs. We This document provides state machine tables for ATM switch LSRs. We
begin in section 2 by defining a list of terminologies. Then in begin in section 2 by defining a list of terminologies. Then in
section 3, we propose two sets of state machine tables for ATM switch section 3, we propose two sets of state machine tables for ATM switch
LSRs which use downstream-on-demand mode, one method can be used for LSRs which use downstream-on-demand mode, one method can be used for
non-vc mergable ATM LSRs, while the other one can be used for the non-vc merge-able ATM LSRs, while the other one can be used for the
vc-mergable ATM LSRs. In section 4, we provides a state machine for vc-merge-able ATM LSRs. In section 4, we provides a state machine
downstream mode ATM LSR. for downstream mode ATM LSR.
We focus on the LDP state machines and the associated control blocks.
We not describe the "LDP controller" which is in charge of LDP
session initialization, address mapping messages management, routing
interface, etc. Specifically, the LDP specification [4] defines the
state machine for session management.
Even though the state machines in this document are specific for Even though the state machines in this document are specific for
ATM-LSR, they can be easily adapted for other types of LSRs. ATM-LSR, they can be easily adapted for other types of LSRs.
2. Terminologies 2. Terminologies
- LDP-REQUEST: LDP Label Request message - LDP-REQUEST: LDP Label Request message
- LDP-MAPPING: LDP Label Mapping message - LDP-MAPPING: LDP Label Mapping message
- LDP-WITHDRAW: LDP Label Withdraw message - LDP-WITHDRAW: LDP Label Withdraw message
- LDP-RELEASE: LDP Label Release message - LDP-RELEASE: LDP Label Release message
- LDP-ABORT: It is a LDP Abort message which is used to abort a LSP - LDP-ABORT: LDP Abort message used to abort a LSP setup.
setup.
- LDP-NAK: It is a LDP Notification msg which is to reject a LDP - LDP-NAK: LDP Notification message used to reject an LDP message.
message.
3. State Machine for Downstream-on-Demand Mode 3. State Machine for Downstream-on-Demand Mode
This draft focuses on the LDP state machines and the associated
control blocks. It does not describe the "LDP controller" which is
in charge of LDP session initialization, address mapping messages
management, routing interface, etc.
In this draft, we provide two sets of state machines: one for the ATM In this draft, we provide two sets of state machines: one for the ATM
LSR which does not have VC-merge capability, and the other one for LSR which does not have VC-merge capability, and the other one for
the ATM LSR which does have VC-merge capability. the ATM LSR which does have VC-merge capability.
State machine descriptions are given in terms of control blocks,
states, events, response actions and state transitions. Control
blocks contain the information that is required to support handling
of events. A control block may also contain any additional
information that is required either of any specific implementation or
in support of other required functions. In every case, additional
information required to support the procedures defined in the LDP
specification [4] or management objects defined in the LDP MIB [3]
would be stored in a specific LDP implementation - either as part of
the control block structure or in some other way.
The state machines cover both independent LSP control and ordered LSP The state machines cover both independent LSP control and ordered LSP
control. control.
The loop detection and loop prevention message will be processed in Loop detection and loop prevention message will be processed as
the way as specified in [Ref5]. The impact of loop detection and loop specified in [4]. The impact of loop detection and loop prevention
prevention messages on a state transition is left for further study. messages on state transitions is left for further study.
3.0 An LSR's Behavior in the Case of a Next Hop Change 3.0 An LSR's Behavior in the Case of a Next Hop Change
When there is a topology change and an LSR detects a new better next When there is a topology change and an LSR detects a new better next
hop for an LSP, it may behave in 2 different ways: hop for an LSP, it may behave in 2 different ways:
1) It tries to do a "local repair". This means that it extends the 1) It tries to do a "local repair". This means that it extends the
LSP through the new next hop, releases the old path from this LSR LSP through the new next hop, releases the old path from this LSR
forward and then splices into this newly extended LSP. forward and then splices into this newly extended LSP.
2) If the LSP is created with the "pinned" option[Ref7,CR-LDP], the 2) If the LSP is created with the "pinned" option (CR-LDP[5]), the
LSR ignores the new next hop change, and the LSP stays unchanged. The LSR ignores the new next hop change, and the LSP stays unchanged. The
LSR may decide to send an LDP-MAPPING which contains the attribute LSR may decide to send an LDP-MAPPING which contains the attribute
about this New Next Hop (NH) change. about this New Next Hop (NH) change.
3.1. ATM Switch LSR with NO VC-merge 3.1. ATM Switch LSR with NO VC-merge
In an MPLS domain where some ATM LSRs do not have VC-merge In an MPLS domain where some ATM LSRs do not have VC-merge
capability, downstream-on-demand mode is required for these ATM capability, downstream-on-demand mode is required for these ATM LSRs
LSRs[Ref1]. Also, "conservative label retention mode" is required in [1]. Also, "conservative label retention mode" is required in this
this case[Ref1]. case [1].
For each LSP, there are 2 kinds of state machines involves: For each LSP, there are 2 kinds of state machines involves:
1) the LSP Control Block and its state machine which can be used to 1) the LSP Control Block and its state machine which can be used to
handle normal LSP setup. It is created when the LSR receives a new handle normal LSP setup. It is created when the LSR receives a new
LDP Request and it is deleted when the LSP of this request is torn LDP Request and it is deleted when the LSP of this request is torn
down. down.
2) the Next Hop Trigger Control Block and its state machine which is 2) the Next Hop Trigger Control Block and its state machine which is
used to handle switching over to a better LSP through a different used to handle switching over to a better LSP through a different
next hop. It is created when the LSR decides to switch over to a next hop. It is created when the LSR decides to switch over to a
better next hop and it is deleted when the LSR finishes switching better next hop and it is deleted when the LSR finishes switching
over to the better next hop. over to the better next hop. This state machine uses a timer (and
has corresponding states) to ensure that switch over occurs in a
timely fashion.
3.1.1 LSP Control Block 3.1.1 LSP Control Block
For each LSP, an LSP_Control_Block is defined which may contain the For each LSP, an LSP_Control_Block is defined which may contain the
following information: following information:
- Upstream Label Request ID(assigned by the upstream LSR), which is - Upstream Label Request ID (assigned by the upstream LSR), which
the 'Message Id' in the Label Request Message received from the is the 'Message Id' in the Label Request Message received from the
upstream LSR. upstream LSR.
- Downstream Label Request ID (assigned by this LSR itself), which - Downstream Label Request ID (assigned by this LSR itself), which
is 'Message Id' in the Label Request Message sent to the is 'Message Id' in the Label Request Message sent to the downstream
downstrearm LSR. LSR.
- Upstream LDP Identifier - Upstream LDP Identifier
- Downstream LDP Identifier - Downstream LDP Identifier
- State - State
- FEC - FEC
- Upstream Label(assigned by this LSR) - Upstream Label(assigned by this LSR)
- Downstream Label(assigned by the downstream LSR) - Downstream Label(assigned by the downstream LSR)
- Trigger Control Block Pointer, (Only used at the ingress LSR of a - Trigger Control Block Pointer, (Only used at the ingress LSR of a
LSP)which points to the control block that triggers setting up this LSP)which points to the control block that triggers setting up this
skipping to change at page 4, line 26 skipping to change at page 4, line 39
- Next Hop Control Block Pointer, which points to the control block - Next Hop Control Block Pointer, which points to the control block
which is used for switching over to a better LSP. which is used for switching over to a better LSP.
The following index combinations can be used to locate a unique The following index combinations can be used to locate a unique
LSP_Control_Block: LSP_Control_Block:
- Downstream Label and Downstream LDP Identifier, or - Downstream Label and Downstream LDP Identifier, or
- Upstream Label and Upstream LDP Identifier, or - Upstream Label and Upstream LDP Identifier, or
- Downstream Label Request ID and Downstream LDP Identifier
- Upstream Label Request ID and Upstream LDP Identifier - Upstream Label Request ID and Upstream LDP Identifier
Here is the relationship between different control blocks, the detail Here is the relationship between different control blocks, the detail
definition of Next Hop Trigger Block is described in section 3.1.6. definition of Next Hop Trigger Block is described in section 3.1.6.
For example, an LSP which transit through (LSR-A, LSR-B, LSR-C,LSR- For example, an LSP which transit through (LSR-A, LSR-B, LSR-C,LSR-
D): D):
LSR-A ----> LSR-B ---> LSR-C ---> LSR-D LSR-A ----> LSR-B ---> LSR-C ---> LSR-D
The control blocks in LSR-A are: The control blocks in LSR-A are:
+-----------------------+ +-----------------------+
| Trigger Control Block | | Trigger Control Block |
| (e.g, by config) | | (e.g, by config) |
+-----------------------+ +-----------------------+
^ ^
|(Trigger Control block pointer) |(Trigger Control block pointer) |
|
| |
+-----------------------+ +-----------------------+
| LSP Control Block | | LSP Control Block |
+-----------------------+ +-----------------------+
When LSR-B detects a better next hop to LSR-D through LSR-E, and it When LSR-B detects a better next hop to LSR-D through LSR-E, and it
decides to switch over to it, so control blocks in LSR-B are: decides to switch over to it, so control blocks in LSR-B are:
+-----------------------+ +-----------------------+
| LSP Control Block | | LSP Control Block |
| (original LSP) | | (original LSP) |
+-----------------------+ +-----------------------+
(LSP ^ | (LSP ^ |
Control | | (Next Hop Control Block Pointer) Control | | (Next Hop Control Block Pointer)
Block | | Block | |
skipping to change at page 5, line 14 skipping to change at page 5, line 27
When LSR-B detects a better next hop to LSR-D through LSR-E, and it When LSR-B detects a better next hop to LSR-D through LSR-E, and it
decides to switch over to it, so control blocks in LSR-B are: decides to switch over to it, so control blocks in LSR-B are:
+-----------------------+ +-----------------------+
| LSP Control Block | | LSP Control Block |
| (original LSP) | | (original LSP) |
+-----------------------+ +-----------------------+
(LSP ^ | (LSP ^ |
Control | | (Next Hop Control Block Pointer) Control | | (Next Hop Control Block Pointer)
Block | | Block | |
Pointer | v Pointer) | v
+--------------------------------+ +--------------------------------+
| Next Hop Trigger Control Block | | Next Hop Trigger Control Block |
+--------------------------------+ +--------------------------------+
^ | ^ |
(Trigger | | (New Next Hop LSP (Trigger | | (New Next Hop LSP
Control | | Control Block Pointer) Control | | Control Block Pointer)
Block | | Block | |
Pointer)| | Pointer)| |
| v | v
+------------------------+ +------------------------+
skipping to change at page 5, line 44 skipping to change at page 6, line 14
-- IDLE -- IDLE
This is the initial LSP state, when the LSP_Control_Block is created. This is the initial LSP state, when the LSP_Control_Block is created.
-- RESPONSE_AWAITED -- RESPONSE_AWAITED
This state means that the LSR has received and processed an LDP- This state means that the LSR has received and processed an LDP-
REQUEST from an upstream LSR, or it has received an internal set up REQUEST from an upstream LSR, or it has received an internal set up
request. It has sent a new LDP-REQUEST towards a downstream LSR. The request. It has sent a new LDP-REQUEST towards a downstream LSR. The
LSR is waiting for the LDP-MAPPING message from the downstream LSR. LSR is waiting for the LDP-MAPPING from the downstream LSR.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING message This state means that the LSR has received the LDP-MAPPING from the
from the downstream LSR and the LSP is up and operational. downstream LSR and the LSP is up and operational.
-- RELEASE_AWAITED -- RELEASE_AWAITED
This state means that the LSR has sent a LDP-WITHDRAW message This state means that the LSR has sent a LDP-WITHDRAW upstream and is
upstream and is waiting for the LDP-RELEASE before freeing up the waiting for the LDP-RELEASE before freeing up the label resource.
label resource.
3.1.3 Events 3.1.3 Events
-- LDP Request -- LDP Request
The LSR receives an LDP-REQUEST from an upstream LSR. The LSR receives an LDP-REQUEST from an upstream LSR.
-- LDP Mapping -- LDP Mapping
The LSR receives an LDP-MAPPING from a downstream LSR. The LSR receives an LDP-MAPPING from a downstream LSR.
skipping to change at page 6, line 34 skipping to change at page 6, line 48
The LSR receives an LDP-RELEASE from an upstream LSR. The LSR receives an LDP-RELEASE from an upstream LSR.
-- LDP Withdraw -- LDP Withdraw
The LSR receives an LDP-WITHDRAW from a downstream LSR. The LSR receives an LDP-WITHDRAW from a downstream LSR.
-- LDP Upstream Abort -- LDP Upstream Abort
The LSR receives an LDP-ABORT from an upstream LSR. The LSR receives an LDP-ABORT from an upstream LSR.
-- LDP Downstream Nak The LSR receives an LDP-NAK(notification) from -- LDP Downstream NAK The LSR receives an LDP-NAK (notification) from
an downstream LSR. an downstream LSR.
-- Upstream Lost -- Upstream Lost
The LSR loses its LDP session with an upstream LDP peer. The LSR loses its LDP session with an upstream LDP peer.
-- Downstream Lost -- Downstream Lost
The LSR loses its LDP session with a downstream LDP peer. The LSR loses its LDP session with a downstream LDP peer.
-- Internal SetUp -- Internal SetUp
For some reason, e.g. a configuration request of a traffic For some reason, e.g. a configuration request of a traffic
engineering tunnel, or recognizing a new FEC could trigger an engineering tunnel, or recognizing a new FEC could trigger an
skipping to change at page 8, line 17 skipping to change at page 8, line 17
The following diagram describes briefly the state transitions. The following diagram describes briefly the state transitions.
+-------------------+ +-------------------+
| | | |
+-------->| IDLE |<--------------+ +-------->| IDLE |<--------------+
| | | | | | | |
| +-------------------+ |(LDP Release) | +-------------------+ |(LDP Release)
|(LDP Upstream | | |(LDP Upstream | |
| Abort) |(LDP Request) |(LDP Upstream Abort) | Abort) |(LDP Request) |(LDP Upstream Abort)
|(Downstream Lost) |(Internal SetUp) | |(Downstream Lost) |(Internal SetUp) |
|(Downstream Nak) | |(LDP Downstream Nak) |(Downstream NAK) | |(LDP Downstream NAK)
|(Upstream Lost) v |(Upstream Lost) |(Upstream Lost) v |(Upstream Lost)
| +-------------------+ | | +-------------------+ |
| | | | | | | |
+---------| RESPONSE_AWAITED | | +---------| RESPONSE_AWAITED | |
| | | | | |
+-------------------+ | +-------------------+ |
| | | |
|(LDP Mapping) | |(LDP Mapping) |
| | | |
v | v |
skipping to change at page 9, line 4 skipping to change at page 8, line 48
v | v |
+-------------------+ | +-------------------+ |
| | | | | |
| RELEASE_AWAITED |------------>--+ | RELEASE_AWAITED |------------>--+
| | | |
+-------------------+ +-------------------+
3.1.5 State Machine 3.1.5 State Machine
3.1.5.1 State -- "IDLE" 3.1.5.1 State -- "IDLE"
State: IDLE
State: IDLE
Event: LDP Request Event: LDP Request
New States: Depends upon the action routine New State: Depends upon the action routine
Actions: Actions:
If this LSR is the LSP Egress or Proxy Egress [Ref2] If this LSR is the LSP Egress or Proxy Egress [2]
Then: Then:
Choose an upstream label, connect this upstream label to the local Choose an upstream label, connect this upstream label to the local
IP forwarding module, allocate the resources, send the LDP-MAPPING IP forwarding module, allocate the resources, send the LDP-MAPPING
message upstream with the upstream label, and go to the new state upstream with the upstream label, and go to the new state
`ESTABLISHED'. `ESTABLISHED'.
else else
Obtain a next hop (or interface) with the FEC specified in the Obtain a next hop (or interface) with the FEC specified in the
LDP-REQUEST message, propagate the LDP-REQUEST message, with newly LDP-REQUEST, propagate the LDP-REQUEST, with newly assigned Message
assigned Message ID by this LSR, towards the obtained next hop, ID by this LSR, towards the obtained next hop, and go to the new
and go to the new state `RESPONSE_AWAITED'. state `RESPONSE_AWAITED'.
If the LSR uses the independent control mode[Ref2], choose an If the LSR uses the independent control mode [2], choose an
upstream label, connect this upstream label to the local IP upstream label, connect this upstream label to the local IP
forwarding module, and send an LDP-MAPPING message upstream with forwarding module, and send an LDP-MAPPING upstream with the
the upstream label. upstream label.
If unable to process the request for any reason, issue an LDP-NAK If unable to process the request for any reason, issue an LDP-NAK to
message to the sender with the appropriate error code and delete the the sender with the appropriate error code and delete the control
control block. block.
State: IDLE State: IDLE
Event: LDP Mapping Event: LDP Mapping
New State: IDLE New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
skipping to change at page 10, line 30 skipping to change at page 10, line 29
Event: LDP Upstream Abort Event: LDP Upstream Abort
New State: IDLE New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: LDP Downstream Nak Event: LDP Downstream NAK
New State: IDLE New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: Upstream Lost Event: Upstream Lost
New State: IDLE New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: Downstream Lost Event: Downstream Lost
New State: IDLE
New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal SetUp Event: Internal SetUp
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
Actions: Actions:
Set up the Trigger Control Block pointer, Set up the Trigger Control Block pointer,
Obtain a next hop (or interface) with the FEC specified in the Obtain a next hop (or interface) with the FEC specified in the
Internal SetUp message, send a LDP-REQUEST towards the obtained next Internal SetUp message, send a LDP-REQUEST towards the obtained next
hop, and go to the new state 'RESPONSE_AWAITED'. hop, and go to the new state `RESPONSE_AWAITED'.
State: IDLE State: IDLE
Event: Internal Destroy Event: Internal Destroy
New State: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
skipping to change at page 12, line 5 skipping to change at page 11, line 50
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal New NH Event: Internal New NH
New State: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementaion error. Ignore. It is an internal implementation error.
3.1.5.2 State -- "RESPONSE_AWAITED" 3.1.5.2 State -- "RESPONSE_AWAITED"
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Request Event: LDP Request
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
Actions: Actions:
skipping to change at page 12, line 30 skipping to change at page 12, line 28
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Mapping Event: LDP Mapping
New State: ESTABLISHED New State: ESTABLISHED
Actions: Actions:
1) If the LSP is triggered by the local router(Trigger Control Block 1) If the LSP is triggered by the local router(Trigger Control Block
Pointer is not zero), send event "Internal LSP UP" to the Trigger Pointer is not zero), send event `Internal LSP UP' to the Trigger
control block. control block.
2) Else If the LSR uses the ordered control mode, choose an upstream 2) Else If the LSR uses the ordered control mode, choose an upstream
label. label.
3) Connect the upstream label to the downstream label. Allocate the 3) Connect the upstream label to the downstream label. Allocate the
resources. propagate the LDP-MAPPING message upstream with the resources. Propagate the LDP-MAPPING upstream with the upstream
upstream label. label.
If unable to process the message, disconnect the upstream label from If unable to process the message, disconnect the upstream label from
the downstream label, free the upstream label, release the resources, the downstream label, free the upstream label, release the resources,
send an LDP-RELEASE message downstream and an LDP-Nak upstream with send an LDP-RELEASE downstream and an LDP-NAK upstream with status
status (No Label Resources[ref-5]), and delete the LSP_Control_Block. (No Label Resources [4]), and delete the LSP_Control_Block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Release Event: LDP Release
New State: IDLE New State: IDLE
Actions: Actions:
If the LSR uses the independent control mode, free the upstream If the LSR uses the independent control mode, free the upstream
label. label.
Send an LDP-ABORT message downstream and delete the Send an LDP-ABORT downstream and delete the LSP_Control_Block.
LSP_Control_Block.
Note: This should only occur if the LSR uses the independent control
mode. In the ordered control mode, no upstream label mapping will
have been sent corresponding to this LSP while waiting for a label
mapping from downstream.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Withdraw Event: LDP Withdraw
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
Actions: Actions:
Ignore the event. It's a protocol error from the downstream LSR. Ignore the event. It's a protocol error from the downstream LSR.
skipping to change at page 13, line 35 skipping to change at page 13, line 36
Event: LDP Upstream Abort Event: LDP Upstream Abort
New State: IDLE New State: IDLE
Actions: Actions:
If the LSR uses the independent control mode, free the upstream If the LSR uses the independent control mode, free the upstream
label. label.
Send an LDP-ABORT message downstream. Send an LDP-ABORT downstream.
Delete the LSP_Control_Block. Delete the LSP_Control_Block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Downstream Nak Event: LDP Downstream NAK
New State: Depends on the action routine New State: Depends on the action routine
Actions: Actions:
1. If the LSP is triggered by the local router(Trigger Control Block 1. If the LSP is triggered by the local router(Trigger Control Block
Pointer is not zero), send event "Internal LSP DOWN" to the Trigger Pointer is not zero), send event `Internal LSP DOWN' to the Trigger
control block. control block.
2. Else If the LSR uses the independent control mode, send an LDP- 2. Else If the LSR uses the independent control mode, send an LDP-
WITHDRAW message upstream and go to state 'RELEASE_AWAITED'. WITHDRAW upstream and go to state `RELEASE_AWAITED'.
If the LSR uses the ordered control mode, send an LDP-NAK message If the LSR uses the ordered control mode, send an LDP-NAK upstream.
upstream. Then delete the control block. Then delete the control block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Upstream Lost Event: Upstream Lost
New State: IDLE New State: IDLE
Actions: Actions:
If the LSR uses the independent control mode, free the upstream If the LSR uses the independent control mode, free the upstream
skipping to change at page 14, line 33 skipping to change at page 14, line 33
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Downstream Lost Event: Downstream Lost
New State: Depends on the action routine New State: Depends on the action routine
Actions: Actions:
1. If the LSP is triggered by the local router(Trigger Control Block 1. If the LSP is triggered by the local router(Trigger Control Block
Pointer is not zero), send event "Internal LSP DOWN" to the trigger Pointer is not zero), send event `Internal LSP DOWN' to the trigger
control block. control block.
2. Else, If the LSR uses the independent control mode, free the 2. Else, If the LSR uses the independent control mode, free the
upstream label and send an LDP-WITHDRAW upstream and go to state upstream label and send an LDP-WITHDRAW upstream and go to state
'RELEASE_AWAITED'. `RELEASE_AWAITED'.
If the LSR uses the ordered control mode, send an LDP-NAK If the LSR uses the ordered control mode, send an LDP-NAK upstream
upstream(with a status No Route[Ref-5]) and then delete the control (with a status `No Route' [4]) and then delete the control block.
block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Internal SetUp Event: Internal SetUp
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
Actions: Actions:
Ignore, it is an internal implementation error. Ignore, it is an internal implementation error.
skipping to change at page 16, line 4 skipping to change at page 15, line 51
New State: ESTABLISHED New State: ESTABLISHED
Actions: Actions:
Ignore the event. It's an internal implementation error. For non VC- Ignore the event. It's an internal implementation error. For non VC-
merge ATM LSR, a new LSP control block is always created for each LDP merge ATM LSR, a new LSP control block is always created for each LDP
request. request.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Mapping
Event: LDP Mapping
New State: ESTABLISHED New State: ESTABLISHED
Actions: Actions:
Process the LDP-MAPPING message, which may contain the new attributes Process the LDP-MAPPING, which may contain the new attributes of the
of the label mapping and then propagate the LDP-MAPPING message label mapping and then propagate the LDP-MAPPING upstream.
upstream.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Release Event: LDP Release
New State: IDLE New State: IDLE
Actions: Actions:
Disconnect the upstream label from the downstream label. Disconnect the upstream label from the downstream label.
Free the upstream label. Free the upstream label.
Free the resources. Free the resources.
Send event "Internal Destroy" to the Next Hop Trigger Block if it was Send event `Internal Destroy' to the Next Hop Trigger Block if it was
in the middle of switching over to the better next hop. in the middle of switching over to the better next hop.
Propagate the LDP-RELEASE message downstream if the LSR is not the Propagate the LDP-RELEASE downstream if the LSR is not the end of LSP
end of LSP and delete the LSP_Control_Block. and delete the LSP_Control_Block.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Withdraw Event: LDP Withdraw
New State: Depends on the action routine. New State: Depends on the action routine.
Actions: Actions:
1) Free the resources and send LDP-RELEASE downstream. 1) Free the resources and send LDP-RELEASE downstream.
2) If it is independent control mode, set the state to 'IDLE', create 2) If it is independent control mode, set the state to `IDLE', create
a internal LDP Request with the information in the LSP_Control_Block, a internal LDP Request with the information in the LSP_Control_Block,
and pass event 'LDP Request' to its own state machine. and pass event `LDP Request' to its own state machine.
3) Else for the ordered control mode 3) Else for the ordered control mode
3.1)If the LSP is triggerd to be setup by itself(e.g it is the 3.1)If the LSP is triggered to be setup by itself (e.g it is the
ingress LSR of this LSP), send event "Internal LSP NAK" to the ingress LSR of this LSP), send event `Internal LSP NAK' to the
trigger control block and delete the control block trigger control block and delete the control block
3.2) else, if it is triggered by the incoming LDP Request, 3.2) else, if it is triggered by the incoming LDP Request,
Disconnect the upstream label from the downstream label. And Disconnect the upstream label from the downstream label. Propagate
Propagate the LDP-WITHDRAW message upstream and go to state the LDP-WITHDRAW upstream and go to state `RELEASE_AWAITED'.
'RELEASE_AWAITED'.
3.3) If the LSP is in the middle of switching over to a better LSP, 3.3) If the LSP is in the middle of switching over to a better LSP,
send event 'Internal Destroy' to the state machine of its New Next send event `Internal Destroy' to the state machine of its New Next
Hop LSP Control Block. Hop LSP Control Block.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Upstream Abort Event: LDP Upstream Abort
New State: IDLE New State: IDLE
Actions: Actions:
Disconnect the upstream label from the downstream label. Disconnect the upstream label from the downstream label.
Free the upstream label. Free the upstream label.
Send event "Internal Destroy" if the LSR was in the middle of Send event `Internal Destroy' if the LSR was in the middle of
switching over to the better next hop. switching over to the better next hop.
Propagate an LDP-RELEASE message downstream and delete the Propagate an LDP-RELEASE downstream and delete the LSP_Control_Block.
LSP_Control_Block.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Downstream Nak Event: LDP Downstream NAK
New State: ESTABLISHED New State: ESTABLISHED
Actions: Actions:
Ignore the event. It is a protocol error from the downstream LSR. Ignore the event. It is a protocol error from the downstream LSR.
The downstream LSR should always LSP-WITHDRAW msg to tear down the The downstream LSR should always LSP-WITHDRAW to tear down the LSP
LSP when the LSP is established. when the LSP is established.
State: ESTABLISHED State: ESTABLISHED
Event: Upstream Lost Event: Upstream Lost
New State: IDLE New State: IDLE
Actions: Actions:
Disconnect the upstream label from the downstream label. Disconnect the upstream label from the downstream label.
Free the upstream label. Free the upstream label.
Send event "Internal Destroy" to the Next Hop Trigger Control Block Send event `Internal Destroy' to the Next Hop Trigger Control Block
if it was in the middle of switching over to the better next hop. if it was in the middle of switching over to the better next hop.
Free the resources. Free the resources.
Propagate an LDP-RELEASE message downstream and delete the Propagate an LDP-RELEASE downstream and delete the LSP_Control_Block.
LSP_Control_Block.
State: ESTABLISHED State: ESTABLISHED
Event: Downstream Lost Event: Downstream Lost
New State: Depends on the actions New State: Depends on the actions
Actions: Actions:
1) If the LSP is triggered by the local router(Trigger Control Block 1) If the LSP is triggered by the local router(Trigger Control Block
Pointer is not zero), send event "Internal LSP NAK" to the Trigger Pointer is not zero), send event `Internal LSP NAK' to the Trigger
control block and delete the control block. control block and delete the control block.
2) Else, disconnect the upstream label from the downstream label. 2) Else, disconnect the upstream label from the downstream label.
Propagate an LDP-WITHDRAW message upstream and go to state Propagate an LDP-WITHDRAW upstream and go to `RELEASE_AWAITED' state.
'RELEASE_AWAITED' state.
3) Send event "Internal Destroy" to the Next Hop Trigger Control 3) Send event `Internal Destroy' to the Next Hop Trigger Control
Block if it was in the middle of switching over to the better next Block if it was in the middle of switching over to the better next
hop. hop.
State: ESTABLISHED State: ESTABLISHED
Event: Internal Setup Event: Internal Setup
New State: ESTABLISHED New State: ESTABLISHED
Actions: Actions:
skipping to change at page 19, line 4 skipping to change at page 18, line 46
Actions: Actions:
Ignore, it is an internal implementation error. Ignore, it is an internal implementation error.
State: ESTABLISHED State: ESTABLISHED
Event: Internal Destroy Event: Internal Destroy
New State: IDLE New State: IDLE
Actions: Actions:
Disconnect the upstream label from the downstream label if it is not Disconnect the upstream label from the downstream label if it is not
the ingress of the LSP. the ingress of the LSP.
Free the resources. Free the resources.
Send an LDP-RELEASE message downstream and delete the Send an LDP-RELEASE downstream and delete the LSP_Control_Block.
LSP_Control_Block.
State: ESTABLISHED State: ESTABLISHED
Event: Internal Cross-Connect Event: Internal Cross-Connect
New State: ESTABLISHED New State: ESTABLISHED
Actions: Actions:
Connect the upstream label to the downstream label Connect the upstream label to the downstream label
skipping to change at page 19, line 39 skipping to change at page 19, line 34
State: ESTABLISHED State: ESTABLISHED
Event: Internal New NH Event: Internal New NH
New State: ESTABLISHED New State: ESTABLISHED
Actions: Actions:
1) If the LSR was in the middle of switching over to a better next 1) If the LSR was in the middle of switching over to a better next
hop(Next Hop Trigger Control Block Pointer is not zero), it send hop(Next Hop Trigger Control Block Pointer is not zero), it send
"Internal New NH" to that control block. `Internal New NH' to that control block.
2) Else, create a new Next Hop Trigger Control Block, set Next Hop 2) Else, create a new Next Hop Trigger Control Block, set Next Hop
Trigger Control Block pointer which points this control block. And Trigger Control Block pointer which points this control block. And
then pass "Internal New NH" to this control block. then pass `Internal New NH' to this control block.
3.1.5.4 State --"RELEASE_AWAITED" 3.1.5.4 State --"RELEASE_AWAITED"
State RELEASE_AWAITED State RELEASE_AWAITED
Event LDP Request Event LDP Request
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event LDP Mapping Event: LDP Mapping
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
It is an protocol error from the downstream LDP peer, but anyway send It is an protocol error from the downstream LDP peer, but anyway send
a LDP-RELEASE downstream. a LDP-RELEASE downstream.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event LDP Release Event: LDP Release
New State: IDLE New State: IDLE
Actions: Actions:
1) Free the upstream label 1) Free the upstream label
2) Delete the control block. 2) Delete the control block.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event LDP Withdraw Event: LDP Withdraw
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
It is an protocol error from the downstream LDP peer, but send a It is an protocol error from the downstream LDP peer, but send a
LDP-RELEASE anyway. LDP-RELEASE anyway.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event LDP Upstream Nak Event: LDP Upstream NAK
New State: IDLE New State: IDLE
Actions: Actions:
1) Free the upstream label 1) Free the upstream label
2) Delete the control block. 2) Delete the control block.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event LDP Downstream Nak Event: LDP Downstream NAK
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. Continue waiting for the LDP-RELEASE from upstream. Ignore the event. Continue waiting for the LDP-RELEASE from upstream.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event Upstream Lost Event: Upstream Lost
New State: IDLE New State: IDLE
Actions: Actions:
1) Free the upstream label 1) Free the upstream label
2) Delete the control block. 2) Delete the control block.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event Downstream Lost Event: Downstream Lost
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. Continue waiting for the LDP-RELEASE from upstream. Ignore the event. Continue waiting for the LDP-RELEASE from upstream.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event Internal SetUp Event: Internal SetUp
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event Internal Destroy
Event: Internal Destroy
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State RELEASE_AWAITED State: RELEASE_AWAITED
Event Internal Cross-Connect Event: Internal Cross-Connect
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
3.1.6 Handling the Next Hop Change 3.1.6 Handling the Next Hop Change
When an LSR detects a better next hop, it may decides to establish a When an LSR detects a better next hop, it may decides to establish a
new LSP through this next hop. For example, an LSR is configured as new LSP through this next hop. For example, an LSR is configured as
"local repair", or the LSR is configured as "global repair" and it is "local repair", or the LSR is configured as "global repair" and it is
the ingress end of a LSP. It can then create a Next Hop Trigger the ingress end of a LSP. It can then create a Next Hop Trigger
Control Block and use the state machine of Next Hop Trigger Control Control Block and use the state machine of Next Hop Trigger Control
Block to establish a new LSP through the better next hop. Block to establish a new LSP through the better next hop.
3.1.6.1 Next Hop Trigger Control Block 3.1.6.1 Next Hop Trigger Control Block
-- State
-- LSP Control Block Pointer, which points to the original LSP -- LSP Control Block Pointer, which points to the original LSP
control block. control block.
-- New Next Hop LSP Control Block Pointer, which points to the LSP -- New Next Hop LSP Control Block Pointer, which points to the LSP
Control Block that is setting up an LSP through the new next hop. Control Block that is setting up an LSP through the new next hop.
3.1.6.2 States 3.1.6.2 States
-- IDLE -- IDLE
skipping to change at page 23, line 4 skipping to change at page 22, line 47
Control Block that is setting up an LSP through the new next hop. Control Block that is setting up an LSP through the new next hop.
3.1.6.2 States 3.1.6.2 States
-- IDLE -- IDLE
This is the initial LSP state, when the Trigger_Control_Block is This is the initial LSP state, when the Trigger_Control_Block is
created. created.
-- NEW_NH_RETRY -- NEW_NH_RETRY
This is the state where an LSR waits for a retry timer to expire and This is the state where an LSR waits for a retry timer to expire and
then tries to establish an LSP through a new next hop. then tries to establish an LSP through a new next hop.
-- NEW_NH_RESPONSE_AWAITED -- NEW_NH_RESPONSE_AWAITED
This is the state where an LSR is in the middle of establishing a new This is the state where an LSR is in the middle of establishing a new
LSP through a new next hop. It has triggered a LSP control block to LSP through a new next hop. It has triggered a LSP control block to
send an LDP-REQUEST towards the new next hop and is waiting for the send an LDP-REQUEST towards the new next hop and is waiting for the
LDP-MAPPING message. LDP-MAPPING.
3.1.6.3 Events 3.1.6.3 Events
-- Internal New NH -- Internal New NH
The LSR detects there is a new next hop for a FEC. The LSR detects there is a new next hop for a FEC.
-- Internal Retry Timeout -- Internal Retry Timeout
The LSP retry timer expires. The LSP retry timer expires.
skipping to change at page 24, line 43 skipping to change at page 24, line 43
the control block is deleted the control block is deleted
3.01.3 State Machine 3.01.3 State Machine
3.01.3.1 State -- "IDLE" 3.01.3.1 State -- "IDLE"
State: IDLE State: IDLE
Event: Internal New NH Event: Internal New NH
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Start the LSP retry timer and go to the 'NEW_NH_RETRY' state. Start the LSP retry timer and go to the `NEW_NH_RETRY' state.
State: IDLE State: IDLE
Event: Internal retry timeout Event: Internal retry timeout
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal LSP UP Event: Internal LSP UP
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal LSP NAK Event: Internal LSP NAK
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal destroy Event: Internal destroy
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
3.01.3.2 State -- "NEW_NH_RETRY" 3.01.3.2 State -- "NEW_NH_RETRY"
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal New NH Event: Internal New NH
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Restart the LSP retry timer. Restart the LSP retry timer.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal retry timeout Event: Internal retry timeout
New States: NEW_NH_RESPONSE_AWAITED New State: NEW_NH_RESPONSE_AWAITED
Actions: Actions:
If the new next hop is the same one as the old next hop, delete the If the new next hop is the same one as the old next hop, delete the
control block. control block.
Otherwise, create an LSP control block which will try to establish a Otherwise, create an LSP control block which will try to establish a
new LSP through the new next hop. And send event "Internal Setup" to new LSP through the new next hop. And send event `Internal Setup' to
its state machine. its state machine.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal LSP UP Event: Internal LSP UP
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal LSP NAK Event: Internal LSP NAK
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal destroy Event: Internal destroy
New States: IDLE New State: IDLE
Actions: Actions:
Stop the timer and delete the control block. Stop the timer and delete the control block.
3.01.3.3 State -- "NEW_NH_RESPONSE_AWAITED" 3.01.3.3 State -- "NEW_NH_RESPONSE_AWAITED"
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal New NH Event: Internal New NH
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Restart the LSP retry timer, send "Internal destroy" to the control Restart the LSP retry timer, send `Internal destroy' to the control
block of the LSP for the new next hop and go to the 'NEW_NH_RETRY' block of the LSP for the new next hop and go to the `NEW_NH_RETRY'
state. state.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal retry timeout Event: Internal retry timeout
New States: NEW_NH_RESPONSE_AWAITED New State: NEW_NH_RESPONSE_AWAITED
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal LSP UP Event: Internal LSP UP
New States: IDLE New State: IDLE
Actions: Actions:
Send event "Internal cross-connect" event to the LSP control block of Send event `Internal cross-connect' event to the LSP control block of
the new next hop. the new next hop.
Send event "Internal destroy" event to the original LSP control Send event `Internal destroy' event to the original LSP control
block. block.
Then delete the control block. Then delete the control block.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal LSP NAK Event: Internal LSP NAK
New States: IDLE New State: IDLE
Actions: Actions:
Delete the control block. Delete the control block.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal destroy Event: Internal destroy
New States: IDLE New State: IDLE
Actions: Actions:
Send event "Internal destroy" the control block for the new LSP Send event `Internal destroy' the control block for the new LSP
through the new next hop. through the new next hop.
3.1.7 LDP Related Message Handling 3.1.7 LDP Related Message Handling
- If an LSR receives an LDP-REQUEST from an upstream LSR: - If an LSR receives an LDP-REQUEST from an upstream LSR:
a) If this is a duplicate request, discard the msg. A duplicate a) If this is a duplicate request, discard the message. A duplicate
request means that there is a LSP_Control_Block which has same FEC, request means that there is a LSP_Control_Block which has same FEC,
same Upstream Label Request ID and same Upstream LDP Session same Upstream Label Request ID and same Upstream LDP Session
Identifier. Identifier.
b) Otherwise, create a new LSP_Control_Block, store the relevant b) Otherwise, create a new LSP_Control_Block, store the relevant
information from the message into the control block, then pass the information from the message into the control block, then pass the
event `LDP Request' to its state machine. event `LDP Request' to its state machine.
- If an LSR receives an LDP-MAPPING from a downstream LSR: - If an LSR receives an LDP-MAPPING from a downstream LSR:
a) Extract the 'Label Request Message ID' field and from the LDP- a) Extract the 'Label Request Message ID' field and from the LDP-
MAPPING message. MAPPING.
b) Find an LSP_Control_Block which has the same Downstream Label b) Find an LSP_Control_Block which has the same Downstream Label
Request ID and the same Downstream LDP Session Identifier. Request ID and the same Downstream LDP Session Identifier.
c) If an LSP_Control_Block is found, pass the event `LDP Mapping' to c) If an LSP_Control_Block is found, pass the event `LDP Mapping' to
its state machine. its state machine.
d) If there is no matching LSP_Control_Block found, then try to find d) If there is no matching LSP_Control_Block found, then try to find
an LSP_Control_Block which has the same Downstream Lable and the same an LSP_Control_Block which has the same Downstream Label and the same
Downstream LDP Session Identifier. Downstream LDP Session Identifier.
e) If an LSP_Control_Block is found, pass the event 'LDP Mapping' to e) If an LSP_Control_Block is found, pass the event `LDP Mapping' to
its state machine. its state machine.
f) Otherwise, ignore the LDP-MAPPING message and send a LDP-RELEASE f) Otherwise, ignore the LDP-MAPPING and send a LDP-RELEASE
message downstream. downstream.
- If an LSR receives an LDP-RELEASE from an upstream LSR: - If an LSR receives an LDP-RELEASE from an upstream LSR:
a) Find an LSP_Control_Block which has the same Upstream Label and a) Find an LSP_Control_Block which has the same Upstream Label and
the same Upstream LDP Session Identifier. the same Upstream LDP Session Identifier.
b) If an LSP_Control_Block is found, pass the event 'LDP Release' to b) If an LSP_Control_Block is found, pass the event `LDP Release' to
its state machine. its state machine.
c) Otherwise, ignore the message. c) Otherwise, ignore the message.
- If an LSR receives an LDP-WITHDRAW from a downstream LSR: - If an LSR receives an LDP-WITHDRAW from a downstream LSR:
a) Find an LSP_Control_Block which has the same Downstream Label and a) Find an LSP_Control_Block which has the same Downstream Label and
the same Downstream LDP Session Identifier. the same Downstream LDP Session Identifier.
b) If an LSP_Control_Block is found, pass the event 'LDP Withdraw' to b) If an LSP_Control_Block is found, pass the event `LDP Withdraw' to
its state machine. its state machine.
c) Otherwise, ignore the LDP-WITHDRAW message and send a LDP-RELEASE c) Otherwise, ignore the LDP-WITHDRAW and send a LDP-RELEASE
message downstream. downstream.
- If an upstream LDP peer is lost: - If an upstream LDP peer is lost:
a) Find all the LSP_Control_Blocks whose upstream LDP peer is that a) Find all the LSP_Control_Blocks whose upstream LDP peer is that
LSR. LSR.
b) Then pass the event 'Upstream Lost' to their state machines. b) Then pass the event `Upstream Lost' to their state machines.
- If a downstream LDP peer is lost: - If a downstream LDP peer is lost:
a) Find all the LSP_Control_Blocks whose downstream LDP peer is that a) Find all the LSP_Control_Blocks whose downstream LDP peer is that
LSR. LSR.
b) Then pass the event 'Downstream Lost' to their state machines. b) Then pass the event `Downstream Lost' to their state machines.
- If the LSR detects a new next hop for an FEC: - If the LSR detects a new next hop for an FEC:
For each LSP which needs "local repair", or it needs "global repair" For each LSP which needs "local repair", or it needs "global repair"
and it is the ingress of the LSP, pass event "Internal New NH" to its and it is the ingress of the LSP, pass event "Internal New NH" to its
state machine. state machine.
- If an LSR receives an LDP-Abort from an upstream LSR: - If an LSR receives an LDP-Abort from an upstream LSR:
a) Extract the LDP Request ID value from the LDP-Abort message. a) Extract the LDP Request ID value from the LDP-Abort message.
b) Find an LSP_Control_Block which has the same Upstream Label b) Find an LSP_Control_Block which has the same Upstream Label
Request ID and the same Upstream LDP Session Identifier. Request ID and the same Upstream LDP Session Identifier.
c) If an LSP_Control_Block is found, pass the event 'LDP Upstream c) If an LSP_Control_Block is found, pass the event `LDP Upstream
Abort' to its state machine. Abort' to its state machine.
d) Otherwise, ignore the message. d) Otherwise, ignore the message.
- If the LSR receives an LDP-NAK from a downstream LSR: - If the LSR receives an LDP-NAK from a downstream LSR:
a) Extract the LDP Request ID value from the LDP-NAK. a) Extract the LDP Request ID value from the LDP-NAK.
b) Find an LSP_Control_Block which has the same Downstream Label b) Find an LSP_Control_Block which has the same Downstream Label
Request ID and the same Downstream LDP Session Identifier. Request ID and the same Downstream LDP Session Identifier.
c) If an LSP_Control_Block is found, pass the event c) If an LSP_Control_Block is found, pass the event `LDP Downstream
NAK' to its state machine.
d) Otherwise, ignore the message. d) Otherwise, ignore the message.
3.2. ATM Switch LSR with VC-merge 3.2. ATM Switch LSR with VC-merge
3.2.1 VC-merge 3.2.1 VC-merge
A VC-merge capable LSR can map multiple incoming labels(VPI/VCI) into A VC-merge capable LSR can map multiple incoming labels (VPI/VCI)
one outgoing label. It is possible that this LSR can only merge a into one outgoing label. It is possible that this LSR can only merge
limited number of incoming labels into a single outgoing label. As a limited number of incoming labels into a single outgoing label. As
described in [Ref2], suppose, for example, that due to some hardware described in [2], suppose, for example, that due to some hardware
limitation a node is capable of merging four incoming labels into a limitation a node is capable of merging four incoming labels into a
single outgoing label. Suppose however, that this particular node has single outgoing label. Suppose however, that this particular node has
six incoming labels arriving at it for a particular FEC. In this six incoming labels arriving at it for a particular FEC. In this
case, this node may merge these into two outgoing labels. case, this node may merge these into two outgoing labels.
When an upstream LSR has a limited merging capability, it is When an upstream LSR has a limited merging capability, it is
difficult for a downstream LSR to know how many labels should be difficult for a downstream LSR to know how many labels should be
assigned to each FEC. In this case, downstream-on-demand is assigned to each FEC. In this case, downstream-on-demand is
recommended. recommended.
3.2.2 Control Block 3.2.2 Control Block
There are 3 types of control blocks involved: There are 3 types of control blocks involved:
Upstream_LSP_Control_Block, Downstream_LSP_Control_Block, and Next Upstream_LSP_Control_Block, Downstream_LSP_Control_Block, and Next
Hop Trigger Control Block. Hop Trigger Control Block.
There is one Upstream_LSP_Control_Block for each LDP-REQUEST There is one Upstream_LSP_Control_Block for each LDP-REQUEST
received. received.
There is one Downstream_LSP_Control_Block for each unique LDP- There is one Downstream_LSP_Control_Block for each unique LDP-REQUEST
REQUEST sent to a downstream LSR. There can be multiple sent to a downstream LSR. There can be multiple
Downstream_LSP_Control_Blocks per FEC in an LSR. This can be the Downstream_LSP_Control_Blocks per FEC in an LSR. This can be the
result of an upstream LSR asking for a label of an FEC. This LSR must result of an upstream LSR asking for a label for an FEC. This LSR
assign a unique upstream label and it can not merge this upstream must assign a unique upstream label and it can not merge this
label into an existing downstream label of this FEC. upstream label into an existing downstream label for this FEC.
There is one Next Hop Trigger Control Block for each FEC which was There is one Next Hop Trigger Control Block for each FEC for which a
detected with a better next hop and the LSR decides to switch over to better next hop has been detected and the LSR has decided to switch
this better next hop. It could be the result of "local repair" or to this better next hop. It could be the result of "local repair" or
"global repair" if the LSR is the ingress LSR of the LSP. "global repair" if the LSR is the ingress LSR of the LSP.
A Downstream_LSP_Control_Block contains a list of pointers to A Downstream_LSP_Control_Block contains a list of pointers to
Upstream_LSP_Control_Blocks or the Next Hop Trigger Control Block. Upstream_LSP_Control_Blocks or the Next Hop Trigger Control Block.
This means that this LSR has decided to map the multiple labels This means that this LSR has decided to map the multiple labels
listed in the Upstream_LSP_Control_Blocks and the Next Hop Trigger listed in the Upstream_LSP_Control_Blocks and the Next Hop Trigger
Control Block into a single label listed in the Control Block into a single label listed in the
Downstream_LSP_Control_Block. Downstream_LSP_Control_Block.
An Upstream_LSP_Control_Block may contain the following information: An Upstream_LSP_Control_Block may contain the following information:
- Upstream LDP Session Identifier - Upstream LDP Session Identifier
- State - State
- Upstream Label(assigned by this LSR) - Upstream Label(assigned by this LSR)
- Downstream_LSP_Control_Block pointer - Downstream_LSP_Control_Block pointer
- Upstream LDP Request ID (assigned by the Upstream LSR in - Upstream LDP Request ID (assigned by the upstream LSR in
downstream-on-demand mode) downstream-on-demand mode)
- Next_Hop_Trigger_Block pointer - Next_Hop_Trigger_Block pointer
Upstream Label and Upstream LDP Session Identifier can be used to Upstream Label and Upstream LDP Session Identifier can be used to
locate a unique Upstream_LSP_Control_Block. locate a unique Upstream_LSP_Control_Block.
If an LSR is using downstream-on-demand mode, it can use the Upstream If an LSR is using downstream-on-demand mode, it can use the Upstream
LDP Request ID and the Upstream LDP Session Identifier to locate a LDP Request ID and the Upstream LDP Session Identifier to locate a
unique Upstream_LSP_Control_Block. unique Upstream_LSP_Control_Block.
skipping to change at page 33, line 8 skipping to change at page 32, line 34
The following diagram details the relationship between these 2 types The following diagram details the relationship between these 2 types
of control blocks: of control blocks:
For example, the LSR has decided to merge 3 LDP-REQUESTs of a FEC For example, the LSR has decided to merge 3 LDP-REQUESTs of a FEC
from upstream LSR1,LSR2,LSR3 into one LDP-REQUEST and sent it to a from upstream LSR1,LSR2,LSR3 into one LDP-REQUEST and sent it to a
downstream LSR4. downstream LSR4.
+---------------------+ +---------------------+
| | | |
| Upstream_LSP_Control| | Upstream_LSP_Control|
| _Block for Upstream|-------+ | _Block for Upstream|------+
| LSR1 | | | LSR1 | |
+---------------------+ | +---------------------+ |
| |
|
|
|
|
+---------------------+ | +---------------------+ |
| | | | | |
| Upstream_LSP_Control| | (merged into) | Upstream_LSP_Control| | (merged into)
| _Block for Upstream |-------+ | _Block for Upstream |------+
| LSR2 | | | LSR2 | |
+---------------------+ | +---------------------+ | +------------------------------+
|
|
|
| +------------------------------+
| | |
+-->| Downstream_LSP_Control_Block |
| | for Downstream LSR4 |
| | | | | |
| +------------------------------+ +---------------------+ +--->| Downstream_LSP_Control_Block |
| | Next_Hop_Trigger_ | | | for Downstream LSR4 |
+---------------------+ | | LSP_Control_Block |------+ | |
| Next_Hop_Trigger_ | | | | +------------------------------+
| LSP_Control_Block | |
| |-------+
| |
+---------------------+ +---------------------+
3.2.3 State Machines for Downstream-on-demand Mode 3.2.3 State Machines for Downstream-on-demand Mode
The following sections describe the state machines used in The following sections describe the state machines used in
downstream-on-demand mode. downstream-on-demand mode.
3.2.3.1 State of the Upstream_LSP_Control_Block's State Machine 3.2.3.1 State of the Upstream_LSP_Control_Block's State Machine
for Downstream-on-demand Mode for Downstream-on-demand Mode
skipping to change at page 34, line 4 skipping to change at page 33, line 18
downstream-on-demand mode. downstream-on-demand mode.
3.2.3.1 State of the Upstream_LSP_Control_Block's State Machine 3.2.3.1 State of the Upstream_LSP_Control_Block's State Machine
for Downstream-on-demand Mode for Downstream-on-demand Mode
-- IDLE -- IDLE
This is the initial LSP state. This is the initial LSP state.
-- RESPONSE_AWAITED -- RESPONSE_AWAITED
This state means that the LSR has received and processed an LDP- This state means that the LSR has received and processed an LDP-
REQUEST from an upstream LSR, and has sent a new LDP-REQUEST towards REQUEST from an upstream LSR, and has sent a new LDP-REQUEST towards
a downstream LSR. The LSR is waiting for the LDP-MAPPING message from a downstream LSR. The LSR is waiting for the LDP-MAPPING from the
the downstream LSR. downstream LSR.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING message This state means that the LSR has received the LDP-MAPPING from the
from the downstream LSR and the LSP is up and operational. downstream LSR and the LSP is up and operational.
-- RELEASE_AWAITED -- RELEASE_AWAITED
This state means that the LSR has sent a LDP-WITHDRAW message This state means that the LSR has sent a LDP-WITHDRAW upstream and is
upstream and is waiting for the LDP-RELEASE before freeing up the waiting for the LDP-RELEASE before freeing up the label resource.
label resource.
3.2.3.2 Events of the Upstream_LSP_Control_Block's State Machine 3.2.3.2 Events of the Upstream_LSP_Control_Block's State Machine
for Downstream-on-demand Mode for Downstream-on-demand Mode
-- LDP Request -- LDP Request
The LSR receives an LDP-REQUEST from an upstream LSR. The LSR receives an LDP-REQUEST from an upstream LSR.
-- Internal Downstream Mapping -- Internal Downstream Mapping
This event is sent by one Downstream_LSP_Control_Block's state This event is sent by one Downstream_LSP_Control_Block's state
machine. This Downstream_LSP_Control_Block is the merged machine. This Downstream_LSP_Control_Block is the merged
Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The
event is the result of receiving an LDP-MAPPING message by the event is the result of receiving an LDP-MAPPING by the
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
-- LDP Release -- LDP Release
The LSR receives an LDP-RELEASE from an upstream LSR. The LSR receives an LDP-RELEASE from an upstream LSR.
-- Internal Downstream Withdraw -- Internal Downstream Withdraw
This event is sent by one Downstream_LSP_Control_Block's state This event is sent by one Downstream_LSP_Control_Block's state
machine. This Downstream_LSP_Control_Block is the merged machine. This Downstream_LSP_Control_Block is the merged
Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The
event is the result of receiving an LDP-WITHDRAW message by the event is the result of receiving an LDP-WITHDRAW by the
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
-- LDP Upstream Abort -- LDP Upstream Abort
The LSR receives an LDP-ABORT from an upstream LSR. The LSR receives an LDP-ABORT from an upstream LSR.
-- Internal Downstream Nak -- Internal Downstream NAK
This event is sent by one Downstream_LSP_Control_Block's state This event is sent by one Downstream_LSP_Control_Block's state
machine. This Downstream_LSP_Control_Block is the merged machine. This Downstream_LSP_Control_Block is the merged
Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The
event is the result of receiving an LDP-NAK message by the event is the result of receiving an LDP-NAK by the
Downstream_LSP_Control_Block's state machine, or it detects an error. Downstream_LSP_Control_Block's state machine, or it detects an error.
-- Upstream Lost -- Upstream Lost
The LSR loses the LDP session with its upstream LDP peer. The LSR loses the LDP session with its upstream LDP peer.
-- Internal New NH -- Internal New NH
The LSR detects there is better next hop and decides to establish the The LSR detects there is better next hop and decides to establish the
lsp through this better next hop lsp through this better next hop
skipping to change at page 36, line 15 skipping to change at page 35, line 15
3.2.3.3 State Transitions of the Upstream_LSP_Control_Block's State 3.2.3.3 State Transitions of the Upstream_LSP_Control_Block's State
Machine for Downstream-on-demand Mode Machine for Downstream-on-demand Mode
+-------------------+ +-------------------+
| | | |
+-------->| IDLE |<------------+ +-------->| IDLE |<------------+
| | | | | | | |
| +-------------------+ | | +-------------------+ |
|(LDP Abort) | | |(LDP Abort) | |
|(Internal |(LDP Request) | |(Internal |(LDP Request) |
| Downstream Nak) | | | Downstream NAK) | |
|(Upstream Lost) | | |(Upstream Lost) | |
| v | | v |
| +-------------------+ | | +-------------------+ |
| | | | | | | |
+---------| RESPONSE_AWAITED | | +---------| RESPONSE_AWAITED | |
| | |(Upstream Lost) | | |(Upstream Lost)
+-------------------+ | +-------------------+ |
| | | |
|(Internal Downstream | |(Internal Downstream |
| mapping) |(LDP Release) | mapping) |(LDP Release)
| | | |
v | v |
+-------------------+ | +-------------------+ |
| | |(LDP Abort) | | |(LDP Abort)
| ESTABLISHED |------->-----+ | ESTABLISHED |------->-----+
| | | | | |
+-------------------+ | +-------------------+ |
| | | |
| | | |
|(Internal Downstream Withdraw) |(Internal Downstream Withdraw)
|(Internal Downstream Nak) |(Internal Downstream NAK)
v v
+-------------------+ | +-------------------+ |
| | | | | |
|RELEASE_AWAITED |------->-----+ |RELEASE_AWAITED |------->-----+
| | | |
+-------------------+ +-------------------+
3.2.3.4 Upstream_LSP_Control_Block's State Machine 3.2.3.4 Upstream_LSP_Control_Block's State Machine
for Downstream-on-demand Mode for Downstream-on-demand Mode
3.2.3.4.1 State -- "IDLE" 3.2.3.4.1 State -- "IDLE"
State: IDLE State: IDLE
Event: LDP Request Event: LDP Request
New State: Depends upon the action routine. New State: Depends upon the action routine.
Actions: Actions:
If this LSR is the LSP Egress or Proxy Egress [Ref2], If this LSR is the LSP Egress or Proxy Egress [2],
Then: Then:
choose an upstream label, allocate the resources, connect this choose an upstream label, allocate the resources, connect this
upstream label to the local IP forwarding module, send an LDP- upstream label to the local IP forwarding module, send an LDP-
MAPPING upstream with the upstream label and go to the state MAPPING upstream with the upstream label and go to the state
'ESTABLISHED'. `ESTABLISHED'.
else else
Obtain a next hop(or interface). Find a Obtain a next hop(or interface). Find a
Downstream_LSP_Control_Block which has the same FEC and the same Downstream_LSP_Control_Block which has the same FEC and the same
next hop and also is able to merge more input labels. If not found, next hop and also is able to merge more input labels. If not found,
create a new Downstream_LSP_Control_Block with the state 'IDLE'. create a new Downstream_LSP_Control_Block with the state `IDLE'.
If the state of the Downstream_LSP_Control_Block is `ESTABLISHED', If the state of the Downstream_LSP_Control_Block is `ESTABLISHED',
choose an upstream label, connect the upstream label with the choose an upstream label, connect the upstream label with the
downstream label and send an LDP-MAPPING message upstream with the downstream label and send an LDP-MAPPING upstream with the upstream
upstream label, and go to the state `ESTABLISHED'. label, and go to the state `ESTABLISHED'.
If the state of Downstream_LSP_Control_Block is not `ESTABLISHED', If the state of Downstream_LSP_Control_Block is not `ESTABLISHED',
set the state of the Upstream_LSP_Control_Block to set the state of the Upstream_LSP_Control_Block to
'RESPONSE_AWAITED'. If the LSR use the independent control `RESPONSE_AWAITED'. If the LSR use the independent control mode
mode[Ref2], choose an upstream label, and send an LDP-MAPPING [2], choose an upstream label, and send an LDP-MAPPING upstream.
message upstream.
Pass the event `Internal AddUpstream' to the Pass the event `Internal AddUpstream' to the
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
If unable to process the request for any reason, issue an LDP-NAK If unable to process the request for any reason, issue an LDP-NAK to
message to the sender with the appropriate error code and delete the the sender with the appropriate error code and delete the control
control block. block.
State: IDLE State: IDLE
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New State: IDLE New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: LDP Release Event: LDP Release
New State: IDLE New State: IDLE
skipping to change at page 38, line 40 skipping to change at page 37, line 39
Event: LDP Upstream Abort Event: LDP Upstream Abort
New State: IDLE New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal Downstream Nak Event: Internal Downstream NAK
New State: IDLE New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: Upstream Lost Event: Upstream Lost
New State: IDLE
New State: IDLE
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal Re-Cross-Connect Event: Internal Re-Cross-Connect
New State: IDLE New State: IDLE
skipping to change at page 40, line 10 skipping to change at page 39, line 8
New State: Depends on the action routine New State: Depends on the action routine
Actions: Actions:
If the LSR uses the ordered control mode, assign an upstream label. If the LSR uses the ordered control mode, assign an upstream label.
Connect the upstream label to the downstream label and allocate the Connect the upstream label to the downstream label and allocate the
resources. resources.
Send an LDP-MAPPING message upstream with the upstream label. Send an LDP-MAPPING upstream with the upstream label.
Then go to the state 'ESTABLISHED'. Then go to the state `ESTABLISHED'.
If unable to process the message for any reason, issue an LDP-NAK If unable to process the message for any reason, issue an LDP-NAK
message upstream and an LDP-RELEASE message downstream and delete the upstream and an LDP-RELEASE downstream and delete the control block.
control block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Release Event: LDP Release
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
Actions Actions
Ignore the event. It is an protocol error from the upstream peer. Ignore the event. It is an protocol error from the upstream peer.
skipping to change at page 40, line 49 skipping to change at page 39, line 46
Event: LDP Upstream Abort Event: LDP Upstream Abort
New State: IDLE New State: IDLE
Actions Actions
If the LSR uses the independent control mode, free the upstream label If the LSR uses the independent control mode, free the upstream label
and the resources. and the resources.
Send the event 'Internal DeleteUpstream' to its Send the event `Internal DeleteUpstream' to its
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
Delete the control block. Delete the control block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Internal Downstream NAK
Event: Internal Downstream Nak
New State: IDLE New State: IDLE
Actions: Actions:
If the LSR uses the independent control mode, free the upstream label If the LSR uses the independent control mode, free the upstream label
and the resources. Then, send an LDP-WITHDRAW message upstream. and the resources. Then, send an LDP-WITHDRAW upstream.
If the LSR uses the ordered control mode, propagate the LDP-NAK If the LSR uses the ordered control mode, propagate the LDP-NAK
message upstream. upstream.
Delete the control block. Delete the control block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Upstream Lost Event: Upstream Lost
New State: IDLE New State: IDLE
Actions Actions
If the LSR uses the independent control mode, free the upstream label If the LSR uses the independent control mode, free the upstream label
and the resources. and the resources.
Send the event 'Internal DeleteUpstream' to its Send the event `Internal DeleteUpstream' to its
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
Delete the control block. Delete the control block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Internal Re-Cross-Connect Event: Internal Re-Cross-Connect
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
skipping to change at page 42, line 4 skipping to change at page 40, line 49
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Internal New NH Event: Internal New NH
New State: depends on the actions New State: depends on the actions
Actions: Actions:
Send event "Internal DeleteUpstream" to its old downstream control Send event `Internal DeleteUpstream' to its old downstream control
block. block.
Find a Downstream_LSP_Control_Block which has the same FEC and the Find a Downstream_LSP_Control_Block which has the same FEC and the
same next hop and also is able to merge more input labels. If not same next hop and also is able to merge more input labels. If not
found, create a new Downstream_LSP_Control_Block with the state found, create a new Downstream_LSP_Control_Block with the state
'IDLE'. `IDLE'.
If the state of the Downstream_LSP_Control_Block is `ESTABLISHED', If the state of the Downstream_LSP_Control_Block is `ESTABLISHED',
choose an upstream label, connect the upstream label with the choose an upstream label, connect the upstream label with the
downstream label and send an LDP-MAPPING message upstream with the downstream label and send an LDP-MAPPING upstream with the upstream
upstream label, and go to the state `ESTABLISHED'. label, and go to the state `ESTABLISHED'.
If the state of Downstream_LSP_Control_Block is not `ESTABLISHED', If the state of Downstream_LSP_Control_Block is not `ESTABLISHED',
set the state of the Upstream_LSP_Control_Block to set the state of the Upstream_LSP_Control_Block to
'RESPONSE_AWAITED'. `RESPONSE_AWAITED'.
Pass the event `Internal AddUpstream' to the new Pass the event `Internal AddUpstream' to the new
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
3.2.3.4.3 State -- "ESTABLISHED" 3.2.3.4.3 State -- "ESTABLISHED"
State: ESTABLISHED State: ESTABLISHED
Event: LDP Request Event: LDP Request
skipping to change at page 42, line 47 skipping to change at page 41, line 46
State: ESTABLISHED State: ESTABLISHED
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New State: ESTABLISHED New State: ESTABLISHED
Actions Actions
Process the new attributes of the mapping and then propagate the Process the new attributes of the mapping and then propagate the
LDP-MAPPING message upstream. LDP-MAPPING upstream.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Release
Event: LDP Release
New State: IDLE New State: IDLE
Actions Actions
Disconnect the upstream label from the downstream label, free the Disconnect the upstream label from the downstream label, free the
upstream label and resources. upstream label and resources.
Send the event 'Internal DeleteUpstream' to its Send the event `Internal DeleteUpstream' to its
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
Send the event "Internal Destroy' to the Next_Hop_Trigger_Block's Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
state machine if the LSR was in the middle of switching over to the state machine if the LSR was in the middle of switching over to the
better next hop. better next hop.
Delete the control block. Delete the control block.
State: ESTABLISHED State: ESTABLISHED
Event: Internal Downstream Withdraw Event: Internal Downstream Withdraw
New State: Depends on the action routine New State: Depends on the action routine
Actions Actions
If it uses independent mode,set its state to 'IDLE' and create a If it uses independent mode, set its state to `IDLE' and create a
internal 'LDP Request' and send to its own state machine. internal `LDP Request' and send to its own state machine.
Else Else
Disconnect the upstream label from the downstream label. Disconnect the upstream label from the downstream label.
Propagate the LDP-WITHDRAW upstream and go to state Propagate the LDP-WITHDRAW upstream and go to state
'RELEASE_AWAITED'. `RELEASE_AWAITED'.
Send the event "Internal Destroy' to the Next_Hop_Trigger_Block's Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
state machine if the LSR was in the middle of switching over to the state machine if the LSR was in the middle of switching over to the
better next hop. better next hop.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Upstream Abort Event: LDP Upstream Abort
New State: IDLE New State: IDLE
Actions Actions
Disconnect the upstream label from the downstream label, free the Disconnect the upstream label from the downstream label, free the
upstream label and the resources. upstream label and the resources.
Send the event 'Internal DeleteUpstream' to its Send the event `Internal DeleteUpstream' to its
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
Send the event "Internal Destroy' to the Next_Hop_Trigger_Block's Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
state machine if the LSR was in the middle of switching over to the state machine if the LSR was in the middle of switching over to the
better next hop. better next hop.
Delete the control block. Delete the control block.
State: ESTABLISHED State: ESTABLISHED
Event: Internal Downstream Nak Event: Internal Downstream NAK
New State: Depends on the actions New State: Depends on the actions
Actions: Actions:
If it uses independent mode,set its state to 'IDLE' and create a If it uses independent mode, set its state to `IDLE' and create a
internal 'LDP Request' and send to its own state machine. internal `LDP Request' and send to its own state machine.
Else Else
Disconnect the upstream label from the downstream label Disconnect the upstream label from the downstream label
Send an LDP-WITHDRAW upstream and go to state 'RELEASE_AWAITED'. Send an LDP-WITHDRAW upstream and go to state `RELEASE_AWAITED'.
Send the event "Internal Destroy' to the Next_Hop_Trigger_Block's Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
state machine if the LSR was in the middle of switching over to the state machine if the LSR was in the middle of switching over to the
better next hop. better next hop.
State: ESTABLISHED State: ESTABLISHED
Event: Upstream Lost Event: Upstream Lost
New State: IDLE New State: IDLE
Actions: Actions:
Disconnect the upstream label from the downstream label, free the Disconnect the upstream label from the downstream label, free the
upstream label and the resources. upstream label and the resources.
Send the event 'Internal DeleteUpstream' to its Send the event `Internal DeleteUpstream' to its
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
Send the event "Internal Destroy' to the Next_Hop_Trigger_Block's Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
state machine if the LSR was in the middle of switching over to the state machine if the LSR was in the middle of switching over to the
better next hop. better next hop.
Delete the control block. Delete the control block.
State: ESTABLISH State: ESTABLISH
Event: Internal Re-Cross-Connect Event: Internal Re-Cross-Connect
New State: ESTABLISH New State: ESTABLISH
Actions: Actions:
Reconnect the upstream lable to the new downstream lable. Reconnect the upstream label to the new downstream label.
Send the event 'Internal DeleteUpstream' to its old Send the event `Internal DeleteUpstream' to its old
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
State: ESTABLISH State: ESTABLISH
Event: Internal New NH Event: Internal New NH
New State: ESTABLISH New State: ESTABLISH
Actions: Actions:
Create a new Next_Hop_Trigger_Control_Block and pass event Create a new Next_Hop_Trigger_Control_Block and pass event `Internal
New NH' to its state machine.
3.2.3.4.4 State -- "RELEASE_AWAITED" 3.2.3.4.4 State -- "RELEASE_AWAITED"
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: LDP Request Event: LDP Request
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
skipping to change at page 45, line 50 skipping to change at page 44, line 49
Ignore the event. It is a protocol error from the upstream LSR. Ignore the event. It is a protocol error from the upstream LSR.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. It is an internal implementatin error. Ignore the event. It is an internal implementation error.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: LDP Release Event: LDP Release
New State: IDLE New State: IDLE
Actions: Actions:
Free the upstream lable resource. and delete the control block. Free the upstream label resource and delete the control block.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: Internal Downstream Withdraw Event: Internal Downstream Withdraw
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. It is a protocol error from the downstream LSR. Ignore the event. It is a protocol error from the downstream LSR.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: LDP Upstream Abort Event: LDP Upstream Abort
New State: IDLE New State: IDLE
Actions: Actions:
Free the upstream lable resource. and delete the control block. Free the upstream label resource and delete the control block.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: Internal Downstream Nak Event: Internal Downstream NAK
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. And continue waiting for the LDP-RELEASE msg. Ignore the event. And continue waiting for the LDP-RELEASE.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: Upstream Lost Event: Upstream Lost
New State: IDLE New State: IDLE
Actions: Actions:
Free the upstream lable resource. and delete the control block. Free the upstream label resource and delete the control block.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: Internal New NH Event: Internal New NH
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. And continue waiting for the LDP-RELEASE msg. Ignore the event. And continue waiting for the LDP-RELEASE.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: Internal Re-Cross-Connect Event: Internal Re-Cross-Connect
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions: Actions:
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
skipping to change at page 47, line 37 skipping to change at page 46, line 37
-- IDLE -- IDLE
This is the initial LSP state. This is the initial LSP state.
-- RESPONSE_AWAITED -- RESPONSE_AWAITED
This state means that the LSR has received an LDP-REQUEST from an This state means that the LSR has received an LDP-REQUEST from an
upstream LSR, has processed the LDP-REQUEST, and has sent a new LDP- upstream LSR, has processed the LDP-REQUEST, and has sent a new LDP-
REQUEST towards a downstream LSR. The LSR is waiting for the LDP- REQUEST towards a downstream LSR. The LSR is waiting for the LDP-
MAPPING message from the downstream LSR. MAPPING from the downstream LSR.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING message This state means that the LSR has received the LDP-MAPPING from the
from the downstream LSR and the LSP is up and operational. downstream LSR and the LSP is up and operational.
3.2.3.6 Events of the Downstream_LSP_Control_Block's State Machine 3.2.3.6 Events of the Downstream_LSP_Control_Block's State Machine
for Downstream-on-demand Mode for Downstream-on-demand Mode
-- Internal AddUpstream -- Internal AddUpstream
This event is sent by an Upstream_LSP_Control_Block's state machine This event is sent by an Upstream_LSP_Control_Block's state machine
when it is created. when it is created.
-- Internal DeleteUpstream -- Internal DeleteUpstream
This event is sent by an Upstream_LSP_Control_Block's state machine This event is sent by an Upstream_LSP_Control_Block's state machine
when it is deleted. when it is deleted.
-- LDP Mapping -- LDP Mapping
The LSR receives an LDP-MAPPING message from a downstream LSR. The LSR receives an LDP-MAPPING from a downstream LSR.
-- LDP Withdraw -- LDP Withdraw
The LSR receives an LDP-WITHDRAW message from a downstream LSR. The LSR receives an LDP-WITHDRAW from a downstream LSR.
-- LDP Downstream Nak -- LDP Downstream NAK
The LSR receives an LDP-NAK from a downstream LSR. The LSR receives an LDP-NAK from a downstream LSR.
-- Downstream Lost -- Downstream Lost
The LSR loses the LDP session with its downstream LSR. The LSR loses the LDP session with its downstream LSR.
3.2.3.7 State Transitions of the Downstream_LSP_Control_Block'S 3.2.3.7 State Transitions of the Downstream_LSP_Control_Block's
State Machine for Downstream-on-demand mode State Machine for Downstream-on-demand mode
+-------------------+ +-------------------+
| | | |
| IDLE |<--------------+ | IDLE |<--------------+
| | |(last Internal | | |(last Internal
+-------------------+ | DeleteUpstream) +-------------------+ | DeleteUpstream)
| |(LDP Withdraw) | |(LDP Withdraw)
|(1st Internal AddUpstream)| |(1st Internal AddUpstream)|
| |(LDP Downstream | |(LDP Downstream
v | Nak) v | NAK)
+-------------------+ |(Downstream +-------------------+ |(Downstream
| | | Lost) | | | Lost)
| RESPONSE_AWAITED |---------->----^ | RESPONSE_AWAITED |---------->----^
| | | | | |
+-------------------+ | +-------------------+ |
| | | |
|(LDP Mapping) | |(LDP Mapping) |
| | | |
v | v |
+-------------------+ | +-------------------+ |
| | | | | |
| ESTABLISHED |-------->------^ | ESTABLISHED |-------->------^
| | | |
+-------------------+ +-------------------+
3.2.3.8 Downstream_LSP_Control_Block'S State Machine for 3.2.3.8 Downstream_LSP_Control_Block's State Machine for
Downstream-on-demand Mode. Downstream-on-demand Mode.
3.2.3.8.1 State -- "IDLE" 3.2.3.8.1 State -- "IDLE"
State: IDLE State: IDLE
Event: Internal AddUpstream Event: Internal AddUpstream
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
Actions Actions
Initialize the list of pointers in the Upstream_LSP_Control_Block to Initialize the list of pointers in the Upstream_LSP_Control_Block to
contain the newly added upstream pointer. contain the newly added upstream pointer.
Send a new LDP-REQUEST downstream and go to the state Send a new LDP-REQUEST downstream and go to the state
'RESPONSE_AWAITED'. `RESPONSE_AWAITED'.
State: IDLE State: IDLE
Event: Internal DeleteUpstream Event: Internal DeleteUpstream
New State: IDLE New State: IDLE
Actions Actions
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
skipping to change at page 50, line 37 skipping to change at page 49, line 37
Event: LDP Withdraw Event: LDP Withdraw
New State: IDLE New State: IDLE
Actions Actions
Ignore the event.It is an internal implementation error. Ignore the event.It is an internal implementation error.
State: IDLE State: IDLE
Event: LDP Downstream Nak Event: LDP Downstream NAK
New State: IDLE New State: IDLE
Actions Actions
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
State: IDLE State: IDLE
Event: Downstream Lost Event: Downstream Lost
skipping to change at page 51, line 42 skipping to change at page 50, line 42
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Mapping Event: LDP Mapping
New State: ESTABLISHED New State: ESTABLISHED
Actions Actions
For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block
pointers list, pass the event 'Internal Downstream Mapping' to its pointers list, pass the event `Internal Downstream Mapping' to its
state machine. state machine.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Withdraw Event: LDP Withdraw
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
Actions Actions
It is a protocol error from the downstream LDP peer and send a LDP- It is a protocol error from the downstream LDP peer; send a LDP-
RELEASE msg downstream RELEASE downstream
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Downstream Nak Event: LDP Downstream NAK
New State: IDLE New State: IDLE
Actions Actions
For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block
pointers list, pass the event 'Internal Downstream Nak' to its state pointers list, pass the event `Internal Downstream NAK' to its state
machine. machine.
Release the resources, and delete the control block. Release the resources, and delete the control block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Downstream Lost Event: Downstream Lost
New State: IDLE New State: IDLE
Actions Actions
For each Upstream_LSP_Control_Block in the For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block
Upstream_LSP_Control_Block pointers list, pass the event 'Internal pointers list, pass the event `Internal Downstream NAK' to its state
Downstream Nak' to its state machine. machine.
Release the resources, and delete the control block. Release the resources, and delete the control block.
3.2.3.8.3 State -- "ESTABLISHED" 3.2.3.8.3 State -- "ESTABLISHED"
State: ESTABLISHED State: ESTABLISHED
Event: Internal AddUpstream Event: Internal AddUpstream
New State: ESTABLISHED New State: ESTABLISHED
skipping to change at page 53, line 23 skipping to change at page 52, line 23
State: ESTABLISHED State: ESTABLISHED
Event: LDP Mapping Event: LDP Mapping
New State: ESTABLISHED New State: ESTABLISHED
Actions Actions
For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block
pointers list, pass the event 'Internal Downstream mapping' to its pointers list, pass the event `Internal Downstream mapping' to its
state machine. state machine.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Withdraw Event: LDP Withdraw
New State: IDLE New State: IDLE
Actions Actions
For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block For each Upstream_LSP_Control_Block in the Upstream_LSP_Control_Block
pointers list, pass the event 'Internal Downstream withdraw' to its pointers list, pass the event `Internal Downstream withdraw' to its
state machine. state machine.
Release the resources, and delete the control block and send LDP- Release the resources, and delete the control block and send LDP-
RELEASE downstream. RELEASE downstream.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Downstream Nak Event: LDP Downstream NAK
New State: ESTABLISHED New State: ESTABLISHED
Actions Actions
It is a protocol error from the downstream LDP peer. It is a protocol error from the downstream LDP peer.
3.2.3.9 State of the Next_Hop_Trigger_Control_Block's State Machine 3.2.3.9 State of the Next_Hop_Trigger_Control_Block's State Machine
for Downstream-on-demand Mode for Downstream-on-demand Mode
skipping to change at page 54, line 18 skipping to change at page 53, line 18
This is the initial LSP state. This is the initial LSP state.
-- NEW_NH_RETRY -- NEW_NH_RETRY
This is the state where an LSR waits for a retry timer to expire and This is the state where an LSR waits for a retry timer to expire and
then tries to establish an LSP through a new next hop. then tries to establish an LSP through a new next hop.
-- NEW_NH_RESPONSE_AWAITED -- NEW_NH_RESPONSE_AWAITED
This state means that the LSR has sent a new LDP-REQUEST towards a This state means that the LSR has sent a new LDP-REQUEST towards a
downstream LSR. The LSR is waiting for the LDP-MAPPING message from downstream LSR. The LSR is waiting for the LDP-MAPPING from the
the downstream LSR. downstream LSR.
3.2.3.10 Events of the Next_Hop_Trigger_Control_Block's State Machine 3.2.3.10 Events of the Next_Hop_Trigger_Control_Block's State Machine
for Downstream-on-demand Mode for Downstream-on-demand Mode
-- Internal New NH -- Internal New NH
Trigger to setup an LSP through a better next hop. Trigger to setup an LSP through a better next hop.
-- Internal Downstream Mapping -- Internal Downstream Mapping
This event is sent by one Downstream_LSP_Control_Block's state This event is sent by one Downstream_LSP_Control_Block's state
machine. This Downstream_LSP_Control_Block is the merged machine. This Downstream_LSP_Control_Block is the merged
Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The
event is the result of receiving an LDP-MAPPING message by the event is the result of receiving an LDP-MAPPING by the
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
-- Internal Downstream Nak -- Internal Downstream NAK
This event is sent by one Downstream_LSP_Control_Block's state This event is sent by one Downstream_LSP_Control_Block's state
machine. This Downstream_LSP_Control_Block is the merged machine. This Downstream_LSP_Control_Block is the merged
Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The Downstream_LSP_Control_Block of this Upstream_LSP_Control_Block. The
event is the result of receiving an LDP-NAK message by the event is the result of receiving an LDP-NAK by the
Downstream_LSP_Control_Block's state machine, or it detects an error. Downstream_LSP_Control_Block's state machine, or it detects an error.
-- Internal Destroy This event is used to stop the procedure of -- Internal Destroy This event is used to stop the procedure of
switching over to the better next hop. switching over to the better next hop.
3.2.3.11 State Transitions of the Next_Hop_Trigger_Control_Block's State 3.2.3.11 State Transitions of the Next_Hop_Trigger_Control_Block's State
Machine for Downstream-on-demand Mode Machine for Downstream-on-demand Mode
| |
| |
skipping to change at page 55, line 34 skipping to change at page 54, line 34
+---------------------+ | +---------------------+ |
| | Internal | | | Internal |
| NEW_NH_RESPONSE | Destroy | | NEW_NH_RESPONSE | Destroy |
| _AWAITED |-------------| | _AWAITED |-------------|
| | | | | |
+---------------------+ | +---------------------+ |
| | | |
| (Internal Downstream | | (Internal Downstream |
| Mapping | | Mapping |
| (Internal Downstream | | (Internal Downstream |
| Nak) | | NAK) |
v v v v
the control block is deleted the control block is deleted
3.2.3.12 State Machine 3.2.3.12 State Machine
3.2.3.12.1 State -- "IDLE" 3.2.3.12.1 State -- "IDLE"
State: IDLE State: IDLE
Event: Internal New NH Event: Internal New NH
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Start the LSP retry timer and go to the 'NEW_NH_RETRY' state. Start the LSP retry timer and go to the `NEW_NH_RETRY' state.
State: IDLE State: IDLE
Event: Internal retry timeout Event: Internal retry timeout
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal Downstream Nak Event: Internal Downstream NAK
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: IDLE State: IDLE
Event: Internal destroy Event: Internal destroy
New States: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
3.2.3.12.2 State -- "NEW_NH_RETRY" 3.2.3.12.2 State -- "NEW_NH_RETRY"
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal New NH Event: Internal New NH
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Restart the LSP retry timer. Restart the LSP retry timer.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal retry timeout Event: Internal retry timeout
New States: NEW_NH_RESPONSE_AWAITED New State: NEW_NH_RESPONSE_AWAITED
Actions: Actions:
If the new next hop is the same one as the old next hop, delete the If the new next hop is the same one as the old next hop, delete the
control block. control block.
Otherwise, find an downstream LSP control block which go through the Otherwise, find an downstream LSP control block which go through the
same next hop for the same FEC, if there is no one, create one, and same next hop for the same FEC, if there is no one, create one, and
pass "Internal AddUpstream'event to its state machine. pass `Internal AddUpstream' event to its state machine.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal Downstream NAK Event: Internal Downstream NAK
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal destroy Event: Internal destroy
New States: IDLE New State: IDLE
Actions: Actions:
Stop the timer and delete the control block. Stop the timer and delete the control block.
3.2.3.12.3 State -- "NEW_NH_RESPONSE_AWAITED" 3.2.3.12.3 State -- "NEW_NH_RESPONSE_AWAITED"
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal New NH Event: Internal New NH
New States: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions: Actions:
Restart the LSP retry timer, send "Internal destroy" to the control Restart the LSP retry timer, send `Internal destroy' to the control
block of the LSP for the new next hop and go to the 'NEW_NH_RETRY' block of the LSP for the new next hop and go to the `NEW_NH_RETRY'
state. state.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal retry timeout Event: Internal retry timeout
New States: NEW_NH_RESPONSE_AWAITED New State: NEW_NH_RESPONSE_AWAITED
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New States: IDLE New State: IDLE
Actions: Actions:
Send event "Internal Re-cross-connect" event to the Upstream LSP Send event `Internal Re-cross-connect' event to the upstream LSP
control block of the new next hop. control block of the new next hop.
Send event "DeleteUpstream" event to the downstream LSP control block Send event `DeleteUpstream' event to the downstream LSP control block
of the the new next hop, since the upstream has spliced into the new of the the new next hop, since the upstream has spliced into the new
next hop. next hop.
Then delete the control block. Then delete the control block.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal Downstream NAK Event: Internal Downstream NAK
New States: IDLE New State: IDLE
Actions: Actions:
Delete the control block. Delete the control block.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal destroy Event: Internal destroy
New States: IDLE New State: IDLE
Actions: Actions:
Send event "Internal DeleteUpstream" the control block for the new Send event `Internal DeleteUpstream' the control block for the new
LSP through the new next hop. LSP through the new next hop.
3.2.4 LDP Related Message Processing 3.2.4 LDP Related Message Processing
- If an LSR receives an LDP-REQUEST message: - If an LSR receives an LDP-REQUEST:
a) If this is a duplicate request, discard the msg. A duplicate a) If this is a duplicate request, discard the message. A duplicate
request means that there is a LSP_Control_Block which has same FEC, request means that there is a LSP_Control_Block which has same FEC,
same Upstream Label Request ID and same Upstream LDP Session same Upstream Label Request ID and same Upstream LDP Session
Identifier. Identifier.
b) Otherwise, create a new Upstream_LSP_Control_Block. Then pass the b) Otherwise, create a new Upstream_LSP_Control_Block. Then pass the
event `LDP Request' to this Upstream_LSP_Control_Block's state event `LDP Request' to this Upstream_LSP_Control_Block's state
machine. machine.
- If an LSR receives an LDP-MAPPING message: - If an LSR receives an LDP-MAPPING:
Locate a Downstream_LSP_Control_Block which has the same FEC, the Locate a Downstream_LSP_Control_Block which has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream Label. same Downstream LDP Session Identifier and the same Downstream Label.
If a Downstream_LSP_Control_Block is found, pass the event `LDP If a Downstream_LSP_Control_Block is found, pass the event `LDP
Mapping' to its state table. This could mean that the attributes of Mapping' to its state table. This could mean that the attributes of
label binding have changed. label binding have changed.
Otherwise, use the Downstream LDP request ID(the 'Lable Request Otherwise, use the Downstream LDP request ID (the 'Label Request
Message ID' field in the LDP-MAPPING MSG) and Downstream LDP Session Message ID' field in the LDP-MAPPING) and Downstream LDP Session
Identifier to locate the Downstream_LSP_Control_Block and pass the Identifier to locate the Downstream_LSP_Control_Block and pass the
event `LDP Mapping' to its state machine. If no event `LDP Mapping' to its state machine. If no
Downstream_LSP_Control_Block is found, ignore the message. Downstream_LSP_Control_Block is found, ignore the message.
- If an LSR receives an LDP-RELEASE message: - If an LSR receives an LDP-RELEASE:
Locate an Upstream_LSP_Control_Block which has the same FEC, the same Locate an Upstream_LSP_Control_Block which has the same FEC, the same
Upstream Label, the same Upstream LDP Session Identifier. If no Upstream Label, the same Upstream LDP Session Identifier. If no
Upstream_LSP_Control_Block is found, ignore the message. If an Upstream_LSP_Control_Block is found, ignore the message. If an
Upstream_LSP_Control_Block is found, send the event `LDP Release' to Upstream_LSP_Control_Block is found, send the event `LDP Release' to
its state machine. its state machine.
- If an LSR receives an LDP-WITHDRAW message: - If an LSR receives an LDP-WITHDRAW:
Find a Downstream_LSP_Control_Block which has the same FEC, the same Find a Downstream_LSP_Control_Block which has the same FEC, the same
Downstream LDP Session Identifier and the same Downstream Label. Pass Downstream LDP Session Identifier and the same Downstream Label. Pass
the event `LDP Withdraw' to its state machines. the event `LDP Withdraw' to its state machines.
- If an Upstream LDP peer is lost: - If an Upstream LDP peer is lost:
Pass the event `Upstream Lost' to the state machines of all the Pass the event `Upstream Lost' to the state machines of all the
Upstream_LSP_Control_Blocks whose upstream LDP peer is that LSR. Upstream_LSP_Control_Blocks whose upstream LDP peer is that LSR.
- If a Downstream LDP peer is lost: - If a Downstream LDP peer is lost:
Pass the event `Downstream Lost' to the state machines of all the Pass the event `Downstream Lost' to the state machines of all the
Downstream_LSP_Control_Blocks whose the downstream LDP peer is that Downstream_LSP_Control_Blocks whose the downstream LDP peer is that
LSR. LSR.
- If a next hop of an FEC is changed: - If a next hop of an FEC is changed:
For all the Upstream_LSP_Control_Blocks which are infected by this For all the Upstream_LSP_Control_Blocks which are infected by this
change, pass the event 'Internal New NH' to their state machines. change, pass the event `Internal New NH' to their state machines.
- If an LSR receives an LDP-ABORT from an Upstream LSR: - If an LSR receives an LDP-ABORT from an upstream LSR:
Use the Upstream LDP Request ID and Upstream LDP Session Identifier Use the Upstream LDP Request ID and Upstream LDP Session Identifier
to locate the Upstream_LSP_Control_Block and pass the event `LDP to locate the Upstream_LSP_Control_Block and pass the event `LDP
Abort' to its state machine. Abort' to its state machine.
- If an LSR receives an LDP-NAK from a downstream LSR: - If an LSR receives an LDP-NAK from a downstream LSR:
Use the Downstream LDP Request ID and Downstream Session Identifier Use the Downstream LDP Request ID and Downstream Session Identifier
to locate a Downstream_LSP_control_block and pass the event `LDP to locate a Downstream_LSP_control_block and pass the event `LDP
Downstream Nak' to its state machine. Downstream NAK' to its state machine.
4. State Machine for Downstream Unsolicited 4. State Machine for Downstream Unsolicited
The following sections describe the state machines for the ATM-LSR The following sections describe the state machines for the ATM-LSR
which uses downstream unsolicited mode. which uses downstream unsolicited mode.
While both independent LSP control and ordered LSP control modes are While both independent LSP control and ordered LSP control modes are
possible, only the ordered mode is taken into account, because the possible, only the ordered mode is taken into account, because the
independant LSP control mode uses the liberal label retention mode independent LSP control mode uses the liberal label retention mode
and so is considered burning too many ATM resources. and so is considered burning too many ATM resources.
In downstream unsolicited mode, multiple path is not allowed in this In downstream unsolicited mode, multiple path is not supported in
version and will be For Further Study(FFS). We suspect with multiple this version and will be For Further Study (FFS). We suspect with
next hops and Downstream mode, it is easy to get into loop condition. multiple next hops and Downstream mode, it is easy to get into a loop
condition.
4.0 Control Block 4.0 Control Block
There are 2 types of control blocks involved: There are 2 types of control blocks involved:
Upstream_LSP_Control_Block, Downstream_LSP_Control_Block. Upstream_LSP_Control_Block, Downstream_LSP_Control_Block.
There is a list of Upstream_LSP_Control_Blocks for each FEC in the There is a list of Upstream_LSP_Control_Blocks for each FEC in the
routing table, with each one correspondng to a LDP peer. A routing table, with each one corresponding to a LDP peer. A
Upstream_LSP_Control_Block is created for each FEC when there is a Upstream_LSP_Control_Block is created for each FEC when there is a
label ready to be distributed to that upstream. It is deleted when label ready to be distributed to that upstream. It is deleted when
the FEC is deleted from the FEC table, or the LDP peer disappears, or the FEC is deleted from the FEC table, or the LDP peer disappears, or
the downstream label is withdrawed. the downstream label is withdrawed.
There is one Downstream_LSP_Control_Blocks for each FEC in the There is one Downstream_LSP_Control_Blocks for each FEC in the
routing table. It is created when the FEC is inserted into the routing table. It is created when the FEC is inserted into the
forwarding table and deleted when the FEC is removed from the forwarding table and deleted when the FEC is removed from the
forwarding table. forwarding table.
skipping to change at page 61, line 51 skipping to change at page 61, line 4
- FEC - FEC
- State - State
- Downstream LDP Session Identifier - Downstream LDP Session Identifier
- Downstream Label(assigned by the downstream LSR) - Downstream Label(assigned by the downstream LSR)
- Downstream Label Request ID (assigned by the LSR itself) - Downstream Label Request ID (assigned by the LSR itself)
Downstream Label and Downstream LDP Session Identifier, or FEC and Downstream Label and Downstream LDP Session Identifier, or FEC and
Downsteam LDP Session Identifier can be used to locate a unique Downstream LDP Session Identifier can be used to locate a unique
Downstream_LSP_Control_Block. Downstream_LSP_Control_Block.
4.1 States of the Upstream_LSP_Control_Block's State Machine 4.1 States of the Upstream_LSP_Control_Block's State Machine
for Downstream Mode for Downstream Mode
-- IDLE -- IDLE
This is the initial LSP state. This is the initial LSP state.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING message This state means that the LSR has received the LDP-MAPPING from the
from the downstream LSR and the LSP is up and operational. downstream LSR and the LSP is up and operational.
-- RELEASE_AWAITED -- RELEASE_AWAITED
This state means that the LSR is waiting for the LDP-RELEASE msg in This state means that the LSR is waiting for the LDP-RELEASE in
respond to the LDP-WITHDRAW sent by this LSR. respond to the LDP-WITHDRAW sent by this LSR.
-- RESOUCES_AWAITED -- RESOURCES_AWAITED
This state means that the LSR is waiting for the label resources. This state means that the LSR is waiting for the label resources.
4.2 Events of the Upstream_LSP_Control_Block's State Machine 4.2 Events of the Upstream_LSP_Control_Block's State Machine
for Downstream Mode for Downstream Mode
-- Internal Downstream Mapping -- Internal Downstream Mapping
This event is sent by one Downstream_LSP_Control_Block's state This event is sent by one Downstream_LSP_Control_Block's state
machine. The event is the result of receiving an LDP-MAPPING message machine. The event is the result of receiving an LDP-MAPPING by the
by the Downstream_LSP_Control_Block's state machine. Or when the LDP Downstream_LSP_Control_Block's state machine. Or when the LDP peer is
peer is discovered and there is a downstream Label available for this discovered and there is a downstream Label available for this FEC.
FEC.
-- LDP Release -- LDP Release
The LSR receives an LDP-RELEASE from an upstream LSR. The LSR receives an LDP-RELEASE from an upstream LSR.
-- Internal Withdraw -- Internal Withdraw
This event is sent by Downstream_LSP_Control_Block's state machine. This event is sent by Downstream_LSP_Control_Block's state machine.
The event is the result of receiving an LDP-WITHDRAW message by the The event is the result of receiving an LDP-WITHDRAW by the
Downstream_LSP_Control_Block's state machine. Downstream_LSP_Control_Block's state machine.
-- Resource Available -- Resource Available
This event means the local resource(such as label) becomes available. This event means the local resource (such as label) becomes
available.
-- Delete FEC -- Delete FEC
This event means that either the FEC is removed from the forwarding This event means that either the FEC is removed from the forwarding
table. table.
-- Upstream Lost -- Upstream Lost
This event means that the upstream LDP peer is lost. This event means that the upstream LDP peer is lost.
skipping to change at page 64, line 34 skipping to change at page 63, line 34
| | | | | |
|(no label resource)v | |(no label resource)v |
| +-------------------+ | | +-------------------+ |
| | | | | | | |
| +-----| ESTABLISHED |---------------+ | +-----| ESTABLISHED |---------------+
| | | | ^ | | | | ^
| | +-------------------+ | | | +-------------------+ |
| |(delete FEC) ^ | | |(delete FEC) ^ |
| |(Internal |(Resource Available) | (LDP Release) | |(Internal |(Resource Available) | (LDP Release)
| | Withdraw) | | (Internal | | Withdraw) | | (Internal
| | | | Downstraem | | | | Downstream
| | | | Withdraw) | | | | Withdraw)
| | +-------------------+ | | | +-------------------+ |
+--------->| | | +--------->| | |
| |RESOURCES_AWAITED |---------------+ | |RESOURCES_AWAITED |---------------+
| | | | | | | |
| +-------------------+ | | +-------------------+ |
| | | |
| (Internal Downstream Withdraw) |(LDP Release) | (Internal Downstream Withdraw) |(LDP Release)
| +-------------------+ | | +-------------------+ |
| | | | | | | |
skipping to change at page 65, line 16 skipping to change at page 64, line 16
State: IDLE State: IDLE
Event: Internal Downstream mapping Event: Internal Downstream mapping
New State: Depends on the action. New State: Depends on the action.
Actions Actions
Choose an upstream label, connect the upstream label with the Choose an upstream label, connect the upstream label with the
downstream label. And go to state 'ESTABLISHED' downstream label. And go to state `ESTABLISHED'
Propagate the LDP-MAPPING upstream. Propagate the LDP-MAPPING upstream.
If there is no resource for the upstream label, go to state If there is no resource for the upstream label, go to state
'RESOURCE_AWAITED'. `RESOURCE_AWAITED'.
State: IDLE State: IDLE
Event: LDP Release Event: LDP Release
New State: IDLE New State: IDLE
Actions Actions
Ignore the event. It is an internal implementation error. Ignore the event. It is an internal implementation error.
skipping to change at page 66, line 35 skipping to change at page 65, line 35
4.4.2 : State -- "ESTABLISHED" 4.4.2 : State -- "ESTABLISHED"
State: ESTABLISHED State: ESTABLISHED
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New State: ESTABLISHED New State: ESTABLISHED
Actions Actions
Process the new attributes of the new mapping msg. Process the new attributes of the new mapping message.
Propagate the LDP-MAPPING upstream. Propagate the LDP-MAPPING upstream.
State: ESTABLISHED State: ESTABLISHED
Event: LDP Release Event: LDP Release
New State: IDLE New State: IDLE
Actions Actions
skipping to change at page 68, line 8 skipping to change at page 67, line 8
4.4.2 : State -- "RELEASE_AWAITED" 4.4.2 : State -- "RELEASE_AWAITED"
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New State: RELEASE_AWAITED New State: RELEASE_AWAITED
Actions Actions
Ignore the msg. Ignore the message.
State: RELEASE_AWAITED State: RELEASE_AWAITED
Event: LDP Release Event: LDP Release
New State: IDLE New State: IDLE
Actions Actions
Release the upstream label and delete the control block. Release the upstream label and delete the control block.
skipping to change at page 69, line 22 skipping to change at page 68, line 22
4.4.2 : State -- "RESOURCE_AWAITED" 4.4.2 : State -- "RESOURCE_AWAITED"
State: RESOURCE_AWAITED State: RESOURCE_AWAITED
Event: Internal Downstream Mapping Event: Internal Downstream Mapping
New State: RESOURCE_AWAITED New State: RESOURCE_AWAITED
Actions Actions
Ignore the msg. Ignore the message.
State: RESOURCE_AWAITED State: RESOURCE_AWAITED
Event: LDP Release Event: LDP Release
New State: RESOURCE_AWAITED New State: RESOURCE_AWAITED
Actions Actions
Ignore the msg. It is an internal implementation error. Ignore the message. It is an internal implementation error.
State: RESOURCE_AWAITED State: RESOURCE_AWAITED
Event: Internal Downstream Withdraw Event: Internal Downstream Withdraw
New State: IDLE New State: IDLE
Actions Actions
Delete the control block. Delete the control block.
skipping to change at page 70, line 36 skipping to change at page 69, line 36
4.5 State of the Downstream_LSP_Control_Block's State Machine 4.5 State of the Downstream_LSP_Control_Block's State Machine
for Downstream Mode for Downstream Mode
-- IDLE -- IDLE
This is the initial LSP state. This is the initial LSP state.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING msg from This state means that the LSR has received the LDP-MAPPING from the
the downstream LSR. downstream LSR.
3.2.4.6 Events of the Downstream_LSP_Control_Block's State Machine 3.2.4.6 Events of the Downstream_LSP_Control_Block's State Machine
for Downstream Mode for Downstream Mode
-- LDP Mapping -- LDP Mapping
The LSR receives an LDP-MAPPING msg from a downstream LSR. The LSR receives an LDP-MAPPING from a downstream LSR.
-- LDP Withdraw -- LDP Withdraw
The LSR receives an LDP-WITHDRAW msg from a downstream LSR. The LSR receives an LDP-WITHDRAW from a downstream LSR.
-- Delete FEC -- Delete FEC
The FEC is deleted from the forwarding table. The FEC is deleted from the forwarding table.
-- Next Hop Change -- Next Hop Change
The next hop for this FEC is change to different LSR. The next hop for this FEC is change to different LSR.
-- Downstream Lost -- Downstream Lost
skipping to change at page 75, line 7 skipping to change at page 73, line 18
New State: IDLE New State: IDLE
Actions Actions
Send LDP-WITHDRAW to all Upstream_Control_Block's state machine of Send LDP-WITHDRAW to all Upstream_Control_Block's state machine of
this FEC. this FEC.
4.5 LDP Related Message Processing for downstream mode. 4.5 LDP Related Message Processing for downstream mode.
- If an LSR receives an LDP-REQUEST message: - If an LSR receives an LDP-REQUEST:
If there is a next hop for this FEC and there is a If there is a next hop for this FEC and there is a
Downstream_Control_Block for this FEC whose state is 'ESTABLISHED', Downstream_Control_Block for this FEC whose state is `ESTABLISHED',
create a new Upstream_Control_Block and pass 'internal Mapping' event create a new Upstream_Control_Block and pass `internal Mapping' event
to its state machine. to its state machine.
- If an LSR receives an LDP-MAPPING message: - If an LSR receives an LDP-MAPPING:
Locate a Downstream_LSP_Control_Block which has the same FEC, the Locate a Downstream_LSP_Control_Block which has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream Label. same Downstream LDP Session Identifier and the same Downstream Label.
If a Downstream_LSP_Control_Block is found, pass the event `LDP If a Downstream_LSP_Control_Block is found, pass the event `LDP
Mapping' to its state table. This could mean that the attributes of Mapping' to its state table. This could mean that the attributes of
label binding have changed. label binding have changed.
Otherwise, if there is no matching Downstream_LSP_Control_Block Otherwise, if there is no matching Downstream_LSP_Control_Block
found, find a Downstream_LSP_Control_Block of this FEC and its next found, find a Downstream_LSP_Control_Block of this FEC and its next
hop is the this downstream peer, pass the event `LDP Mapping' to its hop is the this downstream peer, pass the event `LDP Mapping' to its
state machine. state machine.
- If an LSR receives an LDP-RELEASE message: - If an LSR receives an LDP-RELEASE:
Locate an Upstream_LSP_Control_Block which has the same FEC, the same Locate an Upstream_LSP_Control_Block which has the same FEC, the same
Upstream Label, the same Upstream LDP Session Identifier. If no Upstream Label, the same Upstream LDP Session Identifier. If no
Upstream_LSP_Control_Block is found, ignore the message. If an Upstream_LSP_Control_Block is found, ignore the message. If an
Upstream_LSP_Control_Block is found, send the event `LDP Release' to Upstream_LSP_Control_Block is found, send the event `LDP Release' to
its state machine. its state machine.
- If an LSR receives an LDP-WITHDRAW message: - If an LSR receives an LDP-WITHDRAW:
Find a Downstream_LSP_Control_Block which has the same FEC, the same Find a Downstream_LSP_Control_Block which has the same FEC, the same
Downstream LDP Session Identifier and the same Downstream Label. Pass Downstream LDP Session Identifier and the same Downstream Label. Pass
the event `LDP Withdraw' to its state machines. the event `LDP Withdraw' to its state machines.
- If an Upstream LDP peer is lost: - If an Upstream LDP peer is lost:
Pass the event `Upstream Lost' to the state machines of all the Pass the event `Upstream Lost' to the state machines of all the
Upstream_LSP_Control_Blocks whose upstream LDP peer is that LSR. Upstream_LSP_Control_Blocks whose upstream LDP peer is that LSR.
skipping to change at page 76, line 13 skipping to change at page 74, line 24
LSR. LSR.
- If a next hop of an FEC is changed: - If a next hop of an FEC is changed:
Find all the Downstream_LSP_Control_Blocks which has the same FEC and Find all the Downstream_LSP_Control_Blocks which has the same FEC and
the same next hop and pass the event `Next Hop Change' to their state the same next hop and pass the event `Next Hop Change' to their state
machine machine
- If there is a FEC being added to the forwarding table - If there is a FEC being added to the forwarding table
Create a new Downstream_LSP_Control_Block with state 'IDLE' Create a new Downstream_LSP_Control_Block with state `IDLE'
- If the FEC is deleted from the forwarding table - If the FEC is deleted from the forwarding table
Send the 'Delete FEC' event to the its control block. Send the `Delete FEC' event to the its control block.
- If an LSR receives an LDP-NAK from an Upstream LSR: - If an LSR receives an LDP-NAK from an upstream LSR:
Ignore the msg. An LDP-NAK should never appear in the downstream-mode Ignore the message. An LDP-NAK should never appear in the
LSR downstream-mode LSR
- If an LSR receives an LDP-NAK from a downstream LSR: - If an LSR receives an LDP-NAK from a downstream LSR:
Ignore the msg. It is an protocol error from the downstream LSR. Ignore the message. It is an protocol error from the downstream LSR.
5. Security Considerations 5. Security Considerations
Security considerations will be addressed in a future revision of This document is provided as an informational extension of the LDP
this document. specification [4]. State machines presented here are intended to
clarify procedures defined in the LDP specification, but do not
supplant or override definitions and procedures provided there.
Implementations of a state machine may be vulnerable to spurious
events generated by an external source. In this document, events fall
in two categories: internal events and external events caused by
receipt of an LDP message.
LDP messages may be protected using mechanisms described in the LDP
specification. See "Security Considerations" in the LDP specification
[4].
Security considerations relating to generation of spurious internal
events are not addressed in this document.
6. Acknowledgements 6. Acknowledgements
The authors would like to acknowledge the helpful comments and The authors would like to acknowledge the helpful comments and
suggestions of the following people: Bob Thomas suggestions of the following people: Bob Thomas and Myunghee Son.
7. Authors's Address 7. Authors' Address
Liwen Wu Christophe Boscher
Alcatel Alcatel
44983 Knoll Square Le Mail
Ashburn, VA. 20147 44700 Orvault
U.S.A France
Phone: 703-724-2619 Phone: (33) 251781828
Email:liwen.wu@adn.alcatel.com Email: christophe.boscher@alcatel.fr
Pierrick Cheval Pierrick Cheval
Alcatel Alcatel
44983 Knoll Square 5 rue Noel-Pons
Ashburn, VA. 20147 92734 Nanterre Cedex
U.S.A
Phone: 703-724-2080
Email: pierrick.cheval@adn.alcatel.com
Christophe Boscher
Alcatel CIT
Le Mail
44700 Nantes-Orvault
France France
Phone: (33) 251781828 Phone: (33) 146524027
Email: christophe.boscher@or.cit.alcatel.fr Email: pierrick.cheval@alcatel.fr
Eric Gray Eric Gray
Lucent Technologies, Inc. Lucent Technologies, Inc.
1600 Osgood Street P.O. Box 710
North Andover, MA 01845 Durham, NH 03824
Phone: (603) 659-3386
Email: ewgray@lucent.com Email: ewgray@lucent.com
Liwen Wu
Cisco Systems, Inc.
250 Apollo Drive
Chelmsford, MA 01824
U.S.A
Phone: 978-224-3087
Email:liwwu@cisco.com
8. References 8. References
1."Use of Label Switching With ATM", Bruce Davie, Jeremy Lawrence, 1."MPLS Using LDP and ATM Switching", Bruce Davie, Jeremy Lawrence,
Keith McCloghrie, Yakov Rekhter, Eric Rosen, George Swallow, Paul Keith McCloghrie, Yakov Rekhter, Eric Rosen, George Swallow, Paul
Doolan, work in progress, Internet Draft, <draft-ietf-mpls-atm-01.txt> Doolan, work in progress, Internet Draft, <draft-ietf-mpls-atm-02.txt>
2."Multiprotocol Label Switching Architecture", Eric C Rosen, Arun 2."Multiprotocol Label Switching Architecture", Eric C Rosen, Arun
Viswanathan, Ross Callon, work in progress, Internet Draft, <draft- Viswanathan, Ross Callon, work in progress, Internet Draft, <draft-
ietf-mpls-arch-02.txt> ietf-mpls-arch-06.txt>
3."Definition of Managed Objects for the Multiprotocol Label Switching, 3."Definition of Managed Objects for the Multiprotocol Label Switching,
Label Distribution Protocol (LDP)", Joan Cucchiara, Hans Sjostrand, Label Distribution Protocol (LDP)", Joan Cucchiara, Hans Sjostrand,
James V. Luciani, work in progress, Internet Draft, <draft-ietf-mpls- James V. Luciani, work in progress, Internet Draft, <draft-ietf-mpls-
ldp-mib-00.txt> ldp-mib-02.txt>
4."Requirements for Traffic Engineering Over MPLS", Daniel O.Awduche,
Joe Malcolm, Johnson Agogbua, Mike O'Dell, Jim McMaus, work in
progress,Internet Draft, <draft-ietf-mpls-traffic-eng-00.txt>
5. "LDP Specification", Loa Andersson, Paul Doolan,Nancy Feldman, Andre 4. "LDP Specification", Loa Andersson, Paul Doolan, Nancy Feldman,
Fredette, Bob Thomas, work in progress, Internet Draft, <draft-ietf- Andre Fredette, Bob Thomas, work in progress, Internet Draft, <draft-
mpls-ldp-04.txt> ietf-mpls-ldp-06.txt>
6. "MPLS Loop Prevention Mechanism", Yoshihiro Ohba, Yasuhiro Katsube, 5. "Constraint-Based LSP Set up Using LDP", Bilel Jamoussi, et al.,
Eric Rosen, Paul Doolan, work in progress, Internet Draft, <draft- work in progress, Internet Draft, <draft-ietf-mpls-cr-ldp-03.txt>
ohba-mpls-loop-prevention-02.txt>
7. "Constraint-Based LSP Set up Using LDP", Bilel Jamoussi, et.al.,
work in progress, Internet Draft, <draft-ietf-mpls-cr-ldp-01.txt>
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/