(57)【要約】【課題】ネットワーク内の装置の増減に対応してパケット転送のプログラムを簡単に再プログラミングできること。【解決手段】ＩｏＴのネットワーク１００内のＯｐｅｎＦｌｏｗスイッチ１２０は、転送するパケットのうち、疑義のあるパケットをパケット解析装置１４０に振り分ける。ＯｐｅｎＦｌｏｗコントローラ１２５は、パケット転送ルールを有するＯｐｅｎＦｌｏｗスイッチ１２０制御用のＯｐｅｎＦｌｏｗのプログラムを作成し、ＯｐｅｎＦｌｏｗスイッチ１２０に接続される端末１３０の増減時に、端末１３０の接続に関する情報を取得し、端末１３０の接続に関する情報に基づき、ＯｐｅｎＦｌｏｗのプログラムを再プログラミングする。【選択図】図１
2019140515.tif 000002
【特許請求の範囲】
【請求項１】
所定のネットワーク内のスイッチが転送するパケットのうち、疑義のあるパケットを解析装置に振り分けるパケット転送ルールを有するスイッチ制御用のプログラムを作成する制御部を有し、
前記制御部は、前記スイッチに接続される装置の増減時に、前記装置の接続に関する情報を取得し、当該装置の接続に関する情報に基づき、前記プログラムを再プログラミングすることを特徴とするプログラム作成装置。
【請求項２】
前記制御部は、
前記スイッチに接続された前記装置毎の種別および接続に関する第１情報と、
前記装置毎のパケットの通信に関する第２情報と、を更新可能に保持し、
前記装置のうち、前記スイッチに接続される装置が前記ネットワーク内で特定の装置とのみ通信する端末の増減時、当該端末の接続に関する情報を取得し、取得した当該端末の接続に関する情報に基づき、前記第１情報及び前記第２情報を更新し、前記プログラムを再プログラミングすることを特徴とする請求項１に記載のプログラム作成装置。
【請求項３】
前記制御部は、
前記作成したプログラム、および前記再プログラミングしたプログラムを、前記スイッチの動作を制御するコントローラに転送することを特徴とする請求項１または２に記載のプログラム作成装置。
【請求項４】
前記制御部は、
前記第１情報として、前記ネットワークに接続している前記装置毎の種別と、ネットワークアドレスと、スイッチのポートと、の対応表を更新可能に保持し、
前記第２情報として、前記装置毎の種別と、送信するパケットの着装置と、通信のプロトコルと、スイッチのポートと、の対応表を更新可能に保持し、
予め設定された、特定の装置の種別と、スイッチのポートに関する情報と、前記装置毎の通信時にパケットを発着する装置、通信のプロトコル、ポート、の情報と、に基づき、
前記装置のうち、前記スイッチに接続される装置が前記ネットワーク内で特定の装置とのみ通信する端末の増減であるかを判断し、当該端末の増減時には、当該端末の接続に関する情報を取得し、取得した当該端末の接続に関する情報に基づき、前記第１情報及び前記第２情報を更新し、前記プログラムを再プログラミングすることを特徴とする請求項２または３に記載のプログラム作成装置。
【請求項５】
前記制御部は、
ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）により、前記端末の接続に関する情報として、前記スイッチから当該スイッチのポート毎に接続された前記装置のアドレスを取得することを特徴とする請求項４に記載のプログラム作成装置。
【請求項６】
前記制御部は、
ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）により、前記端末の接続に関する情報として、前記スイッチのポート毎に接続された前記装置のアドレスと、論理インタフェース番号と、を取得し、当該論理インタフェース番号を前記スイッチの物理ポート番号に変換することを特徴とする請求項４に記載のプログラム作成装置。
【請求項７】
前記制御部は、
前記第１情報および前記第２情報に基づき、前記装置毎のパケットの発着の装置、プロトコル、ポート、パケット転送先に関する配送ルール表を更新可能に保持し、
前記配送ルール表と、前記第１情報の情報に基づき、前記スイッチを動作制御する前記プログラムの作成及び再プログラミングを行うことを特徴とする請求項１〜６のいずれか一つに記載のプログラム作成装置。
【請求項８】
所定のネットワーク内のスイッチに接続される装置の接続に関する情報を取得し、
前記装置の接続に関する情報に基づき、前記スイッチが転送するパケットのうち、疑義のあるパケットを解析装置に振り分けるパケット転送ルールを有するスイッチ制御用のプログラムを作成し、
前記装置の増減時に、前記装置の接続に関する情報を取得し、当該装置の接続に関する情報に基づき、前記プログラムを再プログラミングする、
処理をコンピュータが実行することを特徴とするプログラム作成方法。
【請求項９】
前記装置のうち、前記スイッチに接続される装置が前記ネットワーク内で特定の装置とのみ通信する端末の増減の検出時、
前記端末の接続に関する情報を取得し、取得した当該端末の接続に関する情報に基づき、前記スイッチに接続された前記装置毎の種別および接続に関する第１情報、および前記装置毎のパケットの通信に関する第２情報を更新し、
更新した前記第１情報及び前記第２情報に基づき、前記プログラムを再プログラミングすることを特徴とする請求項８に記載のプログラム作成方法。
【請求項１０】
前記端末の増減の検出時、前記第１情報及び前記第２情報に基づき、前記装置毎のパケットの発着の装置、プロトコル、ポート、パケット転送先に関する配送ルール表を更新保持し、
前記配送ルール表と、前記第１情報の情報に基づき、前記スイッチを動作制御する前記プログラムを再プログラミングすることを特徴とする請求項９に記載のプログラム作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続された機器のセキュリティ対策のプログラムを作成するプログラム作成装置およびプログラム作成方法に関する。
【背景技術】
【０００２】
近年、注目されているＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）では、ネットワークに接続する端末のセキュリティ対策の重要性が増している。一般的なＩＴ（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）のセキュリティでは、ＰＣ等の端末のセキュリティレベルを向上させることで一定のセキュリティレベルを達成する技術開発が進められている。
【０００３】
現在のＩＴのネットワークでは、ファイアウォールで全パケットを検査し、挙動を監視することが行われていることが多いが、同じ方法をＩｏＴの端末のネットワークに採用すると、パケット解析用のサーバの負荷や、解析用サーバまでの経路上のＬＡＮ機器のトラフィック量が非常に高いものとなり、システムの規模がパケット解析のために抑制されてしまう。
【０００４】
このような問題を改善するため、ＩＴにおけるファイアウォールで、ＯｐｅｎＦｌｏｗのＬＡＮ機器（スイッチ）を利用する方法が提唱されている。この方法をＩｏＴのネットワークに採用することで、ウィルス感染等により端末に本来許可されていない相手と通信しようとしているパケットや、端末が通常利用しないはずのプロトコルが発信された場合のみ、パケットをパケット解析装置に転送する。正常なパケットは、端末とゲートウェイ（ＧＷ）間で交換する。このようなＯｐｅｎＦｌｏｗスイッチの設定を、ＯｐｅｎＦｌｏｗのコントローラのプログラムとして作成することで、解析対象のパケット量を大幅に削減することが可能となる。
【０００５】
従来技術として、キャリアの付加サービスへの加入状態に応じて携帯電話のルーティングを変更する技術がある（例えば、下記特許文献１参照。）。また、テレメータリングシステムの親機からツリー状の子機の間のネットワークのホップ数により経路設定を行う技術がある（例えば、下記特許文献２参照。）。また、無線検針システムで経路障害や新規の端末参加時に端末からデータ収集ユニットまでの経路を設定する技術がある（例えば、下記特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−３４１１６号公報
【特許文献２】特開２０１４−１２３８２９号公報
【特許文献３】特開２０００−２０７６７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＩｏＴの環境では、端末の追加や削除の都度、ＯｐｅｎＦｌｏｗコントローラの再プログラミングが必要となるが、従来の技術では、検査対象のパケットを振り分けるＯｐｅｎＦｌｏｗのスイッチのコントローラに搭載するプログラムの再プログラミングを簡単に行うことができなかった。
【０００８】
ＯｐｅｎＦｌｏｗスイッチにパケットの処理方法を指示するコントローラのプログラムは、どの端末がどの端末とどのような種類のプロトコルで通信するか等をレイヤ２（Ｌ２）、レイヤ３（Ｌ３）のＭＡＣ，ＩＰ等の知識を元にルール化する。そして、ルールに基づきプログラムを作成する。このため、プログラムの作成には高度な専門知識を必要とする。ＭＡＣはＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ、ＩＰはＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌの略である。
【０００９】
一般的なＩＴのファイアウォールでは、頻繁に端末の追加や削除がなく、端末の種類や利用されるアプリケーションプロトコルも限定されるため、導入時に専門の管理者がプログラムを作成し、端末の追加・削除の度に管理者がプログラムを修正して運用している。これに対してＩｏＴでは、端末の追加・削除がＩＴのファイアウォールと比較して高頻度で行われる。そして、ＩｏＴの現場には、管理者が常駐することは非常に稀であり、ＩｏＴの端末の追加・削除毎に管理者が再プログラミングを行うと、手間およびコストがかかる。この際、例えば、ＧＷと端末間上で発生する通信のプロトコルや複数の装置それぞれのポートの物理的な調査等を人手で行い、端末からＧＷ間に対するパケットの転送設定を再プログラミングする必要があるため、専門知識を有した管理者が行っている。このため、端末の増減毎に、専門知識を有する管理者がＯｐｅｎＦｌｏｗスイッチのコントローラの再プログラミングを行う必要が生じる。ＩｏＴの導入が急がれている製造業等においては、端末の増減ごとに手間およびコストが嵩むこととなり、大きな問題となっている。
【００１０】
一つの側面では、本発明は、ネットワーク内の装置の増減に対応してパケット転送のプログラムを簡単に再プログラミングできることを目的とする。
【課題を解決するための手段】
【００１１】
一つの案では、プログラム作成装置は、所定のネットワーク内のスイッチが転送するパケットのうち、疑義のあるパケットを解析装置に振り分けるパケット転送ルールを有するスイッチ制御用のプログラムを作成する制御部を有し、前記制御部は、前記スイッチに接続される装置の増減時に、前記装置の接続に関する情報を取得し、当該装置の接続に関する情報に基づき、前記プログラムを再プログラミングすることを要件とする。
【発明の効果】
【００１２】
一つの実施形態によれば、ネットワーク内の装置の増減に対応してパケット転送のプログラムを簡単に再プログラミングできるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施の形態にかかるネットワークシステムの全体構成を示す図である。
【図２】図２は、既存技術によるセキュリティ対策のネットワーク構成例１を示す図である。
【図３】図３は、既存技術によるセキュリティ対策のネットワーク構成例２を示す図である。
【図４】図４は、既存技術によるパケット解析の課題を示す図である。
【図５】図５は、実施の形態にかかるＯｐｅｎＦｌｏｗの仕組みを説明する図である。
【図６】図６は、実施の形態にかかるＯｐｅｎＦｌｏｗのプログラム生成に用いる管理表の例を示す図である。
【図７】図７は、実施の形態にかかるＯｐｅｎＦｌｏｗのプログラムに対応した管理表を説明する図である。
【図８】図８は、実施の形態にかかるプログラム作成装置が行うスイッチ接続関係定義表の生成処理を説明する図である。
【図９】図９は、実施の形態にかかるプログラム作成装置の機能ブロック図である。
【図１０】図１０は、実施の形態にかかるプログラム作成装置のハードウェア構成例を示す図である。
【図１１】図１１は、実施の形態のプログラム作成装置が行うプログラム作成処理例のフローチャートである。
【図１２】図１２は、実施の形態にかかるプログラム作成装置が作成する接続情報を示す図表である。
【図１３】図１３は、実施の形態にかかるプログラム作成装置が作成するサーバ接続定義表を示す図表である。
【図１４】図１４は、実施の形態にかかるプログラム作成装置が作成するスイッチ接続関係定義表を示す図表である。
【図１５】図１５は、実施の形態にかかるプログラム作成装置が作成するサーバ通信定義表を示す図表である。
【図１６】図１６は、実施の形態にかかるプログラム作成装置が作成する端末通信定義表を示す図表である。
【図１７】図１７は、実施の形態にかかるプログラム作成装置が作成する通信定義表を示す図表である。
【図１８】図１８は、実施の形態にかかるプログラム作成装置が作成する配送ルール定義表を示す図表である。
【図１９】図１９は、実施の形態にかかるプログラム作成装置が行うプログラム作成を説明するフローチャートである。
【図２０】図２０は、実施の形態にかかる端末追加前のシステム状態を示す図である。
【図２１】図２１は、実施の形態にかかる端末追加前のプログラム例を示す図である。
【図２２】図２２は、実施の形態にかかる端末追加時のシステム状態を示す図である。
【図２３】図２３は、実施の形態にかかる端末追加時のＯｐｅｎＦｌｏｗスイッチの接続状態を示す図表である。
【図２４】図２４は、実施の形態にかかるプログラム作成装置による端末増加時のスイッチ接続関係定義表の更新処理を説明する図表である。
【図２５】図２５は、実施の形態にかかるプログラム作成装置による端末増加時の通信定義表の更新処理を説明する図表である。
【図２６】図２６は、実施の形態にかかるプログラム作成装置による端末増加時の配送ルール定義表の更新処理を説明する図表である。
【図２７】図２７は、実施の形態にかかるプログラム作成装置による端末増加時のプログラム例を示す図である。
【図２８】図２８は、実施の形態にかかるプログラム作成装置がＳＮＭＰにより収集する情報を示す図表である。
【図２９】図２９は、実施の形態にかかるプログラム作成装置がＳＮＭＰにより接続情報を生成する処理例を示すフローチャートである。
【図３０】図３０は、実施の形態にかかるプログラム作成装置がＳＮＭＰにより接続情報を生成するまでの各段階の情報を説明する図表である。
【図３１】図３１は、ＬＬＤＰの基本的な動作を説明する図である。
【図３２】図３２は、実施の形態にかかるプログラム作成装置のＬＬＤＰによる接続に関する情報収集時のシステム構成例を示す図である。
【図３３】図３３は、実施の形態にかかるプログラム作成装置がＬＬＤＰにより接続情報を生成する処理例を示すフローチャートである。
【図３４】図３４は、実施の形態にかかるプログラム作成装置がＬＬＤＰにより接続情報を生成するまでの各段階の情報を説明する図表である。
【発明を実施するための形態】
【００１４】
（実施の形態）
図１は、実施の形態にかかるネットワークシステムの全体構成を示す図である。実施の形態のネットワークシステム１００は、例えば、ＩｏＴネットワークに適用される。このネットワークシステム１００は、ゲートウェイ（ＧＷ）１１０、スイッチ（ＯｐｅｎＦｌｏｗスイッチ）１２０、スイッチ１２０のコントローラ（ＯｐｅｎＦｌｏｗコントローラ）１２５、複数台のＩｏＴの端末１３０、パケット解析装置１４０を含む。
【００１５】
外部ネットワークは、ある組織内のゲートウェイ（ＧＷ）１１０を介して、ＯｐｅｎＦｌｏｗスイッチ１２０に接続され、ＯｐｅｎＦｌｏｗスイッチ１２０は、複数台のＩｏＴの端末１３０に接続される。
【００１６】
ＯｐｅｎＦｌｏｗスイッチ１２０は、ＯｐｅｎＦｌｏｗコントローラ１２５のスイッチ制御に基づき動作し、組織内における端末１３０で発生するパケットの通信解析を行う。例えば、端末１３０は、センサ内蔵のセンサ端末や、マイコン、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｃｏｎｔｒｏｌｌｅｒ）、ＰＣ等からなる。例として、端末１３０としてのセンサ端末は、検出した変位量をＧＷ１１１を介して組織外の外部ネットワーク、例えばインターネットを介して所定の情報サーバに送信する。
【００１７】
ＯｐｅｎＦｌｏｗコントローラ１２５は、接続された端末１３０等のパケットの転送ルールを設定したスイッチ制御のプログラム（ＯｐｅｎＦｌｏｗのプログラム）に基づいて、ＯｐｅｎＦｌｏｗスイッチ１２０の動作を制御する。ここで、実施の形態のプログラム作成装置は、ＯｐｅｎＦｌｏｗコントローラ１２５のスイッチ制御のプログラムをプログラム生成、および再プログラミングする機能を有した装置である。例えば、端末１３０の追加や削除時にＯｐｅｎＦｌｏｗスイッチ１２０を制御するＯｐｅｎＦｌｏｗのプログラムを自動的に再プログラミングする（詳細は後述する）。
【００１８】
ここで、実施の形態のプログラム作成装置は、ＯｐｅｎＦｌｏｗコントローラ１２５の機能の一部として設けることができる。さらには、実施の形態のプログラム作成装置として、ＧＷ１１０や、外部のサーバ（不図示）を用いることもできる。これらプログラム作成装置がＯｐｅｎＦｌｏｗコントローラ１２５の外部装置である場合には、再プログラミングしたスイッチ制御のプログラムデータは、実行処理するＯｐｅｎＦｌｏｗコントローラ１２５に転送すればよい。
【００１９】
プログラム作成装置は、端末１３０が送信するパケットのうち、疑義のあるパケット（不正パケット）をパケット解析装置１４０に振り分けるパケット転送ルールを含むプログラムを、予め記憶された端末接続定義に基づき自動的に生成する。例えば、ＯｐｅｎＦｌｏｗコントローラ１２５がＯｐｅｎＦｌｏｗスイッチ１２０のＯｐｅｎＦｌｏｗのプログラムを生成する。また、ＯｐｅｎＦｌｏｗコントローラ１２５は、ＯｐｅｎＦｌｏｗスイッチ１２０に対する端末１３０の接続状態が増減する毎に、この端末１３０に関する情報を取得し、ＯｐｅｎＦｌｏｗのプログラムを再プログラミングする。
【００２０】
端末１３０は、例えば、ウィルスに感染していない正常時は、パケットをＧＷ１１０との間でのみ交換する。ＯｐｅｎＦｌｏｗスイッチ１２０は、ＯｐｅｎＦｌｏｗコントローラ１２５の制御に基づき、端末１３０が送信するパケットの解析を行う。そして、ＯｐｅｎＦｌｏｗスイッチ１２０は、ウィルス感染等により、端末１３０に本来許可されていない相手と通信しようとしているパケットや、端末１３０が通常利用しないはずのプロトコルが発信された場合を検出する。この場合、ＯｐｅｎＦｌｏｗのプログラムに従って、不正なパケットのみをパケット解析装置１４０に転送する。
【００２１】
パケット解析装置１４０は、例えば、プロトコルアナライザを用いることができる。上記構成のＩｏＴのネットワークシステム１００によれば、ＯｐｅｎＦｌｏｗスイッチ１２０は、不正なパケットのみをパケット解析装置１４０に転送する。これにより、ネットワークシステム１００のセキュリティ対策として行う不正パケットの転送、およびパケット解析装置１４０での解析にかかる処理負荷を軽減できる。
【００２２】
ここで、既存技術による各セキュリティ対策と課題について説明する。ＩｏＴのネットワークシステム１００では、１０年単位で装置を利用することも多く、ロボット等の制御装置に搭載されているＯＳはベンダのサポートやセキュリティ対策ソフトのサポート対象外の古いバージョンのものが用いられることも珍しくない。このような環境で従来のＩＴのセキュリティ技術を適用すると、ＩｏＴの端末装置全てにファイアウォール装置を取り付けるなど、高コストおよび運用にも専門家による高い技術力が要求されるシステムとなってしまう。
【００２３】
図２は、既存技術によるセキュリティ対策のネットワーク構成例１を示す図である。上記従来のＩＴ技術をＩｏＴに適用したときの問題を避ける構成例を示す。ファイアウォールを介して組織内には、スイッチ等のＬＡＮ機器２１０と、セキュリティ対策用サーバ２２０を配置している。
【００２４】
この構成例１では、ＩｏＴの端末１３０が繋がるネットワークを単純な構造にし、かつ、端末１３０にアクセス可能な相手の端末１３０も絞り込んだ上、直接外部のネットワークから端末１３０と通信できないよう、ＧＷ１１０をネットワーク間に配置し中継する。ＧＷ１１０は、パケットのルーティングを行わず、アプリケーションでＩｏＴのアプリケーションプロトコルの通信だけを中継する。
【００２５】
また、このようなネットワークで用いる端末のアプリケーションはＧＷ１１０としか通信しないものとする。もし、端末１３０間で通信を行う必要がある場合も、ＧＷ１１０のアプリケーションに中継を依頼する。ただし、ネットワークシステム１００のコストを抑制するため、端末１３０間のネットワークは分離しないものとする。
【００２６】
図２に示すネットワーク構成例１により、ＧＷ１１０におけるセキュリティ対策により、一定のセキュリティレベルは達成できるが、ＩｏＴの末端のネットワークでは、脆弱性が残されたまま利用される端末１３０が存在する。これらの端末１３０は、完全に独立に動作していれば問題はない。しかし、例えば、端末１３０としてのＰＣにおいて、メンテナンスやデータのやり取りのため、ウィルスに感染したＵＳＢメモリを用いたことにより、ウィルスの感染が他の端末１３０に広まるなどの事故が発生しうる。ウィルス感染が広がると、例えば、ＩｏＴの工場ラインの端末１３０に不正アクセス制御される等の恐れが生じ、セキュリティを維持できなくなる。
【００２７】
図３は、既存技術によるセキュリティ対策のネットワーク構成例２を示す図である。ネットワーク構成例１による上記の事故を想定すると、端末１３０側のセキュリティ対策ソフト等で不正な動作の検出やその通知を行うことは困難である。このため、ネットワーク構成例２のように、端末１３０の外側（図中枠線Ａ）のネットワーク機器（スイッチ２１０）やセキュリティ対策用サーバ２２０等が端末１３０の動作を監視する構成とする。これらセキュリティ対策用サーバ２２０とスイッチ２１０の連携で攻撃を仕掛けて通常の動作とは異なる動きをする端末（ＰＣ）１３０を検出し、管理者に通知する、もしくは、この端末（ＰＣ）１３０を自動でネットワークから切り離す等の措置が必要となる。
【００２８】
図４は、既存技術によるパケット解析の課題を示す図である。現在のＩＴのネットワークでは、ファイアウォールで全パケットを検査し、挙動を監視することが行われており、このＩＴ技術と同じ方法をＩｏＴの端末１３０のネットワークで採用した状態を図４に示す。この場合、パケット解析による攻撃の検出を行うセキュリティ対策用サーバ２２０に処理負荷がかかる。また、端末１３０からセキュリティ対策用サーバ２２０までの経路上に位置するＬＡＮ機器（スイッチ）２１０のトラフィック量が非常に高いものとなり、ネットワークシステムの規模がパケット解析のために抑制されてしまう。
【００２９】
また、図４と異なる単純な機器の組み合わせ例として、端末１３０とＧＷ１１０との間にリピータハブを配置し、リピータハブにパケット解析装置を接続した構成が考えられる。この構成においても、リピータハブは、端末１３０から外部に送出するパケットを全てパケット解析装置に転送し、パケット解析装置が全てのパケットを解析するため、処理負荷が膨大となる。
【００３０】
上記図４等で説明した問題を改善するため、ＩＴ（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）におけるファイアウォールで、ＯｐｅｎＦｌｏｗのＬＡＮ機器（ＯｐｅｎＦｌｏｗスイッチ１２０）を利用する方法が提唱されている（図１参照）。ここで、ＯｐｅｎＦｌｏｗスイッチ１２０をＩｏＴの端末１３０のネットワークに採用した場合に、端末１３０に本来許可されていない相手と通信しようとしているパケットや、端末１３０が通常利用しないはずのプロトコルが発信されたとする。この場合、ＯｐｅｎＦｌｏｗスイッチ１２０は、ＯｐｅｎＦｌｏｗコントローラ１２５のプログラム実行により、不正なパケットのみパケット解析装置１４０に転送し、正常なパケットは端末１３０とＧＷ１１０間で交換する制御を行う。これにより、パケット解析装置１４０では、解析対象のパケット量を大幅に削減することが可能となる。
【００３１】
ただし、ＯｐｅｎＦｌｏｗスイッチ１２０を用いた場合でも、パケットの処理方法を指示するＯｐｅｎＦｌｏｗコントローラ１２５のプログラムは、ＩｏＴでは、端末１３０の追加・削除がＩＴのファイアウォールと比較して高頻度で行われる。このため、管理者による再プログラミングを行うと、手間およびコストがかかることになる。
【００３２】
この点を解決するため、実施の形態では、検査対象のパケットを振り分けるＯｐｅｎＦｌｏｗスイッチ１２０のＯｐｅｎＦｌｏｗコントローラ１２５に搭載するプログラムをＩｏＴの端末１３０の追加や削除の際に、人手での再プログラミングを不要にする。
【００３３】
（実施の形態のＯｐｅｎＦｌｏｗコントローラのプログラムについて）
実施の形態で適用されるＩｏＴのネットワークは、一般的なＩＴのネットワークとは異なり、接続されている端末１３０の種類が少なく、かつ、端末１３０はルータ等を経由せず、単一のＩＰネットワークセグメントに接続される。また、端末１３０のネットワーク接続や取り外しは、かならずメンテナンス担当の作業員（管理者）が行う、もしくは承認の下に他人が代行する。実施の形態では、ＩｏＴのネットワークにおけるこれらの条件を利用し、ＯｐｅｎＦｌｏｗコントローラ１２５のプログラムを、テンプレートとネットワークの設計情報から自動的に生成（更新）する。
【００３４】
図５は、実施の形態にかかるＯｐｅｎＦｌｏｗの仕組みを説明する図である。図５（ａ）には、ＩｏＴのネットワーク用のＯｐｅｎＦｌｏｗスイッチ１２０を示し、図５（ｂ）にはＯｐｅｎＦｌｏｗコントローラ１２５のプログラムの構造を示す。
【００３５】
図５（ａ）に示すように、ＯｐｅｎＦｌｏｗスイッチ１２０およびＯｐｅｎＦｌｏｗコントローラ１２５は、下記１．〜５．の処理を行う。はじめに、１．端末１３０がパケットを送信すると、２．ＯｐｅｎＦｌｏｗコントローラ１２５にルーティング情報を問い合わせる。ＯｐｅｎＦｌｏｗコントローラ１２５は、ＯｐｅｎＦｌｏｗスイッチ１２０からの問い合わせにより、３．ルーティング情報をプログラムで計算し、４．ルーティング情報をＯｐｅｎＦｌｏｗスイッチ１２０に回答する。これにより、ＯｐｅｎＦｌｏｗスイッチ１２０は、端末１３０のパケットをルーティング情報に従った転送先に転送する。
【００３６】
図５（ｂ）に示すように、ＯｐｅｎＦｌｏｗコントローラ１２５のプログラムは、どの機器がどの機器とどのようなプロトコルでパケット転送するか、を構造的なプログラムｐで表現している。グループｐ１はパケットの送信元がＧＷ１１０等のサーバ類の通信に関する部分、グループｐ２はパケットの送信元が端末１３０の通信に関する部分、グループｐ３は不正パケットをパケット解析装置１４０に転送する部分である。
【００３７】
プログラムｐに示す「パケットの種類」は、以下の値を論理式として表記したものである。
・パケットの発信元（ＩＰアドレスやＭＡＣアドレス）
・パケットの種類（ＴＣＰ，ＵＤＰ，ＡＲＰ等）
・発信元、宛先のＴＣＰ／ＩＰのポート番号
ＴＣＰはＴｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ、ＵＤＰはＵｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ、ＡＲＰはＡｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌの略である。
【００３８】
プログラムｐに示す「動作」は、以下のような動作の組み合わせからなる。
・パケットをＯｐｅｎＦｌｏｗスイッチ１２０のいずれかの物理ポートに出力
・Ｅｔｈｅｒｎｅｔ（登録商標）のＶＬＡＮ  ＩＤを書き換え
・ＴＣＰ／ＩＰのヘッダ部分の書き換え
ＶＬＡＮはＶｉｒｔｕａｌ  ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の略である。
【００３９】
プログラムｐのグループｐ１部分では、ＧＷ１１０等のサーバ機器と、ＩｏＴのネットワークに配置されている端末１３０のＬ２、Ｌ３のアドレスと、ＯｐｅｎＦｌｏｗスイッチ１２０のポートに対するそれぞれの装置（ＧＷ１１０，端末１３０）の接続に関する部分である。また、ｐ２の部分も同様に、発信元の端末１３０のＬ２、Ｌ３のアドレスと、通信に用いるプロトコルと、発信元のポートとの対応関係に関する部分である。
【００４０】
グループｐ３の部分は、グループｐ１とグループｐ２の処理に合致しない不正パケット全てをパケット解析装置１４０に転送する部分である。ｐ３の処理により、ＯｐｅｎＦｌｏｗスイッチ１２０はパケット解析装置１４０には不正パケットだけを転送し、転送するパケット量を減らすことができる。
【００４１】
実施の形態では、グループｐ１で必要な情報の一覧と、グループｐ２で必要な情報の一覧と、を管理表として生成し、生成した管理表に基づき、ＯｐｅｎＦｌｏｗコントローラ１２５用のプログラムｐを生成する。
【００４２】
図６は、実施の形態にかかるＯｐｅｎＦｌｏｗのプログラム生成に用いる管理表の例を示す図である。図６（ａ）は、ＯｐｅｎＦｌｏｗスイッチ１２０の各ポートに対する機器の接続例を示す。ポート１にはＯｐｅｎＦｌｏｗコントローラ１２５が接続され、ポート２にはＧＷ１１０が接続され、ポート３にはパケット解析装置１４０が接続されている。ポート４〜６には端末ａ〜ｃ（１３０）が接続されている。
【００４３】
図６（ｂ）は、図６（ａ）のネットワークシステム１００の設計上、発生する可能性がある通信の一覧を示す図表である。例えば、端末ａはＧＷ１１０および端末ｂとの間でｈｔｔｐのプロトコルで通信し、また、ＧＷ１１０との間でｓｓｈのプロトコルで通信を行う。端末ｂはＧＷ１１０との間でのみｈｔｔｐのプロトコルで通信を行う。ｈｔｔｐはｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ、ｓｓｈはｓｅｃｕｒｅ  ｓｈｅｌｌの略である。
【００４４】
図６（ｃ）は、図６（ａ）のＯｐｅｎＦｌｏｗコントローラ１２５のプログラムを図表化したものである。ＯｐｅｎＦｌｏｗのプログラムは、発信元の機器毎に、パケットの宛先、通信のプロトコル、機器が接続されているポート番号、転送先の機器のポート番号を含む。例えば、発信元の端末ｂ（１３０）は、宛先がＧＷ１１０、プロトコルはＴＣＰ、ポート番号は８０、転送先ポート番号は２である。また、ＯｐｅｎＦｌｏｗのプログラムは、図６（ｃ）に示した設定に当てはまらないパケットは全て３番ポート（パケット解析装置１４０）に転送するようプログラムする。
【００４５】
ここで、一般的なＩｏＴの大多数の端末１３０は、ネットワークシステム１００内での通信相手はＧＷ１１０のみであり、端末１３０間での通信は行わず、また、特定のプロトコルを用いた通信しか行わない。このため、ＩｏＴのネットワークシステム１００の運用開始後に追加する端末１３０は、一定の通信パターンに当てはまる通信しか行わない。したがって、実施の形態では、通信パターンからＯｐｅｎＦｌｏｗコントローラ１２５用のプログラムを生成することが可能である。
【００４６】
例えば、図５（ｂ）に示したプログラムにおいて、発信元がサーバ（ＧＷ１１０）の通信に関するグループｐ１は、ＯｐｅｎＦｌｏｗスイッチ１２０のポートと接続している装置のアドレスの組み合わせでプログラムを生成可能である。また、発信元が端末１３０の通信に関するグループｐ２は、特定のパターンしか存在しない。これらにより、プログラムの生成に必要な管理表としての情報は、ＯｐｅｎＦｌｏｗスイッチ１２０に接続している機器のアドレスとポート番号の組み合わせの情報と、パターンを記述したテンプレートである。
【００４７】
図７は、実施の形態にかかるＯｐｅｎＦｌｏｗのプログラムに対応した管理表を説明する図である。図７には、図５（ｂ）に示したプログラムｐの構造のうち、「パケットの種類」と「動作」に関する情報を図表化してある。
【００４８】
「パケットの種類」の条件判定は、図７（ａ）に示す「通信定義表」から生成する。この一覧表は、予め定めたテンプレートから生成できる。「動作」は、図７（ｂ）に示す「スイッチ接続関係定義表」から生成できる。
【００４９】
図７（ａ）に示す「通信定義表」７０１は、パケットを発信する装置毎に、パケットの着装置と、通信のプロトコル、ＩＰポートの各情報を含む（図６（ｂ），（ｃ）の組み合わせに対応）。図７（ｂ）に示す「スイッチ接続関係定義表」７０２は、装置の種別毎のＭＡＣアドレスと、ＯｐｅｎＦｌｏｗスイッチ１２０のポート番号を含む（図６（ａ）参照）。
【００５０】
「通信定義表」７０１は、ＯｐｅｎＦｌｏｗスイッチ１２０に接続された各装置（ＧＷ１１０，ＯｐｅｎＦｌｏｗコントローラ１２５、端末１３０、パケット解析装置１４０）の種別および接続に関する情報（第１情報）である。「スイッチ接続関係定義表」７０２は、装置毎のパケットの通信に関する情報（第２情報）である。
【００５１】
このようなプログラムの自動生成において、管理表を人間がメンテナンスすることは面倒であり手間がかかる。また、ＯｐｅｎＦｌｏｗスイッチ１２０に接続する端末１３０の情報は管理者の承認の下に設定されるが、どのような機器（ＧＷ１１０，端末１３０）がどのポートに接続されているか等の配線情報まで管理することが行き届かず、齟齬が発生することも珍しくない。この点について、実施の形態では、接続されているはずの機器（ＧＷ１１０，端末１３０）のＬ２、Ｌ３のアドレスが既知であることから、プログラム作成装置が自動で配線情報を収集することで、配線変更による機器の管理表を自動で更新する。
【００５２】
図７（ａ）に示す「通信定義表」７０１の項目ａに示すサーバ類のパケット解析装置１４０は、ネットワークシステム１００の設計時に管理者が定義した以後は設定変更されない。また、項目ｂに示す端末ａ〜ｃ（１３０）は、端末１３０の追加あるいは削除により増減するが、端末１３０の追加あるいは削除時にエントリ（行）単位で所定のパターンを用いた情報を追加あるいは削除することで「通信定義表」７０１を更新できる。
【００５３】
例えば、端末ｄ（１３０）の追加時には、他の端末ａ〜ｃ（１３０）同様に、着装置はＧＷ１１０、プロトコルはＴＣＰ、ＩＰポート番号は８０となり、この値が設定されたテンプレートを用いて簡単に設定できる。
【００５４】
また、図７（ｂ）に示す「スイッチ接続関係定義表」７０２の項目ｃに示すサーバ類（ＧＷ１１０、パケット解析装置１４０）は、ネットワークシステム１００の設計時に管理者が定義した以後は設計変更されない。また、項目ｄに示す端末ａ〜ｃ（１３０）は、ＯｐｅｎＦｌｏｗコントローラ１２５がサーバ（ＧＷ１１０）と連携して生成可能である。
【００５５】
例えば、ＯｐｅｎＦｌｏｗコントローラ１２５は、ＬＬＤＰやＳＮＭＰにより、ＯｐｅｎＦｌｏｗスイッチ１２０の接続に関する情報を自動的に取得し、「スイッチ接続関係定義表」７０２を生成できる。ＬＬＤＰはＬｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ、ＳＮＭＰはＳｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌの略である。
【００５６】
図８は、実施の形態にかかるプログラム作成装置が行うスイッチ接続関係定義表の生成処理を説明する図である。ＩｏＴのネットワークシステム１００の構築時に、管理者がプログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ１２５等）を操作して「スイッチ接続関係定義表」７０２の項目ｃの情報を初期設定する。
【００５７】
図８（ａ）に示すように、ネットワークシステム１００の構築時に、ＯｐｅｎＦｌｏｗスイッチ１２０の各ポートに各装置が接続されているとする。この場合、管理者は、下記手順１．〜３．に従い初期設定を行う。
１．各装置が接続されているＯｐｅｎＦｌｏｗスイッチ１２０のポート番号を調査する。
２．各ポートに接続されている装置のＭＡＣアドレスを調査する。
３．ネットワークシステム１００の構築時に与えられているサーバ類の情報とマージする。
【００５８】
上記処理により、ＯｐｅｎＦｌｏｗコントローラ１２５は、例えば図８（ｂ）に示す情報を生成する。ＯｐｅｎＦｌｏｗスイッチ１２０の各ポートには、ＯｐｅｎＦｌｏｗコントローラ１２５がポート番号１、ＧＷ１１０がポート番号２、パケット解析装置１４０がポート番号３に接続されている情報を設定する。このように、ネットワークシステム１００の構築時には、端末１３０以外のサーバ類の装置に関する情報を収集する。図８（ｂ）に示すサーバ類以外の端末１３０に関する情報は、例えば、ＯｐｅｎＦｌｏｗコントローラ１２５が定期的に監視することで、「スイッチ接続関係定義表」７０２の項目ｄの情報を自動的に取得できる。
【００５９】
図９は、実施の形態にかかるプログラム作成装置の機能ブロック図である。プログラム作成装置によるＯｐｅｎＦｌｏｗのプログラム作成機能をＯｐｅｎＦｌｏｗコントローラ１２５に搭載した場合の例を示す。
【００６０】
ＯｐｅｎＦｌｏｗコントローラ１２５は、スイッチ情報取得部９０１、構成表生成部９０２、通信定義生成部９０３、配送ルール生成部９０４、プログラム変換部９０５、ＯｐｅｎＦｌｏｗスイッチ制御部９０６、記憶部９０７を含む。
【００６１】
スイッチ情報取得部９０１は、ＯｐｅｎＦｌｏｗスイッチ１２０のポート接続（機器毎の接続ポート）に関する情報を取得し、生成した接続情報９１０を構成表生成部９０２と記憶部９０７に出力する。構成表生成部９０２は、接続情報９１０と、サーバ接続定義表９１１の情報に基づき、スイッチ接続関係定義表７０２を生成する。通信定義生成部９０３は、サーバ（ＧＷ１１０やパケット解析装置１４０）の通信に関するサーバ通信定義表９１２と、端末１３０の通信に関する端末通信定義表９１３の情報に基づき、通信定義表７０１を生成し、配送ルール生成部９０４に出力する。
【００６２】
配送ルール生成部９０４は、通信定義表７０１に基づき、装置間でのパケットの配送に関するルールを定義した配送ルール定義表９１４を生成する。プログラム変換部９０５は、スイッチ接続関係定義表７０２と、配送ルール定義表９１４に設定された情報を、ＯｐｅｎＦｌｏｗのプログラムｐに変換（生成）し、このプログラムｐをＯｐｅｎＦｌｏｗスイッチ制御部９０６に出力する。
【００６３】
ＯｐｅｎＦｌｏｗスイッチ制御部９０６は、ＯｐｅｎＦｌｏｗスイッチ１２０からの配送ルール問い合わせ毎に、その時点での最新のプログラムｐに基づき配送ルールをＯｐｅｎＦｌｏｗスイッチ１２０に出力する。記憶部９０７は、上述した接続情報９１０や、通信定義表７０１、スイッチ接続関係定義表７０２、各定義表９１１〜９１４、プログラムｐの各情報を更新可能に記憶保持する。
【００６４】
図１０は、実施の形態にかかるプログラム作成装置のハードウェア構成例を示す図である。図１０の例では、プログラム作成装置の機能をＯｐｅｎＦｌｏｗコントローラ１２５の機能の一部として適用した例を示す。ＯｐｅｎＦｌｏｗコントローラ１２５は、入出力インタフェース（ＩＦ）１００１、ネットワークインタフェース１００２、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００３、メモリ１００４を含む。
【００６５】
入出力ＩＦ１００１は、例えば、ネットワークシステム１００の管理者が操作するキーボードやディスプレイと接続するためのインタフェースであり、ＩｏＴのネットワーク構築時のサーバ類の情報等が手入力される。ネットワークインタフェース１００２は、ＯｐｅｎＦｌｏｗスイッチ１２０と通信接続するためのインタフェースである。
【００６６】
ＣＰＵ１００３は、ＯｐｅｎＦｌｏｗコントローラ１２５全体を統括制御する制御部として機能し、また、図９に示したプログラム作成装置の各機能部の機能を実現する。図９に示した各機能は、図１０に示したＣＰＵ１００３がメモリ１００４に格納されたプログラムを読み出し実行し、その際、メモリ１００４を作業領域に使用することで実現可能である。メモリ１００４は、ＲＯＭ，ＲＡＭ，フラッシュＲＯＭ等を用いることができる。また、メモリ１００４は、図９の記憶部９０７の機能を実現し、上述した各定義表の情報や、作成したプログラムをそれぞれ更新可能に記憶保持する。
【００６７】
図１１は、実施の形態のプログラム作成装置が行うプログラム作成処理例のフローチャートである。例えば、ＯｐｅｎＦｌｏｗコントローラ１２５が図９に示す各機能をＣＰＵ１００３が実行する際の処理手順を説明する。
【００６８】
プログラム作成装置（ＣＰＵ１００３）は、一定時間待機し（ステップＳ１１０１）、一定時間経過毎に以下の処理を実行する。はじめに、ＣＰＵ１００３は、ＯｐｅｎＦｌｏｗスイッチ１２０から取得した情報（接続情報９１０）を取得する（ステップＳ１１０２）。そして、ＣＰＵ１００３は、接続情報９１０について、前回の処理時からの変更の有無を判断する（ステップＳ１１０３）。
【００６９】
前回からの変更がない場合（ステップＳ１１０３：Ｎｏ）、ステップＳ１１０１の処理に戻る。一方、前回からの変更がある場合（ステップＳ１１０３：Ｙｅｓ）、ＣＰＵ１００３は、ＯｐｅｎＦｌｏｗスイッチ１２０に接続された機器数の増減を判断する（ステップＳ１１０４）。前回の処理時の機器数より機器数が減少した場合には（ステップＳ１１０４：減少）、ステップＳ１１０８の処理に移行する。一方、前回の処理時の機器数より機器数が増加した場合には（ステップＳ１１０４：増加）、ＣＰＵ１００３は、ＯｐｅｎＦｌｏｗスイッチ１２０から取得した「接続情報」９１０と、「サーバ接続定義表」９１１から「スイッチ接続関係定義表」７０２を生成する（ステップＳ１１０５）。
【００７０】
この後、ＣＰＵ１００３は、「スイッチ接続関係定義表」７０２の「装置種別欄（列）」と、「サーバ通信定義表」９１１、「端末通信定義表」９１３から「通信定義表」７０１を生成する（ステップＳ１１０６）。
【００７１】
この後、ＣＰＵ１００３は、「スイッチ接続関係定義表」７０２と、「通信定義表」７０１から「配送ルール定義表」９１４を生成し（ステップＳ１１０７）、ステップＳ１１０９の処理に移行する。
【００７２】
上述した各処理で生成する各管理表について説明しておく。図１２は、実施の形態にかかるプログラム作成装置が作成する接続情報を示す図表である。接続情報９１０は、ＯｐｅｎＦｌｏｗスイッチ１２０に接続された各機器のＭＡＣアドレスと、ポート番号を含む。
【００７３】
図１３は、実施の形態にかかるプログラム作成装置が作成するサーバ接続定義表を示す図表である。サーバ接続定義表９１１は、装置種別と、ポート番号を含む。
【００７４】
図１４は、実施の形態にかかるプログラム作成装置が作成するスイッチ接続関係定義表を示す図表である。スイッチ接続関係定義表７０２は、図７（ｂ）と同様に、装置種別と、ＭＡＣアドレスと、ポート番号とを含む。図１４のスイッチ接続関係定義表７０２では、図７（ｂ）と比べてＯｐｅｎＦｌｏｗコントローラ１２５に関する情報が追加されている点が異なる。
【００７５】
図１５は、実施の形態にかかるプログラム作成装置が作成するサーバ通信定義表を示す図表である。サーバ通信定義表９１２は、サーバ類（ＧＷ１１０、パケット解析装置１４０、ＯｐｅｎＦｌｏｗコントローラ１２５）などのパケットを発信する発装置、パケットを受ける着装置、通信のプロトコル、ＩＰポート番号を含む。
【００７６】
図１６は、実施の形態にかかるプログラム作成装置が作成する端末通信定義表を示す図表である。端末通信定義表９１３は、パケットを発信する発装置（端末１３０）、パケットを受ける着装置（ＧＷ１１０）、通信のプロトコル、ＩＰポート番号を含む。
【００７７】
図１７は、実施の形態にかかるプログラム作成装置が作成する通信定義表を示す図表である。通信定義表７０１は、図７（ａ）と同様に、パケットを発信する発装置と、着装置と、通信のプロトコルと、ＩＰポート番号とを含む。図１７の通信定義表７０１では、図７（ａ）と比べてＧＷ１１０に関する情報が追加され、また、追加する端末毎にエントリ（行）が追加自在な点が異なる。
【００７８】
図１８は、実施の形態にかかるプログラム作成装置が作成する配送ルール定義表を示す図表である。配送ルール定義表９１４は、パケットを発信する発装置、着装置、通信のプロトコル、ＩＰポート番号、パケット転送先の情報を含む。
【００７９】
図１１に戻り説明すると、ステップＳ１１０４の判断で機器数が減少した場合（ステップＳ１１０４：減少）、ステップＳ１１０８では、ＣＰＵ１００３は、配送ルール定義表９１４から減少した端末１３０のエントリ（行）を削除する（ステップＳ１１０８）。
【００８０】
また、ステップＳ１１０９では、ＣＰＵ１００３は、配送ルール定義表９１４をＯｐｅｎＦｌｏｗコントローラ用プログラムに変換する（ステップＳ１１０９）。このＣＰＵ１００３は、ステップＳ１１０１の処理に戻る。
【００８１】
図１９は、実施の形態にかかるプログラム作成装置が行うプログラム作成を説明するフローチャートである。例えば、ＯｐｅｎＦｌｏｗコントローラ１２５のプログラム変換部９０５による配送ルール定義表をプログラム変換する処理（図１１のステップＳ１１０９）をＣＰＵ１００３が実行する際の処理手順を説明する。
【００８２】
はじめに、プログラム作成装置（ＣＰＵ１００３）は、「配送ルール定義表」９１４（図１８参照）先頭のＧＷ１１０の行は、発信元と宛先装置毎に、「スイッチ接続関係定義表」７０２を参照し、別のプログラム行に変更する（ステップＳ１９０１）。この処理は、図５（ｂ）のプログラムのグループｐ１のＧＷ１１０関連部分に対して行う。
【００８３】
次に、ＣＰＵ１００３は、「配送ルール定義表」９１４（図１８参照）のパケット解析装置１４０の行を発装置、プロトコル、ポート、宛先の論理和（ＡＮＤ）条件でプログラムの行に変更する（ステップＳ１９０２）。この処理は、図５（ｂ）のプログラムのグループｐ１のパケット解析装置１４０関連部分に対して行う。
【００８４】
次に、ＣＰＵ１００３は、「配送ルール定義表」９１４（図１８参照）の各装置（端末１３０）の行をパケット解析装置１４０の行に対する処理と同じＡＮＤ条件でプログラムに変更する（ステップＳ１９０３）。この処理は、図５（ｂ）のプログラムのグループｐ２の端末１３０関連部分に対して行う。
【００８５】
次に、ＣＰＵ１３０は、「配送ルール定義表」９１４（図１８参照）の最終行は、全てのルールにマッチしなかった場合に該当するため、プログラムの最後にｅｌｓｅ行として追加する（ステップＳ１９０４）。以上により、配送ルール定義表９１４と、スイッチ接続関係定義表７０２の情報に基づく、ＯｐｅｎＦｌｏｗのプログラム作成の処理を終了する。
【００８６】
（端末追加時の具体的なプログラム作成の処理例）
次に、上述したプログラム作成装置の具体的処理例について、端末追加時の処理例を説明する。ネットワークシステム１００内の各装置は、図８に示す配置であるとする。ＧＷ１１０は任意の端末１３０やパケット解析装置１４０と通信し、ＯｐｅｎＦｌｏｗコントローラ１２５は、ＯｐｅｎＦｌｏｗスイッチ１２０のみと通信する。また、端末１３０はＧＷ１１０のみと通信するとする。
【００８７】
図２０は、実施の形態にかかる端末追加前のシステム状態を示す図である。端末１３０追加前（初期時）のネットワークシステム１００の構成と、各装置のＭＡＣアドレスを示す。ＯｐｅｎＦｌｏｗスイッチ１２０のポート１にはＯｐｅｎＦｌｏｗコントローラ１２５が接続され、ＭＡＣアドレスはＹである。ポート２には、ＧＷ１１０が接続され、ＭＡＣアドレスはＧＷである。ポート３にはパケット解析装置１４０が接続され、ＭＡＣアドレスはＸである。ポート４〜６には端末ａ〜ｃ（１３０）が接続され、ＭＡＣアドレスはＡ〜Ｃである。各装置のＭＡＣアドレスはそれぞれ所定の値を有する。
【００８８】
端末１３０追加前（初期時）に、プログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ１２５）は、ＯｐｅｎＦｌｏｗスイッチ１２０から物理的なポートと、各ポートに接続されている装置のアドレスを取得する。この情報は、図２０に示す各機器の接続状態に対応して図１２に示した接続情報９１０に記載の各値（ＭＡＣアドレス、ポート番号）を有する。また、スイッチの配送ルール定義表９１４についても、図１８に示した各値（発装置、着装置、プロトコル、ＩＰポート番号、パケット転送先）を有する。
【００８９】
図２１は、実施の形態にかかる端末追加前のプログラム例を示す図である。図２０に示した端末１３０追加前（初期時）のＯｐｅｎＦｌｏｗコントローラ用のプログラムｐの例を示す。グループｐ１はパケットの送信元がＧＷ１１０等のサーバ類の通信に関する部分であり、ＧＷ１１０が他の機器であるパケット解析装置１４０や端末ａ〜ｃ（１３０）へのパケット送信時に転送するポートがそれぞれ記述（設定）されている。グループｐ２はパケットの送信元が端末１３０の通信に関する部分であり、送信するパケットは全てＧＷ１１０宛であり、プロトコルとＩＰポート、転送先のポートが記述（設定）されている。グループｐ３は不正パケットをパケット解析装置１４０に転送する部分であり、全てパケット解析装置１４０のポートに転送することが記載されている。
【００９０】
図２２は、実施の形態にかかる端末追加時のシステム状態を示す図である。また、図２３は、実施の形態にかかる端末追加時のＯｐｅｎＦｌｏｗスイッチの接続状態を示す図表である。図２２には、図２０に示した初期時の状態に対し、新たに１台の端末ｄ（１３０）が追加された状態を示している。この場合、ＯｐｅｎＦｌｏｗスイッチ１２０のポート７と、このポート７に接続している端末ｄ（１３０）のＭＡＣアドレスＤの関係は、図２３のようにエントリ（行）が１行増加する。図２３は、接続情報９１０に相当する。
【００９１】
この場合、プログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ１２５）は、端末ｄ（１３０））の追加前の表と比較して、行が追加されたため、プログラムを生成（再プログラミング）する処理を実行する（図１１のステップＳ１１０４：増加時の処理）。
【００９２】
図２４は、実施の形態にかかるプログラム作成装置による端末増加時のスイッチ接続関係定義表の更新処理を説明する図表である。図２４の（ａ）は接続情報９１０、（ｂ）はサーバ接続定義表９１１、（ｃ）はスイッチ接続関係定義表７０２を示す。サーバ接続定義表９１１は、管理者が設定ファイルとして予め記述（設定）する。
【００９３】
そして、プログラム作成装置は、図２４の（ａ）の接続情報９１０と、（ｂ）のサーバ接続定義表９１１とに基づき、（ｃ）のように端末ｄ（１３０）のエントリを追加したスイッチ接続関係定義表７０２を生成（更新）する。ここで、プログラム作成装置は、ＯｐｅｎＦｌｏｗスイッチ１２０に接続している機器のうち、サーバ接続定義表９１１に定義されていないものは、端末１３０であると判断する。そして、（ｃ）のスイッチ接続関係定義表７０２に対して追加するエントリ（行）の装置種別欄は適当な名前（端末１３０であることがわかればよい）で埋める。図示の例では、（ｃ）のスイッチ接続関係定義表７０２には、装置種別が端末ｄ、ＭＡＣアドレスがＤ、ポート番号が７、として設定した１行が追加される。
【００９４】
図２５は、実施の形態にかかるプログラム作成装置による端末増加時の通信定義表の更新処理を説明する図表である。図２５の（ａ）はサーバ通信定義表９１２、（ｂ）は端末通信定義表９１３、（ｃ）はスイッチ接続関係定義表７０２、（ｄ）は通信定義表７０１を示す。サーバ通信定義表９１２と、端末通信定義表９１３は、管理者が事前に設定ファイルとして定義（設定）する。また、端末通信定義表９１３は、装置間の通信をモデル化したものである。
【００９５】
そして、プログラム作成装置は、サーバ通信定義表９１２、および端末通信定義表９１３、さらに、図２４の説明で更新したスイッチ接続関係定義表７０２に基づき、通信定義表７０１を生成する。この処理において、ＯｐｅｎＦｌｏｗコントローラ１２５は、他のサーバ類や端末１３０とは通信せず、ＯｐｅｎＦｌｏｗスイッチ１２０とのみ通信するため、通信定義表７０１には記載（設定）しない。図示の例では、（ｄ）の通信定義表７０１には、発装置が端末ｄ、着装置がＧＷ、プロトコルがＴＣＰ、ＩＰポート番号が８０、として設定した１行が追加される。
【００９６】
図２６は、実施の形態にかかるプログラム作成装置による端末増加時の配送ルール定義表の更新処理を説明する図表である。図２６の（ａ）はスイッチ接続関係定義表７０２、（ｂ）は通信定義表７０１、（ｃ）は配送ルール定義表９１４を示す。
【００９７】
そして、プログラム作成装置は、図２５の説明で更新したスイッチ接続関係定義表７０２と、通信定義表７０１とに基づき、配送ルール定義表９１４を生成する。具体的には、通信定義表７０１にパケット配送先を追加する処理となるため、スイッチ接続関係定義表の７０２スイッチポート欄を参照して、配送ルール定義表９１４を作成する。図示の例では、（ｃ）の配送ルール定義表９１４には、発装置が端末ｄ、着装置がＧＷ、プロトコルがＴＣＰ、ＩＰポート番号が８０、パケット転送先がポート２、として設定した１行が追加される。
【００９８】
図２７は、実施の形態にかかるプログラム作成装置による端末増加時のプログラム例を示す図である。プログラム作成装置は、図２６の説明で更新した配送ルール定義表９１４と、スイッチ接続関係定義表７０２とに基づき、ＯｐｅｎＦｌｏｗコントローラ１２５用のプログラムｐを生成（更新）する。
【００９９】
実際の生成手順としては、グループｐ１の配送ルール定義表９１４のＧＷ１１０関係の部分は、ＧＷ１１０が発信元でパケットを送信する可能性がある全ての装置宛のエントリをスイッチ接続関係定義表７０２の情報を用いて生成する。また、配送ルール定義表９１４の発信元がパケット解析装置１４０に関する行は宛先がＧＷ１１０のみ、かつｈｔｔｐに限定されている。このため、パケット解析装置１４０の発信、かつ、宛先がＧＷ１１０のＴＣＰの８０番ポート宛のパケットを全てＧＷ１１０が繋がっているポートに転送する行を生成する。これにより、ＯｐｅｎＦｌｏｗコントローラ１２５用のプログラムｐのうち、サーバ関係の部分（グループｐ１）が確定する。
【０１００】
また、上記のパケット解析装置１４０に対する処理と同じ手順で各端末１３０のプログラム（グループｐ２）を生成した後、以上のグループｐ１、ｐ２のいずれにも当てはまらないパケットに対する処理（グループｐ３）を配送ルール定義表９１４に従って生成する。
【０１０１】
図２７に示す端末増加後のプログラムｐは、図２１に示す端末増加前のプログラムｐと比較して、グループｐ１，ｐ２部分でそれぞれ追加した端末ｄ（１３０）に対応する処理の行が追加されている。
【０１０２】
（スイッチの接続情報の自動取得例１：ＳＮＭＰの利用）
次に、ＯｐｅｎＦｌｏｗコントローラ１２５により、ＯｐｅｎＦｌｏｗスイッチ１２０に接続された機器の接続情報を自動取得する例について説明する。この機器の情報は、上述したＳＮＭＰ、ＬＬＤＰを利用して自動取得することができる。はじめに、ＳＮＭＰを用いた機器の接続情報の自動取得例について説明する。
【０１０３】
ＯｐｅｎＦｌｏｗコントローラ１２５は、ＳＮＭＰ対応のＯｐｅｎＦｌｏｗスイッチ１２０から情報を取得し、実際のスイッチの物理ポートと、物理ポートに接続している装置のＭＡＣアドレスの対応関係を示す情報を取得する。例えば、上述の図２２に示したように、ＯｐｅｎＦｌｏｗスイッチ１２０には、各機器（ＧＷ１１０、ＯｐｅｎＦｌｏｗコントローラ１２５、パケット解析装置１４０、４台の端末ａ〜ｄ（１３０））が接続されているとする。
【０１０４】
図２８は、実施の形態にかかるプログラム作成装置がＳＮＭＰにより収集する情報を示す図表である。図２８（ａ）は、ＯｐｅｎＦｌｏｗコントローラ１２５がＯｐｅｎＦｌｏｗスイッチ１２０からＳＮＭＰで取得できる情報例を示し、ＭＡＣアドレスと、ポート番号の対応関係の情報を取得できる。図中、ＭＡＣアドレスＺのポート番号１００はＯｐｅｎＦｌｏｗスイッチ１２０自身の内部ポートに相当し、これ以外は物理ポートに相当する。
【０１０５】
そして、プログラム作成装置は、図２８（ａ）に示した情報に基づき、図２８（ｂ）に示すように、ＯｐｅｎＦｌｏｗスイッチ１２０の物理ポートと繋がっている各機器のＭＡＣアドレスとポートの対応関係を表した情報（接続情報９１０）を生成する。
【０１０６】
図２９は、実施の形態にかかるプログラム作成装置がＳＮＭＰにより接続情報を生成する処理例を示すフローチャートである。図３０は、実施の形態にかかるプログラム作成装置がＳＮＭＰにより接続情報を生成するまでの各段階の情報を説明する図表である。プログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ１２５）は、実際には、図３０（ａ）〜（ｄ）に示す４つの段階の処理を経て接続情報９１０を生成する。
【０１０７】
図２９に記載の処理に従い処理内容を説明する。はじめに、プログラム作成装置は、第１段階として、ＯｐｅｎＦｌｏｗスイッチ１２０からポート（論理ポート番号）の一覧を取得し、昇順にソートする（ステップＳ２９０１、図３０（ａ））。
【０１０８】
次に、プログラム作成装置は、第２段階として、ポートの番号が最小のエントリを削除する（ステップＳ２９０２）。最小のポート番号は、ＯｐｅｎＦｌｏｗスイッチ１２０のＳＮＭＰコントローラのポート番号であり、これを除去するため、最も小さいポート番号を除去する（図３０（ｂ））。ＯｐｅｎＦｌｏｗスイッチ１２０の機種によっては最大の場合もありえるが、一般的には最小の番号である。
【０１０９】
次に、プログラム作成装置は、第３段階として、残ったエントリ（行）のポート番号に相当するポートの学習されたＭＡＣアドレスをＯｐｅｎＦｌｏｗスイッチ１２０からＳＮＭＰで取得する（ステップＳ２９０３、図３０（ｃ））。実施の形態で想定するＩｏＴのネットワークシステム１００では、ＯｐｅｎＦｌｏｗスイッチ１２０の物理ポートには、端末１３０が直結されており、スイッチの多段構成はないため、ポート番号とＭＡＣアドレスは１対１となる。
【０１１０】
最後に、プログラム作成装置は、ＯｐｅｎＦｌｏｗスイッチ１２０の論理ポート番号を小さいものから順に、スイッチの物理ポート番号（１から始まる番号）で置き換える（ステップＳ２９０４、図３０（ｄ））。図３０（ｄ）は上述した接続情報９１０として用いられる。
【０１１１】
以上により、プログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ１２５）は、ＳＮＭＰにより、ＯｐｅｎＦｌｏｗスイッチ１２０に接続された機器の情報（ＭＡＣアドレスと論理ポート番号）を取得する。そして、所定の処理により、接続情報９１０（ＭＡＣアドレスと物理ポート番号）として生成する。これにより、プログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ１２５）は、ＯｐｅｎＦｌｏｗスイッチ１２０に対する機器の接続状態の変更を簡単に検出でき、変更に応じた接続情報９１０を常に最新状態で保持できるようになる。
【０１１２】
（スイッチの接続情報の自動取得例２：ＬＬＤＰの利用）
次に、ＬＬＤＰを用いた機器の接続情報の自動取得例について説明する。ＯｐｅｎＦｌｏｗスイッチ１２０および端末１３０がいずれもＬＬＤＰ（ＩＥＥＥ８０２．１ＡＢ）に対応している場合、このＬＬＤＰによりＯｐｅｎＦｌｏｗスイッチ１２０から接続に関する情報を取得できる。そして、プログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ１２５）は、ＯｐｅｎＦｌｏｗスイッチ１２０の物理ポートと、この物理ポートに接続している装置のＭＡＣアドレスの関係を抽出する。
【０１１３】
図３１は、ＬＬＤＰの基本的な動作を説明する図である。ＬＬＤＰは、物理的に接続している装置間で、Ｌ２レベルのマルチキャストを用いて、自分の情報を交換する。ＬＡＮ機器（ＯｐｅｎＦｌｏｗスイッチ１２０）は、交換した情報を蓄積し、自身に接続されている機器（端末ａ（１３０）のアドレス情報（ＩＰアドレス、ＭＡＣアドレス等）のリストを記憶保持する。そして、ＬＡＮ機器（ＯｐｅｎＦｌｏｗスイッチ１２０）は、サーバ（ＬＬＤＰサーバ３１０１）などからの問い合わせに応じて、自身に接続されている機器のリストを返答する。
【０１１４】
図３２は、実施の形態にかかるプログラム作成装置のＬＬＤＰによる接続に関する情報収集時のシステム構成例を示す図である。例えば、ＯｐｅｎＦｌｏｗスイッチ１２０には、ポート１にＯｐｅｎＦｌｏｗコントローラ１２５（ＩＰアドレスｙ，ＭＡＣアドレスＹ）が接続されている。また、ポート２にＧＷ１１０（ＩＰアドレスｇｗ，ＭＡＣアドレスＧＷ）が接続されている。また、ポート３にパケット解析装置１４０（ＩＰアドレスｘ，ＭＡＣアドレスＸ）が接続されている。また、ポート４〜７に端末ａ〜ｄ（１３０、ＩＰアドレスａ〜ｄ，ＭＡＣアドレスＡ〜Ｄが接続されているとする。
【０１１５】
図３３は、実施の形態にかかるプログラム作成装置がＬＬＤＰにより接続情報を生成する処理例を示すフローチャートである。図３４は、実施の形態にかかるプログラム作成装置がＬＬＤＰにより接続情報を生成するまでの各段階の情報を説明する図表である。プログラム作成装置（ここでは、ＬＬＤＰサーバ３１０１とする）は、実際には、図３４（ａ）〜（ｄ）に示す４つの段階の処理を経て接続情報９１０を生成する。
【０１１６】
図３３に記載の処理に従い処理内容を説明する。はじめに、第１段階では、ＬＬＤＰでＯｐｅｎＦｌｏｗスイッチ１２０が収集した機器の接続に関する情報をプログラム作成装置（ＬＬＤＰサーバ３１０１）がＯｐｅｎＦｌｏｗスイッチ１２０から取得する（ステップＳ３３０１、図３４（ａ））。この際の情報は、ＯｐｅｎＦｌｏｗスイッチ１２０に接続された機器の論理ポート名、ＩＰアドレス、ＭＡＣアドレスである。
【０１１７】
次に、第２段階では、プログラム作成装置（ＬＬＤＰサーバ３１０１）は、不要なＩＰアドレス部分を削除する（ステップＳ３３０２、図３４（ｂ））。ここで、ＯｐｅｎＦｌｏｗスイッチ１２０のポート番号を示す情報（論理ポート名）とＭＡＣアドレス以外は不要な情報であるため削除する。
【０１１８】
次に、第３段階では、プログラム作成装置（ＬＬＤＰサーバ３１０１）は、論理ポート名から末尾の数字部分だけを取り出し、それを論理ポート番号とする（ステップＳ３３０３、図３４（ｃ））。
【０１１９】
そして、第４段階では、プログラム作成装置（ＬＬＤＰサーバ３１０１）は、論理ポート番号順にソートした上で、小さいものから物理ポート番号に置き換え（マッピング）する（ステップＳ３３０４、図３４（ｄ））。図３４（ｄ）は上述した接続情報９１０として用いられ、プログラム作成装置（ＬＬＤＰサーバ３１０１）は、ＯｐｅｎＦｌｏｗコントローラ１２５の問い合わせに応じて、ＯｐｅｎＦｌｏｗコントローラ１２５に接続情報９１０を出力する。
【０１２０】
以上により、プログラム作成装置（ＬＬＤＰサーバ３１０１）は、ＬＬＤＰにより、ＯｐｅｎＦｌｏｗスイッチ１２０に接続された機器の情報（ＭＡＣアドレスとポート名）を取得する。そして、所定の処理により、接続情報９１０（ＭＡＣアドレスと物理ポート番号）として生成する。これにより、プログラム作成装置（ＬＬＤＰサーバ３１０１）は、ＯｐｅｎＦｌｏｗスイッチ１２０に対する機器の接続状態の変更を簡単に検出でき、変更に応じた接続情報９１０を常に最新状態で保持できるようになる。そして、端末１３０の追加削除時に再プログラミングを行うプログラム作成装置（例えば、ＬＬＤＰサーバ３１０１またはＯｐｅｎＦｌｏｗコントローラ１２５）に対し、最新の接続情報９１０を出力できる。
【０１２１】
以上説明した実施の形態のプログラム作成装置は、ＯｐｅｎＦｌｏｗスイッチ１２０のパケット転送のためのＯｐｅｎＦｌｏｗのプログラムで必要な第１情報の「スイッチ接続関係定義表」７０２と、第２情報の「通信定義表」７０１とを、更新可能に保持する。ＯｐｅｎＦｌｏｗスイッチ１２０は、ＯｐｅｎＦｌｏｗコントローラ１２５によるＯｐｅｎＦｌｏｗのプログラム実行により、パケット転送の制御を行う。
【０１２２】
そして、実施の形態では、ＯｐｅｎＦｌｏｗプログラムｐのプログラム構造に着目し、プログラム構造別に対応する第１情報と第２情報に分けてそれぞれ更新可能に保持する。第１情報の「スイッチ接続関係定義表」７０２は、グループｐ２のプログラミングに必要な情報を一覧化する。また、第２情報の「通信定義表」７０１は、グループｐ１のプログラミングに必要な情報を一覧化する。
【０１２３】
これにより、実施の形態のプログラム作成装置は、ＯｐｅｎＦｌｏｗコントローラ１２５用のプログラムｐを、これら第１情報の「スイッチ接続関係定義表」７０２と、第２情報の「通信定義表」７０１に基づき簡単に作成できる。例えば、ネットワークシステム１００の運用開始時には、初期のプログラムｐ全体を専門の管理者が作成する。しかし、ＯｐｅｎＦｌｏｗスイッチ１２０に対して端末１３０の追加、削除時等には、その都度、プログラム作成装置がプログラムｐを再プログラミングする処理を自動実行する。例えば、プログラム作成装置は、ＯｐｅｎＦｌｏｗコントローラ１２５自身とすることができる。これに限らず、ＧＷ１１０、あるいは不図示のサーバが再プログラミングを実行してもよい。
【０１２４】
そして、プログラム作成装置は、ネットワークシステム１００に対する端末１３０の増減を検出したとき、ＯｐｅｎＦｌｏｗスイッチ１２０に対する端末１３０の接続に関する情報を取得する。そして、取得した端末１３０の接続に関する情報に基づき、第１情報及び第２情報を更新する。これにより、端末の増減時には、ＯｐｅｎＦｌｏｗのプログラムを自動的に再プログラミングできるようになる。
【０１２５】
また、プログラム作成装置は、ＳＮＭＰまたはＬＬＤＰにより、ＯｐｅｎＦｌｏｗスイッチ１２０に対する端末１３０の接続に関する情報を取得することができる。これら汎用のプロトコルを用いて簡単に端末１３０の増減時における端末１３０の接続に関する情報を取得でき、また、再プログラミングを自動実行できるようになる。
【０１２６】
そして、ＩｏＴのセンサ等が繋がるネットワークシステム１００に適用し、セキュリティを確保するために、ＯｐｅｎＦｌｏｗのネットワークの機器を利用する場合、ＩｏＴの端末であるセンサ機器等の追加や削除が頻繁に生じる。この場合でも、プログラム作成装置は、端末の増減ごとに、ＯｐｅｎＦｌｏｗのプログラムを再プログラミングすることができる。これにより、ＩｏＴの端末の追加や削除が生じても、専門知識を有する管理者による人手でのＯｐｅｎＦｌｏｗのプログラムの再プログラミングの手間を不要にでき、かつコスト削減を図ることができるようになる。
【０１２７】
なお、本実施の形態で説明したプログラム作成にかかる方法は、予め用意されたプログラムを対象機器（上記ＯｐｅｎＦｌｏｗコントローラ１２５）等のコンピュータ（ＣＰＵ等）が実行することにより実現することができる。本制御プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１２８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２９】
（付記１）所定のネットワーク内のスイッチが転送するパケットのうち、疑義のあるパケットを解析装置に振り分けるパケット転送ルールを有するスイッチ制御用のプログラムを作成する制御部を有し、
前記制御部は、前記スイッチに接続される装置の増減時に、前記装置の接続に関する情報を取得し、当該装置の接続に関する情報に基づき、前記プログラムを再プログラミングすることを特徴とするプログラム作成装置。
【０１３０】
（付記２）前記制御部は、
前記スイッチに接続された前記装置毎の種別および接続に関する第１情報と、
前記装置毎のパケットの通信に関する第２情報と、を更新可能に保持し、
前記装置のうち、前記スイッチに接続される装置が前記ネットワーク内で特定の装置とのみ通信する端末の増減時、当該端末の接続に関する情報を取得し、取得した当該端末の接続に関する情報に基づき、前記第１情報及び前記第２情報を更新し、前記プログラムを再プログラミングすることを特徴とする付記１に記載のプログラム作成装置。
【０１３１】
（付記３）前記制御部は、
前記作成したプログラム、および前記再プログラミングしたプログラムを、前記スイッチの動作を制御するコントローラに転送することを特徴とする付記１または２に記載のプログラム作成装置。
【０１３２】
（付記４）前記制御部は、
前記第１情報として、前記ネットワークに接続している前記装置毎の種別と、ネットワークアドレスと、スイッチのポートと、の対応表を更新可能に保持し、
前記第２情報として、前記装置毎の種別と、送信するパケットの着装置と、通信のプロトコルと、スイッチのポートと、の対応表を更新可能に保持し、
予め設定された、特定の装置の種別と、スイッチのポートに関する情報と、前記装置毎の通信時にパケットを発着する装置、通信のプロトコル、ポート、の情報と、に基づき、
前記装置のうち、前記スイッチに接続される装置が前記ネットワーク内で特定の装置とのみ通信する端末の増減であるかを判断し、当該端末の増減時には、当該端末の接続に関する情報を取得し、取得した当該端末の接続に関する情報に基づき、前記第１情報及び前記第２情報を更新し、前記プログラムを再プログラミングすることを特徴とする付記２または３に記載のプログラム作成装置。
【０１３３】
（付記５）前記制御部は、
ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）により、前記端末の接続に関する情報として、前記スイッチから当該スイッチのポート毎に接続された前記装置のアドレスを取得することを特徴とする付記４に記載のプログラム作成装置。
【０１３４】
（付記６）前記制御部は、
ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）により、前記端末の接続に関する情報として、前記スイッチのポート毎に接続された前記装置のアドレスと、論理インタフェース番号と、を取得し、当該論理インタフェース番号を前記スイッチの物理ポート番号に変換することを特徴とする付記４に記載のプログラム作成装置。
【０１３５】
（付記７）前記制御部は、
前記第１情報および前記第２情報に基づき、前記装置毎のパケットの発着の装置、プロトコル、ポート、パケット転送先に関する配送ルール表を更新可能に保持し、
前記配送ルール表と、前記第１情報の情報に基づき、前記スイッチを動作制御する前記プログラムの作成及び再プログラミングを行うことを特徴とする付記１〜６のいずれか一つに記載のプログラム作成装置。
【０１３６】
（付記８）前記スイッチは、ＯｐｅｎＦｌｏｗスイッチであり、
前記プログラムは、前記ＯｐｅｎＦｌｏｗスイッチのスイッチ制御を行うＯｐｅｎＦｌｏｗコントローラが実行することを特徴とする付記１〜７のいずれか一つに記載のプログラム作成装置。
【０１３７】
（付記９）所定のネットワーク内のスイッチに接続される装置の接続に関する情報を取得し、
前記装置の接続に関する情報に基づき、前記スイッチが転送するパケットのうち、疑義のあるパケットを解析装置に振り分けるパケット転送ルールを有するスイッチ制御用のプログラムを作成し、
前記装置の増減時に、前記装置の接続に関する情報を取得し、当該装置の接続に関する情報に基づき、前記プログラムを再プログラミングする、
処理をコンピュータが実行することを特徴とするプログラム作成方法。
【０１３８】
（付記１０）前記装置のうち、前記スイッチに接続される装置が前記ネットワーク内で特定の装置とのみ通信する端末の増減の検出時、
前記端末の接続に関する情報を取得し、取得した当該端末の接続に関する情報に基づき、前記スイッチに接続された前記装置毎の種別および接続に関する第１情報、および前記装置毎のパケットの通信に関する第２情報を更新し、
更新した前記第１情報及び前記第２情報に基づき、前記プログラムを再プログラミングすることを特徴とする付記９に記載のプログラム作成方法。
【０１３９】
（付記１１）前記端末の増減の検出時、前記第１情報及び前記第２情報に基づき、前記装置毎のパケットの発着の装置、プロトコル、ポート、パケット転送先に関する配送ルール表を更新保持し、
前記配送ルール表と、前記第１情報の情報に基づき、前記スイッチを動作制御する前記プログラムを再プログラミングすることを特徴とする付記１０に記載のプログラム作成方法。
【０１４０】
（付記１２）ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）により、前記端末の接続に関する情報として、前記スイッチから当該スイッチのポート毎に接続された前記装置のアドレスを取得することを特徴とする付記１０または１１に記載のプログラム作成方法。
【０１４１】
（付記１３）ＬＬＤＰ（Ｌｉｎｋ  Ｌａｙｅｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）により、前記端末の接続に関する情報として、前記スイッチのポート毎に接続された前記装置のアドレスと、論理インタフェース番号を取得し、
前記論理インタフェース番号を前記スイッチの物理ポート番号に変換することを特徴とする付記１０または１１に記載のプログラム作成方法。
【０１４２】
（付記１４）ゲートウェイと、スイッチと、スイッチのコントローラと、解析装置とが配置されたネットワークシステムにおいて、
前記コントローラは、
前記スイッチが転送するパケットのうち、疑義のあるパケットを前記解析装置に振り分けるパケット転送ルールを有するスイッチ制御用のプログラムを作成する制御部を有し、
前記制御部は、前記スイッチに接続される端末の増減時に、前記端末の接続に関する情報を取得し、当該端末の接続に関する情報に基づき、前記プログラムを再プログラミングすることを特徴とするネットワークシステム。
【符号の説明】
【０１４３】
１００  ネットワークシステム
１１０  ゲートウェイ（ＧＷ）
１２０  スイッチ（ＯｐｅｎＦｌｏｗスイッチ）
１２５  プログラム作成装置（ＯｐｅｎＦｌｏｗコントローラ）
１３０  端末
１４０  パケット解析装置
７０１  通信定義表
７０２  スイッチ接続関係定義表
９０１  スイッチ情報取得部
９０２  構成表生成部
９０３  通信定義生成部
９０４  配送ルール生成部
９０５  プログラム変換部
９０６  ＯｐｅｎＦｌｏｗスイッチ制御部
９０７  記憶部
９１０  接続情報
９１１  サーバ接続定義表
９１２  サーバ通信定義表
９１３  端末通信定義表
９１４  配送ルール定義表
１００１  入出力インタフェース
１００２  ネットワークインタフェース
１００３  ＣＰＵ
１００４  メモリ
３１０１  ＬＬＤＰサーバ
ｐ  プログラム（ＯｐｅｎＦｌｏｗのプログラム）
【図１】
2019140515.tif 000003
【図２】
2019140515.tif 000004
【図３】
2019140515.tif 000005
【図４】
2019140515.tif 000006
【図５】
2019140515.tif 000007
【図６】
2019140515.tif 000008
【図７】
2019140515.tif 000009
【図８】
2019140515.tif 000010
【図９】
2019140515.tif 000011
【図１０】
2019140515.tif 000012
【図１１】
2019140515.tif 000013
【図１２】
2019140515.tif 000014
【図１３】
2019140515.tif 000015
【図１４】
2019140515.tif 000016
【図１５】
2019140515.tif 000017
【図１６】
2019140515.tif 000018
【図１７】
2019140515.tif 000019
【図１８】
2019140515.tif 000020
【図１９】
2019140515.tif 000021
【図２０】
2019140515.tif 000022
【図２１】
2019140515.tif 000023
【図２２】
2019140515.tif 000024
【図２３】
2019140515.tif 000025
【図２４】
2019140515.tif 000026
【図２５】
2019140515.tif 000027
【図２６】
2019140515.tif 000028
【図２７】
2019140515.tif 000029
【図２８】
2019140515.tif 000030
【図２９】
2019140515.tif 000031
【図３０】
2019140515.tif 000032
【図３１】
2019140515.tif 000033
【図３２】
2019140515.tif 000034
【図３３】
2019140515.tif 000035
【図３４】
2019140515.tif 000036