Re: [dnssd] Second WGLC for draft-ietf-dnssd-srp

Ted Lemon <mellon@fugue.com> Tue, 23 August 2022 02:31 UTC

Return-Path: <mellon@fugue.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4BA9EC14F733 for <dnssd@ietfa.amsl.com>; Mon, 22 Aug 2022 19:31:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.904
X-Spam-Level:
X-Spam-Status: No, score=-6.904 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fugue-com.20210112.gappssmtp.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OUQ36wKdq9vt for <dnssd@ietfa.amsl.com>; Mon, 22 Aug 2022 19:31:01 -0700 (PDT)
Received: from mail-qv1-xf2a.google.com (mail-qv1-xf2a.google.com [IPv6:2607:f8b0:4864:20::f2a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8317BC14F6EC for <dnssd@ietf.org>; Mon, 22 Aug 2022 19:31:01 -0700 (PDT)
Received: by mail-qv1-xf2a.google.com with SMTP id y4so9608568qvp.3 for <dnssd@ietf.org>; Mon, 22 Aug 2022 19:31:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fugue-com.20210112.gappssmtp.com; s=20210112; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:from:to:cc; bh=iLQh9mYyU9Xjdt2Bk2oOIUjU7hYeo3OF0iN24nXEeBA=; b=3wZobWRdZplJn5rjakCaCiAq361CPGr/iFiWTtc/J8zxfa9jQEpViGx+iP9omBEvX/ +EafldcTWWbKIeSo8nMYaxq+UUdX6iyJ9CoG2WM6lDhAeTVeSOcUe/V7ZdYhfjyNyh3B 2IMlOup2O/CR+oUscYse2jokhnXwfk2fD2r+Dg/VMvB5OMizoSn3fwnsx527d3LWSRcr oRhpcxyHGxMUNRhcETbcPom9dpEgbQLWY4R/lg+FF0eszIWLHnXs5+sPMH1l61Qg8awP uJMY+SDJRptGbeCBRXCrsqsVflDw83oYMPigmg2ByN53odPp+Y+fMc9CC3rCd1FXrBmQ waxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:x-gm-message-state:from:to:cc; bh=iLQh9mYyU9Xjdt2Bk2oOIUjU7hYeo3OF0iN24nXEeBA=; b=7gAM3ydYjMSaL2z3qB/D5Y2vi85OiLyWd8+r4CSmCOXZVQDwVzktydJAaABUSJ/bCn 91s0wFNqQIUajdwKp4N4c1iPtXRDo5BZ1fpsmm4vnjmGuRV34dsDGvnuMpz6ev02iww4 2gBFmkyx+3G5FLetN4BcCJsQHB0UTsn8zDa8L5on2R2CBGXqhTJDCGgPZ9rbyKzCl+Nx 8TpoTXoe9nmIaS7U3E5bApGpMyistVsUq8fPJI2Nz5qCe/Zr8dkmAUGoSBeDlqN7F2/3 6W6iSpsQuY1qaUulfel1nZux/W0Yfpa2tkAh6jjsHUwlcq9s9YR03X+o+9hvxhSBt7Di WwSA==
X-Gm-Message-State: ACgBeo1gcmuu0x1VDHMidKtoAGpcgQ16UjJEiskIAtrvC66KbFdNhfG+ KikXB30Kgz3jS+bZt1UwqaPLuA==
X-Google-Smtp-Source: AA6agR6HFZ2WsXhPuI+onKof56VZe/o54xk/OI4rq98yk8wlua1XOq7wDEmmPS8sDW9v1tlHYt6t7Q==
X-Received: by 2002:a05:6214:1c0b:b0:495:f3f9:6714 with SMTP id u11-20020a0562141c0b00b00495f3f96714mr18514860qvc.19.1661221860122; Mon, 22 Aug 2022 19:31:00 -0700 (PDT)
Received: from smtpclient.apple ([2601:18b:300:3380:7551:1481:6815:9126]) by smtp.gmail.com with ESMTPSA id g18-20020a05620a40d200b006bb9e4b96e6sm12629317qko.24.2022.08.22.19.30.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 22 Aug 2022 19:30:59 -0700 (PDT)
Content-Type: multipart/alternative; boundary="Apple-Mail-5279EEE6-CF24-49AA-A5CF-F6A179FE8B18"
Content-Transfer-Encoding: 7bit
From: Ted Lemon <mellon@fugue.com>
Mime-Version: 1.0 (1.0)
Date: Mon, 22 Aug 2022 22:30:59 -0400
Message-Id: <91DC7074-E2EE-4061-8A24-B0A750F6CA60@fugue.com>
References: <DU0P190MB197835A85B023743CD512899FD719@DU0P190MB1978.EURP190.PROD.OUTLOOK.COM>
Cc: David Schinazi <dschinazi.ietf@gmail.com>, DNSSD <dnssd@ietf.org>
In-Reply-To: <DU0P190MB197835A85B023743CD512899FD719@DU0P190MB1978.EURP190.PROD.OUTLOOK.COM>
To: Esko Dijk <esko.dijk@iotconsultancy.nl>
X-Mailer: iPad Mail (19G82)
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/_x6cIpxzRcEmFkKkbBpmOGYxISA>
Subject: Re: [dnssd] Second WGLC for draft-ietf-dnssd-srp
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 23 Aug 2022 02:31:04 -0000

I’m somewhat worried about this change because e.g. link-local addresses in Thread meshes are not actually reachable by all nodes in the mesh, whereas mesh-local addresses are. So if we say “link-local” here, we’re explicitly not saying “mesh-local.” Is that what we want?

Sent from my iPad

> On Aug 22, 2022, at 9:00 AM, Esko Dijk <esko.dijk@iotconsultancy.nl> wrote:
> 
> 
> PS one minor comment still on 2.3.1.3: it mentions “link-scope” but I think “link-local scope” would be even better here.
>  
> Esko
>  
> From: Esko Dijk 
> Sent: Thursday, August 18, 2022 15:16
> To: David Schinazi <dschinazi.ietf@gmail.com>; DNSSD <dnssd@ietf.org>
> Subject: RE: [dnssd] Second WGLC for draft-ietf-dnssd-srp
>  
> WG members,
>  
> I read the document and believe it is almost ready for publication. If the below open issues would be resolved it would be ready for publication IMO.   After the open issues I also include here a list of editorial items/nits/improvements that should be considered but can equally well be fixed during the RFC editing phase. I.e. the editorial items don’t impact the WG’s completion of the document I think.  I don’t see any big changes needed, it’s all clarifications and minor fixes.  Another WGLC would certainly not be needed! Rather I’d like this document to proceed quickly if possible.
>  
> For constrained wireless mesh networks, this specification will be a key element for enabling service discovery in a lightweight manner while still integrating with the existing “mDNS ecosystem”. Thread networks are a good example of this.
>  
> Regards
> Esko
>  
> *** Open issues
>  
> 2.2.1
> “The Service Instance Name MUST be referenced by one or more
>       Service Discovery PTR records, unless it is a placeholder service
>       registration for an intentionally non-discoverable service name.”
> -> This bit is a fairly detailed requirement, with a hard-to-grasp exception case also. Why not include such requirements only in 2.3.x which anyway has all the formal rules? I thought 2.2.1 was more like an intro sketching at high level what it looks like, and 2.3.x has details. The MUST requirement is already present in 2.3.2.
> The exception case seems not listed there – is that a bug?
>  
> “The SRP requestor SHOULD follow the advice given in Section 5.5.2 of [RFC8766]” -> this automatically makes RFC 8766 a normative reference, per the IETF rules for that. (Even if it was a MAY this would be the case. The point is that an implementer OPTIONALLY will use the rules and if so, 8766 becomes normative on how to do these rules. ) So, ok to make RFC 8766 normative?
>  
> 2.2.3
> “so there is no need for the server sending the SRP Update” -> “no need for the SRP requestor” ? “server” seems wrong here. Sorry this is almost a nit but I don’t think we should rely here on reader’s internal autocorrect…
>  
> 2.2.5.2
> “So for instance, it might try
>    host.service.arpa, then host-1.service.arpa, then host-
>    2.service.arpa, then host-31773.service.arpa.”
> -> here the domain should be “default.service.arpa”? If so, it must be fixed to avoid interpretation errors (does the implementation also need to be fixed for this?). If not, then there’s a bunch of clarification missing why “default” can be omitted here. (But I assume that doesn’t apply here.)
>  
> 2.2.5.4
> “Although [RFC2782] requires that the target name in the SRV record
>    not be compressed, an SRP requestor SHOULD compress the target in the
>    SRV record.”
> -> This means RFC 2782 is formally Updated. The draft should indicate this in the usual IETF way at the top as “Updates: 2782”.
>  
> 2.2.5.5.1.
> The Method 2 of only removing the Host record is still a bit unclear – as explained in my previous email about “Host instructions with no address”.
> Text says “Therefore, it is sufficient for the requestor to send the Host Description Instruction” but the latter requires a “Service Description Instruction” to be present which contradicts the stated.
>  
> 2.3.1.3
> Last bullet - See previous email on “Host instructions with no address” ; it would seem we do have a case where the Service Description Instruction can be absent in the SRP Update – if lease-time=0.  All the host’s services would then get auto-removed.
>  
> 2.3.5
> “and can be either SUCCESS or SERVFAIL” ->
> In the IANA registry it’s listed as NoError instead of SUCCESS. RFC 1035 calls it “No error condition”. So we could adopt ‘NoError’ ? (Since the original spec doesn’t use CAPS for the name)
>  
> 4.1
> See section 11 ref update.
>  
> “SRP registrars SHOULD also track a lease time per service instance”
> -> this seems problematic to have as a ‘SHOULD’ because you can’t count on the SRP Registrar doing it properly.
> E.g. if this is not done, you could get the following situation:
>  
> At time t=0, requestor registers service X with lease = 10 mins
> At time t=5 min, requestor registers service Y with lease = 8 hours
> At this time the Registrar extends the life of the host and all its services to 8 hours (since it doesn’t track lease time per service instance)
> (Requestor expects at time t=10, that service X will time out)
> At times t=10 min – t=8 hours, service X remains in the Registry unintentionally.
>  
> So better is to either do it (MUST) or don’t do it at all. In the first case, partial updates like in the example above and below are possible. When not doing it, partial updates should typically be discouraged since it gets tricky to get it right.
>  
> Another example of ‘partial update’ enabled – this situation works even when the SRP Registrar doesn’t track lease time per service :
>  
> requestor registers service X at time t=0 for a lease time of 8 hours ;
> at t=1 hour it registers service Y for a lease time of 1 hour.
> at times t=1 to 2 hours, both services X/Y are active. And at  t=2 hours, both services X/Y and the host will time out at the same time if the requestor doesn’t renew before that.
>  
> So in this case the first lease time 8 hours applies to the host and to service X, and the second 1-hour lease time applies to the host and to service Y, not directly to service X (which still has 7 hours to go) but due to the host removal service X is also removed at time T=2 hours.
>  
> What is perhaps missing/unclear in the spec if the SRP requestor is even allowed to do such fractional updates where the SRP Update doesn’t contain all the registered services.  I don’t think this is mentioned anywhere.
>  
> “The times may be
>    shorter or longer than those specified in the SRP Update; the SRP
>    requestor must honor them in either case.”
> -> Is it an idea to also require (“SHOULD”) a configuration mechanism here just like for the TTL to set a Min and Max ?  For example, in a network with sleepy devices a longer allowed lease time Max could be configured on the SRP Registrar.
> And if a network is getting busy with registration traffic, the Registrar could be reconfigured to have a longer Min lease time.
>  
> 8.1
> Should we say anything about the subdomains under “service.arpa”? In this document we use “default.service.arpa”, but what about in the future when someone wants to use “myname.service.arpa” etc ? Is there a registry, or is an RFC needed to define these names?
> Maybe this is more of a question than an open issue for the document.  But if we know how this is handled we could just mention it briefly.  I had a case in the past in IETF where a registry was forgotten where it would have been handy.
>  
> 11.
> Ref update https://datatracker.ietf.org/doc/html/draft-sekar-dns-ul-03  by https://datatracker.ietf.org/doc/html/draft-ietf-dnssd-update-lease-02
>  
> 12.
> RFC 8310 is informative, however it defines a profile that updates 7858 normatively. So shouldn’t it be in ‘normative’ section 11? If not, does that mean that nothing of the profile of 8310 is used in any implementation?
> (Maybe it doesn’t matter much, since 7858 is normative and that one is being automatically updated by 8310 whether we like it or not.)
>  
> RFC 1035 needs to be normative – impossible to implement SRP without using e.g. the record formats defined there.
> Same for 2782 (need SRV records to implement), and 2181.
> (Again I may be wrong here – maybe 2181 is automatically normative if we make 1035 normative and it doesn’t matter where it’s placed.)
>  
>  
>  
> *** Improvements/nits/editorial
> Entire doc
> “SRP Update” / “SRP update” used interchangeably without apparent reason(?)
>  
>  
> 1.
> First occurrence of “registrar” does not define the term. There’s also no terminology section to look it up. This term should be defined in Section 1 ideally. Section 2.0 doesn’t really define it either, it only mentions it in terms of “most likely”.
>  
> 2.
> “SRP requests” -> better to use SRP Updates here, since “SRP requests” is only used once so is probably not the intended term. Or, “SRP Update requests”.
>  
> 2.1.1
> Mention “default registration domain” first and then calls it “default registration zone”. Is this correct? 6763 calls it only “domain”.
> Nit: “using SOA queries [RFC8765]” -> it would be good to refer to a specific section here, e.g. 6.1
>  
> 2.1.3
> “The reason for these different assumptions” -> “The reason for these different variants”
> Nit: The standalone words “power” can all be changed to “energy” to be more correct.
> “By requiring the use of TCP,” -> clarify that this applies to full-featured hosts only. Is that intended, or do constrained devices also require TCP?
>  
> 2.2
> “We will discuss … and how to maintain the information … “ -> part of the “maintain” part is in section 4, so it’s a bit strange to announce it here as part of 2.2.x. Maybe add a forward pointer to 4 here also.
>  
> 2.2.3.1.
> Last bullet -> add “.” at end
>  
> 2.2.4
> “TSIG protocol” -> add informative reference to [rfc8945]
>  
> 2.2.4.1
> “using DNS-SD Registration protocol” -> “using the DNS-SD Service Registration Protocol”
> “First-Come First-Serve” -> “First-Come First-Serve (FCFS)” – there’s a need to introduce the acronym here
>  
> 2.2.5
> Title “Service Behavior”  -> shouldn’t this be “SRP Requestor Behavior” ? Since we just before talked about “registration service” the term “service” here is unclear.
>  
> 2.2.5.1
> “"factory reset."" -> “"factory reset".”
>  
> 2.2.5.2
> “Service Description Records” -> set ‘R’ to lowercase
>  
> 2.2.5.3
> “ The lifetime of the DNS-SD PTR, SRV, A, AAAA and TXT records [RFC6763] uses the LEASE field”
> -> we could clarify that it also holds for other record types. E.g. for everything that’s not KEY, the LEASE field is used.
> Since 2.2.1 specifies that other record types may be used for Service Description and 4.1 specifies this too. Maybe it’s enough we say here “DNS-SD PTR, SRV, A, AAAA, TXT and other non-KEY records” or give a pointer to 4.1.
>  
> 2.2.5.5.2
> “these will be seen as a single Service Description Instruction” -> could clarify what “these” refers to here. I didn’t immediately parse it. I assume it refers to both mentioned *-RRset updates. So “these updates will be seen … “
>  
> 2.3.1.3
> “hostname being updated by this update” -> more correct seems “hostname being updated by this instruction”.
>  
> 2.3.2
> “Every Service Description
>    Instruction must have that Host Description Instruction as the target”
> -> MUST
>  
> “The target of the SRV record in every
>    Service Description Instruction MUST be the single Host Description
>    Instruction”
> -> “ … MUST be the hostname used in the single Host Description Instruction”  (more correct)
>  
> “RCODE=REFUSED”
> -> for style consistency, call it “REFUSED RCODE”.
>  
> 2.3.3
> “present in the Host Description to which the Service Description refers”
> -> “present in the Host Description Instruction to which the Service Description Instruction refers”
>  
> 2.3.6
> “In order for the registrar
>    to add a reverse mapping update, it must be authoritative for the
>    zone or have credentials to do the update.”
> -> “the zone” here is a bit unclear. We could say “the associated zone” to indicate the zone that’s to be used for the reverse mapping update? Without going into unnecessary details.
> Otherwise it could mean “the zone of the SRP Update” which isn’t intended I think.
>  
> “The registrar may also have a dictionary of names”
> -> MAY
> Making it normative is better here to force a requestor implementation to consider this case of (unexpectedly?) getting RCODE YXDOMAIN for a valid SRP Update.
>  
> 4.1
> Section title should also mention the “lease time” concept – it is such an important part of this section.
> E.g. “Lease Time and Stale Data Cleanup” or “Cleaning Up Stale Data and Lease Time”
>  
> 5.1
> “validation must be enforced by every router on the path from the
>    Constrained-Device Network to the unconstrained portion of the
>    Network”
> -> it’s strange this this only considers constrained-network scenarios. Needs some rewording e.g.
> “validation must be enforced by every router on the path from any potential SRP requestor to the SRP registrar.
>    In case of a router that is a constrained device, this validation is recommended but not required.”
>  
> Perhaps 6lowpan Routers generally won’t validate all this; while 6lowpan Border Routers could do more extensive validation.
>  
> 8.2
> Second paragraph -> still a grammar error in there
>  
> 8.3
> Second paragraph -> same grammar error. There’s also an extra dot ‘.’ After <domain> here and not in 8.2, why’s that?
>  
>  
>  
>  
>  
> From: dnssd <dnssd-bounces@ietf.org> On Behalf Of David Schinazi
> Sent: Tuesday, August 9, 2022 00:45
> To: DNSSD <dnssd@ietf.org>
> Subject: [dnssd] Second WGLC for draft-ietf-dnssd-srp
>  
> Hi DNSSD enthusiasts,
>  
> As promised during our meeting at IETF 114 two weeks ago, we are issuing a second Working Group Last Call (WGLC) for draft-ietf-dnssd-srp. To remind folks of the timeline, we had our first WGLC for this document in July 2021. That WGLC was successful in establishing WG consensus in publishing this document, but did expose some issues that needed to be resolved before publication. The authors then did a first round of addressing comments in October 2021 and another in July 2022. The authors now think that all comments received during the original WGLC have now been addressed. Since so much time has passed, we're having a full second WGLC to give everyone an opportunity to read the document with fresh eyes. This WGLC will last for two weeks until 2022-08-22 at 23:59 UTC. Please let us know if you have any remaining concerns with this document, especially if you had commented on the previous WGLC with concerns that you wanted to see resolved.
>  
> The latest draft is available on the datatracker:
> https://datatracker.ietf.org/doc/draft-ietf-dnssd-srp/
>  
> Please send responses to the DNSSD list as replies to this email.
>  
> Thanks,
> David and Chris
> _______________________________________________
> dnssd mailing list
> dnssd@ietf.org
> https://www.ietf.org/mailman/listinfo/dnssd