Re: [Dots] AD review of draft-ietf-dots-signal-channel-25 (3rd Part)

<mohamed.boucadair@orange.com> Thu, 17 January 2019 09:10 UTC

Return-Path: <mohamed.boucadair@orange.com>
X-Original-To: dots@ietfa.amsl.com
Delivered-To: dots@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8E8F4128D0C; Thu, 17 Jan 2019 01:10:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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 Ue3i2_KNM5hg; Thu, 17 Jan 2019 01:10:08 -0800 (PST)
Received: from orange.com (mta135.mail.business.static.orange.com [80.12.70.35]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 049D3126DBF; Thu, 17 Jan 2019 01:10:08 -0800 (PST)
Received: from opfednr06.francetelecom.fr (unknown [xx.xx.xx.70]) by opfednr25.francetelecom.fr (ESMTP service) with ESMTP id 43gJFB3kZhzCr36; Thu, 17 Jan 2019 10:10:06 +0100 (CET)
Received: from Exchangemail-eme2.itn.ftgroup (unknown [xx.xx.31.32]) by opfednr06.francetelecom.fr (ESMTP service) with ESMTP id 43gJFB2ml0zDq7l; Thu, 17 Jan 2019 10:10:06 +0100 (CET)
Received: from OPEXCAUBM5E.corporate.adroot.infra.ftgroup (10.114.13.82) by OPEXCLILM32.corporate.adroot.infra.ftgroup (10.114.31.32) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 17 Jan 2019 10:10:06 +0100
Received: from OPEXCAUBMA2.corporate.adroot.infra.ftgroup ([fe80::e878:bd0:c89e:5b42]) by OPEXCAUBM5E.corporate.adroot.infra.ftgroup ([fe80::849f:f804:b713:d99a%21]) with mapi id 14.03.0415.000; Thu, 17 Jan 2019 10:10:05 +0100
From: mohamed.boucadair@orange.com
To: "Konda, Tirumaleswar Reddy" <TirumaleswarReddy_Konda@McAfee.com>, Benjamin Kaduk <kaduk@mit.edu>
CC: "draft-ietf-dots-signal-channel@ietf.org" <draft-ietf-dots-signal-channel@ietf.org>, "dots@ietf.org" <dots@ietf.org>
Thread-Topic: AD review of draft-ietf-dots-signal-channel-25 (3rd Part)
Thread-Index: AdStnwkIYLnL/STeQyWYhz1QpkBSPgAA8dOQABXjZoAADfjEUAAEBe6w
Date: Thu, 17 Jan 2019 09:10:05 +0000
Message-ID: <787AE7BB302AE849A7480A190F8B93302EA08F88@OPEXCAUBMA2.corporate.adroot.infra.ftgroup>
References: <787AE7BB302AE849A7480A190F8B93302EA08355@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <BYAPR16MB279046AB082091B80046808CEA820@BYAPR16MB2790.namprd16.prod.outlook.com> <20190117001952.GN91727@kduck.mit.edu> <BYAPR16MB279047EDC85C68C9479F1708EA830@BYAPR16MB2790.namprd16.prod.outlook.com>
In-Reply-To: <BYAPR16MB279047EDC85C68C9479F1708EA830@BYAPR16MB2790.namprd16.prod.outlook.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.114.13.247]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/dots/kGP2aHFIiAMXbdNiUTOI2ULSX7E>
Subject: Re: [Dots] AD review of draft-ietf-dots-signal-channel-25 (3rd Part)
X-BeenThere: dots@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "List for discussion of DDoS Open Threat Signaling \(DOTS\) technology and directions." <dots.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dots>, <mailto:dots-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dots/>
List-Post: <mailto:dots@ietf.org>
List-Help: <mailto:dots-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dots>, <mailto:dots-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Jan 2019 09:10:10 -0000

Re-,

Please see inline.

Cheers,
Med

> -----Message d'origine-----
> De : Konda, Tirumaleswar Reddy [mailto:TirumaleswarReddy_Konda@McAfee.com]
> Envoyé : jeudi 17 janvier 2019 08:21
> À : Benjamin Kaduk
> Cc : BOUCADAIR Mohamed TGI/OLN; draft-ietf-dots-signal-channel@ietf.org;
> dots@ietf.org
> Objet : RE: AD review of draft-ietf-dots-signal-channel-25 (3rd Part)
> 
> > -----Original Message-----
> > From: Benjamin Kaduk <kaduk@mit.edu>
> > Sent: Thursday, January 17, 2019 5:50 AM
> > To: Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com>
> > Cc: mohamed.boucadair@orange.com; draft-ietf-dots-signal-
> > channel@ietf.org; dots@ietf.org
> > Subject: Re: AD review of draft-ietf-dots-signal-channel-25 (3rd Part)
> >
> > This email originated from outside of the organization. Do not click links
> or
> > open attachments unless you recognize the sender and know the content is
> > safe.
> >
> > On Wed, Jan 16, 2019 at 01:58:30PM +0000, Konda, Tirumaleswar Reddy
> > wrote:
> > > > -----Original Message-----
> > > > From: Dots <dots-bounces@ietf.org> On Behalf Of
> > > > mohamed.boucadair@orange.com
> > > > Sent: Wednesday, January 16, 2019 6:56 PM
> > > > To: Benjamin Kaduk <kaduk@mit.edu>; draft-ietf-dots-signal-
> > > > channel@ietf.org
> > > > Cc: dots@ietf.org
> > > > Subject: Re: [Dots] AD review of draft-ietf-dots-signal-channel-25
> > > > (3rd Part)
> > > >
> > > >
> > > >
> > > > Re-,
> > > >
> > > > Please see inline.
> > > >
> > > > Cheers,
> > > > Med
> > > >
> > > > > -----Message d'origine-----
> > > > > De : Benjamin Kaduk [mailto:kaduk@mit.edu] Envoyé : mercredi 16
> > > > > janvier 2019 01:14 À : draft-ietf-dots-signal-channel@ietf.org
> > > > > Cc : dots@ietf.org
> > > > > Objet : AD review of draft-ietf-dots-signal-channel-25
> > > > >
> > > > >
> > > > >                                                   To avoid
> maintaining a
> > > > >    long list of overlapping mitigation requests (i.e., requests with
> the
> > > > >    same 'trigger-mitigation' type and overlapping scopes) from a DOTS
> > > > >    client and avoid error-prone provisioning of mitigation requests
> from
> > > > >    a DOTS client, the overlapped lower numeric 'mid' MUST be
> > > > >    automatically deleted and no longer available at the DOTS server.
> > > > >    For example, if the DOTS server receives a mitigation request
> which
> > > > >    overlaps with an existing mitigation with a higher numeric 'mid',
> the
> > > > >    DOTS server rejects the request by returning 4.09 (Conflict) to
> the
> > > > >    DOTS client.  [...]
> > > > >
> > > > > This seems to be internally inconsistent -- first we hear that the
> > > > > overlapped mitigation request with lower 'mid' MUST be deleted
> > > > > (BTW, note my rewording), but at the end we are hearing that a
> > > > > request to create an overlapping mitgiation must be rejected
> > >
> > >
> > > The example is discussing out of order delivery of mitigation requests
> > > (DOTS client sends lower numeric 'mid' followed by higher numeric 'mid'
> > but the DOTS server receives the higher numeric 'mid' first and accepts the
> > request. At a later point of time, when the server receives the lower
> numeric
> > 'mid', the request is rejected by the server with 4.09 error response.
> >
> > Ah, I guess I was reading too fast; this is already clearly spelled out.
> >
> > > -Tiru
> > >
> > > >
> > > > [Med] It is rejected because it has a lower numeric 'mid'.
> > > >
> > > > ..  (A couple pages
> > > > > later we also say "can be achieved by sending a PUT request [...]
> > > > > that will override the existing one with overlapping mitigation
> scopes"
> > > >
> > > > [Med] Yes, the new one will have a higher 'mid'.
> > > >
> > > > ,
> > > > > which suggests a resolution of the conflict.
> > > >
> > > > [Med] I don't see any inconsistency. Please clarify if I missed your
> point.
> >
> > Tiru got it -- error on my part.
> >
> > > > >
> > > > >                  The response includes enough information for a DOTS
> > > > >    client to recognize the source of the conflict as described below:
> > > > >
> > > > >    conflict-information:  Indicates that a mitigation request is
> > > > >    [...]
> > > > >
> > > > > I'm not entirely sure what encoding to infer from just this
> > > > > description
> > > > > -- conflict-information/-cause/-scope are in the YANG model, but
> > > > > do we need to say that the response contains a CBOR representation
> > > > > of the subtree starting at conflict-information (or something like
> > > > > that), or is this implicitly specified elsewhere in the document?
> > > > > For example, Figure 9 has an explicit JSON diagnostic notation for
> > > > > a message response.
> > > >
> > > > [Med] This is covered by this text:
> > > >
> > > >    Thhis document specifies a YANG module for
> > > >    representing DOTS mitigation scopes, DOTS signal channel session
> > > >    configuration data, and DOTS redirected signalling (Section 5).
> > > >    Representing these data as CBOR data is assumed to follow the rules
> > > >    in [I-D.ietf-core-yang-cbor] or those in [RFC7951] combined with
> > > >    JSON/CBOR conversion rules in [RFC7049].  All parameters in the
> > > >                                              ^^^^^^^^^^^^^^^^^^^^^^
> > > >    payload of the DOTS signal channel are mapped to CBOR types as
> > > >
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > >    specified in Section 6.
> > > >    ^^^^^^^^^^^^^^^^^^^^^^
> >
> > I would still prefer to see something like "as described below in the
> 'conflict-
> > information' subtree with only the relevant nodes listed", to try to
> forestall
> > any other comments from directorate reviews.

[Med] Done. 

> >
> > > > >
> > > > >       conflict-scope:  Indicates the conflict scope.  It may include
> a
> > > > >          list of IP addresses, a list of prefixes, a list of port
> > > > >          numbers, a list of target protocols, a list of FQDNs, a list
> of
> > > > >          URIs, a list of alias-names, or a 'mid'.
> > > > >
> > > > > This feels a little under-specified -- do we need to include
> > > > > exactly the conflicting entries?  Or would we just say something
> > > > > like "this conflicts with 'mid' 8; figure it out"?
> > > >
> > > > [Med] This clause indicates the exact conflict scope. It may be for
> > example:
> > > > - a conflict of IP addresses. Then, the target addresses in conflict
> > > > are returned.
> > > > - a conflict with another request, then the mid of that request is
> > > > returned
> > > > - etc.
> > > >
> > > > We can update the text as follows:
> > > >
> > > >       conflict-scope:  Characterizes the exact conflict scope.  It may
> include
> > a
> > > >                        ^^^^^^^^^^^^^^^^^^^^^^^^
> > > >           list of IP addresses, a list of prefixes, a list of port
> > > >           numbers, a list of target protocols, a list of FQDNs, a list
> of
> > > >           URIs, a list of alias-names, or a 'mid'.
> >
> > That's probably a clarification worth making, thanks.
> >
> > > >
> > > > >
> > > > >          3:  CUID Collision.  This code is returned when a DOTS
> client
> > > > >              uses a 'cuid' that is already used by another DOTS
> client.
> > > > >              This code is an indication that the request has been
> > > > >              rejected and a new request with a new 'cuid' is to be
> re-
> > > > >              sent by the DOTS client.  Note that 'conflict-status',
> > > > >              'conflict-scope', and 'retry-timer' are not returned in
> the
> > > > >              error response.
> > > > >
> > > > > (Do we want "MUST NOT" 2119 language to prevent their inclusion or
> > > > > is the current descriptive language sufficient?)
> > > > >
> > > >
> > > > [Med] OK.
> > > >
> > > > >       conflict-scope:  Indicates the conflict scope.  It may include
> a
> > > > >          list of IP addresses, a list of prefixes, a list of port
> > > > >          numbers, a list of target protocols, a list of FQDNs, a list
> of
> > > > >          URIs, a list of alias-names, or references to conflicting
> ACLs.
> > > > >
> > > > > How do I reference an ACL?
> > > >
> > > > [Med] By an acl-name. I updated the text to hint this:
> > > >
> > > > "(by an 'acl-name', typically [I-D.ietf-dots-data-channel])"
> >
> > Ah, thanks.
> >
> > > > >
> > > > >                           This can be achieved by sending a PUT
> request
> > > > >    with a new 'mid' value that will override the existing one with
> > > > >    overlapping mitigation scopes.
> > > > >
> > > > > Do we want to reiterate that the existing one will be deleted?
> > > >
> > > > [Med] The text you quoted reminds that the new request will delete
> > > > the existing one.
> >
> > I was thinking that sometimes the word "override" means that two items are
> > both present, but one takes precedence over the other during processing;
> > "deleted" would then mean that only one of the items is present.

[Med] You are right. Even if both are maintained, we do already have this text: 

To avoid maintaining a
   long list of overlapping mitigation requests (i.e., requests with the
   same 'trigger-mitigation' type and overlapping scopes) from a DOTS
   client and avoid error-prone provisioning of mitigation requests from
   a DOTS client, the overlapped lower numeric 'mid' MUST be
   automatically deleted and no longer available at the DOTS server.

No need to repeat it again, IMO.

> >
> > > > >
> > > > >    For a mitigation request to continue beyond the initial negotiated
> > > > >    lifetime, the DOTS client has to refresh the current mitigation
> > > > >    request by sending a new PUT request.  This PUT request MUST use
> > the
> > > > >    same 'mid' value, and MUST repeat all the other parameters as sent
> > in
> > > > >    the original mitigation request apart from a possible change to
> the
> > > > >    lifetime parameter value.
> > > > >
> > > > > If the server did not have a check that the other parameters
> > > > > match, what would happen?
> > > >
> > > > [Med] A request may be for example inadvertently transitioned from
> > > > pre- configured to immediate and vice versa. To avoid such issues,
> > > > the spec mandates the following:
> > > >
> > > > * a client can adjust its mitigation scope by sending a new one that
> > > > will override an existing one.
> > > > * a client can update an existing mitigation by echoing the same
> > > > parameters as those in the initial mitigation request.
> > > >
> > > > But leave it to the server to decide how to handle the refresh:
> > > >
> > > >    If the DOTS server finds the 'mid' parameter value conveyed in the
> > > >    PUT request in its configuration data bound to that DOTS client, it
> > > >    MAY update the mitigation request, and a 2.04 (Changed) response is
> > > >    returned to indicate a successful update of the mitigation request.
> >
> > That seems consistent with what we do elsewhere, so sounds good.
> >
> > > >   (Do we need normative language that the server MUST
> > > > > verify the other parameters when the 'mid' matches?)
> > > > >
> > > > > Section 4.4.2
> > > > >
> > > > >                           If the representation of all the active
> > > > >    mitigation requests associated with the DOTS client does not fit
> > > > >    within a single datagram, the DOTS server MUST use the Block2
> > Option
> > > > >    with NUM = 0 in the GET response.  [...]
> > > > >
> > > > > I'm not very familiar with CoAP blockwise transfers; is this in
> > > > > conflict with some normal feature-negotiation scheme or is it okay
> > > > > to assume that the client will be able to handle this even if the
> > > > > client has not explictly indicated support?
> > > >
> > > > [Med] RFC7959 indicates the following:
> > > >
> > > >    A CoAP implementation that does not support these options generally
> > > >    is limited in the size of the representations that can be exchanged,
> > > >    see Section 4.6 of [RFC7252].  Even though the options are Critical,
> > > >    a server may decide to start using them in an unsolicited way in a
> > > >    response.  No effort was expended to provide a capability indication
> > > >    mechanism supporting that decision: since the block-wise transfer
> > > >    mechanisms are so fundamental to the use of CoAP for representations
> > > >    larger than about a kilobyte, there is an expectation that they are
> > > >    very widely implemented.
> >
> > Ah, that's quite decisive.  Thanks for pointing me to the reference.
> >
> > > > >
> > > > >       This is a mandatory attribute when an attack mitigation is
> > > > >       triggered.  Particularly, 'mitigation-start' is not returned
> for a
> > > > >       mitigation with 'status' code set to 8.
> > > > >
> > > > > Is this better as "triggered" or as "active"?
> > > >
> > > > [Med] Changed the text to "when an immediate attack mitigation is
> > > > triggered".
> >
> > That takes care of the disambiguation I was hoping for -- thanks :)
> 
> The above change does not look complete, mitigation-start is also a mandatory
> attribute when a pre-configured mitigation request is triggered after
> the DOTS signal channel session is lost.

[Med] I changed the text to "an attack mitigation is active." to avoid any confusion.  

> 
> >
> > > > >
> > > > > bps-dropped and pps-dropped "SHOULD be a five-minute average", but
> > > > > that does not seem quite well-defined.  Is it a rolling
> > > > > five-minute average over bins of one second, or a binned
> > > > > five-minute average for the last five-minute interval that ends on
> > > > > a multiple of '5', or something
> > > > else?
> > > >
> > > > [Med] What is meant in an average over 5-minute intervals. Updated
> > > > the text accordingly.
> > > >
> > > > >
> > > > >    Upon receipt of a conflict notification message indicating that a
> > > > >    mitigation request is deactivated because of a conflict, a DOTS
> > > > >    client MUST NOT resend the same mitigation request before the
> > expiry
> > > > >    of 'retry-timer'.  It is also recommended that DOTS clients
> support
> > > > >    means to alert administrators about mitigation conflicts.
> > > > >
> > > > > Do we need to say anything regarding the server behavior when a
> > > > > retransmit or similar was in flight already when the conflict
> > > > > notification was generated?  (That is, the server's enforcement of
> > > > > the MUST NOT may need to be restrained.)
> > > >
> > > > [Med] The MUST NOT is intended to avoid overloading the server,
> > because:
> > > >
> > > >          "Any retransmission of the same
> > > >          mitigation request before the expiry of this timer is likely
> to
> > > >          be rejected by the DOTS server for the same reasons."
> > > >
> > > > The text leave it to the server to decide which action to take when
> > > > MUST NOT is not followed by a client. The server may decide the
> > > > silently ignore those, etc.
> > > >
> > > > We can add some text if needed.
> >
> > Let's leave it alone for now.
> >
> > > > >
> > > > >    Alternatively, the DOTS client can explicitly deregister itself by
> > > > >    issuing a GET request that has the Token field set to the token of
> > > > >    the observation to be cancelled and includes an Observe Option
> with
> > > > >    the value set to '1' (deregister).
> > > > >
> > > > > This seems like the more "polite" behavior (as opposed to just
> > > > > "forgetting" -- why is the polite behavior not the default behavior?
> > > >
> > > > [Med] Done in my local copy.
> > > >
> > > > >
> > > > > Does the GET in  Figure 13 need to have a ".well-known" and other
> > > > > path components?
> > > > >
> > > >
> > > > [Med] Don't think so. Actually, we are mimicking figure 2 in RFC7641.
> >
> > Ah, thanks for the reference.
> >
> > -Ben