JP4363404B2 - 受信装置および方法、並びにプログラム - Google Patents

受信装置および方法、並びにプログラム Download PDF

Info

Publication number
JP4363404B2
JP4363404B2 JP2006017207A JP2006017207A JP4363404B2 JP 4363404 B2 JP4363404 B2 JP 4363404B2 JP 2006017207 A JP2006017207 A JP 2006017207A JP 2006017207 A JP2006017207 A JP 2006017207A JP 4363404 B2 JP4363404 B2 JP 4363404B2
Authority
JP
Japan
Prior art keywords
packet
packets
jumbo
determined
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006017207A
Other languages
English (en)
Other versions
JP2007201758A (ja
Inventor
俊明 児島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2006017207A priority Critical patent/JP4363404B2/ja
Priority to US11/624,458 priority patent/US8121151B2/en
Priority to CN200710008152A priority patent/CN100593305C/zh
Publication of JP2007201758A publication Critical patent/JP2007201758A/ja
Application granted granted Critical
Publication of JP4363404B2 publication Critical patent/JP4363404B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields

Description

本発明は受信装置および方法、並びにプログラムに関し、特に、TOE(TCP Offload Engine)により通信をする受信装置および方法、並びにプログラムに関する。
従来より、インターネットなどのネットワークで使用されるプロトコルとして、TCP/IP(Transmission Control Protocol/Internet Protocol)がある。TCP/IPは、もともとUNIX(登録商標)においてソフトウェア(ソフトウェアプログラム)により実装されていた経緯があり、現在でもその処理の大部分がソフトウェアにより行われている。しかし、容量の大きいデータのネットワーク転送要求が高まるにつれて、TCP/IPの処理の高速化を求める声が大きくなってきた。
そのような要求に対して、例えば、TOE(TCP Offload Engine)と称される、ホスト側のCPU(Central Processing Unit)リソースが費やされていたTCP/IPの処理を、別のチップ(専用のハードウェア)が代わりに行うようにする技術がある。このようにすることで、ホスト側のCPUリソースをアプリケーションプログラムの処理だけに割り当てることができるようになり、ホスト側のCPUの負荷を減らすとともに、TCP/IPの処理を高速化させることができる。
また、本出願人は、パケットを送信する送信装置において、入力してくるAV(Audio Visual)データをAVバッファ回路に格納した後に、パケット処理部において、32キロバイトのジャンボパケット(以下、イーサーネット(登録商標)パケット(パケット)よりも格納されるデータのサイズの大きいパケットを、ジャンボパケットと称して説明する)を生成し、CPUが生成したヘッダに基づいて、生成したジャンボパケットを分割して、最大1518バイトのパケットを生成して送信できるようにすることを先に提案した(例えば、特許文献1)。
特開2003−229905号公報
しかしながら、先の提案においては、送信装置では、ジャンボパケットのサイズがバッファのサイズよりも大きい場合、バッファのサイズ以上のパケットを送信することができないため、一度に送信するパケットのサイズをバッファのサイズよりも小さくし、受信装置では、タイムアウト処理を行って、ある程度のパケットの受信を待つことにより、ある程度のサイズとなったパケットをアプリケーション層に渡すという処理を行っていたが、頻繁にタイムアウトが発生し、転送速度が遅くなる可能性があった。
例えば、ジャンボパケットのサイズが32キロバイト、送信装置のバッファのサイズが8キロバイトのように、ジャンボパケットのサイズがバッファのサイズよりも大きい場合、送信装置からは、一度に8キロバイト以上のパケットは送信されないため、受信装置は、ある程度パケットの受信を待った上でタイムアウトの処理により、その時点におけるサイズのパケットをアプリケーション層に渡す処理を行っていたが、このとき、毎回タイムアウトが発生してしまうため、転送速度が遅くなってしまうという問題があった。
本発明はこのような状況に鑑みてなされたものであり、より高速にパケットの受信を行うことができるようにするものである。
本発明の一側面は、第1のパケットを受信する受信装置において、アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、前記第1のパケットから前記第1のパケットよりも格納されるデータのサイズの大きい第2のパケットを生成するときの、前記第1のパケットの数である第1の閾値を超えるか否かを判定する第1の判定手段と、前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第2の判定手段と、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第2の閾値を超えるか否かを判定する第3の判定手段と、前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数を減じるように前記第1の閾値を設定する第1の設定手段とを備える受信装置である。
前記第2の閾値を超えないと判定された場合、受信した前記第1のパケットから前記第2のパケットを生成し、前記アプリケーション層に処理を受け渡す処理を行う処理手段を備えるようにすることができる。
前記第1の設定手段は、前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数から1を減じるように前記第1の閾値を設定するようにすることができる。
前記要求に応じて、前記第1の閾値、前記第2の閾値、および前記所定の時間の初期値を設定する第2の設定手段を備え、前記第1の判定手段は、アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、設定された前記第1の閾値を超えるか否かを判定し、前記第2の判定手段は、前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してから設定された前記所定の時間を経過したか否かを判定し、前記第3の判定手段は、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、設定された前記第2の閾値を超えるか否かを判定するようにすることができる。
本発明の一側面は、第1のパケットを受信する受信装置の受信方法において、アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、前記第1のパケットから前記第1のパケットよりも格納されるデータのサイズの大きい第2のパケットを生成するときの、前記第1のパケットの数である第1の閾値を超えるか否かを判定する第1の判定ステップと、前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第2の判定ステップと、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第2の閾値を超えるか否かを判定する第3の判定ステップと、前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数を減じるように前記第1の閾値を設定する設定ステップとを含む受信方法である。
本発明の一側面は、第1のパケットを受信する受信装置の処理を、コンピュータに行わせるプログラムにおいて、アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、前記第1のパケットから前記第1のパケットよりも格納されるデータのサイズの大きい第2のパケットを生成するときの、前記第1のパケットの数である第1の閾値を超えるか否かを判定する第1の判定ステップと、前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第2の判定ステップと、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第2の閾値を超えるか否かを判定する第3の判定ステップと、前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数を減じるように前記第1の閾値を設定する設定ステップとを含むプログラムである。
本発明の一側面においては、アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、前記第1のパケットから前記第1のパケットよりも格納されるデータのサイズの大きい第2のパケットを生成するときの、前記第1のパケットの数である第1の閾値を超えるか否かが判定され、前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かが判定され、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第2の閾値を超えるか否かが判定され、前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数を減じるように前記第1の閾値が設定される。
以上のように、本発明の一側面によれば、より高速にパケットの受信を行うことができる。
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の受信装置(例えば、図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のパーソナルコンピュータによる、パケット送信の処理について説明するフローチャートである。 ジャンボパケットとパケットの関係について説明する図である。 IPヘッダを生成する処理について説明する図である。 TCPヘッダを生成する処理について説明する図である。 図1のパーソナルコンピュータによる、パケット受信の処理について説明するフローチャートである。 図1のパーソナルコンピュータの機能的構成例を示すブロック図である。 データ受信の処理を説明するフローチャートである。 ジャンボパケット機能の初期化の処理を説明するフローチャートである。 ジャンボパケットレジスタについて説明する図である。 ジャンボパケットレジスタ設定の処理を説明するフローチャートである。 ジャンボパケット受信の処理について説明するフローチャートである。 パーソナルコンピュータの構成を示すブロック図である。
符号の説明
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 パケット処理部

Claims (6)

  1. 第1のパケットを受信する受信装置において、
    アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、前記第1のパケットから前記第1のパケットよりも格納されるデータのサイズの大きい第2のパケットを生成するときの、前記第1のパケットの数である第1の閾値を超えるか否かを判定する第1の判定手段と、
    前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第2の判定手段と、
    前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第2の閾値を超えるか否かを判定する第3の判定手段と、
    前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数を減じるように前記第1の閾値を設定する第1の設定手段と
    を備える受信装置。
  2. 前記第2の閾値を超えないと判定された場合、受信した前記第1のパケットから前記第2のパケットを生成し、前記アプリケーション層に処理を受け渡す処理を行う処理手段を備える
    請求項1の受信装置。
  3. 前記第1の設定手段は、前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数から1を減じるように前記第1の閾値を設定する
    請求項1の受信装置。
  4. 前記要求に応じて、前記第1の閾値、前記第2の閾値、および前記所定の時間の初期値を設定する第2の設定手段を備え、
    前記第1の判定手段は、アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、設定された前記第1の閾値を超えるか否かを判定し、
    前記第2の判定手段は、前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してから設定された前記所定の時間を経過したか否かを判定し、
    前記第3の判定手段は、前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、設定された前記第2の閾値を超えるか否かを判定する
    請求項1の受信装置。
  5. 第1のパケットを受信する受信装置の受信方法において、
    アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、前記第1のパケットから前記第1のパケットよりも格納されるデータのサイズの大きい第2のパケットを生成するときの、前記第1のパケットの数である第1の閾値を超えるか否かを判定する第1の判定ステップと、
    前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第2の判定ステップと、
    前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第2の閾値を超えるか否かを判定する第3の判定ステップと、
    前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数を減じるように前記第1の閾値を設定する設定ステップと
    を含む受信方法。
  6. 第1のパケットを受信する受信装置の処理を、コンピュータに行わせるプログラムにおいて、
    アプリケーション層からの要求に応じて受信した前記第1のパケットの数が、前記第1のパケットから前記第1のパケットよりも格納されるデータのサイズの大きい第2のパケットを生成するときの、前記第1のパケットの数である第1の閾値を超えるか否かを判定する第1の判定ステップと、
    前記第1の閾値を超えないと判定された場合、1つ前の前記第1のパケットを受信してからタイムアウトまでの所定の時間を経過したか否かを判定する第2の判定ステップと、
    前記所定の時間が経過したと判定された場合、前記所定の時間を連続で経過した回数が、許容している前記タイムアウトの回数である第2の閾値を超えるか否かを判定する第3の判定ステップと、
    前記第2の閾値を超えると判定された場合、前記第2のパケットを生成するときの前記第1のパケットの数を減じるように前記第1の閾値を設定する設定ステップと
    を含むプログラム。
JP2006017207A 2006-01-26 2006-01-26 受信装置および方法、並びにプログラム Expired - Fee Related JP4363404B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006017207A JP4363404B2 (ja) 2006-01-26 2006-01-26 受信装置および方法、並びにプログラム
US11/624,458 US8121151B2 (en) 2006-01-26 2007-01-18 Reception apparatus and method and program
CN200710008152A CN100593305C (zh) 2006-01-26 2007-01-26 接收装置和方法、以及程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006017207A JP4363404B2 (ja) 2006-01-26 2006-01-26 受信装置および方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2007201758A JP2007201758A (ja) 2007-08-09
JP4363404B2 true JP4363404B2 (ja) 2009-11-11

Family

ID=38285454

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006017207A Expired - Fee Related JP4363404B2 (ja) 2006-01-26 2006-01-26 受信装置および方法、並びにプログラム

Country Status (3)

Country Link
US (1) US8121151B2 (ja)
JP (1) JP4363404B2 (ja)
CN (1) CN100593305C (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101047711B (zh) * 2006-04-27 2010-08-18 华为技术有限公司 Ip报文传输、协商带宽节省能力和节省网络带宽的方法
JP4986155B2 (ja) * 2007-10-15 2012-07-25 横河電機株式会社 通信品質診断装置
US8023513B2 (en) * 2009-02-24 2011-09-20 Fujitsu Limited System and method for reducing overhead in a wireless network
CN104883335B (zh) * 2014-02-27 2017-12-01 王磊 一种全硬件tcp协议栈实现系统
US10841833B2 (en) 2016-10-12 2020-11-17 Qualcomm Incorporated Streamlined user plane headers for high data rates
CN108901079B (zh) * 2018-06-20 2021-03-09 Oppo(重庆)智能科技有限公司 超时时间确定方法、装置、设备及存储介质
US20220368765A1 (en) * 2021-05-13 2022-11-17 Agora Lab, Inc. Universal Transport Framework For Heterogeneous Data Streams
US11811877B2 (en) 2021-05-13 2023-11-07 Agora Lab, Inc. Universal transport framework for heterogeneous data streams

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732286A (en) * 1995-08-10 1998-03-24 Cirrus Logic, Inc. FIFO based receive packet throttle for receiving long strings of short data packets
US6353617B1 (en) * 2000-04-11 2002-03-05 Motorola, Inc. Method for accessing a communication medium
US7126917B2 (en) * 2001-11-08 2006-10-24 Motorola, Inc. Method for dynamically adjusting the number of retransmissions and NAKs in a communications system implementing TCP/IP
DE60236138D1 (de) * 2002-01-03 2010-06-10 Innovative Sonic Ltd Fenster-basierende Blockadevermeidung für ein drahtloses Hochgeschwindigkeits-Kommunikationssystem
JP3988475B2 (ja) 2002-02-05 2007-10-10 ソニー株式会社 送信装置、受信装置およびそれらの方法
US6940863B2 (en) * 2003-01-13 2005-09-06 The Regents Of The University Of California Edge router for optical label switched network
US7233573B2 (en) * 2003-02-08 2007-06-19 Hewlett-Packard Development Company, L.P. Apparatus and method for receiving data from a network
US7450599B2 (en) * 2003-02-08 2008-11-11 Hewlett-Packard Development Company, L.P. Apparatus and method for communicating with a network
US7310480B2 (en) * 2003-06-18 2007-12-18 Intel Corporation Adaptive framework for closed-loop protocols over photonic burst switched networks
CN1713633B (zh) * 2004-06-24 2010-07-07 华为技术有限公司 一种网络流量控制的方法

Also Published As

Publication number Publication date
JP2007201758A (ja) 2007-08-09
CN101009659A (zh) 2007-08-01
US20070171829A1 (en) 2007-07-26
US8121151B2 (en) 2012-02-21
CN100593305C (zh) 2010-03-03

Similar Documents

Publication Publication Date Title
JP4363404B2 (ja) 受信装置および方法、並びにプログラム
US8943206B2 (en) Network bandwidth detection and distribution
US7724771B2 (en) Communication apparatus and communication control method
US7773546B2 (en) System and method for a software-based TCP/IP offload engine for digital media renderers
JP2007317181A (ja) ネットワークストレージ装置
JP2007334899A (ja) 複数のタイプのデータ接続を利用して、データを通信するシステムおよび方法
JP5060572B2 (ja) データ通信装置及び方法
US20150010090A1 (en) Reception apparatus, reception method, and recording medium
EP1585288B1 (en) Allocation of temporary IP-addresses to devices in a network
JP2016521501A (ja) ブロードキャスティングシステムにおける動的キュー管理方法及び装置
US7523179B1 (en) System and method for conducting direct data placement (DDP) using a TOE (TCP offload engine) capable network interface card
US10284481B2 (en) Communication device, communication method, and storage medium
JP5481485B2 (ja) 通信装置とそれを用いた受信処理方法及び送信処理方法
KR20130038305A (ko) 컴퓨터 네트워크에서 데이터를 송신하기 위한 방법, 시스템, 서버, 디바이스, 컴퓨터 프로그램 및 컴퓨터 프로그램 제품
US9083617B2 (en) Reducing latency of at least one stream that is associated with at least one bandwidth reservation
US8532111B2 (en) Transmission apparatus, transmission method, and program
JP2007110680A (ja) 通信装置、通信プログラム、通信制御方法および記録媒体
JP2010021887A (ja) 集積回路装置及びデータ伝送システム
US20070165661A1 (en) Information-processing system, reception device, and program
WO2018142866A1 (ja) 転送装置、転送方法及びプログラム
JP2009116386A (ja) 情報処理装置および方法、並びにプログラム
JP6575082B2 (ja) 通信装置、通信制御プログラム、および通信制御方法
JP2006109016A (ja) 送受信装置、送受信制御方法、プログラム、およびメモリ
US8233478B2 (en) Method and an apparatus for data storage and communications
JP2013034101A (ja) Tcpセッション管理方法及びtcpプロキシ装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090728

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090810

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120828

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120828

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130828

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees