Re: [tcpm] TCP Long Options - Why not as payload in SYNs?

Joe Touch <touch@ISI.EDU> Mon, 14 July 2008 15:20 UTC

Return-Path: <tcpm-bounces@ietf.org>
X-Original-To: tcpm-archive@megatron.ietf.org
Delivered-To: ietfarch-tcpm-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 26C593A6903; Mon, 14 Jul 2008 08:20:29 -0700 (PDT)
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 193953A6B4E for <tcpm@core3.amsl.com>; Mon, 14 Jul 2008 08:20:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.464
X-Spam-Level:
X-Spam-Status: No, score=-2.464 tagged_above=-999 required=5 tests=[AWL=0.135, 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 fguBkoRWlZXf for <tcpm@core3.amsl.com>; Mon, 14 Jul 2008 08:20:27 -0700 (PDT)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) by core3.amsl.com (Postfix) with ESMTP id A22003A6BF8 for <tcpm@ietf.org>; Mon, 14 Jul 2008 08:20:13 -0700 (PDT)
Received: from [127.0.0.1] (pool-71-106-110-19.lsanca.dsl-w.verizon.net [71.106.110.19]) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id m6EFKHAi013932 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 14 Jul 2008 08:20:19 -0700 (PDT)
Message-ID: <487B6EB1.6040308@isi.edu>
Date: Mon, 14 Jul 2008 08:20:17 -0700
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 2.0.0.14 (Windows/20080421)
MIME-Version: 1.0
To: Joe Touch <touch@ISI.EDU>
References: <20080714121424.GA31382@ikr.uni-stuttgart.de> <396556a20807140648lb5f923x478665473667d807@mail.gmail.com> <487B6A79.2040608@isi.edu>
In-Reply-To: <487B6A79.2040608@isi.edu>
X-Enigmail-Version: 0.95.6
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Cc: andre.zuquete@ua.pt, tcpm@ietf.org, Sérgio Freire <sergio-s-freire@ptinovacao.pt>
Subject: Re: [tcpm] TCP Long Options - Why not as payload in SYNs?
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: <https://www.ietf.org/mailman/private/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>
Content-Type: multipart/mixed; boundary="===============0877439267=="
Sender: tcpm-bounces@ietf.org
Errors-To: tcpm-bounces@ietf.org

PS - if there's interest in this, we could pull together an I-D in time 
for Dublin, but it won't (didn't) make the individual deadline...

Joe

Joe Touch wrote:
> Adam Langley wrote:
>> On Mon, Jul 14, 2008 at 5:14 AM, Michael Scharf
>> <michael.scharf@ikr.uni-stuttgart.de> wrote:
>>> Even though RFC 793 explicitly allows payload in SYN segments, there
>>> are TCP stacks that just seem to ignore it. Couldn't this offer an
>>> opportunity to transport long TCP options in the payload of SYN
>>> segments, instead of expanding the header option space?
> 
> See Usenix 2008, "A TCP-layer Name Service for TCP Ports"
> http://www.usenix.org/events/usenix08/tech/full_papers/freire/freire_html/index.html 
> 
> 
> The authors, Sergio and Andre (cc'd), therein combine options in the SYN 
> payload with other mechanisms in a port-names solution. I have spoken 
> with them about cleanly separating the idea of data as payload option 
> space (i.e., removing other features that are distinct, e.g., use of 
> port 0, changing ports after the SYN, etc.), and basically we came up with:
> 
>     set a conventional option that says where the
>     payload option ends, within the SYN segment
>     (typically the end of that segment)
> 
>     wait for an ACK indicating that option is set
>     (could be set in advance), indicating the
>     options will be processed correctly
>         NB - the option is set in advance when
>         a sender speaks the option but has no
>         long options to send, or has long options
>         to send and is doing so. EITHER WAY
>         the option MUST occur, or the handshake
>         will fail.
> 
>     if the ACK does not confirm the ability to
>     process options in the data, then RST the
>     connection and retry without data options
> 
> Note that this works only for the SYN segment, and it isn't clear how it 
> might interoperate with SYN cookies. It also ALWAYS consumes option 
> space, and MUST occur in the existing options.
> 
> ...
>> And that suggests that it's not just those OSes which ignore SYNs with
>> payloads - it's also those which reject the packet completely.
> 
> AFAICT, ACKing the SYN and not the data is compliant, but rejecting the 
> SYN entirely doesn't appear to be - it should be called a bug, IMO.
> 
> Joe
> 

_______________________________________________
tcpm mailing list
tcpm@ietf.org
https://www.ietf.org/mailman/listinfo/tcpm