SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    Re: iSCSI:out-of-order notification proposal



    Sandeep,
    
    It's just not a single SCSI info-bit that the target iSCSI layer should 
    look at for the optimization you're proposing - the LUN needs to be 
    examined as well since the task attributes are scoped per-LU.
    
    In effect, what you're suggesting is an iSCSI-level per-LU ordering with 
    a session-global command sequencing scheme - that is a quite a bit of 
    complexity for targets to manage!  
    
    BTW, synch and steering layer is *not* meant to help iSCSI (or SCSI)
    process payloads out-of-order.  It is targetted only for out-of-order
    data placements to reduce implementation costs, as the current draft 
    clearly states.
    
    Regards.
    --
    Mallikarjun 
    
    
    Mallikarjun Chadalapaka
    Networked Storage Architecture
    Network Storage Solutions Organization
    MS 5668	Hewlett-Packard, Roseville.
    cbm@rose.hp.com
    
    
    >Answering two responses in one email.  This would be mighty 
    >easier if there was a whiteboard around here :-)
    >
    >> What exactly does it buy you? (that is not already in).
    >
    >The ability to execute subsequent PDUs in the presence of holes.
    >(Holes due to multiple connections OR due to skipping onto next marker)
    >
    >If the hole is due to a REAL ordering issue (e.g. ORdered task
    >was lost) then the target will pause for the hole to fill.
    >
    >But if the hole is due to simple task, then the target
    >can continue execution of the new commands it is receiving.
    >
    >Currently, target will *always* pause due to cmdSN ordering,
    >which is somewhat like a primitive microprocessor which wont 
    >reorder its instruction stream, though its feasible.
    >
    >> 
    >> And FWIW David (B) raised a question related to the requirements doc.
    >
    >My mistake, the rephrasing of requirements seemed to match the intent 
    >of previous discussions on why total cmdSN ordering is overkill.
    >That was the only point i was trying to reinforce.
    >
    >> 
    >> Julo
    >
    >
    >
    >"Mallikarjun C." wrote:
    >> 
    >> Sandeep,
    >> 
    >> Some comments on your proposal.
    >> 
    >> - The "strict_order" flag that you mention appears to carry
    >>   information that's already contained by the SCSI task attributes
    >>   (ATTR field).
    >
    >But now the information is also contained in PDUs following it.
    >(e.g. A simple command PDU may also have strict_order=1)
    >
    >If an Ordered task PDU is lost, the target *knows* there is a REAL
    >ordering issue (later PDUs have info) so it must wait for the hole 
    >to be filled.
    >
    >> 
    >> - This proposal requires the target iSCSI layer to look at more
    >>   variables (SCSI-level information in that) for making its
    >>   sequencing decisions.
    >
    >Only one more bit.. to decide if the command can be passed
    >to SCSI layer now or later in cmdSN sequence.  
    >
    >To build an efficient SCSI transport, some hints would need
    >to be passed between layers.
    >
    >> 
    >> - Simple commands (intended to be) received prior to an Ordered
    >>   command must be executed before the Ordered one.  If you lose a
    >>   Simple command, you must wait for it before you act on the Ordered
    >>   that you received out-of-order.
    >
    >Good pt.  This, I forgot to mention below.  The target must clear
    >out all PDUs received with strict-order=0 before commencing 
    >execution of PDUs received with strict-order=1.
    >
    >> 
    >> This appears more an implementaion optimization where desired than
    >> something we want to get into the draft.  You are proposing that
    >> even in the absence of errors, iSCSI should make ordering decisions
    >> based on SCSI task attributes.  I disagree with that.
    >
    >The optimization needs a bit in the PDU, otherwise I wouldnt
    >have gone to the trouble of writing this out!  And you would agree
    >that there are a bunch of TCP optimizations in various drafts.
    >
    >Lastly, what is the point in building a sync-and-steering layer to
    >skip ahead in the command stream if you cannot execute that next command
    >?
    >With this little more work, you could as well continue execution.
    >
    >> --
    >> Mallikarjun
    >> 
    >> Mallikarjun Chadalapaka
    >> Networked Storage Architecture
    >> Network Storage Solutions Organization
    >> MS 5668 Hewlett-Packard, Roseville.
    >> cbm@rose.hp.com
    >> 
    >> >This is a proposal to allow the initiator to inform the target
    >> >if out-of-order execution within the command stream is possible.
    >> >
    >> >The target execution can rotate between "in-cmdSN-order" and
    >> >"out-of-order" during runtime as informed by the initiator..
    >> >
    >> >Appreciate comments on subtleties that I may have missed.
    >> >
    >> >thanks,
    >> >-Sandeep
    >> >
    >> >http://ips.pdl.cs.cmu.edu/mail/msg03152.html
    >> >   by Costa provides a good summary of the issue at hand.
    >> >
    >> >http://ips.pdl.cs.cmu.edu/mail/msg04255.html
    >> >  David provides the "new" reqts.  In particular, this one
    >> >
    >> >   > MUST specify the ability to preserve ordered delivery
    >> >   > of SCSI commands even in the presence of transport
    >> >   > errors.  A mechanism MUST be provided to allow
    >> >   > Initiators and Targets to negotiate this preservation
    >> >   > on a per-session or finer granularity basis
    >> >
    >> >Note :
    >> >======
    >> >1) This does not rely on SCSI cmdRN, but operates at iSCSI level.
    >> >2) Flow control using cmdSN works as designed.
    >> >3) This solution is not a per-session negotiation option but can be
    >> >   disabled and re-enabled again at "runtime" by the initiator if it
    >> >   notices that Ordered/HOQ tasks (or any other need) have entered
    >> >   the iSCSI command stream which is being dispatched.
    >> >
    >> >Problem:
    >> >=========
    >> >In case of out-of-order arrival or digest errors, it is NOT possible
    >> >to know if the initiator had sent an ordered command before the one
    >> >which was received.
    >> >
    >> >Solution:
    >> >=========
    >> >To notify target of presence of in-flight ordered commands, we set
    >> >a flag on *every* PDU following the ordered command *until* the target
    >> >moves it expCmdSN above the cmdSN of the ordered command.  The
    >> >expCmdSN indicates target has found the ordered command.
    >> >
    >> >( Those familiar with "ECN over IP" (Floyd, et al) may see this is
    >> >similar to how a congestion bit keeps being set until the sender acks
    >> >that it has received the notification)
    >> >
    >> >Figuratively:
    >> >=============
    >> >So, assume there was a new "strict_order" flag in the BHS.
    >> >In the figure below, braces shows value of (cmdSN, strict_order)
    >> >
    >> >Initiator                       Target
    >> >---------                       -------
    >> >
    >> >simple cmd (cmdSN=100, strict_order=0) ->
    >> >simple cmd (101, 0) ->
    >> >simple cmd (102, 0) ->
    >> >
    >> >   these may get reordered or have digest errors ->
    >> >
    >> >                        target executes as they arrive
    >> >                             exec simple cmd(102, 0)
    >> >                             exec simple cmd(100, 0)
    >> >                             exec simple cmd(101, 0)
    >> >
    >> >Now say the initiator wants to send a HOQ task.
    >> >It sets strict_order=1 on all PDUs
    >> >
    >> >ordered cmd (103, 1) ->
    >> >simple  cmd (104, 1) ->
    >> >simple  cmd (105, 1) ->
    >> >                        in case of reordering or digest errors
    >> >                        target must wait & execute in cmdSN order!
    >> >simple  cmd (106, 1) ->
    >> >simple  cmd (107, 1) ->
    >> >
    >> >         <---- now target sends expCmdSN=103
    >> >
    >> >This implies target has seen command(cmdSN=103) and target will do the
    >> >appropriate ordering and delivery to SCSI layer.  This is left to
    >> >the target implementation to tackle.
    >> >
    >> >Initiator checks (expCmdSN >= cmdSN of ordered cmd) and then resets
    >> >strict_order to zero for all subsequent PDUs.
    >> >
    >> >simple  cmd (108, 0) ->
    >> >simple  cmd (109, 0) ->
    >> >
    >> >Other issues:
    >> >=============
    >> >If the basic scheme is ok, then we could later tackle other questions
    >> >"what about multiple ordered commands" and the like..
    >
    
    
    


Home

Last updated: Tue Sep 04 01:04:56 2001
6315 messages in chronological order