(57)【特許請求の範囲】
【請求項１】
コンピュータネットワークにおける第一のエンドポイントと第二のエンドポイントとの間でデータ送信を透過的に最適化するコンピュータにより実現される方法であって、
前記第一及び第二のエンドポイントは、前記第一のエンドポイントと前記第二のエンドポイントとの間で直接に確立されたデータセッションを有し、前記データセッションは、前記セッションを通して同じやり方でそれぞれのエンドポイントにより少なくとも自身に対して識別され、
前記方法は、
ネットワーク最適化サービスを使用して、前記セッションにおいて透過的に前記第一のエンドポイントと前記第二のエンドポイントとの間でアプリケーションレベルデータを中継する段階と、
前記第一のエンドポイントと前記第二のエンドポイントとの間のデータ通信を最適化するため、前記ネットワーク最適化サービスを使用して前記第二のエンドポイントから前記第一のエンドポイントに送信された前記アプリケーションレベルデータの少なくとも一部を透過的に変更又は記憶する段階と、を含み、
前記アプリケーションレベルデータの少なくとも一部を透過的に変更する段階は、前記アプリケーションレベルデータを変更すること、前記アプリケーションレベルデータを置き換えること、又は、前記第一のエンドポイントが前記第二のエンドポイントにより送出されたアプリケーションレベルデータとは異なるアプリケーションレベルデータを受信するように更なるアプリケーションレベルデータを挿入することを含む、
ことを特徴とする方法。
【請求項２】
前記セッションは、TCP又はUDPセッションを含む、
請求項１記載の方法。
【請求項３】
前記セッションは、前記第一のエンドポイントのIPアドレス及びトランスポートポート、前記第二のエンドポイントのIPアドレス及びトランスポートポート、使用されるトランスポートプロトコルを含む識別子により識別され、
前記識別子は、前記セッションの存続期間を通して変化しない、
請求項１記載の方法。
【請求項４】
前記最適化サービス又は前記最適化サービスと通信するリダイレクトサービスは、前記第一のエンドポイントと前記第二のエンドポイントとの間のデータ経路にある、
請求項１記載の方法。
【請求項５】
前記アプリケーションレベルデータを中継する段階は、前記第一のエンドポイントに面する第一の透過的なエンドポイントを形成する段階を含み、
前記第一の透過的なエンドポイントは、前記第一のエンドポイントが前記第一の透過的なエンドポイントと通信するように、前記第一のエンドポイントにとって前記第二のエンドポイントとして見える、
請求項１記載の方法。
【請求項６】
前記アプリケーションレベルデータを中継する段階は、前記第二のエンドポイントに面する第二の透過的なエンドポイントを形成する段階を含み、
前記第二の透過的なエンドポイントは、前記第二のエンドポイントが前記第二の透過的なエンドポイントと通信するように、前記第二のエンドポイントにとって前記第一のエンドポイントとして見える、
請求項５記載の方法。
【請求項７】
前記アプリケーションレベルデータを中継する段階は、個別の透過的なエンドポイントを形成することなしに行われ、代わりに、前記エンドポイントのトランスポート状態を追跡し、パケット損失の場合にデータを送出しているエンドポイントにデータを再送出させ、前記第二のエンドポイントに送出されように前記再送出されたデータを変更することで行われる、
請求項１記載の方法。
【請求項８】
前記アプリケーションレベルデータを中継する段階は、リダイレクト装置を通して前記第一のエンドポイントと前記第二のエンドポイントとの間で通信されるデータを受信する段階を含み、
前記アプリケーションレベルデータを中継する段階は、前記第一のエンドポイントと前記第二のエンドポイントとの間のセッションにおけるデータフレームの一部のみを中継する段階を含む、
請求項１記載の方法。
【請求項９】
前記アプリケーションレベルデータを中継する段階は、どのようなデータが送出されてそれぞれのエンドポイントにより受信されたか、トランスポートレベルの属性、リンクレベルの属性、又は前記セッションのネットワークレベルの属性を追跡することを含めて、前記セッションの状態を連続的に追跡して記憶する段階を含む、
請求項１記載の方法。
【請求項１０】
前記追跡する段階は、複数のトンネリングの層を監視することを含む、
請求項９記載の方法。
【請求項１１】
前記透過的に変更する段階は、前記第二のエンドポイントに向けられた前記第一のエンドポイントからのデータ問合せ、及び／又は前記第二のエンドポイントから受信された前記データ問合せに対するデータ応答を分析する段階、前記データ問合せ及び前記データ応答を前に記憶されたデータ応答と照合する段階、前記第二のエンドポイントからの前記データ応答の中継を阻止する間、前記第一のエンドポイントに前記前に記憶されたデータ応答を伝達する段階を含む、
請求項１記載の方法。
【請求項１２】
前記第二のエンドポイントに前記セッションを終了させるか又は前記データ応答の伝達を引き延ばさせる段階を更に含む、
請求項１１記載の方法。
【請求項１３】
前記前に記憶されたデータ応答を伝達する段階は、前記第二のエンドポイントのIPアドレス及びポートアドレス、並びに前記第一のエンドポイントと前記第二のエンドポイントとの間の前記セッションの継続として前記セッションのセッション状態を利用する段階を含む、
請求項１１記載の方法。
【請求項１４】
前記照合する段階は、時間情報、順序情報、頻度情報、クライアント情報及びID情報からなるグループから選択された少なくとも１つの変数に基づく、
請求項１１記載の方法。
【請求項１５】
前記透過的に変更する段階は、
前記第二のエンドポイントに向けられた前記第一のエンドポイントから第一のデータ問合せを分析する段階と、
前記第一のデータ問合せを前に記憶されたデータ応答と照合する段階と、
個別の透過的なエンドポイントを通して前記第一のエンドポイントに前記前に記憶されたデータ応答を伝達する段階と、
前記第二のエンドポイントに向けられた前記第一のエンドポイントからの第二のデータ問合せを受信する段階と、
前記第二のデータ問合せに応答するデータ応答が前記最適化サービスで記憶されていないかを判定する段階と、
前記第二のデータ問合せを前記第二のエンドポイントに中継する段階と、
前記第二のエンドポイントからの前記第二の問合せに対応する前記データ応答を受信する段階と、
前記第一のエンドポイントと前記第二のエンドポイントとの間の前記セッションの継続として見えるように、前記データ応答のトランスポートパラメータを変更する間、個別の透過的なエンドポイントを使用することなしに、前記第二のエンドポイントから前記第一のエンドポイントに前記データ応答を中継する段階と、
請求項１記載の方法。
【請求項１６】
前記アプリケーションレベルデータを透過的に変更する段階は、異なるフォーマットでテクスチャデータをレンダリングすること、エンドポイントの装置機能にデータを適合させること、映像品質を変えること、又は、オーディオ及び／又はビデオデータを異なるフォーマットにトランスコードすることを含む、
請求項１記載の方法。
【請求項１７】
前記透過的に変更する段階は、前記セッションの属性に影響を及ぼすため、一方のエンドポイントから別のエンドポイントにデータ問合せ又はデータ応答のパラメータを変更する段階を含む、
請求項１記載の方法。
【請求項１８】
前記アプリケーションレベルデータを中継する段階は、前記第一のエンドポイントに面する第一の透過的なエンドポイントを形成する段階を含み、
前記第一の透過的なエンドポイントは、前記第一のエンドポイントが前記第一の透過的なエンドポイントと通信するように、前記第一のエンドポイントにとって前記第二のエンドポイントとして見える、
請求項１７記載の方法。
【請求項１９】
前記アプリケーションレベルデータを中継する段階は、個別の透過的なエンドポイントを形成することなしに実行され、代わりに、前記エンドポイントのトランスポート状態を追跡し、データを送出しているエンドポイントにパケット損失の場合にデータを再送出させ、前記第二のエンドポイントに送出されるように前記再送出されたデータを変更することで行われる、
請求項１７記載の方法。
【請求項２０】
前記透過的に変更する段階は、前記セッションにおけるデータ問合せのキャッシュ可能性が改善されるように、その後のデータ問合せ又はデータ応答の属性に影響を及ぼすため、一方のエンドポイントから別のエンドポイントにデータ問合せ又はデータ応答のパラメータを変更する段階を含む、
請求項１記載の方法。
【請求項２１】
前記透過的に変更する段階は、データ応答のその後の変更のために前に記憶されたデータ応答を利用することを含む、
請求項１記載の方法。
【請求項２２】
前記透過的に変更する段階は、エンドポイントがデータ可用性に関する情報をやり取りする場合、前記最適化サービスによるキャッシュヒット率を改善するため、又は前記最適化サービスで現在記憶されていないデータアイテムをエンドポイントに転送させるため、エンドポイントにより報告されたデータ可用性の応答を変更する、
請求項１記載の方法。
【請求項２３】
エンドポイントにデータキャッシングについて必要とされるデータ応答を伝達させる新たな要求を導入する段階をさらに含む、
請求項１記載の方法。
【請求項２４】
コンピュータネットワークにおいて第一のエンドポイントと第二のエンドポイントとの間のデータ送信を透過的に最適化する最適化サービスであって、
前記第一及び第二のエンドポイントは、前記第一のエンドポイントと前記第二のエンドポイントとの間に直接的に確立したデータセッションを有し、前記データセッションは、前記セッションを通して同じやり方でそれぞれのエンドポイントにより少なくとも自身に対して識別され、
前記最適化サービスは、
ネットワーク最適化サービスを使用して前記セッションにおいて透過的に前記第一のエンドポイントと前記第二のエンドポイントとの間でアプリケーションレベルデータを中継し、
前記第一のエンドポイントと前記第二のエンドポイントとの間のデータ通信を最適化するため、前記ネットワーク最適化サービスを使用して前記第二のエンドポイントから前記第一のエンドポイントに送信されるアプリケーションレベルデータの少なくとも１部を透過的に変更又は記憶し、
前記アプリケーションレベルデータの変更は、前記アプリケーションレベルデータを変えること、前記アプリケーションレベルデータを置き換えること、又は、前記第一のエンドポイントが前記第二のエンドポイントにより送出されたアプリケーションレベルデータとは異なるアプリケーションレベルデータを受信するように更なるアプリケーションレベルデータを挿入することを含む、
ことを特徴とする最適化サービス。
【請求項２５】
前記最適化サービスは、IPベースのネットワーク上のネットワークノード間のデータの中継において含まれる装置において実現される、
請求項２４記載の最適化サービス。
【請求項２６】
前記最適化サービスは、エンドポイントのうちの１つがあるネットワークノードで動作する、
請求項２４記載の最適化サービス。
【請求項２７】
前記最適化サービスは、直列に動作している複数の最適化サービスのうちの１つを含む、
請求項２４記載の最適化サービス。
【請求項２８】
前記最適化サービスは、並列に動作している複数の最適化サービスのうちの１つを含む、
請求項２４記載の最適化サービス。
【請求項２９】
前記最適化サービスは、直列及び／又は並列で動作している複数のインスタンスを含み、
前記最適化サービスのそれぞれのインスタンスは、異なるデータ変更及び記憶処理及び／又は同じデータ変更及び記憶処理を行う、
請求項２４記載の最適化サービス。
【請求項３０】
前記最適化サービスは、直列及び／又は並列で動作している複数のインスタンスを含み、
前記最適化サービスのそれぞれのインスタンスは、互いに強調して、異なるデータ変更及び記憶処理を行う、
請求項２４記載の最適化サービス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、ワイヤレスネットワーク等のようなコンピュータネットワークによるデータの送信に関する。
【０００２】
本出願は、“Methods  And  Systems  For  Transmission  Of  Data  Over  Computer  Networks”と題された2010年12月30日に提出された米国特許仮出願第61/428,527号の優先権を主張するものであり、この米国特許仮出願の内容は、引用によりその完全な形で本明細書に盛り込まれる。
【背景技術】
【０００３】
企業向けブロードバンドネットワーク及び消費者向けブロードバンドネットワークの両者は、過去３〜５年の間にトラフィックボリュームについて有意且つ絶え間のない増加をしている。トラフィックの増加は、高速のエンドユーザの接続性のオプションの導入、様々な帯域幅集約型の応用の採用及び様々なインターネットに接続される家電製品の導入により駆動される。
【０００４】
ブロードバンドの成長により引き起こされる、ネットワークの混雑、アプリケーションのパフォーマンスの低下及びそれらのネットワークを絶え間なくアップグレードする必要に応じるため、ブロードバンドネットワークオペレータは、それらのネットワークコストを制御し、ネットワークスケールの増加を含み、インターネットアプリケーションのパフォーマンス及びセキュリティを改善すること、オペレータにとっての新たな収入源を形成することを狙いとして、様々なネットワークの最適化のソリューション及びサービスを導入している。
【０００５】
係るソリューションは、とりわけ、コンテンツキャッシング、ビデオトランスコーディング及びトランスレーティング、コンテンツアダプテーション、コンテンツフィルタリング、侵入検知及び防止を含む。
【０００６】
全てのこれらのソリューションのクラスは、幾つかの共通の配備の要件を共有する。これらのソリューションのクラスは、インターネットアプリケーションが変化することなしに動作するように、トランスペアレントなやり方で配備されるべきである。
【０００７】
また、幾つかのネットワークの最適化のソリューションにとって、インターネットコンテンツのフロー及び／又はコンテンツペイロード自身を変更することは一般的である。
【０００８】
さらに、ネットワーク最適化のソリューションは、10Gbps，40Gbps及び100Gbpsスケールで頻繁に動作する現代のブロードバンドネットワークのスケール要件に対処するべきである。
【０００９】
ネットワークに基づく最適化の共通のソリューションのアーキテクチャは、データ経路に存在し、トラフィックをネットワーク最適化プラットフォームに向け直す（例えばルーティング、スイッチング又は専用のDPI機器といった）ネットワークエレメントと共に配置されるネットワーク最適化プラットフォームを含む。
【００１０】
ネットワークエレメントは、ネットワークトラフィックの選択的な向け直しを典型的に採用し、使用されるネットワーク最適化のサービスにトラフィックフローのタイプを整合させる。
【００１１】
ネットワークの最適化サービスは、アプリケーションプロキシアーキテクチャを一般に使用する。コネクションは、さもなければ（例えばインターネットブラウザ及びウェブブラウザといった）２つのエンドポイント‘A’と‘B’との間で確立され、プロキシ‘P’により終端され、２つの個別のトランスポートセッション（TCP又はUDP）は、一方でAとPとの間で形成され、他方でPとBとの間で形成される。コネクションのセットアップに続いて、プロキシPは、アプリケーションレベルで２つのセッション間でデータを中継する。
【００１２】
プロキシアーキテクチャは、ネットワーク間を流れる全てのセッションについてトランスポート（TCP又はUDP）スタックを維持し、アプリケーションレベルで全てのデータを中継するためにデータを複製し、データフレームからアプリケーションバッファへの往復での変換を実行する必要のため、著しいパフォーマンスのペナルティを有する。
【００１３】
これらの制限の結果として、プロキシアーキテクチャは、ネットワークの最適化アプリケーションのスループットを標準的なインテルベースのサーバ当たり1〜2Gbpsに制限し、同時にサポートされるフローの数を数千に制限する。パフォーマンスの制限は、ネットワークの最適化のソリューションが経済的なやり方で10/40/100Gbpsネットワークスケールにスケーリングするのを効果的に阻止する。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
従って、アプリケーションプロキシアーキテクチャの先のボトルネックを除去するネットワークの最適化のプラットフォームについて代替的なアーキテクチャが必要とされる。
【課題を解決するための手段】
【００１５】
１以上の実施の形態によれば、コンピュータネットワークにおける第一のエンドポイントと第二のエンドポイントとの間でデータ送信をトランスペアレントに最適化する、コンピュータにより実現される方法が提供される。エンドポイントは、それら間のデータセッションを直接に確立する。データセッションは、セッションを通して同じやり方でそれぞれのエンドポイントにより少なくとも自身に対して識別される。本方法は、ネットワーク最適化サービスを使用してセッションにおいてトランスペアレントにエンドポイント間でデータを中継する段階、エンドポイント間のデータ通信を最適化するため、ネットワーク最適化サービスを使用して第二のエンドポイントから第一のエンドポイントに送信されるデータの少なくとも幾つかをトランスペアレントに変更又は記憶する段階を含み、データの少なくとも幾つかをトランスペアレントに変更する段階は、データを変化させること、データを置き換えること、又は第一のエンドポイントが第二のエンドポイントにより送出されたデータとは異なるデータを受信するように更なるデータを挿入することを含む。
【００１６】
１以上の更なる実施の形態によれば、最適サービスは、コンピュータネットワークにおける第一のエンドポイントと第二のエンドポイントとの間のデータ送信をトランスペアレントに最適化するために提供される。エンドポイントは、それら間でダイレクトに確立されたデータセッションを有する。データセッションは、セッションを通して同じやり方でそれぞれのエンドポイントにより少なくとも自身に対して識別される。最適化サービスは、ネットワーク最適化サービスを使用してセッションにおいてトランスペアレントにエンドポイント間でデータを中継し、エンドポイント間のデータ通信を最適化するため、ネットワーク最適化サービスを使用して第二のエンドポイントから第一のエンドポイントに送信されたデータの少なくとも幾つかをトランスペアレントに変更又は記憶し、データの変更は、データを変化させること、データを置き換えること、又は第一のエンドポイントは、第二のエンドポイントにより送出されたデータとは異なるデータを受信するように更なるデータを挿入する。
【００１７】
本発明の様々な実施の形態は、以下の詳細な説明において提供される。実現されるように、本発明は、他の実施の形態及び異なる実施の形態が可能であり、その幾つかの詳細は、本発明から逸脱することなしに、様々な観点で変更が可能である。従って、図面及び説明は、特許請求の範囲で示される本出願の範囲により、本来例示するものとして見なされ、限定的な意味で解釈されるものではない。
【図面の簡単な説明】
【００１８】
【図１】１以上の実施の形態に係るエンドポイント間のセットの形成を例示するフローダイアグラムである。
【図２Ａ】１以上の実施の形態に係る、最適化サービスの配置を例示する簡略化された図である。
【図２Ｂ】１以上の実施の形態に係る、最適化サービスの配置を例示する簡略化された図である。
【図３】１以上の実施の形態に係るトンネルで動作する最適化サービスの配置を例示する簡略化された図である。
【図４】１以上の実施の形態に係るレスポンスキャッシングを例示するフローダイアグラムである。
【図５】１以上の実施の形態に係るデータ変更を例示するフローダイアグラムである。
【図６】１以上の実施の形態に係る新たな要求の導入を例示するフローダイアグラムである。
【図７】１以上の実施の形態に係る例示的なネットワークアーキテクチャを例示する簡略化された図である。  類似又は同一の参照符号は、共通又は類似のエレメントを識別するために使用される。
【発明を実施するための形態】
【００１９】
本明細書で開示された様々な実施の形態は、エンドポイント間でダイレクトに確立されたセッションを有するエンドポイント間でコンピュータネットワークにおけるデータ送信を最適化するサービスに向けられる。最適化サービスは、エンドポイント間で送信されたデータの少なくとも幾つかをトランスペアレントに変更又は記憶するか、エンドポイント間でのデータ通信を最適化するため、新たな要求をエンドポイントに導入する。それぞれのエンドポイントは、セッションを通して同じやり方でセッションを自身に対して識別する。
【００２０】
本明細書で使用されたとき、用語「ネットワークノード」は、限定されるものではないが、コンピュータサーバ、（デスクトップ、ノートブック、及びタブレットコンピュータを含む）パーソナルコンピュータ、スマートフォン、及び他のネットワークに接続される装置を含めて、IPベースのネットワークに接続される装置を示す。
【００２１】
本明細書で使用されるように、用語「エンドポイント」は、IPベースのネットワークに接続されるネットワークノードにある、IPベースのネットワークにより双方向プロセス間通信フローのエンドポイントを示す。エンドポイントの例は、限定されるものではないが、TCPソケット、SCTPソケット、UDPソケット及びraw  IPソケットを含む。
【００２２】
最適化サービスは、IPベースのネットワーク上のネットワークノード間のデータの中継に係わる装置の一部として動作する。係る装置の例は、限定されるものではないが、レジデンシャルホームゲートウェイ、WiFiホットスポット、ファイアウォール、ルータ、Metro  Ethernet（登録商標）スイッチ、光スイッチ、DPI装置、コンピュータサーバ、アプリケーションゲートウェイ、ケーブルモデム終端システム（CMTS）、光回線端末（OLT）、ブロードバンドネットワークゲートウェイ（BNG）、ブロードバンドアクセスサーバ（BRAS）、DSLアクセスマルチプレクサ（DSLAM）、ゲートウェイGPRSサポートノード（GGSN）、及びPDMゲートウェイ（PGW）を含む。
【００２３】
図１及び図２に示されるように、例えばISP加入者及びインターネットベースのサーバといったIPベースのコンピュータネットワーク上の２つのエンドポイント‘A’及び‘B’は、互いの間でデータセッション‘S’を確立する。TCPプロトコルの場合、セッションのセットアップ段階は、ネットワーク及びトランスポートパラメータの交渉を含む、TCPセッションのハンドシェイクを含む。
【００２４】
エンドポイントAとエンドポイントBとの間のセッションSは、A及びBに送出されたデータ問い合わせを含み、幾つかのケースでは、AによりBに送出されたデータ応答を含む。セッションは、両方のエンドポイントにより送出された問い合わせ及び応答を任意に含む。
【００２５】
それぞれのエンドポイントは、少なくとも５つのタプル（tuple）、ローカルエンドポイントのIPアドレス及びポート、リモートエンドポイントのIPアドレス及びポート、並びに使用されるプロトコル（例えばTCP、UDP等）によりデータセッションSを典型的に識別する。エンドポイントA及びBによるセッションSの定義は、AとBとの間のネットワークで行われるネットワークアドレストランスレーション（NAT）の場合において同じではない場合がある。
【００２６】
エンドポイントA及びBは、送出及び受信されたバイト及び／又はフレームをカウントすることで、送出及び受信されたデータの経過を任意に追う。エンドポイントA及びBは、とりわけパケット損失検出及び再送信、混雑の回避、混雑制御のため、リモートエンドポイントにより送出及び受信されたデータの経過を更に追う場合がある。
【００２７】
それぞれのエンドポイントによりセッションSのアイデンティティは、セッションの存続期間を通して変化しない。
【００２８】
１以上の実施の形態によれば、エンドポイントAとBの間のセッションSの確立に続いて、最適化サービス‘C’は、RFC1122当たりTCP/IPモデルにより定義されるように、ネットワークとトランスポートレベルの両者で、エンドポイントAにはエンドポイントBとして見える、エンドポイントAに面しているトランスペアレントなエンドポイントCAを形成する。
【００２９】
図１に例示されるように、サービスCは、２つのトランスペアレントなエンドポイントCA及びCBを任意に形成し、エンドポイントCAは、エンドポイントAにはエンドポイントBとして見え、エンドポイントCBは、エンドポイントBにはエンドポイントAとして見える。
【００３０】
１以上の実施の形態によれば、サービスCは、サービスが処理する幾つかのセッションのみにおいてトランスペアレントなエンドポイントを形成し、判定は、例えば時間情報、順序情報、頻度情報、エンドポイント識別情報、セッション識別情報、ネットワーク状態情報及び外部ポリシー情報といった少なくとも１つの変数に基づいてCにより必要とされる。
【００３１】
１以上の実施の形態によれば、サービスCは、セッションのエンドポイント間のデータ経路によるか、又は図２Ａ及び図２Ｂに示されるように、データ経路にあり、特定のデータセッションをサービスCに向け直す１以上の専用のリダイレクト装置の使用により、AとBとの間のセッションSにおける全てのデータフレームを中継する。
【００３２】
他の実施の形態によれば、サービスCは、AとBとの間のセッションにおけるデータフレームの一部のみを中継する。例えば、リダイレクト装置は、セッションのLayer7の分析を使用して、セッションがサービスCに向け直されるべきかを判定することで、セッション内の所定のフレームから開始して、セッションSをサービスCに向け直す。
【００３３】
トランスペアレントなエンドポイントを形成することなしに、サービスCがエンドポイントAとエンドポイントBとの間でデータフレームを中継するとき、（例えばポートからポートにデータフレームを切り替えることで）物理レベルでデータフレームを中継するか、（例えばMACアドレス及び／又はVLANタグを変えることで）リンクレベルでデータフレームを中継するか、或いは先の組み合わせによりデータフレームを中継する。
【００３４】
１以上の実施の形態によれば、サービスCは、サービスが処理するセッションのネットワークアドレストランスレーション（NAT）を任意に実行する。
【００３５】
中継の一部として、Cは、以下のグループからの全部又は一部の変数を含んで、コネクションの状態を連続して追跡及び記憶する。  
スタティックセッション識別子（エンドポイントアドレス及びポート番号、使用されるトランスポートプロトコル）。  
限定されるものではないが、それぞれのエンドポイントにより送出及び許可されるデータのシーケンス識別子を含む、それぞれのエンドポイントのダイナミックトランスポート状態。  
限定されるものではないが、選択的ACK、タイムスタンプ及びスケーリングされたウィンドウのようなTCPオプションを含むセッション及び個々のエンドポイントの交渉によるトランスポート属性。  
限定されるものではないがIP  DSCP，  IP  TOS，IPv6フローラベルを含む夫々の方向において送出されるデータフレームの動的なネットワークレベルの属性。  
限定されるものではないが、発信元及び宛先MACアドレス、802.1Q  VLAN  tag、802.1P優先ビット、QinQスタックVLANタグを含む、それぞれの方向において送出されたデータフレームの動的なリンクレベルの属性。  
限定されるものではないが、入口及び出口ポートのアイデンティティ、物理ポートのプロパティを含む、それぞれの方向において送出されるデータフレームの動的な回路レベルの属性。
【００３６】
１以上の実施の形態によれば、サービスCは、図３に例示されるように２つのエンドポイントT1とT2の間で確立されるトンネルにおいてサービスCを横切る、AとBの間の１以上のデータセッションS’についてデータ変更及びキャッシングサービスを提供する。
【００３７】
サービスCによりサポートされるトンネルプロトコルは、限定されるものではないが、L2Tp，  PPPoE，  PPPoA，  L2TP，  GRE，  GTP-U，  IP  in  IP，  MPLS，  Teredo，  6RD，  6to4及びPMIPを含む。
【００３８】
図３に示される１以上の実施の形態によれば、サービスCは、トンネルを横断するエンドポイントAとBの間の複数のコネクションにわたり、エンドポイントT1とT2との間のトンネルされたセッションの状態を追跡する。
【００３９】
以下に更に詳細に説明されるように、様々な実施の形態に係るサービスCは、（a）データ応答のキャッシング、（b）データ問い合わせ及びデータ応答の変更及び（c）新たな要求の導入を含む多数のセッション変更及び他の機能を提供する。
【００４０】
（a）応答のキャッシング
先に記載されたエンドポイントAとBの間のデータセッションSの確立に続いて、エンドポイントAからエンドポイントBへのデータ問い合わせは、サービスCに到達する。
【００４１】
１以上の実施の形態によれば、サービスCは、データ問い合わせを分析して、それを前に記憶されたデータ応答と整合させる。そうするため、Cは、時間情報、順序情報、頻度情報、クライアント情報、及びID情報から構成されるグループから選択された少なくとも１つの変数に基づいてエンドポイントAから受信された問い合わせを分析する。
【００４２】
整合の応答がストレージで発見された場合、Cは、記憶されている応答をエンドポイントAに単独で伝送する。
【００４３】
１以上の実施の形態によれば、整合の応答がサービスCにより前に記憶されている場合、サービスCは、問い合わせをエンドポイントBに中継せず、問い合わせに単独で応答する。
【００４４】
１以上の代替的な実施の形態によれば、サービスCは、エンドポイントAから受信された問い合わせをエンドポイントBに中継し、応答又は応答の一部をエンドポイントBから受信し、エンドポイントAから受信されたデータ問い合わせ、エンドポイントBから受信されたデータ応答又は応答の一部を、Cにより前に記憶されたデータ応答に対して整合させる。
【００４５】
この場合、整合する記憶された応答がサービスCにより識別される場合、記憶された応答又は応答の一部をエンドポイントAに伝達する。この場合、サービスCは、エンドポイントBから受信された応答の中継を阻止する。
【００４６】
データ応答がCにより伝達されている場合、CはエンドポイントBにデータセッションSを終了させるか、又は応答の伝達を引き延ばさせる。
【００４７】
反対のエンドポイントから受信されなかった、新たなデータフレームをセッションS内でエンドポイントA及びBに送出するとき、サービスCは、上述されたように、反対のエンドポイントのIP及びポートアドレスを、サービスにより連続して記憶されるセッション状態と同様に利用する。
【００４８】
図４に示されるように、エンドポイントA及びBがX0及びY0のそれぞれで開始するセッションSにおいてそれらのデータストリームのシーケンス処理を始める。サービスCがCが応答するエンドポイントAからデータ問い合わせを受信する時までに、サービスCは、AからBへのNAバイトのデータ及びBからAへのNBバイトのデータを中継し、NA及びNBは、ゼロよりも大きいか又はゼロに等しい。
【００４９】
サービスCは、エンドポイントA及びBの両者のシーケンス及びそれぞれのエンドポイントによる確認応答の経過を追う。サービスCは、その応答をエンドポイントAに伝達し始めたとき、サービスCは、先にエンドポイントBにより使用されたデータ系列の係属において、Y0+NBと共にそのデータのシーケンス処理を始める一方、先にエンドポイントAにより送出された系列の継続において、X0+NAから開始するエンドポイントAから新たなデータを期待する。TCPシーケンス番号Y0+NB及び確認応答番号X0+NAでエンドポイントCAをCが初期化するということができる。
【００５０】
結果として、Cにより伝達されるデータは、エンドポイントAにとって、AとBの間のセッションSのシームレスな継続として見える。
【００５１】
Y0とY0+NBとの間でシーケンス処理されるエンドポイントAにエンドポイントBにより送出されるパケットがCとAとの間のネットワークセグメントで失われた場合、エンドポイントAは、サービスCがそれ自身のY0+NB以上でシーケンス処理されたデータを送出し始めた後に、Y0+NBよりも小さい確認応答シーケンスをもつバックフレームを送出することで応答する。１以上の実施の形態によれば、Cは、係るパケットをエンドポイントBに中継し、エンドポイントBに失われたパケットを再送信させる。この場合、Cは、Y0とY0+NBとの間の範囲においてデータをエンドポイントAにのみ中継する。
【００５２】
同様に、それ自身のデータ（すなわち他のエンドポイントから受信されたデータではない）をエンドポイントBに送出するとき、サービスCは、サービスCにより見られるように、セッションS内のエンドポイントAの現在の状態を利用する。
【００５３】
サービスCにより行われた送出及び受信されたデータのシーケンス処理の説明は、限定されるものではないが、２つのエンドポイント間でやり取りされる個々のフレームのシーケンス処理を含めて、他のセグメントと同様にデータの個々のバイトに基づいてTCPのようなセマンティクスにも同様に当てはまる。
【００５４】
サービスCは、上述されたデータをシーケンス処理する同じ方法を、限定されるものではないが、PPP及びPPPのようなプロトコル、UDP/IPトンネルを通したTCP/IPセッション、IPv4トンネルを通したIPv6で形成されたセッションを含む同じセッション内で、上述されたマルチレベルセッショントラッキングを使用して記憶されたデータを利用して複数のプロトコルレイヤに適用することができる。
【００５５】
１以上の実施の形態によれば、前に記憶されたデータ応答又は他のデータを伝達するため、サービスCは、（例えばTCP/IP又はUDP/IPソケットといった）トランスポートエンドポイントCAをトランスペアレントに形成し、エンドポイントA及びBにより行われるように、エンドポイントCAがパケット損失及び再送信、混雑検出及び回避、並びに他のトランスポートデータ送信の態様に対処するのを可能にする。
【００５６】
サービスCは、エンドポイントAに面している単一のエンドポイントCA、又はA及びBにそれぞれ面しているエンドポイントCA及びCBのペアを形成する。エンドポイントAに面しているエンドポイントCAは、反対のエンドポイントBのアドレス（IPアドレスIPB及びポートPB）、及びエンドポイントCAの形成前のセッションのトラッキングの結果として、サービスCにより記憶されたエンドポイントBのトランスポート状態を有する。同様に、エンドポイントCBは、エンドポイントAの属性を有する（IPアドレスIPA及びポートPA）。
【００５７】
１以上の実施の形態によれば、サービスCは、トランスポートレベルのエンドポイントになることなしに、エンドポイントAとBの間で中継されるときに、データ問い合わせ及びデータ応答を記憶する。
【００５８】
他の実施の形態によれば、サービスCは、エンドポイントのうちの１つからデータ応答を取得するか、別のデータソースからデータ応答を受信する。
【００５９】
１以上の実施の形態によれば、サービスCは、エンドポイントA及びBの両者からのデータ問い合わせに応答する。
【００６０】
１以上の実施の形態によれば、サービスCは、以下のグループからの少なくとも１つの変数に基づいて、エンドポイントA及び／又はBからデータ問い合わせに応答する。コンフィギュレーション情報、時間情報、頻度情報、順序情報、システム負荷情報、ネットワーク状態情報、クライアント情報及びID情報。
【００６１】
１以上の実施の形態によれば、エンドポイントAは、問い合わせQA1をエンドポイントBに送出し、エンドポイントBに対して、サービスCは、前に記憶された応答RC1を送出することで応答する。応答RC1の受信に応じて、エンドポイントAは、別のデータ問い合わせQA2を送出する。サービスCが問い合わせQA2に対するマッチング応答を記憶していない場合、エンドポイントBに問い合わせを中継し、応答RB2を受信して、エンドポイントAに中継する。
【００６２】
サービスCによりエンドポイントに伝達される応答RC1の結果として、エンドポイントA及びBの送出及び受信されたデータの逆は、一致しない場合がある。問い合せ及び応答がAとBの間で再び中継されるリレーモードにスイッチが戻るのを可能にするため、サービスCは、例えば図４に示されるAとBの間で中継するデータフレームのシーケンスの進行している変更を行う。例えば、要求QA2がエンドポイントAから受信されたとき、エンドポイントAは、RC1応答の一部として、エンドポイントCAから受信されたデータを反射するY3’までの受信データを報告する。同時に、エンドポイントBは、エンドポイントCBとの通信の一部として、シーケンスY2までのデータを送出する。
【００６３】
同様に、エンドポイントBが受信し、エンドポイントAが送出したデータ（X3’及びX4のそれぞれ）の逆は、いずれも整合しない。
【００６４】
Y3’とY2の間、同様にX3’とX4の間の差分を除去するため、サービスCは、AとBの間で両方向においてデータを中継するとき、送出及び受信されたデータのシーケンスを変更する。
【００６５】
さらに、エンドポイントAは、前に記憶された応答RC3を使用して、サービスCにより返答された別の問い合わせQA3を開始する。
【００６６】
言い換えれば、サービスCは、一方又は両方のエンドポイントからのエンドポイントの問い合わせに応答することと、２つのエンドポイント間の問い合わせ及び応答を中継することとの間で交互する。
【００６７】
（ｂ）問合せ及び応答の変更
１以上の実施の形態によれば、上述されたセッション５の確立に続いて、サービスCは、図５の例により説明されたように、２つのエンドポイントAとBの間で中継されるデータ問合せ及び／又はデータ応答を変更する。
【００６８】
１以上の実施の形態によれば、サービスCは、変更されたデータを送出するためにトランスポートエンドポイントを利用しないが、エンドポイントA及びBのトランスポート状態を追跡し続け、送出しているエンドポイントを信頼して、パケットの損失の場合にデータを再送出する。
【００６９】
中継されたデータの変更の一部として、サービスCは、新たなペイロードを反映するためにフレームのプロトコルチェックサムを変える必要がある。
【００７０】
AからBに送出されるデータのCによる変更の場合、変更されたデータのパケットの損失は、CとBの間で生じる場合がある。この場合、Cは、BからAに係る損失を反映するデータフレームを中継し、エンドポイントAに失われたフレームを再送信させ、サービスCに変更を再び適用させる。Cは、記憶されたセッション状態情報を使用して再送信されたフレームを追跡し、変更を再び適用する。
【００７１】
他の実施の形態では、エンドポイントBに変更されたデータを伝達するため、サービスCは、エンドポイントBに面する新たなトランスポートエンドポイントCBを形成する。係るエンドポイントCBは、エンドポイントAのIPアドレスIPA及びポートPAを利用し、エンドポイントAからエンドポイントBに前に中継されるフレームの継続において、変更されたデータを中継する。
【００７２】
エンドポイントBに変更されたデータを伝達するためにサービスCがエンドポイントCBを形成するとき、サービスCは、例えばエンドポイントAからデータ応答を受信するため、エンドポイントAとの通信を容易にするため、エンドポイントCAを任意に形成する場合がある。エンドポイントCBと同様に、エンドポイントCAは、反対のエンドポイントBのIPアドレスIPB及びポートPBを利用し、エンドポイントBからエンドポイントAに前に中継されたフレームの継続において、エンドポイントBと通信する。
【００７３】
変更されたデータの伝達の終了に応じて、サービスCは、上述された送出及び受信されたデータのシーケンスについて必要な調節を行っている間、AとBの間でフレームを中継するためにフォールバックする。
【００７４】
１以上の実施の形態によれば、サービスCは、セッションSのフォーマット、プロトコル又は他の属性に影響を及ぼすため、エンドポイントの機能の交渉の結果として、エンドポイントAからエンドポイントBに中継されたデータ問合せ及び／又は応答を変更する。
【００７５】
１以上の実施の形態によれば、サービスCは、エンドポイントAにより報告された機能を無効にするため、エンドポイントAにより送出されたデータ問合せのパラメータを変更する。例えば、サービスCは、Aにより報告された圧縮されたフォーマットで応答を受信する機能を変更し、反対のエンドポイントBに圧縮されたフォーマットでその応答を送信させる。
【００７６】
サービスCは、圧縮された応答RB10を受信し、ペイロードを伸張することで受信した応答を変更し、変更された形式でエンドポイントAに伝達し、BとCの間のネットワークの最適化が得られ、パフォーマンスが改善される。
【００７７】
１以上の実施の形態によれば、サービスCは、限定されるものではないが、異なるフォーマットでテクスチャデータのレンダリング、エンドポイントデバイス機能への画像適応、ビデオ品質における変化、及び異なるフォーマットへのオーディオ及び／又はビデオデータのトランスコード等を含めて、エンドポイントBから受信された応答RB11を変更する。
【００７８】
上述された応答の変更は、サービスCと変更されたデータを受信するエンドポイントとの間のネットワークリソースの利用の改善、データ応答のエンドポイントアプリケーション機能への適合、アプリケーションパフォーマンスの改善等を含む多数の目的のために行うことができる。
【００７９】
１以上の実施の形態によれば、サービスCは、例えばBittorrent,  eDonkey等のようなピアツーピアプロトコルで利用される、一方又は両方のエンドポイントで利用可能なデータアイテム又はデータアイテムの一部に関する、エンドポイントAとBの間で中継されるデータ応答を変更する。
【００８０】
（ｃ）新たな要求の導入
１以上の実施の形態によれば、サービスCは、図６に示されるように、それぞれのエンドポイントにより送出される問合せに加えて又は問合せの代わりに、セッションS内にエンドポイントA及び／又はエンドポイントBに新たな要求を導入する。
【００８１】
１以上の実施の形態によれば、サービスCは、上述されたように、新たな問合せの送信及びエンドポイントA及びBからの応答の受信に対するエンドポイントのアプローチを利用する場合がある。
【００８２】
１以上の実施の形態によれば、サービスCは、応答及び応答の変更のキャッシング、応答のキャッシングによる新たな要求の導入、及び同じセッションSにおけるエンドポイント間のデータの中継を組み合わせる。
【００８３】
１以上の実施の形態によれば、サービスCは、サービスCにより記憶されたデータアイテム（又はデータアイテムの一部）に含め、及び／又はサービスCにより記憶されていないデータアイテム（又はデータアイテムの一部）を除外することで、サービスCのキャッシュヒット率を改善するため、一方又は両方のエンドポイントにより報告されたときに、データ可用性の応答を組み合わせて変更する。
【００８４】
更なる実施の形態によれば、サービスCは、一方又は両方のエンドポイントにより報告されたとき、データ可用性の情報を変更し、サービスCにより管理されるキャッシュをポピュレートする方法として、サービスCにより現在記憶されていないデータアイテム（又はデータアイテムの一部）をエンドポイントに強制的に伝達させる。
【００８５】
１以上の実施の形態によれば、サービスCは、エンドツーエンド暗号化の使用を無効にして、データ応答の後続するキャッシングを可能にするため、エンドポイントAとエンドポイントBとの間でデータ問合せを変更する。
【００８６】
１以上の実施の形態によれば、サービスCは、サービスCによりエンドポイントに伝達されたときに、変更されたデータ応答を記憶し、オンザフライで変更を実行するのではなく、変更されたデータ応答の記憶されたコピーを取得する。
【００８７】
１以上の実施の形態によれば、サービスCは、データ応答の記憶されたコピーが変更の必要に整合する場合に、上述された応答キャッシングメカニズムにより記憶されたデータ応答を伝達する。
【００８８】
１以上の実施の形態によれば、サービスCは、完全なデータ応答がエンドポイントBから伝達されるのを可能にするのではなく、データ変更の入力として、上述された応答記憶メカニズムにより記憶されたデータ応答の記憶されたコピーを利用する。
【００８９】
１以上の実施の形態によれば、サービスCは、最適な応答のキャッシングのために必要とされるエンドポイントの応答をトリガするために、新たな要求をセッションSに導入する。
【００９０】
係るデータ応答は、限定されるものではないが、サービスCにおいて既に記憶されたコンテンツオブジェクトの欠けている部分、ポピュラーであるとして識別されたコンテンツオブジェクトであるが、サービスCにより未だ記憶されていないコンテンツオブジェクト、サービスCに知られている他のオブジェクトに関連するコンテンツオブジェクト（例えばHTMLページにより参照されるオブジェクト又は適応ビットレートビデオの更なる再生レベル）を含む。
【００９１】
１以上の実施の形態によれば、システムには、上述されたサービス（a）〜（c）の少なくとも１つを提供するために設計又は設定された、IPネットワークの少なくとも１つを含む、互いの間にデータセッションをエンドポイントA及びBが確立するのを必要とするやり方で、２つのエンドポイントAとBの間の少なくとも１つのデータ通信セッションのトランスペアレントな変更が設けられる。
【００９２】
１以上の実施の形態によれば、最適化システムは、以下の図７に示される、単一又は複数のサービスプロバイダネットワーク、専用のホスティングロケーション、データセンター、及び、企業又は住居の敷地にある。
【００９３】
１以上の実施の形態によれば、システムは、異なる物理的な位置における複数のコンポーネントを含む。
【００９４】
１以上の実施の形態によれば、複数のシステムは、２つのエンドポイントAとBの間の同じコネクションSのデータ経路に直列に存在する。
【００９５】
１以上の実施の形態によれば、最適化サービスは、エンドポイントのうちの１つがある同じネットワークノードで動作する。
【００９６】
１以上の実施の形態によれば、複数の最適化サービスは、図７に例示されるように、直列に動作する。
【００９７】
１以上の実施の形態によれば、複数の最適化サービスは、例えばリダイレクト装置により行われたセッションの負荷バランスの一部として並列に動作する。
【００９８】
１以上の実施の形態によれば、最適化サービスの複数のインスタンスは、直列及び／又は並列に動作することができ、最適化のそれぞれのインスタンスは、異なる及び／又は同じデータ変更及び記憶処理を実行する。
【００９９】
１以上の実施の形態によれば、最適化サービスの複数のインスタンスは、直列及び／又は並列に動作することができ、最適化のそれぞれのインスタンスは、互いに協力して、異なるデータ変更及び記憶処理を実行する。
【０１００】
上述された最適化サービスの処理は、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせで実現される。この処理は、プロセッサ、（例えば揮発性及び不揮発性メモリ及び／又はストレージエレメントといった）プロセッサにより読取可能な記録媒体、並びに入力及び出力装置を含むプログラマブル装置で実行する１以上のコンピュータプログラムで実現されることが好ましい。それぞれのコンピュータプログラムは、装置のランダムアクセスメモリにあるコードモジュールにおける命令のセット（プログラムコード）とすることができる。装置により要求されるまで、命令のセットは、（例えばハードディスクドライブ、又は光ディスクのような取り外し可能なメモリ、メモリカード又はフラッシュドライブといった）別のコンピュータメモリに記憶されるか、別のコンピュータシステムに記憶され、インターネット又は他のネットワークを介してダウンロードされる場合がある。
【０１０１】
幾つかの例示的な実施の形態を記載したが、様々な変更、改良及び改善が当業者により行われることを理解されたい。係る変更、改良及び改善は、この開示の一部を形成し、この開示の精神及び範囲内にあることが意図される。本明細書で提示された幾つかの例は、機能又は構造のエレメントの特定の組み合わせを含むが、それらの機能及びエレメントは同じ又は異なる目的を達成するためにこの開示に従って他のやり方で組み合わせられることを理解されたい。特に、１実施の形態に関連して記載された動作、エレメント及び特徴は、他の実施の形態における類似又は他の役割から除外されることが意図されない。
【０１０２】
さらに、本明細書で記載されるエレメント及びコンポーネントは、同じ機能を実行するため、更なるコンポーネントに分割されるか、少ないコンポーネントを形成するために互いに結合される。例えば最適化サービスは、１以上の物理マシン、又は１以上の物理マシン上で実行される仮想マシンを含む。さらに、最適化サービスは、インターネット又は別のネットワークにより接続されるコンピュータのクラスタ又は様々な分散されたコンピュータを含む。
【０１０３】
従って、上述した説明及び添付した図面は例示するものであって、限定的であることが意図されない。
【図１】
0006035248.tif 000002
【図２Ａ】
0006035248.tif 000003
【図２Ｂ】
0006035248.tif 000004
【図３】
0006035248.tif 000005
【図４】
0006035248.tif 000006
【図５】
0006035248.tif 000007
【図６】
0006035248.tif 000008
【図７】
0006035248.tif 000009