< draft-fu-nsis-qos-nslp-statemachine-01.txt   draft-fu-nsis-qos-nslp-statemachine-02.txt >
NSIS X. Fu NSIS X. Fu
Internet-Draft Univ. Goettingen Internet-Draft Univ. Goettingen
Expires: August 25, 2005 H. Tschofenig Expires: February 25, 2005 H. Tschofenig
T. Tsenov T. Tsenov
Siemens Siemens
February 21, 2005 August 24, 2005
QoS NSLP State Machine QoS NSLP State Machine
draft-fu-nsis-qos-nslp-statemachine-01.txt draft-fu-nsis-qos-nslp-statemachine-02.txt
Status of this Memo Status of this Memo
This document is an Internet-Draft and is subject to all provisions By submitting this Internet-Draft, each author represents that any
of Section 3 of RFC 3667. By submitting this Internet-Draft, each applicable patent or other IPR claims of which he or she is aware
author represents that any applicable patent or other IPR claims of have been or will be disclosed, and any of which he or she becomes
which he or she is aware have been or will be disclosed, and any of aware will be disclosed, in accordance with Section 6 of BCP 79.
which he or she become aware will be disclosed, in accordance with
RFC 3668.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as other groups may also distribute working documents as Internet-
Internet-Drafts. Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 25, 2005. This Internet-Draft will expire on February 25, 2006.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2005). Copyright (C) The Internet Society (2005). All Rights Reserved.
Abstract Abstract
This document describes the state machines for the NSIS Signaling This document describes the state machines for the NSIS Signaling
Layer Protocol for Quality-of-Service signaling (QoS NSLP). A set of Layer Protocol for Quality-of-Service signaling (QoS NSLP). A set of
state machines for QoS NSLP entities at different locations of a flow state machines for QoS NSLP entities at different locations of a flow
path are presented in order to illustrate how QoS NSLP may be path are presented in order to illustrate how QoS NSLP may be
implemented. implemented.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Notational conventions used in state diagrams . . . . . . . 5 3. Notational conventions used in state diagrams . . . . . . . 3
4. State Machine Symbols . . . . . . . . . . . . . . . . . . . 7 4. State Machine Symbols . . . . . . . . . . . . . . . . . . . 5
5. Common Rules . . . . . . . . . . . . . . . . . . . . . . . . 8 5. Common Rules . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1 Common Procedures . . . . . . . . . . . . . . . . . . . . 8 5.1 Common Procedures . . . . . . . . . . . . . . . . . . . . 6
5.2 Common Variables . . . . . . . . . . . . . . . . . . . . . 8 5.2 Common Variables . . . . . . . . . . . . . . . . . . . . . 8
5.3 Constants . . . . . . . . . . . . . . . . . . . . . . . . 9 5.3 Constants . . . . . . . . . . . . . . . . . . . . . . . . 9
5.4 Assumptions . . . . . . . . . . . . . . . . . . . . . . . 9 5.4 Assumptions . . . . . . . . . . . . . . . . . . . . . . . 9
6. State machine for QNI QoS NSLP node . . . . . . . . . . . . 10 6. State machines . . . . . . . . . . . . . . . . . . . . . . . . 10
7. State machine for QNE QoS NSLP nodes . . . . . . . . . . . . 13 6.1 Diagram notations . . . . . . . . . . . . . . . . . . . . 10
8. State machine for QNR QoS NSLP node . . . . . . . . . . . . 17 6.2 State machine for QNI QoS NSLP node . . . . . . . . . . . 11
9. Security Considerations . . . . . . . . . . . . . . . . . . 20 6.3 State machine for QNE QoS NSLP node . . . . . . . . . . . 13
10. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . 21 6.4 State machine for QNR QoS NSLP node . . . . . . . . . . . 16
11. Change History . . . . . . . . . . . . . . . . . . . . . . . 22 7. Security Considerations . . . . . . . . . . . . . . . . . . 17
11.1 Changes in Version -01 . . . . . . . . . . . . . . . . . 22 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . 17
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 23 9. Change History . . . . . . . . . . . . . . . . . . . . . . . 17
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 9.1 Changes in Version -01 . . . . . . . . . . . . . . . . . 17
13.1 Normative References . . . . . . . . . . . . . . . . . . 24 9.2 Changes in Version -02 . . . . . . . . . . . . . . . . . 18
13.2 Informative References . . . . . . . . . . . . . . . . . 24 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 18
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 24 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 19
Intellectual Property and Copyright Statements . . . . . . . 26 12.1 Normative References . . . . . . . . . . . . . . . . . . 19
12.2 Informative References . . . . . . . . . . . . . . . . . 19
Appendix A. ASCII versions of the state diagrams . . . . . . . . 20
A.1 State machine for QNI QoS NSLP node (Figures 2,3). . . . 20
A.2 State machine for QNE QoS NSLP node (Figure 4,5,6) . . . 22
A.3 State machine for QNE QoS NSLP node (Figure 7) . . . . . 26
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 29
Intellectual Property and Copyright Statements . . . . . . . 30
1. Introduction 1. Introduction
This document describes the state machines for QoS NSLP [1], trying This document describes the state machines for QoS NSLP [1], trying
to show how QoS NSLP can be implemented to support its deployment. to show how QoS NSLP can be implemented to support its deployment.
The state machines described in this document are illustrative of how The state machines described in this document are illustrative of how
the QoS NSLP protocol defined in [1] may be implemented for the QNI the QoS NSLP protocol defined in [1] may be implemented for the QNI
QoS NSLP node, QNE QoS NSLP nodes, and QNR QoS NSLP node in the flow QoS NSLP node, QNE QoS NSLP nodes, and QNR QoS NSLP node in the flow
path. Where there are differences [1] are authoritative. The state path. Where there are differences [1] are authoritative. The state
machines are informative only. Implementations may achieve the same machines are informative only. Implementations may achieve the same
results using different methods. results using different methods.
According to [1], there are several possibilities for QoS NSLP According to [1], there are several possibilities for QoS NSLP
signaling, at least including the following: signaling, at least including the following: - end-to-end signaling
end-to-end signaling vs. scoped signaling vs. scoped signaling - sender-initiated signaling vs. receiver-
sender-initiated signaling vs. receiver-initiated signaling initiated signaling (which need to be incorporated into use scenarios
(which need to be incorporated into use scenarios when describing when describing state machine. Note they are represented by way of
state machine. Note they are represented by way of certain certain objects/flags in Reserve and Query messages.)
objects/flags in Reserve and Query messages.)
The messages used in the QoS NSLP protocol can be summarized as The messages used in the QoS NSLP protocol can be summarized as
follows: follows:
Requesting message Responding message Requesting message Responding message
------------------------+--------------------------- ------------------------+---------------------------
RESERVE |None or RESERVE or RESPONSE RESERVE |None or RESERVE or RESPONSE
QUERY |RESERVE or RESPONSE QUERY |RESERVE or RESPONSE
RESPONSE |NONE RESPONSE |NONE
NOTIFY |NONE NOTIFY |NONE
skipping to change at page 5, line 13 skipping to change at page 4, line 5
document are to be interpreted as described in [2]. document are to be interpreted as described in [2].
3. Notational conventions used in state diagrams 3. Notational conventions used in state diagrams
The following text is reused from [3] and the state diagrams are The following text is reused from [3] and the state diagrams are
based on the conventions specified in [4], Section 8.2.1. Additional based on the conventions specified in [4], Section 8.2.1. Additional
state machine details are taken from [5]. state machine details are taken from [5].
The complete text is reproduced here: The complete text is reproduced here:
State diagrams are used to represent the operation of the protocol State diagrams are used to represent the operation of the protocol by
by a number of cooperating state machines each comprising a group a number of cooperating state machines each comprising a group of
of connected, mutually exclusive states. Only one state of each connected, mutually exclusive states. Only one state of each machine
machine can be active at any given time. can be active at any given time.
All permissible transitions between states are represented by All permissible transitions between states are represented by arrows,
arrows, the arrowhead denoting the direction of the possible the arrowhead denoting the direction of the possible transition.
transition. Labels attached to arrows denote the condition(s) Labels attached to arrows denote the condition(s) that must be met in
that must be met in order for the transition to take place. All order for the transition to take place. All conditions are
conditions are expressions that evaluate to TRUE or FALSE; if a expressions that evaluate to TRUE or FALSE; if a condition evaluates
condition evaluates to TRUE, then the condition is met. The label to TRUE, then the condition is met. The label UCT denotes an
UCT denotes an unconditional transition (i.e., UCT always unconditional transition (i.e., UCT always evaluates to TRUE). A
evaluates to TRUE). A transition that is global in nature (i.e., transition that is global in nature (i.e., a transition that occurs
a transition that occurs from any of the possible states if the from any of the possible states if the condition attached to the
condition attached to the arrow is met) is denoted by an open arrow is met) is denoted by an open arrow; i.e., no specific state is
arrow; i.e., no specific state is identified as the origin of the identified as the origin of the transition. When the condition
transition. When the condition associated with a global associated with a global transition is met, it supersedes all other
transition is met, it supersedes all other exit conditions exit conditions including UCT. The special global condition BEGIN
including UCT. The special global condition BEGIN supersedes all supersedes all other global conditions, and once asserted remains
other global conditions, and once asserted remains asserted until asserted until all state blocks have executed to the point that
all state blocks have executed to the point that variable variable assignments and other consequences of their execution remain
assignments and other consequences of their execution remain unchanged.
unchanged.
On entry to a state, the procedures defined for the state (if any) On entry to a state, the procedures defined for the state (if any)
are executed exactly once, in the order that they appear on the are executed exactly once, in the order that they appear on the page.
page. Each action is deemed to be atomic; i.e., execution of a Each action is deemed to be atomic; i.e., execution of a procedure
procedure completes before the next sequential procedure starts to completes before the next sequential procedure starts to execute. No
execute. No procedures execute outside of a state block. The procedures execute outside of a state block. The procedures in only
procedures in only one state block execute at a time, even if the one state block execute at a time, even if the conditions for
conditions for execution of state blocks in different state execution of state blocks in different state machines are satisfied,
machines are satisfied, and all procedures in an executing state and all procedures in an executing state block complete execution
block complete execution before the transition to and execution of before the transition to and execution of any other state block
any other state block occurs, i.e., the execution of any state occurs, i.e., the execution of any state block appears to be atomic
block appears to be atomic with respect to the execution of any with respect to the execution of any other state block and the
other state block and the transition condition to that state from transition condition to that state from the previous state is TRUE
the previous state is TRUE when execution commences. The order of when execution commences. The order of execution of state blocks in
execution of state blocks in different state machines is undefined different state machines is undefined except as constrained by their
except as constrained by their transition conditions. A variable transition conditions. A variable that is set to a particular value
that is set to a particular value in a state block retains this in a state block retains this value until a subsequent state block
value until a subsequent state block executes a procedure that executes a procedure that modifies the value.
modifies the value.
On completion of all of the procedures within a state, all exit On completion of all of the procedures within a state, all exit
conditions for the state (including all conditions associated with conditions for the state (including all conditions associated with
global transitions) are evaluated continuously until one of the global transitions) are evaluated continuously until one of the
conditions is met. The label ELSE denotes a transition that conditions is met. The label ELSE denotes a transition that occurs
occurs if none of the other conditions for transitions from the if none of the other conditions for transitions from the state are
state are met (i.e., ELSE evaluates to TRUE if all other possible met (i.e., ELSE evaluates to TRUE if all other possible exit
exit conditions from the state evaluate to FALSE). Where two or conditions from the state evaluate to FALSE). Where two or more exit
more exit conditions with the same level of precedence become TRUE conditions with the same level of precedence become TRUE
simultaneously, the choice as to which exit condition causes the simultaneously, the choice as to which exit condition causes the
state transition to take place is arbitrary. state transition to take place is arbitrary.
In addition to the above notation, there are a couple of In addition to the above notation, there are a couple of
clarifications specific to this document. First, all boolean clarifications specific to this document. First, all boolean
variables are initialized to FALSE before the state machine execution variables are initialized to FALSE before the state machine execution
begins. Second, the following notational shorthand is specific to begins. Second, the following notational shorthand is specific to
this document: this document:
<variable> = <expression1> | <expression2> | ... <variable> = <expression1> | <expression2> | ...
Execution of a statement of this form will result in <variable> Execution of a statement of this form will result in <variable>
having a value of exactly one of the expressions. The logic for having a value of exactly one of the expressions. The logic for
which of those expressions gets executed is outside of the state which of those expressions gets executed is outside of the state
machine and could be environmental, configurable, or based on machine and could be environmental, configurable, or based on
another state machine such as that of the method. another state machine such as that of the method.
4. State Machine Symbols 4. State Machine Symbols
( ) Used to force the precedence of operators in Boolean expressions ( )
Used to force the precedence of operators in Boolean expressions
and to delimit the argument(s) of actions within state boxes. and to delimit the argument(s) of actions within state boxes.
; Used as a terminating delimiter for actions within state boxes.
;
Used as a terminating delimiter for actions within state boxes.
Where a state box contains multiple actions, the order of Where a state box contains multiple actions, the order of
execution follows the normal language conventions for reading execution follows the normal English language conventions for
text. reading text.
= Assignment action. The value of the expression to the right of
=
Assignment action. The value of the expression to the right of
the operator is assigned to the variable to the left of the the operator is assigned to the variable to the left of the
operator. Where this operator is used to define multiple operator. Where this operator is used to define multiple
assignments, e.g., a = b = X the action causes the value of the assignments, e.g., a = b = X the action causes the value of the
expression following the right-most assignment operator to be expression following the right-most assignment operator to be
assigned to all of the variables that appear to the left of the assigned to all of the variables that appear to the left of the
right-most assignment operator. right-most assignment operator.
! Logical NOT operator.
&& Logical AND operator. !
|| Logical OR operator. Logical NOT operator.
if...then... Conditional action. If the Boolean expression
following the if evaluates to TRUE, then the action following the &&
then is executed. Logical AND operator.
\{ statement 1, ... statement N \} Compound statement. Braces are
used to group statements that are executed together as if they ||
were a single statement. Logical OR operator.
!= Inequality. Evaluates to TRUE if the expression to the left of
if...then...
Conditional action. If the Boolean expression following the if
evaluates to TRUE, then the action following the then is executed.
{ statement 1, ... statement N }
Compound statement. Braces are used to group statements that are
executed together as if they were a single statement.
!=
Inequality. Evaluates to TRUE if the expression to the left of
the operator is not equal in value to the expression to the right. the operator is not equal in value to the expression to the right.
== Equality. Evaluates to TRUE if the expression to the left of the
==
Equality. Evaluates to TRUE if the expression to the left of the
operator is equal in value to the expression to the right. operator is equal in value to the expression to the right.
> Greater than. Evaluates to TRUE if the value of the expression to
>
Greater than. Evaluates to TRUE if the value of the expression to
the left of the operator is greater than the value of the the left of the operator is greater than the value of the
expression to the right. expression to the right.
<= Less than or equal to. Evaluates to TRUE if the value of the
<=
Less than or equal to. Evaluates to TRUE if the value of the
expression to the left of the operator is either less than or expression to the left of the operator is either less than or
equal to the value of the expression to the right. equal to the value of the expression to the right.
++ Increment the preceding integer operator by 1.
++
Increment the preceding integer operator by 1.
+
Arithmetic addition operator.
&
Bitwise AND operator.
5. Common Rules 5. Common Rules
Throughout the document we use terms defined in the [1], such as flow Throughout the document we use terms defined in the [1], such as flow
sender, flow receiver, QUERY, RESERVE or RESPONSE. sender, flow receiver, QUERY, RESERVE or RESPONSE.
5.1 Common Procedures 5.1 Common Procedures
tx_RESERVE(Toff): Transmit RESERVE message with 'Teardown' bit off tx_RESERVE(Toff):
tx_RESERVE(Ton): Transmit RESERVE message with 'Teardown' bit on Transmit RESERVE message with 'Teardown' bit off
tx_RESPONSE(): Transmit RESPONSE message
tx_QUERY(<object>): Transmit QUERY message with <object> tx_RESERVE(Ton):
tx_QUERY(w/o<object>): Transmit QUERY message without <object>
tx_NOTIFY(): Transmit NOTIFY message Transmit RESERVE message with 'Teardown' bit on
rx_RESPONSE(): Receive RESPONSE message
rx_QUERY(): Receive QUERY message tx_RESPONSE():
rx_RESERVE(): Receive RESERVE message Transmit RESPONSE message
rx_NOTIFY(): Transmit NOTIFY message
TIMEOUT_StateLifetime: State lifetime timer expiration tx_QUERY(<object>):
TIMEOUT_Refresh: Refresh interval timer expiration Transmit QUERY message with <object>
TIMEOUT_Refresh: Wait-Response interval timer expiration
tg_QUERY: External trigger to send a QUERY message (typically tx_QUERY(w/o<object>):
triggered by the application). Transmit QUERY message without <object>
tg_RESERVE: External trigger to send a RESERVE message.
tg_TEARDOWN: External trigger to clear previously established QoS tx_NOTIFY():
state (typically triggered by the application). It is translated Transmit NOTIFY message
to a tx_RESERVE(Ton) message.
Install QoS state: Install the local QoS state. rx_RESPONSE():
Refresh QoS state: Refresh the local QoS state. Receive RESPONSE message
Delete QoS state: Delete the local QoS state.
Send info to Application: Report information to the application. rx_QUERY():
RMF: Performs Resource Management Function and returns the following Receive QUERY message
rx_RESERVE():
Receive RESERVE message
tx_NOTIFY():
Transmit NOTIFY message
TIMEOUT_StateLifetime:
State lifetime timer expiration
TIMEOUT_Refresh:
Refresh interval timer expiration
TIMEOUT_Refresh:
Wait-Response interval timer expiration
tg_QUERY:
External trigger to send a QUERY message (typically triggered by
the application).
tg_RESERVE:
External trigger to send a RESERVE message.
tg_TEARDOWN:
External trigger to clear previously established QoS state
(typically triggered by the application). It is translated to a
tx_RESERVE(Ton) message.
Install QoS state:
Install the local QoS state.
Refresh QoS state:
Refresh the local QoS state.
Delete QoS state:
Delete the local QoS state.
Send info to Application:
Report information to the application.
RMF:
Performs Resource Management Function and returns the following
values{AVAIL, NO_AVAIL}. values{AVAIL, NO_AVAIL}.
SetRII: Sets the RII object of the messages e.g. the node requests
SetRII:
Sets the RII object of the messages e.g. the node requests
explicit response to the message being sent. Returns values explicit response to the message being sent. Returns values
{0,1}. {0,1}.
CheckRII: Checks the RII object of received RESPONSE message if it is
CheckRII:
Checks the RII object of received RESPONSE message if it is
requested by current node or other upstream node. Returns values requested by current node or other upstream node. Returns values
{LOCAL, NO_LOCAL}. {LOCAL, NO_LOCAL}.
ProcessQUERY: Processes a Query message and provides the requested
info ProcessQUERY:
Processes a Query message and provides the requested info
5.2 Common Variables 5.2 Common Variables
RII: Request Identification Information (RII) object. Logical RII:
variable representing if the RII is set or not. Takes values Request Identification Information (RII) object. Logical variable
{0,1}. representing if the RII is set or not. Takes values {0,1}.
SCOPING: Scoping flag of common message header. Takes values SCOPING:
Scoping flag of common message header. Takes values
{"Next_hop","Whole_path"}. {"Next_hop","Whole_path"}.
RSN: Reservation Sequence Number object. Takes values:
RSN:
Reservation Sequence Number object. Takes values:
- recRSN - RSN object of the received message - recRSN - RSN object of the received message
- currRSN - Current stored RSN value for installed QoS state. - currRSN - Current stored RSN value for installed QoS state.
(Assumed to be the one for the direction where the message comes (Assumed to be the one for the direction where the message comes
from e.g.Upstream/Downstream) from e.g.Upstream/Downstream)
ACK: Acknowledgement flag of common message header. Takes values
{"On","Off"}. ACK:
SummaryRefresh: Keeps information if Summary refresh method may be Acknowledgement flag of common message header. Takes values
used for refreshing a installed QoS state. Takes value
{"On","Off"}. {"On","Off"}.
E_SPEC: Error_Spec object. Takes values:
ReducedRefresh:
Keeps information if Reduced refresh method may be used for
refreshing a installed QoS state. Takes value {"On","Off"}.
E_SPEC:
Error_Spec object. Takes values:
- 0x02? - Success values - 0x02? - Success values
- 0x04? - Transient Failure values - 0x04? - Transient Failure values
- ERROR - Not specified in the QoS NSLP draft, but used
here.(Section 10) QSPEC:
QSPEC: QoS specification object. QoS specification object.
FlowID: Flow ID kept by the installed QoS state.
Replace: Replace flag of common message header. Takes values FlowID:
{"On","Off"}. Flow ID kept by the installed QoS state.
SII: Source Identification Information entry. Takes values:
Replace:
Replace flag of common message header. Takes values {"On","Off"}.
SII:
Source Identification Information entry. Takes values:
- CurrSII - SII entry stored for current installed QoS state. - CurrSII - SII entry stored for current installed QoS state.
(Assumed to be the one for the direction where the message comes (Assumed to be the one for the direction where the message comes
from e.g.Upstream/Downstream) from e.g.Upstream/Downstream)
- newSII - SII of the received message is different from the SII - newSII - SII of the received message is different from the SII
stored for the current installed QoS state. stored for the current installed QoS state.
5.3 Constants 5.3 Constants
5.4 Assumptions 5.4 Assumptions
o For simplification not all included objects in a message are - For simplification not all included objects in a message are
showed. Only those that are significant for the case are showed. showed. Only those that are significant for the case are showed.
State machines do not present handling of messages that are not State machines do not present handling of messages that are not
significant for management of the states such as certain NOTIFY significant for management of the states such as certain NOTIFY
and QUERY messages. and QUERY messages.
o State machines represent handling of messages of the same Session - State machines represent handling of messages of the same Session
ID and with no protocol errors. Separate parallel instances of ID and with no protocol errors. Separate parallel instances of
the state machines should handle messages for different Session the state machines should handle messages for different Session
IDs. IDs.
o Default message handling should be defined for messages with - Default message handling should be defined for messages with
different Session IDs that have impact on current session state different Session IDs that have impact on current session state
and error messages. This is not included in the current version. and error messages. This is not included in the current version.
o ACK flag in the common header is set "On" by default. - ACK flag in the common header is set "On" by default.
o Direction of receiving and sending messages is not specified. We - Direction of receiving and sending messages is not specified. We
assume it is implicit from the context. assume it is implicit from the context.
6. State machine for QNI QoS NSLP node 6. State machines
-----------
State: INIT
-----------
Condition Action State
------------------------+-------------------------+------------
UCT | initialize variables |IDLE
------------------------+-------------------------+------------
-----------
State: IDLE
-----------
Condition Action State Note
------------------------+-------------------------+-----------+---
rx_QUERY(RII) |ProcessQUERY |IDLE |
|tx_RESPONSE(RII) | |
| | |
(tg_RESERVE) && |Send info to Application |IDLE |
(RMF="NO_AVAIL") | | |
| | |
(tg_RESERVE) && (!RII) |tx_RESERVE(w/oRII), |QoS state |
&& (!setRII) && | Install QoS state, |Installed |
(RMF="AVAIL") | Send info to Application| |
| | |
(tg_RESERVE) && (setRII)|Install QoS state, |QoS state |
&&(RMF="AVAIL") | tx_RESERVE(RII) |Installed +|
| |WAITRESP2 |
| | |
(rx_QUERY)&&(!RII)&& |Tx_RESPONSE(RSN, |IDLE |1)
(RMF="NO_AVAIL") | E_SPEC="ERROR") | |2)
| | |
(rx_QUERY) && (!RII) && |tx_RESERVE(w/oRII), |QoS state |2)
(!setRII) && | Install QoS state, |Installed |
(RMF="AVAIL") | Send info to Application| |
| | |
(rx_QUERY) && (!RII) && |Install QoS state, |QoS state |2)
(setRII) && |tx_RESERVE( RII) |Installed +|
(RMF="AVAIL") | |WAITRESP2 |
| | |
(tg_QUERY) && (setRII) |tx_QUERY(RII) |WAITRESP1 |
| | |
------------------------+-------------------------+-----------+---
Note:
1) How to signal unsuccessful reservation for Receiver initiated
reservation (No RII included; sent Response(RSN) should not be
forwarded further than the next peer). No Error_SPEC value
specified for this case.
2) Relevant for Receiver-initiated reservation.
----------------
State: WAITRESP1
----------------
Condition Action State
------------------------+-------------------------+------------
(TIMEOUT_WaitResp) && |tx_QUERY(RII) |WAITRESP1
(!MaxRetry) | |
| |
(TIMEOUT_WaitResp) && |Send info to Application |IDLE
(MaxRetry) | |
| |
rx_RESPONSE |Send info to Application |IDLE
------------------------+-------------------------+------------
--------------------------------------
State: QoS state installed + WAITRESP2
--------------------------------------
Condition Action State
------------------------+-------------------------+------------
(TIMEOUT_WaitResp) && |tx_RESERVE(RII) |QoS state
(!MaxRetry) | |installed +
| |WAITRESP2
| |
| |
(TIMEOUT_WaitResp) && |Delete QoS state |IDLE
(MaxRetry) |Send info to Application |
| |
rx_RESPONSE(RII, |Delete QoS state |IDLE
E_SPEC="0x04?") |Send info to Application |
| |
| |
rx_RESPONSE(RII, |Send info to Application |QoS state
E_SPEC="0x02?") |SummaryRefresh="On" |installed
------------------------+-------------------------+------------
--------------------------
State: QoS state installed
--------------------------
Condition Action State Note
------------------------+-------------------------+-----------+---
TIMEOUT_Refresh |If (SummaryRefresh="On") |QoS state |
| (Tx_RESERVE(RSN)) && |installed |
| (SummaryRefresh="Off") | |
|Else | |
| Tx_RESERVE(RSN,QSPEC); | |
| | |
rx_RESPONSE(RSN, |SummaryRefresh="On" |QoS state |
E_SPEC="0x02?") | |installed |
| | |
TIMEOUT_StateLifetime |Delete QoS state |IDLE |1)
|Send info to Application | |
| | |
tg_TEARDOWN |Delete QoS state, |IDLE |
| tx_RESERVE(Ton) | |
| | |
rx_NOTIFY(RSN, |Delete QoS state |IDLE |
E_SPEC="0x04?") |Send info to Application | |
------------------------+-------------------------+-----------+---
Note:
1) If QoS state lifetime expires in QNI, should RESERVE(Ton)
be sent downstream the path?
7. State machine for QNE QoS NSLP nodes
----------- The following section presents the state machine diagrams of QoS NSLP
State: INIT peers.
-----------
Condition Action State 6.1 Diagram notations
------------------------+-------------------------+------------
UCT | initialize variables |IDLE
------------------------+-------------------------+------------
----------- (see the .pdf version for missing diagram or
State: IDLE refer to Appendix A if reading the .txt version)
-----------
Condition Action State Note Figure 1: Diagram notations
------------------------+-------------------------+-----------+---
(rx_QUERY) && (!RII) |tx_QUERY(w/oRII) |IDLE |2)
| | |
(rx_QUERY(RII, |ProcessQUERY, |IDLE |7)
SCOPING="Next_hop") |Tx_RESPONSE(RII) | |
| | |
(rx_QUERY) && (RII) |tx_QUERY(w/RII) |IDLE |7)
| | |
(rx_RESERVE(RII)) && |Tx_RESPONSE(RII, |IDLE |3)
(RMF="NO_AVAIL") | E_SPEC="0x04?") | |
| | |
(rx_RESERVE) && (!RII)&&|Tx_RESPONSE(RSN, |IDLE |3)
(RMF="NO_AVAIL") | E_SPEC="0x04?") | |
| | |
(rx_RESPONSE(RII)) && |Tx_RESPONSE(RII) |IDLE |
(CheckRII="Not_LOCAL")| | |
| | |
(rx_RESERVE)&& !(setRII)|Install QoS state, |QoS State |1a)
&& (RMF="AVAIL") |If(ACK="On") |Installed |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
|If(RII) Tx_RESPONSE(RII) | |
|Else Tx_RESPONSE(w/oRII)| |
| | |
(rx_RESERVE(SCOPING= |Install QoS state, |QoS State |1b)
"Next_hop")) && |If(RII) Tx_RESPONSE(RII, |Installed |
(RMF="AVAIL") | E_SPEC="0x02?") | |
|Else Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE) && (setRII)|Install QoS state, |QoS State |4) 6.2 State machine for QNI QoS NSLP node
&& (RMF="AVAIL") |Tx_RESPONSE(RII), |Installed +|
|If(ACK="On") |WAITRESP1 |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
| | |
(tg_QUERY) && (setRII) |tx_QUERY(RII) |WAITRESP2 |5)
------------------------+-------------------------+-----------+---
---------------- The following are diagrams of the QNI QoS NSLP node state machine.
State: QoS State Installed + WAITRESP1
----------------
Condition Action State Note (see the .pdf version for missing diagram or
------------------------+-------------------------+-----------+--- refer to Appendix A.1 if reading the .txt version)
(TIMEOUT_WaitResp) && |tx_RESERVE(RII) |WAITRESP1 |
(!MaxRetry) | | |
| | |
(TIMEOUT_WaitResp) && |Delete QoS State, | |
(MaxRetry) && |tx_NOTIFY(RSN, |IDLE |
| E_SPEC="0x04?") | |
|Send info to Application | |
| | |
(rx_RESPONSE(RII, |Delete QoS State, |IDLE |4)
E_SPEC="0x04?")) |tx_NOTIFY(RSN, | |
&&(CheckRII="LOCAL") | E_SPEC="0x04?") | |
|Send info to Application | |
| | |
(rx_RESPONSE(RII, |Send info to Application |QoS State |
E_SPEC="0x02?")) |SummaryRefresh="On" |Installed |
&&(CheckRII="LOCAL") | | |
------------------------+-------------------------+-----------+---
---------------- Figure 2: QNI node: "IDLE" state
State: WAITRESP2
----------------
Condition Action State Note (see the .pdf version for missing diagram or
------------------------+-------------------------+-----------+--- refer to Appendix A.1 if reading the .txt version)
(TIMEOUT_WaitResp) && |tx_QUERY(RII) |WAITRESP2 |
(!MaxRetry) | | |
| | |
(TIMEOUT_WaitResp) && |Send info to Application |IDLE |
(MaxRetry) | | |
| | |
(rx_RESPONSE) && |Send info to Application |IDLE |
(CheckRII="LOCAL") | | |
------------------------+-------------------------+-----------+---
------------------ Figure 3: QNI node: "WAITRESP1", "WAITRESP2" and "QoS state installed" state
State: QoS State Installed 6.3 State machine for QNE QoS NSLP node
------------------
Condition Action State Note The following are diagrams of the QNE QoS NSLP node state machine.
------------------------+-------------------------+-----------+---
rx_RESERVE(Ton) |tx_RESERVE(Ton), |IDLE |
|Delete QoS state | |
| | |
rx_RESERVE |Refresh QoS state |QoS State |6)
|If(ACK="On") |Installed |
|Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?") | |
| | |
rx_RESPONSE(RSN, |SummaryRefresh="On" |QoS State |6)
E_SPEC="0x02?") | |Installed |
| | |
TIMEOUT_Refresh |If (SummaryRefresh="On") |QoS State |6)
| (Tx_RESERVE(RSN)) |Installed |
| &&(SummaryRefresh="Off")| |
|Else | |
| Tx_RESERVE(RSN,QSPEC) | |
| | |
(rx_RESPONSE(RII, |SummaryRefresh="On" |QoS State |
E_SPEC="0x02?")) |Tx_RESPONSE(RII, |Installed |
&&(ChechRII="NOT_LOCAL")| E_SPEC="0x02?") | |
| | |
| | |
(TIMEOUT_StateLifetime) |Delete QoS state |IDLE |8)
| | |
(rx_RESPONSE(RII, | | |
E_SPEC="0x04?")) |Delete QoS state |IDLE |
&&(ChechRII="NOT_LOCAL")|rx_RESPONSE(RII, | |
| E_SPEC="0x04?") | |
| | |
rx_RESPONSE(RSN, |Delete QoS state |IDLE |
E_SPEC="0x04?") |rx_NOTIFY(RSN, | |
| E_SPEC="0x04?") | |
| | |
rx_NOTIFY(RSN, |Delete QoS state |IDLE |
E_SPEC="0x04?") |rx_NOTIFY(RSN, | |
| E_SPEC="0x04?") | |
| | |
| | |
(Rx_RESERVE)&&(currSII) |Update QoS state |QoS State |9) (see the .pdf version for missing diagram or
&&(Replace="On") |If (RII) |Installed | refer to Appendix A.2 if reading the .txt version)
&&(RMF="AVAIL") | Tx_RESERVE(RII,QSPEC)| |
&&((recRSN>=currRSN) |else | |
||(newFlowID)) | Tx_RESERVE(RSN,QSPEC);| |
|If (ACK="On")&&(!RII) | |
| tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
| | |
| | |
(Rx_RESERVE)&&(newSII) |Update QoS state |QoS State |9)
&&(RMF="AVAIL") |If (RII) |Installed |
&&((recRSN>=currRSN) | Tx_RESERVE(RII,QSPEC)| |
||(newFlowID)) |else | |
| Tx_RESERVE(RSN,QSPEC);| |
|If (ACK="On")&&(!RII) | |
| tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
|If (Replace="On") | |
| tx_Reserve(Ton) | |
| to currSII | |
------------------------+-------------------------+-----------+---
NOTE: Figure 4: QNE node: "IDLE" state
1) Successful reservation without Response request (1a) and with
Scoping (1b).
2) Processing of Query msg for Receiver initiated reservation
3) Unsuccessful reservation with/without request for response
from previous node in the path.
4) Unsuccessful reservation. RII requested at the local node.
NOTIFY(RSN) is sent further to the upstream nodes.
5) Processing of Query msg triggered by the application layer.
6) QoS State refresh procedures
7) Processing of Query msg received from an upstream node.
8) We assume that handling of QoS state lifetime expiration
event is based on the local policy of the node.
NOTIFY/Reserve(Ton) messages might be sent to other peers.
These issues are not described in the QoS NSLP draft.
9) Update QoS state and Re-route functionality
8. State machine for QNR QoS NSLP node Notes:
1) Successful reservation without Response request (1a) and with
Scoping (1b).
2) Processing of Query msg for Receiver initiated reservation
3) Unsuccessful reservation with/without request for response from
previous node in the path.
5) Processing of Query msg triggered by the application layer.
7) Processing of Query msg received from an upstream node.
----------- (see the .pdf version for missing diagram or
State: INIT refer to Appendix A.2 if reading the .txt version)
-----------
Condition Action State Figure 5: QNE node: "QoS state installed" state
------------------------+-------------------------+------------ Notes:
UCT | initialize variables |IDLE 4) Unsuccessful reservation. RII requested at the local node.
------------------------+-------------------------+------------ NOTIFY(RSN) is sent further to the upstream nodes.
6) QoS State refresh procedures
8) We assume that handling of QoS state lifetime expiration event is
based on the local policy of the node. NOTIFY/Reserve(Ton)
messages might be sent to other peers.
9) Update QoS state and Re-route functionality
(see the .pdf version for missing diagram or
refer to Appendix A.2 if reading the .txt version)
----------- Figure 6: QNE node: "QoS state installed & WaitRESP1" and "WaitRESP2" states
State: IDLE 6.4 State machine for QNR QoS NSLP node
-----------
Condition Action State Note The following are diagrams of the QNR QoS NSLP node state machine.
------------------------+-------------------------+-----------+---
rx_QUERY(RII) |tx_RESPONSE(RII) |IDLE |
| | |
(rx_RESERVE)&&(!RII) |Tx_RESPONSE(RSN, |IDLE |
&& (RMF="NO_A") | E_SPEC="0x04?") | |
| | |
| | |
(rx_RESERVE(RII)) |Tx_RESPONSE(RII, |IDLE |
&& (RMF="NO_A") | E_SPEC="0x04?") | |
| | |
(tg_QUERY) && |tx_QUERY(w/oRII) |WAITRESV |1)
(!setRII) | | |
| | |
| | |
(rx_RESERVE(RII)) |Install QoS state |QoS state |2)
&& (RMF="AVAIL") |Tx_RESPONSE(RII, |installed |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE)&&(!RII) |Install QoS state |QoS state |2)
&& (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed |
E_SPEC="0x02?") | |
------------------------+-------------------------+-----------+---
---------------
State: WAITRESV
---------------
Condition Action State Note (see the .pdf version for missing diagram or
------------------------+-------------------------+-----------+--- refer to Appendix A.3 if reading the .txt version)
TIMEOUT_WaitResp |Tx_QUERY(w/oRII) |WAITRESV |
| | |
(TIMEOUT_WaitResp) |Send info to Appl. |IDLE |
&& (MaxRetry) | | |
| | |
(rx_RESERVE)&&(!RII) |tx_RESPONSE(RSN, |IDLE |3)
&& (RMF="Not_AVAIL") | E_SPEC="0x04?") | |
|Send info to Appl. | |
| | |
(rx_RESERVE(RII)) |tx_RESPONSE(RII, |IDLE |3)
&& (RMF="Not_AVAIL") | E_SPEC="0x04?") | |
|Send info to Appl. | |
| | |
rx_RESPONSE(E_SPEC= |Send info to Appl. |IDLE |4)
"ERROR")| | |
| | |
| | |
(rx_RESERVE)&&(!RII) |Install QoS state |QoS state |
&& (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE(RII)) |Install QoS State |QoS state |
&& (RMF="AVAIL") |Tx_RESPONSE(RII) |installed |
| | |
------------------------+-------------------------+-----------+---
------------------
State: QoS state installed
------------------
Condition Action State Note Figure 7: QNR node
------------------------+-------------------------+-----------+---
rx_RESERVE |Refresh QoS state |QoS state |
|If(ACK="On") |installed |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?")| |
| | |
TIMEOUT_StateLifetime |Delete QoS state |IDLE |5)
| | |
rx_RESERVE(Ton) |Delete QoS state |IDLE |
| | |
------------------------+-------------------------+------------
Note: Notes:
1) Initiation of Receiver-side reservation 1) Initiation of Receiver-side reservation
2) Successful Reservation with& without response request from the 2) Successful Reservation with& without response request from the QNI
QNI side side
3) Unsuccessful Reservation with & without response request from 3) Unsuccessful Reservation with & without response request from the
QNI side.
5) We assume that handling of QoS state lifetime expiration event is
based on the local policy of the node. NOTIFY/Reserve(Ton)
messages might be sent to other peers.
6) Successful Reservation update with& without response request from
the QNI side. the QNI side.
4) How to signal unsuccessful reservation for Receiver initiated
reservation(No RII is included, received Response(RSN) should
not be forwarded.
5) We assume that handling of QoS state lifetime expiration event
is based on the local policy of the node. NOTIFY/Reserve(Ton)
messages might be sent to other peers. These issues are not
described in the QoS NSLP draft.
9. Security Considerations 7. Security Considerations
This document does not raise new security considerations. Any This document does not raise new security considerations. Any
security concerns with the QoS NSLP are likely reflected in security security concerns with QoS NSLP are likely reflected in security
related NSIS work already (such as [1] or [6]). related NSIS work already (such as [1] or [6]).
For the time being, the state machines described in this document do For the time being, the state machines described in this document do
not consider the security aspect of QoS NSLP protocol itself. A not consider the security aspect of QoS NSLP protocol itself. A
future versions of this document will add security relevant states future versions of this document will add security relevant states
and state transitions. and state transitions.
10. Open Issues 8. Open Issues
This document tries to describe possible states and transitions for This document tries to describe possible states and transitions for
QoS NSLP according to its current specification [1], Section 5. We QoS NSLP according to its current specification [1], Section 5. We
found some issues during the development of the state machines. found some issues during the development of the state machines.
o For receiver-initiated reservation, it is unclear who triggers a 1. For receiver-initiated reservation, it is unclear who triggers a
teardown. teardown.
o Bi-directional reservation is difficult to support as the state 2. Bi-directional reservation is difficult to support as the state
machine becomes quite complex (note at one particular point in machine becomes quite complex (note at one particular point in
time the protocol state engine can be only in one state). time the protocol state engine can be only in one state).
o How to signal unsuccessful reservation for Receiver initiated 3. How to signal unsuccessful reservation for Receiver initiated
reservation (No RII included; a resulting Response(RSN) cannot be reservation (No RII included; a resulting Response(RSN) cannot be
forwarded further than the next peer). No Error_SPEC value forwarded further than the next peer). We use NOTIFY message.
specified for this case. 4. If QoS state lifetime expires in QNI, should RESERVE(Ton) be sent
o If QoS state lifetime expires in QNI, should RESERVE(Ton) be sent
downstream the path? downstream the path?
o The case of unsuccessful reservation at a QNE node and no RII 5. The case of unsuccessful reservation at a QNE node and no RII
specified by upstream nodes. According to the spec RESPONSE(RSN) specified by upstream nodes. According to the spec RESPONSE(RSN)
should not be forwarded further than the next peer. Currently we should not be forwarded further than the next peer. Currently we
use NOTIFY(RSN) that is sent further to the upstream nodes. use NOTIFY(RSN) that is sent further to the upstream nodes.
o We assume that handling of QoS state lifetime expiration event is 6. We assume that handling of QoS state lifetime expiration event is
based on the local policy of the node. NOTIFY/Reserve(Ton) based on the local policy of the node. NOTIFY/Reserve(Ton)
messages might be sent to other peers. These issues are not messages might be sent to other peers.
described in the QoS NSLP draft. 7. The draft states that RESERVE message MUST be sent only towards
o The draft states that RESERVE message MUST be sent only towards the QNR. This is not the case when re-routing procedure is done
the QNR. This is not the case when re-routing procedure is done and RESERVE(Ton) message should be sent from merging QNE node for
and RESERVE(Ton) message should be sent from merging QNE node for deleting the old branch. We believe this is towards the QNI.
deleting the old branch. We believe this is towards the QNI. 8. Re-routing functionality described in this document is not
o Re-routing functionality described in this document is not complete and need further consideration.
complete and need further consideration.
11. Change History 9. Change History
11.1 Changes in Version -01 9.1 Changes in Version -01
Version -01 covers more functionalities of the QoS NSLP. This 1. Notation of the nodes changed to QNI, QNE and QNR.
requires addition and changes of the notations. The main details are
as follows:
1. Notation of the nodes changed to QNI, QNE and QNR. 2. Description of soft state refresh functionality.
2. Description of soft state refresh functionality. 3. Support of ACK flag in the common header.
3. Support of ACK flag in the common header. 4. Include of QoS NSLP objects, flags from the common header and
4. Include of QoS NSLP objects, flags from the common header and entries stored with the installed QoS state in a node: ACK,
entries stored with the installed QoS state in a node: ACK, Replace, RSN, Error_SPEC, QSPEQ, FlowID, SII.
Replace, RSN, Error_SPEC, QSPEQ, FlowID, SII. 5. Initial description of Re-routing functionality.
5. Initial description of Re-routing functionality (Section 10). 6. For support of all listed changes, some notations are changed.
6. For support of all listed changes, some notations are changed.
12. Acknowledgments 9.2 Changes in Version -02
1. Switch to .pdf format of the draft and include graphic diagrams.
2. Update notation from "Summary refresh" to "Reduced refresh"
3. Description of QoS reservation update/upgrade
10. Acknowledgments
The authors would like to thank Sven Van den Bosch for his feedback. The authors would like to thank Sven Van den Bosch for his feedback.
13. References 11. References
13.1 Normative References 11.1. Normative References
[1] Bosch, S., Karagiannis, G. and A. McDonald, "NSLP for [1] Manner, J., Karagiannis, G., McDonald, A. and S. Van den
Quality-of-Service signaling", Bosch "NSLP for Quality-of-Service signaling", Internet
Internet-Draft draft-ietf-nsis-qos-nslp-05, October 2004. draft, draft-ietf-nsis-qos-nslp-07, July 2005.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement [2] Bradner, S., "Key words for use in RFCs to Indicate
Levels", March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
13.2 Informative References 11.2. Informative References
[3] Vollbrecht, J., Eronen, P., Petroni, N. and Y. Ohba, "State [3] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba,
Machines for Extensible Authentication Protocol (EAP) Peer and "State Machines for Extensible Authentication Protocol
Authenticator", Internet-Draft draft-ietf-eap-statemachine-06, (EAP) Peer and Authenticator", draft-ietf-eap-
December 2004. statemachine-06 (work in progress), December 2004.
[4] Institute of Electrical and Electronics Engineers, "DRAFT [4] Institute of Electrical and Electronics Engineers, "DRAFT
Standard for Local and Metropolitan Area Networks: Port-Based Standard for Local and Metropolitan Area Networks: Port-
Network Access Control (Revision)", IEEE 802-1X-REV/D9, January Based
2004. Network Access Control (Revision)", IEEE 802-1X-REV/D11,
July 2004.
[5] Ohba, Y., "State Machines for Protocol for Carrying [5] Ohba, Y., "State Machines for Protocol for Carrying
Authentication for Network Access (PANA)", Authentication for Network Access (PANA)",
Internet-Draft draft-ohba-pana-statemachine-01, February 2005. draft-ohba-pana-statemachine-01 (work in progress),
February 2005.
[6] Tschofenig, H. and D. Kroeselberg, "Security Threats for NSIS", [6] Tschofenig, H. and D. Kroeselberg, "Security Threats for
Internet-Draft draft-ietf-nsis-threats-06, October 2004. NSIS", draft-ietf-nsis-threats-06 (work in progress),
October 2004.
Appendix A. ASCII versions of state diagrams
This appendix contains the state diagrams in ASCII format. Please
use the PDF version whenever possible: it is much easier to
understand.
The notation is as follows: for each state there is a separate table
that lists in each row:
- an event that triggers a transition,
- actions taken as a result of the incoming event,
- and the new state at which the transitions ends.
A.1. State machine for QNI QoS NSLP node (Figures 2,3)
-----------
State: IDLE
-----------
Condition Action State Note
------------------------+-------------------------+-----------+---
(tg_RESERVE) && |Send info to Application |IDLE |
(RMF="NO_AVAIL") | | |
| | |
(tg_RESERVE) && |tx_RESERVE(w/oRII), |QoS state |
(!setRII) && | Install QoS state, |Instaled |
(RMF="AVAIL") | Send info to Application| |
| | |
(tg_RESERVE) && (setRII)|Install QoS state, |QoS state |
&&(RMF="AVAIL") |tx_RESERVE(RII) |Installed +|
| |WAITRESP2 |
| | |
(rx_QUERY)&&(!RII)&& |Tx_RESPONSE(RSN, |IDLE |1)
(RMF="NO_AVAIL") | E_SPEC="ERROR") | |2)
| | |
(rx_QUERY) && (!RII) && |tx_RESERVE(w/oRII), |QoS state |2)
(!setRII) && | Install QoS state, |Instaled |
(RMF="AVAIL") | Send info to Application| |
| | |
(rx_QUERY) && (!RII) && |Install QoS state, |QoS state |2)
(setRII) && |tx_RESERVE( RII) |Installed +|
(RMF="AVAIL") | |WAITRESP2 |
| | |
(tg_QUERY) && (setRII) |tx_QUERY(RII) |WAITRESP1 |
| | |
------------------------+-------------------------+-----------+---
Figure 8
----------------
State: WAITRESP1
----------------
Condition Action State
------------------------+-------------------------+------------
(TIMEOUT_WaitResp) && |tx_QUERY(RII) |WAITRESP1
(!MaxRetry) | |
| |
(TIMEOUT_WaitResp) && |Send info to Application |IDLE
(MaxRetry) | |
| |
rx_RESPONSE |Send info to Application |IDLE
------------------------+-------------------------+------------
----------------
State: QoS state installed + WAITRESP2
----------------
Condition Action State
------------------------+-------------------------+------------
(TIMEOUT_WaitResp) && |tx_RESERVE(RII) |QoS state
(!MaxRetry) | |installed +
| |WAITRESP2
| |
| |
(TIMEOUT_WaitResp) && |Delete QoS state |IDLE
(MaxRetry) |Send info to Application |
| |
rx_RESPONSE(RII, |Delete QoS state |IDLE
E_SPEC="0x04?") |Send info to Application |
| |
| |
rx_RESPONSE(RII, |Send info to Application |QoS state
E_SPEC="0x02?") |SummaryRefresh="On" |installed
------------------------+-------------------------+------------
------------------
State: QoS state installed
------------------
Condition Action State Note
------------------------+-------------------------+-----------+---
rx_QUERY(RII) |ProcessQUERY |QoS state |
|tx_RESPONSE(RII) |installed |
| | |
TIMEOUT_Refresh |If (SummaryRefresh="On") |QoS state |
| (Tx_RESERVE(RSN)) && |installed |
| (SummaryRefresh="Off") | |
|Else | |
| Tx_RESERVE(RSN,QSPEC); | |
| | |
rx_RESPONSE(RSN, |SummaryRefresh="On" |QoS state |
E_SPEC="0x02?") | |installed |
| | |
TIMEOUT_StateLifetime |Delete QoS state |IDLE |
|Send info to Application | |
| | |
tg_TEARDOWN |Delete QoS state, |IDLE |
| tx_RESERVE(Ton) | |
| | |
rx_NOTIFY(RSN, |Delete QoS state |IDLE |
E_SPEC="0x04?") |Send info to Application | |
| | |
(tg_RESERVE) && |tx_RESERVE(w/oRII), |QoS state |
(!setRII) && | Update QoS state, |Instaled |
(RMF="AVAIL") | Send info to Application| |
| | |
(tg_RESERVE) && (setRII)|Update QoS state, |QoS state |
&&(RMF="AVAIL") |tx_RESERVE(RII) |Installed +|
| |WAITRESP2 |
------------------------+-------------------------+-----------+---
Figure 9
A.2. State machine for QNE QoS NSLP node (Figures 4,5,6)
-----------
State: IDLE
-----------
Condition Action State Note
------------------------+-------------------------+-----------+---
(rx_QUERY) && (!RII) |tx_QUERY(w/oRII) |IDLE |2)
| | |
(rx_QUERY(RII, |ProcessQUERY, |IDLE |7)
SCOPING="Next_hop") |Tx_RESPONSE(RII) | |
| | |
(rx_QUERY) && (RII) |tx_QUERY(w/RII) |IDLE |7)
| | |
(rx_RESERVE(RII)) && |Tx_RESPONSE(RII, |IDLE |3)
(RMF="NO_AVAIL") | E_SPEC="0x04?") | |
| | |
(rx_RESERVE) && (!RII)&&|Tx_RESPONSE(RSN, |IDLE |3)
(RMF="NO_AVAIL") | E_SPEC="0x04?") | |
| | |
(rx_RESPONSE(RII)) && |Tx_RESPONSE(RII) |IDLE |
(CheckRII="Not_LOCAL")| | |
| | |
(rx_RESERVE)&& !(setRII)|Install QoS state, |QoS State |1a)
&& (RMF="AVAIL") |If(ACK="On") |Installed |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
|If(RII) Tx_RESPONSE(RII) | |
|Else Tx_RESPONSE(w/oRII)| |
| | |
(rx_RESERVE(SCOPING= |Install QoS state, |QoS State |1b)
"Next_hop")) && |If(RII) Tx_RESPONSE(RII, |Installed |
(RMF="AVAIL") | E_SPEC="0x02?") | |
|Else Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE) && (setRII)|Install QoS state, |QoS State |4)
&& (RMF="AVAIL") |Tx_RESPONSE(RII), |Installed +|
|If(ACK="On") |WAITRESP1 |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
| | |
(tg_QUERY) && (setRII) |tx_QUERY(RII) |WAITRESP2 |5)
------------------------+-------------------------+-----------+---
Figure 10
------------------
State: QoS State Installed
------------------
Condition Action State Note
------------------------+-------------------------+-----------+---
rx_RESERVE(Ton) |tx_RESERVE(Ton), |IDLE |
|Delete QoS state | |
| | |
rx_RESERVE |Refresh QoS state |QoS State |6)
|If(ACK="On") |Installed |
|Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?") | |
| | |
rx_RESPONSE(RSN, |SummaryRefresh="On" |QoS State |6)
E_SPEC="0x02?") | |Installed |
| | |
TIMEOUT_Refresh |If (SummaryRefresh="On") |QoS State |6)
| (Tx_RESERVE(RSN)) |Installed |
| &&(SummaryRefresh="Off")| |
|Else | |
| Tx_RESERVE(RSN,QSPEC) | |
| | |
(rx_RESPONSE(RII, |SummaryRefresh="On" |QoS State |
E_SPEC="0x02?")) |Tx_RESPONSE(RII, |Installed |
&&(ChechRII="NOT_LOCAL")| E_SPEC="0x02?") | |
| | |
| | |
(TIMEOUT_StateLifetime) |Delete QoS state |IDLE |8)
| | |
(rx_RESPONSE(RII, | | |
E_SPEC="0x04?")) |Delete QoS state |IDLE |
&&(ChechRII="NOT_LOCAL")|rx_RESPONSE(RII, | |
| E_SPEC="0x04?") | |
| | |
rx_RESPONSE(RSN, |Delete QoS state |IDLE |
E_SPEC="0x04?") |rx_NOTIFY(RSN, | |
| E_SPEC="0x04?") | |
| | |
rx_NOTIFY(RSN, |Delete QoS state |IDLE |
E_SPEC="0x04?") |rx_NOTIFY(RSN, | |
| E_SPEC="0x04?") | |
| | |
| | |
(Rx_RESERVE)&&(currSII) |Update QoS state |QoS State |9)
&&(Replace="On") |If (RII) |Installed |
&&(RMF="AVAIL") | Tx_RESERVE(RII,QSPEC)| |
&&((recRSN>=currRSN) |else | |
||(newFlowID)) | Tx_RESERVE(RSN,QSPEC);| |
|If (ACK="On")&&(!RII) | |
| tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
| | |
| | |
(Rx_RESERVE)&&(newSII) |Update QoS state |QoS State |9)
&&(RMF="AVAIL") |If (RII) |Installed |
&&((recRSN>=currRSN) | Tx_RESERVE(RII,QSPEC)| |
||(newFlowID)) |else | |
| Tx_RESERVE(RSN,QSPEC);| |
|If (ACK="On")&&(!RII) | |
| tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
|If (Replace="On") | |
| tx_Reserve(Ton) | |
| to currSII | |
| | |
(rx_RESERVE)&& !(setRII)|Update QoS state, |QoS State |
&& (RMF="AVAIL") |If(ACK="On") |Installed |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
|If(RII) Tx_RESPONSE(RII) | |
|Else Tx_RESPONSE(w/oRII)| |
| | |
(rx_RESERVE(SCOPING= |Update QoS state, |QoS State |
"Next_hop")) && |If(RII) Tx_RESPONSE(RII, |Installed |
(RMF="AVAIL") | E_SPEC="0x02?") | |
|Else Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE) && (setRII)|Update QoS state, |QoS State |
&& (RMF="AVAIL") |Tx_RESPONSE(RII), |Installed +|
|If(ACK="On") |WAITRESP1 |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?");| |
------------------------+-------------------------+-----------+---
Figure 11
----------------
State: QoS State Installed + WAITRESP1
----------------
Condition Action State Note
------------------------+-------------------------+-----------+---
(TIMEOUT_WaitResp) && |tx_RESERVE(RII) |WAITRESP1 |
(!MaxRetry) | | |
| | |
(TIMEOUT_WaitResp) && |Delete QoS State, | |
(MaxRetry) && |tx_NOTIFY(RSN, |IDLE |
| E_SPEC="0x04?") | |
|Send info to Application | |
| | |
(rx_RESPONSE(RII, |Delete QoS State, |IDLE |4)
E_SPEC="0x04?")) |tx_NOTIFY(RSN, | |
&&(CheckRII="LOCAL") | E_SPEC="0x04?") | |
|Send info to Application | |
| | |
(rx_RESPONSE(RII, |Send info to Application |QoS State |
E_SPEC="0x02?")) |SummaryRefresh="On" |Installed |
&&(CheckRII="LOCAL") | | |
------------------------+-------------------------+-----------+---
----------------
State: WAITRESP2
----------------
Condition Action State Note
------------------------+-------------------------+-----------+---
(TIMEOUT_WaitResp) && |tx_QUERY(RII) |WAITRESP2 |
(!MaxRetry) | | |
| | |
(TIMEOUT_WaitResp) && |Send info to Application |IDLE |
(MaxRetry) | | |
| | |
(rx_RESPONSE) && |Send info to Application |IDLE |
(CheckRII="LOCAL") | | |
------------------------+-------------------------+-----------+---
Figure 12
A.3. State machine for QNR QoS NSLP node (Figure 7)
-----------
State: IDLE
-----------
Condition Action State Note
------------------------+-------------------------+-----------+---
rx_QUERY(RII) |tx_RESPONSE(RII) |IDLE |
| | |
(rx_RESERVE)&&(!RII) |Tx_RESPONSE(RSN, |IDLE |
&& (RMF="NO_A") | E_SPEC="0x04?") | |
| | |
| | |
(rx_RESERVE(RII)) |Tx_RESPONSE(RII, |IDLE |
&& (RMF="NO_A") | E_SPEC="0x04?") | |
| | |
(tg_QUERY) && |tx_QUERY(w/oRII) |WAITRESV |1)
(!setRII) | | |
| | |
| | |
(rx_RESERVE(RII)) |Install QoS state |QoS state |2)
&& (RMF="AVAIL") |Tx_RESPONSE(RII, |installed |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE)&&(!RII) |Install QoS state |QoS state |2)
&& (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed |
E_SPEC="0x02?") | |
------------------------+-------------------------+-----------+---
---------------
State: WAITRESV
---------------
Condition Action State Note
------------------------+-------------------------+-----------+---
TIMEOUT_WaitResp |Tx_QUERY(w/oRII) |WAITRESV |
| | |
(TIMEOUT_WaitResp) |Send info to Appl. |IDLE |
&& (MaxRetry) | | |
| | |
(rx_RESERVE)&&(!RII) |tx_RESPONSE(RSN, |IDLE |3)
&& (RMF="Not_AVAIL") | E_SPEC="0x04?") | |
|Send info to Appl. | |
| | |
(rx_RESERVE(RII)) |tx_RESPONSE(RII, |IDLE |3)
&& (RMF="Not_AVAIL") | E_SPEC="0x04?") | |
|Send info to Appl. | |
| | |
rx_NOTIFY(RSN, |Send info to Appl. |IDLE |
E_SPEC="0x04?")| | |
| | |
| | |
(rx_RESERVE)&&(!RII) |Install QoS state |QoS state |
&& (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE(RII)) |Install QoS State |QoS state |
&& (RMF="AVAIL") |Tx_RESPONSE(RII) |installed |
| | |
------------------------+-------------------------+-----------+---
------------------
State: QoS state installed
------------------
Condition Action State Note
------------------------+-------------------------+-----------+---
rx_RESERVE |Refresh QoS state |QoS state |
|If(ACK="On") |installed |
| Tx_RESPONSE(RSN, | |
| E_SPEC="0x02?")| |
| | |
TIMEOUT_StateLifetime |Delete QoS state |IDLE |5)
| | |
rx_RESERVE(Ton) |Delete QoS state |IDLE |
| | |
(rx_RESERVE(RII)) |Update QoS state |QoS state |6)
&& (RMF="AVAIL") |Tx_RESPONSE(RII, |installed |
| E_SPEC="0x02?") | |
| | |
(rx_RESERVE)&&(!RII) |Update QoS state |QoS state |6)
&& (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed |
E_SPEC="0x02?") | |
------------------------+-------------------------+------------
Figure 13
Authors' Addresses Authors' Addresses
Xiaoming Fu Xiaoming Fu
University of Goettingen University of Goettingen
Telematics Group Telematics Group
Lotzestr. 16-18 Lotzestr. 16-18
Goettingen 37083 Goettingen 37083
Germany Germany
skipping to change at page 26, line 26 skipping to change at page 30, line 26
Copies of IPR disclosures made to the IETF Secretariat and any Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at ietf-
ietf-ipr@ietf.org. ipr@ietf.org.
Disclaimer of Validity Disclaimer of Validity
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement Copyright Statement
Copyright (C) The Internet Society (2005). This document is subject Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights. except as set forth therein, the authors retain all their rights.
Acknowledgment Acknowledgement
Funding for the RFC Editor function is currently provided by the Funding for the RFC Editor function is currently provided by the
Internet Society. Internet Society.
 End of changes. 85 change blocks. 
594 lines changed or deleted 760 lines changed or added

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