idnits 2.17.00 (12 Aug 2021) /tmp/idnits46609/draft-fu-nsis-qos-nslp-statemachine-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 17. -- Found old boilerplate from RFC 3978, Section 5.5 on line 1038. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 1015. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 1022. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 1028. ** Found boilerplate matching RFC 3978, Section 5.4, paragraph 1 (on line 1044), which is fine, but *also* found old RFC 2026, Section 10.4C, paragraph 1 text on line 39. ** This document has an original RFC 3978 Section 5.4 Copyright Line, instead of the newer IETF Trust Copyright according to RFC 4748. ** This document has an original RFC 3978 Section 5.5 Disclaimer, instead of the newer disclaimer which includes the IETF Trust according to RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 2 instances of too long lines in the document, the longest one being 4 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 522 has weird spacing: '...pstream nodes...' == Line 523 has weird spacing: '...he next peer....' == Line 526 has weird spacing: '...e local polic...' == Line 529 has weird spacing: '... is not the c...' == Line 530 has weird spacing: '...nt from mergi...' == (1 more instance...) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (August 24, 2005) is 6114 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: draft-ietf-nsis-qos-nslp has been published as RFC 5974 ** Downref: Normative reference to an Experimental draft: draft-ietf-nsis-qos-nslp (ref. '1') == Outdated reference: draft-ietf-eap-statemachine has been published as RFC 4137 == Outdated reference: draft-ietf-nsis-threats has been published as RFC 4081 Summary: 7 errors (**), 0 flaws (~~), 11 warnings (==), 7 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 NSIS X. Fu 3 Internet-Draft Univ. Goettingen 4 Expires: February 25, 2005 H. Tschofenig 5 T. Tsenov 6 Siemens 7 August 24, 2005 9 QoS NSLP State Machine 10 draft-fu-nsis-qos-nslp-statemachine-02.txt 12 Status of this Memo 14 By submitting this Internet-Draft, each author represents that any 15 applicable patent or other IPR claims of which he or she is aware 16 have been or will be disclosed, and any of which he or she becomes 17 aware will be disclosed, in accordance with Section 6 of BCP 79. 19 Internet-Drafts are working documents of the Internet Engineering 20 Task Force (IETF), its areas, and its working groups. Note that 21 other groups may also distribute working documents as Internet- 22 Drafts. 24 Internet-Drafts are draft documents valid for a maximum of six months 25 and may be updated, replaced, or obsoleted by other documents at any 26 time. It is inappropriate to use Internet-Drafts as reference 27 material or to cite them other than as "work in progress." 29 The list of current Internet-Drafts can be accessed at 30 http://www.ietf.org/ietf/1id-abstracts.txt. 32 The list of Internet-Draft Shadow Directories can be accessed at 33 http://www.ietf.org/shadow.html. 35 This Internet-Draft will expire on February 25, 2006. 37 Copyright Notice 39 Copyright (C) The Internet Society (2005). All Rights Reserved. 41 Abstract 43 This document describes the state machines for the NSIS Signaling 44 Layer Protocol for Quality-of-Service signaling (QoS NSLP). A set of 45 state machines for QoS NSLP entities at different locations of a flow 46 path are presented in order to illustrate how QoS NSLP may be 47 implemented. 49 Table of Contents 51 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 52 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3 53 3. Notational conventions used in state diagrams . . . . . . . 3 54 4. State Machine Symbols . . . . . . . . . . . . . . . . . . . 5 55 5. Common Rules . . . . . . . . . . . . . . . . . . . . . . . . 6 56 5.1 Common Procedures . . . . . . . . . . . . . . . . . . . . 6 57 5.2 Common Variables . . . . . . . . . . . . . . . . . . . . . 8 58 5.3 Constants . . . . . . . . . . . . . . . . . . . . . . . . 9 59 5.4 Assumptions . . . . . . . . . . . . . . . . . . . . . . . 9 60 6. State machines . . . . . . . . . . . . . . . . . . . . . . . . 10 61 6.1 Diagram notations . . . . . . . . . . . . . . . . . . . . 10 62 6.2 State machine for QNI QoS NSLP node . . . . . . . . . . . 11 63 6.3 State machine for QNE QoS NSLP node . . . . . . . . . . . 13 64 6.4 State machine for QNR QoS NSLP node . . . . . . . . . . . 16 65 7. Security Considerations . . . . . . . . . . . . . . . . . . 17 66 8. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . 17 67 9. Change History . . . . . . . . . . . . . . . . . . . . . . . 17 68 9.1 Changes in Version -01 . . . . . . . . . . . . . . . . . 17 69 9.2 Changes in Version -02 . . . . . . . . . . . . . . . . . 18 70 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 18 71 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 72 12.1 Normative References . . . . . . . . . . . . . . . . . . 19 73 12.2 Informative References . . . . . . . . . . . . . . . . . 19 74 Appendix A. ASCII versions of the state diagrams . . . . . . . . 20 75 A.1 State machine for QNI QoS NSLP node (Figures 2,3). . . . 20 76 A.2 State machine for QNE QoS NSLP node (Figure 4,5,6) . . . 22 77 A.3 State machine for QNE QoS NSLP node (Figure 7) . . . . . 26 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 29 79 Intellectual Property and Copyright Statements . . . . . . . 30 81 1. Introduction 83 This document describes the state machines for QoS NSLP [1], trying 84 to show how QoS NSLP can be implemented to support its deployment. 85 The state machines described in this document are illustrative of how 86 the QoS NSLP protocol defined in [1] may be implemented for the QNI 87 QoS NSLP node, QNE QoS NSLP nodes, and QNR QoS NSLP node in the flow 88 path. Where there are differences [1] are authoritative. The state 89 machines are informative only. Implementations may achieve the same 90 results using different methods. 92 According to [1], there are several possibilities for QoS NSLP 93 signaling, at least including the following: - end-to-end signaling 94 vs. scoped signaling - sender-initiated signaling vs. receiver- 95 initiated signaling (which need to be incorporated into use scenarios 96 when describing state machine. Note they are represented by way of 97 certain objects/flags in Reserve and Query messages.) 99 The messages used in the QoS NSLP protocol can be summarized as 100 follows: 102 Requesting message Responding message 103 ------------------------+--------------------------- 104 RESERVE |None or RESERVE or RESPONSE 105 QUERY |RESERVE or RESPONSE 106 RESPONSE |NONE 107 NOTIFY |NONE 108 ------------------------+--------------------------- 110 We describe a set of state machines for different roles of entities 111 running QoS NSLP to illustrate how QoS NSLP may be implemented. 113 2. Terminology 115 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 116 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 117 document are to be interpreted as described in [2]. 119 3. Notational conventions used in state diagrams 121 The following text is reused from [3] and the state diagrams are 122 based on the conventions specified in [4], Section 8.2.1. Additional 123 state machine details are taken from [5]. 125 The complete text is reproduced here: 127 State diagrams are used to represent the operation of the protocol by 128 a number of cooperating state machines each comprising a group of 129 connected, mutually exclusive states. Only one state of each machine 130 can be active at any given time. 132 All permissible transitions between states are represented by arrows, 133 the arrowhead denoting the direction of the possible transition. 134 Labels attached to arrows denote the condition(s) that must be met in 135 order for the transition to take place. All conditions are 136 expressions that evaluate to TRUE or FALSE; if a condition evaluates 137 to TRUE, then the condition is met. The label UCT denotes an 138 unconditional transition (i.e., UCT always evaluates to TRUE). A 139 transition that is global in nature (i.e., a transition that occurs 140 from any of the possible states if the condition attached to the 141 arrow is met) is denoted by an open arrow; i.e., no specific state is 142 identified as the origin of the transition. When the condition 143 associated with a global transition is met, it supersedes all other 144 exit conditions including UCT. The special global condition BEGIN 145 supersedes all other global conditions, and once asserted remains 146 asserted until all state blocks have executed to the point that 147 variable assignments and other consequences of their execution remain 148 unchanged. 150 On entry to a state, the procedures defined for the state (if any) 151 are executed exactly once, in the order that they appear on the page. 152 Each action is deemed to be atomic; i.e., execution of a procedure 153 completes before the next sequential procedure starts to execute. No 154 procedures execute outside of a state block. The procedures in only 155 one state block execute at a time, even if the conditions for 156 execution of state blocks in different state machines are satisfied, 157 and all procedures in an executing state block complete execution 158 before the transition to and execution of any other state block 159 occurs, i.e., the execution of any state block appears to be atomic 160 with respect to the execution of any other state block and the 161 transition condition to that state from the previous state is TRUE 162 when execution commences. The order of execution of state blocks in 163 different state machines is undefined except as constrained by their 164 transition conditions. A variable that is set to a particular value 165 in a state block retains this value until a subsequent state block 166 executes a procedure that modifies the value. 168 On completion of all of the procedures within a state, all exit 169 conditions for the state (including all conditions associated with 170 global transitions) are evaluated continuously until one of the 171 conditions is met. The label ELSE denotes a transition that occurs 172 if none of the other conditions for transitions from the state are 173 met (i.e., ELSE evaluates to TRUE if all other possible exit 174 conditions from the state evaluate to FALSE). Where two or more exit 175 conditions with the same level of precedence become TRUE 176 simultaneously, the choice as to which exit condition causes the 177 state transition to take place is arbitrary. 179 In addition to the above notation, there are a couple of 180 clarifications specific to this document. First, all boolean 181 variables are initialized to FALSE before the state machine execution 182 begins. Second, the following notational shorthand is specific to 183 this document: 185 = | | ... 187 Execution of a statement of this form will result in 188 having a value of exactly one of the expressions. The logic for 189 which of those expressions gets executed is outside of the state 190 machine and could be environmental, configurable, or based on 191 another state machine such as that of the method. 193 4. State Machine Symbols 195 ( ) 196 Used to force the precedence of operators in Boolean expressions 197 and to delimit the argument(s) of actions within state boxes. 199 ; 200 Used as a terminating delimiter for actions within state boxes. 201 Where a state box contains multiple actions, the order of 202 execution follows the normal English language conventions for 203 reading text. 205 = 206 Assignment action. The value of the expression to the right of 207 the operator is assigned to the variable to the left of the 208 operator. Where this operator is used to define multiple 209 assignments, e.g., a = b = X the action causes the value of the 210 expression following the right-most assignment operator to be 211 assigned to all of the variables that appear to the left of the 212 right-most assignment operator. 214 ! 215 Logical NOT operator. 217 && 218 Logical AND operator. 220 || 221 Logical OR operator. 223 if...then... 224 Conditional action. If the Boolean expression following the if 225 evaluates to TRUE, then the action following the then is executed. 227 { statement 1, ... statement N } 228 Compound statement. Braces are used to group statements that are 229 executed together as if they were a single statement. 231 != 232 Inequality. Evaluates to TRUE if the expression to the left of 233 the operator is not equal in value to the expression to the right. 235 == 236 Equality. Evaluates to TRUE if the expression to the left of the 237 operator is equal in value to the expression to the right. 239 > 240 Greater than. Evaluates to TRUE if the value of the expression to 241 the left of the operator is greater than the value of the 242 expression to the right. 244 <= 245 Less than or equal to. Evaluates to TRUE if the value of the 246 expression to the left of the operator is either less than or 247 equal to the value of the expression to the right. 249 ++ 250 Increment the preceding integer operator by 1. 252 + 253 Arithmetic addition operator. 255 & 256 Bitwise AND operator. 258 5. Common Rules 260 Throughout the document we use terms defined in the [1], such as flow 261 sender, flow receiver, QUERY, RESERVE or RESPONSE. 263 5.1 Common Procedures 265 tx_RESERVE(Toff): 266 Transmit RESERVE message with 'Teardown' bit off 268 tx_RESERVE(Ton): 270 Transmit RESERVE message with 'Teardown' bit on 272 tx_RESPONSE(): 273 Transmit RESPONSE message 275 tx_QUERY(): 276 Transmit QUERY message with 278 tx_QUERY(w/o): 279 Transmit QUERY message without 281 tx_NOTIFY(): 282 Transmit NOTIFY message 284 rx_RESPONSE(): 285 Receive RESPONSE message 287 rx_QUERY(): 288 Receive QUERY message 290 rx_RESERVE(): 291 Receive RESERVE message 293 tx_NOTIFY(): 294 Transmit NOTIFY message 296 TIMEOUT_StateLifetime: 297 State lifetime timer expiration 299 TIMEOUT_Refresh: 300 Refresh interval timer expiration 302 TIMEOUT_Refresh: 303 Wait-Response interval timer expiration 305 tg_QUERY: 306 External trigger to send a QUERY message (typically triggered by 307 the application). 309 tg_RESERVE: 310 External trigger to send a RESERVE message. 312 tg_TEARDOWN: 313 External trigger to clear previously established QoS state 314 (typically triggered by the application). It is translated to a 315 tx_RESERVE(Ton) message. 317 Install QoS state: 319 Install the local QoS state. 321 Refresh QoS state: 322 Refresh the local QoS state. 324 Delete QoS state: 325 Delete the local QoS state. 327 Send info to Application: 328 Report information to the application. 330 RMF: 331 Performs Resource Management Function and returns the following 332 values{AVAIL, NO_AVAIL}. 334 SetRII: 335 Sets the RII object of the messages e.g. the node requests 336 explicit response to the message being sent. Returns values 337 {0,1}. 339 CheckRII: 340 Checks the RII object of received RESPONSE message if it is 341 requested by current node or other upstream node. Returns values 342 {LOCAL, NO_LOCAL}. 344 ProcessQUERY: 345 Processes a Query message and provides the requested info 347 5.2 Common Variables 349 RII: 350 Request Identification Information (RII) object. Logical variable 351 representing if the RII is set or not. Takes values {0,1}. 353 SCOPING: 354 Scoping flag of common message header. Takes values 355 {"Next_hop","Whole_path"}. 357 RSN: 358 Reservation Sequence Number object. Takes values: 359 - recRSN - RSN object of the received message 360 - currRSN - Current stored RSN value for installed QoS state. 361 (Assumed to be the one for the direction where the message comes 362 from e.g.Upstream/Downstream) 364 ACK: 365 Acknowledgement flag of common message header. Takes values 366 {"On","Off"}. 368 ReducedRefresh: 369 Keeps information if Reduced refresh method may be used for 370 refreshing a installed QoS state. Takes value {"On","Off"}. 372 E_SPEC: 373 Error_Spec object. Takes values: 374 - 0x02? - Success values 375 - 0x04? - Transient Failure values 377 QSPEC: 378 QoS specification object. 380 FlowID: 381 Flow ID kept by the installed QoS state. 383 Replace: 384 Replace flag of common message header. Takes values {"On","Off"}. 386 SII: 387 Source Identification Information entry. Takes values: 388 - CurrSII - SII entry stored for current installed QoS state. 389 (Assumed to be the one for the direction where the message comes 390 from e.g.Upstream/Downstream) 391 - newSII - SII of the received message is different from the SII 392 stored for the current installed QoS state. 394 5.3 Constants 396 5.4 Assumptions 398 - For simplification not all included objects in a message are 399 showed. Only those that are significant for the case are showed. 400 State machines do not present handling of messages that are not 401 significant for management of the states such as certain NOTIFY 402 and QUERY messages. 403 - State machines represent handling of messages of the same Session 404 ID and with no protocol errors. Separate parallel instances of 405 the state machines should handle messages for different Session 406 IDs. 407 - Default message handling should be defined for messages with 408 different Session IDs that have impact on current session state 409 and error messages. This is not included in the current version. 410 - ACK flag in the common header is set "On" by default. 411 - Direction of receiving and sending messages is not specified. We 412 assume it is implicit from the context. 414 6. State machines 416 The following section presents the state machine diagrams of QoS NSLP 417 peers. 419 6.1 Diagram notations 421 (see the .pdf version for missing diagram or 422 refer to Appendix A if reading the .txt version) 424 Figure 1: Diagram notations 426 6.2 State machine for QNI QoS NSLP node 428 The following are diagrams of the QNI QoS NSLP node state machine. 430 (see the .pdf version for missing diagram or 431 refer to Appendix A.1 if reading the .txt version) 433 Figure 2: QNI node: "IDLE" state 435 (see the .pdf version for missing diagram or 436 refer to Appendix A.1 if reading the .txt version) 438 Figure 3: QNI node: "WAITRESP1", "WAITRESP2" and "QoS state installed" state 439 6.3 State machine for QNE QoS NSLP node 441 The following are diagrams of the QNE QoS NSLP node state machine. 443 (see the .pdf version for missing diagram or 444 refer to Appendix A.2 if reading the .txt version) 446 Figure 4: QNE node: "IDLE" state 448 Notes: 449 1) Successful reservation without Response request (1a) and with 450 Scoping (1b). 451 2) Processing of Query msg for Receiver initiated reservation 452 3) Unsuccessful reservation with/without request for response from 453 previous node in the path. 454 5) Processing of Query msg triggered by the application layer. 455 7) Processing of Query msg received from an upstream node. 457 (see the .pdf version for missing diagram or 458 refer to Appendix A.2 if reading the .txt version) 460 Figure 5: QNE node: "QoS state installed" state 461 Notes: 462 4) Unsuccessful reservation. RII requested at the local node. 463 NOTIFY(RSN) is sent further to the upstream nodes. 464 6) QoS State refresh procedures 465 8) We assume that handling of QoS state lifetime expiration event is 466 based on the local policy of the node. NOTIFY/Reserve(Ton) 467 messages might be sent to other peers. 468 9) Update QoS state and Re-route functionality 469 (see the .pdf version for missing diagram or 470 refer to Appendix A.2 if reading the .txt version) 472 Figure 6: QNE node: "QoS state installed & WaitRESP1" and "WaitRESP2" states 473 6.4 State machine for QNR QoS NSLP node 475 The following are diagrams of the QNR QoS NSLP node state machine. 477 (see the .pdf version for missing diagram or 478 refer to Appendix A.3 if reading the .txt version) 480 Figure 7: QNR node 482 Notes: 483 1) Initiation of Receiver-side reservation 484 2) Successful Reservation with& without response request from the QNI 485 side 486 3) Unsuccessful Reservation with & without response request from the 487 QNI side. 488 5) We assume that handling of QoS state lifetime expiration event is 489 based on the local policy of the node. NOTIFY/Reserve(Ton) 490 messages might be sent to other peers. 491 6) Successful Reservation update with& without response request from 492 the QNI side. 494 7. Security Considerations 496 This document does not raise new security considerations. Any 497 security concerns with QoS NSLP are likely reflected in security 498 related NSIS work already (such as [1] or [6]). 500 For the time being, the state machines described in this document do 501 not consider the security aspect of QoS NSLP protocol itself. A 502 future versions of this document will add security relevant states 503 and state transitions. 505 8. Open Issues 507 This document tries to describe possible states and transitions for 508 QoS NSLP according to its current specification [1], Section 5. We 509 found some issues during the development of the state machines. 511 1. For receiver-initiated reservation, it is unclear who triggers a 512 teardown. 513 2. Bi-directional reservation is difficult to support as the state 514 machine becomes quite complex (note at one particular point in 515 time the protocol state engine can be only in one state). 516 3. How to signal unsuccessful reservation for Receiver initiated 517 reservation (No RII included; a resulting Response(RSN) cannot be 518 forwarded further than the next peer). We use NOTIFY message. 519 4. If QoS state lifetime expires in QNI, should RESERVE(Ton) be sent 520 downstream the path? 521 5. The case of unsuccessful reservation at a QNE node and no RII 522 specified by upstream nodes. According to the spec RESPONSE(RSN) 523 should not be forwarded further than the next peer. Currently we 524 use NOTIFY(RSN) that is sent further to the upstream nodes. 525 6. We assume that handling of QoS state lifetime expiration event is 526 based on the local policy of the node. NOTIFY/Reserve(Ton) 527 messages might be sent to other peers. 528 7. The draft states that RESERVE message MUST be sent only towards 529 the QNR. This is not the case when re-routing procedure is done 530 and RESERVE(Ton) message should be sent from merging QNE node for 531 deleting the old branch. We believe this is towards the QNI. 532 8. Re-routing functionality described in this document is not 533 complete and need further consideration. 535 9. Change History 537 9.1 Changes in Version -01 539 1. Notation of the nodes changed to QNI, QNE and QNR. 541 2. Description of soft state refresh functionality. 542 3. Support of ACK flag in the common header. 543 4. Include of QoS NSLP objects, flags from the common header and 544 entries stored with the installed QoS state in a node: ACK, 545 Replace, RSN, Error_SPEC, QSPEQ, FlowID, SII. 546 5. Initial description of Re-routing functionality. 547 6. For support of all listed changes, some notations are changed. 549 9.2 Changes in Version -02 551 1. Switch to .pdf format of the draft and include graphic diagrams. 552 2. Update notation from "Summary refresh" to "Reduced refresh" 553 3. Description of QoS reservation update/upgrade 555 10. Acknowledgments 557 The authors would like to thank Sven Van den Bosch for his feedback. 559 11. References 561 11.1. Normative References 563 [1] Manner, J., Karagiannis, G., McDonald, A. and S. Van den 564 Bosch "NSLP for Quality-of-Service signaling", Internet 565 draft, draft-ietf-nsis-qos-nslp-07, July 2005. 567 [2] Bradner, S., "Key words for use in RFCs to Indicate 568 Requirement Levels", BCP 14, RFC 2119, March 1997. 570 11.2. Informative References 572 [3] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba, 573 "State Machines for Extensible Authentication Protocol 574 (EAP) Peer and Authenticator", draft-ietf-eap- 575 statemachine-06 (work in progress), December 2004. 577 [4] Institute of Electrical and Electronics Engineers, "DRAFT 578 Standard for Local and Metropolitan Area Networks: Port- 579 Based 580 Network Access Control (Revision)", IEEE 802-1X-REV/D11, 581 July 2004. 583 [5] Ohba, Y., "State Machines for Protocol for Carrying 584 Authentication for Network Access (PANA)", 585 draft-ohba-pana-statemachine-01 (work in progress), 586 February 2005. 588 [6] Tschofenig, H. and D. Kroeselberg, "Security Threats for 589 NSIS", draft-ietf-nsis-threats-06 (work in progress), 590 October 2004. 592 Appendix A. ASCII versions of state diagrams 594 This appendix contains the state diagrams in ASCII format. Please 595 use the PDF version whenever possible: it is much easier to 596 understand. 598 The notation is as follows: for each state there is a separate table 599 that lists in each row: 600 - an event that triggers a transition, 601 - actions taken as a result of the incoming event, 602 - and the new state at which the transitions ends. 604 A.1. State machine for QNI QoS NSLP node (Figures 2,3) 606 ----------- 607 State: IDLE 608 ----------- 610 Condition Action State Note 611 ------------------------+-------------------------+-----------+--- 612 (tg_RESERVE) && |Send info to Application |IDLE | 613 (RMF="NO_AVAIL") | | | 614 | | | 615 (tg_RESERVE) && |tx_RESERVE(w/oRII), |QoS state | 616 (!setRII) && | Install QoS state, |Instaled | 617 (RMF="AVAIL") | Send info to Application| | 618 | | | 619 (tg_RESERVE) && (setRII)|Install QoS state, |QoS state | 620 &&(RMF="AVAIL") |tx_RESERVE(RII) |Installed +| 621 | |WAITRESP2 | 622 | | | 623 (rx_QUERY)&&(!RII)&& |Tx_RESPONSE(RSN, |IDLE |1) 624 (RMF="NO_AVAIL") | E_SPEC="ERROR") | |2) 625 | | | 626 (rx_QUERY) && (!RII) && |tx_RESERVE(w/oRII), |QoS state |2) 627 (!setRII) && | Install QoS state, |Instaled | 628 (RMF="AVAIL") | Send info to Application| | 629 | | | 630 (rx_QUERY) && (!RII) && |Install QoS state, |QoS state |2) 631 (setRII) && |tx_RESERVE( RII) |Installed +| 632 (RMF="AVAIL") | |WAITRESP2 | 633 | | | 634 (tg_QUERY) && (setRII) |tx_QUERY(RII) |WAITRESP1 | 635 | | | 636 ------------------------+-------------------------+-----------+--- 637 Figure 8 639 ---------------- 640 State: WAITRESP1 641 ---------------- 643 Condition Action State 644 ------------------------+-------------------------+------------ 645 (TIMEOUT_WaitResp) && |tx_QUERY(RII) |WAITRESP1 646 (!MaxRetry) | | 647 | | 648 (TIMEOUT_WaitResp) && |Send info to Application |IDLE 649 (MaxRetry) | | 650 | | 651 rx_RESPONSE |Send info to Application |IDLE 652 ------------------------+-------------------------+------------ 654 ---------------- 655 State: QoS state installed + WAITRESP2 656 ---------------- 658 Condition Action State 659 ------------------------+-------------------------+------------ 660 (TIMEOUT_WaitResp) && |tx_RESERVE(RII) |QoS state 661 (!MaxRetry) | |installed + 662 | |WAITRESP2 663 | | 664 | | 665 (TIMEOUT_WaitResp) && |Delete QoS state |IDLE 666 (MaxRetry) |Send info to Application | 667 | | 668 rx_RESPONSE(RII, |Delete QoS state |IDLE 669 E_SPEC="0x04?") |Send info to Application | 670 | | 671 | | 672 rx_RESPONSE(RII, |Send info to Application |QoS state 673 E_SPEC="0x02?") |SummaryRefresh="On" |installed 674 ------------------------+-------------------------+------------ 676 ------------------ 677 State: QoS state installed 678 ------------------ 680 Condition Action State Note 681 ------------------------+-------------------------+-----------+--- 682 rx_QUERY(RII) |ProcessQUERY |QoS state | 683 |tx_RESPONSE(RII) |installed | 684 | | | 685 TIMEOUT_Refresh |If (SummaryRefresh="On") |QoS state | 686 | (Tx_RESERVE(RSN)) && |installed | 687 | (SummaryRefresh="Off") | | 688 |Else | | 689 | Tx_RESERVE(RSN,QSPEC); | | 690 | | | 691 rx_RESPONSE(RSN, |SummaryRefresh="On" |QoS state | 692 E_SPEC="0x02?") | |installed | 693 | | | 694 TIMEOUT_StateLifetime |Delete QoS state |IDLE | 695 |Send info to Application | | 696 | | | 697 tg_TEARDOWN |Delete QoS state, |IDLE | 698 | tx_RESERVE(Ton) | | 699 | | | 700 rx_NOTIFY(RSN, |Delete QoS state |IDLE | 701 E_SPEC="0x04?") |Send info to Application | | 702 | | | 703 (tg_RESERVE) && |tx_RESERVE(w/oRII), |QoS state | 704 (!setRII) && | Update QoS state, |Instaled | 705 (RMF="AVAIL") | Send info to Application| | 706 | | | 707 (tg_RESERVE) && (setRII)|Update QoS state, |QoS state | 708 &&(RMF="AVAIL") |tx_RESERVE(RII) |Installed +| 709 | |WAITRESP2 | 710 ------------------------+-------------------------+-----------+--- 711 Figure 9 713 A.2. State machine for QNE QoS NSLP node (Figures 4,5,6) 715 ----------- 716 State: IDLE 717 ----------- 719 Condition Action State Note 720 ------------------------+-------------------------+-----------+--- 721 (rx_QUERY) && (!RII) |tx_QUERY(w/oRII) |IDLE |2) 722 | | | 723 (rx_QUERY(RII, |ProcessQUERY, |IDLE |7) 724 SCOPING="Next_hop") |Tx_RESPONSE(RII) | | 725 | | | 726 (rx_QUERY) && (RII) |tx_QUERY(w/RII) |IDLE |7) 727 | | | 729 (rx_RESERVE(RII)) && |Tx_RESPONSE(RII, |IDLE |3) 730 (RMF="NO_AVAIL") | E_SPEC="0x04?") | | 731 | | | 732 (rx_RESERVE) && (!RII)&&|Tx_RESPONSE(RSN, |IDLE |3) 733 (RMF="NO_AVAIL") | E_SPEC="0x04?") | | 734 | | | 735 (rx_RESPONSE(RII)) && |Tx_RESPONSE(RII) |IDLE | 736 (CheckRII="Not_LOCAL")| | | 737 | | | 738 (rx_RESERVE)&& !(setRII)|Install QoS state, |QoS State |1a) 739 && (RMF="AVAIL") |If(ACK="On") |Installed | 740 | Tx_RESPONSE(RSN, | | 741 | E_SPEC="0x02?");| | 742 |If(RII) Tx_RESPONSE(RII) | | 743 |Else Tx_RESPONSE(w/oRII)| | 744 | | | 745 (rx_RESERVE(SCOPING= |Install QoS state, |QoS State |1b) 746 "Next_hop")) && |If(RII) Tx_RESPONSE(RII, |Installed | 747 (RMF="AVAIL") | E_SPEC="0x02?") | | 748 |Else Tx_RESPONSE(RSN, | | 749 | E_SPEC="0x02?") | | 750 | | | 751 (rx_RESERVE) && (setRII)|Install QoS state, |QoS State |4) 752 && (RMF="AVAIL") |Tx_RESPONSE(RII), |Installed +| 753 |If(ACK="On") |WAITRESP1 | 754 | Tx_RESPONSE(RSN, | | 755 | E_SPEC="0x02?");| | 756 | | | 757 (tg_QUERY) && (setRII) |tx_QUERY(RII) |WAITRESP2 |5) 758 ------------------------+-------------------------+-----------+--- 760 Figure 10 762 ------------------ 763 State: QoS State Installed 764 ------------------ 766 Condition Action State Note 767 ------------------------+-------------------------+-----------+--- 768 rx_RESERVE(Ton) |tx_RESERVE(Ton), |IDLE | 769 |Delete QoS state | | 770 | | | 771 rx_RESERVE |Refresh QoS state |QoS State |6) 772 |If(ACK="On") |Installed | 773 |Tx_RESPONSE(RSN, | | 774 | E_SPEC="0x02?") | | 775 | | | 776 rx_RESPONSE(RSN, |SummaryRefresh="On" |QoS State |6) 777 E_SPEC="0x02?") | |Installed | 778 | | | 779 TIMEOUT_Refresh |If (SummaryRefresh="On") |QoS State |6) 780 | (Tx_RESERVE(RSN)) |Installed | 781 | &&(SummaryRefresh="Off")| | 782 |Else | | 783 | Tx_RESERVE(RSN,QSPEC) | | 784 | | | 785 (rx_RESPONSE(RII, |SummaryRefresh="On" |QoS State | 786 E_SPEC="0x02?")) |Tx_RESPONSE(RII, |Installed | 787 &&(ChechRII="NOT_LOCAL")| E_SPEC="0x02?") | | 788 | | | 789 | | | 790 (TIMEOUT_StateLifetime) |Delete QoS state |IDLE |8) 791 | | | 792 (rx_RESPONSE(RII, | | | 793 E_SPEC="0x04?")) |Delete QoS state |IDLE | 794 &&(ChechRII="NOT_LOCAL")|rx_RESPONSE(RII, | | 795 | E_SPEC="0x04?") | | 796 | | | 797 rx_RESPONSE(RSN, |Delete QoS state |IDLE | 798 E_SPEC="0x04?") |rx_NOTIFY(RSN, | | 799 | E_SPEC="0x04?") | | 800 | | | 801 rx_NOTIFY(RSN, |Delete QoS state |IDLE | 802 E_SPEC="0x04?") |rx_NOTIFY(RSN, | | 803 | E_SPEC="0x04?") | | 804 | | | 805 | | | 806 (Rx_RESERVE)&&(currSII) |Update QoS state |QoS State |9) 807 &&(Replace="On") |If (RII) |Installed | 808 &&(RMF="AVAIL") | Tx_RESERVE(RII,QSPEC)| | 809 &&((recRSN>=currRSN) |else | | 810 ||(newFlowID)) | Tx_RESERVE(RSN,QSPEC);| | 811 |If (ACK="On")&&(!RII) | | 812 | tx_RESPONSE(RSN, | | 813 | E_SPEC="0x02?");| | 814 | | | 815 | | | 816 (Rx_RESERVE)&&(newSII) |Update QoS state |QoS State |9) 817 &&(RMF="AVAIL") |If (RII) |Installed | 818 &&((recRSN>=currRSN) | Tx_RESERVE(RII,QSPEC)| | 819 ||(newFlowID)) |else | | 820 | Tx_RESERVE(RSN,QSPEC);| | 821 |If (ACK="On")&&(!RII) | | 822 | tx_RESPONSE(RSN, | | 823 | E_SPEC="0x02?");| | 824 |If (Replace="On") | | 825 | tx_Reserve(Ton) | | 826 | to currSII | | 827 | | | 828 (rx_RESERVE)&& !(setRII)|Update QoS state, |QoS State | 829 && (RMF="AVAIL") |If(ACK="On") |Installed | 830 | Tx_RESPONSE(RSN, | | 831 | E_SPEC="0x02?");| | 832 |If(RII) Tx_RESPONSE(RII) | | 833 |Else Tx_RESPONSE(w/oRII)| | 834 | | | 835 (rx_RESERVE(SCOPING= |Update QoS state, |QoS State | 836 "Next_hop")) && |If(RII) Tx_RESPONSE(RII, |Installed | 837 (RMF="AVAIL") | E_SPEC="0x02?") | | 838 |Else Tx_RESPONSE(RSN, | | 839 | E_SPEC="0x02?") | | 840 | | | 841 (rx_RESERVE) && (setRII)|Update QoS state, |QoS State | 842 && (RMF="AVAIL") |Tx_RESPONSE(RII), |Installed +| 843 |If(ACK="On") |WAITRESP1 | 844 | Tx_RESPONSE(RSN, | | 845 | E_SPEC="0x02?");| | 846 ------------------------+-------------------------+-----------+--- 848 Figure 11 850 ---------------- 851 State: QoS State Installed + WAITRESP1 852 ---------------- 854 Condition Action State Note 855 ------------------------+-------------------------+-----------+--- 856 (TIMEOUT_WaitResp) && |tx_RESERVE(RII) |WAITRESP1 | 857 (!MaxRetry) | | | 858 | | | 859 (TIMEOUT_WaitResp) && |Delete QoS State, | | 860 (MaxRetry) && |tx_NOTIFY(RSN, |IDLE | 861 | E_SPEC="0x04?") | | 862 |Send info to Application | | 863 | | | 864 (rx_RESPONSE(RII, |Delete QoS State, |IDLE |4) 865 E_SPEC="0x04?")) |tx_NOTIFY(RSN, | | 866 &&(CheckRII="LOCAL") | E_SPEC="0x04?") | | 867 |Send info to Application | | 868 | | | 869 (rx_RESPONSE(RII, |Send info to Application |QoS State | 870 E_SPEC="0x02?")) |SummaryRefresh="On" |Installed | 871 &&(CheckRII="LOCAL") | | | 872 ------------------------+-------------------------+-----------+--- 873 ---------------- 874 State: WAITRESP2 875 ---------------- 877 Condition Action State Note 878 ------------------------+-------------------------+-----------+--- 879 (TIMEOUT_WaitResp) && |tx_QUERY(RII) |WAITRESP2 | 880 (!MaxRetry) | | | 881 | | | 882 (TIMEOUT_WaitResp) && |Send info to Application |IDLE | 883 (MaxRetry) | | | 884 | | | 885 (rx_RESPONSE) && |Send info to Application |IDLE | 886 (CheckRII="LOCAL") | | | 887 ------------------------+-------------------------+-----------+--- 889 Figure 12 891 A.3. State machine for QNR QoS NSLP node (Figure 7) 893 ----------- 894 State: IDLE 895 ----------- 897 Condition Action State Note 898 ------------------------+-------------------------+-----------+--- 899 rx_QUERY(RII) |tx_RESPONSE(RII) |IDLE | 900 | | | 901 (rx_RESERVE)&&(!RII) |Tx_RESPONSE(RSN, |IDLE | 902 && (RMF="NO_A") | E_SPEC="0x04?") | | 903 | | | 904 | | | 905 (rx_RESERVE(RII)) |Tx_RESPONSE(RII, |IDLE | 906 && (RMF="NO_A") | E_SPEC="0x04?") | | 907 | | | 908 (tg_QUERY) && |tx_QUERY(w/oRII) |WAITRESV |1) 909 (!setRII) | | | 910 | | | 911 | | | 912 (rx_RESERVE(RII)) |Install QoS state |QoS state |2) 913 && (RMF="AVAIL") |Tx_RESPONSE(RII, |installed | 914 | E_SPEC="0x02?") | | 915 | | | 916 (rx_RESERVE)&&(!RII) |Install QoS state |QoS state |2) 917 && (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed | 918 E_SPEC="0x02?") | | 919 ------------------------+-------------------------+-----------+--- 920 --------------- 921 State: WAITRESV 922 --------------- 924 Condition Action State Note 925 ------------------------+-------------------------+-----------+--- 926 TIMEOUT_WaitResp |Tx_QUERY(w/oRII) |WAITRESV | 927 | | | 928 (TIMEOUT_WaitResp) |Send info to Appl. |IDLE | 929 && (MaxRetry) | | | 930 | | | 931 (rx_RESERVE)&&(!RII) |tx_RESPONSE(RSN, |IDLE |3) 932 && (RMF="Not_AVAIL") | E_SPEC="0x04?") | | 933 |Send info to Appl. | | 934 | | | 935 (rx_RESERVE(RII)) |tx_RESPONSE(RII, |IDLE |3) 936 && (RMF="Not_AVAIL") | E_SPEC="0x04?") | | 937 |Send info to Appl. | | 938 | | | 939 rx_NOTIFY(RSN, |Send info to Appl. |IDLE | 940 E_SPEC="0x04?")| | | 941 | | | 942 | | | 943 (rx_RESERVE)&&(!RII) |Install QoS state |QoS state | 944 && (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed | 945 | E_SPEC="0x02?") | | 946 | | | 947 (rx_RESERVE(RII)) |Install QoS State |QoS state | 948 && (RMF="AVAIL") |Tx_RESPONSE(RII) |installed | 949 | | | 950 ------------------------+-------------------------+-----------+--- 952 ------------------ 953 State: QoS state installed 954 ------------------ 956 Condition Action State Note 957 ------------------------+-------------------------+-----------+--- 958 rx_RESERVE |Refresh QoS state |QoS state | 959 |If(ACK="On") |installed | 960 | Tx_RESPONSE(RSN, | | 961 | E_SPEC="0x02?")| | 962 | | | 964 TIMEOUT_StateLifetime |Delete QoS state |IDLE |5) 965 | | | 966 rx_RESERVE(Ton) |Delete QoS state |IDLE | 967 | | | 968 (rx_RESERVE(RII)) |Update QoS state |QoS state |6) 969 && (RMF="AVAIL") |Tx_RESPONSE(RII, |installed | 970 | E_SPEC="0x02?") | | 971 | | | 972 (rx_RESERVE)&&(!RII) |Update QoS state |QoS state |6) 973 && (RMF="AVAIL") |Tx_RESPONSE(RSN, |installed | 974 E_SPEC="0x02?") | | 975 ------------------------+-------------------------+------------ 977 Figure 13 979 Authors' Addresses 981 Xiaoming Fu 982 University of Goettingen 983 Telematics Group 984 Lotzestr. 16-18 985 Goettingen 37083 986 Germany 988 Email: fu@cs.uni-goettingen.de 990 Hannes Tschofenig 991 Siemens 992 Otto-Hahn-Ring 6 993 Munich, Bayern 81739 994 Germany 996 Email: Hannes.Tschofenig@siemens.com 998 Tseno Tsenov 999 Siemens 1000 Otto-Hahn-Ring 6 1001 Munich, Bayern 81739 1002 Germany 1004 Email: tseno.tsenov@mytum.de 1006 Intellectual Property Statement 1008 The IETF takes no position regarding the validity or scope of any 1009 Intellectual Property Rights or other rights that might be claimed to 1010 pertain to the implementation or use of the technology described in 1011 this document or the extent to which any license under such rights 1012 might or might not be available; nor does it represent that it has 1013 made any independent effort to identify any such rights. Information 1014 on the procedures with respect to rights in RFC documents can be 1015 found in BCP 78 and BCP 79. 1017 Copies of IPR disclosures made to the IETF Secretariat and any 1018 assurances of licenses to be made available, or the result of an 1019 attempt made to obtain a general license or permission for the use of 1020 such proprietary rights by implementers or users of this 1021 specification can be obtained from the IETF on-line IPR repository at 1022 http://www.ietf.org/ipr. 1024 The IETF invites any interested party to bring to its attention any 1025 copyrights, patents or patent applications, or other proprietary 1026 rights that may cover technology that may be required to implement 1027 this standard. Please address the information to the IETF at ietf- 1028 ipr@ietf.org. 1030 Disclaimer of Validity 1032 This document and the information contained herein are provided on an 1033 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 1034 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 1035 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 1036 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 1037 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 1038 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 1040 Copyright Statement 1042 Copyright (C) The Internet Society (2005). This document is subject 1043 to the rights, licenses and restrictions contained in BCP 78, and 1044 except as set forth therein, the authors retain all their rights. 1046 Acknowledgement 1048 Funding for the RFC Editor function is currently provided by the 1049 Internet Society.