Re: [tcpm] [Technical Errata Reported] RFC7413 (4239)

Matthew Luckie <mjl@caida.org> Sat, 24 January 2015 03:57 UTC

Return-Path: <mjl@luckie.org.nz>
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 4B7DA1A00DC for <tcpm@ietfa.amsl.com>; Fri, 23 Jan 2015 19:57:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001] 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 OXLry8vLHXNe for <tcpm@ietfa.amsl.com>; Fri, 23 Jan 2015 19:57:56 -0800 (PST)
Received: from cdptpa-oedge-vip.email.rr.com (cdptpa-outbound-snat.email.rr.com [107.14.166.232]) by ietfa.amsl.com (Postfix) with ESMTP id 317141A00D1 for <tcpm@ietf.org>; Fri, 23 Jan 2015 19:57:55 -0800 (PST)
Received: from [76.167.133.166] ([76.167.133.166:16915] helo=spandex.luckie.org.nz) by cdptpa-oedge02 (envelope-from <mjl@luckie.org.nz>) (ecelerity 3.5.0.35861 r(Momo-dev:tip)) with ESMTP id 86/40-29014-04813C45; Sat, 24 Jan 2015 03:57:55 +0000
Received: from mjl by spandex.luckie.org.nz with local (Exim 4.85 (FreeBSD)) (envelope-from <mjl@luckie.org.nz>) id 1YErr5-0008TG-Gi; Fri, 23 Jan 2015 19:57:51 -0800
Date: Fri, 23 Jan 2015 19:57:51 -0800
From: Matthew Luckie <mjl@caida.org>
To: Joe Touch <touch@isi.edu>
Message-ID: <20150124035751.GA32450@spandex.luckie.org.nz>
References: <20150122232420.282F5187A98@rfc-editor.org> <54C2DE6E.2010505@isi.edu>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="r5Pyd7+fXNt84Ff3"
Content-Disposition: inline
In-Reply-To: <54C2DE6E.2010505@isi.edu>
User-Agent: Mutt/1.5.23 (2014-03-12)
Sender: Matthew Luckie <mjl@luckie.org.nz>
X-RR-Connecting-IP: 107.14.168.130:25
X-Cloudmark-Score: 0
Archived-At: <http://mailarchive.ietf.org/arch/msg/tcpm/GY5r0qvB__ckJ9v5W9AKKjTgiEs>
X-Mailman-Approved-At: Sun, 25 Jan 2015 10:41:54 -0800
Cc: tcpm@ietf.org, arvind@google.com, mls.ietf@gmail.com, RFC Errata System <rfc-editor@rfc-editor.org>
Subject: Re: [tcpm] [Technical Errata Reported] RFC7413 (4239)
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, 24 Jan 2015 03:57:58 -0000

> > Notes
> > -----
> > A Nil fast-open option has an option length of 2. 
> 
> Agreed.
> 
> > A length field of zero would mean an invalid TCP option.
> 
> Disagree. The correct reason is, IMO:
> 
> 	The Nil option has no bytes beyond the Kind and Length
> 	fields required in all TCP options, and the Length field
> 	includes the space used for Kind and Length.
> 
> The interpretation of an option with a 0 length should not be discussed
> in the errata or future updates to this doc; it is out of scope.
> 
> (AFAICT, if it were observed, the entire segment would have to be deemed
> invalid, not just that individual option. But that's not germane to this
> errata).

I do not think that the reasoning behind this errata needs to be
discussed in future updates to the RFC (I put my reasoning in the
Notes field of the errata form) but I absolutely believe that a TCP
option defined after RFC793 with a length of zero is an invalid option
that will cause a TCP receiver to stop processing the options.

https://tools.ietf.org/html/rfc793 <-- page 17

Options:  variable

    Options may occupy space at the end of the TCP header and are a
    multiple of 8 bits in length.  All options are included in the
    checksum.  An option may begin on any octet boundary.  There are two
    cases for the format of an option:

      Case 1:  A single octet of option-kind.

      Case 2:  An octet of option-kind, an octet of option-length, and
                     the actual option-data octets.

    The option-length counts the two octets of option-kind and
        option-length as well as the option-data octets.

https://tools.ietf.org/html/rfc5925  <-- page 8

 (discussing a different option type, but all options post 793 are TLVs,
  and this RFC specifically says that the segment should be discarded.
  granted that it is a different TCP option)

   o  Length: An unsigned 1-byte field indicating the length of the
         option in bytes, including the Kind, Length, KeyID, RNextKeyID,
	       and MAC fields.

      >> The Length value MUST be greater than or equal to 4.  When the
            Length value is less than 4, TCP MUST discard the segment.

===

Matthew