Subject: tcp_mssdflt
To: None <tech-net@NetBSD.ORG>
From: Hiroto Shibuya <shibuya@xedia.com>
List: tech-net
Date: 06/21/2001 15:41:09
I have questions regarding the semantics of the variable
"tcp_mssdflt".  From the references I looked (i.e. Stevens vol1,
Appendix E.), the meaning seems to be: "The default TCP MSS for
nonlocal destionation".

This logic existed in NetBSD a while back when there was a function
tcp_mss() in tcp_input.c which did:

                if (!in_localaddr(inp->inp_faddr))
                        mss = min(mss, tcp_mssdflt);

But at certain point, this routine was deprecated and replaced with
"tcp_mss_to_advertise(const struct ifnet *ifp)" in tcp_subr.c, which
does not contain this logic.  FreeBSD seems to retain the tcp_mss()
NetBSD used to have and maintain that logic.

Questions:

1) Is this intentional behavior change?  If so, is there any
   discussion regarding this in the archive I can refer to?

2) Does anybody has patch (or suggestion on how) to restore the old
   behavior?

I have a customer having problem with MSS due to packet getting
fragmented getting into ipsec tunnel and then their ISP filters
fragmented ipsec packets.  I'm hoping old behavior of mss will fix
this problem.

--
Hiroto Shibuya
Lucent Technologies
50 Nagog Park
Acton, MA 01720
TEL (978) 263 0060 x108
FAX (978) 263 6046
shibuya@lucent.com, shibuya@xedia.com