(57)【要約】【課題】特定の通信プロトコルによる通信パケットの受信処理において、コンテキスト情報のロード完了にかかる待ち時間を軽減し、受信処理の高速化を実現する。【解決手段】所定の通信プロトコルに基づいて通信を行う通信装置は、通信装置における通信を制御する通信手段と、所定の通信プロトコルの処理に用いるコンテキスト情報を制御する制御手段と、通信装置内の各種機能部間を接続する内部バスで転送されるデータを解析する解析手段とを具備する。該通信装置における制御手段は、解析手段で解析された結果に対応するコンテキスト情報を、通信手段がアクセス可能なキャッシュメモリへロードする。【選択図】図１１
2014155120.tif 000002
【特許請求の範囲】
【請求項１】
通信プロトコルに基づいて通信を行う通信装置であって、
所定の通信プロトコルに基づいて通信を制御する通信手段と、
前記所定の通信プロトコルの処理に用いるコンテキスト情報を制御する制御手段と、
前記通信装置内の各種機能部間を接続する内部バスで転送されるデータを解析する解析手段と、
を具備し、
前記制御手段は、前記解析手段で解析された結果に対応するコンテキスト情報を、前記通信手段がアクセスするキャッシュメモリへロードすることを特徴とする通信装置。
【請求項２】
前記制御手段は、前記通信手段または前記解析手段から送信されるロード要求に基づいて、前記コンテキスト情報を前記キャッシュメモリへロードすることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記解析手段は、前記データを解析してソケット情報を取得したタイミングで前記制御手段に対して前記ロード要求を送ることを特徴とする請求項２に記載の通信装置。
【請求項４】
前記制御手段は、前記通信手段から取得したソケット情報と、該制御手段が管理するソケット番号に基づいて前記コンテキスト情報を作成することを特徴とする請求項２または３に記載の通信装置。
【請求項５】
前記制御手段は、前記作成されたコンテキスト情報を、前記ソケット情報と前記ソケット番号と未使用のキャッシュブロック番号に関連付けて管理することを特徴とする請求項４に記載の通信装置。
【請求項６】
前記制御手段は、前記通信手段または前記解析手段から送信された前記ロード要求に基づき、前記通信手段または前記解析手段から取得したソケット情報に関連するソケット番号及びキャッシュブロック番号に対応するコンテキスト情報を前記キャッシュメモリへロードすることを特徴とする請求項５に記載の通信装置。
【請求項７】
前記解析手段は、該通信装置によって受信されて主記憶部へ転送されるデータを解析することを特徴とする請求項１乃至６のいずれか１項に記載の通信装置。
【請求項８】
暗号処理手段を更に備え、
前記解析手段は前記暗号処理手段によって暗号のデコード済みのデータを解析することを特徴とする請求項１乃至７のいずれか１項に記載の通信装置。
【請求項９】
通信プロトコルに基づいて通信を行う通信装置の制御方法であって、
所定の通信プロトコルに基づいて通信を制御する通信工程と、
前記所定の通信プロトコルの処理に用いるコンテキスト情報を制御する制御工程と、
前記通信装置内の各種機能部間を接続する内部バスで転送されるデータを解析する解析工程と、
を有し、
前記制御工程において、前記解析工程において解析された結果に対応するコンテキスト情報を、前記通信工程においてアクセスするキャッシュメモリへロードすることを特徴とする通信装置の制御方法。
【請求項１０】
請求項９に記載された制御方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰ／ＩＰを用いた通信を高速に実行する技術に関する。
【背景技術】
【０００２】
ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）と総称されるプロトコル群の中で、特にＴＣＰは、中心的役割を担うコネクション型のプロトコルである。ＴＣＰコネクションは、通信を行う２つのネットワークデバイスそれぞれのＩＰアドレスとＴＣＰポート番号の４つの情報の組み合わせで表すことができる。なお、これらの情報の組み合わせをソケットペア又は単にソケットと称する。ＴＣＰの詳細仕様については、非特許文献１に記載されている。
【０００３】
近年、ＴＣＰ／ＩＰのプロトコル処理機能を搭載してネットワークに接続し、顧客の利便性を向上させる組み込み機器が急増している。これらの機器においては、ＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）といったプロトコル処理に特化した補助的デバイスをシステムに付加し、広帯域なネットワーク通信を実現することが一般的になりつつある。ＴＯＥの従来例としては、特許文献１に開示される技術が挙げられる。
【０００４】
ところで、ＴＣＰ／ＩＰのプロトコル処理において重要となるのは、ＴＣＢ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）の扱いである。ＴＣＢとは、ＴＣＰ／ＩＰを処理する場合に必要な、コネクション毎に用意されるコンテキスト情報やその集合体の略称である。１つのＴＣＢは、複数のパラメータ（変数）で構成され、ＴＣＰ処理中に頻繁にアクセスされる変数である。
【０００５】
特許文献１には、ＴＣＰ処理を行うために必要なＴＣＢを、主記憶部からＳＲＡＭ（スタティックランダムアクセスメモリ）等の高速な一次メモリに複製して保持する技術が開示されている。これにより、ＴＣＢへのアクセスの高速化を実現している。このとき、コネクションの数が増え、全てのＴＣＢが一次メモリに収まらない場合は、必要なＴＣＢのみ一次メモリに存在するように主記憶部との間で入れ替え処理を行っている。また、特許文献２では、ＴＣＰ／ＩＰの処理を実行する上で発生する、再転送タイマーのタイムアウトを事前検知し、その検知を元にＴＣＢを一次メモリにロードする技術が開示されている。これにより、ＴＣＰ／ＩＰの処理の円滑化を図っている。
【０００６】
他に、一次メモリにＴＣＢをロードするタイミングを制御する技術として、特許文献３に開示される技術がある。特許文献３では、ＴＣＰ／ＩＰの処理を行うプロトコル処理手段が、前段と後段に分かれて実装される構成をとっている。そして、後段のプロトコル処理手段が使用するＴＣＢを、前段のプロトコル処理手段が事前に一次メモリにロードすることを特徴としている。これにより、後段のプロトコル処理手段が速やかにＴＣＢにアクセスできる状態にしておくことができ、処理の円滑化を図っている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００２−５２４００５号公報
【特許文献２】特開２００９−２９６５４６号公報
【特許文献３】特開２００８−１４６４８６号公報
【非特許文献】
【０００８】
【非特許文献１】Ｊｏｎ Ｐｏｓｔｅｌ、“Ｔｒａｎｓｍｉｓｓｉｏｎ Ｃｏｎｔｒｏｌ Ｐｒｏｔｏｃｏｌ”、 ＲＦＣ７９３、 ｈｔｔｐ：／／ｄａｔａｔｒａｃｋｅｒ．ｉｅｔｆ．ｏｒｇ／ｄｏｃ／ｒｔｆ７９３／
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＴＣＰ／ＩＰの通信時、ＴＣＰパケットを受信する度に、どのＴＣＢを使うかを検索し、そのＴＣＢが一次メモリにロードされていない場合は、ロード処理を行う必要がある。この場合、特許文献２の方法は、タイマーを使用しているため、ＴＣＰ／ＩＰパケットの高速な受信処理においては不向きである。特許文献３の方法は、ＴＣＰ／ＩＰ受信処理に適用可能であるが、プロトコル処理手段が前段と後段に分かれている必要がある。また、前段のプロトコル処理手段でどのＴＣＢを使うか検索する処理の軽減に関しては言及されていない。従って、ＴＣＢの検索処理時間とＴＣＢのロードにかかる時間を待たなければ、後段のプロトコル処理手段は動作開始できない。
【課題を解決するための手段】
【００１０】
本発明は、上記課題に鑑みてなされたものであり、特定の通信プロトコルによる通信パケットの受信処理において、コンテキスト情報のロード完了にかかる待ち時間を軽減し、受信処理の高速化を実現することを目的とする。
【００１１】
上記目的を達成するための一手段として、本発明の通信装置は以下の構成を備える。すなわち、通信プロトコルに基づいて通信を行う通信装置であって、所定の通信プロトコルに基づいて通信を制御する通信手段と、前記所定の通信プロトコルの処理に用いるコンテキスト情報を制御する制御手段と、前記通信装置内の各種機能部間を接続する内部バスで転送されるデータを解析する解析手段と、を具備し、前記制御手段は、前記解析手段で解析された結果に対応するコンテキスト情報を、前記通信手段がアクセスするキャッシュメモリへロードすることを特徴とする。
【発明の効果】
【００１２】
本発明により、特定の通信プロトコルによる通信パケットの受信処理において、コンテキスト情報のロード完了にかかる待ち時間を軽減することができ、受信処理の高速化を実現できる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態による通信装置の構成を示す図。
【図２】通信処理の階層と処理を行うハードウェアの対比の例を示す図。
【図３】第１実施形態による一次解析部の構成を示す図。
【図４】通信装置が受信するパケットのフォーマット例を示す図。
【図５】第１実施形態による一次解析部の動作のシーケンス図。
【図６】第１実施形態によるＴＣＢ制御部の構成を示す図。
【図７】ＴＣＢの各要素の格納方法例を示す図。
【図８】ＴＣＢの管理方法例を示す図。
【図９】ＴＣＢ生成時におけるＴＣＢ制御部の動作のフローチャート図。
【図１０】ＴＣＢロード要求時におけるＴＣＢ制御部の動作のフローチャート図。
【図１１】第１実施形態によるＴＯＥサブシステムの動作のシーケンス図。
【図１２】第２実施形態によるＴＯＥサブシステム（Ａ）、及び、一次解析部の構成を示す図（Ｂ）。
【発明を実施するための形態】
【００１４】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１５】
［第１実施形態］
図１は、第１実施形態による通信装置の構成を示すブロック図である。主制御部１０１は、通信装置全体の機能提供、及び、そのための制御を実行する。システムバス１０２は、主制御部１０１と、主記憶制御部１０３とＴＯＥサブシステム１０５をつなぐバスである。主記憶制御部１０３は、主記憶部１０４を使用した、データのＲｅａｄ／Ｗｒｉｔｅを制御する。
【００１６】
主記憶部１０４には、各種ソフトウェアが格納される。具体的には、通信装置の各機能を実現するアプリケーションソフトウェア、アプリケーションプロトコル、関連ハードウェアを制御するためのデバイスドライバ及びＯＳ（Ｏｐｅｒａｔｉｏｎ Ｓｙｓｔｅｍ）が含まれる。また、主記憶部１０４は、主制御部１０１がＴＯＥサブシステム１０５を介してイーサネット（登録商標）１２０より送出したいデータや、ＴＯＥサブシステム１０５がイーサネット１２０から受信し、主制御部１０１に渡すデータの置き場として使用される。また、主記憶部１０４には、通信制御部１０６が実行する各種通信ファームウェアも格納される。さらに、主記憶部１０４には、ＴＣＰ／ＩＰの通信処理を行う上で必要となるＴＣＢも格納される。ＴＣＰ／ＩＰ通信のコネクション数に応じて、必要となるＴＣＢの数も増加するので、主記憶部１０４には、予め通信装置でサポートされる最大コネクション数分だけのＴＣＢが収まるメモリ領域が確保されている。
【００１７】
ＴＯＥサブシステム１０５は、通信装置内部における各種機能部間を接続するサブシステムバス（内部バス）１０９を備え、バスブリッジ部１０８を介してシステムバス１０２に接続されている。通信制御部１０６は、主制御部１０１からオフロードされたＴＣＰ／ＩＰプロトコル処理を実行する。通信制御部１０６は、主記憶部１０４上に展開された各ファームウェアプロトコルを、内蔵する命令キャッシュメモリにロードし、ファームウェアプログラムを実行する。
【００１８】
ここで、図２を参照しながら、通信制御部１０６の役割を詳細に説明する。図２は、通信処理の階層と処理を行うハードウェアの対比を模式的に表したものである。ＴＯＥサブシステム１０５の処理機能は、図２に示される範囲２０８の層をカバーする。すなわち、ＴＯＥサブシステム１０５の処理機能は、ＭＡＣ制御部用ドライバ２０５、インターネット層（ＩＰ層）２０４、トランスポート層（ＴＣＰ／ＵＤＰ層）２０３、及び、ソケットＡＰＩ２０２の一部の機能をカバーする。ＭＡＣ制御部用ドライバ２０５は、ＭＡＣ制御部１１８を使用し、インターネット層２０４とＭＡＣ（Ｍｅｄｉｕｍ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層２０６との間で通信データと通信情報を交換する。インターネット層２０４は、ＩＰプロトコルを処理する。トランスポート層２０３は、ＴＣＰ及びＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｇｒａｍ）プロトコルを処理する。これらの機能は、主にプロトコルを選択しデータの受け渡しと情報の伝達を中継する機能である。以上が、通信制御部１０６で実行される主な通信処理であるが、通信制御部１０６は、一連の処理を実行するにあたり必要となる、ＴＯＥサブシステム１０５に搭載されている各種機能部の制御を行う役割も担う。
【００１９】
図１に戻り、暗号処理部１０７は、ＩＰｓｅｃやＳＳＬ／ＴＬＳ等の暗号通信プロトコル処理機能を提供する。暗号処理内容としては、米国商務省標準技術局（ＮＩＳＴ）によって選定されたＡＥＳ（Ａｄｖａｎｃｅｄ Ｅｎｃｒｉｐｔｉｏｎ Ｓｔａｎｄａｒｄ）暗号器や認証やデジタル署名等に使われるＳＨＡ−１（Ｓｅｃｕｒｅ Ｈａｓｈ Ａｌｇｏｒｉｔｈｍ １）ハッシュ関数器等が挙げられる。その他に、ＲＦＣ１３２１としてＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）で標準化されているＭＤ５（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ ５）ハッシュ関数器等も適用可能である。また、暗号処理部１０７は、暗号通信プロトコル処理のため生成した暗号鍵や乱数及び素数を機密保持するための鍵管理機能や、ＴＣＰ／ＩＰプロトコル処理及び暗号通信プロトコル処理のため乱数発生器を備える。
【００２０】
バスブリッジ部１０８は、ＤＭＡ制御部１１０を除くＴＯＥサブシステム１０５内の各機能部が、主記憶部１０４へアクセスする際に必要となる、サブシステムバス１０９とシステムバス１０２間のバス変換機能を有する。ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）制御部１１０は、主記憶部１０４とＭＡＣ制御部１１８間のデータ転送を制御する。バッファ部１１１は、ＭＡＣ制御部１１８で処理された受信フレームを一時的に保持する。また、バッファ部１１１は、主記憶部１０４から取り出された１パケット分のデータブロックをひとつ、または、複数一時的に保持する。タイマー部１１２は、ＴＣＰ／ＩＰプロトコル処理に必要な時間計測及びタイムアウトイベントを発生させるために使用される。
【００２１】
ＴＣＢ制御部（コンテキスト情報制御部）１１３は、主記憶部１０４に格納されているＴＣＢをＴＣＢキャッシュ部１１４にロードしたり、ロードしたＴＣＢを再び主記憶部１０４に戻したり（フラッシュ）する処理を行う。詳細は後述する。ＴＣＢキャッシュ部１１４は、通信制御部１０６が主記憶部１０４よりも高速にアクセス可能なようにＯｎ Ｃｈｉｐ ＲＡＭで構成され、主記憶部１０４より取得したＴＣＢを記憶するメモリ領域である。ＴＣＢキャッシュ部１１４は、領域を論理的に複数に分離された状態で管理される。なお、以下において、一領域単位をキャッシュブロックと称する。
【００２２】
一次解析部１１５は、ＤＭＡ転送中のデータ、本例ではＤＭＡ制御部１１０とＭＡＣ制御部１１８間のデータバス上に現れるデータをスヌープし、解析する処理を担う。また、一次解析部１１５は、解析結果を元にＴＣＢ制御部１１３にロード要求を発行する機能を有する。具体的には、一次解析部１１５には、解析対象となるデータを取り込むスヌープバス１１６とのインターフェイスと、ＴＣＢ制御部１１３へＴＣＢのロード命令を送信するための制御信号１１７の出力部が具備されている。さらに、一次解析部１１５は、通信制御部１０６とコミュニケーションを行うためのサブシステムバス１０９接続用のインターフェイスを具備する。詳細については図３により後述する。
【００２３】
ＭＡＣ制御部１１８は、ＯＳＩ参照モデルのデータリンク層（第２層）の下位副層に相当するＭＡＣ層２０６のプロトコルを処理するハードウェアである。通信装置は、ＰＨＹ通信部（Ｐｈｙｓｉｃａｌ Ｌａｙｅｒ Ｔｒａｎｃｅｉｖｅｒ ＩＣ）１１９によってイーサネット１２０に接続されている。ＰＨＹ通信部１１９は、ＯＳＩ参照モデルの第１層に位置するＰＨＹ（物理）層２０７のプロトコル処理と電気信号を扱うハードウェアである。以上が図１に示される本実施形態による通信装置の各機能部に関する概略説明である。
【００２４】
次に、一次解析部１１５の詳細について、図３を用いて説明する。図３は、一次解析部１１５の具体的構成を示す図である。レジスタ部３０１は、サブシステムバス１０９の接続用のインターフェイスを構成するもので、通信制御部１０６と一次解析部１１５が通信を行うためのレジスタ群を有し、本例では３つのレジスタより構成される。命令セット部３０２は、通信制御部１０６が、一次解析部１１５に命令をセットするためのレジスタである。状態表示部３０３は、一次解析部１１５の状態をサブシステムバス１０９に提示するためのレジスタであり、通信制御部１０６は、本レジスタを監視することにより、一次解析部１１５の状態を確認することができる。解析結果表示部３０４は、一次解析部１１５がスヌープバス１１６に流れるデータを解析した際、その解析結果をサブシステムバス１０９に提示する。
【００２５】
状態制御部３０５は、一次解析部１１５の全体制御を担う。主な機能としては、一次解析部１１５内に具備される各種機能部の制御、及び、ＴＣＢ制御部１１３へのＴＣＢロード命令の発行である。バスデコード部３０６は、スヌープバス１１６に流れるデータストリームをバスプロトコルに則りデコードする機能を有する。デコード結果として、読み込みデータ値３０７と、そのデータ値がスヌープバス１１６に流れるデータのうち何バイトに当たるのかを示すカウンタ値３０８が、バスデコード部３０６から出力される。
【００２６】
ビット判定部３１０は、バスデコード部３０６から出力された読み込みデータ値３０７とカウンタ値３０８を用いて、状態制御部３０５の指示のもとビット判定処理を行う。そして、ビット判定部３１０は、ビット判定処理の結果である判定結果３０９を状態制御部３０５に出力する。ソケット情報取得部３１２は、状態制御部３０５の指示のもと、読み込みデータ値３０７とカウンタ値３０８から、対象となるソケット情報を取得する機能を有する。本実施形態においては、ソケットペアの情報とは、宛先ＩＰアドレス、宛先ポート番号、送信元ＩＰアドレス、及び、送信元ポート番号の４つの情報の組み合わせをいう。また、ソケット情報は、これら４つの情報の組み合わせによってプロトコル通信チャネルを識別可能な識別情報である。ソケット情報取得部３１２は、取得データ（ソケット情報）３１１を状態制御部３０５に返す機能を有する。
【００２７】
次に、一次解析部１１５の詳細動作について図５のシーケンス図を用いて説明する。図５は、ＭＡＣ制御部１１８から、ＤＭＡ制御部１１０を使用して、イーサネットフレームをバッファ部１１１に格納するときの一次解析部１１５の動作について、各種機能部の動作と併せ示したシーケンス図である。一次解析部１１５は、最終的にソケット情報を取得することを目的とする。本実施形態では、図４に示すＴＣＰ／ＩＰ（ｖ４）を使用したときにおけるイーサネットフレームを受信する場合を例にして説明する。
【００２８】
まず、通信制御部１０６は、一次解析部１１５の初期設定を行う。具体的には、一次解析部１１５のレジスタ部３０１の命令セット部３０２に初期設定のために必要な命令を書き込む処理を行う（５０１）。初期設定値としては、スヌープバス１１６から取り込むデータに対して、何バイト目から解析を始めるかといったオフセット情報がある。例えば、ある実施形態において、イーサネットフレームヘッダ４３０は、すべてＭＡＣ制御部１１８で処理され、ＭＡＣ制御部１１８よりＤＭＡ制御部１１０で取りこんだデータに含まれない場合には、ＩＰヘッダの位置が異なる。また、詳しい説明は省略するが、イーサネットフレームとＩＥＥＥ８０２．３形式の場合、ヘッダ部の長さが異なる。そのような場合でも適用可能とするため、解析位置を任意に設定できるようになっていることが望ましい。
【００２９】
レジスタ部３０１の命令セット部３０２に初期化命令が書き込まれると（５０２）、状態制御部３０５は、書き込まれた値を受信し（５０３）、ソケット情報取得部３１２、及び、ビット判定部３１０に初期化命令を送信する（５０４）。初期化命令を受け取った各処理部と状態制御部３０５は、それぞれ初期化を実行する（５０５、５０６、５０７）。この状態において、ＴＣＰ／ＩＰの通信処理が開始され、ＭＡＣ制御部１１８は、イーサネット１２０より、ＰＨＹ通信部１１９を介してパケットを受信すると（５０８）、通信制御部１０６に受信通知を行う（５０９）。受信通知を受け取った通信制御部１０６は、ＤＭＡによる受信データの取り込みを開始する前に、一次解析部１１５に対して、解析開始要求を行う（５１０）。レジスタ部３０１の命令セット部３０２に解析開始要求が書き込まれると（５１１）、状態制御部３０５は解析開始命令を受け取り（５１２）、バスデコード部３０６へバスデコード開始命令を送信する（５１３）。これにより、バスデコード部３０６がスヌープバス１１６からのデータに対してのデコード処理、及び、読み込みデータ値３０７とカウンタ値３０８の出力を開始するための処理を行う（５１４）。また、解析要求を受け取った状態制御部３０５は、一次解析部１１５が解析処理中になったことを他の機能部に通知するために、レジスタ部３０１へ、ステータス通知を行う（５１５）。通知を受けたレジスタ部３０１は、他の機能部から読み込み可能なレジスタである状態表示部３０３に、状態を登録する（５１６）。
【００３０】
一次解析部１１５に対して、解析開始要求行った通信制御部１０６は、次にＤＭＡ制御部１１０に対して、ＤＭＡ転送開始要求を送信する（５１７）。要求を受けたＤＭＡ制御部１１０は、要求の解析を行い（５１８）、ＭＡＣ制御部１１８よりバッファ部１１１へのパケットの受信処理であることが分かると、ＭＡＣ制御部１１８に対して、ＤＭＡ転送実行命令を送信する（５１９）。これにより、ＭＡＣ制御部１１８とＤＭＡ制御部１１０間で、ＤＭＡ転送が行われる（５２０）。ＤＭＡ転送は、ＭＡＣ制御部１１８内にあるバッファが空になるまで、繰り返し行われる。
【００３１】
ＤＭＡ転送が開始されると、スヌープバス１１６にもデータが発生する。スヌープバス１１６よりバスデコード部３０６に入力されたデータは、デコードされて読み込みデータ値３０７とカウンタ値３０８となる。そして、この読み込みデータ値３０７とカウンタ値３０８は、ビット判定部３１０、及び、ソケット情報取得部３１２へと出力される（５２１）。ビット判定部３１０は、まず、初期化情報に基づいて、カウンタ値３０８が所定の値になったときに、そのときに入力された読み込みデータ値３０７をイーサネットフレームヘッダ部であると判断し、解析を行う（５２２）。具体的には、ビット判定部３１０は、タイプ４０３を受信して、到着パケットがＩＰパケットであるかの解析を行う。ＩＰパケットは、タイプ４０３に、０ｘ０８００（ＩＰｖ４）、０ｘ８６ＤＤ（ＩＰｖ６）が記載されている。ビット判定部３１０は、タイプ４０３が上記の値になっているかビット判定を行う。タイプ４０３が上記の値になっている、すなわち、ＩＰパケットであった場合には、処理を継続する。一方、タイプ４０３が上記の値になっていない、すなわち、ＩＰパケット以外の場合は、以降の処理を中断するために、状態制御部３０５に通知を行う等の処理をしても良い。
【００３２】
次に、ビット判定部３１０は、ＩＰヘッダ（４３１）の判定を行う（５２３）。すなわち、一次解析部１１５は、最終的にソケット情報を取得することが目的であり、そのために必要なビット判定をＩＰヘッダ（４３１）に対しても行う。具体的には、本実施形態（ＩＰｖ４）の場合、ビット判定部３１０は、バージョン４０４、ＩＨＬ（Ｉｎｔｅｒｎｅｔ Ｈｅａｄｅｒ Ｌｅｎｇｔｈ）４０５、プロトコル４１２を判定する。これらを判定することにより、ソケット情報に必要となる、送信元ＩＰアドレス（４１４）、宛先ＩＰアドレス（４１５）、送信元ポート番号（４１７）、及び、宛先ポート番号（４１８）の位置特定が可能となる。そして、ビット判定部３１０は、判定結果を状態制御部３０５へ通知する（５２４）。ビット判定部３１０より判定結果を受信した状態制御部３０５は、ソケット情報が、データパケットの何バイト目に存在するか計算し、計算により得たソケット情報の位置をソケット情報取得部３１２に通知する（５２５）。通知を受けたソケット情報取得部３１２は、受け取った情報をもとに取得のためのタイミングを決定し、カウンタ値３０８が所定の値になったときに、読み込みデータ値３０７をソケット情報として読み込む（５２６）。そして、ソケット情報取得部３１２は、取得データ３１１を状態制御部３０５に出力する（５２７）。
【００３３】
ソケット情報を受け取った状態制御部３０５は、すでに一次解析部１１５としての解析が終了したので、バスデコード部３０６、ビット判定部３１０、及び、ソケット情報取得部３１２に対して、処理終了命令を発行する（５２８）。処理終了命令を受信した、バスデコード部３０６、ビット判定部３１０、及び、ソケット情報取得部３１２は、それぞれ処理を終了する（５２９、５３０、５３１）。また、ソケット情報を受け取った状態制御部３０５は、受信したソケット情報を添えて、制御信号１１７としてＴＣＢ制御部１１３にＴＣＢのロード命令を送信する（５３２）。以上の処理により一次解析部１１５の全処理が終了したので、状態制御部３０５はレジスタ部３０１に対して解析結果を添えて、終了状態の表示、及び、解析結果の表示命令を送信する（５３３）。命令を受けたレジスタ部３０１は、終了ビットと解析結果の値を解析結果表示部３０４に保持させる（５３４）。以上が、詳細な一次解析部１１５の処理シーケンスについての説明である。
【００３４】
次に、ＴＣＢ制御部１１３について、図６を用いて詳細に説明する。図６は、ＴＣＢ制御部１１３の具体的構成を示す図である。ＴＣＢ制御部１１３は、各通信プロトコルを処理する際に使用するコンテキスト情報をＴＣＢとしてＴＣＢキャッシュ部１１４に保持管理し、通信制御部１０６から短時間にＴＣＢの参照や書き換えを可能とする機能を有する。具体的には、ＴＣＢ制御部１１３は、以下の構成より成る。
【００３５】
状態制御部６０１は、ＴＯＥサブシステム１０５内の各機能部からの各種コマンドの解析を行うとともに、ＴＣＢ制御部１１３内の各部を統括的に制御する。主制御部１０１によって状態制御部６０１の命令キャッシュメモリにマイクロコードがロードされ、状態制御部６０１がこれを実行することにより、後述の図９、及び、図１０に示す処理動作が実現される。本実施形態では、状態制御部６０１をプログラム可能なシーケンサとしたが、より高速にするために有限状態マシン（専用マシン）のハードウェアで構成してもよい。
【００３６】
アドレスデコード部６０２は、サブシステムバス１０９に接続され、ＴＯＥサブシステム１０５内の各機能部からのアクセス要求に対し、アドレスをデコードする。デコード結果により、アクセス要求先がレジスタ部６０５であるか、ＴＣＢキャッシュ部１１４であるかを振り分け、アクセス要求をレジスタ部６０５、または、キャッシュメモリ制御部６１０に発行する。また、アドレスデコード部６０２は、レジスタ部６０５、または、キャッシュメモリ制御部６１０より受け取った、アクセス要求に対しての応答結果をサブシステムバス１０９に返す。アドレスデコード部６０２とキャッシュメモリ制御部６１０は、データバス６０４により接続される。
【００３７】
レジスタ部６０５は、ＴＣＢ制御部１１３とＴＯＥサブシステム１０５内の各機能部とのコミュニケーションに使用される。そのために、レジスタ部６０５は、ＴＣＢ制御部１１３の状態を表すレジスタと、各機能部がＴＣＢ制御部１１３に命令をセットするためのレジスタを有する。さらに、レジスタ部６０５は、一次解析部１１５から直接命令を受け付けるための制御信号１１７と、その他のＴＯＥサブシステム１０５内の各機能部からサブシステムバス１０９を介して命令を受け付けるためのインターフェイスを備える。なお、本実施形態では、制御信号１１７を介して、一次解析部１１５からの解析結果を受信する構成としているが、サブシステムバス１０９を介して行うことができる構成にしても良い。
【００３８】
ＤＭＡ転送部６０６は、状態制御部６０１からの指示に応じて、ＴＣＢキャッシュ部１１４と主記憶部１０４間におけるシステムバス１０２、サブシステムバス１０９及び６０７、データバス６０８を介したＴＣＢの転送を制御する。ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）テーブル６０９は、状態制御部６０１と接続されており、どのキャッシュブロックが利用されているか、どのキャッシュブロックに配置されたＴＣＢの退避が禁止されているか等を管理するためのテーブルである。
【００３９】
キャッシュメモリ制御部６１０は、データバス６０４及び６０８を介して、アドレスデコード部６０２またはＤＭＡ転送部６０６と接続される。また、キャッシュメモリ制御部６１０は、アドレスデコード部６０２またはＤＭＡ転送部６０６の指示に基づいて、ＴＣＢキャッシュ部１１４に対する各種データの書き込み及び読み出しを制御する。ＴＣＢ管理部６１２は、ＴＣＢ管理テーブル６１１を用いて、ソケット番号の使用の有無等、ソケット番号に関する管理を行う。本実施形態では、ソケット番号は１から５１２まで用意され、ソケット情報を識別するために、１つのソケット情報に対してこれらの番号からユニークに番号が割り当てられるものとする。
【００４０】
ＣＡＭ制御部６１３は、状態制御部６０１からの指示に応じて、第１ＣＡＭ６１４及び第２ＣＡＭ６１５に対する各種データの書き込み及び読み出しを行う。第１ＣＡＭ６１４には、ソケット情報とソケット番号が関連づけて登録されている。そして、第１ＣＡＭ６１４は、ＴＣＢ制御部１１３が受信フレームから取り出したソケット情報を検索キーとして、ＴＣＢを特定するためソケット番号を検索するために使用される。また、第２ＣＡＭ６１５には、ソケット番号とキャッシュブロック番号が関連づけて登録されている。そして、第２ＣＡＭ６１５は、ソケット番号を検索キーとして、所望のソケット番号を有するＴＣＢがＴＣＢキャッシュ部１１４上に有るかどうかを判定するために使用される。以上がＴＣＢ制御部１１３の詳細構成に関する説明である。
【００４１】
なお、ＴＣＢには、送受信に係るウィンドウサイズや、Ａｃｋナンバーといったスライディングウィンドウ制御に係るものや、送受信に使用されるバッファのポインタ情報等が含まれる。詳細は非特許文献１に記載されている。その他、ＴＣＰ／ＩＰ通信においてＴＣＢに追加で付与しておくことによって、処理の高速化・容易化・利便性が図れるものパラメータがあれば、ＴＣＢに組み込んでも良い。
【００４２】
次に、ＴＣＢが主記憶部１０４、または、ＴＣＢキャッシュ部１１４に格納されるＴＣＢの一例について図７を用いて説明する。図７は、ＴＣＢの各要素の格納方法の一例を示す図である。ＴＣＰ／ＩＰプロトコル処理の中で、ＴＣＢ７０１は、図７に示すように１ビット要素７０２、４ビット要素７０３、８ビット要素７０４、・・・というように、各要素がサイズ毎の分類７０２〜７０６で纏められ配置されている。ＴＣＢに含まれる各要素は、これらのいずれかのサイズに合うように正規化されている。また、このサイズ区切りは、通信制御部１０６及び状態制御部６０１が使用するファームウェアが論理的に設定したものであり、物理的なものではない。従って、ファームウェアをコンパイルする際に与える各種パラメータを纏めたヘッダファイルの記述によって各サイズ及び要素数や要素の順番を定義し直すことができる。
【００４３】
次に、上記の説明のようにメモリ（主記憶部１０４またはＴＣＢキャッシュ部１１４）に格納されたＴＣＢの管理方法について図８を用いて説明する。図８は、ＴＣＢの管理方法を説明する図である。主記憶部１０４に配置されたＴＣＢ群８０２〜８０４は、図８（Ａ）に示すように、ＴＣＰコネクションを識別しているソケット番号順（ソケット番号１〜３）に並べられ、格納されている。主記憶部１０４には、通信装置において予め保証する最大コネクション数に応じたＴＣＢ用領域８０１を確保しておく必要がある。図８（Ａ）は、最大コネクション数を５１２とした時の例である。
【００４４】
また、ＴＣＢキャッシュ部１１４上の各ＴＣＢの配置状態の一例を図８（Ｂ）に示す。この例では、最大８つのＴＣＢがロードできるように領域が確保されているものとする。アクセスされるＴＣＢ８０６、８０７、８０８は、ＴＣＢキャッシュ部１１４上のＴＣＢ用領域８０５に複製されている。ＴＣＢキャッシュ部１１４と主記憶部１０４間のＴＣＢ転送は、状態制御部６０１の指示でＤＭＡ転送部６０６が行う。
【００４５】
ＴＣＢキャッシュ部１１４に配置可能なＴＣＢ数は、コスト等により制約を受けるが、複数配置できることが望ましい。理由については２つある。１つ目は、急峻な複数パケット受信時において、以前に到着したパケットに関して、まだＴＣＢを利用した受信処理が完了していない段階でも、新たなパケット処理に必要なＴＣＢのロードを可能とするためである。２つ目は、通信制御部１０６が、例えばマルチスレッド、あるいは、マルチコアで構成され、複数のパケットに対して同時に受信処理を行っている場合に、ＴＣＢのロード、及び、フラッシュ処理を頻発させないためである。ＴＣＢのロード、及び、フラッシュは時間のかかる処理であるので、可能な限り発生させないことが望ましい。
【００４６】
また、ＴＣＢ管理テーブル６１１には、図８（Ｃ）に示すように、キャッシュブロック番号毎に、該当キャッシュブロック番号におけるＴＣＢの有無を示すビットマップ８０９が形成されてＴＣＢ管理部６１２により管理されている。さらにＴＣＢ管理テーブル６１１には、図８（Ｄ）に示すように、ソケット番号の使用の有無を示すビットマップ８１０が形成されて、キャッシュブロックと同様にＴＣＢ管理部６１２により管理されている。
【００４７】
次に、ＴＣＢ制御部１１３の詳細動作について、図９及び図１０のフローチャートを用いて説明する。図９は、ＴＣＢの生成時におけるＴＣＢ制御部１１３の処理の流れを示すフローチャートである。なお、ＴＣＢは、ＴＣＰコネクション確立時に生成される。このＴＣＰコネクション確立は、通信制御部１０６によって行われ、コネクション確立時に交換される情報から通信制御部１０６はソケット情報を得る。コネクション確立時に送受信される各ＴＣＰパケットのＴＣＰヘッダにはソケット情報が含まれる。その上でまず、ステップＳ９０１において、状態制御部６０１は、通信制御部１０６からＴＣＢの生成が命令される。その際に、通信制御部１０６から状態制御部６０１にソケット情報等が伝達される。状態制御部６０１は、ソケット情報等に基づいてＴＣＢの作成を開始する。
【００４８】
ステップＳ９０２において、状態制御部６０１は、ＴＣＢ管理部６１２から未使用のソケット番号を取得する。ＴＣＢ管理部６１２は、未使用のソケット番号を管理しており、状態制御部６０１から取得要求に応じて、未使用のソケット番号を発行する。ＴＣＢ管理部６１２は、状態制御部６０１から未使用のソケット番号を要求されると、予めビットマップ８１０を検索して得ていた未使用のソケット番号を報告する。この報告とは別に、バックグラウンドの動作で、ＴＣＢ管理テーブル６１１の更新や次の未使用ソケット番号検索が当然に行われている。また、コネクション解放時には、通信制御部１０６から状態制御部６０１を介して使用済みソケット番号がＴＣＢ管理部６１２に返却される。使用済みソケット番号が返却されると、ＴＣＢ管理部６１２は、図８（Ｄ）に示すＴＣＢ管理テーブル６１１を更新するとともに、未使用ソケット番号検索を行う。
【００４９】
ステップＳ９０３において、ソケット番号の取得が成功した場合は、ステップＳ９０４へ、失敗した場合はステップＳ９１３へ進む。ステップＳ９０４において、第１ＣＡＭ６１４にソケット情報が登録される。即ち、状態制御部６０１は、ステップＳ９０２で得られたソケット番号と、ステップＳ９０１で得たソケット情報を関連付けて登録するようＣＡＭ制御部６１３に指示する。指示を受けたＣＡＭ制御部６１３は、アドレスとしてソケット情報を第１ＣＡＭ６１４に登録する。ステップＳ９０５において、状態制御部６０１は、ＴＣＢをＴＣＢキャッシュ部１１４上に生成する準備として、ＴＣＢ管理部６１２から未使用のキャッシュブロック番号を取得する。ステップＳ９０６において、未使用のキャッシュブロックがなく、キャッシュブロック番号の取得に失敗した場合はステップＳ９０７へ、成功した場合はステップＳ９０９へ進む。
【００５０】
ステップＳ９０７及びステップＳ９０８は、ＴＣＢキャッシュ部１１４上に新たなＴＣＢを生成するため、古いＴＣＢを主記憶部１０４に退避し、空きの領域を作る処理である。具体的には、ステップＳ９０７において、状態制御部６０１は、ＬＲＵテーブル６０９から、アクセスの最も古いキャッシュブロック番号と対応するソケット番号を取得する。次に、ステップＳ９０８において、ＤＭＡ転送部６０６は、ＴＣＢキャッシュ部１１４上にあり、かつ、ステップＳ９０７で特定された最古のキャッシュブロック番号のＴＣＢを、主記憶部１０４上の該当ソケット番号の位置に退避する。これにより、ＴＣＢキャッシュ部１１４に空きの領域が生成される。
【００５１】
ステップＳ９０９において、状態制御部６０１は、空きキャッシュブロックに、作成するＴＣＢと関連付けられている（ステップＳ９０２で取得した）ソケット番号を登録するようＣＡＭ制御部６１３に対して指示する。これを受けて、ＣＡＭ制御部６１３は、第２ＣＡＭ６１５のキャッシュブロック番号のアドレスに、ソケット番号を登録する。ステップＳ９１０において、状態制御部６０１は、ＴＣＢキャッシュ部１１４上で、新しくＴＣＢを作成するキャッシュブロック番号のキャッシュブロックを初期化するようキャッシュメモリ制御部６１０に対して指示する。これを受けて、キャッシュメモリ制御部６１０は、キャッシュブロックを初期化する。ステップＳ９１１において、状態制御部６０１は、キャッシュブロックの初期化に応じて、ＬＲＵテーブル６０９を更新する。ステップＳ９１２において、状態制御部６０１は、キャッシュブロック番号をステップＳ９０２で取得したソケット番号と共にキャッシュメモリ制御部６１０に登録する。このとき、状態制御部６０１は、生成したＴＣＢをＴＣＢキャッシュ部１１４内におけるキャッシュブロック番号のアドレスに登録する。
【００５２】
一方、ステップＳ９０３において、ＴＣＢ管理部６１２が管理している未使用ソケット番号が枯渇し、ソケット番号の取得が失敗した場合、ステップＳ９１３へ進む。ステップＳ９１３では、ＴＣＢ管理部６１２が要求元の通信制御部１０６にその旨を通知し、結果的にコネクション確立は不成功となる。ＴＣＢ管理部６１２が管理している未使用ソケット番号の枯渇が起こる理由は、ソケット番号の総数は主記憶部１０４上の固定的に用意された領域に配置されるため、主記憶部１０４の容量の制約を受けるからである。一般に、コネクション確立は交渉事であり不成立もあり得る。以上が、ＴＣＢの生成要求を受信したときにおける、ＴＣＢ制御部１１３の動作についての詳細説明である。
【００５３】
図１０は、通信制御部１０６、または、一次解析部１１５から、ＴＣＢ制御部１１３に対してＴＣＢのロード要求が行われた場合のＴＣＢ制御部１１３の動作を示すフローチャートである。本実施形態のように、通信制御部１０６と一次解析部１１５の２つからＴＣＢロード要求を発行できるようにしたのは、以下の理由である。例えば、ＴＣＰ／ＩＰパケットの送信処理時においては、通信制御部１０６がパケット生成において必要なＴＣＢをロードする。また、ＴＣＰ／ＩＰパケットを受信した時には、通信制御部１０６が実施するよりも早いタイミングで、一次解析部１１５がＴＣＢのロード要求を発行する。これにより、通信制御部１０６は任意のタイミングで任意のＴＣＢのロード要求をすることができ、かつ、パケット受信時においては、一次解析部１１５がＴＣＢのロード要求をすることができ、結果として高速なＴＣＢのロードを実現できる。
【００５４】
ロード要求は、ロード対象とするＴＣＢに対応した、ソケット情報またはソケット番号が付与された状態で行われる。まず、ロード要求に、ロードしたいＴＣＢに対応したソケット番号が付与されているか否かを条件に処理シーケンスを分ける。ソケット番号が付与されていた場合は、ステップＳ１００５へ進む。ソケット番号が付与されていなかった場合は、ステップＳ１００２へ進む。ステップＳ１００２において、状態制御部６０１は通信制御部１０６または一次解析部１１５からソケット情報を取得する。次に、ステップＳ１００３において、状態制御部６０１は、ステップＳ１００２において取得したソケット情報を検索キーとして第１ＣＡＭ６１４からソケット番号を得る。なお、この処理はＣＡＭ制御部６１３を介して行われる。コネクションが確立していれば、ＴＣＢ生成の過程で対象となるソケット情報は登録されている。そして、ステップＳ１００４において、状態制御部６０１はソケット番号の取得が成功したかを判断する。ソケット番号を取得できた場合は、ステップＳ１００５へ進む。ソケット番号の取得に失敗した場合は、ステップＳ１０１５へ進む。ステップＳ１０１５においては、状態制御部６０１はソケット番号取得失敗を通信制御部１０６に通知する。ソケット番号取得失敗は、受信したパケットが、ＴＣＰパケットである場合は、コネクション確立時に交換するＳＹＮパケットか不正パケットのどちらかであることを示す。これ以降、このパケットをどのように処理するかは、この通知を受けた通信制御部１０６が引き継ぐ。
【００５５】
ステップＳ１００５においては、状態制御部６０１は、ソケット番号を検索キーとして第２ＣＡＭ６１５からキャッシュブロック番号を取得する。なお、この処理はＣＡＭ制御部６１３を介して行われる。そして、ステップＳ１００６において、状態制御部６０１はキャッシュブロック番号の取得が成功したかを判断する。キャッシュブロック番号の取得が成功した場合は、ステップＳ１０１４へ、失敗した場合はステップＳ１００７へ進む。取得の失敗は、ロード対象とするＴＣＢがＴＣＢキャッシュ部１１４に無いことを表す。ステップＳ１００７において、状態制御部６０１は、ＴＣＢ管理部６１２から未使用のキャッシュブロック番号を取得することを試みる。そして、ステップＳ１００８において、状態制御部６０１は未使用のキャッシュブロック番号の取得が成功したかを判断する。未使用のキャッシュブロックがなく、キャッシュブロック番号の取得に失敗した場合はステップＳ１００９へ、成功した場合はステップＳ１０１１へ進む。ステップＳ１００９において、状態制御部６０１は、ＬＲＵテーブル６０９から最終アクセスの最も古いキャッシュブロック番号と対応するソケット番号を取得する。ステップＳ１０１０において、ＤＭＡ転送部６０６は、ＴＣＢキャッシュ部１１４上にあり、ステップＳ１００９で特定したキャッシュブロック番号のＴＣＢを、主記憶部１０４上の該当する位置へ退避させる。
【００５６】
ここまでの処理により状態制御部６０１はキャッシュブロック番号が取得でき、ステップＳ１０１１において、状態制御部６０１は、取得したキャッシュブロック番号にソケット番号を登録する。ステップＳ１０１２において、ＤＭＡ転送部６０６は、主記憶部１０４上にあり、ロード対象となったソケット番号のＴＣＢを取得し、ＴＣＢキャッシュ部１１４上の所定のキャッシュブロック番号のキャッシュブロックに読み込む。ステップＳ１０１３において、状態制御部６０１は、ＬＲＵテーブル６０９を更新する。ステップＳ１０１４において、状態制御部６０１は、取得したＴＣＢが格納されたキャッシュブロック番号をソケット番号と共にキャッシュメモリ制御部６１０登録する。以上が、ＴＣＢのロード要求を受信したときにおける、ＴＣＢ制御部１１３の動作についての詳細説明である。
【００５７】
次に、上記一次解析部１１５、及び、ＴＣＢ制御部１１３を具備したＴＯＥサブシステム１０５がどのように動作するかについて、図１１のシーケンス図を用いて説明する。図１１は第１実施形態によるＴＯＥサブシステムの動作シーケンス図である。なお、各種機能部のリセットや初期設定といった項目については、本実施形態における特徴とは必ずしも関係しないため、説明を省略する。まず、ＭＡＣ制御部１１８は、ＰＨＹ通信部１１９からＴＣＰ／ＩＰパケットを受信する（１１０１（５０８と同様））。ＭＡＣ制御部１１８は、通信制御部１０６へ、パケットを受信したことを通知する（１１０２、５０９と同様）。通知を受けた通信制御部１０６は、解析要求を一次解析部に送信し、併せてＤＭＡ転送開始要求をＤＭＡ制御部１１０に送信する（１１０３、及び、１１０４（夫々５１０、及び、５１５と同様））。
【００５８】
ＤＭＡ制御部１１０は要求を解析し（１１０５（５１６と同様））、ＤＭＡ転送実行命令をＭＡＣ制御部１１８に送信する（１１０６（５１７と同様））。ＭＡＣ制御部１１８とＤＭＡ制御部１１０間のＤＭＡ転送（１１０７（５１８と同様））が開始される。ＤＭＡ転送中（１１０７）において、一次解析部１１５は、スヌープバス１１６を流れるＴＣＰ／ＩＰパケットの解析処理や、パケットのソケット情報の取得処理を行う（１１０８（５２０〜５２９に相当））。ソケット情報の取得後に、該ソケット情報を付与してＴＣＢ制御部１１３にＴＣＢロード命令を送信する（１１０８（５３０と同様））。そして一次解析部１１５は、解析の終了処理を行う（１１０９（５３１／５３２に相当））。ＴＣＢロード命令を受信したＴＣＢ制御部１１３は、ＴＣＢのロード処理を開始する（１１１０、Ｓ１００１〜Ｓ１０１１に相当）。ＴＣＢのロード処理（１１１２（Ｓ１０１２に相当））の完了を検知すると（１１１３）、終了処理を行う（１１１４（Ｓ１０１３／Ｓ１０１４に相当））。
【００５９】
一方、ＤＭＡ完了を検知したＤＭＡ制御部１１０は（１１１５）、通信制御部１０６に対して、ＤＭＡ転送完了通知を行う（１１１６）。ＤＭＡ完了通知を受信した通信制御部１０６は、一次解析部１１５の解析結果表示部３０４にアクセスし、受信したパケットの解析結果を取得する（１１１７）。通信制御部１０６は、解析結果を元に、ＩＰ層（２０４）、及び、ＴＣＰ／ＵＤＰ層（２０３）における受信処理を行うために、必要となるＴＣＢのロード命令をＴＣＢ制御部１１３に送信する（１１１８）。ＴＣＢロード命令を受信したＴＣＢ制御部１１３は、ＴＣＢロード処理を行うが、すでにＴＣＢキャッシュ部１１４には、該ＴＣＢがロードされている状態（Ｓ１００６でＹｅｓに相当）なので、即座にＴＣＢロードの完了通知を送信する（１１１９）。ＴＣＢロードを確認した通信制御部１０６は、ＩＰ層（２０４）、及び、ＴＣＰ／ＵＤＰ層（２０３）における受信処理を開始する（１１２０）。
【００６０】
図１１において特筆すべきは、ＤＭＡ転送中（１１０７）においも、一次解析部１１５はＴＣＢロード命令をＴＣＢ制御部１１３に送信できる点である。これにより、ＴＣＢロードに必要な時間あり、実際に通信制御部１０６がロード完了までＴＣＰ／ＩＰパケットの受信処理を待機する時間を一部、または、全部削減して通信制御部１０６は受信処理を開始（１１２０）できる。さらに本実施形態に付随する効果として、以下を挙げることができる。すなわち、従来技術において、通信制御部１０６の処理において必要であったＴＣＰ／ＩＰパケットの解析処理についても、一次解析部１１５が肩代わりすることにより通信制御部１０６の処理を簡略化できる点である。この効果もＴＣＰ／ＩＰパケットの受信性能を向上させる効果として、挙げることができる。
【００６１】
また、図１１では、ＤＭＡ転送完了通知（１１１６）を通信制御部１０６が受信してから処理（１１１７）を開始しているが、このタイミングでなくともよい。すなわち、ＩＰ（ｖ４）ヘッダ（４３１）、及び、ＴＣＰヘッダ（４３２）があれば、通信制御部１０６は、ＴＣＢのロード命令等、ＩＰ層（２０４）、及び、ＴＣＰ／ＵＤＰ層（２０３）の受信処理を開始することができる。従って、ＤＭＡ転送完了通知（１１１６）よりも早いタイミングで、例えば、受信開始可能通知をＤＭＡ制御部１１０が、通信制御部１０６に送信し、それを元に、通信制御部１０６は処理（１１１７）を開始しても良い。以上が図１１の説明である。
【００６２】
以上のように、本実施形態によれば、ＴＣＢのロード要求からロード完了にかかる待ち時間を軽減できることができ、受信処理をより高速にすることが可能となる。
【００６３】
［第２実施形態］
図１２は、第２実施形態による通信装置（図１２（Ａ））及び、一次解析部（図１２（Ｂ））のブロック図である。第１実施形態との差分は、ＴＯＥサブシステムにおける、一次解析部の機能にある。一次解析部１２０２は、サブシステムバス１０９をスヌープできるように、第２スヌープバス１２０４が接続できるインターフェイスを備えている。なお、第１スヌープバス１２０３は、スヌープバス１１６と同様のものである。また、一次解析部１２０２は、サブシステムバス１０９をデコードできるように、バスデコード部１２０５が具備されている。これにより、サブシステムバス１０９を流れるＴＣＰ／ＩＰパケットに関しても、パケットを解析し、ＴＣＢのロードに必要となるソケット情報の抽出が可能となる。
【００６４】
この機能は、暗号化されたパケットを受信するに際して適している。例えば、ＩＰＳｅｃが適用されたパケットは、ソケット情報が暗号化されており、一次解析部１２０２は、第１スヌープバス１２０３を流れるデータからソケット情報を取り出せない場合がある。その場合において、本実施形態を適用することにより、暗号処理部１０７より出力される暗号のデコード済みパケットがサブシステムバス１０９を流れるタイミングで一次解析部１２０２は、解析が可能となる。結果、通信制御部１０６がＴＣＰとしての受信処理を開始するよりも早いタイミングでＴＣＢのロードが可能となる。暗号化のために用意された特別なヘッダが上記パケットに付随されていても、先に説明したように解析開始点に対して、オフセット情報を付与することにより解析が可能となる。
【００６５】
なお、一次解析部１２０２は、スヌープバス１１６からソケット情報を取り出せないと説明したが、受信パケットに対して暗号化が施されているか否かについては、解析可能である。詳細な説明は省略するが、本実施形態に係る一次解析部１２０２の構成により、イーサネットフレームヘッダ４３０のタイプ４０３から解析を開始することで実現できることは明白である。この解析結果を通信制御部１０６が利用して、ＭＡＣ制御部１１８より取り込んだパケットの次の処理を決定することができ、これにより通信制御部１０６の処理の軽減と受信処理の高速化を実現できる。なお、一次解析部１２０２が第１スヌープバス１２０３と第２スヌープバス１２０４に流れるデータを切り換えて受信して解析するように構成してもよい。
【００６６】
以上のように、本実施形態によれば、暗号化パケットを受信する際においても、ＴＣＢのロード要求からロード完了にかかる待ち時間を軽減できることができ、受信処理をより高速にすることが可能となる。
【００６７】
［その他の実施形態］
以上、本発明を利用できる形態について２つの実施形態を用いて説明した。なお、本実施形態では、プロトコル処理の代表的事例としてＴＣＰプロトコルについて述べたが、他のプロトコルについても対応可能である。例えば、ＳＳＬ／ＴＬＳプロトコル通信においては、複数のセッションを識別し、そのセッション毎のＴＣＢが必要となる。ここで、セッションは、ＴＣＰ通信のコネクションに相当する。ＳＳＬ／ＴＬＳは、ソケットＡＰＩ２０２上のセキュリティ通信プロトコルであり、通信制御部１０６内で処理される。ＳＳＬ／ＴＬＳのセッション識別を通信制御部１０６で行い、対応するＴＣＢをＴＣＢキャッシュ部１１４に読み込む。また、ＴＣＢキャッシュ部１１４、ＴＣＢ管理テーブル６１１及びＬＲＵテーブル６０９にはＳＳＬ／ＴＬＳセッション用の領域を確保しておく。そして、専用のキャッシュブロック、ＬＲＵテーブル及びキャッシュブロック番号管理用のビットマップテーブルを用意しておくことにより実現できる。
【００６８】
また、本発明では、イーサネットを例に用いたが、無線ＬＡＮについても適用可能なことは言うまでもない。その場合、無線に係るＭＡＣヘッダ等が付与された受信パケットを取り込む場合は、先にあげたオフセット情報を適切に適用することにより、先に説明した実施例と同様にＩＰヘッダ、ＴＣＰヘッダの解析が可能となる。さらにパケットが連結されて受信されるような場合も、トータルパケット長を解析に含めることにより、パケットの切れ目を検出できるようになる。これにより、連結パケットにおいても、それぞれのパケット毎にＴＣＢロードが可能となる。
【００６９】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014155120.tif 000003
【図２】
2014155120.tif 000004
【図３】
2014155120.tif 000005
【図４】
2014155120.tif 000006
【図５】
2014155120.tif 000007
【図６】
2014155120.tif 000008
【図７】
2014155120.tif 000009
【図８】
2014155120.tif 000010
【図９】
2014155120.tif 000011
【図１０】
2014155120.tif 000012
【図１１】
2014155120.tif 000013
【図１２】
2014155120.tif 000014