Re: [regext] Benjamin Kaduk's Discuss on draft-ietf-regext-rdap-partial-response-13: (with DISCUSS and COMMENT)

Mario Loffredo <mario.loffredo@iit.cnr.it> Sat, 12 September 2020 18:16 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 76B313A0C89; Sat, 12 Sep 2020 11:16:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.847
X-Spam-Level:
X-Spam-Status: No, score=-2.847 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, NICE_REPLY_A=-0.948, SPF_HELO_NONE=0.001, 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 BhHFepHoctmc; Sat, 12 Sep 2020 11:16:23 -0700 (PDT)
Received: from smtp.iit.cnr.it (mx4.iit.cnr.it [146.48.98.151]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 972113A0CA2; Sat, 12 Sep 2020 11:16:21 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by smtp.iit.cnr.it (Postfix) with ESMTP id 19ABEB80336; Sat, 12 Sep 2020 20:16:20 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mx4.iit.cnr.it
Received: from smtp.iit.cnr.it ([127.0.0.1]) by localhost (mx4.iit.cnr.it [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sWtLh_VgsyKr; Sat, 12 Sep 2020 20:16:16 +0200 (CEST)
Received: from [192.12.193.108] (pc-loffredo.nic.it [192.12.193.108]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by smtp.iit.cnr.it (Postfix) with ESMTPSA id 7364FB8033E; Sat, 12 Sep 2020 20:16:16 +0200 (CEST)
To: Benjamin Kaduk <kaduk@mit.edu>
Cc: draft-ietf-regext-rdap-partial-response@ietf.org, regext-chairs@ietf.org, The IESG <iesg@ietf.org>, regext@ietf.org, Jasdip Singh <jasdips@arin.net>
References: <159967727061.8437.12421288079019560355@ietfa.amsl.com> <cb012ab6-ee51-0817-8c6f-750ea9eae80b@iit.cnr.it> <20200912023016.GX89563@kduck.mit.edu>
From: Mario Loffredo <mario.loffredo@iit.cnr.it>
Message-ID: <69cea97a-4488-e5d7-1104-b5f138939f4c@iit.cnr.it>
Date: Sat, 12 Sep 2020 20:13:04 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0
MIME-Version: 1.0
In-Reply-To: <20200912023016.GX89563@kduck.mit.edu>
Content-Type: text/plain; charset="iso-8859-15"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: it
Archived-At: <https://mailarchive.ietf.org/arch/msg/regext/wXWjQLN2Aq1mlZZuvyLdEIMjEx4>
Subject: Re: [regext] Benjamin Kaduk's Discuss on draft-ietf-regext-rdap-partial-response-13: (with DISCUSS and COMMENT)
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: Sat, 12 Sep 2020 18:16:26 -0000

Hi Benjamin,

thanks a lot for your quick response. My comments are inline.

Il 12/09/2020 04:30, Benjamin Kaduk ha scritto:
> Hi Mario,
>
> Also inline.
>
> On Fri, Sep 11, 2020 at 01:11:03PM +0200, Mario Loffredo wrote:
>> Hi Benjamin,
>>
>> thanks a lot for your extensive review. Please fidn my comments inline.
>>
>> Il 09/09/2020 20:47, Benjamin Kaduk via Datatracker ha scritto:
>>> Benjamin Kaduk has entered the following ballot position for
>>> draft-ietf-regext-rdap-partial-response-13: 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 to https://www.ietf.org/iesg/statement/discuss-criteria.html
>>> for more information about IESG DISCUSS and COMMENT positions.
>>>
>>>
>>> The document, along with other ballot positions, can be found here:
>>> https://datatracker.ietf.org/doc/draft-ietf-regext-rdap-partial-response/
>>>
>>>
>>>
>>> ----------------------------------------------------------------------
>>> DISCUSS:
>>> ----------------------------------------------------------------------
>>>
>>> As was the case for Murray, I'm unconvinced that I have understood what
>>> Section 3 intended to convey.  However, I am balloting Discuss because
>>> my current best understanding is for a statement that seems inconsistent
>>> with my understanding of how the partial response mechanism works.  In
>>> particular, how would the topmost objects be returned according to
>>> different field sets, if there's only a single query parameter and (I
>>> assume) all topmost objects are the results of the same single query?
>>>
>>>
>>> ----------------------------------------------------------------------
>>> COMMENT:
>>> ----------------------------------------------------------------------
>>>
>>> Thanks to the shepherd for noting that the examples have been through
>>> JSONLint!
>>>
>>> Abstract
>>>
>>>      The Registration Data Access Protocol (RDAP) does not include
>>>      capabilities to request partial responses.  Servers will only return
>>>      full responses that include all of the information that a client is
>>>      authorized to receive.  A partial response capability that limits the
>>>
>>> [There is perhaps some stylistic question of whether to describe the
>>> present state in the present tense vs. saying something like "prior to
>>> the mechanism defined in this document" or "as specified in [RFC7483".]
>>>
>>> Section 1
>>>
>>>      Currently, RDAP does not provide a client with any way to request a
>>>      partial response.  Servers can only provide the client with a full
>>>
>>> nit: will this age well?
>> [ML] :-)
>>> Section 2
>>>
>>>      The path segment defined in this section is an OPTIONAL extension of
>>>      search path segments defined in [RFC7482].  This document defines an
>>>
>>> It's not entirely clear to me in what sense it's accurate to say that
>>> this section "defines" a path segment.  (Perhaps RDAP path segments
>>> diverge from normal HTTP and generic URI path segments in this sense?)
>>> My current understanding is that we are defining an optional query
>>> parameter in the purest URI sense, which does not require a new path
>>> segment in the URI sense.
>>>
>>>      full response (Figure 1).  The field sets supported by a server are
>>>      usually described in out-of-band documents (e.g.  RDAP profile)
>>>
>>> nit: comma (and only one space) after "e.g.".
>> [ML] There is only one space after "e.g." in the XML version. Anyway,
>> I'll put the comma.
>>> Section 2.1
>>>
>>>      responses about the available field sets.  Such information is
>>>      collected in a new data structure named "subsetting_metadata"
>>>      containing the following properties:
>>>
>>> I assume this is a JSON datastructure, specifically?
>> [ML] OK. I'll specify "JSON data structure"
>>>      o  "availableFieldSets": "AvailableFieldSet[]" (OPTIONAL) an array of
>>>         objects, with each element describing an available field set.
>>>         Members are:
>>>
>>>         *  "name": "String" (REQUIRED) the field set name;
>>>         *  "default": "Boolean" (REQUIRED) whether the field set is
>>>            applied by default;
>>>
>>> Is it allowed to have more than one entry in the array set
>>> "default":true?
>> [ML] Obviously not. Should I furtherly explain that only one field set
>> must be applied by default? Isn't implicitly stated by the meaning of
>> "applied by default"?
> I think it's probably worth saying what the error handling is if more than
> one is set -- treat the whole thing as malformed, or pick one?
[ML] OK. I'll clarify that a server MUST define only one field set as 
default.
>>>         *  "links": "Link[]" (OPTIONAL) an array of links as described in
>>>            [RFC8288] containing the query string that applies the field
>>>            set.
>>>
>>> I suggest giving an example or a bit more detail as to exactly what
>>> structure/format is expected here; 8288 has a fair bit of meat to it.
>>> Ah, but this is covered in Section 2.1.2, so maybe just a
>>> forward-reference is enough.
>> [ML] I'll put the reference "(see Section 2.1.2)"
> Thanks!
>
>>> It would be good (either here or there) to
>>> give some indication as to which of "value"/"rel"/"href"/"title"/"type"
>>> are required/optional, though.
>> [ML] In Section 4.2 of RFC7483bis
>> <https://datatracker.ietf.org/doc/draft-ietf-regext-rfc7483bis/> is written:
>>
>> The "value", "rel" and "href" JSON values MUST be specified.  All other
>>      JSON values are OPTIONAL.
>>
>> Could be enough to report the same text?
> That would work, since presumably we don't want to make this document wait
> until that one is done.
[ML] OK. I'll add that sentence.
>
>>> Section 4
>>>
>>>      o  "id": the server provides only the key field: "handle" for
>>>         entities, "ldhName" for domains and nameservers.  If a returned
>>>         domain or nameserver is an Internationalized Domain Name (IDN)
>>>         [RFC5890], then the "unicodeName" field MUST be included in the
>>>
>>> nit: I suggest "also" or "additionally be included".
>> [ML] OK. I'll change it to "MUST additionally be included"
>>>      The "objectClassName" field is implicitly included in each of the
>>>      above field sets.  RDAP providers SHOULD include a "self" link in
>>>      each field set.  RDAP providers MAY also add any property providing
>>>      service information.
>>>
>>> Just to check my understanding: the "property" that might also be added
>>> here is a "field" that would be included in a given field set and
>>> corresponding query response?  (I don't know if "property" has
>>> RDAP-specific connotations that make it a better word to use here.)
>> [ML] it is a required property as defined in Section 4.9 of RFC7483bis
>> <https://datatracker.ietf.org/doc/draft-ietf-regext-rfc7483bis/>
> Sorry, I was trying to ask about "MAY also add any property providing
> service information" -- specifically, about how that is conveyed in the
> response.  (My assumption is just as a field of the topmost JSON object.)
[ML] The term "service information" is used there to identify other 
information than an object property like remarks, notices and other 
possible metadata.
>>> (nit?) I'm also not entirely sure that 'include a "self" link in each
>>> field set' is pedantically correct, as opposed to 'include a "links"
>>> field indicating the "self" link relationship'.
>> [ML] OK.
>>> Section 8
>>>
>>> I suppose it's always possible that by using a narrow field set a client
>>> would not get back some important piece of information, e.g., a modifier
>>> that restricts the scope of applicability of some information.  It seems
>>> fairly obvious that the onus for knowing what fields are possible and
>>> avoiding this scenario falls on the client, though perhaps it is worth
>>> also giving some guidance to the server to take this into consideration
>>> while defining field sets.
>> [ML] I'm convinced that the number and the content of the field sets
>> defined in an RDAP profile should be agreed between producers and
>> consumers. I expect that the field sets number and content will be the
>> result of a tuning process.
> I agree.  I am wondering if we should give advice to the producer, pointing
> out that if done badly, a "smaller" field set might omit critical
> information and lead the consumer to behave in a dangerous or unexpected
> way.
[ML] I think a similar sentence would imply a consequent clarification 
of the factors revealing that a field set is done badly.  I'm confident 
that the interaction between clients and servers will produce field sets 
with the right granularity.
>
>>>      Servers can also define different result limits according to the
>>>      available field sets, so a more flexible truncation strategy can be
>>>
>>> I'm not entirely sure I am understanding this correctly -- is it just
>>> saying (roughly) "when using the 'id' field set it's safe to use much
>>> larger page size than for the 'full' field set"?  (I didn't find a
>>> specific definition of "result limits" in RFCs 7482 or 7483.)
>> [ML] Yes, exactly. The value "result set truncated due to excessive
>> load" is presented among the values defined in Section 10.2.1 of RFC7483
>> for "Notice and remark Types". When a server returns such notice, it
>> means that server limits have been exceeded.
> I see now; thanks for the pointer and explanation.
>
>>>      implemented.  The new query parameter presented in this document
>>>      provides RDAP operators with a way to implement a server that reduces
>>>      inefficiency risks.
>>>
>>> Perhaps it's worth mentioning that in the face of unupdated clients
>>> these potential gains are not actually realized.
>> [ML] Could you furtherly explain this concept?
> If the server implements partial responses, but all clients do not, the
> server still has to spend resources producing full responses for all
> clients.  The efficiency gains and risk reduction seem to be proportional
> to the fraction of clients that support partial responses.
Yes, this is true. Anyway, I expect that servers will implement measures 
to discourage the massive submission of search queries requesting the 
full response. Moreover, I don't think that supporting partial response 
will be a big problem for clients because it consists merely in 
displaying less information than the full response.
>
>>> Section 9.1
>>>
>>> The one place we cite RFC 7481 does not seem to itself be a normative
>>> usage (though I can imagine that one does need to read it in order to
>>> build a complete system).
>> [ML] Do you suggest to insert it among the "informative References"? I
>> think that even if it isn't essential to implement the proposed
>> capability, I believe it's needful to achieve a comprehensive
>> implementation that takes into account the relationship between the
>> availability and the content of each fiedl set and the user access profiles.
>>
>> For this reason, I put it among the "Normative References"
> Your reasoning seems sound; please leave it where it is.
>
>>> Appendix A
>>>
>>>      Looking at the implementation experiences of partial response, two
>>>      approaches are observed:
>>>
>>> Looking at context from later in the suggestion suggests that this
>>> survey was not restricted to RDAP partial response, which might be worth
>>> mentioning.
>> [ML] OK. Could be enough to update the sentence as in the following?
>>
>> "Looking at the implementation experiences of partial response offered
>> by data providers on the web,  two approaches are observed"
> I think so; thanks.
>
>>>      o  The request of some fields might not match the client's access and
>>>         authorization levels.  Clients might request unauthorized fields
>>>         and servers should define a strategy for responding, such as
>>>         always returning an error response or returning a response that
>>>
>>> nit: I think this is more of "servers have to" than "servers should"
>>> (even though this strategy might just be "do whatever the existing code
>>> happens to do").
>> [ML] OK. I change that sentence as you suggest.
>>> Appendix A.1
>>>
>>>      o  Relevant entity object information is included in a jCard, but
>>>         such information cannot be easily selected because it is split
>>>         into the items of a jagged array;
>>>
>>> nit: I didn't find "jagged array" used in either RFC 7483 or RFC 7095;
>>> is is relationship to jCard specified somewhere else?
>> [ML] It is not a jCard specific term. It is a term generally used in the
>> programming languages to refer to an array of arrays of which the member
>> arrays can be of different sizes. The straightforward deserialization of
>> a jCard produces a jagged array.
> I see, thanks.  (Can you tell I mostly only program in C?)
>
>>>      The latter approach seems to facilitate RDAP interoperability.
>>>      Servers can define basic field sets which, if known to clients, can
>>>      increase the probability of obtaining a valid response.  The usage of
>>>
>>> nit: the "latter approach" seems to be an artifact of some text moves,
>>> as there isn't a recent comparison of two approaches in this section.
>>> ("Latter approach" also appears in the following paragraph.)
>> [ML] I'll replace "latter approach" with "the field sets approach".
>>
>>
>> Hope I forgot nothing.
>>
>> Looking forward for your reply to my comments and proposed updates.
> I appreciate your responses and updates; they look good to me.
>
> Thanks!

Please confirm me that no other changes are needed so I can submit the 
new version

Best,

Mario

>
> -Ben
>
> _______________________________________________
> regext mailing list
> regext@ietf.org
> https://www.ietf.org/mailman/listinfo/regext

-- 
Dr. Mario Loffredo
Systems and Technological Development Unit
Institute of Informatics and Telematics (IIT)
National Research Council (CNR)
via G. Moruzzi 1, I-56124 PISA, Italy
Phone: +39.0503153497
Mobile: +39.3462122240
Web: http://www.iit.cnr.it/mario.loffredo