以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の受信装置(例えば、図7のパーソナルコンピュータ1)は、アプリケーション層からの要求に応じて受信した第1のパケット(例えば、パケット)の数が、第1のパケットから第1のパケットよりも格納されるデータのサイズの大きい第2のパケット(例えば、ジャンボパケット)を生成するときの、第1のパケットの数である第1の閾値(例えば、パケット組上数)を超えるか否かを判定する第1の判定手段(例えば、図7のパケット組上数判定部121)と、第1の閾値を超えないと判定された場合、1つ前の第1のパケットを受信してからタイムアウトまでの所定の時間(例えば、タイムアウト時間)を経過したか否かを判定する第2の判定手段(例えば、図7のタイムアウト時間判定部122)と、所定の時間が経過したと判定された場合、所定の時間を連続で経過した回数が、許容しているタイムアウトの回数である第2の閾値(例えば、タイムアウト回数)を超えるか否かを判定する第3の判定手段(例えば、図7のタイムアウト回数判定部123)と、第2の閾値を超えると判定された場合、第2のパケットを生成するときの第1のパケットの数を減じるように第1の閾値を設定する第1の設定手段(例えば、図7のパケット組上数設定部124)とを備える。
第2の閾値を超えないと判定された場合、受信した第1のパケットから第2のパケットを生成し、アプリケーション層に処理を受け渡す処理を行う処理手段(例えば、図7のパケット処理部125)を備えるようにすることができる。
第1の設定手段は、第2の閾値を超えると判定された場合、第2のパケットを生成するときの第1のパケットの数から1を減じるように第1の閾値を設定するようにすることができる。
要求に応じて、第1の閾値、第2の閾値、および所定の時間の初期値を設定する第2の設定手段(例えば、図7の初期値設定部111)を備え、第1の判定手段は、アプリケーション層からの要求に応じて受信した第1のパケットの数が、設定された第1の閾値を超えるか否かを判定し、第2の判定手段は、第1の閾値を超えないと判定された場合、1つ前の第1のパケットを受信してから設定された所定の時間を経過したか否かを判定し、第3の判定手段は、所定の時間が経過したと判定された場合、所定の時間を連続で経過した回数が、設定された第2の閾値を超えるか否かを判定するようにすることができる。
本発明の一側面の受信方法またはプログラムは、アプリケーション層からの要求に応じて受信した第1のパケット(例えば、パケット)の数が、第1のパケットから第1のパケットよりも格納されるデータのサイズの大きい第2のパケット(例えば、ジャンボパケット)を生成するときの、第1のパケットの数である第1の閾値(例えば、パケット組上数)を超えるか否かを判定する第1の判定ステップ(例えば、図12のステップS133の処理)と、第1の閾値を超えないと判定された場合、1つ前の第1のパケットを受信してからタイムアウトまでの所定の時間(例えば、タイムアウト時間)を経過したか否かを判定する第2の判定ステップ(例えば、図12のステップS137の処理)と、所定の時間が経過したと判定された場合、所定の時間を連続で経過した回数が、許容しているタイムアウトの回数である第2の閾値(例えば、タイムアウト回数)を超えるか否かを判定する第3の判定ステップ(例えば、図12のステップS138の処理)と、第2の閾値を超えると判定された場合、第2のパケットを生成するときの第1のパケットの数を減じるように第1の閾値を設定する設定ステップ(例えば、図12のステップS140の処理)とを含む。
本発明の一側面のプログラムは、記録媒体(例えば、図13のリムーバブルメディア221)に記録することができる。
以下、図面を参照しながら本発明の実施の形態について説明する。
図1は、本発明を適用したパーソナルコンピュータ1のハードウェアの構成の例を示すブロック図である。
このパーソナルコンピュータ1は、ネットワーク2に接続されている。パーソナルコンピュータ1は、ネットワーク2に接続された他の機器から送信されてくるAVデータなどのデータを、例えば、TCP/IPなどのプロトコルに従って受信する、本発明の受信装置の一例である。なお、パーソナルコンピュータ1は、データを受信するだけでなく、データを送信するようにしてもよいので、以下、データの送信と受信の両方の場合について説明する。
パーソナルコンピュータ1は、CPU11、PCI(Peripheral Component Interconnect)バスコントローラ12、RAM(Random Access Memory)13、データ処理部14、AVデータバッファ15、送受信バッファ16、PHY17(以下、物理層回路17と称する)、MAG18(以下、パルストランス18と称する)、およびRJ-4519(以下、コネクタ19と称する)を含むようにして構成される。
CPU11は、パーソナルコンピュータ1の各部を制御する。また、CPU11は、後述するROM(Read Only Memory)212または記録部218などに記録されているアプリケーションプログラム(ソフトウェアプログラム)を実行するとともに、所定の通信プログラム(ソフトウェアプログラム)を基に、パケットの送受信に関するTCP/IPの処理を行う。例えば、パーソナルコンピュータ1がパケットの送受信をする場合、CPU11は、パケットに含まれるAVデータ自体の処理は行わずに、パケットに含まれるヘッダ(制御データ)に関する処理を行う。
具体的には、CPU11は、後述するROM212または記録部218などに記録されているソフトウェアプログラムに従って、ネットワーク2を介して、ネットワーク2に接続された他の機器に、パケットを送信するためのIPの処理、パケット伝送中に異常が発生した場合に異常を知らせるICMP(Internet Control Message Protocol)の処理、IPアドレスとMAC(Media Access Control)アドレスの変換を行うARP(Address Resolution Protocol)の処理、通信を行っているプログラムを識別してポートを割り当てるコネクション型のTCPの処理などを行う。
換言すれば、CPU11は、例えば、AVデータバッファ15に記憶されているAVデータや、送受信バッファ16に記憶されているパケットなどのデータそのものを処理するのではなく、RAM13に記憶されている、AVデータやパケットなどのデータの、例えば、先頭のアドレスや長さなどの情報を基に処理を行う(ヘッダの処理を行う)。すなわち、このとき、RAM13には、AVデータなどのデータそのものは記憶されていないことになる。
さらにまた、CPU11は、PCIバスコントローラ12を介して、データ処理部14を制御する。データ処理部14は、パーソナルコンピュータ1により送受信されるデータ(パケット)の合成および分割処理、並びにパーソナルコンピュータ1によるデータの送受信の処理のうち、CPU11が実行する上述したIPの処理などの処理以外の処理を行うハードウェアである。
データ処理部14は、PCIバスインターフェース31、レジスタ32、ジャンボパケット処理部33、ギガビットMAC(Media Access Control)34、およびSD-RAM(Synchronous Dynamic - Random Access Memory)コントローラ35を含むようにして構成される。
PCIバスインターフェース31は、レジスタ32およびジャンボパケット処理部33と、PCIバスコントローラ12との間で入出力されるデータのインターフェースである。レジスタ32は、PCIバスインターフェース31を介して入出力されてくるデータ、並びにジャンボパケット処理部33およびギガビットMAC34において処理されるデータまたは処理による結果のデータを記憶する。
SD-RAMコントローラ35は、AVデータバッファ15または送受信バッファ16と、ジャンボパケット処理部33またはギガビットMAC34との間で行われるデータ転送を制御する。SD-RAMコントローラ35は、データを送信する場合、例えば、AVデータに対して各種の処理を行う画像音声処理装置(図示せず)から供給されるAVデータを、AVデータバッファ15に記憶させる。
ジャンボパケット処理部33は、データを送信する場合、AVデータバッファ15に記憶されているAVデータを読み出し、読み出したAVデータに各種の処理を施すことにより、AVデータを格納した、例えば、32キロバイトのサイズのジャンボパケットを生成する。また、ジャンボパケット処理部33は、PCIバスコントローラ12からPCIバスインターフェース31を介して、CPU11から供給されるヘッダを基に、パケットの送信に用いるヘッダを生成する。そして、ジャンボパケット処理部33は、ジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータと、パケットの送信に用いるヘッダヘッダとを含むパケットを生成する。ジャンボパケット処理部33は、SD-RAMコントローラ35の制御の基に、生成したパケットを送受信バッファ16に記憶させる。
ギガビットMAC34は、物理層回路17との間で入出力されるデータのMACの処理を行う。ギガビットMAC34は、データを送信する場合、SD-RAMコントローラ35の制御の基に、送受信バッファ16に記憶されているパケットにMACの処理を施し、物理層回路17に供給する。
物理層回路17は、例えば、イーサーネット規格に基づいて、ネットワーク2を介してコンピュータ1が送受信するパケットの変調または復調などの物理層の処理を行う。物理層回路17は、データを送信する場合、ギガビットMAC34から供給されるパケットに対して、例えば、変調などの物理層の処理を施し、パルストランス18を介して、コネクタ19に供給する。
コネクタ19は、例えば、RJ-45型などからなり、通信線を介してネットワーク2と接続されている。コネクタ19は、データを送信する場合、パルストランス18を介して物理層回路17から供給されるパケットを、ネットワーク2を介して、ネットワーク2に接続された他の機器に送信する。
また、コネクタ19は、データを受信する場合、ネットワーク2を介して、ネットワーク2に接続された他の機器から送信されてくるパケットを受信し、パルストランス18を介して物理層回路17に供給する。物理層回路17は、パルストランス18を介してコネクタ19から供給されるパケットに対して、例えば、復調などの物理層の処理を施し、ギガビットMAC34に供給する。
ギガビットMAC34は、データを受信する場合、物理層回路17から供給されるパケットに対してMACの処理を施し、SD-RAMコントローラ35に供給する。SD-RAMコントローラ35は、ギガビットMAC34から供給されるパケットを送受信バッファ16に記憶させる。
ジャンボパケット処理部33は、データを受信する場合、SD-RAMコントローラ35が送受信バッファ16から読み出したパケットであって、SD-RAMコントローラ35から供給される複数のパケットを合成してジャンボパケットを生成する。ジャンボパケット処理部33は、PCIバスコントローラ12およびPCIバスインターフェース31を介して、CPU11から供給されるTCP/IPの処理の結果を基に、ジャンボパケットを分割してパケットを生成する。
そして、ジャンボパケット処理部33は、SD-RAMコントローラ35の制御の基に、生成したパケットをAVデータバッファ15に供給して記憶させる。SD-RAMコントローラ35は、AVデータバッファ15に記憶されたパケットを、AVデータに対して各種の処理を行う画像音声処理装置(図示せず)に出力する。
次に、図2および図6のフローチャートを参照して、図1のパーソナルコンピュータ1による、パケットの送受信の処理について説明する。
まず、図2のフローチャートを参照して、パーソナルコンピュータ1が、ネットワーク2を介して、ネットワーク2に接続された他の機器に、パケットを送信する処理について説明する。
ステップS11において、AVバッファ15は、SD-RAMコントローラ35の制御の基に、AVデータに対して各種の処理を行う画像音声処理装置(図示せず)から出力されたAVデータを記憶する。
ステップS21において、ジャンボパケット処理部33は、SD-RAMコントローラ35の制御の基に、AVバッファ15に記憶されているAVデータを読み出し、読み出したAVデータを格納したジャンボパケットを生成する。例えば、ジャンボパケット処理部33は、図3の上側に示されるように、AVデータを格納した32キロバイトのサイズのジャンボパケットを生成する。
図2のフローチャートに戻り、ステップS22において、ジャンボパケット処理部33は、生成したジャンボパケットの送信処理に必要となるデータを、PCIバスインターフェース31からPCIバスコントローラ12を介して、CPU11に供給する。また、このとき、ジャンボパケット処理部33は、必要に応じて、レジスタ32に記憶されているデータも、PCIバスインターフェース31からPCIバスコントローラ12を介して、CPU11に供給する。
ステップS41において、CPU11は、PCIバスインターフェース31およびPCIバスコントローラ12を介して、ジャンボパケット処理部33から供給されるデータを基に、ジャンボパケットを送信するためのTCP/IPの処理を行い、IPヘッダとTCPヘッダからなるヘッダHD1を生成する。CPU11は、PCIバスコントローラ12からPCIバスインターフェース31を介して、ヘッダHD1をジャンボパケット処理部33に供給する。
このとき、ジャンボパケット処理部33は、SD-RAMコントローラ35の制御の基に、図3の上側に示される、IPヘッダとTCPヘッダからなるヘッダHD1がデータ(AVデータ)に付加された、32キロバイトのサイズのジャンボパケットを送受信バッファ16に記憶させる。
図2のフローチャートに戻り、ステップS23において、ジャンボパケット処理部33は、CPU11から供給されるヘッダHD1を基に、パケットの送信に用いるヘッダHD2を生成する。そして、ジャンボパケット処理部33は、SD-RAMコントローラ35の制御の基に、送受信バッファ16に記憶されているジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータと、ヘッダHD2とを含むパケットを生成する。
具体的には、ジャンボパケット処理部33は、例えば、図4のヘッダHD2のIPヘッダに示すように、サービスタイプ(Service Type)、識別(Identification)、生存時間(Time to Live)、送信元アドレス(Source IP Address)、および宛先アドレス(Destination IP Address)は、ヘッダHD1のIPヘッダのサービスタイプ、識別、生存時間、送信元アドレス、および宛先アドレスをそのまま用いて(コピーして)、ヘッダHD2のIPヘッダを生成する。
なお、その他のヘッダHD2のIPヘッダは、例えば、図4に示すように、バージョン(Version)には“4h”、ヘッダ長(HLEN)には“5”または”F”、全長(Total Length)には“0000h”、フラグ(Flags)には“0000h”、フラグメントオフセット(Fragment Offset)には“0000h”、プロトコル(Protocol)には“TCP=06h”、ヘッダチェックサム(Header Checksum)がハードウェアにより演算され、オプション(IP Options)とパディング(Padding)が生成されないようにヘッダHD2のIPヘッダを生成する。
また、ジャンボパケット処理部33は、例えば、図5のヘッダHD2のTCPヘッダに示すように、送信元ポート番号(Source Port)、宛先ポート番号(Destination Port)、およびウィンドウ(Window)は、ヘッダHD1のTCPヘッダの送信元ポート番号データ、宛先ポート番号データ、およびウィンドウデータをそのまま用いて(コピーして)、ヘッダHD2のTCPヘッダを生成する。
なお、その他のヘッダHD2のTCPヘッダは、例えば、図5に示すように、シーケンス番号(Sequence Number)がハードウェアにより演算され、確認応答番号(Acknowledgement Number)がハードウェアにより演算され、データオフセット/ヘッダ長(HLEN)には“5”または“F”、予約(Reserved)には“0”、制御ビット(Code Bit)が各パケットのORとなり、チェックサム(Checksum)がハードウェアにより演算され、緊急ポインタ(Urgent Pointer)には“0”、オプション(Options)とパディング(Padding)が生成されないようにヘッダHD2のTCPヘッダを生成する。
すなわち、ジャンボパケット処理部33は、図3の下側に示されるように、ジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータ(図3ではデータと表現されている)と、ヘッダHD1を基に生成したヘッダHD2とを含む、パケット長最大1518バイトの複数のパケットを生成する。
図2のフローチャートに戻り、ステップS24において、ジャンボパケット処理部33は、SD-RAMコントローラ35の制御の基に、生成したパケットを送受信バッファ16に記憶させる。
ステップS31において、送受信バッファ16は、SD-RAMコントローラ35の制御の基に、記憶しているパケットをギガビットMAC34に供給する。そして、ギガビットMAC34に供給されたパケットは、ギガビットMAC34によるMACの処理および物理層回路17による物理層の処理が施され、パルストランス18を介して、コネクタ19からネットワーク2に送信される。
以上のようにして、パーソナルコンピュータ1は、ネットワーク2を介して、ネットワーク2に接続された他の機器にパケットを送信する。
次に、図6のフローチャートを参照して、パーソナルコンピュータ1が、ネットワーク2に接続された他の機器から、ネットワーク2を介してパケットを受信する処理について説明する。
パーソナルコンピュータ1がネットワーク2を介してパケットを受信する場合、パケットは、コネクタ19で受信され、パルストランス18を介して物理層回路17による物理層の処理が施され、ギガビットMAC34に供給される。
ステップS71において、ギガビットMAC34は、ネットワーク2を介して受信したパケットであって、物理層回路17から供給されるパケットに対してMACの処理を施し、SD-RAMコントローラ35に供給する。SD-RAMコントローラ35は、ギガビットMAC34から供給されるパケットを送受信バッファ16に記憶させる。
ステップS61において、送受信バッファ16は、SD-RAMコントローラ35の制御の基に、記憶しているパケットをジャンボパケット処理部33に供給する。
ステップS51において、ジャンボパケット処理部33は、SD-RAMコントローラ35が送受信バッファ16から読み出したパケットであって、SD-RAMコントローラ35から供給される複数のパケットを合成してジャンボパケットを生成する。例えば、ジャンボパケット処理部33は、パケットに付加されているヘッダHD2のIPヘッダ(図4)とTCPヘッダ(図5)の処理に従って、SD-RAMコントローラ35から供給される複数のパケットを合成することで、図3の上側に示される、IPヘッダとTCPヘッダからなるヘッダHD1がデータ(AVデータ)に付加された、32キロバイトのサイズのジャンボパケットを生成する。
具体的には、ジャンボパケット処理部33は、例えば、図4のヘッダHD2のIPヘッダに示すように、サービスタイプ、識別、生存時間、送信元アドレス、および宛先アドレスをそのまま用いて(コピーして)、ヘッダHD1のIPヘッダを生成する。また、ジャンボパケット処理部33は、例えば、図5のヘッダHD2のTCPヘッダに示すように、送信元ポート番号、宛先ポート番号、およびウィンドウをそのまま用いて(コピーして)、ヘッダHD1のTCPヘッダを生成する。
なお、このとき、ジャンボパケット処理部33は、ヘッダHD1のIPヘッダのチェックサムデータ、並びにTCPヘッダのチェックサムデータ、シーケンス番号、および確認応答番号を生成する。また、ジャンボパケット処理部33は、パケットに含まれるヘッダHD2のIPヘッダおよびTCPヘッダのチェックサムデータ、並びにAVデータを用いたチェックサム演算を行う。
そして、ジャンボパケット処理部33は、ジャンボパケットの受信処理に必要となるデータ、例えば、パケットのヘッダHD2(例えば、図4のIPヘッダと図5のTCPヘッダ)から取得された送信元アドレス、宛先アドレス、およびサイズデータなどを、PCIバスインターフェース31からPCIバスコントローラ12を介してCPU11に供給する。また、このとき、ジャンボパケット処理部33は、必要に応じて、レジスタ32に記憶されているデータも、PCIバスインターフェース31からPCIバスコントローラ12を介して、CPU11に供給する。
図6のフローチャートに戻り、ステップS81において、CPU11は、PCIバスインターフェース31およびPCIバスコントローラ12を介して、ジャンボパケット処理部33から供給されるデータを基に、ジャンボパケットの受信をするためのTCP/IPの処理を行う。CPU11は、TCP/IPの処理の結果を、PCIバスコントローラ12からPCIバスインターフェース31を介して、ジャンボパケット処理部33に供給する。
ステップS52において、ジャンボパケット処理部33は、PCIバスコントローラ12からPCIバスインターフェース31を介して、CPU11から供給されるTCP/IPの処理の結果を基に、ジャンボパケットを分割してパケットを生成する。例えば、ジャンボパケット処理部33は、図3の下側に示されるように、ジャンボパケットに含まれるAVデータを分割し、分割することにより得られたAVデータ(図3ではデータと表現されている)とヘッダHD2とを含む、パケット長最大1518バイトの複数のパケットを生成する。
図6のフローチャートに戻り、ステップS53において、ジャンボパケット処理部33は、SD-RAMコントローラ35の制御の基に、生成したパケットをAVデータバッファ15に供給して記憶させる。そして、AVデータバッファ15に記憶されたパケットは、SD-RAMコントローラ35の制御の基に、AVデータに対して各種の処理を行う画像音声処理装置(図示せず)に出力される。
以上のようにして、パーソナルコンピュータ1は、ネットワーク2に接続された他の機器から、ネットワーク2を介してパケットを受信する。
このように、パーソナルコンピュータ1において、データ処理部14は、複数のパケットからなるジャンボパケットを生成し、ジャンボパケットの送受信処理(TCP/IPの処理)をCPU11に行わせる。そのため、複数のパケットの送受信処理をCPU11が行う場合に比べて、CPU11の処理負担を軽減することができる。
また、このとき、CPU11とデータ処理部14との間では、例えば、ヘッダやレジスタデータなどの、データ量の小さなデータのみを伝送し、データ処理部14において、ハードウェアによりTCP/IPの処理の一部を高速に行うことで、従来のPCIバスをそのまま用いるとともに、CPU11を高速化することなく、TCP/IPの処理を高速化することができる。その結果、パーソナルコンピュータ1の構成を、簡単かつ安価なものにすることができる。
ところで、上述したように、先の提案においては、例えば、ジャンボパケットのサイズが32キロバイト、送信装置のバッファのサイズが8キロバイトのように、ジャンボパケットのサイズがバッファのサイズよりも大きい場合、送信装置からは、一度に8キロバイト以上のパケットは送信されないため、受信装置は、ある程度パケットの受信を待った上でタイムアウトの処理により、その時点におけるサイズのパケットをアプリケーション層に渡す処理を行っている。
この場合、タイムアウトが頻繁に発生し、転送速度が遅くなってしまう可能性がある。本出願人は、従来の課題のみならず、この新たな課題も同時に解決させる手法として、タイムアウトが何度か続いた場合に、パケットからジャンボパケットを生成するときのパケットの数を動的に変更して、ジャンボパケットのサイズを変えながら、ジャンボパケットを生成する手法を発明した。以下、図7乃至図12を参照して、ジャンボパケットを生成するときのパケットの数を動的に変更しながら、パケットを受信する処理について説明する。なお、以下、図7乃至図12を参照して説明する処理は、例えば、上述した、図6のステップS51の処理において、ジャンボパケットを生成するときに行われる。
図7は、図1のパーソナルコンピュータ1の機能的構成例を示すブロック図である。
パーソナルコンピュータ1は、ソフトウェアプログラム101、初期化ソフトウェア102、ジャンボパケットレジスタ103、およびソケット処理部104を含むようにして構成される。
なお、本実施の形態では、パーソナルコンピュータ1は、上述した図1のハードウェア構成を有しているので、ソフトウェアプログラム101は、例えば、CPU11(図1)が実行するプログラム(ソフトウェア)として構成され、初期化処理部102およびソケット処理部104は、例えば、ジャンボパケット処理部33(図1)が実行するプログラムとして構成される。ただし、パーソナルコンピュータ1の構成を図1のハードウェア構成と異ならせることで、ソフトウェアプログラム101、初期化処理部102、またはソケット処理部104は、ハードウェア単体として構成することもできるし、ソフトウェアとハードウェアとの組み合わせとして構成することもできる。
ソフトウェアプログラム101は、例えば、CPU11により実行される、AVデータを再生させることのできるアプリケーションプログラムの所定の通信プログラムである。ソフトウェアプログラム101は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が指示されたとき、ソケット生成要求またはジャンボパケット機能使用要求を初期化処理部102に供給する。
ここで、ソケット生成要求とは、ネットワーク2を介して他の機器と通信を行うためのソケットを生成させる要求である。例えば、ソケット生成要求は、AVデータを受信する場合、AVデータを提供するパーソナルコンピュータ(または、例えば、専用のサーバなど)との通信を行うためのソケットを生成する要求となる。また、ジャンボパケット機能使用要求とは、後述する、所定の数ごとに、ジャンボパケットを動的に組上げる機能(以下、ジャンボパケット機能とも称する)を使用させるための要求である。
すなわち、ソフトウェアプログラム101は、ソケット生成要求とともに、ジャンボパケット機能使用要求を、初期化処理部102に供給することで、ジャンボパケット機能を使用して、例えば、AVデータを受信させることになる。
初期化処理部102は、ソフトウェアプログラム101から、ソケット生成要求とともに、ジャンボパケット機能使用要求が供給されてきた場合、ジャンボパケット機能の初期化の処理を行う。
ここで、ジャンボパケット機能の初期化の処理とは、ジャンボパケットレジスタ103に記憶されている、例えば、パケット組上数、タイムアウト時間、またはタイムアウト回数などのデータを初期化する処理である。
なお、パケット組上数(以下、パケット組上数をN(Nは自然数)とも称する)とは、受信したパケットの組上げる数を指定する値(閾値)である。例えば、上述した例のように、ジャンボパケットのサイズが32キロバイトで、パケットのサイズが1518バイトである場合、パケット組上数には20(個)が設定され、20(個)のパケットを受信したとき、20(個)のパケットが組上げられて、(1518×20バイトのサイズの)ジャンボパケットが生成される。また、同様に、例えば、ジャンボパケットのサイズが9キロバイトで、パケットのサイズが1.5キロバイトである場合、パケット組上数には6(個)が設定され、6(個)のパケットを受信したとき、6(個)のパケットが組上げられて、(1.5×6バイトのサイズの)ジャンボパケットが生成される。
また、タイムアウト時間とは、例えば、50ミリ秒などの、前回パケットを受信してから、ある時間を経過してもパケットを受信しない場合、タイムアウトの処理を実行させるまで時間である。さらにまた、タイムアウト回数とは、例えば、3回などの、連続してタイムアウトが発生可能な回数を指定するための値(閾値)である。なお、以下、パケット組上数、タイムアウト時間、およびタイムアウト回数を総称して、ジャンボパケット設定情報とも称して説明する。
初期化処理部102は、初期値設定部111を含むようにして構成される。
初期値設定部111は、ソフトウェアプログラム101から、ソケット生成要求とともに、ジャンボパケット機能使用要求が供給されてきた場合、ジャンボパケット設定情報をジャンボパケットレジスタ103に設定する、ジャンボパケット機能の初期化の処理を行う。初期値設定部111は、ジャンボパケット機能の初期化の処理を行った場合、ジャンボパケットレジスタ番号をソケット処理部104に供給する。
なお、詳細は後述するが、ジャンボパケットレジスタ番号とは、ジャンボパケットレジスタ103には、セッションごとに、それぞれ、ジャンボパケット設定情報が記憶されているので、それらを区別するために、対象となるセッションのジャンボパケット設定情報を指定するための番号である。ジャンボパケットレジスタ番号は、例えば、1,2,3,・・・,Mなどの番号となる。
ジャンボパケットレジスタ103は、レジスタから構成される。例えば、ジャンボパケットレジスタ103は、初期化処理部102またはソケット処理部104からの指示を基に、セッションごとに、ジャンボパケット設定情報またはジャンボパケット機能の使用状況を示す情報(以下、使用状況と称して説明する)を記憶する。なお、使用状況は、例えば、使用していないことを示す“使用状態”または使用していることを示す“空き状態”のいずれか一方を示す情報となる。なお、ジャンボパケットレジスタ103は、レジスタ32(図1)と同一としてもよい。
ソケット処理部104は、ソケット通信に関する各種の処理を実行する。例えば、ソケット処理部104は、ジャンボパケット処理部33(データ処理部14)の制御の基に、ソケット通信に関する各種の処理を実行する。
また、ソケット処理部104は、初期化処理部102から供給されるジャンボパケットレジスタ番号を基に、ジャンボパケットレジスタ103から、ジャンボパケットレジスタ番号に対応した領域に記憶されているジャンボパケット設定情報を読み出して設定する。ソケット処理部104は、設定されたジャンボパケット設定情報を基に、ジャンボパケット受信の処理を行い、受信したパケットから生成したジャンボパケットの処理をソフトウェアプログラム101に受け渡す。
ここで、ジャンボパケット受信の処理とは、パケット組上数を、例えば、タイムアウト時間およびタイムアウト回数に基づいて動的に変更させながら、パケットを受信する処理である。
また、ソケット処理部104は、ジャンボパケット受信の処理が終了した場合、ジャンボパケット受信の処理が終了したことを示す通知(以下、処理終了通知と称する)をジャンボパケットレジスタ103に供給して記憶させる。ジャンボパケットレジスタ103は、ソケット処理部104から供給される処理終了通知を基に、ジャンボパケット受信の処理が終了したので、例えば、使用状況を“使用状態”から“空き状態”に変更して記憶する。このように、使用状況が“空き状態”となることにより、異なるセッションに対して、この“空き状態”となった領域を使用させることができる。
ソケット処理部104は、パケット組上数判定部121、タイムアウト時間判定部122、タイムアウト回数判定部123、パケット組上数設定部124、およびパケット処理部125を含むようにして構成される。
パケット組上数判定部121は、受信したパケットの数が、N(パケット組上数)となるか否かを判定する。パケット組上数判定部121は、判定結果をタイムアウト時間判定部122またはパケット処理部125に供給する。
タイムアウト時間判定部122は、パケット組上数判定部121から供給される判定結果を基に、前回パケットを受信してからタイムアウト時間が経過したか否かを判定する。タイムアウト時間判定部122は、判定結果をタイムアウト回数判定部123に供給する。
タイムアウト回数判定部123は、タイムアウト時間判定部122から供給される判定結果を基に、タイムアウトした回数が連続で、タイムアウト回数以上発生したか否かを判定する。タイムアウト回数判定部123は、判定結果をパケット組上数設定部124またはパケット処理部125に供給する。
パケット組上数設定部124は、タイムアウト回数判定部123から供給される判定結果を基に、設定されているN(パケット組上数)を減じる演算を行って、減じられたN(パケット組上数)をジャンボパケットレジスタ103に記憶させて設定する。なお、このとき、パケット組上数設定部124は、N(パケット組上数)を、ジャンボパケットレジスタ103に記憶させずに、例えば、メモリ(図示せず)などに記憶させるようにしてもよい。
パケット処理部125は、パケット組上数判定部121またはタイムアウト回数判定部123から供給される判定結果を基に、所定のパケット組上数のパケットからジャンボパケットを生成する。パケット処理部125は、生成したジャンボパケットの処理をソフトウェアプログラム101に受け渡す。このとき、ソフトウェアプログラム101(すなわち、CPU11)は、ジャンボパケットの処理をパケット処理部125から受け渡されたので、例えば、上述した、図6のステップS81の処理を行うことになる。
次に、図8乃至図12を参照して、図7の機能的構成例を有する、パーソナルコンピュータ1の動作について説明する。まず、図8のフローチャートを参照して、データ受信の処理について説明する。なお、この処理は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が指示されたとき開始される。
ステップS101において、初期化処理部102は、ソフトウェアプログラム101から供給されるソケット生成要求またはジャンボパケット機能使用要求を基に、ジャンボパケット機能の初期化の処理を行う。例えば、ステップS101において、初期化処理部102は、ジャンボパケット設定情報を初期化する処理を行う。
ここで、ステップS101における、初期化処理部102による、ジャンボパケット機能の初期化の処理の詳細について、図9のフローチャートを参照して説明する。
ステップS111において、初期値設定部111は、ソフトウェアプログラム101からソケット生成要求が入力されたか否かを判定する。
ステップS111において、ソケット生成要求が入力されていないと判定された場合、ソフトウェアプログラム101からは、例えば、所定のAVデータの再生が指示されていないので、ステップS111に戻り、上述した処理が繰り返される。すなわち、初期化処理部102は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が指示されるまで待機している。
一方、ステップS111において、ソフトウェアプログラム101からソケット生成要求が入力されたと判定された場合、ステップS112に進み、初期値設定部111は、ジャンボパケット機能使用要求が入力されたか否かを判定する。
ステップS112において、ジャンボパケット機能使用要求が入力されていないと判定された場合、例えば、所定のAVデータの再生を指示されたが、ジャンボパケット受信の処理を行わないので、ステップS111に戻り、上述した処理が繰り返される。すなわち、初期化処理部102は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が再度指示されるまで待機している。
一方、ステップS112において、ジャンボパケット機能使用要求が入力されたと判定された場合、ステップS113に進み、初期値設定部111は、ジャンボパケット機能に空きがあるか否かを判定する。例えば、ステップS113において、初期値設定部111は、ジャンボパケットレジスタ103に記憶されているジャンボパケット設定情報に対応した使用状況が“空き状態”を示している領域があるか否かを判定する。
例えば、ジャンボパケットレジスタ103は、図10に示すように、1乃至Mを示しているジャンボパケットレジスタ番号に対応して、使用状況、パケット組上数、タイムアウト時間、およびタイムアウト回数を、それぞれ記憶している。これらのジャンボパケットレジスタ番号は、セッションごとに割り当てられる番号であるので、各セッションごとに、パケット組上数、タイムアウト時間、およびタイムアウト回数が割り当てられている。
すなわち、初期値設定部111は、上述したように、使用状況には、“使用状態”と“空き状態”とがあり、使用状況が“使用状態”を示している場合、その領域は既に他のセッションにより使用されていることになるので、使用状況が“空き状態”を示している領域があるか否かを判定することになる。
図9のフローチャートに戻り、ステップS113において、ジャンボパケット機能に空きがないと判定された場合、ジャンボパケット機能を使用することができないので、ステップS111に戻り、上述した処理が繰り返される。すなわち、初期化処理部102は、例えば、ユーザによりユーザインターフェースを介して、所定のAVデータの再生が再度指示されるまで待機している。
一方、ステップS113において、ジャンボパケット機能に空きがあると判定された場合、ステップS114に進み、初期値設定部111は、ジャンボパケットレジスタ設定の処理を行う。例えば、ステップS114において、初期値設定部111は、図10のジャンボパケットレジスタ103の、1であるジャンボパケットレジスタ番号に対応した使用状況が“空き状態”を示している場合、1であるジャンボパケットレジスタ番号に対応した、パケット組上数、タイムアウト時間、およびタイムアウト回数を設定する、ジャンボパケットレジスタ設定の処理を行う。
ここで、ステップS114における、初期値設定部111による、ジャンボパケットレジスタ設定の処理の詳細について、図11のフローチャートを参照して説明する。
ステップS121において、初期値設定部111は、パケット組上数を設定する。例えば、ステップS121において、初期値設定部111は、図10のジャンボパケットレジスタ103の、1であるジャンボパケットレジスタ番号に対応した、パケット組上数(N)に20(個)を記憶させて設定する。
ステップS122において、初期値設定部111は、タイムアウト時間を設定する。例えば、ステップS122において、初期値設定部111は、図10のジャンボパケットレジスタ103の、1であるジャンボパケットレジスタ番号に対応した、タイムアウト時間に50(ミリ秒)を記憶させて設定する。
ステップS123において、初期値設定部111は、タイムアウト回数を設定する。例えば、ステップS123において、初期値設定部111は、図10のジャンボパケットレジスタ103の、1であるジャンボパケットレジスタ番号に対応した、タイムアウト回数に3(回)を記憶させて設定する。
図9のフローチャートに戻り、ステップS115において、初期値設定部111は、ジャンボパケットレジスタ番号をソケット処理部104に通知して、ジャンボパケット機能の初期化の処理を終了し、図8のステップS101に処理を戻し、ステップS102の処理を実行させる。例えば、初期値設定部111は、1であるジャンボパケットレジスタ番号をソケット処理部104に通知する。
ステップS102において、ソケット処理部104は、ジャンボパケット受信の処理を行う。
ここで、ステップS102における、ソケット処理部104による、ジャンボパケット受信の処理の詳細について、図12を参照して説明する。
ステップS131において、ソケット処理部104は、初期値設定部111から供給されるジャンボパケットレジスタ番号を基に、ジャンボパケットレジスタ103から、パケット組上数、タイムアウト時間、およびタイムアウト回数(ジャンボパケット設定情報)を読み出す。例えば、ステップS131において、ソケット処理部104は、図10に示すように、初期値設定部111から供給される、1であるジャンボパケットレジスタ番号を基に、20(個)であるパケット組上数、50(ミリ秒)であるタイムアウト時間、および3(回)であるタイムアウト回数を、それぞれ読み出す。
図12のフローチャートに戻り、ステップS132において、ソケット処理部104は、パケットを受信したか否かを判定する。
ステップS132において、パケットを受信していないと判定された場合、ステップS132に戻り、上述した処理が繰り返される。すなわち、ソケット処理部104は、パケットを受信するまで待機していることになる。
一方、ステップS132において、パケットを受信したと判定された場合、ステップS133に進み、パケット組上数判定部121は、受信したパケットの数(パケット数)がN個(パケット組上数)となったか否かを判定する。例えば、ステップS133において、パケット組上数判定部121は、受信したパケット数が20個となったか否かを判定する。
ステップS133において、受信したパケット数がN個(例えば20個)となったと判定された場合、パケット組上数の数だけパケットを受信できたので、ステップS134に進み、パケット処理部125は、所定のパケット組上数のパケットからジャンボパケットを生成する。パケット処理部125は、生成したジャンボパケットの処理をソフトウェアプログラム101に受け渡す。
このとき、ソフトウェアプログラム101(すなわち、CPU11)は、ジャンボパケットの処理をパケット処理部125から受け渡されたので、例えば、上述した、図6のステップS81の処理を行う。そして、ソフトウェアプログラム101(すなわち、CPU11)は、受け取ったジャンボパケットに対して、TCP/IPの処理を行って、AVデータバッファ15に記憶させ、その後、AVデータとして、例えば、AVデータに対して各種の処理を行う画像音声処理装置(図示せず)に出力する。
ステップS135において、ソケット処理部104は、パケットの受信を終了したか否かを判定する。
ステップS135において、パケットの受信を終了したと判定された場合、ステップS136に進み、ソケット処理部104は、パケットの受信を終了したことを示す処理終了通知をジャンボパケットレジスタ103に出力して、図8のステップS102に処理を戻し、パーソナルコンピュータ1による、データ受信の処理を終了する。
このとき、例えば、ジャンボパケットレジスタ103は、ソケット処理部104から供給される処理終了通知を基に、図10のジャンボパケットレジスタ103の、1であるジャンボパケットレジスタ番号に対応した、使用状況を“使用状態”から“空き状態”に変更して記憶する。その結果、1であるジャンボパケットレジスタ番号に対応した領域が、他のセッションにより使用されることが可能となる。
一方、ステップS135において、パケットの受信を終了していないと判定された場合、パケットの受信を終了していないので、ステップS132に戻り、上述した処理が繰り返される。
ステップS133において、受信したパケット数がN個(例えば20個)となっていないと判定された場合、ステップS137に進み、タイムアウト時間判定部122は、前回パケットを受信してから50ミリ秒(所定の時間)以上経過したか否かを判定する。
ステップS137において、前回パケットを受信してから50ミリ秒以上経過していないと判定された場合、まだタイムアウトしていないので、ステップS132に戻り、上述した処理が繰り返される。
一方、ステップS137において、前回パケットを受信してから50ミリ秒以上経過したと判定された場合、ステップS138に進み、タイムアウト回数判定部123は、タイムアウトが連続で3回(所定の回数)以上発生したか否かを判定する。
ステップS138において、タイムアウトが連続で3回以上発生していないと判定された場合、タイムアウトの発生した回数が許容範囲内であるので、ステップS134に進み、上述した処理が繰り返される。
一方、ステップS138において、タイムアウトが連続で3回以上発生したと判定された場合、タイムアウトの発生した回数が許容している回数を超えているので、ステップS139に進み、パケット組上数設定部124は、N(パケット組上数)を1減じる。例えば、ステップS139において、パケット組上数設定部124は、20(個)であるN(パケット組上数)から1減じて、19(個)であるNを算出する。
ステップS140において、パケット組上数設定部124は、減じられたパケット組上数を設定して、ステップS133に戻り、上述した処理が繰り返される。例えば、ステップS140において、パケット組上数設定部124は、19(個)であるN(パケット組上数)をジャンボパケットレジスタ103に記憶させて設定する。
そして、ステップS133において、パケット組上数判定部121は、受信したパケット数が19個となったか否かを判定することになる。このように、タイムアウトが連続で所定の回数続いた場合に、N(パケット組上数)を動的に減らす(例えば、20から19に減らす)ことができるので、タイムアウトが発生しにくくなる。その結果、タイムアウト処理に起因する転送速度の劣化を抑制することができる。
以上のように、本発明によれば、より高速にパケットの受信を行うことができる。
また、本発明によれば、一定時間以上パケットを受信しなかった場合、パケット組上数に満たなくても、その時点のサイズでCPUに処理を引き渡すタイムアウト処理を行い、さらに、タイムアウト処理が連続で続くとき、パケット組上数を動的に変更することができる。その結果、タイムアウト処理に起因する転送速度の劣化を抑制することができる。さらに、例えば、パケット組上数以上のパケットが送信されてこない場合でも、パケット組上数を動的に変更することで、タイムアウト処理に起因する転送速度の劣化を抑制することができる。
さらにまた、本発明によれば、例えば、送信側のバッファのサイズや、受信側のパケット組上数などが最適でないことで発生する転送遅れなどを、パケット組上数を動的に変更することでなくし、常に高速転送をすることが可能となる。
なお、上述した例においては、パーソナルコンピュータ1を一例にして説明したが、本発明においてはそれに限らず、例えば、ビデオカメラ、AVサーバ、またはスイッチャなど、ネットワークに接続して、ネットワークに接続された他の機器と通信をする機器であればよい。
また、上述した例においては、プロトコルスタックとして、TCP/IPを一例にして説明したが、本発明においてはそれに限らず、例えば、UDP/IP(User Datagram Protocol/Internet Protocol)などであってもよい。
さらにまた、上述した例においては、タイムアウトが所定の回数発生した場合、パケット組上数を減じるとして説明したが、もちろん、タイムアウト状況からパケット組上数を動的に増やすようにしてもよい。また、上述した例においては、パケット組上数を受信側で設定するとして説明したが、送信側で設定するようにしてもよい。
図13は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU211は、ROM212、または記録部218に記録されているプログラムに従って各種の処理を実行する。RAM213には、CPU211が実行するプログラムやデータなどが適宜記憶される。これらのCPU211、ROM212、およびRAM213は、バス214により相互に接続されている。
CPU211にはまた、バス214を介して入出力インターフェース215が接続されている。入出力インターフェース215には、スイッチ、マイクロホンなどよりなる入力部216、ディスプレイ、スピーカなどよりなる出力部217が接続されている。CPU211は、入力部216から入力される指令に対応して各種の処理を実行する。そして、CPU211は、処理の結果を出力部217に出力する。
入出力インターフェース215に接続されている記録部218は、例えばハードディスクからなり、CPU211が実行するプログラムや各種のデータを記録する。通信部219は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。また、通信部219を介してプログラムを取得し、記録部218に記録してもよい。
入出力インターフェース215に接続されているドライブ220は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア221が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部218に転送され、記録される。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図13に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア221、または、プログラムが一時的もしくは永続的に格納されるROM212や、記録部218を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインターフェースである通信部219を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 パーソナルコンピュータ, 11 CPU, 12 PCIバスコントローラ, 13 RAM, 14 データ処理部, 15 AVデータバッファ, 16 送受信バッファ, 17 PHY, 18 MAG, 19 RJ-45, 31 PCIバスインターフェース, 32 レジスタ, 33 ジャンボパケット処理部, 34 ギガビットMAC, 35 SD-RAMコントローラ, 101 ソフトウェアプログラム, 102 初期化処理部, 103 ジャンボパケットレジスタ, 104 ソケット処理部, 111 初期値設定部, 121 パケット組上数判定部, 122 タイムアウト時間判定部, 123 タイムアウト回数判定部, 124 パケット組上数設定部, 125 パケット処理部