(57)【要約】      （修正有）【課題】装置全体の処理パフォーマンスを低下させることなく受信パケットのフィルタリング処理を行なうことができる通信装置及びフィルタリング方法を提供する。【解決手段】通信装置１は、少なくとも１つのセッションＩＤを示すハードウェアフィルタリングテーブル５１と、複数のアプリケーションに各々対応するアプリケーションＩＤの少なくとも１つと当該セッションＩＤとの対応を示すソフトウェアフィルタリングテーブル４２とを含む。通信網６０を介して到来したパケットのうちハードウェアフィルタリングテーブル５１に示されるセッションＩＤを含むパケットのみを中継パケットとして後段に中継するハードウェアフィルタリングと、当該中継パケットに含まれるセッションＩＤに対応するアプリケーションに対してのみ当該中継パケットを転送するソフトウェアフィルタリングとを行なう。【選択図】図１
2013211702.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションと、前記アプリケーションに関するパケットを通信網を介して通信する通信部と、を含む通信装置であって、
少なくとも１つのセッションＩＤを示すハードウェアフィルタリングテーブルと、
前記複数のアプリケーションに各々対応するアプリケーションＩＤの少なくとも１つと前記セッションＩＤとの対応を示すソフトウェアフィルタリングテーブルと、を含み、
前記通信部は、
前記通信網を介して到来したパケットのうち、前記ハードウェアフィルタリングテーブルに示されるセッションＩＤを含むパケットのみを中継パケットとして後段に中継するハードウェアフィルタリング通信部と、
前記中継パケットに含まれるセッションＩＤに対応するアプリケーションに対してのみ前記中継パケットを転送するソフトウェアフィルタリング通信部と、からなることを特徴とする通信装置。
【請求項２】
前記アプリケーションは、自身のアプリケーションＩＤと少なくとも１つのセッションＩＤとを含むフィルタ追加要求を発し、
前記通信部は、
前記フィルタ追加要求に含まれるアプリケーションＩＤと少なくとも１つのセッションＩＤとを対応付けて前記ソフトウェアフィルタリングテーブルに設定するソフトウェアフィルタ追加手段と、
前記ソフトウェアフィルタリングテーブルに示される全てのセッションＩＤを前記ハードウェアフィルタリングテーブルに設定するハードウェアフィルタ更新手段と、を含むことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記アプリケーションは、自身のアプリケーションＩＤを含むフィルタ削除要求を発し、
前記通信部は、
前記フィルタ削除要求に含まれるアプリケーションＩＤとこれに対応するセッションＩＤとを前記ソフトウェアフィルタリングテーブルから削除するソフトウェアフィルタ削除手段と、
前記ソフトウェアフィルタリングテーブルに示される全てのセッションＩＤを前記ハードウェアフィルタリングテーブルに設定するハードウェアフィルタリング更新手段と、を含むことを特徴とする請求項１に記載の通信装置。
【請求項４】
前記アプリケーションは、全てのパケットの転送を要求する旨を含むフィルタ追加要求を発し、
前記ハードウェアフィルタリング通信部は、前記フィルタ追加要求に応じて前記通信網を介して到来した全てのパケットを前記中継パケットとして後段に中継することを特徴とする請求項１に記載の通信装置。
【請求項５】
少なくとも１つの禁止ＩＤを示す禁止ＩＤテーブルを更に含み、
前記ハードウェアフィルタ追加手段及び前記ソフトウェアフィルタ追加手段は、前記フィルタ追加要求に含まれるセッションＩＤが前記禁止ＩＤと同一である場合には、当該セッションＩＤを前記ハードウェアフィルタリングテーブル及びソフトウェアフィルタリングテーブルに設定しないことを特徴とする請求項２に記載の通信装置。
【請求項６】
通信網を介して到来したパケットを前記パケットに含まれるセッションＩＤに応じて複数のアプリケーションのうちのいずれかに転送するフィルタリング方法であって、
前記複数のアプリケーションに各々対応するアプリケーションＩＤの少なくとも１つとセッションＩＤとの対応をソフトウェアフィルタリングテーブルに設定するステップと、
前記ソフトウェアフィルタリングテーブルに設定されている全てのセッションＩＤをハードウェアフィルタリングテーブルに設定するステップと、
前記通信網を介して到来したパケットのうち、前記ハードウェアフィルタリングテーブルに示されるセッションＩＤを含むパケットのみを中継パケットとして後段に中継するハードウェアフィルタリングステップと、
前記中継パケットに含まれるセッションＩＤに対応するアプリケーションに対してのみ前記中継パケットを転送するソフトウェアフィルタリングステップと、を含むことを特徴とするフィルタリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信パケットをフィルタリングする機能を有する通信装置及びそのフィルタリング方法に関する。
【背景技術】
【０００２】
従来より、例えばＣＡＮ（Controller Area Network）等の通信網を介して到来したパケットのうちから特定ＩＤのパケットのみを取得するためのフィルタリング機能を有する通信装置が知られている（例えば特許文献１）。例えばＬｉｎｕｘ等のオペレーティングシステムを用いた通信装置においては、ソフトウェアフィルタリングのみが用いられている。これは、通信装置が有する複数のアプリケーションの各々から例えばＣＡＮ通信デバイス等のハードウェアに対してフィルタリング設定を行なった場合に生じ得るフィルタリング設定の競合を回避するためである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−３２０３９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ソフトウェアフィルタリングのみを用いた場合には、当該フィルタリング処理を実行するＣＰＵの負荷が大きくなり、通信装置全体のパフォーマンスが低下してしまうという問題があった。
【０００５】
本発明は上記した如き問題点に鑑みてなされたものであって、装置全体の処理パフォーマンスを低下させることなく受信パケットのフィルタリング処理を行なうことができる通信装置及びフィルタリング方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明による通信装置は、複数のアプリケーションと、前記アプリケーションに関するパケットを通信網を介して通信する通信部と、を含む通信装置であって、少なくとも１つのセッションＩＤを示すハードウェアフィルタリングテーブルと、前記複数のアプリケーションに各々対応するアプリケーションＩＤの少なくとも１つと前記セッションＩＤとの対応を示すソフトウェアフィルタリングテーブルと、を含み、前記通信部は、前記通信網を介して到来したパケットのうち、前記ハードウェアフィルタリングテーブルに示されるセッションＩＤを含むパケットのみを転送パケットとして後段に転送するハードウェアフィルタリング通信部と、前記転送パケットに含まれるセッションＩＤに対応するアプリケーションに対してのみ前記転送パケットを転送するソフトウェアフィルタリング通信部と、からなることを特徴とする。
【０００７】
本発明によるフィルタリング方法は、通信網を介して到来したパケットを前記パケットに含まれるセッションＩＤに応じて複数のアプリケーションのうちのいずれかに転送するフィルタリング方法であって、前記複数のアプリケーションに各々対応するアプリケーションＩＤの少なくとも１つとセッションＩＤとの対応をソフトウェアフィルタリングテーブルに設定するステップと、前記ソフトウェアフィルタリングテーブルに設定されている全てのセッションＩＤをハードウェアフィルタリングテーブルに設定するステップと、前記通信網を介して到来したパケットのうち、前記ハードウェアフィルタリングテーブルに示されるセッションＩＤを含むパケットのみを転送パケットとして後段に転送するハードウェアフィルタリングステップと、前記転送パケットに含まれるセッションＩＤに対応するアプリケーションに対してのみ前記転送パケットを転送するソフトウェアフィルタリングステップと、を含むことを特徴とする。
【発明の効果】
【０００８】
本発明による通信装置及びフィルタリング方法によれば、装置全体の処理パフォーマンスを低下させることなく受信パケットのフィルタリング処理を行なうことができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施例である通信装置の構成を示すブロック図である。
【図２】ソフトウェアフィルタリングテーブルの一例を表す図である。
【図３】ハードウェアフィルタリングテーブルの一例を表す図である。
【図４】フィルタ追加要求に応じて実行される、図１のフィルタ設定部によるフィルタ設定動作を示すフローチャートである。
【図５】図１のＡＰ３−１からのフィルタ追加要求に応じて更新されたソフトウェアフィルタリングテーブルの一例を表す図である。
【図６】図１のＡＰ３−１からのフィルタ追加要求に応じて更新されたハードウェアフィルタリングテーブルの一例を表す図である。
【図７】図１のＡＰ３−２からのフィルタ追加要求に応じて更新されたソフトウェアフィルタリングテーブルの一例を表す図である。
【図８】図１のＡＰ３−２からのフィルタ追加要求に応じて更新されたハードウェアフィルタリングテーブルの一例を表す図である。
【図９】図１のＡＰ３−３からのフィルタ追加要求に応じて更新されたソフトウェアフィルタリングテーブルの一例を表す図である。
【図１０】図１のＡＰ３−３からのフィルタ追加要求に応じて更新されたハードウェアフィルタリングテーブルの一例を表す図である。
【図１１】フィルタ削除要求に応じて実行される、図１のフィルタ設定部によるフィルタ設定動作を示すフローチャートである。
【図１２】図１のＡＰ３−３からのフィルタ削除要求に応じて更新されたソフトウェアフィルタリングテーブルの一例を表す図である。
【図１３】図１のＡＰ３−３からのフィルタ削除要求に応じて更新されたハードウェアフィルタリングテーブルの一例を表す図である。
【図１４】図１のＡＰ３−１からのフィルタ削除要求に応じて更新されたソフトウェアフィルタリングテーブルの一例を表す図である。
【図１５】図１のＡＰ３−１からのフィルタ削除要求に応じて更新されたハードウェアフィルタリングテーブルの一例を表す図である。
【図１６】テーブル内容が図９及び図１０のときに図１のＡＰ３−１からのフィルタ削除要求に応じて更新されたソフトウェアフィルタリングテーブルの一例を表す図である。
【図１７】テーブル内容が図９及び図１０のときに図１のＡＰ３−１からのフィルタ削除要求に応じて更新されたハードウェアフィルタリングテーブルの一例を表す図である。
【図１８】第２の実施例である通信装置の構成を示すブロック図である。
【図１９】禁止ＩＤテーブルの一例を表す図である。
【発明を実施するための形態】
【００１０】
以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
【００１１】
＜第１の実施例＞
図１には、本発明の実施例である通信装置１の構成が示されている。通信装置１は、ＣＡＮ等の通信網６０を介してパケットを送受信する機能を備えている。通信装置１は、例えばファクトリーオートメーション（ＦＡ：Factory Automation）等で用いられるインダストリアルＰＣ等の装置であり得る。
【００１２】
オペレーティングシステム２は、通信装置１にインストールされている例えばＬｉｎｕｘ等のＯＳである。
【００１３】
ＡＰ３−１〜３−ｎ（ｎは２以上の整数）の各々は、オペレーティングシステム２上で動作するアプリケーションである。ＡＰ３−１〜３−ｎの各々は、例えば、工場内に設けられた加工装置（図示せず）の制御等の各種処理を実行するアプリケーションであり得る。ＡＰ３−１〜３−ｎの各々には固有の識別子（以下、ＡＰ−ＩＤと称する）がそれぞれ対応付けられている。
【００１４】
ＡＰ３−１〜３−ｎの各々は、特定のセッションについてのパケットのみを受信するために、通信網６０を介して通信装置１に到来したパケットをフィルタリングするための設定要求（以下、フィルタ追加要求と称する）をＣＡＮドライバ４に発することができる。フィルタ追加要求は、自身のＡＰ−ＩＤと、少なくとも１つのセッションを特定するための固有の識別子（以下、セッションＩＤと称する）と、を含む。フィルタ追加要求は、例えば、ＡＰ３−１〜３−ｎの起動直後やアプリケーションの実行過程において発せられる。
【００１５】
また、ＡＰ３−１〜３−ｎの各々は、既に設定されているフィルタ設定を削除するためのフィルタ削除要求をＣＡＮドライバ４に発することができる。フィルタ削除要求は、自身のＡＰ−ＩＤを含む。フィルタ削除要求は、例えば、ＡＰ３−１〜３−ｎによる特定セッションの処理終了時やＡＰ３−１〜３−ｎ自身の終了時に発せられる。
【００１６】
ＣＡＮドライバ４は、フィルタの追加、削除、及びパケットの転送を行なう。ＣＡＮドライバ４の動作は、通信装置１内のＣＰＵ（図示せず）がＲＯＭ（図示せず）等の記憶手段に記憶されたプログラムを実行することで実現できる。すなわち、ＣＡＮドライバ４は、フィルタリング処理をソフト的に実行する。
【００１７】
フィルタ設定部４１は、ＡＰ３−１〜３−ｎのいずれかからのフィルタ設定要求に応じて、後述するソフトウェアフィルタリングテーブル４２及びハードウェアフィルタリングテーブル５１の各々にフィルタ条件を設定する。詳細には、以下のように設定がなされる。
【００１８】
フィルタ設定部４１は、フィルタ追加要求に含まれるＡＰ−ＩＤとセッションＩＤとを対応付けてソフトウェアフィルタリングテーブル４２に記憶させる。また、フィルタ追加要求が全てのセッションＩＤの転送を要求するもの（以下、全ＩＤ転送要求と称する）である場合には、フィルタ設定部４１は、ＡＰ−ＩＤと全ＩＤ転送フラグとを対応付けて記憶する。
【００１９】
また、フィルタ設定部４１は、当該記憶後のソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれていない場合には、ソフトウェアフィルタリングテーブル４２に記憶されている全てのセッションＩＤをハードウェアフィルタリングテーブル５１に設定する。一方、当該記憶後のソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれている場合には、フィルタ設定部４１はハードウェアフィルタリングテーブル５１に対してＩＤ設定を行なわない。
【００２０】
また、フィルタ設定部４１は、フィルタ削除要求に含まれるＡＰ−ＩＤ及び当該ＡＰ−ＩＤに対応付けられているセッションＩＤ又は全ＩＤ転送フラグをソフトウェアフィルタリングテーブル４２から削除する。
【００２１】
また、フィルタ設定部４１は、当該削除後のソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれていないには、ソフトウェアフィルタリングテーブル４２に記憶されている全てのセッションＩＤをハードウェアフィルタリングテーブル５１に設定する。一方、当該削除後のソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれている場合には、フィルタ設定部４１はＣＡＮデバイス５に対してＩＤ設定を行なわない。
【００２２】
フィルタ設定部４１は、ハードウェアフィルタリングを適用するか否かを示す情報（以下、ＨＷフィルタ適用情報と称する）をソフトウェアフィルタリングテーブル４２に記憶させることもできる。
【００２３】
ソフトウェアフィルタリングテーブル４２は、ソフトウェアフィルタリングを行なうための設定内容を記憶する。詳細には、ＡＰ−ＩＤとセッションＩＤとが対応付けられて記憶される。ソフトウェアフィルタリングテーブル４２の構成については後述する（図２）。
【００２４】
ソフトウェアフィルタリング通信部（以下、ＳＷ通信部と称する）４３は、後述するハードウェアフィルタリング通信部（以下、ＨＷ通信部と称する）５２から供給されるパケットを、ソフトウェアフィルタリングテーブル４２の設定内容に応じてＡＰ３−１〜３−ｎに転送する。この際、ＳＷ通信部４３は、ソフトウェアフィルタリングテーブル４２に記憶されているセッションＩＤを有するパケットを、当該セッションＩＤに対応付けられているＡＰ−ＩＤのＡＰ（ＡＰ３−１〜３−ｎのいずれか）に転送する。また、ＳＷ通信部は、全ＩＤ転送フラグが対応付けられているＡＰに対しては全てのパケットを転送する。また、ＳＷ通信部４３は、ＡＰ３−１〜３−ｎからのパケットをＨＷ通信部５２に転送することもできる。
【００２５】
ＣＡＮデバイス５は、フィルタリング処理を実行しつつパケットを送受信する機能を有する。ＣＡＮデバイス５は、ハードウェアであり、フィルタリング処理をハード的に実行する。
【００２６】
ハードウェアフィルタリングテーブル５１は、ハードウェアフィルタリングを行なうための設定内容を記憶する。詳細には、フィルタ設定部４１によって設定されたセッションＩＤが記憶される。ハードウェアフィルタリングテーブル５１の構成については後述する（図３）。
【００２７】
ＨＷ通信部５２は、通信網６０を介して通信装置１に到来したパケットのうち、ハードウェアフィルタリングテーブル５１に設定されているセッションＩＤを含むパケットのみを後段のＣＡＮドライバ４に転送する。ハードウェアフィルタリングテーブル５１にセッションＩＤが設定されていない場合には、ＨＷ通信部５２は、通信網６０を介して通信装置１に到来した全てのパケットを後段のＣＡＮドライバ４に転送する。また、ＨＷ通信部５２は、ＳＷ通信部４３から転送された、ＡＰ３−１〜３−ｎのいずれかからのパケットを通信網６０に送出することもできる。
【００２８】
図２には、ソフトウェアフィルタリングテーブル４２の一例が示されている。図２の例においては、ＡＰ−ＩＤ＿Ａ１にはセッションＩＤ＿Ｓ１及びＳ２が対応付けられ、ＡＰ−ＩＤ＿Ａ２にはセッションＩＤ＿Ｓ２及びＳ３が対応付けられている。以下、ＡＰ３−１〜３−ｎにはＡＰ−ＩＤ＿Ａ１〜Ａｎがそれぞれ対応付けられているものとする。この場合、ＡＰ３−１にはセッションＩＤ＿Ｓ１を含むパケット及びセッションＩＤ＿Ｓ２を含むパケットのみが供給される。また、ＡＰ３−２にはセッションＩＤ＿Ｓ２を含むパケット及びセッションＩＤ＿Ｓ３を含むパケットのみが供給される。また、ＨＷフィルタ適用情報が「有り」となっている。この場合、ハードウェアフィルタリング処理が施されることを示している。
【００２９】
図３には、ハードウェアフィルタリングテーブル５１の一例が示されている。図３の例においては、セッションＩＤ＿Ｓ１、Ｓ２及びＳ３が記憶されている。この場合、通信網６０を介して通信装置１に到来したパケットのうち、セッションＩＤ＿Ｓ１、Ｓ２及びＳ３のいずれかを含むパケットのみが後段のＣＡＮドライバ４に転送される。
【００３０】
以下、図４〜図１０を参照しつつ、フィルタ追加要求に応じて実行される、フィルタ設定部４１によるフィルタ設定動作について説明する。フィルタ設定部４１は、ＡＰ３−１〜３−ｎのいずれか１つからフィルタ追加要求を受信する毎に図４に示されるルーチンを実行する。
【００３１】
先ず、ＡＰ３−１がセッションＩＤ＿Ｓ１及びＳ２を含むフィルタ追加要求を発した場合について説明する。
【００３２】
フィルタ設定部４１は、ＡＰ３−１からフィルタ追加要求を受信する（ステップＳ１１）。
【００３３】
フィルタ設定部４１は、フィルタ追加要求に含まれるセッションＩＤ＿Ｓ１及びＳ２と、ＡＰ３−１のＡＰ−ＩＤ＿Ａ１とを対応付けてソフトウェアフィルタリングテーブル４２に記憶させる（ステップＳ１２）。
【００３４】
図５には、当該記憶後のソフトウェアフィルタリングテーブル４２が示されている。ＡＰ−ＩＤ＿Ａ１とセッションＩＤ＿Ｓ１及びＳ２とが対応付けられている。フィルタ設定部４１は、「ＨＷフィルタ適用」の欄を「有り」とする。
【００３５】
次に、フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれているか判別する（ステップＳ１３）。図５に示されるように、現時点においては、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグは含まれていない。
【００３６】
フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に含まれる全てのセッションＩＤ＿Ｓ１及びＳ２をハードウェアフィルタリングテーブル５１に記憶させる（ステップＳ１４）。
【００３７】
図６には、当該記憶後のハードウェアフィルタリングテーブル５１が示されている。セッションＩＤ＿Ｓ１及びＳ２が記憶されている。以上で、フィルタ設定部４１はフィルタ設定を終了する。
【００３８】
この時点において、通信網６０を介してパケットが通信装置１に到来した場合には以下のような処理がなされる。ＣＡＮデバイス５のＨＷ通信部５２は、当該パケットのうち、セッションＩＤ＿Ｓ１及びＳ２のいずれかを含むパケットのみを後段のＣＡＮドライバ４に転送する。ＣＡＮドライバ４のＳＷ通信部４３は、転送されたパケットのうち、セッションＩＤ＿Ｓ１及びＳ２のいずれかを含むパケットのみをＡＰ３−１に転送する。
【００３９】
以下、その後、ＡＰ３−２がセッションＩＤ＿Ｓ２及びＳ３を含むフィルタ追加要求を発した場合について説明する。
【００４０】
フィルタ設定部４１は、ＡＰ３−２からフィルタ追加要求を受信する（ステップＳ１１）。
【００４１】
フィルタ設定部４１は、フィルタ追加要求に含まれるセッションＩＤ＿Ｓ２及びＳ３と、ＡＰ３−２のＡＰ−ＩＤ＿Ａ２とを対応付けてソフトウェアフィルタリングテーブル４２に記憶させる（ステップＳ１２）。
【００４２】
図７には、当該記憶後のソフトウェアフィルタリングテーブル４２が示されている。ＡＰ−ＩＤ＿Ａ１とセッションＩＤ＿Ｓ１及びＳ２とが対応付けられている。更に、ＡＰ−ＩＤ＿Ａ２とセッションＩＤ＿Ｓ２及びＳ３とが対応付けられている。フィルタ設定部４１は、「ＨＷフィルタ適用」の欄を「有り」とする。
【００４３】
次に、フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれているか判別する（ステップＳ１３）。図７に示されるように、現時点においては、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグは含まれていない。
【００４４】
フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に記憶されている全てのセッションＩＤ＿Ｓ１、Ｓ２及びＳ３をハードウェアフィルタリングテーブル５１に記憶させる（ステップＳ１４）。
【００４５】
図８には、当該記憶後のハードウェアフィルタリングテーブル５１が示されている。セッションＩＤ＿Ｓ１、Ｓ２及びＳ３が記憶されている。以上で、フィルタ設定部４１はフィルタ設定を終了する。
【００４６】
この時点において、通信網６０を介してパケットが通信装置１に到来した場合には以下のような処理がなされる。ＣＡＮデバイス５のＨＷ通信部５２は、当該パケットのうち、セッションＩＤ＿Ｓ１、Ｓ２及びＳ３のいずれかを含むパケットのみを後段のＣＡＮドライバ４に転送する。ＣＡＮドライバ４のＳＷ通信部４３は、転送されたパケットのうち、セッションＩＤ＿Ｓ１及びＳ２のいずれかを含むパケットのみをＡＰ３−１に転送し、セッションＩＤ＿Ｓ２及びＳ３のいずれかを含むパケットのみをＡＰ３−２に転送する。
【００４７】
以下、その後、ＡＰ３−３がセッションＩＤに拘わらず全てのパケットの転送を要求する旨のフィルタ追加要求を発した場合について説明する。
【００４８】
フィルタ設定部４１は、ＡＰ３−３からフィルタ追加要求を受信する（ステップＳ１１）。
【００４９】
フィルタ設定部４１は、ＡＰ３−２のＡＰ−ＩＤ＿Ａ３と、全パケットの転送指示を示すデータとを対応付けてソフトウェアフィルタリングテーブル４２に記憶させる（ステップＳ１２）。
【００５０】
図９には、当該記憶後のソフトウェアフィルタリングテーブル４２が示されている。ＡＰ−ＩＤ＿Ａ１とセッションＩＤ＿Ｓ１及びＳ２とが対応付けられている。また、ＡＰ−ＩＤ＿Ａ２とセッションＩＤ＿Ｓ２及びＳ３とが対応付けられている。更に、ＡＰ−ＩＤ＿Ａ３と全パケットの転送指示を示す全ＩＤ転送フラグ「＊」とが対応付けられている。フィルタ設定部４１は、「ＨＷフィルタ適用」の欄を「無し」とする。
【００５１】
次に、フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれているか判別する（ステップＳ１３）。図９に示されるように、現時点においては、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれている。
【００５２】
フィルタ設定部４１は、ハードウェアフィルタリングテーブル５１に記憶されているセッションＩＤを削除する（ステップＳ１５）。
【００５３】
図１０には、当該削除後のハードウェアフィルタリングテーブル５１が示されている。ハードウェアフィルタリングテーブル５１にはセッションＩＤが記憶されていない。以上で、フィルタ設定部４１はフィルタ設定を終了する。
【００５４】
この時点において、通信網６０を介してパケットが通信装置１に到来した場合には以下のような処理がなされる。ＣＡＮデバイス５のＨＷ通信部５２は、当該パケットの全てを後段のＣＡＮドライバ４に転送する。ＣＡＮドライバ４のＳＷ通信部４３は、転送されたパケットのうち、セッションＩＤ＿Ｓ１及びＳ２のいずれかを含むパケットのみをＡＰ３−１に転送し、セッションＩＤ＿Ｓ２及びＳ３のいずれかを含むパケットのみをＡＰ３−２に転送する。また、ＳＷ通信部４３は、全てのパケットをＡＰ３−３に転送する。
【００５５】
以下、図１１〜１５を参照しつつ、フィルタ削除要求に応じて実行される、フィルタ設定部４１によるフィルタ設定動作について説明する。フィルタ設定部４１は、ＡＰ３−１〜３−ｎのいずれか１つからフィルタ削除要求を受信する毎に図１１に示されるルーチンを実行する。
【００５６】
先ず、ＡＰ３−３がフィルタ削除要求を発した場合について説明する。
【００５７】
フィルタ設定部４１は、ＡＰ３−３からフィルタ削除要求を受信する（ステップＳ２１）。
【００５８】
フィルタ設定部４１は、フィルタ削除要求に応じてＡＰ３−３のＡＰ−ＩＤ＿Ａ３に関するフィルタ設定をソフトウェアフィルタリングテーブル４２から削除する（ステップＳ２２）。すなわち、ＡＰ−ＩＤ＿Ａ３と全ＩＤ転送フラグ「＊」とを削除する。
【００５９】
図１２には、当該削除後のソフトウェアフィルタリングテーブル４２が示されている。ＡＰ−ＩＤ＿Ａ１とセッションＩＤ＿Ｓ１及びＳ２とが対応付けられている。また、ＡＰ−ＩＤ＿Ａ２とセッションＩＤ＿Ｓ２及びＳ３とが対応付けられている。フィルタ設定部４１は、「ＨＷフィルタ適用」の欄を「有り」とする。
【００６０】
次に、フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれているか判別する（ステップＳ２３）。図１２に示されるように、現時点においては、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグは含まれていない。
【００６１】
フィルタ設定部４１は、図１２のソフトウェアフィルタリングテーブル４２に記憶されている全てのセッションＩＤ＿Ｓ１、Ｓ２及びＳ３をハードウェアフィルタリングテーブル５１に記憶させる（ステップＳ２４）。
【００６２】
図１３には、当該記憶後のハードウェアフィルタリングテーブル５１が示されている。セッションＩＤ＿Ｓ１、Ｓ２及びＳ３が記憶されている。以上で、フィルタ設定部４１はフィルタ設定を終了する。
【００６３】
この時点において、通信網６０を介してパケットが通信装置１に到来した場合には以下のような処理がなされる。ＣＡＮデバイス５のＨＷ通信部５２は、当該パケットのうち、セッションＩＤ＿Ｓ１、Ｓ２及びＳ３のいずれかを含むパケットのみを後段のＣＡＮドライバ４に転送する。ＣＡＮドライバ４のＳＷ通信部４３は、転送されたパケットのうち、セッションＩＤ＿Ｓ１及びＳ２のいずれかを含むパケットのみをＡＰ３−１に転送し、セッションＩＤ＿Ｓ２及びＳ３のいずれかを含むパケットのみをＡＰ３−２に転送する。
【００６４】
次に、ＡＰ３−１がフィルタ削除要求を発した場合について説明する。
【００６５】
フィルタ設定部４１は、ＡＰ３−１からフィルタ削除要求を受信する（ステップＳ２１）。
【００６６】
フィルタ設定部４１は、フィルタ削除要求に応じてＡＰ３−１のＡＰ−ＩＤ＿Ａ１に関するフィルタ設定をソフトウェアフィルタリングテーブル４２から削除する（ステップＳ２２）。すなわち、ＡＰ−ＩＤ＿Ａ１とセッションＩＤ＿Ｓ１及びＳ２との対応を削除する。
【００６７】
図１４には、当該削除後のソフトウェアフィルタリングテーブル４２が示されている。ＡＰ−ＩＤ＿Ａ２とセッションＩＤ＿Ｓ２及びＳ３とが対応付けられている。フィルタ設定部４１は、「ＨＷフィルタ適用」の欄を「有り」とする。
【００６８】
次に、フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれているか判別する（ステップＳ２３）。図１４に示されるように、現時点においては、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグは含まれていない。
【００６９】
フィルタ設定部４１は、図１４のソフトウェアフィルタリングテーブル４２に記憶されている全てのセッションＩＤ＿Ｓ２及びＳ３をハードウェアフィルタリングテーブル５１に記憶させる（ステップＳ２４）。
【００７０】
図１５には、当該記憶後のハードウェアフィルタリングテーブル５１が示されている。セッションＩＤ＿Ｓ２及びＳ３が記憶されている。以上で、フィルタ設定部４１はフィルタ設定を終了する。
【００７１】
この時点において、通信網６０を介してパケットが通信装置１に到来した場合には以下のような処理がなされる。ＣＡＮデバイス５のＨＷ通信部５２は、当該パケットのうち、セッションＩＤ＿Ｓ２及びＳ３のいずれかを含むパケットのみを後段のＣＡＮドライバ４に転送する。ＣＡＮドライバ４のＳＷ通信部４３は、転送されたパケットのうち、セッションＩＤ＿Ｓ２及びＳ３のいずれかを含むパケットのみをＡＰ３−２に転送する。
【００７２】
以下、ソフトウェアフィルタリングテーブル４２が図９の状態であり、ハードウェアフィルタリングテーブル５１が図１０の状態である場合に、ＡＰ３−１がフィルタ削除要求を発した場合について説明する。
【００７３】
フィルタ設定部４１は、ＡＰ３−１からフィルタ削除要求を受信する（ステップＳ２１）。
【００７４】
フィルタ設定部４１は、フィルタ削除要求に応じてＡＰ３−１のＡＰ−ＩＤ＿Ａ１に関するフィルタ設定をソフトウェアフィルタリングテーブル４２から削除する（ステップＳ２２）。すなわち、ＡＰ−ＩＤ＿Ａ１とセッションＩＤ＿Ｓ１及びＳ２との対応を削除する。
【００７５】
図１６には、当該削除後のソフトウェアフィルタリングテーブル４２が示されている。ＡＰ−ＩＤ＿Ａ２とセッションＩＤ＿Ｓ２及びＳ３とが対応付けられている。また、ＡＰ−ＩＤ＿Ａ３と全ＩＤ転送フラグ「＊」とが対応付けられている。フィルタ設定部４１は、「ＨＷフィルタ適用」の欄を「無し」とする。
【００７６】
次に、フィルタ設定部４１は、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれているか判別する（ステップＳ２３）。図１６に示されるように、現時点においては、ソフトウェアフィルタリングテーブル４２に全ＩＤ転送フラグが含まれている。
【００７７】
フィルタ設定部４１は、ハードウェアフィルタリングテーブル５１に対してセッションＩＤの設定を行なわない（ステップＳ２５）。
【００７８】
図１７には、ステップＳ２５の処理後のハードウェアフィルタリングテーブル５１が示されている。ハードウェアフィルタリングテーブル５１にはセッションＩＤが記憶されていない。以上で、フィルタ設定部４１はフィルタ設定を終了する。
【００７９】
この時点において、通信網６０を介してパケットが通信装置１に到来した場合には以下のような処理がなされる。ＣＡＮデバイス５のＨＷ通信部５２は、当該パケットの全てを後段のＣＡＮドライバ４に転送する。ＣＡＮドライバ４のＳＷ通信部４３は、転送されたパケットのうち、セッションＩＤ＿Ｓ２及びＳ３のいずれかを含むパケットのみをＡＰ３−２に転送する。また、ＳＷ通信部４３は、全てのパケットをＡＰ３−３に転送する。
【００８０】
上記したように、本実施例の通信装置１は、ソフトウェアフィルタリングとハードウェアフィルタリングとを併用する。ハードウェアフィルタリングにおいては、通信網６０を介して到来したパケットのうち、ＡＰ３−１〜ＡＰ３−ｎのいずれかからの転送要求があったセッションＩＤを含むパケットのみを後段に転送する。ソフトウェアフィルタリングにおいては、当該転送されたパケットについてのみＡＰ毎のフィルタリング処理を施す。
【００８１】
換言すれば、ＡＰ３−１〜ＡＰ３−ｎのいずれからも転送要求のないセッションＩＤを含むパケット、すなわちフィルタ設定上の競合が問題にならないパケットについてはハードウェアによって高速にフィルタリング処理を行い、且つ、競合関係にあるセッションＩＤをそれぞれ含むパケットについてはソフトウェアによって各アプリケーションからの要求に応じたフィルタリングを行う。
【００８２】
かかる動作によれば、ＡＰ３−１〜ＡＰ３−ｎの各々から個別にフィルタ設定要求があった場合にもフィルタ設定上の競合を回避しつつ、効率的なフィルタリングを実行することができる。特に、ソフトウェアフィルタリングの対象となるパケット数が減少するので、ソフトフィルタリング処理を実行するＣＰＵの負荷が軽減される。故に、本実施例の通信装置１によれば、装置全体の処理パフォーマンスを低下させることなく受信パケットのフィルタリング処理を行なうことができる。
【００８３】
＜第２の実施例＞
図１８には、本発明の実施例である通信装置１の構成が示されている。以下、第１の実施例と異なる部分について主に説明する。
【００８４】
ＣＡＮドライバ４は、禁止ＩＤテーブル４４を更に有する。禁止ＩＤテーブル４４には、少なくとも１つのフィルタリング禁止ＩＤが記憶されている。
【００８５】
図１９には、禁止ＩＤテーブル４４の一例が示されている。図１７の例においては、禁止ＩＤとしてＳ３が記憶されている。
【００８６】
フィルタ設定部４１は、ＡＰ３−１〜３−ｎのいずれかからセッションＩＤ＿Ｓ３を含むフィルタ追加要求が発せられた場合であっても、ソフトウェアフィルタリングテーブル４２及びハードウェアフィルタリングテーブル５１にセッションＩＤ＿Ｓ３を記憶させない。すなわち、セッションＩＤ＿Ｓ３を含むパケットが通信網６０を介して到来した場合であっても、ＨＷ通信部５２及びＳＷ通信部４３は当該パケットを転送しない。また、フィルタ設定部４１は、フィルタ追加要求を発したＡＰに対してエラーを通知する。
【００８７】
上記したように、本実施例の通信装置１は、禁止ＩＤを記憶する禁止ＩＤテーブル４４を更に含み、禁止ＩＤと同一のセッションＩＤを含むパケットを受信した場合であっても、当該パケットの転送を行なわない。
【００８８】
かかる動作により、特定のセッションＩＤについてのフィルタリングすべきでない設定を拒否することができる。換言すれば、特定のセッションＩＤを含むパケットについての転送要求がＡＰ３−１〜３−ｎの１つから発せられた場合であっても、ＨＷ通信部５２が当該セッションＩＤを含むパケットを後段のＳＷ通信部４３に転送しないようにすることができる。これにより、ソフトウェアフィルタリングの対象となるパケット数をより減少させ、ＣＰＵの負荷をより軽減させることができる。これにより、受信パケットのフィルタリング処理をより効率的に行なうことができる。
【符号の説明】
【００８９】
１  通信装置
２  オペレーティングシステム
３−１〜３−ｎ  アプリケーション（ＡＰ）
４  ＣＡＮドライバ
５  ＣＡＮデバイス
４１  フィルタ設定部
４２  ソフトウェアフィルタリングテーブル
４３  ＳＷ通信部
４４  禁止ＩＤテーブル
５１  ハードウェアフィルタリングテーブル
５２  ＨＷ通信部
６０  通信網
【図１】
2013211702.tif 000003
【図２】
2013211702.tif 000004
【図３】
2013211702.tif 000005
【図４】
2013211702.tif 000006
【図５】
2013211702.tif 000007
【図６】
2013211702.tif 000008
【図７】
2013211702.tif 000009
【図８】
2013211702.tif 000010
【図９】
2013211702.tif 000011
【図１０】
2013211702.tif 000012
【図１１】
2013211702.tif 000013
【図１２】
2013211702.tif 000014
【図１３】
2013211702.tif 000015
【図１４】
2013211702.tif 000016
【図１５】
2013211702.tif 000017
【図１６】
2013211702.tif 000018
【図１７】
2013211702.tif 000019
【図１８】
2013211702.tif 000020
【図１９】
2013211702.tif 000021