(57)【要約】【課題】トンネリングパケットのインナーヘッダ及びアウターヘッダの対応関係のＤＢへの登録処理の高速化を可能にする。【解決手段】登録装置１０は、カプセル化パケットのインナーヘッダ情報及びアウターヘッダ情報を抽出する抽出部１３１と、インナーヘッダ情報及びアウターヘッダ情報のハッシュ値を、一連のフローの最初のパケットが到着したか否かを示す到着情報をアドレス毎に登録したハッシュテーブルのアドレスとして計算し、ハッシュテーブルを基に、一連のフローの最初のパケットのインナーヘッダ情報及びアウターヘッダ情報を通過させるフィルタ部１３２と、フィルタ部１３２が通過させた最初のパケットのインナーヘッダ情報とアウターヘッダ情報とを対応付けてデータベースに登録する登録部１３３と、を有する。【選択図】図３
2020174257.tif 000002
【特許請求の範囲】
【請求項１】
カプセル化パケットのインナーヘッダ情報及びアウターヘッダ情報を抽出する抽出部と、
前記インナーヘッダ情報及び前記アウターヘッダ情報のハッシュ値を、一連のフローの最初のパケットが到着したか否かを示す到着情報をアドレス毎に登録したハッシュテーブルのアドレスとして計算し、前記ハッシュテーブルを基に、前記一連のフローの最初のパケットのインナーヘッダ情報及びアウターヘッダ情報を通過させるフィルタ部と、
前記フィルタ部が通過させた前記最初のパケットのインナーヘッダ情報とアウターヘッダ情報とを対応付けてデータベースに登録する登録部と、
を有することを特徴とする登録システム。
【請求項２】
前記ハッシュテーブルは、前記一連のフローの最初のパケットにおけるインナーヘッダ情報、アウターヘッダ情報及び前記アドレスのハッシュ値を、検知値として、前記アドレスに対応付けて登録し、
前記フィルタ部は、処理対象のパケットにおけるインナーヘッダ情報、アウターヘッダ情報及び前記アドレスのハッシュ値を衝突検知値として計算し、前記ハッシュテーブルのうち前記処理対象のパケットのアドレスと同アドレスのエントリにおいて、前記到着情報が未到着であることを示す場合には、前記処理対象のパケットのインナーヘッダ情報及びアウターヘッダ情報を前記最初のパケットのインナーヘッダ情報及びアウターヘッダ情報として通過させ、前記到着情報が到着済みであることを示し、かつ、前記検知値と前記衝突検知値とが異なる場合には、衝突を検知することを特徴とする請求項１に記載の登録システム。
【請求項３】
前記フィルタ部は、衝突を検知した場合、前記処理対象のパケットのインナーヘッダ情報及びアウターヘッダ情報をサンプリングして通過させる、または、前記ハッシュテーブルの空のエントリに前記処理対象のパケットにおける前記衝突検知値を検知値として登録することを特徴とする請求項２に記載の登録システム。
【請求項４】
当該登録システムにおける各機能をＣＰＵコア上で動作させた際にパケットロスが生じるpps（packets  per  second）量を事前に計測し、該計測したpps量の値を基に各コアへの各機能の配備を事前に振り分ける振分部と、
をさらに有することを特徴とする請求項１〜３のいずれか一つに記載の登録システム。
【請求項５】
前記登録部は、分散された各コアから、時刻情報が付与されたインナーヘッダ情報及びアウターヘッダ情報を集約して収集し、同一のデータベースに登録することを特徴とする請求項４に記載の登録システム。
【請求項６】
入力されるフローのppsの分布情報及びコアの使用量に基づいて、パケット処理を行う各コアが処理オーバーとなる確率を最小とするようにフローの振り分けを制御するフローコレクタをさらに有し、
前記振分部は、前記フローコレクタによる振分制御にしたがって、各コアへの各機能の配備を振り分けることを特徴とする請求項４または５に記載の登録システム。
【請求項７】
登録システムが実行する登録方法であって、
カプセル化パケットのインナーヘッダ情報及びアウターヘッダ情報を抽出する工程と、
前記インナーヘッダ情報及び前記アウターヘッダ情報のハッシュ値を、一連のフローの最初のパケットが到着したか否かを示す到着情報をアドレス毎に登録したハッシュテーブルのアドレスとして計算し、前記ハッシュテーブルを基に、前記一連のフローの最初のパケットのインナーヘッダ情報及びアウターヘッダ情報を通過させる工程と、
通過した前記最初のパケットのインナーヘッダ情報とアウターヘッダ情報とを対応付けてデータベースに登録する工程と、
を含んだことを特徴とする登録方法。
【請求項８】
カプセル化パケットのインナーヘッダ情報及びアウターヘッダ情報を抽出するステップと、
前記インナーヘッダ情報及び前記アウターヘッダ情報のハッシュ値を、一連のフローの最初のパケットが到着したか否かを示す到着情報をアドレス毎に登録したハッシュテーブルのアドレスとして計算し、前記ハッシュテーブルを基に、前記一連のフローの最初のパケットのインナーヘッダ情報及びアウターヘッダ情報を通過させるステップと、
通過した前記最初のパケットのインナーヘッダ情報とアウターヘッダ情報とを対応付けてデータベースに登録するステップと、
をコンピュータに実行させることを特徴とする登録プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、登録システム、登録方法及び登録プログラムに関する。
【背景技術】
【０００２】
近年、インターネットの普及に伴い、ＤＤｏＳ攻撃が急増している。このような攻撃に対する解析ツールとして、Mitigation装置やＩＤＳ（Intrusion  Detection  System）やＷＡＦ（Web  Application  Firewall）等の解析ツールが使用される。
【０００３】
ところで、トンネリングパケット、すなわちカプセル化パケットを解析するために、アウターヘッダを削除後、解析を行う必要があった。そして、解析結果を基にネットワークでフィルタや帯域制限等の制御を行うためには、インナーヘッダから元のアウターヘッダを検索する必要があった。このため、パケットのインナーヘッダとアウターヘッダとを対応付けておく必要がある。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ixia，“Vision  ONE”，［平成３１年３月２２日検索］，インターネット＜ＵＲＬ：https://www.ixiacom.com/ja/products/vision-one＞
【非特許文献２】Ixia，“Vision  ONE  DATA  SHEET”，［平成３１年３月２２日検索］，インターネット＜ＵＲＬ：https://www.ixiacom.com/sites/default/files/2017-07/915-6691-01-V-DS-Vision-ONE.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来では、カプセル化パケットからインナーヘッダ及びアウターヘッダを抽出後、全パケットについてインナーヘッダ及びアウターヘッダを対応付けてデータベース（ＤＢ）に登録していた。このため、従来の方法では、ＤＢ登録の処理負荷が高く、処理の高速化が難しいという問題があった。また、従来では、ＤＢの全ての対応付けにアクセスし、インナーヘッダ情報から元のアウターヘッダ情報を検索していたため、ＤＢへのアクセスに対する負荷も高かった。
【０００６】
本発明は、上記に鑑みてなされたものであって、カプセル化パケットのインナーヘッダ及びアウターヘッダの対応関係のＤＢへの登録処理の高速化を可能にする登録システム、登録方法及び登録プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明に係る登録装置は、カプセル化パケットのインナーヘッダ情報及びアウターヘッダ情報を抽出する抽出部と、インナーヘッダ情報及びアウターヘッダ情報のハッシュ値を、一連のフローの最初のパケットが到着したか否かを示す到着情報をアドレス毎に登録したハッシュテーブルのアドレスとして計算し、ハッシュテーブルを基に、一連のフローの最初のパケットのインナーヘッダ情報及びアウターヘッダ情報を通過させるフィルタ部と、フィルタ部が通過させた最初のパケットのインナーヘッダ情報とアウターヘッダ情報とを対応付けてデータベースに登録する登録部と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、カプセル化パケットのインナーヘッダ及びアウターヘッダの対応関係のＤＢへの登録処理の高速化を可能にする。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１に係る通信システムの構成の一例を示す図である。
【図２】図２は、図１に示すＤＢの登録情報例を示す図である。
【図３】図３は、図１に示す登録装置の構成の一例を示す図である。
【図４】図４は、図１に示す登録装置による登録処理の流れを説明する図である。
【図５】図５は、図１に示す登録装置による登録処理の流れを説明する図である。
【図６】図６は、図３に示すフィルタ部の機能を説明する図である。
【図７】図７は、図３に示すフィルタ部の処理の流れを説明する図である。
【図８】図８は、図３に示すフィルタ部の処理の流れを説明する図である。
【図９】図９は、フローの継続時間分布情報の一例を示す図である。
【図１０】図１０は、図６に示すハッシュテーブルのエントリリフレッシュを説明する図である。
【図１１】図１１は、実施の形態１に係る登録処理の処理手順を示すフローチャートである。
【図１２】図１２は、図１１に示すフィルタ処理の処理手順を示すフローチャートである。
【図１３】図１３は、図６に示すハッシュテーブルのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【図１４】図１４は、実施の形態２に係る登録装置の構成の一例を示す図である。
【図１５】図１５は、図１４に示すフィルタ部の機能を説明する図である。
【図１６】図１６は、図１４に示すフィルタ部の処理の流れを説明する図である。
【図１７】図１７は、図１４に示すフィルタ部の処理の流れを説明する図である。
【図１８】図１８は、図１５に示すハッシュテーブルのエントリリフレッシュを説明する図である。
【図１９】図１９は、実施の形態２に係るフィルタ処理の処理手順を示すフローチャートである。
【図２０】図２０は、図１５に示すハッシュテーブルのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【図２１】図２１は、実施の形態３に係る登録装置の構成の一例を示す図である。
【図２２】図２２は、図２１に示すフィルタ部の機能を説明する図である。
【図２３】図２３は、図２１に示すフィルタ部の処理の流れを説明する図である。
【図２４】図２４は、図２１に示すフィルタ部の処理の流れを説明する図である。
【図２５】図２５は、図２１に示すフィルタ部の処理の流れを説明する図である。
【図２６】図２６は、図２１に示すフィルタ部の処理の流れを説明する図である。
【図２７】図２７は、図２２に示すハッシュテーブルのエントリリフレッシュを説明する図である。
【図２８】図２８は、実施の形態３に係るフィルタ処理の処理手順を示すフローチャートである。
【図２９】図２９は、図２２に示すハッシュテーブルのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【図３０】図３０は、実施の形態４に係る登録装置の構成の一例を示す図である。
【図３１】図３１は、図３０に示すフィルタ部の機能を説明する図である。
【図３２】図３２は、図３０に示すフィルタ部の処理の流れを説明する図である。
【図３３】図３３は、図３０に示すフィルタ部の処理の流れを説明する図である。
【図３４】図３４は、図３０に示すフィルタ部の処理の流れを説明する図である。
【図３５】図３５は、図３０に示すフィルタ部の処理の流れを説明する図である。
【図３６】図３６は、図３１に示すハッシュテーブルのエントリリフレッシュを説明する図である。
【図３７】図３７は、実施の形態４に係るフィルタ処理の処理手順を示すフローチャートである。
【図３８】図３８は、図３１に示すハッシュテーブルのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【図３９】図３９は、実施の形態５に係る登録装置の構成の一例を示す図である。
【図４０】図４０は、実施の形態５における振分処理の流れを説明する図である。
【図４１】図４１は、実施の形態に係る振分処理の処理手順のフローチャートである。
【図４２】図４２は、実施の形態６におけるＤＢに対する情報の投入の流れを説明する図である。
【図４３】図４３は、実施の形態７に係る通信システムの構成の一例を示す図である。
【図４４】図４４は、図４３に示すフローコレクタによるフローの振分制御処理を説明する図である。
【図４５】図４５は、図４３に示すフローコレクタによるフローの振分制御処理を説明する図である。
【図４６】図４６は、図４３に示す通信システムにおけるコアへの振分制御処理の処理手順を示すシーケンス図である。
【図４７】図４７は、プログラムが実行されることにより、登録装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１１】
［実施の形態１］
［通信システムの概要］
まず、図１を用いて、実施の形態１に係る通信システムの構成について説明する。図１は、実施の形態に係る通信システムの構成の一例を示す図である。
【００１２】
図１に示すように、通信システム１は、ネットワークＮと、登録装置１０と、ＤＢ２０と、検索装置３０とを有する。通信システム１は、パケットの転送の過程においてトンネリングを行っているネットワーク内部のシステムである。
【００１３】
登録装置１０は、ネットワークＮを介して、トンネルトラフィックフローの入力を受け付ける。登録装置１０は、カプセル化パケットのインナー（inner）ヘッダ情報及びアウター（outer）ヘッダ情報を抽出し、パケットのinnerヘッダ情報とouterヘッダ情報とを対応付けてＤＢ２０に登録する。登録装置１０は、一連のフローの最初のパケットのinnerヘッダ情報とouterヘッダ情報とをＤＢ２０に登録する。
【００１４】
ＤＢ２０は、パケットのinnerヘッダ情報とouterヘッダ情報とが対応付けて登録されている。ＤＢ２０は、innerヘッダ情報からouterヘッダ情報の検索、または、outerヘッダ情報からinnerヘッダ情報の検索を可能とする。
【００１５】
図２は、図１に示すＤＢ２０の登録情報例を示す図である。図２に示すように、ＤＢ２０は、時刻情報と、innerヘッダの5tuple及びouterヘッダの5tupleとを対応付けて登録する。具体的には、ＤＢ２０は、パケットに付与された通番、パケットの受信日時、パケットのinnerソースIPアドレス等を含むinnerヘッダ情報、パケットのouterソースIPアドレス等を含むouterヘッダ情報及び更新日時を含むデータを、１組のinnerヘッダ情報及びouterヘッダ情報との対応付け情報として登録する。
【００１６】
検索装置３０は、ＤＢ２０にアクセスし、パケットのinnerヘッダ情報またはouterヘッダ情報を検索する。検索装置３０は、ＤＢ２０にアクセスし、innerヘッダ情報からouterヘッダ情報を検索する。または、検索装置３０は、ＤＢ２０にアクセスし、outerヘッダ情報からinnerヘッダ情報の検索を可能とする。
【００１７】
検索装置３０が、innerヘッダ情報からouterヘッダ情報の検索する例について説明する。例えば、ヘッダストリップしたパケットをセキュリティ装置等で分析をし、この分析結果がinnerヘッダ情報しか含んでいない際、分析結果を基にネットワークへ何らかの制御を行いたい場合には、innerヘッダ情報からouterヘッダ情報を検索する必要がある。このような場合、検索装置３０は、ＤＢ２０にアクセスして、innerヘッダ情報からouterヘッダ情報の検索し、検索結果を制御装置に送信する。
【００１８】
［登録装置の構成］
次に、図１に示す登録装置１０の構成について説明する。図３は、図１に示す登録装置１０の構成の一例を示す図である。図３に示すように、登録装置１０は、通信部１１、記憶部１２及び制御部１３を有する。
【００１９】
通信部１１は、ネットワーク等を介して接続された他の装置との間で、各種情報を送受信する通信インタフェースである。通信部１１は、ＮＩＣ（Network  Interface  Card）等で実現され、ＬＡＮ（Local  Area  Network）やインターネットなどの電気通信回線を介した他の装置と制御部１３（後述）との間の通信を行う。例えば、通信部１１は、ネットワークＮを介して、トンネルトラフィックフローの入力を受け付ける。
【００２０】
記憶部１２は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク等の記憶装置である。なお、記憶部１２は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。記憶部１２は、登録装置１０で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。さらに、記憶部１２は、プログラムの実行で用いられる各種情報を記憶する。
【００２１】
記憶部１２は、フロー継続時間分布情報１２１を記憶する。フロー継続時間分布情報１２１は、予め計測された複数のフロー継続時間に基づくフロー継続時間の分布を示す情報である。
【００２２】
制御部１３は、登録装置１０全体を制御する。制御部１３は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路である。また、制御部１３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部１３は、各種のプログラムが動作することにより各種の処理部として機能する。制御部１３は、抽出部１３１、フィルタ部１３２及び登録部１３３を有する。
【００２３】
抽出部１３１は、新規到着したinnerフローの組を選別するために、入力を受け付けたカプセル化パケットのinnerヘッダ情報及びouterヘッダ情報を抽出する。抽出部１３１は、カプセル化パケットのinnerヘッダとouterヘッダとの5tupleの組を抽出する。
【００２４】
フィルタ部１３２は、登録対象のinnerヘッダ情報及びouterヘッダ情報を選別し、登録対象のinnerヘッダ情報及びouterヘッダ情報以外をフィルタする。フィルタ部１３２は、一連のフローの最初のパケットが到着したか否かを示す到着情報をアドレス毎に登録したハッシュテーブルを用いる。フィルタ部１３２は、innerヘッダ情報及びouterヘッダ情報のハッシュ値をハッシュテーブルのアドレスとして計算する。具体的には、フィルタ部１３２は、innerヘッダの5tupleとouterヘッダの5tupleとを連結した情報のハッシュ値をハッシュテーブルのアドレスとして計算する。フィルタ部１３２は、このハッシュテーブルを基に、一連のフローの最初のパケットを通過させる。
【００２５】
登録部１３３は、フィルタ部１３２が通過させた、一連のフローの最初のパケットのinnerヘッダ情報とouterヘッダ情報とを対応付けてＤＢ２０に登録する。登録部１３３は、ＤＢ２０に、時刻情報と、innerヘッダの5tuple及びouterヘッダの5tupleとの組を対応付け情報として登録する。
【００２６】
［登録処理の流れ］
次に、登録装置１０による登録処理について説明する。図４及び図５は、図１に示す登録装置１０による登録処理の流れを説明する図である。図４には、説明のためにＤＢ２０も記載する。
【００２７】
図４及び図５に示すように、抽出部１３１にカプセル化パケットが入力されると、抽出部１３１は、事前に設定されたプロトコルconfigにしたがって、カプセル化パケットのinnerヘッダとouterヘッダとの5tupleの組を抽出する。
【００２８】
そして、フィルタ部１３２は、事前に設定されたフローの定義や、事前に求められたフロー継続時間分布情報１２１を基に、一連のフローの最初のパケット、すなわち、新規到着したパケットのinnerヘッダの5tupleとouterヘッダの5tupleとを通過させる。
【００２９】
登録部１３３は、フィルタ部１３２が通過させた、新規到着したパケットのinnerヘッダとouterヘッダとの5tupleのＤＢ登録クエリを、時刻情報とともにＤＢ２０に出力し、ＤＢ２０への登録を行う。
【００３０】
例えば、図５に示すパケットＰ１１は、一連のフローの最初のパケット（1stpacker）、すなわち、新規到着したパケットであり、ＤＢ登録に必要な情報である（図５の（１）参照）。このため、フィルタ部１３２は、パケットＰ１１の情報を通過させる。これに対し、innerフローの後続のパケットＰ１４の情報は、既にパケットＰ１１の情報が登録されているため、ＤＢ登録に不要な情報になる（図５の（２）参照）。したがって、フィルタ部１３２は、パケットＰ１４の情報をフィルタする。
【００３１】
［フィルタ部の処理］
次に、フィルタ部１３２の処理内容について説明する。図６は、図３に示すフィルタ部１３２の機能を説明する図である。
【００３２】
図６に示すように、フィルタ部１３２は、事前に設定されたフローの定義に基づいてハッシュ値を計算するハッシュ関数部１３２１と、ハッシュテーブル１３２２を用いてフィルタを行う。
【００３３】
ハッシュテーブル１３２２は、アドレス、到着情報である到着フラグ、及び、タイマの項目を有する。到着フラグは、一連のフローの最初のパケットが到着したか否かを示すフラグであり、innerフローの5tuple情報が新規到着フローのものか否かを判別するために使用する。到着フラグは、「0」が未達であることを示し、「1」が到着済みであることを示す。タイマは、ハッシュ衝突を抑えるために定期的なエントリリフレッシュを行うために使用するカウントダウンタイマである。到着フラグのデフォルト値は「0」であり、タイマのデフォルト値は全て「1」である。
【００３４】
図７及び図８は、図３に示すフィルタ部１３２の処理の流れを説明する図である。ハッシュ関数部１３２１は、フローの定義と、innerヘッダの5tuple及びouterヘッダの5tupleの情報とを入力とし、ハッシュ関数を用いて、innerヘッダの5tupleとouterヘッダの5tupleとを連結した情報ハッシュ値を、アドレスとして計算する。フィルタ部１３２は、計算したアドレスでハッシュテーブル１３２２の行にアクセスする。
【００３５】
例えば、図７を参照して、パケットＰ１１の処理について説明する。この場合、フィルタ部１３２は、ハッシュテーブル１３２２のうち、計算したアドレス「0x0003」の行にアクセスする。ここで、この行の到着フラグは「0」であるため、パケットＰ１１は、一連のフローの最初のパケットである。フィルタ部１３２は、このアドレス「0x0003」の行の到着フラグを「0」から「1」に変更し（図７の（１）参照）、パケットＰ１１のinnerヘッダとouterヘッダとの5tupleを通す（図７の（２）参照）。
【００３６】
また、図８を参照して、パケットＰ２１の処理について説明する。この場合、フィルタ部１３２は、ハッシュテーブル１３２２のうち、計算したアドレス「0x0007」の行にアクセスする。ここで、この行の到着フラグは「1」である（図８の（１）参照）。これより、パケットＰ２１は、最初のパケットが既に到着済みであるフローのパケットであるため、フィルタ部１３２は、パケットＰ２１の情報をフィルタする（図８の（２）参照）。
【００３７】
続いて、ハッシュテーブル１３２２のエントリリフレッシュについて説明する。ハッシュテーブル１３２２に古いエントリを残したままにすると、衝突が起こりやすくなり、フィルタ精度が悪くなる。そこで、フィルタ部１３２は、フローの継続時間の分布を基に、所定のタイミングでエントリをリフレッシュし、古いエントリを初期化する。
【００３８】
図９は、フローの継続時間分布情報の一例を示す図である。図９では、フロー継続時間と確率密度関数との関係を示す。図１０は、図６に示すハッシュテーブル１３２２のエントリリフレッシュを説明する図である。
【００３９】
フィルタ部１３２は、図９に例示するフローの継続時間の分布から、αパーセンタイル（０≦α≦１）に該当するフロー継続時間x（sec）を求める。そして、フィルタ部１３２は、このフロー継続時間x（sec）を用いて、リフレッシュタイミングを設定する。
【００４０】
まず、タイマのbit数が１以上の場合について説明する。この場合、フィルタ部１３２は、リフレッシュ間隔を「x／（タイマのbit数^2）」とする。フィルタ部１３２は、リフレッシュ間隔毎にタイマをデクリメントする。そして、フィルタ部１３２は、タイマのbit数が全て「0」になったエントリの到着フラグを「1」から「0」に変更するとともに（図１０の（１）参照）、タイマも「1111」に変更することによって、エントリをリフレッシュする。
【００４１】
そして、タイマのbit数が１以外の場合について説明する。この場合、フィルタ部１３２は、リフレッシュ間隔を「x」とする。フィルタ部１３２は、リフレッシュ間隔毎に、全ての到着フラグを「0」に変更し、タイマもデフォルト値に変更して、エントリをリフレッシュする。なお、ハッシュテーブル１３２２は、bit数が比較的少ない到着フラグ欄及びタイマ欄を有し、この２つの欄の処理を要するため、例えば、高速・低容量であるキャッシュに保持される。
【００４２】
［登録処理の処理手順］
次に、実施の形態１に係る登録処理の処理手順について説明する。図１１は、実施の形態１に係る登録処理の処理手順を示すフローチャートである。
【００４３】
図１１に示すように、登録装置１０は、カプセル化パケットの入力を受け付けると（ステップＳ１）、抽出部１３１は、カプセル化パケットのinnerヘッダ情報及びouterヘッダ情報を抽出する抽出処理を行う（ステップＳ２）。
【００４４】
フィルタ部１３２は、innerヘッダ情報及びouterヘッダ情報のハッシュ値をハッシュテーブルのアドレスとして計算し、到着情報をアドレス毎に登録したハッシュテーブルを基に、一連のフローの最初のパケットを通過させるフィルタ処理を行う（ステップＳ３）。
【００４５】
登録部１３３は、フィルタ部１３２が通過させた、一連のフローの最初のパケットのinnerヘッダ情報とouterヘッダ情報とを対応付けてＤＢ２０に登録する登録処理を行う（ステップＳ４）。
【００４６】
［フィルタ処理の処理手順］
次に、図１１に示すフィルタ処理（ステップＳ３）について説明する。図１２は、図１１に示すフィルタ処理の処理手順を示すフローチャートである。
【００４７】
図１２に示すように、フィルタ部１３２は、フローの定義情報と、innerヘッダの5tuple及びouterヘッダの5tupleの情報とを入力とし（ステップＳ１１，Ｓ１２）、ハッシュ関数を用いてアドレスを計算する（ステップＳ１３）。フィルタ部１３２は、計算したアドレスでハッシュテーブル１３２２の行にアクセスする（ステップＳ１４）。
【００４８】
フィルタ部１３２は、アクセスした行の到着フラグは「0」または「1」のいずれであるかを判定する（ステップＳ１５）。到着フラグが「0」である場合（ステップＳ１５：0）、フィルタ部１３２は、このパケットが一連のフローの最初のパケットであると判定し、アクセスした行の到着フラグを「0」から「1」に変更する（ステップＳ１６）。そして、フィルタ部１３２は、このパケットのinnerヘッダとouterヘッダとの5tupleを通す（ステップＳ１７）。
【００４９】
これに対し、到着フラグが「1」である場合（ステップＳ１５：1）、フィルタ部３１２は、最初のパケットが既に到着済みであるフローのパケットであると判定し、このパケットのinnerヘッダとouterヘッダとの5tupleをフィルタする（ステップＳ１８）。
【００５０】
［ハッシュテーブルのエントリリフレッシュ処理］
次に、ハッシュテーブル１３２２のエントリリフレッシュ処理について説明する。図１３は、図６に示すハッシュテーブルのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【００５１】
図１３に示すように、フィルタ部１３２は、フローの継続時間分布情報を取得し（ステップＳ２１）、フロー継続時間分布においてαパーセンタイル（０≦α≦１）に該当するフロー継続時間x（sec）を取得する（ステップＳ２２）。そして、フィルタ部１３２は、タイマのbit数が１以上であるか否かを判定する（ステップＳ２３）。
【００５２】
タイマのbit数が１以上である場合（ステップＳ２３：Ｙｅｓ）、フィルタ部１３２は、リフレッシュ間隔を「x／（タイマのbit数^2）」とする（ステップＳ２４）。フィルタ部１３２は、リフレッシュ間隔毎にタイマをデクリメントする（ステップＳ２５）。フィルタ部１３２は、タイマのbit数が全て「0」になったエントリの到着フラグを、「1」からデフォルト値である「0」に変更して（ステップＳ２６）、エントリをリフレッシュする。
【００５３】
また、タイマのbit数が１以外である場合（ステップＳ２３：Ｎｏ）、フィルタ部１３２は、リフレッシュ間隔を「x」とする（ステップＳ２７）。フィルタ部１３２は、リフレッシュ間隔毎に、全ての到着フラグを、デフォルト値である「0」に変更して（ステップＳ２８）、エントリをリフレッシュする。
【００５４】
［実施の形態１の効果］
このように、実施の形態１では、ＤＢ２０は、パケットのinnerヘッダ情報とouterヘッダ情報とが対応付けて登録されている。このため、実施の形態１によれば、innerヘッダ情報からouterヘッダ情報の検索、または、outerヘッダ情報からinnerヘッダ情報の検索を可能とする。
【００５５】
また、実施の形態１では、ＤＢ２０には、一連のフローの最初のパケットのinnerヘッダ情報とouterヘッダ情報の対応付け情報のみがＤＢ２０に登録される。このため、実施の形態１によれば、全パケットについて対応付け情報を登録していた場合と比して、情報登録の処理負荷が低減でき、処理の高速化を可能にする。そして、実施の形態１によれば、全パケットについて対応付け情報を登録していた場合と比して、ＤＢ２０に登録されている対応付け情報自体の数が少ないため、ＤＢ２０へのアクセス及び検索に対する負荷を低減でき、検索の高速化を図ることも可能になる。
【００５６】
［実施の形態２］
次に、実施の形態２について説明する。図１４は、実施の形態２に係る登録装置の構成の一例を示す図である。
【００５７】
図１４に示すように、実施の形態２に係る登録装置２１０は、図３に示す制御部１３に代えて、制御部２１３を有する。制御部２１３は、制御部１３と同様の機能を有する。制御部２１３は、フィルタ部２１３２を有する。フィルタ部２１３２は、一連のフローの最初のパケットが到着したか否かを示す到着情報を、タイムアウト時刻で示したハッシュテーブルを用いて、フィルタ処理を行う。
【００５８】
［フィルタ部の処理］
次に、フィルタ部２１３２の処理内容について説明する。図１５は、図１４に示すフィルタ部２１３２の機能を説明する図である。
【００５９】
図１５に示すように、フィルタ部２１３２は、ハッシュテーブル１３２２Ａを用いる。ハッシュテーブル１３２２Ａは、アドレス及びタイムアウト時刻を項目として有する。タイムアウト時刻は、ハッシュ衝突を抑制のための定期的なエントリリフレッシュの実行のために使用する。タイムアウト時刻のデフォルト値は、「0000-00-00  00:00:00」である。
【００６０】
図１６及び図１７は、図１４に示すフィルタ部２１３２の処理の流れを説明する図である。ハッシュ関数部１３２１は、フローの定義と、innerヘッダの5tuple及びouterヘッダの5tupleの情報とを入力とし、ハッシュ関数を用いて、innerヘッダの5tuple及びouterヘッダの5tupleの情報とを連結した情報のハッシュ値を、アドレスとして計算する。フィルタ部２１３２は、計算したアドレスでハッシュテーブル１３２２Ａの行にアクセスする。
【００６１】
例えば、図１６を参照して、パケットＰ１１の処理について説明する。この場合、フィルタ部２１３２は、ハッシュテーブル１３２２Ａのうち、計算したアドレス「0x0003」の行にアクセスする。ここで、この行のタイムアウト時刻はデフォルト値であるので、パケットＰ１１は、一連のフローの最初のパケットである。このため、フィルタ部２１３２は、このアドレス「0x0003」の行のタイムアウト時刻を、現在時刻にx（sec）を加えた時刻に変更し（図１６の（１）参照）、パケットＰ１１のinnerヘッダとouterヘッダとの5tupleを通す（図１６の（２）参照）。x（sec）は、例えば、図９に例示するフローの継続時間の分布のうち、αパーセンタイル（０≦α≦１）に該当するフロー継続時間である。
【００６２】
また、図１７を参照して、パケットＰ２１の処理について説明する。この場合、フィルタ部２１３２は、ハッシュテーブル１３２２Ａのうち、計算したアドレス「0x0007」の行にアクセスする。ここで、この行のタイムアウト時刻は、デフォルト値ではない（図１７の（１）参照）。これより、パケットＰ２１は、最初のパケットが既に到着済みであるフローのパケットであることから、フィルタ部２１３２は、パケットＰ２１の情報をフィルタする（図１７の（２）参照）。
【００６３】
続いて、ハッシュテーブル１３２２Ａのエントリリフレッシュについて説明する。図１８は、図１５に示すハッシュテーブル１３２２Ａのエントリリフレッシュを説明する図である。
【００６４】
フィルタ部２１３２は、ハッシュテーブル１３２２Ａの各エントリのタイムアウト時刻を、所定のタイミングでリフレッシュして衝突を抑制する。具体的には、フィルタ部２１３２は、現在時刻がタイムアウト時刻を超えたエントリのリフレッシュを行う。
【００６５】
例えば、現在時刻がアドレス「0x0007」のタイムアウト時刻「2018-06-05  09:25:01」を超えた場合について説明する。この場合、フィルタ部２１３２は、このエントリのタイムアウト時刻を「2018-06-05  09:25:01」から、デフォルト値の「0000-00-00  00:00:00」に変更することによって（図１８の（１）参照）、古いエントリを初期化する。なお、ハッシュテーブル１３２２Ａは、bit数が比較的多いタイムアウト時刻欄を有するが、タイムアウト時刻欄の処理のみで足りるため、例えば、低速・高容量であるメモリに保持される。
【００６６】
［フィルタ処理の処理手順］
登録装置２１０は、図１１に示す処理を図１１に示す順序で実行することによって登録処理を行う。このうち、フィルタ処理は、図１２に示す処理手順と異なる処理手順で実行される。そこで、図１９を参照して、実施の形態２に係るフィルタ処理について説明する。図１９は、実施の形態２に係るフィルタ処理の処理手順を示すフローチャートである。
【００６７】
図１９に示すステップＳ３１〜ステップＳ３４は、図１２に示すステップＳ１１〜ステップＳ１４と同じ処理である。フィルタ部２１３２は、アクセスした行のタイムアウト時刻はデフォルト値であるか否かを判定する（ステップＳ３５）。
【００６８】
タイムアウト時刻がデフォルト値である場合（ステップＳ３５：Ｙｅｓ）、フィルタ部２１３２は、このパケットが一連のフローの最初のパケットであると判定し、アクセスした行のタイムアウト時刻を現在時刻にx（sec）を加えた時刻に変更する（ステップＳ３６）。そして、フィルタ部２１３２は、このパケットのinnerヘッダとouterヘッダとの5tupleを通す（ステップＳ３７）。
【００６９】
これに対し、タイムアウト時刻がデフォルト値でない場合（ステップＳ３５：Ｎｏ）、フィルタ部２１３２は、最初のパケットが既に到着済みであるフローのパケットであると判定し、このパケットのinnerヘッダとouterヘッダとの5tupleをフィルタする（ステップＳ３８）。
【００７０】
［ハッシュテーブルのエントリリフレッシュ処理］
次に、ハッシュテーブル１３２２Ａのエントリリフレッシュ処理について説明する。図２０は、図１５に示すハッシュテーブル１３２２Ａのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【００７１】
フィルタ部２１３２は、ハッシュテーブル１３２２Ａに、現在時刻がタイムアウト時刻を超えたエントリがあるか否かを判定する（ステップＳ４１）。フィルタ部２１３２は、現在時刻がタイムアウト時刻を超えたエントリがあると判定するまで、ステップＳ４１の処理を送り返す。
【００７２】
そして、現在時刻がタイムアウト時刻を超えたエントリがある場合（ステップＳ４１：Ｙｅｓ）、フィルタ部２１３２は、タイムアウト時刻をデフォルト値「0000-00-00  00:00:00」に変更し（ステップＳ４２）、ステップＳ４１に進む。
【００７３】
［実施の形態２の効果］
このように、フィルタ部２１３２は、到着情報をタイムアウト時刻で示したハッシュテーブルを用いて、フィルタ処理を行い、一連のフローの最初のパケットのinnerヘッダ情報及びouterヘッダ情報以外をフィルタする。この結果、実施の形態２においても、一連のフローの最初のパケットのinnerヘッダ情報とouterヘッダ情報の対応付け情報のみがＤＢ２０に登録されるため、実施の形態１と同様の効果を奏する。
【００７４】
［実施の形態３］
次に、実施の形態３について説明する。実施の形態３では、フィルタ処理において、さらに、衝突検知bit（衝突検知値）を計算することによって、ハッシュ衝突を抑制し、ＤＢ２０への対応付け情報の登録漏れを防止している。図２１は、実施の形態３に係る登録装置の構成の一例を示す図である。
【００７５】
図２１に示すように、実施の形態３に係る登録装置３１０は、図３に示す制御部１３に代えて、制御部３１３を有する。制御部３１３は、制御部１３と同様の機能を有する。制御部３１３は、フィルタ部３１３２を有する。
【００７６】
フィルタ部３１３２は、到着情報である到着フラグと、検知bit（検知値）と、タイマとをアドレスに対応付けて登録するハッシュテーブルを用いる。検知bitは、一連のフローの最初のパケットにおけるinnerヘッダ情報、outerヘッダ情報及びアドレスのハッシュ値である。検知bitは、一連のフローの最初のパケットにおけるinnerヘッダの5tupleと、outerヘッダの５tupleと、アドレスとを連結した情報のハッシュ値である。
【００７７】
フィルタ部３１３２は、処理対象のパケットにおけるinnerヘッダ情報及びouterヘッダ情報のハッシュ値をハッシュテーブルのアドレスとして計算する。そして、フィルタ部３１３２は、innerヘッダ情報、outerヘッダ情報及びアドレスのハッシュ値を、衝突検知bitとして計算する。
【００７８】
フィルタ部３１３２は、ハッシュテーブルのうち処理対象のパケットのアドレスと同アドレスのエントリにおいて、到着フラグが未到着であることを示す場合、処理対象のパケットのinnerヘッダ情報及びouterヘッダ情報を、最初のパケットのinnerヘッダ情報及びouterヘッダ情報として通過させる。
【００７９】
また、フィルタ部３１３２は、到着フラグが到着済みであることを示し、かつ、検知bitと衝突検知bitとが同値である場合には、このパケットのinnerヘッダ情報及びouterヘッダ情報をフィルタする。
【００８０】
また、フィルタ部３１３２は、到着フラグが到着済みであることを示し、かつ、検知bitと衝突検知bitとが異なる場合には、衝突を検知する。そして、フィルタ部３１３２は、衝突を検知した場合、処理対象のパケットのinnerヘッダ情報及びouterヘッダ情報をサンプリングして通過させる。
【００８１】
［フィルタ部の処理］
次に、フィルタ部３１３２の処理内容について説明する。図２２は、図２１に示すフィルタ部３１３２の機能を説明する図である。
【００８２】
図２２に示すように、フィルタ部３１３２は、アドレス計算用のハッシュ関数部１３２１と、衝突検知bit計算用のハッシュ関数部１３２１Ｂと、ハッシュテーブル１３２２Ｂと、を用いてフィルタ処理を行う。
【００８３】
ハッシュ関数部１３２１Ｂは、innerヘッダ情報、outerヘッダ情報及びアドレスを入力とし、ハッシュ関数を用いて衝突検知bitを計算する。ハッシュテーブル１３２２Ｂは、アドレス、到着フラグ、タイマ及び検知bitの項目を有する。検知bitは、ハッシュの衝突を検知するために使用する。検知bitのデフォルト値は、全て「0」である。
【００８４】
図２３〜図２６は、図２１に示すフィルタ部３１３２の処理の流れを説明する図である。ハッシュ関数部１３２１は、フローの定義と、innerヘッダの5tuple及びouterヘッダの5tupleの情報とを入力とし、ハッシュ関数を用いて、innerヘッダの5tupleと、outerヘッダの5tupleとを連結した情報のハッシュ値を、アドレスとして計算する。ハッシュ関数部１３２１Ｂは、innerヘッダの5tupleと、outerヘッダの5tupleと、ハッシュ関数部１３２１が計算したアドレスとを入力とし、ハッシュ関数を用いて、innerヘッダの5tupleと、outerヘッダの5tupleと、ハッシュ関数部１３２１が計算したアドレスとを連結情報のハッシュ値を、衝突検知bitとして計算する。フィルタ部３１３２は、計算したアドレスでハッシュテーブル１３２２Ｂの行にアクセスする。
【００８５】
例えば、図２３を参照して、パケットＰ１１の処理について説明する。この場合、フィルタ部３１３２は、ハッシュテーブル１３２２Ｂのうちアドレス「0x0003」の行にアクセスする。ここで、この行の到着フラグは「0」であるため、パケットＰ１１は、一連のフローの最初のパケットである。
【００８６】
そこで、フィルタ部３１３２は、アドレス「0x0003」の行の到着フラグを「0」から「1」に変更する（図２３の（１）参照）。続いて、フィルタ部３１３２は、検知bitを、デフォルト値の「000」から、ハッシュ関数部１３２１Ｂを用いて計算したパケットＰ１１の衝突検知bit「101」に変更する（図２３の（２）参照）。そして、フィルタ部３１３２は、パケットＰ１１のinnerヘッダとouterヘッダとの5tupleを通す（図２３の（３）参照）。
【００８７】
また、図２４を参照して、パケットＰ２１の処理について説明する。この場合、フィルタ部３１３２は、ハッシュテーブル１３２２Ｂのうちアドレス「0x0007」の行にアクセスする。ここで、この行の到着フラグは「1」であり（図２４の（１）参照）、かつ、検知bit「110」と、ハッシュ関数部１３２１Ｂを用いて計算したパケットＰ２１の衝突検知bit「110」とが同値である（図２４の（２）参照）。
【００８８】
そこで、フィルタ部３１３２は、パケットＰ２１については、最初のパケットが既に到着済みであるフローのパケットであると判定し、パケットＰ２１の情報をフィルタする（図２４の（３）参照）。
【００８９】
また、図２５及び図２６を参照して、パケットＰ３１の処理について説明する。この場合、パケットＰ３１は、パケットＰ２１に対し、同アドレスであり（図２５（１）参照）、衝突検知bitは異なるアドレスになる。フィルタ部１３２は、ハッシュテーブル１３２２のうちアドレス「0x0007」の行にアクセスする。
【００９０】
この際、この行の到着フラグは、「1」であるものの、検知bit「110」と、計算したパケットＰ３１の衝突検知bit「001」とが一致しないため、フィルタ部３１３２は、衝突（ハッシュ衝突）を検知する（図２５の（２）参照）。そして、フィルタ部３１３２は、処理対象のパケットＰ３１のフローについては、サンプリングして、innerヘッダ情報及びouterヘッダ情報を通過させる（図２６の（３）参照）。例えば、フィルタ部３１３２は、パケットＰ３１のフローから、1000個に1個をサンプリングして通過させる。すなわち、フィルタ部３１３２は、ハッシュ衝突したパケットのフローについてはサンプリングした一部のパケットＰ３１，Ｐ３ｎを通過させる。
【００９１】
続いて、ハッシュテーブル１３２２Ｂのエントリリフレッシュについて説明する。図２７は、図２２に示すハッシュテーブル１３２２Ｂのエントリリフレッシュを説明する図である。
【００９２】
フィルタ部３１３２は、フローの継続時間の分布を基に、所定のタイミングでエントリをリフレッシュし、古いエントリを初期化する。リフレッシュ間隔は、フローの継続時間の分布とタイマに割り当てたbit数とを基に計算される。
【００９３】
まず、フィルタ部３１３２は、フィルタ部１３２と同様に、フローの継続時間の分布（例えば、図９参照）から、αパーセンタイル（０≦α≦１）に該当するフロー継続時間x（sec）を求める。
【００９４】
続いて、タイマのbit数が１以上の場合について説明する。この場合、フィルタ部３１３２は、フィルタ部１３２における処理と問うように、リフレッシュ間隔を「x／（タイマのbit数^2）」として、リフレッシュ間隔毎にタイマをデクリメントする。そして、フィルタ部３１３２は、タイマのbit数が全て「0」になったエントリの到着フラグを「1」から「0」に変更するとともに（図２７の（１）参照）、タイマも「0000」から「1111」に変更する（図２７の（２）参照）。さらに、フィルタ部３１３２は、このエントリの検知bitも「110」から「000」（図２７の（３）参照）に変更する。これによって、フィルタ部３１３２は、エントリをリフレッシュする。
【００９５】
そして、タイマのbit数が１以外の場合について説明する。この場合、フィルタ部３１３２は、リフレッシュ間隔を「x」とする。フィルタ部１３２は、リフレッシュ間隔毎に、全ての到着フラグを「0」に変更し、タイマを「1111」に変更し、検知bitを「000」に変更して、エントリをリフレッシュする。
【００９６】
［フィルタ処理の処理手順］
登録装置３１０は、図１１に示す処理を図１１に示す順序で実行することによって登録処理を行う。このうち、フィルタ処理は、図１２に示す処理手順と異なる処理手順で実行される。そこで、図２８を用いて、実施の形態３に係るフィルタ処理について説明する。図２８は、実施の形態３に係るフィルタ処理の処理手順を示すフローチャートである。
【００９７】
図２８に示すステップＳ５１〜ステップＳ５３は、図１１に示すステップＳ１１〜ステップＳ１３と同じ処理である。フィルタ部３１３２は、処理対象のパケットのinnerヘッダ情報、outerヘッダ情報及びアドレスを入力とし、ハッシュ関数を用いて衝突検知bitを計算する（ステップＳ５４）。フィルタ部３１３２は、計算したアドレスでハッシュテーブル１３２２Ｂの行にアクセスする（ステップＳ５５）。
【００９８】
アクセスした行の到着フラグが「0」である場合（ステップＳ５６：0）、フィルタ部３１３２は、このパケットが一連のフローの最初のパケットであると判定し、アクセスした行の到着フラグを「0」から「1」に変更する（ステップＳ５７）。フィルタ部３１３２は、この行の検知bitを、ステップＳ５４において計算した衝突検知bitに変更する（ステップＳ５８）。そして、フィルタ部３１３２は、このパケットのinnerヘッダとouterヘッダとの5tupleを通す（ステップＳ５９）。
【００９９】
これに対し、到着フラグが「1」である場合（ステップＳ５６：1）、フィルタ部３１３２は、この行の検知bitと、ステップＳ５４において計算した衝突検知bitとが同値であるか否かを判定する（ステップＳ６０）。
【０１００】
検知bitと衝突検知bitとが同値である場合（ステップＳ６０：Ｙｅｓ）、フィルタ部３１３２は、このパケットが、既に到着済みであるフローのパケットであると判定し、このパケットのinnerヘッダとouterヘッダとの5tupleをフィルタする（ステップＳ６１）。
【０１０１】
一方、検知bitと衝突検知bitとが異なる値である場合（ステップＳ６０：Ｎｏ）、フィルタ部３１３２は、衝突を検知し、処理対象のパケットのフローについては、サンプリングして、innerヘッダとouterヘッダとの5tupleを通す（ステップＳ６２）。
【０１０２】
［ハッシュテーブルのエントリリフレッシュ処理］
次に、ハッシュテーブル１３２２Ｂのエントリリフレッシュ処理について説明する。図２９は、図２２に示すハッシュテーブル１３２２Ｂのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【０１０３】
図２９に示すステップＳ７１〜ステップＳ７５は、図１３に示すステップＳ２１〜２５と同じ処理である。フィルタ部３１３２は、タイマのbit数が全て「0」になったエントリの到着フラグ及び検知bitをデフォルト値に変更して（ステップＳ７６）、エントリをリフレッシュする。
【０１０４】
また、図２９に示すステップＳ７７は、図１３に示すステップＳ２７と同じ処理である。フィルタ部３１３２は、リフレッシュ間隔毎に、全ての到着フラグ及び検知bitをデフォルト値に変更して（ステップＳ７８）、エントリをリフレッシュする。
【０１０５】
［実施の形態３の効果］
このように、実施の形態３に係る登録装置３１０は、衝突検知bitを計算し、ハッシュテーブル１３２２Ｂに登録されている検知bitと比較することによって、衝突の発生を検知することができる。ここで、衝突が発生している場合とは、２つ以上の（innerヘッダ，outerヘッダ）の組み合わせが同じハッシュ値である場合である。登録装置３１０では、衝突が検知されたパケットについては、サンプリングして、1000個に1個等のみをＤＢ２０へ登録する。
【０１０６】
このように、登録装置３１０は、異なる内容のinnerヘッダ情報及びouterヘッダ情報の組み合わせが、同一のハッシュ値として計算された場合であっても、一方の組み合わせをサンプリングしてＤＢ２０に登録する。この結果、実施の形態３によれば、情報の登録漏れを防止するとともに、ＤＢ２０への登録負荷を低減することを可能にする。
【０１０７】
［実施の形態４］
次に、実施の形態４について説明する。図３０は、実施の形態４に係る登録装置の構成の一例を示す図である。
【０１０８】
図３０に示すように、実施の形態４に係る登録装置４１０は、図１４に示す制御部２１３に代えて、制御部４１３を有する。制御部４１３は、制御部２１３と同様の機能を有する。制御部４１３は、フィルタ部４１３２を有する。
【０１０９】
フィルタ部４１３２は、到着情報であるタイムアウト時刻と、検知bitとをアドレスに対応付けて登録するハッシュテーブルを用いる。フィルタ部４１３２は、フィルタ処理において、さらに、衝突検知bitを計算することによって、ハッシュ衝突を抑制し、ＤＢ２０への対応付け情報の登録漏れを防止している。
【０１１０】
フィルタ部４１３２は、ハッシュテーブルのうち処理対象のパケットのアドレスと同アドレスのエントリにおいて、タイムアウト時刻がデフォルト値である場合には、処理対象のパケットのinnerヘッダ情報及びouterヘッダ情報を最初のパケットのinnerヘッダ情報及びouterヘッダ情報として通過させる。
【０１１１】
また、フィルタ部４１３２は、タイムアウト時刻がデフォルト値ではなく、かつ、検知bitと衝突検知bitとが同値である場合には、このパケットのinnerヘッダ情報及びouterヘッダ情報をフィルタする。
【０１１２】
また、フィルタ部４１３２は、タイムアウト時刻がデフォルト値ではなく、かつ、検知bitと衝突検知bitとが異なる場合には、衝突を検知する。そして、フィルタ部４１３２は、ハッシュテーブルの空のエントリに処理対象のパケットにおける衝突検知bitを、検知bitとして登録し、処理対象のパケットのinnerヘッダ情報及びouterヘッダ情報を通過させる。
【０１１３】
［フィルタ部の処理］
次に、フィルタ部４１３２の処理内容について説明する。図３１は、図３０に示すフィルタ部４１３２の機能を説明する図である。
【０１１４】
図３１に示すように、フィルタ部４１３２は、アドレス計算用のハッシュ関数部１３２１と、衝突検知bit計算用のハッシュ関数部１３２１Ｂと、ハッシュテーブル１３２２Ｃと、を用いてフィルタ処理を行う。
【０１１５】
ハッシュテーブル１３２２Ｃは、アドレス、タイムアウト時刻、検知bit及びチェインポインタの項目を有する。チェインポインタは、衝突が起きている際に別のエントリにアクセするために使用する。チェインポインタのデフォルト値は「0x0000」である。
【０１１６】
図３２〜図３５は、図３０に示すフィルタ部４１３２の処理の流れを説明する図である。実施の形態３と同様に、ハッシュ関数部１３２１は、フローの定義と、innerヘッダの5tuple及びouterヘッダの5tupleの情報とを入力とし、ハッシュ関数を用いて、innerヘッダの5tupleとouterヘッダの5tupleとを連結した情報のハッシュ値を、アドレスとして計算する。ハッシュ関数部１３２１Ｂは、innerヘッダの5tuple及びouterヘッダの5tupleと、ハッシュ関数部１３２１が計算したアドレスを入力とし、ハッシュ関数を用いて、innerヘッダの5tupleと、outerヘッダの5tupleと、ハッシュ関数部１３２１が計算したアドレスとを連結した情報のハッシュ値を、衝突検知bitとして計算する。フィルタ部３１３２は、計算したアドレスでハッシュテーブル１３２２Ｃの行にアクセスする。
【０１１７】
例えば、図３２を参照して、パケットＰ１１の処理について説明する。この場合、フィルタ部３１３２は、ハッシュテーブル１３２２Ｃのうちアドレス「0x0003」の行にアクセスする。ここで、この行のタイムアウト時刻はデフォルト値であるので、パケットＰ１１は、一連のフローの最初のパケットである。このため、フィルタ部３１３２は、アドレス「0x0003」の行のタイムアウト時刻を、デフォルト値から、現在時刻にx（sec）を加えた時刻に変更する（図３２の（１）参照）。x（sec）は、例えば、図９に例示するフローの継続時間の分布から、αパーセンタイル（０≦α≦１）に該当するフロー継続時間である。
【０１１８】
そして、フィルタ部４１３２は、検知bitを「000」から、パケットＰ１１の衝突検知bit「101」に変更する（図３２の（２）参照）。続いて、フィルタ部４１３２は、パケットＰ１１のinnerヘッダとouterヘッダとの5tupleを通す（図３２の（３）参照）。
【０１１９】
また、図３３及び図３４を参照して、パケット３１の処理について説明する。この場合、フィルタ部４１３２は、ハッシュテーブル１３２２Ｃのうち、計算したアドレス「0x0007」の行にアクセスする。ここで、この行のタイムアウト時刻がデフォルト値ではなく、この行の検知bit「110」と、計算したＰ３１の衝突検知bit「001」とが一致しないため、フィルタ部４１３２は、衝突を検知する（図３３の（１）及び図３４の（１）参照）。
【０１２０】
この場合、フィルタ部４１３２は、アドレス「0x0007」の行のチェインポインタがデフォルト値の場合には、開番地法を用いて、別の空のエントリに、パケットＰ３１の情報を登録する。具体的には、フィルタ部４１３２は、アドレス「0x0007」の行のチェインポインタを、「0x0000」から、開番地法で求めた空のエントリのアドレス「0x0009」に変更する（図３４の（２）参照）。
【０１２１】
そして、フィルタ部４１３２は、アドレス「0x0009」の行に進み、この行のタイムアウト時刻をデフォルト値から、現在時刻にx（sec）を加えた時刻に変更する（図３４の（３）参照）。フィルタ部４１３２は、検知bitを、デフォルト値の「000」から、計算したパケットＰ３１の衝突検知bit「101」に変更する（図３４の（４）参照）。続いて、フィルタ部３１３２は、パケットＰ３１のinnerヘッダとouterヘッダとの5tupleを通す（図３４の（５）参照）。
【０１２２】
また、図３５を参照して、パケット２１の処理について説明する。この場合、フィルタ部４１３２は、ハッシュテーブル１３２２Ｃのうち、計算したアドレス「0x0007」の行にアクセスする。ここで、この行のタイムアウト時刻がデフォルト値ではなく、検知bit「110」と、ハッシュ関数部１３２１Ｂを用いて計算したパケットＰ２１の衝突検知bit「110」とが一致するため、フィルタ部４１３２は、パケットＰ２１の情報をフィルタする（図３５の（1）参照）。
【０１２３】
続いて、図３５を参照して、パケットＰ３２の処理について説明する。この場合、フィルタ部４１３２は、ハッシュテーブル１３２２Ｃのうち、計算したアドレス「0x0007」の行にアクセスする。この場合、この行のタイムアウト時刻がデフォルト値ではなく、検知bit「110」と、ハッシュ関数部１３２１Ｂを用いて計算したパケットＰ３１の衝突検知bit「001」とが一致しない。そこで、フィルタ部４１３２は、チェインポインタの値を用い、アドレス「0x0009」の行にアクセスする。そして、フィルタ部４１３２は、アドレス「0x0009」の行のタイムアウト時刻がデフォルト値ではなく、検知bit「001」と、計算したパケットＰ３２の衝突検知bit「001」とが一致するため、パケットＰ３２をフィルタする（図３５の（２）参照）。
【０１２４】
続いて、ハッシュテーブル１３２２Ｃのエントリリフレッシュについて説明する。図３６は、図３１に示すハッシュテーブル１３２２Ｃのエントリリフレッシュを説明する図である。
【０１２５】
具体的には、フィルタ部４１３２は、現在時刻がタイムアウト時刻を超えたエントリのリフレッシュを行う。例えば、現在時刻がアドレス「0x0009」のタイムアウト時刻「2018-06-07  02:31:41」を超えた場合について説明する。この場合、フィルタ部４１３２は、このエントリのタイムアウト時刻を「2018-06-07  02:31:41」から、デフォルト値の「0000-00-00  00:00:00」に変更し（図３６の（１）参照）、検知bitを「001」から「000」に変更することによって（図３６の（２）参照）、古いエントリを初期化する。
【０１２６】
［フィルタ処理の処理手順］
登録装置４１０は、図１１に示す処理を図１１に示す順序で実行することによって登録処理を行う。このうち、フィルタ処理は、図１２に示す処理手順と異なる処理手順で実行される。そこで、図３７を参照して、実施の形態４に係るフィルタ処理について説明する。図３７は、実施の形態４に係るフィルタ処理の処理手順を示すフローチャートである。
【０１２７】
図３７に示すステップＳ８１〜ステップＳ８３は、図１２に示すステップＳ１１〜ステップＳ１３と同じ処理である。図３７に示すステップＳ８４及びステップＳ８５は、図２８に示すステップＳ５４及びステップＳ５５と同じ処理である。
【０１２８】
タイムアウト時刻がデフォルト値である場合（ステップＳ８６：Ｙｅｓ）、フィルタ部４１３２は、このパケットが一連のフローの最初のパケットであると判定し、アクセスした行のタイムアウト時刻を現在時刻にx（sec）を加えた時刻に変更する（ステップＳ８７）。フィルタ部４１３２は、この行の検知bitを、ステップＳ８４において計算した衝突検知bitに変更する（ステップＳ８８）。そして、フィルタ部４１３２は、このパケットのinnerヘッダとouterヘッダとの5tupleを通す（ステップＳ８９）。
【０１２９】
これに対し、タイムアウト時刻がデフォルト値でない場合であり（ステップＳ８６：Ｎｏ）、この行の検知bitとステップＳ８４において計算した衝突検知bitとが同値である場合（ステップＳ９０：Ｙｅｓ）、フィルタ部４１３２は、このパケットが、既に到着済みであるフローのパケットであると判定し、このパケットのinnerヘッダとouterヘッダとの5tupleをフィルタする（ステップＳ９１）。
【０１３０】
一方、この行の検知bitと衝突検知bitとが異なる値である場合（ステップＳ９０：Ｎｏ）、フィルタ部４１３２は、衝突を検知し、開番地法を用いて、別の空のエントリに、処理対象のパケットのアドレスを登録する。そして、フィルタ部４１３２は、アドレスを登録した行のタイムアウト時刻を、デフォルト値から、現在時刻にx（sec）を加えた時刻に変更し（ステップＳ９２）、この行の検知bitをデフォルト値から衝突検知bitの値に変更する（ステップＳ９３）。続いて、フィルタ部４１３２は、処理対象のパケットのinnerヘッダとouterヘッダとの5tupleを通す（ステップＳ９４）。
【０１３１】
［ハッシュテーブルのエントリリフレッシュ処理］
次に、ハッシュテーブル１３２２Ｃのエントリリフレッシュ処理について説明する。図３８は、図３１に示すハッシュテーブル１３２２Ｃのエントリリフレッシュ処理の処理手順を示すフローチャートである。
【０１３２】
図３８に示すステップＳ１０１及びステップＳ１０２は、図２０に示すステップＳ４１及びステップＳ４２と同じ処理である。そして、フィルタ部４１３２は、検知bitをデフォルト値に変更して（ステップＳ１０３）、エントリをリフレッシュする。
【０１３３】
［実施の形態４の効果］
このように、実施の形態４に係る登録装置４１０は、衝突検知bitを計算し、ハッシュテーブル１３２２Ｂに登録されている検知bitと比較することによって、実施の形態４と同様に、衝突の発生を検知することができる。さらに、登録装置４１０は、衝突が検知されたフローについては、開番地法を用いて、別の空のエントリに登録する。
【０１３４】
このように、登録装置３１０は、異なる内容のinnerヘッダ情報及びouterヘッダ情報の組み合わせが、同一のハッシュ値として計算された場合であっても、一方の組み合わせをハッシュテーブル１３２２Ｃの空のエントリに登録する。この結果、実施の形態４によれば、情報の登録漏れを防止するとともに、ＤＢ２０への登録負荷を低減することを可能にする。
【０１３５】
［実施の形態５］
次に、実施の形態５について説明する。実施の形態５は、各機能の消費リソース量情報を基に、各機能をサーバ内の各コアに配備する。図３９は、実施の形態５に係る登録装置の構成の一例を示す図である。
【０１３６】
図３９に示すように、実施の形態５に係る登録装置５１０は、図３に示す制御部１３に代えて、制御部５１３を有する。制御部５１３は、制御部１３と同様の機能を有する。制御部５１３は、フォーマット変換部５１３４、ヘッダ登録部１３０及び振分部５１３７を有する。
【０１３７】
フォーマット変換部５１３４は、ネットワークＮを介して入力されたトンネルパケットを、フォーマットによらず、解析可能であるフォーマットに変換する。フォーマット変換部５１３４は、トンネリングを行うためにEtherヘッダ以降に付加された任意のプロトコルヘッダがスタックされたパケットから、解析対象以外のプロトコルヘッダを除外したフォーマットに変換する。フォーマット変換部５１３４は、判別部５１３５及び変換部５１３６を有する。
【０１３８】
判別部５１３５は、予め作成された判別ルールにしたがって、入力されたパケットの各プロトコルヘッダの種別と配置とを示すプロトコルスタックパターンを判別する。判別ルールは、例えば、他の装置で予め作成され、この判別部５１３５に事前設定される。
【０１３９】
判別ルールは、プロトコルスタックパターンが既知のパケットを下位ヘッダから順次捜査して作成されたプロトコルスタックパターンを判別する判別木、プロトコルスタックパターンが既知のパケットの内部の特定bit列を基に作成されたプロトコルスタックパターンを判別する判別論理式、または、標準化された各プロトコルのヘッダ情報を示すプロトコルconfigファイルである。判別ルールは、判別用情報１２２として、記憶部１２に記憶される。
【０１４０】
また、判別部５１３５は、複数の判別ルールを組み合わせて使用してもよい。例えば、判別部５１３５は、判別木または判別論理式を用いて判別が不可能なパケットについては、プロトコルconfigファイルを用いてプロトコルスタックパターンを判別してもよい。
【０１４１】
また、フォーマット変換部５１３４は、判別ルールを作成する学習部を有してもよい。学習部は、入力されたパケットについてプロトコルconfigファイルを用いて学習し、パケットのプロトコルスタックパターンを判別する判別ルールを作成する。学習部は、プロトコルconfigファイルを用いてパケットの下位ヘッダから順次捜査してプロトコルスタックパターンを解析し、解析結果を基にパケット内の特定bit列を基にプロトコルスタックパターンを判別する判別木または判別論理式を作成する。
【０１４２】
変換部５１３６は、判別部５１３５が判別したプロトコルスタックパターンを基に、パケットのフォーマットを、解析処理対象以外のプロトコルヘッダを除外したフォーマットに変換する。例えば、変換部５１３６は、トンネリングを行うためにEtherヘッダ以降に付加された任意のプロトコルヘッダがスタックされたパケットに対しパケットストリッピングを行う。
【０１４３】
ヘッダ登録部１３０は、一連のフローの最初のパケットのインナーヘッダ情報及びアウターヘッダ情報をＤＢ２０に登録する。ヘッダ登録部１３０は、抽出部１３１、フィルタ部１３２及び登録部１３３を有する。フィルタ部１３２は、フィルタ部２１３２，３１３２，４１３２のいずれかであってもよい。
【０１４４】
振分部５１３７は、登録装置５１０における各機能をＣＰＵコア上で動作させた際に処理オーバーが生じるpps（packets  per  second）量、言い換えると、パケットロスが生じるpps量を事前に計測し、該計測したpps量の値を基に各コアへの各機能の配備を事前に振り分ける。
【０１４５】
［振分処理の流れ］
具体的に、振分部５１３７による各コアへの各機能の振分処理の流れについて説明する。図４０は、実施の形態５における振分処理の流れを説明する図である。
【０１４６】
図４０では、サーバが、登録装置５１０に対応する。また、図４０のコアのうち、Ｒｘは、パケット受信機能を有する。Ｔｘは、パケット送信機能を有する。fctは、フォーマット変換部５１３４のフォーマット変換機能を有する。fctは、ヘッダ登録部１３０の抽出部１３１の機能も有する。in-outは、ヘッダ登録部１３０のフィルタ部１３２及び登録部１３３の機能を有する。
【０１４７】
fctまたはin-outは、パケット受信（ＣＰＵ）よりも低速となる。また、パケット受信（ＣＰＵ）は、パケット受信（ＮＩＣ）よりも低速となる。そのため，  システム全体の処理量を向上させるため、さらに「パケット受信（ＮＩＣ）」及び「パケット受信（ＣＰＵ）」でパケットの振り分けを行う必要がある。
【０１４８】
そこで、システム全体で、ある目標のトラヒック量を処理するため，以下の手順を行うことによって機能配備を行う。まず、振分部５１３７は、各機能をＣＰＵコア上で動作させた際に、処理オーバーが生じるpps量を、事前検証を通じて計測する（図４０の（１）参照）。そして、振分部５１３７は、目標のpps量を処理するために、各機能部が要求するＣＰＵコア数を計算し、各機能をコアごとに分散させて動作させる（図４０の（２）参照）。
【０１４９】
例えば、ＮＩＣのキューは短く、パケットロスを生じさせないためには、高速にデキュー／エンキューする必要がある。そのため、パケット受信／パケット送信は、それぞれ単独のコア（例えば、ＮＩＣのコアＲｘ、ＮＩＣのコアＴｘ）で動作させる。そして、fctとin-outとを同じコアで動作させると、fctの速度が劣化するため、fctとin-outとは、分離し、各々独立したコアで動作させる。すなわち、コアfctとコアin-outとは、図４０に示すように、それぞれ異なるコアで動作させる。
【０１５０】
［振分処理の処理手順］
次に、実施の形態５に係る振分処理の処理手順について説明する。図４１は、実施の形態に係る振分処理の処理手順のフローチャートである。
【０１５１】
図４１に示すように、振分部５１３７は、登録装置５１０における各機能をＣＰＵコア上で動作させた際に処理オーバーが生じるpps量を事前に計測する（ステップＳ１１１）。そして、振分部５１３７は、各機能部が要求するＣＰＵコア数を計算し（ステップＳ１１２）、計測したpps量の値を基に各コアへの各機能の配備を事前に振り分ける（ステップＳ１１３）。
【０１５２】
［実施の形態５の効果］
このように、実施の形態５では、各機能をＣＰＵコア上で動作させた際に，パケットロスが生じるpps量を事前に把握し、その値を基に、各コアへの各機能の配備を事前に決定する。この結果、実施の形態５によれば、システム全体で、ある目標ppsのトラヒックを、パケットロスなく、フォーマット変換及びinnerヘッダ情報とouterヘッダ情報の対応付けを処理する機能の配備を決定することができる。
【０１５３】
［実施の形態６］
次に、実施の形態６について説明する。実施の形態６において、登録装置は、分散された各コアから、時刻情報が付与されたインナーヘッダ情報及びアウターヘッダ情報を集約して収集し、同一のＤＢに登録する。図４２は、実施の形態６におけるＤＢ２０に対する情報の投入の流れを説明する図である。
【０１５４】
図４２に示すように、実施の形態６に係る登録装置（サーバ）は、分散された各コア（コアin-out）から、時刻情報が付された、パケットのinnerヘッダ情報とouterヘッダ情報との対応付け情報を集約して収集し、同一のＤＢ２０に投入する（図４２の（１）及び図４２の矢印Ｙ１参照）。
【０１５５】
［実施の形態６の効果］
トンネルプロトコルを用いたトラヒックは、時刻変化によりinnerヘッダ情報とouterヘッダ情報との組み合わせが変化する。これに対し、実施の形態６では、分散された各コアから、時刻情報が付された、パケットのinnerヘッダ情報とouterヘッダ情報との対応付け情報を集約して収集し、同一のＤＢ２０に投入する。
【０１５６】
これによって、実施の形態６では、時刻経過によりinnerヘッダ情報とouterヘッダ情報との対応関係が変化した場合でも、ＤＢ２０で対応付け情報を最新化可能とする。この結果、実施の形態６によれば、innerヘッダ情報とouterヘッダ情報との組み合わせが変化した際でも、ユーザは、最新のinnerヘッダ情報とouterヘッダ情報との対応関係を検索することができる。
【０１５７】
［実施の形態７］
次に、実施の形態７について説明する。実施の形態７では、フローコレクタと連携することによって、入力されるトラフィックのppsの分布及びコアの使用量に基づいてフローの振分先を決定する。
【０１５８】
図４３は、実施の形態７に係る通信システムの構成の一例を示す図である。図４３に示すように、実施の形態７に係る通信システム７０１は、図１に示す通信システム１と比して、フローコレクタ７４０を有する。
【０１５９】
フローコレクタ７４０は、入力されるフローのppsの分布情報及びコアの使用量に基づいて、パケット処理を行う各コアが処理オーバーとなる確率を最小とするようにフローの振り分けを制御する。
【０１６０】
［振分制御処理］
次に、図４４及び図４５を参照して、フローコレクタ７４０によるフローの振分制御処理について説明する。図４４及び図４５は、図４３に示すフローコレクタ７４０によるフローの振分制御処理を説明する図である。
【０１６１】
図４４に示すように、フローコレクタ７４０のpps分布計測部７４１には、常時、ｘFlowが送出されており、pps分布計測部７４１は、入力されるフローのppsの分布情報を計算する。具体的には、pps分布計測部７４１は、各フローのppsの過去データを保持し、時間平均、分散を計算する（図４３の＃常時参照）。フローコレクタ７４０では、pps分布計測部７４１からは、フローのppsの分布情報［（flow，μ，σ）］が振分制御部７４２に出力される。
【０１６２】
システムに入力されるトンネルトラフィックフローは、時間によりppsの揺らぎがある。そこで、振分制御部７４２は、入力されるフローのppsの分布情報及びコアの使用量に基づいて、パケット処理を行う各コアが処理オーバーとなる確率を最小とするようにフローの振り分けを制御する。なお、ここでは、キャリアＮＷで転送の都合上使用されるトンネル中には多数フローが入っており、各フローのppsの足し合わせは、中心極点定理より正規分布に近似できると暗に仮定している。
【０１６３】
振分制御部７４２は、事前に、パケット処理機能が１コアで処理可能なpps量が設定されている。そして、振分制御部７４２は、ユーザから、入力フロー（flow）の指示を受けると（図４４の＃０参照）、振分先コアを計算する（図４４の＃１参照）。そして、振分制御部７４２は、登録装置５１０に、新規入力flow及び振分先コアを送信し、フローの振り分けを指示する（図４４の＃２参照）。登録装置５１０では、振分部５１３７（不図示）は、フローコレクタ７４０による振分制御にしたがって、各コアへの各機能の配備を振り分ける。
【０１６４】
続いて、図４５を参照して、振分制御部７４２による振分先コアの計算処理について説明する。振分制御部７４２は、フローのppsの分布情報［（flow，μ，σ）］から、フローごとに、μ（pps）、σ（pps^2）を対応付けた表７４２１を作成する（図４５の＃１−０参照）。この際、振分制御部７４２は、表７４２１において、各フローが引込済みであるか否かを対応付ける。そして、振分制御部７４２は、表７４２１において、引き込み済みであるフローについては、振分先のコア情報を対応付ける。
【０１６５】
続いて、振分制御部７４２は、新規の入力flowを受け付けると、表７４２１を基に、仮に新規入力flowを各コアに振り分けた際に、コアの処理可能ppsを超える確率を計算する（図４５の＃１−１参照）。そして、振分制御部７４２は、＃１−１において消え算した確率が最も小さいコアを、新規の入力flow（引き込みflow）の振分先コアに選定する（図４５の＃１−２参照）。
【０１６６】
［振分制御処理の処理手順］
次に、通信システム７０１におけるコアへの振分制御処理の処理手順を説明する。図４６は、図４３に示す通信システム７０１におけるコアへの振分制御処理の処理手順を示すシーケンス図である。
【０１６７】
図４６に示すように、フローコレクタ７４０は、送出されたトンネルトラフィックフローを取得すると（ステップＳ１２１）、各フローのppsの過去データを保持し、フローのppsの分布情報を計算する（ステップＳ１２２）。
【０１６８】
そして、フローコレクタ７４０は、新規入力フローの指示を受けると（ステップＳ１２３）、パケット処理を行う各コアが処理オーバーとなる確率を最小とするように振分先コアを選定する（ステップＳ１２４）。フローコレクタ７４０は、入力フロー、振分先コアを示す情報を、振分制御情報として登録装置５１０に送信する（ステップＳ１２５）。登録装置５１０は、フローコレクタ７４０による振分制御にしたがって、式フローを、選定されたコアに振り分ける（ステップＳ１２６）。
【０１６９】
［実施の形態７の効果］
このように、実施の形態７では、フローコレクタ７４０と連携することによって、時間や時期によるトンネルトラフィックフローの揺らぎを考慮しながら、パケット処理を行う登録装置５１０の各コアが処理オーバーとなる確率を最小とするようにフローの振り分けを制御する。したがって、実施の形態７によれば、特定のコアへの処理の集中を防ぎ、パケットロスを低減することが可能になる。
【０１７０】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１７１】
また、本実施の形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともでき、あるいは、手動的に行なわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１７２】
［プログラム］
図４７は、プログラムが実行されることにより、登録装置１０，２１０，３１０，４１０，５１０が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【０１７３】
メモリ１０１０は、ＲＯＭ１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【０１７４】
ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、登録装置１０，２１０，３１０，４１０，５１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、登録装置１０，２１０，３１０，４１０，５１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（Solid  State  Drive）により代替されてもよい。
【０１７５】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【０１７６】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１７７】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【０１７８】
１，７０１  通信システム
１０，２１０，３１０，４１０，５１０  登録装置
２０  データベース（ＤＢ）
３０  検索装置
１１  通信部
１２  記憶部
１３，２１３，３１３，４１３，５１３  制御部
１２１  フロー継続時間分布情報
１３０  ヘッダ登録部
１３１  抽出部
１３２，２１３２，３１３２，４１３２  フィルタ部
１３３  登録部
７４０  フローコレクタ
５１３４  フォーマット変換部
５１３５  判別部
５１３６  変換部
５１３７  振分部
Ｎ  ネットワーク
【図１】
2020174257.tif 000003
【図２】
2020174257.tif 000004
【図３】
2020174257.tif 000005
【図４】
2020174257.tif 000006
【図５】
2020174257.tif 000007
【図６】
2020174257.tif 000008
【図７】
2020174257.tif 000009
【図８】
2020174257.tif 000010
【図９】
2020174257.tif 000011
【図１０】
2020174257.tif 000012
【図１１】
2020174257.tif 000013
【図１２】
2020174257.tif 000014
【図１３】
2020174257.tif 000015
【図１４】
2020174257.tif 000016
【図１５】
2020174257.tif 000017
【図１６】
2020174257.tif 000018
【図１７】
2020174257.tif 000019
【図１８】
2020174257.tif 000020
【図１９】
2020174257.tif 000021
【図２０】
2020174257.tif 000022
【図２１】
2020174257.tif 000023
【図２２】
2020174257.tif 000024
【図２３】
2020174257.tif 000025
【図２４】
2020174257.tif 000026
【図２５】
2020174257.tif 000027
【図２６】
2020174257.tif 000028
【図２７】
2020174257.tif 000029
【図２８】
2020174257.tif 000030
【図２９】
2020174257.tif 000031
【図３０】
2020174257.tif 000032
【図３１】
2020174257.tif 000033
【図３２】
2020174257.tif 000034
【図３３】
2020174257.tif 000035
【図３４】
2020174257.tif 000036
【図３５】
2020174257.tif 000037
【図３６】
2020174257.tif 000038
【図３７】
2020174257.tif 000039
【図３８】
2020174257.tif 000040
【図３９】
2020174257.tif 000041
【図４０】
2020174257.tif 000042
【図４１】
2020174257.tif 000043
【図４２】
2020174257.tif 000044
【図４３】
2020174257.tif 000045
【図４４】
2020174257.tif 000046
【図４５】
2020174257.tif 000047
【図４６】
2020174257.tif 000048
【図４７】
2020174257.tif 000049