Date: Mon, 15 Jun 2009 00:47:53 +0800 From: "wangfangcs" <wangfangcs@gmail.com> To: "rpaulo" <rpaulo@FreeBSD.org>, "soc-status" <soc-status@freebsd.org> Subject: tcputo status report 2 Message-ID: <200906150047512037622@gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, The job in this week can be divided into two parts. The first part is finish the UTO relative input and output sequence. Because the TCP User Timeout Option is an advisory TCP option that does not change processing of subsequent segments. Consequently, the specification does not define a reliability handshake for UTO option exchanges. But implementations should implement local mechanisms to improve delivery reliability. For passive open, syncache needs to be modified. And because syncache does not use tcp_output(use ip_output directly), it's not complex. For active open and the situation that there is no place in tcp header for UTO in SYN segment, it needs to be handled in tcp_output. For outgoing UTO option, if the outgoing segmeng is a SYN segment or a data segment, put UTO option in the segment if there is enough space, and record the outgoing sequence plus data length as carrier sequence. Retransmit the UTO option until the carrier sequence is acked by other peer. The second part is the UTO timer strategy. In the case of UTO is disabled and user or other side does not use UTO, use the original retransmission strategy. Otherwise, get the user timeout value according to RFC5482. I use two variables to implement uto timer strategy, first is t_impl_uto, that's the value get according to RFC5482, second is t_left_uto. When doing the first retransmission, set t_left_uto=t_impl_uto, then if doing more retransmissions, reduce t_left_uto every time by the retransmit interval. If t_left_uto goes to zero, drop the connection. Regards, Fang Wang 2009-06-15
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906150047512037622>