(57)【要約】      （修正有）【課題】フローエントリの追加に伴う競合を検出する処理の負荷を軽減する。【解決手段】一態様に係る情報処理装置は、情報処理装置は、フローを特定する条件と、当該フローのパケットに対する処理内容とを対応付けるフローエントリを記憶する情報処理装置であって、新たに新規フローエントリを記憶する場合に、当該新規フローエントリの処理内容の種類と、上記記憶されているフローエントリの処理内容の種類とに基づいて、上記記憶されているフローエントリの中から、新規フローエントリに対する競合候補を選定し、競合候補に選定されたフローエントリの中から、新規フローエントリと競合するフローエントリを検出する。【選択図】図８Ａ
2017228857.tif 000002
【特許請求の範囲】
【請求項１】
フローを特定する条件と、当該フローのパケットに対する処理内容とを対応付けるフローエントリを記憶する情報処理装置において、
新たに新規フローエントリを記憶する場合に、当該新規フローエントリの前記処理内容の種類と、前記記憶されているフローエントリの前記処理内容の種類とに基づいて、前記記憶されているフローエントリの中から、前記新規フローエントリに対する競合候補を選定する選定部と、
前記競合候補に選定された前記フローエントリの中から、前記新規フローエントリと競合するフローエントリを検出する検出部と
を有する情報処理装置。
【請求項２】
前記種類に、転送許可のタイプ及び転送拒否のタイプが含まれる
請求項１記載の情報処理装置。
【請求項３】
前記選定部は、
前記新規フローエントリの前記種類に該当しないことを選定条件として、前記競合候補を選定する
請求項１又は２記載の情報処理装置。
【請求項４】
前記フローエントリは、前記条件及び前記処理内容に優先度を対応付け、
前記情報処理装置は、更に、
前記新規フローエントリの前記優先度と前記競合候補に選定された前記フローエントリの前記優先度との比較結果に応じて、競合の判定方式を選択する選択部
を有し、
前記検出部は、前記選択された判定方式に従って、前記新規フローエントリと競合する前記フローエントリを検出する
請求項１乃至３のいずれか１つ記載の情報処理装置。
【請求項５】
前記選択部は、
前記競合候補に選定された前記フローエントリの前記優先度が前記新規フローエントリの前記優先度よりも高い場合に、第１判定方式を選択し、前記新規フローエントリの前記優先度が前記競合候補に選定された前記フローエントリの前記優先度よりも高い場合に、第２判定方式を選択し、更に、前記競合候補に選定された前記フローエントリの前記優先度が前記新規フローエントリの前記優先度と等しい場合に、第３判定方式を選択し、
前記検出部は、
前記第１判定方式において、前記競合候補に選定された前記フローエントリの前記条件に含まれる下位条件のすべてが、それぞれ前記新規フローエントリの前記条件に含まれる下位条件のいずれかと一致する場合に、前記競合候補に選定された前記フローエントリが前記新規フローエントリと競合すると判定し、
前記第２判定方式において、前記新規フローエントリの前記下位条件のすべてが、それぞれ前記競合候補に選定された前記フローエントリの前記下位条件のいずれかと一致する場合に、前記競合候補に選定された前記フローエントリが前記新規フローエントリと競合すると判定し、
前記第３判定方式において、前記新規フローエントリの前記下位条件と前記競合候補に選定された前記フローエントリの前記下位条件とが、すべて一致する場合に、前記競合候補に選定された前記フローエントリが前記新規フローエントリと競合すると判定する
請求項４記載の情報処理装置。
【請求項６】
前記選定部は、
更に、前記新規フローエントリよりも前記優先度が高く、且つ前記新規フローエントリの前記条件に含まれる下位条件の数以下の下位条件を前記条件に含むこと、前記新規フローエントリよりも前記優先度が低く、且つ前記新規フローエントリの前記下位条件数以上の下位条件を前記条件に含むこと、又は前記新規フローエントリと前記優先度が等しいことを前記選定条件に加えて、前記競合候補を選定する
請求項３記載の情報処理装置。
【請求項７】
フローを特定する条件と、当該フローのパケットに対する処理内容とを対応付けるフローエントリを記憶するコンピュータにおいて、
新たに新規フローエントリを記憶する場合に、当該新規フローエントリの前記処理内容の種類と、前記記憶されているフローエントリの前記処理内容の種類とに基づいて、前記記憶されているフローエントリの中から、前記新規フローエントリに対する競合候補を選定し、
前記競合候補に選定された前記フローエントリの中から、前記新規フローエントリと競合するフローエントリを検出する
処理を実行する検査方法。
【請求項８】
ネットワーク機器と、
フローを特定する条件と、当該フローのパケットに対する、前記ネットワーク機器における処理内容とを対応付けるフローエントリを記憶する情報処理装置と
を有する制御ネットワークシステムであって、
前記情報処理装置は、
新たに新規フローエントリを記憶する場合に、当該新規フローエントリの前記処理内容の種類と、前記記憶されているフローエントリの前記処理内容の種類とに基づいて、前記記憶されているフローエントリの中から、前記新規フローエントリに対する競合候補を選定する選定部と、
前記競合候補に選定された前記フローエントリの中から、前記新規フローエントリと競合するフローエントリを検出する検出部と
を有する制御ネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク機器の機能制御に関する。
【背景技術】
【０００２】
従来のネットワーク機器（例えば、スイッチ）は、それぞれが経路の選択やデータの転送などの機能を有している。そのため、ネットワーク機器に対する設定の変更のようなメンテナンス作業も、ネットワーク機器毎或いはネットワーク機器の種類毎に行なう形態が一般的である。また、ネットワークの構成を変更する場合の手間も多い。
【０００３】
近年、ネットワーク機器の機能を単一のソフトウェアによって集中的に制御し、ネットワークの構成変更やネットワーク機器の設定などを、柔軟且つ動的に変更できるようにするＳＤＮ（Software Defined Networking）という技術が出現した。
【０００４】
ＳＤＮによれば、ネットワーク機器の機能制御をソフトウェアによって一ヵ所で集中的に管理することにより、ネットワーク機器にどのような動作をさせるか随時設定することができる。一般的に、パケットの扱いを定めたフローエントリをＳＤＮコントローラに登録しておくことによって、ＳＤＮコントローラがネットワーク機器における動作を制御する。
【０００５】
しかし、このように集中管理するＳＤＮコントローラを用いる環境で、例えば複数の制御アプリケーション（ＳＤＮコントローラを用いて通信を制御するアプリケーション）を展開しようとすると、ネットワーク機器の動作に関して不都合が生じることもある。また、それを未然に防止するためにフローエントリを点検する手間は煩雑である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−１５６７２号公報
【特許文献２】特開２００２−１７６４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、一側面では、フローエントリの追加に伴う競合を検出する処理の負荷を軽減することである。
【課題を解決するための手段】
【０００８】
一態様に係る情報処理装置は、フローを特定する条件と、当該フローのパケットに対する処理内容とを対応付けるフローエントリを記憶する情報処理装置であって、（Ａ）新たに新規フローエントリを記憶する場合に、当該新規フローエントリの処理内容の種類と、上記記憶されているフローエントリの処理内容の種類とに基づいて、上記記憶されているフローエントリの中から、新規フローエントリに対する競合候補を選定する選定部と、（Ｂ）競合候補に選定されたフローエントリの中から、新規フローエントリと競合するフローエントリを検出する検出部とを有する。
【発明の効果】
【０００９】
一側面としては、フローエントリの追加に伴う競合を検出する処理の負荷を軽減することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、ネットワークの例を示す図である。
【図２】図２は、フローテーブルに基づく動作例を示す図である。
【図３】図３は、フローエントリが競合する例を示す図である。
【図４】図４は、新規フローエントリと既登録フローエントリとの対比を示す図である。
【図５】図５は、競合の判定パターンを示す図である。
【図６Ａ】図６Ａは、検出処理フローを示す図である。
【図６Ｂ】図６Ｂは、検出処理フローを示す図である。
【図７Ａ】図７Ａは、パケット条件の関係を判定する処理フローを示す図である。
【図７Ｂ】図７Ｂは、パケット条件の関係を判定する処理フローを示す図である。
【図８Ａ】図８Ａは、各テーブルの例を示す図である。
【図８Ｂ】図８Ｂは、フローテーブル及びタイプテーブルの例を示す図である。
【図９Ａ】図９Ａは、ＳＤＮコントローラのモジュール構成例を示す図である。
【図９Ｂ】図９Ｂは、検査装置のモジュール構成例を示す図である。
【図１０】図１０は、前処理（Ａ）フローを示す図である。
【図１１】図１１は、メイン処理（Ａ）フローを示す図である。
【図１２】図１２は、競合の判定パターンを示す図である。
【図１３】図１３は、検出処理フローを示す図である。
【図１４】図１４は、第１判定方式による判定処理フローを示す図である。
【図１５】図１５は、第２判定方式による判定処理フローを示す図である。
【図１６】図１６は、第３判定方式による判定処理フローを示す図である。
【図１７】図１７は、実施の形態２における各テーブルの例を示す図である。
【図１８】図１８は、前処理（Ｂ）フローを示す図である。
【図１９Ａ】図１９Ａは、メイン処理（Ｂ）フローを示す図である。
【図１９Ｂ】図１９Ｂは、メイン処理（Ｂ）フローを示す図である。
【図１９Ｃ】図１９Ｃは、メイン処理（Ｂ）フローを示す図である。
【図１９Ｄ】図１９Ｄは、メイン処理（Ｂ）フローを示す図である。
【図２０】図２０は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
ＳＤＮでは、例えばＯｐｅｎＦｌｏｗなどのプロトコルにより、ネットワーク全体の機能をＳＤＮコントローラで集中的に制御する。図１に示した例では、制御アプリケーションの開発者やネットワーク管理者であるユーザが、自らのユーザ端末における操作によって、ネットワーク機器における機能制御をＳＤＮコントローラに設定する。
【００１２】
但し、ＳＤＮコントローラはオープンなＡＰＩ（Application Programming Interface）を提供するので、制御アプリケーションからネットワークを制御することも考えられる。その場合には、制御アプリケーションが、ネットワーク機器における機能制御をＳＤＮコントローラに設定する。
【００１３】
図１に示した例で、制御対象となるネットワークは、４つの通信装置、ホスト及びサーバを有している。図１に示した通信装置は、スイッチである。尚、この例における通信装置は、ネットワーク機器の例であって、他の種類のネットワーク機器（例えば、ルータ）を制御対象としてもよい。
【００１４】
ネットワーク機器に対する機能制御の設定は、フローエントリを単位として行われる。ＳＤＮコントローラは、フローエントリを受け付けると、ネットワーク機器に対応するフローテーブルに当該フローエントリを登録する。フローテーブルは、通常複数のフローエントリを有している。フローエントリには、パケット条件と、処理内容と、優先度とが設定されている。パケット条件は、ネットワーク機器における処理対象となるパケットを選定するための条件である。パケット条件は、通信フローを特定する条件でもある。パケット条件は、マッチ条件と呼ばれることもある。処理内容は、パケット条件に適合したパケットに対する処理を定める。優先度は、当該条件及び当該処理内容の適用に関する優先順位を数値の大きさで表している。
【００１５】
フローテーブルは、ＳＤＮコントローラから制御ネットワークを介してネットワーク機器に伝送される。ネットワーク機器は、受け取ったフローテーブルに基づいて動作する。例えば、パケットを転送する動作が行われる。
【００１６】
通信装置は、図示するようにそれらのポート間で接続されている。また、サーバは、番号「８０」のｔｃｐポートを用いるサービスＡと番号「２２」のｔｃｐポートを用いるサービスＢとを提供している。そして、ホストのＭＡＣアドレスは、「００：００：００：００：００：０２」であり、サーバのＭＡＣアドレスは、「００：００：００：００：００：０１」であるものとする。
【００１７】
図２に、フローテーブルに基づく動作例を示す。通信装置（スイッチ）は、パケットを受信すると、受信したパケットのヘッダ情報からパケット条件の判定に用いられるデータを抽出する。そして、通信装置（スイッチ）は、フローテーブルにおいて、パケット条件に合致するフローエントリを探索する。このとき、優先度の高いフローエントリから順に、パケット条件との適合を判定する。図２の例では、１番目のフローエントリ、２番目のフローエントリ、３番目のフローエントリの順に、判定対象が特定される。
【００１８】
そして、通信装置（スイッチ）は、最初にパケット条件が合致したフローエントリに設定されている処理内容を実行する。従って、当該フローエントリよりも優先度が低いフローエントリは、無視される。
【００１９】
パケット条件は、１又は複数の下位条件を含んでいる。複数の下位条件を含んでいる場合には、全ての下位条件が成立する場合に、パケット条件が成立すると判定される。つまり、パケット条件は、下位条件の論理積によって定まる。下位条件は、例えば送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、イーサネット（登録商標）の種別、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ＴＣＰ（Transmission Control Protocol）ポート番号、宛先ＴＣＰポート番号、或いは当該パケットを受信した物理ポートの番号などのパラメータに関する。尚、下位条件として設定されていないパラメータに関しては、無視される。尚、ここでは、ＴＣＰの例を示すが、ＵＤＰ（User Datagram Protocol）の場合も同様である。
【００２０】
この例で、通信装置（ＳＷ２）において受信したパケットに設定されている宛先ＭＡＣアドレスがサーバに該当し、且つ宛先ＴＣＰポート番号がｈｔｔｐ（Hypertext Transfer Protocol）のためのポートに該当する場合に、当該パケットは、通信装置（ＳＷ２）のポート２から送出される。それ以外の場合に、通信装置（ＳＷ２）において受信したパケットに設定されている宛先ＭＡＣアドレスがサーバに該当し、且つ宛先ＴＣＰポート番号がｓｓｈ（Secure Shell）のためのポートに該当すれば、パケットは、破棄される。更に、それ以外の場合に、通信装置（ＳＷ２）において受信したパケットに設定されている宛先ＭＡＣアドレスがサーバに該当すれば、当該パケットは、通信装置（ＳＷ２）のポート２から送出される。つまり、宛先ＭＡＣアドレスがサーバに該当し、且つ宛先ＴＣＰポート番号がｈｔｔｐのためのポート又はｓｓｈのためのポートのいずれにも該当しないパケットは、結果的にポート２から送出されることになる。尚、図中「ｄｒｏｐ」は破棄を意味し、「ｏｕｔｐｕｔ」は転送を意味する。
【００２１】
例えば複数の制御アプリケーションが独自にフローエントリを設定する場合には、「フローエントリの競合」が発生することがある。「フローエントリの競合」とは、２以上のフローエントリに着目した場合に、いずれかのフローエントリの影響を受けて、他方のフローエントリに基づく動作が一切行われない状態になることをいう。この場合、他方のフローエントリを設定した意図が反映されないことになる。
【００２２】
図３に、フローエントリが競合する例を示す。この例で、１番目のフローエントリは、アプリケーションＡによって設定されたものである。また、２番目のフローエントリは、アプリケーションＢによって設定されたものである。アプリケーションＡ及びアプリケーションＢは、いずれも上述した制御アプリケーションに該当する。
【００２３】
２番目のフローエントリは、受信したパケットに設定されている宛先ＭＡＣアドレスがサーバに該当し、且つＴＣＰポート番号がｓｓｈのためのポートに該当すれば、当該パケットを破棄させるというアプリケーションＢの意図に基づいて設定されている。
【００２４】
しかし、優先度の高い１番目のフローエントリが先に判定対象となる。受信したパケットに設定されている宛先ＭＡＣアドレスがサーバに該当すれば、他の条件は無視して、当該パケットは通信装置（ＳＷ２）のポート２から送出される。つまり、ＴＣＰポート番号がｓｓｈのためのポートに該当するパケットも、ポート２から送出されることになる。
【００２５】
この例で、１番目のフローエントリの影響によって、２番目のフローエントリに基づく動作は一切行われない状態となっている。つまり、１番目のフローエントリと２番目のフローエントリとが競合している。
【００２６】
本実施の形態では、ＳＤＮコントローラ又は検査装置において、このような「フローエントリの競合」を検知するようにする。以下では、主にＳＤＮコントローラが「フローエントリの競合」を検知する例を説明する。尚、このように動作させる例は、ＯｐｅｎＦｌｏｗに限らない。本実施の形態を、ＯｐｅｎＦｌｏｗと同様に動作する他のプロトコルに適用させるようにしてもよい。
【００２７】
具体的には、図４に示すように、ＳＤＮコントローラは、新規フローエントリを受け付けた時点で、共通の通信装置に関する既登録フローエントリの夫々と新規フローエントリとを比較して、競合の有無を判断する。
【００２８】
尚、下位条件「ｄｓｔ＝ｓｅｒｖｅｒ」（宛先ＭＡＣアドレスがサーバに該当すること）を「Ａ１」と記す。下位条件「ｄｓｔ＝ｈｏｓｔ」（宛先ＭＡＣアドレスがホストに該当すること）を「Ａ２」と記す。下位条件「ｓｒｃ＝ｈｏｓｔ」（送信元ＭＡＣアドレスがホストに該当すること）を「Ｂ１」と記す。下位条件「ｓｒｃ＝ｓｅｒｖｅｒ」（送信元ＭＡＣアドレスがサーバに該当すること）を「Ｂ２」と記す。下位条件「ｔｃｐ＿ｐｏｒｔ＝８０」（ＴＣＰポート番号がｈｔｔｐのためのポートに該当すること）を「Ｃ１」と記す。下位条件「ｔｃｐ＿ｐｏｒｔ＝２２」（ＴＣＰポート番号がｓｓｈのためのポートに該当すること）を「Ｃ２」と記す。
【００２９】
図４に示した１番目の既登録フローエントリと新規フローエントリとは、競合している。フローテーブルに新規フローエントリを登録したとしても、１番目の既登録フローエントリの影響によって、新規フローエントリに基づく動作は一切行われないからである。
【００３０】
また、図４に示した４番目の既登録フローエントリと新規フローエントリとは、競合している。フローテーブルに新規フローエントリを登録すると、新規フローエントリの影響によって、４番目の既登録フローエントリに基づく動作は一切行われなくなるからである。
【００３１】
ここで、本実施の形態に係る実施例について説明する前に、フローエントリの競合を検知する或る処理例について説明する。この処理例における判定パターンを、テーブル形式で図５に示す。各レコードは、１つの判定例に相当する。
【００３２】
１番目のレコードでは、新規フローエントリのパケット条件と、既登録フローエントリのパケット条件とが一致せず、更に包含関係も有していない。このような場合には、処理対象となるパケットが別であるので競合は生じない。この例は、後述する判定のパターンＡに相当する。
【００３３】
２番目のレコードでは、新規フローエントリのパケット条件と、既登録フローエントリのパケット条件とが一致する。但し、両フローエントリの処理内容が同じである。実際には、優先度の高い既登録フローエントリにおける処理内容が実行されるが、優先度の低い新規フローエントリの観点において自身の処理内容が実行されたことと実質的に等しい。従って、このような場合も競合は生じていないものとする。この例も、後述する判定のパターンＡに相当する。
【００３４】
３番目のレコードでは、新規フローエントリのパケット条件と、既登録フローエントリのパケット条件とが一致する。そして、両フローエントリの処理内容が異なるので、いずれか一方のフローエントリの処理内容が一切実行されないことになる。この例では、既登録フローエントリが優先されるので、新規フローエントリに設定されている処理内容「ｄｒｏｐ」（破棄）が行われることはない。つまり、競合が生じる。この例は、後述する判定のパターンＢに相当する。
【００３５】
４番目のレコードでは、既登録フローエントリのパケット条件が新規フローエントリのパケット条件を包含している。そして、既登録フローエントリの方が、優先度が高い。従って、新規フローエントリのパケット条件に合致するパケットは、先に既登録フローエントリのパケット条件に合致すると判定され、既登録フローエントリに基づく処理対象となる。尚、既登録フローエントリの処理内容「ｏｕｔｐｕｔ：ｐｏｒｔ１」（ポート１からの送出）は、新規フローエントリの処理内容「ｄｒｏｐ」（破棄）と異なるので、新規フローエントリの処理内容が実質的に実行されることはない。従って、このような場合には、競合が生じる。この例は、後述する判定のパターンＣに相当する。
【００３６】
５番目のレコードでは、４番目のレコードの場合と同様に、既登録フローエントリのパケット条件が新規フローエントリのパケット条件を包含している。同じく、既登録フローエントリの処理内容「ｏｕｔｐｕｔ：ｐｏｒｔ１」（ポート１からの送出）は、新規フローエントリの処理内容「ｄｒｏｐ」（破棄）と異なる。しかし、５番目のレコードの場合には、新規フローエントリの方が、優先度が高い。従って、新規フローエントリのパケット条件に合致するパケットに対して、新規フローエントリの処理内容が実行される。この場合に、いずれのフローエントリの処理内容も実行されることがあるので、競合が生じることにはならない。この例は、後述する判定のパターンＤに相当する。
【００３７】
６番目のレコードでは、新規フローエントリのパケット条件が既登録フローエントリのパケット条件を包含している。尚、「Ｄ１」は、下位条件「ｉｎｇｒｅｓｓ＿ｐｏｒｔ＝１」（受信した物理ポートの番号が１であること）を意味する。そして、新規フローエントリの方が、優先度が高い。従って、既登録フローエントリのパケット条件に合致するパケットは、先に新規フローエントリのパケット条件に合致すると判定され、新規フローエントリによる処理対象となる。新規フローエントリの処理内容「ｄｒｏｐ」（破棄）は、既登録フローエントリの処理内容「ｏｕｔｐｕｔ：ｐｏｒｔ１」（ポート１からの送出）と異なるので、既登録フローエントリの処理内容が実質的に実行されることはない。従って、このような場合には、競合が生じる。この例は、後述する判定のパターンＥに相当する。
【００３８】
７番目のレコードでは、６番目のレコードの場合と同様に、新規フローエントリのパケット条件が既登録フローエントリのパケット条件を包含している。同じく、新規フローエントリの処理内容「ｄｒｏｐ」（破棄）は、既登録フローエントリの処理内容「ｏｕｔｐｕｔ：ｐｏｒｔ１」（ポート１からの送出）と異なる。しかし、７番目のレコードの場合には、既登録フローエントリの方が、優先度が高い。従って、既登録フローエントリのパケット条件に合致するパケットに対して、既登録フローエントリの処理内容が実行される。この場合に、いずれのフローエントリの処理内容も実行されることがあるので、競合が生じることにはならない。この例は、後述する判定のパターンＦに相当する。
【００３９】
図６Ａ及び図６Ｂに、図５の判定例を具体化した検出処理フローを示す。まず、ＳＤＮコントローラの判定部は、パケット条件の関係を判定する処理を実行する（Ｓ６０１）。当該処理で、新規フローエントリのパケット条件と既登録フローエントリのパケット条件との関係を判定する。当該処理の詳細を図７Ａ及び図７Ｂに示す。
【００４０】
図７Ａの説明に移る。ＳＤＮコントローラの判定部は、新規フローエントリのパケット条件における下位条件数と、既登録フローエントリのパケット条件における下位条件数とが同じであるか否かを判定する（Ｓ７０１）。両方の下位条件数が同じであると判定した場合には、ＳＤＮコントローラの判定部は、新規フローエントリのパケット条件における下位条件と既登録フローエントリのパケット条件における下位条件とが全て一致するか否かを判定する（Ｓ７０３）。両方の下位条件が全て一致する場合には、ＳＤＮコントローラの判定部は、新規フローエントリのパケット条件と既登録フローエントリのパケット条件とが一致すると判定する（Ｓ７０５）。そして、パケット条件の関係を判定する処理を終え、呼び出し元の検出処理に復帰する。
【００４１】
一方、Ｓ７０１において、新規フローエントリのパケット条件における下位条件数と、既登録フローエントリのパケット条件における下位条件数とが異なると判定した場合には、Ｓ７０７の処理に移る。また、Ｓ７０３において、新規フローエントリのパケット条件における下位条件と既登録フローエントリのパケット条件における下位条件とが、少なくとも一部において一致しないと判定した場合にも、Ｓ７０７の処理に移る。
【００４２】
ＳＤＮコントローラの判定部は、既登録フローエントリのパケット条件における下位条件数が新規フローエントリのパケット条件における下位条件数より少ないか否かを判定する（Ｓ７０７）。既登録フローエントリのパケット条件における下位条件数が新規フローエントリのパケット条件における下位条件数より少ないと判定した場合には、ＳＤＮコントローラの判定部は、既登録フローエントリのパケット条件における全ての下位条件が、それぞれ新規フローエントリのパケット条件における下位条件のいずれかと一致するか否かを判定する（Ｓ７０９）。既登録フローエントリのパケット条件における全ての下位条件が、それぞれ新規フローエントリのパケット条件における下位条件のいずれかと一致する場合には、ＳＤＮコントローラの判定部は、既登録フローエントリのパケット条件が新規フローエントリのパケット条件を包含すると判定する（Ｓ７１１）。そして、パケット条件の関係を判定する処理を終え、呼び出し元の検出処理に復帰する。
【００４３】
一方、Ｓ７０７において、既登録フローエントリのパケット条件における下位条件数が新規フローエントリのパケット条件における下位条件数より少なくないと判定した場合には、端子Ｂを介して、図７Ｂに示したＳ７１３の処理に移る。また、Ｓ７０９において、既登録フローエントリのパケット条件における下位条件の少なくとも一部が、新規フローエントリのパケット条件における下位条件のいずれとも一致しないと判定した場合にも、端子Ｂを介して、図７Ｂに示したＳ７１３の処理に移る。
【００４４】
図７Ｂの説明に移る。ＳＤＮコントローラの判定部は、新規フローエントリのパケット条件における下位条件数が既登録フローエントリのパケット条件における下位条件数より少ないか否かを判定する（Ｓ７１３）。新規フローエントリのパケット条件における下位条件数が既登録フローエントリのパケット条件における下位条件数より少ないと判定した場合には、ＳＤＮコントローラの判定部は、新規フローエントリのパケット条件における全ての下位条件が、それぞれ既登録フローエントリのパケット条件における下位条件のいずれかと一致するか否かを判定する（Ｓ７１５）。新規フローエントリのパケット条件における全ての下位条件が、それぞれ既登録フローエントリのパケット条件における下位条件のいずれかと一致する場合には、ＳＤＮコントローラの判定部は、新規フローエントリのパケット条件が既登録フローエントリのパケット条件を包含すると判定する（Ｓ７１７）。そして、パケット条件の関係を判定する処理を終え、呼び出し元の検出処理に復帰する。
【００４５】
一方、Ｓ７１３において、新規フローエントリのパケット条件における下位条件数が既登録フローエントリのパケット条件における下位条件数より少なくないと判定した場合には、ＳＤＮコントローラの判定部は、両方のパケット条件が一致せず、更に包含関係でもないと判定する（Ｓ７１９）。また、Ｓ７１５において、新規フローエントリのパケット条件における下位条件の少なくとも一部が既登録フローエントリのパケット条件における下位条件のいずれとも一致しないと判定した場合にも、ＳＤＮコントローラの判定部は、両方のパケット条件が一致せず、更に包含関係でもないと判定する（Ｓ７１９）。そして、パケット条件の関係を判定する処理を終え、呼び出し元の検出処理に復帰する。
【００４６】
図６Ａの説明に戻る。ＳＤＮコントローラの検出部は、新規フローエントリのパケット条件と既登録フローエントリのパケット条件とが一致又は包含関係であるか否かによって処理を分岐させる（Ｓ６０３）。両パケット条件が一致せず、更に包含関係でもない場合には、ＳＤＮコントローラの検出部は、新規フローエントリと既登録フローエントリとにおいて競合はない(パターンＡ)と判定する（Ｓ６０５）。
【００４７】
一方、両パケット条件が一致又は包含関係である場合には、ＳＤＮコントローラの検出部は、新規フローエントリの処理内容と既登録フローエントリの処理内容が不一致であるか否かを判定する（Ｓ６０７）。新規フローエントリの処理内容と既登録フローエントリの処理内容が不一致でないと判定した場合、つまり両処理内容が一致する場合には、ＳＤＮコントローラの検出部は、新規フローエントリと既登録フローエントリとにおいて競合はない(パターンＡ)と判定する（Ｓ６０５）。
【００４８】
Ｓ６０７において、新規フローエントリの処理内容と既登録フローエントリの処理内容が不一致であると判定した場合には、ＳＤＮコントローラの検出部は、新規フローエントリのパケット条件と既登録フローエントリのパケット条件とが一致するか否かによって処理を分岐させる（Ｓ６０９）。両パケット条件が一致する場合には、ＳＤＮコントローラの検出部は、新規フローエントリと既登録フローエントリとが競合する(パターンＢ)と判定する（Ｓ６１１）。
【００４９】
一方、新規フローエントリのパケット条件と既登録フローエントリのパケット条件とが一致しない場合には、端子Ａを介して、図６Ｂに示したＳ６１３の処理に移る。
【００５０】
図６Ｂの説明に移る。ＳＤＮコントローラの検出部は、既登録フローエントリのパケット条件が新規フローエントリのパケット条件を包含する関係であるか否かによって処理を分岐させる（Ｓ６１３）。既登録フローエントリのパケット条件が新規フローエントリのパケット条件を包含する関係である場合には、ＳＤＮコントローラの検出部は、既登録フローエントリの優先度が新規フローエントリの優先度以上であるか否かを判定する（Ｓ６１５）。既登録フローエントリの優先度が新規フローエントリの優先度以上であると判定した場合には、ＳＤＮコントローラの検出部は、新規フローエントリと既登録フローエントリとが競合する(パターンＣ)と判定する（Ｓ６１７）。
【００５１】
Ｓ６１５において、既登録フローエントリの優先度が新規フローエントリの優先度より低いと判定した場合には、ＳＤＮコントローラの検出部は、新規フローエントリと既登録フローエントリとにおいて競合はない(パターンＤ)と判定する（Ｓ６１９）。
【００５２】
Ｓ６１３の分岐において、既登録フローエントリのパケット条件が新規フローエントリのパケット条件を包含する関係ではない場合、つまり新規フローエントリのパケット条件が既登録フローエントリのパケット条件を包含する関係である場合には、ＳＤＮコントローラの検出部は、新規フローエントリの優先度が既登録フローエントリの優先度以上であるか否かを判定する（Ｓ６２１）。新規フローエントリの優先度が既登録フローエントリの優先度以上であると判定した場合には、ＳＤＮコントローラの検出部は、新規フローエントリと既登録フローエントリとが競合する(パターンＥ)と判定する（Ｓ６２３）。
【００５３】
一方、新規フローエントリの優先度が既登録フローエントリの優先度より低いと判定した場合には、ＳＤＮコントローラの検出部は、新規フローエントリと既登録フローエントリとにおいて競合はない(パターンＦ)と判定する（Ｓ６２５）。
【００５４】
上述した例では、図７ＡのＳ７０３、Ｓ７０９及び図７ＢのＳ７１５において下位条件の一致を判定する回数が多くなり易い。下位条件の一致を判定する処理は比較命令の実行回数が多いため、結果的に検出処理全体の負荷が増えることになる。
【００５５】
例えば複数の制御アプリケーションが動作する形態では、フローエントリの数も多くなる。また、パケット条件に含まれる下位条件も上述した例よりも多くなる。その結果、競合の検出に要する処理時間が長くなり、ＳＤＮの利点である柔軟なネットワーク運用が図り難い。そこで、本実施の形態では、フローエントリ同士の競合を検出する処理の負荷を削減する。
【００５６】
図８Ａに、本実施の形態に係る各テーブルの例を示す。フローテーブルのレコードは、既登録フローエントリに相当する。本実施の形態では、新規フローエントリを受け付ける前に、既登録フローエントリの夫々に処理内容のタイプを付したタイプテーブルを生成しておく。この例で、「ｏｕｔｐｕｔ」に係る処理は、タイプ「Ａｌｌｏｗ」（転送許可）に分類される。また、「ｄｒｏｐ」の処理は、タイプ「Ｄｅｎｙ」（転送拒否）に分類される。つまり、この例におけるタイプは、「Ａｌｌｏｗ」（転送許可）及びタイプ「Ｄｅｎｙ」（転送拒否）のいずれかである。
【００５７】
そして、新規フローエントリを受け付けると、新規フローエントリにおける処理内容のタイプを同様に特定する。そして、新規フローエントリのタイプと異なるタイプに該当する既登録フローエントリを抽出し、抽出された既登録フローエントリを候補テーブルのレコードに設定する。候補テーブルのレコードに設定された既登録フローエントリは、競合候補に相当する。
【００５８】
同じタイプに係るフローエントリ同士は、いずれのフローエントリの処理内容が実行された場合でも、結果的に他方のフローエントリの処理内容が実行された場合と同じ或いは近似する動作となる。このように実質的に処理内容が実行されたとみなされる場合は、競合ではないものとする。このようにすれば、新規フローエントリと比較するフローエントリの数が減る。
【００５９】
そして、新規フローエントリにおける優先度と、競合候補に選定された既登録フローエントリにおける優先度との比較結果によって、処理負担が少ない判定方式を選択するようにする。各判定方式については、後述する。
【００６０】
図８Ｂに別の例を示す。図８Ｂに示したタイプテーブルでは、処理内容を省いている。但し、タイプテーブルの各レコードをエントリＩＤによって紐付ければ、フローテーブルのレコードを参照することができるようになる。
【００６１】
図９Ａに、ＳＤＮコントローラ９０１のモジュール構成例を示す。情報処理装置９００は、ＳＤＮコントローラ９０１と接続している。情報処理装置９００とＳＤＮコントローラ９０１とは、制御ネットワークを介して接続してもよいし、管理対象のネットワークを介して接続してもよい。或いは、制御ネットワーク及び管理対象のネットワークとは別のネットワークを介して接続してもよい。
【００６２】
情報処理装置９００は、例えば制御アプリケーションの開発者やネットワーク管理者であるユーザが使用する端末である。この場合に、情報処理装置９００は、ユーザの操作によって登録しようとする新規フローエントリをＳＤＮコントローラ９０１に送信する。
【００６３】
また、情報処理装置９００は、例えば制御アプリケーションが動作するサーバ装置であってもよい。この場合に、制御アプリケーションの動作によって、情報処理装置９００からＳＤＮコントローラ９０１に新規フローエントリが送信される。
【００６４】
ＳＤＮコントローラ９０１は、分類部９０３、受信部９０５、選定部９０７、検出部９０９、選択部９１１、通知部９１３、登録部９１５、送信部９１７、カウンタ９１９、フローテーブル記憶部９２１、タイプテーブル記憶部９２３及び候補テーブル記憶部９２５を有する。
【００６５】
分類部９０３は、既登録フローエントリにおける処理内容を所定のタイプに分類する。受信部９０５は、情報処理装置９００から送られた新規フローエントリを受信する。選定部９０７は、新規フローエントリと比較する既登録フローエントリ、つまり競合候補を選定する。検出部９０９は、新規フローエントリと既登録フローエントリとの競合を検出する。選択部９１１は、競合検出における判定方式を選択する。通知部９１３は、競合が検出された旨を情報処理装置９００に通知する。登録部９１５は、フローテーブルに新規フローエントリを登録する。送信部９１７は、フローテーブルを、当該フローテーブルを使用する通信装置に送信する。カウンタ９１９は、パケット条件に含まれる下位条件の数を算出する。
【００６６】
フローテーブル記憶部９２１は、フローテーブルを記憶する。タイプテーブル記憶部９２３は、タイプテーブルを記憶する。候補テーブル記憶部９２５は、候補テーブルを記憶する。
【００６７】
上述した分類部９０３、受信部９０５、選定部９０７、検出部９０９、選択部９１１、通知部９１３、登録部９１５、送信部９１７及びカウンタ９１９は、ハードウエア資源（例えば、図２０）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００６８】
上述したフローテーブル記憶部９２１、タイプテーブル記憶部９２３及び候補テーブル記憶部９２５は、ハードウエア資源（例えば、図２０）を用いて実現される。
【００６９】
図９Ａの例では、ＳＤＮコントローラ９０１において競合の有無を検査する。但し、ＳＤＮコントローラ９０１とは別に検査装置を設けるようにしてもよい。図９Ｂに、検査装置９３１のモジュール構成例を示す。
【００７０】
検査装置９３１は、上述した情報処理装置９００と接続している。情報処理装置９００と検査装置９３１とは、制御ネットワークを介して接続していてもよいし、管理対象のネットワークを介して接続していてもよい。或いは、制御ネットワーク及び管理対象のネットワークとは別のネットワークを介して接続していてもよい。
【００７１】
検査装置９３１は、ＳＤＮコントローラ９０１と接続している。検査装置９３１とＳＤＮコントローラ９０１とは、制御ネットワークを介して接続していてもよいし、管理対象のネットワークを介して接続していてもよい。或いは、制御ネットワーク及び管理対象のネットワークとは別のネットワークを介して接続していてもよい。
【００７２】
検査装置９３１は、図９Ａに示したＳＤＮコントローラ９０１のモジュールと同様のモジュールを有している。図９Ｂの場合、検査装置９３１の送信部９１７は、フローテーブルを送信しない。その代わり、検査装置９３１の送信部９１７は、新規フローエントリをＳＤＮコントローラ９０１に転送する。そして、ＳＤＮコントローラ９０１は、従来と同様に動作する。検査装置９３１は、例えば競合しない新規フローエントリのみをＳＤＮコントローラ９０１に転送するようにしてもよい。
【００７３】
上述したように、ＳＤＮコントローラ９０１は、情報処理装置９００から新規フローエントリを受け付ける前に、既登録フローエントリにタイプを付する前処理を行う。図１０に、前処理（Ａ）フローを示す。分類部９０３は、フローテーブルにおける既登録フローエントリを１つ特定する（Ｓ１００１）。但し、既にタイプを付している既登録フローエントリは特定対象としなくてもよい。
【００７４】
分類部９０３は、特定した既登録フローエントリにおける処理内容を分類する（Ｓ１００３）。この例では、「ｏｕｔｐｕｔ」に係る処理は、タイプ「Ａｌｌｏｗ」（転送許可）に分類される。また、「ｄｒｏｐ」の処理は、タイプ「Ｄｅｎｙ」（転送拒否）に分類される。分類結果は、タイプテーブルのレコードに設定される。タイプテーブルのレコードにおけるタイプ以外の項目には、フローテーブルのフローエントリと同様の内容が設定される。
【００７５】
分類部９０３は、フローテーブルに未特定の既登録フローエントリがあるか否かを判定する（Ｓ１００５）。未特定の既登録フローエントリがあると判定した場合には、Ｓ１００１に示した処理に戻って、上述した処理を繰り返す。一方、未特定の既登録フローエントリがないと判定した場合には、前処理（Ａ）を終える。
【００７６】
前処理（Ａ）を終えると、新規フローエントリを受信する準備が整う。以下に示すメイン処理（Ａ）は、新規フローエントリの受信に応じて行われる処理である。
【００７７】
図１１に、メイン処理（Ａ）フローを示す。受信部９０５が新規フローエントリを受信すると（Ｓ１１０１）、選定部９０７は、当該新規フローエントリにおける処理内容のタイプを特定する（Ｓ１１０３）。このとき、選定部９０７は、図１０に示したＳ１００３の処理の場合と同様に、処理内容を分類する。
【００７８】
選定部９０７は、Ｓ１１０３で特定されたタイプが「Ａｌｌｏｗ」（転送許可）であるか否かを判定する（Ｓ１１０５）。そして、特定されたタイプが「Ａｌｌｏｗ」（転送許可）であると判定した場合には、選定部９０７は、タイプテーブルのレコードの中から、「Ｄｅｎｙ」（転送拒否）のタイプに該当する既登録フローエントリを選定する（Ｓ１１０７）。選定された既登録フローエントリは、候補テーブルに設定される。つまり、タイプテーブルから「Ｄｅｎｙ」（転送拒否）のタイプに該当するレコードが抽出され、抽出されたレコードが候補テーブルにコピーされる。
【００７９】
一方、特定されたタイプが「Ａｌｌｏｗ」（転送許可）でないと判定した場合、つまり特定されたタイプが「Ｄｅｎｙ」（転送拒否）である場合には、選定部９０７は、タイプテーブルのレコードの中から、「Ａｌｌｏｗ」（転送許可）のタイプに該当する既登録フローエントリを選定する（Ｓ１１０９）。選定された既登録フローエントリは、候補テーブルに設定される。つまり、タイプテーブルから「Ａｌｌｏｗ」（転送許可）のタイプに該当するレコードが抽出され、抽出されたレコードが候補テーブルにコピーされる。
【００８０】
候補テーブルが生成されると、検出部９０９は、候補テーブルにおける既登録フローエントリを１つ特定する（Ｓ１１１１）。例えば、検出部９０９は、順番に従って候補テーブルのレコードを特定する。
【００８１】
検出部９０９は、特定された既登録フローエントリに関する検出処理を実行する（Ｓ１１１３）。検出処理では、新規フローエントリと当該既登録フローエントリとの競合を検出する。つまり、検出処理の結果、競合の有無が判明する。検出処理については、図１３他を用いて後述する。尚、各既登録フローエントリに関する検出処理の結果は、この例でＳ１１１７の処理まで保持される。
【００８２】
検出部９０９は、候補テーブルにおいて未特定の既登録フローエントリがあるか否かを判定する（Ｓ１１１５）。未特定の既登録フローエントリがあると判定した場合には、Ｓ１１１１に示した処理に戻って、上述した処理を繰り返す。一方、未特定の既登録フローエントリがないと判定した場合には、検出部９０９は、全体として競合があったか否かを判定する（Ｓ１１１７）。各既登録フローエントリに関する検出処理の結果のうち、少なくとも１つにおいて競合があったと判定されている場合には、全体として競合があったと判定される。一方、各既登録フローエントリに関する検出処理の結果において、一切競合が無かった場合には、全体として競合が無かったと判定される。
【００８３】
全体として競合があったと判定した場合には、通知部９１３は、情報処理装置９００に競合を検出した旨を通知する（Ｓ１１１９）。
【００８４】
一方、全体として競合が無かったと判定した場合には、登録部９１５は、フローテーブルを更新する。つまり、新規フローエントリがフローテーブルに追加される。そして、送信部９１７は、更新されたフローテーブルを、当該フローテーブルを使用する通信装置に送信する（Ｓ１１２１）。そして、一旦メイン処理（Ａ）を終える。
【００８５】
新規フローエントリがフローテーブルに追加された場合には、続いて起動される前処理（Ａ）において、当該フローエントリに関するタイプが特定され、当該タイプを含むレコードがタイプテーブルに追加される。
【００８６】
図１２に、本実施の形態における競合の判定パターンを示す。各レコードにおける新規フローエントリと既フローエントリとの組み合わせは、図５の場合と同様である。
【００８７】
尚、２番目のレコードに相当する組み合わせは、図１１のＳ１１０９において競合候補として選定されないので、Ｓ１１１１以降の検出処理の対象とならない。その他のレコードに相当する組み合わせについては、後述する。
【００８８】
図１３に、本実施の形態における検出処理フローを示す。まず、選択部９１１は、新規フローエントリの優先度よりも既登録フローエントリの優先度が高いか否かを判定する（Ｓ１３０１）。
【００８９】
新規フローエントリの優先度よりも既登録フローエントリの優先度が高いと判定した場合には、選択部９１１は、第１判定方式を選択する（Ｓ１３０３）。そして、通知部９１３は、第１判定方式による判定処理を実行する（Ｓ１３０５）。
【００９０】
図１４に、第１判定方式による判定処理フローを示す。通知部９１３は、新規フローエントリの下位条件数が既登録フローエントリの下位条件数以上であるか否かを判定する（Ｓ１４０１）。新規フローエントリの下位条件数が既登録フローエントリの下位条件数以上であると判定した場合には、通知部９１３は、既登録フローエントリの全ての下位条件が、それぞれ新規フローエントリの下位条件のいずれかと一致するか否かを判定する（Ｓ１４０３）。そして、既登録フローエントリの全ての下位条件が、それぞれ新規フローエントリの下位条件のいずれかと一致すると判定した場合には、通知部９１３は、両者が競合する（パターンＧ）と判定する（Ｓ１４０５）。図１２に示した３番目のレコードにおけるフローエントリの組み合わせ及び４番目のレコードにおけるフローエントリの組み合わせは、この判定パターンに該当する。
【００９１】
一方、Ｓ１４０１において、新規フローエントリの下位条件数が既登録フローエントリの下位条件数未満であると判定した場合には、通知部９１３は、両者は競合しない（パターンＨ）と判定する（Ｓ１４０７）。図１２に示した７番目のレコードにおけるフローエントリの組み合わせは、この判定パターンに該当する。
【００９２】
また、Ｓ１４０３において、既登録フローエントリの下位条件のいずれかが新規フローエントリの下位条件のいずれとも一致しないと判定した場合には、通知部９１３は、両者は競合しない（パターンＨ）と判定する（Ｓ１４０７）。図１２に示した１番目のレコードにおけるフローエントリの組み合わせは、この判定パターンに該当する。
【００９３】
第１判定方式による判定処理を終えると、呼び出し元の検出処理に復帰する。
【００９４】
図１３の説明に戻る。Ｓ１３０５に示した第１判定方式による判定処理を終えると、検出処理も終える。
【００９５】
Ｓ１３０１の説明に戻る。Ｓ１３０１において、新規フローエントリの優先度よりも既登録フローエントリの優先度が高くないと判定した場合には、選択部９１１は、既登録フローエントリの優先度よりも新規フローエントリの優先度が高い否かを判定する（Ｓ１３０７）。新規フローエントリの優先度の方が高いと判定した場合には、選択部９１１は、第２判定方式を選択する（Ｓ１３０９）。そして、通知部９１３は、第２判定方式による判定処理を実行する（Ｓ１３１１）。
【００９６】
図１５に、第２判定方式による判定処理フローを示す。通知部９１３は、既登録フローエントリの下位条件数が新規フローエントリの下位条件数以上であるか否かを判定する（Ｓ１５０１）。既登録フローエントリの下位条件数が新規フローエントリの下位条件数以上であると判定した場合には、通知部９１３は、新規フローエントリの全ての下位条件が、それぞれ既登録フローエントリの下位条件のいずれかと一致するか否かを判定する（Ｓ１５０３）。そして、新規フローエントリの全ての下位条件が、それぞれ既登録フローエントリの下位条件のいずれかと一致すると判定した場合には、通知部９１３は、両者が競合する（パターンＩ）と判定する（Ｓ１５０５）。図１２に示した６番目のレコードにおけるフローエントリの組み合わせは、この判定パターンに該当する。
【００９７】
一方、Ｓ１５０１において、既登録フローエントリの下位条件数が新規フローエントリの下位条件数未満であると判定した場合には、通知部９１３は、両者は競合しない（パターンＪ）と判定する（Ｓ１５０７）。図１２に示した５番目のレコードにおけるフローエントリの組み合わせは、この判定パターンに該当する。
【００９８】
また、Ｓ１５０３において、新規フローエントリの下位条件のいずれかが既登録フローエントリの下位条件のいずれとも一致しないと判定した場合には、通知部９１３は、両者は競合しない（パターンＪ）と判定する（Ｓ１５０７）。この判定パターンの例は、図１２に示していない。
【００９９】
第２判定方式による判定処理を終えると、呼び出し元の検出処理に復帰する。
【０１００】
図１３の説明に戻る。Ｓ１３１１に示した第２判定方式による判定処理を終えると、検出処理も終える。
【０１０１】
Ｓ１３０７の説明に戻る。Ｓ１３０７において、既登録フローエントリの優先度よりも新規フローエントリの優先度が高くないと判定した場合、つまり両フローエントリの優先度が等しい場合には、選択部９１１は、第３判定方式を選択する（Ｓ１３１３）。そして、通知部９１３は、第３判定方式による判定処理を実行する（Ｓ１３１５）。
【０１０２】
図１６に、第３判定方式による判定処理フローを示す。通知部９１３は、新規フローエントリの下位条件と既登録フローエントリの下位条件とがすべて一致するか否かを判定する（Ｓ１６０１）。新規フローエントリの下位条件と既登録フローエントリの下位条件とがすべて一致すると判定した場合には、通知部９１３は、両者が競合すると判定する（Ｓ１６０３）。この判定パターンの例は、図１２に示していない。
【０１０３】
一方、新規フローエントリの下位条件と既登録フローエントリの下位条件との少なくとも一部が不一致であると判定した場合には、通知部９１３は、両者は競合しないと判定する（Ｓ１６０５）。この判定パターンの例も、図１２に示していない。
【０１０４】
第３判定方式による判定処理を終えると、呼び出し元の検出処理に復帰する。
【０１０５】
図１３の説明に戻る。Ｓ１３１５に示した第３判定方式による判定処理を終えると、検出処理も終える。検出処理を終えると、呼び出し元のメイン処理（Ａ）に復帰する。
【０１０６】
本実施の形態によれば、フローエントリの追加に伴う競合を検出する処理の負荷を軽減することができる。
【０１０７】
また、処理内容を転送許可のタイプ又は転送拒否のタイプに分類するので、フローエントリの競合によるパケット転送のトラブルを予見することができる。
【０１０８】
また、新規フローエントリとの比較対象となる既登録フローエントリが減るので、競合検出の処理負荷が軽くなるという面がある。
【０１０９】
また、パケット条件の包含関係に関する判定処理が比較的少なくて済むので、全体としての処理負荷が軽減されるという面がある。
【０１１０】
［実施の形態２］
上述した実施の形態では、タイプに基づいて既登録フローエントリのうち、競合候補になるものを選定する例について説明した。本実施の形態では、更に、下位条件数と優先度とに基づいて、競合候補になる既登録フローエントリを絞り込む例について説明する。
【０１１１】
図１７に、実施の形態２における各テーブルの例を示す。実施の形態２では、前処理において、各既登録フローエントリに関して、当該既登録フローエントリのパケット条件に含まれる下位条件数をカウントしておく。そして下位条件数は、タイプテーブルのレコードに設定される。
【０１１２】
また、新規フローエントリを受け付けると、新規フローエントリのパケット条件に含まれる下位条件数をカウントする。そして、優先度の比較結果及び下位条件数の比較結果に基づいて、競合候補となる既登録フローエントリを絞り込む。
【０１１３】
実施の形態２では、前処理（Ａ）に代えて、前処理（Ｂ）を実行する。図１８に、前処理（Ｂ）フローを示す。Ｓ１００１及びＳ１００３に示した処理は、図１０の場合と同様である。
【０１１４】
カウンタ９１９は、Ｓ１００１において特定された既登録フローエントリのパケット条件に含まれる下位条件数を特定する（Ｓ１８０１）。下位条件数は、タイプテーブルのレコードに設定される。Ｓ１００５に示した処理は、図１０の場合と同様である。
【０１１５】
また、実施の形態２では、メイン処理（Ａ）に代えて、メイン処理（Ｂ）を実行する。図１９Ａに、メイン処理（Ｂ）フローを示す。図１１の場合と同様に、図１１のＳ１１０１乃至Ｓ１１０５に示した処理を実行する。
【０１１６】
Ｓ１１０５において、Ｓ１１０３で特定されたタイプが「Ａｌｌｏｗ」（転送許可）であると判定した場合には、選定部９０７は、タイプテーブルのレコードの中から、「Ｄｅｎｙ」（転送拒否）のタイプに該当する既登録フローエントリを１つ特定する（Ｓ１９０１）。例えば、検出部９０９は、タイプテーブルで、タイプのフィールドに「Ｄｅｎｙ」（転送拒否）が設定されているレコードを順番に従って特定する。
【０１１７】
選定部９０７は、特定した既登録フローエントリの優先度が新規フローエントリの優先度よりも高いか否かを判定する（Ｓ１９０３）。既登録フローエントリの優先度の方が高いと判定した場合には、選定部９０７は、更に、既登録フローエントリの下位条件数が新規フローエントリの下位条件数以下であるか否かを判定する（Ｓ１９０５）。
【０１１８】
既登録フローエントリの優先度の方が高く、且つ既登録フローエントリの下位条件数の方が多くない場合には、当該既登録フローエントリが新規フローエントリと競合する可能性がある。従って、選定部９０７は、当該既登録フローエントリを選定対象とする（Ｓ１９０７）。選定された既登録フローエントリは、候補テーブルに設定される。
【０１１９】
一方、既登録フローエントリの優先度の方が高い場合に、既登録フローエントリの下位条件数の方が多ければ、当該既登録フローエントリが新規フローエントリと競合する可能性はない。従って、選定部９０７は、当該既登録フローエントリを選定対象としない。
【０１２０】
そして、Ｓ１９０９において、選定部９０７は、「Ｄｅｎｙ」（転送拒否）のタイプに該当する既登録フローエントリであって、未特定のものがタイプテーブルにあるか否かを判定する。未特定の既登録フローエントリがあると判定した場合には、Ｓ１９０１に示した処理に戻って、上述した処理を繰り返す。
【０１２１】
一方、未特定の既登録フローエントリがないと判定した場合には、Ｓ１１１１の処理に移る。Ｓ１１１１以降の処理は、図１１の場合と同様である。
【０１２２】
Ｓ１９０３の説明に戻る。Ｓ１９０３において、既登録フローエントリの優先度が新規フローエントリの優先度よりも高くないと判定した場合には、端子Ｄを介して、図１９Ｂに示したＳ１９１１の処理に移る。
【０１２３】
図１９Ｂの説明に移る。選定部９０７は、新規フローエントリの優先度が、図１９ＡのＳ１９０１において特定された既登録フローエントリの優先度よりも高いか否かを判定する（Ｓ１９１１）。新規フローエントリの優先度の方が高いと判定した場合には、選定部９０７は、新規フローエントリの下位条件数が既登録フローエントリの下位条件数以下であるか否かを判定する（Ｓ１９１３）。
【０１２４】
新規フローエントリの優先度の方が高く、且つ新規フローエントリの下位条件数の方が多くない場合には、既登録フローエントリが新規フローエントリと競合する可能性がある。従って、選定部９０７は、当該既登録フローエントリを選定対象とする（Ｓ１９１５）。選定された既登録フローエントリは、候補テーブルに設定される。
【０１２５】
一方、新規フローエントリの優先度の方が高い場合に、新規フローエントリの下位条件数の方が多ければ、既登録フローエントリが新規フローエントリと競合する可能性はない。従って、選定部９０７は、当該既登録フローエントリを選定対象としない。
【０１２６】
また、Ｓ１９１１において、新規フローエントリの優先度の方が高いわけではないと判定した場合、つまり、新規フローエントリの優先度と既登録フローエントリの優先度とが等しい場合には、既登録フローエントリが新規フローエントリと競合する可能性がある。従って、選定部９０７は、当該既登録フローエントリを選定対象とする（Ｓ１９１７）。
【０１２７】
そして、端子Ｅを介して、図１９Ａに示したＳ１９０９の処理に戻る。
【０１２８】
図１９Ａの説明に戻る。Ｓ１１０５において、Ｓ１１０３において特定されたタイプが「Ａｌｌｏｗ」（転送許可）でないと判定した場合には、つまり特定されたタイプが「Ｄｅｎｙ」（転送拒否）である場合には、端子Ｃを介して、図１９Ｃに示したＳ１９２１の処理に移る。
【０１２９】
図１９Ｃの説明に移る。選定部９０７は、タイプテーブルのレコードの中から、「Ａｌｌｏｗ」（転送許可）のタイプに該当する既登録フローエントリを１つ特定する（Ｓ１９２１）。例えば、検出部９０９は、タイプテーブルで、タイプのフィールドに「Ａｌｌｏｗ」（転送許可）が設定されているレコードを順番に従って特定する。
【０１３０】
Ｓ１９２３乃至Ｓ１９２９に示した処理は、図１９Ａに示したＳ１９０３乃至Ｓ１９０９の処理と同様である。
【０１３１】
Ｓ１９２３において、既登録フローエントリの優先度が新規フローエントリの優先度よりも高くないと判定した場合には、端子Ｆを介して、図１９Ｄに示したＳ１９３１の処理に移る。
【０１３２】
図１９Ｄに示したＳ１９３１乃至Ｓ１９３７に示した処理は、図１９Ｂに示したＳ１９１１乃至Ｓ１９１７の処理と同様である。図１９Ｄに示した処理を終えると、端子Ｇを介して、図１９Ｃに示したＳ１９２９の処理に移る。Ｓ１９２９の処理で、特定の既登録フローエントリがないと判定した場合には、端子Ｈを介して、図１９Ａに示したＳ１１１１の処理に移る。Ｓ１１１１以降の処理は、図１１の場合と同様である。以上で、メイン処理（Ｂ）についての説明を終える。
【０１３３】
本実施の形態によれば、新規フローエントリとの比較対象となる既登録フローエントリが更に減るので、競合検出の処理負荷が更に軽くなる。
【０１３４】
［実施の形態３］
上述した実施の形態では、メイン処理において、異なるタイプに係る既登録フローエントリを競合候補として選定する例について説明した。
【０１３５】
但し、前処理において、タイプ別のテーブルを設けるようにしてもよい。つまり、「Ａｌｌｏｗ」（転送許可）のタイプに該当する既登録フローエントリのみを集めたテーブルと、「Ｄｅｎｙ」（転送拒否）のタイプに該当する既登録フローエントリのみを集めたテーブルとを生成するようにしてもよい。
【０１３６】
そして、メイン処理において、新規フローエントリにおける処理内容のタイプと異なるタイプに係るテーブルを選定するようにしてもよい。
【０１３７】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【０１３８】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【０１３９】
なお、上で述べたＳＤＮコントローラ９０１及び検査装置９３１は、コンピュータ装置であって、図２０に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１４０】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１４１】
本実施の形態に係る情報処理装置は、フローを特定する条件と、当該フローのパケットに対する処理内容とを対応付けるフローエントリを記憶する情報処理装置であって、（Ａ）新たに新規フローエントリを記憶する場合に、当該新規フローエントリの処理内容の種類と、上記記憶されているフローエントリの処理内容の種類とに基づいて、上記記憶されているフローエントリの中から、新規フローエントリに対する競合候補を選定する選定部と、（Ｂ）競合候補に選定されたフローエントリの中から、新規フローエントリと競合するフローエントリを検出する検出部とを有する。
【０１４２】
このようにすれば、フローエントリの追加に伴う競合を検出する処理の負荷を軽減することができる。
【０１４３】
更に、上記種類に、転送許可のタイプ及び転送拒否のタイプが含まれるようにしてもよい。
【０１４４】
このようにすれば、フローエントリの競合によるパケット転送のトラブルを予見することができる。
【０１４５】
更に、上記選定部は、新規フローエントリの上記種類に該当しないことを選定条件として、競合候補を選定するようにしてもよい。
【０１４６】
このようにすれば、新規フローエントリとの比較対象が減るので、競合検出の処理負荷が軽くなる。
【０１４７】
更に、フローエントリは、上記条件及び処理内容に優先度を対応付けるようにしてもよい。そして、情報処理装置は、更に、新規フローエントリの優先度と競合候補に選定されたフローエントリの優先度との比較結果に応じて、競合の判定方式を選択する選択部を有するようにしてもよい。また、上記検出部は、選択された判定方式に従って、新規フローエントリと競合するフローエントリを検出するようにしてもよい。
【０１４８】
このようにすれば、優先度の関係に応じて、競合の判定を行うことができる。
【０１４９】
更に、上記選択部は、競合候補に選定されたフローエントリの優先度が新規フローエントリの優先度よりも高い場合に、第１判定方式を選択し、新規フローエントリの優先度が競合候補に選定されたフローエントリの優先度よりも高い場合に、第２判定方式を選択し、更に、競合候補に選定されたフローエントリの優先度が新規フローエントリの優先度と等しい場合に、第３判定方式を選択するようにしてもよい。そして、上記検出部は、第１判定方式において、競合候補に選定されたフローエントリの上記条件に含まれる下位条件のすべてが、それぞれ新規フローエントリの上記条件に含まれる下位条件のいずれかと一致する場合に、競合候補に選定されたフローエントリが新規フローエントリと競合すると判定するようにしてもよい。上記検出部は、第２判定方式において、新規フローエントリの下位条件のすべてが、それぞれ競合候補に選定されたフローエントリの下位条件のいずれかと一致する場合に、競合候補に選定されたフローエントリが新規フローエントリと競合すると判定するようにしてもよい。上記検出部は、第３判定方式において、新規フローエントリの下位条件と競合候補に選定されたフローエントリの下位条件とが、すべて一致する場合に、競合候補に選定されたフローエントリが新規フローエントリと競合すると判定するようにしてもよい。
【０１５０】
このようにすれば、条件の包含関係に関する判定処理が比較的少なくて済むので、全体としての処理負荷が軽減される。
【０１５１】
また、上記選定部は、更に、新規フローエントリよりも優先度が高く、且つ新規フローエントリの上記条件に含まれる下位条件の数以下の下位条件を上記条件に含むこと、新規フローエントリよりも優先度が低く、且つ新規フローエントリの下位条件数以上の下位条件を上記条件に含むこと、又は新規フローエントリと優先度が等しいことを選定条件に加えて、競合候補を選定するようにしてもよい。
【０１５２】
このようにすれば、新規フローエントリとの比較対象が更に減るので、競合検出の処理負荷が更に軽くなる。
【０１５３】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１５４】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５５】
＜付記１＞
フローを特定する条件と、当該フローのパケットに対する処理内容とを対応付けるフローエントリを記憶する情報処理装置において、
新たに新規フローエントリを記憶する場合に、当該新規フローエントリの前記処理内容の種類と、前記記憶されているフローエントリの前記処理内容の種類とに基づいて、前記記憶されているフローエントリの中から、前記新規フローエントリに対する競合候補を選定する選定部と、
前記競合候補に選定された前記フローエントリの中から、前記新規フローエントリと競合するフローエントリを検出する検出部と
を有する情報処理装置。
【０１５６】
＜付記２＞
前記種類に、転送許可のタイプ及び転送拒否のタイプが含まれる
付記１記載の情報処理装置。
【０１５７】
＜付記３＞
前記選定部は、
前記新規フローエントリの前記種類に該当しないことを選定条件として、前記競合候補を選定する
付記１又は２記載の情報処理装置。
【０１５８】
＜付記４＞
前記フローエントリは、前記条件及び前記処理内容に優先度を対応付け、
前記情報処理装置は、更に、
前記新規フローエントリの前記優先度と前記競合候補に選定された前記フローエントリの前記優先度との比較結果に応じて、競合の判定方式を選択する選択部
を有し、
前記検出部は、前記選択された判定方式に従って、前記新規フローエントリと競合する前記フローエントリを検出する
付記１乃至３のいずれか１つ記載の情報処理装置。
【０１５９】
＜付記５＞
前記選択部は、
前記競合候補に選定された前記フローエントリの前記優先度が前記新規フローエントリの前記優先度よりも高い場合に、第１判定方式を選択し、前記新規フローエントリの前記優先度が前記競合候補に選定された前記フローエントリの前記優先度よりも高い場合に、第２判定方式を選択し、更に、前記競合候補に選定された前記フローエントリの前記優先度が前記新規フローエントリの前記優先度と等しい場合に、第３判定方式を選択し、
前記検出部は、
前記第１判定方式において、前記競合候補に選定された前記フローエントリの前記条件に含まれる下位条件のすべてが、それぞれ前記新規フローエントリの前記条件に含まれる下位条件のいずれかと一致する場合に、前記競合候補に選定された前記フローエントリが前記新規フローエントリと競合すると判定し、
前記第２判定方式において、前記新規フローエントリの前記下位条件のすべてが、それぞれ前記競合候補に選定された前記フローエントリの前記下位条件のいずれかと一致する場合に、前記競合候補に選定された前記フローエントリが前記新規フローエントリと競合すると判定し、
前記第３判定方式において、前記新規フローエントリの前記下位条件と前記競合候補に選定された前記フローエントリの前記下位条件とが、すべて一致する場合に、前記競合候補に選定された前記フローエントリが前記新規フローエントリと競合すると判定する
付記４記載の情報処理装置。
【０１６０】
＜付記６＞
前記選定部は、
更に、前記新規フローエントリよりも前記優先度が高く、且つ前記新規フローエントリの前記条件に含まれる下位条件の数以下の下位条件を前記条件に含むこと、前記新規フローエントリよりも前記優先度が低く、且つ前記新規フローエントリの前記下位条件数以上の下位条件を前記条件に含むこと、又は前記新規フローエントリと前記優先度が等しいことを前記選定条件に加えて、前記競合候補を選定する
付記３記載の情報処理装置。
【０１６１】
＜付記７＞
フローを特定する条件と、当該フローのパケットに対する処理内容とを対応付けるフローエントリを記憶するコンピュータにおいて、
新たに新規フローエントリを記憶する場合に、当該新規フローエントリの前記処理内容の種類と、前記記憶されているフローエントリの前記処理内容の種類とに基づいて、前記記憶されているフローエントリの中から、前記新規フローエントリに対する競合候補を選定し、
前記競合候補に選定された前記フローエントリの中から、前記新規フローエントリと競合するフローエントリを検出する
処理を実行する検査方法。
【０１６２】
＜付記８＞
ネットワーク機器と、
フローを特定する条件と、当該フローのパケットに対する、前記ネットワーク機器における処理内容とを対応付けるフローエントリを記憶する情報処理装置と
を有する制御ネットワークシステムであって、
前記情報処理装置は、
新たに新規フローエントリを記憶する場合に、当該新規フローエントリの前記処理内容の種類と、前記記憶されているフローエントリの前記処理内容の種類とに基づいて、前記記憶されているフローエントリの中から、前記新規フローエントリに対する競合候補を選定する選定部と、
前記競合候補に選定された前記フローエントリの中から、前記新規フローエントリと競合するフローエントリを検出する検出部と
を有する制御ネットワークシステム。
【符号の説明】
【０１６３】
９００  情報処理装置    ９０１  ＳＤＮコントローラ
９０３  分類部    ９０５  受信部
９０７  選定部    ９０９  検出部
９１１  選択部    ９１３  通知部
９１５  登録部    ９１７  送信部
９１９  カウンタ    ９２１  フローテーブル記憶部
９２３  タイプテーブル記憶部    ９２５  候補テーブル記憶部
９３１  検査装置
【図１】
2017228857.tif 000003
【図２】
2017228857.tif 000004
【図３】
2017228857.tif 000005
【図４】
2017228857.tif 000006
【図５】
2017228857.tif 000007
【図６Ａ】
2017228857.tif 000008
【図６Ｂ】
2017228857.tif 000009
【図７Ａ】
2017228857.tif 000010
【図７Ｂ】
2017228857.tif 000011
【図８Ａ】
2017228857.tif 000012
【図８Ｂ】
2017228857.tif 000013
【図９Ａ】
2017228857.tif 000014
【図９Ｂ】
2017228857.tif 000015
【図１０】
2017228857.tif 000016
【図１１】
2017228857.tif 000017
【図１２】
2017228857.tif 000018
【図１３】
2017228857.tif 000019
【図１４】
2017228857.tif 000020
【図１５】
2017228857.tif 000021
【図１６】
2017228857.tif 000022
【図１７】
2017228857.tif 000023
【図１８】
2017228857.tif 000024
【図１９Ａ】
2017228857.tif 000025
【図１９Ｂ】
2017228857.tif 000026
【図１９Ｃ】
2017228857.tif 000027
【図１９Ｄ】
2017228857.tif 000028
【図２０】
2017228857.tif 000029