Re: Why when the time changed backwards, there were many TIME_WAIT sockets

From: Darren Dunham (ddunham_at_redwood.taos.com)
Date: 11/22/04


Date: Mon, 22 Nov 2004 04:09:57 GMT

Steven Ding <dwj@asia.com> wrote:
> Several days ago I encountered a very very strange thing.
> I set one of my servers' time backward to sometime in year 2003 with
> rdate. The server has a lot of TCP connections at that time.

> However, several hours later, I found that there were many many sockets
> with the state TIME_WAIT and no local ports available.

Very common. Happened all the time when application folks did Y2K
testing and didn't ask me about it. They'd "test" a machine in Y2K,
then they'd want to bring the time back to "now" without rebooting.

Solaris does not support large backward time jumps. You need to reboot.

> I know of the TIME_WAIT is used for retransmit the FIN2 ack to the peer
> party and it should only be kept in a timer, which in many systems is
> about twice the timer for retranssion.

> But after I checked I found that TCP timers should be counted by a
> "tick" rather than the system time. But the "tick" should not be
> affected by the system time. So I wonder why so many TIME_WAIT sockets
> cannot be cleaned in this case.

I don't know the actual implementation, but it does appear to be related
to the system time.

-- 
Darren Dunham                                           ddunham@taos.com
Senior Technical Consultant         TAOS            http://www.taos.com/
Got some Dr Pepper?                           San Francisco, CA bay area
         < This line left intentionally blank to confuse you. >


Relevant Pages


Quantcast