Re: [tcpm] SYN/ACK Payloads, draft 01

Joe Touch <touch@ISI.EDU> Thu, 14 August 2008 20:37 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 3DE013A6840; Thu, 14 Aug 2008 13:37:45 -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 58C463A6840 for <tcpm@core3.amsl.com>; Thu, 14 Aug 2008 13:37:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.801
X-Spam-Level:
X-Spam-Status: No, score=-1.801 tagged_above=-999 required=5 tests=[AWL=0.798, 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 sKbgErfDQEDR for <tcpm@core3.amsl.com>; Thu, 14 Aug 2008 13:37:43 -0700 (PDT)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) by core3.amsl.com (Postfix) with ESMTP id 5FEC63A67B7 for <tcpm@ietf.org>; Thu, 14 Aug 2008 13:37:43 -0700 (PDT)
Received: from [192.168.1.46] (pool-71-106-119-240.lsanca.dsl-w.verizon.net [71.106.119.240]) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id m7EKbUwD020250 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 14 Aug 2008 13:37:32 -0700 (PDT)
Message-ID: <48A4975D.3070303@isi.edu>
Date: Thu, 14 Aug 2008 13:36:45 -0700
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird 2.0.0.16 (Windows/20080708)
MIME-Version: 1.0
To: Adam Langley <agl@imperialviolet.org>
References: <396556a20808111035s2b974233o1e9d3671e82e3350@mail.gmail.com> <48A383F0.9030601@isi.edu> <396556a20808131827x1ab32b13yaa9358ac1a70c6ed@mail.gmail.com> <48A3C0B3.8050003@isi.edu> <396556a20808140940p63dec2d2ib3332b27da8260ae@mail.gmail.com> <48A465CC.8000402@isi.edu> <396556a20808141023s3abddc96u43b9e6e7898033ed@mail.gmail.com> <48A46BD3.4030408@isi.edu> <396556a20808141303k341599wfeef32d0841e9f76@mail.gmail.com> <48A491B9.3000209@isi.edu> <396556a20808141325u1e67c93co595eadeb3341539@mail.gmail.com>
In-Reply-To: <396556a20808141325u1e67c93co595eadeb3341539@mail.gmail.com>
X-Enigmail-Version: 0.95.6
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Cc: tcpm@ietf.org
Subject: Re: [tcpm] SYN/ACK Payloads, draft 01
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-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Sender: tcpm-bounces@ietf.org
Errors-To: tcpm-bounces@ietf.org

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



Adam Langley wrote:
| On Thu, Aug 14, 2008 at 1:12 PM, Joe Touch <touch@isi.edu> wrote:
|> Client-speaks-first puts data in the SYN, not the SYN-ACK. Or have you
|> got the roles reversed, as with FTP data connections?
|
| Sorry, I was speaking of the application layer protocol. Commonly,
| client-speaks-first application protocols are putting data in the
| final ACK of the 3-way handshake.
|
|> If the option is ignored, and you don't intend to change TCP semantics,
|> then the data - i.e., the hash or whatever - needs to be sent in the
|> next data packet.
|
| Ok, I'm fine with that. But there will always be servers which ignore
| the option because they don't understand it. In that case, obviously,
| they can't send it in the next packet.

Please walk through this again. AFAIK, "client" refers to the initiator
of the first connection. Let's use that convention here:

client sets socket option before connect
		server sets socket option after listen, before accept?
		(again, this is a problem; the socket of the connection
		exists only after the accept returns; before that, the
		'socket' applies to *any* connection that would return
		a subsequent listen call)

1.	SYN->
2.		<- SYN/ACK
3.	ACK->
4.	data->
5.		<- data

The option you're talking is useful, AFAICT, only in #2 (the SYN/ACK).

I'm proposing that the data that the server sends in the socket option
be considered equivalent to a WRITE on the socket - which would
otherwise have been possible only after the ACCEPT call. I.e.:

	- if the SYN (#1) has the option, then the socket option
	data commences in the SYN/ACK (#2) [it could spill over into
	later data segments #5 (or even between steps 3 and 4)]

	- if the SYN (#1) lacks the option, then the socket option
	data commences in the data segments #5 (or between steps
	3 and 4)

At that point, there is no real need for an option. The server can
ALWAYS send the data in the SYN/ACK, and just resend it if the ACK (#3)
is just for the SYN (in the SYN/ACK #2).

Isn't it a *lot* simpler to avoid an option and just send the data anyway?

Joe
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkikl10ACgkQE5f5cImnZrtgKgCgkhBNp2K7PsklAYLRKhv2ljJN
t3EAn1Ehv8SJTJc4QN6AHGwRZJQEpvWN
=/GhB
-----END PGP SIGNATURE-----
_______________________________________________
tcpm mailing list
tcpm@ietf.org
https://www.ietf.org/mailman/listinfo/tcpm