Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!rpi!uupsi!sunic!nuug!sigyn.idt.unit.no!ugle.unit.no!spurv.runit.sintef.no!he From: he@spurv.runit.sintef.no (Havard Eidnes) Newsgroups: comp.protocols.tcp-ip Subject: Re: Warning: Keep-Alive considered harmful Summary: Death on ICMP unreachable also harmful Message-ID: <1990Nov17.164522.9996@ugle.unit.no> Date: 17 Nov 90 16:45:22 GMT References: <1990Nov16.164448.9918@bwdls61.bnr.ca> <9011170344.AA20268@gaak.LCS.MIT.EDU> Sender: news@ugle.unit.no Organization: Computing Center at the University of Trondheim, Norway Lines: 30 I agree that using TCP keepalives is a bad idea. I just want to comment on the specific example Michael A. Patton mentioned, making me able "with Internet Hosts Requirements in hand" to point out one other area where traditional implementations of TCP should be changed to improve robustness in the case of temporary network failures. In article <9011170344.AA20268@gaak.LCS.MIT.EDU> MAP@LCS.MIT.EDU (Michael A. Patton) writes: > >Just this morning I had a user complaint that they couldn't FTP >a file between two distant hosts. The problem resolved to a link that >dropped out for several minutes every half hour or so, but the transfer >time for the file they wanted was 45 minutes. When the link dropped >out, they would get punted because of keep-alives, then they had to >start over. If only they weren't running keep-alives on the FTP >Server it would have worked, the person doing the transfer had enough >patience, if only the computer had. It is of course possible that this connection was blown away by the server using TCP keepalives. However, one other possibility (perhaps more likely) is that an intermediate gateway issued ICMP net unreachable messages while the temporary network outage lasted. Traditional implementations (including the original BSD 4.3 version) of TCP blow away a live TCP connection when they receive an ICMP net unreachable message. The Host Requirements state that a host implementation of TCP MUST NOT do this (specifically: the ICMPs net unreachable, host unreachable or source route failed should be considered temporary failures and not permanent conditions). Some gateways have the ability to turn off the sending of ICMP net unreachables, but this is just a workaround for "broken" host implementations. - Havard