[core] Re: Gorry Fairhurst's Discuss on draft-ietf-core-groupcomm-bis-15: (with DISCUSS and COMMENT)

Esko Dijk <esko.dijk@iotconsultancy.nl> Mon, 22 December 2025 14:47 UTC

Return-Path: <esko.dijk@iotconsultancy.nl>
X-Original-To: core@mail2.ietf.org
Delivered-To: core@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id E0C769DDD32E; Mon, 22 Dec 2025 06:47:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.986
X-Spam-Level:
X-Spam-Status: No, score=-1.986 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTML_TAG_BALANCE_BODY=0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=iotconsultancy.nl
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pOFoiYXtsGFc; Mon, 22 Dec 2025 06:47:22 -0800 (PST)
Received: from dane.soverin.net (dane.soverin.net [185.233.34.37]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 27C6A9DDD327; Mon, 22 Dec 2025 06:47:21 -0800 (PST)
Received: from smtp.soverin.net (unknown [10.10.4.99]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dane.soverin.net (Postfix) with ESMTPS id 4dZgw33c1Nz19BT; Mon, 22 Dec 2025 14:47:15 +0000 (UTC)
Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.99]) by soverin.net (Postfix) with ESMTPSA id 4dZgw259ynz3Z; Mon, 22 Dec 2025 14:47:14 +0000 (UTC)
Authentication-Results: smtp.soverin.net; dkim=pass (2048-bit key; unprotected) header.d=iotconsultancy.nl header.i=@iotconsultancy.nl header.a=rsa-sha256 header.s=soverin1 header.b=j7SnjfN1; dkim-atps=neutral
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iotconsultancy.nl; s=soverin1; t=1766414835; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=XLu47fyjGFyRNE2hUp7RLuzn8PIXHjZCFdnVR/Oi/os=; b=j7SnjfN1rZQzS8ECCkf4eXKZhCgeaOSr0xSaVlJSZ0dZrIANfSKTGYA7aNOR4dKmnUx4EQ QCi7577KtoUvVtGNkSpPY5B6gtFFTPlyy9lIpgsNEuPwRuXefgnbiGNFPysOTyImFeKTTg zCbtdwW4iYTAZdP6qz43erpVzPpoBjTBGXKAktBywEJsz1KnG95DGJMWhNe1VJLwfj6r/k itT8lQ4vqJ8mfQ3+BtiIqYF6HwJ/cAydTSFEzMmvNg2CBjQll/eT49kINunhQKNqizpepU DeaEVJw5vG7LOTH+zsMphrJ38aug+RcXE2qyQ4HrsYpeZOD46QRpO2MOFuCRXA==
X-CM-Envelope: MS4xfMkuRo3uUhfDwqPGC37r5Pdm6TS1VgqwhQNlC74o4Hy4Ykh3X0s7s6tTbAqDYzOBDqFnEyUz7jVYJ+ncgO8je2l0F3AT9Qrz/ZLFAB1XTTdhL+ye2nuB 9yTh1bnAJRHb4r4hVLrCC1xDA0Ul+YQVOotARysf1CX8VlqD+pMexAVvWXDkr5g4BKxIEUttpY208YubLVdmegQT7oIQG9ie3mM0+EDscXOsn/7oVPfr5vML iKLVFcoerP+T0vImpknBxWeqmMRhpbMfJV4ZcA4tY5Poj7ZYBYqh7jf/8uSsQ1k2PQOo0+T5CHrAgi5navb4ZPJIGP5bud4e2YyzxnSAalg=
X-Soverin-Id: 019b4687-5d38-7a0a-94a3-f1c53e40811b
Content-Type: multipart/alternative; boundary="------------uNy0XHabJH0yKJfFLD5bUsQ7"
Message-ID: <3db02788-a144-4906-ada9-7262421ae586@iotconsultancy.nl>
Date: Mon, 22 Dec 2025 15:47:15 +0100
MIME-Version: 1.0
To: Gorry Fairhurst <gorry@erg.abdn.ac.uk>, The IESG <iesg@ietf.org>
References: <175923445330.2407253.14761657441686874611@dt-datatracker-6c6cdf7f94-h6rnn>
Content-Language: en-US
From: Esko Dijk <esko.dijk@iotconsultancy.nl>
Organization: IoTconsultancy.nl
In-Reply-To: <175923445330.2407253.14761657441686874611@dt-datatracker-6c6cdf7f94-h6rnn>
X-Spampanel-Class: ham
Message-ID-Hash: NPBNYWLJOVYHEIVDLUNHGHTI2DBJORSD
X-Message-ID-Hash: NPBNYWLJOVYHEIVDLUNHGHTI2DBJORSD
X-MailFrom: esko.dijk@iotconsultancy.nl
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-core.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: draft-ietf-core-groupcomm-bis@ietf.org, core-chairs@ietf.org, core@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [core] Re: Gorry Fairhurst's Discuss on draft-ietf-core-groupcomm-bis-15: (with DISCUSS and COMMENT)
List-Id: "Constrained RESTful Environments (CoRE) Working Group list" <core.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/kAEuMW8Kt6gOUFtmvfN85C4bgf8>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Owner: <mailto:core-owner@ietf.org>
List-Post: <mailto:core@ietf.org>
List-Subscribe: <mailto:core-join@ietf.org>
List-Unsubscribe: <mailto:core-leave@ietf.org>

Hello Gorry,

Thanks for your extensive review! Below, inline are the detailed replies 
to your comments by the authors.
A GitHub PR where we have addressed your comments is available at [PR].

Unless any concern is raised, we plan to soon merge this PR (and the 
other ones related to other received reviews) and to submit the result 
as version -16 of the document.

best regards,
Esko & Marco

[PR] https://github.com/core-wg/groupcomm-bis/pull/59 <Hello 
Éric,,,Thanks for your review! Below, inline are the detailed replies to 
your comments by the authors.,A GitHub PR where we have addressed your 
comments is available at [PR].,,Unless any concern is raised, we plan to 
soon merge this PR (and the other ones related to other received 
reviews) and to submit the result as version -16 of the document.,,best 
regards,,Esko & Marco,,[PR] 
https://github.com/core-wg/groupcomm-bis/pull/59>


On 30-9-2025 14:14, Gorry Fairhurst via Datatracker wrote:
> Gorry Fairhurst has entered the following ballot position for
> draft-ietf-core-groupcomm-bis-15: Discuss
>
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
>
>
> Please refer tohttps://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/ 
> for more information about how to handle DISCUSS and COMMENT positions.
>
>
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-core-groupcomm-bis/
>
>
>
> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
>
> Thank you for preparing this document on multicast transport. This is a topic I
> have worked with over many years, and I know this touches on a wide range of
> issues and trade-offs. The following topics are blocking DISCUSS points (some
> may be trivial to address, but I do wish to understand first if I am correctly
> understanding what is proposed and to discuss each point).
>
> As noted in
> https://datatracker.ietf.org/doc/statement-iesg-handling-ballot-positions-20220121/,
> a DISCUSS ballot is a request to have a discussion on the points below; I
> really think that the document would be improved with a change here, but can be
> convinced otherwise.
>
> 1. DISCUSS - Status as PS
>
> RFC 7390 was EXPERIMENTAL. The text describing the changes to the document that
> this obsoletes and replaces [RFC7390] does not describe any implementation or
> reason why this document is to be published as PS.
>
> Alas, I did not see a stated reason why this was published as experimental. I
> do not see any reason in the current document that explains why the level of
> interoperability and experience would support publication on the standards
> track. - If the intent is to publish as PS, is the review sufficient? - What is
> the level of review and implementation experience for the final specification
> set out in rev -14?

Please find below our answer to each point. We hope this helps to 
resolve this point, or as input to the discussion.

  *

    Why is RFC 7390 Experimental?

      o Details are available
        athttps://datatracker.ietf.org/doc/draft-ietf-core-groupcomm/ballot/
      o In short: the main reason is that, at the time when RFC 7390 was
        written and published, there was no security solution and no
        implementation experience for CoAP group communication. The
        protocol for configuring CoAP groups through JSON was also an
        experiment, which eventually was not implemented and is not
        considered in the present document (see the fourth paragraph of
        Section 2.2.2).
  *

    RFC 7390 did not say what would be needed to have a Proposed
    Standard out of it.

      o As also tracked
        inhttps://datatracker.ietf.org/doc/draft-ietf-core-groupcomm/ballot/,
        the expectation for following-up with a Proposed Standard was to
        see the addition of a security solution and implementation
        experience.
      o The security solution is now available as the Group OSCORE
        security protocol (see draft-ietf-core-oscore-groupcomm and
        Section 5 of the present document).
      o The implementation experience largely occurred as per the three
        major implementations listed in Section 1. (As suggested by
        Mohamed Boucadair in his review, we are going to remove those
        references from the document, and instead make them available in
        the section “Additional resources” in the Datatracker page.)
        Furthermore, additional experience came up from the
        implementation of the Group OSCORE security protocol in itself,
        for which two mature implementations have been listed
        athttps://datatracker.ietf.org/doc/html/draft-ietf-core-oscore-groupcomm-27#section-13
  *

    This document is not saying how/why it is justified to move to
    Proposed Standard.

      o Building on the points above, the expectations that were set at
        the time of publication of RFC 7390 have been met. It does not
        seem necessary to explicitly elaborate about this in the present
        document.
  *

    Have there been enough review?

      o We believe so, and so it was assessed upon requesting publication.
  *

    Has there been enough implementation experience and coverage?

      o Yes; further building on the implementation experience for RFC
        7390, implementations have built on this document and used the
        result for further implementing and testing the Group OSCORE
        security protocol (see draft-ietf-core-oscore-groupcomm and
        Section 5 of the present document), for which there are at least
        two existing interoperable implementations
        (seehttps://datatracker.ietf.org/doc/html/draft-ietf-core-oscore-groupcomm-27#section-13)


> ----
> 2. DISCUSS - updates to RFC 7252
>
> This document specifies updates to RFC 7252, and although section 1.3 refers to
> relevant sections in the new document, I found it hard to relate these changes
> to the sections that appear in RFC 7252. Please can you explain which specific
> sections (or text) in that existing RFC will be changed as a result of
> publication of this document as an RFC?
>
> - I also could not find a mention of "CoAP group creation"?

Let’s take this comment in two parts.

*Section pointers*

The current references in Section 1.3 of the present document are to 
later sections of the present document, and those sections do include 
references to the relevant sections of the updated RFC 7252.

To be more explicit, as suggested, in Section 1.3 we have added specific 
pointers that refer to sections of the updated documents RFC 7252 and 
RFC 7641.

Specifically, we have rephrased as below:

OLD

      * It updates the request/response model for group communication,
        as to response suppression (see Section 3.1.2) and token reuse
        time (see Section 3.1.5).

NEW

      *

        With reference to Section 8.2 of [RFC7252], it updates the
        request/response layer for group communication, as to response
        suppression (see Section 3.1.2 of the present document).

      *

        With reference to Section 5.3.1 of [RFC7252], it updates the
        token requirements on request/response matching, as to token
        reuse time (see Section 3.1.5 of the present document).

OLD

      * It updates the freshness model and validation model to use for
        cached responses (see Section 3.2.1 and Section 3.2.2).

NEW

      * With reference to Section 8.2.1 of [RFC7252], it updates the
        freshness model and validation model to use for cached responses
        (see Section 3.2.1 and Section 3.2.2 of the present document).

OLD

      * It defines the measures against congestion risk specified in
        [RFC7252] to be applicable also to alternative transports other
        than IP multicast and defines additional guidelines to reduce
        congestion risks (see Section 3.6), including new values for the
        transmission parameter DEFAULT_LEISURE that account for secure
        communication with Group OSCORE (see Section 3.6.1).

NEW

      * With reference to the measures against congestion risk specified
        in Sections 5.2.3, 8.1, 8.2 and 11.3 of [RFC7252], it defines
        such measures to be applicable also to alternative transports
        (other than IP multicast) and defines additional requirements to
        reduce congestion risks (see Section 3.6 of the present
        document). It also defines new values for the transmission
        parameter DEFAULT_LEISURE that account for secure communication
        with Group OSCORE (see Section 3.6.1 of the present document).

OLD

      * It explicitly allows the use of the IPv6 multicast address
        scopes realm-local (3), admin-local (4), and global (E). In
        particular, it recommends that an IPv6 CoAP server supports at
        least link-local (2), admin-local (4), and site-local (5) scopes
        with the “All CoAP Nodes” multicast CoAP group (see Section
        3.9.1). Also, it recommends that the realm-local (3) scope is
        supported by an IPv6 CoAP server on a 6LoWPAN node (see Section
        3.9.1).

NEW

      * It explicitly allows the use of the IPv6 multicast address
        scopes realm-local (3), admin-local (4), and global (E). In
        particular, with reference to Section 12.8 of [RFC7252], it
        recommends that an IPv6 CoAP server supports at least the
        link-local (2), admin-local (4), and site-local (5) scopes with
        the “All CoAP Nodes” IPv6 multicast addresses (see Section 3.9.1
        of the present document). Also, it recommends that the
        realm-local (3) scope is supported by an IPv6 CoAP server on a
        6LoWPAN node (see Section 3.9.1 of the present document).

OLD

      * It defines the use of the CoAP Observe Option in group requests,
        for both the GET method and the FETCH method [RFC8132], together
        with normative behavior for both CoAP clients and CoAP servers
        (see Section 3.7).

NEW

      * With reference to Sections 3 and 4 of [RFC7641], it defines the
        use of the CoAP Observe Option in group requests, for both the
        GET method and the FETCH method [RFC8132], together with
        normative behavior for both CoAP clients and CoAP servers (see
        Section 3.7 of the present document).

*On “CoAP group creation”*

RFC 7390 uses “group creation” in Section 2.6.2.3 and “group membership 
creation” in Section 2.6.2.4. When doing so, it was indeed referring to 
the creation of CoAP groups, which have the same meaning both in RFC 
7390 and in the present document.

Also, both instances are within Section 2.6 “Membership Configuration” 
of RFC 7390, which Section 2.2.2 “Group Creation and Membership” of the 
present document refers to as quoted below:

    The IETF does not define a mandatory protocol to accomplish CoAP
    group creation. [RFC7390] defined an experimental protocol for
    configuring memberships of CoAP groups for unsecured group
    communication, based on JSON-formatted configuration resources. The
    experiment is concluded as showing that the protocol has not been
    considered for deployment and use.

The quoted paragraph specifically refers to the creation of CoAP groups, 
i.e., the type of group discussed in the first five paragraphs of 
Section 2.2.2 of the present document.

After that text, group creation is discussed also for the other types of 
groups, i.e., application groups and security groups.



> ---
> 4. DISCUSS
> Section 2.2.2
> /The part of the process that involves secure distribution of group security
> material MAY use standardized communication with a Group Manager as  defined in
> Section 5./ - Why is this a MAY? ought this to be a SHOULD? - It seems to lack
> context to make the decision and isn't it best pactice to recommend use of
> secure methods?

Group OSCORE is the default and only available solution for secure CoAP 
group communication at the moment, while potential alternatives are even 
out of scope.

That said, the distribution of group security material has to happen and 
(as already stated) it has to be secure and based on an entity acting as 
Group Manager.

As long as it happens, such distribution can be based on different 
(standardized) approaches, which might not necessarily require 
communication on the wire.

Neither the present document nor the Group OSCORE security protocol is 
devoted to, or requires, any approach in particular. However, as a 
relevant example, the later Section 5.1 refers to the approach specified 
in draft-ietf-ace-key-groupcomm-oscore.

We have made the quoted sentence simpler and rephrased it as below.

OLD

    The part of the process that involves secure distribution of group
    security material MAY use standardized communication with a Group
    Manager as defined in Section 5.

NEW

    The part of the process that involves secure distribution of group
    security material for Group OSCORE is entrusted to the Group Manager
    responsible for the security group (see Section 5).



> ---
> 5. DISCUSS
> Section 3 (Please explain the multicast addressing model).
>
> I think (from my reading) refers to the ASM model. I see text in  RFC 7390 that
> clearly states: "   CoAP group communication will run in the Any Source
> Multicast (ASM) mode [RFC5110] of IP multicast operation.  This means that
> there is no restriction on the source node that sends (originates) the CoAP
> messages to the IP multicast group.  For example, the source node may or may
> not be part of the IP multicast group.  Also, there is no restriction on the
> number of source nodes." - I do not see equivalent text in this document. I'd
> like to understand if this still applies and can be included, or if not, what
> model ought to be described?

Indeed the ASM mode is intended. Actually, it is already mentioned in 
Section 1.1 “Scope” (just like in the equivalent Section 1.2 of RFC 
7390). That is, Section 1.1 says:

    Only the Any Source Multicast (ASM) mode [RFC5110] of IP multicast
    operation is in scope.

In order to address the review from Roman Danyliw, we have updated the 
sentence to refer to RFC 1112 and RFC 8085 instead of to RFC 5110, thus 
avoiding a downref. That is:

NEW

    Only the Any Source Multicast (ASM) mode of IP multicast operation
    is in scope, as defined in [RFC1112] and referred by that name in
    [RFC8085].



> ---
> 6. DISCUSS
> Section 3.1.3 - is recovery totally optional?
> /To this end, CoAP clients can rely on the following two
>     approaches./ ... MAY... MAY...
> - I am unsure what is intended! ... and how will this be interoperable?
> - I wonder if the intent was to specify a recommended default (SHOULD) and then
> suggest an alternative? - Please propose text or explain more.

Quoting more text for context:

    Group requests sent over IP multicast generally have much higher
    loss rates than messages sent over unicast, particularly in
    constrained networks. Therefore, it is more urgent to have a
    strategy in place for handling the loss of group requests than the
    loss of unicast responses. To this end, CoAP clients can rely on the
    following two approaches.

    The first approach is the default, used in case there is no explicit
    preference of the implementer. It is supported already by all CoAP
    stacks. The application in this case implements a custom
    retransmission logic that MAY trigger a new API request for
    transmission (of a CoAP request) to the CoAP stack, …
    …
    The second approach that MAY be implemented requires specific
    support in the CoAP stack. The application layer in this case also
    implements a custom retransmission logic that MAY trigger a new API
    request to the stack if less responses than expected were received. …

*How will this be interoperable?*

The CoAP specification (RFC 7252) allows any/all of these approaches. 
Also, this is local behavior at a client, i.e.:

  *

    It is up to the client whether to use an approach at all, or which
    approach to use.

  *

    The client can use either approach in a mixed way, e.g., by deciding
    on a per request-basis and depending on the targeted resource,
    possibly according to a local configuration.

>From the point of view of the recipient server(s), the above occurs 
seamlessly. That is, a server is anyway able to handle the received 
request, irrespective of the exact approach taken by the client for 
repeating the request. So interoperability is guaranteed.

We do not think that it is needed to update the document about this point.

*Recommending a default*

As already noted in the text, the first approach is available in CoAP 
stacks, hence it is defined to be the default one, absent preferences 
for using the second approach.

We have updated the text by adding a SHOULD, to mark the first approach 
as the default one to use in case there is no preference/reason to use 
the second approach (i.e., it SHOULD be used in case there is no 
preference).

Also, it is good to explicitly say that a client “MAY” repeat a group 
request in the first place. Instead, two instances of “MAY” can actually 
be expressed as “can”. Overall, we have rephrased as below.

OLD

    To this end, CoAP clients can rely on the following two approaches.

    The first approach is the default, used in case there is no explicit
    preference of the implementer. It is supported already by all CoAP
    stacks. The application in this case implements a custom
    retransmission logic that MAY trigger a new API request for
    transmission (of a CoAP request) to the CoAP stack, if less
    responses than expected were received. …

    The second approach that MAY be implemented requires specific
    support in the CoAP stack. The application layer in this case also
    implements a custom retransmission logic that MAY trigger a new API
    request to the stack if less responses than expected were received. …

NEW (emphasis mine)

    To this end,*a CoAP client MAY repeat a group request by relying*on
    the following two approaches.

    The first approach is*supported already by all CoAP stacks and is
    used by default. That is, it SHOULD be used in case the implementer
    has no explicit preference or reason to use the alternative approach
    described further below. When using this first approach,
    the*application implements a custom retransmission logic
    that*can*trigger a new API request for transmission (of a CoAP
    request) to the CoAP stack, if less responses than expected were
    received. …

    The second approach*requires specific support in the CoAP stack and
    MAY be implemented. When using this second approach, the*application
    layer also implements a custom retransmission logic that*can*trigger
    a new API request to the stack, if less responses than expected were
    received. …



> ---
> 7. DISCUSS
> 3.1.5.  Token Reuse
> / A preferred solution to meet this requirement is to generate a new unique
> Token for every new group request, such that a Token value is never reused.  /
> - I do not understand the sentence highlighted above, when stated as a part of
> a PS. Is this intended to be the WG recommendation or not? - I wonder if the
> intent was to specify a recommended default (SHOULD)? Later it states: /Thus, a
> client may reuse a
>     Token value after it has been freed up, as discussed above and
>     considering a reuse time greater than MIN_TOKEN_REUSE_TIME. /
> - ought this to be a MAY or SHOULD?
> This is followed by:
> /Another method to more easily meet the above constraint is to instantiate
> multiple CoAP clients at multiple UDP ports on the same host.  The Token values
> only have to be unique within the context of a single CoAP client, so using
> multiple clients can make it easier to meet the constraint./ - Please clarify
> what the intent is. If this document is to be published as a PS, it ought to
> provide clear guidance in RFC2119 language about what is required for an
> interoperable implementation.

There are two truly normative requirements to consider, which are 
already stated in the referred Section 3.1.5:

  *

    The time between reuse of Token values for different group requests
    MUST be greater than MIN_TOKEN_REUSE_TIME (see the second paragraph
    in this section).

  *

    If secure binding between requests and responses is not ensured,
    then a client MUST follow the Token processing requirements as
    defined in RFC 9175 (see the second from last paragraph in this
    section).

Other statements here are not prescriptive; they just highlight 
possible, legitimate behaviors and clarify that those behaviors are 
appropriate. In particular, they do not prevent interoperability.

We have rephrased those to simply state facts:

OLD

    A preferred solution to meet this requirement is to generate a new
    unique Token …

NEW

    To meet this requirement, a client can simply generate a new unique
    Token …

OLD

    Thus, a client may reuse a Token value …

NEW

    Thus, a client can safely reuse a Token value …

OLD

    Another method to more easily meet the above constraint is to
    instantiate multiple CoAP clients at multiple UDP ports on the same
    host. The Token values only have to be unique within the context of
    a single CoAP client, so using multiple clients can make it easier
    to meet the constraint.

NEW

    An alternative method that meets the requirement above consists in
    instantiating multiple CoAP clients at multiple UDP ports on the
    same host. This is consistent with what is defined in Section 5.3.1
    of [RFC7252], i.e., Token values currently in use only have to be
    unique for a given source/destination endpoint pair.


> ---
> 8. DISCUSS
> Section 3.2.2.1. ETag Option in a Group Request/Response
> /Finally, the recommended strategy is for the servers to generate unique ETags
> as specified below./ - So it describes options and concludes you can do other
> things, this seems weirdly indecisive at the start and suddenly makes normative
> requirements. - Please clarify what the intent is. If this document is to be
> published as a PS, it ought to provide clear guidance in RFC2119 language about
> what is required for an interoperable implementation.

The text before the quoted sentence is all about behavior on the client 
side.

The quoted sentence introduces behavior on the server side, which is 
elaborated in the next paragraph.

For clarity, we have rephrased as below.

OLD

    There are various strategies to avoid problems caused by identical
    ETag values: one strategy is for a client to repeat a request if a
    particular server returned 2.03 (Valid) with an ETag value that is
    not in the client’s cache (for that server). The repeated request
    excludes the “duplicate” ETag, and it may be a group request or a
    unicast request to the particular server. Another strategy is to
    mark a cached ETag value as “duplicated - not to be used for
    revalidation” as soon as another server responds with the same ETag
    value. Finally, the recommended strategy is for the servers to
    generate unique ETags as specified below.

    A server endpoint MUST process an ETag Option in a GET or FETCH
    group request in the same way it processes an ETag Option for a
    unicast request. A server endpoint that includes an ETag Option in a
    response to a group request SHOULD construct the ETag Option value
    in such a way that the value will be unique to this particular
    server with a high probability. …

NEW

    A client that uses the ETag Option for validating stored responses
    SHOULD perform the following actions, in order to avoid problems
    caused by identical ETag values.

      * The client repeats a request if a particular server returned
        2.03 (Valid) with an ETag value that is not in the client’s
        cache (for that server). The repeated request excludes the
        “duplicate” ETag value. It can be either a group request or a
        unicast request to the particular server.
      * The client marks a cached ETag value as “duplicated - not to be
        used for revalidation” as soon as another server responds with
        the same ETag value.

    A server endpoint MUST process an ETag Option in a GET or FETCH
    group request in the same way it processes an ETag Option for a
    unicast request. A server endpoint that includes an ETag Option in a
    response to a group request SHOULD construct the ETag Option value
    in such a way that the value will be unique to this particular
    server with a high probability. …


> ---
> 9. DISCUSS
> Section  3.6.  Congestion Control
> /Therefore, both the
>     sending of CoAP group requests and the sending of the unicast CoAP
>     responses to these group requests should be conservatively
>     controlled./
> - Why is this not a SHOULD, as per RFC 8085?
> - Why are the following statements not all normative requirements using  RFC
> 2119 language? - including: /The transmission parameter DEFAULT_LEISURE may be
>        used to define a Leisure period when it cannot be computed
>        otherwise./
> - Why is this not the recommendation, is there another mitigation that can
> satisfy this need? - and: /   Independently of the transport used, additional
> guidelines to reduce congestion risks defined in this document are as follows:/
> - If these are normative requirements, which I agree they ought to be based on
> RFC98085 etc, then these are not "guidelines", but requirements, please could
> you change this word?

Taking the points separately:

*- Why is this not a SHOULD, as per RFC 8085?*

We have rephrased as below.

OLD

    … should be conservatively controlled.

NEW

    … SHOULD be conservatively controlled.

*- Why are the following statements not all normative requirements using 
RFC 2119 language? - including: /The transmission parameter 
DEFAULT_LEISURE may be used to define a Leisure period when it cannot be 
computed otherwise./*

The following paragraph intentionally uses “may”, since the requirement 
is not new but rather inherited from RFC 7252, so it is not new behavior:

    A server may choose not to respond to an IP multicast request if
    there is nothing useful to respond, e.g., error or empty response
    (see Section 8.2 of [RFC7252]).

The following paragraph intentionally uses “should”, since the 
requirement is not new but rather inherited from RFC 7252, so it is not 
new behavior:

    A server should limit the support for IP multicast requests to
    specific resources where multicast operation is required (Section
    11.3 of [RFC7252]).

Actually, consistent with a comment in the review from Mohamed Boucadair 
about Section 3.1.1, we have updated the following two paragraphs in 
Section 3.6 to not use normative language, since the described behavior 
is not new but rather already defined in the referred RFC 7252 and 
inherited in the present document. That is:

OLD

      *

        An IP multicast request MUST be Non-confirmable (Section 8.1 of
        [RFC7252]).

      *

        A response to an IP multicast request SHOULD be Non-confirmable
        (Section 5.2.3 of [RFC7252]).

NEW

      *

        An IP multicast request must be Non-confirmable (see Section 8.1
        of [RFC7252]).

      *

        A response to an IP multicast request should be Non-confirmable
        (see Section 5.2.3 of [RFC7252]).

The following sentence intentionally uses “should”, since the 
requirement is not new but rather inherited from RFC 7252 (also phrased 
as “should”), so it is not new behavior:

    A server does not respond immediately to an IP multicast request and
    should first wait for a time that is randomly picked within a
    predetermined time interval called the Leisure (Section 8.2 of
    [RFC7252]).

We have updated the following sentence to use “MAY” instead of “may”: 
while the requirement is not new but rather inherited from RFC 7252, the 
present document is updating the calculation for DEFAULT_LEISURE in 
Section 3.6.1:

OLD

    The transmission parameter DEFAULT_LEISURE may be used to define a
    Leisure period when it cannot be computed otherwise.

NEW

    The transmission parameter DEFAULT_LEISURE MAY be used to define a
    Leisure period when it cannot be computed otherwise (see Section 3.6.1).

We have also extended the text right before the first bullet list, to 
make it clear that the requirements are defined in RFC 7252 but apply 
here too.

OLD

    CoAP [RFC7252] reduces IP multicast-specific congestion risks
    through the following measures:

NEW (emphasis mine)

    CoAP [RFC7252] reduces IP multicast-specific congestion risks
    through the following measures,*which the present document inherits
    and extends as appropriate*:

The following sentence intentionally uses “may”, since the requirement 
is not new but rather inherited from RFC 7252 (also phrased as “may”), 
so it is not new behavior:

    Note that the transmission parameter values for NSTART,
    DEFAULT_LEISURE, and PROBING_RATE may be configured to values
    specific to the application environment (including dynamically
    adjusted values); however, the configuration method is out of the
    scope of this document. This is unchanged from Section 4.8.1 of
    [RFC7252].

*- Why is this not the recommendation, is there another mitigation that 
can satisfy this need?*

Just like in the inherited requirement from Section 8.2 of RFC 7252, MAY 
(instead of SHOULD) is used here too as to employing DEFAULT_LEISURE 
when a Leisure period cannot be otherwise computed.

(The next comment in this review is specifically about why “MAY” instead 
of “SHOULD” or “MUST”)

*- and: / Independently of the transport used, additional guidelines to 
reduce congestion risks defined in this document are as follows:/*
*- If these are normative requirements, which I agree they ought to be 
based on RFC98085 etc, then these are not “guidelines”, but 
requirements, please could you change this word?*

Yes; we have changed “additional guidelines” to “additional requirements”

This applies to this instance in Section 3.6 and to the instance in 
Section 1.3.



> ---
> 10. DISCUSS
> Section 3.6.1.  Default Leisure Updates
>   /If the Leisure is not computed or configured, the default value
>     DEFAULT_LEISURE MAY be used./
> - I'd like to understand how this can be used to improve scaling of the method.
> If this document is to be published as a PS, it ought to provide clear guidance
> in RFC2119 language about what is required for safe operation, why is this not
> MUST or at least SHOULD (stating why this is important).

The original requirement in Section 8.2 of RFC 7252 says:

    If a CoAP endpoint does not have suitable data to compute a value
    for Leisure, it MAY resort to DEFAULT_LEISURE.

While Section 3.6.1 of the present document is updating the specific 
method for computing DEFAULT_LEISURE, it was not meant to change the 
fact that, absent a better computation method, DEFAULT_LEISURE “MAY” be 
used as a configured/preconfigured value.

We have rephrased as below:

OLD

    If the Leisure is not computed or configured, the default value
    DEFAULT_LEISURE MAY be used.

NEW

    If the Leisure is not computed, then a configured/predefined value
    is used, which MAY be the default value DEFAULT_LEISURE in case no
    better or more suitable value is known.

Note that the*use*of Leisure (irrespective of the specific value) is a 
SHOULD requirement inherited from Section 8.2 of RFC 7252 (see Section 
3.6 of the present document).

On the importance of having a DEFAULT_LEISURE, it is simply because 
there is a defined fallback value available to consider for the Leisure 
time period (building on reasonable assumptions to determine that). 
Hence, a server can send a response to a group request with reasonable 
chances for that response to reach the client, instead of colliding with 
the responses to the same group request from other servers.

The above was the main reason for RFC 7252 to introduce the concept of 
Leisure time period in its Section 8.2, irrespective of its value.



> ---
> 11. DISCUSS
> Section 3.7.  Observing Resources
> /When responding, a server SHOULD apply the Leisure period defined in Section
> 8.2 of [RFC7252]./ - Please explain why this is not MUST in this case? (if it
> were SHOULD how will the equivalent response scaling be achieved to satisfy the
> congestion control requirements?)

Consistent with the corresponding requirement from Section 8.2 of RFC 
7252, Section 3.6 of the present document says (emphasis mine):

    A server does not respond immediately to an IP multicast request
    and*should*first wait for a time that is randomly picked within a
    predetermined time interval called the Leisure (Section 8.2 of
    [RFC7252]).

Section 3.7 focuses on responses to a group request that are 
specifically Observe notifications. This is not different from the case 
where responses are not Observe notifications, with respect to the 
replying server adhering with the requirement of using a Leisure time 
period.

Hence the choice of the word “SHOULD”, here normative because it is a 
new behavior, i.e., it was not defined in RFC 7641 that did not consider 
group communication with Observe for CoAP.

However, it is good to update the sentence to explicitly say that 
DEFAULT_LEISURE, if used, is computed as defined in Section 3.6.1 of the 
present document.

OLD

    When responding, a server SHOULD apply the Leisure period defined in
    Section 8.2 of [RFC7252].

NEW

    When responding, a server SHOULD apply the Leisure period defined in
    Section 8.2 of [RFC7252] (if DEFAULT_LEISURE is used, it is computed
    as defined in Section 3.6.1 of this document).



> ---
> 12. DISCUSS
> Section 3.7.
> /A server SHOULD have a mechanism to verify the aliveness of its
>     observing clients and the continued interest of these clients in
>     receiving the Observe notifications. /
> - what does SHOULD have mean?
> - Is this: /A server SHOULD verify.../?

We have rephrased for clarity and quoted explicitly the content from 
Section 4.5/7 of RFC 7641. There's now a MUST requirement added for the 
overall client aliveness validation which is strictly speaking a new 
requirement now for the groupcomm Observe case; hence "MUST".

It builds upon the already-present requirements in Section 4.5 and 7 of 
RFC 7641, as a way to satisfy the new MUST requirement.

OLD

    A server SHOULD have a mechanism to verify the aliveness of its
    observing clients and the continued interest of these clients in
    receiving the Observe notifications. This can be implemented by
    sending notifications occasionally using a Confirmable message (see
    Section 4.5 of [RFC7641] for details).

NEW

    Throughout the lifetime of an observation, a server MUST verify the
    aliveness of its observing clients and the continued interest of
    these clients in receiving the Observe notifications. To this end,
    the server occasionally sends a notification to a given observing
    client in a Confirmable message (see Section 4.5 and 7 of [RFC7641]
    for details).



> ---
> 13. DISCUSS
> /Furthermore, a server (member of a targeted CoAP group) that needs to respond
> to a group request with a particularly large resource can use lock-wise
> transfer (Block2 Option) at its own initiative, to limit the size of the
> initial response./ - This seems a very plausible method to use. Why is this not
> recommended (SHOULD), since it seems to align with other congestion control
> requirements defined in this document?

RFC 7949 did not pose any requirement about this behavior.

Building on this comment, we have rephrased as below and introduced a 
“SHOULD” for this particular multicast case. The exception case is also 
specified (in context of constrained clients where the server 
implementer knows about the client constraints a-priori).

OLD

    Furthermore, a server (member of a targeted CoAP group) that needs
    to respond to a group request with a particularly large resource can
    use block-wise transfer (Block2 Option) at its own initiative, to
    limit the size of the initial response. That is the case when a
    client sends a multicast GET or FETCH request that does not include
    a Block2 Option.

NEW

    Furthermore, a server (member of a targeted CoAP group) that needs
    to respond to a group request with a particularly large resource can
    use block-wise transfer (Block2 Option) at its own initiative, to
    limit the size of the initial response. That is the case when a
    client sends a multicast GET or FETCH request that does not include
    a Block2 Option.*In such a situation, unless the implementer of the
    server is aware that its clients do not support Block-wise transfer,
    the server SHOULD use Block-wise transfer at its own initiative.*



> ---
> 14. DISCUSS
> Section 3.9.1.
> /IPv6 multicast MAY be supported in a network only for a limited scope. /
> - I'm unsure what the MAY permits and what is also allowed. is this really
> normative (constraining something) or simply explanation, so it might be /may/?

We have rephrased as below.

OLD

    IPv6 multicast MAY be supported in a network only for a limited scope.

NEW

    A network might support IPv6 multicast only for a limited scope.



> ---
> 15. DISCUSS
> Section 5.1.  Group OSCORE
> /As recommended in [I-D.ietf-core-oscore-groupcomm], a CoAP endpoint.../
> What does lower case recommended here? I see this is put forward as "PS", does
> this not define requirements for this case? The section later says: /If
> security is required, / is this intended to be /The security method described
> in this section requires.../ ? and /   For secured group communication (see
> Section 5), the maintenance
>     operations of the protocol Group OSCORE
>     [I-D.ietf-core-oscore-groupcomm] MUST be implemented as well.
> /
> - Why is this a requirement only to implement? Is this also a requirement to
> process?
> ---

On the first part of the comment, the current text has some bad wording.

The Group Manager and joining process specified in 
draft-ietf-ace-key-groupcomm-oscore are just a possible option. In fact, 
draft-ietf-core-oscore-groupcomm simply mentions it as an example, as it 
is not a requirement.

We have rephrased as below, also consistent with 
draft-ietf-core-oscore-groupcomm.

OLD

    As recommended in [I-D.ietf-core-oscore-groupcomm], a CoAP endpoint
    can join an OSCORE group by using the method described in
    [I-D.ietf-ace-key-groupcomm-oscore] and based on the ACE framework
    for Authentication and Authorization in constrained environments
    [RFC9200].

NEW

    As mentioned in [I-D.ietf-core-oscore-groupcomm], a CoAP endpoint
    can join an OSCORE group through the realization of a Group Manager
    specified in [I-D.ietf-ace-key-groupcomm-oscore] and based on the
    ACE framework for Authentication and Authorization in constrained
    environments [RFC9200].

On the second part of the comment: indeed! We have rephrased as below.

OLD

    For secured group communication (see Section 5), the maintenance
    operations of the protocol Group OSCORE
    [I-D.ietf-core-oscore-groupcomm] MUST be implemented as well.

NEW (emphasis mine)

    For secured group communication (see Section 5), the maintenance
    operations of the protocol Group OSCORE
    [I-D.ietf-core-oscore-groupcomm] MUST be*performed*as well.

(Here, the requirement to perform the operations implies that they must 
also have been implemented.)


> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
>
>
> Please consider the following comments for draft-ietf-core-groupcomm-bis:
>
> Thank you for the TSV-ART review by Magnus, it raised many issues that were
> important to me as a WIT AD. I see the document was revised following this (rev
> -14), some of my comments below relate also to these topics as seen in rev -14.
>
> Section 2.2.2
> /   For unsecure group communication using the NoSec mode (see
>     Section 4), there is no security material to be provided, hence there
>     is no security group for CoAP endpoints to participate in./
> - For me, this text is not well constructed, because I earlier understood that
> NoSec mode was only permitted under very specific uses and I'd expected this to
> be clear here also and for the avoidance of any doubt I'd expect this also to
> be clear in the introduction to section 4.

We have highlighted that through the following updates.

*Section 2.1.3*

We have rephrased as below.

OLD

    If the NoSec mode is used (see Section 4), group communication does
    not rely on security at the transport layer nor at the CoAP layer,
    hence the communicating endpoints do not refer to a security group.

NEW

    *It is strongly discouraged to have unsecure group communication
    through the NoSec mode (see Section 4), whose possible exceptional
    use ought to be limited to specific circumstances (see Section 4 and
    Section 6.1). When the NoSec mode is nevertheless used,*the
    communicating endpoints do not refer to a security group.

*Section 4*

In order to say as soon as possible that the NoSec mode is not 
recommended, we have reordered the content of this section to be as below.

    CoAP group communication can operate in CoAP NoSec (No Security)
    mode, without using application-layer and transport-layer security
    mechanisms.

    It is NOT RECOMMENDED to use CoAP group communication in NoSec mode.

    The possible, exceptional use … resources (see Section 6.1).

    Before possibly and exceptionally … avoided whenever possible.

    The NoSec mode uses the “coap” scheme, and is defined in Section 9
    of [RFC7252]. The NoSec mode does not require and does not make use
    of a security group. Indications that … its lowercase/uppercase
    combinations.

    A CoAP server in NoSec mode MUST NOT be accessible through the
    public Internet.

Also, we have made minor rephrasing on two of those sentences above:

  *

    s/(No Security) mode, without using/(No Security) mode, i.e.,
    without using

  *

    s/A CoAP server in NoSec mode MUST NOT be accessible through the
    public Internet./A CoAP server MUST NOT be accessible for group
    communication in NoSec mode through the public Internet.

Finally, as a result of addressing a comment from the review of Mohamed 
Boucadair at [1], we have also shortened the second from last paragraph 
in the new text, to not repeat a requirement already made earlier in the 
document.

So that paragraph becomes as below:

    The NoSec mode uses the “coap” scheme, and is defined in Section 9
    of [RFC7252]. The NoSec mode does not require and does not make use
    of a security group (see Section 2.2.1.3).

[1]https://mailarchive.ietf.org/arch/msg/core/6bjFRbSwzAvfdQqupIn9hCxB_OA/



> ---
> /This task MAY be entrusted to a
>     dedicated administrator, that interacts with a Group Manager as
>     defined in Section 5./
> - Is this really an interoperability requirement, could the /MAY/ be a /may/?

Yes; or, even more clearly, it could be “can”, like used later in 
Section 5.1 when talking about the administrator and its interactions 
with the Group Manager.

We have rephrased as below:

OLD

    This task MAY be entrusted to a dedicated administrator, …

NEW

    This task can be entrusted to a dedicated administrator, …



> ---
>
> These commenst mostly relate to editorial NiTs, I've suggested some proposed
> text, but you my find other text, if you wish to clarify please do:
>
> /Then, Group configuration/
> - Why capital "G" here, could this be "group"?

Indeed, that’s a typo. Now fixed as below.

OLD

    Then, Group configuration, including …

NEW

    Then, group configuration, including …


> ---
> /In fact, being a member of a security group actually grants/
> - I didn't understand why this is written this way, would it be the same as
> something like: /Being a member of a security group grants/

It was meant to emphasize the rationale of the previous paragraph, but 
we have rephrased as suggested:

OLD

    In fact, being a member of a security group actually grants …

NEW

    Being a member of a security group grants …


> ---
> Section 2.2.1.1.
> I see the text refers to the IPv6 prefix: ff15
> - I think this is intended to be a a temporary site-local multicast address, if
> so please state this also in the text, rather than allowing any possibly for a
> reader to think this is a special reserved prefix.

A related point came up also in the review from Ketan Talaulikar [2].

Also in order to address his comment, we have made the updates below, 
switching to an IPv6 address from the range provided for documentation 
(see RFC 6676).

OLD (Section 2.2.1.1, 4 instances)

    ff15::1234

NEW (Section 2.2.1.1, 4 instances)

    ff05::db8:0:1

OLD (Section 2.1.4)

    … for example the CoAP group with site-local, site-specific
    multicast IP address ff15::3456 and default UDP port number 5683 …

NEW (Section 2.1.4)

    … for example the CoAP group with site-local multicast IP address
    ff05::db8:0:3456 and default UDP port number 5683 …

Similary, we made a related change in Appendix B and Appendix B.1:

OLD (Appendix B and Appendix B.1)

    ff35:30:2001:db8:f1:0:8000:1

NEW (Appendix B and Appendix B.1)

    ff05::db8:8000:1

[2]https://mailarchive.ietf.org/arch/msg/core/SG7fpMILV2a4qrJYHz0xhUw-V50/



> ---
> Section 2.2.1.2.
> This text mentions ff35:30:2001:db8:f1:0:8000:1 which seems like it may be an
> example of a site-local scope multicast address, please state this also in the
> text.

This text is simply referring to RFC 9176, which uses 
ff35:30:2001:db8:f1::8000:1, hence we prefer to keep that address here too.

For consistency, we have however edited the address to use exactly the 
same compact notation as in RFC 9176 and have made it explicit that it 
is a site-local address, i.e.:

OLD

    while the CoAP group ff35:30:2001:db8:f1:0:8000:1

NEW

    while the CoAP group with site-local address ff35:30:2001:db8:f1::8000:1

OLD

    selects the CoAP group ff35:30:2001:db8:f1:0:8000:1

NEW

    selects the CoAP group with address ff35:30:2001:db8:f1::8000:1


> ---
> I see this text:
> /For IPv6 CoAP groups, common multicast address ranges from which group
> addresses can be taken are ff1x::/16 and ff3x::/16./ - This does not clearly
> point to the address allocation and its specified use. Please explain the scope
> and refer to the IANA registry entry.

In order to address a comment in the review from Ketan Talaulikar [2], 
we have updated the text as below, to leave the choice to network 
operators and administrators. Therefore, there is no need to mention 
specific address ranges any more.

OLD

    For IPv6 CoAP groups, common multicast address ranges from which
    group addresses can be taken are ff1x::/16 and ff3x::/16.

NEW

    For IPv6 CoAP groups, this document does not suggest or recommend
    any particular multicast address ranges from which group addresses
    can be taken. It is up to network operators and managers to
    appropriately select addresses from the multicast address space with
    the intended multicast address scope.

[2]https://mailarchive.ietf.org/arch/msg/core/SG7fpMILV2a4qrJYHz0xhUw-V50/



> ----
> At various places, the word "effective" is used to describe the impact of an
> attack. Whilst it is true an attack would have an "effect", I don't think this
> word is the best, and I could suggest: /more effective/ is replaced by /makes
> this more vulnerable/ or something equivalent that indicates this is a problem
> not a goal.


Yes, it is implied that the effect of an attack is negative, hence a 
problem. Depending on the specific sentence, we have rephrased as below 
to use, e.g., “harmful” or “impact” instead.

OLD (Section 3.3.1)

    When using CoAP group communication, an amplification attack becomes
    more effective than when …

NEW (Section 3.3.1, emphasis mine)

    When using CoAP group communication, an amplification attack becomes
    more*harmful*than when …

OLD (Section 3.7)

    When combining CoAP group communication and Observe as described
    above, an amplification attack can become particularly effective.

NEW (Section 3.7, emphasis mine)

    When combining CoAP group communication and Observe as described
    above, an amplification attack can become particularly*harmful*.

OLD (Section 6.1)

    Moreover, as also discussed in
    [I-D.irtf-t2trg-amplification-attacks], the NoSec mode is
    susceptible to source IP address spoofing, hence amplification
    attacks are especially feasible and greatly effective,

NEW (Section 6.1, emphasis mine)

    Moreover, as also discussed in
    [I-D.irtf-t2trg-amplification-attacks], the NoSec mode is
    susceptible to source IP address spoofing, hence amplification
    attacks are especially feasible and greatly*harmful*,

OLD (Section 6.3)

    In terms of attack effectiveness, an adversary sending a single
    group request may therefore achieve a large amplification factor …

NEW (Section 6.3, emphasis mine)

    In terms of attack*impact*, an adversary sending a single group
    request may therefore achieve a large amplification factor …

OLD (Section 6.4)

    … this replay attack would not accomplish anything on the client,
    although it does effectively target the servers …

NEW (Section 6.4, emphasis mine)

    … this replay attack would not accomplish anything on the client,
    although it*does target*the servers …



> ---
> /the attack may/the attack could/
> - only to avoid potential mis-reading.

Yes; rephrased as below.

OLD (Section 3.1.1)

    the attack may result in …

NEW (Section 3.1.1)

    the attack could result in …

OLD (Section 3.7)

    the attack may result in …

NEW (Section 3.7)

    the attack could result in …



> ---
> Section 3.1.3 makes a general statement I think is wrong:
> /Group requests sent over IP multicast generally have much higher loss rates
> than messages sent over unicast, particularly in constrained networks./ - I can
> see that loss ratios can be higher for multicast when sent over a different
> link with a different property, but in the general Internet this is not so. I
> suggest: /Group requests sent over IP multicast can have much higher loss rates
> than messages sent over unicast, particularly when using a constrained network./

We have rephased as suggested.

OLD

    Group requests sent over IP multicast generally have much higher
    loss rates than messages sent over unicast, particularly in
    constrained networks.

NEW

    Group requests sent over IP multicast can have much higher loss
    rates than messages sent over unicast, particularly when using a
    constrained network.


> ---
> /This document updates [RFC7252] by allowing a group request to contain ETag
> Options as specified below./ - please refer to section number where the update
> is to be applied in RFC 7252.

That section is mentioned in the sentence immediately preceding the 
quoted text in Section 3.2.2 of the present document:

    For validation of cached group communication responses at client
    endpoints, the multicast validation rules in Section 8.2.1 of
    [RFC7252] apply, except for the last paragraph which states “A GET
    request to a multicast group MUST NOT contain an ETag option”.

We have rephrased as below and repeated the section number:

OLD

    This document updates [RFC7252] by allowing a group request to
    contain ETag Options as specified below.

NEW (emphasis mine)

    This document updates*Section 8.2.1 of*[RFC7252] by allowing a group
    request to contain ETag Options as specified below.



> ---
> /the CoAP default UDP port number 5683/
> - OK, but please insert a reference to the IANA allocation registry.

Done, as per the rephrasing below:

OLD

    … is usually the CoAP default UDP port number 5683, or alternatively …

NEW

    … is usually the CoAP default UDP port number 5683 [Port.Number], or
    alternatively …

With the additional informative reference below:

    Port.Number:
    author:
    org: IANA
    date: false
    title: Service Name and Transport Protocol Port Number Registry
    target:https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml



> ---
> /One way to create multiple CoAP groups is using different UDP ports  with the
> same IP multicast address, .../ - True, but it seems like this should probably
> be prefaced by something like: /When COAP groups are created with unique IP
> multicast addresses the receivers of these messages can utilise multicast
> filters to extract the messages of interest./ - and then make the directly
> above sentence in the text start as: /Another way..."

Quoting the whole paragraph for context:

OLD

    One way to create multiple CoAP groups is using different UDP ports
    with the same IP multicast address, in case the devices’ network
    stack only supports a limited number of multicast address
    subscriptions. However, it must be taken into account that this
    incurs additional processing overhead on each CoAP server
    participating in at least one of these groups: messages to groups
    that are not of interest to the node are only discarded at the
    higher transport (UDP) layer instead of directly at the Internet
    (IP) layer. Also, a constrained network may be additionally burdened
    in this case with multicast traffic that is eventually discarded at
    the UDP layer by most nodes.

In order to also address a comment in the review from Éric Vyncke [2] 
about the same paragraph, we have rephrased the paragraph as below.

The new text explicitly mentions the use of the same IP multicast 
address as a starting point. Even though it is generally possible to 
think of “multicast filters”, it would be good that this document 
mentions only addresses and port numbers as specific tools, since the 
scope for group communication is anyway limited to IP and UDP.

NEW (emphasis mine)

    *It is NOT RECOMMENDED to create multiple CoAP groups by using
    different UDP ports with the same IP multicast address. An allowed
    exception is the presence of constrained devices whose network stack
    only supports a limited number of multicast address subscriptions.
    The use of such an approach for creating CoAP groups*incurs
    additional processing overhead … discarded at the UDP layer by most
    nodes.

[2]https://mailarchive.ietf.org/arch/msg/core/N0x5gyVLzepZA_aTdsXZcYJyGyY/



> ---
> /The port number 5684/
> - OK, but please insert a reference to the IANA allocation registry.

We have rephrased as below:

OLD

    The port number 5684 is dedicated for DTLS-secured unicast CoAP and …

NEW

    The port number 5684 is dedicated for DTLS-secured unicast CoAP
    [Port.Number] and …

With the additional informative reference below:

    Port.Number:
    author:
    org: IANA
    date: false
    title: Service Name and Transport Protocol Port Number Registry
    target:https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml


> ---
> /For a CoAP server node that supports resource discovery as defined in
>     Section 2.4 of [RFC7252], the default port number 5683 MUST be
>     supported /
> - I don't know what "supported" means in this context - must the receiver
> process packets received on this port; or only if configure, or what? (please
> change supported to some explanation).

Quoting the whole sentence for completeness:

    For a CoAP server node that supports resource discovery as defined
    in Section 2.4 of [RFC7252], the default port number 5683 MUST be
    supported (see Section 7.1 of [RFC7252]) for the “All CoAP Nodes”
    CoAP group as detailed in Section 3.9.

The text is using the same parlance of the referred Section 7.1 of RFC 7252:

    The CoAP default port number 5683 MUST be supported by a server that
    offers resources for resource discovery (see Section 7.2 below) …

We have updated the text in the present document to be even closer to 
that of RFC 7252, and to be more precise about “All CoAP Nodes” being an 
address (not a CoAP group):

NEW (emphasis mine):

    For a CoAP server node that*offers resources for*resource
    discovery*(see*Section 2.4 of [RFC7252]*)*, the default port number
    5683 MUST be supported (see Section 7.1 of [RFC7252]) for the “All
    CoAP Nodes”*IP multicast addresses (see Section 12.8 of
    [RFC7252]),*as detailed in Section 3.9.

“Supported” here means that such a server must be listening for incoming 
requests that target an “All CoAP Nodes” address and port number 5683. 
Assuming the received request to be valid, the server would indeed 
process it, as the server offers resources for resource discovery by 
definition.

This was not expanded/explained in RFC 7252, and we would prefer to not 
do it in the present document to avoid risk of confusion.



> ---
> /If this happens, the reverse-proxy MUST /
> - appears in a separate paragraph to the description. I think it would be
> better for the sentence to state what /this/ is, i.e. if a client re-uses a
> Token value, or something similar. - Consider also making this one paragraph to
> clearly link the description with the requirement.

We have accordingly rephrased as below.

OLD

    A client might re-use a Token value in a valid new request to the
    reverse-proxy, while the reverse-proxy still has an ongoing group
    communication request for this client with the same Token value
    (i.e., its time period for response collection has not ended yet).

    If this happens, the reverse-proxy MUST stop the ongoing request and
    associated response forwarding, it MUST NOT forward the new request
    to the servers in the CoAP group, and it MUST send a 4.00 (Bad
    Request) error response to the client. The diagnostic payload of the
    error response SHOULD indicate to the client that the resource is a
    reverse-proxy resource, and that for this reason immediate Token
    re-use is not possible.

NEW (emphasis mine)

    A client might re-use a Token value in a valid new request to the
    reverse-proxy, while the reverse-proxy still has an ongoing group
    communication request for this client with the same Token value
    (i.e., its time period for response collection has not ended yet).
    If*the client does so*, the reverse-proxy MUST stop the ongoing
    request and associated response forwarding, it MUST NOT forward the
    new request to the servers in the CoAP group, and it MUST send a
    4.00 (Bad Request) error response to the client. The diagnostic
    payload of the error response SHOULD indicate to the client that the
    resource is a reverse-proxy resource, and that for this reason
    immediate Token re-use is not possible.


> ---
> /   For the operation of HTTP-to-CoAP reverse proxies, see the last two
>     paragraphs of Section 3.5.1, which apply also to the case of reverse-
>     proxies./
> - Would this be clearer rewritten, e.g.:
> /   The last two  paragraphs of Section 3.5.1, also apply for the operation of
> HTTP-to-CoAP reverse proxies./

Yes, minus the comma, and adding a dash that we missed in “reverse-proxies”.

OLD

    For the operation of HTTP-to-CoAP reverse proxies, see the last two
    paragraphs of Section 3.5.1, which apply also to the case of
    reverse-proxies.

NEW

    The last two paragraphs of Section 3.5.1 also apply for the
    operation of HTTP-to-CoAP reverse-proxies.


> ---
> /CoAP group requests may result in a multitude of responses from/
> - To avoid doubt, can this be rewritten as something like:
> /CoAP group requests could result in a multitude of responses from/

We have rephrased as suggested.

OLD

    CoAP group requests may result in a multitude of responses from
    different nodes …

NEW

    CoAP group requests could result in a multitude of responses from
    different nodes …


> ---
> /Multicast usage of
>     Block1 is non-trivial due to potential message loss (leading to
>     missing blocks or missing confirmations), and potential diverging
>     block size preferences of different members of the CoAP group./
> - I agree, but would also strongly encourage that you add another
> consideration: that retransmission needs to conform to the congestion control
> requirements stated in section XX of this document.

Yes, although we should avoid the word “retransmission”, since it would 
instead suggest what happens at the messaging layer to handle 
non-acknowledged Confirmable messages.

Instead, it is better to use “repeated transmission” if we would define 
the details of this. We have rephrased as below in a very general way as 
to avoid such details; and place requirements on future solutions that 
are currently still out of scope:

OLD

    Multicast usage of Block1 is non-trivial due to potential message
    loss (leading to missing blocks or missing confirmations), and
    potential diverging block size preferences of different members of
    the CoAP group.

NEW

    Multicast usage of Block1 is non-trivial due to potential message
    loss (leading to missing blocks or missing confirmations), and
    potential diverging block size preferences of different members of
    the CoAP group.*Besides addressing such issues, a future solution
    for group/multicast block-wise transfer using the Block1 Option
    needs to conform to the congestion control requirements compiled in
    Section 3.6 of this document.*


> ---
> /the default port number 5683 MUST be supported as per Sections 7.1 and 12.8 of
> [RFC7252] / - as before, please expand upon the word /supported/, does this
> mean messages received and processed? (Also the same comment to explain the
> meaning of support in 3.9.3)

The same answer to an earlier comment about Section 3.4 applies here.

Quoting the whole sentence for completeness:

    For a CoAP server node that supports resource discovery as defined
    in Section 2.4 of [RFC7252], the default port number 5683 MUST be
    supported as per Sections 7.1 and 12.8 of [RFC7252] for the “All
    CoAP Nodes” multicast CoAP group. An IPv6 CoAP server SHOULD support
    the “All CoAP Nodes” multicast CoAP group with at least …

The text is using the same parlance of the referred Section 7.1 of RFC 7252:

    The CoAP default port number 5683 MUST be supported by a server that
    offers resources for resource discovery (see Section 7.2 below) …

Like for the update to address the previous comment, we can rephrase as 
below:

NEW (Section 3.9.1, emphasis mine)

    For a CoAP server node that*offers resources for*resource discovery
    as defined in Section 2.4 of [RFC7252], the default port number 5683
    MUST be supported as per*Section 7.1 of [RFC7252]*for the “All CoAP
    Nodes”*IPv6 multicast addresses (see Section 12.8 of [RFC7252])*. An
    IPv6 CoAP server SHOULD support the “All CoAP Nodes”*IPv6 multicast
    addresses*with at least*the*…

NEW (Section 3.9.3, emphasis mine)

    For a CoAP server node that*offers resources for*resource discovery
    as defined in Section 2.4 of [RFC7252], the default port number 5683
    MUST be supported*as per Section 7.1 of [RFC7252]*for the “All CoAP
    Nodes”*IPv4 multicast address (see Section 12.8 of [RFC7252])*.

Like in the earlier Section 3.4 that anticipates the details provided in 
Sections 3.9.1 and 3.9.3, “supported” here means that such a server must 
be listening for incoming requests that target the “All CoAP Nodes” 
addresses and port number 5683. Assuming the received request to be 
valid, the server would indeed process it, as the server offers 
resources for resource discovery by definition.

This was not expanded/explained in RFC 7252, and we would prefer to not 
do it in the present document to avoid risk of confusion.

The updates above suggested that it is good to make also the following, 
related updates in other sections, i.e. make clear that "All CoAP Nodes" 
are multicast addresses and not a "CoAP group":

OLD (Section 1.3)

    … scopes with the “All CoAP Nodes” multicast CoAP group (see Section
    3.9.1).

NEW (Section 1.3, emphasis mine)

    … scopes with the “All CoAP Nodes”*IPv6 multicast addresses*(see
    Section 3.9.1 of the present document).

OLD (Section 2.2.3.2)

    …; or to the “All CoAP Nodes” multicast address …

NEW (Section 2.2.3.2, emphasis mine)

    …; or to*an*“All CoAP Nodes”*IP*multicast address …

OLD (Section 2.2.3.2, 2 instances)

    This is achieved by sending the GET request above to the “All CoAP
    Nodes” IP multicast address …

NEW (Section 2.2.3.2, 2 instances, emphasis mine)

    This is achieved by sending the GET request above to*an*“All CoAP
    Nodes” IP multicast address …

OLD (Section 2.2.3.2)

    The request is sent to the “All CoAP Nodes” IP multicast address …

NEW (Section 2.2.3.2, emphasis mine)

    The request is sent to*an*“All CoAP Nodes” IP multicast address …

OLD (Section 3.9.2)

    … to the realm-local “All CoAP Nodes” IPv6 multicast CoAP group (see
    Section 3.9.1) in …

NEW (Section 3.9.2, emphasis mine)

    … to the “All CoAP Nodes” IPv6 multicast*address*(see Section
    3.9.1)*with realm-local scope*, in …

OLD (Appendix A.1.3)

    … to the site-local “All CoAP Nodes” multicast address (ff05::fd).

NEW (Appendix A.1.3, emphasis mine)

    … to the site-local “All CoAP Nodes”*IP*multicast address (ff05::fd).



> ---
> /A suitable cross-proxy can be set up, such that it receives a
>        unicast CoAP group request over TCP/TLS/WebSockets, and then
>        forwards the request to the servers in the group over UDP/IP
>        multicast /
> - OK, but please explicitly state that any multicast transmission MUST respect
> the requirements stated in this document.

Like for a previous comment about the Block1 Option, we interpret your 
comment as referring to the congestion control requirements.

Also, this should first of all be stated in Sections 3.5 about proxies 
in general.

We have rephrased the text in Section 3.5 as below:

OLD (Section 3.5)

    In particular, forward-proxies and reverse-proxies are separately
    considered in Section 3.5.1 and Section 3.5.2, respectively.
    Furthermore, Section 3.5.3 discusses the case where a client sends a
    group request to multiple proxies at once. Security considerations
    that apply when using a proxy are discussed later in Section 5.3.

NEW (Section 3.5)

    In particular, forward-proxies and reverse-proxies are separately
    considered in Section 3.5.1 and Section 3.5.2, respectively.
    Furthermore, Section 3.5.3 discusses the case where a client sends a
    group request to multiple proxies at once.*When sending a CoAP group
    request over UDP/IP multicast, a proxy MUST conform to the
    congestion control requirements compiled in Section 3.6 of this
    document.*Security considerations that apply when using a proxy are
    discussed later in Section 5.3.

So the intent is now that the new requirement covers any type of proxy 
that sends out CoAP group requests over UDP/IP multicast.

For consistency, we have made a related rephrasing in Section 3.5.2 and 
Appendix F:

OLD

    … such as IP/UDP multicast.

NEW

    … such as UDP/IP multicast.



> ---
> Section 4: Please consider moving the text within the first few paras. I'd
> hoped the requirement: /It is NOT RECOMMENDED to use CoAP group communication
> in NoSec mode./ at the start of section 4 followed by the next para an
> explanation why, so that this is made this very clear.

Yes. We have addressed this by addressing the first comment in the 
“COMMENT” part of this review.

That is, we have reordered the content of this section, mentioning as 
early as possible that the NoSec mode is NOT RECOMMENDED.


> ---
> Plase consider whether you can creat a separate section title: "Operational
> Considerations" to alert the operator community to relevant content (no need
> for extra content, just restructuring to make this more obvious). - If you do
> this, I'd encourage you to move the subsections 6.6, 6.7 and 6.8 to this new
> section.

Sections 6.6-6.8 are under Section 6 “Security Considerations” and 
discuss security-related aspects. So, we think that they already are in 
the right place.

We are not sure of what other content can be taken from other sections 
of the document and moved into a new section “Operational Considerations”.

We believe that the content is in the right place, and we prefer to not 
experiment with or shake the document structure too much at this point.


> ---
> I assume all appendices are Informative - but this is not stated, please add a
> sentence to state this.
> ---

That’s correct, and it is already stated in the last paragraph of 
Section 1.0:

    All sections in the body of this document are normative, while
    appendices are informative.

> _______________________________________________
> core mailing list --core@ietf.org
> To unsubscribe send an email tocore-leave@ietf.org

-- 
*IoTconsultancy.nl* | Email/Teams: esko.dijk@iotconsultancy.nl | +31 6 
2385 8339