以下、本発明の実施の形態を図に基づいて説明する。なお、下記実施の形態1から3では、各実施の形態に係る配信管理システムにおいて、1つの送信装置がデータを送信し、1つの受信装置がそのデータを受信する例を用いるが、同様の送信装置や受信装置が2つ以上存在してもよい。また、受信装置が送信装置と同等の機能を有してデータを送信し、送信装置が受信装置と同等の機能を有してそのデータを受信してもよい。
実施の形態1.
図1は本実施の形態に係る配信管理システムの構成を示すブロック図である。
本実施の形態に係る配信管理システムでは、送信装置1と一般的なTCPによる通信を行う回線により結ばれた1個以上のスプーフィング機能搭載ゲートウェイ(SG2a、SG2b、SG2c、…、SG2n)と、受信装置3が直線状に接続して構成される。このとき、送信装置1とSG2aは、通信系5よりも伝送遅延の小さな通信回線4で結ばれている。またSG2aと受信装置3との間は伝送遅延が大きな双方向の通信系5により結ばれている。通信系5は、衛星回線や海底ケーブルに代表される、通常のTCP通信のタイムアウト値よりも長い伝送遅延がある回線とする。
このシステムにおいて、送信装置1は、SG2aと接続するとともにパケットを入出力するための通信部101を具備する。また、送信装置1は、配信管理装置を兼ね、通信部101の他に、ルートマップ102、スプーフィング適用SG管理テーブル103、スプーフィング適用制御部104を具備する。通信部101はスプーフィング命令送信部及び通信品質測定部を実装する。
ルートマップ102は、送信装置1から受信装置3に至る経路(ルート)上の回線及びこの回線をつなぐスプーフィング機能搭載ゲートウェイ(以下、ゲートウェイという)に関する情報を保持する。また、スプーフィング適用SG管理テーブル103はスプーフィング管理情報記憶部の一例であり、このルートマップ102上のゲートウェイ同士を接続する回線(セグメント)の状態及び各ゲートウェイに対するスプーフィング機能の適用(ON)/非適用(OFF)の情報を管理する。そして、スプーフィング適用制御部104は、ルートマップ102及びスプーフィング適用SG管理テーブル103の情報を用いてルート上にある1つ以上のゲートウェイに対しスプーフィングを適用するか否か決定し、該当するゲートウェイにおけるスプーフィング機能のON/OFFを制御する。
本実施の形態では、ルートマップ102及びスプーフィング適用SG管理テーブル103を同一テーブルにまとめることで情報検索の効率化を図っているが、それぞれが独立したテーブルでもよい。
SG2aはゲートウェイ装置の一例であり、第1通信部201、第2通信部202、送信バッファ203、受信バッファ204、tmpACK作成部205、tmpACKバッファ206、SG配信管理部207、配信管理テーブル208、配信データ記録部209を具備する。
第1通信部201は、送信装置1と接続するとともにパケットを入出力する。第1通信部201にはスプーフィング命令受信部が実装される。また、第2通信部202は、通信系5を経由して受信装置3と接続するとともにパケットを入出力する。
送信バッファ203は送信蓄積部の少なくとも一部を実装し、第2通信部202が受信装置3にパケットを送信する際に、当該送信パケットを一時的に蓄積する。また、受信バッファ204は受信蓄積部の一例であり、受信装置3からパケットを受信する際に、当該受信パケットを一時的に蓄積する。
tmpACK作成部205は送達確認応答生成部の一例であり、送信装置1から受信したパケットに対する擬似ACKである仮の送達確認応答(tmpACK)を作成する。tmpACKバッファ206は送信蓄積部の少なくとも一部を実装し、このtmpACK作成処理のために、送信装置1から受信したパケットを保存する。
SG配信管理部207は配信管理部の一例であり、受信装置3に転送したパケットに対しtmpACK返送機能を適用すべきかどうかの判断を行い、tmpACK返送機能を適用すると判断した場合は、tmpACK作成部205にtmpACKを作成させる。tmpACK作成部205がtmpACKを作成すると、SG配信管理部207において、このtmpACKのルーティングを決定し、IP(Internet Protocol)ヘッダのルーティングオプションを作成する。そして、tmpACK返送の対象となるパケットが辿ったルートをさかのぼる方向へとtmpACKを返信する。さらに、受信装置3に転送したパケットが届いたかどうかを判断し、届かなかったと判断した場合は再送を行う。
配信管理テーブル208は配信管理情報記憶部の一例であり、仮の送達確認応答を送信装置1に対し送信したか否かの情報、及び受信装置3が生成し通信系5を経由して送られてきた送達確認応答に関するデータを格納する。配信データ記録部209はこれらのデータを配信管理テーブル208に書き込む。
受信装置3は通信系5を経由して各ゲートウェイと接続し、パケットを送受信する。
次に、送信装置1の動作について説明する。
図2は、送信装置1がデータの送信処理を行う際の、スプーフィング適用制御部104の動作を示したフロー図である。本実施の形態において図2に示す一連の処理は、送信装置1が行う通信のうち、TCP上の通信に代表される輻輳制御を持ち、回線の輻輳以外の原因(回線の物理的な距離に起因する伝送遅延やエラー発生率の高さなど)により、宛先からの送達確認応答(ACK)の到着の遅延が起こり、結果としてスループットの低下を招く可能性のあるプロトコルを用いたものに適用する。従って、送信装置1は少なくとも、上記のTCPに代表されるような輻輳制御機構を備えた(即ち、スプーフィングの効果のある)通信が可能なものとする。
まず、送信装置1の通信部101においてパケット送信処理が開始されると、ステップS201において、送信しようとしているパケットを含む通信が、現在通信中の宛先に対する通信か否か(つまりこのパケットと同じ宛先への通信に関する情報を送信装置1が既に管理しているか)、あるいは既に情報を管理している通信であっても通信上の設定を見直すべきであるかを判定する。この情報の見直しをすべきかどうかの判定は、タイマを持ち一定時間ごとの再チェックを行う方法や、品質を測る基準を設け一定基準より品質が下がった場合に再チェックフラグを立てそのフラグの状態を見て判断を行う方法が考えられる。品質を測る基準には、たとえばスループット、RTT(パケットを出し応答が返ってくるまでの間の時間)あるいは障害率(パケットロスの率)などを用いる。スプーフィングのON/OFFのアルゴリズムとしては、RTTを用いる場合、TCPのタイムアウト値よりRTTが長い時は、スプーフィングを適用すると決定する、あるいは障害率を加味したRTT(たとえば、RTTと障害率の積)を用いて決定するなどの方法が考えられる。ステップS201にて、初回探索あるいは設定の見直しを行うと判定された場合(ステップS201にてYes)、ステップS202へ進み、初回探索でもなく、設定の見直しも必要が無い場合(ステップS201にてNo)はステップS207へと進む。
ステップS202において、RIP(Routing Information Protocol)などを用いて、宛先までのルート探索を行い、ステップS203にてルート情報の決定処理を行う。ステップS203においては、データ送信元である送信装置1が保持するルートマップ102へ決定したルート情報を記録し、かつ経路上にあるゲートウェイに対し、ルーティング情報を設定する。ルーティング情報としては、少なくとも通信の識別情報(IPとポートの組み合わせなど)及び次のルーティング先の情報を設定する。
ステップS203終了後、ステップS204にてルート上の各ゲートウェイについて、スプーフィング機能のON/OFFを決定する。この決定には、図3に示すような、各ゲートウェイとそれぞれの次のルーティング先との間のセグメントの情報を用いて決定する。
図3は、ルートマップ102とスプーフィング適用SG管理テーブル103をまとめたテーブルの例である。
本実施の形態では、たとえば、遅延時間に相当するRTTが300msec(ミリ秒)以上で、障害率が0.1%以下の場合はスプーフィングを適用するというようなアルゴリズムを用いる。また、回線上での障害(無線での陰の影響など)とルーティング先のゲートウェイにおけるバッファオーバーフローを区別するために、障害率を加味する場合は別途、バッファオーバーフローの情報を取得するという方式を取り入れることも可能である。たとえば、このために、受信用のバッファが一定の割合を超えたときに、警告情報を出し、その情報に基づき、スループットの調節を行うという方式を選択することも可能である。また、ルーティング先がスプーフィングを適用している場合は、バッファ内のデータ量が一定の割合を超えた場合、ACK返信の速度を下げて、対応するという実装も可能である。
ステップS204にて、上述したようなアルゴリズムに基づき、決定したスプーフィングのON/OFFを、図3に例示するようにルート情報とともに記録する。
図3において、ルーティング項目は、図1記載の次のルーティング先を示す。また、RTT項目はルーティング項目にて示されたルーティング先との間のセグメントにおけるRTT、障害率項目は同セグメントにおける障害率、スループット項目は同セグメントにおけるスループットを示す。そして、スプーフィング項目は同セグメントにおいてスプーフィング機能をONとするかOFFとするかの情報を示す。
図3では、たとえば、送信装置1に接続されているSG2aのルーティング項目は、ルーティング先にSG2bがあるということを示し、SG2bのルーティング項目は、ルーティング先にSG2cがあることを示す。また、SG2aのその他の項目は、SG2aからSG2bへのセグメントのRTTが570msec、障害率が0.02%、スループットが30M(メガ)ビットであり、スプーフィング機能がONに設定されていることを示す。
ステップS204終了後、ステップS205にて、ステップS204で決定したスプーフィングのON/OFFを該当するゲートウェイ(たとえば、SG2a)に設定する。この設定方法としては、たとえば、該当するゲートウェイに向けて、スプーフィングのON/OFF情報を入れた特別なIP上のパケットを送信し、このパケットを受信したゲートウェイ側では、パケットに含まれるスプーフィングON/OFF情報に基づいてスプーフィングの設定を行うなどの方法が可能である。具体的には、以下のようにIPパケットのヘッダ部に含まれるプロトコルフィールドを用いる。
スプーフィング機能のON/OFFに関する特別なIPパケットは、IPヘッダ部の情報として、宛先IPアドレスにスプーフィング設定の対象となるゲートウェイのIPアドレス、プロトコルフィールドにユーザ指定可能な番号“101”から“254”(Joyce K. Reynolds,Jon Postel,“Assigned Numbers”,RFC 1700,IETF,October 1994)の間の2つの番号を格納する。この2つの番号は、システム内でON/OFF用のプロトコルとして用いるものを定め、その値を使用する。ここで、たとえば、“101”をON用に、“102”をOFF用に割り当てるとする。パケットを受け取ったゲートウェイは、IPアドレスを見て自宛か否かを判断し、自宛であった場合は、プロトコルフィールドを見てON/OFFに関するものか否か(“101”あるいは“102”のいずれかであるか否かを)を判定する。プロトコル番号が“101”であった場合は、スプーフィング機能をONに、“102”であった場合は、スプーフィング機能をOFFに設定する。
ステップS205終了後、ステップS206にて、図3に例示するようなテーブルに、ルート及びスプーフィング情報を保存する。その後、ステップS207にて、パケットをルート情報に基づいて送信するよう、通信部101に要求する。
ステップS208にて、ステップS207で送信したパケットが、TCP通信におけるFinパケットであるかにより、通信終了か否かを判定する。通信終了ではないと判定された場合、次のパケットの送信を行うために、ステップS201へと戻り、Finパケット送信まで上記の処理を繰り返す。一方、ステップS208にて、通信終了であると判定された場合、スプーフィング適用判定の一連の処理を終了する。この後、TCP層における通信処理として、TCP通信のFinパケットに対するACK受信を待つ。Fin以降のパケットに対してはスプーフィングを行わない。
次に、ゲートウェイの例としてSG2aの動作について説明する。図1に示す他の全てのゲートウェイ(SG2b、SG2c、…、SG2n)も、以下に説明するSG2aと同等の機能を持つ。
送信装置1からのデータパケットが通信回線4を介してSG2aに送信されると、SG2aの第1通信部201は、このパケットを受信する。SG2aは、受信したパケットをtmpACKバッファ206に一時的に蓄積するとともに、配信管理テーブル208に当該データパケットのエントリを追加する。そして、SG2aは通信系5を介して、このデータパケットを受信装置3へ向けて、次のルーティング先であるSG2bへと転送する。
図4は、SG2aが送信装置1からパケットを受信した際のSG配信管理部207の動作を示したフロー図である。また、図5は、SG2aが受信装置3からパケットを受信した際のSG配信管理部207の動作を示したフロー図である。
SG2aは、パケットを受信すると、ステップS401にて、そのパケットが前述したようなスプーフィング機能のON/OFFに関する特別なIPパケットであるかどうかを判定する。受信したパケットがスプーフィング機能のON/OFFに関する特別なIPパケットである場合は、その内容に応じて、ステップS410にて配信管理テーブル208を更新する。配信管理テーブル208を更新する際、SG配信管理部207は配信データ記録部209にデータの更新を要求する。
図6は、各ゲートウェイが持つ配信管理テーブル208の例である。
図6において、「送信元IP」、「宛先IP」、「送信元ポート番号」、「宛先ポート番号」、「フローラベル」は、スプーフィングの対象とするTCP通信に関する情報を示す。「送信元IP」はスプーフィング対象のTCP通信の送信元IPアドレス、「宛先IP」は宛先IPアドレスを示す。また、「フローラベル」はこの通信を一意に識別する。ここで、フローとは、TCPの終端間(例えば、送信装置1と受信装置3との間)の論理的なコネクションのことである。
図6において、「スプーフィング」はこのフローでスプーフィングを行うか行わないかを示す。「パケット番号」はこのフローに属する受信(転送)済パケットのパケット番号、「tmpACK送信」はtmpACKの返信を行っているかどうか(たとえば、そもそもACK返信が不要なSynパケットやFinパケットは“不可”、tmpACKを送信済のパケットは“済”、tmpACKの送信は可能であるがまだ送信していないパケットは“可能”)、「ACK受信状態」は宛先あるいはその中継ゲートウェイからのACKが受信済であるかどうかを示す。
ステップS410にて配信管理テーブル208を更新する際には、配信管理テーブル208の「スプーフィング」の値を“ON”又は“OFF”に設定する。
ステップS401にて、受信したパケットがスプーフィング機能のON/OFFに関する特別なIPパケットでなかった場合は、ステップS402に進む。ステップS402では、受信したパケットの属するフローが配信管理テーブル208に登録されているか否かを見て、新規スプーフィング対象フローの登録処理を行うかどうかを判定する。新規スプーフィング対象のフローであると判定されると、ステップS407にて配信管理テーブル208に該当する情報の登録を行い、ステップS409にて第2通信部202に次のルーティング先へパケットを転送させる。
一方、ステップS402にて、受信したパケットがすでに配信管理テーブル208に登録済のフローに属するパケットであると判定されると、ステップS403にてスプーフィング対象とするかどうかを判定する。配信管理テーブル208において、「スプーフィング」が“OFF”となっている(スプーフィング対象ではない)場合、第2通信部202に次のルーティング先へパケットを転送させ、処理を終了する。
一方、配信管理テーブル208において、「スプーフィング」が“ON”となっている(スプーフィング対象である)場合、ステップS404にて、受信したパケットがSynパケットか否かの判定を行う。Synパケットであった場合は、Synパケット情報を配信管理テーブル208へと追加する。Synパケットではない場合は、ステップS405にて、そのパケットがFinパケットか否かを判定する。Finパケットであった場合は、そのフローの情報を配信管理テーブル208から削除し、処理を終了する。
一方、Finパケットではない場合は、そのパケットはデータパケットだと判定され、ステップS406にてtmpACKを返送し、データパケットをtmpACKバッファ206に一時的に保存する。ここで、本実施の形態では、一つのフローにおいて異なる経路を通って送信されるパケットはないため、このデータパケットに対して、一つ前のパケットまでの送達確認を行うことが可能なtmpACKが作成される。このtmpACKを作成するのはtmpACK作成部205であり、作成されたtmpACKは第1通信部201によって送信される。最後に、SG配信管理部207は、第2通信部202に次のルーティング先へパケットを転送させ、処理を終了する。
SG2aは、受信装置3が送信したACK(配信管理テーブル208に登録されているフローの「宛先IP」の「宛先ポート番号」から「送信元IP」の「送信元ポート番号」に向けたパケット)を受信すると、ステップS501にて、tmpACKが送信済か否かを判定する。tmpACKがまだ送信されていない場合、ステップS505にて、第1通信部201に受信したACKを転送させ、処理を終了する。
一方、tmpACKが送信済であると判定された場合、ステップS502にて受信確認済のパケットがあるか否かを判定する。ここでは、TCPの通常の送達確認応答を用いた確認などと同様のアルゴリズムに従い、受信したACKを元に確認処理を行う。宛先である受信装置3における受信が確認されたパケットがあれば、ステップS503にて配信管理テーブル208の「ACK受信状態」を更新し、ステップS504にて再送のためにtmpACKバッファ206に一時保存しておいたデータパケットを削除する。
SG2a、通信系5、SG2nを介し、受信装置3に至るまでの経路のどこかで、データパケットの転送に失敗し、受信装置3においてデータパケットの受信を行うことができなかったとする。この時、該当するパケットを受け取れなかった受信装置3あるいはゲートウェイは、転送に失敗したパケットの前のパケットに対する同一の送達確認応答を3つ続けて送信する。一方、転送に失敗したセグメントにパケットの送信を行ったいずれかのゲートウェイは、受信装置3あるいは次のルーティング先から同一の送達確認応答を3つ続けて受信すると、当該パケットの再送を行う。
以上のように、本実施の形態では、回線を複数の区間(セグメント)に分割し、各セグメントの輻輳状態、回線の太さ、距離、遅延、RTT(Round Trip Time)などに応じて、それぞれのTCP Spoofingを適応するか否かを決定する仕組み、即ち、よりきめ細かなTCP Spoofingの使用や回線の有効利用が可能となる。
実施の形態2.
実施の形態1では、単純にゲートウェイごとにスプーフィングのON/OFFを制御していた。一方、本実施の形態では、各ゲートウェイにおいて、フローごとにスプーフィングのON/OFFを制御する。
図7は本実施の形態に係る配信管理システムの構成を示すブロック図である。
本実施の形態に係る配信管理システムでは、送信装置1と一般的なTCPによる通信を行う回線により枝葉状に結ばれた1個以上のスプーフィング機能搭載ゲートウェイ(SG2a、SG2b、SG2c、…、SG2n)と、受信装置3が接続して構成される。このとき、送信装置1とSG2aは、通信系5よりも伝送遅延の小さな通信回線4で結ばれている。またSG2aと受信装置3との間は伝送遅延が大きな双方向の通信系5により結ばれている。通信系5は、衛星回線や海底ケーブルに代表される、通常のTCP通信のタイムアウト値よりも長い伝送遅延がある回線とする。
このシステムにおいて、送信装置1は、実施の形態1と同様に、SG2aと接続するとともにパケットを入出力するための通信部101を具備する。また、送信装置1は、配信管理装置を兼ね、通信部101の他に、ルートマップ102、スプーフィング適用SG管理テーブル103、スプーフィング適用制御部104を具備する。
SG2aは、実施の形態1と同様に、第1通信部201、第2通信部202、送信バッファ203、受信バッファ204、tmpACK作成部205、tmpACKバッファ206、SG配信管理部207、配信管理テーブル208、配信データ記録部209を具備する。SG2aは、本実施の形態ではさらに、第3通信部210を具備する。
第3通信部210は、第2通信部202がSG2bと接続し、通信系5を経由して受信装置3と通信を行うのと同様に、SG2nと接続し、パケットを入出力することにより、通信系5を経由して受信装置3と通信を行う。その他にもSG2aに同様の通信部を追加し、SG2cやSG2dといった他のゲートウェイと直接接続する形態が可能である。
受信装置3は、実施の形態1と同様に、通信系5を経由して各ゲートウェイと接続し、パケットを送受信する。
次に、送信装置1の動作について説明する。
本実施の形態において、送信装置1がデータの送信処理を行う際の、スプーフィング適用制御部104の動作は、実施の形態1と同様に、図2に示したフロー図の通りである。
まず、送信装置1の通信部101においてパケット送信処理が開始されると、ステップS201において、送信しようとしているパケットを含む通信が、現在通信中の宛先に対する通信か否か(つまりこのパケットと同じ宛先への通信に関する情報を送信装置1が既に管理しているか)、あるいは既に情報を管理している通信であっても通信上の設定を見直すべきであるかを判定する。この情報の見直しをすべきかどうかの判定は、タイマを持ち一定時間ごとの再チェックを行う方法や、品質を測る基準を設け一定基準より品質が下がった場合に再チェックフラグを立てそのフラグの状態を見て判断を行う方法が考えられる。品質を測る基準には、たとえばスループット、RTT(パケットを出し応答が返ってくるまでの間の時間)あるいは障害率(パケットロスの率)などを用いる。スプーフィングのON/OFFのアルゴリズムとしては、RTTを用いる場合、TCPのタイムアウト値よりRTTが長い時は、スプーフィングを適用すると決定する、あるいは障害率を加味したRTT(たとえば、RTTと障害率の積)を用いて決定するなどの方法が考えられる。ステップS201にて、初回探索あるいは設定の見直しを行うと判定された場合(ステップS201にてYes)、ステップS202へ進み、初回探索でもなく、設定の見直しも必要が無い場合(ステップS201にてNo)はステップS207へと進む。
ステップS202において、RIP(Routing Information Protocol)などを用いて、宛先までのルート探索を行い、ステップS203にてルート情報の決定処理を行う。ステップS203においては、データ送信元である送信装置1が保持するルートマップ102へ決定したルート情報を記録し、かつ経路上にあるゲートウェイに対し、ルーティング情報を設定する。ルーティング情報としては、少なくとも通信の識別情報(IPとポートの組み合わせなど)及び次のルーティング先の情報を設定する。
ステップS203終了後、ステップS204にてルート上の各ゲートウェイについて、スプーフィング機能のON/OFFを決定する。この決定には、図8に示すような、各ゲートウェイとそれぞれの次のルーティング先との間のセグメントの情報を用いて決定する。
図8は、フローごとに通信ルートを固定とする方式の場合に用いるルートマップ102とスプーフィング適用SG管理テーブル103をまとめたテーブルの例である。
本実施の形態では、たとえば、遅延が300msec(ミリ秒)以上で、障害率が0.1%以下の場合はスプーフィングを適用するというようなアルゴリズムを用いる。また、回線上での障害(無線での陰の影響など)とルーティング先のゲートウェイにおけるバッファオーバーフローを区別するために、障害率を加味する場合は別途、バッファオーバーフローの情報を取得するという方式を取り入れることも可能である。たとえば、このために、受信用のバッファが一定の割合を超えたときに、警告情報を出し、その情報に基づき、スループットの調節を行うという方式を選択することも可能である。また、ルーティング先がスプーフィングを適用している場合は、バッファ内のデータ量が一定の割合を超えた場合、ACK返信の速度を下げて、対応するという実装も可能である。
ステップS204にて、上述したようなアルゴリズムに基づき、決定したスプーフィングのON/OFFを、図8に例示するようにルート情報とともに記録する。
図8のテーブルは、フロー番号列にて示されたフローラベルによって一意に識別できるIP通信のフローごとに決定されたルート情報を管理する。ルーティング項目は、図7記載の次のルーティング先を示す。また、RTT項目はルーティング項目にて示されたルーティング先との間のセグメントにおけるRTT、障害率項目は同セグメントにおける障害率、スループット項目は同セグメントにおける回線のバンド幅に対するパーセンテージを示す。そして、スプーフィング項目は同セグメントにおいてスプーフィング機能をONとするかOFFとするかの情報を示す。ここで、スループット項目の値として回線のバンド幅に対するパーセンテージを用いているが、実施の形態1のように、スループットの数値自体を用いることも可能である。
図8では、たとえば、フローラベルに対応するフロー番号がフロー1の通信は、送信装置1に接続されているSG2aからSG2nへルーティングされ、SG2aとSG2nとの間にあるセグメントのRTTが570msec、障害率が0.02%、スループットが30Mビットであり、スプーフィング機能がONに設定されていることを示す。
ステップS204終了後、ステップS205にて、ステップS204で決定したスプーフィングのON/OFFを該当するゲートウェイ(たとえば、SG2a)に設定する。この設定方法としては、たとえば、該当するゲートウェイに向けて、フローラベルごとのスプーフィングを行うか否かの情報、対象とするフローラベル情報及びスプーフィングのON/OFF情報を入れた特別なIP上のパケットを送信し、このパケットを受信したゲートウェイ側では、パケットに含まれる情報に基づいてスプーフィングの設定を行うなどの方法が可能である。具体的には、以下のようにIPパケットのヘッダ部に含まれるプロトコルフィールドと、データ部を用いる。
スプーフィング機能のON/OFFに関する特別なIPパケットは、IPヘッダ部の情報として、宛先IPアドレスにスプーフィング設定の対象となるゲートウェイのIPアドレス、プロトコルフィールドにユーザ指定可能な番号“101”から“254”の間の2つの番号を格納する。この2つの番号は、システム内でON/OFF用のプロトコルとして用いるものを定め、その値を使用する。また、IPパケットのデータ部には、たとえば、情報位置を識別可能な場所(たとえば、IPヘッダの直後の位置)に24ビットのデータとして、スプーフィングのON/OFFを設定する対象のフローを識別するフローラベルを入れる。
ここで、たとえば、“101”をON用に、“102”をOFF用に割り当てるとする。パケットを受け取ったゲートウェイは、IPアドレスを見て自宛か否かを判断し、自宛であった場合は、プロトコルフィールドを見てON/OFFに関するものか否か(“101”あるいは“102”のいずれかであるか否かを)を判定する。プロトコル番号が“101”あるいは“102”であった場合は、この特別なIPパケットのデータ部の先頭24ビットを見て、配信管理テーブル208上で一致するフローラベルがあるかを判定する。一致するフローラベルがあった場合、配信管理テーブル208上の該当するフローに対して、プロトコル番号が“101”であった場合は、スプーフィング機能をONに、“102”であった場合は、スプーフィング機能をOFFに設定する。
ステップS205終了後、ステップS206にて、図8に例示するようなテーブルに、フローごとの経路及びスプーフィング情報を保存する。その後、ステップS207にて、パケットをルート情報に基づいて送信するよう、通信部101に要求する。
ステップS208にて、ステップS207で送信したパケットが、TCP通信におけるFinパケットであるかにより、通信終了か否かを判定する。通信終了ではないと判定された場合、次のパケットの送信を行うために、ステップS201へと戻り、Finパケット送信まで上記の処理を繰り返す。一方、ステップS208にて、通信終了であると判定された場合、スプーフィング適用判定の一連の処理を終了する。この後、TCP層における通信処理として、TCP通信のFinパケットに対するACK受信を待つ。Fin以降のパケットに対してはスプーフィングを行わない。
次に、ゲートウェイの例としてSG2aの動作について説明する。図7に示す他の全てのゲートウェイ(SG2b、SG2c、…、SG2n)も、以下に説明するSG2aと同等の機能を持つ。
送信装置1からのデータパケットが通信回線4を介してSG2aに送信されると、SG2aの第1通信部201は、このパケットを受信する。SG2aは、受信したパケットをtmpACKバッファ206に一時的に蓄積するとともに、配信管理テーブル208に当該データパケットのエントリを追加する。そして、SG2aは通信系5を介して、このデータパケットを受信装置3へ向けて、次のルーティング先であるSG2bへと転送する。
図9は、SG2aが送信装置1からパケットを受信した際のSG配信管理部207の動作を示したフロー図である。また、SG2aが受信装置3からパケットを受信した際のSG配信管理部207の動作は、実施の形態1と同様に、図5に示したフロー図の通りである。
SG2aは、パケットを受信すると、ステップS901にて、そのパケットが前述したようなスプーフィング機能のON/OFFに関する特別なIPパケットであるかどうかを判定する。受信したパケットがスプーフィング機能のON/OFFに関する特別なIPパケットである場合は、そのパケットに含まれるフローラベルを取り出す。次に、ステップS910にてそのフローラベルによって特定されるフローが配信管理テーブル208に登録されているかを判定する。そのフローが登録されていなければ、ステップS911にて配信管理テーブル208に新規フローの情報の登録を行う。新規フローの登録を行うか、配信管理テーブル208に当該フローが登録済であれば、受信した特別なIPパケットの内容に応じて、ステップS912にて配信管理テーブル208を更新する。配信管理テーブル208を更新する際、SG配信管理部207は配信データ記録部209にデータの更新を要求する。
図10は、各ゲートウェイが持つ配信管理テーブル208の例である。
図10において、「送信元IP」、「宛先IP」、「送信元ポート番号」、「宛先ポート番号」、「フローラベル」は、スプーフィングの対象とするTCP通信に関する情報を示す。「送信元IP」はスプーフィング対象のTCP通信の送信元IPアドレス、「宛先IP」は宛先IPアドレスを示す。また、「フローラベル」はこの通信を一意に識別する。
図10において、「スプーフィング」はこのフローでスプーフィングを行うか行わないかを示す。「パケット番号」はこのフローに属する受信(転送)済パケットのパケット番号、「tmpACK送信」はtmpACKの返信を行っているかどうか、「ACK受信状態」は宛先あるいはその中継ゲートウェイからのACKが受信済であるかどうかを示す。
ステップS912にて配信管理テーブル208を更新する際には、配信管理テーブル208の「スプーフィング」の値を“ON”又は“OFF”に設定する。
ステップS901にて、受信したパケットがスプーフィング機能のON/OFFに関する特別なIPパケットでなかった場合は、ステップS902に進む。ステップS902では、受信したパケットの属するフローが配信管理テーブル208に登録されているか否かを見て、新規スプーフィング対象フローの登録処理を行うかどうかを判定する。新規スプーフィング対象のフローであると判定されると、ステップS907にて配信管理テーブル208に該当する情報の登録を行い、ステップS909にて第2通信部202に次のルーティング先へパケットを転送させる。
一方、ステップS902にて、受信したパケットがすでに配信管理テーブル208に登録済のフローに属するパケットであると判定されると、ステップS903にてスプーフィング対象とするかどうかを判定する。配信管理テーブル208において、そのフローの「スプーフィング」が“OFF”となっている(スプーフィング対象ではない)場合、第2通信部202に次のルーティング先へパケットを転送させ、処理を終了する。
一方、配信管理テーブル208において、当該フローの「スプーフィング」が“ON”となっている(スプーフィング対象である)場合、ステップS904にて、受信したパケットがSynパケットか否かの判定を行う。Synパケットであった場合は、Synパケット情報を配信管理テーブル208へと追加する。Synパケットではない場合は、ステップS905にて、そのパケットがFinパケットか否かを判定する。Finパケットであった場合は、そのフローの情報を配信管理テーブル208から削除し、処理を終了する。ここで、そのフローの情報を配信管理テーブル208から削除する代わりに、そのフローの「スプーフィング」を“OFF”に設定してもよい。
一方、Finパケットではない場合は、そのパケットはデータパケットだと判定され、ステップS906にてtmpACKを返送し、データパケットをtmpACKバッファ206に一時的に保存する。ここで、本実施の形態では、一つのフローにおいて異なる経路を通って送信されるパケットはないため、このデータパケットに対して、一つ前のパケットまでの送達確認を行うことが可能なtmpACKが作成される。このtmpACKを作成するのはtmpACK作成部205であり、作成されたtmpACKは第1通信部201によって送信される。最後に、SG配信管理部207は、第2通信部202に次のルーティング先へパケットを転送させ、処理を終了する。
SG2aは、受信装置3が送信したACK(配信管理テーブル208に登録されているフローの「宛先IP」の「宛先ポート番号」から「送信元IP」の「送信元ポート番号」に向けたパケット)を受信すると、ステップS501にて、tmpACKが送信済か否かを判定する。tmpACKがまだ送信されていない場合、ステップS505にて、第1通信部201に受信したACKを転送させ、処理を終了する。
一方、tmpACKが送信済であると判定された場合、ステップS502にて受信確認済のパケットがあるか否かを判定する。ここでは、TCPの通常の送達確認応答を用いた確認などと同様のアルゴリズムに従い、受信したACKを元に確認処理を行う。宛先である受信装置3における受信が確認されたパケットがあれば、ステップS503にて配信管理テーブル208の「ACK受信状態」を更新し、ステップS504にて再送のためにtmpACKバッファ206に一時保存しておいたデータパケットを削除する。
SG2a、通信系5、SG2nを介し、受信装置3に至るまでの経路のどこかで、データパケットの転送に失敗し、受信装置3においてデータパケットの受信を行うことができなかったとする。この時、該当するパケットを受け取れなかった受信装置3あるいはゲートウェイは、転送に失敗したパケットの前のパケットに対する同一の送達確認応答を3つ続けて送信する。一方、転送に失敗したセグメントにパケットの送信を行ったいずれかのゲートウェイは、受信装置3あるいは次のルーティング先から同一の送達確認応答を3つ続けて受信すると、当該パケットの再送を行う。
以上のように、本実施の形態では、フローごとにTCP Spoofingを適応するか否かを決定しており、実施の形態1よりもさらにきめ細かなTCP Spoofingの使用や回線の有効利用が可能となる。
実施の形態3.
実施の形態2では、各ゲートウェイにおいて、フローごとにルートが固定であり、フローごとにスプーフィングのON/OFFを制御していた。一方、本実施の形態では、一つのフローにおいてルートを複数設定することが可能であり、フローごと、あるいはパケットごとにスプーフィングのON/OFFを制御する。
本実施の形態に係る配信管理システムの構成は、実施の形態2と同様に、図7に示したブロック図の通りとする。
初めに、送信装置1の動作について説明する。
図11は、送信装置1がデータの送信処理を行う際の、スプーフィング適用制御部104の動作を示したフロー図である。本実施の形態において図11に示す一連の処理は、送信装置1が行う通信のうち、TCP上の通信に代表される輻輳制御を持ち、回線の輻輳以外の原因(回線の物理的な距離に起因する伝送遅延やエラー発生率の高さなど)により、宛先からの送達確認応答(ACK)の到着の遅延が起こり、結果としてスループットの低下を招く可能性のあるプロトコルを用いたものに適用する。従って、送信装置1は少なくとも、上記のTCPに代表されるような輻輳制御機構を備えた(即ち、スプーフィングの効果のある)通信が可能なものとする。
まず、送信装置1の通信部101においてパケット送信処理が開始されると、ステップS1101において、送信しようとしているパケットを含む通信が、現在通信中の宛先に対する通信か否か(つまりこのパケットと同じ宛先への通信に関する情報を送信装置1が既に管理しているか)、あるいは既に情報を管理している通信であっても通信上の設定を見直すべきであるかを判定する。この情報の見直しをすべきかどうかの判定は、タイマを持ち一定時間ごとの再チェックを行う方法や、品質を測る基準を設け一定基準より品質が下がった場合に再チェックフラグを立てそのフラグの状態を見て判断を行う方法が考えられる。品質を測る基準には、たとえばスループット、RTT(パケットを出し応答が返ってくるまでの間の時間)あるいは障害率(パケットロスの率)などを用いる。スプーフィングのON/OFFのアルゴリズムとしては、RTTを用いる場合、TCPのタイムアウト値よりRTTが長い時は、スプーフィングを適用すると決定する、あるいは障害率を加味したRTT(たとえば、RTTと障害率の積)を用いて決定するなどの方法が考えられる。ステップS1101にて、初回探索あるいは設定の見直しを行うと判定された場合(ステップS1101にてYes)、ステップS1102へ進み、初回探索でもなく、設定の見直しも必要が無い場合(ステップS1101にてNo)はステップS1114へと進む。
ステップS1102において、RIP(Routing Information Protocol)などを用いて、宛先までのルート探索を行い、ステップS1103にてルートがフローごとに固定されているかどうかを判定する。ルートが固定されている場合、ステップS1104にてルート情報の決定処理を行う。ステップS1104においては、データ送信元である送信装置1が保持するルートマップ102へ決定したルート情報を記録し、かつ経路上にあるゲートウェイに対し、ルーティング情報を設定する。ルーティング情報としては、少なくとも通信の識別情報(IPとポートの組み合わせなど)及び次のルーティング先の情報を設定する。
ステップS1104終了後、ステップS1105にてルート上の各ゲートウェイについて、スプーフィング機能のON/OFFを決定する。この決定には、実施の形態2と同様に図8に示すような、各ゲートウェイとそれぞれの次のルーティング先との間のセグメントの情報を用いて決定する。
ステップS1105にて、実施の形態2と同様のアルゴリズムに基づき、決定したスプーフィングのON/OFFを、図8に例示するようにルート情報とともに記録する。
図8のテーブルは、実施の形態2と同様に、フロー番号列にて示されたフローラベルによって一意に識別できるIP通信のフローごとに決定されたルート情報を管理する。
ステップS1105終了後、ステップS1106にて、ステップS1105で決定したスプーフィングのON/OFFを該当するゲートウェイ(たとえば、SG2a)に設定する。この設定方法としては、たとえば、該当するゲートウェイに向けて、フローラベルごとのスプーフィングを行うか否かの情報、対象とするフローラベル情報及びスプーフィングのON/OFF情報を入れた特別なIP上のパケットを送信し、このパケットを受信したゲートウェイ側では、パケットに含まれる情報に基づいてスプーフィングの設定を行うなどの方法が可能である。スプーフィング機能のON/OFFに関する特別なIPパケットの具体的な内容と使用方法については、実施の形態2と同様である。
ステップS1106終了後、ステップS1107にて、図8に例示するようなテーブルに、フローごとの経路及びスプーフィング情報を保存する。その後、ステップS1115にて、パケットをルート情報に基づいて送信するよう、通信部101に要求する。ステップS1114にて、ルートがフローごとに固定されている場合も、同様に、パケットをルート情報に基づいて送信するよう、通信部101に要求する。
一方、ステップS1103にて、ルートがフローごとに固定されていない場合、ステップS1102で検索された一つ以上のルートを、ステップS1108にて保存する。次に、ステップS1109にて、これから送信するパケットのルートを、ステップS1108で保存したルートの中から決定する。パケットごとのルートの決定には、次のルーティング先として選択可能なセグメントのスループットの割合に応じて設定するという方式などが利用可能である。たとえば、SG2aから次のセグメントとして選択可能なものがJ、K、Lと3つあり、それぞれのスループットの比率が1:2:4であった場合、連続したパケットa、b、c、d、e、f、g、hを、パケットaをセグメントJへ、パケットb及びcをセグメントKへ、パケットd、e、f、g、hをLへと送信するというアルゴリズムになる。ステップS1114にて、ルートがフローごとに固定されていない場合も、同様に、パケットごとのルートの決定を行う。
ステップS1109終了後、ステップS1110にてルート上の各ゲートウェイについて、スプーフィング機能のON/OFFを決定する。この決定には、図12に示すような、各ゲートウェイとそれぞれの次のルーティング先との間のセグメントの情報を用いて決定する。
図8のテーブルでは、フローごとに通信ルートを固定とする方式を用いているが、図12のテーブルでは、パケットごとにルーティングを決定する方式を用いている。通信ルートを固定とするか、パケットごとにルーティングを決定する(通信状況に応じてルーティングを変更する)かは、たとえば送信装置1において、設定をフラグとして持つなどの方式で実装可能である。また、送信装置1が2つの方式のうちいずれかを選択可能とすることも可能である。パケットごとにルーティングを決定する場合、各パケットのルート情報は、たとえばパケットのIPヘッダのルートに関するオプションを用いて設定することが可能である。
本実施の形態のパケットごとにルーティングを決定する方式では、たとえば、遅延が300msec(ミリ秒)以上で、障害率が0.1%以下の場合はスプーフィングを適用するというようなアルゴリズムを用いる。また、回線上での障害(無線での陰の影響など)とルーティング先のゲートウェイにおけるバッファオーバーフローを区別するために、障害率を加味する場合は別途、バッファオーバーフローの情報を取得するという方式を取り入れることも可能である。たとえば、このために、受信用のバッファが一定の割合を超えたときに、警告情報を出し、その情報に基づき、スループットの調節を行うという方式を選択することも可能である。また、ルーティング先がスプーフィングを適用している場合は、バッファ内のデータ量が一定の割合を超えた場合、ACK返信の速度を下げて、対応するという実装も可能である。
ステップS1110にて、上述したようなアルゴリズムに基づき、決定したスプーフィングのON/OFFを、図12に例示するようにルート情報とともに記録する。
図12において、ルーティング項目は、次に転送可能なルーティング先を示す。また、RTT項目はルーティング項目にて示されたルーティング先との間のセグメントにおけるRTT、障害率項目は同セグメントにおける障害率、スループット項目は同セグメントにおける回線のバンド幅に対するパーセンテージを示す。そして、スプーフィング項目は同セグメントにおいてスプーフィング機能をONとするかOFFとするかの情報を示す。ここで、スループット項目の値として回線のバンド幅に対するパーセンテージを用いているが、実施の形態1のように、スループットの数値自体を用いることも可能である。
図12では、たとえば、送信装置1に接続されているSG2aのルーティング項目は、ルーティング先にSG2bとSG2nがあるということを示し、SG2bのルーティング項目は、ルーティング先にSG2cとSG2dと、図7に図示していないSG2eがあることを示す。また、SG2aのその他の項目は、SG2aからSG2nへのセグメントのRTTが570msec、障害率が0.02%、スループットが30M(メガ)ビットであり、スプーフィング機能がONに設定されていることを示す。
ステップS1110終了後、ステップS1111にて、ステップS1110で決定したスプーフィングのON/OFFを該当するゲートウェイ(たとえば、SG2a)に設定する。この設定方法としては、たとえば、該当するゲートウェイに向けて、フローラベル情報をNULLとし、スプーフィングのON/OFF情報を入れた特別なIP上のパケットを送信し、このパケットを受信したゲートウェイ側では、パケットに含まれる情報に基づいてスプーフィングの設定を行うなどの方法が可能である。スプーフィング機能のON/OFFに関する特別なIPパケットの具体的な内容と使用方法については、実施の形態1と同様である。
ステップS1111終了後、ステップS1112にて、図12に例示するようなテーブルに、スプーフィング情報を保存する。
ステップS1112終了後、ステップS1113にて該当フローの取りうる経路上のゲートウェイでスプーフィング機能がONとなっているものに対し、通信の進行状況(どこまでACKを受け取っているか)をそのフローのフローラベルとともに送付する。これに基づき、スプーフィングがONとなっているゲートウェイは次に返信するtmpACKを決定することが可能となる。その後、ステップS1115にて、パケットをルート情報に基づいて送信するよう、通信部101に要求する。
ステップS1116にて、ステップS1115で送信したパケットが、TCP通信におけるFinパケットであるかにより、通信終了か否かを判定する。通信終了ではないと判定された場合、次のパケットの送信を行うために、ステップS1101へと戻り、Finパケット送信まで上記の処理を繰り返す。一方、ステップS1116にて、通信終了であると判定された場合、スプーフィング適用判定の一連の処理を終了する。この後、TCP層における通信処理として、TCP通信のFinパケットに対するACK受信を待つ。Fin以降のパケットに対してはスプーフィングを行わない。
次に、ゲートウェイの例としてSG2aの動作について説明する。図7に示す他の全てのゲートウェイ(SG2b、SG2c、…、SG2n)も、以下に説明するSG2aと同等の機能を持つ。
送信装置1からのデータパケットが通信回線4を介してSG2aに送信されると、SG2aの第1通信部201は、このパケットを受信する。SG2aは、受信したパケットをtmpACKバッファ206に一時的に蓄積するとともに、配信管理テーブル208に当該データパケットのエントリを追加する。そして、SG2aは通信系5を介して、このデータパケットを受信装置3へ向けて、次のルーティング先であるSG2bへと転送する。
図13は、SG2aが送信装置1からパケットを受信した際のSG配信管理部207の動作を示したフロー図である。また、SG2aが受信装置3からパケットを受信した際のSG配信管理部207の動作は、実施の形態1及び2と同様に、図5に示したフロー図の通りである。
SG2aは、パケットを受信すると、ステップS1301にて、そのパケットが前述したようなスプーフィング機能のON/OFFに関する特別なIPパケットであるかどうかを判定する。受信したパケットがスプーフィング機能のON/OFFに関する特別なIPパケットである場合、あるいは、そうでない場合でもステップS1302にてこのパケットが前述した通信の進行状況を示すパケットであると判定された場合は、そのパケットに含まれるフローラベルを取り出す。次に、ステップS1311にてそのフローラベルによって特定されるフローが配信管理テーブル208に登録されているかを判定する。そのフローが登録されていなければ、ステップS1312にて配信管理テーブル208に新規フローの情報の登録を行う。新規フローの登録を行うか、配信管理テーブル208に当該フローが登録済であれば、受信した特別なIPパケット又は通信進行状況を示すパケットの内容に応じて、ステップS1313にて配信管理テーブル208を更新する。配信管理テーブル208を更新する際、SG配信管理部207は配信データ記録部209にデータの更新を要求する。
図14は、各ゲートウェイが持つ配信管理テーブル208の例である。
図14において、「送信元IP」、「宛先IP」、「送信元ポート番号」、「宛先ポート番号」、「フローラベル」は、スプーフィングの対象とするTCP通信に関する情報を示す。「送信元IP」はスプーフィング対象のTCP通信の送信元IPアドレス、「宛先IP」は宛先IPアドレスを示す。また、「フローラベル」はこの通信を一意に識別する。
図14において、「スプーフィング方法」はフローごとにスプーフィングのON/OFFを制御するか、あるいはパケットごとにスプーフィングのON/OFFを制御するかを示す。「スプーフィング」は各フロー又はパケットでスプーフィングを行うか行わないかを示す。ここで、「スプーフィング」を省略し、「スプーフィング方法」が“パケット単位”または“フロー単位”に設定されていれば、スプーフィングはON、何も設定されていなければ、スプーフィングはOFFとすることも可能である。「パケット番号」はこのフローに属する受信(転送)済パケットのパケット番号、「tmpACK送信」はtmpACKの返信を行っているかどうか、「ACK受信状態」は宛先あるいはその中継ゲートウェイからのACKが受信済であるかどうかを示す。
ステップS1313にて配信管理テーブル208を更新する際には、配信管理テーブル208の「スプーフィング」の値を“ON”又は“OFF”に設定する。
ステップS1302にて、受信したパケットが通信の進行状況を示すパケットでなかった場合は、ステップS1303に進む。ステップS1303では、受信したパケットの属するフローが配信管理テーブル208に登録されているか否かを見て、新規スプーフィング対象フローの登録処理を行うかどうかを判定する。新規スプーフィング対象のフローであると判定されると、ステップS1308にて配信管理テーブル208に該当する情報の登録を行い、ステップS1310にて第2通信部202に次のルーティング先へパケットを転送させる。
一方、ステップS1303にて、受信したパケットがすでに配信管理テーブル208に登録済のフローに属するパケットであると判定されると、ステップS1304にてスプーフィング対象とするかどうかを判定する。配信管理テーブル208において、そのフローの「スプーフィング」が“OFF”となっている(スプーフィング対象ではない)場合、第2通信部202に次のルーティング先へパケットを転送させ、処理を終了する。
一方、配信管理テーブル208において、当該フローの「スプーフィング」が“ON”となっている(スプーフィング対象である)場合、ステップS1305にて、受信したパケットがSynパケットか否かの判定を行う。Synパケットであった場合は、Synパケット情報を配信管理テーブル208へと追加する。Synパケットではない場合は、ステップS1306にて、そのパケットがFinパケットか否かを判定する。Finパケットであった場合は、そのフローの情報を配信管理テーブル208から削除し、処理を終了する。
一方、Finパケットではない場合は、そのパケットはデータパケットだと判定され、ステップS1307にてtmpACKを返送し、データパケットをtmpACKバッファ206に一時的に保存する。ここで、本実施の形態では、このデータパケットに対して、SACK(Selective ACK)方式に基づき、一つ前のパケットまでの送達確認を行うことが可能なtmpACKが作成される。このtmpACKを作成するのはtmpACK作成部205であり、作成されたtmpACKは第1通信部201によって送信される。最後に、SG配信管理部207は、第2通信部202に次のルーティング先へパケットを転送させ、処理を終了する。
SG2aは、受信装置3が送信したACK(配信管理テーブル208に登録されているフローの「宛先IP」の「宛先ポート番号」から「送信元IP」の「送信元ポート番号」に向けたパケット)を受信すると、ステップS501にて、tmpACKが送信済か否かを判定する。tmpACKがまだ送信されていない場合、ステップS505にて、第1通信部201に受信したACKを転送させ、処理を終了する。
一方、tmpACKが送信済であると判定された場合、ステップS502にて受信確認済のパケットがあるか否かを判定する。ここでは、SACK方式のアルゴリズムに従い、受信したACKを元に確認処理を行う。宛先である受信装置3における受信が確認されたパケットがあれば、ステップS503にて配信管理テーブル208の「ACK受信状態」を更新し、ステップS504にて再送のためにtmpACKバッファ206に一時保存しておいたデータパケットを削除する。
SG2a、通信系5、SG2nを介し、受信装置3に至るまでの経路のどこかで、データパケットの転送に失敗し、受信装置3においてデータパケットの受信を行うことができなかったとする。この時、該当するパケットを受け取れなかった受信装置3あるいはゲートウェイは、転送に失敗したパケットの前のパケットに対する同一の送達確認応答を3つ続けて送信する。一方、転送に失敗したセグメントにパケットの送信を行ったいずれかのゲートウェイは、受信装置3あるいは次のルーティング先から同一の送達確認応答を3つ続けて受信すると、当該パケットの再送を行う。
以上のように、本実施の形態では、フローごと又はパケットごとにTCP Spoofingを適応するか否かを決定しており、実施の形態2よりもさらにきめ細かなTCP Spoofingの使用や回線の有効利用が可能となる。
上記の実施の形態1から3では、送信装置1が配信管理装置を兼ねているが、これはたとえば送信装置1が配信装置と同じ筐体に実装されるなどといった方法で実現可能である。また、送信装置1は必ずしも配信管理装置を兼ねる必要はなく、配信管理装置が送信装置1とは別の筐体に実装されたり、それぞれが物理的に離れて配置されたり、あるいは、配信管理装置が上記配信管理システムの他の装置と同じ筐体に実装されてもよい。
前述した各実施の形態で、送信装置1、SG2a、SG2b、SG2c、SG2d、…、SG2n、受信装置3は、コンピュータで実現できるものである。
図示していないが、送信装置1、SG2a、SG2b、SG2c、SG2d、…、SG2n、受信装置3は、プログラムを実行するCPU(Central Processing Unit)を備えている。
例えば、CPUは、バスを介して、ROM(Read Only Memory)、RAM(Random Access Memory)、通信ボード、表示装置、K/B(キーボード)、マウス、FDD(Flexible Disk Drive)、CDD(コンパクトディスクドライブ)、磁気ディスク装置、光ディスク装置、プリンタ装置、スキャナ装置等と接続されている。
RAMは、揮発性メモリの一例である。ROM、FDD、CDD、磁気ディスク装置、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
前述した各実施の形態の送信装置1、SG2a、SG2b、SG2c、SG2d、…、SG2n、受信装置3が扱うデータや情報は、記憶装置あるいは記憶部に保存され、送信装置1、SG2a、SG2b、SG2c、SG2d、…、SG2n、受信装置3の各部により、記録され読み出されるものである。
また、通信ボードは、例えば、LAN、インターネット、或いはISDN等のWAN(ワイドエリアネットワーク)に接続されている。
磁気ディスク装置には、オペレーティングシステム(OS)、ウィンドウシステム、プログラム群、ファイル群(データベース)が記憶されている。
プログラム群は、CPU、OS、ウィンドウシステムにより実行される。
上記送信装置1、SG2a、SG2b、SG2c、SG2d、…、SG2n、受信装置3の各部は、一部或いはすべてコンピュータで動作可能なプログラムにより構成しても構わない。或いは、ROMに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェア或いは、ハードウェア或いは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
上記プログラム群には、実施の形態の説明において「〜部」として説明した処理をCPUに実行させるプログラムが記憶される。これらのプログラムは、例えば、C言語やHTMLやSGMLやXMLなどのコンピュータ言語により作成される。
また、上記プログラムは、磁気ディスク装置、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記憶され、CPUにより読み出され実行される。
上記実施の形態1から3において説明した配信管理システムは、
送達確認応答の受信を用いて輻輳の有無を判断し、スループットを調節するプロトコルを用いた通信において、通信区間を、複数のセグメントに分け、各セグメントの入り口にパケットの宛先からの送達確認応答と同等のものを、作成返送を行う(TCP Spoofing)ゲートウェイを設置し、セグメントごとに前記TCP Spoofingの適用を決定できることを特徴とする。
また、上記実施の形態1から3において説明した配信管理装置は、
一つの通信(例えばフローラベルなどで管理)における通信区間を、複数のセグメントに分け、セグメント毎にTCP Spoofingの適用を決定できることを特徴とする。これにより、例えば通信区間において、伝送遅延、障害発生率などにおいて、異なる特徴をもつ複数回線を含む通信に対し、リアルタイムの回線状況や回線の特性に応じた、よりきめ細かな制御が可能となる。
また、上記配信管理システムは、
経路情報を用いて、通信区間を、複数のセグメントに分け、各セグメントの入り口に設置されたパケットの宛先からの送達確認応答と同等のものを、作成返送を行う(TCP Spoofing)ゲートウェイを設置し、セグメントごとに前記TCP Spoofingの適用を決定できることを特徴とする。
また、上記配信管理システムは、
「障害率」情報を利用し、経路上のセグメント毎にTCP Spoofingの適用を決定できることを特徴とする。
また、上記配信管理システムは、
「RTT」情報を利用し、経路上のセグメント毎にTCP Spoofingの適用を決定できることを特徴とする。
また、上記配信管理システムは、
コネクション単位でスプーフィングのOn/OFFを決定できることを特徴とする。
また、上記配信管理装置は、
コネクション単位でリモートから、各(TCP Spoofingを行う)ゲートウェイに対し、スプーフィングのOn/OFFを決定できることを特徴とする。
また、上記配信管理システムは、
コネクション単位でリモートから、各(TCP Spoofingを行う)ゲートウェイに対し、スプーフィングのOn/OFFを決定できることを特徴とする。
また、上記配信管理装置は、
通信状態を監視し、通信状況に応じて、コネクション単位でリモートからのスプーフィングのOn/OFFを決定できることを特徴とする。
また、上記配信管理装置は、
パケット毎にルーティングを設定することにより、フロー制御の最適化を行うことを特徴とする。
また、上記配信管理システムは、
パケット毎にルーティングを設定することにより、フロー制御の最適化を行うことを特徴とする。
また、上記配信管理装置は、
選択しうる、次のルーティング先の経路状況情報を用いて、パケットルーティングを選択することにより、パケット毎にTCP Spoofingの適用を決定できることを特徴とする。
また、上記配信管理システムは、
選択しうる、次のルーティング先の経路状況情報を用いて、パケットルーティングを選択することにより、パケット毎にTCP Spoofingの適用を決定できることを特徴とする。
1 送信装置、2 SG、3 受信装置、4 通信回線、5 通信系、101 通信部、102 ルートマップ、103 スプーフィング適用SG管理テーブル、104 スプーフィング適用制御部、201 第1通信部、202 第2通信部、203 送信バッファ、204 受信バッファ、205 tmpACK作成部、206 tmpACKバッファ、207 SG配信管理部、208 配信管理テーブル、209 配信データ記録部、210 第3通信部。