4 Jul 2011 20:37
IPv6 MSS and pflog interface
Nick Reilly <nreilly <at> qnx.com>
2011-07-04 18:37:25 GMT
2011-07-04 18:37:25 GMT
Hi, I have run in to an issue with my IPv6 TCP MSS getting set too high causing IPv6 to drop large frames. The root cause is that the MTU of the pflog0 is being used for the IPv6 MSS. Searching around I found the same issue reported back in 2007 http://osdir.com/ml/os.netbsd.ports.sparc64/2007-06/msg00029.html The reason this affects v6 and not v4 is due to the difference in in6_setmaxmtu() and in_setmaxmtu(), the v6 version only checks for loopback whilst the v4 version checks for not loopback and also that the interface is up. I think the v6 version should change to the same as the v4. At the same time, I wonder if the pflog interface type should have the LOOPBACK flag set on it? There are currently no flags on it and given that in6_setmaxmtu() / in_setmaxmtu() seem to base real vs virtual network interface on the LOOPBACK flag and pflog seems to be a sort of virtual interface type. If this interface were to be brought up then IPv4 would similarly have an excessive MSS on it. Are there any drawbacks to setting the LOOPBACK flag on an interface type that I might be missing? Of course the simple workaround of setting net.inet6.tcp6.mss_ifmtu=1 works around the issue, but I'm looking at the root cause. Thanks, Nick Reilly.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse <at> rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
RSS Feed