Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!rutgers!bellcore!jupiter!karn From: karn@jupiter (Phil R. Karn) Newsgroups: comp.protocols.tcp-ip Subject: Re: SO_KEEPALIVE considered harmful? Message-ID: <16423@bellcore.bellcore.com> Date: 25 May 89 22:40:49 GMT References: <8905250638.AA21706@ucbvax.Berkeley.EDU> <20761@news.Think.COM> Sender: news@bellcore.bellcore.com Reply-To: karn@jupiter.bellcore.com (Phil R. Karn) Organization: Bell Communications Research, Inc Lines: 28 >>It is worth adding that the excessive use of keepalives has removed a >>feature that used to be in TCP and has been recently re-documented by >>Bob Braden: TCP used to be remarkably robust against temporary >>outages. [...] >I dispute this claim. TCP is only robust against temporary outages if >you don't try to use the connection during that period. TCP becomes quite robust against all outages (whether or not the connection is idle) once you make a very simple change: get rid of TCP level timeouts! I feel very strongly that TCP should *never* just give up on its own accord; that decision belongs to the application. And, in the event the application is an interactive one, the decision to abort should be left to the human user. If he's willing to wait, why shouldn't the system let him? (The only case when TCP should abort a connection on its own is when it has clear proof that the other end has crashed, i.e., by receiving a valid RST.) Users of my TCP/IP package on amateur packet radio occasionally report cases of FTP transfers that resume automatically after network outages lasting for *days* (e.g., those due to crashes of network nodes in remote locations that require manual resets). They are most happy to do without TCP give-up timers, as long as TCP backs off its retransmissions to avoid channel congestion. Phil