* Linux TCP state machine is broken?
@ 2003-11-26 17:53 Yogesh Swami
2003-11-26 18:39 ` John Heffner
0 siblings, 1 reply; 2+ messages in thread
From: Yogesh Swami @ 2003-11-26 17:53 UTC (permalink / raw)
To: linux-kernel
Hi,
[I'm not subscribed to this mailing list, so please CC
your reply to me]
I have been trying to implement one of the Internet
Drafts in the kernel for experimentation, and while
debugging I reliazed that TCP sender is almost always
in TCP_CA_CWR state. Since Linux doesn't follow the
RFCs, I am not sure if this is what is intended, or if
this is bug.
I think the reason the sender is always in TCP_CA_CWR
and not in TCP_CA_Open is because in the function
"tcp_transmit_skb" (tcp_out.c:190), after sending the
packet to IP-layer, the sender call tcp_enter_cwr() if
the IP layer did not return any non congestion error.
I have put the code fragement at the end of the
e-mail.
I am not clear why a successfuly transmission should
cause the sender to enter CWR (the only other places
when tcp_enter_cwr is called are when there is a ICMP
source quench or when there is ECE bit set for ECN).
If someone could explain this to me, that would be
great.
Thanks
Yogesh
------tcp_output.c; line 279 -------------
err = tp->af_specific->queue_xmit(skb, 0);
if (err <= 0)
return err;
tcp_enter_cwr(tp);
/* NET_XMIT_CN is special. It does not
guarantee,
* that this packet is lost. It tells that
device
* is about to start to drop packets or already
* drops some packets of the same priority and
* invokes us to send less aggressively.
*/
return err == NET_XMIT_CN ? 0 : err;
-------------------------------------
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: Linux TCP state machine is broken?
2003-11-26 17:53 Linux TCP state machine is broken? Yogesh Swami
@ 2003-11-26 18:39 ` John Heffner
0 siblings, 0 replies; 2+ messages in thread
From: John Heffner @ 2003-11-26 18:39 UTC (permalink / raw)
To: Yogesh Swami; +Cc: linux-kernel
On Wed, 26 Nov 2003, Yogesh Swami wrote:
> I think the reason the sender is always in TCP_CA_CWR
> and not in TCP_CA_Open is because in the function
> "tcp_transmit_skb" (tcp_out.c:190), after sending the
> packet to IP-layer, the sender call tcp_enter_cwr() if
> the IP layer did not return any non congestion error.
> I have put the code fragement at the end of the
> e-mail.
>
> I am not clear why a successfuly transmission should
> cause the sender to enter CWR (the only other places
> when tcp_enter_cwr is called are when there is a ICMP
> source quench or when there is ECE bit set for ECN).
>
> If someone could explain this to me, that would be
> great.
It reaches this point if there *is* congestion explicitly reported by the
interface. It will be in CWR a lot of the time if your local interface is
the bottleneck.
-John
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-11-26 18:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-11-26 17:53 Linux TCP state machine is broken? Yogesh Swami
2003-11-26 18:39 ` John Heffner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®