(57)【要約】      （修正有）【課題】通信装置のネットワーク設定過程で既存のネットワークに障害を生じさせず、かつ、設定実行時間を短縮可能な設定手順を生成し、高速な設定実行を可能とする。【解決手段】ネットワーク設定制御装置は、入力装置、出力装置、記憶装置、および処理装置を備え、少なくとも一つの通信装置１２０とネットワークを介して接続される制御装置１００で構成される。制御装置１００は、ネットワーク設定データに基づいて、通信装置１２０にネットワーク設定を行う。また、処理装置は、ネットワーク設定の設定手順をネットワーク設定データと既存のネットワーク構成に基づいて生成する。【選択図】図１
2016015672.tif 000002
【特許請求の範囲】
【請求項１】
入力装置、出力装置、記憶装置、および処理装置を備え、少なくとも一つの通信装置とネットワークを介して接続され、前記入力装置から入力され、あるいは前記記憶装置に記憶されたネットワーク設定データに基づいて、前記通信装置にネットワーク設定を行う制御装置であって、
前記処理装置は、前記ネットワーク設定の設定手順を生成するネットワーク設定手順生成部を有し、
該ネットワーク設定手順生成部は、
前記入力装置から入力され、あるいは前記記憶装置に記憶されているネットワーク構成データから前記通信装置の接続関係を検出する機能と、
前記検出した接続関係と、前記ネットワーク設定データに基づき、前記通信装置単位の設定順序を決め、新規ネットワーク設定の設定手順を生成する機能を有することを特徴とするネットワーク制御装置。
【請求項２】
前記ネットワーク設定手順生成部は、
前記ネットワーク設定データに含まれる設定同士の包含関係を検出する機能を有し、
前記検出した包含関係に基づき、前記通信装置内の設定順序を生成することを特徴とする請求項１のネットワーク制御装置。
【請求項３】
前記ネットワーク設定手順生成部は、
前記生成された新規ネットワーク設定の設定手順のうち、前記入力装置から入力され、あるいは前記記憶装置に記憶されている設定済みのネットワーク設定と、競合を生じない前記設定手順を選択する請求項２のネットワーク制御装置。
【請求項４】
前記ネットワーク設定データに含まれる設定の、前記通信装置内の保存先を検出し、前記新規ネットワーク設定に含まれる複数の設定を同時に、前記通信装置内の異なる保存先に設定するように設定手順を生成することを特徴とする請求項３のネットワーク制御装置。
【請求項５】
前記生成された設定手順に設定順序を表すシーケンス番号を付与し、かつ、前記通信装置単位で、設定完了の応答を要求する命令を追加することを特徴とする請求項４のネットワーク制御装置。
【請求項６】
ネットワーク設定実行部を有し、前記生成された設定手順に従い、前記通信装置に設定を実行し、前記設定完了の応答を要求する命令を送信した場合は応答を待つことを特徴とする請求項５のネットワーク制御装置。
【請求項７】
前記通信装置単位の設定順序は、データの送信側を上流、受信側を下流と定義した場合、下流側から順番に設定する請求項１のネットワーク制御装置。
【請求項８】
制御装置と通信装置がネットワークを介して接続されたネットワーク設定システムであって、
前記制御装置は、
入力装置、出力装置、記憶装置、および処理装置を備え、前記入力装置から入力され、あるいは前記記憶装置に記憶されたネットワーク設定データに基づいて、前記通信装置にネットワーク設定を行う制御装置であって、
前記処理装置は、前記ネットワーク設定の設定手順を生成するネットワーク設定手順生成部を有し、
該ネットワーク設定手順生成部は、
前記入力装置から入力され、あるいは前記記憶装置に記憶されているネットワーク構成データから前記通信装置の接続関係を検出する機能と、
前記検出した接続関係と、前記ネットワーク設定データに基づき、前記通信装置単位の設定順序を生成する機能と、
前記通信装置単位の設定順序に基づいて新規ネットワーク設定の設定手順を生成する制御装置であり、
前記通信装置は、
設定実行部、設定記憶部を有し、前記設定実行部は、前記制御装置から受信した設定を、前記設定順序に従って、前記設定記憶部に格納することを特徴とするネットワーク設定システム。
【請求項９】
前記制御装置が２つ以上ある場合は、設定手順を生成した前記制御装置の前記ネットワーク設定実行部が、他の前記制御装置に、設定処理を分割することを特徴とする請求項７のネットワーク設定システム。
【請求項１０】
前記ネットワーク設定手順生成部は、
前記ネットワーク設定データに含まれる設定同士の包含関係を検出する機能を有し、
前記検出した包含関係に基づき、前記通信装置内の設定順序を生成する請求項８のネットワーク設定システム。
【請求項１１】
前記ネットワーク設定手順生成部は、
前記生成された新規ネットワーク設定の設定手順のうち、前記入力装置から入力され、あるいは前記記憶装置に記憶されている設定済みのネットワーク設定と、競合を生じない前記設定手順を選択する請求項１０のネットワーク設定システム。
【請求項１２】
前記ネットワーク設定データに含まれる設定の、前記通信装置の保存先を検出し、前記新規ネットワーク設定に含まれる複数の設定が同時に、前記通信装置内の異なる保存先に設定できるように設定手順を生成することを特徴とする請求項１１のネットワーク設定システム。
【請求項１３】
前記生成された設定手順に設定順序を表すシーケンス番号を付与し、かつ、前記通信装置単位で、設定完了の応答を要求する命令を追加することを請求項１２のネットワーク設定システム。
【請求項１４】
ネットワーク設定実行部を有し、前記生成された設定手順に従い、前記通信装置に設定を実行し、前記設定完了の応答を要求する命令を送信した場合は応答を待つ請求項１３のネットワーク設定システム。
【請求項１５】
前記通信装置単位の設定順序は、データの送信側を上流、受信側を下流と定義した場合、下流側から順番に設定する請求項８のネットワーク設定システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・ネットワーク分野に関する。具体的には、プログラマブルネットワークを実現する、ネットワーク設定制御装置、及びネットワーク設定システムに関する。
【背景技術】
【０００２】
ネットワーク設定を自動化するため、下記特許文献１に記載の技術がある。この公報には、「設定順序生成部が、ＶＰＮ終端装置及び集合仮想ルータに対して反映される順序を規定する設定順序情報を生成する」、「設定順序情報に規定される順序に従って、ＶＰＮ終端装置に設定すべき設定情報、及び、集合仮想ルータに設定すべき設定情報を、ＶＰＮ終端装置及び集合仮想ルータに対して反映する」という記載がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−４４６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＳＤＮ（Software Defined Networking）に代表されるプログラマブルネットワークでは、プログラマビリティを活かした動的なネットワーク構築・最適化が可能である。この技術では、自動化された高速なネットワーク構成変更が重要となる。
【０００５】
特許文献１では、ネットワーク設定を自動化するために、ネットワークの設定手順を、上位の装置である集合仮想ルータから、ＶＰＮ終端装置の固定的な順、もしくは、設定情報が生成された順序で決定している。しかしながら、設定過程において既存のネットワークに障害を生じさせないための設定順序の生成方法については記載がない。よって、特許文献１とは異なるネットワーク構成では、設定過程でネットワークに障害を生じる可能性がある。そのため、ネットワーク設定過程で、ネットワークサービスを中断する必要があるなど、高速なネットワーク構成変更ができない問題があった。また、設定実行時間を短縮する方法について記載がなく、設定情報が多い場合、ネットワークサービスの中断時間が伸びるという問題があった。
【０００６】
そこで、本発明では、設定過程で既存のネットワークに障害を生じさせず、かつ、設定実行時間を短縮可能な設定手順を生成し、高速な設定実行を可能とする、ネットワーク設定制御装置、及びネットワーク設定システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、代表的な本発明のネットワーク設定制御装置は、入力装置、出力装置、記憶装置、および処理装置を備え、少なくとも一つの通信装置とネットワークを介して接続される制御装置で構成される。制御装置は、ネットワーク設定データに基づいて、通信装置にネットワーク設定を行う。また、処理装置は、ネットワーク設定の設定手順を生成する。このネットワーク設定の設定手順は、ネットワーク設定データと既存のネットワーク構成に基づいて定められる。
【０００８】
ネットワーク設定の設定手順は、好ましくは通信装置単位の設定順序と通信装置内の設定順序に分けられる。好ましくは、通信装置内の設定順序は、ネットワーク設定データに含まれる設定（たとえばマッチ条件）同士の包含関係に基づいて定められる。
【０００９】
また、好ましくは、複数生成された新規ネットワーク設定の設定手順のうち、設定済みのネットワーク設定データと、競合を生じない設定手順を選択する。さらに好ましくは、ネットワーク設定データに含まれる設定の、通信装置の保存先を検出し、新規ネットワーク設定に含まれる複数の設定が、同時に異なる保存先に行えるように設定手順を生成する。また、好ましくは、通信装置単位の設定順序は、データの送信側を上流、受信側を下流と定義した場合、下流側から順番に設定する。
【００１０】
本発明の他の側面は、上述の制御装置とネットワークを介して接続された一つ以上の通信装置を包含するシステム、あるいは、これを用いた方法である。
【発明の効果】
【００１１】
本発明によれば、高速なネットワーク構成変更が可能になる。  
上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】実施例１のネットワーク設定システムの構成例を示すブロック図。
【図２】実施例１のネットワーク設定システムを適用して構成したネットワークの例を示すブロック図。
【図３】実施例１のネットワーク設定データの例を示す表図。
【図４Ａ】実施例１のネットワーク設定データの例を示す表図。
【図４Ｂ】実施例１のネットワーク設定データの例を示す表図（つづき）。
【図５Ａ】実施例１のネットワーク構成データの例を示す表図。
【図５Ｂ】実施例１のネットワーク構成データの例を示す表図（つづき）。
【図６】実施例１のネットワーク構築を説明するフローチャート。
【図７】実施例１の装置単位の設定手順決定のフローチャート。
【図８】実施例１の初期化された装置設定隣接リストを示す表図。
【図９】実施例１の装置単位の設定手順決定が終了した状態の、装置設定隣接リストを示す表図。
【図１０】実施例１の装置内の設定手順決定のフローチャート。
【図１１】実施例１の初期化されたフローエントリ隣接リストを示す表図。
【図１２】実施例１のTableプロパティが異なる場合に、変数Eのフローエントリを、変数Fのフローエントリより先に実行すべきか判断するフローチャート。
【図１３】実施例１のフローエントリのアクション優先度テーブルを示す表図。
【図１４】実施例１のTableプロパティが同じ場合に、変数Eのフローエントリを、変数Ｆのフローエントリより先に実行すべきか判断するフローチャート。
【図１５】実施例１のマッチ条件の包含関係を決定するフローチャート。
【図１６】実施例１の変数Ｅが変数Ｆに等しい関係か確認するフローチャート。
【図１７】実施例１の変数Ｅと変数Ｆが排他関係か確認するフローチャート。
【図１８】実施例１の変数Ｅが変数Ｆに包含される関係か確認するフローチャート。
【図１９】実施例１の変数Ｅが変数Ｆを包含する関係か確認するフローチャート。
【図２０】実施例１の装置内の設定手順決定ステップが終了した状態の、フローエントリ隣接リストの例を示す表図。
【図２１】実施例１のネットワークの既存設定との競合を回避するフローチャート。
【図２２】実施例１のパス単位設定手順決定のフローチャート。
【図２３】実施例１の装置内設定手順候補生成のフローチャート。
【図２４】実施例１の部分グラフ単位で順列を生成するフローチャート。
【図２５】実施例１の部分グラフを抽出するフローチャート。
【図２６】実施例１の順列を生成するフローチャート。
【図２７】実施例１の競合検出のフローチャート。
【図２８】実施例１のループ検出のフローチャート。
【図２９】実施例１の設定先依存設定手順決定のフローチャート。
【図３０】実施例１の装置内設定先依存設定手順決定のフローチャート。
【図３１】実施例１の装置内設定先依存設定手順決定後の、フローエントリ隣接リストの例を示す表図。
【図３２】実施例１のシーケンス番号付与のフローチャート。
【図３３】実施例１の装置内シーケンス番号を付与するフローチャート。
【図３４】実施例１の制御装置における設定実行のフローチャート。
【図３５】実施例１の装置設定の並列実行のフローチャート。
【図３６】実施例１の装置設定の実行のフローチャート。
【図３７】実施例１のフローエントリ設定の並列実行のフローチャート。
【図３８】実施例１の通信装置における設定要求受信のフローチャート。
【図３９】実施例１の通信装置における設定実行のフローチャート。
【図４０】実施例１の設定実行部における設定実行のフローチャート。
【図４１】実施例１のネットワーク構成変更の流れの例を示すタイムライン図。
【図４２】実施例２のネットワーク設定システムの構成例を示すブロック図。
【図４３】実施例２の制御装置における設定実行のフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明の実施例を添付図面に基づき説明する。各図における同一符号は同一物または相当物を示す。説明の都合上、符号に添え字を追加して区別することがある。
【００１４】
本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００１５】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。
【００１６】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【００１７】
本明細書で引用した刊行物、特許および特許出願は、そのまま本明細書の説明の一部を構成する。
【実施例１】
【００１８】
図１は、本発明の実施形態におけるネットワーク設定システムの構成例を示すブロック図である。
【００１９】
本実施形態のプログラマブルネットワークは、制御装置１００及び１台以上の通信装置１２０を備え、コンフィギュレーションネットワーク１１０を介して互いに接続される。管理装置１２０及び通信装置１２０の台数は、本実施形態の台数に限定されない。
【００２０】
制御装置１００は、ネットワーク設定キュー１０１、ネットワーク構成ＤＢ１０２、ネットワーク設定手順生成部１０３、ネットワーク設定実行キュー１０４、ネットワーク設定実行部１０５、設定済みネットワークモデル管理部１０６、制御ＩＦ１０７、設定済みネットワークモデル１０８から構成される。また、制御装置１００には情報を出力する出力装置と、情報を入力する入力装置を有する。これらは、本実施形態では制御ＩＦ１０７に含まれるものとする。
【００２１】
制御装置１００は、汎用のＰＣサーバなどを利用して実現できる。その場合、ネットワーク設定キュー１０１、ネットワーク構成ＤＢ１０２、ネットワーク設定実行キュー１０４、設定済みネットワークモデル１０８は、半導体メモリＤＲＡＭ（Dynamic Random Access Memory），ＳＲＡＭ（Static Random Access Memory）などに格納される。ネットワーク設定手順生成部１０３、ネットワーク設定実行部１０５、設定済みネットワークモデル管理部１０６はＣＰＵ（Central Processing Unit）などの演算器によって実行されるプログラムとして実現される。また、ＦＰＧＡ（Field Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuit）などのハードウェア回路として実現することもできる。
【００２２】
ネットワーク設定キュー１０１には、オペレータによって作成されたネットワーク設定データが格納される。ネットワーク設定データの詳細については図３、図４で後述する。
【００２３】
ネットワーク構成ＤＢ１０２には、オペレータによって作成されたネットワーク構成データが格納される。ネットワーク構成データの詳細については図５で例を説明する。
【００２４】
ネットワーク設定手順生成部１０３は、ネットワーク設定キュー１０１から読み出したネットワーク設定データ、ネットワーク構成ＤＢ１０２から読み出したネットワーク構成データ、設定済みネットワークモデル１０８をもとに、ネットワーク設定グラフを生成する。ネットワーク設定グラフとは、ネットワーク設定データの設定手順である。設定手順生成ステップ及びネットワーク設定グラフについては後述する。
【００２５】
ネットワーク設定実行キュー１０４には、ネットワーク設定手順生成部により生成されたネットワーク設定グラフとネットワーク設定データが格納される。
【００２６】
ネットワーク設定実行部１０５は、ネットワーク設定データに記載された設定開始時刻になると、ネットワーク設定実行キューから、ネットワーク設定グラフとネットワーク設定データを読み出す。ネットワーク設定実行部１０５は、ネットワーク設定グラフをもとにネットワーク設定データを制御ＩＦ１０７経由で通信装置１２０に設定するとともに、設定済みネットワーク管理部１０６に同じネットワーク設定データを通知する。ネットワーク設定実行部の詳細は後述する。
【００２７】
設定済みネットワークモデル管理部１０６は、設定済みネットワークモデル１０８を作成・管理する。設定済みネットワークモデル管理部１０６は、ネットワーク設定実行部１０５からネットワーク設定データの通知を受けると、設定済みネットワークモデル１０８に設定を反映させる。設定済みネットワークモデル１０８は、ネットワーク構成データをもとにネットワークに存在する通信装置１２０をモデル化し、ネットワーク設定データから読み出した実通信装置１２０に設定済みの設定内容を、モデル内に保存したデータセットである。
【００２８】
制御ＩＦ１０７は、制御装置１００をコンフィギュレーションネットワーク１１０と接続する。制御ＩＦ１０７は、Ｅｔｈｅｒｎｅｔ（登録商標）やＩｎｆｉｎｉｂａｎｄ（登録商標）など、制御装置と通信装置が相互に通信できればよい。制御ＩＦ１０７は、コンフィギュレーションネットワーク１１０と接続できれば良く、その数は問わない。ただし、制御ＩＦ１０７の数を増やすことで、ネットワーク帯域のボトルネックの問題を改善できる。
【００２９】
設定済みネットワークモデル１０８は、現在運用中であるすべての通信装置１２０の設定情報、及び、通信装置間の接続関係を保持する。設定済みネットワークモデル１０８の詳細は後述する。
【００３０】
本実施例では、ネットワークの要求・応答回数を削減する効果がある。このため、ネットワーク遅延が大きいほど本実施例の効果も大きくなる。このため、本実施形態では、コンフィギュレーションネットワーク１１０の例として、高遅延のＷＡＮ（Wide Area Network）を想定したが、ＩＥＥＥ ８０２．１１（登録商標）／ａ／ｂ／ｇなどの無線ＬＡＮ（Local Area Network）や、Ｅｔｈｅｒｎｅｔ（登録商標）などによるＬＡＮなど、他の通信手段によって置き換えられてもよい。他の通信手段の利用によって通信速度、及び配置の自由度等の改善が可能となる。
【００３１】
なお、本実施例では、ネットワーク設定手順生成部１０３とネットワーク設定実行部１０５を同じ制御装置に備えているが、それぞれ別の制御装置として構成し、ＬＡＮなどのネットワーク経由で、必要なデータをやり取りしてもよい。また、ネットワーク設定キュー１０１、ネットワーク構成ＤＢ１０２、ネットワーク設定実行キュー１０４、設定済みネットワークモデル１０８等を格納する記憶装置を、制御装置外に配置することもできる。
【００３２】
通信装置１２０は、１個以上の設定ＩＦ１２１、１個以上の設定実行部１２２、１個以上のデータ転送部１２４、及び設定実行部１２２とデータ転送部１２４を接続する装置内ネットワーク１２５から構成される。通信装置１２０は、ＯｐｅｎＦｌｏｗ（登録商標）スイッチなどと同様に、データ転送処理を設定データで変更できる。
【００３３】
設定ＩＦ１２１は、通信装置１２０とコンフィギュレーションネットワーク１１０を接続する。設定ＩＦ１２１は、Ｅｔｈｅｒｎｅｔ（登録商標）やＩｎｆｉｎｉｂａｎｄ（登録商標）など、制御装置と通信装置が相互に通信できればよい。本実施例では、通信装置１２０の設定を並列に実行することで、設定変更時間を短縮する効果がある。そのため、本実施形態では、通信装置１２０は２個以上の設定ＩＦ１２１を備える例を想定する。設定ＩＦ１２１は、一つの物理的ＩＦを複数の論理的ＩＦとして提供してもよい。物理的な設定ＩＦ１２１の数を増やすことで、ネットワーク帯域のボトルネックを改善できる効果がある。なお、ネットワーク帯域のボトルネックが問題にならないシステムでは、設定ＩＦ１２１は一つでもよい。
【００３４】
設定実行部１２２は、制御装置１００からの設定要求を受け、データ転送部１２４に設定を実行する。制御装置１００からの設定要求は、設定キュー１２３に一度格納される。設定実行部１２２は、ＣＰＵなどの演算器によって実行されるプログラムとして、あるいは、ＦＰＧＡなどにより実装される論理回路などとして実現される。設定キュー１２３は、半導体メモリＤＲＡＭ，ＳＲＡＭなどの利用が考えられる。設定の実行ステップについては後述する。
【００３５】
データ転送部１２４は、設定記憶部１２６に格納される設定データに基づいて通信装置１２０のデータ転送を行う。データ転送部１２４は、ＣＰＵなどの演算器によって実行されるプログラムとして、あるいは、ＦＰＧＡ、ＡＳＩＣなどのハードウェア回路として実現される。
【００３６】
装置内ネットワーク１２５は、設定実行部１２２とデータ転送部１２４間を接続する。本実施形態の装置内ネットワーク１２５は、電気バックプレーンを用いたＬＡＮを想定するが、その他、光バックプレーンや無線など、本実施形態に限定されない。
【００３７】
設定記憶部１２６は、半導体メモリＤＲＡＭ，ＳＲＡＭ、ＴＣＡＭ（Ternary Content Addressable Memory）などの利用が考えられる。本実施形態では、設定記憶部１２６は、ＯｐｅｎＦｌｏｗ（登録商標）のフローテーブルと同様に、２つ以上の設定記憶領域を備えることを想定する。
【００３８】
図２は、実施例１のネットワーク設定システムを適用して構成したネットワークの例である。ネットワーク２００は、ノードＡ２０１、ノードＢ２０２、ノードＣ２０３、制御装置１００、コンフィギュレーションネットワーク１１０、通信装置Ｘ１２０（１）〜通信装置Ｚ１２０（３）から構成される。ノードＡ２０１、ノードＢ２０２、ノードＣ２０３は、端末や制御装置１００が管理していない通信装置を想定している。
【００３９】
本実施形態では、制御装置１００と通信装置１２０間のプロトコルとしてＯｐｅｎＦｌｏｗ（登録商標）を利用すること想定している。
【００４０】
通信装置Ｘ１２０（１）〜通信装置Ｚ（３）は、それぞれ、設定実行部１２２であるＭＣ（Management Card）２枚、データ転送部１２４であるＬＣ（Line Card）８枚を備える。ＬＣは、データ転送用ポート２１０を４ポート備え、ＭＣは設定ＩＦ１２１を備える。
【００４１】
以降、ＬＣｎ（ｎは自然数）のｍ（ｍは自然数）番目のポートを、Port ｍ／ｎ
と表現する。本実施形態では、ノードＡが通信装置Ｘ１２０（１）のPort １／１と、通信装置Ｘ１２０（１）のPort １／２が通信装置Ｚ１２０（３）のPort １／１と、通信装置Ｘ１２０（１）のPort ２／２が通信装置Ｚ１２０（３）のPort ２／１と、通信装置Ｘ１２０（１）のPort ５／１と通信装置Ｙ１２０（２）のPort ５／１と、通信装置Ｚ１２０（３）のPort １／８と通信装置Ｙ１２０（２）のPort １／７と、通信装置Ｚ１２０（３）のPort ２／８と通信装置Ｙ１２０（２）のPort ２／７と、ノードＢが通信装置１２０Ｙ（２）のPort １／８と、ノードＣが通信装置Ｙ１２０（２）のPort ２／８とが、それぞれ接続されている。
【００４２】
図３は、図１のネットワーク設定キュー１０１に格納される、オペレータによって作成されたネットワーク設定データの例である。本実施形態では、ネットワーク設定データ３００をＸＭＬ（eXtensible Markup Language）形式で記述しているが、等価のデータを含んでいればＸＭＬ形式以外の形式で記述されてもよい。
【００４３】
ネットワーク設定データ３００は、追加もしくは削除するネットワーク全体の設定を定義する。
【００４４】
行３０１の設定タグは、ネットワーク設定データが記載されたファイルであることを示しており、設定の有効期限が開始日時プロパティと終了日時プロパティで指定される。
【００４５】
行３０２の装置タグは、設定対象の通信装置１２０をnameプロパティで特定する。
【００４６】
行３０３のフローエントリタグは、対象となる通信装置１２０の設定記憶部１２６に格納する設定内容を指定する。行３０３のIDプロパティには、フローエントリを特定するユニークな値を指定する。Tableプロパティには複数ある設定記憶部（テーブル）１２６を特定する値を指定する。Priorityタグはフローエントリ間の優先度を指定する。Devicesプロパティは、データ転送部１２４であるＬＣを特定する値を指定する。これらにより、設定データに含まれる設定（例えばフローエントリ）の、通信装置内の保存先（例えばフローテーブル）が指定される。典型的な例では、設定には、処理されるフレームの条件（マッチング条件）と、条件にあてはまるフレームの処理内容が含まれる。
【００４７】
行３０４のマッチ条件タグは、データ転送処理対象のフレームの条件を指定する。行３０４の例では、入力ポートがPort １／１かつＶＬＡＮが１００のフレームが対象となる。
【００４８】
行３０５のアクションタグは、マッチング条件に該当したフレームの処理内容を指定する。行３０５の例では、出力先Normalが指定されており、ＯｐｅｎＦｌｏｗ（登録商標）の規定では、通信装置の実装依存の動作となる。本実施形態では、出力先がNormalの場合、Ｌ２スイッチと同じ、ＦＤＢ（Forwarding DataBase）に基づく転送動作を想定する。
【００４９】
行３０６は、ノードＡ２０１のフローエントリを示している。ノードＡは、端末や制御装置１００が管理していない通信装置のため、行３０６のTypeプロパティにDummyを指定し、行３０７で出力先がＰｏｒt １／１となる仮のフローエントリを指定している。以降、既出のタグについては説明を省略する。
【００５０】
図４Ａ，図４Ｂは、同じくネットワーク設定キュー１０１に格納されるネットワーク設定データの例である。ネットワーク設定データ４００は、フローエントリタグ４０１、４０２を含む。
【００５１】
図５Ａ，図５Ｂは、図１のネットワーク構成ＤＢ１０２に格納されるネットワーク構成データの例である。ネットワーク設定データと同様にＸＭＬ形式で記述しているが、等価のデータを含んでいればＸＭＬ形式以外の形式で記述されてもよい。
【００５２】
ネットワーク構成データ５００は、ネットワークの物理的な構成情報を定義する。
【００５３】
行５０１の構成タグは、ネットワーク構成データが記載されたファイルであることを示している。
【００５４】
行５０２の装置タグは、ネットワークに存在する装置をnameプロパティで指定する。
【００５５】
行５０３のポートタグは、装置が備えるポートをnameプロパティで指定する。
【００５６】
行５０４の接続タグは、装置間の接続関係を指定する。
【００５７】
行５０５のFromタグは接続元、行５０６のToタグは接続先を表す。
【００５８】
続いて、本実施形態におけるプログラマブルネットワークの動作の概略について説明する。まず、ネットワーク２００（図２参照）にネットワーク設定データ４００（図４参照）を追加する動作を例として、ネットワーク構築のステップを説明する。
【００５９】
図６は、本実施形態におけるネットワーク構築を説明するフローチャート６００である。図１のネットワーク設定手順生成部１０３で実行される。
【００６０】
ネットワーク構築は、開始状態６０１から始まり、ステップ６０２に進む。
【００６１】
ステップ６０２では、まず、オペレータが物理的なネットワーク構成からネットワーク構成データ５００（図５参照）を作成し、ネットワーク構成ＤＢ１０２に格納する。次に、オペレータがネットワーク構成をもとにユーザの要求仕様を満たす論理的なネットワーク設定であるネットワーク設定データ４００（図４参照）を作成し、ネットワーク設定キュー１０１に格納する。ネットワーク設定データがネットワーク設定キュー１０１に格納されるとステップ６０３に進む。
【００６２】
ステップ６０３では、制御装置１００のネットワーク設定手順生成部１０３が装置単位の設定手順を決定し、ステップ６０４に進む。
【００６３】
ステップ６０４では、ネットワーク設定手順生成部１０３がネットワーク設定データ、ネットワーク構成データをもとに装置内の設定手順を作成し、ステップ６０５に進む。
【００６４】
ステップ６０５では、設定済みネットワークモデルをもとに、ネットワーク２００に設定済みのネットワーク設定と、ステップ６０４までで作成された設定手順が競合しないように設定手順を作成し、ステップ６０６に進む。
【００６５】
ステップ６０６は、装置内の設定先に依存して（基づいて）定められる設定手順の決定処理である。ステップ６０６では、ネットワーク設定データ４００に記載された設定記憶部１２６の情報をもとに、異なる設定記憶部１２６に同時に設定できる設定手順を作成し、ステップ６０７に進む。
【００６６】
ステップ６０７では、ステップ６０６までで作成された設定手順に通信装置１２０ごとにシーケンス番号を付与し、ステップ６０８に進む。
【００６７】
ステップ６０８では、制御装置１００が設定処理を開始し、ステップ６０９に進む。
【００６８】
ステップ６０９では通信装置１２０が設定処理を実行し、ステップ６１０に進み、終了する。
【００６９】
以上説明したように、本実施例の制御装置は、入力装置、出力装置、記憶装置１０２，１０８、および処理装置を備え、少なくとも一つの通信装置１２０とネットワーク１１０を介して接続される。制御装置は入力装置から入力され、あるいは記憶装置に記憶されたネットワーク設定データ３００に基づいて、通信装置にネットワーク設定を行う。処理装置は、ネットワーク設定の設定手順を生成するネットワーク設定手順生成部１０３を有し、ネットワーク設定手順生成部１０３は、入力装置から入力され、あるいは記憶装置に記憶されているネットワーク構成データ５００から通信装置の接続関係を検出する機能を有する。処理装置は、検出した接続関係と、ネットワーク設定データに基づき、通信装置単位の設定順序を生成する機能を有し、通信装置単位の設定順序に基づいて新規ネットワーク設定の設定手順を生成する。本実施例では、ネットワークの設定手順は、既存のネットワーク構成とネットワーク設定データに基づいて、動的に生成される。これにより、既存のネットワーク構成に影響を与えない設定順序を生成することができる。
【００７０】
以降、フローチャート６００の各ステップの詳細な説明をする。
【００７１】
図７は、図６の装置単位の設定手順決定ステップ６０３の詳細を説明するフローチャート７００である。まず、開始状態７０１から始まり、ステップ７０２に進む。
【００７２】
ステップ７０２では、ネットワーク設定手順生成部１０３がネットワーク設定キュー１０１からネットワーク設定データ４００を読み出し、ステップ７０３に進む。
【００７３】
ステップ７０３では、ネットワーク設定手順生成部１０３がネットワーク構成ＤＢ１０２からネットワーク構成データ５００を読み出し、ステップ７０４に進む。
【００７４】
ステップ７０４では、ネットワーク設定手順生成部１０３が、ネットワーク設定データ４００をもとに装置をグラフノードとする装置設定隣接リストを初期化し、ステップ７０５に進む。
【００７５】
図８は、図７の装置設定隣接リスト初期化ステップ７０４で初期化された、装置設定隣接リスト８００である。図８に示すグラフノード８０１を識別する「通信装置Ｘ」「通信装置Ｙ」「通信装置Ｚ」等は、図４のネットワーク設定データ４００で記述された「装置name」である。すなわち、装置設定隣接リスト８００は、ネットワーク設定データ４００の装置タグに定義された装置をグラフノード８０１、装置間の接続状態をエッジ８０２としたグラフである。初期化されたグラフは接続状態がないグラフとなる。
【００７６】
フローチャート７００に戻り、ステップ７０５からステップ７１１は、図８の装置設定隣接リスト８００のグラフノード８０１に対する繰り返し処理である。すなわちここでは、変数Ｕは図８の［0］［1］［2］［3］［4］［5］であって、各グラフノード（装置）に対して繰り返される。
【００７７】
ステップ７０６からステップ７１０は、変数Ｕのグラフノードに対応する、ネットワーク設定データ４００から取得したフローエントリに対する繰り返し処理である。例えば、図８でＵが［0］のグラフノード（通信装置Ｘ）に対応するフローエントリは、ネットワーク設定データ４００から”a”，”b”，”c”，”d”とわかる。よって、変数Ｅは図１１の［0］［1］［2］［3］であって、各フローエントリに対して繰り返される。
【００７８】
ステップ７０７では、ネットワーク設定手順生成部１０３が、ネットワーク構成データ５００から取得した変数Ｕのグラフノードに対応するポート情報と、変数Ｅのフローエントリのマッチ条件に記載された入力ポートであるinportの値（変数Ｐに格納）を照合し、ステップ７０８に進む。すなわちステップ７０７では、ネットワークを構成するグラフノード（装置）のポートのうち、ネットワーク構成データ５００が入力ポートとして指定しているポートを抽出している。
【００７９】
ステップ７０８では、ネットワーク設定手順生成部１０３が、変数Ｐのポートが接続されている装置（変数Ｖに格納）を、ネットワーク構成データ５００の接続タグのエントリから検索し、ステップ７０９に進む。これにより、ネットワーク構成データ５００が入力ポートとして指定しているポートに接続される他の装置Ｖが抽出される。
【００８０】
ステップ７０９では、ネットワーク設定手順生成部１０３が、送信元を後に設定するという、設定手順決定ポリシー７１３に基づいて、装置設定隣接リスト８００の変数Ｕの接続先として、変数Ｖを追加し、ステップ７１０に進む。
【００８１】
ステップ７１０では、繰り返し処理が終わっていればステップ７１１に進み、終わっていなければステップ７０６に戻る。
【００８２】
ステップ７１１では、繰り返し処理が終わっていればステップ７１２に進み、終わっていなければステップ７０５に戻る。ステップ７１２は終了状態である。
【００８３】
図９は、図７の装置単位の設定手順決定ステップ７００が終了した状態の、装置設定隣接リスト９００である。エッジ９０１の右側に書かれているグラフノードは、エッジ９０１の左側のグラフノードの接続元のグラフノード一覧を表している。
【００８４】
装置単位の設定手順は、装置設定隣接リスト９００に基づいて実行される。例えば、通信装置Ｘを開始位置とした場合、次は通信装置Ｙもしくは通信装置ＺもしくはＡとなる。
【００８５】
このように、装置単位の設定手順決定ステップ７００により、ネットワーク設定データ４００とネットワーク構成データ５００から、ネットワーク下流から設定する手順が生成される。ネットワーク下流から設定することで、予期しないパケットの流入を防ぐことができ、設定途中に起き得るネットワーク障害の回避が図れる。ここで、データの送信側を上流と称し、受信側を下流と称している。さらに好ましくは、装置設定隣接リスト９００において、接続関係のない装置間を認識することで、安全に複数の装置を並列に設定できるため、設定実行時間の短縮が図れる。
【００８６】
また、自動的に装置単位の設定手順の組み合わせを図９の例では１２通りに絞り込むことができ、設定手順の決定時間を短縮できる。装置単位の設定手順決定ステップ６０３を使用しない場合、装置数をｎとした場合、設定手順の候補はｎの階乗通り存在するため、ネットワーク設定データ４００では７２０通りの候補から選択する必要がある。
【００８７】
図１０は、図６の装置内の設定手順決定ステップ６０４の詳細を説明するフローチャート１０００である。まず、開始状態１００１から始まり、ステップ１００２に進む。
【００８８】
ステップ１００２からステップ１０１３までは、装置設定隣接リスト９００のグラフノード８０１（変数Ｕに格納）の繰り返しである。
【００８９】
ステップ１００３では、ネットワーク設定手順生成部１０３が、ネットワーク設定データ４００をもとに変数Ｕの装置のフローエントリをグラフノードとするフローエントリ隣接リストを初期化し、ステップ１００４に進む。
【００９０】
図１１は、図１０のフローエントリ隣接リスト初期化ステップ１００３で初期化された、フローエントリ隣接リスト１１００である。図中に示すグラフノード１１０１を識別する「a」，「b」，「c」，「d」は、図４のネットワーク設定データ４００で示したフローエントリＩＤである。フローエントリ隣接リスト１１００は、ネットワーク設定データ４００のフローエントリタグに定義されたフローエントリをグラフノード１１０１、フローエントリの設定手順をエッジ１１０２で表現したグラフである。初期化されたグラフは設定の順序関係がないグラフである。
【００９１】
図１０のフローチャート１０００に戻り、ステップ１００４からステップ１０１２までは、変数Ｕの装置のフローエントリに対する（変数Ｅに格納）繰り返しである。ステップ１００５からステップ１０１１までは、変数Ｅを除く、変数Ｕの装置のフローエントリに対する繰り返しである。変数Ｅを除くのは、同一の装置相互の関係は考慮しなくてよいからである。
【００９２】
ステップ１００６では、ネットワーク設定手順生成部１０３が、変数ＥのフローエントリのTableプロパティと、変数ＦのフローエントリのTableプロパティが一致しているか確認し、Ｙｅｓの場合はステップ１００７に、Ｎｏの場合はステップ１００８に進む。Tableプロパティが一致している場合は、フローエントリの設定相互の干渉を考慮する必要があるからである。
【００９３】
ステップ１００７では、ネットワーク設定手順生成部１０３が、後述するフローチャート１２００を実行し、Tableプロパティが同じ場合に、変数Fのフローエントリを、変数Ｅのフローエントリの後に実行するか決定し、ステップ１００９に進む。
【００９４】
ステップ１００８では、ネットワーク設定手順生成部１０３が、後述するフローチャート１４００を実行し、Tableプロパティが異なる場合に、変数Fのフローエントリを、変数Ｅのフローエントリの後に実行するか決定し、ステップ１００９に進む。
【００９５】
ステップ１００９では、ネットワーク設定手順生成部１０３がステップ１００７またはステップ１００８の結果を確認し、Ｙｅｓの場合はステップ１０１０に、Ｎｏの場合はステップ１０１１に進む。
【００９６】
ステップ１０１０では、ネットワーク設定手順生成部１０３が、フローエントリ隣接リストに変数Ｆのフローエントリを変数Ｅのフローエントリの後手順として登録し、ステップ１０１１に進む。
【００９７】
ステップ１０１１では、繰り返し処理が終わっていればステップ１０１２に進み、終わっていなければステップ１００５に戻る。
【００９８】
ステップ１０１２では、繰り返し処理が終わっていればステップ１０１３に進み、終わっていなければステップ１００４に戻る。
【００９９】
ステップ１０１３では、繰り返し処理が終わっていればステップ１０１４に進み、終わっていなければステップ１００２に戻る。ステップ１０１４は終了状態である。
【０１００】
図１２は、図１０の決定ステップ１００８で、Tableプロパティが異なる場合に、変数Eのフローエントリを、変数Fのフローエントリより先に実行すべきか判断するフローチャート１２００である。まず、開始状態１２０１から始まり、ステップ１２０２に進む。
【０１０１】
ステップ１２０２では、ネットワーク設定手順生成部１０３が、フローエントリを追加するか削除するか判断し、Ｙｅｓの場合はステップ１２０３に、Ｎｏの場合は、ステップ１２０５に進む。フローエントリを追加するか削除するかの判断は、オペレータが指定する方法や、ネットワーク設定データ４００の有効期限をもとに、ネットワーク設定手順生成部１０３が、終了時刻前であれば追加、終了時刻後であれば削除すると判断する方法などが考えられる。
【０１０２】
ステップ１２０３では、ネットワーク設定手順生成部１０３が、変数Ｅ、変数Ｆのフローエントリのアクション優先度をそれぞれ、後述するネットワーク設定手順生成部１０３が備えるアクション優先度テーブル１３００から検索し、ステップ１２０４に進む。
【０１０３】
図１３は、フローエントリのアクション優先度テーブルである。このテーブルは図１２の検索ステップ１２０３、１２０５で用いる。アクション優先度テーブルは、フローエントリに含まれるアクションの実行優先度が記載されている。優先度は、ＯｐｅｎＦｌｏｗ（登録商標）に規定された値を固定値としてネットワーク設定手順生成部１０３に格納する方法や、オペレータが任意の値を設定する方法などが考えられる。
【０１０４】
図１２のフローチャート１２００に戻って、ステップ１２０４では、ネットワーク設定手順生成部１０３が、変数Ｅのアクション優先度が、変数Ｆのアクション優先度より高いか確認し、Ｙｅｓの場合はステップ１２０７に進み、Ｎｏの場合は、ステップ１２１０に進む。
【０１０５】
ステップ１２０５では、ネットワーク設定手順生成部１０３が、変数Ｅ、変数Ｆのフローエントリのアクション優先度をそれぞれ、後述するネットワーク設定手順生成部１０３が備えるアクション優先度テーブル１３００から検索し、ステップ１２０６に進む。
【０１０６】
ステップ１２０６では、ネットワーク設定手順生成部１０３が、変数Ｅのアクション優先度が、変数Ｆのアクション優先度より低いか確認し、Ｙｅｓの場合はステップ１２０７に進み、Ｎｏの場合は、ステップ１２１０に進む。
【０１０７】
ステップ１２０７では、ネットワーク設定手順生成部１０３が後述するフローチャート１５００を実行し、変数Ｅ、変数Ｆそれぞれのフローエントリのマッチ条件の包含関係を決定し、ステップ１２０８に進む。
【０１０８】
ステップ１２０８では、ネットワーク設定手順生成部１０３が、ステップ１２０７の結果が「変数Ｅと変数Ｆは排他関係」であるかを確認し、Ｙｅｓであればステップ１２０９に、Ｎｏであればステップ１２１０に進む。
【０１０９】
ステップ１２０９は呼び出し元にＹｅｓを返し、ステップ１２１０は呼び出し元にＮｏを返す。
【０１１０】
このように、フローチャート１２００において、アクション優先度に基づき設定手順を決定することで、データ転送部１２４がポートからパケットを出力するアクション（output）を実行する前に、残りの実行されるべきアクションすべてが実行されることを保証でき、設定途中のネットワーク障害の回避を図れる。また、強制される実行の順序がないことを検出できるため、並列化により設定実行時間の短縮化が実現できる。
【０１１１】
図１４は、図１０の決定ステップ１００７で、Tableプロパティが同じ場合に、変数Eのフローエントリを、変数Ｆのフローエントリより先に実行すべきか判断するフローチャート１４００である。まず、開始状態１４０１から始まり、ステップ１４０２に進む。ステップ１４０２では、ネットワーク設定手順生成部１０３が、フローエントリを追加するか削除するか判断し、Ｙｅｓの場合はステップ１４０３に、Ｎｏの場合は、ステップ１４０５に進む。フローエントリを追加するか削除するかの判断は、ステップ１２０２の場合と同様でよい。
【０１１２】
ステップ１４０３では、ネットワーク設定手順生成部１０３が後述するフローチャート１５００を実行し、変数Ｅ、変数Ｆそれぞれのフローエントリのマッチ条件の包含関係を決定し、ステップ１４０４に進む。ステップ１４０４では、ネットワーク設定手順生成部１０３が、ステップ１４０３の結果が、「変数Ｅが変数Ｆに包含される関係」で、かつ、変数ＥのフローエントリのPriorityが変数FのフローエントリのPriorityより大きいかを確認し、Ｙｅｓであればステップ１４０７に、Ｎｏであればステップ１４０８に進む。
【０１１３】
ステップ１４０５では、ネットワーク設定手順生成部１０３が後述するフローチャート１５００を実行し、変数Ｅ、変数Ｆそれぞれのフローエントリのマッチ条件の包含関係を決定し、ステップ１４０６に進む。ステップ１４０６では、ネットワーク設定手順生成部１０３が、ステップ１４０５の結果が、「変数Ｅが変数Ｆを包含する関係」で、かつ、変数ＥのフローエントリのPriorityが変数FのフローエントリのPriority未満かを確認し、Ｙｅｓであればステップ１４０７に、Ｎｏであればステップ１４０８に進む。ステップ１４０７は呼び出し元にＹｅｓを返し、ステップ１４０８は呼び出し元にＮｏを返す。
【０１１４】
図１５は、図１２の決定ステップ１２０７で、マッチ条件の包含関係を決定するフローチャート１５００である。マッチ条件の包含関係を決定ステップは引数として、２つのフローエントリＥとフローエントリＦを取る。まず、開始状態１５０１から始まり、ステップ１５０２に進む。ステップ１５０２では、ネットワーク設定手順生成部１０３が、後述する「変数Ｅが変数Ｆに等しい関係」か確認するフローチャート１６００を実行し、ステップ１５０３に進む。ステップ１５０３では、ネットワーク設定手順生成部１０３が、ステップ１５０２の結果を確認し、Ｙｅｓの場合はステップ１５０４に、Ｎｏの場合は１５０３に進む。
【０１１５】
ステップ１５０５では、ネットワーク設定手順生成部１０３が「変数Ｅと変数Ｆが排他関係」かを確認するステップ１７００を実行し、ステップ１５０６に進む。ステップ１５０６では、ネットワーク設定手順生成部１０３がステップ１５０５の結果を確認し、Ｙｅｓの場合はステップ１５０７に、Ｎｏの場合はステップ１５０８に進む。
【０１１６】
ステップ１５０８では、ネットワーク設定手順生成部１０３が「変数Ｅが変数Ｆに包含される関係」か確認するフローチャート１８００を実行し、ステップ１５０９に進む。ステップ１５０９では、ネットワーク設定手順生成部１０３が、ステップ１５０８の結果を確認し、Ｙｅｓの場合はステップ１５１０に、Ｎｏの場合はステップ１５１１に進む。ステップ１５１１では、ネットワーク設定手順生成部１０３が「変数Ｅが変数Ｆを包含する関係」か確認するフローチャート１９００を実行し、ステップ１５１２に進む。ステップ１５１２では、ネットワーク設定手順生成部１０３がステップ１５１１の結果を確認し、Ｙｅｓの場合はステップ１５１３に、Ｎｏの場合はステップ１５１４に進む。
【０１１７】
ステップ１５０４、ステップ１５０７、ステップ１５１０、ステップ１５１３、ステップ１５１４は、呼び出し元にそれぞれ、「変数Ｅが変数Ｆに等しい関係」、「変数Ｅと変数Ｆが排他関係」、「変数Ｅが変数Ｆに包含される関係」、「変数Ｅが変数Ｆを包含する関係」、「変数Ｅと変数Ｆが両立の関係」を返す。
【０１１８】
図１６は、図１５の確認ステップ１５０２で、変数Ｅが変数Ｆに等しい関係か確認するフローチャート１６００である。まず、開始状態１６０１から始まり、ステップ１６０２に進む。ステップ１６０２では、ネットワーク設定手順生成部１０３が、変数Ｅのフローエントリのマッチ条件数と変数Ｆのフローエントリのマッチ条件数が等しく、かつ、変数Ｅのフローエントリのマッチ条件項目と、変数Ｆのフローエントリのマッチ条件項目が等しいか確認し、Ｙｅｓの場合はステップ１６０３に、Ｎｏの場合はステップ１６０４に進む。
【０１１９】
ステップ１６０３からステップ１６０６は、変数Ｅのフローエントリのマッチ条件に対する繰り返し（変数Ｍに格納）である。ステップ１６０４は、ネットワーク設定手順生成部１０３が、変数Ｆのマッチ条件から、変数Ｍの項目に対応するマッチ条件を取得し（変数Ｎに格納）、ステップ１６０５に進む。ステップ１６０５では、ネットワーク設定手順生成部１０３が、変数Ｍと変数Ｎが同値であるか確認し、Ｙｅｓの場合はステップ１６０６に、Ｎｏの場合はステップ１６０４に進む。ステップ１６０６は繰り返し処理が終わっていればステップ１６０７に進み、終わっていなければステップ１６０３に戻る。ステップ１６０７は呼び出し元にＹｅｓを返し、ステップ１６０４は呼び出し元にＮｏを返す。
【０１２０】
ステップ１６００で得られる結果は、変数Ｅのマッチ条件が変数Ｆのマッチ条件と完全に同一であることを意味する。
【０１２１】
図１７は、図１５の確認ステップ１５０５で、変数Ｅと変数Ｆが排他関係か確認するフローチャート１７００である。まず、開始状態１７０１から始まり、ステップ１７０２に進む。ステップ１７０２からステップ１７０６は、変数Ｅのフローエントリのマッチ条件すべてに対する繰り返し（変数Ｍに格納）である。ステップ１７０３では、ネットワーク設定手順生成部１０３が、変数Ｆのマッチ条件から、変数Ｍの項目に対応するマッチ条件を取得し（変数Ｎに格納）、ステップ１７０４に進む。ステップ１７０４では、変数Ｎに値が存在するか確認し、Ｙｅｓの場合はステップ１７０５に、Ｎｏの場合はステップ１７０６に進む。
【０１２２】
ステップ１７０５では、ネットワーク設定手順生成部が、変数ＭのＤｏｎ’ｔ  Ｃａｒｅビット除くすべてのビットと変数Ｎのビットが等しい（変数ＮのＤｏｎ’t Ｃａｒｅビットは常に等しいと判断）、もしくは、変数ＮのＤｏｎ’ｔ  Ｃａｒｅビット除くすべてのビットと変数Ｍのビットが等しい（変数ＭのＤｏｎ’t Ｃａｒｅビットは常に等しいと判断）か確認し、Ｙｅｓの場合はステップ１７０６、Ｎｏの場合は、ステップ１７０８に進む。ステップ１７０６は繰り返し処理が終わっていれば１７０７に進み、終わっていなければステップ１７０２に戻る。ステップ１７０７は呼び出しもとにＮｏを返し、ステップ１７０８は呼び出しもとにＹｅｓを返す。
【０１２３】
ステップ１７００で得られる結果は、変数Ｅのマッチ条件と変数Ｆのマッチ条件が、同時には成立しないことを意味する。
【０１２４】
図１８は、図１５の確認ステップ１５０８で、変数Ｅが変数Ｆに包含される関係か確認するフローチャート１８００である。まず、開始状態１８０１から始まり、ステップ１８０２に進む。ステップ１８０２では、ネットワーク設定手順生成部１０３が、変数Ｅのフローエントリのマッチ条件数が変数Ｆのフローエントリのマッチ条件数以上、かつ、変数Ｆのフローエントリのマッチ条件項目がすべて変数Ｅのフローエントリのマッチ条件項目に含まれるか確認し、Ｙｅｓの場合はステップ１８０３に、Ｎｏの場合はステップ１８０９に進む。ステップ１８０３からステップ１８０７は、変数Ｅのフローエントリのマッチ条件すべてに対する繰り返し処理（変数Ｍに格納）である。
【０１２５】
ステップ１８０４では、ネットワーク設定手順生成部１０３が、変数Ｆのマッチ条件から、変数Ｍの項目に対応するマッチ条件を取得し（変数Ｎに格納）、ステップ１８０５に進む。ステップ１８０５では、変数Ｎに値が存在するか確認し、Ｙｅｓの場合はステップ１８０６に、Ｎｏの場合はステップ１８０７に進む。
【０１２６】
ステップ１８０６では、変数ＭのＤｏｎ’ｔ  Ｃａｒｅビット除くすべてのビットと変数Ｎのビットが等しいか（変数ＮのＤｏｎ’t Ｃａｒｅビットは常に等しいと判断）確認し、Ｙｅｓの場合はステップ１８０７に、Ｎｏの場合は、ステップ１８０９に進む。ステップ１８０７では、繰り返し処理が終わっていればステップ１８０８に進み、終わっていなければステップ１８０３に戻る。ステップ１８０８は呼び出しもとにＹｅｓを返し、ステップ１８０９は呼び出しもとにＮｏを返す。
【０１２７】
ステップ１８００で得られる結果は、変数Ｅのマッチ条件に一致する場合は変数Ｆにも一致する（逆は必ずしも真ではない）ことを意味する。
【０１２８】
図１９は、図１５の確認ステップ１５１１で、変数Ｅが変数Ｆを包含する関係か確認するフローチャート１９００である。フローチャート１９００の実行結果は、フローチャート１８００において、変数Ｅと変数Ｆを入れ替えて実行した結果と同様である。
【０１２９】
また、変数Ｅと変数Ｆが両立の関係は、変数Ｅのマッチ条件と変数Ｆのマッチ条件が同時に成立する可能性があることを意味する。
【０１３０】
図２０は、初期化されたフローエントリ隣接リスト１１００(図１１）の初期値から出発し、装置内の設定手順決定ステップ１０００が終了した状態の、通信装置Ｘ１２０（１）のフローエントリ隣接リスト２０００の例である。エッジ２００１の右側に書かれているグラフノードは、エッジ２００１の左側のグラフノードより後に設定される。
【０１３１】
図１０〜図２０で説明したように、ネットワーク設定手順生成部１３０は、ネットワーク設定データに含まれる設定同士の包含関係を検出する機能を有し、検出した包含関係に基づき、通信装置内の設定順序を生成する。  このように、フローチャート１４００において、フローエントリのマッチ条件の包含関係に基づき設定手順を決定することで、マッチ条件が包含されるフローエントリを先に設定する手順が生成され、設定途中のネットワーク障害の回避が図れる。
【０１３２】
すなわち、設定手順が固定的な従来の技術では、包含するマッチ条件のフローエントリが先に設定されることがあり、包含されるマッチ条件に一致するパケットが通信装置１２０に入力された場合、包含するマッチ条件をもつフローエントリのアクションが実行されてしまう問題があるのに対して、本実施形態では包含関係を確認して設定手順を生成するため、問題を解決できる。
【０１３３】
また、包含関係のない排他的なフローエントリ関係を識別することで、強制される実行順序がないことを検出できるため、並列化により設定実行時間の短縮化が図れる。
【０１３４】
このように、装置内の設定手順決定のフローチャート１０００により、ネットワーク設定データ４００から、ネットワーク障害を回避しつつ、設定実行の並列化により設定実行時間の短縮が図れる、装置内の設定手順が生成される。
【０１３５】
図２１は、図６の競合回避ステップ６０５において、ネットワーク２００の既存設定との競合を回避するフローチャート２１００である。本実施例では、ネットワーク設定変更中に既存設定に影響を与える設定、例えば、既存の通信を遮断する設定やループを形成してしまう設定などを、既存設定と競合する設定と定義している。
【０１３６】
まず、開始状態２１０１から始まり、ステップ２１０２に進む。ステップ２１０２では、後述するパス単位の設定手順決定のフローチャート２２００で、ネットワーク設定手順生成部１０３が、設定手順候補リストを作成し、ステップ２１０３に進む。
【０１３７】
ステップ２１０３からステップ２１１０は、ステップ２１０２で作成されたフローエントリの設定手順候補リストすべてに対する繰り返し（変数Ｉに格納）処理である。
【０１３８】
ステップ２１０４からステップ２１０８は、変数Ｉに格納されたフローエントリリストに対する繰り返し（変数Ｅに格納）処理である。ステップ２１０５では、ネットワーク設定手順生成部１０３が、設定済みネットワーク管理部１０６から取得した設定済みネットワークモデル１０８に、ネットワーク設定手順生成部１０３が、変数Ｅのフローエントリを適用し、ステップ２１０６に進む。
【０１３９】
ステップ２１０６では、ネットワーク設定手順生成部１０３が、後述する競合検出ステップ２７００を実行し、ステップ２１０７に進む。ステップ２１０７では、ステップ２１０６の結果から競合がないか確認し、Ｙｅｓの場合はステップ２１０８に、Ｎｏの場合はステップ２１１０に進む。
【０１４０】
ステップ２１０８では、繰り返し処理が終わっていればステップ２１０９に進み、終わっていなければステップ２１０４に戻る。ステップ２１０９では、設定手順候補リストのうち、現在変数Ｉに格納されている通信経路と同じパスの設定手順候補リストをスキップし（変数Ｉを更新）、ステップ２１１０に進む。ステップ２１１０では繰り返し処理が終わっていればステップ２１１１に進み、終わっていなければステップ２１０３に戻る。
【０１４１】
図２２は、図２１のパス単位設定手順決定２１０２のフローチャート２２００である。まず、開始状態２２０１から始まり、ステップ２２０２に進む。ステップ２２０２からステップ２２０４は、フローチャート７００の実行により作成された装置設定隣接リスト９００に対する繰り返し処理（変数Ｉに格納）である。ステップ２２０３では、後述する再帰的なステップである装置内設定手順候補生成のフローチャート２３００を実行し、ステップ２２０４に進む。ステップ２２０４では、繰り返し処理が終わっていればステップ２２０５に進み、終わっていなければステップ２２０２に戻る。
【０１４２】
図２３は、図２２の装置内設定手順候補生成ステップ２２０３のフローチャート２３００である。装置内設定手順候補生成は再帰的な処理であり、引数として装置Ａ、及び設定手順候補リストを格納する２次元配列のＥｍａｔｒｉｘを取る。
【０１４３】
まず、開始状態２３０１から始まり、ステップ２３０２に進む。ステップ２３０２では、装置内の設定手順決定のフローチャート１０００で作成した装置Ａに対応するフローエントリ隣接リストを変数Ｕに格納し、ステップ２３０３に進む。ステップ２３０３からステップ２３０７は、装置Ａのフローエントリ隣接リストに対する繰り返し処理（変数ｅに格納）である。
【０１４４】
ステップ２３０４では、引数としてＥｍａｔｒｉｘと変数ｅを渡し、マッチ条件の包含関係を決定するフローチャート１５００を実行し、ステップ２３０５に進む。ステップ２３０５ではステップ２３０４の結果が排他関係にあることを確認し、Ｙｅｓの場合は、ステップ２３０６に、Ｎｏの場合はステップ２３０７に進む。ステップ２３０６では、変数Ｕから変数ｅの要素を取り除き、ステップ２３０７に進む。ステップ２３０７では、繰り返し処理が終わっていればステップ２３０８に進み、終わっていなければステップ２３０３に戻る。
【０１４５】
ステップ２３０８では、後述する部分グラフ単位で順列を生成するフローチャート２４００を実行し、ステップ２３０９に進む。ステップ２３０９では、順列ごとにＥｍａｔｒｉｘをコピーしたＥｍａｔｒｉｘ＿ｎｅｗ［i］(iは０から始まる順列の数−１の添え字)に、生成した順列を追加し、ステップ２３１０に進む。ステップ２３１０からステップ２３１２は、装置設定隣接リスト９００から取得した、装置Ａに接続されているノードに対する繰り返し処理（変数Ｉに格納）である。ステップ２３１１では、再び装置内設定手順候補生成ステップ（引数は、変数Ｉ，及びＥｍａｔｒｉｘ＿ｎｅｗ［］全体）を実行し、ステップ２３１２に進む。ステップ２３１３は終了状態である。
【０１４６】
図２４は、図２３の部分グラフ単位で順列を生成するステップ２３０８のフローチャート２４００である。ここでの部分グラフとは、フローエントリ隣接リスト９００において、設定手順が強制されるエッジで結合されたグラフノードの集合を意味する（単独のグラフノードはグラフノード一つの集合と見なす）。部分グラフ単位で順列を生成ステップは、引数としてフローエントリ隣接リストＡを取る。まず、開始状態２４０１から始まり、ステップ２４０２に進む。ステップ２４０２では、配列変数Ｗ、及び配列変数Ｔを空集合に初期化するとともに、ステップ２４０３に進む。ステップ２４０３からステップ２４０７は、フローエントリ隣接リストのグラフノードに対する繰り返し処理（変数Ｉに格納）である。
【０１４７】
ステップ２４０４では、後述する部分グラフの抽出のフローチャート２５００を実行し、ステップ２４０５に進む。ステップ２４０５では、配列変数Ｔが空か確認し、Ｙｅｓであればステップ２４０７に、Ｎｏであればステップ２４０６に進む。ステップ２４０６では、配列変数Ｗに配列変数Ｔを追加し、ステップ２４０７に進む。
【０１４８】
ステップ２４０７では、繰り返し処理が終わっていればステップ２４０８に進み、終わっていなければステップ２４０８に進む。ステップ２４０８では、後述する順列生成のフローチャート２６００を実行し、ステップ２４０９に進む。ステップ２４０９は終了状態である。
【０１４９】
図２５は、図２４の部分グラフを抽出するステップ２４０４のフローチャート２５００である。部分グラフを抽出するステップは、再帰的な処理で、引数としてグラフノードＮ及び結果格納用の配列Ｔを取る。まず、開始状態２５０１から始まり、ステップ２５０２に進む。ステップ２５０２では、グラフノードＮが訪問状態か確認し、Ｙｅｓの場合はステップ２５０８に、Ｎｏの場合はステップ２５０３に進む。ステップ２５０３では配列ＴにグラフノードＮを追加し、ステップ２５０４に進む。ステップ２５０４では、グラフノードＮを訪問状態に変更し、ステップ２５０５に進む。ステップ２５０５からステップ２５０７はグラフノードＮの隣接グラフノードすべてに対する繰り返し処理（変数Ｉに格納）である。
【０１５０】
ステップ２５０６は、再び部分グラフ抽出ステップを引数として、変数Ｉ及び配列Ｔを渡して実行し、ステップ２５０７に進む。ステップ２５０７では、繰り返し処理が終わっていればステップ２５０８に進み、終わっていなければステップ２５０８に進む。ステップ２５０８は終了状態である。
【０１５１】
図２６は、図２４の順列を生成するステップ２４０８のフローチャート２６００である。順列の生成ステップは、再帰的な処理で、引数として、部分グラフの配列Ａ，及び結果を格納する配列Ｐを取る。まず、開始状態２６０１から始まり、ステップ２６０２に進む。ステップ２６０２では、配列Ｐを配列Ａのサイズ分だけ、配列Ｐ［i］ (ｉは添え字で要素ｉ番目を意味)を複製し、ステップ２６０３に進む。ステップ２６０３からステップ２６０６は、配列Ａの要素に対する繰り返し処理（変数Ｉに格納）である。
【０１５２】
ステップ２６０４では、配列Ｐ［ｉ］に変数Ｉを追加し、ステップ２６０５に進む。ステップ２６０５では、再び順列の生成ステップを、引数としてＡ−｛Ｉ｝、及び配列Ｐ［i］を渡して実行し、ステップ２６０６に進む。ステップ２６０６では繰り返し処理が終わっていればステップ２６０７に進み、終わっていなければステップ２６０３に戻る。ステップ２６０７は終了状態である。
【０１５３】
図２７は、図２１の競合検出ステップ２１０６のフローチャート２７００である。競合検出のステップは、引数として、フローエントリＥを取る。まず、開始状態２７０１から始まり、ステップ２７０２に進む。ステップ２７０２では、フローエントリＥのアクションがoutputか確認し、Ｙｅｓの場合はステップ２７０３に、Ｎｏの場合はステップ２７０４に進む。
【０１５４】
ステップ２７０３では、後述するループ検出のフローチャート２８００を実行し、ステップ２７０８に進む。ステップ２７０４からステップ２７０７は、フローエントリＥが設定される通信装置に既に設定されているフローエントリに対する繰り返し処理（変数Ｆに格納）である。フローエントリＥの設定先は、フローエントリEのIDプロパティをもとにネットワーク設定データ４００を検索し取得する。設定先に既に設定されているフローエントリは、設定済みネットワークモデル１０８から取得する。
【０１５５】
ステップ２７０５では、引数としてＥとＦを指定してマッチ条件の包含関係を決定するフローチャート１５００を実行し、ステップ２７０６に進む。ステップ２７０６では、ステップ２７０５の結果が排他関係かを確認し、Ｙｅｓの場合はステップ２７０７に進み、Ｎｏの場合はステップ２７０９に進む。ステップ２７０７では、繰り返し処理が終わっていればステップ２７１０に進み、終わっていなければステップ２７０４に戻る。
【０１５６】
ステップ２７０８では、ステップ２７０３のループ検出結果を呼び出し元に返し終了する。ステップ２７０９では競合を検出したＥｒｒｏｒを呼び出し元に返し終了する。ステップ２７１０では、競合未検出のＮｏを呼び出し元に返し終了する。
【０１５７】
図２８は、図２７のループ検出ステップ２７０３のフローチャート２８００である。ループ検出のステップは再帰的な処理であり、引数として、フローエントリＲ、フローエントリＥを取る。まず、開始状態２８０１から始まり、ステップ２８０２に進む。ステップ２８０２からステップ２８１２は、フローエントリＥのアクションoutputの出力先に対する繰り返し処理（変数Ｐに格納）である。出力先がNormalの場合、フローエントリＥのIDをもとに、ネットワーク設定データから設定先装置を特定し、設定済みネットワークモデル１０８から該当装置に設定されている同一ＶＬＡＮに属する出力ポートを得る。
【０１５８】
ステップ２８０３では、ネットワーク構成データ５００から変数Ｐが接続されている装置Ｘを特定し、ステップ２８０４に進む。ステップ２８０４からステップ２８１１は、装置Ｘに設定されてフローエントリに対する繰り返し処理（変数ｅ）である。装置Ｘに設定されているフローエントリは、設定済みネットワークモデル１０８から取得する。ステップ２８０５は、フローエントリＥとフローエントリｅが同一か確認し、Ｙｅｓの場合はステップ２８１４に、Ｎｏの場合はステップ２８０６に進む。
【０１５９】
ステップ２８０６では、引数としてＥとｅを指定してマッチ条件の包含関係を決定するフローチャート１５００を実行し、ステップ２８０７に進む。ステップ２８０７ではステップ２８０６の結果が排他関係か確認し、Ｙｅｓの場合はステップ２８０８に、Ｎｏの場合はステップ２８１１に進む。
【０１６０】
ステップ２８０８では、フローエントリｅのアクションにoutputが含まれるかを確認し、Ｙｅｓの場合はステップ２８０９に進み、Ｎｏの場合はステップ２８１１に進む。ステップ２８０９では、引数にフローエントリＲとフローエントリｅを指定して再びループ検出のステップを実行し、ステップ２８１１に進む。
【０１６１】
ステップ２８１１では、繰り返し処理が終わっていればステップ２８１２に進み、終わっていなければステップ２８０４に戻る。ステップ２８１２では、繰り返し処理が終わっていればステップ２８１３に進み、終わっていなければステップ２８０２に戻る。
【０１６２】
ステップ２８１３では、呼び出し元にＮｏを返し終了する。ステップ２８１４では、呼び出し元にＹｅｓを返し終了する。
【０１６３】
図２１〜図２８で説明したように、ネットワーク設定手順生成部は、生成された新規ネットワーク設定の設定手順のうち、入力装置から入力され、あるいは記憶装置に記憶されている設定済みのネットワーク設定データと、競合を生じない設定手順を選択する。
【０１６４】
具体的には、フローチャート２１００において、設定手順の候補から既存設定との競合を確認した設定手順を選択することによりネットワーク設定変更中のループ回避が可能になり、また既存の設定に影響を与える矛盾した設定内容を検出することが可能になり、信頼性の高いネットワーク構成変更が実現できる。
【０１６５】
図２９は、図６の設定先依存設定手順決定ステップ６０６のフローチャート２９００である。ここでは、ネットワーク設定データ４００に記載された設定記憶部１２６の情報をもとに、異なる設定記憶部１２６に同時に設定できる設定手順を作成する。まず、開始状態２９０１から始まり、ステップ２９０２に進む。
【０１６６】
ステップ２９０２からステップ２９０４は、装置設定隣接リスト９００のグラフノードに対する繰り返し処理（変数Ｉに格納）である。
【０１６７】
ステップ２９０３では、後述する装置内設定先依存設定手順決定のフローチャート３０００を実行し、ステップ２９０４に進む。
【０１６８】
ステップ２９０４では、繰り返し処理が終わっていればステップ２９０５に進み、終わっていなければステップ２９０２に戻る。
【０１６９】
ステップ２９０５では、装置設定隣接リスト９００と、後述するフローチャート２９００により生成されたフローエントリ隣接リストをネットワーク設定グラフとしてまとめ、ネットワーク設定データ４００とともに、ネットワーク設定実行キュー１０４に保存し、ステップ２９０６に進む。ステップ２９０６は終了状態である。
【０１７０】
図３０は、図２９の設定先に依存した装置内における設定手順を決定するステップ２９０３のフローチャート３０００である。ステップ２９０３は、再帰的な処理であり、引数として通信装置Ａを取る。まず、開始状態３００１から始まり、ステップ３００２に進む。
【０１７１】
ステップ３００２では、ネットワーク設定データ４００から、装置Ａのフローエントリ隣接リストのグラフノードすべての設定先を取得し、ステップ３００３に進む。ステップ３００３では、ステップ３００２で取得したフローエントリ隣接グラフノードの設定先をもとに、グラフノードの順番を同じ設定先（格納先）が連続しないように並び替え、ステップ３００４に進む。
【０１７２】
ステップ３００４からステップ３０１０は通信装置Ａのフローエントリ隣接リストのグラフノードに対する繰り返し処理（変数Ｅに格納）である。
【０１７３】
ステップ３００５では、変数Ｅの隣接グラフノードが複数あるか確認し、Ｙｅｓの場合はステップ３００６に、Ｎｏの場合はステップ３００７に進む。
【０１７４】
ステップ３００６では、ステップ３００２で取得した変数Ｅの隣接グラフノードの設定先をもとに、隣接グラフノードの順番を同じ設定先（格納先）が連続しないように並び替え、ステップ３００７に進む。
【０１７５】
ステップ３００７からステップ３００９は、変数Ｅに含まれるoutputアクションの出力先通信装置に対する繰り返し処理（変数Ｉに格納）である。outputアクションの出力先通信装置は、ネットワーク構成データ５００から取得する。ステップ３００８では、引数に変数Ｉを指定して、装置内設定先依存設定手順決定のフローチャート３０００を実行し、ステップ３００９に進む。ステップ３００９では繰り返し処理が終了していればステップ３０１０に進み、終了していなければステップ３００７に戻る。ステップ３０１０では、繰り返し処理が終了していればステップ３０１１に進み、終了していなければステップ３００４に戻る。ステップ３０１１は終了状態である。
【０１７６】
図３１は、図６の装置内設定先依存設定手順決定ステップ６０６のフローチャート３０００実行後の、通信装置Ｘ１２０（１）のフローエントリ隣接リストの例である。
【０１７７】
このように、装置内設定先依存設定手順決定のフローチャート３０００に基づいて、設定先の影響を考慮した設定手順を生成することにより、設定実行の衝突を回避することができ、設定実行時間の短縮が実現される。
【０１７８】
図３２は、図６のシーケンス番号付与ステップ６０７のフローチャート３２００である。まず、開始状態３２０１から始まり、ステップ３２０２に進む。ステップ３２０２からステップ３２０７は、装置設定リスト９００のグラフノードに対する繰り返し処理（変数Ｉに格納）である。ステップ３２０３からステップ３２０６は、変数Ｉのフローエントリ隣接リストのグラフノードのうち、先頭手順のグラフノードに対する繰り返し処理（変数Ｅに格納）である。ステップ３２０４は、後述する装置内シーケンス番号を付与するフローチャート３３００を実行し、ステップ３２０５に進む。
【０１７９】
ステップ３２０５では、変数Ｉのうち最終手順のグラフノードの次にバリア命令を追加し、ステップ３２０６に進む。ステップ３２０６では繰り返し処理が終わっていればステップ３２０７に進み、終わっていなければステップ３２０３に戻る。ステップ３２０７では繰り返し処理が終わっていればステップ３２０８に進み、終わっていなければステップ３２０２に戻る。ステップ３２０８は終了状態である。
【０１８０】
図３３は、図３２の装置内シーケンス番号を付与するステップ３２０４のフローチャート３３００である。装置内シーケンス番号の付与は再帰的な処理であり、引数にフローエントリＥとシーケンス番号ｎを取る。まず、開始状態３３０１から始まり、ステップ３３０２に進む。
【０１８１】
ステップ３３０２ではフローエントリＥにシーケンス番号ｎを付与し、ステップ３３０３に進む。ステップ３３０３からステップ３３０５はフローエントリＥの隣接グラフノードに対する繰り返し処理（変数Ｉに格納）である。ステップ３３０４は、引数に変数Ｉ及びｎ＋１を指定し、再び装置内シーケンス番号の付与のフローチャートを実行する。
【０１８２】
ステップ３３０５では、繰り返し処理が終わっていればステップ３３０６に進み、終わっていなければステップ３３０３に戻る。ステップ３３０６は終了状態である。
【０１８３】
図３２〜図３３で説明したように、本実施例では、生成された設定手順に設定順序を表すシーケンス番号を付与する。また、通信装置単位で、設定完了の応答を要求する命令を追加する。
【０１８４】
このように、通信装置１２０ごとフローエントリにシーケンス番号を付与することで、通信装置１２０内で同じシーケンス番号を持っている設定を並列に実行できることが識別できるので並列実行により、設定実行時間の短縮化につながる。
【０１８５】
また、通信装置１２０はシーケンス番号に基づいて独立して正しい設定手順で設定実行が可能になるため、制御装置１００が逐次フローエントリの設定実行が終了したか確認する必要がなくなり、設定完了確認に要する時間を削減できる。例えば、ネットワーク設定データ４００の通信装置Ｘ１２０（１）には４つのフローエントリがあるため、仮に、コンフィギュレーションネットワークが高遅延なＷＡＮ、例えば１００ｍｓの遅延を持つネットワーク場合、従来技術では、設定完了確認に、１００ｍｓ×２（往復）×４＝８００ｍｓ必要とするのに対して、本実施形態では、１００ｍｓ×２（往復）＝２００ｍｓで済み、設定実行時間の短縮を図ることができる。
【０１８６】
図３４は、制御装置１００における図６の設定実行ステップ６０８のフローチャートである。まず、開始状態３４０１から始まり、ステップ３４０２に進む。
【０１８７】
ステップ３４０２では、ネットワーク設定実行部１０５が、ネットワーク設定実行キュー１０４からネットワーク設定グラフＧとネットワーク設定データＣを読み出し、ステップ３４０３に進む。
【０１８８】
ステップ３４０３では、ネットワーク設定実行部１０５が、装置設定の並列実行を行い、ステップ３４０４に進む。ステップ３４０４は終了状態である。
【０１８９】
図３５は、ネットワーク設定実行部１０５における、図６の装置設定の並列実行ステップ６０９のフローチャート３５００である。装置設定の並列実行は再帰的な処理であり、引数として装置設定隣接リスト(図９参照)のグラフノードを取る。まず、開始状態３５０１から始まり、ステップ３５０２に進む。
ステップ３５０２では、ネットワーク設定実行部１０５が、装置設定隣接リストのグラフノードのうち、互いに隣接していないグラフノードＡｎ（ｎは自然数で、最大は互いに隣接していないグラフノードの数）を引数に、後述する装置設定の実行のフローチャート３６００(図３６参照)を実行し、ステップ３５０３に進む。
【０１９０】
ステップ３５０３は、並列に実行したステップ３５０２それぞれ独立に実行される。ステップ３５０３では、ネットワーク設定実行部１０５が、Ａｎの隣接ノードすべてを引数に、再び装置設定の並列実行を呼び出し、ステップ３５０４に進む。ステップ３５０４は終了状態である。
【０１９１】
図３６は、図３５の装置設定の実行ステップ３５０２のフローチャート３６００で、引数として装置Ａを取る。まず、開始状態３６０１から始まり、ステップ３６０２に進む。ステップ３６０２では、ネットワーク設定実行部１０５が、後述するフローエントリ設定の並列実行３７００を行いステップ３６０３に進む。ステップ３６０３は終了状態である。
【０１９２】
図３７は、図３６のフローエントリ設定の並列実行ステップ３６０２のフローチャート３７００である。フローエントリ設定の並列実行は再帰的処理であり、引数にフローエントリ隣接リストのグラフノードを取る。まず、開始状態３７０１から始まり、ステップ３７０２に進む。
【０１９３】
ステップ３７０２は、互いに隣接していないフローエントリのグラフノードＡｎ（ｎは自然数で、最大は互いに隣接していないグラフノードの数）分、並列に実行される。
【０１９４】
ステップ３７０２では、ネットワーク設定実行部１０５が、ネットワーク設定データＣからＡｎに対応する設定データＸｎを取得し、ステップ３７０３に進む。
【０１９５】
ステップ３７０３では、ネットワーク設定実行部１０５が、設定データＸｎを対象の通信装置１２０に送信し、ステップ３７０４に進む。
【０１９６】
ステップ３７０４では、ネットワーク設定実行部１０５が、Ａｎに送信済みフラグを設定し、ステップ３７０５に進む。
【０１９７】
ステップ３７０５では、Ｘｎがバリア命令か確認し、Ｙｅｓの場合はステップ３７０６に進み、Ｎｏの場合はステップ３７０７に進む。
【０１９８】
ステップ３７０６では、バリア命令を送信した通信装置１２０からバリア応答が戻ってくるのを待ち、戻ってきたらステップ３７０７に進む。
【０１９９】
ステップ３７０７では、Ａｎの隣接ノードで送信済みフラグが設定されていないグラフノードを引数に、フローエントリ設定の並列実行を呼び出し、ステップ３７０８に進む。ステップ３７０８は終了状態である。
【０２００】
以上の実施例では、ネットワーク設定データに含まれる設定の、通信装置の保存先を検出する。そして、新規ネットワーク設定に含まれる複数の設定が同時に通信装置に設定できるように設定手順を生成する。このために、ネットワーク設定実行部１０５がネットワーク設定グラフに基づき設定を実行する。これにより、装置単位及び装置内のフローエントリ単位で、ネットワークに障害を起こさない手順で設定を並列実行できるため、安全に制御装置の設定実行時間の短縮を図れる。また、本実施例のネットワーク設定実行部は、生成された設定手順に従い、通信装置に設定を実行し、設定完了の応答を要求する命令を送信した場合は応答を待つように構成することができる。
【０２０１】
図３８は、通信装置１２０における、図６の設定処理ステップ６０９の一部である、設定要求受信のフローチャート３８００である。まず、開始状態３８０１から始まり、ステップ３８０２に進む。
【０２０２】
ステップ３８０２では、設定実行部１２２が、制御装置１００からの設定要求を受信し、ステップ３８０３に進む。
【０２０３】
ステップ３８０３では、設定実行部１２２が設定キュー１２３に、設定要求を格納し、ステップ３８０４に進む。ステップ３８０４は終了状態である。
【０２０４】
図３９は、通信装置１２０における、図６の設定処理ステップ６０９の一部である、設定実行のフローチャート３９００である。まず、開始状態３９０１から始まり、ステップ３９０２に進む。
【０２０５】
ステップ３９０２では、ｎ個ある（ｎは自然数）設定実行部（図１の１２２）の設定実行４０００が並列に実行され、ステップ３９０３に進む。ステップ３９０３は終了状態である。
【０２０６】
図４０は、図６の設定処理ステップ６０９の一部である、設定実行部１２２における設定実行のフローチャートである。まず、開始状態４００１から始まり、ステップ４００２に進む。
【０２０７】
ステップ４００２では、設定実行部１２２が、実行シーケンス番号ｎを１に初期化し、ステップ４００３に進む。
【０２０８】
ステップ４００３では、設定実行部１２２が、設定キューからシーケンス番号ｎの設定を取得し、ステップ４００４に進む。
【０２０９】
ステップ４００４では、設定実行部１２２が、受信した設定を設定記憶部に保存し、ステップ４００５に進む。
【０２１０】
ステップ４００５では、設定実行部１２２が、実行シーケンス番号ｎに１を加え、ステップ４００６に進む。
【０２１１】
ステップ４００６では、設定実行部１２２が、設定キューが空か確認し、Ｙｅｓの場合は、ステップ４００７に進み、Ｎｏの場合はステップ４００３に進む。ステップ４００７は終了状態である。
【０２１２】
図４１は、本発明の実施形態における、ネットワーク構成変更のタイムラインを示している。
【０２１３】
図４１のネットワーク設計開始時刻４１１０は、オペレータが要求仕様に基づきネットワークを構成する装置それぞれの設定内容を検討し、ネットワーク設定データ３００、およびネットワーク構成データ５００の作成に着手(図６のステップ６０２)した時刻である。オペレータは設計作業を終えると、ネットワーク設定データ３００をネットワーク設定キュー１０１に、ネットワーク構成データ５００をネットワーク構成ＤＢ１０２に格納する。
【０２１４】
設定手順生成開始時刻４１２０は、ネットワーク設定手順生成部１０３がネットワーク設定キュー１０１からネットワーク設定データ３００を読み出し、図６のステップ６０３を開始した時刻である。
【０２１５】
ネットワーク設計終了時刻４１３０は、ネットワーク設定手順生成部１０３により生成されたネットワーク設定グラフとネットワーク設定データが、ネットワーク設定実行キュー１０４に格納された時刻である。
【０２１６】
以上でネットワークの設定準備４１３１が終わり、システムは予定されたネットワーク構成変更開始時刻４１４０まで待機する。ネットワークの設定準備４１３１の間は、ネットワークは運用可能である。
【０２１７】
ネットワーク構成変更開始時刻４１４０は、ネットワーク設定データに記載された設定開始時刻であり、ネットワーク設定実行部１０５が、図３４のフローチャート３４００に示す設定を開始した時刻である。
【０２１８】
ネットワーク検証開始時刻４１５０は、フローチャート３４００に示す設定が終わった後、ネットワークが正しく設定されたか検証を開始する時刻である。サービスイン４１６０は、検証後実際にネットワークの運用を開始できる時刻である。
【０２１９】
本発明は、ネットワーク設計時に設定手順を生成し、図４１の設定実行時間４１７０を短縮することで、高速なネットワーク構成変更を可能とする。設定実行時間は、構成中のネットワークが利用できない時間であり、設定実行時間４１７０を短縮することで、ネットワーク資源の利用効率を向上させることができる。
【実施例２】
【０２２０】
本実施例は、実施例１における制御装置の設定実行時間を短縮するものである。図１を参照し、実施例１から変更がある構成についてのみ、以下に示す。
【０２２１】
図４２は、実施例２におけるネットワーク設定システムの構成例を示すブロック図である。本実施例では、制御装置１００を複数備える。本実施例では、複数の制御装置１００は、互いに通信できるようにコンフィギュレーションネットワーク１１０に接続しているが、互いに通信できれば、コンフィギュレーションネットワーク１１０以外のネットワークを追加して接続してもよい。
【０２２２】
図４３は、変更後の制御装置における設定実行のフローチャート４３００である。ステップ３４０１からステップ３４０２(図３４参照)は、実施例１と同様である。
【０２２３】
ステップ４３０１では、ネットワーク設定実行部１０５が、読み出したネットワーク設定グラフに分割済み設定フラグが設定されているか確認し、Ｙｅｓの場合はステップ４３０５に、Ｎｏの場合はステップ４３０２に進む。
【０２２４】
ステップ４３０２では、ネットワーク設定実行部１０５がネットワーク設定グラフＧを分割しステップ４３０３に進む。本実施例では、装置設定リストのルートノード、すなわち、ネットワークの最下流に位置する通信装置の集合を制御装置数で分割している。制御装置数で割り切れない場合は余りを任意の制御装置に割り当ててもよい。分割は、均等分割の他、制御装置の負荷や、制御装置が管理する通信装置の数に基づいてもよい。
【０２２５】
ステップ４３０３では、ネットワーク設定実行部１０５が、分割されたネットワーク設定グラフＧ［ｉ］（ｉは添え字）それぞれに、分割済みのフラグを設定し、ステップ４３０４に進む。
【０２２６】
ステップ４３０４では、自身を含む制御装置のネットワーク設定実行キューに分割したネットワーク設定グラフＧ［ｉ］を格納し、ステップ４３０５に進む。
【０２２７】
ステップ４３０５では、分割後のネットワーク設定グラフＧを引数に指定して、装置設定の並列実行ステップを実行し、ステップ４３０６に進む。ステップ４３０６は終了状態である。
【０２２８】
このように変更することにより、ネットワーク設定を複数の制御装置１００で並列に実行可能になり、制御装置の負荷が下がるため、設定実行時間の短縮が図れる。
【０２２９】
本実施例中、ソフトウエアで構成した機能と同等の機能は、FPGA（Field Programmable Gate Array）、ASIC（Application Specific Integrated Circuit）などのハードウエアでも実現できる。そのような態様も本願発明の範囲に含まれる。
【０２３０】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【０２３１】
１０２…ネットワーク構成データ、１０３…ネットワーク設定手順生成部、１０５…ネットワーク設定実行部、１０８…設定済みネットワークモデル、１１０…コンフィギュレーションネットワーク、１２０…通信装置、１２２…設定実行部、１２３…設定キュー、１２６…設定記憶部、３００…ネットワーク設定データ、６０３…装置単位の設定手順決定ステップ、６０４…装置内の設定手順決定ステップ、６０５…既存設定との競合回避ステップ、６０６…装置内設定先依存設定手順決定ステップ、６０７…シーケンス番号付与ステップ、６０８…制御装置における設定処理ステップ、６０９…通信装置における設定処理ステップ。
【図１】
2016015672.tif 000003
【図２】
2016015672.tif 000004
【図３】
2016015672.tif 000005
【図４Ａ】
2016015672.tif 000006
【図４Ｂ】
2016015672.tif 000007
【図５Ａ】
2016015672.tif 000008
【図５Ｂ】
2016015672.tif 000009
【図６】
2016015672.tif 000010
【図７】
2016015672.tif 000011
【図８】
2016015672.tif 000012
【図９】
2016015672.tif 000013
【図１０】
2016015672.tif 000014
【図１１】
2016015672.tif 000015
【図１２】
2016015672.tif 000016
【図１３】
2016015672.tif 000017
【図１４】
2016015672.tif 000018
【図１５】
2016015672.tif 000019
【図１６】
2016015672.tif 000020
【図１７】
2016015672.tif 000021
【図１８】
2016015672.tif 000022
【図１９】
2016015672.tif 000023
【図２０】
2016015672.tif 000024
【図２１】
2016015672.tif 000025
【図２２】
2016015672.tif 000026
【図２３】
2016015672.tif 000027
【図２４】
2016015672.tif 000028
【図２５】
2016015672.tif 000029
【図２６】
2016015672.tif 000030
【図２７】
2016015672.tif 000031
【図２８】
2016015672.tif 000032
【図２９】
2016015672.tif 000033
【図３０】
2016015672.tif 000034
【図３１】
2016015672.tif 000035
【図３２】
2016015672.tif 000036
【図３３】
2016015672.tif 000037
【図３４】
2016015672.tif 000038
【図３５】
2016015672.tif 000039
【図３６】
2016015672.tif 000040
【図３７】
2016015672.tif 000041
【図３８】
2016015672.tif 000042
【図３９】
2016015672.tif 000043
【図４０】
2016015672.tif 000044
【図４１】
2016015672.tif 000045
【図４２】
2016015672.tif 000046
【図４３】
2016015672.tif 000047