(57)【要約】【課題】第１のデータネットワークから第２のデータネットワークへのデータパケットのカーネルレベルの通過のための方法及び装置を提供する。【解決手段】本発明にかかる方法は、第１のネットワークからデータパケットを受信し、そのデータパケットをカーネル空間バッファに記憶したら、第２のネットワークへ直接渡す必要があるかどうかを判断し、そのデータパケットを第２のネットワークへ直接渡す必要がある場合に、カーネル空間バッファから第２のネットワークへデータパケットを送ることによって実現される。【選択図】図６
2006121699.tif 000002
【特許請求の範囲】
【請求項１】
カーネルレベルで第１のネットワークから第２のネットワークへデータパケットを渡すための方法であって、
第１のネットワークからデータパケットを受信する（５）ことと、
前記データパケットをカーネル空間バッファに記憶する（１０）ことと、
前記データパケットを前記第２のネットワークへ直接渡す必要があるかどうかを判断する（１５）ことと、
前記データパケットを前記第２のネットワークへ直接渡す必要がある（１５）場合に、前記カーネル空間バッファから前記第２のネットワークへ前記データパケットを送る（２０）ことと
を含む方法。
【請求項２】
前記第１のネットワークからデータパケットを受信することは、
トランスポート層のデータパケットを受信する（２５）こと
を含む
請求項１に記載の方法。
【請求項３】
前記データパケットを前記第２のネットワークへ直接渡す必要があるかどうかを判断することは、
アプリケーション空間で実行されているアプリケーションへ、前記データパケットに紐付けられたメタデータを送る（３０）ことと、
アプリケーション空間で実行されている前記アプリケーションから通過インジケータを受信する（３５）ことと
を含む請求項１に記載の方法。
【請求項４】
前記データパケットを前記第２のネットワークへ直接渡す必要がある場合に、前記カーネル空間バッファから前記第２のネットワークへ前記データパケットを送ることは、
アプリケーション空間で実行されているアプリケーションから前記データパケットの変更されたメタデータを受信する（４０）ことと、
前記変更されたメタデータを前記データパケットに紐付ける（４５）こと、及び、
前記データパケット及び前記の紐付け、変更されたメタデータを前記第２のネットワークへ送る（５０）ことと
を含む
請求項１に記載の方法。
【請求項５】
前記データパケットを前記第２のネットワークへ渡す必要がない（１５）場合に、アプリケーション空間で実行されているアプリケーションへ前記データパケットを送る（６０）こと
をさらに含む請求項１に記載の方法。
【請求項６】
１以上のプロセッサ（１００）と、
プロセッサ（１００）に第１のデータネットワーク（１１０）と通信させることができる第１のネットワークインターフェース（１０５）と、
プロセッサ（１００）に第２のデータネットワーク（１２０）と通信させることができる第２のネットワークインターフェース（１１５）と、
命令シーケンス及びカーネルレベルバッファを記憶することができるメモリ（１３０）と、
前記メモリに記憶された１つ以上の命令シーケンスであって、
プロトコルスタック（１３５）であって、前記プロトコルスタックの第１のインスタンスが前記プロセッサによって実行されると、少なくとも、前記プロセッサに、前記第１のネットワークインターフェース（１０５）からのデータパケットを受信させ、前記プロトコルスタックの第２のインスタンスが前記プロセッサによって実行されると、少なくとも、前記プロセッサに、前記第２のネットワークインターフェース（１１５）へデータパケットを搬送させる、プロトコルスタックと、
受信送信モジュール（１４０）であって、前記プロセッサによって実行されると、少なくとも、前記プロセッサに、
カーネルレベルバッファ（１５５）でデータパケットを受信するために、前記プロトコルスタックの第１の実行インスタンス（１３５Ａ）からデータパケットを受け取らせ、
前記データパケットを前記第２のデータネットワーク（１２０）へ渡す必要がある場合に、前記カーネルレベルバッファ（１５５）から前記プロトコルスタックの第２の実行インスタンス（１３５Ｂ）へ前記データパケットを送らせる
送受信モジュール
を含む１つ以上の命令シーケンスと
を備えるネットワークプロセッサ。
【請求項７】
前記プロトコルスタック（１３５）は、前記プロセッサ（１００）によって実行されると、少なくとも、前記プロセッサ（１００）にトランスポート層のデータパケットを受信させる（２５）ことによって、前記プロセッサ（１００）にデータパケットを受信させる
請求項６に記載のネットワークプロセッサ。
【請求項８】
前記受信送信モジュール（１４０）は、前記プロセッサ（１００）によって実行されると、少なくとも、前記プロセッサに、
前記カーネルレベルバッファ（１５５）に記憶された前記データパケットからメタデータ（１７５）を取り出させ、
アプリケーション空間で実行されているアプリケーション（１５０）へ前記取り出されたメタデータ（２０５）を送らせ、
アプリケーション空間で実行されている前記アプリケーション（１５０）から通過信号を受信させ、
前記データパケットが前記第２のネットワークインターフェース（１１５）へ渡されることになっていることを前記通過信号が示す場合に、前記データパケットを前記第２のネットワークインターフェース（１１５）へ送らせる
ことによって、前記プロセッサ（１００）に、前記カーネルレベルバッファ（１５５）から前記プロトコルスタックの第２の実行インスタンス（１３５Ｂ）へ前記データパケットを送らせる
請求項６に記載のネットワークプロセッサ。
【請求項９】
前記送受信モジュール（１４０）は、前記プロセッサ（１００）によって実行されると、少なくとも、前記プロセッサ（１００）に、
アプリケーション空間で実行されているアプリケーション（１５０）から、前記データパケットの変更されたメタデータ（２２５）をカーネルレベルバッファ（１５５）に受信させ、
前記データパケット及び前記変更されたメタデータ（２２５）を前記第２のネットワークインターフェース（１１５）へ送らせる
ことによって、前記プロセッサ（１００）に、前記カーネルレベルバッファ（１５５）から前記プロトコルスタックの第２の実行インスタンス（１３５Ｂ）へ前記データパケットを送らせる
請求項６に記載のネットワークプロセッサ。
【請求項１０】
前記データパケットを前記第２のネットワークインターフェース（１１５）へ送る必要がない場合に、前記送受信モジュール（１４０）は、前記プロセッサ（１００）によって実行されると、前記プロセッサ（１００）に、少なくとも、アプリケーション空間で実行されているアプリケーション（１５０）へ前記カーネルレベルバッファ（１５５）に対する参照を提供させる
請求項６に記載のネットワークプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のデータネットワークから第２のデータネットワークへのデータパケットのカーネルレベルの通過のための方法及び装置に関する。
【背景技術】
【０００２】
ネットワーキング構造は、多くの場合、さまざまなタイプのサーバを使用して、クライアント−サーバ接続を完成させる。
例えば、クライアント−サーバ接続は、プロキシサーバを通じて行うことができる。
プロキシサーバは、１又は２以上のクライアント対応デバイスの１つからクライアント要求を受信して、そのクライアント要求を、例えばインターネットといった広域ネットワークに渡すデバイスである。
このタイプのネットワーク構造では、プロキシサーバは、２又は３以上のクライアント対応デバイスからのクライアント要求を、あたかも単一のネットワークアドレスから来たものであるかのように見せることによって価値を付加する。
このように、複数のクライアント対応デバイスは、広域ネットワークに対する単一の接続を共有することができる。
【０００３】
別のネットワーク構造では、広域ネットワークに対する接続と複数のサーバとの間にロードバランサを導入することができる。
この状況では、複数のサーバは、クライアントに対して単一のネットワークアドレスでアクセスできる単一のサーバとして見える。
この場合、クライアント要求は、広域ネットワークから受信されて、ロードバランサの背後にあるサーバの１つにルーティングされる。
【０００４】
プロキシサーバ及びロードバランサは、クライアントとサーバとの間の接続の確立を容易にするように動作する専用ネットワークプロセッサの２つの例にすぎない。
或る意味で、これらの専用ネットワークプロセッサは、「仲介者サーバ（middle-man server）」である。
仲介者サーバは、大規模なネットワーキング方式で価値を付加するが、このような仲介者サーバは、クライアントとサーバとの間の接続を容易にするだけである。
したがって、仲介者サーバが付加する価値は、重要ではあるが、ファイルの要求（クライアント対応デバイスが行うようなもの）やファイルの提供（サーバが提供するようなもの）等の主要なサービスではない。
【０００５】
専用ネットワークプロセッサは、従来、専用ハードウェア及び専用ソフトウェアを使用して実施されてきた。
しかしながら、これによって、特にパーソナルコンピュータのような大容量のハードウェアコンポーネントに比べて、このようなネットワークプロセッサをより高価なものにしてきた。
このことが認識されたので、今や、多くのネットワークプロセッサは、標準ハードウェアプラットフォーム上で構築される。
標準ハードウェアプラットフォームを使用してネットワークプロセッサを実施する場合、標準ハードウェアプラットフォームは、一般に、常駐オペレーティングシステムによって制御されたままである。
この理由は、「プラグアンドプレイ」ハードウェアという全体概念に基づいている。
例えば、特定のハードウェアプラットフォームを供給された常駐オペレーティングシステム、又は、特定のハードウェアプラットフォームで利用可能な常駐オペレーティングシステムを使用することによって、ネットワークプロセッサは、カスタマイズされたドライバを開発する必要なく、標準周辺コンポーネントを使用することができる。
ネットワークインターフェース周辺機器を提供するベンダも、一般に、常駐オペレーティングシステムがネットワークインターフェースとやりとりすることを可能にするドライバを提供することを考慮すると、これは特に魅力的である。
【０００６】
常駐オペレーティングシステムによって提供される機構を使用すること、及び、カスタムアプリケーション用の標準ハードウェアプラットフォームを構成することによって、専用ネットワークプロセッサのコストは、年を追って大幅に削減されてきた。
通常の構成では、パーソナルコンピュータが、２つのネットワークインターフェースカードを含めることによってプロキシサーバとして構成される。
これら２つのネットワークインターフェースカードは、２つのデータネットワークへの独立したアクセスをパーソナルコンピュータに与える。
プロキシサーバアプリケーションでは、或るネットワークがローカルデータネットワークとして使用され、このローカルデータネットワークには、複数のクライアント対応デバイスを通信するように接続することができる。
このような接続は、有線ネットワークとして行うこともできるし、無線ネットワークとして行うこともできることが理解されるべきである。
【０００７】
この構成をさらに説明すると、常駐オペレーティングシステムは、ネットワーク通信サービスをアプリケーションに提供するために、各ネットワークインターフェースカードに特有のドライバを使用するプロトコルスタックを提供する。
プロキシサーバの機能を提供するために、アプリケーションが常駐オペレーティングシステムの制御下で実行される。
次に、このアプリケーションは、オペレーティングシステムによって提供されるネットワーク通信サービスを使用して、クライアントとの接続を確立し、次いで、サーバとの接続を確立する。
そして、オペレーティングシステムの制御下で実行されているアプリケーションは、クライアントからデータパケットを受信し、そのデータパケットをサーバへ転送する。
この通常の低コストネットワークプロセッサ構造では、アプリケーションは、「ネットワーク処理アプリケーション」と呼ばれ、一方のデータネットワークから他方のデータネットワークへデータパケットを渡す時、データパケットの或る部分を変更する。
通常、データは変更される必要はないが、特定のメタデータ（例えば、ヘッダ情報）は、多くの場合、変更されてネットワーク処理機能に影響を与える。
例えば、プロキシサーバの機能を実施するネットワーク処理アプリケーションは、通常、データパケットのヘッダに含まれる送信元アドレス及び宛先アドレス並びに送信元ポート番号及び宛先ポート番号を変更する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
たとえ、ネットワークプロセッサのコストを、標準ハードウェア及び関連した常駐オペレーティングシステムを使用することによって削減できるとしても、オペレーティングシステムによって通例提供される機構を使用することによって、実際には、到達可能な性能が制限される。
例えば、ネットワーク処理アプリケーションが、常駐オペレーティングシステムの制御下で実行され、第１のネットワークインターフェースカードから第２のネットワークインターフェースカードへデータパケットを渡す必要がある場合、複数のメモリトランザクションが必要とされる。
まず、データパケットが第１のネットワークインターフェースカードに到着した時、プロトコルスタックは、そのデータパケットを受信して、オペレーティングシステムによって保持されたメモリバッファ（すなわち、カーネルレベルバッファ）内に入れる。
これには、カーネルレベルバッファの割り当てが必要とされる。
次に、データパケットをネットワーク処理アプリケーションへ渡す必要がある。
ネットワーク処理アプリケーションは、アプリケーション空間で実行されるので、新しいアプリケーションレベルバッファを割り当てる必要があり、データパケットは、カーネルレベルバッファからアプリケーションレベルバッファへコピーされる。
次に、ネットワーク処理アプリケーションは、アプリケーション空間において、データパケットに対し操作を行うことができる。
次に、ネットワーク処理アプリケーションは、データパケットをプロトコルスタックへ戻す必要がある。
これには、アプリケーションレベルバッファから新たに作成されたカーネルレベルバッファへデータパケットをコピーできるようになる前に、新しいカーネルレベルバッファの割り当てが必要とされる。
これらのデータコピーステップのすべてに処理能力が必要とされる。
処理能力は限られているので、所与の期間に処理できるデータパケット数も限られる。
【課題を解決するための手段】
【０００９】
カーネルレベルで第１のネットワークから第２のネットワークへデータパケットを渡す方法及び装置が開示される。
ある実施態様では、これは、第１のネットワークからデータパケットを受信し、そのデータパケットをカーネル空間バッファに記憶したら、第２のネットワークへ直接渡す必要があるかどうかを判断し、そのデータパケットを第２のネットワークへ直接渡す必要がある場合に、カーネル空間バッファから第２のネットワークへデータパケットを送ることによって行われる。
【００１０】
以下では、複数の別の実施態様を、添付図面と併せて説明する。
なお、添付図面において、同じ符号は同じ要素を示す。
【発明を実施するための最良の形態】
【００１１】
図１は、第１のデータネットワークから第２のデータネットワークへデータパケットを渡すための一方法例を示すフロー図である。
この方法例によれば、第１のデータネットワークから第２のデータネットワークへデータパケットを渡すことは、カーネルレベルで達成される。
したがって、データパケットは、第１のネットワークから受信される（ステップ５）。
次に、データパケットは、カーネルレベルバッファに記憶される（ステップ１０）。
この方法例によれば、データパケットを第２のデータネットワークへ転送すべきかどうかについての判断が行われる。
データパケットを第２のデータネットワークへ転送する必要がある場合（ステップ１５）、データパケットは、カーネルレベルバッファから第２のデータネットワークへ送られる（ステップ２０）。
本方法は、コンピュータシステムがネットワークプロセッサとして動作するように構成される状況で適用することができる。
ある使用例では、本方法は、コンピュータシステムがロードバランサとして動作するように構成される状況で適用される。
別の使用例では、本方法は、コンピュータシステムがプロキシサーバとして構成される状況で適用される。
これらは、コンピュータシステムがネットワークプロセッサとして動作するように構成される状況で本方法をどのように適用できるかの単なる例にすぎないことが理解されるべきである。
したがって、本明細書に添付した特許請求の範囲は、本明細書で提示した使用例には限定されないものとする。
【００１２】
図２は、第１のネットワークからデータパケットを受信するための、本方法の一例を示すフロー図である。
本方法のこの態様では、データパケットが、トランスポート層のデータパケットとして第１のデータネットワークから受信される（ステップ２５）。
いくつかの使用例では、ネットワークプロセッサにおけるデータパケットの処理は、通常、プロトコル定義に従って行われることが理解されるべきである。
通常、ネットワークプロセッサにおけるデータパケットの処理には、プロトコル定義で定義されるようなトランスポート層におけるデータパケットの受信が必要とされる。
したがって、トランスポート層のデータパケットは、通常、接続識別情報を含む。
この接続識別情報は、本方法のこの態様によれば、データパケットを第２のデータネットワークへ転送する必要があるかどうかを判断するのに使用されるものである。
例えば、転送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）と呼ばれるよく知られた一通信プロトコルによれば、接続識別情報は、送信元アドレス、宛先アドレス、送信元ポート番号、及び宛先ポート番号から構成される。
データパケットシーケンス番号といった他の情報も、いくつかの通信プロトコル定義に従ってヘッダに含まれる。
本方法は、第１のデータネットワーク及び第２のデータネットワークの一方又は双方のいずれかで利用される通信プロトコルのタイプにかかわらず適用できることが理解されるべきである。
【００１３】
繰り返すと、本方法の一特徴により、ヘッダの情報が、データパケットをルーティングするのに使用できる情報を含む特定のプロトコル内のレベルで第１のネットワークからデータパケットを受信することができる。
したがって、本方法は、データパケットに紐付けられたメタデータの受信に依拠するものであり、該メタデータは、データパケットを第２にデータネットワークに転送するか否かを判断するためのものである。
さらに、本方法の別の態様では、接続識別子が、データパケットを第２のデータネットワークへ転送する必要があるかどうかを判断するのに使用されるメタデータのタイプの一例となる。
データパケットに紐付けられたメタデータは、本方法の別の態様では、データパケットに含まれるデータ型を記述する付加情報を含むことがさらに理解されるべきである。
例えば、インターネットプロトコルデータ上の音声としてデータパケットに含まれるデータを記述する情報は、データパケットを第２のデータネットワークへ転送すべきかどうかを判断するのに使用されるその他の付加情報の一例である。
本明細書に提示したいずれの例においても、データパケットを第２のデータネットワークへ通過させるかどうかを判断するのに使用できる多種多様なタイプの情報は、本明細書に添付した特許請求の範囲を限定しないものとする。
データパケットと共に含まれるか、又は、データパケットに紐付けられるメタデータであって、第１のデータネットワークから第２のデータネットワークへのデータパケットのルーティングを容易にするのに使用できるメタデータのいずれのタイプも、本明細書に添付した特許請求の範囲に含まれることになることがさらに理解されるべきである。
【００１４】
図３は、データパケットを第２のデータネットワークへ直接渡す必要があるかどうかを判断するための、別の一方法を示すフロー図である。
この別の方法では、データパケットに紐付けられたメタデータが、アプリケーション空間で実行されているアプリケーションへ送られる（ステップ３０）。
データパケットは、自身を何らかの形式のメタデータに紐付けており、このメタデータは、本方法の別の態様では、データパケットを第２のデータネットワークへ転送するかどうかを判断するのに使用されるものである、ということを理解すべきである。
したがって、データパケットに紐付けられたメタデータは、データ及びそれに紐付けられたメタデータを記憶するのに使用されたカーネルレベルバッファから抽出される。
アプリケーション空間で実行されているアプリケーションは、当該アプリケーションが受信するデータパケットに紐付けられたメタデータに従って、当該データパケットを第２のデータネットワークへ転送するかどうかについての判断を行う。
したがって、この判断を反映する通過インジケータが、アプリケーション空間で実行されているアプリケーションから受信される（ステップ３５）。
【００１５】
図４は、第２のデータネットワークへデータパケットを送るための、別の方法例を示すフロー図である。
ネットワーク処理機能を実施するアプリケーションは、通常、アプリケーション空間で実行される。
したがって、アプリケーション空間は、通常、オペレーティングシステムによって管理される。
さまざまな使用例では、ネットワーク処理機能を実行しているアプリケーションは、第１のデータネットワークから受信されたデータパケットがその後第２のデータネットワークへ転送される前に、通常、そのデータパケットに紐付けられたメタデータ（例えば、ヘッダ）を変更する必要がある。
本方法によれば、元のメタデータ及びデータパケット自体は、カーネルレベルバッファに記憶される。
この本方法の別の態様によれば、変更されたメタデータは、アプリケーション空間で実行されているアプリケーションから受信される（ステップ４０）。
次に、変更されたメタデータは、データパケットに紐付けられる（ステップ４５）。
これは、さらに、本方法の別の態様では、カーネルレベルバッファに記憶された元のメタデータの代わりに、変更されたメタデータを使用することによって行われる。
データパケットは、変更されたメタデータと共に、第２のデータネットワークへ送られる（ステップ５０）。
【００１６】
図５は、第２のデータネットワークへ送る必要がないデータパケットを処理するための、別の方法を示すフロー図である。
（図１に示すような）本方法によれば、データパケットを第２のデータネットワークへ転送する必要があるかどうかについての判断が行われる（ステップ１５）。
データパケットを第２のデータネットワークへ転送する必要がない場合、本方法の当該態様は、アプリケーション空間で実行されているアプリケーションへデータパケット自体を送ることを可能にする（ステップ６０）。
本方法のさらに別の態様では、これは、データパケットを記憶するのに使用されるカーネルレベルバッファに対する読み出し専用参照を提供することによって行われる。
本方法のさらに別の態様では、データパケット及びそれに紐付くメタデータを記憶するのに使用されるカーネルレベルバッファに対する読み出し専用参照を提供することによって行われる。
【００１７】
図６は、ネットワークプロセッサの一実施態様を示すブロック図である。
この実施態様によれば、ネットワークプロセッサは、１又は２以上のプロセッサ１００、第１のネットワークインターフェース１０５、第２のネットワークインターフェース１１５、及びメモリ１３０を備える。
これらの要素のすべては、バス１２５によって相互に通信接続されている。
【００１８】
この実施態様では、ネットワークプロセッサは、さらに、メモリ１３０に記憶された１又は２以上の機能モジュールを備える。
機能モジュールは、１又は２以上のプロセッサ１００によって実行される命令シーケンスを備える。
プロセッサ１００は、特定の命令シーケンスを実行する時、本方法の指示に従った一定の機能を実行する。
「少なくともプロセッサに〜させる」という用語及びその類似表現は、プロセッサ１００が特定の機能モジュール（すなわち、命令シーケンス）を実行する時に、プロセッサ１００によって実行される機能のオープンエンドな列挙として働くものとする、ということを読み手に忠告しておく。
したがって、特定の機能モジュールが、プロセッサ１００に、添付した特許請求の範囲で定義した機能に追加した機能を実行させるという実施態様は、本明細書に添付した特許請求の範囲に含まれることになる。
【００１９】
これまでに説明した機能モジュール（及びそれらに対応する命令シーケンス）により、本方法の指示に従って第１のデータネットワークから第２のデータネットワークへデータを渡すことが可能になる。
ある実施態様では、これらの機能モジュールは、コンピュータ可読媒体上に付与される。
このような媒体の例には、ランダムアクセスメモリ、読み出し専用メモリ（ＲＯＭ）、コンパクトディスク（ＣＤ-ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、及び磁気テープが含まれるが、これらに限定されるものではない。
このコンピュータ可読媒体は、単独でスタンドアロン製品を構成することもできるし、組み合わせでスタンドアロン製品を構成することもでき、汎用の計算プラットフォームを、本明細書で提示した技術及び指示に従って第１のデータネットワークから第２のデータネットワークへデータパケットを渡すことができるデバイスに変換するのに使用することができる。
したがって、本明細書に添付した特許請求の範囲は、本方法及びここで述べる指示のすべてを実行できる命令シーケンスを付与されたこのようなコンピュータ可読媒体を含むことになる。
【００２０】
メモリ１３０には、プロトコルスタック１３５、受信送信モジュール１４０、及びアプリケーション１５０を含む１又は２以上の機能モジュールが記憶される。
別の実施態様では、アプリケーション１５０はネットワーク処理アプリケーションからなる。
さらに別の実施態様によれば、アプリケーション１５０はプロキシアプリケーションからなる。
さらに別の実施態様によれば、アプリケーション１５０はロードバランスアプリケーションからなる。
また、メモリ１３０は、データパケットを記憶するのに使用される。
データパケット１７０は、カーネルレベルバッファ１５５に記憶される。
さらに、別の実施態様では、メモリ１３０は、データパケットをアプリケーションレベルバッファ１６０に記憶するのにも使用される。
別の実施態様では、データパケットはメタデータ及びデータペイロードを含むことがさらに理解されるべきである。
【００２１】
図７は、ネットワークプロセッサのある実施態様における内部オペレーションを示すデータフロー図である。
この実施態様では、プロセッサ１００は、送受信モジュール１４０を実行する。
また、プロセッサ１００は、プロトコルスタック１３５Ａ、１３５Ｂという少なくとも２つのインスタンスを実行する。
プロトコルスタック１３５Ａの第１のインスタンスは、プロセッサ１００によって実行されると、少なくとも、プロセッサ１００に、第１のネットワークインターフェース１０５によって第１のデータネットワーク１１０からのデータパケットを受信させる。
プロトコルスタック１３５Ｂの第２のインスタンスは、プロセッサ１００によって実行されると、少なくとも、プロセッサ１００に、第２のネットワークインターフェース１１５によって第２のデータネットワーク１２０へデータパケットを搬送させる。
【００２２】
プロセッサ１００が送受信モジュール１４０を実行し続けると、送受信モジュール１４０は、少なくとも、プロセッサ１００に、プロセッサ１００によって実行されるプロトコルスタック１３５Ａの第１のインスタンスからのデータパケットを受け取らせる（１９０）。
データパケット１７０は、カーネルレベルバッファに記憶される（１８５）。
別の実施態様では、データパケットは、メタデータ１７５及びペイロードデータ１８０を含む。
さらに、送受信モジュール１４０は、プロセッサ１００によって実行されると、少なくとも、プロセッサ１００に、カーネルレベルバッファから、プロセッサ１００によって実行されるプロトコルスタック１３５Ｂの第２のインスタンスへデータパケット１７０を送らせる（１９５）。
別の実施態様では、プロセッサ１００は、プロトコルスタック１３５Ｂの第２のインスタンスに、データパケットがカーネルレベルバッファから第２のネットワーク１２０へ搬送されることを通知する転送信号２００を発生させる。
この結果、第２のネットワークインターフェース１１５を介して、第２のネットワーク１２０へデータパケットが搬送される。
別の実施態様では、プロトコルスタック１３５は、少なくとも、プロセッサ１００に、本方法の技術及び指示に従ってトランスポート層のデータパケットを受信させることにより、プロセッサ１００にデータパケットを受信させる。
【００２３】
別の実施態様では、送受信モジュール１４０は、少なくとも、プロセッサ１００が、カーネルレベルバッファに記憶されたデータパケット１７０からメタデータ１７５を取り出す（２０５）ことにより、プロセッサ１００に、プロトコルスタック１３５Ｂの第２のインスタンスへデータパケットを送らせる。
プロセッサ１００が送受信モジュール１４０を実行し続けると、送受信モジュール１４０は、さらに、少なくとも、プロセッサ１００に、アプリケーション空間で実行されているアプリケーション１５０へメタデータを送らせる（２１５）。
この別の実施態様では、アプリケーション空間で実行されているアプリケーション１５０は、プロセッサ１００によって実行されると、少なくとも、プロセッサ１００に、アプリケーション１５０が受信したメタデータに紐付いたデータパケットを第２のデータネットワーク１２０へ送る必要があるかどうかを判断させる。
この判断の結果は、プロセッサ１００がアプリケーション空間でアプリケーション１５０を実行し続けると、送受信モジュール１４０へ搬送して戻される通過インジケータ２２０に反映される。
カーネルレベルバッファに記憶されたデータパケットを第２のデータネットワーク１２０へ送る必要があることを通過インジケータ２２０が示している場合、受信送信モジュール１４０は、カーネルレベルバッファからプロトコルスタック１３５Ｂの第２のインスタンスへデータパケット１７０を送る。
【００２４】
さらに別の実施態様では、送受信モジュール１４０は、プロセッサ１００によって実行されると、少なくとも、プロセッサ１００に、アプリケーション空間で実行されているアプリケーション１５０から代わりの（すなわち、変更された）メタデータを受信させる（２２５）。
プロセッサ１００が、受信送信モジュール１４０というこの実施態様を実行し続けると、この変更されたメタデータは、カーネルレベルバッファに記憶された元のメタデータ１７５の代わりに使用される（２１０）。
プロセッサ１００が、送受信モジュール１４０というこの実施態様を実行し続けると、変更されたメタデータ１７５及びペイロードデータ１８０を含むデータパケットは、プロトコルスタック１３５Ｂの第２のインスタンスへ送られる。
ある実施態様では、メタデータはプロトコルヘッダを含むことが理解されるべきである。
さらに別の実施態様では、メタデータは、送信元アドレス、宛先アドレス、送信元ポート番号、及び宛先ポート番号を含む。
【００２５】
さらに別の実施態様の例では、送受信モジュール１４０は、カーネルレベルバッファに記憶されたデータパケットを第２のデータネットワーク１２０へ転送する必要がないと判断すると、アプリケーション１５０が、カーネルレベルバッファに記憶されたデータパケットにアクセスすることを可能にする。
ある実施態様では、これは、プロセッサ１００が、カーネルレベルバッファに記憶されたデータパケット１７０に対する読み出し専用参照を提供する（２３０）ため、プロトコルスタック１３５Ａの第１のインスタンスを実行すると行われる。
【００２６】
本方法及び本装置を、複数の代替方法および実施態様の観点から説明してきたが、当業者は、明細書を読んで図面を検討することにより、これらの代替、変更、置換、及び同等物が明らかとなるであろう。
したがって、添付した特許請求の範囲の真の精神及び範囲には、このようなすべての代替、変更、置換、及び同等物が含まれるものとする。
【図面の簡単な説明】
【００２７】
【図１】第１のデータネットワークから第２のデータネットワークへデータパケットを渡すための一実施方法を示すフロー図である。
【図２】第１のネットワークからデータパケットを受信するための、本方法の別の実施例を示すフロー図である。
【図３】データパケットを第２のデータネットワークへ直接渡す必要があるかどうかを判断するための、別の一方法を示すフロー図である。
【図４】第２のデータネットワークへデータパケットを送るための、別の実施方法を示すフロー図である。
【図５】第２のデータネットワークへ送る必要がないデータパケットを処理するための、別の方法を示すフロー図である。
【図６】ネットワークプロセッサの一実施態様を示すブロック図である。
【図７】ネットワークプロセッサの一実施態様の内部オペレーションを示すデータフロー図である。
【符号の説明】
【００２８】
１００・・・プロセッサ，
１１０，１２０・・・ネットワーク，
１０５，１１５・・・ネットワークインターフェース，
１３０・・・メモリ，
１３５・・・プロトコルスタック，
１４０・・・受信送信モジュール，
１５０・・・アプリケーション，
１５５・・・カーネルレベルバッファ，
１６０・・・アプリケーションバッファ，
１３５Ａ，１３５Ｂ・・・プロトコルスタック，
１４０・・・受信送信，
１５０・・・アプリケーション，
１７５・・・メタデータ，
１８０・・・データ，
【図１】
2006121699.tif 000003
【図２】
2006121699.tif 000004
【図３】
2006121699.tif 000005
【図４】
2006121699.tif 000006
【図５】
2006121699.tif 000007
【図６】
2006121699.tif 000008
【図７】
2006121699.tif 000009