Re: [tcpm] On the implementation of TCP urgent data (IETF Internet Draft)
Jerry Leichter <leichter@lrw.com> Tue, 03 March 2009 13:24 UTC
Return-Path: <leichter@lrw.com>
X-Original-To: tcpm@core3.amsl.com
Delivered-To: tcpm@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E88903A69BF for <tcpm@core3.amsl.com>; Tue, 3 Mar 2009 05:24:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.308
X-Spam-Level:
X-Spam-Status: No, score=-2.308 tagged_above=-999 required=5 tests=[AWL=0.291, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JkyqEaUNwMLq for <tcpm@core3.amsl.com>; Tue, 3 Mar 2009 05:24:12 -0800 (PST)
Received: from smtp1.bestweb.net (smtp1.bestweb.net [209.94.103.41]) by core3.amsl.com (Postfix) with ESMTP id 186943A69E7 for <tcpm@ietf.org>; Tue, 3 Mar 2009 05:24:11 -0800 (PST)
Received: from [10.0.1.3] (unknown [69.177.11.241]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp1.bestweb.net (Postfix) with ESMTPSA id 8E5951254F5; Tue, 3 Mar 2009 08:24:37 -0500 (EST)
Message-Id: <5D3A745D-9B59-4B31-87DB-23B29666A21D@lrw.com>
From: Jerry Leichter <leichter@lrw.com>
To: James Chacon <jmc@netbsd.org>
In-Reply-To: <2059A6D8-4BDA-44FF-827D-655814042138@netbsd.org>
Content-Type: text/plain; charset="US-ASCII"; format="flowed"; delsp="yes"
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v930.3)
Date: Tue, 03 Mar 2009 08:24:36 -0500
References: <20090227222910.4AAF55654E@rebar.astron.com> <F2BD5C91-4566-487A-8CC0-D180C30B0058@old-ones.com> <2059A6D8-4BDA-44FF-827D-655814042138@netbsd.org>
X-Mailer: Apple Mail (2.930.3)
X-Mailman-Approved-At: Tue, 03 Mar 2009 08:08:09 -0800
Cc: groo@netbsd.org, tcpm@ietf.org, Christos Zoulas <christos@zoulas.com>, Bill Squier <groo@old-ones.com>, Fernando Gont <fernando@gont.com.ar>
Subject: Re: [tcpm] On the implementation of TCP urgent data (IETF Internet Draft)
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tcpm>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Mar 2009 13:24:13 -0000
On Mar 2, 2009, at 11:19 PM, James Chacon wrote:
> Actually we have seen leaks in-band when simply sending one byte at
> a time of OOB. It appears if the distance between 2 bytes exceeds
> the available OOB marker (which from memory was 16 bits) and nothing
> reads on the receiving end then on some impls the bytes leak in-band.
>
> We've seen that on linux and on Solaris to my recollection.
I don't dispute the observations, but the explanation makes no sense
to me. Yes, the Urgent Pointer is a 16-bit offset from the beginning
of the segment in which it appears (or something very much like
that). It would make no sense to store the UP position as just the 16-
bit offset inside the implementation, since that's impossible to
interpret without the segment starting point. The received segment
itself already has the (32 bit) position in the stream of the segment,
and the pair is unambiguous. An implementation could store the pair,
but why? The 32-bit sum of the UP and the segment starting position
is 2 bytes smaller and contains exactly the same information.
With bugs anything is possible, of course, but it's hard to see why
having the distance between successive OOB bytes being > 2^16 should
be significant in and of itself. How was this tested? Are you sure
it's really "gap > 2^16" or could it be "gap large enough" or "enough
data buffered"? I can see this leading to the failure mode that I
described earlier: User receiver hasn't read data for a long time;
receiving TCP lets its receive window close as it's running out of
buffer space; data piles up in sender's TCP stack buffers; eventually
we have two OOB bytes within the data to be sent; sender doesn't keep
track of this, or tries to send a segment with two OOB bytes and can
only encode one.
-- Jerry
- [tcpm] [Fwd: Re: On the implementation of TCP urg… Fernando Gont
- Re: [tcpm] On the implementation of TCP urgent da… Fernando Gont
- Re: [tcpm] On the implementation of TCP urgent da… Bill Squier
- Re: [tcpm] On the implementation of TCP urgent da… Jerry Leichter
- Re: [tcpm] On the implementation of TCP urgent da… Jakob Heitz
- Re: [tcpm] On the implementation of TCP urgent da… James Chacon
- Re: [tcpm] On the implementation of TCP urgent da… Jerry Leichter
- Re: [tcpm] On the implementation of TCP urgent da… James Chacon
- Re: [tcpm] On the implementation of TCP urgent da… Fernando Gont
- Re: [tcpm] On the implementation of TCP urgent da… David Borman
- Re: [tcpm] On the implementation of TCP urgent da… David Borman
- Re: [tcpm] On the implementation of TCP urgent da… Jerry Leichter
- Re: [tcpm] On the implementation of TCP urgent da… Andrew Yourtchenko
- Re: [tcpm] On the implementation of TCP urgent da… David Borman