特許第5872733号(P5872733)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヒューレット−パッカード デベロップメント カンパニー エル.ピー.の特許一覧

特許5872733ネットワークパス提供のための変換済みセッション情報
<>
  • 特許5872733-ネットワークパス提供のための変換済みセッション情報 図000003
  • 特許5872733-ネットワークパス提供のための変換済みセッション情報 図000004
  • 特許5872733-ネットワークパス提供のための変換済みセッション情報 図000005
  • 特許5872733-ネットワークパス提供のための変換済みセッション情報 図000006
  • 特許5872733-ネットワークパス提供のための変換済みセッション情報 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5872733
(24)【登録日】2016年1月22日
(45)【発行日】2016年3月1日
(54)【発明の名称】ネットワークパス提供のための変換済みセッション情報
(51)【国際特許分類】
   H04L 12/717 20130101AFI20160216BHJP
   G06F 13/00 20060101ALI20160216BHJP
   H04L 12/70 20130101ALI20160216BHJP
   H04L 12/851 20130101ALI20160216BHJP
【FI】
   H04L12/717
   G06F13/00 353C
   H04L12/70 A
   H04L12/851
【請求項の数】15
【全頁数】19
(21)【出願番号】特願2015-506949(P2015-506949)
(86)(22)【出願日】2012年6月25日
(65)【公表番号】特表2015-518695(P2015-518695A)
(43)【公表日】2015年7月2日
(86)【国際出願番号】US2012043932
(87)【国際公開番号】WO2014003700
(87)【国際公開日】20140103
【審査請求日】2014年10月17日
(73)【特許権者】
【識別番号】511076424
【氏名又は名称】ヒューレット−パッカード デベロップメント カンパニー エル.ピー.
【氏名又は名称原語表記】Hewlett‐Packard Development Company, L.P.
(74)【代理人】
【識別番号】100087642
【弁理士】
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【弁理士】
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100121061
【弁理士】
【氏名又は名称】西山 清春
(74)【代理人】
【識別番号】100195693
【弁理士】
【氏名又は名称】細井 玲
(72)【発明者】
【氏名】サンパス,ランガプラサド
(72)【発明者】
【氏名】サパル,ヴィシャル
【審査官】 安藤 一道
(56)【参考文献】
【文献】 特開2011−082834(JP,A)
【文献】 特開2003−060691(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/717
G06F 13/00
H04L 12/70
H04L 12/851
(57)【特許請求の範囲】
【請求項1】
変換エンジンにおいて、サーバに関連するセッションに対応するセッション情報を受信するステップと、
前記セッション情報を、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換するステップと、
前記トポロジパラメタ及び前記データパラメタを満たすネットワークパスを設定するために、コントローラによる使用に備えて、前記変換済みセッション情報を成形するステップと
成形された変換済みセッション情報を前記コントローラに渡すステップと
を含む方法。
【請求項2】
前記セッションの第1のフェイズは、第1のセッション情報に関連し、変換済み第1のセッション情報は、高スループットデータパラメタを含、前記セッションの第2のフェイズは、第2のセッション情報に関連し、変換済み第2のセッション情報は、低レイテンシデータパラメタを含む、請求項1に記載の方法。
【請求項3】
前記セッションの第1のフェイズは、前記トポロジパラメタを満たす第1のネットワークパスに関連し、前記セッションの第2のフェイズは、前記トポロジパラメタを満たす第2のネットワークパスに関連する、請求項1に記載の方法。
【請求項4】
前記セッションの第1のフェイズは、第1のセッション情報に関連し、変換済み第1のセッション情報は、第1のトポロジパラメタ及び第1のデータパラメタを含み、前記セッションの第2のフェイズは、第2のセッション情報に関連し、変換済み第2のセッション情報は、第2のトポロジパラメタ及び第2のデータパラメタを含む、請求項1に記載の方法。
【請求項5】
前記セッションの移行フェイズに応答し、前記ネットワークパスを動的に解体するステップをさらに含む、請求項1〜の何れか一項に記載の方法。
【請求項6】
前記セッション情報は、セッションID、クライアントリスト、及びセッション状態のうちの少なくとも1つを含む、請求項1〜の何れか一項に記載の方法。
【請求項7】
前記トポロジパラメタは、前記ネットワークパスの第1のエンドポイントに対応する第1のネットワークアドレス、及び、前記ネットワークパスの第2のエンドポイントに対応する第2のネットワークアドレスを含む、請求項1〜の何れか一項に記載の方法。
【請求項8】
前記データパラメタは、レイテンシ、スループット、ジッタ、及びパケットロスのうちの少なくとも1つに関連するデータ要件を含む、請求項1〜の何れか一項に記載の方法。
【請求項9】
変換エンジンであって、
サーバに関連するセッションに対応するセッション情報を受信し、
前記セッション情報を、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換し、
前記変換済みセッション情報にしたがって前記トポロジパラメタ及び前記データパラメタに適合するネットワークパスを設定すべきことをコントローラに命じる変換エンジン。
【請求項10】
前記変換エンジンは、アプリケーション・プログラミング・インタフェース(API)コールに関連する、請求項に記載の変換エンジン。
【請求項11】
前記変換エンジンは、前記セッション情報に含まれるセッションIDを前記セッションに関連するネットワーククライアントのリストを含むクライアントリストにマッピングするためのマッピング情報を含み、前記変換エンジンは、前記マッピング情報に基づいて、前記ネットワーククライアントの各々について、少なくとも1つのネットワークエンドポイントを識別する、請求項又は請求項10に記載の変換エンジン。
【請求項12】
前記コントローラは、オープンフロー・コントローラであり、前記変換済みセッション情報は、前記オープンフロー・コントローラに関連するフローにしたがって、ネットワークパスを動的に設定すべきことを前記オープンフロー・コントローラに命じる、請求項11の何れか一項に記載の変換エンジン。
【請求項13】
前記変換エンジンは、前記ネットワークパスが前記データパラメタに関連するサービスレベルに適合していないことに応答し、代替ネットワークパスを設定すべきことを前記コントローラに命じる、請求項12の何れか一項に記載の変換エンジン。
【請求項14】
前記変換エンジンは、前記ネットワークパスが前記データパラメタに関連するサービスレベルに適合していないことに応答し、補償メカニズムを起動すべきことを前記サーバに命じる、請求項12の何れか一項に記載の変換エンジン。
【請求項15】
一組の命令が記憶された有形の一時的でないコンピュータ読取可能媒体であって、前記一組の命令が、プロセッサにより実行されたときに、
サーバに関連するセッションに対応するセッション情報を受信し、
前記セッション情報を、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換し、
前記トポロジパラメタ及び前記データパラメタを満たすネットワークパスを設定するために、コントローラによる使用に備えて、前記変換済みセッション情報を成形し、
成形された変換済みセッション情報を前記コントローラに渡すための方法を実施する、有形の一時的でないコンピュータ読取可能媒体。
【発明の詳細な説明】
【背景技術】
【0001】
種々のネットワークリソースが、種々の形のトラフィックを処理するために、割り当てられることがある。しかしながら、特定のネットワークトラフィック負荷を処理するためにネットワークを提供することは、ネットワークの提供過多、及び/又は全体な活用不足をもたらすことがある。エンド・ツー・エンドのクオリティ・オブ・サービス(QoS)メカニズムが、構成のために使用されることがあるが、ネットワークパス上のネットワークデバイスは、適当なQoSパラメタを用いた手動構成を必要とする。オープンフロー(OpenFlow)・コントローラは、ネットワーク構成のための1つのアプローチを提供するが、ネットワークの使用を試みるサーバ/アプリケーションから構成命令を受信するように構成されてはいない。したがって、アプリケーション及び/又はサーバは常に、独自の内蔵ネットワーク補償メカニズムを使用して、最適でないネットワーク効果/状況(パケットロス、レイテンシ、ジッタ、及び他のネットワーク効果)に対処する必要があり、特に、ネットワークが音声、データ、及び映像等のような他のトラフィックを運ぶものである場合、対処が必要となる。こうしたネットワーク効果は、ネットワークの使用に悪影響を及ぼすことがあり、アプリケーションのパフォーマンス及びユーザ体験に影響を与えるとともに、アプリケーション開発者に対し、種々のネットワーク補償メカニズムを開発する必要性を与えることにより負担となる。
【図面の簡単な説明】
【0002】
図1】一例による変換エンジンを含むシステムのブロック図である。
図2】一例による変換エンジンを含むシステムの時系列図である。
図3】一例による変換エンジンを含むシステムのブロック図である。
図4】一例による変換エンジンを含むシステムのブロック図である。
図5】一例による情報の変換に基づくフロー図である。
【発明を実施するための形態】
【0003】
サーバに関連するセッションが、そのセッションの種々のフェイズに関連するネットワーク要件を変換エンジン(TE)を通してコントローラに直接渡す場合、ネットワークアーキテクチャフレームワークが提供される場合がある。変換エンジンは、サーバとコントローラとの間に抽象化の層を備え、コントローラに対し、クライアント及び/又はサーバにより使用されるネットワーク及び/又はネットワークパスを、変換エンジンからの入力に基づいて、セッション単位の粒度及び/又はフェイズ単位の粒度で構成すべきことを命じる場合がある。基礎となるネットワークは、特定のサーバ/アプリケーションのためのトラフィック(例えば、ゲームトラフィック)を、音声、映像、データ、eメール、及び他の種々の形のネットワークトラフィックとともに運ぶことがある。一般にネットワークは膨張性であり、ネットワーク全体を一つの特定の専用の用途に提供することは現実的ではなく、したがってネットワークは、パケットロスやレイテンシのような知覚可能なネットワーク効果として現れるような性能ボトルネックとして働く場合がある。本明細書に記載する変換エンジンの種々の例を使用することにより、ユーザは、たとえネットワークが膨張性であり、他のトラフィックソースを含むときであっても、ネットワークを介して種々の要素を接続するための基礎となる当該ネットワークにより運ばれる上等な没入型体験を楽しむことができる。
【0004】
一例として、変換エンジンは、サーバに関連するセッションに対応するセッション情報を受信し、セッション情報を変換済みセッション情報に変換する。変換済みセッション情報は、トポロジパラメタ及びデータパラメタを含む場合がある。変換済みセッション情報は、コントローラに対し、変換済みセッション情報に従って、トポロジパラメタ及びデータパラメタに適合するネットワークパスを提供すべきことを命じる。
【0005】
図1は、一例による変換エンジン102を含むシステム100のブロック図である。変換エンジン102は、サーバ104と、ネットワークパス130を提供するためのコントローラ106とに関連する場合がある。変換エンジン102は、サーバ104に関連するセッション111に対応するセッション情報110を受信する場合がある。変換エンジン102は、トポロジパラメタ122及びデータパラメタ124を含む変換済みセッション情報120を提供する場合がある。変換済みセッション情報120は、コントローラ106により使用可能であり、ネットワークパス130に影響を与える。
【0006】
サーバ104は、クラウドストレージ、仮想ネットワーク、データセンター、広く様々なデータ使用及びプロトコルを備えたアプリケーション(例えば、ホテルが取扱うマルチメディア・エンターテイメントのインフラストラクチャ、電話/ボイス・オーバー・インターネット・プロトコル(VOIP)、及び他のデータ)、及びゲーム等のような様々な用途に関連する場合がある。ホテルのインフラストラクチャの例として、各部屋は、IP電話、Skype(登録商標)、及びビデオテレビ会議、並びに一般的なウェブブラジング、及びサポートのための種々の可能なプロトコル及びデータ要件を含む他の使用を提供する場合がある。考えられる使用状況としては、例えば、オーディオ/ビデオ会議、ライブストリーミングビデオ・エンターテイメントの鑑賞、及びインターネットのブラウジング、並びに、ホテルのインフラストラクチャによってサポートされる、部屋/オフィスなどの総数にわたって多重化された種々の異なるネットワーク要件の使用が挙げられる。異なるネットワーク使用(例えば、種々のフェイズ及び要件)は、同時に発生する場合があり、ある使用は、他の使用を中断させる場合がある。ボイスチャットは、低レイテンシであることが好ましいが、ストリーミングビデオは、ロストパケット、及びレイテンシ/ジッタ/パケットのロスを許容する高スループットであることが好ましいかもしれない。システム100により得られる利益は、使用可能なネットワークインフラストラクチャ及び/又はアーキテクチャが、サーバ104の種々のセッション111に関連する場合がある異なるネットワーク要件を全て同時に満たすようなネットワークパス130を提供する能力を有しない場合がある状況において、特に有利な場合がある。
【0007】
サーバ104、及び/又はサーバ104と通信するクライアント(図1には示されていない)によるネットワーク使用は、少なくとも1つのセッション111に基づく場合がある。セッション111は、複数のフェイズに分解される場合がある。ネットワーク要件は、フェイズ及び/又はセッション111によって異なる場合があり、例えば、第1のネットワークパスは、第1のフェイズ及び/又はセッション111の要求を満たす場合があるが、第2のフェイズ及び/又はセッション111の要求を必ずしも満たすとは限らないといった具合である。
【0008】
コントローラ106は、オープンフロー(OpenFlow)・コントローラ(例えば、オープンフロー仕様1.0.0又はその後のリビジョンを参照)であってもよい。例示するシステム100は、標準規格のオープンフロー・プロトコルに対して何も拡張を必要とすることなく、オープンフォローコントローラと情報をやりとりすることができ、したがって、例示するシステム100は、種々の異種マルチベンダネットワークと互換性を有する場合がある。サーバ104、変換エンジン102、及びコントローラ106は、別々の装置として図示されているが、同じ装置の中に2以上の装置を配置してもよい。例えば、1つの物理的装置が、プログラマブルソフトウェア及び/又はハードウェアを利用する機能、並びに1以上のプロセッサ(例えば、1以上の中央演算処理装置(CPU))を利用する処理モジュールを備えることにより、サーバ104、変換エンジン102及びコントローラ106の機能を備える場合がある。
【0009】
変換エンジン102は、種々の異なるセッション111のセッション情報110を変換済みセッション情報120に変換する。変換済みセッション情報120は、トポロジパラメタ122、データパラメタ124、及び/又は、ネットワークパス130を提供するときに考慮すべきネットワーク要件を含む他の情報を含む場合がある。一例として、トポロジパラメタ122は、例えばサーバ及びクライアント(複数可)のネットワークアドレスのような、接続されるべきネットワークアドレス・エンドポイントに関連する場合がある。データパラメタ124は、レイテンシ、データスループット、ジッタ、ラグなどについての許容閾値のような、要求されるパフォーマンス・メトリック(性能測定基準)である場合がある。変換エンジン102(サーバ104及び/又はコントローラ106)は、ソフトウェアプログラム、ファンクションコール、又は機能を提供するための種々の他の実施形態として設けられる場合がある。変換エンジン102は、変換済みセッション情報120をコントローラ106へ送信する。
【0010】
コントローラ106は、ネットワーク及びそのネットワークのネットワークデバイス(例えば、そのネットワークのルーター、及びスイッチなど)に関連する情報にアクセスすることができ、したがって、コントローラ106は、例えばクライアントをサーバ104に接続したり、第1のホスト(例えばサーバ104)を第2のホストに接続したりするパスのような、種々のネットワークデバイスのためのパスを接続する方法を、変換済みセッション情報120に基づいて決定することができる。さらに、変換済みセッション情報120は、コントローラ106に対し、接続を行うのに適したネットワークパス及び/又は最良のネットワークパスを決定する機会を提供し、例えばネットワークパス130の提供(及び/又は、ネットワークパス130の解体、又はその他ネットワークパス130に影響を与えること)に適したネットワークパス及び/又は最良のネットワークパスを決定する機会を提供する。コントローラ106は、種々の技術に基づいてネットワークパス130に影響を与える場合がある。例えば、コントローラ106は、オープンフロー・コントローラ106に基づいて、所与のネットワークデバイスを、コントローラ106によりそのネットワークデバイスに送信された種々の規則に基づいて、そのデバイスがネットワークパスの一部を成すようにプログラムする場合がある。したがって、コントローラ106は、変換エンジン102により提供される変換済みセッション情報120に基づいて、種々のネットワークデバイスに関連するデータ平面に影響を与える場合がある。
【0011】
セッション情報110は、時間の経過とともに変化する場合がある。例えば、セッション111は複数のフェイズに関連し、セッション情報110は各フェイズに関連する場合がある。したがって、フェイズ及び/又はセッション111が異なれば、セッション情報110も異なる場合があり、異なる情報(例えば、所与のネットワークパス130のためのデータ要件)が、変換エンジン102に伝達される場合がある。変換エンジン102は、セッション情報110をコントローラ106により使用可能な形に変換及び/又は成形し、それによってコントローラ106が、変換済みセッション情報120を実施する方法を決定できるようにする(例えば、ネットワークパス130の提供、更新、解体、又はその他ネットワークパス130に影響を与えることに基づいて)場合がある。セッション情報110が変化すると、変換エンジン102は、変換済みセッション情報120を提供し、コントローラ106が、変換済みセッション情報120に関連するネットワークパス130の実施形態を(必要に応じて)変更できるようにする。セッション情報110は、例えばセッション111に関連する異なるフェイズ間においてセッション111が変化すると、変化する場合があり、それによって、サーバ104が変換エンジン102を介してコントローラ106と通信することを可能にし、コントローラ106が、ネットワーク・ユーザビリティーを向上させるための種々の決定を行うことを可能にする場合がある。
【0012】
それによって変換エンジン102は、種々のネットワーク要件をサーバ・アプリケーション要求とは独立して処理すべきものとし、それによってサーバアプリケーションが、ネットワーク効果又は他の妥協(compromises)を補償する必要はなくなる場合がある。変換エンジン102は、サーバ104による(例えば、サーバ104に関連する種々のアプリケーションによる)ネットワークのアプリケーション・プログラミング・インタフェース(API)としての使用を可能にし、それによって、種々のソフトウェアコンポーネントがコントローラ106と容易に通信できるようにする場合がある。システム100は、規格に基づくものである場合があるので、ソフトウェアコンポーネントが、私有の拡張又は技術を使用する必要は無い。例えば、システム100は、オープンフロー・コントローラ106を使用する場合があり、ネットワーク(ネットワークパス130を含む)は、オープンフロー・エージェントと互換性を有し、かつオープンフロー・エージェントによりプログラム可能な種々のネットワークデバイス(ルーター、及びスイッチなど)に基づくものである場合がある。したがって、システム100(変換エンジン102を含む)は、そのような規格に適合する既存のネットワークインフラストラクチャ上に展開される場合がある。これによってアプリケーション開発者は、種々のネットワーク効果を処理するためのそれらのプログラム/アプリケーションに内蔵されたネットワーク補償技術に注力する必要性から開放され、プログラム及びアプリケーションロジックを書くという彼らのコア・コンピタンス(中核技術)に注力することが可能となる。
【0013】
所与のネットワークパス130は、ネットワークの分散的性質に基づく場合がある。スイッチ/ルーター/等のような各ネットワークデバイスは、そのネットワークデバイス及びそのネットワークデバイスによるネットワークトラフィックの処理に関連するデータ平面を実施するために、独自の制御ロジックを実行する場合がある。分散的性質は、エンド・ツー・エンドパスを容易に提供するためのネットワーク全体に対する1つの視点が存在し得るという思想に反する場合がある。したがって、分散ネットワーク及びそれらのプロトコルは、所望のネットワークパス130及び変換済みセッション情報120(又は、ネットワークパス130についての他のネットワーク要件)を考慮して各ネットワークデバイスに合わせて作られた構成情報を提供することによって、利益を得られる場合がある。所与の構成をネットワークデバイスに適用できるか否かに関わらず、各ネットワークデバイスの提供及びテストの必要性は、ネットワーク全体を構成する方法に関する全体的な見通しを提供しないことがあるネットワークの分散的性質の課題をもたらす。変換エンジン102を含むシステム100によれば、各サーバ104の各セッションの各フェイズに各ネットワークデバイスを手動で構成する(例えば、コマンド・ライン・インタフェース(CLI)を使用してクオリティ・オブ・サービス(QoS)要件を構成する)必要性の非実際性を回避することができる。したがって、システム100によれば、各ネットワークデバイスを手動で構成する必要性という欠点なしに、フェイズ/セッション/サーバ単位で手動で適合するように形成されたネットワークパス130の利益が実現される場合がある。したがって、システム100は、手動構成に関連するスケーリング制限により課される種々の障害を克服する場合がある。例えば、どのクライアントがどのサーバ/セッション/フェイズに関連しているのかを識別及び管理しながら、複数のフェイズを有する複数のセッションを有する複数のサーバを手動で構成することは、圧倒的に複雑な場合があり、したがって、手動CLIプログラミングを使用してスケーリングを行い、デバイスごとにQoSパラメタを実施することは、事実上不可能な場合がある。システム100の種々の例は、そのようなスケーリング制限を回避するために、例えば変換ロジック102に基づくデータ抽象化を提供する場合があり、それによって、サーバ104に関連する各アプリケーション/プログラムを各ネットワークデバイス(スイッチ/ルーター/コントローラ/ノードなど)と「会話(talk)」する方法に関する特定の情報を用いてプログラムし、及びネットワークデバイスを種々のセッション111をサポートするようにプログラムする必要性を回避する場合がある。
【0014】
他の利点は、アプリケーション、ネットワークデバイス、及びクライアントなどに関する情報が、システム100のサーバ側におかれることである。サーバは、種々のクライアントとの間でネットワークを介して何の情報を交換する必要があるに関して可視性を有していることから、サーバ104は、アプリケーションに関連する情報、及びネットワークから必要とされるものを捕捉するための最良の位置にある場合がある。したがって、システム100は、サーバ側の情報に対して変更を行うことに基づいて、変更される場合がある(例えば、あるアプリケーションから他のアプリケーションへ)。したがって、システム100は、変更されたときに、クライアント側を変更することを必要とせず、例えば、各クライアント/ネットワークデバイス/等にパッチを送出することを必要としない。変更は、クライアントに負担を与えることなく行われる場合があり、例えば、クライアントが変更に応答して、全体的な効率を向上させる物事のネットワーク面における種々のメッセージをクライアント/サーバ間で更新し、又は交換する必要性のような負担を与えることなく行われる場合がある。
【0015】
ゲームの例において、サーバ104は、複数のフェイズを含む場合があるゲーム・セッション111を有するゲーム・アプリケーションに関連する場合がある。種々のフェイズは、ネットワーク認識サーバ/アプリケーションのようなゲームサーバに知られている場合がある。フェイズは、ネットワーク要件の異なるセットに関連する場合があり、セットアップフェイズ、同期フェイズ、プレイフェイズ、及び/又は移行フェイズを含む場合がある。フェイズは、変換エンジン102に伝送される場合があり、変換エンジン102は、フェイズを1以上のネットワークパラメタ、及び/又は要件に変換する場合がある。複数のクライアント/ユーザが、ゲームをプレイする目的でセッション111に参加する場合があり、セットアップフェイズにおいてクライアントのリストを形成する場合がある。セットアップフェイズにおいて、プレイヤーは、プレイするマップを選び、チームに参加/チームを形成し、及び/又は、武器等のようなゲームオプションを選択する場合がある。セットアップフェイズは、セットアップのための高いスループット要件に関連する場合がある。同期フェイズは、セットアップフェイズの後、かつプレイフェイズの前に、種々のプレイヤー/クライアント及びゲーム・サーバ104の間で、ゲーム状態及び種々のゲーム・パラメタを同期させるために行われる場合がある。同期フェイズは、高いデータスループットに関連する場合があり、高いデータスループットにより、ゲームセッション111に参加するためにサインアップするクライアントの数は、増加することがある。例えば、全プレイヤーが操作し/プレイすることになるカスタムマップの交換、又は、サーバ104からの、種々のプレイヤー/クライアント間で送信される特定チームのプレイヤー/クライアントの選択を考えて欲しい。したがって、同期フェイズにおいて、変換エンジン102は、ネットワークパス130が、高いデータスループットをサポートする能力を有するものであるべきことの必要性を示すデータパラメタ124を含む変換済みセッション情報120を提供する場合がある。同期フェイズの変換済みセッション情報120は、レイテンシのような他の考慮事項が、そのフェイズにとって最優先ではないことを示す場合がある。プレイフェイズにおいて、ゲーマーは、ゲームをプレイする。同期フェイズとは対照的に、プレイフェイズは、ゲームの最中に互いに情報をやりとりする複数のユーザ/クライアントに関連する場合がある。プレイフェイズでは、データスループットよりも高い所与の優先度が、低レイテンシに与えられる場合があり、それによってユーザは、ジッタ/レイテンシ/ラグのような、ゲームのパフォーマンスに悪影響を与えるであろうネットワーク効果の効果を感じない場合がある。したがって、プレイフェイズに関連するデータパラメタ124は、そのようなデータ要件を示す場合がある。ゲームの後、移行エフィズでは、全ての統計情報が共有され、セッションは、継続される場合もあれば、又は、解体される場合もある。移行フェイズは、終了フェイズ、既存のセッションに参加し及び/若しくは既存のセッションを抜けるフェイズ、並びに/又は、用語「移行フェイズ」の中に含まれる他の種々のフェイズを意味する場合がある。移行フェイズにおけるネットワーク要件は、通常のスループット/レイテンシであってもよい。移行は、終了を生じさせる場合もあれば、生じさせない場合もある。ゲームの文脈における移行とは、あるゲームセッションが再びプレイされるべきものであり、そのセッションがゲームのインスタンスにおいて管理されるべきことである場合がある。セッションは、移行フェイズに基づいて終了される場合があり、例えば、少なくとも1人のプレイヤーが抜けて、もはやプレイしないときに、終了される場合がある。そのような移行は、現在のゲームが完了した後に行われる場合がある。移行は、終了の原因となる場合もあれば、ならない場合もある。終了は、以前に提供されたネットワークリソースが不要になることに関連し、それによって、ネットワークパス130のために提供されたリソースの放棄が可能となる。
【0016】
セッション111に関連する種々のフェイズ、及び/又はセッション111は、種々の考慮事項に基いて、変化する場合がある。イベントは、1つのフェイズ/セッションの終了、及び、異なるフェイズ/セッションの開始のトリガーとなる場合がある。ただし、同じイベントが、所与のフェイズ/セッションの変更のトリガーとして使用される場合もある。したがって、システム100の種々の例は、種々のイベントの処理に基づいて、異なるフェイズ/セッション111及び対応するセッション情報110に関連する場合がある。ゲームの例を続けると、8人のプレイヤーがいて、1人のプレイヤーが接続を切断した場合、切断イベントは、既存のセッション/フェイズを変更し、及び/又は終了させ、及び/又は異なるセッション/フェイズを開始するために使用される場合がある。セッション情報110は、変換エンジン102が、対応する変換済みセッション情報120への変換を行うという異なる一組の要求を反映するように変更される場合がある。一例において、サーバ104は、残りの7人のプレイヤーについて、新たなフェイズ/セッション111に対応する新たなセッション情報110を含む新たなフェイズ/セッションを作成する場合がある。サーバ104は、既存のゲームセッション111を管理するとともに、8人のプレイヤー/クライアントの代わりに7人のプレイヤー/クライアントを反映するように、セッション情報110を変更する場合がある。したがって、サーバ104は、サーバ側の変化だけでなく、クライアント側の変化にも反応する場合がある。あるイベント(例えば、プレイヤーの離脱)に応答して、所与のフェイズ/セッション111は、再評価される場合がある。一例において、システム100は、フェイズ/セッション、及びそれに関連する種々の状況(例えば、クライアント/プレイヤー及びゲーム/サーバの状態)を定期的に再評価する場合があり、フェイズ/セッション111についてのセッション情報110の更新に関連することがある任意の変化(クライアント側の変化を含む)をポーリングする場合がある。セッション111に関連する移行フェイズは、変化/更新がもっと頻繁に起こりうることを示す場合がある。幾つのクライアント/プレイヤーがセッションに参加し、及び/又はセッションから抜けるかに関係なく、フェイズ/セッション111は、再評価の必要性なしに、永続的なものとして処理される場合がある。したがって、例示するシステム100は、セッションの永続性を処理する方法に関する種々のバリエーションを含む、フェイズ/セッション111を処理する多数の異なる方法を含む。フェイズ/セッション111は、粒度及び/又は制御の所望のレベルに応じて、グループ単位(例えば、所与のゲーム、サーバ、及び/又はクライアントなどに関連する全てのフェイズ)で処理される場合もあれば、個別の単位で処理される場合もある。セッション111は、ネットワーク認識型であってもよく、したがって、変換エンジン102を介した通信に基づいて、ネットワークの要求に応じたネットワークパス130を提供する場合がある。セッション111は、種々のトラフィックフロー(例えば、ゲームフロー)に関連する場合があり、かかるトラフィックフローは、コントローラ106、及び、ネットワークパス130と協働し、ネットワークパス130を編成し/ネットワークパス130に影響を与えるその機能にも関連する場合がある。
【0017】
したがって、変換エンジン102は、セッション111の要求(例えば、セッション情報110として表されるようなもの)を、そのセッションに適したネットワークパス130(例えば、セッション111の種々のフェイズのための複数の異なるネットワークパス130を含む)に影響を与えるために、コントローラ106により使用可能な情報に変換する。サーバ104、及びそれに関連するアプリケーション/プログラムは、種々のネットワーク効果を処理する必要性から開放される。アプリケーション開発者は、ネットワークのパフォーマンス/容量、又は利用可能なネットワークリソースを処理する方法について心配する必要がなくなる。例えば、変換エンジン102は、サーバがネットワークパス130に関連する各ノードを構成する必要性なしに、及び/又は、アプリケーションがネットワーク補償メカニズムを使用する必要性なしに、サーバ104により使用可能なネットワークリソースの拡張使用を可能にする抽象化の層を、サーバ104とコントローラ106との間に提供する場合がある。
【0018】
ゲームの例を再び参照すると、ゲームアプリケーションは、レイテンシ/ジッタのようなネットワーク効果を処理するための種々の内蔵補償メカニズムを含むようにプログラムされる場合がある。例えば、ゲームが過剰なレイテンシに遭遇したとき、プレイヤー/クライアントは、自分の動き、及びゲームとの対話について、ラバー・バンディング現象を体験する場合がある。このようなラバー・バンディング現象は、ゲームアプリケーションにより実施されるレイテンシ等化の一例であり、その結果、各ユーザは、複数のプレイヤー間に様々な大きさのレイテンシがある場合でも、参加できる場合がある(例えば、それによって、レイテンシ処理効果が全プレイヤーに分散される)。そのような補償メカニズムの欠点は、補償のタイプによって、ある補償メカニズムの下では、低レイテンシを有するプレイヤーが有利となるが、他の補償メカニズムの下では、それらのプレイヤーが有利とならならない場合があることである。したがって、例示するシステム100は、如何なるレイテンシの影響(又は、データパラメタ124への他の影響)をも低減するネットワークパス130を提供する場合があり、それによって、各クライアントの接続タイプがゲームプレイに不当に影響を与えないようにし、及び、種々のプレイヤー/クライアントが不当に分散されたネットワーク効果に関連するフラストレーションを回避できるようにする。
【0019】
一例においては、ネットワーク補償メカニズムが、依然として使用される場合があり、例えば、コントローラ106が、使用可能(例えば、提供可能)なネットワークパス130は、変換済みセッション情報120により示されたあらゆるパラメタに適合しないと判断した場合、(例えば、サーバ104、及び/又はサーバ104と通信するクライアント(図示せず)において)、それらのメカニズムが起動される場合がある。代替例では、たとえ少なくとも1つのネットワークパス130が、フェイズ/セッション111により要求された全てのパラメタに適合していない場合でも、パフォーマンスを向上させるために、ネットワーク補償メカニズムが使用される場合がある。
【0020】
例示するシステム100によれば、種々のネットワークリソースにアクセスすることが可能となり、それらをAPIのアクセスとして(を通して)使用することが可能となる。例えば、サーバ104に関連するプログラムは、指定された複数のネットワークデバイス間において第1レベルのデータスループット及び第2レベルのレイテンシを要求するといったように、ネットワーク要件を単純に要求する場合がある。プログラムは、コントローラ106がその要求を満たすことができるか否かに関する確認を要求する場合がある。もし要求を満たすことができる場合(例えば、コントローラ106が、変換済みセッション情報120と一致するように提供され/影響されることができるネットワークパス130を識別した場合)、プログラム(例えば、セッション111)は、処理を進める。もしコントローラ106が、変換済みセッション情報120を満たすネットワークパス130を提供することができない場合(例えば、ネットワークコンフリクト、又はネットワークデータの混雑/過負荷の場合)、コントローラ106は、変換エンジン102及び/又はサーバ104に知らせる場合があり、それによって、アプリーションが、補償メカニズムを使用するか否か、及び/又は、変換済みセッション情報120に関連する全てのパラメタを満たすものでないネットワークパス130を使用するか否かを決定できるようにする。したがって、補償メカニズムは、必要に応じて設けられることがある。それによって例示するシステム100は、サーバ104及び/又は変換エンジン102に関連するアプリケーションに、ネットワーク認識力を与える場合がある。補償メカニズムが使用される場合、変換エンジン102、サーバ104、コントローラ106、クライアント、又はシステム100の他の種々の部分の間において、情報はモニタリングされ/交換される場合がある。したがって、システム100は、アプリケーション/ゲーム設計者に対し、アプリケーション/ゲームをサポートする基礎となるネットワークに注力するのではなく、ゲームについて考えるための自由度を提供する。例示するシステム100は、ゲーム産業に利益をもたらすことができるだけでなく、種々のネットワーク要求を満たさなければならない他の産業にも利益をもたらすことができる。
【0021】
サーバ104は、セッション情報110を変換エンジン102に送信することになる。セッション情報110は、クライアントリスト及びセッション状態を含む場合がある。ネットワーク認識型アプリケーション/サーバ104は、何のプログラムが実行中であり、それらのプログラムに関連する情報をどのようにして伝送するか、及び、どのようにしたらネットワークがそれらのリソース要求を満たすことができるかもしれないかを知ることになる。変換エンジン102は、何のネットワークパラメタ/要件が所与の要求に対応するかもしれないかを、セッション/フェイズに基づいて知っている。例えば、変換エンジン102は、プレイフェイズが低レイテンシデータパラメタ124に対応するであろうことを識別する場合がある。したがって、アプリケーションは、プレイ状態を単純に識別するセッション情報110を提供する場合があり、変換エンジン102は、変換済みセッション情報120を低レイテンシデータパラメタ124に対応するコントローラ106に渡すことを知っている場合がある。
【0022】
変換エンジン102は、種々の形の変換を提供する場合があり、例えば、所与のセッション情報110に対し、サーバ104のコンテキスト又は特定のアプリケーションに応じて異なる応答を返す場合がある。例えば、変換エンジン102は、第1のアプリケーションについてのプレイフェイズを第1の閾値データパラメタ124に変換するとともに、同じプレイフェイズを第2のアプリケーションから第2の閾値データパラメタ124に変換する場合がある。各アプリケーションは、変換エンジン102により識別されるような異なる設定を有する場合があり、変換エンジン102は、各サーバ104及び/又はアプリケーション/セッション111/状態に適合する変換を行うようにカスタマイズされる場合がある。同様に、変換エンジン102は、サーバ104と情報をやりとりし、及び/又はサーバ104に接続するための種々のクライアントについて特定のカスタマイズを識別し、種々のネットワーククライアント及びさらには他のデバイスに対するカスタマイズされた応答を可能にする場合がある。
【0023】
変換エンジン102は、オープンフロー・コントローラ106のようなコントローラ106の一部であってもよく、オープンフロー・コントローラ106は、コントローラ106のロジックの上に置かれる種々のアドオンモジュールを可能にする。変換エンジン102は、独立した/スタンドアロンのアプリケーションとして設けられる場合があり、かかるアプリケーションは、特定のAPIを使用して呼び出され、コントローラ106により使用可能な特定のメッセージを、コントローラ106へ送出(push)する場合がある。変換エンジン102は、種々の技術を使用して提供される場合があり、使用される技術は、コントローラ106がどのようなメカニズムを備えているかによって変わる場合がある。例えば、変換エンジン102は、ソフトウェアマッピング関数、プログラム、及び/又はAPIであってもよい。変換エンジン102は、コントローラ106と連結されてもよく、独立したプログラムとして設けられてもよく、また、コントローラ106のAPIに対するプラグインとして設けられてもよい。変換エンジン102は、ソフトウェアマッピング関数として設けられてもよい。システム100の他の部分(例えば、サーバ104、コントローラ106)も、同様に設けられ、及び/又は結合される場合がある。
【0024】
したがって、サーバ104及び種々の関連アプリケーションは、ネットワーク上のあらゆるネットワークデバイス/コントローラと会話する方法(例えば、ネットワークパス130に沿って会話すること)を知っている必要はない。なぜなら、変換エンジン102は、サーバ104が、ネットワーク、並びに各特定のコントローラ/ノード/ネットワークデバイスのセットアップに使用されるセッション情報110の成形/変換と互換性を有することができる方法を容易にする抽象化のインテリジェント層を備えているからである。変換エンジン102は、サーバ104により表明された種々の要求を取得し(例えば、ネットワーク認識型アプリケーションによって)、それらをネットワーク要件に変換し、ネットワーク要件をコントローラ106が理解できる形でコントローラ106へ伝送し、ネットワークパス130の提供のために使用する場合がある。変換エンジン102は、異なるタイプのサーバ104に対処する方法、自分自身を異なるサーバに合わせてカスタマイズし、異なるセッション111及び/又はフェイズをコントローラ106が理解できるネットワーク要件に変換し、必要なネットワークリソースを取得するために実施する方法を知っている。コントローラ106は、ネットワークを知っていて、種々のネットワーククライアント及び/又は所与のデータレートをサポートするサーバ104の間にネットワークパス130を確立する方法を知っている。コントローラ106は、独自の技術(例えば、コントローラ106と情報をやりとりする種々のメカニズムを含むオープンソース・ネットワークデバイス/スイッチ/コントローラと互換性を有するオープンフロー規格に基づくもの)を使用して、要求されたネットワークパス130を提供する場合がある。
【0025】
図2は、一例による変換エンジン202を含むシステム200の時系列図である。システム200は、少なくとも1つのサーバ204、コントローラ206、ネットワーク208、及び/又はクライアント209の間における情報交換をさらに含む場合がある。サーバ204は、サーバ待機状態241に基づいて、セッション情報の受信を待つ場合がある。クライアント209は、クライアント情報242をサーバ204へ送信する場合がある。変換エンジン202、及び/又はコントローラ206は、待機状態243に基づいて、サーバ204からの情報の受信を待つ場合がある。
【0026】
システム200は、サーバ204上の種々のセッションが、あるセッションの異なるフェイズの種々のネットワーク要件を変換エンジン202を通してコントローラ206に直接渡すことができるようなアーキテクチャ・フレームワークを備える場合がある。変換エンジン202は、サーバ204とコントローラ206との間に抽象化の層を提供する。
【0027】
一例として、サーバ204は、セッションの開始時に、セッション情報を、例えば{セッションID、クライアントリスト、セッション状態}を、変換エンジン202に送信することができる。例えば、サーバ通信244は、セッション情報の送信を含む場合がある。クライアントリスト(どのクライアントがこのセッションの一部であるかを示すリスト)は、最初に送信される場合があり、このセッションの後の伝送においては、次のように送信から除外される場合がある。変換エンジン202は、セッションIDのマッピングをクライアントリストに格納する場合がある。したがって、サーバ204は、変換エンジン202に渡されたセッション情報を知っており、変換エンジン202は、所与のネットワークパスに関連する各ネットワークデバイス/クライアントのために、セッション情報を変換する。次に、サーバ204は、変換エンジン202との間の後続の通信においてセッションIDを使用する場合があり、それによって、クライアントリストを後続の通信から除外する場合がある。サーバ204は、クライアントリストがそのセッションの第1の時点で変換エンジン202に既に送信されたか否かを識別するロジックを含む場合があり、それによって、クライアントリストを変換エンジン202に毎回送信する必要なしに、後続の通信におけるセッションIDの使用を可能にする場合がある。変換エンジン202は、セッションIDをクライアントリストに変換し、それを使用して、各クライアントについてのネットワーク・エンドポイント(例えば、クライアント・インターネットプロトコル(IP)・アドレス)を識別する場合がある。変換エンジン202はさらに、セッション状態からネットワーク要件を決定する場合があり、その後、それらのネットワーク要件(例えば、トポロジパラメタ及びデータパラメタ)をコントローラ206に渡す場合がある。
【0028】
したがって、サーバ204は、あるセッションに関連するクライアントのリスト及び種々のIPアドレスを提供する場合がある。変換エンジン202は、提供されたセッション情報をコントローラ206により使用可能な情報に変換する場合があり、例えば、少なくとも2つのネットワークアドレス・エンドポイントのグループを含み、ネットワークアドレス・エンドポイントの各対が、クオリティ/データパラメタに関連するトポロジ情報のような情報に変換する場合がある。変換エンジン202は、サーバからのAPIコールに応答し、セッション情報を変換する場合があり、変換エンジン202は、API層を使用して、変換されたセッション情報をコントローラ206に渡す場合がある。変換エンジン202は、サーバ204から受信したセッション情報を、コントローラに渡すべきパラメタにマッピングし、それによってマッピングエンジンとして働く。変換エンジン202は、ファンクションコールに応答する場合もあれば、ファンクションコールとして動作する場合もある。そのような例として、もしサーバ204が変換エンジン202を関数として呼び出し、パラメタ(例えば、セッション情報)を変換エンジン202に渡す場合、変換エンジン202は、コントローラ206により使用可能な変換済みセッション情報を返す場合がある。変換エンジンのファンクションコールにより返される値は、コントローラ206に対する別のAPIコールに基づいて、コントローラ206に渡される場合がある。別の例として、変換エンジン202は、ネットワーク・インタフェースとして設けられる場合がある。サーバ204からのセッション情報は、1つのネットワークパケットとして束ねられ、ネットワークを介して変換エンジンへ送信される場合があり、変換エンジンは、そのようなパケットを受信する完全なソフトウェアプログラムである場合がある。例示する変換エンジン202は、そのパケットを分解し、それをコントローラ206のために変換し、変換されたパケットをコントローラ206へ送信することができる。したがって、例示する変換エンジン202は、情報を受信し、操作する完全に独立したソフトウェアパッケージとして設けられる場合がある。変換エンジン202は、純粋なAPIとして設けられる場合もあれば、そのためのソフトウェアコンポーネントを備えたAPIコンポーネントとして設けられる場合もある。種々の例が、異なる形で実施される場合がある。
【0029】
変換エンジン202がクライアントリスト及びIPアドレスを受信すると、変換エンジン202は、そのグループについてのトポロジパラメタ(エンドポイント・アドレス)及びデータパラメタを提供することができる。そして、コントローラ206は、例えば、第1のクライアントからサーバへの一例としてのネットワークパス、第1の閾値のデータレートが必要であることを理解することになる。同様に、コントローラ206は、必要に応じて、さらに別のクライアント(複数可)及びサーバ(複数可)についてのパラメタを理解する場合がある。変換エンジン202は、複数組の情報をコントローラ206に提供する場合があり、それによって、コントローラ206は、複雑なネットワークパスを策定するとともに、それらのパスに要求されるネットワークリソース/パフォーマンスに配慮することが可能となる。あるセッションの間、複数のクライアントが単一のサーバ204に接続される場合、サーバ204は、それぞれ自分のIPアドレスを有するクライアントのリストを、サーバ自身のIPアドレスとともに提供する場合がある。複数のクライアントが複数のサーバ204を介して接続される場合、各サーバ204は、そのサーバ204で実行されているセッションに接続されたクライアントのリストを、サーバ自身のIPアドレスとともに提供する場合がある。
【0030】
したがって、サーバ204は、セッション識別子、クライアントリスト、セッション状態、及び他の情報を含むセッション情報のようなサーバ情報244を、変換エンジン202に送信する場合がある。変換エンジン202は、セッション状態からデータ及び/又はトポロジパラメタへのマッピングのような変換245を実施する場合がある。変換エンジン202は、クライアントリスト及び他のパラメタのような変換エンジン情報246を、コントローラ206に渡す場合がある。
【0031】
コントローラ206(例えば、オープンフロー・コントローラ)は、必要なネットワークパスに沿って種々のネットワークデバイス(例えば、ネットワークルーター/スイッチ)に規則{一致、動作}をプッシュダウンすることにより、必要なネットワークパスを提供することができる。サーバ204、変換エンジン202、及びコントローラ206(及び他の要素)は、独立したデバイスとして図示されているが、これらは、同じデバイスの中に共同設置されてもよい(例えば、プロセッサにより実行可能なソフトウェアプログラムとして実施されてもよい)。
【0032】
コントローラ206は、あるセッションに関連するクライアントリストにおける各クライアントについてのネットワークノード(複数可)の識別のような、コントローラ活動247を実施する場合がある。コントローラ206は、あるネットワークノードについての構成パラメタのようなコントローラ情報248をネットワーク208へ送信する場合がある。例えば、コントローラ情報248は、変換エンジン202により識別されるようなネットワークパス上の各ネットワークノードへ送信される場合があり、ネットワークパスは、少なくとも1つのネットワーク208の少なくとも1つのクライアント209及び/又はサーバ204に関連している。
【0033】
図3は、一例による変換エンジン302を含むシステム300のブロック図である。変換エンジン302は、サーバ304及び/又はコントローラ306に関連する場合があり、第1のクライアント309a、第2のクライアント309b、及び/又はサーバ304によるネットワーク308の使用を管理する。クライアントは、第1のフェイズ312a(例えば、同期)及び第2のフェイズ312b(例えば、プレイ)のような少なくとも1つのフェイズに関連する場合がある。変換エンジン302は、トポロジパラメタ322及びデータパラメタ324に基づいて、サーバ304及び/又はコントローラ306と情報をやりとりする場合がある。システム300は、具体的に示されたもの以外に、別のネットワークノード332及び/又はネットワークパス330をさらに含む場合がある。
【0034】
コントローラ306は、第1のフロー334a(例えば、高スループット)及び/又は第2のフロー334b(例えば、低レイテンシ)のような少なくとも1つのフローに基づいて、ネットワーク308と情報をやりとりする場合がある。少なくとも1つのフローが、少なくとも1つのフェイズ312及び/又はセッションに関連する場合がある。ネットワーク308は、少なくとも1つのネットワークノード332、並びに第1のネットワークパス330a及び第2のネットワークパス330bのようなネットワークパスを含む場合がある。
【0035】
示したように、変換エンジン302は、第1のフェイズ312aに対応する第1のトポロジパラメタ322及びデータパラメタ324を提供する場合がある。コントローラ306は、変換エンジン302により提供された変換済みセッション情報(第1のトポロジパラメタ322及びデータパラメタ324)に応答し、コントローラ306により構成されるような対応するネットワークノードに基づいて、第1のフェイズ312a(同期)に関連する高スループットを提供するための第1のパス330aを確立する。同様に、変換エンジン302は、第2のフェイズ312b(プレイ)に対応する低レイテンシの第2のネットワークパス330bを確立するために、コントローラに対し、第2の変換済みセッション情報(第2のトポロジパラメタ322及びデータパラメタ324)を提供する場合がある。したがって、フェイズ(同期)において、第1のクライアント309aは、高スループットの利点を有する高スループットパスを使用する場合があり、フェイズ(プレイ)において、第2のクライアント309bは、低レイテンシの利点を有する低レイテンシのパスを使用する場合がある。複数の異なるクライアントが、所与のセッションの全体を通じて、異なるフェイズ/パスを使用する場合がある。
【0036】
図4は、一例による変換エンジン402を含むシステム400のブロック図である。変換エンジン402は、サーバ404及び/又はコントローラ406に関連する場合がある。情報は、変換エンジン402、サーバ404、及び/又はコントローラ406からネットワークを介して、第1のクライアント409a、第2のクライアント409b、及び/又は第3のクライアント409cへ渡される場合がある。ネットワーク通信は、第1のネットワークノード432a、第2のネットワークノード432b、第3のネットワークノード432c及び/又は第4のネットワークノード432dのような少なくとも1つのネットワークノードと、第1のネットワークパス430a、第2のネットワークパス430b及び/又は第3のネットワークパス430cのような少なくとも1つのネットワークパスとに基づく場合がある。通信は、電話、ビデオ/マルチメディア、及び、ネットワークに関連する他のトラフィックソース/宛先のような他のトラフィック405を考慮して行われる場合がある。具体的に示したもの以外に、さらに別のノード/パス、及び他の要素が設けられる場合もある。
【0037】
エンドポイント間の各パスは、ノード432a〜432dのような種々のネットワークデバイスを含む場合がある。一例において、ネットワークノードは、そのネットワークノードを通過するネットワークトラフィックに関して前方判断を行うことが可能なルータのようなネットワークスイッチである。ルーターは、種々のパケットがそのルータにおいて受信された後、それらのパケット(すなわち、ネットワークトラフィック)を送信する方法を知っている。パケットをどこへ送信すべきかに関する判断ロジックは、特定のネットワークノード432a〜432dの中にある場合があり、ネットワークノード432a〜432dは、オープンフロー・プロトコルのような制御規格と互換性を有する種々のプロトコルを実行する場合がある。ネットワークノードは、パケットを受信し、そのパケットを、コントローラ406によってそのネットワークノードにプッシュダウンされた規則に従って送出する場合がある。ネットワークノード単位でパケットをルーティングする方法に関するロジックは、コントローラ406(及び/又は、変換エンジン402若しくはサーバ404)に遠隔的に収容される場合がある。
【0038】
本アーキテクチャは、データを伝送すると同時に、音声、ビデオ、一般データ、及び他のネットワークトラフィック405も伝送することができる。3つのクライアント409a、409b及び40cが、サーバ404に接続されるものとして(例えば、ネットワーク上のゲームをプレイするために)図示されている。ネットワークにより伝送される音声、ビデオ、及びデータトラフィック405もまた、ネットワークノード432a〜432dのうちの少なくとも1つを通過することになる。したがって、種々のネットワークノード432a〜432dは、クライアント409a〜409c及びサーバ404により共有される接続に悪影響を与えることなく、さらに別のトラフィック405により課される負担を処理することができなければならない。
【0039】
クライアント409a〜409cが接続し、セッションが種々のフェイズを通して進行するにしたがって、サーバ404とコントローラ406は、互いに通信することができ、変換エンジン402を介して、ネットワーク要件及び他の情報を渡すことができる。ゲームの例の場合、プレイフェイズにおいて、ゲームサーバ404は、クライアント409a〜409cのリスト、ゲームサーバID、及びこのプレイフェイズの最大許容レイテンシ要件を伝送する場合がある。ネットワークトポロジを認識するオープンフロー・コントローラ406は、ゲームクライアント409a〜409cをゲームサーバ404に接続する種々のネットワークデバイス/ノード432a〜432dに関するオープンフロー規則をプログラミングすることにより、そのプレイフェイズのためのネットワークパス(例えば、低レイテンシに関連するネットワークパス430c)を形成することができる。規則は、オープンフロー・コントローラ404により下に送られ、スイッチ/ノード432a〜432dに記憶される(例えば、規則は、サーバ側/コントローラ460上の制御平面からデータ平面要素/ノード432a〜432dに渡される)。コントローラ406は、ノード432a〜432dの全部より少ない数の制御技術を実施する場合があり、例えば、コントローラ406は、1つのノード432に基づいてパスを作成する場合がある。
【0040】
ノード432は、各ノード432上で実施される一致/動作対のような規則に基づいてプログラムされる場合がある。表1は、例えばノード432aのようなノード1についての例を示している。ノード432aにおいて受信されたパケットは、第1行の一致基準にしたがって、宛先IPアドレスがチェックされる場合がある。宛先IPが一致した場合、とるべき動作は、受信したパケットをノード432aのポート8から送出することである。第2行の一致によれば、あるパケットがノード432aのポート3から内向きに受信された場合、そのパケットは、ノード432aのポート4から外向きに送出される。したがって、規則に基づく一致/動作は、オープンフロー規格が、変換エンジン402からの変換済みセッション情報について、コントローラ406によりプッシュアウトされるような各規則をどのように定義しているかに基づいて、各スイッチ/ノード432の中にプログラムされる場合がある。
【0041】
【表1】
【0042】
換言すれば、表1における種々の規則は、ノード1(ノード432a)が、ゲームサーバ404のために定義された任意のIPトラフィックを受信したときに、そのトラフィックを、オープンフロー・コントローラ406により低レイテンシパス430cとして選択されたポート8を介して、ゲームクライアント409a〜409cからゲームサーバ404へ送出することを示している。ゲームサーバ404を宛先としないトラフィックは、通常パスの使用を継続し、すなわち、表1の第2行に示されている動作に従って、この場合外向きのポート4の使用を継続する。
【0043】
図4に示した例は、表1にしたがって規則を下に送信する。ゲームサーバ404のアドレスを宛先とするトラフィックは全て、変換エンジン402により示されるようなデータパラメタ及びトポロジパラメタにしたがって、サーバ404、すなわちゲームサーバと通信するパス上にあるものとコントローラ406によって識別された特定のポートから出力されるように切り替えられる。他のトラフィックは全て、ノード432aの別のポートから出力されるように切り替えられ、それによって、所望のデータパラメタをサポートすることが分かっている選択されたポートを通して選択されたパスを利用するゲームトラフィックに優先度が与えられる。図示した例は、任意数のクライアント409、ノード432、サーバー404、及び/又は他の要素を含むように拡張されてもよい。
【0044】
図5は、一例による情報の変換に基づくフロー図500である。ブロック510において、サーバに関連するセッションに対応するセッション情報が受信される。例えば、サーバは、そのサーバに関連するアプリケーションに何が必要とされるかに関する情報を送信する場合がある。ブロック520において、セッション情報は、トポロジパラメタ及びデータパラメタを含む変換済みセッション情報に変換される。例えば、この変換は、サーバにより表明された要求を受け取ることができ、それを、接続すべきネットワーク・エンドポイントを表す形(トポロジパラメタ)、及びそれらのエンドポイント間に提供すべきサービスの目標レベル(データパラメタ)に変換する。任意数のエンドポイント/パスをサポートするために、これは、複数回繰り返される場合がある。ブロック530において、トポロジパラメタ及びデータパラメタを満たすネットワークパスを提供するために、変換済みセッション情報は、コントローラによる使用に備えて成形される。例えば、情報は、オープンフロー・コントローラと互換性を有する形に成形される場合がある。ブロック540において、セッションの移行フェイズに応答して、ネットワークパスは、動的に解体される場合がある。例えば、動的解体は、終了フェイズ(例えば、終了フェイズは、移行フェイズの一種である場合がある)に関連する場合がある。代替例では、他のフェイズ/セッションにおける使用のために、セッションは、永続的なものであってもよく、ネットワークパスは、永続的なものであってもよい。
【0045】
種々の例は、ハードウェアでも、ソフトウェアでも、両方の組み合わせでも、実施することができる。例示したシステムは、有形の一時的でない媒体(例えば、揮発性メモリ、不揮発性メモリ、及び/又はコンピュータ読取可能媒体)に記憶された種々の命令を実行するためのプロセッサ及びメモリリソースを含むことができる。一時的でないコンピュータ読取可能媒体は、有形であってよく、そこに、本開示による種々の例を実施するためにプロセッサにより実行可能なコンピュータ読取可能命令が記憶される場合がある。
【0046】
例示したシステム(例えば、計算装置)は、一組のコンピュータ読取可能命令(例えば、ソフトウェア)が記憶された有形の一時的でないコンピュータ読取可能媒体を含み、及び/又は受け取ることができる。本明細書では、プロセッサは、並列処理システムにおけるような1以上のプロセッサを含み得る。メモリは、種々のコンピュータ読取可能命令の実行のためにプロセッサによりアドレス指定可能なメモリを含み得る。コンピュータ読取可能媒体は、ランダム・アクセス・メモリ(RAM)、ハードディスク、フロッピー(登録商標)ディスク及び/又はテープメモリのような磁気メモリ、固体記憶装置(SSD)、フラッシュメモリ、相変化メモリなどのような、揮発性及び/又は不揮発性のメモリを含み得る。
【0047】
種々の例によれば、アプリケーション/セッション/フェイズ単位でのネットワークリソースの提供のための中央集中化されたアプローチが可能となる。例示したアーキテクチャのフレームワークによれば、ゲームのようなアプリケーションが、パケットロス、レイテンシ及びジッタのようなネットワーク効果の補償に注力する必要なしに、動作することが可能となる。種々の例によれば、ゲーム設計者は、ゲームをサポートする基礎となるネットワークに注力することなく、ゲームに注力することが可能となる。種々の例は、オープンフロー・プロトコルのような規格に対する特定の拡張を必要とせず、したがって、種々の例は、異種のマルチベンダーネットワークと互換性を有することが保証される。
図1
図2
図3
図4
図5