Re: [Anima] DNS-SD in GRASP - draft-eckert-anima-grasp-dnssd-04

Esko Dijk <esko.dijk@iotconsultancy.nl> Wed, 23 November 2022 10:09 UTC

Return-Path: <esko.dijk@iotconsultancy.nl>
X-Original-To: anima@ietfa.amsl.com
Delivered-To: anima@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DF76FC14CEE7 for <anima@ietfa.amsl.com>; Wed, 23 Nov 2022 02:09:39 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 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, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, 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 (1024-bit key) header.d=iotconsultancy.nl
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 YB3I3k40qOMz for <anima@ietfa.amsl.com>; Wed, 23 Nov 2022 02:09:34 -0800 (PST)
Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2072f.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe12::72f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A039EC14F745 for <anima@ietf.org>; Wed, 23 Nov 2022 02:09:33 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TOqXydhCARLnvnOZ+rt1qjqI54N52TpGVU0UTFyTB4KDsWuWNlkYrZOeIsjcHbwKtgcvYarQRiID4DtKFqhGJ42bSRyXSAOkQgRmhBC138WgCG7WMp+Pk6ZGR7xnwXU1/d3hXONTkOp5uDS40Q/Vl0byGftHT/etYKadLO33PaP761/F6H22O0/U0SaALl0q+VHC2Yic5Bw0wflKAdy3fVfxSvrrZKNnXLgkEfwknUeiDWjXm9OvsJWfg6Tz8IgburIa7RNtkx4IKaGPv+fEhb7X/h44aeK0Orh62Y+KCcXOeUe4H+ia6NoarVgoQ3IuSfgjMw6U3FhXqZHqZP6qIg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=I/1E8buUReDeJThMecAsh+ACYs1d3gpTNLHvXxhbwDA=; b=E1G2BfaqeJXzHTSFCvYSvUEFueJ31HxFoiRCoU0xCpZMhG1qpirTbr6q2f9qqC6fw/I5hZO7iA0GdZC6y+lZsEddLBZBhlxtltPYtNZ1OQU8AMcxXPgHu+Dtnzygn1v7KQaFtMRZNOC8Z9pEyT9/Lu/Y7gh5HXBPox5jeaK2Qs+UqaRewIvkADxD8KB+pMB1l1T3kVHZxb6Yc02+ZgJdSkZDL3nxDIBHJjwIyRLxaxPEEZe0/7/RDm6/spgwMDx4yZLW6uWXUuO2rxktdzd6y+zc2Q1BsNXSZm5rJUVJkyF/xScYu7D9P7dSahQMLcbbKpf2BgyXqJFhHvZrVga98g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=iotconsultancy.nl; dmarc=pass action=none header.from=iotconsultancy.nl; dkim=pass header.d=iotconsultancy.nl; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iotconsultancy.nl; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I/1E8buUReDeJThMecAsh+ACYs1d3gpTNLHvXxhbwDA=; b=sFlLvPb7rVs0fwHWNZN/r3MVDS1aT7qNqu+dIatYZC2470IBr5YWfYyFQLLtZSk1l0eHQtoHy3R5nr1dS160psenb/r62u0IIHuE4dN3TJW6rc+ki3kQ6Yv+xmbw2n6/rE11SrNkPNJZiP4uZlUrllOXDqBRGtmrbKxY2JZ75gc=
Received: from DU0P190MB1978.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:3b9::20) by AS8P190MB1048.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:2ee::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.17; Wed, 23 Nov 2022 10:09:29 +0000
Received: from DU0P190MB1978.EURP190.PROD.OUTLOOK.COM ([fe80::90a1:12c9:de4a:6c26]) by DU0P190MB1978.EURP190.PROD.OUTLOOK.COM ([fe80::90a1:12c9:de4a:6c26%3]) with mapi id 15.20.5834.015; Wed, 23 Nov 2022 10:09:29 +0000
From: Esko Dijk <esko.dijk@iotconsultancy.nl>
To: Brian E Carpenter <brian.e.carpenter@gmail.com>, "anima@ietf.org" <anima@ietf.org>
CC: Toerless Eckert <tte@cs.fau.de>
Thread-Topic: [Anima] DNS-SD in GRASP - draft-eckert-anima-grasp-dnssd-04
Thread-Index: Adj+X9nyyMAzXB6aSeKFhxbR1ZpgSwATyJ4AABksQ2A=
Date: Wed, 23 Nov 2022 10:09:28 +0000
Message-ID: <DU0P190MB1978188F43CF89FF3194CBECFD0C9@DU0P190MB1978.EURP190.PROD.OUTLOOK.COM>
References: <DU0P190MB1978C2564FDEEA0F276A0602FD0D9@DU0P190MB1978.EURP190.PROD.OUTLOOK.COM> <c3802c11-b23e-ea34-07ee-8274162e4201@gmail.com>
In-Reply-To: <c3802c11-b23e-ea34-07ee-8274162e4201@gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=iotconsultancy.nl;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU0P190MB1978:EE_|AS8P190MB1048:EE_
x-ms-office365-filtering-correlation-id: a73ac93f-7cb7-4913-5905-08dacd3acefd
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 1ZVoJuCei1PW+Wb5DQQFmOdf7ZH6eSvBTRw9gmQtyeceNRojCUf0CHjDlEiAxF0rCkWQEm6MKMEGQldXxgNkLVCsJZJvRlOxPWIhzGJxGKOkv6/3XunZ99GEM4KuFgdPJ6z6Fk79DPT9qS/rysg2dZBOI10wTmkIFo6OnceaWPkGqhqwN9suBMXZ0KrfP+5HNTw+ylcy26EYiFlSreR28t+6kMZ3Z+uuVRnyyUfLHl0t14Qfu91P6MN66MDMfUNdy/nN4kV78wqiD+usnL9P0H6Bn+f0gACFFoNFOetzbn+BR0zAxs8vBLixOWKFIIa7tti/ABe1njHr943YGvLP2OjvEBaAM4S/nRkAv/yE+FkrQoxprgwZ1nmvqR5BaaNKeLvYozjgS1bMTaWjolzGTlocDJ2pC2uae1Zt/EdRuzz6S+lWYy+jqzgbXIcaHQMvHypxUpKcj8TBCNnyrsIvJjrUdt/gNeGf6Z58zplXgZ5HGHxkRQRWyivqFgRWWvLrwYMpMXH6E8r8RkuYPR0iCKZu7XGrzEJ2F63dZs03KL4qGREXZEIDhHVFJNrTrXfH8EM/oZ3lP+mU8RLPEeyyrjdhNXNf6Fo+jpZhpATd8Rr3/0bFg4N50JaCTiLKSAoJzt1ZKC8BTpBLrrqMyJVUi5BnKIdf3K6+KBDgMB23dYEbniLb2l8ev6KLKVps6yv56cJL3lh0Vk5SavPM3jEtl+xvZbq09kt/RVEedCOpUAA=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0P190MB1978.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230022)(376002)(39830400003)(396003)(366004)(346002)(136003)(451199015)(76116006)(44832011)(38070700005)(8936002)(41300700001)(33656002)(53546011)(186003)(83380400001)(110136005)(52536014)(55016003)(71200400001)(6506007)(2906002)(7696005)(316002)(9686003)(5660300002)(66946007)(66556008)(66446008)(66899015)(66476007)(64756008)(122000001)(4326008)(8676002)(966005)(38100700002)(86362001)(478600001); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: kzpmVvP5v8dL03e9sAHX7laaaSlFpYOWJLz9OQWqM9zEuZofZqDfZE8iHIx/ckznkqO89COcwtfAjvEZTlvACqUgLE8MfaHNSp+c/6o8hKfFDsjzRxIKytftYyZMpaOOla0lCi9PXQ40sjF87KJkBDQ7oDni7Rq7YcXZTMlKzzemhgk/6Uo3V4bv4veARDJ5i0ouo31B/qAP/I4dM00KynDacRUK+GCeTLtyZ8M+wzqUQO4Lsv1oZdtqW/jnSSRuolfnaAIQsN4UQmM5/nIiZarFbJyKD9h/cL253Laf96+HXA60TsNlhpkuezWU8qfULE5zKVYuu1ooCHrl6GPNGV9Peu0DLnGUACwv3Ly4VE/cDPHQw8PPTetrPJjEhKK65zojunOS1mroPdAgQKalndBl66epBaCEPLvC4UPh7rPbOp9iiV58zqerEYbvqwPO3jCSlzYiyf9hpmH/L8956tSmutw/bTNQB3Ca1OUWou8L7+ALWTqCeXKfAh3FfcBPtIGnHX+sKMQC6RiwQasLl+hKvPP9kAFQES+uFKEwZHuK3DLzGnp/uoVHMlLJlAoHBiRDa/sobqO1p2jpi5AHWXpUh6cXsFj8fbWC7vVMrUwG7bMzZM+zNU0v4sV9EvGFy7nFI1TD2kG+La2erUCGY+VMWdCirS1sO87Q+uZUunHmdG4+NCK5a0ECyPZqFdw95PW3qPUibf5f6CWk8uheoeF9VzJXhPwJTrLA+4jrIHmKITgpv0srCEkVhfFVVOpS5tFQZitUfYgJwMGOj8O2Z53tdViydsVceRBb2rXQwPgRMMrYudMXUNq6nOHRmUdyW0+JKkLB6q/eTtLWFh+o2sBatT5bsdiDeUKtXLmum14yiA/UE1F8vml/lAAa9ok9/H4leCGWKwVRPuQbSG1odom0oqluNGiyyz/j4rzWJVNi01rLS6CmMah17RSbos5IHWnH5l4q7+P3ZJl/7rVhEz1zJ2rPTJ3cVNhBj3Dlxa8zPNzs3l2eJQeEVtzUbI+NADyPmXfgINBi2NOyzaoLI5wNRmTm7dDYWHxNiQqk8Izok7LxbaAlmnXy514pD09UoxTi8HRVuMgSBnlvT6ZsJbsmU4pfVB6aOjeS6x7AkTNiJfk8limV9Lqlpyayrdt1c9XQRHS3ZTm4jVJjkSMp+3I3Mu1pWDoDOMlLl5W+uNVV+/aTaT6+XdZiB8TMcHJuCKj5iS0MYMsReU4HaPBza7EdDjyIVgBJVmVnk4UduvzyxeMPeBLueZGLAJ7CK/gHWF1ygzaJzRcsTTPDFcHEZ6Lv0gQCCKtSebZts2Rf3gkpLFL8sWnEhmYkQAkQaM8jxqHgve4tUkheccVadWH+s2g4eWWwBeZQ0AlBh03PLS6ShFdfxpRD8ediMQ0My+xCAD1mW+ANJVqEUANj94hTWREuglvLxCgCDzTQhypI55n+v1dZ5+9C6loO/xkeB+dtdFbQw1KqqiBuIdthEXCaYHkp8P/5u3r7bL9ajqiHFvqEBh2+3kpJ2rEyTidSvQL+O3Ics5jZZXgelFSH0XPKVFzGVgswu14RtNn2KNuzuwi5lCww6lQs1cNv8/AUb3Avn74U/A5NXC6I4qqrS8I7WWOMw/WhcDnDARnpfUPwbOL+h+cHur54ztBBiqTvYQr4ittx8Wy37r7jM7zjJNgYZg==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: iotconsultancy.nl
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DU0P190MB1978.EURP190.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: a73ac93f-7cb7-4913-5905-08dacd3acefd
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2022 10:09:29.0384 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 58bbf628-15d2-46bc-820b-863b6774d44b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: FOFOmzd6+ibf+3zzv/Uj70E5ClLvkFjGAGLsTqjQVRwksfrie7HfJ7WZwFkr4mGIFzsAcu4Q5qaRbTCEWME9t1LNdFd63hzBlecnhqsF7gI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8P190MB1048
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima/mv90m9RItyfha0r7UvipOUFzpek>
Subject: Re: [Anima] DNS-SD in GRASP - draft-eckert-anima-grasp-dnssd-04
X-BeenThere: anima@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Autonomic Networking Integrated Model and Approach <anima.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/anima>, <mailto:anima-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/anima/>
List-Post: <mailto:anima@ietf.org>
List-Help: <mailto:anima-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/anima>, <mailto:anima-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Nov 2022 10:09:40 -0000

Hello Brian,

> GRASP is a CBOR-based protocol and the values of GRASP objectives MUST be in CBOR.
Yes, I was also thinking about such a solution. You could define an objective 'service announcement' and include a CBOR byte string there that encodes one or more advertised services in today's DNS(-SD) format. And a pure-GRASP element such as distance/range to all these services can be additionally encoded in CBOR. Similarly an objective 'service query' is defined, with same CBOR byte string encoding the Question(s).

> ... That's a substantial reduction in complexity.
True, for the GRASP node that doesn't have to include the DNS parser. And for the programmers of it :)   But another kind of complexity comes in return, that is, documents and format definitions in the IETF (specifically now here in the ANIMA WG). It creates a mapping of DNS onto CBOR format that is not 100% complete. And the documents hint at future extensions to include features of DNS to make it more complete, which means more documents, while the basic DNS format already has all these things. Both formats may diverge in subtle ways that will only emerge later. But I do understand the desire to 'modernize' the DNS format; a similar effort is done in CoRE to encode a URI as a CBOR structure which avoids a node having to do URI parsing. (It's 'preparsed' so to speak.) But it did lead to a lot of discussions, iterations, and unexpected semantic problems in that case.

> ... they had no choice, but do we seriously want to force that complexity onto constrained nodes?
Some constrained nodes do include DNS-SD; e.g. in OpenThread the optional DNS client has all this and looks like ~10KB compiled on an embedded platform. It's still an impressive amount of source code though.
So I'm trying to establish what is the constraint on an ACP-node here, probably not flash size, but rather wanting to avoid DNS code complexity which might open up opportunities for error and (therefore) potential attacks?

> What the draft does is *centralize* the lookups and the complexity. It gives the distributed clients a central place to do lookups for them.
The draft says "Future work can also define DNS-SD <-> GRASP gateway functions.", so a centralized gateway seems not in scope? (Gateway like GetDNSSD2.py is implementing ...? )
It also says "Also, the document allows for automatically discovering DNS-SD servers." which to me reads as the ACP-node uses GRASP to find a DNS(-SD) server and then it can use that server in the classic way. Similar to how you discover an NTP time server and then use that server in the classic way.
My strong impression of the draft is that it defines an mDNS-like lookup of services, which services can then be used in the way they're supposed to. Any node on the ACP could offer a particular service, like NTP, DNS, Radius, etc and the distributed discovery then helps to find one or more (nearby) instances of a wanted service. That doesn't look centralized to me, but maybe other authors could chime in.

> Flooding is a bad idea at that scale. It's a weakness in the GRASP model and is the motivation for work like draft-ietf-anima-grasp-distribution, but we aren't done with that yet.
Indeed this was one of the motivations for the dnssd WG "SRP" protocol, e.g. in context of constrained mesh networks with potentially 100s of nodes, to avoid the all-to-all communication model of mDNS.
So the draft may emphasize some scalability recommendations, like only advertising a few key services needed to bootstrap the system (NTP, logging, Radius, central DNS server, ... ) and not that every ACP-node starts advertising a bunch of services. (As that wouldn't scale.)

Regards
Esko

-----Original Message-----
From: Brian E Carpenter <brian.e.carpenter@gmail.com> 
Sent: Tuesday, November 22, 2022 21:14
To: Esko Dijk <esko.dijk@iotconsultancy.nl>; anima@ietf.org
Cc: Toerless Eckert <tte@cs.fau.de>
Subject: Re: [Anima] DNS-SD in GRASP - draft-eckert-anima-grasp-dnssd-04

On 22-Nov-22 23:57, Esko Dijk wrote:
> Hi all,
> 
>  From a DNS/DNS-SD background and interest I started looking into draft-eckert-anima-grasp-dnssd-04.  Also saw some earlier list discussion on this topic (GRASP + DNS-SD).
> 
> It looks like the draft mainly aims to provide a “multi-hop mDNS like functionality over an ACP by using GRASP” with unsolicited (flooded) service announcements, plus service queries. That looks quite useful to have (looking at draft-eckert-anima-services-dns-autoconfig-02 for the motivation for this.)
> 
> First question is, why do we want to define a separate GRASP i.e. CBOR format for the DNS(-SD) information? 

That's an easy one. GRASP is a CBOR-based protocol and the values of GRASP objectives
MUST be in CBOR. Of course, exactly how the DNS information is respresented in CBOR is a matter of design choice. I'll leave Toerless to explain the choice that he proposes.

I'll just say that it wasn't too hard to implement it in Python, which is of course a very natural language for expressing JSON-like structures. If you want to see how I chose to do it, please see https://github.com/becarpenter/graspy/blob/master/ASA-examples/GetDNSSD2.py

Starting at line 203, it fetches the PTR record, then looks for SRV records. If it finds any, at line 235 it parses SRV records to extract the fields, retrieve relevant A and AAAA and TXT records, parse them, and bundle the results into a single JSON-like object.

Also see https://github.com/becarpenter/graspy/blob/master/ASA-examples/AskDNSSD2.py for the other end of a GRASP transaction. That end (the client, if you like) doesn't need to understand or parse the DNS RRs at all, just the JSON-like object. That's a substantial reduction in complexity.

> For example in CoRE WG for constrained nodes currently the draft draft-ietf-core-dns-over-coap-01 defines the re-use of the DNS format and no specific redefinition of this format as CBOR. And this intends to work for constrained nodes (like e.g. ACPna?)   So if we still want to use a CBOR based format we should have a clear motivation for this. (I understood there may be some concerns on code size of the DNS format parser?) 

Exactly. I suggest that that something like Toerless's format would be ideal, with a server like my GetDNSSD2 doing the hard work for a whole crowd of constrained nodes. (I'm not of course suggesting Python for that, more likely Rust would do the job.) The transport doesn't have to be GRASP, of course (but I happen to like it :-).

> And ideally in case CoRE WG or another WG does start to define a CBOR-based DNS format (there was talk about this at IETF 115, opportunity for even more compact representations) then such format would ideally be equal to the one carried in GRASP, I think. Otherwise we will have so many different formats!

Yes.
> 
> Re-using the existing DNS formats will save a lot of redefining things, now and in the future. If there are worries that some DNS-SD features (like e.g. ‘_sub’)  are too complex for ACP-nodes then the draft could focus on a particular constrained ‘profile’ of DNS-SD that rules out such constructs. So, a generic IETF-wide new encoding of DNS-as-CBOR is maybe useful, but doing this for GRASP specifically? I have some doubts here.

I disagree. DNS-SD in particular is a very baroque way of using multiple DNS RRs to express information that should be unified. I don't at all blame the DNS-SD team for doing this, they had no choice, but do we seriously want to force that complexity onto constrained nodes?
  
> Second question is, do we need to better motivate in the draft the 100% distributed nature of the service discovery mechanism? 

I think that's a bit beside the point. What the draft does is *centralize* the lookups and the complexity. It gives the distributed clients a central place to do lookups for them. It's intrinsic to GRASP that the central lookup, GetDNSSD2 in my implementation) could in fact be duplicated for redundancy, but one GetDNSSD2 could support hundreds of AskDNSSD2 clients.

> Since the dnssd WG is now moving towards more centralized approaches, avoiding mDNS and avoiding multicast/flooding: using Service Registration Protocol (SRP). In this solution  there are 1 or a few SRP Registrars to which nodes can register their service(s); and DNS clients may discover those services again using (unicast) DNS queries to one of the SRP Registrars. 

I wasn't aware of that. I don't think it changes the argument though; it just means that an SRP Registrar would be the ideal node to host a GetDNSSD2 instance.

> Perhaps one motivation is that in the bootstrap scenario, no SRP Registrars are defined yet so hence SRP cannot be used. And the case of multiple SRP Registrars requires automatic sync’ing between Registrars which is complex / not suitable for an ACP. And a single SRP Registrar could be possible but is then a single-point-of-failure and nothing works if this drops out.

I'm not sure. Getting the first GetDNSSD2 instance up has the same problem as getting the first SRP Registrar up, I suspect.

> Third question, what if every ACP-node starts flooding some service(s) – is that scalable to 100s or 1000s of nodes? Maybe we want to avoid this situation. It wasn’t clear to me yet if such use cases are intended. E.g. draft-eckert-anima-services-dns-autoconfig-02 mentions “SSH server” as a service which is what every ACP-node would have.

Flooding is a bad idea at that scale. It's a weakness in the GRASP model and is the motivation for work like draft-ietf-anima-grasp-distribution, but we aren't done with that yet.

Regards,
     Brian