Re: [core] [Dots] Large asynchronous notifications under DDoS: New BLOCK Option?

mohamed.boucadair@orange.com Wed, 08 April 2020 21:04 UTC

Return-Path: <mohamed.boucadair@orange.com>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2C9813A1811; Wed, 8 Apr 2020 14:04:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=orange.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0tuGpa_sarpe; Wed, 8 Apr 2020 14:04:21 -0700 (PDT)
Received: from relais-inet.orange.com (relais-inet.orange.com [80.12.66.40]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 69C653A1805; Wed, 8 Apr 2020 14:04:21 -0700 (PDT)
Received: from opfedar01.francetelecom.fr (unknown [xx.xx.xx.2]) by opfedar24.francetelecom.fr (ESMTP service) with ESMTP id 48yGx012vfz5wD6; Wed, 8 Apr 2020 23:04:20 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.com; s=ORANGE001; t=1586379860; bh=I8ENY+uiKQGq7nxNLYKwSproOJYHqUrg72VYlyuhVyQ=; h=From:To:Subject:Date:Message-ID:Content-Type: Content-Transfer-Encoding:MIME-Version; b=FIq8AOx0hNfv1C0QTPbrTUI5gSSpWbiuGPx/MgsNEUWlpAXfp271QSEwZVdVxNjvs Ch9HrvMZPQ2D6oCaXGCF/W/H+BOGwEn8nhCLDzXbbrbL6oy8ZQ6ZedoY3Wz691dGar srAc96TIj6CvKl9WctDg9ntTgrRJm0kucwAwWsJlfBLpsf2KPYimZye4cK+OAOnshp o6PEnPC2sFoF2rFI7tIzsxVBgrUTOl1GBkobaEyhNWqpWnWXHpB6pPEPETTJYKlU7E I/PQezsMCgWA2MBZR0ivsQT2GMs+cGUqnaDtMqvaOnMMsJcfBXaNpAyg26tnpP9+mL tnwlL40vuWeyw==
Received: from Exchangemail-eme6.itn.ftgroup (unknown [xx.xx.13.20]) by opfedar01.francetelecom.fr (ESMTP service) with ESMTP id 48yGwz6w3PzBrLb; Wed, 8 Apr 2020 23:04:19 +0200 (CEST)
From: <mohamed.boucadair@orange.com>
To: Achim Kraus <achimkraus@gmx.net>, Jon Shallow <supjps-ietf@jpshallow.com>, "cabo@tzi.org" <cabo@tzi.org>, "dots@ietf.org" <dots@ietf.org>, "core@ietf.org" <core@ietf.org>
Thread-Topic: [core] [Dots] Large asynchronous notifications under DDoS: New BLOCK Option?
Thread-Index: AQHWDelFWvaG9gBmdUOVx/wmUdafbw==
Date: Wed, 8 Apr 2020 21:04:18 +0000
Message-ID: <787AE7BB302AE849A7480A190F8B933031491DA6@OPEXCAUBMA2.corporate.adroot.infra.ftgroup>
References: <787AE7BB302AE849A7480A190F8B933031490173@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <2a255f3b-6614-f950-4ecc-15f170087c9f@gmx.net> <787AE7BB302AE849A7480A190F8B933031490894@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <019301d60d05$d87fcca0$897f65e0$@jpshallow.com> <a36c6114-d979-e04a-7806-3ad350208e4a@gmx.net> <566C58A5-0373-4D34-91F8-7B664423E373@tzi.org> <787AE7BB302AE849A7480A190F8B933031491200@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <023101d60d92$3642ebb0$a2c8c310$@jpshallow.com> <f105cf6a-da87-d8da-35db-07975f064a94@gmx.net>
In-Reply-To: <f105cf6a-da87-d8da-35db-07975f064a94@gmx.net>
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/core/vEtv4OQdr_xekPnhwB8jQJoHkUU>
Subject: Re: [core] [Dots] Large asynchronous notifications under DDoS: New BLOCK Option?
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Apr 2020 21:04:29 -0000

Hi Achim, 

One clarification question:

>             +--------->|   GET /path/ctrl Token 0xf1 { NonBlock2
> 1/0/1024 NonBlock2 2/0/1024 }

Do existing CoAP implementations (libcoap, for example) support GETs with a payload?

Cheers,
Med

> -----Message d'origine-----
> De : Achim Kraus [mailto:achimkraus@gmx.net]
> Envoyé : mercredi 8 avril 2020 20:56
> À : Jon Shallow; BOUCADAIR Mohamed TGI/OLN; cabo@tzi.org;
> dots@ietf.org; core@ietf.org
> Objet : Re: [core] [Dots] Large asynchronous notifications under DDoS:
> New BLOCK Option?
> 
> Hi Jon,
> 
> let me try to demonstrate, how “application layer framing” could look
> like:
> 
> > New CoAP Option NONBLOCK2 equivalent to BLOCK2, but does not rely on
> client doing GET to get the next block synchronously. >
> >
> >         CLIENT      SERVER
> >           |          |
> >           +--------->|   GET /path Token 0xf0 Observe 0 NonBlock2
> 0/0/1024
> >           |          |
> >           |<---------+   2.05 Token 0xf0 Observe 1234 NonBlock2
> 0/1/1024
> >           |          |
> >           |<---------+   2.05 Token 0xf0 Observe 1234 NonBlock2
> 1/1/1024
> >           |          |
> >           |<---------+   2.05 Token 0xf0 Observe 1234 NonBlock2
> 2/1/1024
> >           |          |
> >           |<---------+   2.05 Token 0xf0 Observe 1234 NonBlock2
> 3/0/1024
> Do these messages in the application layer -> encode the messages =>
> put
> the encoded message as payload for ordinary notifies:
> 
>           CLIENT      SERVER
>             |          |
>             +--------->|   GET /path Token 0xf0 Observe 0 NonBlock2
> 0/0/1024
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1234 { 2.05 Token
> 0xf0 Observe abc NonBlock2 0/1/1024 }
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1235 { 2.05 Token
> 0xf0 Observe abc NonBlock2 1/1/1024 }
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1236 { 2.05 Token
> 0xf0 Observe abc NonBlock2 2/1/1024 }
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1237 { 2.05 Token
> 0xf0 Observe abc NonBlock2 3/0/1024 }
> 
> The outer notifies will be processed as usual, the application block
> logic is yours.
> 
> Observe triggered
>             |<---------+   2.05 Token 0xf0 Observe 1238 { 2.05 Token
> 0xf0 Observe abd NonBlock2 0/1/1024 }
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1239 { 2.05 Token
> 0xf0 Observe abd NonBlock2 1/1/1024 }
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1240 { 2.05 Token
> 0xf0 Observe abd NonBlock2 2/1/1024 }
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1241 { 2.05 Token
> 0xf0 Observe abd NonBlock2 3/0/1024 }
> 
> Observe triggered
>             |<---------+   2.05 Token 0xf0 Observe 1238 { 2.05 Token
> 0xf0 Observe abd NonBlock2 0/1/1024 }
>             |          |
>             |  X<------+   2.05 Token 0xf0 Observe 1239 { 2.05 Token
> 0xf0 Observe abd NonBlock2 1/1/1024 }
>             |          |
>             |  X<------+   2.05 Token 0xf0 Observe 1240 { 2.05 Token
> 0xf0 Observe abd NonBlock2 2/1/1024 }
>             |          |
>             |<---------+   2.05 Token 0xf0 Observe 1241 { 2.05 Token
> 0xf0 Observe abd NonBlock2 3/0/1024 }
> 
> 
> Client realises blocks are missing and asks for the missing ones in
> one go
> 
>             +--------->|   GET /path/ctrl Token 0xf1 { NonBlock2
> 1/0/1024 NonBlock2 2/0/1024 }
>             |          |
>             |  X<------+   2.05 Token 0xf0 Observe 1242 { 2.05 Token
> 0xf0 Observe abd NonBlock2 1/1/1024 }
>             |          |
>             |<...------+   2.05 Token 0xf0 Observe 1243 { 2.05 Token
> 0xf0 Observe abd NonBlock2 2/1/1024 }
> 
> Get final missing block
>             +--------->|   GET /path/ctrl Token 0xf2 { / NonBlock2
> 1/0/1024 }
>             |          |
>             |<...------+   2.05 Token 0xf0 Observe 1244 { 2.05 Token
> 0xf0 Observe abd NonBlock2 1/1/1024 }
> 
> 
> That should be not considered as "precise description of the
> application
> layer framing". It should just give a first impression, how coap
> standards could be used, and the specific stuff could be move to the
> application layer (reusing coap again).
> 
> best regards
> Achim