Re: [core] Message correlation with observe

Christian Amsüss <christian@amsuess.com> Tue, 18 August 2020 06:51 UTC

Return-Path: <christian@amsuess.com>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0CC5E3A17C2 for <core@ietfa.amsl.com>; Mon, 17 Aug 2020 23:51:14 -0700 (PDT)
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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=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 4-kF9bn9f-yh for <core@ietfa.amsl.com>; Mon, 17 Aug 2020 23:51:12 -0700 (PDT)
Received: from prometheus.amsuess.com (prometheus.amsuess.com [5.9.147.112]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4E2A23A17C1 for <core@ietf.org>; Mon, 17 Aug 2020 23:51:11 -0700 (PDT)
Received: from poseidon-mailhub.amsuess.com (unknown [IPv6:2a02:b18:c13b:8010:a800:ff:fede:b1bd]) by prometheus.amsuess.com (Postfix) with ESMTPS id E8434407A0; Tue, 18 Aug 2020 08:51:08 +0200 (CEST)
Received: from poseidon-mailbox.amsuess.com (hermes.amsuess.com [10.13.13.254]) by poseidon-mailhub.amsuess.com (Postfix) with ESMTP id 99462AB; Tue, 18 Aug 2020 08:51:07 +0200 (CEST)
Received: from hephaistos.amsuess.com (unknown [IPv6:2a02:b18:c13b:8010:702d:2d59:5547:e4e8]) by poseidon-mailbox.amsuess.com (Postfix) with ESMTPSA id 1C47364; Tue, 18 Aug 2020 08:51:07 +0200 (CEST)
Received: (nullmailer pid 809350 invoked by uid 1000); Tue, 18 Aug 2020 06:51:06 -0000
Date: Tue, 18 Aug 2020 08:51:06 +0200
From: Christian Amsüss <christian@amsuess.com>
To: Jim Schaad <ietf@augustcellars.com>
Cc: 'Klaus Hartke' <klaus.hartke@ericsson.com>, 'Carsten Bormann' <cabocabo@gmail.com>, 'Core WG mailing list' <core@ietf.org>
Message-ID: <20200818065106.GA728308@hephaistos.amsuess.com>
References: <013401d674ac$9e3504c0$da9f0e40$@augustcellars.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="sdtB3X0nJg68CQEu"
Content-Disposition: inline
In-Reply-To: <013401d674ac$9e3504c0$da9f0e40$@augustcellars.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/lLOJ7eHT-VbPVp_ySStlYQycKc8>
Subject: Re: [core] Message correlation with observe
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 18 Aug 2020 06:51:14 -0000

Hello Jim, CoRE,

On Mon, Aug 17, 2020 at 08:39:36AM -0700, Jim Schaad wrote:
> S3: NON 2.05 Content MID:99 Token:0x4a Observe:46 Payload: 22.2
> S4: ACK 2.05 Content MID:15 Token:0x4a Payload: 22.1

In follow-up requests on the same token as Observe introduces them (and
I hope to generalize), an important theme is that responses that relate
to a particular follow-up message must be distinguishable as such where
it matters.

If just a plain refresh is sent, it doesn't matter whether a response
relates to the old or new request (especially, it's not necessarily
newer than the second request).

If the ETag set is changed (which is the only permissible alteration in
7641), it doesn't matter either (even though a new ETag clearly
indicates its generation after the second request).

If an OSCORE inner refresh happens, there is clear indication that it's
a later one because it only decrypts with the newest request's Partial
IV.

And if the observation is cancelled, a response only fits that by not
carrying the Observe option, as Jon pointed out.

Programmatically (at least in my implementation), all those responses
wind up in the same channel (which I call PlumbingRequest, but maybe
token channel or token subsocket would be more suitable), and it's up to
the requesting mechanism (observation) to sort them. If S4 happened to
overtake S3 on the wire, S4 would already be recognized as a response to
C2, "slamming the door" for everything that's not a response to C2 (just
like a higher observe value would make it disregard lower value
responses). By that time, any CON/ACK has already been handled as that's
purely on the Message-ID layer.

Kind regards
Christian

-- 
I shouldn't have written all those tank programs.
  -- Kevin Flynn