(58)【調査した分野】(Int.Cl.,DB名)
ネットワークと接続してパケットを送受信するネットワークアダプタと、該パケットを格納するメインメモリと、該パケットに関する処理を行うソフトウェアを実行するCPU(Central Processing Unit)と、をバスを介して接続し、該パケットをDMA転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をDMA転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の3つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするパケット処理装置。
前記データプレーンソフトウェアは、前記メインメモリの前記受信ディスクリプタによる通知を受け取って、前記ネットワークアダプタからの前記パケットが前記メインメモリに格納されたことを検出した際に、
前記パケットのヘッダ部を解析して、該パケットの宛先IPアドレスが自パケット処理装置であった場合には、パケット最終ソフトウェアに該パケットの処理を依頼するために、前記メインメモリ内の前記パケット最終ソフトウェアが参照可能な領域に該パケットのペイロード部をコピーして、該ペイロード部を前記パケット終端ソフトウェアに引き継ぎ、
また、前記パケットのヘッダ部を解析して、該パケットの宛先IPアドレスが自パケット処理装置以外であった場合には、該パケットのヘッダ部を必要に応じて更新した後、前記ネットワークアダプタに対して該パケットの該ネットワークアダプタへのDMA転送を依頼する
ことを特徴とする請求項3に記載のパケット処理装置。
前記データプレーンソフトウェアは、前記メインメモリの前記受信ディスクリプタによる通知を受け取って、前記ネットワークアダプタからの前記パケットが前記メインメモリに格納されたことを検出した際に、
前記パケットのヘッダ部を解析した結果として該パケットを廃棄すると判定した場合には、前記メインメモリから該パケットを廃棄するとともに、前記受信ディスクリプタに設定されている前記識別情報を参照して、前記メインメモリに格納されている該パケットが、該パケットのヘッダ部であることを確認した場合、前記受信ディスクリプタに設定されている前記位置情報をさらに参照して、該位置情報が示す前記ネットワークアダプタ内の前記パケット保持領域の位置に保持されている該パケットの全てを削除することを、前記ネットワークアダプタに対して要求する
ことを特徴とする請求項3または4に記載のパケット処理装置。
前記データプレーンソフトウェアは、前記メインメモリに格納したパケットを前記ネットワークに送信するために、前記ネットワークアダプタに対して該パケットの該ネットワークアダプタへのDMA転送を依頼する際に、
DMA転送を依頼する前記パケットが格納されている前記メインメモリのアドレスと、該パケットが完全な状態のパケット全てまたは該パケットのヘッダ部のいずれであるかを識別する識別情報と、該パケットのヘッダ部をDMA転送する場合には該パケットの全てを保持している前記ネットワークアダプタ内の前記パケット保持領域の位置を示す位置情報と、を前記メインメモリに配置した送信ディスクリプタに設定して、前記ネットワークアダプタに通知する
ことを特徴とする請求項2ないし5のいずれかに記載のパケット処理装置。
前記ネットワークアダプタは、前記メインメモリから自ネットワークアダプタへの前記パケットのDMA転送の依頼を前記データプレーンソフトウェアから受け取った際に、
前記メインメモリの前記送信ディスクリプタを参照して、該送信ディスクリプタに設定されている前記メインメモリの前記アドレスが示すアドレスから自ネットワークアダプタへ、前記パケットをDMA転送し、
前記送信ディスクリプタに設定されている前記識別情報が、DMA転送した前記パケットが完全な状態のパケット全てであることを示している場合には、該パケットをそのまま前記ネットワークに送信し、
また、前記送信ディスクリプタに設定されている前記識別情報が、DMA転送した前記パケットがパケットのヘッダ部であることを示している場合には、前記送信ディスクリプタに設定されている前記位置情報が示す前記パケット保持領域の位置に保持している前記パケット全てのうちヘッダ部を、DMA転送した前記パケットのヘッダ部により更新して、該ヘッダ部を更新した前記パケット全てを前記ネットワークに送信する
ことを特徴とする請求項6に記載のパケット処理装置。
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するCPU(Central Processing Unit)とをバスを介して接続し、該パケットをDMA転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作を制御し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をDMA転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の3つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするバス転送制御方法。
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するCPU(Central Processing Unit)とをバスを介して接続し、該パケットをDMA転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作の制御をコンピュータによって実行し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をDMA転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の3つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするバス転送制御プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0010】
前述の
図7に現状の技術として示したパケット処理装置100Aにおいてパケット転送に関する全体性能は、ソフトウェアを実行するCPU110Aの処理性能、ネットワークアダプタ130Aのパケット送受信性能、DMA転送の通過ルートであるバス151A、バスブリッジ140A、バス152Aのスループットに依存して決定される。DMA転送の通過ルートであるバス(バス151A、バスブリッジ140A、バス152A)に関して、PCI Expressのような業界標準規格を適用している場合には、そのスループットはバス規格によって定められている。
【0011】
その結果、現状においては、CPU110Aやネットワークアダプタ130Aの高性能化に伴って、バスのスループットが、パケット処理装置100Aのパケット転送に関する全体性能のボトルネックとなっている。このため、転送するパケットのデータ量が多くなると、バス(バス151A、バスブリッジ140A、バス152A)は、ネットワークアダプタ130Aとメインメモリ120Aとの間のパケットの転送のために占有されてしまう状態に陥り、CPU110Aは、メインメモリ120A上のデータにアクセスすることができなくなり、パケット処理装置100Aのシステム性能が低下してしまう事態になる。
【0012】
したがって、現状のパケット処理装置100Aにおいて、CPU110Aの処理能力を向上させ、パケット処理装置100A全体のシステム性能を向上させるためには、ネットワークアダプタ130Aとメインメモリ120Aとの間でDMA転送されるパケットによってバス(バス151A、バスブリッジ140A、バス152A)が占有されてしまうことを防止することが非常に重要になっている。
【0013】
(本開示の目的)
本開示の目的は、かかる事情に鑑み、メインメモリに接続されるバスに関し、パケットのDMA転送による該バスの占有を防止することが可能なパケット処理装置、バス転送制御方法およびバス転送制御プログラムを提供することにある。
【課題を解決するための手段】
【0014】
前述の課題を解決するため、本発明によるパケット処理装置、バス転送制御方法およびバス転送制御プログラムは、主に、次のような特徴的な構成を採用している。
【0015】
(1)本発明によるパケット処理装置は、
ネットワークと接続してパケットを送受信するネットワークアダプタと、該パケットを格納するメインメモリと、該パケットに関する処理を行うソフトウェアを実行するCPU(Central Processing Unit)と、をバスを介して接続し、該パケットをDMA転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をDMA転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の3つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とする。
【0016】
(2)本発明によるバス転送制御方法は、
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するCPU(Central Processing Unit)とをバスを介して接続し、該パケットをDMA転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作を制御し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をDMA転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の3つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とする。
【0017】
(3)本発明によるバス転送制御プログラムは、
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するCPU(Central Processing Unit)とをバスを介して接続し、該パケットをDMA転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作の制御をコンピュータによって実行し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をDMA転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の3つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とする。
【発明の効果】
【0018】
本発明のパケット処理装置、バス転送制御方法およびバス転送制御プログラムによれば、主に、以下のような効果を奏することができる。
【0019】
すなわち、本発明においては、パケット処理装置におけるパケット処理に関する各機能を、下位ハードウェアのネットワークアダプタ、中位ソフトウェアのデータプレーンソフトウェア、上位ソフトウェアのパケット終端ソフトウェアと3つの階層に階層構造化して、それぞれの階層間で引き渡すべきパケットを、ヘッダ部のみ、ペイロード部のみ、パケットの全て(すなわちヘッダ部とペイロード部との双方)、と分類することにより、メインメモリのバス上を転送するパケットのデータ転送量を削減することを可能にしている。
【0020】
而して、パケットのデータ転送によってバスが占有されてしまうといういわゆるバスボトルネックを防止することができ、その結果として、パケット処理の中核を担うデータプレーンソフトウェアの処理性能を改善することができるので、パケット処理装置全体のシステム性能を向上させることができる。
【発明を実施するための形態】
【0022】
以下、本発明によるパケット処理装置、バス転送制御方法およびバス転送制御プログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明によるパケット処理装置およびバス転送制御方法について説明するが、かかるバス転送制御方法をコンピュータにより実行可能なバス転送制御プログラムとして実施するようにしても良いし、あるいは、バス転送制御プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではないことも言うまでもない。
【0023】
(本発明の特徴)
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、CPU上で動作するソフトウェアによりパケット処理を行うパケット処理装置において、パケット転送時に発生するネットワークアダプタとメインメモリとの間のバス上のデータ転送性能が、当該パケット処理装置全体のパケット処理性能のボトルネックとなって、パケット処理性能が低下することを防止するために、ネットワークアダプタとメインメモリとの間のバス上を流れるパケットに関するデータを必要最小限の部分に限定することによって、バス上の転送データ量を削減することを主要な特徴としている。
【0024】
つまり、パケット処理装置におけるパケット処理に関する各機能を、ネットワークアダプタの下位ハードウェア、データプレーンソフトウェアからなる中位ソフトウェア、パケット終端処理ソフトウェアからなる上位ソフトウェアとの3つの階層に階層構造化して、それぞれの階層間で引き渡すべきパケットに関するデータを、該パケットのヘッダ部のみ、該パケットのペイロード部のみ、該パケットの全て(ヘッダ部とペイロード部との双方)、に分類することにより、メインメモリに転送するバス上のパケットの転送データ量を削減することを、主要な特徴としている。
【0025】
本発明の特徴をさらに説明すると、次の通りである。パケット処理装置のメインメモリとネットワークアダプタとの間のバス上にDMA転送されるパケットは、一般に、ヘッダ部とペイロード部とから構成されている。ヘッダ部には、パケットを宛先へ到達させるために必要な情報が設定されており、ペイロード部には、送信元が宛先へ届ける必要があるデータが設定されている。
【0026】
図1は、OSI(Open System Interconnection)参照モデルのLayer2〜Layer4のヘッダ部とペイロード部とから構成されるパケットの一例を示すテーブルである。
図1に示すように、パケット10は、ヘッダ部11とペイロード部12とから構成されている。ヘッダ部11は、Layer2ヘッダ11a、Layer3ヘッダ11b、Layer4ヘッダ11cから構成され、ペイロード部12は、宛先向けの情報であるペイロード12aが設定されている。ヘッダ部11に関しては、一般的には、Layer2ヘッダ11aとしてEthernet(登録商標)ヘッダ、Layer3ヘッダ11bとしてIPv4(Internet Protocol Version 4)ヘッダまたはIPv6(Internet Protocol Version 6)ヘッダ、Layer4ヘッダ11cとしてTCP(Transmission Control Protocol)ヘッダまたはUDP(User Datagram Protocol)ヘッダなどが用いられることが多い。また、Layer2ヘッダ11a、Layer3ヘッダ11b、Layer4ヘッダ11bの各ヘッダは、それぞれのLayerの送信元や宛先を示す情報、次ヘッダのプロトコル種別などの情報を保持している。
【0027】
DMA転送によりネットワークアダプタからメインメモリ上に転送されたパケット10は、パケット処理用のソフトウェア(データプレーンソフトウェアやパケット終端ソフトウェア)から参照されるが、必ずしも、全てのパケット10についてヘッダ部11とペイロード部12との両方が参照されるわけではない。パケット10の宛先が当該パケット10を処理しているパケット処理装置自身であった場合には、ヘッダ部11は中位ソフトウェアのデータプレーンソフトウェアから参照され、ペイロード部12は上位ソフトウェアのパケット終端ソフトウェアから参照される。
【0028】
また、パケット10の宛先が当該パケットを処理しているパケット処理装置以外であった場合には、ヘッダ部11のみが転送先を決定するために、中位ソフトウェアのデータプレーンソフトウェアから参照される。該データプレーンソフトウェアによっては、パケット10の転送先の決定に加えて、NAPT(Network Address Port Translation)、ファイアウォール、フィルタリングなど様々なネットワーク機能を実行するが、これらの各機能もヘッダ部11のみの参照・更新によって実現することが可能になる場合がほとんどである。
【0029】
かくのごとき観点から、本発明においては、ネットワークアダプタにて受信したパケットのメインメモリへのDMA転送対象を必要な部分のみに限定することによって、ネットワークアダプタとメインメモリとの間のバス上を流れるデータ量を削減し、バスの性能ボトルネックを緩和する。ここで、DMA転送対象の必要な部分とは、例えば当該パケット処理装置内で終端するパケットに関しては、ヘッダ部とペイロード部との両方であり、当該パケット処理装置内では終端しないで他のパケット処理装置に転送するパケットに関しては、ヘッダ部のみとなる。パケット転送を主目的とするパケット処理装置の場合は、ネットワークからネットワークアダプタに入力されたパケットの大半は、他のパケット処理装置に転送されるので、本発明により、ネットワークアダプタとメインメモリとの間のバス上を流れるデータ量を大幅に削減することが可能になる。
【0030】
つまり、本発明におけるパケット処理装置は、一般的なソフトウェアによってパケット処理装置が具備している機能に加えて、以下の機能をさらに具備することにより、メインメモリへのバスを経由したパケットのDMA転送対象範囲を必要な部分のみに限定したパケット処理を実現することを主要な特徴としている。
【0031】
(1)ネットワークアダプタにおけるパケット受信時に、メインメモリへ受信パケット全体をDMA転送するか、受信パケットの一部(少なくともヘッダ部を含むデータ)のみをDMA転送するかを選択する機能。
【0032】
(2)ネットワークアダプタからメインメモリへ受信パケットの一部(少なくともヘッダ部を含むデータ)のみをDMA転送する場合、ネットワークアダプタ内に受信パケットの全体を保持しておきつつ、受信パケットの一部(少なくともヘッダ部を含むデータ)のみをメインメモリへDMA転送し、該受信パケットの一部に対してソフトウェア処理を施すことによって該受信パケットの一部(少なくともヘッダ部を含むデータ)の更新やネットワークアダプタ内の出力先ポートの決定を行い、しかる後、該受信パケットの一部(少なくともヘッダ部を含むデータ)をメインメモリからネットワークアダプタへDMA転送し、DMA転送した該受信パケットの一部(少なくともヘッダ部を含むデータ)を用いて、ネットワークアダプタ内に保持しておいた受信パケットの全体に対してソフトウェアで実施した更新を反映して送信する機能。
【0033】
(3)ネットワークアダプタからメインメモリへ受信パケットの一部(少なくともヘッダ部を含むデータ)のみをDMA転送する場合、ネットワークアダプタ内に受信パケットの全体を保持しておきつつ、受信パケットの一部(少なくともヘッダ部を含むデータ)のみをメインメモリへDMA転送し、該受信パケットの一部(少なくともヘッダ部を含むデータ)に対してソフトウェア処理を施した結果、該受信パケットを廃棄する必要があると判定した場合、ネットワークアダプタ内に保持しておいた受信パケットの全体を廃棄する機能。
【0034】
次に、パケット処理装置における受信パケットに対する処理の流れについて
図2を用いてさらに説明する。
図2は、本発明に係るパケット処理装置の受信パケットに対する処理の流れの一例を説明するための説明図である。
図2の説明図に示すように、パケットに関する処理を行うソフトウェアを、受信したパケットのヘッダ部を解析して自パケット処理装置100が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェア300と、自パケット処理装置100が該パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェア310と、に分離している。そして、前記パケットに関する処理を行う各機能を、ネットワークアダプタ130の下位ハードウェアと、データプレーンソフトウェア300の中位ソフトウェアと、パケット終端ソフトウェア310の上位ソフトウェアと、の3つの階層に階層化し、かつ、受信したパケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部、該パケットの全て、のいずれかを選択して引き渡すように構成している。
【0035】
図2の説明図において、最初に、パケット処理装置100内で終端するパケットの流れを示す符号20〜符号22を参照しながら受信パケット全体をネットワークアダプタ130からメインメモリ120にDMA転送する場合の流れを説明する。ネットワークアダプタ130は、ネットワーク200からパケット20を受信すると、ネットワークアダプタ内パケット保持領域135に保持し、保持したパケット20に対して該パケット20全体をDMA転送するか、または、該パケット20の一部のみをDMA転送するかを判定する。そして、当該パケット処理装置100内で終端するパケットであった場合には、該パケット20全体のDMA転送を選択する。
【0036】
ネットワークアダプタ130は、該選択結果に従い、パケット20の全体(すなわちヘッダ部とペイロード部との両方)を、DMA転送によりデータプレーンソフトウェア300が参照するメインメモリ120上のデータプレーンソフトウェア参照可能メインメモリ領域122へパケット21として格納する。ネットワークアダプタ130は、パケット20のデータプレーンソフトウェア参照可能メインメモリ領域122への格納完了後、ネットワークアダプタ内パケット保持領域135から該パケット20を廃棄する。つまり、パケット21は、パケット20のDMA転送の結果として、データプレーンソフトウェア参照可能メインメモリ領域122に保持されたパケット20のコピーである。
【0037】
データプレーンソフトウェア300は、データプレーンソフトウェア参照可能メインメモリ領域122に保持したパケット21を解析した結果、該パケット21がパケット処理装置内のパケット終端ソフトウェア310にて処理するパケットであると判定すると、パケット21のペイロード部をパケット終端ソフトウェア参照可能メインメモリ領域123へペイロード部22としてコピーする。データプレーンソフトウェア300は、パケット終端ソフトウェア参照可能メインメモリ領域123へのパケット21のペイロード部のコピー終了後に、データプレーンソフトウェア参照可能メインメモリ領域122から該パケット21を削除する。パケット終端ソフトウェア310は、パケット終端ソフトウェア参照可能メインメモリ領域123に保持したペイロード部22を参照して、パケット終端ソフトウェア310自身の処理を実施する。
【0038】
次に、
図2の説明図において、パケット処理装置100がネットワーク200から受け取ったパケットをネットワーク201へ転送する際のパケットの流れを示す符号30〜31を参照しながら該パケットの一部(少なくともヘッダ部を含むデータ)のみをネットワークアダプタ130からメインメモリ120にDMA転送する場合の流れを説明する。ネットワークアダプタ130は、ネットワーク200からパケット30を受信すると、ネットワークアダプタ内パケット保持領域135に保持し、保持したパケット30に対して該パケット30全体をDMA転送するか、または、該パケット30の一部(少なくともヘッダ部を含むデータ)のみをDMA転送するかを判定する。そして、該パケット30の最終的な宛先が自パケット処理装置100ではなくネットワーク201へ転送するパケットであった場合には、該パケット30の一部(少なくともヘッダ部を含むデータ)のみのDMA転送を選択する。
【0039】
ネットワークアダプタ130は、該選択結果に従い、パケット30の一部(少なくともヘッダ部を含むデータ)のみを、DMA転送によりデータプレーンソフトウェア300が参照するメインメモリ120上のデータプレーンソフトウェア参照可能メインメモリ領域122へヘッダ部31として格納するとともに、データプレーンソフトウェア300に対して、格納したヘッダ部31がパケット30の一部であることを通知する。ネットワークアダプタ130は、パケット30のヘッダ部のデータプレーンソフトウェア参照可能メインメモリ領域122への格納完了後も、パケット30をネットワークアダプタ内パケット保持領域135に保持し続ける。つまり、ヘッダ部31は、パケット30のヘッダ部のDMA転送の結果として、データプレーンソフトウェア参照可能メインメモリ領域122に保持されたパケット30のヘッダ部のコピーである。
【0040】
データプレーンソフトウェア300は、データプレーンソフトウェア参照可能メインメモリ領域122に保持したヘッダ部31に対して一般的なデータプレーン処理を行うことによって、該ヘッダ部31に関するパケット(すなわちパケット30)の出力先ポートを決定するとともに、ヘッダ部31の更新を行う。しかる後、データプレーンソフトウェア300は、ネットワークアダプタ130に対して、データプレーンソフトウェア参照可能メインメモリ領域122に保持したヘッダ部31がパケット30の一部であることを通知した上で、該ヘッダ部31のDMA転送依頼を行う。
【0041】
ネットワークアダプタ130は、データプレーンソフトウェア300からのヘッダ部31のDMA転送依頼を受け取ると、該ヘッダ部31をデータプレーンソフトウェア参照可能メインメモリ領域122からネットワークアダプタ内パケット保持領域135へDMA転送し、ネットワークアダプタ内パケット保持領域135に保持しているパケット30のヘッダ部をDMA転送してきたヘッダ部31にて上書きする。しかる後、ネットワークアダプタ130は、ヘッダ部がデータプレーンソフトウェア300によりヘッダ部31に更新された状態になったパケット30をネットワーク201へ送信する。
【0042】
最後に、
図2の説明図において、パケット30が、データプレーンソフトウェア300によるパケット30のヘッダ部31の解析結果に基づいて、廃棄される場合について説明する。データプレーンソフトウェア300は、データプレーンソフトウェア参照可能メインメモリ領域122に保持したヘッダ部31の解析結果として、該ヘッダ部31に関するパケット(すなわちパケット30)を廃棄することを決定した場合、該ヘッダ部31をデータプレーンソフトウェア参照可能メインメモリ領域122から廃棄するとともに、ヘッダ部31に関するパケット(すなわちパケット30)の廃棄要求を、ネットワークアダプタ130に対して通知する。ネットワークアダプタ130は、データプレーンソフトウェア300からヘッダ部31に関するパケット(すなわちパケット30)の廃棄要求の通知を受け取ると、該廃棄要求に基づいてパケット30をネットワークアダプタ内パケット保持領域135から廃棄する。
【0043】
(本発明の実施形態の構成例)
次に、本発明に係るパケット処理装置の実施形態について説明する。まず、本発明に係るパケット処理装置の内部構成についてその一例を、
図3を参照しながら詳細に説明する。
図3は、本発明に係るパケット処理装置の内部構成の一例を示すブロック構成図である。
【0044】
図3に示すパケット処理装置100は、CPU110、メインメモリ120、ネットワークアダプタ130から構成されており、ネットワークアダプタ130内のパケット送受信ポート137,138からそれぞれネットワーク200、ネットワーク201に接続されている。また、CPU110、メインメモリ120、ネットワークアダプタ130は、それぞれ、バスブリッジ140によってバス150,151,152を介して接続されている。
【0045】
CPU110は、メインメモリ120、ネットワークアダプタ130の動作を制御するとともに、パケットの処理を行うデータプレーンソフトウェア300およびパケット終端ソフトウェア310を動作させることが可能である。そして、CPU110は、メインメモリ120を参照しながら、パケット処理に関する中位ソフトウェアであるデータプレーンソフトウェア300を動作させることによってパケットの処理を行い、該パケットの宛先が当該パケット処理装置100であった場合には、パケット処理に関する上位ソフトウェアであるパケット終端ソフトウェア310を動作させることによって、該パケットのペイロード部を処理する。
【0046】
なお、
図2において前述したように、パケット処理に関する各機能に関して階層構造化しており、ネットワークアダプタ130は、パケットの処理に関しては、中位ソフトウェアのデータプレーンソフトウェア300、上位ソフトウェアのパケット終端ソフトウェア310に対して下位側に位置する下位ハードウェアとして機能する。
【0047】
図3のメインメモリ120内には、一般的なデータプレーンソフトウェア300がパケットの送受信を行うためのデータ領域として、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122、受信ディスクリプタ124、送信ディスクリプタ125が配置される。また、パケット終端ソフトウェアが当該パケット処理装置100宛パケットの最終的な処理を行うためのデータ領域として、パケットバッファ121内にパケット終端ソフトウェア参照可能領域123が配置される。
【0048】
パケットバッファ121内のデータプレーンソフトウェア参照可能領域122は、ネットワークアダプタ130からDMA転送されたパケット自身とパケット処理を行うに当たって必要となる制御データとを保持するためのバッファである。受信ディスクリプタ124は、ネットワークアダプタ130からパケットバッファ121に向かう方向のDMA転送を制御するためのデータ領域である。送信ディスクリプタ125は、パケットバッファ121からネットワークアダプタ130に向かう方向のDMA転送を制御するためのデータ領域である。また、パケットバッファ121内のパケット終端ソフトウェア参照可能領域123は、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122から転送されたパケットのペイロード部を保持するためのバッファである。
【0049】
なお、本実施形態においては、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122の制御データ、受信ディスクリプタ124、送信ディスクリプタ125のそれぞれには、パケットに関する一般的なデータに加えて、少なくとも、以下のデータをさらに保持している。
【0050】
(A) パケットバッファ121内のデータプレーンソフトウェア参照可能領域122のパケットがパケット全体か一部(ヘッダ情報のみ)かを示す識別情報
(B) ネットワークアダプタ130内に保持しているパケットの位置を示す位置情報(すなわちパケット保持領域135内の位置情報)
【0051】
ネットワークアダプタ130がネットワーク200,201から受信したパケット全体をパケットバッファ121内のデータプレーンソフトウェア参照可能領域122へDMA転送する場合には、前記(A)の識別情報には、完全なパケットを示す値が設定される。ネットワークアダプタ130がネットワークから受信したパケットの一部(少なくともヘッダ情報を含むデータ)のみをパケットバッファ121内のデータプレーンソフトウェア参照可能領域122へDMA転送する場合には、前記(A)の識別情報には、部分的なパケットであることを示す値が設定される。また、前記(B)の位置情報の値は、前記(A)の識別情報が部分的なパケットを示す値である場合にのみ有効な値として保証される。
【0052】
本パケット処理装置100において他のパケット処理装置に対してパケット転送を行う場合、前記(A)の識別情報、前記(B)の位置情報は、以下のように、受信ディスクリプタ124、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122、送信ディスクリプタ125の順に伝搬される。
【0053】
(1)ネットワークアダプタ130が、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122へDMA転送する際に、まず、受信ディスクリプタ124へ前記(A)の識別情報、前記(B)の位置情報を書き込む。
【0054】
(2)次に、データプレーンソフトウェア300が、ネットワークアダプタ130からパケットバッファ121内のデータプレーンソフトウェア参照可能領域122へのDMA転送を受け取った際に、受信ディスクリプタ124内の前記(A)の識別情報、前記(B)の位置情報を、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122の制御データへ書き込む。
【0055】
(3)しかる後、データプレーンソフトウェア300がネットワークアダプタ130へDMA転送を依頼する際に、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122の制御データ内の前記(A)の識別情報、前記(B)の位置情報を、送信ディスクリプタ125へ書き込む。
【0056】
また、本パケット処理装置100自身が作成したパケットを送信する場合には、データプレーンソフトウェア300がパケットバッファ121内のデータプレーンソフトウェア参照可能領域122の制御データへ前記(A)の識別情報を書き込む。この時、前記(A)の識別情報は、完全なパケットを示す値になる。次に、データプレーンソフトウェア300がネットワークアダプタ130へDMA転送を依頼する際に、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122の制御データ内の前記(A)の識別情報を送信ディスクリプタ125へ書き込む。
【0057】
次に、ネットワークアダプタ130の内部構成について説明する。ネットワークアダプタ130は、DMA制御部131、パケット保持領域135、パケット送受信ポート137、パケット送受信ポート138から構成され、それぞれがネットワークアダプタ130内の内部バス136を介して接続される。また、パケット送受信ポート137とパケット送受信ポート138とは、それぞれ、ネットワーク200とネットワーク201とのそれぞれに接続される。
【0058】
ネットワークアダプタ130内のDMA制御部131は、受信処理部132と送信処理部133と受信DMAルールテーブル134とから構成される。受信処理部132は、パケット送受信ポート137またはパケット送受信ポート138から受信してパケット保持領域135に保持するパケットを、受信DMAルールテーブル134内に事前登録されたルールに従って処理する。受信DMAルールテーブル134には、複数のルールを登録することが可能であり、各ルールは、条件とアクションとから構成される。受信処理部132は、パケット受信時に、受信DMAルールテーブル134内に登録されたルールの条件に一致するアクションを実行する。
【0059】
受信DMAルールテーブル134に事前登録されるルールの条件には、パケット内の各種フィールド値を設定することが可能である。また、受信DMAルールテーブル134に事前登録されるアクションとしては、例えば、以下のように、受信パケット全体をメインメモリ120へDMA転送するか、受信パケットの一部(少なくともヘッダ部を含むデータ)のみをメインメモリ120へDMA転送するか、あるいは、受信パケットを廃棄するか等に関して設定することが可能である。
【0060】
(a)受信パケット全体をメインメモリ120へDMA転送
(b)受信パケットのLayer2ヘッダをメインメモリ120へDMA転送
(c)受信パケットのLayer2ヘッダ、Layer3ヘッダをメインメモリ120へDMA転送
(d)受信パケットのLayer2ヘッダ、Layer3ヘッダ、Layer4ヘッダをメインメモリ120へDMA転送
(e)受信パケットの先頭から受信DMAルールテーブル134に事前に設定された指定サイズまでのデータをメインメモリ120へDMA転送
(f)受信パケットを廃棄
【0061】
受信処理部132は、受信パケットの一部のみをメインメモリ120へDMA転送する場合、該受信パケットの一部をメインメモリ120上のパケットバッファ121内のデータプレーンソフトウェア参照可能領域122へのDMA転送を完了した後も、該受信パケット全体をパケット保持領域135に保持したままとする。
【0062】
また、送信処理部133は、メインメモリ120上のパケットバッファ121内のデータプレーンソフトウェア参照可能領域122のデータをネットワークアダプタ130へDMA転送する。ネットワークアダプタ130は、メインメモリ120からDMA転送したデータがパケット全体を示すデータの場合は、そのまま、パケット送受信ポート137またはパケット送受信ポート138へ送信することにより、ネットワーク200またはネットワーク201へ送信する。一方、メインメモリ120からDMA転送したデータが、パケットの一部のみを示すデータの場合は、DMA転送したパケットの一部を用いてパケット保持領域135内に保持されているパケットの該当部分を更新した後、更新後のパケットを、パケット送受信ポート137またはパケット送受信ポート138へ送信することにより、ネットワーク200またはネットワーク201へ送信する。
【0063】
(本発明の実施形態の動作の説明)
((パケット受信時の動作例))
次に、本発明の一実施形態として説明した
図3のパケット処理装置100の動作について、その一例を詳細に説明する。まず、
図3のパケット処理装置100がネットワーク200,201からパケットを受信した場合の動作例について
図4A、
図4Bのフローチャートを参照しながら説明する。
図4Aおよび
図4Bは、
図3に示したパケット処理装置100のパケット受信時の動作の一例を説明するためのフローチャートにおける前半部分および後半部分をそれぞれ示す図である。このフローチャートは、本来1枚の紙面に一体で記載することが好ましいが、紙面の大きさの制限から、そのフローチャートを前半部分および後半部分に分け、前半部分を
図4Aに、後半部分を
図4Bにそれぞれ記載した。そこで、以下の説明では、
図4Aおよび
図4Bの両図を連接することにより構成されるフローチャートを、
図4と記載することとする。
【0064】
図4のフローチャートにおいて、まず、パケット処理装置100のネットワークアダプタ130内の受信処理部132は、パケット送受信ポート137,138を介してネットワーク200,201からのパケットを受信すると、該パケットのヘッダ部の解析を行い、該パケットに関するDMAルールを判定する(ステップS101)。すなわち、受信処理部132は、受信パケットのヘッダ部から抽出したフィールド値により受信DMAルールテーブル134に事前登録されているDMAルールの条件を検索して、該フィールド値と一致した条件に該当するDMAルールのアクションを抽出することにより、該受信パケットに関して如何なるアクションを行うべきかというDMAルールを判定する。
【0065】
受信処理部132は、該受信パケットに関するDMAルールの判定結果に基づいて、処理を分岐して、それぞれに該当する該受信パケットに関する処理を行う(ステップS102)。DMAルールの判定結果が廃棄であった場合には(ステップS102の「廃棄」の場合)、受信処理部132は、該受信パケットを廃棄する(ステップS103)。また、DMAルールの判定結果が該受信パケット全体のDMA転送を示した場合には(ステップS102の「全体をDMA転送」の場合)、受信処理部132は、該受信パケット全体をメインメモリ120上のパケットバッファ121内のデータプレーンソフトウェア参照可能領域122へDMA転送する(ステップS104)。
【0066】
また、DMAルールの判定結果が一部(少なくともヘッダ情報を含むデータ)のDMA転送を示した場合には(ステップS102の「一部をDMA転送」の場合)、受信処理部132は、まず、パケット保持領域135に該受信パケット全体を保持する。さらに、受信処理部132は、該受信パケットのヘッダ部のフィールド値と「条件」が一致した受信DMAルールテーブル134の「アクション」に指定されている指定サイズを取り出し、該受信パケットのうち、該指定サイズに該当するパケットの一部を、メインメモリ120上のパケットバッファ121内のデータプレーンソフトウェア参照可能領域122へDMA転送する(ステップS105)。
【0067】
ここで、パケット処理装置100のネットワークアダプタ130内の受信DMAルールテーブル134に事前登録されている登録内容の具体例について、
図5を用いて説明する。
図5は、
図3に示したパケット処理装置100のネットワークアダプタ130内の受信DMAルールテーブル134に事前登録されている登録内容の一例を示すテーブルであり、データプレーンソフトウェア300が、一般的なIPルーティングを行うことを想定した場合すなわちLayer3転送を行うことを想定した場合のDMAルールの登録例を示している。
【0068】
図5に示す受信DMAルールテーブル134は、条件欄134aとアクション欄134bとから構成されており、条件欄134aには、上から順番に、「宛先MACアドレスが自ネットワークアダプタ130のアドレス以外」、「宛先IPアドレスが自パケット処理装置100のアドレス」、「Ether TypeがIPv4およびIPv6以外」、「プロトコルがTCP」、「プロトコルがUDP」、「上記以外のパケット」が登録されている例を示している。また、アクション欄134bには、条件欄134aのそれぞれの条件に関連付けて、上から順番に、「廃棄」、「パケット全体をDMA転送」、「パケット全体をDMA転送」、「先頭からTCPヘッダまでをDMA転送」、「先頭からUDPヘッダまでをDMA転送」、「先頭からIPヘッダまでをDMA転送」が登録されている例を示している。
【0069】
図5に示す受信DMAルールテーブル134の場合には、ステップS101,S102のDMAルール判定処理において、受信DMAルールテーブル134の上から順番に、受信パケットのヘッダ部のフィールド値と一致する条件を検索する処理を行い、ステップS103〜ステップS105において、それぞれ、該フィールド値と一致した条件に該当するアクションを実行する。
【0070】
つまり、受信パケットの宛先MACアドレスが自パケット送受信ポート137,138のアドレスと異なる場合には、受信DMAルールテーブル134の番号1の条件欄134aに一致するので、ステップS103において、該受信パケットを廃棄する。また、宛先MACアドレスが自パケット送受信ポート137,138のいずれか該受信パケットを受け取った方のアドレスと一致する場合には、受信DMAルールテーブル134の番号1の条件欄134aには一致しないので、受信DMAルールテーブル134の番号2のDMAルール判定処理へ進む。
【0071】
そして、受信パケットの宛先IPアドレスが該受信パケットを処理している自パケット処理装置100自身のIPアドレスと一致する場合には、受信DMAルールテーブル134の番号2の条件欄134aに一致するので、ステップS104において、該受信パケット全体をDMA転送する。なお、パケット全体をDMA転送する場合には、ネットワークアダプタ130の受信処理部132は、メインメモリ120の受信ディスクリプタ124に、パケットバッファ121にDMA転送した該受信パケットが完全なパケット全体であることを示す識別情報を書き込む。また、該識別情報には、該受信パケットをDMA転送したパケットバッファ121の位置に関する情報も設定される。
【0072】
さらに、受信パケットの宛先MACアドレスが自パケット送受信ポート137,138のいずれか該受信パケットを受け取った方のアドレスと一致しているものの、該受信パケットの宛先IPアドレスが自パケット処理装置100自身のIPアドレスと一致していない場合には、受信DMAルールテーブル134の番号3のDMAルール判定処理へ進む。
【0073】
そして、該受信パケットがIPパケット以外(すなわち、Ether TypeがIPv4およびIPv6以外のパケット)であって例えばARP(Address Resolution Protocol)パケットであった場合には、受信DMAルールテーブル134の番号3の条件欄134aに一致するので、ステップS104において、ネットワークアダプタ130の受信処理部132は、該受信パケット全体をメインメモリ120のパケットバッファ121にDMA転送するとともに、メインメモリ120の受信ディスクリプタ124にも該受信パケットが完全なパケット全体であることを示す識別情報を書き込む。なお、該識別情報には、該受信パケットをDMA転送したパケットバッファ121の位置に関する情報も設定される。
【0074】
さらに、受信パケットの宛先MACアドレスが自パケット送受信ポート137,138のいずれか該受信パケットを受け取った方のアドレスと一致している場合であって、かつ、該受信パケットの宛先IPアドレスが自パケット処理装置100自身のIPアドレスとは異なるIPパケット(すなわち、Ether TypeがIPv4またはIPv6のパケット)であった場合には、受信DMAルールテーブル134の番号4〜6のいずれかのDMAルールの条件に一致する。
【0075】
したがって、ステップS105において、ネットワークアダプタ130の受信処理部132は、該受信パケットの一部をメインメモリ120のパケットバッファ121にDMA転送する。すなわち、該受信パケットの先頭から、受信DMAルールテーブル134の一致した条件に該当するアクション欄134bに設定されている指定サイズ分に相当するデータ(該当するアクション欄134bにて指定された、ヘッダ部を少なくとも含むデータ範囲)を抽出して、メインメモリ120のパケットバッファ121にDMA転送する。
【0076】
なお、受信DMAルールテーブル134の番号4〜6のいずれかのDMAルールの条件に一致する場合には、該受信パケットは、最終的には、ネットワークアダプタ130から、ネットワーク200またはネットワーク201へ再度転送する必要があるので、ネットワークアダプタ130は、データプレーンソフトウェア300からの何らかの指示が届くまで、該受信パケット全体をパケット保持領域135に保持したままにする。
【0077】
さらに、ステップS105においては、ネットワークアダプタ130の受信処理部132は、メインメモリ120のパケットバッファ121にDMA転送したデータが、該受信パケットの一部(すなわち、部分的なパケット)であることを示す識別情報と該受信パケット全体を保持しているパケット保持領域135内の位置情報とを、メインメモリ120の受信ディスクリプタ124に書き込む。なお、該識別情報には、該受信パケットをDMA転送したパケットバッファ121の位置に関する情報も設定している。
【0078】
ステップS104またはステップS105の動作が終了して、ネットワークアダプタ130からメインメモリ120上のパケットバッファ121内のデータプレーンソフトウェア参照可能領域122へ受信パケットの全部または一部がDMA転送されてくるとともに、メインメモリ120の受信ディスクリプタ124に識別情報または該識別情報と位置情報とが書き込まれると、データプレーンソフトウェア300は、メインメモリ120の受信ディスクリプタ124への該識別情報の書き込みを検出する。
【0079】
受信ディスクリプタ124への該識別情報の書き込みを検出したデータプレーンソフトウェア300は、検出した受信ディスクリプタ124の識別情報に基づいて、該識別情報が示すパケットバッファ121内のデータプレーンソフトウェア参照可能領域122にDMA転送により格納された受信パケットに関する解析を開始する(ステップS106)。この時、データプレーンソフトウェア300は、まず、受信ディスクリプタ124の該識別情報に基づき、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納された該受信パケットが、該受信パケット全体であるか、該受信パケットの部分的なパケットであるかを示す識別情報を、パケットバッファ121内の制御データ領域に書き込む。
【0080】
さらに、該識別情報が部分的なパケットを示していた場合には、データプレーンソフトウェア300は、該受信パケット全体を保持しているネットワークアダプタ130のパケット保持領域135内の位置を示す受信ディスクリプタ124の位置情報を読み取り、該位置情報も、パケットバッファ121内の制御データ領域に書き込む。
【0081】
しかる後、データプレーンソフトウェア300は、受信パケットに関する解析結果に基づいて、該受信パケットに対して、廃棄、自パケット処理装置100内における受信処理、または、他のパケット処理装置への転送、のいずれかの処理を決定して、それぞれに該当する処理に分岐する(ステップS107)。なお、データプレーンソフトウェア300のこのような決定ロジックに関しては、一般的なデータプレーンソフトウェアにおいて実施されている処理であるので、ここでの更なる説明は割愛する。
【0082】
データプレーンソフトウェア300が、該受信パケットを廃棄する決定を行った場合には(ステップS107の「廃棄」の場合)、データプレーンソフトウェア300は、パケットバッファ121内の制御データ領域の識別情報を参照して、処理中の該受信パケットが、パケット全体であるかまたは部分的なパケット(パケットの一部)であるかを判定する(ステップS108)。パケット全体であった場合には(ステップS108の「No」の場合)、直ちに、ステップS112に進むが、部分的なパケット(パケットの一部)であった場合には(ステップS108の「Yes」の場合)、該受信パケットの全体がネットワークアダプタ130内のパケット保持領域135に保持されている場合である。
【0083】
したがって、データプレーンソフトウェア300は、パケットバッファ121内の制御データ領域の位置情報を取り出して、パケット保持領域135内の該位置情報が示す位置に保持されている該受信パケット全体の削除要求をネットワークアダプタ130に対して行う(ステップS111)。ネットワークアダプタ130は、データプレーンソフトウェア300からの該削除要求を受け取ると、該削除要求が示す位置に保持されている受信パケット全体を、パケット保持領域135から削除する。
【0084】
しかる後、ステップS112において、データプレーンソフトウェア300は、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納されている該受信パケットの部分的なパケットまたは該受信パケット全体を廃棄する(ステップS112)。
【0085】
次に、ステップS107において、受信パケットの解析結果として、データプレーンソフトウェア300が、該受信パケットを自パケット処理装置100宛のパケットとして、パケット終端ソフトウェア310によってパケット処理を行うことを決定した場合には(ステップS107の「当該装置自身で受信」の場合)、以下の処理を行う。すなわち、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納されている該受信パケットのペイロード部を、パケットバッファ121内のパケット終端ソフトウェア参照可能領域123にコピーすることにより、該受信パケットのペイロード部をパケット終端ソフトウェア310に引き継いで、パケット終端ソフトウェア310に該受信パケットのペイロード部に関する処理を依頼する(ステップS109)。
【0086】
また、ステップS107において、受信パケットの解析結果として、データプレーンソフトウェア300が、該受信パケットを例えばネットワーク201を介して他のパケット処理装置へ転送することを決定した場合には(ステップS107の「転送」の場合)、データプレーンソフトウェア300は、まず、必要に応じて、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納されている該受信パケットに関する更新を行う。すなわち、例えば、該受信パケットがIPv4パケットであった場合には、IPv4ヘッダ内のTTL(Time To Live)の更新やチェックサム値の更新を行う。また、Layer2ヘッダに関しては全て更新を行う。
【0087】
しかる後、データプレーンソフトウェア300は、該受信パケットが格納されているパケットバッファ121内のデータプレーンソフトウェア参照可能領域122の位置(アドレス)、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納されている該受信パケットがパケット全体であるかパケットの一部であるかを示す識別情報、および、パケットバッファ121内にパケットの一部(部分的なパケット)が格納されていた場合には該受信パケット全体が保持されているネットワークアダプタ130のパケット保持領域135内の位置情報、のそれぞれを、メインメモリ120内の送信ディスクリプタ125に書き込む。
【0088】
なお、送信ディスクリプタ125は、ネットワークアダプタ130のパケット送受信ポート137,138対応にメインメモリ120内に配置されていて、前述のように、該受信パケットを例えばネットワーク201を介して転送する場合には、ネットワーク201と接続されているネットワークアダプタ130のパケット送受信ポート138に対応した送信ディスクリプタ125へ書き込む。そして、送信ディスクリプタ125への書き込みが終了すると、データプレーンソフトウェア300は、ネットワークアダプタ130に対して、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納されている該受信パケットのネットワークアダプタ130へのDMA転送を依頼する(ステップS110)。
【0089】
ネットワークアダプタ130の送信処理部133は、データプレーンソフトウェア300からの受信パケットのネットワークアダプタ130へのDMA転送依頼を受け取ると、まず、メインメモリ120の送信ディスクリプタ125を読み取る。そして、該送信ディスクリプタ125に設定された位置(アドレス)が示すパケットバッファ121内のデータプレーンソフトウェア参照可能領域122から受信パケットをネットワークアダプタ130へDMA転送するとともに、該送信ディスクリプタ125に設定された識別情報に基づいて、該DMA転送した受信パケットがパケット全体であるかパケットの一部であるかを判定する(ステップS113)。
【0090】
該DMA転送した受信パケットがパケット全体であった場合には(ステップS114の「No」の場合)、ネットワークアダプタ130の送信処理部133は、DMA転送した受信パケットを、そのまま、読み取った送信ディスクリプタ125が対応するパケット送受信ポート138を介してネットワーク201に送信する(ステップS116)。
【0091】
一方、該DMA転送した受信パケットがパケットの一部であった場合には(ステップS114の「Yes」の場合)、ネットワークアダプタ130の送信処理部133は、送信ディスクリプタ125に設定された位置情報が示すパケット保持領域135内の位置に受信パケット全体として保持されている受信パケットのうち該当部分(DMA転送したパケットの一部に該当する部分例えばヘッダ部)を、DMA転送した受信パケット(パケットの一部例えばヘッダ部)によって更新して、更新した受信パケットを、読み取った送信ディスクリプタ125に対応するパケット送受信ポート138を介してネットワーク201に送信する(ステップS115)。
【0092】
((パケット送信時の動作例))
次に、本発明の一実施形態として説明した
図3のパケット処理装置100自身が作成したパケットをネットワーク200,201に送信する場合の動作例について
図6のフローチャートを参照しながら説明する。
図6は、
図3に示したパケット処理装置100自身のパケット送信時の動作の一例を説明するためのフローチャートである。
【0093】
図6のフローチャートにおいて、まず、パケット処理装置100自身が、ネットワーク200またはネットワーク201を介して他のパケット処理装置に対して送信しようとする送信パケットを作成すると、作成した送信パケットは、メインメモリ120のパケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納される(ステップS121)。該送信パケットは、ヘッダ部からペイロード部までの全てを含むパケットであり、パケットバッファ121の制御データには、該送信パケットに関する識別情報として、パケット全体を示す識別情報が設定される。
【0094】
データプレーンソフトウェア300は、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に送信パケットが格納されたことを確認すると、該送信パケットを解析して(ステップS122)、解析結果として、該送信パケットを廃棄するか、あるいは、送信するかを決定する(ステップS123)。データプレーンソフトウェア300の該決定ロジックに関しては、一般的なデータプレーンソフトウェアにおいて実施されている処理であるので、ここでの更なる説明は割愛する。
【0095】
該送信パケットを廃棄すると決定した場合には(ステップS123の「廃棄」の場合)、データプレーンソフトウェア300は、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納されている該送信パケットを廃棄する(ステップS124)。
【0096】
また、該送信パケットを送信すると決定した場合には(ステップS123の「送信」の場合)、データプレーンソフトウェア300は、該送信パケットが格納されているパケットバッファ121内のデータプレーンソフトウェア参照可能領域122上の位置(アドレス)と、送信対象の該送信パケットがパケット全体であることを示す識別情報と、をメインメモリの送信ディスクリプタ125に書き込む。
【0097】
なお、送信ディスクリプタ125は、ネットワークアダプタ130のパケット送受信ポート137,138対応にメインメモリ120内に配置されていて、該送信パケットを例えばネットワーク201を介して転送する場合には、ネットワーク201と接続されているネットワークアダプタ130のパケット送受信ポート138に対応した送信ディスクリプタ125へ書き込む。そして、送信ディスクリプタ125への書き込みが終了すると、データプレーンソフトウェア300は、ネットワークアダプタ130に対して、パケットバッファ121内のデータプレーンソフトウェア参照可能領域122に格納されている該送信パケットのネットワークアダプタ130へのDMA転送を依頼する(ステップS125)。
【0098】
ネットワークアダプタ130の送信処理部133は、データプレーンソフトウェア300からの送信パケットのネットワークアダプタ130へのDMA転送依頼を受け取ると、まず、メインメモリ120の送信ディスクリプタ125を読み取る。そして、該送信ディスクリプタ125に設定された位置(アドレス)が示すパケットバッファ121内のデータプレーンソフトウェア参照可能領域122から送信パケットをネットワークアダプタ130へDMA転送するとともに、該送信ディスクリプタ125に記述された識別情報に基づいて、該DMA転送した送信パケットがパケット全体であると判定する(ステップS126)。
【0099】
したがって、ネットワークアダプタ130の送信処理部133は、DMA転送した送信パケットを、そのまま、送信ディスクリプタ125により送信先として指定されているパケット送受信ポート138を介して、ネットワーク201へ送信する(ステップS127)。
【0100】
(実施形態の効果の説明)
以上に詳細に説明したように、本実施形態においては以下のような効果が得られる。
【0101】
すなわち、本実施形態においては、パケット処理に関する機能を、下位ハードウェアのネットワークアダプタ130、中位ソフトウェアのデータプレーンソフトウェア300、上位ソフトウェアのパケット終端ソフトウェア310のように、階層構造化して、それぞれの階層間で引き渡すべきパケットを、ヘッダ部のみ、ペイロード部のみ、ヘッダ部とペイロード部との双方、と分類することにより、ネットワークアダプタ130とメインメモリ120との間のDMA転送によるバス151,152、バスブリッジ140上のパケットのデータ転送量やメインメモリ120上のパケットデータのコピー量を削減することを可能にしている。
【0102】
而して、パケットのデータ転送によってバス(バス150,151,152、バスブリッジ140)が占有されてしまうといういわゆるバスボトルネックを防止することができ、その結果として、パケット処理の中核を担うデータプレーンソフトウェア300の処理性能を改善することができるので、パケット処理装置100全体のシステム性能を向上させることができる。
【0103】
一般に、バス(バス150,151,152、バスブリッジ140)上を転送されるIPパケットのサイズに関しては、ヘッダ部のサイズよりもペイロード部のサイズの方が大きい場合が大半を占めるので、本実施形態を適用することにより、バス(バス150,151,152、バスブリッジ140)上を流れるデータ量を大幅に削減することが可能である。
【0104】
例えば、バス構成として一般的なEthernet(登録商標)を適用する場合、パケットサイズはEthernet(登録商標)ヘッダを含めて最大1514バイトである。したがって、本実施形態に示したように、例えばEthernet(登録商標)ヘッダとIPv4ヘッダのみをメインメモリ120へDMA転送する場合には、DMA転送サイズは34バイトとなり、最大サイズの1514バイトのパケット全体をDMA転送する場合に比べてバス上のデータ転送量は約(1/44)に抑えることができる。
【0105】
また、ジャンボフレームと呼ばれる拡張機能を使用して9000バイトのパケットを転送する場合においては、さらに効果が大きく、Ethernet(登録商標)ヘッダとIPv4ヘッダのみをDMA転送する場合のDMA転送サイズは34バイトであるので、パケット全体をDMA転送する場合と比べてバス転送量は約(1/264)と大幅に削減することができる。すなわち、パケットのDMA転送によるバス151,152、バスブリッジ140の占有をより確実に防止することができる。
【0106】
(他の実施形態)
以上に説明した実施形態においては、ネットワークアダプタ130内のパケット送受信ポートの個数がパケット送受信ポート137,138の2個の場合を例示したが、かかる個数に限るものではなく、1個でも3個以上でも任意の個数であって構わない。
【0107】
また、前述の実施形態においては、パケット処理装置100内のネットワークアダプタ130の個数について、ネットワークアダプタ130の1個のみ備えている場合について説明したが、かかる個数に限るものではなく、例えば、以下のいずれかの機能を具備することによって、複数個のネットワークアダプタを備えることも可能である。
(1)各ネットワークアダプタ間に専用バスを設置し、各ネットワークアダプタ内のパケット保持領域に保持されているパケットを各ネットワークアダプタ間の該専用バスを介して転送する機能。
(2)各ネットワークアダプタ内ではなく、各ネットワークアダプタに共有のパケット保持領域を配置し、該パケット保持領域を各ネットワークアダプタ間で互いに共有する機能。
【0108】
以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。