(57)【要約】  データネットワークにおける負荷分散のための方法及びシステムが提供される。データネットワークにおける負荷分散のための方法には、データネットワークに関連付けられたネットワークデータと１又は複数のサービスノードに関連付けられたサービスノードデータとを読み出すことを含むことができる。上記方法は、さらに、読み出されたネットワークデータとサービスノードデータとを解析することを含むことができる。解析に基づいて、サービスポリシーが生成されることができる。１又は複数のサービス要求が受信されると、１又は複数のサービス要求は、サービスポリシーに従ってサービスノードの間で分散されることができる。
2015534769.tif 000002
【特許請求の範囲】
【請求項１】
データネットワークにおけるサービス負荷分散のための方法であって、
サービスポリシーを生成するステップと、
前記データネットワークに関連付けられた装置に前記サービスポリシーを提供するステップと、
前記サービスポリシーに従って１又は複数のサービス要求を分散するステップと、
を含む方法。
【請求項２】
前記データネットワークに関連付けられたネットワークデータを読み出すステップと、
１又は複数のサービスノードに関連付けられたサービスノードデータを読み出すステップと、
前記ネットワークデータ及び前記サービスノードデータを解析するステップと、
前記ネットワークデータ及び前記サービスノードデータの解析に基づいてサービスポリシーを生成するステップと、
１又は複数のサービス要求を受信するステップと、
前記サービスポリシーに従って前記１又は複数のサービスノードの間で前記１又は複数のサービス要求を分散するステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
前記データネットワークに関連付けられた装置に前記サービスポリシーをプッシュするステップであり、前記データネットワークに関連付けられた装置はトラフィック分類エンジン及び前記サービスノードを含む、ステップ、をさらに含む請求項２に記載の方法。
【請求項４】
前記ネットワークデータは、サービスノードの健全性、合計の接続の数、処理ユニット利用率、メモリステータス、バックエンドサーバキャパシティ及びネットワーク接続性のうち少なくとも１つを含む、請求項２に記載の方法。
【請求項５】
前記サービスノードデータは、動的な状態、ノード処理ユニット利用率、ノードメモリステータス、及び前記１又は複数のサービスノードの応答性のうち少なくとも１つを含む、請求項２に記載の方法。
【請求項６】
前記解析に基づいてさらなるサービスポリシーを開発するステップであり、前記さらなるサービスポリシーは、１又は複数のサービスノード、トラフィック分類エンジン及びバックエンドサーバをスケールアップし、スケールダウンし、是正し、及び除去すること、並びに１又は複数の新しいサービスノード、トラフィック分類エンジン及びバックエンドサーバを導入することに関連付けられる、ステップ、をさらに含む請求項２に記載の方法。
【請求項７】
前記データネットワークに関連付けられた装置は、サービスノード及びトラフィック分類エンジンを含む、請求項１に記載の方法。
【請求項８】
前記データネットワークは、ソフトウェア駆動型ネットワーク（ＳＤＮ）を含み、前記ＳＤＮは、トラフィック分類エンジン、サービスノード及びアプリケーション配信コントローラのうち少なくとも１つを含む、請求項１に記載の方法。
【請求項９】
前記サービスポリシーは、トラフィック分散ポリシー及びサービスノード負荷ポリシーのうち少なくとも１つを含む、請求項１に記載の方法。
【請求項１０】
前記１又は複数のサービスノードは、仮想マシン及び物理的装置を含む、請求項２に記載の方法。
【請求項１１】
ネットワーク管理者に対してアプリケーションプログラム可能インタフェースを容易にするステップと、
解析に基づいてさらなるサービスポリシーを開発するステップであり、前記さらなるサービスポリシーは、前記アプリケーションプログラム可能インタフェースを介して前記ネットワーク管理者向けである、ステップと、
をさらに含む請求項１に記載の方法。
【請求項１２】
前記データネットワークに関連付けられた装置によってバックエンドサーバの健全性確認を実行するステップ、をさらに含む請求項１に記載の方法。
【請求項１３】
トラフィックフローに対する途絶を最小限にする間に、サービスノード、バックエンドサーバ、トラフィック分類エンジン、クラスタマスタ、及び前記ＳＤＮネットワークにおける他の装置をスケールアップするステップ、をさらに含む請求項１に記載の方法。
【請求項１４】
トラフィックフローに対する途絶を最小限にする間に、サービスノード、バックエンドサーバ、トラフィック分類エンジン、クラスタマスタ、及び前記ＳＤＮネットワークにおける他の装置をスケールダウンするステップ、をさらに含む請求項１に記載の方法。
【請求項１５】
トラフィックフローに対する途絶を最小限にする間に、サービスをスケールアップし、及びスケールダウンするステップ、をさらに含む請求項１に記載の方法。
【請求項１６】
サービスノードがスケールアップされ、又はスケールダウンされるとき、前記１又は複数のサービス要求は、該サービス要求に関連付けられたデータを処理し続けるように前記１又は複数のサービスノードにリダイレクトされる、請求項６に記載の方法。
【請求項１７】
バックエンドサーバから前記１又は複数のサービスノードへの逆向きトラフィックを最適化するステップ、をさらに含む請求項２に記載の方法。
【請求項１８】
調整部が、
前記１又は複数のサービスノードを検出するステップと、
前記１又は複数のサービスノードに関連付けられたデータをクラスタマスタに送るステップと、
をさらに含む請求項１に記載の方法。
【請求項１９】
ネットワークデータベースが、
クラスタマスタ、トラフィック分類エンジン、前記１又は複数のサービスノード、バックエンドサーバ及びサービスポリシーのうち少なくとも１つに関連付けられたデータを記憶するステップと、
前記データが前記クラスタマスタ、前記トラフィック分類エンジン及び前記１又は複数のサービスノードの間で共有されることを可能にするステップと、
をさらに含む請求項１に記載の方法。
【請求項２０】
調整部が、
前記１又は複数のサービスノードを検出するステップと、
前記１又は複数のサービスノードに関連付けられたデータをクラスタマスタに送るステップと、
をさらに含む請求項２に記載の方法。
【請求項２１】
ネットワークデータベースが、
クラスタマスタ、トラフィック分類エンジン、前記１又は複数のサービスノード、バックエンドサーバ及びサービスポリシーのうち少なくとも１つに関連付けられたデータを記憶するステップと、
前記データが前記クラスタマスタ、前記トラフィック分類エンジン及び前記１又は複数のサービスノードの間で共有されることを可能にするステップと、
をさらに含む請求項２に記載の方法。
【請求項２２】
データネットワークにおけるサービス負荷分散のためのシステムであって、
クラスタマスタであり、
前記データネットワークに関連付けられたネットワークデータを読み出し、
１又は複数のサービスノードに関連付けられたサービスノードデータを読み出し、
前記ネットワークデータ及び前記サービスノードデータを解析し、
前記解析に基づいてサービスポリシーを生成し、
前記データネットワークに関連付けられた装置に前記サービスポリシーを提供する
クラスタマスタと、
前記サービスポリシーを受信する１又は複数のサービスノードと、
トラフィック分類エンジンであり、
前記サービスポリシーを受信し、
１又は複数のサービス要求を受信し、
前記サービスポリシーに従って前記１又は複数のサービスノードの間で前記１又は複数のサービス要求を分散し、前記サービスノードは前記サービスポリシーに従って前記１又は複数のサービス要求を処理する
トラフィック分類エンジンと、
を含むシステム。
【請求項２３】
前記データネットワークに関連付けられた装置は、前記サービスノード及びトラフィック分類エンジンを含む、請求項２２に記載のシステム。
【請求項２４】
前記サービスノード及び前記トラフィック分類エンジンはクラスタマスタの役割を果たし、前記クラスタマスタ及び前記サービスノードはトラフィック分類エンジンの役割を果たす、請求項２３に記載のシステム。
【請求項２５】
調整部であり、
前記１又は複数のサービスノードを検出し、
前記１又は複数のサービスノードに関連付けられたデータを前記クラスタマスタに送る
調整部、をさらに含む請求項２２に記載のシステム。
【請求項２６】
ネットワークデータベースであり、
前記クラスタマスタ、前記トラフィック分類エンジン、前記１又は複数のサービスノード、バックエンドサーバ及びサービスポリシーのうち少なくとも１つに関連付けられたデータを記憶し、
前記データが前記クラスタマスタ、前記トラフィック分類エンジン及び前記１又は複数のサービスノードの間で共有されることを可能にする
ネットワークデータベース、をさらに含む請求項２２に記載のシステム。
【請求項２７】
前記の記憶されるデータは、前記ネットワークデータ及び前記サービスノードデータを含む、請求項２６に記載のシステム。
【請求項２８】
前記１又は複数のサービス要求の処理は、前記１又は複数のサービス要求を１又は複数のバックエンドサーバに転送することを含む、請求項２２に記載のシステム。
【請求項２９】
前記１又は複数のサービスノードは、前記サービスノードデータを前記クラスタマスタに送信するようにさらに構成される、請求項２２に記載のシステム。
【請求項３０】
前記ネットワークデータは、合計の接続の数、処理ユニット利用率、メモリステータス及びネットワーク接続性のうち少なくとも１つを含む、請求項２２に記載のシステム。
【請求項３１】
前記サービスノードデータは、前記サービスノードの健全性、動的な状態、ノード処理ユニット利用率、及び前記１又は複数のサービスノードの応答性のうち少なくとも１つを含む、請求項２２に記載のシステム。
【請求項３２】
前記サービスポリシーは、サービスアドレス、サービスノードアドレス、トラフィック分散ポリシー及びサービスノード負荷ポリシーのうち少なくとも１つを含む、請求項２２に記載のシステム。
【請求項３３】
前記クラスタマスタは、該クラスタマスタの故障の場合に前記クラスタマスタを置換するように構成されたバックアップユニットを含む、請求項２２に記載のシステム。
【請求項３４】
前記クラスタマスタは、
前記解析に基づいてさらなるサービスポリシーを開発し、前記さらなるサービスポリシーは、前記１又は複数のサービスノードに関連付けられたサービスをスケールダウンし、スケールアップし、是正し、及び除去すること、並びに前記１又は複数のサービスノードに関連付けられた新しいサービスを導入することに関連付けられることと、
ネットワーク管理者が前記解析に基づいてさらなるサービスポリシーを開発することを可能にするように、前記ネットワーク管理者に対してアプリケーションプログラム可能インタフェースの提供を容易にすることと、
のうち少なくとも１つを実行する、請求項２２に記載のシステム。
【請求項３５】
前記データネットワークに関連付けられた装置によってバックエンドサーバの健全性確認を実行すること、をさらに含む請求項２２に記載のシステム。
【請求項３６】
トラフィックフローに対する途絶を最小限にする間に、サービスノード、バックエンドサーバ、トラフィック分類エンジン、クラスタマスタ、及び前記ＳＤＮネットワークにおける他の装置をスケールアップすること、をさらに含む請求項２２に記載のシステム。
【請求項３７】
トラフィックフローに対する途絶を最小限にする間に、サービスノード、バックエンドサーバ、トラフィック分類エンジン、クラスタマスタ、及び前記ＳＤＮネットワークにおける他の装置をスケールダウンすること、をさらに含む請求項２２に記載のシステム。
【請求項３８】
トラフィックフローに対する途絶を最小限にする間に、サービスをスケールアップし、及びスケールダウンすること、をさらに含む請求項２２に記載のシステム。
【請求項３９】
サービスノードに関連付けられたサービスがスケールアップされ、又はスケールダウンされるとき、前記１又は複数のサービス要求は、該サービス要求に関連付けられたデータを処理し続けるように前記１又は複数のサービスノードにリダイレクトされる、請求項３４に記載のシステム。
【請求項４０】
バックエンドサーバから前記１又は複数のサービスノードへの逆向きトラフィックを最適化すること、をさらに含む請求項２２に記載のシステム。
【請求項４１】
命令を記憶させた非一時的プロセッサ可読媒体であって、前記命令は、１又は複数のプロセッサにより実行されると、前記１又は複数のプロセッサに下記オペレーションを実行させ、該オペレーションは、
データネットワークに関連付けられたネットワークデータを読み出すステップと、
１又は複数のサービスノードに関連付けられたサービスノードデータを読み出すステップと、
前記ネットワークデータ及び前記サービスノードデータを解析するステップと、
サービスポリシーを生成するステップと、
１又は複数のサービス要求を受信するステップと、
前記データネットワークに関連付けられた装置に前記サービスポリシーを提供するステップと、
前記サービスポリシーに従って前記１又は複数のサービスノードの間で前記１又は複数のサービス要求を分散するステップと、
前記解析に基づいてさらなるサービスポリシーを開発するステップであり、前記さらなるサービスポリシーは、１又は複数のサービスノードに関連付けられたサービスをスケールアップし、スケールダウンし、是正し、及び除去すること、並びに前記１又は複数のサービスノードに関連付けられた新しいサービスを導入することに関連付けられる、ステップと、
ネットワーク管理者に対してアプリケーションプログラム可能インタフェースを提供することを容易にするステップと、
前記アプリケーションプログラム可能インタフェースを介して前記ネットワーク管理者によって前記解析に基づいてさらなるサービスポリシーを開発するステップと、
前記データネットワークに関連付けられた装置によってバックエンドサーバの健全性確認を実行するステップと、
トラフィックフローに対する途絶を最小限にする間に、サービスノード、バックエンドサーバ、トラフィック分類エンジン及びクラスタマスタのうち少なくとも１つをスケールアップし、及びスケールダウンするステップと、
トラフィックフローに対する途絶を最小限にする間に、サービスをスケールアップし、及びスケールダウンするステップと、
バックエンドサーバから前記１又は複数のサービスノードへの逆向きトラフィックを最適化するステップと、
少なくとも１つのサービスノードがスケールアップされ、又はスケールダウンされたとき、前記１又は複数のサービス要求を、該サービス要求に関連付けられたデータを処理し続けるように前記１又は複数のサービスノードにリダイレクトするステップと、
を含む、媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、概してデータ処理に関し、より具体的にはソフトウェア駆動型ネットワーク（software  driven  networks）（ＳＤＮ）における負荷分散に関する。
【背景技術】
【０００２】
本セクションに説明されるアプローチは、これまでに着想され、あるいは追求されてきたアプローチを追求する可能性があるが、必ずしもそうではない。それゆえに、他に示されない限り、本セクションに説明されるアプローチのいずれも、単に本セクションに含まれるという理由で先行技術と見なすと仮定されるべきではない。
【０００３】
典型的なロードバランシングのシナリオにおいて、一群のサーバによってホストされるサービスは、ロードバランサ（ＬＢ）（本明細書においてＬＢ装置とも言う）がフロントエンドになり、ＬＢは、このサービスをクライアントに仮想サービスとして表現する。サービスを必要とするクライアントは、仮想インターネットプロトコル（ＩＰ）アドレスと仮想ポートとを使用して、自身のパケットを仮想サービスに対してアドレス指定することができる。例えば、ｗｗｗ．ｅｘａｍｐｌｅ．ｃｏｍ：８０は、ロードバランスされている（load  balanced）サービスであり、このサービスをホストする一群のサーバが存在する。ＬＢは、仮想ＩＰ（ＶＩＰ）、例えば１００．１００．１００．１と、仮想ポート（ＶＰｏｒｔ）、例えばポート８０とを用いて構成されてよく、これらは、同様に、このサービスを扱うサーバのＩＰアドレスとポート番号とにマッピングされる。このドメインを扱うドメインネームサービス（ＤＮＳ）サーバが、上記ＬＢに関連付けられたＶＩＰ及びＶＰｏｒｔにパケットを送信するように構成されてもよい。
【０００４】
ＬＢは、到来パケットを調べることになり、ポリシー／アルゴリズムに基づいて、一群のサーバから特定のサーバを選び、必要な場合にパケットを修正し、パケットを該サーバに転送することになる。サーバからの戻りにおいて（場合により）、ＬＢは、パケットを入手し、必要な場合にパケットを修正し、パケットをクライアントに転送して戻すことになる。
【０００５】
しばしば、ＬＢサービスをスケールアップし、あるいはスケールダウンする必要がある。例えば、ＬＢサービスは、一日のうちの時間、例えば日中に対して夜、平日に対して週末に基づいて、スケールアップ又はダウンされる必要があり得る。例えば、固定間隔のソフトウェアアップデートが予測可能なネットワーク輻輳をもたらすことがあり、それゆえに、ＬＢサービスは、フラッシュクラウド現象を扱うようにスケールアップされ、後にスケールダウンされる必要があり得る。サービスの人気が、サービスをスケールアップする必要性を余儀なくさせることがある。これらの状況は、ＬＢ装置のパフォーマンス特性が必要とされるスケーリング調節を扱うことができるとき、ＬＢ内で扱われてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、多くの場合、パフォーマンスは、単一のロードバランシング装置が扱うことができるパフォーマンスを超えて増加される必要がある。このことに関する典型的なアプローチには、物理的なシャーシに基づく解決策が含まれ、この解決策では、上記サービス要件を扱うためにカードが挿入され、抜去される。これらのアプローチは多くの欠点を有し、欠点には、将来の必要性のためにシャーシの空間、電力及び価格を事前準備する必要性が含まれる。さらに、単一のシャーシは、そのカードの最大キャパシティまでしかスケールアップすることができない。この欠陥を治癒するために、ＬＢ装置を積み重ね、必要に応じて装置間でトラフィックを送信することを試みることができる。しかしながら、このアプローチは、装置間のリンクがボトルネックになること、パケットが複数のＬＢを通過して要求を最終的に扱うことになるエンティティに到達しなければならないためのレイテンシ増加などの欠点を有し得る。
【０００７】
別の既存の解決策は、複数のＬＢ装置を追加し、バックエンドの同じサーバのために個々のＶＩＰを各装置上に作成し、ＤＮＳを使用してこれらの間で負荷を分散することである。別のＬＢが追加される必要があるとき、別のエントリがＤＮＳデータベースに追加される。ＬＢが除去される必要があるとき、対応するエントリがＤＮＳデータベースから除去される。しかしながら、このアプローチは下記の問題を有する。ＤＮＳレコードはキャッシュされ、したがって、ＬＢの追加／除去は、これらが有効になるまでに時間がかかることがある。このことは、ＬＢが除去されたとき、該ＬＢに向けられたデータが消失される可能性があるため、特に問題になる。ＬＢにわたる分散は、非常に粗く、トラフィックを認識していない。例えば、１つのＬＢが圧倒されている間に他のＬＢが遊んでいることがあり、いくつかのクライアントがよりヘビーなユーザであって同じＬＢに要求を送信することになることがある。ＬＢ間の分散は、ＬＢキャパシティを認識していないことがあり、例えば、ＬＢ１は、ＬＢ２よりさらに強力な装置であり得る。したがって、この課題を解決するための既存の解決策はすべて、上記の欠点を有する。
【課題を解決するための手段】
【０００８】
本要約は、以下で詳細な説明においてさらに説明される概念のうち選択されたものを簡易化された形式で紹介するために提供される。本要約は、請求される対象事項の重要な特徴又は必須の特徴を識別するものではなく、請求される対象事項の範囲の特定を支援するものとして使用されるものでもない。
【０００９】
本願開示は、データネットワークにおける負荷分散のためのアプローチに関する。具体的には、データネットワークにおける負荷分散のための方法が、データネットワークに関連付けられたネットワークデータと１又は複数のサービスノードに関連付けられたサービスノードデータとを読み出すことを含むことができる。上記方法は、さらに、読み出されたネットワークデータとサービスノードデータとを解析することを含むことができる。解析に基づいて、サービスポリシーが生成されることができる。生成されたサービスポリシーは、データネットワークに関連付けられた装置に提供されることができる。１又は複数のサービス要求が受信されると、１又は複数のサービス要求は、サービスポリシーに従ってサービスノードの間で分散されることができる。
【００１０】
本願開示の別のアプローチに従い、データネットワークにおける負荷分散のためのシステムが提供される。本システムは、クラスタマスタを含んでよい。クラスタマスタは、データネットワークに関連付けられたネットワークデータと１又は複数のサービスノードに関連付けられたサービスノードデータとを読み出し、解析するように構成されてよい。解析に基づいて、クラスタマスタは、サービスポリシーを生成し、生成されたサービスポリシーをデータネットワークに関連付けられた装置に提供することができる。本システムは、さらに、トラフィック分類エンジンを含んでよい。トラフィック分類エンジンは、クラスタマスタからサービスポリシーを受信するように構成されてよい。１又は複数のサービス要求を受信すると、トラフィック分類エンジンは、サービスポリシーに従って１又は複数のサービスノードの間でサービス要求を分散することができる。さらに、本システムは、１又は複数のサービスノードを含んでよい。サービスノードは、クラスタマスタからサービスポリシーを受信し、トラフィック分類エンジンから１又は複数のサービス要求を受信するように構成されてよい。サービスノードは、サービスポリシーに従って１又は複数のサービス要求を処理することができる。
【００１１】
本願開示の別のアプローチにおいて、クラスタマスタは、トラフィック分類エンジンレイヤ又はサービスノードレイヤ内に存在してもよい。さらに、トラフィック分類エンジンが、同様に、サービスノードレイヤ内に存在してもよい。
【００１２】
本願開示のさらなる例示的な実施形態において、上記の方法ステップは、命令を含むマシン可読媒体上に記憶され、上記命令は、１又は複数のプロセッサにより実施されると、上記の列挙されたステップを実行する。なおさらなる例示的な実施形態において、ハードウェアシステム又は装置が、上記の列挙されたステップを実行するように構成されてもよい。他の特徴、例及び実施形態が、以下に説明される。
【図面の簡単な説明】
【００１３】
添付図面の図において、限定としてではなく例として、実施形態を示す。図面において、同様の参照は、同様の要素を示す。
【図１】一例示的実施形態に従う、データネットワークにおけるサービス負荷分散のための方法及びシステムを実施することができる環境を示す。
【図２】一例示的実施形態に従う、データネットワークにおけるサービス負荷分散のための方法を示すプロセスフロー図である。
【図３】一例示的実施形態に従う、データネットワークにおけるサービス負荷分散のためのシステムの様々なモジュールを示すブロック図である。
【図４】一例示的実施形態に従う、データネットワークのサービス負荷分散のためのスキームである。
【図５】マシンのためのコンピューティング装置の概略表現をコンピュータシステムの一例示的な電子形態において示し、これにおいて、本明細書に論じられる方法論のうち任意の１又は複数を上記マシンに実行させる命令セットを実行することができる。
【発明を実施するための形態】
【００１４】
下記の詳細な説明は、添付図面に対する参照を含み、添付図面は、詳細な説明の一部をなす。図面は、例示的な実施形態に従って例示を示す。これらの例示的な実施形態は、本明細書において「例」とも呼ばれ、当業者が本願対象事項を実施することを可能にするほど十分に詳細に説明される。本願実施形態は組み合わせられてもよく、他の実施形態が利用されてもよく、あるいは、請求される範囲から逸脱することなく構造的、論理的及び電気的な変更がなされてもよい。それゆえに、下記の詳細な説明は限定的な意味でとられるべきではなく、上記範囲は別記される請求項とその均等物とによって定義される。本文献において、特許文献に一般的であるとおり、用語「一の（“a”，“an”）」は、１又は２以上を含むように使用される。本文献において、用語「又は」は、非排他的な「又は」を指すように使用され、したがって、「Ａ又はＢ」は、他に示されない限り、「ＢでなくＡ」と「ＡでなくＢ」と「Ａ及びＢ」とを含む。
【００１５】
本願開示は、ＬＢサービスとＳＤＮなどのデータネットワークとを一緒に動作させてパケットを複数のＬＢに配信することによってロードバランシングを実施する効率的な方法に関する。ＳＤＮは、ＬＢサービスの要件を認識しているため、トラフィックをＬＢに効率的に分散することができる。このアプローチは、いかなるＤＮＳ変更も必要なく、同じ仮想サービスが複数のＬＢ上にホストされることを可能にする。パケットがそれ自体を扱うＬＢに直接配信されるため、最小乃至ゼロのレイテンシ影響になる。ＬＢへのフローのきめ細かい分散は、ＬＢ能力、ネットワーク能力及び現在の負荷に基づいて達成されることができる。このアプローチは、さらに、必要とされるサービスのスケールアップ／ダウンと、管理者によるロードバランシングの管理及び運用の容易化とを支援する。
【００１６】
いくつかの例示的な実施形態において、プロトコルがＬＢとＳＤＮ要素との間で実行されて、トラフィックを分散する方法についての情報をＳＤＮとＬＢとに交換させ、転送ルールを動的に挿入して、こうした転送を実行する能力がある装置におけるパケット経路選択に影響を与えることができる。ＬＢによって制御されるアルゴリズムが、ルータ、スイッチ、及びトラフィック誘導に影響を与える他の装置上で実施されてもよい。
【００１７】
複数のベンダからの異種スイッチのネットワークにおけるデータフローの分散を保証するために、追加のテクノロジーが使用されてもよい。これらのテクノロジーは、コントローラを利用して、送信元と宛先との間の経路を計算し、送信元と宛先との間のネットワーク装置上のフローをプログラムすることができる。このプロパティが活用されて、フローをインテリジェントにプログラムして、需要、リソースの可用性などに基づいてネットワークにおけるロードバランシング実施をスケールアウト／インしてもよい。
【００１８】
ＬＢは、要件、例えば負荷増加又は構成変更などに基づいて、アクティブ化し、非アクティブ化するため、ＬＢは、コントローラをアップデートし、コントローラにネットワークにおけるフローに対する変更を行わせることができる。一例示的な実施形態において、適切な外部のコントローラが存在しない場合、ＬＢは、自身がコントローラの役割を果たしてよく、ネットワークにおけるフローに対して直接変更を行ってよい。同様にして、コントローラは、ＬＢと共に動作して、ネットワーク負荷及び他の入力、ネットワークにおける装置の健全性などをＬＢに知らせて、ＬＢが決定を行うのを援助することができる。
【００１９】
本明細書に開示される実施形態の手法は、様々なテクノロジーを使用して実施されてよい。例えば、本明細書に説明される方法は、コンピュータシステム上で実行されるソフトウェアにおいて、あるいは、マイクロプロセッサ若しくは他の専用に設計された特定用途向け集積回路（ＡＳＩＣ）の組み合わせ、プログラム可能ロジック装置、又はこれらの様々な組み合わせを利用するハードウェアにおいて実施されてよい。具体的に、本明細書に説明される方法は、ディスクドライブ又はコンピュータ可読媒体などの記憶媒体上に存在する一連のコンピュータ実行可能命令によって実施されてもよい。本明細書に説明される方法は、コンピュータ（例えば、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ及びサーバ）、ゲームコンソール、手持ち型ゲーム用装置、携帯電話、スマートフォン、スマートテレビジョンシステムなどによって実施できることに留意すべきである。
【００２０】
上記要約において概説されたとおり、本願開示の実施形態は、ＳＤＮにおける負荷分散を示す。本明細書に示されるとおり、ＳＤＮは、サービス要求、例えばクライアントからサーバへのトラフィックが送信されるべきところに関して決定を行うコントロールプレーンを、コントロールプレーンの決定に基づいて選択された宛先にサービス要求を転送する責任を負うデータプレーンから切り離すことによって、より低いレベルの機能性の抽象化を通じてネットワークサービスを管理することを可能にするネットワークである。データプレーンは、ネットワークのハードウェア又はソフトウェア装置に存在してよく、コントロールプレーンは、ソフトウェアを通じて実行されてよい。ＳＤＮのプレーンのこうした分離は、コマンド又は制御ルールがソフトウェアによって実行されてもよいため、ネットワーク仮想化を可能にすることができる。ＳＤＮは、クライアントサービス要求又はホストサービス要求を、仮想マシンと例えばサーバなどの物理的装置とに配信するように構成されてよい。
【００２１】
コントロールプレーンは、例えば、リアルタイムデータネットワークアプレットによって、ＳＤＮと仮想マシンとに関連付けられた健全性及び他のデータを確かめるように構成されてもよい。コントロールプレーンは、リアルタイムデータネットワークアプレットと他の手段とを活用して、仮想マシン上のサービス応答性を測定し、仮想マシン上の合計の接続、中央処理ユニット利用率及びメモリ並びにネットワーク接続性を監視し、この情報を使用してデータプレーンにおける負荷分散決定及び転送に影響を与えてもよい。
【００２２】
さらに、コントロールプレーンは、サービスポリシーエンジンを含んでもよく、サービスポリシーエンジンは、収集された健全性データを解析し、この解析に基づいて健全性データをサービスポリシーに変換するように構成される。サービスポリシーには、仮想マシン、トラフィック分類エンジン又はバックエンドサーバの数を強化すなわちスケールアウト又はスケールダウンして、故障した仮想マシンを是正し又は修復し、仮想マシンを確保し、新しい仮想マシンを導入し、仮想マシンを除去するなどのポリシーを含んでよい。効率的に、サービスポリシーは、ロードバランシング、高可用性、及びＳＤＮネットワークをプログラムすることに影響を与えることができる。それゆえに、サービスポリシーに基づいて、ＳＤＮは、期間又は動的負荷を通じてトラフィック分散装置の使用をスケールアウトし、あるいはスケールダウンし、これによりネットワークリソースをそれぞれ最適化してもよい。トラフィック分散装置は、例えば一日のうちの時間に基づいて、スケールアウトされ、あるいはスケールダウンされてよい。さらに、固定間隔のソフトウェアアップデートが予測可能なネットワーク輻輳をもたらすことがあり、ロードバランシングは、フラッシュクラウド現象を扱うようにスケールアウトされ、後にスケールダウンされる必要があり得る。さらに、サービスの人気が、サービスをスケールアップする必要性を余儀なくさせることがある。
【００２３】
ＳＤＮは、コントローラを含んでもよく、コントローラは、ネットワークスイッチへの物理的なアクセスを必要とすることなくネットワークトラフィックなどのサービス要求をルーティングするプログラム可能制御を可能にする。換言すると、コントローラは、サーバプール又は仮想マシンプールに対するネットワークにわたるトラフィックを誘導するように構成されてよい。サービスポリシーエンジンは、コントローラと通信し、サービスポリシーをコントローラに投入してもよい。コントローラは、同様に、サービスポリシーに従って、サーバ又は仮想マシンなどのネットワーク装置にわたるトラフィックを誘導してもよい。
【００２４】
一例示的な実施形態において、ＳＤＮのサービスデータプレーンは、アプリケーション配信コントローラ（ＡＤＣ）として構成されてもよい。コントロールプレーンは、サービス要求を１又は複数のＡＤＣにマッピングする一組のサービスポリシーを管理することによって、ＡＤＣと通信してもよい。それから、ＡＤＣは、物理的又は論理的なネットワークを通じて、すなわちサーバプール又は仮想マシンプールを通じて、バックエンドサーバにサービス要求を中継してもよい。
【００２５】
次に図面を参照すると、図１は、ＳＤＮにおける負荷分散のための方法及びシステムを実施することができる環境１００を示す。環境１００には、ネットワーク１１０、クライアント１２０、負荷分散のためのシステム３００、及びサーバ１４０を含んでよい。クライアント１２０には、ネットワーク１１０に関連付けられたユーザ又はホストを含んでよい。
【００２６】
ネットワーク１１０には、インターネット、又は装置間でデータを通信する能力がある任意の他のネットワークを含んでよい。適切なネットワークは、例えば、ローカルイントラネット、ＰＡＮ（パーソナルエリアネットワーク）、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、ＭＡＮ（メトロポリタンエリアネットワーク）、仮想プライベートネットワーク（ＶＰＮ）、ストレージエリアネットワーク（ＳＡＮ）、フレームリレー接続、高度インテリジェントネットワーク（ＡＩＮ）接続、同期型光ネットワーク（ＳＯＮＥＴ）接続、デジタルＴ１、Ｔ３、Ｅ１若しくはＥ３回線、デジタルデータサービス（ＤＤＳ）接続、ＤＳＬ（デジタル加入者線）接続、イーサネット接続、ＩＳＤＮ（統合型サービスデジタルネットワーク）回線、Ｖ．９０、Ｖ．３４若しくはＶ．３４ｂｉｓアナログモデム接続などのダイアルアップポート、ケーブルモデム、ＡＴＭ（非同期転送モード）接続、又はＦＤＤＩ（ファイバ分散データインタフェース）若しくはＣＤＤＩ（銅分散データインタフェース）接続のうち任意の１又は複数を含んでよく、あるいは任意の１又は複数とインタフェースをとってよい。さらに、通信には、ＷＡＰ（ワイヤレスアプリケーションプロトコル）、ＧＰＲＳ（Ｇｅｎｅｒａｌ  Ｐａｃｋｅｔ  Ｒａｄｉｏ  Ｓｅｒｖｉｃｅ）、ＧＳＭ（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）、ＣＤＭＡ（符号分割多元接続）若しくはＴＤＭＡ（時分割多元接続）、セルラーフォンネットワーク、ＧＰＳ（グローバルポジショニングシステム）、ＣＤＰＤ（セルラーデジタルパケットデータ）、ＲＩＭ（リサーチ・イン・モーション・リミテッド）デュプレックスページングネットワーク、Ｂｌｕｅｔｏｏｔｈ無線、又はＩＥＥＥ８０２．１１ベースの無線周波数ネットワークを含む様々なワイヤレスネットワークのうち任意のものに対するリンクを含んでもよい。ネットワーク１１０は、さらに、ＲＳ‐２３２シリアル接続、ＩＥＥＥ‐１３９４（Ｆｉｒｅｗｉｒｅ）接続、ファイバチャネル接続、ＩｒＤＡ（赤外線）ポート、ＳＣＳＩ（小型コンピュータシステムインタフェース）接続、ＵＳＢ（ユニバーサルシリアルバス）、若しくは他の有線若しくは無線のデジタル若しくはアナログのインタフェース若しくは接続、メッシュ又はＤｉｇｉ（登録商標）ネットワーキングのうち任意の１又は複数を含むことができ、あるいは任意の１又は複数とインタフェースをとることができる。ネットワーク１１０には、データ通信の目的のために相互接続されたデータ処理ノードのネットワークを含んでよい。ネットワーク１１０には、ＳＤＮを含んでよい。ＳＤＮには、上記のネットワークタイプのうち１又は複数を含んでよい。概して、ネットワーク１１０には、予め定義されたプロトコルを使用することにより装置間の通信を可能にするトランスポート媒体によって一緒に接続された複数の同様又は非同様の装置を含んでよい。当業者は、本願開示が様々なネットワーク構成環境内で、及び様々なコンピューティング装置上で実施されてよいと認めるであろう。
【００２７】
図１に示されるとおり、クライアント１２０は、サービス要求１５０をバックエンドサーバ１４０に送信することができる。サービス要求１５０には、ＨＴＴＰ要求、ビデオストリーミング要求、ファイルダウンロード要求、トランザクション要求、会議要求などを含んでよい。サーバ１４０には、ウェブサーバ、ワイヤレスアプリケーションサーバ、双方向性テレビジョンサーバなどを含んでよい。負荷分散のためのシステム３００は、ネットワーク１１０のトラフィック転送装置の間でサービス要求１５０のフローのバランスをとる（balance）ことができる。負荷分散のためのシステム３００は、サービス要求１５０のフローを解析し、ネットワーク１１０のどのトラフィック転送装置及びどれほどの数のトラフィック転送装置がサービス要求１５０をサーバ１４０に配信することを必要とされるかを判定することができる。
【００２８】
図２は、一例示的な実施形態に従う、ＳＤＮにおけるサービス負荷分散のための方法２００を示すプロセスフロー図である。方法２００は、ハードウェア（例えば、意思決定ロジック、専用ロジック、プログラム可能ロジック及びマイクロコード）、ソフトウェア（汎用目的コンピュータシステム又は専用マシン上で実行されるソフトウェアなど）又は双方の組み合わせを含み得る処理ロジックによって実行されてよい。
【００２９】
方法２００は、オペレーション２０２において、ＳＤＮに関連付けられたネットワークデータを受信することから開始することができる。一例示的な実施形態において、ＳＤＮに関連付けられたネットワークデータは、ＳＤＮの健全性、処理ユニット利用率、合計の接続の数、メモリステータス、ネットワーク接続性、バックエンドサーバキャパシティなどを示してよい。オペレーション２０４において、本方法は、１又は複数のサービスノードに関連付けられたサービスノードデータを読み出すことを含むことができる。一例示的な実施形態において、１又は複数のサービスノードには、仮想マシンと物理的装置とを含んでよい。サービスノードデータには、ノードの健全性、動的な状態、ノード処理ユニット利用率、ノードメモリステータス、サービスノードのネットワーク接続性、１又は複数のサービスノードの応答性などを含んでよい。
【００３０】
オペレーション２０６において、読み出されたネットワークデータとサービスノードデータとが解析されることができる。この解析に基づいて、オペレーション２０８において、サービスポリシーが生成されることができる。サービスポリシーには、下記の：サービスアドレス、サービスノードアドレス、トラフィック分散ポリシー、サービスノード負荷ポリシーなどのうち１又は複数を含んでよい。本方法は、さらに、生成されたサービスポリシーをデータネットワークに関連付けられた装置に提供すること、すなわちプッシュすることを含むことができる。データネットワークに関連付けられた装置には、サービスノードとトラフィック分類エンジンとを含んでよい。
【００３１】
方法２００は、オペレーション２１０において、生成されたサービスポリシーをデータネットワークに関連付けられた装置に提供することを続けることができる。オペレーション２１２において１又は複数のサービス要求を受信すると、１又は複数のサービス要求は、オペレーション２１４において、サービスポリシーに従って１又は複数のサービスノード間で分散されることができる。一例示的な実施形態において、方法２００は、上記の解析に基づいてさらなるサービスポリシーを開発することを含むことができる。さらなるサービスポリシーは、１又は複数のサービスノードに関連付けられたサービスをスケールアウトし、スケールダウンし、是正し、除去すること、１又は複数のサービスノードに関連付けられた新しいサービスを導入すること、などに関連付けられてよい。
【００３２】
一例示的な実施形態において、方法２００は、データネットワークに関連付けられた装置によってバックエンドサーバの健全性確認を実行することを含むことができる。さらなる例示的な実施形態において、方法２００は、トラフィックフローに対して最小限乃至ゼロの途絶を有する端正な方法で、サービスノード、バックエンドサーバ、トラフィック分類エンジン及びクラスタマスタをスケールアップし、あるいはスケールダウンすることを含むことができる。さらに、サービスは、トラフィックフローに対して最小限乃至ゼロの途絶を有する端正な方法で、スケールアップされ、あるいはスケールダウンされることができる。サービスノードのスケールアップ又はスケールダウンの事象において、サービス要求は、このサービス要求に関連付けられたデータを処理し続けるように、１又は複数の他のサービスノードにリダイレクトされることができる。さらなる例示的な実施形態において、方法２００は、サービスを扱うバックエンドサーバからサービスノードへの逆向きトラフィックを最適化することを含むことができる。
【００３３】
図３は、ＳＤＮにおけるサービス負荷分散のための一例示的なシステム３００の様々なモジュールを例示するブロック図を示す。システム３００は、クラスタマスタとして適格な装置のクラスタを含んでよい。システム３００は、これらの装置から選ばれたクラスタマスタ３０５を含んでよい。クラスタマスタ３０５は、ＳＤＮの記録（track）を保持し、ＳＤＮに関連付けられたネットワークデータを読み出すように構成されてよい。一例示的な実施形態において、ネットワークデータには、下記の：合計の接続の数、処理ユニット利用率、メモリステータス、ネットワーク接続性、バックエンドサーバキャパシティなどのうち１又は複数を含んでよい。さらに、クラスタマスタ３０５は、サービスノードの記録を保持し、１又は複数のサービスノードに関連付けられたサービスノードデータを読み出すように構成されてよい。サービスノードデータには、下記の：健全性、動的な状態、１又は複数のサービスノードの応答性などのうち１又は複数を含んでよい。換言すると、クラスタマスタ３０５は、ネットワークとシステム３００に関連付けられた各サービスノードとの健全性の記録を保持することができる。クラスタマスタ３０５は、読み出されたネットワークデータとサービスノードデータとを解析することができる。この解析に基づいて、クラスタマスタ３０５は、サービスポリシーを生成することができる。サービスポリシーには、サービスアドレス、サービスノードアドレス、サービスノード負荷ポリシー、トラフィックマッピングとも呼ばれるトラフィック分散ポリシーなどを含んでよい。クラスタマスタ３０５は、生成されたサービスポリシーを、データネットワークに関連付けられた装置、例えばサービスノード及びトラフィック分類エンジンなどに提供することができる。
【００３４】
一例示的な実施形態において、クラスタマスタ３０５は、さらに、上記の解析に基づいて、さらなるサービスポリシーを開発するように構成されてよい。さらなるポリシーは、サービスノード、トラフィック分類エンジン、バックエンドサーバなどの装置をスケールアウトし、スケールダウンし、是正し、除去すること、新しいサービスノード、トラフィック分類エンジン、バックエンドサーバなどを導入すること、などに関連付けられてよい。
【００３５】
一例示的な実施形態において、クラスタマスタ３０５は、さらに、ネットワーク管理者が読み出されたネットワークデータ及びサービスノードデータと分析論とを使用して上記の解析に基づいてさらなるサービスポリシーを開発することが可能になるように、ネットワーク管理者のためにアプリケーションプログラム可能インタフェース（図示せず）を容易にするように構成されてよい。このアプローチは、アプリケーション開発者がネットワークを構成するすべての下層の複雑なもの及びサブシステムを管理し又は理解する必要なくネットワークに直接書込みできるようにすることができる。
【００３６】
さらなる例示的な実施形態において、クラスタマスタ３０５は、クラスタマスタ３０５の故障の場合にクラスタマスタを置換するように構成されたバックアップユニット（図示せず）を含んでよい。
【００３７】
システム３００は、トラフィック分類エンジン３１０を含んでよい。トラフィック分類エンジン３１０は、１又は複数のソフトウェアモジュール、ハードウェアモジュール、又はハードウェアとソフトウェアとの組み合わせとして実施されてよい。トラフィック分類エンジン３１０には、データフローを監視し、データフローに関連付けられた１又は複数の属性、例えばユニフォームリソースロケータ（ＵＲＬ）、ＩＰアドレス、ポート番号などに基づいてデータフローを分類するように構成されたエンジンを含んでよい。各々の結果的なデータフロークラスは、クライアントのために特定のサービスを実施するように具体的に設計されてよい。一例示的な実施形態において、クラスタマスタ３０５は、サービスポリシーをトラフィック分類エンジン３１０に送信することができる。トラフィック分類エンジン３１０は、クラスタマスタ３０５からサービスポリシーを受信するように構成されてよい。さらに、トラフィック分類エンジン３１０は、１又は複数の到来するサービス要求３１５、例えばルータ又はスイッチ（図示せず）からの到来するデータトラフィックを受信するように構成されてよい。典型的には、データトラフィックは、ルータ又はスイッチからトラフィック分類エンジン３１０の各々に均等に分散されてよい。一例示的な実施形態において、ルータは、簡易な等コストマルチパス（ＥＣＭＰ）ルーティングを実行してすべてのトラフィック分類エンジン３１０に等しくトラフィックを分散することができる。トラフィック分類エンジン３１０は、サービスポリシーに従って、１又は複数のサービスノード３２０間で１又は複数のサービス要求を分散することができる。トラフィックは、非対称の様態で１又は複数のサービスノード３２０に分散されてもよい。サービスノード３２０に対するトラフィックは、直接であってもよく、あるいはトンネルを通ってもよい（ＩＰ‐ｉｎ‐ＩＰ又は他のオーバレイ手法）。トラフィック分類エンジン３１０は、ステートレス又はステートフルであってよく、パケットごとに作用することができ、トラフィックの各パケットを対応するサービスノード３２０に向けることができる。サービスノード状態に変化があるとき、クラスタマスタ３０５は、新しいトラフィックマップなどの新しいサービスポリシーをトラフィック分類エンジン３１０に送信することができる。
【００３８】
システム３００は、１又は複数のサービスノード３２０を含んでよい。１又は複数のサービスノード３２０には、トラフィックが向けられる対応する仮想サービスをサービスすることができる仮想マシン又は物理的装置を含んでよい。クラスタマスタ３０５は、サービスポリシーをサービスノード３２０に送信することができる。サービスノード３２０は、クラスタマスタ３０５からサービスポリシーを受信するように構成されてよい。さらに、サービスノード３２０は、サービスポリシーに基づいて、トラフィック分類エンジン３１０から１又は複数のサービス要求３１５を受信することができる。１又は複数のサービスノード３２０は、受信した１又は複数のサービス要求をサービスポリシーに従って処理することができる。１又は複数のサービス要求３１５の処理には、１又は複数のサービス要求３１５を１又は複数のバックエンド宛先サーバ（図示せず）に転送することを含んでよい。各サービスノード３２０は、１又は複数の仮想サービスをサービスすることができる。サービスノード３２０は、サービスノードデータをクラスタマスタ３０５に送信するように構成されてよい。
【００３９】
さらなる例示的な実施形態に従い、既存のサービスノードは、サービスノードに対するフローの再分散に基づいて別のサービスノードがフローの新しい所有者になる場合、既存のフローのためのパケットを上記別のサービスノードにリダイレクトすることができる。さらに、フローを引き継ぐサービスノードは、サービスの継続を維持するためにフロー状態が元の所有者に固定される必要がある場合のために、考慮中のフローに関して元の所有者であったサービスノードにパケットをリダイレクトすることができる。
【００４０】
さらに、一例示的な実施形態において、クラスタマスタ３０５は、サービスノード３２０上で周期的な健全性確認を実行し、トラフィックマップなどのサービスポリシーを用いてサービスノード３２０をアップデートすることができる。トラフィック割り当てに変化があって、あるフローの中のデータトラフィックのパケットがサービスノード３２０に到達したとき、サービスノード３２０は、このパケットを別のサービスノードにリダイレクトすることができる。リダイレクションは、直接であってよく、あるいはトンネルを通ってもよい（ＩＰ‐ｉｎ‐ＩＰ又は他のオーバレイ手法）。
【００４１】
ネットワークにおけるクラスタの装置の各々がバックエンドサーバ健全性確認を実行する場合、このことが、個々の装置に送信される多数の健全性確認パケットを引き起こす可能性があることに留意すべきである。この観点から、バックエンドサーバ健全性確認は、クラスタのうちいくつかの装置によって実行されてよく、その結果が、クラスタの中の残りの装置間で共有されてよい。健全性確認には、サービス確認と接続性確認とを含んでよい。サービス確認には、アプリケーション又はバックエンドサーバが今なお利用できるかを判定することを含んでよい。上記ですでに言及されたとおり、クラスタの中のあらゆる装置がこの確認を実行する必要はない。確認は、いくつかの装置によって実行されてよく、その結果が、クラスタの中の残りの装置に伝搬されてよい。接続性チェックには、サービスノードがバックエンドサーバに到達することができるかを判定することを含む。バックエンドサーバへの経路は、サーバノードに固有であることがあり、ゆえにこれは、複数のサービスノードにわたって分散されなくてもよく、クラスタの中の各装置がその独自の確認を実行してもよい。
【００４２】
一例示的な実施形態において、システム３００は、調整部（orchestrator）３２５を含んでよい。調整部３２５は、サービスノード３２０、トラフィック分類エンジン３１０及びバックエンドサーバを取り入れ（bring  up）、及び減らすように構成されてよい。調整部３２５は、１又は複数のサービスノード３２０の存在を検出し、１又は複数のサービスノード３２０の存在に関連付けられたデータをクラスタマスタ３０５に送ることができる。さらに、調整部３２５は、サービスノード３２０を取り入れること又は減らすことをクラスタマスタ３０５に知らせることができる。調整部３２５は、１又は複数のアプリケーションプログラミングインタフェース（ＡＰＩ）を使用して、クラスタマスタ３０５及びサービスノード３２０と通信することができる。
【００４３】
一例示的な実施形態において、集中型又は分散型のネットワークデータベースが使用され、システム３００のクラスタの中のすべての装置、例えばクラスタマスタ、トラフィック分類エンジン及び他のサービスノードなどの間で共有されてよい。各装置は、ネットワークデータベースに接続し、その役割に従ってテーブルをアップデートすることができる。関連するデータベースレコードが、クラスタの一部である装置に複製されてよい。分散型ネットワークデータベースは、複数の装置の構成及び状態を記憶するために、例えばクラスタマスタ、トラフィック分類エンジン、１又は複数のサービスノード、バックエンドサーバ及びサービスポリシーデータに関連付けられたデータを記憶するために使用されてよい。分散型ネットワークデータベースに記憶されるデータには、ネットワークデータとサービスノードデータとを含んでよい。分散型ネットワークデータベースには、サービスタイプ、リソースの可用性、トラフィック分類、ネットワークマップなどに関する情報と共にテーブルを含んでよい。クラスタマスタ３０５は、分散型ネットワークデータベースを維持すること、及びこれを装置に複製することの責任を負ってよい。ネットワークデータベースは、トラフィック分類エンジン３１０とサービスノード３２０とに複製されてよい。一例示的な実施形態において、ネットワークデータベースは、参加ノードにわたってデータを内部的に複製することができる。
【００４４】
上記で説明された実施形態において、システム３００は、専用クラスタマスタ３０５、専用トラフィック分類エンジン３１０及び専用サービスノード３２０を含んでよい。換言すると、個別の複数の装置が、クラスタマスタ、トラフィック分類エンジン及びサービスノードの役割を果たすことの責任を負ってよい。さらなる例示的な実施形態において、システム３００は、クラスタマスタの役割を果たす専用装置を含まなくてよい。この場合、クラスタマスタの機能性は、トラフィック分類エンジンによって又はサービスノードによってのいずれかで提供されてよい。したがって、トラフィック分類エンジンのうちの１つ、又はサービスノードのうちの１つが、クラスタマスタの役割を果たしてよい。クラスタマスタの役割を果たすトラフィック分類エンジン又はサービスノードが故障した場合、別のトラフィック分類エンジン又はサービスノードがクラスタマスタとして選ばれてよい。クラスタマスタとして選ばれなかったトラフィック分類エンジンとサービスノードとは、バックアップクラスタマスタとして構成され、現在のクラスタマスタと同期されてよい。一例示的な実施形態において、クラスタマスタは、装置間で責務を共有することによって単一のマスタの役割を果たすことができる複数のアクティブな装置から成ってよい。
【００４５】
さらなる例示的な実施形態において、システム３００は、トラフィック分類エンジンの役割を果たす専用装置を有さずに、専用クラスタマスタを含んでよい。この場合、トラフィック分類は、複数のアップストリームルータ又はスイッチのうちの１つによって実行されてよい。さらに、複数のサービスノードが、自身の間でトラフィックを分散してもよい。一例示的な実施形態において、クラスタマスタとサービスノードとは、トラフィック分類エンジンの役割を果たすように構成されてよい。
【００４６】
さらなる例示的な実施形態において、システム３００は、クラスタマスタ及びトラフィック分類エンジンの役割を果たす装置を含まなくてよい。この場合、サービスノードのうちの１つが、クラスタマスタの役割も果たしてよい。トラフィック分類は、アップストリームルータ又はスイッチによって行われてよい。クラスタマスタは、トラフィックマッピングを用いてアップストリームルータをプログラムすることができる。さらに、複数のサービスノードが、自身の間でトラフィックを分散してもよい。
【００４７】
負荷が増加したときに新しいサービスノードを取り入れること、及び負荷が通常になったときにサービスノードを減らすことは、既存のデータトラフィック及び接続に影響させずに、端正に実行できることに留意すべきである。サービスノードが現れるとき、トラフィックの分散は、ｎ個のサービスノードに対する分散から（ｎ＋１）個のサービスノードに対する分散に変化してよい。
【００４８】
サービスノードが減らされようとしているとき、このサービスノードに来るトラフィックは、他のサービスノードにリダイレクトされてよい。この目的のため、減らされようとしているサービスノードに関連付けられたリダイレクションポリシーが、クラスタマスタによって作成され、トラフィック分散エンジン及び／又はサービスノードに送信されてよい。リダイレクションポリシーを受信すると、トラフィック分散エンジンは、トラフィックを別のサービスノードに向けることができる。
【００４９】
一例示的な実施形態において、システム３００は、例えば、複数のトラフィック分散エンジンを含んでよく、複数のトラフィック分散エンジンの各々が、複数のサービスに対するトラフィックをサービスしてよい。トラフィック分散エンジンの各々は、異なる組のサービスノードと通信することができる。トラフィック分散エンジンの１つが故障した場合、別のトラフィック分散エンジンが、故障したトラフィック分散エンジンを代替し、故障したトラフィック分散エンジンのトラフィックを対応するサービスノードに分散するように構成されてよい。それゆえに、トラフィック分散エンジンの各々は、トラフィック分散エンジンと現在通信しているサービスノードに関連付けられたアドレスだけでなく、すべてのサービスノードのアドレスを含んでよい。
【００５０】
図４は、ＳＤＮの負荷分散のためのブロック図４００を示す。図示されるとおり、図４００は、クライアント１２０、例えばネットワーク１１０に接続されたコンピュータを含む。ネットワーク１１０には、ＳＤＮを含んでよい。クライアント１２０は、仮想マシン／サーバプール４０５のうち１又は複数のサーバによって提供されるサービスに関して１又は複数のサービス要求を送信することができる。これらのサーバには、ウェブサーバ、ワイヤレスアプリケーションサーバ、双方向性テレビジョンサーバなどを含んでよい。上記のサービス要求は、上記で説明された負荷分散のために、システムによってロードバランスをとられる（load  balanced）ことができる。換言すると、クライアント１２０のサービス要求は、ＳＤＮの仮想マシン又は物理的サーバプール４０５の間でインテリジェントに分散されてよい。
【００５１】
負荷分散のためのシステムには、サービスコントロールプレーン４１０を含んでよい。サービスコントロールプレーン４１０には、１又は複数のデータネットワークアプレット４１５、例えばリアルタイムデータネットワークアプレットを含んでよい。データネットワークアプレット４１５は、ＳＤＮ１１０と仮想マシン４０５とに関連付けられた健全性及び他のデータを確認することができる。例えば、データネットワークアプレット４１５は、仮想マシン４０５の応答性を特定することができる。さらに、データネットワークアプレット４１５は、仮想マシン４０５における合計の接続、中央処理ユニット利用率、メモリ、ネットワーク接続性などを監視することができる。それゆえに、データネットワークアプレット４１５は、ＳＤＮ及び仮想マシンサービスインフラストラクチャに関するきめ細かい包括的な情報を読み出すことができる。
【００５２】
読み出された健全性データは、サービスポリシーエンジン４２０に送られてよい。一例示的な実施形態において、上記で説明されたクラスタマスタ３０５は、サービスポリシーエンジン４２０の役割を果たしてよい。サービスポリシーエンジン４２０は、健全性データを解析し、この解析に基づいて一組のサービスポリシー４３０を生成して、サービスをスケールアップ／ダウンし、サービスを確保し、新しいサービスを導入し、サービスを除去し、故障した装置を是正し又は修復するなどをすることができる。負荷分散のためのシステムは、さらに、需要に応じてさらなる仮想マシンを取り入れるように構成された調整部（図示せず）を含んでよい。それゆえに、円滑なクライアント体験を届けるために、サービス要求は、仮想マシン４０５にわたってロードバランスをとられてよい。
【００５３】
さらに、サービスポリシー４３０は、ＳＤＮコントローラ４３５に提供されてもよい。ＳＤＮコントローラ４３５は、同様に、ＳＤＮにおけるネットワーク装置にわたってサービス要求、すなわちデータトラフィックを誘導することができる。効率的に、これらのポリシーは、ロードバランシング、高可用性、及びＳＤＮネットワークをプログラムすることに影響を与えて、サービスをスケールアップさせ、あるいはスケールダウンさせることができる。
【００５４】
概して言うと、ネットワーク、サービスノード及びサーバ／仮想マシンに関連付けられたデータをネットワークの中から明らかにし（unlocking）、このデータを関連情報及びサービスポリシー４３０に変換し、それからサービスポリシー４３０をＳＤＮ１１０を構成するためにＳＤＮコントローラ４３５に提示することによって、上記の説明されたインフラストラクチャは、下層のインフラストラクチャとアプリケーションとの間のフィードバックループを可能にして、ネットワーク最適化及びアプリケーション応答性を改良することができる。
【００５５】
コントローラ４３５及びサービスポリシーエンジン４２０と関連して動作するサービスコントロールプレーン４１０は、複数の配置可能性を作り出すことができ、このことは、基本の及び高度の負荷分散機構の配列を提供することができる。特に、簡易なロードバランシングの機能性を提供するために、ＳＤＮコントローラ４３５とサービスコントロールプレーン４１０とは、その独自のいくらかのロードバランシングをＳＤＮ１１０の能力を活用することによって提供し、あるいは別法として、ＳＤＮ１１０に含まれるサービスデータプレーンとも呼ばれるＡＤＣ４４０と関連して動作して高度の追加の機能性を場合により提供することができる。
【００５６】
一例示的な実施形態において、サービスコントロールプレーン４１０がスタンドアロンであり得る、すなわちＡＤＣ４４０なしであり得る場合、仮想マシン４０５は、スケールアップされるとき、仮想マシン４０５のループバックインタフェース上に仮想インターネットプロトコル（ＶＩＰ）アドレスを用いてプログラムされてよい。したがって、簡易なサービス達成を必要とするデータトラフィックについて、サービスコントロールプレーン４１０は、サービス要求を分散するために簡易なポリシーを確立し、ネットワーク装置をプログラムしてサービス要求を異なる仮想マシン／物理的サーバ４０５に直接分散させるようにＳＤＮコントローラ４３５に指示することができる。このステップは、物理的又は論理的なネットワークを通じて実行されてよい。
【００５７】
一例示的な実施形態において、サービスコントロールプレーン４１０がＡＤＣ４４０と協働して動作し得るとき、典型的には特設されたＡＤＣ装置によって提供されるさらに精巧なＡＤＣ機能性のために、サービスコントロールプレーン４１０は、サービス要求を１又複数のＡＤＣ装置にマッピングする一組のサービスポリシーを管理してよい。サービスコントロールプレーン４１０は、サービス要求、すなわちトラフィックが１又は複数のＡＤＣ４４０に到達することができるようにネットワーク装置をプログラムするように、ＳＤＮコントローラ４３５に指示することができる。それから、ＡＤＣ４４０は、物理的又は論理的なネットワークを通じてサービス要求をバックエンドサーバに中継することができる。
【００５８】
本説明の実施形態において、いくつかのトラフィックフローシナリオが存在し得る。一例示的な実施形態において、転送トラフィックだけがＡＤＣ４４０を経由してもよい。ＡＤＣ４４０の簡易な機能性、例えば、レート制限、帯域幅制限、スクリプト記述ポリシーが必要とされる場合、転送トラフィックはＡＤＣ４４０を通過してよい。サーバ上のループバックインタフェースは、ＶＩＰアドレスを用いてプログラムされてよい。仮想マシン４０５からの応答トラフィックは、ＡＤＣ４４０を迂回してよい。
【００５９】
さらなる例示的な実施形態において、転送及び逆向きトラフィックがＡＤＣ４４０を通過してもよい。ＡＤＣ４４０において、より高度の機能性、例えば、トランスミッションコントロールプロトコル（ＴＣＰ）フロー最適化、セキュアソケットレイヤー（ＳＳＬ）暗号解読、圧縮、キャッシングなどが必要とされる場合、サービスコントロールプレーン４１０は、ＳＤＮ１１０を適切にプログラムすることによって、転送及び逆向きトラフィックの双方がＡＤＣ４４０を通過することを保証する必要があり得る。
【００６０】
図５は、コンピュータシステム５００の一例示的な電子形態におけるマシンの概略表現を示し、これにおいて、本明細書に論じられる方法論のうち任意の１又は複数をマシンに実行させる命令セットを実行することができる。様々な例示的な実施形態において、マシンは、スタンドアロン装置として稼働し、あるいは他のマシンに接続され（例えば、ネットワーク化され）てもよい。ネットワーク化された配置において、マシンは、サーバ‐クライアントネットワーク環境の中でサーバ又はクライアントマシンのキャパシティにおいて、あるいはピア‐ツー‐ピア（又は分散型）ネットワーク環境の中でピアマシンとして稼働してよい。マシンは、ＰＣ、タブレットＰＣ、セットトップボックス（ＳＴＢ）、セルラー電話、ポータブル音楽プレーヤ（例えば、ＭＰ３（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  Ａｕｄｉｏ  Ｌａｙｅｒ  ３）プレーヤなどのポータブルハードドライブオーディオ装置）、ウェブ電化製品、ネットワークルータ、スイッチ若しくはブリッジ、又はマシンが取るべき措置を指定する命令セット（順次の又は別な方法の）を実行する能力がある任意のマシンであってよい。さらに、単一のマシンだけが例示されているが、用語「マシン」は、一の（又は複数の）命令セットを個々に又は連帯して実行して本明細書に論じられる方法論のうち任意の１又は複数を実行するマシンのいかなる集合をも含むとみなされるものとする。
【００６１】
例示的なコンピュータシステム５００は、一のプロセッサ又は複数のプロセッサ５０２（例えば、中央処理ユニット（ＣＰＵ）、グラフィクス処理ユニット（ＧＰＵ）、又は双方）、メインメモリ５０４及びスタティックメモリ５０６を含み、これらは、バス５０８を介して互いに通信する。コンピュータシステム５００は、さらに、ビデオディスプレイユニット５１０（例えば、液晶ディスプレイ（ＬＣＤ）又は陰極線管（ＣＲＴ））を含んでよい。コンピュータシステム５００は、さらに、英数字入力装置５１２（例えば、キーボード）、カーソル制御装置５１４（例えば、マウス）、ディスクドライブユニット５１６、信号生成装置５１８（例えば、スピーカ）、及びネットワークインタフェース装置５２０を含んでもよい。
【００６２】
ディスクドライブユニット５１６には、非一時的コンピュータ可読媒体５２２を含み、これに、本明細書に説明された方法論又は機能のうち任意の１又は複数を具現化し、あるいはその任意の１又は複数によって利用される１又は複数の命令セット及びデータ構造（例えば、命令５２４）が記憶される。命令５２４は、コンピュータシステム５００による該命令の実行の間、メインメモリ５０４内及び／又はプロセッサ５０２内に、完全に又は少なくとも部分的に存在してもよい。メインメモリ５０４とプロセッサ５０２とは、マシン可読媒体を構成してもよい。
【００６３】
命令５２４は、さらに、複数の周知のトランスファープロトコル（例えば、ハイパーテキストトランスファープロトコル（ＨＴＴＰ））のうち任意の１つを利用するネットワークインタフェース装置５２０を介してネットワーク５２６を通じて送られ、あるいは受信されてもよい。
【００６４】
コンピュータ可読媒体５２２は、一例示的な実施形態において単一の媒体であるように示されているが、用語「コンピュータ可読媒体」は、１又は複数の命令セットを記憶する単一の媒体又は複数の媒体（例えば、集中型若しくは分散型のデータベース、並びに／又は関連するキャッシュ及びサーバ）を含むとみなされるべきである。用語「コンピュータ可読媒体」は、マシンによる実行のために命令セットを記憶し、エンコードし又は運ぶ能力があってマシンに本出願に係る方法論のうち任意の１又は複数を実行させる任意の媒体、あるいは、上記の命令セットによって利用される又は上記の命令セットに関連付けられたデータ構造を記憶し、エンコードし又は運ぶ能力がある任意の媒体を含むともみなされるものとする。用語「コンピュータ可読媒体」は、したがって、これらに限定されないが、ソリッドステートメモリ、光の及び磁気の媒体、並びに搬送波信号を含むとみなされるものとする。こうした媒体には、制限なく、ハードディスク、フロッピーディスク、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）などを含んでもよい。
【００６５】
本明細書に説明される例示的な実施形態は、ハードウェアにおいて又はソフトウェアとハードウェアとの組み合わせにおいてコンピュータ上にインストールされたコンピュータ実行可能命令（例えば、ソフトウェア）を含む稼働環境で実施することができる。コンピュータ実行可能命令は、コンピュータプログラミング言語で書かれてもよく、ファームウエアロジックで具現化されてもよい。広く認められた標準に合うプログラミング言語で書かれる場合、上記の命令は、様々なハードウェアプラットフォーム上で、及び様々なオペレーティングシステムに対するインタフェースのために実行されてよい。これらに限定されないが、本願方法を実施するためのコンピュータソフトウェアプログラムは、任意の数の適切なプログラミング言語、例えば、ハイパーテキストマークアップ言語（ＨＴＭＬ）、ダイナミックＨＴＭＬ、拡張マークアップ言語（ＸＭＬ）、拡張スタイルシート言語（ＸＳＬ）、文書スタイル意味指定言語（ＤＳＳＳＬ）、カスケーディングスタイルシート（ＣＳＳ）、同期マルチメディア統合言語（ＳＭＩＬ）、ワイヤレスマークアップ言語（ＷＭＬ）、ＪａｖａＴＭ、ＪｉｎｉＴＭ、Ｃ、Ｃ＋＋、Ｐｅｒｌ、ＵＮＩＸシェル、ビジュアルベーシック若しくはビジュアルベーシックスクリプト、仮想現実マークアップ言語（ＶＲＭＬ）、ＣｏｌｄＦｕｓｉｏｎＴＭ、又は、他のコンパイラ、アセンブラ、インタプリタ、若しくは他のコンピュータコンピュータ言語若しくはプラットフォームなどで書かれてよい。
【００６６】
上述のとおり、ＳＤＮにおける負荷分散のための方法及びシステムが開示された。実施形態は、特定の例示的な実施形態を参照して説明されているが、本出願のより広い主旨及び範囲から逸脱することなく様々な修正及び変更が上記の例示的な実施形態に対してなされ得ることが明らかになるであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。
【００６７】
関連出願の相互参照
本特許出願は、２０１２年９月２５日に申請された米国仮特許出願第６１／７０５，６１８号の優先の利益を主張し、その開示を参照により援用する。
【図１】
2015534769.tif 000003
【図２】
2015534769.tif 000004
【図３】
2015534769.tif 000005
【図４】
2015534769.tif 000006
【図５】
2015534769.tif 000007
【国際調査報告】
2015534769.tif 000008