Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_timer.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    7  *  上記著作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã® (1)~(4) の条件か,Free Software Foundation
    9  *  によってå
    10 ¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
    11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
    12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
    14  *  利用と呼ぶ)することを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®æ¡ä»¶ã‚’満たすこと.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    33  *      害からも,上記著作権è€
    34 ãŠã‚ˆã³TOPPERSプロジェクトをå
    35 è²¬ã™ã‚‹ã“と.
     7 *  上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
     8 *  によって公表されている GNU General Public License の Version 2 に記
     9 *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
     10 *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
     11 *  利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次の条件を満たすこと.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    123111
    124112/*
    125  *  局所関数
     113 *  局所関数
    126114 */
    127115
     
    135123
    136124/*
    137  *  バックオフ時間
     125 *  バックオフ時間
    138126 *
    139  *  再送を行うたびに、タイムアウトの時間を延長する。
     127 *  再送を行うたびに、タイムアウトの時間を延長する。
    140128 */
    141129
     
    147135        };
    148136
    149 #define TCP_TOTAL_BACK_OFF      511     /* バックオフ時間の合計 */
    150 
    151 /*
    152  *  tcp_timers -- タイムアウト処理
     137#define TCP_TOTAL_BACK_OFF      511     /* バックオフ時間の合計 */
     138
     139/*
     140 *  tcp_timers -- タイムアウト処理
    153141 */
    154142
     
    162150
    163151        /*
    164          *  再送タイマ
     152         *  再送タイマ
    165153         */
    166154        case TCP_TIM_REXMT:
    167155       
    168156                /*
    169                  *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) になったときは、
    170                  *  コネクションを切断する。
     157                 *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) になったときは、
     158                 *  コネクションを切断する。
    171159                 */
    172160                if (++ cep->rxtshift > TCP_MAX_REXMT_SHIFT) {
     
    178166
    179167                /*
    180                  *  再送タイムアウトを計算する。
     168                 *  再送タイムアウトを計算する。
    181169                 */
    182170                cep->rxtcur = tcp_range_set((T_TCP_TIME)(tcp_rexmt_val(cep) * tcp_back_off[cep->rxtshift]),
     
    186174
    187175                /*
    188                  *  srtt:   å¹³æ»‘化された RTT
    189                  *  rttvar: 平滑化された分散
     176                 *  srtt:   平滑化された RTT
     177                 *  rttvar: 平滑化された分散
    190178                 *
    191                  *  再送回数が最大再送回数の 1/4 になったときは、
    192                  *  平滑化された分散 (rttvar) に srtt を加算し、
    193                  *  平滑化された RTT を 0 にする。
     179                 *  再送回数が最大再送回数の 1/4 になったときは、
     180                 *  平滑化された分散 (rttvar) に srtt を加算し、
     181                 *  平滑化された RTT を 0 にする。
    194182                 * 
    195183                 */
     
    200188
    201189                /*
    202                  *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
    203                  *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
     190                 *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
     191                 *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
    204192                 *
    205                  *  前回送信した SEQ (snd_nxt) を
    206                  *  確認された最大送信 SEQ (snd_una) まで戻す。
     193                 *  前回送信した SEQ (snd_nxt) を
     194                 *  確認された最大送信 SEQ (snd_una) まで戻す。
    207195                 */
    208196                cep->snd_nxt = cep->snd_una;
     
    210198
    211199                /*
    212                  *  rtt: 往復時間の計測を中止する。
     200                 *  rtt: 往復時間の計測を中止する。
    213201                 */
    214202                cep->rtt     = 0;
    215203
    216204                /*
    217                  *  送信ウインドの設定
     205                 *  送信ウインドの設定
    218206                 *
    219                  *  snd_wnd:  相手の受信可能ウィンドサイズ
    220                  *  snd_cwnd: 輻輳ウィンドサイズ
    221                  *  maxseg  : 相手の最大受信セグメントサイズ
     207                 *  snd_wnd:  相手の受信可能ウィンドサイズ
     208                 *  snd_cwnd: 輻輳ウィンドサイズ
     209                 *  maxseg  : 相手の最大受信セグメントサイズ
    222210                 *
    223                  *  相手の受信可能ウィンドサイズ (snd_wnd) か、
    224                  *  輻輳ウィンドサイズ (snd_cwnd) の
    225                  *  どちらか小さいサイズの 1/2 を、更に
    226                  *  相手の最大受信セグメントサイズ (maxseg) で割った値。
    227                  *  ただし、2 以上
     211                 *  相手の受信可能ウィンドサイズ (snd_wnd) か、
     212                 *  輻輳ウィンドサイズ (snd_cwnd) の
     213                 *  どちらか小さいサイズの 1/2 を、更に
     214                 *  相手の最大受信セグメントサイズ (maxseg) で割った値。
     215                 *  ただし、2 以上
    228216                 */
    229217                if (cep->snd_wnd < cep->snd_cwnd)
     
    236224
    237225                /*
    238                  *  輻輳ウィンドサイズ (snd_cwnd) は
    239                  *  相手の受信可能ウィンドサイズ (snd_wnd) に、
    240                  *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) は
    241                  *  相手の受信可能ウィンドサイズ (snd_wnd) の win 倍に
    242                  *  設定する。
     226                 *  輻輳ウィンドサイズ (snd_cwnd) は
     227                 *  相手の受信可能ウィンドサイズ (snd_wnd) に、
     228                 *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) は
     229                 *  相手の受信可能ウィンドサイズ (snd_wnd) の win 倍に
     230                 *  設定する。
    243231                 */
    244232                cep->snd_cwnd     = cep->maxseg;
     
    246234                cep->dupacks      = 0;
    247235
    248                 /* 出力をポストする。*/
     236                /* 出力をポストする。*/
    249237                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    250238                sig_sem(SEM_TCP_POST_OUTPUT);
     
    252240
    253241        /*
    254          *  持続タイマ     
     242         *  持続タイマ       
    255243         */
    256244        case TCP_TIM_PERSIST:
    257245
    258246                /*
    259                  *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) をè¶
    260 ãˆã¦ã„て、
    261                  *  アイドル時間が、保留タイマの標準値 (TCP_TVAL_KEEP_IDLE、
    262                  *  標準 2 * 60 * 60 秒) 以上か、
    263                  *  再送タイムアウト値 * バックオフ時間の合計以上なら
    264                  *  コネクションを切断する。
     247                 *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) を超えていて、
     248                 *  アイドル時間が、保留タイマの標準値 (TCP_TVAL_KEEP_IDLE、
     249                 *  標準 2 * 60 * 60 秒) 以上か、
     250                 *  再送タイムアウト値 * バックオフ時間の合計以上なら
     251                 *  コネクションを切断する。
    265252                 */
    266253                if (cep->rxtshift > TCP_MAX_REXMT_SHIFT &&
     
    272259                        }
    273260
    274                 /* 持続タイマを再設定し、出力をポストする。*/
     261                /* 持続タイマを再設定し、出力をポストする。*/
    275262                tcp_set_persist_timer(cep);
    276263
     
    280267
    281268        /*
    282          *  保留 (keep alive) タイマ
     269         *  保留 (keep alive) タイマ
    283270         */
    284271        case TCP_TIM_KEEP:
    285272
    286273                /*
    287                  *  コネクションが開設されるまでにタイムアウトしたら
    288                  *  コネクションの開設を中止する。
     274                 *  コネクションが開設されるまでにタイムアウトしたら
     275                 *  コネクションの開設を中止する。
    289276                 */
    290277                if (cep->fsm_state < TCP_FSM_ESTABLISHED) {
     
    320307
    321308        /*
    322          *  2MSL タイマ             
     309         *  2MSL タイマ           
    323310         */
    324311        case TCP_TIM_2MSL:
     
    336323
    337324/*
    338  *  tcp_cancel_timers -- å
    339 ¨ã¦ã®ã‚¿ã‚¤ãƒžã‚’キャンセルする。
     325 *  tcp_cancel_timers -- 全てのタイマをキャンセルする。
    340326 */
    341327
     
    352338
    353339/*
    354  *  tcp_tw_timo -- Time Wait 用 TCP 通信端点のタイムアウト処理
     340 *  tcp_tw_timo -- Time Wait 用 TCP 通信端点のタイムアウト処理
    355341 */
    356342
     
    364350
    365351        /*
    366          *  Time Wait 用 TCP 通信端点でタイムアウトのエントリを探索し、
    367          *  探索したエントリを空きにする。
     352         *  Time Wait 用 TCP 通信端点でタイムアウトのエントリを探索し、
     353         *  探索したエントリを空きにする。
    368354         */
    369355        frees = 0;
     
    375361
    376362        /*
    377          *  Time Wait 用 TCP 通信端点の空きエントリが発生したら
    378          *  標準 TCP 通信端点で Time Wait 中の TCP 通信端点を探索し、
    379          *  å¿
    380 è¦ãªæƒ
    381 å ±ã‚’ Time Wait 用 TCP 通信端点に移して、
    382          *  標準の TCP 通信端点を開放する。
     363         *  Time Wait 用 TCP 通信端点の空きエントリが発生したら
     364         *  標準 TCP 通信端点で Time Wait 中の TCP 通信端点を探索し、
     365         *  必要な情報を Time Wait 用 TCP 通信端点に移して、
     366         *  標準の TCP 通信端点を開放する。
    383367         */
    384368        if (frees > 0) {
     
    391375
    392376                /*
    393                  *  もっとも長い間 Time Wait している TCP 通信端点を開放する。
     377                 *  もっとも長い間 Time Wait している TCP 通信端点を開放する。
    394378                 */
    395379                while (waits > 0) {
     
    414398
    415399/*
    416  *  tcp_slow_timo -- 500 [ms] 毎に呼出される TCP タイムアウト関数
     400 *  tcp_slow_timo -- 500 [ms] 毎に呼出される TCP タイムアウト関数
    417401 */
    418402
     
    456440
    457441/*
    458  *  tcp_fast_timo -- 200 [ms] 毎に呼出される TCP タイムアウト関数
     442 *  tcp_fast_timo -- 200 [ms] 毎に呼出される TCP タイムアウト関数
    459443 */
    460444
     
    480464
    481465/*
    482  *  tcp_range_set -- 時間を指定した範囲に設定する。
     466 *  tcp_range_set -- 時間を指定した範囲に設定する。
    483467 */
    484468
     
    495479
    496480/*
    497  *  tcp_set_persist_timer -- 持続タイマの設定
     481 *  tcp_set_persist_timer -- 持続タイマの設定
    498482 */
    499483
     
    504488
    505489        /*
    506          *  srtt:   å¹³æ»‘化された RTT
    507          *  rttvar: 平滑化された分散
     490         *  srtt:   平滑化された RTT
     491         *  rttvar: 平滑化された分散
    508492         */
    509493        time = ((cep->srtt >> 2) + cep->rttvar) >> 1;
    510494
    511495        /*
    512          *  再送タイマも設定されていれば回復不能エラー
     496         *  再送タイマも設定されていれば回復不能エラー
    513497         */
    514498        if (cep->timer[TCP_TIM_REXMT])
     
    516500
    517501        /*
    518          *  持続タイマを設定する。
     502         *  持続タイマを設定する。
    519503         */
    520504        cep->timer[TCP_TIM_PERSIST] = tcp_range_set((T_TCP_TIME)(time * tcp_back_off[cep->rxtshift]),
     
    523507
    524508        /*
    525          *  再送回数を更新する。
     509         *  再送回数を更新する。
    526510         */
    527511        if (cep->rxtshift < TCP_MAX_REXMT_SHIFT)
Note: See TracChangeset for help on using the changeset viewer.