| ブログ - 最新エントリ |
最新エントリ配信 |
最新エントリ
2007/04/18
|
カテゴリ: Miscellaneous :
執筆者: unix (4:39 pm)
|
TCPのコネクション確立も、何も通信が無いときの動きも 今まで説明しました。きちんと送信側が送信したにも関わらず 途中でパケットがなくなってしまうことがあります。 TCPセッション中にデータを送信しますが、そのデータの 入ったパケットが相手に届く間に消えてなくなった場合 送り元がもう一度送りなおすんです。 ※どうやって届いているのか否かの判断をしているかは今後機会があれば説明します。 その「送りなおす」つまり再送の間隔を決めるのが tcp_retries1 tcp_retries2 という2つのパラメータなんです。 まず送ったのに届かないと判断した場合はtcp_retries1の値(デフォルト3回)に 従って、設定された値の回数だけ再送します。 デフォルト値では3秒から8分の間になります。 そしてそれでも消失してしまうなら、ネットワークとして 問題ありという判断になり、ルートの更新などが行われます。 そして、さらに今度はtcp_retries2のパラメータの値(デフォルト15回)に 従って再送ができなければセッションを切断します。 【変更する場合】 ●[再起動したら無効になる方法] # echo 5 > /proc/sys/net/ipv4/tcp_retries1 # echo 2 > /proc/sys/net/ipv4/tcp_retries2 ●[再起動しても有効になる方法] # vi /etc/sysctl.conf net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 2 を追記 # sysctl -w ←変更を反映 # sysctl -p ←確認 |
2007/04/10
|
カテゴリ: Miscellaneous :
執筆者: unix (11:46 am)
|
TCPのセッションを「確立したまま」にする時間が tcp_keepalive_time であることを説明しましたが、 このtcp_keepalive_timeの時間(デフォルト2時間)が来ると どうなるかというと tcp_keepalive_probes tcp_keepalive_intvl という2つのパラメータの値が効いてきます。 tcp_keepalive_probesに指定したデフォルト9回の無通信のTCPセッションに対して 定期的に検査をします、その間隔はというとtcp_keepalive_intvlで指定した デフォルト75秒になります。 つまり最高で 9回x75秒=675秒(約11分) 経過し相手から反応が無ければ接続を切ります。 tcpのkeepalive関係をまとめると
【変更する場合】 ●[再起動したら無効になる方法] # echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes # echo 2 > /proc/sys/net/ipv4/tcp_keepalive_intvl ●[再起動しても有効になる方法] # vi /etc/sysctl.conf net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 2 を追記 # sysctl -w ←変更を反映 # sysctl -p ←確認 |
2007/04/02
|
カテゴリ: Miscellaneous :
執筆者: unix (4:48 pm)
|
前回までTCPのセッションオープンについてみてきましたが 今回からはTCPのセッションが確立した後、特にデータの転送など 何も無くても一度確立して、切断するまでは確立したままになります。 その「確立したまま」の時間を定義するのが tcp_keepalive_time とういカーネルパラメータです。 デフォルトは「7200秒」になっています。 7200秒=120分=2時間 です。 注※2時間後に切断されるわけではない。 適当にこの2時間という時間を決めているわけではありません "RFC1122 Requirements for Internet Hosts" 4.2.3.6 TCP Keep-Alives http://www.faqs.org/rfcs/rfc1122.html の2時間以内にしましょうというのが元となっています。 正確にはこのパラメータはkeep-aliveプローブ(定期的な検査)の送信までの時間になります。 ですから7200秒後にプローブが始まるというわけです。 ただアプリケーション側でのキープアライブなどがあり そちらで制御されている場合もあります。 【変更する場合】 ●[再起動したら無効になる方法] # echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time ●[再起動しても有効になる方法] # vi /etc/sysctl.conf net.ipv4.tcp_keepalive_time = 300 を追記 # sysctl -w ←変更を反映 # sysctl -p ←確認 |











