(57)【要約】      （修正有）【課題】アプリケーションの要求を動的にネットワーク制御プロトコルに変換し実行するための汎用的な仕組みを提供する。【解決手段】ネットワーク構成装置は、プログラム可能なネットワーク上のサービスを連携させるアプリケーションのためにネットワークを動的に構成するためのもので、アプリケーション要求を宣言的記述言語で記述した規則群を記憶する規則記憶手段を含む。規則群の各々は、条件群と、条件群が全て真のとき実行するアクションとを含む。この装置はさらに、ネットワークから通信状況に関する統計情報を受信するネットワーク情報受信手段と、規則群を逐次読出し、最新の統計情報に基づき、各規則について当該規則の条件群を全て評価する条件評価手段と、全ての条件群が充足された規則について、当該規則のアクションにしたがってネットワークをプログラムするコマンド列を生成するコマンド列生成手段とを含む。【選択図】図１１
2014086881.tif 000002
【特許請求の範囲】
【請求項１】
プログラム可能なネットワーク基盤に接続して用いられ、前記ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのために前記ネットワーク基盤を動的に構成するネットワーク構成装置であって、
前記アプリケーションによる前記ネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群を記憶するためのルール記憶手段を含み、
前記ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含み、
前記ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するためのネットワーク情報受信手段と、
前記ルール記憶手段から前記ルールを逐次読出し、前記ネットワーク情報受信手段が受信した最新の前記統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するための条件評価手段と、
前記条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがって前記ネットワーク基盤をプログラムするためのコマンド列を生成し、前記ネットワーク基盤を当該コマンド列により構成するためのコマンド列生成手段とを含む、ネットワーク構成装置。
【請求項２】
前記ネットワーク基盤には、当該ネットワーク基盤をプログラムするためのコマンド体系が異なる複数のネットワーク基盤があり、
前記ネットワーク構成装置はさらに、前記複数のネットワーク基盤の種類に応じ、前記宣言的サービスネットワーク記述言語により記述されたルールを当該ネットワーク基盤のコマンド列に変換するための辞書をそれぞれ記憶した複数の辞書記憶手段を含み、
前記コマンド列生成手段は、
生成すべきコマンド列の種類を指定する指示を受信するための指示受信手段と、
前記複数の辞書記憶手段に記憶された辞書のうちから、前記指示受信手段が受信した指示に対応する辞書を選択する辞書選択手段と、
前記条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがって前記ネットワーク基盤をプログラムするためのコマンド列を前記辞書選択手段により選択された辞書を用いて生成し、前記ネットワーク基盤を当該コマンド列により構成するための手段とを含む、請求項１に記載のネットワーク構成装置。
【請求項３】
前記条件評価手段による評価と、前記コマンド列生成手段によるコマンド列の生成とが繰返し実行されるよう、前記条件評価手段と前記コマンド列生成手段とを制御するための繰返制御手段をさらに含む、請求項１又は請求項２に記載のネットワーク構成装置。
【請求項４】
プログラム可能なネットワーク基盤に接続されたコンピュータを用い、前記ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのために前記ネットワーク基盤を動的に構成するネットワーク構成方法であって、
前記コンピュータが、前記アプリケーションによる前記ネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群をルール記憶手段に記憶するステップを含み、
前記ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含み、
前記コンピュータが、前記ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するステップと、
前記コンピュータが、前記ルール記憶手段から前記ルールを逐次読出し、前記ネットワーク情報受信手段が受信した最新の前記統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するステップと、
前記コンピュータが、前記条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがって前記ネットワーク基盤をプログラムするためのコマンド列を生成し、前記ネットワーク基盤を当該コマンド列により構成するステップとを含む、ネットワーク構成方法。
【請求項５】
プログラム可能なネットワーク基盤に接続して用いられ、前記ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのために前記ネットワーク基盤を動的に構成するネットワーク構成装置としてコンピュータを動作させるコンピュータプログラムであって、当該コンピュータプログラムは、前記コンピュータを、
前記アプリケーションによる前記ネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群を記憶するためのルール記憶手段として機能させ、
前記ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含み、
前記コンピュータプログラムはさらに、前記コンピュータを、
前記ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するためのネットワーク情報受信手段と、
前記ルール記憶手段から前記ルールを逐次読出し、前記ネットワーク情報受信手段が受信した最新の前記統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するための条件評価手段と、
前記条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがって前記ネットワーク基盤をプログラムするためのコマンド列を生成し、前記ネットワーク基盤を当該コマンド列により構成するためのコマンド列生成手段として動作させる、ネットワーク構成のためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はネットワークの構成技術に関し、特に、多種多様な情報サービスを組合せたネットワークアプリケーションを効率よく実行できるようにネットワーク構成を動的に調整する技術に関する。
【背景技術】
【０００２】
データ通信ネットワークの基盤整備が進み、アプリケーションが、ネットワークの高い処理能力を利用可能になっている。こうしたネットワークの拡張性は高く、今後もネットワークを介して利用可能なサービスが多種多様になっていくことは間違いない。
【０００３】
一方、こうしたネットワーク構成の調整は、これまでは一握りの専門家が行なえるだけで、一般的なユーザがネットワークを自己のアプリケーションにあわせて調整することはきわめて難しかった。これは、例えばネットワークが一企業又は１つの大学などに限定されている場合でも同様である。ときには予期せぬ事態が発生し、ネットワークの管理者でもその対応に苦慮することがある。
【０００４】
ところで、ネットワーク上で提供される様々なデータを、一定の目的のもとに、限られた時間内に収集し処理することが望ましいときがある。例えば、突発的な災害が発生したり予測されたりしたときに、それら災害による被害状況、災害をもたらす原因となる事象に関する情報などを大量に収集し、適時に処理することで、被害の拡大を予防したり、既に生じた被害に対して有効な対策を講じたりすることが可能になる。そのためには、ネットワーク上に分散する膨大な量のデータを収集し、多種多様な情報サービスを組合せ、効率よく実行することが必要になる。
【０００５】
そのようなアプリケーションを実現するためには、情報サービスの要求を的確かつ適時にネットワークに伝え、ネットワーク構成を動的に調整する技術が必要である。特に、突発的で想定を超えて発生する情報を、柔軟に経路を選定して適時に転送したり、膨大な情報を試行錯誤により分析したり、アプリケーションの緊急度又はデータの重要性に応じて情報サービスを提供したりする際に、情報サービスの要求に連動してネットワークを柔軟に構成し、ネットワークの管理及び展開コストが著しく上昇しないようにすることが望ましい。
【０００６】
しかし、通常のネットワークの場合、一方では、アプリケーション開発者が新たなサービス連携をオンデマンドで作成しようとしても、既に設定されたネットワークのパスしか利用できず、サービスに適した形でネットワークの性能を最大限に引き出すことができないという問題がある。他方、ネットワーク管理者は、予め想定した条件内でネットワークを構築するため、予想を超えるトラフィックの発生等が生じても、リアルタイム性高く対応できないという問題がある。
【０００７】
こうした問題を解決し、ネットワークを柔軟に構成するための基礎的な技術として、後掲の非特許文献１に記載されたＳｏｆｔｗａｒｅ−Ｄｅｆｉｎｅｄ−Ｎｅｔｗｏｒｋ（ＳＤＮ）と呼ばれるものがある。ＳＤＮは、ネットワークのトポロジ及びＱｏＳ（Ｑｕｏｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）をソフトウェアで設定し、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）又はコマンドを呼出すことにより物理ネットワークを構成する技術である。ＳＤＮによれば、ソフトウェアのプログラミングと同様に、ネットワーク構成をプログラミングすることが可能になる。このＳＤＮを実現する代表的な技術として、ＯｐｅｎＦｌｏｗと呼ばれるものが知られている。
【０００８】
図１を参照して、ＯｐｅｎＦｌｏｗによるネットワーク３０は、実際に通信を行なうＯｐｅｎＦｌｏｗスイッチ５０，５２，５４及び５６等を含むスイッチ群４０と、スイッチ群４０の状態を監視し、制御を行なうＯｐｅｎＦｌｏｗコントローラ４２とを含む。ＯｐｅｎＦｌｏｗプロトコルと呼ばれる手順でＯｐｅｎＦｌｏｗコントローラ４２を介してスイッチ群４０内の各スイッチによるスイッチングを動的に制御できる。
【０００９】
ＯｐｅｎＦｌｏｗとは別に、ネットワーク上で送信先までの帯域を予約し、通信品質を保証したネットワーク経路を確保するためのプロトコルとして、後掲の非特許文献２に記載されたＲＳＶＰと呼ばれるものがある。ベストエフォート型のネットワークでは、どのデータも平等に扱われる。これに対し、動画像配信等は、即時性、連続性が求められる。ＲＳＶＰは、このような即時性、連続性が求められるトラフィックを優先させる通信経路を予約する目的で開発された。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Ｍ．Ｎｉｃｋ，Ａ．Ｔｏｍ，Ｂ．Ｈａｒｉ，Ｐ．Ｇｕｒｕ，Ｐ．Ｌａｒｒｙ，Ｒ．Ｊｅｎｎｉｆｅｒ，Ｓ．Ｓｃｏｔ  ａｎｄ  Ｔ．Ｊｏｎａｔｈａｎ．“ＯｐｅｎＦｌｏｗ：Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”，ＳＩＧＣＯＭＭ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｒｅｖｉｅｗ，  ｐｐ．６９−７４，２００８．
【非特許文献２】Ｒｅｓｏｕｒｃｅ  ＲｅＳｅｒＶａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＲＳＶＰ），ＩＥＴＦ  ＲＦＣ２２０５（１９９７）
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ＯｐｅｎＦｌｏｗ及びＲＳＶＰは、いずれも、ＡＰＩ又はコマンドによりネットワーク構成を可能にしている。しかし、これらを使用した場合でも、依然として、アプリケーションの開発者がアプリケーションごとにネットワーク制御プログラムを内部に実装したり、ネットワーク管理者が手作業でネットワーク構成をプログラミングしたりしなければならない。上記したプログラム可能なネットワークの機能を活用して、多種多様な情報サービスを連携させるアプリケーションの要求を、より的確にかつ適時にネットワークに伝え、動的にネットワーク構成を調整することが可能な技術が求められている。
【００１２】
それゆえに、本発明の目的は、アプリケーションの要求を動的にネットワーク制御プロトコルに変換し実行するための汎用的な仕組みを実現するネットワーク構成装置及び方法、並びにそのためのコンピュータプログラムを提供することである。
【課題を解決するための手段】
【００１３】
本発明の第１の局面に係るネットワーク構成装置は、プログラム可能なネットワーク基盤に接続して用いられ、ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのためにネットワーク基盤を動的に構成するネットワーク構成装置である。この装置は、アプリケーションによるネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群を記憶するためのルール記憶手段を含む。ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含む。この装置はさらに、ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するためのネットワーク情報受信手段と、ルール記憶手段からルールを逐次読出し、ネットワーク情報受信手段が受信した最新の統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するための条件評価手段と、条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがってネットワーク基盤をプログラムするためのコマンド列を生成し、ネットワーク基盤を当該コマンド列により構成するためのコマンド列生成手段とを含む。
【００１４】
この発明によれば、ルール記憶手段にルール群を記憶させておくと、ネットワーク情報受信手段が、ネットワークの通信状況に関する情報を繰返し受信する。条件評価手段は、ルールを逐次読出し、その条件群が充足されているか否かを評価する。コマンド列生成手段は、条件が全て充足されていると評価されたルールについて、そのアクションにしたがってネットワーク基盤を構成するためのコマンド列を生成する。そのコマンド列にしたがってネットワーク基盤が構成される。
【００１５】
アプリケーションの変更にあわせてルール群が変更されたり、ネットワークの通信状況が変化してルールの条件の充足状況が変化したりすると、そのたびに条件評価手段によるルール中の条件群の評価が変化し、コマンド列生成手段によるコマンド列の生成結果も変化する。アプリケーションの変更又はネットワークの状況に応じ、アクションが実行されるルールが変化し、その結果、ネットワーク基盤が、アプリケーションの変更又はネットワークの状況に応じてアプリケーションの要求に合致するように構成される。こうした動きは、アプリケーションの種類及びアプリケーションが使用する情報サービスの種類によらない。
【００１６】
その結果、アプリケーションの要求を動的にネットワーク制御プロトコルに変換し実行するための汎用的な仕組みを実現するネットワーク構成装置を提供できる。
【００１７】
好ましくは、ネットワーク基盤には、当該ネットワーク基盤をプログラムするためのコマンド体系が異なる複数のネットワーク基盤がある。ネットワーク構成装置はさらに、複数のネットワーク基盤の種類に応じ、宣言的サービスネットワーク記述言語により記述されたルールを当該ネットワーク基盤のコマンド列に変換するための辞書をそれぞれ記憶した複数の辞書記憶手段を含む。コマンド列生成手段は、生成すべきコマンド列の種類を指定する指示を受信するための指示受信手段と、複数の辞書記憶手段に記憶された辞書のうちから、指示受信手段が受信した指示に対応する辞書を選択する辞書選択手段と、条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがってネットワーク基盤をプログラムするためのコマンド列を辞書選択手段により選択された辞書を用いて生成し、ネットワーク基盤を当該コマンド列により構成するための手段とを含む。
【００１８】
より好ましくは、ネットワーク構成装置はさらに、条件評価手段による評価と、コマンド列生成手段によるコマンド列の生成とが繰返し実行されるよう、条件評価手段とコマンド列生成手段とを制御するための繰返制御手段を含む。
【００１９】
本発明の第２の局面に係るネットワーク構成方法は、プログラム可能なネットワーク基盤に接続されたコンピュータを用い、ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのためにネットワーク基盤を動的に構成するネットワーク構成方法である。この方法は、コンピュータが、アプリケーションによるネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群をルール記憶手段に記憶するステップを含む。ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含む。この方法はさらに、コンピュータが、ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するステップと、コンピュータが、ルール記憶手段からルールを逐次読出し、ネットワーク情報受信手段が受信した最新の統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するステップと、コンピュータが、条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがってネットワーク基盤をプログラムするためのコマンド列を生成し、ネットワーク基盤を当該コマンド列により構成するステップとを含む。
【００２０】
本発明の第３の局面に係るコンピュータプログラムは、プログラム可能なネットワーク基盤に接続して用いられ、ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのためにネットワーク基盤を動的に構成するネットワーク構成装置としてコンピュータを動作させる。当該コンピュータプログラムは、コンピュータを、アプリケーションによるネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群を記憶するためのルール記憶手段として機能させる。ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含む。コンピュータプログラムはさらに、コンピュータを、ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するためのネットワーク情報受信手段と、ルール記憶手段からルールを逐次読出し、ネットワーク情報受信手段が受信した最新の統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するための条件評価手段と、条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがってネットワーク基盤をプログラムするためのコマンド列を生成し、ネットワーク基盤を当該コマンド列により構成するためのコマンド列生成手段として動作させる。
【図面の簡単な説明】
【００２１】
【図１】プログラム可能なネットワークの構成を示す図である。
【図２】本発明の実施の形態に係る、情報サービスによるネットワーク制御システムの概略構成を示すブロック図である。
【図３】図２に示すシステムで情報サービスの要求を記述するために使用される宣言的サービスネットワーク（Declarative  Service  Networking）記述言語によるＤＳＮ記述の例を模式的に示す図である。
【図４】ＤＳＮ記述言語における要素とその説明とを表形式で示す図である。
【図５】ＤＳＮ記述言語で使用される基本的述語とその説明とを表形式で示す図である。
【図６】ＤＳＮ記述言語で使用される述語とその説明とを表形式で示す図である。
【図７】本発明の実施の形態に係るシステムにより、ＤＳＮ記述言語から生成される、ＯｐｅｎＦｌｏｗネットワークに対するＮＣＰＳ（Network  Control  Protocol  Stack）のコマンド例を表形式で説明する図である。
【図８】本発明の実施の形態に係るシステムにより、ＤＳＮ記述言語から生成される、ＰＩＡＸネットワークに対するＮＣＰＳのコマンド例を表形式で説明する図である。
【図９】本発明の実施の形態に係るシステムによる、ＤＳＮ記述からＯｐｅｎＦｌｏｗのＮＣＰＳコマンド列への変換ルールの例を表形式で示す図である。
【図１０】本発明の実施の形態に係るシステムによる、ＤＳＮ記述からＰＩＡＸ（P2P  Interactive  Agent  eXtensions）のＮＣＰＳコマンド列への変換ルールの例を表形式で示す図である。
【図１１】本発明の実施の形態に係るシステムにおいて、ＤＳＮ記述をＮＣＰＳコマンド列に変換するインタープリタプログラムの制御構造を示す図である。
【図１２】本発明の実施の形態に係るシステムにおいて、ＤＳＮ記述をＮＣＰＳコマンド列に変換するインタープリタが動作するコンピュータシステムの概観を示す図である。
【図１３】図１２に示すコンピュータシステムのハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下の説明及び図面では、同一の部品には同一の参照番号を付してある。したがって、それらについての詳細な説明は繰返さない。
［構成］
図２を参照して、本発明の実施の形態に係るネットワーク制御システム７０は、アプリケーション要求を記述したＤＳＮ記述１０２を出力するアプリケーションレイヤ８０と、ネットワーク構成を制御するＮＣＰＳレイヤ８４と、アプリケーションレイヤ８０及びＮＣＰＳレイヤ８４の中間に位置し、ＤＳＮ記述１０２を随時解釈してＮＣＰＳレイヤ８４に与えるＯｐｅｎＦｌｏｗ制御コマンドシーケンス１０６又はＰＩＡＸ制御コマンドシーケンス１１０を出力するミドルウェア８２とを含む。
【００２３】
ＤＳＮは、アプリケーションが様々な情報サービスを連携させる際のルールをステートメントとして記述する。以下の説明では、ＤＳＮ記述内の各ステートメントを単に「ルール」と呼ぶ。例えば、「あるサービスを実行するには、他のあるサービスの処理結果が必要で、かつその結果は特定の条件を満たしている」等というルールをＤＳＮとして記述する。これらのルールは、何を行なうかを記述するのみの宣言的記述であり、処理をどのように実行するかについての手続きには触れない。
【００２４】
ＮＣＰＳは、異なるネットワークプロトコルごとに、ネットワークを制御するためのコマンド集合を定義する。具体的には、ＮＣＰＳは以下のようなコマンドを含む。
【００２５】
（１）特定の情報サービスが稼働しているネットワークノードを検索するためのコマンド群、
（２）ノード間に通信経路（パス）を作成するためのコマンド群、及び、
（３）ノードの状態を監視するコマンド群。
【００２６】
例えば、ＯｐｅｎＦｌｏｗの場合、ノード検索はノードリストの参照コマンド、経路作成はパスの設定コマンド、状態監視はスイッチ統計情報集約コマンドによって実装される。
【００２７】
アプリケーションレイヤ８０は、本実施の形態では所望のサービス連携を記述し、そのサービス連携を実現するために必要なネットワークの仕様をＤＳＮ記述１０２として出力するアプリケーション１００を含む。アプリケーション１００は、コンピュータのＧＵＩを用いてサービス間の連携をネットワークダイアグラム形式で記述する。アプリケーション１００において、サービス連携の内容が変更されると、ＤＳＮ記述１０２もその変更に応じて変更される。
【００２８】
ミドルウェア８２は、アプリケーションレイヤ８０が出力するＤＳＮ記述１０２を記憶するＤＳＮ記憶部１１８と、ＮＣＰＳレイヤ８４から受信するネットワーク状況を監視しながら、ＤＳＮ記述１０２を繰返して解釈することにより、ＤＳＮ記述１０２に記述されたアプリケーション要求及びメッセージ交換パターンを実現するように、ＯｐｅｎＦｌｏｗ制御コマンドシーケンス１０６又はＰＩＡＸ制御コマンドシーケンス１１０を出力するインタープリタ１０４と、ＤＳＮのルールをＮＣＰＳの制御コマンド列に変換する際にインタープリタ１０４が利用する、変換ルールを記述した辞書１１４及び１１６を含む。辞書１１４はＯｐｅｎＦｌｏｗのための辞書であり、辞書１１６はＰＩＡＸのための辞書である。なおここでいう「変換ルール」は、ＤＳＮ記述内の「ルール」とは異なるものである点に注意が必要である。
【００２９】
なお、インタープリタ１０４は、ＤＳＮ記述１０２により指定されるネットワークがＯｐｅｎＦｌｏｗによるものか、ＰＩＡＸによるものかに応じて、ＯｐｅｎＦｌｏｗ制御コマンドシーケンス１０６又はＰＩＡＸ制御コマンドシーケンス１１０の一方を選択的に生成する。具体的には、インタープリタ１０４は、ＤＳＮ記述１０２がＯｐｅｎＦｌｏｗを指定しているかＰＩＡＸを使用しているかにより、辞書１１４を使用するか辞書１１６を使用するかを決定する。以下の説明では、説明を明瞭にするために、この選択については詳細には説明しない。
【００３０】
ＮＣＰＳレイヤ８４は、ＯｐｅｎＦｌｏｗネットワーク８６に接続され、ＯｐｅｎＦｌｏｗ制御コマンドシーケンス１０６を実行することによりフローテーブルを作成し、このフローテーブルを用いてＯｐｅｎＦｌｏｗネットワーク８６の各スイッチを制御するためのＯｐｅｎＦｌｏｗネットワークコントローラ１０８と、ＰＩＡＸネットワーク８８に接続され、ＰＩＡＸ制御コマンドシーケンス１１０にしたがってルーティングテーブルを作成し、このルーティングテーブルを用いて配下のＰＩＡＸネットワーク８８を構成する各ピアを制御するための複数のＰＩＡＸネットワークコントローラ１１２とを含む。これら複数のＰＩＡＸネットワークコントローラ１１２は、自律分散的に動作する。
【００３１】
図３を参照して、ＤＳＮ記述１０２の１行目の“Ｏｖｅｒｌａｙ  ＧｅｏＳｏｃｉａｌＡｐｐ”は、このＤＳＮ記述により構成される仮想的ネットワーク（これを「オーバーレイ」と呼ぶ。）の名称が“ＧｅｏＳｏｃｉａｌＡｐｐ”であることを示す。
【００３２】
２行目、４行目、７行目の「／／」は、同じ行のこの後の文字列がコメントであることを示す。インタープリタ１０４はＤＳＮの解釈にあたりコメントを無視する。
【００３３】
３行目、５行目、６行目、８行目及び９行目は実質的なＤＳＮ記述のルールである。各ルールは、以下のような文法にしたがう。
【００３４】
ラベル  アクション＜〜イベント，条件１、…、条件Ｎ
このルールは、条件１、…、条件Ｎの全てがＴＲＵＥになったときに、特定のイベントが発生したら、「＜〜」の左に記載されたアクションを実行する、というものである。アクションを表す文字列をアクション述語、イベントに相当する文字列をイベント述語と呼ぶ。この型から分かるように、ＤＳＮはＰｒｏｌｏｇのステートメントと同様、何を行なうかのみを宣言する宣言的記述であって、それをどのように行なうかを記述する手続的記述ではない。もちろん、ルールの記述方法は上記したものに限定されず、宣言的記述であればどのような記述方法を用いてもよい。
【００３５】
図４を参照して、ラベルは各ルールを識別するためのものであり、１つのＤＳＮ記述内で重複さえなければどのような値を記述してもよい。
【００３６】
アクション述語は、条件１、…、条件Ｎが全てＴＲＵＥのとき、次に実行されるアクションを示す。イベント述語は、実行されるイベントを示す。
【００３７】
条件は、例えば、ネットワークの状態がある条件を充足しているか否か等に関連するものであり、アクション述語により表されるアクションを実行するか否かを定める条件である。
【００３８】
例えば図３の３行目において、「Ｒ１」はラベル、「ＲＥＧＩＳＴ（ＧｅＷＥ）」はアクション述語、「ＩＤＥＮＴ」はイベント述語であり、これ以外に特に条件はない。したがって、インタープリタ１０４は、このルールを読んだ場合、他の条件にかかわらずＩＤＥＮＴというイベントが発生すると、ＲＥＧＩＳＴというアクションを実行する。ＲＥＧＩＳＴというアクション述語の次のカッコ、及びＩＤＥＮＴというイベント述語の次のカッコ内には、これらのアクション述語及びイベント述語にそれぞれ付随するパラメータが列挙されている。パラメータはアクション述語及びイベント述語により異なる。
【００３９】
図５を参照して、基本的なイベント述語を説明する。なお、ここに示したものは単なる例に過ぎないことに注意すべきである。「ＩＤＥＮＴ」は、アプリケーションＩＤ情報の登録要求を発行することを示す。パラメータは例えばサービス名、クラス、キー等、あらかじめ決められた順番で、又はキーワードとともに記述する。サービス名はサービスを識別するための名前である。クラスは、このサービスがどのような種類のサービスかを示す。キーは、ＩＰアドレスより細かい粒度で論理ネットワークを特定するためのものである。
【００４０】
「ＲＥＱＵＥＳＴ」は、アプリケーションからのメッセージ送信イベントを発行することを示す。
【００４１】
「ＲＥＳＰＯＮＳＥ」は、アプリケーションへの受信イベントを発行することを示す。
【００４２】
図６には、図５に示したものも含めて、述語がどのような場合に使用されるかを示す。例えば、ＳｅｎｄＯｎｌｙという述語は、一方通行のメッセージを送信することを示す。図５にも示した「Ｒｅｑｕｅｓｔ」及び「Ｒｅｓｐｏｎｓｅ」は、メッセージが送信されて、応答が受信される要求―応答のペアで構成された非同期の通信である。これに対し、「Ｉｎｔｅｒａｃｔｉｖｅ」は、メッセージが送信されてそれに対する応答が受信される要求―応答のペアのパターンで構成される、同期型の通信を示す。
【００４３】
この他、「ＡｇｇｒｉｇａｔｅＲｅｑｕｅｓｔ」はＲｅｑｕｅｓｔ述語の派生型であって、応答する際にその他のサービスデータを収集して返送する非同期の通信、「ＡｇｇｒｉｇａｔｅＩｎｔｅｒａｃｔｉｖｅ」はＩｎｔｅｒａｃｔｉｖｅ述語の派生型であって、応答する際にその他のサービスデータを収集して返送する同期型の通信、ＳｅｑｕｅｎｃｅＲｅｑｕｅｓｔはＲｅｑｕｅｓｔ述語の派生型であって、応答する際にその他のサービスデータを順番に返送する非同期型の通信、ＳｅｑｕｅｎｃｅＩｎｔｅｒａｃｔｉｖｅはＩｎｔｅｒａｃｔｉｖｅ述語の派生形であって、応答する際にそのほかのサービスデータを順番に返送する同期型の通信である。「Ｐｕｂｌｉｓｈ」及び「Ｓｕｂｓｃｒｉｂｅ」は、購読−出版型であって、指定のチャンネルで購読（Ｓｕｂｓｃｒｉｂｅ）を受取ったノード全てに対して出版（Ｐｕｂｌｉｓｈ）する通信を示す。この型の述語は、特定のサービスが発行する情報のうち、ある条件を満たしたもののみを受信したい場合などに利用される。
【００４４】
インタープリタ１０４がＯｐｅｎＦｌｏｗネットワークコントローラ１０８のために生成するＮＣＰＳコマンド列は、ＯｐｅｎＦｌｏｗにおいて定められたスイッチ制御コマンド列である。図７には、それらコマンドの一部の例と、その説明とを示す。
【００４５】
図７を参照して、「ＲＧＴ」は、パラメータで指定されたサービス情報をＯｐｅｎＦｌｏｗネットワークコントローラ１０８のサービスリスト（図示せず）に登録するためのコマンドである。図７に示す例では、パラメータとして「ＳｒｖＮａｍｅ」、「Ｋｅｙ」、「ＩＰ」、「ｌｉｓｔｅｎｐｏｒｔ」、及び「Ｂｅｈａｖｉｏｒ」が定められている。これらは順にサービス名、サービスを提供するサーバの、ＩＰアドレスよりも粒度の細かいアドレス情報であるキー、サービスを提供するサーバのＩＰアドレス、サーバが使用するポート番号、及びサービスのタイプを示す。
【００４６】
ＳＲＨコマンドは、登録されたサービスを検索するためのものである。パラメータとしては、ＳｖｒＮａｍｅ，Ｂｅｈａｖｉｏｒ，Ｋｅｙのいずれかを指定できる。このコマンドを実行することにより、特定のタイプのサービスを提供するサーバからの返答が得られ、そのサービスがどこで提供されているのかを知ることができる。
【００４７】
ＣＰコマンドはサービス間の通信パスの構築依頼コマンドである。あるサービスから別のサービスに情報を渡すことが必要な場合、それら２つのサービスを指定してＣＰコマンドを発行することにより、ＯｐｅｎＦｌｏｗネットワークコントローラ１０８がこの２つのサービスを提供するノード間の通信パスを生成する。このとき、ＯｐｅｎＦｌｏｗネットワークコントローラ１０８からはこの通信パスのＩＤが返される。
【００４８】
ＵＰコマンドは、通信パスのＩＤを指定して、生成済みの通信パスをアップデートすることを依頼するコマンドである。例えばあるサービスからあるサービスへの通信パスのＱｏＳが低下し、指定された要求速度を下回ったり、別のサービスを利用することが選択されたりしたときには、通信パスを設定し直す必要がある。そうしたときにこのコマンドが使用される。
【００４９】
ＣＭコマンドは、通信パスのＩＤを指定して要求を出すためのコマンドである。例えばその通信パスにおいて一定以上の帯域を確保するときなどに使用される。
【００５０】
ｓｈｏｗコマンドは、通信パス若しくはスイッチのＩＤ、又はサービス名を指定して、指定された通信パス、スイッチ、又はサービスの状態等を収集する際に用いられるコマンドである。
【００５１】
これら以外にもＯｐｅｎＦｌｏｗでは様々なコマンドがあるが、ここでは説明を簡潔にするためにそれらに関する詳細は説明しない。
【００５２】
図８に、ＰＩＡＸに対するＮＣＰＳコマンドの例を示す。ＰＩＡＸの場合、図７に示したコマンドと同種のコマンドに加え、ＡＤＤＯＬ、ＵＰＬ、ＳＰＬＩＴＯＬ、ＳＵＭＯＬなどのコマンドがある。これらは、ＰＩＡＸがいわゆるＰ２Ｐ通信を基礎としていることに由来する。ＡＤＤＯＬは、ＰＩＡＸにおける概念である「オーバーレイ」をネットワークに登録することを示す。オーバーレイとは、物理ネットワーク上に、ＰＩＡＸにより構築された一種の仮想ネットワークのことをいう。
【００５３】
ＣＰコマンドは、ＰＩＡＸではピア間に論理リンクを構築することを依頼するコマンドである。ＵＰＬは、このピア間の論理リンクのアップデート命令であって、ＯｐｅｎＦｌｏｗのＵＰコマンドに対応する。
【００５４】
ＳＰＬＩＴＯＬコマンドは、オーバーレイを分割するためのコマンドであり、ＳＵＭＯＬは逆にオーバーレイを集合させるためのコマンド、ＤＥＬＴＯＬはオーバーレイを解散させるためのコマンドである。
【００５５】
インタープリタは、入力されるＤＳＮによりＯｐｅｎＦｌｏｗ及びＰＩＡＸのいずれのＮＣＰＳコマンド列を生成するかを決定し、ＤＳＮの各ルールを、パラメータを含めて、対応するＮＣＰＳコマンド列に変換する。その変換ルールは、ＤＳＮの述語及びそのパラメータを対応する１又は複数のＮＣＰＳコマンド及びそのパラメータに対応付けることにより行なわれる。
【００５６】
図９に、ＤＳＮのルールとＯｐｅｎＦｌｏｗのＮＣＰＳコマンドとの対応関係の一部を示す。ＤＳＮの記述のための規約とＮＣＰＳコマンドの記述のコマンドとはそれぞれ規定されており、両者の対応付けは明確に行なえる。したがってここでは一部の変換ルールを示し、全ての変換ルールを説明することはしない。
【００５７】
なお、この変換に際しては、ＤＳＮの１ルールに対して複数個のＮＣＰＳコマンドが対応する場合があることに注意する必要がある。
【００５８】
図９を参照して、ＤＳＮの述語「ＲＥＧＩＳＴ」はサービスの登録を要求するための述語であって、ＯｐｅｎＦｌｏｗではＲＧＴコマンドがこれに対応する。図３のＤＳＮ記述１０２のラベル＝Ｒ１の行から分かるように、述語「ＲＥＧＩＳＴ」が実行される際には、ルール右辺のイベント述語のパラメータが渡される。このパラメータの意味はそれぞれ、対応して記述されるキーワード、又はパラメータの記述順序により決定される。ＲＧＴコマンドでは、例えばサービス名、キー、サービスを提供するノードのＩＰアドレス、登録されるサービスのタイプ等を指定する必要があるが、これらは述語「ＲＥＧＩＳＴ」の実行により与えられる。
【００５９】
図９の表中、ＤＳＮの２つめのアクション述語ＦＩＮＤは、ネットワーク上で所望のサービスを検索することを求める述語である。これは、ＯｐｅｎＦｌｏｗではＳＲＨコマンドに対応する。ＦＩＮＤ及びＳＲＨはいずれも所望のサービスのタイプを指定することになっているので、ＦＩＮＤ述語に与えられるパラメータをそのままＳＲＨコマンドに与えればよい。
【００６０】
ＤＳＮの３番目のアクション述語ＳＥＮＤで、２つのサービスＳ１及びＳ２が指定されたときには、あるサービス（Ｓ１により指定される。）から別のサービス（Ｓ２により指定される。）にメッセージを送信することを規定する。パラメータは起点及び終点のサービス名である。これは、サービスＳ１とサービスＳ２との間のパスを定め、そのパスを使用してメッセージをサービスＳ１からサービスＳ２に送信することを意味する。ＯｐｅｎＦｌｏｗでは、この述語は、状況によりＣＰコマンド又はＵＰコマンドに対応する。ＣＰコマンドは、新たにサービス間のパスを定めるためのコマンドである。このコマンドにより、指定されたサービスとサービスとの間にパスが定められ、そのパスＩＤが戻り値として返ってくる。一方、ＵＰコマンドは、生成済みのパスを変更するためのコマンドである。たとえばパスの終点のサービスを他のサービスに変更したりするときに用いられる。パスＩＤを指定したＵＰコマンドを発行することにより、メッセージ送信のためのパスとして、それまでのパスに代えてＵＰコマンドにより指定されるパスが新たに使用される。
【００６１】
一方、図９の４行目に示されるように、ＳＥＮＤ命令で２つのサービスに加え、これら以外のパラメータが指定された場合には、２つのサービス間のパスについて、指定されたパラメータにしたがって構成を変更することを意味する。例えばパラメータとして「Ｓ１，Ｓ２，“１０００＜＝ＳａｍｐｌｅＲａｔｅ（ｋｂｉｔ／ｓ  ｏｒ  Ｐａｇｅ／ｓ）”」がパラメータとして与えられた場合、サービスＳ１からサービスＳ２へのパスにおいて、サンプルレートが１０００ページ／秒以上となるようにこれらの間のパスのＱｏＳを変更することを意味する。なお、ここではページ単位でＷｅｂページをクローリングしているため、帯域はＰａｇｅ／ｓで指定している。しかし、１ページ当たりのサイズが推定できる場合には、帯域をｋｂｉｔ／ｓで指定することもできる。ＯｐｅｎＦｌｏｗでこれに対応するコマンドは、ＣＭコマンドである。サービスＳ１及びＳ２の間のパスのパスＩＤ、及び、指定されたサンプルレートから計算される、このパスに設定すべきＱｏＳの値がパラメータとしてＣＭコマンドに与えられる。
【００６２】
他の命令についても、以上と同様、ＤＳＮのアクション述語及びその発行の条件となる各種条件からＮＣＰＳコマンドを生成できる様に変換ルールを作成して辞書１１４に記憶させておき、インタープリタ１０４で辞書１１４を用いて変換作業を実行すればよい。
【００６３】
同様の考えがＰＩＡＸにも適用できる。図１０を参照して、ＰＩＡＸの場合には、ＯｐｅｎＦｌｏｗに対して実装された各種変換ルールは、可能な場合にはそのまま利用し、それ以外の、辞書１１６に記憶されたＰＩＡＸ特有の処理の変換ルールを用いてインタープリタ１０４により変換する。
【００６４】
そのような変換ルールが必要となるアクション述語の１つがＬＡＵＮＣＨである。この述語は、ＰＩＡＸによるネットワークにおいて、オーバーレイと呼ばれる仮想ネットワークを構築することを指定する述語であり、アプリケーション名と、使用するサービスのタイプと、その数とをパラメータとする。この述語は、例えば、ＰＩＡＸのＳＲＨ、ＣＰＰ、ＡＤＤＯＬという３種類のコマンドの組合せに変換される。ＳＲＨはＯｐｅｎＦｌｏｗの場合と同様のコマンドであり、サービスの種類を指定してサービスを検索するために使用される。ＣＰＰは、ＯｐｅｎＦｌｏｗの場合のＣＰと同様のコマンドであり、オーバーレイ間のパスを生成することを指定する。このコマンドの実行により、パスのリンクＩＤが戻り値として返される。ＣＰＰコマンドは、サービス間で必要とされるパスの数だけ生成する必要がある。この数はＬＡＵＮＣＨのパラメータとして与えられる。ＳＲＨ命令で検索されたサービスのうち、どれを使用するかについては任意であり、例えば乱数でランダムに選択すればよい。ＡＤＤＯＬコマンドは、ＰＩＡＸネットワークにオーバーレイを追加するための命令である。ＡＤＤＯＬコマンドに必要なパラメータも、アクション述語若しくはアクション述語を含むルールの条件に対応して生成されたコマンドの実行結果から得ることができる。
【００６５】
図１０には、アクション述語として、ＬＡＵＮＣＨのほかに、ＦＩＮＤ、ＳＥＮＤを挙げてある。ＦＩＮＤはＯｐｅｎＦｌｏｗの場合と同様の機能を持つが、検索の対象がサービスではなくピア又はオーバーレイである点がＯｐｅｎＦｌｏｗと異なる。ＳＥＮＤは、ＯｐｅｎＦｌｏｗの場合と異なり、オーバーレイのためのルーティングテーブルを生成することを指定する。ＰＩＡＸのＮＣＰＳとして生成されるコマンドは、ＳＥＮＤ命令にどのようなパラメータが与えられたかにより異なる。例えばＳＥＮＤ（Ｐｒｏｃｅｓｓｏｒ，Ａｒｃｈｉｖｅ，ＷｅａｔｈｅｒＳｅｎｓｏｒ）のように、メッセージを送信するサービスが複数個指定されると、インタープリタは、指定された順番にしたがったルーティングパスをＣＰＰ命令で指定する。
【００６６】
述語ＳＥＮＤにリンクＩＤが付されると、そのリンクＩＤにより指定されるリンクの経路の設定をＳＥＮＤ述語による指定にしたがって変更するためのＵＰＬコマンドが生成される。生成されるＵＰＬコマンドには、リンクＩＤと、指定された条件をそのリンクに設定するためのパラメータとが指定される。
【００６７】
図１０の末行のＳＥＮＤには、メッセージ送信元のサービスのタイプ及び送信先のサービスのタイプと、“１０００＜ＳａｍｐｌｅＲａｔｅ（ｋｂｉｔ／ｓ  ｏｒ  Ｐａｇｅ／ｓ）”等のような条件がパラメータとして付されている。この場合、インタープリタは、指定されたタイプのサービスを検索する複数のコマンドＳＲＨと、検索されたサーバのうちから選択されたサーバ間にパスを生成するコマンドＣＰＰと、生成されたパスを、ＳＥＮＤのパラメータによる指定にしたがって設定するコマンドＣＭＰとを生成する。
【００６８】
これらのほかにも様々な変換ルールが考えられるが、それらについてはＤＳＮの記述とＮＣＰＳのコマンド記述との関係にしたがって適切に設定し、辞書１１４又は１１６に格納しておけばよい。
【００６９】
この実施の形態に係るインタープリタ１０４（図２を参照）は、コンピュータプログラム（以下単に「プログラム」と呼ぶ。）により実現される。図１１を参照して、このプログラムは、ネットワーク制御システム７０の起動とともに起動され、作業に必要な記憶領域を確保したり、記憶領域に初期値を格納したり、必要な情報を収集して記憶領域に格納したりする初期化処理を実行するステップ２００と、与えられたＤＳＮ記述内のルールの全てに対して後述のステップ２０４を実行することにより各ＤＳＮ命令の条件を評価するステップ２０２と、ステップ２０２の処理の後、与えられたルールの全てについて後述のステップ２０８を実行し、制御をステップ２０２に戻すステップ２０６とを含む。
【００７０】
ステップ２０４は、処理対象のルールを読むステップ２４０と、ステップ２４０で読んだルールの右辺の各項目がＴＲＵＥか否かを評価してステップ２０４を終了するステップ２４２とを含む。
【００７１】
ステップ２６０は、処理対象のルールの右辺について、ステップ２０４で評価された結果、全ての項目がＴＲＵＥか否かを判定するステップ２６０と、ステップ２６０の判定が肯定のときに、ルールの左辺に記載されたアクションを、ＮＣＰＳコマンド列に変換するステップ２６２と、ステップ２６２の終了後、及びステップ２６０の判定が否定のときに実行され、処理対象のルール右辺の評価結果を全てクリアしてステップ２０８を終了するステップ２６４とを含む。前述したとおり、ステップ２６２での変換には、ＯｐｅｎＦｌｏｗ及びＰＩＡＸのいずれがＤＳＮに指定されているかにより、辞書１１４又は１１６のいずれかを選択してＤＳＮのアクション記述に対応する変換規則を読出し、ＮＣＰＳコマンド列に変換する。
【００７２】
［動作］
ネットワーク制御システム７０の動作は比較的単純である。まず、ユーザがアプリケーション１００を操作してＤＳＮ記述１０２を生成する。この場合、ユーザはアプリケーション１００を操作することにより、アプリケーションを構成するサービス間のつながりを抽象的に表し、そのつながりに対応するＤＳＮ記述１０２をアプリケーション１００が生成する。又は、アプリケーション１００の助けを使わず、アプリケーションを設計したユーザが直接ＤＳＮ記述１０２を記述してもよい。そしてこのＤＳＮ記述１０２をインタープリタ１０４への入力に指定し、インタープリタ１０４に処理を依頼する。
【００７３】
インタープリタ１０４は、ネットワーク制御システム７０が起動すると初期化（図１１のステップ２００）を実行し、初期化に成功すると以下のような動きを繰返す。すなわち、インタープリタ１０４は、ユーザが指定したＤＳＮ記述内のルールを読む（図１１のステップ２０４）。ルールは、ＤＳＮの先頭から１つずつ読込まれる。インタープリタ１０４はさらに、読込んだルール右辺の条件の各々についてＴＲＵＥか否かを評価する。この条件の中には、ネットワークの状態に関するものもある。それらは、図２に示すＯｐｅｎＦｌｏｗネットワークコントローラ１０８又はＰＩＡＸネットワークコントローラ１１２によりインタープリタ１０４に与えられる。ＯｐｅｎＦｌｏｗネットワークコントローラ１０８及びＰＩＡＸネットワークコントローラ１１２は常にネットワークの状態を監視しており、トラフィックの状況、ネットワークの遅延状況などの統計的情報をリアルタイムでインタープリタ１０４に送信する。
【００７４】
本実施の形態では、インタープリタ１０４は、図１１のステップ２４０及び２４２をＤＳＮ記憶部１１８に記憶されているＤＳＮ記述内の全てのルールについて実行する。
【００７５】
全てのルールについて図１１のステップ２４０及び２４２の実行が終了すると、インタープリタ１０４は、再びＤＳＮ記述１０２の先頭のルールに戻り、その右辺の各項目が全てＴＲＵＥか否かを判定する（ステップ２６０）。右辺の項目のうち、１つでもＦＡＬＳＥのものがあれば（ステップ２６０でＮＯ）、インタープリタ１０４はこのルールについて左辺のアクションを実行せず、右辺の全項目の評価をクリアして（ステップ２６４）、次のルールに進む（ステップ２６０）。ステップ２６０でルール右辺の全項目がＴＲＵＥであれば、インタープリタ１０４はステップ２６２を実行する。すなわち、ステップ２６２ではインタープリタ１０４は、処理対象のルール左辺のアクション述語を、右辺の条件と、予め決められ辞書１１４又は１１６に格納された変換ルールとにしたがって、対象となるＮＣＰＳコマンド又はＮＣＰＳコマンド列に変換する。その後、ルール右辺の各項目の評価を全てクリアして（ステップ２６４）、制御をステップ２６０に戻す。ＤＳＮの末尾のルールまで処理が終了すると、インタープリタ１０４は制御をステップ２０２（図１１）に戻し、以下、ステップ２０２及び２０６を繰返し実行する。
【００７６】
こうしたインタープリタ１０４の処理により、一連のＮＣＰＳコマンド列が生成され、そのコマンド列によってＯｐｅｎＦｌｏｗネットワーク８６又はＰＩＡＸネットワーク８８の構成に変更が加えられる。
【００７７】
こうした処理の途中でユーザがＤＳＮ記憶部１１８にあるルールを書換えたとする。すると、インタープリタ１０４による図１１のプログラムの実行中に、書換えた結果にしたがって図１１のステップ２０２及び２０６の処理内容が変更される。その結果、ＯｐｅｎＦｌｏｗ制御コマンドシーケンス１０６又はＰＩＡＸ制御コマンドシーケンス１１０の内容もリアルタイムで変更される。さらに、ＯｐｅｎＦｌｏｗネットワークコントローラ１０８又はＰＩＡＸネットワークコントローラ１１２がこれらコマンドシーケンスの変更に伴ってＯｐｅｎＦｌｏｗネットワーク８６及びＰＩＡＸネットワーク８８の構成を変更するので、ユーザがアプリケーションに変更を加えたときにも、そのアプリケーションの要求にしたがって最適な構成となるように、ネットワークが再構成される。その結果、ユーザがアプリケーションを途中で変更しても、ただちにその変更がネットワーク構成に反映される。
【００７８】
さらに、ＯｐｅｎＦｌｏｗネットワーク８６及びＰＩＡＸネットワーク８８などのネットワークの状態が変化し、インタープリタ１０４の処理により最初に設定されたパスの通信速度が低下したような場合には、図１１のステップ２４２でのルールの右辺の条件が変化し、評価結果が変化する。すると、その変化に応じてルール左辺の各アクションを実行するか否かが変化する。その結果、例えば条件を充足するサービスの探索と、パスの設定とが再実行され、アプリケーション要求を満たすようにネットワークが再構築される。その結果、ネットワークの状況が変化しても、ミドルウェア８２及びＮＣＰＳレイヤ８４のレベルのみでアプリケーション要求にあうようなネットワークの調整を行なうことができる。
【００７９】
ＤＳＮ記述は何を行なうかを宣言するのみの宣言的記述であり、それをどのように実行するかについては触れない。本実施の形態では、そのＤＳＮ記述内の各ルールをインタープリタ１０４により逐次解釈してアクションを実行していく。各ルールにより決まるアクションを実行するか否かは、ルール右辺の各項目の評価により決定される。この評価には、ネットワークの現在の状況を反映させることができる。この結果、以下のような利点がもたらされる。
【００８０】
（１）ネットワークを制御するプロトコルの違いによる影響を受けずにサービス連携をルールとして定義できる。
【００８１】
（２）そのため、異なるプロトコルのネットワークをＤＳＮ記述により透過的に制御できる。
【００８２】
（３）ＤＳＮ記憶部１１８中のＤＳＮ記述内にルールを追加したり、ルールを変更したりするだけで、アプリケーションの挙動をその実行中でも変更できる。
【００８３】
（４）ＤＳＮのルールの解釈にネットワークの状況の評価結果を反映させることができるため、ＤＳＮルールを変更しなくても、ネットワークの状況に応じてアプリケーション要求を充足するようにネットワーク構成を動的に調整できる。
【００８４】
こうした構成により、突発的なアプリケーションの要求に対しても、そのアプリケーションを実現するためのサービス連携を記述するＤＳＮ記述を作成することで、ネットワークを動的にかつ継続的に再構築できる。アプリケーション開発者にとっては、ネットワークの性能をより効果的に利用できるようになる。ネットワーク管理者にとっては、アプリケーションの開発者の要求に対してネットワークの再設定を行なう必要がない。そのためネットワーク管理者の管理負荷を軽減できる。
【００８５】
本実施の形態のシステムは、災害時など、既存システムで想定していない事態が発生した際に特に威力を発揮する。例えば、ネットワークの高い処理性能と拡張性とを生かしながら、膨大な情報を組合せて集約・分析したり、情報サービスの代替サービスを発見し提供したり、一定の時間の間のみ、ネットワークを再構成して大量の情報を効率よく収集し処理したりすることが可能になる。刻々と変化する状況に対応して、既存の情報サービスを様々に組合せて所望の情報を得たりすることも可能になる。
【００８６】
自然災害又は社会現象など、多種多様なセンシング情報を、アプリケーション開発者が指定した条件に基づいて、オンデマンドに収集・解析するカスタムメイドな仮想センサを構築したりできる。そうしたアプリケーションでは、ネットワーク上で種々のサービスを提供するサーバからのセンシング情報を収集したり保存したりする条件をアプリケーションの開発者が追加したり変更したりするたびに、対応する情報サービス間のやり取りを定義したＤＳＮ記述を生成し、これをインタープリタにより逐次解釈し実行する。この結果、ノードの検索、パスの作成・変更などのネットワーク制御コマンドがＤＳＮ記述から生成され、仮想センシングネットワークが動的に再構成される。さらに、ネットワークの状態を常に監視し、ノードの変更又はパスの輻輳などが発生しても、ＤＳＮ記述に指定された条件の評価結果に基づいて、自律的にネットワークを再構築できる。
【００８７】
なお、上記実施の形態では、ＤＳＮ記述により対象のネットワーク基盤がＯｐｅｎＦｌｏｗによるものかＰＩＡＸによるものかを指定している。しかし本発明はそのような実施の形態には限定されない。例えばユーザがＤＳＮ記述とは別に入力してもよいし、インタープリタ１０４が対象となるネットワーク基盤と通信することにより自動的に判断するようにしてもよい。
【００８８】
［コンピュータによる実現］
この実施の形態のシステム、特にミドルウェア８２を実行する部分は、コンピュータハードウェアと、そのコンピュータハードウェアにより実行されるプログラムと、コンピュータハードウェアに格納されるデータとにより実現される。図１２はこのコンピュータシステム３３０の外観を示し、図１３はコンピュータシステム３３０の内部構成を示す。
【００８９】
図１２を参照して、このコンピュータシステム３３０は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）ドライブ３５０を有するコンピュータ３４０と、いずれもコンピュータ３４０に接続されたキーボード３４６、マウス３４８、及びモニタ３４２とを含む。
【００９０】
図１３を参照して、コンピュータ３４０は、ＤＶＤドライブ３５０に加えて、ＣＰＵ３５６と、バス３６６とを含む。ＣＰＵ３５６及びＤＶＤドライブ３５０は、いずれもバス３６６に接続されている。コンピュータ３４０はさらに、ブートアッププログラム等を記憶するＲＯＭ３５８と、バス３６６に接続され、プログラム命令、システムプログラム、及び作業データ等を記憶するＲＡＭ３６０と、プリンタ３４４と、ローカルエリアネットワーク（ＬＡＮ）３６４を介してインターネット等のネットワークへの接続を提供するネットワークインターフェイスカード（ＮＩＣ）３５２とを含む。
【００９１】
コンピュータシステム３３０により実行される、インタープリタ１０４を実現するコンピュータプログラムは、ＤＶＤドライブ３５０に挿入されるＤＶＤ３６２に記憶され、さらにハードディスク３５４に転送される。又は、プログラムはＬＡＮ３６４を通じてインターネット上の他のサーバからコンピュータ３４０に送信されハードディスク３５４に記憶されてもよい。辞書１１４及び１１６についても同様である。プログラム、辞書１１４及び１１６は、プログラムの実行の際にＲＡＭ３６０にロードされる。ＤＶＤ３６２から、又はＬＡＮ３６４を介して、直接にＲＡＭ３６０にプログラム等をロードしてもよい。
【００９２】
コンピュータプログラムの流通媒体はＤＶＤに限定されない。ＣＤ−ＲＯＭでもよいし、フレキシブルデバイス、ＵＳＢメモリ、リムーバブルディスク、光磁気記録媒体などのいずれの媒体でもよい。
【００９３】
インタープリタ１０４の実体であるプログラムは、コンピュータ３４０にこのインタープリタ１０４としての動作を行なわせる複数の命令を含む。この動作を行なわせるのに必要な基本的機能のいくつかはコンピュータ３４０上で動作するＯＳ若しくはサードパーティのプログラム、又はコンピュータ３４０にインストールされる各種ソフトウェアツールキットにより提供される。したがって、このプログラムはこの実施の形態のシステム及び方法を実現するのに必要な機能の全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように図１１に示したように制御されたやり方で適切な機能又は「ツール」を呼出すことにより、上記したインタープリタ１０４としての動作を実行する命令のみを含んでいればよい。コンピュータシステム３３０の動作は周知であるので、ここでは繰返さない。
【００９４】
辞書１１４及び１１６、ＤＳＮ記述、ＮＣＰＳコマンド列などは、本実施の形態ではいずれもＲＡＭ３６０に記憶される。
【００９５】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内での全ての変更を含む。
【符号の説明】
【００９６】
３０  ネットワーク
４０  スイッチ群
４２  ＯｐｅｎＦｌｏｗコントローラ
５０，５２，５４、５６  スイッチ
７０  ネットワーク制御システム
８０  アプリケーションレイヤ
８２  ミドルウェア
８４  ＮＣＰＳレイヤ
８６  ＯｐｅｎＦｌｏｗネットワーク
８８  ＰＩＡＸネットワーク
１００  アプリケーション
１０２  ＤＳＮ記述
１０４  インタープリタ
１０６  ＯｐｅｎＦｌｏｗ制御コマンドシーケンス
１０８  ＯｐｅｎＦｌｏｗネットワークコントローラ
１１０  ＰＩＡＸ制御コマンドシーケンス
１１２  ＰＩＡＸネットワークコントローラ
１１４  ＯｐｅｎＦｌｏｗ用辞書
１１６  ＰＩＡＸ用辞書
【図１】
2014086881.tif 000003
【図２】
2014086881.tif 000004
【図３】
2014086881.tif 000005
【図４】
2014086881.tif 000006
【図５】
2014086881.tif 000007
【図６】
2014086881.tif 000008
【図７】
2014086881.tif 000009
【図８】
2014086881.tif 000010
【図９】
2014086881.tif 000011
【図１０】
2014086881.tif 000012
【図１１】
2014086881.tif 000013
【図１２】
2014086881.tif 000014
【図１３】
2014086881.tif 000015