(57)【要約】【課題】  より使い勝手のよいネットワーク装置、ネットワーク処理装置を提供する。【解決手段】  ネットワークを介して受信したパケットデータからアプリケーションデータを抽出するネットワーク処理部と、ネットワーク処理部とバスを介して接続され、ネットワーク処理部が抽出したアプリケーションデータからアプリケーションヘッダを抽出するＣＰＵと、を備える。ネットワーク処理部は、アプリケーションにより定まる転送サイズを示す転送サイズ管理テーブルを参照して転送サイズを設定し、アプリケーションデータの先頭から設定された転送サイズ分のデータをＣＰＵへ送信し、ＣＰＵは、転送サイズ分のデータからアプリケーションヘッダを抽出する。【選択図】図２
2010287972.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してデータの送受信を行うネットワーク装置において、
ネットワークを介して受信したパケットデータからアプリケーションデータを抽出するネットワーク処理部と、
前記ネットワーク処理部とバスを介して接続され、前記ネットワーク処理部が抽出したアプリケーションデータからアプリケーションヘッダを抽出するＣＰＵと、を備え、
前記ネットワーク処理部は、アプリケーションにより定まる転送サイズを示す転送サイズ管理テーブルを参照して転送サイズを設定し、前記アプリケーションデータの先頭から前記設定された転送サイズ分のデータを前記ＣＰＵへ送信し、
前記ＣＰＵは、前記転送サイズ分のデータから前記アプリケーションヘッダを抽出することを特徴とするネットワーク装置。
【請求項２】
請求項１記載のネットワーク装置において、
前記ＣＰＵは、前記ネットワーク処理部から受信した前記転送サイズ分のデータから前記アプリケーションヘッダを抽出できない場合には、前記ネットワーク処理部へデータの追加送信要求を送信することを特徴とするネットワーク装置。
【請求項３】
請求項２記載のネットワーク装置において、
前記ネットワーク処理部は、前記ＣＰＵからデータの追加送信要求を受信したときは、
前記転送サイズ分のデータを前記ＣＰＵに再度送信することを特徴とするネットワーク装置。
【請求項４】
請求項２または３記載のネットワーク装置において、
前記ＣＰＵが前記転送サイズ管理テーブルに示された転送サイズ分のデータから前記アプリケーションヘッダを抽出できない場合には、前記転送サイズ管理テーブルの前記転送サイズを更新することを特徴とするネットワーク装置。
【請求項５】
請求項４記載のネットワーク装置において、
前記ネットワーク処理部は、前記ＣＰＵにおいて前記アプリケーションヘッダの抽出に必要なデータサイズが前記アプリケーションの転送サイズとなるように前記転送サイズ管理テーブルを更新することを特徴とするネットワーク装置。
【請求項６】
請求項１から５のいずれか記載のネットワーク装置において、
前記転送サイズ管理テーブルは、ポート番号と、前記ポート番号に対応する転送サイズと、を示す情報を含むことを特徴とするネットワーク装置。
【請求項７】
請求項６記載のネットワーク装置において、
前記ネットワーク処理部は、前記転送サイズ管理テーブルを参照してアプリケーションが用いるポート番号に対応する転送サイズを設定し、前記アプリケーションデータの先頭から前記設定された転送サイズ分のデータを前記ＣＰＵへ送信することを特徴とするネットワーク装置。
【請求項８】
請求項１から７のいずれか記載のネットワーク装置において、
前記ネットワーク処理部は、前記ＣＰＵへ送信したデータの送信量を示すアプリケーションデータ管理テーブルを備え、前記ＣＰＵへデータを送信した場合には前記アプリケーション管理テーブルを更新することを特徴とするネットワーク装置。
【請求項９】
請求項１から８のいずれか記載のネットワーク装置において、
前記ネットワーク処理部は、前記受信したアプリケーションデータのパケット化処理を実行し、ネットワークを介して外部へデータを送信することを特徴とするネットワーク装置。
【請求項１０】
ネットワークを介してデータの送受信を行うネットワーク処理装置において、
ネットワークを介してデータを受信するネットワークインターフェース部と、
前記ネットワークインターフェース部を介して受信したパケットデータからアプリケーションデータを抽出する演算部と、
前記ネットワーク処理装置と接続されたホスト装置へ前記アプリケーションデータを送信し、および、前記ホスト装置から送信されたデータを受信するホストインターフェース部と、を備え、
前記演算部は、アプリケーションにより定まる転送サイズを示す転送サイズ管理テーブルを参照して転送サイズを設定し、前記アプリケーションデータの先頭から前記設定された転送サイズ分のデータを前記ホストインターフェース部を介して前記ホスト装置へ送信し、
前記ホストインターフェース部は、前記ホスト装置で前記転送サイズ分のデータから抽出された前記アプリケーションヘッダを受信することを特徴とするネットワーク処理装置。
【請求項１１】
請求項１０記載のネットワーク処理装置において、
前記演算部は、前記ホスト装置が前記転送サイズ分のデータから前記アプリケーションヘッダを抽出できない場合に送信されたデータの追加送信要求を前記ホストインターフェース部が受信したときは、前記転送サイズ分のデータを前記ホストインターフェース部を介して前記ホスト装置に再度送信することを特徴とするネットワーク処理装置。
【請求項１２】
請求項１１記載のネットワーク処理装置において、
前記演算部は、前記ホスト装置が前記転送サイズ分のデータから前記アプリケーションヘッダを抽出できない場合に送信されたデータの追加送信要求を前記ホストインターフェース部受信したときは、前記転送サイズ管理テーブルの前記転送サイズを更新することを特徴とするネットワーク処理装置。
【請求項１３】
請求項１２記載のネットワーク処理装置において、
前記演算部は、前記ホスト装置において前記アプリケーションヘッダの抽出に必要なデータサイズを転送サイズとして前記転送サイズ管理テーブルを更新することを特徴とするネットワーク処理装置。
【請求項１４】
請求項１０から１３のいずれか記載のネットワーク処理装置において、
前記転送サイズ管理テーブルは、ポート番号と、前記ポート番号に対応する転送サイズと、を示す情報を含むことを特徴とするネットワーク処理装置。
【請求項１５】
請求項１４記載のネットワーク処理装置において、
前記演算部は、前記転送サイズ管理テーブルを参照してアプリケーションが用いるポート番号に対応する転送サイズを設定し、前記アプリケーションデータの先頭から前記設定された転送サイズ分のデータを前記ホストインターフェース部を介して前記ホスト装置へ送信することを特徴とするネットワーク処理装置。
【請求項１６】
請求項１０から１５のいずれか記載のネットワーク処理装置において、
前記ホスト装置へ送信したデータの送信量を示すアプリケーションデータ管理テーブルを備え、前記演算部は、前記ホスト装置へデータを送信した場合には前記アプリケーション管理テーブルを更新することを特徴とするネットワーク処理装置。
【請求項１７】
請求項１０から１６のいずれか記載のネットワーク処理装置において、
前記演算部は、前記受信したアプリケーションデータのパケット化処理を実行し、前記ネットワークインターフェース部を介して外部へデータを送信することを特徴とするネットワーク処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク装置およびネットワーク処理装置に関する。
【背景技術】
【０００２】
特許文献１は、ネットワークを介して受信したパケットデータからアプリケーションデータを抽出し、抽出したアプリケーションデータからヘッダ情報としてアプリケーションヘッダを検出する技術を開示している。より具体的には、ネットワークに接続されたネットワークカードが、アプリケーションに対応する検出ルールに従って、受信したアプリケーションデータからアプリケーションヘッダを抽出し、抽出したアプリケーションヘッダをホストＣＰＵへ転送する技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2008-219252号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１記載の技術では、アプリケーションの通信フォーマットがアップデート等により変更された場合には検出ルールを修正する必要があるが、ハードウェアの修正が必要となるため対応困難であるという課題がある。また、別のアプリケーションに対応しようとする場合にも、通信フォーマットが異なるため新規に検出ルールを作成する必要があり対応可能なアプリケーションの種類が制限されるという課題がある。
【０００５】
また、アプリケーションヘッダの抽出をホストCPUで実行する方法があるが、この方法では、アプリケーションデータ全体をホストＣＰＵに転送し、さらに転送されたアプリケーションデータ全体から抽出する必要があるため、処理負荷やバストラフィックの増加、高速化の困難化という課題がある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は以下の構成を備える。即ち、ネットワークを介してデータの送受信を行うネットワーク装置において、ネットワークを介して受信したパケットデータからアプリケーションデータを抽出するネットワーク処理部と、ネットワーク処理部とバスを介して接続され、ネットワーク処理部が抽出したアプリケーションデータからアプリケーションヘッダを抽出するＣＰＵと、を備える。ネットワーク処理部は、アプリケーションにより定まる転送サイズを示す転送サイズ管理テーブルを参照して転送サイズを設定し、アプリケーションデータの先頭から設定された転送サイズ分のデータをＣＰＵへ送信し、ＣＰＵは、転送サイズ分のデータからアプリケーションヘッダを抽出する。
【０００７】
また、ネットワークを介してデータの送受信を行うネットワーク処理装置において、ネットワークを介してデータを受信するネットワークインターフェース部と、ネットワークインターフェース部を介して受信したパケットデータからアプリケーションデータを抽出する演算部と、ネットワーク処理装置と接続されたホスト装置へアプリケーションデータを送信し、および、ホスト装置から送信されたデータを受信するホストインターフェース部と、を備える。演算部は、アプリケーションにより定まる転送サイズを示す転送サイズ管理テーブルを参照して転送サイズを設定し、アプリケーションデータの先頭から設定された転送サイズ分のデータをホストインターフェース部を介してホスト装置へ送信し、ホストインターフェース部は、ホスト装置で転送サイズ分のデータから抽出されたアプリケーションヘッダを受信する。
【発明の効果】
【０００８】
本発明によれば、より使い勝手のよいネットワーク装置、ネットワーク処理装置を提供することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】第一の実施例におけるネットワーク処理手段を適用したネットワーク装置の構成を示す図である。
【図２】第一の実施例におけるネットワーク処理手段の構成を示す図である。
【図３】第一の実施例におけるAPPセッション管理手段が、アプリケーションのセッション情報を管理するテーブルを示す図である。
【図４】第一の実施例における解析用データ抽出手段が、受信したAPPデータをホストメモリに転送する一回分のデータサイズを管理するテーブルを示す図である。
【図５】第一の実施例におけるパケット受信時のネットワーク処理手段のフローチャートである。
【図６】第一の実施例における ネットワーク処理手段の解析用アプリケーションデータ転送処理の詳細を示すフローチャートである。
【図７】第一の実施例におけるパケット受信時のホストCPUのフローチャートである。
【図８】本発明の実施形態のネットワーク処理手段を適用したネットワーク装置の構成を示す図である。
【図９】第二の実施例における受信用ネットワーク処理手段のフローチャートである。
【図１０】第二の実施例における送信用ネットワーク処理手段のフローチャートである。
【図１１】第二の実施例におけるパケット受信時のホストCPU のフローチャートである。
【発明を実施するための形態】
【００１０】
本発明の実施形態の概要をまず説明する。
【００１１】
本発明の実施形態では、ネットワークを介して受信したパケットデータからアプリケーションデータを抽出し、抽出したアプリケーションデータの先頭から一定の転送サイズ分のデータをホストＣＰＵに転送し、ホストＣＰＵにて転送サイズ分のデータから前記アプリケーションヘッダを抽出する。
【００１２】
転送サイズはアプリケーションごとに定まる転送サイズを示す転送サイズ管理テーブルを参照し、該当するアプリケーションに対応する転送サイズが設定される。アプリケーションデータの先頭にはアプリケーションヘッダが含まれているが、アプリケーションヘッダのサイズはアプリケーションごとに異なるほか、同じアプリケーションでも処理状況等によって異なる。つまり、アプリケーションごとに必要となる転送サイズを、予め若干大きめに設定しておけば、最適な転送サイズのデータをホストＣＰＵへ転送することが可能である。若干大きめのデータを転送する場合には、アプリケーションヘッダだけでなく、これに続くアプリケーションペイロードも含まれることになるが、アプリケーションヘッダの抽出に特段の問題は生じない。
【００１３】
さらに、実際にホストＣＰＵへ転送したデータではアプリケーションヘッダを抽出するのに不足であるときは、ホストＣＰＵからデータの追加送信要求を出すように構成する。
【実施例１】
【００１４】
以下、本発明を実施するための形態について説明する。まず、第一の実施形態について説明する。
【００１５】
図1は、本発明の第一の実施形態における、ネットワーク装置の構成を例示した図である。
【００１６】
ここでは、例えばWebサーバのように、ネットワーク装置101が、ネットワーク107経由でパケット化されたアプリケーションデータを受信し、受信したアプリケーションデータを解析し、解析結果に応じた処理を実行する場合を例に説明する。このネットワーク107は、電波、光、音、電気信号等を用いてメッセージやパケットを交換するためのネットワークであり、ルータやケーブル等を備える。  ネットワーク装置101は、各種処理を実行するホストCPU102、ホストメモリ103、周辺I/F104、ネットワーク処理手段105、不揮発記憶装置106、バス108から構成されており、ホストCPU102、ホストメモリ103、周辺I/F104、ネットワーク処理手段105、不揮発記憶装置106は、それぞれバス108を介して相互に接続されている。ホストメモリ103は、ソフトウェアのワーキングエリアや、一時バッファとして用いられるデータ領域である。不揮発記憶装置106は、磁気ディスク装置、フラッシュROM等から構成され、Operating System(OS)、各種ドライバ、各種アプリケーション等のソフトウェアや、様々なデータを格納する。周辺I/F104は、マウス、キーボード、モニタなどの入出力装置や、USBメモリ等の外部ストレージなど、各種周辺機器と接続するためのインタフェースを提供する。ネットワーク処理手段105は、各種パケット処理を行ったり、受信パケットから再構築したアプリケーションデータをホストメモリに転送するなどの処理を行う。ネットワーク処理手段105の詳細については後段で説明する。なお、ここではホストCPU102、ホストメモリ103、周辺I/F104、ネットワーク処理手段105、不揮発記憶装置106が一つの装置内に存在する例を示しているが、これの形態に限らない。例えば、ネットワーク処理手段105、不揮発記憶装置106などに相当する手段が、それぞれ単一の機能を有した装置となり、バス108の代わりにネットワークを介して相互に接続されていても良い。
【００１７】
次に、図1におけるネットワーク処理手段の構成の詳細について、図2を用いて説明する。
【００１８】
図2は、ネットワーク処理手段105の論理構成を示した図である。ネットワーク処理手段105は、ホストI/F201、デバイスメモリ202、解析用データ抽出手段203、APPセッション管理手段204、受信パケット解析手段205、送信パケット生成手段206、ネットワークI/F207から構成されている。なお、本論理構成を実現する手段として、例えばCPUコアやメモリなどから構成される単一のSoC（Systems on a Chip）上でソフトウェア処理により実現してもよいし、単一あるいは複数の論理構成ごとに専用のハードウェアを実装し、それらを組み合わせることで実現してもよい。解析用データ抽出手段203、APPセッション管理手段204、受信パケット解析手段205、送信パケット生成手段206がソフトウェアである場合には、CPUなどの演算部により各処理が実行される。
【００１９】
ホストI/F201は、ネットワーク処理手段105がネットワーク装置内のバス108と通信するためのインタフェースを提供しており、バス108上に流れる各種電気信号をデコードしてネットワーク処理手段105内の各手段に送ったり、ネットワーク処理手段105内の各手段から渡されたデータや通知をバス108上に流したりする機能を有する。デバイスメモリ202は、送受信パケットや、アプリケーションデータの一時バッファとして用いられたり、後述するAPPデータ管理テーブルや転送サイズ管理テーブルを格納するのに用いられるデータ領域である。解析用データ抽出手段203は、受信パケットから再構築したアプリケーションデータから、解析に必要な一部のデータをホストメモリに転送する機能と、解析に必要となるデータサイズを管理する機能を有する。APPセッション管理手段204は、APPデータ管理テーブルを用い、アプリケーションデータをセッション単位で管理する機能と、異なるネットワーク処理手段との間でAPPデータ管理テーブルを同期する機能を有する。
【００２０】
APPデータ管理テーブルの構成の詳細については、後段で説明する。受信パケット解析手段205は、ネットワークI/F207を介して受信したパケットを解析し、アプリケーションデータをセッション単位で再構築する機能を有する。
【００２１】
送信パケット生成手段206は、アプリケーションデータに対して、分割やヘッダ付与などのパケット化処理を行い、ネットワークI/F207を介してネットワーク上に送信する機能を有する。ネットワークI/F207は、ネットワーク処理手段105がネットワーク107と通信を行うためのインタフェースを提供する。
【００２２】
なお、APPデータ管理テーブルおよび転送サイズ管理テーブルは、ネットワーク装置内のホストメモリ103や不揮発記憶装置106（以下、ホスト部）に格納してもよい。この場合、データの参照や更新時にホスト部とネットワーク処理手段との間で多数のトランザクションが発生することを避けるため、例えばネットワーク処理手段の起動時に、ホスト部からデバイスメモリ202に各種テーブルデータをダウンロードし、APPセッション管理手段や解析用データ抽出手段が各種テーブルデータを参照する際にはデバイスメモリ202から読み出すようにしてもよい。また、APPセッション管理手段や解析用データ抽出手段が各種テーブルデータを更新する際には、一旦デバイスメモリ202上のデータを更新し、その直後、あるいは一定時間後にホスト部のテーブルデータを更新する。
【００２３】
次に、本実施形態のネットワーク処理手段内の、APPデータ管理テーブルのデータ構成について、図3を用いて説明する。なお、図中のテーブルの各項目はあくまで一例であり、必要に応じて項目数が増減してもよい。
【００２４】
APPデータ管理テーブルは、ネットワーク装置に送信されてきたアプリケーションデータをセッション単位で管理するテーブルであり、「セッションID」と「メモリアドレス」と「受信サイズ」と「転送済み」と「未転送」が格納される領域によって構成される。
【００２５】
「セッションID」301の列は、アプリケーションの各セッションを一意に識別するための識別子であるセッションIDを格納する領域である。
【００２６】
「メモリアドレス」302の列は、アプリケーションデータを一時的に格納している、デバイスメモリ内の領域の先頭を示すメモリアドレスを格納する領域である。
【００２７】
「受信サイズ」303の列は、ネットワークから受信済みのアプリケーションデータのサイズを格納する領域である。
【００２８】
「転送済み」304の列は、アプリケーションデータのうち、解析用として、ホストメモリへ転送済みのデータのサイズを格納する領域である。
【００２９】
「未転送」305の列は、ホストメモリに転送する解析用データのうち、まだ転送していないデータのサイズを格納する領域である。
【００３０】
図3において、例えば行306は、「セッションID」が「0x01」であるアプリケーションデータの先頭バイトを格納しているメモリアドレスは「0x4567」であり、既に受信済みのアプリケーションデータサイズは「3000」バイト、解析用としてホストメモリに転送済みのデータサイズは「400」バイト、まだホストメモリに転送できていない解析用データサイズは「0」バイト（全て転送済み）、ということを意味する。
【００３１】
次に、本実施形態のネットワーク処理手段内の、転送サイズ管理テーブルのデータ構成について、図4を用いて説明する。なお、図中のテーブルの各項目はあくまで一例であり、必要に応じて項目数が増減してもよい。
【００３２】
転送サイズ管理テーブルは、解析用データ抽出手段が、受信したアプリケーションデータのうち、解析用データとしてホストメモリに転送する一回分のデータサイズを管理するテーブルである。なお、ここでは、アプリケーションごとに転送データサイズが異なる場合を例として説明するが、全アプリケーションで転送データサイズが同一であってもよい。また、アプリケーションを見分ける方法の一例として、ネットワーク装置の受信TCPポートからアプリケーションを見分ける場合を説明するが、この方法にこだわらなくてよい。
【００３３】
「ポート番号」401の列は、パケットを受信したネットワーク装置のTCPポート番号を格納する領域である。「転送サイズ」402の列は、解析用データ抽出手段が、受信したアプリケーションデータのうち、解析用データとしてホストメモリに転送する一回分のデータサイズを格納する領域である。
【００３４】
図4において、例えば行403は、受信ポート番号が「80」であるアプリケーション（通常はWebサーバ）のデータのうち、解析用データとしてホストメモリに転送される一回分のデータサイズが「1000」である、ということを意味する。
【００３５】
なお、ここではポート番号ごとに対応するデータサイズを紐付けるように構成したが、これを例えば、アプリケーションに割り当てられた固有のID等を用い、そのID等ごとにデータサイズを紐付けるようにしても良い。この場合には、例えば同一ポート番号を使う異なるアプリケーションなど、ポート番号で識別できないアプリケーションであっても適切なデータサイズを決定することができるようになる。
【００３６】
次に、本実施形態のネットワーク装置において、ネットワークを介してパケットを受信した場合の、ネットワーク処理手段105およびホストCPU102の動作フローを、図5〜図7を用いて説明する。
【００３７】
図5は、本実施形態のパケット受信時のネットワーク処理手段105 のフローチャートである。
【００３８】
ステップ501は、セッションを確立する処理である。本ステップにおいて、新規セッションが確立されたら、APPセッション管理手段204はAPPデータ管理テーブルに確立したセッション情報を新規に登録する。
【００３９】
ステップ502は、解析用データ抽出手段203がホストメモリ103に対して、解析用アプリケーションデータを転送する処理である。詳細は図6で説明する。
【００４０】
ステップ503は、ホストCPU102またはネットワーク処理手段105が、セッションが切断されたかどうか調べる処理である。セッションが切断されていなければステップ504へ進む。セッションが切断されたらステップ506へ進む。
【００４１】
ステップ504は、受信パケット解析手段205がパケットを受信し、アプリケーションデータを再構築する処理である。本ステップにおいて、受信パケット解析手段205がアプリケーションデータを再構築したら、APPセッション管理手段204がAPPデータ管理テーブルの「受信済み」の欄を更新する。
【００４２】
ステップ505は、受信したアプリケーションデータのうち、解析用データとしてホストメモリに転送したデータ以外の残りのデータを、受信パケット解析手段205がホストメモリに転送する処理である。
【００４３】
ステップ506は、ステップ502の内容に応じて、解析用データ抽出手段203が転送サイズ管理テーブルを更新する処理である。本ステップは、転送サイズ管理テーブルに格納している転送データサイズが小さすぎたり、大きすぎたりした場合に、転送データサイズを修正するものである。例えば、転送データサイズが小さすぎると、ホストCPUから解析用データの追加の転送要求が何度も生じてしまうため、処理遅延が大きくなる。また、転送データサイズが大きすぎると、追加の転送要求は無くなるが、解析に不要なデータを送受信するため、メモリコピー回数やバストラフィックに無駄が生じる。そのため、例えば、一定の割合（90%など）のセッションにおいて追加の転送要求が生じないような転送データサイズを、ホストCPUやネットワーク処理手段が統計処理等を用いて算出し、定期的に更新してもよい。
【００４４】
図6は、本実施形態のパケット受信時のネットワーク処理手段105の解析用アプリケーションデータ転送処理の詳細を示すフローチャートである。
【００４５】
ステップ601は、解析用データ抽出手段203がホストCPU102から解析完了通知を受信したかどうか調べる処理である。もしホストCPU102から解析完了通知を受信したのであれば、終了し、図5へ戻る。解析完了通知を受信していない場合は、ステップ602へ進む。
【００４６】
ステップ602は、受信パケット解析手段205がパケットを受信する処理である。
【００４７】
ステップ603は、受信パケット解析手段205がアプリケーションデータを再構築する処理である。
【００４８】
ステップ604は、APPデータ管理テーブルを更新する処理である。具体的には、ステップ603にて新たに再構築したアプリケーションデータのサイズ分を、APPセッション管理手段204がAPPデータ管理テーブルの「受信済み」の値に加える。
【００４９】
ステップ605は、APPセッション管理手段204がAPPデータ管理テーブルの「未転送」の値が0より大きいかどうか調べる処理である。もし0より大きければ、ステップ606へ進む。もし0であれば、ステップ610へ進む。
【００５０】
ステップ606は、解析用データ抽出手段203が、「未転送」欄のデータサイズ分のアプリケーションデータをホストメモリ103に転送する処理である。もし、受信済みのアプリケーションデータのサイズが「未転送」欄のデータサイズを下回っている場合は、転送可能なアプリケーションデータサイズ分のみ転送する。
【００５１】
ステップ607は、ステップ606にて転送したデータサイズに応じて、APPセッション管理手段204がAPPデータ管理テーブルを更新する処理である。
【００５２】
ステップ608は、APPセッション管理手段204がAPPデータ管理テーブルの「未転送」欄のデータサイズが0かどうか調べる処理である。もし0であれば、ステップ609へ進む。もし0でなければ、ステップ610へ進む。
【００５３】
ステップ609は、解析用データ抽出手段203が、ホストCPU102に解析用データの転送完了を通知する処理である。
【００５４】
ステップ610は、解析用データ抽出手段203がホストCPU102から追加転送要求があるかどうか調べる処理である。もし追加転送要求があれば、ステップ611へ進む。追加転送要求がなければ、ステップ601へ戻る。
【００５５】
ステップ611は、APPデータ管理テーブルを更新する処理である。具体的には、ステップ610にてホストCPU102から追加転送要求があったデータサイズ分を、APPセッション管理手段204がAPPデータ管理テーブルの「未転送」欄の値に加える。
【００５６】
図7は、本実施形態のパケット受信時のホストCPU102 のフローチャートである。
【００５７】
ステップ701は、ホストCPU102がネットワーク処理手段105の解析用データ抽出手段203から転送完了通知を受信する処理である。
【００５８】
ステップ702は、ホストCPU102がホストメモリ103に格納された、解析用データを取得し、解析する処理である。
【００５９】
ステップ703は、ホストCPU102が転送されてきた解析用データが不足しているかどうか調べる処理である。もしデータが不足していれば、ステップ704へ進む。データが不足していなければ、ステップ707へ進む。
【００６０】
ステップ704は、ホストCPU102が解析用データ抽出手段203に追加の転送要求通知および追加データサイズを送信する処理である。要求する追加データサイズは、アプリケーションで定められた固定値でもよいし、既に受信した解析用データ内に全ヘッダサイズ等、解析に必要なデータサイズを示す何らかの値が記述されていれば、ホストCPU102がその値から追加データサイズを算出してもよい。
【００６１】
例えば、先頭からｎバイトのデータを最初に転送した場合、ｎ＋１バイト目のデータから追加データサイズで規定された分だけ転送されるが、追加データサイズは基本的には最初に転送するデータサイズ（ここではｎバイト）と同じサイズとするが、最初に転送するデータサイズよりも小さくしても良い（例えばｎ／２バイト）。また、ポート番号またはアプリケーションに応じて追加データサイズを変更しても良い。
【００６２】
ステップ705は、解析用データ抽出手段203から転送完了通知を受信する処理である。
【００６３】
ステップ706は、ホストメモリ103に格納された追加データを解析する処理である。
【００６４】
ステップ707は、解析用データ抽出手段203に解析完了通知を送信する処理である。
【００６５】
ステップ708は、解析結果に応じた処理を実行する処理である。例えば、特定のIPアドレスから送信されてきたセッションを切断したり、特定のキーワードを含むセッションのログを残すなどの処理を行う。
【００６６】
なお、本実施例ではネットワーク装置101が、ホストＣＰＵ102、ホストメモリ103、周辺I/F104、ネットワーク処理手段105、不揮発記憶装置106を備えるＰＣやサーバ等を想定して記述した。これに加えて、ホストＣＰＵ102、ホストメモリ103、周辺I/F104、不揮発記憶装置106を備えるＰＣやサーバ等をホスト装置とし、ネットワーク処理手段105をホスト装置の外部に存在するネットワークカード等のネットワーク処理装置とするように構成しても構わない。この場合にも、ネットワーク処理装置たるネットワーク処理手段105は、上述した内容と同等の構成、機能を備え、フローチャートで示した動作も同等である。
【００６７】
また、解析用データ抽出手段203、APPセッション管理手段204、受信パケット解析手段205、送信パケット生成手段206がソフトウェアである場合には、上述したフローチャートにおける各処理は、これらのソフトウェアを読み出してCPUにより実行される。
【実施例２】
【００６８】
次に、本発明を実施するための第二の実施形態について説明する。
【００６９】
図8は、第二の実施例における、ネットワーク処理手段を適用したネットワーク装置の例を示す図である。
【００７０】
ここでは、例えばProxyサーバのように、ネットワーク装置801が、ネットワークA808経由でパケット化されたアプリケーションデータを受信し、受信したアプリケーションデータを解析し、アプリケーションデータのパケット化を行い、別のネットワークB809に送信する場合を例に説明する。また、ここでは、パケットがネットワークA808からネットワークB809の方向に送信される場合のみを説明するが、逆にネットワークB809からネットワークA808の方向に送信される場合は、受信用ネットワーク処理手段806と送信用ネットワーク処理手段807の処理が入れ替わるだけで、それ以外の処理は同じである。
【００７１】
ネットワーク装置801は、各種処理を実行するホストCPU802、ホストメモリ803、周辺I/F804、不揮発記憶装置805、受信用ネットワーク処理手段806、送信用ネットワーク処理手段807、バス810から構成されており、ホストCPU802、ホストメモリ803、周辺I/F804、不揮発記憶装置805、受信用ネットワーク処理手段806、送信用ネットワーク処理手段807は、それぞれバス810を介して相互に接続されている。ホストCPU802、ホストメモリ803、周辺I/F804、不揮発記憶装置805、バス810については、図1と同等の機能を有するため説明を省略する。受信用ネットワーク処理手段806および送信用ネットワーク処理手段807は、図2で説明したネットワーク処理手段105と同等の機能を有するため、説明を省略する。なお、上述したように、実際にはネットワークA808およびネットワークB809間では双方向で通信が行われる場合が多いため、受信用ネットワーク処理手段806および送信用ネットワーク処理手段807は送信処理と受信処理の両方を行ってもよい。ただし、本実施例では説明を簡便にするため、ネットワークA808からネットワークB809への片方向の通信、すなわち受信用ネットワーク処理手段806を受信専用、送信用ネットワーク処理手段807を送信専用として説明する。
【００７２】
次に、本実施形態のネットワーク装置において、ネットワークを介してパケットを受信した場合の、受信用ネットワーク処理手段806、送信用ネットワーク処理手段807、およびホストCPU802の動作フローを、図9〜図11を用いて説明する。
【００７３】
図9は、第二の実施例における受信用ネットワーク処理手段806 のフローチャートである。
【００７４】
ステップ901は、セッションを確立する処理である。本ステップにおいて、新規セッションが確立されたら、APPセッション管理手段204はAPPデータ管理テーブルに確立したセッション情報を新規に登録する。
【００７５】
ステップ902は、受信パケット解析手段205がアプリケーションデータを再構築し、解析用データ抽出手段203が転送サイズ管理テーブルに格納されている転送サイズ分をホストメモリ803に転送し、転送完了通知をホストメモリ803に送信する処理である。
【００７６】
ステップ903は、解析用データ抽出手段203が、ホストメモリ803に転送した解析用アプリケーションデータを送信用ネットワーク処理手段807に送信し、かつ、APPセッション管理手段204が、APPデータ管理テーブルの情報を、送信用ネットワーク処理手段807に送信する処理である。
【００７７】
ステップ904は、セッションが切断されたかどうか調べる処理である。セッションが切断されていなければステップ905へ進む。セッションが切断されたらステップ906へ進む。
【００７８】
ステップ905は、受信パケット解析手段205が再構築したアプリケーションデータを、順次送信用ネットワーク処理手段807に送信する処理である。
【００７９】
ステップ906は、転送サイズ管理テーブルを送信用ネットワーク処理手段807との間で同期する処理である。
【００８０】
図10は、第二の実施例における送信用ネットワーク処理手段807 のフローチャートである。
【００８１】
ステップ1001は、受信用ネットワーク処理手段806から解析用アプリケーションデータおよびAPPデータ管理テーブル情報を受信する処理である。
【００８２】
ステップ1002は、APPセッション管理手段204が、受信したAPPデータ管理テーブル情報を元に、APPデータ管理テーブルに新規登録する処理である。
【００８３】
ステップ1003は、解析用データ抽出手段203がホストCPU802から解析完了通知を受信したかどうか調べる処理である。もし解析完了通知を受信していなければ、ステップ1004へ進む。解析完了通知を受信した場合ば、ステップ1010へ進む。
【００８４】
ステップ1004は、受信用ネットワーク処理手段806から順次アプリケーションデータを受信する処理である。
【００８５】
ステップ1005は、受信したアプリケーションデータを元に、APPデータ管理テーブルの「受信済み」欄を更新する処理である。
【００８６】
ステップ1006は、解析用データ抽出手段203がホストCPU802から解析完了通知を受信したかどうか調べる処理である。もし追加転送要求を受信した場合は、ステップ1007へ進む。追加転送要求を受信していなければ、ステップ1003へ戻る。
【００８７】
ステップ1007は、解析用データ抽出手段203がホストメモリ803に、追加転送要求があったデータサイズ分をデータ転送する処理である。もし、転送するアプリケーションデータが不足している場合は、受信用ネットワーク処理手段806から新たに送信されてくるのを待ち、追加転送要求があったサイズ分以上受信したあとに、ホストメモリ803に転送する。
【００８８】
ステップ1008は、解析用データ抽出手段203がホストCPU802に転送完了を通知する処理である。
【００８９】
ステップ1009は、APPセッション管理手段204がAPPデータ管理テーブルの「転送済み」欄を更新する処理である。
【００９０】
ステップ1010は、ホストメモリ803から変更済みAPPデータおよび変更箇所情報を受信する処理である。
【００９１】
ステップ1011は、送信パケット生成手段206が、変更済みAPPデータおよび受信用ネットワーク処理手段から送信されてきた残りのAPPデータから、ネットワークB809に送信するためのアプリケーションデータを再構築し、パケット化処理を行って順次ネットワークBに送信する処理である。
【００９２】
ステップ1012は、転送サイズ管理テーブルを更新する処理である。具体的には、図5のステップ506と同等の処理を行う。
【００９３】
ステップ1013は、更新された転送サイズ管理テーブルを、受信用ネットワーク処理手段806との間で同期する処理である。
【００９４】
図11は、第二の実施例におけるホストCPU802 のフローチャートである。
【００９５】
ステップ1101は、受信用ネットワーク処理手段806の解析用データ抽出手段203から転送完了通知を受信する処理である。
【００９６】
ステップ1102は、ホストメモリ803に格納された解析用データを取得し、解析する処理である。
【００９７】
ステップ1103は、転送されてきた解析用データが不足しているかどうか調べる処理である。もしデータが不足していれば、ステップ1104へ進む。データが不足していなければ、ステップ1107へ進む。
【００９８】
ステップ1104は、送信用ネットワーク処理手段807の解析用データ抽出手段203に追加の転送要求通知および追加データサイズを送信する処理である。
【００９９】
ステップ1105は、送信用ネットワーク処理手段807の解析用データ抽出手段203から転送完了通知を受信する処理である。
【０１００】
ステップ1106は、ホストメモリ803に格納された追加の解析用データを取得し、解析する処理である。
【０１０１】
ステップ1107は、送信用ネットワーク処理手段807の解析用データ抽出手段203に、解析完了通知を送信する処理である。
【０１０２】
ステップ1108は、解析結果に応じて、受信したアプリケーションデータを修正する処理である。具体的には、例えば、アプリケーションヘッダを追加したり、特定のIP文字列を別の文字に置換したりなどの処理を行う。
【０１０３】
ステップ1109は、ステップ1108にて変更したアプリケーションデータおよび、変更箇所を示す情報を送信用ネットワーク処理手段807に送信する処理である。
【０１０４】
なお、本実施例ではネットワーク装置801が、ホストＣＰＵ802、ホストメモリ803、周辺I/F804、不揮発記憶装置805、受信用ネットワーク処理手段806、送信用ネットワーク処理手段807を備えるＰＣやサーバ等を想定して記述した。これに加えて、ホストＣＰＵ802、ホストメモリ803、周辺I/F804、不揮発記憶装置805、を備えるＰＣやサーバ等をホスト装置とし、受信用ネットワーク処理手段806、送信用ネットワーク処理手段807をホスト装置の外部に存在するネットワークカード等のネットワーク処理装置とするように構成しても構わない。この場合にも、ネットワーク処理装置たる受信用ネットワーク処理手段806、送信用ネットワーク処理手段807は、上述した内容と同等の構成、機能を備え、フローチャートで示した動作も同等である。
【０１０５】
なお、上述した各実施例における各処理は、基本的には演算部であるＣＰＵにより実行される。各フローチャートで説明した各処理も同様である。
【０１０６】
以上のように、本発明の実施形態に記載のネットワーク装置によれば、アプリケーションデータの解析処理に用いる必要最小限のデータのみをホストメモリに転送し、解析処理自体はホストCPUが行うため、多数のアプリケーションプロトコルへの対応や、プロトコルアップデート、複雑な解析処理などが容易である。また、ネットワーク処理手段とホストメモリ間のデータ転送量が必要最小限に抑えられるため、CPU処理負荷やバストラフィックを軽減させることが可能となる。即ち、ホストCPUの処理負荷を軽減させ、かつ様々なアプリケーションデータのフィルタリング処理が可能な、ネットワーク装置を実現することができる。
【符号の説明】
【０１０７】
101…ネットワーク装置
102…ホストCPU
103…ホストメモリ
104…周辺I/F
105…ネットワーク処理手段
106…不揮発記憶装置
107…ネットワーク
108…バス
201…ホストI/F
202…デバイスメモリ
203…解析用データ抽出手段
204…APPセッション管理手段
205…受信パケット解析手段
206…送信パケット生成手段
207…ネットワークI/F
801…ネットワーク装置
802…ホストCPU
803…ホストメモリ
804…周辺I/F
805…不揮発記憶装置
806…受信用ネットワーク処理手段
807…送信用ネットワーク処理手段
808…ネットワークA
809…ネットワークB
810…バス
【図１】
2010287972.tif 000003
【図２】
2010287972.tif 000004
【図３】
2010287972.tif 000005
【図４】
2010287972.tif 000006
【図５】
2010287972.tif 000007
【図６】
2010287972.tif 000008
【図７】
2010287972.tif 000009
【図８】
2010287972.tif 000010
【図９】
2010287972.tif 000011
【図１０】
2010287972.tif 000012
【図１１】
2010287972.tif 000013