(57)【要約】【課題】分散式コントローラを提供する。【解決手段】本開示は、クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定することを含む方法を含んでいてもよい。前記クライアント・システムは、ネットワーク要素およびクライアント・コンピューティング装置を含んでいてもよく、前記サービス・プロバイダー・システムは、前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供するよう構成されたコントローラ・プログラムを含んでいてもよい。本方法は、前記レイテンシーが閾値より長いことに基づいて、前記コントローラ・プログラムを、前記クライアント・コンピューティング装置によって実行されるよう前記クライアント・コンピューティング装置に送信することをも含んでいてもよい。それにより、前記クライアント・コンピューティング装置が前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供する。【選択図】図１
2017130934.tif 000002
【特許請求の範囲】
【請求項１】
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する段階であって、前記クライアント・システムは、ネットワーク要素およびクライアント・コンピューティング装置を含み、前記サービス・プロバイダー・システムは、前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供するよう構成されたコントローラ・プログラムを含む、段階と；
前記レイテンシーが閾値より長いことに基づいて、前記コントローラ・プログラムを、前記クライアント・コンピューティング装置によって実行されるよう前記クライアント・コンピューティング装置に送信して、それにより、前記クライアント・コンピューティング装置が前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供するようにする段階とを含む、
方法。
【請求項２】
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記コントローラ・プログラムを実行している前記サービス・プロバイダー・システムのサービス・プロバイダー・コンピュータと前記ネットワーク要素との間のレイテンシーを測定することを含む、請求項１記載の方法。
【請求項３】
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記サービス・プロバイダー・システムのポータルと前記クライアント・コンピューティング装置との間のレイテンシーを測定することを含む、請求項１記載の方法。
【請求項４】
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記コントローラ・プログラムを実行している前記サービス・プロバイダー・システムのサービス・プロバイダー・コンピュータと前記クライアント・コンピューティング装置との間のレイテンシーを測定することを含む、請求項１記載の方法。
【請求項５】
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記サービス・プロバイダー・システムのポータルと前記ネットワーク要素との間のレイテンシーを測定することを含む、請求項１記載の方法。
【請求項６】
前記コントローラ・プログラムを送信することがさらに、前記コントローラ・プログラムのメモリ使用に基づく前記クライアント・コンピューティング装置のメモリ負担、前記コントローラ・プログラムによって使用される記憶ボリュームに基づく前記クライアント・コンピューティング装置の記憶負担および前記コントローラ・プログラムのプロセッサ利用に基づく前記クライアント・コンピューティング装置の処理負担のうちの一つまたは複数に基づく、請求項１記載の方法。
【請求項７】
前記クライアント・システムにおいて現在動作している一つまたは複数のコンピューティング装置を同定する段階であって、前記一つまたは複数のコンピューティング装置は前記クライアント・コンピューティング装置を含む、段階と；
前記一つまたは複数のコンピューティング装置のうちから前記コントローラ・プログラムを実行すべき前記クライアント・コンピューティング装置を選択する段階と；
前記クライアント・コンピューティング装置に前記コントローラ・プログラムを実行するよう要求する段階と；
前記クライアント・コンピューティング装置が前記コントローラ・プログラムを実行していることの確認を受領する段階と；
前記サービス・プロバイダー・システムにおいて前記コントローラ・プログラムをシャットダウンする段階とをさらに含む、
請求項１記載の方法。
【請求項８】
前記コントローラ・プログラムを前記クライアント・コンピューティング装置に送信する前に、前記クライアント・コンピューティング装置を操作しているユーザーの認証を受領する段階をさらに含む、請求項１記載の方法。
【請求項９】
クライアント・システムのクライアント・コンピューティング装置においてサービス・プロバイダー・システムからコントローラ・プログラムを受領する段階とであって、前記コントローラ・プログラムは、前記クライアント・システムのネットワーク要素にコントローラ・サービスを提供するよう構成されている、段階と；
前記クライアント・コンピューティング装置によって前記コントローラ・プログラムを動作させる段階と；
前記サービス・プロバイダー・システムに、前記クライアント・コンピューティング装置が前記コントローラ・プログラムを動作させていることを通知する段階とを含む、
方法。
【請求項１０】
前記クライアント・コンピューティング装置が前記コントローラ・プログラムを実行している間に、前記クライアント・コンピューティング装置においてシャットダウン要求を受領する段階と；
前記コントローラ・プログラムを実行するための前記クライアント・システムの別のクライアント・コンピューティング装置が同定されるまで、前記クライアント・コンピューティング装置のシャットダウン・プロセスを中断する段階と；
前記コントローラ・プログラムを前記別のクライアント・コンピューティング装置に提供する段階と；
前記クライアント・コンピューティング装置の前記シャットダウン・プロセスを完了する段階とをさらに含む、
請求項９記載の方法。
【請求項１１】
前記ネットワーク要素は第一のネットワーク要素であり、当該方法はさらに、前記サービス・プロバイダー・システムが前記クライアント・システムの第二のネットワーク要素にコントローラ・サービスを提供している間に、前記第一のネットワーク要素にコントローラ・サービスを提供するために前記サービス・プロバイダー・システムからの追加的なコントローラ・プログラムを要求する段階をさらに含む、請求項９記載の方法。
【請求項１２】
前記クライアント・システムの第二のネットワーク要素にコントローラ・サービスを提供するために、前記コントローラ・プログラムを、前記サービス・プロバイダー・システムにおいて動作している追加的なコントローラ・プログラムとクラスタリングすることをさらに含む、請求項９記載の方法。
【請求項１３】
前記クラスタリングにより、前記クライアント・コンピューティング装置上で動作している前記コントローラ・プログラムが、前記ネットワーク要素を含む前記クライアント・システムの複数のネットワーク要素にコントローラ・サービスを提供する複数のコントローラ・サービスのプールに加わる、請求項１２記載の方法。
【請求項１４】
サービス・プロバイダー・システムと顧客システムとを有するコントローラ・システムであって、
前記サービス・プロバイダー・システムは、前記サービス・プロバイダー・システムにおいて動作している一組の第一のコントローラ・プログラムを含み、
前記顧客システムは、
複数のネットワーク要素と；
前記複数のネットワーク要素のうちの少なくとも一つにコントローラ・サービスを提供するために前記サービス・プロバイダー・システムから受領される第二のコントローラ・プログラムを動作させる顧客コンピュータとを有しており、前記複数のネットワーク要素のうちの残りは前記サービス・プロバイダー・システムにおいて動作する前記一組の第一のコントローラ・プログラムからコントローラ・サービスを受ける、
コントローラ・システム。
【請求項１５】
前記サービス・プロバイダー・システムが、前記サービス・プロバイダー・システムと前記顧客システムとの間のレイテンシーをモニタリングし、前記レイテンシーが閾値を超えることに応答して前記クライアント・コンピューティング装置に前記第二のコントローラ・プログラムを送信するよう構成されている、請求項１４記載のコントローラ・システム。
【請求項１６】
前記一組の第一のコントローラ・プログラムおよび前記第二のコントローラ・プログラムがコントローラ・プールにいて動作している、請求項１４記載のコントローラ・システム。
【請求項１７】
前記サービス・プロバイダー・システムが、前記顧客システムによってアクセス可能でありかつ前記顧客システムが前記サービス・プロバイダー・システムと対話できるようにするよう構成されている、ポータルを有する、請求項１４記載のコントローラ・システム。
【請求項１８】
前記ポータルがウェブ・ポータルを含む、請求項１７記載のコントローラ・システム。
【請求項１９】
前記顧客システムがさらに、前記第二のコントローラ・プログラムを動作させるよう構成された追加的なクライアント・コンピューティング装置を有しており、前記追加的なクライアント・コンピューティング装置は前記第二のコントローラ・プログラムを受領するが実行しない、請求項１４記載のコントローラ・システム。
【請求項２０】
前記サービス・プロバイダー・システムは、前記一組の第一のコントローラ・プログラムの負荷をモニタリングし、前記一組の第一のコントローラ・プログラムの前記負荷が閾値を超えることに応答して前記クライアント・コンピューティング装置に前記第二のコントローラ・プログラムを送信するよう構成されている、請求項１４記載のコントローラ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示において論じられる実施形態は、分散された諸コントローラを含むシステムに関する。
【背景技術】
【０００２】
コントローラは、ネットワークの形成および動作を容易にするようネットワーク要素にサービスを提供しうる。ネットワークのための単一の中央集中式のコントローラはネットワークに対して限界を課すことがある。
【０００３】
本願で請求される主題は、何らかの欠点を解決するまたは上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景は、本稿に記載される本開示の実施形態が実施されうる一つの例示的な技術領域を示すために与えられている。
【発明の概要】
【課題を解決するための手段】
【０００４】
一つまたは複数の実施形態において、本開示は、クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定することを含む方法を含んでいてもよい。前記クライアント・システムは、ネットワーク要素およびクライアント・コンピューティング装置を含んでいてもよく、前記サービス・プロバイダー・システムは、前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供するよう構成されたコントローラ・プログラムを含んでいてもよい。本方法は、前記レイテンシーが閾値より長いことに基づいて、前記コントローラ・プログラムを、前記クライアント・コンピューティング装置によって実行されるよう前記クライアント・コンピューティング装置に送信することをも含んでいてもよい。それにより、前記クライアント・コンピューティング装置が前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供する。
【０００５】
実施形態の目的および利点は、少なくとも、請求項において具体的に指摘される要素、特徴および組み合わせによって実現され、達成される。
【０００６】
以上の概括的な記述および以下の詳細な説明は、例を提供し、説明するものであり、制約するものではない。
【図面の簡単な説明】
【０００７】
例示的な実施形態について、付属の図面を使ってさらに具体的かつ詳細に記述し、説明する。
【図１】分散式コントローラをもつ例示的なシステムのブロック図である。
【図２】分散式コントローラをもつ例示的なシステムのさまざまな接続を示すブロック図である。
【図３】例示的なコンピューティング装置のブロック図である。
【図４】分散式コントローラを利用する例示的な方法のフローチャートである。
【図５】分散式コントローラを利用するもう一つの例示的な方法のフローチャートである。
【図６Ａ】分散式コントローラを利用するさらなる例示的な方法のフローチャートの前半である。
【図６Ｂ】分散式コントローラを利用するさらなる例示的な方法のフローチャートの後半である。
【発明を実施するための形態】
【０００８】
本開示は、分散式の諸コントローラを利用しうるシステム、たとえばソフトウェア定義ネットワーキング（SDN:  software-defined  networking）システムに関する。いくつかの実施形態では、システムはサービス・プロバイダー・システムおよびクライアント・システムを含んでいてもよい。サービス・プロバイダー・システムは、クライアント・システムにコントローラ・サービスを提供するよう構成されていてもよい。
【０００９】
いくつかの実施形態では、サービス・プロバイダー・システムは、クライアント・システムのネットワーク要素にコントローラ・サービスを提供するよう構成されたコントローラを含んでいてもよい。いくつかの実施形態では、コントローラ・サービスは、クライアント・システムのネットワーク要素と、クライアント・システム内で動作しているアプリケーションとの間の制御面（control  plane）として機能しうる。トリガーするイベント（たとえば、クライアント・システムとサービス・プロバイダーとの間のレイテンシーが閾値を超えるまたはサービス・プロバイダー・システムの負荷が閾値を超えること）に基づいて、それまで前記諸コントローラによって動作させられていたコントローラ・プログラムが、前記サービス・プロバイダー・システムから前記クライアント・システムに送られてもよい。これらおよび他の実施形態において、前記コントローラ・プログラムは、クライアント・コンピューティング装置に提供され、クライアント・コンピューティング装置によって動作させられてもよい。
【００１０】
クライアント・コンピューティング装置においてコントローラ・プログラムを動作させることは、コントローラ・プログラムとクライアント・システムのネットワーク要素との間のレイテンシーを短縮しうる。さらに、クライアント・コンピューティング装置がコントローラ・プログラムを動作させることは、コントローラ・サービスを提供する負荷の一部を、サービス・プロバイダー・システムからクライアント・システムにオフロード（off-load）しうる。
【００１１】
本開示の実施形態は、付属の図面を参照して説明される。
【００１２】
図１は、本開示の少なくとも一つの実施形態に基づく、分散された諸コントローラをもつ例示的なシステム１００のブロック図である。システム１００は、サービス・プロバイダー・システム１１０（一点鎖線で示される）およびクライアント・システム１２０（破線で示される）を含んでいてもよい。クライアント・システム１２０は、サービス・プロバイダー・システム１１０からコントローラ・サービスを受領するよう、契約、合意、取り決めまたはその他を有していてもよい。たとえば、クライアント・システムは、ネットワーク１２８を提供するよう動作しうる一つまたは複数のネットワーク要素１２４（たとえば、ネットワーク要素１２４ａ、ネットワーク要素１２４ｂ、ネットワーク要素１２４ｃ、ネットワーク要素１２４ｄおよびネットワーク要素１２４ｅ）を有していてもよい。ネットワーク要素１２４の一つまたは複数は、サービス・プロバイダー・システム１１０の一つまたは複数のコントローラ１１６（たとえば、コントローラ１１６ａ、コントローラ１１６ｂ、コントローラ１１６ｃおよびコントローラ１１６ｄ）によってコントローラ・サービスを提供されてもよい。コントローラ・サービスは、フロー制御管理、制御面動作、パケット伝送に関してネットワーク要素を指揮すること、ネットワーク資源とアプリケーションとの間のインターフェースを与えること、ネットワーク状態および統計をモニタリングすること、ネットワーク・ハードウェア機能および能力を管理すること、障害をアプリケーション／クライアントに報告することなどの任意のものを含みうる。いくつかの実施形態では、コントローラ１１６の一つまたは複数はSDNコントローラであってもよい。これらおよび他の実施形態において、コントローラ１１６によって提供されるコントローラ・サービスは、OPENFLOW（登録商標）プロトコルのような、SDNコントローラおよびシステムに関連する一つまたは複数のプロトコルを使って提供されてもよい。
【００１３】
サービス・プロバイダー・システム１１０はポータル１１２を含んでいてもよく、該ポータルにより、クライアント・システム１２０がサービス・プロバイダー・システム１１０と対話しうる。サービス・プロバイダー・システム１１０は、コントローラ１１６（たとえばコントローラ１１６ａ〜１１６ｄ）を含みうるコントローラ・プール１１４をも含んでいてもよい。
【００１４】
クライアント・システム１２０は、一つまたは複数のコンピューティング装置１２２（たとえば、クライアント・コンピューティング装置１２２ａおよびクライアント・コンピューティング装置１２２ｂ）を含んでいてもよい。上記のように、クライアント・システム１２０は、ネットワーク要素１２４によって実装されるネットワーク１２８をも含んでいてもよい。
【００１５】
いくつかの実施形態では、サービス・プロバイダー・システム１１０は、クライアント・システム１２０内のコンピューティング装置１２２の一つ（たとえばクライアント・コンピューティング装置１２２ａ）にコントローラ・プログラム（たとえばコントローラ・プログラム１２６）を受信させ、実装させるよう、要求、送信またはその他を行なってもよい。コントローラ・プログラム１２６は、コントローラ１１６と同様のまたは同一の機能を実行してもよい。たとえば、コントローラ・プログラム１２６は、クライアント・システム１２０のネットワーク要素１２４の一つまたは複数にコントローラ・サービスを提供してもよい。いくつかの実施形態では、コントローラ・プログラム１２６は、コントローラ１１６のうち一つまたは複数を置き換えてもよく、および／またはコントローラ１１６のうち一つまたは複数の、コントローラ・サービスを補足してもよい。
【００１６】
いくつかの実施形態では、クライアント・コンピューティング装置１２２ａは、一つまたは複数のイベントの生起に基づいてコントローラ・プログラム１２６を実装してもよい。コンピューティング装置１２２の一つにコントローラ・プログラムを受信させ、実装させるよう、要求、送信またはその他を行なうことをサービス・プロバイダー・システム１１０にさせるイベントは、トリガー・イベントと称されてもよい。
【００１７】
トリガー・イベントのさまざまな例は次のとおり。たとえば、トリガー・イベントは、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のレイテンシーが閾値を超える場合（たとえば図２に関して記述されるレイテンシー）に、コントローラ・プログラム１２６がクライアント・コンピューティング装置１２２ａによって実行されうるということを含んでいてもよい。そのような閾値は、最小ピング応答時間のような、クライアントまたはサービス・プロバイダーによって設定されるパフォーマンス保証に基づいていてもよい。たとえば、クライアントまたはプロバイダーは、最小ピング応答を10ミリ秒、50ミリ秒、100ミリ秒、200ミリ秒、500ミリ秒、900ミリ秒などに設定してもよい。いくつかの実施形態では、最小ピング応答は、100ミリ秒から1000ミリ秒までの間であってもよい。トリガー・イベントのもう一つの例は、コントローラのプール１１４の負荷が閾値を超える場合に、コントローラ・プログラム１２６がクライアント・コンピューティング装置１２２ａによって実行されうるというものであってもよい。そのような閾値は、ネットワーク要素対コントローラの最大比またはコントローラ・プログラムのための単位時間当たりの最小プロセッサ・サイクル数のような、クライアントまたはサービス・プロバイダーによって設定される計算資源負荷またはコントローラ負荷に基づいていてもよい。たとえば、いくつかの実施形態では、閾値は、コントローラ上での全プロセッサ利用の80パーセントまたはコントローラ上での全メモリ利用の80パーセントを含んでいてもよい。もう一つの例として、いくつかの実施形態では、閾値は、コントローラ・プログラムによって消費されるプロセッサ利用の50パーセントまたはコントローラ・プログラムによって消費されるメモリ利用の50パーセントを含んでいてもよい。トリガー・イベントのさらなる例は、クライアント・システム１２０が追加的なコントローラ・サービスを要求する場合（たとえば、ネットワーク１２８が追加的なネットワーク要素１２４を追加する場合）に、コントローラ・プログラム１２６がクライアント・コンピューティング装置１２２ａによって実行されてもよいというものであってもよい。
【００１８】
図１に示されるように、ネットワーク要素１２４の一つまたは複数は、コントローラ・プール１１４内のコントローラ１１６によってコントローラ・サービスを提供されてもよい。たとえば、ネットワーク要素１２４ｃおよび１２４ｄはコントローラ１１６ｂからコントローラ・サービスを受けてもよく、ネットワーク要素１２４ｅはコントローラ１１６ｄからコントローラ・サービスを受けてもよい。追加的または代替的に、ネットワーク要素１２４の一つまたは複数が、クライアント・システム１２０のクライアント・コンピューティング装置１２２ａ上で動作しているコントローラ・プログラム１２６によってコントローラ・サービスを提供されてもよい。これらおよび他の実施形態において、コントローラ・プログラム１２６は、クライアント・コンピューティング装置１２２ａにコントローラ・プログラム１２６を動作させるサービス・プロバイダー・システム１１０によってなされる要求、送信または他のアクションに基づいて動作させられてもよい。
【００１９】
サービス・プロバイダー・システム１１０は、クライアント・システム１２０にサービスを提供するよう構成された、任意の数のシステム、装置、コンポーネントまたはそれらの組み合わせを含みうる。たとえば、サービス・プロバイダー・システム１１０は、クライアント・システム１２０にSDN実装を提供するサードパーティーであってもよい。別の例として、サービス・プロバイダー・システム１１０が、クライアント・システム１２０にコントローラ・サービスを提供してもよい。
【００２０】
ポータル１１２は、サービス・プロバイダー・システム１１０とクライアント・システム１２０との間の通信を提供するよう構成された、任意の数のシステム、装置、コンポーネントまたはそれらの組み合わせを含みうる。たとえば、ポータル１１２は、クライアント・システム１２０が、サービス・プロバイダー・システム１１０からサービスおよび／またはアップデート（updates）を要求するおよび／またはサービス・プロバイダー・システム１１０によってクライアント・システム１２０に提供されたサービスの構成設定を管理することを許容しうる。いくつかの実施形態では、クライアント・システム１２０は、クライアント・システム１２０がサービス・プロバイダー・システム１１０から要求するまたは受領するサービス、契約または加入を開始、停止、更新（renew）または他の仕方で管理しうる。
【００２１】
いくつかの実施形態では、ポータル１１２は、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のレイテンシーおよび／またはコントローラ・プール１１４および／またはクライアント・コンピューティング装置１２２の負荷（たとえば、図２に関して述べるレイテンシー）を決定するよう構成されていてもよい。追加的または代替的に、ポータル１１２は、クライアント・システム１２０のコンピューティング装置１２２のうちの一つまたは複数にコントローラ・プログラム１２６を動作させるまたは他の仕方で受領させるよう、送信する、要求するまたは他の仕方で行なわせるのでもよい。いくつかの実施形態では、ポータル１１２は、ウェブ・ポータルを含んでいてもよい。これらおよび他の実施形態において、ウェブ・ポータルは、インターネットとインターフェースをもちうるシステムまたは装置を含んでいてもよく、それによりクライアント・システム１２０のユーザーはインターネットを介してポータル１１２にアクセスしうる。いくつかの実施形態では、ポータル１１２は、コンピューティング装置として、たとえば図３に示されるコンピューティング装置として実装されてもよい。
【００２２】
コントローラ１１６のコントローラ・プール１１４は、一つまたは複数のネットワーク要素（たとえばクライアント・システム１２０のネットワーク要素１２４）にコントローラ・サービスを提供するよう構成された、任意の数のシステム、装置、コンポーネントまたはそれらの組み合わせを含みうる。いくつかの実施形態では、コントローラ・プール１１４は、データ・センター、サーバーの群または物理的なコンピューティング装置の他の集まりとして実装されてもよい。いくつかの実施形態では、コントローラ・プール１１４は、仮想化ソフトウェアを含んでいてもよく、コントローラ１１６はコントローラの仮想化されたインスタンスを含んでいてもよい。コントローラ・プール１１４は、図３に示されるコンピューティング装置３００のような一つまたは複数のコンピューティング装置として実装されてもよい。いくつかの実施形態では、コントローラ１１６は、コントローラ・プログラム、たとえばコントローラ・サービスを提供する仮想化されたコントローラまたはソフトウェア・プログラムとして実装されてもよい。いくつかの実施形態では、コントローラ１１６は、コントローラ・プール１１４内で物理的なコントローラとして実装されてもよい。たとえば、コントローラ１１６ａは一つのコンピューティング装置であってもよく、コントローラ１１６ｂはもう一つのコンピューティング装置であってもよく、コントローラ１１６ｃはもう一つのコンピューティング装置であってもよく、コントローラ１１６ｄはもう一つのコンピューティング装置であってもよい（たとえば、図３に示されるコンピューティング装置３００）。
【００２３】
いくつかの実施形態では、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のネットワーク（図示せず）があってもよい。例として、ネットワークは、サービス・プロバイダー・システム１１０およびクライアント・システム１２０が通信できるようにする一つまたは複数の広域ネットワーク（WAN）および／またはローカル・エリア・ネットワーク（LAN）を含んでいてもよい。いくつかの実施形態では、ネットワークは、複数のWANおよび／またはLANの間の論理的および物理的な接続によって形成されるグローバルな相互ネットワークを含むインターネットを含んでいてもよい。代替的または追加的に、ネットワークは、一つまたは複数のセルラーRFネットワークおよび／または一つまたは複数の有線および／または無線ネットワーク、たとえばこれに限られないが802.xxネットワーク、ブルートゥース(登録商標)・アクセス・ポイント、無線アクセス・ポイント、IPベースのネットワークなどを含んでいてもよい。ネットワークはまた、ある型のネットワークが別の型のネットワークとインターフェースをもてるようにするサーバーをも含んでいてもよい。追加的または代替的に、ネットワークはイントラネットまたは組織内でまたは他の意味で安全な仕方で通信する一つまたは複数のコンピューティング装置を含んでいてもよい。クライアント・システム１２０のネットワーク１２８は、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間の通信を提供する、前記ネットワークの一部または部分であってもよい。追加的または代替的に、ネットワーク１２８は、クライアント・システム１２０とサービス・プロバイダー・システム１１０との間の通信を提供するネットワークと同様の仕方で実装されてもよい。いくつかの実施形態では、ネットワーク１２８は、ネットワーク要素１２４によってサービスされてもよく、および／または展開されてもよい。
【００２４】
クライアント・コンピューティング装置１２２（たとえば、クライアント・コンピューティング装置１２２ａおよびクライアント・コンピューティング装置１２２ｂ）は、クライアント・システム１２０内で動作するよう構成された、任意の数のシステム、装置、コンポーネントまたはそれらの組み合わせを含みうる。たとえば、クライアント・コンピューティング装置１２２は、企業イントラネット（たとえばネットワーク１２８）を通じて接続している多様なラップトップ、サーバー、ワークステーション、モバイル装置などを含みうる。クライアント・コンピューティング装置１２２はまた、ネットワーク１２８に接続されることなくクライアント・システム１２０にアドミン・サービス（administrative  services）を提供しうる装置をも含んでいてもよい。たとえば、クライアント・システムの管理者は、ネットワーク１２８からリモートにクライアント・システム１２０を管理するまたは他の仕方で制御するのでもよい。いくつかの実施形態では、諸クライアント・コンピューティング装置１２２の一部または全部が、コントローラ・プログラム１２６を実行することができてもよい。たとえば、クライアント・コンピューティング装置１２２ａ上で動作するように図示されているが、クライアント・コンピューティング装置１２２ｂもコントローラ・プログラム１２６を実行できてもよい。
【００２５】
ネットワーク要素１２４（たとえば、ネットワーク要素１２４ａ、ネットワーク要素１２４ｂ、ネットワーク要素１２４ｃ、ネットワーク要素１２４ｄおよびネットワーク要素１２４ｅ）は、ネットワーク１２８内でパケットを受信する、扱うおよび／または処理するよう構成された任意の装置、システム、コンポーネントまたはコンポーネントの集まりを含みうる。ネットワーク要素１２４はそれぞれルーター、ゲートウェイ、スイッチまたは他の任意のネットワーク要素として実装されてもよい。いくつかの実施形態では、ネットワーク要素１２４は、図３に示されるコンピューティング装置３００のようなコンピューティング装置として実装されてもよい。
【００２６】
いくつかの実施形態では、ポータル１１２は、クライアント・コンピューティング装置１２２ａ上でのコントローラ・プログラム１２６の実装をトリガーしうるトリガー・イベントがあるかどうかモニタリングしてもよい。たとえば、トリガー・イベントは、クライアント・システム１２０とサービス・プロバイダー・システム１１０の間のレイテンシーが閾値を超えること、あるいはコントローラ・プール１１４の負荷が閾値を超えることを含んでいてもよい。もう一つの例として、トリガー・イベントは、クライアント・コンピューティング装置１２２ａがポータル１１２から追加的なコントローラ・サービスを要求することを含んでいてもよい。これらおよび他の実施形態において、諸クライアント・コンピューティング装置１２２のうちの一つまたは複数のクライアント・コンピューティング装置の負荷および／またはコントローラ・プログラムを動作させているときの諸クライアント・コンピューティング装置１２２の負荷が、コントローラ・プログラム１２６をクライアント・システム１２０において実装するかどうかを決定することにおける要因であってもよい。たとえば、クライアント・コンピューティング装置１２２ａがクライアント・コンピューティング装置１２２ａの計算資源の高い割合を利用していて、クライアント・コンピューティング装置１２２ｂがクライアント・コンピューティング装置１２２ｂの計算資源の、より低い割合を利用していたら、コントローラ・プログラム１２６はクライアント・コンピューティング装置１２２ａではなくクライアント・コンピューティング装置１２２ｂに送信されてもよい。追加的または代替的に、コントローラ・プログラム１２６は、ポータル１１２からクライアント・コンピューティング装置１２２ａおよびクライアント・コンピューティング装置１２２ｂの両方に送信されてもよく、クライアント・コンピューティング装置１２２ａおよびクライアント・コンピューティング装置１２２ｂの一方のみがポータル１１２によってコントローラ・プログラム１２６を実行するよう要求されるのでもよい。
【００２７】
本開示の範囲から外れることなく、図１に修正、追加または省略がなされてもよい。たとえば、システム１００は、本開示において図示され、記述されているより多数または少数の要素を含んでいてもよい。たとえば、システム１００は、コントローラ・プール１１４内の任意の数のコントローラ１１６、任意の数のクライアント・コンピューティング装置１２２および任意の数のネットワーク要素１２４を含みうる。もう一つの例として、通信のいくつかの両矢印が図示されているが、明示的に図示されていない通信における他の相互接続およびコンポーネントがあってもよい。追加的な例として、サービス・プロバイダー・システム１１０からコントローラ・サービスを受領する任意の数のクライアント・システム１２０があってもよく、および／またはクライアント・システム１２０は、任意の数のサービス・プロバイダー・システム１１０からのコントローラ・サービスを利用してもよい。
【００２８】
図２は、本開示の少なくとも一つの実施形態に基づく、分散された諸コントローラをもつ例示的なシステム１００のさまざまな接続を示すブロック図である。図２のシステム１００は、図１のシステム１００と同一または類似であってもよい。図２は、レイテンシーについてモニタリングされうるさまざまな接続を示していてもよく、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のレイテンシーを測るさまざまな実施形態を示すことになる。
【００２９】
いくつかの実施形態では、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のレイテンシーが、ポータル１１２とクライアント・コンピューティング装置１２２ａとの間の第一の接続２１０に沿ってレイテンシーを測定することによって測定されてもよい。たとえば、サービス・プロバイダー・システム１１０は、第一の接続２１０に沿ってポータル１１２からクライアント・コンピューティング装置１２２ａに直接、ピングまたは他の往復要求（round-trip-request）を送ることによって、クライアント・コンピューティング装置１２２ａとポータル１１２との間のレイテンシーをモニタリングしてもよい。もう一つの例として、クライアント・コンピューティング装置１２２ａは、クライアント・コンピューティング装置１２２ａからポータル１１２にピングまたは他の往復要求を送ることによって該レイテンシーを要求してもよい。
【００３０】
いくつかの実施形態では、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のレイテンシーは、コントローラ１１６のうちの一つまたは複数（たとえば１１６ａおよび１１６ｂ）とクライアント・コンピューティング装置１２２ａとの間の第二の接続２２０に沿ってレイテンシーを測定することによって測定されてもよい。たとえば、サービス・プロバイダー・システム１１０は、第二の接続２２０に沿ってコントローラ１１６からクライアント・コンピューティング装置１２２ａにピングまたは他の往復要求（round-trip-request）を送るようポータル１１２がコントローラ１１６に要求し、コントローラ１１６が結果をポータル１１２に報告することによって、第二の接続２２０に沿ったレイテンシーをモニタリングしてもよい。たとえば、クライアント・コンピューティング装置１２２ａは、クライアント・コンピューティング装置１２２ａからコントローラ１１６の一つまたは複数にピングまたは他の往復要求を送ることによって該レイテンシーを要求してもよい。
【００３１】
いくつかの実施形態では、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のレイテンシーは、ポータル１１２と、ネットワーク要素１２４のうちの一つまたは複数（たとえばネットワーク要素１２４ａおよび１２４ｃ）との間の第三の接続２３０に沿ってレイテンシーを測定することによって測定されてもよい。たとえば、サービス・プロバイダー・システム１１０は、ポータル１１２が第三の接続２３０に沿ってポータル１１２からネットワーク要素１２４にピングまたは他の往復要求（round-trip-request）を送ることによって、第三の接続２３０に沿ったレイテンシーをモニタリングしてもよい。もう一つの例として、クライアント・コンピューティング装置１２２ａが、ネットワーク要素１２４からポータル１１２にピングまたは他の往復要求を送り、結果をクライアント・コンピューティング装置１２２ａおよび／またはポータル１１２に報告するようネットワーク要素１２４に指令することによって、該レイテンシーを要求してもよい。これらおよび他の実施形態において、ポータル１１２がレイテンシー測定要求を送れるよう、クライアント・システム１２０は、ポータル１１２に、ネットワーク要素１２４についてのIPアドレスまたは他の識別情報を提供してもよい。
【００３２】
いくつかの実施形態では、サービス・プロバイダー・システム１１０とクライアント・システム１２０の間のレイテンシーは、コントローラ１１６のうちの一つまたは複数（たとえばコントローラ１１６ｄ）とネットワーク要素１２４のうちの一つまたは複数（たとえばネットワーク要素１２４ｃおよび１２４ｄ）との間の第四の接続２４０に沿ってレイテンシーを測定することによって測定されてもよい。たとえば、サービス・プロバイダー・システム１１０は、第四の接続２４０に沿ってコントローラ１１６からネットワーク要素１２４にピングまたは他の往復要求（round-trip-request）を送るようポータル１１２がコントローラ１１６に要求し、コントローラ１１６が結果をポータル１１２に報告することによって、第四の接続２４０に沿ったレイテンシーをモニタリングしてもよい。もう一つの例として、クライアント・コンピューティング装置１２２ａは、ネットワーク要素１２４からコントローラ１１６にピングまたは他の往復要求を送り、結果をクライアント・コンピューティング装置１２２ａおよび／またはポータル１１２に報告するようネットワーク要素１２４に指令することによって、該レイテンシーを要求してもよい。これらおよび他の実施形態において、コントローラ１１６がレイテンシー測定要求を送れるよう、クライアント・システム１２０は、ポータル１１２に、ネットワーク要素１２４についてのIPアドレスまたは他の識別情報を提供してもよく、ポータル１１２はその情報をコントローラ１１６に提供してもよい。
【００３３】
本開示の範囲から外れることなく、図２に修正、追加または省略がなされてもよい。たとえば、システム１００は、本開示において図示され、記述されているより多数または少数の要素を含んでいてもよい。もう一つの例として、ピングまたは他の往復要求を使ってレイテンシーを測定するものとして記述されているが、さまざまな接続に沿ってレイテンシーを測定するための他の任意の機構、プロセスまたは事項が本開示の範囲内で考えられる。さらに、接続の例が示されているが、任意の数の接続が同時に、別個にまたは他の仕方でモニタリングまたは測定されうる。
【００３４】
図３は、本開示の少なくとも一つの実施形態に基づく、例示的なコンピューティング装置３００のブロック図である。サービス・プロバイダー・システム１１０、ポータル１１２、コントローラのプール１１４、コントローラ１１６、クライアント・システム１２０、クライアント・コンピューティング装置１２２および／またはネットワーク要素１２４の任意のものが、コンピューティング装置３００として実装されてもよい。コンピューティング装置３００は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバー・コンピュータ、タブレット・コンピュータ、携帯電話、スマートフォン、携帯情報端末（PDA）、ウェアラブル技術（たとえばスマート腕時計）、電子書籍リーダー装置、ネットワーク・スイッチ、ネットワーク・ルーター、ネットワーク・ハブ、他のネットワーキング装置または他の好適なコンピューティング装置を含んでいてもよい。
【００３５】
コンピューティング装置３００は、プロセッサ３１０、記憶装置３２０、メモリ３３０および通信コンポーネント３４０を含んでいてもよい。プロセッサ３１０、記憶装置３２０、メモリ３３０および／または通信コンポーネント３４０はみな、各コンポーネントが他のコンポーネントと通信しうるよう、通信上結合されていてもよい。コンピューティング装置３００は、本開示において記述される動作の任意のものを実行しうる。
【００３６】
一般に、プロセッサ３１０は、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含むいかなる好適な専用または汎用コンピュータ、コンピューティング・エンティティまたは処理装置を含んでいてもよく、いかなる適用可能なコンピュータ可読記憶媒体上に記憶された命令を実行するよう構成されていてもよい。たとえば、プロセッサ３１０はマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（DSP）、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）またはプログラム命令をインタープリットおよび／または実行するおよび／またはデータを処理するよう構成された他の任意のデジタルもしくはアナログ回路を含んでいてもよい。図３では単一のプロセッサとして示されているが、プロセッサ３１０は、本開示に記載される任意の数の動作を個々にまたは集団的に実行するよう構成された任意の数のプロセッサを含んでいてもよい。
【００３７】
いくつかの実施形態では、プロセッサ３１０は、プログラム命令をインタープリットおよび／または実行するおよび／または記憶装置３２０、メモリ３３０または記憶装置３２０とメモリ３３０に記憶されたデータを処理することを行なってもよい。いくつかの実施形態では、プロセッサ３１０は記憶装置３２０からプログラム命令を取ってきて、該プログラム命令をメモリ３３０にロードしてもよい。プログラム命令がメモリ３３０にロードされた後、プロセッサ３１０はプログラム命令を実行してもよい。
【００３８】
たとえば、いくつかの実施形態において、図１のコントローラ１１６および／またはコントローラ・プログラム１２６の一つまたは複数がデータ記憶３２０にプログラム命令として含められてもよい。プロセッサ３１０は、コントローラ１１６および／またはコントローラ・プログラム１２６のうち一つまたは複数の、プログラム命令を取ってきて、コントローラ１１６および／またはコントローラ・プログラム１２６の該プログラム命令をメモリ３３０にロードしてもよい。コントローラ１１６および／またはコントローラ・プログラム１２６のプログラム命令がメモリ３３０にロードされた後、プロセッサ３１０はプログラム命令を実行してもよく、それによりコンピューティング装置３００はプログラム命令によって指令されるように、コントローラ１１６および／またはコントローラ・プログラム１２６に関連する動作を実装しうる。
【００３９】
記憶装置３２０およびメモリ３３０は、コンピュータ実行可能な命令またはデータ構造を担持するまたは記憶するコンピュータ可読記憶媒体を含んでいてもよい。そのようなコンピュータ可読記憶媒体は、プロセッサ３１０のような汎用または特殊目的コンピュータによってアクセスされうるいかなる利用可能な媒体を含んでいてもよい。限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュメモリ・デバイス（たとえば半導体メモリ・デバイス）またはコンピュータ実行可能な命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または特殊目的コンピュータによってアクセスされうる他の任意の記憶媒体を含む、有体または非一時的なコンピュータ可読記憶媒体を含んでいてもよい。上記のものの組み合わせも、コンピュータ可読記憶媒体の範囲内に含まれうる。コンピュータ実行可能な命令はたとえば、プロセッサ３１０に、ある動作または動作群を実行させるよう構成された命令およびデータを含んでいてもよい。
【００４０】
通信コンポーネント３４０は、コンピューティング装置３００とネットワーク（たとえば図１のネットワーク１２８または図１のサービス・プロバイダー・システム１１０とクライアント・システム１２０との間の通信を許容するネットワーク）との間の通信を許容するまたは容易にするよう構成された任意の装置、システム、コンポーネントまたはコンポーネントの集まりを含んでいてもよい。たとえば、通信コンポーネント３４０は、限定なしに、モデム、ネットワーク・カード（無線または有線）、赤外線通信装置、光通信装置、無線通信装置（たとえばアンテナ）および／またはチップセット（たとえばブルートゥース装置、802.6装置（たとえば都市圏ネットワーク（MAN））、Wi-Fi装置、WiMAX装置、セルラー通信設備など）および／またはその他を含んでいてもよい。通信コンポーネント３４０は、若干の例を挙げるとセルラー・ネットワーク、Wi-Fiネットワーク、MAN、光ネットワークなどのような任意のネットワーク（ネットワーク１２８を含む）および／またはリモート装置を含め本開示に記載される他の装置と、データが交換されることを許容しうる。
【００４１】
本開示の範囲から外れることなく、図３に修正、追加または省略がなされてもよい。たとえば、コンピューティング装置３００は、本開示において図示され、記述されているより多数または少数の要素を含んでいてもよい。たとえば、コンピューティング装置３００は、タブレットまたは携帯電話の画面のような統合された表示装置を含んでいてもよく、あるいはコンピューティング装置３００とは別個でありコンピューティング装置３００に通信上結合されているのでもよい外部モニター、プロジェクター、テレビジョンまたは他の好適な表示装置を含んでいてもよい。
【００４２】
図４は、本開示の少なくとも一つの実施形態に基づく、分散された諸コントローラを利用する例示的な方法４００のフローチャートである。方法４００は、いかなる好適なシステム、装置またはデバイスによって実行されてもよい。たとえば、図１のシステム１００および／または図３のコンピューティング装置３００が、方法４００に関連する動作の一つまたは複数を実行してもよい。離散的なブロックを用いて図示されているが、所望される実装に依存して、方法４００のブロックの一つまたは複数に関連するステップおよび動作は追加的なブロックに分割されたり、より少数のブロックに組み合わされたり、あるいはなくされたりしてもよい。
【００４３】
ブロック４１０では、トリガー・イベントがあるかどうかモニタリングされてもよい。たとえば、サービス・プロバイダー・システム（たとえば図１のサービス・プロバイダー・システム１１０）がトリガー・イベントをモニタリングしてもよい。そのようなトリガー・イベントは、サービス・プロバイダー・システムとクライアント・システム（たとえば図１のクライアント・システム１２０）との間のレイテンシーが閾値を超えること、コントローラのプール（たとえば図１のコントローラのプール１１４）の負荷が閾値を超えること、クライアント・システムが追加的なコントローラ・サービスを要求することなどを含んでいてもよい。
【００４４】
ブロック４２０では、クライアント・システム・コントローラ・プログラムをトリガーするトリガー・イベントが発生したかどうかについて判定がなされてもよい。トリガー・イベントが発生した場合、方法４００はブロック４３０に進んでもよい。トリガー・イベントが発生していない場合、方法４００はブロック４１０に戻って、トリガー・イベントがあるかどうかモニターすることを続けてもよい。
【００４５】
ブロック４３０では、コントローラ・プログラム（たとえば図１のコントローラ・プログラム１２６）がサービス・プロバイダー・システムからクライアント・システムのクライアント・コンピューティング装置（たとえば図１のクライアント・コンピューティング装置１２２ａ）に、クライアント・コンピューティング装置１２２ａ上で実行されるよう、送信されてもよい。よって、クライアント・コンピューティング装置１２２ａは、クライアント・システムのネットワーク要素（たとえば図１のネットワーク要素１２４）にコントローラ・サービスを提供してもよい。たとえば、サービス・プロバイダー・システムのポータル（たとえば図１のポータル１１２）がコントローラ・プログラムをクライアント・システムのクライアント・コンピューティング装置に送信して、クライアント・コンピューティング装置がコントローラ・プログラムを実行できるようにしてもよい。
【００４６】
このように、方法４００は、分散されたコントローラを利用しうる。本開示の範囲から外れることなく、方法４００に修正、追加または省略がなされてもよい。たとえば、方法４００の動作は異なる順序で実装されてもよい。追加的または代替的に、二つ以上の動作が同時に実行されてもよい。さらに、概説された動作およびアクションは例として与えられており、開示される実施形態の本質を損なうことなく、それらの動作およびアクションの一部が任意的であってもよく、より少数の動作およびアクションに組み合わされてもよく、あるいは追加的な動作およびアクションに展開されてもよい。
【００４７】
図５は、本開示の少なくとも一つの実施形態に基づく、分散された諸コントローラを利用するもう一つの例示的な方法５００のフローチャートである。方法５００は、いかなる好適なシステム、装置またはデバイスによって実行されてもよい。たとえば、図１のシステム１００および／または図３のコンピューティング装置３００が、方法５００に関連する動作の一つまたは複数を実行してもよい。離散的なブロックを用いて図示されているが、所望される実装に依存して、方法５００のブロックの一つまたは複数に関連するステップおよび動作は追加的なブロックに分割されたり、より少数のブロックに組み合わされたり、あるいはなくされたりしてもよい。
【００４８】
ブロック５１０では、クライアント・システムとサービス・プロバイダー・システム（たとえば図１のクライアント・システム１２０とサービス・プロバイダー・システム１１０）の間のレイテンシーが決定されてもよい。たとえば、レイテンシーは、図２に関して述べた接続の任意のものに沿って決定されてもよい。いくつかの実施形態では、サービス・プロバイダー・システムは、クライアント・システムのネットワーク要素（たとえば図１のネットワーク要素１２４ａ）にコントローラ・サービスを提供するためにコントローラ・プログラム（たとえば図１のコントローラ・プログラム１１６ａ）を動作させていてもよい。いくつかの実施形態では、レイテンシーの決定は、レイテンシーを閾値と比較してレイテンシーが閾値を超えているかどうかを判定することを含んでいてもよい。
【００４９】
ブロック５２０では、クライアント・コンピューティング装置を含む、クライアント・システムにおいて現在動作しているコンピューティング装置の一つまたは複数（たとえば図１のコンピューティング装置１２２ａおよび／または１２２ｂ）が同定されてもよい。たとえば、ポータル（たとえば図１のポータル１１２）が、コントローラ・プログラムを動作させる十分なコンピューティング機能を有することができ、クライアント・システムにおいて現在動作している、クライアント・システムのコンピューティング装置を同定してもよい。もう一つの例として、ポータルは、クライアント・システムのユーザーがサービス・プロバイダー・システムに要求をするのに使うコンピューティング装置を同定してもよい。いくつかの実施形態では、前記一つまたは複数のコンピューティング装置は、ブロック５１０において閾値を超えると判定されたレイテンシーに応答して同定されてもよい。
【００５０】
ブロック５３０では、コントローラ・プログラムを実行するために、前記クライアント・コンピューティング装置は、ブロック５２０において同定されたコンピューティング装置から選択されてもよい。たとえば、ポータルはコントローラ・プログラムを実行するために十分なコンピューティング機能を含んでいるとして前記クライアント・コンピューティング装置を同定してもよく、該クライアント・コンピューティング装置を選択してもよい。
【００５１】
ブロック５４０では、サービス・プロバイダー・システムは、クライアント・コンピューティング装置を操作しているユーザーの認証を受領してもよい。たとえば、サービス・プロバイダー・システムは、クライアント・システムのユーザー（たとえばシステム管理者、パワーユーザーなど）がパスワード、クレデンシャル、フィンガープリントなどまたは他の任意の認証機構を介して認証を提供することを要求してもよい。いくつかの実施形態では、認証は、サービス・プロバイダー・システムからの要求に基づいて提供されてもよい。
【００５２】
ブロック５５０では、サービス・プロバイダー・システムは、コントローラ・プログラムを、サービス・プロバイダー・システムからクライアント・コンピューティング装置に送信してもよい。コントローラ・プログラムをクライアント・コンピューティング装置に提供することにより、クライアント・コンピューティング装置は、コントローラ・サービスをクライアント・システムのネットワーク要素に提供することを許容されうる。たとえば、サービス・プロバイダーはコントローラ・プログラムの実行可能ファイルをクライアント・コンピューティング装置に送ってもよく、クライアント・コンピューティング装置がその実行可能ファイルを実行してもよい。追加的または代替的に、サービス・プロバイダー・システムは、サービス・プロバイダー・システム上で動作しているコントローラ・プログラムをサスペンドさせるまたは他の仕方でそのスナップショットを取ってもよく、そのスナップショットを実行可能ファイルの代わりにまたは実行可能ファイルと結合して提供してもよい。たとえば、サービス・プロバイダー・システムにおいてコントローラ・プログラムを実装している物理的なメモリ位置がサスペンドされ、コピーされ、クライアント・システムに送信されてもよい。いくつかの実施形態では、コントローラ・プログラムは、ブロック５２０において同定されたコンピューティング装置の全部に送信されてもよい。
【００５３】
ブロック５６０では、サービス・プロバイダー・システムは、クライアント・コンピューティング装置がコントローラ・プログラムを実行することを要求してもよい。たとえば、コントローラ・プログラムがサービス・プロバイダー・システムから複数のコンピューティング装置に送信された場合、前記クライアント・コンピューティング装置のみがコントローラ・プログラムを実行するよう要求されてもよい。いくつかの実施形態では、コントローラ・プログラムがクライアント・システムにおいて動作することは、ネットワーク要素とコントローラ・サービスとの間のレイテンシーを短縮しうる。たとえば、クライアント・コンピューティング装置は、サービス・プロバイダー・システムよりも物理的にネットワーク要素に近くてもよく、ネットワークにおいてより少数のホップを経験してもよい、などである。追加的または代替的に、クライアント・コンピューティング装置は、サービス・プロバイダー・システムよりも、ネットワーク要素への、より強力なネットワーク接続（たとえば帯域幅、信号強度など）を有していてもよい。
【００５４】
ブロック５７０では、サービス・プロバイダー・システムは、クライアント・コンピューティング装置がコントローラ・プログラムを実行しているという確証を受領してもよい。たとえば、クライアント・コンピューティング装置はコントローラ・プログラムを実行してもよく、コントローラ・プログラムが初期化を完了した後、コントローラ・プログラムはクライアント・コンピューティング装置をして、コントローラ・プログラムが正しく機能しているという確証メッセージをサービス・プロバイダー・システムに送信させてもよい。いくつかの実施形態では、サービス・プロバイダー・システムは、確証メッセージに応答して、コントローラ・プログラムがどのネットワーク要素にコントローラ・サービスを提供するべきかなど、コントローラ・プログラムについての詳細および／または他の要求を提供してもよい。
【００５５】
ブロック５８０では、サービス・プロバイダー・システムは、サービス・プロバイダー・システムにおいて動作しているコントローラ・プログラムをシャットダウンしてもよい。たとえば、クライアント・コンピューティング装置において動作しているコントローラ・プログラムがクライアント・システムのネットワーク要素にコントローラ・サービスを提供しているという確証後、サービス・プロバイダー・システムは、ネットワーク要素に対して前にコントローラ・サービスを提供していたサービス・プロバイダー・システム・コントローラ・プログラムをシャットダウンしてもよい。サービス・プロバイダー・システム・コントローラ・プログラムをシャットダウンすることは、サービス・プロバイダー・システムの負荷を低減しうる。たとえば、コントローラのプールにおいて動作しているコントローラの数を減らすことによって、コントローラのプールを動作させているハードウェアが、低減した負荷をもちうる。
【００５６】
このように、方法５００は、分散された諸コントローラを利用しうる。本開示の範囲から外れることなく、方法５００に修正、追加または省略がなされてもよい。たとえば、ブロック５１０、５２０、５３０、５４０、５５０、５６０、５７０および／または５８０の任意のものが省略されてもよい。別の例として、方法５００の動作は異なる順序で実装されてもよい。たとえば、ブロック５２０、５３０および／または５４０は任意の順序で実行されうる。追加的または代替的に、二つ以上の動作が同時に実行されてもよい。たとえば、ブロック５２０、５３０および／または５４０が同時に実行されてもよい。さらに、概説された動作およびアクションは例として与えられており、開示される実施形態の本質を損なうことなく、それらの動作およびアクションの一部が任意的であってもよく、より少数の動作およびアクションに組み合わされてもよく、あるいは追加的な動作およびアクションに展開されてもよい。
【００５７】
図６Ａおよび６Ｂは、本開示の少なくとも一つの実施形態に基づく、分散された諸コントローラを利用するさらなる例示的な方法６００のフローチャートである。方法６００は、いかなる好適なシステム、装置またはデバイスによって実行されてもよい。たとえば、図１のシステム１００および／または図３のコンピューティング装置３００が、方法６００に関連する動作の一つまたは複数を実行してもよい。離散的なブロックを用いて図示されているが、所望される実装に依存して、方法６００のブロックの一つまたは複数に関連するステップおよび動作は追加的なブロックに分割されたり、より少数のブロックに組み合わされたり、あるいはなくされたりしてもよい。
【００５８】
ブロック６０５では、サービス・プロバイダー・システム（たとえば図１のサービス・プロバイダー・システム１１０）がクライアント・システム（たとえば図１のクライアント・システム１２０）の一つまたは複数のネットワーク要素（たとえば図１のネットワーク要素１２４）にコントローラ・サービスを提供している間に、クライアント・システムがサービス・プロバイダー・システムからの追加的なコントローラ・プログラムを要求してもよい。たとえば、クライアント・システムは、サービス・プロバイダー・システムからコントローラ・サービスを受領する契約を有していてもよい。クライアント・システムは、追加的なネットワーク要素を追加することを決定してもよく、よって該追加的なネットワーク要素にサービスするためにサービス・プロバイダー・システムから追加的なコントローラ・プログラムを要求してもよい。別の例として、ネットワーク要素によってサービスされるネットワーク（たとえばネットワーク１２８）が遅いまたは遅延を経験している場合、クライアント・システムは、ネットワーク要素によりよいサービスを提供するために、追加的なコントローラ・プログラムを要求してもよい。
【００５９】
ブロック６１０では、クライアント・システムは、クライアント・コンピューティング装置（たとえば図１のクライアント・コンピューティング装置１２２ａおよび／または１２２ｂ）の現在の負荷をサービス・プロバイダー・システムに報告してもよい。たとえば、ポータル（たとえば図１のポータル１１２）は、クライアント・システムが、クライアント・システムにおいて動作しているコンピューティング装置のうち一つまたは複数のコンピューティング装置の現在の負荷を提供することを要求してもよい。応答して、クライアント・システムはコンピューティング装置の負荷（たとえばプロセッサ負荷、メモリ負荷、ネットワーク負荷など）をサービス・プロバイダー・システムに報告してもよい。
【００６０】
ブロック６１５では、クライアント・システムは、サービス・プロバイダー・システムからコントローラ・プログラム（たとえば図１のコントローラ・プログラム１１６）を受領してもよい。たとえば、サービス・プロバイダー・システムのポータルが、コントローラ・プログラムの実行可能ファイルを、ポータルからクライアント・コンピューティング装置に送信してもよい。
【００６１】
ブロック６２０では、クライアント・システムは、クライアント・システムのネットワーク要素のうちの少なくとも一つにコントローラ・サービスを提供するために、クライアント・コンピューティング装置においてコントローラ・プログラムを動作させてもよい。たとえば、コントローラ・プログラムの受領に応答してまたはサービス・プロバイダー・システムからの要求に応答して、クライアント・コンピューティング装置がコントローラ・プログラムを実行してもよい。
【００６２】
ブロック６２５では、クライアント・システムは、サービス・プロバイダー・システムに、クライアント・コンピューティング装置がコントローラ・プログラムを動作させていることを通知してもよい。たとえば、コントローラ・プログラムの初期化シーケンスの終わりまたは終わり近くに、コントローラ・プログラムは、クライアント・コンピューティング装置がコントローラ・プログラムを成功裏に実行し、ネットワーク要素の少なくとも一つに対してコントローラ・サービスを提供していることをサービス・プロバイダー・システムに報告するよう、クライアント・コンピューティング装置に命令してもよい。もう一つの例として、コントローラ・プログラムがクライアント・コンピューティング装置上で動作している後、クライアント・システムの同じまたは別の装置が、コントローラ・プログラムがネットワーク要素にコントローラ・サービスを提供しているというサービス・プロバイダー・システムへの通知を送ってもよい。
【００６３】
ブロック６３０では、クライアント・コンピューティング装置によって動作させられるコントローラ・プログラムは、サービス・プロバイダー・システムにおいて動作している追加的なコントローラ・プログラムとクラスタリングされてもよい。たとえば、コントローラ・プログラムは、サービス・プロバイダー・システムにおいて動作しているコントローラのプール（たとえば図１のコントローラのプール１１４）とインターフェースをもってもよく、これと通信してもよく、および／または他の仕方でその一員として機能してもよい。
【００６４】
ブロック６３５では、クライアント・コンピューティング装置がコントローラ・プログラムを実行している間に、クライアント・コンピューティング装置においてシャットダウン要求が受領されてもよい。たとえば、クライアント・コンピューティング装置のユーザーが、クライアント・コンピューティング装置へのパワーを低減させるまたはなくすためにシャットダウン手順を要求または初期化してもよい。
【００６５】
ブロック６４０（図６Ｂに示される）では、コントローラ・プログラムを実行するためのクライアント・システムの追加的なクライアント・コンピューティング装置が同定されうるまで、クライアント・コンピューティング装置のシャットダウン・プロセスが中断されてもよい。たとえば、クライアント・システムおよび／またはサービス・プロバイダー・システムが、コントローラ・プログラムを動作させるために利用可能なコンピューティング資源を有しうる追加的なコンピューティング装置を同定するおよび／または選択する間、シャットダウン・プロセスは保留にされてもよい。
【００６６】
ブロック６４５において、コントローラ・プログラムは追加的なクライアント・コンピューティング装置に提供されてもよい。たとえば、クライアント・コンピューティング装置は、コントローラ・プログラムのための実行可能ファイルを追加的なクライアント・コンピューティング装置に送信し、あるいは他の仕方で渡してもよい。もう一つの例として、クライアント・コンピューティング装置は、コントローラ・プログラムのスナップショットを取り、あるいは他の仕方でサスペンドさせてもよく、コントローラ・プログラムのスナップショットまたはサスペンドされたバージョンを追加的なクライアント・コンピューティング装置に送信し、あるいは他の仕方で渡してもよい。たとえば、コントローラ・プログラムを実装しているクライアント・コンピューティング装置の物理的なメモリ位置がサスペンドされ、コピーされ、追加的なクライアント・システムに送信されてもよい。さらなる例として、サービス・プロバイダー・システムがコントローラ・プログラムを追加的なクライアント・コンピューティング装置に送信してもよい。
【００６７】
ブロック６５０では、クライアント・コンピューティング装置はシャットダウン・プロセスを完了させてもよい。たとえば、追加的なクライアント・コンピューティング装置がコントローラ・プログラムを実行していることを確認後、クライアント・コンピューティング装置は、シャットダウン・プロセスにおいて残っているタスクがあればそれを完了させてもよく、次いでクライアント・コンピューティング装置への電力を低減させるまたは取り除いてもよい。
【００６８】
このように、方法６００は、分散された諸コントローラを利用しうる。本開示の範囲から外れることなく、方法６００に修正、追加または省略がなされてもよい。たとえば、ブロック６０５、６１０、６２５、６３０、６３５、６４０、６４５および／または６５０の任意のものが省略されてもよい。別の例として、方法６００の動作は異なる順序で実装されてもよい。たとえば、ブロック６０５、６１０および／または６１５の任意のものは任意の順序で実行されうる。追加的または代替的に、二つ以上の動作が同時に実行されてもよい。たとえば、ブロック６２０、６２５、６３０および／または６３５の任意のものが同時に実行されてもよい。もう一つの例として、ブロック６０５、６１０および／または６１５の任意のものが同時に実行されてもよい。さらに、概説された動作およびアクションは例として与えられており、開示される実施形態の本質を損なうことなく、それらの動作およびアクションの一部が任意的であってもよく、より少数の動作およびアクションに組み合わされてもよく、あるいは追加的な動作およびアクションに展開されてもよい。
【００６９】
本稿に開示される技術の範囲内の実施形態は、コンピュータ実行可能命令またはデータ構造を担持または記憶するコンピュータ可読媒体を含んでいてもよい。そのようなコンピュータ可読媒体は、汎用または特殊目的コンピュータによってアクセスされうるいかなる利用可能な媒体を含んでいてもよい。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、またはコンピュータ実行可能な命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または特殊目的コンピュータによってアクセスされうる他の任意の記憶媒体を含んでいてもよい。ネットワークまたは他の通信接続（結線、無線または結線と無線の組み合わせ）を通じて情報がコンピュータに転送または提供されるとき、コンピュータは適正に該接続をコンピュータ可読媒体としてみなす。このように、いかなるそのような接続も、適正にコンピュータ可読媒体と称される。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれうる。
【００７０】
コンピュータ実行可能な命令はたとえば、汎用コンピュータ、特殊目的コンピュータまたは特殊目的処理装置にある種の機能または一群の機能を実行させる命令およびデータを含む。主題は、構造的な特徴および／または方法論的な工程に固有の言辞で記述されているが、付属の請求項において定義される主題は必ずしも上記の特定の特徴または工程に限定されないことは理解しておくものとする。むしろ、上記の特定の特徴および工程は、請求項を実装する例示的な形として開示されている。
【００７１】
本開示での用法では、用語「モジュール」または「コンポーネント」は、該モジュールまたはコンポーネントのアクションを実行するよう構成された特定のハードウェア実装および／またはコンピューティング・システムの汎用ハードウェア（たとえばコンピュータ可読媒体、処理装置など）に記憶および／または実行さうれるソフトウェア・オブジェクトまたはルーチンを指しうる。いくつかの実施形態では、本開示に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、（たとえば別個のスレッドとして）コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装されてもよい。本開示に記載されるシステムおよび方法のいくつかは、一般に、（汎用ハードウェアに記憶および／または実行される）ソフトウェアで実装されるものとして記述されるが、個別のハードウェア実装またはソフトウェアと個別のハードウェア実装の組み合わせも可能であり、考えられている。本開示において、「コンピューティング装置」は、本開示で先に定義したような任意のコンピューティング・システムまたはコンピューティング・システム上で走る任意のモジュールもしくはモジュールの組み合わせでありうる。
【００７２】
本開示および特に付属の請求項（たとえば付属の請求項の本文）において使われる用語は一般に「オープン」な用語として意図されている（たとえば、用語「含む」は「含むがそれに限られない」と解釈されるべきであり、用語「もつ」は「少なくとも…をもつ」と解釈されるべきであり、用語「含む」は「含むがそれに限られない」と解釈されるべきであるなど）。
【００７３】
さらに、導入される請求項の記載の特定の数が意図される場合、そのような意図は請求項において明示的に記載される。そのような記載のない場合には、そのような意図はない。たとえば、理解の助けとして、以下の付属の請求項は、請求項の記載を導入するために「少なくとも一つの」および「一つまたは複数の」という導入句の使用を含むことがありうる。しかしながら、たとえ同じ請求項が導入句「一つまたは複数の」または「少なくとも一つの」および「a」または「an」のような不定冠詞を含むときでも、そのような句の使用は、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入された請求項の記載を含む何らかの特定の請求項を、そのような記載を一つだけ含む実施形態に限定することを含意していると解釈されるべきではない（たとえば、「a」および／または「an」は、「少なくとも一つの」または「一つまたは複数の」を意味するものと解釈されるべきである）。同じことは、請求項の記載を導入する定冠詞の使用についても成り立つ。
【００７４】
さらに、たとえ導入される請求項の記載の特定の数が明示的に記載されていたとしても、当業者は、そのような記載が、少なくともその記載された数を意味すると解釈されるべきであることを認識するであろう（たとえば、他の修飾語なしで単に「二つの記載」という記載は、少なくとも二つの記載または二つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣなどのうちの少なくとも一つ」または「Ａ、ＢおよびＣなどの一つまたは複数」に類似する慣用句が使われる事例においては、一般に、そのような構文はＡだけ、Ｂだけ、Ｃだけ、ＡおよびＢ両方、ＡおよびＣ両方、ＢおよびＣ両方またはＡ、ＢおよびＣ全部などを含むことが意図される。
【００７５】
さらに、明細書であれ請求項であれ図面であれ、二つ以上の代替的な用語を呈示するあらゆる離接的な語句は、該用語の一つを含む、該用語のいずれかを含むまたは該用語の両方を含む可能性を考えているものと理解されるべきである。たとえば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むと理解されるべきである。
【００７６】
本開示において記載されるすべての例および条件付きの言辞は、本開示および発明者によって当技術分野の発展のために寄与される概念の理解において読者を助ける教育目的を意図されており、そのような特定的に挙げられる例および条件に限定することなく解釈されるものとする。本開示の実施形態について詳細に述べてきたが、本開示の精神および範囲から外れることなく、これにさまざまな変化、代替および変更をなすことができることは理解しておくべきである。
【００７７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する段階であって、前記クライアント・システムは、ネットワーク要素およびクライアント・コンピューティング装置を含み、前記サービス・プロバイダー・システムは、前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供するよう構成されたコントローラ・プログラムを含む、段階と；
前記レイテンシーが閾値より長いことに基づいて、前記コントローラ・プログラムを、前記クライアント・コンピューティング装置によって実行されるよう前記クライアント・コンピューティング装置に送信して、それにより、前記クライアント・コンピューティング装置が前記クライアント・システムの前記ネットワーク要素にコントローラ・サービスを提供するようにする段階とを含む、
方法。
（付記２）
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記コントローラ・プログラムを実行している前記サービス・プロバイダー・システムのサービス・プロバイダー・コンピュータと前記ネットワーク要素との間のレイテンシーを測定することを含む、付記１記載の方法。
（付記３）
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記サービス・プロバイダー・システムのポータルと前記クライアント・コンピューティング装置との間のレイテンシーを測定することを含む、付記１記載の方法。
（付記４）
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記コントローラ・プログラムを実行している前記サービス・プロバイダー・システムのサービス・プロバイダー・コンピュータと前記クライアント・コンピューティング装置との間のレイテンシーを測定することを含む、付記１記載の方法。
（付記５）
クライアント・システムとサービス・プロバイダー・システムとの間のレイテンシーを決定する前記段階が、前記サービス・プロバイダー・システムのポータルと前記ネットワーク要素との間のレイテンシーを測定することを含む、付記１記載の方法。
（付記６）
前記コントローラ・プログラムを送信することがさらに、前記コントローラ・プログラムのメモリ使用に基づく前記クライアント・コンピューティング装置のメモリ負担、前記コントローラ・プログラムによって使用される記憶ボリュームに基づく前記クライアント・コンピューティング装置の記憶負担および前記コントローラ・プログラムのプロセッサ利用に基づく前記クライアント・コンピューティング装置の処理負担のうちの一つまたは複数に基づく、付記１記載の方法。
（付記７）
前記クライアント・システムにおいて現在動作している一つまたは複数のコンピューティング装置を同定する段階であって、前記一つまたは複数のコンピューティング装置は前記クライアント・コンピューティング装置を含む、段階と；
前記一つまたは複数のコンピューティング装置のうちから前記コントローラ・プログラムを実行すべき前記クライアント・コンピューティング装置を選択する段階と；
前記クライアント・コンピューティング装置に前記コントローラ・プログラムを実行するよう要求する段階と；
前記クライアント・コンピューティング装置が前記コントローラ・プログラムを実行していることの確認を受領する段階と；
前記サービス・プロバイダー・システムにおいて前記コントローラ・プログラムをシャットダウンする段階とをさらに含む、
付記１記載の方法。
（付記８）
前記コントローラ・プログラムを前記クライアント・コンピューティング装置に送信する前に、前記クライアント・コンピューティング装置を操作しているユーザーの認証を受領する段階をさらに含む、付記１記載の方法。
（付記９）
クライアント・システムのクライアント・コンピューティング装置においてサービス・プロバイダー・システムからコントローラ・プログラムを受領する段階とであって、前記コントローラ・プログラムは、前記クライアント・システムのネットワーク要素にコントローラ・サービスを提供するよう構成されている、段階と；
前記クライアント・コンピューティング装置によって前記コントローラ・プログラムを動作させる段階と；
前記サービス・プロバイダー・システムに、前記クライアント・コンピューティング装置が前記コントローラ・プログラムを動作させていることを通知する段階とを含む、
方法。
（付記１０）
前記クライアント・コンピューティング装置が前記コントローラ・プログラムを実行している間に、前記クライアント・コンピューティング装置においてシャットダウン要求を受領する段階と；
前記コントローラ・プログラムを実行するための前記クライアント・システムの別のクライアント・コンピューティング装置が同定されるまで、前記クライアント・コンピューティング装置のシャットダウン・プロセスを中断する段階と；
前記コントローラ・プログラムを前記別のクライアント・コンピューティング装置に提供する段階と；
前記クライアント・コンピューティング装置の前記シャットダウン・プロセスを完了する段階とをさらに含む、
付記９記載の方法。
（付記１１）
前記ネットワーク要素は第一のネットワーク要素であり、当該方法はさらに、前記サービス・プロバイダー・システムが前記クライアント・システムの第二のネットワーク要素にコントローラ・サービスを提供している間に、前記第一のネットワーク要素にコントローラ・サービスを提供するために前記サービス・プロバイダー・システムからの追加的なコントローラ・プログラムを要求する段階をさらに含む、付記９記載の方法。
（付記１２）
前記クライアント・システムの第二のネットワーク要素にコントローラ・サービスを提供するために、前記コントローラ・プログラムを、前記サービス・プロバイダー・システムにおいて動作している追加的なコントローラ・プログラムとクラスタリングすることをさらに含む、付記９記載の方法。
（付記１３）
前記クラスタリングにより、前記クライアント・コンピューティング装置上で動作している前記コントローラ・プログラムが、前記ネットワーク要素を含む前記クライアント・システムの複数のネットワーク要素にコントローラ・サービスを提供する複数のコントローラ・サービスのプールに加わる、付記１２記載の方法。
（付記１４）
サービス・プロバイダー・システムと顧客システムとを有するコントローラ・システムであって、
前記サービス・プロバイダー・システムは、前記サービス・プロバイダー・システムにおいて動作している一組の第一のコントローラ・プログラムを含み、
前記顧客システムは、
複数のネットワーク要素と；
前記複数のネットワーク要素のうちの少なくとも一つにコントローラ・サービスを提供するために前記サービス・プロバイダー・システムから受領される第二のコントローラ・プログラムを動作させる顧客コンピュータとを有しており、前記複数のネットワーク要素のうちの残りは前記サービス・プロバイダー・システムにおいて動作する前記一組の第一のコントローラ・プログラムからコントローラ・サービスを受ける、
コントローラ・システム。
（付記１５）
前記サービス・プロバイダー・システムが、前記サービス・プロバイダー・システムと前記顧客システムとの間のレイテンシーをモニタリングし、前記レイテンシーが閾値を超えることに応答して前記クライアント・コンピューティング装置に前記第二のコントローラ・プログラムを送信するよう構成されている、付記１４記載のコントローラ・システム。
（付記１６）
前記一組の第一のコントローラ・プログラムおよび前記第二のコントローラ・プログラムがコントローラ・プールにいて動作している、付記１４記載のコントローラ・システム。
（付記１７）
前記サービス・プロバイダー・システムが、前記顧客システムによってアクセス可能でありかつ前記顧客システムが前記サービス・プロバイダー・システムと対話できるようにするよう構成されている、ポータルを有する、付記１４記載のコントローラ・システム。
（付記１８）
前記ポータルがウェブ・ポータルを含む、付記１７記載のコントローラ・システム。
（付記１９）
前記顧客システムがさらに、前記第二のコントローラ・プログラムを動作させるよう構成された追加的なクライアント・コンピューティング装置を有しており、前記追加的なクライアント・コンピューティング装置は前記第二のコントローラ・プログラムを受領するが実行しない、付記１４記載のコントローラ・システム。
（付記２０）
前記サービス・プロバイダー・システムは、前記一組の第一のコントローラ・プログラムの負荷をモニタリングし、前記一組の第一のコントローラ・プログラムの前記負荷が閾値を超えることに応答して前記クライアント・コンピューティング装置に前記第二のコントローラ・プログラムを送信するよう構成されている、付記１４記載のコントローラ・システム。
【符号の説明】
【００７８】
１１０  サービス・プロバイダー・システム
１１２  ポータル
１１６  コントローラ
１２０  クライアント・システム
１２２  クライアント・コンピューティング装置
１２４  ネットワーク要素
１２６  コントローラ
３１０  プロセッサ
３２０  記憶装置
３３０  メモリ
３４０  通信装置
４１０  トリガー・イベントがあるかどうかモニタリング
４２０  クライアント・システム・コントローラ・プログラムをトリガーするトリガー・イベントが発生したか？
４３０  スイッチにコントローラ・サービスを提供するよう、コントローラ・プログラムをクライアント・コンピューティング装置に送信
５１０  クライアント・システムとサービス・プロバイダー・システムの間のレイテンシーを決定。サービス・プロバイダー・システムは、クライアント・システムのスイッチにコントローラ・サービスを提供するためにコントローラ・プログラムを動作させる
５２０  クライアント・コンピューティング装置を含む、クライアント・システムにおいて現在動作している一つまたは複数のコンピューティング装置を同定
５３０  コントローラ・プログラムを実行するために、クライアント・コンピューティング装置を選択
５４０  クライアント・コンピューティング装置を操作しているユーザーの認証情報を受領
５５０  スイッチにコントローラ・サービスを提供するよう、コントローラ・プログラムをクライアント・コンピューティング装置に送信
５６０  クライアント・コンピューティング装置にコントローラ・プログラムを実行することを要求
５７０  クライアント・コンピューティング装置がコントローラ・プログラムを実行していることの確認を受領
５８０  サービス・プロバイダー・システムにおいてコントローラ・プログラムをシャットダウン
６０５  サービス・プロバイダー・システムがクライアント・システムの諸スイッチにコントローラ・サービスを提供している間に、サービス・プロバイダー・システムからの追加的なコントローラ・プログラムを要求
６１０  クライアント・コンピューティング装置の現在の負荷をサービス・プロバイダー・システムに報告
６１５  クライアント・システムにおいて、サービス・プロバイダー・システムからコントローラ・プログラムを受領
６２０  クライアント・システムのスイッチにコントローラ・サービスを提供するために、クライアント・システムのクライアント・コンピューティング装置においてコントローラ・プログラムを動作させる
６２５  サービス・プロバイダー・システムに、クライアント・コンピューティング装置がコントローラ・プログラムを動作させていることを通知
６３０  コントローラ・プログラムを、サービス・プロバイダー・システムにおいて動作している追加的なコントローラ・プログラムとクラスタリング
６３５  クライアント・コンピューティング装置がコントローラ・プログラムを実行している間に、クライアント・コンピューティング装置においてシャットダウン要求を受領
６４０  コントローラ・プログラムを実行するためのクライアント・システムの追加的なクライアント・コンピューティング装置が同定されるまで、クライアント・コンピューティング装置のシャットダウン・プロセスを中断
６４５  コントローラ・プログラムを追加的なクライアント・コンピューティング装置に提供
６５０  クライアント・コンピューティング装置のシャットダウン・プロセスを完了
【図１】
2017130934.tif 000003
【図２】
2017130934.tif 000004
【図３】
2017130934.tif 000005
【図４】
2017130934.tif 000006
【図５】
2017130934.tif 000007
【図６Ａ】
2017130934.tif 000008
【図６Ｂ】
2017130934.tif 000009