[homenet] DNCP/HNCP Revisited

"Ray Hunter (v6ops)" <v6ops@globis.net> Wed, 18 September 2019 07:36 UTC

Return-Path: <v6ops@globis.net>
X-Original-To: homenet@ietfa.amsl.com
Delivered-To: homenet@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 92C5B120129 for <homenet@ietfa.amsl.com>; Wed, 18 Sep 2019 00:36:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, 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 vhC1cCqiZVD3 for <homenet@ietfa.amsl.com>; Wed, 18 Sep 2019 00:36:11 -0700 (PDT)
Received: from globis01.globis.net (92-111-140-212.static.v4.ziggozakelijk.nl [92.111.140.212]) by ietfa.amsl.com (Postfix) with ESMTP id 5A8371209E6 for <homenet@ietf.org>; Wed, 18 Sep 2019 00:36:11 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by globis01.globis.net (Postfix) with ESMTP id 45D2C401DE for <homenet@ietf.org>; Wed, 18 Sep 2019 09:36:09 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at globis01.globis.net
Received: from globis01.globis.net ([127.0.0.1]) by localhost (mail.globis.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AEmlZqrlEiH5 for <homenet@ietf.org>; Wed, 18 Sep 2019 09:36:06 +0200 (CEST)
Received: from MacBook-Pro-3.local (h9041.upc-h.chello.nl [62.194.9.41]) (Authenticated sender: v6ops@globis.net) by globis01.globis.net (Postfix) with ESMTPA id 6C22B401D9 for <homenet@ietf.org>; Wed, 18 Sep 2019 09:36:06 +0200 (CEST)
To: HOMENET <homenet@ietf.org>
From: "Ray Hunter (v6ops)" <v6ops@globis.net>
Message-ID: <2737406f-c615-3963-2226-d2eadf79e846@globis.net>
Date: Wed, 18 Sep 2019 09:36:05 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 PostboxApp/6.1.18
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------23C5DF2BE12EF6E4A9FF044B"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/homenet/mIZyRZVU2ICJqwHc9QCXvMIw3wk>
Subject: [homenet] DNCP/HNCP Revisited
X-BeenThere: homenet@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF Homenet WG mailing list <homenet.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/homenet>, <mailto:homenet-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/homenet/>
List-Post: <mailto:homenet@ietf.org>
List-Help: <mailto:homenet-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/homenet>, <mailto:homenet-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Sep 2019 07:36:15 -0000

Hi,

I've been experimenting with Homenet before looking at enhancing HNCP 
for extended naming functionality (the current implementation only 
covers resolver configuration and not name server configuration).

During my testing I managed to break HNCP, so that it got stuck in a 
state where it didn't converge.

Looking at the specification in detail this shouldn't have been a 
surprise to me or anyone else due to the design choices that were made.



First observation: Running HNCP over L2TPv3 breaks HCNP because L2TPv3 
breaks UDP fragmentation (works as designed).

The L2TPv3 tunnel has a lower MTU than the local LAN, and does not 
report ICMP PTB, so HNCP packets in one direction get through, but 
replies get dropped.

Early drafts of HNCP stated that UDP fragmentation would not be broken 
in the Homenet for the foreseeable future. Well I managed to break that ;)

So this is a known situation.

Changing the MTU on the LAN interfaces of my routers to 1280 brought 
everything back to normal, as expected.

Question: If Homenets are moving to flat L2 meshes over foo, as some 
have said, will this impact HNCP?

The Linux kernel (in Openwrt) can/could easily support PMTUD.

But since the L2 tunnels don't report drops, it makes PMTUD potentially 
challenging for a simple protocol like HNCP.

Question: As a simple mitigation, is there any way of manually 
signalling to the kernel that ALL UDP packets on port 8231 should assume 
an PMTU of 1280 octets?

That wouldn't require any specification change and would allow HNCP to 
work reliably in the presence of tunnels and varying MTU's that don't 
match the local interface MTU.




Second Observation: HNCP packets grow quickly in size, which may become 
a concern for scaling.

Again, by design, DNCP is limited to TLV content of 64K (RFC7787 intro).

AFAICS that is 64K per DNCP system, not per node.

Question: Is that correct?

For my 4 node Homenet, HNCP reached 3140 octets, without any 
modifications or additions or long names.

Question: Does the amount of state scale linearly with the number of 
routers?

Question: Is this starting to become a concern?

The limitation for 64K seems to come from the following:

RFC7788
Request Network State TLV (Section 7.1.1): The receiver MUST reply
       with a Network State TLV (Section 7.2.2) and a Node State TLV
       (Section 7.2.3) for each node data used to calculate the network
       state hash.


In the Openwrt implementation, I observe that the requester is 
requesting the node state for all 4 devices in one packet.

I also observe that the reply from the peer contains the entire state of 
the entire Homenet in a single UDP packet (network TLV and node state 
TLV for all 4 routers + optional payload data).

Question: Is that as designed/intended? Is this where the 64K data limit 
comes from in RFC7787?

If this was a design goal to reduce chatiness, and improve convergence 
time, is it possible to implement this differently to reduce packet size 
and/or increase overall TLV data capacity?

Could the requester in step1 request the network status TLV, and the 
peer reply with just the network status TLV and the node TLV's, but 
without the underlying optional HNCP payload data TLV's.

Maybe include a new "more-HNCP-data-to-come" TLV to distinguish this 
from blank node data?

That would give enough information for both nodes to know exactly which 
payload data needed synchronising.

Then as step 2, the requester could individually request the Node TLV 
for each node one per packet, and the peer would reply with the Node TLV 
but this time including the optional data TLV's.

The receiver and peer would both know that HNCP hadn't converged whilst 
waiting for the additional data, and could mark it internally as being 
stale whilst waiting for the additional detailed update.

Question: What would break?

Question: What would need to be amended in the standard RFC? The 
more-HNCP-data-to-come TLV in RFC7788?

Question: Would this tweak increase the ±64K limit of TLV data from 
being per network to being 64K per node? [max UDP packet size for a 
single node TLV + associated payload data]

Question: Is this raw fragmentation by separating DNCP essentials from 
HNCP payload something that the WG would support?

regards,

-- 
regards,
RayH
<https://www.postbox-inc.com/?utm_source=email&utm_medium=siglink&utm_campaign=reach>