Re: [tcpm] SYN/ACK Payloads, draft 01
Joe Touch <touch@ISI.EDU> Thu, 14 August 2008 16:57 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 D313C3A6C5E; Thu, 14 Aug 2008 09:57:04 -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 6EDAE3A6942 for <tcpm@core3.amsl.com>; Thu, 14 Aug 2008 09:57:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.605
X-Spam-Level:
X-Spam-Status: No, score=-0.605 tagged_above=-999 required=5 tests=[AWL=-1.994, BAYES_00=-2.599, FRT_STOCK2=3.988]
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 9iTkywEPd9ZU for <tcpm@core3.amsl.com>; Thu, 14 Aug 2008 09:57:03 -0700 (PDT)
Received: from vapor.isi.edu (vapor.isi.edu [128.9.64.64]) by core3.amsl.com (Postfix) with ESMTP id 052733A6CB2 for <tcpm@ietf.org>; Thu, 14 Aug 2008 09:57:00 -0700 (PDT)
Received: from [75.214.2.40] (40.sub-75-214-2.myvzw.com [75.214.2.40]) by vapor.isi.edu (8.13.8/8.13.8) with ESMTP id m7EGtxq1001476 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 14 Aug 2008 09:56:02 -0700 (PDT)
Message-ID: <48A46373.4090606@isi.edu>
Date: Thu, 14 Aug 2008 09:55:15 -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> <20080813195027.C4C5B50848@romeo.rtfm.com> <396556a20808131307r65a9f6a0oe4365be029620b2c@mail.gmail.com> <48A35CFA.4060709@isi.edu> <396556a20808131525i20dabf06w7a7a11e3468e541a@mail.gmail.com> <48A36104.6000000@isi.edu> <396556a20808131605w2ccac3ceo21160401e4545c15@mail.gmail.com> <48A383F0.9030601@isi.edu> <396556a20808131827x1ab32b13yaa9358ac1a70c6ed@mail.gmail.com> <48A3C0B3.8050003@isi.edu> <396556a20808140940p63dec2d2ib3332b27da8260ae@mail.gmail.com>
In-Reply-To: <396556a20808140940p63dec2d2ib3332b27da8260ae@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 FWIW, IMO it is not wise to deploy code into a widely-used codebase that uses the experimental KIND values. Experiments should be controlled. See RFC4727, notably: ~ ... The network scope of support ~ for experimental values should carefully be evaluated before ~ deploying any experiment across extended network domains, such as the ~ public Internet. Joe Adam Langley wrote: | On Wed, Aug 13, 2008 at 10:20 PM, Joe Touch <touch@isi.edu> wrote: |> I'm confused now; your code - and your note. Let's go back to the key issue: |> |> - is the data received by the client dependent on the option? | | I do apologise, the confusion is my fault: | | There are two extensions interacting here. Firstly, there's an | extension to include data in the SYNACK. Then there's the application | layer signaling with the option. I was outlining the code for the | latter. The former is an extension that could be deployed today, it's | managed with a setsockopt on the server socket: | | struct tcpsa tcpsa; | memcpy(tcpsa.tcpsa_payload, mysynackdata, length); | setsockopt(socket, SOL_TCP, TCP_SADATA, &tcpsa, sizeof(tcpsa)); | | listen(socket); | | for (;;) { accept(); ... } | | Obviously, this is just an implementation detail. It's nice for | sockets based APIs to do it like this. Since such stacks are dominant, | the idea of a constant payload appears in the draft. I make a couple | of exceptions to this. The ability to include a 64-bit nonce is very | useful and easy for the stack to manage. That's done with: | | struct tcpsa tcpsa; | memcpy(tcpsa.tcpsa_payload, mysynackdata, length); | tcpsa.tcpsa_flags = TCP_SADATA_INC_NONCE; | tcpsa.tcpsa_nonce_offset = 0; | setsockopt(socket, SOL_TCP, TCP_SADATA, &tcpsa, sizeof(tcpsa)); | | Also, the ability to only send this data when the SYN includes the | SAPP option. At the moment, this is the default, although there is | space in the flags set aside for when I get round to it. | | Example client side code and stack patches are referenced below. | | Again, this is just to appease the sockets API. Stacks like [1] allow | the application to process the SYN directly and construct any SYNACK | payload they like on a per-packet basis. | | [1] http://tservice.net.ru/~s0mbre/old/?section=projects&item=unetstack | |> As a final question, if this is experimental, why not just use the |> experimental TCP option KIND? |> |> (and how much of this has been implemented, traced, and checked for |> things like simultaneous open - I don't recall if you noted that before) | | A linux patch[2] has been reviewed by the networking maintainer, | although I haven't asked for it to be applied yet because it's not | quite final. (It's using an experimental KIND number for one). Example | client side code example can be found at [3]. This includes preload | code to support Apache, Firefox etc (screenshot: [4]). It's been | tested by several people over the real Internet. (Note that [3] is | just a dump of my current code, it has many rough edges at the moment. | And ignore the TCP-AO stuff therein, it's #ifdef'ed out). | | Also, I believe that I currently have the Diffie-Hellman speed record | with [5] since my implementation is 10% faster than the previously | claimed best[6]. (The version in [3] is much slower, I've yet to | update it.) | | I'm am currently using an experimental KIND. However, if I were to, | say, deploy this on all the Google frontend servers (hypothetically, | of course), I suspect that would be in excess of what the experimental | kinds were for. | | As for simultaneous open. The linux patch handles it by not doing | anything different. The option may be carried in the SYN, but the ACKs | are as normal. Since all BSD like stacks would, very likely, work the | same, it might be best to specify that behaviour in the draft. | | | Cheers | | | AGL | | [2] http://marc.info/?l=linux-netdev&m=121857466907992&w=2 | [3] http://www.imperialviolet.org/binary/libobstcp-0.2a.tar.bz2 | [4] http://bp3.blogger.com/_kRcqvZJgJFs/SH0B_oPSlzI/AAAAAAAAAUM/eg-IxgbyhIs/s1600-h/firefox-obstcp.png | [5] http://code.google.com/p/curve25519-donna | [6] http://cr.yp.to/ecdh/reports.html | | -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkikY3IACgkQE5f5cImnZru7hQCg1o2zdXMursx8kNpgMLh0xtuj R+EAoOTQhKfHeKusrxwDuxY1qCO68oee =r4iA -----END PGP SIGNATURE----- _______________________________________________ tcpm mailing list tcpm@ietf.org https://www.ietf.org/mailman/listinfo/tcpm
- [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Sergio Freire
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Sergio Freire
- Re: [tcpm] SYN/ACK Payloads, draft 01 Lars Eggert
- Re: [tcpm] SYN/ACK Payloads, draft 01 Sergio Freire
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Sergio Freire
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Sergio Freire
- Re: [tcpm] SYN/ACK Payloads, draft 01 Eric Rescorla
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Eric Rescorla
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Eric Rescorla
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Eric Rescorla
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Caitlin Bestler
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Caitlin Bestler
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Michael Tüxen
- Re: [tcpm] SYN/ACK Payloads, draft 01 Caitlin Bestler
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Eric Rescorla
- Re: [tcpm] SYN/ACK Payloads, draft 01 Michael Tüxen
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Caitlin Bestler
- Re: [tcpm] SYN/ACK Payloads, draft 01 Adam Langley
- Re: [tcpm] SYN/ACK Payloads, draft 01 Anantha Ramaiah (ananth)
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch
- Re: [tcpm] SYN/ACK Payloads, draft 01 Joe Touch