【新規性喪失の例外の表示】特許法第30条第2項適用 平成24年6月11日 一般社団法人電子情報通信学会発行の「電子情報通信学会技術研究報告(信学技報)、第112巻、第77号、第7〜12頁」に発表 平成24年6月13日 「Interop Tokyo 2012」幕張メッセにて展示 平成24年10月1日 独立行政法人情報通信研究機構発行の「NICT NEWS 10月号、第421号、第1〜4頁」に発表
(58)【調査した分野】(Int.Cl.,DB名)
プログラム可能なネットワーク基盤に接続して用いられ、前記ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのために前記ネットワーク基盤を動的に構成するネットワーク構成装置であって、
前記アプリケーションによる前記ネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群を記憶するためのルール記憶手段を含み、
前記ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含み、
前記ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するためのネットワーク情報受信手段と、
前記ルール記憶手段から前記ルールを逐次読出し、前記ネットワーク情報受信手段が受信した最新の前記統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するための条件評価手段と、
前記条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがって前記ネットワーク基盤をプログラムするためのコマンド列を生成し、前記ネットワーク基盤を当該コマンド列により構成するためのコマンド列生成手段とを含む、ネットワーク構成装置。
前記条件評価手段による評価と、前記コマンド列生成手段によるコマンド列の生成とが繰返し実行されるよう、前記条件評価手段と前記コマンド列生成手段とを制御するための繰返制御手段をさらに含む、請求項1又は請求項2に記載のネットワーク構成装置。
プログラム可能なネットワーク基盤に接続されたコンピュータを用い、前記ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのために前記ネットワーク基盤を動的に構成するネットワーク構成方法であって、
前記コンピュータが、前記アプリケーションによる前記ネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群をルール記憶手段に記憶するステップを含み、
前記ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含み、
前記コンピュータが、前記ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するステップと、
前記コンピュータが、前記ルール記憶手段から前記ルールを逐次読出し、前記ネットワーク情報受信手段が受信した最新の前記統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するステップと、
前記コンピュータが、前記条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがって前記ネットワーク基盤をプログラムするためのコマンド列を生成し、前記ネットワーク基盤を当該コマンド列により構成するステップとを含む、ネットワーク構成方法。
プログラム可能なネットワーク基盤に接続して用いられ、前記ネットワーク基盤上で提供される情報サービスを連携させるアプリケーションのために前記ネットワーク基盤を動的に構成するネットワーク構成装置としてコンピュータを動作させるコンピュータプログラムであって、当該コンピュータプログラムは、前記コンピュータを、
前記アプリケーションによる前記ネットワーク基盤の構成に関する要求を宣言的サービスネットワーク記述言語により記述したルール群を記憶するためのルール記憶手段として機能させ、
前記ルールの各々は、条件群と、当該条件群が全て真のときに実行すべきアクションとを含み、
前記コンピュータプログラムはさらに、前記コンピュータを、
前記ネットワーク基盤から当該ネットワーク基盤における通信状況に関する統計情報を繰返し受信するためのネットワーク情報受信手段と、
前記ルール記憶手段から前記ルールを逐次読出し、前記ネットワーク情報受信手段が受信した最新の前記統計情報に基づいて、各ルールについて当該ルールの条件群を全て評価するための条件評価手段と、
前記条件評価手段により全ての条件群が充足されていると評価されたルールの各々について、当該ルールのアクションにしたがって前記ネットワーク基盤をプログラムするためのコマンド列を生成し、前記ネットワーク基盤を当該コマンド列により構成するためのコマンド列生成手段として動作させる、ネットワーク構成のためのコンピュータプログラム。
【背景技術】
【0002】
データ通信ネットワークの基盤整備が進み、アプリケーションが、ネットワークの高い処理能力を利用可能になっている。こうしたネットワークの拡張性は高く、今後もネットワークを介して利用可能なサービスが多種多様になっていくことは間違いない。
【0003】
一方、こうしたネットワーク構成の調整は、これまでは一握りの専門家が行なえるだけで、一般的なユーザがネットワークを自己のアプリケーションにあわせて調整することはきわめて難しかった。これは、例えばネットワークが一企業又は1つの大学などに限定されている場合でも同様である。ときには予期せぬ事態が発生し、ネットワークの管理者でもその対応に苦慮することがある。
【0004】
ところで、ネットワーク上で提供される様々なデータを、一定の目的のもとに、限られた時間内に収集し処理することが望ましいときがある。例えば、突発的な災害が発生したり予測されたりしたときに、それら災害による被害状況、災害をもたらす原因となる事象に関する情報などを大量に収集し、適時に処理することで、被害の拡大を予防したり、既に生じた被害に対して有効な対策を講じたりすることが可能になる。そのためには、ネットワーク上に分散する膨大な量のデータを収集し、多種多様な情報サービスを組合せ、効率よく実行することが必要になる。
【0005】
そのようなアプリケーションを実現するためには、情報サービスの要求を的確かつ適時にネットワークに伝え、ネットワーク構成を動的に調整する技術が必要である。特に、突発的で想定を超えて発生する情報を、柔軟に経路を選定して適時に転送したり、膨大な情報を試行錯誤により分析したり、アプリケーションの緊急度又はデータの重要性に応じて情報サービスを提供したりする際に、情報サービスの要求に連動してネットワークを柔軟に構成し、ネットワークの管理及び展開コストが著しく上昇しないようにすることが望ましい。
【0006】
しかし、通常のネットワークの場合、一方では、アプリケーション開発者が新たなサービス連携をオンデマンドで作成しようとしても、既に設定されたネットワークのパスしか利用できず、サービスに適した形でネットワークの性能を最大限に引き出すことができないという問題がある。他方、ネットワーク管理者は、予め想定した条件内でネットワークを構築するため、予想を超えるトラフィックの発生等が生じても、リアルタイム性高く対応できないという問題がある。
【0007】
こうした問題を解決し、ネットワークを柔軟に構成するための基礎的な技術として、後掲の非特許文献1に記載されたSoftware−Defined−Network(SDN)と呼ばれるものがある。SDNは、ネットワークのトポロジ及びQoS(Quolity of Service)をソフトウェアで設定し、API(Application Programming Interface)又はコマンドを呼出すことにより物理ネットワークを構成する技術である。SDNによれば、ソフトウェアのプログラミングと同様に、ネットワーク構成をプログラミングすることが可能になる。このSDNを実現する代表的な技術として、OpenFlowと呼ばれるものが知られている。
【0008】
図1を参照して、OpenFlowによるネットワーク30は、実際に通信を行なうOpenFlowスイッチ50,52,54及び56等を含むスイッチ群40と、スイッチ群40の状態を監視し、制御を行なうOpenFlowコントローラ42とを含む。OpenFlowプロトコルと呼ばれる手順でOpenFlowコントローラ42を介してスイッチ群40内の各スイッチによるスイッチングを動的に制御できる。
【0009】
OpenFlowとは別に、ネットワーク上で送信先までの帯域を予約し、通信品質を保証したネットワーク経路を確保するためのプロトコルとして、後掲の非特許文献2に記載されたRSVPと呼ばれるものがある。ベストエフォート型のネットワークでは、どのデータも平等に扱われる。これに対し、動画像配信等は、即時性、連続性が求められる。RSVPは、このような即時性、連続性が求められるトラフィックを優先させる通信経路を予約する目的で開発された。
【発明を実施するための形態】
【0022】
以下の説明及び図面では、同一の部品には同一の参照番号を付してある。したがって、それらについての詳細な説明は繰返さない。
[構成]
図2を参照して、本発明の実施の形態に係るネットワーク制御システム70は、アプリケーション要求を記述したDSN記述102を出力するアプリケーションレイヤ80と、ネットワーク構成を制御するNCPSレイヤ84と、アプリケーションレイヤ80及びNCPSレイヤ84の中間に位置し、DSN記述102を随時解釈してNCPSレイヤ84に与えるOpenFlow制御コマンドシーケンス106又はPIAX制御コマンドシーケンス110を出力するミドルウェア82とを含む。
【0023】
DSNは、アプリケーションが様々な情報サービスを連携させる際のルールをステートメントとして記述する。以下の説明では、DSN記述内の各ステートメントを単に「ルール」と呼ぶ。例えば、「あるサービスを実行するには、他のあるサービスの処理結果が必要で、かつその結果は特定の条件を満たしている」等というルールをDSNとして記述する。これらのルールは、何を行なうかを記述するのみの宣言的記述であり、処理をどのように実行するかについての手続きには触れない。
【0024】
NCPSは、異なるネットワークプロトコルごとに、ネットワークを制御するためのコマンド集合を定義する。具体的には、NCPSは以下のようなコマンドを含む。
【0025】
(1)特定の情報サービスが稼働しているネットワークノードを検索するためのコマンド群、
(2)ノード間に通信経路(パス)を作成するためのコマンド群、及び、
(3)ノードの状態を監視するコマンド群。
【0026】
例えば、OpenFlowの場合、ノード検索はノードリストの参照コマンド、経路作成はパスの設定コマンド、状態監視はスイッチ統計情報集約コマンドによって実装される。
【0027】
アプリケーションレイヤ80は、本実施の形態では所望のサービス連携を記述し、そのサービス連携を実現するために必要なネットワークの仕様をDSN記述102として出力するアプリケーション100を含む。アプリケーション100は、コンピュータのGUIを用いてサービス間の連携をネットワークダイアグラム形式で記述する。アプリケーション100において、サービス連携の内容が変更されると、DSN記述102もその変更に応じて変更される。
【0028】
ミドルウェア82は、アプリケーションレイヤ80が出力するDSN記述102を記憶するDSN記憶部118と、NCPSレイヤ84から受信するネットワーク状況を監視しながら、DSN記述102を繰返して解釈することにより、DSN記述102に記述されたアプリケーション要求及びメッセージ交換パターンを実現するように、OpenFlow制御コマンドシーケンス106又はPIAX制御コマンドシーケンス110を出力するインタープリタ104と、DSNのルールをNCPSの制御コマンド列に変換する際にインタープリタ104が利用する、変換ルールを記述した辞書114及び116を含む。辞書114はOpenFlowのための辞書であり、辞書116はPIAXのための辞書である。なおここでいう「変換ルール」は、DSN記述内の「ルール」とは異なるものである点に注意が必要である。
【0029】
なお、インタープリタ104は、DSN記述102により指定されるネットワークがOpenFlowによるものか、PIAXによるものかに応じて、OpenFlow制御コマンドシーケンス106又はPIAX制御コマンドシーケンス110の一方を選択的に生成する。具体的には、インタープリタ104は、DSN記述102がOpenFlowを指定しているかPIAXを使用しているかにより、辞書114を使用するか辞書116を使用するかを決定する。以下の説明では、説明を明瞭にするために、この選択については詳細には説明しない。
【0030】
NCPSレイヤ84は、OpenFlowネットワーク86に接続され、OpenFlow制御コマンドシーケンス106を実行することによりフローテーブルを作成し、このフローテーブルを用いてOpenFlowネットワーク86の各スイッチを制御するためのOpenFlowネットワークコントローラ108と、PIAXネットワーク88に接続され、PIAX制御コマンドシーケンス110にしたがってルーティングテーブルを作成し、このルーティングテーブルを用いて配下のPIAXネットワーク88を構成する各ピアを制御するための複数のPIAXネットワークコントローラ112とを含む。これら複数のPIAXネットワークコントローラ112は、自律分散的に動作する。
【0031】
図3を参照して、DSN記述102の1行目の“Overlay GeoSocialApp”は、このDSN記述により構成される仮想的ネットワーク(これを「オーバーレイ」と呼ぶ。)の名称が“GeoSocialApp”であることを示す。
【0032】
2行目、4行目、7行目の「//」は、同じ行のこの後の文字列がコメントであることを示す。インタープリタ104はDSNの解釈にあたりコメントを無視する。
【0033】
3行目、5行目、6行目、8行目及び9行目は実質的なDSN記述のルールである。各ルールは、以下のような文法にしたがう。
【0034】
ラベル アクション<〜イベント,条件1、…、条件N
このルールは、条件1、…、条件Nの全てがTRUEになったときに、特定のイベントが発生したら、「<〜」の左に記載されたアクションを実行する、というものである。アクションを表す文字列をアクション述語、イベントに相当する文字列をイベント述語と呼ぶ。この型から分かるように、DSNはPrologのステートメントと同様、何を行なうかのみを宣言する宣言的記述であって、それをどのように行なうかを記述する手続的記述ではない。もちろん、ルールの記述方法は上記したものに限定されず、宣言的記述であればどのような記述方法を用いてもよい。
【0035】
図4を参照して、ラベルは各ルールを識別するためのものであり、1つのDSN記述内で重複さえなければどのような値を記述してもよい。
【0036】
アクション述語は、条件1、…、条件Nが全てTRUEのとき、次に実行されるアクションを示す。イベント述語は、実行されるイベントを示す。
【0037】
条件は、例えば、ネットワークの状態がある条件を充足しているか否か等に関連するものであり、アクション述語により表されるアクションを実行するか否かを定める条件である。
【0038】
例えば
図3の3行目において、「R1」はラベル、「REGIST(GeWE)」はアクション述語、「IDENT」はイベント述語であり、これ以外に特に条件はない。したがって、インタープリタ104は、このルールを読んだ場合、他の条件にかかわらずIDENTというイベントが発生すると、REGISTというアクションを実行する。REGISTというアクション述語の次のカッコ、及びIDENTというイベント述語の次のカッコ内には、これらのアクション述語及びイベント述語にそれぞれ付随するパラメータが列挙されている。パラメータはアクション述語及びイベント述語により異なる。
【0039】
図5を参照して、基本的なイベント述語を説明する。なお、ここに示したものは単なる例に過ぎないことに注意すべきである。「IDENT」は、アプリケーションID情報の登録要求を発行することを示す。パラメータは例えばサービス名、クラス、キー等、あらかじめ決められた順番で、又はキーワードとともに記述する。サービス名はサービスを識別するための名前である。クラスは、このサービスがどのような種類のサービスかを示す。キーは、IPアドレスより細かい粒度で論理ネットワークを特定するためのものである。
【0040】
「REQUEST」は、アプリケーションからのメッセージ送信イベントを発行することを示す。
【0041】
「RESPONSE」は、アプリケーションへの受信イベントを発行することを示す。
【0042】
図6には、
図5に示したものも含めて、述語がどのような場合に使用されるかを示す。例えば、SendOnlyという述語は、一方通行のメッセージを送信することを示す。
図5にも示した「Request」及び「Response」は、メッセージが送信されて、応答が受信される要求―応答のペアで構成された非同期の通信である。これに対し、「Interactive」は、メッセージが送信されてそれに対する応答が受信される要求―応答のペアのパターンで構成される、同期型の通信を示す。
【0043】
この他、「AggrigateRequest」はRequest述語の派生型であって、応答する際にその他のサービスデータを収集して返送する非同期の通信、「AggrigateInteractive」はInteractive述語の派生型であって、応答する際にその他のサービスデータを収集して返送する同期型の通信、SequenceRequestはRequest述語の派生型であって、応答する際にその他のサービスデータを順番に返送する非同期型の通信、SequenceInteractiveはInteractive述語の派生形であって、応答する際にそのほかのサービスデータを順番に返送する同期型の通信である。「Publish」及び「Subscribe」は、購読−出版型であって、指定のチャンネルで購読(Subscribe)を受取ったノード全てに対して出版(Publish)する通信を示す。この型の述語は、特定のサービスが発行する情報のうち、ある条件を満たしたもののみを受信したい場合などに利用される。
【0044】
インタープリタ104がOpenFlowネットワークコントローラ108のために生成するNCPSコマンド列は、OpenFlowにおいて定められたスイッチ制御コマンド列である。
図7には、それらコマンドの一部の例と、その説明とを示す。
【0045】
図7を参照して、「RGT」は、パラメータで指定されたサービス情報をOpenFlowネットワークコントローラ108のサービスリスト(図示せず)に登録するためのコマンドである。
図7に示す例では、パラメータとして「SrvName」、「Key」、「IP」、「listenport」、及び「Behavior」が定められている。これらは順にサービス名、サービスを提供するサーバの、IPアドレスよりも粒度の細かいアドレス情報であるキー、サービスを提供するサーバのIPアドレス、サーバが使用するポート番号、及びサービスのタイプを示す。
【0046】
SRHコマンドは、登録されたサービスを検索するためのものである。パラメータとしては、SvrName,Behavior,Keyのいずれかを指定できる。このコマンドを実行することにより、特定のタイプのサービスを提供するサーバからの返答が得られ、そのサービスがどこで提供されているのかを知ることができる。
【0047】
CPコマンドはサービス間の通信パスの構築依頼コマンドである。あるサービスから別のサービスに情報を渡すことが必要な場合、それら2つのサービスを指定してCPコマンドを発行することにより、OpenFlowネットワークコントローラ108がこの2つのサービスを提供するノード間の通信パスを生成する。このとき、OpenFlowネットワークコントローラ108からはこの通信パスのIDが返される。
【0048】
UPコマンドは、通信パスのIDを指定して、生成済みの通信パスをアップデートすることを依頼するコマンドである。例えばあるサービスからあるサービスへの通信パスのQoSが低下し、指定された要求速度を下回ったり、別のサービスを利用することが選択されたりしたときには、通信パスを設定し直す必要がある。そうしたときにこのコマンドが使用される。
【0049】
CMコマンドは、通信パスのIDを指定して要求を出すためのコマンドである。例えばその通信パスにおいて一定以上の帯域を確保するときなどに使用される。
【0050】
showコマンドは、通信パス若しくはスイッチのID、又はサービス名を指定して、指定された通信パス、スイッチ、又はサービスの状態等を収集する際に用いられるコマンドである。
【0051】
これら以外にもOpenFlowでは様々なコマンドがあるが、ここでは説明を簡潔にするためにそれらに関する詳細は説明しない。
【0052】
図8に、PIAXに対するNCPSコマンドの例を示す。PIAXの場合、
図7に示したコマンドと同種のコマンドに加え、ADDOL、UPL、SPLITOL、SUMOLなどのコマンドがある。これらは、PIAXがいわゆるP2P通信を基礎としていることに由来する。ADDOLは、PIAXにおける概念である「オーバーレイ」をネットワークに登録することを示す。オーバーレイとは、物理ネットワーク上に、PIAXにより構築された一種の仮想ネットワークのことをいう。
【0053】
CPコマンドは、PIAXではピア間に論理リンクを構築することを依頼するコマンドである。UPLは、このピア間の論理リンクのアップデート命令であって、OpenFlowのUPコマンドに対応する。
【0054】
SPLITOLコマンドは、オーバーレイを分割するためのコマンドであり、SUMOLは逆にオーバーレイを集合させるためのコマンド、DELTOLはオーバーレイを解散させるためのコマンドである。
【0055】
インタープリタは、入力されるDSNによりOpenFlow及びPIAXのいずれのNCPSコマンド列を生成するかを決定し、DSNの各ルールを、パラメータを含めて、対応するNCPSコマンド列に変換する。その変換ルールは、DSNの述語及びそのパラメータを対応する1又は複数のNCPSコマンド及びそのパラメータに対応付けることにより行なわれる。
【0056】
図9に、DSNのルールとOpenFlowのNCPSコマンドとの対応関係の一部を示す。DSNの記述のための規約とNCPSコマンドの記述のコマンドとはそれぞれ規定されており、両者の対応付けは明確に行なえる。したがってここでは一部の変換ルールを示し、全ての変換ルールを説明することはしない。
【0057】
なお、この変換に際しては、DSNの1ルールに対して複数個のNCPSコマンドが対応する場合があることに注意する必要がある。
【0058】
図9を参照して、DSNの述語「REGIST」はサービスの登録を要求するための述語であって、OpenFlowではRGTコマンドがこれに対応する。
図3のDSN記述102のラベル=R1の行から分かるように、述語「REGIST」が実行される際には、ルール右辺のイベント述語のパラメータが渡される。このパラメータの意味はそれぞれ、対応して記述されるキーワード、又はパラメータの記述順序により決定される。RGTコマンドでは、例えばサービス名、キー、サービスを提供するノードのIPアドレス、登録されるサービスのタイプ等を指定する必要があるが、これらは述語「REGIST」の実行により与えられる。
【0059】
図9の表中、DSNの2つめのアクション述語FINDは、ネットワーク上で所望のサービスを検索することを求める述語である。これは、OpenFlowではSRHコマンドに対応する。FIND及びSRHはいずれも所望のサービスのタイプを指定することになっているので、FIND述語に与えられるパラメータをそのままSRHコマンドに与えればよい。
【0060】
DSNの3番目のアクション述語SENDで、2つのサービスS1及びS2が指定されたときには、あるサービス(S1により指定される。)から別のサービス(S2により指定される。)にメッセージを送信することを規定する。パラメータは起点及び終点のサービス名である。これは、サービスS1とサービスS2との間のパスを定め、そのパスを使用してメッセージをサービスS1からサービスS2に送信することを意味する。OpenFlowでは、この述語は、状況によりCPコマンド又はUPコマンドに対応する。CPコマンドは、新たにサービス間のパスを定めるためのコマンドである。このコマンドにより、指定されたサービスとサービスとの間にパスが定められ、そのパスIDが戻り値として返ってくる。一方、UPコマンドは、生成済みのパスを変更するためのコマンドである。たとえばパスの終点のサービスを他のサービスに変更したりするときに用いられる。パスIDを指定したUPコマンドを発行することにより、メッセージ送信のためのパスとして、それまでのパスに代えてUPコマンドにより指定されるパスが新たに使用される。
【0061】
一方、
図9の4行目に示されるように、SEND命令で2つのサービスに加え、これら以外のパラメータが指定された場合には、2つのサービス間のパスについて、指定されたパラメータにしたがって構成を変更することを意味する。例えばパラメータとして「S1,S2,“1000<=SampleRate(kbit/s or Page/s)”」がパラメータとして与えられた場合、サービスS1からサービスS2へのパスにおいて、サンプルレートが1000ページ/秒以上となるようにこれらの間のパスのQoSを変更することを意味する。なお、ここではページ単位でWebページをクローリングしているため、帯域はPage/sで指定している。しかし、1ページ当たりのサイズが推定できる場合には、帯域をkbit/sで指定することもできる。OpenFlowでこれに対応するコマンドは、CMコマンドである。サービスS1及びS2の間のパスのパスID、及び、指定されたサンプルレートから計算される、このパスに設定すべきQoSの値がパラメータとしてCMコマンドに与えられる。
【0062】
他の命令についても、以上と同様、DSNのアクション述語及びその発行の条件となる各種条件からNCPSコマンドを生成できる様に変換ルールを作成して辞書114に記憶させておき、インタープリタ104で辞書114を用いて変換作業を実行すればよい。
【0063】
同様の考えがPIAXにも適用できる。
図10を参照して、PIAXの場合には、OpenFlowに対して実装された各種変換ルールは、可能な場合にはそのまま利用し、それ以外の、辞書116に記憶されたPIAX特有の処理の変換ルールを用いてインタープリタ104により変換する。
【0064】
そのような変換ルールが必要となるアクション述語の1つがLAUNCHである。この述語は、PIAXによるネットワークにおいて、オーバーレイと呼ばれる仮想ネットワークを構築することを指定する述語であり、アプリケーション名と、使用するサービスのタイプと、その数とをパラメータとする。この述語は、例えば、PIAXのSRH、CPP、ADDOLという3種類のコマンドの組合せに変換される。SRHはOpenFlowの場合と同様のコマンドであり、サービスの種類を指定してサービスを検索するために使用される。CPPは、OpenFlowの場合のCPと同様のコマンドであり、オーバーレイ間のパスを生成することを指定する。このコマンドの実行により、パスのリンクIDが戻り値として返される。CPPコマンドは、サービス間で必要とされるパスの数だけ生成する必要がある。この数はLAUNCHのパラメータとして与えられる。SRH命令で検索されたサービスのうち、どれを使用するかについては任意であり、例えば乱数でランダムに選択すればよい。ADDOLコマンドは、PIAXネットワークにオーバーレイを追加するための命令である。ADDOLコマンドに必要なパラメータも、アクション述語若しくはアクション述語を含むルールの条件に対応して生成されたコマンドの実行結果から得ることができる。
【0065】
図10には、アクション述語として、LAUNCHのほかに、FIND、SENDを挙げてある。FINDはOpenFlowの場合と同様の機能を持つが、検索の対象がサービスではなくピア又はオーバーレイである点がOpenFlowと異なる。SENDは、OpenFlowの場合と異なり、オーバーレイのためのルーティングテーブルを生成することを指定する。PIAXのNCPSとして生成されるコマンドは、SEND命令にどのようなパラメータが与えられたかにより異なる。例えばSEND(Processor,Archive,WeatherSensor)のように、メッセージを送信するサービスが複数個指定されると、インタープリタは、指定された順番にしたがったルーティングパスをCPP命令で指定する。
【0066】
述語SENDにリンクIDが付されると、そのリンクIDにより指定されるリンクの経路の設定をSEND述語による指定にしたがって変更するためのUPLコマンドが生成される。生成されるUPLコマンドには、リンクIDと、指定された条件をそのリンクに設定するためのパラメータとが指定される。
【0067】
図10の末行のSENDには、メッセージ送信元のサービスのタイプ及び送信先のサービスのタイプと、“1000<SampleRate(kbit/s or Page/s)”等のような条件がパラメータとして付されている。この場合、インタープリタは、指定されたタイプのサービスを検索する複数のコマンドSRHと、検索されたサーバのうちから選択されたサーバ間にパスを生成するコマンドCPPと、生成されたパスを、SENDのパラメータによる指定にしたがって設定するコマンドCMPとを生成する。
【0068】
これらのほかにも様々な変換ルールが考えられるが、それらについてはDSNの記述とNCPSのコマンド記述との関係にしたがって適切に設定し、辞書114又は116に格納しておけばよい。
【0069】
この実施の形態に係るインタープリタ104(
図2を参照)は、コンピュータプログラム(以下単に「プログラム」と呼ぶ。)により実現される。
図11を参照して、このプログラムは、ネットワーク制御システム70の起動とともに起動され、作業に必要な記憶領域を確保したり、記憶領域に初期値を格納したり、必要な情報を収集して記憶領域に格納したりする初期化処理を実行するステップ200と、与えられたDSN記述内のルールの全てに対して後述のステップ204を実行することにより各DSN命令の条件を評価するステップ202と、ステップ202の処理の後、与えられたルールの全てについて後述のステップ208を実行し、制御をステップ202に戻すステップ206とを含む。
【0070】
ステップ204は、処理対象のルールを読むステップ240と、ステップ240で読んだルールの右辺の各項目がTRUEか否かを評価してステップ204を終了するステップ242とを含む。
【0071】
ステップ260は、処理対象のルールの右辺について、ステップ204で評価された結果、全ての項目がTRUEか否かを判定するステップ260と、ステップ260の判定が肯定のときに、ルールの左辺に記載されたアクションを、NCPSコマンド列に変換するステップ262と、ステップ262の終了後、及びステップ260の判定が否定のときに実行され、処理対象のルール右辺の評価結果を全てクリアしてステップ208を終了するステップ264とを含む。前述したとおり、ステップ262での変換には、OpenFlow及びPIAXのいずれがDSNに指定されているかにより、辞書114又は116のいずれかを選択してDSNのアクション記述に対応する変換規則を読出し、NCPSコマンド列に変換する。
【0072】
[動作]
ネットワーク制御システム70の動作は比較的単純である。まず、ユーザがアプリケーション100を操作してDSN記述102を生成する。この場合、ユーザはアプリケーション100を操作することにより、アプリケーションを構成するサービス間のつながりを抽象的に表し、そのつながりに対応するDSN記述102をアプリケーション100が生成する。又は、アプリケーション100の助けを使わず、アプリケーションを設計したユーザが直接DSN記述102を記述してもよい。そしてこのDSN記述102をインタープリタ104への入力に指定し、インタープリタ104に処理を依頼する。
【0073】
インタープリタ104は、ネットワーク制御システム70が起動すると初期化(
図11のステップ200)を実行し、初期化に成功すると以下のような動きを繰返す。すなわち、インタープリタ104は、ユーザが指定したDSN記述内のルールを読む(
図11のステップ204)。ルールは、DSNの先頭から1つずつ読込まれる。インタープリタ104はさらに、読込んだルール右辺の条件の各々についてTRUEか否かを評価する。この条件の中には、ネットワークの状態に関するものもある。それらは、
図2に示すOpenFlowネットワークコントローラ108又はPIAXネットワークコントローラ112によりインタープリタ104に与えられる。OpenFlowネットワークコントローラ108及びPIAXネットワークコントローラ112は常にネットワークの状態を監視しており、トラフィックの状況、ネットワークの遅延状況などの統計的情報をリアルタイムでインタープリタ104に送信する。
【0074】
本実施の形態では、インタープリタ104は、
図11のステップ240及び242をDSN記憶部118に記憶されているDSN記述内の全てのルールについて実行する。
【0075】
全てのルールについて
図11のステップ240及び242の実行が終了すると、インタープリタ104は、再びDSN記述102の先頭のルールに戻り、その右辺の各項目が全てTRUEか否かを判定する(ステップ260)。右辺の項目のうち、1つでもFALSEのものがあれば(ステップ260でNO)、インタープリタ104はこのルールについて左辺のアクションを実行せず、右辺の全項目の評価をクリアして(ステップ264)、次のルールに進む(ステップ260)。ステップ260でルール右辺の全項目がTRUEであれば、インタープリタ104はステップ262を実行する。すなわち、ステップ262ではインタープリタ104は、処理対象のルール左辺のアクション述語を、右辺の条件と、予め決められ辞書114又は116に格納された変換ルールとにしたがって、対象となるNCPSコマンド又はNCPSコマンド列に変換する。その後、ルール右辺の各項目の評価を全てクリアして(ステップ264)、制御をステップ260に戻す。DSNの末尾のルールまで処理が終了すると、インタープリタ104は制御をステップ202(
図11)に戻し、以下、ステップ202及び206を繰返し実行する。
【0076】
こうしたインタープリタ104の処理により、一連のNCPSコマンド列が生成され、そのコマンド列によってOpenFlowネットワーク86又はPIAXネットワーク88の構成に変更が加えられる。
【0077】
こうした処理の途中でユーザがDSN記憶部118にあるルールを書換えたとする。すると、インタープリタ104による
図11のプログラムの実行中に、書換えた結果にしたがって
図11のステップ202及び206の処理内容が変更される。その結果、OpenFlow制御コマンドシーケンス106又はPIAX制御コマンドシーケンス110の内容もリアルタイムで変更される。さらに、OpenFlowネットワークコントローラ108又はPIAXネットワークコントローラ112がこれらコマンドシーケンスの変更に伴ってOpenFlowネットワーク86及びPIAXネットワーク88の構成を変更するので、ユーザがアプリケーションに変更を加えたときにも、そのアプリケーションの要求にしたがって最適な構成となるように、ネットワークが再構成される。その結果、ユーザがアプリケーションを途中で変更しても、ただちにその変更がネットワーク構成に反映される。
【0078】
さらに、OpenFlowネットワーク86及びPIAXネットワーク88などのネットワークの状態が変化し、インタープリタ104の処理により最初に設定されたパスの通信速度が低下したような場合には、
図11のステップ242でのルールの右辺の条件が変化し、評価結果が変化する。すると、その変化に応じてルール左辺の各アクションを実行するか否かが変化する。その結果、例えば条件を充足するサービスの探索と、パスの設定とが再実行され、アプリケーション要求を満たすようにネットワークが再構築される。その結果、ネットワークの状況が変化しても、ミドルウェア82及びNCPSレイヤ84のレベルのみでアプリケーション要求にあうようなネットワークの調整を行なうことができる。
【0079】
DSN記述は何を行なうかを宣言するのみの宣言的記述であり、それをどのように実行するかについては触れない。本実施の形態では、そのDSN記述内の各ルールをインタープリタ104により逐次解釈してアクションを実行していく。各ルールにより決まるアクションを実行するか否かは、ルール右辺の各項目の評価により決定される。この評価には、ネットワークの現在の状況を反映させることができる。この結果、以下のような利点がもたらされる。
【0080】
(1)ネットワークを制御するプロトコルの違いによる影響を受けずにサービス連携をルールとして定義できる。
【0081】
(2)そのため、異なるプロトコルのネットワークをDSN記述により透過的に制御できる。
【0082】
(3)DSN記憶部118中のDSN記述内にルールを追加したり、ルールを変更したりするだけで、アプリケーションの挙動をその実行中でも変更できる。
【0083】
(4)DSNのルールの解釈にネットワークの状況の評価結果を反映させることができるため、DSNルールを変更しなくても、ネットワークの状況に応じてアプリケーション要求を充足するようにネットワーク構成を動的に調整できる。
【0084】
こうした構成により、突発的なアプリケーションの要求に対しても、そのアプリケーションを実現するためのサービス連携を記述するDSN記述を作成することで、ネットワークを動的にかつ継続的に再構築できる。アプリケーション開発者にとっては、ネットワークの性能をより効果的に利用できるようになる。ネットワーク管理者にとっては、アプリケーションの開発者の要求に対してネットワークの再設定を行なう必要がない。そのためネットワーク管理者の管理負荷を軽減できる。
【0085】
本実施の形態のシステムは、災害時など、既存システムで想定していない事態が発生した際に特に威力を発揮する。例えば、ネットワークの高い処理性能と拡張性とを生かしながら、膨大な情報を組合せて集約・分析したり、情報サービスの代替サービスを発見し提供したり、一定の時間の間のみ、ネットワークを再構成して大量の情報を効率よく収集し処理したりすることが可能になる。刻々と変化する状況に対応して、既存の情報サービスを様々に組合せて所望の情報を得たりすることも可能になる。
【0086】
自然災害又は社会現象など、多種多様なセンシング情報を、アプリケーション開発者が指定した条件に基づいて、オンデマンドに収集・解析するカスタムメイドな仮想センサを構築したりできる。そうしたアプリケーションでは、ネットワーク上で種々のサービスを提供するサーバからのセンシング情報を収集したり保存したりする条件をアプリケーションの開発者が追加したり変更したりするたびに、対応する情報サービス間のやり取りを定義したDSN記述を生成し、これをインタープリタにより逐次解釈し実行する。この結果、ノードの検索、パスの作成・変更などのネットワーク制御コマンドがDSN記述から生成され、仮想センシングネットワークが動的に再構成される。さらに、ネットワークの状態を常に監視し、ノードの変更又はパスの輻輳などが発生しても、DSN記述に指定された条件の評価結果に基づいて、自律的にネットワークを再構築できる。
【0087】
なお、上記実施の形態では、DSN記述により対象のネットワーク基盤がOpenFlowによるものかPIAXによるものかを指定している。しかし本発明はそのような実施の形態には限定されない。例えばユーザがDSN記述とは別に入力してもよいし、インタープリタ104が対象となるネットワーク基盤と通信することにより自動的に判断するようにしてもよい。
【0088】
[コンピュータによる実現]
この実施の形態のシステム、特にミドルウェア82を実行する部分は、コンピュータハードウェアと、そのコンピュータハードウェアにより実行されるプログラムと、コンピュータハードウェアに格納されるデータとにより実現される。
図12はこのコンピュータシステム330の外観を示し、
図13はコンピュータシステム330の内部構成を示す。
【0089】
図12を参照して、このコンピュータシステム330は、DVD(Digital Versatile Disc)ドライブ350を有するコンピュータ340と、いずれもコンピュータ340に接続されたキーボード346、マウス348、及びモニタ342とを含む。
【0090】
図13を参照して、コンピュータ340は、DVDドライブ350に加えて、CPU356と、バス366とを含む。CPU356及びDVDドライブ350は、いずれもバス366に接続されている。コンピュータ340はさらに、ブートアッププログラム等を記憶するROM358と、バス366に接続され、プログラム命令、システムプログラム、及び作業データ等を記憶するRAM360と、プリンタ344と、ローカルエリアネットワーク(LAN)364を介してインターネット等のネットワークへの接続を提供するネットワークインターフェイスカード(NIC)352とを含む。
【0091】
コンピュータシステム330により実行される、インタープリタ104を実現するコンピュータプログラムは、DVDドライブ350に挿入されるDVD362に記憶され、さらにハードディスク354に転送される。又は、プログラムはLAN364を通じてインターネット上の他のサーバからコンピュータ340に送信されハードディスク354に記憶されてもよい。辞書114及び116についても同様である。プログラム、辞書114及び116は、プログラムの実行の際にRAM360にロードされる。DVD362から、又はLAN364を介して、直接にRAM360にプログラム等をロードしてもよい。
【0092】
コンピュータプログラムの流通媒体はDVDに限定されない。CD−ROMでもよいし、フレキシブルデバイス、USBメモリ、リムーバブルディスク、光磁気記録媒体などのいずれの媒体でもよい。
【0093】
インタープリタ104の実体であるプログラムは、コンピュータ340にこのインタープリタ104としての動作を行なわせる複数の命令を含む。この動作を行なわせるのに必要な基本的機能のいくつかはコンピュータ340上で動作するOS若しくはサードパーティのプログラム、又はコンピュータ340にインストールされる各種ソフトウェアツールキットにより提供される。したがって、このプログラムはこの実施の形態のシステム及び方法を実現するのに必要な機能の全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように
図11に示したように制御されたやり方で適切な機能又は「ツール」を呼出すことにより、上記したインタープリタ104としての動作を実行する命令のみを含んでいればよい。コンピュータシステム330の動作は周知であるので、ここでは繰返さない。
【0094】
辞書114及び116、DSN記述、NCPSコマンド列などは、本実施の形態ではいずれもRAM360に記憶される。
【0095】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内での全ての変更を含む。