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

"Adam Langley" <agl@imperialviolet.org> Mon, 14 July 2008 13:48 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 D71F73A69D8; Mon, 14 Jul 2008 06:48:22 -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 8D08B3A69D8 for <tcpm@core3.amsl.com>; Mon, 14 Jul 2008 06:48:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
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 FpZ4wRMphDUt for <tcpm@core3.amsl.com>; Mon, 14 Jul 2008 06:48:17 -0700 (PDT)
Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.224]) by core3.amsl.com (Postfix) with ESMTP id 9FEDF3A6903 for <tcpm@ietf.org>; Mon, 14 Jul 2008 06:48:17 -0700 (PDT)
Received: by rv-out-0506.google.com with SMTP id b25so4277640rvf.49 for <tcpm@ietf.org>; Mon, 14 Jul 2008 06:48:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=vxFkSGxxXzwomuOmhqnS2NNhlix26g02PIMryhfAgxA=; b=Tf0leIV704r5hgQrVaPOQjb0rzs7OPvgRheT1sV+yXslaXv4COt9FYXdi9BLUAAowc Em2UlR8Cx7S4uKkyU8EdA1dgAKY0jKUMHwiBnP0SN5mUqEC0eHtUWraYbv6fPLMgGH+v mxk0F7czz8y5km1FiXPjh1zbM/z4IPmH7tTCE=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=jgBwO2GCt3cP91itjlwrmQg1/kLgJEGguKj86TgwPhqFovUx93urBzMI2gZTBLJn/u c+TkMUMETEUJarxZkhwv2+dfpgs+c+3qtQk5Br6w1lrGKIw+Ssl9gUH07TvMG+RpnxPF IZ20a7ElmY33Q0kt+zlsSQJSSE4RG5m52bsNM=
Received: by 10.141.88.3 with SMTP id q3mr6627490rvl.46.1216043323275; Mon, 14 Jul 2008 06:48:43 -0700 (PDT)
Received: by 10.141.186.3 with HTTP; Mon, 14 Jul 2008 06:48:43 -0700 (PDT)
Message-ID: <396556a20807140648lb5f923x478665473667d807@mail.gmail.com>
Date: Mon, 14 Jul 2008 06:48:43 -0700
From: Adam Langley <agl@imperialviolet.org>
To: Michael Scharf <michael.scharf@ikr.uni-stuttgart.de>
In-Reply-To: <20080714121424.GA31382@ikr.uni-stuttgart.de>
MIME-Version: 1.0
Content-Disposition: inline
References: <20080714121424.GA31382@ikr.uni-stuttgart.de>
X-Google-Sender-Auth: f200b8855f1ad763
Cc: tcpm@ietf.org
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: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: tcpm-bounces@ietf.org
Errors-To: tcpm-bounces@ietf.org

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?
>
> Sorry if this question has already been answered elsewhere.

I don't have the necessary menagerie of operating systems needed to
gather good data. But Linux's net/ipv4/tcp_input.c [1] says

5188                         /* Now we have several options: In theory there is
5189                          * nothing else in the frame. KA9Q has an option to
5190                          * send data with the syn, BSD accepts
data with the
5191                          * syn up to the [to be] advertised window and
5192                          * Solaris 2.1 gives you a protocol error. For now
5193                          * we just ignore it, that fits the spec precisely
5194                          * and avoids incompatibilities. It would
be nice in
5195                          * future to drop through and process the data.

[1] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=net/ipv4/tcp_input.c;h=cad73b7dfef07798ddc0b8debba24c9aad94c53b;hb=HEAD

And that suggests that it's not just those OSes which ignore SYNs with
payloads - it's also those which reject the packet completely. Having
to retransmit SYNs in such cases is sufficiently common, and
sufficiently painful that I think it's a non-starter.

AGL

-- 
Adam Langley agl@imperialviolet.org http://www.imperialviolet.org
_______________________________________________
tcpm mailing list
tcpm@ietf.org
https://www.ietf.org/mailman/listinfo/tcpm