(57)【要約】【課題】データ送信の遅延を抑制する。【解決手段】本方法は、第１装置は、１又は複数のデータブロックについての第１送信スケジュールを、１又は複数のデータブロックの送信先である第２装置に送信し、第２装置は、第１送信スケジュールを第１装置から受信し、第２装置は、受信した第１送信スケジュールと、第２装置の受信リソースとに基づき、受信した第１送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて第２送信スケジュールを決定し、第２装置は、第２送信スケジュールを、第１装置に送信し、第１装置は、第２装置から第２送信スケジュールを受信し、第１装置は、受信した第２送信スケジュールに基づき、当該第２送信スケジュールで規定されているデータブロックを、第２装置に送信する処理を含む。【選択図】図５
2015173361.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置は、１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信先である第２の情報処理装置に送信し、
前記第２の情報処理装置は、前記第１の送信スケジュールを前記第１の情報処理装置から受信し、
前記第２の情報処理装置は、受信した前記第１の送信スケジュールと、前記第２の情報処理装置の受信リソースとに基づき、受信した前記第１の送信スケジュールに含まれる前記１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定し、
前記第２の情報処理装置は、前記第２の送信スケジュールを、前記第１の情報処理装置に送信し、
前記第１の情報処理装置は、前記第２の情報処理装置から前記第２の送信スケジュールを受信し、
前記第１の情報処理装置は、受信した前記第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、前記第２の情報処理装置に送信する
処理を含む、情報通信方法。
【請求項２】
前記第１の送信スケジュールが、複数のタイムスロットについての送信スケジュールであり、
前記第２の送信スケジュールが、前記複数のタイムスロットのうちの少なくともいずれかについての送信スケジュールである
請求項１記載の情報通信方法。
【請求項３】
前記決定する処理が、
前記第１の情報処理装置における送信期限と宛先での到着期限とのうち少なくともいずれかによって前記１又は複数のデータブロックを優先順位付けする処理
を含む請求項１又は２記載の情報通信方法。
【請求項４】
前記決定する処理が、
前記複数のタイムスロットのうちのあるタイムスロットについて、当該あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値以下であるか否かを判断し、
前記あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値を超える場合には、前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、前記あるタイムスロットの前又は後のタイムスロットに割り当てる
処理を含む請求項２記載の情報通信方法。
【請求項５】
前記割り当てる処理が、
前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されるデータブロックを、前記あるタイムスロットの前のタイムスロットに割り当てられるか判断し、
割り当てられない場合には、前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されるデータブロックを、前記あるタイムスロットの後のタイムスロットに割り当てる
処理を含む請求項４記載の情報通信方法。
【請求項６】
前記第１の情報処理装置が複数であって、前記第１の送信スケジュールでスケジュールされたタイムスロットが前記複数の第１の情報処理装置において異なる場合には、
前記決定する処理が、
前記複数の第１の情報処理装置から受信した前記第１の送信スケジュールでスケジュールされたタイムスロットのうち共通するタイムスロットについて、当該あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値以下であるか否かを判断し、
前記あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値を超える場合には、前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、前記あるタイムスロットの前又は後のタイムスロットに割り当てる
処理を含む請求項２記載の情報通信方法。
【請求項７】
前記第１の情報処理装置が、受信したデータブロックの送信期限に応じて第１の送信スケジュールを生成する
処理をさらに含む請求項１乃至６のいずれか１つ記載の情報通信方法。
【請求項８】
前記第１の情報処理装置が、受信したデータブロックの送信期限に応じて、当該データブロックを送信すべきタイムスロットを特定し、
前記第１の情報処理装置が、特定した前記タイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値以下であるか否かを判断し、
前記第１の情報処理装置が、特定した前記タイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値を超える場合には、特定した前記タイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、特定した前記タイムスロットの前又は後のタイムスロットに割り当てる
処理をさらに含む請求項１乃至６のいずれか１つ記載の情報通信方法。
【請求項９】
前記第２の情報処理装置が複数である場合、
前記第１の情報処理装置が、受信したデータブロックの送信期限及び前記第２の情報処理装置に応じて第１の送信スケジュールを生成する
処理をさらに含む請求項１乃至６のいずれか１つ記載の情報通信方法。
【請求項１０】
前記第２の情報処理装置が複数である場合、
前記第１の情報処理装置が、受信したデータブロックの送信期限及び前記第２の情報処理装置に応じて第１の送信スケジュールを生成し、
前記第２の送信スケジュールを受信する処理において、
前記第１の情報処理装置が、前記複数の第２の情報処理装置のうちいずれかの第２の情報処理装置から前記第２の送信スケジュールを受信し、
前記データブロックを送信する処理が、
受信した前記第２の送信スケジュールが、受信した前記第２の送信スケジュールの送信元の第２の情報処理装置に送信した第１の送信スケジュールとは異なる場合、相違があるタイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値を超える場合には、前記相違があるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、前記第２の送信スケジュールより後のタイムスロットに割り当てる
処理を含む請求項１乃至６のいずれか１つ記載の情報通信方法。
【請求項１１】
第１の情報処理装置に、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信先であって前記第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて受信リソースに基づき第２の送信スケジュールを生成する第２の情報処理装置に送信し、
前記第２の情報処理装置から前記第２の送信スケジュールを受信し、
受信した前記第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、前記第２の情報処理装置に送信する
処理を実行させるプログラム。
【請求項１２】
第１の情報処理装置に、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信元である第２の情報処理装置から受信し、
受信した前記第１の送信スケジュールと、前記第２の情報処理装置の受信リソースとに基づき、受信した前記第１の送信スケジュールに含まれる前記１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定し、
前記第２の送信スケジュールを、前記第２の情報処理装置に送信する
処理を実行させるためのプログラム。
【請求項１３】
情報処理装置であって、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信先であって前記第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて受信リソースに基づき第２の送信スケジュールを生成する第２の情報処理装置に送信する第１の送信部と、
前記第２の情報処理装置から前記第２の送信スケジュールを受信する受信部と、
受信した前記第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、前記第２の情報処理装置に送信する第２の送信部と、
を有する情報処理装置。
【請求項１４】
情報処理装置であって、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信元である第２の情報処理装置から受信する受信部と、
受信した前記第１の送信スケジュールと、前記第２の情報処理装置の受信リソースとに基づき、受信した前記第１の送信スケジュールに含まれる前記１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定する決定部と、
前記第２の送信スケジュールを、前記第２の情報処理装置に送信する送信部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノード間におけるデータ送信のスケジューリング技術に関する。
【背景技術】
【０００２】
データを生成する様々なデバイスが分散配備されるようになっている。例えば、スマートフォンは、ＧＰＳ（Global Positioning System）のログデータ、写真、動画などを生成し、センサデバイスは監視データを生成する。このようなデータは、複数のノードを含むネットワークを介して集められ、エンドユーザが用いるアプリケーションや、監視に基づく制御に利用される。
【０００３】
このようなシステムの具体例としては、災害警報システムがある。このシステムでは、河川の水位センサや加速度センサなどからの測定データを常時収集しておき、測定データの値が閾値を超えた際に警報を発する。このようなシステムでは、測定データの値が閾値を超えたという危険な状況を速やかに認識して住民に伝えることが求められる。
【０００４】
また、ある文献には、行動ターゲッティング広告システムのような、利用者の属性や状況に応じた適切な広告を配信するシステムが開示されている。これは、人の好み（例えば購買履歴）や場所の気温などによって、お勧めの広告を表示するシステムである。例えば、表示装置を有する自動販売機で、購入者の好み及び気温などに応じた広告コンテンツを表示させようとすると、ユーザの識別子を取得してから、短時間で広告コンテンツをコンテンツ配信サーバから自動販売機に配信して表示させることになる。そのため、自動販売機への到着期限とデータ送信にかかる時間等から送信時刻を算出して、その送信時刻に従ってデータ送信を行う。但し、多量のデータについて送信時刻が重なると、輻輳が発生してしまう。
【０００５】
また、他のある文献には、主装置と複数の従装置との間で伝送路を介して通信を行う通信システムが開示されている。そして、従装置は、送信予定の情報信号の情報量を伝送路を介して主装置に送信し、主装置は、従装置から受信した情報量に基づき、従装置が送信できる情報量を算出し、従装置に送信する。これに対して従装置は、主装置から、従装置が送信できる情報量を受信すると、その情報量の情報信号を主装置に送信する。
【０００６】
このような通信システムにおける主装置は、単に情報量だけで判断するので、従装置が送信する予定の情報の内容については個別に判断できない。よって、主装置への送信が遅れてしまう場合がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−６１８６９号公報
【特許文献２】特開２０００−２７００１０号公報
【特許文献３】特開２０１３−２５４３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従って、本発明の目的は、一側面によれば、データ送信の遅延を抑制するための技術を提供することである。
【課題を解決するための手段】
【０００９】
本発明の一側面に係る情報通信方法は、（Ａ）第１の情報処理装置は、１又は複数のデータブロックについての第１の送信スケジュールを、１又は複数のデータブロックの送信先である第２の情報処理装置に送信し、（Ｂ）第２の情報処理装置は、第１の送信スケジュールを第１の情報処理装置から受信し、（Ｃ）第２の情報処理装置は、受信した第１の送信スケジュールと、第２の情報処理装置の受信リソースとに基づき、受信した第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定し、（Ｄ）第２の情報処理装置は、第２の送信スケジュールを、第１の情報処理装置に送信し、（Ｅ）第１の情報処理装置は、第２の情報処理装置から第２の送信スケジュールを受信し、（Ｆ）第１の情報処理装置は、受信した第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、第２の情報処理装置に送信する処理を含む。
【００１０】
本発明の一側面に係る情報処理装置は、（Ｇ）１又は複数のデータブロックについての第１の送信スケジュールを、１又は複数のデータブロックの送信先であって第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて受信リソースに基づき第２の送信スケジュールを生成する第２の情報処理装置に送信する第１の送信部と、（Ｈ）第２の情報処理装置から第２の送信スケジュールを受信する受信部と、（Ｉ）受信した第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、第２の情報処理装置に送信する第２の送信部とを有する。
【００１１】
本発明の一側面に係る情報処理装置は、（Ｊ）１又は複数のデータブロックについての第１の送信スケジュールを、１又は複数のデータブロックの送信元である第２の情報処理装置から受信する受信部と、（Ｋ）受信した第１の送信スケジュールと、第２の情報処理装置の受信リソースとに基づき、受信した第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定する決定部と、（Ｌ）第２の送信スケジュールを、第２の情報処理装置に送信する送信部とを有する。
【発明の効果】
【００１２】
一側面によれば、データ送信の遅延を抑制できるようになる。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施の形態に係るシステムの概要を示す図である。
【図２】図２は、第１の実施の形態等に係る変数を説明するための図である。
【図３】図３は、第１の実施の形態に係るタイムスロットを説明するための図である。
【図４Ａ】図４Ａは、第１の実施の形態の処理概要を説明するための図である。
【図４Ｂ】図４Ｂは、第１の実施の形態の処理概要を説明するための図である。
【図４Ｃ】図４Ｃは、第１の実施の形態の処理概要を説明するための図である。
【図４Ｄ】図４Ｄは、第１の実施の形態の処理概要を説明するための図である。
【図５】図５は、第１の実施の形態に係るノードの構成例を示す図である。
【図６】図６は、第１の実施の形態に係るノードが受信するメッセージのフォーマット例を示す図である。
【図７】図７は、第１の実施の形態に係るノードが受信するメッセージのフォーマット例を示す図である。
【図８】図８は、レイテンシデータ格納部に格納されるデータのフォーマット例を示す図である。
【図９】図９は、リンクデータ格納部に格納されるデータのフォーマット例を示す図である。
【図１０】図１０は、データ転送ルート格納部に格納されるデータのフォーマット例を示す図である。
【図１１Ａ】図１１Ａは、データキューのデータ構造例を示す図である。
【図１１Ｂ】図１１Ｂは、データキューのデータ構造例を示す図である。
【図１２】図１２は、リソース管理データ格納部に格納されるデータのフォーマット例を示す図である。
【図１３】図１３は、リソース管理データ格納部に格納されるデータのフォーマット例を示す図である。
【図１４】図１４は、スケジューリングデータ格納部に格納されるデータのフォーマット例を示す図である。
【図１５】図１５は、第１の実施の形態に係るデータ受信時における処理フローを示す図である。
【図１６】図１６は、スケジュールネゴシエータが実行する処理の処理フローを示す図である。
【図１７】図１７は、スケジューリング要求のデータフォーマット例を示す図である。
【図１８】図１８は、ＪＳＯＮ形式におけるスケジューリング要求の例を示す図である。
【図１９】図１９は、スケジュールネゴシエータが実行する処理の処理フローを示す図である。
【図２０】図２０は、データ送信部が実行する処理の処理フローを示す図である。
【図２１】図２１は、第２スケジューラが実行する処理の処理フローを示す図である。
【図２２】図２２は、スケジューリング処理部の処理内容を説明するための図である。
【図２３】図２３は、第２スケジューラが実行する処理の処理フローを示す図である。
【図２４】図２４は、メッセージのソートを説明するための図である。
【図２５】図２５は、メッセージのソートを説明するための図である。
【図２６】図２６は、第２スケジューラが実行する処理の処理フローを示す図である。
【図２７】図２７は、第２スケジューラが実行する処理の処理フローを示す図である。
【図２８】図２８は、メッセージのソートを説明するための図である。
【図２９】図２９は、第２の実施の形態に係るリンクデータ格納部に格納されるデータのフォーマット例を示す図である。
【図３０】図３０は、第２の実施の形態に係るデータキューに格納されるデータのフォーマット例を示す図である。
【図３１】図３１は、第２の実施の形態に係るリソースデータ格納部に格納されるデータのフォーマット例を示す図である。
【図３２】図３２は、第２の実施の形態に係るリソースデータ格納部に格納されるデータのフォーマット例を示す図である。
【図３３】図３３は、第２の実施の形態に係るスケジューリング要求のデータフォーマット例を示す図である。
【図３４】図３４は、第２の実施の形態に係る（ＪＳＯＮ形式）スケジューリング要求のデータフォーマット例を示す図である。
【図３５】図３５は、第２の実施の形態におけるレイテンシの計算を説明するための図である。
【図３６】図３６は、第２の実施の形態に係るデータ受信部により実行される処理の処理フローを示す図である。
【図３７】図３７は、第２の実施の形態に係る第２スケジューラの処理を説明するための図である。
【図３８】図３８は、第３の実施の形態に係るスケジューリング処理部等により実行される処理の処理フローを示す図である。
【図３９】図３９は、第３の実施の形態に係るスケジューリング処理部等により実行される処理の処理フローを示す図である。
【図４０】図４０は、第３の実施の形態に係るスケジューリング処理部の処理内容を示す図である。
【図４１】図４１は、第３の実施の形態に係るスケジューリング処理部等により実行される処理の処理フローを示す図である。
【図４２】図４２は、第３の実施の形態に係るスケジューリング処理部等により実行される処理の処理フローを示す図である。
【図４３】図４３は、第３の実施の形態に係るスケジューリング処理部の処理内容を示す図である。
【図４４】図４４は、第３の実施の形態に係るスケジューリング処理部等により実行される処理の処理フローを示す図である。
【図４５】図４５は、第３の実施の形態に係るスケジューリング処理部の処理内容を示す図である。
【図４６】図４６は、第３の実施の形態に係るスケジューリング処理部の処理内容を示す図である。
【図４７】図４７は、第４の実施の形態に係るノードの構成例を示す図である。
【図４８】図４８は、第４の実施の形態に係るリソースデータ格納部に格納されるデータのフォーマット例を示す図である。
【図４９】図４９は、第４の実施の形態に係る第１スケジューラなどが実行する処理の処理フローを示す図である。
【図５０】図５０は、第４の実施の形態に係る第１スケジューラなどが実行する処理の処理フローを示す図である。
【図５１】図５１は、第５の実施の形態に係るリソースデータ格納部に格納されるデータのフォーマット例を示す図である。
【図５２】図５２は、第５の実施の形態に係る第１スケジューラなどが実行する処理の処理フローを示す図である。
【図５３】図５３は、第５の実施の形態に係る第１スケジューラなどが実行する処理の処理フローを示す図である。
【図５４】図５４は、第６の実施の形態に係るシステムの概要を示す図である。
【図５５】図５５は、第６の実施の形態に係るノードの構成例を示す図である。
【図５６】図５６は、第６の実施の形態に係るメッセージ受信時における処理の処理フローを示す図である。
【図５７】図５７は、第６の実施の形態に係るリスケジューラが実行する処理の処理フローを示す図である。
【図５８】図５８は、第７の実施の形態に係るリスケジューラなどが実行する処理の処理フローを示す図である。
【図５９】図５９は、第７の実施の形態に係るリスケジューラなどが実行する処理の処理フローを示す図である。
【図６０Ａ】図６０Ａは、第７の実施の形態に係るリスケジューラなどの処理を説明するための図である。
【図６０Ｂ】図６０Ｂは、第７の実施の形態に係るリスケジューラなどの処理を説明するための図である。
【図６０Ｃ】図６０Ｃは、第７の実施の形態に係るリスケジューラなどの処理を説明するための図である。
【図６０Ｄ】図６０Ｄは、第７の実施の形態に係るリスケジューラなどの処理を説明するための図である。
【図６０Ｅ】図６０Ｅは、第７の実施の形態に係るリスケジューラなどの処理を説明するための図である。
【図６１】図６１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１４】
［実施の形態１］
本発明の第１の実施の形態に係るシステムの概要を図１に示す。図１におけるデータ収集配信システムは、複数のノードＡ乃至Ｃを含む。ノードＡ及びＢは、センサなどのデータソースからデータを受信して、ノードＣに送信する。ノードＣは、データを処理する１又は複数のアプリケーションに出力する。
【００１５】
本実施の形態に係るデータ収集配信システムに含まれるノードの数は３に限定されるものではなく、データソースからアプリケーションまでの間に設けられるノードの段数も２に限定されるものではなく、２以上であればよい。すなわち、本実施の形態では、複数段構成になるようにノードが接続される。
【００１６】
ここで以下の説明で用いる変数の定義について説明しておく。ここでは、以下の説明を分かりやすくするために、図２に示すように、ノードＮｄa乃至Ｎｄcによる３段構成になっているものとする。
【００１７】
図２に示すように、ノードＮｄaとノードＮｄbとの間にはリンクＬa,bが設けられ、ノードＮｄbとノードＮｄcとの間にはリンクＬb,cが設けられている。そして、リンクＬa,bのデータ転送遅延（レイテンシ）をｌa,bと表し、リンクＬb,cのデータ転送遅延をｌb,cと表す。
【００１８】
このとき、データｄj（データのサイズはｓjバイトと表すものとする）の転送ルートが［Ｌa,b，Ｌb,c］であるとすると、ノードＮｄaからノードＮｄcまでのエンドツーエンド（end to end）のタイムリミット（time limit。到達期限又は送達期限とも呼ぶ。）をｔlim,jと表すものとする。また、データｄjの、ノードＮｄaでの送信期限ｔlim,j,aは、ｔlim,j−ｓｕｍ（［ｌa,b，ｌb,c］）（ｓｕｍは総和を表す）となる。同様に、データｄjの、ノードＮｄbでの送信期限ｔlim,j,bは、ｔlim,j−ｌb,cとなる。
【００１９】
なお、リンクＬa,bの帯域（ｂｐｓ（bit per second））をｃa,bと表す。
【００２０】
また、以下で説明するタイムスロットについても、図３を用いて説明する。タイムスロットの幅をΔｔと表し、ｉ番目のタイムスロットをｔiと表す。また、１度にスケジューリングを行うタイムスロットの数をｗと表すと、スケジューリングの幅（すなわちスケジューリングウィンドウ）はｗΔｔとなる。なお、ノードＮｄxにおいてスケジューリング要求を行う処理の周期（起動１と起動２の間隔、起動２と起動３の間隔）をＴSR,xと表し、スケジューリング要求を行う処理の起動から、スケジューリング対象のスケジューリングウインドウの先頭時刻との差をＭxと表すものとする。なお、ノードＮｄxにおいて、スケジューリング要求を処理する側の処理の周期をＴTLS-inter,xと表すものとする。
【００２１】
本実施の形態では、図４Ａで示すように、ノードＡでの送信スケジュールと、ノードＢでの送信スケジュールとを、ノードＣに送信する。送信スケジュールは、スケジューリングウィンドウ（ここではｗ＝４）内の各スロットにおいて送信すべきデータに関する情報を含んでいる。具体的には、宛先までの送達期限ｔlim,j及び送信元のノードにおける送信期限ｔlim,j,xを含む。図４Ａでは、４つのタイムスロットの各々に割り当てられたデータをブロック状に示しており、以下１塊のデータをデータブロックと呼ぶものとする。
【００２２】
ノードＣは、ノードＡ及びＢから送信スケジュールを受信すると、図４Ｂに示すように送信スケジュールを重ね合わせて、各タイムスロットにおいてノードＣの受信リソース以内に送信されるデータが収まっているか否かを判断する。図４Ｂの例では、６つのデータブロックまで１タイムスロット内で受信できるものとする。そうすると３つ目のタイムスロットでは、１つのデータブロックが受信できないことが分かる。そうすると、３つ目のタイムスロットに割り当てられているデータブロックを、ｔlim,j,x及びｔlim,jでソートし、データブロックの優先順位付けを行う。ノードＣは、優先順位に基づきデータブロックを選択して、他のタイムスロットにスケジュールし直すが、図４Ｃに示すように、ここでは受信リソースが余っている１つ手前のタイムスロットに、選択されたデータブロックを割り当てる。そして、ノードＣは、このようなスケジューリングの結果をノードＡ及びノードＢに返信する。図４Ｄに示すように、ノードＢのスケジューリング結果は、元の送信スケジュールと同じであるが、ノードＡのスケジューリング結果は、２番目のタイムスロットと３番目のタイムスロットとで異なっている。ノードＡ及びＢは、このようなスケジューリング結果に従って、データブロックを送信する。
【００２３】
次に、このような処理を行うためのノードＡ乃至Ｃの構成例を図５に示す。ノードは、データ受信部１０１と、第１スケジューラ１０２と、リンクデータ格納部１０３と、データ転送ルート格納部１０４と、レイテンシデータ格納部１０５と、データキュー１０６と、データ送信部１０７と、スケジュールネゴシエータ１０８と、第２スケジューラ１０９と、リソース管理データ格納部１１０と、スケジューリングデータ格納部１１１とを有する。
【００２４】
データ受信部１０１は、他のノードやデータソースからメッセージを受信する。なお、ノード自身が、メッセージに含まれるデータに対して処理を行う場合には、データ受信部１０１の前段で処理を行うものとする。本実施の形態において、データ受信部１０１が受信するメッセージのフォーマット例を図６及び図７に示す。データソースから受信したメッセージの場合には、図６に示すように、データのＩＤ（ｄj）と、データの宛先次ノード（直接の送信先のノード）のＩＤと、データ本体とを含む。データ本体はデータのＩＤを含む場合もある。また、宛先次ノードのＩＤではなく、宛先次ノードを特定するためのキーを含むようにして、当該キーから宛先次ノードのＩＤを特定するためのデータ構造を利用して宛先次ノードのＩＤを特定するようにしても良い。
【００２５】
なお、他のノードから受信したメッセージの場合には、図７に示すように、データのＩＤと、データの宛先次ノードのＩＤと、データｄjの宛先までの送達期限ｔlim,jと、データ本体とを含む。
【００２６】
レイテンシデータ格納部１０５は、図８に示すように、データのＩＤ毎に、当該データ発生から宛先までの送達に許容される遅延時間を格納している。
【００２７】
また、リンクデータ格納部１０３は、図９に示すように、リンクＩＤ毎に、送信元（Source）ノードのＩＤと、宛先（Destination）ノードのＩＤと、当該リンクの遅延時間とを格納している。
【００２８】
また、データ転送ルート格納部１０４は、図１０に示すように、データのＩＤ毎に、当該データが経由する転送ルートのリンクＩＤ配列（［Ｌ1,2，Ｌ2,3，．．，Ｌn-1,n］）を格納している。
【００２９】
第１スケジューラ１０２は、リンクデータ格納部１０３とデータ転送ルート格納部１０４とレイテンシデータ格納部１０５とを用いて、受信したメッセージに対して宛先までの送達期限（到着期限）を特定し、本ノードにおける送信期限を特定し、メッセージのデータと共に、データキュー１０６に格納する。
【００３０】
データキュー１０６のデータ構造例を図１１Ａ及び図１１Ｂに示す。図１１Ａの例では、開始時刻と終了時刻とで特定されるタイムスロット毎に、当該タイムスロットのためのキューへのポインタ（又はリンク）が登録されるようになっている。キューには、当該キューに投入されたメッセージ（データブロックに対応）が格納される。
【００３１】
図１１Ｂに、キューに投入されたデータのデータフォーマット例を示す。図１１Ｂの例では、データのＩＤと、宛先までの送達期限と、本ノードにおける送信期限と、データ本体又はデータへのリンクとが含まれる。
【００３２】
データ送信部１０７は、データキュー１０６に規定されているタイムスロット毎に、当該タイムスロットに割り当てられているメッセージを宛先ノードやアプリケーションに送信する。
【００３３】
スケジュールネゴシエータ１０８は、スケジューリング要求部１０８１と、スケジュール受信部１０８２と、リスケジューラ１０８３とを有する。
【００３４】
スケジューリング要求部１０８１は、データキュー１０６に格納されているデータから、送信スケジュールを含むスケジューリング要求を、メッセージ送信先のノードに送信する。スケジュール受信部１０８２は、メッセージ送信先のノードからスケジューリング結果を含むスケジュール通知を受信し、リスケジューラ１０８３に出力する。リスケジューラ１０８３は、受信したスケジューリング結果に従って、データキュー１０６の内容を更新する。
【００３５】
また、第２スケジューラ１０９は、要求受信部１０９１と、スケジューリング部１０９２と、通知部１０９３とを有する。
【００３６】
要求受信部１０９１は、他のノードからスケジューリング要求を受信してスケジューリングデータ格納部１１１に格納し、スケジューリング処理部１０９２に出力する。スケジューリング処理部１０９２は、複数ノードからのスケジューリング要求に基づき、リソース管理データ格納部１１０に格納されているデータを用いて、各ノードの送信スケジュールを変更する。
【００３７】
リソース管理データ格納部１１０には、例えば図１２及び図１３で示すようなデータフォーマットでデータが格納される。すなわち、図１２の例では、開始時刻と終了時刻とで特定されるタイムスロット毎に、ノードの受信リソースの使用済み数と空き数と最大数と、当該タイムスロットについてのキュー（データリストとも呼ぶ）へのポインタとが格納される。この例では、タイムスロットの幅は１秒で、１０データブロック（すなわち１０メッセージ）を１タイムスロットで受信できるようになっている。
【００３８】
キューには、当該キューに投入された、データブロックに関する情報が格納される。但し、この情報は、図１３に示すように、データブロック毎に、データのＩＤと、送達期限ｔlim,jと、要求元ノードｘの送信期限ｔlim,j,xとを含む。
【００３９】
また、スケジューリングデータ格納部１１１には、例えば図１４に示すようなデータフォーマットでデータが格納される。すなわち、スケジューリング要求元のノードのＩＤ毎に、スケジューリング要求本体又はそれへのリンクと、スケジューリング結果とが格納される。
【００４０】
通知部１０９３は、スケジューリング処理部１０９２によって生成されたスケジューリング結果を、各ノードへ送信する。
【００４１】
次に、図１５乃至図２８を用いて、ノードの処理内容について説明する。
【００４２】
まず、図１５を用いてメッセージ受信時の処理内容について説明する。なお、アンダーバーは、表記の問題を解決するために下付け文字を表すものとする。
【００４３】
データ受信部１０１は、データ（ｄj）を含むメッセージを受信し、第１スケジューラ１０２に出力する（ステップＳ１）。自ノードがデータソースに接続されている最上流ノードであれば（ステップＳ３：Ｙｅｓルート）、第１スケジューラ１０２は、データのＩＤ「ｄj」でレイテンシデータ格納部１０５を検索して、宛先までに許容される遅延時間を読み出して、送達期限ｔlim,jを取得する（ステップＳ５）。例えば、現時刻＋遅延時間にて送達期限を算出する。なお、レイテンシデータ格納部１０５に送達期限そのものが格納されていれば、それを用いる。一方、自ノードが最上流ノードでなければ（ステップＳ３：Ｎｏルート）、処理はステップＳ９に移行する。
【００４４】
また、第１スケジューラ１０２は、受信したメッセージヘッダに送達期限ｔlim,jを追加する（ステップＳ７）。これによって、図７に示すようなメッセージが生成される。
【００４５】
さらに、第１スケジューラ１０２は、データ転送ルート格納部１０４をｄjで検索して転送ルート［Ｌx,y］を読み出す（ステップＳ９）。転送ルートは、リンクＩＤの配列データであるものとする。
【００４６】
そして、第１スケジューラ１０２は、転送ルート［Ｌx,y］の各リンクＩＤでレイテンシデータ格納部１０５を検索して、各リンクの遅延時間（レイテンシ）ｌx,yを読み出す（ステップＳ１１）。
【００４７】
その後、第１スケジューラ１０２は、送達期限ｔlim,j及びレイテンシｌx,yから、本ノードの送信期限ｔlim,j,xを算出する（ステップＳ１３）。具体的には、ｔlim,j−Σｌx,y（転送経路上の全リンクについての総和）によって計算する。
【００４８】
そして、第１スケジューラ１０２は、送信期限ｔlim,j,xから送出要求時刻ｔreq,j,xを決定する（ステップＳ１５）。ｔlim,j,x＝ｔreq,j,xの場合もあれば、一定のマージンαを考慮してｔreq,j,x＝ｔlim,j,x−αと設定する場合もある。なお、以下の説明では、説明を簡単にするため、送信期限＝送出要求時刻とする。
【００４９】
そして、第１スケジューラ１０２は、送出要求時刻ｔreq,j,xのタイムスロットに、メッセージを付加データと共に投入する（ステップＳ１７）。図１１Ｂに示すようなデータが格納される。
【００５０】
以上のような処理を、メッセージを受信する毎に実行する。
【００５１】
次に、図１６乃至図２０を用いて、スケジュールネゴシエータ１０８の処理内容について説明する。
【００５２】
まず、スケジュールネゴシエータ１０８は、時間間隔ＴSR,xの起動タイミングであるか否かを判断する（図１６：ステップＳ２１）。起動タイミングでなければ処理はステップＳ２９に移行する。一方、起動タイミングであれば、スケジューリング要求部１０８１を起動させ、スケジューリング要求部１０８１は、今回のスケジューリングウィンドウを決定する（ステップＳ２３）。具体的には、図３で説明したように、現在時刻ｔとすると、ｔ＋Ｍxからｔ＋Ｍx＋ｗΔｔまでが今回のスケジューリングウィンドウとなる。なお、本実施の形態では、システム内の全ノードが同期しているものとする。
【００５３】
そして、スケジューリング要求部１０８１は、データキュー１０６から、スケジューリングウィンドウ内のデータ（データ本体を除く）を読み出し、スケジューリング要求を生成する（ステップＳ２５）。
【００５４】
スケジューリング要求のデータフォーマット例を図１７に示す。図１７の例では、送信元ノードＩＤと、宛先ノードＩＤと、各タイムスロットのデータとが含まれる。各タイムスロットのデータは、当該タイムスロットの識別情報（例えば開始時刻−終了時刻）と、各データブロック（メッセージ）について、データのＩＤと、送達期限と、送信期限とが含まれる。
【００５５】
例えば、ＪＳＯＮ（Javascript Object Notation）形式で具体値を入れると、図１８に示すようになる。図１８の例では、第１のタイムスロットについては２つのデータブロックに関するデータが含まれ、第２のタイムスロットについても２つのデータブロックに関するデータが含まれ、最後のタイムスロットについても２つのデータブロックに関するデータが含まれる。
【００５６】
その後、スケジューリング要求部１０８１は、スケジューリング要求を、データの送信先に送信する（ステップＳ２７）。
【００５７】
そして、スケジュールネゴシエータ１０８は、処理終了が指示されたか判断し（ステップＳ２９）、処理終了ではない場合には処理はステップＳ２１に戻る。一方、処理終了であれば、処理を終了する。
【００５８】
このように複数のタイムスロットについてスケジューリング要求を行うことで、送信タイミングの調整が適切に行われるようになる。
【００５９】
次に、図１９及び図２０を用いて、スケジュール結果を受信した際の処理を説明する。
【００６０】
スケジュール受信部１０８２は、スケジュール結果を含むスケジュール通知を受信し（図１９：ステップＳ３１）、リスケジューラ１０８３に出力する。スケジュール通知のデータフォーマットは、図１７及び図１８に示したようなフォーマットである。
【００６１】
そして、リスケジューラ１０８３は、スケジュール通知を受信すると、スケジュール通知に従って、データキュー１０６におけるメッセージ（すなわちデータブロック）が投入されるタイムスロットを更新する処理を行う（ステップＳ３３）。スケジュール通知で通知された送信スケジュールとスケジューリング要求における送信スケジュールとが一致する場合もあるので、その場合には特に処理は行わない。異なるタイムスロットに移動させられた場合には、そのタイムスロットのキューにエンキューする。そのタイムスロットのデータがなければ、この段階で生成する。
【００６２】
このようにすれば、送信先ノードにおいて調整された送信スケジュールを、データキュー１０６に反映させることができる。
【００６３】
次に、データ送信部１０７の処理内容について、図２０を用いて説明する。
【００６４】
データ送信部１０７は、タイムスロット幅Δｔの起動タイミングｔになったか否かを判断する（図２０：ステップＳ４１）。起動タイミングｔになっていない場合には、処理はステップＳ５３に移行する。一方、起動タイミングｔになると、データ送信部１０７は、データキュー１０６における時刻ｔからｔ＋Δｔのタイムスロットのキューから、メッセージ（すなわちデータブロック）を読み出す処理を行う（ステップＳ４３）。
【００６５】
ステップＳ４３でメッセージのデータを読み出すことができなければ（ステップＳ４５：Ｎｏルート）、このタイムスロットについての処理は終了することになる。
【００６６】
一方、メッセージのデータを読み出すことができれば（ステップＳ４５：Ｙｅｓルート）、データ送信部１０７は、自ノードが転送経路の末端ノードであるか否かを判断する（ステップＳ４７）。すなわち、アプリケーションにメッセージを出力するノードであるか否かを判断する。
【００６７】
そして、自ノードが末端ノードである場合には、データ送信部１０７は、読み出したメッセージに付加されている送達期限を削除する（ステップＳ４９）。一方、自ノードが末端ノードでない場合には、処理はステップＳ５１に移行する。
【００６８】
その後、データ送信部１０７は、読み出したメッセージを、宛先に送信する（ステップＳ５１）。そして、データ送信部１０７は、処理終了であるか否かを判断し（ステップＳ５３）、処理が終了でなければ処理はステップＳ４１に戻る。一方、処理が終了であれば、処理を終了する。
【００６９】
このように送信先ノードによって決定された送信スケジュールに従ってメッセージを送信できるようになる。従って、送信先ノードでは、その受信リソースで受信できるだけのデータが送信される。よって、データの遅延が抑制される。
【００７０】
次に、第２スケジューラ１０９の処理内容について、図２１乃至図２８を用いて説明する。
【００７１】
第２スケジューラ１０９の要求受信部１０９１は、データソースに近い各ノードから、スケジューリング要求を受信し、スケジューリング処理部１０９２に出力すると共に、スケジューリングデータ格納部１１１に格納する（図２１：ステップＳ６１）。
【００７２】
そして、第２スケジューラ１０９のスケジューリング処理部１０９２は、各スケジューリング要求を、各タイムスロットについて展開して、各タイムスロットでメッセージ数（データブロック数）を合算する（ステップＳ６３）。この処理結果については、図１２及び図１３に示すように、リソース管理データ格納部１１０に格納される。
【００７３】
図２２に本ステップの具体例を示す。図２２の例では、ノードＡ乃至Ｃからスケジューリング要求を受信した場合を示しており、各々４つのタイムスロットについての送信スケジュールのデータが含まれる。このような送信スケジュールを、各タイムスロットについて重ね合わせると、図２２の右側のようになる。このような状態を表すデータが、図１２及び図１３に示すようなデータフォーマットで格納される。この例では、１番目のタイムスロットは、受信リソースの上限である８つのデータブロックで満たされ、２番目のタイムスロットは受信リソースより少ない６つのデータブロックが割り当てられており、３番目のタイムスロットは受信リソースを超える９つのデータブロックが割り当てられており、４番目のタイムスロットは受信リソースより少ない７つのデータブロックが割り当てられている。
【００７４】
そうすると、スケジューリング処理部１０９２は、各タイムスロットで送信されるメッセージの数（データブロックの数）は、受信リソースの範囲内（すなわち、最大値以下）であるか否かを判断する（ステップＳ６５）。各タイムスロットで送信されるメッセージの数が受信リソースの範囲内であれば、スケジューリング処理部１０９２は、スケジューリングデータ格納部１１１に格納されているスケジューリング要求の内容をそのまま含むスケジュール通知を、通知部１０９３に出力し、各要求元ノードに送信させる（ステップＳ６７）。このような場合には、各ノードの送信スケジュールを変更せずとも受信できるためである。
【００７５】
そして、スケジューリング処理部１０９２は、各スケジュール通知の内容を、スケジューリングデータ格納部１１１に格納する（ステップＳ６９）。また、スケジューリング処理部１０９２は、今回受信した各スケジュール要求を破棄する（ステップＳ７１）。
【００７６】
一方、いずれかのタイムスロットのメッセージの数が受信リソースの範囲を超える場合には、処理は端子Ａを介して図２３の処理に移行する。
【００７７】
まず、スケジューリング処理部１０９２は、タイムスロットのカウンタｎを１に初期化する（ステップＳ７３）。そして、スケジューリング処理部１０９２は、ｎ番目のタイムスロットのメッセージの数が受信リソースを超えているか判断する（ステップＳ７５）。ｎ番目のタイムスロットのメッセージの数が受信リソースの範囲内であれば、処理は端子Ｃを介して図２６の処理に移行する。
【００７８】
一方、ｎ番目のタイムスロットのメッセージの数が受信リソースを超えている場合には、スケジューリング処理部１０９２は、ｎ番目のタイムスロット内のメッセージを、送信元ノードの送信期限を第１のキーとして、送達期限を第２のキーとしてソートする（ステップＳ７７）。
【００７９】
図２２の３番目のタイムスロットについて図２４及び図２５を用いて本ステップの具体例を説明する。なお、キュー（データリストとも呼ぶ）の上が先頭で下が末尾であるものとする。図２４では、９つのメッセージ（データブロック）のうち１番目から４番目がノードＡについてのメッセージであり、５及び６番目がノードＢについてのメッセージであり、７番目から９番目がノードＣについてのメッセージである。ｅ２ｅ＿ｌｉｍは送達期限を表し、ｌｏｃａｌ＿ｌｉｍはノードの送信期限を表すとする。上で述べたように、送信期限及び送達期限でこれらのメッセージをソートすると、図２５のような結果が得られる。すなわち、同じタイムスロットに割り当てられているメッセージが送信期限及び送達期限から優先順位付けされることになる。
【００８０】
その後、スケジューリング処理部１０９２は、ｎ番目のタイムスロットより前のタイムスロットに、受信リソースの空きがあるか判断する（ステップＳ７９）。空きがなければ処理は端子Ｂを介して図２６の処理に移行する。送信を前倒しできれば、データ送信遅延の可能性を抑制できるため、先に前のタイムスロットを判断する。
【００８１】
一方、ｎ番目のタイムスロットより前のタイムスロットに空きがあれば、スケジューリング処理部１０９２は、ｎ番目のタイムスロットの先頭から、空きのあるタイムスロットの末尾にメッセージを移動させる（ステップＳ８１）。
【００８２】
図２２に示した例では、３番目のタイムスロットより前の２番目のタイムスロットに空きがあるので、３番目のタイムスロットの先頭のメッセージを、２番目のタイムスロットの末尾に移動させる。
【００８３】
なお、２以上のメッセージが受信リソースの範囲を超える場合もある。この場合には、ｎ番目のタイムスロットより前のタイムスロットの空き数だけ、ｎ番目のタイムスロットの先頭からメッセージを取り出して、移動させる。３つのメッセージが受信リソースの範囲を超えるが、前のタイムスロットに２つしか空きがない場合には、２つだけメッセージを前のタイムスロットに移動させる。残りの１つは以下の処理で対応策が決定される。
【００８４】
そして、スケジューリング処理部１０９２は、ｎ番目のスロットにはまだ受信リソースの範囲を超えるメッセージが割り当てられている状態であるか否かを判断する（ステップＳ８３）。この条件を満たす場合には、処理は端子Ｂを介して図２６の処理に移行する。
【００８５】
一方、ｎ番目のスロットのメッセージの数が受信リソースの範囲内となった場合には、処理は端子Ｃを介して図２６の処理に移行する。
【００８６】
図２６の処理の説明に移行して、スケジューリング処理部１０９２は、ｎ番目のタイムスロットより後のタイムスロットに空きがあるか否かを判断する（ステップＳ８５）。空きがない場合には、処理はステップＳ９１に移行する。
【００８７】
一方、ｎ番目より後ろのスロットにタイムスロットに空きがある場合には、スケジューリング処理部１０９２は、ｎ番目のタイムスロットの末尾から、空きのあるタイムスロットの先頭にメッセージを移動させる（ステップＳ８７）。
【００８８】
図２２に示した例で、３番目のタイムスロットより前に空きがないと仮定した場合、４番目のタイムスロットにも空きがあるので、３番目のタイムスロットの末尾のメッセージを、４番目のタイムスロットの先頭に移動させる。
【００８９】
なお、２以上のメッセージが受信リソースの範囲を超える場合もある。この場合には、ｎ番目のタイムスロットより後のタイムスロットの空き数だけ、ｎ番目のタイムスロットの末尾からメッセージを取り出して、移動させる。３つのメッセージが受信リソースの範囲を超えるが、後のタイムスロットに２つしか空きがない場合には、２つだけメッセージを後のタイムスロットに移動させる。残りの１つは後に処理される。
【００９０】
さらに、スケジューリング処理部１０９２は、ｎ番目のタイムスロットにはまだ受信リソースの範囲を超えるメッセージが割り当てられている状態であるか否かを判断する（ステップＳ８９）。この条件を満たさない場合には、処理はステップＳ９５に移行する。
【００９１】
この条件を満たす場合には、スケジューリング処理部１０９２は、今回のスケジューリングウィンドウの後ろにタイムスロットを追加する（ステップＳ９１）。そして、スケジューリング処理部１０９２は、ｎ番目のスロットの末尾から、追加タイムスロットの先頭に、この段階で受信リソースの範囲を超えた分のメッセージを移動させる（ステップＳ９３）。
【００９２】
このようにすれば、スケジューリングウィンドウの各タイムスロットにおいては、受信リソースの範囲内にメッセージの受信を抑制できるので、輻輳が抑制され、データ送信の遅延が抑制される。
【００９３】
そして、スケジューリング処理部１０９２は、カウンタｎが、スケジューリングウィンドウ内のタイムスロット数ｗ以上となったか判断する（ステップＳ９５）。この条件を満たさない場合には、スケジューリング処理部１０９２は、ｎを１インクリメントして（ステップＳ９７）、処理は端子Ｄを介して図２３のステップＳ７５に戻る。一方、ｎがｗ以上となると、処理は端子Ｅを介して図２７の処理に移行する。
【００９４】
図２７の処理の説明に移行して、スケジューリング処理部１０９２は、各要求元ノードについて、そのメッセージのスケジューリング結果（すなわち送信スケジュール）を抽出して、スケジュール通知を生成し、各要求元ノードへ通知部１０９３に送信させる（ステップＳ９９）。
【００９５】
図２８に示すように、ノードＡでは、３番目のタイムスロットにおけるノードＡのデータブロック（メッセージ）を、２番目のタイムスロットに移動させるので、ノードＡに対するスケジュール通知では、１番目から４番目までのタイムスロットで均等にデータブロック（メッセージ）を送信するという送信スケジュールを指示するようになる。
【００９６】
そして、スケジューリング処理部１０９２は、各スケジュール通知の内容を、スケジューリングデータ格納部１１１に格納する（ステップＳ１０１）。また、スケジューリング処理部１０９２は、今回受信した各スケジュール要求を破棄する（ステップＳ１０３）。
【００９７】
このような処理を行えば、データの受信側のリソースの範囲内で送信元ノードからデータを受信できるようになり、輻輳が抑制され、データの遅延が抑制される。
【００９８】
［実施の形態２］
第１の実施の形態では、各メッセージのサイズが同じであることを前提にして説明したが、メッセージのサイズが異なる場合もある。本実施の形態では、併せてリンクの送信能力をも考慮して処理する場合について説明する。
【００９９】
なお、図５に示したノードの構成は、本実施の形態においてもおおよそ同じであるが、保持するデータの内容については異なるものもある。
【０１００】
本実施の形態に係るリンクデータ格納部１０３には、図２９に示すようなデータフォーマットでデータが格納される。図２９の例では、リンク毎に、リンクのＩＤと、送信元ノードのＩＤと、宛先ノードのＩＤと、送信元ノードから宛先ノードまでのリンク帯域［ｂｐｓ］とが格納される。
【０１０１】
また、データキュー１０６におけるタイムスロットについてのデータは同じであるが、個々のメッセージ（データブロック）に関するデータの部分については、図３０に示すようなデータフォーマットでデータが格納される。図３０の例では、データのＩＤと、宛先までの送達期限と、本ノードの送信期限と、データのサイズ（bytes）と、データ本体又はその格納領域へのリンクとが格納されるようになっている。
【０１０２】
さらに、リソース管理データ格納部１１０には、図３１及び図３２に示すようなデータフォーマットでデータが格納される。すなわち、図３１の例では、開始時刻と終了時刻とで特定されるタイムスロット毎に、ノードの受信リソースの使用済み容量（bit）と空き容量（bit）と最大容量（bit）と、当該タイムスロットについてのキュー（データリストとも呼ぶ）へのポインタとが格納される。この例では、１タイムスロットには最大１Ｇビット受信でき、１番目のタイムスロットでは、既に２００Ｍビット分のデータを受信することになっており、８００Ｍビット分空いていることを表している。
【０１０３】
キューには、当該キューに投入された、メッセージ（データブロック）に関する情報が格納される。但し、この情報は、図３２に示すように、メッセージ（データブロック）毎に、データのＩＤと、送達期限ｔlim,jと、要求元ノードｊの送信期限ｔlim,j,xと、データサイズとを含む。なお、データサイズについてはビット単位又はバイト単位であってもよいが、タイムスロットの最大容量に対する割合で表すようにしても良い。
【０１０４】
また、スケジューリング要求及びスケジュール通知のデータフォーマットは、図３３及び図３４に示すようになる。図１７及び図１８と異なる点は、各メッセージ（データブロック）についてデータサイズ（ｄｓ）が追加された部分のみである。
【０１０５】
本実施の形態では、データサイズ及びリンクの帯域を用いてレイテンシ（遅延時間）を算出することになる。この点について、図３５を用いて説明する。
【０１０６】
ここではノードＮｄaがデータソースからデータサイズｓjのデータｄjを受信し、ノードＮｄbを介してノードＮｄdに送信する。また、ノードＮｄcがデータソースからデータサイズｓkのデータｄkを受信し、ノードＮｄdに送信する。
【０１０７】
ここで、ノードＮｄaからノードＮｄbまでのリンクＬa,bのレイテンシｌa,bは、データサイズｓj／リンク帯域ｃa,bで算出される。同様に、ノードＮｄbからノードＮｄdまでのリンクＬb,dのレイテンシｌb,dは、データサイズｓj／リンク帯域ｃb,dで算出される。
【０１０８】
従って、ノードＮｄaにおける送信期限ｔlim,j,aは、送達期限ｔlim,j−ｓｕｍ（［ｌa,b，ｌb,d］）＝ｔlim,j−（ｓj／ｃa,b＋ｓj／ｃb,d）と算出される。同様に、ノードＮｄbにおける送信期限ｔlim,j,bは、送達期限ｔlim,j−ｌb,d＝ｔlim,j−ｓj／ｃb,dとなる。
【０１０９】
また、ノードＮｄcにおける送信期限ｔlim,k,cは、送達期限ｔlim,k−ｌc,d,＝ｔlim,k−ｓk／ｃc,dで算出される。
【０１１０】
次に、本実施の形態に係る処理内容について図３６及び図３７を用いて説明する。
【０１１１】
まず、図３６を用いてメッセージ受信時の処理内容について説明する。
【０１１２】
データ受信部１０１は、データ（ｄj）を含むメッセージを受信し、第１スケジューラ１０２に出力する（ステップＳ２０１）。自ノードがデータソースに接続されている最上流ノードであれば（ステップＳ２０３：Ｙｅｓルート）、第１スケジューラ１０２は、データのＩＤ「ｄj」でレイテンシデータ格納部１０５を検索して、宛先までに許容される遅延時間を読み出して、送達期限ｔlim,jを取得する（ステップＳ２０５）。例えば、現時刻＋遅延時間にて送達期限を算出する。なお、レイテンシデータ格納部１０５に送達期限そのものが格納されていれば、それを用いる。一方、自ノードが最上流ノードでなければ（ステップＳ２０３：Ｎｏルート）、処理はステップＳ２０９に移行する。
【０１１３】
また、第１スケジューラ１０２は、受信したメッセージヘッダに送達期限ｔlim,jを追加する（ステップＳ２０７）。これによって、図７に示すようなメッセージが生成される。
【０１１４】
さらに、第１スケジューラ１０２は、データ転送ルート格納部１０４をｄjで検索して転送ルート［Ｌx,y］を読み出す（ステップＳ２０９）。転送ルートは、リンクＩＤの配列データであるものとする。
【０１１５】
そして、第１スケジューラ１０２は、転送ルート［Ｌx,y］の各リンクＩＤでレイテンシデータ格納部１０５を検索して、各リンクのリンク帯域ｃx,yを読み出す（ステップＳ２１１）。
【０１１６】
その後、第１スケジューラ１０２は、送達期限ｔlim,j、リンク帯域ｃx,y及びメッセージのデータサイズから、本ノードの送信期限ｔlim,j,xを算出する（ステップＳ２１３）。具体的には、ｔlim,j−Σｓj／ｃx,y（転送経路上の全リンクについての総和）によって計算する。
【０１１７】
そして、第１スケジューラ１０２は、送信期限ｔlim,j,xから送出要求時刻ｔreq,j,xを決定する（ステップＳ２１５）。ｔlim,j,x＝ｔreq,j,xの場合もあれば、一定のマージンαを考慮してｔreq,j,x＝ｔlim,j,x−αと設定する場合もある。なお、以下の説明では、説明を簡単にするため、送信期限＝送出要求時刻とする。
【０１１８】
そして、第１スケジューラ１０２は、送出要求時刻ｔreq,j,xのタイムスロットに、メッセージを付加データと共に投入する（ステップＳ２１７）。
【０１１９】
以上のような処理を、メッセージを受信する毎に実行する。
【０１２０】
スケジュールネゴシエータ１０８の処理内容については、第１の実施の形態とほぼ同様であり、生成されるスケジューリング要求のデータフォーマットが、図３３及び図３４に示すようなデータである点のみが異なる。
【０１２１】
また、データ送信部１０７の処理内容についても図２０に示したものと同様である。
【０１２２】
さらに、第２スケジューラ１０９の処理内容についても一部を除き同様である。具体的には、メッセージ数（データブロック数）ではなくデータ量でスロットの空きを判断する点が異なる。
【０１２３】
図３７に示すように、各データブロック（メッセージ）のデータサイズ（ｄｓ）を考慮することになる。送信元ノード毎にリンク帯域が異なる場合には、リンク帯域をも考慮することになるが、ここでは同一であるものとする。
【０１２４】
例えば、スロット幅Δｔ＝１秒で１００Ｍｂｐｓであるとする。そうすると、２０Ｍビットのデータであれば、送信に、０．２秒かかり、１０Ｍビットのデータであれば０．１秒かかる。ここでは、１０Ｍビットを１単位として、ｄｓ：１は１０Ｍビットのデータを表し、ｄｓ：２は２０Ｍビットであるものとする。
【０１２５】
ここでノードＡ及びノードＢの送信スケジュールを重ね合わせると、図３７の右側のように表される。図３７の右側では、データサイズに応じた高さでデータブロック（メッセージ）を表している。このように、３番目のタイムスロットでは、受信リソースである最大容量を超えており、超えた分だけデータブロックを他のタイムスロットに移動させることになる。
【０１２６】
空きスロットについても、空き容量を考慮して、データブロック（メッセージ）を移動させられるか否かを判断する。例えば、１つのデータブロック（メッセージ）のデータサイズが大きく、空きスロットの空き容量が不足する場合には、移動できないものとする。
【０１２７】
通知部１０９３の処理内容についてもスケジュール通知のデータフォーマットが図３３及び図３４のようになる点のみが異なる。
【０１２８】
以上のように、データサイズが異なるメッセージ（データブロック）を送信する場合であっても、対処できる。
【０１２９】
［実施の形態３］
第１の実施の形態及び第２の実施の形態では、各ノードにおけるスケジューリング要求部１０８１の起動間隔ＴSR,x及び初期起動時刻が同じであるという前提で説明している。
【０１３０】
本実施の形態では、各ノードにおいて、スケジューリング要求部１０８１の起動間隔ＴSR,x及び初期起動時刻が異なるものとする。従って、スケジューリングウィンドウも、各ノードで異なり、そのノードの起動間隔ＴSR,xに応じて設定されるものとする。
【０１３１】
なお、第１及び第２の実施の形態では、ほぼ同時にスケジューリング要求を受信して、それに応じて第２スケジューラ１０９が処理を行うようになっていたが、本実施の形態では、スケジューリング要求を受信するタイミングが、各送信元ノードで異なるので、第２スケジューラ１０９の起動間隔ＴTLS-inter,xについては、以下のように定義する。
ＴTLS-inter,x＝ｍｉｎ（ＴSR,a，ＴSR,b，ＴSR,c，．．．，ＴSR,n）
すなわち、送信元ノードの最も短い起動間隔を、第２スケジューラ１０９の起動間隔の最大値とする。これは、１つのＴTLS-inter,xの間に、複数のスケジューリング要求を送信するノードが発生しないようにするためである。
【０１３２】
このような状況に対処するためのノードの構成は、第１の実施の形態と同様である。但し、処理内容については一部異なるので、異なる処理内容について以下説明する。
【０１３３】
まず、要求受信部１０９１の処理内容について図３８を用いて説明する。第１の実施の形態では、要求受信部１０９１はスケジューリング処理部１０９２と連動していたが、スケジューリング要求の受信タイミングが、各ノードで異なるので、独立して動作するようになる。
【０１３４】
すなわち、要求受信部１０９１は、送信元ノードからスケジューリング要求を受信すると（ステップＳ３０１）、当該スケジューリング要求のデータを、スケジューリングデータ格納部１１１に格納する（ステップＳ３０３）。
【０１３５】
このような処理を、スケジューリング要求を受信する毎に繰り返すことになる。
【０１３６】
次に、スケジューリング処理部１０９２等の処理内容について、図３９乃至図４６を用いて説明する。
【０１３７】
スケジューリング処理部１０９２は、起動間隔ＴTLS-inter,x又は以下の処理で設定された時間が経過して、起動タイミングｔになったか判断する（図３９：ステップＳ３１１）。起動タイミングｔでなければ、待機する。
【０１３８】
一方、起動タイミングｔになると、スケジューリング処理部１０９２は、最大幅ＴTLS-inter,x以内であって全ノードからのスケジューリング要求が揃っている未処理タイムスロットについてのデータを、スケジューリングデータ格納部１１１から読み出す（ステップＳ３１３）。
【０１３９】
例えば図４０のような初期的な状態を想定する。この場合、３つのノードからスケジューリング要求を受信することになるが、スケジューリングウィンドウに含まれるタイムスロットの数ｗが異なっている。ここでは、ノードＢが最も小さいｗ＝２を採用しているので、ｔ０からｔ０＋２Δｔまでのタイムスロットについてのデータを、スケジューリングデータ格納部１１１から読み出すことになる。なお、ｔ０から２Δｔまでのタイムスロットのデータを含むスケジューリング要求のデータを読み出すようにしても良い。
【０１４０】
そして、スケジューリング処理部１０９２は、読み出したデータを、各タイムスロットについて展開して、各タイムスロットでメッセージ数（データブロック数）を合算する（ステップＳ３１５）。この処理結果については、図１２及び図１３に示すように、リソース管理データ格納部１１０に格納される。
【０１４１】
図４０の例では、最上段に示すように、２つのタイムスロットの各々についてメッセージ数（データブロック数）を計数することになる。この場合、いずれのタイムスロットについても、受信リソースの最大数には達していない。
【０１４２】
そうすると、スケジューリング処理部１０９２は、各タイムスロットで送信されるメッセージの数は、受信リソースの範囲内であるか否かを判断する（ステップＳ３１７）。各タイムスロットで送信されるメッセージの数が受信リソースの範囲内であれば、スケジューリング処理部１０９２は、スケジューリングデータ格納部１１１に格納されているスケジューリング要求の内容をそのまま含むスケジュール通知を、通知部１０９３に出力し、各要求元ノードに送信させる（ステップＳ３１９）。このような場合には、各ノードの送信スケジュールを変更せずとも受信できるためである。
【０１４３】
そして、スケジューリング処理部１０９２は、各スケジュール通知の内容を、スケジューリングデータ格納部１１１に格納する（ステップＳ３２１）。
【０１４４】
さらに、スケジューリング処理部１０９２は、次回の起動タイミングを、ｔ＋今回のスケジュール完了タイムスロット数×Δｔに設定する（ステップＳ３２３）。本実施の形態では、起動タイミング毎に、処理されるタイムスロット数が異なるため、このように起動毎に、次回の起動タイミングを設定するものである。
【０１４５】
一方、いずれかのタイムスロットのメッセージの数が受信リソースの範囲を超える場合には、処理は端子Ｆを介して図４１の処理に移行する。
【０１４６】
まず、スケジューリング処理部１０９２は、タイムスロットのカウンタｎを１に初期化する（ステップＳ３２５）。そして、スケジューリング処理部１０９２は、ｎ番目のタイムスロットのメッセージの数が受信リソースを超えているか判断する（ステップＳ３２７）。ｎ番目のタイムスロットのメッセージの数が受信リソースの範囲内であれば、処理は端子Ｇを介して図４２の処理に移行する。
【０１４７】
一方、ｎ番目のタイムスロットのメッセージの数が受信リソースを超えている場合には、スケジューリング処理部１０９２は、ｎ番目のタイムスロット内のメッセージを、送信元ノードの送信期限を第１のキーとして、送達期限を第２のキーとしてソートする（ステップＳ３２９）。この処理はステップＳ７７と同様である。
【０１４８】
その後、スケジューリング処理部１０９２は、ｎ番目より前のタイムスロット（但し、今回処理するタイムスロットの範囲内）に、受信リソースの空きがあるか判断する（ステップＳ３３１）。空きがなければ処理は端子Ｈを介して図４２の処理に移行する。送信を前倒しできれば、データ送信遅延の可能性を抑制できるため、先に前のタイムスロットを判断する。
【０１４９】
一方、ｎ番目より前のタイムスロットに空きがあれば、スケジューリング処理部１０９２は、ｎ番目のタイムスロットの先頭から、空きのあるタイムスロットの末尾にメッセージを移動させる（ステップＳ３３３）。
【０１５０】
なお、２以上のメッセージが受信リソースの範囲を超える場合もある。この場合には、ｎ番目のタイムスロットより前のタイムスロットの空き数だけ、ｎ番目のタイムスロットの先頭からメッセージを取り出して、移動させる。３つのメッセージが受信リソースの範囲を超えるが、前のタイムスロットに２つしか空きがない場合には、２つだけメッセージを前のタイムスロットに移動させる。残りの１つは以下の処理で対応策が決定される。
【０１５１】
そして、スケジューリング処理部１０９２は、ｎ番目のスロットにはまだ受信リソースの範囲を超えるメッセージが割り当てられている状態であるか否かを判断する（ステップ３３５）。この条件を満たす場合には、処理は端子Ｈを介して図４２の処理に移行する。
【０１５２】
一方、ｎ番目のスロットのメッセージの数が受信リソースの範囲内となった場合には、処理は端子Ｇを介して図４２の処理に移行する。
【０１５３】
図４２の処理の説明に移行して、スケジューリング処理部１０９２は、ｎ番目のタイムスロットより後のタイムスロット（但し、今回処理するタイムスロットの範囲内）に空きがあるか否かを判断する（ステップＳ３３７）。空きがない場合には、処理はステップＳ３４３に移行する。
【０１５４】
一方、ｎ番目のタイムスロットより後ろのスロットにタイムスロットに空きがある場合には、スケジューリング処理部１０９２は、ｎ番目のタイムスロットの末尾から、空きのあるタイムスロットの先頭にメッセージを移動させる（ステップＳ３３９）。
【０１５５】
なお、２以上のメッセージが受信リソースの範囲を超える場合もある。この場合には、ｎ番目のタイムスロットより後のタイムスロットの空き数だけ、ｎ番目のタイムスロットの末尾からメッセージを取り出して、移動させる。３つのメッセージが受信リソースの範囲を超えるが、後のタイムスロットに２つしか空きがない場合には、２つだけメッセージを後のタイムスロットに移動させる。残りの１つは後に処理される。
【０１５６】
さらに、スケジューリング処理部１０９２は、ｎ番目のタイムスロットにはまだ受信リソースの範囲を超えるメッセージが割り当てられている状態であるか否かを判断する（ステップＳ３４１）。この条件を満たさない場合には、処理はステップＳ３４５に移行する。
【０１５７】
この条件を満たす場合には、第１の実施の形態ではスケジューリングウィンドウの後ろにタイムスロットを生成して、その先頭にメッセージ（データブロック）を割り当てるような処理を行うが、本実施の形態では、既にタイムスロットが存在して、そのタイムスロットにはメッセージ（データブロック）が割り当てられているので、異なる処理を行うことになる。
【０１５８】
すなわち、スケジューリング処理部１０９２は、他のタイムスロットに移動させることができなかったメッセージ（データブロック）を、今回処理対象のタイムスロットの範囲より後のタイムスロットに移動させる（ステップＳ３４３）。
【０１５９】
図４３は、図４０の後の起動タイミングｔ０＋２Δｔにおける処理を模式的に示すものである。ノードＢからは２回目のスケジューリング要求を受信した状態であるが、他のノードについては１回目のスケジューリング要求しか受信していない。そうすると、全ノードから送信スケジュールが得られているタイムスロットは３番目のタイムスロット１つしかない。このタイムスロットについて、メッセージの数を合算すると、図４３の最上段に示すように、１つのメッセージ（データブロック）が、受信リソースの範囲を超えることになる。しかしながら、１つのタイムスロットしか処理しないので、前のタイムスロットにも、後のタイムスロットにも、移動させることはできない。そこで、優先順位が低い順にメッセージ（データブロック）を、今回処理対象のタイムスロットの範囲より後ろのタイムスロット（例えば直後）に移動させる。
【０１６０】
このようにすれば、スケジューリングウィンドウの各タイムスロットにおいては、受信リソースの範囲内にメッセージの受信を抑制できるので、輻輳が抑制され、データ送信の遅延が抑制される。
【０１６１】
そして、スケジューリング処理部１０９２は、カウンタｎが、今回処理対象のタイムスロットの数以上となったか判断する（ステップＳ３４５）。この条件を満たさない場合には、スケジューリング処理部１０９２は、ｎを１インクリメントして（ステップＳ３４７）、処理は端子Ｊを介して図４１のステップＳ３２７に戻る。一方、ｎが今回処理対象のタイムスロットの数以上となると、処理は端子Ｉを介して図４４の処理に移行する。
【０１６２】
図４４の処理の説明に移行して、スケジューリング処理部１０９２は、各要求元ノードについて、そのメッセージのスケジューリング結果（すなわち送信スケジュール）を抽出して、スケジュール通知を生成し、各要求元ノードへ通知部１０９３に送信させる（ステップＳ３４９）。
【０１６３】
そして、スケジューリング処理部１０９２は、各スケジュール通知の内容を、スケジューリングデータ格納部１１１に格納する（ステップＳ３５１）。
【０１６４】
さらに、スケジューリング処理部１０９２は、次回の起動タイミングを、ｔ＋今回のスケジュール完了タイムスロット数×Δｔに設定する（ステップＳ３５３）。本ステップは、ステップＳ３２３と同様の処理である。
【０１６５】
図４３の処理を行った後の状態を、図４５に示す。ここではノードＡから２回目のスケジューリング要求を受信した状態である。ここで、ノードＡ乃至Ｃ空のスケジューリング要求のうち、共通する未処理のタイムスロットは１つしかない。ここで、図４５の最上段のように、メッセージ数を合算すると、受信リソースの範囲内となっている。但し、図４３で示したように、１つのメッセージ（データブロック）が追加されているので、そのメッセージの割当先タイムスロットが変更されたことになる。このようなスケジューリング結果を各ノードに通知する。
【０１６６】
さらに、図４５の処理を行った後の状態を、図４６に示す。ノードＢからは３回目のスケジューリング要求を受信し、ノードＣからは２回目のスケジューリング要求を受信した状態を表している。そうすると、今回は、２つの未処理タイムスロットについて処理することになる。図４６の最上段に示すように、いずれのタイムスロットについても、受信リソースの範囲内のメッセージ（データブロック）しか送信予定となっていないので、要求どおりに送信するように各ノードに通知する。
【０１６７】
このようにすれば、スケジューリングウィンドウの差及び初期起動タイミングのずれに対処できるようになる。
【０１６８】
なお、第２の実施の形態のように、各メッセージのデータサイズが異なっていても、第２の実施の形態のように本実施の形態を変形すればよい。
【０１６９】
［実施の形態４］
本実施の形態では、送信リソースの上限値を考慮する場合について説明する。
【０１７０】
本実施の形態に係るノードの構成を図４７に示す。本実施の形態では、リソースデータ格納部１１２が追加されており、第１スケジューラ１０２は、このリソースデータ格納部１１２に格納されている送信リソースのデータを参照して、メッセージのタイムスロットへの割り当てを制御する。
【０１７１】
図４８に、リソースデータ格納部１１２に格納されるデータのデータフォーマット例を示す。図４８に示すように、タイムスロット幅のデータと、最大送信リソースとしてタイムスロットにおいて送信可能な最大メッセージ数（最大データブロック数）とが格納されるようになっている。なお、タイムスロット毎に最大メッセージ数（最大データブロック数）が異なる場合には、タイムスロットの開始時刻と終了時刻とのペアに対応付けて最大メッセージ数（最大データブロック数）を格納するようにしても良い。
【０１７２】
次に、本実施の形態に係るデータ受信部１０１及び第１スケジューラ１０２の処理について図４９及び図５０を用いて説明する。
【０１７３】
データ受信部１０１は、データ（ｄj）を含むメッセージを受信し、第１スケジューラ１０２に出力する（図４９：ステップＳ５０１）。自ノードがデータソースに接続されている最上流ノードであれば（ステップＳ５０３：Ｙｅｓルート）、第１スケジューラ１０２は、データのＩＤ「ｄj」でレイテンシデータ格納部１０５を検索して、宛先までに許容される遅延時間を読み出して、送達期限ｔlim,jを取得する（ステップＳ５０５）。例えば、現時刻＋遅延時間にて送達期限を算出する。なお、レイテンシデータ格納部１０５に送達期限そのものが格納されていれば、それを用いる。一方、自ノードが最上流ノードでなければ（ステップＳ５０３：Ｎｏルート）、処理はステップＳ５０９に移行する。
【０１７４】
また、第１スケジューラ１０２は、受信したメッセージヘッダに送達期限ｔlim,jを追加する（ステップＳ５０７）。これによって、図７に示すようなメッセージが生成される。
【０１７５】
さらに、第１スケジューラ１０２は、データ転送ルート格納部１０４をｄjで検索して転送ルート［Ｌx,y］を読み出す（ステップＳ５０９）。転送ルートは、リンクＩＤの配列データであるものとする。
【０１７６】
そして、第１スケジューラ１０２は、転送ルート［Ｌx,y］の各リンクＩＤでレイテンシデータ格納部１０５を検索して、各リンクの遅延時間（レイテンシ）ｌx,yを読み出す（ステップＳ５１１）。
【０１７７】
その後、第１スケジューラ１０２は、送達期限ｔlim,j及びレイテンシｌx,yから、本ノードの送信期限ｔlim,j,xを算出する（ステップＳ５１３）。具体的には、ｔlim,j−Σｌx,y（転送経路上の全リンクについての総和）によって計算する。
【０１７８】
そして、第１スケジューラ１０２は、送信期限ｔlim,j,xから送出要求時刻ｔreq,j,xを決定する（ステップＳ５１５）。ｔlim,j,x＝ｔreq,j,xの場合もあれば、一定のマージンαを考慮してｔreq,j,x＝ｔlim,j,x−αと設定する場合もある。なお、以下の説明では、説明を簡単にするため、送信期限＝送出要求時刻とする。
【０１７９】
そして、第１スケジューラ１０２は、送出要求時刻ｔreq,j,xのタイムスロットに、メッセージを付加データと共に投入する（ステップＳ５１７）。図１１Ａ及びＢに示すようなデータが格納される。ここまでは第１の実施の形態と同様である。処理は端子Ｋを介して図５０の処理に移行する。
【０１８０】
図５０の処理の説明に移行して、第１スケジューラ１０２は、リソースデータ格納部１１２に格納されている送信リソース（最大メッセージ数（最大データブロック数））から、エンキューされたタイムスロットはリソース不足となっているか判断する（ステップＳ５１９）。エンキューされたタイムスロットのリソースが足りている場合には、処理は終了する。
【０１８１】
一方、エンキューされたタイムスロットがリソース不足である場合には、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロット内のメッセージを、本ノードの送信期限を第１のキーとして、送達期限を第２のキーとしてソートする（ステップＳ５２１）。
【０１８２】
そして、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロットより前のタイムスロットに、送信リソースの空きがあるか判断する（ステップＳ５２３）。送信を前倒しできれば、データ送信遅延の可能性を抑制できるため、先に前のタイムスロットを判断する。
【０１８３】
エンキューされたタイムスロットより前のタイムスロットに空きがあれば、第１スケジューラ１０２は、今回メッセージがエンキューされたタイムスロットの先頭から、空きのあるタイムスロットの末尾にメッセージを移動させる（ステップＳ５２５）。そして処理は終了する。
【０１８４】
一方、エンキューされたタイムスロットより前のタイムスロットに空きがなければ、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロットより後のタイムスロットに空きがあるか判断する（ステップＳ５２７）。
【０１８５】
エンキューされたタイムスロットより後ろのスロットにタイムスロットに空きがある場合には、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロットの末尾から、空きのあるタイムスロットの先頭にメッセージを移動させる（ステップＳ５２９）。そして処理は終了する。
【０１８６】
一方、エンキューされたタイムスロットより後ろのタイムスロットに空きがない場合には、第１スケジューラ１０２は、現在定義されているタイムスロットの後ろ側にタイムスロットを追加し（ステップＳ５３１）、今回受信されたメッセージがエンキューされたタイムスロットの末尾から、追加タイムスロットの先頭に、今回受信されたメッセージを移動させる（ステップＳ５３３）。
【０１８７】
このような処理を行えば、データの送信側のリソースの範囲内でデータを受信できるようになり、輻輳が抑制され、データの遅延が抑制される。
【０１８８】
他の処理内容については第１の実施の形態と同様であるから、説明を省略する。
【０１８９】
［実施の形態５］
第４の実施の形態についても、第２の実施の形態のように、データサイズを考慮する形に変形しても良い。
【０１９０】
ノードの構成については図４７に示したものと同様である。但し、第２の実施の形態で説明したように、処理内容が異なる。さらに、第４の実施の形態においては、送信リソースをも考慮することになるので、そのため、データ受信部１０１及び第１スケジューラ１０２の処理が異なる。さらに、リソースデータ格納部１１２に格納されているデータのデータフォーマットを、図５１に示す。図５１でも、タイムスロット幅Δｔと、タイムスロット幅Δｔにおいて送信可能な最大ビット数とが格納されるようになっている。
【０１９１】
次に、本実施の形態に係るデータ受信部１０１及び第１スケジューラ１０２の処理内容について図５２及び図５３を用いて説明する。
【０１９２】
データ受信部１０１は、データ（ｄj）を含むメッセージを受信し、第１スケジューラ１０２に出力する（図５２：ステップＳ６０１）。自ノードがデータソースに接続されている最上流ノードであれば（ステップＳ６０３：Ｙｅｓルート）、第１スケジューラ１０２は、データのＩＤ「ｄj」でレイテンシデータ格納部１０５を検索して、宛先までに許容される遅延時間を読み出して、送達期限ｔlim,jを取得する（ステップＳ６０５）。例えば、現時刻＋遅延時間にて送達期限を算出する。なお、レイテンシデータ格納部１０５に送達期限そのものが格納されていれば、それを用いる。一方、自ノードが最上流ノードでなければ（ステップＳ６０３：Ｎｏルート）、処理はステップＳ６０９に移行する。
【０１９３】
また、第１スケジューラ１０２は、受信したメッセージヘッダに送達期限ｔlim,jを追加する（ステップＳ６０７）。これによって、図７に示すようなメッセージが生成される。
【０１９４】
さらに、第１スケジューラ１０２は、データ転送ルート格納部１０４をｄjで検索して転送ルート［Ｌx,y］を読み出す（ステップＳ６０９）。転送ルートは、リンクＩＤの配列データであるものとする。
【０１９５】
そして、第１スケジューラ１０２は、転送ルート［Ｌx,y］の各リンクＩＤでレイテンシデータ格納部１０５を検索して、各リンクのリンク帯域ｃx,yを読み出す（ステップＳ６１１）。
【０１９６】
その後、第１スケジューラ１０２は、送達期限ｔlim,j、リンク帯域ｃx,y及びメッセージのデータサイズから、本ノードの送信期限ｔlim,j,xを算出する（ステップＳ６１３）。具体的には、ｔlim,j−Σｓj／ｃx,y（転送経路上の全リンクについての総和）によって計算する。
【０１９７】
そして、第１スケジューラ１０２は、送信期限ｔlim,j,xから送出要求時刻ｔreq,j,xを決定する（ステップＳ６１５）。ｔlim,j,x＝ｔreq,j,xの場合もあれば、一定のマージンαを考慮してｔreq,j,x＝ｔlim,j,x−αと設定する場合もある。なお、以下の説明では、説明を簡単にするため、送信期限＝送出要求時刻とする。
【０１９８】
そして、第１スケジューラ１０２は、送出要求時刻ｔreq,j,xのタイムスロットに、メッセージ（データブロック）を付加データと共に投入する（ステップＳ６１７）。そして処理は、端子Ｌを介して図５３の処理の説明に移行する。
【０１９９】
図５３の処理の説明に移行して、第１スケジューラ１０２は、リソースデータ格納部１１２に格納されている送信リソース（最大ビット数）から、エンキューされたタイムスロットはリソース不足となっているか判断する（ステップＳ６１９）。すなわち、エンキューされたタイムスロットにおけるメッセージ（データブロック）のデータサイズの総和を算出し、最大ビット数と比較する。エンキューされたタイムスロットの送信リソースが足りている場合には、処理は終了する。
【０２００】
一方、エンキューされたタイムスロットがリソース不足である場合には、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロット内のメッセージを、本ノードの送信期限を第１のキーとして、送達期限を第２のキーとしてソートする（ステップＳ６２１）。
【０２０１】
そして、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロットより前のタイムスロットに、送信リソースの空きがあるか判断する（ステップＳ６２３）。送信を前倒しできれば、データ送信遅延の可能性を抑制できるため、先に前のタイムスロットを判断する。なお、空きがあるか否かについては、空き容量が、今回メッセージがエンキューされたタイムスロットの先頭メッセージ（先頭データブロック）のデータサイズ以上であるか否かを判断することになる。
【０２０２】
エンキューされたタイムスロットより前のタイムスロットに空きがあれば、第１スケジューラ１０２は、今回メッセージがエンキューされたタイムスロットの先頭から、空きのあるタイムスロットの末尾にメッセージを移動させる（ステップＳ６２５）。そして処理は終了する。
【０２０３】
一方、エンキューされたタイムスロットより前のタイムスロットに空きがなければ、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロットより後のタイムスロットに空きがあるか判断する（ステップＳ６２７）。ステップＳ６２３と同様に、空きがあるか否かについては、空き容量が、今回メッセージがエンキューされたタイムスロットの末尾メッセージ（末尾データブロック）のデータサイズ以上であるか否かを判断することになる。
【０２０４】
エンキューされたタイムスロットより後ろのスロットにタイムスロットに空きがある場合には、第１スケジューラ１０２は、今回受信したメッセージがエンキューされたタイムスロットの末尾から、空きのあるタイムスロットの先頭にメッセージを移動させる（ステップＳ６２９）。そして処理は終了する。
【０２０５】
一方、エンキューされたタイムスロットより後ろのタイムスロットに空きがない場合には、第１スケジューラ１０２は、現在定義されているタイムスロットの後ろ側にタイムスロットを追加し（ステップＳ６３１）、今回受信されたメッセージがエンキューされたタイムスロットの末尾から、追加タイムスロットの先頭に、今回受信されたメッセージを移動させる（ステップＳ６３３）。
【０２０６】
このような処理を行えば、データの送信側のリソースの範囲内でデータを受信できるようになり、輻輳が抑制され、データの遅延が抑制される。
【０２０７】
他の処理内容については第４の実施の形態と同様であるから、説明を省略する。
【０２０８】
［実施の形態６］
本実施の形態では、図５４に示すように、ノードＡがノードＣ及びノードＤにメッセージ（データブロック）を送信し、ノードＢがノードＣ及びノードＤにメッセージ（データブロック）を送信するようになっている場合を取り扱う。このように、複数のノードにメッセージ（データブロック）を送信するようになっている場合には、送信先ノード毎にデータキューを設けるようにする。
【０２０９】
すなわち、ノードの構成例は図５５に示すように変形される。第１の実施の形態に係るノードの構成と異なる点は、データキュー１０６ａ及び１０６ｂが、送信先ノード毎に設けられる点である。すなわち、図１１Ａ及び図１１Ｂに示すデータフォーマットで、各データキュー１０６ａ及び１０６ｂにおいてデータを格納する。
【０２１０】
次に、図５６を用いてメッセージ受信時の処理内容について説明する。
【０２１１】
データ受信部１０１は、データ（ｄj）を含むメッセージを受信し、第１スケジューラ１０２に出力する（ステップＳ７０１）。自ノードがデータソースに接続されている最上流ノードであれば（ステップＳ７０３：Ｙｅｓルート）、第１スケジューラ１０２は、データのＩＤ「ｄj」でレイテンシデータ格納部１０５を検索して、宛先までに許容される遅延時間を読み出して、送達期限ｔlim,jを取得する（ステップＳ７０５）。例えば、現時刻＋遅延時間にて送達期限を算出する。なお、レイテンシデータ格納部１０５に送達期限そのものが格納されていれば、それを用いる。一方、自ノードが最上流ノードでなければ（ステップＳ７０３：Ｎｏルート）、処理はステップＳ７０９に移行する。
【０２１２】
また、第１スケジューラ１０２は、受信したメッセージヘッダに送達期限ｔlim,jを追加する（ステップＳ７０７）。これによって、図７に示すようなメッセージが生成される。
【０２１３】
さらに、第１スケジューラ１０２は、データ転送ルート格納部１０４をｄjで検索して転送ルート［Ｌx,y］を読み出す（ステップＳ７０９）。転送ルートは、リンクＩＤの配列データであるものとする。
【０２１４】
そして、第１スケジューラ１０２は、転送ルート［Ｌx,y］の各リンクＩＤでレイテンシデータ格納部１０５を検索して、各リンクの遅延時間（レイテンシ）ｌx,yを読み出す（ステップＳ７１１）。
【０２１５】
その後、第１スケジューラ１０２は、送達期限ｔlim,j及びレイテンシｌx,yから、本ノードの送信期限ｔlim,j,xを算出する（ステップＳ７１３）。具体的には、ｔlim,j−Σｌx,y（転送経路上の全リンクについての総和）によって計算する。
【０２１６】
そして、第１スケジューラ１０２は、送信期限ｔlim,j,xから送出要求時刻ｔreq,j,xを決定する（ステップＳ７１５）。ｔlim,j,x＝ｔreq,j,xの場合もあれば、一定のマージンαを考慮してｔreq,j,x＝ｔlim,j,x−αと設定する場合もある。なお、以下の説明では、説明を簡単にするため、送信期限＝送出要求時刻とする。
【０２１７】
そして、第１スケジューラ１０２は、送信先ノードのデータキューにおいて、送出要求時刻ｔreq,j,xのタイムスロットに、メッセージを付加データと共に投入する（ステップＳ７１７）。図１１Ａ及び図１１Ｂに示すようなデータが格納される。
【０２１８】
以上のような処理を、メッセージを受信する毎に実行する。
【０２１９】
なお、第２スケジューラ１０９の処理内容については、第１の実施の形態と同様であるので、説明は省略する。
【０２２０】
但し、スケジュールネゴシエータ１０８の処理内容については一部異なる。すなわち、リスケジューラ１０８３の処理内容は、図５７に示すように変更される。
【０２２１】
すなわち、スケジュール受信部１０８２は、スケジュール結果を含むスケジュール通知を受信し（ステップＳ７２１）、リスケジューラ１０８３に出力する。スケジュール通知のデータフォーマットは、図１７及び図１８に示したようなフォーマットである。
【０２２２】
そして、リスケジューラ１０８３は、スケジュール通知を受信すると、その送信元ノードのＩＤからデータキュー１０６ａ又は１０６ｂを特定し（ステップＳ７２３）、当該スケジュール通知に従って、データキュー１０６ａ又は１０６ｂにおけるメッセージ（すなわちデータブロック）が投入されるタイムスロットを更新する処理を行う（ステップＳ７２５）。スケジュール通知で通知された送信スケジュールとスケジューリング要求における送信スケジュールとが一致する場合もあるので、その場合には特に処理は行わない。異なるタイムスロットに移動させられた場合には、そのタイムスロットのキューにエンキューする。そのタイムスロットのデータはなければ、この段階で生成する。
【０２２３】
このようにすれば、送信先ノードにおいて調整された送信スケジュールを、送信先ノードのためのデータキュー１０６ａ又は１０６ｂに反映させることができる。
【０２２４】
なお、第２の実施の形態のように、第６の実施の形態においても、データサイズを考慮するような形態に変形しても良い。
【０２２５】
［実施の形態７］
本実施の形態では、第６の実施の形態において送信リソースを考慮する場合について説明する。具体的には、送信先ノードが複数ある場合、スケジュール通知に含まれる送信スケジュールを重ね合わせると、送信リソースを超えたメッセージ（データブロック）を送信することになってしまう場合がある。そこで、本実施の形態では、リスケジューラ１０８３の処理を変更することで、送信リソースを考慮したリスケジュール処理を行うこととする。
【０２２６】
なお、第６の実施の形態に係るノードの構成は、処理内容以外については本実施の形態でも同様である。
【０２２７】
特に、スケジュールネゴシエータ１０８のスケジュール受信部１０８２及びリスケジューラ１０８３の処理内容について、図５８乃至図６０Ｅを用いて説明する。
【０２２８】
すなわち、スケジュール受信部１０８２は、スケジュール結果を含むスケジュール通知を受信し（図６０：ステップＳ８０１）、リスケジューラ１０８３に出力する。スケジュール通知のデータフォーマットは、図１７及び図１８に示したようなフォーマットである。
【０２２９】
そして、リスケジューラ１０８３は、スケジュール通知を受信すると、その送信元ノードのＩＤを特定する（ステップＳ８０３）。
【０２３０】
そして、リスケジューラ１０８３は、送信元ノードのＩＤからデータキュー１０６ａ又は１０６ｂを特定し、当該スケジュール通知に従って、データキュー１０６ａ又は１０６ｂにおけるメッセージ（すなわちデータブロック）が投入されるタイムスロットを更新する処理を行う（ステップＳ８０５）。スケジュール通知で通知された送信スケジュールとスケジューリング要求における送信スケジュールとが一致する場合もあるので、その場合には特に処理は行わない。異なるタイムスロットに移動させられた場合には、そのタイムスロットのキューにエンキューする。そのタイムスロットのデータはなければ、この段階で生成する。
【０２３１】
さらに、リスケジューラ１０８３は、更新があったタイムスロットのうち未処理のタイムスロットを１つ特定する（ステップＳ８０７）。なお、更新があったタイムスロットが存在しない場合には、処理を終了する。一方、更新があったタイムスロットは複数の場合もある。
【０２３２】
そうすると、リスケジューラ１０８３は、特定されたタイムスロットのデータを全送信先についてデータキュー１０６ａ又は１０６ｂから読み出して、メッセージ数（データブロック数）を合算する（ステップＳ８０９）。
【０２３３】
そして、リスケジューラ１０８３は、特定されたタイムスロットで送信されるメッセージの数は、リソースデータ格納部１１２に格納されている送信リソースの範囲内であるか否かを判断する（ステップＳ８１１）。
【０２３４】
特定されたタイムスロットで送信されるメッセージの数が送信リソースの範囲内（最大メッセージ数）であれば、リスケジューラ１０８３は、更新があったタイムスロットのうち、未処理のスロットが存在するか否かを判断する（ステップＳ８１３）。未処理のスロットが存在しない場合には、処理を終了する。また、未処理のスロットが存在する場合には、処理はステップＳ８０７に戻る。
【０２３５】
一方、特定されたタイムスロットで送信されるメッセージの数が、送信リソースの範囲内ではない、すなわち送信リソースが不足する場合には、処理は端子Ｍを介して図５９の処理に移行する。
【０２３６】
図５９の処理の説明に移行して、リスケジューラ１０８３は、特定されたタイムスロット内のメッセージ（データブロック）を、本ノードの送信期限を第１のキーとして、送達期限を第２のキーとしてソートする（ステップＳ８１５）。
【０２３７】
その後、リスケジューラ１０８３は、次回以降にスケジューリング要求の対象となる各タイムスロットについて、全送信先のメッセージの数を合算する（ステップＳ８１６）。
【０２３８】
そして、リスケジューラ１０８３は、次回以降にスケジューリング要求の対象となるいずれかのタイムスロットに空きが存在するか否かを判断する（ステップＳ８１７）。空きがなければ処理はステップＳ８２１に移行する。
【０２３９】
一方、空きがあれば、リスケジューラ１０８３は、特定されたタイムスロットの末尾から、空きのあるタイムスロットの先頭にメッセージを移動させる（ステップＳ８１９）。
【０２４０】
なお、２以上のメッセージが送信リソースの範囲を超える場合もある。この場合には、タイムスロットの空き数だけ、特定されたタイムスロットの末端からメッセージを取り出して、移動させる。３つのメッセージが送信リソースの範囲を超えるが、次回以降にスケジューリング要求の対象となるタイムスロットに２つしか空きがない場合には、２つだけメッセージをそのタイムスロットに移動させる。残りの１つは以下の処理で対応策が決定される。
【０２４１】
そして、スケジューリング処理部１０９２は、特定されたタイムスロットにはまだ送信リソースの範囲を超えるメッセージが割り当てられている状態であるか否かを判断する（ステップＳ８２１）。この条件を満たさない場合には、処理は端子Ｎを介して図５８のステップＳ８１３に戻る。
【０２４２】
一方、この条件を満たす場合には、リスケジューラ１０８３は、他のタイムスロットに移動させることができなかったメッセージ（データブロック）を、現在生成されているタイムスロットより後ろにタイムスロットを追加設定して、当該追加タイムスロットに、移動させられなかったメッセージ（データブロック）へ移動させる（ステップＳ８２３）。
【０２４３】
このようにすれば、スケジューリングウィンドウの各タイムスロットにおいては、送信リソースの範囲内にメッセージの送信を抑制できるので、輻輳が抑制され、データ送信の遅延が抑制される。
【０２４４】
以下、図５８及び図５９で説明した処理について、図６０Ａ乃至図６０Ｅにおいて具体例を用いて説明する。
【０２４５】
まず、例えばノードＤにおいて、送信先ノードＡ、ノードＢ及びノードＣについて、データキュー１０６ａ乃至１０６ｃが、図６０Ａに示す状態であるものとする。そのため、図６０Ｂの左側に示すようなスケジューリング要求が、ノードＡ、ノードＢ及びノードＣに送信される。ノードＡ、ノードＢ及びノードＣにおいては、その第２スケジューラ１０９が処理を行って、図６０Ｂの右側に示すようなスケジュール結果が生成されたものとする。なお、ノードＡにおけるスケジュール結果は、２番目のタイムスロットにおけるメッセージ（データブロック）を１つ３番目のタイムスロットに移動させることを示している。同様に、ノードＣにおけるスケジュール結果は、２番目のタイムスロットにおけるメッセージ（データブロック）を１つ３番目のタイムスロットに移動させることを示している。
【０２４６】
そうすると、ノードＤにおけるデータキュー１０６ａ乃至１０６ｃは、図６０Ｃに示すような状態に更新される。但し、３番目のタイムスロットに割り当てられたメッセージ（データブロック）の数が増加している。
【０２４７】
ここで、上で述べた処理フローによれば、図６０Ｄの左側に示すように、ノードＡ乃至ノードＣへ送信されるメッセージの数を、各タイムスロットで合算する。そうすると、３番目のタイムスロットにおいて送信リソースの範囲を超えるメッセージの送信が予定されるようになる。
【０２４８】
しかしながら、これでは３番目のタイムスロットでメッセージを送りきれないので、図６０Ｄに示すように、この例では１つのメッセージ（データブロック）を、他のタイムスロットへ移動させる。但し、第１のスケジューリングウィンドウについては既に他のノードでスケジューリングが行われてしまっているので、第１のスケジューリングウィンドウに含まれるタイムスロットへ移動させることはできない。そこで、第２のスケジューリングウィンドウ以降のタイムスロットへ移動させる。図６０Ｄの右側に示すように、５番目のタイムスロットにおいては空きリソースが存在しているので、このタイムスロットに、３番目のタイムスロットにおいて優先順位が最下位のメッセージ（データブロック）を、移動させる。そうすると、ノードＡ乃至Ｃのためのデータキュー１０６ａ乃至１０６ｃは、図６０Ｅに示すような状態となる。
【０２４９】
このようにすれば、スケジュール済みのタイムスロットに影響を最小限度に抑えつつ、輻輳などによるデータ送信の遅延を抑制できるようになる。
【０２５０】
なお、本実施の形態についても、第２の実施の形態のように、データサイズを考慮するように変形しても良い。
【０２５１】
以上、本発明に係る実施の形態を説明したが、本発明はこれに限定されるものではない。
【０２５２】
例えば、処理フローについては、処理結果が変わらない限り、処理順番を入れ替えたり、並列処理するようにしても良い。機能ブロック図も一例であって、プログラムモジュール構成及びファイル構成と一致しない場合もある。
【０２５３】
さらに、上で述べた実施の形態を、任意に組み合わせるようにしても良い。
【０２５４】
なお、上で述べたノードは、コンピュータ装置であって、図６１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０２５５】
以上述べた本実施の形態をまとめると、以下のようになる。
【０２５６】
本実施の形態に係る情報通信方法は、（Ａ）第１の情報処理装置は、１又は複数のデータブロックについての第１の送信スケジュールを、１又は複数のデータブロックの送信先である第２の情報処理装置に送信し、（Ｂ）第２の情報処理装置は、第１の送信スケジュールを第１の情報処理装置から受信し、（Ｃ）第２の情報処理装置は、受信した第１の送信スケジュールと、第２の情報処理装置の受信リソースとに基づき、受信した第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定し、（Ｄ）第２の情報処理装置は、第２の送信スケジュールを、第１の情報処理装置に送信し、（Ｅ）第１の情報処理装置は、第２の情報処理装置から第２の送信スケジュールを受信し、（Ｆ）第１の情報処理装置は、受信した第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、第２の情報処理装置に送信する処理を含む。
【０２５７】
このようにすれば、受信側の第２の情報処理装置において受信リソースを超えるようなデータブロック（例えばメッセージ）を受信することを回避でき、データ送信の遅延を抑制できる。
【０２５８】
なお、上で述べた第１の送信スケジュールが、複数のタイムスロットについての送信スケジュールである場合もある。また、上で述べた第２の送信スケジュールが、複数のタイムスロットのうちの少なくともいずれかについての送信スケジュールである場合もある。このように複数のタイムスロットについて処理することで、受信リソースを超えるようなデータブロックの受信を回避するようなスケジューリングが容易になる。
【０２５９】
また、上で述べた決定する処理が、（ｃ１）第１の情報処理装置における送信期限と宛先での到着期限とのうち少なくともいずれかによって１又は複数のデータブロックを優先順位付けする処理を含むようにしても良い。このようにすれば、データ送信の遅延を最小限度に抑えることができるようになる。
【０２６０】
また、上で述べた決定する処理が、（ｃ２）複数のタイムスロットのうちのあるタイムスロットについて、当該あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値以下であるか否かを判断し、（ｃ３）あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値を超える場合には、あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、あるタイムスロットの前又は後のタイムスロットに割り当てる処理を含むようにしても良い。このようにすれば、確実に受信リソースの範囲内でデータブロック（メッセージ）を受信できるようになる。
【０２６１】
さらに、上で述べた割り当てる処理が、（ｃ３１）あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されるデータブロック（例えば優先順位が最上位から選択されるデータブロック）を、あるタイムスロットの前のタイムスロットに割り当てられるか判断し、（ｃ３２）割り当てられない場合には、あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されるデータブロック（例えば優先順位が最下位から選択されるデータブロック）を、あるタイムスロットの後のタイムスロットに割り当てる処理を含むようにしても良い。これによって送信スケジュールを変更することによって生ずる遅延を最小限に抑制できるようになる。
【０２６２】
さらに、第１の情報処理装置が複数であって、第１の送信スケジュールでスケジュールされたタイムスロットが複数の第１の情報処理装置において異なる場合には、上で述べた決定する処理が、（ｃ４）複数の第１の情報処理装置から受信した第１の送信スケジュールでスケジュールされたタイムスロットのうち共通するタイムスロットについて、当該あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値以下であるか否かを判断し、（ｃ５）あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値を超える場合には、あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、あるタイムスロットの前又は後のタイムスロットに割り当てる処理を含むようにしても良い。
【０２６３】
第１の送信スケジュールにおけるタイムスロットが送信元の第１の情報処理装置によってずれている場合には、このようにすればずれを吸収しつつ第２の送信スケジュールを生成できる。
【０２６４】
さらに、上記情報通信方法は、（Ｇ）第１の情報処理装置が、受信したデータブロックの送信期限に応じて第１の送信スケジュールを生成する処理をさらに含むようにしても良い。
【０２６５】
また、上記情報通信方法は、（Ｈ）第１の情報処理装置が、受信したデータブロックの送信期限に応じて、当該データブロックを送信すべきタイムスロットを特定し、（Ｉ）第１の情報処理装置が、特定したタイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値以下であるか否かを判断し、（Ｊ）第１の情報処理装置が、特定したタイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値を超える場合には、特定したタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、特定したタイムスロットの前又は後のタイムスロットに割り当てる処理をさらに含むようにしても良い。
【０２６６】
これによって、送信リソースを超えるようなデータブロック（メッセージ）の送信が抑制される。
【０２６７】
さらに、第２の情報処理装置が複数である場合、（Ｋ）第１の情報処理装置が、受信したデータブロックの送信期限及び第２の情報処理装置に応じて第１の送信スケジュールを生成する処理をさらに含むようにしても良い。送信先毎に処理を行うものである。
【０２６８】
さらに、第２の情報処理装置が複数である場合、（Ｌ）第１の情報処理装置が、受信したデータブロックの送信期限及び第２の情報処理装置に応じて第１の送信スケジュールを生成してもよい。この場合、上で述べた第２の送信スケジュールを受信する処理において、（ｅ１）第１の情報処理装置が、複数の第２の情報処理装置のうちいずれかの第２の情報処理装置から第２の送信スケジュールを受信する場合がある。さらに、上で述べたデータブロックを送信する処理が、（ｆ１）受信した第２の送信スケジュールが、受信した第２の送信スケジュールの送信元の第２の情報処理装置に送信した第１の送信スケジュールとは異なる場合、相違があるタイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値を超える場合には、相違があるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、第２の送信スケジュールより後のタイムスロットに割り当てる処理を含むようにしても良い。
【０２６９】
複数の第２の情報処理装置があれば、第２の送信スケジュールに従うと送信リソースを超えるような送信スケジュールが規定される場合もあるので、それを適切に是正するものである。
【０２７０】
なお、本実施の形態に係るデータフロー上流側の情報処理装置は、（Ｍ）１又は複数のデータブロックについての第１の送信スケジュールを、１又は複数のデータブロックの送信先であって第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて受信リソースに基づき第２の送信スケジュールを生成する第２の情報処理装置に送信する第１の送信部と、（Ｎ）第２の情報処理装置から第２の送信スケジュールを受信する受信部と、（Ｏ）受信した第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、第２の情報処理装置に送信する第２の送信部とを有する。
【０２７１】
本実施の形態に係るデータフロー下流側の情報処理装置は、（Ｐ）１又は複数のデータブロックについての第１の送信スケジュールを、１又は複数のデータブロックの送信元である第２の情報処理装置から受信する受信部と、（Ｑ）受信した第１の送信スケジュールと、第２の情報処理装置の受信リソースとに基づき、受信した第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定する決定部と、（Ｒ）第２の送信スケジュールを、第２の情報処理装置に送信する送信部とを有する。
【０２７２】
なお、上で述べたような処理をプロセッサ又はコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【０２７３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０２７４】
（付記１）
第１の情報処理装置は、１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信先である第２の情報処理装置に送信し、
前記第２の情報処理装置は、前記第１の送信スケジュールを前記第１の情報処理装置から受信し、
前記第２の情報処理装置は、受信した前記第１の送信スケジュールと、前記第２の情報処理装置の受信リソースとに基づき、受信した前記第１の送信スケジュールに含まれる前記１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定し、
前記第２の情報処理装置は、前記第２の送信スケジュールを、前記第１の情報処理装置に送信し、
前記第１の情報処理装置は、前記第２の情報処理装置から前記第２の送信スケジュールを受信し、
前記第１の情報処理装置は、受信した前記第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、前記第２の情報処理装置に送信する
処理を含む、情報通信方法。
【０２７５】
（付記２）
前記第１の送信スケジュールが、複数のタイムスロットについての送信スケジュールであり、
前記第２の送信スケジュールが、前記複数のタイムスロットのうちの少なくともいずれかについての送信スケジュールである
付記１記載の情報通信方法。
【０２７６】
（付記３）
前記決定する処理が、
前記第１の情報処理装置における送信期限と宛先での到着期限とのうち少なくともいずれかによって前記１又は複数のデータブロックを優先順位付けする処理
を含む付記１又は２記載の情報通信方法。
【０２７７】
（付記４）
前記決定する処理が、
前記複数のタイムスロットのうちのあるタイムスロットについて、当該あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値以下であるか否かを判断し、
前記あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値を超える場合には、前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、前記あるタイムスロットの前又は後のタイムスロットに割り当てる
処理を含む付記２記載の情報通信方法。
【０２７８】
（付記５）
前記割り当てる処理が、
前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されるデータブロックを、前記あるタイムスロットの前のタイムスロットに割り当てられるか判断し、
割り当てられない場合には、前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されるデータブロックを、前記あるタイムスロットの後のタイムスロットに割り当てる
処理を含む付記４記載の情報通信方法。
【０２７９】
（付記６）
前記第１の情報処理装置が複数であって、前記第１の送信スケジュールでスケジュールされたタイムスロットが前記複数の第１の情報処理装置において異なる場合には、
前記決定する処理が、
前記複数の第１の情報処理装置から受信した前記第１の送信スケジュールでスケジュールされたタイムスロットのうち共通するタイムスロットについて、当該あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値以下であるか否かを判断し、
前記あるタイムスロットに送信がスケジュールされたデータブロックの数又はデータ量が閾値を超える場合には、前記あるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、前記あるタイムスロットの前又は後のタイムスロットに割り当てる
処理を含む付記２記載の情報通信方法。
【０２８０】
（付記７）
前記第１の情報処理装置が、受信したデータブロックの送信期限に応じて第１の送信スケジュールを生成する
処理をさらに含む付記１乃至６のいずれか１つ記載の情報通信方法。
【０２８１】
（付記８）
前記第１の情報処理装置が、受信したデータブロックの送信期限に応じて、当該データブロックを送信すべきタイムスロットを特定し、
前記第１の情報処理装置が、特定した前記タイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値以下であるか否かを判断し、
前記第１の情報処理装置が、特定した前記タイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値を超える場合には、特定した前記タイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、特定した前記タイムスロットの前又は後のタイムスロットに割り当てる
処理をさらに含む付記１乃至６のいずれか１つ記載の情報通信方法。
【０２８２】
（付記９）
前記第２の情報処理装置が複数である場合、
前記第１の情報処理装置が、受信したデータブロックの送信期限及び前記第２の情報処理装置に応じて第１の送信スケジュールを生成する
処理をさらに含む付記１乃至６のいずれか１つ記載の情報通信方法。
【０２８３】
（付記１０）
前記第２の情報処理装置が複数である場合、
前記第１の情報処理装置が、受信したデータブロックの送信期限及び前記第２の情報処理装置に応じて第１の送信スケジュールを生成し、
前記第２の送信スケジュールを受信する処理において、
前記第１の情報処理装置が、前記複数の第２の情報処理装置のうちいずれかの第２の情報処理装置から前記第２の送信スケジュールを受信し、
前記データブロックを送信する処理が、
受信した前記第２の送信スケジュールが、受信した前記第２の送信スケジュールの送信元の第２の情報処理装置に送信した第１の送信スケジュールとは異なる場合、相違があるタイムスロットにおいて送信すべきデータブロックの数又はデータ量が閾値を超える場合には、前記相違があるタイムスロットに送信がスケジュールされたデータブロックのうち優先順位に基づき選択されたデータブロックを、前記第２の送信スケジュールより後のタイムスロットに割り当てる
処理を含む付記１乃至６のいずれか１つ記載の情報通信方法。
【０２８４】
（付記１１）
第１の情報処理装置に、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信先であって前記第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて受信リソースに基づき第２の送信スケジュールを生成する第２の情報処理装置に送信し、
前記第２の情報処理装置から前記第２の送信スケジュールを受信し、
受信した前記第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、前記第２の情報処理装置に送信する
処理を実行させるプログラム。
【０２８５】
（付記１２）
第１の情報処理装置に、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信元である第２の情報処理装置から受信し、
受信した前記第１の送信スケジュールと、前記第２の情報処理装置の受信リソースとに基づき、受信した前記第１の送信スケジュールに含まれる前記１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定し、
前記第２の送信スケジュールを、前記第２の情報処理装置に送信する
処理を実行させるためのプログラム。
【０２８６】
（付記１３）
情報処理装置であって、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信先であって前記第１の送信スケジュールに含まれる１又は複数のデータブロックの少なくとも一部のデータブロックについて受信リソースに基づき第２の送信スケジュールを生成する第２の情報処理装置に送信する第１の送信部と、
前記第２の情報処理装置から前記第２の送信スケジュールを受信する受信部と、
受信した前記第２の送信スケジュールに基づき、当該第２の送信スケジュールで規定されているデータブロックを、前記第２の情報処理装置に送信する第２の送信部と、
を有する情報処理装置。
【０２８７】
（付記１４）
情報処理装置であって、
１又は複数のデータブロックについての第１の送信スケジュールを、前記１又は複数のデータブロックの送信元である第２の情報処理装置から受信する受信部と、
受信した前記第１の送信スケジュールと、前記第２の情報処理装置の受信リソースとに基づき、受信した前記第１の送信スケジュールに含まれる前記１又は複数のデータブロックの少なくとも一部のデータブロックについて第２の送信スケジュールを決定する決定部と、
前記第２の送信スケジュールを、前記第２の情報処理装置に送信する送信部と、
を有する情報処理装置。
【符号の説明】
【０２８８】
１０１  データ受信部
１０２  第１スケジューラ
１０３  リンクデータ格納部
１０４  データ転送ルート格納部
１０５  レイテンシデータ格納部
１０６  データキュー
１０７  データ送信部
１０８  スケジュールネゴシエータ
１０９  第２スケジューラ
１１０  リソース管理データ格納部
１１１  スケジューリングデータ格納部
１０８１  スケジューリング要求部
１０８２  スケジュール受信部
１０８３  リスケジューラ
１０９１  要求受信部
１０９２  スケジューリング処理部
１０９３  通知部
【図１】
2015173361.tif 000003
【図２】
2015173361.tif 000004
【図３】
2015173361.tif 000005
【図４Ａ】
2015173361.tif 000006
【図４Ｂ】
2015173361.tif 000007
【図４Ｃ】
2015173361.tif 000008
【図４Ｄ】
2015173361.tif 000009
【図５】
2015173361.tif 000010
【図６】
2015173361.tif 000011
【図７】
2015173361.tif 000012
【図８】
2015173361.tif 000013
【図９】
2015173361.tif 000014
【図１０】
2015173361.tif 000015
【図１１Ａ】
2015173361.tif 000016
【図１１Ｂ】
2015173361.tif 000017
【図１２】
2015173361.tif 000018
【図１３】
2015173361.tif 000019
【図１４】
2015173361.tif 000020
【図１５】
2015173361.tif 000021
【図１６】
2015173361.tif 000022
【図１７】
2015173361.tif 000023
【図１８】
2015173361.tif 000024
【図１９】
2015173361.tif 000025
【図２０】
2015173361.tif 000026
【図２１】
2015173361.tif 000027
【図２２】
2015173361.tif 000028
【図２３】
2015173361.tif 000029
【図２４】
2015173361.tif 000030
【図２５】
2015173361.tif 000031
【図２６】
2015173361.tif 000032
【図２７】
2015173361.tif 000033
【図２８】
2015173361.tif 000034
【図２９】
2015173361.tif 000035
【図３０】
2015173361.tif 000036
【図３１】
2015173361.tif 000037
【図３２】
2015173361.tif 000038
【図３３】
2015173361.tif 000039
【図３４】
2015173361.tif 000040
【図３５】
2015173361.tif 000041
【図３６】
2015173361.tif 000042
【図３７】
2015173361.tif 000043
【図３８】
2015173361.tif 000044
【図３９】
2015173361.tif 000045
【図４０】
2015173361.tif 000046
【図４１】
2015173361.tif 000047
【図４２】
2015173361.tif 000048
【図４３】
2015173361.tif 000049
【図４４】
2015173361.tif 000050
【図４５】
2015173361.tif 000051
【図４６】
2015173361.tif 000052
【図４７】
2015173361.tif 000053
【図４８】
2015173361.tif 000054
【図４９】
2015173361.tif 000055
【図５０】
2015173361.tif 000056
【図５１】
2015173361.tif 000057
【図５２】
2015173361.tif 000058
【図５３】
2015173361.tif 000059
【図５４】
2015173361.tif 000060
【図５５】
2015173361.tif 000061
【図５６】
2015173361.tif 000062
【図５７】
2015173361.tif 000063
【図５８】
2015173361.tif 000064
【図５９】
2015173361.tif 000065
【図６０Ａ】
2015173361.tif 000066
【図６０Ｂ】
2015173361.tif 000067
【図６０Ｃ】
2015173361.tif 000068
【図６０Ｄ】
2015173361.tif 000069
【図６０Ｅ】
2015173361.tif 000070
【図６１】
2015173361.tif 000071