(57)【特許請求の範囲】
【請求項１】
並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有され、通信コネクションと該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報が記録されるメモリと、受信されたパケットに含まれる情報に基づいて該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置であって、前記複数の処理ユニットの夫々は、
前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定手段と、
自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析手段と、
自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録手段と、
前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定手段と、を備え、
前記解析手段は、更に、前記特定手段によって特定されたパケットを解析する、
情報処理装置。
【請求項２】
前記判定手段は、前記振分ユニットによって振り分けられたパケットが属するコネクションに関連する他のコネクションのパケット解析を、他の処理ユニットが担当することを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
請求項１に記載の情報処理装置。
【請求項３】
前記判定手段は、前記振分ユニットによって振り分けられたパケットが属するコネクションと親子関係にある他のコネクションのパケット解析を、他の処理ユニットが担当することを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
請求項２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記振分ユニットによって振り分けられたパケットが属するコネクションがアドレス変換の対象となる前に該コネクションのパケット解析を他の処理ユニットが担当したことを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
請求項１から３の何れか一項に記載の情報処理装置。
【請求項５】
前記判定手段は、前記振分ユニットによって振り分けられたパケットが、以前に送受信されたパケットを内包しており、内包されているパケットの解析を他の処理ユニットが担当したことを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
請求項１から４の何れか一項に記載の情報処理装置。
【請求項６】
前記依頼情報記録手段は、前記メモリ上に用意されたキューに、前記依頼情報を記録する、
請求項１から５の何れか一項に記載の情報処理装置。
【請求項７】
前記依頼情報記録手段は、前記管理情報を参照することで特定された、前記パケットを解析するのに適切な他の処理ユニットによって参照されるキューに、前記依頼情報を記録する、
請求項６に記載の情報処理装置。
【請求項８】
前記振分ユニットは、受信されたパケットに含まれる送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号の少なくとも何れかを含む情報をハッシュ演算した結果に従って、前記パケットを振り分ける処理ユニットを決定する、
請求項１から７の何れか一項に記載の情報処理装置。
【請求項９】
ネットワークに接続された端末による通信を取得する通信取得ユニットを更に備える、
請求項１から８の何れか一項に記載の情報処理装置。
【請求項１０】
並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有され、通信コネクションと該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報が記録されるメモリと、受信されたパケットに含まれる情報に基づいて該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置において、前記複数の処理ユニットの夫々が、
前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定ステップと、
自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析ステップと、
自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録ステップと、
前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定ステップと、を実行し、
前記解析ステップでは、更に、前記特定ステップで特定されたパケットが解析される、
方法。
【請求項１１】
並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有され、通信コネクションと該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報が記録されるメモリと、受信されたパケットに含まれる情報に基づいて
該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置であって、前記複数の処理ユニットの夫々を、
前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定手段と、
自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析手段と、
自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録手段と、
前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定手段と、として機能させ、
前記解析手段は、更に、前記特定手段によって特定されたパケットを解析する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数のコアに受信パケットを振り分けて処理するための技術に関する。
【背景技術】
【０００２】
従来、複数の独立したネットワークサービスプロセッサとして、プロセッサによって並行に実行されるワークを、ワークのタグに基づいて、ワークの実行が順序づけされ且つ同期化されるように、動的にスケジューリングするネットワークサービスプロセッサが提案されている（特許文献１を参照）。
【０００３】
また、複数のコネクションを複数のコアで処理するために、ポート番号を書き換える技術が提案されている（特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００８−５１２９５０号公報
【特許文献２】米国特許出願公開第２０１０／０３２２２５２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来、ネットワーク装置にマルチコアＣＰＵを搭載し、受信されたパケットを夫々のコアに振り分けて処理することで、処理負荷を分散し、処理を高速化する技術が存在する。しかし、同じセッションに属するパケットであっても、以前と異なるコアに振り分けられてしまうことが生じ得る。例えば、同じセッション（１つのことを行うための複数のコネクションからなるコネクション群）に属する通信であっても、送信元／宛先ＩＰアドレス、プロトコル、送信元／宛先ポート番号（所謂５−ｔｕｐｌｅ）が異なるコネクションが含まれる場合があり、この場合、夫々のコアへの振り分けを行うユニットが、パケットが属するセッションを認識できず、パケットを以前と異なるコアに振り分けてしまうことがある。この場合、振り分けを受けたコアは、以前に同セッションに関連するコネクションを解析した際の情報を持っていないため、他のコアが管理するメモリ領域、またはコア間で共通に管理するメモリ領域から情報を入手する必要がある。この場合、このメモリ領域を他のコアと排他制御する必要が生じ、処理速度が低下し得る。
【０００６】
本開示は、上記した問題に鑑み、複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することを課題とする。
【課題を解決するための手段】
【０００７】
本開示の一例は、並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有されるメモリと、受信されたパケットに含まれる情報に基づいて該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置であって、前記複数の処理ユニットの夫々は、前記メモリに、通信コネクションと、該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報を記録する管理情報記録手段と、前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定手段と、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析手段と、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理
ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録手段と、前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定手段と、を備え、前記解析手段は、更に、前記特定手段によって特定されたパケットを解析する、情報処理装置である。
【０００８】
本開示は、情報処理装置、システム、コンピューターによって実行される方法またはコンピューターに実行させるプログラムとして把握することが可能である。また、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
【発明の効果】
【０００９】
本開示によれば、複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るシステムの構成を示す概略図である。
【図２】実施形態に係るネットワーク監視装置のハードウェア構成を示す図である。
【図３】実施形態に係るネットワーク監視装置の機能構成の概略を示す図である。
【図４】実施形態に係る、メイン処理の流れの概要を示すフローチャートである。
【図５】実施形態に係る、受信パケット処理の流れの概要を示すフローチャートである。
【図６】実施形態に係る、変更パケット処理の流れの概要を示すフローチャートである。
【図７】実施形態において、コア１にてＦＴＰの制御コネクションが確立する様子を示す図である。
【図８】実施形態において、制御コネクションにてデータコネクション情報のネゴシエーションが実施される様子を示す図である。
【図９】実施形態において、データコネクションの確立処理がコア２に振り分けられた場合に、担当コアが変更される様子を示す図である。
【図１０】実施形態に係るシステムの構成のバリエーションを示す概略図である。
【発明を実施するための形態】
【００１１】
以下、本開示に係る情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係る情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
【００１２】
本実施形態では、本開示に係る情報処理装置、方法およびプログラムを、ネットワークを監視するためのシステムにおいて実施した場合の実施の形態について説明する。但し、本開示に係る情報処理装置、方法およびプログラムは、複数のコアに受信パケットを振り分けて処理するための技術について広く用いることが可能であり、本開示の適用対象は、本実施形態において示した例に限定されない。
【００１３】
＜システムの構成＞
図１は、本実施形態に係るシステム１の構成を示す概略図である。本実施形態に係るシステム１は、複数の情報処理端末９０（以下、「ノード９０」と称する）が接続されるネットワークセグメント２と、ノード９０に係る通信を監視するためのネットワーク監視装
置２０と、を備える。また、ネットワークセグメント２内のノード９０は、インターネットや広域ネットワークを介して遠隔地において接続された各種のサーバーと、ルータ１０を介して通信可能である。本実施形態において、ネットワーク監視装置２０は、ネットワークセグメント２のスイッチまたはルータ（図１に示した例では、ルータ１０）と、その上位にある他のスイッチまたはルータと、の間に接続されることで、通過するパケットやフレーム等を取得する。この場合、ネットワーク監視装置２０は、取得したパケットのうち、遮断しなくてもよいパケットについては転送するインラインモードで動作する。
【００１４】
図２は、本実施形態に係るネットワーク監視装置２０のハードウェア構成を示す図である。なお、図２においては、ネットワーク監視装置２０以外の構成（ルータ１０、ノード９０等）については、図示を省略している。ネットワーク監視装置２０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の記憶装置１４、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１５等の通信ユニット、等を備えるコンピューターである。
【００１５】
ここで、ＣＰＵ１１は、複数のコア（処理ユニット）を有するマルチコアＣＰＵである。本実施形態においては、２コア（コア１およびコア２）のＣＰＵを例示して説明するが、コア数は本開示における例に限定されない。また、ＲＡＭ１３は、これらの複数のコアによって共有される。このため、ＲＡＭ１３の領域のうち、複数のコアからアクセスされ得る領域については、排他制御が必要である。
【００１６】
図３は、本実施形態に係るネットワーク監視装置２０の機能構成の概略を示す図である。ネットワーク監視装置２０は、記憶装置１４に記録されているプログラムが、ＲＡＭ１３に読み出され、ＣＰＵ１１によって実行されることで、通信取得部２１、振分ユニット２２、管理情報記録部２３、判定部２４．１、２４．２（何れか１の判定部を指す場合は、単に「判定部２４」と記載する）、解析部２５．１、２５．２（何れか１の解析部を指す場合は、単に「解析部２５」と記載する）、依頼情報記録部２６．１、２６．２（何れか１の依頼情報記録部を指す場合は、単に「依頼情報記録部２６」と記載する）および特定部２７．１、２７．２（何れか１の特定部を指す場合は、単に「特定部２７」と記載する）を備える情報処理装置として機能する。なお、本実施形態では、ネットワーク監視装置２０の備える各機能は、汎用プロセッサであるＣＰＵ１１によって実行されるが、これらの機能の一部または全部は、１または複数の専用プロセッサによって実行されてもよい。また、これらの機能の一部または全部は、クラウド技術等を用いて、遠隔値に設置された装置や、分散設置された複数の装置によって実行されてもよい。
【００１７】
ＮＩＣ１５は、通信取得部２１および振分ユニット２２として機能する。
【００１８】
通信取得部２１は、ネットワークに接続された端末によって送受信されるパケットを取得し、取得されたパケットをＲＡＭ１３に記録する。なお、本実施形態において、ネットワーク監視装置２０による監視および検知の対象となる「端末」には、ネットワークセグメント２に接続されたノード９０の他、ノード９０とルータ１０を介して通信するその他の装置（他のネットワークに属するノードや外部サーバー等）が含まれる。
【００１９】
振分ユニット２２は、受信されたパケットに含まれる情報に基づいて、受信パケットの解析を何れかのコアに振り分ける。振分ユニット２２は、受信されたパケットに含まれる送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号（所謂５−ｔｕｐｌｅ）の少なくとも何れかを含む情報を種としてハッシュ演算した結
果に従って、パケットを振り分けるコアを決定する。そして、振分部は、ＲＡＭ１３に記録されたパケットのアドレスを何れかのコアに通知することで、パケットを振り分ける。全てのパケットに対して同じアルゴリズムのハッシュ演算が適用されるため、同じ５−ｔｕｐｌｅを有するパケットは、同じコアに振り分けられる。このようにすることで、夫々のコアは、自コアが排他制御することなくアクセス可能な領域の解析情報テーブルを参照することで、同じコネクションに属するパケットを解析することが出来る。但し、振り分け方法に５−ｔｕｐｌｅを種とするハッシュ演算を用いるのは一例であり、振り分けに用いるアルゴリズムには、その他のアルゴリズムが採用されてもよい。
【００２０】
管理情報記録部２３は、ＲＡＭ１３に、通信コネクションと、該通信コネクションに係るパケットの解析を担当するコアとの関係を把握可能な管理情報（コネクション情報）を、コネクション情報管理キューに記録することで、コネクション情報を管理する。本実施形態では、コネクション情報として、当該コネクションに属するパケットの解析を担当するコアのコアＩＤに関連付けて、当該コネクションの送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号が管理される。なお、コネクション情報管理キューは、複数のコアからアクセスされるコア間共通領域であるため、コア間で排他制御が必要である。
【００２１】
並列動作可能な複数のコアの夫々は、ＲＡＭ１３に展開されたプログラムを実行することで、判定部２４、解析部２５、依頼情報記録部２６および特定部２７として機能する。そして、本実施形態では、複数のコアが同時に動作することで、複数のパケットが並列的に処理される。夫々のコアは、他のコアの状態に拘らず、当該コアが担当するコネクションに属するパケットが受信される毎に、振分ユニット２２による振り分けを受けてパケットを解析する。
【００２２】
判定部２４は、コネクション情報を参照することで、自コアが、振分ユニット２２によって振り分けられたパケットを解析するコアとして適切であるか否かを判定する。具体的には、当該パケットが（１）アドレス変換後のコネクションに属するパケット、（２）親子関係があるコネクションに属するパケット、および（３）ＩＣＭＰのエラーパケットの何れかである場合、判定部２４は、当該パケットを、処理担当コアを変更すべきパケットであると判定する。
【００２３】
（１）アドレス変換後のコネクションに属するパケット
アドレス変換（ＩＰアドレスまたはポート番号をネットワーク監視装置２０で受信し、送信する際に付け替える必要があるコネクション）を扱うコネクションでは、本装置でアドレス変換したコネクションの戻りパケットは、５−ｔｕｐｌｅコア振り分け方式では、アドレス変換前のコネクションを処理したコアと異なるコアに振り分けされ得る。このため、他のコアが担当するコネクションに属するパケットであるが、アドレス変換によって送信元／宛先ＩＰアドレスおよび送信元／宛先ポート番号の何れかが変更された結果、異なるコアに振り分けられたパケットである場合には、アドレス変換前と変換後のコネクションを同一コアで処理できるように、担当コアの変更を行う。即ち、判定部２４は、コネクション情報管理キューを参照し、アドレス変換の対象となる前に該コネクションのパケット解析を他のコアが担当したことを示すコネクション情報が記録されている場合に、自コアが、パケットを解析するコアとして適切でないと判定する。
【００２４】
（２）親子関係があるコネクションに属するパケット
ＦＴＰの制御コネクション（親）と、ＦＴＰのデータコネクション（子）のように、親子関係がある複数のコネクションがある場合、これらの複数のコネクションに係るパケットを同一コアで処理できるように、コア変更が行われる。ファイル転送を開始すると、実際のデータ通信は制御コネクションとは別のコネクションであるため、少なくとも５−ｔ
ｕｐｌｅのうちポート番号が別の番号となり、別のコアへ振り分けされてしまう。他のコアが担当するコネクションと親子関係にあるコネクションに属するパケットである場合、子のコネクションは親のコネクションを処理しているコアへ変更を行う。即ち、判定部２４は、コネクション情報管理キューを参照し、パケットが属するコネクションに関連する（例えば、親子関係にある）他のコネクションのパケット解析を、他のコアが担当したことを示すコネクション情報が記録されている場合に、自コアが、パケットを解析するコアとして適切でないと判定する。
【００２５】
（３）ＩＣＭＰのエラーパケット
ＩＣＭＰのエラーパケット（応答パケット時）については、パケットに含まれるオリジナルパケット（要求パケット時）の仮想ＩＣＭＰコネクションを処理したコアへ変更する。即ち、判定部２４は、コネクション情報管理キューを参照し、パケットが、以前に送受信されたパケットを内包しており、内包されているパケットの解析を他のコアが担当したことを示すコネクション情報が記録されている場合に、自コアが、パケットを解析するコアとして適切でないと判定する。
【００２６】
また、判定部２４は、処理担当コアを変更すべきであると判定されたパケットのアドレス（ＲＡＭ１３におけるアドレス）を、コア変更対象パケットキューにキューイングすることで、依頼情報記録部２６に対して、パケットの処理担当コアの変更を依頼する。ここで、コア変更対象パケットキューは、当該判定部２４を実行するコアのみからアクセスされるコア内領域であるため、コア間での排他制御は不要である。
【００２７】
解析部２５は、自コアが、振分ユニット２２によって振り分けられたパケットを解析するコアとして適切であると判断された場合に、該パケットを解析する。また、解析部２５は、他のコアから自コア宛に発行された変更依頼に係るパケットであって、後述する特定部２７によって特定されたパケットを解析する。解析部２５は、解析情報テーブルを参照しながらパケットの解析を行い、また、解析の結果についても解析情報テーブルに記録する。ここで、解析情報テーブルは、当該解析部２５を実行するコアのみからアクセスされるコア内領域であるため、コア間での排他制御は不要である。
【００２８】
本実施形態では、振分ユニット２２によって、同一コネクションの以前のパケットを解析したコアにパケットが振り分けられ、また、振分ユニット２２による振り分けに誤りがあった場合にも、判定部２４および依頼情報記録部２６等によって処理担当が適切なコアに変更されるため、解析部２５は、他のコアの解析情報テーブルを参照することなく、当該解析部２５を実行するコアからのみアクセスされる解析情報テーブルを参照して、パケットの解析を行うことが出来る。
【００２９】
依頼情報記録部２６は、自コアが、振分ユニット２２によって振り分けられたパケットを解析するコアとして適切でないと判定された場合に、該パケットの解析を他のコアに依頼するための依頼情報（変更依頼およびパケットのアドレス）を、ＲＡＭ１３上に用意されたキューに記録する。具体的には、依頼情報記録部２６は、コネクション情報を参照することで、パケットを解析するのに適切な他のコア（変更先コア）を特定し、変更先コアによって参照されるコア変更パケットキュー（コア変更対象パケットキューとは異なる）にパケットのアドレスをキューイングし、変更先コアによって参照されるタスクキューに変更依頼をキューイングする。なお、コア変更パケットキューは、複数のコアからアクセスされるコア間共通領域であるため、コア間で排他制御が必要である。
【００３０】
特定部２７は、ＲＡＭ１３上のコア変更パケットキューを参照することで、自コア宛の変更依頼に係るパケットを特定する。
【００３１】
＜処理の流れ＞
次に、本実施形態に係るシステム１によって実行される処理の流れを、フローチャートを用いて説明する。なお、以下に説明するフローチャートに示された処理の具体的な内容および処理順序は、本開示を実施するための一例である。具体的な処理内容および処理順序は、本開示の実施の形態に応じて適宜選択されてよい。
【００３２】
図４は、本実施形態において、コア毎に実行されるメイン処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、ネットワーク監視装置２０の起動後、夫々のコアによって繰り返し実行される。
【００３３】
ステップＳ１０１およびステップＳ１０２では、送信パケットがある場合に、パケットの送信処理が行われる。メイン処理を実行するコアは、ＲＡＭ１３上の送信パケットキュー（図示は省略する）を確認し、ここに送信パケットがキューイングされている場合には（ステップＳ１０１）、当該送信パケットを、ＮＩＣ１５を介してネットワークに送出する（ステップＳ１０２）。その後、処理はステップＳ１０３へ進む。
【００３４】
ステップＳ１０３およびステップＳ１０４では、受信パケットがある場合に、受信パケット処理が行われる。メイン処理を実行するコアは、ＲＡＭ１３上の受信パケットキューを確認し、ここに受信パケットがキューイングされている場合には（ステップＳ１０３）、当該受信パケットを解析する（ステップＳ１０４）。受信パケット処理の詳細は、図５を用いて後述する。その後、処理はステップＳ１０５へ進む。
【００３５】
ステップＳ１０５およびステップＳ１０６では、当該コアが処理すべきタスクがある場合に、タスクが処理される。メイン処理を実行するコアは、自コアのタスクキューを確認し、ここにタスクがキューイングされている場合には（ステップＳ１０５）、当該タスクを処理する（ステップＳ１０６）。なお、本実施形態では、他のコアによって発行されたパケット処理担当コアの変更依頼がタスクキューにキューイングされている場合に、変更依頼に係る受信パケット処理を行うことについて説明する。他のコアから依頼されて行う受信パケット処理の詳細は、図６を用いて後述する。その後、処理はステップＳ１０７へ進む。
【００３６】
ステップＳ１０７およびステップＳ１０８では、タイマー設定された処理がある場合に、当該処理が実行される。メイン処理を実行するコアは、現在時刻を確認し、タイマー設定されたタスクがある場合には（ステップＳ１０７）、当該タスクを処理する（ステップＳ１０８）。その後、処理はステップＳ１０１へ戻る。即ち、本フローチャートに示された処理は、ネットワーク監視装置２０が起動している間、繰り返し実行される。
【００３７】
図５は、本実施形態において、コア毎に実行される受信パケット処理の流れの概要を示すフローチャートである。先述の通り、判定部２４、解析部２５および依頼情報記録部２６は、コア毎に用意されており、本実施形態に係る受信パケット処理は、受信パケットがコアに振り分けられる毎に、振り分けを受けたコアによって実行される（図４のステップＳ１０４）。即ち、本実施形態では、パケットが受信される毎に何れかのコアの判定部２４等が呼び出されることで、複数のパケットが複数のコアによって同時に処理される。
【００３８】
ステップＳ２０１からステップＳ２０３では、受信パケットが参照され、自コアが担当するコネクションのパケットであるか否か、および、コア変更が必要なパケットであるか否か、が判定される。判定部２４は、振分部から通知されたＲＡＭ１３上のアドレスを参照することで、自コアに振り分けられたパケットを参照する（ステップＳ２０１）。そして、判定部２４は、パケット中の送信元／宛先ＩＰアドレス、送信元／宛先ポート番号およびプロトコル番号と同じ情報が記録されたコネクション情報を、コネクション情報管理
キューから索出する（ステップＳ２０２）。索出されたコネクション情報に記録されている担当コアＩＤが自コアのＩＤである場合、振り分けられたパケットは、自コアが担当するコネクションのパケットであると判定され、処理はステップＳ２０７へ進む。
【００３９】
一方、対応するコネクション情報が索出されなかったか、または索出されたコネクション情報に記録されている担当コアＩＤが他のコアのＩＤであった場合、判定部２４は、当該パケットが、処理担当コアを変更すべきパケットであるか否かを判定する（ステップＳ２０３）。なお、本実施形態において、振分ユニット２２は５−ｔｕｐｌｅに基づいて振り分け先のコアを決定するため、通常、索出されたコネクション情報に記録されている担当コアＩＤが他のコアのＩＤであるような状態にはならない。また、処理担当コアを変更すべきパケットであるか否かを判定する際の具体的な判定基準については、判定部２４の説明において先述した通りである。当該パケットが、処理担当コアを変更すべきパケットであると判定された場合、処理はステップＳ２０４へ進む。一方、当該パケットが、処理担当コアを変更すべきパケットであると判定されなかった場合、処理はステップＳ２０６へ進む。
【００４０】
ステップＳ２０４およびステップＳ２０５では、受信パケットの処理担当コアの変更依頼が行われる。判定部２４は、処理担当コアを変更すべきであると判定されたパケットのアドレス（ＲＡＭ１３におけるアドレス）を、コア変更対象パケットキュー（コア変更パケットキューとは異なる）にキューイングすることで、依頼情報記録部２６に対して、パケットの処理担当コアの変更を依頼する（ステップＳ２０４）。
【００４１】
依頼情報記録部２６は、コア変更対象パケットキューにパケットのアドレスがキューイングされている場合に、コネクション情報を参照することで、パケットを解析するのに適切な他のコア（変更先コア）を特定し、変更先コアによって参照されるコア変更パケットキューにパケットのアドレスをキューイングし、変更先コアによって参照されるタスクキューに変更依頼をキューイングする（ステップＳ２０５）。即ち、本実施形態に係るネットワーク監視装置２０では、過去に当該通信を解析したコアを探しだし（ステップＳ２０２およびステップＳ２０３）、存在する場合は、受信パケット処理を担うコアを変更し（ステップＳ２０４およびステップＳ２０５）、過去に解析したコアで解析を実施できるようにしている。
【００４２】
ステップＳ２０６では、新規コネクションとしての管理が開始される。管理情報記録部２３は、対応するコネクション情報が索出されず（ステップＳ２０２のＮＯ）、且つ処理担当の変更先となるコアも発見されなかった（ステップＳ２０３のＮＯ）パケットを、新規コネクションに係るパケットであると判断し、コネクション情報管理キューに新規コネクション情報を登録する。その後、処理はステップＳ２０７へ進む。
【００４３】
ステップＳ２０７では、パケットが解析される。解析部２５は、振分部から通知されたＲＡＭ１３上のアドレスを参照することで、自コアに振り分けられたパケット、および自コアのみがアクセスする解析情報テーブルを参照し、パケットの解析を行う。解析は、具体的には、予め定義されたプロトコルのデータパターンや既知の攻撃パターンとの比較等によって行われてよい。但し、解析の具体的な内容および手法は、本開示における例示に限定されない。また、解析部２５は、解析の結果得られた情報に従って、解析情報テーブルを更新する。その後、処理はステップＳ２０８へ進む。
【００４４】
ステップＳ２０８では、コネクション情報管理キューが更新される。パケットの解析が終了すると、管理情報記録部２３は、解析の結果得られた情報に従って、コネクション情報管理キュー中の、当該パケットが属するコネクションのコネクション情報を更新する。その後、処理はステップＳ２０９へ進む。
【００４５】
ステップＳ２０９では、パケットの送信依頼が行われる。解析部２５は、解析の終了したパケットのＲＡＭ１３上のアドレスを送信キューにキューイングすることで、パケットの送信依頼を行う。送信キューにキューイングされたパケットは、先述したステップＳ１０１およびステップＳ１０２の処理（図４を参照）でネットワークに送出される。その後、本フローチャートに示された処理は終了する。
【００４６】
図６は、本実施形態において、コア毎に実行される変更パケット処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、受信パケット処理のステップＳ２０５においてタスクキューにキューイングされた変更依頼が、メイン処理のステップＳ１０５で確認されたことを契機として実行される。即ち、本フローチャートは、図４のステップＳ１０６に示された処理を詳細に説明するものである。
【００４７】
ステップＳ３０１では、変更パケットが参照され、対応するコネクション情報が取得される。特定部２７は、タスクキューにキューイングされた変更依頼を確認すると、自コアに割り当てられたコア変更パケットキューにキューイングされたＲＡＭ１３上のアドレスを参照することで、自コア宛に変更依頼されたパケットを特定する（ステップＳ３０１）。そして、判定部２４は、パケット中の送信元／宛先ＩＰアドレス、送信元／宛先ポート番号およびプロトコル番号と同じ情報が記録されたコネクション情報を、コネクション情報管理キューから索出する（ステップＳ３０２）。その後、処理はステップＳ３０３へ進む。
【００４８】
ステップＳ３０３では、パケットが解析される。解析部２５は、ステップＳ３０２で取得されたＲＡＭ１３上のアドレスを参照することで、自コアに振り分けられたパケット、および自コアのみがアクセスする解析情報テーブルを参照し、パケットの解析を行う。具体的な解析の方法等については、ステップＳ２０７で説明した内容と同様であるため、説明を省略する。その後、処理はステップＳ３０４へ進む。
【００４９】
ステップＳ３０４およびステップＳ３０５では、コネクション情報管理キューが更新され、パケットの送信依頼が行われる。具体的な更新および送信依頼の処理内容については、ステップＳ２０８およびステップＳ２０９で説明した内容と同様であるため、説明を省略する。その後、本フローチャートに示された処理は終了する。
【００５０】
＜実施例１：ＦＴＰ処理を行うコネクション＞
ここで、ＦＴＰのためのコネクションが、本実施形態に係るネットワーク監視装置２０によって処理される場合の実施例を、図７から図９を参照しながら説明する。
【００５１】
図７は、本実施形態において、ＦＴＰの制御コネクションが確立する様子を示す図である。はじめに、ＦＴＰクライアントからＦＴＰサーバー（ポート：２０）へのＦＴＰ接続パケットが通信取得部２１によって取得されると、振分ユニット２２は、５−ｔｕｐｌｅに基づいて何れかのコア（図７に示した例では、コア１）にパケットを振り分ける。そして、判定部２４．１は、コネクション情報管理キューを参照して（要排他制御）、コア変更の必要があるか否かを確認する。ここではコア変更の必要はないため、処理は解析部２５．１に渡される。パケットは、解析部２５．１によって解析された後、ＦＴＰサーバーへ送信される。ここで、当該コネクションに係るコネクション情報がコネクション情報管理キューに作成される。その後、ＦＴＰサーバーから送信されたＦＴＰクライアントへの応答パケットが取得されるが、５−ｔｕｐｌｅが同じであるため、振分ユニット２２は応答パケットをコア１へ振り分け、コア１が処理を行う。ここで、ＦＴＰの制御コネクションが確立される。
【００５２】
図８は、本実施形態において、制御コネクションにてデータコネクション情報（通信用のポート番号）のネゴシエーションが実施される様子を示す図である。はじめに、ＦＴＰサーバーは、ＦＴＰクライアントから送信されたファイル取得依頼を受けて、データコネクションを確立する。ここで、コネクション情報管理キューは、５−ｔｕｐｌｅを用いてコネクション情報を管理しており、更に、ＦＴＰの制御コネクション情報とデータコネクション情報を関連付け、処理中のコア番号情報等を保持する。
【００５３】
図９は、本実施形態において、データコネクションの確立処理がコア２に振り分けられた場合に、担当コアが変更される様子を示す図である。ＦＴＰサーバーからＦＴＰクライアントの指定されたポート（データコネクション）に対してファイルのパケットが送信されると、振分ユニット２２は、５−ｔｕｐｌｅに基づいて振り分け先のコアを決定する。ここでは、図７の時点とポート番号が異なるため、パケットの処理は異なるコア（例えば、コア２）へ振り分けられる。すると、判定部２４．２はコネクション情報管理キューを参照して（要排他制御）、コア変更の必要があると判定し、コア変更対象パケットキューへ受信パケットをキューイングする。そして、依頼情報記録部２６．２は、必要なパケットをまとめて、コア１のコア変更パケットキューへキューイングし、更に、コア１のタスクキューへ変更依頼をキューイング（コア１へコア変更を依頼）する。コア１は、タスクキューに変更依頼の存在を検知し、コア１のコア変更パケットキューからコア変更パケットを取得し（要排他制御）、コア１で解析後、ＦＴＰクライアントへ送信する。
【００５４】
＜実施例２：アドレス変換処理を行うコネクション＞
次に、アドレス変換処理を行うコネクションが、本実施形態に係るネットワーク監視装置２０によって処理される場合の実施例を説明する。なお、この実施例は、ネットワーク監視装置２０がルータ等に内包されており、アドレス変換を行う装置である場合の実施例である。
【００５５】
はじめに、端末（ＩＰアドレス：Ａ）からサーバー（ＩＰアドレス：Ｘ）へのパケットが通信取得部２１によって取得されると、振分ユニット２２は、５−ｔｕｐｌｅに基づいて何れかのコア（ここでは、コア１とする）にパケットを振り分ける。そして、判定部２４．１は、コネクション情報管理キューを参照して（要排他制御）、コア変更の必要があるか否かを確認する。ここではコア変更の必要はないため、処理は解析部２５．１に渡される。パケットは、解析部２５．１によって解析された後、アドレス変換（サーバーのアドレスをＸからＹへ変換）され、サーバーへ送信される。ここで、コネクション情報管理キューは、５−ｔｕｐｌｅを用いてコネクション情報を管理しており、更に、アドレス変換前後のコネクション情報を関連付け、処理中のコア番号情報等を保持する。
【００５６】
その後、サーバー（ＩＰアドレス：Ｙ）から送信された端末（ＩＰアドレス：Ａ）へのパケットが取得されると、振分ユニット２２は、５−ｔｕｐｌｅに基づいて振り分け先のコアを決定する。ここでは、前回のパケットとサーバーのアドレスが異なるため、パケットの処理は異なるコア（例えば、コア２）へ振り分けられる。すると、判定部２４．２はコネクション情報管理キューを参照して（要排他制御）、コア変更の必要があると判定し、コア変更対象パケットキューへ受信パケットをキューイングする。そして、依頼情報記録部２６．２は、必要なパケットをまとめて、コア１のコア変更パケットキューへキューイングし、更に、コア１のタスクキューへ変更依頼をキューイング（コア１へコア変更を依頼）する。コア１は、タスクキューに変更依頼の存在を検知し、コア１のコア変更パケットキューからコア変更パケットを取得し（要排他制御）、コア１で解析後、アドレス変換（サーバーのアドレスＹからＸへ変換）を行い、端末へ送信する。
【００５７】
＜バリエーション＞
上記実施形態では、ネットワーク監視装置２０が、スイッチまたはルータと、その上位
にある他のスイッチまたはルータと、の間に接続されることでノード９０によって送受信されるパケットやフレーム等を取得し、遮断しなくてもよいパケットについては転送するインラインモードで動作する例について説明した（図１を参照）。但し、上記実施形態に示したネットワーク構成は、本開示を実施するための一例であり、実施にあたってはその他のネットワーク構成が採用されてもよい。
【００５８】
例えば、ネットワーク監視装置２０は、スイッチまたはルータ（図１に示した例では、ルータ１０）のモニタリングポート（ミラーポート）に接続されることで、ノード９０によって送受信されるパケットやフレーム等を取得してもよい（図１０を参照）。この場合、ネットワーク監視装置２０は、取得したパケットを転送しないパッシブモードで動作する。また、例えば、ネットワーク監視装置２０は、モニタリングポート（ミラーポート）に接続されず、単にネットワークセグメント２に接続されている場合であっても、ネットワークセグメント２を流れるフレームを、自身のＭＡＣアドレス宛でないものも含めて全て取得することで、ノード９０によって送受信されるパケットやフレーム等を取得することが出来る。この場合も、ネットワーク監視装置２０は、パッシブモードで動作する。また、例えば、ネットワーク監視装置２０は、ルータまたはスイッチに内包されてもよい。
【００５９】
＜効果＞
本実施形態に係る情報処理装置、方法およびプログラムによれば、複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することが可能となる。また、本実施形態に係る制御によれば、各コアが、自コアのみがアクセスする解析情報テーブルを持つことが出来るため、メモリ上の解析情報が記録された領域を排他制御することなく、各コアに振り分けてパケットを処理させることが出来る。
【符号の説明】
【００６０】
１  システム
２０  ネットワーク監視装置
９０  ノード
【要約】
【課題】複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することを課題とする。
【解決手段】受信されたパケットの解析が複数のコアに振り分けられる情報処理装置において、コアの夫々が、振り分けられたパケットを解析するコアとして適切であるか否かを判定し、適切でないと判定された場合に、当該パケットの解析を他のコアに依頼するための依頼情報を共用メモリに記録することとした。
【選択図】図３【図１】
0005917678.tif 000002
【図２】
0005917678.tif 000003
【図３】
0005917678.tif 000004
【図４】
0005917678.tif 000005
【図５】
0005917678.tif 000006
【図６】
0005917678.tif 000007
【図７】
0005917678.tif 000008
【図８】
0005917678.tif 000009
【図９】
0005917678.tif 000010
【図１０】
0005917678.tif 000011