Subject: RE: iscsi : DataPDULength can differ in each direction.

From: "THALER,PAT (A-Roseville,ex1)" <[email-masked]>
Date: Thu, 4 Oct 2001 18:26:15 -0600

Sanjeev,

I don't see how allowing each side to independently specify the
DataPDULength it can accept complicates anything. If Device X can receive 10
Kbyte PDUs and Device Y can only receive 2 Kbyte PDUs, then the implication
of allowing them to be independent is

  Device X can only send 2 Kbyte PDUs to Device Y - it has to obey Device
Y's input limitations.

  Device Y may send 10 Kbyte PDUs to Device X if it has that capability or
it can send 2 Kbyte PDUs if its transmit side isn't able to send longer
ones. The transmitter isn't required to send the maximum PDU size that the
receiver can handle.

Furthermore, in many cases buffer pools will be shared among multiple
connections. Therefore a buffer management strategy that depends upon the
max PDU length would be non-ideal.

Pat

-----Original Message-----
From: Sanjeev Bhagat (TRIPACE/Zoetermeer) [mailto:[email-masked]]
Sent: Wednesday, October 03, 2001 3:26 PM
To: 'Santosh Rao'; Rod Harrison
Cc: Ayman Ghanem; [email-masked]
Subject: RE: iscsi : DataPDULength can differ in each direction.

All,

I think making DataPDULength different on two side will bring complexity in
implementation. Calculation of CRC, handling unknown and very high value of
DataPDUlength, change in buffer management code etc etc and above all.. a
radical change so late in the specs chould be avoided.

In my view we rather can choose for either of the two ways
1. Either make DataPDULength as list negotiation, which makes sure that the
computing party choses a result which other party will definitley support

or 
2. keep it like numeric negotiation with result being computed by responding
party and double checked by the offering party. In case there is still any
error when the offering party gets the result, they may either go for reject
or re-nogotiation.

Sanjeev

-----Original Message-----
From: Santosh Rao [mailto:[email-masked]]
Sent: Wednesday, October 03, 2001 11:46 PM
To: Rod Harrison
Cc: Ayman Ghanem; [email-masked]
Subject: Re: iscsi : DataPDULength can differ in each direction.

Rod,

The issue came up as a result of Deva pointing out that an initiator may
not be able to function with the minimal of the 2 DataPDULengths
(initiator's & target's) in the case where the value chosen was not its
value.

In order to allow for such implementations that had issues with the
DataPDULength, I raised this question. 

The benefit of both sides being allowed different DataPDULengths is :

a) Each side can specify its max supported value which the other side
would not exceed. The sender & receiver would be able to function with
different DataPDULengths, with the guarantee that their advertised
receive pdu length will not be exceeded, thus, allowing more flexible
interoperability of implementations. (btw, the proposal should have read
: Each side is allowed to advertise its maximum receive pdu length.)

b) It may also allow 2 parties with differing PDU lengths to send larger
sized PDUs in one direction to the party that advertised a higher
receive pdu length.

However, I do admit there's a cost to making this change, given we are
so late in the draft rev and several implementations have already been
made. If this is not an issue of concern to the majority of
implementations, I am ok with the current definition, although it is
more limiting on implementations.

Thanks,
Santosh

Rod Harrison wrote:
> 
>         Can someone give a tangible benefit to this that can outweigh the
> spec and implementation churn at this late stage of the game?
> 
>         From my point of view the benefit of asymmetric PDU sizes would
have
> to be very large to make it worth the extra complexity in buffer
> management code alone.
> 
>         - Rod
> 
> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]]On Behalf Of
> Ayman Ghanem
> Sent: Wednesday, October 03, 2001 8:29 PM
> To: [email-masked]
> Subject: RE: iscsi : DataPDULength can differ in each direction.
> 
> Well, the proposal says:
> 
>         Each side should be allowed to specify the DataPDULength it will
be
>         using and there should be no attempt to negotiate this value.
Rather,
>         the key is exchanged in either direction to inform the other side
as
> to
>         what sized PDUs it should expect.
> 
> So, I understand that as if the initiator sends
> DataPDULength=reallyBigNumber, then it is informing the target that
> this is
> what it will be using, but the target should not attempt to negotiate
> it.
> 
> -Ayman
> 
> > -----Original Message-----
> > From: [email-masked] [mailto:[email-masked]]On Behalf
> Of
> > Buck Landry
> > Sent: Wednesday, October 03, 2001 2:13 PM
> > To: [email-masked]
> > Subject: RE: iscsi : DataPDULength can differ in each direction.
> >
> >
> > It may add complexity, but, since DataPDULength is only a boundary
> on
> > the maximum number of bytes transmitted in a Data PDU (not the
> minimum),
> > "the first" *does* have a say about it.  Right?
> >
> > -----Original Message-----
> > From: Ayman Ghanem [mailto:[email-masked]]
> > Sent: Wednesday, October 03, 2001 1:38 PM
> > To: [email-masked]
> > Subject: RE: iscsi : DataPDULength can differ in each direction.
> >
> >
> > I think this will add unnecessary complexity, specially for data
> CRCs
> > having
> > to be calculated based on two different PDU sizes for Reads and
> Writes.
> > Also, one end may choose to do data digests in software. If the
> other
> > end
> > decides to use a really large PDU length (and the first doesn't have
> a
> > say
> > about it), this could be a problem.
> >
> > -Ayman
> >
> > <snip>
> >

-- 
##################################
Santosh Rao
Software Design Engineer,
HP-UX iSCSI Driver Team,
Hewlett Packard, Cupertino.
email : [email-masked]
Phone : 408-447-3751
##################################

---

From: Thomas Dineen <[email-masked]>
Date: Fri, 05 Oct 2001 15:49:29 -0700

Gentle People:

   After reading Pat's note below it came to me that Pat's description,
shown below, is similar to that of TCP, which I believe is still a part
or
your the iSCSI stack. Because of this I would suggest that we should
use a scheme that is similar to and compatible with that of TCP. After
all both will be living right next to each other within an
implementation.
Even if an implementor chooses not to use TCP it will still be a well
known and workable technique.

Thomas Dineen