[Anima] Re-using the constrained Join Proxy solution defined by Thread
Esko Dijk <esko.dijk@iotconsultancy.nl> Sat, 06 December 2025 14:15 UTC
Return-Path: <esko.dijk@iotconsultancy.nl>
X-Original-To: anima@mail2.ietf.org
Delivered-To: anima@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id A666D967226A for <anima@mail2.ietf.org>; Sat, 6 Dec 2025 06:15:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=iotconsultancy.nl
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FtIyyjP1r-zo for <anima@mail2.ietf.org>; Sat, 6 Dec 2025 06:15:24 -0800 (PST)
Received: from dane.soverin.net (dane.soverin.net [IPv6:2a10:de80:1:4091:b9e9:222e:0:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id CADAB9672263 for <anima@ietf.org>; Sat, 6 Dec 2025 06:15:24 -0800 (PST)
Received: from smtp.soverin.net (unknown [10.10.4.74]) (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 dane.soverin.net (Postfix) with ESMTPS id 4dNqyY48zRz19Wc for <anima@ietf.org>; Sat, 06 Dec 2025 14:15:17 +0000 (UTC)
Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.99]) by soverin.net (Postfix) with ESMTPSA id 4dNqyY0qqfz3X for <anima@ietf.org>; Sat, 6 Dec 2025 14:15:17 +0000 (UTC)
Authentication-Results: smtp.soverin.net; dkim=pass (2048-bit key; unprotected) header.d=iotconsultancy.nl header.i=@iotconsultancy.nl header.a=rsa-sha256 header.s=soverin1 header.b=lXSD6M+m; dkim-atps=neutral
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iotconsultancy.nl; s=soverin1; t=1765030517; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=BW3o6z2jAFuCkXx10u44ppAc59EUiFfs/d0iBG/6H0I=; b=lXSD6M+m4m2dNQc0n9abIrXUHODDDNkRVZ7hs6nkTeXihGG/zBqs2byBYDas1f33PkRiNk LGC2SsA3teRThUrWgE9B7Czg341cxWjR+I14VehCFgJci0gGj35fViGwsLXuwj4f80eH4b WmvasyEjkfJs1d1euhQcTLisrSx5xSdC4mi3AUmEwVKdQsnHuCShr+eYeQkBQexMGM5LYM 6at5+n7o8C0SGiyia0RUeWuX7faehUmHiUqV4hZRhP7D2jafSdwJispGm+T4vJb1CzxOVY uCnnZTGZMq/dO7nHMT1sbjriLPXb76yvIto7SRd6d00A3fnJLoLo+QiYdxt4kQ==
X-CM-Envelope: MS4xfC+jRY74gHxch8Li99j4vwQxl/D+4cPvJ/2rsQds/C3aanGfcK1HuKRbbiJJizsgLl9zF06eHZGJsl9AeLirHi8NZRrOXvlSHIM1OV7tbesnrPZ4wekw hB14FfeP9bH3XSX992jOBZPryoIFBDV4xbEhbTErRTFPMmbRXtZjP9A3izHCBBXw/2kH1R0CF9XxYw==
X-Soverin-Id: 019af404-5908-740f-b7ad-d299d15d4011
Content-Type: multipart/alternative; boundary="------------3UMhTGB5e6mGrHrQg1v14d9s"
Message-ID: <3b1c2875-4f4b-468b-b017-ab0272bf4310@iotconsultancy.nl>
Date: Sat, 06 Dec 2025 15:15:17 +0100
MIME-Version: 1.0
Content-Language: en-US
From: Esko Dijk <esko.dijk@iotconsultancy.nl>
Organization: IoTconsultancy.nl
To: "anima@ietf.org" <anima@ietf.org>
X-Spampanel-Class: ham
Message-ID-Hash: K2BLONYU6H6LMJTDQDGLXD6H76NPBBI5
X-Message-ID-Hash: K2BLONYU6H6LMJTDQDGLXD6H76NPBBI5
X-MailFrom: esko.dijk@iotconsultancy.nl
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-anima.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Anima] Re-using the constrained Join Proxy solution defined by Thread
List-Id: Autonomic Networking Integrated Model and Approach <anima.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima/ZS8-AEjX_5qRgekMndvrvbRRQwU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/anima>
List-Help: <mailto:anima-request@ietf.org?subject=help>
List-Owner: <mailto:anima-owner@ietf.org>
List-Post: <mailto:anima@ietf.org>
List-Subscribe: <mailto:anima-join@ietf.org>
List-Unsubscribe: <mailto:anima-leave@ietf.org>
Hi all, During the IETF 124 ANIMA session we discussed whether it's possible to re-use the existing constrained Join Proxy solution defined by Thread (wireless 6LoWPAN mesh networking protocol). A comparison between the Thread solution and the ANIMA defined solution in draft-ietf-anima-constrained-join-proxy was not immediately possible because the Thread solution is not publicly described. Nevertheless, there's an open source implementation (OpenThread) on Github that actually specifies the key elements in the form of code. Whatever we can learn from this code is public knowledge, so it's the easiest way to kickstart this discussion. Key part of the code for the "Join Proxy" called Joiner Router is here: https://github.com/openthread/openthread/blob/9a10e22e91405f585144a175da1bdd7dd093b3c6/src/core/meshcop/joiner_router.cpp#L117-L194 Also there's an autogenerated Wiki based on the code available here: https://deepwiki.com/search/document-the-meshcop-relay-mec_dd034288-5723-41d6-ba7e-4b19e9654457?mode=fast The wiki explains more and also includes a diagram. Some key elements to learn from the code are: 1. Relay of DTLS (or any other protocol over UDP) packets happens in the payload of unsecured coap:// messages sent to the "Border Agent" (located on a Border Router i.e. 6LBR). 2. Relay messages are secured by link-layer encryption just like all other traffic in a Thread mesh network. 3. UDP destination port of the CoAP relay messages is 61631. 4. URI path of the CoAP relay messages are fixed at "/c/rx" and "/c/tx" - one for each direction. 5. Relay messages contain the state - i.e. it's stateless on the Join Proxy - encoded as TLVs, not encrypted. 6. There are TLVs for the source port of the joining device, the link-local address IID of the joining device, the identity ("RLOC16") of the Join Proxy itself, and finally the DTLS payload being relayed. 7. Relay messages are sent to an IPv6 destination address of the "Border Agent" that's based on configured network-wide data. These differ from the constrained Join Proxy draft in the following ways: 1. No CoAP is used, but rather the "JPY protocol" - optimized to be as compact as possible. E.g. JPY doesn't need URI paths. 2. (Same - JPY messages in a mesh network would also be link-layer secured) 3. UDP destination port for JPY messages can be discovered (using CoAP) or configured (by some out of scope means) but is not a fixed value. 4. JPY message avoids using URI paths - not CoAP. 5. Relay messages contain the state in encrypted form in CBOR. 6. Similar data in the JPY message: source port of Joiner, link-local address IID of Joiner, DTLS payload; encoded in CBOR. 7. Relay messages are sent to discovered or configured address of the Registrar. If configured, it may be based on network-wide data. Re-using Thread relaying for an IETF spec would have a few important implications: - Use the CoAP protocol which we removed in constrained Join Proxy (a while ago) - Use fixed CoAP URI paths that are not in the ".well-known" namespace. - Use a fixed port (61631) for CoAP - No encryption for the JPY message - transmitted plain and modifyable within the mesh network - JPY message can't be sent outside of the bounds of the single mesh network - it stops at the boundary (Border Agent / 6LBR). So it can't reach a Registrar directly; another relay step is needed. Some of these aspects could make it difficult to pass an IESG review, I think! Any improvement suggestions from review also can't be applied, because that would lose backward-compatibility with the Thread-defined solution. Overall I'm not sure how we could successfully proceed with the Thread relaying solution in IETF. best regards Esko -- *IoTconsultancy.nl* | Email/Teams: esko.dijk@iotconsultancy.nl | +31 6 2385 8339
- [Anima] Re-using the constrained Join Proxy solut… Esko Dijk
- [Anima] Re: Re-using the constrained Join Proxy s… Michael Richardson
- [Anima] Re: Re-using the constrained Join Proxy s… Esko Dijk
- [Anima] Re: Re-using the constrained Join Proxy s… Michael Richardson