タイムアウトの制御

2014/01/23

接続確立時のタイムアウトの制御

存在しないアドレスに接続を試みた場合のパケット再送の様子(一部省略)
# snoop -i timeout.pkt -td host 192.168.1.171
# snoop -i timeout.pkt -td host 192.168.1.171
  1   0.00000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
  2   1.13898 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
  3   2.27001 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
  4   4.51999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
  5   9.02013 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
  6  18.01987 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
  7  36.02000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
  8  60.01999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=46100 Syn Seq=3206195424
 

経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 送信
1.1 1.1 再送 _rexmit_interval_initial(=1s)
3.4 2.3 再送
7.9 4.5 再送
16.9 9.0 再送
34.9 18.0 再送
70.9 36.0 再送
130.9 60.0 再送 _rexmit_inteval_max(=60s)
180.0 - 中断 _ip_abort_cinterval(=180s)

_ip_abort_cinterval を 6分に変更
# ipadm set-prop -p _ip_abort_cinterval=360000 tcp
# ipadm set-prop -p _ip_abort_cinterval=360000 tcp
# ipadm show-prop -p _ip_abort_cinterval tcp
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
tcp   _ip_abort_cinterval   rw   360000       360000       180000       1000-4294967295
 

存在しないアドレスに接続を試みた場合のパケット再送の様子(一部省略)
# snoop -i timeout.pkt -td host 192.168.1.171
# snoop -i timeout.pkt -td host 192.168.1.171
   1   0.00000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   2   1.13559 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   3   2.26998 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   4   4.52002 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   5   9.02007 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   6  18.01993 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   7  36.01997 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   8  60.02000 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
   9  60.01999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
  10  60.01999 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
  11  60.02005 192.168.10.161 -> 192.168.1.171 TCP D=9999 S=36615 Syn Seq=3948165482
 

経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 送信
1.1 1.1 再送 _rexmit_interval_initial(=1s)
3.4 2.3 再送
7.9 4.5 再送
16.9 9.0 再送
34.9 18.0 再送
70.9 36.0 再送
130.9 60.0 再送 _rexmit_inteval_max(=60s)
190.0 60.0 再送
250.9 60.0 再送
310.9 60.0 再送
360.0 - 中断 _ip_abort_cinterval(=360s)

接続確立後のタイムアウトの制御

接続確立後、サーバ側の NIC をダウンさせて確認。

クライアント側の再送状況(一部省略)
# snoop -i timeout.pkt host 192.168.10.181
  1   0.00000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Syn Seq=375712661
  2   0.00764 192.168.10.181 -> 192.168.10.161 TCP D=55189 S=9999 Syn Ack=375712662 Seq=238171285
  3   0.00170 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Ack=238171286 Seq=375712662
  4  60.00100 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662
  5   0.29901 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662
  6   0.57994 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662
  7   1.15000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662
  8   2.28002 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=55189 Push Ack=238171286 Seq=375712662
 

経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 接続
0 0 接続
0 0 接続 3wayハンドシェイク
送信先のNICをダウン
60.0 60.0 送信 sleep(60)
60.3 0.3 再送
60.9 0.6 再送
62.0 1.1 再送
64.4 2.3 再送

372.6 308.2 中断 _ip_abort_interval(=300s)

_ip_abort_interval を 8分に変更
# ipadm set-prop -p _ip_abort_interval=480000 tcp
# ipadm set-prop -p _ip_abort_interval=480000 tcp
# ipadm show-prop -p _ip_abort_interval tcp
PROTO PROPERTY              PERM CURRENT      PERSISTENT   DEFAULT      POSSIBLE
tcp   _ip_abort_interval    rw   480000       480000       300000       500-4294967295
 
切断までの時間が延びている。

クライアント側の再送状況(一部省略)
# snoop -i timeout.pkt host 192.168.10.181
# snoop -i timeout.pkt host 192.168.10.181
  1   0.00000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Syn Seq=1379174424
  2   0.00148 192.168.10.181 -> 192.168.10.161 TCP D=41853 S=9999 Syn Ack=1379174425 Seq=1241697769
  3   0.00361 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Ack=1241697770 Seq=1379174425
  4  60.00100 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425
  5   0.29898 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425
  6   0.58000 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425
  7   1.15002 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425
  8   2.27999 192.168.10.161 -> 192.168.10.181 TCP D=9999 S=41853 Push Ack=1241697770 Seq=1379174425
 

経過時間(sec) 間隔(RTO:sec) アクション パラメータ
0 - 接続
0 0 接続
0 0 接続 3wayハンドシェイク
送信先のNICをダウン
60.0 60.0 送信 sleep(60)
60.3 0.3 再送
60.9 0.6 再送
62.1 1.2 再送
64.4 2.3 再送

552.6 488.2 中断 _ip_abort_interval(=480s)

0 件のコメント:

コメントを投稿