(58)【調査した分野】(Int.Cl.,DB名)
前記ネイバーネットワークデバイスが十分な容量を有するかどうか前記判定することは、前記ネットワークデバイスのネットワークトラフィックの現在の容量を判定することと、前記ネイバーネットワークデバイスが前記ネットワークトラフィックの現在の容量を処理するのに十分な容量を有するかどうかを判定することとを含む、請求項1に記載の方法。
前記ネットワークトポロジ情報が一致していることの前記判定は、前記ネットワークデバイスが前記ネイバーネットワークデバイスを識別し且つ前記ネイバーネットワークデバイスが前記ネットワークデバイスを識別し、クロスチェックすることを含む、請求項4によるコンピュータ可読記憶媒体。
前記ルーティング構成情報を前記変更することは、ルーティングポリシーを変更すること、または前記ネットワークデバイス上のコストパラメータを増加することを含む、請求項3〜7のいずれかによるコンピュータ可読記憶媒体。
前記ルーティング構成情報を前記変更することは、前記ネットワークデバイス上の外部ボーダゲートウェイプロトコル(BGP)ピアまたはピアグループに関連するルーティングポリシー情報を変更することを含む、請求項3〜11のいずれかによるコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0004】
本明細書に記載の実施形態は、1つ以上のネットワークデバイスからトラフィックをシフトすることに関する。いくつかの例では、保守、更新、交換等の目的上、1つ以上のネットワークデバイス(例えば、ルータ、スイッチ、ブリッジ、ハブ等)をネットワークから取り外すことが望ましい。一般的には、ネットワークデバイスのルーティング構成情報を変更すること(例えば、コストパラメータの増加またはルーティングポリシー情報の変更)は、他のネットワークデバイスにとって些細な方法として見られる。しかしながら、追加チェックを伴うことなくルーティング構成情報のみを調整することは、著しいネットワークの問題を引き起こす可能性がある。例えば、ネットワークデバイスの喪失に耐えられるほど十分なリソースがネットワークにない場合、コストパラメータの調整はネットワークの機能全体に悪影響を及ぼす可能性がある。
【0005】
結果的に、システムは、シフトが発生する前に、トラフィックを安全にネットワークデバイスからシフトできることを確実にする。この方法は、明確性のために、発見段階、事前チェック段階、シフト段階及びシフト後段階などのいくつかの段階に細分化して記載する。識別段階などの他の段階を追加することができるか、またはシフト後段階もしくは発見段階などの段階を除外することができる。代替的には、本明細書に記載の段階のうちのいくつかを結合することができる。シフトが発生する前に、発見段階を使用してネットワークトポロジ及び構成情報を取得する。事前チェック段階では、ネットワークに悪影響を与えることなくシフトを確実に実行できるよう、その情報を調査する。事前チェック段階に合格すると、トラフィックがシフトしている任意のデバイス上のインターフェースに関連するルーティング構成情報の調整を通じて、ネットワークシフトを発生することができる。最終的に、シフト後段階では、トラフィックをネットワークデバイスから確実にシフトするためにチェックが行われる。
【0006】
図1は、それぞれの段階を順番に示す。
図1の処理ブロックは、サービスプロバイダ環境(例えば、クラウド環境)内のサーバコンピュータなどの、サーバコンピュータによって実行することができる。処理ブロック110は、1つ以上のネットワークデバイスが識別される識別段階を示す。単一のネットワークデバイスの場合、グローバル一意識別子(GUID)またはアドレスなどの単一の識別を使用することができる。複数のネットワークデバイスの場合、複数の識別子を使用することができる。識別子は、テキストファイル、APIまたは他の手段の形態でトラフィックシフトを行うサービスに渡すことができる。代替的には、2つ以上のエンドポイントを識別するサービスに対して要求することができる。例えば、2つのデータセンタを識別して、2つのデータセンタ間に連結されるリンクを確立するために使用される全てのネットワークインターフェースを取り外すよう要求することができる。このような場合、これらのデータセンタに関連するネットワークデバイスを決定する必要がある。このような情報の取得には複数の技法が存在する。例えば、リスト(例えば、電子テキストファイル)をサービスに提供することができ、この場合、リストは2つのエンドポイント間に接続される全ての関連ネットワークデバイスを含む。代替的には、サービスは、サービスプロバイダから、エンドポイントに関連するネットワークデバイスのリストを要求することができる。いずれにしても、識別段階の終わりには、1つ以上のネットワークデバイスのリストを取得する。
【0007】
処理ブロック120では、1つ以上のネットワークデバイスのローカルトポロジ情報及び/または構成情報を取得する発見段階を行う。例えば、サービスは、トポロジ情報または構成情報について、識別された各デバイスを問い合わせることができる。代替的には、サービスは、サービスプロバイダの他のサービスからこのような情報を取得することができる。トポロジ情報は、ネイバーネットワークデバイスの識別子、隣接ルータの特徴、使用中のネットワークプロトコル、セグメントによって結合されているネットワークデバイス、境界ルータ情報等を含むことがある。追加のトポロジ情報は、各デバイス上のアクティブなネットワークインターフェース(例えば、使用中のポートチャネル)、これらのポートチャネル上で使用中のネットワークプロトコル等を含むことがある。構成情報は、ネットワークデバイスの構成方法に関する任意の格納されたパラメータを含むことがある。オープンショーテストパスファースト(OSPF)プロトコルでは、例えば、構成パラメータは、コスト、再送間隔、送信遅延、認証等に関することがある。コストパラメータにより、他のネットワークデバイスはネットワーク経路の脆弱性を判断することができる。例えば、ルータは、通常、宛先までの複数の候補ルートを決定する。ルータの構成に格納されたコストパラメータにより、ネイバールータは、どのルートが最適かを決定することができる。ボーダゲートウェイプロトコル(BGP)などの他のプロトコルでは、ルーティング構成は、ウェイトパラメータ、ローカルプリファレンスパラメータ、AS経路パラメータ等を含むことがある。発見段階の間、いくつかの識別されたデバイスは、トラフィックがシフトされることになるデバイスのリストから削除することができる。例えば、ネイバー情報が2つの接続デバイス間で一致しない場合、これらのデバイスまたはこれらのデバイス上のインターフェースのうちの1つ以上をリストから削除することができる。いくつかの場合、発見段階の全体を回避することができ、ネットワークデバイスを識別した後に事前チェック段階を開始することができる。
【0008】
処理ブロック130では、何らかの潜在的なエラー状態を検出するために、事前チェックが行われる。例えば、発見段階中に取得した情報は、エラー状態を検出するために使用することができる。多様な事前チェックを行うことができる。例えば、ネットワークトポロジ情報がデバイスにわたって確実に一致するように、ネットワークトポロジ情報をチェックすることができる。ネットワークトポロジ情報は、それぞれが他方をネイバーとして識別するかどうかを判定するためにネットワークインターフェースをクロスチェックすることを含むことがある。例えば、ルータA上のネットワークインターフェース1がルータB上のネットワークインターフェース2を識別する場合、チェックにより、ネットワークインターフェース2もネットワークインターフェース1をネイバーとして確実に識別することを判定する。一致する場合、事前チェックに合格したとみなされ、不合格の場合、トラフィックシフトが発生しないようにロールバックすることができる。このような状況では、技術者がエラーを調査できるよう、顧客にエラーメッセージを送信することができる。2つのエンドポイントが識別された場合、一方のエンドポイントのネットワークインターフェースの数と、他方のエンドポイントのネットワークインターフェースの数とを比較することによって、追加のネットワークトポロジチェックを行うことができる。各エンドポイントでのインターフェースの数は一致しなければならない。
【0009】
別の事前チェックは、コストパラメータの全てがシフト中のルータにわたって確実に一致するようにすることである。例えば、OSPFプロトコルは、等価コストマルチパス(ECMP)と呼ばれる、全てのルータが等しいコストパラメータを有する負荷を分散するオプションを有する。ゆえに、全てのデバイスのコストパラメータが確実に等しくなるよう、これらをクロスチェックすることができ、等しくない場合、エラー状態を生成することができる。他の事前チェックは、ネットワークから取り外されることのない、様々なネットワークデバイスまたは様々なエンドポイントを識別することができるブラックリストをチェックすることを含む。このようなブラックリストは、顧客または管理者によって提供することができ、トラフィックシフトサービスに対してアクセス可能である。さらに別の事前チェックでは、ネットワークデバイスまたはネットワークデバイスのセットがネットワークから取り外された場合に、ネットワークがまだ確実に動作可能であるように、ネットワーク容量をチェックすることができる。例えば、ルータのネットワークの持続性が危機的であると判定される場合、トラフィックシフトを終了することができる。こうして、トラフィックシフト後の残りのネットワークデバイスが、現在のネットワークトラフィックを維持するのに不十分な帯域を有していることを示すエラー状態を開始することができる。さらに別の事前チェックでは、全てのポートチャネルが同じサイズ(つまり、インターフェースの数が同じ)であるかどうか及びポートチャネルが同じ動作状態であるかどうかを判定する。負荷を分散させる目的上、同じ方法で動作しているネットワークデバイスのトラフィックがいくつかのデバイスからシフトされることが望ましい。全ての事前チェックがネットワーク自体からの情報取得を必要とするわけではない。例えば、ネットワークから取り外されているネットワークデバイスの情報を伴うことなく、ネットワーク容量のチェックを行うことができる。その結果、事前チェックのうちのいくつかは、発見段階を伴うことなく行うことができる。しかしながら、発見段階は、より確かな選択肢のリストを提供する。
【0010】
処理ブロック140では、全ての事前チェックに合格したと仮定して、ネットワークトラフィックのシフトを行うことができる。例えば、ネットワークトラフィックは、データセンタ間に連結されたリンクからシフトすることができる。発見段階及び事前チェック段階から、ネットワークトラフィックがシフトされることになるネットワークデバイス、ネットワークインターフェースまたはリンクの最終リストを使用することができる。ネットワークトラフィック、ネットワークデバイスまたはネットワークデバイスのセットをシフトすることは、高いコストパラメータ(例えば、最大値)がネットワークデバイスに確実に関連するように、(ネットワークインターフェースベースなどで)それらのルーティング構成を変更するか、またはポリシーを変更することができる。いずれの場合でも、ネットワークインターフェースは、ネイバーにとっては、パケットのルーティングには望ましくない選択肢である。1つの例では、サーバコンピュータは並列処理を生成することができ、各ネットワークデバイスに対して1つの処理を生成でき、これによって、構成情報を変更するために、全てのネットワークデバイスを並列的に(ほぼ同じ時間に)書き込むことができる。例えば、1つのエンドポイントに20のルータがある場合、サーバコンピュータは、コスト構成情報をルータに並列的かつほぼ同じ時間に書き込むために並列的に実行する20の処理を開始することができる。別の例では、単一のネットワークデバイスが取り外されると、そのネットワークデバイス上の全てのインターフェースはルーティング構成情報(例えば、コストまたはポリシーパラメータ)を変更することができる。例を続けると、構成情報を20のルータに同時に書き込むことによって、ネットワークトラフィックがこれらの構成情報を変更する前に他の20のルータのうちのいずれかへのシフトを開始するわけではない。一度コストパラメータまたはポリシーパラメータが書き込まれると、デバイスからコストパラメータまたはポリシーパラメータをリードバックし、予想した値がリードバックされたことをクロスチェックすることによって、これらをチェックすることができる。コストパラメータまたはポリシーパラメータのいずれも書き込まれた値に等しくない場合、エラー状態を生成することができ、管理者または顧客に通知される。2つのエンドポイントがあるいくつかの場合、各エンドポイントを順次書き込むことができ、これによって、第1のエンドポイントは第2のエンドポイントより前に再構成される。
【0011】
処理ブロック150では、ネットワークトラフィックが1つ以上のネットワークデバイスからシフトされたことを確認するために、事後チェックを行うことができる。トラフィックはすぐにゼロになる必要はない。むしろ、新しいコストパラメータがネイバーデバイスに伝わるにつれ、トラフィックは徐々にシフトすることができる。事後チェックは、トラフィック量が所望の削減閾値を確実に満たすように、複数の所定の時間間隔でチェックを行うことを含むことができる。1つの例では、チェックは、トラフィック量がゼロまたは略ゼロなどの閾値レベルを下回るまで、30秒おきに行うことができる。別の例では、ルーティング構成情報が更新されたことを確実にするために、プロトコル状態情報をチェックすることができる。例えば、リードバックの内容が書き込まれた内容と確実に一致するように、コストパラメータをチェックすることができる。
【0012】
上記の実施形態は、OSPFルーティングプロトコルを使用して説明したが、他のルーティングプロトコルを使用することができる。例えば、任意のインテリアゲートウェイプロトコル(IGP)またはエクステリアゲートウェイプロトコル(例えば、BGP)を使用することができる。他のプロトコルの例は、OSPF、ルーティングインフォメーションプロトコル(RIP)、中間システム−中間システム(IS−IS)、ラベルディストリビューションプロトコル(LDP)及びリソースリザベーションプロトコル(RSVP)を含む。ネットワークデバイスの多くには、通常、ルータが含まれる。ルータは、本明細書に記載する通り、ネットワーク上の他の機器(例えば、他のネットワーク要素、エンドステーション)と通信可能に相互連結するハードウェア及びソフトウェアを含む。一部のルータは、複数のネットワーク機能(例えば、ルーティング、ブリッジング、スイッチング、レイヤ2アグリゲーション、セッションボーダー制御等)のサポート提供及び/または複数のアプリケーションサービス(例えば、データ、音声及びビデオ)のサポート提供を行う。ルータは通常、制御プレーン及びデータプレーン(転送プレーンと呼ばれる場合もある)を含む。制御プレーンは、データ(例えば、パケット)がどのようにルーティングされるか(例えば、データのネクストホップ及びそのデータのための出力ポート)を決定し、データプレーンはデータを転送する。制御プレーンは、ルートを交換し、1つ以上のルーティングメトリックに基づいてそれらのルートを選択するために、他のルータと通信する1つ以上のルーティングプロトコルを含むことができる。
【0013】
OSPFを実装しているルータは、自身が常駐する自律システム(AS)のトポロジを記述する同一のリンクステートデータベース(LSDB)を維持するリンクステートルーティングプロトコルを実行する。LSDBリスト内の各レコードは、特定のネットワーク要素の使用可能なインターフェース及びエリアもしくはASの外部の到達可能なネイバー、アジャセンシーもしくはルートをリスト化する。隣接ルータは、共通ネットワークへのインターフェースを有する2つのルータであり、インターフェースは、あるルータと、当該ルータに接続されたネットワークのうちの1つとの間の接続である。さらに、アジャセンシーは、ルーティング情報を交換してネットワークトポロジを抽象化する目的で選択された隣接ルータ間に形成される関係である。1つ以上のルータのアジャセンシーは、インターフェース経由で確立できる。アジャセンシーは、「Hello」プロトコルを使用してOSPFで確立され、維持される。「Hello」プロトコルは、全てのネットワーク要素インターフェースからHelloパケットを定期的に送信することによって、ネイバー間の通信が確実に双方向となるようにする。双方向通信は、ルータ自体がネイバーのHelloパケットにリスト化されていることを示す。
【0014】
図2は、単一のネットワークデバイス(この場合、ルータ)が、トラフィックシフトにより(トラフィックをルーティングする目的上)ネットワークから取り外される例を示す。この例では、210に示すデータセンタAは、212で示す複数のルータを含む。対象となる特定のルータはルータ214であり、ルータ214はネットワークから取り外されることを示すために破線で示される。データセンタBは220で示され、リンク226を介してルータ214に結合されるルータ222を含む複数のルータをさらに含む。リンクは、物理的ケーブル(例えば、光ファイバ)及び通信チャネルを確立するのに必要な任意のサポートソフトウェアを含むことができる。この場合、ルータ214の取り外しとは、リンク226をサポートするネットワークインターフェースを含む、ルータ214内の全てのインターフェースをネットワークから取り外すことである。トラフィックシフトサービス230は、ルータ214をネットワークから取り外すように求めるアプリケーションプログラミングインターフェース(API)要求240を受信する。この例では、一度ルータ214が取り外されると、ネットワークトラフィックは、データセンタ210、220を共に結合する250で示す他のリンク上でなおも自由に流れることができる。ただし、一度ルータ214が取り外されると、リンク250がネットワークトラフィックを処理するのに十分な帯域幅を有するかどうかを判定するためのチェックを行うことができる。
【0015】
取り外しでは、API要求240内のルータの識別子(例えば、アドレス)を使用して、ルータ214を取り外されるルータとして識別することができる。次いで、ルータ214は、ホストサーバコンピュータ230等による、ネットワークトポロジ情報についての問い合わせを受けることができ、ホストサーバコンピュータ230はトラフィックシフトを実行することができる。ルータ214は、インターフェースがオープンになり、ルータ222に連結されるように示されている。ルータ222がルータ214に結合されていることを示すネットワークトポロジ情報を確実に有するよう、この情報をクロスチェックすることができる。全てのルータが同様のコストパラメータを有し、同数のインターフェースを有するなど、既に上述した通り、他の事前チェックを実行することができる。
【0016】
事前チェックに合格すると、ホストサーバコンピュータ230は、コストパラメータ(例えば、最大許容コストパラメータ)またはポリシーパラメータなどの新しいルーティング構成情報をルータ214に書き込むことができる。他のルータは次いでルータ214の使用を中止し、ルータ214はネットワークから安全に取り外すことができる。
【0017】
図3は、2つのデータセンタ310、312間などの、2つのエンドポイントにトラフィックシフトを適用する例を示す。各データセンタには、1つ以上のルータのセットを含むことができる。例えば、ルータの第1のセットは320で示され、一方、ルータの第2のセットは330で示され、リンク332は2つのルータを共に連結する。リンク332は、専用ケーブルまたは光ファイバを含むことができ、トラフィックがこれらのリンクからシフトされることを示す点線で示されている。ルータ320は、データセンタ310を他のデータセンタに結合するリンク334を確立するために使用される他のインターフェースと共に示されている。2つのエンドポイントが識別されるトラフィックシフトサービス350に対してAPI要求340を行うことができる。識別情報は、番号、都市または任意の他の所望の識別情報とすることができる。発見段階の前に、トラフィックシフトサービス350はエンドポイントを使用してルータ識別サービス360にAPI要求を行うことができ、ルータ識別サービス360はエンドポイントでルータのリストを送信する。代替的には、ルータのリストは、顧客からリストを直接的に受信するなど、他の方法でトラフィックシフトサービスに渡すことができる。リストには、サービスのアドレスまたは他の識別子を含めることができる。トラフィックシフトサービス350は、既に記載した通り、データセンタ310、320と通信してリスト内のルータのルータトポロジまたは構成情報を取得することができる。発見段階の間、トラフィックシフトサービス350は、リンク332を確立するために使用されるルータ320上の特定のインターフェースを識別することができる。追加的には、発見段階の間、トラフィックシフトサービス350は、ネイバー情報及びネットワークインターフェースをチェックして、両方がエンドポイント間で確実に一致するようにする。例えば、エンドポイント310のルータ370は、ルータ372に結合されていると識別されたネットワークインターフェースを有する必要がある。同様に、ルータ372は、ルータ370に結合されていると識別されたネットワークインターフェースを有する必要がある。整合性のためのネットワークトポロジ情報のこのようなクロスチェックは、シフトが発生する前にトラフィックが安全にシフトされることを確実にするのに役立つ。このような事前チェック(
図1に述べる事前チェックのいずれかを含む)が完了すると、ルーティング構成情報(例えば、コストパラメータ、ポリシー情報等)を並列処理でルータ320に書き込み、これによって、ルータ320にほぼ同時に書き込むことで、トラフィックシフトサービス350によってトラフィックシフトを発生することができる。ルーティング構成情報は、ネイバールータが代替的経路の選択を望むよう、変更する必要がある。例えば、コストパラメータは、ネイバールータが代替経路を選択するために十分に高くする必要がある。ルーティング構成情報がデータセンタA内のルータに書き込まれると、トラフィックシフトサービス350は、ルーティング構成情報をデータセンタB内のルータに並列的に書き込み、これによって、ルータにほぼ同時に書き込まれる。次いで、トラフィックが確実にシフトされるよう、トラフィックシフトサービス350によって事後チェックを行うことができる。ルータ320などのルータは、リンク332をサポートするインターフェースのみを取り外すことができ、一方、リンク334をサポートするインターフェースなどの他のインターフェースは動作可能なままである。
【0018】
図4は、ルータアーキテクチャのさらなる詳細を示す。ルータ400は、コントローラカード410などのコントローラ、ルータバックプレーン420及びインターフェースカード430などの1つ以上のインターフェースを含む。CPU440は、コントローラカード410上に配置され、通常、ルータテーブル保守、経路計算及び到達可能性伝搬などの機能を行う。インターフェースカード430は、受信及び送信パケットの転送を行うためのアダプタを含む。ルータバックプレーン420は、コントローラカードとインターフェースカードとの間でパケットを転送するように機能する。ルータ400の基本的な機能は、ルート処理及びパケット転送を含むことがある。ルーティングテーブル450は、ルータがネットワーク等内のルータ関係を記述するネットワークのトポロジのビューを作成できるようにする。例えば、ルータ400は、460、462に示すような他のルータ(多くの他のルータが一般的には含まれているが、簡潔性の目的上、図示していない)のネットワークに結合される。
【0019】
パケット転送は、一般的に、パケットを処理する前にパケットが適切に形成されていることをルータがチェックするIPパケット検証を含む。ルータは、次いで、テーブルルックアップを行い、パケットを送信する出力ポートと、パケットを送信する次の宛先を決定することができる。ルータはさらに、非常に古いパケットの循環を防ぐために、有効期間パラメータを調整することができる。最終的に、ルータはIPヘッダーチェックサムを行うことができる。
【0020】
ルータテーブル450内のルータテーブルルックアップは、通常、パケットのIP宛先アドレスをキーとして使用してCPU440によって行われる。ルックアップは、パケットのネクストホップのインターフェース及びIPアドレスを提供する最適なルーティングテーブルエントリを返す。ネクストホップアドレスは、ハッシュテーブルとして編成することができる、フロントエンドルーティングテーブル(図示せず)にキャッシュすることができる。
【0021】
コントローラカード410はさらに、ルータ構成及びネットワークトポロジ470のためのストレージ(例えば、メモリ、ハードドライブ等)を含むことができる。ルータ構成は、ルーティングテーブル450とは無関係であり、ルータネットワークを通る最適なルートを識別するわけではない。ゆえに、ルータ構成はルーティングトポロジ情報とは無関係である。代わりに、ルータ構成は、インターフェース設定またはルータの他の特徴もしくはプロパティ(環境パラメータとも呼ばれる)に関連していることがある。構成設定の例としては、速度(例えば、10メガビット/秒、100メガビット/秒、自動モード等)、最大伝送単位(MTU)(最大パケットサイズ)、伝送モード(例えば、全二重、半二重等)、カプセル化タイプ、インターフェースタイプ、ロード間隔(インターフェースの平均負荷を計算するために使用される時間の長さ)、リダイレクトメッセージ設定(パケットを強制的に転送する場合)、ネイバーの設定、アジャセンシー、ルーティングプロトコルの構成等を含む。対象となる特定の構成はコストパラメータ472である。コストパラメータは、例えば、ルータ400の容量を示すネイバールータとその後共有されるOSPFコストとすることができる。別の構成は、473に示すなどのポリシー情報とすることができる。ポリシー情報は、ネイバーデバイスがトラフィックをルーティングする方法に影響を及ぼすルーティングベースのポリシー情報など、1つ以上のパラメータを含むことができる。ポリシーパラメータの例は、外部BGPピアまたはピアグループに関連することがある。このようなBGPベースのパラメータを変更すると、ルーティング決定に影響を与えることがある。
【0022】
ストレージ470に格納されたルータトポロジ情報は474に示されており、別個に受信することができ、ルータ400がその一部であるルータネットワーク環境に関する情報を含むことができる。ネットワークトポロジ情報は、同じエリア内の他のルータの識別子、セグメント(アジャセンシー)によって現在結合されているルータ、接続されたエリアを取り纏める境界ルータ、ルータインターフェース情報等を含むことができる。ネットワークトポロジ情報は、OSPFプロトコルなどの一部のプロトコルではリンクステートデータベース(LSDB)とすることができる。実施形態例では、ネットワークトポロジ情報474はさらに、ネイバールータの特徴及びネットワークプロトコル情報を含んでよい。ネイバールータの特徴は、ハードウェアの特徴、ルータの種類、送信または受信通信に使用されるポート及びその他などの、ルータ400に通信可能に結合された1つ以上のルータに関する情報を提供してよい。ネットワークプロトコル情報は、ルータ400及び/またはルータ400に通信可能に結合された任意の他のルータ(複数可)によって使用されるネットワーク通信プロトコル(またはレベル2、レベル3等などのネットワークトラフィックの種類)を示してよい。
【0023】
前に記載した通り、トラフィックシフトサービス480は、トポロジ情報474及びストレージ470に格納されたいずれかの構成情報を読み出すことができる。サービス480はさらに、コストパラメータ472またはポリシー情報473を変更することができ、これによって、ルータ460、462などの他のルータは他の経路を通じてトラフィックを転送する。
【0024】
図5は、ルータのネットワークを使用可能な環境500を例示する。この例では、環境500は、全体が520で示されるルータによって共に結合されたデータセンタ510を含む、複数のデータセンタを含む。異なるレベルのルータを使用することができる。例えば、コアルータ530は、サービスプロバイダ環境内の他のデータセンタにある他のコアルータに結合することができる。ルータ530は、受信したパケット内のアドレス情報を読み出し、パケットの宛先を決定する。ルータが別のデータセンタにホストサーバコンピュータが含まれていると判断した場合、パケットはそのデータセンタに転送される。パケットの宛先がデータセンタ510内のホストである場合、パケットはパケットのパブリックIPアドレスをプライベートIPアドレスに変換するネットワークアドレストランスレータ(NAT)(図示せず)に渡される。NATはさらに、プライベートアドレスを、データセンタ510の外部に送信されるパブリックアドレスに変換する。追加のアグリゲーションルータ540は、パケットをホストサーバコンピュータ550の1つ以上のラックにルーティングするためにNATに結合することができる。各ラック550は、複数のホストサーバコンピュータに結合されたトップオブラック(TOR)スイッチ560を含むことができる。1つのコアルータ530及び2つのアグリゲーションルータ540が示されているが、実際のデータセンタには、さらに多くのルータが存在することがあり、本明細書に記載する通り、ルータをエリア内でグループ化することができる。トラフィックシフトサービス570をデータセンタ510に結合して、データセンタ内のルータまたはスイッチのいずれかと通信することができる。ゆえに、ルータまたはスイッチのいずれかを他のデータセンタに結合することができ、トラフィックシフトサービス570を使用してトラフィックをシフトすることができる。
【0025】
図6は、少なくとも2つのエンドポイントが提供されるネットワークデバイスでトラフィックをシフトする方法のフローチャートである。処理ブロック610では、第1及び第2のエンドポイントの識別情報が受信される。エンドポイントは、データセンタまたは個別のネットワークデバイスとすることができる。しかしながら、2つのエンドポイントを有することで、各エンドポイントに1つのネットワークデバイスを備えた、少なくとも2つのネットワークデバイスが存在する。この要求は、トラフィックシフトサービスへのAPI要求とすることができる。処理ブロック620では、第1及び第2のエンドポイントに関連する対象ルータ(または他のネットワークデバイス)のリストを取得することができる。リストは、そのようなリストを維持するサービスプロバイダのサービスによって提供することができる。代替的には、トラフィックシフトサービスに対する元の要求をリストに提供することもできる。第1及び第2エンドポイントのルータのアドレス情報を取得するためにトラフィックシフトサービスによって使用可能な複数の技法があり、そのような技法のいずれかを使用することができる。
【0026】
処理ブロック630では、対象ルータ上で発見段階が開始される。発見段階は、識別されたルータに構成情報及びネットワークトポロジ情報について問い合わせる対象シフトサービスを含むことがある。情報の例は、コストパラメータ、ポリシーパラメータ、使用中のプロトコル、ネイバー情報、インターフェース情報等を含むことができる。例えば、インターフェース情報を使用して、ネットワークトラフィックを送信する目的上、エンドポイントを共に接続するリンクを決定することができる。ゆえに、発見段階の間、対象シフトサービスはルータを問い合わせ、格納された状態及びデータ情報をルータから取得することができる。処理ブロック640では、発見段階に基づいて、対象となるシフトサービスは、リストを縮小できるよう、対象となるルータのリストの一部をフィルタリングすることができる。例えば、所定のチェックに合格しない対象ルータのいずれかを、トラフィックシフトが生じるルータのセットから取り外すことができる。処理ブロック650では、発見情報を使用して事前チェックを行うことができる。事前チェックの例は、エンドポイント間のネットワークスパンが取り外し不可能であるためにブラックリストにあるかどうかをチェックすることを含むことがある。ネットワークスパンは、ネットワークデバイス上のインターフェース間の少なくとも1つの専用経路(例えば、光ファイバーケーブル)である。スパンは、データセンタ間またはデータセンタ内とすることができる。1つの例では、両方のエンドポイントを格納されたリストに対してチェックすることができ、エンドポイントがリストのスパンと一致する場合、エラー状態を開始することができる。他の事前チェックはネットワーク容量チェックを含み、対象シフトサービスは、ネットワークがネットワークスパンを伴うことなく現在の帯域幅を維持できるかどうかをチェックする。さらに、ネットワークインターフェースベースの情報をチェックすることができる。例えば、対象シフトサービスは、ネイバーネットワークインターフェースが確実に一致している(競合していない)ようにするためにネイバーネットワークインターフェースをクロスチェックできる。さらに、対象となるシフトサービスは、それらのエンド間のスパンに対して、多数のインターフェースが第1及び第2のエンド上のそれぞれで等しいかどうかをチェックすることができる。追加チェックは、コストパラメータが等しいかどうかの判定など、現在の構成パラメータに基づくことができる。
【0027】
事前チェックの後、トラフィックのシフトが発生するルータの最終リストを取得する。処理ブロック660では、トラフィックシフトが発生する。670に示す通り、並列的な書き込みを使用して、ほぼ同時に、各ネットワークデバイスにコスト構成情報を書き込むことができる。代替的には、書き込みは、連続的、または一部のデバイスでは並列的に、一部のデバイスでは連続的にする組み合わせなどの他の所望の順序で行うことができる。デバイスの並列的な書き込みは、全体のネットワークスパンが同様の期間に確実に減速するようにする。処理ブロック680では、トラフィックを実際に減速していることを確実にするために、トラフィックシフトサービスがネットワークデバイスに問い合わせることができる事後チェックを行う。トラフィック量を所定レベルと比較することができ、トラフィック量が依然として変わらない場合、エラーメッセージを送信することができる。別様には、ネットワークデバイスはネットワークから安全に取り外すことができる。
【0028】
図7は、トラフィックシフトのための別の実施形態によるフローチャートである。処理ブロック710では、ネットワークから取り外されることになるネットワークデバイスについて識別情報を受信することができる。上述した通り、ネットワークデバイスは、ルータ、スイッチ、ブリッジ、ハブ等とすることができる。識別情報は、GUIDなどのアドレスまたは識別子とすることができる。識別情報は、1つ以上のサーバコンピュータ上で実行することができるトラフィックシフトサービスで受信することができる。処理ブロック720では、識別されたネットワークデバイスが構成情報及びネットワークトポロジ情報について問い合わせを受ける発見段階が行われる。構成情報及びネットワークトポロジ情報は、通常、各ネットワークデバイス上に格納された情報である。ただし、構成及びネットワークトポロジ情報は、他のサービスを問い合わせることからも判断することができる。処理ブロック730では、構成情報及びネットワークトポロジ情報が一致するかどうかの判定が行われる。ゆえに、ネイバーデバイスが、取り外されているネットワークデバイス上で取得された情報と同じ(または競合しない)情報を有するかどうかのチェックが行われる。1つの例では、コストパラメータは全てのデバイスにわたって同じにならなければならず、コストが同じでない場合、エラー状態が存在する。別の例では、1つのデバイスがあるデバイスをネイバーとして識別するが当該ネイバーデバイスは他方を識別しないのとは対照的に、各デバイスが対応するデバイスをネイバーとして挙げるかどうかを調べるために、ネットワークトポロジ情報がクロスチェックされる。処理ブロック740では、ネットワークから装置を取り外すのに十分なネットワーク容量があるかどうかの判定を行うことができる。このような判定は、ネットワークデバイスのネイバーに対する容量チェックを含むことができる。処理ブロック750では、ネットワークトラフィックがネットワークデバイスからシフトされる。このようなシフトは、デバイス内の各インターフェース上のコストパラメータを増加させることによって発生する。ルーティング決定に影響を及ぼすポリシー情報のいずれかを変更するなど、ネットワークトラフィックをシフトさせるために他の技法を使用することができる。ネットワークトラフィックのシフトとは、ネットワークデバイスをネットワークから物理的に取り外すことができるよう、ネットワークデバイス全体(全てのインターフェース)に対して行うことができる。
【0029】
図8は、ネットワークトラフィックをシフトさせる別の実施形態による方法のフローチャートを示す。処理ブロック810では、トラフィックがシフトされているネットワークデバイスに対して識別情報が受信される。識別情報は、GUIDまたはアドレスなどの様々な形態で作成することができる。処理ブロック820では、1つ以上の事前チェックを行うことができる。このような事前チェックは、ネットワークデバイス自体から取得された情報に基づいて行うことができるか、またはネットワークデバイスに格納された情報とは無関係に取得された情報に基づいて行うことができる。結果的に、事前チェックには発見段階の発生が必要ない。事前チェックは、一般的に、ネットワークデバイスをネットワークから安全に確実に取り外すことができるように選択される。1つの例では、事前チェックは、ネットワークトラフィックがネットワーク上の他のネットワークデバイスを通じてルーティングできること及び一度ネットワークデバイスが取り外されると、このようなネットワークデバイスがネットワークトラフィックの増加を処理するのに十分な容量を有することを判定することを含むことができる。他の事前チェックには、ネットワークデバイスが、取り外す必要のないデバイスのブラックリストにあるかどうかのチェックを含むことがある。さらに、発見段階を行う場合、コストパラメータなどの構成パラメータをネイバーデバイスに対してチェックして、デバイスにわたって確実に一致しているようにすることができる。事前チェック段階中にエラーが発生すると、エラー状態を生成することができ、ネットワークトラフィックのシフトを終了することができる。処理ブロック830では、ネットワークデバイスを構成することができ、これによって、ルーティング構成パラメータが変更され、ネットワークデバイスへのパケットのルーティングが望ましくない状態になることがある。1つの例では、コストパラメータが変更され、コストパラメータがネイバーデバイスに伝搬され、その結果、トラフィックが高コストでネットワークデバイスからシフトされる。他の例では、ポリシー情報を変更し、ネイバーデバイスによって、ネットワークデバイスへのルーティングがあまり望ましくない状態になることがある。ポリシー情報の例は、ウェイトパラメータ、ローカルプリファレンスパラメータ、AS経路パラメータ等を含むことができる。ルーティング構成情報の変更は、インターフェースごとに行うことができ、全てのインターフェースを同じ方法で変更してネットワークデバイス上のトラフィックの量を減らすことができる。トラフィックが閾値を下回るほど低下したことを確実にするのに加え、事後チェックを行うことができる。
【0030】
図9は、記載した革新が実装され得る、好適なコンピューティング環境900の一般例を図示する。技術革新が多様な汎用または専用コンピューティングシステムに実装されてよいため、コンピューティング環境900は、使用または機能の範囲に関して何ら限定を示唆するものではない。例えば、コンピューティング環境900は、様々なコンピューティングデバイスのいずれかとすることができ、トラフィックシフトサービスとして使用することができる。
【0031】
図9を参照すると、コンピューティング環境900は、1つ以上の処理装置910、915及びメモリ920、925を含む。
図9では、この基本構成930は点線内に含まれている。処理装置910、915は、コンピュータ実行可能命令を実行する。処理装置は、汎用中央処理装置(CPU)、特定用途向け集積回路(ASIC)内のプロセッサまたは他の任意の種類のプロセッサとすることができる。マルチ処理システムでは、複数の処理装置が処理能力を高めるためにコンピュータ実行可能命令を実行する。例えば、
図9は、中央処理装置910ならびにグラフィック処理装置またはコプロセッシング装置915を示す。有形メモリ920、925は、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリ等)または処理装置(複数可)によってアクセス可能な2つの何らかの組み合わせを含んでよい。メモリ920、925は、処理装置(複数可)による実行に適したコンピュータ実行可能命令の形態で、本明細書に記載の1つ以上の革新を実装するソフトウェア980を格納する。
【0032】
コンピューティングシステムは追加の特性を有してよい。例えば、コンピューティング環境900は、ストレージ940、1つ以上の入力装置950、1つ以上の出力装置960及び1つ以上の通信接続970を含む。バス、コントローラまたはネットワークなどの相互接続機構(図示せず)は、コンピューティング環境900の構成要素を相互接続する。通常、オペレーティングシステムソフトウェア(図示せず)は、コンピューティング環境900内で実行する他のソフトウェアのための動作環境を提供し、コンピューティング環境900の構成要素の動作を調整する。
【0033】
有形ストレージ940は、取り外し可能または取り外し不能であってよく、磁気ディスク、磁気テープもしくはカセット、CD−ROM、DVDまたは情報を非一時的に格納するために使用することができ、コンピューティング環境900内でアクセスすることができる他の媒体であってよい。ストレージ940は、本明細書に記載する1つ以上の革新を実装するソフトウェア980のための命令を格納する。
【0034】
入力デバイス(複数可)950は、キーボード、マウス、ペンまたはトラックボールなどのタッチ入力デバイス、音声入力デバイス、走査デバイスまたはコンピューティング環境900に入力を提供する別のデバイスであってよい。出力デバイス(複数可)960は、ディスプレイ、プリンタ、スピーカ、CDライタまたはコンピューティング環境900からの出力を提供する別のデバイスであってよい。
【0035】
通信接続(複数可)970は、通信媒体を介して別のコンピューティングエンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能命令、音声もしくは映像入力もしくは出力または変調データ信号内の他のデータなどの情報を伝達する。変調されたデータ信号は、信号内の情報を符号化するようにその特徴の1つ以上が設定または変更された信号である。限定ではなく一例として、通信媒体は、電気、光学、RFまたは他の搬送波を使用することができる。
【0036】
本開示の実施形態は、以下の条項を鑑みて説明できる。
【0037】
1.ネットワーク上でトラフィックをネットワークデバイスからシフトする方法であって、
前記ネットワークデバイスの識別情報を受信することと、
前記ネットワークデバイスが構成情報及びネットワークトポロジ情報について問い合わせを受ける、発見段階を行うことと、
前記ネットワークトポロジ情報及び前記構成情報が前記ネットワークデバイスとネイバーネットワークデバイスとの間で一致しているかどうかを判定することと、
前記ネットワークが、前記ネットワークデバイスを使用することなくトラフィックをルーティングするのに十分な容量を有するかどうかを判定することと、
前記ネットワークデバイスに格納されたルーティング構成情報を変更することによって、前記ネットワークデバイスからネットワークトラフィックをシフトすることと、
一定期間が経過した後、前記ネットワークデバイス上の前記ネットワークトラフィックが所定の閾値を下回って減少したことをチェックすることと、
を備える、前記方法。
【0038】
2.前記ネットワークトポロジ情報は、前記問い合わされたネットワークデバイスに接続されているネイバーネットワークデバイスの識別を含む、条項1に記載の方法。
【0039】
3.前記ネットワークトポロジ情報が一致しているかどうかを判定することは、前記ネイバーネットワークデバイス上のネットワークトポロジ情報が前記問い合わされたネットワークデバイス上の前記ネットワークトポロジ情報と競合していないことをチェックすることを含む、条項2に記載の方法。
【0040】
4.前記ルーティング構成情報の前記変更は、前記ネットワークデバイス上の各インターフェースに関連するコストパラメータを変更すること、または前記ネットワークデバイス上の外部ボーダゲートウェイプロトコル(BGP)ピアまたはピアグループに関連するルーティングポリシー情報を変更すること含む、先行条項のいずれかに記載の方法。
【0041】
5.前記ネットワークが十分な容量を有するかどうか前記判定することは、ネットワークトラフィックの現在の容量を判定することと、代替的なネットワークデバイス及び前記ネットワーク内の関連リンクが前記ネットワークトラフィックの現在の容量を処理するのに十分な帯域幅を有するかどうかを判定することとを含む、先行条項のいずれかに記載の方法。
【0042】
6.実行時に、コンピュータシステムに、
ネットワークトラフィックがシフトされることになるネットワークデバイスの識別情報を受信することであって、前記ネットワークデバイスはネットワーク内にある、前記受信することと、
前記ネットワークデバイスを前記ネットワークから取り外すことができるかどうかの判定を行う事前チェックを行うことと、
トラフィックを前記ネットワークデバイスからシフトできるように、前記ネットワークデバイスに格納されたルーティング構成情報を変更することによって、前記ネットワークデバイスを構成することと、
を行わせる命令を含む、コンピュータ可読記憶媒体。
【0043】
7.前記事前チェックを前記行うことは、
前記ネットワークデバイスのネットワークトポロジ情報を決定することと、
前記ネットワークトポロジ情報が前記ネットワークデバイス及びネイバーネットワークデバイスにわたって一致していることを判定することと、
を備える、条項6によるコンピュータ可読記憶媒体。
【0044】
8.前記ネットワーク情報が一致していることの前記判定は、前記ネットワークデバイスが前記ネイバーネットワークデバイスを識別し、前記ネイバーネットワークデバイスが前記ネットワークデバイスを識別することをチェックすることを含む、条項7によるコンピュータ可読記憶媒体。
【0045】
9.前記事前チェックを前記行うことは、
一度前記ネットワークトラフィックが前記ネットワークデバイスからシフトされると、ネットワーク容量が十分であると判定すること
を備える、条項6または7によるコンピュータ可読記憶媒体。
【0046】
10.前記事前チェックを前記行うことは、
ネイバーネットワークデバイスに接続するために使用され、ルーティングプロトコルに含まれている前記ネットワークデバイス上のインターフェースを決定すること
を備える、条項6〜9のいずれかによるコンピュータ可読記憶媒体。
【0047】
11.前記ルーティング構成情報を前記変更することは、ルーティングポリシーを変更すること、または前記ネットワークデバイス上のコストパラメータを増加することを含む、条項6〜10のいずれかによるコンピュータ可読記憶媒体。
【0048】
12.前記命令は、実行時に、前記コンピュータシステムにさらに、
前記構成後及び所定の期間の後、前記ネットワークデバイス上のネットワークトラフィックが閾値レベルを下回って低下したかどうかをチェックさせる、
条項6〜11のいずれかによるコンピュータ可読記憶媒体。
【0049】
13.前記コンピュータシステムにさらに、
現在のコスト設定について前記ネットワークデバイスを問い合わせ、ネイバーデバイスのコスト設定が前記現在のコスト設定と等しいかどうかを判定させる命令をさらに含む、条項6〜12のいずれかによるコンピュータ可読記憶媒体。
【0050】
14.前記識別情報を受信することは前記ネットワークデバイスのアドレスを受信することを含む、条項6〜13のいずれかによるコンピュータ可読記憶媒体。
【0051】
15.実行時に、前記コンピュータシステムに、
構成情報が前記ネットワークデバイスから取得される発見段階を行わせる命令をさらに含む、条項6〜14のいずれかによるコンピュータ可読記憶媒体。
【0052】
16.前記ルーティング構成情報を前記変更することは、前記ネットワークデバイス上の外部ボーダゲートウェイプロトコル(BGP)ピアまたはピアグループに関連するルーティングポリシー情報を変更することを含む、条項6〜15のいずれかによるコンピュータ可読記憶媒体。
【0053】
17.前記命令は、実行時に、前記コンピュータシステムにさらに、
前記構成後及び所定の期間の後、前記ルーティング構成情報が更新されたことを確実にするために、プロトコル状態情報をチェックさせる、
条項6〜16のいずれかによるコンピュータ可読記憶媒体。
【0054】
18.システムであって、
データセンタ内の第1のネットワークデバイスと、
ネットワークデバイスのセットであって、前記第1のネットワークデバイス及び前記ネットワークデバイスのセットは、その間にネットワーク内でネットワーク接続を確立するための通信経路を有する、前記ネットワークデバイスのセットと、
サーバコンピュータであって、
第1のネイバー情報について前記第1のネットワークデバイスを問い合わせることと、
第2のネイバー情報について前記ネットワークデバイスのセットを問い合わせることと、
前記第1のネイバー情報及び第2のネイバー情報が一致していることをチェックすることと、
ネットワークトラフィックを前記第1のネットワークデバイスからシフトできるよう、ルーティング構成情報を前記第1のネットワークデバイスに書き込むことと
を行うように動作可能な前記サーバコンピュータと
を備える、前記システム。
【0055】
19.前記ルーティング構成情報はポリシーまたはコスト情報を含む、条項18に記載のシステム。
【0056】
20.前記サーバコンピュータはさらに、
前記第1のネットワークデバイスが前記ネットワークから取り外された場合に、ネットワーク容量がネットワークトラフィックを維持するのに十分かどうかを判定するように動作可能である、条項18または19に記載のシステム。
【0057】
21.前記サーバコンピュータはさらに、前記第1のネットワークデバイス及び前記ネットワークデバイスのセットの現在のコストパラメータを問い合わせ、前記コストパラメータが前記第1のネットワークデバイスと前記ネットワークデバイスのセットとの間で確実に一致するように動作可能である、条項18〜20のいずれかに記載のシステム。
【0058】
22.前記第1のネットワークデバイスはルータであり、前記サーバコンピュータはさらに、
前記ルーティング構成情報の前記書き込み後及び所定の期間の後、前記ネットワークトラフィックが閾値レベルを下回って確実に低下するように前記ネットワークデバイス上のネットワークトラフィックをチェックすることを行うように動作可能である、条項18〜21のいずれかに記載のシステム。
【0059】
23.前記ネットワークデバイスのセットは前記データセンタまたは別のデータセンタ内にある、条項18〜22のいずれかに記載のシステム。
【0060】
開示された方法のいくつかの動作は、特に好適な提示のための順序で記載されるが、以下に記載される特定の文言が特定の順序を必要としない限り、この方式の記載が再編成を包含することを理解するべきである。例えば、順次記載された動作は、いくつかの場合において、再編成されるか、または同時に実行されてよい。さらに、簡単にするために、添付の図面は、他の方法と併せて開示された方法を使用可能である様々な方式を示さない場合がある。
【0061】
開示された方法のいずれかは、1つ以上のコンピュータ可読記憶媒体(例えば、1つ以上の光学媒体ディスク、揮発性メモリ構成要素(DRAMもしくはSRAMなど)または不揮発性メモリ構成要素(フラッシュメモリもしくはハードドライブなど))上に格納され、コンピュータ(例えば、スマートフォンまたはコンピューティングハードウェアを含む他の携帯機器を含む、任意の市販のコンピュータ)上で実行されるコンピュータ実行可能命令として実装されることができる。コンピュータ可読記憶媒体という用語は、信号及び搬送波などの通信接続を含まない。開示された技法を実装するためのコンピュータ実行可能命令のいずれかだけでなく、開示された実施形態の実施中に作成され使用される任意のデータも、1つ以上のコンピュータ可読記憶媒体上に格納されることが可能である。コンピュータ実行可能命令は、例えば、ウェブブラウザまたは他のソフトウェアアプリケーション(リモートコンピューティングアプリケーションなど)を介してアクセスまたはダウンロードされる専用のソフトウェアアプリケーションまたはソフトウェアアプリケーションの部分であることが可能である。このようなソフトウェアは、例えば、1つ以上のネットワークコンピュータを使用して、単一のローカルコンピュータ(例えば、任意の適切な市販のコンピュータ)上で、またはネットワーク環境内で(例えば、インターネット、ワイドエリアネットワーク、ローカルエリアネットワーク、クライアントサーバネットワーク(クラウドコンピューティングネットワークなど)、または他のこのようなネットワークを介して)実装されることが可能である。
【0062】
明確にするために、ソフトウェアベースの実装の特定の選択された態様のみを記載する。当該技術分野において周知である他の詳細を省略する。例えば、開示された技術が任意の特定のコンピュータ言語またはプログラムに限定されないことを理解するべきである。例えば、開示された技術は、C++、Java、Perl、JavaScript、Adobe Flashまたは任意の他の適切なプログラミング言語で書き込まれたソフトウェアにより実装されることが可能である。同様に、開示された技術は、任意の特定のコンピュータまたはハードウェアの種類に限定されない。適切なコンピュータ及びハードウェアの特定の詳細は、周知であり本開示で詳細に記載される必要がない。
【0063】
ソフトウェアの代わりに、少なくとも部分的に、1つ以上のハードウェア論理コンポーネントが本明細書に記載した任意の機能を実行可能であることを理解すべきである。例えば、限定しないが、使用可能な例示的な種類のハードウェア論理構成要素は、フィールドプログラマブルゲートアレイ(FPGA)、プログラム用途向け集積回路(ASIC)、プログラム用途向け標準品(ASSP)、システムオンチップシステム(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)等を含む。
【0064】
さらに、ソフトウェアベースの実施形態(例えば、コンピュータに開示された方法のいずれかを行わせるコンピュータ実行可能命令を備える)のいずれかは、適切な通信手段を通じて、アップロード、ダウンロードまたは遠隔でアクセスされることが可能である。このように適切な通信手段は、例えば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル(光ファイバケーブルを含む)、磁気通信、電磁通信(RF、マイクロ波及び赤外線通信を含む)、電子通信または他のこのような通信手段を含む。
【0065】
さらに、共に「連結される」として記載される構成要素は、1つ以上の仲介する構成要素がその間に挿入されるときなどに、直接的に接続されるか、または間接的に接続される構成要素を含む。
【0066】
開示された方法、装置及びシステムは、決して限定するものとして解釈されるべきではない。代わりに、本開示は、単独でならびに互いに関して様々な組み合わせ及び副次的な組み合わせで、様々な開示された実施形態の全ての新規で非自明な特性及び態様に対して行われる。開示された方法、装置及びシステムは、任意の特定の態様または特性またはそれらの組み合わせに限定されず、開示された実施形態は、任意の1つ以上の特定の利点が存在する必要がなく、さらに問題を解決する必要もない。
【0067】
開示された本発明の原理を適用し得る多くの可能な実施形態の観点から、例示された実施形態が本発明の好適な例のみであること、及び本発明の範囲を限定するものとして解釈すべきではないことを認識するべきである。むしろ、本発明の範囲は、以下の特許請求の範囲により定義される。したがって、発明者らは、発明者らの発明として、これらの特許請求の範囲内に該当する全てのものを主張する。