RFC3215 - LDP State Machine(2)

时间:2005-02-17 来源: 作者: 点击:
`ESTABLISHED', set the state of the Upstream LSP Control Block to `RESPONSE_AWAITED'. If the LSR use the independent control mode [2], choose an upstream label, and send an LDP-MAPPING upstream. Pass
  
`ESTABLISHED', set the state of the Upstream LSP Control Block
to `RESPONSE_AWAITED'. If the LSR use the independent control
mode [2], choose an upstream label, and send an LDP-MAPPING
upstream.

Pass the event `Internal AddUpstream' to the Downstream LSP
Control Block's state machine.

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 control block.

State: IDLE

Event: Internal Downstream Mapping

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

State: IDLE

Event: LDP Release

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Internal Downstream Withdraw

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

State: IDLE

Event: LDP Upstream Abort

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Internal Downstream NAK

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Upstream Lost

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Internal Re-Cross-Connect

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Internal New NH

New State: IDLE

Actions:

Ignore the event. It is an internal implementation error.

2.3.3.4.2 State -- "RESPONSE_AWAITED"

State: RESPONSE_AWAITED

Event: LDP Request

New State: RESPONSE_AWAITED

Actions:

Ignore the event. It is an internal implementation error.

State: RESPONSE_AWAITED

Event: Internal Downstream Mapping

New State: Depends on the action routine.

Actions:

If the LSR uses the ordered control mode, assign an upstream
label, connect the upstream label to the downstream label and
allocate the resources, send an LDP-MAPPING upstream with the
upstream label and go to `ESTABLISHED'.

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
control block.

State: RESPONSE_AWAITED

Event: LDP Release

New State: RESPONSE_AWAITED

Actions

Ignore the event. It is a protocol error from the upstream peer.

State: RESPONSE_AWAITED

Event: Internal Downstream Withdraw

New State: RESPONSE_AWAITED

Actions

Ignore the event. It is an internal implementation error.

State: RESPONSE_AWAITED

Event: LDP Upstream Abort

New State: IDLE

Actions

If the LSR uses the independent control mode, free the upstream
label and the resources.

Send the event `Internal DeleteUpstream' to its Downstream LSP
Control Block's state machine.

Delete the control block.

State: RESPONSE_AWAITED

Event: Internal Downstream NAK

New State: IDLE

Actions:

If the LSR uses the independent control mode, free the upstream
label and the resources. Then, send an LDP-WITHDRAW upstream.

If the LSR uses the ordered control mode, propagate the LDP-NAK
upstream.

Delete the control block.

State: RESPONSE_AWAITED

Event: Upstream Lost

New State: IDLE

Actions

If the LSR uses the independent control mode, free the upstream
label and the resources.

Send the event `Internal DeleteUpstream' to its Downstream LSP
Control Block's state machine.

Delete the control block.

State: RESPONSE_AWAITED

Event: Internal Re-Cross-Connect

New State: RESPONSE_AWAITED

Actions:

Ignore the event. It is an internal implementation error.

State: RESPONSE_AWAITED

Event: Internal New NH

New State: depends on the actions

Actions:

Send event `Internal DeleteUpstream' to its old downstream control
block.

Find a Downstream LSP Control Block that has the same FEC and the
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'.

If the state of the Downstream LSP Control Block is `ESTABLISHED',
choose an upstream label, connect the upstream label with the
downstream label and send an LDP-MAPPING upstream with the
upstream label, and go to the state `ESTABLISHED'.

If the state of Downstream LSP Control Block is not `ESTABLISHED',
set the state of the Upstream LSP Control Block to
`RESPONSE_AWAITED'.

Pass the event `Internal AddUpstream' to the new Downstream LSP
Control Block's state machine.

2.3.3.4.3 State -- "ESTABLISHED"

State: ESTABLISHED

Event: LDP Request

New State: ESTABLISHED

Actions

Ignore the event. It is an internal implementation error.

State: ESTABLISHED

Event: Internal Downstream Mapping

New State: ESTABLISHED

Actions

Process the new attributes of the mapping and then propagate the
LDP-MAPPING upstream.

State: ESTABLISHED

Event: LDP Release

New State: IDLE

Actions

Disconnect the upstream label from the downstream label, free the
upstream label and resources.

Send the event `Internal DeleteUpstream' to its Downstream LSP
Control Block's state machine.

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.

Delete the control block.

State: ESTABLISHED

Event: Internal Downstream Withdraw

New State: Depends on the action routine.

Actions

If it uses independent mode, set its state to `IDLE' and create a
internal `LDP Request' and send to its own state machine.

Else
Disconnect the upstream label from the downstream label.

Propagate the 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.

State: ESTABLISHED

Event: LDP Upstream Abort

New State: ESTABLISHED

Actions

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.

State: ESTABLISHED

Event: Internal Downstream NAK

New State: Depends on the action routine.

Actions:

If it uses independent mode, set its state to `IDLE' and create a
internal `LDP Request' and send to its own state machine.

Else
Disconnect the upstream label from the downstream label

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.

State: ESTABLISHED

Event: Upstream Lost

New State: IDLE

Actions:

Disconnect the upstream label from the downstream label, free the
upstream label and the resources.

Send the event `Internal DeleteUpstream' to its Downstream LSP
Control Block's state machine.

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.

Delete the control block.

State: ESTABLISH

Event: Internal Re-Cross-Connect

New State: ESTABLISH

Actions:

Reconnect the upstream label to the new downstream label.

Send the event `Internal DeleteUpstream' to its old Downstream LSP
Control Block's state machine.

State: ESTABLISH

Event: Internal New NH

New State: ESTABLISH

Actions:

Create a new Next_Hop_Trigger_Control_Block and pass event
`Internal New NH' to its state machine.

2.3.3.4.4 State -- "RELEASE_AWAITED"

State: RELEASE_AWAITED

Event: LDP Request

New State: RELEASE_AWAITED

Actions:

Ignore the event. It is a protocol error from the upstream LSR.

State: RELEASE_AWAITED

Event: Internal Downstream Mapping

New State: RELEASE_AWAITED

Actions:

Ignore the event. It is an internal implementation error.

State: RELEASE_AWAITED

Event: LDP Release

New State: IDLE

Actions:

Free the upstream label resource and delete the control block.

State: RELEASE_AWAITED

Event: Internal Downstream Withdraw

New State: RELEASE_AWAITED

Actions:

Ignore the event. It is a protocol error from the downstream LSR.

State: RELEASE_AWAITED

Event: LDP Upstream Abort

New State: IDLE

Actions:

Free the upstream label resource and delete the control block.

State: RELEASE_AWAITED

Event: Internal Downstream NAK

New State: RELEASE_AWAITED

Actions:

Ignore the event. And continue waiting for the LDP-RELEASE.

State: RELEASE_AWAITED

Event: Upstream Lost

New State: IDLE

Actions:

Free the upstream label resource and delete the control block.

State: RELEASE_AWAITED

Event: Internal New NH

New State: RELEASE_AWAITED

Actions:

Ignore the event. And continue waiting for the LDP-RELEASE.

State: RELEASE_AWAITED

Event: Internal Re-Cross-Connect

New State: RELEASE_AWAITED

Actions:

Ignore the event. It is an internal implementation error.

2.3.3.5 State of the Downstream LSP Control Block's State Machine for
Downstream-on-demand Mode

-- IDLE

This is the initial LSP state.

-- RESPONSE_AWAITED

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-
REQUEST towards a downstream LSR. The LSR is waiting for the LDP-
MAPPING from the downstream LSR.

-- ESTABLISHED

This state means that the LSR has received the LDP-MAPPING from the
downstream LSR and the LSP is up and operational.

2.3.3.6 Events of the Downstream LSP Control Block's State Machine for
Downstream-on-demand Mode

-- Internal AddUpstream

This event is sent by an Upstream LSP Control Block's state machine
when it is created.

-- Internal DeleteUpstream

This event is sent by an Upstream LSP Control Block's state machine
when it is deleted.

-- LDP Mapping

The LSR receives an LDP-MAPPING from a downstream LSR.

-- LDP Withdraw

The LSR receives an LDP-WITHDRAW from a downstream LSR.

-- LDP Downstream NAK

The LSR receives an LDP-NAK from a downstream LSR.

-- Downstream Lost

The LSR loses the LDP session with its downstream LSR.

2.3.3.7 State Transitions of the Downstream LSP Control Block's State
Machine for Downstream-on-demand mode

+-------------------+
| |
| IDLE |<--------------+
| | |(last Internal
+-------------------+ | DeleteUpstream)
| |(LDP Withdraw)
|(1st Internal AddUpstream)|
| |(LDP Downstream
v | NAK)
+-------------------+ |(Downstream
| | | Lost)
| RESPONSE_AWAITED |---------->----+
| | |
+-------------------+ |
| |
|(LDP Mapping) |
| |
v |
+-------------------+ |
| | |
| ESTABLISHED |-------->------+
| |
+-------------------+

2.3.3.8 Downstream LSP Control Block's State Machine for Downstream-on-
demand Mode.

2.3.3.8.1 State -- "IDLE"

State: IDLE

Event: Internal AddUpstream

New State: RESPONSE_AWAITED

Actions

Initialize the list of pointers in the Upstream LSP Control Block
to contain the newly added upstream pointer.

Send a new LDP-REQUEST downstream and go to the state
`RESPONSE_AWAITED'.

State: IDLE

Event: Internal DeleteUpstream

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: LDP Mapping

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: LDP Withdraw

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: LDP Downstream NAK

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Downstream Lost

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

2.3.3.8.2 State -- "RESPONSE_AWAITED"

State: RESPONSE_AWAITED

Event: Internal AddUpstream

New State: RESPONSE_AWAITED

Actions

Add the pointer to new Upstream LSP Control Block to the Upstream
LSP Control Blocks pointer list.

State: RESPONSE_AWAITED

Event: Internal DeleteUpstream

New State: Depend on the action routine

Actions

Delete the Upstream LSP Control Block pointer from the Upstream
LSP Control Block pointers list.

If the list becomes empty, release the resources, send an LDP-
Abort downstream, go to IDLE and then delete the control block.

State: RESPONSE_AWAITED

Event: LDP Mapping

New State: ESTABLISHED

Actions

For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream Mapping'
to its state machine.

State: RESPONSE_AWAITED

Event: LDP Withdraw

New State: RESPONSE_AWAITED

Actions

It is a protocol error from the downstream LDP peer; send a LDP-
RELEASE downstream

State: RESPONSE_AWAITED

Event: LDP Downstream NAK

New State: IDLE

Actions

For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream NAK' to
its state machine.

Release the resources, and delete the control block.

State: RESPONSE_AWAITED

Event: Downstream Lost

New State: IDLE

Actions

For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream NAK' to
its state machine.

Release the resources, and delete the control block.

2.3.3.8.3 State -- "ESTABLISHED"

State: ESTABLISHED

Event: Internal AddUpstream

New State: ESTABLISHED

Actions

Add the pointer to new Upstream LSP Control Block to the Upstream
LSP Control Block pointers list.

State: ESTABLISHED

Event: Internal DeleteUpstream

New State: Depends on the action routine.

Actions

Delete the pointer of Upstream LSP Control Block from its Upstream
LSP Control Block pointers list.

If the list becomes empty, release the resources, send an LDP-
RELEASE downstream, go to IDLE and then delete the control block.

Otherwise, remain in the ESTABLISHED state.

State: ESTABLISHED

Event: LDP Mapping

New State: ESTABLISHED

Actions

For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream mapping'
to its state machine.

State: ESTABLISHED

Event: LDP Withdraw

New State: IDLE

Actions

For each Upstream LSP Control Block in the Upstream LSP Control
Block pointers list, pass the event `Internal Downstream withdraw'
to its state machine.

Release the resources, and delete the control block and send LDP-
RELEASE downstream.

State: ESTABLISHED

Event: LDP Downstream NAK

New State: ESTABLISHED

Actions

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

This is the initial LSP state.

-- NEW_NH_RETRY

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.

-- NEW_NH_RESPONSE_AWAITED

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.

2.3.3.10 Events of the Next_Hop_Trigger_Control_Block's State Machine
for Downstream-on-demand Mode

-- Internal New NH

Trigger to setup an LSP through a better next hop.

-- Internal Downstream Mapping

This event is sent by one Downstream LSP Control Block's state
machine. This Downstream LSP Control Block is the merged Downstream
LSP Control Block of this Upstream LSP Control Block. The event is
the result of receiving an LDP-MAPPING by the Downstream LSP Control
Block's state machine.

-- Internal Downstream NAK

This event is sent by one Downstream LSP Control Block's state
machine. This Downstream LSP Control Block is the merged Downstream
LSP Control Block of this Upstream LSP Control Block. The event is
the result of receiving an LDP-NAK by the Downstream LSP Control
Block's state machine, or it detects an error.

-- Internal Destroy This event is used to stop the procedure of
switching over to the better next hop.

2.3.3.11 State Transitions of the Next_Hop_Trigger_Control_Block's State
Machine for Downstream-on-demand Mode

+---------------------+
| |
| IDLE |<------------+
| | |
+---------------------+ |
| |
| |
| (Internal New NH) |
| |
v |
+---------------------+ |
| | |
| NEW_NH_RETRY |----------->-+
| | (Internal |
+---------------------+ Destroy) |
| |
| |
| (Internal retry timeout) |
| |
v |
+---------------------+ |
| | (Internal |
| NEW_NH_RESPONSE | Destroy) |
| _AWAITED |----------->-+
| | |
+---------------------+ |
| |
| (Internal Downstream |
| Mapping |
| (Internal Downstream |
| NAK) |
+------------------------>-+

2.3.3.12 State Machine

2.3.3.12.1 State -- "IDLE"

State: IDLE

Event: Internal New NH

New State: NEW_NH_RETRY

Actions:

Start the LSP retry timer and go to the `NEW_NH_RETRY' state.

State: IDLE

Event: Internal retry timeout

New State: IDLE

Actions:

Ignore. It is an internal implementation error.

State: IDLE

Event: Internal Downstream Mapping

New State: IDLE

Actions:

Ignore. It is an internal implementation error.

State: IDLE

Event: Internal Downstream NAK

New State: IDLE

Actions:

Ignore. It is an internal implementation error.

State: IDLE

Event: Internal destroy

New State: IDLE

Actions:

Ignore. It is an internal implementation error.

2.3.3.12.2 State -- "NEW_NH_RETRY"

State: NEW_NH_RETRY

Event: Internal New NH

New State: NEW_NH_RETRY

Actions:

Restart the LSP retry timer.

State: NEW_NH_RETRY

Event: Internal retry timeout

New State: Depends on the action routine.

Actions:

If the new next hop is the same one as the old next hop, go to
IDLE and delete the control block.

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.

State: NEW_NH_RETRY

Event: Internal Downstream Mapping

New State: NEW_NH_RETRY

Actions:

Ignore. It is an internal implementation error.

State: NEW_NH_RETRY

Event: Internal Downstream NAK

New State: NEW_NH_RETRY

Actions:

Ignore. It is an internal implementation error.

State: NEW_NH_RETRY

Event: Internal destroy

New State: IDLE

Actions:

Stop the timer and delete the control block.

2.3.3.12.3 State -- "NEW_NH_RESPONSE_AWAITED"

State: NEW_NH_RESPONSE_AWAITED

Event: Internal New NH

New State: NEW_NH_RETRY

Actions:

Restart the LSP retry timer and send event `Internal destroy' to
the control block of the LSP for the new next hop.

State: NEW_NH_RESPONSE_AWAITED

Event: Internal retry timeout

New State: NEW_NH_RESPONSE_AWAITED

Actions:

Ignore. It is an internal implementation error.

State: NEW_NH_RESPONSE_AWAITED

Event: Internal Downstream Mapping

New State: IDLE

Actions:

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

Event: Internal Downstream NAK

New State: IDLE

Actions:

Delete the control block.

State: NEW_NH_RESPONSE_AWAITED

Event: Internal destroy

New State: IDLE

Actions:

Send event `Internal DeleteUpstream' the control block for the new
LSP through the new next hop.

2.3.4 LDP Related Message Processing

- If an LSR receives an LDP-REQUEST:

a) If this is a duplicate request, discard the message. A
duplicate request means that there is a LSP Control Block that
has the same FEC, Upstream Label Request ID and Upstream LDP
Session Identifier.

b) Otherwise, create a new Upstream LSP Control Block. Then pass
the event `LDP Request' to this Upstream LSP Control Block's
state machine.

- If an LSR receives an LDP-MAPPING:

Locate a Downstream LSP Control Block that has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream
Label. If a Downstream LSP Control Block is found, pass the event
`LDP Mapping' to its state table. This could mean that the
attributes of label binding have changed.

Otherwise, use the Downstream LDP request ID (the 'Label Request
Message ID' field in the LDP-MAPPING) and Downstream LDP Session
Identifier to locate the Downstream LSP Control Block and pass the

event `LDP Mapping' to its state machine. If no Downstream LSP
Control Block is found, ignore the message.

- If an LSR receives an LDP-RELEASE:

Locate an Upstream LSP Control Block that has the same FEC, the
same Upstream Label, the same Upstream LDP Session Identifier. If
no Upstream LSP Control Block is found, ignore the message. If an
Upstream LSP Control Block is found, send the event `LDP Release'
to its state machine.

- If an LSR receives an LDP-WITHDRAW:

Find a Downstream LSP Control Block that has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream
Label. Pass the event `LDP Withdraw' to its state machines.

- If an Upstream LDP peer is lost:

Pass the event `Upstream Lost' to the state machines of all the
Upstream LSP Control Blocks whose upstream LDP peer is that LSR.

- If a Downstream LDP peer is lost:

Pass the event `Downstream Lost' to the state machines of all the
Downstream LSP Control Blocks whose downstream LDP peer is that
LSR.

- If a next hop of an FEC is changed:

For all the Upstream LSP Control Blocks that are affected by this
change, pass the event `Internal New NH' to their state machines.

- If an LSR receives an LDP-ABORT from an upstream LSR:

Use the Upstream LDP Request ID and Upstream LDP Session
Identifier to locate the Upstream LSP Control Block and pass the
event `LDP Abort' to its state machine.

- If an LSR receives an LDP-NAK from a downstream LSR:

Use the Downstream LDP Request ID and Downstream Session
Identifier to locate a Downstream_LSP_control_block and pass the
event `LDP Downstream NAK' to its state machine.

3. State Machine for Downstream Unsolicited

The following sections describe the state machines for the ATM-LSR
that uses downstream unsolicited mode.

While both independent LSP control and ordered LSP control modes are
possible, only the ordered mode is taken into account, because the
independent LSP control mode uses the liberal label retention mode
and so is considered burning too many ATM resources.

In downstream unsolicited mode, multiple path is not supported in
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
condition.

3.1 Control Block

There are 2 types of control blocks involved: Upstream LSP Control
Block, Downstream LSP Control Block.

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
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
deleted from the FEC table, or the LDP peer disappears, or the
downstream label is withdrawn.

There is one Downstream LSP Control Blocks for each FEC in 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.

An Upstream LSP Control Block may contain the following information:

- Upstream LDP Session Identifier

- State

- Upstream Label (assigned by this LSR)

- FEC

Upstream Label and Upstream LDP Session Identifier, or FEC and
Upstream LDP Session Identifier can be used to locate a unique
Upstream LSP Control Block.

A Downstream LSP Control Block may contain the following information:

- FEC

- State

- Downstream LDP Session Identifier

- Downstream Label (assigned by the downstream LSR)

- Downstream Label Request ID (assigned by the LSR itself)

Downstream Label and Downstream LDP Session Identifier, or FEC and
Downstream LDP Session Identifier can be used to locate a unique
Downstream LSP Control Block.

3.2 States of the Upstream LSP Control Block's State Machine for
Downstream Mode

-- IDLE

This is the initial LSP state.

-- ESTABLISHED

This state means that the LSR has received the LDP-MAPPING from the
downstream LSR and the LSP is up and operational.

-- RELEASE_AWAITED

This state means that the LSR is waiting for the LDP-RELEASE in
respond to the LDP-WITHDRAW sent by this LSR.

-- RESOURCES_AWAITED

This state means that the LSR is waiting for the label resources.

3.3 Events of the Upstream LSP Control Block's State Machine for
Downstream Mode

-- Internal Downstream Mapping

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
Downstream LSP Control Block's state machine. Or when the LDP peer
is discovered and there is a downstream Label available for this FEC.

-- LDP Release

The LSR receives an LDP-RELEASE from an upstream LSR.

-- Internal Withdraw

This event is sent by Downstream LSP Control Block's state machine.
The event is the result of receiving an LDP-WITHDRAW by the
Downstream LSP Control Block's state machine.

-- Resource Available

This event means the local resource (such as label) becomes
available.

-- Delete FEC

This event means that the FEC is removed from the forwarding table.

-- Upstream Lost

This event means that the upstream LDP peer is lost.

3.4 State Transitions of Upstream LSP Control Block's State Machine for
Downstream Mode

|
|(created when
|a label is to be distributed
| to the LDP peer)
v
+-------------------+
| |
| IDLE |<--------------+
| | |
+-------------------+ |
| |(LDP Release)
| |
| |
| |
|(Internal Downstream |
+-------------------| Mapping) |
| | |
|(no label resource)v |
| +-------------------+ |
| | | |
| +-----| ESTABLISHED |---------------+
| | | | ^
| | +-------------------+ |
| |(delete FEC) ^ |
| |(Internal |(Resource Available) | (LDP Release)
| | Withdraw) | | (Internal
| | | | Downstream
| | | | Withdraw)
| | +-------------------+ |
+--------->| | |
| |RESOURCES_AWAITED |---------------+
| | | |
| +-------------------+ |
| |
| (Internal Downstream Withdraw) |(LDP Release)
| +-------------------+ |
| | | |
+---->| RELEASE_AWAITED |---------------+
| |
+-------------------+

3.5 Upstream LSP Control Block's State Machine for Downstream Mode

3.5.1 : State -- "IDLE"

State: IDLE

Event: Internal Downstream mapping

New State: Depends on the action routine.

Actions

Choose an upstream label, connect the upstream label with the
downstream label, propagate the LDP-MAPPING upstream and go to
state `ESTABLISHED'

If there is no resource for the upstream label, go to state
`RESOURCE_AWAITED'.

State: IDLE

Event: LDP Release

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Internal Downstream Withdraw

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Resource Available

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Delete FEC

New State: IDLE

Actions

Delete the control block.

State: IDLE

Event: Upstream Lost

New State: IDLE

Actions

Delete the control block.

3.5.2 : State -- "ESTABLISHED"

State: ESTABLISHED

Event: Internal Downstream Mapping

New State: ESTABLISHED

Actions

Process the new attributes of the new mapping message.

Propagate the LDP-MAPPING upstream.

State: ESTABLISHED

Event: LDP Release

New State: IDLE

Actions

Disconnect upstream label from downstream label.

Release the upstream label resource

Delete the control block.

State: ESTABLISHED

Event: Internal Downstream Withdraw

New State: RELEASE_AWAITED

Actions

Disconnect upstream label from downstream label.

Propagate the LDP-WITHDRAW upstream.

State: ESTABLISHED

Event: Resource Available

New State: ESTABLISHED

Actions

Ignore the event. It is an internal implementation error.

State: ESTABLISHED

Event: Delete FEC

New State: RELEASE_AWAITED

Actions

Send a LDP-WITHDRAW upstream.

State: ESTABLISHED

Event: Upstream Lost

New State: IDLE

Actions

Release the upstream label and delete the control block.

3.5.3 : State -- "RELEASE_AWAITED"

State: RELEASE_AWAITED

Event: Internal Downstream Mapping

New State: RELEASE_AWAITED

Actions

Ignore the message.

State: RELEASE_AWAITED

Event: LDP Release

New State: IDLE

Actions

Release the upstream label and delete the control block.

State: RELEASE_AWAITED

Event: Internal Downstream Withdraw

New State: RELEASE_AWAITED

Actions

Ignore the event.

State: RELEASE_AWAITED

Event: Resource Available

New State: RELEASE_AWAITED

Actions

Ignore the event. It is an internal implementation error.

State: RELEASE_AWAITED

Event: Delete FEC

New State: RELEASE_AWAITED

Actions

Do nothing.

State: RELEASE_AWAITED

Event: Upstream Lost

New State: IDLE

Actions

Release the upstream label and delete the control block.

3.5.4 : State -- "RESOURCE_AWAITED"

State: RESOURCE_AWAITED

Event: Internal Downstream Mapping

New State: RESOURCE_AWAITED

Actions

Ignore the message.

State: RESOURCE_AWAITED

Event: LDP Release

New State: RESOURCE_AWAITED

Actions

Ignore the message. It is an internal implementation error.

State: RESOURCE_AWAITED

Event: Internal Downstream Withdraw

New State: IDLE

Actions

Delete the control block.

State: RESOURCE_AWAITED

Event: Resource Available

New State: ESTABLISHED

Actions

Allocate an upstream label, connect the upstream label with the
downstream label, and send LDP-MAPPING upstream.

State: RESOURCE_AWAITED

Event: Delete FEC

New State: IDLE

Actions

Delete the control block.

State: RESOURCE_AWAITED

Event: Upstream Lost

New State: IDLE

Actions

Delete the control block.

3.6 State of the Downstream LSP Control Block's State Machine for
Downstream Mode

-- IDLE

This is the initial LSP state.

-- ESTABLISHED

This state means that the LSR has received the LDP-MAPPING from the
downstream LSR.

3.7 Events of the Downstream LSP Control Block's State Machine for
Downstream Mode

-- LDP Mapping

The LSR receives an LDP-MAPPING from a downstream LSR.

-- LDP Withdraw

The LSR receives an LDP-WITHDRAW from a downstream LSR.

-- Delete FEC

The FEC is deleted from the forwarding table.

-- Next Hop Change

The next hop for this FEC is change to different LSR.

-- Downstream Lost

The downstream peer is gone.

3.8 State Transitions of Downstream LSP Control Block's State Machine
for Downstream Mode

|
|(FEC is being added into the forwarding table)
v
+-------------------+
| |
| IDLE |<--------------+
| | |
+-------------------+ |
| |
| |(LDP Withdraw)
| |(Internal New NH)
| |(Downstream Lost)
| (LDP Mapping) |
| |
v |
+-------------------+ |
| | |
| ESTABLISHED |---------------+
| |
+-------------------+
|
|(FEC is deleted from the forwarding table)
v

3.9 Downstream LSP Control Block's State Machine for Downstream Mode

3.9.1 : State -- "IDLE"

State: IDLE

Event: LDP mapping

New State: ESTABLISHED

Actions

For all the LDP peers except the downstream LSR that assigned the
label, create an Upstream LSP Control Block, and pass the event
`Internal Downstream Mapping' to each of the Upstream LSP Control
Block's state machines.

State: IDLE

Event: LDP withdraw

New State: IDLE

Actions

Ignore the event. It is an internal implementation error.

State: IDLE

Event: Delete FEC

New State: IDLE

Actions

Delete the control block.

State: IDLE

Event: Next Hop Change

New State: IDLE

Actions

Ignore the event.

State: IDLE

Event: Downstream Lost

New State: IDLE

Actions

Ignore the event.

3.9.2 : State -- "ESTABLISHED"

State: ESTABLISHED

Event: LDP mapping

New State: ESTABLISHED

Actions

For each Upstream_LSP_control_block of this FEC, pass event
`Internal downstream mapping' to its state machine.

State: ESTABLISHED

Event: LDP withdraw

New State: IDLE

Actions

For each Upstream_LSP_control_block for this FEC, pass event
`Internal downstream Withdraw' to its state machine.

Send a LDP Withdraw downstream.

State: ESTABLISHED

Event: Delete FEC

New State: IDLE

Actions

Send LDP-RELEASE downstream and delete the control block.

State: ESTABLISHED

Event: Next Hop Change

New State: IDLE

Actions

For each Upstream_LSP_control_block for this FEC, pass event
`Internal downstream Withdraw' to its state machine.

Send LDP-REQUEST to the new next hop.

State: ESTABLISHED

Event: Downstream Lost

New State: IDLE

Actions

Send LDP-WITHDRAW to all Upstream_Control_Block's state machine of
this FEC.

3.10 LDP Related Message Processing for downstream mode.

- If an LSR receives an LDP-REQUEST:

If there is a next hop for this FEC and there is a
Downstream_Control_Block for this FEC whose state is
`ESTABLISHED', create a new Upstream_Control_Block and pass
`internal Mapping' event to its state machine.

- If an LSR receives an LDP-MAPPING:

Locate a Downstream LSP Control Block that has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream
Label. If a Downstream LSP Control Block is found, pass the event
`LDP Mapping' to its state table. This could mean that the
attributes of label binding have changed.

Otherwise, if there is no matching Downstream LSP Control Block
found, find a Downstream LSP Control Block of this FEC and its
next hop is the this downstream peer, pass the event `LDP Mapping'
to its state machine.

- If an LSR receives an LDP-RELEASE:

Locate an Upstream LSP Control Block that has the same FEC, the
same Upstream Label, the same Upstream LDP Session Identifier. If
no Upstream LSP Control Block is found, ignore the message. If an
Upstream LSP Control Block is found, send the event `LDP Release'
to its state machine.

- If an LSR receives an LDP-WITHDRAW:

Find a Downstream LSP Control Block that has the same FEC, the
same Downstream LDP Session Identifier and the same Downstream
Label. Pass the event `LDP Withdraw' to its state machines.

- If an Upstream LDP peer is lost:

Pass the event `Upstream Lost' to the state machines of all the
Upstream LSP Control Blocks whose upstream LDP peer is that LSR.

- If a Downstream LDP peer is lost:

Pass the event `Label Withdraw' to the state machines of all the
Downstream LSP Control Blocks whose the downstream LDP peer is
that LSR.

- If a next hop of an FEC is changed:

Find all the Downstream LSP Control Blocks that has the same FEC
and the same next hop and pass the event `Next Hop Change' to
their state machine

- If there is a FEC being added to the forwarding table

Create a new Downstream LSP Control Block with state `IDLE'

- If the FEC is deleted from the forwarding table

Send the `Delete FEC' event to the its control block.

- If an LSR receives an LDP-NAK from an upstream LSR:

Ignore the message. An LDP-NAK should never appear in the
downstream-mode LSR

- If an LSR receives an LDP-NAK from a downstream LSR:

Ignore the message. It is a protocol error from the downstream
LSR.

4. Security Considerations

This document is provided as an informational extension of the LDP
specification [4]. State machines presented here are intended to
clarify procedures defined in the LDP specification, but do not
supplant or override definitions and procedures provided there.

Implementations of a state machine may be vulnerable to spurious
events generated by an external source. In this document, events
fall in two categories: internal events and external events caused by
receipt of an LDP message.

LDP messages may be protected using mechanisms described in the LDP
specification. See "Security Considerations" in the LDP
specification [4].

Security considerations relating to generation of spurious internal
events are not addressed in this document.

5. Acknowledgements

The authors would like to acknowledge the helpful comments and
suggestions of the following people: Bob Thomas, Myunghee Son and
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",
RFC3035, January 2001.

[2] Rosen, E., Viswanathan, A. and R. Callon, "Multiprotocol Label
Switching Architecture", RFC3031, 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", RFC3036, 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", RFC3212, January 2002.

7. Authors' Address

Christophe Boscher
Alcatel
Le Mail
44700 Orvault
France

Phone: (33) 251781828
EMail: christophe.boscher@alcatel.fr

Pierrick Cheval
Alcatel
5 rue Noel-Pons
92734 Nanterre Cedex
France

Phone: (33) 146524027
EMail: pierrick.cheval@space.alcatel.fr

Liwen Wu
Cisco Systems, Inc.
3550 Cisco Way
San Jose, CA 95134
U.S.A

Phone: 408-853-4065
EMail: liwwu@cisco.com

Eric Gray
Sandburst Corporation
600 Federal Drive
Andover, MA 01810

Phone: (978) 689-1610
EMail: eric.gray@sandburst.com

8. Full Copyright Statement

Copyright (C) The Internet Society (2002). All Rights Reserved.

This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
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.

The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
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.

Acknowledgement

Funding for the RFCEditor function is currently provided by the
Internet Society.

------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容