Subject: route add -mtu ...
To: None <tech-net@NetBSD.ORG>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: tech-net
Date: 08/09/1995 21:03:45
I've run across the need to set the mtu on a route, but I'm having a few 
problems reaching the host when I do so.

First, some background:  Here at NAS we have a long-haul network 
utilizing ATM as it's infrastructure.  However, we've been noticing poor 
performance going across this network, with the transmission host being 
either an SGI Indigo2 with FDDI or a NetBSD/i386 box with ethernet.  
We believe that the performance problems are related to the max segment size 
being enforced on the IP packet.

In tcp_mss() (in tcp_input.c), there is a check against the route's mtu, 
and if it's set, it uses it for maxseg.  If it's not set, maxseg is set 
to the mtu of the interface and then throttled down to TCP_ISS, which is 
defined as 512.  (See the comment in tcp.h regarding this value.)

This, of course, is a Bad Thing.  The mtu along the entire path is large 
enough to accomodate either FDDI's or ethernet's mtus, and we'd like to 
utilize that for a performance win (i.e. eliminate as much IP overhead as 
possible by sending bigger packets).  So, the obvious solution was to set 
a static route the the destination host with the mtu added to the route.  
This is done with:

	route add -mtu <size> <destination> <gateway>

(In my test I used `route add -mtu 1500 bamboo nas-bcn2', as well as 
several smaller values, right down to the value for TCP_MSS.)

However, once the route has been added to the routing table (and checked 
with `netstat -r'), I get the following whenever I ping the host:

Aug  9 20:02:30 antie /netbsd: arpresolve: can't allocate llinfo

However, having done a `ping -f' so I could check the reference count on 
the route, I see this:

Destination      Gateway            Flags     Refs     Use    Mtu  Interface
bamboo.nas.nasa. nas-bcn2.nas.nasa. UGHS        1      199   1500  ed0

(I added the mtu display to netstat...)

So, it looks to me like the kernel is finding the route...

It's interesting to note that setting the mtu on the route _works_ on the 
SGI...

I'm sure I've missed something ... does anyone have any idea what's going 
on here?

--------------------------------------------------------------------------
Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                               Home: 408.866.1912
NAS: M/S 258-6                                          Work: 415.604.0935
Moffett Field, CA 94035                                Pager: 415.428.6939