Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!purdue!mentor.cc.purdue.edu!mace.cc.purdue.edu!dls From: dls@mace.cc.purdue.edu (David L Stevens) Newsgroups: comp.bugs.4bsd Subject: Re: What happens when someone says they want a TCP MSS=0? Message-ID: <2809@mace.cc.purdue.edu> Date: 28 Jul 89 22:43:41 GMT References: <20651@bikini.cis.ufl.EDU> Reply-To: dls@mace.cc.purdue.edu (David L Stevens) Organization: PUCC UNIX Group Lines: 18 IP says that any Internet host must be able to receive packets of at least 576 octets. So any technology using TCP/IP has to allow packets of at least 576 - 60 (IP headers, max) - 20 (TCP headers, no opts) = 496 octets of TCP data. Without IP options, it's 516, or 512 to pick a nicer number. Though I don't believe RFC 793 says so, packets with MSS of 0, or really anything less than 496, should be dropped along with implementations that generate them. To run IP, the machine has to have hardware and buffer space for packets of at least that size and the window management takes care of times when load is the problem. Note that small MSS's reduce the data/header ratio and thus the effective throughput, so choosing the largest MSS that IP requires (496) as the minimum is the best you can do without knowing that the underlying hardware on the other end can do more. Silently enforcing it is a simple "mss = MAX(mss, 496)" in tcp_mss(); sending a RST segment and dropping the packet would be better, though. -- +-DLS (dls@mace.cc.purdue.edu)