|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: iSCSI: remove CDB from iSCSI headerIt is nice and neat... and we went over it, discussed at length in the past and rejected because commands are the most frequent outgoing message and you want them handled in one operation at target (initiator is easy). And 16 byte CDBs cover most of the commands. We expect also Data Base operations with data lengths of 4-8kbytes to be done using immediate data and reducing the number of operations to implement them is critically important. On the other hand the CDB extensions and other field could go with the data (as they are not modified by any proxy) and we could keep header digest strictly for the first 48 bytes. I am not so much concerned about having to compute a CRC on the variable header as much as by the thought that if you keep a digest after the 48 bytes for commands with longer CDBs but no immediate data you will have a digest after 48 bytes and another one after the extension. Julo Mark Bakke <mbakke@cisco.com> on 24/01/2001 00:50:34 Please respond to Mark Bakke <mbakke@cisco.com> To: Matt Wakeley <matt_wakeley@agilent.com> cc: ips@ece.cmu.edu Subject: Re: iSCSI: remove CDB from iSCSI header I agree with Matt. Basically, then, the iSCSI header digest should cover everything in the first 48 bytes. All of the messages, with the exception of the SCSI Command Request, could easily be done this way, and I think that we should modify that to fit Matt's idea of treating the CDB (and sense data) the same as SCSI data for digest purposes. Here's what they would all look like: 01 - SCSI Command Request The iSCSI header digest currently covers the 48-byte iSCSI header, which includes the CDB. The data digest covers everything else, which includes extended CDB, bidi-read transfer length, and immediate data. Since the command request is the only operation that really breaks the notion of Matt's model, I would suggest that we start the CDB after the 48-byte iSCSI header, and that it not be covered by the header digest. We can move the bidi-read length inside the iSCSI header, and end up with: +---------------------------------------------------- 0| Normal iSCSI header stuff for command request +---------------------------------------------------- 32| Bidi-read length +-------------------------------------------------- 36/ Reserved +/ +--------------------------------------------------- | (optional header digest goes here) +------------------------------------------------- 48| CDB +-------------------------------------------------- | Additional CDB +--------------------------------------------------- | Immediate Data +---------------------------------------------------- | (optional data digest goes here) +----------------------------------------------------- The header digest would cover the first 48 bytes, and would exactly match the rest of the iSCSI operations. The data digest would include the CDB (now contiguous with the additional CDB, as an added bonus) and the immediate data. Anyone concerned with having a separate data integrity check for just the data when an additional CDB is being used should refrain from using the immediate data feature. While we are on the topic, is anyone really planning to make use of bidi-read and immediate data? Here is my understanding of what the digests cover with the remainder of the iSCSI operations: 81 - SCSI Response 91 - Asynchronous Event iSCSI header digest covers 48-byte iSCSI header iSCSI data digest covers the sense data, if present 02 - Task management command 82 - Task management response 06 - Logout command 86 - Logout response 90 - R2T iSCSI header digest covers 48-byte header no data, so no data digest present 05 - SCSI Data write 85 - SCSI Data read 00 - NOP-Out 80 - NOP-In iSCSI header digest covers 48-byte header iSCSI data digest covers the data 04 - Text command 84 - Text response 03 - Login command 83 - Login response iSCSI header digest covers 48-byte iSCSI header iSCSI data digest covers the text parameters ??? Should the text be padded to a 4-byte boundary before adding the data CRC? I think that it already says so somewhere in the spec. -- Mark Matt Wakeley wrote: > > I don't think I like this. Header followed by digest followed by more header. > > I think this is a good opportunity to think about removing the CDB from the > header. This will reduce the amount of dead space used by headers that do not > contain a CDB. This will be beneficial when sending multiple smaller PDUs (in > order to keep the CRC coverage high) by reducing the iSCSI header overhead. > > Change the iSCSI command so that there is an iSCSI header (verified by the > header digest) followed by CDB "payload" (verified by the data digest). No > options for immediate data. Keep it simple, like it is in Fibre Channel. > > -Matt Wakeley > Agilent Technologies > > julian_satran@il.ibm.com wrote: > > > > yes, > > > > Julo > > > > "Barry Reinhold" <bbrtrebia@mediaone.net> on 22/01/2001 17:49:29 > > > > Please respond to "Barry Reinhold" <bbrtrebia@mediaone.net> > > > > To: mbakke@cisco.com, Julian Satran/Haifa/IBM@IBMIL > > cc: ips@ece.cmu.edu > > Subject: RE: Coverage of Data Digest when using Header Digests > > > > Ok, > > So if the bidi-read length and ADDCDB fields are not in the data > > digest > > then I assume we have to figure them into the header digest even though > > they > > are located past the header digets. Is that the expected behavior? > > > > -----Original Message----- > > From: mbakke@cisco.com [mailto:mbakke@cisco.com] > > Sent: Monday, January 22, 2001 10:22 AM > > To: julian_satran@il.ibm.com > > Cc: ips@ece.cmu.edu; Barry Reinhold > > Subject: Re: Coverage of Data Digest when using Header Digests > > > > Barry- > > > > In particular, the data digest covers only the SCSI Data part of an > > iSCSI message; the header digest covers everything else. This means > > that in an 8k write, the data digest will cover only the 8k, and the > > header digest will cover everything else. > > > > Hope this helps, > > > > Mark > > > > julian_satran@il.ibm.com wrote: > > > > > > Barry, > > > > > > Considering that one of the reasons to have a separate header and data > > > digest was to enable data > > > to carried through proxies, virtualizers etc. the current thinking is > > that > > > the data digest will cover only the data and the header (including > > > extensions) will be covered by the header digest. > > > > > > Julo > > > > > > "Barry Reinhold" <bbrtrebia@mediaone.net> on 21/01/2001 21:50:04 > > > > > > Please respond to "Barry Reinhold" <bbrtrebia@mediaone.net> > > > > > > To: Julian Satran/Haifa/IBM@IBMIL > > > cc: > > > Subject: Coverage of Data Digest when using Header Digests > > > > > > Julian, > > > Is the Data Digest intended to cover whatever follows the 48 byte > > > iSCSI > > > header? In particular in a command frame which has a CDB > 16 bytes, uses > > > bidi, has immediate data, and is using both header and data digests - > > what > > > would the data digest cover? > > > - barry > > > reinhold > > > > -- > > Mark A. Bakke > > Cisco Systems > > mbakke@cisco.com > > 763.398.1054 -- Mark A. Bakke Cisco Systems mbakke@cisco.com 763.398.1054
Home Last updated: Tue Sep 04 01:05:45 2001 6315 messages in chronological order |