[haiku-bugs] [Haiku] #13634: tcp: rfc-5681: implementing an ideal timer

  • From: "a-star" <trac@xxxxxxxxxxxx>
  • Date: Tue, 25 Jul 2017 22:35:47 -0000

#13634: tcp: rfc-5681: implementing an ideal timer
------------------------------------+------------------------------
 Reporter:  a-star                  |        Owner:  axeld
     Type:  task                    |       Status:  new
 Priority:  normal                  |    Milestone:  Unscheduled
Component:  Network & Internet/TCP  |      Version:  R1/Development
 Keywords:  tcp, gsoc, ideal timer  |   Blocked By:
 Blocking:                          |  Has a Patch:  0
 Platform:  All                     |
------------------------------------+------------------------------
 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.

--
Ticket URL: <https://dev.haiku-os.org/ticket/13634>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.

Other related posts: