Subject: talking to mtu 1500 mtu hosts on a mtu 9000 network
To: None <netbsd-help@netbsd.org>
From: Tobias Nygren <tnn+nbsd@nygren.pp.se>
List: netbsd-help
Date: 08/29/2006 18:16:58
I have a gigabit ethernet network with mostly mtu 9000 equipment.
I need one of my mtu 9000 machines (ip .33) to talk one that does only
mtu 1500 (.33). This can be done by manipulating the routing table.

ti0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 9000
        capabilities=3f00<...>
        enabled=0
        address: 00:60:6d:21:1d:9f
        media: Ethernet autoselect (1000baseSX full-duplex)
        status: active
        inet 172.18.1.33 netmask 0xffffffe0 broadcast 172.18.1.63
        inet6 fe80::260:6dff:fe21:1d9f%ti0 prefixlen 64 scopeid 0x1

Ping from 172.18.1.33 to 172.18.1.35 with packets smaller than 1500 works.
I tried "route add -host 172.18.1.35 -mtu 1500 -interface 172.18.1.33",
which gives this netstat -rn output:

172.18.1.32/27     link#1             UC          -   ti0
172.18.1.34        00:60:08:f6:08:bc  UHLc        -   ti0
172.18.1.35        172.18.1.33        UHS      1500   ti0

But now no ping packets leave the box. Maybe I misunderstood the
intended use of the -interface flag?

So instead I added a static arp entry for .35:

arp -s 172.18.1.35 00:50:56:00:00:01
route change -host 172.18.1.35 -mtu 1500

Which gives this netstat -rn output:

172.18.1.35        00:50:56:00:00:01  UHLS     1500   ti0

This works as expected. Packets larger than 1500 get fragmented
on their way out.

Is is possible to fragment packets to 172.18.1.35 without a static
arp entry?

Thanks,
-Tobias