Re: [regext] Fwd: I-D Action: draft-ietf-regext-rdap-sorting-and-paging-01.txt

Mario Loffredo <mario.loffredo@iit.cnr.it> Fri, 12 April 2019 13:33 UTC

Return-Path: <mario.loffredo@iit.cnr.it>
X-Original-To: regext@ietfa.amsl.com
Delivered-To: regext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5224B120391 for <regext@ietfa.amsl.com>; Fri, 12 Apr 2019 06:33:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=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 bO6kQC-gBwdQ for <regext@ietfa.amsl.com>; Fri, 12 Apr 2019 06:33:25 -0700 (PDT)
Received: from smtp.iit.cnr.it (mx3.iit.cnr.it [146.48.98.150]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B61112051D for <regext@ietf.org>; Fri, 12 Apr 2019 06:33:24 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by smtp.iit.cnr.it (Postfix) with ESMTP id A75B160027A; Fri, 12 Apr 2019 15:33:22 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mx3.iit.cnr.it
Received: from smtp.iit.cnr.it ([127.0.0.1]) by localhost (mx3.iit.cnr.it [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oEzqs5d3Cde0; Fri, 12 Apr 2019 15:33:19 +0200 (CEST)
Received: from [192.12.193.108] (pc-loffredo.nic.it [192.12.193.108]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.iit.cnr.it (Postfix) with ESMTPSA id 24FA76003FC; Fri, 12 Apr 2019 15:33:19 +0200 (CEST)
From: Mario Loffredo <mario.loffredo@iit.cnr.it>
To: George Michaelson <ggm@algebras.org>, "regext@ietf.org" <regext@ietf.org>
References: <155497011965.12785.14525954206645431631@ietfa.amsl.com> <895f4e9c-3721-c31f-4e3b-57040e818d5f@iit.cnr.it> <CAKr6gn0eg=qxs=j1HrRqm04QcP7NYaT=fPJ2K7OL5-m3LXkShw@mail.gmail.com>
Message-ID: <efd69e30-8b85-3f20-8941-fa177f2a26c8@iit.cnr.it>
Date: Fri, 12 Apr 2019 15:32:56 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <CAKr6gn0eg=qxs=j1HrRqm04QcP7NYaT=fPJ2K7OL5-m3LXkShw@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------72E09A63F5401D380D5AABB3"
Content-Language: it
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/C1l805cFL-ShAFq93MnI1leR4kM>
Subject: Re: [regext] Fwd: I-D Action: draft-ietf-regext-rdap-sorting-and-paging-01.txt
X-BeenThere: regext@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Registration Protocols Extensions <regext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/regext>, <mailto:regext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/regext/>
List-Post: <mailto:regext@ietf.org>
List-Help: <mailto:regext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/regext>, <mailto:regext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 12 Apr 2019 13:33:30 -0000

Hi George,

many thanks for your comments.

Please find my comment at the end of your mail.

Il 12/04/2019 00:54, George Michaelson ha scritto:
> Personally, I felt the conversation at the microphone about 
> client/server capability was a huge misunderstanding. You did not seem 
> to "get" part of what was being said, about the need for a client to 
> be able to know what a server can do (in the future) beyond what a 
> server has done (now, or in the past).
>
> If we admit two forms of pagination/presentation/truncation, and we do 
> not require all clients to implement both, then we can wind up in a 
> world where a client cannot handle what a server can do. A 
> capabilities query is a mechanism to inform server and client mutually 
> what they can do. Telnet "options" negotiation for example, or the 
> SMTP HELO exchange is not one-sided. How a client and server "dance" 
> around this, informs what they both know about each other. There is a 
> proffer and a response. Yes, the actual underlying protocol here is 
> atomic and there is no implied state because we didn't implement 
> session. But that doesn't mean both client and server cannot "know" 
> about each other, because implicit state they hold or construct forms 
> the session information, or the client holds all information, and 
> varies its future behaviour to the atomic server, irrespective. (one 
> sided, is simpler for servers, but puts more work on the client)
>
> If we admit two forms of pagination a client should be entitled to 
> discover in advance which model to expect: this determines future 
> actions. You appeared to say you wanted all clients to be ready to 
> handle EITHER case.
>
> If I misunderstood or mis-characterise what you said, I welcome 
> clarification.

I'm aware that we need a mechanism for clients to indentify which 
capabilities an RDAP server provides. I'm working about that and, at 
next ROW, I'll present a possible solution based on the use of most 
popular REST specification languages. Since RDAP responses are provided 
by a REST service I think we don't have to invent anything already 
existing.  It doesn't simply consist in providing a flat array of tags 
each one identifying a specific capability beacuse server policies can 
change according to the user profile in both requests and resonses.

That being said, pagination method is basically something that a client 
can't choose. It's true that, if a server provides offset and limit 
operators, they can be used individually in the initial query but, in 
most of use cases, they are used by the server to provide a ready-made 
link to the next page.  So a client will use that link  without 
considering how pagination is implemented. This concept is evident when 
a server implements the cursor pagination: no client will be able to 
submit the initial query to a server by setting a value for the cursor 
parameter, it will simply use the link returned in the paging_metadata 
element to scroll the result set. This is the reason why I told in my 
presentation that servers would be allowed to implement their own 
pagination method, even from query to query.


Anyway, I think there is a solution enabling servers to implement their 
own pagination method by providing a single parameter. Since the cursor 
value is opaque, this means that the pagination strategy implemented by 
a server is completely unknown to clients. Right?! I mean, it could 
correspond either to a physical link to a storage area maintained across 
the queries or to a specific value of the key property supporting  the 
seek method.

The cursor value could also be (this is the idea) a codification of 
offset and limit information (maybe the sort criteria too, if any) . For 
example, in the following query, the cursor value is the Base64 encoding 
of "offset=100,limit=50":

*https://example.com/rdap/domains?name=*nr.com&cursor=b2Zmc2V0PTEwMCxsaW1pdD01MAo=**
*

Obviously, this is an example, servers are hopefully expected to 
implement an encoding/decoding method less breakable than Base64, maybe 
based on symmetric encryption.

This solution could also allow servers to change the pagination method 
without announcing anything to the clients.

Therefore, clients would only know the cursor parameter. Offset and 
limit parameters could be no longer used individually but, I guess, 
nobody would complaint about that.


What do you (and WG) think about?


Regards,

mario

>
> -George

-- 
Dr. Mario Loffredo
Servizi Internet e Sviluppo Tecnologico
CNR - Istituto di Informatica e Telematica
via G. Moruzzi 1, I-56124 PISA, Italy
E-Mail:mario.loffredo@iit.cnr.it
Phone: +39.0503153497
Web:http://www.iit.cnr.it/mario.loffredo