> On 18 Sep 2019, at 5:36 pm, Ray Hunter (v6ops) <v6...@globis.net> wrote: > > 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?
setsockopt(IPV6_USE_MIN_MTU=1); from RFC 3542 works provided the OS has implemented it. It’s a really pity that POSIX hasn’t picked up RFC 3542 in the 16 years since it was published like they picked up RFC 3493. This is a epic fail of SDOs. > 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 > _______________________________________________ > homenet mailing list > homenet@ietf.org > https://www.ietf.org/mailman/listinfo/homenet -- Mark Andrews, ISC 1 Seymour St., Dundas Valley, NSW 2117, Australia PHONE: +61 2 9871 4742 INTERNET: ma...@isc.org _______________________________________________ homenet mailing list homenet@ietf.org https://www.ietf.org/mailman/listinfo/homenet