Skip site navigation (1)Skip section navigation (2)
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>