説明

エンドポイント間認証状態を保ったデータ・パケットの圧縮

エンドポイント間の単一通信セッションの連続データ・パケットを圧縮用に収集し、少なくともそのペイロードを単一圧縮可能バッファを介して集合的に圧縮する。圧縮してもしなくてもよい元のヘッダと、圧縮されたペイロードとは、送信側のパケット圧縮装置から受信側のパケット圧縮装置に送信される。この受信側のパケット圧縮装置は、圧縮されたペイロードに対して解凍を行い、送信側で圧縮されていればヘッダも解凍することができる。ヘッダとペイロードを含む元の連続データ・パケットを、ヘッダと対応するペイロードを照合することによって、受信側のパケット圧縮装置で再構築することができる。再構築されたデータ・パケットは単一の通信セッションに投入され、再構築されたデータ・パケットに元のヘッダが存在することによって、エンドポイント間の認証プロトコルを維持することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エンドポイント間認証状態を保ったデータ・パケットの圧縮に関する。
【背景技術】
【0002】
コンピュータは、通常、ネットワークを介してデータ・パケットを交換することによって通信する。ネットワークでは、或るエンドポイントから別のエンドポイントへデータ・パケットを伝送するために利用できる帯域幅は限られている。その利用可能な帯域幅によって、コンピュータがデータ・パケットを交換できる速度は制限される。結果として、データ・パケットの伝送速度が不十分であると効率が落ちてしまう。非営利のユーザにとって、伝送速度が不十分だと苛立つこととなろう。また商業利用の場合、伝送が遅いと生産性や利益率が低下する。
【0003】
企業においては、例えば複数の物理的位置の間で、エンド・ツー・エンド接続を維持していることが多い。例えば、本部や幾つかの支部が存在する。データ・パケットのスループットを上げるため、各エンドポイントは、送信装置と受信装置の間に論理的に配置されたアクセラレータ装置を使用する。当該アクセラレータ装置は、下流の装置を宛先とするデータ・パケットを受信するという点でネットワーク透過な装置であり、パケットを変えずにそのまま通すか、パケットを収集して圧縮し、圧縮状態で送信する。
【0004】
アクセラレータ装置は、スループットを増大させユーザ・エクスペリエンスを高めるためにデータ・パケットのペイロードを圧縮する。しかし、アクセラレータ装置は、元のヘッダを破棄することによって着信パケットのトランスポート層ストリームを止め、ペイロードを送達するプロキシ・サービスとして行動する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
アクセラレータ装置は所望の圧縮を提供できるが、トランスポート層ストリームの停止は問題を引き起こす。1つの具体的な例として、IPSec(Internet Protocol Security)やSMB(Server Message Block)署名のようなエンドポイント間認証プロトコルが最早利用できなくなる。
【課題を解決するための手段】
【0006】
実施形態では、エンドポイント間の認証プロトコルを維持できるように通信セッションの元のヘッダを保存しつつ、エンドポイント間の単一通信セッションの連続データ・パケットを圧縮する。当該連続データ・パケットの少なくともペイロードを、少なくとも1つの圧縮可能バッファを介して圧縮し、それによって当該連続データ・パケットのペイロードを個別にではなく1つのグループとして集合的に圧縮する。第1の単一通信セッションの連続データ・パケットの圧縮されたヘッダと元のヘッダを伝送するために、送信装置と受信装置の間の第2の単一通信セッションに対応する別のデータ・パケットを受信装置に送信する。受信装置は少なくとも圧縮されたペイロードを解凍し、次いで元のヘッダを元のペイロードと照合することによって、エンドポイント間の第1の単一通信セッションの元の連続データ・パケットを再構築する。次いで、再構築した連続データ・パケットをエンドポイント間の第1の単一通信セッションに受信装置側で挿入して、受信装置から連続データ・パケットの各々を、元の連続データ・パケットの宛先であるエンドポイント装置に送達することができる。
【0007】
本要約は、選択した概念を簡潔な形で紹介するために与えた。その概念は、後で「発明を実施するための形態」でさらに説明する。本要約はクレーム主題の主要な特徴または本質的な特徴を特定しようとするものではなく、クレーム主題の範囲を限定するために使用しようとするものでもない。
【図面の簡単な説明】
【0008】
【図1A】データ・パケット圧縮装置の様々な実施形態向けの例示的な環境を示す図である。
【図1B】2つのデータ・パケット圧縮装置がネットワークを介して通信する例示的な実施形態を示す図である。
【図2A】エンドポイント間の単一通信セッションにおける1組の連続データ・パケットの少なくともペイロードを集合的に圧縮するための1組の論理動作の例を示す図である。
【図2B】1組の連続データ・パケットの少なくともペイロードを解凍し、当該連続データ・パケットを元の形に再構築するための1組の論理動作の例を示す図である。
【図3A】図2Aの論理動作中のように、着信データ・パケットを圧縮できることを分析するための1組の論理動作の例を示す図である。
【図3B】図2Aの論理動作中のように、1組の着信連続データ・パケットの少なくともペイロードを含む少なくとも1つの圧縮可能バッファの圧縮開始を決定するための1組の論理動作の例を示す図である。
【図4A】エンドポイント間の単一通信セッションにおける1組の連続データ・パケットが、未圧縮状態で収集されてから圧縮され送信されるまでの進展を示す図である。
【図4B】エンドポイント間の単一通信セッションにおける1組の連続データ・パケットを圧縮状態で受信してから解凍して、元の形で単一通信セッションの出て行くストリームに投入するまでの進展を示す図である。
【発明を実施するための形態】
【0009】
実施形態では、エンドポイント間の単一通信セッションにおける1組の連続データ・パケットを圧縮し、圧縮した1組のデータ・パケットを受信装置に送信する。圧縮には、ペイロードのみの圧縮、またはヘッダとペイロードの両方の圧縮を含めることができる。圧縮したペイロードと元のヘッダは双方とも、圧縮されるかまたは圧縮されずに受信装置へと伝送され、次いで、当該受信装置は少なくともペイロードを解凍し元の1組の連続データ・パケットを再構築する。圧縮の前に、圧縮可能な連続データ・パケットを選択し、少なくとも1つの圧縮可能バッファに含まれるデータの量を最大化する論理を使用することができる。
【0010】
図1Aは様々な例示的な実施形態に対する動作環境の1例を示す。本例では、幾つかのピア・デバイスは様々な場所に存在でき、ネットワーク106を通して、他所にある様々なピア・デバイスと継続して通信できる。例示のために、第1の場所には、ネットワーク・スイッチのようなノード101に接続された第1のピア・デバイス102と第3のピア・デバイス103がある。ノード101は、第1のピア・デバイス102と第3のピア・デバイス103から送られたデータ・パケットを受信する。次いで、ノード101は他所宛てのデータ・パケットを第1のパケット圧縮装置104に転送する。ノード101は、また、第1のパケット圧縮装置104からデータ・パケットを受信して、当該パケットを第1のピア・デバイス102か第3のピア・デバイス103宛に送ることができる。
【0011】
第1のパケット圧縮装置104は、ネットワーク透過な装置である。なぜなら、第1のピア・デバイス102と第3のピア・デバイス103からのパケットの宛先は第1のパケット圧縮装置104ではなく、当該パケットはネットワーク106を通ってさらに遠くへ送達するために第1のパケット圧縮装置104を通るからである。様々な数のピア・デバイスがこの場所に存在でき、第1のピア・デバイス102のみが存在する場合は、第1のピア・デバイス102を第1のパケット圧縮装置104に直接接続できることは理解されよう。さらに、本例で示すように、第1のパケット圧縮装置104をスタンドアロンの装置とせず、第1のパケット圧縮装置104の機能を第1のピア・デバイス102に統合してもよい。
【0012】
また、例示のために、第2の場所にはノード109に接続された第2のピア.デバイス110と第4のピア・デバイス111がある。ノード109は、第2のピア・デバイス110と第4のピア・デバイス111からデータ・パケットを受信する。次いで、ノード109は、他所宛てのデータ・パケットを第2のパケット圧縮装置108に転送する。ノード109は、また、データ・パケットを第2のパケット圧縮装置108から受信し、当該データ・パケットを第2のピア・デバイス110または第4のピア・デバイス111宛に送ることができる。
【0013】
第1のパケット圧縮装置104と同様、第2のパケット圧縮装置もネットワーク透過な装置である。なぜなら、第2のピア・デバイス110と第4のピア・デバイス111からのパケットの宛先は、第2のパケット圧縮装置108ではなく、これらのパケットはネットワーク106を通ってさらに遠くへ送達するために、第2のパケット圧縮装置108を通るからである。様々な数のピア・デバイスがこの場所に存在でき、第2のピア・デバイス110のみが存在する場合は、第2のピア・デバイス110は第2のパケット圧縮装置108に直接接続できることは理解されよう。さらに、本例で示すように、第2のパケット圧縮装置108をスタンドアロンの装置とせず、第2のパケット圧縮装置108の機能を第2のピア・デバイス110に統合してもよい。
【0014】
第1のピア・デバイス102が、第2のピア・デバイス110または第4のピア・デバイス111宛てのデータ・パケットを送る場合、パケット圧縮装置104は第1のピア・デバイス102によって送られている1組の連続データ・パケットを、少なくとも1つの単一圧縮可能バッファの単一データ・セットとして圧縮することができる。圧縮には、連続データ・パケットのペイロードの圧縮か、当該連続データ・パケットのヘッダとペイロードの圧縮を含めることができる。次いで、ヘッダと圧縮されたペイロードを第2のパケット圧縮装置108に送信し、そこでペイロードを解凍し、必要ならばヘッダを解凍する。次いで、ヘッダをペイロードと照合し、第1のピア・デバイス102から送られた元のデータ・パケットを再構築する。次いで、第2のパケット圧縮装置108は、再構築された元のデータ・パケットを第1のピア・デバイス102と第2のピア・デバイス110または第4のピア・デバイス111の間の通信セッションに投入して、元のデータ・パケットを目的の宛先に送達する。
【0015】
同じ働きを逆方向に行うことができる。この場合、第2のピア・デバイス110がデータ・パケットを第1のピア・デバイス102か第3のピア・デバイス103に送っている。第2のパケット圧縮装置108は、少なくともペイロードを圧縮し、元のヘッダと圧縮されたペイロードを第1のパケット圧縮装置104に送信する。次いで、第1のパケット圧縮装置104は、必要ならばペイロードとヘッダを解凍し、第2のピア・デバイス110から送られた元のパケットを再構築する。
【0016】
例示のために、第1のピア・デバイス102が第2のピア・デバイス110と通信している場合は、これらのエンドポイント間で第1の通信セッション113が、例えばそれらの間でネットワーク106を介してトランスポート層ストリームを生成することによって確立されている。第1のピア・デバイス102がネットワーク106を介してデータを第2のピア・デバイス110に送ろうとすると、連続的なバイト・ストリームが第1の通信セッション113を通って流れる。この場合、当該バイト・ストリームは、それぞれがヘッダとペイロードを有するデータ・パケットのシーケンスを形成する。トランスポート層ストリームは、バイト・ストリームのこれらのデータ・パケット内部に存在するトランスポート層ヘッダによって維持される。
【0017】
さらに、例示のために、パケット圧縮装置104がネットワーク106を介して、第1の通信セッション113のパケットを送信し続けるために受信している場合は、パケット圧縮装置104は当該パケットのうち少なくとも幾つかを圧縮用に収集することができる。次いで、圧縮されたデータ・パケットを、ネットワーク106を介して、パケット圧縮装置104とパケット圧縮装置108の間に確立された第2の通信セッション115を介して送信することができる。この第2の通信セッション115は、パケット圧縮装置104とパケット圧縮装置108の間で維持されるトランスポート層ストリームとして生成することができる。
【0018】
図1Bは、第1のパケット圧縮装置104と第2のパケット圧縮装置108の1つの例示的な実装形態を示す。本例では、第1のパケット圧縮装置104と第2のパケット圧縮装置108は、第1のピア.デバイス102と第2のピア・デバイス110の間で行われるデータ通信に対して圧縮サービスを提供するために存在する。
【0019】
この第1のパケット圧縮装置104の例示的な実装形態は、処理システムを形成する様々な構成要素を含む。本例では、第1のパケット圧縮装置104の処理システムが、カーネル・モード部134とユーザ・モード部132を含んでいる。カーネル・モード部134は、データ・パケットが第1のピア・デバイス102と第1のパケット圧縮装置104の間で交換されるように、第1のピア・デバイス102への物理接続または何らかの中間装置への物理接続を提供する第1のNIC(network interface card)112を介して、データを送受信する。NDIS(network driver interface specification)層のようなデータ・リンク層114は、NIC112と共に動作して、パケットをブリッジ120を介してデータ・リンク層118に渡す。データ・リンク層118は、当該パケットをネットワークおよびトランスポート層122へ渡す。ネットワークおよびトランスポート層122は、ネットワーク層向けのIP(Internet Protocol)、関連するトランスポート層向けのTCP(transmission control protocol)またはUDP(user datagram protocol)のようなプロトコルを利用することができる。データ・リンク層、ネットワーク層、およびトランスポート層の他の例もまた、上記の様々な実施形態に適用可能である。
【0020】
この特定の例では、第1のパケット圧縮装置104は第1のピア・デバイス102とネットワーク106の間にあるデータ経路内に物理的に配置されている。従って、カーネル・モード部134は、第2のNIC116を介してデータを送受信し、パケットをネットワークおよびトランスポート層122に提供する関連データ・リンク層118を含む。NIC116はパケットを、第1のピア・デバイス102のローカル・ネットワークを第2のピア・デバイス110のローカル・ネットワークに相互接続する広域ネットワークのようなネットワーク106を介して交換する。
【0021】
第1のパケット圧縮装置104のデータ・リンク層118には、第1のピア・デバイス102から送られたパケットをデータ・セットに収集し、当該データ・セットをユーザ・モード部132の少なくとも1つの単一圧縮可能バッファ127に提供する収集エンジン124が接続されている。当該収集エンジンは、第1のパケット圧縮装置104のオペレーティング・システム・プラットフォームに応じて、NDISフィルタ・ドライバまたはNDIS中間(IM)ドライバのようなドライバが可能である。
【0022】
この例示的な実装形態の収集エンジン124は、カーネル部とユーザ・モード部を含む。カーネル・モード部は、連続データ・パケットをエンドポイント間の特定の入って来る通信セッションから収集し、収集した1組の連続データ・パケットを、ペイロードから分離されたヘッダを含むセグメントに分離する。カーネル部は当該セグメントをユーザ・モード部に渡す。当該ユーザ・モード部は、少なくともペイロードを圧縮すべき単一のデータ・セットとして少なくとも1つの単一圧縮可能バッファ127にロードすることを管理する。それにより、ユーザ・モード部132で、圧縮すべきセグメントを含むデータ・セットにバッファ127からアクセスし、当該データ・セットを圧縮し、第2のパケット圧縮装置108に送信することができる。
【0023】
この例示的な実装形態のデータ・リンク層118は、また、第1のパケット圧縮装置104と第2のパケット圧縮装置108の間のストリームへ出て行くDSCP値をマークするために使用されるDSCP(differentiated services code point)マーカ136のようなQoS(quality of service)マーカを維持することができる。発信パケットをマークして、圧縮されている元のデータ・パケット向けのサービス品質を保存することは、以下でさらに論ずる。
【0024】
第1のパケット圧縮装置104のこの例示的な実装形態のユーザ・モード部132は、また、様々な構成要素を含む処理システムを形成する。上述のように、収集エンジン124は、エンドポイント間の所与の入って来る通信ストリームから、NIC112を介して少なくともペイロードをバッファするユーザ・モード部を備える。次いで、収集エンジン124のユーザ・モード部は、少なくとも1組のペイロードを、少なくとも1つの単一圧縮可能バッファ127の単一のデータ・セットとして、圧縮エンジン128に提供する。
【0025】
圧縮エンジン128は、少なくとも当該ペイロードを、少なくとも1つの単一圧縮可能バッファ127の単一のデータ・セットとして、収集エンジン124から受け取り、少なくとも1つの単一圧縮可能バッファ127から得た少なくともペイロードを単一データ・セットとして圧縮するための1つまたは複数の圧縮アルゴリズムを実行する。少なくとも1つの単一圧縮可能バッファから得た少なくともペイロードを、単一のデータ・セットとして圧縮することによって、圧縮エンジン128は個別ではなく集合的にペイロードを圧縮している。圧縮されている単一のデータ・セットのサイズを増加させることによって、圧縮率を高めることができる。
【0026】
圧縮エンジン128は、以前に参照したデータと、様々な圧縮アルゴリズムを実行するときに利用できる他の参照情報とから成る辞書を維持するため、記憶装置130を利用できる。さらに、圧縮エンジン128は、少なくとも1つの単一圧縮可能バッファのペイロードの内容に対して或るアルゴリズムを使用することができ、ヘッダを含む別の単一圧縮可能バッファに対して別のアルゴリズムを使用することができる。
【0027】
ヘッダを含む圧縮可能バッファのヘッダ内容に適用できる圧縮アルゴリズムの例には、様々な差分アルゴリズムおよび様々なステートレス圧縮アルゴリズムがある。差分アルゴリズムの例には、RFC(Request For Comment)1144、2507、2508、2509、3095、および4815に記載されているものがあり、これらは引用によって本明細書に取り込まれる。ステートレス圧縮アルゴリズムの例にはLZW(Lempel−Ziv−Welch)またはハフマン符号化が含まれる。
【0028】
ペイロードを含む圧縮可能バッファの内容に適用できる圧縮アルゴリズムの例には、様々なステートフル差分アルゴリズムや様々なステートレス圧縮アルゴリズムがある。ステートフル差分アルゴリズムの例には、DFSR(Distributed File System Replication)で使用されるRDC(Remote Differential Compression)が含まれる。ステートレス圧縮アルゴリズムの例には、LZWやハフマン符号化が含まれる。
【0029】
送信エンジン126は、圧縮されたデータ・セットを圧縮エンジン128から受け取る。次に、送信エンジン126は、第1のパケット圧縮装置104と第2のパケット圧縮装置108の間にある第2の通信セッションを介してデータ・セットを送る。送信エンジン126は、ネットワークおよびトランスポート層122を利用してデータ・セットをパケット化し、結果として得たパケットをデータ・リンク層118およびNICl16を介して、第2の通信セッションを通して第2のパケット圧縮装置108に送ることができる。従って、圧縮されたパケットは集合的に圧縮された形で、ネットワーク106を介してトンネリングする。
【0030】
本例に対して示した第1のパケット圧縮装置104の構成要素は、第1のピア・デバイス102から入って来るデータ・パケットの収集、圧縮、送信に関連する構成要素である。第1のパケット圧縮装置104と第2のパケット圧縮装置108は、1方向に流れるデータに対して、第1のパケット圧縮装置104が、収集、分割、圧縮、および送信を行うことができ、第2のパケット圧縮装置108が、受信、解凍、再構築、および第2のピア・デバイス110へのストリームに再び投入する補完機能を行うという意味で、互いに補完する装置になれることは理解されよう。逆方向に流れるデータに対しては、第2のパケット圧縮装置108が、収集、分割、圧縮、および送信を行い、第1のパケット圧縮装置104が、受信、解凍、再構築、および第1のピア・デバイス102へのストリームに再び投入することができる。
【0031】
従って、第1のパケット圧縮装置104を1組の構成要素で示し、第2のパケット圧縮装置108を別の補完的な組の構成要素で示してあるが、第1のパケット圧縮装置104は第2のパケット圧縮装置108に対して示した構成要素を含んでもよく、第2のパケット圧縮装置108は第1のパケット圧縮装置104に対して示した構成要素を含んでもよいことは理解されよう。
【0032】
第2のパケット圧縮装置108に対して示した例示的な実装形態は、また、カーネル・モード部、ネットワーク106とインタフェースするためのNIC138、および第2のピア・デバイス110とインタフェースするためのNIC146を備える。第2のパケット圧縮装置108は、データ・リンク層140および148、分配エンジン(scatter engine)139、ブリッジ150、ならびにネットワークおよびトランスポート層142を備える。この例示的な実装形態のユーザ・モード部は、受信エンジン144、解凍エンジン152、および記憶装置154を備える。
【0033】
第1のパケット圧縮装置104との第2の通信セッションから取得され、従って宛先がこの第2のパケット圧縮装置108であるパケットは、NIC138を介して第1の圧縮装置から受信され、ネットワークおよびトランスポート層142(例えば、TCP/IP)に渡される。このネットワークおよびトランスポート層142は、次いで、パケットのペイロードを抽出し指定の順番でペイロードを繋ぎ合せることによってパケットを分解する。さらに、このネットワークおよびトランスポート層142は、アプリケーション・データを受信エンジン144に提供する。この情報は、第1のパケット圧縮装置104の送信エンジン126から送信された圧縮されたデータ・セットであり、この場合、当該圧縮されたデータ・セットは、第1のピア・デバイス102から得た元のパケットの、圧縮されたヘッダか圧縮されていないヘッダのいずれか1つ、および圧縮されたペイロードを含む。受信エンジン144はこのデータ・セットを解凍エンジン152に提供する。
【0034】
第2のパケット圧縮装置108の解凍エンジン152は、第1のパケット圧縮装置104の圧縮エンジン128が使用する圧縮アルゴリズム(複数可)に対して補完的な解凍アルゴリズム(複数可)を利用してデータ・セットを解凍する。解凍する際、解凍エンジン152は、第1のパケット圧縮装置104の記憶装置130のものに対して補完的な辞書および他の参照情報を含む、記憶装置154の辞書および他の参照情報を参酌することができる。
【0035】
解凍エンジン152は、元のデータ・パケットのヘッダと解凍されたペイロードとを含むセグメントを、分配エンジン139のユーザ・モード部によって管理されるバッファに提供する。分配エンジン139は、最終的に、通信セッションが割り込まれないように、解凍されたパケットをパケットの発生源であるエンドポイント間の通信セッションに割り振り戻す。分配エンジン139のユーザ・モード部は、元のパケットの解凍されたヘッダ、ペイロード、および他の任意の部分を、例示的な実装形態の分配エンジンのカーネル・モード部に提供する。分配エンジン139は解凍したペイロードとヘッダを照合して元のパケットを再構築する。次いで、分配エンジン139は、その再構築された元のパケットを、ブリッジ150を介して第2のピア・デバイス110へのストリームに投入する。
【0036】
図1Bの第1のパケット圧縮装置104と第2のパケット圧縮装置108は、例示の目的のために示したものであり、限定しようとするものではない。例えば、第1のパケット圧縮装置104と第2のパケット圧縮装置108をスタンドアロン構造として示したが、これらの装置を代わりにエンドポイントに組み込んでもよい。例えば、第1のパケット圧縮装置104を第1のピア・デバイス102の構造に組み込んで、NIC112を削除してもよい。
【0037】
さらに、第1のパケット圧縮装置および第2のパケット圧縮装置の実装形態は、幾つかのカーネル・モード要素と幾つかのユーザ・モード要素を含んでいたが、様々な構成要素とそれらの機能を代替構成で実装してもよいことは理解されよう。例えば、当該構成要素およびそれらの機能の全てをカーネル・モード内部で実装してもよい。
【0038】
第1のパケット圧縮装置104および第2のパケット圧縮装置108の構成要素を、記憶装置130または154等のようなメモリに記憶したプログラムを実装する、ハードワイヤードロジック、ファームウェア、汎用のプログラム可能プロセッサで構成することができる。第1のパケット圧縮装置104および第2のパケット圧縮装置108を含む図1Bの装置と同様に、第1のピア・デバイス102および第2のピア・デバイス110は、様々なコンピュータ可読媒体を含むことができる。係るコンピュータ可読媒体は、本明細書で論じた装置を動作させ、本明細書で論じた実施形態を実装するための命令を含む。コンピュータ可読媒体は、コンピュータ・システムがアクセスできる任意の使用可能な媒体で可能であり、揮発性媒体および不揮発性媒体、取外し可能媒体および取外し不可能媒体の両方を含む。限定ではなく例として、コンピュータ可読媒体はコンピュータ記憶媒体および通信媒体を含むことができる。
【0039】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータのような情報を記憶するための任意の方法または技術で実装した揮発性媒体および不揮発性媒体、取外し可能媒体および取外し不可能媒体が含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリもしくは他のメモリ技術、CD−ROM、DVD(digital versatile disk)もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報の記憶に使用でき、コンピュータ・システムによりアクセス可能な他の任意の媒体が含まれるがこれらに限らない。
【0040】
通信媒体は、一般にコンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを搬送波または他の伝送機構のような変調データ信号で具現化し、任意の情報送達媒体を含む。「変調データ信号」という用語は、1つまたは複数のその特性集合を含むか、信号内の情報を符号化するように変化した信号を意味する。限定ではなく例として、通信媒体には有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、RF、赤外線、および他の無線媒体のような無線媒体が含まれる。以上の何れかの組合せもコンピュータ可読媒体の範囲に含まれるべきである。
【0041】
図2A〜図3Bは、データ・パケットを圧縮または解凍するための動作フローを示す。以下の図2A〜図3Bの説明は、図1の圧縮装置104、108を参照して行う。しかし、図2A〜図3Bを参照して説明するフローを圧縮装置104、108、または圧縮装置104、108の任意の特定の構成要素もしくは構成要素群によって実行されるものに限定しようとはしていないことは理解されよう。さらに、図2A〜図3Bの動作フローは、特定のステップ順序を示すが、他の実装形態では当該動作を別の順序で行い、動作を追加し、且つ/または幾つかの動作を省略してもよいことは理解されよう。
【0042】
図2Aは、着信データ・パケットを圧縮するためにパケット圧縮装置の1つまたは複数の実施形態によって実行できる1組の論理動作を示す。本論理動作では、先ず分析動作202で、第1のパケット圧縮装置104のようなパケット圧縮装置および特に収集エンジン124が、ローカル・ピアからの着信パケットを圧縮できるかどうかを分析する。分析動作202で、宛先のピア・デバイスに対して、第2のパケット圧縮装置108のような受信側のパケット圧縮装置へ正しく送信するために必要な情報に関して当該着信パケットをさらに分析する。
【0043】
暗号化されたもののような或る種のパケットは圧縮できない。なぜならば、効果的とするため圧縮せずにそれらのパケットを、受信側のパケット圧縮装置へ通す必要があり得るからである。分析動作202で、これらの圧縮できないパケットを発見して通過させることができる。分析動作202の1実装形態のさらなる詳細は後で図3Aを参照して論ずる。
【0044】
この時点で、圧縮可能な場合は正しく送信し、その圧縮可能なデータ・パケットを圧縮するために必要な情報を収集することができる。この情報には、パケットが属するトランスポート層ストリームを特定する4つ組の送信ポート、送信アドレス、宛先ポート、および宛先アドレスを含めることができる。圧縮するか否かを判定し、他のパケットと共に集合的な圧縮を編成するために必要な情報をこの時点で得ることもできる。当該情報には、各パケット内部のヘッダの位置、各パケット内部のペイロードの位置、および存在するかもしれない任意のトレーラの位置が含まれる。
【0045】
収集動作204で、着信パケットの圧縮可能性の分析完了後に所与のトランスポート層ストリーム(例えば、TCPまたはUDPストリーム)の圧縮可能パケットを、やはり圧縮可能な当該ストリームの他のパケットと共に圧縮可能バッファ127に収集する。これらの圧縮可能データ・パケットをデータ・セットへ収集することによって、全体のパケットまたはその選択されたセグメント(例えば、ペイロード)を少なくとも1つの単一圧縮可能バッファ127内部で提供することができる。ここで、圧縮可能パケットを、ヘッダ、ペイロード、および、もしあればトレーラに分解することができ、各セグメントは同一ストリームの類似するセグメント・タイプである他のデータ・パケットと共に別々にバッファされる。収集動作204の1実装形態のさらなる詳細は後で図3Bに関連して論ずる。
【0046】
エンドポイント間接続の劣化を最小化するために、パケットを圧縮用にデータ・セットへ収集することは制限される必要があるかもしれない。例えば、少なくとも1つの単一圧縮可能バッファ127が埋まるのを待ってパケットの転送をあまりにも長時間遅らせると、トランスポート層でタイムアウトする恐れがある。従って、この時点で、エンドポイント間接続を劣化させずに圧縮率を望ましいレベルに保つため、当該データ・セットが圧縮を開始すべき点に達したかどうかを判定する。1実装形態に従うこの判定の詳細も後で図3Bに関連して論ずる。
【0047】
次いで、圧縮を開始すべきと決定すると、1組のデータ・パケットまたはセグメントを少なくとも1つの単一圧縮可能バッファ127の内容として圧縮エンジン128に渡す。或る特定の状況下では、例えばその単一パケットの目的が新しいトランスポート層ストリームの開始か既存のトランスポート層ストリームの停止である場合、単一のパケットを圧縮エンジン128に直接渡して即座に圧縮し受信側の圧縮装置に送信してもよい。
【0048】
少なくとも1つの単一圧縮可能バッファ127の内容を圧縮エンジン128に渡した後、その内容を圧縮動作206で圧縮する。この圧縮は、圧縮アルゴリズムが、1度に単一のパケットまたは単一のパケットのセグメントに作用するのではなく、少なくとも1つの単一圧縮可能バッファ127の複数のパケット、または複数のパケットのセグメントに作用して圧縮された出力を生成するという意味で集合的である。複数のデータ・パケットまたは複数のデータ・パケットのセグメントを含む少なくとも1つの単一圧縮可能バッファ127の内容を圧縮する場合、多くのデータに作用して圧縮結果を生成するので、圧縮率を高くすることができる。圧縮されたデータ・セットが圧縮エンジン128によって生成される。異なるアルゴリズムが異なるセグメント・タイプに使用される実施形態の場合は、セグメント・タイプごとに圧縮された1つのデータ・セットがあってもよい。あるいは、ペイロードを圧縮したデータ・セットを、ヘッダを含むデータ・セットと連結し、連結したデータを圧縮してもよい。
【0049】
圧縮されたデータ・セットを生成した後、送信動作208で送信エンジン126は当該圧縮されたデータ・セットを受信側の圧縮装置に送信する。ここで、当該データ・セットはネットワークおよびトランスポート層122(例えば、TCP/IP)に導入され、そこでパケット化され、受信側の圧縮装置との通信セッションを介して送信される。受信側の圧縮装置に送信されているこれらのパケットは、その中の圧縮データ・パケットが配信されているトンネルを提供しているので、トンネル・パケットである。圧縮および送信の例示的な1実装形態の諸工程は後で図4Aに関連してより詳細に説明する。
【0050】
圧縮されたデータ・セットを含む第1のパケット圧縮装置104から送られているデータ・パケットは、パケットが十分な優先度で送信されていることを保証するためのQoSマーキングを有することができる。これらの発信パケットに対するQoSマーキングを、ローカル・ピアから受け取った元のパケットのQoSマーキングに基づいて選択することができる。例えば、着信パケットが特定のQoS優先度を有する場合、そのQoSマーキング、例えばDSCPマーキングをメモリに記憶することができる。受信側の圧縮装置に送信されているトンネル・パケットを、同一のDSCPマーキングにより元のパケットとしてマークして、エンド・ツー・エンド接続に対する圧縮装置の透過性をさらに維持する。代替手段として、発信パケットに対するQoSマーキングを元のデータ・パケットのQoSマーキング以外の何らかの基準に基づいて選択してもよい。
【0051】
図2Bは、着信データ・パケットのデータを解凍し、解凍したデータから元のパケットを再構築するための、圧縮装置の1つまたは複数の実施形態によって実行される1組の論理動作を示す。当該論理動作では、先ず、受信動作210で、第2のパケット圧縮装置108のような受信側の圧縮装置が、第1のパケット圧縮装置104のような送信側の圧縮装置によって送られたトンネル・パケットを受信する。トンネル・パケットの宛先が受信側の装置なので、パケットは受信側の圧縮装置のローカル・ピアへ渡されずにプロトコル層へ渡される。
【0052】
ネットワークおよびトランスポート層142はパケットを受信し、それらをパケット動作212で分解して、送信側の圧縮装置によって以前に生成および送信された、圧縮されたデータ・セットを取り出す。受信エンジン144は、データ・セットを構成する圧縮されたデータを受け取る。ヘッダおよびペイロードを別々に圧縮した実施形態の場合は、当該データ・セットは別々のヘッダのデータ・セットとペイロードのデータ・セットを含む。受信エンジン144はこれらのデータ・セットを解凍エンジン152に渡す。
【0053】
解凍動作214で、解凍エンジン152はデータ・セットを解凍する。送信側の圧縮装置によって実行された圧縮に補完的な解凍が使用される。圧縮されたデータ・セットは、圧縮アルゴリズムによって生成され、利用した圧縮技術を特定するヘッダを含むことができ、それによって解凍エンジン152は、圧縮されたデータ・セットからそのヘッダを読み、適切な解凍アルゴリズムを用いて解凍することができる。さらに、2つの補完的な圧縮装置の間には、どの圧縮アルゴリズムが利用されるかを記述する高レベルの取り決めが適切に存在してもよい。次いで、解凍されたデータ・セットは分配エンジン139に渡され、そこでパケットを再構築することができる。
【0054】
再構築動作216で、分配エンジン139は、ヘッダ、ペイロード、および任意のトレーラを照合することによって元のデータ・パケットを再構築する。ここで、分配エンジン139は、解凍されたデータ・セットのメタデータを参照することによって、ヘッダをその対応するペイロードと照合して、セグメントのオフセットと厳密な長さに基づいてヘッダとペイロードの位置を特定する。ここで、ヘッダの順序はペイロードの順序と一致する。分配エンジン139は、また、必要に応じて、伝送されていないデータを付加することができる。例えば、イーサネット・ヘッダおよびIPSec ESPのトレーラパディングを付加することができる。これらの何れも、分配エンジン139に既知な情報である。
【0055】
元のデータ・パケットを再構築した後、投入動作218で、分配エンジン139は当該元のデータ・パケットを、受信側の圧縮エンジンにローカルなピア・デバイスに向けられたエンド・ツー・エンドのストリームに投入する。当該元のデータ・パケットを既存のエンド・ツー・エンドのストリームに投入することによって、ピア・デバイスは元のパケットを元のヘッダおよびペイロードと共に受け取り、エンド・ツー・エンドの認証は維持される。受信したパケットを解凍し、元の連続データ・パケットを再構築する1つの例示的な実装形態の諸工程は、後で図4Bを参照してより詳細に論ずる。
【0056】
図3Aは、様々な実施形態で実行可能な、図2Aの分析動作202を実行するための例示的な1組の論理動作を示す。本例の目標は、どのパケットが圧縮可能かを決定し、トランスポート層のタイムアウトまたは他の影響が大きい遅延に起因するエンドポイント間接続の劣化を回避しつつ、パケットの効率的な圧縮および送信を可能とするのに必要な情報を取り出すことである。これらの論理動作は例示のために提供したものであり、限定しようとするものではない。様々な代替手段が存在することは理解されよう。
【0057】
本例の論理動作では、先ず、タイプ動作302で、パケットのデータ・リンク・ヘッダをチェックすることによって、収集エンジン124が着信パケットのネットワーク層のタイプを検出する。選択肢として、或る種のタイプのネットワーク層プロトコルのパケット、例えば、IP(Internet Protocol)のパケットのみを圧縮可能としてもよい。その場合、問合せ動作304で、現在のパケットのタイプが圧縮可能かどうかを検出し、圧縮可能でなければ、受渡し動作306で、当該パケットを圧縮せずに受信側の圧縮装置に渡す。
【0058】
問合せ動作304が、パケットが圧縮可能なネットワーク層タイプを有さないことを検出した場合、タイプ動作308で、ネットワーク層ヘッダをチェックすることによって、トランスポート層プロトコルのような、パケットの次のプロトコルをチェックする。問合せ動作310は、この次のプロトコル・タイプが圧縮可能かどうかを検出し、圧縮可能でなければ、受渡し動作306で、当該パケットを圧縮せずに受信側の圧縮装置に渡す。さらなる選択肢として、ネットワーク層より上にある或る種のプロトコル・タイプのパケットのみが圧縮可能であるとしてもよい。例えば、問合せ動作310では、TCPパケット、UDPパケット、IPSec AH(Internet Protocol Security Authentication Header)パケット、および/またはIPSec ESP(Internet Protocol Security Encapsulating Security Payload)パケットをチェックすることができる。例示のため、圧縮可能なタイプがTCP、IPSec AH、およびIPSec ESPであるとして議論を進めるが、他のタイプも圧縮可能でありうることは理解されよう。
【0059】
問合せ動作312で、IPSec AHまたはIPSec ESPに対するセキュリティ・ヘッダが存在するかどうかを判定することによって、パケットがTCP、IPSec AH、またはIPSec ESPであるかどうかを検出する。当該次のプロトコルがTCPである場合、収集エンジン124は、取出し動作314で、4つ組の送信アドレス、送信ポート、宛先アドレス、および宛先ポートを含む、圧縮および送信に必要な情報を取り出す。本例では、圧縮可能なTCPパケットであるパケットに基づいて、ヘッダおよびペイロードの位置、ならびにネットワーク層ヘッダのQoSマーキングを含む追加の情報も取り出される。次いで、収集動作316で、収集エンジン124によって収集される当該パケットが提供される。これは、例えば収集エンジン124のカーネル・モード部からユーザ・モード部へ当該パケットを渡すことによって行われ、この場合、圧縮エンジン128に入力する前に、少なくとも1つの単一圧縮可能バッファ127の待ち行列に当該パケットを入れることができる。次いで、着信データ・パケットが図3Aの論理動作によって処理される。
【0060】
問合せ動作312でパケットがIPSec AHであることが検出された場合、収集エンジン124は、タイプ動作318で、IPSec AHの場合は認証ヘッダであるセキュリティ・ヘッダを調べて、次のプロトコルのタイプをチェックする。次いで、問合せ動作320で、この次のプロトコルがTCPであるかどうかを検出する。TCPでなければ、受渡し動作306で当該パケットを圧縮せずに通過させる。このパケットがTCPパケットである場合、取出し動作314で当該情報を取り出し、収集動作316で当該パケットを少なくとも1つの単一圧縮可能バッファ127に含める。
【0061】
問合せ動作312で当該パケットがIPSec ESPであることが検出された場合、このパケットが暗号化パケットか認証パケットかを検出するための判定が必要となることがある。選択肢として、暗号化パケットが圧縮されず、認証パケットが圧縮されることは可能である。パケットが暗号化または認証されているかどうかを経験的に判定するために、以下の論理動作を実行することができる。
【0062】
収集エンジン124は、署名動作322で、パケットのESP署名が特定のサイズであることを想定する。このサイズは、パケットを送るピア・デバイスのオペレーティング・システムおよびハードウェアのバージョンに依存して様々となろう。例えば、ESP署名は、送信ピアのオペレーティング・システムに応じて、12バイトもしくは16バイト、または他のサイズで可能である。次に、収集エンジン124は、オフセット動作324で、パケットの終端に関する署名のサイズに基づいた、パケットのオフセットを見出す。次に、問合せ動作326で、このオフセット位置にあるプロトコル番号が、当該パケットがTCPパケットであることを示すかどうかを検出する。問合せ動作326で収集エンジン124が、最初の想定した署名のサイズに対して、当該オフセット位置で指定されたプロトコルがTCPでないことを検出した場合、動作フローは直接署名動作336に進む。署名動作336は後で論ずる。
【0063】
パケットがTCPパケットであると収集エンジン124が判定した場合、ステップ動作328で、収集エンジン124はパケット内で1バイト、即ち、ESPトレーラ内のパディングの長さだけ戻る。パディングが正規パターン(regular pattern)、即ち、1、2、等を有する場合、パディング値を検証する試行を検証動作330で行う。認証されたESPデータ・パケットの場合は、4バイトに等しいパケット・サイズ全体を整列させるためにパディングが使用されることが期待される。パディングの詳細は、引用により本明細書に取り込まれるRFC2406に記載されている。
【0064】
問合せ動作332で、パディング値の検証が成功したか失敗したかを検出する。検証が成功した場合、当該パケットがIPSec ESPの認証パケットであると想定でき、取出し動作314で情報を取り出し、収集動作316で当該パケットを少なくとも1つの単一圧縮可能バッファ127に含めることができる。検証が失敗した場合、問合せ動作334で、想定される代替的な署名のサイズに基づいて、この試行が最初であったか2回目であったかを検出する。例示の目的でのみ、これらの論理動作では、2つの想定される署名のサイズで試行したことに留意されたい。追加の署名のサイズが可能である場合、追加の署名のサイズを同様に試行することができることは理解されよう。
【0065】
これが2回目の試行であり両方の想定した署名のサイズでパディング値の検証に失敗した場合、本例では受渡し動作306でパケットを圧縮せずに通過させる。これが最初の試行に過ぎず代替の署名のサイズをまだ試行していない場合は、動作フローは署名動作336へ進む。署名動作336で、収集エンジンは代替の署名のサイズを想定する。次に、オフセット動作338は、パケットの終端に関する想定される代替的署名のサイズに基づいて、パケットのオフセットを見出す。次いで、問合せ動作340で、このオフセット位置にあるプロトコル番号が、当該パケットがTCPであると示すかどうかを検出する。当該パケットがTCPでなければ、本例では、試行用の他の署名のサイズがないので、受渡し動作306でパケットを圧縮せずに通過させる。当該オフセット位置がTCPを示す場合、動作フローは動作328に進み、そこで動作フローは上述のように進む。
【0066】
プロトコル・タイプをTCPと一致させパディング値を検証した後でも、ESPの暗号化パケットを認証パケットと取り違えることは、可能性が低くとも考えられることである。このESPの暗号化パケットを圧縮しようとすることを避けるため、当該パケットを待ち行列に入れておき、次の数個、例えば3〜4個のパケットも調べて、それらのパケットもESPの認証パケットであってESPの暗号化パケットではないことを検証することができる。これらの後続パケットもESPの認証パケットであることが検証されると、待ち行列に入れたパケットを少なくとも1つの単一圧縮可能バッファ127に後続のパケットと共に渡すことができる。なぜなら、それらのパケットも同様にESPの認証パケットであることが殆ど確実であるからである。
【0067】
図3Bは、図2Aの収集動作204と同様に、収集エンジン124によって実行される、連続するパケットまたはそのペイロード・セグメントを少なくとも1つの単一圧縮可能バッファ127に収集するための論理動作の例を示す。本例では、目標は、例えば出来るだけ多くのデータ・パケットまたはそのペイロード・セグメントを少なくとも1つの単一圧縮可能バッファ127に収集し、圧縮エンジン128へ渡されているデータ・セットを出来るだけ大きくすることである。さらなる目標は、例えば、ユーザ・アプリケーションのタイムアウト、待ち時間、および応答速度低下のようなエンドポイント間ストリームに及ぼす悪影響を最小化することである。これらの論理動作も例示のために与えたものであって限定しようとするものではない。これらの動作に対しても様々な代替手段が存在することは理解されよう。
【0068】
本論理動作は先ず問合せ動作342で、現在のパケットがストリームの先頭パケットまたは終点パケットであるかどうかを検出する。例えば、収集エンジン124は、ヘッダをチェックして、SYN、FIN、またはRST TCPフラグが設定されているかどうかを確認することができる。設定されていれば、圧縮動作348で、当該パケットを少なくとも1つの単一圧縮可能バッファ127内にある現在のデータ・セットに追加し、少なくとも1つの単一圧縮可能バッファ127の内容を即座に圧縮エンジン128に送って圧縮および送信し、リモート・ピアへデータ・パケットを送達する際に遅延がさらに発生することを回避する。前述のように、データ・パケットを少なくとも1つの単一圧縮可能バッファ127に追加することには、当該パケットを様々なセグメントに分割し、データ・パケットを最も効率的に圧縮するために異なる圧縮アルゴリズムを異なるセグメント・タイプに適用できるように、各セグメント・タイプを別々にバッファした状態にすることを含めることができる。この分割処理中に、ヘッダおよびペイロードの順序と長さを指定するメタデータも同様に収集およびバッファすることができる。
【0069】
現在のパケットがストリームの先頭パケットでも終点パケットでもない場合は、問合せ動作345で、現在のパケットが長さ零のペイロードを有するかどうかを検出する。TCP ACKパケットのような長さ零のペイロードを有する場合は、当該パケットを少なくとも1つの単一圧縮可能バッファ127内にある現在のデータ・セットに追加する。圧縮動作348で、少なくとも1つの単一圧縮可能バッファ127の内容は、即座に圧縮エンジン128に送られて圧縮および送信され、リモート・ピアへ送達する際に遅延がさらに発生することを回避する。現在のパケットが長さ零のパケットを有しない場合は、動作フローは問合せ動作346に進む。
【0070】
問合せ動作346は、現在のデータ・パケットの順序が、このエンドポイント間ストリームに対して受信したパケットのシーケンス内で狂っているかどうかを検出する。この検出は、最後に待ち行列に収集したパケットのTCPシーケンス番号に対する、現在のパケットのTCPシーケンス番号に基づいて行うことができる。現在のデータ・パケットの順序が狂っている場合は、少なくとも1つの単一圧縮可能バッファ127内部にある現在のデータ・パケットまたはそのペイロード・セグメントのデータ・セットを、圧縮動作354で圧縮するために提供し、収集動作356で現在のデータ・パケットを少なくとも1つの単一圧縮可能バッファ127の新しいインスタンスに追加して、新しい1組のパケットを開始する。これは、シーケンスから大量のパケットを受信側のパケット圧縮装置に送り、それによってエンドポイント間の通信セッションが過度に劣化しうることを回避するために行われる。
【0071】
現在のデータ・パケットの順序が狂っていない場合は、問合せ動作350で、少なくとも1つの単一圧縮可能バッファ127内のデータ・パケットの何れかに対して、TCPタイムアウトのようなタイムアウト閾値に達しようとしているかどうかを検出する。これを、少なくとも1つの単一圧縮可能バッファ127の各データ・パケットを、最初に受け取った時刻を反映するタイムスタンプを記憶し、次いでそのタイムスタンプを現在時刻と比較することによって判定することができる。当該タイムアウト閾値に達しようとしている場合は、圧縮動作348で、現在のデータ・パケットを少なくとも1つの単一圧縮可能バッファ127に追加し、次いで少なくとも1つの単一圧縮可能バッファ127を圧縮エンジン128に渡して圧縮することができる。
【0072】
タイムアウト閾値に達していない場合、問合せ動作352で、現在のデータ・パケットまたはそのペイロード・セグメントを少なくとも1つの単一圧縮可能バッファ127に追加すると、圧縮すべきデータ・セットに対する所定の最大サイズ、例えば64キロバイトを超えるかどうかを検出する。超過する場合は、現在の少なくとも1つの単一圧縮可能バッファ127を、圧縮動作354で圧縮するために提供し、次いで収集動作356で現在のデータ・パケットを少なくとも1つの圧縮可能バッファ127の新しいインスタンスに追加して新しい1組のパケットを開始する。
【0073】
現在のデータ・パケットを追加することにより少なくとも1つの単一圧縮可能バッファ127に対する所定の最大サイズを超過しない場合、収集動作358で、現在のデータ・パケットを少なくとも1つの単一圧縮可能バッファ127に追加する。次いで動作フローは問合せ動作360に進む。動作フローは、また、収集動作356を完了した後に問合せ動作360に進む。問合せ動作360は、このストリームに対して最後のデータ・パケットを少なくとも1つの単一圧縮可能バッファ127の待ち行列に入れて以降、遅延タイマ閾値を超過しているかどうかを検出する。1例として遅延タイマ閾値は固定の3ミリ秒であり、別の例では2つの圧縮装置間のリンクのRRT(Round−Trip Time)に従って調節可能な動的な値である。最後のデータ・パケットに対するタイムスタンプを現在時刻と比較することができる。遅延タイマ閾値を超過した場合、圧縮動作362で、現在のデータ・セットが圧縮エンジン128に提供される。遅延タイマ閾値を超過していない場合は、収集エンジン124は次のデータ・パケットか、収集したパケットを圧縮エンジン128に送ることを引き起こす別のタイマ・イベントを待つ。
【0074】
上述のように、様々な変形を適用することができる。例えば、TCP再試行に着目しない場合は、問合せ動作350を省略することができる。別の例として、遅延タイマは待ち行列の最後ではなく最初のデータ・パケットまたはそのペイロード・セグメントに基づくことができ、この場合、遅延タイマの閾値はTCPタイムアウト閾値とは異なる値に設定される。遅延タイマ閾値を例えば3ミリ秒を上回るか下回る値に設定してもよい。さらに別の例として、問合せ動作345を省略できるように、零のペイロード・パケットをあたかもペイロードを有するかのように扱ってもよい。さらに、単一圧縮可能バッファを、着信パケットのPSH TCPフラグが設定されているかどうかを検出するによって圧縮エンジンに渡してもよく、これは、アプリケーション・レベルの確認が期待される場合はユーザ・アプリケーションの最適化を支援するはずであるが、アプリケーション・レベルの確認が期待されない場合はアプリケーションに対する圧縮率を低下させる恐れがある。
【0075】
図4Aは、1つの例示的な実施形態に従ってデータ・パケットとそのセグメントが圧縮および送信の段階を経て進む、諸工程を示す。最初に、データ・パケットをピア・デバイスから受け取り、圧縮可能なデータ・パケットを1組の連続データ・パケット402として収集する。データ・パケットはヘッダHl〜HNと、対応するペイロードP1〜PNを含む。本実施形態では、別々の圧縮アルゴリズムを各ヘッダ403と各ペイロード405に対して使用してそれぞれに対する圧縮効率を最大化し、従って、この1組の連続データ・パケット402のパケットは1組のヘッダ404と1組のペイロード406を形成するように分割される。さらに、ヘッダとペイロードの各々の厳密な長さと順序を指定するためにメタデータ408を生成することができる。圧縮されたペイロードのデータ・セット410を形成するための圧縮アルゴリズムへ入力される1組のペイロード406は、少なくとも1つの単一圧縮可能バッファ127に記憶される。
【0076】
本例では、次いでメタデータ408および1組のヘッダ404を、圧縮されたペイロードのデータ・セット410と連結して、連結された1組のデータ・セット411を形成する。さらに、本実施形態によると、連結されたデータ・セット411をLZWのような圧縮技術を用いて圧縮して、圧縮されたデータ・セット412を形成する。セグメント・タイプごとに少なくとも1つの単一圧縮可能バッファ127の別々のインスタンスを用いて3つの部分の各々を別々に圧縮し、次いで結果を連結して圧縮されたデータ・セットを形成するような、代替的な圧縮方法も存在することは理解されよう。さらに、連結されたデータ・セット411を送信できるようにヘッダおよび/またはメタデータを未圧縮のままにしてもよいことは理解されよう。
【0077】
本実施形態の圧縮されたデータ・セット412を送信するために、当該データ・セットをパケット化して1組のトンネル・パケット414を形成する。1組のトンネル・パケット414のトンネル・パケットは、それ自体のヘッダH11〜HNNと、対応するペイロードP11〜PNNを含む。次いでネットワーク106を介してこれらのトンネル・パケットを受信側の圧縮装置に送信する。1組のヘッダおよび1組の圧縮されたペイロードに対して別々のトンネル・パケットを生成するような、ヘッダおよび圧縮されたペイロードの代替的な転送方法も可能であることは理解されよう。
【0078】
図4Bは、1つの例示的な実施形態に従って、データ・パケットとそのセグメントが、受信、解凍、および再構築段階を経て進む、諸工程を示す。最初に、1組のトンネル・パケット414を送信側の圧縮装置から受け取る。次に、1組のトンネル・パケット414の各トンネル・パケットを分解して圧縮されたデータ・セット412を再生成する。連結されたデータ・セット411を圧縮して圧縮されたデータ・セット412を生成するこのような実施形態の場合、その圧縮されたデータ・セット412を、次に解凍エンジン152により解凍して、1組のヘッダ404、メタデータ408、および圧縮されたペイロードのデータ・セット410を生成する。次いで、圧縮されたペイロードのデータ・セット410を少なくとも1つの単一の解凍バッファとして解凍エンジン152に提供し、そこで解凍して1組のペイロード406を生成する。
【0079】
次に、これらの解凍された1組のヘッダ404、1組のペイロード406、およびメタデータ408を分配エンジン139に提供する。次に、分配エンジン139はメタデータ408で指定された長さと順序に従って、1組のヘッダ404の各ヘッダを1組のペイロード406のその対応するペイロードと照合する。分配エンジン139は、イーサネット・ヘッダおよびIPSec ESPパディングのような任意のさらなるデータを追加する。当該任意の追加のデータは送信されないが分配エンジン139に既知であり、それにより各ヘッダ403とそれぞれの対応するペイロード405を含む1組の連続データ・パケット402を再構築することができる。次いで、分配エンジン139は1組の連続データ・パケット402の個々のデータ・パケットを、受信側のパケット圧縮装置に対してローカルなピア・デバイスへのエンド・ツー・エンドのストリームに投入する。
【0080】
以上、本発明を構造的特徴および/または方法論的行動に特有な言葉で説明したが、添付の特許請求の範囲で定義した主題は必ずしも上述の特定の特徴または行動に限定されないことは理解されよう。そうではなく、上述の特定の特徴および行動は諸請求項を実装する形態の例として開示してある。

【特許請求の範囲】
【請求項1】
データ・パケット送信を圧縮する方法であって、
エンドポイント(102、110)間の第1の単一通信セッション(113)のバイト・ストリーム内で連続し、それぞれがヘッダ(403)とペイロード(405)を含む複数の連続データ・パケット(402)を第1の組に収集するステップ(204)と、
前記第1の組の連続データ・パケット(402)のうち少なくともペイロード(405)を少なくとも1つのバッファ(127)にグループ化するステップ(348)と、
前記少なくとも1つのバッファ(127)の少なくとも複数のペイロード(405)を単一のデータ・セットとして圧縮して(206)、圧縮されたデータ・セット(410)を生成するステップと、
前記連続データ・パケット(402)の前記圧縮されたデータ・セット(410)およびヘッダ(403)をパケット化して第2の組のデータ・パケット(414)を形成するステップであって、前記第2の組のデータ・パケット(414)は前記第1の組(402)のヘッダ(403)とは異なるヘッダ(415)を有するステップと、
前記第2の組のデータ・パケット(414)をエンドポイント(104、108)間の第2の単一通信セッション(115)を介して送信するステップ(208)と
を含むことを特徴とする方法。
【請求項2】
前記第1の組のデータ・パケットごとに、前記ヘッダを前記ペイロードから分離するステップと、
前記ヘッダを前記圧縮されたデータ・セットと連結して、連結されたデータ・セットを生成し、前記連結されたデータ・セットを圧縮して前記第2の組のデータ・パケットが1組の圧縮されたヘッダと1組の圧縮されたペイロードとを含むようにするステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
データ・パケットを複数の追加の通信セッションから受け取るステップをさらに含み、前記複数の連続データ・パケットを前記第1の組へ収集するステップは、エンドポイント間の前記第1の単一通信セッションから受け取ったデータ・パケットを特定するステップを含むことを特徴とし、前記第1の単一の通信セッションとは異なるエンドポイント間の単一通信セッションから受け取ったデータ・パケットを特定するステップと、前記異なる単一の通信セッションから受け取った前記データ・パケットを前記第1の組とは異なる組に含めるステップとをさらに含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記1組の連続データ・パケットのうち少なくともペイロードを前記単一圧縮可能バッファにグループ化するステップは、ペイロードを前記単一圧縮可能バッファに追加することを停止し、前記単一圧縮可能バッファの圧縮を開始するかどうかを判定するステップを含むことを特徴とする請求項3に記載の方法。
【請求項5】
ペイロードの追加を停止するかどうかを判定するステップは、少なくとも1つの閾値に到達したかどうかを検出するステップを含み、前記1つの閾値は、トランスポート層タイムアウト、単一圧縮可能バッファの最大サイズ、および前のペイロードを前記単一圧縮可能バッファに追加した時点からの所定の遅延のうち少なくとも1つを含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記複数の連続データ・パケットを前記第1の組に収集するステップは、
エンドポイント間の前記第1の通信セッションの任意のデータ・パケットがセキュリティ・ヘッダを含むかどうかを判定するステップと、
エンドポイント間の前記第1の通信セッションのデータ・パケットがセキュリティ・ヘッダを含む場合、前記セキュリティ・ヘッダを伴う前記データ・パケットが暗号化されたデータ・パケットか認証されたデータ・パケットかを判定するステップと、
前記データ・パケットが認証されたデータ・パケットであると判定された場合は、前記データ・パケットを前記第1の組に含め、前記データ・パケットが暗号化されたデータ・パケットであると判定された場合は、前記データ・パケットを圧縮せずにエンドポイント間の前記第1の通信セッションを介して転送するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記受け取ったデータ・パケットの何れかがセキュリティ・ヘッダを含むかどうかを判定するステップは、前記パケットがIPSec ESPパケットかどうかを検出するステップを含み、前記パケットがIPSec ESPパケットである場合は、前記IPSec ESPパケットが暗号化されたパケットであるか認証されたパケットであるかを、想定したIPSec ESP署名のサイズを用いて前記パケットの検証を試行することによって判定するステップを含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記第1の組の連続データ・パケットを収集するステップは、各データ・パケットを分析して前記パケットが送信制御プロトコルのパケットであるかどうかを検出するステップと、送信制御プロトコルのパケットであるデータ・パケットを前記第1の組に含めるステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記第1の通信セッションの前記連続データ・パケットの少なくとも1つのヘッダから優先度設定を取得するステップと、
前記第2の組のデータ・パケットの少なくとも1つのヘッダに対して、前記取得した優先度設定を指定するステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項10】
動作を実装時に実行する命令を自身の上に符号化した形で含むコンピュータ可読媒体であって、
それぞれがヘッダ(415)とペイロード(417)を含む、エンドポイント(104、108)間の第2の通信セッション(115)の複数のデータ・パケット(414)を受け取るステップ(210)と、
前記受け取ったデータ・パケット(414)を分解(212)して、エンドポイント(102、110)間の第1の単一通信セッション(113)のバイト・ストリーム内で連続する1組の連続データ・パケット(402)のヘッダ(403)を取り出し、エンドポイント(102、110)間の前記第1の単一通信セッション(113)の前記1組の連続データ・パケット(402)の圧縮されたペイロード(410)を含む単一の圧縮されたデータ・セット(411)を取り出すステップであって、前記1組の連続データ・パケット(402)の前記ヘッダ(403)は前記受け取った複数のデータ・パケット(414)の前記ヘッダ(415)とは異なるステップと、
前記圧縮されたデータ・セット(411)を解凍(214)して、前記1組の連続データ・パケット(402)の前記ペイロード(405)を取り出すステップと、
前記1組の連続データ・パケット(402)の前記ヘッダ(403)を前記1組の連続データ・パケット(402)の解凍したペイロード(405)と照合することによって、前記1組の連続データ・パケット(402)を再構築するステップ(216)と、
前記再構築した1組の連続データ・パケット(402)を前記第1の単一通信セッション(113)に所定の順序で投入するステップ(218)と
を含むことを特徴とするコンピュータ可読媒体。
【請求項11】
各連続データ・パケットのヘッダは送信制御プロトコルのヘッダであることを特徴とする請求項10に記載のコンピュータ可読媒体。
【請求項12】
前記複数のデータ・パケットは、前記第1の通信セッションからのヘッダとペイロードのシーケンシャルな順序を指定するメタデータを含み、前記1組の連続データ・パケットを再構築するステップは、前記メタデータに従ってヘッダおよびペイロードを取得するステップを含むことを特徴とする請求項10に記載のコンピュータ可読媒体。
【請求項13】
前記所定の順序は、エンドポイント間の前記第1の単一通信セッションの前記1組の連続データ・パケットの順序と一致することを特徴とする請求項10に記載のコンピュータ可読媒体。
【請求項14】
データ・パケットを圧縮するための装置(104)であって、
少なくとも1つのネットワーク接続機器(112)と、
第1の単一通信セッション(113)のエンドポイント(110)宛ての着信パケットを前記少なくとも1つのネットワーク接続機器(112)を介して受け取り、前記着信パケットを、前記第1の単一通信セッション(113)のバイト・ストリーム内で連続しており、圧縮し送信すべきである第1の組の連続データ・パケット(402)に含めることが可能かどうかを判定し、前記第1の組の連続データ・パケット(402)の少なくともペイロード(405)を少なくとも1つのバッファ(127)に提供する、収集エンジン(124)と、
前記少なくとも1つのバッファ(127)の少なくとも複数のペイロード(405)を単一データとして圧縮して、圧縮されたデータ・セット(410)を形成する圧縮エンジン(128)と、
前記圧縮されたデータ・セット(410)、および前記第1の組(402)の前記連続データ・パケットのトランスポート層ヘッダ(403)を第2の組のデータ・パケット(414)にパケット化し、前記第2の組(414)を第2の通信セッション(115)上で別の装置(108)に送信する送信エンジン(126)と
を備えることを特徴とする装置。
【請求項15】
着信パケットを前記少なくとも1つのネットワーク接続を介して前記第2の通信セッション上で他の装置から受け取り、前記着信パケットを分解して前記トランスポート層ヘッダおよび圧縮されたデータ・セットを取り出す受信エンジンと、
前記圧縮されたデータ・セットを受け取り、前記圧縮されたデータ・セットを解凍して前記第1の組の連続データ・パケットのペイロードを取り出す解凍エンジンと、
ヘッダおよび解凍されたペイロードを取得して、前記第1の組の連続データ・パケットを、ヘッダを解凍したペイロードと照合することによって再構築する分配エンジンと
をさらに備えることを特徴とする請求項14に記載の装置。
【請求項16】
前記分配エンジンは前記再構築された第1の組の連続データ・パケットを前記エンドポイントとの第2の通信セッションに投入することを特徴とする請求項14に記載の装置。
【請求項17】
前記収集エンジンは、
何れかの着信データ・パケットがセキュリティ・ヘッダを含むかどうかを判定するステップと、
着信データ・パケットがセキュリティ・ヘッダを含む場合は、前記セキュリティ・ヘッダを伴う前記着信データ・パケットが暗号化されたパケットか認証されたパケットかを判定するステップと、
認証されたデータ・パケットを前記第1の組に含め、一方で前記暗号化されたパケットは圧縮せずに通過させるステップと、
によって前記連続データ・パケットを前記第1の組に収集することを特徴とする請求項14に記載の装置。
【請求項18】
前記収集エンジンが前記着信データ・パケットの何れかがセキュリティ・ヘッダを含むかどうかを検出するステップは、前記パケットがIPSec ESPパケットかどうかを検出し、前記パケットがIPSec ESPパケットである場合は、前記収集エンジンは、前記IPSec ESPパケットが暗号化されたパケットか認証されたパケットかを、想定したIPSec ESP署名のサイズを用いて前記パケットの検証を試行することによって判定するステップを備えることを特徴とする請求項17に記載の装置。
【請求項19】
前記収集エンジンは、着信データ・パケットを、各データ・パケットを分析して前記パケットが送信制御プロトコルのパケットかどうかを検出し、送信制御プロトコルのパケットであるデータ・パケットを含めることによって、前記第1の組の連続データ・パケットに収集することを特徴とする請求項14に記載の装置。
【請求項20】
前記収集エンジンは、前記第1の通信セッションの前記連続データ・パケットのヘッダから優先度設定を取得し、前記送信エンジンは、前記第2の組のデータ・パケットのヘッダに対して、前記取得した優先度設定を指定することを特徴とする請求項14に記載の装置。

【図1A】
image rotate

【図1B】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4A】
image rotate

【図4B】
image rotate


【公表番号】特表2010−529704(P2010−529704A)
【公表日】平成22年8月26日(2010.8.26)
【国際特許分類】
【出願番号】特願2010−506366(P2010−506366)
【出願日】平成20年3月25日(2008.3.25)
【国際出願番号】PCT/US2008/058138
【国際公開番号】WO2008/134157
【国際公開日】平成20年11月6日(2008.11.6)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】