[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(toppers-users 2087) Re: クロックティックの変更(was Re: TINETが出力するログについて。)



協栄エレクトロニクスの小峰様

苫小牧高専、情報工学科の阿部です。

この現象は、TCP の再送タイムアウトによるものです。

>tcpの送受信を行うシステム(CPU:SH2、TOPPERS 1.4、TINET 1.2)の評価中、
>通信中のLANケーブル抜けテストを行ったところ、tcp_cls_cep()から8分程制御が
>戻らない現象が発生いたしました。
>受動オープン側でtcp_cls_cep()を実行した際に、最大セグメント生存時間(1分
>間)
>の間、制御を返さない事は確認しておりましたが、約8分間も制御が戻らないこ
>とは初めてでした。
>tcp_cls_cep()や他のAPIの使用方法に誤りがあるのでしょうか。ご教授願います。
>
>発生手順は以下の通りです。
>1.TCPの通信中にLANケーブルを抜く。
>2.tcp_rcv_dat():タイムアウト10秒がE_TMOUTになる。
>3.tcp_rcv_dat()がエラーを返したため切断処理、tcp_sht_cep()を実行。
>4.tcp_sht_cep()に続けて、tcp_cls_cep()を実行するが、制御が戻るまで8分程
>  時間が掛かる。

tcp_sht_cep を実行すると、切断セグメントを送信しますが、応答がないため、
TCP の仕様では、12回再送を試みます。その延べ秒数が 512秒(厳密には、512単位)で、
約 8 分になります。

>5.約8分後tcp_cls_cep()がE_OBJを返す。
>6.次回のTCP接続のため tcp_acp_cep()を実行して接続待ち。
>
>なお、tcp_cls_cep()のタイムアウト時間に2〜7分の時間を設定して見ましたが、
>tcp_cls_cep()がE_TMOUTを返した後、次回の接続待ちのための tcp_acp_cep()
>が-41(E_OBJ)を返してしまいます。

以上、TCP の仕様上の振る舞いです。

--
.\" 苫小牧工業高等専門学校 情報工学科 教授 阿部 司
.\" E-mail: abe at jo tomakomai-ct ac jp  TEL/FAX: 0144-67-8937