Bug 8754 - Kernel addrconf modifies MTU of non-kernel routes
Summary: Kernel addrconf modifies MTU of non-kernel routes
Status: CLOSED OBSOLETE
Alias: None
Product: Networking
Classification: Unclassified
Component: IPV6 (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Hideaki YOSHIFUJI
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-07-14 14:59 UTC by Simon Arlott
Modified: 2012-05-17 14:38 UTC (History)
1 user (show)

See Also:
Kernel Version: 2.6.20, 2.6.22
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Simon Arlott 2007-07-14 14:59:31 UTC
I have an MTU of 16110 set on eth0 on a network where the MTU is 1500 as set by RAs. One of the other hosts on the network has an MRU/MTU of 7200 so I have a specific route to it with this MTU.

If I add the route early (i.e. on startup) before address autoconfiguration takes place, when the first RA is received the kernel changes the MTU on my route - this should not happen.
Comment 1 Anonymous Emailer 2007-07-31 13:38:57 UTC
Reply-To: simon@fire.lp0.eu

On 15/07/07 10:29, Simon Arlott wrote:
> On 14/07/07 23:09, Andrew Morton wrote:
>> On Sat, 14 Jul 2007 14:54:32 -0700 (PDT) bugme-daemon@bugzilla.kernel.org
>> wrote:
>>> http://bugzilla.kernel.org/show_bug.cgi?id=8754
>>> 
>>> I have an MTU of 16110 set on eth0 on a network where the MTU is 1500 as
>>> set by
>>> RAs. One of the other hosts on the network has an MRU/MTU of 7200 so I have
>>> a
>>> specific route to it with this MTU.
>>> 
>>> If I add the route early (i.e. on startup) before address autoconfiguration
>>> takes place, when the first RA is received the kernel changes the MTU on my
>>> route - this should not happen.
> 
> This also happens whenever I change the MTU on eth0 - it will alter the
> MTU on routes *I* have added too. While this is valid behaviour for a
> new MTU that is too low for the route it is not for an MTU above the route.
> 
> Changing the MTU also allows the "next RA with MTU set changes
> non-kernel routes too" problem to occur again.

The problem seems to be that because the IPv6 code maintains its own MTU for 
each interface, which is set from RAs (router advertisements) and when the 
interface MTU is set (it's also improperly modifiable via sysctl when it 
shouldn't be, but that's another bug), it uses that to limit the MTU of every 
route.


I propose that it should use the real interface MTU as the limit for non-kernel 
routes and the RA MTU for kernel routes.


Since IPv6 routes (appear to) always have an MTU (IPv4 routes don't and hence 
inherit from the interface) this would have the side effect that a user-added 
route's automatically set MTU would not be lowered by the RA MTU.

New user IPv6 routes without an explicit MTU should not have one set and use 
the RA MTU automatically.


Is this ok? I'll send a patch to do this some time this week when I get around 
to it.
Comment 2 Simon Arlott 2009-03-23 11:31:54 UTC
How can this be closed as REJECTED INSUFFICIENT_DATA when no data was requested?

Note You need to log in before you can comment on or make changes to this bug.