(57)【特許請求の範囲】
【請求項１】
データ・パケットを伝送する方法であって、
データ・パケットの伝送元となり得るコネクション毎に、前記コネクションに対応するヘッダー・データを格納するステップと、
パケットのヘッダー及びペイロード・データを形成するため、前記パケットの伝送元となるコネクションと関連するユーザー・アプリケーションを用いるステップと、
前記パケットを伝送しながら、前記ユーザー・アプリケーションが関連する前記コネクションに対応する前記ヘッダー・データと前記パケット・ヘッダー・データの１個若しくはそれ以上の部分とを比較するステップとを含む方法。
【請求項２】
前記ユーザー・アプリケーションを用いるステップが、前記パケットを形成するための待ち時間を低減するステップを含む、請求項１に記載の方法。
【請求項３】
前記比較するステップが、不正確なヘッダー・データを持つパケットの成功裡の伝送を低減するステップを含む、請求項１に記載の方法。
【請求項４】
前記パケット・ヘッダー・データの１個若しくはそれ以上の部分を比較するステップが、前記パケット・ヘッダー・データの部分を抽出するステップと、
前記パケット・ヘッダー・データの前記の抽出された部分を、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと比較するステップとを含む、請求項１に記載の方法。
【請求項５】
前記パケット・ヘッダー・データの前記１個若しくはそれ以上の部分が、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと一致しない場合に、前記パケットの伝送を停止するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記パケット・ヘッダー・データの前記１個若しくはそれ以上の部分が、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと一致しない場合に、前記パケットを壊すステップを更に含む、請求項１に記載の方法。
【請求項７】
データ・パケットを伝送するための装置であって、
データ・パケットの伝送元となり得るコネクション毎に、前記コネクションに対応するヘッダー・データを格納する手段と、
パケットのヘッダー及びペイロード・データを形成するため、前記パケットの伝送元となるコネクションと関連するユーザー・アプリケーションを用いる手段と、
前記パケットを伝送しながら、前記ユーザー・アプリケーションが関連する前記コネクションに対応する前記ヘッダー・データと前記パケット・ヘッダー・データの１個若しくはそれ以上の部分とを比較する手段と
を含む装置。
【請求項８】
前記比較する手段が、不正確なヘッダー・データを持つパケットの成功裡の伝送を低減する手段を含む、請求項７に記載の装置。
【請求項９】
前記パケット・ヘッダー・データの１個若しくはそれ以上の部分を比較する手段が、
前記パケット・ヘッダー・データの部分を抽出する手段と、
前記パケット・ヘッダー・データの前記の抽出された部分を、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと比較する手段とを含む、請求項７に記載の装置。
【請求項１０】
前記パケット・ヘッダー・データの前記１個若しくはそれ以上の部分が、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと一致しない場合に、前記パケットの伝送を停止する手段を更に含む、請求項７に記載の装置。
【請求項１１】
前記パケット・ヘッダー・データの前記１個若しくはそれ以上の部分が、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと一致しない場合に、前記パケットを壊す手段を更に含む、請求項７に記載の装置。
【請求項１２】
システムであって、
１個若しくはそれ以上のユーザー・アプリケーションを実行するように適用されたプロセッサと、
前記プロセッサに結合された、データ・パケットを伝送するための装置と
を備えており、
前記装置が、
データ・パケットの伝送元となり得るコネクション毎に、前記コネクションに対応するヘッダー・データを格納する手段と、
パケットのヘッダー及びペイロード・データを形成するため、前記パケットの伝送元となるコネクションと関連するユーザー・アプリケーションを用いる手段と、
前記パケットを伝送しながら、前記ユーザー・アプリケーションが関連する前記コネクションに対応する前記ヘッダー・データと前記パケット・ヘッダー・データの１個若しくはそれ以上の部分とを比較する手段と
を含むシステム。
【請求項１３】
前記ユーザー・アプリケーションを用いる手段が、前記パケットを形成するための待ち時間を低減する手段を含む、請求項１２に記載のシステム。
【請求項１４】
前記比較する手段が、不正確なヘッダー・データを持つパケットの成功裡の伝送を低減する手段を含む、請求項１２に記載のシステム。
【請求項１５】
前記パケット・ヘッダー・データの１個若しくはそれ以上の部分を比較する手段が、
前記パケット・ヘッダー・データの部分を抽出する手段と、
前記パケット・ヘッダー・データの前記の抽出された部分を、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと比較する手段と
を含むものに適用される、請求項１２に記載のシステム。
【請求項１６】
前記パケット・ヘッダー・データの前記１個若しくはそれ以上の部分が、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと一致しない場合に、前記パケットの伝送を停止する手段を更に含む、請求項１２に記載のシステム。
【請求項１７】
前記パケット・ヘッダー・データの前記１個若しくはそれ以上の部分が、前記ユーザー・アプリケーションが関連している前記コネクションに対応する前記ヘッダー・データと一致しない場合に、前記パケットを壊す手段を更に含む、請求項１２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・システムに関し、特にデータ・パケットを伝送しながらセキュリティを改良するための方法及び装置に関する。
【背景技術】
【０００２】
コンピュータ・システム等は、オペレーティング・システム（ＯＳ）及び１個若しくはそれ以上のユーザー・アプリケーションとしてのコードを実行することができる。ある従来のシステムでは、ユーザー・アプリケーションがパケットで（例えばコンピュータ・システムから）伝送されるデータをユーザー・バッファに格納し、ＯＳ呼出し（ＯＳコール）を実行する。従来の幾つかのシステムでは、そのＯＳ呼出しに応答して、ＯＳがパケットのためにヘッダー・データを形成し、ユーザー・アプリケーション・データがそのパケットのペイロード・データとしての役目を果たすようにＯＳがユーザー・バッファからＯＳバッファにそのユーザー・アプリケーション・データをコピーする。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＯＳは正確なヘッダー・データがパケットに置かれるよう確保する。しかし、パケットを形成するようにＯＳバッファの中にユーザー・アプリケーション・データをコピーするのは時間を要し、待ち時間を増やしてしまう。従って、幾つかの従来のシステムは、パケット・ヘッダー及びペイロード・データを形成するようにユーザー・アプリケーションを能動化する、例えばＴＣＰ／ＩＰ加速などの技法を用い、これによってＯＳバッファへのデータのコピーを回避し、待ち時間を低減してもよい。しかし、もしユーザー・アプリケーションがパケットを形成するよう能動化されるなら、パケットにおかれるヘッダー・データの正確さは確保されないかもしれない。例えば、悪意の或るユーザーのアプリケーションが、形成されるパケットのヘッダー・データを(例えば、他のコネクションを擬態するように)スプーフィング（なりすまし、偽り）するかもしれない。従って、データを伝送する改良された方法及び装置が必要である。
【課題を解決するための手段】
【０００４】
本発明の第１の側面では、データ・パケットを伝送する第１の方法が提供される。この第１の方法は、以下の諸ステップを含む。（１）データ・パケットの伝送元となり得るコネクション毎に、前記コネクションに対応するヘッダー・データを格納するステップと、（２）パケットのヘッダー及びペイロード・データを形成するため、前記パケットの伝送元となるコネクションと関連するユーザー・アプリケーションを用いるステップと、（３）前記パケットを伝送しながら、前記ユーザー・アプリケーションが関連する前記コネクションに対応する前記ヘッダー・データと前記パケット・ヘッダー・データの１個若しくはそれ以上の部分とを比較するステップとを含む。
【０００５】
本発明の第２の側面では、データ・パケットを伝送する第１の装置が提供される。この第１の装置は、（１）格納装置と、（２）前記格納装置に結合されたパケット構文解析論理部とを含む。この装置は以下の諸動作に適用される。即ち、（ａ）データ・パケットの伝送元となり得るコネクション毎に、前記コネクションに対応するヘッダー・データを格納し、（ｂ）パケットのヘッダー及びペイロード・データを形成するため、前記パケットの伝送元となるコネクションと関連するユーザー・アプリケーションを用い、（ｃ）前記パケットを伝送しながら、前記ユーザー・アプリケーションが関連する前記コネクションに対応する前記ヘッダー・データと前記パケット・ヘッダー・データの１個若しくはそれ以上の部分とを比較するのに適用される。
【０００６】
本発明の第３の側面では、データ・パケットを伝送するための第１のシステムが提供される。この第１のシステムは、（１）１個若しくはそれ以上のユーザー・アプリケーションを実行するように適用されたプロセッサと、（２）前記プロセッサに結合された、データ・パケットを伝送するための装置であって、（ａ）格納装置と、（ｂ）前記格納装置に結合されたパケット構文解析論理部とを含む装置とを含む。このシステムは、以下の諸動作に適用される。即ち、（ｉ）データ・パケットの伝送元となり得るコネクション毎に、前記コネクションに対応するヘッダー・データを格納し、（ｉｉ）パケットのヘッダー及びペイロード・データを形成するため、前記パケットの伝送元となるコネクションと関連するユーザー・アプリケーションを用い、（ｉｉｉ）前記パケットを伝送しながら、前記ユーザー・アプリケーションが関連する前記コネクションに対応する前記ヘッダー・データと前記パケット・ヘッダー・データの１個若しくはそれ以上の部分とを比較するのに適用される。他にも多くの側面が、本発明の前記の、或いは他の側面に従うシステムや装置などとして提供される。
【発明を実施するための最良の形態】
【０００７】
本発明は、データ・パケットを伝送するための方法及び装置を提供する。特に、本発明の方法及び装置は、不正確なヘッダー・データを持つパケットの成功裡の伝送を低減し或いは除去しながら、ユーザー・アプリケーションがパケットを形成できるようにする。このようにして、本発明の方法及び装置は、コンピュータ・システムのＯＳが、伝送しようとするパケット・ヘッダーを形成するとき、待ち時間が引き起こされるのを回避し、悪意の或るユーザーのアプリケーションがパケット・ヘッダー情報をスプーフィングするのを防止する。
【０００８】
データの転送元となり得るコネクションごとに、本発明の方法及び装置は、記憶装置のコネクション（接続部）に対応するタプル（tuple）若しくは情報の集合体の少なくとも一部分を格納することができる。コネクションに関連するユーザー・アプリケーションは、ヘッダー及びペイロード・データを含むパケットを形成し、ユーザー・バッファ中のそのようなパケットを格納することができる。このようなパケットのヘッダー・データはタプルを含むことができる。パケットが（例えば、コンピュータ・システムのアダプタから）伝送されると、そのパケットからタプルを迅速に（例えばリアルタイムで）抽出するのにパケット構文解析ハードウエアが用いられる。この抽出されたタプルはそのコネクションに関連するタプルと比較され、そして記憶装置に格納できる。もしもそのタプル同士が一致しなければ、そのパケットの伝送は、そのパケットがその送り先に一旦届いたら使用できないように停止されるか又は意図的に壊される。従って、本発明の方法及び装置は、パケットが不正確なヘッダー・データを有するときパケットの成功裡の伝送を低減したり除去したりしながら、ユーザー・アプリケーションがパケット・ヘッダー・データ及びペイロード・データを形成するのを可能ならしめ、これによって、セキュリティの確保されたパケット伝送を提供する。
【０００９】
図１は、本発明の実施例に従い、データ・パケットを伝送するシステムのブロック図である。図１で、システム１００はコンピュータ等であってよい。このシステム１００は、コードを実行するのに適用される少なくとも１個のプロセッサ１０２、例えば、オペレーティング・システム（ＯＳ）１０４若しくは１個若しくはそれ以上のユーザー・アプリケーション１０６又はその両方、を含む。システム１００は任意のプロトコルを用いることができるが、このシステム１００はＴＣＰ／ＩＰプロトコルを用いるものとする。典型的には、システム１００から伝送されるパケットを形成するため、ＴＣＰ／ＩＰプロトコルを用いるとき、ユーザー・アプリケーション１０６はペイロード・データを形成し、一方でＯＳ１０４はヘッダー・データを形成する。詳細にはＯＳ１０４がヘッダー・データを創出し、ユーザー・バッファからＯＳバッファにユーザー・アプリケーション・データをコピーする。その結果、ＯＳ処理の大きなオーバーヘッドが生じる。ＯＳ１０４の負荷を軽減するため、システム１００は、改良されたＴＣＰ／ＩＰ加速技術などの方法を用い、これによってユーザー・アプリケーション１０６が、（システム１００等から）伝送しようとするデータ・パケットを形成するのを可能にすることができる。従って、システム１００は、パケットを形成する際にＯＳ１０４により実行される多くの作業をユーザー・アプリケーション１０６にシフトすることができる。ユーザー・アプリケーションがデータ・パケットを形成するので、データ・パケットを形成するためにユーザー・バッファからＯＳバッファにデータをコピーするのにはＯＳが必要なくなるかもしれず、これによって待ち時間が低減される。更に、以下で説明するとおり、従来のＴＣＰ／ＩＰ加速技術に比べると、ユーザー・アプリケーション１０６がデータ・パケットを形成することのできる本発明の方法は、ユーザー・アプリケーション１０６により形成されるパケット・ヘッダー・データの正確さを確保することができる。このいようにして、悪意のあるユーザーのアプリケーション１０６によりスプーフィングされたヘッダー・データを服務パケットの成功裡の伝送は低減され若しくは除去される手、データのセキュリティを改良することができる。
【００１０】
システム１００はメモリ１０８を含み、その一部若しくはそれ以上は、ユーザー・アプリケーション１０６により形成されるパケットのヘッダー・データ及びペイロード・データなどのユーザー・アプリケーション・データを格納するためのバッファとして機能してもよい。プロセッサ１０２及びメモリ１０８はネットワーク・リンク若しくはファブリック１１０（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）又は他の適当なリンク若しくはファブリック）にネットワーク・インターフェース・カード等のアダプタ１１２を介して結合されてもよい。このリンク１１０は複数個のコネクションを代表してもよい。アダプタ１１２は、システムの待ち時間を低減し、データのセキュリティを改良しつつ、データ・パケットを伝送する。アダプタ１１０は、データの伝送元である各コネクション（例えば、システム１００）に対応するヘッダー・データ若しくは情報を格納するように適用された記憶装置１１４を含むことができる。例えば、システムのセットアップ中、そのようなコネクション、複数個が確立されてもよい。そのような時間中、夫々のタプル若しくは情報の集合体がそのようなコネクションのために生成される。夫々のそのようなタプルの１個若しくはそれ以上の部分が記憶装置１１４に格納されてもよい。或る実施例では、記憶装置１１４が（インフィニバンド・プロトコルで用いられるものに類似する）キュー・ペア・コンテキスト（a queue pair context  待ち行列対コンテキスト）をコネクションごとに格納してもよい。しかし、そのキュー・ペア・コンテキストはコネクションごとの関連するタプルの１個若しくはそれ以上の部分を含んでもよい。このタプル又はキュー・ペア・コンテキストは、これによって形成されたパケットを送り先若しくは目的地に送るためこの全体のタプル（又はキュー・ペア・コンテキスト）又はそのサブセット（例えば、メディア・アクセス・コントロール（ＭＡＣ）ソース・アドレス、ＭＡＣ目的地アドレス、トランスポート・コントロール・プロトコル（ＴＣＰ）ソース・アドレス、ＴＣＰ目的地アドレス）が用いられてもよい。
【００１１】
代わりに、或る実施例では、各コネクションに対応するヘッダー・データ若しくは情報（例えばタプル）の完全版を記憶装置１１４に格納するよりはそのようなデータの縮小版（例えば、少ないバイト数の版）を記憶装置１１４に格納してもよい。例えば、ハッシュ又は他の適当なアルゴリズムが、各コネクションに対応するヘッダー・データ若しくは情報の完全版の上で行われてそのようなデータの縮小版（例えばハッシュ）を形成してもよい。
【００１２】
更には、アダプタ１１２がパケット構文解析論理部１１６などのハードウエアを含んでもよく、ユーザー・アプリケーション１０６によって形成されたデータ・パケットをモニタ（監視）し、相応にデータ・パケットを伝送するように適用できる。このような伝送中、パケット構文解析論理部１１６はそのデータ・パケットを特定のフィールドを求めてモニタし、そのようなフィールドを抽出してもよい。例えば、パケット構文解析論理部１１６はそのデータ・パケット伝送をモニタするように適用され、伝送中のそのデータ・パケットからタプルを抽出してもよい。アダプタ１１２はその抽出されたタプルの１個若しくはそれ以上の部分を、そのパケットを形成したユーザー・アプリケーション１０６が関連するコネクションに対応するヘッダー・データ若しくは情報と比較するように構成されてもよい。
【００１３】
パケットを伝送するこのシステム１００の動作を図２に沿って説明する。図２には、本発明の実施例に従ってデータ・パケットを伝送する方法を示す。図２では、ステップ２０２でその方法が開始する。ステップ２０４では、データ・パケットの転送元となるコネクションごとに、そのコネクションに対応するヘッダー・データが格納することができる。例えば、セットアップ中、システム１００は夫々のユーザー・アプリケーション１０６と関連するコネクション（例えば、そこからデータが伝送され得る）を確立することができる。システム１００はデータの送信元となる各コネクションに対応する情報（例えば、タプル）のヘッダー・データを格納することができる。このヘッダー・データ若しくは情報は各コネクションに格納されたキュー・ペア・コンテキストの一部であってもよい。このようにして、複数のキュー・ペア・コンテキストが夫々複数のコネクションと関連する。各キュー・ペア・コンテキストはそれに関連するユーザー・コネクションに特有の情報を含むことができる。コネクションごとのキュー・ペア・コンテキストはそのコネクションが確立されるとき、そのＯＳの信頼されているコード(trusted code)によってセットアップされてもよい。コネクションごとのキュー・ペア・コンテキストは、許可情報、ユーザー・バッファの所在地、及び完了信号(signal completion)情報を他の事項の間に含むことができる。許可情報は、ユーザー・アプリケーション１０６がアクセスするようなメモリ１０８の各部を示すことができる。ユーザー・バッファの所在地は、データを受けたときそれをどこに置くべきかを示すことができる。完了信号情報は、或るパケットについてユーザー・アプリケーション１０６にシステム１００がいつ知らせるかを示すことができる。更に、前述のとおり、本発明の方法及び装置によれば、キュー・ペア・コンテキストは、パケットの送信元となるコネクションに対応するタプル（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）  ＭＡＣソース・アドレス、ＩＰソース・アドレス、ＩＰ目的地アドレス、ＴＣＰソース・ポート、ＴＣＰ目的地ポートなど）を含むことができる。
【００１４】
各タプルは１００バイトよりもサイズが大きくてもよい。従って、もしシステム１００が多くのコネクションをサポートし、各コネクションに対応するタプルを保持するようなシリコンの必要性から著しき大きくなることもある。その結果、システム１００は、データの送信元となるコネクション（例えばシステム１００から）ごとに対応するヘッダー・データ情報の（そのハッシュ）縮小版を生成し、格納していてもよい。このようにして、コネクションごとに、システム１００がそのコネクションから伝送されるべきパケットのヘッダー・データに含まれるべき情報（ないし縮小版）を格納してもよい。
【００１５】
ステップ２０６では、ユーザー・アプリケーション１０６がパケット（例えば、ＴＣＰ／ＩＰパケット）のヘッダー・データ及びペイロード・データを形成するのに用いられ、そこではユーザー・アプリケーション１０６が伝送しようとするパケットの送信元であるコネクションと関連する。詳細には、ユーザー・アプリケーション１０６がパケット・ヘッダー・データ及びペイロード・データをメモリ１０８（例えば、そこにはユーザー・バッファが含まれる）に格納することができる。そのコネクションを介して伝送しようとするパケットのヘッダー・データはタプルを含んでもよい。このタプルは一つのコネクション（例えば、その上にパケットが伝送される）を個別に識別する情報を含むことができる。例えば、このタプルは、Ｅｔｈｅｒｎｅｔ（登録商標）  ＭＡＣソース・アドレス、ＶＬＡＮタグ、Ｅｔｈｅｒｎｅｔ（登録商標）プライオリティ・ビット、ＩＰソースや送信先アドレス、ＴＣＰソースや送信先ポート、識別子／プロトコル、ＴＣＰパケットのＳＹＮビットや論理ポート。インジケータを含んでもよい。このようなフィールドは当業者に良く知られている。しかし、このタプルはもっと多くの若しくはもっと少ない情報或いは異なる情報を含んでいてもよい。データ・パケットを形成するためにユーザー・アプリケーション１０６を用いることによって、このシステム１００はＯＳにそのよう任務をさせなくて済む。例えば、ＯＳ１０４は１０８（例えば、ユーザー・バッファを内臓）からＯＳバッファにユーザー・アプリケーション・データをコピーする必要をなくすことができる。その結果、システムの待ち時間を低減できる。もしユーザー・アプリケーション１０６が悪意のあるものであれば、一つのコネクション上で伝送されるべきパケットのヘッダー・データをスプーフィングして、異なるコネクションが壊されるかもしれない。例えば、悪意のあるユーザー・アプリケーション１０６はパケットのタプルの一部若しくはそれ以上を変更することによってスプーフィングするかも知れず、その結果、そのパケットはユーザー・アプリケーション１０６と関連するコネクション以外のコネクションに迂回されてしまう。
【００１６】
ステップ２０８では、そのパケットを送信する間、パケット・ヘッダー・データの１個若しくはそれ以上の部分が、そのユーザー・アプリケーションが関連するコネクションに対応するヘッダー・データと比較されることができる。例えば、ユーザー・アプリケーション１０６がパケット・ヘッダー・データ及びペイロード・データを形成するとき、ユーザー・アプリケーション１０６はシステム１００にそのパケットを伝送することを知らせる。それに応答して、システム１００はメモリ１０８からそのようなデータを引き出し或いは取り出し、そしてそのワイヤ（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）  リンク１１０）にデータを送出し始める。詳細には、システム１００は、ユーザー・アプリケーション１０６により作成されたデータ・パケットをアダプタ１１２に与え、そこを介してそのパケットがコネクション上に（例えば、リンクネットワーク・リンク１１０を介して）伝送される。パケットがコネクションに伝送される間、パケット構文解析論理部１１６はそのパケット情報をモニタし、そのパケットからヘッダー・データ若しくは情報の部分（例えば、タプル）を抽出する。所望のヘッダー・データや情報（例えば、タプル）を決定するためにこのような態様でパケットを構文解析することは、そのような所望のヘッダー・データや情報を決定するための全ての可能なヘッダーの組み合わせの完全な順列を与えるよりははるかに簡単なタスクである。アダプタ１１２はその抽出された情報を、記憶装置１１４により格納されたコネクションに対応するヘッダー・データ若しくは情報に比較することができる。例えば、一旦、パケット・タプルが抽出されると、そのパケット・タプルはキュー・ペア・コンテキストに格納されたタプルと比較される。もしその抽出情報が、記憶装置１１４により記憶されたコネクションに対応するヘッダー・データ若しくは情報と一致するなら、そのパケット・ヘッダー・データは未だスプーフィングされていず、そのパケットはその送信先にそのコネクションを介して成功裡に伝送されることができる。
【００１７】
代わりに、もしその抽出された情報が、その記憶装置により格納されたコネクションに対応するヘッダー・データ若しくは情報と一致しないなら、ユーザー・アプリケーション１０６はそのデータ・パケットの一部若しくはそれ以上の部分をスプーフィングしたかもしれない。従って、そのシステム１００はそのスプーフィングされたパケットの伝送を停止させる（例えば、そのパケット送信ストリームを予め中断させる）ことができる。代わりに、そのシステム１００は意図的にそのようなパケットを（例えば、そのパケットの巡回冗長検査（ＣＲＣ）値を壊すことによって）壊してもよい。そのようなパケットをそのパケットの送信先で受け取ると、そのＣＲＣ値はそのパケットが壊れていることを示すので、その受信側（例えば送信先）で落とされる筈である。このようにして、そのパケットは落とされ、その悪意あるユーザー・アプリケーション１０６は、そのユーザー・アプリケーション１０６と関連しているものとは異なるコネクションを損傷するのを防ぐことができる。斯して、パケット伝送中に構文解析が用いられて、セキュリティ・チェックが提供される。
【００１８】
データを伝送する間に（例えばリアルタイムで）このような比較を行うことによって、このシステム１００はデータ・パケットを伝送する際の、格納してから進める、という方法に関連してデータ・パケットを記憶する際の時間待ちを回避することができる。更に、この比較は、パケット・ヘッダー・データの正確さを確保することによって安全な（１００％のセキュリティ）データ・パケット伝送を提供する。しかし、その抽出された情報をそのヘッダー・データの縮小版に比較するのは１００％のセキュリティではないかもしれないが、そのような比較でも多くのデータ・パケット伝送アプリケーションには十分なセキュリティを提供するかもしれない。例えば、この比較はスプーフィングされたパケットが成功裡に伝送される機会を低減し若しくは除去する。斯して、 ユーザー・アプリケーション１０６は他のコネクションと関連するように成功裡に提供されなかったかもしれない。何故ならユーザー・アプリケーション１０６が他のコネクションと関連するふりをするなら、ユーザー・アプリケーション１０６によって作成されたパケットは落とされるからである。このように、本発明の方法及び装置は、性能に悪影響を与えずにリアルタイムのハードウエア・チェックを提供することができる。要約すると、本発明の方法及び装置はパケットがワイヤに送られる際パケット・ヘッダー・データを構文解析し、そのユーザー・アプリケーション１０６を検証する。即ちそのパケットを形成したユーザー・アプリケーション１０６が、その伝送しようとするパケット中の情報（例えばタプル）を、ユーザー・アプリケーション１０６が関連するコネクションに対応する情報と比較することによって、そのパケットをその目的地に送信する権限を有している。
【００１９】
その後、ステップ２１０でその方法が終了する。本発明の方法及び装置はユーザー・アプリケーションを能動化して、パケット・ヘッダー・データ及びペイロード・データを形成する。その際、不正確なヘッダー・データを持つパケットの成功裡の伝送を低減し若しくは除去し、これによってセキュリティの高いパケット伝送を可能にしている。例えば、本発明の方法及び装置は、改良されたＴＣＰ／ＩＰ加速エンジンを改良することができる。この改良されたＴＣＰ／ＩＰ加速エンジンはＯＳ１０４から負荷を軽減するだけでなく、パケット伝送のセキュリティという特徴を提供する。賢いことに、本発明の方法及び装置はＴＣＰ／ＩＰオフロードの利点だけでなく、ＯＳ資源を一層フリーにし、待ち時間を改良し、ユーザー・アプリケーション１０６がコミュニケーションしてはいけない筈のコネクションをユーザー・アプリケーション１０６が壊さないようなセキュリティを提供する。
【００２０】
具体的には、本発明の方法及び装置は、Ｅｔｈｅｒｎｅｔ（登録商標）環境で実施されてもよく、ＯＳ１０４よりもユーザー・アプリケーション１０６がパケットを形成する能力を有し、そのようなパケット（そのヘッダー・データを含む）をアダプタ１１２に直接送る。本発明の方法及び装置は、ユーザー・アプリケーション１０６によって作成されたパケットのヘッダー・データの正確さを確保し、これによって悪意のあるユーザーのプログラム又はアプリケーションがヘッダー・データをスプーフィングする（例えば、他のＴＣＰ／ＩＰコネクションを擬制したり、データを壊す）のを防止する。例えば、本発明の方法及び装置は、メディア・アクセス・カード（ＭＡＣ）ソース・アドレス（ＳＡ）を変更するのを検出せずに防止することによって、ＭＡＣサブレイヤーでのスプーフィングを防止する。
【００２１】
ネットワーク環境では、Ｅｔｈｅｒｎｅｔ（登録商標）など何百、何千或いはそれ以上のコネクションが存在するかもしれない。本発明の装置及び方法は、そのような多くのコネクションに説明をつけ、データ・パケットのセキュリティの高い伝送を提供し、これらをユーザー・アプリケーション１０６によって提供する。このように、本発明の方法及び装置は、ＯＳがデータ・パケット（及びそこに含まれるヘッダー）を形成するときすでに存在しているネットワーク・セキュリティのレベルを、ユーザー・アプリケーション１０６がＥｔｈｅｒｎｅｔ（登録商標）リンク又はワイヤ１１０上に（例えば、ユーザー・アプリケーション１０６がパケット・ヘッダー・データ及びペイロード・データを生じるとき）提供されるパケットの直接制御を有するシステム環境に提供してもよい。
【００２２】
ソフトウエア（例えば、ユーザー・アプリケーション１０６）を能動化して（そのデータ・ヘッダーを含む）データ・パケットを形成することによって、本発明の方法は。ヘッダー・データを形成するのにハードウエアを用いる問題を回避することができる。例えば、Ｅｔｈｅｒｎｅｔ（登録商標）パケットのヘッダー・データを形成するのにハードウエアを用いるのは困難である。Ｅｔｈｅｒｎｅｔ（登録商標）が多くのプロトコルとその多くの変形を有するからである。例えば、インターネット・プロトコル（ＩＰ）パケットは０−４０バイトのオプションを有することができる。トランスポート・コントロール・プロトコル（ＴＣＰ）パケットも似たような量のオプションを有する。更に、Ｅｔｈｅｒｎｅｔ（登録商標）パケットは、ＤＩＸ，ＳＮＡＰ，ＬＩＣ、又は他の適当なタイプでＶＬＡＮタグを含むものでも含まないものなどであってよい。このパケット・ヘッダー・データのフォーマットは、Ｅｔｈｅｒｎｅｔ（登録商標）パケットのタイプに基いていても、それを変形したものでもよい。更に、ユーザー・アプリケーションは，ＴＣＰ／ＩＰ以外のプロトコルでもよい。その結果、全ての組み合わせのプロトコルを処理できるようにハードウエアを設計することも適切なセキュリティ・チェックを提供することもハードウエアでは困難である。
【００２３】
図３は、本発明の実施例によるデータ・パケットの伝送方法の例示的なプロセスのフローを示す。図３では、コネクションＡを介して伝送されるパケットを、ユーザー・アプリケーション１０６が形成する。ユーザー・アプリケーション１０６はメモリ１０８（例えば、ユーザー・バッファが内蔵）にパケット・ペイロード・データを格納することができる。しかし、ユーザー・アプリケーション１０６は悪意があるかもしれない。従って、コネクションＡと関連してパケット・ヘッダー・データを含むよりは、ユーザー・アプリケーション１０６がそのパケットにコネクションＢと関連するパケット・ヘッダー・データを含んでもよい。このシステム１００はユーザー・アプリケーション１０６によって形成されたデータ・パケットをアダプタ１１２に提供してもよく、このアダプタ１１２を介してパケットがそのコネクション上に（例えば、リンク１００を介して）伝送される。そのパケットがそのコネクションに伝送される際、パケット構文解析論理部１１６が、コネクションＢと関連するパケット・ヘッダー・データを構文解析し、若しくはそこから抽出する。アダプタ１１２は、そのように抽出されたデータを、記憶装置１１４により（例えば、システム・セットアップ中に）格納されたコネクションＡに対応するヘッダー・データ又は情報に対して比較する。そのような情報が一致しないと、ユーザー・アプリケーション１０６によって形成されたパケットは伝送されない（例えば、パケットの伝送が停止されてもよい）。このように、本発明の方法及び装置によれば、コネクションが、それらに関連する特定のタプルを有して確立されることができる（例えば、システム・セットアップ中）。このようなタプルは記憶装置１１４に格納できる。システム動作中、或るコネクションと関連するユーザー・アプリケーション１０６はタプルを含むデータ・パケットを形成する。そのタプルが、そのコネクションに関連するタプル（その記憶装置によって格納される）と一致しないなら、そのシステム１００はそのパケットを落としてもよい。
【００２４】
前述の説明は本発明の単なる実施例を開示したものである。前述の開示した装置や方法の変形例も本発明の範囲に入ることが当業者には用意に理解できよう。例えば、前述のシステム１００はユーザー・アプリケーション１０６を能動化してデータ・パケットを形成する改良した方法を用いているが、そのシステムはＯＳを能動化して従来と同様の態様でデータ・パケットを形成してもよい。
【００２５】
本発明を例示した実施例に沿って説明してきたが、他の実施例も本発明の趣旨及び範囲内であって、特許請求の範囲によって本発明が定義されることを理解されたい。
【００２６】
本発明の他の特徴や側面はこれまでの詳細な説明や添付図面から一層明らかになろう。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施例に従う、データ・パケットを伝送するシステムのブロック図である。
【図２】本発明の実施例に従う、データ・パケットを伝送する方法を示す図である。
【図３】本発明の実施例に従う、データ・パケットを伝送する方法の典型的なプロセスのフローを示す図である。
【符号の説明】
【００２８】
１００  システム
１０２  プロセッサ
１０４  オペレーティング・システム（ＯＳ）
１０６  ユーザー・アプリケーション
１０８  メモリ
１１０  （ネットワーク）リンク又はファブリック
１１２  アダプタ
１１４  記憶装置
１１６  パケット構文解析論理部
【図１】
0004743894.tif 000002
【図２】
0004743894.tif 000003
【図３】
0004743894.tif 000004