What I read in some documents, fragmentation of IPv6 packets on an intermediate router should not happen or cannot happen or does not work (or whatver?).
Fact is, it definitely can happen, because FreeBSD does it. Only these packets then seem not to get answered from destination.
This is the router:
Intranet is ethernet, extranet is PPPoE, so MTU must change.
And this is the IPv6 inflight fragmentation:
Incoming on vtnet0:
Outgoing on tun0:
It seems this happens only when there is a dummynet pipe/queue (or a divert) in the outgoing rules. If there is no such thing present, then ICMPv6 type-2 messages ("packet too big") are sent back to the origin.
Fact is, it definitely can happen, because FreeBSD does it. Only these packets then seem not to get answered from destination.
This is the router:
Code:
vtnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
tun0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> metric 0 mtu 1492
Intranet is ethernet, extranet is PPPoE, so MTU must change.
And this is the IPv6 inflight fragmentation:
Incoming on vtnet0:
Code:
IP6 2003:e7:1740:a7e0:41d:92ff:fe01:222.20487 > 2a00:1450:4001:67::8.443: Flags [.], seq 0:1428, ack 1, win 1035, options [nop,nop,TS val 2061109754 ecr 739209924], length 1428
IP6 2003:e7:1740:a7e0:41d:92ff:fe01:222.20487 > 2a00:1450:4001:67::8.443: Flags [.], seq 0:1428, ack 1, win 1035, options [nop,nop,TS val 2061113154 ecr 739209924], length 1428
Outgoing on tun0:
Code:
IP6 2003:e7:1740:a7e0:41d:92ff:fe01:222 > 2a00:1450:4001:67::8: frag (0|1440) 59241 > 443: Flags [.], seq 0:1408, ack 1, win 1035, options [nop,nop,TS val 2312762048 ecr 739149759], length 1408
IP6 2003:e7:1740:a7e0:41d:92ff:fe01:222 > 2a00:1450:4001:67::8: frag (1440|20)
IP6 2003:e7:1740:a7e0:41d:92ff:fe01:222 > 2a00:1450:4001:67::8: frag (0|1440) 59243 > 443: Flags [.], seq 1:1409, ack 1, win 1035, options [nop,nop,TS val 3069543472 ecr 739199972], length 1408
IP6 2003:e7:1740:a7e0:41d:92ff:fe01:222 > 2a00:1450:4001:67::8: frag (1440|20)
It seems this happens only when there is a dummynet pipe/queue (or a divert) in the outgoing rules. If there is no such thing present, then ICMPv6 type-2 messages ("packet too big") are sent back to the origin.