Re: [tsvwg] draft-ietf-udp-options issues from IETF 104

"Black, David" <David.Black@dell.com> Tue, 16 July 2019 21:33 UTC

Return-Path: <David.Black@dell.com>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 508D2120139 for <tsvwg@ietfa.amsl.com>; Tue, 16 Jul 2019 14:33:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=dell.com header.b=Iy9CzyuM; dkim=fail (1024-bit key) reason="fail (message has been altered)" header.d=emc.com header.b=V/3ZFYRG
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 YWXctv1jIUa2 for <tsvwg@ietfa.amsl.com>; Tue, 16 Jul 2019 14:33:44 -0700 (PDT)
Received: from mx0b-00154904.pphosted.com (mx0b-00154904.pphosted.com [148.163.137.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 708E3120136 for <tsvwg@ietf.org>; Tue, 16 Jul 2019 14:33:44 -0700 (PDT)
Received: from pps.filterd (m0170395.ppops.net [127.0.0.1]) by mx0b-00154904.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x6GL57GE015106; Tue, 16 Jul 2019 17:33:43 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=smtpout1; bh=iKii27l7hT73DB59l9CsHppQ3+wlnUOYZyl3xjehqqM=; b=Iy9CzyuMivbq+JNwSbSQGvjrSDq5HSG43eJZt0AsiG8xsbY1Gkj0z5toJi1J6F7aFkgD NGBkIMFO6FAbABMx4MLMzGi4WuRTVX+hdOjVzrBdmRH9jjUiZQTynE2u9ctBxDr8m5vV fO5kZO8fwlv+gI7Q6SVUqLqlZRMGVYYBg9UtPR9l3B7t3N7bOnZOVSpE/v/TK0nS4JID nJ8ZeIxtiUo8ng2WMSfpAueTieB1S618ZmQndWQ8Ryk8/j1+hXRn4vRNDjSpGL9VLUnz 3mco//6iURfYLapDs3i1JwDVsPnHKsAsNyUEvjxSvhw6cJLJE2elWgXNGPKzGFMRO09C AA==
Received: from mx0b-00154901.pphosted.com (mx0b-00154901.pphosted.com [67.231.157.37]) by mx0b-00154904.pphosted.com with ESMTP id 2ts8mpnmck-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 16 Jul 2019 17:33:42 -0400
Received: from pps.filterd (m0144104.ppops.net [127.0.0.1]) by mx0b-00154901.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x6GLHAMt184324; Tue, 16 Jul 2019 17:33:42 -0400
Received: from mailuogwdur.emc.com (mailuogwdur.emc.com [128.221.224.79]) by mx0b-00154901.pphosted.com with ESMTP id 2tsnbq10je-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 16 Jul 2019 17:33:42 -0400
Received: from maildlpprd52.lss.emc.com (maildlpprd52.lss.emc.com [10.106.48.156]) by mailuogwprd54.lss.emc.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.0) with ESMTP id x6GLX3A7012351 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 16 Jul 2019 17:33:41 -0400
X-DKIM: OpenDKIM Filter v2.4.3 mailuogwprd54.lss.emc.com x6GLX3A7012351
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=emc.com; s=jan2013; t=1563312821; bh=V3XlsEfdUxtaGrwGOT4AjSLoJnY=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=V/3ZFYRGzLs5ykCVqcWiH8zxlpMnLzpZBS20qCDdINesGf7+JbYYw79q/n5xgS4/9 lsBmmwOCIfcK8mED/rv0f1pM5xlL0lzuuLUVE29ar5czjONXffTntyUtcQrhZ9ayBQ z6XLW0kw03JshxFvyzYfBrn3tawdr+DdoxTtXOkE=
Received: from mailusrhubprd02.lss.emc.com (mailusrhubprd02.lss.emc.com [10.253.24.20]) by maildlpprd52.lss.emc.com (RSA Interceptor); Tue, 16 Jul 2019 17:31:27 -0400
Received: from MXHUB302.corp.emc.com (MXHUB302.corp.emc.com [10.146.3.28]) by mailusrhubprd02.lss.emc.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.0) with ESMTP id x6GLVQiQ016529 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=FAIL); Tue, 16 Jul 2019 17:31:27 -0400
Received: from MX307CL04.corp.emc.com ([fe80::849f:5da2:11b:4385]) by MXHUB302.corp.emc.com ([10.146.3.28]) with mapi id 14.03.0439.000; Tue, 16 Jul 2019 17:31:26 -0400
From: "Black, David" <David.Black@dell.com>
To: "C. M. Heard" <heard@pobox.com>, Joe Touch <touch@strayalpha.com>
CC: tsvwg <tsvwg@ietf.org>, "Black, David" <David.Black@dell.com>
Thread-Topic: [tsvwg] draft-ietf-udp-options issues from IETF 104
Thread-Index: AQHVN6fJSr2fz2j+X0mdJ/EyrvZ1aKbFyZkAgAAMWICAAA4/AIAAHX2A///IYUCAAG3ygIAASOeAgAKjpwCAAAaAAIABYN8AgAHhQYCAAS6NgIAAGWkAgABMcID//8VMwA==
Date: Tue, 16 Jul 2019 21:31:26 +0000
Message-ID: <CE03DB3D7B45C245BCA0D243277949363061EF7A@MX307CL04.corp.emc.com>
References: <CAPDqMeq9GjEQKukH1pZOTdE50e_rc3U6gpdxT-5qrS5phD0RGw@mail.gmail.com> <646D45AD-D79B-4BD2-A084-7DA97CE2C415@strayalpha.com> <7EC37B50-45D5-4CF1-B113-205E55BF244E@strayalpha.com> <CALx6S34s7L7xo+26bt5Cdaqi4Es5Aci42GHk1WNKzugr5st-Gw@mail.gmail.com> <B525BF50-EFCC-44A5-A604-6CDDA914A1CB@strayalpha.com> <CAPDqMep3R6z9PRKkHyOvrh6sV9n5Sc0B++-zVz0FYJCwE6swrQ@mail.gmail.com> <E42A2AE2-F499-465E-BDE6-5EFC0AB20042@strayalpha.com> <CE03DB3D7B45C245BCA0D24327794936306138E9@MX307CL04.corp.emc.com> <CAPDqMeoyNb7vQTdqxLpZpnKb9S7QKeDJNLyQJBmq95yXhB+xfQ@mail.gmail.com> <7D365770-64FE-40BC-901D-B4D7DF6B484B@strayalpha.com> <20190713182554.GB39770@clarinet.employees.org> <CALx6S36mH2M6SYnRSecWXa7k_d1u8O43+CXE-=KqeO0x2e5+qw@mail.gmail.com> <82FF6486-FABF-4D2C-B5E2-178779C720A4@strayalpha.com> <30c17e9c174f6b0da3ecc6b503a8cb17@strayalpha.com> <CACL_3VGs7j+y5vFNT3OL9OKX8ue4rv-Cxi467KR-vbhnMdx86g@mail.gmail.com> <2f71a292f924a9b8de4227c4bbc2f809@strayalpha.com> <CACL_3VGrF5UnbVsSzZZoy1i57WKiQKBX2T3a16UyEVHY=Kr3XA@mail.gmail.com>
In-Reply-To: <CACL_3VGrF5UnbVsSzZZoy1i57WKiQKBX2T3a16UyEVHY=Kr3XA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Enabled=True; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_SiteId=945c199a-83a2-4e80-9f8c-5a91be5752dd; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Owner=david.black@emc.com; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_SetDate=2019-07-16T21:28:31.9675537Z; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Name=External Public; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Application=Microsoft Azure Information Protection; MSIP_Label_17cb76b2-10b8-4fe1-93d4-2202842406cd_Extended_MSFT_Method=Manual; aiplabel=External Public
x-originating-ip: [10.238.21.131]
Content-Type: multipart/alternative; boundary="_000_CE03DB3D7B45C245BCA0D243277949363061EF7AMX307CL04corpem_"
MIME-Version: 1.0
X-Sentrion-Hostname: mailusrhubprd02.lss.emc.com
X-RSA-Classifications: public, GIS Solicitation
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-07-16_05:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1907160259
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1907160259
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/cgaD3wKCxtkt3OhQtS1TTEcXNZU>
Subject: Re: [tsvwg] draft-ietf-udp-options issues from IETF 104
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg/>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 16 Jul 2019 21:33:48 -0000

Still commenting as an individual …

The following text exhibits a peculiar use of “optional to implement” wording, but I think the overall simplification is useful:

> What I advocate to be "optional to implement" are the ability for a receiver
> to turn off verification of OCS when UDP CS<>0 and the ability for a
> receiver turn on verification of OCS when UDP CS=0.  This allows a receiver
> to determine whether and how to do an OCS verification by looking only at
> the IP Payload Length and the fields in the UDP header.

In other words the receiver does one of two things:
- If UDP CS != 0, expect to find that OCS !=0.  If OCS == 0, something is wrong. (MUST check OCS).
- If UDP CS == 0, don’t bother doing anything with OCS, even if OCS is non-zero. (I think “don’t bother” winds up being: SHOULD ignore OCS).

> If the above receive capabilities are optional to implement, the
> transmit capabilities to generate OCS when UCP CS<>0 and to omit OCS when
> UDP CS=0 can also be optional to implement. The primary benefit in this
> case is simplification of the API.

The use of “optional” in this second chunk of text is definitely misleading.   The easy requirement is:
- if UDP CS !=0 , OCS MUST be computed and sent.
I think there’s broad agreement on that requirement.

The UDP CS == 0 case is subtle, even if the receiver SHOULD ignore OCS as indicated above.  The reason is that OCS increases the likelihood of packet delivery, leading to Tom advocating that OCS MUST be used in this case.  As noted earlier, I’m ok with a “SHOULD use OCS” requirement here based on increased likelihood of packet delivery, but not a “MUST” even with a “receiver SHOULD ignore OCS” requirement.

>> > so the ONLY protection against corruption of the computed trailer length
>> > is the OCS.
>>
>> Again, this is certainly a risk, but why isn't it just a choice? When UDP
>> picks CS=0, they're saying they are willing to take that risk.
>
> And to make it clear, I'm OK with saying that OCS can be omitted if
> UDP CS=0 is selected. Under the appropriate circumstances (and in
> conformance with RFC 6936) that selection is indeed a valid user choice.

This is ok wrt corruption concerns, but “MAY” seems too weak (IMHO) given OCS’s visible increase in likelihood of packet delivery – the RFC 2119 admonition that “the full implications must be understood and carefully weighed before choosing a different course” seems to be a very good fit to this likelihood of packet delivery concern.

Thanks, --David

From: tsvwg <tsvwg-bounces@ietf.org> On Behalf Of C. M. Heard
Sent: Tuesday, July 16, 2019 4:42 PM
To: Joe Touch
Cc: tsvwg
Subject: Re: [tsvwg] draft-ietf-udp-options issues from IETF 104


[EXTERNAL EMAIL]
In-line followups where where they seem to be warranted.

On Tue, Jul 16, 2019 at 9:08 AM Joe Touch wrote:
> On 2019-07-16 07:37, C. M. Heard wrote:
> > >  - the OCS field is now manditory (not signalled with a KIND field
> > > or optional as a field)
>
> > As mentioned in
> > https://mailarchive.ietf.org/arch/msg/tsvwg/XZxL29UA-95ReA72mxv5-kEytK0,
> > for use in the trailer I'd prefer leaving it as an option so that NOPs
> > can be prepended for alignment, at the discretion of the sender
>
> Yes, that's the trade-off. If it's mandatory, we need to decide its
> alignment (none, 16-bit, 32-bit) ahead of time for all time. AND it has
> to be there even if it's not used.
>
> If we use the 1-byte flag, the alignment can be at the user's discretion
> and we save space when not in use.

Good. We agree on the trade-offs, I've said where I stand, so for now I move on.

> > > - OCS *SHOULD be computed, but MAY be set to zero (e.g., when UDP
> > > CS=0, at user discretion and peril)
> >
> > Partly agree. I do not want to see any receiver obligated to accept
> > packets with UDP trailers that don't have a computed OCS if UDP CS<>0
> > (it's fine to allow a mode that does otherwise as long as it's an
> > optional-to-implement capability).
>
> Optional to implement seems odd; it seems fine to say the receiver can
> treat ignore the surplus area in that case (i.e., act like a legacy
> receiver).

What I advocate to be "optional to implement" are the ability for a receiver
to turn off verification of OCS when UDP CS<>0 and the ability for a
receiver turn on verification of OCS when UDP CS=0. This allows a receiver
to determine whether and how to do an OCS verification by looking only at
the IP Payload Length and the fields in the UDP header -- there is no need
to inspect, or worse still, loop through the options trailer to make that
determination. And if OCS does need to be verified, it can be done by a
simple and well-understood Internet checksum computation (adjusted by the
compensation pseudo-header and conceptually prepending/appending zero bytes
when the trailer starts or ends on an odd byte boundary). As a bonus, CS
offload can be done as for a TCP segment (with appropriate adjustment for
the protocol number in the pseudo-header) since the combination of that
checksum and OCS being valid is mathematically equivalent to the combination
of the UDP checksum being valid and OCS being valid. And finally, the API
can be simpler because there are fewer combinations to support.

If the above receive capabilities are optional to implement, the
transmit capabilities to generate OCS when UCP CS<>0 and to omit OCS when
UDP CS=0 can also be optional to implement. The primary benefit in this
case is simplification of the API.

Granted, this is another tradeoff; we would reduce implementation
complexity at the cost of flexibility. My judgment call is that the
capabilities in question are not likely to be wanted and so are not
worth inducing implementation complexity.

> > Remember, in IPV6 the IP Payload Length is NOT protected by an IP header
> > checksum or by the pseudo-header in the UDP checksum,
>
> Good point - that needs to be noted.
>
> > so the ONLY protection against corruption of the computed trailer length
> > is the OCS.
>
> Again, this is certainly a risk, but why isn't it just a choice? When UDP
> picks CS=0, they're saying they are willing to take that risk.

And to make it clear, I'm OK with saying that OCS can be omitted if
UDP CS=0 is selected. Under the appropriate circumstances (and in
conformance with RFC 6936) that selection is indeed a valid user choice.

> > > - with LITE, OCS might be transmit-side computed and receive-side
> > > ignored to allow for the intended NON-ROBUST capability (at least
> > > when NOT transiting buggy middbleboxes; see below) of LITE
> > >
> > > (if LITE data doesn't change, that will transit middleboxes; if the
> > > LITE data does change, there's no way to help it transit middleboxes
> > > anyway)
> >
> > As a point of clarification: this means that OCS would include the LITE
> > data (which it does NOT do now) and the options; OCS would not be
> > checked on receive; is that correct?
>
> That is what I'm thinking, but there are certainly variants of what might
> or might not be covered.
>
> I.e., we could do things a few different ways:
> - in the current draft text OCS is "all or none" for the CS area, where
>   LITE is "not covered" because it's jumped over completely
> - if we want protection for PART of the surplus area, we would need two
>   different CS. That argues for going back to Gorry's CCO proposal.

Thanks for the clarification. I'll respond presently with an update to
the other (long) message.

> As a note, I think we're diverging from our intended goals. Those might
> be useful to include in udp-opts. My recollection was:
>
> - support a version of what LITE does, if possible
> - support frag/reassy
> - support single-packet (each way) exchanges with legacy receivers
>   (notably for the DNSSEC case, e.g., send a request with a null option to
>   allow enabled receivers to respond directly either in legacy mode or
>   option-enabled-mode)
> - support transport-level security (akin to TCP-AO)
> - support PLPMTUD (via the echo exchange)

To that last add MTU probing, which draft-ietf-tsvwg-udp-options-07
actually handles just fine, but yes, it would be good to write down
the goals in -08.

> Many of these simply won't work as automatically legacy-compatible with
> draft-herbert; the legacy data can easily exceed its limits, at a minimum.

My take (as stated in the long message) is that we probably want both the
trailer format pretty much as defined in draft-ietf-tsvwg-udp-options-07
for the backward compatible / safe to ignore  options (MSS, TIME, REQ, RES,
dummy FRAG used for negotiation) and and a variant of the header format as
defined in draft-herbert for the others. I do have to admit that that this
has an unwanted level of complexity, but I don't think it's unwarranted
given the goals. In the end "unwarranted" is a judgment call, and YMMV.

Mike