Opened 7 years ago

Closed 7 years ago

#13634 closed task (fixed)

tcp: rfc-5681: implementing an ideal timer

Reported by: a-star Owned by: axeld
Priority: normal Milestone: Unscheduled
Component: Network & Internet/TCP Version: R1/Development
Keywords: tcp, gsoc, ideal timer Cc:
Blocked By: Blocking:
Platform: All

Description

Under additional considerations, rfc 5681 discusses the ideal timer:

“After an idle period, TCP cannot use the ACK clock to strobe new segments into the network, as all the ACKs have drained from the network. In addition, changing network conditions may have rendered TCP’s notion of the available end-to-end network capacity between two endpoints. ”

Solution:

“When TCP has not received a segment for more than one retransmission timeout, cwnd is reduced to the value of the restart window (RW) before transmission begins. We define RW = min(IW, cwnd)” where IW is the same described above in the slow start patch.

What I have done:

Whenever new data is received and for the time being we are acting as only a receiver, we reset the ideal timer.

When we are the sender, and all inflight data gets acknowledged, instead of cancelling the retransmission timer, we use it as Ideal timer. I have tried to avoid adding an extra timer since the same work can be accomplished using the already existing retransmission timer as the cycle for the ideal timer also equals RTO.

Upon the fire of the retransmission timer, _Retransmit is called. I have added a condition to check whether the timer was fired due to the ideal timeout or we actually need to retransmit a segment.

Attachments (2)

tcp-rfc-5681-implemented-ideal-timer.patch (4.0 KB ) - added by a-star 7 years ago.
0006-tcp-rfc-5681-implemented-ideal-timer.patch (2.4 KB ) - added by a-star 7 years ago.

Download all attachments as: .zip

Change History (4)

comment:1 by a-star, 7 years ago

patch: 01

comment:2 by jessicah, 7 years ago

Resolution: fixed
Status: newclosed

Applied in hrev51385.

Note: See TracTickets for help on using tickets.