Re: [tcpm] Comments on draft-zimmermann-tcpm-echo-option

Pasi Sarolahti <pasi.sarolahti@iki.fi> Mon, 20 July 2015 10:41 UTC

Return-Path: <pasi.sarolahti@iki.fi>
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 C61931A1B25 for <tcpm@ietfa.amsl.com>; Mon, 20 Jul 2015 03:41:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.121
X-Spam-Level:
X-Spam-Status: No, score=-1.121 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_NEUTRAL=0.779] autolearn=no
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 cNJKXgT5hxvy for <tcpm@ietfa.amsl.com>; Mon, 20 Jul 2015 03:41:25 -0700 (PDT)
Received: from jenni2.inet.fi (mta-out1.inet.fi [62.71.2.229]) by ietfa.amsl.com (Postfix) with ESMTP id 18EEF1A1B2A for <tcpm@ietf.org>; Mon, 20 Jul 2015 03:41:25 -0700 (PDT)
Received: from dhcp-8902.meeting.ietf.org (31.133.139.2) by jenni2.inet.fi (8.5.142.08) (authenticated as saropa-1) id 552B87C905178615; Mon, 20 Jul 2015 13:41:21 +0300
Content-Type: text/plain; charset="windows-1252"
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
From: Pasi Sarolahti <pasi.sarolahti@iki.fi>
In-Reply-To: <553710a93aa94ff19a5fb28eac42168a@hioexcmbx05-prd.hq.netapp.com>
Date: Mon, 20 Jul 2015 12:41:20 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <118DE6D7-6863-4859-8A25-1CA086B3002C@iki.fi>
References: <CF4CD7A0-AFE9-426D-B085-D9A088D75E3B@iki.fi> <553710a93aa94ff19a5fb28eac42168a@hioexcmbx05-prd.hq.netapp.com>
To: Richard Scheffenegger <rs@netapp.com>
X-Mailer: Apple Mail (2.1878.6)
Archived-At: <http://mailarchive.ietf.org/arch/msg/tcpm/01ZVkodF8yuBe6e1KL4imd0oXOQ>
Cc: "tcpm@ietf.org Extensions" <tcpm@ietf.org>
Subject: Re: [tcpm] Comments on draft-zimmermann-tcpm-echo-option
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: <https://mailarchive.ietf.org/arch/browse/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: Mon, 20 Jul 2015 10:41:29 -0000

On 20 Jul 2015, at 11:49, Scheffenegger, Richard <rs@netapp.com> wrote:

>> * It is required that at most one Echo option is included per segment. Is
>> there any reason to limit the number of options? I couldn't immediately
>> see why having multiple instances of the option would cause problems, or
>> could it?
> 
> Yes, there are issues with that, and they are plentiful. The easy way out was to side-step this, and only allow (just as with every other TCP option so far) only a single instance of the option, and only reflect the option most recently observed by the receiver.
> 
> Issues include, but are not limited to
> o) semantics
> o) ordering
> o) meddleboxes
> o) receiver state
> o) implementation issues

Ok. I thought that “just echo what you saw in latest segment” might have been sufficient, perhaps in the same order than in incoming packet. Middleboxes might have issues even with single option.

So if there were multiple different uses for this mechanism, one would need to make a choice, or bundle the data somehow.

The semantics of what to echo seems difficult question even with single option: if the first segment includes the option and second does not, and ACK is sent only after the second segment, is it correct to echo the option from the first segment? This is pretty difficult to answer without knowing what the intended uses are. It could be that different uses need different semantics.

>> * "A TCP sender MAY send an empty TCP Echo option with Length=2 on the
>> SYN..." - this would not have to be limited just to SYNs, right? Can't think
>> of any useful reason for sending empty echo pings mid-connection (some
>> sort of diagnostics, perhaps?), but can't see any reason to disallow that
>> either. Also, it might be helpful clarification to note that when ExID is
>> used, length will be different.
> 
> We did not want this document to specify a full in-session negotiation protocol - as that problem has been discussed on the list earlier, it's a hard issue and beyond the scope of what we want to achive with this draft.

I did not propose in-session negation, but only asked if it is possible to send a zero-payload Echo option? Might be silly, but does not seem harmful. Now that I better read the draft, it seems to allow this in earlier text, which is ok, I guess.

>> * "it is NOT RECOMMENDED to send easily decipherable data in the clear as
>> data in the TCP Echo option..." - I don't think this recommendation is
>> necessary. Depends on the intended use, I guess. There are other ways for
>> encrypting TCP header when that is needed.
> 
> Even when only the receiver can decode (or make educated guesses about) the contents of a field that is supposed to be immutable, it has shown issues in the past (reference early cubic implementations, that could be persuaded to give very large shares of bandwidth to a receiver that slightly modifies the TCP timestamp echo value). We also believe that this recommendation (not even a SHOULD or MUST) is in-line with RFC7258. 

Fine, it may be necessary to protect against cheating receivers, depending on what the option is used for. Ideally RFC 7258 should be addressed with a common solution so that one does not need to obfuscate each protocol field or option separately. But as you say, the language here is not too restrictive.

- Pasi