Week 0: TCP performance test and tunning

May 13th to May 23th

  • Implement TCP receive queue
  • Implement TCP SACK [RFC 2018]
  • Implement TCP Window Scale [RFC 1323]

The test results can be found at these notes:

Found TCP FIN ACK number issue

Upper layer protocols stop the TCP xfer by calling tcp_xfer_close().

If the call path is:

   tcp_rx()->tcp_rx_data()->...Upper layer...->tcp_xfer_close().
   Which is at lease happened in HTTP while received expected
   length of data.

Sending FIN in tcp_xfer_close() in this case, will cause error ACK number, since the ACK number have not updated by that time. Later trying to send a correct one in tcp_rx() will fail too, due to the TCP state already changed.

This patch let the TCP stack send FIN in normal tcp_rx() flow if the packet contains the last data of the session.

QR Code
QR Code soc:2010:cooldavid:journal:week0 (generated for current page)