JP5917678B1 - 情報処理装置、方法およびプログラム - Google Patents

情報処理装置、方法およびプログラム Download PDF

Info

Publication number
JP5917678B1
JP5917678B1 JP2014265805A JP2014265805A JP5917678B1 JP 5917678 B1 JP5917678 B1 JP 5917678B1 JP 2014265805 A JP2014265805 A JP 2014265805A JP 2014265805 A JP2014265805 A JP 2014265805A JP 5917678 B1 JP5917678 B1 JP 5917678B1
Authority
JP
Japan
Prior art keywords
packet
processing unit
unit
analyzing
core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014265805A
Other languages
English (en)
Other versions
JP2016127393A (ja
Inventor
逸文 羽藤
逸文 羽藤
康一 山下
康一 山下
和弘 小出
和弘 小出
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PFU Ltd
Original Assignee
PFU Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PFU Ltd filed Critical PFU Ltd
Priority to JP2014265805A priority Critical patent/JP5917678B1/ja
Priority to US14/683,411 priority patent/US9847927B2/en
Priority to CN201510456016.8A priority patent/CN106209680B/zh
Application granted granted Critical
Publication of JP5917678B1 publication Critical patent/JP5917678B1/ja
Publication of JP2016127393A publication Critical patent/JP2016127393A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering

Abstract

【課題】複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することを課題とする。【解決手段】受信されたパケットの解析が複数のコアに振り分けられる情報処理装置において、コアの夫々が、振り分けられたパケットを解析するコアとして適切であるか否かを判定し、適切でないと判定された場合に、当該パケットの解析を他のコアに依頼するための依頼情報を共用メモリに記録することとした。【選択図】図3

Description

本開示は、複数のコアに受信パケットを振り分けて処理するための技術に関する。
従来、複数の独立したネットワークサービスプロセッサとして、プロセッサによって並行に実行されるワークを、ワークのタグに基づいて、ワークの実行が順序づけされ且つ同期化されるように、動的にスケジューリングするネットワークサービスプロセッサが提案されている(特許文献1を参照)。
また、複数のコネクションを複数のコアで処理するために、ポート番号を書き換える技術が提案されている(特許文献2を参照)。
特表2008−512950号公報 米国特許出願公開第2010/0322252号明細書
従来、ネットワーク装置にマルチコアCPUを搭載し、受信されたパケットを夫々のコアに振り分けて処理することで、処理負荷を分散し、処理を高速化する技術が存在する。しかし、同じセッションに属するパケットであっても、以前と異なるコアに振り分けられてしまうことが生じ得る。例えば、同じセッション(1つのことを行うための複数のコネクションからなるコネクション群)に属する通信であっても、送信元/宛先IPアドレス、プロトコル、送信元/宛先ポート番号(所謂5−tuple)が異なるコネクションが含まれる場合があり、この場合、夫々のコアへの振り分けを行うユニットが、パケットが属するセッションを認識できず、パケットを以前と異なるコアに振り分けてしまうことがある。この場合、振り分けを受けたコアは、以前に同セッションに関連するコネクションを解析した際の情報を持っていないため、他のコアが管理するメモリ領域、またはコア間で共通に管理するメモリ領域から情報を入手する必要がある。この場合、このメモリ領域を他のコアと排他制御する必要が生じ、処理速度が低下し得る。
本開示は、上記した問題に鑑み、複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することを課題とする。
本開示の一例は、並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有されるメモリと、受信されたパケットに含まれる情報に基づいて該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置であって、前記複数の処理ユニットの夫々は、前記メモリに、通信コネクションと、該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報を記録する管理情報記録手段と、前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定手段と、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析手段と、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理
ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録手段と、前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定手段と、を備え、前記解析手段は、更に、前記特定手段によって特定されたパケットを解析する、情報処理装置である。
本開示は、情報処理装置、システム、コンピューターによって実行される方法またはコンピューターに実行させるプログラムとして把握することが可能である。また、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
本開示によれば、複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することが可能となる。
実施形態に係るシステムの構成を示す概略図である。 実施形態に係るネットワーク監視装置のハードウェア構成を示す図である。 実施形態に係るネットワーク監視装置の機能構成の概略を示す図である。 実施形態に係る、メイン処理の流れの概要を示すフローチャートである。 実施形態に係る、受信パケット処理の流れの概要を示すフローチャートである。 実施形態に係る、変更パケット処理の流れの概要を示すフローチャートである。 実施形態において、コア1にてFTPの制御コネクションが確立する様子を示す図である。 実施形態において、制御コネクションにてデータコネクション情報のネゴシエーションが実施される様子を示す図である。 実施形態において、データコネクションの確立処理がコア2に振り分けられた場合に、担当コアが変更される様子を示す図である。 実施形態に係るシステムの構成のバリエーションを示す概略図である。
以下、本開示に係る情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係る情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
本実施形態では、本開示に係る情報処理装置、方法およびプログラムを、ネットワークを監視するためのシステムにおいて実施した場合の実施の形態について説明する。但し、本開示に係る情報処理装置、方法およびプログラムは、複数のコアに受信パケットを振り分けて処理するための技術について広く用いることが可能であり、本開示の適用対象は、本実施形態において示した例に限定されない。
<システムの構成>
図1は、本実施形態に係るシステム1の構成を示す概略図である。本実施形態に係るシステム1は、複数の情報処理端末90(以下、「ノード90」と称する)が接続されるネットワークセグメント2と、ノード90に係る通信を監視するためのネットワーク監視装
置20と、を備える。また、ネットワークセグメント2内のノード90は、インターネットや広域ネットワークを介して遠隔地において接続された各種のサーバーと、ルータ10を介して通信可能である。本実施形態において、ネットワーク監視装置20は、ネットワークセグメント2のスイッチまたはルータ(図1に示した例では、ルータ10)と、その上位にある他のスイッチまたはルータと、の間に接続されることで、通過するパケットやフレーム等を取得する。この場合、ネットワーク監視装置20は、取得したパケットのうち、遮断しなくてもよいパケットについては転送するインラインモードで動作する。
図2は、本実施形態に係るネットワーク監視装置20のハードウェア構成を示す図である。なお、図2においては、ネットワーク監視装置20以外の構成(ルータ10、ノード90等)については、図示を省略している。ネットワーク監視装置20は、CPU(Central Processing Unit)11、RAM(Random Access Memory)13、ROM(Read Only Memory)12、EEPROM(Electrically Erasable and Programmable Read Only Memory)やHDD(Hard Disk Drive)等の記憶装置14、NIC(Network Interface Card)15等の通信ユニット、等を備えるコンピューターである。
ここで、CPU11は、複数のコア(処理ユニット)を有するマルチコアCPUである。本実施形態においては、2コア(コア1およびコア2)のCPUを例示して説明するが、コア数は本開示における例に限定されない。また、RAM13は、これらの複数のコアによって共有される。このため、RAM13の領域のうち、複数のコアからアクセスされ得る領域については、排他制御が必要である。
図3は、本実施形態に係るネットワーク監視装置20の機能構成の概略を示す図である。ネットワーク監視装置20は、記憶装置14に記録されているプログラムが、RAM13に読み出され、CPU11によって実行されることで、通信取得部21、振分ユニット22、管理情報記録部23、判定部24.1、24.2(何れか1の判定部を指す場合は、単に「判定部24」と記載する)、解析部25.1、25.2(何れか1の解析部を指す場合は、単に「解析部25」と記載する)、依頼情報記録部26.1、26.2(何れか1の依頼情報記録部を指す場合は、単に「依頼情報記録部26」と記載する)および特定部27.1、27.2(何れか1の特定部を指す場合は、単に「特定部27」と記載する)を備える情報処理装置として機能する。なお、本実施形態では、ネットワーク監視装置20の備える各機能は、汎用プロセッサであるCPU11によって実行されるが、これらの機能の一部または全部は、1または複数の専用プロセッサによって実行されてもよい。また、これらの機能の一部または全部は、クラウド技術等を用いて、遠隔値に設置された装置や、分散設置された複数の装置によって実行されてもよい。
NIC15は、通信取得部21および振分ユニット22として機能する。
通信取得部21は、ネットワークに接続された端末によって送受信されるパケットを取得し、取得されたパケットをRAM13に記録する。なお、本実施形態において、ネットワーク監視装置20による監視および検知の対象となる「端末」には、ネットワークセグメント2に接続されたノード90の他、ノード90とルータ10を介して通信するその他の装置(他のネットワークに属するノードや外部サーバー等)が含まれる。
振分ユニット22は、受信されたパケットに含まれる情報に基づいて、受信パケットの解析を何れかのコアに振り分ける。振分ユニット22は、受信されたパケットに含まれる送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号(所謂5−tuple)の少なくとも何れかを含む情報を種としてハッシュ演算した結
果に従って、パケットを振り分けるコアを決定する。そして、振分部は、RAM13に記録されたパケットのアドレスを何れかのコアに通知することで、パケットを振り分ける。全てのパケットに対して同じアルゴリズムのハッシュ演算が適用されるため、同じ5−tupleを有するパケットは、同じコアに振り分けられる。このようにすることで、夫々のコアは、自コアが排他制御することなくアクセス可能な領域の解析情報テーブルを参照することで、同じコネクションに属するパケットを解析することが出来る。但し、振り分け方法に5−tupleを種とするハッシュ演算を用いるのは一例であり、振り分けに用いるアルゴリズムには、その他のアルゴリズムが採用されてもよい。
管理情報記録部23は、RAM13に、通信コネクションと、該通信コネクションに係るパケットの解析を担当するコアとの関係を把握可能な管理情報(コネクション情報)を、コネクション情報管理キューに記録することで、コネクション情報を管理する。本実施形態では、コネクション情報として、当該コネクションに属するパケットの解析を担当するコアのコアIDに関連付けて、当該コネクションの送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号が管理される。なお、コネクション情報管理キューは、複数のコアからアクセスされるコア間共通領域であるため、コア間で排他制御が必要である。
並列動作可能な複数のコアの夫々は、RAM13に展開されたプログラムを実行することで、判定部24、解析部25、依頼情報記録部26および特定部27として機能する。そして、本実施形態では、複数のコアが同時に動作することで、複数のパケットが並列的に処理される。夫々のコアは、他のコアの状態に拘らず、当該コアが担当するコネクションに属するパケットが受信される毎に、振分ユニット22による振り分けを受けてパケットを解析する。
判定部24は、コネクション情報を参照することで、自コアが、振分ユニット22によって振り分けられたパケットを解析するコアとして適切であるか否かを判定する。具体的には、当該パケットが(1)アドレス変換後のコネクションに属するパケット、(2)親子関係があるコネクションに属するパケット、および(3)ICMPのエラーパケットの何れかである場合、判定部24は、当該パケットを、処理担当コアを変更すべきパケットであると判定する。
(1)アドレス変換後のコネクションに属するパケット
アドレス変換(IPアドレスまたはポート番号をネットワーク監視装置20で受信し、送信する際に付け替える必要があるコネクション)を扱うコネクションでは、本装置でアドレス変換したコネクションの戻りパケットは、5−tupleコア振り分け方式では、アドレス変換前のコネクションを処理したコアと異なるコアに振り分けされ得る。このため、他のコアが担当するコネクションに属するパケットであるが、アドレス変換によって送信元/宛先IPアドレスおよび送信元/宛先ポート番号の何れかが変更された結果、異なるコアに振り分けられたパケットである場合には、アドレス変換前と変換後のコネクションを同一コアで処理できるように、担当コアの変更を行う。即ち、判定部24は、コネクション情報管理キューを参照し、アドレス変換の対象となる前に該コネクションのパケット解析を他のコアが担当したことを示すコネクション情報が記録されている場合に、自コアが、パケットを解析するコアとして適切でないと判定する。
(2)親子関係があるコネクションに属するパケット
FTPの制御コネクション(親)と、FTPのデータコネクション(子)のように、親子関係がある複数のコネクションがある場合、これらの複数のコネクションに係るパケットを同一コアで処理できるように、コア変更が行われる。ファイル転送を開始すると、実際のデータ通信は制御コネクションとは別のコネクションであるため、少なくとも5−t
upleのうちポート番号が別の番号となり、別のコアへ振り分けされてしまう。他のコアが担当するコネクションと親子関係にあるコネクションに属するパケットである場合、子のコネクションは親のコネクションを処理しているコアへ変更を行う。即ち、判定部24は、コネクション情報管理キューを参照し、パケットが属するコネクションに関連する(例えば、親子関係にある)他のコネクションのパケット解析を、他のコアが担当したことを示すコネクション情報が記録されている場合に、自コアが、パケットを解析するコアとして適切でないと判定する。
(3)ICMPのエラーパケット
ICMPのエラーパケット(応答パケット時)については、パケットに含まれるオリジナルパケット(要求パケット時)の仮想ICMPコネクションを処理したコアへ変更する。即ち、判定部24は、コネクション情報管理キューを参照し、パケットが、以前に送受信されたパケットを内包しており、内包されているパケットの解析を他のコアが担当したことを示すコネクション情報が記録されている場合に、自コアが、パケットを解析するコアとして適切でないと判定する。
また、判定部24は、処理担当コアを変更すべきであると判定されたパケットのアドレス(RAM13におけるアドレス)を、コア変更対象パケットキューにキューイングすることで、依頼情報記録部26に対して、パケットの処理担当コアの変更を依頼する。ここで、コア変更対象パケットキューは、当該判定部24を実行するコアのみからアクセスされるコア内領域であるため、コア間での排他制御は不要である。
解析部25は、自コアが、振分ユニット22によって振り分けられたパケットを解析するコアとして適切であると判断された場合に、該パケットを解析する。また、解析部25は、他のコアから自コア宛に発行された変更依頼に係るパケットであって、後述する特定部27によって特定されたパケットを解析する。解析部25は、解析情報テーブルを参照しながらパケットの解析を行い、また、解析の結果についても解析情報テーブルに記録する。ここで、解析情報テーブルは、当該解析部25を実行するコアのみからアクセスされるコア内領域であるため、コア間での排他制御は不要である。
本実施形態では、振分ユニット22によって、同一コネクションの以前のパケットを解析したコアにパケットが振り分けられ、また、振分ユニット22による振り分けに誤りがあった場合にも、判定部24および依頼情報記録部26等によって処理担当が適切なコアに変更されるため、解析部25は、他のコアの解析情報テーブルを参照することなく、当該解析部25を実行するコアからのみアクセスされる解析情報テーブルを参照して、パケットの解析を行うことが出来る。
依頼情報記録部26は、自コアが、振分ユニット22によって振り分けられたパケットを解析するコアとして適切でないと判定された場合に、該パケットの解析を他のコアに依頼するための依頼情報(変更依頼およびパケットのアドレス)を、RAM13上に用意されたキューに記録する。具体的には、依頼情報記録部26は、コネクション情報を参照することで、パケットを解析するのに適切な他のコア(変更先コア)を特定し、変更先コアによって参照されるコア変更パケットキュー(コア変更対象パケットキューとは異なる)にパケットのアドレスをキューイングし、変更先コアによって参照されるタスクキューに変更依頼をキューイングする。なお、コア変更パケットキューは、複数のコアからアクセスされるコア間共通領域であるため、コア間で排他制御が必要である。
特定部27は、RAM13上のコア変更パケットキューを参照することで、自コア宛の変更依頼に係るパケットを特定する。
<処理の流れ>
次に、本実施形態に係るシステム1によって実行される処理の流れを、フローチャートを用いて説明する。なお、以下に説明するフローチャートに示された処理の具体的な内容および処理順序は、本開示を実施するための一例である。具体的な処理内容および処理順序は、本開示の実施の形態に応じて適宜選択されてよい。
図4は、本実施形態において、コア毎に実行されるメイン処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、ネットワーク監視装置20の起動後、夫々のコアによって繰り返し実行される。
ステップS101およびステップS102では、送信パケットがある場合に、パケットの送信処理が行われる。メイン処理を実行するコアは、RAM13上の送信パケットキュー(図示は省略する)を確認し、ここに送信パケットがキューイングされている場合には(ステップS101)、当該送信パケットを、NIC15を介してネットワークに送出する(ステップS102)。その後、処理はステップS103へ進む。
ステップS103およびステップS104では、受信パケットがある場合に、受信パケット処理が行われる。メイン処理を実行するコアは、RAM13上の受信パケットキューを確認し、ここに受信パケットがキューイングされている場合には(ステップS103)、当該受信パケットを解析する(ステップS104)。受信パケット処理の詳細は、図5を用いて後述する。その後、処理はステップS105へ進む。
ステップS105およびステップS106では、当該コアが処理すべきタスクがある場合に、タスクが処理される。メイン処理を実行するコアは、自コアのタスクキューを確認し、ここにタスクがキューイングされている場合には(ステップS105)、当該タスクを処理する(ステップS106)。なお、本実施形態では、他のコアによって発行されたパケット処理担当コアの変更依頼がタスクキューにキューイングされている場合に、変更依頼に係る受信パケット処理を行うことについて説明する。他のコアから依頼されて行う受信パケット処理の詳細は、図6を用いて後述する。その後、処理はステップS107へ進む。
ステップS107およびステップS108では、タイマー設定された処理がある場合に、当該処理が実行される。メイン処理を実行するコアは、現在時刻を確認し、タイマー設定されたタスクがある場合には(ステップS107)、当該タスクを処理する(ステップS108)。その後、処理はステップS101へ戻る。即ち、本フローチャートに示された処理は、ネットワーク監視装置20が起動している間、繰り返し実行される。
図5は、本実施形態において、コア毎に実行される受信パケット処理の流れの概要を示すフローチャートである。先述の通り、判定部24、解析部25および依頼情報記録部26は、コア毎に用意されており、本実施形態に係る受信パケット処理は、受信パケットがコアに振り分けられる毎に、振り分けを受けたコアによって実行される(図4のステップS104)。即ち、本実施形態では、パケットが受信される毎に何れかのコアの判定部24等が呼び出されることで、複数のパケットが複数のコアによって同時に処理される。
ステップS201からステップS203では、受信パケットが参照され、自コアが担当するコネクションのパケットであるか否か、および、コア変更が必要なパケットであるか否か、が判定される。判定部24は、振分部から通知されたRAM13上のアドレスを参照することで、自コアに振り分けられたパケットを参照する(ステップS201)。そして、判定部24は、パケット中の送信元/宛先IPアドレス、送信元/宛先ポート番号およびプロトコル番号と同じ情報が記録されたコネクション情報を、コネクション情報管理
キューから索出する(ステップS202)。索出されたコネクション情報に記録されている担当コアIDが自コアのIDである場合、振り分けられたパケットは、自コアが担当するコネクションのパケットであると判定され、処理はステップS207へ進む。
一方、対応するコネクション情報が索出されなかったか、または索出されたコネクション情報に記録されている担当コアIDが他のコアのIDであった場合、判定部24は、当該パケットが、処理担当コアを変更すべきパケットであるか否かを判定する(ステップS203)。なお、本実施形態において、振分ユニット22は5−tupleに基づいて振り分け先のコアを決定するため、通常、索出されたコネクション情報に記録されている担当コアIDが他のコアのIDであるような状態にはならない。また、処理担当コアを変更すべきパケットであるか否かを判定する際の具体的な判定基準については、判定部24の説明において先述した通りである。当該パケットが、処理担当コアを変更すべきパケットであると判定された場合、処理はステップS204へ進む。一方、当該パケットが、処理担当コアを変更すべきパケットであると判定されなかった場合、処理はステップS206へ進む。
ステップS204およびステップS205では、受信パケットの処理担当コアの変更依頼が行われる。判定部24は、処理担当コアを変更すべきであると判定されたパケットのアドレス(RAM13におけるアドレス)を、コア変更対象パケットキュー(コア変更パケットキューとは異なる)にキューイングすることで、依頼情報記録部26に対して、パケットの処理担当コアの変更を依頼する(ステップS204)。
依頼情報記録部26は、コア変更対象パケットキューにパケットのアドレスがキューイングされている場合に、コネクション情報を参照することで、パケットを解析するのに適切な他のコア(変更先コア)を特定し、変更先コアによって参照されるコア変更パケットキューにパケットのアドレスをキューイングし、変更先コアによって参照されるタスクキューに変更依頼をキューイングする(ステップS205)。即ち、本実施形態に係るネットワーク監視装置20では、過去に当該通信を解析したコアを探しだし(ステップS202およびステップS203)、存在する場合は、受信パケット処理を担うコアを変更し(ステップS204およびステップS205)、過去に解析したコアで解析を実施できるようにしている。
ステップS206では、新規コネクションとしての管理が開始される。管理情報記録部23は、対応するコネクション情報が索出されず(ステップS202のNO)、且つ処理担当の変更先となるコアも発見されなかった(ステップS203のNO)パケットを、新規コネクションに係るパケットであると判断し、コネクション情報管理キューに新規コネクション情報を登録する。その後、処理はステップS207へ進む。
ステップS207では、パケットが解析される。解析部25は、振分部から通知されたRAM13上のアドレスを参照することで、自コアに振り分けられたパケット、および自コアのみがアクセスする解析情報テーブルを参照し、パケットの解析を行う。解析は、具体的には、予め定義されたプロトコルのデータパターンや既知の攻撃パターンとの比較等によって行われてよい。但し、解析の具体的な内容および手法は、本開示における例示に限定されない。また、解析部25は、解析の結果得られた情報に従って、解析情報テーブルを更新する。その後、処理はステップS208へ進む。
ステップS208では、コネクション情報管理キューが更新される。パケットの解析が終了すると、管理情報記録部23は、解析の結果得られた情報に従って、コネクション情報管理キュー中の、当該パケットが属するコネクションのコネクション情報を更新する。その後、処理はステップS209へ進む。
ステップS209では、パケットの送信依頼が行われる。解析部25は、解析の終了したパケットのRAM13上のアドレスを送信キューにキューイングすることで、パケットの送信依頼を行う。送信キューにキューイングされたパケットは、先述したステップS101およびステップS102の処理(図4を参照)でネットワークに送出される。その後、本フローチャートに示された処理は終了する。
図6は、本実施形態において、コア毎に実行される変更パケット処理の流れの概要を示すフローチャートである。本フローチャートに示された処理は、受信パケット処理のステップS205においてタスクキューにキューイングされた変更依頼が、メイン処理のステップS105で確認されたことを契機として実行される。即ち、本フローチャートは、図4のステップS106に示された処理を詳細に説明するものである。
ステップS301では、変更パケットが参照され、対応するコネクション情報が取得される。特定部27は、タスクキューにキューイングされた変更依頼を確認すると、自コアに割り当てられたコア変更パケットキューにキューイングされたRAM13上のアドレスを参照することで、自コア宛に変更依頼されたパケットを特定する(ステップS301)。そして、判定部24は、パケット中の送信元/宛先IPアドレス、送信元/宛先ポート番号およびプロトコル番号と同じ情報が記録されたコネクション情報を、コネクション情報管理キューから索出する(ステップS302)。その後、処理はステップS303へ進む。
ステップS303では、パケットが解析される。解析部25は、ステップS302で取得されたRAM13上のアドレスを参照することで、自コアに振り分けられたパケット、および自コアのみがアクセスする解析情報テーブルを参照し、パケットの解析を行う。具体的な解析の方法等については、ステップS207で説明した内容と同様であるため、説明を省略する。その後、処理はステップS304へ進む。
ステップS304およびステップS305では、コネクション情報管理キューが更新され、パケットの送信依頼が行われる。具体的な更新および送信依頼の処理内容については、ステップS208およびステップS209で説明した内容と同様であるため、説明を省略する。その後、本フローチャートに示された処理は終了する。
<実施例1:FTP処理を行うコネクション>
ここで、FTPのためのコネクションが、本実施形態に係るネットワーク監視装置20によって処理される場合の実施例を、図7から図9を参照しながら説明する。
図7は、本実施形態において、FTPの制御コネクションが確立する様子を示す図である。はじめに、FTPクライアントからFTPサーバー(ポート:20)へのFTP接続パケットが通信取得部21によって取得されると、振分ユニット22は、5−tupleに基づいて何れかのコア(図7に示した例では、コア1)にパケットを振り分ける。そして、判定部24.1は、コネクション情報管理キューを参照して(要排他制御)、コア変更の必要があるか否かを確認する。ここではコア変更の必要はないため、処理は解析部25.1に渡される。パケットは、解析部25.1によって解析された後、FTPサーバーへ送信される。ここで、当該コネクションに係るコネクション情報がコネクション情報管理キューに作成される。その後、FTPサーバーから送信されたFTPクライアントへの応答パケットが取得されるが、5−tupleが同じであるため、振分ユニット22は応答パケットをコア1へ振り分け、コア1が処理を行う。ここで、FTPの制御コネクションが確立される。
図8は、本実施形態において、制御コネクションにてデータコネクション情報(通信用のポート番号)のネゴシエーションが実施される様子を示す図である。はじめに、FTPサーバーは、FTPクライアントから送信されたファイル取得依頼を受けて、データコネクションを確立する。ここで、コネクション情報管理キューは、5−tupleを用いてコネクション情報を管理しており、更に、FTPの制御コネクション情報とデータコネクション情報を関連付け、処理中のコア番号情報等を保持する。
図9は、本実施形態において、データコネクションの確立処理がコア2に振り分けられた場合に、担当コアが変更される様子を示す図である。FTPサーバーからFTPクライアントの指定されたポート(データコネクション)に対してファイルのパケットが送信されると、振分ユニット22は、5−tupleに基づいて振り分け先のコアを決定する。ここでは、図7の時点とポート番号が異なるため、パケットの処理は異なるコア(例えば、コア2)へ振り分けられる。すると、判定部24.2はコネクション情報管理キューを参照して(要排他制御)、コア変更の必要があると判定し、コア変更対象パケットキューへ受信パケットをキューイングする。そして、依頼情報記録部26.2は、必要なパケットをまとめて、コア1のコア変更パケットキューへキューイングし、更に、コア1のタスクキューへ変更依頼をキューイング(コア1へコア変更を依頼)する。コア1は、タスクキューに変更依頼の存在を検知し、コア1のコア変更パケットキューからコア変更パケットを取得し(要排他制御)、コア1で解析後、FTPクライアントへ送信する。
<実施例2:アドレス変換処理を行うコネクション>
次に、アドレス変換処理を行うコネクションが、本実施形態に係るネットワーク監視装置20によって処理される場合の実施例を説明する。なお、この実施例は、ネットワーク監視装置20がルータ等に内包されており、アドレス変換を行う装置である場合の実施例である。
はじめに、端末(IPアドレス:A)からサーバー(IPアドレス:X)へのパケットが通信取得部21によって取得されると、振分ユニット22は、5−tupleに基づいて何れかのコア(ここでは、コア1とする)にパケットを振り分ける。そして、判定部24.1は、コネクション情報管理キューを参照して(要排他制御)、コア変更の必要があるか否かを確認する。ここではコア変更の必要はないため、処理は解析部25.1に渡される。パケットは、解析部25.1によって解析された後、アドレス変換(サーバーのアドレスをXからYへ変換)され、サーバーへ送信される。ここで、コネクション情報管理キューは、5−tupleを用いてコネクション情報を管理しており、更に、アドレス変換前後のコネクション情報を関連付け、処理中のコア番号情報等を保持する。
その後、サーバー(IPアドレス:Y)から送信された端末(IPアドレス:A)へのパケットが取得されると、振分ユニット22は、5−tupleに基づいて振り分け先のコアを決定する。ここでは、前回のパケットとサーバーのアドレスが異なるため、パケットの処理は異なるコア(例えば、コア2)へ振り分けられる。すると、判定部24.2はコネクション情報管理キューを参照して(要排他制御)、コア変更の必要があると判定し、コア変更対象パケットキューへ受信パケットをキューイングする。そして、依頼情報記録部26.2は、必要なパケットをまとめて、コア1のコア変更パケットキューへキューイングし、更に、コア1のタスクキューへ変更依頼をキューイング(コア1へコア変更を依頼)する。コア1は、タスクキューに変更依頼の存在を検知し、コア1のコア変更パケットキューからコア変更パケットを取得し(要排他制御)、コア1で解析後、アドレス変換(サーバーのアドレスYからXへ変換)を行い、端末へ送信する。
<バリエーション>
上記実施形態では、ネットワーク監視装置20が、スイッチまたはルータと、その上位
にある他のスイッチまたはルータと、の間に接続されることでノード90によって送受信されるパケットやフレーム等を取得し、遮断しなくてもよいパケットについては転送するインラインモードで動作する例について説明した(図1を参照)。但し、上記実施形態に示したネットワーク構成は、本開示を実施するための一例であり、実施にあたってはその他のネットワーク構成が採用されてもよい。
例えば、ネットワーク監視装置20は、スイッチまたはルータ(図1に示した例では、ルータ10)のモニタリングポート(ミラーポート)に接続されることで、ノード90によって送受信されるパケットやフレーム等を取得してもよい(図10を参照)。この場合、ネットワーク監視装置20は、取得したパケットを転送しないパッシブモードで動作する。また、例えば、ネットワーク監視装置20は、モニタリングポート(ミラーポート)に接続されず、単にネットワークセグメント2に接続されている場合であっても、ネットワークセグメント2を流れるフレームを、自身のMACアドレス宛でないものも含めて全て取得することで、ノード90によって送受信されるパケットやフレーム等を取得することが出来る。この場合も、ネットワーク監視装置20は、パッシブモードで動作する。また、例えば、ネットワーク監視装置20は、ルータまたはスイッチに内包されてもよい。
<効果>
本実施形態に係る情報処理装置、方法およびプログラムによれば、複数のコアに受信パケットを振り分けて処理する場合に、メモリ上の共有領域がロックされる時間を短縮することが可能となる。また、本実施形態に係る制御によれば、各コアが、自コアのみがアクセスする解析情報テーブルを持つことが出来るため、メモリ上の解析情報が記録された領域を排他制御することなく、各コアに振り分けてパケットを処理させることが出来る。
1 システム
20 ネットワーク監視装置
90 ノード

Claims (11)

  1. 並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有され、通信コネクションと該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報が記録されるメモリと、受信されたパケットに含まれる情報に基づいて該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置であって、前記複数の処理ユニットの夫々は
    前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定手段と、
    自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析手段と、
    自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録手段と、
    前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定手段と、を備え、
    前記解析手段は、更に、前記特定手段によって特定されたパケットを解析する、
    情報処理装置。
  2. 前記判定手段は、前記振分ユニットによって振り分けられたパケットが属するコネクションに関連する他のコネクションのパケット解析を、他の処理ユニットが担当することを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
    請求項1に記載の情報処理装置。
  3. 前記判定手段は、前記振分ユニットによって振り分けられたパケットが属するコネクションと親子関係にある他のコネクションのパケット解析を、他の処理ユニットが担当することを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
    請求項2に記載の情報処理装置。
  4. 前記判定手段は、前記振分ユニットによって振り分けられたパケットが属するコネクションがアドレス変換の対象となる前に該コネクションのパケット解析を他の処理ユニットが担当したことを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
    請求項1から3の何れか一項に記載の情報処理装置。
  5. 前記判定手段は、前記振分ユニットによって振り分けられたパケットが、以前に送受信されたパケットを内包しており、内包されているパケットの解析を他の処理ユニットが担当したことを示す管理情報が記録されている場合に、自処理ユニットが、前記パケットを解析する処理ユニットとして適切でないと判定する、
    請求項1から4の何れか一項に記載の情報処理装置。
  6. 前記依頼情報記録手段は、前記メモリ上に用意されたキューに、前記依頼情報を記録する、
    請求項1から5の何れか一項に記載の情報処理装置。
  7. 前記依頼情報記録手段は、前記管理情報を参照することで特定された、前記パケットを解析するのに適切な他の処理ユニットによって参照されるキューに、前記依頼情報を記録する、
    請求項6に記載の情報処理装置。
  8. 前記振分ユニットは、受信されたパケットに含まれる送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号およびプロトコル番号の少なくとも何れかを含む情報をハッシュ演算した結果に従って、前記パケットを振り分ける処理ユニットを決定する、
    請求項1から7の何れか一項に記載の情報処理装置。
  9. ットワークに接続された端末による通信を取得する通信取得ユニットを更に備える、
    請求項1から8の何れか一項に記載の情報処理装置。
  10. 並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有され、通信コネクションと該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報が記録されるメモリと、受信されたパケットに含まれる情報に基づいて該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置において、前記複数の処理ユニットの夫々が
    前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定ステップと、
    自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析ステップと、
    自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録ステップと、
    前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定ステップと、を実行し、
    前記解析ステップでは、更に、前記特定ステップで特定されたパケットが解析される、
    方法。
  11. 並列動作可能な複数の処理ユニットと、該複数の処理ユニットに共有され、通信コネクションと該通信コネクションに係るパケットの解析を担当する処理ユニットとの関係を把握可能な管理情報が記録されるメモリと、受信されたパケットに含まれる情報に基づいて
    該パケットの解析を何れかの処理ユニットに振り分ける振分ユニットと、を有する情報処理装置であって、前記複数の処理ユニットの夫々を
    前記管理情報を参照することで、自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であるか否かを判定する判定手段と、
    自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切であると判断された場合に、該パケットを解析する解析手段と、
    自処理ユニットが、前記振分ユニットによって振り分けられたパケットを解析する処理ユニットとして適切でないと判定された場合に、該パケットの解析を他の処理ユニットに依頼するための依頼情報を、前記メモリに記録する依頼情報記録手段と、
    前記メモリを参照することで、自処理ユニット宛の依頼情報に係るパケットを特定する特定手段と、として機能させ、
    前記解析手段は、更に、前記特定手段によって特定されたパケットを解析する、
    プログラム。
JP2014265805A 2014-12-26 2014-12-26 情報処理装置、方法およびプログラム Active JP5917678B1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014265805A JP5917678B1 (ja) 2014-12-26 2014-12-26 情報処理装置、方法およびプログラム
US14/683,411 US9847927B2 (en) 2014-12-26 2015-04-10 Information processing device, method, and medium
CN201510456016.8A CN106209680B (zh) 2014-12-26 2015-07-29 信息处理装置以及信息处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014265805A JP5917678B1 (ja) 2014-12-26 2014-12-26 情報処理装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP5917678B1 true JP5917678B1 (ja) 2016-05-18
JP2016127393A JP2016127393A (ja) 2016-07-11

Family

ID=55974010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014265805A Active JP5917678B1 (ja) 2014-12-26 2014-12-26 情報処理装置、方法およびプログラム

Country Status (3)

Country Link
US (1) US9847927B2 (ja)
JP (1) JP5917678B1 (ja)
CN (1) CN106209680B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016162266A (ja) * 2015-03-03 2016-09-05 富士通株式会社 通信装置及びそのプロセッサ割当方法
US10554554B2 (en) 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
US10715424B2 (en) * 2016-12-06 2020-07-14 Microsoft Technology Licensing, Llc Network traffic management with queues affinitized to one or more cores
US10826841B2 (en) * 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011096307A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法
WO2012105677A1 (ja) * 2011-02-04 2012-08-09 日本電気株式会社 パケット処理装置、パケット処理方法およびプログラム
JP2013179429A (ja) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> 振分先を切り替える並列パケット処理方法および装置
JP2014175781A (ja) * 2013-03-07 2014-09-22 Hitachi High-Technologies Corp 並列パケット処理装置、方法およびプログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6831893B1 (en) * 2000-04-03 2004-12-14 P-Cube, Ltd. Apparatus and method for wire-speed classification and pre-processing of data packets in a full duplex network
US8301788B2 (en) 2004-09-10 2012-10-30 Cavium, Inc. Deterministic finite automata (DFA) instruction
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7613813B2 (en) 2004-09-10 2009-11-03 Cavium Networks, Inc. Method and apparatus for reducing host overhead in a socket server implementation
US20060059221A1 (en) 2004-09-10 2006-03-16 Cavium Networks Multiply instructions for modular exponentiation
US7606998B2 (en) 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
JP2008512786A (ja) 2004-09-10 2008-04-24 カビウム・ネットワークス データ構造の選択的複製方法および装置
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US8560475B2 (en) 2004-09-10 2013-10-15 Cavium, Inc. Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process
US8392590B2 (en) 2004-09-10 2013-03-05 Cavium, Inc. Deterministic finite automata (DFA) processing
JP4068106B2 (ja) * 2005-08-05 2008-03-26 三菱電機株式会社 リアルタイム組込み簡易モニタプログラム
US8171225B2 (en) * 2007-06-28 2012-05-01 Intel Corporation Cache for a multi thread and multi core system and methods thereof
CN101577705A (zh) * 2008-05-08 2009-11-11 北京东华合创数码科技股份有限公司 一种多核并行的网络业务流负载均衡方法及其系统
CN101610209B (zh) * 2008-11-28 2011-08-03 北京网康科技有限公司 一种多核并行的网络业务流处理方法及设备
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8289975B2 (en) 2009-06-22 2012-10-16 Citrix Systems, Inc. Systems and methods for handling a multi-connection protocol between a client and server traversing a multi-core system
US8811223B2 (en) * 2009-06-22 2014-08-19 Citrix Systems, Inc. Systems and methods for distributing crypto cards to multiple cores
CN103957154B (zh) * 2014-04-11 2017-12-05 国家计算机网络与信息安全管理中心 网络数据包url过滤方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011096307A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法
WO2012105677A1 (ja) * 2011-02-04 2012-08-09 日本電気株式会社 パケット処理装置、パケット処理方法およびプログラム
JP2013179429A (ja) * 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> 振分先を切り替える並列パケット処理方法および装置
JP2014175781A (ja) * 2013-03-07 2014-09-22 Hitachi High-Technologies Corp 並列パケット処理装置、方法およびプログラム

Also Published As

Publication number Publication date
CN106209680A (zh) 2016-12-07
CN106209680B (zh) 2019-12-13
US9847927B2 (en) 2017-12-19
US20160191368A1 (en) 2016-06-30
JP2016127393A (ja) 2016-07-11

Similar Documents

Publication Publication Date Title
CN110247784B (zh) 确定网络拓扑结构的方法和装置
US9473414B2 (en) Method and system for supporting packet prioritization at a data network
JP5610247B2 (ja) ネットワークシステム、及びポリシー経路設定方法
JP2019525600A (ja) クライアント/サーバ間のデータチャネルで使用するためのチャネルデータカプセル化のシステムおよび方法
CN107241186A (zh) 应用签名生成和分发
US9432305B1 (en) Connection redistribution in load-balanced systems
CN108259554A (zh) 网络实体在监视代理之中的动态分配
JP2017507572A (ja) クラウドに基づく仮想オーケストレーターのための方法、システム、およびコンピュータ読取可能な媒体
CN102668467A (zh) 计算机系统和监视计算机系统的方法
JP5917678B1 (ja) 情報処理装置、方法およびプログラム
KR20160042441A (ko) 애플리케이션-인식 네트워크 관리
JP6395867B2 (ja) OpenFlow通信方法及びシステム、制御部、並びにサービスゲートウェイ
WO2016038857A1 (ja) スケール数推定装置、スケール数管理システム、スケール数推定方法、スケール数管理方法、および、記憶媒体
CN113364804B (zh) 一种流量数据的处理方法和装置
EP2916516A1 (en) Packet processing method and apparatus
CN116633934A (zh) 负载均衡方法、装置、节点及存储介质
Raghul et al. Literature survey on traffic-based server load balancing using SDN and open flow
CN113014611A (zh) 一种负载均衡方法及相关设备
CN110609746B (zh) 管理网络系统的方法、设备和计算机可读介质
Kirubandand et al. Hybrid Server With Zigbee Technology Using Job Scheduling And Queuing Petrinet
US9191328B2 (en) Forwarding broadcast traffic to a host environment
US10623319B1 (en) Load rebalancing in a network-based system
Ivanisenko Methods and Algorithms of load balancing
CN112436951A (zh) 一种预知流量路径的方法和装置
JP6347177B2 (ja) 転送装置、制御装置、および、通信方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160406

R150 Certificate of patent or registration of utility model

Ref document number: 5917678

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150