(57)【特許請求の範囲】
【請求項１】
プロセッサによるデータ通信のプロトコル処理をオフロードするプロトコル処理装置であって、
前記プロセッサからの、パケット送受信においてパケットデータを格納するためのメモリアドレスを含む転送情報とパケット送受信に関わるタイマ制御のためのタイマ情報とを含む送受信要求を保持する保持手段と、
前記保持手段に保持された送受信要求に含まれる転送情報にしたがって、メモリとデータリンク層との間のデータ転送を実行する転送手段と、を備え、
前記転送手段は、前記データ転送が完了した後に、前記送受信要求に含まれるタイマ情報にしたがってタイマを制御し、前記タイマの満了時には当該タイマの種別に基づいて前記プロセッサに割り込み処理を実行させるか否かを判定し、前記プロセッサに割り込みを実行させると判定された場合は、割り込み信号を前記プロセッサへ出力することを特徴とするプロトコル処理装置。
【請求項２】
前記タイマ情報が、タイムアウト値と、送受信のコネクション識別子と、タイマの種別と、タイマの起動を示す場合、
前記転送手段は、前記タイマ情報にしたがってタイマを起動し、前記タイムアウト値による当該タイマのタイマ満了時に、前記コネクション識別子と前記タイマの種別を前記プロセッサに通知することを特徴とする請求項１に記載のプロトコル処理装置。
【請求項３】
前記タイマ情報が、送受信のコネクション識別子と、タイマの種別と、タイマの停止を示す場合、
前記転送手段は、前記コネクション識別子と前記タイマの種別によって特定されるタイマを停止することを特徴とする請求項１に記載のプロトコル処理装置。
【請求項４】
前記タイマ情報は、更にタイマ満了時の通知先のプロセッサを示す通知先情報を含み、
前記転送手段は、前記タイマ情報にしたがって起動したタイマの満了時に、前記通知先情報によって示されるプロセッサに対して前記コネクション識別子と前記タイマの種別を通知することを特徴とする請求項２に記載のプロトコル処理装置。
【請求項５】
前記タイマの種別は、再送タイマ、遅延ＡＣＫタイマ、持続タイマのいずれかであることを特徴とする請求項２乃至４のいずれか１項に記載のプロトコル処理装置。
【請求項６】
前記送受信要求の前記保持手段における格納アドレスを登録する登録手段を更に備え、
前記転送手段は、前記登録手段に登録された格納アドレスにしたがって前記保持手段から送受信要求を読み出し、読み出した送受信要求にしたがって、データ転送及びタイマ制御を実行することを特徴とする請求項１に記載のプロトコル処理装置。
【請求項７】
プロセッサによるデータ通信のプロトコル処理をオフロードするプロトコル処理装置であって、
前記プロセッサからの送受信要求に応じて、メモリとデータリンク層との間のデータ転送を実行する第１の転送手段と、
タイマ値とともに、コネクション識別子とタイマの種別を含むネットワークタイマ情報をレジスタに保持することにより、前記送受信要求の処理に関連したタイマを起動するタイマ手段と、
前記タイマ手段で起動したタイマの計数を管理し、タイマ満了となったタイマに対応するレジスタに保持されている前記ネットワークタイマ情報に基づいて送信すべきパケットを決定し、該パケットを送信するべくメモリとデータリンク層との間のデータ転送を実行する第２の転送手段とを備え、
前記第２の転送手段は、前記タイマの種別に基づいて前記プロセッサに割り込み処理を実行させるか否かを判定し、前記プロセッサに割り込みを実行させると判定された場合は、割り込み信号を前記プロセッサへ出力することを特徴とするプロトコル処理装置。
【請求項８】
前記第２の転送手段は、ネットワークタイマ情報に対応するディスクリプタを登録したメモリを有し、タイマ満了となったタイマのネットワークタイマ情報に対応するディスクリプタを前記メモリから読み出し、読み出したディスクリプタにしたがってデータ転送を行うことを特徴とする請求項７に記載のプロトコル処理装置。
【請求項９】
前記第２の転送手段は、前記タイマの種別がＴＣＰ／ＩＰ通信におけるＡＣＫタイマを示す場合、自端末が受信したシーケンス番号を相手端末に通知するＡＣＫパケットを送出させることを特徴とする請求項７に記載のプロトコル処理装置。
【請求項１０】
前記第２の転送手段は、前記タイマの種別がＴＣＰ／ＩＰ通信における持続タイマを示す場合、プロービングパケットを構成するパケットを送出させることを特徴とする請求項７に記載のプロトコル処理装置。
【請求項１１】
前記第２の転送手段は、送信すべきデータの格納アドレスと転送サイズが記述された送信要求のアドレスを、前記ネットワークタイマ情報に基づいて特定し、特定されたアドレスに格納された送信要求にしたがってパケットを送信するべく、メモリとデータリンク層との間のデータ転送を実行することを特徴とする請求項７に記載のプロトコル処理装置。
【請求項１２】
プロセッサによるデータ通信のプロトコル処理をオフロードするプロトコル処理装置の制御方法であって、
保持手段が、前記プロセッサからの、パケット送受信においてパケットデータを格納するためのメモリアドレスを含む転送情報とパケット送受信に関わるタイマ制御のためのタイマ情報とを含む送受信要求を保持する保持工程と、
転送手段が、前記保持工程で保持された送受信要求に含まれる転送情報にしたがって、メモリとデータリンク層との間のデータ転送を実行する転送工程と、を有し、
前記転送工程では、前記データ転送が完了した後に、前記送受信要求に含まれるタイマ情報にしたがってタイマを制御し、前記タイマの満了時には当該タイマの種別に基づいて前記プロセッサに割り込み処理を実行させるか否かを判定し、プロセッサに割り込みを実行させると判定された場合は、割り込み信号を前記プロセッサへ出力することを特徴とするプロトコル処理装置の制御方法。
【請求項１３】
プロセッサによるデータ通信のプロトコル処理をオフロードするプロトコル処理装置の制御方法であって、
第１の転送手段が、前記プロセッサからの送受信要求に応じて、メモリとデータリンク層との間のデータ転送を実行する第１の転送工程と、
タイマ制御手段が、タイマ値とともに、コネクション識別子とタイマの種別を含むネットワークタイマ情報をレジスタに保持することにより、前記送受信要求の処理に関連したタイマを起動するタイマ制御工程と、
第２の転送手段が、前記タイマ制御工程で起動したタイマの計数を管理し、タイマ満了となったタイマに対応するレジスタに保持されている前記ネットワークタイマ情報に基づいて送信すべきパケットを決定し、該パケットを送信するべくメモリとデータリンク層との間のデータ転送を実行する第２の転送工程とを備え、
前記第２の転送工程では、前記タイマの種別に基づいて前記プロセッサに割り込み処理を実行させるか否かを判定し、前記プロセッサに割り込みを実行させると判定された場合は、割り込み信号を前記プロセッサへ出力することを特徴とするプロトコル処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク通信の分野に属し、より詳細にはプロセッサからパケット送受信処理をオフロードするプロトコル処理装置及び制御方法に関する。
【背景技術】
【０００２】
ギガビットイーサネット（登録商標）などの普及により汎用ＰＣのみならず、組込み機器においてもプロトコル処理を高速に実行できることが要求されている。ところで、ギガビットイーサネット（登録商標）のFull-wireの速度を達成するためには動作周波数３ＧＨｚ程度のプロセッサが必要になると言われている。これは、今日の組込み機器が一般的に搭載するプロセッサ能力を遥かに超えている。そこで、ＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）といったプロトコル処理に特化した補助的デバイスをシステムに付加し、広帯域なネットワーク通信を実現することが一般化しつつある。
【０００３】
さて、ＴＣＰ／ＩＰのプロトコル処理において重要となるのは、プロトコル処理と密接な関係を持つタイマ処理である（特許文献１）。従来のプロトコル処理装置においては、ソフトウェアタイマによる実装がよく用いられている。ソフトウェアタイマは、書き換え可能な記憶装置にタイマ値を記憶させ、一定間隔でプロセッサなどが記憶装置上のタイマ値をアップ、またはダウンカウントする。そして、タイマ値の規定値への到達をタイマ満了と見なし、タイマ満了時の処理を開始する手法である。ソフトウェアタイマは記憶装置の容量に比例して容易にタイマ数を増やすことが可能であるが、記憶装置上の全てのタイマ値を一定間隔でアップ、またはダウンカウントするため、プロセッサの負荷が増大する。
【０００４】
また、常時計時しているフリーランカウンタと記憶装置上のタイマ値を比較することでもソフトウェアタイマが実現できる。このソフトウェアタイマでは、設定時のフリーランカウンタ値に規定値を加算した値をタイマ値として、一定間隔でフリーランカウンタとタイマ値を比較し、一致した場合にタイマが満了したと見なす手法である。この場合も、個別にタイマ値を更新する必要は無いものの、一定間隔で全てのタイマのタイマ値を読み出してフリーランカウンタと比較する必要があるため、タイマ数の増加がプロセッサ負荷の増大につながる。
【０００５】
さらに、ＴＣＰ／ＩＰのプロトコル処理においては、持続タイマ、遅延ＡＣＫタイマ、再送タイマ、キープアライブタイマ、2MSLタイマなど様々なタイマがコネクション毎に必要である。その結果、数十から数百のコネクションを処理する場合、その数倍のタイマが必要となるため、タイマを管理するためのプロセッサの負荷増大は計り知れないものとなる。
【０００６】
上述したソフトウェアタイマの欠点を補うために、ハードウェアタイマ（タイマコントローラ）を用いる場合がある。これは、メモリ領域とは別にタイムカウント専用のレジスタを有し、タイマのアップカウント、またはダウンカウントを専用ハードウェアにより実現する手法である。この専用ハードウェアは、タイマ値が規定値に到達すると割り込み信号を出力してプロセッサにタイマの満了を通知する。プロセッサはこの割り込み信号を受信すると通常の処理を一時中断し、レジスタや変数などを退避させた後に対応する割り込み処理を開始する。プロセッサはタイマ値のアップカウント、またはダウンカウントを行う必要がなくなるため、ソフトウェアタイマと比較してプロセッサの負荷を抑えることが可能になっている。すなわち、この手法によれば、記憶装置に対するトラヒックの増加や、プロセッサに対する処理負荷の増大を押さえることが可能である。
【０００７】
タイマを使用した具体的なプロトコル処理として、以下のような処理が存在する。
【０００８】
パケット送信後に再送タイマを起動し、再送タイマが満了した場合、送信したパケットがネットワーク途中で喪失したと判断し、パケットの再送信を行う。再送タイマが満了する前にＡＣＫパケットが到着した場合、再送タイマを停止する。一方、この再送タイマが満了になる以前にＡＣＫ応答パケットを受信しなければ、それ以前に受信したＡＣＫ応答パケットのシーケンス番号に戻ってＴＣＰパケットが再度送信される。
【０００９】
パケットを受信すると遅延ＡＣＫタイマを起動し、異なるパケットを受信した場合は遅延ＡＣＫタイマを停止する。遅延ＡＣＫタイマが満了した場合は、パケット送信元へＡＣＫパケットを送信する。遅延ＡＣＫタイマはパケットを受信した場合にセットされ、ＡＣＫ応答パケットを送出する時間を待機するのに用いられる。この待機により、複数のパケットに対してＡＣＫ応答パケットを一つにまとめることができ、ＡＣＫ応答パケットによるトラヒックとＡＣＫカウント処理を削減する効果が得られる。
【００１０】
持続タイマは通信相手先が０サイズの受信ウィンドウを公告してきた場合にセットされる。この場合、通信相手先は何も受信出来ない状態であるので自局側はパケットを送信出来ない状態が継続されることになる。このとき、相手先の受信ウィンドウの状態を調べるために、ペイロードが１バイトサイズのプロービングパケットと呼ばれるパケットを相手先に送信し、通信相手先のＡＣＫパケットの到着を待つ。このプロービングパケットの送出タイミングを決定するために持続タイマは用いられる。
【００１１】
これらのタイマは接続時や、コネクションクローズ時に使用されるタイマとは異なり、ＴＣＰのコネクションが確立されている期間にわたって何度も使用される。そのため、割り込みを使用したタイマの場合、データ転送と並行してこれらのタイマに起因した割り込み処理が幾度も行われることになる。
【００１２】
以上述べたタイマ以外にもコネクション確立タイマ、キープアライブタイマ、FIN_WAIT_2タイマ、2MSLタイマなどがコネクションの確立時や切断時に使用されている。さらにＴＣＰ／ＩＰ通信を実現するためにこれらのタイマ値を基に多くのタイマ変数が用いられている。従って、通信システムにおけるタイマ処理のためには充分な記憶領域の確保と、タイマ処理能力をもったプロセッサを用いる必要がある。
【００１３】
パケット送受信処理がプロセッサからオフロードされているプロトコル処理装置においては、パケット送受信処理はプロセッサからの要求によって開始され、パケット送受信処理の完了は割り込み信号によってプロセッサへ通知される。パケット送受信処理完了が通知されたプロセッサは、完了したパケット送受信処理の内容に応じてタイマの起動・停止を行っている。割り込み処理に関しては、割り込みディスクリプタテーブルによってタイプ別に割り込みを処理することが可能な割り込みコントローラが特許文献２に記載されている。
【特許文献１】特開昭５９−１７７５７号公報
【特許文献２】特開２００５−２０２９６４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
以上述べたように上記従来例に見られるプロトコル処理装置では、ＴＣＰ／ＩＰでは持続タイマ、遅延ＡＣＫタイマ、再送タイマ、キープアライブタイマ、2MSLタイマなどのタイマセットがコネクション毎に必要である。数十から数百のコネクションを使用する場合、コネクションの数だけタイマセットが用いられるので、プロセッサのタイマ管理に関する負荷が大きくなってしまうという課題があった。
【００１５】
また、タイマセットの中でも遅延ＡＣＫタイマ、再送タイマ、持続タイマはパケットの送受信中に、頻繁にタイマの更新を行う必要がある場合があり、タイマ管理負荷の増大の一つの要因となっている。更に、ハードウェアタイマを用いた場合でも割り込み処理によるタイマの起動・停止がプロセッサの負荷となっている。複数コネクションが並列に動作し、タイマの起動・停止が頻発した場合、プロセッサの負荷が大きくなり、他処理に割り当て可能なプロセッサのリソースが減少してしまう。
【００１６】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、プロトコル処理に含まれるタイマに関わる処理をプロセッサからオフロードし、プロセッサの負荷を軽減するプロトコル処理装置を提供することにある。
【課題を解決するための手段】
【００１７】
上記の目的を達成するための本発明の一態様によるプロトコル処理装置は以下の構成を備える。すなわち、
プロセッサによるデータ通信のプロトコル処理をオフロードするプロトコル処理装置であって、
前記プロセッサからの、パケット送受信においてパケットデータを格納するためのメモリアドレスを含む転送情報とパケット送受信に関わるタイマ制御のためのタイマ情報とを含む送受信要求を保持する保持手段と、
前記保持手段に保持された送受信要求に含まれる転送情報にしたがって、メモリとデータリンク層との間のデータ転送を実行する転送手段と、を備え、
前記転送手段は、前記データ転送が完了した後に、前記送受信要求に含まれるタイマ情報にしたがってタイマを制御し、前記タイマの満了時には当該タイマの種別に基づいて前記プロセッサに割り込み処理を実行させるか否かを判定し、プロセッサに割り込みを実行させると判定された場合は、割り込み信号を前記プロセッサへ出力する。
【００１８】
また、上記の目的を達成するための本発明の他の態様によるプロトコル処理装置は以下の構成を備える。すなわち、
プロセッサによるデータ通信のプロトコル処理をオフロードするプロトコル処理装置であって、
前記プロセッサからの送受信要求に応じて、メモリとデータリンク層との間のデータの転送処理を実行する第１の転送手段と、
タイマ値とともに、コネクション識別子とタイマの種別を含むネットワークタイマ情報をレジスタに保持することにより、前記送受信要求の処理に関連したタイマを起動するタイマ手段と、
前記タイマ手段で起動したタイマの計数を管理し、タイマ満了となったタイマに対応するレジスタに保持されている前記ネットワークタイマ情報に基づいて送信すべきパケットを決定し、該パケットを送信するべくメモリとデータリンク層との間のデータの転送処理を実行する第２の転送手段とを備える。
【発明の効果】
【００１９】
本発明によれば、プロトコル処理に含まれるタイマに関わる処理をプロセッサからオフロードするので、プロセッサの負荷を軽減するプロトコル処理装置が提供される。
【発明を実施するための最良の形態】
【００２０】
以下、添付の図面を参照して、本発明の好適な実施形態を説明する。
【００２１】
［第１実施形態］
図１は、第１実施形態に係るプロトコル処理装置を含むシステムの構成例を説明する図である。
【００２２】
図１において、１０１はプロセッサであり、アプリケーションやＯＳ、デバイスドライバなどの一般的なソフトウェアを実行する。１０２はデータ転送部であり、プロセッサからのパケット送受信要求を受けて主記憶部１０５とＭＡＣ／ＰＨＹ１０６の間でパケットの送受信処理を行う。１０３はタイマであり、再送タイマ、遅延ＡＣＫタイマ、持続タイマとして使用される。タイマ１０３は複数の時間を同時に計測することが可能である。タイマ１０３の各計測には、
・再送タイマ、遅延ＡＣＫタイマ、持続タイマのいずれとして動作しているかを示すタイマ種別と、
・タイムアウト値と、
・タイマが使用されるコネクションを識別するためのコネクション識別子とが設定される。タイマ１０３は、起動されると、設定されたタイムアウト値を計測し、タイマ満了時に割り込み信号をアサートする。
【００２３】
１０４は割り込みコントローラであり、タイマ１０３やＭＡＣ／ＰＨＹ１０６、データ転送部１０２から出力される割り込み信号をプロセッサ１０１へ通知する。１０５は主記憶部であり、プロセッサ１０１が実行するプログラムとその作業領域のほか、データ転送部１０２が利用するデータ、作業領域およびプロセッサ１０１とデータ転送部１０２との通信用領域などが置かれる。１０６はネットワークのＭＡＣ（データリンク層）やＰＨＹ（物理層）であり、ネットワークから図示されないスイッチ、ハブ、ルータ等を介して他のネットワーク機器と接続される。１０７はバスであり、プロセッサ１０１、データ転送部１０２、タイマ１０３、割り込みコントローラ１０４、主記憶部１０５、ＭＡＣ／ＰＨＹ１０６を接続する。
【００２４】
続いて、図１に示したプロトコル処理装置の動作について説明する。なお、プロトコル処理装置のタイマ１０３としては、再送タイマ、遅延ＡＣＫタイマ、持続タイマなどが存在するが、本実施形態においては再送タイマを用いて説明を行う。図２は、第１実施形態によるデータ通信処理を示すフローチャートである。
【００２５】
まず、パケット送信時の動作について説明する。プロセッサ１０１上で動作するユーザアプリケーションプログラムからＴＣＰによるストリーム送信が要求されると、プロセッサ１０１は主記憶部１０５上にあるストリームデータからパケットを生成する（図２のステップＳ１０１）。パケット生成後、プロセッサ１０１はデータ転送部１０２に対するパケット送受信要求を主記憶部１０５へ書き込む（ステップＳ１０２）。
【００２６】
本実施形態のパケット送受信要求は、図３の（ａ）で示すように、転送情報とタイマ情報とで構成される。転送情報は、
・データ転送部１０２にパケット送信処理を行わせるか、パケット受信処理を行わせるかを示す要求処理、
・パケット送信処理要求時には送信するパケットの主記憶部１０５上における先頭アドレスを、パケット受信処理要求時には受信するパケットを格納する主記憶部１０５上における先頭アドレスを示す転送先／転送元アドレス、
・転送するデータ量を示す転送サイズ、
を有する。また、タイマ情報は、
・パケット送受信処理を行うコネクションを識別するためのコネクション識別子と、
・パケット送受信処理後に操作するタイマの種別を示すタイマ種別と、
・タイムアウト値とタイマに対して起動・停止を行うかを示すタイマ操作と、
・パケット送受信処理後に複数タイマを操作する場合に次のタイマ情報のアドレスを示す次タイマ情報アドレスとを有する。
【００２７】
本実施形態においてはタイマ１０３にタイムアウト値を設定する例を示しているが、タイマ種別によってタイムアウト値を固定できる場合のタイマ情報のデータ構成例は、タイムアウト値が不要となるので、図３の（ｄ）のようになる。例えば、ストリーム送信が要求されるコネクションの識別子が０であり、送信すべきパケットの先頭アドレスが０x１０００_００００、転送サイズが１０２４バイトであったとする。この場合、プロセッサ１０１は図３の（ｂ）に示すパケット送受信要求（送信要求）を主記憶部１０５へ書き込む。こうして、主記憶部１０５は、プロセッサ１０１からの、パケット送受信のための転送情報と、タイマ制御（タイマ操作）のためのタイマ情報とを含むパケット送受信要求を保持する保持部として機能する。
【００２８】
パケット送受信要求を主記憶部１０５へ書き込んだ後、プロセッサ１０１はパケット送受信要求の主記憶部１０５上の先頭アドレスをデータ転送部１０２へ通知する（ステップＳ１０３）。
【００２９】
データ転送部１０２は通知されたアドレスを用いて、主記憶部１０５からパケット送受信要求を読み出す（ステップＳ１１１）。そして、データ転送部１０２は、読み出したパケット送受信要求から、当該要求が送信要求か受信要求かを判定する（ステップＳ１１２）。ここでは、送信要求であるので、データ転送部１０２は、読み出したパケット送受信要求に従って転送先／転送元アドレスで指定されたアドレスから転送サイズで指定されたデータ量のデータを読み出し、ＭＡＣ／ＰＨＹ１０６へ転送する（ステップＳ１１３）。こうして、データ転送部１０２は、主記憶部１０５に保持された送受信要求に含まれる転送情報にしたがって、メモリとデータリンク層との間のデータの転送処理を実行する。ＭＡＣ／ＰＨＹ１０６へパケットを転送した後、データ転送部１０２は、パケット送受信要求に含まれているタイマ情報に基づいてコネクション識別子とタイマ種別、タイムアウト値をタイマ１０３に設定し、時間計測を起動する（ステップＳ１１５）。すなわち、本実施形態のデータ転送部１０２は、データの転送処理が完了した後に、当該送受信要求に含まれているタイマ情報にしたがってタイマを操作するタイマ制御部としても機能するものである。図３の（ｂ）に示される送受信要求の場合、タイマ種別＝再送タイマ、タイマ操作＝起動であるので、再送タイマが起動される。
【００３０】
タイマ１０３は設定されたタイマの計数を開始する（ステップＳ１２１）。そして、タイムアウト値まで時間を計測すると、タイマ満了の割り込みを出力する（ステップＳ１２２、Ｓ１２３）。
【００３１】
タイマ１０３から出力された割り込み信号は、割り込みコントローラ１０４経由で、プロセッサ１０１に通知される。割り込みを通知されたプロセッサ１０１は、タイマ１０３から当該満了した時間計測に関して設定されているコネクション識別子とタイマ種別を読み出す。すなわち、タイムアップを通知したタイマから、そのタイマに設定されたコネクション識別子とタイマ種別をプロセッサ１０１が読み出す。そして、読み出したコネクション識別子により処理を行うコネクションを特定し、タイマ種別により行う割り込み処理を特定する（ステップＳ１０４）。例えば、上記の例では、タイマ種別が再送タイマとなっているので、プロセッサ１０１は、コネクション識別子で示されるコネクションに対して、パケットの再転送処理を開始する。
【００３２】
次に、パケット受信時の動作について説明する。ＭＡＣ／ＰＨＹ１０６がネットワークからパケットを受信すると、割り込み信号をアサートし、割り込みコントローラ１０４がプロセッサ１０１へ通知する。割り込みを通知されたプロセッサ１０１は、受信されたパケットが格納されるＭＡＣ／ＰＨＹ１０６のバッファからＩＰヘッダ及びＴＣＰヘッダを読み出す。プロセッサ１０１はＩＰヘッダ内の送信元／受信先ＩＰアドレスからコネクション識別子を判断する。また、ＴＣＰヘッダ内のＡＣＫフラグが立ち、かつ、確認応答番号がその時点で最後に送信したデータのシーケンス番号＋１であった場合、プロセッサ１０１は、図３の（ｃ）に示すパケット送受信要求（受信要求）を主記憶部１０５へ書き込む。パケット送受信要求を主記憶部１０５へ書き込んだ後、プロセッサ１０１はパケット送受信要求の主記憶部１０５上の先頭アドレスをデータ転送部１０２へ通知する。なお、以上のプロセッサ１０１の動作についてはフローチャートによる図示は省略した。
【００３３】
データ転送部１０２は、通知された先頭アドレスからパケット送受信要求を読み出す（ステップＳ１１１）。そして、読み出したパケット送受信要求（ここでは受信要求）に従ってＭＡＣ／ＰＨＹ１０６のバッファから転送サイズで指定されたサイズ分のデータを読み出し、主記憶部１０５上の転送先／転送元アドレスで指定されたアドレスへ書き込む。この処理は、図２のステップＳ１１２、Ｓ１１４に示されている。図３の（ｃ）において、タイマ操作＝停止となっているので、主記憶部１０５への書き込みが終了した後、データ転送部１０２はタイマ情報のコネクション識別子とタイマ種別から特定されるタイマ１０３の時間計測を停止する（ステップＳ１１６）。このように、受信処理においても、主記憶部１０５が、プロセッサ１０１からの、パケット送受信のための転送情報と、タイマ制御のためのタイマ情報とを含む送受信要求を保持する。そして、データ転送部１０２は、主記憶部１０５に保持された送受信要求に含まれる転送情報にしたがって、データリンク層のバッファから主記憶部１０５へのデータの転送処理を実行する。そして、データ転送部１０２は、データの転送処理が完了した後に、送受信要求に含まれるタイマ情報にしたがってタイマを制御（操作）する（上記の例では、特定のタイマの停止を行う）タイマ制御部としても機能する。
【００３４】
１つのパケット送受信要求において複数のタイマを起動・停止する場合は、タイマ情報内の次タイマ情報には次タイマ情報の開始アドレスが格納され、操作すべきタイマがリスト化される。データ転送部１０２は、ステップＳ１１５またはステップＳ１１６において、パケット送受信処理終了後、リスト化されたタイマ情報を手繰り、順にタイマ操作を行う。
【００３５】
以上のように、第１実施形態によれば、プロトコル処理と密接な関係を持つタイマの起動・停止の操作がプロセッサからオフロードされることにより、プロセッサの負荷を軽減することが可能となる。そして、プロセッサのリソースを他プロトコル処理に割り当てることが可能になるため、プロトコル処理の高速化が可能になる。
【００３６】
［第２実施形態］
図４は、第２実施形態に係るプロトコル処理装置を含むシステムの構成例を示す図である。
【００３７】
図４において、送信処理用プロセッサ２０１はＴＣＰ／ＩＰ送信処理用のプロセッサであり、受信処理用プロセッサ２０８はＴＣＰ／ＩＰ受信処理用のプロセッサである。２０２はデータ転送部であり、送信処理用プロセッサ２０１、受信処理用プロセッサ２０８からのパケット送受信要求を受けて主記憶部２０５とＭＡＣ／ＰＨＹ２０６間でパケットの転送を行う。２１０はパケット送受信要求格納部であり、データ転送部２０２がパケット送受信処理中であるために、送信処理用プロセッサ２０１や受信処理用プロセッサ２０８からのパケット送受信要求を受け取れない場合のためにパケット送受信要求を格納する。より具体的には、主記憶部２０５上の、パケットの送受信要求が格納されている先頭アドレスがパケット送受信要求格納部２１０に格納される。なお、送信処理用プロセッサ２０１がデータ転送部２０２の状態をチェックし、パケット送受信要求を受け取れないと判定した場合に、パケット送受信要求の格納アドレスをパケット送受信要求格納部２１０に格納するように構成しても良い。
【００３８】
２０３はタイマであり、再送タイマ、遅延ＡＣＫタイマ、持続タイマ等として使用される。タイマ２０３は複数の時間を同時に計測することが可能である。タイマ２０３の各計測には、
・再送タイマ、遅延ＡＣＫタイマ、持続タイマのいずれとして動作しているかを示すタイマ種別と、
・タイムアウト値と、
・タイマが使用されるコネクションを識別するためのコネクション識別子と、
・満了時の割り込み通知先を示すタイマ満了時通知先とが設定される。
第２実施形態では、起動されたタイマ２０３は設定されたタイムアウト値を計測する。そして、タイマ２０３は、タイマ満了時には送信処理用割り込みコントローラ２０４や受信処理用割り込みコントローラ２０９との協働により、設定された割り込み通知先へ割り込み信号をアサートする。
【００３９】
２０４、２０９はそれぞれ送信処理用割り込みコントローラ、受信処理用割り込みコントローラであり、タイマ２０３の割り込み信号や、ＭＡＣ／ＰＨＹ２０６からの割り込み信号を送信処理用プロセッサ２０１や受信処理用プロセッサ２０８へ通知する。２０５は主記憶部であり、送信処理用プロセッサ２０１及び受信処理用プロセッサ２０８が実行するプログラムとその作業領域が配置される。更に、主記憶部２０５には、データ転送部２０２の利用するデータや作業領域、送信処理用プロセッサ２０１及び受信処理用プロセッサ２０８とデータ転送部２０２との間の通信用領域などが置かれる。２０６はネットワークのＭＡＣ（データリンク層）やＰＨＹ（物理層）であり、ネットワークから図示されないスイッチ、ハブ、ルータ等を介して他のネットワーク機器と接続される。２０７はバスであり、上述した各部を接続する。
【００４０】
続いて、第２実施形態におけるプロトコル処理装置の動作について説明する。プロトコル処理装置が実行するプロトコル処理において再送タイマ、遅延ＡＣＫタイマ、持続タイマなどのタイマが存在するが、本実施形態においては再送タイマを用いて説明する。なお、第２実施形態におけるプロトコル処理装置の動作を示すフローチャートとして、図２を流用する。
【００４１】
送信処理用プロセッサ２０１上で動作するユーザアプリケーションプログラムからＴＣＰによるストリーム送信が要求されると、送信処理用プロセッサ２０１は主記憶部２０５上にあるストリームデータからパケットを生成する（ステップＳ１０１）。パケット生成後、送信処理用プロセッサ２０１は主記憶部２０５上にデータ転送部２０２に対するパケット送受信要求を書き込む（ステップＳ１０２）。
【００４２】
パケット送受信要求は図５の（ａ）に示すように、
・データ転送部２０２にパケット送信処理を行わせるか、パケット受信処理を行わせるかを示す要求処理と、
・パケット送信処理要求時には送信するパケットの主記憶部２０５上の先頭アドレスを示し、パケット受信処理要求時には受信するパケットを格納する主記憶部２０５上の先頭アドレスを示す転送先／転送元アドレスと、
・転送するデータ量を示す転送サイズ、
の各情報（転送情報）に加えて、
・パケット送受信処理を行うコネクションを識別するためのコネクション識別子と、
・パケット送受信処理後に操作するタイマの種別を示すタイマ種別と、
・タイマのタイムアウト値と、
・タイマに対して起動・停止を行うかを示すタイマ操作とタイマ満了時の割り込み通知先を示すタイマ満了時通知先と、
・パケット送受信処理後に複数タイマを操作する場合に次のタイマ情報のアドレスを示す次タイマ情報アドレスと、
を含むタイマ情報で構成される。
【００４３】
なお、本実施形態において、タイマ２０３にタイムアウト値を設定しているが、タイマ種別によってタイムアウト値を固定する場合のタイマ情報は図５の（ｄ）のようになる。例えば、ストリーム送信が要求されるコネクションの識別子が０であり、送信すべきパケットの先頭アドレスが０x１０００_００００、転送サイズが１０２４バイトであったとする。この場合、送信処理用プロセッサ２０１は図５の（ｂ）にあるパケット送受信要求を主記憶部２０５へ書き込む。すなわち、主記憶部２０５は、送信処理用プロセッサ２０１から、パケット送受信のための転送情報と、タイマ操作のためのタイマ情報とを含む送受信要求を保持する保持部として機能する。
【００４４】
続いて、送信処理用プロセッサ２０１はパケット送受信要求の先頭アドレスをデータ転送部２０２に通知する（ステップＳ１０３）。第２実施形態では、データ転送部２０２は、まず、パケット送受信要求格納部２１０に格納し、データ転送部２０２がパケット送受信要求格納部２１０に格納されたアドレスを読み出す、という構成を有する。パケット送受信要求格納部２１０は、主記憶部２０５に保持された送受信要求の格納アドレスを登録する登録部として機能する。
【００４５】
データ転送部２０２は、パケット送受信要求格納部２１０にアドレスが格納されている場合、パケット送受信要求格納部２１０へ最初に格納されたアドレスを読み出す。すなわち、パケット送受信要求格納部２１０に存在するアドレスのうち、最も最初に格納されたアドレスから順に読み出される。そして、データ転送部２０２は、そのアドレスにしたがって主記憶部２０５からパケット送受信要求を読み出す（ステップＳ１１１）。なお、読み出されたアドレスは、パケット送受信要求格納部２１０から消去される。消去されるタイミングとしては、パケット送受信要求格納部２１０からアドレスを読み出した後から次にパケット送受信要求格納部２１０からアドレスが読み出されるまでの間であればよい。本実施形態では、読み出しと同時に消去が行われる。第１実施形態では、プロセッサからデータ転送部へ直接に先頭アドレスが通知されたが、第２実施形態では、パケット送受信要求格納部２１０を介してプロセッサからデータ転送部へ先頭アドレスが通知される。そして、データ転送部２０２は、読み出したパケット送受信要求に従って、転送先／転送元アドレスで指定されたアドレスから転送サイズで指定されたデータ量のデータを読み出し、ＭＡＣ／ＰＨＹ２０６へ転送する（ステップＳ１１２、Ｓ１１３）。ＭＡＣ／ＰＨＹ２０６へパケットを転送した後、データ転送部２０２は、タイマ情報に基づいてコネクション識別子とタイマ種別、タイムアウト値、タイマ満了時通知先をタイマ２０３に設定し、時間計測を起動する（ステップＳ１１５）。このように、データ転送部２０２は、登録部としてのパケット送受信要求格納部２１０に登録された格納アドレスにしたがって主記憶部２０５から送受信要求を読み出し、データの転送処理及びタイマ操作を実行する。
【００４６】
タイマ２０３は設定されたタイムアウト値までの時間を計測すると、タイマ満了時通知先に指定されたプロセッサ（ここでは送信処理用プロセッサ２０１）に送信処理用割り込みコントローラ２０４経由で割り込みを通知する（ステップＳ１２１〜Ｓ１２２）。すなわち、上述したように、タイマ情報はタイマ満了時の通知先のプロセッサを示す通知先情報を含む。そして、タイマ２０３は、タイマの満了時に、対応するタイマ情報に含まれている通知先情報が示すプロセッサに対して当該満了の通知（割り込み通知）を行う。割り込みを通知された送信処理用プロセッサ２０１は、タイマ２０３から満了した時間計測に設定されたコネクション識別子とタイマ種別を読み出す。そして、送信処理用プロセッサ２０１は、読み出したコネクション識別子により処理を行うコネクションを、タイマ種別により行う処理を特定し、実行する（ステップＳ１０４）。図５の（ｂ）に示されるパケット送受信要求が処理された場合、送信処理用プロセッサ２０１はコネクション識別子０で示されるコネクションに対して、パケットの再転送処理を開始する。
【００４７】
次に、データの受信処理について説明する。ＭＡＣ／ＰＨＹ２０６がネットワークからパケットを受信すると、割り込み信号をアサートする。受信処理用割り込みコントローラ２０９は、この割り込み信号を受信処理用プロセッサ２０８へ通知する。割り込みを通知された受信処理用プロセッサ２０８は、受信されたパケットが格納されるＭＡＣ／ＰＨＹ２０６のバッファからＩＰヘッダ及びＴＣＰヘッダを読み出す。受信処理用プロセッサ２０８はＩＰヘッダ内の送信元／受信先ＩＰアドレスからコネクション識別子を判断する。また、受信処理用プロセッサ２０８は、ＴＣＰヘッダ内のＡＣＫフラグが立ち、かつ、確認応答番号がその時点で最後に送信したデータのシーケンス番号＋１であった場合、図５の（ｃ）にあるパケット送受信要求を主記憶部２０５へ書き込む。
【００４８】
パケット送受信要求を主記憶部２０５へ書き込んだ後、受信処理用プロセッサ２０８はパケット送受信要求の主記憶部２０５上の先頭アドレスをパケット送受信要求格納部２１０へ格納する。
【００４９】
データ転送部２０２は、パケット送受信要求格納部２１０にアドレスが格納されている場合、パケット送受信要求格納部２１０へ最初に格納されたアドレスを用いて、主記憶部２０５からパケット送受信要求を読み出す（ステップＳ１１１）。そして、読み出したパケット送受信要求に従って、ＭＡＣ／ＰＨＹ２０６のバッファから転送サイズで指定されたサイズ分のデータを読み出し、主記憶部２０５上の転送先／転送元アドレスで指定されたアドレスへ書き込む（ステップＳ１１２，Ｓ１１４）。主記憶部２０５への書き込みが終了した後、データ転送部２０２は、タイマ２０３のうちタイマ情報のコネクション識別子とタイマ種別で特定される時間計測を停止する（ステップＳ１１６）。
【００５０】
以上のように、第２実施形態によれば、プロトコル処理を複数プロセッサで実行している場合においても、プロトコル処理と密接な関係を持つタイマの起動・停止の操作をプロセッサからオフロードするので、プロセッサの負荷を軽減することが可能となる。そして、プロセッサリソースを他プロトコル処理に割り当てることで、プロトコル処理の高速化が可能になる。なお、上記第２実施形態では、送信処理用プロセッサと受信処理用プロセッサを分けたが、送信処理が可能な複数のプロセッサを備えた構成であってもよいし、受信処理が可能な複数のプロセッサを備えた構成であってもよいことは明らかである。また、送受信が可能な複数のプロセッサを備えた構成であってもよいことも明らかである。
【００５１】
また、第２実施形態のプロトコル処理装置は、プロセッサからのパケット送受信処理要求を一時的に格納するパケット送受信要求格納部２１０を有する。これにより、複数プロセッサの同時動作やプロトコル処理高速化によりパケット送受信要求が頻発した場合であっても、プロセッサの待ち時間を減少することが可能になる。
【００５２】
以上説明したように、第１、第２実施形態によれば、プロトコル処理と関係を持つタイマの起動・停止をプロセッサからオフロードすることにより、プロセッサの負荷を軽減することが可能となる。そして、プロセッサリソースを他プロトコル処理に割り当てることで、プロトコル処理の高速化も可能になる。
【００５３】
また、プロセッサからのパケット送受信処理要求を一時的に格納する手段を持つことにより、複数プロセッサの同時動作やプロトコル処理高速化によりパケット送受信要求が頻発した場合であっても、プロセッサの待ち時間を減少することが可能になる。
【００５４】
［第３実施形態］
図６は、第３実施形態によるネットワークタイマ装置を含むプロトコル処理装置の構成例を示すブロック図である。
【００５５】
図６において３０１はソフトウェアを実行するプロセッサである。３０２は送受信時のデータ移動などを行うデータ転送部である。３０３はネットワーク処理に必要な時間を計測するタイマである。３０４はデータ転送終了やタイマ満了通知などをプロセッサに通知する割り込みコントローラである。３０５はプロセッサの制御情報、データ、送受信データなどを保管する主記憶部である。３０６はネットワークと接続するためのデータリンク層および物理層のデバイス（以下、ＭＡＣ／ＰＨＹ）である。
【００５６】
次に、第３実施形態によるプロトコル処理装置を説明する。第１、第２実施形態では、タイマの起動・停止の操作がプロセッサからオフロードされたが、第３実施形態ではタイマのタイムアップに伴う割り込み処理の一部がプロセッサからオフロードされる。
【００５７】
第３実施形態のプロトコル処理装置の動作について図７のフローチャートを参照して説明する。プロセッサ３０１上で動作するユーザアプリケーションプログラムからＴＣＰによるストリーム送信が要求されると、プロセッサ３０１は主記憶部３０５上にあるストリームデータからパケットを生成する（ステップＳ２０１）。パケット生成後、プロセッサ３０１はデータ転送部３０２に対するパケット送受信要求を主記憶部３０５へ書き込む（ステップＳ３０２）。ここで、パケット送受信要求は、例えば、
・データ転送部３０２にパケット送信処理を行わせるか、パケット受信処理を行わせるかを示す要求処理と、
・パケット送信処理要求時には送信するパケットの主記憶部３０５上の先頭アドレス、パケット受信処理要求時には受信するパケットを格納する主記憶部３０５上の先頭アドレスを示す転送先／転送元アドレスと、
・転送するデータ量を示す転送サイズとを含む転送情報を有する。第３実施形態のパケット送受信要求は、第１、第２実施形態とは異なり、図３に示したような「タイマ情報」は持っていない。
【００５８】
パケット送受信要求を主記憶部３０５へ書き込んだ後、プロセッサ３０１はパケット送受信要求の主記憶部３０５上の先頭アドレスをデータ転送部３０２へ通知する（ステップＳ２０３）。
【００５９】
データ転送部３０２は、通知されたアドレスを用いて、主記憶部３０５からパケット送受信要求を読み出す（ステップＳ２２１）。そして、データ転送部３０２は、読み出したパケット送受信要求から、当該要求が送信要求か受信要求かを判定する（ステップＳ２２２）。送信要求の場合、データ転送部３０２は、読み出したパケット送受信要求に従って転送先／転送元アドレスで指定されたアドレスから転送サイズで指定されたデータ量のデータを読み出し、ＭＡＣ／ＰＨＹ３０６へ転送する（ステップＳ２２３）。受信要求の場合、データ転送部３０２は、ＭＡＣ／ＰＨＹ３０６のバッファから転送サイズで指定されたサイズ分のデータを読み出し、主記憶部３０５上の転送先／転送元アドレスで指定されたアドレスへ書き込む（ステップＳ２２２、Ｓ２２４）。このようにデータ転送部３０２は、プロセッサ３０１からの送受信要求に応じて、メモリとデータリンク層との間のデータの転送処理を実行する第１の転送部として機能する。
【００６０】
プロセッサ３０１は、タイマ３０３のタイマレジスタを設定し、当該プロトコル処理に必要なタイマを起動する。
【００６１】
第３実施形態のタイマ３０３は、ネットワーク処理に特化したネットワークタイマ装置である。タイマ３０３は、内部に複数のタイマレジスタを持ち、それぞれのタイマレジスタには、カウントするタイマ値とともに、通信先を特定するためのコネクション識別子とタイマ種別を含むネットワークタイマ情報が登録される。プロセッサ３０１が、タイマ値とともにネットワークタイマ情報をレジスタに登録すると、タイマ３０３はタイマ動作を開始する。なお、本実施形態の場合、タイマの起動（Setup）、中断（Abandon）などのタイマ操作情報を有している。したがって、ステップＳ２０４において、送受信処理に関連したタイマの起動や中断を示すタイマ操作情報により、プロセッサ３０１は、タイマの起動や中断を制御できる。
【００６２】
図８は、第３実施形態のタイマ３０３のタイマレジスタに登録される情報を示す図である。複数のタイマが起動される場合は、複数のタイマのそれぞれに対してタイマレジスタが設けられる。図８において、有効フラグフィールド５０１には有効フラグが格納される。この有効フラグの有効状態は計時中であることを示し、有効フラグの無効状態は計時停止状態或いは計時終了状態を示す。タイマ値フィールド５０２には計時するティック値が書き込まれる。本実施形態のタイマ３０３は、あるイベントを受けてからイベントを起すまでの時間、即ち経過時間を取り扱っている。
【００６３】
コネクション識別子フィールド５０３にはコネクション識別子が格納される。タイマ３０３はネットワーク処理に特化しているタイマであるため、タイマに連動してコネクション識別子の情報を他モジュールの制御のために使用する。なお、コネクションとは通信相手先を特定するための情報であり、ＴＣＰ／ＩＰでは自ＩＰアドレス、相手ＩＰアドレス、自ポート番号、相手ポート番号の４つの情報を示し、コネクション識別子からコネクションを特定することが出来る。タイマ種別フィールド５０４は、それぞれのコネクションで使用されるタイマの種別を特定する情報が格納される。従来例でも説明したようにＴＣＰ／ＩＰではコネクション毎に複数のタイマが用いられている。例えば、コネクション確立タイマ、再送タイマ、遅延ＡＣＫタイマ、持続タイマ、TIME_WAITタイマ、FIN_WAITタイマ、FIN_WAIT2タイマなど様々なタイプのタイマが使用される。タイマ種別フィールド５０４には、これらのいずれのタイマであるかを示すタイマ種別が格納されている。いずれかのタイマが満了になると、タイマ３０３はコネクション識別子とタイマ種別をデータ転送部３０２へ出力し、タイマレジスタのフラグを無効にする。
【００６４】
中断（Abandon）タイマ操作を受け付けた場合は計時の即時中断を意味し、コネクション識別子とタイマ種別によって特定されたタイマレジスタの有効フラグを無効状態にすることで計時を中断する。
【００６５】
タイマ３０３は、上記のようにしてプロセッサからの指示により設定されたタイマの計数を開始する（ステップＳ２１１）。そして、タイマの計数が満了になった場合（ステップＳ２１２）、対応するタイマレジスタに登録されているネットワークタイマ情報（コネクション識別子とタイマ種別）がデータ転送部３０２に送出される（ステップＳ２１３）。
【００６６】
コネクション識別子とタイマ種別を受け取ったデータ転送部３０２は、受け取った情報を基に、データ転送処理を実行したり、プロセッサ３０１への割り込み要求を行ったりする（ステップＳ２２５、Ｓ２２６）。このように、データ転送部３０２は、起動されたタイマを管理する。そして、データ転送部３０２は、タイマ満了となったタイマに対応するネットワークタイマ情報に基づいて送信すべきパケットを決定し、これを送信するべくメモリとデータリンク層との間のデータの転送処理を実行する第２の転送部として機能する。
【００６７】
例えば、ステップＳ２２６においてデータ転送部３０２がデータ転送を行う場合は、コネクション識別子とタイマ種別からディスクリプタアドレスを特定する。ディスクリプタとはデータ転送を行うために必要な情報であり、事前に主記憶部３０５などに記憶されている。ディスクリプタには、例えば、データの送信の手順（送信するべきアドレス範囲や送信先など）が記述されている。データ転送に先だってデータ転送部３０２は、主記憶部３０５から特定されたディスクリプタを読み込み、読み込んだディスクリプタに従ってデータ転送を行う。すなわち、主記憶部３０５上などにタイマ種別あるいはネットワークタイマ情報に対応したディスクリプタを予め用意しておく。そして、データ転送部３０２は、タイマの満了時にタイマが出力したコネクション識別子とタイマ種別に対応するディスクリプタを主記憶部３０５から読み出し、読み出したディスクリプタによりデータ転送処理を実行する。このようにすることで、データ転送部３０２は、タイマ満了に伴って自動的にデータ転送を開始することが出来る。また、タイマ種別によっては、後述するように、従来どおりにプロセッサに割り込み要求をかけることが望ましい場合もある。その場合は、データ転送部３０２が割り込み出力と共にタイマ３０３からの出力であることをプロセッサ３０１に通知するようにする（ステップＳ２２６）。すなわち、データ転送部３０２は、タイマ種別に基づいてプロセッサ３０１に割り込み要求をするか否かを判定する機能を有する。
【００６８】
次にコンピュータ間の通信として広く使われているＴＣＰ／ＩＰで用いられるネットワークタイマを上記構成のプロトコル処理装置で実現した場合の動作について説明する。
【００６９】
図９は一般的なＴＣＰ／ＩＰ通信を行っている通信機器間のパケットの送受信状態をシーケンス図で表したものである。図中、ｓｒｃとあるのはコネクションを能動的に確立しようとするアクティブ側の通信装置（以下、ｓｒｃ側）を示す。また、ｄｓｔとあるのはｓｒｃ側からのコネクション確立要求に応えて通信を行うパッシブ側の通信装置（以下、ｄｓｔ側）であることを示す。ＴＣＰ／ＩＰでは3wayHandshakeと呼ばれている仕組みによってコネクションを確立している。まず、ｓｒｃ側がＴＣＰパケット中のｓｙｎフラグを立てたパケットをｄｓｔ側に送信すると共にコネクション確立タイマを起動する。送信したパケットのｓｒｃ側のＩＰアドレスとポート番号、ｄｓｔ側のＩＰアドレスとポート番号の４つの変数はコネクション識別子に対応している。このコネクション識別子はユニークな番号であり、同じ識別子が別の４変数の組に割り当てられることはないので、コネクション識別子からｓｒｃ側とｄｓｔ側のＩＰアドレス、ポート番号を求めることも容易である。また、コネクション識別子にコネクションの通信状態を示す変数を対応させている。
【００７０】
このコネクション確立タイマはコネクションを確立する時に１度使用するタイマでその後に使用することはない。また、このコネクション確立タイマが満了時に行われる処理も、コネクション確立のために用意した変数領域を解放する程度の処理である。このため、コネクション確立タイマの自動化に伴うメリットは少ない。よって、データ転送部３０２は、タイマ３０３より送信されたタイマレジスタからタイマ種別がコネクション確立タイマであることを検知すると、割り込みコントローラ３０４へプロセッサ３０１に対する割り込み要求であることを通知する。
【００７１】
一方、コネクション確立タイマが満了にならずにｄｓｔ側からＳＹＮ＋ＡＣＫの２つのフラグがついたＴＣＰパケットをｓｒｃ側が受け取ると、ＴＣＰのステートはＳＹＮ＿ＳＥＮＴと呼ばれる状態に移行する。そして、ｓｒｃ側がＳＹＮ＋ＡＣＫに対するＡＣＫパケットを送出したところでｓｒｃ側はEstablished、即ちコネクションが確立したことを表す。ｄｓｔ側はｓｒｃ側のＡＣＫパケットを受け取ったところでコネクションが確立したことを知る。コネクションが確立されるとどちら側からパケットを送信しても問題ないが、図９ではｓｒｃ側がパケットを送信した場合を示している。
【００７２】
ＴＣＰ／ＩＰでは常にデータの送信を確認しながら通信を行うため、プロセッサ３０１は、パケット送信と同時に再送タイマを起動する。プロセッサ３０１は、再送タイマを起動するためにタイマ３０３に対してタイマレジスタにタイマ値とコネクション識別子、タイマ種別（＝再送タイマ）を登録し、タイマレジスタの有効フラグを立てる。送信したパケットに対するＡＣＫパケットがｄｓｔ側から返ってきた場合、受信確認できたものと見なされ再送タイマは停止される。即ち、当該再送タイマのタイマレジスタのフラグが無効となる。これは、上述した中断（Abandon）の操作情報を用いることで実現できる。パケットの送信が再開されると共に再送タイマは再び起動される。このときのタイマ値は、プロセッサ３０１により再設定されることになる。実際のＴＣＰ／ＩＰでは通信状況などから再送タイマの値を動的に変化させる場合があるが、本実施形態においてはその動きは省略する。このように再送タイマはパケットを送信する毎に起動され、ＡＣＫパケットを受け取る毎に停止される。
【００７３】
ｓｒｃ側でＡＣＫパケットを受信しないと再送タイマが満了となる。タイマ３０３は、満了になった再送タイマのコネクション識別子とタイマ種別（この場合は再送タイマ）をデータ転送部３０２に通知する。この場合、すでに送信した送信データについてＡＣＫを受けていないことから、データ転送部３０２は、当該送信データを保持したままである。したがって、データ転送部３０２は、当該データ転送に使用したディスクリプタを再利用してＡＣＫポイントからのパケット再送信を開始する（ステップＳ２２６）。
【００７４】
一方、ｄｓｔ側ではパケットを受信する度にＴＣＰ／ＩＰ通信装置では遅延ＡＣＫタイマが起動される。遅延ＡＣＫタイマは受信パケット毎にＡＣＫパケットを送信すると通信トラヒックが増大してしまうために、ある程度受信パケットをまとめたＡＣＫパケットを送信するようにＡＣＫパケットの送信を抑圧する為のタイマである。遅延ＡＣＫタイマの満了にともなって、ｄｓｔ側からｓｒｃ側に通信確認パケットであるＡＣＫパケットが送信される。このＡＣＫパケットは現時点での通信状況を相手側に通知するためのパケットであるため、データ送信要求が別にある場合は除き、ペイロードを持たないことが多い。そこで主記憶部３０５上に予めＡＣＫパケットを作成しておき、データ転送部３０２は、ステップＳ２２６において、コネクション識別子の情報（ＩＰアドレス、ポート番号、シーケンス番号など）と合成してＡＣＫパケットを生成する。そして、データ転送部３０２は、生成したＡＣＫパケットをＭＡＣ／ＰＨＹ３０６に転送する。このようにすることで遅延ＡＣＫタイマの満了に伴って、プロセッサ３０１を介さずに、自動的にＡＣＫパケットが送信されることになる。こうして、上記第２の転送部としてのデータ転送部３０２は、ネットワークタイマ情報に含まれるタイマの種別がＴＣＰ／ＩＰ通信におけるＡＣＫタイマを示す場合、自端末が受信したシーケンス番号を相手端末に通知するＡＣＫパケットを送出する。
【００７５】
次に持続タイマについて説明する。送信側の通信能力と比較して受信側の通信能力が低く受信側の通信の為のメモリを使い切った場合や、アプリケーションのデータ処理が受信バッファが蓄積するスピードに追いつかない場合に、受信Windowが‘０’であることを送信側に通知することがある。これは‘０’window公告と呼ばれるもので送信先の受信バッファが無くなったため公告された側は送信を停止する。
【００７６】
しかし、永久に止めておくわけにもいけないので、ある持続タイマが満了となる間隔をもってプロービングパケットと呼ばれる探査用のパケットをｄｓｔ側に送信する。プロービングパケットを送りつけることによってｄｓｔ側はＡＣＫパケットを送出し、受信Windowの最新値を送信側に通知する。プロービングパケットは事前に用意することが出来るパケットで受信側の性能が送信側と比較して劣っている場合に良く生成されるパケットであるため自動化することで他のコネクションに対して影響を与えずにプロービングパケットを送信することが出来る。すなわち、タイマ満了したタイマのタイマ種別が持続タイマであった場合は、データ転送部３０２はプロービングパケットを自動的にｄｓｔ側に送信する。
【００７７】
以上、第３実施形態のプロトコル処理装置における再送タイマ、遅延ＡＣＫタイマ、持続タイマの動作に対してタイマ満了時の処理について説明した。他のＴＣＰタイマ、TIME_WAIT、FIN_WAIT、FIN_WAIT2などのタイマはコネクション確立タイマと同様にコネクションのクローズ時に一度起動されるだけの場合が多い。そのため、頻繁にコネクションをオープン、クローズするシステムでない限りは割り込みによるプロセッサの処理で満足な処理速度を得ることが出来る。
【００７８】
以上説明したように、第３実施形態によれば、コネクション型通信において使用されるタイマに、コネクション識別子とタイマ種別からなるネットワークタイマ情報が付加される。このため、タイマ満了の通知を受けたデータ転送部がネットワークタイマ情報からディスクリプタを読み込みに行き、データ転送を実行することが出来る。そのため大幅にプロセッサ負荷を削減することができ、削減したプロセッサリソースをプロトコル処理に回すことで処理能力の向上を見込むことができる。
【００７９】
なお、第３実施形態に示したタイマ満了時の処理手順を第１実施形態または第２実施形態に適用可能であることはいうまでもない。
【００８０】
以上において、本発明が特定の実施形態に関して図示され、かつ、説明されたが、さらに他の修正および改善が可能であることは言うまでもない。
本発明は前述の実施形態に示された特定の形式に限定されるものではなく、かつ添付の特許請求の範囲において本発明の精神および範囲から離れることのない全ての修正をカバーすることを考えていることが理解されるべきである。
【図面の簡単な説明】
【００８１】
【図１】第１実施形態に係るシステム構成を示す図である。
【図２】第１実施形態によるプロトコル処理を説明するフローチャートである。
【図３】第１実施形態に係るパケット送受信要求を示す図である。
【図４】第２実施形態に係るシステム構成を示す図である。
【図５】第２実施形態に係るパケット送受信要求を示す図である。
【図６】第３実施形態に係るシステム構成を示す図である。
【図７】第３実施形態によるプロトコル処理を説明するフローチャートである。
【図８】第３実施形態に係るタイマレジスタの構成例を示す図である。
【図９】第３実施形態に係るシーケンス図の例である。
【図１】
0005074872.tif 000002
【図２】
0005074872.tif 000003
【図３】
0005074872.tif 000004
【図４】
0005074872.tif 000005
【図５】
0005074872.tif 000006
【図６】
0005074872.tif 000007
【図７】
0005074872.tif 000008
【図８】
0005074872.tif 000009
【図９】
0005074872.tif 000010