(57)【特許請求の範囲】
【請求項１】
変換エンジンにおいて、サーバに関連するセッションに対応するセッション情報を受信するステップと、
前記セッション情報を、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換するステップと、
前記トポロジパラメタ及び前記データパラメタを満たすネットワークパスを設定するために、コントローラによる使用に備えて、前記変換済みセッション情報を成形するステップと、
成形された変換済みセッション情報を前記コントローラに渡すステップと
を含む方法。
【請求項２】
前記セッションの第１のフェイズは、第１のセッション情報に関連し、変換済み第１のセッション情報は、高スループットデータパラメタを含み、前記セッションの第２のフェイズは、第２のセッション情報に関連し、変換済み第２のセッション情報は、低レイテンシデータパラメタを含む、請求項１に記載の方法。
【請求項３】
前記セッションの第１のフェイズは、前記トポロジパラメタを満たす第１のネットワークパスに関連し、前記セッションの第２のフェイズは、前記トポロジパラメタを満たす第２のネットワークパスに関連する、請求項１に記載の方法。
【請求項４】
前記セッションの第１のフェイズは、第１のセッション情報に関連し、変換済み第１のセッション情報は、第１のトポロジパラメタ及び第１のデータパラメタを含み、前記セッションの第２のフェイズは、第２のセッション情報に関連し、変換済み第２のセッション情報は、第２のトポロジパラメタ及び第２のデータパラメタを含む、請求項１に記載の方法。
【請求項５】
前記セッションの移行フェイズに応答し、前記ネットワークパスを動的に解体するステップをさらに含む、請求項１〜４の何れか一項に記載の方法。
【請求項６】
前記セッション情報は、セッションＩＤ、クライアントリスト、及びセッション状態のうちの少なくとも１つを含む、請求項１〜５の何れか一項に記載の方法。
【請求項７】
前記トポロジパラメタは、前記ネットワークパスの第１のエンドポイントに対応する第１のネットワークアドレス、及び、前記ネットワークパスの第２のエンドポイントに対応する第２のネットワークアドレスを含む、請求項１〜６の何れか一項に記載の方法。
【請求項８】
前記データパラメタは、レイテンシ、スループット、ジッタ、及びパケットロスのうちの少なくとも１つに関連するデータ要件を含む、請求項１〜７の何れか一項に記載の方法。
【請求項９】
変換エンジンであって、
サーバに関連するセッションに対応するセッション情報を受信し、
前記セッション情報を、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換し、
前記変換済みセッション情報にしたがって前記トポロジパラメタ及び前記データパラメタに適合するネットワークパスを設定すべきことをコントローラに命じる変換エンジン。
【請求項１０】
前記変換エンジンは、アプリケーション・プログラミング・インタフェース（ＡＰＩ）コールに関連する、請求項９に記載の変換エンジン。
【請求項１１】
前記変換エンジンは、前記セッション情報に含まれるセッションＩＤを前記セッションに関連するネットワーククライアントのリストを含むクライアントリストにマッピングするためのマッピング情報を含み、前記変換エンジンは、前記マッピング情報に基づいて、前記ネットワーククライアントの各々について、少なくとも１つのネットワークエンドポイントを識別する、請求項９又は請求項１０に記載の変換エンジン。
【請求項１２】
前記コントローラは、オープンフロー・コントローラであり、前記変換済みセッション情報は、前記オープンフロー・コントローラに関連するフローにしたがって、ネットワークパスを動的に設定すべきことを前記オープンフロー・コントローラに命じる、請求項９〜１１の何れか一項に記載の変換エンジン。
【請求項１３】
前記変換エンジンは、前記ネットワークパスが前記データパラメタに関連するサービスレベルに適合していないことに応答し、代替ネットワークパスを設定すべきことを前記コントローラに命じる、請求項９〜１２の何れか一項に記載の変換エンジン。
【請求項１４】
前記変換エンジンは、前記ネットワークパスが前記データパラメタに関連するサービスレベルに適合していないことに応答し、補償メカニズムを起動すべきことを前記サーバに命じる、請求項９〜１２の何れか一項に記載の変換エンジン。
【請求項１５】
一組の命令が記憶された有形の一時的でないコンピュータ読取可能媒体であって、前記一組の命令が、プロセッサにより実行されたときに、
サーバに関連するセッションに対応するセッション情報を受信し、
前記セッション情報を、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換し、
前記トポロジパラメタ及び前記データパラメタを満たすネットワークパスを設定するために、コントローラによる使用に備えて、前記変換済みセッション情報を成形し、
成形された変換済みセッション情報を前記コントローラに渡すための方法を実施する、有形の一時的でないコンピュータ読取可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
種々のネットワークリソースが、種々の形のトラフィックを処理するために、割り当てられることがある。しかしながら、特定のネットワークトラフィック負荷を処理するためにネットワークを提供することは、ネットワークの提供過多、及び／又は全体な活用不足をもたらすことがある。エンド・ツー・エンドのクオリティ・オブ・サービス（ＱｏＳ）メカニズムが、構成のために使用されることがあるが、ネットワークパス上のネットワークデバイスは、適当なＱｏＳパラメタを用いた手動構成を必要とする。オープンフロー（ＯｐｅｎＦｌｏｗ）・コントローラは、ネットワーク構成のための１つのアプローチを提供するが、ネットワークの使用を試みるサーバ／アプリケーションから構成命令を受信するように構成されてはいない。したがって、アプリケーション及び／又はサーバは常に、独自の内蔵ネットワーク補償メカニズムを使用して、最適でないネットワーク効果／状況（パケットロス、レイテンシ、ジッタ、及び他のネットワーク効果）に対処する必要があり、特に、ネットワークが音声、データ、及び映像等のような他のトラフィックを運ぶものである場合、対処が必要となる。こうしたネットワーク効果は、ネットワークの使用に悪影響を及ぼすことがあり、アプリケーションのパフォーマンス及びユーザ体験に影響を与えるとともに、アプリケーション開発者に対し、種々のネットワーク補償メカニズムを開発する必要性を与えることにより負担となる。
【図面の簡単な説明】
【０００２】
【図１】一例による変換エンジンを含むシステムのブロック図である。
【図２】一例による変換エンジンを含むシステムの時系列図である。
【図３】一例による変換エンジンを含むシステムのブロック図である。
【図４】一例による変換エンジンを含むシステムのブロック図である。
【図５】一例による情報の変換に基づくフロー図である。
【発明を実施するための形態】
【０００３】
サーバに関連するセッションが、そのセッションの種々のフェイズに関連するネットワーク要件を変換エンジン（ＴＥ）を通してコントローラに直接渡す場合、ネットワークアーキテクチャフレームワークが提供される場合がある。変換エンジンは、サーバとコントローラとの間に抽象化の層を備え、コントローラに対し、クライアント及び／又はサーバにより使用されるネットワーク及び／又はネットワークパスを、変換エンジンからの入力に基づいて、セッション単位の粒度及び／又はフェイズ単位の粒度で構成すべきことを命じる場合がある。基礎となるネットワークは、特定のサーバ／アプリケーションのためのトラフィック（例えば、ゲームトラフィック）を、音声、映像、データ、ｅメール、及び他の種々の形のネットワークトラフィックとともに運ぶことがある。一般にネットワークは膨張性であり、ネットワーク全体を一つの特定の専用の用途に提供することは現実的ではなく、したがってネットワークは、パケットロスやレイテンシのような知覚可能なネットワーク効果として現れるような性能ボトルネックとして働く場合がある。本明細書に記載する変換エンジンの種々の例を使用することにより、ユーザは、たとえネットワークが膨張性であり、他のトラフィックソースを含むときであっても、ネットワークを介して種々の要素を接続するための基礎となる当該ネットワークにより運ばれる上等な没入型体験を楽しむことができる。
【０００４】
一例として、変換エンジンは、サーバに関連するセッションに対応するセッション情報を受信し、セッション情報を変換済みセッション情報に変換する。変換済みセッション情報は、トポロジパラメタ及びデータパラメタを含む場合がある。変換済みセッション情報は、コントローラに対し、変換済みセッション情報に従って、トポロジパラメタ及びデータパラメタに適合するネットワークパスを提供すべきことを命じる。
【０００５】
図１は、一例による変換エンジン１０２を含むシステム１００のブロック図である。変換エンジン１０２は、サーバ１０４と、ネットワークパス１３０を提供するためのコントローラ１０６とに関連する場合がある。変換エンジン１０２は、サーバ１０４に関連するセッション１１１に対応するセッション情報１１０を受信する場合がある。変換エンジン１０２は、トポロジパラメタ１２２及びデータパラメタ１２４を含む変換済みセッション情報１２０を提供する場合がある。変換済みセッション情報１２０は、コントローラ１０６により使用可能であり、ネットワークパス１３０に影響を与える。
【０００６】
サーバ１０４は、クラウドストレージ、仮想ネットワーク、データセンター、広く様々なデータ使用及びプロトコルを備えたアプリケーション（例えば、ホテルが取扱うマルチメディア・エンターテイメントのインフラストラクチャ、電話／ボイス・オーバー・インターネット・プロトコル（ＶＯＩＰ）、及び他のデータ）、及びゲーム等のような様々な用途に関連する場合がある。ホテルのインフラストラクチャの例として、各部屋は、ＩＰ電話、Ｓｋｙｐｅ（登録商標）、及びビデオテレビ会議、並びに一般的なウェブブラジング、及びサポートのための種々の可能なプロトコル及びデータ要件を含む他の使用を提供する場合がある。考えられる使用状況としては、例えば、オーディオ／ビデオ会議、ライブストリーミングビデオ・エンターテイメントの鑑賞、及びインターネットのブラウジング、並びに、ホテルのインフラストラクチャによってサポートされる、部屋／オフィスなどの総数にわたって多重化された種々の異なるネットワーク要件の使用が挙げられる。異なるネットワーク使用（例えば、種々のフェイズ及び要件）は、同時に発生する場合があり、ある使用は、他の使用を中断させる場合がある。ボイスチャットは、低レイテンシであることが好ましいが、ストリーミングビデオは、ロストパケット、及びレイテンシ／ジッタ／パケットのロスを許容する高スループットであることが好ましいかもしれない。システム１００により得られる利益は、使用可能なネットワークインフラストラクチャ及び／又はアーキテクチャが、サーバ１０４の種々のセッション１１１に関連する場合がある異なるネットワーク要件を全て同時に満たすようなネットワークパス１３０を提供する能力を有しない場合がある状況において、特に有利な場合がある。
【０００７】
サーバ１０４、及び／又はサーバ１０４と通信するクライアント（図１には示されていない）によるネットワーク使用は、少なくとも１つのセッション１１１に基づく場合がある。セッション１１１は、複数のフェイズに分解される場合がある。ネットワーク要件は、フェイズ及び／又はセッション１１１によって異なる場合があり、例えば、第１のネットワークパスは、第１のフェイズ及び／又はセッション１１１の要求を満たす場合があるが、第２のフェイズ及び／又はセッション１１１の要求を必ずしも満たすとは限らないといった具合である。
【０００８】
コントローラ１０６は、オープンフロー（ＯｐｅｎＦｌｏｗ）・コントローラ（例えば、オープンフロー仕様１．０．０又はその後のリビジョンを参照）であってもよい。例示するシステム１００は、標準規格のオープンフロー・プロトコルに対して何も拡張を必要とすることなく、オープンフォローコントローラと情報をやりとりすることができ、したがって、例示するシステム１００は、種々の異種マルチベンダネットワークと互換性を有する場合がある。サーバ１０４、変換エンジン１０２、及びコントローラ１０６は、別々の装置として図示されているが、同じ装置の中に２以上の装置を配置してもよい。例えば、１つの物理的装置が、プログラマブルソフトウェア及び／又はハードウェアを利用する機能、並びに１以上のプロセッサ（例えば、１以上の中央演算処理装置（ＣＰＵ））を利用する処理モジュールを備えることにより、サーバ１０４、変換エンジン１０２及びコントローラ１０６の機能を備える場合がある。
【０００９】
変換エンジン１０２は、種々の異なるセッション１１１のセッション情報１１０を変換済みセッション情報１２０に変換する。変換済みセッション情報１２０は、トポロジパラメタ１２２、データパラメタ１２４、及び／又は、ネットワークパス１３０を提供するときに考慮すべきネットワーク要件を含む他の情報を含む場合がある。一例として、トポロジパラメタ１２２は、例えばサーバ及びクライアント（複数可）のネットワークアドレスのような、接続されるべきネットワークアドレス・エンドポイントに関連する場合がある。データパラメタ１２４は、レイテンシ、データスループット、ジッタ、ラグなどについての許容閾値のような、要求されるパフォーマンス・メトリック（性能測定基準）である場合がある。変換エンジン１０２（サーバ１０４及び／又はコントローラ１０６）は、ソフトウェアプログラム、ファンクションコール、又は機能を提供するための種々の他の実施形態として設けられる場合がある。変換エンジン１０２は、変換済みセッション情報１２０をコントローラ１０６へ送信する。
【００１０】
コントローラ１０６は、ネットワーク及びそのネットワークのネットワークデバイス（例えば、そのネットワークのルーター、及びスイッチなど）に関連する情報にアクセスすることができ、したがって、コントローラ１０６は、例えばクライアントをサーバ１０４に接続したり、第１のホスト（例えばサーバ１０４）を第２のホストに接続したりするパスのような、種々のネットワークデバイスのためのパスを接続する方法を、変換済みセッション情報１２０に基づいて決定することができる。さらに、変換済みセッション情報１２０は、コントローラ１０６に対し、接続を行うのに適したネットワークパス及び／又は最良のネットワークパスを決定する機会を提供し、例えばネットワークパス１３０の提供（及び／又は、ネットワークパス１３０の解体、又はその他ネットワークパス１３０に影響を与えること）に適したネットワークパス及び／又は最良のネットワークパスを決定する機会を提供する。コントローラ１０６は、種々の技術に基づいてネットワークパス１３０に影響を与える場合がある。例えば、コントローラ１０６は、オープンフロー・コントローラ１０６に基づいて、所与のネットワークデバイスを、コントローラ１０６によりそのネットワークデバイスに送信された種々の規則に基づいて、そのデバイスがネットワークパスの一部を成すようにプログラムする場合がある。したがって、コントローラ１０６は、変換エンジン１０２により提供される変換済みセッション情報１２０に基づいて、種々のネットワークデバイスに関連するデータ平面に影響を与える場合がある。
【００１１】
セッション情報１１０は、時間の経過とともに変化する場合がある。例えば、セッション１１１は複数のフェイズに関連し、セッション情報１１０は各フェイズに関連する場合がある。したがって、フェイズ及び／又はセッション１１１が異なれば、セッション情報１１０も異なる場合があり、異なる情報（例えば、所与のネットワークパス１３０のためのデータ要件）が、変換エンジン１０２に伝達される場合がある。変換エンジン１０２は、セッション情報１１０をコントローラ１０６により使用可能な形に変換及び／又は成形し、それによってコントローラ１０６が、変換済みセッション情報１２０を実施する方法を決定できるようにする（例えば、ネットワークパス１３０の提供、更新、解体、又はその他ネットワークパス１３０に影響を与えることに基づいて）場合がある。セッション情報１１０が変化すると、変換エンジン１０２は、変換済みセッション情報１２０を提供し、コントローラ１０６が、変換済みセッション情報１２０に関連するネットワークパス１３０の実施形態を（必要に応じて）変更できるようにする。セッション情報１１０は、例えばセッション１１１に関連する異なるフェイズ間においてセッション１１１が変化すると、変化する場合があり、それによって、サーバ１０４が変換エンジン１０２を介してコントローラ１０６と通信することを可能にし、コントローラ１０６が、ネットワーク・ユーザビリティーを向上させるための種々の決定を行うことを可能にする場合がある。
【００１２】
それによって変換エンジン１０２は、種々のネットワーク要件をサーバ・アプリケーション要求とは独立して処理すべきものとし、それによってサーバアプリケーションが、ネットワーク効果又は他の妥協（compromises）を補償する必要はなくなる場合がある。変換エンジン１０２は、サーバ１０４による（例えば、サーバ１０４に関連する種々のアプリケーションによる）ネットワークのアプリケーション・プログラミング・インタフェース（ＡＰＩ）としての使用を可能にし、それによって、種々のソフトウェアコンポーネントがコントローラ１０６と容易に通信できるようにする場合がある。システム１００は、規格に基づくものである場合があるので、ソフトウェアコンポーネントが、私有の拡張又は技術を使用する必要は無い。例えば、システム１００は、オープンフロー・コントローラ１０６を使用する場合があり、ネットワーク（ネットワークパス１３０を含む）は、オープンフロー・エージェントと互換性を有し、かつオープンフロー・エージェントによりプログラム可能な種々のネットワークデバイス（ルーター、及びスイッチなど）に基づくものである場合がある。したがって、システム１００（変換エンジン１０２を含む）は、そのような規格に適合する既存のネットワークインフラストラクチャ上に展開される場合がある。これによってアプリケーション開発者は、種々のネットワーク効果を処理するためのそれらのプログラム／アプリケーションに内蔵されたネットワーク補償技術に注力する必要性から開放され、プログラム及びアプリケーションロジックを書くという彼らのコア・コンピタンス（中核技術）に注力することが可能となる。
【００１３】
所与のネットワークパス１３０は、ネットワークの分散的性質に基づく場合がある。スイッチ／ルーター／等のような各ネットワークデバイスは、そのネットワークデバイス及びそのネットワークデバイスによるネットワークトラフィックの処理に関連するデータ平面を実施するために、独自の制御ロジックを実行する場合がある。分散的性質は、エンド・ツー・エンドパスを容易に提供するためのネットワーク全体に対する１つの視点が存在し得るという思想に反する場合がある。したがって、分散ネットワーク及びそれらのプロトコルは、所望のネットワークパス１３０及び変換済みセッション情報１２０（又は、ネットワークパス１３０についての他のネットワーク要件）を考慮して各ネットワークデバイスに合わせて作られた構成情報を提供することによって、利益を得られる場合がある。所与の構成をネットワークデバイスに適用できるか否かに関わらず、各ネットワークデバイスの提供及びテストの必要性は、ネットワーク全体を構成する方法に関する全体的な見通しを提供しないことがあるネットワークの分散的性質の課題をもたらす。変換エンジン１０２を含むシステム１００によれば、各サーバ１０４の各セッションの各フェイズに各ネットワークデバイスを手動で構成する（例えば、コマンド・ライン・インタフェース（ＣＬＩ）を使用してクオリティ・オブ・サービス（ＱｏＳ）要件を構成する）必要性の非実際性を回避することができる。したがって、システム１００によれば、各ネットワークデバイスを手動で構成する必要性という欠点なしに、フェイズ／セッション／サーバ単位で手動で適合するように形成されたネットワークパス１３０の利益が実現される場合がある。したがって、システム１００は、手動構成に関連するスケーリング制限により課される種々の障害を克服する場合がある。例えば、どのクライアントがどのサーバ／セッション／フェイズに関連しているのかを識別及び管理しながら、複数のフェイズを有する複数のセッションを有する複数のサーバを手動で構成することは、圧倒的に複雑な場合があり、したがって、手動ＣＬＩプログラミングを使用してスケーリングを行い、デバイスごとにＱｏＳパラメタを実施することは、事実上不可能な場合がある。システム１００の種々の例は、そのようなスケーリング制限を回避するために、例えば変換ロジック１０２に基づくデータ抽象化を提供する場合があり、それによって、サーバ１０４に関連する各アプリケーション／プログラムを各ネットワークデバイス（スイッチ／ルーター／コントローラ／ノードなど）と「会話（ｔａｌｋ）」する方法に関する特定の情報を用いてプログラムし、及びネットワークデバイスを種々のセッション１１１をサポートするようにプログラムする必要性を回避する場合がある。
【００１４】
他の利点は、アプリケーション、ネットワークデバイス、及びクライアントなどに関する情報が、システム１００のサーバ側におかれることである。サーバは、種々のクライアントとの間でネットワークを介して何の情報を交換する必要があるに関して可視性を有していることから、サーバ１０４は、アプリケーションに関連する情報、及びネットワークから必要とされるものを捕捉するための最良の位置にある場合がある。したがって、システム１００は、サーバ側の情報に対して変更を行うことに基づいて、変更される場合がある（例えば、あるアプリケーションから他のアプリケーションへ）。したがって、システム１００は、変更されたときに、クライアント側を変更することを必要とせず、例えば、各クライアント／ネットワークデバイス／等にパッチを送出することを必要としない。変更は、クライアントに負担を与えることなく行われる場合があり、例えば、クライアントが変更に応答して、全体的な効率を向上させる物事のネットワーク面における種々のメッセージをクライアント／サーバ間で更新し、又は交換する必要性のような負担を与えることなく行われる場合がある。
【００１５】
ゲームの例において、サーバ１０４は、複数のフェイズを含む場合があるゲーム・セッション１１１を有するゲーム・アプリケーションに関連する場合がある。種々のフェイズは、ネットワーク認識サーバ／アプリケーションのようなゲームサーバに知られている場合がある。フェイズは、ネットワーク要件の異なるセットに関連する場合があり、セットアップフェイズ、同期フェイズ、プレイフェイズ、及び／又は移行フェイズを含む場合がある。フェイズは、変換エンジン１０２に伝送される場合があり、変換エンジン１０２は、フェイズを１以上のネットワークパラメタ、及び／又は要件に変換する場合がある。複数のクライアント／ユーザが、ゲームをプレイする目的でセッション１１１に参加する場合があり、セットアップフェイズにおいてクライアントのリストを形成する場合がある。セットアップフェイズにおいて、プレイヤーは、プレイするマップを選び、チームに参加／チームを形成し、及び／又は、武器等のようなゲームオプションを選択する場合がある。セットアップフェイズは、セットアップのための高いスループット要件に関連する場合がある。同期フェイズは、セットアップフェイズの後、かつプレイフェイズの前に、種々のプレイヤー／クライアント及びゲーム・サーバ１０４の間で、ゲーム状態及び種々のゲーム・パラメタを同期させるために行われる場合がある。同期フェイズは、高いデータスループットに関連する場合があり、高いデータスループットにより、ゲームセッション１１１に参加するためにサインアップするクライアントの数は、増加することがある。例えば、全プレイヤーが操作し／プレイすることになるカスタムマップの交換、又は、サーバ１０４からの、種々のプレイヤー／クライアント間で送信される特定チームのプレイヤー／クライアントの選択を考えて欲しい。したがって、同期フェイズにおいて、変換エンジン１０２は、ネットワークパス１３０が、高いデータスループットをサポートする能力を有するものであるべきことの必要性を示すデータパラメタ１２４を含む変換済みセッション情報１２０を提供する場合がある。同期フェイズの変換済みセッション情報１２０は、レイテンシのような他の考慮事項が、そのフェイズにとって最優先ではないことを示す場合がある。プレイフェイズにおいて、ゲーマーは、ゲームをプレイする。同期フェイズとは対照的に、プレイフェイズは、ゲームの最中に互いに情報をやりとりする複数のユーザ／クライアントに関連する場合がある。プレイフェイズでは、データスループットよりも高い所与の優先度が、低レイテンシに与えられる場合があり、それによってユーザは、ジッタ／レイテンシ／ラグのような、ゲームのパフォーマンスに悪影響を与えるであろうネットワーク効果の効果を感じない場合がある。したがって、プレイフェイズに関連するデータパラメタ１２４は、そのようなデータ要件を示す場合がある。ゲームの後、移行エフィズでは、全ての統計情報が共有され、セッションは、継続される場合もあれば、又は、解体される場合もある。移行フェイズは、終了フェイズ、既存のセッションに参加し及び／若しくは既存のセッションを抜けるフェイズ、並びに／又は、用語「移行フェイズ」の中に含まれる他の種々のフェイズを意味する場合がある。移行フェイズにおけるネットワーク要件は、通常のスループット／レイテンシであってもよい。移行は、終了を生じさせる場合もあれば、生じさせない場合もある。ゲームの文脈における移行とは、あるゲームセッションが再びプレイされるべきものであり、そのセッションがゲームのインスタンスにおいて管理されるべきことである場合がある。セッションは、移行フェイズに基づいて終了される場合があり、例えば、少なくとも１人のプレイヤーが抜けて、もはやプレイしないときに、終了される場合がある。そのような移行は、現在のゲームが完了した後に行われる場合がある。移行は、終了の原因となる場合もあれば、ならない場合もある。終了は、以前に提供されたネットワークリソースが不要になることに関連し、それによって、ネットワークパス１３０のために提供されたリソースの放棄が可能となる。
【００１６】
セッション１１１に関連する種々のフェイズ、及び／又はセッション１１１は、種々の考慮事項に基いて、変化する場合がある。イベントは、１つのフェイズ／セッションの終了、及び、異なるフェイズ／セッションの開始のトリガーとなる場合がある。ただし、同じイベントが、所与のフェイズ／セッションの変更のトリガーとして使用される場合もある。したがって、システム１００の種々の例は、種々のイベントの処理に基づいて、異なるフェイズ／セッション１１１及び対応するセッション情報１１０に関連する場合がある。ゲームの例を続けると、８人のプレイヤーがいて、１人のプレイヤーが接続を切断した場合、切断イベントは、既存のセッション／フェイズを変更し、及び／又は終了させ、及び／又は異なるセッション／フェイズを開始するために使用される場合がある。セッション情報１１０は、変換エンジン１０２が、対応する変換済みセッション情報１２０への変換を行うという異なる一組の要求を反映するように変更される場合がある。一例において、サーバ１０４は、残りの７人のプレイヤーについて、新たなフェイズ／セッション１１１に対応する新たなセッション情報１１０を含む新たなフェイズ／セッションを作成する場合がある。サーバ１０４は、既存のゲームセッション１１１を管理するとともに、８人のプレイヤー／クライアントの代わりに７人のプレイヤー／クライアントを反映するように、セッション情報１１０を変更する場合がある。したがって、サーバ１０４は、サーバ側の変化だけでなく、クライアント側の変化にも反応する場合がある。あるイベント（例えば、プレイヤーの離脱）に応答して、所与のフェイズ／セッション１１１は、再評価される場合がある。一例において、システム１００は、フェイズ／セッション、及びそれに関連する種々の状況（例えば、クライアント／プレイヤー及びゲーム／サーバの状態）を定期的に再評価する場合があり、フェイズ／セッション１１１についてのセッション情報１１０の更新に関連することがある任意の変化（クライアント側の変化を含む）をポーリングする場合がある。セッション１１１に関連する移行フェイズは、変化／更新がもっと頻繁に起こりうることを示す場合がある。幾つのクライアント／プレイヤーがセッションに参加し、及び／又はセッションから抜けるかに関係なく、フェイズ／セッション１１１は、再評価の必要性なしに、永続的なものとして処理される場合がある。したがって、例示するシステム１００は、セッションの永続性を処理する方法に関する種々のバリエーションを含む、フェイズ／セッション１１１を処理する多数の異なる方法を含む。フェイズ／セッション１１１は、粒度及び／又は制御の所望のレベルに応じて、グループ単位（例えば、所与のゲーム、サーバ、及び／又はクライアントなどに関連する全てのフェイズ）で処理される場合もあれば、個別の単位で処理される場合もある。セッション１１１は、ネットワーク認識型であってもよく、したがって、変換エンジン１０２を介した通信に基づいて、ネットワークの要求に応じたネットワークパス１３０を提供する場合がある。セッション１１１は、種々のトラフィックフロー（例えば、ゲームフロー）に関連する場合があり、かかるトラフィックフローは、コントローラ１０６、及び、ネットワークパス１３０と協働し、ネットワークパス１３０を編成し／ネットワークパス１３０に影響を与えるその機能にも関連する場合がある。
【００１７】
したがって、変換エンジン１０２は、セッション１１１の要求（例えば、セッション情報１１０として表されるようなもの）を、そのセッションに適したネットワークパス１３０（例えば、セッション１１１の種々のフェイズのための複数の異なるネットワークパス１３０を含む）に影響を与えるために、コントローラ１０６により使用可能な情報に変換する。サーバ１０４、及びそれに関連するアプリケーション／プログラムは、種々のネットワーク効果を処理する必要性から開放される。アプリケーション開発者は、ネットワークのパフォーマンス／容量、又は利用可能なネットワークリソースを処理する方法について心配する必要がなくなる。例えば、変換エンジン１０２は、サーバがネットワークパス１３０に関連する各ノードを構成する必要性なしに、及び／又は、アプリケーションがネットワーク補償メカニズムを使用する必要性なしに、サーバ１０４により使用可能なネットワークリソースの拡張使用を可能にする抽象化の層を、サーバ１０４とコントローラ１０６との間に提供する場合がある。
【００１８】
ゲームの例を再び参照すると、ゲームアプリケーションは、レイテンシ／ジッタのようなネットワーク効果を処理するための種々の内蔵補償メカニズムを含むようにプログラムされる場合がある。例えば、ゲームが過剰なレイテンシに遭遇したとき、プレイヤー／クライアントは、自分の動き、及びゲームとの対話について、ラバー・バンディング現象を体験する場合がある。このようなラバー・バンディング現象は、ゲームアプリケーションにより実施されるレイテンシ等化の一例であり、その結果、各ユーザは、複数のプレイヤー間に様々な大きさのレイテンシがある場合でも、参加できる場合がある（例えば、それによって、レイテンシ処理効果が全プレイヤーに分散される）。そのような補償メカニズムの欠点は、補償のタイプによって、ある補償メカニズムの下では、低レイテンシを有するプレイヤーが有利となるが、他の補償メカニズムの下では、それらのプレイヤーが有利とならならない場合があることである。したがって、例示するシステム１００は、如何なるレイテンシの影響（又は、データパラメタ１２４への他の影響）をも低減するネットワークパス１３０を提供する場合があり、それによって、各クライアントの接続タイプがゲームプレイに不当に影響を与えないようにし、及び、種々のプレイヤー／クライアントが不当に分散されたネットワーク効果に関連するフラストレーションを回避できるようにする。
【００１９】
一例においては、ネットワーク補償メカニズムが、依然として使用される場合があり、例えば、コントローラ１０６が、使用可能（例えば、提供可能）なネットワークパス１３０は、変換済みセッション情報１２０により示されたあらゆるパラメタに適合しないと判断した場合、（例えば、サーバ１０４、及び／又はサーバ１０４と通信するクライアント（図示せず）において）、それらのメカニズムが起動される場合がある。代替例では、たとえ少なくとも１つのネットワークパス１３０が、フェイズ／セッション１１１により要求された全てのパラメタに適合していない場合でも、パフォーマンスを向上させるために、ネットワーク補償メカニズムが使用される場合がある。
【００２０】
例示するシステム１００によれば、種々のネットワークリソースにアクセスすることが可能となり、それらをＡＰＩのアクセスとして（を通して）使用することが可能となる。例えば、サーバ１０４に関連するプログラムは、指定された複数のネットワークデバイス間において第１レベルのデータスループット及び第２レベルのレイテンシを要求するといったように、ネットワーク要件を単純に要求する場合がある。プログラムは、コントローラ１０６がその要求を満たすことができるか否かに関する確認を要求する場合がある。もし要求を満たすことができる場合（例えば、コントローラ１０６が、変換済みセッション情報１２０と一致するように提供され／影響されることができるネットワークパス１３０を識別した場合）、プログラム（例えば、セッション１１１）は、処理を進める。もしコントローラ１０６が、変換済みセッション情報１２０を満たすネットワークパス１３０を提供することができない場合（例えば、ネットワークコンフリクト、又はネットワークデータの混雑／過負荷の場合）、コントローラ１０６は、変換エンジン１０２及び／又はサーバ１０４に知らせる場合があり、それによって、アプリーションが、補償メカニズムを使用するか否か、及び／又は、変換済みセッション情報１２０に関連する全てのパラメタを満たすものでないネットワークパス１３０を使用するか否かを決定できるようにする。したがって、補償メカニズムは、必要に応じて設けられることがある。それによって例示するシステム１００は、サーバ１０４及び／又は変換エンジン１０２に関連するアプリケーションに、ネットワーク認識力を与える場合がある。補償メカニズムが使用される場合、変換エンジン１０２、サーバ１０４、コントローラ１０６、クライアント、又はシステム１００の他の種々の部分の間において、情報はモニタリングされ／交換される場合がある。したがって、システム１００は、アプリケーション／ゲーム設計者に対し、アプリケーション／ゲームをサポートする基礎となるネットワークに注力するのではなく、ゲームについて考えるための自由度を提供する。例示するシステム１００は、ゲーム産業に利益をもたらすことができるだけでなく、種々のネットワーク要求を満たさなければならない他の産業にも利益をもたらすことができる。
【００２１】
サーバ１０４は、セッション情報１１０を変換エンジン１０２に送信することになる。セッション情報１１０は、クライアントリスト及びセッション状態を含む場合がある。ネットワーク認識型アプリケーション／サーバ１０４は、何のプログラムが実行中であり、それらのプログラムに関連する情報をどのようにして伝送するか、及び、どのようにしたらネットワークがそれらのリソース要求を満たすことができるかもしれないかを知ることになる。変換エンジン１０２は、何のネットワークパラメタ／要件が所与の要求に対応するかもしれないかを、セッション／フェイズに基づいて知っている。例えば、変換エンジン１０２は、プレイフェイズが低レイテンシデータパラメタ１２４に対応するであろうことを識別する場合がある。したがって、アプリケーションは、プレイ状態を単純に識別するセッション情報１１０を提供する場合があり、変換エンジン１０２は、変換済みセッション情報１２０を低レイテンシデータパラメタ１２４に対応するコントローラ１０６に渡すことを知っている場合がある。
【００２２】
変換エンジン１０２は、種々の形の変換を提供する場合があり、例えば、所与のセッション情報１１０に対し、サーバ１０４のコンテキスト又は特定のアプリケーションに応じて異なる応答を返す場合がある。例えば、変換エンジン１０２は、第１のアプリケーションについてのプレイフェイズを第１の閾値データパラメタ１２４に変換するとともに、同じプレイフェイズを第２のアプリケーションから第２の閾値データパラメタ１２４に変換する場合がある。各アプリケーションは、変換エンジン１０２により識別されるような異なる設定を有する場合があり、変換エンジン１０２は、各サーバ１０４及び／又はアプリケーション／セッション１１１／状態に適合する変換を行うようにカスタマイズされる場合がある。同様に、変換エンジン１０２は、サーバ１０４と情報をやりとりし、及び／又はサーバ１０４に接続するための種々のクライアントについて特定のカスタマイズを識別し、種々のネットワーククライアント及びさらには他のデバイスに対するカスタマイズされた応答を可能にする場合がある。
【００２３】
変換エンジン１０２は、オープンフロー・コントローラ１０６のようなコントローラ１０６の一部であってもよく、オープンフロー・コントローラ１０６は、コントローラ１０６のロジックの上に置かれる種々のアドオンモジュールを可能にする。変換エンジン１０２は、独立した／スタンドアロンのアプリケーションとして設けられる場合があり、かかるアプリケーションは、特定のＡＰＩを使用して呼び出され、コントローラ１０６により使用可能な特定のメッセージを、コントローラ１０６へ送出（ｐｕｓｈ）する場合がある。変換エンジン１０２は、種々の技術を使用して提供される場合があり、使用される技術は、コントローラ１０６がどのようなメカニズムを備えているかによって変わる場合がある。例えば、変換エンジン１０２は、ソフトウェアマッピング関数、プログラム、及び／又はＡＰＩであってもよい。変換エンジン１０２は、コントローラ１０６と連結されてもよく、独立したプログラムとして設けられてもよく、また、コントローラ１０６のＡＰＩに対するプラグインとして設けられてもよい。変換エンジン１０２は、ソフトウェアマッピング関数として設けられてもよい。システム１００の他の部分（例えば、サーバ１０４、コントローラ１０６）も、同様に設けられ、及び／又は結合される場合がある。
【００２４】
したがって、サーバ１０４及び種々の関連アプリケーションは、ネットワーク上のあらゆるネットワークデバイス／コントローラと会話する方法（例えば、ネットワークパス１３０に沿って会話すること）を知っている必要はない。なぜなら、変換エンジン１０２は、サーバ１０４が、ネットワーク、並びに各特定のコントローラ／ノード／ネットワークデバイスのセットアップに使用されるセッション情報１１０の成形／変換と互換性を有することができる方法を容易にする抽象化のインテリジェント層を備えているからである。変換エンジン１０２は、サーバ１０４により表明された種々の要求を取得し（例えば、ネットワーク認識型アプリケーションによって）、それらをネットワーク要件に変換し、ネットワーク要件をコントローラ１０６が理解できる形でコントローラ１０６へ伝送し、ネットワークパス１３０の提供のために使用する場合がある。変換エンジン１０２は、異なるタイプのサーバ１０４に対処する方法、自分自身を異なるサーバに合わせてカスタマイズし、異なるセッション１１１及び／又はフェイズをコントローラ１０６が理解できるネットワーク要件に変換し、必要なネットワークリソースを取得するために実施する方法を知っている。コントローラ１０６は、ネットワークを知っていて、種々のネットワーククライアント及び／又は所与のデータレートをサポートするサーバ１０４の間にネットワークパス１３０を確立する方法を知っている。コントローラ１０６は、独自の技術（例えば、コントローラ１０６と情報をやりとりする種々のメカニズムを含むオープンソース・ネットワークデバイス／スイッチ／コントローラと互換性を有するオープンフロー規格に基づくもの）を使用して、要求されたネットワークパス１３０を提供する場合がある。
【００２５】
図２は、一例による変換エンジン２０２を含むシステム２００の時系列図である。システム２００は、少なくとも１つのサーバ２０４、コントローラ２０６、ネットワーク２０８、及び／又はクライアント２０９の間における情報交換をさらに含む場合がある。サーバ２０４は、サーバ待機状態２４１に基づいて、セッション情報の受信を待つ場合がある。クライアント２０９は、クライアント情報２４２をサーバ２０４へ送信する場合がある。変換エンジン２０２、及び／又はコントローラ２０６は、待機状態２４３に基づいて、サーバ２０４からの情報の受信を待つ場合がある。
【００２６】
システム２００は、サーバ２０４上の種々のセッションが、あるセッションの異なるフェイズの種々のネットワーク要件を変換エンジン２０２を通してコントローラ２０６に直接渡すことができるようなアーキテクチャ・フレームワークを備える場合がある。変換エンジン２０２は、サーバ２０４とコントローラ２０６との間に抽象化の層を提供する。
【００２７】
一例として、サーバ２０４は、セッションの開始時に、セッション情報を、例えば｛セッションＩＤ、クライアントリスト、セッション状態｝を、変換エンジン２０２に送信することができる。例えば、サーバ通信２４４は、セッション情報の送信を含む場合がある。クライアントリスト（どのクライアントがこのセッションの一部であるかを示すリスト）は、最初に送信される場合があり、このセッションの後の伝送においては、次のように送信から除外される場合がある。変換エンジン２０２は、セッションＩＤのマッピングをクライアントリストに格納する場合がある。したがって、サーバ２０４は、変換エンジン２０２に渡されたセッション情報を知っており、変換エンジン２０２は、所与のネットワークパスに関連する各ネットワークデバイス／クライアントのために、セッション情報を変換する。次に、サーバ２０４は、変換エンジン２０２との間の後続の通信においてセッションＩＤを使用する場合があり、それによって、クライアントリストを後続の通信から除外する場合がある。サーバ２０４は、クライアントリストがそのセッションの第１の時点で変換エンジン２０２に既に送信されたか否かを識別するロジックを含む場合があり、それによって、クライアントリストを変換エンジン２０２に毎回送信する必要なしに、後続の通信におけるセッションＩＤの使用を可能にする場合がある。変換エンジン２０２は、セッションＩＤをクライアントリストに変換し、それを使用して、各クライアントについてのネットワーク・エンドポイント（例えば、クライアント・インターネットプロトコル（ＩＰ）・アドレス）を識別する場合がある。変換エンジン２０２はさらに、セッション状態からネットワーク要件を決定する場合があり、その後、それらのネットワーク要件（例えば、トポロジパラメタ及びデータパラメタ）をコントローラ２０６に渡す場合がある。
【００２８】
したがって、サーバ２０４は、あるセッションに関連するクライアントのリスト及び種々のＩＰアドレスを提供する場合がある。変換エンジン２０２は、提供されたセッション情報をコントローラ２０６により使用可能な情報に変換する場合があり、例えば、少なくとも２つのネットワークアドレス・エンドポイントのグループを含み、ネットワークアドレス・エンドポイントの各対が、クオリティ／データパラメタに関連するトポロジ情報のような情報に変換する場合がある。変換エンジン２０２は、サーバからのＡＰＩコールに応答し、セッション情報を変換する場合があり、変換エンジン２０２は、ＡＰＩ層を使用して、変換されたセッション情報をコントローラ２０６に渡す場合がある。変換エンジン２０２は、サーバ２０４から受信したセッション情報を、コントローラに渡すべきパラメタにマッピングし、それによってマッピングエンジンとして働く。変換エンジン２０２は、ファンクションコールに応答する場合もあれば、ファンクションコールとして動作する場合もある。そのような例として、もしサーバ２０４が変換エンジン２０２を関数として呼び出し、パラメタ（例えば、セッション情報）を変換エンジン２０２に渡す場合、変換エンジン２０２は、コントローラ２０６により使用可能な変換済みセッション情報を返す場合がある。変換エンジンのファンクションコールにより返される値は、コントローラ２０６に対する別のＡＰＩコールに基づいて、コントローラ２０６に渡される場合がある。別の例として、変換エンジン２０２は、ネットワーク・インタフェースとして設けられる場合がある。サーバ２０４からのセッション情報は、１つのネットワークパケットとして束ねられ、ネットワークを介して変換エンジンへ送信される場合があり、変換エンジンは、そのようなパケットを受信する完全なソフトウェアプログラムである場合がある。例示する変換エンジン２０２は、そのパケットを分解し、それをコントローラ２０６のために変換し、変換されたパケットをコントローラ２０６へ送信することができる。したがって、例示する変換エンジン２０２は、情報を受信し、操作する完全に独立したソフトウェアパッケージとして設けられる場合がある。変換エンジン２０２は、純粋なＡＰＩとして設けられる場合もあれば、そのためのソフトウェアコンポーネントを備えたＡＰＩコンポーネントとして設けられる場合もある。種々の例が、異なる形で実施される場合がある。
【００２９】
変換エンジン２０２がクライアントリスト及びＩＰアドレスを受信すると、変換エンジン２０２は、そのグループについてのトポロジパラメタ（エンドポイント・アドレス）及びデータパラメタを提供することができる。そして、コントローラ２０６は、例えば、第１のクライアントからサーバへの一例としてのネットワークパス、第１の閾値のデータレートが必要であることを理解することになる。同様に、コントローラ２０６は、必要に応じて、さらに別のクライアント（複数可）及びサーバ（複数可）についてのパラメタを理解する場合がある。変換エンジン２０２は、複数組の情報をコントローラ２０６に提供する場合があり、それによって、コントローラ２０６は、複雑なネットワークパスを策定するとともに、それらのパスに要求されるネットワークリソース／パフォーマンスに配慮することが可能となる。あるセッションの間、複数のクライアントが単一のサーバ２０４に接続される場合、サーバ２０４は、それぞれ自分のＩＰアドレスを有するクライアントのリストを、サーバ自身のＩＰアドレスとともに提供する場合がある。複数のクライアントが複数のサーバ２０４を介して接続される場合、各サーバ２０４は、そのサーバ２０４で実行されているセッションに接続されたクライアントのリストを、サーバ自身のＩＰアドレスとともに提供する場合がある。
【００３０】
したがって、サーバ２０４は、セッション識別子、クライアントリスト、セッション状態、及び他の情報を含むセッション情報のようなサーバ情報２４４を、変換エンジン２０２に送信する場合がある。変換エンジン２０２は、セッション状態からデータ及び／又はトポロジパラメタへのマッピングのような変換２４５を実施する場合がある。変換エンジン２０２は、クライアントリスト及び他のパラメタのような変換エンジン情報２４６を、コントローラ２０６に渡す場合がある。
【００３１】
コントローラ２０６（例えば、オープンフロー・コントローラ）は、必要なネットワークパスに沿って種々のネットワークデバイス（例えば、ネットワークルーター／スイッチ）に規則｛一致、動作｝をプッシュダウンすることにより、必要なネットワークパスを提供することができる。サーバ２０４、変換エンジン２０２、及びコントローラ２０６（及び他の要素）は、独立したデバイスとして図示されているが、これらは、同じデバイスの中に共同設置されてもよい（例えば、プロセッサにより実行可能なソフトウェアプログラムとして実施されてもよい）。
【００３２】
コントローラ２０６は、あるセッションに関連するクライアントリストにおける各クライアントについてのネットワークノード（複数可）の識別のような、コントローラ活動２４７を実施する場合がある。コントローラ２０６は、あるネットワークノードについての構成パラメタのようなコントローラ情報２４８をネットワーク２０８へ送信する場合がある。例えば、コントローラ情報２４８は、変換エンジン２０２により識別されるようなネットワークパス上の各ネットワークノードへ送信される場合があり、ネットワークパスは、少なくとも１つのネットワーク２０８の少なくとも１つのクライアント２０９及び／又はサーバ２０４に関連している。
【００３３】
図３は、一例による変換エンジン３０２を含むシステム３００のブロック図である。変換エンジン３０２は、サーバ３０４及び／又はコントローラ３０６に関連する場合があり、第１のクライアント３０９ａ、第２のクライアント３０９ｂ、及び／又はサーバ３０４によるネットワーク３０８の使用を管理する。クライアントは、第１のフェイズ３１２ａ（例えば、同期）及び第２のフェイズ３１２ｂ（例えば、プレイ）のような少なくとも１つのフェイズに関連する場合がある。変換エンジン３０２は、トポロジパラメタ３２２及びデータパラメタ３２４に基づいて、サーバ３０４及び／又はコントローラ３０６と情報をやりとりする場合がある。システム３００は、具体的に示されたもの以外に、別のネットワークノード３３２及び／又はネットワークパス３３０をさらに含む場合がある。
【００３４】
コントローラ３０６は、第１のフロー３３４ａ（例えば、高スループット）及び／又は第２のフロー３３４ｂ（例えば、低レイテンシ）のような少なくとも１つのフローに基づいて、ネットワーク３０８と情報をやりとりする場合がある。少なくとも１つのフローが、少なくとも１つのフェイズ３１２及び／又はセッションに関連する場合がある。ネットワーク３０８は、少なくとも１つのネットワークノード３３２、並びに第１のネットワークパス３３０ａ及び第２のネットワークパス３３０ｂのようなネットワークパスを含む場合がある。
【００３５】
示したように、変換エンジン３０２は、第１のフェイズ３１２ａに対応する第１のトポロジパラメタ３２２及びデータパラメタ３２４を提供する場合がある。コントローラ３０６は、変換エンジン３０２により提供された変換済みセッション情報（第１のトポロジパラメタ３２２及びデータパラメタ３２４）に応答し、コントローラ３０６により構成されるような対応するネットワークノードに基づいて、第１のフェイズ３１２ａ（同期）に関連する高スループットを提供するための第１のパス３３０ａを確立する。同様に、変換エンジン３０２は、第２のフェイズ３１２ｂ（プレイ）に対応する低レイテンシの第２のネットワークパス３３０ｂを確立するために、コントローラに対し、第２の変換済みセッション情報（第２のトポロジパラメタ３２２及びデータパラメタ３２４）を提供する場合がある。したがって、フェイズ（同期）において、第１のクライアント３０９ａは、高スループットの利点を有する高スループットパスを使用する場合があり、フェイズ（プレイ）において、第２のクライアント３０９ｂは、低レイテンシの利点を有する低レイテンシのパスを使用する場合がある。複数の異なるクライアントが、所与のセッションの全体を通じて、異なるフェイズ／パスを使用する場合がある。
【００３６】
図４は、一例による変換エンジン４０２を含むシステム４００のブロック図である。変換エンジン４０２は、サーバ４０４及び／又はコントローラ４０６に関連する場合がある。情報は、変換エンジン４０２、サーバ４０４、及び／又はコントローラ４０６からネットワークを介して、第１のクライアント４０９ａ、第２のクライアント４０９ｂ、及び／又は第３のクライアント４０９ｃへ渡される場合がある。ネットワーク通信は、第１のネットワークノード４３２ａ、第２のネットワークノード４３２ｂ、第３のネットワークノード４３２ｃ及び／又は第４のネットワークノード４３２ｄのような少なくとも１つのネットワークノードと、第１のネットワークパス４３０ａ、第２のネットワークパス４３０ｂ及び／又は第３のネットワークパス４３０ｃのような少なくとも１つのネットワークパスとに基づく場合がある。通信は、電話、ビデオ／マルチメディア、及び、ネットワークに関連する他のトラフィックソース／宛先のような他のトラフィック４０５を考慮して行われる場合がある。具体的に示したもの以外に、さらに別のノード／パス、及び他の要素が設けられる場合もある。
【００３７】
エンドポイント間の各パスは、ノード４３２ａ〜４３２ｄのような種々のネットワークデバイスを含む場合がある。一例において、ネットワークノードは、そのネットワークノードを通過するネットワークトラフィックに関して前方判断を行うことが可能なルータのようなネットワークスイッチである。ルーターは、種々のパケットがそのルータにおいて受信された後、それらのパケット（すなわち、ネットワークトラフィック）を送信する方法を知っている。パケットをどこへ送信すべきかに関する判断ロジックは、特定のネットワークノード４３２ａ〜４３２ｄの中にある場合があり、ネットワークノード４３２ａ〜４３２ｄは、オープンフロー・プロトコルのような制御規格と互換性を有する種々のプロトコルを実行する場合がある。ネットワークノードは、パケットを受信し、そのパケットを、コントローラ４０６によってそのネットワークノードにプッシュダウンされた規則に従って送出する場合がある。ネットワークノード単位でパケットをルーティングする方法に関するロジックは、コントローラ４０６（及び／又は、変換エンジン４０２若しくはサーバ４０４）に遠隔的に収容される場合がある。
【００３８】
本アーキテクチャは、データを伝送すると同時に、音声、ビデオ、一般データ、及び他のネットワークトラフィック４０５も伝送することができる。３つのクライアント４０９ａ、４０９ｂ及び４０ｃが、サーバ４０４に接続されるものとして（例えば、ネットワーク上のゲームをプレイするために）図示されている。ネットワークにより伝送される音声、ビデオ、及びデータトラフィック４０５もまた、ネットワークノード４３２ａ〜４３２ｄのうちの少なくとも１つを通過することになる。したがって、種々のネットワークノード４３２ａ〜４３２ｄは、クライアント４０９ａ〜４０９ｃ及びサーバ４０４により共有される接続に悪影響を与えることなく、さらに別のトラフィック４０５により課される負担を処理することができなければならない。
【００３９】
クライアント４０９ａ〜４０９ｃが接続し、セッションが種々のフェイズを通して進行するにしたがって、サーバ４０４とコントローラ４０６は、互いに通信することができ、変換エンジン４０２を介して、ネットワーク要件及び他の情報を渡すことができる。ゲームの例の場合、プレイフェイズにおいて、ゲームサーバ４０４は、クライアント４０９ａ〜４０９ｃのリスト、ゲームサーバＩＤ、及びこのプレイフェイズの最大許容レイテンシ要件を伝送する場合がある。ネットワークトポロジを認識するオープンフロー・コントローラ４０６は、ゲームクライアント４０９ａ〜４０９ｃをゲームサーバ４０４に接続する種々のネットワークデバイス／ノード４３２ａ〜４３２ｄに関するオープンフロー規則をプログラミングすることにより、そのプレイフェイズのためのネットワークパス（例えば、低レイテンシに関連するネットワークパス４３０ｃ）を形成することができる。規則は、オープンフロー・コントローラ４０４により下に送られ、スイッチ／ノード４３２ａ〜４３２ｄに記憶される（例えば、規則は、サーバ側／コントローラ４６０上の制御平面からデータ平面要素／ノード４３２ａ〜４３２ｄに渡される）。コントローラ４０６は、ノード４３２ａ〜４３２ｄの全部より少ない数の制御技術を実施する場合があり、例えば、コントローラ４０６は、１つのノード４３２に基づいてパスを作成する場合がある。
【００４０】
ノード４３２は、各ノード４３２上で実施される一致／動作対のような規則に基づいてプログラムされる場合がある。表１は、例えばノード４３２ａのようなノード１についての例を示している。ノード４３２ａにおいて受信されたパケットは、第１行の一致基準にしたがって、宛先ＩＰアドレスがチェックされる場合がある。宛先ＩＰが一致した場合、とるべき動作は、受信したパケットをノード４３２ａのポート８から送出することである。第２行の一致によれば、あるパケットがノード４３２ａのポート３から内向きに受信された場合、そのパケットは、ノード４３２ａのポート４から外向きに送出される。したがって、規則に基づく一致／動作は、オープンフロー規格が、変換エンジン４０２からの変換済みセッション情報について、コントローラ４０６によりプッシュアウトされるような各規則をどのように定義しているかに基づいて、各スイッチ／ノード４３２の中にプログラムされる場合がある。
【００４１】
【表１】
0005872733.tif 000002
【００４２】
換言すれば、表１における種々の規則は、ノード１（ノード４３２ａ）が、ゲームサーバ４０４のために定義された任意のＩＰトラフィックを受信したときに、そのトラフィックを、オープンフロー・コントローラ４０６により低レイテンシパス４３０ｃとして選択されたポート８を介して、ゲームクライアント４０９ａ〜４０９ｃからゲームサーバ４０４へ送出することを示している。ゲームサーバ４０４を宛先としないトラフィックは、通常パスの使用を継続し、すなわち、表１の第２行に示されている動作に従って、この場合外向きのポート４の使用を継続する。
【００４３】
図４に示した例は、表１にしたがって規則を下に送信する。ゲームサーバ４０４のアドレスを宛先とするトラフィックは全て、変換エンジン４０２により示されるようなデータパラメタ及びトポロジパラメタにしたがって、サーバ４０４、すなわちゲームサーバと通信するパス上にあるものとコントローラ４０６によって識別された特定のポートから出力されるように切り替えられる。他のトラフィックは全て、ノード４３２ａの別のポートから出力されるように切り替えられ、それによって、所望のデータパラメタをサポートすることが分かっている選択されたポートを通して選択されたパスを利用するゲームトラフィックに優先度が与えられる。図示した例は、任意数のクライアント４０９、ノード４３２、サーバー４０４、及び／又は他の要素を含むように拡張されてもよい。
【００４４】
図５は、一例による情報の変換に基づくフロー図５００である。ブロック５１０において、サーバに関連するセッションに対応するセッション情報が受信される。例えば、サーバは、そのサーバに関連するアプリケーションに何が必要とされるかに関する情報を送信する場合がある。ブロック５２０において、セッション情報は、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換される。例えば、この変換は、サーバにより表明された要求を受け取ることができ、それを、接続すべきネットワーク・エンドポイントを表す形（トポロジパラメタ）、及びそれらのエンドポイント間に提供すべきサービスの目標レベル（データパラメタ）に変換する。任意数のエンドポイント／パスをサポートするために、これは、複数回繰り返される場合がある。ブロック５３０において、トポロジパラメタ及びデータパラメタを満たすネットワークパスを提供するために、変換済みセッション情報は、コントローラによる使用に備えて成形される。例えば、情報は、オープンフロー・コントローラと互換性を有する形に成形される場合がある。ブロック５４０において、セッションの移行フェイズに応答して、ネットワークパスは、動的に解体される場合がある。例えば、動的解体は、終了フェイズ（例えば、終了フェイズは、移行フェイズの一種である場合がある）に関連する場合がある。代替例では、他のフェイズ／セッションにおける使用のために、セッションは、永続的なものであってもよく、ネットワークパスは、永続的なものであってもよい。
【００４５】
種々の例は、ハードウェアでも、ソフトウェアでも、両方の組み合わせでも、実施することができる。例示したシステムは、有形の一時的でない媒体（例えば、揮発性メモリ、不揮発性メモリ、及び／又はコンピュータ読取可能媒体）に記憶された種々の命令を実行するためのプロセッサ及びメモリリソースを含むことができる。一時的でないコンピュータ読取可能媒体は、有形であってよく、そこに、本開示による種々の例を実施するためにプロセッサにより実行可能なコンピュータ読取可能命令が記憶される場合がある。
【００４６】
例示したシステム（例えば、計算装置）は、一組のコンピュータ読取可能命令（例えば、ソフトウェア）が記憶された有形の一時的でないコンピュータ読取可能媒体を含み、及び／又は受け取ることができる。本明細書では、プロセッサは、並列処理システムにおけるような１以上のプロセッサを含み得る。メモリは、種々のコンピュータ読取可能命令の実行のためにプロセッサによりアドレス指定可能なメモリを含み得る。コンピュータ読取可能媒体は、ランダム・アクセス・メモリ（ＲＡＭ）、ハードディスク、フロッピー（登録商標）ディスク及び／又はテープメモリのような磁気メモリ、固体記憶装置（ＳＳＤ）、フラッシュメモリ、相変化メモリなどのような、揮発性及び／又は不揮発性のメモリを含み得る。
【００４７】
種々の例によれば、アプリケーション／セッション／フェイズ単位でのネットワークリソースの提供のための中央集中化されたアプローチが可能となる。例示したアーキテクチャのフレームワークによれば、ゲームのようなアプリケーションが、パケットロス、レイテンシ及びジッタのようなネットワーク効果の補償に注力する必要なしに、動作することが可能となる。種々の例によれば、ゲーム設計者は、ゲームをサポートする基礎となるネットワークに注力することなく、ゲームに注力することが可能となる。種々の例は、オープンフロー・プロトコルのような規格に対する特定の拡張を必要とせず、したがって、種々の例は、異種のマルチベンダーネットワークと互換性を有することが保証される。
【図１】
0005872733.tif 000003
【図２】
0005872733.tif 000004
【図３】
0005872733.tif 000005
【図４】
0005872733.tif 000006
【図５】
0005872733.tif 000007