Re: [tcpm] SYN/ACK Payloads, draft 01
"Caitlin Bestler" <Caitlin.Bestler@neterion.com> Thu, 14 August 2008 22:44 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 A68AD3A6A7B; Thu, 14 Aug 2008 15:44:02 -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 8A55B3A6A70 for <tcpm@core3.amsl.com>; Thu, 14 Aug 2008 15:44:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[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 hIRlW053e+h1 for <tcpm@core3.amsl.com>; Thu, 14 Aug 2008 15:43:59 -0700 (PDT)
Received: from owa.neterion.com (mx.neterion.com [72.1.205.142]) by core3.amsl.com (Postfix) with ESMTP id 68D7F3A67B7 for <tcpm@ietf.org>; Thu, 14 Aug 2008 15:43:59 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Date: Thu, 14 Aug 2008 18:44:11 -0400
Message-ID: <78C9135A3D2ECE4B8162EBDCE82CAD770417B23A@nekter>
In-Reply-To: <396556a20808141401of8ad149w5850e8dc552a9948@mail.gmail.com>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [tcpm] SYN/ACK Payloads, draft 01
Thread-Index: Acj+UOLTGcutM0Q+Q4KaoL09zOHnpwAC+vBg
References: <396556a20808111035s2b974233o1e9d3671e82e3350@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><48A4975D.3070303@isi.edu> <396556a20808141401of8ad149w5850e8dc552a9948@mail.gmail.com>
From: Caitlin Bestler <Caitlin.Bestler@neterion.com>
To: Adam Langley <agl@imperialviolet.org>, Joe Touch <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-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: tcpm-bounces@ietf.org
Errors-To: tcpm-bounces@ietf.org
Adam Langley wrote: > > But many application level protocols have been designed as > client-speaks-first, like HTTP. So, let's define HTTP-ssf (server > speaks first). HTTP-ssf is exactly the same as HTTP, except that the > client waits for a banner from the HTTP server before sending a banner > of it's own. We can use the same trick as the SMTP server to maybe fit > this banner in the SYNACK. If it doesn't fit, no loss, it can go in > later packets. If the client doesn't ACK all the data from the SYNACK, > no loss, again it goes in the next packets. > > Now, I can run an HTTP-ssf server, but no web browser on the planet > can talk to me! And the browsers that I modify to speak HTTP-ssf can't > take to any non-ssf HTTP servers. It's a very lonely website. > > I could define a whole new URL scheme (httpssf://...) and a new port. > But then there's no gradual deployment path because users with old > browsers don't understand httpssf:// and it confuses the users anyway. > Most type http:// by habit. > > My HTTP-ssf server happens to be an embedded device and it handles the > TCP processing directly. So, I have browsers that understand HTTP-ssf > set an option in the SYN packet. If I see this option, I start talking > HTTP-ssf, otherwise I stick with HTTP. When I start talking HTTP-ssf, > I echo the option to let the client know which protocol is in effect. > Now HTTP-ssf can be deployed gradually. This is an excellent summary of the core problem. It also summarizes why SCTP is not the solution. An httpsctp protocol would be far superior to an httpssf protocol, but it would be just as lonely. So to translate your application level problem into transport layer terms, you want to subdivide the class TCP payload stream into a finite-sized "banner" that is at the start of the stream and is followed by the traditional byte stream payload. Further, you want to establish both bannerless and banner-enabled connections using the same server-side listen. That is: - When a banner-unaware client attempts to connect to a banner-capable server, everything will work. The server will know that the client did not provide a banner, and the client will never see a banner that it does not know what to do with. - When a banner-aware client attempts to connect to a banner-unaware server, everything will work because the client does not send a banner until it has seen the server's TCP options. The client will be told that the connection was accepted by a banner-unaware server, and the server will think it has a traditional client. - When a banner-aware client attempts to connect to a banner-capable server they will actually exchange banners, and the banner payloads will be delivered to the client and server applications in a manner that is separate from the normal payload. The rationale for doing this in TCP is that the total application infrastructure cannot steer banner-aware clients to an alternate port due to the class chicken-and-egg problem. If only 1% of clients understand banner-enabled HTTP then no sites will be encoded to use the special URL indicating banner capability. Since no sites use the banner indicating URL there is no reason for new clients to add that capability. So there *is* rationale for doing this at the transport layer. Whether there is *sufficient* rationale is subject to debate. My key reservation remains that this breaks a fundamental concept of TCP. Instead of the TCP payload being "a stream of bytes" it is now "an optional banner message sent only when the peer's TCP options indicate it can be parsed followed by a stream of bytes". I've never been a fan of the "stream of bytes" model (I far prefer the SCTP "stream of messages" model), but it is very simple and it is what TCP is. I'm not sure the improvements cited here are reaching a threshold sufficient to justify the required extra conceptual complexity. _______________________________________________ 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