説明

ネットワーク・サーバ用の事前パケット化キャッシングの方法及び装置

【課題】ネットワーク・サーバ上に記憶された、クライアント・ノードの要求データをキャッシュする方法及び装置を提供すること。
【解決手段】 本方法及び装置は、事前パケット化レベルでサーバ応答をキャッシュし、それにより、パケット処理のオーバヘッドを最小限に抑え、ディスク・ファイルの読取りを減らし、ディスク・バッファからネットワーク・インターフェースへのメモリのコピーを少なくすることによって応答時間を短縮するステップを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信ネットワーク上の情報を管理する分野に関し、より詳細には、パケット交換通信ネットワーク環境内の情報のキャッシングに関する。
【背景技術】
【0002】
Webサーバ、ビデオ・サーバ、ファイル・サーバなど典型的なネットワーク・サーバ、ならびにローカル・オペレーション・システムは、クライアント情報要求またはクライアント・データ要求にできるだけ迅速に応答するように設計されている。キャッシング、すなわち次の要求を見越して、最近要求のあった情報、例えばデータ・ファイルをメモリ・バッファに記憶することは、ネットワーク・サーバ及びローカル・オペレーション・システムによってサーバ応答時間を短縮するために使用される一般的な手法である。
【0003】
例えば、Webサーバは、最近要求されたHTMLコンテンツを、ディスク上ではなく主記憶装置バッファ内に記憶することによって、ディスク・キャッシュを多用する。この種の記憶域の構成は、参照局所性の原則に従ってうまく働く。すなわち、最近記憶されたコンテンツは、すぐにまた要求される可能性が高い。
【0004】
一般的に、イーサネット型ローカル・エリア・ネットワーク(LAN)やインターネットなどのパケット交換通信ネットワークは、ホスト/ホスト環境またはサーバ/クライアント環境で使用される。その情報が次回要求されたときに容易にアクセスされスループットが向上するように、通常はサーバによって取り出し済みの、以前に要求された情報がキャッシュされる。しかし、要求されたデータがキャッシュされていたとしても、同一またはほぼ同一なデータに対する新しい要求があるたびに、サーバが、送信のためにネットワーク・インターフェースに送るべき新しいパケット(ペイロードとしてキャッシュ済みデータを含む)を作成せざるを得なくなる。
【0005】
例えば、Webサーバの場合、既知のシステムは、URL解決(例えばURLの、ディスク上のファイルへのマッピング)の結果をキャッシュし、HTTP 200 OK応答といったHTTP応答及び最終変更日付などを含み得るHTTP応答ヘッダを、文書ごとにキャッシュする。従って、これらの既知のシステムでは、静的コンテンツ(例えばHTTP応答ヘッダ及び本体)のキャッシングを実行することができる。静的コンテンツは通常、すべてのクライアントについて同じコンテンツである。
【0006】
典型的なサーバ/クライアント・パケット交換通信ネットワークでは、クライアントはデータ要求をサーバに送信することができる。クライアント要求に基づいて、サーバはハード・ドライブまたはフロッピー・ディスクからデータ・ファイルを取り出し、データ・ファイルをパケットに分割し、そのパケットをクライアントへ応答として送信する。パケットを送信する前に、サーバは各パケットごとに1つずつメモリ・バッファを割り当てて、応答データを一時的に格納する必要がある。このプロセスでは、サーバがハード・ドライブまたはフロッピー・ディスクからのデータ・ファイル全体をローカル・メモリにコピーし、そのデータをパケット化し、各パケットを別々のバッファに記憶する必要がある。要求された情報のすべてのバイトをヘッダ情報と共にメモリ・バッファ内にコピーするには、著しく時間がかかる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
従って、前述のキャッシング技法によってパケット交換通信ネットワークなどにおける応答時間を短縮することができるが、ネットワーク・サーバの平均応答時間を短縮し、パケット交換ネットワーク内のスループットを改善する方法及び装置が依然として求められている。
【課題を解決するための手段】
【0008】
ネットワーク・サーバのハードウェアを必ずしも増強することなく、パケット交換ネットワーク・サーバの応答の平均応答時間を短縮し、比較的多くのクライアント・ノードがネットワーク・サーバに接続できるようにスループットを改善する方法及び装置に関する本発明によって、従来技術における様々な欠点は、対処される。
【0009】
本発明の一態様によれば、サーバ応答データをキャッシュする方法が提供される。この方法は、サーバからデータを取り出すステップと、取り出したデータを、静的コンテンツ及び動的コンテンツを含む複数の応答パケットに分割するステップと、少なくとも1つの応答パケットの動的フィールドを所定の固定値に設定するステップと、少なくとも1つの応答パケットの動的フィールド及び静的フィールドをメモリ・バッファにキャッシュするステップと、メモリ・バッファからの得られた少なくとも1つの応答パケットを、通信ネットワークを介して送信するためにネットワーク・インターフェースに供給するステップとを含んでいる。
本発明の諸態様の教示内容は、以下の詳細な説明を添付の図面と共に考察すれば容易に理解することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の諸態様に従って動作する通信ネットワーク・アーキテクチャの機能ブロック図である。
【図2A】本発明の諸態様に関連して使用されるサンプルTCP/IPスタックを示す図である。
【図2B】図1の通信ネットワーク・システムによって生成し、図2AのTCP/IPプロトコルを使用して送信することができる、サンプルHTTP応答パケットを示す図である。
【図3】本発明の諸態様による方法の流れ図である。
【発明を実施するための形態】
【0011】
理解を容易にするために、諸図に共通する同じ要素を示すのに、可能な限り同じ参照番号を繰り返し使用する。
本発明の諸態様は、以下では主として、HTMLページを送信するWebベースのサーバ向けのTCP/IPプロトコル群の文脈で論じる。しかし、本発明の諸態様の方法を、ストリーム・ビデオを送信するためのユーザ・データグラム・プロトコル(UDP)(トランスポート)など他のパケット交換トランスポート/ネットワーク・プロトコルにも容易に適用できることが理解されよう。また、これらの例は、IP v4プロトコルに関して説明してあるが、本発明の諸態様を他のIPバージョン、例えばIP v6にも容易に適用することができる。
【0012】
本発明の諸態様では、クライアント・ノード要求への応答パケットを送信する前に、要求された情報の既知の静的フィールド及び動的フィールドを所定の形式でキャッシュしておくことによって、サーバ応答時間を改善する。静的コンテンツは通常、すべてのクライアントに対して同じコンテンツである。また、動的コンテンツは通常、クライアントまたはクライアント要求ごとに異なるコンテンツである。従って、本発明の諸態様により、要求されるたびにすべてのバイトの応答データを読み取り、取り出す必要が減り、これにより、応答時間が改善され、クライアント要求あたりのスループットが増大する。
【0013】
図1に、本発明の実施形態を利用できるデータ通信ネットワーク100を示す。図1は、可能な複数のデータ通信ネットワーク構成の一変形形態を示している。例えば、図1のネットワーク100は、任意選択で、複数のホスト・サーバ106及び/またはいくつかのクライアント・ノードもしくはクライアント・コンピュータ102を含む。わかりやすくするため、1つのホスト・サーバ106と1つのクライアント・コンピュータ102だけが示してある。
【0014】
データ通信ネットワーク100は、クライアント・ノード(またはクライアント・コンピュータ)102とホスト・サーバ106を含んでおり、これらは従来のパケット交換データ通信ネットワーク104(例えばインターネット、広域ネットワーク(WAN)、イーサネット(LAN)、またはWi−Fiネットワークなどの無線ネットワーク)を介して通信する。ホスト・サーバ106は、アプリケーション・サービス及びデータ・サービス、ならびにその他のリソース・サービスをクライアント・コンピュータ102に提供するために、ネットワーク・インターフェース・カード(NIC)105を介してネットワーク104に結合されている。また、クライアント・コンピュータ102は、表示装置132にも接続されている。
【0015】
ホスト・サーバ106は、少なくとも1つの中央処理装置(CPU)110、サポート回路112、及びメモリ114を含んでいる。CPU110は、従来から入手可能な1つまたは複数のマイクロプロセッサを含むことができる。サポート回路112は、CPU110の機能を向上させるために使用される周知の回路である。こうした回路には、キャッシュ・メモリ、電源、クロック回路、入出力(I/O)回路などが含まれ得るが、それだけに限定されない。メモリ114は、CPU100に結合されており、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、取外し可能ディスク・メモリ、フラッシュ・メモリ、及びこの種のメモリの様々な組合せを含むことができる。メモリ114は主記憶と呼ばれることがあり、その一部に、データ・ファイルを求めるクライアント要求に応答してパケット形式の取り出し済みデータを一時的に格納するためのキャッシュ・メモリまたはメモリ・バッファ115の記憶場所を含むことができる。
【0016】
また、メモリ114は通常、サーバ106のオペレーション・システム・ソフトウェア116と、様々な形態のアプリケーション・ソフトウェア108及びデータ118も記憶する。オペレーション・システム116は、サン・マイクロシステムズ社のSolaris、IBM社のAIX、ヒューレット・パッカード社のHP−UX、レッドハット・ソフトウェア社のLinux、マイクロソフト社のWindows2000など、市販のいくつかのオペレーション・システムのうちの1つとすることができる。
【0017】
アプリケーション・ソフトウェア108には、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)のプロトコル群を使用して「Webサイト」及び「Webページ」にアクセスし、それを記憶し、更新し、あるいはそのいずれかを行う任を負う、様々なソフトウェア・プログラムを含むWebサーバ・ソフトウェア120が含まれ得る。このアプリケーション・ソフトウェアはまた、ファイル転送プロトコル(FTP)アプリケーション・プロトコルを使用して、データ・ファイルを記憶し、編成し、取得し、更新する任を負うファイル・サーバ・ソフトウェア・プログラムを含むこともできる。このアプリケーション・ソフトウェアはさらに、ユーザ・データグラム・プロトコル(UDP)トランスポート・プロトコルを使用して、ビデオ・データ・ファイルを記憶し、編成し、取得し、送信するためのビデオ・サーバ・ソフトウェアを含むこともできる。一般に、Webサーバ・ソフトウェア120は、ホスト・サーバ106上に記憶されたデータ及び情報に対する、「ブラウザ」を介した、あるいはデータを取り出し転送するための他のデバイスを介した、リモート・コンピュータ(例えばクライアント・コンピュータ102)へのアクセスを提供する。Webサーバ・ソフトウェア120を図に示してはいるが、これには前に述べたように、ファイル・サーバ・ソフトウェア及び/またはビデオ・サーバ・ソフトウェアも含まれることが理解されよう。
【0018】
クライアント・コンピュータ102は、中央処理装置(CPU)126、サポート回路124、及びメモリ128を含んでいる。クライアント・コンピュータ102は、ブラウザを実行でき、またネットワーク104に接続できるどんなコンピュータでもよい。このようなクライアント・コンピュータには、パーソナル・コンピュータ、携帯情報端末(PDA)、無線デバイスなどが含まれる。サポート回路124は、CPU126の機能を向上させるために使用される周知の回路である。このような回路は、キャッシュ、電源、クロック回路、入出力インターフェース回路などを含むが、それだけに限定されない。メモリ128は、RAM、ROM、フラッシュ・メモリ、取外し可能ディスク記憶装置などのうちの1つまたは複数を含むことができる。メモリ128は、アプリケーション・ソフトウェア136やオペレーション・システム・ソフトウェア134など様々なソフトウェア・パッケージを記憶することができる。アプリケーション・ソフトウェア136には、種々のプログラムが含まれ得、それにはWebブラウザ・アプリケーション・ソフトウェア130が含まれるが、それだけには限定されない。また、アプリケーション・ソフトウェア136には、クライアント・ベース・ファイル管理ソフトウェアやビデオ管理ソフトウェアも含まれ得る。
【0019】
Webブラウザ130は、ワールド・ワイド・ウェブあるいは他の通信ネットワークから、HTMLその他のWebページをユーザが検索し表示できるようにする、どんなソフトウェア・アプリケーションでもよい。さらに、Webブラウザ130は、Netscape NavigatorやMicrosoft Internet Explorerなどいくつかの市販のブラウザの1つとすることができるが、それだけには限定されない。同様に、クライアント・コンピュータ102は、サポート回路124(すなわち入出力インターフェース回路)を介して表示装置132に結合されている。表示装置132は、データまたは画像を表示するどんなスクリーン型の表示装置(すなわちCRT(ブラウン管)、プラズマ・ディスプレイ、液晶ディスプレイ(LCD)など)でもよい。
【0020】
図1に関して説明したような通信システムでは、データ・パケットを送信し受信するためのネットワーク・プロトコルを使用することができる。ネットワーク・プロトコルは通常、階層的に開発されており、各層が通信の異なる面を担当する。一例として、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)などのプロトコル群は、様々な層における異なるプロトコルを組み合わせたものである。図2Aに示すように、TCP/IPは通常、4階層システム200と考えられている。
【0021】
具体的には、データ・リンク層(またはネットワーク・インターフェース層)202は通常、OS116内にデバイス・ドライバを含み、またサーバ106のサポート回路124内に対応するネットワーク・インターフェース・カード(NIC)105を含む。これらは全体として、通信メディアとの物理的なインターフェースに関する、ハードウェアのすべての詳細を扱う。ネットワーク(またはインターネット)層204は、ネットワーク周りでのパケットの移動を扱う。例えばパケットの経路指定がここで行われる。例えば、IPは、TCP/IPプロトコル群のネットワーク層を提供する。次に、トランスポート層206が、その上位のアプリケーション層208のために、2つのホスト間、あるいはホストと1つ(または複数の)クライアント・コンピュータの間のデータの流れをもたらす。
【0022】
TCP/IPプロトコル群では、少なくとも2つの異なるトランスポート・プロトコル、すなわちTCP及びユーザ・データグラム・プロトコル(UDP)が存在する。TCPは、2つのホスト間、あるいはホストとクライアント・ノード(例えばクライアント・コンピュータ)の間の信頼性のあるデータの流れをもたらす。TCPは、その下位のネットワーク層204のために、アプリケーション層208から渡されたデータを適切なサイズの部分またはパケットに分割し、受け取ったパケットの応答を返し、また相手側パケットの応答を返すためのタイムアウトを設定するなどする。この信頼性のあるデータの流れはトランスポート層206によってもたらされるので、アプリケーション層208は通常、これらの詳細をすべて無視することができる。
【0023】
一方、UDPは、それよりはるかに単純なサービスをアプリケーション層208に提供する。UDPは、一方のホストから他のホストへ、あるいはホストからクライアント・ノード/コンピュータへ、データグラムと呼ばれるデータ・パケットを単に送信するが、データグラムが相手側に届く保証はない。信頼性が所望される場合は、アプリケーション層208がそれを付加しなければならない。
【0024】
最後に、アプリケーション層208は、特定のアプリケーションの詳細を扱う。ほとんどすべての実装形態で提供されている共通のTCP/IPアプリケーションが数多く存在する。例えば、ファイル転送プロトコル(FTP)及びハイパーテキスト転送プロトコル(HTTP)がある。アプリケーション層208は、ネットワークを横切るデータの移動には関係しない。下位の3つの層は通常、アプリケーション層208に関する情報を受け取らず、通信のすべての詳細を扱う。全般的に、アプリケーション層208は通常、ユーザ・プロセスであり、一方、下位の3つの層は通常、OS116内に実装される。
【0025】
従って、TCP/IPプロトコル・スタックは、上述したように、様々な層を含むように設計されている。既知のシステムは、各層内ですべての情報を明確に分離しておき、その層に関連しない面へのアクセスは提供しない。例えば、アプリケーション層とIP層は、パケットの断片化に関する情報を共用しない。ある種のデータをどのようにパケット化すべきかに関する情報は、IP層に残されている。アプリケーション層上では、その知識は知られないはずである。その結果、例えば、クライアント・ノードのデータ・ファイル要求を満たす必要があるたびに、ホスト・サーバ106が、取り出されたデータ・ファイルからすべてのバイトをコピーし、HTTP応答パケットを作成する必要がある。これには、かなり長い時間がかかる。
【0026】
本発明の様々の側面の内でもとりわけ、下位層の情報を利用し、それを転送することにより、同等以下のコンピュータ・ハードウェアを使用しても、比較的迅速な応答が可能になることが、本発明によって明らかになった。このような情報は、TCP/ΙΡプロトコル・スタックの上位層に送られる。従って、本発明の諸側面によれば、ネットワーク層204はデータをどのようにパケット化するかに関する情報を有するので、この層から知識が入手される。この情報は、アプリケーション層208に渡され、事前に適用され、その後にこうした情報が応答として送信される。従って応答データは、事前パケット化レベルでキャッシュされる。
【0027】
このパケットは、ソケット・インターフェースを使用してクライアント・ノードに送られる。ソケット・インターフェースは、クライアントとネットワーク・サーバの間の接続についての抽象概念である。ソケットの内部では、サポートできる最大パケット・サイズに関してネットワークが制限を有することがあるので、データは適切なサイズに断片化される。このサイズは、ネットワークのタイプごとに異なる。例えば、イーサネットなどのローカル・エリア・ネットワーク(LAN)では、ペイロード・パケットあたり1500バイトしか許容されない。
【0028】
図1のデータ通信ネットワーク100を利用できる1つのWebサーバ実施形態は、おそらくWebブラウザ・ソフトウェア130を使用するブラウザを介して、データ・ファイルを求めるクライアント・ノード(コンピュータ)102要求に応答して、図2Bに示したようなHTTP応答パケット250を生成できるサーバ106を含んでいる。この具体的な例のパケット250は、代替案も企図されているが、イーサネット・ヘッダ252、IPヘッダ254、TCPヘッダ256、HTTPヘッダ258、及びHTTPペイロードまたはHTTP応答本体260を含んでいる。
【0029】
例えば、サンプルHTTP応答パケット250は約1500バイトのIPパケットである。このパケットは、上述のヘッダとHTTP応答本体260を含んでいる。IPヘッダ254は、約20バイトを含む。TCPヘッダ256は、約20バイトを含む。残りの部分は、約1460バイトである。HTTPヘッダは、テキスト・ベースなので、より大きいサイズである。最初のパケットだけがHTTPヘッダを含むことになる。HTTPパケットは、複数のIPパケットに分割される。HTTPヘッダが1500バイトより大きい場合は、ヘッダをいくつかの部分に分けて複数のパケットに格納することができる。残りのHTTP本体260は、一連のIPパケットに分けられ、1500バイトからいくつかのヘッダ・バイト数を引いた断片に分割される。
【0030】
動作においては、本発明の一態様によれば、図3の流れ図に示したように、図1の通信システム100に関して、クライアント要求セッション300が提供され、これはステップ302で開始する。ステップ304で、サーバ106は、例えばクライアント・ノード102から要求を受け取る。ステップ306で、サーバ106は、この要求を構文解析してどのデータ・ファイルが要求されているかを判定することによって、この要求を処理する。ステップ308で、応答データ・ファイルがメモリ114から取り出される。
【0031】
ステップ310で、このデータ・ファイルがセグメントまたは事前パケットに分割される。ステップ312で、各セグメントにヘッダ情報が付加される。本発明の諸態様によれば、ステップ314で、セグメントごとのヘッダ情報が、TCP/IPスタック200の下位レベル、この例ではネットワーク層またはIP層204に送られる。
【0032】
ある種の情報は、どのデータ要求でも同じであり、特に静的コンテンツがそうであり、従って、あるパケット形式にとどまることができ、バイト・レベルでキャッシュし直す必要がない。従って、ディスク上のHTMLページなどの静的コンテンツの場合、おそらく以下のフィールドを除き、応答内容は毎回ほぼ同じになる。
イーサネット宛先MACアドレス(ただし、固定LANゲートウェイの場合は不変になる)
IP宛先アドレス
TCP宛先ポート
TCPシーケンス番号
TCPチェックサム(含まれる場合):毎回更新する必要がある
例えば、データ要求の特定のTCPヘッダに関連する追加の動的フィールドがあり得るが、これらは応答のコピーを、ヘッダの組合せごとに1つずつ、N個キャッシュすることによって対処することができる。例えば、あるクライアントが、TCPタイムスタンプ・ヘッダを使用して、往復伝搬時間を推定することがある。サーバは、そのクライアントについてはこのようなヘッダを含まなければならないが、それ以外のクライアントについてはその必要はない。従ってサーバは、このヘッダをもつ応答と、もたない応答の(少なくとも)2つのバージョンのパケット化された応答をキャッシュすることになる。タイムスタンプ・フィールドは、更新する必要のある動的フィールドである。一般にこのことは、応答ヘッダの可能なあらゆる組合せに当てはまる。このようなTCPヘッダはしばしば任意であり、それを使用するか否かは、クライアントがそれをサポートするかどうかによる。
【0033】
一例では、各クライアントは、ローカルの企業イーサネット・ネットワーク内で、(データ・リンク層202からの)異なるMACアドレスを有することになる。しかし、異なるリモート・ネットワークが存在する場合は、イーサネット・スイッチを通過する接続は、そのスイッチのMACアドレスである。従って、リモート・ネットワークの場合、サーバ106から見ると、すべてのパケットが同じイーサネットMACアドレスからやってきており、そのアドレスは固定あるいは不変である。この知識を使用して、下位のデータ・リンク層202からこれはイーサネット・ネットワークであるとシステムが認識した場合、最終的にどの位のデータを1つのパケットに入れることができるかがわかる。これは、データ・ファイルを分割するのに必要な情報である。
【0034】
従って、ステップ316で、上述のものを含む動的なヘッダ・フィールドは、次回の要求に備えて、事前パケット化の形でキャッシュすることができるように、所定の値に設定される。任意選択で、この特定の例において、TCPトランスポート・プロトコルを使用した場合、TCPチェックサム値がTCPヘッダに含まれる。ステップ318で、TCPチェックサムの有無がチェックされ、システムがTCP/IPプロトコルを使用しているかどうかが示される。応答がYesの場合、ステップ320で、TCPチェックサム値が計算される。次いでこの方法は、ステップ322に進む。応答がNoの場合は、トランスポート層206がUDPプロトコルを使用している可能性が高いことを示しており、ステップ322に直接進む。ステップ322で、その結果得られる、各ヘッダを含む応答パケット250内の静的フィールドと動的フィールドがキャッシュされる。次いでステップ324で、応答パケットが、データ・ファイルを要求したクライアント・ノード102に送信される。
【0035】
ステップ326では、同じまたは同様のデータを求める、同じまたは異なるクライアント・ノードからの第2の要求が行われる。情報及びヘッダ・フィールドの一部はキャッシュされているので、そのデータをバイトごとに再度取り出す必要はない。そうではなく、純粋に新しい情報だけを更新すればよい。具体的には、ステップ328で、キャッシュ・メモリのヘッダ動的フィールドが、ヘッダ・フィールド情報の変更があった場合にそれを示す新規の所定の値に更新される。さらに、ステップ330で、TCPチェックサムが含まれるかどうかが問合せされる。すなわち、ステップ320が既に実行されていて、TCPチェックサム値が既にキャッシュ済みのパケットに含まれていた場合、ステップ332が実行されて、TCPチェックサム値が増分的に調整される。「増分的に」とは、パケットのすべてのバイトを足し合わせ、チェックサムを含めすべてのバイトの合計が、0か、1か、あるいはそれ以外の何らかの所定の固定値であるような、2の補数の合計を計算することを意味する。ステップ334で、データ・ファイルを要求している第2のクライアント・ノードに新規の応答パケットが送られる。ステップ336で、この方法は終了する。この処理をステップ336で終了せずに、継続することもできることが理解されよう。
【0036】
通常のネットワークには、サポートできる最大パケット・サイズに関する制限がある。ネットワークが異なれば、制限も異なる。例えば、無線ネットワークには、約2300バイトの制限がある。ATMネットワークは、64バイトのセルを有する。IP層上では、標準の故に、IPパケットに対して65536バイトの最大サイズが存在する。しかし、下位層部分が既に非常に小さいので、IPパケットは通常、ネットワークがサポートできる最大パケット・サイズに収まる。
【0037】
本発明の諸態様をWebサーバ及びHTMLページに関して説明してきたが、本発明をファイル共用に使用することもできる。また、本発明は、ソフトウェア更新に使用することもでき、その場合、事前パケット化形式のセントラル・サーバがソフトウェア更新を記憶し、所与の企業のすべてのクライアントがそれをダウンロードすることができる。様々なレベルでキャッシュすることができる。HTTPヘッダは各応答でほぼ同じなので、一部のWebサーバは、それをキャッシュする。従って、それを毎回更新する代わりに、1回生成し、単に保持する。HTTPヘッダを再度生成する代わりに、その結果をコピーするだけでよい。
【0038】
これらの処理は順次的であるので事前に行うことができ、サーバは、パケットを送信するときに、変更された事項を追加するだけでよい。従って、TCPチェックサム値に関して、本発明の諸態様による方法は、すべてのフィールドがゼロである場合にチェックサム値を計算することを含むことになり、その後、パケットをクライアントに送信するとき、それらのフィールドが記入され、変更されたビットだけが追加される。
【0039】
例えば、1500バイトのパケットを有する場合、1500回の加算(あるいは、32ビット・コンピュータで典型的なように4バイト加算を325回)を行ってチェックサム値の計算を行う必要が生じる。本発明の諸態様によれば、サーバは、この1500回の加算のうちの1490回をあらかじめ行い、それを合計し、新しいフィールドを生成し、それが特にクライアント向けに設定される。例えば、IPアドレス、TCP宛先ポート、TCPシーケンス番号などである。これらは、クライアントに特有の数個のフィールドであり、クライアントごとに異なる。従って、チェックサムを更新する必要はあるが、1500回のすべてではなく、いくつかの追加の加算についてだけ更新すればよい。
【0040】
UDPでは、チェックサムはIP v4の場合、任意選択である。これは無効にすることができる。チェックサムが設定されていない場合、チェックサム検査はスキップされる。どんな送信エラーでも他の層(例えば、ネットワーク層またはアプリケーション層)でしか検出することができない。
【0041】
従って、上記で詳細に説明したように、本発明の諸態様による方法及び装置では、クライアント・ノード要求の応答時間を短縮しようとして、事前パケット化形式でデータをキャッシュするキャッシング機能を使用した。システムは、IP層から情報を取得する。こうしてシステムは、情報がどのようにしてパケット化されるかを知る。従って、システムは、情報をアプリケーション層に渡し、それを事前に適用することができる。従って、本発明の様々な実施形態では、異なるいくつかのプロトコル層を参照し、その下位の層の知識に基づいて最適化を行う。いくつかの利点を挙げてみると、このようにすれば、TCPチェックサム計算のオーバヘッドが回避され、コンテンツ圧縮の(がある場合はその)オーバヘッドが回避され、ディスク・ファイルの読取りが回避され、またバッファ割当て及びディスク・バッファからネットワーク・インターフェースへのメモリのコピーが回避される。
【0042】
本発明の諸態様によるすべてまたは一部の方法及び装置は、二次記憶装置(例えばハード・ディスク、フロッピー・ディスク、CD−ROM、DVDなど)や、インターネットまたはその他の通信媒体から受信した搬送波や、その他の形のROMまたはRAMなどのコンピュータ可読媒体上に格納し、そこから読み取ることができることが、当業者には理解されよう。最後に、データ処理システムの特定の構成要素について説明してきたが、例示的な実施形態と共に使用するのに適したデータ処理システムは、複数のプロセッサや様々な入出力装置など、追加のあるいは異なる構成要素を含むことができることが、当業者には理解されよう。一般的に、本発明の諸態様のシステム及び方法は、様々な有形及び無形の媒体、様々なコンピュータ、データ処理システムなどで実施することができる。
【0043】
以上論じてきたように、本発明の一態様の利点は、オーバヘッドの削減によって明らかになる。すなわち、パケットのすべてのバイトを毎回再パケット化する必要がない。既知の処理ですべてのバイトを毎回コピーするには、時間を要する。あらかじめパケット化を実行し、キャッシングを行うことができ、それによって応答時間が短縮され、ネットワーク・サーバ106上の負荷が低減される。その結果、同じハードウェアが、同じ時間内により多くのクライアント・ノード(またはクライアント・コンピュータ)を処理することができる。あるいは、同じ数のクライアント・ノードを処理するのに、より少ないハードウェアで済む。
【0044】
本発明の諸態様をWebサーバに関して説明してきたが、上述のような他の種類のサーバ(すなわちファイル・サーバ及びビデオ・サーバ)も企図されており、本発明の範囲に含まれることが当業者には理解されるはずである。
【0045】
例えば、ビデオ・サーバは、UDPパケットを使用することができる。この場合、関与するフロー制御もデータ・パケットの動的サイズ設定もない。固定サイズのパケットだけが存在する。従って、データ・ブロック単位でビデオの事前符号化がすでにされている。例えば、同じビデオ・ファイルに、異なるクライアント向けの、品質またはCODECの異なるバージョンがいくつも存在してもよい。しかし、このデータはやはり、取り出し、UDPパケットに入れ、ネットワーク上に送出する必要がある。従って、本発明の他の諸態様によれば、ビデオ・ファイルを符号化し、それをビデオ・サーバ上に事前パケット化形式で記憶する手段が提供される。各パケットは、ネットワーク・インターフェース上に容易に送出することができる。
【0046】
本発明の諸態様の教示を組み込んだ様々な実施形態を本明細書で詳細に示し説明してきたが、当業者であれば、これらの教示をやはり組み込んだその他多くの様々な実施形態を容易に考案することができよう。

【特許請求の範囲】
【請求項1】
第1のクライアント・ノード要求に応答してサーバ応答データをキャッシュする方法であって、
サーバ(106)から要求されたデータを取り出すステップ(308)と、
該取り出されたデータを、該要求されたデータの静的コンテンツを格納するための複数の静的フィールド及び該要求されたデータの動的コンテンツを格納するための複数の動的フィールドを含む複数の応答パケットに分割するステップ(310)とを含み、該動的コンテンツは、該第1のクライアント・ノード要求に特有のデータであり、
該複数の応答パケットの該複数の動的フィールドをそれぞれの所定の値に設定することによって、該要求されたデータの少なくとも一部に対する後続の要求の間に使用するように該動的フィールドを適応させるステップ(316)と、
該第1のクライアント・ノードによって要求された該データの少なくとも一部に対する後続の要求の間に使用するように、該複数の応答パケットの該複数の適応させられた動的フィールド及び該複数の静的フィールドをメモリ・バッファ(115)にキャッシュするステップ(322)とを含むサーバ応答データをキャッシュする方法。
【請求項2】
請求項1に記載の方法において、
該少なくとも1つの応答パケットのフィールド中でTCPチェックサム値を設定するステップ(318、320)をさらに含む方法。
【請求項3】
請求項2に記載の方法において、
イーサネット宛先MACアドレス、IP宛先アドレス、TCP宛先ポート、TCPシーケンス番号、クライアント・ノード要求からのTCPヘッダ、及びTCPチェックサムを含む群から該動的フィールドが選択される方法。
【請求項4】
請求項2に記載の方法において、
第2のクライアント・ノード要求に応答して、
少なくとも1つの該キャッシュされた動的フィールドを該第2のクライアント・ノードに特有の動的コンテンツを使用して更新するステップ(328)と、
該TCPチェックサムを増分的に調整するステップ(322)と、
該更新された動的フィールドと該キャッシュされた静的フィールドと増分的に調整されたTCPチェックサムとを含む少なくとも1つの応答パケットを、該第2のクライアント・ノードに提供するステップ(334)とをさらに含むの方法。
【請求項5】
請求項1に記載の方法において、
該動的フィールドが該TCPヘッダを含む場合に、該少なくとも1つの応答パケットのN個のコピーをキャッシュするステップをさらに含み、Nは特定のTCPヘッダの数と等しい整数である方法。
【請求項6】
サーバ応答データをキャッシュするための装置であって、
取り出されたデータを、要求されたデータの静的コンテンツを格納するための複数の静的フィールド及び該要求されたデータの動的コンテンツを格納するための複数の動的フィールドを含む複数の応答パケットに分割し、該動的コンテンツは、第1のクライアント・ノード要求に特有の情報を含み、少なくとも1つの応答パケットの該複数の動的フィールドを所定の値に設定するプロセッサ(110)と、後続のクライアント要求に応答して少なくとも1つのクライアント・ノードに送信する事前パケット化データを記憶するためのメモリ・バッファ(115)を含んでおり、該事前パケット化データが該複数の応答パケットからの該複数の静的フィールド、及び該複数の動的フィールドを含むサーバと、
該サーバ(106)を通信ネットワーク(104)に接続し、該サーバ(106)の該メモリ・バッファ(115)からの該複数の応答パケットを、該少なくとも1つのクライアント・ノード(102)に送信するためのネットワーク・インターフェース・カード(105)とを含む、サーバ応答データをキャッシュするための装置。
【請求項7】
コンピュータ実行可能命令をその上に有するコンピュータ可読媒体であって、該コンピュータ実行可能命令は、コンピュータによって実行されたとき、第1のクライアント・ノード要求に応答して、サーバ(106)上で少なくとも1つの応答パケットをキャッシュする方法を該コンピュータに実施させ、該方法が、
該少なくとも1つの応答パケットに含めるために、該サーバ(106)のメモリ・データベース(114)からデータを取り出すステップ(308)であって、該少なくとも1つの応答パケットは、該応答パケットの複数の静的フィールド内の該要求されたデータの静的コンテンツ及び該応答パケットの複数の動的フィールド内の該要求されたデータの動的コンテンツを含み、該動的コンテンツは、該第1のクライアント・ノード要求に特有のデータであり、
該少なくとも1つの応答パケットの該複数の動的フィールドをそれぞれの所定のに設定することによって、該要求されたデータの少なくとも一部に対する後続の要求の間に使用するように該少なくとも1つの応答パケットの該複数の動的フィールドを適応させるステップ(316)と、
該第1のクライアント・ノードによって要求されたデータの少なくとも一部に対する後続の要求の間に使用するように、該得られた少なくとも1つの応答パケットの該第1のクライアント・ノードによって要求されたデータを含む静的フィールド及び該適応された複数の動的フィールドを該サーバ(106)のメモリ・バッファ(115)にキャッシュするステップ(322)とを含むコンピュータ可読媒体。
【請求項8】
請求項7に記載のコンピュータ可読媒体において、
該少なくとも1つの応答パケットのフィールド内にTCPチェックサム値を設定するステップ(318、320)をさらに含むコンピュータ可読媒体。
【請求項9】
請求項7に記載のコンピュータ可読媒体において、
イーサネット宛先MACアドレス、IP宛先アドレス、TCP宛先ポート、TCPシーケンス番号、クライアント要求からのTCPヘッダ、及びTCPチェックサムを含む群から該動的フィールドが選択されるコンピュータ可読媒体。
【請求項10】
請求項8に記載のコンピュータ可読媒体において、
第2のクライアント・ノード要求に応答して、該方法が、
該動的フィールドの該所定の値を該第2のクライアント・ノード要求に特有なデータを含む動的コンテンツを使用して更新するステップ(328)と、
該TCPチェックサムを増分的に調整するステップ(332)と、
該更新された動的フィールドと該キャッシュされた静的フィールドと増分的に調整されたTCPチェックサムとを含む少なくとも1つの応答パケットを、該第2のクライアント・ノードに提供するステップ(334)とをさらに含むコンピュータ可読媒体。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate


【公開番号】特開2012−216230(P2012−216230A)
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願番号】特願2012−138727(P2012−138727)
【出願日】平成24年6月20日(2012.6.20)
【分割の表示】特願2005−333504(P2005−333504)の分割
【原出願日】平成17年11月18日(2005.11.18)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.フロッピー
【出願人】(596092698)アルカテル−ルーセント ユーエスエー インコーポレーテッド (965)
【Fターム(参考)】