(57)【要約】【課題】ネットワークによって接続された端末間でデータを転送する方法。【解決手段】本方法は各端末について以下のステップを含む。端末にネットワークのコンフィギュレーションを維持する。コンフィギュレーションは、コンフィギュレーションに登録された特定端末の識別を含む。コンフィギュレーションに登録された１つまたは複数の識別済み端末へ、端末で実行されるアプリケーションによって生成されたデータを送信し、コンフィギュレーションに登録された１つまたは複数の識別済み端末から、アプリケーションのためのデータを受信する。【選択図】図１
2004260822.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークによって接続された複数の端末間でデータを転送する方法であって、各端末について、
前記端末に前記ネットワークの、コンフィギュレーションに登録された特定端末の識別を含む、コンフィギュレーションを維持するステップと、
前記コンフィギュレーションに登録された１つまたは複数の識別済み端末へ、前記端末で実行されるアプリケーションによって生成されたデータを送信するステップと、
前記コンフィギュレーションに登録された１つまたは複数の識別済み端末から、前記アプリケーションのためのデータを受信するステップと
を含む、ネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項２】
前記データは、時間依存データである請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項３】
前記時間依存データは、リアルタイムデータである請求項２記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項４】
前記データは、ストリーミングデータである請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項５】
前記データはパケットとして転送され、各パケットはヘッダおよびデータを含み、前記ヘッダはタイムスタンプ、前記パケット内の前記データのバイト数、パケットシーケンス番号、前記パケットのタイプ、および前記パケットヘッダのバージョン番号を含む請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項６】
登録された端末へデータが送信される請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項７】
前記コンフィギュレーションに登録された１つまたは複数の識別済みチャネルへ、前記端末で実行されるアプリケーションによって生成されたデータを送信するステップと、
前記コンフィギュレーションに登録された１つまたは複数の識別済みチャネルから、前記アプリケーションのためのデータを受信するステップと
をさらに含む請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項８】
特定の登録された端末へデータが送信される請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項９】
前記ストリーミングデータは、パケットバッファにバッファリングされる請求項４記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項１０】
前記識別は、前記端末の論理名および物理アドレスを含む請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項１１】
前記ネットワークのマルチキャストアドレスへ、前記端末の前記識別を含む、コンフィギュレーションメッセージを定期的に送信するステップ
をさらに含む請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項１２】
前記ネットワーク内の他の端末からコンフィギュレーションアドレスを定期的に受信するステップ
をさらに含む請求項１１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項１３】
グラフィックユーザインタフェースにより前記コンフィギュレーションを明確に監視し修正するステップ
をさらに含む請求項１記載のネットワークによって接続された複数の端末間でデータを転送する方法。
【請求項１４】
ネットワークによって接続された複数の端末間でデータを転送するシステムであって、
コンフィギュレーションに登録された特定端末の識別を含むネットワークコンフィギュレーションを格納するメモリと、
前記コンフィギュレーションに登録された１つまたは複数の識別済み端末へ、前記端末で実行されるアプリケーションによって生成されたデータを送信する手段と、
前記コンフィギュレーションに登録された１つまたは複数の識別済み端末から、前記アプリケーションのためのデータを受信する手段と
を備えたネットワークによって接続された複数の端末間でデータを転送するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には通信ネットワークに関し、特に、アドホック（ad-hoc）再構成可能ネットワークにおける時間依存データ（time-sensitive data）の交換に関する。
【背景技術】
【０００２】
最近の多くのネットワークはアドホック的に動作する。アドホックネットワークでは、端末がネットワーク基盤や集中管理なしで互いに通信する。アドホックネットワークのコンフィギュレーションは、静的もしくは動的、またはその組合せのいずれでもよい。端末は、携帯電話、携帯コンピューティングデバイス、エンドユーザ端末、またはセンサ等の特殊目的デバイスのいずれでもよい。端末は、随意にネットワークに出入りすることができる。このようなネットワークにおける端末は、ネームサーバのような集中管理に頼ることなく相互間でルーティングを確立することが必要とされる。
【０００３】
何年にもわたって、数多くのプロトコル（例えばいくつか例を挙げればＲＰＣ、ＦＴＰ、ＤＣＯＭ、ＣＯＲＢＡ、ＳＯＡＰ、ＨＴＭＬ、ＸＭＬ、ＪＩＮＩ、ＪＸＴＡ、ＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ）が、ファイル転送、ウェブブラウジング、電子メール等のような従来型ネットワークアプリケーションのためのデータを交換するために開発されてきている。通常、ほとんどのアプリケーションにとっては、「ベストエフォート」型の手法で十分である。すなわち、電子メールは、今配信されても、今から５分後に配信されてもよい。一般に、これらのプロトコルの目標は、それらを使用するアプリケーションにとってネットワークの複雑な動作を透過的にすることである。
【０００４】
しかし、従来技術のプロトコルのほとんどは、アドホックネットワークに見出される多くの非従来型アプリケーションにとっては不十分である。例えば、工場センサや環境センサはできるだけ早く処理される必要のある時間依存データを取得することがあり、５分後では大損害をもたらす可能性がある。ユーザは、ビデオ等のストリーミングマルチメディアデータのスムーズかつ中断のない配信を要望している。さらに、重要な役割を担うアプリケーションは、高度のフォールトトレランスを必要とする。
【０００５】
既知のプロトコルは、いくつかの理由で、アドホックネットワークにおいて動作する多くのアプリケーションにとって不十分である。従来のプロトコルによって使用される遠隔手続き呼出しや到着保証に固有の余分なオーバーヘッドが、時間依存データやストリーミングデータのためにそれらを使用することを、不可能ではないにしても困難にしている。さらに、従来技術のアプリケーションは、ルーティング情報を維持することに関わっておらず、それはネットワークの責任であると仮定している。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、従来技術のネットワーク管理技法に関連する問題を克服することができる方法およびシステムを提供することが所望される。その方法は、時間依存データの効率的転送をサポートし、フォールトトレラントであり、アドホックネットワークをサポートし、そして特に端末がネットワークに出入りするたびにネットワークが動的に再構成される場合には、ネットワークコンポーネントに見出される特定のハードウェアおよびソフトウェアとは独立であるべきである。
【０００７】
本発明の目的は、アドホックネットワーク等のネットワークにおいて時間依存データを送受信する方法を提供することである。
【０００８】
本発明の目的は、本方法が、特定のハードウェアコンポーネント、ならびに特定のシステムおよびアプリケーションのソフトウェアとは独立であることである。
【０００９】
本発明の目的は、ネットワーク全体に影響を及ぼすことなくアドホックネットワークのコンフィギュレーションを取得し維持することである。
【００１０】
本発明の目的は、ネットワークエラーおよび障害を最小化することである。
【課題を解決するための手段】
【００１１】
特に、本方法は、ネットワークによって接続された端末間でデータを転送する。各端末について本方法は、以下のステップを含む。ネットワークのコンフィギュレーションは端末に維持される。該コンフィギュレーションは、該コンフィギュレーションに登録された特定端末の識別を含む。端末で実行されるアプリケーションによって生成されたデータは、コンフィギュレーションに登録された１つまたは複数の識別済み端末に送信され、アプリケーションのためのデータは、コンフィギュレーションに登録された１つまたは複数の識別済み端末から受信される。
【発明を実施するための最良の形態】
【００１２】
システム構成
図１は、ネットワーク１７０の端末１７１間で時間依存データを転送する方法およびシステム１００を示している。本発明による方法およびシステム１００は、アプリケーション１８０を実行する端末１７１で動作するように設計される。
【００１３】
データは時間依存データを含むことができる。時間依存データとは、データができるだけ早く配信される必要があること（例えばリアルタイムセンサデータ）、またはデータが中断なしに時間的にスムーズに配信される必要があること（例えばビデオデータ）のいずれかを意味する。
【００１４】
端末１７１は、コンピュータ、センサ、特殊目的デバイス、または携帯電話等のエンドユーザ端末のいずれでもよい。ネットワークは、固定型でもアドホック型でもよい。本方法およびシステム１００は、データ送信ファンクション１０１〜１０２、データ受信コールバックファンクション１０３〜１０４、およびコンフィギュレーション維持ファンクション１０５を含み、これらについては以下でさらに詳細に説明する。また本方法は、以下でさらに詳細に説明する手続き１１０、１３０、１４０、１５０、および１６０も使用する。
【００１５】
本方法およびシステムは、アプリケーション１８０がネットワークの再構成を追跡することを必要とせずに、端末１７１のうちの１つで実行されるアプリケーション１８０によって使用されることが可能である。
【００１６】
本発明は、リアルタイムデータまたはストリーミングデータを送受信するために使用可能である。本方法は、ネットワーク１７０の現在のコンフィギュレーション１０６を維持する。コンフィギュレーション１０６を維持するとは、端末１７１がそれ自身でネットワークのコンフィギュレーションを取得するだけでなく、ネットワークコンフィギュレーションの定期的更新を他の端末にも提供することを意味する。
【００１７】
システムファンクション
送信
本発明によるシステムは、パケットセンダ１１０によって、データを送信する２つのファンクション１０１〜１０２を提供する。アプリケーション１８０による第１送信ファンクション（Ｓｅｎｄ−１）１０１に対する呼出しは、パケットヘッダ（ＨＤＲ）へのポインタ、およびデータ（ＤＡＴＡ）へのポインタという２つのパラメータを使用する。パケットヘッダは、タイムスタンプ（ｔｓ）、データのバイト数（ｎ）、パケットシーケンス番号（ｓｅｑ）、パケットのタイプ（ｔｙｐ）、およびパケットヘッダのバージョン番号（ｖｅｒ）を含む。
【００１８】
Ｓｅｎｄ−１ファンクション１０１は、コンフィギュレーション１０６に識別が登録されているすべての端末へデータを送信する。端末識別の登録については、コンフィギュレーション維持ファンクション１０５の一部として後述する。
【００１９】
もう１つの実施形態では、データが通るチャネルもまたコンフィギュレーション１０６に識別が登録されている。特定の登録された１つまたは複数のチャネルで送信されるデータが、登録されたチャネル識別を用いてその特定チャネルをリスンする端末によって受信されてもよい。
【００２０】
第２送信ファンクション（Ｓｅｎｄ−２）１０２に対する呼出しは、第１ファンクション１０１と同じパラメータと、単一の登録済み端末を指定する追加パラメータとを有する。
【００２１】
受信
また、データを受信する２つのコールバックファンクション（１０３〜１０４）がある。コールバックファンクションはアプリケーション１８０によって定義される。コールバックファンクション（Ｒｅｃｅｉｖｅ−１）１０３のパラメータは、パケットヘッダ（ＨＤＲ）、パケットデータ（ＤＡＴＡ）、およびソースアドレスの登録名（ＳＣＲＳ）を含む。ヘッダは上記のように構成される。
【００２２】
コールバックファンクション（Ｒｅｃｅｉｖｅ−２）１０４は、すべてのパラメータが単一値ではなく配列であることを除いては、コールバックファンクション（Ｒｅｃｅｉｖｅ−１）１０３と同様のパラメータを有する。配列は、同一タイムスタンプを有する一連のパケットに対応する。
【００２３】
コールバックファンクション（Ｒｅｃｅｉｖｅ−２）１０４に渡されるパケットは、以下でさらに詳細に説明するように、パケットバッファ１２０にバッファリングされる。コールバックファンクション（Ｒｅｃｅｉｖｅ−１）１０３に渡されるパケットはバッファリングされない。
【００２４】
パケットバッファ
パケットバッファ１２０はいくつかの目標を実現する。第１の目標は、ストリーミングデータをスムーズに処理することである。例えば、１５フレーム毎秒（ｆｐｓ）で録画されたフレームのシーケンスを受信する時、たとえネットワークにかなりのジッタが存在しても、それらのフレームを１５ｆｐｓでスムーズに表示しなければならない。第２の目標は、異なる時刻に到着する同一タイムスタンプを有する２つのパケットが、同時に処理されるように同期することである。第３の目標は、処理が遅すぎる場合に古いパケットを捨てることである。第４の目標は、異なる端末のタイミングクロック間の差を、たとえその時間差が非常に大きい場合であっても、管理することである。
【００２５】
入来タイムスタンプは、受信端末のクロックと必ずしも同期しているとは限らない送信端末のクロックに由来すると仮定される。送信端末の時刻が５：０２：３９である一方で、受信端末のクロックの時刻は４：５９：０２であるかもしれない。
【００２６】
本方法は、パケットバッファ１２０内で受信パケットを可変量の時間だけ遅延させることができる。予想より早く到着したパケットは、より長時間バッファに保持される。予想より遅く到着したパケットは、より短時間保持される。バッファサイズは遅延時間を単位として測られる。例えば、遅延時間は５秒間である。
【００２７】
まず、到着デルタ時間を測定する。到着デルタ時間は、入来パケットのタイムスタンプと受信端末の現在時刻との差である。次に、バッファ内の、より早く到着した（より古い）パケットを、パケットのタイムスタンプ＋到着遅延時間＋バッファ時間遅延、に等しい時刻にコールバックファンクション（Ｒｅｃｅｉｖｅ−２）１０４へ送信するようにスケジューリングする。この時刻が大幅に過去にあるようなすべてのパケットは捨てることができる。
【００２８】
非常に遅く到着したので負の時間バッファにとどまる必要のあるパケットは、到着デルタ時間を再評価するために使用される。非常に早く到着したのでバッファ遅延時間より長い時間バッファにとどまる必要のあるパケットは、バッファ遅延時間の長さを再設定するために使用されるか、またはこれによりバッファ遅延時間が所定のしきい値遅延時間より長くなる場合には捨てられる。
【００２９】
処理要件を少なくするため、パケットバッファ１２０はコールバックファンクション（Ｒｅｃｅｉｖｅ−２）１０４のみによって使用される。
【００３０】
コンフィギュレーション維持
コンフィギュレーション維持ファンクション１０５は、ネットワーク１７０の現在のコンフィギュレーション１０６を更新する。このファンクションは、コールモードまたはコールバックモードで動作することができる。アプリケーション１８０がコンフィギュレーション１０６を更新するためにこのファンクションを呼び出すことができ、またはファンクションは他のネットワーク端末１７１から受信されるコンフィギュレーションメッセージに応答する。すべてのコンフィギュレーション更新は、ローカルに生成されるかリモートで生成されるかにかかわらず、承認のため、またはアプリケーション固有の処理のために、ローカルアプリケーションによってインターセプトされる。
【００３１】
コンフィギュレーション維持ファンクションは、他の端末１７１から登録メッセージを受信する。登録メッセージは端末の識別を含む。各端末識別は、論理名、例えば文字列（ｔｅｍｐｅｒａｔｕｒｅ＿ｓｅｎｓｏｒ＿Ｔ）と、関連するネットワーク（ＩＰ）物理アドレス、例えば番号のグループ（１７１．２３．２０３．３３４）とを含むことができる。端末が登録された後、アプリケーションはその端末との間でデータを転送することができる。
【００３２】
コンフィギュレーション維持ファンクションは、アプリケーションからも登録メッセージを受信することができる。この登録メッセージはチャネル識別である。チャネルが登録された後、登録されたチャネル識別を用いてチャネルを監視しているいかなる端末も、そのチャネルでデータを転送することができる。
【００３３】
特定のアドレスから受信されるパケットは名前によって区別される。論理名を使用することにより、アプリケーション１８０は、ネットワークコンフィギュレーションの変更から独立になることができる。また、名前は、アプリケーションを変更せずに異なるアドレスへメッセージをルーティングすることを可能にする。
【００３４】
システム手続き
パケットセンダ
パケットセンダ１１０は、コンフィギュレーション１０６に登録されている端末の全ての識別を追跡する。パケットセンダ１１０は、送信ファンクション１０１〜１０２によって、他の端末１７１へパケットを送信するために使用される。
【００３５】
パケットオブザーバ
パケットオブザーバ１３０のセットが、ソースアドレスの特定のセットを監視し、アプリケーション１８０によって定義される受信コールバックファンクションへパケットを転送する。
【００３６】
パケットバッファ１２０は、同期している受信ファンクション１０３へパケットが転送される前に、受信パケットからジッタを除去しパケットを同期させるために使用される。コールバックファンクション（Ｒｅｃｅｉｖｅ−１）１０３へ転送されるパケットはパケットバッファ１２０を迂回する。コールバックファンクション（Ｒｅｃｅｉｖｅ−２）１０４へ転送されるパケットは、上記のように、パケットバッファ１２０を通る。
【００３７】
ローカルコンフィギュレーションオブザーバ
ローカルコンフィギュレーションオブザーバ１４０は、ネットワーク１００経由で他の端末１７１からコンフィギュレーションメッセージを取得する。コンフィギュレーションメッセージは、コンフィギュレーション維持ファンクション１０５へ転送される。ローカルコンフィギュレーションオブザーバ１４０によって受信されるメッセージは、ローカルアプリケーション１８０の挙動、例えばローカル受信および送信アドレスならびにアプリケーション設定を変化させる。ローカルコンフィギュレーションオブザーバ１４０は、ローカルアプリケーション１８０に固有の端末識別を検出する。
【００３８】
コンフィギュレーションパーサ
コンフィギュレーションパーサ１５０は、コンフィギュレーション１０６を維持することができるように、コンフィギュレーションメッセージを解析する。
【００３９】
ディスカバリ
ローカルコンフィギュレーションオブザーバ１４０は、アプリケーションのために「ディスカバリ」をサポートするためにも使用される。定期的に、例えば１秒に１回、ローカルコンフィギュレーションオブザーバ１４０は、定義済みマルチキャストアドレスを用いて、自分自身に既知の現在のコンフィギュレーション情報を含むマルチキャストメッセージを生成する。コンフィギュレーションメッセージは、他の登録済み端末の名前およびアドレス、自分自身の名前およびアドレス、ならびに自己の現在のコンフィギュレーション設定を変更するためのアドレス情報を含む、アプリケーション固有のコンフィギュレーション情報を含む。すべての端末およびアプリケーションは、ディスカバリのために同一の定義済みマルチキャストアドレスを使用する。
【００４０】
グローバルコンフィギュレーションオブザーバ
グローバルコンフィギュレーションオブザーバ１６０は、すべてのコンフィギュレーションオブザーバ１４０の送信先の定義済みマルチキャストアドレスを検出する。グローバルコンフィギュレーションオブザーバ１６０は、それが受信したマルチキャストメッセージの発信元のすべてのコンフィギュレーションオブザーバ１４０と、各ローカルコンフィギュレーションオブザーバ１４０のアプリケーションのコンフィギュレーション情報と、そのローカルコンフィギュレーションオブザーバのローカルアドレスとのリストを維持する。
【００４１】
新しいアプリケーションがグローバルコンフィギュレーションオブザーバ１６０に現れると、それらのアプリケーションが発見される。グローバルコンフィギュレーションオブザーバ１６０は、各ローカルコンフィギュレーションオブザーバと交信した最終時刻も追跡する。相当の時間中、リモートのローカルコンフィギュレーションオブザーバから連絡がない場合、それはコンフィギュレーション１０６から削除可能である。削除は、意図的であっても、障害に起因し意図的でなくてもよい。こうして、グローバルコンフィギュレーションオブザーバ１６０は、ネットワークコンフィギュレーションを、それが動的に変化するとともに維持することができる。
【００４２】
グラフィックユーザインタフェース
グラフィックユーザインタフェース１０７は、ユーザがコンフィギュレーション１０６を明確に監視し修正することを可能にする。
【００４３】
発明の効果
上記の方法およびシステムは、時間依存データまたはストリーミングデータを送受信する必要のある多くの分散アプリケーション、例えば監視システム、工場オートメーションシステム、遠隔会議システム、およびマルチメディアコンテンツ配信システムで使用可能である。
【００４４】
利点として、本発明によるシステムは、ネットワーク端末の自動ディスカバリ、複数のソースからの時間依存データの同期を実行することができ、ネットワークエラーに対して耐性がある。
【００４５】
本発明の精神および範囲内で他の種々の適応および変更をなし得ることが理解される。したがって、添付の特許請求の範囲の目的は、本発明の真の精神および範囲内に入るすべてのそのような変形および変更を包含することである。
【図面の簡単な説明】
【００４６】
【図１】本発明によるアドホックネットワークを通じて時間依存データを送受信する方法およびシステムの流れ図である。
【図１】
2004260822.tif 000003
【外国語明細書】
2004260822.tif 000004
2004260822.tif 000005
2004260822.tif 000006
2004260822.tif 000007
2004260822.tif 000008
2004260822.tif 000009
2004260822.tif 000010
2004260822.tif 000011
2004260822.tif 000012
2004260822.tif 000013
2004260822.tif 000014
2004260822.tif 000015
2004260822.tif 000016
2004260822.tif 000017
2004260822.tif 000018
2004260822.tif 000019
2004260822.tif 000020