(57)【要約】【課題】  書き戻すデータ量を削減し、プロトコル制御情報の書き戻しに要する時間を短縮する。【解決手段】  制御部２０８は、ＰＣＢを格納する主記憶部１０３より高速アクセスが可能であって、主記憶部１０３内の一部のプロトコル制御情報を格納する一時メモリ２０２にアクセスしてプロトコル処理を行う。ＴＯＥ１０１は、一時メモリ２０２に格納されるプロトコル制御情報を主記憶部１０３に書き戻す際、その対象となるＰＣＢの一部を選択し、一時メモリ２０２から主記憶部１０３に書き戻す。【選択図】  図２
2008148133.tif 000002
【特許請求の範囲】
【請求項１】
プロトコル処理を制御するための複数のプロトコル制御情報を格納する第１の記録媒体より高速アクセスが可能であって、前記第１の記録媒体内の一部のプロトコル制御情報を格納する第２の記録媒体にアクセスしてプロトコル処理を行うプロトコル処理手段と、
前記第２の記録媒体に格納されるプロトコル制御情報を第１の記録媒体に書き戻す際、その対象となるプロトコル制御情報の一部を選択する選択手段と、
前記選択手段により選択されたプロトコル制御情報の一部を前記第２の記録媒体から前記第１の記録媒体に書き戻す制御手段とを有することを特徴とする通信装置。
【請求項２】
前記プロトコル処理手段のプロトコル処理に応じて前記第２の記録媒体に格納されるプロトコル制御情報を更新する更新手段を更に有し、
前記選択手段は、前記更新手段により更新された部分を選択することを特徴とする請求項１に記載の通信装置。
【請求項３】
データを受信する受信手段と、
前記第２の記録媒体に格納されるプロトコル制御情報内に、前記受信手段により受信されるデータを並び替える際に使用されるリオーダリング情報を登録する登録手段と、
前記リオーダリング情報に基づいて、前記受信手段により受信されたデータを並び替える並び替え手段とを更に有することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記並び替え手段により不連続なデータが連続的なデータに並び替えられた場合、対応する前記リオーダリング情報内の情報を削除する第１の削除手段を更に有することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記登録手段により前記リオーダリング情報を構成する複数の情報が予め定められた数以上登録された場合、前記並び替え手段によりデータの並び替えが行われた結果、時間的に最も後方に位置するデータに対応する前記リオーダリング情報内の情報を削除する第２の削除手段を更に有することを特徴とする請求項３又は４に記載の通信装置。
【請求項６】
前記第２の削除手段は、前記時間的に最も後方に位置するデータを更に削除することを特徴とする請求項５に記載の通信装置。
【請求項７】
前記登録手段により前記リオーダリング情報を構成する複数の情報が予め定められた数以上登録された場合、前記並び替え手段によりデータの並び替えが行われた結果、時間的に最も後方に位置するデータに対応する前記リオーダリング情報内の情報を前記第１の記録媒体に格納する退避手段を更に有することを特徴とする請求項３又は４に記載の通信装置。
【請求項８】
通信装置の制御方法であって、
プロトコル処理を制御するための複数のプロトコル制御情報を格納する第１の記録媒体より高速アクセスが可能であって、前記第１の記録媒体内の一部のプロトコル制御情報を格納する第２の記録媒体にアクセスしてプロトコル処理を行うプロトコル処理ステップと、
前記第２の記録媒体に格納されるプロトコル制御情報を第１の記録媒体に書き戻す際、その対象となるプロトコル制御情報の一部を選択する選択ステップと、
前記選択ステップにより選択されたプロトコル制御情報の一部を前記第２の記録媒体から前記第１の記録媒体に書き戻す制御ステップとを含むことを特徴とする通信装置の制御方法。
【請求項９】
通信装置の制御方法をコンピュータに実行させるためのプログラムであって、
プロトコル処理を制御するための複数のプロトコル制御情報を格納する第１の記録媒体より高速アクセスが可能であって、前記第１の記録媒体内の一部のプロトコル制御情報を格納する第２の記録媒体にアクセスしてプロトコル処理を行うプロトコル処理ステップと、
前記第２の記録媒体に格納されるプロトコル制御情報を第１の記録媒体に書き戻す際、その対象となるプロトコル制御情報の一部を選択する選択ステップと、
前記選択ステップにより選択されたプロトコル制御情報の一部を前記第２の記録媒体から前記第１の記録媒体に書き戻す制御ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＢ（プロトコル制御ブロック）等のプロトコル制御情報を用いてプロトコル処理を行う技術に関するものである。
【背景技術】
【０００２】
ギガビットイーサネット（登録商標）等の普及により汎用ＰＣのみならず、組み込み機器においてもネットワークプロトコル処理を高速に実行できることが要求されている。
【０００３】
ところで、ギガビットイーサネット（登録商標）のFull-wireの速度を達成するためには、動作周波数３ＧＨｚ程度のプロセッサが必要になると言われている。これは、今日の組み込み機器が一般的に搭載するプロセッサ能力をはるかに超えている。そこで、ＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）といったプロトコル処理に特化した補助的デバイスをシステムに付加し、広帯域なネットワーク通信を実現することが一般的になりつつある。ＴＯＥの従来技術の一例が特許文献１に開示されている。
【０００４】
さて、ＴＣＰのプロトコル処理において重要となるのはＰＣＢの扱いである。ＰＣＢとは、プロトコル制御ブロックの略称である。ＰＣＢは、ＴＣＰコネクション毎に用意されている、数十種類のパラメータ（変数）で構成されるコンテキスト情報であり、ＴＣＰパケットを受信する度にどのＰＣＢ情報を使うかを検索し、決定する必要がある。
【０００５】
また、ＰＣＢの各要素は、ＴＣＰ処理中に頻繁にアクセスされる変数であり、ＴＣＰ処理においては要になる変数である。ＴＣＰの高速化において、ＰＣＢの検索とアクセスの高速化が必須とされている。
【０００６】
特許文献１に開示される発明においては、ＴＣＰプロトコル処理を行うのに必要なＰＣＢを主記憶からＳＲＡＭ等の高速な一時メモリにコピーして保持することによりアクセスの高速化を実現している。このとき、コネクションの数が増え、全てのＰＣＢが一時メモリに収まらない場合は、必要なＰＣＢのみ一時メモリに存在するように主記憶との間で入れ替え処理を行っている。
【０００７】
【特許文献１】特表２００２−５２４００５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前述のように、ＰＣＢを高速な一時メモリに格納して処理することによりプロトコルスタック処理を高速化させることができる。しかしながら、処理性能を考えるときには、一時メモリ中のＰＣＢの入れ替え処理の影響を考慮しなければならない。一時メモリ中のＰＣＢの入れ替えは、一時メモリの容量がコネクション数に比べ小さい場合に頻発する。この問題は、特に組込み系のシステムではコスト面から一時メモリ容量を大きくすることができないため深刻である。
【０００９】
一時メモリの入れ替えには、一時メモリ中に存在するＰＣＢのうちの一つを選択し、それを主記憶部に書き戻し、その後、新たに必要となったＰＣＢを読み出すことになる。ＰＣＢのデータ量は１００数十バイトに及ぶため、この一時メモリ入れ替えの時間が性能に与える影響は大きく、この時間を短縮することが課題となっている。
【００１０】
そこで、本発明の目的は、書き戻すデータ量を削減し、プロトコル制御情報の書き戻しに要する時間を短縮することにある。
【課題を解決するための手段】
【００１１】
本発明の通信装置は、プロトコル処理を制御するための複数のプロトコル制御情報を格納する第１の記録媒体より高速アクセスが可能であって、前記第１の記録媒体内の一部のプロトコル制御情報を格納する第２の記録媒体にアクセスしてプロトコル処理を行うプロトコル処理手段と、前記第２の記録媒体に格納されるプロトコル制御情報を第１の記録媒体に書き戻す際、その対象となるプロトコル制御情報の一部を選択する選択手段と、前記選択手段により選択されたプロトコル制御情報の一部を前記第２の記録媒体から前記第１の記録媒体に書き戻す制御手段とを有することを特徴とする。
本発明の通信装置の制御方法は、プロトコル処理を制御するための複数のプロトコル制御情報を格納する第１の記録媒体より高速アクセスが可能であって、前記第１の記録媒体内の一部のプロトコル制御情報を格納する第２の記録媒体にアクセスしてプロトコル処理を行うプロトコル処理ステップと、前記第２の記録媒体に格納されるプロトコル制御情報を第１の記録媒体に書き戻す際、その対象となるプロトコル制御情報の一部を選択する選択ステップと、前記選択ステップにより選択されたプロトコル制御情報の一部を前記第２の記録媒体から前記第１の記録媒体に書き戻す制御ステップとを含むことを特徴とする。
本発明のプログラムは、通信装置の制御方法をコンピュータに実行させるためのプログラムであって、プロトコル処理を制御するための複数のプロトコル制御情報を格納する第１の記録媒体より高速アクセスが可能であって、前記第１の記録媒体内の一部のプロトコル制御情報を格納する第２の記録媒体にアクセスしてプロトコル処理を行うプロトコル処理ステップと、前記第２の記録媒体に格納されるプロトコル制御情報を第１の記録媒体に書き戻す際、その対象となるプロトコル制御情報の一部を選択する選択ステップと、前記選択ステップにより選択されたプロトコル制御情報の一部を前記第２の記録媒体から前記第１の記録媒体に書き戻す制御ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明においては、プロトコル制御情報の一部を第２の記録媒体から第１の記録媒体に書き戻すように構成している。従って、本発明によれば、書き戻すデータ量を削減でき、プロトコル制御情報の書き戻しに要する時間を短縮することが可能となり、結果としてプロトコル処理性能を向上させることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１４】
<第１の実施形態＞
先ず、本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態に係るプロトコル処理装置１０の構成を示すブロック図である。図１において、１００はプロセッサであり、アプリケーションやＯＳ、デバイスドライバ等の一般的なソフトウェアを実行する。１０１は、ＴＣＰプロトコル処理をプロセッサ１００からオフロードするＴＯＥ（通信装置）であり、この後の説明はＴＯＥ１０１を中心に行う。１０２は、バスであり、プロセッサ１００、ＴＯＥ１０１及び主記憶部（第１の記録媒体）１０３間を接続する。
【００１５】
主記憶部１０３は、プロセッサ１００が実行するプログラムとその作業領域の他、ＴＯＥ１０１が利用するデータ、ＴＯＥ１０１の作業領域、及び、プロセッサ１００とＴＯＥ１０１との通信用領域等が置かれる。
【００１６】
１０４は、イーサネット（登録商標）のＭＡＣ（データリンク層）及びＰＨＹ（物理層）であり、ＴＯＥ１０１から制御され、ＴＯＥ１０１との間でイーサネット（登録商標）フレームの単位でやりとりを行う。１０５は、イーサネット（登録商標）であり、図示されないスイッチ、ハブ、ルータ等を介して、他のネットワーク機器とＭＡＣ／ＰＨＹ１０４との接続を可能にする。
【００１７】
図２は、ＴＯＥ１０１及び主記憶部１０３の構成を詳細に示すブロック図である。図２に示すように、ＴＯＥ１０１は、プロトコル前後処理部２０１、プロトコル入出力処理部２０５及びホストインタフェース２０９により構成される。
【００１８】
プロトコル前後処理部２０１において、２０２は、一時メモリ（第２の記録媒体）である。ＰＣＢ（プロトコル制御ブロック）は、プロトコル処理を制御するための情報（プロトコル制御情報）で、実際には、ＩＮＰＣＢとＴＣＰＣＢとから成る。一時メモリ２０２内の２０３は、ＰＣＢ記憶領域であり、ＰＣＢを複数組保持するためのメモリ上の領域である。ＰＣＢ記憶領域２０３に保持されるＰＣＢの組は、主記憶部１０３内のＰＣＢ記憶領域２１２に保持されるＰＣＢの部分集合である。なお、一時メモリは、ＴＯＥ１０１内の不図示のサブプロセッサによって高速アクセス可能なメモリである。また、ＩＮＰＣＢは、Internet Protocol Control Blockの略称である。ＴＣＰＣＢは、TCP Protocol Control Blockの略称である。
【００１９】
２０４は、ソケット設定部である。２０６、２０７は、それぞれ出力部、入力部であり、ストリームメッセージ及び制御メッセージをＭＡＣ層と入出力する。
【００２０】
２０８は、制御部であり、ＰＣＢ記憶領域２０３に格納されるＰＣＢの内容に従ってプロトコル制御を行うとともに、ＰＣＢ記憶領域２０３内のＰＣＢを更新する。なお、制御部２０８は、本発明のプロトコル処理手段の一適用例となる構成である。
【００２１】
２０９は、ホストインタフェースであり、バス１０２に接続されるプロセッサ１００（図１）との間の通信を制御する。
【００２２】
主記憶部１０３において、２１１は、ソケットテーブルであり、コネクション毎のソケット情報を保持する。２１２は、ＰＣＢ記憶領域であり、一時メモリ２０２内のＰＣＢ記憶領域２０３に保持されるＰＣＢの組を含む、その時点で存在するＰＣＢの全ての組を保持している。
【００２３】
なお、説明の簡単のため、図２には、図１のプロセッサ１００、ＭＡＣ／ＰＨＹ１０４及びイーサネット（登録商標）１０５に相当する構成は図示されていない。
【００２４】
図３は、図２の出力部２０６、プロトコル前後処理部２０１、入力部２０７及び制御部２０８の詳細な構成を示すブロック図である。
【００２５】
出力部２０６は、ソケット出力部２０６１、ＴＣＰ出力部２０６２、ＵＤＰ出力部２０６３、ＩＰ出力部２０６４及びＭＡＣ出力部２０６５から構成される。
【００２６】
ソケット出力部２０６１は、ユーザからのストリーム出力を適正な通信チャネルから出力するための機能を備える。
【００２７】
ＴＣＰ出力部２０６２は、ユーザからのストリーム出力にＴＣＰヘッダを付けて下層であるＩＰ出力部２０６４にセグメントを出力する。
【００２８】
ＵＤＰ出力部２０６３は、ユーザからのストリーム出力のソケットがＵＤＰソケットである場合は、ストリームにＵＤＰヘッダを付けて下層であるＩＰ出力部２０６４にデータグラムを出力する。
【００２９】
ＩＰ出力部２０６４は、トランスポート層（ＴＣＰ出力部２０６２やＵＤＰ出力部２０６３）からのセグメントやデータグラムを受信してＩＰパケットとして構成し、ＩＰヘッダを付加する。
【００３０】
ＭＡＣ出力部２０６５は、ＩＰ層からのＩＰパケットにＭＡＣヘッダを付加してインタフェースにフレーム出力する。
【００３１】
入力部２０７は、ソケット入力部２０７１、ＴＣＰ入力部２０７２、ＵＤＰ入力部２０７３、ＩＰ入力部２０７４及びＭＡＣ入力部２０７５から構成される。
【００３２】
ＭＡＣ入力部２０７５は、インタフェースから受けたフレームのＭＡＣヘッダの妥当性を検証し、ＭＡＣヘッダを除去する。
【００３３】
ＩＰ入力部２０７４は、ＭＡＣ入力部２０７５から受けたＩＰパケットの妥当性を検証する。必要であれば、ＩＰ入力部２０７４は、ＩＰフラグメントの再構成等を行い、ＩＰパケットをトランスポート層より上位に解釈可能な形に整形し、ＩＰヘッダを除去した上で適切なトランスポート（ＵＤＰ又はＴＣＰ）層にそのＩＰパケットのペイロードを出力する。
【００３４】
ＵＤＰ入力部２０７３は、ＩＰ入力部２０７４から受けたＵＤＰデータグラムのヘッダの妥当性を検証し、ＵＤＰヘッダを除去し、ソケット入力部２０７１にデータグラムペイロードを出力する。
【００３５】
ＴＣＰ入力部２０７２は、ＩＰ入力部２０７４から受けたＴＣＰセグメントのヘッダの妥当性を検証し、ＴＣＰヘッダを除去し、セグメントのペイロードをストリームとしてソケット入力部２０７１に出力する。
【００３６】
ソケット入力部２０７１は、トランスポート層入力部（ＵＤＰ入力部２０７３又はＴＣＰ入力部２０７２）から受けたストリーム又はデータグラムをその通信チャネル（ソケット）から判断して、適切なアプリケーション（ユーザデバイス）に出力する。
【００３７】
制御部２０８は、ＴＣＰ制御部２０８１及びＩＰ制御部２０８２により構成される。ＴＣＰ制御部２０８１は、ＴＣＰ入力部２０７２が検出したフラグセグメント受信、内部に持つタイマイベント、ソケット設定部２０４からのコネクション確立・消去指示を基に、ソケット毎のＴＣＰ状態制御等を行う。そして、ＴＣＰ制御部２０８１は、ＴＣＰ出力部２０６２にセグメント出力の指示を行う。
【００３８】
ＩＰ制御部２０８２は、ＩＰ入力部２０７４からのＩＰパケット受信イベントを基に、受信ＩＰパケット受信可否判断依頼やＩＰ出力部２０６４からのストリーム出力時のルーティング問い合わせ依頼の処理を行う。
【００３９】
プロトコル前後処理部２０１は、ソケット設定部２０４、ＴＣＰＣＢ記憶領域２０３ａ及びＩＮＰＣＢ記憶領域２０３ｂから構成される。
【００４０】
ソケット設定部２０４は、ユーザデバイスからのＳＡ／ＤＡ設定やコネクション確立／消去指示を受信し、ソケットテーブル２１１の確保・更新・消去を行い、プロトコル入出力処理部２０５にコネクション確立・消去に伴うフレーム出力を依頼する。
【００４１】
ソケットテーブル２１１は、複数の通信チャネル（ソケット）各々に対し、そのSAAddr/DAAddr/SAPort/DAPort、通信パラメータ、扱うプロトコルとそのプロトコルに付随するＰＣＢへの参照情報及びトランスポート層のプロトコル種別（ＵＤＰ／ＴＣＰ等）を保持する。なお、SAAddr/DAAddr/SAPort/DAPortは、SourceAddress/DestinationAddress/SroucePort/DestinationPortの略である。SAAddrは自局側ＩＰアドレス、DAAddrは相手側ＩＰアドレス、SAPortは自局側ポート番号、DAPortは相手側ポート番号である。
【００４２】
厳密には、SAAddr/DAAddr/SAPort/DAPortは、ＩＮＰＣＢ記憶領域２０３ｂに保存される。この場合、ソケットテーブル２１１には、該当するソケットがどのＩＮＰＣＢレコードを参照すべきかを示す参照情報を保持することになる。
【００４３】
ＴＣＰＣＢ記憶領域２０３ａは、ＴＣＰを制御する為に各通信チャネル（ソケット）毎にＴＣＰコネクションの状態や必要なパラメータを保存する。
【００４４】
ＩＮＰＣＢ記憶領域２０３ｂは、ＩＰを制御する為に各通信チャネル（ソケット）毎にSAAddr/DAAddr/SAPort/DAPortやＴＴＬ／ＴＯＳやオプション等を保存する。
【００４５】
なお、図２のＰＣＢ記憶領域２０３は、図３のＴＣＰＣＢ記憶領域２０３ａとＩＮＰＣＢ記憶領域２０３ｂとに相当する。
【００４６】
以下、図２を用いて、プロトコル前後処理部２０１及びプロトコル入出力処理部２０５には図３に示した機能ブロックが含まれることを前提に、プロトコル前後処理部２０１とプロトコル入出力処理部２０５について説明する。
【００４７】
プロセッサ１００上で動作するユーザアプリケーションプログラムからＴＣＰによるストリーム通信が要求されると、プロセッサ１００上で動作するＯＳは、ストリーム入出力に前後し、コネクションＤＡ及びコネクションＳＡの設定をＴＯＥ２００に依頼する。
【００４８】
ＴＯＥ２００では、この依頼をプロトコル前後処理部２０１において受信し、プロトコル前後処理部２０１の中でもその依頼はソケット設定部２０４により処理される。ソケット設定部２０４では、コネクションＤＡ及びコネクションＳＡに関する設定はソケットテーブル２１１に保存すべきものと判断し、ソケットテーブル２１１にコネクションＤＡ及びコネクションＳＡに関する設定を行う。このとき、このコネクションに対応するＰＣＢが主記憶部１０３内のＰＣＢ記憶領域２１２に新たに生成され、初期化が行われる。
【００４９】
（１）次に、ユーザアプリケーションは、コネクションの確立指示を行う。ＴＯＥ２００では、この指示についてもプロトコル前後処理部２０１にてソケット設定部２０４が受信し、処理を判断する。この際、ソケット設定部２０４は、主記憶部２１０内のＰＣＢ記憶領域２１２から該当するＰＣＢを一時メモリ２０２内のＰＣＢ記憶領域２０３にコピーする。このとき、ＰＣＢ記憶領域２０３に空き領域がない場合は、ＰＣＢ記憶領域２０３から最も使われる可能性の低い（例えば、最も長い間使われていない）ＰＣＢを一つ選択し、前述のコピーに先んじてＰＣＢ記憶領域２１２に書き戻す。
【００５０】
ソケット設定部２０４は、コネクション確立指示に起因する制御フレームの送信指示をプロトコル入出力処理部２０５に対して行う。プロトコル入出力処理部２０５において、このコネクション確立指示は、制御部２０８により処理される。
【００５１】
制御部２０８では、コネクション確立においてどの様な制御フレームを送信すべきか判断し、また、その制御フレームを送信することによりプロトコル状態がどのように変化するかを判断し、これをＰＣＢ記憶領域２０３にパラメータとして設定する。この行為は、具体的にはＴＣＰであればＳＹＮセグメントの送信判断とＳＹＮセグメントを送信した場合の状態遷移による状態変数の変更をＴＣＰＣＢ記憶領域２０３ａに設定する行為に該当する。この制御部２０８の状態変数変更の機能構成が、本発明の更新手段の一適用例となる構成である。
【００５２】
制御部２０８では、コネクション確立に伴う制御フレーム送信の判断とソケットテーブル２１１及びＰＣＢ記憶領域２１２、２０３の設定は行うが、実際のフレーム送信作業は出力部２０６によって行われる。
【００５３】
制御部２０８は、制御フレームを送信する必要性を判断すれば、制御メッセージ出力要求を出力部２０６に送信する。出力部２０６では、（他の）ストリーム送信の合間をみて、これらの例えばコネクション確立時に必要な制御フレーム送信を行う。
【００５４】
（２）ユーザアプリケーション又はＯＳカーネルは、ＳＡ／ＤＡ設定とコネクション確立指示とが終了すれば、ストリームを出力することができる。ストリーム出力指示は、ＴＯＥ２００の中でもプロトコル入出力処理部２０５内の出力部２０６が直接受け取る。出力部２０６内部でも、ストリーム出力指示は、ソケット出力部２０６１、ＴＣＰ出力部２０６２又はＵＤＰ出力部２０６３、ＩＰ出力部２０６４及びＭＡＣ出力部２０６５にて処理される。この際、必要ならばＰＣＢ記憶領域２０３を参照しながら、実際のフレームが作成され、出力される。
【００５５】
この場合、まず、制御部２０８がソケットテーブル２１１を参照した結果、必要なＰＣＢが判明する。次に、制御部２０８は、ＰＣＢ記憶領域２０３を参照し、該当するＰＣＢが存在するかどうかを調べる。もし存在しない場合は、制御部２０８は、主記憶部２１０内のＰＣＢ記憶領域２１２から該当するＰＣＢをＰＣＢ記憶領域２０３にコピーする。このとき、ＰＣＢ記憶領域２０３に空き領域がない場合は、ＰＣＢ記憶領域２０３から最も使われる可能性の低い（例えば、最も長い間使われていない）ＰＣＢを一つ選択し、前述のコピーに先んじてＰＣＢ記憶領域２１２に書き戻す。
【００５６】
（３）ＭＡＣ層からストリームフレームを受信した場合は、入力部２０７がこれを受ける。入力部２０７内では、ＭＡＣ入力部２０７５、ＩＰ入力部２０７４、ＵＤＰ入力部２０７３又はＴＣＰ入力部２０７２及びソケット入力部２０７１にてその受信ストリームフレームを処理し、ＯＳカーネル又はユーザアプリケーションにストリーム入力を行う。この際、特にそのストリームがどの通信チャネル（ソケット）に属するものであるかを判断するために、ソケットテーブル２１１及びＰＣＢ記憶領域２０３を参照する必要がある。
【００５７】
まず、制御部２０８がソケットテーブル２１１を参照した結果、必要なＰＣＢが判明する。次に、ＰＣＢ記憶領域２０３を参照し、該当するＰＣＢが存在するかどうかを調べる。もし存在しない場合は、ＰＣＢ記憶領域２１２から該当するＰＣＢをＰＣＢ記憶領域２０３にコピーする。このとき、ＰＣＢ記憶領域２０３に空き領域がない場合は、ＰＣＢ記憶領域２０３から最も使われる可能性の低い（例えば、最も長い間使われていない）ＰＣＢを一つ選択し、前述のコピーに先んじてＰＣＢ記憶領域２１２に書き戻す。
【００５８】
ストリーム入出力中には、プロトコル制御のためのフレームをＭＡＣ層から受信する可能性があるが、これは、入力部２０７ではそのヘッダ解析を行う程度にとどめ、プロトコル制御の為の実際の処理は制御部２０８にて行う。このため、入力部２０７はプロトコル制御関連フレームを受信すると、制御部２０８に対して制御メッセージを受信した旨とその種別と解析の結果得られた必要なデータを送信する。制御部２０８では、この制御メッセージ受信のイベントをトリガにＰＣＢ記憶領域２０３を操作した上で、再び出力部２０６に対してプロトコル制御の為の制御メッセージ出力を依頼する場合もある。
【００５９】
ユーザアプリケーションによるストリーム入出力が終了すれば、ユーザアプリケーションは、コネクション消去指示を行うがその基本的な処理の流れはコネクション確立指示と同じである。
【００６０】
上述したように、（１）コネクション確立、（２）ストリーム出力及び（３）ストリーム入力のケースでは、ＰＣＢ記憶領域２０３に保持されるＰＣＢの一組とＰＣＢ記憶領域２０３に保持されるＰＣＢの一組との間で入れ替えが生じることがある。このとき、ＰＣＢ記憶領域２０３に保持されるＰＣＢの一組をまず主記憶部２１０に書き戻す必要がある。本実施形態においては、毎回全てのＰＣＢを書き戻すことはなく、変更された部分だけを書き戻すようにしている。
【００６１】
具体的には、ＩＮＰＣＢ記憶領域２０３ｂに格納されるデータ（ＩＮＰＣＢ）を例に挙げると、相手側ＩＰアドレス、相手側ポート番号、自局側ＩＰアドレス、自局側ポート番号を含むが、これらは一つのコネクションに不変の値であるので書き戻すことはない。一方、ＩＮＰＣＢには、これ以外にＩＰオプション、フラグ等、通信中に変更される可能性のあるパラメータも含み、これらは書き戻しの対象になる。
【００６２】
ＴＣＰＣＢ記憶領域２０３ａに格納されるデータ（ＴＣＰＣＢ）ついては、大きくは送信パラメータ、受信パラメータに分けられる。図４にＴＣＰＣＢの抜粋を示す。図４で接頭辞snd_から始まるパラメータは送信パラメータ、rcv_から始まるパラメータは受信パラメータである。ＴＣＰＣＢも実装に依存し、コネクション毎に不変のパラメータと可変のパラメータに分離することができる。例えば、図４において、リアセンブルキューへのポインタt_segqは不変であるように実装することが可能である。
【００６３】
上述のように、ＰＣＢ内の各パラメータは、コネクション毎に不変のパラメータと通信中に更新されるパラメータとに区分される。
【００６４】
本実施形態においては、ＰＣＢを上述のように区分して管理する。図５は、一時メモリ２０２内のＰＣＢ記憶領域２０３におけるＰＣＢの格納状態を模式的に示す図である。
【００６５】
図５に示すように、ＰＣＢ記憶領域２０３には、各コネクションに対応するＰＣＢが格納されており、各ＰＣＢは、ＴＣＰプロトコル処理中において不変のパラメータ部分（不変部）と変更されるパラメータ部分（変数部）とに区別される。なお、一ＰＣＢあたり２５６Byte、後述するパラメータ更新情報がＭbitであるため、ＰＣＢ記憶領域２０３には、一時メモリ容量／（２５６Byte＋Ｍbit）の数のＰＣＢが格納可能である。
【００６６】
また、図５においては、ＰＣＢのうちの一つについて、コネクション毎に不変なパラメータ、主記憶部１０３への書き戻し時まで変更のなかったパラメータ、及び、主記憶部１０３への書き戻し時に変更されたパラメータを区別して表している。これは、説明の便宜のためであり、図５に示す全ＰＣＢについて上記３種のパラメータが存在し得る。
【００６７】
ここで、各ＰＣＢには、パラメータ更新情報が付加されている。任意の一組のＰＣＢがＰＣＢ記憶領域２１２からＰＣＢ記憶領域２０３にコピーされるとき、当該ＰＣＢのパラメータ更新情報はクリアされた状態にある。その後、ソケット設定部２０４又は制御部２０８がＰＣＢ記憶領域２０３内に保持される任意のＰＣＢを更新した際、当該ＰＣＢのパラメータ更新情報に更新情報ビットがセットされる。この更新情報ビットは、ＰＣＢの各パラメータ毎にセットできる値であり、更新情報ビットによって、どのパラメータが更新されたのかを示すことができる。その後、上述の（１）、（２）、（３）の何れかの事象が生じ、当該ＰＣＢがＰＣＢ記憶領域２１２に書き戻される場合には、当該ＰＣＢの更新情報ビットが参照され、実際に更新されたパラメータのみが選択され、書き戻される。この機能構成が、本発明の選択手段及び制御手段の一適用例となる構成である。
【００６８】
以上のようにして、本実施形態においては、変更された部分だけを一時メモリ２０３から主記憶部１０３に書き戻すようにしている。従って、一時メモリ２０２に格納されるＰＣＢと主記憶部１０３に格納されるＰＣＢとを入れ替える際の書き込みデータ量を削減でき、一時メモリ入れ替えに要する時間を短縮することが可能となる。その結果、プロトコル処理性能を向上させることができる。
【００６９】
また、主記憶部１０３への書き込みに要するバス、メモリ帯域を低減でき、その分をシステム内の他の装置に振り分けることができるため、システム全体の処理性能を向上させるとともに、システムの消費電力を低減することが可能となる。
【００７０】
本発明の一適用例として上述した実施形態を説明したが、本発明の要旨を逸脱しない範囲で様々な変更が可能であることはいうまでもない。
【００７１】
例えば、上述した実施形態においては、ＰＣＢの各パラメータ毎に更新情報ビットを設ける例を示したが、これに限定するものではない。例えばパラメータをバス転送サイズ、主記憶アクセスサイズに適合するようにいくつかをグルーピングし、各グループ毎に更新情報ビットを設けて管理しても良い。その際には、変更される可能性の高いパラメータを選択的にグループ化するよう構成すれば、より高い効果が得られることは言うまでもない。
【００７２】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。なお、本実施形態に係るプロトコル処理装置の構成は、図１乃至図３に示す構成と同様であるため、その説明は省略する。また、本実施形態に係るプロトコル処理装置は、上述した第１の実施形態に係るプロトコル処理装置の機能を備えているものとする。
【００７３】
一時メモリ２０２内のＰＣＢ記憶領域２０３に保持されるＰＣＢ及び主記憶部２１０内のＰＣＢ記憶領域２１２に保持されるＰＣＢは、図６に示すように、リオーダリング情報が追加された構成となっている。即ち、本実施形態におけるＰＣＢは、相手側ＩＰアドレス、相手側ポート番号、自局側ＩＰアドレス、自局側ポート番号等の従来のＰＣＢのパラメータの他、リオーダリング情報も含まれる。
【００７４】
ＴＣＰプロトコル処理においては、上述したパラメータの他、リオーダリング情報もアクセスの対象となる。リオーダリングとは、ＴＣＰプロトコル処理において、順不同で受信したパケットを送信ストリームの順番に並び替える処理である。
【００７５】
ＴＣＰプロトコル処理において、送信元から送信されたパケットは、各々が異なる経路を通過して送信先に到着する可能性がある。経路毎にネットワークの状況は異なるため、パケットが送信されてから受信されるまでにかかる時間が大きくなることがあり、パケットは送信元から送信された順番で送信先に到着することがある。よって、送信先では、受信したパケットを送信元が送信した順番に並び替える必要がある。その際、リオーダリング情報は、送信先が受信したパケットを並び替えるために利用される情報であり、受信したパケットが不連続になる箇所をポインタ等で管理するものである。
【００７６】
また、リオーダリング情報は、０個以上、予め定められた個数以下の不連続情報で構成される。本実施形態においては、ＰＣＢ記憶領域２０３の容量の制約上、各ＰＣＢについて４つまでの不連続情報を保持することを許容している。不連続情報は、ＴＣＰ入力部２０７２が受信したパケットが不連続になる位置（不連続開始点）と、その位置から次に受信したパケットの先頭の位置までのサイズ（不連続サイズ）とで構成される。なお、ここでいう位置とは、例えば、受信データを一時的に格納するＴＣＰ入力部２０７２内のバッファメモリの格納位置のことをいう。
【００７７】
入力部２０７内のＴＣＰ入力部２０７２は、不連続なデータを受信した場合に、ＰＣＢ記憶領域２０３内に保持されるＰＣＢのリオーダリング情報に不連続情報を登録する。このＴＣＰ入力部２０７２の機能構成が、本発明の受信手段及び登録手段の一適用例となる構成である。
【００７８】
ＴＣＰ入力部２０７２が受信したデータは、送信元から送信された順番でソケット入力部２０７１へ一定の単位で転送される。即ち、ＴＣＰ入力部２０７２は、受信したパケットのシーケンス番号（送信元の送信順番を示す情報）に従って、送信元から送信された順番となるようにパケットの転送順番を入れ換えて、ソケット入力部２０７１に転送する。このＴＣＰ入力部２０７２の機能構成が、本発明の並び替え手段の一適用例となる構成である。
【００７９】
例えば、図７（ａ）に示すように、既にパケットａ、パケットｃを受信した状態で新たにパケットｂを受信した場合、パケットａ〜ｃのシーケンス番号からパケットｂをどの位置に挿入して転送するのかを判定する。図７（ａ）に示す例は、シーケンス番号により示される送信元の送信順番が、パケットａ、パケットｂ、パケットｃの順番であることを前提としている。従って、ＴＣＰ入力部２０７２は、パケットａとパケットｃとの間にパケットｂを挿入して転送することになる。このとき、不連続情報（不連続開始点１、不連続サイズ１）が参照されることによって、パケットａとパケットｃとの間の位置にパケットｂが挿入される。また、図７（ａ）の例においては、パケットａとパケットｃとの間にパケットｂを挿入することによって、パケットａ〜パケットｃを連続的に転送できるようになっている。この場合、不連続情報（不連続開始点１、不連続サイズ１）は不要となるため、ＴＣＰ入力部２０７２によって削除される。このＴＣＰ入力部２０７２の機能構成が、本発明の第１の削除手段の一適用例となる構成である。
【００８０】
また、図７（ｂ）に示すように、ＴＣＰ入力部２０７２は、既にパケットａ〜ｄ、パケットｆを受信した状態で新たにパケットｅを受信した場合、パケットａ〜ｆのシーケンス番号からパケットｅをどの位置に挿入して転送するのかを判定する。
【００８１】
図７（ｂ）に示す例は、シーケンス番号により示される送信元の送信順番が、パケットａ、パケットｂ、パケットｃ、パケットｄ、パケットｅ、パケットｆの順番であることを前提としている。従って、ＴＣＰ入力部２０７２は、パケットｄとパケットｆとの間にパケットｅを挿入して転送することになる。
【００８２】
但し、本実施形態においては、ＰＣＢ記憶領域２０３のメモリ容量の制約から一つのＰＣＢに対して４つまでの不連続情報しか設定することができない。よって、ＴＣＰ入力部２０７２は、上記パケットの並び替えの結果、５つの不連続情報に対応するパケットのうち、時間的に最も後方に位置するパケットの不連続開始点を示す不連続情報を選択する。即ち、ここでは、送信元から最後に送信されたパケットに対応する不連続情報を選択している。
【００８３】
そして、ＴＣＰ入力部２０７２は、リオーダリング情報から選択された不連続情報を削除する。また、削除される不連続情報が示す不連続開始点の後に存在するパケットｆも削除する。このＴＣＰ入力部２０７２の機能構成が、本発明の第２の削除手段の一適用例となる構成である。
【００８４】
以上のようにして、本実施形態においては、ＰＣＢにリオーダリング情報を含むことで、一時メモリ２０２の容量制限に基づく制約を守りつつ、ＴＯＥ１０１（ＴＣＰ入力部２０７２）によるリオーダリング情報へのアクセスの高速化を図ることが可能となる。これにより、ＴＣＰ受信処理における受信データの並べ替え処理時間が短縮され、その結果、プロトコルスタック処理の高速化が可能になる。
【００８５】
また、本実施形態によれば、リオーダリング情報をＰＣＢと独立して管理する必要がないため、リオーダリング情報を管理するための専用機構を設ける必要がなく、実装規模を縮小させることができる。
【００８６】
本発明の一適用例として上述した実施形態を説明したが、本発明の要旨を逸脱しない範囲で様々な変更が可能であることはいうまでもない。
【００８７】
例えば、上述した実施形態においては、リオーダリング情報が持つ不連続情報の最大数を４としているが、これに限定するものではない。不連続情報の最大数は、一時メモリ２０２の容量とコストから決定されてもよい。また、本実施形態においては、不連続情報の数が予め決められた数より大きくなる場合に、その数を超える不連続情報と対応する受信データとを削除している。この他にも、データ先頭から最も離れている不連続開始点を示す不連続情報を選択した後、選択された不連続情報を主記憶部１０３等、他の記録媒体に保持する実施形態も考えられる。この機能構成が、本発明の退避手段の一適用例となる構成である。
【００８８】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或いは装置に供給し、そのシステム等のコンピュータが記憶媒体からプログラムコードを読み出し実行することによっても達成される。
【００８９】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９０】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００９１】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００９２】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに接続された機能拡張ユニット等に備わるメモリに書込まれた後、そのプログラムコードの指示に基づきＣＰＵ等が実際の処理を行い、前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【００９３】
【図１】本発明の実施形態に係るプロトコル処理装置の構成を示すブロック図である。
【図２】ＴＯＥ及び主記憶部の構成を詳細に示すブロック図である。
【図３】図２の出力部、プロトコル前後処理部、入力部及び制御部の詳細な構成を示すブロック図である。
【図４】ＴＣＰＣＢの抜粋を示す図である。
【図５】不変パラメータと更新パラメータとを管理するためのＰＣＢのデータ構造の一例を示す図である。
【図６】リオーダリング情報を含むＰＣＢのデータ構造と受信データとの関係を示す図である。
【図７】リオーダリング情報を含むＰＣＢのデータ構造と受信データとの関係を示す図である。
【符号の説明】
【００９４】
１０  プロトコル処理装置
１００  プロセッサ
１０１  ＴＯＥ
１０２  バス
１０３  主記憶部
１０４  ＭＡＣ／ＰＨＹ
１０５  イーサネット（登録商標）
２０１  プロトコル前後処理部
２０２  一時メモリ
２０３、２１２  ＰＣＢ記憶領域
２０４  ソケット設定部
２０５  プロトコル入出力部
２０６  出力部
２０７  入力部
２０８  制御部
２０９  ホストインタフェース
２１１  ソケットテーブル
２０６１  ソケット出力部
２０６２  ＴＣＰ出力部
２０６３  ＵＤＰ出力部
２０６４  ＩＰ出力部
２０６５  ＭＡＣ出力部
２０７１  ソケット入力部
２０７２  ＴＣＰ入力部
２０７３  ＵＤＰ入力部
２０７４  ＩＰ入力部
２０７５  ＭＡＣ入力部
２０８１  ＴＣＰ制御部
２０８２  ＩＰ制御部
【図１】
2008148133.tif 000003
【図２】
2008148133.tif 000004
【図３】
2008148133.tif 000005
【図４】
2008148133.tif 000006
【図５】
2008148133.tif 000007
【図６】
2008148133.tif 000008
【図７】
2008148133.tif 000009