(57)【要約】【課題】  受信バッファに発生する無駄な空き領域を減らし，効率的に受信バッファを使用する。【解決手段】  ネットワークに接続され，ネットワークを介してパケットの通信を行う通信装置に，ネットワークを形成する伝送路上を流れる複数のパケットを受信するパケット受信部１１２と，複数のパケットの各々のパケット長を取得するパケット長取得部１０２と，複数のパケット長から短いパケット長を選択するパケット長選択部１０４と，パケットを格納するためのパケット記憶部１１４と，パケット記憶部を，パケット長選択部により選択されたパケット長に対応する容量をもつブロックに分割し，２以上のパケットに各々含まれるデータが１つのブロックに含まれないように，パケットのパケット記憶部への格納を制御するブロック制御部１１０と，を設けた。【選択図】    図１
2006310929.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続され，前記ネットワークを介してパケットの通信を行う通信装置において：
前記ネットワークを形成する伝送路上を流れる複数のパケットを受信するパケット受信部と；
前記複数のパケットの各々のパケット長を取得するパケット長取得部と；
前記複数のパケット長から短いパケット長を選択するパケット長選択部と；
前記パケットを格納するためのパケット記憶部と；
前記パケット記憶部を，前記パケット長選択部により選択されたパケット長に対応する容量をもつブロックに分割し，２以上の前記パケットに各々含まれるデータが１つの前記ブロックに含まれないように，前記パケットの前記パケット記憶部への格納を制御するブロック制御部と；
を備えることを特徴とする通信装置。
【請求項２】
前記パケット記憶部から所定のデータ量ごとに前記パケットを読み出すパケット読み出し部を備え；
前記ブロック制御部は，前記パケット記憶部を，前記パケット長に対応するデータ量のデータを格納でき，かつ，前記所定のデータ量の倍数となる容量をもつブロックに分割することを特徴とする，請求項１に記載の通信装置。
【請求項３】
前記パケット長選択部により選択されたパケット長を記憶するパケット長記憶部と；
前記パケット長選択部により選択されたパケット長と，前記パケット長記憶部に記憶されているパケット長を比較し，より短いパケット長を選択するパケット長比較部と；を備え，前記ブロック制御部は，前記パケット記憶部を，前記パケット長比較部により選択されたパケット長に対応する容量をもつブロックに分割することを特徴とする，請求項１に記載の通信装置。
【請求項４】
自装置が属するネットワークの構成の変化を検出する変化検出部を備え，
前記パケット長取得部は，前記変化検出部が前記ネットワークの構成の変化を検知した場合に，前記パケットのパケット長を取得することを特徴とする，請求項１に記載の通信装置。
【請求項５】
前記受信部が，前記パケットの宛先に自装置が含まれるパケットを受信する前に，前記ブロック制御部による前記パケット記憶部のブロック分割が行われることを特徴とする，請求項１に記載の通信装置。
【請求項６】
ネットワークに接続され，前記ネットワークを介してパケットの通信を行う通信装置をして：
前記ネットワークを形成する伝送路上を流れる複数のパケットを受信するパケット受信処理と；
前記複数のパケットの各々のパケット長を取得するパケット長取得処理と；
前記複数のパケット長から短いパケット長を選択するパケット長選択処理と；
前記パケットを格納するためのパケット記憶部を，前記パケット長選択処理により選択されたパケット長に対応する容量をもつブロックに分割し，２以上の前記パケットに各々含まれるデータが１つの前記ブロックに含まれないように，前記パケットの前記パケット記憶部への格納を制御するブロック制御処理と；
を実行せしめることを特徴とするコンピュータプログラム。
【請求項７】
伝送路上を流れる複数のパケットを受信するパケット受信ステップと；
前記複数のパケットの各々のパケット長を取得するパケット長取得ステップと；
前記複数のパケット長から短いパケット長を選択するパケット長選択ステップと；
前記パケットを格納するためのパケット記憶部を，前記パケット長選択ステップにより選択されたパケット長に対応する容量をもつブロックに分割し，２以上の前記パケットに各々含まれるデータが１つの前記ブロックに含まれないように，前記パケットの前記パケット記憶部への格納を制御するブロック制御ステップと；
を含むことを特徴とするデータ格納制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，通信装置，データ格納制御方法，およびコンピュータプログラムに関し，特に，ネットワークを介してパケットの通信を行う通信装置等に関する。
【背景技術】
【０００２】
ネットワークを介してパケットの通信を行う通信機器は，受信したパケットの一時的な保存領域である受信バッファを有する通信コントローラを備え，通信コントローラを通してパケットを受信する。通信コントローラは，パケットを受信して受信バッファにそのパケットを保存し，エラーの有無等を確認した後に，そのパケットを通信機器に転送する。パケットを受信したことを通信コントローラが通信機器に通知してから実際に通信機器にパケットが転送されるまでには，例えば通信機器のオペレーションシステム（以後，ＯＳと称する。）やアプリケーションの応答の遅れや，転送のためのバスの転送速度の不足というような遅延要因が存在する。そのため，受信したパケットのデータを通信機器へ転送する前に次のパケットが来てしまい，通信コントローラがそのパケットを受信できなくなる等の問題が生じうる。そのような問題を回避するために，通信コントローラは受信バッファを複数備えている。そして，通信コントローラは複数の受信バッファに対するパケットの書き込みおよび読み込みをＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）により制御して，パケットロスの確率を減らしている。従来，１つの受信バッファの容量は，パケットの最大長以上の値に固定的に設定されており，通信コントローラは１つの受信バッファに１つのパケットを格納していた。
【０００３】
【特許文献１】特開平１０−２８９７８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし，上記のような従来の通信コントローラは，短いパケットであっても，パケットの最大長以上の容量をもつ受信バッファを１つ使用して格納するため，他のデータの格納に使用できない無駄な空き領域が多く発生していた。
【０００５】
このような，非効率的な受信バッファの使用は，特に無線通信機器に備えられる通信コントローラにおいて問題となる。
【０００６】
従来の無線通信機器は，アクセスポイントと接続されている。無線通信機器であるノード１６が，他の全ての無線通信機器に宛てた同報パケットを送信する場合，まず，ノード１６は自装置が所属するネットワーク１０内のアクセスポイント１２に同報パケット（ＢＣ１）を送出する。アクセスポイント１２は，ネットワーク１０内の他の無線通信機器であるノード２０と，アクセスポイント１２と有線接続されたアクセスポイント２６に同報パケット（ＢＣ２）を送信する。アクセスポイント２６は，ネットワーク２４内の無線通信機器であるノード３０とノード３４に同報パケット（ＢＣ３）を送信する。ノード２０とノード３０は，互いに通信可能な範囲に存在するが，各々が所属するアクセスポイントが異なるため，相互に通信しないようにネットワークごとにフィルタされる。上記の同報パケットの通信処理において，いずれの無線通信機器にも特に時間的にパケットが集中するという現象は起こらない。
【０００７】
しかし，インフラが必要なく，設置が用意なために将来的に普及することが考えられる無線メッシュネットワークなどでは，各無線通信機器に同報パケットが繰り返し伝達されるため，一時的にパケットが集中するという現象が起こり得る。図１０を参照して説明する。ノード５０から出力された同報パケット（ＢＣ１）は，ノード５０の通信エリア５２と通信可能なエリアが重複するノード５４およびノード５８に到達する。ノード５４は，同報パケットを受信すると，対応する同報パケット（ＢＣ２）を出力し，その同報パケットは，元となる同報パケット（ＢＣ１）の出力元であるノード５０を除外した，通信可能なエリアがノード５４の通信エリア５６と重複する他の全てのノードに到達する。つまり，ノード５８およびノード６２に到達する。一方，同報パケット（ＢＣ１）を受信したノード５８も，ノード５４と同様に，対応する同報パケット（ＢＣ２）を出力する。その同報パケットは，ノード５４およびノード６２に到達する。その結果，ノード６２は，同報パケット（ＢＣ２）を，ノード５４およびノード５８の双方から受信することとなる。また，ノード６２も，受信した同報パケット（ＢＣ２）に対応する同報パケット（ＢＣ３）をノード５４やノード５８に送信する場合もある。この様に，無線メッシュネットワークでは，各無線通信機器は同報パケットを一時的に集中して受信する可能性がある。また，同報パケットは通常，経路探索や，データ伝送ではなく，コマンドなどの短いパケットである場合が多い。
【０００８】
上記状況において，従来の通信コントローラのように非効率的に受信バッファを使用していると，短いパケットと無駄な空き領域とで受信バッファの使用率が急激に増加することにより，受信バッファのオーバーフローが発生する可能性が高いという問題点がある。
【０００９】
そこで，本発明は，このような問題に鑑みてなされたもので，その目的とするところは，受信バッファに発生する無駄な空き領域を減らし，効率的に受信バッファを使用することが可能な通信装置，データ格納制御方法およびコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するために，本発明のある観点によれば，ネットワークに接続され，ネットワークを介してパケットの通信を行う通信装置において：ネットワークを形成する伝送路上を流れる複数のパケットを受信するパケット受信部と；複数のパケットの各々のパケット長を取得するパケット長取得部と；複数のパケット長から短いパケット長を選択するパケット長選択部と；パケットを格納するためのパケット記憶部と；パケット記憶部を，パケット長選択部により選択されたパケット長に対応する容量をもつブロックに分割し，２以上のパケットに各々含まれるデータが１つのブロックに含まれないように，パケットのパケット記憶部への格納を制御するブロック制御部と；を備える通信装置が提供される。
【００１１】
上記発明によれば，パケットを格納するパケット記憶部が，伝送路を流れているパケットの中の短いパケットが格納できる容量をもつブロックに分割される。そして，１つのブロック内に，２以上のパケットに各々含まれるデータが混在しないように，パケット記憶部へのパケットの格納が制御される。この場合，ブロック長よりも長いパケット長のパケットは，複数のブロックに分割されてそのデータが格納される。分割されたデータの例えば最終部分が，ブロック長に満たない場合には，そのブロック内には未使用領域ができる。また，ブロック長よりも短いパケット長のパケットは，１つのブロック内に格納される。パケット長がブロック長よりも短い場合には，ブロック内に未使用領域ができる。異なるパケットに含まれるデータが１つのブロック内に混在しないように制御されるため，上記未使用領域は，他のデータを格納できない無駄な空き領域となる。しかし，本発明では，ブロック長が，短いパケット長に対応して決められるため，ブロック内に多くの未使用領域が発生することはない。そのため，パケット記憶部に発生する無駄な空き領域を減らし，効率的にパケット記憶部を使用することができる。なお，短いパケット長とは，例えば，複数のパケット長のなかでの最短のパケット長，所定値よりも短いパケット長，所定値よりも長いパケット長の中の最短のパケット長などである。
【００１２】
上記通信コントローラは，パケット記憶部から所定のデータ量ごとにパケットを読み出すパケット読み出し部をさらに備えてもよく，その場合，ブロック制御部は，パケット記憶部を，パケット長に対応するデータ量のデータを格納でき，かつ，所定のデータ量の倍数となる容量をもつブロックに分割するようにしてもよい。所定のデータ量の倍数は，所定のデータ量に自然数を乗算した値であることが望ましい。かかる構成によれば，パケット読み出し部が読み出す所定のデータ量の整数倍ごとにブロックが区切られる。１のブロック内には異なるパケットのデータは混在していないため，パケット読み出し部が１度に読み出すデータの中に異なるパケットのデータが混在することを防止できる。
【００１３】
上記通信コントローラは，パケット長選択部により選択されたパケット長を記憶するパケット長記憶部と；パケット長選択部により選択されたパケット長と，パケット長記憶部に記憶されているパケット長を比較し，より短いパケット長を選択するパケット長比較部と；をさらに備えでもよく，その場合，ブロック制御部は，パケット記憶部を，パケット長比較部により選択されたパケット長に対応する容量をもつブロックに分割するようにしてもよい。
【００１４】
上記通信コントローラは，自装置が属するネットワークの構成の変化を検出する変化検出部を備えてもよく，その場合，パケット長取得部は，変化検出部がネットワークの構成の変化を検知した場合に，パケットのパケット長を取得するようにしてもよい。ネットワークの構成の変化には，例えば，通信装置自身が接続先のネットワークを変えた場合が含まれる。また，通信装置が接続されているネットワークに他の装置が新たに加入した場合や，接続されていた装置のいずれかがネットワークから抜けた場合も含まれる。かかる構成によれば，構成の変化後のネットワークを形成する伝送路上を流れるパケットのパケット長を取得し，その中の短いパケット長に対応してパケット記憶部のブロック分割が行われる。従って，変化後のネットワークに適応した値に基づいて，パケット記憶部のブロック分割を行うことができる。
【００１５】
上記受信部が，パケットの宛先に自装置が含まれるパケットを受信する前に，ブロック制御部によるパケット記憶部のブロック分割が行われてもよい。かかる構成によれば，パケットがパケット記憶部に格納される前にパケット記憶部のブロック分割が行われており，パケット記憶部へのパケットの格納開始時から，分割されたブロック単位でのパケットの格納の制御を行うことができる。
【００１６】
上記課題を解決するために，本発明の別の観点によれば，コンピュータに上記の通信装置として機能させるコンピュータプログラムが提供される。コンピュータプログラムは，コンピュータが備える記憶部に格納され，コンピュータが備えるＣＰＵに読み込まれて実行されることにより，そのコンピュータを上記の通信装置として機能させる。また，コンピュータプログラムが記録された，コンピュータで読み取り可能な記録媒体も提供される。記録媒体は，例えば，磁気ディスク，光ディスクなどである。
【００１７】
上記課題を解決するために，本発明の別の観点によれば，伝送路上を流れる複数のパケットを受信するパケット受信ステップと；複数のパケットの各々のパケット長を取得するパケット長取得ステップと；複数のパケット長から短いパケット長を選択するパケット長選択ステップと；パケットを格納するためのパケット記憶部を，パケット長選択部により選択されたパケット長に対応する容量をもつブロックに分割し，２以上のパケットに各々含まれるデータが１つのブロックに含まれないように，パケットのパケット記憶部への格納を制御するブロック制御ステップと；を含むデータ格納制御方法が提供される。
【発明の効果】
【００１８】
以上説明したように本発明によれば，受信バッファに発生する無駄な空き領域を減らし，効率的に受信バッファを使用することが可能な通信装置，データ格納制御方法およびコンピュータプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下に添付図面を参照しながら，本発明の好適な実施の形態について詳細に説明する。なお，本明細書及び図面において，実質的に同一の機能構成を有する構成要素については，同一の符号を付することにより重複説明を省略する。
【００２０】
本実施形態にかかる通信コントローラ１００は，通信装置の一例であり，通信機器に内蔵または外付けにより備えられる。通信機器は，有線または無線のネットワークに接続されて，通信コントローラ１００を通してネットワークからパケットを受信する。通信コントローラ１００が備えられる通信機器としては，パーソナルコンピュータ（以後，ＰＣとも称する。），モバイルＰＣや携帯電話などの無線通信機器，通信機能を有するゲーム機器，情報家電などを例示できる。なお，本実施形態では，上述のように，通信機器とは別体で提供される通信コントローラ１００を通信装置の一例としているが，本発明はかかる例には限定されない。例えば，上述の通信コントローラ１００の機能構成を備えた通信機器も，通信装置の一例であると言える。
【００２１】
通信コントローラ１００は，ＣＰＵ（中央処理装置）と，記憶手段を少なくとも備える。ＣＰＵは，通信コントローラ１００の全体制御を実行する。記憶手段は，ＲＡＭ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などである。
【００２２】
図１に基づいて，通信コントローラ１００の機能構成について説明する。通信コントローラ１００は，パケット長取得部１０２と，パケット長選択部１０４と，パケット長記憶部１０６と，パケット長比較部１０８と，ブロック制御部１１０と，パケット受信部１１２と，パケット記憶部１１４と，パケット読み出し部１１６と，変化検出部１１８と，パケット送出部１２０などを主に備える。
【００２３】
パケット受信部１１２は，通信コントローラ１００が接続されているネットワークを構成する伝送路上を流れる複数のパケットを受信する機能を有する。パケット受信部１１２は，パケットを受信し，受信したパケットの宛先に自装置が含まれている場合には，そのパケットをパケット記憶部１１４に提供する。具体的には，パケット受信部１１２は，受信したパケットの宛先アドレスに，通信コントローラ１００が備えられている通信機器のアドレスが含まれている場合と，受信したパケットの宛先アドレスが，同報パケットを示すアドレスである場合に，そのパケットをパケット記憶部１１４に提供する。
【００２４】
パケット長取得部１０２は，パケット受信部１１２が受信した複数のパケットの各々のパケット長を取得する機能を有する。具体的には，パケット長取得部１０２は，パケット受信部１１２が受信したパケットに含まれるレングス情報を参照して，そのパケットの全体のデータ量であるパケット長を取得する。パケット長取得部１０２は，ネットワーク接続時や，所定期間ごと等のタイミングで，例えば１秒間等の所定期間の間，パケット長の取得処理を行う。
【００２５】
パケット長選択部１０４は，複数のパケット長から短いパケット長を選択する機能を有する。具体的には，パケット長選択部１０４は，パケット長取得部１０２から複数のパケット長を取得して，その中の最小のパケット長を選択する。なお，本発明においてパケット長選択部が選択するパケット長は最小のパケットには限られない。例えば，所定値よりも小さいいずれかのパケット長を選択してもよい。また，パケット長取得部が取得した複数のパケット長のうち，所定値よりも大きいパケット長の中の最小値を選択してもよい。また，所定値よりも小さい複数のパケット長の平均値を選択してもよい。パケット長選択部１０４は，選択したパケット長をパケット長比較部１０８に提供する。
【００２６】
パケット長比較部１０８は，パケット長選択部１０４により選択されたパケット長と，パケット長記憶部に記憶されているパケット長（以後，記憶済最小パケット長とも称する。）を比較し，より短いパケット長を選択する機能を有する。そして，パケット長比較部１０８は，選択したパケット長の値をブロック制御部１０８に提供する。また，パケット長比較部１０８は，パケット長の比較の結果，パケット長選択部１０４から取得したパケット長の方が短い場合には，そのパケット長の値で記憶済最小パケット長の値を更新する。
【００２７】
パケット長記憶部１０６は，パケット長比較部１０８により選択されたパケット長を記憶する機能を有する。また，パケット長記憶部１０６には，記憶済最小パケット長の初期値として，例えば２キロバイト等の固定値が記憶されていてもよく，その初期値が，パケット長比較部１０８により選択されたパケット長の値によって更新されるように構成されてもよい。
【００２８】
パケット記憶部１１４は，パケットを格納する機能を有する。パケット記憶部１１４は，いわゆる受信バッファであり，パケット受信部１１２が受信したパケットを一時的に記憶する。
【００２９】
ブロック制御部１１０は，パケット記憶部１１４を，パケット長比較部１０８により選択されたパケット長に対応する容量をもつブロックに分割し，２以上のパケットに各々含まれるデータが１つのブロックに含まれないように，パケットのパケット記憶部１１４への格納を制御する機能を有する。具体的には例えば，ブロック制御部１１０は，パケット比較部１０８からパケット長の値を取得し，ＲＡＭ等に保存する。そして，パケット受信部１１２から，宛先に自装置が含まれるパケットを受信した旨の通知を受けると，ＲＡＭに保存してある値に基づいてライトポインタを制御して，パケットのデータがパケット記憶部１１４に書き込まれるのを制御する。かかる制御によってパケットが格納された場合のパケット記憶部１１４のパケットの格納状態を，図２を参照して説明する。
【００３０】
図２（ｂ）は，ブロック制御部１１０が最小のパケット長の値に基づいてパケット記憶部１１４をブロック分割した場合の，パケット記憶部１１４のパケットの格納状態を示す。図２（ａ）は，従来のように，パケットの最大長以上の固定値に基づいてパケット記憶部１１４をブロック分割した場合の，パケット記憶部１１４のパケットの格納状態を示す。
【００３１】
図２（ａ）では，固定長のブロック２０２−１，２０２−２，２０２−３にそれぞれパケット２１０，パケット２１２，およびパケット２１４が格納されている。パケット２１０のパケット長は，パケットの最大長に近いため，ブロック２０２−１の大部分の領域を使用している。最大長よりも大幅に短いパケット２１２が格納されるブロック２０２−２では，パケットが使用する領域は僅かであり，ブロック２０２−２の大部分が未使用となる。しかし，この未使用部分には他のパケットのデータを格納することはできないため，ブロック２０２−２の大部分が無駄な空き領域となる。
【００３２】
一方，図２（ｂ）では，最小のパケット長の値に基づく，最適化されたブロック長のブロック３０２−１，３０２−２，３０２−３，…，３０２−１２にパケット２１０，パケット２１２およびパケット２１４が格納されている。パケット２１０のパケット長は，最適化されたブロック長よりも長いため，パケット２１０は複数のブロックに分かれて格納される。パケット２１２のパケット長は最小のパケット長であるため，１つのブロックに格納される。上述の図２（ａ）の場合と異なり，パケット２１２が格納されるブロック３０２−５には無駄な空き領域がほとんど生じない。また，パケット２１０やパケット２１４の最後の一部分が格納されるブロック３０２−４や３０２−８では無駄な空き領域が生じるが，図２（ａ）の場合に比べれば僅かな量である。このようにパケットが格納されることにより，図２（ａ）の場合と同じパケットが格納された場合でも，他のパケットのデータを格納可能な未使用領域（ブロック３０２−９〜３０２−１２）が増加する。そのため，より多くのパケットをパケット記憶部１１４に格納することができる。
【００３３】
図１に戻り，通信コントローラ１００の機能構成の説明を続ける。パケット読み出し部１１６は，パケット記憶部１１４からパケットを読み出す機能を有する。具体的には，ブロック制御部１１０によるリードポインタの制御を受けながら，ブロックごとに格納されているパケットのデータを順番に読み出すことにより１つのパケットを取得する。なお，パケット読み出し部１１６は，所定のデータ量ごとにパケットを読み出す。具体的には，パケット読み出し部１１６は，通信コントローラ１００のＣＰＵの処理ビット幅に基づいて，その処理ビット幅ごとにデータを読み出す。ＣＰＵの処理ビット幅とは，ＣＰＵが１つの命令で処理できるデータの量を示し，例えば，３２ビットや１６ビットなどである。
【００３４】
そこで，上述のブロック制御部１１０は，パケット記憶部１１４を，最小パケット長に対応するデータ量のデータを格納でき，かつ，所定のデータ量の倍数となる容量をもつブロックに分割するようにしてもよい。なお，所定のデータ量の倍数は，所定のデータ量に自然数を乗算した値である。例えば，通信コントローラ１００のＣＰＵの処理ビット幅が３２ビットであり，最小パケット長が１バイト（８ビット）である場合には，ブロック制御部１１０は，パケット記憶部１１４を３２ビットごとのブロックに分割する。同様に，ＣＰＵの処理ビット幅が３２ビットであり，最小パケット長が６バイト（４８ビット）である場合には，ブロック制御部１１０は，パケット記憶部１１４を６４ビットごとのブロックに分割する。図８を参照して具体的に説明する。
【００３５】
図８（ｂ）は，ブロック制御部１１０がパケット読み出し部１１６の読み出しデータ量（ＣＰＵの処理ビット幅）を考慮してブロック分割をした場合の，パケット記憶部１１４のパケットの格納状態を示す。図８（ａ）は，上記考慮を行わない場合の，パケット記憶部１１４のパケットの格納状態を示す。
【００３６】
図８（ａ）では，パケット記憶部１１４は，最小パケット長である１バイトごとのブロックに分割されており，ブロック４０２−１にパケット４１０が格納され，ブロック４０２−２からブロック４０２−５にわたってパケット４１２が格納されている。パケット読み出し部１１６はＣＰＵの処理ビット幅である３２ビットごとにデータを読み出す。そのため，パケット４１２を読み出す場合，パケット読み出し部１１６はまずブロック４０２−１からブロック４０２−４までのデータを読み出してパケット４１２の一部を取得し，次にブロック４０２−５からブロック４０２−８までのデータを読み出してパケット４１２の残余部分を取得する。つまり，パケット読み出し部１１６は，パケット４１２を取得するためにパケット記憶部１１４に２度アクセスして読み出しを行わなければならない。また，各アクセスごとに読み出したデータをビットシフトする必要も生じる。
【００３７】
一方，図８（ｂ）では，パケット記憶部１１４は，ＣＰＵの処理ビット幅である３２ビットごとのブロックに分割されており，ブロック５０２−１にパケット４１０が格納され，ブロック５０２−２にパケット４１２が格納される。パケット読み出し部１１６がパケット４１２を読み出す場合，パケット読み出し部１１６はブロック５０２−２のデータを読み出すだけでパケット４１２を取得できる。つまり，パケット読み出し部１１６は，パケット４１２を取得するためにパケット記憶部１１４に１度アクセスして読み出しを行うだけでよく，また，読み出したデータをビットシフトする必要もない。従って，パケット読み出し部１１６によるパケットの読み出し処理が図８（ａ）の場合に比べて速くなる。
【００３８】
図１に戻り，通信コントローラ１００の機能構成の説明を続ける。パケット送出部１２０は，パケット読み出し部１１６からパケットを取得して，そのパケットを通信機器に提供する機能を有する。
【００３９】
変化検出部１１８は，自装置が属するネットワークの構成の変化を検出する機能を備える。具体的には，自装置が使用するネットワークアドレスが変わったことを，通信機器から通知されることにより，ネットワークの構成の変化を検出する。変化検出部１１８は，ネットワークの構成の変化を検出すると，パケット長取得部１０２に通知する。パケット長取得部１０２は，変化検出部１１８からの通知を受けると，パケット長の取得を開始する。接続されるネットワークが変わった場合には，以前に接続されていたネットワークにおいて通信コントローラ１００が受信していたパケットとは異なるパケットを受信する可能性が高く，パケット記憶部１１４のブロック分割に用いた最小パケット長が，新たなネットワークでは不適切になる場合がある。新たなネットワークにおいてパケット長取得部１０２が再度パケット長を取得すれば，適切な最小パケット長の値でパケット記憶部１１４をブロック分割することができる。
【００４０】
以上，通信コントローラ１００の機能構成について説明した。なお，パケット長比較部１０８とパケット長記憶部１０６は通信コントローラ１００の構成から除外されてもよい。その場合には，パケット長選択部１０４は，選択したパケット長の値をブロック制御部１１０に提供し，ブロック制御部１１０は，パケット長選択部１０４から取得した値に基づいてパケット記憶部１１４をブロック分割する。
【００４１】
次に，図３から図７に基づいて，通信コントローラ１００によるデータ格納制御処理の流れについて説明する。
【００４２】
図３は，通信コントローラ１００が，受信したパケットを格納しておくためのパケット記憶部１１４の構成を最適化して，受信したパケットのデータをパケット記憶部１１４に格納する，データ格納制御処理の一例を示す。
【００４３】
まず，通信コントローラ１００は，接続されているネットワークを所定期間モニタし，最小のパケット長を取得する（Ｓ１０２）。Ｓ１０２には，伝送路上を流れる複数のパケットを受信するパケット受信ステップ，複数のパケットの各々のパケット長を取得するパケット長取得ステップ，および複数のパケット長から短いパケット長を選択するパケット長選択ステップが含まれる。具体的には，通信コントローラ１００は，例えば１秒間等の所定期間の間，接続されているネットワークを構成する伝送路上を流れる全てのパケットを受信して，そのパケットのパケット長を取得する。そして，通信コントローラ１００は，取得した複数のパケット長から最小のパケット長を選択する。
【００４４】
次に，通信コントローラ１００は，最小のパケット長を取得できたかを判断する（Ｓ１０４）。通信コントローラ１００が最小のパケット長を取得できない場合とは，例えば，通信コントローラ１００がネットワークのモニタを行った所定期間の間，伝送路上にパケットが全く流れておらず，通信コントローラ１００がパケットを受信できなかった場合などである。Ｓ１０４でパケット長を取得できなかった場合には，通信コントローラ１００は固定値を最小パケット長とする（Ｓ１０６）。固定値は，最大パケット長以上の値（例えば２キロバイト）など，いずれの値でもよい。
【００４５】
次に，通信コントローラ１００は，パケット記憶部１１４を，最小パケット長単位のブロックに分割し，ブロック番号を付加してリングバッファを構成する（Ｓ１０８）。Ｓ１０８は，パケットを格納するためのパケット記憶部を，パケット長選択ステップにより選択されたパケット長に対応する容量をもつブロックに分割し，２以上のパケットに各々含まれるデータが１つのブロックに含まれないように，パケットのパケット記憶部への格納を制御するブロック制御ステップの一例である。具体的には，通信コントローラ１００は，パケット記憶部１１４を，Ｓ１０２で取得した最小パケット長またはＳ１０６で設定した最小パケット長に対応する容量をもつブロックに分割する。最小パケット長に対応する容量は，最小パケット長のパケットが格納できる最小限の容量であってもよいし，所定の範囲内で大きめの容量であってもよい。
【００４６】
そして，通信コントローラ１００は，各ブロックに例えば０〜ｎまでの番号を付与する。通信コントローラ１００は，受信したパケットを，０の番号が付されたブロックからｎ番のブロックまで順番に格納していき，ｎ番のブロックに格納した後は，０番のブロックに戻って格納するように制御する。なお，ネットワークのモニタ処理（Ｓ１０２）からパケット記憶部１１４をブロック分割してリングバッファを構成する処理（Ｓ１０８）は，通信コントローラ１００がネットワークに接続された後，宛先に自装置が含まれるパケットを受信する前に行われることが望ましい。つまり，通信コントローラ１００は，宛先に自装置が含まれる受信パケットをパケット記憶部１１４に格納するため，パケット記憶部１１４へのパケットの格納を開始する前にパケット記憶部１１４のブロック構成を決定しておくことが望ましい。従ってその場合，Ｓ１０２で通信コントローラ１００がパケット長を取得する対象であるパケットは，その宛先に自装置が含まれないものである。
【００４７】
図４は，通信コントローラ１００によるデータ格納制御処理の流れの他の例を示す。Ｓ２０２〜Ｓ２０６までは，図３のＳ１０２〜Ｓ１０６までの処理とほぼ同様であるため説明を省略する。通信コントローラ１００は，Ｓ２０２またはＳ２０６で最小パケット長を取得した後に，パケット記憶部１１４を，最小パケット長より大きいＣＰＵの処理ビット幅の倍数の長さのブロックに分割し，ブロック番号を付加してリングバッファを構成する（Ｓ１０８）。具体的には，通信コントローラ１００は，パケット記憶部１１４を，取得した最小パケット長に対応する容量以上であり，かつ，パケット読み出し部１１６の所定の読み出しデータ量の一例であるＣＰＵの処理ビット幅の倍数の容量をもつブロックに分割する。その後，図３のＳ１０８と同様に，受信したパケットのパケット記憶部１１４への格納を制御する。
【００４８】
図５は，通信コントローラ１００によるデータ格納制御処理の流れの他の例を示す。Ｓ３０２〜Ｓ３０６までは，図３のＳ１０２〜Ｓ１０６までの処理とほぼ同様であるため説明を省略する。通信コントローラ１００は，Ｓ３０２またはＳ３０６で最小パケット長を取得した後に，その取得したパケット長が記憶済最小パケット長よりも短いか否かを判断する（Ｓ３０８）。
【００４９】
具体的には，通信コントローラ１００は，パケット長記憶部１０６に記憶されているパケット長の値を読み出して，その値とＳ３０２等で取得した最小パケット長の値とを比較する。比較した結果，Ｓ３０２等で取得した最小パケット長の方が短い場合には，Ｓ３１０に進み，通信コントローラ１００は，Ｓ３０２等で取得した最小パケット長の単位でパケット記憶部１１４を分割する（Ｓ３１０）。そして，通信コントローラ１００は，Ｓ３１０でブロック分割に使用したパケット長の値でパケット長記憶部１０６に記憶されている記憶済最小パケット長を更新する。一方，パケット長記憶部１０６から読み出したパケット長の方が短い場合には，Ｓ３１２に進み，記憶済最小パケット長の単位でパケット記憶部１１４を分割する（Ｓ３１２）。
【００５０】
このような構成によれば，例えば，通信コントローラ１００がパケット記憶部１１４のブロック分割を行うのが２回目以降である場合，Ｓ３０２のネットワークのモニタ期間の長さが不十分であって伝送路上を流れるパケットのうち短いパケット長のパケットを受信できなかったとしても，以前のブロック分割時に使用した最小のパケット長を使用することができる。また，Ｓ３１０で使用した最小パケット長の値でパケット長記憶部１０６の記憶済最小パケット長を更新することにより，図５の処理が複数回行われた場合に，複数回ネットワークをモニタした中で得た最も小さいパケット長の値がパケット長記憶部１０６に格納される。
【００５１】
図６は，通信コントローラ１００によるデータ格納制御処理の流れの他の例を示す。まず，通信コントローラ１００は，自装置が接続されるネットワークの構成に変化が生じたか否かを判断する（Ｓ４０２）。ネットワークの構成に変化が生じる場合には，例えば，通信コントローラ１００が接続されているネットワークに他の装置が新たに加入した場合や，接続されていた装置のいずれかがネットワークから抜けた場合が含まれる。本実施形態では，通信コントローラ１００自身の接続先のネットワークが変わった場合を，ネットワーク構成の変化として説明する。
【００５２】
通信コントローラ１００は，接続先ネットワークの変化を，通信コントローラ１００よりも上位でパケットの送受信処理を行う通信機器からの，ネットワークアドレス（例えばＩＰアドレス）の変更通知を受けることにより検出できる。Ｓ４０２で，ネットワーク構成に変化が生じた場合には，通信コントローラ１００は，記憶済最小パケット長を固定値にリセットする（Ｓ４０４）。具体的には，通信コントローラ１００は，パケット長記憶部１０６に記憶されている最小パケット長の値を，固定値（例えば，２キロバイト）にリセットする。接続先ネットワークが変わることにより，それまでの最小パケット長が不適切になる可能性があるため，不適切な値でパケット記憶部１１４をブロック分割することを防止するために上記リセットを行う。そして，通信コントローラ１００は，ネットワークのモニタを開始する（Ｓ４０６）。Ｓ４０６〜Ｓ４１８は，図５のＳ３０２〜Ｓ３１４までの処理とほぼ同様であるため，説明を省略する。
【００５３】
図７は，通信コントローラ１００によるデータ格納制御処理の流れの他の例を示す。図７では，通信コントローラ１００は，ネットワーク通信中にパケットのモニタを行う。ネットワーク通信中とは，ネットワークの伝送路上に，宛先に自装置が含まれるパケットが流れており，通信コントローラ１００がそのパケットを受信する状態にある間である。つまり，ネットワーク通信中は，通信コントローラ１００は，パケット記憶部１１４へのパケットの格納を行っている状態である。
【００５４】
通信コントローラ１００は，Ｓ５０２でネットワークに流れているパケットのパケット長を取得する（Ｓ５０２）。これは，図３のＳ１０２の処理とほぼ同様であるが，Ｓ５０２で通信コントローラ１００がパケット長を取得する対象のパケットは，その宛先に自装置が含まれているものと，含まれていないものとの双方を含む点で異なる。そして，通信コントローラ１００は，Ｓ５０２で取得したパケット長と，パケット長記憶部１０６に記憶されているパケット長とを比較して（Ｓ５０４），記憶済最小パケット長よりも短いパケット長があれば，その値で記憶済最小パケット長の値を更新する（Ｓ５０６）。
【００５５】
このような構成によれば，通信コントローラ１００が，図５の処理の流れに従ったパケット記憶部１１４のブロック分割処理を行う場合に，ネットワーク通信中に取得した最小パケット長を使用することができる。特に，ネットワーク通信の期間が長ければ，長い間モニタした中の最小パケット長の値により次回のブロック分割を行うことができるため，より効率的にパケット記憶部１１４へのパケットの格納を行うことができる。また，ネットワーク通信中にパケット長をモニタして記憶済最小パケット長との比較を行うことにより，記憶済最小パケット長よりも短いパケット長を検出した場合には，その時点で既に記憶済最小パケット長の値に基づいてブロック分割されているパケット記憶部１１４を，さらに小さいパケット長の値に基づいてリアルタイムでブロック分割をし直すことが可能となる。
【００５６】
以上，本実施形態にかかる通信コントローラ１００が行う処理の流れについて説明した。本実施形態にかかる通信コントローラ１００によれば，従来の通信コントローラのようにパケットの最大長以上の固定値に基づいてパケット記憶部１１４をブロック分割する場合に比べて，より多くのパケットをパケット記憶部１１４に格納することができる。そのため，パケット記憶部１１４の容量が同じである場合には，従来の通信コントローラに比べて，パケット記憶部１１４のオーバーフローを原因とする受信パケットのロスをより確実に防止できる。また，受信パケットのロスの確率を従来の通信コントローラと同程度に設定する場合には，パケット記憶部１１４の容量を減らすことができる。パケット記憶部１１４の容量を減らすことにより，通信コントローラ１１０の低価格化を実現することができる。
【００５７】
以上，添付図面を参照しながら本発明の好適な実施形態について説明したが，本発明は係る例に限定されないことは言うまでもない。当業者であれば，特許請求の範囲に記載された範疇内において，各種の変更例または修正例に想到し得ることは明らかであり，それらについても当然に本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施形態にかかる通信コントローラの構成を示すブロック図である。
【図２】同実施の形態におけるパケットの格納状態を示す説明図である。
【図３】同実施の形態におけるデータ格納制御処理を示すフローチャートである。
【図４】同実施の形態におけるデータ格納制御処理を示すフローチャートである。
【図５】同実施の形態におけるデータ格納制御処理を示すフローチャートである。
【図６】同実施の形態におけるデータ格納制御処理を示すフローチャートである。
【図７】同実施の形態におけるデータ格納制御処理を示すフローチャートである。
【図８】同実施の形態における格納データの読み出し状態を示す説明図である。
【図９】従来の無線通信システムを示す説明図である。
【図１０】メッシュネットワークにおける無線通信システムを示す説明図である。
【符号の説明】
【００５９】
１００      通信コントローラ
１０２      パケット長取得部
１０４      パケット長選択部
１０６      パケット長記憶部
１０８      パケット長比較部
１１０      ブロック制御部
１１２      パケット受信部
１１４      パケット記憶部
１１６      パケット読み出し部
１１８      変化検出部
１２０      パケット送出部
【図１】
2006310929.tif 000003
【図２】
2006310929.tif 000004
【図３】
2006310929.tif 000005
【図４】
2006310929.tif 000006
【図５】
2006310929.tif 000007
【図６】
2006310929.tif 000008
【図７】
2006310929.tif 000009
【図８】
2006310929.tif 000010
【図９】
2006310929.tif 000011
【図１０】
2006310929.tif 000012