Re: Link MTU option ignored in IPv6 router advertisements
- From: Lubomir Rintel <lrintel redhat com>
- To: Glen Turner <gdt gdt id au>
- Cc: networkmanager-list gnome org
- Subject: Re: Link MTU option ignored in IPv6 router advertisements
- Date: Wed, 29 Oct 2014 12:30:17 +0100
Hello Glen,
On Tue, 2014-10-28 at 11:26 +1030, Glen Turner wrote:
On 04/10/2014, at 2:31 AM, Dan Williams wrote:
On Fri, 2014-10-03 at 11:36 -0400, Chuck Anderson wrote:
I'm not sure if this is a kernel thing or a NetworkManager thing.  Did
something change in how IPv6 router advertisements are handled by
NetworkManager in Fedora 20?
I think it's a NetworkManager thing.  We'll fix it.
Hi Dan,
I've had a lot of trouble in IPv4 with DHCP in hotel systems setting the MTU to less than the 576 minimum 
(and sometimes less than the size of the IPv4 header). I believe that this was a misguided effort to 
implement fair queuing.
It might be worthwhile anticipating such issues for IPv6, roughly:
/* IPv6 minimum link MTU specified on page 24 of RFC 2460. */
#define IPV6_MINIMUM_MTU 1280
unsigned int enforce_link_mtu_bounds(unsigned int offered_link_mtu,
                                     char *interface_name)
{
  if (offered_link_mtu < IPV6_MINIMUM_MTU) {
    syslog("Offered link MTU for %s is %u, increased to " IPV6_MINIMUM_MTU "\n",
           (interface_name) ? interface_name : "an interface",
           offered_link_mtu);
    return IPV6_MINIMUM_MTU;
  }
  return offered_link_mtu;
}
We now ignore bad IPv6 MTUs:
src/rdisc/nm-lndp-rdisc.c:
627                 if (mtu >= 1280) {
628                         rdisc->mtu = mtu;
629                         changed |= NM_RDISC_CONFIG_MTU;
630                 } else {
631                         /* All sorts of bad things would happen if we accepted this.
632                          * Kernel would set it, but would flush out all IPv6 addresses away
633                          * from the link, even the link-local, and we wouldn't be able to
634                          * listen for further RAs that could fix the MTU. */
635                         warning ("(%s): MTU too small for IPv6 ignored: %d", rdisc->ifname, mtu);
636                 }
-glen
Lubo
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]