Subject: [homenet] More about lack of fragmentation in HNCP

From: Juliusz Chroboczek <[email-masked]>
Date: Wed, 01 Jul 2015 14:19:26 +0200

HNCP maximum packet size is 4000 bytes (Section 3 of -06).  Assuming
a router wishes to publish 400 bytes of per-router information, and for
each interface two neighbours, two assigned prefix TLVs (one /64 and one
IPv4 /24) and two node addresses (one IPv6 and one IPv4), the total size
of the state being flooded is

  400 + interfaces * (32 + 16 + 24 + 24 + 24) = 400 + interfaces * 120

This implies that without fragmentation we can handle up to 30 interfaces
per router.  If Markus changes the protocol to not flood NODE-ADDRESS
globally, or if implementors choose to use SLAAC/DHCPv4 for assigning
router addresses or use unnumbered interfaces, this becomes:

  400 + interfaces * (32 + 16 + 24) = 400 + interfaces * 72

which allows up to 50 interfaces.

On a related note, hncp-06 only says the following about the packet size
(Section 3):

> Each node MUST be able to receive (and potentially reassemble) UDP
> datagrams with a payload of at least 4000 bytes.

It should also say that a node MUST NOT send a datagram with a larger
payload, and that it MUST silently drop any larger datagrams (optionally
log to system management, etc.).  If this is not done, persistent state
desynchronisation may occur.

-- Juliusz

---

From: Markus Stenberg <[email-masked]>
Date: Wed, 1 Jul 2015 15:36:27 +0300

> which allows up to 50 interfaces.

Only one node per common link should have AP for each prefix. So your 
model of a network is actually bit better in the wild. However, you do 
not include e.g. SD stuff so maybe it's a wash.

That leaves the interesting question about whether or not advertising 
_all_ router addresses is really useful or not; SLAAC-ish allocation 
(for example) could be used here instead, and just particular addresses 
used for (e.g.) SD be advertised in the service-specific TLVs.

> desynchronisation may occur.

I am not sure I want to cripple use in non-crippled networks, just 
provide guaranteed base value which works everywhere and *RED ALERT* 
light should light up on crippledbox if it encounters this.

(At a guess, I have 0 devices that have issues with quite a bit bigger 
packets than 4k :-p)
Cheers,

-Markus

---

From: Juliusz Chroboczek <[email-masked]>
Date: Wed, 01 Jul 2015 14:44:59 +0200

> (At a guess, I have 0 devices that have issues with quite a bit bigger

What's your receive buffer size?

-- Juliusz