Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!ucbvax!THUMPER.BELLCORE.COM!karn From: karn@THUMPER.BELLCORE.COM (Phil R. Karn) Newsgroups: comp.protocols.tcp-ip Subject: Re: SO_KEEPALIVE considered harmful? Message-ID: <8905262347.AA11535@thumper.bellcore.com> Date: 26 May 89 23:47:25 GMT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 29 Dave, Yes, that might be acceptable to me. I'd go a little further, though, and say that a REMOTE USER (not just the application code) must always be able to turn off keepalives, even on binary-only systems. It does no good to say "the application must be able to disable keepalives" when I'm having problems with a remote server that I have no administrative control over. Much of my animosity toward keepalives came from trying to make a Sun workstation work properly over SLIP links and amateur packet radio. I finally replaced the TCP object modules provided by Sun with ones compiled from Van's latest TCP, which I had already edited to disable keepalives. Works like a charm. At the last InterOp, I sat next to Dave Borman in a panel session on TCP performance. Between us, we represented a "dynamic range" of about 6 orders of magnitude in TCP transfer rates (1200 bps amateur packet radio to 500 Mbps between Crays). This is an exceptional achievement for a single networking protocol, but it was possible only because TCP was designed from the beginning to scale well over a wide network performance range. But broken mechanisms like keepalives threaten this. We need a big red warning light that will flash whenever someone proposes to put an fixed time interval into a protocol spec, because you can't scale protocols that have arbitrary timers. Phil