(57)【特許請求の範囲】
【請求項１】
複数の装置と通信する通信装置であって、
前記複数の装置に含まれる第１の装置での前記通信装置を取得元にする被取得データのデータ量を特定する第１の情報、および前記通信装置とは異なる他の通信装置を取得元にする被取得データのデータ量を特定する第２の情報を、前記第１の装置から受信する受信手段と、
前記第１の情報、および前記第２の情報に基づいて、前記第１の装置を取得対象にするか否かを判定する判定手段と、
前記判定手段の判定結果に応じて、前記通信装置を取得元にする被取得データを前記第１の装置から取得する取得手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記受信手段は、
前記第１の装置とは異なる他の装置での前記通信装置を取得元にする被取得データのデータ量を特定する第３の情報を、前記他の装置から受信し、
前記判定手段は、
前記第１の情報、前記第２の情報、および前記第３の情報に基づいて、前記第１の装置を取得対象にするか否かを判定することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記受信手段は、
前記第１の装置での前記通信装置を取得元にする被取得データの取得期限に関する第４の情報を、前記第１の装置から受信し、
前記判定手段は、
前記第１の情報および前記第２の情報、または前記第４の情報のうち、少なくともいずれかに基づいて、前記第１の装置を取得対象にするか否かを判定することを特徴とする請求項１に記載の通信装置。
【請求項４】
前記受信手段は、
前記第１の装置とは異なる他の装置での前記通信装置を取得元にする被取得データの取得期限に関する第５の情報を、前記他の装置から受信し、
前記判定手段は、
前記第１の情報および前記第２の情報、前記第４の情報、または前記第５の情報のうち、少なくともいずれかに基づいて、前記第１の装置を取得対象にするか否かを判定することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記受信手段によって受信された情報に基づいて、前記判定手段によって取得対象にすると判定された前記第１の装置から取得するデータ量を決定する決定手段を備え、
前記取得手段は、
前記判定手段によって取得対象にすると判定された前記第１の装置から、前記決定手段によって決定されたデータ量で、前記通信装置を取得元にする被取得データを取得することを特徴とする請求項１〜４のいずれか一つに記載の通信装置。
【請求項６】
複数の装置と通信する通信装置が、
前記複数の装置に含まれる第１の装置での前記通信装置を取得元にする被取得データのデータ量を特定する第１の情報、および前記通信装置とは異なる他の通信装置を取得元にする被取得データのデータ量を特定する第２の情報を、前記第１の装置から受信し、
前記第１の情報、および前記第２の情報に基づいて、前記第１の装置を取得対象にするか否かを判定し、
判定結果に応じて、前記通信装置を取得元にする被取得データを前記第１の装置から取得する、
処理を実行することを特徴とする通信方法。
【請求項７】
複数の装置と通信する通信装置に、
前記複数の装置に含まれる第１の装置での前記通信装置を取得元にする被取得データのデータ量を特定する第１の情報、および前記通信装置とは異なる他の通信装置を取得元にする被取得データのデータ量を特定する第２の情報を、前記第１の装置から受信し、
前記第１の情報、および前記第２の情報に基づいて、前記第１の装置を取得対象にするか否かを判定し、
判定結果に応じて、前記通信装置を取得元にする被取得データを前記第１の装置から取得する、
処理を実行させることを特徴とする通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信をおこなう通信装置、通信方法、および通信プログラムに関する。
【背景技術】
【０００２】
クラスタなどの分散並列計算機を使った処理の分野では、処理過程において、通信相手がランダムな大量のメッセージ通信が発生する。このとき、一部の通信装置にメッセージ通信が一時的に集中する場合がある。これにより、ネットワークでデータの衝突が起き、結果としてネットワークの輻輳が発生する。
【０００３】
従来では、トークンと呼ばれる送信権をネットワーク上で周回させ、周回するトークンを受信した通信装置のみがメッセージを送信するようにして、ネットワーク上の通信量を制御しメッセージの衝突を回避する技術がある（例えば、下記特許文献１参照）。
【０００４】
また、ネットワーク上の通信装置の数に応じて、周回させるトークンの数を変更する技術がある（例えば、下記特許文献２参照）。また、メッセージ通信が集中した通信装置での処理が安定するまで、メッセージの送信を中断する技術がある（例えば、下記特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０４−０７０２３５号公報
【特許文献２】特開２０００−３３２８０３号公報
【特許文献３】特許第４３４３１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術は、複数の通信装置のそれぞれでの未送信のメッセージの量は考慮されていない。そのため、未送信のメッセージの量が多いために優先して送信をおこなわせるべき通信装置よりも先に、未送信のメッセージの量がまだ少ない他の通信装置に送信権を与えてしまうことがある。この場合、通信装置において、未送信のメッセージが格納されたバッファにメモリ不足が生じるといった問題があった。また、送信権の受信の待ち時間が長い通信装置よりも先に、待ち時間が短い通信装置に送信権を与えてしまうことがある。この場合、通信装置において、メッセージの送信期限を守れず、処理の遅延や処理エラーを生じてしまう。
【０００７】
本発明は、１つの側面では、ネットワーク内の複数の通信装置の状況に応じてそれぞれの通信装置から効率よくデータを取得することができる通信装置、通信方法、および通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数の装置と通信する通信装置であって、複数の装置に含まれる第１の装置での自通信装置を取得元にする被取得データのデータ量を特定する第１の情報、および自通信装置とは異なる他の通信装置を取得元にする被取得データのデータ量を特定する第２の情報を、第１の装置から受信し、第１の情報、および第２の情報に基づいて、第１の装置を取得対象にするか否かを判定し、判定結果に応じて、自通信装置を取得元にする被取得データを第１の装置から取得する通信装置、通信方法、および通信プログラムが提案される。
【０００９】
また、本発明の一側面によれば、取得元に取得させる被取得データのデータ量が閾値以上であることを検出し、被取得データのデータ量が閾値以上であることが検出された場合、被取得データのデータ量を特定する情報を、取得元に通知する通信装置、通信方法、および通信プログラムが提案される。
【発明の効果】
【００１０】
本発明の一側面によれば、ネットワーク内の複数の通信装置の状況に応じてそれぞれの通信装置から効率よくデータを取得することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、通信装置による通信の内容を示す説明図（その１）である。
【図２】図２は、通信装置による通信の内容を示す説明図（その２）である。
【図３】図３は、実施の形態にかかる通信装置Ｎのハードウェア構成例を示すブロック図である。
【図４】図４は、図３に示したＲＡＭ３０３に記憶されている被取得長履歴の内容を示す説明図である。
【図５】図５は、図３に示したＲＡＭ３０３に記憶されている生成履歴の内容を示す説明図である。
【図６】図６は、図３に示したＲＡＭ３０３に記憶されている要求トークンレイテンシ履歴の内容を示す説明図である。
【図７】図７は、図３に示したＲＡＭ３０３に記憶されている被取得スループット履歴の内容を示す説明図である。
【図８】図８は、図３に示したＲＡＭ３０３に記憶されている取得長履歴の内容を示す説明図である。
【図９】図９は、図３に示したＲＡＭ３０３に記憶されている取得スループット履歴の内容を示す説明図である。
【図１０】図１０は、図３に示したＲＡＭ３０３に記憶されている要求トークンリストの内容を示す説明図である。
【図１１】図１１は、図３に示したＲＡＭ３０３に記憶されている通信相手リストの内容を示す説明図である。
【図１２】図１２は、図３に示したＲＡＭ３０３に記憶されている取得条件の内容を示す説明図である。
【図１３】図１３は、図３に示したＲＡＭ３０３に記憶されている取得依頼リストの内容を示す説明図である。
【図１４】図１４は、メッセージＭの取得側としての通信装置Ｎの機能的構成を示すブロック図である。
【図１５】図１５は、メッセージＭの被取得側としての通信装置Ｎの機能的構成を示すブロック図である。
【図１６】図１６は、初期化処理の詳細を示すフローチャートである。
【図１７】図１７は、アプリケーション利用登録処理の詳細を示すフローチャートである。
【図１８】図１８は、要求トークンの送信の内容を示す説明図である。
【図１９】図１９は、バッファ管理処理の詳細を示すフローチャートである。
【図２０】図２０は、要求トークン送信処理の詳細を示すフローチャートである。
【図２１】図２１は、要求トークンを受信した取得側の通信装置ＮによるメッセージＭの取得の内容を示す説明図である。
【図２２】図２２は、他の取得側へのバッファリング量を含む要求トークンに基づくメッセージＭの取得の内容を示す説明図である。
【図２３】図２３は、取得依頼登録処理の詳細を示すフローチャートである。
【図２４】図２４は、取得処理の詳細を示すフローチャートである。
【図２５】図２５は、取得条件１２００の変更の内容を示す説明図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、この発明にかかる通信装置、通信方法、および通信プログラムの実施の形態を詳細に説明する。この発明にかかる通信装置は、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送により、他の通信装置の記憶装置からデータを直接取得する機能を有する。また、通信装置は、複数の取得側の通信装置ごとに、それぞれの取得側の通信装置に取得させる被取得データをバッファリングしている。
【００１３】
ここで、ネットワークを流れるデータ量を制御し輻輳を抑制するために、まず、被取得側の通信装置は、バッファリングされているデータ量を特定する情報を、取得側の通信装置に通知する。次に、取得側の通信装置では、複数の被取得側の通信装置のそれぞれでバッファリングされているデータ量を特定する情報を受信することにより、複数の被取得側の通信装置でバッファリングされているデータ量を把握する。
【００１４】
そして、取得側の通信装置は、バッファがより逼迫している被取得側の装置を優先して取得対象にして、ネットワークの輻輳を発生させないデータ量の範囲で、被取得データを取得していく。これにより、バッファの枯渇を回避しつつ、ネットワークを流れるデータ量を制御して、衝突を回避し、ネットワークの輻輳を抑制できる。また、１対１の通信装置間のスループットのみではなく、ネットワーク全体のスループットを向上させることができる。また、取得側の通信装置ごとに被取得データをバッファリングしているため、スループットを向上させることができる。
【００１５】
（通信装置による通信の内容）
図１および図２は、通信装置による通信の内容を示す説明図である。ここで、図１および図２に示す通信システムは、複数の通信装置Ｎ（図１および図２では、例えば、３台の通信装置Ｎ１〜Ｎ３）がネットワークを介して接続され、メッセージＭの通信をおこなうシステムである。また、通信システムは、ネットワークにおいて中継をおこなう機器であるスイッチングハブＳＨを含む。
【００１６】
各通信装置Ｎは、他の通信装置ＮのメッセージＭを直接取得することができる装置である。また、各通信装置Ｎは、取得側の通信装置Ｎごとに、それぞれの通信装置Ｎに取得させるメッセージＭ（被取得データ）をバッファリングするバッファＢを有する。なお、メッセージＭは、各通信装置Ｎが実行するアプリケーションによって生成される。
【００１７】
例えば、通信装置Ｎ１は、通信装置Ｎ２に取得させるメッセージＭをバッファリングするバッファＢ１ｔ２と、通信装置Ｎ３に取得させるメッセージＭをバッファリングするバッファＢ１ｔ３と、を有している。
【００１８】
また、通信装置Ｎ２は、通信装置Ｎ１に取得させるメッセージＭをバッファリングするバッファＢ２ｔ１と、通信装置Ｎ３に取得させるメッセージＭをバッファリングするバッファＢ２ｔ３と、を有している。
【００１９】
そして、通信装置Ｎ３は、通信装置Ｎ１に取得させるメッセージＭをバッファリングするバッファＢ３ｔ１と、通信装置Ｎ２に取得させるメッセージＭをバッファリングするバッファＢ３ｔ２と、を有している。
【００２０】
以下では、通信装置Ｎ１，Ｎ３のそれぞれが、自通信装置ＮでバッファリングしているメッセージＭを、通信装置Ｎ２に取得するように要求する場合を例に挙げて、通信装置Ｎによる通信の内容について説明する。
【００２１】
図１において、（１）通信装置Ｎ１は、通信装置Ｎ２に取得させるメッセージＭが生成されるごとに、生成されたメッセージＭをバッファＢ１ｔ２に格納していく。また、同様に、通信装置Ｎ３でも、通信装置Ｎ２に取得させるメッセージＭがバッファＢ３ｔ２に格納されている。
【００２２】
（２）通信装置Ｎ１は、バッファＢ１ｔ２に格納されたメッセージＭを通信装置Ｎ２に取得させるために、メッセージＭを取得するように要求する要求通知（以下、「要求トークン」という）を、通信装置Ｎ２に送信する。そして、通信装置Ｎ１は、通信装置Ｎ２によってメッセージＭが取得されるのを待つ。ここで、要求トークンには、メッセージＭの被取得側となる通信装置Ｎ１の識別子と、バッファＢ１ｔ２に格納されているメッセージＭのデータ量と、が含まれる。バッファＢ１ｔ２に格納されているメッセージＭのデータ量は、バッファＢ１ｔ２の逼迫具合の指標となる情報である。
【００２３】
（３）同様に、通信装置Ｎ３は、バッファＢ３ｔ２に格納されたメッセージＭを、通信装置Ｎ２に取得させるために、要求トークンを通信装置Ｎ２に送信する。そして、通信装置Ｎ３は、通信装置Ｎ２によってメッセージＭが取得されるのを待つ。ここで、要求トークンには、メッセージＭの被取得側となる通信装置Ｎ３の識別子と、バッファＢ３ｔ２に格納されているメッセージＭのデータ量と、が含まれる。バッファＢ３ｔ２に格納されているメッセージＭのデータ量は、バッファＢ３ｔ２の逼迫具合の指標となる情報である。
【００２４】
（４）通信装置Ｎ１，Ｎ３からそれぞれ要求トークンを受信した通信装置Ｎ２は、要求トークンに含まれるそれぞれの通信装置Ｎ１，Ｎ３でのバッファＢに格納されているメッセージＭのデータ量を参照して、取得対象にする通信装置Ｎ１，Ｎ３を選択する。ここでは、通信装置Ｎ２は、バッファＢへ格納されているメッセージＭのデータ量が多い通信装置Ｎ３を優先して取得対象にして、通信装置Ｎ３でバッファＢがあふれる前にメッセージＭを取得するべきであると判定する。
【００２５】
図２において、（１）通信装置Ｎ２は、ネットワークのスループットを参照して、ネットワークを輻輳させない範囲で、取得対象にした通信装置Ｎ３から取得するメッセージＭの取得データ量を決定する。そして、通信装置Ｎ２は、取得対象にした通信装置Ｎ３から、取得データ量のメッセージＭを取得する。一方、通信装置Ｎ２は、通信装置Ｎ１のメッセージＭは、まだ取得しない。
【００２６】
（２）これにより、ネットワークに流れるメッセージＭのデータ量を制御して、メッセージＭの衝突を回避することができる。そのため、メッセージＭの衝突に起因する輻輳を抑制することができる。そして、輻輳を抑制することができるため、輻輳に起因する通信時間の増加を回避することができ、ネットワーク全体の通信フェーズを短縮することができる。
【００２７】
また、各通信装置ＮでメッセージＭをバッファリングすることにより、ネットワークのスループットを向上させることができる。そして、取得側の通信装置Ｎが、複数の被取得側の通信装置ＮのそれぞれのバッファＢに格納されているメッセージＭのデータ量を把握し、バッファＢが逼迫しないようにメッセージＭを取得していく。そのため、ネットワークを効率よく使用でき、ネットワーク全体のスループットを向上させることができる。
【００２８】
（通信装置Ｎのハードウェア構成例）
図３は、実施の形態にかかる通信装置Ｎのハードウェア構成例を示すブロック図である。図３において、通信装置Ｎは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０４と、ディスプレイ３０５と、キーボード３０６と、アプリケーションＩ／Ｆ３０７と、を備えている。また、各構成部はバス３１０によってそれぞれ接続されている。
【００２９】
ここで、ＣＰＵ３０１は、通信装置Ｎの全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。
【００３０】
また、ＲＡＭ３０３は、取得側の通信装置ＮごとのバッファＢの領域として使用される。ＲＡＭ３０３は、被取得長履歴と、生成履歴と、要求トークンレイテンシ履歴と、被取得スループット履歴と、を記憶している。また、ＲＡＭ３０３は、取得長履歴と、取得スループット履歴と、要求トークンリストと、を記憶している。また、ＲＡＭ３０３は、通信相手リストと、取得条件と、取得依頼リストと、を記憶している。
【００３１】
インターフェース（以下、「Ｉ／Ｆ」と略する。）３０４は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク３２０に接続され、このネットワーク３２０を介して他の装置に接続される。
【００３２】
そして、Ｉ／Ｆ３０４は、ネットワーク３２０と内部のインターフェースを司り、ＲＤＭＡ転送により、他の装置とのデータの送受信をおこなう。また、Ｉ／Ｆ３０４は、ＲＤＭＡ転送により、他の装置の記憶領域に対して、直接、データの書き込みまたは読み出しを実行する。Ｉ／Ｆ３０４には、例えばモデムやネットワークアダプタなどを採用することができる。より具体的には、ネットワーク３２０が「Ｉｎｆｉｎｉ  Ｂａｎｄ」である場合は、Ｉ／Ｆ３０４には、ホストチャネルアダプタ（ＨＣＡ：Ｈｏｓｔ  Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）が採用される。
【００３３】
「Ｉｎｆｉｎｉ  Ｂａｎｄ」では、ＨＣＡに、データ転送を処理するキューペア（ＱＰ：Ｑｕｅｕｅ  Ｐａｉｒ）が保持される。ここで、ＱＰとは、送信ワークキューと受信ワークキューで構成されたアドレス指定が可能なエンティティであり、被取得側の通信装置Ｎごとに存在する。そして、「Ｉｎｆｉｎｉ  Ｂａｎｄ」の通信は、ポート間ではなく、ＱＰ間で行われる。具体的には、取得側の通信装置Ｎは、ワークキューに一連の命令をキューイングすることで、ＨＣＡに命令を実行させて、データ転送をおこなう。
【００３４】
ディスプレイ３０５は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ３０５は、例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。キーボード３０６は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００３５】
アプリケーションＩ／Ｆ３０７は、アプリケーションからのデータの入出力を制御する。例えば、アプリケーションＩ／Ｆ３０７は、アプリケーションが生成したデータをＲＡＭ３０３のバッファＢに格納したり、Ｉ／Ｆ３０４によって外部装置から取得されたデータをアプリケーションに引き渡したりする。
【００３６】
（被取得長履歴の内容）
次に、図４を用いて、図３に示したＲＡＭ３０３に記憶されている被取得長履歴の内容について説明する。被取得長履歴は、自通信装置Ｎから他の通信装置Ｎが取得していったメッセージＭのデータ量についての履歴である。
【００３７】
図４は、図３に示したＲＡＭ３０３に記憶されている被取得長履歴の内容を示す説明図である。被取得長履歴４００は、時刻項目のそれぞれに対応付けてノード項目と、被取得長項目と、を有し、メッセージＭが取得されるごとにレコードを構成する。
【００３８】
時刻項目には、メッセージＭが取得された時刻（秒）が記憶されている。ノード項目には、メッセージＭの取得側の通信装置Ｎの識別子が記憶されている。被取得長項目には、取得されたメッセージＭのデータ量（Ｂｙｔｅ）が記憶されている。
【００３９】
（生成履歴の内容）
次に、図５を用いて、図３に示したＲＡＭ３０３に記憶されている生成履歴の内容について説明する。生成履歴は、自通信装置ＮにおいてアプリケーションによりメッセージＭが生成される速度（バッファＢへメッセージＭが格納される速度）についての履歴である。そして、生成履歴は、バッファＢがあふれる前に取得側の通信装置ＮにメッセージＭを取得させるためには、いつ要求トークンを送信すべきかを決定する際に、被取得側の通信装置Ｎにより参照される。
【００４０】
図５は、図３に示したＲＡＭ３０３に記憶されている生成履歴の内容を示す説明図である。生成履歴５００は、時刻項目のそれぞれに対応付けてノード項目と、スループット項目と、を有し、アプリケーションでメッセージＭが生成されるごとにレコードを構成する。
【００４１】
時刻項目には、メッセージＭが生成された時刻（秒）が記憶されている。ノード項目には、生成されたメッセージＭの取得側の通信装置Ｎの識別子が記憶されている。スループット項目には、単位時間に生成されたメッセージＭのデータ量（Ｂｙｔｅ／秒）が記憶されている。
【００４２】
（要求トークンレイテンシ履歴の内容）
次に、図６を用いて、図３に示したＲＡＭ３０３に記憶されている要求トークンレイテンシ履歴の内容について説明する。要求トークンレイテンシ履歴は、要求トークンを送信してからメッセージＭが取得されるまでの時間についての履歴である。そして、要求トークンレイテンシ履歴は、バッファＢがあふれる前に取得側の通信装置ＮにメッセージＭを取得させるためには、いつ要求トークンを送信すべきかを決定する際に、被取得側の通信装置Ｎにより参照される。
【００４３】
図６は、図３に示したＲＡＭ３０３に記憶されている要求トークンレイテンシ履歴の内容を示す説明図である。要求トークンレイテンシ履歴６００は、時刻項目のそれぞれに対応付けてノード項目と、レイテンシ項目と、を有する。要求トークンレイテンシ履歴６００は、要求トークンを送信するごとにレコードを構成し、メッセージＭが取得されるごとにレコードを更新する。
【００４４】
時刻項目には、要求トークンを送信した時刻（秒）が記憶されている。ノード項目には、要求トークンの宛先になる取得側の通信装置Ｎの識別子が記憶されている。レイテンシ項目には、要求トークンを送信してからメッセージＭが取得されるまでの時間（秒）が記憶されている。
【００４５】
（被取得スループット履歴の内容）
次に、図７を用いて、図３に示したＲＡＭ３０３に記憶されている被取得スループット履歴の内容について説明する。被取得スループット履歴は、単位時間に取得されたメッセージＭのデータ量についての履歴であり、被取得長履歴４００に基づいて作成される。そして、被取得スループット履歴は、バッファＢがあふれる前に取得側の通信装置ＮにメッセージＭを取得させるためには、いつ要求トークンを送信すべきかを決定する際に、被取得側の通信装置Ｎにより参照される。
【００４６】
図７は、図３に示したＲＡＭ３０３に記憶されている被取得スループット履歴の内容を示す説明図である。被取得スループット履歴７００は、時刻項目のそれぞれに対応付けてスループット項目を有し、メッセージＭが取得されるごとにレコードを構成する。
【００４７】
時刻項目には、メッセージＭが取得された時刻（秒）が記憶されている。スループット項目には、単位時間に取得されたメッセージＭのデータ量（Ｂｙｔｅ／秒）が記憶されている。具体的には、今回取得されたデータ量／（今回の被取得時刻−前回の被取得時刻）で算出できる。
【００４８】
（取得長履歴の内容）
次に、図８を用いて、図３に示したＲＡＭ３０３に記憶されている取得長履歴の内容について説明する。取得長履歴は、自通信装置Ｎが他の通信装置Ｎから取得したメッセージＭのデータ量についての履歴である。
【００４９】
図８は、図３に示したＲＡＭ３０３に記憶されている取得長履歴の内容を示す説明図である。取得長履歴８００は、時刻項目のそれぞれに対応付けてノード項目と、取得長項目と、を有し、メッセージＭを取得するごとにレコードを構成する。
【００５０】
時刻項目には、メッセージＭを取得した時刻（秒）が記憶されている。ノード項目には、メッセージＭの被取得側の通信装置Ｎの識別子が記憶されている。取得長項目には、取得したメッセージＭのデータ量（Ｂｙｔｅ）が記憶されている。
【００５１】
（取得スループット履歴の内容）
次に、図９を用いて、図３に示したＲＡＭ３０３に記憶されている取得スループット履歴の内容について説明する。取得スループット履歴は、単位時間に取得したメッセージＭのデータ量についての履歴であり、取得長履歴８００に基づいて作成される。そして、取得スループット履歴は、被取得側の通信装置ＮのバッファＢがあふれないように、どの被取得側の通信装置Ｎを優先して取得対象に決定すべきかを判定する際に、取得側の通信装置Ｎにより参照される。
【００５２】
図９は、図３に示したＲＡＭ３０３に記憶されている取得スループット履歴の内容を示す説明図である。取得スループット履歴９００は、時刻項目のそれぞれに対応付けてスループット項目を有し、メッセージＭを取得するごとにレコードを構成する。
【００５３】
時刻項目には、メッセージＭを取得した時刻（秒）が記憶されている。スループット項目には、単位時間に取得したメッセージＭのデータ量（Ｂｙｔｅ／秒）が記憶されている。具体的には、取得したデータ量／（今回の取得時刻−前回の取得時刻）で算出できる。
【００５４】
（要求トークンリストの内容）
次に、図１０を用いて、図３に示したＲＡＭ３０３に記憶されている要求トークンリストの内容について説明する。
【００５５】
図１０は、図３に示したＲＡＭ３０３に記憶されている要求トークンリストの内容を示す説明図である。要求トークンリスト１０００は、ノード項目のそれぞれに対応付けて時刻項目と、バッファ項目と、他バッファ項目と、残り時間項目と、を有し、要求トークンを受信するごとにレコードを構成する。
【００５６】
ノード項目には、要求トークンの送信元になる通信装置Ｎの識別子が記憶されている。時刻項目には、要求トークンを受信した時刻（秒）が記憶されている。バッファ項目には、要求トークンの送信元での要求トークンの宛先を取得元にするメッセージＭが格納されるバッファＢに格納されているデータ量（Ｂｙｔｅ）が記憶されている。
【００５７】
他バッファ項目には、要求トークンの宛先を取得側にするメッセージＭが格納されるバッファＢとは異なる他のバッファＢに格納されているデータ量（Ｂｙｔｅ）が記憶されている。残り時間項目には、要求トークンの送信元におけるメッセージＭの取得期限までの残り時間が記憶されている。
【００５８】
（通信相手リストの内容）
次に、図１１を用いて、図３に示したＲＡＭ３０３に記憶されている通信相手リストの内容について説明する。通信相手リストは、取得側の通信装置ＮがメッセージＭを取得する際に、または被取得側の通信装置Ｎが要求トークンを送信する際に、参照される。
【００５９】
図１１は、図３に示したＲＡＭ３０３に記憶されている通信相手リストの内容を示す説明図である。通信相手リスト１１００は、ノード項目のそれぞれに対応付けてキューペア項目を有し、通信相手になる通信装置Ｎごとにレコードを構成する。
【００６０】
ノード項目には、通信相手になる通信装置Ｎの識別子が記憶されている。キューペア項目には、通信装置Ｎに対応するキューペアを特定する識別子が記憶されている。
【００６１】
（取得条件の内容）
次に、図１２を用いて、図３に示したＲＡＭ３０３に記憶されている取得条件の内容について説明する。取得条件は、ネットワークを輻輳させない範囲で、同時に取得可能な通信装置Ｎの数と、それぞれの通信装置Ｎから取得するメッセージＭのデータ量の上限値と、についてのテーブルである。
【００６２】
図１２は、図３に示したＲＡＭ３０３に記憶されている取得条件の内容を示す説明図である。取得条件１２００は、現在取得数項目と、最大取得数項目と、許可長項目と、を有し、通信装置Ｎの初期化処理の時にレコードを構成し、通信装置Ｎが通信を開始または終了するごとにレコードを更新する。
【００６３】
現在取得数項目には、現在取得中の取得対象の通信装置Ｎの数が記憶されている。最大取得数項目には、同時に取得する通信装置Ｎの数の最大値が記憶されている。許可長項目には、通信装置Ｎから取得するメッセージＭのデータ量の上限値が記憶されている。
【００６４】
なお、ここでは、複数の被取得側の通信装置Ｎのそれぞれから取得するメッセージＭのデータ量を同じ値にしている。しかし、被取得側の通信装置Ｎごとに、取得するメッセージＭのデータ量を変えてもよい。この場合、取得条件１２００は、複数の被取得側の通信装置Ｎごとに、許可長項目を有してもよい。
【００６５】
（取得依頼リストの内容）
次に、図１３を用いて、図３に示したＲＡＭ３０３に記憶されている取得依頼リストの内容について説明する。
【００６６】
図１３は、図３に示したＲＡＭ３０３に記憶されている取得依頼リストの内容を示す説明図である。取得依頼リスト１３００は、ノード項目のそれぞれに対応付けて、要求トークン項目を有し、要求トークンに基づく取得依頼が登録されるごとにレコードを構成する。
【００６７】
ノード項目には、取得対象にした被取得側になる通信装置Ｎの識別子が記憶されている。要求トークン項目には、取得対象にした被取得側の通信装置Ｎから受信した要求トークンの識別子が記憶されている。要求トークンの識別子は、例えば、要求トークンリスト１０００のレコードへのポインタである。
【００６８】
（通信装置Ｎの機能的構成例）
次に、図１４および図１５を用いて、通信装置Ｎの機能的構成例について説明する。ここでは、簡単のため、メッセージＭの被取得側としての通信装置Ｎの機能と、メッセージＭの取得側としての通信装置Ｎの機能と、を分けて説明している。ただし、通信装置Ｎは、メッセージＭの被取得側としての機能と、メッセージＭの取得側としての機能と、を併せて有してよい。
【００６９】
図１４は、メッセージＭの取得側としての通信装置Ｎの機能的構成を示すブロック図である。通信装置Ｎは、受信部１４０１と、判定部１４０２と、取得部１４０３と、決定部１４０４と、を含む構成である。この制御部となる機能（受信部１４０１〜決定部１４０４）は、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０４により、その機能を実現する。
【００７０】
受信部１４０１は、複数の取得先のうちいずれかの取得先での自通信装置Ｎを取得元にする被取得データのデータ量を特定する情報を、いずれかの取得先から受信する機能を有する。ここで、取得先とは、上述した被取得側の通信装置Ｎである。被取得データとは、被取得側の通信装置Ｎが有し、取得側になる自通信装置Ｎが取得するデータであり、上述したメッセージＭである。
【００７１】
データ量とは、自通信装置Ｎが取得するメッセージＭが格納されるバッファＢ（以下、「自通信装置Ｎ宛のバッファＢ」という）に格納されているメッセージＭのデータ量（以下、「自通信装置Ｎ宛のバッファリング量」という）である。データ量を特定する情報とは、例えば、自通信装置Ｎ宛のバッファリング量の即値であり、さらに、自通信装置Ｎ宛のバッファＢの容量を含んでもよい。また、自通信装置Ｎ宛のバッファＢの容量と、自通信装置Ｎ宛のバッファリング量と、の比率であってもよい。
【００７２】
具体的には、例えば、受信部１４０１は、被取得側の通信装置Ｎの識別子と、被取得側の通信装置Ｎでの自通信装置Ｎ宛のバッファリング量と、を含む要求トークンを受信する。これにより、受信部１４０１は、取得対象にする被取得側の通信装置Ｎを決定する指標になる情報を受信できる。なお、受信された要求トークンは、ＲＡＭ３０３の要求トークンリスト１２００に記憶される。
【００７３】
また、受信部１４０１は、いずれかの取得先とは異なる他の取得先での自通信装置Ｎを取得元にする被取得データのデータ量を特定する情報を、他の取得先から受信する機能を有する。具体的には、例えば、受信部１４０１は、複数の被取得側の通信装置Ｎのそれぞれから、各通信装置Ｎの識別子と、各通信装置Ｎでの自通信装置Ｎ宛のバッファリング量と、を含む要求トークンを受信する。これにより、受信部１４０１は、取得対象にする被取得側の通信装置Ｎを決定する指標になる情報を受信できる。
【００７４】
また、受信部１４０１は、いずれかの取得先での自通信装置Ｎとは異なる他の通信装置Ｎを取得元にする被取得データのデータ量を特定する情報を、いずれかの取得先から受信する機能を有する。具体的には、例えば、受信部１４０１は、自通信装置Ｎとは異なる他の通信装置Ｎが取得するメッセージＭが格納されるバッファＢ（以下、「他の通信装置Ｎ宛のバッファＢ」という）に格納されているメッセージＭのデータ量（以下、「他の通信装置Ｎ宛のバッファリング量」という）を含む要求トークンを受信する。これにより、受信部１４０１は、取得対象にする被取得側の通信装置Ｎを決定する指標になる情報を受信できる。
【００７５】
また、受信部１４０１は、いずれかの取得先での自通信装置Ｎを取得元にする被取得データの取得期限に関する情報を、いずれかの取得先から受信する機能を有する。具体的には、例えば、受信部１４０１は、被取得側の通信装置Ｎでの自通信装置Ｎが取得するメッセージＭの取得期限までの残り時間を含む要求トークンを受信する。これにより、受信部１４０１は、取得対象にする被取得側の通信装置Ｎを決定する指標になる情報を受信できる。
【００７６】
また、受信部１４０１は、いずれかの取得先とは異なる他の取得先での自通信装置Ｎを取得元にする被取得データの取得期限に関する情報を、他の取得先から受信する機能を有する。具体的には、例えば、受信部１４０１は、複数の被取得側の通信装置Ｎのそれぞれから、自通信装置Ｎが取得するメッセージＭの取得期限までの残り時間を含む要求トークンを受信する。これにより、受信部１４０１は、取得対象にする被取得側の通信装置Ｎを決定する指標になる情報を受信できる。
【００７７】
判定部１４０２は、受信部１４０１によって受信された情報に基づいて、いずれかの取得先を取得対象にするか否かを判定する機能を有する。なお、取得対象にすると判定された場合、取得対象にした取得先（被取得側の通信装置Ｎ）に対応するレコードが、取得依頼リスト１３００に記憶される。
【００７８】
具体的には、例えば、判定部１４０２は、いずれかの取得先での自通信装置Ｎを取得元にする被取得データのデータ量を特定する情報と、他の取得先での自通信装置Ｎを取得元にする被取得データのデータ量を特定する情報と、を参照する。そして、判定部１４０２は、参照した情報に基づいて、いずれかの取得先を取得対象にするか否かを判定する。
【００７９】
より具体的には、例えば、判定部１４０２は、複数の被取得側の通信装置Ｎから受信した要求トークンに含まれる各通信装置Ｎでの自通信装置Ｎ宛のバッファリング量に基づいて、各通信装置Ｎでの自通信装置Ｎ宛のバッファＢの逼迫具合を算出する。そして、判定部１４０２は、他の通信装置Ｎよりも自通信装置Ｎ宛のバッファＢの逼迫具合が大きい通信装置Ｎを、優先して取得対象にすると判定する。これにより、自通信装置Ｎ宛のバッファＢがより逼迫している被取得側の通信装置Ｎから優先してメッセージＭを取得し、バッファＢがあふれることを防止することができる。
【００８０】
また、具体的には、例えば、判定部１４０２は、いずれかの取得先での自通信装置Ｎを取得元にする被取得データのデータ量を特定する情報と、いずれかの取得先での他の通信装置Ｎを取得元にする被取得データのデータ量を特定する情報と、を参照する。そして、判定部１４０２は、参照した情報に基づいて、いずれかの取得先を取得対象にするか否かを判定する。
【００８１】
より具体的には、例えば、判定部１４０２は、要求トークンに含まれる自通信装置Ｎ宛のバッファリング量より、他の通信装置Ｎ宛のバッファリング量の方が多い場合、被取得側の通信装置Ｎを取得対象にしない。これにより、判定部１４０２は、被取得側の通信装置Ｎから、自通信装置Ｎよりも優先してメッセージＭを取得するべき他の通信装置Ｎがある場合は、メッセージＭを取得しないようにして、ネットワーク全体での効率化を図ることができる。
【００８２】
また、具体的には、例えば、判定部１４０２は、いずれかの取得先での自通信装置Ｎを取得元にする被取得データの取得期限に関する情報に基づいて、いずれかの取得先を取得対象にするか否かを判定する。より具体的には、例えば、判定部１４０２は、要求トークンに含まれる被取得側の通信装置Ｎでの自通信装置Ｎ宛のメッセージＭの取得期限までの残り時間を参照する。そして、判定部１４０２は、参照した残り時間が閾値以下である場合に、被取得側の通信装置Ｎを取得対象にする。これにより、自通信装置Ｎ宛のバッファリング量が少なくても、取得期限に切迫している場合には、被取得側の通信装置Ｎを取得対象にすることができる。
【００８３】
また、具体的には、例えば、判定部１４０２は、いずれかの取得先での自通信装置Ｎを取得元にする被取得データの取得期限に関する情報と、他の取得先での自通信装置Ｎを取得元にする被取得データの取得期限に関する情報を参照する。そして、判定部１４０２は、参照した情報に基づいて、いずれかの取得先を取得対象にするか否かを判定する。
【００８４】
より具体的には、例えば、判定部１４０２は、複数の被取得側の通信装置Ｎから受信した要求トークンに含まれる各通信装置Ｎでの自通信装置Ｎが取得するメッセージＭの取得期限までの残り時間を参照する。そして、判定部１４０２は、参照した残り時間に基づいて、他の通信装置Ｎよりも取得期限までの残り時間が短い通信装置Ｎを、取得対象にすると判定する。これにより、より取得期限に切迫している通信装置Ｎから優先して取得対象にすることができる。なお、判定結果は、ＲＡＭ３０３などの記憶領域に記憶される。
【００８５】
また、具体的には、例えば、判定部１４０２は、取得中の取得対象の数が閾値以上である場合、いずれかの取得先を取得対象にしないと判定する。より具体的には、例えば、判定部１４０２は、取得対象にした被取得側の通信装置Ｎのうち、取得が終了していない通信装置Ｎの数が閾値以上である場合、あらたな被取得側の通信装置Ｎを取得対象にしないと判定する。これにより、ネットワークを流れるデータ量を制御し、ネットワークの輻輳を抑制する。
【００８６】
取得部１４０３は、判定部１４０２によって取得対象にすると判定されたいずれかの取得先から、通信装置Ｎを取得元にする被取得データを取得する機能を有する。具体的には、例えば、取得部１４０３は、取得対象にした被取得側の通信装置Ｎから、メッセージＭを取得する。より具体的には、例えば、取得部１４０３は、通信相手リスト１１００を参照して、取得対象にした被取得側の通信装置Ｎに対応するキューペアを特定し、特定したキューペアにメッセージＭの取得の命令をキューイングし、ＨＣＡにメッセージＭを取得させる。これにより、ネットワークにおいて、メッセージＭの通信ができる。
【００８７】
また、取得部１４０３は、判定部１４０２によって取得対象にすると判定されたいずれかの取得先から、決定部１４０４によって決定されたデータ量で、自通信装置Ｎを取得元にする被取得データを取得する機能を有する。具体的には、例えば、取得部１４０３は、取得対象にした被取得側の通信装置Ｎから、決定部１４０４によって決定されたデータ量で、メッセージＭを取得する。これにより、ネットワークにおいて、メッセージＭの通信ができる。
【００８８】
決定部１４０４は、受信部１４０１によって受信された情報に基づいて、判定部１４０２によって取得対象にすると判定されたいずれかの取得先から取得するデータ量を決定する機能を有する。ここで、いずれかの取得先から取得するデータ量とは、上述した取得データ量である。
【００８９】
具体的には、例えば、決定部１４０４は、ネットワークのスループットや、要求トークンに含まれる自通信装置Ｎ宛のバッファリング量に基づいて、ネットワークを輻輳させない範囲で、被取得側の通信装置Ｎから取得するメッセージＭのデータ量を決定する。また、決定されたメッセージＭのデータ量は、ＲＡＭ３０３などの記憶領域に記憶される。これにより、決定部１４０４は、ネットワークの輻輳を抑制しつつ、取得可能なデータ量を決定することができる。
【００９０】
図１５は、メッセージＭの被取得側としての通信装置Ｎの機能的構成を示すブロック図である。通信装置Ｎは、検出部１５０１と、通知部１５０２と、を含む構成である。この制御部となる機能（検出部１５０１と通知部１５０２）は、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０４により、その機能を実現する。
【００９１】
検出部１５０１は、取得元に取得させる被取得データのデータ量が閾値以上であることを検出する機能を有する。ここで、取得元とは、上述した取得側の通信装置Ｎである。被取得データとは、取得側の通信装置Ｎに取得させるメッセージＭである。被取得データのデータ量とは、取得側の通信装置Ｎに取得させるメッセージＭが格納されるバッファＢのメッセージＭのデータ量である。
【００９２】
具体的には、例えば、検出部１５０１は、バッファＢのバッファリング量が閾値以上であることを検出する。ここで、閾値とは、後述する目標バッファリング量であり、バッファＢがあふれないように、バッファＢがあふれる前に要求トークンを送信するための指標となる値である。例えば、閾値は、「バッファＢの容量×安全係数（例えば、０．６）」である。また、例えば、閾値は、「バッファＢの容量−平均の被取得スループット×平均の要求トークンのレイテンシ」である。これにより、検出部１５０１は、バッファＢがあふれる前に、要求トークンを送信するトリガを発生させることができる。
【００９３】
また、検出部１５０１は、被取得データを生成したときからの経過時間が規定時間以上であることを検出する機能を有する。具体的には、検出部１５０１は、アプリケーションがメッセージＭを生成したときに計時を開始して経過時間を計測し、経過時間が規定時間以上になったことを検出する。ここで、規定時間とは、後述するデッドラインであり、取得期限の前に要求トークンを送信するための指標となる値である。取得期限とは、アプリケーションが許容できるメッセージＭのレイテンシ（メッセージＭが生成されてから取得されるまでの時間）の最大値（以下、「最大許容レイテンシ」）である。
【００９４】
例えば、規定時間は、「最大許容レイテンシ×安全係数（例えば、０．６）」である。また、例えば、規定時間は、「最大許容レイテンシ−平均の要求トークンのレイテンシ」である。これにより、検出部１５０１は、メッセージＭの取得期限になる前に、要求トークンを送信するトリガを発生させることができる。
【００９５】
また、検出部１５０１は、取得元とは異なる他の取得元に取得させる被取得データのデータ量を検出する機能を有する。具体的には、例えば、検出部１５０１は、複数の取得側の通信装置Ｎのそれぞれに取得させるバッファＢのバッファリング量を検出する。
【００９６】
通知部１５０２は、検出部１５０１によって被取得データのデータ量が閾値以上であることが検出された場合、被取得データのデータ量を特定する情報を、取得元に通知する機能を有する。具体的には、例えば、通知部１５０２は、バッファリング量が目標バッファリング量以上になった場合に、メッセージＭの取得側の通信装置Ｎに、バッファリング量を特定する情報を含む要求トークンを通知する。これにより、自通信装置ＮからメッセージＭを取得側の通信装置Ｎに取得させるトリガとなる要求トークンを、メッセージＭの取得側の通信装置Ｎに送信することができる。
【００９７】
また、通知部１５０２は、検出部１５０１によって経過時間が規定時間以上であることが検出された場合、被取得データのデータ量を特定する情報を、取得元に通知する機能を有する。具体的には、例えば、通知部１５０２は、経過時間がデッドライン以上になったとき、メッセージＭの取得側の通信装置Ｎに、バッファリング量を特定する情報を含む要求トークンを通知する。これにより、自通信装置ＮからメッセージＭを取得側の通信装置Ｎに取得させるトリガとなる要求トークンを、メッセージＭの取得側の通信装置Ｎに送信することができる。
【００９８】
また、通知部１５０２は、被取得データのデータ量を特定する情報とともに、被取得データの取得期限に関する情報を、取得元に通知する機能を有する。取得期限に関する情報とは、例えば、メッセージＭの生成からの経過時間である。また、取得期限に関する情報とは、例えば、取得期限までの残り時間でもよい。具体的には、通知部１５０２は、取得期限に関する情報を含む要求トークンを、取得側の通信装置Ｎに通知する。これにより、取得側の通信装置Ｎにおいて取得対象を決定するための指標となる情報になる取得期限に関する情報を、取得側の通信装置Ｎに提供することができる。
【００９９】
また、通知部１５０２は、被取得データのデータ量を特定する情報とともに、他の取得元に取得させる被取得データのデータ量を特定する情報を、取得元に通知する機能を有する。ここで、他の取得元に取得させる被取得データのデータ量を特定する情報とは、例えば、要求トークンの送信先とは異なる他の取得側の通信装置Ｎに取得させるメッセージＭが格納されるバッファＢのバッファリング量である。これにより、取得側の通信装置Ｎにおいて取得対象を決定するための指標となる情報になる要求トークンの送信先とは異なる他の取得側の通信装置Ｎが取得するメッセージＭが格納されるバッファＢのバッファリング量を、取得側の通信装置Ｎに提供することができる。
【０１００】
（通信の準備）
次に、図１６および図１７を用いて、通信装置Ｎが通信の準備としておこなう処理について説明する。
【０１０１】
（初期化処理の詳細）
まず、図１６を用いて、通信装置Ｎが通信をはじめる前におこなう初期化処理の詳細について説明する。
【０１０２】
図１６は、初期化処理の詳細を示すフローチャートである。まず、ＣＰＵ３０１は、アプリケーションＩ／Ｆ３０７を初期化する（ステップＳ１６０１）。アプリケーションＩ／Ｆ３０７の初期化において、後述するアプリケーション利用登録処理がおこなわれる。次に、ＣＰＵ３０１は、バッファＢを初期化する（ステップＳ１６０２）。また、ＣＰＵ３０１は、統計情報（被取得長履歴４００、被取得スループット履歴７００、取得長履歴８００、取得スループット履歴９００）を初期化する（ステップＳ１６０３）。
【０１０３】
そして、ＣＰＵ３０１は、通信相手リスト１１００を作成する（ステップＳ１６０４）。次に、ＣＰＵ３０１は、要求トークンリスト１０００と、取得条件１２００と、を初期化して（ステップＳ１６０５）、初期化処理を終了する。これにより、通信装置Ｎは、通信をはじめることができるようになる。
【０１０４】
（アプリケーション利用登録処理の詳細）
次に、図１７を用いて、通信装置Ｎが、取得したメッセージＭをアプリケーションへ引き渡すためにおこなうアプリケーション利用登録処理の詳細について説明する。
【０１０５】
図１７は、アプリケーション利用登録処理の詳細を示すフローチャートである。まず、ＣＰＵ３０１は、受信関数を登録する（ステップＳ１７０１）。次に、ＣＰＵ３０１は、受信バッファを登録する（ステップＳ１７０２）。
【０１０６】
そして、ＣＰＵ３０１は、最大許容レイテンシを登録し（ステップＳ１７０３）、アプリケーション利用登録処理を終了する。これにより、通信装置Ｎは、取得したメッセージＭをアプリケーションに引き渡すことができるようになる。
【０１０７】
（被取得側の通信装置Ｎの処理）
次に、図１８〜図２０を用いて、被取得側の通信装置Ｎの処理について説明する。具体的には、例えば、図１に示した通信装置Ｎ１，Ｎ３の処理である。
【０１０８】
（要求トークンの送信の内容）
まず、図１８を用いて、被取得側の通信装置Ｎによる要求トークンの送信の内容について説明する。
【０１０９】
図１８は、要求トークンの送信の内容を示す説明図である。通信装置Ｎは、バッファＢがあふれないように、バッファＢがあふれる前に要求トークンを送信するための指標となる目標バッファリング量を算出しておく。
【０１１０】
ここで、通信装置Ｎは、被取得スループット履歴７００から、平均の被取得スループットを算出しておく。また、通信装置Ｎは、要求トークンレイテンシ履歴６００から、平均の要求トークンのレイテンシを算出しておく。そして、通信装置Ｎは、目標バッファリング量として、例えば、「バッファＢの容量−平均の被取得スループット×平均の要求トークンのレイテンシ」を算出しておく。
【０１１１】
ただし、通信装置Ｎは、被取得長履歴４００や生成履歴５００を参照して、目標バッファリング量をさらに調整してもよい。例えば、通信装置Ｎは、被取得長履歴４００を参照して、過去に頻繁に少量のメッセージＭが取得されている場合には、要求トークンの送信をより頻繁におこなうために、目標バッファリング量を低く調整してもよい。また、通信装置Ｎは、生成履歴５００を参照して、過去にアプリケーションが大量のメッセージＭを生成したことがある場合は、目標バッファリング量を低く調整してもよい。
【０１１２】
（１）そして、通信装置Ｎは、算出した目標バッファリング量より、バッファＢのバッファリング量が多くなったとき、要求トークンを送信する。これにより、通信装置Ｎは、バッファＢがあふれる前に、要求トークンを送信するトリガを発生させ、メッセージＭの取得側に要求トークンを送信することができる。
【０１１３】
また、通信装置Ｎは、取得期限の前にメッセージＭを取得させるための指標となるデッドラインを算出しておく。取得期限とは、アプリケーションが許容できるメッセージＭのレイテンシ（メッセージＭを生成してから取得されるまでの時間）の最大値（以下、「最大許容レイテンシ」）である。通信装置Ｎは、例えば、デッドラインとして、「最大許容レイテンシ−平均の要求トークンのレイテンシ」を算出しておく。
【０１１４】
（２）そして、通信装置Ｎは、メッセージＭが生成されてからの経過時間を測定し、経過時間が算出したデッドラインを超えた場合に、要求トークンを送信する。これにより、通信装置Ｎは、取得期限を経過する前に、要求トークンを送信するトリガを発生させ、メッセージＭの取得側に要求トークンを送信することができる。
【０１１５】
（バッファ管理処理の詳細）
次に、図１９を用いて、図１８に示した要求トークンを送信する被取得側の通信装置Ｎによるバッファ管理処理の詳細について説明する。
【０１１６】
図１９は、バッファ管理処理の詳細を示すフローチャートである。まず、ＣＰＵ３０１は、アプリケーションに生成されたメッセージＭのサイズが小さいか否かを判定する（ステップＳ１９０１）。ここで、サイズが小さい場合（ステップＳ１９０１：Ｙｅｓ）、ＣＰＵ３０１は、メッセージＭをバッファＢにコピーして（ステップＳ１９０２）、ステップＳ１９０４に移行する。一方で、サイズが大きい場合（ステップＳ１９０１：Ｎｏ）、ＣＰＵ３０１は、メッセージＭをバッファＢに連結して（ステップＳ１９０３）、ステップＳ１９０４に移行する。
【０１１７】
次に、ＣＰＵ３０１は、バッファＢのバッファリング量を更新して（ステップＳ１９０４）、バッファリング量が目標バッファリング量以上か否かを判定する（ステップＳ１９０５）。ここで、目標バッファリング量以上である場合（ステップＳ１９０５：Ｙｅｓ）、ＣＰＵ３０１は、要求トークン送信処理（ステップＳ１９０７）に移行する。
【０１１８】
一方、目標バッファリング量より小さい場合（ステップＳ１９０５：Ｎｏ）、ＣＰＵ３０１は、メッセージＭの生成からの経過時間がデッドラインを超えているか否かを判定する（ステップＳ１９０６）。ここで、デッドラインを超えている場合（ステップＳ１９０６：Ｙｅｓ）、ＣＰＵ３０１は、要求トークン送信処理（ステップＳ１９０７）に移行する。
【０１１９】
一方、デッドラインを超えていない場合（ステップＳ１９０６：Ｎｏ）、ＣＰＵ３０１は、バッファ管理処理を終了する。これにより、バッファＢの容量が枯渇する前に要求トークンの送信のトリガを発生させることができる。また、メッセージＭの取得期限を過ぎる前に、要求トークンの送信のトリガを発生させることができる。
【０１２０】
（要求トークン送信処理の詳細）
次に、図２０を用いて、図１９に示した要求トークン送信処理の詳細について説明する。
【０１２１】
図２０は、要求トークン送信処理の詳細を示すフローチャートである。まず、ＣＰＵ３０１は、要求トークンを生成する（ステップＳ２００１）。次に、ＣＰＵ３０１は、生成した要求トークンを送信し（ステップＳ２００２）、要求トークン送信処理を終了する。これにより、通信装置Ｎは、要求トークンを送信することができる。
【０１２２】
ここで、生成される要求トークンには、例えば、被取得側の通信装置Ｎの識別子と、要求トークンの宛先を取得側にするメッセージＭが格納されるバッファＢへ格納されているメッセージＭのデータ量と、が含まれている。また、要求トークンには、要求トークンの宛先を取得側にするメッセージＭが格納されるバッファＢとは異なる他のバッファＢへ格納されているメッセージＭのデータ量を含んでもよい。また、要求トークンには、要求トークンの宛先を取得側にする通信装置Ｎに取得させるメッセージＭの取得期限に関する情報（例えば、取得期限までの残り時間）を含んでもよい。
【０１２３】
（メッセージＭを取得する側の通信装置Ｎの処理）
次に、図２１〜図２３を用いて、メッセージＭを取得する側の通信装置Ｎの処理について説明する。
【０１２４】
（メッセージＭの取得の内容）
まず、図２１を用いて、要求トークンを受信した取得側の通信装置ＮによるメッセージＭの取得の内容について説明する。なお、取得側の通信装置Ｎは、受信した要求トークンから、要求トークンリスト１０００を生成している。
【０１２５】
図２１は、要求トークンを受信した取得側の通信装置ＮによるメッセージＭの取得の内容を示す説明図である。ここで、取得側の通信装置Ｎは、要求トークンリスト１０００の各レコードを参照して、メッセージＭの取得対象にする被取得側の通信装置Ｎを決定する。ただし、取得側の通信装置Ｎは、取得条件１２００を参照して、最大取得数を超えない範囲で、メッセージＭの取得対象にする被取得側の通信装置Ｎを決定する。
【０１２６】
（１）例えば、通信装置Ｎは、自通信装置Ｎが取得するメッセージＭを格納するバッファＢのメッセージＭのデータ量が多い通信装置Ｎ２からメッセージＭを取得するために、取得依頼リスト１３００にレコードを追加する。
【０１２７】
（２）また、通信装置Ｎは、自通信装置Ｎが取得するメッセージＭを格納するバッファＢとは異なる他のバッファＢが逼迫している通信装置Ｎ３からは、まだメッセージＭを取得しない。
【０１２８】
（３）また、通信装置Ｎは、自通信装置Ｎが取得するメッセージＭを格納するバッファＢのメッセージＭのデータ量は少ないが、取得期限までの残り時間が少ない通信装置Ｎ４からメッセージＭを取得するために、取得依頼リスト１３００にレコードを追加する。
【０１２９】
（４）また、通信装置Ｎは、自通信装置Ｎが取得するメッセージＭを格納するバッファＢのメッセージＭのデータ量が多い通信装置Ｎ５からメッセージＭを取得するために、取得依頼リスト１３００にレコードを追加する。
【０１３０】
（５）そして、通信装置Ｎは、取得依頼リスト１３００のレコードに基づいて、取得対象にした通信装置Ｎから、メッセージＭを取得する。ただし、通信装置Ｎは、同時に取得する取得対象の数（現在取得数）を、取得条件１２００の最大取得数以内にする。例えば、取得依頼リスト１３００のレコードの登録順で被取得側の通信装置Ｎを取得対象にしていき、最大取得数を超えない数の被取得側の通信装置Ｎから同時にメッセージＭを取得していく。
【０１３１】
また、例えば、取得依頼リスト１３００のレコードに対応する要求トークンに含まれるバッファリング量が多い順で被取得側の通信装置Ｎを取得対象にしていき、最大取得数を超えない数の被取得側の通信装置Ｎから同時にメッセージＭを取得してもよい。これにより、ネットワークを輻輳させない範囲で、複数の通信装置Ｎから同時にメッセージＭを取得することができる。
【０１３２】
（他の取得側へのバッファリング量を含む要求トークンに基づくメッセージＭの取得）
また、図２２を用いて、他の取得側へのバッファリング量を含む要求トークンを受信した通信装置ＮがおこなうメッセージＭの取得について説明する。具体的には、図２１の（２）に示した処理の内容である。
【０１３３】
図２２は、他の取得側へのバッファリング量を含む要求トークンに基づくメッセージＭの取得の内容を示す説明図である。ここで、図２２に示す通信システムは、図１と同様の通信システムである。以下では、通信装置Ｎ１が、自通信装置ＮでバッファリングしているメッセージＭを、通信装置Ｎ２，Ｎ３のそれぞれに取得するように要求する場合を例に挙げて、通信装置Ｎによる通信の内容について説明する。
【０１３４】
図２２において、（１）通信装置Ｎ１は、通信装置Ｎ２に取得させるメッセージＭがバッファＢ１ｔ２に格納されているため、通信装置Ｎ２に要求トークンを送信する。
【０１３５】
（２）また、通信装置Ｎ１は、通信装置Ｎ３に取得させるメッセージＭがバッファＢ１ｔ３に格納されているため、通信装置Ｎ３に要求トークンを送信する。
【０１３６】
ここで、それぞれの要求トークンには、メッセージＭの被取得側となる通信装置Ｎ１の識別子と、バッファＢ１ｔ２に格納されているメッセージＭのデータ量と、バッファＢ１ｔ３に格納されているメッセージＭのデータ量と、が含まれる。
【０１３７】
（３）要求トークンを受信した通信装置Ｎ２は、要求トークンに含まれるバッファＢ１ｔ２へ格納されているメッセージＭのデータ量と、バッファＢ１ｔ３に格納されているメッセージＭのデータ量と、を参照して、通信装置Ｎ１からメッセージＭを取得するか否かを判定する。
【０１３８】
ここでは、バッファＢ１ｔ３へ格納されているメッセージＭのデータ量は、バッファＢ１ｔ２へ格納されているメッセージＭのデータ量より多い。そのため、通信装置Ｎ２は、通信装置Ｎ１は通信装置Ｎ２よりも先に、通信装置Ｎ３からメッセージＭを取得されるべきであると判定する。そして、通信装置Ｎ２は、まだ通信装置Ｎ１からメッセージＭを取得しない。
【０１３９】
（４）一方、要求トークンを受信した通信装置Ｎ３は、要求トークンに含まれるバッファＢ１ｔ２へ格納されているメッセージＭのデータ量と、バッファＢ１ｔ３に格納されているメッセージＭのデータ量と、を参照して、通信装置Ｎ１からメッセージＭを取得するか否かを判定する。
【０１４０】
ここでは、バッファＢ１ｔ３へ格納されているメッセージＭのデータ量は、バッファＢ１ｔ２へ格納されているメッセージＭのデータ量より多い。そのため、通信装置Ｎ３は、通信装置Ｎ２よりも先に、通信対象にするべきであると判定して、通信装置Ｎ１からメッセージＭを取得する。
【０１４１】
このように、被取得側での複数のバッファＢの逼迫具合に基づいて、取得対象にするか否かを決定するため、１対１の通信装置Ｎ間の効率化ではなく、ネットワーク全体での効率化を図ることができる。また、これにより、取得側の通信装置Ｎでより逼迫しているバッファＢに格納されているメッセージＭが優先して取得されるようにすることで、バッファＢの容量の枯渇を回避することができる。
【０１４２】
（取得依頼登録処理）
次に、図２３を用いて、要求トークンを受信した通信装置Ｎがおこなう取得依頼登録処理について説明する。具体的には、例えば、図１に示した通信装置Ｎ２がおこなう処理である。
【０１４３】
図２３は、取得依頼登録処理の詳細を示すフローチャートである。まず、ＣＰＵ３０１は、要求トークンを受信したか否かを判定する（ステップＳ２３０１）。ここで、要求トークンを受信していない場合（ステップＳ２３０１：Ｎｏ）、ＣＰＵ３０１は、ステップＳ２３０１に戻り、要求トークンの受信を待つ。
【０１４４】
一方、要求トークンを受信した場合（ステップＳ２３０１：Ｙｅｓ）、ＣＰＵ３０１は、統計情報を更新する（ステップＳ２３０２）。次に、ＣＰＵ３０１は、受信した要求トークンを参照して、取得すべき状況か否かを判定する（ステップＳ２３０３）。ステップＳ２３０３の判定は、例えば、図２１の（１）〜（４）のそれぞれの処理に対応する。
【０１４５】
ここで、取得すべき状況でない場合（ステップＳ２３０３：Ｎｏ）、ＣＰＵ３０１は、取得依頼登録処理を終了する。一方、取得すべき状況である場合（ステップＳ２３０３：Ｙｅｓ）、ＣＰＵ３０１は、要求トークンを参照して、取得依頼リスト１３００にレコードを追加し（ステップＳ２３０４）、取得依頼登録処理を終了する。
【０１４６】
（取得処理）
次に、図２４を用いて、取得依頼リスト１３００に基づいて通信装置Ｎがおこなう取得処理について説明する。具体的には、例えば、取得側の通信装置Ｎは、図２３のステップＳ２３０４において取得依頼リスト１３００にレコードが追加された場合、または、一定時間ごとに、取得処理を実行して被取得側の通信装置ＮからメッセージＭを取得する。
【０１４７】
図２４は、取得処理の詳細を示すフローチャートである。まず、ＣＰＵ３０１は、現在取得数が最大取得数より少ないか否かを判定する（ステップＳ２４０１）。ここで、現在取得数が最大取得数以上である場合（ステップＳ２４０１：Ｎｏ）、ＣＰＵ３０１は、ステップＳ２４０５に移行する。
【０１４８】
一方、現在取得数が最大取得数より少ない場合（ステップＳ２４０１：Ｙｅｓ）、ＣＰＵ３０１は、取得依頼リスト１３００にレコードがあるか否かを判定する（ステップＳ２４０２）。ここで、レコードがない場合（ステップＳ２４０２：Ｎｏ）、ＣＰＵ３０１は、ステップＳ２４０５に移行する。
【０１４９】
一方、取得依頼リスト１３００にレコードがある場合（ステップＳ２４０２：Ｙｅｓ）、ＣＰＵ３０１は、取得依頼リスト１３００のいずれかのレコードを取得する（ステップＳ２４０３）。次に、ＣＰＵ３０１は、取得したレコードに基づいて、メッセージＭの取得を開始する（ステップＳ２４０４）。そして、ＣＰＵ３０１は、ステップＳ２４０１に戻る。
【０１５０】
ステップＳ２４０５では、ＣＰＵ３０１は、取得条件１２００を変更し（ステップＳ２４０５）、取得処理を終了する。これにより、通信装置Ｎは、最大取得数以内で、同時に複数の被取得側の通信装置ＮからメッセージＭを取得することができる。
【０１５１】
なお、取得側の通信装置Ｎは、メッセージＭの取得が終了した場合、被取得側の通信装置Ｎに終了通知を送信する。また、取得側の通信装置Ｎは、メッセージＭの取得が終了した場合、取得対象にした被取得側の通信装置Ｎに対応する取得依頼リスト１３００のレコードを削除する。また、取得側の通信装置Ｎは、被取得側の通信装置ＮのバッファＢのすべてのメッセージＭの取得が終了した場合、取得対象にした被取得側の通信装置Ｎに対応する要求トークンリスト１０００のレコードを削除する。また、取得側の通信装置Ｎは、メッセージＭの取得が終了した場合、統計情報を更新する。
【０１５２】
（取得条件１２００の変更の内容）
次に、図２５を用いて、ステップＳ２４０５における取得条件１２００の変更の内容について説明する。具体的には、例えば、通信装置Ｎは、ネットワークの使用状況に応じて、取得条件１２００を動的に変更していく。なお、取得条件１２００は固定であってもよい。
【０１５３】
図２５は、取得条件１２００の変更の内容を示す説明図である。通信装置Ｎは、図２５に示した表のように、許可長が使い切られているか否かと、取得スループットが上限値に達したか否かと、の条件に基づいて、取得条件１２００を変更する。
【０１５４】
ここで、上限値とは、取得スループットの限界値（ネットワークにおける輻輳の発生の閾値となる取得スループット）に安全係数０．８を乗じた値であり、ネットワークの輻輳を回避するための指標となる値である。
【０１５５】
例えば、通信装置Ｎは、取得スループットが上限値に達していない場合であって、かつ、許可長を使い切っていない場合、同時に取得する被取得側の通信装置Ｎの数を増やしてもネットワークは輻輳しないとして、最大取得数を増加させる。
【０１５６】
また、例えば、通信装置Ｎは、取得スループットが上限値に達していない場合であって、かつ、許可長を使い切った場合、被取得側の通信装置Ｎから１度に取得するデータ量を増やしてもネットワークは輻輳しないとして、許可長を増加させる。
【０１５７】
また、例えば、通信装置Ｎは、取得スループットが上限値に達した場合であって、かつ、許可長を使い切っていない場合、同時に取得する被取得側の通信装置Ｎの数を減らして、ネットワークの輻輳を抑制する。
【０１５８】
また、例えば、通信装置Ｎは、取得スループットが上限値に達した場合であって、かつ、許可長を使い切った場合、被取得側の通信装置Ｎから１度に取得するデータ量を減らして、ネットワークの輻輳を抑制する。
【０１５９】
このように、通信装置Ｎは、ネットワークの使用状況に応じて、取得条件１２００を動的に変更していく。また、取得条件１２００は、被取得側の通信装置Ｎごとに、取得長項目を有してもよい。そして、取得側の通信装置Ｎは、取得条件１２００の取得長項目を参照して、被取得側の通信装置Ｎごとに異なるデータ量でメッセージＭを取得するようにしてもよい。
【０１６０】
また、取得側の通信装置Ｎは、被取得側の通信装置Ｎから受信した要求トークンに含まれる情報に基づいて、取得条件１２００のレコードを更新してもよい。例えば、取得側の通信装置Ｎは、通信の開始時には、複数の被取得側の通信装置Ｎのそれぞれについて、許可長を同一に設定した取得条件１２００のレコードを構成しておく。
【０１６１】
そして、例えば、取得側の通信装置Ｎは、要求トークンの受信回数が多く、それぞれの要求トークンに含まれるバッファリング量が多い被取得側の通信装置Ｎについては、対応する取得条件１２００の許可長項目のデータ量を増加させる。また、例えば、取得側の通信装置Ｎは、要求トークンの受信回数が少なく、それぞれの要求トークンに含まれるバッファリング量が少ない被取得側の通信装置Ｎについては、対応する取得条件１２００の許可長項目のデータ量を減少させる。
【０１６２】
以上説明したように、取得側になる通信装置Ｎは、複数の被取得側の通信装置Ｎから受信した要求トークンに含まれる各被取得側の通信装置Ｎでのバッファリング量に基づいて、よりバッファＢが逼迫している被取得側の通信装置ＮからメッセージＭを取得する。
【０１６３】
これにより、各被取得側の通信装置ＮでのバッファＢがあふれないようにするとともに、ネットワークを流れるメッセージＭのデータ量を管理して、メッセージＭの衝突を回避し、輻輳を抑制できる。そして、輻輳を抑制できるため、輻輳に起因する通信時間の増加を回避することができ、ネットワーク全体の通信フェーズを短縮することができる。
【０１６４】
また、要求トークンに、被取得側の通信装置Ｎでの複数のバッファＢのバッファリング量を含める。これにより、被取得側の通信装置Ｎで最も逼迫しているバッファＢのメッセージＭを優先して、取得側の通信装置Ｎに取得させるようにして、バッファＢがあふれないようにすることができる。また、取得側の通信装置Ｎは、被取得側の通信装置Ｎでの複数のバッファＢのバッファリング量に基づいて、メッセージＭを取得するか否かを決定するため、１対１の通信装置Ｎ間の効率化ではなく、ネットワーク全体での効率化を図ることができる。
【０１６５】
また、通信装置Ｎは、一度に取得する被取得側の通信装置Ｎの数を閾値以下にして、ネットワークを流れるメッセージＭのデータ量を管理して、メッセージＭの衝突を回避し、輻輳を抑制できる。
【０１６６】
また、要求トークンに、被取得側の通信装置ＮでのメッセージＭの取得期限に関する情報を含める。これにより、取得側の通信装置Ｎは、取得期限が迫っている被取得側の通信装置Ｎから優先してメッセージＭを取得していくため、メッセージＭを取得期限までに取得することができる。
【０１６７】
また、取得側の通信装置Ｎは、被取得側の通信装置Ｎから取得するメッセージＭのデータ量の上限を定めて、メッセージＭを取得する。これにより、ネットワークを流れるメッセージＭのデータ量を管理して、メッセージＭの衝突を回避し、輻輳を抑制できる。
【０１６８】
被取得側の通信装置Ｎでは、バッファＢのバッファリング量に基づいて、要求トークンを送信するか否かを判定する。これにより、バッファＢがあふれる前に、要求トークンを送信して、メッセージＭを取得側の通信装置Ｎに取得させることができる。
【０１６９】
また、被取得側の通信装置Ｎでは、メッセージＭの取得期限に基づいて、要求トークンを送信するか否かを判定する。これにより、取得期限より前に、要求トークンを送信して、メッセージＭを取得期限までに取得側の通信装置Ｎに取得させることができる。
【０１７０】
ここで、クラスタなどの分散並列計算機を使った処理の分野には、処理過程での演算結果に依存して通信相手が決定され、予め通信相手がどの通信装置になるかを予測することが困難な種類の処理がある。例えば、ＭａｐＲｅｄｕｃｅのｓｈｕｆｆｌｅ、Ｋｅｙ−Ｖａｌｕｅ  Ｓｔｏｒａｇｅシステム、または分散Ｃｏｍｐｌｅｘ  Ｅｖｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇなどでの処理である。
【０１７１】
このような予め通信相手が予測困難な処理に対しては、アルゴリズムと、通信装置の物理的配置および時間的配置と、を工夫しておくことにより、メッセージＭ通信を予めスケジューリングして、衝突を回避し輻輳を抑制することができないという問題がある。しかしながら、本実施の形態にかかる通信装置、通信方法、および通信プログラムは、このような予め通信相手が予測困難な処理に対しても適用可能であり、メッセージＭの衝突を回避し輻輳を抑制することができる。
【０１７２】
また、メッセージＭが衝突した場合、輻輳を抑制する技術には、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）のフロー制御やＥｔｈｅｒｎｅｔ（登録商標）のパケット衝突回避技術がある。しかし、ＴＣＰ／ＩＰのフロー制御やＥｔｈｅｒｎｅｔ（登録商標）のパケット衝突回避技術では、メッセージＭの衝突があってから輻輳を抑制する効果があらわれるまでに、ネットワーク上においてパケットロスが発生するという問題がある。また、Ｅｔｈｅｒｎｅｔ（登録商標）スイッチでの制御切替のためにオーバヘッドが生じるという問題がある。また、受信データ量の過多により、受信側の通信装置で、キャッシュミスヒットやメモリ不足が生じるという問題がある。しかしながら、本実施の形態にかかる通信装置、通信方法、および通信プログラムは、ＴＣＰ／ＩＰのフロー制御やＥｔｈｅｒｎｅｔ（登録商標）のパケット衝突回避技術のようにパケットロスやキャッシュミスヒットやメモリ不足を生じることなく、メッセージＭの衝突を回避し輻輳を抑制することができる。
【０１７３】
なお、本実施の形態で説明した通信方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１７４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１７５】
（付記１）複数の取得先と通信する通信装置であって、
前記複数の取得先のうちいずれかの取得先での前記通信装置を取得元にする被取得データのデータ量を特定する情報を、前記いずれかの取得先から受信する受信手段と、
前記受信手段によって受信された情報に基づいて、前記いずれかの取得先を取得対象にするか否かを判定する判定手段と、
前記判定手段によって取得対象にすると判定された前記いずれかの取得先から、前記通信装置を取得元にする被取得データを取得する取得手段と、
を備えることを特徴とする通信装置。
【０１７６】
（付記２）前記受信手段は、
前記いずれかの取得先とは異なる他の取得先での前記通信装置を取得元にする被取得データのデータ量を特定する情報を、前記他の取得先から受信し、
前記判定手段は、
前記いずれかの取得先での前記通信装置を取得元にする被取得データのデータ量を特定する情報と、前記他の取得先での前記通信装置を取得元にする被取得データのデータ量を特定する情報と、に基づいて、前記いずれかの取得先を取得対象にするか否かを判定することを特徴とする付記１に記載の通信装置。
【０１７７】
（付記３）前記受信手段は、
前記いずれかの取得先での前記通信装置とは異なる他の通信装置を取得元にする被取得データのデータ量を特定する情報を、前記いずれかの取得先から受信し、
前記判定手段は、
前記いずれかの取得先での前記通信装置を取得元にする被取得データのデータ量を特定する情報と、前記いずれかの取得先での前記他の通信装置を取得元にする被取得データのデータ量を特定する情報と、に基づいて、前記いずれかの取得先を取得対象にするか否かを判定することを特徴とする付記１に記載の通信装置。
【０１７８】
（付記４）前記受信手段は、
前記いずれかの取得先での前記通信装置を取得元にする被取得データの取得期限に関する情報を、前記いずれかの取得先から受信し、
前記判定手段は、
前記いずれかの取得先での前記通信装置を取得元にする被取得データの取得期限に関する情報に基づいて、前記いずれかの取得先を取得対象にするか否かを判定することを特徴とする付記１に記載の通信装置。
【０１７９】
（付記５）前記受信手段は、
前記いずれかの取得先とは異なる他の取得先での前記通信装置を取得元にする被取得データの取得期限に関する情報を、前記他の取得先から受信し、
前記判定手段は、
前記いずれかの取得先での前記通信装置を取得元にする被取得データの取得期限に関する情報と、前記他の取得先での前記通信装置を取得元にする被取得データの取得期限に関する情報と、に基づいて、前記いずれかの取得先を取得対象にするか否かを判定することを特徴とする付記４に記載の通信装置。
【０１８０】
（付記６）前記受信手段によって受信された情報に基づいて、前記判定手段によって取得対象にすると判定された前記いずれかの取得先から取得するデータ量を決定する決定手段を備え、
前記取得手段は、
前記判定手段によって取得対象にすると判定された前記いずれかの取得先から、前記決定手段によって決定されたデータ量で、前記通信装置を取得元にする被取得データを取得することを特徴とする付記１〜５のいずれか一つに記載の通信装置。
【０１８１】
（付記７）前記判定手段は、
取得中の取得対象の数が閾値以上である場合、前記いずれかの取得先を取得対象にしないと判定することを特徴とする付記１〜６のいずれか一つに記載の通信装置。
【０１８２】
（付記８）取得元に取得させる被取得データのデータ量が閾値以上であることを検出する検出手段と、
前記検出手段によって前記被取得データのデータ量が閾値以上であることが検出された場合、前記被取得データのデータ量を特定する情報を、前記取得元に通知する通知手段と、
を備えることを特徴とする通信装置。
【０１８３】
（付記９）前記検出手段は、
前記被取得データを生成したときからの経過時間が規定時間以上であることを検出し、
前記通知手段は、
前記検出手段によって前記経過時間が規定時間以上であることが検出された場合、前記被取得データのデータ量を特定する情報を、前記取得元に通知することを特徴とする付記８に記載の通信装置。
【０１８４】
（付記１０）前記通知手段は、
前記被取得データのデータ量を特定する情報とともに、前記被取得データの取得期限に関する情報を、前記取得元に通知することを特徴とする付記８または９に記載の通信装置。
【０１８５】
（付記１１）前記検出手段は、前記取得元とは異なる他の取得元に取得させる被取得データのデータ量を検出し、
前記通知手段は、
前記被取得データのデータ量を特定する情報とともに、前記他の取得元に取得させる被取得データのデータ量を特定する情報を、前記取得元に通知することを特徴とする付記８〜１０のいずれか一つに記載の通信装置。
【０１８６】
（付記１２）複数の取得先と通信する通信装置が、
前記複数の取得先のうちいずれかの取得先での前記通信装置を取得元にする被取得データのデータ量を特定する情報を、前記いずれかの取得先から受信し、
受信された情報に基づいて、前記いずれかの取得先を取得対象にするか否かを判定し、
取得対象にすると判定された前記いずれかの取得先から、前記通信装置を取得元にする被取得データを取得する、
処理を実行することを特徴とする通信方法。
【０１８７】
（付記１３）コンピュータが、
取得元に取得させる被取得データのデータ量が閾値以上であることを検出し、
前記被取得データのデータ量が閾値以上であることが検出された場合、前記被取得データのデータ量を特定する情報を、前記取得元に通知する、
処理を実行することを特徴とする通信方法。
【０１８８】
（付記１４）複数の取得先と通信する通信装置に、
前記複数の取得先のうちいずれかの取得先での前記通信装置を取得元にする被取得データのデータ量を特定する情報を、前記いずれかの取得先から受信し、
受信された情報に基づいて、前記いずれかの取得先を取得対象にするか否かを判定し、
取得対象にすると判定された前記いずれかの取得先から、前記通信装置を取得元にする被取得データを取得する、
処理を実行させることを特徴とする通信プログラム。
【０１８９】
（付記１５）コンピュータに、
取得元に取得させる被取得データのデータ量が閾値以上であることを検出し、
前記被取得データのデータ量が閾値以上であることが検出された場合、前記被取得データのデータ量を特定する情報を、前記取得元に通知する、
処理を実行させることを特徴とする通信プログラム。
【符号の説明】
【０１９０】
Ｎ  通信装置
Ｂ  バッファ
Ｍ  メッセージ
１４０１  受信部
１４０２  判定部
１４０３  取得部
１４０４  決定部
１５０１  検出部
１５０２  通知部
【図１】
0005772380.tif 000002
【図２】
0005772380.tif 000003
【図３】
0005772380.tif 000004
【図４】
0005772380.tif 000005
【図５】
0005772380.tif 000006
【図６】
0005772380.tif 000007
【図７】
0005772380.tif 000008
【図８】
0005772380.tif 000009
【図９】
0005772380.tif 000010
【図１０】
0005772380.tif 000011
【図１１】
0005772380.tif 000012
【図１２】
0005772380.tif 000013
【図１３】
0005772380.tif 000014
【図１４】
0005772380.tif 000015
【図１５】
0005772380.tif 000016
【図１６】
0005772380.tif 000017
【図１７】
0005772380.tif 000018
【図１８】
0005772380.tif 000019
【図１９】
0005772380.tif 000020
【図２０】
0005772380.tif 000021
【図２１】
0005772380.tif 000022
【図２２】
0005772380.tif 000023
【図２３】
0005772380.tif 000024
【図２４】
0005772380.tif 000025
【図２５】
0005772380.tif 000026