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>
_______________________________________________
homenet mailing list
homenet@ietf.org
https://www.ietf.org/mailman/listinfo/homenet

Reply via email to