|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: iSCSI login phasingAll: Attached are 2 ASCII text files. Once contains a state diagram for the iSCSI Initiator login phase, the other a state diagram for the iSCSI Target login phase. The Initiator state machine has only 6 states with 10 allowed transitions, and the Target state machine has only 5 states with 7 allowed transitions. Both diagrams have the form of a single "spine" with minimal branching. Error/failure transitions are not shown, since they always result in closing the connection during login (on the target side a reject message may be sent first). Both of these diagrams are based on draft 7 with simplifications suggested by Julian, Rod Harrison, Steve Senum, Eddy Quicksall, Stephen Bailey, Barry Reinhold, myself and others. These include: 1. Every login is split into 2 distinct subphases (security and operational) with a required demarcation line between them. 1. Every login starts in the security subphase and must contain at least the keys: TargetName, InitiatorName, HeaderDigest, DataDigest, AuthMethod, and optionally SessionType=Normal. 2. No operational parameters can be negotiated before or during the security subphase (informational parameters, like TargetName, although listed in Appendix D, do not require negotiation and are not considered "operational" here). 3. The security subphase ends with a required 2- or 3-way handshake of Text and Text Response PDUs containing only the SecurityContextComplete=yes key and ending with a message from the target to the initiator. The negotiated security functions become effective only at the successful conclusion of this handshake. 4. The operational subphase always begins immediately after the handshake had been completed. No security parameters can be negotiated during or after the operational subphase. 5. The operational subphase ends with a Login Response with F=1 from the target to the initiator, at which time both target and initiator are in Full Feature Phase (the final state in both diagrams). Comments please. Bob Russell InterOperability Lab University of New Hampshire rdr@iol.unh.edu 603-862-3774 On Fri, 27 Jul 2001, Julian Satran wrote: > Dear colleagues, > > As some of you have complained about difficulty in implementing the login > phase I thought it might be worthwhile to consider a slight departure from > the current description. > > The current text assumes that negotiations are forming one tree and the > "login machine" has to parse the tree. > A leaf node will completely define a state and some pathes may get you to > error. > > I was driven to this design by the need to keep the parsing tree minimal > (under the assumption that any split in subtrees > will result is some parameters needing to appear in several subtrees). > > However - after the noisy (mostly UPPERCASE) debate - I came to realize > that few if any have done the generalized mapping I started with, and > implemented a parser, and ad-hoc, man-glued, engines have to have smaller > trees for the next plugfest (although by then some bright undergraduate > student may take onto himself to give us an open-source yacc definition of > the login phase!). > > I looked at the 2 phases and the number of key=values that they share are > probably limited today at initiator and target names (some > organizations/configurations want them for authentication while some others > will object to them being revealed in the "open phase") and as such we may > want to slit the login in 2, completely bracketed, phases each of them > optional but not both: > > > a security phase that if present must start with the login command and > is bracketed by the pairs SecurityPhase=start and ended by > SecurityPhase=end (on both initiator and target) > an operational-parameter-negotiation phase that must follow security > phase (if there is a security phase) and is bracketed by the pairs > OperationalPhase=start and OperationalPhase=end (on both initiator and > target) > > > Some additional rules will apply: > > No request/response will span phases > The phase closing handshake can start on both sides but if started at > target will be followed by an "full initiator target handshake" - i.e a > new phase or the "curtain close" end always with the target having the > last word. > keys will be clearly segregated and only a few (like names) should be > allowed in both. > > > Comments? > > Julo > > > Login Phase Processing for an iSCSI Initiator The initiator has 6 states: I1: Await Connection I2: Await LPR I3: Negotiate Security I4: Leave Security I5: Negotiate Operational I6: Full Feature Phase There are 10 allowed transitions: From \ To-> I1 | I2 | I3 | I4 | I5 | I6 | ------\---+--------+-------+-------+-------+-------+-------+ I1 | | X1 | | | | | -------+--------+-------+-------+-------+-------+-------+ I2 | | | X2 | X3 | | | -------+--------+-------+-------+-------+-------+-------+ I3 | | | X4 | X5 | | | -------+--------+-------+-------+-------+-------+-------+ I4 | | | X6 | X7 | X8 | | -------+--------+-------+-------+-------+-------+-------+ I5 | | | | | X9 | X10 | -------+--------+-------+-------+-------+-------+-------+ I6 | | | | | | | -------+--------+-------+-------+-------+-------+-------+ Initial state: I1 - entered when Initiator tries to open a TCP connection to a target Final state: I6 - a transition into this state enters Full Feature Phase Transitions: X1: Taken when: Connection to target is successfully established Action: Send Login Command with F=0 and with TargetName= key and with InitiatorName= key and if desired, with SessionType=Normal key and with HeaderDigest= key and with DataDigest= key and with AuthMethod= key X2: Taken when: Initiator receives Login Response from target with F=0, with status=0x0001, with replies to security keys initiator offered on X1, and with any security keys offered by target and Initiator must reply to security keys from target and/or Initiator wants to offer additional security keys to target Action: Send Text Command with F=0 and with any replies to security keys offered by target and with any additional security keys to offer to target X3: Taken when: Initiator receives Login Response from target with F=0, with status=0x0001, with replies to security keys initiator offered on X1, and with any security keys offered by target and Initiator does not need to reply to security keys from target and Initiator does not want to offer security keys to target Action: Same as Action on X5 X4: Taken when: Initiator receives Text Response from target with F=0, with replies to security keys initiator offered on X2, X4 or X6, and with any security keys offered by target and Initiator needs to reply to security keys from target and/or Initiator wants to offer additional security keys to target Action: Same as Action on X2 X5: Taken when: Initiator receives Text Response from target with F=0, either with replies to security keys initiator offered on X2, X4 or X6, and with any security keys offered by target or with SecurityContextComplete=yes as only key from target and Initiator does not need to reply to security keys from target and Initiator does not want to offer additional security keys to target Action: Send Text Command with F=0 and with SecurityContextComplete=yes as only key X6: Taken when: Initiator receives Text Response from target with F=0, and with any security keys offered by target and Initiator needs to reply to security keys from target and/or Initiator wants to offer security keys to target Action: Same as Action on X2 X7: Taken when: Initiator receives Text Response from target with F=0, and with security keys offered by target and Initiator does not need to reply to security keys from target Action: Same as Action on X5 X8: Taken when: Initiator receives Text Response from target with F=0 and with SecurityContextComplete=yes as only key Action: 1. Put negotiated security measures into effect 2. Send Text Command with F=1 and with all operational keys to offer to target (can be empty) X9: Taken when: Initiator receives Text Response from target with F=0, with any replies to operational keys initiator offered on X8 or X9, and with any operational keys offered by target and Initiator needs to reply to operational keys from target and/or Initiator needs to offer operational keys to target Action: Send Text Command with F=1 and with any replies to operational keys offered by target and with all additional operational keys to offer to target X10:Taken when: Initiator receives Login Response from target with F=1, with status=0x0000, with any replies to operational keys initiator offered on X8 or X9, and with no operational keys offered by target that require a reply Action: enter Full Feature Phase Login Phase Processing for an iSCSI Target The target has 5 states: T1: Await Login T2: Negotiate Security T3: Leave Security T4: Negotiate Operational T5: Full Feature Phase There are 7 allowed transitions: From \ To-> T1 | T2 | T3 | T4 | T5 | ------\---+--------+-------+-------+-------+-------+ T1 | Z1 | | | | | -------+--------+-------+-------+-------+-------+ T2 | | Z2 | Z3 | Z4 | | -------+--------+-------+-------+-------+-------+ T3 | | | | Z5 | | -------+--------+-------+-------+-------+-------+ T4 | | | | Z6 | Z7 | -------+--------+-------+-------+-------+-------+ T5 | | | | | | -------+--------+-------+-------+-------+-------+ Initial state: T1 - entered when Target successfully accepts a TCP connection with an initiator Final state: T5 - a transition into this state enters Full Feature Phase Transitions: Z1: Taken when: Target receives Login Command from initiator with F=0, with TargetName= key, with InitiatorName= key, optionally with SessionType=Normal key, and with security keys offered by initiator Action: Send Login Response with F=0 and with status=0x0001 and with replies to security keys offered by initiator and with any additional security keys to offer to initiator Z2: Taken when: Target receives Text Command from initiator with F=0, either with any replies to security keys offered on Z1 or Z2, and with any security keys offered by initiator or with SecurityContextComplete=yes as only key and Target needs to reply to security keys from initiator and/or Target wants to offer security keys to initiator Action: Send Text Response with F=0 and with any replies to security keys offered by initiator and with any additional security keys to offer to initiator Z3: Taken when: Target receives Text Command from initiator with F=0, with any replies to security keys offered on Z1 or Z2, and with any security keys offered by initiator and Target does not need to reply to security keys from initiator and Target does not want to offer additional security keys to initiator Action: Send Text Response with F=0 and with SecurityContextComplete=yes as only key Z4: Taken when: Target receives Text Command from initiator with F=0 and with SecurityContextComplete=yes as only key and Target does not want to offer additional security keys to initiator Action: Same as actions on Z5 Z5: Taken when: Target receives Text Command from initiator with F=0 and with SecurityContextComplete=yes as only key Action: 1. Send Text Response with F=0 and with SecurityContextComplete=yes as only key 2. Put all negotiated security measures into effect Z6: Taken when: Target receives Text Command from initiator with F=1, with any replies to operational keys target offered on Z6, and with any operational keys offered by initiator and Target wants to offer additional operational keys that require a reply from initiator Action: Send Text Response with F=0 and with any replies to operational keys offered by initiator and with all additional operational keys to offer to initiator Z7: Taken when: Target receives Text Command from initiator with F=1, with any replies to operational keys target offered on Z6, and with any operational keys offered by initiator and Target does not want to offer additional operational keys that require a reply from initiator Action: Send Login Response with F=1 and with any replies to operational keys offered by initiator (can be empty)
Home Last updated: Tue Sep 04 01:04:10 2001 6315 messages in chronological order |