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