Subject: MSS doesn't honour route MTU
To: None <tech-net@netbsd.org>
From: Mihai CHELARU <kefren@netbsd.ro>
List: tech-net
Date: 06/08/2006 21:07:32
Hi,

While doing some tests I've seen that the announced MSS in a syn packet sent 
to host doesn't honour the route MTU to that host. Here is what I done:

mpls# host www.cisco.com
www.cisco.com has address 198.133.219.25
mpls# route -n get 198.133.219.25
   route to: 198.133.219.25
destination: default
       mask: default
    gateway: 193.28.151.1
 local addr: 193.28.151.36
  interface: xennet0
      flags: <UP,GATEWAY,DONE,STATIC>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu 
expire
       0         0         0         0         0         0         0 
0
mpls# route add -mtu 1200 198.133.219.25 193.28.151.1
add host 198.133.219.25: gateway 193.28.151.1
mpls# route -n get 198.133.219.25
   route to: 198.133.219.25
destination: 198.133.219.25
    gateway: 193.28.151.1
 local addr: 193.28.151.36
  interface: xennet0
      flags: <UP,GATEWAY,HOST,DONE,STATIC>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu 
expire
       0         0         0         0         0         0      1200 
0
mpls# tcpdump -p -l -n -vvv -i xennet0 proto \\tcp and port 80 and host 
198.133.219.25 > dump &
[1] 1722
mpls# tcpdump: listening on xennet0, link-type EN10MB (Ethernet), capture 
size 96 bytes

mpls# telnet -NK 198.133.219.25 80
Trying 198.133.219.25...
Connected to 198.133.219.25.
Escape character is '^]'.
^]
telnet> q
Connection closed.
mpls# kill %1
5 packets captured
604 packets received by filter
0 packets dropped by kernel
[1]    Done                   tcpdump -p -l -n -vvv -i xennet0 proto \tcp 
and port 80 and host 198.133.219.25 ...
mpls# head dump
20:07:25.601293 IP (tos 0x0, ttl  64, id 63512, offset 0, flags [DF], 
length: 64) 193.28.151.36.65527 > 198.133.219.25.80: S [tcp sum ok] 
2677780569:2677780569(0) win 32768 <mss 1460,nop,wscale 
0,sackOK,nop,nop,nop,nop,timestamp 0 0>
20:07:25.794759 IP (tos 0x0, ttl 241, id 13, offset 0, flags [none], length: 
44) 198.133.219.25.80 > 193.28.151.36.65527: S [tcp sum ok] 
3127864846:3127864846(0) ack 2677780570 win 8192 <mss 1460>
20:07:25.794810 IP (tos 0x0, ttl  64, id 63518, offset 0, flags [DF], 
length: 40) 193.28.151.36.65527 > 198.133.219.25.80: . [tcp sum ok] 1:1(0) 
ack 1 win 33580
20:07:28.011011 IP (tos 0x0, ttl  64, id 63528, offset 0, flags [DF], 
length: 40) 193.28.151.36.65527 > 198.133.219.25.80: F [tcp sum ok] 1:1(0) 
ack 1 win 33580
20:07:28.206164 IP (tos 0x0, ttl 241, id 6, offset 0, flags [none], length: 
40) 198.133.219.25.80 > 193.28.151.36.65527: R [tcp sum ok] 1:1(0) ack 1 win 
33580

mpls# uname -a
NetBSD mpls.girsa.ro 3.99.20 NetBSD 3.99.20 (ayame-mpls) #26: Thu Jun  8 
14:53:31 UTC 2006 
root@mpls.girsa.ro:/mnt/src/sys/arch/i386/compile/obj/ayame-mpls i386


Shouldn't it announce MSS 1160 (ROUTE_MTU - 40, as RFC879 says) instead of 
1460(probably IF_MTU - 40), honouring the route MTU I've just added ?

-- 
Thanks
Mihai