(57)【要約】【課題】複数のデータフローを同期させる。【解決手段】第１の方法では、複数のデータフローに含まれる各パケットを、生成時刻順に送出する。同期ノードは、各パケットの送出間隔を、各パケットの生成間隔と同じになるよう調整する。第２の方法では、同期ノードは受信側同期ノードと送信側同期ノードとで役割が異なる。受信側同期ノードは、送信装置から複数のデータフローを受信し、各データフローに含まれるパケットのうち、生成時刻が同じもの同士を１つのパケットに合成する。合成パケットは送信側同期ノードに送信され、分解され、元のデータフローに復元される。復元されたデータフローは、それぞれの送信先に送信側同期ノードから送信される。【選択図】      図１
2004320251.tif 000002
【特許請求の範囲】
【請求項１】
複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法であって、
同期させようとしている複数のデータフローの識別子を記憶する記憶ステップと、
前記ネットワークの少なくとも１つに流れるデータフローを受信する受信ステップと、
前記記憶ステップで記憶されている複数のデータフローを、受信したデータフローの中から選択する選択ステップと、
前記選択されたデータフローのそれぞれに含まれる各パケットが、前記選択されたデータフローを送信した１または複数の送信端末で生成された時刻を演算する演算ステップと、
前記演算された生成時刻に従い、前記選択されたデータフローのそれぞれに含まれるパケットが、前記選択されたデータフローそれぞれの宛先である１または複数の受信端末に送出される順番を、決定する順番決定ステップと、
各パケットの送出時刻の間隔が各パケットの生成時刻の間隔と同等となるように、かつ前記順番に従って各パケットが送出されるように、前記選択されたデータフローのそれぞれに含まれる各パケットの送出時刻を決定する送出時刻決定ステップと、
前記送出時刻に基づいて、各パケットを前記受信端末に送信する送信ステップと、
を含む、データ同期方法。
【請求項２】
複数のネットワーク間に流れるデータフローを中継するデータ同期システムであって、
同期させようとしている複数のデータフローの識別子を記憶する記憶手段と、
前記ネットワークの少なくとも１つに流れるデータフローを受信する受信手段と、
前記記憶手段で記憶されている複数のデータフローを、受信したデータフローの中から選択する選択手段と、
前記選択されたデータフローのそれぞれに含まれる各パケットが、前記選択されたデータフローを送信した１または複数の送信端末で生成された時刻を演算する演算手段と、
前記演算された生成時刻に従い、前記選択されたデータフローのそれぞれに含まれるパケットが、前記選択されたデータフローそれぞれの宛先である１または複数の受信端末に送出される順番を決定する順番決定手段と、
各パケットの送出時刻の間隔が各パケットの生成時刻の間隔と同等となるように、かつ前記順番に従って各パケットが送出されるように、前記選択されたデータフローのそれぞれに含まれる各パケットの送出時刻を決定する送出時刻決定手段と、
前記送出時刻に基づいて、各パケットを前記受信端末に送信する送信手段と、
を備えるデータ同期システム。
【請求項３】
複数のネットワーク間に流れるデータフローを中継するコンピュータが実行するデータ同期プログラムであって、
同期させようとしている複数のデータフローの識別子を記憶する記憶ステップと、
前記ネットワークの少なくとも１つに流れるデータフローを受信する受信ステップと、
前記記憶ステップで記憶されている複数のデータフローを、受信したデータフローの中から選択する選択ステップと、
前記選択されたデータフローのそれぞれに含まれる各パケットが、前記選択されたデータフローを送信した１または複数の送信端末で生成された時刻を演算する演算ステップと、
前記演算された生成時刻に従い、前記選択されたデータフローのそれぞれに含まれるパケットが、前記選択されたデータフローそれぞれの宛先である１または複数の受信端末に送出される順番を、決定する順番決定ステップと、
各パケットの送出時刻の間隔が各パケットの生成時刻の間隔と同等となるように、かつ前記順番に従って各パケットが送出されるように、前記選択されたデータフローのそれぞれに含まれる各パケットの送出時刻を決定する送出時刻決定ステップと、
前記送出時刻に基づいて、各パケットを前記受信端末に送信する送信ステップと、
を前記コンピュータに実行させるデータ同期プログラム。
【請求項４】
複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法であって、
パケットからなる複数のデータフローであって、各データフローを送信した送信端末が各パケットを生成した時刻が記述されたパケットを含む複数のデータフローを、前記ネットワークの少なくとも１つから受信する受信ステップと、
同期させようとしている複数のデータフローの識別子と、前記複数のデータフローを中継する中継装置の中継アドレスと、を記憶する記憶ステップと、
前記記憶ステップで記憶されている複数のデータフローを、前記受信ステップで受信したデータフローの中から選択する選択ステップと、
前記選択された各データフローに含まれる各パケットのうち、生成時刻が同一のパケットを１つのパケットに合成した合成パケットを生成する合成ステップと、
合成パケットを、前記中継アドレスに送信する送信ステップと、
を含む、データ同期方法。
【請求項５】
複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法であって、
前記ネットワークの少なくとも１つから、前記請求項９に記載の方法により生成された合成パケットを受信する受信ステップと、
前記合成パケットを含む合成データフローに含まれている複数のデータフローそれぞれの送信先アドレスを記憶する記憶ステップと、
前記合成パケットを分解し、前記複数のデータフローを復元する分解ステップと、
復元された複数のデータフローを、それぞれの送信先アドレスに送信する送信ステップと、
を含む、データ同期方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
ネットワークで接続された複数の通信端末間で、複数の通信路によりマルチメディアデータを送受信する場合に、各通信路を同期して受信データを出力する技術に関する。
マルチメディアデータとしては、いかなる種類・形式のデータでもよく、例えば音声データ、画像データ、テキストデータ、ハプティクスデータ、臭覚を表すデータを挙げることができる。
【０００２】
【従来の技術】
例えば、音声データや画像データのフローを、ネットワークを介してリアルタイムに送受信する通信を例に取る。送信端末がデータフローを構成するパケットを送出してから受信端末へ届くまでに多少の時間がかかる。この遅延のことをネットワーク遅延と呼ぶ。通信経路が異なる場合や通信経路上のネットワークの混み具合などが違う場合には、ネットワーク遅延もデータフローごとに異なってくる。そうすると、同一の送信端末から受信端末へ複数のデータフローが送信される場合、各データフロー毎にネットワーク遅延が異なるようになる。
【０００３】
例えばユーザＡ、Ｂ、Ｃがそれぞれ操作する端末ＴＡ、ＴＢ、ＴＣがあり、受信端末ＴＡが送信端末ＴＢ，ＴＣから同時に音声データフロー＃ｂ、＃ｃを受信する場合を考える。実際にはユーザＢがユーザＣよりも最初に話し出したにもかかわらず、ネットワーク遅延により、受信端末ＴＡではユーザＣの音声が先に出力され、その後にユーザＢの音声が出力されるという問題が発生する場合がある。
ネットワーク遅延の差に起因する同期の問題に対処する手法として、特許文献１は、同期対象となる複数種類のデータをまとめてカプセル化して送信する方法を提案している。送信側では、音声パケットと画像パケットとをシーケンス番号で関連づけて送信することにより、音声データと画像データとを１つにカプセル化して送出する。受信端末では、カプセル化した複合データを分解し、音声データと画像データとを取り出し、それぞれスピーカやディスプレイに出力する。複数種類のデータをシーケンス番号により関連づけて送信することにより、１つの受信端末において音声データと画像データとを同期させることが可能になる。
【０００４】
特許文献２は、各ユーザ端末からデータフローに含まれるパケットを集約して受信するビデオ会議サーバに同期機能を持たせることを提案している。このビデオ会議サーバは、各ユーザ端末からの動画データフローのパケットに記述されたシーケンス番号を参照し、同一シーケンス番号の動画データを合成する。また前記サーバは、各ユーザ端末から音声パケットを受信し、前記と同様の手法で混合音声データを生成する。合成した動画データ及び混合音声データを受信したユーザ端末は、合成動画及び混合音声を、ディスプレイやスピーカに同期させて出力する。
【０００５】
【特許文献１】特開平９−２１９８５１号公報
【０００６】
【特許文献２】特開平７−９５２４２号公報
【０００７】
【発明が解決しようとする課題】
近年、情報家電をはじめとして、多様な機器のネットワーク化が進んでいる。また、入出力される情報は、視覚に訴えるテキストデータや画像データ、聴覚に訴える音声データだけでなく、触感を表すハプティクスデータ、匂いを表す臭覚データなど、多種に渡るようになってきている。このような動きから、多様な入力デバイスや出力デバイスが、直接ネットワークへ接続されるようになると予想されている。このようにネットワーク化したデバイスは、複数種類のマルチメディアデータフローを入力及び送信でき、また受信及び出力できる。このようなデバイスが普及すれば、例えば１つの部屋の中にある複数のディスプレイ及びプロジェクタで、異なる動画データフローをそれぞれ同期させて出力することが要求されると予想できる。あるいは、複数のスピーカで、複数の音声データフローを同期させて出力することが要求されると予想できる。さらに、ディスプレイやプロジェクタとスピーカとの出力を同期させることが要求されると予想できる。
【０００８】
現在、互いに離れた場所にいるユーザが共有する仮想空間をネットワーク上に作り出し、仮想空間内で共同作業を行う試みが進められている。具体的には、遠隔地にいる医師達が協力して医療診断・手術を行う遠隔医療や、遠隔教育、遠隔協同デザインなどを、仮想空間内で行う試みが挙げられる。遠隔医療においては、医師達がリアルタイムに共同作業を行うために、医師お互いの顔や体、音声を伝え合うのはもちろん、様々な他のデータをリアルタイムに共有する試みが行われている。具体的には、血流のシミュレーション結果であるアニメーションデータや生体等の動的に変化する３次元オブジェクトデータ、触覚を表すハプティクスデータ等の共有が挙げられる。
【０００９】
このような仮想空間の構築は、仮想空間を構成する各要素の変化をリアルタイムに送受信する端末と、各マルチメディアデータの出力装置とを組み合わせることにより可能となる。さらに円滑な遠隔共同作業の実現のためには、各マルチメディアデータが同期して正しい順序で受信端末上に復元されなければならない。受信端末が１つではなく複数の場合には、複数の受信端末における各マルチメディアデータを同期させる仕組みが必要である。
前述した従来の技術は、１つの受信端末で複数のデータフローを受信し、それらを出力装置に出力させる。例えば受信端末において同期のための処理を行えば、その受信端末に接続されたディスプレイの動画出力とスピーカの音声出力とを同期させることができる。しかし、複数のデータフローを異なる受信端末で受信した場合、異なる受信端末間でそれらのデータを同期させることについては何ら提案されていない。また、受信端末側で同期処理を行うことが想定されているため、処理能力が十分でない受信端末から同期処理の負担を取り除くことができない問題がある。そのため、従来提案されている技術では、前述した要求に答えることが難しい。
【００１０】
本発明は、受信端末がそれぞれ異なるデータフローを受信する場合に、各受信端末における各データフローの出力を同期させることを目的とする。
また本発明は、受信端末から同期処理の負担を取り除くことを目的とする。
【００１１】
【課題を解決するための手段】
前記課題を解決するために、本願第１発明は、複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法を提供する。この方法は、下記ステップを含む。
・同期させようとしている複数のデータフローの識別子を記憶する記憶ステップ、
・前記ネットワークの少なくとも１つに流れるデータフローを受信する受信ステップ、
・前記記憶ステップで記憶されている複数のデータフローを、受信したデータフローの中から選択する選択ステップ、
・前記選択されたデータフローのそれぞれに含まれる各パケットが、前記選択されたデータフローを送信した１または複数の送信端末で生成された時刻を演算する演算ステップ、
・前記演算された生成時刻に従い、前記選択されたデータフローのそれぞれに含まれるパケットが、前記選択されたデータフローそれぞれの宛先である１または複数の受信端末に送出される順番を、決定する順番決定ステップ、
・各パケットの送出時刻の間隔が各パケットの生成時刻の間隔と同等となるように、かつ前記順番に従って各パケットが送出されるように、前記選択されたデータフローのそれぞれに含まれる各パケットの送出時刻を決定する送出時刻決定ステップ、
・前記送出時刻に基づいて、各パケットを前記受信端末に送信する送信ステップ。
【００１２】
前記データ同期方法を実行するデータ同期システム、前記データ同期方法をコンピュータに実行させるデータ同期プログラムは本発明に含まれる。さらに、前記データ同期プログラムを記録したコンピュータ読み取り可能な記録媒体も、本発明に含まれる。
本願発明の別の態様は、複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法を提供する。この方法は、以下のステップを含む。
・パケットからなる複数のデータフローであって、各データフローを送信した送信端末が各パケットを生成した時刻が記述されたパケットを含む複数のデータフローを、前記ネットワークの少なくとも１つから受信する受信ステップ、
・同期させようとしている複数のデータフローの識別子と、前記複数のデータフローを中継する中継装置の中継アドレスと、を記憶する記憶ステップ、
・前記記憶ステップで記憶されている複数のデータフローを、前記受信ステップで受信したデータフローの中から選択する選択ステップ、
・前記選択された各データフローに含まれる各パケットのうち、生成時刻が同一のパケットを１つのパケットに合成した合成パケットを生成する合成ステップ、
・合成パケットを、前記中継アドレスに送信する送信ステップ。
【００１３】
前述の方法を実行するデータ同期システム、前述の方法をコンピュータに実行させるデータ同期プログラムは本発明に含まれる。さらに、前記データ同期プログラムを記録したコンピュータ読み取り可能な記録媒体も、本発明に含まれる。
本願発明のさらに別の態様は、複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法を提供する。この方法は、以下のステップを含む。
・前記ネットワークの少なくとも１つから、前記請求項９に記載の方法により生成された合成パケットを受信する受信ステップ、
・前記合成パケットを含む合成データフローに含まれている複数のデータフローそれぞれの送信先アドレスを記憶する記憶ステップ、
・前記合成パケットを分解し、前記複数のデータフローを復元する分解ステップ、
・復元された複数のデータフローを、それぞれの送信先アドレスに送信する送信ステップ。
【００１４】
前述の方法を実行するデータ同期システム、前述の方法をコンピュータに実行させるデータ同期プログラムは本発明に含まれる。さらに、前記データ同期プログラムを記録したコンピュータ読み取り可能な記録媒体も、本発明に含まれる。
【００１５】
【発明の実施の形態】
＜発明の概要＞
本発明では、送信装置から受信装置へのデータフローを中継するコンピュータ（以下、同期ノードという）で、複数のデータフローを同期させてから受信装置に送信する。同期ノードが行うデータ同期方法は大別して以下の２つである。
データ同期方法１：複数のデータフローに含まれる各パケットを、生成時刻順に送出する。同期ノードは、各パケットの送出間隔を、各パケットの生成間隔と同じになるよう調整する。データ同期方法１については、第１実施形態例で詳述する。
【００１６】
データ同期方法２：同期ノードは受信側同期ノードと送信側同期ノードとで役割が異なる。受信側同期ノードは、送信装置から複数のデータフローを受信し、各データフローに含まれるパケットのうち、生成時刻が同じもの同士を１つのパケットに合成する。合成パケットは送信側同期ノードに送信され、分解され、元のデータフローに復元される。復元されたデータフローは、それぞれの送信先に送信側同期ノードから送信される。データ同期方法２については、第２実施形態例で詳述する。
【００１７】
＜第１実施形態例＞
（１）全体構成
図１は、第１実施形態に係る同期装置を用いた同期システムの全体構成図を示す説明図である。同期装置１０は、複数のネットワーク４ａ、４ｂ間のデータフローを中継する同期ノード１に設けられている。同期ノード１は、複数のネットワークカード１１ａ、１１ｂによりネットワーク４ａ、４ｂに接続可能である。同期装置１０は、ネットワーク４ａ上の１または複数の送信端末２ａ〜２ｄ（以下、送信端末２）から送信される複数のデータフローを同期させ、ネットワーク４ｂ上の１または複数の受信端末３ａ、３ｂ（以下、受信端末３）に送信する。送信端末２としては、カメラやビデオなど画像入力デバイスに接続または組み込まれた送信端末２ａ，２ｃ、マイクなどの音声入力デバイスに接続または組み込まれた送信端末２ｂ、キーボードなどテキストデータ入力デバイスに接続された送信端末２ｄが一例として挙げられる。この他に、ハプティクスデータや臭覚を表すデータなどを送信する送信端末が挙げられる。受信端末３としては、液晶ディスプレイなど画像出力デバイスに接続または組み込まれた受信端末３ａ、ハプティクスデータの出力デバイスに接続または組み込まれた受信端末３ｂ、スピーカなど音声出力デバイスに接続または組み込まれた受信端末３ｃが一例として挙げられる。
【００１８】
いずれかのネットワーク４（図ではネットワーク４ａ）にはＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）サーバ５が接続されている。また同期ノード１、送信端末２及び受信端末３にはＮＴＰクライアント１２が設けられている。送信端末２及び受信端末３上のＮＴＰクライアントは図示していない。ＮＴＰサーバ及びＮＴＰクライアントは、同期ノード１、送信端末２及び受信端末３間での内部クロックのずれを修正する。
以下では、説明を容易にするため、送信端末２がネットワーク４ａ上にあり、受信端末３がネットワーク４ｂ上にある場合を例にとる。ただし、送信端末２及び受信端末３が存在するネットワーク４はいずれか一方に限定されない。図１では、送信端末２及び受信端末３がそれぞれ複数存在する場合を示しているが、いずれか一方または両方が１つでも本発明は適用可能である。また、複数のデータフローは１つの送信端末２から送信されても、また複数の送信端末２から送信されても良い。同様に、複数のデータフローの送信先は、１つの受信端末３でも複数の受信端末３でも良い。
【００１９】
（２）同期装置
図２は、同期ノード１に設けられた同期装置１０の機能ブロック図である。同期装置１０は、送信端末２からの複数のデータフローを、ネットワークカード１１ａを介して受信する。同期装置１０は、複数のデータフローを同期させた後、ネットワークカード１１ｂを介して受信端末３のそれぞれに送信する。なお、ネットワーク４ｂが送信側ネットワーク、ネットワーク４ａが受信側ネットワークの場合、ネットワークカード１１ｂがデータフローを受け取り、ネットワークカード１１ａがデータフローを送信する。
【００２０】
各ブロックは次のように機能する。受信側のネットワークカード１１ａには、ネットワーク４ａ上を流れる全てのパケットが到着する。ネットワークカード１１ａに到着した全てのパケットは、ｒａｗ  ｓｏｃｋｅｔ１０１ａを通ってフィルタリングモジュール１０４に供給される。同期対象のデータフローは、あらかじめ設定ファイル１０２に記述されている（後述する（２−１）「同期対象のデータフローの設定」）。フィルタリングモジュール１０４は、設定ファイル１０２を参照して同期対象のデータフローを構成するパケットだけを選択し、生成時刻計算モジュール１０６に渡す（後述する（２−３）「同期対象のデータフローの選択」）。生成時刻計算モジュール１０６は、同期対象データフローのパケットが送信端末２で生成された時刻を算出する（後述する（２−４）「各パケットの生成時刻の算出」）。生成時刻が算出された各パケットは、ソートモジュール１０７により生成時刻順にソートされ、バッファ１０８に登録される。ついで、各パケットの送出時刻が、送出時刻計算モジュール１０９により算出される（後述する（２−５）「各パケットの送出時刻の算出」）。各パケットの送出時刻は、各パケットの生成時刻間隔と送出時刻間隔とが同一になるように決められる。各パケットの送出時刻はバッファ１０８に各パケットと対応付けて登録される。バッファ１０８に登録された送出時刻は所定のタイミングで抽出モジュール１１０により参照され、参照した時点で既に送出時刻を過ぎているパケットが、ｒａｗ  ｓｏｃｋｅｔ１０１ｂ及びネットワークカード１１ｂを介し、受信端末３に送信される。ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）通信における全てのポートとデータの受け渡しが可能なｒａｗ  ｓｏｃｋｅｔ１０１ａ，１０１ｂは、同期装置１０が例えば同期ノード１の起動時に生成する。
【００２１】
（２−１）同期対象のデータフローの設定
次に、各ブロックの機能についてさらに詳細に説明する。図３は、設定ファイル１０２に記述されるグループ指定データの概念説明図である。設定ファイル１０２には、どのデータフローを同期させるのか、すなわち同期対象のデータフローの指定が記述されている。また、設定ファイル１０２には、同期させた各データフローのそれぞれの送信先が記述されている。同期するべきデータフローは１つのフローグループを形成する。図３の例では、以下のグループ指定データ（ａ）〜（ｄ）が設定ファイルに設定されている。
（ａ）フローグループの「グループ名」
（ｂ）グループに関する「コメント」
（ｃ）データフローを送信した送信端末のＩＰアドレス、ポート番号、データフローのペイロードタイプ
（ｄ）データフローを受信する受信端末のＩＰアドレス、ポート番号、データフローのペイロードタイプ
１つのフローグループのみならず、複数のフローグループについて同様にグループ指定データを設定しても良い。
【００２２】
図４及び図５は、設定ファイル１０２へのグループ指定データの登録を受け付ける画面例である。これらの画面例は、セッション管理モジュール１０３により、同期ノード１に接続されたディスプレイの画面に表示される。入力された情報は、設定ファイル１０２に書き込まれる。図４は、フローグループを設定するグループ選択画面例である。この画面は、フローグループのグループ名及びコメントの設定を受け付ける。図５は、同期対象設定画面例である。この画面は、同一のフローグループに含まれるべきデータフローの送信元の指定と宛先の指定とを受け付ける。
【００２３】
（２−２）通信の開始と終了の監視
図６は、監視テーブル１１１の概念説明図である。このテーブルの生成及びテーブルへの書き込みは、セッション管理モジュール１０３が行う。監視テーブル１１１は、同期装置１０が同期させるデータフローによる通信の開始及びその終了を監視するためのテーブルである。監視テーブル１１１には、同期対象のデータフローによる通信が開始されると、送信元ＩＰアドレス及びポート番号が登録される。そのデータフローによる通信が終了すると、そのデータフローのエントリーが監視テーブル１１１から削除される。
【００２４】
（２−３）同期対象のデータフローの選択
図７〜図１０は、フィルタリングモジュール１０４の機能を示す説明図である。ここでは、同期対象のデータフローがＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）に基づいて送信される場合を例に取り、フィルタリングモジュール１０４を説明する。フィルタリングモジュール１０４は、Ｅｔｈｅｒフィルタ１０４ａ、ＩＰフィルタ１０４ｂ、ＲＴＰフィルタ１０４ｃ及びペイロードフィルタ１０４ｄを有している。各フィルタの機能について説明する。
【００２５】
Ｅｔｈｅｒフィルタ１０４ａは、ｒａｗ  ｓｏｃｋｅｔ１０１ａからネットワーク４ａ上を流れる全てのパケットを受け取り、ＩＰパケットを含むイーサフレームを選択してＩＰフィルタ１０４ｂに供給する。それ以外のイーサフレームは、ｒａｗ  ｓｏｃｋｅｔ１０１ｂを介して受信側のネットワーク４ｂに送出する。イーサフレームの選別は、図７に示すイーサフレームの中のイーサヘッダに含まれるタイプフィールドを参照することにより行う。
ＩＰフィルタ１０４ｂは、ＩＰパケットを含むイーサフレームからＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）パケットを含むイーサフレームを選別する。また、ＩＰフィルタ１０４ｂは、ＵＤＰパケットを含むイーサフレームのうち、同期対象のデータフローに含まれるイーサフレームを選別し、選別したイーサフレームをＲＴＰフィルタ１０４ｃに供給する。その他のイーサフレームはｒａｗ  ｓｏｃｋｅｔ１０１ｂを介して受信側のネットワーク４ｂに送出する。ＵＤＰパケットを含むイーサフレームの選別は、図８に示すＩＰパケットのＩＰヘッダに含まれるプロトコルフィールドを参照することにより行う。同期対象のデータフローの選別は、ＩＰヘッダの送信元アドレス及び宛先アドレスと設定ファイル１０２のグループ指定データとを比較することにより行う。
【００２６】
ＲＴＰフィルタ１０４ｃは、ＵＤＰパケットを含むイーサフレームからＲＴＰパケット又はＲＴＣＰ（ＲＴＰ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）パケットを含むイーサフレームを選別し、選別したイーサフレームをペイロードフィルタ１０４ｄに供給する。その他のイーサフレームは、ｒａｗ  ｓｏｃｋｅｔ１０１ｂを介し、受信側のネットワーク４ｂに送出する。イーサフレームの選別は、ＵＤＰヘッダのポート番号に基づいてＲＴＰパケット及びＲＴＣＰパケットを選別することにより行う。通常、ＲＴＣＰのポート番号は、「ＲＴＰポート番号＋１」が用いられる。また、ＲＴＰ及びＲＴＣＰヘッダのバージョン番号「Ｖ」の値が「２」のパケットを選別しても良い。図９はＵＤＰパケットの構成を示す。図１０（Ａ）はＲＴＰパケットの構成を、図１０（Ｂ）はＲＴＣＰパケットの構成を、それぞれ示す。
【００２７】
ペイロードフィルタ１０４ｄは、ＲＴＰパケットまたはＲＴＣＰパケットを含むイーサフレームから、同期対象のデータフローと同一のペイロードタイプを有するイーサフレームを選別する。選別したイーサフレームは生成時刻計算モジュール１０６に渡す。同期対象のデータフローと異なるペイロードタイプを有するイーサフレームは、ｒａｗ  ｓｏｃｋｅｔ１０１ｂを介して受信側のネットワーク４ｂに送出される。選別は、ＲＴＰパケットに含まれるペイロードタイプ（図中“ＰＴ”）と、設定ファイル１０２の同期対象データフローのペイロードタイプとを比較することにより行う。比較対象となるデータフローは、前記設定ファイル１０２中の同期対象データフローのうち、ＩＰヘッダの送信元ＩＰアドレス及び宛先ＩＰアドレスに送信元及び宛先が一致する同期対象データフローのペイロードタイプである。
【００２８】
（２−４）各パケットの生成時刻の算出
図１１及び図１２は、生成時刻計算モジュール１０６が各パケットの生成時刻を算出する機能を示す説明図である。生成時刻計算モジュール１０６は、同期対象のデータフローに含まれるＩＰパケットが送信端末２で生成された時刻を計算する。生成時刻の算出には、ＲＴＰパケットに含まれるタイムスタンプと、ＲＴＣＰパケットに含まれるタイムスタンプ及びＮＴＰ時刻印とを用いる。図１１は、任意のＲＴＰパケットの生成時刻ｔｉが、同図中の式（１）で表されることを示す。ここで、ＴＳｉは、任意のＲＴＰパケット中のタイムスタンプの値である。ＴＳ０は任意のＲＴＣＰパケット中のタイムスタンプの値である。ｔＳは、前記のＲＴＣＰパケット中のＮＴＰ時刻である。
【００２９】
すなわち、ＲＴＰパケットのタイムスタンプとＲＴＣＰパケットのタイムスタンプとの差をクロック数で割った値に、ＲＴＣＰパケットのＮＴＰ時刻を加えた値がＲＴＰパケットの生成時刻となる。このようにして算出された生成時刻ｔｉに基づいて、同期対象のデータフローに含まれる各イーサフレームは、ＲＴＰパケットの生成時刻順にバッファ１０８に登録される。生成時刻順の並び替えとバッファ１０８への登録はソートモジュール１０７により行われる。ここで、クロック数とは、ペイロードタイプ毎に決められた一定周期であり、データフロー毎に自動的にカウントアップされるクロックの周波数のことである。音声データフローの場合には、クロック周波数は８０００ＭＨｚであり、１秒間に８０００の早さで進むカウンタ値をデータフロー毎にカウントアップする。ＲＴＰパケット生成時のカウンタ値がＲＴＰヘッダのタイムスタンプ値としてセットされる。
【００３０】
図１２及び図１３（Ａ）はソートモジュール１０７の機能を示す説明図である。例えば、データフロー１，２が、図１２に示す順序及び間隔でパケットを送出していたとする。ここで、パケットＰ１１（ｔ０）、Ｐ１２（ｔ２）、Ｐ１３（ｔ３）・・・は、データフロー１に含まれるＲＴＰパケットとその生成時刻である。また、パケットＰ２１（ｔ１）、Ｐ２２（ｔ４）、Ｐ２３（ｔ７）・・・は、データフロー２に含まれるＲＴＰパケットとその生成時刻である。図１３（Ａ）は、データフロー１，２の各パケットを含むイーサフレームが、生成時刻ｔｉ順にバッファ１０８に登録された状態を示している。
【００３１】
（２−５）各パケットの送出時刻の算出
次に、図１２及び図１３（Ｂ）を用い、各イーサフレームの送出時刻の算出について説明する。送出時刻は、送出時刻計算モジュール１０９が計算する。バッファ１０８に登録された各イーサフレームの送出時刻は、その中に含まれるＲＴＰパケットの生成時刻順となるよう決定する。また、各イーサフレームの送出時刻は、その中に含まれるＲＴＰパケットの送出間隔が各ＲＴＰパケットの生成間隔と同じになるように決められる。具体的には、送出時刻は次の条件を満たすように決定される。
（ｉ）同一データフロー内のパケットの生成間隔を保つ
（ｉｉ）異なるデータフロー間でのパケットの生成間隔を保つ
図１２を用いてこれを具体的に説明する。図１２において、データフロー１の各パケットは、２Δｔ間隔で生成されている。データフロー２の各パケットは、４Δｔ間隔で生成されている。データフロー１のパケットとデータフロー２のパケットとは、生成間隔が常にΔｔずれている。従って、図１２の例では、次の条件を守るように送出時刻が算出される。
（ｉ）データフロー１に含まれるパケットの送出間隔は２Δｔ
（ｉｉ）データフロー２に含まれるパケットの送出間隔は４Δｔ
（ｉｉｉ）データフロー１のパケットとデータフロー２のパケットとの送出間隔はΔｔ。
【００３２】
実際の送出時刻は、基準時刻Ｔ０に送出間隔を加えることにより決まる。図１２の例を用いて説明すれば、データフロー１に含まれるパケットの送出時刻Ｔ０，Ｔ２，Ｔ３，Ｔ５，Ｔ６・・・は次式で表される。
Ｔ＝Ｔ０＋２Δｔ×（ｉ−１）
ここでｉは１以上の整数である。
またデータフロー２に含まれるパケットの送出時刻Ｔ１，Ｔ４，Ｔ７，Ｔ１０・・・は次式で表される。
【００３３】
Ｔ＝Ｔ０＋Δｔ＋４Δｔ×（ｉ−１）
ここでｉは１以上の整数である。
送出時刻を決定するための基準時刻Ｔ０は、例えば次のようにして決めることができる。
Ｔ０＝Ｔｒｔｃｐ＋Ｔｍａｘ              ・・・（２）
ここで、Ｔｒｔｃｐは、ＲＴＣＰパケットを含む同期対象データフローのイーサフレームが、最初に同期ノード１に届いた時刻である。Ｔｍａｘは、イーサフレームをバッファ１０８にとどめておける最大時間である。
【００３４】
また基準時刻Ｔ０は、例えば次のようにして決めても良い。
Ｔ０＝Ｔｒｔｃｐ＋Ｔｂ                ・・・（３）
ここで、Ｔｒｔｃｐは、ＲＴＣＰパケットを含む同期対象データフローのイーサフレームが、最初に同期ノード１に届いた時刻である。Ｔｂは、イーサフレームをバッファ１０８に所定量蓄積するのに要する時間である。より具体的には、バッファ１０８に蓄積できる最大量の例えば半分まで、イーサフレームを蓄積するのに要する時間がＴｂである。
【００３５】
さらに上記式（２）及び（３）で求めた値のうちどちらか、例えば小さい方の値を基準時刻Ｔ０としてもよい。
上述のようにして求めた各パケットの送出時刻は、各パケットと対応付けてバッファ１０８に登録される。図１３（Ｂ）は、ＩＰパケットを含むイーサフレームとその送出時刻とが、バッファ１０８に対応付けて登録されていることを示す説明図である。バッファ１０８に蓄積されたイーサフレームの送出時刻は、抽出モジュール１１０により所定のタイミングで参照される。そのときすでに送出時刻を過ぎてしまっているパケットを含むイーサフレームが、バッファ１０８からｒａｗ  ｓｏｃｋｅｔ１０１ｂを介し受信側のネットワーク４ｂに送出される。
【００３６】
（３）同期装置が行う処理の流れ
図１４は、図２に示す同期装置１０が行う同期処理の流れの一例を示すフローチャートである。この処理は、同期ノード１のネットワークカード１１ａにデータが到着すると開始される。
ステップＳ１：同期装置１０のフィルタリングモジュール１０４は、タイムアウトか否かを判断する。すなわち、前のパケットを受信してから次のパケットを受信するまでに所定の時間が経過したか否かを判断する。“Ｙｅｓ”と判断すると後述するステップＳ１１に移行し、“Ｎｏ”と判断するとステップＳ２に移行する。
【００３７】
ステップＳ２：Ｅｔｈｅｒフィルタ１０４ａは、受信したイーサフレームがＩＰパケットを含んでいるか否かを判断する。“Ｙｅｓ”と判断するとステップＳ３に移行する。“Ｎｏ”と判断すると、受信したイーサフレームをそのまま受信側のネットワーク４ｂに送出する（後述するＳ１８）。
ステップＳ３：ＩＰフィルタ１０４ｂは、Ｅｔｈｅｒフィルタ１０４ａから受け取ったイーサフレームに、ＵＤＰパケットが含まれているか否かを判断する。また、Ｅｔｈｅｒフィルタ１０４ａからのイーサフレームが、設定ファイル１０２に設定されている同期対象のデータフローを形成するか否かを判断する。両方の条件を満たすと判断すると、ステップＳ４に移行する。“Ｎｏ”と判断すると、受信側のネットワーク４ｂに受け取ったイーサフレームを送信する（Ｓ１８）。
【００３８】
ステップＳ４：ＲＴＰフィルタ１０４ｃは、ＩＰフィルタ１０４ｂから受け取ったイーサフレームがＲＴＰパケットを含むか否かを判断する。“Ｙｅｓ”と判断するとステップＳ５に移行する。“Ｎｏ”と判断すると後述するステップＳ１３に移行する。
ステップＳ５：ペイロードフィルタ１０４ｄは、ＲＴＰフィルタ１０４ｃから受け取ったイーサフレームに含まれるデータのペイロードタイプが、設定ファイル１０２に設定されているペイロードタイプと合致するか否かを判断する。“Ｙｅｓ”と判断すると、ステップＳ６に移行する。“Ｎｏ”と判断すると、受け取ったイーサフレームを受信側ネットワーク４ｂにそのまま送出する（Ｓ１８）。
【００３９】
ステップＳ６、Ｓ７：セッション管理モジュール１０３は、受信したイーサフレームを含むデータフローを、監視テーブル１１１に登録したか否かを判断する（Ｓ６）。まだであれば、受信したイーサフレームのＩＰヘッダに記述されている送信元ＩＰアドレス及びそのポート番号を、監視テーブル１１１に登録する（Ｓ７）。
ステップＳ８：生成時刻計算モジュール１０６は、フィルタリングモジュール１０４から渡されたイーサフレーム内のＲＴＰパケットが送信端末２で生成された時刻ｔｉを計算する。
【００４０】
ステップＳ９：ソートモジュール１０７は、イーサフレームとその中に含まれるＲＴＰパケットの生成時刻ｔｉとを受け取り、バッファ１０８にそのイーサフレームを登録する。バッファ１０８には、生成時刻順を示すデータも併せて登録される。
ステップＳ１０：送出時刻計算モジュール１０９は、バッファ１０８に登録された各イーサフレームの送出時刻を計算し、送出時刻Ｔｉを各イーサフレームと対応づけてバッファ１０８に書き込む。
【００４１】
ステップＳ１１、Ｓ１２：抽出モジュール１１０は、同期ノード１内の内部時計が示す時間とバッファ１０８内の各イーサフレームの送出時刻とを参照し、送出時刻を既に過ぎたイーサフレームがバッファ１０８内にあるか否かを判断する（Ｓ１１）。“Ｙｅｓ”と判断するとそのパケットをｒａｗ  ｓｏｃｋｅｔ１０１ｂから受信側のネットワーク４ｂに送信する（Ｓ１２）。“Ｎｏ”と判断すると再びステップＳ１に戻り前述の処理を繰り返す。
ステップＳ１３：フィルタリングモジュール１０４内のＲＴＰフィルタ１０４ｃに渡されたイーサフレームが、ＲＴＣＰパケットを含んでいる場合、ステップＳ１４に移行する。ＲＴＰパケットもＲＴＣＰパケットも含んでいない場合は、そのイーサフレームは受信側のネットワーク４ｂにそのまま送信される（Ｓ１８）。
【００４２】
ステップＳ１４、Ｓ１５：ＲＴＰフィルタ１０４ｃは、受信したＲＴＣＰパケットにＳｅｎｄｅｒ  Ｒｅｐｏｒｔコマンドが記述されているか否かを判断する（Ｓ１４）。Ｓｅｎｄｅｒ  Ｒｅｐｏｒｔであれば、ＲＴＣＰパケットに記述されたＮＴＰ時刻及びタイムスタンプの値を生成時刻計算モジュール１０６に渡す。生成時刻計算モジュール１０６はこの値を一時的に記憶する（Ｓ１５）。記憶したこれらの値は、前述した生成時刻の算出に用いられる。
ステップＳ１６、Ｓ１７、Ｓ１８：ＲＴＰフィルタ１０４ｃは、ＲＴＣＰパケットにＢｙｅコマンドが記述されているか否かを判断する。Ｂｙｅコマンドが記述されていれば、そのデータフローによる通信は終了しようとしていることを示す。そこで、該当のデータフローを監視テーブル１１１のエントリーから削除する（Ｓ１７）。さらに、そのコマンドを含むイーサフレームを、受信側のネットワーク４ｂにそのまま送信する（Ｓ１８）。
【００４３】
以上の処理により、複数のデータフローが同期ノード１で同期された状態となって受信端末３に送信される。従って、受信端末３では同期処理を行う必要がない。受信端末３が複数ある場合、各受信端末３から出力された出力結果を同期させることができる。
＜第２実施形態例＞
（１）全体構成
図１５は、第２実施形態に係る同期システムの全体構成図である。この同期システムでは、受信側同期ノード２１ａと送信側同期ノード２１ｂとが動作する。コンピュータで実現される各同期ノード２１ａ、ｂには、同期装置２１０がそれぞれ設けられている。１または複数の送信端末２２ａ，２２ｂ（以下、送信端末２２という）から送信された複数のデータフローは、ネットワーク２４ａを介して同期ノード２１ａに送られる。同期ノード２１ａは、複数のデータフローを合成し、ネットワーク２４ｂを介して同期ノード２１ｂに送信する。同期ノード２１ｂは、合成されたデータフローから元のデータフローを復元し、ネットワーク２４ｃを介して１または複数の受信端末２３ａ、２３ｂ（以下、受信端末２３という）に送信する。なお、この図では説明を容易にするためネットワーク２４ａ〜ｃを別々に表しているが、これらのネットワークは同一であってもよい。
【００４４】
さらに、いずれかのネットワーク２４（図ではネットワーク２４ａ）にはＮＴＰサーバ４０が接続されている。また同期ノード２１ａ，ｂ、送信端末２２及び受信端末２３には、ＮＴＰクライアント３０が設けられている。ＮＴＰサーバ４０及びＮＴＰクライアント３０は、同期ノード１、送信端末２及び受信端末３間での内部クロックのずれを修正する。
（２）同期装置
（２−１）受信側同期ノードにおける同期装置
以下では、説明を容易にするために、データフローがＵＤＰ及びＲＴＰにより送信される場合を例に取る。図１６は、同期ノード２１ａ、ｂに設けられた同期装置２１０の機能ブロック図である。同期装置２１０は、受信側同期ノード２１ａとしてコンピュータを機能させる場合と、送信側同期ノード２１ｂとしてコンピュータを機能させる場合とがある。まず受信側同期ノード２１ａとしてコンピュータを機能させる場合の同期装置２１０について説明する。同期ノード２１ａは、図示しないネットワークカードにより、ネットワーク２４ａ及びネットワーク２４ｂに、それぞれ接続している。１または複数の各フロー／同期ノード用ポート（この場合はフロー用ポート）２０１ａには、送信元端末端末２２からの複数のデータフローがそれぞれ到着する。どのポートにどの送信端末２２からのどのデータフローが到着するかは、設定ファイル２０２に記述されている。バッファリングモジュール２０４は、設定ファイル２０２を参照し、同期対象のデータフローが到着するポート２０１ａからＩＰパケットを取り込んでバッファ２０５に蓄積する。合成／分離モジュール２０６は、各ＩＰパケットに含まれるＲＴＰパケットのタイムスタンプを参照し、同一のタイムスタンプをもつパケットを１つの合成パケットに合成する。合成パケットは、送出モジュール２０７により、各フロー／同期ノード用ポート（この場合は同期ノード用ポート）２０１ｂから同期ノード２１ｂに送信される。
【００４５】
（２−２）送信側同期ノードにおける同期装置
次に送信側同期ノード２１ｂとしてコンピュータを機能させる場合の同期装置２１０について説明する。同期ノード２１ａが送信した合成パケットは、同期ノード２１ｂの各フロー／同期ノード用ポート（この場合は同期ノード用ポート）２０１ａに到着する。どのポートが同期ノード用ポートかは、設定ファイル２０２に記述されている。同期ノード用ポート２０１ａに到着した合成パケットは、バッファリングモジュール２０４によりバッファ２０５に蓄積される。バッファ２０５に蓄積されたパケットは、合成／分離モジュール２０６により分解・復元され、送出モジュール２０７に渡される。分解され元通り復元されたパケットは、送出モジュール２０７により、各フロー／同期ノード用ポート（この場合は各フロー用ポート）２０１ｂから受信端末２３に送信される。どのパケットをどの受信端末に送信するかは、設定ファイル２０２を参照して判断する。
【００４６】
（３）同期装置の各ブロックの詳細
（３−１）同期対象のデータフローの設定
次に、各ブロックの機能についてさらに詳細に説明する。図１７は、設定ファイル２０２に記述されるグループ指定データの概念説明図である。設定ファイルには同期対象のデータフローが指定されている。また、設定ファイル１０２には、同期させるべき各データフローそれぞれの送信元及び宛先が記述されている。同期するべきデータフローは１つのフローグループを形成する。同期装置２１０は、設定ファイル２０２を参照し、送信端末２２から同期ノード２１ａに送信されたデータを同期ノード２１ａから同期ノード２１ｂに送信する。また、同期装置２１０は、設定ファイル２０２を参照し、同期ノード２１ａから同期ノード２１ｂに送信されたデータを、同期ノード２１ｂから受信端末２３に送信する。図１７の例では、以下のグループ指定データが設定ファイルに記述されている。
（ａ）フローグループの「グループ名」
（ｂ）グループに関する「コメント」
（ｃ）「宛先の設定」
宛先とは、同期装置が送信側同期ノードとしてコンピュータを機能させる場合に、同期装置が分離・復元した各データフローの宛先である。宛先は、送信先受信端末のＩＰアドレス、ポート番号、フローＩＤで特定される。ここでフローＩＤとは、各データストリームを識別する識別情報である。送信側同期ノードにおいて、分離したデータフローと宛先の端末とを対応付けるために、フローＩＤが用いられる。あるいは、同一ポートで送受信される同じペイロードタイプの別々のデータフローを識別するためなどにフローＩＤが用いられる。フローＩＤは、送信端末、同期ノード及び受信端末の間で共通に使用される。フローＩＤは、例えば同期システムの管理者により設定される。
（ｄ）「受信場所の設定」
受信場所とは、同期装置が受信側同期ノードとしてコンピュータを機能させる場合に、各データフローを受信するポート番号及び受信するデータフローのフローＩＤで特定される。
（ｅ）「合成データフロー宛先」
同期装置が受信側同期ノードとしてコンピュータを機能させる場合に、合成パケットを送信する宛先である。宛先は、合成パケットを受け取る送信側同期ノード２１ｂのＩＰアドレス及びポート番号で特定される。
（ｆ）「合成データフロー受信場所」
同期装置が送信側同期ノードとしてコンピュータを機能させる場合に、受信側同期ノード２１ａから送信される合成パケットを受信するポート番号で特定される。
【００４７】
図１８及び図１９は、設定ファイルへのグループ指定データの登録を受け付ける画面例である。これらの画面例は、セッション管理モジュール２０３により、同期ノード２１ａ、ｂに接続されたディスプレイの画面に表示される。入力された情報は、設定ファイル２０２に書き込まれる。図１８は、フローグループを設定するグループ選択画面例である。この画面は、フローグループのグループ名及びコメントの設定を受け付ける。図１９は、同期対象設定画面例である。この画面は、宛先、受信場所、合成データフロー宛先、合成データフロー受信場所の設定を、フローグループごとに受け付ける。
【００４８】
（３−２）合成パケットの構成
図２０は、合成／分離モジュール２０６により生成及び分解される合成パケットの一部の構成を示す説明図である。合成パケットはイーサフレームの中に含まれるＩＰパケットのＩＰデータとして送受信される。イーサフレーム及びＩＰパケットの構成は、前記図７及び図８と同様である。合成パケットは、ＲＴＰヘッダ、個別ヘッダ及びデータ本体から構成される。
ＲＴＰヘッダは、前記図に示すＲＴＰパケットのＲＴＰヘッダと同様の構成を有している。ＲＴＰヘッダのＳＳＲＣには、合成パケットを生成した同期ノードのＳＳＲＣが記述される。
【００４９】
個別ヘッダは、合成したデータフローの数だけ生成される。各個別ヘッダは多重化ヘッダとＲＴＰヘッダとを含む。多重化ヘッダには、フローＩＤ、データ長及びｍａｒｋｅｒが含まれる。データ長は、データ本体内部に含まれる該当フローに関するデータサイズ（データ１，データ２）のバイト数である。ｍａｒｋｅｒは、合成パケットが１つのフレームを分割したものか否か及び分割されたフレームの最後のパケットか否かを示す。個別ヘッダ内のＲＴＰヘッダは、各送信端末２２により生成されたＲＴＰヘッダである。このＲＴＰヘッダは、ペイロードタイプ、タイムスタンプ、ＳＳＲＣ及びｍａｒｋｅｒを含む。ＳＳＲＣは、データフローを送信した送信端末のＳＳＲＣである。なお、個別ヘッダ内のＲＴＰヘッダは、１つのフレームを複数の合成パケットに分割して送信する場合には、先頭合成パケット以外は不要である。
【００５０】
データ本体には、音声データや画像データ、ハプティクスデータなどのマルチメディアデータが記述される。これらを圧縮符号化したデータであっても良い。
（３−３）合成パケットの生成／分解
図２０に示す合成パケットの生成及びその分解は、合成／分離モジュール２０６が行う。１つの合成パケットに合成される各ＲＴＰパケットは、同一のタイムスタンプの値を有する。タイムスタンプの値はパケットの送出間隔によって決まり、送出間隔はペイロードタイプによって決まる。従って、合成パケットに合成される各データフローのペイロードタイプは同一であることが好ましい。
【００５１】
合成パケットの生成や分解は、画像データのデータフローを同期対象に含む場合には１フレーム単位で行う。つまり、合成パケットを生成する場合には、合成／分離モジュール２０６は、画像のデータフローについて１フレーム分のパケットがバッファ２０５に蓄積するのを待機する。次いで、他のデータフローについて前記１フレームに対応する全てのパケットを受信したか否かを確認する。全てのデータフローについて前記１フレーム分に対応するパケットを受信すると、それらを合成した合成パケットを生成する。合成パケットのデータ本体のデータサイズが大きすぎる場合は、１フレームを複数の合成パケットに分割する。
【００５２】
逆に、合成パケットを分解する場合には、多重化ヘッダのｍａｒｋｅｒを参照して１フレームが分割されているか否かを判断する。分割されていれば、１フレーム分の合成パケット全てをバッファ２０５に蓄積する。具体的には、ｍａｒｋｅｒの値が“０”すなわち分割されていれば、ｍａｒｋｅｒの値が“１”になるまでつまり分割した最後の合成パケットまでをバッファ２０５に蓄積する。その後、１フレーム分の合成パケットを分解して複数のＲＴＰパケットを取り出し、各ＲＴＰパケットを含むイーサフレームを各データフローの受信端末２３へ送信する。
【００５３】
フロー制御モジュール２０８は、各フロー／同期ノード用ポート２０１ａ、ｂを参照し、パケットの欠落やＲＴＰ通信の管理を行う。
（４）同期装置が行う処理の流れ
図２１は、図１６の同期装置２１０が行う同期処理の流れの一例を示すフローチャートである。この処理は、同期ノード２１の起動と共に開始する。
ステップＳ２０１：まず、同期装置２１０は、設定ファイル２０２を参照し、各データフロー用のポート及び／又は同期ノード用ポート２１１ａ、２１１ｂを生成する。
【００５４】
ステップＳ２０２：バッファリングモジュール２０４は、各フロー用ポート又は同期ノード用ポート２０１ａのいずれかからパケットを受信したか否かを判断する。“Ｙｅｓ”と判断するとステップＳ２０３に移行する。“Ｎｏ”と判断すると後述するステップＳ２１３に移行する。
ステップＳ２０３：バッファリングモジュール２０４は、受信のあったポートが、別の同期ノードからの合成パケット用ポートなのか、それとも送信端末からのデータフロー用ポートなのかを判断する。データフローの受信であればステップＳ２０４に移行する。同期ノードからの合成パケットの受信であれば後述するステップＳ２１４に移行する。
【００５５】
ステップＳ２０４〜Ｓ２１３は、同期装置２１０がコンピュータを受信側同期ノード２１ａとして動作させる場合の処理である。
ステップＳ２０４〜Ｓ２０７：バッファリングモジュール２０４は、送信端末２２から受信したパケットをバッファ２０５に登録する（Ｓ２０４）。合成／分離モジュール２０６は、バッファ２０５に登録されたパケット内のデータ本体が画像データであるか否かを判断する（Ｓ２０５）。画像データであれば、１フレームを構成する全てのデータがバッファ２０５にそろっているか否かを判断する（Ｓ２０６）。続いて、前記１フレームに相当する他のデータフローのパケットがそろっているか否かを判断する（Ｓ２０７）。つまり、画像データのデータフローと同じフローグループに属する他のデータフローのパケットについて、前記１フレームを構成する画像データのタイムスタンプと同一のタイプスタンプを有するパケットがそろっているか否かを判断する。“Ｙｅｓ”と判断するとステップＳ２０９に移行する。“Ｎｏ”と判断するとステップＳ２０８に移行する。
【００５６】
ステップＳ２０８：合成／分離モジュール２０６は、１フレーム分のパケットがフローグループ内の全てのデータフローについてそろうまで待機する。待機時間が所定の上限値に達すると、ステップＳ２０９に移行する。
ステップＳ２０９：合成／分離モジュール２０６は、バッファ２０５内のパケットを合成し、合成パケットを生成する。
ステップＳ２１０、Ｓ２１１：合成／分離モジュール２０６は、データサイズが大きいために複数のパケットに分割する必要があるか否かを判断する（Ｓ２１０）。“Ｙｅｓ”と判断すると、合成パケットを複数のパケットに分割する（Ｓ２１１）。
【００５７】
ステップＳ２１２：送出モジュール２０７は、合成パケットを、同期ノード用ポート２０１ｂから送信側同期ノード２１ｂの指定ポートに送信する。
ステップＳ２１３：バッファリングモジュール２０４は、送信端末２２からのパケットが一定期間以上到着しない場合、ステップＳ２０８に処理を移行する。以下のステップＳ２１４〜Ｓ２１９は、同期装置２１０がコンピュータを送信側同期ノード２１ｂとして動作させる場合の処理である。
ステップＳ２１４〜Ｓ２１６：同期ノードから合成パケットを受信した場合、合成／分離モジュール２０６は、合成パケットの個別ヘッダを参照し、１フレームが複数の合成パケットに分割されているか否かを判断する。分割されていなければ、受信した合成パケットを分解してデータフローごとのパケットを復元し（Ｓ２１５）、各データフローの受信端末へ送信する（Ｓ２１６）。
【００５８】
ステップＳ２１７〜Ｓ２１９：受信した合成パケットが分割されている場合、バッファリングモジュール２０４は受信した合成パケットをバッファ２０５に登録する（Ｓ２１７）。ついで合成／分離モジュール２０６は、１フレームを構成する合成パケットの全てを受信したか否かを判断する（Ｓ２１８）。“Ｙｅｓ”と判断すると、合成／分離モジュール２０６は、１フレーム分の複数の合成パケットのデータ本体から取り出したデータを、データフロー毎に連結する（Ｓ２１９）。このとき、フローＩＤが等しいデータ同士が連結される。データ本体内部の各データのフローＩＤは、各合成パケットの個別ヘッダを参照することにより特定できる。その後、前述と同様に合成パケットを分解・復元し、各受信端末に送信する。
【００５９】
この処理により、各受信端末において同期処理を行うことなく、各受信端末からの出力結果を同期させることができる。
＜その他の実施形態＞
前述のデータ同期方法をコンピュータ上で実行するためのプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明に含まれる。ここで記録媒体としては、コンピュータが読み書き可能なフレキシブルディスク、ハードディスク、半導体メモリ、ＣＤ−ＲＯＭ、ＤＶＤ、光磁気ディスク（ＭＯ）、その他のものが挙げられる。
【００６０】
＜付記＞
（付記１）
複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法であって、
同期させようとしている複数のデータフローの識別子を記憶する記憶ステップと、
前記ネットワークの少なくとも１つに流れるデータフローを受信する受信ステップと、
前記記憶ステップで記憶されている複数のデータフローを、受信したデータフローの中から選択する選択ステップと、
前記選択されたデータフローのそれぞれに含まれる各パケットが、前記選択されたデータフローを送信した１または複数の送信端末で生成された時刻を演算する演算ステップと、
前記演算された生成時刻に従い、前記選択されたデータフローのそれぞれに含まれるパケットが、前記選択されたデータフローそれぞれの宛先である１または複数の受信端末に送出される順番を、決定する順番決定ステップと、
各パケットの送出時刻の間隔が各パケットの生成時刻の間隔と同等となるように、かつ前記順番に従って各パケットが送出されるように、前記選択されたデータフローのそれぞれに含まれる各パケットの送出時刻を決定する送出時刻決定ステップと、
前記送出時刻に基づいて、各パケットを前記受信端末に送信する送信ステップと、
を含む、データ同期方法。
【００６１】
第１ネットワーク上の送信端末から中継装置を介して第２ネットワーク上の受信端末に送信される２つのデータフローを考える。中継装置は各データフローに含まれるパケットが生成された順番にパケットを並べ直して受信装置に送出する。従って、データフロー毎にネットワーク遅延が異なるためにパケットの到着順が生成順と変わってしまう問題を解消できる。しかも、中継装置から受信端末への各パケットの送出間隔は、各パケットの生成間隔と同じになるように調整されている。従って、受信端末側での同期処理は必要ない。複数の受信装置がある場合、複数の受信端末がそれぞれにデータフローを受け取りそのまま出力デバイスに出力しても、出力結果は互いに同期したものとなる。
【００６２】
（付記２）
前記記憶ステップは、同期させようとする複数のデータフローの識別子の設定を受け付ける画面を表示し、前記画面に入力された識別子を記憶する、付記１に記載のデータ同期方法。
（付記３）
前記選択ステップでは、パケットからなるデータフローであって、各データフローを送信した送信端末が各パケットを生成した時刻に関する時刻データが記述されたパケットを含む複数のデータフローを選択し、
前記演算ステップでは、前記時刻データに基づいて、各パケットの生成時刻を演算する、
付記１に記載のデータ同期方法。
【００６３】
例えば、ＲＴＰパケットには、生成時刻としてタイムスタンプが記述されている。また、送信端末から送信されるＲＴＣＰパケットには、ＲＴＰパケットと共通の値を有するタイムスタンプと、ＲＴＣＰパケットが生成された絶対時刻と、が記述されている。これらの情報を用いることにより、ＲＴＰパケットの生成時刻を演算することができる。
（付記４）
前記送信ステップは、
各パケット送出時刻及び各パケットを対応付けて一時的に記憶し、
一時的に記憶したパケットのうち、その送出時刻が過ぎたパケットがあるか否かを所定のタイミングで判断し、
送出時刻が過ぎているパケットを送信する、
付記１に記載のデータ同期方法。
【００６４】
（付記５）
前記選択ステップで選択されたデータフローに含まれるパケットを一時的に記憶するバッファリングステップをさらに含み、
前記演算ステップは、選択されたデータフローに含まれるＲＴＣＰパケットに記述された絶対時刻及びタイムスタンプ並びにＲＴＰパケットに含まれるタイムスタンプとに基づいて生成時刻を演算し、
前記送出時刻決定ステップは、送出時刻を決定するための基準時刻Ｔ０を、最初のＲＴＣＰパケットがいずれかの送信端末から届いた時間Ｔｒｔｃｐと、前記バッファリングステップでパケットを蓄積できる最大時間Ｔｍａｘとに基づいて決定する、
付記１に記載のデータ同期方法。
【００６５】
送出時刻は、基準時刻Ｔ０に、各パケットの生成間隔を加算することにより決定する。基準時刻Ｔ０は、例えば次式を用いて決定することができる。
Ｔ０＝Ｔｒｔｃｐ＋Ｔｍａｘ
ここで、Ｔｒｔｃｐは最初にＲＴＣＰパケットが届いた時刻である。Ｔｍａｘは、パケットをバッファリングできる最大時間である。
（付記６）
前記選択ステップで選択されたデータフローに含まれるパケットを一時的に記憶するバッファリングステップをさらに含み、
前記演算ステップは、選択されたデータフローに含まれるＲＴＣＰパケットに記述された絶対時刻及びタイムスタンプ並びにＲＴＰパケットに含まれるタイムスタンプとに基づいて生成時刻を演算し、
前記送出時刻決定ステップは、送出時刻を決定するための基準時刻Ｔ０を、最初のＲＴＣＰパケットがいずれかの送信端末から届いた時間Ｔｒｔｃｐと、前記バッファリングステップでパケットを所定の量まで蓄積するのに要する時間Ｔｂとに基づいて決定する、
付記１に記載のデータ同期方法。
【００６６】
送出時刻は、基準時刻Ｔ０に、各パケットの生成間隔を加算することにより決定する。基準時刻Ｔ０は、例えば次式を用いて決定することができる。
Ｔ０＝Ｔｒｔｃｐ＋Ｔｂ
ここで、Ｔｒｔｃｐは、最初にＲＴＣＰパケットが届いた時刻である。Ｔｂは、パケットをバッファリングできる量の例えば半分までパケットを蓄積するのに要する時間である。
（付記７）
複数のネットワーク間に流れるデータフローを中継するデータ同期システムであって、
同期させようとしている複数のデータフローの識別子を記憶する記憶手段と、前記ネットワークの少なくとも１つに流れるデータフローを受信する受信手段と、
前記記憶手段で記憶されている複数のデータフローを、受信したデータフローの中から選択する選択手段と、
前記選択されたデータフローのそれぞれに含まれる各パケットが、前記選択されたデータフローを送信した１または複数の送信端末で生成された時刻を演算する演算手段と、
前記演算された生成時刻に従い、前記選択されたデータフローのそれぞれに含まれるパケットが、前記選択されたデータフローそれぞれの宛先である１または複数の受信端末に送出される順番を決定する順番決定手段と、
各パケットの送出時刻の間隔が各パケットの生成時刻の間隔と同等となるように、かつ前記順番に従って各パケットが送出されるように、前記選択されたデータフローのそれぞれに含まれる各パケットの送出時刻を決定する送出時刻決定手段と、
前記送出時刻に基づいて、各パケットを前記受信端末に送信する送信手段と、
を備えるデータ同期システム。
【００６７】
（付記８）
複数のネットワーク間に流れるデータフローを中継するコンピュータが実行するデータ同期プログラムであって、
同期させようとしている複数のデータフローの識別子を記憶する記憶ステップと、
前記ネットワークの少なくとも１つに流れるデータフローを受信する受信ステップと、
前記記憶ステップで記憶されている複数のデータフローを、受信したデータフローの中から選択する選択ステップと、
前記選択されたデータフローのそれぞれに含まれる各パケットが、前記選択されたデータフローを送信した１または複数の送信端末で生成された時刻を演算する演算ステップと、
前記演算された生成時刻に従い、前記選択されたデータフローのそれぞれに含まれるパケットが、前記選択されたデータフローそれぞれの宛先である１または複数の受信端末に送出される順番を、決定する順番決定ステップと、
各パケットの送出時刻の間隔が各パケットの生成時刻の間隔と同等となるように、かつ前記順番に従って各パケットが送出されるように、前記選択されたデータフローのそれぞれに含まれる各パケットの送出時刻を決定する送出時刻決定ステップと、
前記送出時刻に基づいて、各パケットを前記受信端末に送信する送信ステップと、
を前記コンピュータに実行させるデータ同期プログラム。
【００６８】
このプログラムを記録したコンピュータ読み取り可能な記録媒体も本発明の範囲に含まれる。ここで記録媒体としては、コンピュータが読み書き可能なフレキシブルディスク、ハードディスク、半導体メモリ、ＣＤ−ＲＯＭ、ＤＶＤ、光磁気ディスク（ＭＯ）、その他のものが挙げられる。
（付記９）
複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法であって、
パケットからなる複数のデータフローであって、各データフローを送信した送信端末が各パケットを生成した時刻が記述されたパケットを含む複数のデータフローを、前記ネットワークの少なくとも１つから受信する受信ステップと、
同期させようとしている複数のデータフローの識別子と、前記複数のデータフローを中継する中継装置の中継アドレスと、を記憶する記憶ステップと、
前記記憶ステップで記憶されている複数のデータフローを、前記受信ステップで受信したデータフローの中から選択する選択ステップと、
前記選択された各データフローに含まれる各パケットのうち、生成時刻が同一のパケットを１つのパケットに合成した合成パケットを生成する合成ステップと、
合成パケットを、前記中継アドレスに送信する送信ステップと、
を含む、データ同期方法。
【００６９】
第１ネットワーク上の送信端末から第２ネットワーク上の受信端末への複数のデータフローを、第１中継装置が合成し、第２中継装置が分離する同期システムを考える。この発明に係るデータ同期方法は第１中継装置が実行する。データフローは、例えばＲＴＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）で送信される。同期させる２つのデータフローの識別子を予め第１中継装置に登録しておく。第１中継装置は、２つのデータフローに含まれるパケットＰ１−ｉ、Ｐ２−ｊのうち、生成時刻が同一のパケットＰ１−ｍとＰ２−ｍとを合成し、１つの合成パケットＰｍを生成する。合成パケットＰｍからなる合成データフローは、第１中継装置から第２中継装置に送信され、分解され、それぞれのデータフローとなる。なお、同期させるデータフローのペイロードタイプは同じであることが好ましい。
【００７０】
（付記１０）
前記記憶ステップは、同期させようとする複数のデータフローの識別子及び前記中継装置の中継アドレスの設定を受け付ける画面を表示し、前記画面に入力された識別子及び中継アドレスを記憶する、付記９に記載のデータ同期方法。
（付記１１）
前記記憶ステップは、前記データフローそれぞれのペイロードタイプをさらに記憶し、
前記合成ステップは、前記選択された各データフローに含まれる各パケットのうち、同じペイロードタイプのパケットを１つのパケットに合成する、
付記９に記載のデータ同期方法。
【００７１】
（付記１２）
複数のネットワーク間に流れるデータフローを中継するデータ同期システムであって、
パケットからなる複数のデータフローであって、各データフローを送信した送信端末が各パケットを生成した時刻が記述されたパケットを含む複数のデータフローを、前記ネットワークの少なくとも１つから受信する受信手段と、
同期させようとしている複数のデータフローの識別子と、前記複数のデータフローを中継する中継装置の中継アドレスと、を記憶する記憶手段と、
前記記憶手段で記憶されている複数のデータフローを、前記受信ステップで受信したデータフローの中から選択する選択手段と、
前記選択された各データフローに含まれる各パケットのうち、生成時刻が同一のパケットを１つのパケットに合成した合成パケットを生成する合成手段と、
合成パケットを、前記中継アドレスに送信する送信手段と、
を含む、データ同期方法。
【００７２】
（付記１３）
複数のネットワーク間に流れるデータフローを中継するコンピュータが実行するデータ同期プログラムであって、
パケットからなる複数のデータフローであって、各データフローを送信した送信端末が各パケットを生成した時刻が記述されたパケットを含む複数のデータフローを、前記ネットワークの少なくとも１つから受信する受信ステップと、
同期させようとしている複数のデータフローの識別子と、前記複数のデータフローを中継する中継装置の中継アドレスと、を記憶する記憶ステップと、
前記記憶ステップで記憶されている複数のデータフローを、前記受信ステップで受信したデータフローの中から選択する選択ステップと、
前記選択された各データフローに含まれる各パケットのうち、生成時刻が同一のパケットを１つのパケットに合成した合成パケットを生成する合成ステップと、
合成パケットを、前記中継アドレスに送信する送信ステップと、
を前記コンピュータに実行させるデータ同期プログラム。
【００７３】
このプログラムを記録した、コンピュータ読み取り可能な記録媒体も、本発明の範囲に含まれる。
（付記１４）
複数のネットワーク間に流れるデータフローを中継するコンピュータが行うデータ同期方法であって、
前記ネットワークの少なくとも１つから、前記付記９に記載の方法により生成された合成パケットを受信する受信ステップと、
前記合成パケットを含む合成データフローに含まれている複数のデータフローそれぞれの送信先アドレスを記憶する記憶ステップと、
前記合成パケットを分解し、前記複数のデータフローを復元する分解ステップと、
復元された複数のデータフローを、それぞれの送信先アドレスに送信する送信ステップと、
を含む、データ同期方法。
【００７４】
第１ネットワーク上の送信端末から第２ネットワーク上の受信端末への複数のデータフローを、第１中継装置が合成し、第２中継装置が分離する同期システムを考える。この発明に係るデータ同期方法は第２中継装置が実行する。第２中継装置は、第１中継装置が生成した合成パケットを分解し、それぞれのデータフローを復元する。復元されたデータフローは、各データフロー毎の宛先に送信される。これにより、受信装置で同期処理をしなくとも、受信装置は複数のデータフローを同期された状態で受信することができる。また、複数の受信装置がある場合、受信装置に接続された出力デバイスの出力を同期させることができる。なお、同期させるデータフローのペイロードタイプは同じであることが好ましい。
【００７５】
（付記１５）
前記記憶ステップは、合成データフローの受信場所の識別子及び前記データフローそれぞれの送信先アドレスの設定を受け付ける画面を表示し、前記画面に入力された識別子及び送信先アドレスを記憶する、付記１４に記載のデータ同期方法。
（付記１６）
複数のネットワーク間に流れるデータフローを中継するデータ同期システムであって、
前記ネットワークの少なくとも１つから、前記付記９に記載の方法により生成された合成パケットを受信する受信手段と、
前記合成パケットを含む合成データフローに含まれている複数のデータフローそれぞれの送信先アドレスを記憶する記憶手段と、
前記合成パケットを分解し、前記複数のデータフローを復元する分解手段と、
復元された複数のデータフローを、それぞれの送信先アドレスに送信する送信手段と、
を備えるデータ同期システム。
【００７６】
（付記１７）
複数のネットワーク間に流れるデータフローを中継するコンピュータが実行するデータ同期プログラムであって、
前記ネットワークの少なくとも１つから、前記付記９に記載の方法により生成された合成パケットを受信する受信ステップと、
前記合成パケットを含む合成データフローに含まれている複数のデータフローそれぞれの送信先アドレスを記憶する記憶ステップと、
前記合成パケットを分解し、前記複数のデータフローを復元する分解ステップと、
復元された複数のデータフローを、それぞれの送信先アドレスに送信する送信ステップと、
を前記コンピュータに実行させるデータ同期プログラム。
【００７７】
このプログラムを記録した、コンピュータ読み取り可能な記録媒体も、本発明の範囲に含まれる。
【００７８】
【発明の効果】
本発明を用いれば、複数のデータフローを受信する受信端末から同期処理の負担を取り除くことができる。また、複数の受信端末のそれぞれが異なるデータフローを受信する場合、各受信端末からの出力を、受信端末側での同期処理をすることなく同期させることができる。
【図面の簡単な説明】
【図１】第１実施形態例に係る同期システムの全体構成図。
【図２】図１の同期装置の機能ブロック図。
【図３】図１の同期装置における設定ファイルの概念説明図。
【図４】設定ファイルへフローグループを登録するためのグループ選択画面例を示す説明図（１）。
【図５】設定ファイルへフローグループを登録するためのグループ選択画面例を示す説明図（２）。
【図６】図１の同期装置における監視テーブルの概念説明図。
【図７】イーサフレームの構成を示す説明図。
【図８】ＩＰパケットの構成を示す説明図。
【図９】ＵＤＰパケットの構成を示す説明図。
【図１０】（Ａ）ＲＴＰパケットの構成を示す説明図。
（Ｂ）ＲＴＣＰパケットの構成を示す説明図。
【図１１】パケットの生成時刻の算出方法を示す説明図。
【図１２】パケットの生成タイミングと同期したデータフローにおける各パケットの送出タイミングとの関係を示す説明図。
【図１３】（Ａ）生成時刻の順番及びパケットが登録されたバッファの概念説明図。
（Ｂ）送出時刻とパケットとが対応付けられたバッファの概念説明図。
【図１４】図２の同期装置が行う同期処理の流れの一例を示すフローチャート。
【図１５】第２実施形態例に係る同期システムの全体構成図。
【図１６】図２の同期装置の機能ブロック図。
【図１７】図２の同期装置における設定ファイルの概念説明図。
【図１８】図１７の設定ファイルへフローグループを登録するためのグループ選択画面例を示す説明図（１）。
【図１９】図１７の設定ファイルへフローグループを登録するためのグループ選択画面例を示す説明図（２）。
【図２０】合成パケットの構成を示す説明図。
【図２１】図１６の同期装置が行う同期処理の流れの一例を示すフローチャート。
【符号の説明】
１０，２１０：同期装置
２，２２：送信端末
３，２３：受信端末
【図１】
2004320251.tif 000003
【図２】
2004320251.tif 000004
【図３】
2004320251.tif 000005
【図４】
2004320251.tif 000006
【図５】
2004320251.tif 000007
【図６】
2004320251.tif 000008
【図７】
2004320251.tif 000009
【図８】
2004320251.tif 000010
【図９】
2004320251.tif 000011
【図１０】
2004320251.tif 000012
【図１１】
2004320251.tif 000013
【図１２】
2004320251.tif 000014
【図１３】
2004320251.tif 000015
【図１４】
2004320251.tif 000016
【図１５】
2004320251.tif 000017
【図１６】
2004320251.tif 000018
【図１７】
2004320251.tif 000019
【図１８】
2004320251.tif 000020
【図１９】
2004320251.tif 000021
【図２０】
2004320251.tif 000022
【図２１】
2004320251.tif 000023