• 検索結果がありません。

コネクション分割管理方式のデータ構造

ドキュメント内 ( ) (ページ 41-45)

Time vs. Cwnd

4. 提案するコネクション分割管理方式

4.3 コネクション分割管理方式のデータ構造

本節では,コネクション分割管理方式で必要となるデータ構造について述べる.

4.3.1 輻輳制御情報の定義

各サブコネクションに対しては従来のTCPにおける輻輳制御を行うため,各サ ブコネクションは各々の cwnd(以下sc cwndと呼ぶ)ssthresh(以下sc ssthresh と呼ぶ)ownd(以下sc owndと呼ぶ),を持つ.

輻輳制御に用いる変数の初期値及び増減のタイミングを述べる.

cwnd (コネクションごと)

{ 初期値は,MSSとする

{ ACK 受信時に,ACKを受信したサブコネクションに加えられる増分 を加算する.

{ 増分は,ACK を受信したサブコネクションの sc cwndの増加分に等 しい.

{ 再送タイムアウト時,コネクションの idle 時,および,ICMPsource

quench (送信量が多すぎる場合にネットワークから送られるメッセー

)受信時は cwnd=MSSにする.

{ 定常時に満たすべき条件: cwnd=6 sc cwnd

sc cwnd (サブコネクションごと)

{ サブコネクションの congestion windowである.

{ 初期値を MSSとする.

{ ACK 受信時の増分は,sc cwnd < sc ssthreshslow start 適用時は

1MSS ACK されるごとに 1MSSsc cwnd sc ssthresh congestion

avoidance時は,1MSS ACK されるごとにMSS2=sc cwnd

{ 再送タイムアウト時,コネクションの idle 時,および,ICMPsource

quench 受信時は sc cwnd =MSSにする.

ssthresh (コネクションごと)

{ 初期値は (21601)2214.ウインド ウサイズの最大値.

{ 条件ssthresh=6sc ssthreshを満たす.

sc ssthresh (サブコネクションごと)

{ サブコネクションの slow start thresholdである

{ 初期値は (21601)2214/n

{ ロス発生時には,sc ssthresh =max(sc cwnd=2;2MSS) (MSS 単位に 切り上げ)

ownd (コネクションごと)

{ 初期値は 0である.

{ 常に満たすべき条件は ownd=6sc ownd

sc ownd (サブコネクションごと)

{ サブコネクションの アウトスタンディングウインド ウである.

{ 初期値は 0である.

{ セグ メント送信時の増分は,送信したセグ メントの大きさに等しい.

{ ACK および SACK 受信時の減少分は,ACK されたセグ メントの大 きさに等しい.

4.3.2 送信リスト の定義

本研究で提案するコネクション分割管理方式は,送信したセグメントの記録を 必要とするため,セグメントの送信のたびに送信したセグメントのシーケンスナ ンバーを記録する構造を有する.この構造を送信リストと呼ぶ.また,送信リス ト中,1つのセグメントに対する部分を,送信リスト項目と呼ぶ.

送信リストの各項目は以下の要素を保持する.

先頭シーケンスナンバー

末端シーケンスナンバー

再送処理用シーケンスナンバー

管理用情報

{ 送信を行ったサブコネクションを同定する情報

{ 送信セグ メントの属性

{ NACK カウント

TCP コネクション管理ブロックから参照でき,かつ,各サブコネクション管 理ブロックから,そのサブコネクションが送信したセグメントの送信リスト項目 のみを参照できる構造を送信リストは有する.送信リスト項目は,このどちらか

らでもシーケンスナンバー空間上で昇順,または降順に参照できるように整列し ておかなければならない.

送信リストへの送信リスト項目の追加は以下の場合に限定する.

1. 保持している送信リストに記録されている最大のシーケンスナンバーを持 つセグ メントのシーケンスナンバーより大きいシーケンスナンバーの送信 セグ メントを送信した場合.

2. 通信開始時や再送タイムアウト後など ,送信リストが空の場合.

上記1の制限によって,再送タイムアウト以外の再送,すなわちfastretransmit

および, fast recovery 中にセグ メントが再送される時には送信セグ メントが送

信リストに記録されないことになる.

再送したセグメントが再びセグメントロスに遭遇した場合,再送したセグメン トの再送が必要になる.そのため,送信リスト項目中の再送処理用シーケンスナ ンバーの部分には以下のシーケンス番号を入れる.

初回送信時

送信セグ メントの先頭シーケンスナンバー

再送時

再送を行ったサブコネクションがその時点で送信済みの最大のシーケンス ナンバーを持つセグ メントの末尾のシーケンスナンバー.

4.3.3 送信側 SACKedブロックの定義

受信側から送信された SACK 情報を受信した送信側は,SACK 情報を利用す るため,送信リストとは別に,SACKされたセグメントを記録しておくSACKed ブロックを保持する.シーケンスナンバー空間上で昇順,または降順に整列して おくのが望ましい.

4.3.4 サブコネクションと送信バッファサイズの関係

多重度の上限は送信バッファサイズに依存する.多重度n の場合,1つのサブ コネクションあたりには平均すると送信バッファサイズを多重度で割った大きさ

のバッファが割り当てられる形になる.例えばバッファサイズ 128kバイトの場 合,多重度32では 1サブコネクションあたり 4k バイトとなり,MTU1500 バイトの場合,2.7パケット分しかなくなり,各サブコネクションが輻輳制御や 再送制御を行うのは難しいと考えられる.

ドキュメント内 ( ) (ページ 41-45)