draft-ietf-mpls-ldp-state-04.txt   rfc3215.txt 
MPLS Working Group Christophe Boscher Network Working Group C. Boscher
Internet Draft Pierrick Cheval Request for Comments: 3215 P. Cheval
Expiration Date: September 2001 Alcatel Category: Informational Alcatel
L. Wu
Liwen Wu Cisco
Cisco E. Gray
Sandburst
Eric Gray January 2002
Sandburst
March 2000
LDP State Machine LDP State Machine
draft-ietf-mpls-ldp-state-04.txt
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This memo provides information for the Internet community. It does
all provisions of Section 10 of RFC2026. not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as Internet- Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Table Of Contents Copyright Notice
1. Abstract ......................................................... 3 Copyright (C) The Internet Society (2002). All Rights Reserved.
2. Terminology ...................................................... 4
3. State Machine for Downstream-on-Demand Mode ...................... 4
3.1 An LSR's Behavior in the Case of a Next Hop Change .............. 5
3.2. ATM Switch LSR with No VC-merge Capability ..................... 5
3.2.1 LSP Control Block ............................................. 5
3.2.2 States ........................................................ 7
3.2.3 Events ........................................................ 8
3.2.4 State Transitions ............................................. 10
3.2.5 State Machine ................................................. 10
3.2.5.1 State -- "IDLE" ............................................. 11
3.2.5.2 State -- "RESPONSE_AWAITED" ................................. 14
3.2.5.3 State -- "ESTABLISHED" ...................................... 17
3.2.5.4 State -- "RELEASE_AWAITED" .................................. 22
3.2.6 Handling the Next Hop Change .................................. 24
3.2.6.1 Next Hop Trigger Control Block .............................. 24
3.2.6.2 States ...................................................... 24
3.2.6.3 Events ...................................................... 25
3.2.6.4 State Transition for next hop change ........................ 26
3.2.6.5 State Machine ............................................... 26
3.2.6.5.1 State -- "IDLE" ........................................... 26
3.2.6.5.2 State -- "NEW_NH_RETRY" ................................... 27
3.2.6.5.3 State -- "NEW_NH_RESPONSE_AWAITED" ........................ 29
3.2.7 LDP Related Message Handling .................................. 30
3.3. ATM Switch LSR with VC-merge ................................... 32
3.3.1 VC-merge ...................................................... 32
3.3.2 Control Block ................................................. 32
3.3.3 State Machines for Downstream-on-demand Mode ................ 35
3.3.3.1 State of the Upstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 35
3.3.3.2 Events of the Upstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 36
3.3.3.3 State Transitions of the Upstream LSP Control Block's State
Machine for Downstream-on-demand Mode .................... 38
3.3.3.4 Upstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 38
3.3.3.4.1 State -- "IDLE" ........................................... 38
3.3.3.4.2 State -- "RESPONSE_AWAITED" ............................... 41
3.3.3.4.3 State -- "ESTABLISHED" .................................... 44
3.3.3.4.4 State -- "RELEASE_AWAITED" ................................ 47
3.3.3.5 State of the Downstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 49
3.3.3.6 Events of the Downstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 49
3.3.3.7 State Transitions of the Downstream LSP Control Block's
State Machine for Downstream-on-demand mode .............. 50
3.3.3.8 Downstream LSP Control Block's State Machine for
Downstream-on-demand Mode ................................ 50
3.3.3.8.1 State -- "IDLE" ........................................... 50
3.3.3.8.2 State -- "RESPONSE_AWAITED" ............................... 52
3.3.3.8.3 State -- "ESTABLISHED" .................................... 53
3.3.3.9 State of the Next_Hop_Trigger_Control_Block's State
Machine for Downstream-on-demand Mode .................... 55
3.3.3.10 Events of the Next_Hop_Trigger_Control_Block's State
Machine for Downstream-on-demand Mode .................... 55
3.3.3.11 State Transitions of the Next_Hop_Trigger_Control_Block's
State Machine for Downstream-on-demand Mode .............. 56
3.3.3.12 State Machine .............................................. 56
3.3.3.12.1 State -- "IDLE" .......................................... 57
3.3.3.12.2 State -- "NEW_NH_RETRY" .................................. 58
3.3.3.12.3 State -- "NEW_NH_RESPONSE_AWAITED" ....................... 59
3.3.4 LDP Related Message Processing ................................ 60
4. State Machine for Downstream Unsolicited ......................... 62
4.1 Control Block ................................................... 62
4.2 States of the Upstream LSP Control Block's State Machine
for Downstream Mode ...................................... 63
4.3 Events of the Upstream LSP Control Block's State Machine
for Downstream Mode ...................................... 63
4.4 State Transitions of Upstream LSP Control Block's State
Machine for Downstream Mode .............................. 65
4.5 Upstream LSP Control Block's State Machine for
Downstream Mode .......................................... 65
4.5.1 : State -- "IDLE" ............................................. 66
4.5.2 : State -- "ESTABLISHED" ...................................... 67
4.5.3 : State -- "RELEASE_AWAITED" .................................. 68
4.5.4 : State -- "RESOURCE_AWAITED" ................................. 70
4.6 State of the Downstream LSP Control Block's State Machine
for Downstream Mode ...................................... 71
4.7 Events of the Downstream LSP Control Block's State Machine
for Downstream Mode ...................................... 71
4.8 State Transitions of Downstream LSP Control Block's State
Machine for Downstream Mode .............................. 72
4.9 Downstream LSP Control Block's State Machine
for Downstream Mode ...................................... 72
4.9.1 : State -- "IDLE" ............................................. 72
4.9.2 : State -- "ESTABLISHED" ...................................... 74
4.10 LDP Related Message Processing for downstream mode ............. 75
5. Security Considerations .......................................... 76
6. Acknowledgements ................................................. 77
7. Authors' Address ................................................. 77
8. References ....................................................... 78
1. Abstract Abstract
In the current LDP specification [4], there is no state machine This document provides state machine tables for ATM (Asynchronous
specified for processing LDP messages. We think that defining a Transfer Mode) switch LSRs. In the current LDP specification, there
common state machine is very important for interoperability between is no state machine specified for processing LDP messages. We think
different LDP and CR-LDP implementations. that defining a common state machine is very important for
interoperability between different LDP and CR-LDP implementations.
This document provides state machine tables for ATM switch LSRs. We We begin in section 1 by defining a list of terminologies. Then in
begin in section 2 by defining a list of terminologies. Then in section 2, 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 that 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 merge capable ATM LSRs, while the other one can be used for non-vc merge capable ATM LSRs, while the other one can be used for
the vc-merge capable ATM LSRs. In section 4, we provides a state the vc-merge capable ATM LSRs. In section 3, we provides a state
machine for downstream unsolicited mode ATM LSRs. machine for downstream unsolicited mode ATM LSRs.
We focus on the LDP state machines and the associated control blocks We focus on the LDP state machines and the associated control blocks
used for establishing and maintaining LSPs. We do not describe state used for establishing and maintaining LSPs. We do not describe state
machines for the "LDP controller" which is in charge of LDP session machines for the "LDP controller" that is in charge of LDP session
initialization, address mapping messages management, routing initialization, address mapping messages management, routing
interface, etc. which is defined in the LDP specification [4]. interface, etc. that is defined in the LDP specification.
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. Terminology Table Of Contents
- LDP-REQUEST: LDP Label Request message 1. Terminology ................................................... 4
2. State Machine for Downstream-on-Demand Mode ................... 4
2.1 An LSR's Behavior in the Case of a Next Hop Change ........... 4
2.2. ATM Switch LSR with No VC-merge Capability .................. 5
2.2.1 LSP Control Block .......................................... 5
2.2.2 States ..................................................... 7
2.2.3 Events ..................................................... 8
2.2.4 State Transitions .......................................... 9
2.2.5 State Machine .............................................. 10
2.2.5.1 State -- "IDLE" .......................................... 10
2.2.5.2 State -- "RESPONSE_AWAITED" .............................. 13
2.2.5.3 State -- "ESTABLISHED" ................................... 16
2.2.5.4 State -- "RELEASE_AWAITED" ............................... 21
2.2.6 Handling the Next Hop Change ............................... 23
2.2.6.1 Next Hop Trigger Control Block ........................... 24
2.2.6.2 States ................................................... 24
2.2.6.3 Events ................................................... 24
2.2.6.4 State Transition for next hop change ..................... 25
2.2.6.5 State Machine ............................................ 25
2.2.6.5.1 State -- "IDLE" ........................................ 25
2.2.6.5.2 State -- "NEW_NH_RETRY" ................................ 27
2.2.6.5.3 State -- "NEW_NH_RESPONSE_AWAITED" ..................... 28
2.2.7 LDP Related Message Handling ............................... 29
2.3. ATM Switch LSR with VC-merge ................................ 31
2.3.1 VC-merge ................................................... 31
2.3.2 Control Block .............................................. 31
2.3.3 State Machines for Downstream-on-demand Mode ............. 34
2.3.3.1 State of the Upstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 34
2.3.3.2 Events of the Upstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 35
2.3.3.3 State Transitions of the Upstream LSP Control Block's State
Machine for Downstream-on-demand Mode .................... 36
2.3.3.4 Upstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 37
2.3.3.4.1 State -- "IDLE" ........................................ 37
2.3.3.4.2 State -- "RESPONSE_AWAITED" ............................ 39
2.3.3.4.3 State -- "ESTABLISHED" ................................. 42
2.3.3.4.4 State -- "RELEASE_AWAITED" ............................. 45
2.3.3.5 State of the Downstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 47
2.3.3.6 Events of the Downstream LSP Control Block's State Machine
for Downstream-on-demand Mode ............................ 47
2.3.3.7 State Transitions of the Downstream LSP Control Block's
State Machine for Downstream-on-demand mode .............. 48
- LDP-MAPPING: LDP Label Mapping message 2.3.3.8 Downstream LSP Control Block's State Machine for
Downstream-on-demand Mode ................................ 49
2.3.3.8.1 State -- "IDLE" ........................................ 48
2.3.3.8.2 State -- "RESPONSE_AWAITED" ............................ 50
2.3.3.8.3 State -- "ESTABLISHED" ................................. 52
2.3.3.9 State of the Next_Hop_Trigger_Control_Block's State
Machine for Downstream-on-demand Mode .................... 53
2.3.3.10 Events of the Next_Hop_Trigger_Control_Block's State
Machine for Downstream-on-demand Mode ................... 53
2.3.3.11 State Transitions of the Next_Hop_Trigger_Control_Block's
State Machine for Downstream-on-demand Mode ............. 55
2.3.3.12 State Machine ........................................... 55
2.3.3.12.1 State -- "IDLE" ....................................... 55
2.3.3.12.2 State -- "NEW_NH_RETRY" ............................... 57
2.3.3.12.3 State -- "NEW_NH_RESPONSE_AWAITED" .................... 58
2.3.4 LDP Related Message Processing ............................. 59
3. State Machine for Downstream Unsolicited ...................... 61
3.1 Control Block ................................................ 61
3.2 States of the Upstream LSP Control Block's State Machine
for Downstream Mode .......................................... 62
3.3 Events of the Upstream LSP Control Block's State Machine
for Downstream Mode .......................................... 62
3.4 State Transitions of Upstream LSP Control Block's State
Machine for Downstream Mode .................................. 64
3.5 Upstream LSP Control Block's State Machine for
Downstream Mode .............................................. 65
3.5.1 : State -- "IDLE" .......................................... 65
3.5.2 : State -- "ESTABLISHED" ................................... 66
3.5.3 : State -- "RELEASE_AWAITED" ............................... 67
3.5.4 : State -- "RESOURCE_AWAITED" .............................. 69
3.6 State of the Downstream LSP Control Block's State Machine
for Downstream Mode .......................................... 70
3.7 Events of the Downstream LSP Control Block's State Machine
for Downstream Mode .......................................... 70
3.8 State Transitions of Downstream LSP Control Block's State
Machine for Downstream Mode .................................. 71
3.9 Downstream LSP Control Block's State Machine
for Downstream Mode .......................................... 71
3.9.1 : State -- "IDLE" .......................................... 71
3.9.2 : State -- "ESTABLISHED" ................................... 73
3.10 LDP Related Message Processing for downstream mode .......... 74
4. Security Considerations ....................................... 75
5. Acknowledgements .............................................. 76
6. References .................................................... 76
7. Authors' Address .............................................. 77
8. Full Copyright Statement ...................................... 78
- LDP-WITHDRAW: LDP Label Withdraw message 1. Terminology
- LDP-RELEASE: LDP Label Release message - LDP-REQUEST: LDP Label Request message
- LDP-ABORT: LDP Abort message used to abort a LSP setup. - LDP-MAPPING: LDP Label Mapping message
- LDP-NAK: LDP Notification message used to reject an LDP message. - LDP-WITHDRAW: LDP Label Withdraw message
3. State Machine for Downstream-on-Demand Mode - LDP-RELEASE: LDP Label Release message
In this draft, we provide two sets of state machines: one for the ATM - LDP-ABORT: LDP Abort message used to abort a LSP setup.
LSR which does not have VC-merge capability, and the other for the
ATM LSR which does have VC-merge capability. - LDP-NAK: LDP Notification message used to reject an LDP message.
2. State Machine for Downstream-on-Demand Mode
In this document, we provide two sets of state machines: one for the
ATM LSR that does not have VC-merge capability, and the other for the
ATM LSR that does have VC-merge capability.
State machine descriptions are given in terms of control blocks, State machine descriptions are given in terms of control blocks,
states, events, response actions and state transitions. Control states, events, response actions and state transitions. Control
blocks contain the information that is required to support handling blocks contain the information that is required to support handling
of events. A control block may also contain any additional of events. A control block may also contain any additional
information that is required either of any specific implementation or information that is required either of any specific implementation or
in support of other required functions. In every case, additional in support of other required functions. In every case, additional
information required to support the procedures defined in the LDP information required to support the procedures defined in the LDP
specification [4] or management objects defined in the LDP MIB [3] specification [4] or management objects defined in the LDP MIB [3]
would be stored in a specific LDP implementation - either as part of would be stored in a specific LDP implementation - either as part of
the control block structure or in some other way. 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.
Loop detection and loop prevention messages will be processed as Loop detection and loop prevention messages will be processed as
specified in [4]. The impact of loop detection and loop prevention specified in [4]. The impact of loop detection and loop prevention
messages on state transitions is left for further study. messages on state transitions is left for further study.
3.1 An LSR's Behavior in the Case of a Next Hop Change 2.1 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 (CR-LDP[5]), 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.
LSR may decide to send an LDP-MAPPING containing attributes for this The LSR may decide to send an LDP-MAPPING containing attributes
New Next Hop (NH) that have changed. for this New Next Hop (NH) that have changed.
3.2. ATM Switch LSR with No VC-merge Capability 2.2. ATM Switch LSR with No VC-merge Capability
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 LSRs capability, downstream-on-demand mode is required for these ATM LSRs
[1]. Also, "conservative label retention mode" is required in this [1]. Also, "conservative label retention mode" is required in this
case [1]. case [1].
For each LSP, there are 2 kinds of state machines involved: For each LSP, there are 2 kinds of state machines involved:
1) the LSP Control Block and its state machine which can be used to 1) the LSP Control Block and its state machine that 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
LDP Request and it is deleted when the LSP of this request is torn new LDP Request and it is deleted when the LSP of this request is
down. torn 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 that 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. This state machine uses a timer (and over to the better next hop. This state machine uses a timer (and
has corresponding states) to ensure that switch over occurs in a has corresponding states) to ensure that switch over occurs in a
timely fashion after a routing transient has had time to stabilize. timely fashion after a routing transient has had time to
stabilize.
3.2.1 LSP Control Block 2.2.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 that may contain the
following information: following information:
- Upstream Label Request ID (assigned by the upstream LSR), which - Upstream Label Request ID (assigned by the upstream LSR), that
is the 'Message Id' in the Label Request Message received from the is the 'Message Id' in the Label Request Message received from
upstream LSR. the upstream LSR.
- Downstream Label Request ID (assigned by this LSR itself), which
is 'Message Id' in the Label Request Message sent to the downstream
LSR.
- Upstream LDP Identifier - Downstream Label Request ID (assigned by this LSR itself), that
is 'Message Id' in the Label Request Message sent to the
downstream LSR.
- Downstream LDP Identifier - Upstream LDP Identifier
- State - Downstream LDP Identifier
- FEC - State
- Upstream Label (assigned by this LSR) - FEC
- 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
LSP) that points to the control block that triggers setting up this a LSP) that points to the control block that triggers setting
LSP or tearing down this LSP. up this LSP or tearing down this LSP.
- Next Hop Control Block Pointer, which points to the control block - Next Hop Control Block Pointer, that points to the control
which is used for switching over to a better LSP. block that is used for switching over to a better LSP.
The following index combinations can be used to locate a unique LSP The following index combinations can be used to locate a unique LSP
Control Block: 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 - 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 Control Block is described in section definition of Next Hop Trigger Control Block is described in section
3.2.6. 2.2.6.
For example, an LSP which transit through (LSR-A, LSR-B, LSR-C, LSR- For example, an LSP that transits 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) |
+-----------------------+ +-----------------------+
skipping to change at page 7, line 22 skipping to change at page 7, line 5
|(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 Trigger Control Block Pointer) Control | | (Next Hop Trigger 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
+------------------------+ +------------------------+
| LSP Control Block | | LSP Control Block |
| (for LSP: LSR-B, LSR-E,| | (for LSP: LSR-B, LSR-E,|
| LSR-D) | | LSR-D) |
+------------------------+ +------------------------+
2.2.2 States
3.2.2 States
This section describes the various states that are used in the state This section describes the various states that are used in the state
machine for the ATM non VC-merge LSR. machine for the ATM non VC-merge LSR.
-- 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.
LSR is waiting for the LDP-MAPPING from the downstream LSR. The LSR is waiting for the LDP-MAPPING from the downstream LSR.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING from the This state means that the LSR has received the LDP-MAPPING 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 upstream and is This state means that the LSR has sent a LDP-WITHDRAW upstream and is
waiting for the LDP-RELEASE before freeing up the label resource. waiting for the LDP-RELEASE before freeing up the label resource.
3.2.3 Events 2.2.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.
-- LDP Release -- LDP Release
skipping to change at page 9, line 27 skipping to change at page 8, line 51
engineering tunnel, or recognizing a new FEC could trigger an engineering tunnel, or recognizing a new FEC could trigger an
Internal SetUp event to set up a new LSP from this node. Internal SetUp event to set up a new LSP from this node.
-- Internal Destroy -- Internal Destroy
The LSR send an Internal Destroy event to tear down an LSP. The LSR send an Internal Destroy event to tear down an LSP.
-- Internal Cross-Connect -- Internal Cross-Connect
The LSR send an Internal Cross-Connect to splice two LSPs into one The LSR send an Internal Cross-Connect to splice two LSPs into one
LSP. This happens when a LSR switchs over to a better next hop LSP. This happens when a LSR switches over to a better next hop.
-- Internal New NH -- Internal New NH
The LSR decides to switch over the better next hop. The LSR decides to switch over the better next hop.
3.2.4 State Transitions 2.2.4 State Transitions
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 Request 1) | | (LDP Release) |(LDP Upstream |(LDP Request 1) | | (LDP Release)
| Abort |(Internal SetUp) | | (Upstream Lost) | Abort |(Internal SetUp) | | (Upstream Lost)
|(Internal Destroy) | | | |(Internal Destroy) | | |
|(Upstream Lost) v | | |(Upstream Lost) v | |
| +-------------------+ | | | +-------------------+ | |
+---------| | | | +---------| | | |
| RESPONSE_AWAITED | | | | RESPONSE_AWAITED | | |
+---------| | | | +---------| | | |
| +-------------------+ | | | +-------------------+ | |
| | | | | | | |
|(Downstream Lost) |(LDP Mapping) | | |(Downstream Lost) |(LDP Mapping) | |
|(LDP Downstream | | | |(LDP Downstream | | |
| NAK) | +---------------+ | | NAK) | +---------------+ |
| | | (LDP Request 2) | | | | (LDP Request 2) |
| | | | | | | |
| v v | | v v |
| +-------------------+ (LDP Withdraw 1) | | +-------------------+ (LDP Withdraw 1) |
| | | (Internal Destroy) | | | | (Internal Destroy) |
| | ESTABLISHED |------------>-------+ | | ESTABLISHED |------------>-------+
| | | | | | | |
| +-------------------+ | | +-------------------+ |
| | | | | |
| | | | | |
| |(LDP Withdraw 2) | (LDP Upstream | |(LDP Withdraw 2) | (LDP Upstream
| |(Downstream Lost) | Abort) | |(Downstream Lost) | Abort)
| | | | | |
| v | | v |
| +-------------------+ | | +-------------------+ |
| | | | | | | |
+-------->| RELEASE_AWAITED |------------>-------+ +-------->| RELEASE_AWAITED |------------>-------+
| | | |
+-------------------+ +-------------------+
3.2.5 State Machine 2.2.5 State Machine
3.2.5.1 State -- "IDLE"
State: IDLE 2.2.5.1 State -- "IDLE"
Event: LDP Request State: IDLE
New State: Depends upon the action routine. Event: LDP Request
Actions: New State: Depends upon the action routine.
If this LSR is the LSP Egress or Proxy Egress [2] Actions:
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
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, propagate the LDP-REQUEST, with newly assigned Message LDP-REQUEST, propagate the LDP-REQUEST, with newly assigned
ID by this LSR, towards the obtained next hop, and go to the new Message ID by this LSR, towards the obtained next hop, and go to
state `RESPONSE_AWAITED'. the new state `RESPONSE_AWAITED'.
If the LSR uses the independent control mode [2], 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, go to the ESTABLISHED state and send an LDP- forwarding module, go to the ESTABLISHED state and send an LDP-
MAPPING upstream with the upstream label. MAPPING upstream with the upstream label.
If unable to process the request for any reason, issue an LDP-NAK to If unable to process the request for any reason, issue an LDP-NAK to
the sender with the appropriate error code, go to IDLE and delete the the sender with the appropriate error code, go to IDLE and delete the
LSP Control Block. LSP Control 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.
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.
State: IDLE State: IDLE
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 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
hop, and go to the new state `RESPONSE_AWAITED'. next 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.
State: IDLE State: IDLE
Event: Internal Cross-Connect Event: Internal Cross-Connect
New State: 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 New NH Event: Internal New NH
New State: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
3.2.5.2 State -- "RESPONSE_AWAITED" 2.2.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:
Ignore the event. It is an internal implementation error. A non VC Ignore the event. It is an internal implementation error. A non
merge ATM LSR must create a new LSP control block for a new LDP VC merge ATM LSR must create a new LSP control block for a new LDP
request. request.
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
Pointer is not zero), send event `Internal LSP UP' to the Trigger Block Pointer is not zero), send event `Internal LSP UP' to the
control block. Trigger 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
label. upstream label.
3) Connect the upstream label to the downstream label. Allocate the 3) Connect the upstream label to the downstream label. Allocate
resources. Propagate the LDP-MAPPING upstream with the upstream the resources. Propagate the LDP-MAPPING upstream with the
label. upstream label.
If unable to process the message, disconnect the upstream label from If unable to process the message, disconnect the upstream label
the downstream label, free the upstream label, release the resources, from the downstream label, free the upstream label, release the
send an LDP-RELEASE downstream and an LDP-NAK upstream with status resources, send an LDP-RELEASE downstream and an LDP-NAK upstream
(No Label Resources [4]), go to IDLE and delete the LSP Control with status (No Label Resources [4]), go to IDLE and delete the
Block. LSP Control Block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: LDP Release
New State: IDLE Event: LDP Release
Actions: New State: IDLE
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 downstream, go to IDLE and delete the LSP Control Send an LDP-ABORT downstream, go to IDLE and delete the LSP
Block. Control Block.
Note: This should only occur if the LSR uses the independent control Note: This should only occur if the LSR uses the independent
mode. In the ordered control mode, no upstream label mapping will control mode. In the ordered control mode, no upstream label
have been sent corresponding to this LSP while waiting for a label mapping will have been sent corresponding to this LSP while
mapping from downstream. 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.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
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 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
Pointer is not zero), send event `Internal LSP DOWN' to the Trigger Block Pointer is not zero), send event `Internal LSP DOWN' to
control block, go to IDLE and delete the LSP Control Block. the Trigger control block, go to IDLE and delete the LSP
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 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 upstream, If the LSR uses the ordered control mode, send an LDP-NAK
go to IDLE and delete the LSP Control Block. upstream, go to IDLE and delete the LSP 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
label. label.
Send an LDP-ABORT downstream, go to IDLE and delete the LSP Control Send an LDP-ABORT downstream, go to IDLE and delete the LSP
Block. Control Block.
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
Pointer is not zero), send event `Internal LSP DOWN' to the trigger Block Pointer is not zero), send event `Internal LSP DOWN' to
control block, go to IDLE and delete the LSP Control Block. the trigger control block, go to IDLE and delete the LSP
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
`RELEASE_AWAITED'. state `RELEASE_AWAITED'.
If the LSR uses the ordered control mode, send an LDP-NAK upstream If the LSR uses the ordered control mode, send an LDP-NAK upstream
(with a status `No Route' [4]), go to IDLE and delete the LSP Control (with a status `No Route' [4]), go to IDLE and delete the LSP
Block. Control Block.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Internal SetUp
New State: RESPONSE_AWAITED Event: Internal SetUp
Actions: New State: RESPONSE_AWAITED
Ignore, it is an internal implementation error. Actions:
State: RESPONSE_AWAITED Ignore, it is an internal implementation error.
Event: Internal Destroy State: RESPONSE_AWAITED
New State: IDLE Event: Internal Destroy
Actions: New State: IDLE
Send an LDP-ABORT downstream, go to IDLE and delete the LSP Control Actions:
Block.
State: RESPONSE_AWAITED Send an LDP-ABORT downstream, go to IDLE and delete the LSP
Control Block.
Event: Internal Cross-Connect State: RESPONSE_AWAITED
New State: RESPONSE_AWAITED Event: Internal Cross-Connect
Actions: New State: RESPONSE_AWAITED
Ignore the event. It is an internal implementation error. Actions:
State: RESPONSE_AWAITED Ignore the event. It is an internal implementation error.
Event: Internal New NH State: RESPONSE_AWAITED
New State: RESPONSE_AWAITED Event: Internal New NH
Actions: New State: RESPONSE_AWAITED
Send LDP-ABORT to the old downstream, and send LDP-REQUEST to the new Actions:
next hop.
3.2.5.3 State -- "ESTABLISHED" Send LDP-ABORT to the old downstream, and send LDP-REQUEST to the
new next hop.
State: ESTABLISHED 2.2.5.3 State -- "ESTABLISHED"
Event: LDP Request State: ESTABLISHED
New State: ESTABLISHED Event: LDP Request
Actions: New State: ESTABLISHED
Ignore the event. It's an internal implementation error. For non Actions:
VC-merge ATM LSR, a new LSP control block is always created for each
LDP request.
State: ESTABLISHED 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 request.
Event: LDP Mapping State: ESTABLISHED
New State: ESTABLISHED Event: LDP Mapping
Actions: New State: ESTABLISHED
Process the LDP-MAPPING, which may contain the new attributes of the Actions:
label mapping and then propagate the LDP-MAPPING upstream.
State: ESTABLISHED Process the LDP-MAPPING, that may contain the new attributes of
the label mapping and then propagate the LDP-MAPPING upstream.
Event: LDP Release State: ESTABLISHED
New State: IDLE Event: LDP Release
Actions: New State: IDLE
Disconnect the upstream label from the downstream label. Actions:
Free the upstream label. Disconnect the upstream label from the downstream label.
Free the resources. Free the upstream label.
Send event `Internal Destroy' to the Next Hop Trigger Control Block Free the resources.
if it was in the middle of switching over to the better next hop.
Propagate the LDP-RELEASE downstream if the LSR is not the egress for Send event `Internal Destroy' to the Next Hop Trigger Control
the LSP, go to IDLE and delete the LSP Control Block. Block if it was in the middle of switching over to the better next
hop.
State: ESTABLISHED Propagate the LDP-RELEASE downstream if the LSR is not the egress
for the LSP, go to IDLE and delete the LSP Control Block.
Event: LDP Withdraw State: ESTABLISHED
New State: Depends on the action routine. Event: LDP Withdraw
Actions: New State: Depends on the action routine.
1) Free the resources and send LDP-RELEASE downstream. Actions:
2) If it is independent control mode, set the state to `IDLE', create 1) Free the resources and send LDP-RELEASE downstream.
a internal LDP Request with the information in the LSP Control Block,
and pass event `LDP Request' to its own state machine.
3) Else for the ordered control mode 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, and pass event `LDP Request' to its own state
machine.
3.1) If the LSP is triggered to be setup by itself (e.g it is the 3) Else for the ordered control mode
ingress LSR of this LSP), send event `Internal LSP Down' to the
trigger control block, go to IDLE and delete the LSP Control Block.
3.2) Else, if it is triggered by the incoming LDP Request, 3.1) If the LSP is triggered to be setup by itself (e.g it is
Disconnect the upstream label from the downstream label. Propagate the ingress LSR of this LSP), send event `Internal LSP
the LDP-WITHDRAW upstream and go to state `RELEASE_AWAITED'. Down' to the trigger control block, go to IDLE and delete
the LSP Control Block.
3.3) If the LSP is in the middle of switching over to a better LSP, 3.2) Else, if it is triggered by the incoming LDP Request,
send event `Internal Destroy' to the state machine of its New Next Disconnect the upstream label from the downstream label.
Hop LSP Control Block, go to IDLE and delete the LSP Control Block. Propagate the LDP-WITHDRAW upstream and go to state
`RELEASE_AWAITED'.
State: ESTABLISHED 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 Hop LSP Control Block, go to IDLE and delete
the LSP Control Block.
Event: LDP Upstream Abort State: ESTABLISHED
New State: ESTABLISHED Event: LDP Upstream Abort
Actions: New State: ESTABLISHED
Ignore the event. Actions:
Note: This scenario can occur if the upstream LSR sends a LDP-ABORT Ignore the event.
at about the same time as the local LSR sends a LDP-MAPPING. In this
situation, it should be up to exactly one of the two LSRs as to
whether or not the label that was sent remains valid. The LDP
specification [4] procedures leave the choice to the upstream LSR
which must send an LDP-RELEASE if it will not use the label provided.
State: ESTABLISHED Note: This scenario can occur if the upstream LSR sends a LDP-
ABORT at about the same time as the local LSR sends a LDP-MAPPING.
In this situation, it should be up to exactly one of the two LSRs
as to whether or not the label that was sent remains valid. The
LDP specification [4] procedures leave the choice to the upstream
LSR that must send an LDP-RELEASE if it will not use the label
provided.
Event: LDP Downstream NAK State: ESTABLISHED
New State: ESTABLISHED Event: LDP Downstream NAK
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 to tear down the LSP The downstream LSR should always LSP-WITHDRAW to tear down the LSP
when the LSP is established. when the LSP is established.
State: ESTABLISHED State: ESTABLISHED
Event: Upstream Lost
New State: IDLE Event: Upstream Lost
Actions: New State: IDLE
Disconnect the upstream label from the downstream label. Actions:
Free the upstream label. Disconnect the upstream label from the downstream label.
Send event `Internal Destroy' to the Next Hop Trigger Control Block Free the upstream label.
if it was in the middle of switching over to the better next hop.
Free the resources. 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.
Propagate an LDP-RELEASE downstream, go to IDLE and delete the LSP Free the resources.
Control Block.
State: ESTABLISHED Propagate an LDP-RELEASE downstream, go to IDLE and delete the LSP
Control Block.
Event: Downstream Lost State: ESTABLISHED
New State: Depends on the action routine. Event: Downstream Lost
Actions: New State: Depends on the action routine.
1) If the LSP is triggered by the local router (Trigger Control Block Actions:
Pointer is not zero), send event `Internal LSP NAK' to the Trigger
control block, go to IDLE and delete the LSP Control Block.
2) Else, disconnect the upstream label from the downstream label. 1) If the LSP is triggered by the local router (Trigger Control
Propagate an LDP-WITHDRAW upstream and go to `RELEASE_AWAITED' state. Block Pointer is not zero), send event `Internal LSP NAK' to
the Trigger control block, go to IDLE and delete the LSP
Control Block.
3) Send event `Internal Destroy' to the Next Hop Trigger Control 2) Else, disconnect the upstream label from the downstream label.
Block if it was in the middle of switching over to the better next Propagate an LDP-WITHDRAW upstream and go to `RELEASE_AWAITED'
hop. state.
State: ESTABLISHED 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 hop.
Event: Internal Setup State: ESTABLISHED
New State: ESTABLISHED Event: Internal Setup
Actions: New State: ESTABLISHED
Ignore, it is an internal implementation error. Actions:
State: ESTABLISHED Ignore, it is an internal implementation error.
Event: Internal Destroy State: ESTABLISHED
New State: IDLE Event: Internal Destroy
Actions: New State: IDLE
Disconnect the upstream label from the downstream label if it is not Actions:
the ingress of the LSP.
Free the resources. Disconnect the upstream label from the downstream label if it is
not the ingress of the LSP.
Send an LDP-RELEASE downstream, go to IDLE and delete the LSP Control Free the resources.
Block.
State: ESTABLISHED Send an LDP-RELEASE downstream, go to IDLE and delete the LSP
Control Block.
Event: Internal Cross-Connect State: ESTABLISHED
New State: ESTABLISHED Event: Internal Cross-Connect
Actions: New State: ESTABLISHED
Connect the upstream label to the downstream label Actions:
May need to send a new LDP-MAPPING upstream with the attributes from Connect the upstream label to the downstream label
the new next hop.
Reset Trigger Control Block Pointer to zero. May need to send a new LDP-MAPPING upstream with the attributes
from the new next hop.
State: ESTABLISHED Reset Trigger Control Block Pointer to zero.
Event: Internal New NH State: ESTABLISHED
New State: ESTABLISHED Event: Internal New NH
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
`Internal New NH' to that control block. send `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 to point to this control block,
then pass `Internal New NH' to this control block. and pass 'Internal New NH' to this control block.
3.2.5.4 State -- "RELEASE_AWAITED" 2.2.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 a protocol error from the downstream LDP peer, but anyway send It is a protocol error from the downstream LDP peer, but anyway
a LDP-RELEASE downstream. send 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 a protocol error from the downstream LDP peer, but send a
LDP- RELEASE anyway.
It is a protocol error from the downstream LDP peer, but send a LDP- State: RELEASE_AWAITED
RELEASE anyway.
State: RELEASE_AWAITED Event: LDP Upstream Abort
Event: LDP Upstream Abort
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.2.6 Handling the Next Hop Change 2.2.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.2.6.1 Next Hop Trigger Control Block 2.2.6.1 Next Hop Trigger Control Block
-- State -- State
-- LSP Control Block Pointer, which points to the original LSP -- LSP Control Block Pointer, that points to the original LSP control
control block. block.
-- New Next Hop LSP Control Block Pointer, which points to the LSP -- New Next Hop LSP Control Block Pointer, that 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.2.6.2 States 2.2.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. LDP-MAPPING.
3.2.6.3 Events 2.2.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.
-- Internal LSP UP -- Internal LSP UP
skipping to change at page 25, line 38 skipping to change at page 25, line 4
The LSP retry timer expires. The LSP retry timer expires.
-- Internal LSP UP -- Internal LSP UP
The LSP to the new Next Hop is UP The LSP to the new Next Hop is UP
-- Internal LSP NAK -- Internal LSP NAK
The LSP through the new next hop could not get set up The LSP through the new next hop could not get set up
-- Internal Destroy -- Internal Destroy
This event is triggered when the LSR lost the LDP session with its This event is triggered when the LSR lost the LDP session with its
upstream neighbor. upstream neighbor.
3.2.6.4 State Transition for next hop change 2.2.6.4 State Transition for next hop change
+---------------------+
| |
| IDLE |<------------+
| | |
+---------------------+ |
| |
| |
| (Internal New NH) |
| |
v |
+---------------------+ |
| | |
| NEW_NH_RETRY |----------->-+
| | (Internal |
+---------------------+ Destroy) |
| |
| |
| (Internal retry timeout) |
| |
v |
+---------------------+ |
| | (Internal |
| NEW_NH_RESPONSE | Destroy) |
| _AWAITED |----------->-+
| | |
+---------------------+ |
| |
| (Internal LSP UP) |
| (Internal LSP NAK) |
+------------------------>-+
3.2.6.5 State Machine +---------------------+
| |
| IDLE |<------------+
| | |
+---------------------+ |
| |
| |
| (Internal New NH) |
| |
v |
+---------------------+ |
| | |
| NEW_NH_RETRY |----------->-+
| | (Internal |
+---------------------+ Destroy) |
| |
| |
| (Internal retry timeout) |
| |
v |
+---------------------+ |
| | (Internal |
| NEW_NH_RESPONSE | Destroy) |
| _AWAITED |----------->-+
| | |
+---------------------+ |
| |
| (Internal LSP UP) |
| (Internal LSP NAK) |
+------------------------>-+
3.2.6.5.1 State -- "IDLE" 2.2.6.5 State Machine
State: IDLE 2.2.6.5.1 State -- "IDLE"
Event: Internal New NH State: IDLE
New State: NEW_NH_RETRY Event: Internal New NH
Actions: New State: NEW_NH_RETRY
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 State: 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 State: 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 State: 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 State: IDLE New State: IDLE
Actions: Actions:
Ignore. It is an internal implementation error. Ignore. It is an internal implementation error.
3.2.6.5.2 State -- "NEW_NH_RETRY" 2.2.6.5.2 State -- "NEW_NH_RETRY"
State: NEW_NH_RETRY State: NEW_NH_RETRY
Event: Internal New NH Event: Internal New NH
New State: NEW_NH_RETRY New State: NEW_NH_RETRY
Actions:
Restart the LSP retry timer. Actions:
State: NEW_NH_RETRY Restart the LSP retry timer.
Event: Internal retry timeout State: NEW_NH_RETRY
New State: Depends on action routine. Event: Internal retry timeout
Actions: New State: Depends on action routine.
If the new next hop is the same one as the old next hop, go to IDLE Actions:
and delete the control block.
Otherwise, create an LSP control block which will try to establish a If the new next hop is the same one as the old next hop, go to
new LSP through the new next hop, send event `Internal Setup' to its IDLE and delete the control block.
state machine and go to NEW_NH_RESPONSE_AWAITED.
State: NEW_NH_RETRY Otherwise, create an LSP control block that will try to establish
a new LSP through the new next hop, send event `Internal Setup' to
its state machine and go to NEW_NH_RESPONSE_AWAITED.
Event: Internal LSP UP State: NEW_NH_RETRY
New State: NEW_NH_RETRY Event: Internal LSP UP
Actions: New State: NEW_NH_RETRY
Ignore. It is an internal implementation error. Actions:
State: NEW_NH_RETRY Ignore. It is an internal implementation error.
Event: Internal LSP NAK State: NEW_NH_RETRY
New State: NEW_NH_RETRY Event: Internal LSP NAK
Actions: New State: NEW_NH_RETRY
Ignore. It is an internal implementation error. Actions:
State: NEW_NH_RETRY Ignore. It is an internal implementation error.
Event: Internal destroy State: NEW_NH_RETRY
Event: Internal destroy
New State: IDLE New State: IDLE
Actions: Actions:
Stop the timer, go to IDLE and delete the control block. Stop the timer, go to IDLE and delete the control block.
3.2.6.5.3 State -- "NEW_NH_RESPONSE_AWAITED" 2.2.6.5.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 State: 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
block of the LSP for the new next hop and go to the `NEW_NH_RETRY' control block of the LSP for the new next hop and go to the
state. `NEW_NH_RETRY' state.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal retry timeout Event: Internal retry timeout
New State: 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 State: 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
the new next hop. of 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 go to IDLE and delete the control block. Then go to IDLE and delete the control block.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal LSP NAK Event: Internal LSP NAK
New State: 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 State: 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.2.7 LDP Related Message Handling 2.2.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 message. A duplicate a) If this is a duplicate request, discard the message. A
request means that there is a LSP Control Block which has same FEC, duplicate request means that there is a LSP Control Block that
same Upstream Label Request ID and same Upstream LDP Session has the same FEC, Upstream Label Request ID and Upstream Label
Identifier. Request ID and same Upstream LDP Session 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
event `LDP Request' to its state machine. the 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. MAPPING.
b) Find an LSP Control Block which has the same Downstream Label b) Find an LSP Control Block that 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'
its state machine. to 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
an LSP Control Block which has the same Downstream Label and the same find an LSP Control Block that has the same Downstream Label
Downstream LDP Session Identifier. and the same 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'
its state machine. to its state machine.
f) Otherwise, ignore the LDP-MAPPING and send a LDP-RELEASE f) Otherwise, ignore the LDP-MAPPING and send a LDP-RELEASE
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 that 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'
its state machine. to 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 that has the same Downstream Label
the same Downstream LDP Session Identifier. and 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'
its state machine. to its state machine.
c) Otherwise, ignore the LDP-WITHDRAW and send a LDP-RELEASE c) Otherwise, ignore the LDP-WITHDRAW and send a LDP-RELEASE
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
LSR. that 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 that needs "local repair", or it needs "global
and it is the ingress of the LSP, pass event "Internal New NH" to its repair" and it is the ingress of the LSP, pass event "Internal New
state machine. NH" to its 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 that 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 that 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 Downstream c) If an LSP Control Block is found, pass the event `LDP
NAK' to its state machine. Downstream NAK' to its state machine.
d) Otherwise, ignore the message. d) Otherwise, ignore the message.
3.3. ATM Switch LSR with VC-merge 2.3. ATM Switch LSR with VC-merge
3.3.1 VC-merge 2.3.1 VC-merge
A VC-merge capable LSR can map multiple incoming labels (VPI/VCI) A VC-merge capable LSR can map multiple incoming labels (VPI/VCI)
into one outgoing label. It is possible that this LSR can only merge into one outgoing label. It is possible that this LSR can only merge
a 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 [2], 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
six incoming labels arriving at it for a particular FEC. In this has 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.3.2 Control Block 2.3.2 Control Block
There are 3 types of control blocks involved: Upstream LSP Control There are 3 types of control blocks involved: Upstream LSP Control
Block, Downstream LSP Control Block, and Next Hop Trigger Control Block, Downstream LSP Control Block, and Next Hop Trigger Control
Block. 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-REQUEST There is one Downstream LSP Control Block for each unique LDP-REQUEST
sent to a downstream LSR. There can be multiple Downstream LSP sent to a downstream LSR. There can be multiple Downstream LSP
Control Blocks per FEC in an LSR. This can be the result of an Control Blocks per FEC in an LSR. This can be the result of an
upstream LSR asking for a label for an FEC. This LSR must assign a upstream LSR asking for a label for an FEC. This LSR must assign a
unique upstream label and it can not merge this upstream label into unique upstream label and it can not merge this upstream label into
an existing downstream label for this FEC. an existing downstream label for this FEC.
There is one Next Hop Trigger Control Block for each FEC for which a There is one Next Hop Trigger Control Block for each FEC for which a
better next hop has been detected and the LSR has decided to switch better next hop has been detected and the LSR has decided to switch
to 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 Downstream LSP Control Block into a single label listed in the Downstream LSP
Control Block. 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.
An Next_Hop_Trigger LSP Control Block may contain the following An Next_Hop_Trigger LSP Control Block may contain the following
information: information:
- Upstream LSP Control Block pointer, which points to the one - Upstream LSP Control Block pointer, that points to the one that
which is needed to switch over to the better next hop is needed to switch over to the better next hop
- State - State
- Downstream LSP Control Block pointer
- Downstream LSP Control Block pointer
A Downstream LSP Control Block may contain the following information: A Downstream LSP Control Block may contain the following information:
- FEC - FEC
- State - State
- Downstream LDP Session Identifier - Downstream LDP Session Identifier
- list of pointers to the Upstream LSP Control Blocks or the - list of pointers to the Upstream LSP Control Blocks or the
Trigger_Control_Blocks which are merged at this LSR for this Trigger_Control_Blocks that are merged at this LSR for this FEC
FEC
- Downstream Label (assigned by the downstream LSR) - Downstream Label (assigned by the downstream LSR)
- Downstream Label Request ID (assigned by the LSR itself if - Downstream Label Request ID (assigned by the LSR itself if it
it is using downstream-on-demand mode) is using downstream-on-demand mode)
Downstream Label, Downstream LDP Session Identifier can be used to Downstream Label, Downstream LDP Session Identifier can be used to
locate a unique Downstream LSP Control Block. locate a unique Downstream LSP Control Block.
If an LSR is using downstream-on-demand mode, it can also use the If an LSR is using downstream-on-demand mode, it can also use the
Downstream Label Request ID and the Downstream LDP Session Identifier Downstream Label Request ID and the Downstream LDP Session Identifier
to locate a unique Downstream LSP Control Block. to locate a unique Downstream LSP Control Block.
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 | +---------------------+ +--->| Downstream LSP Control Block |
| Next_Hop_Trigger_ | | | for Downstream LSR4 | | Next_Hop_Trigger_ | | | for Downstream LSR4 |
| LSP Control Block |------+ | | | LSP Control Block |------+ | |
| | +------------------------------+ | | +------------------------------+
+---------------------+ +---------------------+
3.3.3 State Machines for Downstream-on-demand Mode 2.3.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.3.3.1 State of the Upstream LSP Control Block's State Machine 2.3.3.1 State of the Upstream LSP Control Block's State Machine for
for Downstream-on-demand Mode 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 from the a downstream LSR. The LSR is waiting for the LDP-MAPPING from the
downstream LSR. downstream LSR.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING from the This state means that the LSR has received the LDP-MAPPING 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 upstream and is This state means that the LSR has sent a LDP-WITHDRAW upstream and is
waiting for the LDP-RELEASE before freeing up the label resource. waiting for the LDP-RELEASE before freeing up the label resource.
3.3.3.2 Events of the Upstream LSP Control Block's State Machine 2.3.3.2 Events of the Upstream LSP Control Block's State Machine for
for Downstream-on-demand Mode 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 Downstream machine. This Downstream LSP Control Block is the merged Downstream
LSP Control Block of this Upstream LSP Control Block. The event is LSP Control Block of this Upstream LSP Control Block. The event is
the result of receiving an LDP-MAPPING by the Downstream LSP Control the result of receiving an LDP-MAPPING by the Downstream LSP Control
Block's state machine. 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 Downstream machine. This Downstream LSP Control Block is the merged Downstream
LSP Control Block of this Upstream LSP Control Block. The event is LSP Control Block of this Upstream LSP Control Block. The event is
the result of receiving an LDP-WITHDRAW by the Downstream LSP Control the result of receiving an LDP-WITHDRAW by the Downstream LSP Control
Block's state machine. 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 Downstream machine. This Downstream LSP Control Block is the merged Downstream
LSP Control Block of this Upstream LSP Control Block. The event is LSP Control Block of this Upstream LSP Control Block. The event is
the result of receiving an LDP-NAK by the Downstream LSP Control the result of receiving an LDP-NAK by the Downstream LSP Control
Block's state machine, or it detects an error. 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.
-- Internal Re-Cross-Connect -- Internal Re-Cross-Connect
This event is used to trigger splicing into a different downstream This event is used to trigger splicing into a different downstream
LSP. This can happens when it is switched over to a better LSP LSP. This can happens when it is switched over to a better LSP
through the new next hop. through the new next hop.
3.3.3.3 State Transitions of the Upstream LSP Control Block's State 2.3.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) | |(Upstream Lost) | (Upstream Lost) |
skipping to change at page 38, line 44 skipping to change at page 37, line 5
| | | |
|(Internal Downstream Withdraw) | |(Internal Downstream Withdraw) |
|(Internal Downstream NAK) | |(Internal Downstream NAK) |
v | v |
+-------------------+ (LDP Upstream | +-------------------+ (LDP Upstream |
| | Abort) | | | Abort) |
|RELEASE_AWAITED |------->------------+ |RELEASE_AWAITED |------->------------+
| | | |
+-------------------+ +-------------------+
3.3.3.4 Upstream LSP Control Block's State Machine 2.3.3.4 Upstream LSP Control Block's State Machine for Downstream-on-
for Downstream-on-demand Mode demand Mode
3.3.3.4.1 State -- "IDLE"
State: IDLE
Event: LDP Request 2.3.3.4.1 State -- "IDLE"
New State: Depends upon the action routine. State: IDLE
Actions: Event: LDP Request
If this LSR is the LSP Egress or Proxy Egress [2], New State: Depends upon the action routine.
Then: Actions:
choose an upstream label, allocate the resources, connect this If this LSR is the LSP Egress or Proxy Egress [2],
upstream label to the local IP forwarding module, send an LDP-
MAPPING upstream with the upstream label and go to the state
`ESTABLISHED'.
else Then:
choose an upstream label, allocate the resources, connect this
upstream label to the local IP forwarding module, send an LDP-
MAPPING upstream with the upstream label and go to the state
`ESTABLISHED'.
Obtain a next hop (or interface). Find a Downstream LSP Control else
Block which has the same FEC and the same next hop and also is able Obtain a next hop (or interface). Find a Downstream LSP
to merge more input labels. If not found, create a new Downstream Control Block that has the same FEC and the same next hop and
LSP Control Block with the state `IDLE'. also is able to merge more input labels. If not found, 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
choose an upstream label, connect the upstream label with the `ESTABLISHED', choose an upstream label, connect the upstream
downstream label and send an LDP-MAPPING upstream with the upstream label with the downstream label and send an LDP-MAPPING
label, and go to the state `ESTABLISHED'. upstream with the upstream 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
set the state of the Upstream LSP Control Block to `ESTABLISHED', set the state of the Upstream LSP Control Block
`RESPONSE_AWAITED'. If the LSR use the independent control mode to `RESPONSE_AWAITED'. If the LSR use the independent control
[2], choose an upstream label, and send an LDP-MAPPING upstream. mode [2], choose an upstream label, and send an LDP-MAPPING
upstream.
Pass the event `Internal AddUpstream' to the Downstream LSP Control Pass the event `Internal AddUpstream' to the Downstream LSP
Block's state machine. Control Block's state machine.
If unable to process the request for any reason, issue an LDP-NAK to If unable to process the request for any reason, issue an LDP-NAK
the sender with the appropriate error code, go to IDLE and delete the to the sender with the appropriate error code, go to IDLE and
control block. delete the control 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 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 Withdraw
Event: Internal Downstream 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 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
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 New NH Event: Internal New NH
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.
3.3.3.4.2 State -- "RESPONSE_AWAITED" 2.3.3.4.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:
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 Downstream Mapping Event: Internal Downstream Mapping
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
connect the upstream label to the downstream label and allocate the label, connect the upstream label to the downstream label and
resources, send an LDP-MAPPING upstream with the upstream label and allocate the resources, send an LDP-MAPPING upstream with the
go to `ESTABLISHED'. upstream label and go to `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
upstream and an LDP-RELEASE downstream, go to IDLE and delete the upstream and an LDP-RELEASE downstream, go to IDLE 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 a protocol error from the upstream peer. Ignore the event. It is a protocol error from the upstream peer.
State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Event: Internal Downstream Withdraw Event: Internal Downstream Withdraw
New State: RESPONSE_AWAITED New State: RESPONSE_AWAITED
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: 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
and the resources. label and the resources.
Send the event `Internal DeleteUpstream' to its Downstream LSP Send the event `Internal DeleteUpstream' to its Downstream LSP
Control Block's state machine. 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
and the resources. Then, send an LDP-WITHDRAW upstream. label 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
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
and the resources. label and the resources.
Send the event `Internal DeleteUpstream' to its Downstream LSP Send the event `Internal DeleteUpstream' to its Downstream LSP
Control Block's state machine. 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
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
block.
Send event `Internal DeleteUpstream' to its old downstream control Find a Downstream LSP Control Block that has the same FEC and the
block. 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
`IDLE'.
Find a Downstream LSP Control Block which has the same FEC and the If the state of the Downstream LSP Control Block is `ESTABLISHED',
same next hop and also is able to merge more input labels. If not choose an upstream label, connect the upstream label with the
found, create a new Downstream LSP Control Block with the state downstream label and send an LDP-MAPPING upstream with the
`IDLE'. upstream label, and go to the state `ESTABLISHED'.
If the state of the Downstream LSP Control Block is `ESTABLISHED', If the state of Downstream LSP Control Block is not `ESTABLISHED',
choose an upstream label, connect the upstream label with the set the state of the Upstream LSP Control Block to
downstream label and send an LDP-MAPPING upstream with the upstream `RESPONSE_AWAITED'.
label, and go to the state `ESTABLISHED'.
If the state of Downstream LSP Control Block is not `ESTABLISHED', Pass the event `Internal AddUpstream' to the new Downstream LSP
set the state of the Upstream LSP Control Block to Control Block's state machine.
`RESPONSE_AWAITED'.
Pass the event `Internal AddUpstream' to the new Downstream LSP 2.3.3.4.3 State -- "ESTABLISHED"
Control Block's state machine.
3.3.3.4.3 State -- "ESTABLISHED" State: ESTABLISHED
State: ESTABLISHED Event: LDP Request
Event: LDP Request New State: ESTABLISHED
New State: ESTABLISHED Actions
Actions Ignore the event. It is an internal implementation error.
Ignore the event. It is an internal implementation error. 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
LDP-MAPPING upstream.
Process the new attributes of the mapping and then propagate the State: ESTABLISHED
LDP-MAPPING upstream.
State: ESTABLISHED Event: LDP Release
New State: IDLE
Event: LDP Release Actions
New State: IDLE Disconnect the upstream label from the downstream label, free the
upstream label and resources.
Actions Send the event `Internal DeleteUpstream' to its Downstream LSP
Disconnect the upstream label from the downstream label, free the Control Block's state machine.
upstream label and resources.
Send the event `Internal DeleteUpstream' to its Downstream LSP Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
Control Block's state machine. state machine if the LSR was in the middle of switching over to
the better next hop.
Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's Delete the control block.
state machine if the LSR was in the middle of switching over to the
better next hop.
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
internal `LDP Request' and send to its own state machine.
If it uses independent mode, set its state to `IDLE' and create a Else
internal `LDP Request' and send to its own state machine. Disconnect the upstream label from the downstream label.
Else Propagate the LDP-WITHDRAW upstream and go to state
Disconnect the upstream label from the downstream label. `RELEASE_AWAITED'.
Propagate the LDP-WITHDRAW upstream and go to state Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
`RELEASE_AWAITED'. state machine if the LSR was in the middle of switching over to
the better next hop.
Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's State: ESTABLISHED
state machine if the LSR was in the middle of switching over to the
better next hop.
State: ESTABLISHED Event: LDP Upstream Abort
Event: LDP Upstream Abort New State: ESTABLISHED
New State: ESTABLISHED Actions
Actions Ignore the event.
Ignore the event. Note: This scenario can occur if the upstream LSR sends a LDP-
ABORT at about the same time as the local LSR sends a LDP-MAPPING.
In this situation, it should be up to exactly one of the two LSRs
as to whether or not the label that was sent remains valid. The
LDP specification [4] procedures leave the choice to the upstream
LSR that must send an LDP-RELEASE if it will not use the label
provided.
Note: This scenario can occur if the upstream LSR sends a LDP-ABORT State: ESTABLISHED
at about the same time as the local LSR sends a LDP-MAPPING. In this
situation, it should be up to exactly one of the two LSRs as to
whether or not the label that was sent remains valid. The LDP
specification [4] procedures leave the choice to the upstream LSR
which must send an LDP-RELEASE if it will not use the label provided.
State: ESTABLISHED Event: Internal Downstream NAK
Event: Internal Downstream NAK 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
internal `LDP Request' and send to its own state machine.
If it uses independent mode, set its state to `IDLE' and create a Else
internal `LDP Request' and send to its own state machine. Disconnect the upstream label from the downstream label
Else Send an LDP-WITHDRAW upstream and go to state
Disconnect the upstream label from the downstream label `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
state machine if the LSR was in the middle of switching over to
the better next hop.
Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's State: ESTABLISHED
state machine if the LSR was in the middle of switching over to the
better next hop.
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
upstream label and the resources.
Disconnect the upstream label from the downstream label, free the Send the event `Internal DeleteUpstream' to its Downstream LSP
upstream label and the resources. Control Block's state machine.
Send the event `Internal DeleteUpstream' to its Downstream LSP Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's
Control Block's state machine. state machine if the LSR was in the middle of switching over to
the better next hop.
Send the event `Internal Destroy' to the Next_Hop_Trigger_Block's Delete the control block.
state machine if the LSR was in the middle of switching over to the
better next hop.
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 label to the new downstream label. Reconnect the upstream label to the new downstream label.
Send the event `Internal DeleteUpstream' to its old Downstream LSP Send the event `Internal DeleteUpstream' to its old Downstream LSP
Control Block's state machine. 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 `Internal Create a new Next_Hop_Trigger_Control_Block and pass event
New NH' to its state machine. `Internal New NH' to its state machine.
3.3.3.4.4 State -- "RELEASE_AWAITED" 2.3.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:
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 implementation 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 label 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 label 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.
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 label 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. 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.
3.3.3.5 State of the Downstream LSP Control Block's State Machine 2.3.3.5 State of the Downstream LSP Control Block's State Machine for
for Downstream-on-demand Mode 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 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 from the downstream LSR. MAPPING from the downstream LSR.
-- ESTABLISHED -- ESTABLISHED
This state means that the LSR has received the LDP-MAPPING from the This state means that the LSR has received the LDP-MAPPING from the
downstream LSR and the LSP is up and operational. downstream LSR and the LSP is up and operational.
3.3.3.6 Events of the Downstream LSP Control Block's State Machine 2.3.3.6 Events of the Downstream LSP Control Block's State Machine for
for Downstream-on-demand Mode 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.
skipping to change at page 50, line 18 skipping to change at page 48, line 26
The LSR receives an LDP-WITHDRAW 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.3.3.7 State Transitions of the Downstream LSP Control Block's 2.3.3.7 State Transitions of the Downstream LSP Control Block's State
State Machine for Downstream-on-demand mode 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)
skipping to change at page 50, line 45 skipping to change at page 49, line 5
| | | |
|(LDP Mapping) | |(LDP Mapping) |
| | | |
v | v |
+-------------------+ | +-------------------+ |
| | | | | |
| ESTABLISHED |-------->------+ | ESTABLISHED |-------->------+
| | | |
+-------------------+ +-------------------+
3.3.3.8 Downstream LSP Control Block's State Machine for 2.3.3.8 Downstream LSP Control Block's State Machine for Downstream-on-
Downstream-on-demand Mode. demand Mode.
3.3.3.8.1 State -- "IDLE" 2.3.3.8.1 State -- "IDLE"
State: IDLE
Event: Internal AddUpstream State: IDLE
New State: RESPONSE_AWAITED Event: Internal AddUpstream
Actions New State: RESPONSE_AWAITED
Initialize the list of pointers in the Upstream LSP Control Block to Actions
contain the newly added upstream pointer.
Send a new LDP-REQUEST downstream and go to the state Initialize the list of pointers in the Upstream LSP Control Block
`RESPONSE_AWAITED'. to contain the newly added upstream pointer.
State: IDLE Send a new LDP-REQUEST downstream and go to the state
`RESPONSE_AWAITED'.
Event: Internal DeleteUpstream State: IDLE
New State: IDLE Event: Internal DeleteUpstream
Actions New State: IDLE
Ignore the event. It is an internal implementation error. Actions
State: IDLE Ignore the event. It is an internal implementation error.
Event: LDP Mapping State: IDLE
New State: IDLE Event: LDP Mapping
Actions New State: IDLE
Ignore the event. It is an internal implementation error. Actions
State: IDLE Ignore the event. It is an internal implementation error.
Event: LDP Withdraw State: IDLE
New State: IDLE Event: LDP Withdraw
Actions New State: IDLE
Ignore the event. It is an internal implementation error. Actions
State: IDLE Ignore the event. It is an internal implementation error.
Event: LDP Downstream NAK State: IDLE
New State: IDLE
Actions Event: LDP Downstream NAK
Ignore the event. It is an internal implementation error. New State: IDLE
State: IDLE Actions
Event: Downstream Lost Ignore the event. It is an internal implementation error.
New State: IDLE State: IDLE
Actions Event: Downstream Lost
Ignore the event. It is an internal implementation error. New State: IDLE
3.3.3.8.2 State -- "RESPONSE_AWAITED" Actions
State: RESPONSE_AWAITED Ignore the event. It is an internal implementation error.
Event: Internal AddUpstream 2.3.3.8.2 State -- "RESPONSE_AWAITED"
New State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Actions Event: Internal AddUpstream
Add the pointer to new Upstream LSP Control Block to the Upstream LSP New State: RESPONSE_AWAITED
Control Blocks pointer list.
State: RESPONSE_AWAITED Actions
Event: Internal DeleteUpstream Add the pointer to new Upstream LSP Control Block to the Upstream
LSP Control Blocks pointer list.
New State: Depend on the action routine State: RESPONSE_AWAITED
Actions Event: Internal DeleteUpstream
Delete the Upstream LSP Control Block pointer from the Upstream LSP New State: Depend on the action routine
Control Block pointers list.
If the list becomes empty, release the resources, send an LDP-Abort Actions
downstream, go to IDLE and then delete the control block.
State: RESPONSE_AWAITED Delete the Upstream LSP Control Block pointer from the Upstream
LSP Control Block pointers list.
Event: LDP Mapping If the list becomes empty, release the resources, send an LDP-
Abort downstream, go to IDLE and then delete the control block.
New State: ESTABLISHED State: RESPONSE_AWAITED
Actions Event: LDP Mapping
For each Upstream LSP Control Block in the Upstream LSP Control Block New State: ESTABLISHED
pointers list, pass the event `Internal Downstream Mapping' to its
state machine.
State: RESPONSE_AWAITED Actions
Event: LDP Withdraw For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream Mapping'
to its state machine.
New State: RESPONSE_AWAITED State: RESPONSE_AWAITED
Actions Event: LDP Withdraw
It is a protocol error from the downstream LDP peer; send a LDP- New State: RESPONSE_AWAITED
RELEASE downstream
State: RESPONSE_AWAITED Actions
Event: LDP Downstream NAK It is a protocol error from the downstream LDP peer; send a LDP-
RELEASE downstream
New State: IDLE State: RESPONSE_AWAITED
Actions Event: LDP Downstream NAK
For each Upstream LSP Control Block in the Upstream LSP Control Block New State: IDLE
pointers list, pass the event `Internal Downstream NAK' to its state
machine.
Release the resources, and delete the control block. Actions
State: RESPONSE_AWAITED For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream NAK' to
its state machine.
Event: Downstream Lost Release the resources, and delete the control block.
New State: IDLE State: RESPONSE_AWAITED
Actions Event: Downstream Lost
For each Upstream LSP Control Block in the Upstream LSP Control Block New State: IDLE
pointers list, pass the event `Internal Downstream NAK' to its state
machine.
Release the resources, and delete the control block. Actions
3.3.3.8.3 State -- "ESTABLISHED" For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream NAK' to
its state machine.
State: ESTABLISHED Release the resources, and delete the control block.
Event: Internal AddUpstream
New State: ESTABLISHED 2.3.3.8.3 State -- "ESTABLISHED"
Actions State: ESTABLISHED
Add the pointer to new Upstream LSP Control Block to the Upstream LSP Event: Internal AddUpstream
Control Block pointers list.
State: ESTABLISHED New State: ESTABLISHED
Event: Internal DeleteUpstream Actions
New State: Depends on the action routine. Add the pointer to new Upstream LSP Control Block to the Upstream
LSP Control Block pointers list.
Actions State: ESTABLISHED
Delete the pointer of Upstream LSP Control Block from its Upstream Event: Internal DeleteUpstream
LSP Control Block pointers list.
If the list becomes empty, release the resources, send an LDP-RELEASE New State: Depends on the action routine.
downstream, go to IDLE and then delete the control block.
Otherwise, remain in the ESTABLISHED state. Actions
State: ESTABLISHED Delete the pointer of Upstream LSP Control Block from its Upstream
LSP Control Block pointers list.
Event: LDP Mapping If the list becomes empty, release the resources, send an LDP-
RELEASE downstream, go to IDLE and then delete the control block.
New State: ESTABLISHED Otherwise, remain in the ESTABLISHED state.
Actions State: ESTABLISHED
For each Upstream LSP Control Block in the Upstream LSP Control Block Event: LDP Mapping
pointers list, pass the event `Internal Downstream mapping' to its
state machine.
State: ESTABLISHED New State: ESTABLISHED
Event: LDP Withdraw Actions
New State: IDLE For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream mapping'
to its state machine.
Actions State: ESTABLISHED
For each Upstream LSP Control Block in the Upstream LSP Control Block Event: LDP Withdraw
pointers list, pass the event `Internal Downstream withdraw' to its
state machine.
Release the resources, and delete the control block and send LDP- New State: IDLE
RELEASE downstream. Actions
State: ESTABLISHED For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream withdraw'
to its state machine.
Event: LDP Downstream NAK Release the resources, and delete the control block and send LDP-
RELEASE downstream.
New State: ESTABLISHED State: ESTABLISHED
Actions Event: LDP Downstream NAK
It is a protocol error from the downstream LDP peer. New State: ESTABLISHED
3.3.3.9 State of the Next_Hop_Trigger_Control_Block's State Machine Actions
for Downstream-on-demand Mode
It is a protocol error from the downstream LDP peer.
2.3.3.9 State of the Next_Hop_Trigger_Control_Block's State Machine for
Downstream-on-demand Mode
-- IDLE -- IDLE
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 from the downstream LSR. The LSR is waiting for the LDP-MAPPING from the
downstream LSR. downstream LSR.
3.3.3.10 Events of the Next_Hop_Trigger_Control_Block's State Machine 2.3.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 Downstream machine. This Downstream LSP Control Block is the merged Downstream
LSP Control Block of this Upstream LSP Control Block. The event is LSP Control Block of this Upstream LSP Control Block. The event is
the result of receiving an LDP-MAPPING by the Downstream LSP Control the result of receiving an LDP-MAPPING by the Downstream LSP Control
Block's state machine. 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 Downstream machine. This Downstream LSP Control Block is the merged Downstream
LSP Control Block of this Upstream LSP Control Block. The event is LSP Control Block of this Upstream LSP Control Block. The event is
the result of receiving an LDP-NAK by the Downstream LSP Control the result of receiving an LDP-NAK by the Downstream LSP Control
Block's state machine, or it detects an error. 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.3.3.11 State Transitions of the Next_Hop_Trigger_Control_Block's State 2.3.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
+---------------------+ +---------------------+
| | | |
| IDLE |<------------+ | IDLE |<------------+
| | | | | |
+---------------------+ | +---------------------+ |
| | | |
| | | |
| (Internal New NH) | | (Internal New NH) |
| | | |
v | v |
+---------------------+ | +---------------------+ |
| | | | | |
| NEW_NH_RETRY |----------->-+ | NEW_NH_RETRY |----------->-+
| | (Internal | | | (Internal |
+---------------------+ Destroy) | +---------------------+ Destroy) |
| | | |
| | | |
| (Internal retry timeout) | | (Internal retry timeout) |
| | | |
v | v |
+---------------------+ | +---------------------+ |
| | (Internal | | | (Internal |
| NEW_NH_RESPONSE | Destroy) | | NEW_NH_RESPONSE | Destroy) |
| _AWAITED |----------->-+ | _AWAITED |----------->-+
| | | | | |
+---------------------+ | +---------------------+ |
| | | |
| (Internal Downstream | | (Internal Downstream |
| Mapping | | Mapping |
| (Internal Downstream | | (Internal Downstream |
| NAK) | | NAK) |
+------------------------>-+ +------------------------>-+
3.3.3.12 State Machine 2.3.3.12 State Machine
3.3.3.12.1 State -- "IDLE"
State: IDLE 2.3.3.12.1 State -- "IDLE"
Event: Internal New NH State: IDLE
New State: NEW_NH_RETRY Event: Internal New NH
Actions: New State: NEW_NH_RETRY
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 State: 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 State: 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 State: 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 State: IDLE New State: IDLE
Actions:
Ignore. It is an internal implementation error. Actions:
3.3.3.12.2 State -- "NEW_NH_RETRY" Ignore. It is an internal implementation error.
State: NEW_NH_RETRY 2.3.3.12.2 State -- "NEW_NH_RETRY"
Event: Internal New NH State: NEW_NH_RETRY
New State: NEW_NH_RETRY Event: Internal New NH
Actions: New State: NEW_NH_RETRY
Restart the LSP retry timer. Actions:
State: NEW_NH_RETRY Restart the LSP retry timer.
Event: Internal retry timeout State: NEW_NH_RETRY
New State: Depends on the action routine. Event: Internal retry timeout
Actions: New State: Depends on the action routine.
If the new next hop is the same one as the old next hop, go to IDLE Actions:
and delete the control block.
Otherwise, go to NEW_NH_RESPONSE_AWAITED, find an downstream LSP If the new next hop is the same one as the old next hop, go to
control block which go through the same next hop for the same FEC, if IDLE and delete the control block.
there is no one, create one, and pass `Internal AddUpstream' event to
its state machine.
State: NEW_NH_RETRY Otherwise, go to NEW_NH_RESPONSE_AWAITED, find a downstream LSP
control block that goes through the same next hop for the same
FEC, if there are none, create one, and pass 'Internal
AddUpstream' event to its state machine.
Event: Internal Downstream Mapping State: NEW_NH_RETRY
New State: NEW_NH_RETRY Event: Internal Downstream Mapping
Actions: New State: NEW_NH_RETRY
Ignore. It is an internal implementation error. Actions:
State: NEW_NH_RETRY Ignore. It is an internal implementation error.
Event: Internal Downstream NAK State: NEW_NH_RETRY
New State: NEW_NH_RETRY Event: Internal Downstream NAK
Actions:
Ignore. It is an internal implementation error. New State: NEW_NH_RETRY
State: NEW_NH_RETRY Actions:
Event: Internal destroy Ignore. It is an internal implementation error.
New State: IDLE State: NEW_NH_RETRY
Actions: Event: Internal destroy
Stop the timer and delete the control block. New State: IDLE
3.3.3.12.3 State -- "NEW_NH_RESPONSE_AWAITED" Actions:
State: NEW_NH_RESPONSE_AWAITED Stop the timer and delete the control block.
Event: Internal New NH 2.3.3.12.3 State -- "NEW_NH_RESPONSE_AWAITED"
New State: NEW_NH_RETRY State: NEW_NH_RESPONSE_AWAITED
Actions: Event: Internal New NH
Restart the LSP retry timer and send event `Internal destroy' to the New State: NEW_NH_RETRY
control block of the LSP for the new next hop.
State: NEW_NH_RESPONSE_AWAITED Actions:
Event: Internal retry timeout Restart the LSP retry timer and send event `Internal destroy' to
the control block of the LSP for the new next hop.
New State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Actions: Event: Internal retry timeout
Ignore. It is an internal implementation error. New State: NEW_NH_RESPONSE_AWAITED
State: NEW_NH_RESPONSE_AWAITED Actions:
Event: Internal Downstream Mapping Ignore. It is an internal implementation error.
New State: IDLE State: NEW_NH_RESPONSE_AWAITED
Actions: Event: Internal Downstream Mapping
Send event `Internal Re-cross-connect' event to the upstream LSP New State: IDLE
control block of the new next hop.
Send event `DeleteUpstream' event to the downstream LSP control block Actions:
of the the new next hop, since the upstream has spliced into the new
next hop.
Delete the control block. Send event `Internal Re-cross-connect' event to the upstream LSP
control block of the new next hop.
Send event `DeleteUpstream' event to the downstream LSP control
block of the the new next hop, since the upstream has spliced into
the new next hop.
Delete the control block.
State: NEW_NH_RESPONSE_AWAITED State: NEW_NH_RESPONSE_AWAITED
Event: Internal Downstream NAK Event: Internal Downstream NAK
New State: 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 State: 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.3.4 LDP Related Message Processing 2.3.4 LDP Related Message Processing
- If an LSR receives an LDP-REQUEST: - If an LSR receives an LDP-REQUEST:
a) If this is a duplicate request, discard the message. A duplicate a) If this is a duplicate request, discard the message. A
request means that there is a LSP Control Block which has same FEC, duplicate request means that there is a LSP Control Block that
same Upstream Label Request ID and same Upstream LDP Session has the same FEC, Upstream Label Request ID and Upstream LDP
Identifier. Session Identifier.
b) Otherwise, create a new Upstream LSP Control Block. Then pass the b) Otherwise, create a new Upstream LSP Control Block. Then pass
event `LDP Request' to this Upstream LSP Control Block's state the event `LDP Request' to this Upstream LSP Control Block's
machine. state machine.
- If an LSR receives an LDP-MAPPING: - 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 that has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream Label. same Downstream LDP Session Identifier and the same Downstream
If a Downstream LSP Control Block is found, pass the event `LDP Label. If a Downstream LSP Control Block is found, pass the event
Mapping' to its state table. This could mean that the attributes of `LDP Mapping' to its state table. This could mean that the
label binding have changed. attributes of label binding have changed.
Otherwise, use the Downstream LDP request ID (the 'Label Request Otherwise, use the Downstream LDP request ID (the 'Label Request
Message ID' field in the LDP-MAPPING) 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 Downstream LSP event `LDP Mapping' to its state machine. If no Downstream LSP
Control Block is found, ignore the message. Control Block is found, ignore the message.
- If an LSR receives an LDP-RELEASE: - 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 that has the same FEC, the
Upstream Label, the same Upstream LDP Session Identifier. If no same Upstream Label, the same Upstream LDP Session Identifier. If
Upstream LSP Control Block is found, ignore the message. If an no 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'
its state machine. to its state machine.
- If an LSR receives an LDP-WITHDRAW: - 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 that has the same FEC, the
Downstream LDP Session Identifier and the same Downstream Label. same Downstream LDP Session Identifier and the same Downstream
Pass the event `LDP Withdraw' to its state machines. Label. Pass 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 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 that are affected 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
to locate the Upstream LSP Control Block and pass the event `LDP Identifier to locate the Upstream LSP Control Block and pass the
Abort' to its state machine. event `LDP 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
to locate a Downstream_LSP_control_block and pass the event `LDP Identifier to locate a Downstream_LSP_control_block and pass the
Downstream NAK' to its state machine. event `LDP Downstream NAK' to its state machine.
4. State Machine for Downstream Unsolicited 3. 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. that 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
independent 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 supported in In downstream unsolicited mode, multiple path is not supported in
this version and will be For Further Study (FFS). We suspect with this version and will be For Further Study (FFS). We suspect with
multiple next hops and Downstream mode, it is easy to get into a loop multiple next hops and Downstream mode, it is easy to get into a loop
condition. condition.
4.1 Control Block 3.1 Control Block
There are 2 types of control blocks involved: Upstream LSP Control There are 2 types of control blocks involved: Upstream LSP Control
Block, Downstream LSP Control Block. 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 corresponding to a LDP peer. A Upstream routing table, with each one corresponding to a LDP peer. A Upstream
LSP Control Block is created for each FEC when there is a label ready LSP Control Block is created for each FEC when there is a label ready
to be distributed to that upstream. It is deleted when the FEC is 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 deleted from the FEC table, or the LDP peer disappears, or the
downstream label is withdrawed. downstream label is withdrawn.
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.
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)
- FEC - FEC
Upstream Label and Upstream LDP Session Identifier, or FEC and Upstream Label and Upstream LDP Session Identifier, or FEC and
Upstream LDP Session Identifier can be used to locate a unique Upstream LDP Session Identifier can be used to locate a unique
Upstream LSP Control Block. Upstream LSP Control Block.
A Downstream LSP Control Block may contain the following information: A Downstream LSP Control Block may contain the following information:
- 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
Downstream 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.2 States of the Upstream LSP Control Block's State Machine 3.2 States of the Upstream LSP Control Block's State Machine for
for Downstream Mode 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 from the This state means that the LSR has received the LDP-MAPPING 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 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.
-- RESOURCES_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.3 Events of the Upstream LSP Control Block's State Machine 3.3 Events of the Upstream LSP Control Block's State Machine for
for Downstream Mode 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 by the machine. The event is the result of receiving an LDP-MAPPING by the
Downstream LSP Control Block's state machine. Or when the LDP peer is Downstream LSP Control Block's state machine. Or when the LDP peer
discovered and there is a downstream Label available for this FEC. is discovered and there is a downstream Label available for this 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 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 This event means the local resource (such as label) becomes
available. available.
-- Delete FEC -- Delete FEC
This event means that either the FEC is removed from the forwarding This event means that 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.
4.4 State Transitions of Upstream LSP Control Block's State 3.4 State Transitions of Upstream LSP Control Block's State Machine for
Machine for Downstream Mode Downstream Mode
| |
|(created when |(created when
|a label is to be distributed |a label is to be distributed
| to the LDP peer) | to the LDP peer)
v v
+-------------------+ +-------------------+
| | | |
| IDLE |<--------------+ | IDLE |<--------------+
| | | | | |
+-------------------+ | +-------------------+ |
| |(LDP Release) | |(LDP Release)
| | | |
| | | |
| | | |
|(Internal Downstream | |(Internal Downstream |
+-------------------| Mapping) | +-------------------| Mapping) |
| | | | | |
|(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
| | | | Downstream | | | | Downstream
| | | | Withdraw) | | | | Withdraw)
| | +-------------------+ | | | +-------------------+ |
+--------->| | | +--------->| | |
| |RESOURCES_AWAITED |---------------+ | |RESOURCES_AWAITED |---------------+
| | | | | | | |
| +-------------------+ | | +-------------------+ |
| | | |
| (Internal Downstream Withdraw) |(LDP Release) | (Internal Downstream Withdraw) |(LDP Release)
| +-------------------+ | | +-------------------+ |
| | | | | | | |
+---->| RELEASE_AWAITED |---------------+ +---->| RELEASE_AWAITED |---------------+
| | | |
+-------------------+ +-------------------+
4.5 Upstream LSP Control Block's State Machine for 3.5 Upstream LSP Control Block's State Machine for Downstream Mode
Downstream Mode
4.5.1 : State -- "IDLE" 3.5.1 : State -- "IDLE"
State: IDLE State: IDLE
Event: Internal Downstream mapping Event: Internal Downstream mapping
New State: Depends on the action routine. New State: Depends on the action routine.
Actions Actions
Choose an upstream label, connect the upstream label with the Choose an upstream label, connect the upstream label with the
downstream label, propagate the LDP-MAPPING upstream and go to state downstream label, propagate the LDP-MAPPING upstream and go to
`ESTABLISHED' state `ESTABLISHED'
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.
State: IDLE State: IDLE
Event: Internal Downstream Withdraw Event: Internal Downstream 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: Resource Available Event: Resource Available
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: Delete FEC
New State: IDLE Event: Delete FEC
Actions New State: IDLE
Delete the control block. Actions
State: IDLE Delete the control block.
Event: Upstream Lost State: IDLE
New State: IDLE Event: Upstream Lost
Actions New State: IDLE
Delete the control block. Actions
4.5.2 : State -- "ESTABLISHED" Delete the control block.
State: ESTABLISHED 3.5.2 : State -- "ESTABLISHED"
Event: Internal Downstream Mapping State: ESTABLISHED
New State: ESTABLISHED Event: Internal Downstream Mapping
Actions New State: ESTABLISHED
Process the new attributes of the new mapping message. Actions
Propagate the LDP-MAPPING upstream. Process the new attributes of the new mapping message.
State: ESTABLISHED Propagate the LDP-MAPPING upstream.
Event: LDP Release State: ESTABLISHED
New State: IDLE Event: LDP Release
Actions New State: IDLE
Disconnect upstream label from downstream label. Actions
Release the upstream label resource Disconnect upstream label from downstream label.
Delete the control block. Release the upstream label resource
State: ESTABLISHED Delete the control block.
Event: Internal Downstream Withdraw
New State: RELEASE_AWAITED State: ESTABLISHED
Actions Event: Internal Downstream Withdraw
Disconnect upstream label from downstream label. New State: RELEASE_AWAITED
Propagate the LDP-WITHDRAW upstream. Actions
State: ESTABLISHED Disconnect upstream label from downstream label.
Event: Resource Available Propagate the LDP-WITHDRAW upstream.
New State: ESTABLISHED State: ESTABLISHED
Actions Event: Resource Available
Ignore the event. It is an internal implementation error. New State: ESTABLISHED
State: ESTABLISHED Actions
Event: Delete FEC Ignore the event. It is an internal implementation error.
New State: RELEASE_AWAITED State: ESTABLISHED
Actions Event: Delete FEC
Send a LDP-WITHDRAW upstream. New State: RELEASE_AWAITED
State: ESTABLISHED Actions
Event: Upstream Lost Send a LDP-WITHDRAW upstream.
New State: IDLE State: ESTABLISHED
Actions Event: Upstream Lost
Release the upstream label and delete the control block. New State: IDLE
4.5.3 : State -- "RELEASE_AWAITED" Actions
State: RELEASE_AWAITED Release the upstream label and delete the control block.
Event: Internal Downstream Mapping 3.5.3 : State -- "RELEASE_AWAITED"
New State: RELEASE_AWAITED State: RELEASE_AWAITED
Actions
Ignore the message. Event: Internal Downstream Mapping
New State: RELEASE_AWAITED
State: RELEASE_AWAITED Actions
Event: LDP Release Ignore the message.
New State: IDLE State: RELEASE_AWAITED
Actions Event: LDP Release
Release the upstream label and delete the control block. New State: IDLE
State: RELEASE_AWAITED Actions
Event: Internal Downstream Withdraw Release the upstream label and delete the control block.
New State: RELEASE_AWAITED State: RELEASE_AWAITED
Actions Event: Internal Downstream Withdraw
Ignore the event. New State: RELEASE_AWAITED
State: RELEASE_AWAITED Actions
Event: Resource Available Ignore the event.
New State: RELEASE_AWAITED State: RELEASE_AWAITED
Actions Event: Resource Available
Ignore the event. It is an internal implementation error. New State: RELEASE_AWAITED
State: RELEASE_AWAITED Actions
Event: Delete FEC Ignore the event. It is an internal implementation error.
New State: RELEASE_AWAITED State: RELEASE_AWAITED
Actions Event: Delete FEC
Do nothing. New State: RELEASE_AWAITED
State: RELEASE_AWAITED Actions
Event: Upstream Lost Do nothing.
New State: IDLE
Actions State: RELEASE_AWAITED
Event: Upstream Lost
Release the upstream label and delete the control block. New State: IDLE
4.5.4 : State -- "RESOURCE_AWAITED" Actions
State: RESOURCE_AWAITED Release the upstream label and delete the control block.
Event: Internal Downstream Mapping 3.5.4 : State -- "RESOURCE_AWAITED"
New State: RESOURCE_AWAITED State: RESOURCE_AWAITED
Actions Event: Internal Downstream Mapping
Ignore the message. New State: RESOURCE_AWAITED
State: RESOURCE_AWAITED Actions
Event: LDP Release Ignore the message.
New State: RESOURCE_AWAITED State: RESOURCE_AWAITED
Actions Event: LDP Release
Ignore the message. It is an internal implementation error. New State: RESOURCE_AWAITED
State: RESOURCE_AWAITED Actions
Event: Internal Downstream Withdraw Ignore the message. It is an internal implementation error.
New State: IDLE State: RESOURCE_AWAITED
Actions Event: Internal Downstream Withdraw
Delete the control block. New State: IDLE
State: RESOURCE_AWAITED Actions
Event: Resource Available Delete the control block.
New State: ESTABLISHED State: RESOURCE_AWAITED
Actions Event: Resource Available
Allocate an upstream label, connect the upstream label with the New State: ESTABLISHED
downstream label, and send LDP-MAPPING upstream. Actions
State: RESOURCE_AWAITED Allocate an upstream label, connect the upstream label with the
downstream label, and send LDP-MAPPING upstream.
Event: Delete FEC State: RESOURCE_AWAITED
New State: IDLE Event: Delete FEC
Actions New State: IDLE
Delete the control block. Actions
State: RESOURCE_AWAITED Delete the control block.
Event: Upstream Lost State: RESOURCE_AWAITED
New State: IDLE Event: Upstream Lost
Actions New State: IDLE
Delete the control block. Actions
4.6 State of the Downstream LSP Control Block's State Machine Delete the control block.
for Downstream Mode
3.6 State of the Downstream LSP Control Block's State Machine 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 from the This state means that the LSR has received the LDP-MAPPING from the
downstream LSR. downstream LSR.
4.7 Events of the Downstream LSP Control Block's State Machine 3.7 Events of the Downstream LSP Control Block's State Machine for
for Downstream Mode Downstream Mode
-- LDP Mapping -- LDP Mapping
The LSR receives an LDP-MAPPING from a downstream LSR. The LSR receives an LDP-MAPPING from a downstream 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.
-- Delete FEC -- Delete FEC
skipping to change at page 72, line 14 skipping to change at page 71, line 17
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
The downstream peer is gone. The downstream peer is gone.
4.8 State Transitions of Downstream LSP Control Block's State 3.8 State Transitions of Downstream LSP Control Block's State Machine
Machine for Downstream Mode for Downstream Mode
| |
|(FEC is being added into the forwarding table) |(FEC is being added into the forwarding table)
v v
+-------------------+ +-------------------+
| | | |
| IDLE |<--------------+ | IDLE |<--------------+
| | | | | |
+-------------------+ | +-------------------+ |
| | | |
| |(LDP Withdraw) | |(LDP Withdraw)
| |(Internal New NH) | |(Internal New NH)
| |(Downstream Lost) | |(Downstream Lost)
| (LDP Mapping) | | (LDP Mapping) |
| | | |
v | v |
+-------------------+ | +-------------------+ |
| | | | | |
| ESTABLISHED |---------------+ | ESTABLISHED |---------------+
| | | |
+-------------------+ +-------------------+
| |
|(FEC is deleted from the forwarding table) |(FEC is deleted from the forwarding table)
v v
4.9 Downstream LSP Control Block's State Machine 3.9 Downstream LSP Control Block's State Machine for Downstream Mode
for Downstream Mode
4.9.1 : State -- "IDLE" 3.9.1 : State -- "IDLE"
State: IDLE State: IDLE
Event: LDP mapping Event: LDP mapping
New State: ESTABLISHED
Actions New State: ESTABLISHED
Actions
For all the LDP peers except the downstream LSR which assigned the For all the LDP peers except the downstream LSR that assigned the
label, create an Upstream LSP Control Block, and pass the event label, create an Upstream LSP Control Block, and pass the event
`Internal Downstream Mapping' to each of the Upstream LSP Control `Internal Downstream Mapping' to each of the Upstream LSP Control
Block's state machines. Block's state machines.
State: IDLE State: IDLE
Event: LDP withdraw Event: LDP withdraw
New State: IDLE New State: IDLE
Actions Actions
Ignore the event. It is an internal implementation error.
State: IDLE Ignore the event. It is an internal implementation error.
Event: Delete FEC State: IDLE
New State: IDLE Event: Delete FEC
Actions New State: IDLE
Delete the control block. Actions
State: IDLE Delete the control block.
Event: Next Hop Change State: IDLE
New State: IDLE Event: Next Hop Change
Actions New State: IDLE
Ignore the event. Actions
State: IDLE Ignore the event.
Event: Downstream Lost State: IDLE
New State: IDLE Event: Downstream Lost
Actions New State: IDLE
Ignore the event. Actions
4.9.2 : State -- "ESTABLISHED" Ignore the event.
State: ESTABLISHED 3.9.2 : State -- "ESTABLISHED"
Event: LDP mapping State: ESTABLISHED
New State: ESTABLISHED Event: LDP mapping
Actions New State: ESTABLISHED
For each Upstream_LSP_control_block of this FEC, pass event `Internal Actions
downstream mapping' to its state machine.
State: ESTABLISHED For each Upstream_LSP_control_block of this FEC, pass event
`Internal downstream mapping' to its state machine.
Event: LDP withdraw State: ESTABLISHED
New State: IDLE Event: LDP withdraw
Actions New State: IDLE
For each Upstream_LSP_control_block for this FEC, pass event Actions
`Internal downstream Withdraw' to its state machine.
Send a LDP Withdraw downstream. For each Upstream_LSP_control_block for this FEC, pass event
`Internal downstream Withdraw' to its state machine.
State: ESTABLISHED Send a LDP Withdraw downstream.
Event: Delete FEC State: ESTABLISHED
New State: IDLE Event: Delete FEC
Actions New State: IDLE
Send LDP-RELEASE downstream and delete the control block. Actions
Send LDP-RELEASE downstream and delete the control block.
State: ESTABLISHED State: ESTABLISHED
Event: Next Hop Change Event: Next Hop Change
New State: IDLE New State: IDLE
Actions Actions
For each Upstream_LSP_control_block for this FEC, pass event For each Upstream_LSP_control_block for this FEC, pass event
`Internal downstream Withdraw' to its state machine. `Internal downstream Withdraw' to its state machine.
Send LDP-REQUEST to the new next hop. Send LDP-REQUEST to the new next hop.
State: ESTABLISHED State: ESTABLISHED
Event: Downstream Lost Event: Downstream Lost
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.10 LDP Related Message Processing for downstream mode. 3.10 LDP Related Message Processing for downstream mode.
- If an LSR receives an LDP-REQUEST: - 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
create a new Upstream_Control_Block and pass `internal Mapping' event `ESTABLISHED', create a new Upstream_Control_Block and pass
to its state machine. `internal Mapping' event to its state machine.
- If an LSR receives an LDP-MAPPING: - 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 that has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream Label. same Downstream LDP Session Identifier and the same Downstream
If a Downstream LSP Control Block is found, pass the event `LDP Label. If a Downstream LSP Control Block is found, pass the event
Mapping' to its state table. This could mean that the attributes of `LDP Mapping' to its state table. This could mean that the
label binding have changed. attributes of 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
hop is the this downstream peer, pass the event `LDP Mapping' to its next hop is the this downstream peer, pass the event `LDP Mapping'
state machine. to its state machine.
- If an LSR receives an LDP-RELEASE: - 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 that has the same FEC, the
Upstream Label, the same Upstream LDP Session Identifier. If no same Upstream Label, the same Upstream LDP Session Identifier. If
Upstream LSP Control Block is found, ignore the message. If an no 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'
its state machine. to its state machine.
- If an LSR receives an LDP-WITHDRAW: - 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 that has the same FEC, the
Downstream LDP Session Identifier and the same Downstream Label. same Downstream LDP Session Identifier and the same Downstream
Pass the event `LDP Withdraw' to its state machines. Label. Pass 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 `Label Withdraw' to the state machines of all the Pass the event `Label Withdraw' 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
LSR. that 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 that has the same FEC
the same next hop and pass the event `Next Hop Change' to their state and the same next hop and pass the event `Next Hop Change' to
machine their state 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 message. An LDP-NAK should never appear in the Ignore the message. An LDP-NAK should never appear in the
downstream-mode 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 message. It is a protocol error from the downstream LSR. Ignore the message. It is a protocol error from the downstream
LSR.
5. Security Considerations 4. Security Considerations
This document is provided as an informational extension of the LDP This document is provided as an informational extension of the LDP
specification [4]. State machines presented here are intended to specification [4]. State machines presented here are intended to
clarify procedures defined in the LDP specification, but do not clarify procedures defined in the LDP specification, but do not
supplant or override definitions and procedures provided there. supplant or override definitions and procedures provided there.
Implementations of a state machine may be vulnerable to spurious Implementations of a state machine may be vulnerable to spurious
events generated by an external source. In this document, events fall events generated by an external source. In this document, events
in two categories: internal events and external events caused by fall in two categories: internal events and external events caused by
receipt of an LDP message. receipt of an LDP message.
LDP messages may be protected using mechanisms described in the LDP LDP messages may be protected using mechanisms described in the LDP
specification. See "Security Considerations" in the LDP specification specification. See "Security Considerations" in the LDP
specification [4].
[4].
Security considerations relating to generation of spurious internal Security considerations relating to generation of spurious internal
events are not addressed in this document. events are not addressed in this document.
6. Acknowledgements 5. 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, Myunghee Son and suggestions of the following people: Bob Thomas, Myunghee Son and
Adrian Farrel. Adrian Farrel.
6. References
[1] Davie, B., Lawrence, J., McCloghrie, K., Rosen, E., Swallow, G.,
Rekhter, Y. and P. Doolan, "MPLS Using LDP and ATM Switching",
RFC 3035, January 2001.
[2] Rosen, E., Viswanathan, A. and R. Callon, "Multiprotocol Label
Switching Architecture", RFC 3031, January 2001.
[3] Cucchiara, J., Sjostrand, H. and J. Lucianai, "Definition of
Managed Objects for the Multiprotocol Label Switching, Label
Distribution Protocol (LDP)", Work in Progress.
[4] Andersson, L., Doolan, P., Feldman, F., Fredette, A. and B.
Thomas, "LDP Specification", RFC 3036, January 2001.
[5] Jamoussi, B., Ed., O., Andersson, L., Callon, R., Dantu, R., Wu,
L., Doolan, P., Worster, T., Feldman, N., Fredette, A., Girish,
M., Gray, E., Heinanen, J., Kilty, T. and A. Malis, "Constraint-
Based LSP Set up Using LDP", RFC 3212, January 2002.
7. Authors' Address 7. Authors' Address
Christophe Boscher Christophe Boscher
Alcatel
Le Mail
44700 Orvault
France
Alcatel Phone: (33) 251781828
Le Mail EMail: christophe.boscher@alcatel.fr
44700 Orvault
France
Phone: (33) 251781828
Email: christophe.boscher@alcatel.fr
Pierrick Cheval Pierrick Cheval
Alcatel
5 rue Noel-Pons
92734 Nanterre Cedex
France
Alcatel Phone: (33) 146524027
5 rue Noel-Pons EMail: pierrick.cheval@space.alcatel.fr
92734 Nanterre Cedex
France
Phone: (33) 146524027
Email: pierrick.cheval@space.alcatel.fr
Liwen Wu Liwen Wu
Cisco Systems, Inc.
3550 Cisco Way
San Jose, CA 95134
U.S.A
Cisco Systems, Inc. Phone: 408-853-4065
3550 Cisco Way EMail: liwwu@cisco.com
San Jose, CA 95134
U.S.A
Phone: 408-853-4065
Email:liwwu@cisco.com
Eric Gray Eric Gray
Sandburst Corporation
600 Federal Drive
Andover, MA 01810
Sandburst Corporation Phone: (978) 689-1610
600 Federal Drive (2nd Floor) EMail: eric.gray@sandburst.com
Andover, MA 01810
Phone: (978) 689-1610
Email: egray@sandburst.com
8. References 8. Full Copyright Statement
1."MPLS Using LDP and ATM Switching", Bruce Davie, Jeremy Lawrence, Copyright (C) The Internet Society (2002). All Rights Reserved.
Keith McCloghrie, Yakov Rekhter, Eric Rosen, George Swallow, Paul
Doolan, work in progress, Internet Draft, <draft-ietf-mpls-atm-02.txt>
2."Multiprotocol Label Switching Architecture", Eric C Rosen, Arun This document and translations of it may be copied and furnished to
Viswanathan, Ross Callon, work in progress, Internet Draft, <draft- others, and derivative works that comment on or otherwise explain it
ietf-mpls-arch-06.txt> or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
3."Definition of Managed Objects for the Multiprotocol Label Switching, The limited permissions granted above are perpetual and will not be
Label Distribution Protocol (LDP)", Joan Cucchiara, Hans Sjostrand, revoked by the Internet Society or its successors or assigns.
James V. Luciani, work in progress, Internet Draft, <draft-ietf-mpls-
ldp-mib-03.txt>
4. "LDP Specification", Loa Andersson, Paul Doolan, Nancy Feldman, This document and the information contained herein is provided on an
Andre Fredette, Bob Thomas, work in progress, Internet Draft, <draft- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
ietf-mpls-ldp-06.txt> TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
5. "Constraint-Based LSP Set up Using LDP", Bilel Jamoussi, et al., Acknowledgement
work in progress, Internet Draft, <draft-ietf-mpls-cr-ldp-03.txt>
Funding for the RFC Editor function is currently provided by the
Internet Society.
 End of changes. 1137 change blocks. 
1834 lines changed or deleted 1869 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/