(57)【要約】  一実施形態において、コンピュータにより実施される方法により、ネットワーク上でサービスを提供する。当該方法は、（ａ）ルータ上で、遠隔サーバからの実行可能な複数の命令を要求する段階であって、実行可能な複数の命令は、ルータがどのようにネットワークのユーザのために要求されたサービスを提供するよう動作するかを特定する、段階と、（ｂ）それらの命令を受信する段階と、（ｃ）受信された命令を実行するよう、ルータ上でスレッドを初期化する段階と、（ｄ）ルータの設定が変更されているかを判断する段階と、（ｅ）ルータの設定が変更されていると判断された場合、ルータの設定における変更に従って、サービスを適用するよう、初期化されたスレッド上でそれらの命令を実行する段階とを備える。
2017529768.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上でサービスを提供するための、コンピュータにより実施される方法であって、
（ａ）ルータ上で、遠隔サーバから実行可能な複数の命令を要求する段階であって、実行可能な前記複数の命令は、前記ルータがどのように前記ネットワークのユーザのために要求されたサービスを提供するよう動作するかを特定する、段階と、
（ｂ）前記複数の命令を受信する段階と、
（ｃ）前記ルータ上で、受信された前記複数の命令を実行するよう、スレッドを初期化する段階と、
（ｄ）前記ルータの設定が変更されているかを判断する段階と、
（ｅ）前記ルータの前記設定が変更されていると判断された場合、前記ルータの設定における前記変更に従って前記サービスを適用するよう、初期化された前記スレッド上で前記複数の命令を実行する段階と
を備える
方法。
【請求項２】
（ｆ）前記ルータ上で、前記ユーザが前記ネットワークに新たに接続されるかと判断する段階と、
（ｇ）前記ルータは前記ユーザが新たに接続されると判断した場合、前記ユーザが加入したサービスについて前記遠隔サーバに照会する段階と
をさらに備える請求項１に記載の方法。
【請求項３】
前記ネットワーク上の複数のルータは、前記サービスを提供し、実行可能な前記複数の命令は、前記複数のルータの全てがどのように特定された前記サービスを提供するよう動作するかを特定する、請求項１または２に記載の方法。
【請求項４】
（ｆ）前記ルータでネットワークのトラフィックを評価し、前記トラフィックが前記ネットワークの前記ユーザに関連付けられるか否かを判断する段階と、
（ｇ）前記ルータは前記トラフィックが前記ネットワークの前記ユーザに関連付けられると判断した場合、前記スレッドに、前記トラフィック上にサービスを適用するよう通知する段階と
をさらに備える請求項１に記載の方法。
【請求項５】
（ｆ）前記サービスにおける変更について前記遠隔サーバを定期的にチェックする段階と、
（ｇ）前記サービスが変更した場合、前記ルータがどのように動作するかを特定する、更新された実行可能な複数の命令を前記ルータで受信する段階と
をさらに備える請求項１に記載の方法。
【請求項６】
（ｆ）第２ルータ上で動作する第２スレッドからパケットを前記スレッドで受信する段階であって、前記第２スレッドは、遠隔サーバからの前記複数の命令を実行する、段階と、
（ｇ）前記スレッドで、前記第２スレッドも前記サービスを提供することに参加するかを判断する段階と
をさらに備える請求項１に記載の方法。
【請求項７】
（ｈ）第３ルータ上で動作する第３スレッドからのパケットを前記スレッドで受信する段階であって、前記第３スレッドは、遠隔サーバからの前記複数の命令を実行する、段階と、
（ｉ）前記第３スレッドが前記サービスを提供することに参加するかを前記スレッドで判断する段階と、
（ｊ）前記第２ルータ及び前記第３ルータの両方を介して到達可能なアドレスのために定められたトラフィックを、前記ルータで受信する段階と、
（ｋ）前記複数の命令に従って、前記第２ルータまたは前記第３ルータ上で前記トラフィックを転送するか否かを判断する段階と
をさらに備える請求項６に記載の方法。
【請求項８】
（ｄ）判断する前記段階は、前記ユーザに関連付けられて前記ルータにより転送される、ネットワークのトラフィックに関する更新された複数のメトリックを受信する段階を含み、
（ｅ）実行する前記段階は、前記遠隔サーバに前記複数のメトリックを送信する段階を含む、請求項１に記載の方法。
【請求項９】
（ｄ）判断する前記段階は、前記ユーザに関連付けられる帯域幅のトラフィックの量を記述する、更新された情報を受信する段階を含み、
（ｅ）実行する前記段階は、
（ｉ）更新された前記情報が条件を満たすか否かを判断する段階と、
（ｉｉ）前記サービスが提供する前記ユーザに割り当てられた帯域幅の量を変更するよう、前記ルータの前記設定を更新する段階とを含む、請求項１に記載の方法。
【請求項１０】
ネットワーク上でサービスを提供するための方法を実行するよう、少なくとも１つの機械により実行可能な複数の命令のプログラムであって、
前記方法は、
（ａ）ルータ上で、遠隔サーバから実行可能な複数の命令を要求する段階であって、実行可能な前記複数の命令は、前記ルータがどのように前記ネットワークのユーザのために要求されたサービスを提供するよう動作するかを特定する、段階と、
（ｂ）前記複数の命令を受信する段階と、
（ｃ）前記ルータ上で、受信された前記複数の命令を実行するよう、スレッドを初期化する段階と、
（ｄ）前記ルータの設定が変更されているかを判断する段階と、
（ｅ）前記ルータの前記設定が変更されていると判断された場合、前記ルータの設定における前記変更に従って、前記サービスを適用するよう、初期化された前記スレッド上で、前記複数の命令を実行する段階とを含む、
プログラム。
【請求項１１】
前記方法は
（ｆ）前記ルータ上で、前記ユーザが前記ネットワークに新たに接続されるかを判断する段階と、
（ｇ）前記ルータは前記ユーザが新たに接続されると判断した場合、前記ユーザが加入した前記サービスについて前記遠隔サーバに照会する段階とをさらに含む、
請求項１０に記載のプログラム。
【請求項１２】
前記ネットワーク上における複数のルータは、前記サービスを提供し、実行可能な前記複数の命令は、前記複数のルータの全てがどのように特定された前記サービスを提供するよう動作するかを特定する、請求項１０または１１に記載のプログラム。
【請求項１３】
前記方法は、
（ｆ）前記ルータでネットワークのトラフィックを評価して前記トラフィックが前記ネットワークの前記ユーザに関連付けられるか否かを判断する段階と、
（ｇ）前記ルータは前記トラフィックが前記ネットワークの前記ユーザに関連付けられると判断した場合、前記スレッドに、前記トラフィック上にサービスを適用するよう通知する段階とをさらに含む、請求項１０に記載のプログラム。
【請求項１４】
前記方法は、
（ｆ）前記サービスにおける変更について前記遠隔サーバを定期的にチェックする段階と、
（ｇ）前記サービスが変更した場合、前記ルータがどのように動作するかを特定する、更新された実行可能な複数の命令を、前記ルータで受信する段階とをさらに含む、請求項１０に記載のプログラム。
【請求項１５】
前記方法は、
（ｆ）第２ルータ上で動作する第２スレッドからのパケットを前記スレッドで受信する段階であって、前記第２スレッドは、遠隔サーバからの前記複数の命令を実行する、段階と、
（ｇ）前記第２スレッドも前記サービスを提供することに参加するかを前記スレッドで判断する段階とをさらに含む、請求項１０に記載のプログラム。
【請求項１６】
前記方法は、
（ｈ）第３ルータ上で動作する第３スレッドからのパケットを前記スレッドで受信する段階であって、前記第３スレッドは、遠隔サーバからの前記複数の命令を実行する、段階と、
（ｉ）前記第３スレッドが前記サービスを提供することに参加するかを前記スレッドで判断する段階と、
（ｊ）前記第２ルータ及び前記第３ルータの両方を介して到達可能なアドレスのために定められたトラフィックを前記ルータで受信する段階と、
（ｋ）前記複数の命令に従って、前記第２ルータまたは前記第３ルータ上で前記トラフィックを転送するか否かを判断する段階とをさらに含む、請求項１５に記載のプログラム。
【請求項１７】
（ｄ）判断する前記段階は、前記ユーザに関連付けられて前記ルータにより転送される、ネットワークのトラフィックに関する更新された複数のメトリックを受信する段階を含み、
（ｅ）実行する前記段階は、前記遠隔サーバに前記複数のメトリックを送信する段階を含む、請求項１０に記載のプログラム。
【請求項１８】
（ｄ）判断する前記段階は、前記ユーザに関連付けられる帯域幅のトラフィックの量を記述する更新された情報を受信する段階を含み、
（ｅ）実行する前記段階は、
（ｉ）更新された前記情報が条件を満たすか否かを判断する段階と、
（ｉｉ）前記サービスが提供する前記ユーザに割り当てられた帯域幅の量を変更するよう、前記ルータの前記設定を更新する段階とを含む、請求項１０に記載のプログラム。
【請求項１９】
請求項１０から１８の何れか一項に記載のプログラムを有形に具体化する非一時的なプログラム記憶デバイス。
【請求項２０】
ネットワーク上でサービスを提供するためのシステムであって、
ルーティングデバイスと、
前記ルーティングデバイス上に実装されるサービスローダであって、（ｉ）遠隔サーバからの実行可能な複数の命令を要求し、実行可能な前記複数の命令は、前記ルーティングデバイスがどのように前記ネットワークのユーザのために要求されたサービスを提供するよう動作するかを特定し、（ｉｉ）前記複数の命令を受信し、（ｉｉｉ）前記ルーティングデバイス上で、受信された前記複数の命令を実行するようスレッドを初期化するサービスローダと、
前記ルーティングデバイス上で、前記ルーティングデバイスの設定が変更されているかを判断するカーネルと
を備え、
前記ルーティングデバイスの前記設定が変更されていると判断された場合、初期化された前記スレッドは、前記ルーティングデバイスの設定における前記変更に従って、前記サービスを適用するよう複数の命令を実行する、
システム。
【請求項２１】
ネットワーク上でサービスを提供するためのコンピュータにより実施される方法であって、
（ａ）実行可能な複数の命令に対する、ルータからの要求をサーバで受信する段階であって、実行可能な前記複数の命令は、前記ルータがどのように前記ネットワークのユーザのために要求されたサービスを提供するよう動作するかを特定する、段階と、
（ｂ）要求された前記複数の命令を実行するスレッドとしての初期化のために前記複数の命令を前記ルータに送信する段階と
を備え、
前記ルータは、前記ルータの設定が変更されているかを判断し、かつ、前記ルータの前記設定が変更されていると判断された場合、前記ルータの設定における前記変更に従って、前記サービスを適用するよう、初期化された前記スレッド上で前記複数の命令を実行する、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本分野は、概して、ネットワーク設定に関する。
【背景技術】
【０００２】
通信ネットワークは、例えば、データが２つの地理的に遠く離れた場所の間で転送されることを可能にするネットワーク接続を提供し得る。ネットワーク接続は、ルータのような複数の通信デバイスを接続する複数のリンクに及び得る。ネットワークは、リンクがどのように、通信デバイスを介して相互接続するかに応じて異なるトポロジを有し得る。特定のネットワークのトポロジが与えられたとき、複数のルートが、送信元と宛先との間で利用可能であり得る。 
【０００３】
サービスプロバイダが、接続サービスのようなネットワークサービスを提供する通信ネットワークを設定し得る。サービスプロバイダは、特定のレベルの帯域幅、待機時間、またはジッタなどの特定のサービスレベルで接続サービスを維持し得る。例えば、ユーザが、４００Ｍビット／秒の帯域幅を有するその場所のうちの２つの間において、イーサネット（登録商標）接続を要求し得る。 
【０００４】
ネットワークサービスを提供する通信ネットワークを設定するために、提供サーバが、ネットワーク接続のルートに沿って複数のルーティングデバイスに設定メッセージを送信し得る。設定メッセージは、例えば、特定のユーザからの、またはサービスを介する送信において提供するべく、データをどのようにルーティングするか、またはサービスレベルのデータをルーティングするよう複数のルーティングデバイスを命令し得る。
【０００５】
ネットワークサービスに対して変更を追加または実行するために、サービスプロバイダのネットワークは一般に、インベントリデータベースを用いる。インベントリデータベースは、異なるユーザ、それらの関連ネットワークサービス、及びネットワークサービスを提供するために用いられるルーティングデバイスを追跡する。新しいサービスがインベントリデータベースに追加された場合、提供サーバは、インベントリデータベースにおける関連ルーティングデバイスに、設定メッセージをプッシュする。例えば、サービスレベルを変更するよう既存サービスが修正された場合、提供サーバは、メッセージをどのルーティングデバイスに送信するかを判断するべく、インベントリデータベースを調べ得る。このように、中央提供サーバ及びインベントリデータベースは、一般に、どのルーティングデバイスを設定する必要があるかを判断する。
【０００６】
中央提供サーバにどのルーティングデバイスを設定するかを判断させることは、利点がある一方、ボトルネックも生じさせ得る。サービスの提供を遅延させ得る。また、ルーティングデバイスが異種な場合があり、提供サーバに様々な異なる種類の機器を設定させることが、さらなる複雑さをもたらし得る。
【発明の概要】
【０００７】
一実施形態において、コンピュータにより実施される方法により、ネットワーク上でサービスを提供する。方法は、（ａ）ルータ上で、遠隔サーバから実行可能な複数の命令を要求する段階であって、実行可能なそれらの命令は、ルータがどのようにネットワークのユーザのために要求されたサービスを提供するよう動作するかを特定する、段階と、（ｂ）それらの命令を受信する段階と、（ｃ）受信されたそれらの命令を実行するよう、スレッドをルータ上で初期化する段階と、（ｄ）ルータの設定が変更されているかを判断する段階と、（ｅ）ルータの設定が変更されていると判断された場合、ルータの設定における変更に従って、サービスを適用するよう、初期化されたスレッド上でそれらの命令を実行する段階とを備える。
【０００８】
システム及びコンピュータプログラム製品の実施形態も開示される。 
【０００９】
本発明の複数のさらなる実施形態、特徴、及び利点、並びに様々な実施形態の構造及び操作が、以下にて複数の添付図面を参照して詳細に説明される。 
【図面の簡単な説明】
【００１０】
本明細書に組み込まれ、本明細書の一部を形成する添付図面は、本開示を図示し、本説明と合わせて、本開示の複数の原理を説明し、当業者が本開示を作成及び使用することができるようにさらに役に立つ。
【００１１】
【図１】一実施形態に係る、複数のルーティングデバイスに、実行可能な複数のサービスを提供するためのシステムのダイアグラムである。
【００１２】
【図２】一実施形態に係る、図１のシステムのルーティングデバイスをより詳細に示すダイアグラムである。
【００１３】
【図３】一実施形態に係る、スイッチに新しいサービスを提供するための方法のフローチャートである。
【００１４】
【図４】一実施形態に係る、スイッチの設定を変更するための方法のフローチャートである。
【００１５】
概して、要素が初めて現れる図面は、対応する参照番号の左端の１桁または複数の桁の数字により示されている。それらの図面において、同様の参照番号は、同一または機能的に同様の要素を示し得る。
【発明を実施するための形態】
【００１６】
上述のように、中央提供サーバ及びインベントリデータベースに複数のネットワークサービスを統合させることで、遅延及び複雑さをもたらす場合がある。このことを対処するために、本明細書における複数の実施形態は、複数のルーティングデバイスが、オーケストレーションサーバ処理を行うことなく、サービス変更を動的に学習することを可能にする。
【００１７】
図１は、一実施形態に係る、複数のルーティングデバイスに、実行可能な複数のサービスを提供するためのシステム１００のダイアグラムである。システム１００は、２つのユーザサイト、ユーザサイト１０２及び１０４を接続するサービスプロバイダのネットワーク１０６を備える。
【００１８】
一例において、ユーザサイト１０２及び１０４のそれぞれは、顧客の場所であり得、顧客は、サービスプロバイダのネットワーク１０６がその２つの場所の間の接続を提供することを要求し得る。サービスプロバイダのネットワーク１０６は、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、またはワイドエリアネットワーク（ＷＡＮ）であり得る。サービスプロバイダのネットワーク１０６は、任意のポイント・ツー・ポイントまたはマルチポイント・ツー・マルチポイントのネットワーキングプロトコルを利用し得る。用いられる複数のネットワークアクセスプロトコルは、例えば、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、イーサネット（登録商標）、非同期転送モード（ＡＴＭ）、ハイレベルデータリンク制御（ＨＤＬＣ）、またはパケットリレーを含み得る。 
【００１９】
サービスプロバイダのネットワーク１０６は、ルーティングデバイス１２０、１２２、及び１２４などの複数のルーティングデバイスを含む。ルーティングデバイス１２０、１２２、及び１２４は便宜上、本明細書において、場合によって、ルータとして称される。複数のルーティングデバイス、またはルータは、リンクにより相互接続される。例えば、ルーティングデバイス１２０及び１２２は、リンク１３０により接続される。ルーティングデバイスは、パケットを転送する機器であり、データリンク層（オープンシステム相互接続層２）及びネットワーク層（オープンシステム相互接続層３）における機器を含む。
【００２０】
パケットを受信次第、ルーティングデバイスは、例えば、ルータのルーティングテーブルなどのルータ自体の設定、及び、パケットの宛先アドレスなどのパケットの特性に基づき、どのリンクで転送するかを判断し得る。上述のように、典型的なシステムにおいて、この設定に対する変更は、中央オーケストレーションシステムを介して行われる。例えば、ユーザは、将来のある時間に対して帯域幅の増加を予定し得る。オーケストレーションサーバがスケジューリングされた時間になったと判断した場合、オーケストレーションサーバは、帯域幅の増加を可能にするよう、複数のルーティングデバイスに、それらの設定を変更するよう複数の命令を送信し得る。このように、オーケストレーションサーバは、ネットワークサービスの変更をどのように提供するかを説明する機能を実行し得る。
【００２１】
ここで開示されている複数の実施形態において、ネットワークサービスをどのように提供するかを判断するこの機能は、オーケストレーションサーバ上で発生しない場合があるが、ルーティングデバイス自体の上で発生し得る。特に、ルーティングデバイス１２０、１２２、及び１２４のそれぞれは、サービスをどのように実装するかを特定する処理１４０、１４２、及び１４４といった動作する処理をそれぞれ有する。処理、またはデーモンは、そのルーティングデバイス内における実行のそれ自体のスレッドを動作させ得る。処理、またはデーモンは、特定のユーザに属しているか、若しくはサービスに割り当てられている、新しいトラフィックが受信された場合、特定の機能を実行し得る。さらに、処理、またはデーモンは、設定変更がそのサーバ上で行われる場合に、特定の機能を実行し得る。まださらに、処理、またはデーモンは、受信されたトラフィックに関わらず、特定の機能を定期的に実行し得る。このように、複数の実施形態によれば、複数のルータ自体が複数のネットワークサービスを実装することが可能である。
【００２２】
しかし、複数のネットワークサービスを実装する機能を複数のルーティングデバイスに実行させることはまだ、特定の外部の遠隔サーバを必要とすることを除去していない場合がある。特に、システム１００は、ルーティングデバイス１２０、１２２、及び１２４が、それらのそれぞれのサービス処理１４０、１４２、及び１４４をロードするように通信するネットワーク制御サーバ１１０を含む。ルーティングデバイス１２０、１２２、及び１２４と通信するために、ネットワーク制御サーバ１１０は、サービスプロバイダのネットワーク１０６に含まれ、または連結され得る。
【００２３】
ネットワーク制御サーバ１１０は、提供モジュール１１４と、サービスモジュール１１２とを含む。提供モジュール１１４は、サービスプロバイダのネットワーク１０６の加入したユーザ及び関連サービスのリストを維持する。ルーティングデバイスが新規ユーザに属するトラフィックを検出した場合、ルーティングデバイスは、ネットワーク制御サーバ１１０にメッセージを送信し得、ネットワーク制御サーバ１１０は次に、それを提供モジュール１１４に転送する。メッセージに応答して、提供モジュール１１４は、特定のユーザを識別するデータ（送信元アドレスまたはサブネットなど）を、関連サービスにマッピングするデータベース（示さず）などのメモリに照会し得る。次に、提供モジュール１１４は、その照会の結果を、その要求を行ったルーティングデバイスに送り返し得る。その応答は、ユーザが加入したサービスのそれぞれを識別し得る。
【００２４】
ルーティングデバイスがサービスのリストを受信した場合、ルーティングデバイスは、別のメッセージをネットワーク制御サーバ１１０に送信し得、ネットワーク制御サーバ１１０は、今回、その要求をサービスモジュール１１２に転送する。サービスモジュール１１２は、サービスプロバイダのネットワーク１０６により提供される全てのサービスを列挙するレポジトリを含み得る。各サービスに対して、レポジトリは、ルーティングデバイスがどのようにサービスを提供するよう動作するかの複数の命令を含む実行可能なファイルを含み得る。実行可能なファイルは、例えば、コンパイルの２進数の実行可能なファイル、または未コンパイルのスクリプトであり得る。その要求に応答して、サービスモジュール１１２は、要求されたサービスのために実行可能なファイルを引き出し得、それらをルーティングデバイスに戻し得る。明確さのために、サービスモジュール１１２及び提供モジュール１１４が本明細書において単一のサーバ上に示されている一方、それらは、別個のサーバ上にも実装され得る。
【００２５】
実行可能なファイルを受信次第、ルーティングデバイスは、各サービスに対するスレッドを初期化し得る。スレッドは、要求されたサービスの機能を提供する。
【００２６】
図１では、処理１４０、１４２、及び１４４が異なるルーティングデバイス上で動作しているので、異なる参照番号を用いて処理１４０、１４２、及び１４４を識別する。しかし、処理１４０、１４２、及び１４４のそれぞれは、サービスモジュール１１２から引き出された同じ実行可能なファイルの具体化であり得る。その実行可能なファイルは、サービス全体、及び、そのサービスを提供することに参加するルーティングデバイス１２０、１２２、及び１２４のそれぞれに対し、機能を特定し得る。しかし、処理１４０、１４２、及び１４４が同じサービス実行ファイルを実行している場合があったとしても、それらは、異なる機能を有し得る。特に、サービス実行ファイルは、異なるルーティングデバイスに対して異なる機能を特定し得る。起動時、処理は、デバイスを識別して実行可能なファイルが特定のデバイスのために特定した機能を実行するよう、ルーティングデバイスの設定をチェックし得る。
【００２７】
一例において、ユーザは、ユーザのネットワークのトラフィックに関する複数のメトリックを収集するサービスに加入し得る。従来、サービスを実装するために、オーケストレーションサーバは、ユーザのトラフィックに関わるルーティングデバイスのその情報を用いて、それらのメトリックについてそれらに照会するルーティングデバイスに、要求を定期的に送信する。しかしながら、ここで開示されている一実施形態において、処理１４０、１４２、及び１４４は、データを収集し、加入したサービスにより特定されると、そのデータを提供し得る。
【００２８】
別の例において、ユーザは、時間にわたって特定のサービスレベルを変更する動的容量サービスに加入し得る。変更は、スケジューリングされた時間におけるものであり得、または、変更は、ネットワーク状態に応答するものであり得る。例えば、特定の使用メトリック（帯域幅の利用など）が閾値を超えた場合、サービスは、接続のためにより大きい帯域幅を可能にするよう、ルータ上のポリサを変更し得る。従来、オーケストレーションサーバは、時間またはネットワーク状態を監視し、ルーティングデバイスに、いつスケジューリングされた時間またはネットワーク接続が合致するかの命令を送信し得る。しかしながら、ここで開示されている一実施形態において、ルーティングデバイス自体の上で動作する処理１４０、１４２、及び１４４は、ルータの設定情報（その設定された時間または利用情報など）を用いて、いつ適切な時間になるか、またはいつ状態がトリガするかを判断し得る。処理は、適切な時間になった、または状態がトリガしたと判断した場合、処理は、加入した動的容量サービスに従って、新しいサービスレベルを提供するよう、ルーティングデバイスの設定を変更する。
【００２９】
いくつかの実施形態において、複数の処理１４０、１４２、及び１４４は、それら自体のサービスネットワーク１５０を形成するように互いに通信し得、サービスネットワーク１５０は、サービスを提供するべく、協働して動作するルータのグループである。サービスネットワーク１５０を確立するために、処理１４０、１４２、及び１４４のうち少なくとも１つは、他のどのルータがサービスを提供することに参加するかを発見し得る。それらの処理のうちの１つは、先導的な役割を果たし、他のどのルータがサービスに参加しているかを識別するよう、ディスカバリメッセージをブロードキャストする。または、それらの処理は、互いを同等のものとして扱い、サービスを提供することに関わる近隣のルーティングデバイスを識別するパケットを交換し得る。
【００３０】
例えば、処理１４０、１４２、及び１４４は、データを、サービスネットワーク１５０を介してどのように転送するかを発見するよう、互いに通信し得る。各処理は、ルーティングデバイスの近隣を学習し、サービスネットワーク１５０における他のルータにその情報を通信し得る。例えば、処理１４４は、ルータ１２４の設定情報を調べることによって、ルータ１２４の近隣を学習し得る。設定情報から、処理１４４は、そのルータ１２４がポート１６２を介してユーザサイト１０４に接続されることを学習し得る。次に、処理１４４は、ルータ１２２及びそのサービス処理１４２に、その情報を通信し得る。次に、サービス処理１４２は、ルータ１２２及びサービス処理１４０に、ルータ１２４を介してユーザサイト１０４に到達し得ることを示すメッセージを送信し得る。その到達可能性情報を用いて、ルータは、サービスネットワークを介してデータを転送し得る。例えば、サービス処理１４０が、ユーザサイト１０４のために定められたユーザサイト１０２からトラフィックを受信した場合、サービス処理１４０は、そのトラフィックをルーティングデバイス１２２にルーティングし得、ルーティングデバイス１２２は次に、ルーティングデバイス１２４を介して、そのトラフィックをユーザサイト１０４にルーティングし得る。このようにサービスネットワークを発見することによって、処理１４０、１４２、及び１４４は、各ルーティングデバイスにルーティング命令を送信するオーケストレーションサーバを必要とすることなく、加入したサービスに従って、協働してトラフィックをルーティングし得る。
【００３１】
サービスネットワークを用いて送信元から宛先へトラフィックをルーティングすることに加えて、サービスネットワークはまた、送信元から宛先まで、異なるルートの間で負荷バランシングをし得る。例えば、図１のルーティングデバイス１２６がサービスネットワーク１５０の一部であることを仮定する。例えば、処理１４０は、（例えば、上述のようにディスカバリパケットをブロードキャストすることによって、）サービスネットワークのトポロジを発見し得る。そのトポロジから、処理１４０は、複数の経路がユーザサイト１０２とユーザサイト１０４とを接続させるかを判断し得る。特に、ルータ１２０が、ユーザサイト１０４のために定められたユーザサイト１０２からデータを受信した場合、処理１４０は、データをルータ１２２または１２６にルーティングするか否かを判断し得る。ルータ１２２及び１２６の両方とも、ルータ１２４を介してユーザサイト１０４へと導く。ネットワークにわたってトラフィックのバランスをとるために、処理１４０は、それぞれの経路上のルータからの利用情報に基づきその判断をし得、ことによると、他のサービス処理自体により収集され処理１４０に送信され得る。代替的には、処理１４０は、ラウンドロビンまたは当業者が認識し得る他の方式を用いて、経路の間でトラフィックのバランスをとり得る。
【００３２】
このように、複数の実施形態によれば、サービスを提供する機能が、オーケストレーションサーバからルーティングデバイスへ移動される。例示的なルーティングデバイスが、図２にてより詳細に示されている。
【００３３】
図２は、ルーティングデバイス１２０をより詳細に示すダイアグラム２００である。ルーティングデバイス１２０は、カーネル２０４を含む。
【００３４】
カーネル２０４は、コンピューティング分野において既知のものであり、ルーティングデバイス１２０のオペレーティングシステムである。カーネル２０４は、ソフトウェアからの入力及び出力要求を管理し、ルーティングデバイスの中央処理ユニット及び他の電子設定要素のために、入力及び出力要求をデータ処理命令に変換するコンピュータプログラムである。カーネル２０４はまた、ルーティングデバイス１２０上で実行する様々な同時スレッドを管理する。
【００３５】
設定ファイル２０２が、ルーティングデバイス１２０上に格納される。設定ファイル２０２は、サービスプロバイダのネットワーク１０６に加入する全ての異なるユーザ、または、少なくとも、ルータ１２０を利用するサービスに加入する全ての異なるユーザの情報を有し得る。例えば、設定ファイル２０２は、ルータ１２０の特定のポートが特定のユーザに属することを示し得る。ダイアグラム２００において、ルータ１２０は、例えば、複数のポート２２０、２２２、及び２２４を有する。ポート２２０は、ユーザサイト１０２でネットワークに接続される。なお、設定ファイル２０２は、ポート２２０を、ユーザサイト１０２でネットワークを有するユーザに関連付けさせ得る。複数の他の例において、ルーティングデバイス１２０は、データの送信元アドレスを検査することによって、そのデータが特定のユーザに属することを認識し得る。その例において、設定ファイル２０２は、送信元アドレス、または各ユーザに関連付けられる送信元アドレスの範囲（インターネットプロトコルサブネットなど）を有し得る。
【００３６】
一実施形態において、管理者が、設定ファイル２０２の態様を規定し得る。複数の他の例において、設定ファイル２０２、またはその一部は、例えば、ルータ１２０上のサービスローダ処理２１０により、ネットワーク制御サーバ１１０からロードされ得る。ルータ１２０またはカーネル２０４は、起動時にサービスローダ２１０を始動させるよう設定され得る。一旦始動させると、サービスローダ２１０は、現在のユーザのリストについてネットワーク制御サーバ１１０に照会する。サービスローダ２１０はまた、現在のユーザのリストにおける更新についてチェックするよう、ネットワーク制御サーバ１１０に定期的に照会し得る。図１に関連して上述したように、サービスローダ２１０が新規ユーザを検出した場合、サービスローダ２１０はまず、ユーザが加入するサービスのリストについてネットワーク制御サーバ１１０に照会し得、次に、サービスに対応する実行可能なファイルについて、ネットワーク制御サーバ１１０に再び照会し得る。
【００３７】
一旦、複数の実行可能なファイルがルータ１２０で受信されると、カーネル２０４またはサービスローダ２１０は、それらをサービスデーモン２０８として始動させ得る。サービスデーモン２０８のそれぞれは、図１に関連して説明したように、サービスを実行する機能を実装する処理である。サービスを実行するために、サービスデーモン２０８は、例えば、設定ファイル２０２に対する変更をリッスン（ｌｉｓｔｅｎ）し得る。変更に応答して、サービスデーモン２０８は、サービスを実装するよう、例えば、ルータのルーティングテーブル、または他の設定情報を更新するなど、設定ファイル２０２に対する追加の変更を書き込み得る。いくつかの実施形態において、サービスデーモン２０８はまた、着信トラフィックをリッスンし、特定のアドレスから起こるなどの特定の条件を満たすトラフィックがいつ受信されるかを通知され得る。
【００３８】
この設定は、サービスが自動的に更新され得るという点でフレキシブルである。サービスデーモン２０８は、いつ変更が必要とされるかを検出し、更新をアクセスするよう、ネットワーク制御サーバ１１０に報告し得る。例えば、サービスデーモン２０８は、そのルータ１２０がもはや、サービスネットワークにおける他のルータに接続されていないかを検出し、必要とされたインストールされたサービスを更新するよう、ネットワーク制御サーバ１１０に報告し得る。 
【００３９】
加えて、サービスの機能が分散されているので、より回復力が高い。例えば、従来システムにおいて、単一の提供サーバが、ネットワークにわたってサービスを統合することを担当し得る。提供サーバがダウンすると、バックアップができるまで、サービスプロバイダのネットワーク上のかなりのサービスが操作不可能となり得るはずである。実際には、単一の提供サーバが、単一の点の故障を生じさせる。しかし、ルータがサービス自体を実装し、ルータがダウンする場合、その故障したルータにより提供されたサービスのみが影響を受け得る。このように、ルータは、より自律的であるように作られており、ネットワークは、より回復力が高いように作られている。 
【００４０】
図３は、一実施形態に係る、スイッチに新しいサービスを提供するための方法３００のフローチャートである。
【００４１】
方法３００は、ルータ１２０が、ユーザがネットワークに新たに接続されたと判断した場合に、段階３０２から開始する。この段階は、例えば、ルータ１２０の設定ファイルが、新規ユーザがサービスプロバイダのネットワークに加入していることを反映するよう更新された場合に、起こり得る。設定ファイルは、オペレータにより、または、例えば、ユーザからのオーダに応答して作動する提供システムにより、更新され得る。
【００４２】
段階３０４では、ルータ１２０は、ユーザが加入したサービスのリストについて、遠隔サーバに、特にネットワーク制御サーバ１１０に照会する要求を送信する。その照会に応答して、段階３０６では、ネットワーク制御サーバ１１０は、サービスを調べ、ユーザが加入したサービスを識別する情報を、ルータ１２０に送り返す。
【００４３】
ユーザがどのサービスに加入したかを識別する情報を受信次第、ルータ１２０は、自体がどのサービス実行ファイルを必要としているかを判断する。サービスのうちのいくつかについて、ルータ１２０は実行可能なファイルのコピーを既に有している場合があり、動作するサービスデーモンをさらに既に有している場合がある。そうではない場合のそれらについて、段階３０８で、ルータ１２０は、別の要求をネットワーク制御サーバ１１０に送信する。この要求は、サービスを識別する。ネットワーク制御サーバ１１０は、このサービスをこのユーザに提供するためには、このルータは、いかなる実行可能なファイルも動作させる必要がないことを判断し得る。しかし、ネットワーク制御サーバ１１０は、ルータが実行可能なファイルを動作させる必要があると確かに判断した場合、ネットワーク制御サーバ１１０は、要求されたサービスのそれぞれに対して実行可能なファイルを戻す。
【００４４】
実行可能なファイルを受信次第、ルーティングデバイス１２０は、受信した実行可能なファイルのそれぞれに対する処理を初期化する。動作している処理を用いて、それらは、ネットワークサービスを提供することに参加し得る。ネットワークサービスを提供するために、図４に示されているように、それらの処理は、ルータの設定における変更をリッスンし得る。
【００４５】
図４は、一実施形態に係る、スイッチの設定を変更するための方法４００のフローチャートである。
【００４６】
方法４００は、カーネル２０４がルータ設定における変更を検出した場合に、段階４０２から開始する。カーネル２０４がルータ設定における変更を検出した場合、カーネル２０４は、段階４０４で、変更をリッスンしている任意のデーモンに、この場合はデーモン２０８に、通知する。通知は、例えば、特定の変更が発生した場合、カーネル２０４が呼び出すコールバック機能を介して、非同期的に発生し得る。別の例において、デーモン２０８は、変更についてルータ設定を定期的にチェックし得る。
【００４７】
通知を受信次第、デーモン２０８は、サービスを提供するよう、実行可能なファイルにおいて特定された機能を実行する。段階４０４で、例えば、動的容量の例において、ルータ設定は、ユーザの帯域幅の利用に対するデータを含み得、デーモン２０８は、その利用レベルにおける変更を通知され得る。段階４０６で、デーモン２０８は、利用レベルが閾値などの条件を満たすかを調べるようチェックし得、満たす場合、デーモン２０８は、ユーザに関連付けられる帯域幅の制限を変更するよう、ルータ設定を変更させ得る。
【００４８】
上述のように、デーモン２０８は、多岐にわたるサービスを提供し得る。上の複数の例において、デーモン２０８は、（イーサネット（登録商標）ｅ−ｌｉｎｅなどの）ネットワーク接続を提供し、複数のネットワークメトリックを収集し、動的容量を提供し、ルート判断及び負荷バランシングを提供し得る。他のサービスも、デーモン２０８により提供され得る。例えば、デーモン２０８は、人工ニューラルネットワーク、圧縮、ファイアウォール、侵入検出、またはワイドエリアネットワーク（ＷＡＮ）アクセラレーションを提供し得る。 
【００４９】
上述のように、異なる処理上で動作する様々なサービス処理が、サービスを提供することに共に参加するルータのグループを形成するよう、互いに通信し得る。上の複数の例において、ルータのグループは、ルート判断及び負荷バランシングを提供するよう、共に動作し得る。グループが提供し得る他のサービスは、トラフィック切り替え、（例えば、混雑または故障した設定要素に応答する）再ルーティング、及びルータグループ全体の利用を反映する集合された複数のメトリックの収集であり得る。
【００５０】
図１及び図２の機器及びモジュールのそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせに実装され得る。
【００５１】
図１及び図２の機器及びモジュールのそれぞれは、同じまたは異なるコンピューティングデバイス上に実装され得る。そのようなコンピューティングデバイスは、パーソナルコンピュータ、携帯電話などのモバイルデバイス、ワークステーション、埋め込みシステム、ゲームコンソール、テレビ、セットトップボックス、または任意の他のコンピューティングデバイスを含み得るが、それらに限定されない。さらに、コンピューティングデバイスは、命令を実行し格納するためのプロセッサ及び非一時的メモリを含むメモリを有するデバイスを含み得るが、それに限定されない。メモリは、データ及びプログラム命令を有形に具体化し得る。ソフトウェアは、１つまたは複数のアプリケーションと、一オペレーティングシステムを含み得る。ハードウェアは、プロセッサ、メモリ、及びグラフィカル・ユーザ・インタフェース・ディスプレイを含み得るが、これらに限定されない。コンピューティングデバイスはまた、複数のプロセッサ及び複数の共有または別個のメモリ設定要素を有し得る。例えば、コンピューティングデバイスは、クラスタ型または分散型コンピューティング環境またはサーバファームの一部またはその全体であり得る。 
【００５２】
「（ａ）」、「（ｂ）」、「（ｉ）」、「（ｉｉ）」などのような識別子は、場合によって、異なる要素または段階のために用いられる。これらの識別子は、明確さのために用いられ、必ずしも要素または段階の順序を指定するものではない。
【００５３】
本発明は、複数の特定機能及びそれらの関係の実装を示す複数の機能的設定単位を用いて上述されている。これらの機能的設定単位の境界は、説明の便宜上、本明細書において任意に画定されている。複数の特定機能及びそれらの関係が適切に実行される限り、代替の境界が画定され得る。
【００５４】
複数の具体的な実施形態についての前述の説明は、本発明の一般的性質を十分に明らかにしているので、当技術分野の技術内の情報を応用することで、過度の実験なしに、本発明の一般的概念から逸脱することなく、その他の人々がそのような複数の具体的な実施形態を容易に修正し得る、及び／または様々な用途に容易に改作し得る。従って、そのような改作及び修正は、本明細書に提供された教示及び指導に基づいて、開示された複数の実施形態の均等物の趣旨内及び範囲内であるよう意図されている。本明細書の語句または用語は、説明を目的とするものであって限定するものではなく、これにより本明細書の語句または用語は、教示及び指導を考慮して当業者により解釈されることになることが理解されるべきである。
【００５５】
本発明の広さ及び範囲は、上述された複数の例示的実施形態の何れによっても限定されるべきではなく、次の特許請求の範囲及びその均等物のみに基づいて画定されるべきである。
【図１】
2017529768.tif 000003
【図２】
2017529768.tif 000004
【図３】
2017529768.tif 000005
【図４】
2017529768.tif 000006
【国際調査報告】
2017529768.tif 000007