Subject: iSCSI padding should be 0

From: "Eddy Quicksall" <[email-masked]>
Date: Fri, 27 Jul 2001 11:18:33 -0400

Julian,

Section 2.1 says the padding should be 0. I guess that is correct because
one may not use CRC and therefore may not want to set them to 0. Wouldn't it
be better if section 2.1 was more specific and mentioned when they must be 0
if there is a CRC. Also, I noticed at the UNH plug fest that at least one
person thought "should" meant "must". Therefore, I don't think it should say
"should" ... I think it should not mention the 0'ness unless there is a CRC
present.

Also,

        transmission.  Padding bytes, when presents in a segment covered by
a
        CRC, have to be set to 0 and are included in the CRC.

should say "when present in".

[email-masked]

---

From: "Fischer, Michael" <[email-masked]>
Date: Fri, 27 Jul 2001 09:25:30 -0700

Julian,

I hate to butt in with this minor point, I think you guys are doing a great
job in hammering out the specification and do not presume to know better.

However, according to RFC2119 the word MUST indicates that it is a
requirement of the specification and therefore implies that the receiver
will need to check the value.  If it MUST be zero and is not, then that
would indicate a protocol error.

Michael Fischer

-----Original Message-----
From: Julian_Satran/Haifa/IBM%IBMIL [mailto:[email-masked]]
Sent: Friday, July 27, 2001 8:46 AM
To: [email-masked]
Cc: ips
Subject: Re: iSCSI padding should be 0

Perhaps we should say MUST be sent as 0 and keep quiet about what the
receiver should  do (check for 0 - we don't want that).

Thanks,Julo

"Eddy Quicksall" <[email-masked]> on 27-07-2001 18:18:33

Please respond to [email-masked]

To:   Julian Satran/Haifa/IBM@IBMIL, [email-masked]
cc:
Subject:  iSCSI padding should be 0

Julian,

Section 2.1 says the padding should be 0. I guess that is correct because
one may not use CRC and therefore may not want to set them to 0. Wouldn't
it
be better if section 2.1 was more specific and mentioned when they must be
0
if there is a CRC. Also, I noticed at the UNH plug fest that at least one
person thought "should" meant "must". Therefore, I don't think it should
say
"should" ... I think it should not mention the 0'ness unless there is a CRC
present.

Also,

---

From: Julian_Satran/Haifa/IBM%IBMIL <[email-masked]>
Date: Sat, 28 Jul 2001 06:37:44 +0300

I thought the text says clearly "MUST be sent as 0" not "MUST be 0" and the
difference is unequivocal to me.

Julo

"Fischer, Michael" <[email-masked]> on 27-07-2001 19:25:30

Please respond to "Fischer, Michael" <[email-masked]>

To:   Julian Satran/Haifa/IBM@IBMIL, [email-masked]
cc:   ips <[email-masked]>
Subject:  RE: iSCSI padding should be 0

Julian,

Michael Fischer

-----Original Message-----
From: Julian_Satran/Haifa/IBM%IBMIL [mailto:[email-masked]]
Sent: Friday, July 27, 2001 8:46 AM
To: [email-masked]
Cc: ips
Subject: Re: iSCSI padding should be 0

Thanks,Julo

Julian,

Also,

---

From: "Fischer, Michael" <[email-masked]>
Date: Fri, 27 Jul 2001 10:44:25 -0700

Eddy,

I guess I can live with that.  I actually prefer the use of MUST myself.  I
guess I should have argued on the technical details rather than on the
semantic technicalities.  Since I zero the structure before I get started
anyway so it doesn't really matter to me anyway.  :)

I was just concerned when the statement was made to the effect that someone
may not want to leave it set to zero if they are not using crc.  If later on
the spec changes and they are no longer padding bytes, this will cause some
serious trouble for any implementation that does not set the padding to
zero.

Keep up the good work.

Michael Fischer

-----Original Message-----
From: Eddy Quicksall [mailto:[email-masked]]
Sent: Friday, July 27, 2001 10:30 AM
To: 'Fischer, Michael'; [email-masked]
Cc: [email-masked]
Subject: RE: iSCSI padding should be 0

Mike, you're not stepping on toes nor are you butting in. We need this kind
of input because no one on this reflector knows everything. Thanks for your
input.

In this case, I feel that MUST is appropriate and that if someone wants take
the time to check it then they are within their rights to do that. In fact,
your test tools SHOULD check it if we say MUST.

But, I don't think there would be a requirement for a target or initiator to
check it ... just to do it.

Eddy

-----Original Message-----
From: Fischer, Michael [mailto:[email-masked]]
Sent: Friday, July 27, 2001 1:21 PM
To: [email-masked]'; [email-masked]
Cc: [email-masked]'
Subject: RE: iSCSI padding should be 0

Eddy,

This discussion is purely based on semantics and the definition of the word.
MUST indicates that it is REQUIRED.  Yes?  If it is REQUIRED that the
padding be set to 0 and it is NOT then that implementation is in violation
of the spec.  Yes?

You are correct that the RFC does not say that you must check it but it does
imply it (or at least that it is checkable), which is what I stated.  My
concern is that Julian suggested that the spec say MUST be 0 and that he did
NOT want people to check for 0.  To insure that it is not checked, the
statement MUST remain "SHOULD be 0."

In the production environment, the checking of whether or not the padding
has been set to zero may be bypassed for whatever reason, but in a testing
environment (guess where I work. :) ), I am sure that if someone read the
spec and implemented a test tool to verify that their implementation
conforms to the spec they could generate a bug report if the padding was not
0.

I am just trying to make sure that the spec is as unambiguous as possible
and I apologize if I am stepping on any toes.

Michael Fischer

-----Original Message-----
From: Eddy Quicksall [mailto:[email-masked]]
Sent: Friday, July 27, 2001 9:32 AM
To: 'Fischer, Michael'; [email-masked]
Subject: RE: iSCSI padding should be 0

The RFC says:
  MUST This word, or the terms "REQUIRED" or "SHALL", mean that the
  definition is an absolute requirement of the specification.

How does that say that I MUST check to be sure it has been done? Is that
requirement someplace else?

Eddy

-----Original Message-----
From: Fischer, Michael [mailto:[email-masked]]
Sent: Friday, July 27, 2001 12:26 PM
To: 'Julian_Satran/Haifa/IBM%IBMIL'; [email-masked]
Cc: ips
Subject: RE: iSCSI padding should be 0

Julian,

Michael Fischer

-----Original Message-----
From: Julian_Satran/Haifa/IBM%IBMIL [mailto:[email-masked]]
Sent: Friday, July 27, 2001 8:46 AM
To: [email-masked]
Cc: ips
Subject: Re: iSCSI padding should be 0

Thanks,Julo

Julian,

Also,

---

From: Sanjay Goyal <[email-masked]>
Date: Fri, 27 Jul 2001 18:50:52 -0400

Hi Mark
 What are those "minor security purposes", would you please elaborate that.

Sanjay G

-----Original Message-----
From: Mark Bakke [mailto:[email-masked]]
Sent: Friday, July 27, 2001 5:15 PM
To: Rod Harrison
Cc: [email-masked]; 'Julian Satran'; 'ips'
Subject: Re: iSCSI padding should be 0

Rod-

The pad bytes are set to zero, rather than just sending whatever
data is there, for minor security purposes.

The pad bytes are included in the digest to simplify the hardware.

I suggest we leave this as is.

--
Mark

Rod Harrison wrote:
> 
>         Can we not leave the pad bytes out of the digest
> calculation and allow them to be any value. Having to zero
> the pad bytes is the only reason to touch the payload
> buffer. Is it really a security problem to allow the pad
> bytes to be any value?
> 
>         - Rod
> 
> From: [email-masked] [mailto:[email-masked]]On
> Behalf Of
> Eddy Quicksall
> Sent: Friday, July 27, 2001 11:24 AM
> To: 'Julian Satran'
> Cc: 'ips'
> Sounds good to me.
> From: Julian Satran [mailto:[email-masked]]
> Sent: Friday, July 27, 2001 11:46 AM

-- 
Mark A. Bakke
Cisco Systems
[email-masked]
763.398.1054

---

From: "Julian Satran" <[email-masked]>
Date: Mon, 30 Jul 2001 18:08:00 +0300

The security concern (as far as I can understand it) is leaking information
from old buffers.  Julo

"Eddy Quicksall" <[email-masked]> on 30-07-2001 17:43:02

Please respond to "Eddy Quicksall" <[email-masked]>

To:   [email-masked], Julian Satran/Haifa/IBM@IBMIL
cc:
Subject:  Re: iSCSI padding should be 0

Software padding can be expensive if their is a requirement that the pad
must be 0. I have given the reason below.

BTW, where is the security problem? In an earlier EMAIL, I suggested a
security issue but I gave a paranoid case. Do you have a simple security
case?

Eddy
----- Original Message -----
From: "Julian Satran" <[email-masked]>
To: <[email-masked]>
Sent: Saturday, July 28, 2001 12:36 AM
Subject: Re: iSCSI padding should be 0

> Is the software padding more expensive than checking if there is a CRC
(or
> any other digest)?
> On the other hand CRCs don't require the bytes to be 0 they can be
> arbitrary values.
> The 0 was brought in to avoid "leakage" (security) by somebody on the
list.
> We can choose to revert to arbitrary and leave the burden of cleaning to
> the applications for which security is a concern.
>
> Julo
>
> "Eddy Quicksall" <[email-masked]> on 27-07-2001 22:05:59
>
> Please respond to "Eddy Quicksall" <[email-masked]>
>
> To:   Julian Satran/Haifa/IBM@IBMIL
> cc:   "ips" <[email-masked]>
> I saw one objection to this by Michael Fischer
> [[email-masked]]. He pointed out that if there is no CRC
then
> why require the padding to be 0. I agree with his point.
>
> The problem is with software only implementations ... if they use the
> sockets send function and if they are sending from a ULP buffer and if
the
> data being sent needs padding, they will have to either copy to another
> buffer or do an extra tiny send for the pad.
>
> So, my thinking is that we say:
>
>     iSCSI PDUs are padded to an integer number of 4 byte words. If CRC is
> being used, the padding MUST be 0. If CRC is not being used, the content
of
> the padding is unpredictable and irrelevent.
>
> What do you think?
>
> Eddy
> ----- Original Message -----
> From: "Julian_Satran/Haifa/IBM%IBMIL" <[email-masked]>
> To: <[email-masked]>
> Cc: "ips" <[email-masked]>
> Sent: Friday, July 27, 2001 11:45 AM
> >         transmission.  Padding bytes, when presents in a segment
covered
> by