Subject: Re: IPv6 PMTUD broken
To: Jun-ichiro itojun Hagino <itojun@itojun.org>
From: Ronald van der Pol <Ronald.vanderPol@rvdp.org>
List: tech-net
Date: 06/10/2004 11:40:42
On Thu, Jun 10, 2004 at 07:21:16 +0200, Ronald van der Pol wrote:

> On Thu, Jun 10, 2004 at 10:49:09 +0900, Jun-ichiro itojun Hagino wrote:
> 
> > 	with sendto() (without connnect()) on udp, udp6_ctlinput passes 0
> > 	as the last argument to icmp6_mtudisc_update().  in that case, unless
> > 	you have tons of (> 256) routing entries created PMTUD, path MTU
> > 	discovery should work.
> 
> No, I don't. Below is the current routing table. I will try to make a
> test setup at work today and see if I can reproduce the problem there.

I can reproduce this on another network with this setup:

einstein ------------- sixgate -------- internet
         rtk0             |
         mtu 1500         | rtk1 mtu 1200
                          |
                       (unconnected)


einstein$ ifconfig rtk0
rtk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:40:f4:37:82:32
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 213.154.224.44 netmask 0xffffff00 broadcast 213.154.224.255
        inet6 fe80::240:f4ff:fe37:8232%rtk0 prefixlen 64 scopeid 0x1
        inet6 2001:7b8:206:1:240:f4ff:fe37:8232 prefixlen 64
einstein$

sixgate# ifconfig rtk1
rtk1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1200
        address: 00:50:bf:54:e5:98
        media: Ethernet 10baseT
        status: no carrier
        inet6 fe80:2::250:bfff:fe54:e598 prefixlen 64
        inet6 2001:6e0:0:108:250:bfff:fe54:e598 prefixlen 64
sixgate#

I sent packets with sendto() (unconnected) from einstein to
2001:6e0:0:108::42

sixgate is NetBSD 1.6.2_STABLE i386
einstein is NetBSD 1.6.2_STABLE i386

When I send from FreeBSD 4.10-STABLE i386 the problem does not exist.

	rvdp

This is a tcpdump on einstein (2 sendto()s 15 seconds apart):

11:26:35.666733 2001:7b8:206:1:240:f4ff:fe37:8232.49154 > 2001:6e0:0:108::42.53: [udp sum ok]  0 [7175q] Type19973 (Class 0)? ^E^@^@^E^C^@^@M-o^G^@^@^@^@^@^@M-d^D^@^@M-2^F^@^@M-L^G^@^@M-{^G^@^@I^G^@^@^T^F^@^@j^G^@^@^@^@^@^@^@^@^@^@M-a^C^@^@^K^G^@^@^@^@^@^@^@^@^@^@^@^@^@^@N^F^@^@^@^@^@^@M-?^C^@^@^@^@^@^@^@^@^@^@M-^R^D^@^@^@^@^@^@M-^P^G^@^@^@^@^@^@M-^Y^E^@^@'^E^@^@^K^E^@^@^@^@^@^@M-^W^G^@^@^@^@^@^@M-&^F^@^@+^F^@^@^@^@^@^@T^F^@. Type0 (Class 0)? ^B^@^@^@^@^@^@^O^G^@^@^@^@^@^@^@^@^@^@^@^@^@^@A^H^@^@M-f^F^@^@M-^O^B^@^@^@^@^@^@^@^@^@^@M-_^G^@^@y^G^@^@M^G^@^@^@^@^@^@M-6^A^@^@p^E^@^@M-X^F^@^@M-+^C^@^@^@^@^@^@M-c^G^@^@X^C^@^@M-^Q^E^@^@^@^@^@^@^@^@^@^@^H^B^@^@M-^P^D^@^@Y^A^@^@M-^L^G^@^@M-F^F^@^@M->^D^@^@M-^T^D^@^@M-l^G^@^@^@^@^@^@*^F^@^@M-s^E^@^@^@^@^@^@M-^K^F^@^@^_^F^@^@8^E^@^@^@^@^@^@^@^@. Type8708 (Class 0)? .[|domain] (len 1408, hlim 64)
11:26:35.667465 2001:7b8:206:1:250:bfff:fe5e:33e0 > 2001:7b8:206:1:240:f4ff:fe37:8232: icmp6: too big 1200 (len 1240, hlim 64)
11:26:50.674057 2001:7b8:206:1:240:f4ff:fe37:8232.49154 > 2001:6e0:0:108::42.53: [udp sum ok]  0 [7175q] Type19973 (Class 0)? ^E^@^@^E^C^@^@M-o^G^@^@^@^@^@^@M-d^D^@^@M-2^F^@^@M-L^G^@^@M-{^G^@^@I^G^@^@^T^F^@^@j^G^@^@^@^@^@^@^@^@^@^@M-a^C^@^@^K^G^@^@^@^@^@^@^@^@^@^@^@^@^@^@N^F^@^@^@^@^@^@M-?^C^@^@^@^@^@^@^@^@^@^@M-^R^D^@^@^@^@^@^@M-^P^G^@^@^@^@^@^@M-^Y^E^@^@'^E^@^@^K^E^@^@^@^@^@^@M-^W^G^@^@^@^@^@^@M-&^F^@^@+^F^@^@^@^@^@^@T^F^@. Type0 (Class 0)? ^B^@^@^@^@^@^@^O^G^@^@^@^@^@^@^@^@^@^@^@^@^@^@A^H^@^@M-f^F^@^@M-^O^B^@^@^@^@^@^@^@^@^@^@M-_^G^@^@y^G^@^@M^G^@^@^@^@^@^@M-6^A^@^@p^E^@^@M-X^F^@^@M-+^C^@^@^@^@^@^@M-c^G^@^@X^C^@^@M-^Q^E^@^@^@^@^@^@^@^@^@^@^H^B^@^@M-^P^D^@^@Y^A^@^@M-^L^G^@^@M-F^F^@^@M->^D^@^@M-^T^D^@^@M-l^G^@^@^@^@^@^@*^F^@^@M-s^E^@^@^@^@^@^@M-^K^F^@^@^_^F^@^@8^E^@^@^@^@^@^@^@^@. Type8708 (Class 0)? .[|domain] (len 1408, hlim 64)
11:26:50.674818 2001:7b8:206:1:250:bfff:fe5e:33e0 > 2001:7b8:206:1:240:f4ff:fe37:8232: icmp6: too big 1200 (len 1240, hlim 64)