< draft-fu-nsis-qos-nslp-statemachine-03.txt   draft-fu-nsis-qos-nslp-statemachine-04.txt >
NSIS X. Fu NSIS X. Fu
Internet-Draft B. Schloer B. Schloer
Expires: September, 2006 Univ. Goettingen Internet-Draft Univ. Goettingen
H. Tschofenig Expiration Date: December 2006 H. Tschofenig
Siemens T. Tsenov
T. Tsenov Siemens
March, 2006 June 25, 2006
QoS NSLP State Machine QoS NSLP State Machine
draft-fu-nsis-qos-nslp-statemachine-03.txt draft-fu-nsis-qos-nslp-statemachine-04.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
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
skipping to change at page 1, line 37 skipping to change at page 1, line 37
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 February 25, 2006. This Internet-Draft will expire on December 25, 2006.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). All Rights Reserved. Copyright (C) The Internet Society (2006). All Rights Reserved.
Abstract Abstract
This document describes the state machines for the NSIS Signaling This document describes a state machine for the NSIS Signaling Layer
Layer Protocol for Quality-of-Service signaling (QoS NSLP). A set of Protocol for Quality-of-Service signaling (QoS NSLP). A combined
state machines for QoS NSLP entities at different locations of a flow state machine for QoS NSLP entities at different locations of a flow
path are presented in order to illustrate how QoS NSLP may be path is 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Notational conventions used in state diagrams . . . . . . . 3 3. Notational conventions used in state diagrams . . . . . . . 3
4. State Machine Symbols . . . . . . . . . . . . . . . . . . . 5 4. State Machine Symbols . . . . . . . . . . . . . . . . . . . 4
5. Common Rules . . . . . . . . . . . . . . . . . . . . . . . . 6 5. Common Rules . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1 Common Procedures . . . . . . . . . . . . . . . . . . . . 6 5.1 Common Procedures . . . . . . . . . . . . . . . . . . . . 6
5.2 Common Variables . . . . . . . . . . . . . . . . . . . . . 8 5.2 Common Variables . . . . . . . . . . . . . . . . . . . . . 7
5.3 Constants . . . . . . . . . . . . . . . . . . . . . . . . 9 5.3 Events . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.4 Assumptions . . . . . . . . . . . . . . . . . . . . . . . 9 5.4 Assumptions . . . . . . . . . . . . . . . . . . . . . . . 8
6. State machines . . . . . . . . . . . . . . . . . . . . . . . . 10 6. State Machine for QoS NSLP nodes . . . . . . . . . . . . . . 8
6.1 Diagram notations . . . . . . . . . . . . . . . . . . . . 10 6.1 State ST_IDLE . . . . . . . . . . . . . . . . . . . . . . 9
6.2 State machine for QNI QoS NSLP node . . . . . . . . . . . 11 6.2 State ST_WR1 . . . . . . . . . . . . . . . . . . . . . . 11
6.3 State machine for QNE QoS NSLP node . . . . . . . . . . . 13 6.3 State ST_WR2 . . . . . . . . . . . . . . . . . . . . . . 12
6.4 State machine for QNR QoS NSLP node . . . . . . . . . . . 16 6.4 State ST_INST . . . . . . . . . . . . . . . . . . . . . . 14
7. Security Considerations . . . . . . . . . . . . . . . . . . 17 7. Security Considerations . . . . . . . . . . . . . . . . . . 15
8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . 17 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . 15
9. Change History . . . . . . . . . . . . . . . . . . . . . . . 17 9. Change History . . . . . . . . . . . . . . . . . . . . . . . 15
9.1 Changes in Version -01 . . . . . . . . . . . . . . . . . 17 9.1 Changes in Version -01 . . . . . . . . . . . . . . . . . 15
9.2 Changes in Version -02 . . . . . . . . . . . . . . . . . 18 9.2 Changes in Version -02 . . . . . . . . . . . . . . . . . 15
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 18 9.3 Changes in Version -03 . . . . . . . . . . . . . . . . . 16
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 9.3 Changes in Version -04 . . . . . . . . . . . . . . . . . 16
12.1 Normative References . . . . . . . . . . . . . . . . . . 19 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 16
12.2 Informative References . . . . . . . . . . . . . . . . . 19 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 16
Appendix A. ASCII versions of the state diagrams . . . . . . . . 20 11.1 Normative References . . . . . . . . . . . . . . . . . . 16
A.1 State machine for QNI QoS NSLP node (Figures 2,3). . . . 20 11.2 Informative References . . . . . . . . . . . . . . . . . 16
A.2 State machine for QNE QoS NSLP node (Figure 4,5,6) . . . 22 Appendix A. ASCII versions of the state diagrams . . . . . . . . 17
A.3 State machine for QNE QoS NSLP node (Figure 7) . . . . . 26 A.1 State ST_IDLE . . . . . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 29 A.2 State ST_WR1 . . . . . . . . . . . . . . . . . . . . . 18
Intellectual Property and Copyright Statements . . . . . . . 30 A.3 State ST_WR2 . . . . . . . . . . . . . . . . . . . . . 19
A.4 State ST_INST . . . . . . . . . . . . . . . . . . . . . 20
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 21
Intellectual Property and Copyright Statements . . . . . . . 22
1. Introduction 1. Introduction
This document describes the state machines for QoS NSLP [1], trying This document describes a state machine for QoS NSLP [1], trying to
to show how QoS NSLP can be implemented to support its deployment. show how QoS NSLP can be implemented to support its deployment. The
The state machines described in this document are illustrative of how state machine described in this document is illustrative of how the
the QoS NSLP protocol defined in [1] may be implemented for the QNI QoS NSLP protocol defined in [1] may be implemented for QoS NSLP
QoS NSLP node, QNE QoS NSLP nodes, and QNR QoS NSLP node in the flow nodes in the flow path. Where there are differences [1] are
path. Where there are differences [1] are authoritative. The state authoritative. The state machine diagrams are informative only.
machines are informative only. Implementations may achieve the same 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: - end-to-end signaling signaling, at least including the following: - end-to-end signaling
vs. scoped signaling - sender-initiated signaling vs. receiver- vs. scoped signaling - sender-initiated signaling vs. receiver-
initiated signaling (which need to be incorporated into use scenarios initiated signaling.
when describing state machine. Note they are represented by way of
certain 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
------------------------+--------------------------- ------------------------+---------------------------
We describe a set of state machines for different roles of entities
running QoS NSLP to illustrate how QoS NSLP may be implemented.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
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
skipping to change at page 6, line 47 skipping to change at page 7, line 12
& &
Bitwise AND 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(<object>): tx_reserve():
Transmit RESERVE message with <object> Transmit RESERVE message
tx_RESPONSE(): tx_response():
Transmit RESPONSE message Transmit RESPONSE message
tx_QUERY(<object>): tx_query():
Transmit QUERY message with <object> Transmit QUERY message
tx_QUERY(w/o<object>):
Transmit QUERY message without <object>
tx_NOTIFY(): tx_notify():
Transmit NOTIFY message Transmit NOTIFY message
Install QoS state(): install_qos_state():
Install the local QoS state. Install the local QoS state.
Refresh QoS state(): delete_qos_state():
Refresh the local QoS state.
Delete QoS state():
Delete the local QoS state. Delete the local QoS state.
Send info to Application(): send_info_to_app():
Report information to the application. Report information to the application.
rx_RESPONSE(): RMF():
Receive RESPONSE message Performs Resource Management Function and returns the following
values{AVAIL, NO_AVAIL}.
rx_QUERY():
Receive QUERY message
rx_RESERVE():
Receive RESERVE message
rx_NOTIFY():
Receive NOTIFY message
TIMEOUT_StateLifetime: is_local(RII):
State lifetime timer expiration Checks the RII object of received RESPONSE message if it is
requested by current node or other upstream node. Returns values
{true, false}.
TIMEOUT_Refresh: is_local(RSN):
Refresh interval timer expiration Checks The RSN object of the received RESPONSE message if it is
requested by current node. Returns values {true, false}.
TIMEOUT_Response: process_query():
Wait-Response interval timer expiration Processes a Query message and provides the requested info
tg_QUERY: 5.2 Common Variables
External trigger to send a QUERY message (typically triggered by
the application).
tg_RESERVE: RII:
External trigger to send a RESERVE message.
tg_TEARDOWN: Request Identification Information (RII) object.
External trigger to clear previously established QoS state
(typically triggered by the application). It is translated to a
tx_RESERVE(Ton) message.
RMF: RSN:
Performs Resource Management Function and returns the following Reservation Sequence Number (RSN) object.
values{AVAIL, NO_AVAIL}.
SetRII: INFO:
Sets the RII object of the messages e.g. the node requests Info_Spec object. Takes values:
explicit response to the message being sent. Returns values - 0x02 - Success values
{0,1}. - 0x04 - Transient Failure values
CheckRII: QSPEC:
Checks the RII object of received RESPONSE message if it is QoS specification object.
requested by current node or other upstream node. Returns values
{LOCAL, NO_LOCAL}.
ProcessQUERY: T-Flag:
Processes a Query message and provides the requested info Tear-Flag. Indicates to tear down reservation state.
5.2 Common Variables A-Flag:
Acknowledgement-Flag of common message header. Takes values
{true, false}.
RII: R-Flag:
Request Identification Information (RII) object. Logical variable Reserve-Init. Indicates a Receiver Initiated Reservation request
representing if the RII is set or not. Takes values {0,1}. in a QUERY message.
SCOPING: S-Flag:
Scoping flag of common message header. Takes values Scoping flag of common message header. Takes values
{"Next_hop","Whole_path"}. {true="Next_hop", false="Whole_path"}.
RSN: setRII:
Reservation Sequence Number object. Takes values: If set a RII object will be included into the message. Takes
- recRSN - RSN object of the received message values {true, false}.
- currRSN - Current stored RSN value for installed QoS state.
(Assumed to be the one for the direction where the message comes
from e.g.Upstream/Downstream)
ACK: setACK:
Acknowledgement flag of common message header. Takes values If set a RSN object will be included into the message. Takes
{"On","Off"}. values {true, false}.
ReducedRefresh: ReducedRefresh:
Keeps information if Reduced refresh method may be used for Keeps information if Reduced refresh method may be used for
refreshing a installed QoS state. Takes value {"On","Off"}. refreshing a installed QoS state. Takes value {"On","Off"}.
E_SPEC:
Error_Spec object. Takes values:
- 0x02? - Success values
- 0x04? - Transient Failure values
QSPEC:
QoS specification object.
FlowID: FlowID:
Flow ID kept by the installed QoS state. Flow ID kept by the installed QoS state.
Replace: Replace:
Replace flag of common message header. Takes values {"On","Off"}. Replace flag of common message header. Takes values {"On","Off"}.
nodepos:
Position of the QoS NSLP node. Takes values {"QNI", "QNE", "QNR"}.
TOGGLE:
Flag to indicate whether the direction of a new message has to be
changed compared to the direction of a received one. Takes values
{true, false}.
DIRECTION:
Direction, in which the message has to be sent. Takes values
{DOWNSTREAM, UPSTREAM}.
SII: SII:
Source Identification Information entry. Takes values: 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 Events
EV_TIMEOUT_STATE_LIFETIME:
State lifetime timer expiration
EV_TIMEOUT_REFRESH:
Refresh interval timer expiration
EV_TIMEOUT_REFRESH:
Wait-Response interval timer expiration
EV_TG_QUERY:
External trigger to send a QUERY message (typically triggered by
the application).
EV_TG_RESERVE:
External trigger to send a RESERVE message.
EV_TG_TEARDOWN:
External trigger to clear previously established QoS state
(typically triggered by the application). It is translated to a
tx_RESERVE(T-Flag) message.
EV_RX_RESPONSE:
RESPONSE message received
EV_RX_QUERY:
QUERY message received
EV_RX_RESERVE:
RESERVE message received
EV_RX_NOTIFY:
NOTIFY message received
5.4 Assumptions 5.4 Assumptions
- 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. shown. 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.
- 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.
- 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.
- ACK flag in the common header is set "On" by default.
- Direction of receiving and sending messages is not specified. We
assume it is implicit from the context.
6. State machines 6. State machine
The following section presents the state machine diagrams of QoS NSLP The following section presents the state machine diagrams of QoS NSLP
peers.
6.1 Diagram notations
(see the .pdf version for missing diagram or
refer to Appendix A if reading the .txt version)
Figure 1: Diagram notations
6.2 State machine for QNI QoS NSLP node
The following are diagrams of the QNI QoS NSLP node state machine. 6.1 State ST_IDLE
(see the .pdf version for missing diagram or (see the .pdf version for missing diagram or
refer to Appendix A.1 if reading the .txt version) refer to Appendix A.1 if reading the .txt version)
Figure 2: QNI node: "IDLE" state Figure 1: State ST_IDLE
(see the .pdf version for missing diagram or (see the .pdf version for missing diagram or
refer to Appendix A.1 if reading the .txt version) refer to Appendix A.1 if reading the .txt version)
Figure 3: QNI node: "WAITRESP1", "WAITRESP2" and "QoS state installed" state Figure 2: State ST_IDLE
6.3 State machine for QNE QoS NSLP node
The following are diagrams of the QNE QoS NSLP node state machine. 6.2 State ST_WR1
(see the .pdf version for missing diagram or (see the .pdf version for missing diagram or
refer to Appendix A.2 if reading the .txt version) refer to Appendix A.2 if reading the .txt version)
Figure 4: QNE node: "IDLE" state Figure 3: State ST_WR1
Notes: 6.3 State ST_WR2
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 (see the .pdf version for missing diagram or
refer to Appendix A.2 if reading the .txt version) refer to Appendix A.2 if reading the .txt version)
Figure 5: QNE node: "QoS state installed" state Figure 4: State ST_WR2
Notes:
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 (see the .pdf version for missing diagram or
refer to Appendix A.2 if reading the .txt version) refer to Appendix A.2 if reading the .txt version)
Figure 6: QNE node: "QoS state installed & WaitRESP1" and "WaitRESP2" states Figure 5: State ST_WR2
6.4 State machine for QNR QoS NSLP node
The following are diagrams of the QNR QoS NSLP node state machine. 6.4 State ST_INST
(see the .pdf version for missing diagram or (see the .pdf version for missing diagram or
refer to Appendix A.3 if reading the .txt version) refer to Appendix A.3 if reading the .txt version)
Figure 7: QNR node Figure 6: State ST_INST
Notes:
1) Initiation of Receiver-side reservation
2) Successful Reservation with& without response request from the QNI
side
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.
7. 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 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.
8. 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.
1. For receiver-initiated reservation, it is unclear who triggers a 1. Bi-directional reservation is difficult to support as the state
teardown.
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).
3. How to signal unsuccessful reservation for Receiver initiated 2. 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). We use NOTIFY message. forwarded further than the next peer). We use NOTIFY message.
4. If QoS state lifetime expires in QNI, should RESERVE(Ton) be sent 3. The case of unsuccessful reservation at a QNE node and no RII
downstream the path?
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.
6. We assume that handling of QoS state lifetime expiration event is 4. 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. messages might be sent to other peers.
7. The draft states that RESERVE message MUST be sent only towards 5. 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 6. Re-routing functionality described in this document is not
complete and need further consideration. complete and need further consideration.
9. Change History 9. Change History
9.1 Changes in Version -01 9.1 Changes in Version -01
1. Notation of the nodes changed to QNI, QNE and QNR. 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.
6. For support of all listed changes, some notations are changed. 6. For support of all listed changes, some notations are changed.
9.2 Changes in Version -02 9.2 Changes in Version -02
1. Switch to .pdf format of the draft and include graphic diagrams. 1. Switch to .pdf format of the draft and include graphic diagrams.
2. Update notation from "Summary refresh" to "Reduced refresh" 2. Update notation from "Summary refresh" to "Reduced refresh"
3. Description of QoS reservation update/upgrade 3. Description of QoS reservation update/upgrade
9.3 Changes in Version -03
1. Deep review of the state machine archtitecure
9.4 Changes in Version -04
1. Reduced the three state machines of QNI, QNE and QNR to one for
all nodes.
2. Introduced new flags to have a finer control of the direction of
the message to be sent.
10. Acknowledgments 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.
11. References 11. References
11.1. Normative References 11.1. Normative References
[1] Manner, J., Karagiannis, G., McDonald, A. and S. Van den [1] Manner, J., Karagiannis, G. and McDonald, A., "NSLP for
Bosch "NSLP for Quality-of-Service signaling", Internet Quality-of-Service Signaling", Internet draft, draft-
draft, draft-ietf-nsis-qos-nslp-07, July 2005. ietf-nsis-qos-nslp-09, March 2006.
[2] Bradner, S., "Key words for use in RFCs to Indicate [2] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
11.2. Informative References 11.2. Informative References
[3] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba, [3] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba,
"State Machines for Extensible Authentication Protocol "State Machines for Extensible Authentication Protocol
(EAP) Peer and Authenticator", draft-ietf-eap- (EAP) Peer and Authenticator", draft-ietf-eap-
statemachine-06 (work in progress), December 2004. statemachine-06 (work in progress), December 2004.
skipping to change at page 20, line 11 skipping to change at page 18, line 17
This appendix contains the state diagrams in ASCII format. Please This appendix contains the state diagrams in ASCII format. Please
use the PDF version whenever possible: it is much easier to use the PDF version whenever possible: it is much easier to
understand. understand.
The notation is as follows: for each state there is a separate table The notation is as follows: for each state there is a separate table
that lists in each row: that lists in each row:
- an event that triggers a transition, - an event that triggers a transition,
- actions taken as a result of the incoming event, - actions taken as a result of the incoming event,
- and the new state at which the transitions ends. - and the new state at which the transitions ends.
A.1. State machine for QNI QoS NSLP node (Figures 2,3) A.1. State ST_IDLE
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)&&(R-Flag)&& |tx_RESPONSE(RSN, |IDLE |
(RMF="NO_AVAIL") | INFO_SPEC=0x04 | |
| | |
(rx_QUERY) && (R-Flag) |tx_RESERVE(RII), |QoS state |
&& (setRII) && | Install QoS state, |Installed +|
(RMF="AVAIL") | if(RII) tx_RESPONSE(RII,|WAITRESP2 |
| INFO_SPEC=0x02) | |
| | |
(rx_QUERY) && (R-Flag) |Install QoS state, |QoS state |
&& (!setRII) && | tx_RESERVE(w/oRII) |Installed +|
(RMF="AVAIL") | if(RII) tx_RESPONSE(RII,|WAITRESP2 |
| INFO_SPEC=0x02) | |
| | |
(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 |
| | |
rx_QUERY(RII) |ProcessQUERY |WAITRESP1 |
|tx_RESPONSE(RII) | |
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 |
INFO_SPEC="0x04?") |Send info to Application | |
| | |
rx_RESPONSE(RII, |Send info to Application |QoS state |
INFO_SPEC="0x02?") |iReducedRefresh="On" |installed |
| | |
rx_QUERY(RII) |ProcessQUERY |QoS state |
|tx_RESPONSE(RII) |installed +|
| |WAITRESP2 |
State: QoS state installed
Condition Action State Note
rx_QUERY(RII) |ProcessQUERY |QoS state | Condition: EV_RX_QUERY
|tx_RESPONSE(RII) |installed | +-------------------------------------------------------+-----------+
| | | | Action | new State |
TIMEOUT_Refresh |If (ReducedRefresh="On") |QoS state | +-------------------------------------------------------+-----------+
| (Tx_RESERVE(RSN)) && |installed | | | |
| (ReducedRefresh="Off") | | | If(!R-Flag) { | ST_IDLE |
|Else | | | if((nodepos==QNE) && (!S-Flag)) { | |
| Tx_RESERVE(RSN,QSPEC); | | | tx_query(TOGGLE=false); | |
| | | | } else { | |
rx_RESPONSE(RSN, |ReducedRefresh="On" |QoS state | | process_query(); | |
INFO_SPEC="0x02?") | |installed | | tx_response(RII, INFO, QSPEC, UPSTREAM); | |
| | | | } | |
TIMEOUT_StateLifetime |Delete QoS state |IDLE | | } | |
|Send info to Application | | | | |
| | | +-------------------------------------------------------+-----------+
tg_TEARDOWN |Delete QoS state, |IDLE | | | |
| tx_RESERVE(Ton) | | | If(R-Flag && (nodepos==QNI) && (RMF()==NO_AVAIL)) { | ST_IDLE |
| | | | send_info_to_app(); | |
rx_NOTIFY(RSN, |Delete QoS state |IDLE | | } | |
INFO_SPEC="0x04?") |Send info to Application | | | | |
| | | +-------------------------------------------------------+-----------+
(tg_RESERVE) && |tx_RESERVE(w/oRII), |QoS state | | | |
(!setRII) && | Update QoS state, |Instaled | | If((R-Flag && (nodepos==QNI) && (RMF==AVAIL)) { | ST_WR2 |
(RMF="AVAIL") | Send info to Application| | | if(setRII==true) { | |
| | | | tx_reserve(RSN, RII, QSPEC, UPSTREAM); | |
(tg_RESERVE) && (setRII)|Update QoS state, |QoS state | | } else if (setACK==true) { | |
&&(RMF="AVAIL") |tx_RESERVE(RII) |Installed +| | tx_reserve(RSN, QSPEC, UPSTREAM); | |
| |WAITRESP2 | | } | |
Figure 9 | } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If((R-Flag && (nodepos==QNI) && (RMF==AVAIL) && | ST_INST |
| (setRII==false) && (setACK==false)) { | |
| tx_reserve(RSN, QSPEC, UPSTREAM); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
A.2. State machine for QNE QoS NSLP node (Figures 4,5,6) Condition: EV_TG_RESERVE
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| If(RMF()==NO_AVAIL) { | ST_IDLE |
| send_info_to_app(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If(RMF()==AVAIL) { | ST_WR2 |
| if (setRII==true) { | |
| tx_reserve(RSN, RII, QSPEC, TOGGLE=false); | |
| } else if(setACK==true) { | |
| tx_reserve(RSN, QSPEC, TOGGLE=false); | |
| } | |
| } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If((RMF()==AVAIL) && (setACK==false) && | ST_INST |
| (setRII==false)) { | |
| tx_reserve(RSN, QSPEC, TOGGLE=false); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
State: IDLE Condition: EV_RX_RESPONSE
Condition Action State Note +-------------------------------------------------------+-----------+
(rx_QUERY) && (!RII) |tx_QUERY(w/oRII) |IDLE |2) | Action | new State |
| | | +-------------------------------------------------------+-----------+
(rx_QUERY(RII, |ProcessQUERY, |IDLE |7) | | |
SCOPING="Next_hop") |Tx_RESPONSE(RII) | | | If(nodepos==QNE) { | ST_IDLE |
| | | | tx_response(TOGGLE=false); | |
(rx_QUERY) && (RII) |tx_QUERY(w/RII) |IDLE |7) | } | |
| | | | | |
(rx_RESERVE(RII)) && |Tx_RESPONSE(RII, |IDLE |3) +-------------------------------------------------------+-----------+
(RMF="NO_AVAIL") | INFO_SPEC="0x04?") | | Condition: EV_RX_RESERVE
| | | +-------------------------------------------------------+-----------+
(rx_RESERVE) && (!RII)&&|Tx_RESPONSE(RSN, |IDLE |3) | Action | new State |
(RMF="NO_AVAIL") | INFO_SPEC="0x04?") | | +-------------------------------------------------------+-----------+
| | | | | |
(rx_RESPONSE(RII)) && |Tx_RESPONSE(RII) |IDLE | | If(RMF()==NO_AVAIL) { | ST_IDLE |
(CheckRII="Not_LOCAL")| | | | tx_response(info=0x04, TOGGLE=true); | |
| | | | } | |
(rx_RESERVE)&& !(setRII)|Install QoS state, |QoS State |1a) | | |
&& (RMF="AVAIL") |If(ACK="On") |Installed | +-------------------------------------------------------+-----------+
| Tx_RESPONSE(RSN, | | | | |
| INFO_SPEC="0x02?") | | | If(RMF()==AVAIL) { | |
|If(RII) Tx_RESPONSE(RII) | | | If((nodepos==QNE) && (S-Flag==false)) { | |
|Else Tx_RESPONSE(w/oRII)| | | tx_reserve(TOGGLE=false); | |
| | | | } | |
(rx_RESERVE(SCOPING= |Install QoS state, |QoS State |1b) | If(A-Flag) { | |
"Next_hop")) && |If(RII) Tx_RESPONSE(RII, |Installed | | tx_response(RSN, info=0x02, TOGGLE=true); | |
(RMF="AVAIL") | INFO_SPEC="0x02?") | | | } | |
|Else Tx_RESPONSE(RSN, | | | If(RII && ((nodepos==QNR) || ((nodepos==QNE) && | |
| INFO_SPEC="0x02?") | | | (S-Flag==true))) { | |
| | | | tx_response(RII, info=0x02, TOGGLE=true); | |
(rx_RESERVE) && (setRII)|Install QoS state, |QoS State |4) | } | |
&& (RMF="AVAIL") |Tx_RESiERVE(RII), |Installed +| | } | |
|If(ACK="On") |WAITRESP1 | | | |
| Tx_RESPONSE(RSN, | | +-------------------------------------------------------+-----------+
| INFO_SPEC="0x02?") | | | | |
| | | | If((nodepos==QNE) && (RMF()==AVAIL)) { | ST_WR2 |
(tg_QUERY) && (setRII) |tx_QUERY(RII) |WAITRESP2 |5) | if(setRII==true) start_response_timer(RII); | |
| if(setACK==true) start_response_timer(RSN); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If((nodepos==QNE) && (RMF()==AVAIL) && | ST_INST |
| (setRII==false) && (setACK==false)) | |
| | |
+-------------------------------------------------------+-----------+
Figure 10 Condition: EV_TG_QUERY
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| If((nodepos==QNR) && (R-Flag)) { | ST_WR1 |
| tx_query(R-Flag, QSPEC, DOWNSTREAM); | |
| start_response_timer(); | |
| } else { | |
| tx_query(RII, QSPEC, DOWNSTREAM); | |
| start_response_timer(RII); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
State: QoS State Installed Figure 7
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, | |
| INFO_SPEC="0x02?") | |
| tx_reserve() | |
| | |
rx_RESPONSE(RSN, |ReducedRefresh="On" |QoS State |6)
INFO_SPEC="0x02?") | |Installed |
| | |
TIMEOUT_Refresh |If (ReducedRefresh="On") |QoS State |6)
| (Tx_RESERVE(RSN)) |Installed |
| &&(ReducedRefresh="Off")| |
|Else | |
| Tx_RESERVE(RSN,QSPEC) | |
| | |
(rx_RESPONSE(RII, |ReducedRefresh="On" |QoS State |
INFO_SPEC="0x02?") |rx_RESPONSE(RII, |Installed |
&&(ChechRII="NOT_LOCAL")| INFO_SPEC="0x02?") | |
| | |
(TIMEOUT_StateLifetime) |Delete QoS state |IDLE |8)
| | |
(rx_RESPONSE(RII, |Delete QoS state |QoS State |
INFO_SPEC="0x04?") |tx_RESPONSE(RII, | |
&&(ChechRII="NOT_LOCAL")| INFO_SPEC="0x04?") | |
| | |
rx_RESPONSE(RSN, |Delete QoS state |IDLE |
INFO_SPEC="0x04?") |rx_RESPONSE(RSN, |Installed |
| INFO_SPEC="0x04?") | |
| | |
rx_NOTIFY(RSN, |Delete QoS state |IDLE |
INFO_SPEC="0x04?") |rx_RESPONSE(RSN, | |
| INFO_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, | |
| INFO_SPEC="0x02?") | |
| | |
(Rx_RESERVE)&&(newSII) |Update QoS state |QoS State |9) A.2. State ST_WR1
&&(RMF="AVAIL") |If (RII) |Installed |
&&((recRSN>=currRSN) | Tx_RESERVE(RII,QSPEC)| |
||(newFlowID)) |else | |
| Tx_RESERVE(RSN,QSPEC);| |
|If (ACK="On")&&(!RII) | |
| tx_RESPONSE(RSN, | |
| INFO_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, | |
| INFO_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") | INFO_SPEC="0x02?") | |
|Else Tx_RESPONSE(RSN, | |
| INFO_SPEC="0x02?") | |
| | |
(rx_RESERVE) && (setRII)|Update QoS state, |QoS State |
&& (RMF="AVAIL") |Tx_RESPONSE(RII), |Installed +|
|If(ACK="On") |WAITRESP1 |
| Tx_RESPONSE(RSN, | |
| INFO_SPEC="0x02?") | |
| | |
(rx_QUERY) && (!RII) |tx_QUERY(w/oRII) |QoS State |
| |Installed |
| | |
(rx_QUERY(RII, |ProcessQUERY, |QoS State |
SCOPING="Next_hop") |Tx_RESPONSE(RII) |Installed |
| | |
(rx_QUERY) && (RII) |tx_QUERY(w/RII) |QoS State |
| |Installed |
Figure 11 Condition: EV_RX_RESPONSE
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| If(nodepos==QNE) { | |
| tx_response(TOGGLE=false); | |
| } | |
| If(is_local(RII)==true) { | |
| stop_response_timer(RII); | |
| } | |
| If(is_local(RSN)==true) { | |
| stop_response_timer(RSN); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If(TIMER_PENDING==true) | ST_WR1 |
| | |
+-------------------------------------------------------+-----------+
| | |
| If(TIMER_PENDING==false) | ST_IDLE |
| | |
+-------------------------------------------------------+-----------+
State: QoS State Installed + WAITRESP1 Condition: EV_TIMEOUT_RESPONSE
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| If((MAX_RETRY==true) && (TIMER_PENDING==false)) | ST_IDLE |
| | |
+-------------------------------------------------------+-----------+
| | |
| If((MAX_RETRY==true) && (TIMER_PENDING==true)) | ST_WR1 |
| | |
+-------------------------------------------------------+-----------+
| | |
| If(MAX_RETRY==false) { | ST_WR1 |
| tx_query(DIRECTION); | |
| restart_response_timer(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
Condition Action State Note Condition: EV_RX_RESERVE
(TIMEOUT_WaitResp) && |tx_RESERVE(RII) |WAITRESP1 | +-------------------------------------------------------+-----------+
(!MaxRetry) | | | | Action | new State |
| | | +-------------------------------------------------------+-----------+
(TIMEOUT_WaitResp) && |Delete QoS State, | | | | |
(MaxRetry) && |tx_RESPONSE(RSN, |IDLE | | if((nodepos==QNR) && (A-Flag)) { | ST_WR2 |
| INFO_SPEC="0x04?") | | | tx_response(RSN, TOGGLE=true); | |
|Send info to Application | | | } | |
| | | | | |
(rx_RESPONSE(RII, |Delete QoS State, |IDLE | +-------------------------------------------------------+-----------+
E_SPEC="0x04?")) |tx_RESPONSE(RSN, | | | | |
&&(CheckRII="LOCAL") | INFO_SPEC="0x04?") | | | If((nodepos==QNR) && RII)) { | ST_WR2 |
|Send info to Application | | | tx_response(RII, TOGGLE=true); | |
| | | | } | |
(rx_RESPONSE(RII, |Send info to Application |QoS State | | | |
E_SPEC="0x02?")) |SummaryRefresh="On" |Installed | +-------------------------------------------------------+-----------+
&&(CheckRII="LOCAL") | | | | | |
| | | | If((nodepos==QNR) && (!RII) && (!A-Flag)) | ST_INST |
(rx_RESPONSE(RII)) && |Tx_RESPONSE(RII) |QoS State | | | |
(CheckRII="Not_LOCAL")| |Installed +| +-------------------------------------------------------+-----------+
| |WAITRESP1 | Figure 8
| | |
(rx_QUERY) && (!RII) |tx_QUERY(w/oRII) |QoS State |
| |Installed +|
| |WAITRESP1 |
| | |
(rx_QUERY(RII, |ProcessQUERY, |QoS State |
SCOPING="Next_hop") |Tx_RESPONSE(RII) |Installed +|
| |WAITRESP1 |
| | |
(rx_QUERY) && (RII) |tx_QUERY(RII) |QoS State |
| |Installed +|
| |WAITRESP1 |
State: WAITRESP2
Condition Action State Note A.3. State ST_WR2
(TIMEOUT_WaitResp) && |tx_QUERY(RII) | |
(!MaxRetry) | | |
| | |
(TIMEOUT_WaitResp) && |Send info to Application |IDLE |
(MaxRetry) | | |
| | |
(rx_RESPONSE) && |Send info to Application |IDLE |
(CheckRII="LOCAL") | | |
| | |
(rx_RESPONSE(RII)) && |Tx_RESPONSE(RII) |WAITRESP2 |
- (CheckRII="Not_LOCAL")| | |
| | |
(rx_QUERY) && (!RII) |tx_QUERY(w/oRII) |WAITRESP2 |
| | |
(rx_QUERY(RII, |ProcessQUERY, |WAITRESP2 |
SCOPING="Next_hop") |Tx_RESPONSE(RII) | |
| | |
(rx_QUERY) && (RII) |tx_QUERY(w/RII) |WAITRESP2 |
| | |
Figure 12 Condition: EV_RX_RESPONSE
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| If(is_local(RII)==true) { | |
| stop_response_timer(RII); | |
| } | |
| If(is_local(RSN)==true) { | |
| stop_response_timer(RSN); | |
| } | |
| | |
| If((info==0x02) && (TIMER_PENDING==false)) { | ST_INST |
| start_refresh_timer(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If((info==0x02) && (TIMER_PENDING==true)) | ST_WR2 |
| | |
+-------------------------------------------------------+-----------+
| | |
| If(info==0x04) { | ST_IDLE |
| delete_qos_state(); | |
| stop_timers() | |
| } | |
| | |
+-------------------------------------------------------+-----------+
A.3. State machine for QNR QoS NSLP node (Figure 7) Condition: EV_RX_RESERVE
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| If((nodepos==QNE) && (S-Flag==false)) { | |
| tx_reserve(TOGGLE=false); | |
| } | |
| | |
| If(T-Flag==true) { | ST_IDLE |
| delete_qos_state(); | |
| stop_timers(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If(T-Flag==false) { | ST_WR2 |
| tx_response(RII, RSN, TOGGLE=true); | |
| restart_refresh_timer(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
State: IDLE Condition: EV_TIMEOUT_RESPONSE
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| If((MAX_RETRY==true) && (TIMER_PENDING==false)) { | ST_IDLE |
| stop_state_timer(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
| | |
| If((MAX_RETRY==true) && (TIMER_PENDING==true)) | ST_WR2 |
| | |
+-------------------------------------------------------+-----------+
| | |
| If(MAX_RETRY==false) { | ST_WR2 |
| tx_reserve(DIRECTION); | |
| restart_response_timer(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
Condition Action State Note Condition: EV_TIMEOUT_REFRESH
rx_QUERY(RII) |tx_RESPONSE(RII) |IDLE | +-------------------------------------------------------+-----------+
| | | | Action | new State |
(rx_RESERVE)&&(!RII) |Tx_RESPONSE(RSN, |IDLE | +-------------------------------------------------------+-----------+
&& (RMF="NO_A") | INFO_SPEC="0x04?") | | | | |
| | | | tx_reserve(RSN, A-Flag, S-Flag, DIRECTION); | ST_WR2 |
| start_response_timer(); | |
| | |
+-------------------------------------------------------+-----------+
(rx_RESERVE(RII)) |Tx_RESPONSE(RII, |IDLE | Condition: EV_TIMEOUT_STATELIFETIME
&& (RMF="NO_A") | INFO_SPEC="0x04?") | | +-------------------------------------------------------+-----------+
| | | | Action | new State |
(tg_QUERY) && |tx_QUERY(R-Flag) |WAITRESV |1) +-------------------------------------------------------+-----------+
(R-Flag) | | | | | |
&& (RMF="AVAIL") | | | | stop_timers(); | ST_IDLE |
| | | | delete_qos_state(); | |
(rx_RESERVE(RII)) |Install QoS state |QoS state |2) | If(nodepos != QNR) { | |
&& (RMF="AVAIL") |Tx_RESPONSE(RII, |installed | | tx_reserve(T-Flag, DIRECTION); | |
| INFO_SPEC="0x02?") | | | } | |
| | | | | |
(rx_RESERVE)&&(!RII) |Install QoS state |QoS state |2) +-------------------------------------------------------+-----------+
&& (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed | Figure 9
INFO_SPEC="0x02?") | |
State: WAITRESV A.4. State ST_INST
Condition Action State Note Condition: EV_RX_RESERVE
TIMEOUT_WaitResp |Tx_QUERY(R-Flag) |WAITRESV | +-------------------------------------------------------+-----------+
| | | | Action | new State |
(TIMEOUT_WaitResp) |Send info to Appl. |IDLE | +-------------------------------------------------------+-----------+
&& (MaxRetry) | | | | | |
| | | | If((nodepos==QNE) && (S-Flag==false)) { | |
rx_RESPONSE(RSN, |Send info to Appl. |IDLE | | tx_reserve(TOGGLE=false); | |
INFO_SPEC="0x04?") | | | | } | |
| | | | | |
(rx_RESERVE)&&(!RII) |Install QoS state |QoS state | +-------------------------------------------------------+-----------+
|Tx_RESPONSE(w/oRII) |installed | | | |
| | | | If(T-Flag==true) { | ST_IDLE |
(rx_RESERVE)&&(RII)) |Install QoS State |QoS state | | delete_qos_state(); | |
|Tx_RESPONSE(RSN, |installed | | stop_timers(); | |
| INFO_SPEC="0x02?") | | | } | |
| | | | | |
rx_QUERY(RII) |tx_RESPONSE(RII) |WAITRESV | | If(T-Flag==false) { | ST_WR2 |
State: QoS state installed | tx_response(RII, RSN, TOGGLE=true); | |
| restart_refresh_timer(); | |
| } | |
| | |
+-------------------------------------------------------+-----------+
Condition Action State Note Condition: EV_TIMEOUT_STATELIFETIME
| | | +-------------------------------------------------------+-----------+
TIMEOUT_StateLifetime |Delete QoS state |IDLE |5) | Action | new State |
| | | +-------------------------------------------------------+-----------+
rx_RESERVE(Ton) |Delete QoS state |IDLE | | | |
| | | | stop_timers(); | ST_IDLE |
(rx_RESERVE) && (RII) |Update QoS state |QoS state |6) | delete_qos_state(); | |
||(ACK=ON) |Tx_RESPONSE(RII, |installed | | If(nodepos != QNR) { | |
| E_SPEC="0x02?") | | | tx_reserve(T-Flag, DIRECTION); | |
| | | | } | |
(rx_RESERVE)&&(!RII) |Update QoS state |QoS state |6) | | |
&& (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed | +-------------------------------------------------------+-----------+
| E_SPEC="0x02?") | |
| | |
rx_QUERY(RII) |tx_RESPONSE(RII) |QoS state |
| |installed |
Figure 13 Condition: EV_TIMEOUT_REFRESH
+-------------------------------------------------------+-----------+
| Action | new State |
+-------------------------------------------------------+-----------+
| | |
| tx_reserve(RSN, A-Flag, S-Flag, DIRECTION); | ST_WR2 |
| start_response_timer(); | |
| | |
+-------------------------------------------------------+-----------+
Figure 10
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
Email: fu@cs.uni-goettingen.de Email: fu@cs.uni-goettingen.de
Bernd Schloer
University of Goettingen
Telematics Group
Lotzestr. 16-18
Goettingen 37083
Germany
Email: bschloer@cs.uni-goettingen.de
Hannes Tschofenig Hannes Tschofenig
Siemens Siemens
Otto-Hahn-Ring 6 Otto-Hahn-Ring 6
Munich, Bayern 81739 Munich, Bayern 81739
Germany Germany
Email: Hannes.Tschofenig@siemens.com Email: Hannes.Tschofenig@siemens.com
Tseno Tsenov Tseno Tsenov
Siemens
Otto-Hahn-Ring 6
Munich, Bayern 81739
Germany
Email: tseno.tsenov@mytum.de Email: tseno.tsenov@mytum.de
Bernd Schloer
University of Goettingen
Telematics Group
Lotzestr. 16-18
Goettingen 37083
Germany
Email: bschloer@cs.uni-goettingen.de
Intellectual Property Statement Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79. found in BCP 78 and BCP 79.
 End of changes. 82 change blocks. 
545 lines changed or deleted 521 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/