[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:TCPスロータイマ
}}}
== TCPスロータイマ == #SECTION07892000000000000000
起動間隔の長い以下の処理はTCPスロータイマ機能を用いて一元的に管理されている。TCPスロータイマはTCPプロトコル内に一つだけ存在する。TCPスロータイマハンドラ(tcp_slttimer_handler関数)は、スロータイマテーブル(tcp_slt_array)に登録されている下記項目の関数を呼び出す。
||スロット || 起動関数 || 説明 ||
||TCP_SLT_SYNACK || tcp_syn_recv_timer || コネクション確立時のSYN+ACKパケットの再送||
|| TCP_SLT_KEEPALIVE || tcp_keep_alive || キープアライブパケットの送出。||
|| TCP_SLT_TWKILL || tcp_twkill || TIME_WAITソケットの削除||
* tcp_inc_slow_timer関数
* TCPスロータイマの起動要求回数を1増やす
* 登録されているもののうち最も起動時刻が近いものを選び、 その時刻にtcp_sltimer_handler関数が起動されるように 登録する(mod_timer関数, add_timer関数)。
* tcp_dec_slow_timer関数
* TCPスロータイマの起動要求回数を1減らす
* tcp_sltimer_handler関数
* スロータイマテーブル(tcp_slt_array)に登録されているもののうち、 起動要求時間に達した項目の関数を呼び出す。
* 登録されているもののうち最も起動時刻が近いものを選び、 その時刻にtcp_sltimer_handler関数が起動されるように 再登録する(mod_timer関数)。
* tcp_keep_alive関数
* 接続先から強制的にACKを送り返させるために、一つ前の(古い) シーケンス番号でサイズが0のパケットを相手先に 送りつける(tcp_write_wakeup関数)。
* 一定回数tcp_keep_alive関数が起動される間、接続先から ACKが戻って来なければソケットの状態をTCP_CLOSEにする。
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]