Ignore:
Timestamp:
Jul 23, 2017, 2:29:40 PM (7 years ago)
Author:
coas-nagasima
Message:

SVNプロパティを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_asp/trunk/asp_dcre/tinet/netinet/tcp_timer.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=UTF-8
    r313 r315  
    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$
     
    119107
    120108/*
    121  *  局所関数
     109 *  局所関数
    122110 */
    123111
     
    131119
    132120/*
    133  *  バックオフ時間
     121 *  バックオフ時間
    134122 *
    135  *  再送を行うたびに、タイムアウトの時間を延長する。
     123 *  再送を行うたびに、タイムアウトの時間を延長する。
    136124 */
    137125
     
    143131        };
    144132
    145 #define TCP_TOTAL_BACK_OFF      511     /* バックオフ時間の合計 */
    146 
    147 /*
    148  *  tcp_timers -- タイムアウト処理
     133#define TCP_TOTAL_BACK_OFF      511     /* バックオフ時間の合計 */
     134
     135/*
     136 *  tcp_timers -- タイムアウト処理
    149137 */
    150138
     
    158146
    159147        /*
    160          *  再送タイマ
     148         *  再送タイマ
    161149         */
    162150        case TCP_TIM_REXMT:
    163151       
    164152                /*
    165                  *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) になったときは、
    166                  *  コネクションを切断する。
     153                 *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) になったときは、
     154                 *  コネクションを切断する。
    167155                 */
    168156                if (++ cep->rxtshift > TCP_MAX_REXMT_SHIFT) {
     
    174162
    175163                /*
    176                  *  再送タイムアウトを計算する。
     164                 *  再送タイムアウトを計算する。
    177165                 */
    178166                cep->rxtcur = tcp_range_set((T_TCP_TIME)(tcp_rexmt_val(cep) * tcp_back_off[cep->rxtshift]),
     
    182170
    183171                /*
    184                  *  srtt:   å¹³æ»‘化された RTT
    185                  *  rttvar: 平滑化された分散
     172                 *  srtt:   平滑化された RTT
     173                 *  rttvar: 平滑化された分散
    186174                 *
    187                  *  再送回数が最大再送回数の 1/4 になったときは、
    188                  *  平滑化された分散 (rttvar) に srtt を加算し、
    189                  *  平滑化された RTT を 0 にする。
     175                 *  再送回数が最大再送回数の 1/4 になったときは、
     176                 *  平滑化された分散 (rttvar) に srtt を加算し、
     177                 *  平滑化された RTT を 0 にする。
    190178                 * 
    191179                 */
     
    196184
    197185                /*
    198                  *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
    199                  *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
     186                 *  snd_nxt: 次に送信する SEQ、この時点では、前回送信した SEQ
     187                 *  snd_una: 未確認の最小送信 SEQ        または、確認された最大送信 SEQ
    200188                 *
    201                  *  前回送信した SEQ (snd_nxt) を
    202                  *  確認された最大送信 SEQ (snd_una) まで戻す。
     189                 *  前回送信した SEQ (snd_nxt) を
     190                 *  確認された最大送信 SEQ (snd_una) まで戻す。
    203191                 */
    204192                cep->snd_nxt = cep->snd_una;
     
    206194
    207195                /*
    208                  *  rtt: 往復時間の計測を中止する。
     196                 *  rtt: 往復時間の計測を中止する。
    209197                 */
    210198                cep->rtt     = 0;
    211199
    212200                /*
    213                  *  送信ウインドの設定
     201                 *  送信ウインドの設定
    214202                 *
    215                  *  snd_wnd:  相手の受信可能ウィンドサイズ
    216                  *  snd_cwnd: 輻輳ウィンドサイズ
    217                  *  maxseg  : 相手の最大受信セグメントサイズ
     203                 *  snd_wnd:  相手の受信可能ウィンドサイズ
     204                 *  snd_cwnd: 輻輳ウィンドサイズ
     205                 *  maxseg  : 相手の最大受信セグメントサイズ
    218206                 *
    219                  *  相手の受信可能ウィンドサイズ (snd_wnd) か、
    220                  *  輻輳ウィンドサイズ (snd_cwnd) の
    221                  *  どちらか小さいサイズの 1/2 を、更に
    222                  *  相手の最大受信セグメントサイズ (maxseg) で割った値。
    223                  *  ただし、2 以上
     207                 *  相手の受信可能ウィンドサイズ (snd_wnd) か、
     208                 *  輻輳ウィンドサイズ (snd_cwnd) の
     209                 *  どちらか小さいサイズの 1/2 を、更に
     210                 *  相手の最大受信セグメントサイズ (maxseg) で割った値。
     211                 *  ただし、2 以上
    224212                 */
    225213                if (cep->snd_wnd < cep->snd_cwnd)
     
    232220
    233221                /*
    234                  *  輻輳ウィンドサイズ (snd_cwnd) は
    235                  *  相手の受信可能ウィンドサイズ (snd_wnd) に、
    236                  *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) は
    237                  *  相手の受信可能ウィンドサイズ (snd_wnd) の win 倍に
    238                  *  設定する。
     222                 *  輻輳ウィンドサイズ (snd_cwnd) は
     223                 *  相手の受信可能ウィンドサイズ (snd_wnd) に、
     224                 *  輻輳ウィンドサイズのしきい値 (snd_ssthresh) は
     225                 *  相手の受信可能ウィンドサイズ (snd_wnd) の win 倍に
     226                 *  設定する。
    239227                 */
    240228                cep->snd_cwnd     = cep->maxseg;
     
    242230                cep->dupacks      = 0;
    243231
    244                 /* 出力をポストする。*/
     232                /* 出力をポストする。*/
    245233                cep->flags |= TCP_CEP_FLG_POST_OUTPUT;
    246234                sig_sem(SEM_TCP_POST_OUTPUT);
     
    248236
    249237        /*
    250          *  持続タイマ     
     238         *  持続タイマ       
    251239         */
    252240        case TCP_TIM_PERSIST:
    253241
    254242                /*
    255                  *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) をè¶
    256 ãˆã¦ã„て、
    257                  *  アイドル時間が、保留タイマの標準値 (TCP_TVAL_KEEP_IDLE、
    258                  *  標準 2 * 60 * 60 秒) 以上か、
    259                  *  再送タイムアウト値 * バックオフ時間の合計以上なら
    260                  *  コネクションを切断する。
     243                 *  最大再送回数 (TCP_MAX_REXMT_SHIFT、標準 12 回) を超えていて、
     244                 *  アイドル時間が、保留タイマの標準値 (TCP_TVAL_KEEP_IDLE、
     245                 *  標準 2 * 60 * 60 秒) 以上か、
     246                 *  再送タイムアウト値 * バックオフ時間の合計以上なら
     247                 *  コネクションを切断する。
    261248                 */
    262249                if (cep->rxtshift > TCP_MAX_REXMT_SHIFT &&
     
    268255                        }
    269256
    270                 /* 持続タイマを再設定し、出力をポストする。*/
     257                /* 持続タイマを再設定し、出力をポストする。*/
    271258                tcp_set_persist_timer(cep);
    272259
     
    276263
    277264        /*
    278          *  保留 (keep alive) タイマ
     265         *  保留 (keep alive) タイマ
    279266         */
    280267        case TCP_TIM_KEEP:
    281268
    282269                /*
    283                  *  コネクションが開設されるまでにタイムアウトしたら
    284                  *  コネクションの開設を中止する。
     270                 *  コネクションが開設されるまでにタイムアウトしたら
     271                 *  コネクションの開設を中止する。
    285272                 */
    286273                if (cep->fsm_state < TCP_FSM_ESTABLISHED) {
     
    316303
    317304        /*
    318          *  2MSL タイマ             
     305         *  2MSL タイマ           
    319306         */
    320307        case TCP_TIM_2MSL:
     
    332319
    333320/*
    334  *  tcp_cancel_timers -- å
    335 ¨ã¦ã®ã‚¿ã‚¤ãƒžã‚’キャンセルする。
     321 *  tcp_cancel_timers -- 全てのタイマをキャンセルする。
    336322 */
    337323
     
    348334
    349335/*
    350  *  tcp_tw_timo -- Time Wait 用 TCP 通信端点のタイムアウト処理
     336 *  tcp_tw_timo -- Time Wait 用 TCP 通信端点のタイムアウト処理
    351337 */
    352338
     
    360346
    361347        /*
    362          *  Time Wait 用 TCP 通信端点でタイムアウトのエントリを探索し、
    363          *  探索したエントリを空きにする。
     348         *  Time Wait 用 TCP 通信端点でタイムアウトのエントリを探索し、
     349         *  探索したエントリを空きにする。
    364350         */
    365351        frees = 0;
     
    371357
    372358        /*
    373          *  Time Wait 用 TCP 通信端点の空きエントリが発生したら
    374          *  標準 TCP 通信端点で Time Wait 中の TCP 通信端点を探索し、
    375          *  å¿
    376 è¦ãªæƒ
    377 å ±ã‚’ Time Wait 用 TCP 通信端点に移して、
    378          *  標準の TCP 通信端点を開放する。
     359         *  Time Wait 用 TCP 通信端点の空きエントリが発生したら
     360         *  標準 TCP 通信端点で Time Wait 中の TCP 通信端点を探索し、
     361         *  必要な情報を Time Wait 用 TCP 通信端点に移して、
     362         *  標準の TCP 通信端点を開放する。
    379363         */
    380364        if (frees > 0) {
     
    387371
    388372                /*
    389                  *  もっとも長い間 Time Wait している TCP 通信端点を開放する。
     373                 *  もっとも長い間 Time Wait している TCP 通信端点を開放する。
    390374                 */
    391375                while (waits > 0) {
     
    410394
    411395/*
    412  *  tcp_slow_timo -- 500 [ms] 毎に呼出される TCP タイムアウト関数
     396 *  tcp_slow_timo -- 500 [ms] 毎に呼出される TCP タイムアウト関数
    413397 */
    414398
     
    452436
    453437/*
    454  *  tcp_fast_timo -- 200 [ms] 毎に呼出される TCP タイムアウト関数
     438 *  tcp_fast_timo -- 200 [ms] 毎に呼出される TCP タイムアウト関数
    455439 */
    456440
     
    476460
    477461/*
    478  *  tcp_range_set -- 時間を指定した範囲に設定する。
     462 *  tcp_range_set -- 時間を指定した範囲に設定する。
    479463 */
    480464
     
    491475
    492476/*
    493  *  tcp_set_persist_timer -- 持続タイマの設定
     477 *  tcp_set_persist_timer -- 持続タイマの設定
    494478 */
    495479
     
    500484
    501485        /*
    502          *  srtt:   å¹³æ»‘化された RTT
    503          *  rttvar: 平滑化された分散
     486         *  srtt:   平滑化された RTT
     487         *  rttvar: 平滑化された分散
    504488         */
    505489        time = ((cep->srtt >> 2) + cep->rttvar) >> 1;
    506490
    507491        /*
    508          *  再送タイマも設定されていれば回復不能エラー
     492         *  再送タイマも設定されていれば回復不能エラー
    509493         */
    510494        if (cep->timer[TCP_TIM_REXMT])
     
    512496
    513497        /*
    514          *  持続タイマを設定する。
     498         *  持続タイマを設定する。
    515499         */
    516500        cep->timer[TCP_TIM_PERSIST] = tcp_range_set((T_TCP_TIME)(time * tcp_back_off[cep->rxtshift]),
     
    519503
    520504        /*
    521          *  再送回数を更新する。
     505         *  再送回数を更新する。
    522506         */
    523507        if (cep->rxtshift < TCP_MAX_REXMT_SHIFT)
Note: See TracChangeset for help on using the changeset viewer.