Re: deprecating Postel's principle- considered harmful

Brian E Carpenter <brian.e.carpenter@gmail.com> Wed, 08 May 2019 23:04 UTC

Return-Path: <brian.e.carpenter@gmail.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D96C4120199 for <ietf@ietfa.amsl.com>; Wed, 8 May 2019 16:04:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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=gmail.com
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 stItvZVXlAGY for <ietf@ietfa.amsl.com>; Wed, 8 May 2019 16:04:55 -0700 (PDT)
Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 55603120198 for <ietf@ietf.org>; Wed, 8 May 2019 16:04:55 -0700 (PDT)
Received: by mail-pl1-x62f.google.com with SMTP id g9so124572plm.6 for <ietf@ietf.org>; Wed, 08 May 2019 16:04:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=0rlipYNYOzkrB14Vic46sOft2Bk9qxOB47k+PytUfyg=; b=KyDb19WwIs5tZeU6w078T6E/wuZRJbLDPXTgvH3nEWJE5/u2dN7/eH7QkpJ9h1FVxF JXgG1CMP2OqZDMOj3eeFokpzT7li7IRT6aAvfSS+ZF/0Y0y/QROze3KHEEGML0ofFJra IYJOreacFVB0UoRrPIoqMv4i/qxYG+7l4ETlhPw0iVnrDfYyeAcFC1xn7zhOvcWYxL+g /o/4KLVmN7334KeG3iwDQmvX7htwoKjFF9SvHZlZMAajnzM9PsBh5MSogL15OLujJeIY wPM+MUP9QtiQB2cywiJs1OLYMSfKdjBuDnkZTHvCHjKFaawrrr9jhMMyoM+ZGuzCvBu+ dK0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=0rlipYNYOzkrB14Vic46sOft2Bk9qxOB47k+PytUfyg=; b=KIUuHAaYqOn76MHl5PBezKOp7c2IG0i2zGLHw3MUtHRqvHny555oRWRMQCqr2yhN78 BJulybCusk5MDT1lc5gdMhK6KJGTR5OIYtZQ3j5nLxj2h+cf1jziFAe/aHYr1OoVmb8u AsI3mMipQoriLXgOfISa6eB24mS9I+2KjGKQY5ZH6Dv4NK6kKOtqWrKBKE6QPjK//Oli SOXXGZhJuwJyC/NLqL/ieD+tRoeYMnlj3YiW707QqyjJXErc7yr9Wl4Tum5IYHF0XdhH mp3BrA/U1gQsKZ86yOvp1eVG75znSJJ4HSzmIxFiDDECM3Eb6C0fh2CEPoafe+H472Vh luYA==
X-Gm-Message-State: APjAAAUpYc9iUGzY8vbP8M2NudCS462XscRcNL9BhVIJoUdymrlwYs2l F1pf0b8Xzi2aqv9R8VeI9iKpKNn1
X-Google-Smtp-Source: APXvYqySh8q1SrCXZJSOxeqRagtNMHOLIsShCn2bbSx7YcHr8Jn1bFTimWqe6W2rjEC5i085RRPjPA==
X-Received: by 2002:a17:902:b695:: with SMTP id c21mr554082pls.160.1557356694496; Wed, 08 May 2019 16:04:54 -0700 (PDT)
Received: from [192.168.178.30] ([118.148.72.205]) by smtp.gmail.com with ESMTPSA id k26sm356721pfi.136.2019.05.08.16.04.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 May 2019 16:04:53 -0700 (PDT)
Subject: Re: deprecating Postel's principle- considered harmful
To: Joe Touch <touch@strayalpha.com>, Dave Cridland <dave@cridland.net>
Cc: "ietf@ietf.org" <ietf@ietf.org>
References: <F64C10EAA68C8044B33656FA214632C89F024CD3@MISOUT7MSGUSRDE.ITServices.sbc.com> <CALaySJJDHg5j9Z7+noS=YXoNROqdsbJ6coEECtLtbJ6fWJ3xsQ@mail.gmail.com> <DBD4837F-299B-497C-8922-AFF858B06C0F@strayalpha.com> <CAKHUCzwa89Qd6PD2EtkZU1LnT+1ZSsNiMQGAPnu5P_r=bvgMLg@mail.gmail.com> <10DC85D6-A9D1-4B4F-905D-4BD87D2F95EA@strayalpha.com> <CAKHUCzwdYLT+sY+cSuUC6bNkSn31ouGHXMx2Dj3Gc-ezaf8vyQ@mail.gmail.com> <D90A1B4C-D7A2-426E-B05E-BD264D16A9FB@strayalpha.com>
From: Brian E Carpenter <brian.e.carpenter@gmail.com>
Message-ID: <5cf4c378-c7f2-4e8e-2d9c-957a3ab08b15@gmail.com>
Date: Thu, 09 May 2019 11:04:50 +1200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <D90A1B4C-D7A2-426E-B05E-BD264D16A9FB@strayalpha.com>
Content-Type: text/plain; charset="utf-8"
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/eehDMx8owF2-3BBtU3S3urn6Kr0>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 May 2019 23:04:57 -0000

On 09-May-19 02:33, Joe Touch wrote:
> 
> 
>> On May 8, 2019, at 6:13 AM, Dave Cridland <dave@cridland.net <mailto:dave@cridland.net>> wrote:
>>
>>
>>
>> On Wed, 8 May 2019 at 14:18, Joe Touch <touch@strayalpha.com <mailto:touch@strayalpha.com>> wrote:
>>
>>
>>
>>     On May 8, 2019, at 12:05 AM, Dave Cridland <dave@cridland.net <mailto:dave@cridland.net>> wrote:
>>
>>>         *NONE* of it is about tolerating bugs or errors, nor is it about allowing arbitrary behavior for senders. 
>>>
>>>
>>>     Sure about that?
>>>
>>>     From RFC 760:
>>>
>>>     That is, it should be careful to send well-formed datagrams, but should accept any datagram that it can interpret (e.g., not object to technical errors where the meaning is still clear).
>>>     **//___^
>>>     The parenthetical example is explicitly stating that a datagram with a technical error should still be accepted.
>>
>>     Your cut off the part about the meaning being clear.
>>
>>     And technical error doesn’t necessarily mean bug. It could mean specification error.
>>
>>     If you stick with the “meaning is clear” part, it’s safe. It’s when we get into what things might, could, or probably mean that there be dragons.
>>
>>
>> I accept your points, but if the meaning were genuinely unambiguously clear, it'd likely have been in the specification
> 
> Take a look at RFC errata; you’ll find many counterexamples. Few (if any) protocol specifications are not exhaustively complete.
> 
>> - the problem is that when there's some kind of technical error, what is and is not clear becomes very much in the eye of the implementer.
> 
> It’s true that the issues often come to light in implementations, but that’s a bit like saying spelling errors are caused by editing.
> 
>> So while I did indeed fixate on that "technical errors" to the exclusion of "the meaning is still clear", that's because it's the technical error bit that I think is the technical error here.
>>
>> This is also why I drew attention to the RFC 1122 Section 1.2.2 restatement and lengthy discussion - I don't see anything I could reasonably disagree with there, yet both the first RFC to discuss the principle (RFC 760 above) and the last (RFC 1958) both seem problematic to me.
> 
> 760 includes “where the meaning is still clear”.
> 
> 1958 just says “tolerate” - which doesn’t mean “accept as valid”. 

Also, RFC1958 says:

"Principles that seem sacred today will be deprecated tomorrow. The principle of constant change is perhaps the only principle of the Internet that should survive indefinitely." We (the IAB in 1996) didn't consider that we were laying down holy writ.

But yes, the word "tolerate" was carefully chosen. It doesn't say "ignore buffer overflow errors" or "use heuristics to guess what the sender meant". It means "don't throw a fatal exception when something unexpected arrives." And it suggests silent discard unless an error message "is required by the specification". That's entirely consistent with the RFC1122 text that Roland quoted.

We'd better stick to "don't throw a fatal exception when something unexpected arrives" unless we want several billion unhappy users.

   Brian

> 
> In all cases, IMO the Postel Principle just expresses a level of agnosticism that, at a human level, is often expressed as “give others the benefit of the doubt” (when receiving) and “don’t push your luck” when sending.
> 
> When you get deep into trying to infer intent (as some in the IETF have done regarding defending against so-called “attacks” that are indistinguishable from benign errors), you end up in trouble. The same problem occurs if you’re too strict in every exchange in both directions.
> 
> Joe