Re: [tcpm] New Version Notification for draft-touch-tcpm-tcp-edo-01.txt
Joe Touch <touch@isi.edu> Sat, 31 May 2014 03:59 UTC
Return-Path: <touch@isi.edu>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0B9ED1A06DA for <tcpm@ietfa.amsl.com>; Fri, 30 May 2014 20:59:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.551
X-Spam-Level:
X-Spam-Status: No, score=-2.551 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.651] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RW9Y-h-e7r2M for <tcpm@ietfa.amsl.com>; Fri, 30 May 2014 20:59:18 -0700 (PDT)
Received: from darkstar.isi.edu (darkstar.isi.edu [128.9.128.127]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 15B591A031B for <tcpm@ietf.org>; Fri, 30 May 2014 20:59:18 -0700 (PDT)
Received: from [192.168.1.93] (pool-71-105-87-112.lsanca.dsl-w.verizon.net [71.105.87.112]) (authenticated bits=0) by darkstar.isi.edu (8.13.8/8.13.8) with ESMTP id s4V3wpkU013613 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Fri, 30 May 2014 20:58:55 -0700 (PDT)
Message-ID: <5389537C.20104@isi.edu>
Date: Fri, 30 May 2014 20:58:52 -0700
From: Joe Touch <touch@isi.edu>
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0
MIME-Version: 1.0
To: John Leslie <john@jlc.net>
References: <201405221710.s4MHAY4S002037@bagheera.jungle.bt.co.uk> <537E3ACD.5000308@isi.edu> <1AD79820-22C1-4500-84D1-1383F264D68C@weston.borman.com> <201405231213.s4NCDa5P005525@bagheera.jungle.bt.co.uk> <537F8202.4020907@isi.edu> <201405281715.s4SHFMm0014634@bagheera.jungle.bt.co.uk> <538623B9.2060209@isi.edu> <201405301642.s4UGgcvY030471@bagheera.jungle.bt.co.uk> <5388EB6F.4010405@isi.edu> <5389263C.8010202@isi.edu> <20140531014612.GF23373@verdi>
In-Reply-To: <20140531014612.GF23373@verdi>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/uiyq6uzhohQh4Ben12EY8uKf4JQ
Cc: "tcpm@ietf.org" <tcpm@ietf.org>
Subject: Re: [tcpm] New Version Notification for draft-touch-tcpm-tcp-edo-01.txt
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/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>
X-List-Received-Date: Sat, 31 May 2014 03:59:21 -0000
On 5/30/2014 6:46 PM, John Leslie wrote: > Joe Touch <touch@isi.edu> wrote: >> >> Some additional information below about "another trick" I proposed, >> inspired by Bob's dual-SYN mechanism, courtesy a few long discussions >> today with Ted Faber. > > This _is- as interesting idea... > >> I'll be glad to offer this as a potential solution in the doc. > > I'd _much_ rather this be detailed in a separate document. The edo > proposal is reasonably easy to understand, while this contains multiple > layers of complexity. > > I _don't_ claim to understand it all -- if we try to publish this > in an RFC, a _lot_ of work will be needed to clarify everything... Sure... >> On 5/30/2014 1:34 PM, Joe Touch wrote: >> ... >>> Here's another trick that might clean up the above a little: >> >> FWIW, I had explained it below as being based on sending out-of-window >> data; Ted pointed out that I had been assuming that the FBP ACK bit >> wasn't set - which means the sequence number might be more usefully >> matched to that of the SYN. > > I see you now give the "second" packet the same sequence number. Yes. > I feel a need to describe the FBP more exactly. Of course. > I'm guessing it's the > same port pair (but I very much dislike guessing!). Oh, yes - that's the way it ensures fate-sharing with the SYN. > Obviously it's > the same IP-address pair Yes. > (but can we really depend upon middleboxes > to translate both packets the same?). If the FBP comes after the SYN, yes. If not, the FBP will be dropped, and retransmitted when the SYN-ACK indicates the FBP hasn't been received (for upgraded servers). > I won't venture a guess as to > whether it has the SYN bit set (but thanks for saying the ACK bit > is clear). Et cetera... It can't have the SYN bit - that would be two SYNs to the same place, and if they have different options that'd be confusing for legacy servers. If they had the same options, there'd be no increase in space - it's not possible to use the data field of a SYN for options because legacy hosts will interpret that as user data. >> See below... >> >>> aso - after SYN option > > This is an option within the Options field of the first SYN, right? > >> length = 2 (just a flag) >> length = 3 (or 4) indicating the length of the >> FBP expected > > What does length==2 tell us about the FBP? Here's more specifically what I was thinking: Length = 2 (1 byte), Kind = fpb-option-codepoint (1 byte) or Length = 3, Kind = fbp-option-codepoint, fbp-length (1 byte) Length == 4 just means a longer fbp-length field, or maybe it means: Length, Kind, Flags, FBP-length (you'll see below where the flags might come in) Length == 2 just means there's no fbp-length field. That could mean that the length of the FBP should be determined from the FBP packet itself (using fbp-length operates as a double-check that the FBP packet matches); alternately, it could mean that there's no FBP - i.e., that this is just the EDO that extends non-SYN packets. Alternately, we could use different option codepoints for FBP and EDO, in which case the FBP option just means "FBP packet should be expected". >>> FBP - front bumper packet (best I could do on names today) >>> a packet >> ISN = same as the associated SYN >> ACK = cleared (i.e., a data packet NOT part of >> synchronized connection - see why that's useful below) > > Does this have SYN set? No. that would be a second SYN, which causes load problems for legacy servers. > How does the sender of the FBP learn what the receiver of the FBP > took it to mean? (Assuming, of course, it was received at all...) The ACK that comes back, either in the SYN-ACK (if the FBP has been received) or a second ACK after that will have the response to the FBP options. >>> new endpoint sends: > > What's a "new endpoint"? An upgraded one, i.e., one that supports this new option... >>> SYN + aso + fix_opt >>> FBP + aso + extra_opt >> >> extra_opt in the data field >> total length < min MTU (576 for IPv4, 1280 for IPv6) >> again ACK bit is zero > > I get very nervous about using the data field before the handshake > is complete. It's safe - as per RFC793. This packet is outside the connection because the ACK isn't set. That's effectively saying "this packet is for the unsynchronized state". RFC793 says all such packets get silently dropped (we're talking about a packet with ACK clear, and NO other control flags set - no SYN, no RST, no FIN). >>> legacy endpoint sends back one connections: >>> SYN-ACK + fix_opt > > Presumably the legacy endpoint ignores the FBP... but what happens > if only the FBP arrives (the initial SYN being lost or mangled by a > middlebox)? They ignore it at all times, except if received in CLOSED at which point they send a RST (just like receiving any other packet in that state). If the SYN is lost, the same thing happens as any time the SYN is lost - the client resends the SYN after a timeout, and after some number of failed timeouts it gives up. Upgraded endpoints might keep FBPs for a short time in the hope of getting a matching SYN, but if they don't or discard it before it comes, the client will resend it when the SYN-ACK indicates its missing. >>> if seg arrives before SYN, > > Am I supposed to assume "seg" here means FBP? Sorry - typed too fast. Yes, here and throughout the rest... >> it is silently dropped, because >> the ACK bit is clear (this is >> explicit in RFC793) >> >>> if seg arrives after SYN, >> >> it is silently dropped, because >> the ACK bit is clear (this is also >> explicit in RFC793) >>> ---- >>> >>> new endpoint sends back one connection: >>> >>> SYN-ACK + options + .... >>> >>> a) if FBP arrives before SYN, >> >> it can be silently dropped, but >> it's probably useful for new endpoints >> to hold onto these (without action) >> for a while; they can be silently >> discarded if there are too many >> (which will just result in a >> retransmission and an extra RTT) > > Your hands are waving... Not that hard. Keeping a cache of recently received FBPs is a simple thing to do, and the mechanism is robust to that cache either not existing or being small. >>> b) if FPB arrives with the SYN, they can be >>> processed together >>> >>> the SYN-ACK can include responses to >>> the extra_opts in addition to the >>> fix_opts, and says "FBP received" > > How would it say "FBP received"? I thought of a few ways - they all end up being equivalent in spirit to a flag in an option field in the SYN-ACK, so let's say it's that for now: set FBP-received flag in the aso option >>> c) if FPB arrives after the SYN: >>> >>> SYN-ACK proceeds, but sends >>> back "wait for option response". > > How would it send that? The FBP-received flag in the SYN-ACK aso option isn't set. >>> at this point, the source re-sends FBP >>> until an ACK is received that indicates >>> "FBP received", or times-out as with >>> any connection that doesn't finish TWHS > > This sounds like the timeout wouldn't be rare -- a middlebox might > pretty automatically drop the FBP, depending... If the FBP comes before the SYN, yes. If not, it shouldn't AFAICT. >>> I'm still thinking as to whether the ACK number >>> might indicate whether FBP has been received, > > That sounds strange... Yeah - nevermind that. >> There are a few ways to handle this, but IMO the best is to have: >> >> SYN-ACK aso with length=2 means "waiting for FBP" >> >> SYN-ACK aso with length=3 (or 4) could mean >> "got the FBP", or might even indicate how >> many bytes the FBP extension contained > > That's limiting... I don't see why (FBP can indicate 32-bit words, just like the current Data Offset field, which means 255 = 1020 bytes of option space in the FBP -- note that this is all contained in the data portion of the FBP segment). >> Note - the SYN-ACK and all subsequent segments can assume that aso == >> edo, i.e., they can use the same EDO as spec'd in version 01 of this draft. > > Please! No! > > (Option numbers aren't that scarce.) See above. We could say: EDO length = 0 in a SYN means no FBP EDO length = N in a SYN means FBP with length N But let's not get hung on that detail either, IMO. Joe
- [tcpm] Fwd: New Version Notification for draft-to… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Pasi Sarolahti
- Re: [tcpm] New Version Notification for draft-tou… Wesley Eddy
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… Yoshifumi Nishida
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Scharf, Michael (Michael)
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… Olivier Bonaventure
- Re: [tcpm] New Version Notification for draft-tou… Scharf, Michael (Michael)
- Re: [tcpm] New Version Notification for draft-tou… Costin Raiciu
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Wesley Eddy
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Costin Raiciu
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Scheffenegger, Richard
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Wesley Eddy
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… David Borman
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… David Borman
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- [tcpm] timestamp options (was Re: New Version Not… Eggert, Lars
- Re: [tcpm] timestamp options (was Re: New Version… Brian Trammell
- Re: [tcpm] timestamp options (was Re: New Version… Scharf, Michael (Michael)
- Re: [tcpm] timestamp options (was Re: New Version… Scheffenegger, Richard
- Re: [tcpm] timestamp options (was Re: New Version… Scharf, Michael (Michael)
- Re: [tcpm] timestamp options (was Re: New Version… Scheffenegger, Richard
- Re: [tcpm] timestamp options (was Re: New Version… Scharf, Michael (Michael)
- Re: [tcpm] timestamp options (was Re: New Version… Yoshifumi Nishida
- Re: [tcpm] timestamp options (was Re: New Version… Joe Touch
- Re: [tcpm] timestamp options (was Re: New Version… Yoshifumi Nishida
- Re: [tcpm] timestamp options (was Re: New Version… Scheffenegger, Richard
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… Christoph Paasch
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… Bob Briscoe
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Olivier Bonaventure
- Re: [tcpm] New Version Notification for draft-tou… Olivier Bonaventure
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] timestamp options (was Re: New Version… Joe Touch
- Re: [tcpm] timestamp options (was Re: New Version… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… John Leslie
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Olivier Bonaventure
- Re: [tcpm] New Version Notification for draft-tou… Olivier Bonaventure
- [tcpm] More TCP option space on SYNs Bob Briscoe
- Re: [tcpm] More TCP option space on SYNs Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- Re: [tcpm] New Version Notification for draft-tou… Joe Touch
- [tcpm] SYN extension using ACK=0 data packets Bob Briscoe
- Re: [tcpm] SYN extension using ACK=0 data packets Joe Touch
- Re: [tcpm] More TCP option space on SYNs Bob Briscoe
- Re: [tcpm] SYN extension using ACK=0 data packets Bob Briscoe
- Re: [tcpm] timestamp options (was Re: New Version… Yoshifumi Nishida
- Re: [tcpm] timestamp options (was Re: New Version… Joe Touch
- Re: [tcpm] timestamp options (was Re: New Version… Mark Allman
- Re: [tcpm] timestamp options (was Re: New Version… Mark Allman
- Re: [tcpm] timestamp options (was Re: New Version… Scharf, Michael (Michael)
- Re: [tcpm] timestamp options (was Re: New Version… Joe Touch
- Re: [tcpm] timestamp options (was Re: New Version… Joe Touch
- Re: [tcpm] timestamp options (was Re: New Version… Scharf, Michael (Michael)
- Re: [tcpm] timestamp options (was Re: New Version… Mark Allman
- Re: [tcpm] timestamp options (was Re: New Version… Mark Allman
- Re: [tcpm] timestamp options (was Re: New Version… Joe Touch
- Re: [tcpm] timestamp options (was Re: New Version… Yoshifumi Nishida
- Re: [tcpm] timestamp options (was Re: New Version… Yuchung Cheng
- Re: [tcpm] timestamp options (was Re: New Version… Mark Allman
- Re: [tcpm] timestamp options (was Re: New Version… Yuchung Cheng
- Re: [tcpm] More TCP option space on SYNs Martin Duke
- Re: [tcpm] More TCP option space on SYNs Joe Touch