Fwd: Re: TCP Connection times out

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,
one gave me the advice to send this topic to this list instead linux-kernel.

There seems to be a bug in net/ipv4/tcp_output.c - tcp_send_probe0(...):
During a tcp write the receiver can hold the connection by respondig with ACKs 
window size 0. In this situation the sender (linux) has timeouts between 
sending ACKs to test, if the connection is still valid.
This timeout is controlled by "min(tp->rto << tp->backoff, TCP_RTO_MAX)".
tp->backoff is allways increased by 1.
On a 32 bit machine at least a tp->backoff value of 32 results in a 0 for this 
expression.
This causes a burst of ACKs wich cannot be responded by the receiver
(It would be even worse, if the receiver ACKS them).

I would suggest to increase the backoff value only, 

if (min(tp->rto << (tp->backoff+1), TCP_RTO_MAX) != TCP_RTO_MAX)

BTW: the sitiuation is a network printer with paper empty. The connection 
breaks when backoff is 31 (tp->rto = 22). This is after ~45 minutes.

bye,

Martin

> Actually the printer network interface ACKs all incoming packets
> with window size zero
>
> Everything is fine until the standard TCP/IP implementation shifts
> a "22" (tp->rto) 31 (tp->backoff) times to the left and sends 16 ACKS in
> 0.5ms, because it does no timeouts between them.
>
> A "60 minute paper empty"-situation should not cause problems.
>
> I could provide a tcpdump trace of this, if wanted.

-------------------------------------------------------

-- 
Martin Zielinski       mz@seh.de

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux