(57)【要約】  クライアント装置からサーバへのネットワーク接続を介しての比較的信頼性の高いデータ伝送を保証するシステム及び方法が提供される。クライアント装置は、送信する新たなデータアイテム（２０３）がＦＩＦＯベースで記憶されるバッファ（２００）を有する。当該方法は、信頼性の低い接続を介して送信する場合であっても、重要なデータが失われる確率を大幅に低減する。この方法では、完全に信頼できる伝送プロトコルのコスト、複雑性、及び発生し得る性能低下という犠牲を払うことなくこのように実行される。クライアント装置のプロセッサで利用できるメモリが限られている場合、メモリが「信頼性の高い」伝送プロトコルコードを記憶するのに不十分な場合であってもこの方法を実施することができる。この方法は、ＴＣＰ又は他のこのようなプロトコルの実施に必要な処理能力を必要とせず、クライアントが比較的単純な装置である場合に特に有用である。一例としては、クライアント装置は、ディスプレイを備え、キーボードデータ及びマウスデータを返信することが望まれる端末であってもよい。ネットワークは無線であってもよい。【選択図】図２
2008523653.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置からサーバへのネットワーク接続を介してのデータ伝送を保証する方法であって、
前記クライアント装置はバッファを有し、
該バッファ内の最も古くに記憶されたデータアイテムに取って代わるように、送信する該新たなデータアイテムを前記バッファに記憶する工程と、
前記ネットワーク接続を介して、前記バッファに記憶された前記データアイテムを含むデータパケットを前記サーバに送信する工程とを有することを特徴とするネットワーク接続を介してのデータ伝送を保証する方法。
【請求項２】
前記送信する工程では、前記バッファに記憶された前記データアイテムを対応するネットワーク確認応答メッセージ内に組み込む工程を有することを特徴とする請求項１に記載のネットワーク接続を介してのデータ伝送を保証する方法。
【請求項３】
ポインタ値を記憶する工程と、
各新たなデータアイテムを受信するときに、前記バッファ内で該新たなデータアイテムを指すように前記ポインタ値を増分させる工程と、
をさらに有することを特徴とする請求項１に記載のネットワーク接続を介してのデータ伝送を保証する方法。
【請求項４】
前記バッファに記憶された前記データアイテムが厳密なローテーションで記憶されるように該バッファをラップする工程をさらに有することを特徴とする請求項１に記載のネットワーク接続を介してのデータ伝送を保証する方法。
【請求項５】
エポック値を記憶する工程と、
前記バッファがラップする都度、前記エポック値を増分させて、前記バッファ内の各アドレスの１回分の書き込みが終了したことを示す工程と、
をさらに有することを特徴とする請求項４に記載のネットワーク接続を介してのデータ伝送を保証する方法。
【請求項６】
前記バッファに記憶された前記新たなデータアイテムは、前記クライアント装置に接続されている外部入力装置からのものであることを特徴とする請求項１に記載のネットワーク接続を介してのデータ伝送を保証する方法。
【請求項７】
サーバ及びクライアント装置を備えネットワーク接続を介してのデータ伝送を保証するシステムであって、
前記クライアント装置は、送信する新たなデータアイテムを記憶し最も古く記憶されたデータアイテムを前記新たなデータアイテムで置き換えるように動作可能なバッファと、前記ネットワーク接続を介して前記バッファに記憶された前記データアイテムを含むデータパケットを前記サーバに送信する送信器とを有することを特徴とするネットワーク接続を介してのデータ伝送を保証するシステム。
【請求項８】
前記送信器は、前記データアイテムを対応するネットワーク確認応答メッセージ内に組み込み、該確認応答メッセージを送信することにより、前記バッファに記憶された前記データアイテムを送信することを特徴とする請求項７に記載のネットワーク接続を介してのデータ伝送を保証するシステム。
【請求項９】
前記クライアントコンピュータは、ポインタ値を前記バッファに記憶し、新たなデータアイテムを受信する都度、前記バッファ内の前記新たなデータアイテムを指すように前記ポインタ値を増分させるようにさらに動作可能であることを特徴とする請求項７に記載のネットワーク接続を介してのデータ伝送を保証するシステム。
【請求項１０】
前記クライアントコンピュータは、前記バッファに記憶された前記データアイテムが厳密なローテーションで記憶されるように前記バッファをラップするようにさらに動作可能であることを特徴とする請求項７に記載のネットワーク接続を介してのデータ伝送を保証するシステム。
【請求項１１】
前記クライアントコンピュータは、エポック値を記憶し、前記バッファをラップする都度、該エポック値を増分させ、それによって前記バッファ内の各アドレスの１回分の書き込みが終了したことを示すようにさらに動作可能であることを特徴とする請求項１０に記載のネットワーク接続を介してのデータ伝送を保証するシステム。
【請求項１２】
前記クライアントコンピュータは、該クライアント装置に接続されている外部入力装置から新たなデータアイテムを受信する受信器をさらに備えることを特徴とする請求項７に記載のネットワーク接続を介してのデータ伝送を保証するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［発明の分野］
本発明は、デジタルネットワークを介してデータを伝送するプロトコルに関し、特に、信頼性の低いパケットベースのネットワークを介してのデータ伝送に関する。
【背景技術】
【０００２】
［発明の背景］
ネットワークを介してのデータ伝送を特徴付ける１つの方法は、その信頼性による特徴付けである。システムによっては、ネットワーク、すなわち或る用途に伝送機能を提供するハードウェア及びソフトウェアの組み合わせは、重大な失敗の場合を除き、通常の条件下で、途中でデータを損失、破損、又は並び替えることなく或る遠隔の場所にデータを高い信頼性で送出することができる。
【０００３】
システムによっては、「ベストエフォート」型で動作するものもある。このネットワークはデータの送出を図り、大半の場合で成功するが（ネットワークが有効であれば）、必ず成功するという保証はない。時により、データパケットがすべて宛先に届くが、送信された順序通りではないことがある。送出が実際に行われたかを調べるためか、又はパケットを並べ替えるために、より高水準のソフトウェアが必要な場合がある（これが用途にとって重要であれば）。このようなネットワークは「低信頼性」ネットワークとして知られている。用語「低信頼性」は、ネットワークが有効ではないことを示すのではなく、絶対的に保証された送出が求められる場合にはさらなるステップを行わなければならないことを示す。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
「信頼性のある」ネットワークを構築するには、多くの場合、多くのソフトウェアレイヤが必要であり、これには、各種障害モードに対処するソフトウェア、データパケットの元の順番を示すシーケンス番号、データが破損していないことを確認するためのチェックサム、データが時間通りに到着しなかった場合にトリガされるタイムアウト、及びどのデータがいつ存在すべきかを判断するためのアルゴリズムが含まれる。多くの場合、信頼性の低いネットワークは、パケットの時折の損失が大きな問題ではない用途ではより単純且つより効率的である。良い例が音声会議又は映像会議である。パケットは、おそらく持続時間がたった数ミリ秒という非常に短い音声サンプルを含むことができ、多くの場合、１つ１つのサンプルがリモートエンドに到着することを保証するよりも、これらのパケットが最小の待ち時間でネットワークを通して高速に伝送される状態を保つほうが重要である。
【０００５】
この相違のよく知られた例を、信頼性を保証せず、単にパケットを発信元から宛先に渡すベストエフォート型メカニズムを提供するシステムであるインターネットプロトコル（ＩＰ）に見出すことができる。量の異なる追加機能を実施する各種レイヤがＩＰの上に構築され、最も一般的なもののうちの２つはユーザデータグラムプロトコル（ＵＤＰ）及び伝送制御プロトコル（ＴＣＰ）である。ＵＤＰは、宛先でデータを供給すべきハトの巣箱の名称のような「ポート」の概念を超えたごくわずかな追加機能、及び到着したデータが破損しなかったことを宛先で調べられるようにするチェックサムを提供する。一方、ＴＣＰは、基底を成すネットワークの信頼性が到底高いとは言えない場合であっても、発信元から送信されたデータストリームが、送信された順番で送信先（other end）に到着することを保証する多くの追加機能を提供する。ＴＣＰは、データのセグメント化及び再組み立て、セグメントサイズの最適化、遅延確認応答の処理、フロー制御、並びに他の多くの特徴を提供する。インターネット上での電子メール、ウェブページ、及びファイルの大半の伝送にはＴＣＰが使用されている。しかし、ＴＣＰの複雑性を非常に単純な装置に実装することは困難である可能性がある。
【課題を解決するための手段】
【０００６】
［発明の概要］
本発明の第１の態様によれば、クライアント装置からサーバへのネットワーク接続を介してのデータ伝送を保証する方法であって、クライアント装置はバッファを有し、
バッファ内の最も古くに記憶されたデータアイテムに取って代わるように送信する新たなデータアイテムをバッファに記憶する工程と、
ネットワーク接続を介して、バッファに記憶されたデータアイテムをサーバに送信する工程とを有することを特徴とするネットワーク接続を介してのデータ伝送を保証する方法が提供される。
【０００７】
送信するステップは、バッファに記憶されたデータを対応するネットワーク確認応答メッセージ内に組み込む工程を有することが好ましい。この重要な実施形態では、バッファデータの送信が、信頼性の高い接続上のサーバによるデータ送信に応答して返送される確認応答パケットの一部を成す。上に提供した端末の例では、これは表示データの場合もある。サーバが確認応答パケットを受信する速度が或る最小レベルを上回っていることが分かっているため、これによりプロトコルの信頼性を推定することができる。
【０００８】
好ましくは、当該方法は、ポインタ値を記憶する工程と、各新たなデータアイテムを受信するときに、バッファ内でその新たなデータアイテムを指すようにポインタ値を増分させる工程とをさらに有する。これによってバッファは、最後に追加されたデータアイテムを示すポインタをさらに含む。
【０００９】
この方法は、バッファに記憶されているデータアイテムが厳密なローテーションで記憶されるようにバッファをラップする工程をさらに含むことができる。次いで、エポック値（epoch value）を記憶することができ、バッファがラップする都度、エポック値を増分させて、バッファ内の各アドレスの１回分の書き込みが終了したことを示す。したがって、バッファは、バッファ全体が再書き込みされた回数を示す表示を含む。
【００１０】
本発明の方法は、信頼性の低い接続を介して送信する場合であっても、重要なデータが失われる確率を大幅に低減する。この方法では、完全に信頼できる伝送プロトコルのコスト、複雑性、及び発生し得る性能低下という犠牲を払うことなくこれが行われる。本発明の代表的な実施形態では、データ伝送を保証する方法を実施するために必要なコードは４０バイト未満である。これは、同程度のプロセッサの場合、３０００バイトを超えるコードを取り込むＴＣＰの非常に効率的な実施と比較して好ましい。多くの場合、本発明の実施に使用されるプロセッサの利用可能メモリは、このＴＣＰコードを記憶するには不十分である。ＴＣＰは追加の機能を提供するが、利用可能メモリが限られたプロセッサでは使用することができない。
【００１１】
この方法は、ＴＣＰ又は他のこのようなプロトコルの実施に必要な処理能力を必要とせず、クライアントが比較的単純な装置である場合に特に有用である。たとえば、クライアントは、ディスプレイを備え、キーボードデータ及びマウスデータを返信することが望まれる端末であってもよい。ディスプレイ及びネットワーク技術の両方の最近の発展により、この端末はほぼ全体的にサーバの処理能力に依存し得ることになったが、これを効率的な実施するには、サーバが端末から入力（たとえば、キーボード及びマウスの）データを高い信頼性で受信する必要がある。本発明の方法は、所望レベルの信頼性を実現する手段を提供する。
【００１２】
都合のよいことに、バッファに記憶された新たなデータアイテムは、クライアント装置に結合された外部入力装置からのものである。
【００１３】
本発明の別の態様によれば、サーバ及びクライアント装置を備えネットワーク接続を介してのデータ伝送を保証するシステムであって、クライアント装置は、送信する新たなデータアイテムを記憶し最も古く記憶されたデータアイテムを新たなデータアイテムで置き換えるように動作可能なバッファと、ネットワーク接続を介してバッファに記憶されたデータアイテムをサーバに送信する送信器とを有する、ネットワーク接続を介してのデータ伝送を保証するシステムが提供される。
【００１４】
好ましくは、送信器は、データアイテムを対応するネットワーク確認応答メッセージ内に組み込み、確認応答メッセージを送信することにより、バッファに記憶された前記データアイテムを送信する。
【００１５】
クライアントコンピュータは、ポインタ値をバッファに記憶し、新たなデータアイテムを受信する都度、バッファ内で新たなデータアイテムを指すようにポインタ値を増分させるようにさらに動作可能であることが好ましい。
【００１６】
都合のよいことに、クライアントコンピュータはまた、バッファに記憶されたデータアイテムが厳密なローテーションで記憶されるようにバッファをラップするようにさらに動作可能であり得る。この場合、クライアントコンピュータは、エポック値を記憶し、バッファをラップする都度、エポック値を増分させ、それによってバッファ内の各アドレスの１回分の書き込みが終了したことを示すようにさらに動作可能であり得る。
【００１７】
クライアントコンピュータは、クライアント装置に結合された外部入力装置から新たなデータアイテムを受信する受信器をさらに備えることが好ましい。
【００１８】
これより、本発明の例について添付図面を参照して詳細に説明する。
【発明を実施するための最良の形態】
【００１９】
［発明の詳細な説明］
図１を参照すると、本発明によるシステムは、汎用データネットワーク１０５を介してサーバ１００に接続されているリモートネットワーク装置（クライアント）１０６を必要とする。リモートネットワーク装置１０６は、図示の例のように超薄型端末上のディスプレイであってもよく、この装置が、キーボードイベント及びマウスイベント１０３等のイベントデータをサーバ１００に返信することが望まれることがある。本発明によれば、これらのイベントはリモートネットワーク装置１０６のバッファに配置され、そのバッファの上部（最新のイベントを含む）がサーバ１００に返信される。これは通常、同じデータをサーバ１００に複数回送信することを含み、サーバ１００がデータを受信する確率を大幅に増大させる。ネットワークによっては、最小データパケットサイズ又は特定の最適パケットサイズがあるため、この追加データの送信を済ませるコストはごくわずかであるか、又はゼロでさえあり得る。たとえば、標準のイーサネット（商標登録）パケットは６４バイト以上でなければならない。
【００２０】
図２は本発明の代表的な実施形態を示す。通常は図に示すよりも大きな容量を有するイベントバッファ２００が、一連のイベント２０３を含む。イベントは発生した順番に書き込まれ、バッファの終わりに達すると、バッファは「ラップアラウンド」する（すなわち、次のイベントがイベントバッファの最初の位置に書き込まれる）。このようにして、イベントバッファの最初の位置は論理的に最後に続くものと考えられ、そうして連続ループが形成される。バッファ内の最新イベントがどこにあるかを示すポインタ２０２が提供される。一般に、２つの連続したパケットで送信されるバッファは非常に類似したものになり、ポインタが最新の変更を示す。例えば、１パケット中のポインタが位置２０４を差す場合、次のパケットは通常、最新のイベントを位置２０５に挿入させ、ポインタは当該位置２０５を指すように更新される。
【００２１】
ポインタを、最後に受信した良好なポインタと比較することにより、サーバは、任意のメッセージひいては任意のイベントが欠損しているか否かを推定し、現在のポインタの前の欠損したイベントを処理することができる。さらなる一貫性チェックとして、より前のイベントを、以前に受信されたバッファ内のイベントと比較することも可能である。いくつかの新たなイベントを１つのパケットに入れることも可能であり、この場合、パケット送信時にポインタは２位置以上移動する。依然として、最後に受信したポインタの位置と現在のポインタの位置との間のすべてのパケットを処理しなければならないため、これはサーバにおいて差を生じさせない。
【００２２】
ネットワーク装置によりサーバに送信されたパケットは、好ましくは、エポック値２０１も含む。これは、バッファがラップアラウンドする度に増分するシーケンス番号である。これにより、サーバは全バッファに値するパケット又はそれ以上が失われた場合、又はパケットが順序通りに到着しなかった場合を検出することができる。たとえば、ポインタが２つの連続したパケット間で移動していないが、エポック値２０１が増分されている場合、バッファ全体のイベントロードが欠損しており、ポインタとバッファの末尾との間のイベントを処理し、その後、バッファの冒頭からポインタまで（ポインタを含む）のイベントを処理すべきであることを推定することができる。
【００２３】
以下の表は、各種状態をパケットの受信時にどのように解釈することができるかを示す。現在のポインタ及びエポック値を、良好であることが分かっている最後に受信したパケットのポインタ及びエポック値と比較した後にとるべき動作について述べている。
【００２４】
【表１】
2008523653.tif 000003
【００２５】
イベントバッファは任意のサイズであり得る。特に、固定数のバイトであってもよく、固定量の時間を表してもよく、又はネットワークでのパケット損失量若しくは報告すべきイベント速度等の要因に基づいて経時変化してもよい。ネットワークでのパケット損失の最大速度及びネットワーク装置の最大イベント速度が分かっている場合、バッファのサイズは、すべてのイベントの送出を保証するように選択できることが分かる。多くの状況では、たとえばマウスが特定の固定速度で移動を報告するため、最大イベント速度を知ることができる。多くの場合、ネットワークでのパケット損失最大速度は推定することしかできないが、この推定は、適度に正確であり、ネットワークそれ自体の統計値の収集又は他の解析に基づいている。
【００２６】
イベントバッファは任意選択的に、バッファ長の値２０６を記憶する。バッファ長の値は、イベントバッファのバイト数を特定し、それによってクライアント装置が適当なバッファサイズを計算する必要がないことを保証する。
【００２７】
信頼性の高い又は擬似的に信頼性の高い（pseudo-reliable）プロトコルが、データをサーバからネットワーク装置に送信するためにすでに実施されている場合がある。たとえば、ネットワーク装置がディスプレイを備える場合、ディスプレイデータをこのように送信できるように、ディスプレイに示されているデータがすべて正確であることを確実にすることが重要である。いくつかの信頼性の高いプロトコルは、信頼性の低いネットワーク接続を使用して装置から返送された可能性のある確認応答パケットを利用する。この接続の信頼性は低いため、こういった確認応答は常にサーバによって受信されるとは限らない。しかし、サーバは、データ伝送が高い信頼性をもって行われていることを示すのに十分な確認応答を受信しなければならず、さもなければプロトコルは動作を停止する。本発明の重要な実施形態では、イベントバッファ、ポインタ、及びエポック値がこの確認応答パケットで戻される。この場合、システム全体が動作すべきである場合にパケットは特定の速度で通過すると考えられるため、完全に信頼できるイベント送出を保証することが可能であり得る。
【００２８】
実施態様によっては、特別な注意を要することがある１つの状況がある。単一のイベントがバッファに追加され、その結果としてパケットがサーバに送信されたが、パケットが通過中に失われた場合、サーバは、次のパケットが送信されるまでそのイベントに気づかない。通常、次のパケットは、後続のイベントのために、又はサーバからのデータに応答して、その後すぐに送信される。しかし、ネットワークの信頼性の低さ、イベントデータの性質、及びネットワークトラフィックのそれぞれが、単一の独立したイベントが失われた場合に、それを既知の期間以内に復元しなければならないようなものである場合、後続のネットワークデータ又はイベントデータが受信されるまで特定の間隔でバッファを再送信することが適当であり得る。ここでも、多くの状況において、このような「キープアライブ（keep-alive）」パケットは、装置が依然としてアクティブであり接続されていることをサーバに通知するために有用である。
【図面の簡単な説明】
【００２９】
【図１】汎用ネットワークを示す。
【図２】本発明によるバッファの動作の概略図である。
【図１】
2008523653.tif 000004
【図２】
2008523653.tif 000005
【国際調査報告】
2008523653.tif 000006
2008523653.tif 000007