When I ping a neighbor system via plain Ethernet (or emulated ng_eiface), I can ping with
When I ping a remote system (thru that same neighbor system), I see this instead:
Only with
Fragmentation is done on the sending system itself, as required in IPv6. And ping is ICMP is connectionless, so there cannot be a kind of MSS negotiation or PMTU discovery. Somewhere on the system must be a storage for recently received "fragmentation needed" messages, or something similar. I would like to know this storage (and be able to flush it when needed).
The other point is that fragmented packages do never reach a destination - but that is certainly related to my lots of ipfw and nat/nptv6 and divert instances, and I am going to debug that now. But in order to be successful, I need to fully understand how this works. I don't find a hint in sysctl and no idea where else to look.
-6 -u -s 1452
unfragmented, and only with -s 1453
fragmentation appears. (correct: 40 byte IPv6-hdr + 4 byte ICMP hdr + 4 byte ICMP echo req. hdr = 1500)When I ping a remote system (thru that same neighbor system), I see this instead:
Code:
frag (0|1440) ICMP6, echo request, seq 0, length 1440
frag (1440|13)
-s 1444
does the fragmentation stop. This is also correct, because that remote system goes via PPPoE, and that needs another 8 byte header, so fragmentation must appear 8 byte earlier. But: how can the local system know this??Fragmentation is done on the sending system itself, as required in IPv6. And ping is ICMP is connectionless, so there cannot be a kind of MSS negotiation or PMTU discovery. Somewhere on the system must be a storage for recently received "fragmentation needed" messages, or something similar. I would like to know this storage (and be able to flush it when needed).
The other point is that fragmented packages do never reach a destination - but that is certainly related to my lots of ipfw and nat/nptv6 and divert instances, and I am going to debug that now. But in order to be successful, I need to fully understand how this works. I don't find a hint in sysctl and no idea where else to look.