Re: ICMPv6 over lo0
- In reply to: Andrey V. Elsukov: "Re: ICMPv6 over lo0"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 16 Nov 2022 08:37:32 UTC
> On 16. Nov 2022, at 08:54, Andrey V. Elsukov <bu7cher@yandex.ru> wrote: > > 16.11.2022 00:14, tuexen@freebsd.org пишет: >> 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=40+8+20000 bytes) ::1 --> ::1 >> 20008 bytes from ::1, icmp_seq=0 hlim=64 time=0.709 ms >> --- ::1 ping6 statistics --- >> 1 packets transmitted, 1 packets received, 0.0% packet loss >> round-trip min/avg/max/std-dev = 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... > > Hi Michael, > > 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. > ``` > > ``` > % 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 > ``` > > ``` > if (mflag != 1) { > optval = mflag > 1 ? 0 : 1; > > if (setsockopt(ssend, IPPROTO_IPV6, IPV6_USE_MIN_MTU, > &optval, sizeof(optval)) == -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 > -- > WBR, Andrey V. Elsukov