(58)【調査した分野】(Int.Cl.,DB名)
前記制御手段は、前記比較手段の比較の結果が一致した場合は前記バッファから前記第一のパケットを削除することを特徴とする請求項1乃至3のいずれかに記載の通信システム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、TCPヘッダーのチェックサムは1の補数を用いた16ビットの値でありハッシュ関数に比して信頼性が低いという問題があった。パケットにハッシュ値を付与した場合は、1パケット毎にハッシュ関数を計算しなければならずCPU負荷が高くなってしまう。
【0005】
また、TCPは現在の光ファイバによるデジタル伝送の高品質かつ高速な網に対してはオーバヘッドが大きすぎるという問題があった。TCPでは、送信側は受信側から送信されるACKを必ず待つので、送信側はACKを受信するか、タイムアウトしない限りパケットを送信できない。特に、物理的に遠距離な通信において網内遅延の影響を直接受けてしまう。
【0006】
本発明は、上記に鑑みてなされたものであり、データを高信頼で転送することを目的とする。
【0007】
さらに、本発明は、データを高速で転送することを目的とする。
【課題を解決するための手段】
【0008】
第1の本発明に係る通信システムは、送信装置と受信装置を備えた通信システムであって、前記送信装置は、送信する第一のパケットを保持するバッファと、前記第一のパケットを前記受信装置へ送信する送信手段と、前記受信装置が返送した第二のパケットを受信する受信手段と、前記第二のパケットと前記バッファが保持する前記第一のパケットとを比較する比較手段と、前記比較手段の比較の結果が一致しなかった場合は前記第一のパケットの再送を前記送信手段に指示する制御手段と、
を有し、前記制御手段は、所定時間内に前記第二のパケットを受信せずにタイムアウトした場合は前記第一のパケットの再送を前記送信手段に指示し、タイムアウトにより前記第一のパケットを再送したときに当該第一のパケットについてもタイムアウトした場合はバックオフして待機し、さらにタイムアウトしたときはコネクション型の他の通信方法により前記受信装置の状態を確認することを特徴とする。
【0009】
上記通信システムにおいて、前記送信装置は、前記第二のパケットの返送を待たずに次の前記第一のパケットを送信することを特徴とする。
【0010】
上記通信システムにおいて、前記第二のパケットの返送を待たずに送信する前記第一のパケットの数は設定により定められることを特徴とする。
【0011】
上記通信システムにおいて、前記制御手段は、前記比較手段の比較の結果が一致した場合は前記バッファから前記第一のパケットを削除することを特徴とする。
【0014】
上記通信システムにおいて、前記第一のパケットと前記第二のパケットはデータグラム通信を用いて転送されることを特徴とする。
【0015】
第2の本発明に係る送信装置は、送信する第一のパケットを保持するバッファと、前記第一のパケットを受信装置へ送信する送信手段と、前記受信装置が返送した第二のパケットを受信する受信手段と、前記第二のパケットと前記バッファが保持する前記第一のパケットとを比較する比較手段と、前記比較手段の比較の結果が一致しなかった場合は前記第一のパケットの再送を前記送信手段に指示する制御手段と、
を有し、前記制御手段は、所定時間内に前記第二のパケットを受信せずにタイムアウトした場合は前記第一のパケットの再送を前記送信手段に指示し、タイムアウトにより前記第一のパケットを再送したときに当該第一のパケットについてもタイムアウトした場合はバックオフして待機し、さらにタイムアウトしたときはコネクション型の他の通信方法により前記受信装置の状態を確認することを特徴とする。
【0017】
第
3の本発明に係る通信方法は、送信装置と受信装置による通信方法であって、前記送信装置による、第一のパケットを前記受信装置へ送信するステップと、前記受信装置が返送した第二のパケットを受信するステップと、前記第二のパケットと前記第一のパケットとを比較するステップと、前記比較するステップの結果が一致しなかった場合は前記第一のパケットを再送するステップと、
所定時間内に前記第二のパケットを受信せずにタイムアウトした場合は前記第一のパケットを再送するステップと、タイムアウトにより前記第一のパケットを再送したときに当該第一のパケットについてもタイムアウトした場合はバックオフして待機し、さらにタイムアウトしたときはコネクション型の他の通信方法により前記受信装置の状態を確認するステップと、を有することを特徴とする。
【発明の効果】
【0018】
本発明によれば、データを高信頼で転送することができる。また、本発明によれば、データを高速で転送することが可能となる。
【発明を実施するための形態】
【0020】
以下、本発明の実施の形態について図面を用いて説明する。
【0021】
図1は、本実施の形態における通信システムがパケットを送受信する様子を説明するための模式図である。
【0022】
本実施の形態における通信システムは、送信側の装置と受信側の装置が高品質かつ高速なネットワークを介して接続され、装置間でパケットを送受信する。
【0023】
本実施の形態における通信システムでは、送信側の装置がパケットを送信すると、受信側の装置は受信したパケットを折り返して送信する。送信側と受信側の装置間でコネクションの確立は行わずに、送信側の装置は通信の開始時から設定により定められたパケット数を順次送信する。設定により定められたパケット数とは、例えば輻輳が発生しない程度のパケット数であり、利用可能な帯域を上限としたり、予め通信相手と調整しておく。
【0024】
送信側の装置は、折り返して送信された折返しパケットを受信すると、送信したパケットと受信した折返しパケットを突合し、パケットが正しく送信されたことを確認する。なお、パケット同士を突合した結果、一致しない場合はそのパケットを再送する。また、タイムアウト時間内に折返しパケットを受信しない場合もパケットを再送する。
【0025】
現在では10ギガビット・イーサネットが普及している。10ギガビット・イーサネットのように全二重通信の場合、送信側から受信側へパケットを送出しながら、同時に、受信側から送信側へ折返しパケットを送出しても網に悪影響を与えることはない。
【0026】
なお、送信側の装置は受信側の装置からの折返しパケットの返送を待たずに次々とパケットを送信するので回線の使用率が向上する。
【0027】
次に、本実施の形態における通信システムの構成について説明する。
【0028】
図2は、本実施の形態における通信システムの構成を示す機能ブロック図である。
【0029】
図2に示すように、本実施の形態における通信システムは、送信装置1と受信装置2を備える。
【0030】
送信装置1は、入力部11、送信バッファ12、送信部13、受信部14、比較部15、および制御部16を備える。
【0031】
入力部11は、アプリケーションなどから送信するデータを入力し、データをパケットに分割して送信バッファ12に格納する。
【0032】
送信バッファ12は、パケットを一時的に保持する記憶領域である。
図2では、パケットを丸印で示した。
【0033】
送信部13は、送信バッファ12からパケットを取り出し、送信元、送信先、および再送やフロー制御に用いる制御情報を備えたヘッダーをパケットに付与して受信装置2へ送信する。ヘッダーに記載する情報としては、例えばパケットの順番を示すシーケンス番号がある。パケットの到着する順番が入れ替わった場合は、受信装置2はシーケンス番号を用いてパケットの順番を入れ替える。
【0034】
受信部14は、受信装置2から折り返して送信された折返しパケットを受信して比較部15に送信する。
【0035】
比較部15は、折返しパケットと送信バッファ12に格納された送信済のパケットを比較する。比較の結果、一致した場合は比較したパケットを送信バッファ12から削除し、一致しなかった場合は、比較したパケットの再送を制御部16に指示する。折返しパケットに対応する送信済のパケットは、例えばパケットのヘッダーに記載したシーケンス番号を用いて特定することができる。
【0036】
制御部16は、パケットの再送やフロー制御などの通信制御を行う。
【0037】
受信装置2は、受信部21、送信部22、受信バッファ23、および出力部24を備える。
【0038】
受信部21は、送信装置1からパケットを受信し、受信したパケットを受信バッファ23に格納するとともに、受信したパケットを送信部22へ送信する。
【0039】
送信部22は、受信部21から受信したパケットを折返しパケットとして送信装置1へ送信する。
【0040】
受信バッファ23は、受信したパケットを一時的に保持する記憶領域である。
【0041】
出力部24は、受信バッファ23からパケットを取り出して送信装置1が送信したデータを再構築し、データをアプリケーションなどに渡す。
【0042】
なお、送信装置1および受信装置2が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは送信装置1および受信装置2が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0043】
また、
図2では、送信装置1と受信装置2はそれぞれ送信機能と受信機能のみを持つ装置として図示したが、送信装置1と受信装置2の双方が送受信機能を持ってもよい。
【0044】
本実施の形態における通信システムは、IPやUDPなどの既存のデータグラム通信上に実装することが可能である。
【0045】
次に、本実施の形態における通信システムの動作について説明する。
【0046】
まず、送信装置1がパケットを送信する処理について説明する。
図3は、送信装置1がパケットを送信する処理の流れを示すフローチャートである。
【0047】
送信部13は送信バッファ12からパケットを取り出して受信装置2へ送信する(ステップS11)。
【0048】
続いて、受信部14が受信装置2から折返しパケットを受信したか否か判定する(ステップS12)。
【0049】
受信部14が折返しパケットを受信すると(ステップS12のYES)、受信部14は受信した折返しパケットを比較部15へ送信し、比較部15は折返しパケットと送信バッファ12が保持する送信したパケットを比較する(ステップS13)。
【0050】
比較部15による比較の結果、折返しパケットと送信したパケットが一致した場合(ステップS14のYES)、送信バッファ12から送信済のパケットを削除する(ステップS15)。
【0051】
一方、折返しパケットを受信していない場合(ステップS12のNO)、予め設定した非常に短いタイマーがタイムアウトしたか否か判定する(ステップS16)。本実施の形態における通信システムは、高速なネットワークを用いてパケットを送受信し、さらに受信装置2は受信したパケットをそのまま即座に折り返して返信するので、長いタイマーを設定する必要はない。そこで、本実施の形態では、送信装置1と受信装置2との間のネットワークの通信品質を考慮した非常に短いタイマーを設定する。
【0052】
タイムアウトしていない場合は(ステップS16のNO)、ステップS12に戻って折返しパケットの到着を待つ。
【0053】
タイムアウトした場合は(ステップS16のYES)、送信バッファ12からパケットを再び取得して再送する(ステップS17)。タイムアウト時は1回程度のリトライのみ実施し、リトライのタイムアウト時はバックオフして待機する。バックオフの処理は、CSMA/CDと同様の処理を行うことができる。さらにタイムアウトしたときは、他の通信方法(例えばTCP)を用いて受信装置2の状態を確認する。
【0054】
また、比較部15による比較の結果、折返しパケットと送信したパケットが一致していない場合も(ステップS14のNO)、パケットの再送処理を行う(ステップS17)。パケットの再送は、1パケット毎に行われる。
【0055】
続いて、受信装置2がパケットを受信する処理について説明する。
図4は、受信装置2がパケットを受信する処理の流れを示すフローチャートである。
【0056】
受信部21がパケットを受信すると、受信したパケットを受信バッファ23に格納するとともに、受信したパケットを送信部22に渡す(ステップS21)。
【0057】
送信部22は、受信部21から受け取ったパケットをパケットの送信元である送信装置1へ送信する(ステップS22)。
【0058】
<比較例>
次に、本実施の形態における通信システムの通信方式とTCPとを比較する。
【0059】
図5は、比較例のTCPを利用してパケットを送受信する様子を説明するための模式図である。
【0060】
TCPでは、まず3ウェイハンドシェイクにより送信側と受信側との間で接続を確立する。3ウェイハンドシェイクの後、送信側はパケットを送信する。受信側はパケットを受信するとACKを送信側に返信する。送信側はACKを受信してから次のパケットを送信する。したがって、
図5に示すように、送信側はパケットを送信してからACKを受信するまで次のパケットを送信する送信待ち時間が発生してしまう。
【0061】
図6は、送信側から受信側への経路内を流れるパケットの様子を示した模式図である。
図6(a)は、TCPを用いたときの経路内を流れるパケットの様子を示す図であり、
図6(b)は、本実施の形態における通信システムを用いたときの経路内を流れるパケットの様子を示す図である。
【0062】
図6(a)に示すTCPを用いた例では、送信側は、パケット1を送信した後、受信側が送信するACKを受信するまではパケット2を送信しないので、パケット1の送信後からパケット2を送信するまでの間に送信待ち時間が存在する。
【0063】
図6(b)に示す本実施の形態における通信システムを用いた例では、送信側は、パケット1を送信した後、パケット1の折返しパケットを待つことなく、続くパケット2を送信するので、パケット1の送信後からパケット2を送信するまでの間に送信待ち時間が存在しない。
【0064】
図6(a)(b)を比較すると、送信側がパケット1を送信してからパケット3が受信されたことを確認するまで(
図6(a)の場合はACKを受信するまで、
図6(b)の場合はパケット3の折返しパケットを受信するまで)のトータル時間は、本実施の形態における通信システムの方が短くなっている。
【0065】
なお、TCPでは、ウィンドウ制御という方式を採用し、ウィンドウサイズ分の複数のパケットをACKを確認せずに送信して効率化を図っている。受信側は複数のパケットに対して1つのACKを送信する。送信側はACKを受け取った後、続く1ウィンドウサイズ分のパケットを送信する。ウィンドウ制御でも、1ウィンドウサイズ分のパケットを送信した後は、ACKを確認するまで送信待ち時間が発生してしまう。
【0066】
また、TCPでは、スライディングウィンドウという方式を採用し、受信側のウィンドウに空きが存在するときは、ACKを待たずにパケットを送信する。受信側のウィンドウの空きはACKによって通知されるので、スライディングウィンドウでもACKを確認するまで送信待ち時間が発生してしまう。
【0067】
続いて、信頼性について既存の通信プロトコルと比較する。
【0068】
データを高速に転送するプロトコルとしてUDPが存在するが、UDPは信頼性・順序性・データ完全性を保証しない。これに対し、本実施の形態では、送信装置1が送信済のパケットと受信装置2から返送された折返しパケットとを比較するので信頼性とデータ完全性が保証される。順序性については、送信するパケットの順序を示す情報をヘッダーなどに記載しておくことで対応できる。
【0069】
また、TCPのチェックサムは1の補数を用いた16ビットの値であるのに対し、本実施の形態における通信システムでは、送信装置1が送信したパケットと受信装置2が受信したパケットをそのまま比較するので、TCPに比べて本実施の形態における通信システムは非常に高い信頼性(完全性)を得ることができる。また、本実施の形態における通信システムでは、パケット同士が一致するか否かを比較するだけなので、処理の負荷も高くない。
【0070】
さらに、TCPでは、ACKのシーケンス番号やタイムアウトにより、受信側で正常に受信されたパケットを再送する無駄が生じることがある。これに対し、本実施の形態における通信システムでは、比較結果が一致しなかったパケットおよびタイムアウトしたパケットのみを再送するので、パケットの再送に無駄が生じることを抑制できる。
【0071】
<適用例>
次に、本実施の形態における通信システムの適用例について説明する。
【0072】
第1の適用例として、秘密分散に適用した例について説明する。元データSから3つのシェアSa,Sb,Scを作成し、各シェアSa,Sb,Scを別々に保存しておくことでセキュリティを高める秘密分散技術が知られている。さらに、各シェアSa,Sb,ScのうちのいずれかのシェアSaが消失した場合、残りのシェアSb,Scを用いて元データSを復元することなく消失したシェアSaを再生成する技術も存在する。
【0073】
例えば、3つのシェアSa,Sb,Scを別々の地域データセンタDCa,DCb,DCcに格納しておく。このときに、一つの地域データセンタDCaが地震などにより倒壊したときは、新たな地域データセンタDCxに消失したシェアSaを再生成する必要がある。この場合、地域データセンタDCb,DCcそれぞれからシェアSb,Scを新たな地域データセンタDCxに転送する必要があり、バースト通信が発生する状況に至る。各シェアSb,Scを新たな地域データセンタDCxに転送する通信に本実施の形態における通信システムを用いることで、消失したシェアSaを可及的速やかに再生成することができる。TCPを用いてシェアSb,Scを転送することも可能であるが、回線使用率の高い本通信システムを用いることで、物理回線の速度を上げたり、回線数を増やす必要がない。
【0074】
第2の適用例として、地理的に離れた拠点間(例えば日本−米国間など)におけるファイル転送に適用した例について説明する。近年、世界の各地に開発拠点が配置されることが多い。また、取り扱うデータの量も膨大なものとなっている。地理的に離れた拠点間で膨大な量のデータを転送するときに本実施の形態における通信システムを用いることで、より確実に高速にデータを転送することが可能となる。また、拠点間を専用線で結ばなくても、本実施の形態における通信システムを用いることでコストの削減を図ることもできる。例えば利用可能な帯域が保証された十分に管理されたネットワークであればより効果が高いが、これに限るものではない。
【0075】
以上説明したように、本実施の形態によれば、送信装置1が送信したパケットを受信装置2が折返しパケットとして送信装置1へ返送し、送信装置1が送信したパケットと折返しパケットとを比較することで、送信したパケットが受信装置2に確実に到着したことを担保できる。また、送信装置1は受信装置2からの応答を待たずにパケットを送信し続けることで、回線使用率の向上を図ることができる。
【0076】
本実施の形態によれば、TCPのようにコネクション確立当初にスロースタートせず、送信装置1が通信の開始時から設定により定められたパケット数を送信することで、回線使用率の向上を図ることができる。
【0077】
本実施の形態によれば、折返しパケットとの比較結果が不一致の場合あるいはタイムアウトした場合は該当するパケットについてのみパケットを再送することで、受信装置2が受信したパケットを再送する無駄を生じることがない。
【0078】
本実施の形態によれば、IPやUDPなどの既存のデータグラム通信を用いることで、コモディティ化されたハードウェアを利用することが可能となり、大幅なコストパフォーマンスの改善が期待できる。