| < 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/ | ||||