Date: Wed, 16 Nov 2022 09:37:32 +0100 From: tuexen@freebsd.org To: "Andrey V. Elsukov" <bu7cher@yandex.ru> Cc: freebsd-net <freebsd-net@freebsd.org> Subject: Re: ICMPv6 over lo0 Message-ID: <0A62F19A-A578-4B00-964D-50B8DE71C0C7@freebsd.org> In-Reply-To: <13ea449d-0496-e104-405e-1aa63b917b2d@yandex.ru> References: <DDDFD026-72AF-4558-93E4-60D361C671DF@freebsd.org> <13ea449d-0496-e104-405e-1aa63b917b2d@yandex.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
> On 16. Nov 2022, at 08:54, Andrey V. Elsukov <bu7cher@yandex.ru> = wrote: >=20 > 16.11.2022 00:14, tuexen@freebsd.org =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >> when using the master branch of today (or 13.1) I get when running >> tuexen@ampere128:~ % ping6 -c 1 -b 30000 -s 20000 ::1 >> PING6(20048=3D40+8+20000 bytes) ::1 --> ::1 >> 20008 bytes from ::1, icmp_seq=3D0 hlim=3D64 time=3D0.709 ms >> --- ::1 ping6 statistics --- >> 1 packets transmitted, 1 packets received, 0.0% packet loss >> round-trip min/avg/max/std-dev =3D 0.709/0.709/0.709/0.000 ms >> which is expected. What I don't expect is: >> tuexen@ampere128:~ % tcpdump -i lo0 -n >> tcpdump: verbose output suppressed, use -v or -vv for full protocol = decode >> listening on lo0, link-type NULL (BSD loopback), capture size 262144 = bytes >> 22:06:38.835630 IP6 ::1 > ::1: frag (0|1232) ICMP6, echo request, seq = 0, length 1232 >> 22:06:38.835639 IP6 ::1 > ::1: frag (1232|1232) >> 22:06:38.835641 IP6 ::1 > ::1: frag (2464|1232) >> Why is for the Echo Request an MTU of 1280 used, whereas for the = response an MTU of 16384 >> is used. >> Is this intended? At least for me, it is not expected... >=20 > Hi Michael, >=20 > I believe it is default behavior for ping6: > ``` > -u By default, ping asks the kernel to fragment packets to fit into > the minimum IPv6 MTU. The -u option will suppress the behavior > in the following two levels: when the option is specified once, > the behavior will be disabled for unicast packets. When the > option is more than once, it will be disabled for both unicast > and multicast packets. > ``` >=20 > ``` > % ktrace ping6 -c 1 -b 30000 -s 20000 ::1 > % kdump | grep -A1 MIN_MTU > 14793 ping6 CALL = setsockopt(0x3,IPPROTO_IPV6,IPV6_USE_MIN_MTU,0x7fffffffe614,0x4) > 14793 ping6 RET setsockopt 0 > ``` >=20 > ``` > if (mflag !=3D 1) { > optval =3D mflag > 1 ? 0 : 1; >=20 > if (setsockopt(ssend, IPPROTO_IPV6, IPV6_USE_MIN_MTU, > &optval, sizeof(optval)) =3D=3D -1) > err(1, "setsockopt(IPV6_USE_MIN_MTU)"); > } > ``` Hi Andrey, thank you very much for the explanation! I wasn't aware of this. Best regards Michael > --=20 > WBR, Andrey V. Elsukov
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0A62F19A-A578-4B00-964D-50B8DE71C0C7>