(57)【特許請求の範囲】
【請求項１】
第１のノード及び第２のノードを備える第１のノード群と、第３のノード及び第４のノードを備える第２のノード群との間で、ネットワークを介して第１の通信および第２の通信を実行する該第１のノードであって、
前記第１のノードと前記第３のノードとの間に、前記ネットワークを介する通信経路を設定する設定手段と、
前記第２のノードと前記第４のノードとの間で行われる第２の通信に係るデータであって前記第２のノードから受信した該データから、送信対象のデータを決定する決定手段と、
決定された前記送信対象のデータを、前記通信経路を介して、前記第３のノードに送信する送信手段と、
前記ネットワークの伝送能力に基づいて、前記送信手段によって周期的に実行される送信処理の開始時点から現時点までに、前記送信対象のデータの送信にかかる所要時間を算出する算出手段と、
前記現時点から前記所要時間が経過した時点が、前記第２のノードと前記第４のノードとの間で周期的に実行される第１の通信の開始時点と一致するか否かを判定する判定手段と、
を備え、
前記決定手段は、前記判定手段によって判定された判定結果に基づいて、前記受信したデータから前記送信対象のデータを決定する、
ことを特徴とするノード。
【請求項２】
第１の通信の開始時点と一致すると判定された場合、前記受信したデータから、第１の通信の通信先となる前記第４のノードを備える前記第２のノード群の前記第３のノードを宛先としない任意のデータを抽出する抽出手段を備え、
前記決定手段は、前記抽出手段によって抽出されたデータを、前記送信対象のデータに決定することを特徴とする請求項１に記載のノード。
【請求項３】
前記決定手段は、前記抽出手段によって抽出されたデータのうち、前記現時点から前記所要時間が経過した時点に前記第２のノードと前記第４のノード間で実行される第１の通信に関するデータのデータ量以下であるデータを、前記送信対象のデータに決定することを特徴とする請求項２に記載のノード。
【請求項４】
前記算出手段は、第１の通信の開始時点と一致しないと判定された場合、前記ネットワークの伝送能力に基づいて、前記現時点から前記所要時間が経過した時点から、第１の通信の前記開始時点となるまでの残余の時間に送信可能なデータ量を算出し、
前記抽出手段は、前記受信されたデータの中から前記算出手段によって算出されたデータ量以下のデータを、抽出することを特徴とする請求項２または３に記載のノード。
【請求項５】
前記決定手段は、前記受信されたデータのうち前記送信対象のデータが存在しない場合、前記ネットワークの中継装置において破棄されるデータを、前記送信対象のデータに決定することを特徴とする請求項１〜４のいずれか一つに記載のノード。
【請求項６】
第１のノード及び第２のノードを備える第１のノード群と、第３のノード及び第４のノードを備える第２のノード群との間で、ネットワークを介して第１の通信および第２の通信を実行する該第１のノードのコンピュータに実行させる通信プログラムであって、
前記第２のノードと前記第４のノードとの間で行われる第２の通信に係るデータを前記第２のノードから受信する受信工程と、
前記第１のノードと前記第３のノードとの間に、前記ネットワークを介する通信経路を設定する設定工程と、
前記ネットワークの伝送能力に基づいて、前記受信したデータから送信対象として順次決定されるデータを送信するために周期的に実行される送信処理の開始時点から現時点までに順次決定された前記送信対象のデータの送信にかかる所要時間を算出させる算出工程と、
前記現時点から前記所要時間が経過した時点が、前記第２のノードと前記第４のノードとの間で周期的に実行される第１の通信の開始時点と一致するか否かを判定する判定工程と、
前記判定工程によって判定された判定結果に基づいて、前記受信したデータから前記送信対象のデータを決定する決定工程と、
を前記コンピュータに実行させることを特徴とする通信プログラム。
【請求項７】
第１のノード及び第２のノードを備える第１のノード群と、第３のノード及び第４のノードを備える第２のノード群との間で、ネットワークを介して第１の通信および第２の通信を実行する該第１のノードのコンピュータが、
前記第２のノードと前記第４のノードとの間で行われる第２の通信に係るデータを前記第２のノードから受信する受信工程と、
前記第１のノードと前記第３のノードとの間に、前記ネットワークを介する通信経路を設定する設定工程と、
前記ネットワークの伝送能力に基づいて、前記受信したデータから送信対象として順次決定されるデータを送信するために周期的に実行される送信処理の開始時点から現時点までに順次決定された前記送信対象のデータの送信にかかる所要時間を算出させる算出工程と、
前記現時点から前記所要時間が経過した時点が、前記第２のノードと前記第４のノードとの間で周期的に実行される第１の通信の開始時点と一致するか否かを判定する判定工程と、
前記判定工程によって判定された判定結果に基づいて、前記受信したデータから前記送信対象のデータを決定する決定工程と、
を実行することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１および第２の通信が混在するネットワーク内のノード間の通信を制御するノード、通信プログラムおよび通信方法に関する。
【背景技術】
【０００２】
近年、自動車、工業用ロボット、ヒューマノイドロボットなどの機械制御装置において、機能ごとのモジュール化が行われている。また、ネットワーク機能を有するセンサの登場により、機械制御装置に搭載される端末装置（モジュール）がネットワークを構成することが一般的になっている。
【０００３】
このようなネットワークを含む機械制御装置においては、一般に、実時間通信と非実時間通信とが混在する。実時間通信とは、ある時間間隔でデータの送受信が完了することを保証する通信である。実時間通信としては、機械制御装置のフィードバック制御のために、比較的データ量の少ないデータ（数十〜百バイト程度）を極低遅延で周期的（数ミリ秒）に送受信する通信がある。
【０００４】
また、実時間通信としては、ＵＳＢ２．０やＩＥＥＥ１３９４などにおいて、音声や動画像などを遅滞なく転送するために、極短周期（数十〜百マイクロ秒）に一回必ず転送機会を得て、数キロバイトのデータを転送するアイソクロナス転送がある。なお、ＵＳＢは「Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ」の略語である。ＩＥＥＥは「Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ」の略語である。
【０００５】
実時間通信に対して、非実時間通信とは、実時間性が要求されない通信である。非実時間通信としては、たとえば、アプリケーションの修正プログラムの配信やファイル転送などの比較的遅延には耐えられるが高いスループットが要求される通信がある。
【０００６】
一方、上述したようなネットワークを含む機械制御装置では、システム構成の柔軟性、拡張性および構築容易性などの観点から、スイッチのような集約分配装置を経路に含む汎用ネットワーク（たとえば、イーサネット（登録商標））の利用が望まれている。
【０００７】
しかし、スイッチでは、同一の出力端へ転送される複数の入力が出力端のスループットを超えると、スイッチ内の通信キューが成長してしまう。このため、経路途中にスイッチを含むネットワークでは、通信キューの成長により、通信遅延の増大、さらには、パケット喪失を招く恐れがあり、実時間通信を適切に実行することが難しい。
【０００８】
従来においては、実時間通信の周期性を利用して、実時間通信と非実時間通信との実施期間を時間的に区別する技術がある。具体的には、端末装置間を中継する中継装置は、アイソデータパケットを中継する際に、複数のアイソデータパケットが競合する場合、複数のアイソデータパケットをまとめて連続して出力することで、非アイソデータパケットの出力が抑制される期間を短縮する。
【０００９】
また、音声や動画像などのメディアデータを確実に伝送するための技術がある。具体的には、データ転送方法は、ネットワーク内の情報送信装置間でデータの転送を実行するために必要となる資源（たとえば、ネットワーク帯域）を事前に予約し、予約した資源を利用してパケットのルーティング処理を行う。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−２７９８５２号公報
【特許文献２】特開２００１−２６８１０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来技術では、複数のスイッチを介して端末装置間を接続するネットワークにおいて、実時間通信と非実時間通信が混在する環境下では、スイッチ間をつなぐ経路上の非実時間通信の流量を制御することが難しい。このため、スイッチ間をつなぐ経路上での通信衝突を排除できず、実時間通信の実時間性を保証することが困難であるという問題がある。
【００１２】
一方で、複数のスイッチを介して端末装置間を接続するシステム構成を採用しない場合、システムに接続可能な端末装置の最大数が制限され、システム構成の柔軟性や拡張性が低下するという問題がある。
【００１３】
なお、上述した従来技術において、実時間通信と非実時間通信の実施期間を時間的に区別して、実時間通信が行われている期間は、非実時間通信を止めて実時間通信との衝突を避けることも考えられる。しかしながら、実時間通信中に全非実時間通信を止めてしまうとネットワーク全体のスループットが低下するという問題が想定される。
【００１４】
本発明は、上述した従来技術による問題点を解消するため、第１および第２の通信が混在する局所網において、第１および第２の通信の衝突を回避することができるノード、通信プログラムおよび通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するため、開示のノードは、第１のノード及び第２のノードを備える第１のノード群と、第３のノード及び第４のノードを備える第２のノード群との間で、ネットワークを介して第１の通信および第２の通信を実行する該第１のノードであって、前記第２のノードと前記第４のノードとの間で行われる第２の通信に係るデータを前記第２のノードから受信し、前記第１のノードと前記第３のノードとの間に、前記ネットワークを介する通信経路を設定し、前記ネットワークの伝送能力に基づいて、前記受信したデータから送信対象として順次決定されるデータを送信するために周期的に実行される送信処理の開始時点から現時点までに順次決定された前記送信対象のデータの送信にかかる所要時間を算出し、前記現時点から前記所要時間が経過した時点が、前記第２のノードと前記第４のノードとの間で周期的に実行される第１の通信の開始時点と一致するか否かを判定し、判定された判定結果に基づいて、前記受信したデータから前記送信対象のデータを決定することを要件とする。
【発明の効果】
【００１６】
本ノード、通信プログラムおよび通信方法によれば、第１および第２の通信が混在する局所網において、第１および第２の通信の衝突を回避することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】本通信手法の一実施例を示す説明図である。
【図２】送信対象となるデータの決定例の概要を示す説明図である。
【図３】ネットワークシステムのシステム構成図（その１）である。
【図４】ノードのハードウェア構成の一例を示すブロック図である。
【図５】アドレステーブルの記憶内容の一例を示す説明図である。
【図６】グループ識別テーブルの記憶内容の一例を示す説明図である。
【図７】中継ノードの機能的構成を示すブロック図である。
【図８】非実時間データのデータ構造の一例を示す説明図である。
【図９】宛先／転送先対応テーブルの具体例を示す説明図（その１）である。
【図１０】キュー対応テーブルの記憶内容の一例を示す説明図である。
【図１１】割当流量／送信済データ量対応テーブルの記憶内容の一例を示す説明図である。
【図１２】実時間通信の周期開始時点との一致判定例を示す説明図である。
【図１３】実時間通信割当流量テーブルの記憶内容の一例を示す説明図（その１）である。
【図１４】送信可能宛先リストの記憶内容の一例を示す説明図（その１）である。
【図１５】グループノードの機能的構成を示すブロック図である。
【図１６】宛先／転送先対応テーブルの具体例を示す説明図（その２）である。
【図１７】実時間通信割当流量テーブルの記憶内容の一例を示す説明図（その２）である。
【図１８】送信可能宛先リストの記憶内容の一例を示す説明図（その２）である。
【図１９】中継ノードの通信処理手順の一例を示すフローチャートである。
【図２０】ステップＳ１９１３の周期開始時点修正処理の具体的処理手順の一例を示すフローチャートである。
【図２１】ステップＳ１９１４の転送制御処理の具体的処理手順の一例を示すフローチャート（その１）である。
【図２２】ステップＳ１９１４の転送制御処理の具体的処理手順の一例を示すフローチャート（その２）である。
【図２３】グループノードの通信処理手順の一例を示すフローチャートである。
【図２４】ステップＳ２３０８の送信制御処理の具体的処理手順の一例を示すフローチャート（その１）である。
【図２５】ステップＳ２２０８の送信制御処理の具体的処理手順の一例を示すフローチャート（その２）である。
【図２６】実時間通信の流量割当要求処理手順の一例を示すフローチャートである。
【図２７】実時間通信の流量割当応答処理手順の一例を示すフローチャート（その１）である。
【図２８】実時間通信の流量割当応答処理手順の一例を示すフローチャート（その２）である。
【図２９】ネットワークシステムのシステム構成図（その２）である。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照して、この発明にかかるノード、通信プログラムおよび通信方法の好適な実施の形態を詳細に説明する。
【００１９】
（本通信手法の一実施例）
まず、実施の形態にかかる本通信手法の一実施例について説明する。本通信手法では、第１および第２の通信が混在する局所網において、第１の通信と第２の通信とが衝突しないようにノード間の通信を制御する。
【００２０】
ここで、第１の通信は、局所網に含まれるノード群のいずれかのノード間で周期的に実行される通信である。たとえば、第１の通信は、機械制御装置のフィードバック制御のための実時間通信や、音声や動画像などを遅滞なく転送するためのアイソクロナス転送などである。本明細書においては、ある時間間隔でデータの送受信が完了することを保証するという観点からアイソクロナス転送についても実時間通信として扱う。
【００２１】
また、第２の通信は、局所網に含まれるノード群のいずれかのノード間で不定期に実行される通信である。たとえば、第２の通信は、アプリケーションの修正プログラムの配信やファイル転送などの比較的遅延には耐えられるが高いスループットが要求される非実時間通信である。
【００２２】
図１は、本通信手法の一実施例を示す説明図である。図１において、局所網１００は、ノード群Ｎ１〜Ｎ６とスイッチＳＷ１，ＳＷ２とを含む構成である。
【００２３】
（１）個々のスイッチＳＷ１，ＳＷ２に直接接続されているノード群がグループ化される。ここでは、スイッチＳＷ１に直接接続されているノード群Ｎ１〜Ｎ３によってグループＡが形成され、スイッチＳＷ２に直接接続されているノード群Ｎ４〜Ｎ６によってグループＢが形成されている。
【００２４】
（２）グループＡ，Ｂごとに、異なるグループＡ，Ｂに属するノード間の第２の通信を中継するための中継ノードが設置される。ここでは、グループＡの中継ノードとしてノードＮ１が設置され、グループＢの中継ノードとしてノードＮ４が設置されている。以下、中継ノードＮ１，Ｎ４のうちグループＡの中継ノードＮ１に着目して本通信手法の一実施例について説明する。
【００２５】
（３）中継ノードＮ１は、仮想ネットワーク技術を用いて、中継ノードＮ１，Ｎ４間をつなぐ仮想的なリンク（以下、「仮想リンクＶＬ」という）を設定する。仮想リンクＶＬは、異なるグループＡ，Ｂに属するノード間（たとえば、ノードＮ２，Ｎ５間）の第２の通信を中継するために使用される。
【００２６】
具体的には、たとえば、中継ノードＮ１は、グループＡのノードＮ２から、グループＢのノードＮ５に対する第２の通信に関するデータを受信し、仮想リンクＶＬを介して中継ノードＮ４に送信する。中継ノードＮ１から中継ノードＮ４に送信されたデータは、中継ノードＮ４からノードＮ５に送信される。
【００２７】
ここで、中継ノードＮ１は、受信された第２の通信に関するデータ群を、下記（６）において送信対象として順次決定して中継ノードＮ１のバッファに格納する。その結果、中継ノードＮ１は、送信タスクを起動すると、バッファ内のデータを格納順に局所網１００に送出する。
【００２８】
（４）中継ノードＮ１は、局所網１００の伝送能力に基づいて、周期的に実行される送信タスクの開始時点から現時点までに送信対象として順次決定したデータ列の送信にかかる所要時間ｔを算出する。すなわち、中継ノードＮ１は、現時点でバッファに格納されているデータ列を、局所網１００に送出するのにかかる時間を推定する。
【００２９】
（５）中継ノードＮ１は、現時点から所要時間ｔが経過した時点が、複数のノード群Ｎ１〜Ｎ６のいずれかのノード間（たとえば、ノードＮ２，Ｎ５間）で周期的に実行される第１の通信の開始時点と一致するか否かを判定する。ここで、全ノードＮ１〜Ｎ６は、一定の時間間隔で同期を取っている。
【００３０】
（６）中継ノードＮ１は、判定された判定結果に基づいて、受信された第２の通信に関するデータ群の中から送信対象となるデータを決定する。なお、送信対象となるデータの決定例については、図２を用いて後述する。
【００３１】
（７）中継ノードＮ１は、送信対象として順次決定されたデータを、仮想リンクＶＬを介して中継ノードＮ４に送信する。具体的には、中継ノードＮ１は、送信タスクを起動して、バッファ内のデータ列を格納順に読み出して局所網１００に送出する。
【００３２】
図２は、送信対象となるデータの決定例の概要を示す説明図である。ここでは、中継ノードＮ１における送信対象となるデータの決定例について説明する。図２中、データＤ１〜Ｄ１２は、中継ノードＮ１において受信された第２の通信に関するデータ群である。また、ノードＮ１〜Ｎ６のいずれかのノード間で実行される第１の通信の通信元として、グループＢ内のノードＮ５を例に挙げて説明する。
【００３３】
図２において、データ列２１０は、ノードＮ５のバッファに格納されているデータ列Ｄａ〜Ｄｊを表している。これらデータ列Ｄａ〜Ｄｊは、ノードＮ５の送信タスクが起動すると、格納順（データＤａ→データＤｂ→…）にバッファから読み出されて局所網１００に送出される。その結果、第１の通信に関するデータＤａ，Ｄｃ，Ｄｅ，Ｄｇ，Ｄｉが一定間隔で局所網１００に送出されることになる。
【００３４】
本通信手法では、上記（６）において、第１の通信の開始時点と一致する場合、データ群Ｄ１〜Ｄ１２の中から第１の通信の経路と衝突しない経路のデータ（たとえば、データＤ１）を送信対象に決定する（データ列２２０）。一方、上記（６）において、第１の通信の開始時点と一致しない場合、データ群の中から任意のデータ（たとえば、データＤ２）を送信対象に決定する（データ列２２０）。
【００３５】
このように、本通信手法では、第１の通信の経路と衝突しない経路のデータを送信対象として順次決定することにより、第１および第２の通信の衝突を回避する。この際、第１の通信と衝突しないようにデータ列１２０を事前に整形してバッファに格納しておくことで、第１の通信の開始時点に合わせて、送信タイミングを制御する必要がない。
【００３６】
（ネットワークシステム３００のシステム構成）
つぎに、実施の形態にかかるネットワークシステム３００のシステム構成について説明する。図３は、ネットワークシステムのシステム構成図（その１）である。ネットワークシステム３００において、ノードＮ１〜Ｎ１２とスイッチＳＷ１〜ＳＷ５とが、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク３１０を介して通信可能に接続されている。
【００３７】
ここで、ノードＮ１〜Ｎ１２は、通信機能（実時間通信、非実時間通信）を有する通信装置であり、たとえば、自動車やロボットなどに搭載されるＥＣＵ（Ｅｌｅｃｔｒｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）、センサ、アクチュエータなどである。
【００３８】
スイッチＳＷ１〜ＳＷ５は、ノード間のデータを中継する機能を有する中継装置である。スイッチＳＷ１〜ＳＷ５は、データを受信すると、たとえば、宛先として指定されている物理アドレスにしたがって、該データをノードＮ１〜Ｎ１２のいずれかのノードに転送する。
【００３９】
ネットワークシステム３００では、個々のスイッチＳＷ１〜ＳＷ４に直接接続されているノード群によりグループＧ１〜Ｇ４が形成されている。具体的には、スイッチＳＷ１に直接接続されているノード群Ｎ１〜Ｎ３によりグループＧ１が形成され、スイッチＳＷ２に直接接続されているノード群Ｎ４〜Ｎ６によりグループＧ２が形成されている。また、スイッチＳＷ３に直接接続されているノード群Ｎ７〜Ｎ９によりグループＧ３が形成され、スイッチＳＷ４に直接接続されているノード群Ｎ１０〜Ｎ１２によりグループＧ４が形成されている。
【００４０】
さらに、ネットワークシステム３００では、グループＧ１〜Ｇ４ごとに、グループ間の非実時間通信を中継する中継ノードＮ１，Ｎ４，Ｎ７およびＮ１０が設けられている。また、ネットワークシステム３００では、各中継ノード間をつなぐ仮想リンクＶＬがそれぞれ設定されている。
【００４１】
なお、以下の説明において「仮想リンクＶＬｘ−ｙ」は、グループＧｘの中継ノードからグループＧｙの中継ノードへの仮想リンクを表している。ただし、「仮想リンクＶＬｘ−ｙ」と「仮想リンクＶＬｙ−ｘ」は同じ仮想リンクを表している。
【００４２】
具体的には、グループＧ１の中継ノードＮ１とグループＧ２〜Ｇ４の中継ノードＮ４，Ｎ７，Ｎ１０との間に仮想リンクＶＬ１−２，ＶＬ１−３，ＶＬ１−４が設定されている。グループＧ２の中継ノードＮ４とグループＧ３，Ｇ４の中継ノードＮ７，Ｎ１０との間に仮想リンクＶＬ２−３，ＶＬ２−４が設定されている。グループＧ３の中継ノードＮ７とグループＧ４の中継ノードＮ１０との間に仮想リンクＶＬ３−４が設定されている。
【００４３】
（ノードＮ１〜Ｎ１２のハードウェア構成）
つぎに、図３に示したノードＮ１〜Ｎ１２のハードウェア構成について説明する。図４は、ノードのハードウェア構成の一例を示すブロック図である。図４において、ノードＮ１〜Ｎ１２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０４と、を備えている。また、各構成部はバス４００によってそれぞれ接続されている。
【００４４】
ここで、ＣＰＵ４０１は、各ノードＮ１〜Ｎ１２の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。Ｉ／Ｆ４０４は、通信回線を通じてＬＡＮなどのネットワーク３１０に接続され、このネットワーク３１０を介して他の装置に接続される。そして、Ｉ／Ｆ４０４は、ネットワーク３１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。
【００４５】
また、ノードＮ１〜Ｎ１２は、上記構成部のほか、磁気ディスクドライブ、磁気ディスク、光ディスクドライブおよび光ディスクなどを備えていてもよい。ここで、磁気ディスクドライブは、ＣＰＵ４０１の制御にしたがって磁気ディスクに対するデータのリード／ライトを制御する。
【００４６】
磁気ディスクは、磁気ディスクドライブの制御で書き込まれたデータを記憶する。光ディスクドライブは、ＣＰＵ４０１の制御にしたがって光ディスクに対するデータのリード／ライトを制御する。光ディスクは、光ディスクドライブの制御で書き込まれたデータを記憶したり、光ディスクに記憶されたデータをコンピュータに読み取らせたりする。
【００４７】
（各種テーブルの記憶内容）
つぎに、ノードＮ１〜Ｎ１２が用いる各種テーブル５００，６００の記憶内容について説明する。各種テーブル５００，６００は、図４に示したＲＯＭ４０２、ＲＡＭ４０３などの記憶装置に記憶されている。以下の説明では、特に指定する場合を除いて「ノードＮ１〜Ｎ１２」を単に「ノードＮ」と表記する。
【００４８】
＜アドレステーブルの記憶内容＞
図５は、アドレステーブルの記憶内容の一例を示す説明図である。図５において、アドレステーブル５００は、ノードＮ１〜Ｎ１２ごとに、ノード名、システムアドレス、グループアドレス、物理アドレスおよび中継ノード情報を有する。
【００４９】
ノード名とは、本明細書において説明上使用するノードＮ１〜Ｎ１２の名称である。システムアドレスとは、ネットワークシステム３００全体で一意に決まる各ノードＮ１〜Ｎ１２のアドレスである。物理アドレスとは、ネットワーク３１０に接続されるＩ／Ｆ４０４固有のアドレスである。物理アドレスは、たとえば、イーサネット（登録商標）のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  ａｄｄｒｅｓｓ）アドレスである。
【００５０】
グループアドレスとは、ネットワークシステム３００内の各グループＧ１〜Ｇ４で一意に決まる各ノードＮ１〜Ｎ１２のアドレスである。ここでは、グループアドレスのドット「．」で区切られた４組の数字のうち１〜３組目の数字（たとえば、１７２．ｘｘｘ．１．１）はグループＧ１〜Ｇ４を識別するグループ識別ＩＤである。また、４組目の数字（たとえば、１）はグループ内のノードＮを識別するノード識別ＩＤである。
【００５１】
中継ノード情報とは、中継ノードとして機能するノードＮを識別する情報である。ここでは、中継ノードとして機能するノードＮの中継ノード情報に「Ｙｅｓ」、グループノードとして機能するノードＮの中継ノード情報に「Ｎｏ」が設定されている。なお、中継ノードは、予め設定された情報または選出アルゴリズムにより、各グループＧ１〜Ｇ４から必ず一つ（以上）決定される。
【００５２】
＜グループ識別テーブルの記憶内容＞
図６は、グループ識別テーブルの記憶内容の一例を示す説明図である。図６において、グループ識別テーブル６００は、グループＧ１〜Ｇ４ごとに、グループ名とグループ識別ＩＤとを対応付けて記憶している。
【００５３】
グループ名とは、本明細書において説明上使用するグループＧ１〜Ｇ４の名称である。グループ識別ＩＤとは、各グループＧ１〜Ｇ４を識別する識別子である。グループ識別ＩＤは、たとえば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスのネットワーク部である。ここでは、グループアドレスの上位部（たとえば、１７２．ｘｘｘ．１）がグループ識別ＩＤに相当する。
【００５４】
なお、以下の説明において、ネットワーク３１０内のノードＮ１〜Ｎ１２のうち、非実時間通信を中継するノードＮを「中継ノードＪＮ」と表記し、中継ノードＪＮを除く残余のノードＮを「グループノードＧＮ」と表記する。ここで、中継ノードＪＮの機能的構成について説明する。
【００５５】
（中継ノードＪＮの機能的構成）
図７は、中継ノードの機能的構成を示すブロック図である。図７において、中継ノードＪＮは、受信部７０１と、設定部７０２と、関連付け部７０３と、送信部７０４と、検出部７０５と、割当部７０６と、第１の算出部７０７と、判定部７０８と、決定部７０９と、第２の算出部７１０と、抽出部７１１と、判断部７１２と、を含む構成である。
【００５６】
各機能部（受信部７０１〜判断部７１２）は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０４により、その機能を実現する。なお、各機能部（受信部７０１〜判断部７１２）の処理結果は、特に指定する場合を除いて、ＲＡＭ４０３などの記憶装置に記憶される。
【００５７】
以下の説明において、中継ノードＪＮの各機能部（受信部７０１〜判断部７１２）の具体例を説明する場合、ネットワークシステム３００内のノードＮ１を中継ノードＪＮとして想定する。また、ネットワークシステム３００において混在するノードＮ間の第１および第２の通信として、ノードＮ間の実時間通信および非実時間通信を例に挙げて説明する。
【００５８】
まず、受信部７０１は、各種データを受信する。各種データは、たとえば、非実時間通信に関するデータ（以下、「非実時間データ」という）、同期パケット、実時間通信の流量割当要求および流量割当応答などである。なお、同期パケット、流量割当要求および流量割当応答についての詳細な説明は後述する。
【００５９】
具体的には、たとえば、受信部７０１が、複数のノードＮ群のうち一のノードＮ群に含まれるグループノードＧＮから他のノードＮ群に含まれるグループノードＧＮに対する非実時間データを受信する。ここで、ノードＮ群とは、たとえば、図３に示した個々のスイッチＳＷ１〜ＳＷ４に直接接続されたノードＮの集合である。また、一のノードＮ群とは、自ノードＮを含むノードＮ群である。ここで、非実時間データのデータ構造について説明する。
【００６０】
図８は、非実時間データのデータ構造の一例を示す説明図である。図８において、非実時間８００は、ヘッダ領域とデータ領域を有する。ヘッダ領域には、物理宛先アドレス、論理宛先アドレスおよびデータ量が設定される。データ領域には、各ノードＮのアプリケーションがやり取りするデータが書き込まれる。
【００６１】
物理宛先アドレスとは、非実時間データの直接の送信先を示す物理アドレスである。論理宛先アドレスとは、非実時間データの最終的な宛先を示す論理アドレスである。論理宛先アドレスは、たとえば、各グループＧ１〜Ｇ４内でのみ通用するグループアドレスである。なお、物理宛先アドレスおよび論理宛先アドレスには、非実時間データの送信元を示す物理アドレスおよび論理アドレスが含まれている。データ量とは、非実時間データのデータ量である。
【００６２】
図７の説明に戻り、設定部７０２は、他のノードＮ群から選ばれた他ノードＮとの間に経路を設定する。ここで、他ノードＮとは、他のノードＮ群から選ばれた他の中継ノードＪＮである。経路とは、ネットワーク３１０上に構築される仮想的なネットワークの仮想リンクＶＬである。
【００６３】
具体的には、たとえば、まず、設定部７０２が、図５に示したアドレステーブル５００の中継ノード情報を参照して、他の中継ノードＮ４，Ｎ７，Ｎ１０を特定する。そして、設定部７０２が、自ノードＮと他の中継ノードＮ４，Ｎ７，Ｎ１０とをつなぐ仮想リンクＶＬ１−２〜ＶＬ１−４（図３参照）を設定する。
【００６４】
仮想リンクＶＬ（経路）は、異なるグループＧに属するノードＮ間の非実時間データをまとめて転送するために使用される。仮想リンクＶＬは、オーバーレイネットワーク等の既存の仮想ネットワーク技術を利用して設定される。ただし、仮想リンクＶＬの具体的な設定手法については、既存技術のためここでは説明を省略する。また、自ノードＮと他の中継ノードＪＮとの間に設定された仮想リンクＶＬは、たとえば、図９に示す宛先／転送先対応テーブル９００を用いて管理される。
【００６５】
図９は、宛先／転送先対応テーブルの具体例を示す説明図（その１）である。図９において、宛先／転送先対応テーブル９００には、宛先アドレスと転送先とが対応付けて記憶されている。ここで、宛先アドレスとは、非実時間データの最終的な宛先として指定される論理宛先アドレスである。ここでは、宛先アドレスとして、ノードＮのグループアドレスが設定されている。
【００６６】
転送先とは、非実時間データの転送先である。ここでは、転送先として、自グループＧ内のグループノードＧＮの物理アドレス、または、他グループＧの中継ノードＪＮとの間の仮想リンクＶＬ（の識別子）が設定されている。なお、宛先／転送先対応テーブル９００は、たとえば、以下の手順で作成されて、ＲＡＭ４０３などの記憶装置に記憶される。
【００６７】
まず、設定部７０２が、アドレステーブル５００を参照して、各ノードＮ１〜Ｎ１２のうちグループノードＧＮのグループアドレスを宛先／転送先対応テーブル９００の宛先アドレスに設定する。次に、設定部７０２が、図６に示したグループ識別テーブル６００を参照して、各グループノードＧＮの宛先アドレスからグループＧを特定する。
【００６８】
ここで、特定されたグループＧが自グループＧの場合、設定部７０２が、アドレステーブル５００を参照して、宛先アドレスに対応する物理アドレスを転送先に設定する。一方、特定されたグループＧが他グループＧの場合、設定部７０２が、アドレステーブル５００を参照して、そのグループＧの中継ノードＪＮを特定する。そして、設定部７０２が、特定された中継ノードＮとの間の仮想リンクＶＬを転送先に設定する。
【００６９】
図７の説明に戻り、関連付け部７０３は、自グループＧのグループノードＧＮから受信された非実時間データと、設定された仮想リンクＶＬとを関連付ける。具体的には、たとえば、関連付け部７０３が、図１０に示すキュー対応テーブル１０００を参照して、受信された非実時間データを対応するデータキューに入れる。ここで、キュー対応テーブル１０００の記憶内容について説明する。
【００７０】
図１０は、キュー対応テーブルの記憶内容の一例を示す説明図である。図１０において、キュー対応テーブル１０００には、転送先とキューＩＤとが対応付けて記憶されている。ここで、転送先とは、非実時間データの転送先である。キューＩＤとは、非実時間データを保持するデータキューを識別する識別子である。
【００７１】
たとえば、受信された非実時間データの宛先アドレス（論理宛先アドレス）が「１７２．ｘｘｘ．３．３」の場合、転送先は「ＶＬ１−３」となる（宛先／転送先対応テーブル９００参照）。したがって、受信された非実時間データは、データキューＱ４に入る（キュー対応テーブル１０００参照）。
【００７２】
図７の説明に戻り、また、受信部７０１は、仮想リンクＶＬを介して、非実時間データを他の中継ノードＪＮから受信する。具体的には、たとえば、受信部７０１が、仮想リンクＶＬ１−１を介して、グループＧ２の中継ノードＮ４から非実時間データを受信する。
【００７３】
また、関連付け部７０３は、他の中継ノードＪＮから受信された非実時間データと、仮想リンクＶＬとを関連付ける。具体的には、たとえば、関連付け部７０３が、キュー対応テーブル１０００を参照して、受信された非実時間データを対応するデータキューに入れる。
【００７４】
たとえば、非実時間データの宛先アドレス（論理宛先アドレス）が「１７２．ｘｘｘ．１．２」の場合、転送先は「０００００００００２」となる（宛先／転送先対応テーブル９００参照）。したがって、非実時間データは、データキューＱ１に入る（キュー対応テーブル１０００参照）。
【００７５】
送信部７０４は、受信されたデータ群の中から送信対象として順次決定される非実時間データを、仮想リンクＶＬを介して、他の中継ノードＪＮに送信する。また、送信部７０４は、受信されたデータ群の中から送信対象として順次決定される非実時間データを、自グループＧのグループノードＧＮに送信する。
【００７６】
ここで、データ群は、たとえば、データキューＱ１〜Ｑ５に保持されている非実時間データの集合である。また、送信対象となる非実時間データは、後述する決定部７０９によって順次決定されてバッファに格納されている非実時間データである。バッファは、たとえば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）の送信バッファである。
【００７７】
送信部７０４の非実時間データの送信処理は、一定の時間間隔（たとえば、５［ｍｓ（ミリ秒）］）で周期的に実行される。具体的には、一定の時間間隔で送信タスクが起動され、バッファに格納されている非実時間データが格納順に読み出されてネットワーク３１０に送出される。
【００７８】
すなわち、送信部７０４は、「自グループＧのグループノードＧＮ」から非実時間データを受信し、「他の中継ノードＪＮ」に転送する。また、送信部７０４は、「他の中継ノードＪＮ」から非実時間データを受信し、「自グループＧのグループノードＧＮ」に転送する。そこで、以下の説明では、非実時間データの送信処理を「非実時間データの転送処理」と表記する。
【００７９】
検出部７０５は、ネットワーク３１０内のノードＮ１〜Ｎ１２間で時刻同期を取るための周期開始時点を検出する。具体的には、たとえば、検出部７０５が、自ノードＮが起動してからの経過時間を計時し、予め設定された同期間隔が経過した時刻を周期開始時点として検出する。以下、時刻同期を取るための周期を「周期Ｃ１」と表記する。
【００８０】
送信部７０４は、周期Ｃ１の周期開始時点が検出された結果、同期パケットを他の中継ノードＪＮに送信する。具体的には、たとえば、送信部７０４が、時刻同期を取るための識別子が付与された同期パケットを他の中継ノードＮ４，Ｎ７，Ｎ１０に送信する。これにより、ネットワークシステム３００内の中継ノードＪＮ間で同期を取ることができる。
【００８１】
また、送信部７０４は、同期パケットを自グループＧのグループノードＧＮに送信する。これにより、グループＧ内の全ノードＮで同期を取ることができる。なお、検出部７０５は、周期Ｃ１の周期開始時点の検出前に、他の中継ノードＪＮから同期パケットを受信した場合、同期パケットの受信時刻を周期Ｃ１の周期開始時点として検出する。
【００８２】
なお、非実時間データの転送処理は、周期Ｃ１の周期開始時点を基点として周期的に実行される。ただし、非実時間データの転送処理が実行される時間間隔は、周期Ｃ１の同期間隔以下である。以下、非実時間データの転送処理の周期を「周期Ｃ２」と表記する。
【００８３】
割当部７０６は、ネットワーク３１０の伝送能力に基づいて、仮想リンクＶＬに非実時間通信の流量を割り当てる。ここで、ネットワーク３１０の伝送能力とは、たとえば、ネットワークシステム３００の物理リンクのキャパシティ（単位時間当たりの通信速度）である。流量とは、単位時間当たりに送信可能なデータ量である。
【００８４】
具体的には、たとえば、割当部７０６が、物理リンクのキャパシティを仮想リンクＶＬ数で除算して、各仮想リンクＶＬに割り当てる流量を算出してもよい。一例として、ネットワークシステム３００の物理リンクのキャパシティを１２［Ｍｂｐｓ］とする。この場合、各仮想リンクＶＬ１−１〜ＶＬ１−３に割り当てる流量は４（＝１２／３）［Ｍｂｐｓ］となる。
【００８５】
これにより、物理リンクのキャパシティを仮想リンクＶＬ１−１〜ＶＬ１−３に均等に割り当てることができる。ただし、ノードＮ間の実時間通信のために流量が割り当てられている場合、割当可能な総流量は、物理リンクのキャパシティから実時間通信の割当流量を引いた値となる。
【００８６】
なお、流量割当結果は、たとえば、図１１に示す割当流量／送信済データ量対応テーブル１１００に記憶される。また、仮想リンクＶＬの割当流量は、送信部７０４により、他の中継ノードＪＮに送信される。また、受信部７０１により、他の中継ノードＪＮから仮想リンクＶＬの割当流量を受信した場合、割当流量／送信済データ量対応テーブル１１００に記憶されて、記憶内容が更新される。
【００８７】
また、割当部７０６は、ネットワーク３１０の伝送能力に基づいて、自グループＧのグループノードＧＮに非実時間通信の流量を割り当てる。具体的には、たとえば、割当部７０６が、物理リンクのキャパシティを、グループＧ１のグループノードＧＮ数で除算して、各グループノードＧＮに割り当てる流量を算出してもよい。なお、流量割当結果は、たとえば、図１１に示す割当流量／送信済データ量対応テーブル１１００に記憶される。
【００８８】
図１１は、割当流量／送信済データ量対応テーブルの記憶内容の一例を示す説明図である。図１１において、割当流量／送信済データ量対応テーブル１１００は、転送先ごとの割当流量および送信済データ量を有している。
【００８９】
ここで、転送先とは、非実時間データの転送先である。割当流量とは、単位時間当たり（ここでは、周期Ｃ２）に送信可能な非実時間データの流量［ｂｙｔｅ／周期Ｃ２］である。送信済データ量とは、転送先に送信されたデータのデータ量［ｂｙｔｅ］である。ここでは、後述する決定部７０９によって送信対象として順次決定された非実時間データのデータ量が累積して設定される。
【００９０】
なお、上記割当部７０６は、自ノードＮと他の中継ノードＪＮ（または、グループノードＧＮ）との間の通信状況に応じて、各仮想リンクＶＬ（または、各グループノードＧＮ）に流量を割り当てることにしてもよい。これにより、動的に変化する通信状況に応じて、割当流量を制御することができる。ただし、通信状況に応じて割当流量を制御する手法は既存技術のため詳細な説明を省略する。
【００９１】
第１の算出部７０７は、ネットワーク３１０の伝送能力に基づいて、非実時間データの転送処理の周期開始時点から現時点までに送信対象として順次決定されたデータ列の送信にかかる所要時間ｔを算出する。ここで、データ列とは、バッファ内に格納されている非実時間データの集合である。また、所要時間ｔとは、たとえば、データ列のネットワーク３１０への送出にかかる時間である。
【００９２】
具体的には、たとえば、第１の算出部７０７が、下記式（１）を用いて所要時間ｔを算出することができる。ただし、ｔは、データ列の送信にかかる所要時間［ｓ（秒）］である。Ｒは、ネットワーク３１０の単位時間当たりの通信速度［ｂｐｓ（ビット毎秒）］である。ｄは、データ列のデータ量［ｂ（ビット）］である。
【００９３】
ｔ＝ｄ／Ｒ      ・・・（１）
【００９４】
ここで、ネットワーク３１０の通信速度Ｒを１［Ｇ（ギガ）ｂｐｓ］、データ列のデータ量ｄを１００［Ｋ（キロ）ｂ］とする。この場合、データ列の送信にかかる所要時間ｔは『ｔ＝１００［Ｋｂ］／１［Ｇｂｐｓ］＝１００［μｓ（マイクロ秒）］』である。
【００９５】
判定部７０８は、現時点から、算出された所要時間ｔが経過した時点が、複数のノード群のいずれかのノードＮ間で周期的に実行される実時間通信の周期開始時点と一致するか否かを判定する。ここで、ノードＮ間の実時間通信は、転送処理よりも短い時間間隔（たとえば、１２５［μｓ］）で、周期Ｃ１（または周期Ｃ２）の周期開始時点を基点として周期的に実行される。以下、実時間通信の周期を「周期Ｃ３」と表記する。
【００９６】
具体的には、たとえば、判定部７０８が、周期Ｃ１（または周期Ｃ２）の周期開始時点から現時点までの経過時間Ｔ１に所要時間ｔを足し合わせた経過時間Ｔ２が、「０」または「周期Ｃ３の定数倍」か否かを判定する。
【００９７】
なお、「Ｔ２＝０」は、「Ｔ１＝０」かつ「ｔ＝０」、すなわち、現時点が周期Ｃ２の周期開始時点でかつ送信対象となるデータが未決定の場合である。すなわち、判定部７０８は、現時点から仮に所要時間ｔが経過した時点が、実時間通信の周期開始時点と一致するか否かを判定する。
【００９８】
ここで、経過時間Ｔ２が「０」または「周期Ｃ３の定数倍」の場合、判定部７０８が、実時間通信の周期開始時点と一致すると判定する。一方、経過時間Ｔ２が「０」または「周期Ｔ３の定数倍」ではない場合、判定部７０８が、実時間通信の周期開始時点と一致しないと判定する。
【００９９】
図１２は、実時間通信の周期開始時点との一致判定例を示す説明図である。図１２において、時間軸ＳＴ１上の各点は、ノードＮ間で周期的に実行される実時間通信の周期開始時点を表している。また、時間軸ＳＴ２，ＳＴ３上の点ａ１，ｂ１は周期Ｃ２の周期開始時点、点ａ２，ｂ２は現時点（経過時間Ｔ１）、点ａ３，ｂ３は現時点から所要時間ｔが経過した時点（経過時間Ｔ２）を表している。
【０１００】
図１２中（１）において、現時点ａ２から所要時間ｔが経過した時点ａ３が実時間通信の周期開始時点と一致している。この場合、判定部７０８は、現時点から所要時間ｔが経過した時点が、実時間通信の周期開始時点と一致すると判定する。
【０１０１】
図１２中（２）において、現時点ｂ２から所要時間ｔが経過した時点ｂ３が実時間通信の周期開始時点と一致していない。この場合、判定部７０８は、現時点から所要時間ｔが経過した時点が、実時間通信の周期開始時点と一致していないと判定する。
【０１０２】
図７の説明に戻り、決定部７０９は、判定された判定結果に基づいて、受信されたデータ群の中から送信対象となる非実時間データを決定する。ここで、データ群とは、グループノードＧＮまたは他の中継ノードＪＮから受信された非実時間データの集合である。
【０１０３】
以下、（ｉ）実時間通信の周期開始時点と一致すると判定された場合と、（ｉｉ）実時間通信の周期開始時点と一致しないと判定された場合と、の各々について、決定部７０９の具体的な処理内容の一例を説明する。
【０１０４】
まず、（ｉ）の場合、決定部７０９は、他の中継ノードＪＮとの間に設定された仮想リンクＶＬのうち、ノードＮ間の実時間通信の経路と衝突する経路を特定する。ここで、実時間通信の経路と衝突する経路とは、実時間通信の通信先となるノードＮが属するグループＧの中継ノードＪＮとの間に設定された仮想リンクＶＬである。なお、実時間通信の通信元および通信先となるノードＮは、たとえば、図１３に示す実時間通信割当流量テーブル１３００から特定することができる。
【０１０５】
図１３は、実時間通信割当流量テーブルの記憶内容の一例を示す説明図（その１）である。図１３において、実時間通信割当流量テーブル１３００は、割当ＩＤ、割当流量、送信元アドレスおよび宛先アドレスの項目を有し、各項目に情報を設定することで、実時間通信情報１３００−１〜１３００−４をレコードとして記憶している。
【０１０６】
ここで、割当ＩＤとは、ノードＮ間の実時間通信に割り当てられた割当流量を識別する識別子である。割当流量とは、ノードＮ間の実時間通信に割り当てられた流量［ｂｙｔｅ］である。送信元アドレスとは、実時間通信の通信元となるノードＮのアドレスである。ここでは、送信元アドレスとして、実時間通信の通信元となるノードＮのシステムアドレスおよびグループアドレスが表記されている。
【０１０７】
宛先アドレスとは、実時間通信の通信先となるノードＮのアドレスである。ここでは、宛先アドレスとして、実時間通信の通信先となるノードＮのシステムアドレスおよびグループアドレスが表記されている。なお、実時間通信割当流量テーブル１３００を作成するための具体的な処理内容については後述する。
【０１０８】
具体的には、たとえば、決定部７０９が、実時間通信割当流量テーブル１３００を参照して、実時間通信の通信先となるノードＮのグループアドレスを特定する。ここでは、ノードＮ２，Ｎ５，Ｎ８，Ｎ９のグループアドレス「１７２．ｘｘｘ．１．２」、「１７２．ｘｘｘ．２．２」、「１７２．ｘｘｘ．３．２」および「１７２．ｘｘｘ．３．３」が特定される。
【０１０９】
次に、決定部７０９が、宛先／転送先対応テーブル９００を参照して、特定されたグループアドレスから転送先を特定する。ここでは、転送先「０００００００００２（物理アドレス）」、「ＶＬ１−２」および「ＶＬ１−３」が特定される。ここで特定される転送先（経路）は、ノードＮ間の実時間通信と衝突する転送先（経路）である。
【０１１０】
すなわち、転送先「０００００００００２（物理アドレス）」、「ＶＬ１−２」および「ＶＬ１−３」は、ノードＮ間の実時間通信との衝突を回避するために、非実時間データの送信を抑制すべき転送先である。そこで、たとえば、図１４に示す送信可能宛先リスト１４００を用いて、転送先ごとの非実時間データの送信可否を管理する。
【０１１１】
図１４は、送信可能宛先リストの記憶内容の一例を示す説明図（その１）である。図１４において、送信可能宛先リスト１４００は、転送先ごとに、非実時間データを、送信可能か否かを示す情報（送信可否）を有している。
【０１１２】
ここでは、送信可否が「可」の場合、転送先に非実時間データを送信可能であることを示している。一方、送信可否が「否」の場合、転送先に非実時間データを送信不能であることを示している。なお、送信可否は、初期状態では「可」である。
【０１１３】
具体的には、たとえば、決定部７０９が、ノードＮ間の実時間通信と衝突する転送先の送信可否を「可」から「否」に変更する。ここでは、特定された転送先「０００００００００２（物理アドレス）」、「ＶＬ１−２」および「ＶＬ１−３」の送信可否が「可」から「否」に変更されている。
【０１１４】
このあと、第２の算出部７１０は、ノードＮ間の実時間通信に割り当てられている割当流量を累積して総割当流量を算出する。具体的には、たとえば、第２の算出部７１０が、実時間通信割当流量テーブル１３００を参照して、割当Ｒ１〜Ｒ４の割当流量を累積した総割当流量を算出する。ここでは、総割当流量は５８００［ｂｙｔｅ］となる。
【０１１５】
そして、抽出部７１１は、受信されたデータ群の中から、転送先の送信可否が「可」の非実時間データを抽出する。具体的には、たとえば、抽出部７１１が、送信可能宛先リスト１４００を参照して、送信可否が「可」の転送先を特定する。ここでは、転送先「０００００００００３（物理アドレス）」および「ＶＬ１−４」が特定される。
【０１１６】
次に、抽出部７１１が、キュー対応テーブル１０００を参照して、特定された転送先のデータキューを特定する。ここでは、転送先「０００００００００３（物理アドレス）」のデータキューＱ２および転送先「ＶＬ１−４」のデータキューＱ５が特定される。そして、抽出部７１１が、特定されたデータキュー（ここでは、データキューＱ２，Ｑ５）から非実時間データを抽出する。
【０１１７】
決定部７０９は、抽出された非実時間データを送信対象となる非実時間データに決定する。ここで、実時間通信の総割当流量よりデータ量が大きい非実時間データを送信対象とすると、次の周期Ｃ３の実時間通信と衝突する可能性がある。そこで、決定部７０９は、抽出された非実時間データのうち、データ量が、算出された総割当流量以下の非実時間データを送信対象となる非実時間データに決定する。
【０１１８】
ただし、単位時間当たりに送信可能な割当流量（図１１参照）を超える非実時間データを送信するとデータ喪失の可能性がある。このため、決定部７０９は、割当流量を超える転送先に対する非実時間データは送信対象に決定しない。
【０１１９】
また、送信対象となる非実時間データが存在しない場合、決定部７０９は、自ノードＮに直接接続されたスイッチＳＷ１において破棄される無効データを送信対象に決定する。無効データとしては、たとえば、ポーズ０［ｓ］のイーサネットフレームを用いることができる。
【０１２０】
この際、決定部７０９は、実時間通信の総割当流量分の無効データを送信対象に決定することにしてもよい。なお、送信対象となる非実時間データが存在しない場合とは、抽出対象となる非実時間データが存在しない、または、抽出された非実時間データのうち、データ量が総割当流量以下の非実時間データが存在しない場合である。
【０１２１】
また、決定部７０９は、総割当流量以下の非実時間データが複数存在する場合、複数の非実時間データの中から、データ量が最大の非実時間データを送信対象となる非実時間データに決定してもよい。これにより、非実時間データを効率的に送信することができる。
【０１２２】
次に、（ｉｉ）の場合、第２の算出部７１０は、現時点から所要時間ｔが経過した時点から、実時間通信の周期開始時点となるまでの残余の時間を算出する。具体的には、たとえば、まず、第２の算出部７１０が、周期Ｃ１（または周期Ｃ２）の周期開始時点から、現時点直後の実時間通信の周期開始時点までの経過時間Ｔ３を算出する。
【０１２３】
そして、第２の算出部７１０が、算出された経過時間Ｔ３から経過時間Ｔ２を引くことで、実時間通信の周期開始時点となるまでの残余の時間を算出することができる。なお、経過時間Ｔ２は、周期Ｃ１（または周期Ｃ２）の周期開始時点から現時点までの経過時間Ｔ１に所要時間ｔを足し合わせた経過時間である。
【０１２４】
また、第２の算出部７１０は、ネットワーク３１０の伝送能力に基づいて、残余の時間に送信可能なデータ量を算出する。具体的には、たとえば、第２の算出部７１０が、下記式（２）を用いて、残余の時間に送信可能なデータ量を算出することができる。ただし、Ｘは残余の時間に送信可能なデータ量［ｂ］、（Ｔ３−Ｔ２）は残余の時間［ｓ］、Ｒはネットワーク３１０の単位時間当たりの通信速度［ｂｐｓ］である。
【０１２５】
Ｘ＝（Ｔ３−Ｔ２）×Ｒ      ・・・（２）
【０１２６】
ここで、残余の時間（Ｔ３−Ｔ２）を２０［μｓ］とし、ネットワーク３１０の通信速度Ｒを１［Ｇｂｐｓ］とする。この場合、残余の時間（Ｔ３−Ｔ２）に送信可能なデータ量Ｘは、『Ｘ＝２０［μｓ］×１［Ｇｂｐｓ］＝２０［Ｍ（メガ）ｂ］』である。
【０１２７】
そして、抽出部７１１は、非実時間データ群の中から、残余の時間に送信可能なデータ量以下の非実時間データを抽出する。具体的には、たとえば、抽出部７１１が、データキューＱ１〜Ｑ５の中から、残余の時間に送信可能なデータ量以下の任意の非実時間データを抽出する。
【０１２８】
決定部７０９は、抽出された非実時間データを送信対象となるデータに決定する。この際、決定部７０９は、抽出された非実時間データが複数存在する場合、複数のデータの中から、データ量が最大の非実時間データを送信対象となる非実時間データに決定してもよい。
【０１２９】
なお、送信対象となる非実時間データが存在しない場合、決定部７０９は、自ノードＮに直接接続されたスイッチＳＷ１において破棄される無効データを送信対象に決定する。この際、決定部７０９は、残余の時間に送信可能なデータ量分の無効データを送信対象に決定することにしてもよい。
【０１３０】
また、送信対象として決定された非実時間データは、バッファに格納される。そして、バッファに格納された非実時間データは、送信部７０４の送信タスクが起動すると、格納順にネットワーク３１０に送出されることになる。
【０１３１】
このように、実時間通信と衝突する非実時間データの送信を抑制することにより、実時間通信と非実時間通信との衝突を避けることができる。なお、ネットワークシステム３００内で実行される実時間通信が複数存在する場合、各実時間通信の開始時点を考慮して、送信対象となる非実時間データを決定することになる。
【０１３２】
決定された決定結果は、図１１に示した割当流量／送信済データ量対応テーブル１１００に反映される。具体的には、割当流量／送信済データ量対応テーブル１１００のうち、送信対象として決定された非実時間データの転送先の送信済データ量が更新される。より具体的には、送信対象として決定された非実時間データのデータ量が、現在の送信済データ量に加算される。
【０１３３】
また、受信部７０１は、グループノードＧＮまたは他の中継ノードＪＮから実時間通信の流量割当要求を受信する。流量割当要求には、実時間通信の要求流量、通信元アドレスおよび通信先アドレスが含まれている。ここで、要求流量とは、ノードＮ間の実時間通信のために要求されている流量である。
【０１３４】
通信元アドレスとは、実時間通信に関するデータ（以下、「実時間データ」という）の送信元アドレスであり、たとえば、送信元のノードＮのシステムアドレスである。通信先アドレスとは、実時間データの宛先アドレスであり、たとえば、宛先のノードＮのシステムアドレスである。なお、以下の説明では、流量割当要求の送信元（グループノードＧＮまたは他の中継ノードＪＮ）を「フォワード元」という。
【０１３５】
判断部７１２は、実時間通信の流量割当要求を受信した結果、要求流量を割り当て可能か否かを判断する。具体的には、たとえば、まず、判断部７１２が、実時間通信割当流量テーブル１３００を参照して、宛先アドレスが流量割当要求に含まれる宛先アドレスと一致する割当流量の合計（以下、「ノード割当流量合計ｓ」という）を算出する。
【０１３６】
このあと、判断部７１２が、ノード割当流量合計ｓに流量割当要求に含まれる要求流量を加算して仮ノード割当流量合計ｓ’を算出する。そして、判断部７１２が、仮ノード割当流量合計ｓ’が実時間通信の周期Ｃ３の間に送信可能な最大データ量ＦMAX以下となるか否かを判断する。
【０１３７】
ここで、仮ノード割当流量合計ｓ’が最大データ量ＦMAXより大きい場合、送信部７０４が、割当不可を示す流量割当応答をフォワード元に送信する。すなわち、実時間通信の通信先となるノードＮに送信されるデータ量が、周期Ｃ３の間に送信可能な最大データ量ＦMAXを超えてしまうことを回避して、ネットワーク３１０上でのデータの喪失を防ぐ。
【０１３８】
一方、仮ノード割当流量合計ｓ’が最大データ量ＦMAX以下の場合、判断部７１２が、アドレステーブル５００を参照して、流量割当要求に含まれる宛先のシステムアドレスに対応するグループアドレスを特定する。そして、判断部７１２が、グループ識別テーブル６００を参照して、特定されたグループアドレスに対応するグループＧを特定する。
【０１３９】
このあと、判断部７１２が、特定されたグループＧが自グループＧか否かを判断する。ここで、自グループＧの場合、判断部７１２が、実時間通信割当流量テーブル１３００を参照して、送信元が他グループＧかつ宛先が自グループＧの実時間通信の割当流量の合計（以下、「割当流量合計Ｓ」という）を算出する。
【０１４０】
このあと、判断部７１２が、割当流量合計Ｓに要求流量を加算して仮割当流量合計Ｓ’を算出する。そして、判断部７１２が、仮割当流量合計Ｓ’が実時間通信の周期Ｃ３の間に送信可能な最大データ量ＦMAX以下となるか否かを判断する。
【０１４１】
ここで、仮割当流量合計Ｓ’が最大データ量ＦMAXより大きい場合、送信部７０４が、割当不可を示す流量割当応答をフォワード元に送信する。すなわち、自グループＧに送信されるデータ量が、周期Ｃ３の間に送信可能な最大データ量ＦMAXを超えてしまうことを回避して、ネットワーク３１０上でのデータの喪失を防ぐ。
【０１４２】
一方、仮割当流量合計Ｓ’が最大データ量ＦMAX以下の場合、判断部７１２が、実時間通信に要求流量を割り当てると判断する。そして、判断部７１２が、流量割当要求に含まれる要求流量、送信元アドレスおよび宛先アドレスを実時間通信割当流量テーブル１３００に設定して、新たな実時間通信情報をレコードとして登録する。なお、送信元および宛先のノードＮのグループアドレスは、送信元および宛先のシステムアドレスを用いてアドレステーブル５００から特定される。最後に、送信部７０４が、割当可を示す流量割当応答をフォワード元に送信する。
【０１４３】
一方、特定されたグループＧが他グループＧの場合、判断部７１２が、実時間通信割当流量テーブル１３００を参照して、送信元が自グループＧかつ宛先が他グループＧの実時間通信の割当流量合計Ｓを算出する。なお、特定されたグループＧとは、流量割当要求に含まれる宛先のシステムアドレスに対応するグループアドレスから特定されたグループＧである。
【０１４４】
このあと、判断部７１２が、割当流量合計Ｓに要求流量を加算して仮割当流量合計Ｓ’を算出する。そして、判断部７１２が、仮割当流量合計Ｓ’が実時間通信の周期Ｃ３の間に送信可能な最大データ量ＦMAX以下となるか否かを判断する。
【０１４５】
ここで、仮割当流量合計Ｓ’が最大データ量ＦMAXより大きい場合、送信部７０４が、割当不可を示す流量割当応答をフォワード元に送信する。すなわち、自グループＧから他グループＧに送信されるデータ量が、周期Ｃ３の間に送信可能な最大データ量ＦMAXを超えてしまうことを回避して、ネットワーク３１０上でのデータの喪失を防ぐ。
【０１４６】
一方、仮割当流量合計Ｓ’が最大データ量ＦMAX以下の場合、送信部７０４が、アドレステーブル５００を参照して、特定されたグループＧの中継ノードＪＮに流量割当要求を送信する。このあと、受信部７０１が、割当不可を示す流量割当応答を中継ノードＪＮから受信した場合、送信部７０４が、割当不可を示す流量割当応答をフォワード元に送信する。
【０１４７】
一方、受信部７０１が、割当可を示す流量割当応答を中継ノードＪＮから受信した場合、判断部７１２が、実時間通信に要求流量を割り当てると判断する。そして、判断部７１２が、流量割当要求に含まれる要求流量、送信元アドレスおよび宛先アドレスを実時間通信割当流量テーブル１３００に設定して、新たな実時間通信情報をレコードとして登録する。
【０１４８】
これにより、実時間通信の流量割当要求に対してネットワーク３１０の伝送能力を超えた流量割当を回避し、スイッチＳＷ１〜ＳＷ４等の通信途中でデータが破棄されることを防いで、実時間通信の通信品質を確保することができる。
【０１４９】
（グループノードＧＮの機能的構成）
つぎに、グループノードＧＮの機能的構成について説明する。図１５は、グループノードの機能的構成を示すブロック図である。図１５において、グループノードＧＮは、受信部１５０１と、検出部１５０２と、送信部１５０３と、割当部１５０４と、第１の算出部１５０５と、判定部１５０６と、決定部１５０７と、抽出部１５０８と、第２の算出部１５０９と、を含む構成である。
【０１５０】
各機能部（受信部１５０１〜第２の算出部１５０９）は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク、光ディスクなどの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０４により、その機能を実現する。なお、以下の説明において、グループノードＧＮの各機能部（受信部１５０１〜第２の算出部１５０９）の具体例を説明する場合、ネットワークシステム３００内のノードＮ２をグループノードＧＮとして想定する。
【０１５１】
受信部１５０１は、各種データを受信する。各種データは、たとえば、同期パケット、非実時間通信の流量割当結果、実時間通信の流量割当結果、実時間通信の流量割当応答、実時間データおよび非実時間データなどである。
【０１５２】
検出部１５０２は、ネットワーク３１０内のノードＮ１〜Ｎ１２間で時刻同期を取るための周期開始時点を検出する。具体的には、検出部１５０２が、中継ノードＪＮから同期パケットを受信した結果、同期パケットの受信時刻を周期Ｃ１の周期開始時点として検出する。
【０１５３】
送信部１５０３は、実時間データを送信する。具体的には、たとえば、送信部１５０３が、データ群の中から送信対象として順次決定される実時間データを、他のグループノードＧＮに送信する。ここで、データ群は、たとえば、データキューに保持されている実時間データおよび非実時間データの集合である。また、送信対象となる実時間データは、後述する決定部１５０７によって順次決定されてバッファに格納されている。
【０１５４】
また、送信部１５０３は、非実時間データを送信する。具体的には、たとえば、送信部１５０３が、データ群の中から送信対象として順次決定される非実時間データを、中継ノードＪＮに送信する。ここで、送信対象となる非実時間データは、後述する決定部１５０７によって順次決定されてバッファに格納されている。
【０１５５】
送信部１５０３の実時間データおよび非実時間データの送信処理は、周期Ｃ１の周期開始時点を基点として周期Ｃ２で周期的に実行される。具体的には、周期Ｃ２の時間間隔で送信タスクが起動され、バッファに格納されている実時間データまたは非実時間データが格納順に読み出されてネットワーク３１０に送出される。この際、バッファ内のデータ列が、たとえば、図２に示したデータ列２１０のように整形されているため、周期Ｃ３の時間間隔で実時間データが送信される。
【０１５６】
なお、非実時間データの宛先は、たとえば、図１６に示す宛先／転送先対応テーブル１６００を参照して設定される。図１６は、宛先／転送先対応テーブルの具体例を示す説明図（その２）である。図１６において、宛先／転送先対応テーブル１６００には、宛先アドレスと転送先とが対応付けて記憶されている。
【０１５７】
ここで、宛先アドレスとは、非実時間データの最終的な宛先として指定される論理宛先アドレスである。ここでは、宛先アドレスとして、ノードＮのグループアドレスが設定されている。転送先とは、非実時間データの転送先である。ここでは、転送先として、グループノードＧＮまたは中継ノードＪＮの物理アドレスが設定されている。
【０１５８】
たとえば、自グループＧ１のグループノードＮ３に非実時間データを送信する場合、物理宛先アドレスとしてグループノードＮ３の物理アドレスが設定される。一方、他グループＧ２のグループノードＮ５に非実時間データを送信する場合、物理宛先アドレスとして中継ノードＮ１の物理アドレスが設定され、論理宛先アドレスとしてグループノードＮ５のグループアドレスが設定される。
【０１５９】
図１５の説明に戻り、割当部１５０４は、受信された非実時間通信の流量割当結果を、グループノードＧＮと中継ノードＪＮとをつなぐ経路に割り当てる。具体的には、たとえば、割当部１５０４が、自ノードと中継ノードＪＮとをつなぐ物理リンクと流量割当結果とを関連付けて保持する。
【０１６０】
また、送信部１５０３は、実時間通信の流量割当要求を中継ノードＪＮに送信する。ここで、実時間通信の流量割当要求とは、自ノードＮを通信元とする実時間通信に必要となる流量の割当要求である。実時間通信の流量割当要求には、要求流量を表す情報、実時間通信の通信元（自ノード）のシステムアドレス、および実時間通信の通信先（他のグループノードＧＮ）のシステムアドレスが含まれている。
【０１６１】
なお、実時間通信の流量割当要求が送信された結果、要求流量の割当可を示す情報を含む流量割当応答が受信されると、たとえば、図１７に示す実時間通信割当流量テーブル１７００に記憶される。また、実時間通信の流量割当結果が受信されると、実時間通信割当流量テーブル１７００に記憶される。
【０１６２】
図１７は、実時間通信割当流量テーブルの記憶内容の一例を示す説明図（その２）である。図１７において、実時間通信割当流量テーブル１７００は、割当ＩＤ、割当流量、送信元アドレスおよび宛先アドレスの項目を有し、各項目に情報を設定することで、実時間通信情報１６００−１をレコードとして記憶している。
【０１６３】
実時間通信割当流量テーブル１７００では、自ノードＮを実時間通信の通信元または通信先とする実時間通信情報が管理される。ここでは、自ノードＮであるノードＮ２を通信先（宛先）とする実時間通信情報１７００−１が記憶されている。
【０１６４】
なお、流量割当応答を受信した結果、割当不可の場合、グループノードＧＮが自律的に実時間通信の要求流量を減らしてもよいか否かを判断することにしてもよい。実時間通信の要求流量を減らしてもよい場合としては、たとえば、実時間通信の要求流量が実際に必要となる流量より多い場合や、動画データ等の転送時にビットレートを下げても問題がない場合などがある。この場合、送信部１５０３が、実時間通信の要求流量を前回の要求流量よりも減らした流量割当要求を中継ノードＪＮに再送することになる。
【０１６５】
第１の算出部１５０５は、ネットワーク３１０の伝送能力に基づいて、実時間データおよび非実時間データの送信処理の周期開始時点から現時点までに送信対象として順次決定されたデータ列の送信にかかる所要時間ｔを算出する。具体的には、たとえば、第１の算出部１５０５が、上記式（１）を用いて、データ列の送信にかかる所要時間ｔを算出することができる。
【０１６６】
判定部１５０６は、現時点から、算出された所要時間ｔが経過した時点が、複数のノード群のいずれかのノードＮ間で周期的に実行される実時間通信の周期開始時点と一致するか否かを判定する。具体的には、たとえば、判定部１５０６が、周期Ｃ２（または周期Ｃ１）の周期開始時点から現時点までの経過時間Ｔ１に所要時間ｔを足し合わせた経過時間Ｔ２が、「０」または「周期Ｃ３の定数倍」か否かを判定する。
【０１６７】
決定部１５０７は、判定された判定結果に基づいて、データ群の中から送信対象となるデータを決定する。ここで、データ群は、実時間データおよび非実時間データの集合である。具体的には、たとえば、決定部１５０７が、実時間通信割当流量テーブル１７００を参照して、実時間通信の通信元となるノードＮのグループアドレスを特定する。ここでは、ノードＮ６のグループアドレス「１７２．ｘｘｘ．２．３」が特定される。
【０１６８】
次に、決定部１５０７が、特定されたグループアドレスと自ノードＮのグループアドレスとを比較して、実時間通信の通信元が自ノードＮか否かを判断する。ここで、通信元が自ノードＮの場合、決定部１５０７が、実時間通信の通信先（宛先）のデータキューの先頭の実時間データを送信対象に決定する。
【０１６９】
ここでは、実時間通信の通信元は自ノードＮではない。この場合、決定部１５０７が、実時間通信割当流量テーブル１７００を参照して、実時間通信の通信先となるノードＮのグループアドレスを特定する。ここでは、ノードＮ２のグループアドレス「１７２．ｘｘｘ．１．２」が特定される。
【０１７０】
次に、抽出部１５０８が、宛先／転送先テーブル対応１５００を参照して、特定されたグループアドレスから転送先を特定する。ここで特定される転送先（経路）は、ノードＮ間の実時間通信と衝突する転送先（経路）である。すなわち、ここで特定される転送先は、ノードＮ間の実時間通信との衝突を回避するために、非実時間データの送信を抑制すべき転送先である。そこで、たとえば、図１８に示す送信可能宛先リスト１８００を用いて、転送先ごとの非実時間データの送信可否を管理する。
【０１７１】
図１８は、送信可能宛先リストの記憶内容の一例を示す説明図（その２）である。図１８において、送信可能宛先リスト１８００は、転送先ごとに、非実時間データを、送信可能か否かを示す情報（送信可否）を有している。
【０１７２】
具体的には、たとえば、決定部１５０７が、ノードＮ間の実時間通信と衝突する転送先の送信可否を「可」から「否」に変更する。ただし、ここでは、ノードＮ２は自ノードＮのため転送先は非特定となる。したがって、送信可能宛先リスト１８００の送信可否に変更はない。
【０１７３】
このあと、第２の算出部１５０９は、周期Ｃ１（または周期Ｃ２）の周期開始時点から現時点までに送信対象として決定されたデータ列のデータ量（送信済データ量）に基づいて、中継ノードＪＮとの間をつなぐ経路を使用して送信可能なデータ量を算出する。具体的には、たとえば、第２の算出部１５０９が、中継ノードＪＮとの間をつなぐ経路に割り当てられた割当流量から送信済データ量を引いて送信可能なデータ量（以下、「残余の割当流量」という）を算出する。
【０１７４】
そして、抽出部１５０８は、データ群の中から、転送先の送信可否が「可」、かつ、算出された残余の割当流量以下のデータを抽出する。具体的には、たとえば、抽出部１５０８が、宛先／転送先対応テーブル１６００を参照して、送信可否が「可」の転送先を特定する。ここでは、転送先「０００００００００１（物理アドレス）」および「０００００００００３（物理アドレス）」が特定される。
【０１７５】
次に、抽出部１５０８が、特定された転送先のデータキューに入っている非実時間データを抽出する。決定部１５０７は、抽出された非実時間データを送信対象となる非実時間データに決定する。この際、決定部１５０７は、抽出された非実時間データのうち、データ量が、算出された残余の割当流量以下の非実時間データを送信対象となる非実時間データに決定する。
【０１７６】
また、決定部１５０７は、残余の割当流量以下の非実時間データが複数存在する場合、複数のデータの中から、データ量が最大の非実時間データを送信対象となる非実時間データに決定してもよい。
【０１７７】
なお、送信対象となる非実時間データが存在しない場合、決定部１５０７は、自ノードＮに直接接続されたスイッチＳＷ１において破棄される無効データを送信対象に決定する。この際、決定部１５０７は、残余の割当流量分の無効データを送信対象に決定することにしてもよい。
【０１７８】
次に、（ｉｉ）の場合、第２の算出部１５０９は、現時点から所要時間ｔが経過した時点から、実時間通信の開始時点となるまでの残余の時間を算出する。具体的には、たとえば、まず、第２の算出部１５０９が、周期Ｃ２（または周期Ｃ１）の周期開始時点から、現時点直後の実時間通信の開始時点までの経過時間Ｔ３を算出する。
【０１７９】
そして、第２の算出部１５０９が、算出された経過時間Ｔ３から経過時間Ｔ２を引くことで、実時間通信の開始時点となるまでの残余の時間を算出することができる。なお、経過時間Ｔ２は、周期Ｃ２（または周期Ｃ１）の周期開始時点から現時点までの経過時間Ｔ１に所要時間ｔを足し合わせた経過時間である。
【０１８０】
また、第２の算出部１５０９は、ネットワーク３１０の伝送能力に基づいて、残余の時間に送信可能なデータ量を算出する。具体的には、たとえば、第２の算出部１５０９が、上記式（２）を用いて、残余の時間に送信可能なデータ量を算出することができる。
【０１８１】
そして、抽出部１５０８は、データ群の中から、残余の時間に送信可能なデータ量以下のデータを抽出する。具体的には、たとえば、抽出部１５０８が、データキューの中から、残余の時間に送信可能なデータ量以下の任意の非実時間データを抽出する。
【０１８２】
決定部１５０７は、抽出された非実時間データを送信対象となる非実時間データに決定する。この際、決定部１５０７は、抽出された非実時間データが複数存在する場合、複数のデータの中から、データ量が最大の非実時間データを送信対象となる非実時間データに決定してもよい。
【０１８３】
ただし、単位時間当たりに送信可能な割当流量を超える非実時間データを送信するとデータ喪失の可能性がある。このため、決定部１５０７は、残余の時間に送信可能なデータ量以下であっても、割当流量を超える非実時間データは送信対象に決定しない。また、決定された決定結果は、送信済データ量としてＲＡＭ４０３などの記憶領域に記憶される。
【０１８４】
なお、送信対象となる非実時間データが存在しない場合、決定部１５０７は、自ノードＮに直接接続されたスイッチＳＷ１において破棄される無効データを送信対象に決定する。この際、決定部１５０７は、残余の時間に送信可能なデータ量分の無効データを送信対象に決定することにしてもよい。
【０１８５】
なお、送信対象として決定された実時間データおよび非実時間データは、バッファに格納される。そして、バッファに格納された実時間データおよび非実時間データは、送信タスクが起動すると格納順にネットワーク３１０に送出されることになる。このように、実時間通信と衝突する非実時間データの送信を抑制することにより、実時間通信と非実時間通信との衝突を避けることができる。
【０１８６】
（中継ノードＪＮの通信処理手順）
つぎに、中継ノードＪＮの通信処理手順について説明する。ただし、中継ノードＪＮ間の仮想リンクＶＬは予め設定されている場合を想定する。図１９は、中継ノードの通信処理手順の一例を示すフローチャートである。図１９のフローチャートにおいて、まず、検出部７０５により、自ノードＮが起動してから周期Ｃ１の１周期経過したか否かを判断する（ステップＳ１９０１）。
【０１８７】
ここで、１周期経過していない場合（ステップＳ１９０１：Ｎｏ）、受信部７０１により、他の中継ノードＪＮから同期パケットを受信したか否かを判断する（ステップＳ１９０２）。そして、同期パケットを未受信の場合（ステップＳ１９０２：Ｎｏ）、ステップＳ１９０１に戻る。
【０１８８】
一方、同期パケットを受信した場合（ステップＳ１９０２：Ｙｅｓ）、検出部７０５により、同期パケットの受信時刻を周期Ｃ１の周期開始時点として検出する（ステップＳ１９０３）。また、ステップＳ１９０１において、１周期経過した場合（ステップＳ１９０１：Ｙｅｓ）、現時点を周期Ｃ１の周期開始時点として検出する（ステップＳ１９０４）。
【０１８９】
そして、送信部７０４により、他の中継ノードＪＮに同期パケットを送信する（ステップＳ１９０５）。次に、検出部７０５により、現時点が周期Ｃ１の周期開始時点か否かを判断する（ステップＳ１９０６）。なお、現時点が周期Ｃ１の周期開始時点か否かを判断するための具体的な処理内容については後述する。
【０１９０】
ここで、周期Ｃ１の周期開始時点ではない場合（ステップＳ１９０６：Ｎｏ）、ステップＳ１９１４に移行する。一方、周期Ｃ１の周期開始時点の場合（ステップＳ１９０６：Ｙｅｓ）、割当部７０６により、ネットワーク３１０の伝送能力に基づいて、自グループＧ内のグループノードＧＮに非実時間通信の流量を割り当てる（ステップＳ１９０７）。そして、割当部７０６により、グループノードＧＮの流量割当結果を割当流量／送信済データ量対応テーブル１１００に登録する（ステップＳ１９０８）。
【０１９１】
また、割当部７０６により、ネットワーク３１０の伝送能力に基づいて、他の中継ノードＪＮとの間の仮想リンクＶＬに非実時間通信の流量を割り当てる（ステップＳ１９０９）。そして、割当部７０６により、仮想リンクＶＬの流量割当結果を割当流量／送信済データ量対応テーブル１１００に登録する（ステップＳ１９１０）。
【０１９２】
このあと、送信部７０４により、グループノードＧＮに同期パケットおよびグループノードＧＮの流量割当結果を送信する（ステップＳ１９１１）。また、送信部７０４により、他の中継ノードＪＮに同期パケットおよび他の中継ノードＪＮの流量割当結果を送信する（ステップＳ１９１２）。
【０１９３】
次に、検出部７０５により、周期Ｃ１の周期開始時点を修正する周期開始時点修正処理を実行する（ステップＳ１９１３）。そして、送信部７０４により、仮想リンクＶＬを介して、他の中継ノードＪＮに非実時間データを転送するための転送制御処理を実行する（ステップＳ１９１４）。
【０１９４】
このあと、検出部７０５により、ネットワークシステム３００の停止指示があったか否かを判断する（ステップＳ１９１５）。なお、ネットワークシステム３００の停止指示は、たとえば、ネットワーク３１０を介して、外部のコンピュータ装置から受け付ける。
【０１９５】
ここで、停止指示がない場合（ステップＳ１９１５：Ｎｏ）、現時点が周期Ｃ２の周期開始時点となるまで待って（ステップＳ１９１６：Ｎｏ）、周期Ｃ２の周期開始時点となった場合（ステップＳ１９１６：Ｙｅｓ）、ステップＳ１９０６に戻る。一方、停止指示があった場合（ステップＳ１９１５：Ｙｅｓ）、本フローチャートによる一連の処理を終了する。
【０１９６】
ここで、ステップＳ１９０６において、現時点が周期Ｃ１の周期開始時点か否かを判断する具体的な処理内容の一例を説明する。ここでは、周期Ｃ１の時間間隔と周期Ｃ２の時間間隔との比率を「周期Ｃ１：周期Ｃ２＝Ｎ：１」とする。また、周期Ｃ２のループ回数をｎとする（ただし、ｎの初期値は「ｎ＝０」）。この場合、検出部７０５が、（ｎ＋１）をＮで除算した値の余りが０の場合、現時点が周期Ｃ１の周期開始時点と判断する。
【０１９７】
＜周期開始時点修正処理＞
次に、図１９に示したステップＳ１９１３の周期開始時点修正処理の具体的な処理手順について説明する。図２０は、ステップＳ１９１３の周期開始時点修正処理の具体的処理手順の一例を示すフローチャートである。
【０１９８】
図２０のフローチャートにおいて、まず、受信部７０１により、他の中継ノードＪＮから同期パケットおよび流量割当結果を受信したか否かを判断する（ステップＳ２００１）。ここで、同期パケットおよび流量割当結果を未受信の場合（ステップＳ２００１：Ｎｏ）、ステップＳ２００６に移行する。
【０１９９】
一方、同期パケットおよび流量割当結果を受信した場合（ステップＳ２００１：Ｙｅｓ）、割当部７０６により、仮想リンクＶＬの流量割当結果を割当流量／送信済データ量対応テーブル１１００に登録する（ステップＳ２００２）。そして、検出部７０５により、同期パケットの受信時刻から、周期Ｃ１の周期開始時点にズレがあるか否かを判断する（ステップＳ２００３）。
【０２００】
ここで、周期開始時点にズレがない場合（ステップＳ２００３：Ｎｏ）、ステップＳ２００５に移行する。一方、周期開始時点にズレがある場合（ステップＳ２００３：Ｙｅｓ）、検出部７０５により、同期パケットの受信時刻を周期Ｃ１の周期開始時点として検出する（ステップＳ２００４）。
【０２０１】
このあと、受信部７０１により、すべての他の中継ノードＪＮから同期パケットおよび流量割当結果を受信したか否かを判断する（ステップＳ２００５）。ここで、同期パケットおよび流量割当結果を受信した場合（ステップＳ２００５：Ｙｅｓ）、図１９に示したステップＳ１９１４に移行する。一方、同期パケットおよび流量割当結果を未受信の場合（ステップＳ２００５：Ｎｏ）、割当部７０６により、ステップＳ２００１における最初の判断処理から、予め設定された一定時間経過したか否かを判断する（ステップＳ２００６）。
【０２０２】
ここで、一定時間経過していない場合（ステップＳ２００６：Ｎｏ）、ステップＳ２００１に戻る。一方、一定時間経過した場合（ステップＳ２００６：Ｙｅｓ）、割当部７０６により、同期パケットおよび流量割当結果を未受信の他の中継ノードＪＮとの間の仮想リンクＶＬの割当流量を「０」として割当流量／送信済データ量対応テーブル１１００に登録して（ステップＳ２００７）、図１９に示したステップＳ１９１４に移行する。
【０２０３】
なお、ステップＳ２００７において、仮想リンクＶＬの割当流量が規定回数連続して「０」として登録された場合、その仮想リンクＶＬでつながれた他の中継ノードＪＮがネットワークシステム３００から離脱したと判断することにしてもよい。
【０２０４】
＜転送制御処理手順＞
次に、図１９に示したステップＳ１９１４の転送制御処理の具体的な処理手順について説明する。図２１および図２２は、ステップＳ１９１４の転送制御処理の具体的処理手順の一例を示すフローチャートである。
【０２０５】
図２１のフローチャートにおいて、まず、第１の算出部７０７により、割当流量／送信済データ量対応テーブル１１００内の各転送先の送信済データ量を「０」で初期化する（ステップＳ２１０１）。また、第１の算出部７０７により、送信可能宛先リスト１４００を初期化する（ステップＳ２１０２）。
【０２０６】
このあと、第１の算出部７０７により、割当流量／送信済データ量対応テーブル１１００の各転送先の送信済データ量を累積して、周期Ｃ２の周期開始時点から現時点までに送信対象として順次決定されたデータ列のデータ量ｄを算出する（ステップＳ２１０３）。そして、第１の算出部７０７により、上記式（１）を用いて、データ列の送信にかかる所要時間ｔを算出する（ステップＳ２１０４）。
【０２０７】
次に、判定部７０８により、現時点から所要時間ｔが経過した時点が、実時間通信の周期Ｃ３の周期開始時点と一致するか否かを判定する（ステップＳ２１０５）。ここで、周期Ｃ３の周期開始時点と一致する場合（ステップＳ２１０５：Ｙｅｓ）、決定部７０９により、実時間通信割当流量テーブル１３００を参照して、実時間通信の通信先となるノードＮのグループアドレスを特定する（ステップＳ２１０６）。
【０２０８】
このあと、決定部７０９により、宛先／転送先テーブル対応８００を参照して、特定されたグループアドレスから転送先を特定する（ステップＳ２１０７）。そして、決定部７０９により、送信可能宛先リスト１４００内の特定された転送先の送信可否を「可」から「否」に変更する（ステップＳ２１０８）。
【０２０９】
次に、第２の算出部７１０により、実時間通信割当流量テーブル１３００を参照して、ノードＮ間の実時間通信に割り当てられている割当流量を累積して実時間通信の総割当流量を算出する（ステップＳ２１０９）。そして、決定部７０９により、算出された総割当流量をＭａｘＳｅｎｄＮに代入して（ステップＳ２１１０）、図２２のステップＳ２１１４に移行する。なお、ＭａｘＳｅｎｄＮは変数である。
【０２１０】
また、ステップＳ２１０５において、周期Ｃ３の周期開始時点と不一致の場合（ステップＳ２１０５：Ｎｏ）、第２の算出部７１０により、現時点から所要時間ｔが経過した時点から、周期Ｃ３の周期開始時点となるまでの残余の時間を算出する（ステップＳ２１１１）。
【０２１１】
このあと、第２の算出部７１０により、上記式（２）を用いて、残余の時間に送信可能なデータ量を算出する（ステップＳ２１１２）。そして、決定部７０９により、算出されたデータ量をＭａｘＳｅｎｄＮに代入して（ステップＳ２１１３）、図２２のステップＳ２１１４に移行する。なお、ＭａｘＳｅｎｄＮは変数である。
【０２１２】
図２２のフローチャートにおいて、まず、抽出部７１１により、送信可能宛先リスト１４００を参照して、送信可否が「可」の転送先を特定する（ステップＳ２１１４）。次に、抽出部７１１により、キュー対応テーブル１０００を参照して、特定された転送先のデータキューを特定する（ステップＳ２１１５）。
【０２１３】
このあと、抽出部７１１により、特定された転送先のデータキューからＭａｘＳｅｎｄＮ以下の非実時間データを抽出する（ステップＳ２１１６）。そして、決定部７０９により、抽出された非実時間データを送信対象となる非実時間データに決定する（ステップＳ２１１７）。ただし、決定部７０９は、割当流量を超える転送先に対する非実時間データは送信対象に決定しない。
【０２１４】
また、ステップＳ２１１７において、送信対象となる非実時間データが存在しない場合、決定部７０９は、自ノードＮに直接接続されたスイッチＳＷ１において破棄される無効データを送信対象に決定する。この際、決定部７０９は、ＭａｘＳｅｎｄＮ分の無効データを送信対象に決定する。
【０２１５】
次に、決定部７０９により、送信対象に決定された非実時間データのデータ量を割当流量／送信済データ量対応テーブル１１００内の転送先の送信済データ量に累積する（ステップＳ２１１８）。そして、決定部７０９により、割当流量／送信済データ量対応テーブル１１００内の各転送先の送信済データ量を累積して総送信済データ量を算出する（ステップＳ２１１９）。
【０２１６】
このあと、決定部７０９により、算出された総送信済データ量が周期Ｃ２の送信可能量未満か否かを判断する（ステップＳ２１２０）。ここで、送信可能量未満の場合（ステップＳ２１２０：Ｙｅｓ）、図２１に示したステップＳ２１０２に戻る。一方、送信可能量以上の場合（ステップＳ２１２０：Ｎｏ）、図１９に示したステップＳ１９１５に移行する。
【０２１７】
これにより、ネットワークシステム３００において、実時間通信と非実時間通信との衝突を回避することができる。また、実時間通信と衝突する非実時間データの送出のみを抑制するため、ネットワーク３１０全体のスループットの低下を抑えることができる。
【０２１８】
（グループノードＧＮの通信処理手順）
つぎに、グループノードＧＮの通信処理手順について説明する。図２３は、グループノードの通信処理手順の一例を示すフローチャートである。図２３のフローチャートにおいて、まず、受信部１５０１により、中継ノードＪＮから同期パケットを受信したか否かを判断する（ステップＳ２３０１）。
【０２１９】
ここで、同期パケットを受信するのを待って（ステップＳ２３０１：Ｎｏ）、受信した場合（ステップＳ２３０１：Ｙｅｓ）、検出部１５０２により、同期パケットの受信時刻を周期Ｃ１の周期開始時点として検出する（ステップＳ２３０２）。このあと、検出部１５０２により、現時点が周期Ｃ１の周期開始時点か否かを判断する（ステップＳ２３０３）。
【０２２０】
ここで、周期Ｃ１の周期開始時点ではない場合（ステップＳ２３０３：Ｎｏ）、ステップＳ２３０８に移行する。一方、周期Ｃ１の周期開始時点の場合（ステップＳ２３０３：Ｙｅｓ）、受信部１５０１により、中継ノードＪＮから同期パケットおよび流量割当結果を受信したか否かを判断する（ステップＳ２３０４）。
【０２２１】
ここで、同期パケットおよび流量割当結果を受信するのを待って（ステップＳ２３０４：Ｎｏ）、受信した場合（ステップＳ２３０４：Ｙｅｓ）、割当部１５０４により、受信された非実時間通信の流量割当結果を、自ノードＮと中継ノードＪＮとをつなぐ経路に割り当てる（ステップＳ２３０５）。
【０２２２】
次に、検出部１５０２により、同期パケットの受信時刻から、周期Ｃ１の周期開始時点にズレがあるか否かを判断する（ステップＳ２３０６）。ここで、周期開始時点にズレがない場合（ステップＳ２３０６：Ｎｏ）、ステップＳ２３０８に移行する。一方、周期開始時点にズレがある場合（ステップＳ２３０６：Ｙｅｓ）、検出部１５０２により、同期パケットの受信時刻を周期Ｃ１の周期開始時点として検出する（ステップＳ２３０７）。
【０２２３】
そして、送信部１５０３により、実時間データまたは／および非実時間データを送信するための送信制御処理を実行する（ステップＳ２３０８）。このあと、検出部１５０２により、ネットワークシステム３００の停止指示があったか否かを判断する（ステップＳ２３０９）。
【０２２４】
ここで、停止指示がない場合（ステップＳ２３０９：Ｎｏ）、現時点が周期Ｃ２の周期開始時点となるまで待って（ステップＳ２３１０：Ｎｏ）、周期Ｃ２の周期開始時点となった場合（ステップＳ２３１０：Ｙｅｓ）、ステップＳ２３０３に戻る。一方、停止指示があった場合（ステップＳ２３０９：Ｙｅｓ）、本フローチャートによる一連の処理を終了する。
【０２２５】
＜送信制御処理手順＞
次に、図２３に示したステップＳ２３０８の送信制御処理の具体的な処理手順について説明する。図２４および図２５は、ステップＳ２３０８の送信制御処理の具体的処理手順の一例を示すフローチャートである。
【０２２６】
図２４のフローチャートにおいて、まず、第１の算出部１５０５により、自ノードＮと中継ノードＪＮとをつなぐ経路の送信済データ量を「０」で初期化する（ステップＳ２４０１）。また、第１の算出部１５０５により、送信可能宛先リスト１４００を初期化する（ステップＳ２４０２）。
【０２２７】
このあと、第１の算出部１５０５により、送信済データ量から、周期Ｃ２の周期開始時点から現時点までに送信対象として順次決定されたデータ列のデータ量ｄを特定する（ステップＳ２４０３）。そして、第１の算出部１５０５により、上記式（１）を用いて、データ列の送信にかかる所要時間ｔを算出する（ステップＳ２４０４）。
【０２２８】
次に、判定部１５０６により、現時点から所要時間ｔが経過した時点が、実時間通信の周期Ｃ３の周期開始時点と一致するか否かを判定する（ステップＳ２４０５）。ここで、周期Ｃ３の周期開始時点と不一致の場合（ステップＳ２４０５：Ｎｏ）、第２の算出部１５０９により、現時点から所要時間ｔが経過した時点から、周期Ｃ３の周期開始時点となるまでの残余の時間を算出する（ステップＳ２４０６）。
【０２２９】
このあと、第２の算出部１５０９により、上記式（２）を用いて、残余の時間に送信可能なデータ量を算出して（ステップＳ２４０７）、ステップＳ２４１６に移行する。一方、ステップＳ２４０５において、周期Ｃ３の周期開始時点と一致する場合（ステップＳ２４０５：Ｙｅｓ）、決定部１５０７により、実時間通信割当流量テーブル１３００を参照して、実時間通信の通信元となるノードＮのグループアドレスを特定する（ステップＳ２４０８）。
【０２３０】
そして、決定部１５０７により、特定されたグループアドレスと自ノードＮのグループアドレスとを比較して、実時間通信の通信元が自ノードＮか否かを判断する（ステップＳ２４０９）。ここで、自ノードＮの場合（ステップＳ２４０９：Ｙｅｓ）、決定部１５０７により、実時間通信の通信先のデータキューの先頭の実時間データを送信対象に決定する（ステップＳ２４１０）。
【０２３１】
そして、決定部１５０７により、送信対象に決定された実時間データのデータ量を送信済データ量に累積して（ステップＳ２４１１）、図２５に示すステップＳ２４２１に移行する。
【０２３２】
一方、自ノードＮではない場合（ステップＳ２４０９：Ｎｏ）、決定部１５０７により、実時間通信の通信先となるノードＮのグループアドレスを特定する（ステップＳ２４１２）。このあと、決定部１５０７により、宛先／転送先対応テーブル１６００を参照して、特定されたグループアドレスから転送先を特定する（ステップＳ２４１３）。
【０２３３】
そして、決定部１５０７により、送信可能宛先リスト１８００内の特定された転送先の送信可否を「可」から「否」に変更する（ステップＳ２４１４）。次に、第２の算出部１５０９により、自ノードＮと中継ノードＪＮとをつなぐ経路に割り当てられた割当流量から送信済データ量を引いて残余の割当流量を算出する（ステップＳ２４１５）。
【０２３４】
そして、決定部１５０７により、残余の割当流量または送信可能なデータ量のうち小さい方をＭａｘＳｅｎｄＮに代入して（ステップＳ２４１６）、図２５のステップＳ２４１７に移行する。
【０２３５】
図２５のフローチャートにおいて、まず、抽出部１５０８により、送信可能宛先リスト１８００を参照して、送信可否が「可」の転送先を特定する（ステップＳ２４１７）。次に、抽出部１５０８により、特定された転送先のデータキューからＭａｘＳｅｎｄＮ以下の非実時間データを抽出する（ステップＳ２４１８）。
【０２３６】
そして、決定部１５０７により、抽出された非実時間データを送信対象となる非実時間データに決定する（ステップＳ２４１９）。次に、決定部１５０７により、送信対象に決定された非実時間データのデータ量を送信済データ量に累積する（ステップＳ２４２０）。
【０２３７】
なお、ステップＳ２４１９において、送信対象となる非実時間データが存在しない場合、決定部１５０７は、自ノードＮに直接接続されたスイッチＳＷにおいて破棄される無効データを送信対象に決定する。この際、決定部１５０７は、ＭａｘＳｅｎｄＮ分の無効データを送信対象に決定する。
【０２３８】
このあと、決定部１５０７により、送信済データ量が割当流量未満か否かを判断する（ステップＳ２４２１）。ここで、割当流量未満の場合（ステップＳ２４２１：Ｙｅｓ）、図２４に示したステップＳ２４０２に戻る。一方、割当流量以上の場合（ステップＳ２４２１：Ｎｏ）、図２３に示したステップＳ２３０９に移行する。
【０２３９】
これにより、ネットワークシステム３００において、実時間通信と非実時間通信との衝突を回避することができる。また、実時間通信と衝突する非実時間データの送出のみを抑制するため、ネットワーク３１０全体のスループットの低下を抑えることができる。
【０２４０】
＜実時間通信の流量割当要求処理手順＞
つぎに、グループノードＧＮの実時間通信の流量割当要求処理手順について説明する。図２６は、実時間通信の流量割当要求処理手順の一例を示すフローチャートである。図２６のフローチャートにおいて、まず、送信部１５０３により、実時間通信の流量割当要求を中継ノードＪＮに送信する（ステップＳ２６０１）。
【０２４１】
このあと、受信部１５０１により、中継ノードＪＮから流量割当応答を受信するのを待って（ステップＳ２６０２：Ｎｏ）、受信した場合（ステップＳ２６０２：Ｙｅｓ）、グループノードＧＮにより、割当可か否かを判断する（ステップＳ２６０３）。
【０２４２】
ここで、割当可の場合（ステップＳ２６０３：Ｙｅｓ）、グループノードＧＮにより、実時間通信割当流量テーブル１７００に実時間通信情報を新たなレコードとして登録して（ステップＳ２６０４）、本フローチャートによる一連の処理を終了する。
【０２４３】
一方、割当不可の場合（ステップＳ２６０３：Ｎｏ）、グループノードＧＮにより、実時間通信の要求流量を減らしてもよいか否かを判断する（ステップＳ２６０５）。ここで、要求流量を減らせない場合（ステップＳ２６０５：Ｎｏ）、本フローチャートによる一連の処理を終了する。
【０２４４】
一方、要求流量を減らしてもよい場合（ステップＳ２６０５：Ｙｅｓ）、グループノードＧＮにより、新たな実時間通信の要求流量を算出して（ステップＳ２６０６）、ステップＳ２６０１に戻る。
【０２４５】
＜実時間通信の流量割当応答処理手順＞
つぎに、中継ノードＪＮの実時間通信の流量割当応答処理手順について説明する。図２７および図２８は、実時間通信の流量割当応答処理手順の一例を示すフローチャートである。図２７のフローチャートにおいて、まず、受信部７０１により、フォワード元から実時間通信の流量割当要求を受信したか否かを判断する（ステップＳ２７０１）。
【０２４６】
ここで、実時間通信の流量割当要求を受信するのを待って（ステップＳ２７０１：Ｎｏ）、受信した場合（ステップＳ２７０１：Ｙｅｓ）、判断部７１２により、実時間通信割当流量テーブル１３００を参照して、ノード割当流量合計ｓを算出する（ステップＳ２７０２）。
【０２４７】
次に、判断部７１２により、算出されたノード割当流量合計ｓに流量割当要求に含まれる要求流量を加算して仮ノード割当流量合計ｓ’を算出する（ステップＳ２７０３）。そして、判断部７１２により、仮ノード割当流量合計ｓ’が実時間通信の周期Ｃ３の間に送信可能な最大データ量ＦMAX以下となるか否かを判断する（ステップＳ２７０４）。
【０２４８】
ここで、仮ノード割当流量合計ｓ’が最大データ量ＦMAXより大きい場合（ステップＳ２７０４：Ｎｏ）、送信部７０４により、割当不可を示す流量割当応答をフォワード元に送信して（ステップＳ２７０５）、本フローチャートによる一連の処理を終了する。
【０２４９】
一方、仮ノード割当流量合計ｓ’が最大データ量ＦMAX以下の場合（ステップＳ２７０４：Ｙｅｓ）、判断部７１２により、アドレステーブル５００を参照して、流量割当要求に含まれる宛先のシステムアドレスに対応するグループアドレスを特定する（ステップＳ２７０６）。
【０２５０】
そして、判断部７１２により、グループ識別テーブル６００を参照して、特定されたグループアドレスに対応するグループＧを特定する（ステップＳ２７０７）。このあと、判断部７１２により、特定されたグループＧが自グループＧか否かを判断する（ステップＳ２７０８）。
【０２５１】
ここで、自グループＧの場合（ステップＳ２７０８：Ｙｅｓ）、判断部７１２により、実時間通信割当流量テーブル１３００を参照して、送信元が他グループＧかつ宛先が自グループＧの実時間通信の割当流量合計Ｓを算出する（ステップＳ２７０９）。
【０２５２】
このあと、判断部７１２により、算出された割当流量合計Ｓに要求流量を加算して仮割当流量合計Ｓ’を算出する（ステップＳ２７１０）。そして、判断部７１２により、仮割当流量合計Ｓ’が実時間通信の周期Ｃ３の間に送信可能な最大データ量ＦMAX以下となるか否かを判断する（ステップＳ２７１１）。
【０２５３】
ここで、仮割当流量合計Ｓ’が最大データ量ＦMAXより大きい場合（ステップＳ２７１１：Ｎｏ）、ステップＳ２７０５に移行する。一方、仮割当流量合計Ｓ’が最大データ量ＦMAX以下の場合（ステップＳ２７１１：Ｙｅｓ）、判断部７１２により、実時間通信割当流量テーブル１３００に新たな実時間通信情報を登録する（ステップＳ２７１２）。
【０２５４】
そして、送信部７０４により、割当可を示す流量割当応答をフォワード元に送信する（ステップＳ２７１３）。また、送信部７０４により、フォワード元を除く他の中継ノードＪＮおよび自グループＧのグループノードＧＮに実時間通信情報を送信する（ステップＳ２７１４）。これにより、新たに登録された実時間通信情報を共有する。
【０２５５】
また、ステップＳ２７０８において、特定されたグループが他グループＧの場合（ステップＳ２７０８：Ｎｏ）、図２８に示すステップＳ２７１５に移行する。
【０２５６】
図２８に示すフローチャートにおいて、まず、判断部７１２により、実時間通信割当流量テーブル１３００を参照して、送信元が自グループＧかつ宛先が他グループＧの実時間通信の割当流量合計Ｓを算出する（ステップＳ２７１５）。
【０２５７】
このあと、判断部７１２により、算出された割当流量合計Ｓに要求流量を加算して仮割当流量合計Ｓ’を算出する（ステップＳ２７１６）。そして、判断部７１２により、仮割当流量合計Ｓ’が実時間通信の周期Ｃ３の間に送信可能な最大データ量ＦMAX以下となるか否かを判断する（ステップＳ２７１７）。
【０２５８】
ここで、仮割当流量合計Ｓ’が最大データ量ＦMAXより大きい場合（ステップＳ２７１７：Ｎｏ）、送信部７０４により、割当不可を示す流量割当応答をフォワード元に送信して（ステップＳ２７１８）、本フローチャートによる一連の処理を終了する。
【０２５９】
一方、仮割当流量合計Ｓ’が最大データ量ＦMAX以下の場合（ステップＳ２７１７：Ｙｅｓ）、送信部７０４により、特定されたグループＧの中継ノードＪＮに流量割当要求を送信する（ステップＳ２７１９）。このあと、受信部７０１により、他の中継ノードＪＮから流量割当応答を受信するのを待つ（ステップＳ２７２０：Ｎｏ）。
【０２６０】
そして、流量割当応答を受信した場合（ステップＳ２７２０：Ｙｅｓ）、判断部７１２により、流量割当応答が割当可を示すか否かを判断する（ステップＳ２７２１）。ここで、割当不可の場合（ステップＳ２７２１：Ｎｏ）、ステップＳ２７１８に移行する。
【０２６１】
一方、割当可の場合（ステップＳ２７２１：Ｙｅｓ）、判断部７１２により、実時間通信割当流量テーブル１３００に新たな実時間通信情報を登録する（ステップＳ２７２２）。最後に、送信部７０４により、割当可を示す流量割当応答をフォワード元に送信して（ステップＳ２７２３）、本フローチャートによる一連の処理を終了する。
【０２６２】
これにより、実時間通信の流量割当要求に対してネットワーク３１０の伝送能力を超えた流量割当を回避し、スイッチＳＷ１〜ＳＷ４等の通信途中でデータが破棄されることを防いで、実時間通信の通信品質を確保することができる。
【０２６３】
以上説明したように、本実施の形態によれば、各グループＧから選ばれた中継ノードＪＮ間をつなぐ仮想リンクＶＬを用いて、グループＧ間の非実時間データを転送することができる。これにより、グループＧ間の非実時間データを一つにまとめて、実時間通信との衝突を低減させることができる。
【０２６４】
また、本実施の形態によれば、バッファ内に格納されているデータ列のネットワーク３１０への送出にかかる所要時間ｔから、次に格納するデータの送信時刻を予測して、実時間通信の開始時点と一致するか否かを判定することができる。
【０２６５】
この結果、実時間通信の開始時点と一致する場合、実時間通信と衝突しない経路の非実時間データを送信対象に決定することができる。一方、実時間通信の開始時点と不一致の場合は、実時間通信の開始時点までに送信可能なデータ量以下の非実時間データを送信対象に決定することができる。
【０２６６】
これにより、実時間通信と衝突する非実時間データの送出のみ抑制し、ネットワーク３１０全体のスループットの低下を抑えることができる。また、実時間通信と衝突しないようにデータ列を整形してバッファに格納しておくことで、送信タイミングの制御が不要となる。
【０２６７】
たとえば、カメラで撮影された動画を、タイマ処理（割込処理）により極短い周期Ｃ３（たとえば、１２５［μｓ］）の実時間通信で転送する場合、送信処理のためだけにＣＰＵ４０１のリソースを使い切って他の処理を実行できなくなることが想定される。しかし、本実施の形態によれば、極短い周期Ｃ３に合わせて送信タイミングを制御する必要がないため、高性能なＣＰＵ４０１を各ノードＮが搭載していなくても、実時間通信との衝突を回避することができる。
【０２６８】
また、本実施の形態によれば、送信対象となる適切な非実時間データが存在しない場合であっても、スイッチＳＷにおいて破棄される無効データを送信対象とすることにより、実時間通信と衝突しないデータ列を整形することができる。
【０２６９】
また、本実施の形態によれば、実時間通信を行うためのプロトコルの種別は問わない。そのため、一般に必要となる実時間通信のためのプロトコル（たとえば、ＲＴＰ：Ｒｅａｌ-ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）の設定作業が不要となり、システムを構築する作業者の負荷を低減させることができる。
【０２７０】
また、本実施の形態によれば、複数のスイッチＳＷを用いてネットワークシステム３００が構築可能となるため、システム構成の柔軟性や拡張性を向上させることができる。さらに、本実施の形態によれば、ノードＮ間の実時間通信が複数台のスイッチＳＷを超えて行われる場合であっても通信品質を確保することができる。また、２種類の通信が混在する多段スイッチ接続の局所網において、２種類の通信の衝突を回避することで、極短周期のアイソクロナス転送を遅滞なく実行することができる。
【０２７１】
これらのことから、開示のノード、通信プログラムおよび通信方法によれば、高負荷の非実時間通信が行われている環境下であっても、実時間通信の通信品質を確保することができる。この際、ノードＮ間をつなぐ一本の物理的な通信媒体によって実時間通信と非実時間通信とが衝突しないように制御できるため、個々の通信に合わせて通信媒体を用意する必要がなく、システム構成の複雑度およびコストの増大化を防ぐことができる。
【０２７２】
なお、上述した通信手法では、中継ノードＪＮと直接接続されていないスイッチＳＷを隣り合って接続することができないというトポロジ上の制約が存在する。たとえば、コアスイッチやルータスイッチなどのスイッチＳＷ間をつなぐスイッチＳＷを設置する場合、中継ノードＪＮと直接接続されていないスイッチＳＷを隣り合って接続することになる。この場合、中継ノードＪＮと直接接続されていないスイッチＳＷ間でデータが衝突する可能性がある。
【０２７３】
そこで、スイッチＳＷ同士をつなぐスイッチＳＷに中継ノードＪＮを設置することにしてもよい。具体的には、中継ノードＪＮと直接接続されたスイッチＳＷと、中継ノードＪＮと直接接続されていないスイッチＳＷとをつなぐスイッチＳＷに中継ノードＪＮを設置する。
【０２７４】
図２９は、ネットワークシステムのシステム構成図（その２）である。ネットワークシステム２９００において、個々のスイッチＳＷ１〜ＳＷ１６と直接接続されたノード群（不図示）により形成された小グループＳＧ１〜ＳＧ１５が、ネットワーク３１０を介して通信可能に接続されている。
【０２７５】
また、小グループＳＧ１〜ＳＧ５により大グループＢＧ１が形成され、小グループＳＧ６〜ＳＧ１０により大グループＢＧ２が形成され、小グループＳＧ１１〜ＳＧ１５により大グループＢＧ３が形成されている。ここで、スイッチＳＷ５，ＳＷ１０，ＳＷ１５は、スイッチ同士をつなぐコアスイッチである。そこで、各スイッチＳＷ５，ＳＷ１０，ＳＷ１５に中継ノード２９１０，２９２０，２９３０を設置する。
【０２７６】
ネットワークシステム２９００では、大グループＢＧ１〜ＢＧ３を超える非実時間通信は、小グループ間の通信として、一度、大グループの中継ノード（たとえば、中継ノード２９１０，２９２０，２９３０）に非実時間データを送信する。また、大グループ間の通信は、小グループ間の中継ノード同士と同様の通信処理手順を実施することにより、実時間通信と非実時間通信との衝突を回避することができる。このように、直接中継ノードを持たないスイッチ同士が隣接することを防ぐことにより、大規模システムにも対応することができる。
【０２７７】
なお、本実施の形態で説明した通信方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本通信プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２７８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２７９】
（付記１）第１のノード及び第２のノードを備える第１のノード群と、第３のノード及び第４のノードを備える第２のノード群との間で、ネットワークを介して第１の通信および第２の通信を実行する該第１のノードであって、
前記第１のノードと前記第３のノードとの間に、前記ネットワークを介する通信経路を設定する設定手段と、
前記第２のノードと前記第４のノードとの間で行われる第２の通信に係るデータであって前記第２のノードから受信した該データから、送信対象のデータを決定する決定手段と、
決定された前記送信対象のデータを、前記通信経路を介して、前記第３のノードに送信する送信手段と、
前記ネットワークの伝送能力に基づいて、前記送信手段によって周期的に実行される送信処理の開始時点から現時点までに、前記送信対象のデータの送信にかかる所要時間を算出する算出手段と、
前記現時点から前記所要時間が経過した時点が、前記第２のノードと前記第４のノードとの間で周期的に実行される第１の通信の開始時点と一致するか否かを判定する判定手段と、
を備え、
前記決定手段は、前記判定手段によって判定された判定結果に基づいて、前記受信したデータから前記送信対象のデータを決定する、
ことを特徴とするノード。
【０２８０】
（付記２）第１の通信の開始時点と一致すると判定された場合、前記受信したデータから、第１の通信の通信先となる前記第４のノードを備える前記第２のノード群の前記第３のノードを宛先としない任意のデータを抽出する抽出手段を備え、
前記決定手段は、前記抽出手段によって抽出されたデータを、前記送信対象のデータに決定することを特徴とする付記１に記載のノード。
【０２８１】
（付記３）前記決定手段は、前記抽出手段によって抽出されたデータのうち、前記現時点から前記所要時間が経過した時点に前記第２のノードと前記第４のノード間で実行される第１の通信に関するデータのデータ量以下であるデータを、前記送信対象のデータに決定することを特徴とする付記２に記載のノード。
【０２８２】
（付記４）前記算出手段は、第１の通信の開始時点と一致しないと判定された場合、前記ネットワークの伝送能力に基づいて、前記現時点から前記所要時間が経過した時点から、第１の通信の前記開始時点となるまでの残余の時間に送信可能なデータ量を算出し、
前記抽出手段は、前記受信されたデータの中から前記算出手段によって算出されたデータ量以下のデータを、抽出することを特徴とする付記２または３に記載のノード。
【０２８３】
（付記５）前記決定手段は、前記受信されたデータのうち前記送信対象のデータが存在しない場合、前記ネットワークの中継装置において破棄されるデータを、前記送信対象のデータに決定することを特徴とする付記１〜４のいずれか一つに記載のノード。
【０２８４】
（付記６）前記送信手段は、
前記通信経路を介して前記第３のノードから受信されるデータから順次決定される前記送信対象のデータを、前記第２のノードに送信することを特徴とする付記１〜５のいずれか一つに記載のノード。
【０２８５】
（付記７）複数のノード群が中継装置を介して接続されたネットワーク内のノードであって、
データ群の中から送信対象として順次決定されるデータを、前記複数のノード群のうち自ノードを含むノード群から選ばれた一のノードに送信する送信手段と、
前記ネットワークの伝送能力に基づいて、前記送信手段によって周期的に実行される送信処理の開始時点から現時点までに前記送信対象として順次決定されたデータ列の送信にかかる所要時間を算出する算出手段と、
前記現時点から前記算出手段によって算出された所要時間が経過した時点が、前記複数のノード群のいずれかのノード間で周期的に実行される通信処理の開始時点と一致するか否かを判定する判定手段と、
前記判定手段によって判定された判定結果に基づいて、前記データ群の中から前記送信対象となるデータを決定する決定手段と、
を備えることを特徴とするノード。
【０２８６】
（付記８）第１のノード及び第２のノードを備える第１のノード群と、第３のノード及び第４のノードを備える第２のノード群との間で、ネットワークを介して第１の通信および第２の通信を実行する該第１のノードのコンピュータに実行させる通信プログラムであって、
前記第２のノードと前記第４のノードとの間で行われる第２の通信に係るデータを前記第２のノードから受信する受信工程と、
前記第１のノードと前記第３のノードとの間に、前記ネットワークを介する通信経路を設定する設定工程と、
前記ネットワークの伝送能力に基づいて、前記受信したデータから送信対象として順次決定されるデータを送信するために周期的に実行される送信処理の開始時点から現時点までに順次決定された前記送信対象のデータの送信にかかる所要時間を算出させる算出工程と、
前記現時点から前記所要時間が経過した時点が、前記第２のノードと前記第４のノードとの間で周期的に実行される第１の通信の開始時点と一致するか否かを判定する判定工程と、
前記判定工程によって判定された判定結果に基づいて、前記受信したデータから前記送信対象のデータを決定する決定工程と、
を前記コンピュータに実行させることを特徴とする通信プログラム。
【０２８７】
（付記９）第１のノード及び第２のノードを備える第１のノード群と、第３のノード及び第４のノードを備える第２のノード群との間で、ネットワークを介して第１の通信および第２の通信を実行する該第１のノードのコンピュータが、
前記第２のノードと前記第４のノードとの間で行われる第２の通信に係るデータを前記第２のノードから受信する受信工程と、
前記第１のノードと前記第３のノードとの間に、前記ネットワークを介する通信経路を設定する設定工程と、
前記ネットワークの伝送能力に基づいて、前記受信したデータから送信対象として順次決定されるデータを送信するために周期的に実行される送信処理の開始時点から現時点までに順次決定された前記送信対象のデータの送信にかかる所要時間を算出させる算出工程と、
前記現時点から前記所要時間が経過した時点が、前記第２のノードと前記第４のノードとの間で周期的に実行される第１の通信の開始時点と一致するか否かを判定する判定工程と、
前記判定工程によって判定された判定結果に基づいて、前記受信したデータから前記送信対象のデータを決定する決定工程と、
を実行することを特徴とする通信方法。
【符号の説明】
【０２８８】
３００，２９００  ネットワークシステム
３１０  ネットワーク
７０１，１５０１  受信部
７０２  設定部
７０３  関連付け部
７０４，１５０３  送信部
７０５，１５０２  検出部
７０６，１５０４  割当部
７０７，１５０５  第１の算出部
７０８，１５０６  判定部
７０９，１５０７  決定部
７１０，１５０９  第２の算出部
７１１，１５０８  抽出部
７１２  判断部
グループノード  ＧＮ
中継ノード  ＪＮ
Ｎ１〜Ｎ１２  ノード
ＳＷ１〜ＳＷ５  スイッチ
【図１】
0005454266.tif 000002
【図２】
0005454266.tif 000003
【図３】
0005454266.tif 000004
【図４】
0005454266.tif 000005
【図５】
0005454266.tif 000006
【図６】
0005454266.tif 000007
【図７】
0005454266.tif 000008
【図８】
0005454266.tif 000009
【図９】
0005454266.tif 000010
【図１０】
0005454266.tif 000011
【図１１】
0005454266.tif 000012
【図１２】
0005454266.tif 000013
【図１３】
0005454266.tif 000014
【図１４】
0005454266.tif 000015
【図１５】
0005454266.tif 000016
【図１６】
0005454266.tif 000017
【図１７】
0005454266.tif 000018
【図１８】
0005454266.tif 000019
【図１９】
0005454266.tif 000020
【図２０】
0005454266.tif 000021
【図２１】
0005454266.tif 000022
【図２２】
0005454266.tif 000023
【図２３】
0005454266.tif 000024
【図２４】
0005454266.tif 000025
【図２５】
0005454266.tif 000026
【図２６】
0005454266.tif 000027
【図２７】
0005454266.tif 000028
【図２８】
0005454266.tif 000029
【図２９】
0005454266.tif 000030