(57)【要約】【課題】  自律的に構築され、かつ、フロー間の公平性を改善可能な無線ネットワークシステムを提供する。【解決手段】  １つのフローＦｌｏｗ０を有する無線装置は、１回のチャネルアクセスに応じて、待機期間Ｔ１の経過後にフローＦｌｏｗ０を送信する。また、２つのフローＦｌｏｗ１，２を有する無線装置は、１回のチャネルアクセスに応じて、待機期間Ｔ１の経過後にフローＦｌｏｗ１，２を連続して送信する。これにより、フロー数が増加しても、各フローに対してチャネルアクセスの機会が確保される。そして、１回のチャネルアクセスに応じて送信されるフロー数は、”４”以下に設定される。【選択図】        図９
2006074088.tif 000002
【特許請求の範囲】
【請求項１】
自律的に構築され、無線装置間で無線通信を行なう無線ネットワークシステムであって、
各々が、エンド・ツー・エンド間のパケットの流れであるフロー毎にパケットを送受信する複数の無線装置を備え、
前記複数の無線装置は、
１回のチャネルアクセスに応じて、ｎ（ｎは正の整数）個のフローに含まれるパケットを送信する第１の無線装置と、
前記１回のチャネルアクセスに応じて、ｍ（ｍは正の整数）個のフローに含まれるパケットを送信する第２の無線装置とを含む、無線ネットワークシステム。
【請求項２】
前記第１の無線装置は、
ｐ（ｐは正の整数）個のフローに対応して設けられるｐ個のバッファと、
複数のパケットを前記フローに応じて分類してｓ（ｓは、１≦ｓ≦ｐを満たす整数）個のバッファに格納する第１の格納手段と、
前記１回のチャネルアクセスに応じて、前記ｐ個のバッファをリング状に順次検索して前記パケットが格納されたｓ個のバッファをカウントし、そのカウントしたｓ個のバッファに含まれるパケットに基づいて前記ｎ個のフローに含まれるパケットを決定して送信する第１の送信手段とを含み、
前記第２の無線装置は、
ｑ（ｑは正の整数）個のフローに対応して設けられるｑ個のバッファと、
複数のパケットを前記フローに応じて分類してｔ（ｔは、１≦ｔ≦ｑを満たす整数）個のバッファに格納する第２の格納手段と、
前記１回のチャネルアクセスに応じて、前記ｑ個のバッファをリング状に順次検索して前記パケットが格納されたｔ個のバッファをカウントし、そのカウントしたｔ個のバッファに含まれるパケットに基づいて前記ｍ個のフローに含まれるパケットを決定して送信する第２の送信手段とを含む、請求項１に記載の無線ネットワークシステム。
【請求項３】
前記第１の送信手段は、前記カウントしたｓ個を最大フロー数であるＭ（Ｍは正の整数）個と比較し、前記ｓ個が前記Ｍ個以下であるとき前記ｓ個のフローに含まれるパケットを前記ｎ個のフローに含まれるパケットとして前記フロー毎に前記ｓ個のバッファから順次読み出して送信し、前記ｓ個が前記Ｍ個よりも大きいとき前記Ｍ個のフローに含まれるパケットを前記ｎ個のフローに含まれるパケットとして前記フロー毎に前記Ｍ個のバッファから順次読み出して送信し、
前記第２の送信手段は、前記カウントしたｔ個を前記Ｍ個と比較し、前記ｔ個が前記Ｍ個以下であるとき前記ｔ個のフローに含まれるパケットを前記ｍ個のフローに含まれるパケットとして前記フロー毎に前記ｔ個のバッファから順次読み出して送信し、前記ｔ個が前記Ｍ個よりも大きいとき前記Ｍ個のフローに含まれるパケットを前記ｍ個のフローに含まれるパケットとして前記フロー毎に前記Ｍ個のバッファから順次読み出して送信する、請求項２に記載の無線ネットワークシステム。
【請求項４】
前記第１の無線装置は、
ｐ（ｐは正の整数）個のフローに対応して設けられるｐ個のバッファと、
複数のパケットを前記フローに応じて分類してｓ（ｓは、１≦ｓ≦ｐを満たす整数）個のバッファに格納する第１の格納手段と、
前記１回のチャネルアクセスに応じて、前記ｐ個のバッファをリング状に順次検索して前記パケットが格納されたｓ個のバッファをカウントし、そのカウントしたｓ個のバッファに含まれるパケットに基づいて前記ｎ個のフローに含まれるパケットを決定して送信する第１の送信手段とを含み、
前記第２の無線装置は、
単一バッファと、
ｑ（ｑは正の整数）個のフローに含まれる複数のパケットを前記ｑ個のフローの順序に従って前記単一バッファに格納する第２の格納手段と、
前記１回のチャネルアクセスに応じて、前記ｑ個のフローの先頭から重複するフローの１つ前のフローまでのｒ（ｒは正の整数）個のフローに含まれるパケットを検出し、その検出したｒ個のフローに含まれるパケットに基づいて前記ｍ個のフローに含まれるパケットを決定して送信する第２の送信手段とを含む、請求項１に記載の無線ネットワークシステム。
【請求項５】
前記第１の送信手段は、前記カウントしたｓ個を最大フロー数であるＭ（Ｍは正の整数）個と比較し、前記ｓ個が前記Ｍ個以下であるとき前記ｓ個のフローに含まれるパケットを前記ｎ個のフローに含まれるパケットとして前記フロー毎に前記ｓ個のバッファから順次読み出して送信し、前記ｓ個が前記Ｍ個よりも大きいとき前記Ｍ個のフローに含まれるパケットを前記ｎ個のフローに含まれるパケットとして前記フロー毎に前記Ｍ個のバッファから順次読み出して送信し、
前記第２の送信手段は、前記検出したｒ個を前記Ｍ個と比較し、前記ｒ個が前記Ｍ個以下であるとき前記ｒ個のフローに含まれるパケットを前記ｍ個のフローに含まれるパケットとして前記フロー毎に前記単一バッファから順次読み出して送信し、前記ｒ個が前記Ｍ個よりも大きいとき前記Ｍ個のフローに含まれるパケットを前記ｍ個のフローに含まれるパケットとして前記フロー毎に前記単一バッファから順次読み出して送信する、請求項４に記載の無線ネットワークシステム。
【請求項６】
前記第１の無線装置は、
第１の単一バッファと、
ｐ（ｐは正の整数）個のフローに含まれる複数のパケットを前記ｐ個のフローの順序に従って前記第１の単一バッファに格納する第１の格納手段と、
前記１回のチャネルアクセスに応じて、前記ｐ個のフローの先頭から重複するフローの１つ前のフローまでのｉ（ｉは正の整数）個のフローに含まれるパケットを検出し、その検出したｉ個のフローに含まれるパケットに基づいて前記ｎ個のフローに含まれるパケットを決定して送信する第１の送信手段とを含み、
前記第２の無線装置は、
第２の単一バッファと、
ｑ（ｑは正の整数）個のフローに含まれる複数のパケットを前記ｑ個のフローの順序に従って前記第２の単一バッファに格納する第２の格納手段と、
前記１回のチャネルアクセスに応じて、前記ｑ個のフローの先頭から重複するフローの１つ前のフローまでのｊ（ｊは正の整数）個のフローに含まれるパケットを検出し、その検出したｊ個のフローに含まれるパケットに基づいて前記ｍ個のフローに含まれるパケットを決定して送信する第２の送信手段とを含む、請求項１に記載の無線ネットワークシステム。
【請求項７】
前記第１の送信手段は、前記検出したｉ個を最大フロー数であるＭ（Ｍは正の整数）個と比較し、前記ｉ個が前記Ｍ個以下であるとき前記ｉ個のフローに含まれるパケットを前記ｎ個のフローに含まれるパケットとして前記フロー毎に前記第１の単一バッファから順次読み出して送信し、前記ｉ個が前記Ｍ個よりも大きいとき前記Ｍ個のフローに含まれるパケットを前記ｎ個のフローに含まれるパケットとして前記フロー毎に前記第１の単一バッファから順次読み出して送信し、
前記第２の送信手段は、前記検出したｊ個を前記Ｍ個と比較し、前記ｊ個が前記Ｍ個以下であるとき前記ｊ個のフローに含まれるパケットを前記ｍ個のフローに含まれるパケットとして前記フロー毎に前記第２の単一バッファから順次読み出して送信し、前記ｊ個が前記Ｍ個よりも大きいとき前記Ｍ個のフローに含まれるパケットを前記ｍ個のフローに含まれるパケットとして前記フロー毎に前記第２の単一バッファから順次読み出して送信する、請求項６に記載の無線ネットワークシステム。
【請求項８】
自律的に構築される無線ネットワークシステムに用いられ、エンド・ツー・エンド間のパケットの流れであるフローを単位として前記パケットを送信する無線装置であって、
単一バッファと、
ｐ（ｐは正の整数）個のフローに含まれる複数のパケットを前記ｐ個のフローの順序に従って前記単一バッファに格納する格納手段と、
１回のチャネルアクセスに応じて、前記ｐ個のフローの先頭から重複するフローの１つ前のフローまでのｒ（ｒは正の整数）個のフローに含まれるパケットを検出し、その検出したｒ個のフローに含まれるパケットを送信する送信手段とを備える無線装置。
【請求項９】
自律的に構築される無線ネットワークシステムに用いられ、エンド・ツー・エンド間のパケットの流れであるフローを単位として前記パケットを送信する無線装置であって、
ｐ（ｐは正の整数）個のフローに対応して設けられるｐ個のバッファと、
複数のパケットを前記フローに応じて分類してｓ（ｓは、１≦ｓ≦ｐを満たす整数）個のバッファに格納する格納手段と、
１回のチャネルアクセスに応じて、前記ｐ個のバッファをリング状に順次検索して前記パケットが格納されたｓ個のバッファをカウントし、そのカウントしたｓ個のバッファに含まれるパケットに基づいて、相互に異なる少なくとも１つのフローに含まれるパケットを送信する送信手段とを備える無線装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の無線装置を備える無線ネットワークシステムおよびそれに用いられる無線装置に関し、特に、複数の無線装置によって、自律的、かつ、即時的に構築されるアドホックネットワークシステムおよびそれに用いられる無線装置に関するものである。
【背景技術】
【０００２】
アドホックネットワークは、複数の無線装置が相互に通信を行なうことによって自律的、かつ、即時的に構築されるネットワークである。アドホックネットワークでは、通信する２つの無線装置が互いの通信エリアに存在しない場合、２つの無線装置の中間に位置する無線装置がルータとして機能し、データパケットを中継するので、広範囲のマルチホップネットワークを形成することができる。
【０００３】
無線アドホックネットワークを幅広く実現するために、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）制御の要求が高まっている。ＱｏＳは、サービスの品質を意味し、ＱｏＳ制御を行なうには、公平性、安定性および通信のパフォーマンス等の様々な要素に着目する必要がある。その中でも、サービスが提供されるフロー間の公平性が重要である。
【０００４】
有線ネットワークにおいて、フロー間の公平性が劣る主な原因は、異なるトラフィックが混在することである。例えば、ネットワーク上にＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）トラフィックとＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）トラフィックとが混在する場合、ボトルネックで輻輳が発生すると、ＴＣＰは、輻輳制御を行ない、転送レートを減少させるが、ＵＤＰは、転送レートを変化させない。
【０００５】
このように、非対称に対応する結果、ＴＣＰトラフィックが停止することが発生し得る。
【０００６】
有線ネットワークで生じる公平性の問題を改善する方法として、バッファマネージメント（非特許文献１）およびスケジューリング（非特許文献２）等のリンク層に着目した方式が提案されている。
【非特許文献１】Takashi Miyamura, Takashi Kurimoto, "A New Buffer Management Mechanism for Achieving Fair Bandwidth Allocation in High-Speed Network", IEICE Trans. Commun., Jan.2000.
【非特許文献２】E.L. Hahne and R.G. Gallager, "Round Robin Scheduling for Fair Control in Data Communication Networks", Proc.IEEEICC, pp103-107, June.1986.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
無線アドホックネットワークにおいては、複数の移動端末が無線チャネルを共有するため、お互いの通信範囲に位置する無線端末がパケットを同時に送信すると、その送信されたパケットが衝突し、無線通信が失敗する。このような事態を回避するため、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）プロトコルは、各無線端末に均等にチャネル割当を行なうＤＣＦ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｏｒｄｉｎａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ）チャネルアクセス方式を採用している。
【０００８】
そうすると、複数のフローを持つ端末と、一本のフローしか持たない端末とが、同一通信範囲に存在する場合、各無線端末に均等にチャネル割当を行なったのでは、フローの公平性が劣る。
【０００９】
このように、無線アドホックネットワークにおいては、ＭＡＣ層に起因してフロー間の公平性が劣るという問題がある。
【００１０】
そして、非特許文献１，２に開示された従来の公平性を改善する方法は、リンク層に起因する公平性の問題を解決する方法であるため、これを無線アドホックネットワークにおけるフローの公平性の問題を解決する方法として十分に適用することはできない。
【００１１】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、自律的に構築され、かつ、フロー間の公平性を改善可能な無線ネットワークシステムを提供することである。
【００１２】
この発明の別の目的は、自律的に構築され、かつ、フロー間の公平性を改善可能な無線ネットワークシステムに用いられる無線装置を提供することである。
【課題を解決するための手段】
【００１３】
この発明によれば、無線ネットワークシステムは、自律的に構築され、無線装置間で無線通信を行なう無線ネットワークシステムであって、複数の無線装置を備える。複数の無線装置は、各々が、エンド・ツー・エンド間のパケットの流れであるフロー毎にパケットを送受信する。そして、複数の無線装置は、第１および第２の無線装置を含む。第１の無線装置は、１回のチャネルアクセスに応じて、ｎ（ｎは正の整数）個のフローに含まれるパケットを送信する。第２の無線装置は、１回のチャネルアクセスに応じて、ｍ（ｍは正の整数）個のフローに含まれるパケットを送信する。
【００１４】
好ましくは、第１の無線装置は、ｐ個のバッファと、第１の格納手段と、第１の送信手段とを含む。ｐ個のバッファは、ｐ（ｐは正の整数）個のフローに対応して設けられる。第１の格納手段は、複数のパケットをフローに応じて分類してｓ（ｓは、１≦ｓ≦ｐを満たす整数）個のバッファに格納する。第１の送信手段は、１回のチャネルアクセスに応じて、ｐ個のバッファをリング状に順次検索してパケットが格納されたｓ個のバッファをカウントし、そのカウントしたｓ個のバッファに含まれるパケットに基づいてｎ個のフローに含まれるパケットを決定して送信する。第２の無線装置は、ｑ個のバッファと、第２の格納手段と、第２の送信手段とを含む。ｑ個のバッファは、ｑ（ｑは正の整数）個のフローに対応して設けられる。第２の格納手段は、複数のパケットをフローに応じて分類してｔ（ｔは、１≦ｔ≦ｑを満たす整数）個のバッファに格納する。第２の送信手段は、１回のチャネルアクセスに応じて、ｑ個のバッファをリング状に順次検索してパケットが格納されたｔ個のバッファをカウントし、そのカウントしたｔ個のバッファに含まれるパケットに基づいてｍ個のフローに含まれるパケットを決定して送信する。
【００１５】
好ましくは、第１の送信手段は、カウントしたｓ個を最大フロー数であるＭ（Ｍは正の整数）個と比較し、ｓ個がＭ個以下であるときｓ個のフローに含まれるパケットをｎ個のフローに含まれるパケットとしてフロー毎にｓ個のバッファから順次読み出して送信し、ｓ個がＭ個よりも大きいときＭ個のフローに含まれるパケットをｎ個のフローに含まれるパケットとしてフロー毎にＭ個のバッファから順次読み出して送信する。第２の送信手段は、カウントしたｔ個をＭ個と比較し、ｔ個がＭ個以下であるときｔ個のフローに含まれるパケットをｍ個のフローに含まれるパケットとしてフロー毎にｔ個のバッファから順次読み出して送信し、ｔ個がＭ個よりも大きいときＭ個のフローに含まれるパケットをｍ個のフローに含まれるパケットとしてフロー毎にＭ個のバッファから順次読み出して送信する。
【００１６】
好ましくは、第１の無線装置は、ｐ個のバッファと、第１の格納手段と、第１の送信手段とを含む。ｐ個のバッファは、ｐ（ｐは正の整数）個のフローに対応して設けられる。第１の格納手段は、複数のパケットをフローに応じて分類してｓ（ｓは、１≦ｓ≦ｐを満たす整数）個のバッファに格納する。第１の送信手段は、１回のチャネルアクセスに応じて、ｐ個のバッファをリング状に順次検索してパケットが格納されたｓ個のバッファをカウントし、そのカウントしたｓ個のバッファに含まれるパケットに基づいてｎ個のフローに含まれるパケットを決定して送信する。
【００１７】
第２の無線装置は、単一バッファと、第２の格納手段と、第２の送信手段とを含む。第２の格納手段は、ｑ（ｑは正の整数）個のフローに含まれる複数のパケットをｑ個のフローの順序に従って単一バッファに格納する。第２の送信手段は、１回のチャネルアクセスに応じて、ｑ個のフローの先頭から重複するフローの１つ前のフローまでのｒ（ｒは正の整数）個のフローに含まれるパケットを検出し、その検出したｒ個のフローに含まれるパケットに基づいてｍ個のフローに含まれるパケットを決定して送信する。
【００１８】
好ましくは、第１の送信手段は、カウントしたｓ個を最大フロー数であるＭ（Ｍは正の整数）個と比較し、ｓ個がＭ個以下であるときｓ個のフローに含まれるパケットをｎ個のフローに含まれるパケットとしてフロー毎にｓ個のバッファから順次読み出して送信し、ｓ個がＭ個よりも大きいときＭ個のフローに含まれるパケットをｎ個のフローに含まれるパケットとしてフロー毎にＭ個のバッファから順次読み出して送信する。第２の送信手段は、検出したｒ個をＭ個と比較し、ｒ個がＭ個以下であるときｒ個のフローに含まれるパケットをｍ個のフローに含まれるパケットとしてフロー毎に単一バッファから順次読み出して送信し、ｒ個がＭ個よりも大きいときＭ個のフローに含まれるパケットをｍ個のフローに含まれるパケットとしてフロー毎に単一バッファから順次読み出して送信する。
【００１９】
好ましくは、第１の無線装置は、第１の単一バッファと、第１の格納手段と、第１の送信手段とを含む。第１の格納手段は、ｐ（ｐは正の整数）個のフローに含まれる複数のパケットをｐ個のフローの順序に従って第１の単一バッファに格納する。第１の送信手段は、１回のチャネルアクセスに応じて、ｐ個のフローの先頭から重複するフローの１つ前のフローまでのｉ（ｉは正の整数）個のフローに含まれるパケットを検出し、その検出したｉ個のフローに含まれるパケットに基づいてｎ個のフローに含まれるパケットを決定して送信する。
【００２０】
第２の無線装置は、第２の単一バッファと、第２の格納手段と、第２の送信手段とを含む。第２の格納手段は、ｑ（ｑは正の整数）個のフローに含まれる複数のパケットをｑ個のフローの順序に従って第２の単一バッファに格納する。第２の送信手段は、１回のチャネルアクセスに応じて、ｑ個のフローの先頭から重複するフローの１つ前のフローまでのｊ（ｊは正の整数）個のフローに含まれるパケットを検出し、その検出したｊ個のフローに含まれるパケットに基づいてｍ個のフローに含まれるパケットを決定して送信する。
【００２１】
好ましくは、第１の送信手段は、検出したｉ個を最大フロー数であるＭ（Ｍは正の整数）個と比較し、ｉ個がＭ個以下であるときｉ個のフローに含まれるパケットをｎ個のフローに含まれるパケットとしてフロー毎に第１の単一バッファから順次読み出して送信し、ｉ個がＭ個よりも大きいときＭ個のフローに含まれるパケットをｎ個のフローに含まれるパケットとしてフロー毎に第１の単一バッファから順次読み出して送信する。第２の送信手段は、検出したｊ個をＭ個と比較し、ｊ個がＭ個以下であるときｊ個のフローに含まれるパケットをｍ個のフローに含まれるパケットとしてフロー毎に第２の単一バッファから順次読み出して送信し、ｊ個がＭ個よりも大きいときＭ個のフローに含まれるパケットをｍ個のフローに含まれるパケットとしてフロー毎に第２の単一バッファから順次読み出して送信する。
【００２２】
また、この発明によれば、無線装置は、自律的に構築される無線ネットワークシステムに用いられ、エンド・ツー・エンド間のパケットの流れであるフローを単位として前記パケットを送信する無線装置であって、単一バッファと、格納手段と、送信手段とを備える。格納手段は、ｐ（ｐは正の整数）個のフローに含まれる複数のパケットをｐ個のフローの順序に従って単一バッファに格納する。送信手段は、１回のチャネルアクセスに応じて、ｐ個のフローの先頭から重複するフローの１つ前のフローまでのｒ（ｒは正の整数）個のフローに含まれるパケットを検出し、その検出したｒ個のフローに含まれるパケットを送信する。
【００２３】
更に、この発明によれば、無線装置は、自律的に構築される無線ネットワークシステムに用いられ、エンド・ツー・エンド間のパケットの流れであるフローを単位として前記パケットを送信する無線装置であって、ｐ（ｐは正の整数）個のバッファと、格納手段と、送信手段とを備える。ｐ個のバッファは、ｐ個のフローに対応して設けられる。格納手段は、複数のパケットをフローに応じて分類してｓ（ｓは、１≦ｓ≦ｐを満たす整数）個のバッファに格納する。送信手段は、１回のチャネルアクセスに応じて、ｐ個のバッファをリング状に順次検索してパケットが格納されたｓ個のバッファをカウントし、そのカウントしたｓ個のバッファに含まれるパケットに基づいて、相互に異なる少なくとも１つのフローに含まれるパケットを送信する。
【発明の効果】
【００２４】
この発明によれば、無線装置は、１回のチャネルアクセスに応じて少なくとも１個のフローに含まれるパケットを送信する。即ち、１回のチャネルアクセスがなされたときに、１つのフローに含まれるパケットが存在すれば、その１つのフローに含まれるパケットを送信し、１回のチャネルアクセスがなされたときに、複数のフローに含まれるパケットが存在すれば、その複数のフローに含まれるパケットを送信する。つまり、フロー数に応じてチャネルが割り当てられ、フロー数が多くなっても、各フローに対するチャネルアクセスの割合が同じになる。
【００２５】
したがって、この発明によれば、フロー間の公平性を改善できる。
【発明を実施するための最良の形態】
【００２６】
本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
【００２７】
図１は、この発明の実施の形態による無線ネットワークシステムの概略図である。無線ネットワークシステム１０は、無線装置１〜９を備える。無線装置１〜９は、無線通信空間に配置され、自律的にネットワークを構成している。そして、無線装置１から無線装置３へデータを送信する場合、無線装置２、無線装置９および無線装置６は、無線装置１からのデータを中継して無線装置３へ届ける。
【００２８】
無線ネットワークシステム１０においては、各無線装置１〜９は、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）制御を行ない、各種のサービスを他の無線装置へ提供する。各無線装置１〜９は、例えば、データを他の無線装置へ送信することによって所定のサービスを他の無線装置へ提供する。
【００２９】
この場合、各無線装置１〜９は、パケットを送信することによってデータを他の無線装置へ提供するので、異なる送信先へデータを提供するためのパケットは、異なるフローを構成する。即ち、無線装置４へデータを提供するためのパケットは、フローＦｌｏｗ１を構成し、無線装置３へデータを提供するためのパケットは、フローＦｌｏｗ２を構成し、無線装置７へデータを提供するためのパケットは、フローＦｌｏｗ３を構成する。
【００３０】
この場合、無線装置３，４，７へのポート番号の組は、同じであってもよく、異なっていてもよい。各フローＦｌｏｗ１，Ｆｌｏｗ２，Ｆｌｏｗ３は、後述するように、ポート番号の組とＩＰアドレスの組とからなるソケット情報によって分類されるので、送信先の無線装置が異なっていれば、ＩＰアドレスが異なり、ソケット情報が異なるからである。
【００３１】
また、３つのフローのパケットを無線装置３へ送信する場合、即ち、それらの３つのフローのＩＰアドレスが同じであっても、ポート番号が相互に異なるときには、３つのフローは、異なるフローＦｌｏｗ１，Ｆｌｏｗ２，Ｆｌｏｗ３を構成する。
【００３２】
従って、この発明においては、フローとは、エンド・ツー・エンド間のパケットの流れを意味する。そして、エンド・ツー・エンド間とは、ＩＰアドレスとポート番号とによって特定される送信元および送信先間を意味する。
【００３３】
以下においては、図１に示す無線ネットワークシステム１０において、各無線装置１〜９がフロー間の公平性を改善して各フローに含まれるパケットを送信する方法について説明する。
【００３４】
［実施の形態１］
図２は、図１に示す無線装置１の実施の形態１における構成を示す概略ブロック図である。無線装置１は、アンテナ１１と、入力部１２と、表示部１３と、電子メールアプリケーション１４と、通信制御部１５とを含む。
【００３５】
アンテナ１１は、無線通信空間を介して他の無線装置からデータを受信し、その受信したデータを通信制御部１５へ出力するとともに、通信制御部１５からのデータを無線通信空間を介して他の無線装置へ送信する。
【００３６】
入力部１２は、無線装置１の操作者が入力したメッセージおよびデータの宛先を受付け、その受付けたメッセージおよび宛先を電子メールアプリケーション１４へ出力する。表示部１３は、電子メールアプリケーション１４からの制御に従ってメッセージを表示する。
【００３７】
電子メールアプリケーション１４は、入力部１２からのメッセージおよび宛先に基づいてデータを生成して通信制御部１５へ出力する。
【００３８】
通信制御部１５は、ＡＲＰＡ（Ａｄｖａｎｃｅｄ  Ｒｅｓｅａｒｃｈ  Ｐｒｏｊｅｃｔｓ  Ａｇｅｎｃｙ）インターネット階層構造に従って、通信制御を行なう複数のモジュールからなる。即ち、通信制御部１５は、無線インターフェースモジュール１６と、ＭＡＣモジュール１７と、ＬＬＣ（Ｌｏｇｉｃａｌ  Ｌｉｎｋ  Ｃｏｎｔｒｏｌ）モジュール１８と、バッファ１９と、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）モジュール２０と、ルーティングテーブル２１と、ＴＣＰモジュール２２と、ＵＤＰモジュール２３と、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）モジュール２４と、ルーティングデーモン２５とからなる。
【００３９】
無線インターフェースモジュール１６は、物理層に属し、所定の規定に従って送信信号または受信信号の変復調および周波数変換等を行なう。
【００４０】
ＭＡＣモジュール１７は、ＭＡＣ層に属し、フロー数取得要求をＬＬＣモジュール１８へ送信するとともに、後述する方法によって１回のチャネルアクセスに応じて複数のフローに含まれるパケットを送信する。また、ＭＡＣモジュール１７は、ＭＡＣプロトコルを実行してデータ（パケット）の再送制御等を行なう。そして、ＭＡＣモジュール１７は、データ（パケット）の再送回数が所定値を超えるとリンクが切断されたことを検知し、リンクが切断されたことをルーティングデーモン２５に通知する。
【００４１】
ＬＬＣモジュール１８は、データリンク層に属し、ＲＲ（Ｒｏｕｎｄ  Ｒｏｂｉｎ）スケジューラを用いてＩＰモジュール２０からのパケットを後述する方法によって各フローに分類してバッファ１９に格納する。また、ＬＬＣモジュール１８は、ＭＡＣモジュール１７からのフロー数取得要求に応じて、後述する方法によって１回のチャネルアクセス時に送信するフロー数を決定し、その決定したフロー数をＭＡＣモジュール１７へ送信する。そして、ＬＬＣモジュール１８は、決定したフロー数のフローに含まれるパケットをＲＲスケジューラを用いてバッファ１９から順次読み出してＭＡＣモジュール１７へ送信する。
【００４２】
バッファ１９は、ＬＬＣモジュール１８によってフロー毎に分類された複数のパケットをフロー毎に記憶する。
【００４３】
ＩＰモジュール２０は、インターネット層に属し、ＩＰパケットを生成する。ＩＰパケットは、ＩＰヘッダと、上位のプロトコルのパケットを格納するためのＩＰデータ部とからなる。また、ＩＰモジュール２０は、ＴＣＰモジュール２２からデータを受けると、その受けたデータをＩＰデータ部に格納してＩＰパケットを生成する。そして、ＩＰモジュール２０は、テーブル駆動型のルーティングプロトコルであるＤＳＤＶプロトコルに従ってルーティングテーブル２１を検索し、生成したＩＰパケットを送信するための経路が正常であるか否かを判定する。ＩＰモジュール２０は、データを送信するための経路が正常であるとき、生成したＩＰパケットをＬＬＣモジュール１８へ送信する。
【００４４】
ルーティングテーブル２１は、インターネット層に属し、後述するように、各送信先アドレスに対応付けて経路情報を格納する。
【００４５】
ＴＣＰモジュール２２は、トランスポート層に属し、ＴＣＰパケットを生成する。ＴＣＰパケットは、ＴＣＰヘッダと、上位のプロトコルのデータを格納するためのＴＣＰデータ部とからなる。そして、ＴＣＰモジュール２２は、生成したＴＣＰパケットをＩＰモジュール２０へ送信する。
【００４６】
ＵＤＰモジュール２３は、トランスポート層に属し、ルーティングデーモン２５によって作成されたＵｐｄａｔｅパケットをブロードキャストし、他の無線装置からブロードキャストされたＵｐｄａｔｅパケットを受信してルーティングデーモン２５へ出力する。
【００４７】
ＳＭＴＰモジュール２４は、プロセス／アプリケーション層に属し、電子メールアプリケーション１４から受け取ったデータに基づいて、全二重通信チャネルの確保およびメッセージの交換等を行なう。
【００４８】
ルーティングデーモン２５は、プロセス／アプリケーション層に属し、他の通信制御モジュールの実行状態を監視するとともに、他の通信制御モジュールからのリクエストを処理する。また、ルーティングデーモン２５は、ＤＳＤＶプロトコルに従って他の無線装置と経路情報を定期的に交換し合い、取得した経路情報に基づいて最適な経路を算出してインターネット層にルーティングテーブル２１を動的に作成する。
【００４９】
なお、図１に示す無線装置２〜９の各々も、図２に示す無線装置１の構成と同じ構成からなる。
【００５０】
図３は、ＩＰヘッダの構成図である。ＩＰヘッダは、バージョン、ヘッダ長、サービスタイプ、パケット長、識別番号、フラグ、フラグメントオフセット、生存時間、プロトコル、ヘッダチェックサム、送信元ＩＰアドレス、送信先ＩＰアドレス、およびオプションからなる。
【００５１】
図４は、ＴＣＰヘッダの構成図である。ＴＣＰヘッダは、送信元ポート番号、送信先ポート番号、シーケンス番号、確認応答（ＡＣＫ）番号、データオフセット、予約、フラグ、ウィンドウサイズ、ヘッダチェックサムおよびアージェントポインタからなる。
【００５２】
送信元ポート番号は、送信元の無線装置で複数のアプリケーションが動作しているときに、ＴＣＰパケットを出力したアプリケーションを特定する番号である。また、送信先ポート番号は、送信先の無線装置で複数のアプリケーションが動作しているときに、ＴＣＰパケットを届けるアプリケーションを特定する番号である。
【００５３】
ＴＣＰ通信は、エンド・ツー・エンドのコネクション型通信プロトコルである。ＴＣＰ通信のコネクション接続を要求する無線装置（以下、「ＴＣＰ通信接続要求装置」という。）のＴＣＰモジュール２２は、コネクションの確立時に、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮ（Ｓｙｎｃｈｒｏｎｉｚｅ  Ｆｌａｇ）を設定したコネクションの接続要求を示す第１パケットをＴＣＰ通信のコネクション接続を受理する端末（以下、「ＴＣＰ通信接続受理装置」という。）のＴＣＰモジュール２２へ送信する。これを受けて、ＴＣＰ通信接続受理装置のＴＣＰモジュール２２は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔにＳＹＮおよびＡＣＫ（確認応答）を設定したコネクションの接続要求受理および接続完了を示す第２パケットをＴＣＰ通信接続要求装置のＴＣＰモジュール２２へ送信する。更に、これを受けて、ＴＣＰ通信接続要求装置のＴＣＰモジュール２２は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＡＣＫ（確認応答）に設定したコネクションの接続完了を示す第３パケットをＴＣＰ通信接続受理装置のＴＣＰモジュール２２へ送信する。
【００５４】
コネクションの切断要求は、ＴＣＰ通信要求装置およびＴＣＰ通信受理装置のいずれの側からでも行なうことができる。ＴＣＰ通信のコネクション切断を要求する無線装置（以下、「ＴＣＰ通信切断要求装置」という。）のＴＣＰモジュール２２は、コネクションの切断時に、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＦＩＮ（Ｆｉｎｉｓｈ  Ｆｌａｇ）に設定したコネクションの切断要求を示す第１パケットをＴＣＰ通信のコネクション切断を受理する無線装置（以下、「ＴＣＰ通信切断受理装置」という。）へ送信する。これを受けて、ＴＣＰ通信切断受理装置のＴＣＰモジュール２２は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＡＣＫ(確認応答)に設定したコネクションの切断要求受理を示す第２パケットと、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＦＩＮに設定したコネクションの切断完了を示す第３パケットをＴＣＰ通信切断要求装置のＴＣＰモジュール２２へ送信する。更に、これを受けて、ＴＣＰ通信切断要求装置のＴＣＰモジュール２２は、ＴＣＰヘッダ内のＣｏｄｅ  ＢｉｔをＡＣＫ(確認応答)に設定したコネクションの切断完了を示す第４パケットをＴＣＰ通信切断受理装置のＴＣＰモジュール２２へ送信する。
【００５５】
図５は、図２に示すルーティングテーブル２１の例を示す図である。ルーティングテーブル２１は、送信先アドレスと、隣接する無線装置のアドレス（ＮｅｘｔＨｏｐアドレス）と、メトリック（Ｍｅｔｒｉｃ）と、シーケンス番号（ＳｅｑＮｕｍ）とからなる。そして、送信先アドレス、ＮｅｘｔＨｏｐアドレス、Ｍｅｔｒｉｃ、およびＳｅｑＮｕｍは、相互に対応付けられている。
【００５６】
送信先アドレスは、送信先の無線装置のＩＰアドレスを表す。ＮｅｘｔＨｏｐアドレスは、次にホップする無線装置のＩＰアドレスを表す。Ｍｅｔｒｉｃは、送信元の無線装置と送信先の無線装置との間の経路状態を示す経路指標を表す。そして、Ｍｅｔｒｉｃは、送信元の無線装置と送信先の無線装置との間の経路が正常であるとき、送信元の無線装置から送信先の無線装置までのホップ数が格納され、送信元の無線装置と送信先の無線装置との間の経路が異常であるとき、無限大（∞）が格納される。ＳｅｑＮｕｍは、経路情報が生成された順番を表す。
【００５７】
図５に示すルーティングテーブル２１の例では、第１の経路は、送信元の無線装置を無線装置１とし、送信先の無線装置を無線装置３とする経路であり、無線装置１が送信したパケットを最初に中継する端末が無線装置２であり、無線装置１が送信したパケットは、Ｍｅｔｒｉｃが４であるので、３つの無線装置によって中継されて無線装置３に届くことを示している。
【００５８】
また、第２の経路は、送信元の無線装置を無線装置１とし、送信先の無線装置を無線装置７とする経路であり、無線装置１が送信したパケットを最初に中継する無線装置が無線装置５であり、無線装置１が送信したパケットは、Ｍｅｔｒｉｃが２であるので、１つの無線装置によって中継されて無線装置７に届くことを示している。
【００５９】
更に、第３の経路は、送信元の無線装置を無線装置１とし、送信先の無線装置を無線装置４とする経路であり、無線装置１が送信したパケットを最初に中継する無線装置が無線装置２であり、無線装置１が送信したパケットは、Ｍｅｔｒｉｃが２であるので、１つの無線装置によって中継されて無線装置４に届くことを示している。
【００６０】
図６は、図２に示すバッファ１９の構成図である。バッファ１９は、バッファ１９１〜１９８からなる。バッファ１９１〜１９８は、８個のフローに対応して設けられる。バッファ１９１〜１９８の各々は、ＬＬＣモジュール１８によって分類されたパケットを格納する。
【００６１】
上述したように、各無線装置１〜９は、複数のエンドユーザーにデータを提供するので、その複数のエンドユーザーに対応した複数のフローに含まれるパケットを送信する。そして、ＬＬＣモジュール１８は、ＩＰモジュール２０からのパケットをソケット情報に基づいて各フローに分類してバッファ１９に格納するので、バッファ１９は、フロー数に対応した数のバッファにのみ、パケットが格納された状態になる。
【００６２】
図６に示す場合、バッファ１９は、８個のバッファ１９１〜１９８から構成されるので、バッファ１９を備える無線装置は、最大８個の異なるフローをエンドユーザーへデータを提供することが可能である。
【００６３】
バッファ１９を備える無線装置が３個のフローを提供する場合、バッファ１９は、３個のバッファから構成される。このように、バッファ１９は、フロー数に応じた数のバッファから構成される。
【００６４】
例えば、図１に示す無線装置１が３個のエンドユーザにデータを提供する場合を想定する。上述したように、パケットは、ソケット情報に基づいて各フローに分類されるので、ソケット情報が異なれば、フローが異なる。そして、ソケット情報は、送信元／送信先のＩＰアドレスの組と、ポート番号の組とからなる。従って、フローが異なる場合としては、ＩＰアドレスの組が異なる場合と、ポート番号の組が異なる場合とがある。
【００６５】
まず、ＩＰアドレスの組が異なる場合について説明する。例えば、無線装置１は、ポート番号ＰＮＯ０からデータ１〜３を無線装置３，４，７の同じポート番号ＰＮＯ１へ送信する。この場合、データ１〜３の送信先ＩＰアドレスは異なる。
【００６６】
無線装置１が無線装置４のポート番号ＰＮＯ１へデータ１を送信する場合、無線装置１のＴＣＰモジュール２２は、図４に示すＴＣＰヘッダの送信元ポート番号に無線装置１で動作しているデータ１用のアプリケーションを特定する番号ＰＮＯ０を格納し、送信先ポート番号に無線装置４で動作しているデータ１用のアプリケーションを特定する番号ＰＮＯ１を格納してＴＣＰヘッダを作成する。そして、ＴＣＰモジュール２２は、上位のプロトコルから受けたデータ１をデータ部に格納し、データ１が格納されたデータ部にＴＣＰヘッダを付与してＴＣＰパケットを作成する。その後、ＴＣＰモジュール２２は、作成したＴＣＰパケットをＩＰモジュール２０へ送信する。
【００６７】
ＩＰモジュール２０は、ＴＣＰモジュール２２からのＴＣＰパケットをＩＰデータ部に格納する。そして、ＩＰモジュール２０は、図３に示すＩＰヘッダの送信元ＩＰアドレスに無線装置１のＩＰアドレスＡＤＤ１を格納し、送信先ＩＰアドレスに無線装置４のＩＰアドレスＡＤＤ４を格納してＩＰヘッダを作成する。その後、ＩＰモジュール２０は、ＴＣＰパケットが格納されたＩＰデータ部にＩＰヘッダを付与してＩＰパケットを作成し、その作成したＩＰパケットをＬＬＣモジュール１８へ送信する。
【００６８】
また、無線装置１が無線装置３のポート番号ＰＮＯ１へデータ２を送信する場合、無線装置１のＴＣＰモジュール２２は、図４に示すＴＣＰヘッダの送信元ポート番号に無線装置１で動作しているデータ２用のアプリケーションを特定する番号ＰＮＯ０を格納し、送信先ポート番号に無線装置３で動作しているデータ２用のアプリケーションを特定する番号ＰＮＯ１を格納してＴＣＰヘッダを作成する。そして、ＴＣＰモジュール２２は、上位のプロトコルから受けたデータ２をデータ部に格納し、データ２が格納されたデータ部にＴＣＰヘッダを付与してＴＣＰパケットを作成する。その後、ＴＣＰモジュール２２は、作成したＴＣＰパケットをＩＰモジュール２０へ送信する。
【００６９】
ＩＰモジュール２０は、ＴＣＰモジュール２２からのＴＣＰパケットをＩＰデータ部に格納する。そして、ＩＰモジュール２０は、図３に示すＩＰヘッダの送信元ＩＰアドレスに無線装置１のＩＰアドレスＡＤＤ１を格納し、送信先ＩＰアドレスに無線装置３のＩＰアドレスＡＤＤ３を格納してＩＰヘッダを作成する。その後、ＩＰモジュール２０は、ＴＣＰパケットが格納されたＩＰデータ部にＩＰヘッダを付与してＩＰパケットを作成し、その作成したＩＰパケットをＬＬＣモジュール１８へ送信する。
【００７０】
更に、無線装置１が無線装置７のポート番号ＰＮＯ１へデータ３を送信する場合、無線装置１のＴＣＰモジュール２２は、図４に示すＴＣＰヘッダの送信元ポート番号に無線装置１で動作しているデータ３用のアプリケーションを特定する番号ＰＮＯ０を格納し、送信先ポート番号に無線装置７で動作しているデータ３用のアプリケーションを特定する番号ＰＮＯ１を格納してＴＣＰヘッダを作成する。そして、ＴＣＰモジュール２２は、上位のプロトコルから受けたデータ３をデータ部に格納し、データ３が格納されたデータ部にＴＣＰヘッダを付与してＴＣＰパケットを作成する。その後、ＴＣＰモジュール２２は、作成したＴＣＰパケットをＩＰモジュール２０へ送信する。
【００７１】
ＩＰモジュール２０は、ＴＣＰモジュール２２からのＴＣＰパケットをＩＰデータ部に格納する。そして、ＩＰモジュール２０は、図３に示すＩＰヘッダの送信元ＩＰアドレスに無線装置１のＩＰアドレスＡＤＤ１を格納し、送信先ＩＰアドレスに無線装置７のＩＰアドレスＡＤＤ７を格納してＩＰヘッダを作成する。その後、ＩＰモジュール２０は、ＴＣＰパケットが格納されたＩＰデータ部にＩＰヘッダを付与してＩＰパケットを作成し、その作成したＩＰパケットをＬＬＣモジュール１８へ送信する。
【００７２】
ＬＬＣモジュール１８は、ＩＰモジュール２０からＩＰパケットを受けると、ＩＰパケットのＩＰヘッダから送信元ＩＰアドレスおよび送信先ＩＰアドレスを読み出し、ＩＰパケットのＴＣＰヘッダから送信元ポート番号および送信先ポート番号を読み出す。そして、ＬＬＣモジュール１８は、ＩＰパケットから読み出した［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］に基づいて、ＩＰモジュール２０から受けたパケットのフローを特定する。
【００７３】
［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］がそれぞれ［無線装置１のＩＰアドレスＡＤＤ１、無線装置１のデータ１用アプリケーションのポート番号ＰＮＯ０］および［無線装置４のＩＰアドレスＡＤＤ４、無線装置４のデータ１用アプリケーションのポート番号ＰＮＯ１］である場合、ＬＬＣモジュール１８は、パケットのフローをデータ１を無線装置４のポート番号ＰＮＯ１へ送信するフローと特定し、パケットをバッファ１９１（バッファ１９１はフローＦｌｏｗ１を格納するバッファであるとする）へ格納する。
【００７４】
また、［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］がそれぞれ［無線装置１のＩＰアドレスＡＤＤ１、無線装置１のデータ２用アプリケーションのポート番号ＰＮＯ０］および［無線装置３のＩＰアドレスＡＤＤ３、無線装置３のデータ２用アプリケーションのポート番号ＰＮＯ１］である場合、ＬＬＣモジュール１８は、パケットのフローをデータ２を無線装置３のポート番号ＰＮＯ１へ送信するフローと特定し、パケットをバッファ１９２（バッファ１９２はフローＦｌｏｗ２を格納するバッファであるとする）へ格納する。
【００７５】
更に、［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］がそれぞれ［無線装置１のＩＰアドレスＡＤＤ１、無線装置１のデータ３用アプリケーションのポート番号ＰＮＯ０］および［無線装置７のＩＰアドレスＡＤＤ７、無線装置７のデータ３用アプリケーションのポート番号ＰＮＯ１］である場合、ＬＬＣモジュール１８は、パケットのフローをデータ３を無線装置７のポート番号ＰＮＯ１へ送信するフローと特定し、パケットをバッファ１９３（バッファ１９３はフローＦｌｏｗ３を格納するバッファであるとする）へ格納する。
【００７６】
次に、ポート番号の組が異なる場合について説明する。例えば、無線装置１は、ポート番号ＰＮＯ０から、データ１を無線装置４のポート番号ＰＮＯ１へ送信し、データ２を無線装置４のポート番号ＰＮＯ２へ送信し、データ３を無線装置４のポート番号ＰＮＯ３へ送信する。この場合、データ１〜３の送信先ＩＰアドレスは同じである。
【００７７】
無線装置１が無線装置４のポート番号ＰＮＯ１へデータ１を送信する場合、無線装置１のＴＣＰモジュール２２は、図４に示すＴＣＰヘッダの送信元ポート番号に無線装置１で動作しているデータ１用のアプリケーションを特定する番号ＰＮＯ０を格納し、送信先ポート番号に無線装置４で動作しているデータ１用のアプリケーションを特定する番号ＰＮＯ１を格納してＴＣＰヘッダを作成する。そして、ＴＣＰモジュール２２は、上位のプロトコルから受けたデータ１をデータ部に格納し、データ１が格納されたデータ部にＴＣＰヘッダを付与してＴＣＰパケットを作成する。その後、ＴＣＰモジュール２２は、作成したＴＣＰパケットをＩＰモジュール２０へ送信する。
【００７８】
ＩＰモジュール２０は、ＴＣＰモジュール２２からのＴＣＰパケットをＩＰデータ部に格納する。そして、ＩＰモジュール２０は、図３に示すＩＰヘッダの送信元ＩＰアドレスに無線装置１のＩＰアドレスＡＤＤ１を格納し、送信先ＩＰアドレスに無線装置４のＩＰアドレスＡＤＤ４を格納してＩＰヘッダを作成する。その後、ＩＰモジュール２０は、ＴＣＰパケットが格納されたＩＰデータ部にＩＰヘッダを付与してＩＰパケットを作成し、その作成したＩＰパケットをＬＬＣモジュール１８へ送信する。
【００７９】
また、無線装置１が無線装置４のポート番号ＰＮＯ２へデータ２を送信する場合、無線装置１のＴＣＰモジュール２２は、図４に示すＴＣＰヘッダの送信元ポート番号に無線装置１で動作しているデータ２用のアプリケーションを特定する番号ＰＮＯ０を格納し、送信先ポート番号に無線装置４で動作しているデータ２用のアプリケーションを特定する番号ＰＮＯ２を格納してＴＣＰヘッダを作成する。そして、ＴＣＰモジュール２２は、上位のプロトコルから受けたデータ２をデータ部に格納し、データ２が格納されたデータ部にＴＣＰヘッダを付与してＴＣＰパケットを作成する。その後、ＴＣＰモジュール２２は、作成したＴＣＰパケットをＩＰモジュール２０へ送信する。
【００８０】
ＩＰモジュール２０は、ＴＣＰモジュール２２からのＴＣＰパケットをＩＰデータ部に格納する。そして、ＩＰモジュール２０は、図３に示すＩＰヘッダの送信元ＩＰアドレスに無線装置１のＩＰアドレスＡＤＤ１を格納し、送信先ＩＰアドレスに無線装置４のＩＰアドレスＡＤＤ４を格納してＩＰヘッダを作成する。その後、ＩＰモジュール２０は、ＴＣＰパケットが格納されたＩＰデータ部にＩＰヘッダを付与してＩＰパケットを作成し、その作成したＩＰパケットをＬＬＣモジュール１８へ送信する。
【００８１】
更に、無線装置１が無線装置４のポート番号ＰＮＯ３へデータ３を送信する場合、無線装置１のＴＣＰモジュール２２は、図４に示すＴＣＰヘッダの送信元ポート番号に無線装置１で動作しているデータ３用のアプリケーションを特定する番号ＰＮＯ０を格納し、送信先ポート番号に無線装置４で動作しているデータ３用のアプリケーションを特定する番号ＰＮＯ３を格納してＴＣＰヘッダを作成する。そして、ＴＣＰモジュール２２は、上位のプロトコルから受けたデータ３をデータ部に格納し、データ３が格納されたデータ部にＴＣＰヘッダを付与してＴＣＰパケットを作成する。その後、ＴＣＰモジュール２２は、作成したＴＣＰパケットをＩＰモジュール２０へ送信する。
【００８２】
ＩＰモジュール２０は、ＴＣＰモジュール２２からのＴＣＰパケットをＩＰデータ部に格納する。そして、ＩＰモジュール２０は、図３に示すＩＰヘッダの送信元ＩＰアドレスに無線装置１のＩＰアドレスＡＤＤ１を格納し、送信先ＩＰアドレスに無線装置４のＩＰアドレスＡＤＤ４を格納してＩＰヘッダを作成する。その後、ＩＰモジュール２０は、ＴＣＰパケットが格納されたＩＰデータ部にＩＰヘッダを付与してＩＰパケットを作成し、その作成したＩＰパケットをＬＬＣモジュール１８へ送信する。
【００８３】
そして、ＬＬＣモジュール１８は、ＩＰパケットから読み出した［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］に基づいて、ＩＰモジュール２０から受けたパケットのフローを特定する。
【００８４】
［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］がそれぞれ［無線装置１のＩＰアドレスＡＤＤ１、無線装置１のデータ１用アプリケーションのポート番号ＰＮＯ０］および［無線装置４のＩＰアドレスＡＤＤ４、無線装置４のデータ１用アプリケーションのポート番号ＰＮＯ１］である場合、ＬＬＣモジュール１８は、パケットのフローをデータ１を無線装置４のポート番号ＰＮＯ１へ送信するフローと特定し、パケットをバッファ１９１（バッファ１９１はフローＦｌｏｗ１を格納するバッファであるとする）へ格納する。
【００８５】
また、［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］がそれぞれ［無線装置１のＩＰアドレスＡＤＤ１、無線装置１のデータ２用アプリケーションのポート番号ＰＮＯ０］および［無線装置４のＩＰアドレスＡＤＤ４、無線装置４のデータ２用アプリケーションのポート番号ＰＮＯ２］である場合、ＬＬＣモジュール１８は、パケットのフローをデータ２を無線装置４のポート番号ＰＮＯ２へ送信するフローと特定し、パケットをバッファ１９２（バッファ１９２はフローＦｌｏｗ２を格納するバッファであるとする）へ格納する。
【００８６】
更に、［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］がそれぞれ［無線装置１のＩＰアドレスＡＤＤ１、無線装置１のデータ３用アプリケーションのポート番号ＰＮＯ０］および［無線装置４のＩＰアドレスＡＤＤ４、無線装置４のデータ３用アプリケーションのポート番号ＰＮＯ３］である場合、ＬＬＣモジュール１８は、パケットのフローをデータ３を無線装置４のポート番号ＰＮＯ３へ送信するフローと特定し、パケットをバッファ１９３（バッファ１９３はフローＦｌｏｗ３を格納するバッファであるとする）へ格納する。なお、無線装置１のポート番号は、データ１〜３に対して同じポート番号ＰＮＯ０であるとして説明したが、データ１〜３に対して異なるようにしてもよい。
【００８７】
このように、ＬＬＣモジュール１８は、ＩＰパケットに含まれる［送信元ＩＰアドレス、送信元ポート番号］および［送信先ＩＰアドレス、送信先ポート番号］（即ち、送信元のソケット情報および送信先のソケット情報）に基づいて、ＩＰモジュール２０から受けたパケットを各フローに分類し、その分類したフローに従ってパケットをバッファ１９へ格納する。
【００８８】
以下、（１）無線ネットワークシステム１０におけるルーティング、（２）１回のチャネルアクセス時に送信するフロー数の決定、および（３）１回のチャネルアクセスにおけるパケットの送信について説明する。
【００８９】
（１）無線ネットワークシステムにおけるルーティング
無線装置１のルーティングデーモン２５は、次の方法によって、経路探索を定期的に行なう。ルーティングデーモン２５は、自己の経路情報のＳｅｑＮｕｍをインクリメントする。これによって、この経路情報は、他の無線装置（無線装置２〜９）が持つルーティングテーブル２１内の経路情報よりも新しいことを表す。
【００９０】
ルーティングデーモン２５は、Ｕｐｄａｔｅパケットに最新のルーティングテーブル２１内の経路情報の全てを登録し、ＵｐｄａｔｅパケットをＵＤＰモジュール２３によってブロードキャストする。
【００９１】
他の無線装置、例えば、無線装置２が無線装置１から送信されたＵｐｄａｔｅパケットを受信すると、無線装置２のルーティングデーモン２５は、その受信したＵｐｄａｔｅパケット内の経路情報に基づいて、無線装置２のルーティングテーブル２１内の経路情報を更新するとともに、必要に応じて、無線装置２のルーティングテーブル２１内の経路情報の全てを登録したＵｐｄａｔｅパケットをＵＤＰモジュール２３によってブロードキャストする。
【００９２】
無線装置１のルーティングデーモン２５は、無線装置２からのＵｐｄａｔｅパケットを受信すると、その受信したＵｐｄａｔｅパケットに含まれる経路情報に基づいて、無線装置１のルーティングテーブル２１内の経路情報を更新するとともに、必要に応じて、無線装置１のルーティングテーブル２１内の経路情報の全てを登録したＵｐｄａｔｅパケットをＵＤＰモジュール２３によってブロードキャストする。
【００９３】
このように、各無線装置１〜９のルーティングデーモン２５は、ＤＳＤＶプロトコルに従って、自己のルーティングテーブル２１内の経路情報をＵｐｄａｔｅパケットに登録してブロードキャストし、経路情報を相互に送受信することによってパケットを送信する経路を定期的に探索する。
【００９４】
（２）１回のチャネルアクセス時に送信するフロー数の決定
ＬＬＣモジュール１８は、１回のチャネルアクセスに応じて送信可能なフローの最大数ＭＡＸ＿ｆを保持しており、ＭＡＣモジュール１７からフロー数取得要求を受けると、ＲＲスケジューラを用いて、最大数ＭＡＸ＿ｆを超えないように１回のチャネルアクセスに応じて送信可能なフロー数を決定する。なお、この発明においては、最大数ＭＡＸ＿ｆは、”４”に設定される。
【００９５】
図７は、実施の形態１における１回のチャネルアクセスに応じて送信可能なフロー数を決定する動作を説明するためのフローチャートである。一連の動作が開始されると、ＬＬＣモジュール１８は、ＭＡＣモジュール１７からフロー数取得要求を受ける（ステップＳ１）。そして、ＬＬＣモジュール１８は、ＭＡＣモジュール１７からのフロー数取得要求に応じて、最初のバッファ１９１にパケットが存在するか否かを判定する（ステップＳ２）。なお、ＬＬＣモジュール１８は、１回目のチャネルアクセスに応じて最大数ＭＡＸ＿ｆを１回のチャネルアクセスに応じて送信するフローと決定した場合、２回目のチャネルアクセスに応じてバッファ１９５にパケットが存在するか否かを判定する。
【００９６】
ＬＬＣモジュール１８は、ＲＲスケジューラを用いてフロー数を決定するため、バッファ１９１→バッファ１９２→バッファ１９３→バッファ１９４→バッファ１９５→バッファ１９６→バッファ１９７→バッファ１９８→バッファ１９１・・・の順序でリング状にバッファ１９１〜１９８を検索し、パケットが存在するか否かを判定する。
【００９７】
ステップＳ２において、パケットがバッファ１９１に存在しないと判定されたとき、一連の動作は、ステップＳ４へ移行する。
【００９８】
一方、ステップＳ２において、パケットがバッファ１９１に存在すると判定されたとき、ＬＬＣモジュール１８は、バッファ１９１に格納されたパケットのソケット情報を記憶し、フロー数Ｆｌｏｗ＿Ｎを１だけ加算する（ステップＳ３）。
【００９９】
そして、ステップＳ２の”ＮＯ”またはステップＳ３の後、ＬＬＣモジュール１８は、パケットの有無を判定する対象のバッファを次のバッファ１９２へ移行する（ステップＳ４）。その後、ＬＬＣモジュール１８は、バッファ１９２が評価したバッファでなく、かつ、フロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満であるか否かを判定する（ステップＳ５）。即ち、ＬＬＣモジュール１８は、バッファ１９２がパケットの存在を評価したバッファでなく、かつ、フロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満であるか否かを判定する。
【０１００】
バッファ１９２がパケットの存在を評価したバッファでなく、かつ、フロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満である場合、ステップＳ２〜ステップＳ５が繰り返し実行される。
【０１０１】
なお、ステップＳ５において、評価対象となるバッファが既に評価したバッファであるか否かは、ステップＳ３において記憶したバッファ１９１に格納されたパケットのソケット情報と同じソケット情報を有するパケットが評価対象となるバッファに格納されているか否かによって判定される。そして、バッファ１９１に格納されたパケットのソケット情報と同じソケット情報を有するパケットが評価対象となるバッファに格納されているとき、その評価対象のバッファは、評価したバッファであると判定され、バッファ１９１に格納されたパケットのソケット情報と異なるソケット情報を有するパケットが評価対象となるバッファに格納されているとき、その評価対象のバッファは、評価したバッファでないと判定される。
【０１０２】
一方、ステップＳ５において、次のバッファが評価したバッファであると判定されたとき、またはフロー数が最大数ＭＡＸ＿ｆ以上であると判定されたとき、または次のバッファが評価したバッファであり、かつ、フロー数が最大数ＭＡＸ＿ｆ以上であると判定されたとき、ＬＬＣモジュール１８は、フロー数Ｆｌｏｗ＿ＮをＭＡＣモジュール１７へ返す（ステップＳ６）。
【０１０３】
この場合、ＬＬＣモジュール１８は、ステップＳ３において加算したフロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満であるとき、その加算したフロー数Ｆｌｏｗ＿ＮをＭＡＣモジュール１７へ返し、ステップＳ３において加算したフロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆに等しいとき、最大数ＭＡＸ＿ｆをフロー数Ｆｌｏｗ＿ＮとしてＭＡＣモジュール１７へ返す。
【０１０４】
図６を用いて具体的に説明する。
【０１０５】
（ｉ）バッファ１９１，１９２にパケットが存在し、バッファ１９３〜１９８にパケットが存在しない場合
バッファ１９１，１９２にパケットが存在し、バッファ１９３〜１９８にパケットが存在しない場合、ステップＳ２〜ステップＳ５が実行されることによって、パケットの存在有無を判定する対象となるバッファは、バッファ１９１からバッファ１９８へ移行した後、バッファ１９８にパケットが存在していないので（ステップＳ２の”ＮＯ”参照）、再びバッファ１９１へ戻る（ステップＳ４参照）。そして、この場合、ステップＳ３において加算されたフロー数Ｆｌｏｗ＿Ｎは、”２”となっている。
【０１０６】
そして、バッファ１９１へ戻った後、ＬＬＣモジュール１８は、次のバッファ（バッファ１９１）が評価したバッファであるか否かを判定する（ステップＳ５参照）。この場合、次のバッファ（バッファ１９１）は、最初に評価されているので、ＬＬＣモジュール１８は、ステップＳ５において”ＮＯ”と判定する。そして、ＬＬＣモジュール１８は、フロー数Ｆｌｏｗ＿Ｎ（＝２）が最大数ＭＡＸ＿ｆ（＝４）以下であるので、フロー数Ｆｌｏｗ＿Ｎ（＝２）をＭＡＣモジュール１７へ返す（ステップＳ６参照）。
【０１０７】
（ｉｉ）バッファ１９１〜１９５にパケットが存在し、バッファ１９６〜１９８にパケットが存在しない場合
バッファ１９１〜１９５にパケットが存在し、バッファ１９６〜１９８にパケットが存在しない場合、ステップＳ２〜ステップＳ５が実行されることによって、パケットの存在有無を判定する対象となるバッファがバッファ１９１からバッファ１９５へ移行すると、この時点でステップＳ３で加算されたフロー数Ｆｌｏｗ＿Ｎは”４”になっているので、ＬＬＣモジュール１８は、ステップＳ５においてフロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満でないと判定する。
【０１０８】
従って、ＬＬＣモジュール１８は、フロー数Ｆｌｏｗ＿Ｎ（＝４）として最大数ＭＡＸ＿ｆ（＝４）をＭＡＣモジュール１７へ返す（ステップＳ６参照）。
【０１０９】
このように、ＬＬＣモジュール１８は、ＲＲスケジューラを用いて、１回のチャネルアクセスに応じて送信可能なフロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆ以下になるように決定し、その決定したフロー数Ｆｌｏｗ＿ＮをＭＡＣモジュール１７へ送信する。
【０１１０】
上述した（ｉｉ）の場合、ＬＬＣモジュール１８は、１回目のチャネルアクセスに応じて、フロー数Ｆｌｏｗ＿Ｎ＝最大数ＭＡＸ＿ｆ（＝４）をＭＡＣモジュール１７へ返し、２回目のチャネルアクセスに応じて、バッファ１９５からパケットが存在するか否かを判定し（ステップＳ２参照）、図７に示すフローチャートに従ってフロー数Ｆｌｏｗ＿Ｎを決定する。
【０１１１】
従って、最大数ＭＡＸ＿ｆをＭ（Ｍは正の整数）個とし、バッファの個数をｐ（ｐは正の整数）個としたとき、Ｍ個以上のバッファにパケットが存在する場合、第ｘ（ｘは正の整数）回目のチャネルアクセスに応じてパケットの存在有無の判定を開始するバッファは、第（（ｘ−１）×Ｍ＋１）番目のバッファである。
【０１１２】
（３）１回のチャネルアクセスにおけるパケットの送信
ＭＡＣモジュール１７は、ＬＬＣモジュール１８からフロー数Ｆｌｏｗ＿Ｎを受けると、その受けたフロー数Ｆｌｏｗ＿Ｎを保持し、フロー数Ｆｌｏｗ＿Ｎのフローに含まれるパケットを１回のチャネルアクセスに応じて送信する。
【０１１３】
図８は、１回のチャネルアクセスに応じてパケットを送信する動作を説明するためのフローチャートである。一連の動作が開始されると、チャネルを獲得し（ステップＳ１１）、ＭＡＣモジュール１７は、通信を開始する（ステップＳ１２）。即ち、ＬＬＣモジュール１８は、バッファ１９１に含まれるパケットを読み出してＭＡＣモジュール１７へ送信し、ＭＡＣモジュール１７は、ＬＬＣモジュール１８から受けたパケットを無線インターフェースモジュール１６を介して相手方へ送信する。
【０１１４】
その後、ＭＡＣモジュール１７は、通信が成功したか否かを判定し（ステップＳ１３）、通信が成功しなかったと判定したとき、さらに、リトライがオーバーしたか否かを判定する（ステップＳ１４）。そして、ＭＡＣモジュール１７は、リトライがオーバーしたと判定したとき、パケットを破棄する（ステップＳ１５）。
【０１１５】
一方、ＭＡＣモジュール１７は、リトライがオーバーしていないと判定したとき、バックオフ処理を行なう（ステップＳ１６）。より具体的には、ＭＡＣモジュール１７は、ゼロからＣＷ（Ｃｏｎｔｅｎｔｉｏｎ  Ｗｉｎｄｏｗ）の所定の範囲で乱数を発生させ、その発生させた乱数からバックオフタイムを決定し、その決定したバックオフタイムの間、待機する。
【０１１６】
この場合、ＭＡＣモジュール１７は、リトライした回数をカウントしておき、そのカウントしたリトライ回数が増えるに従って乱数を発生させる範囲を規定するＣＷの値を２倍づつ増加させる指数バックオフ処理を実行する。
【０１１７】
一方、ステップＳ１３において、通信が成功したと判定されたとき、ＭＡＣモジュール１７は、保持しているフロー数Ｆｌｏｗ＿Ｎを１だけ減算し（ステップＳ１７）、フロー数Ｆｌｏｗ＿Ｎが”０”であるか否かを判定する（ステップＳ１８）。
【０１１８】
そして、フロー数Ｆｌｏｗ＿Ｎが”０”でないと判定されると、ＬＬＣモジュール１８は、次のバッファ１９２からパケットを読み出してＭＡＣモジュール１７へ送信し、ＭＡＣモジュール１７は、ＬＬＣモジュール１８からパケットを取得する（ステップＳ１９）。
【０１１９】
その後、ステップＳ１８において、フロー数Ｆｌｏｗ＿Ｎが”０”であると判定されるまで、上述したステップＳ１２〜ステップＳ１８が繰り返し実行される。これによって、１回のチャネルアクセスに応じて、複数のフローに含まれるパケットが送信される。即ち、異なるフローに含まれるパケットが１回のチャネルアクセスに応じて送信される。
【０１２０】
なお、ＭＡＣモジュール１７は、２回目以降にステップＳ１２を実行する場合、即ち、あるフローに含まれるパケットを送信した後、異なるフローに含まれるパケットを送信する場合、あるフローに含まれるパケットを送信した後、ＤＩＦＳ（ＤＣＦ  Ｉｎｔｅｒ  Ｆｒａｍｅ  Ｓｐａｃｅ、ＤＣＦ：Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｏｒｄｉｎａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ）という待ち時間だけ待機した後に異なるフローに含まれるパケットを送信する。
【０１２１】
そして、ステップＳ１８において、フロー数Ｆｌｏｗ＿Ｎが”０”であると判定されると、ＭＡＣモジュール１７は、フロー数取得要求をＬＬＣモジュール１８へ送信する（ステップＳ２０）。そして、ＬＬＣモジュール１８において、図７に示すフローチャートに従ってフロー数を決定する動作が実行される。
【０１２２】
ステップＳ２０の後、ＭＡＣモジュール１７は、ポストバックオフ処理を実行する（ステップＳ２１）。このポストバックオフ処理は、ステップＳ１６におけるバックオフ処理と同じ方法によって実行される。
【０１２３】
そして、ステップＳ１５，Ｓ１６，Ｓ２１のいずれかの後、一連の動作は終了する。
【０１２４】
このように、１回のチャネルアクセスに応じて、図８に示すフローチャートに従って最大数ＭＡＸ＿ｆ以下の複数のフローに含まれるパケットが送信されるが、最大数ＭＡＸ＿ｆ（＝４）を超える数のバッファにパケットが存在する場合、１回目のチャネルアクセスに応じて、バッファ１９１〜１９４に含まれるパケットが送信される。そして、２回目のチャネルアクセスに応じて、バッファ１９５〜１９８に含まれるパケットが送信される。
【０１２５】
従って、最大数ＭＡＸ＿ｆ（＝Ｍ）を超える数のバッファにパケットが存在する場合、一般的には、第ｘ回目のチャネルアクセスに応じて、第（（ｘ−１）×Ｍ＋１）番目から（Ｍ×ｘ）番目までのフローに含まれるパケットがフロー毎にバッファから順次読み出されて送信される。
【０１２６】
図９は、フロー間の公平性を示すタイミングチャートである。図９においては、フロー数が”１”である場合と、フロー数が”２”である場合とが示されている。
【０１２７】
フロー数が”１”である場合、１回目のチャネルアクセスに応じて、タイミングｔ１〜タイミングｔ３までの間でフローＦｌｏｗ０に含まれるパケットが送信される。そして、タイミングｔ３〜タイミングｔ５までの待機期間Ｔ１の後、２回目のチャネルアクセスに応じて、タイミングｔ５〜タイミングｔ６までの間でフローＦｌｏｗ０に含まれるパケットが送信される。
【０１２８】
このように、フロー数が”１”である場合、１回のチャネルアクセス毎に１個のフローに含まれるパケットが送信される。
【０１２９】
フロー数が”２”である場合、１回目のチャネルアクセスに応じて、タイミングｔ２〜タイミングｔ４までの間でフローＦｌｏｗ１，Ｆｌｏｗ２に含まれるパケットが順次送信される。なお、フローＦｌｏｗ２に含まれるパケットは、フローＦｌｏｗ１に含まれるパケットを送信した後、ＤＩＦＳだけ待機した後に送信される。
【０１３０】
そして、タイミングｔ４〜タイミングｔ７までの待機期間Ｔ１の後、２回目のチャネルアクセスに応じて、タイミングｔ７〜タイミングｔ８までの間でフローＦｌｏｗ１，Ｆｌｏｗ２に含まれるパケットが順次送信される。なお、待機期間Ｔ１の始めと終わりには、バックオフ処理のための期間Ｂａｃｋｏｆｆが存在する。また、待機期間Ｔ１は、一定ではなく、随時変化する。
【０１３１】
このように、フロー数が”２”である場合、１回のチャネルアクセス毎に２個のフローに含まれるパケットが送信される。
【０１３２】
その結果、フロー数の大小に拘わらず、１回のチャネルアクセスに応じて各フローに含まれるパケットを送信するので、フロー間の公平性を改善できる。
【０１３３】
また、フロー数が”２”以上である場合、複数のフローに含まれるパケットを送信する時間を短縮できる。即ち、従来の方法では、フロー数が”２”である場合、フローＦｌｏｗ１，Ｆｌｏｗ２のパケットを送信するには、タイミングｔ１〜タイミングｔ６までの期間が必要であったが、この発明におけるように、２つのフローＦｌｏｗ１，Ｆｌｏｗ２に含まれるパケットを１回のチャネルアクセスに応じて送信する場合には、タイミングｔ２〜タイミングｔ４までの期間でよい。従って、複数のフローに含まれるパケットを１回のチャネルアクセスに応じて送信した場合、各フローに含まれるパケットの送信に必要なバックオフ時間を短縮でき、チャネルユーティリティを向上できる。そして、チャネルユーティリティを向上できる結果、無線ネットワークシステム１０のトータルスループットを向上できる。
【０１３４】
なお、図９には図示されていないが、１つのフローＦｌｏｗ０のパケットの送信を開始する前、各無線装置は、送信要求ＲＴＳ（Ｒｅｑｕｅｓｔ  Ｔｏ  Ｓｅｎｄ）を送信先へ送信し、送信先から送信許可ＣＴＳ（Ｃｌｅａｒ  Ｔｏ  Ｓｅｎｄ）を受信した後に１つのフローＦｌｏｗ０のパケットを送信先へ送信する。そして、各無線装置は、送信先から確認応答ＡＣＫを受信する。
【０１３５】
また、各無線装置は、２つのフローＦｌｏｗ１，Ｆｌｏｗ２のパケットを送信する場合も、同様に、まず、送信要求ＲＴＳを送信先へ送信し、送信許可ＣＴＳを送信先から受信した後にフローＦｌｏｗ１のパケットを送信し、送信先から確認応答ＡＣＫを受信する。そして、各無線装置は、引き続いて、フローＦｌｏｗ１のパケットの送信時の動作を繰返してフローＦｌｏｗ２のパケットを送信し、２つのフローＦｌｏｗ１，Ｆｌｏｗ２のパケットの送信を完了する。
【０１３６】
フロー間の公平性についてのシミュレーション結果について説明する。
【０１３７】
フロー間の公平性ＦａｉｒｎｅｓｓＩｎｄｅｘは、次式によって表されることが知られている（Dimirios Vardalis, "On the Efficiency and Fairness of Wired/Wireless Networks", Master Thesis, State University of New York at Stony Brook, 2001.参照)。
【０１３８】
【数１】
2006074088.tif 000003
【０１３９】
但し、ｎは、全フロー数であり、ｘｉは、フローｉのスループットであり、Ａｖｅは、無線ネットワークシステム１０の平均スループットである。
【０１４０】
式（１）によって定義される公平性ＦａｉｒｎｅｓｓＩｎｄｅｘは、”０”から”１”の間の値をとり、その値が”１”に近いほど、フロー間の公平性が優れていることを意味する。
【０１４１】
式（１）の右辺第２項の分子は、各フローのスループットと平均スループットとの差の絶対値の和を示し、分母は、無線ネットワークシステム１０が最も不公平な時、つまり、１本のフローだけが帯域を使用し、他のフローに帯域が割当てられていない状態における各フローのスループットと平均スループットとの差の絶対値を示す。
【０１４２】
表１は、シミュレーションに用いたパラメータを示す。
【０１４３】
【表１】
2006074088.tif 000004
【０１４４】
表１において、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）は、格納した順序に従ってパケットを読み出すスケジュール方式である。また、ＣＢＲ（Ｃｏｎｓｔａｎｔ  Ｂｉｔ  Ｒａｔｅ）は、固定ビットレートを意味し、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）は、ＴＣＰの特定のポート番号で実行されるプロトコルである。
【０１４５】
表２は、リンク層、即ち、ＬＬＣモジュール１８が用いるスケジュール方式を示す。
【０１４６】
【表２】
2006074088.tif 000005
【０１４７】
表２において、方式ＴＹ１は、リンク層（ＬＬＣモジュール１８）がＦＩＦＯスケジューリング方式を用い、ＭＡＣ層（ＭＡＣモジュール１７）がプロトコルとしてＩＥＥＥ８０２．１１ｂを用いる方式である。即ち、方式ＴＹ１は、ＦＩＦＯスケジューリング方式によって１つのバッファからパケットを読み出して１回のチャネルアクセス毎に１つのフローに含まれるパケットを送信する方式である。
【０１４８】
また、方式ＴＹ２は、リンク層（ＬＬＣモジュール１８）がＲＲスケジューリング方式を用い、ＭＡＣ層（ＭＡＣモジュール１７）がプロトコルとしてＩＥＥＥ８０２．１１ｂを用いる方式である。即ち、方式ＴＹ２は、ＲＲスケジューリング方式によって複数のバッファからパケットを読み出して１回のチャネルアクセス毎に１つのフローに含まれるパケットを送信する方式である。
【０１４９】
更に、方式ＴＹ３は、リンク層（ＬＬＣモジュール１８）がＲＲスケジューリング方式を用い、ＭＡＣ層（ＭＡＣモジュール１７）がプロトコルとして図８に示すフローチャートを用いる方式である。即ち、方式ＴＹ３は、ＲＲスケジューリング方式によって複数のバッファからパケットを読み出して１回のチャネルアクセス毎に複数のフローに含まれるパケットを送信する方式である。
【０１５０】
図１０は、シミュレーションの結果を示す図である。図１０において、縦軸は、公平性ＦａｉｒｎｅｓｓＩｎｄｅｘを表し、横軸は、１回のチャネルアクセスに応じて送信されるフロー数を表す。
【０１５１】
フロー数が”１”である場合、公平性ＦａｉｒｎｅｓｓＩｎｄｅｘは、全ての方式ＴＹ１〜ＴＹ３において”１”である。そして、方式ＴＹ１，ＴＹ２においては、公平性ＦａｉｒｎｅｓｓＩｎｄｅｘは、フロー数の増加に伴って低下するのに対し、この発明による方式ＴＹ３においては、公平性ＦａｉｒｎｅｓｓＩｎｄｅｘは、フロー数が増加しても低下せず、最大数ＭＡＸ＿ｆ（＝４）までの範囲において”１”である。
【０１５２】
このように、本発明がフロー間の公平性を実現するために有効であることがシミュレーションによって実証された。
【０１５３】
なお、図７および図８に示すフローチャートに従って、１回のチャネルアクセスに応じて異なるフローに含まれるパケットを送信する無線装置１〜９は、１回のチャネルアクセスに応じて、ｎ（ｎは正の整数）個のフローに含まれるパケットを送信する「第１の無線装置」、または１回のチャネルアクセスに応じて、ｍ（ｍは正の整数）個のフローに含まれるパケットを送信する「第２の無線装置」を構成する。
【０１５４】
また、ＩＰモジュール２０からのパケットをフロー毎に分類してバッファ１９１〜１９８に格納するＬＬＣモジュール１８は、複数のパケットをフローに応じて分類してｓ（ｓは、１≦ｓ≦ｐを満たす整数、ｐは正の整数）個のバッファに格納する「第１の格納手段」、または複数のパケットをフローに応じて分類してｔ（ｔは、１≦ｔ≦ｑを満たす整数、ｑは正の整数）個のバッファに格納する「第２の格納手段」を構成する。
【０１５５】
更に、図７に示すフローチャートに従って、１回のチャネルアクセス時に送信するフロー数Ｆｌｏｗ＿Ｎを決定するＬＬＣモジュール１８および図８に示すフローチャートに従ってＬＬＣモジュール１８から受けたパケットを送信するＭＡＣモジュール１７は、ｐ個バッファをリング状に順次検索してパケットが格納されたｓ個のバッファをカウントし、そのカウントしたｓ個のバッファに含まれるパケットに基づいてｎ個のフローに含まれるパケットを決定して送信する「第１の送信手段」、またはｑ個バッファをリング状に順次検索してパケットが格納されたｔ個のバッファをカウントし、そのカウントしたｔ個のバッファに含まれるパケットに基づいてｍ個のフローに含まれるパケットを決定して送信する「第２の送信手段」を構成する。
【０１５６】
更に、図７に示すフローチャートに従って、１回のチャネルアクセス時に送信するフロー数Ｆｌｏｗ＿ＮをカウントするＬＬＣモジュール１８は、１回のチャネルアクセスに応じて、ｐ個のバッファをリング状に順次検索し、既に検索したバッファが検索対象となるまでパケットが格納されたバッファを検出する毎にカウント数を増加させることにより、ｓ個のバッファをカウントする「第１のカウント手段」、または１回のチャネルアクセスに応じて、ｑ個のバッファをリング状に順次検索し、既に検索したバッファが検索対象となるまでパケットが格納されたバッファを検出する毎にカウント数を増加させることにより、ｔ個のバッファをカウントする「第２のカウント手段」を構成する。
【０１５７】
更に、フロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆと比較し、１回のチャネルアクセスに応じて送信するフロー数をフロー数Ｆｌｏｗ＿Ｎまたは最大数ＭＡＸ＿ｆに決定するＬＬＣモジュール１８は、カウントされたｓ個をＭ（＝最大数ＭＡＸ＿ｆ）個と比較し、ｓ個がＭ個以下であるときｓ個のフローを１回のチャネルアクセスに応じて送信するフローと決定し、ｓ個がＭ個よりも大きいときＭ個のフローを１回のチャネルアクセスに応じて送信するフローと決定する「第１のフロー決定手段」、またはカウントされたｔ個をＭ（＝最大数ＭＡＸ＿ｆ）個と比較し、ｔ個がＭ個以下であるときｔ個のフローを１回のチャネルアクセスに応じて送信するフローと決定し、ｔ個がＭ個よりも大きいときＭ個のフローを１回のチャネルアクセスに応じて送信するフローと決定する「第２のフロー決定手段」を構成する。
【０１５８】
更に、図８に示すフローチャートに従って、１回のチャネルアクセス時に、カウントしたフロー数Ｆｌｏｗ＿Ｎのフローに含まれるパケットを送信するＭＡＣモジュール１７およびＬＬＣモジュール１８は、ｓ個のフローに含まれるパケットをフロー毎にｓ個のバッファから順次読み出して送信する「第１のフロー送信手段」、またはｔ個のフローに含まれるパケットをフロー毎にｔ個のバッファから順次読み出して送信する「第３のフロー送信手段」を構成する。
【０１５９】
更に、図８に示すフローチャートに従って、１回のチャネルアクセス時にＭ個のフローに含まれるパケットを送信するＭＡＣモジュール１７およびＬＬＣモジュール１８は、第ｘ（ｘは正の整数）回目のチャネルアクセスに応じて（（ｘ−１）×Ｍ＋１）番目から（Ｍ×ｘ）番目までのフローに含まれるパケットをフロー毎にｓ個のバッファから順次読み出して送信する「第２のフロー送信手段」、または第ｙ（ｙは正の整数）回目のチャネルアクセスに応じて（（ｙ−１）×Ｍ＋１）番目から（Ｍ×ｙ）番目までのフローに含まれるパケットをフロー毎にｔ個のバッファから順次読み出して送信する「第４のフロー送信手段」を構成する。
【０１６０】
更に、バッファ１９１〜１９８は、「ｐ個のバッファ」または「ｑ個のバッファ」を構成する。
【０１６１】
［実施の形態２］
図１１は、図１に示す無線装置１〜９の実施の形態２における構成を示す概略ブロック図である。実施の形態２においては、無線装置１〜９の各々は、図１１に示す無線装置１Ａからなる。無線装置１Ａは、図２に示す無線装置１の通信制御部１５を通信制御部１５Ａに代えたものであり、その他は、無線装置１と同じである。
【０１６２】
通信制御部１５Ａは、通信制御部１５のＬＬＣモジュール１８およびバッファ１９をそれぞれＬＬＣモジュール１８Ａおよびバッファ１９Ａに代えたものであり、その他は、通信制御部１５と同じである。
【０１６３】
ＬＬＣモジュール１８Ａは、ＩＰモジュール２０からのパケットをＦＩＦＯスケジュール方式に従ってバッファ１９Ａに格納する。また、ＬＬＣモジュール１８Ａは、ＭＡＣモジュール１７からのフロー数取得要求に応じて、ＦＩＦＯスケジュール方式に従って、１回のチャネルアクセスに応じて送信するフロー数を決定し、その決定したフロー数をＭＡＣモジュール１７へ送信する。
【０１６４】
更に、ＬＬＣモジュール１８Ａは、ＦＩＦＯスケジュール方式に従って、バッファ１９Ａからパケットを読み出してＭＡＣモジュール１７へ送信する。
【０１６５】
バッファ１９Ａは、ＦＩＦＯスケジュール方式に従ってパケットを格納する。
【０１６６】
図１２は、図１１に示すバッファ１９Ａの構成図である。バッファ１９Ａは、ＬＬＣモジュール１８Ａから受けた複数のパケットＰＫＴ１〜ＰＫＴ７を受けた順序に従って記憶する。そして、バッファ１９Ａは、格納した順序に従ってパケットＰＫＴ１〜ＰＫＴ７を出力する。つまり、バッファ１９Ａは、ＦＩＦＯスケジュール方式に従ってパケットを入出力するメモリである。
【０１６７】
このように、無線装置１Ａは、１つのバッファ１９Ａを有する。
【０１６８】
ＭＡＣモジュール１７からフロー数取得要求が送信されたときのＬＬＣモジュール１８Ａにおけるフロー数の決定方法について説明する。ＬＬＣモジュール１８Ａは、ＩＰモジュール２０からパケットを受け、その受けたパケットをバッファ１９Ａへ格納するとき、ソケット情報からなるリストを作成する。
【０１６９】
図１３は、ＬＬＣモジュール１８Ａが作成するリストの概念図である。リストＬＳＴは、ＬＬＣモジュール１８ＡがＩＰモジュール２０からパケットを受けた順に配列された複数のソケット情報からなる。従って、リストＬＳＴは、例えば、ソケット情報１／ソケット情報２／ソケット情報４／ソケット情報１／ソケット情報２／ソケット情報４／ソケット情報２／・・・からなる。
【０１７０】
ソケット情報１〜４の各々は、｛送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号｝からなる。
【０１７１】
図１４は、バッファ１９Ａに格納されたパケットとリストＬＳＴとの関係図である。ＬＬＣモジュール１８Ａは、ＩＰモジュール２０からＩＰパケットを受けると、ＩＰパケットから送信元ＩＰアドレスおよび送信先ＩＰアドレス（図３に示すＩＰヘッダに含まれている）と、送信元ポート番号および送信先ポート番号（図４に示すＴＣＰヘッダに含まれている）とを読み出してソケット情報１を作成し、ＩＰパケットをパケットＰＫＴ１としてバッファ１９Ａへ格納するとともに、作成したソケット情報１をリストＬＳＴへ格納する。
【０１７２】
そして、ＬＬＣモジュール１８Ａは、以下同様にしてＩＰモジュール２０からＩＰパケットを受ける毎にソケット情報を作成し、ＩＰパケットをバッファ１９Ａに格納するとともに、作成したソケット情報をリストＬＳＴに格納する。その結果、バッファ１９Ａに格納されたパケットＰＫＴ１〜ＰＫＴ７の格納順序に配列されたソケット情報１／ソケット情報２／ソケット情報４／ソケット情報１／ソケット情報２／ソケット情報４／ソケット情報２からなるリストＬＳＴが作成される。
【０１７３】
図１５は、実施の形態２における１回のチャネルアクセスに応じて送信可能なフロー数を決定する動作を説明するためのフローチャートである。なお、図１５に示すフローチャートが実行されるとき、終了フラグは”Ｆａｌｓｅ”（初期値）に設定されている。また、ＬＬＣモジュール１８Ａは、バッファ１９Ａに最初に格納されたパケットＰＫＴ１を評価用パケットおよび比較用パケットとして選択している。
【０１７４】
一連の動作が開始されると、ＬＬＣモジュール１８Ａは、リストＬＳＴにパケット情報が存在するか否かを判定する（ステップＳ３１）。そして、リストＬＳＴにパケット情報が存在しないと判定されたとき、一連の動作は、ステップＳ４０へ移行する。
【０１７５】
一方、ステップＳ３１において、リストＬＳＴにパケット情報が存在すると判定されたとき、ＬＣＣモジュール１８Ａは、さらに、評価用パケットＰＫＴ１が比較用パケットＰＫＴ１と同じでないか否かを判定する（ステップＳ３２）。
【０１７６】
評価用パケットＰＫＴ１は、比較用パケットＰＫＴ１と同じであるので、ＬＬＣモジュール１８Ａは、ステップＳ３２において評価用パケットは比較用パケットと同じであると判定する。そして、ＬＬＣモジュール１８Ａは、さらに、終了フラグが”Ｆａｌｓｅ”であるか否かを判定する（ステップＳ３５）。終了フラグは、最初、”Ｆａｌｓｅ”に設定されているので、ＬＬＣモジュール１８Ａは、ステップＳ３５において終了フラグは”Ｆａｌｓｅ”であると判定し、フロー数Ｆｌｏｗ＿Ｎを”１”だけ加算し（ステップＳ３６）、フロー数Ｆｌｏｗ＿Ｎ＝１とする。
【０１７７】
その後、ＬＬＣモジュール１８Ａは、比較用パケットを先頭に移動し、評価用パケットを次へ移動する（ステップＳ３７）。即ち、ＬＬＣモジュール１８Ａは、比較用パケットをパケットＰＫＴ１へ移動し、評価用パケットをパケットＰＫＴ２へ移動する。
【０１７８】
そして、ＬＬＣモジュール１８Ａは、評価用パケットが存在し、かつ、終了フラグが”Ｆａｌｓｅ”であり、かつ、フロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満であるか否かを判定する（ステップＳ３８）。現在の場合、評価用パケットＰＫＴ２が存在し、終了フラグが”Ｆａｌｓｅ”であり、フロー数Ｆｌｏｗ＿Ｎ（＝１）が最大数ＭＡＸ＿ｆ（＝４）未満であるので、ＬＬＣモジュール１８Ａは、ステップＳ３８において”ＹＥＳ”と判定し、ステップＳ３２へ戻る。
【０１７９】
そして、ＬＬＣモジュール１８Ａは、評価用パケットＰＫＴ２が比較用パケットＰＫＴ１と同じでないか否かを判定する（ステップＳ３２）。比較用パケットＰＫＴ１は、評価用パケットＰＫＴ２と異なるので、ＬＬＣモジュール１８Ａは、評価用パケットＰＫＴ２と比較用パケットＰＫＴ１とは同じではないと判定し、さらに、ソケット情報が同じであるか否かを判定する（ステップＳ３３）。
【０１８０】
比較用パケットＰＫＴ１のソケット情報１は、評価用パケットＰＫＴ２のソケット情報２と異なるので、ＬＬＣモジュール１８Ａは、比較用パケットを次へ移動する（ステップＳ３９）。即ち、ＬＬＣモジュール１８Ａは、比較用パケットをパケットＰＫＴ２へ移動する。
【０１８１】
そして、ＬＬＣモジュール１８Ａは、評価用パケットＰＫＴ２が比較用パケットＰＫＴ２と同じであるか否かを判定する（ステップＳ３２）。評価用パケットＰＫＴ２は、比較用パケットＰＫＴ２と同じであるので、ＬＬＣモジュール１８Ａは、ステップＳ３２において”ＮＯ”と判定し、さらに、終了フラグが”Ｆａｌｓｅ”であるか否かを判定する（ステップＳ３５）。
【０１８２】
終了フラグは”Ｆａｌｓｅ”であるので、ＬＬＣモジュール１８Ａは、ステップＳ３５において”ＹＥＳ”と判定し、フロー数Ｆｌｏｗ＿Ｎを”１”だけ加算し（ステップＳ３６）、フロー数Ｆｌｏｗ＿Ｎ＝２とする。そして、ＬＬＣモジュール１８Ａは、比較用パケットを先頭のパケットＰＫＴ１へ移動し、評価用パケットを次のパケットＰＫＴ３へ移動する（ステップＳ３７）。
【０１８３】
その後、ＬＬＣモジュール１８Ａは、評価用パケットが存在し、かつ、終了フラグが”Ｆａｌｓｅ”であり、かつ、フロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満であるか否かを判定する（ステップＳ３８）。この場合、評価用パケットＰＫＴ３が存在し、終了フラグが”Ｆａｌｓｅ”であり、フロー数Ｆｌｏｗ＿Ｎ（＝２）が最大数ＭＡＸ＿ｆ（＝４）未満であるので、ＬＬＣモジュール１８Ａは、ステップＳ３８において”ＹＥＳ”と判定し、評価用パケットＰＫＴ３が比較用パケットＰＫＴ１と同じでないか否かを判定する（ステップＳ３２）。
【０１８４】
評価用パケットＰＫＴ３は、比較用パケットＰＫＴ１と異なるので、ＬＬＣモジュール１８Ａは、ステップＳ３２において”ＹＥＳ”と判定し、さらに、ソケット情報が一致するか否かを判定する（ステップＳ３３）。評価用パケットＰＫＴ３のソケット情報４は、比較用パケット１のソケット情報１と異なるので、ＬＬＣモジュール１８Ａは、ステップＳ３３において”ＮＯ”と判定し、比較用パケットを次のパケットＰＫＴ２へ移動する（ステップＳ３９）。
【０１８５】
その後、ＬＬＣモジュール１８Ａは、評価用パケットＰＫＴ３が比較用パケットＰＫＴ２と同じでないか否かを判定する（ステップＳ３２）。評価用パケットＰＫＴ３は、比較用パケットＰＫＴ２と異なるので、ＬＬＣモジュール１８Ａは、ステップＳ３２において”ＹＥＳ”と判定し、さらに、ソケット情報が一致するか否かを判定する（ステップＳ３３）。
【０１８６】
評価用パケットＰＫＴ３のソケット情報４は、比較用パケットＰＫＴ２のソケット情報２と異なるので、ＬＬＣモジュール１８Ａは、ステップＳ３３において”ＮＯ”と判定し、比較用パケットを次のパケットＰＫＴ３へ移動する（ステップＳ３９）。そして、ＬＬＣモジュール１８Ａは、評価用パケットＰＫＴ３が比較用パケットＰＫＴ３と同じでないか否かを判定する（ステップＳ３２）。評価用パケットＰＫＴ３は、比較用パケットＰＫＴ３と同じであるので、ＬＬＣモジュール１８Ａは、ステップＳ３２において”ＮＯ”と判定し、さらに、終了フラグが”Ｆａｌｓｅ”であるか否かを判定する（ステップＳ３５）。
【０１８７】
この場合、終了フラグは、”Ｆａｌｓｅ”であるので、ＬＬＣモジュール１８Ａは、ステップＳ３５において”ＹＥＳ”と判定し、フロー数Ｆｌｏｗ＿Ｎを”１”だけ加算し（ステップＳ３６）、フロー数Ｆｌｏｗ＿Ｎ＝３とする。そして、ＬＬＣモジュール１８Ａは、比較用パケットを先頭のパケットＰＫＴ１に戻し、評価用パケットを次のパケットＰＫＴ４へ移動する（ステップＳ３７）。
【０１８８】
そして、ＬＬＣモジュール１８Ａは、評価用パケットが存在し、かつ、終了フラグが”Ｆａｌｓｅ”であり、かつ、フロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆ未満であるか否かを判定する（ステップＳ３８）。この場合、評価用パケットＰＫＴ４が存在し、終了フラグが”Ｆａｌｓｅ”であり、フロー数Ｆｌｏｗ＿Ｎ（＝３）が最大数ＭＡＸ＿ｆ（＝４）未満であるので、ＬＬＣモジュール１８Ａは、ステップＳ３８において”ＹＥＳ”と判定する。
【０１８９】
その後、ＬＬＣモジュール１８Ａは、評価用パケットＰＫＴ４が比較用パケットＰＫＴ１と同じでないか否かを判定する（ステップＳ３２）。評価用パケットＰＫＴ４は、比較用パケットＰＫＴ１と異なるので、ＬＬＣモジュール１８Ａは、ステップＳ３２において”ＹＥＳ”と判定し、さらに、ソケット情報が一致するか否かを判定する（ステップＳ３３）。
【０１９０】
評価用パケットＰＫＴ４のソケット情報１は、比較用パケットＰＫＴ１のソケット情報１と同じであるので、ＬＬＣモジュール１８Ａは、ステップＳ３３において”ＹＥＳ”と判定し、終了フラグを”Ｔｒｕｅ”に設定する（ステップＳ３４）。
【０１９１】
その後、ＬＬＣモジュール１８Ａは、終了フラグが”Ｆａｌｓｅ”であるか否かを判定する（ステップＳ３５）。この場合、終了フラグは”Ｔｒｕｅ”であるので、ＬＬＣモジュール１８Ａは、ステップＳ３５において”ＮＯ”と判定し、さらに、評価用パケットが存在し、かつ、終了フラグが”Ｆａｌｓｅ”であり、かつ、フロー数が最大数ＭＡＸ＿ｆ未満であるか否かを判定する（ステップＳ３８）。
【０１９２】
この場合、終了フラグが”Ｔｒｕｅ”であるので、ＬＬＣモジュール１８Ａは、ステップＳ３８において”ＮＯ”と判定し、フロー数Ｆｌｏｗ＿Ｎ＝３をＭＡＣモジュール１７へ送信する（ステップＳ４０）。
【０１９３】
なお、一連の動作がステップＳ３１の”ＮＯ”からステップＳ４０へ移行したとき、ＬＬＣモジュール１８Ａは、フロー数Ｆｌｏｗ＿Ｎ＝０をＭＡＣモジュール１７へ送信する。
【０１９４】
また、ステップＳ３８において、フロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆに等しいと判定されたときも、一連の動作はステップＳ４０へ移行されるので、この場合、ＬＬＣモジュール１８Ａは、最大数ＭＡＸ＿ｆをフロー数Ｆｌｏｗ＿ＮとしてＭＡＣモジュール１７へ送信する。
【０１９５】
このように、ＬＬＣモジュール１８Ａは、ＦＩＦＯスケジュール方式に従って、バッファ１９Ａに格納された複数のパケットＰＫＴ１〜ＰＫＴ７のうちでソケット情報１が同じであるパケットＰＫＴ４（重複するパケット）が評価用パケットになるまでフロー数Ｆｌｏｗ＿Ｎを加算し、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを決定する。従って、ＬＬＣモジュール１８Ａは、１回のチャネルアクセスに応じて、バッファ１９Ａに格納された先頭のパケットＰＫＴ１から、重複するパケットＰＫＴ４の１つ前のパケットＰＫＴ３までのパケットＰＫＴ１〜ＰＫＴ３を１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎ（＝３）として決定する。そして、ＬＬＣモジュール１８Ａは、このようにして決定したフロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆに達したとき、最大数ＭＡＸ＿ｆを１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎとして決定する。
【０１９６】
上述した例においては、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎは”３”であると決定される。そして、ＭＡＣモジュール１７は、ＬＬＣモジュール１８Ａからフロー数Ｆｌｏｗ＿Ｎ＝３を受けると、１回のチャネルアクセスに応じて、実施の形態１における図８に示すフローチャートに従ってパケットＰＫＴ１〜ＰＫＴ３を送信する。
【０１９７】
この場合、ＬＬＣモジュール１８Ａは、バッファ１９ＡからパケットＰＫＴ１，ＰＫＴ２，ＰＫＴ３を順次読み出してＭＡＣモジュール１７へ送信するとともに、各パケットＰＫＴ１，ＰＫＴ２，ＰＫＴ３をＭＡＣモジュール１７へ送信する毎にそれぞれソケット情報１、ソケット情報２およびソケット情報４をリストＬＳＴから削除する。
【０１９８】
従って、ＬＬＣモジュール１８Ａは、次に、ＭＡＣモジュール１７からフロー数取得要求を受けると、パケットＰＫＴ４〜ＰＫＴ７と、ソケット情報１、ソケット情報２、ソケット情報４およびソケット情報２とに基づいて、図１５に示すフローチャートに従ってフロー数Ｆｌｏｗ＿Ｎを決定する。その結果、ＬＬＣモジュール１８Ａは、フロー数取得要求を受けると毎にバッファ１９Ａの先頭からパケットを検索し、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを決定する。
【０１９９】
また、パケットＰＫＴ１〜ＰＫＴ３に対応するソケット情報は、それぞれ、ソケット情報１、ソケット情報２およびソケット情報４であり、相互に異なるので、パケットＰＫＴ１〜ＰＫＴ３は、それぞれ、ソケット情報により特定される無線装置へ送信される。ソケット情報が異なれば送信先ＩＰアドレスおよび／または送信先ポート番号が異なるからである。従って、１回のチャネルアクセスに応じてパケットＰＫＴ１〜ＰＫＴ３を送信することは、１回のチャネルアクセスに応じて異なるフローに含まれるパケットを送信することに相当する。
【０２００】
ＦＩＦＯスケジュール方式に従って１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを決定する場合にも、ｘ回のチャネルアクセスに応じて決定したフロー数Ｆｌｏｗ＿Ｎが連続して最大数ＭＡＸ＿ｆに達する場合がある。
【０２０１】
図１６は、バッファに格納されたパケットとリストとの他の関係図である。ＬＬＣモジュール１８Ａは、１回目のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを図１５に示すフローチャートに従って決定する場合、ソケット情報１、ソケット情報２、ソケット情報４およびソケット情報３に対応するパケットＰＫＴ１〜ＰＫＴ４の個数を１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎ＝４と決定する。
【０２０２】
そして、ＬＬＣモジュール１８Ａは、最大数ＭＡＸ＿ｆをフロー数Ｆｌｏｗ＿ＮとしてＭＡＣモジュール１７へ送信し、パケットＰＫＴ１〜ＰＫＴ４をバッファ１９Ａから順次読み出してＭＡＣモジュール１７へ送信する。
【０２０３】
そして、ＬＬＣモジュール１８Ａは、２回目のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを図１５に示すフローチャートに従って決定する場合、ソケット情報１、ソケット情報４、ソケット情報３およびソケット情報２に対応するパケットＰＫＴ５〜ＰＫＴ８の個数を１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎ＝４と決定する。
【０２０４】
そして、ＬＬＣモジュール１８Ａは、最大数ＭＡＸ＿ｆをフロー数Ｆｌｏｗ＿ＮとしてＭＡＣモジュール１７へ送信し、パケットＰＫＴ５〜ＰＫＴ８をバッファ１９Ａから順次読み出してＭＡＣモジュール１７へ送信する。
【０２０５】
その後、ＬＬＣモジュール１８Ａは、３回目のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを図１５に示すフローチャートに従って決定する場合、ソケット情報２、ソケット情報３、ソケット情報１およびソケット情報４に対応するパケットＰＫＴ９〜ＰＫＴ１２の個数を１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎ＝４と決定する。
【０２０６】
そして、ＬＬＣモジュール１８Ａは、最大数ＭＡＸ＿ｆをフロー数Ｆｌｏｗ＿ＮとしてＭＡＣモジュール１７へ送信し、パケットＰＫＴ９〜ＰＫＴ１２をバッファ１９Ａから順次読み出してＭＡＣモジュール１７へ送信する。
【０２０７】
従って、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎが連続して最大数ＭＡＸ＿ｆに達する場合、ＬＬＣモジュール１８Ａは、第１回目のチャネルアクセスに応じて、パケットの存在有無の判定を最初のパケットＰＫＴ１から開始し、第２回目のチャネルアクセスに応じて、パケットの存在有無の判定を第５番目のパケットＰＫＴ５から開始し、第３回目のチャネルアクセスに応じて、パケットの存在有無の判定を第９番目のパケットＰＫＴ９から開始する。つまり、ＬＬＣモジュール１８Ａは、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎが連続して最大数ＭＡＸ＿ｆを超える場合、第ｘ回目のチャネルアクセスに応じてパケットの存在有無の判定を第（（ｘ−１）×Ｍ＋１）番目のパケットから開始する。
【０２０８】
そして、バッファ１９Ａにｐ個のパケットが格納されている場合、パケットの送信時においては、ＬＬＣモジュール１８Ａは、第ｘ回目のチャネルアクセスに応じて（（ｘ−１）×Ｍ＋１）番目から（Ｍ×ｘ）番目または第ｐ番目までのパケットを順次読み出してＭＡＣモジュール１７へ送信する。
【０２０９】
ＦＩＦＯスケジュール方式に従うバッファ１９Ａにおいては、１回目のチャネルアクセスに応じて、パケットＰＫＴ１〜ＰＫＴ４は、順次読み出されてＭＡＣモジュール１７へ送信されるため、２回目のチャネルアクセスに応じてフロー数Ｆｌｏｗ＿Ｎを決定するときにはパケットＰＫＴ５が先頭のパケットになっており、３回目のチャネルアクセスに応じてフロー数Ｆｌｏｗ＿Ｎを決定するときにはパケットＰＫＴ９が先頭になっているため、ＬＬＣモジュール１８Ａは、各チャネルアクセスに応じて、バッファ１９Ａの先頭からパケットの存在有無の判定を開始するが、図１６に示すパケットＰＫＴ１〜ＰＫＴ１４がバッファ１９Ａに格納されている場合、ＬＬＣモジュール１８Ａは、概念上、第ｘ回目のチャネルアクセスに応じてパケットの存在有無の判定を第（（ｘ−１）×Ｍ＋１）番目のパケットから開始し、第ｘ回目のチャネルアクセスに応じて（（ｘ−１）×Ｍ＋１）番目から（Ｍ×ｘ）番目または第ｐ番目までのパケットを順次読み出してＭＡＣモジュール１７へ送信することになる。
【０２１０】
また、ＦＩＦＯスケジュール方式に従って決定したフロー数Ｆｌｏｗ＿Ｎが最大数ＭＡＸ＿ｆに達したり、最大数ＭＡＸ＿ｆ未満になることが順次繰返されるときは、最大数ＭＡＸ＿ｆのパケットがバッファ１９Ａから順次読み出されて送信されたり、フロー数Ｆｌｏｗ＿Ｎのパケットがバッファ１９Ａから順次読み出されて送信されることが繰返し実行される。
【０２１１】
実施の形態２においても、式（１）を用いたシミュレーションによってフロー間の公平性ＦａｉｒｎｅｓｓＩｎｄｅｘを評価した。図１７は、シミュレーションの結果を示す図である。図１７において、縦軸は、公平性ＦａｉｒｎｅｓｓＩｎｄｅｘを表し、横軸は、１回のチャネルアクセス当たりのフロー数を表す。また、方式ＴＹ４は、リンク層が従来のＦＩＦＯスケジューリング方式であり、ＭＡＣ層のプロトコルがＩＥＥＥ８０２．１１ｂである従来の方式を表し、方式ＴＹ５は、リンク層が図１５に示すフローチャートに従ってフロー数Ｆｌｏｗ＿Ｎを決定し、ＭＡＣ層が図８に示すフローチャートに従ってパケットを送信する方式を表す。
【０２１２】
従来の方式ＴＹ４は、フロー数の増加に伴って公平性ＦａｉｒｎｅｓｓＩｎｄｅｘが著しく低下するのに対し、この発明による方式ＴＹ５は、フロー数の全体にわたって高い公平性ＦａｉｒｎｅｓｓＩｎｄｅｘを維持する。従って、ＦＩＦＯスケジュール方式を用いた場合にも、フロー間の公平性ＦａｉｒｎｅｓｓＩｎｄｅｘを大きく改善できることがわかった。
【０２１３】
実施の形態１においては、無線ネットワークシステム１０を構成する無線装置１〜９の全てが複数のバッファ１９１〜１９８を有し、ＲＲスケジュール方式によって、複数のパケットをフロー毎に分類してバッファ１９１〜１９８に格納するとともに、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆ以下になるように決定することを説明した。
【０２１４】
また、実施の形態２においては、無線ネットワークシステム１０を構成する無線装置１〜９の全てが単一のバッファ１９Ａを有し、ＦＩＦＯスケジュール方式によって、複数のパケットを単一のバッファ１９Ａに入出力するとともに、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆ以下になるように決定することを説明した。
【０２１５】
そして、この発明による無線ネットワークシステム１０は、同じ方式によって、複数のパケットをバッファに入出力するとともに、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆ以下になるように決定する無線装置からなる無線ネットワークシステムに限らず、ＲＲスケジュール方式によって、複数のパケットをフロー毎に分類してバッファ１９１〜１９８に格納するとともに、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆ以下になるように決定する無線装置と、ＦＩＦＯスケジュール方式によって、複数のパケットを単一のバッファ１９Ａに入出力するとともに、１回のチャネルアクセスに応じて送信するフロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆ以下になるように決定する無線装置とから構成される無線ネットワークシステムであってもよい。
【０２１６】
つまり、無線ネットワークシステム１０は、複数のバッファを備える無線装置と、単一のバッファを備える無線装置とから構成されていてもよい。このように、構成しても、無線ネットワークシステム１０においては、フロー間の公平性を改善できる。
【０２１７】
上記においては、１回のチャネルアクセスに応じて送信するフローの最大数ＭＡＸ＿ｆは、“４”であるとして説明したが、この発明においては、最大数ＭＡＸ＿ｆは、“４”以外の値であってもよい。そして、最大数ＭＡＸ＿ｆは、無線ネットワークシステム１０の混雑度合を考慮して決定するようにしてもよい。
【０２１８】
なお、図８および図１５に示すフローチャートに従って、１回のチャネルアクセスに応じて異なるフローに含まれるパケットを送信する無線装置１〜９は、１回のチャネルアクセスに応じて、ｎ個のフローに含まれるパケットを送信する「第１の無線装置」、または１回のチャネルアクセスに応じて、ｍ個のフローに含まれるパケットを送信する「第２の無線装置」を構成する。
【０２１９】
また、ＩＰモジュール２０から受けたＩＰパケットをバッファ１９Ａに順次格納するＬＬＣモジュール１８Ａは、ｐ個のフローに含まれる複数のパケットをｐ個のフローの順序に従って第１の単一バッファに格納する「第１の格納手段」、またはｑ個のフローに含まれる複数のパケットをｑ個のフローの順序に従って単一バッファ（または第２の単一バッファ）に格納する「第２の格納手段」を構成する。
【０２２０】
更に、図１５に示すフローチャートに従って、１回のチャネルアクセス時に送信するフロー数Ｆｌｏｗ＿Ｎを決定するＬＬＣモジュール１８Ａおよび図８に示すフローチャートに従ってＬＬＣモジュール１８Ａから受けたパケットを送信するＭＡＣモジュール１７は、１回のチャネルアクセスに応じて、ｐ個のフローの先頭から重複するフローの１つ前のフローまでのｉ（ｉは正の整数）個のフローに含まれるパケットをフロー毎に第１の単一バッファから順次読み出して送信する「第１の送信手段」、または１回のチャネルアクセスに応じて、ｑ個のフローの先頭から重複するフローの１つ前のフローまでのｊ（ｊは正の整数）個のフローに含まれるパケットをフロー毎に第２の単一バッファから順次読み出して送信する「第２の送信手段」、または１回のチャネルアクセスに応じて、ｑ個のフローの先頭から重複するフローの１つ前のフローまでのｒ（ｒは正の整数）個のフローに含まれるパケットをフロー毎に単一バッファから順次読み出して送信する「第２の送信手段」を構成する。
【０２２１】
更に、図１５に示すフローチャートに従って、１回のチャネルアクセス時に送信するフロー数Ｆｌｏｗ＿ＮをカウントするＬＬＣモジュール１８Ａは、１回のチャネルアクセスに応じて、ｐ個のフローのうちで重複するフローが検出されるまで、フローが第１の単一バッファから検出される毎にカウント数を増加させることによりｉ個のフローをカウントする「第１のカウント手段」、または１回のチャネルアクセスに応じて、ｑ個のフローのうちで重複するフローが検出されるまで、フローが第２の単一バッファから検出される毎にカウント数を増加させることによりｊ個のフローをカウントする「第２のカウント手段」、または１回のチャネルアクセスに応じて、ｑ個のフローのうちで重複するフローが検出されるまで、フローが単一バッファから検出される毎にカウント数を増加させることによりｒ個のフローをカウントする「第２のカウント手段」を構成する。
【０２２２】
更に、カウントされたフロー数Ｆｌｏｗ＿Ｎを最大数ＭＡＸ＿ｆと比較し、１回のチャネルアクセスに応じて送信するフロー数をフロー数Ｆｌｏｗ＿Ｎまたは最大数ＭＡＸ＿ｆに決定するＬＬＣモジュール１８Ａは、カウントされたｉ個をＭ（＝最大数ＭＡＸ＿ｆ）個と比較し、ｉ個がＭ個以下であるときｉ個のフローを１回のチャネルアクセスに応じて送信するフローと決定し、ｉ個がＭ個よりも大きいときＭ個のフローを１回のチャネルアクセスに応じて送信するフローと決定する「第１のフロー決定手段」、またはカウントされたｊ個をＭ（＝最大数ＭＡＸ＿ｆ）個と比較し、ｊ個がＭ個以下であるときｊ個のフローを１回のチャネルアクセスに応じて送信するフローと決定し、ｊ個がＭ個よりも大きいときＭ個のフローを１回のチャネルアクセスに応じて送信するフローと決定する「第２のフロー決定手段」、またはカウントされたｒ個をＭ（＝最大数ＭＡＸ＿ｆ）個と比較し、ｒ個がＭ個以下であるときｒ個のフローを１回のチャネルアクセスに応じて送信するフローと決定し、ｒ個がＭ個よりも大きいときＭ個のフローを１回のチャネルアクセスに応じて送信するフローと決定する「第２のフロー決定手段」を構成する。
【０２２３】
更に、図８に示すフローチャートに従って、１回のチャネルアクセス時にカウントしたフロー数Ｆｌｏｗ＿Ｎのフローに含まれるパケットを送信するＭＡＣモジュール１７およびＬＬＣモジュール１８Ａは、ｉ個のフローに含まれるパケットをフロー毎に第１の単一バッファから順次読み出して送信する「第１のフロー送信手段」、またはｊ個のフローに含まれるパケットをフロー毎に第２の単一バッファから順次読み出して送信する「第３のフロー送信手段」、またはｒ個のフローに含まれるパケットをフロー毎に単一バッファから順次読み出して送信する「第３のフロー送信手段」を構成する。
【０２２４】
更に、図８に示すフローチャートに従って、１回のチャネルアクセス時にＭ個のフローに含まれるパケットを送信するＭＡＣモジュール１７およびＬＬＣモジュール１８Ａは、１回のチャネルアクセスに応じて１番目からＭ番目までのフローに含まれるパケットをフロー毎に第１の単一バッファから順次読み出して送信する「第２のフロー送信手段」、または１回のチャネルアクセスに応じて１番目からＭ番目までのフローに含まれるパケットをフロー毎に単一バッファ（または第２の単一バッファ）から順次読み出して送信する「第４のフロー送信手段」を構成する。
【０２２５】
更に、バッファ１９Ａは、「単一バッファ」、または「第１の単一バッファ」、または「第２の単一バッファ」を構成する。
【０２２６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０２２７】
この発明は、自律的に構築され、かつ、フロー間の公平性を改善可能な無線ネットワークシステムに適用される。また、この発明は、自律的に構築され、かつ、フロー間の公平性を改善可能な無線ネットワークシステムに用いられる無線装置に適用される。
【図面の簡単な説明】
【０２２８】
【図１】この発明の実施の形態による無線ネットワークシステムの概略図である。
【図２】図１に示す無線装置の実施の形態１における構成を示す概略ブロック図である。
【図３】ＩＰヘッダの構成図である。
【図４】ＴＣＰヘッダの構成図である。
【図５】図２に示すルーティングテーブルの例を示す図である。
【図６】図２に示すバッファの構成図である。
【図７】実施の形態１における１回のチャネルアクセスに応じて送信可能なフロー数を決定する動作を説明するためのフローチャートである。
【図８】１回のチャネルアクセスに応じてパケットを送信する動作を説明するためのフローチャートである。
【図９】フロー間の公平性を示すタイミングチャートである。
【図１０】シミュレーションの結果を示す図である。
【図１１】図１に示す無線装置の実施の形態２における構成を示す概略ブロック図である。
【図１２】図１１に示すバッファの構成図である。
【図１３】ＬＬＣモジュールが作成するリストの概念図である。
【図１４】バッファに格納されたパケットとリストとの関係図である。
【図１５】実施の形態２における１回のチャネルアクセスに応じて送信可能なフロー数を決定する動作を説明するためのフローチャートである。
【図１６】バッファに格納されたパケットとリストとの他の関係図である。
【図１７】シミュレーションの結果を示す図である。
【符号の説明】
【０２２９】
１〜９，１Ａ  無線装置、１０  無線ネットワークシステム、１１  アンテナ、１２  入力部、１３  表示部、１４  電子メールアプリケーション、１５，１５Ａ  通信制御部、１６  無線インターフェースモジュール、１７  ＭＡＣモジュール、１８，１８Ａ  ＬＬＣモジュール、１９，１９Ａ  バッファ、２０  ＩＰモジュール、２１  ルーティングテーブル、２２  ＴＣＰモジュール、２３  ＵＤＰモジュール、２４  ＳＭＴＰモジュール、２５  ルーティングデーモン。
【図１】
2006074088.tif 000006
【図２】
2006074088.tif 000007
【図３】
2006074088.tif 000008
【図４】
2006074088.tif 000009
【図５】
2006074088.tif 000010
【図６】
2006074088.tif 000011
【図７】
2006074088.tif 000012
【図８】
2006074088.tif 000013
【図９】
2006074088.tif 000014
【図１０】
2006074088.tif 000015
【図１１】
2006074088.tif 000016
【図１２】
2006074088.tif 000017
【図１３】
2006074088.tif 000018
【図１４】
2006074088.tif 000019
【図１５】
2006074088.tif 000020
【図１６】
2006074088.tif 000021
【図１７】
2006074088.tif 000022