(57)【特許請求の範囲】
【請求項１】
送信装置または受信装置のいずれかのみが付加情報付応答機能を持つ場合に上記送信装置と受信装置間に設置してパケットの送受信を行う構成において、
受信パケットを一時蓄える受信バッファ及び送信パケットを一時蓄える送信バッファと、
上記送信装置または上記受信装置のいずれが上記付加情報付応答機能を持つかを記憶し、かつ付加情報付応答機能を持つ装置からの送達確認応答を記憶する配信管理テーブルと、
上記送信装置からのパケット受信において必要があれば再送要求を行い、また上記受信装置からのパケット受信応答における再送要求に基き上記配信管理テーブルを参照して上記付加情報付応答機能を持つ装置に対しては受信失敗部分のみを再送制御する配信管理部と、
上記配信管理部の指示により付加情報付応答機能付一時肯定応答（ｔｍｐＡＣＫ）を作成する一時肯定応答作成部と、を備えて、
上記送信装置が付加情報付応答機能を持つ場合は、上記配信管理部は、上記送信装置からのパケット受信に対しては上記付加情報付応答機能付一時肯定応答を返し、上記受信装置からの再送要求に対しては上記付加情報付応答を持たない再送制御を行ない、
上記受信装置が付加情報付応答機能を持つ場合は、上記配信管理部は、上記送信装置からのパケット受信エラーに対しては上記付加情報付応答を持たない再送要求を行ない、かつ送信されたパケットのうち上記受信装置が付加情報付応答で再送要求をしたパケットを上記受信装置へ上記付加情報付応答に基いて上記送信バッファから再送することを特徴とする再送量削減データ配信管理装置。
【請求項２】
配信管理テーブルは、受信装置への伝送時間が所定の時間よりも大きい遅延依存か、または受信装置での受信エラーが所定の値よりも大きいエラー依存かを記憶し、
配信管理部は、送信装置が付加情報付応答機能を持つ場合は、上記配信管理テーブルを参照して上記受信装置への伝送が上記遅延依存かエラー依存の場合は、受信バッファにある未転送パケットのシーケンス番号に基き上記送信装置に対して付加情報付応答を送信することを特徴とする請求項１記載の再送量削減データ配信管理装置。
【請求項３】
配信管理テーブルは、送信装置から受信装置への、及び該受信装置から該送信装置への、通信のプロトコルを記憶し、
配信管理部は、上記配信管理テーブルで記憶した上記プロトコルをみて片方のみが付加情報付応答機能を持つ場合に、これらの送信装置と受信装置を組にして転送制御を行なうことを特徴とする請求項１記載の再送量削減データ配信管理装置。
【請求項４】
送信装置と、
受信装置と、
ゲートウェイと、で構成され、
上記ゲートウェイは、上記送信装置と上記受信装置との間に設けて該送信装置と該受信装置間のパケットの伝送を行うため、受信パケットを一時蓄える受信バッファ及び送信パケットを一時蓄える送信バッファと、上記送信装置または上記受信装置のいずれのみが付加情報付応答機能を持つ場合に、いずれの装置が該付加情報付応答機能を持つかを記憶し、かつ付加情報付応答機能を持つ装置からの送達確認応答を記憶する配信管理テーブルと、上記送信装置からのパケット受信において必要があれば再送要求を行い、また上記受信装置からのパケット受信応答における再送要求に基き上記配信管理テーブルを参照して上記付加情報付応答機能を持つ装置に対しては受信失敗部分のみを再送制御する配信管理部と、上記配信管理部の指示により付加情報付応答機能付一時肯定応答（ｔｍｐＡＣＫ）を作成する一時肯定応答作成部と、を備えて、
上記送信装置が付加情報付応答機能を持つ場合は、上記配信管理部は、上記送信装置からのパケット受信に対しては上記付加情報付応答機能付一時肯定応答を返し、上記受信装置からの再送要求に対しては上記付加情報付応答を持たない再送制御を行ない、
上記受信装置が付加情報付応答機能を持つ場合は、上記配信管理部は、上記送信装置からのパケット受信エラーに対しては上記付加情報付応答を持たない再送要求を行ない、かつ送信されたパケットのうち上記受信装置が付加情報付応答で再送要求をしたパケットを上記受信装置へ上記付加情報付応答に基いて上記送信バッファから再送することを特徴とする再送量削減データ配信システム。
【請求項５】
ゲートウェイの配信管理テーブルは、受信装置への伝送時間が所定の時間よりも大きい遅延依存か、または受信装置での受信エラーが所定の値よりも大きいエラー依存かを記憶し、
ゲートウェイの配信管理部は、送信装置が付加情報付応答機能を持つ場合は、上記配信管理テーブルを参照して上記受信装置への伝送が上記遅延依存かエラー依存の場合は、受信バッファにある未転送パケットのシーケンス番号に基き上記送信装置に対して付加情報付応答を送信することを特徴とする請求項４記載の再送量削減データ配信システム。
【請求項６】
送信装置または受信装置のいずれかのみが付加情報付応答機能を持つ場合に上記装置間に設置した装置によりパケットの送受信を行う方法において、
上記送信装置または上記受信装置のいずれが上記付加情報付応答機能を持つかを記憶し、かつ付加情報付応答機能を持つ装置からの送達確認応答を記憶するステップと、
上記送信装置からのパケット受信において必要があれば再送要求を行い、また上記受信装置からのパケット受信応答における再送要求に基き上記記憶した上記付加情報付応答機能を持つ装置に対しては受信失敗部分のみを再送制御するステップと、
付加情報付応答機能付一時肯定応答（ｔｍｐＡＣＫ）を作成するステップと、
上記送信装置が付加情報付応答機能を持つ場合は、上記送信装置からのパケット受信に対しては上記付加情報付応答機能付一時肯定応答を返し、上記受信装置からの再送要求に対しては上記付加情報付応答を持たない再送制御を行なうステップと、
上記受信装置が付加情報付応答機能を持つ場合は、上記送信装置からのパケット受信エラーに対しては上記付加情報付応答を持たない再送要求を行ない、かつ再送されたパケットのうち上記受信装置が付加情報付応答で再送要求をしたパケットを上記受信装置へ上記付加情報付応答に基いて上記送信バッファから再送するステップと、を備えたことを特徴とする再送量削減データ配信方法。
【請求項７】
記憶テーブルとして設けた配信管理テーブルに、記憶するステップで、受信装置への伝送時間が所定の時間よりも大きい遅延依存か、または受信装置での受信エラーが所定の値よりも大きいエラー依存かを記憶するステップと、
送信装置が付加情報付応答機能を持つ場合は、上記配信管理テーブルを参照して上記受信装置への伝送が上記遅延依存かエラー依存の場合は、受信バッファにある未転送パケットのシーケンス番号に基き上記送信装置に対して付加情報付応答を送信するステップと、を備えたことを特徴とする請求項６記載の再送量削減データ配信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＴＣＰ通信におけるＳＡＣＫ等の付加情報付応答機能を持たない装置間の通信において、該当機能を持たせて再送量を削減する配信装置とシステムと方法に関するものである。
【０００２】
【従来の技術】
従来のＴＣＰによる通信において、再送制御に伴う再送量を減らして、系の輻輳度を下げようとする試みが種々なされている。例えばＡＣＫ応答に拡張性を持たせた、ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）と呼ばれる付加情報付の応答をして、再送量を減らそうとするシステムが知られている。
図１８は、こうしたシステムにおける再送制御を含む送受信シーケンスを示す図である。図において、送信マシンＣ３と、受信マシンＣ４とは、共に上記のＳＡＣＫ機能を持っている装置である。この場合には、何らかのエラーが発生して、再送が必要になると、ＳＡＣＫに記載された情報により、必要部分のみが再送され、従って伝送量が減って系の輻輳が避けられる。図１８（ａ）の例では、データ２と３の受信を失敗したが、データ４は正常に受信したことをＳＡＣＫ５として付加情報を付けて応答する。マシンＣ３は、この情報により必要なデータ２、３を再送し、データ５から送信を続ける。
しかし、送信マシンＣ３または受信マシンＣ４のいずれかが付加機能を持たない場合は、図１８（ｂ）に示すように通常のＡＣＫ応答でＡＣＫ２しか送れなくて、従ってそのＡＣＫに記載された、もっと以前のデータ２から再送が必要になり、再送の伝送量が増加する。
【０００３】
全く目的は異なるが、送信マシンと受信マシン間に遅延の大きい伝送路があり、この遅延による送信速度の低下、少なくとも送信マシンの伝送速度の低下を軽減するシステムとして、図１９に示される間に送信ゲートウェイを設けたシステムがある。これは、例えば、情報処理学会研究報告９８−ＤＰＳ−８９−１２に示された従来のデータ配信管理装置であり、図１９において、通信システムは、Ｃ１（送信マシン）０００３と一般的なＴＣＰによる通信を行う回線により結ばれたＳＧ（送信ゲートウェイ）０００２と、Ｃ２（受信マシン）０００６と一般的なＴＣＰによる通信を行う回線により結ばれたＲＧ（受信ゲートウェイ）０００５が伝送遅延の大きな双方向の通信系０００４により直線状に接続して構成される。
【０００４】
このシステムにおいて、送信マシン０００３は、送信ゲートウェイ０００２と接続すると共に、データセグメントを出力する手段と、送信ゲートウェイ０００２が作成した仮の到達確認応答を受信する手段とを備える。送信ゲートウェイ０００２は、送信マシン０００３と接続するとともに、送信マシン０００３からデータセグメントを受信し、当該受信データセグメントをバッファ０００７に蓄積する手段と、通信系０００４を経由し蓄積したデータセグメントを受信ゲートウェイ０００５に出力する手段と、送信したデータセグメントに対する仮の送達確認応答を作成する手段と、送信マシン０００３に接続すると共に、作成した仮の送達確認応答を送信マシン０００３に対し送信する手段と、通信系０００４を経由して送られてきた送信マシン０００３に対する送達確認応答を受け取る手段と、受信したＳＹＮセグメントから通信情報を取得し配信情報として記録する手段と、データセグメントの再送を行う手段とを備える。また、受信ゲートウェイ０００５は、通信系０００４を経由し、送信ゲートウェイと接続すると共に、送信ゲートウェイ０００２から当該データセグメントを受信する手段と、到達確認応答を送信ゲートウェイ０００２に出力する手段とを備えている。図はこうしたデータ配信管理システムを示しており、送信ゲートウェイ０００２に仮の到達確認応答を送ることを特徴とするデータ配信管理システムである。そして、送信ゲートウェイ０００２がこのシステムにおけるデータ配信管理装置である。
【０００５】
次に、動作について説明する。
図に示す送信ゲートウェイ０００２が、配信管理テーブル０００１及び送信バッファ１００６を制御管理している。送信マシン０００３からのデータセグメントを乗せたセルは、送信ゲートウェイの方向の通信路に送り出される。送信ゲートウェイ０００２は、受信バッファ０００７に一時的に、受信した当該データセグメントを蓄積すると共に、配信管理テーブル０００１に、当該データセグメントのエントリを追加する。送信ゲートウェイ０００２は、受信マシン０００３から受信したデータセグメントセルを、通信系０００４を介して受信マシン０００５へ転送する共に、当該データセグメントに対する仮の到達確認応答データセグメントを作成し、これを乗せたセルを送信マシン０００３へ送る。
【０００６】
受信ゲートウェイ０００５は、通信系０００４を介し、前記データセグメントセルを受信し、受信したデータセグメントに対する送達確認応答を作成し、通信系０００４を介して送信ゲートウェイ０００２に送る。この送達確認応答は、対応するデータセグメントに関するデータと、当該データセグメントの受信マシン０００５における到達確認状況に関するデータとを備えている。受信マシン０００５から送達確認応答を受け取った送信ゲートウェイ０００２は、当該送達確認応答と対応する送信バッファに保存しておいたデータセグメントをクリアする。
【０００７】
ここで、送信ゲートウェイ０００２から通信系０００４を介し、受信ゲートウェイ０００５に至るまでの過程のいずれかにおいて、当該データセグメントの転送に失敗し、受信ゲートウェイ０００５において、データセグメントの受信を行うことができなかったとする。この時、送信ゲートウェイ０００２は、受信ゲートウェイ０００５より同一の送達確認応答を３つ続けて受信すると、再送を行う。
一方、受信ゲートウェイ０００５が受信に成功した場合、上記で記述した送信の処理を実行し、再び失敗した場合は、再送の処理を繰り返す。
【０００８】
【発明が解決しようとする課題】
従来の再送制御システムは上記のように構成されており、送信と受信のいずれかの装置に付加情報付応答機能が無い場合は、再送制御は通常の応答による他なく、再送に伴う伝送量が多大になり、輻輳を下げる伝送制御が行われて、著しく伝送効率が低下するという課題がある。
受信側での遅延が大きいシステムにおいて、送信側にゲートウェイを設けて、送信側の伝送速度を向上するシステムにおいても、再送制御が通常の応答による場合は、その部分で同様の課題が発生して、再送に伴う伝送量に対する改善は得られない。
【０００９】
この発明は上記の課題を解決するためになされたもので、送信側、受信側いずれかの装置に付加情報付応答機能が無い装置であっても、再送量を減らし、擬似的な場合も含めて、系の輻輳を避けたシステムを得る。
【００１０】
【課題を解決するための手段】
この発明に係る再送量削減データ配信管理装置は、送信装置または受信装置のいずれかのみが付加情報付応答機能を持つ場合に上記装置間に設置してパケットの送受信を行う構成において、
送信データを一時貯えるバッファと、付加情報付応答を返す仮応答パケット作成手段と、付加情報付応答機能付再送制御手段とを備えて、
受信装置が付加情報付応答機能を持たない場合は、付加情報付応答機能を持つ送信装置間とはバッファと仮応答パケット作成手段と付加情報付応答機能付再送制御手段により送受信を開始／完了し、受信装置とは、通常の応答機能によりバッファに貯えたデータの再送制御を行うようにした。
【００１１】
または、送信装置または受信装置のいずれかのみが付加情報付応答機能を持つ場合に上記装置間に設置してパケットの送受信を行う構成において、
送信データを一時貯えるバッファと、付加情報付応答を返す仮応答パケット作成手段と、付加情報付応答機能付再送制御手段とを備えて、
送信装置が付加情報付応答機能を持たない場合は、付加情報付応答機能を持つ受信装置間とはバッファと仮応答パケット作成手段と付加情報付応答機能付再送制御手段により送受信を開始／完了し、送信装置とは、通常の応答機能によりバッファに貯えたデータの再送制御を行うようにした。
【００１２】
また更に、データ配信装置は、回線上に時間当たり所定値以上のエラーが発生するか、または所定時間以上の応答遅延が発生すると、対応機能を持つ送信装置または受信装置とは、付加情報付応答機能による再送制御を行うようにした。
【００１３】
この発明に係る再送量削減データ配信システムは、付加情報付応答機能を持つ送信装置と、
付加情報付応答機能を持たない受信装置と、
送信装置と受信装置間に、送信データを一時貯えるバッファと、付加情報付応答を返す仮応答パケット作成手段と、付加情報付応答機能付再送制御手段とを設けたゲートウェイを備えて、
付加情報付応答機能を持つ送信装置間とはバッファと仮応答パケット作成手段と付加情報付応答機能付再送制御手段により送受信を開始／完了し、付加情報付応答機能を持たない受信装置とは、通常の応答機能によりバッファに貯えたデータの再送制御を行うようにした。
【００１４】
または、付加情報付応答機能を持つ受信装置と、
付加情報付応答機能を持たない送信装置と、
送信装置と受信装置間に、送信データを一時貯えるバッファと、付加情報付応答を返す仮応答パケット作成手段と、付加情報付応答機能付再送制御手段とを設けたゲートウェイを備えて、
付加情報付応答機能を持つ受信装置間とはバッファと仮応答パケット作成手段と付加情報付応答機能付再送制御手段により送受信を開始／完了し、付加情報付応答機能を持たない送信装置とは、通常の応答機能によりバッファに貯えるデータの再送制御を行うようにした。
【００１５】
この発明に係る再送量削減データ配信方法は、送信装置または受信装置のいずれかのみが付加情報付応答機能を持つ場合に上記装置間に設置してパケットの送受信を行うデータ配信装置に送信データを一時貯えるバッファを設けて、配信装置には、
受信装置が付加情報付応答機能を持たない場合は、付加情報付応答機能を持つ送信装置とは、必要に応じて付加情報付仮応答パケットを送信する仮応答パケット作成ステップと、
必要に応じて上記付加情報に対応して付加情報付再送を行う付加情報対応再送制御ステップと、
受信装置とは、通常の応答機能により再送制御を行う通常再送制御ステップ、とを備えた。
【００１６】
または、送信装置または受信装置のいずれかのみが付加情報付応答機能を持つ場合に上記装置間に設置してパケットの送受信を行うデータ配信装置に送信データを一時貯えるバッファを設けて、この配信装置には、
送信装置が付加情報付応答機能を持たない場合は、付加情報付応答機能を持つ受信装置とは、必要に応じて付加情報付仮応答パケットを送信する仮応答パケット作成ステップと、
必要に応じて付加情報に対応して付加情報付再送を行う付加情報対応再送制御ステップと、
送信装置とは、通常の応答機能により再送制御を行う通常再送制御ステップ、とを備えた。
【００１７】
【発明の実施の形態】
実施の形態１．
送信または受信マシンのどちらか一方のみがＴＣＰ通信での付加情報付応答、いわゆるＳＡＣＫ機能が無い場合に、少なくともその機能がある側の伝送効率を維持して、伝送路に遅れが発生しても系としての伝送効率の低下を防ぐ例を説明する。
図１は、実施の形態１ないし実施の形態３を通じての、システム構成を示す図である。
図において、１００２のゲートウェイＳＧが設けているが、以下に説明するように、１００２―６の配信管理部と、１００２―３のｔｍｐＡＣＫ作成部が重要な要素である。
また、図２ないし図５は、従来例と対比しての再送制御を示すシーケンス図である。
即ち、システムとしてのＳＡＣＫの応答機能と、それに基づく再送制御機能により多大な効果を得ている。
図２は、Ｃ１のみがＳＡＣＫ機能を持つ場合で、かつ再送がＣ１とゲートウェイ間で行われる場合を示し、図３は、同じくＣ１のみがＳＡＣＫ機能を持つ場合で、かつ再送がゲートウェイとＣ２間で行われる場合を示している。また図４は、Ｃ２のみがＳＡＣＫ機能を持つ場合で、かつ再送がＣ１とゲートウェイ間で行われる場合を示し、図５は、同じくＣ２のみがＳＡＣＫ機能を持つ場合で、かつ再送がゲートウェイとＣ２間で行われる場合を示している。
【００１８】
図１において、Ｃ１（マシン１）１００３は、一般的なＴＣＰによる通信が可能な通信装置であり、Ｃ１  ０００３と一般的なＴＣＰによる通信を行う回線により結ばれたＳＧ１（ゲートウェイ１）１００２と、一般的なＴＣＰ通信が可能な通信機器Ｃ２（マシン２）１００５とが伝送遅延の大きな双方向の通信系０００４により接続されている。このとき、Ｃ１とＳＧ１は、通信系０００４よりも伝送遅延の少ない回線で結ばれているとする。
【００１９】
このシステムにおいて、Ｃ１（マシン１）１００３は、ゲートウェイ１００２と接続されると共に、データセグメントを入出力する手段を備えて、少なくとも一般的なＴＣＰによる通信が可能な通信装置である。ゲートウェイ１００２の構成は、データセグメントを入出力するためのＣ１通信部１００２−８と、通信系０００４に接続するＣ２通信部１００２−１と、これらの通信部からセグメントを受信して蓄積する受信バッファ１００７と、送信したデータセグメントを管理する送信バッファ１００６と、受信したセグメントをｔｍｐＡＣＫ作成のために保存するｔｍｐＡＣＫバッファ１００４と、送信したデータセグメントに対し、ｔｍｐＡＣＫ返送機能を適応するべきかどうかの判断を行うｔｍｐＡＣＫ使用判定部１００２−２と、受信したセグメントを元に送信したデータセグメントに対する仮の送達確認応答を作成するｔｍｐＡＣＫ作成部１００２−３と、データセグメント毎の送達確認応答のタイムアウト時間（ＳＧＴｉｍｅｒ）をカウントアップし、当該送達確認応答待ちのタイムアウトイベントを発生させるＳＧＴｉｍｅｒカウント部１００２−４と、上記仮の送達確認応答をデータの送信元に対し送信したか否かの情報、及びデータの送信先が生成し通信系０００４を経由して送られてきた送達確認応答に関するデータを配信管理テーブル（１）１００１に対して書き込む配信データ記録部１００２−５と、ＳＧＴｉｍｅｒ値及び配信管理テーブル（１）１００１の内容に応じてデータセグメントの配信を管理するＳＧ配信管理部１００２−６とを備えている。そして、通信系０００４を経由し、受信マシン１００５と接続され、データセグメントを送受信する手段を備えたデータ配信管理装置である。
【００２０】
更に、受信マシンＣ２  １００５は、ゲートウェイ１００２と接続され、データセグメントを入出力するための手段を備えた少なくとも一般的なＴＣＰによる通信が可能な通信装置である。
図１におけるＳＧ配信管理部１００２−６は、通信の管理情報を作成する際に、中継するパケットのＳＡＣＫオプション情報を見て、通信を行うそれぞれのホストがＳＡＣＫオプションをサポートしているか否かの情報を取得し、ホスト情報管理テーブルＢ１に入力する。
【００２１】
次に、実施の形態１における特別な部分について、図６を用いて説明する。
図６（ａ）は、実施の形態１におけるＳＧ配信管理部１００２−６の詳細機能を示した図である。
図において、１００２−６ＡはＳＡＣＫ使用判定部であり、ＳＡＣＫなど付加情報付きのエラー情報を送信元及び宛先双方が取り扱えるか否かを判定し、ホスト情報管理テーブルＢ１に記録及びホスト情報管理テーブルＢ１の情報を元に再送方法（ＳＡＣＫ付き再送１００２−６Ｂ、或いは、ＳＡＣＫなし再送１００２−６Ａのいずれか）の決定及び、ｔｍｐＡＣＫ作成方法（ＳＡＣＫ付きｔｍｐＡＣＫ作成方法（１００２−３Ａ）、或いは、ＳＡＣＫなしｔｍｐＡＣＫ作成方法（１００２−３Ｂ）のいずれか）を決定する。１００２−６ＢはＳＡＣＫ付き再送部であり、１００２−６ＡによってＳＡＣＫ付き再送を行うと決定された場合の再送処理を行う。１００２−６ＣはＳＡＣＫなし再送部であり、１００２−６ＡによってＳＡＣＫなし再送を行うと決定された場合の再送処理を行う。このように、ＳＧ配信管理部は、本発明において重要な図１１に示す再送制御を行う。図６（ｂ）は、実施の形態１におけるｔｍｐＡＣＫ作成部１００２−３の詳細機能を示した図である。
図において、ＳＡＣＫ付きｔｍｐＡＣＫ作成部１００２−３Ａは、ＳＡＣＫ使用判定部１００２−６ＡによってＳＡＣＫ付きｔｍｐＡＣＫ作成を行うと決定された場合に、ＴＣＰにおけるＳＡＣＫオプション付きの送達確認応答を作成する部分であり、ＳＡＣＫなしｔｍｐＡＣＫ作成部１００２−３Ｂは、ＳＡＣＫ使用判定部１００２−６ＡによってＳＡＣＫなしｔｍｐＡＣＫ作成を行うと決定された場合に、ＴＣＰにおけるＳＡＣＫオプションなしの送達確認応答を作成する部分である。これらの二つの部分は、ＳＧ配信管理部により管理される通信ホストの情報によってどちらかを使い分けて使用するものである。
【００２２】
このように、この装置は、ＴＣＰ／ＩＰ通信のＳＡＣＫオプション付きのもの、及びＳＡＣＫオプションなしのもの双方の通信開始から通信終了に至るまで起きうる全ての事象に対する、送信側、受信側双方のの状態変化情報を検出、或いは、取得可能であり、また、宛先にて作成する送達確認応答と同等のものの作成が可能であり、更に、宛先、或いは、自身で生成した送達確認応答を受信した送信元における送達確認及び再送の動作と同等の機能を備えたものである。
【００２３】
次に、動作について説明する。
シーケンスを示す図２において、ゲートウェイ１００２またはＣ１との回線でデータ２と３の受信エラーが発生すると、ゲートウェイ（ＳＧ）がＳＡＣＫ５の情報付応答をし、データ２，３と５からを受信する。Ｃ２はＳＡＣＫ機能がないので、従来のＡＣＫ２応答をして、データ２からの再送を受けるが、Ｃ１とＳＧ間での輻輳が防げる。
同様に、図３のシーケンスでは、ＳＧとＣ２間の再送には関係なくＣ１とＳＧ間の伝送は終わるので、従来例では、Ｃ１の出力回線が輻輳するのと比較して、回線使用効率が向上する。
図４のシーケンスでは、ＳＧとＣ２間の回線またはＣ２でのエラーによる再送が必要な場合であるが、Ｃ１と直結していないため、ＳＧとＣ２間の輻輳が下げられる効果がある。また、Ｃ２の受信能力が、バッファ容量等により小さい場合にも、再送による受信負荷を下げられる効果もある。図５のシーケンスでも、図４と同様の効果がある。
【００２４】
この構成において、重要な要素であるＳＧ配信管理部１００２−６が行う動作フローを図７に示す。
この図では、マシン１Ｃ１との通信確立と終了やＡＣＫ応答処理と、マシン２Ｃ２との通信確立と終了やＡＣＫ応答処理を、同一の動作フローで表現しているため、ＳＧ配信管理部１００２−６の機能の特徴が判りにくい。
しかし、この機能の特徴は、上記図２ないし図５に示すシーケンスを行うことであり、Ｃ１またはＣ２のいずれかとの再送が少なくなる。
ゲートウェイ１００２は、Ｃ１からＣ２に向けてのセグメントを受信すると、いったん自身の受信バッファ１００７にそれを一時保存し、ＳＧ配信管理部１００２−６により、図７に示す通信確立または応答制御の動作に入る。なお、このゲートウェイは、遅延が大きい回線から受信したデータを、遅延が小さい回線へ転送する際は、通常のルータとして動作して、この明細書では詳述しない。
図７の動作フローを要約すれば、ｔｅｍｐＡＣＫ使用判定部１００２−２がセグメントのチェックを行い、その結果により仮の送達確認応答をする（Ｓｐｏｏｆｉｎｇ）か否かを決め、配信管理テーブル（１）１００１に登録し、Ｓｐｏｏｆｉｎｇを行う場合は、仮ＡＣＫ送信処理を行う。
【００２５】
図８ないし図１０は、図７中の処理の更に詳細を示す図であり、図１１は、再送制御の動作フロー図である。
以下、これらの動作フロー図を用いて、詳細な処理内容を説明する。
図７において、処理が開始されると、Ｓ２００１の分岐１により、ネットワーク層のヘッダがＩＰヘッダであるか否か、及びＩＰヘッダであった場合、正しいＩＰアドレスとなっているかどうかを確認した後、ＩＰ及びＴＣＰのヘッダを参照し、遅延依存のプロトコルか否かが判定される。例えば、ＩＰヘッダのプロトコル情報（上位層のプロトコル情報）がＵＤＰのものは、遅延依存のプロトコルではないと判定し、処理４にて宛先へのパケットの転送を行い処理を終了する。Ｓ２００１がＹＥＳであると、Ｓ２００２の分岐２においては、受信したセグメントが、図１における配信管理テーブル（１）１００１に既に登録済の通信であるか否かにより、管理している通信かどうかを判定する。分岐２においては、ＩＰヘッダ中の送信元ＩＰとＴＣＰヘッダ中の送信元ポートの組み合わせ及び宛先ＩＰと宛先ポートの組み合わせが全て同一の通信を同一の管理単位とし、登録済の通信であるか否かを判定する。
【００２６】
図１２及び図１３は、配信管理テーブル（１）の例を示す図である。
この図は、送信元のＣ１と宛先のＣ２が付加情報応答（ＳＡＣＫ）機能があるか否か、また、その場合のＡＣＫ応答状況を管理している。
図１２は、図１３左端の列、１−ｂ３−０１にリンクする詳細なパケット情報である。図１３中、複数にわたる行１−ｂ３−１５及び１−ｂ３−１６は、この管理単位を同じくする通信に関する情報を表す。図１２の項目１−ｂ１−０１から項目１−ｂ１−０５は、この管理単位を同じくする通信において、ＳＧが受信したセグメントに関する情報を表すものであり、図１３における通信１−ｂ３−１５に関するデータの例である。これらの各項目は、ＳＧが受信したセグメントから情報を取得するものである。
【００２７】
図１３中、項目１−ｂ３−０１は、この通信（１−ｂ３−１５などの複数の行の集まりであらわされるもの）を一意に識別するための番号（ＩＤ）であり、項目１−ｂ３−０４は、管理する通信の送信元ＩＰアドレスを表すものである。１−ｂ３−０６は、宛先ＩＰアドレスを表し、項目１−ｂ３−０８は、送信元のスループットであり、ここには通信開始時にはデフォルト値として、経路管理テーブル図１４を参照し、当該通信における送信元のデフォルトのスループットを入れ、以後、一定間隔毎にスループットの実測値を計り更新する。通信終了時に、経路管理テーブルのデフォルトのスループットの値も、実測値を元に再計算し更新することも可能である。項目１−ｂ３−１０は、ＳＡＣＫオプションに関する情報であり、（遅延回線に向けた）送信元（この場合、Ｃ１）と（遅延回線からの）宛先（この場合、Ｃ２）それぞれのＳＡＣＫオプションをサポートしているか否かの情報を入れる項目であり、項目１−ｂ３−１２は、ＳＧと宛先間のＲｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ（ＲＴＴ）を表す値であり、デフォルト値は、経路管理テーブルの項目１−ｂ２−０２の遅延情報に書いてある値の２倍の数値を入れ、通信において値を適宜とって交信してゆく。項目１−ｂ３−１３は、送信元ポート番号を表し、項目１−ｂ３−１４は、宛先ポート番号を表し、項目１−ｂ３−１７は、送信元及び宛先におけるそれぞれの最新の送信ウィンドウサイズ及び受信ウィンドウサイズを表す。
【００２８】
図１２において、項目１−ｂ１−０１は、個々の通信においてＳＧが受信したセグメントのシーケンス番号を表している。項目１−ｂ１−０２は、ｔｍｐＡＣＫ送信に関する情報を表し、詳しくは、送信元に対し一定の条件が整った時などの条件付の場合を含め送信可能なセグメントか否かの情報、及びｔｍｐＡＣＫを送信したかの情報などを値として用いるものである。即ち、項目１−ｂ１−０３宛先からの送達確認応答（ＲＲＡＣＫ）に対する情報を表すものであり、この例では、対応するセグメントがＲＲＡＣＫを受信済であることを表すＡＣＫ受信済及びＲＲＡＣＫの到達を待っている状態であることを表すＡＣＫ待ちの二つの値を持つものである。また、項目１−ｂ１−０４は、この装置がこのパケットを受け取り、配信管理テーブルにエントリした時間であり、項目１−ｂ１−０５は、再送すべきか否かのフラグである。
【００２９】
この図１２は、図１３の横軸１−ｂ３−１７の右列に加えて、一つのテーブルとする事も可能であるが、スペースの都合上、項目１−ｂ３−０１によって関連付けられる二つの表とした。従って、例えば、１−ｂ３−１５で示される一群の行は、通信ＩＤとして１を持ち、優先度が１の送信元マシン１０．７４．３．１３５の送信ポートＦＴＰ．ＤＡＴＡから０．６５Ｍｂｐｓのスループットで、優先度が１の宛先マシン１０．７４．３．２００の宛先ポート１３０１に対する通信において、通信の優先度フラグがＯＮであり、ＳＧと宛先間のＲＴＴが５４３ｍｓｅｃである通信において、送信元の送信ウィンドウサイズ及び受信ウィンドウサイズ、及び宛先の送信ウィンドウサイズ、及び受信ウィンドウサイズは、全て１６Ｋバイトであり、送信側のＳＡＣＫオプションはＯＮ（ＳＡＣＫサポートのＴＣＰ）であり、受信側のＳＡＣＫオプションはＯＦＦ（サポートしていないＴＣＰ）であり、シーケンス番号３９８を持つセグメントは、ｔｍｐＡＣＫの送信は不可、即ち、いかなる条件になった場合もｔｍｐＡＣＫの送信を行わないセグメントであり、現時点で宛先からの送達確認応答を待っている状態であることを表すものである。
これらの項目及び必要に応じて追加する項目を用いて、セグメントのｔｍｐＡＣＫの管理、受信確認を行うことができる。このような配信管理テーブルを用いて、ＳＧは受信したセグメントのＩＰヘッダにある送信元ＩＰアドレスと宛先ＩＰアドレス、及びＴＣＰヘッダにある送信元ポート番号と宛先ポート番号を参照し、ＩＰヘッダ中の送信元ＩＰとＴＣＰヘッダ中の送信元ポートの組み合わせ、及び宛先ＩＰと宛先ポートの組み合わせで表される通信が配信管理テーブル（１）上にあるか否かの判定を行う。
【００３０】
Ｓ２００２の分岐２における判定の結果、配信管理テーブル（１）上に登録されている通信であったと判定（ＹＥＳ）された場合は、Ｓ２００３の分岐３へと進み、受信したセグメントが、正しいパケットであるか否かの判定を行う。ここでは、ＴＣＰ行うシンタックスチェック（パケットの形式だけでなく、宛先の受信Ｗｉｎｄｏｗ内のセグメントであるか否かなどの受信の順序なども含む）を行う。この際、ＳＡＣＫオプション付きの送信元か否かによってＷｉｎｄｏｗ内のパケットか否かの判定結果は異なる。分岐３にて、正しいパケットではなかった場合（ＮＯ）は、Ｓ２０１１の処理５にてエラー処理を行う。処理５においては、宛先において正しく受信されないパケット受信時には、配信管理テーブル及び開始時パケットバッファよりデータを消去し、スプーフィング処理を中止する。Ｓ２００３の分岐３で正しいパケットであった場合（ＹＥＳ）は、Ｓ２００４４の分岐４へと進み、パケットの終了フラグを見て、終了パケットか否かを判定する。終了パケットであった場合（ＹＥＳ）は、Ｓ２００６の処理１にて通信終了処理を行い、Ｓ２００９の処理４にて宛先へのパケットの転送を行い処理を終了する。
【００３１】
一方、Ｓ２００４の分岐４にて通信終了パケットではないと判定された場合（ＮＯ）、Ｓ２００５で遅延依存の宛先に向けたものであるか否かを判定する。「遅延依存である宛先」の定義は、例えば、「データ送信元のＲＴＯ（再送タイムアウト時間）よりもこの装置（ＧＷ）−宛先間のＲＴＴの方が長い宛先」と定義しておく。これは、ルーティング機能によって決定される経路が、宛先への経路上に伝送遅延回線があるか否かを、経路管理テーブルを用いて判定する。
【００３２】
図１４は、上記分岐５などにて用いる経路管理テーブルの一例である。
経路管理テーブルにおいて、１−ｂ２−０１は送信元−ルータ経路に関する情報群であり、送信元ＩＰ、ＳＡＣＫオプションに関する情報、最大Ｗｉｎｄｏｗサイズ、送信元優先度、及び送信元−ルータ間のスループットの情報を持っている。１−ｂ２−０２はルータ（ＳＧ）−宛先間の経路に関する情報群である。具体的には、判定対象の経路ポート（どの回線につながっているかを示すポート）とその経路の遅延時間、スループット、宛先ＩＰ、ＳＧで扱う通信全てのパケットを転送することができなくなった状況が発生した場合などにおいて、パケット転送の優先度の一つの判定基準となる宛先の優先度、その宛先のＳＡＣＫオプションに関する情報、その宛先の最大Ｗｉｎｄｏｗサイズを表す。この表における送信元とルータ（ＳＧ）間のスループットの値には、仮ＡＣＫ機能を利用した場合としない場合によってスループットが異なる場合があるため、回線のデフォルト値（回線の種類に応じてユーザ設定可能。入力されない場合や経路によって回線が特定できない場合は、例えば、１Ｍｂｐｓなどをいれておく）及び、それ以前までの通信で使用した際の実測値による値を入れる。一方、ルータＳＧ−宛先間のスループットは遅延に左右されるため、回線のデフォルトのスループットを入れる。この表における遅延時間には、回線の持つデフォルト値或いは、それ以前までの通信で使用した際の実測値による値を入れる。１−ｂ２−０３宛先ＩＰの項目は、判定対照の通信の宛先ＩＰを表したものである。
【００３３】
Ｓ２００５の分岐５において、ＩＰヘッダの宛先アドレス部にある宛先への経路が遅延依存の経路ではないとされた場合（ＮＯ）、Ｓ２００７の処理２において、ＡＣＫ受信通知及び仮ＡＣＫ用パケット作成処理を行う。
図８は、このＳ２００７の処理２の詳細を表すものである。
処理を開始すると、まず、Ｓ２０５１の処理１にて、配信管理テーブルへ、受信したＡＣＫにより、ＡＣＫがカバーする全てのパケットの配信管理テーブルのデータ項目１−ｂ１−０３にあるＲＲＡＣＫ状態のデータを更新する。このとき、図１３の項目１−ｂ３−１０にある宛先のＳＡＣＫオプション情報を見て、ＳＡＣＫオプションをサポートしていれば、（即ち、ＳＡＣＫオプションＯＮ）ＳＡＣＫオプション付きのＴＣＰアルゴリズムに従った受信確認を行う。一方、ＳＡＣＫオプションなしの（即ち、宛先のＳＡＣＫオプション情報がＯＦＦ）宛先であった場合、ＳＡＣＫオプション無しのＴＣＰアルゴリズムに従った受信確認を行う。Ｓ２０５１の処理１の後、Ｓ２０５２の処理２へと進み、前記受信ＡＣＫが送達確認済みの、送信バッファのエントリを削除する。処理２の後、Ｓ２０５３の分岐１へと進む。
【００３４】
分岐１においては、ｔｍｐＡＣＫバッファに仮ＡＣＫ作成用パケットがあるか否か（即ち、受信パケットが一番最初の仮ＡＣＫ作成パケットとなるか）を判定する。ｔｍｐＡＣＫバッファに仮ＡＣＫ作成用パケットがなかった場合（ＮＯ）、Ｓ２０５７の処理３にて仮ＡＣＫ用にパケットをバッファへと保存し、処理４にて宛先に向けて転送する。Ｓ２０５８の処理４を終了した後、Ｓ２０５９の分岐３にてｔｍｐＡＣＫバッファに受信ＡＣＫとは異なるデータ付き仮ＡＣＫ作成用パケットがあるか否かを判定する。ｔｍｐＡＣＫバッファに既に、受信ＡＣＫが仮ＡＣＫ作成用パケットとして保存されていた場合（ＮＯ）、即ち、分岐１にてＮＯの判定からきたシーケンスではない場合、そのまま処理を終了する。一方、この分岐３でＹＥＳの場合、Ｓ２０６０の処理５にて仮ＡＣＫ用のｔｍｐＡＣＫバッファへ、受信したＡＣＫパケットを仮ＡＣＫ用パケットとして追加保存し、処理を終了する。
【００３５】
一方、Ｓ２０５３の分岐１にて、ｔｍｐＡＣＫバッファに既に登録されている仮ＡＣＫ作成用パケットが存在する（ＹＥＳ）と判定された場合、Ｓ２０５４の分岐２にて、受信したＡＣＫがｔｍｐＡＣＫバッファのパケットより広い確認応答か否かの判定を行う。
分岐２においては、受信した送達確認応答が、現在ｔｍｐＡＣＫバッファに保存されているパケットのうち、最も新しいもの（最も多くのパケットの送達確認を行うもの）よりも、更に多くの送達確認を行えるか（カバー範囲が広い送達確認応答か否か）を判定する。もし、受信した送達確認応答が、最もカバー範囲が広い送達確認応答であった場合（ＹＥＳ）、Ｓ２０５８の処理４に進み、ここで、宛先に向けて受信した送達確認応答を転送し、処理を終了する。
【００３６】
一方、Ｓ２０５４の分岐２にて最もカバー範囲が広い送達確認応答ではなかった場合（ＮＯ）、Ｓ２０５５の分岐４において、受信したＡＣＫにデータが添付されているか否かの判定を行う。受信ＡＣＫにデータが添付されていた場合（ＹＥＳ）は、Ｓ２０５６の処理６にて仮ＡＣＫ用にｔｍｐＡＣＫバッファに保存されている仮ＡＣＫ用パケットを受信したＡＣＫパケットと差し替え、処理を終了する。一方、受信ＡＣＫにデータが添付されていなかった場合（ＮＯ）では、Ｓ２０６０の処理５にて仮ＡＣＫ用のにｔｍｐＡＣＫバッファへ、受信したＡＣＫパケットを仮ＡＣＫ用パケットとして追加保存し、処理を終了する。
【００３７】
ここで、図７のＳ２００２の分岐２に戻って説明を行う。
分岐２にて配信管理テーブル（１）上に登録されている通信ではないと判定された場合（ＮＯ）、Ｓ２０１０の分岐６にて、正しい通信開始時パケットであるか否かを判定する。Ｓ２００３の分岐３においては、通信開始セグメントであるか否か、及び通信開始セグメントであると判定された場合、通信開始セグメントがＴＣＰ通信の手順とおりに正しく送受信されているか否かの判定を行う。一連の作業により、通信開始セグメントは正しい順序で、到達されたことを確認されたもののみ、Ｓ２０１２の処理６において通信確立処理を行い、確立処理の後、処理４にて宛先へのパケット転送を行い処理を終了する。処理６においては、通信確立処理を行う。通信確立処理については、後述する。
一方、Ｓ２００５の分岐５にて遅延依存の宛先であると判定された場合、Ｓ２００６の処理３にて仮ＡＣＫ利用制御を行い、宛先へのパケットの転送を行い処理を終了する。処理３の詳細については、後述する。
【００３８】
図１０は、図７のＳ２０１２における処理６の通信確立処理の詳細を表すフローである。
まず、最初に、Ｓ４００４の分岐１にて、一番最初の（通信管理テーブルにない通信で、かつＴＣＰ通信において最初にやりとりされる）パケットであるか否かの判定を行う。通信管理テーブルにある通信か否かの判定は、受信したパケットのＩＰヘッダの送信元ＩＰとＴＣＰヘッダの送信元ポート番号の組み合わせ及び、受信したパケットのＩＰヘッダの宛先ＩＰアドレスとＴＣＰヘッダの宛先ポート番号の組み合わせが共に、同じものが通信管理テーブルにあるか否かによって判定を行う。また、ＴＣＰ通信において、最初にやりとりされるパケットであるか否かの判定は、ＴＣＰヘッダのＣｏｄｅＢｉｔのＳＹＮフラグがＯＮで、かつＡＣＫフラグがオフ、かつＦＩＮフラグがオフであった場合に、一番最初のパケットとする判定を行う。上記判定の結果、一番最初のパケットであると判定された場合は、処理１へと進む。
【００３９】
Ｓ４００２の処理１においては、パケットのＴＣＰヘッダの送信元のＳＡＣＫオプションの情報を保存する。保存場所は、例えば、図１４に示す経路管理テーブルなどが適当であり、この経路管理表に情報を保存する場合、一度情報を保存した宛先及び送信元に関しては、最初のパケット受信毎に行うこのＳＡＣＫオプション情報チェック及び保存操作を省くことも可能である。
Ｓ４００２の処理１の後、Ｓ４００３の分岐２にてＳＡＣＫオプションが付いているか否かの判定を行い、ＳＡＣＫオプションが付いていた場合（ＹＥＳ）は、処理を終了する。一方、ＳＡＣＫオプションが付いていなかった場合（ＮＯ）、Ｓ４００４で転送パケットのＳＡＣＫオプションをＯＮに変更し、宛先へ転送する。このとき、経路管理テーブル表などに、既に宛先のＳＡＣＫオプションに関する情報があり、ＳＡＣＫオプションが付いていない宛先であることが分かる場合は、この操作は省略可能であり、逆に、ＳＡＣＫオプションが付いている宛先であった場合は、常にこの操作を行う。
【００４０】
一方、Ｓ４００１の分岐１にて一番最初のパケットではないと判定された場合（ＮＯ）、Ｓ４００６の分岐３にて、ＴＣＰ通信の開始時の３Ｗａｙ−ｈａｎｄｓｈａｋｅが全て正しく行われているか否かを判定し、正しい場合（ＹＥＳ）は、Ｓ４００７の分岐４にて通信を行う双方が確立済みか否かを判定し、確立済みでない場合（ＮＯ）は、Ｓ４００９の処理５にて通信確立の判定に必要な情報を保存する。この判定のためには、送信元、宛先双方のＴＣＰのＳｔａｔｕｓ及びＳｔａｔｕｓの変化に関わるフラグの情報を保存しておく必要がある。即ち、個々のパケットについて、転送元はそのパケット転送によってどのような状態になっているか、及び転送先はこのパケットを受信することによってどのような状態になるかを計算し、送信元及び宛先の情報として保存する。
これは、例えば、この配信管理装置は、ホストＣ１から受信した最初のＳＹＮパケットを転送する際には、送信元Ｃ１のＳｔａｔｕｓ情報は、ＳＹＮ−ＳＥＮＴ状態にし、パケットを宛先Ｃ２に転送する際に、Ｃ２に関するのＳＹＮ受信済みフラグ情報を立て、Ｃ２からのＳＹＮに対するＡＣＫを受信しそれを転送する際に、Ｃ２のＳｔａｔｕｓをＳＹＮ−ＲＥＣＩＥＶＥＤに変更し、Ｃ１のＳＹＮのＡＣＫ受信済みフラグをたてるという操作を行う。
Ｓ４００６の分岐３にて、確立時のパケットに一つでも誤りがあった場合（ＮＯ）、Ｓ４００５の処理３で、この通信に関し、取得した情報を全てクリアし、処理を終了する。
【００４１】
一方、Ｓ４００７の分岐４にて、両ホスト共に通信確立済であるとの判定がなされた場合（ＹＥＳ）、Ｓ４００８の処理４にて通信管理テーブルに情報を登録し、処理を終了する。処理４においては、図１３の配信管理テーブルのうち、項目１−ｂ３−０１受付番号（通信ＩＤ）、項目１−ｂ３−０４送信元ＩＰ、１−ｂ３−０６宛先ＩＰアドレス、項目１−ｂ３−１３送信元ポート番号、項目１−ｂ３−１４宛先ポート番号、項目１−ｂ３−１７送信元及び宛先におけるそれぞれの送信ウィンドウサイズ及び受信ウィンドウサイズに関する情報をパケットのＩＰ及びＴＣＰヘッダより取得し、保存する。項目１−ｂ３−０８送信元スループットには、通信開始時にはデフォルト値として、図１４の経路管理テーブルを参照し、当該通信における送信元のデフォルトのスループットを取得し、保存する。この時点で、通信する双方のホストのＳＡＣＫオプションに関するサポート情報が経路管理テーブルに保存されているので、その情報からＳＡＣＫオプションに関する情報を取得し、図１３の項目１−ｂ３−１０に保存する。更に、項目１−ｂ３−１２ＲＴＴにデフォルト値として、経路管理テーブルの項目１−ｂ２−０２の遅延情報に書いてある値の２倍の数値を入力し、保存する。
【００４２】
次に、図７におけるＳ２００８の処理３について述べる。
図９は、この仮ＡＣＫの作成及び送信処理である処理３の詳細を表すフローである。
Ｓ２００８の処理が開始されると、Ｓ３００１の分岐１にて、ｔｍｐＡＣＫ送信に必要なセグメントを受信受信済みか否かを判定する。これは、送信元と宛先の間で、通信終了時に通信結果において矛盾が生じないようにするための判定である。例えば、「ＦＩＮではなく、かつ送信元において送達確認応答が受信されていないパケットを、少なくとも二つ以上、転送すべきパケットとして受信しているか、否か」という条件とすることが可能である。これにより、常に、少なくとも一つは、仮のＡＣＫにより送達確認パケットが存在することになり、結果に矛盾を生じさせない。この分岐１にて、ｔｍｐＡＣＫ作成及び送信に必要なセグメントを受信済みであるとの判定が出た場合（ＹＥＳ）、Ｓ３００２の処理１にて仮ＡＣＫ作成対象の決定を行う。
【００４３】
Ｓ３００２の処理１においては、分岐１の判定条件に基づき、仮ＡＣＫ作成対象の送信元Ｃ１より受信したデータパケットを選定する。例えば、仮ＡＣＫを作成していないＦＩＮでないシーケンス番号が、α，α＋β，α＋β＋１（α，β共に正の整数）であるパケットをＣ２に向けて転送するべきデータとして、この装置が受信していたとする。このとき、送信元がＳＡＣＫオプションをサポートしていた場合、シーケンス番号がα＋βであるパケットを仮ＡＣＫ作成対象として決定し、Ｓ３００３の処理２にて仮ＡＣＫ作成用のパケットのデータを変更する。ここで、変更するものは、仮ＡＣＫパケットのＡＣＫ番号とＳＡＣＫオプションの情報である。ＡＣＫ番号にα＋β＋１を入れ、ＳＡＣＫオプションに、シーケンス番号がαからシーケンス番号がα＋βの間の未受信ブロック情報を入れる（即ち、オプションタイプとして４と５をサポート）。
一方、送信元がＳＡＣＫオプションをサポートしていない場合、Ｓ３００２の処理１にてｔｍｐＡＣＫ作成対象としてシーケンス番号がαのものを決定し、Ｓ３００３の処理２にて、仮ＡＣＫのＡＣＫ番号をα＋１に設定し、ＳＡＣＫ関連オプションには何も入力しない（即ち、オプションタイプとして０１を設定）。
【００４４】
Ｓ３００３の処理２の終了後、Ｓ３００４の処理３にて作成したｔｍｐＡＣＫ（即ち、処理１，２によりデータを変更した仮ＡＣＫ用バッファに保存してある仮ＡＣＫ作成用パケットのコピー）をＣ１へ転送する。その後、Ｓ３００５の処理４にて、送信管理テーブル（１）にある仮ＡＣＫがカバーする（送達確認の対象とする）図１２の送信情報の項目１−ｂ１−０２を更新し、Ｓ３００６で処理５として（転送するために）受信した仮の送達確認応答を作成する可能性のあるデータパケットのみ（即ち、ＦＩＮなどは保存しない）を送信バッファに保存し、Ｓ３００９で仮ＡＣＫ作成用パケットがデータを含む場合、データを消去し、処理を終了する。
【００４５】
一方、図９のＳ３００１の分岐１にて、ｔｍｐＡＣＫ送信に必要なセグメントを受信していない（ＮＯ）との判定となった時、Ｓ３００２の分岐２にて、ＡＣＫに添付されてＣ２より受信した未転送データ（ｔｍｐＡＣＫバッファに保存された仮ＡＣＫ作成用パケットでデータが添付されており、かつ転送されていないもの）があるか、否かの判定を行う。未転送データがあった場合（ＹＥＳ）、Ｓ３００８で仮ＡＣＫ作成用パケットをそのまま転送（即ち、以前送ったものと同じＡＣＫパケットをもう一度、データ付きで送ることになる）し、その後、上述したＳ３００９の処理７を行う。
Ｓ３００７の分岐２にて、未転送データがない場合（ＮＯ）、そのまま処理を終了する。
【００４６】
次に、図１１に示されるＳＧの配信管理部のＣ２における再送制御について説明する。
再送制御は、通信確立開始時から通信終了時までの間、ループ状に行われる一連の処理である。再送処理を開始すると、Ｓ５００１の分岐１により、この装置と宛先の間の再送タイムアウトチェック時間が経過したか否かを、チェックする。この再送タイムアウト時間とは、図１３の項目１−ｂ３−１２のＲＴＴにより適宜決定される値であり、再送タイマは、Ｓ５００２の処理４にて初期化され、Ｓ５０１０の処理６にてカウントアップされる。
分岐１にて再送タイムアウトチェック時間が経過しているか否かを判定し、経過していない場合（ＮＯ）、Ｓ５００６の分岐４にてＡＣＫに添付されてＣ２より受信した未転送データ（ｔｍｐＡＣＫバッファに保存された仮ＡＣＫ作成用パケットでデータが添付されており、かつ転送されていないもの）があるか、否かの判定を行う。未転送データがあった場合（ＹＥＳ）仮ＡＣＫ作成用パケットをＳ５００７の処理７にてそのまま転送（即ち、以前送ったものと同じＡＣＫパケットをもう一度、データ付きで送信）し、仮ＡＣＫ作成用パケットがデータを含む場合は、Ｓ５００８の処理８にてデータを消去する。
【００４７】
この処理８の後、Ｓ５００５の分岐３にて配信終了か否かの判定を行う。これは、配信管理テーブル図１２の項目１−ｂ１−０３をチェックし、全てのパケットについてＡＣＫ受信済みとなっていた場合配信終了とする、あるいはその状態になった時点で配信終了フラグをたてるなどの運用が可能である。即ち、Ｃ２にむけて再送するべきデータが一つもなくなった場合に、配信終了とみなす。この分岐３にて配信終了と判定された場合（ＹＥＳ）、処理を終了する。
【００４８】
一方、Ｓ５００１の分岐１にて再送タイムアウト時間が経過していた場合（ＹＥＳ）、Ｓ５００２の処理４にて再送タイマのリセットを行い、Ｓ５００３の処理１にて現在時刻と配信管理テーブルの１−ｂ１−０４のエントリ時間との比較で再送タイムアウトしているデータがあるか否かをチェックし、Ｓ５００４でタイムアウトしているデータがあれば、配信管理テーブルの再送付ラグ１−ｂ１−０５をＯＮにし、Ｓ５００９の処理３に進む。処理１においては、配信管理テーブルの項目１−ｂ３−１０を見て、ＳＡＣＫオプションの状況に応じたＳ５００３の再送判定処理１の終了後、Ｓ５００４の分岐２にて再送タイムアウト発生データがあるか否かを判定する。この分岐２の判定のために、フラグを用意し、一つでも再送すべきデータがあった場合（ＹＥＳ）は、このフラグを立てるという運用も可能である。
【００４９】
Ｓ５００４の分岐２にて再送タイムアウト発生データがなかった場合、分岐３へと進む。一方、分岐２にて、再送タイムアウト発生データがなかった場合（ＮＯ）、分岐３にて配信終了か否かの判定を行い、配信終了ではない場合（ＮＯ）、処理１にて、設定した再送フラグを参照し、処理３にて送信バッファに保存されている該当するパケットを再送する。処理３の後、処理６を行う。
処理６では、通常のＴＣＰのタイムアウト時間（２００ｍｓｅｃ）をカウントし、その間待機する。これは、通常のＴＣＰのタイムアウト時間毎に分岐１及び分岐４の判定を行い、宛先からの未転送データの遅延を防ぐためである。
また、この実施の形態において、宛先を複数としたマルチキャスト通信に適応する場合、管理する宛先毎に別々に通信を管理することで対応可能となる。
【００５０】
実施の形態２．
実施の形態１では、伝送路に遅れが発生した場合を説明したが、本実施の形態では、エラーが多発する回線に本システムを適用する場合を説明する。システムの構成は図１と同様であるが、しかしＣ１からエラー発生率が小さな回線を経由して受信して、Ｃ２へエラー発生率が大きい回線を経由して転送する構成となる。ＳＧ配信管理部の動作を図１５に示し、図７と比較するとエラー検出に関係するステップの部分が異なっている。それ以外の動作は図７と同等である。
図１６は、この実施の形態における配信管理テーブルの付加部分を示す図である。
【００５１】
図１５において、処理が開始されると、Ｓ６００１の分岐１０にて、受信して転送するパケットのネットワーク層のヘッダがＩＰヘッダであるか否か、及びＩＰヘッダであった場合、正しいＩＰアドレスとなっているかどうかを確認した後、ＩＰヘッダの宛先を見て、図１６を用いてエラー依存の回線か否かのチェックを行う。図１６の項目２−ｂ１−０１は、宛先を示すものであり、項目２−ｂ１−０２は、項目２−ｂ１−０１に示した宛先への通過経路であり、２−ｂ１−０３のエラーが多いかは、２−ｂ１−０２に示す経路がエラーが多い回線か否かの情報を示すものである。従って、例えば、例えば、ＩＰヘッダの宛先ＩＰアドレスがＲ１だった場合、分岐１０においては、図中２−ｂ１−０４で示された行を見てエラーが多い回線であるとのＳ６００１での判定（ＹＥＳ）を出す。
【００５２】
この分岐１０において、エラーが多い回線であるとの判定が出た場合（ＹＥＳ）、Ｓ６００２の分岐１に進み、ＩＰ及びＴＣＰのヘッダを参照し、エラー依存のプロトコルか否かが判定される。例えば、ＩＰヘッダのプロトコル情報（上位層のプロトコル情報）がＵＤＰのものは、エラー依存のプロトコルではないと判定し、Ｓ６００９の処理４にて宛先へのパケットの転送を行い、処理を終了するなどという運用を行う。Ｓ２００２の分岐２においては、受信したセグメントが、図１における配信管理テーブル（１）１００１に、既に登録済の通信であるか否かの判定を行う。
【００５３】
Ｓ６００２の分岐１にて、エラーに依存するプロトコルであると判定された場合（ＹＥＳ）、Ｓ２００３の分岐２へと進み、配信管理テーブルに登録済みの通信か否かにより、管理している通信かどうかを判定する。分岐２においては、ＩＰヘッダ中の送信元ＩＰとＴＣＰヘッダ中の送信元ポートの組み合わせ及び宛先ＩＰと宛先ポートの組み合わせが全て同一の通信を同一の管理単位とし、登録済の通信であるか否かを判定する。
この実施の形態２においても実施の形態１と同様に、配信管理テーブル（１）の例として、図１２及び図１３を用いる。
Ｓ２００２の分岐２以降の動作は、実施の形態１、図７のそれと同じなので簡単に述べる。
【００５４】
分岐２の判定がＹＥＳなら、分岐３の判定を行う。この分岐３にて、正しいパケットではなかった場合（ＮＯ）、処理５にてエラー処理を行う。処理５では、正しく受信されないパケット受信時には、配信管理テーブル及び開始時パケットバッファよりデータを消去し、スプーフィング処理を中止する。
分岐３にて、正しいパケットであった場合（ＹＥＳ）は、分岐４へと進み、終了パケットか否かを判定する。終了パケットであった場合（ＹＥＳ）は、処理１にて通信終了処理を行い、更にＳ２００９の処理４にて宛先へのパケットの転送を行い処理を終了する。
一方、Ｓ２００４の分岐４にて通信終了パケットではないと判定された場合（ＮＯ）、エラー依存の宛先に向けたものであるか否かを判定する。「エラー依存である宛先」の判定には、分岐１０と同様に、図１６の表を用い、ルーティング機能によって決定される経路が、宛先への経路上に伝送エラーの多い回線があるか否かを経路管理テーブルを用いて判定する。上記分岐５には、経路管理テーブルとして、図１４で示すような表も併用する。
【００５５】
Ｓ６００５の分岐５において、ＩＰヘッダの宛先アドレス部にある宛先への経路がエラー依存の経路ではないとされた場合（ＮＯ）、処理２においてＡＣＫ受信通知及び仮ＡＣＫ用パケット作成処理を行う。この処理の詳細は、実施の形態１と同様に、図８に詳細が示される。
一方、Ｓ２００２の分岐２にて配信管理テーブル（１）上に登録されている通信ではないと判定された場合（ＮＯ）、分岐６にて、正しい通信開始時パケットであるか否かを判定する。一連の作業により、通信開始セグメントは正しい順序で、到達された事を確認されたもののみ（ＹＥＳ）、処理６において通信確立処理を行い、確立処理の後、処理４にて宛先へのパケット転送を行い処理を終了する。
一方、Ｓ６００５の分岐５にて遅延依存の宛先であると判定された場合（ＹＥＳ）、処理３にて仮ＡＣＫ利用制御を行い、宛先へのパケットの転送を行い処理を終了する。
なお、再送処理については実施の形態１と同様である。また、この実施の形態において、宛先を複数としたマルチキャスト通信に適応する場合、管理する宛先毎に別々に通信を管理することで対応できる。
【００５６】
実施の形態３．
次に、実施の形態３について説明を行う。
本実施の形態における構成は図１に示すとおりであるが、プロトコル管理テーブル１００８を備える。
図１７は、本実施の形態におけるゲートウェイ（ＳＧ）の転送動作を示すフロー図である。
その概要としては、ｔｍｐＡＣＫ使用判定部１００２−２が転送先の経路回線及びセグメントのチェックを行い、その結果に応じてＳＧの持つ受信セグメントに対する仮の送達確認応答を作る（Ｓｐｏｏｆｉｎｇ処理）行うか否かを決定し、必要に応じて受信セグメントの情報を配信管理テーブル（１）１００１に登録し、Ｓｐｏｏｆｉｎｇを行うと決定された場合、仮ＡＣＫを利用したＳｐｏｏｆｉｎｇ制御を行うものである。
【００５７】
以下に、詳細な処理内容を示す。
これは、ゲートウェイ（ＳＧ：１００２）がＣ１から受信したデータをＣ２に向けて転送する通信における動作をＳＧ配信管理部（１００２−６）を中心として表したものである。ゲートウェイ装置１００２は、Ｃ１通信部１００２−８からセグメントを受信すると、受信バッファ１００７にセグメントを一時保存し、配信管理部１００２−６は、図７の処理を開始する。
【００５８】
図１７において、処理が開始されると、Ｓ７００１の分岐２にて、受信したセグメントが、図１における配信管理テーブル（１）１００１に、既に登録済の通信であるか否かの判定を行う。分岐２においては、受信して転送するパケットのネットワーク層のヘッダがＩＰヘッダであるか否か、及びＩＰヘッダであった場合、正しいＩＰアドレスとなっているかどうかを確認した後、配信管理テーブルに登録済みの通信か否かにより、管理している通信かどうかを判定する。分岐２においては、ＩＰヘッダ中の送信元ＩＰとＴＣＰヘッダ中の送信元ポートの組み合わせ及び宛先ＩＰと宛先ポートの組み合わせが全て同一の通信を同一の管理単位とし、登録済の通信であるか否かを判定する。この実施の形態３においても実施の形態１と同様に、配信管理テーブル（１）の例として、図１２及び図１３を用いる。しかし、実施の形態１とは異なる点がある。この実施の形態３においては、Ｃ１からＣ２に対する通信を、Ｃ１からＣ２及びＣ２からＣ１という二つの通信のセットとして扱う。従って、例えば、図１３において、受付番号（１−ｂ３−０１）がαとα＋１は、常にセットの通信であるとして扱う必要がある。
【００５９】
Ｓ７００１の分岐２において、配信管理テーブルにて管理済み通信である（ＹＥＳ）判定がでた場合、Ｓ７００２の分岐１に進み、送信側、受信側ともに同一のプロトコルか否かを判定する。これは、例えば、ＳＡＣＫオプションをサポートしていない送信元から、ＳＡＣＫオプションをサポートしている受信先へデータ送信する際に、送信元においてＳＡＣＫオプション付き再送を可能とするためのものであり、また、ＳＡＣＫオプションなしの送信元に対し、ＳＡＣＫオプション付きのＡＣＫを返すことを可能とするためのものである。従って、例えば、図１３の項目１−ｂ３−１０を見て、送信元と宛先とのＳＡＣＫオプションが同一であった場合、送受信とも同一のプロトコルであると判定し、Ｓ２００９の処理４にて、宛先へのパケットの転送を行い処理を終了するなどという運用がある。
また、別な例では、この図１３にＩＰバージョンに関する項目を追加し、プロトコル変換を行う機能をこの装置に追加し、ＩＰＶ６をサポートするホストとＩＰＶ４のみをサポートするホストとの間での通信を可能とするという運用も可能である。
【００６０】
Ｓ７００２の分岐１にて、送受信とも同一のプロトコルではないと判定された場合（ＹＥＳ）、Ｓ２００３の分岐３へと進み、受信したセグメントが正しいパケットであるか否かの判定を行う。ここでは、ＴＣＰ行うシンタックスチェック（パケットの形式だけでなく、宛先の受信Ｗｉｎｄｏｗ内のセグメントであるか否かなどの受信の順序なども含む）を行う。この際、ＳＡＣＫオプション付きの送信元か否かによってＷｉｎｄｏｗ内のパケットか否かの判定結果は異なる。分岐３にて、正しいパケットではなかった場合、Ｓ２０１１の処理５にてエラー処理を行う。処理５においては、宛先において正しく受信されないパケット受信時には、配信管理テーブル及び開始時パケットバッファよりデータを消去し、スプーフィング処理を中止する。
分岐３にて、正しいパケットであった場合（ＹＥＳ）は、Ｓ２００４の分岐４へと進み、パケットの終了フラグを見て、終了パケットか否かを判定する。終了パケットであった場合（ＹＥＳ）は、Ｓ２００６の処理１にて通信終了処理を行い、処理４にて宛先へのパケットの転送を行い処理を終了する。
【００６１】
一方、Ｓ２００４の分岐４にて通信終了パケットではないと判定された場合（ＮＯ）、Ｓ２００７の処理２において、通信する二つのホストの間の双方向の通信のセットについて、それぞれのＡＣＫ受信通知及び仮ＡＣＫ用パケット作成処理を行う。このそれぞれの処理の詳細は、実施の形態１と同様に、図７に示される。Ｓ２００７の処理２の後、Ｓ２００８の処理３にて仮ＡＣＫ利用制御を行い、宛先へのパケットの転送を行い処理を終了する。
【００６２】
一方、Ｓ７００１の分岐２にて、配信管理テーブル（１）上に登録されている通信ではないと判定された場合（ＮＯ）、Ｓ２０１０の分岐６にて、正しい通信開始時パケットであるか否かを判定する。分岐６においては、通信開始セグメントであり、かつ通信開始セグメントであり、更に、通信開始セグメントがＴＣＰ通信の手順とおりに正しく送受信されているか否かの判定を行う。一連の作業により、通信開始セグメントは正しい順序で、到達されたことを確認されたもののみ（ＹＥＳ）、Ｓ２０１２の処理６において通信確立処理を行い、処理４にて宛先へのパケット転送を行い、処理を終了する。処理６においては、通信確立処理を行う。通信確立処理は、実施の形態１と同様である。
再送処理については、実施の形態１の処理と同様の処理をセットとしている双方向の通信について行う。
更に、これをマルチキャストに適用した場合、実施の形態３のセットを、例えば、Ｃ１からＣ２−１，Ｃ２−２，・・・，Ｃ２−ｎまでのｎ個の宛先へのマルチキャストとした場合、ｎ個の宛先それぞれの双方向の通信（つまり、ｎ×２個）の通信を管理し、それぞれについて上記と同様の処理を行う。
【００６３】
上記の各実施の形態では、ゲートウェイのＳＧ配信管理部はあたかも専用のハードウェアで構成されているように記述したが、これをそれぞれ基本動作フロー図である図７等に示される工程を含むソフトウェアにより構成してもよい。こうしたソフトウェアを汎用の計算機のメモリに搭載して、ＳＧ配信管理動作をさせてもよい。
【００６４】
【発明の効果】
以上のようにこの発明によれば、送信または受信装置のいずれかが他方と異なる応答機能を持つ場合に、システムとしては他方の応答機能に合わせて該当する回線において再送制御を行うようにしたので、システムとしての再送量を減らして輻輳をなくす効果がある。
【図面の簡単な説明】
【図１】  この発明の各実施の形態におけるシステム構成を示す図である。
【図２】  実施の形態１におけるシーケンスの例を示す図である。
【図３】  実施の形態１におけるシーケンスの例を示す図である。
【図４】  実施の形態１におけるシーケンスの例を示す図である。
【図５】  実施の形態１におけるシーケンスの例を示す図である。
【図６】  実施の形態１におけるＳＧ配信管理部とｔｍｐＡＣＫ裂く西部の構成を示す図である。
【図７】  実施の形態１におけるゲートウェイが行う基本動作フロー図である。
【図８】  図７における「処理２」の詳細動作を示すフロー図である。
【図９】  図７における「処理３」の詳細動作を示すフロー図である。
【図１０】  図７における「処理６」の詳細動作を示すフロー図である。
【図１１】  実施の形態１におけるゲートウェイが行う再送制御の詳細動作を示すフロー図である。
【図１２】  実施の形態１における配信管理テーブルの例を示す図である。
【図１３】  実施の形態１における配信管理テーブルの例を示す図である。
【図１４】  実施の形態１における経路管理テーブルの例を示す図である。
【図１５】  実施の形態２におけるゲートウェイが行う基本動作フロー図である。
【図１６】  実施の形態２における配信管理テーブルの例を示す図である。
【図１７】  実施の形態３におけるゲートウェイが行う基本動作フロー図である。
【図１８】  従来の再送制御を含むシーケンスの例を示す図である。
【図１９】  従来の送信ゲートウェイを含む遅延の大きな経路があるシステムの構成図である。
【符号の説明】
０００４  通信系、１００１  配信管理テーブル、１００２  ゲートウェイ、１００２−１  Ｃ２通信部、１００２−２  ｔｍｐＡＣＫ使用判定部、１００２−３  ｔｍｐＡＣＫ作成部、１００２−４  ＳＧＴｉｍｅｒカウント部、１００２−５  配信データ記録部、１００２−６  ＳＧ配信管理部、１００２−８  Ｃ１通信部、１００３  Ｃ１、１００５  Ｃ２、１００６  送信バッファ、１００７  受信バッファ、１００８  プロトコル管理テーブル。
【図１】
0003830380.tif 000002
【図２】
0003830380.tif 000003
【図３】
0003830380.tif 000004
【図４】
0003830380.tif 000005
【図５】
0003830380.tif 000006
【図６】
0003830380.tif 000007
【図７】
0003830380.tif 000008
【図８】
0003830380.tif 000009
【図９】
0003830380.tif 000010
【図１０】
0003830380.tif 000011
【図１１】
0003830380.tif 000012
【図１２】
0003830380.tif 000013
【図１３】
0003830380.tif 000014
【図１４】
0003830380.tif 000015
【図１５】
0003830380.tif 000016
【図１６】
0003830380.tif 000017
【図１７】
0003830380.tif 000018
【図１８】
0003830380.tif 000019
【図１９】
0003830380.tif 000020