Return-Path: <owner-ips-outgoing@ece.cmu.edu>
Received: from newbox.ece.cmu.edu (localhost [127.0.0.1])
	by newbox.ece.cmu.edu (Cyrus v2.1.12) with LMTP; Fri, 08 Aug 2003 13:05:46 -0400
X-Sieve: CMU Sieve 2.2
Received: from hazard.ece.cmu.edu (HAZARD.ECE.CMU.EDU [128.2.129.24])
	by newbox.ece.cmu.edu (Postfix) with ESMTP id 9264B3009
	for <ipsml@ece.cmu.edu>; Fri,  8 Aug 2003 13:05:46 -0400 (EDT)
Received: by hazard.ece.cmu.edu (Postfix, from userid 953)
	id ED0E8A9; Fri,  8 Aug 2003 13:05:45 -0400 (EDT)
Received: from sos.ece.cmu.edu (SOS.ECE.CMU.EDU [128.2.129.27])
	by hazard.ece.cmu.edu (Postfix) with ESMTP
	id 68E1199; Fri,  8 Aug 2003 13:05:34 -0400 (EDT)
Received: by sos.ece.cmu.edu (Postfix)
	id 7F23489FF; Fri,  8 Aug 2003 13:05:18 -0400 (EDT)
Delivered-To: ips-outgoing@sos.ece.cmu.edu
Received: from hazard.ece.cmu.edu (HAZARD.ECE.CMU.EDU [128.2.129.24])
	by sos.ece.cmu.edu (Postfix) with ESMTP id 6F7B689FC
	for <ips-outgoing@sos.ece.cmu.edu>; Fri,  8 Aug 2003 13:05:18 -0400 (EDT)
Received: by hazard.ece.cmu.edu (Postfix)
	id 4DA9F8D; Fri,  8 Aug 2003 13:05:18 -0400 (EDT)
Delivered-To: ips-outgoing@ece.cmu.edu
Received: by hazard.ece.cmu.edu (Postfix, from userid 953)
	id 2999B99; Fri,  8 Aug 2003 13:05:18 -0400 (EDT)
Received: from sos.ece.cmu.edu (SOS.ECE.CMU.EDU [128.2.129.27])
	by hazard.ece.cmu.edu (Postfix) with ESMTP id EC00A8D
	for <ips-outgoing@ece.cmu.edu>; Fri,  8 Aug 2003 13:05:11 -0400 (EDT)
Received: by sos.ece.cmu.edu (Postfix, from userid 363)
	id D69B68A00; Fri,  8 Aug 2003 13:05:11 -0400 (EDT)
X-Original-To: ips@sos.ece.cmu.edu
Delivered-To: ips@sos.ece.cmu.edu
Received: from osgood.ece.cmu.edu (OSGOOD.ECE.CMU.EDU [128.2.129.25])
	by sos.ece.cmu.edu (Postfix) with ESMTP id 994D489FC
	for <ips@sos.ece.cmu.edu>; Fri,  8 Aug 2003 13:05:09 -0400 (EDT)
Received: by osgood.ece.cmu.edu (Postfix)
	id B4DCD86; Fri,  8 Aug 2003 13:05:08 -0400 (EDT)
Delivered-To: ips@ece.cmu.edu
Received: by osgood.ece.cmu.edu (Postfix, from userid 953)
	id 87CEA6A; Fri,  8 Aug 2003 13:05:08 -0400 (EDT)
Received: from thebe.your-site.com (thebe.your-site.com [140.186.45.26])
	by osgood.ece.cmu.edu (Postfix) with ESMTP
	id 895DC86; Fri,  8 Aug 2003 13:05:03 -0400 (EDT)
Received: from asomi.com (64-144-5-25.client.dsl.net [64.144.5.25])
	by thebe.your-site.com (Postfix) with ESMTP
	id 3AACF24544E; Fri,  8 Aug 2003 13:05:13 -0400 (EDT)
Date: Fri, 8 Aug 2003 12:04:56 -0500
Subject: Re: checking immediate data
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Mime-Version: 1.0 (Apple Message framework v552)
Cc: John Hufferd <hufferd@us.ibm.com>, ips@ece.cmu.edu,
	owner-ips@ece.cmu.edu
To: Eddy Quicksall <eddy_quicksall@ivivity.com>
From: Caitlin Bestler <cait@asomi.com>
In-Reply-To: <AEC4671C8179D61194DE0002B328BDD28580B5@atlops.ivivity.com>
Message-Id: <6F7A9EC1-C9C2-11D7-B87D-003065D48EE0@asomi.com>
Content-Transfer-Encoding: quoted-printable
X-Mailer: Apple Mail (2.552)
Sender: owner-ips@ece.cmu.edu
Precedence: bulk
X-Spam-Status: No, hits=-29.1 required=5.0
	tests=BAYES_01,EMAIL_ATTRIBUTION,IN_REP_TO,QUOTED_EMAIL_TEXT,
	      REPLY_WITH_QUOTES,USER_AGENT_APPLEMAIL
	version=2.50
X-Spam-Level: 
X-Spam-Checker-Version: SpamAssassin 2.50 (1.173-2003-02-20-exp)


On Friday, August 8, 2003, at 10:28 AM, Eddy Quicksall wrote:

> John,
>
> =A0
>
> I also agree that this particular case is not a performance issue.
>
> =A0
>
> I tried to indicate below that the premise of making this type of=20
> requirement can be extended to many other cases and if the premise is=20=

> acceptable, where do you stop? (E.g., one person's flag may require a=20=

> memory access but another person's flag may not - don't forget also=20
> that the performance path may be running in on chip memory that is=20
> small, so extra code to support unnecessary requirements is not a good=20=

> idea)? IMHO, a spec should not make these kinds of statements in a=20
> performance path.
>
> =A0
>
> Eddy
>
I fully agree.

Keep in mind that it is very easy to make presumptions that
something is "trivial" based upon one architecture, but which
may be very difficult to do in another.

Any enumeration of specific handling for specify types of invalid
packets can force an increase in the number of rules for a state
and/or rule-based implementation. With at least some of these
engines a rule is a rule. It consumes the same amount of limited
resources no matter how "trivial" it might seem.

Personally I prefer to do packet classification independent of
stateful data (it allows more pipelining), which would make this
particular error very easy to diagnose. But not all implementations
will be optimized for high speed and pipelined execution. If an
initiator is part of an embedded device (say a piece of consumer
electronics trying to save data to an iSCSI target) then the
implementation may be very lean and mean.

If I were building such a device, I would not want to increase
my rules capacity just to facilitate debugging. I'd probably
do debugging on a enhanced version with the full rule set,
and then trim down to the minimum rule set for production
after validating that the excess rules were never triggered
during extensive debugging runs.

The general rules I have always applied to the handling of
Invalid Packets are:

-- The recipient MAY reject the packet as invalid and/or
	terminate the session.
-- The recipient MUST NOT allow the sender to gain access
	to any resource or information that the sender could
	not have accessed using legitimate packets.
--	Handling of the invalid packet MUST NOT adversely
	effect any other sessions. That is, you MUST NOT
	let an invalid packet crash the program if the
	program is dealing with other clients. Ditto for
	going into tight loops and burning up CPU time,
	responding with 10,000 acks that flood the network,
	or anything else like that.

For a specific invalid packet to be called out I think
there needs to be a benefit in terms of robustness.
That is, getting this packet represents a well recognized
state of confusion on the peers part, for which the
robust corrective action is as follows...

Failure to follow negotiated rules does not strike me
as something that deserves special robustness handling.
Not following the spec is not following the spec. The
peer has no basis to expect a "helpful" response.
Mandating that all implementations, including those
in embedded consumer devices, provide debugging
assistance to their peers would be a mistake.

