Re: [dnssd] CoAP resource discovery and DNS-SD

Toerless Eckert <tte@cs.fau.de> Sat, 14 May 2022 14:02 UTC

Return-Path: <eckert@i4.informatik.uni-erlangen.de>
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 23E6DC15E6D7 for <dnssd@ietfa.amsl.com>; Sat, 14 May 2022 07:02:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.651
X-Spam-Level:
X-Spam-Status: No, score=-1.651 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.248, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
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 ZcFhJmBk51Ww for <dnssd@ietfa.amsl.com>; Sat, 14 May 2022 07:02:19 -0700 (PDT)
Received: from faui40.informatik.uni-erlangen.de (faui40.informatik.uni-erlangen.de [131.188.34.40]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 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 4F234C1595E6 for <dnssd@ietf.org>; Sat, 14 May 2022 07:02:17 -0700 (PDT)
Received: from faui48e.informatik.uni-erlangen.de (faui48e.informatik.uni-erlangen.de [131.188.34.51]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by faui40.informatik.uni-erlangen.de (Postfix) with ESMTPS id 192C858C4AF; Sat, 14 May 2022 16:02:12 +0200 (CEST)
Received: by faui48e.informatik.uni-erlangen.de (Postfix, from userid 10463) id 031BB4EAEB1; Sat, 14 May 2022 16:02:12 +0200 (CEST)
Date: Sat, 14 May 2022 16:02:11 +0200
From: Toerless Eckert <tte@cs.fau.de>
To: Ted Lemon <mellon@fugue.com>
Cc: dnssd@ietf.org
Message-ID: <Yn+2Y78egBWD925Y@faui48e.informatik.uni-erlangen.de>
References: <Yn7nnX096f0LdonI@faui48e.informatik.uni-erlangen.de> <CAPt1N1n7Pd7yZ1jzBGMWCv-Vkf1iT_nLPmHrNYvDkwVjE7QmhA@mail.gmail.com> <Yn7wWNAeLWz/qZlG@faui48e.informatik.uni-erlangen.de> <CAPt1N1mWerc9ddoeZJ6WcPck_w5xe_7fkWK7NVWbDGgzXwN+Xw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAPt1N1mWerc9ddoeZJ6WcPck_w5xe_7fkWK7NVWbDGgzXwN+Xw@mail.gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/D6QvE-_l96Kj9UI2kgTgFfZcz4o>
Subject: Re: [dnssd] CoAP resource discovery and DNS-SD
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.34
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: Sat, 14 May 2022 14:02:23 -0000

To discover a service via mDNS is not not necessarily quite LLN friendly.

You need to query/reply for all the RR involved in a service, which is
if i remember AAAA, SRV, PTR, TXT and maybe CNAME. Admittedly
i have not tried to work out how many bits this is, but there is
also the question of how many packets this will end up being in the
widey deployed implementations and who takes care of minimizing/optimizing
that. So there is a cost to this more comples layering. RRs, messages, packets.

In coap, like in GRASP, we can map all necessary service elements into
a single message, so we know it is a single request/reply exchange.

Yes, i would definitely prefer to minimize the amount of multicast,
especially given how those LLN can really only flood them across
the whole network, but both DNS and COAP could be on par in that
department. 

Due to the proprietary nature of Thread i have not been able to figure
out how it proposes to instantiate and discover the server instances
of DNS or COAP that should be used. But thatss also where another
complexity can come in:

                                    coap/dns
                                    server                             coap/dns
      client .... 802.15.4-net .... border-rtr .... ent-networks ..... server
                                                       ...
                                                     service-server

The server we may want to discover on the client may not necessarily be
connected to the 802.15.4 network, but the enterprise network behind it,
(most simple designs would hope/expect for the service we want to use to
 be running on the border-rtr).

So, it seems to me i need some form of scoping of service/resource
request/replies from clients between those that should be only
resolved within the 802.15.4 network, and those that should resolve
(also) across the ent-network behind it. I am not quite sure how
to most easily do this, but off the top of my head it looks as
if i wanted some simple proxy function on the border router which
on a per-service/resource basis decides whether to forward the request
upstream to the coap/dns server in the enterprise network or not.
And with coap i can see how that proxy function is easily implemented,
and the concept of such a proxy is discussed in coap.

Replicating that functionality in DNS would be quite more complex i fear.

Cheers
    Toerless

On Fri, May 13, 2022 at 08:01:37PM -0400, Ted Lemon wrote:
> The registry/mapping problem is where we fell down. Why are you trying to
> use Core for this anyway? DNS-SD works fine—that’s what we’re using for
> Thread, for example. You can just do a DNS UDP query or use DNS Push rather
> than using multicast if you use SRP to update the DNS server.
> 
> On Fri, May 13, 2022 at 19:57 Toerless Eckert <tte@cs.fau.de> wrote:
> 
> > Thanks, Ted
> >
> > Any pointer to Kerry's work in this regard ? I was looking through her
> > expired
> > draft, but i didn't see anything getting to that exact point
> > (draft-doi-core-parameter-option looks like related, but i can't really
> >  make heads or tails out of it).
> >
> > So lets say:
> >
> > REQ: GET /.well-known/core?rt=<resource>
> >
> >      RES: 2.05 Content
> >      Content-Format: 40
> >      Payload:
> >      </b>;rt=<resource>;p=<prio>;w=<weight>;proto=<string>,
> >      ...
> >
> > I am just defining in the spec for my resource that it has additional
> > option
> > link-target attributes. p= for a numeric priority value, w= for a numeric
> > weight attribute and proto= for a string enumerating protocol details.
> > And these are the same parameters as what i'd use for the same resource
> > (oops: service) when using DNS-SD.
> >
> > It seems as if rfc6690 didn't actually create a registry for those
> > link-targets
> > but simply created rt= and if= link-targets and just created a registry for
> > the values of rt= and if=. Which raises the question if i could simply
> > specify p/w/proto to be normative in the context of the specific resource,
> > and if not whether those addtiional link-targets would have to be
> > specified as
> > updated to rfc6690...
> >
> > Cheers
> >     Toerless
> >
> > On Fri, May 13, 2022 at 07:22:41PM -0400, Ted Lemon wrote:
> > > We were never able to figure that out either. The mapping from Core RD in
> > > particular to DNS-SD is something that the DNS-SD working group actually
> > > pursued for a while (Kerry Lynn worked on this pretty heavily for about a
> > > year).
> > >
> > > On Fri, May 13, 2022 at 7:20 PM Toerless Eckert <tte@cs.fau.de> wrote:
> > >
> > > > Dear CoAP WG
> > > >
> > > > I am trying to figure out how to use CoAP discovery as specified in
> > RFC7252
> > > > (and expanded in rfc6690 and rfc7390),  but i can not figure out how
> > > > one would encode basic parameters of a resource, such as those
> > supported
> > > > in DNS-SD, rfc6763:
> > > >
> > > > When discovering more than one instance of a resource, such as
> > possible,
> > > > when using multicast discovery as on rfc7252, clients will have to
> > figure
> > > > out,
> > > > which instance of a resource to select. DNS-SSD has priority and weight
> > > > parameters associated with each instance. How would one describe/encode
> > > > such instance and weight ?
> > > >
> > > > When discovering one or more instance via DNS-SD, the discoering client
> > > > may further select the best instance in terms of interoperability,
> > > > functionality
> > > > and performance based on one or more key=value property pairs
> > describing
> > > > the instance. How is this done in CoAP ?
> > > >
> > > > Thanks a lot!
> > > >
> > > > Toerless
> > > >
> > > > _______________________________________________
> > > > dnssd mailing list
> > > > dnssd@ietf.org
> > > > https://www.ietf.org/mailman/listinfo/dnssd
> > > >
> >
> > --
> > ---
> > tte@cs.fau.de
> >

-- 
---
tte@cs.fau.de