(57)【要約】【課題】少なくとも一つのデータユニットから構成されるパケットを用いたデータ伝送において、オーバーヘッドを削減する。【解決手段】伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成装置１００であって、送信したパケットに関して受信側から返信される伝送結果（ハンドシェーク４１）を用いて、エラー発生状況をデータユニット単位で監視するエラー発生状況監視部１と、エラー発生状況を用いてエラー発生確率を算出し、パケット長が同じ範囲における、エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、パケットに含める伝送データを分割する分割数を補正データユニット数として算出するユニットサイズ算出部２と、送出対象データ４２と補正データユニット数とを用いて、パケット４３を生成するパケット生成部３と、を備える。【選択図】図２
2010118894.tif 000002
【特許請求の範囲】
【請求項１】
伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成装置であって、
送信したパケットに関して受信側から返信される伝送結果を用いて、エラー発生状況を前記データユニット単位で監視するエラー発生状況監視部と、
前記エラー発生状況を用いてエラー発生確率を算出し、パケット長が同じ範囲における、前記エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、前記パケットに含める伝送データを分割する分割数を補正データユニット数として算出するユニットサイズ算出部と、
伝送対象となるデータと前記補正データユニット数とを用いて、パケットを生成するパケット生成部と、を備えるパケット生成装置。
【請求項２】
前記伝送結果から検出したエラー発生状況を保持するエラー発生状況保持部をさらに備え、
前記エラー発生状況監視部は、前記伝送結果に基づいて、少なくとも、パケット中のデータユニット数、データユニット長、及びエラーが発生したデータユニット数を一組のエラー発生状況として前記エラー発生状況保持部へ格納することを特徴とする請求項１記載パケット生成装置。
【請求項３】
前記ユニットサイズ算出部は、前記データユニット数と前記エラーが発生したデータユニット数に基づいて、前記エラー発生確率を算出し、エラー発生確率に応じて、パケット長が同じ範囲における、データユニット数とオーバーヘッドとの相関関係を算出して前記補正データユニット数を算出することを特徴とする請求項２記載のパケット生成装置。
【請求項４】
前記ユニットサイズ算出部は、前回送信したパケットと同量の伝送データを分割する分割数を前記補正データユニット数として算出することを特徴とする請求項１乃至３のいずれか一項に記載パケット生成装置。
【請求項５】
前記ユニットサイズ算出部は、再送するデータユニットがある場合、データユニットに含める伝送データの長さが、前回送信したデータユニットに含めた伝送データの長さの約数または倍数となるように前記補正データユニット数を算出することを特徴とする請求項４項に記載のパケット生成装置。
【請求項６】
前記エラー発生状況保持部は、複数の伝送結果から検出した複数組のエラー発生状況を保持し、
前記ユニットサイズ算出部は、前記複数組のエラー発生状況のうち、伝送結果が新しいものに重みづけをして前記エラー発生確率を算出することを特徴とする請求項２乃至５のいずれか一項に記載のパケット生成装置。
【請求項７】
前記パケット生成部は、再送する伝送データを含むデータユニットと、新規の伝送データを含むデータユニットとを含むパケットを生成することを特徴とする請求項１乃至６のいずれか一項に記載のパケット生成装置。
【請求項８】
前記ユニットサイズ算出部は、前記エラー発生確率に応じて、前回の送信よりオーバーヘッドを削減するデータユニット数を算出することを特徴とする請求項１乃至７いずれか一項に記載のパケット生成装置。
【請求項９】
前記ユニットサイズ算出部は、パケットの構成に起因する要素と、エラー発生による再送に起因する要素との少なくとのいずれかのオーバーヘッドを削減するデータユニット数を算出することを特徴とする請求項１乃至８いずれか一項に記載のパケット生成装置。
【請求項１０】
前記ユニットサイズ算出部は、前記エラー発生確率が閾値より大きい場合、前回のパケットのデータ長を補正した補正データ長を変更することを特徴とする請求項１乃至９のいずれか一項に記載のパケット生成装置。
【請求項１１】
前記ユニットサイズ算出部は、前記エラー発生確率、パケットのデータ長、及びオーバーヘッドの相関関係に基づいて、パケットのデータ長を算出することを特徴とする請求項１０記載のパケット生成装置。
【請求項１２】
前記ユニットサイズ算出部は、
前記データ発生状況を用いて前記エラー発生確率を算出し、パケット長が同じ範囲における、エラー発生確率を収集する相関関係算出部と、
データユニット数とオーバーヘッドの相関関係を算出ルールとして保持するデータユニット数算出ルール保持部と、
データユニット単位でパケット長が同じ範囲における、データユニット数とエラー発生確率との相関関係、及び、前記データユニット数算出ルールを用いて、次に送信するパケットに含める伝送データを分割する分割数を補正データユニット数として算出するデータユニット数算出部と、を備えることを特徴とする請求項１乃至１１いずれか一項に記載のパケット生成装置。
【請求項１３】
前記パケット長算出ルール保持部は、前記パケット長算出ルールとして、さらに、エラーが発生しなかった場合にデータユニット数を減らすこと、直前直後の伝送結果と比べてエラー検出数が所定の閾値を超えて増加した場合、当該エラー発生状況のデータを無視すること、を保持することを特徴とする請求項１２記載のパケット生成装置。
【請求項１４】
前記エラー発生状況監視部は、前記伝送結果を用いて、伝送エラーとなったデータユニットの位置を検出してエラー発生位置情報を取得し、
前記パケット長算出部は、前記エラー発生確率、前記データパケット数、及びオーバーヘッドの相関関係に加え、前記エラー発生位置情報に基づいて、前記データ長を算出することを特徴とする請求項１乃至１３のいずれか一項に記載のパケット生成装置。
【請求項１５】
伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成方法であって、
送信したパケットに関して受信側から返信される伝送結果を用いて、エラー発生状況を前記データユニット単位で監視し、
前記エラー発生状況を用いてエラー発生確率を算出し、
パケット長が同じ範囲における、前記エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、前記パケットに含める伝送データを分割する分割数を補正データユニット数として算出し、
伝送対象となるデータと前記補正データユニット数とを用いて、パケットを生成するパケット生成方法。
【請求項１６】
伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成プログラムであって、
送信したパケットに関して受信側から返信される伝送結果を用いて、エラー発生状況を前記データユニット単位で監視する手順と、
前記エラー発生状況を用いてエラー発生確率を算出する手順と、
パケット長が同じ範囲における、前記エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、前記パケットに含める伝送データを分割する分割数を補正データユニット数として算出する手順と、
伝送対象となるデータと前記補正データユニット数とを用いて、パケットを生成する手順と、をコンピュータに実行させるパケット生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成装置及び方法に関し、特に、パケットのオーバーヘッドを削減するパケット生成装置及び方法に関する。
【背景技術】
【０００２】
近年、大量のデータをパケットに分割してデータ転送する方式が用いられている。この場合、データをパケットのサイズに応じて分割し、複数のパケットを生成してデータを伝送する。
【０００３】
図２３は一般的に行われているバースト方式でのデータ伝送の様子とパケット構成を示している。図２３では、送信側は、複数のパケット（Ｎ個、Ｎは自然数）を順次送信する。受信側は、Ｎ個のパケットを順次受信し、伝送結果を示すＡｃｋＣｏｄｅを生成し、ハンドシェーク（Handshake）として送信側へ返信する。パケットのデータ形式は、上段に示す構成になっている。具体的には、パケットは、先頭にプリアンブル（Preamble）、ヘッダ（header）があり、その後にデータペイロード（Data Payload）部分、そして最後にデータ伝送エラー検出用のエラー検出用情報（CRC：Cyclic Redundancy Check）が付加されている。このパケットを用いてバースト方式によるデータ伝送を行う場合、送信側では各パケットをある間隔以上空けて送信し、受信側では各パケットのＣＲＣをチェックして各パケットにエラーが無いかどうかを判断する。予め設定した数（ここではＮ個）のデータ伝送が完了したところで、受信側から送信側に対して、各パケットにエラーがあったかどうかをコードで示したハンドシェークパケットを返送する。
【０００４】
図２４はこのデータ伝送においてパケットの一部にエラーが発生した場合に、その情報をハンドシェーク中のコードを用いて送信側に返す様子を示している。エラーがあるパケットがあった場合、例えば図２４に示すようにパケットの順番に対応するコードのビットを'０'にしたハンドシェークを返すことでエラーパケットの再送を要求する。具体的には、受信側は、各パケット内に付加されたＣＲＣにより、各パケットの伝送ＯＫ／ＮＧを判断し、伝送結果を示すＡｃｋＣｏｄｅを生成する。図２４では、２、４、及び７番目のパケットにエラーが発生した場合を示しており、ＡｃｋＣｏｄｅ［７：０］＝０１１０１０１１となっている。受信側は、ＡｃｋＣｏｄｅをハンドシェークとして送信側へ返す。
【０００５】
図１はデータを伝送する場合のパケット構成の他の例であり、一つのパケットのデータ形式を示している。図１に示すパケットは、データが複数のデータペイロードに分割され、それぞれにデータ伝送エラー検出用情報が付加されている。ここでは、データペイロードとＣＲＣとの組み合わせをデータユニットと呼ぶ。図２５はこのデータ形式のデータの伝送において、伝送データにエラーが生じた場合に、エラーが発生したデータユニットを示す情報をハンドシェーク中のコードを用いて送信側に返す様子を示している。図２５では、受信側は、８個のデータユニットから構成されるパケットを受信し、２、４、及び７番目のデータユニットでエラーが発生した例を示している。なお、図中スペースの関係上「ＣＲＣ」を「Ｃ」と省略して示している。
【０００６】
送信側は、ハンドシェークを受け取ると、ＡｃｋＣｏｄｅに従ってエラーが発生した伝送データを再度送信することになる。図２３に示すデータ転送ではエラーが発生したパケットを再送する。これに対し、図１に示すデータ伝送ではエラーが発生したデータユニットを再送する。このように、図２３のデータ構成と図１のデータ構成では、再送する伝送データの単位が異なり、再送するデータ量も相違する。
【０００７】
図１のデータ構成のパケットにおいてエラーが発生した伝送データを再送する手順について、図２６を用いて具体的に説明する。図２６は伝送データにエラーが生じた場合に、分割されたデータのみが再送されている様子を示している。伝送データにエラーが発生した場合、図２３の例では、パケット毎に再送する必要があるが、図１の例では、図２６に示すようにデータユニット毎に再送する伝送データを選択することになる。エラーが発生した伝送データを再送するパケットは、プリアンブル、ヘッダ、及びエラーが発生したデータユニットから構成される。このため、パケット毎に再送する場合に比べ、再送する伝送データ量を削減することができる。伝送データの再送は、伝送効率を低下させる要因の一つであり、再送する伝送データ量を削減することが好ましい。
【０００８】
一つのデータの伝送において、伝送エラー発生時の損失を抑える方法として、例えば、特許文献１に開示されている。特許文献１では、図１に示すように、データペイロード部分を複数のデータユニットに分割し、それぞれにデータ伝送エラー検出用の情報（ＣＲＣ）を付加するパケットを用いる。これにより、パケットに伝送エラーが発生した場合であっても、データにエラーがあるかどうかをデータユニット単位で判断する。そのため、エラーがあるデータをデータユニット単位で再送すれば良く、パケット単位で再送する場合に比べて伝送時の損失が小さい。送信パケットのどのユニットにエラーが発生したかは、図２５に示すように、データユニットの順番をビットの位置に対応させたＡｃｋＣｏｄｅを用い、エラーとなったデータユニットに対応するビットの値を'０'にしたハンドシェークを返すことで、エラーユニットの再送を要求する。
【０００９】
特許文献１の方法では、エラーユニットの再送が要求された場合、送信側からは、図２６に示すように該当するデータユニットを次のパケットにまとめて再送している。あるいは、送信側は単純にパケットを再送し、受信側で前回エラーが発生したブロックまでは受信データを無視し、エラーが発生したブロックから正規の受信処理を再開している。
【００１０】
また、特許文献１または特許文献２に開示された技術では、データユニット（特許文献１の図３、特許文献２の図１）を用いることにより、伝送エラーが発生した場合に、再送するデータ量を分割データ部分だけに絞ることが出来るため、伝送の効率化を図ることができるとしている。しかしながら単に、エラーとなった分割データについて再送する、としているだけであって、そこではエラーの発生状況を把握してそれを以後のデータ伝送に反映するようなことは行われてはいない。
【００１１】
データを複数パケットで伝送する場合、パケット間の最小間隔の制約、各パケットに付加されるプリアンブル、ヘッダなどによるオーバーヘッドが伝送効率に大きく影響する。一般に無線通信の場合は、有線通信の場合に比べエラーの発生確率が高くなる傾向になり、このオーバーヘッドが大きい。そのため伝送効率を上げるには１パケットで伝送するデータのサイズをなるべく大きくしてオーバーヘッド（プリアンブル、ヘッダやパケット間の間隔）の割合を下げる必要がある。しかしながら、データサイズを大きくしてパケット長を長くすればそれだけ伝送中にデータエラーが発生する確率が高くなり、エラー発生に伴う再送データのオーバーヘッドが大きくなる。
【００１２】
プリアンブルやヘッダなどのオーバーヘッドについて具体的に検討する。例えば、図２７はバースト転送における時間的なパラメータとして、無線伝送方式の規格の一つであるＷｉＭｅｄｉａ規格を例に、パケット間ギャップ、パケット内のＰｒｅａｍｂｌｅ／Ｈｅａｄｅｒとペイロードの長さについて示している。ＷｉＭｅｄｉａ規格は、ＵＷＢ（Ultra Wide Band）を用いた伝送方式であり、Ｗｉｒｅｌｅｓｓ  ＵＳＢで採用されている方式である。図２７に基づいて、パケットの構成・パケット間ギャップが伝送効率に寄与する度合を算出すると、データペイロード部分が約６０ｕｓ（データ長３５８４Ｂｙｔｅ、伝送速度４８０Ｍｂｐｓの場合）であるのに対し、パケット間ギャップが最低約１．９ｕｓ、Ｐｒｅａｍｂｌｅ及びＨｅａｄｅｒが約９．４ｕｓであり、約１５％がオーバーヘッドとなっている。
【００１３】
次に、データ再送に伴うオーバーヘッドについて検討する。図２３に示したデータ伝送方式では、パケット長は通常最大値が設定されていて、基本的にはその最大値でデータ伝送が実施されるが、エラー発生が多い場合には適宜パケット長を短くする。一旦短くしたパケット長を長くすることができるかどうかは、パケット長を長くしたパケットを送信しその結果で判断することになる。また、図２３に示した伝送方式では、受信側で伝送したデータにエラーが検出された場合、そのデータは全て破棄する必要があるため、エラーが発生した場合の損失が大きい。そのため、エラーが発生しやすい条件下ではデータサイズを大きくした状態を維持して伝送を継続することは困難で、適宜データサイズを小さくする必要がある。
【００１４】
しかしながら、一体どれくらい小さくすれば良いかは不明であるため、適当にサイズを変更し、変更後のサイズを用いてデータ伝送を行って結果を見るというトライアンドエラーの方法とならざるを得ない。このデータ伝送方式ではエラーとなったデータを破棄するため、エラーとなった場合の損失が大きくなっていた。また、一旦データサイズを小さくした後データサイズを大きくできるかどうかを判断することになるが、データサイズを大きくしてデータ伝送を行ってその結果を見るというトライアンドエラーが必要となる。このため、エラーとなった場合の損失が大きくなっていた。このように伝送条件に合わせて適切なデータサイズを選択するには損失リスクが大きく、伝送環境条件の変化に迅速に追従することが困難で伝送効率を向上し難いという問題があった。
【００１５】
ここで、上述の、パケットがエラーになった場合にそのパケット内のデータを全て破棄する必要がある、という点に関しては、パケット内のデータを図１に示したデータ形式とし分割後のデータユニット単位で再送を行うことで改善することはできる。しかし、図２６に示すように、データ再送時にそのデータ量を削減しているだけという点でその効果の範囲は対象となる１パケットのみであり、複数パケットを使って行われるデータ伝送全体から見れば伝送効率改善の効果は限定的であった。
【特許文献１】特開昭５９−１６７１４４号公報
【特許文献２】特開平５−６６２９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
データ伝送においてエラーが発生した場合、データユニットのサイズを変更することによって、エラー発生確率を改善することが可能である。しかしながら、設定するデータユニットのサイズとして適切な値を伝送環境に応じて迅速に導き出す方法がなかった。このため、データ伝送において、オーバーヘッドが大きくなっているという問題があった。
【課題を解決するための手段】
【００１７】
本発明に係るパケット生成装置の一態様は、伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成装置であって、送信したパケットに関して受信側から返信される伝送結果を用いて、エラー発生状況を前記データユニット単位で監視するエラー発生状況監視部と、前記エラー発生状況を用いてエラー発生確率を算出し、パケット長が同じ範囲における、前記エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、前記パケットに含める伝送データを分割する分割数を補正データユニット数として算出するユニットサイズ算出部と、伝送対象となるデータと前記補正データユニット数とを用いて、パケットを生成するパケット生成部と、を備える。データユニット数算出部は、エラー発生状況を用いて統計処理を実施することによって、伝送環境に応じた補正データユニット数を算出する。これにより、オーバーヘッドを削減することができる。
【００１８】
また、本発明に係るパケット生成方法に置いて、伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成方法であって、送信したパケットに関して受信側から返信される伝送結果を用いて、エラー発生状況を前記データユニット単位で監視し、前記エラー発生状況を用いてエラー発生確率を算出し、パケット長が同じ範囲における、前記エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、前記パケットに含める伝送データを分割する分割数を補正データユニット数として算出し、伝送対象となるデータと前記補正データユニット数とを用いて、パケットを生成する。
【００１９】
さらに、本発明にかかるパケット生成プログラムの一態様は、伝送データとエラー検出用情報とを含むデータユニットから構成されるパケットを生成するパケット生成プログラムであって、送信したパケットに関して受信側から返信される伝送結果を用いて、エラー発生状況を前記データユニット単位で監視する手順と、前記エラー発生状況を用いてエラー発生確率を算出する手順と、パケット長が同じ範囲における、前記エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、前記パケットに含める伝送データを分割する分割数を補正データユニット数として算出する手順と、伝送対象となるデータと前記補正データユニット数とを用いて、パケットを生成する手順と、をコンピュータに実行させる。
【発明の効果】
【００２０】
本発明によれば、少なくとも一つのデータユニットから構成されるパケットを用いたデータ伝送において、オーバーヘッドを削減することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００２２】
本発明は、データペイロードが複数のデータユニットに分割され、各データユニットにエラー検出用情報が付加された構成のパケットを用いるデータ転送方式に適用される。図１に複数のデータユニットを含むパケットの構成例を示す。パケットは、プリアンブル、ヘッダ、及びＮ個のデータユニットを含む。Ｎは、１以上の整数である。データユニットは、データペイロードとデータ検出用情報（以下、適宜「ＣＲＣ」と記す）を含む。大量のデータを伝送する場合、データは複数のデータペイロードに分割されて各データユニットに配置される。なお、図１では、複数のデータユニットを含む構成例を示しているが、パケットは少なくとも一つのデータユニットを含んでいればよい。プリアンブルは、送受信の同期をとるためのフィールド（ビット列）であり、ヘッダは、パケット及びデータユニットなどに関する情報を示すフィールドである。ここでは詳細な説明を省略する。
【００２３】
パケット長は、プリアンブル、ヘッダ及びＮ個のデータユニットを含む長さを指す。パケットのデータ長（「総データ長」ともいう）は、Ｎ個のデータユニットの長さを指し、データユニット長×データユニット数によって算出できる。データユニット長は、一つのデータユニットの長さであり、具体的にはデータペイロードとＣＲＣとを合わせた長さになる。データユニット数は、データユニットの数（Ｎ）である。
【００２４】
以下に説明する実施形態の一態様では、パケットを構成するデータユニットの分割数を適切な値に設定することによって、データ伝送におけるオーバーヘッドの削減を図る。なお、以下の説明では、パケットのデータ長が算出されることによって、パケット長が決定されることになるため、パケットのデータ長とパケット長と厳密に区別しない場合もある。
【００２５】
（実施形態１）
図２は、本発明の実施形態に係るパケット生成装置の構成例を示すブロック図である。パケット生成装置１００は、エラー発生状況監視部１と、ユニットサイズ算出部２及びパケット生成部３を備える。パケット生成装置１００は、ハンドシェーク４１を用いて、送出対象データ４２を含むパケット４３を生成し、送出する。
【００２６】
エラー発生状況監視部１は、受信側から通知されるハンドシェーク４１を用いて、エラー発生状況をデータユニット単位で監視する。ハンドシェーク４１は、伝送したパケットに関する伝送結果であり、データユニット単位のエラー発生状況を含む。監視に用いるハンドシェーク４１は、例えばＡｃｋＣｏｄｅが用いられる。エラー発生状況監視部１は、伝送結果から検出したエラー発生状況をエラー発生状況保持部１１に保持する。このように、エラー発生状況監視部１は、当該送出データに対するハンドシェーク４１から、その送出データのデータユニット単位でのエラー発生状況を把握することができる。
【００２７】
エラー発生状況保持部１１は、エラー発生状況を記録するメモリである。図２は、エラー発生状況監視部１内に配置しているが、これに限られるわけではなく、エラー発生状況監視部１とユニットサイズ算出部２がアクセスできる領域に配置されていればよい。図３にエラー発生状況保持部１１が保持する情報の一例を示す。図３では、送信したパケット中について、パケット内データユニット数、データユニット長、それらを掛けたパケットのデータ長（総データ長）、ＡｃＳＫＣｏｄｅから判断されるデータ伝送に成功・失敗したデータユニットの数（伝送成功データユニット数、伝送失敗データユニット数）、及びデータユニット単位でのエラー発生確率を、パケットＩＤに対応づけて記録する。
【００２８】
図３には示していないが、パケット毎（パケットＩＤ毎）にエラー発生状況を記録したタイムスタンプを記録してもよい。タイムスタンプにより、エラー発生状況を記録してから経過した時間が測れるため、情報の有効性を判断するときに一つの判断項目として用いることができる。
【００２９】
なお、図３は、以降の説明を容易にするため、多くの情報を保持する例を示しているが、少なくとも、パケット内データユニット数、データユニット長、及び伝送エラーデータユニット数を保持していればよい。その他の情報は、これらの情報から算出することが可能である。また、保持する情報を削減することによって、メモリ容量を削減することができる。保持するパケットＩＤの数は、パケット生成装置１００によって適宜決定される。エラー発生状況保持部１１が保持する情報のうち、一部は後述するユニットサイズ算出部２によって算出される。
【００３０】
ユニットサイズ算出部２は、エラー発生状況を用いてエラー発生確率を算出し、パケット長が同じ範囲における、エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、伝送状況に応じたデータユニット数を算出する。算出したデータユニット数を、前回用いたデータユニット数と明確に区別するため、適宜「補正データユニット数」という。また、ユニットサイズ算出部２は、補正データユニット数に応じて、データユニット長を算出する。具体的には、ユニットサイズ算出部２は、前回送信したパケットと同量の伝送データを分割する分割数を補正データユニット数として算出する。すなわち、パケット長が同じ範囲で、データユニット数を変更することによって、エラー発生確率の低下とオーバーヘッドの削減を図る。
【００３１】
ここで、本発明の明細書において「パケット長が同じ範囲」とは、パケットに含まれる伝送データの長さ、具体的には、各データユニットに含まれるデータペイロードの長さの合計が同じであるということを意味する。厳密には、データユニット数に応じてＣＲＣの量（数）が変化するため、パケット長（あるいはパケットのデータ長）も同様に変化する。しかしながら、ＣＲＣの長さは、伝送データの長さに比べると小さいため、パケット長全体としては、ＣＲＣの長さの変化を無視して考えることができる。従って、本明細書では、「パケット長が同じ範囲」という場合、ＣＲＣの長さの変化を無視して考えるものとする。
【００３２】
ユニットサイズ算出部２は、相関関係算出部２１、データユニット数算出ルール保持部２２、及びデータユニット数算出部２３を含む。
【００３３】
相関関係算出部２１は、データ発生状況を用いてエラー発生確率を算出し、パケット長が同じ範囲における、エラー発生確率を監視・収集する。例えば、相関関係算出部２１は、エラー発生状況保持部１１に記録されたエラー発生状況のパケット内データユニット数と伝送エラーデータユニット数とを用いてエラー発生確率を算出し、エラー発生状況保持部１１に記録する。そして、複数のパケットＩＤについて、算出したエラー発生確率とデータユニット数とを対応づけてエラー発生確率を収集する。すなわち、各パケットでのエラー状況の統計を取り、データユニット単位でパケット長が同じ範囲における、データユニット数とエラー発生確率との相関関係を求める。なお、エラー発生確率は、エラー発生状況監視部１が算出し、エラー発生状況保持部１１へ記録する手順を取ってもよい。
【００３４】
データユニット数算出ルール保持部２２は、データユニット数とオーバーヘッドの相関関係を算出ルールとして保持する。算出ルールについては後述する。また、算出ルールはこれらに限られることはなく、補正データ長を算出するための情報であればその他の情報であってもよい。
【００３５】
データユニット数算出部２３は、相関関係算出部２１が算出した、データユニット単位でパケット長が同じ範囲における、データユニット数とエラー発生確率との相関関係、及び、データユニット数算出ルールを用いて、次に送信するパケットに含める伝送データを分割する分割数を補正データユニット数として算出する。具体的には、データユニット数算出部２３は、エラー発生確率に応じて、パケット長が同じ範囲における、データユニット数とオーバーヘッドとの相関関係を算出して補正データユニット数を算出する
【００３６】
パケット生成部３は、補正データユニット数を用いて伝送するデータを分割してデータユニットを生成し、パケットを生成する。パケット生成部３は、データ分割部３１、ＣＲＣ算出部３２、及びパケット送出部３３を含む。
【００３７】
データ分割部３１は、送出対象データ（再送データを含む）を、データユニット長毎にデータユニットの数だけデータを分割する。
【００３８】
ＣＲＣ算出部３２は、各データユニットのＣＲＣを算出する。
【００３９】
パケット送出部３３は、各データユニットとそれぞれのＣＲＣをまとめて１つのパケットを形成して送出する。
【００４０】
次にパケット生成装置の動作について説明する。図４は、パケット生成装置の動作例を示すフローチャートである。図４では、送信側の動作を示している。また、図５はデータユニット数を変化させる例を示す図であり、図１に示すデータ形式のパケット構成例を用いて、データ伝送を行い、伝送エラーが発生した場合のパケット構成例を示す図である。図５では、左側に送信側から伝送するパケット構成を示し、右側に受信側から返信されるハンドシェークを示している。Ｐ１からＰ２はパケットＩＤであり、Ｐ１は、第１のパケット、Ｐ２は第２のパケットである。Ｐはプリアンブル、Ｈはヘッダ、Ｄ及びＱはデータペイロード、ＣはＣＲＣ、ＨＳはハンドシェークを示す。また、Ｌはデータユニットの単位長を示す。Ｄ及びＱに付加している番号は、全データユニット数のうち何番目かを示す値である。また、Ｃ（ＣＲＣ）の番号は第１のパケットから付与した通し番号を示している。なお、図面のスペースの関係上、データペイロードの次に付加されるＣについては、付加される位置を示す枠のみ示し、内容の表示を省略している部分もある。
【００４１】
まず、受信側は、送信側から受信したパケットについて、エラー発生状況を示すＡｃｋＣｏｄｅを生成し、ハンドシェークとして返信する。送信側は、受信側から返信されたハンドシェークを受信する（Ｓ１１）。
【００４２】
図５の例では、最初にデータユニット数が５個のパケットＰ１を送信し、そこでデータユニットＤ２、Ｄ４それぞれのＣＲＣがエラーとなっている。このとき、受信側はエラーとなったデータユニットに対応するビットを'０'としたＡｃｋＣｏｄｅをハンドシェークとして返すことによって送信側にエラーとなったデータユニットの情報を伝える。
【００４３】
送信側では、エラー発生状況監視部１がＡｃｋＣｏｄｅを用いて図３に示すような送信したパケット中のデータユニット数、データユニット長、それらを掛けた総データ長、ＡｃｋＣｏｄｅから判断されるデータ伝送に成功・失敗したデータユニットの数、及びデータユニット単位でのエラー発生確率をエラー発生状況保持部１１に記録する（Ｓ１２）。
【００４４】
ユニットサイズ算出部２の相関関係算出部２１は、エラー発生状況保持部１１に記録されているエラー発生状況を用いて、エラー発生確率を算出する（Ｓ１３）。また、相関関係算出部２１は、エラー発生状況保持部１１が保持するエラー発生状況を用いて、各パケットについて統計処理を行う。具体的には、相関関係算出部２１は、パケット長が同じ範囲における、エラー発生確率を監視（観測）する。具体的には、所定期間のエラー発生確率を収集し、エラー発生確率とデータユニット数との相関関係をデータユニット数算出部２３へ通知する。所定期間は、伝送状況によって変えてもよいし、あらかじめ決められた期間であってもよい。また、エラー発生確率の変化に基づいて、監視する期間を変化させてもよい。
【００４５】
ここで、データユニットとオーバーヘッドの関係について考えてみる。図６に、データユニット数とパケット構成上のオーバーヘッドとの相関関係の例を示す。パケット構成上のオーバーヘッドは、パケットのプリアンブル、ヘッダ及びＣＲＣ、あるいはパケット間最小間隔（パケット間隔）などがある。パケット長が同じ範囲である場合、データユニット数を大きくする（すなわち、データユニット長を小さくする）と、データユニット長に対するＣＲＣの割合が大きくなるため、パケット構成上のオーバーヘッドが大きくなる。また、パケット長が同じ範囲の場合、パケット長とパケット間隔の比（パケット長／パケット間隔）は、変化しないため、オーバーヘッドに影響しない。
【００４６】
図７に、データユニット数とエラー発生・再送によるオーバーヘッドとの相関関係の例を示す。エラー発生・再送によるオーバーヘッドは、エラー発生で生じるデータ再送による損失である。データ伝送エラー発生時の動作を考えた場合、データユニット長の長さに応じて再送する時間が長くなる。このため、データユニット長が長い（データユニット数が小さい）ほどオーバーヘッドが大きくなる。またこのオーバーヘッドは、図７に示すように、エラー発生状況に応じて変わる。すなわち、エラー発生確率が大きい場合は、エラー発生確率が小さい場合に比べてオーバーヘッドが大きくなる。
【００４７】
図６及び図７に示すデータユニット数とオーバーヘッドとの関係は、所定の計算式等によって算出できる関係である。すなわち、一定の関係が予め予測できる関係になる。このため、データユニット数とオーバーヘッドとの関係は、データユニット数算出ルール保持部２２に、データユニット数算出ルールとして保持される。
【００４８】
エラー発生確率とデータユニット数算出ルール（ここではデータユニット数とオーバーヘッドとの関係）に基づき、エラーを考慮した場合のオーバーヘッドとデータユニット数との関係について考えてみると、エラー発生確率が低い場合には図８、エラー発生確率が高い場合には図９に示すような関係が得られる。ここでのオーバーヘッドは、エラー発生・再送によるオーバーヘッドとパケット構成上のオーバーヘッドとを合わせたものである。何れのケースでもオーバーヘッドが極小となる最適データユニット数が存在し、エラー発生確率が低い場合には相対的に大きく、エラー発生確率が高い場合には相対的に長くなる。図８または図９は、一例を示したものでありエラー発生確率によって相関関係が異なってくるものである。これらの相関関係を用いて補正データユニット数が算出される。
【００４９】
データユニット数算出部２３は、相関関係算出部２１が収集したエラー発生確率とデータユニット数との間の相関関係を解析し、データユニット数の変更が必要であるか否かを判断する（Ｓ１４）。
【００５０】
データユニット数の変更が必要であるかを判断する手順として、例えば次のようなルールを用いることができる。（１）エラー発生確率が所定の範囲を超えて上昇した場合、データユニット数を増やす。（２）エラー発生確率が所定の閾値（第一閾値）より大きくなった場合、データユニット数を増やす。（３）エラー発生確率が所定の閾値（第二閾値）より小さい場合、データユニット数を減らす。また、上記（１）から（３）の状況が所定期間続いた場合にデータユニット数を変更するようにしてもよい。
【００５１】
エラー発生確率の解析結果に基づいて、データユニット数を変更しない場合（Ｓ１５でＮｏ）、パケット生成部３は、前回と同じデータユニット数を用いてパケットを生成し（Ｓ１７）、送出させる（Ｓ１８）。
【００５２】
データユニット数を変更する場合（Ｓ１５でＹｅｓ）、データユニット数算出部２３は、データユニット数を算出する（Ｓ１６）。具体的な算出手順は上述した通りである。
【００５３】
続いて、パケット生成部３は、データユニット数算出部２３が算出したデータユニット数（補正データユニット数）を用いてパケットの生成を行う。このとき、パケット長を変更している場合には、変更後のパケット長を用いてパケットの生成を行う（Ｓ１７）。パケット生成部３は、生成したパケットを送出させる（Ｓ１８）。
【００５４】
上述した通り、データ伝送を行った際のデータユニット毎の伝送成功・失敗の記録の統計を取ることで、送信におけるオーバーヘッドを極小化する最適データユニット数（補正データユニット数）を算出することができる。従って、次パケットの送信ではこの最適データユニット数に変更する。なお、統計対象のパケットは、伝送環境の変化に迅速に追従できるように、当該パケットとその直前の少数のパケットに絞り、より直前のパケットの状況がより統計に反映されるように重み付けをすることが望ましい。また、エラー発生状況保持部１１に記録（蓄積）されたエラー発生状況は、所定期間蓄積された後、削除される。
【００５５】
また、環境への追従性を制御するために、例えば以下に示すようなルールをデータパケット数算出ルールに加える方法もある。
（Ｉ）直前のパケットの伝送において、全てのデータユニットでエラーが発生しなかった場合は、当該パケットではデータユニット数を所定数減らした値に変更する、あるいはエラーが発生しなかったときのデータユニット数のうち、最近のデータユニット数と同じ値に変更するなど、パケット構成上のオーバーヘッドを減らすデータユニット数に変更する。
（ＩＩ）直前のパケットの伝送において、伝送に成功したデータユニット数がそれまでの統計による同じデータユニット数に対して著しく悪化した場合は、一時的な現象である可能性を考慮して、データユニット数の変更をスキップする。
【００５６】
さて、図５の例では、第１のパケット（Ｐ１）で、５データユニットの中、２データユニットにエラーが発生している状況である。データユニット数算出部２３は、この結果に基づいて最適データユニット数を算出し、例えば１０という結果になったとする。そこで、パケット生成部３は、次のパケットではデータユニット数を１０に変更し、データユニット長を算出する。そして、パケット生成部３（データ分割部３１）は、パケットに割り当てるデータとして、第１のパケットでエラーとなったデータユニットを先頭から順に割り当て、その後未送信のデータユニットを割り当て、その合計のデータユニット数が変更後のデータユニット数となるように数を調整しパケットを構成する。この例ではＤ２、Ｄ４を先頭から４データユニットとなるＱ０からＱ３へ順に割り当て、その後残り６データユニット分にＱ４からＱ９を新規に追加している。
【００５７】
送信側・受信側双方においてはエラーとなったデータユニットのデータとＡｃｋＣｏｄｅのビットの対応を管理しており、この例では第１のパケットでエラーとなったＤ２のうちの前半は第２のパケットの先頭になるため、ＡＣＫコードのｂｉｔ０、Ｄ２のうちの後半は第２のパケットの２番目になるため、ＡＣＫコードのｂｉｔ１、Ｄ４の前半は第２のパケットでは先頭から３番目になるのでｂｉｔ２、Ｄ４のうちの後半は第２のパケットの４番目になるため、ＡＣＫコードのｂｉｔ３、といった具合である。従って、再送時にデータユニット長が異なる場合にも、受信側は再送されたデータユニットと前回エラーが発生したデータユニットとを対応づけることができる。
【００５８】
第２のパケット（Ｐ２）ではエラーとなったデータユニットが無い。このため、データユニット数算出部２３は、データユニット数算出ルールのうち、上述した（Ｉ）を適用して第３のパケット（Ｐ３）のパケット長を１６に変更する。あるいは、データユニット数算出部２３は、エラーが発生しなかったときに用いるデータユニット数を予め設定しておき、その値を用いてもよい。
【００５９】
図５では、第１のパケット（Ｐ１）は、長さが４Ｌ（Ｌ：単位長）のデータユニットを５個使用してデータ送信を行っている。Ｄ２、Ｄ４のそれぞれのＣＲＣでエラーが発生しているため、データユニット数算出部２３は、この結果に基づいて、データユニット数を算出する。このとき、再送するデータユニットが存在するため、データユニット数算出部２３は、データユニットに含める伝送データの長さが、前回送信したデータユニットに含めた伝送データの長さの約数または倍数となるように前記補正データユニット数を算出する。図５では、４Ｌから２Ｌになるようにデータユニット数を算出している。このとき、データユニット数を変更しているが、パケット長は前回のパケット長と同じ範囲、すなわち、ＣＲＣの長さによる変化が生じるだけであり、パケットに含まれる伝送データの総量（各データユニットに含まれるデータペイロードの合計）は同じとなっている。
【００６０】
図５の説明では、データ長とエラー発生確率の相関関係を求める方法において、送信パケット中でエラーとなったデータユニットの数だけを考慮したが、エラーの発生位置に偏りや傾向があるかどうかを分析し、それらの情報も含めて最適データ長を算出することもできる。例えば送信パケットの後半にエラー発生位置が偏っていれば、データ長をエラー発生が発生しない長さにまで小さくすることでエラーが非常に少ない伝送を行うことができるようになる。ここでは詳細な方法については省略する。
【００６１】
以上説明したように、パケットによるデータ伝送において、伝送環境に応じてオーバーヘッドが極小となるようにデータユニット数を調整しながら伝送を行うことで、データ伝送効率の向上を図ることができる。具体的には、データペイロードが適切な長さのデータユニットに分割され、それぞれにＣＲＣが付加されている形式のパケットを用いるデータ伝送方式において、パケット送信時の各データユニットのエラー発生状況に基づいてデータユニット数、オーバーヘッド及びエラー発生確率の相関関係を導き出し、そこから送信時のオーバーヘッドが極小となる最適データユニット数を算出し、パケット長が同じ範囲において、次に送信するパケットにおけるデータユニット数を、算出した最適データユニット数に変更することにより実現する。
【００６２】
より具体的には、データペイロードが複数のユニットに分割され、各ユニットに転送エラー検出用の情報（ＣＲＣ）が付加された構成のパケットによるデータ伝送処理において、伝送時にエラーが発生したユニット数の状況を監視し、その情報に基づいて伝送時のオーバーヘッドが極小となる最適データユニット数を算出し、それに合わせて次パケットのデータユニット数を調整することで伝送効率の向上を図る。
【００６３】
また、上述のパケット構成によるデータ伝送では、伝送エラー発生時にエラーとなったユニットのみ再送することで伝送損失を少なく抑えることができるという特徴があり、これを活かし、エラー発生状況に応じたデータユニット数の調整を加えることで、伝送損失を抑えつつパケット長をなるべく長くしてパケット間ギャップやＰｒｅａｍｂｌｅ、Ｈｅａｄｅｒを少なくすることによる伝送効率の更なる向上を図る。特に、再送する伝送データを含むデータユニットと新規の伝送データを含むデータユニットとから構成されるパケットを生成することによって、パケット間ギャップやＰｒｅａｍｂｌｅ、Ｈｅａｄｅｒなどのオーバーヘッドを削減し、伝送効率の更なる向上を図ることができる。
【００６４】
（実施形態２）
実施形態１では、データユニット数の変更を実施する場合を説明した。本実施形態では、データユニット数に加え、エラー発生確率に応じて、パケット長を変更する態様を説明する。図１０は、実施形態２のパケット生成装置の構成例を示すブロック図である。パケット生成装置１００ｂは、パケット長算出ルール保持部２４とパケット長算出部２５を追加し、相関関係算出部２１ｂとデータユニット数算出部２３ｂの機能を追加・変更している。
【００６５】
パケット長算出ルール保持部２４は、データ長とオーバーヘッド、及び、エラー発生確率とオーバーヘッドとの相関関係を算出ルールとして保持する。パケット長算出ルールは、これらに限られることはなく、エラー発生確率に応じて、データ長を変更するルールを保持していてもよい。
【００６６】
パケット長算出部２５は、エラー発生確率とデータ長との相関関係に、算出ルールを適用して補正データ長を算出する。
【００６７】
相関関係算出部２１ｂは、実施形態１の機能に加え、データ長とエラー発生確率の相関関係を算出する機能を備える。
【００６８】
データパケット数算出部２３ｂは、データ長の変更の有無を判断し、データ長を変更する場合、変更後のデータ長（補正データ長）を用いてデータユニット数を決定する。
【００６９】
続いて本実施形態の動作を説明する。図１１は、実施形態２のパケット生成装置の動作例を示すフローチャートである。図４のフローチャートへステップＳ２２、Ｓ２３を追加し、ステップＳ２１、Ｓ２４の動作を変更している。以下、実施形態１と異なる点を中心に説明する。
【００７０】
データユニット数算出部２３ｂは、相関関係算出部２１ｂが収集したエラー発生確率とデータユニット数との間の相関関係を解析し、データユニット数の変更が必要であるか否かを判断し、データユニット数を変更する場合、さらにパケット長の変更が必要であるかを判断する（Ｓ２１）。
【００７１】
データユニット数の変更が必要であるかを判断する手順は、実施形態１と同様に、（１）から（３）を用いることができる。
【００７２】
また、パケット長を変更するか否かを判断する手順として、例えば次のようなルールを用いることができる。（４）エラー発生確率が所定の範囲を超えて上昇した場合、パケット長を短くする。（５）エラー発生確率が所定の閾値（第三閾値）より大きくなった場合、パケット長を短くする。（６）エラー発生確率が所定の閾値（第四閾値）より小さい場合、パケット長を長くする。また、上記（４）から（６）の状況が所定期間続いた場合にパケット長を変更するようにしてもよい。
【００７３】
エラー発生確率の解析結果に基づいて、データユニット数を変更しない場合（Ｓ１５でＮｏ）、パケット生成部３は、前回と同じデータユニット数及びパケット長を用いてパケットを生成し（Ｓ２５）、送出させる（Ｓ１８）。
【００７４】
データユニット数とパケットのデータ長を変更する場合（Ｓ１５及びＳ２２でＹｅｓ）、データユニット数算出部２３ｂは、パケット長算出部２５へパケットのデータ長の算出を指示し、パケット長算出部２５は、指示に基づいてパケットのデータ長を算出する（Ｓ２３）。パケット長算出部２５は、相関関係算出部２１ｂに対して、パケットのデータ長を算出するために相関関係の算出を要求し、取得した相関関係とパケット長算出ルール保持部２４に保持するパケット長算出ルールとを用いてパケットのデータ長を算出する。パケットのデータ長の算出手順については後述する。
【００７５】
続いて、データユニット数算出部２３ｂは、データユニット数を変更する場合（Ｓ１５でＹｅｓかつＳ２２でＮｏ、または、Ｓ１５及びＳ２２でＹｅｓ）、データユニット数を算出する（Ｓ２４）。このとき、パケット長が変更されている場合、データユニット数は、前回のパケットと同じデータユニット長になるようにデータユニット数を算出してもよいし、デフォルト値を用いてもよい。さらに、エラー発生状況を用いて新たなパケットデータ長における、エラー発生確率の統計処理を実施し、データパケット数を算出してもよい。
【００７６】
パケット生成部３は、データユニット数算出部２３ｂが算出したデータユニット数（補正データユニット数）を用いてパケットの生成を行う。このとき、パケットのデータ長を変更している場合には、変更後のパケットのデータ長を用いてパケットの生成を行う（Ｓ２５）。パケット生成部３は、生成したパケットを送出させる（Ｓ１８）。
【００７７】
ここで、データ長の算出手順について説明する。データユニット数算出部２３ｂからの指示に基づいて、パケット長算出部２５は、相関関係算出部２１ｂへデータ長とエラー発生確率との間の相関関係を算出するように指示する。相関関係算出部２１ｂは、エラー発生状況保持部１１に保持するエラー発生状況を用いて、各パケットについて統計処理を行う。このとき、相関関係算出部２１ｂは、パケット長が異なるパケットのエラー発生確率とデータ長との統計処理を行う。これにより、相関関係算出部２１ｂは、データ長とエラー発生確率との間の相関関係を求めることができる。例えば図１２に示すような関係となる。
【００７８】
ここで、エラー発生確率とオーバーヘッドの関係について考えてみると、オーバーヘッドとしてはエラー発生で生じるデータ再送による損失がある。すなわち、エラー発生・再送によるオーバーヘッドである。エラー発生確率とオーバーヘッドの関係は、例えば図１３のような関係になる。また、データ長とオーバーヘッドの関係について考えてみると、オーバーヘッドとしてはパケットのプリアンブル、ヘッダ及びＣＲＣ、あるいはパケット間最小間隔（パケット間隔）などがある。すなわち、パケット構成上のオーバーヘッドである。例えば、パケット長が異なると、パケット間隔とパケット長の比（パケット間隔／パケット長）が異なってくるため、パケット長が小さくなるとパケット間隔がオーバーヘッドに与える影響も大きくなる。データ長とオーバーヘッドの関係は、エラーが全く無い場合には例えば図１４のような関係になる。
【００７９】
エラー発生確率とオーバーヘッドの関係及びデータ長とオーバーヘッドの関係は、所定の計算式等によって算出できる関係である。すなわち、一定の関係が予め予測できる関係になる。このため、エラー発生確率とオーバーヘッドの関係及びデータ長とオーバーヘッドの関係は、パケット長算出ルール保持部２４に、パケット長算出ルールとして保持することができる。
【００８０】
一方、エラー発生確率とオーバーヘッドの関係は、伝搬状況等の通信環境により変動する関係にある。そのため、相関関係算出部２１ｂは、エラー発生状況保持部１１に所定期間記録されたエラー発生状況を統計処理することによってエラー発生確率とオーバーヘッドの関係を算出する。
【００８１】
そしてこれらの関係に基づき、エラーを考慮した場合のデータ長とオーバーヘッドの関係について考えてみると、エラー発生確率が高い場合には図１５、エラー発生確率が低い場合には図１６に示すような関係が得られる。ここでのオーバーヘッドは、エラー発生・再送によるオーバーヘッドとパケット構成上のオーバーヘッドとを合わせたものである。何れのケースでもオーバーヘッドが極小となる最適データ長が存在し、エラー発生確率が高い場合には相対的に短く、エラー発生確率が低い場合には相対的に長くなる。図１５または図１６は、一例を示したものでありエラー発生確率によって相関関係が異なってくるものである。
【００８２】
パケット長算出部２５は、相関関係算出部２１ｂが算出したデータ長とエラー発生確率との間の相関関係と、パケット長算出ルールとを用いて、パケットのデータ長を算出する。具体的には、パケット長算出部２５は、エラー発生確率に応じて、図１５または図１６に一例を示した相関関係を算出し、パケットのデータ長を算出する。
【００８３】
図１７にデータユニット数とパケットのデータ長とを変化させる一例を示す。図１７は、図５と同様の記号等を用いて表している。第１のパケット（Ｐ１）では長さが４Ｌ（Ｌ：単位長）のデータユニットを６個使用してデータ送信を行っている。Ｄ２、Ｄ４のそれぞれのＣＲＣでエラーが発生している。図１７は、データユニット数算出部２３ｂが、パケットのデータ長の変更を決定した場合である。パケット長算出部２５が、エラー発生状況に基づいて最適データ長を算出すると、例えば１８．３Ｌ（Ｌ：単位長）になったとする。ここで、データユニット長が長いとそのデータユニットが伝送エラーとなった時の損失が大きいため、データユニット数算出部２３ｂは、データユニット長を小さくし、データユニット長を２Ｌ、データユニット数を９とし総データ長１８として最適データ長に合わせるようにデータユニット長とデータユニット数とを変更する。データユニット数算出部２３ｂは、エラーとなったデータユニットの再送を考慮して、変更後のデータユニット長を変更前のデータユニット長の約数になるようにすると都合が良い。この例では第１のパケットのデータユニット長は４Ｌであるため、パケット長算出部２５は、変更後のデータユニット長は１Ｌあるいは２Ｌと都合が良く、ここでは２Ｌとしている。
【００８４】
ここで、上記ではデータユニット長の約数として説明したが、ＣＲＣの長さは所定の長さに固定されているため、厳密には、変更後のデータユニットに含まれるデータペイロードの長さが、変更前のデータユニットに含まれていたデータペイロードの長さの約数、あるいは倍数になる必要がある。説明をわかりやすくするため、ここではデータユニット長を用いて説明している。
【００８５】
第２のパケット（Ｐ２）では、パケット生成部３は、第１のパケットの送信でエラーとなったＤ２、Ｄ４に対応するデータを先頭から順に割り当てている。なお、データユニット長を変更しているため、第１のデータユニット中のデータを、Ｄ２はＱ０とＱ１、Ｄ４はＱ２とＱ３にそれぞれ分割している。Ｄ２の長さは（Ｑ０＋Ｑ１）、Ｄ４の長さは（Ｑ２＋Ｑ３）である。パケット生成部３は、この再送データＱ０〜Ｑ３に引き続いて新規データとしてＱ４〜Ｑ８を割り当てて第２のパケットを構成している。
【００８６】
第２のパケットの送信ではＱ２、Ｑ６、Ｑ７にエラーが発生している。その結果、データユニット数算出部２３ｂは、パケットのデータ長の変更を決定し、パケット長算出部２５は、最適データ長を９．８と算出する。また、データユニット数算出部２３ｂは、今度は更にデータユニット長を小さくし、第３のパケットのデータユニット長を１Ｌ、データユニット数を１０に変更する。パケット長算出部２５は、第３のパケットの送信結果に基づいた第４のパケットの最適データ長を８．５と算出する。ここでは、データユニット数算出部２３ｂは、データユニット長を１Ｌのまま変更せず、データユニット数を９に変更する。
【００８７】
なお、上記説明では、図１０の構成を用いて図１１の動作を行う場合を説明したが、この構成に限られることはなく、実施形態１に示した各構成要素が実現する場合であってもかまわない。また、データユニット数算出部２３ｂがパケットのデータ長を変更するか否かを判断する場合を説明したが、相関関係算出部２１ｂがエラー発生状況に基づいて判断するような構成であってもよい。
【００８８】
このように、本実施形態によれば、実施形態１の効果に加え、エラー発生確率に応じて、データユニット数とパケットのデータ長とを変更するため、より適切に伝搬状況に対応したパケットを生成することが可能になる。これにより、オーバーヘッドを削減し、伝送効率を向上させることが可能になる。
【００８９】
（その他の実施形態）
上記各実施形態において、データユニット数算出ルール保持部２２に保持するデータユニット数算出ルールの一例を説明したが、さらに次のルールをデータユニット数算出ルールとして追加してもよい。また、パケット長算出ルール保持部２４に保持するパケット長算出ルールに追加してもよい。
・統計を取るパケット数がある所定の数（例えば１０）に達するまではデータユニット数またはデータ長の変更は行わない。
・データユニット数またはデータ長の変更を行う頻度をある所定の数（例えば２）のパケット毎に行う。
・データ長、データユニット数、データユニット長に関する統計データの収集のため、時折、最適では無くても、それらのパラメータを振ったパケットを生成して転送する。
・算出される最適データユニット数または最適データ長が大きく変化しなくなった場合、（それが実際の最適値では無い極値に陥っている可能性を考えて）時折データユニット数またはデータ長をランダムに変更して転送する。
・直前に行われたデータ転送から時間が大きく経過している場合は、統計データを一旦破棄し、当該パケットのデータユニット数またはデータ長を所定の（大きな）値に設定し転送する。
【００９０】
ここで、上記各実施形態のいずれかの態様で生じる効果について特許文献１に開示された技術と比較して説明する。本実施形態と同様のパケット構成を用い、特許文献１に開示された技術を用いて、受信側からエラーが通知されたデータユニットを再送する場合、データ長を変化させる動作例を図１８、図１９に示した。図１８はデータ伝送中にデータユニット数を変更する動作例を示し、図１９はデータ伝送中にデータユニット長を変更する動作例を示す。図１８、２０では、図５と同様の記号等を用いている。また、Ｕは１つのデータユニットの単位を示す。データ伝送中にパケット長の変更を行う際にもし伝送エラーが発生した場合、特許文献１に開示された技術では、まずエラーが発生したデータユニットを再送する手順である。従って、図１８に示すように、まずエラーとなったユニットの再送を完了させる。その後データユニット数を変更してパケット長を変更することになる。同様に、データ伝送中にデータユニット長（ユニットのサイズ）を変更するときに、その前に伝送したパケットについて伝送エラーが発生した場合、図１９に示すように、まずエラーとなったデータユニットの再送を完了させる。その後データユニット長を変更することになる。
【００９１】
これに対し、上記各実施形態のうちのいずれかのパケット生成装置及び方法では、エラーの発生状況について統計を取り、その結果に基づいて以後のデータ伝送の効率化を図ることができる。エラー発生状況を監視し、適切なデータユニット数またはデータ長を算出する。具体的には、伝送エラーの状況から現在の伝送環境においてオーバーヘッドが極小となるデータユニット数を算出し、次のデータ伝送にそれを反映させている。あるいは、適切なデータ長を算出し、算出したデータ長における適切なデータユニット数を算出し、次のデータ伝送に反映させている。具体的な動作としては、図５に示すように、エラー発生確率に応じてデータユニット数を調整している。あるいは、図１７に示すように、エラー発生確率が高い状態が続く場合、データ長を短くし、データユニット数を増やしている。また図面には示していないが、エラー発生確率が低い場合、データユニット数を減らす、あるいは、データ長を長くするなどの調整を実施する。
【００９２】
また、図５または図１７では、再送する伝送データと新規に伝送するデータとを用いて一つのパケットを生成しているため、パケット長に対するオーバーヘッドの割合が小さくなる。具体的にはプリアンブルとヘッダの割合を小さくすることが可能である。これにより、パケットを伝送する際のオーバーヘッドを削減し、伝送効率を向上させることができる。
【００９３】
さらに、上記各実施形態では、データ伝送においてエラーが発生した場合のデータ再送において、エラーが発生したパケットのみに着目するのではなく、データ伝送全体からオーバーヘッドを削減することが可能となる。図２０は、送信側から伝送されるパケットと受信側の伝送データ処理との動作例を示した図である。エラー発生確率によってデータ長を変更することがオーバーヘッドにどう影響してくるかについて、図２０を用いて検討する。定性的には以下のように考えれば良い。すなわち、エラー発生確率が低い場合は、一つのパケットにデータペイロード分割した伝送データをなるべく多く入れた方がパケット間最小間隔やパケットのプリアンブル、ヘッダなどの影響が小さくなるので全体としてオーバーヘッドが小さくなるのは明らかである。他方、エラー発生確率が高い場合については図２０を使って具体的に説明する。
【００９４】
図２０において、（ａ）は１パケットに１２個の分割データ、（ｂ）は１パケットに４個の分割データで構成されている場合を示している。また、図２０では、４分割データ毎に１回の割合、ほぼ均等にエラーが発生している状況を想定している。図２０の例では１パケットに入れる分割データの数は小さい方が有利となっている。これは、受信側処理では、分割データにエラーがあった場合、それを次のパケットで送られてくるまで処理を待つ必要があるためであり、パケット長が長ければそれだけ待ち時間が長くなることによる。このように、エラー発生により再送する場合のオーバーヘッドは伝送路上だけでは無く、データ受信側の処理も含めて考える必要がある。
【００９５】
図２０で示したように、伝送エラー発生確率によってデータユニット数またはデータ長を調整するようにすれば伝送効率の向上を図ることが可能になる。伝送エラー発生確率を迅速に算出するには、上記各実施形態で説明した手段・手順の一態様を備える必要がある。上記各実施形態の一態様では、伝送エラーの発生確率を１パケットの送出と、それ以前の少数のパケット送出の結果の統計に基づいて補正データユニット数または補正データ長を算出している。このため、伝送環境の変化への追従性が高い。多数のパケットの送出結果の統計を取らないとエラー発生確率を求めることが出来ない方法に比べ、伝送環境への追従性が高くなるため、伝送効率の向上がより期待できる。従って、上記各実施形態は、エラー発生確率が高く、伝送環境が変化しやすい無線環境に適用することが好ましい。
【００９６】
また、上記各実施形態で説明したパケット生成装置及び方法は、プログラムによって実現することも可能である。プログラムは、コンピュータに読み取り可能な記録媒体に記録される。コンピュータは、記録媒体に記録されたプログラムを読み出し、メモリにロードし、ＣＰＵ（Central Processing Unit）の制御のもとで実行される。プログラムは、例えば少なくとも次の手順をコンピュータに実行させる。
【００９７】
送信したパケットに関して受信側から返信される伝送結果を用いて、エラー発生状況をデータユニット単位で監視する手順。エラー発生状況を用いてエラー発生確率を算出する手順。パケット長が同じ範囲における、エラー発生確率、データユニット数、及びオーバーヘッドの相関関係に基づいて、パケットに含める伝送データを分割する分割数を補正データユニット数として算出する手順。伝送対象となるデータと前記補正データユニット数とを用いて、パケットを生成する手順。
【００９８】
（実施例）
本発明の一態様を適用したコントローラチップの一例を図２１に示す。コントローラチップ２００は、ＰＣＩバス３００を介して、ホストシステム４００と接続する。図２１では、コントローラチップ２００は、外部バス制御２０１、データ保持用ＲＡＭ２０２、ＲＯＭ／ＲＡＭ２０３、演算回路２０４、転送制御部２０５、伝送情報保持用ＲＡＭ２０６、Serial Interface Engine２０７、CRC generator /checker２０８、Serializer /Deserializer２０９、及び送受信回路２１０を備える。
【００９９】
外部バス制御２０１は、ＰＣＩバス３００を介してホストコンピュータと情報を送受信する。データ保持用ＲＡＭ２０２は、コントローラチップ２００内の処理中に必要な情報を一時的に保持する。ＲＯＭ／ＲＡＭ２０３は、演算回路２０４が実行する命令群（プログラム）やデータユニット数算出ルールまたはパケット長算出ルールを記録する。演算回路２０４は、ＲＯＭ／ＲＡＭ２０３に記録する命令群を実行する。転送制御部２０５は、パケットの転送を制御する。また、受信したハンドシェークを解析する。伝送情報保持用ＲＡＭ２０６は、エラー発生状況情報を保持する。Serial Interface Engine２０７は、パケット転送の送受信制御、プロトコル制御を行う。CRC generator /checker２０８は、ＣＲＣを生成・チェックを行う。Serializer /Deserializer２０９は、パケットのパラレル・シリアル変換とコード変換、Deserializerは更に受信エラー検出を行う。送受信回路２１０は、受信側との送受信のインターフェースである。
【０１００】
図２に示す構成と対応づけると、エラー発生状況監視部１は、転送制御部２０５によって実現される。ユニットサイズ算出部２の各構成要素は、ＲＯＭ／ＲＡＭ２０３と演算回路２０４によって実現される。パケット生成部３において、データ分割部３１は、ＲＯＭ／ＲＡＭ２０３と演算回路２０４、ＣＲＣ算出部３２はCRC generator /checker２０８、パケット送出部３３は、送受信回路２１０によってそれぞれ実現される。また、例えば、パケット長算出ルールは、ＲＯＭ／ＲＡＭ２０３に記憶するファームウェアで実現すると、プログラム次第でルールの変更が容易になる。これに対し、パケット長算出ルールが固定されている場合、ファームウェアで実現することもできるし、ハードウェアで実現することも可能になる。
【０１０１】
また、図２１に示したコントローラチップの利用した通信システムの一例を図２２に示す。図２２において、(ａ)は、有線通信の構成例、（ｂ）は、無線通信の構成例を示している。図２２では、図２１に示したコントローラチップ２００は、コンピュータ５００内部に搭載されている。コンピュータ５００と周辺機器７００とはハブ６００を介して伝送路でデータを伝送する構成となっている。周辺機器としては、例えばプリンタなどである。
【０１０２】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【０１０３】
【図１】複数のデータユニットを含むパケット構成例の一例を示す図である。
【図２】本発明の実施形態に係るパケット生成装置の構成例を示すブロック図である。
【図３】エラー発生状況保持部が保持する情報の一例を示す図である。
【図４】パケット生成装置の動作例を示すフローチャートである。
【図５】データユニット数を変化させる例を示す図である。
【図６】データユニット数とパケット構成上のオーバーヘッドとの相関関係の一例を示す図である。
【図７】データユニット数とエラー発生・再送によるオーバーヘッドとの相関関係の一例を示す図である。
【図８】エラー発生確率が低い場合のオーバーヘッドとデータユニット数との関係の一例を示す図である。
【図９】エラー発生確率が高い場合のオーバーヘッドとデータユニット数との関係の一例を示す図である。
【図１０】実施形態２のパケット生成装置の構成例を示すブロック図である。
【図１１】実施形態２のパケット生成装置の動作例を示すフローチャートである。
【図１２】データ長とエラー発生確率の関係の一例を示す図である。
【図１３】エラー発生確率とオーバーヘッドの関係の一例を示す図である。
【図１４】伝送エラーが無い場合のデータ長とオーバーヘッドの関係の一例を示す図である。
【図１５】伝送エラー発生確率が比較的大きい場合のデータ長とオーバーヘッドの関係の一例を示す図である。
【図１６】伝送エラー発生確率が比較的少ない場合のデータ長とオーバーヘッドの関係の一例を示す図である。
【図１７】データユニット数とパケットのデータ長とを変化させる例を示す図である。
【図１８】特許文献１に開示された技術を用いて、受信側からエラーが通知されたデータユニットを再送する場合、データ伝送中にデータユニット数を変更する動作例を示す図である。
【図１９】特許文献１に開示された技術を用いて、受信側からエラーが通知されたデータユニットを再送する場合、データ伝送中にデータユニット長を変更する動作例を示す図である。
【図２０】送信側から伝送されるパケットと受信側の伝送データ処理との動作例を示した図であり、（ａ）は１パケットに１２個の分割データ、（ｂ）は１パケットに４個の分割データで構成されている場合を示している。
【図２１】本発明の一態様を適用したコントローラチップの一例を示す図である。
【図２２】図２１に示したコントローラチップの利用した通信システムの一例を示す図である。
【図２３】一般的に行われているバースト方式でのデータ伝送の様子とパケットの構成を示す図である。
【図２４】データ伝送においてパケットの一部にエラーが発生した場合に、その情報をハンドシェーク中のコードを用いて送信側に返す様子を示す図である。
【図２５】図１に示すパケットのデータ伝送においてパケットの一部にエラーが発生した場合に、その情報をハンドシェーク中のコードを用いて送信側に返す様子を示す図である。
【図２６】図１のデータ構成のパケットにおいて、伝送データにエラーが生じた場合に、分割されたデータのみが再送される様子を示す図である。
【図２７】パケット間のギャップとパケット内の構成例を示す図である。
【符号の説明】
【０１０４】
１  エラー発生状況監視部
２、２ｂ  ユニットサイズ算出部
３  パケット生成部
２１、２１ｂ  相関関係算出部
２２  データユニット数算出ルール保持部
２３、２３ｂ  データユニット数算出部
２４  パケット長算出ルール保持部
２５  パケット長算出部
３１  データ分割部
３２  ＣＲＣ算出部
３３  パケット送出部
１００、１００ｂ  パケット生成装置
２００  コントローラチップ
２０１  外部バス制御
２０２  データ保持用ＲＡＭ
２０３  ＲＯＭ／ＲＡＭ
２０４  演算回路
２０５  転送制御部
２０６  伝送情報保持用ＲＡＭ
２０７  Serial Interface Engine
２０８  CRC generator /checker
２０９  Serializer /Deserializer
２１０  送受信回路
３００  ＰＣＩバス
４００  ホストシステム
５００  コンピュータ
６００  ハブ
７００  周辺機器
【図１】
2010118894.tif 000003
【図２】
2010118894.tif 000004
【図３】
2010118894.tif 000005
【図４】
2010118894.tif 000006
【図５】
2010118894.tif 000007
【図６】
2010118894.tif 000008
【図７】
2010118894.tif 000009
【図８】
2010118894.tif 000010
【図９】
2010118894.tif 000011
【図１０】
2010118894.tif 000012
【図１１】
2010118894.tif 000013
【図１２】
2010118894.tif 000014
【図１３】
2010118894.tif 000015
【図１４】
2010118894.tif 000016
【図１５】
2010118894.tif 000017
【図１６】
2010118894.tif 000018
【図１７】
2010118894.tif 000019
【図１８】
2010118894.tif 000020
【図１９】
2010118894.tif 000021
【図２０】
2010118894.tif 000022
【図２１】
2010118894.tif 000023
【図２２】
2010118894.tif 000024
【図２３】
2010118894.tif 000025
【図２４】
2010118894.tif 000026
【図２５】
2010118894.tif 000027
【図２６】
2010118894.tif 000028
【図２７】
2010118894.tif 000029