(57)【要約】【課題】パケットのＤＭＡ転送によるバスの占有を防止することが可能なパケット処理装置を提供する。【解決手段】ネットワーク２００，２０１からのパケットに関し、メインメモリ１２０に対してパケットの全て若しくはパケットのヘッダ部をＤＭＡ転送するかまたはパケットを廃棄するかを判定するネットワークアダプタ１３０の下位ハードウェアと、パケットのヘッダ部を解析して自パケット処理装置が最終的な宛先であるか否かを判定するとともに該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェア３００の中位ソフトウェアと、パケットのペイロード部の処理を行うパケット終端ソフトウェア３１０の上位ソフトウェアと、の３階層に階層化し、パケットのヘッダ部の解析結果に応じて、それぞれの階層間で引き渡す際のパケットに関するデータとして、パケットのヘッダ部、ペイロード部またはパケットの全て、のいずれかを選択する。【選択図】図２
2019205115.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークと接続してパケットを送受信するネットワークアダプタと、該パケットを格納するメインメモリと、該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）と、をバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするパケット処理装置。
【請求項２】
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関し、
該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスではなかった場合には、該パケットを廃棄し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置であるか、または、Ether  TypeがＩＰｖ４およびＩＰｖ６以外のタイプであった場合には、該パケットの全てを前記メインメモリに対してＤＭＡ転送し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置ではなく、かつ、Ether  TypeがＩＰｖ４およびＩＰｖ６であった場合には、該パケットの全てを自ネットワークアダプタ内のパケット保持領域に保持するとともに、該パケットのヘッダ部を前記メインメモリに対してＤＭＡ転送する
ことを特徴とする請求項１に記載のパケット処理装置。
【請求項３】
前記ネットワークアダプタは、前記ネットワークから受信した前記パケットの全てまたは前記パケットのヘッダ部を前記メインメモリにＤＭＡ転送する際に、
ＤＭＡ転送する該パケットが、該パケットの全てまたは該パケットのヘッダ部のいずれであるかを識別する識別情報と、該パケットのヘッダ部をＤＭＡ転送する場合には該パケットの全てを保持している自ネットワークアダプタ内の前記パケット保持領域内の位置を示す位置情報と、を前記メインメモリに配置した受信ディスクリプタに設定して、前記データプレーンソフトウェアに通知する
ことを特徴とする請求項１または２に記載のパケット処理装置。
【請求項４】
前記データプレーンソフトウェアは、前記メインメモリの前記受信ディスクリプタによる通知を受け取って、前記ネットワークアダプタからの前記パケットが前記メインメモリに格納されたことを検出した際に、
前記パケットのヘッダ部を解析して、該パケットの宛先ＩＰアドレスが自パケット処理装置であった場合には、前記パケット最終ソフトウェアに該パケットの処理を依頼するために、前記メインメモリ内の前記パケット最終ソフトウェアが参照可能な領域に該パケットのペイロード部をコピーして、該ペイロード部を前記パケット終端ソフトウェアに引き継ぎ、
また、前記パケットのヘッダ部を解析して、該パケットの宛先ＩＰアドレスが自パケット処理装置以外であった場合には、該パケットのヘッダ部を必要に応じて更新した後、前記ネットワークアダプタに対して該パケットの該ネットワークアダプタへのＤＭＡ転送を依頼する
ことを特徴とする請求項３に記載のパケット処理装置。
【請求項５】
前記データプレーンソフトウェアは、前記メインメモリの前記受信ディスクリプタによる通知を受け取って、前記ネットワークアダプタからの前記パケットが前記メインメモリに格納されたことを検出した際に、
前記パケットのヘッダ部を解析した結果として該パケットを廃棄すると判定した場合には、前記メインメモリから該パケットを廃棄するとともに、前記受信ディスクリプタに設定されている前記識別情報を参照して、前記メインメモリに格納されている該パケットが、該パケットのヘッダ部であることを確認した場合、前記受信ディスクリプタに設定されている前記位置情報をさらに参照して、該位置情報が示す前記ネットワークアダプタ内の前記パケット保持領域の位置に保持されている該パケットの全てを削除することを、前記ネットワークアダプタに対して要求する
ことを特徴とする請求項３または４に記載のパケット処理装置。
【請求項６】
前記データプレーンソフトウェアは、前記メインメモリに格納したパケットを前記ネットワークに送信するために、前記ネットワークアダプタに対して該パケットの該ネットワークアダプタへのＤＭＡ転送を依頼する際に、
ＤＭＡ転送を依頼する前記パケットが格納されている前記メインメモリのアドレスと、該パケットが完全な状態のパケット全てまたは該パケットのヘッダ部のいずれであるかを識別する識別情報と、該パケットのヘッダ部をＤＭＡ転送する場合には該パケットの全てを保持している前記ネットワークアダプタ内の前記パケット保持領域の位置を示す位置情報と、を前記メインメモリに配置した送信ディスクリプタに設定して、前記ネットワークアダプタに通知する
ことを特徴とする請求項２ないし５のいずれかに記載のパケット処理装置。
【請求項７】
前記ネットワークアダプタは、前記メインメモリから自ネットワークアダプタへの前記パケットのＤＭＡ転送の依頼を前記データプレーンソフトウェアから受け取った際に、
前記メインメモリの前記送信ディスクリプタを参照して、該送信ディスクリプタに設定されている前記メインメモリの前記アドレスが示すアドレスから自ネットワークアダプタへ、前記パケットをＤＭＡ転送し、
前記送信ディスクリプタに設定されている前記識別情報が、ＤＭＡ転送した前記パケットが完全な状態のパケット全てであることを示している場合には、該パケットをそのまま前記ネットワークに送信し、
また、前記送信ディスクリプタに設定されている前記識別情報が、ＤＭＡ転送した前記パケットがパケットのヘッダ部であることを示している場合には、前記送信ディスクリプタに設定されている前記位置情報が示す前記パケット保持領域の位置に保持している前記パケット全てのうちヘッダ部を、ＤＭＡ転送した前記パケットのヘッダ部により更新して、該ヘッダ部を更新した前記パケット全てを前記ネットワークに送信する
ことを特徴とする請求項６に記載のパケット処理装置。
【請求項８】
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）とをバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作を制御し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするバス転送制御方法。
【請求項９】
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関し、
該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスではなかった場合には、該パケットを廃棄し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置であるか、または、Ether  TypeがＩＰｖ４およびＩＰｖ６以外のタイプであった場合には、該パケットの全てを前記メインメモリに対してＤＭＡ転送し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置ではなく、かつ、Ether  TypeがＩＰｖ４およびＩＰｖ６であった場合には、該パケットの全てを自ネットワークアダプタ内のパケット保持領域に保持するとともに、該パケットのヘッダ部を前記メインメモリに対してＤＭＡ転送する
ことを特徴とする請求項８に記載のバス転送制御方法。
【請求項１０】
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）とをバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作の制御をコンピュータによって実行し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするバス転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理装置、バス転送制御方法およびバス転送制御プログラムに関し、特に、専用ハードウェア並みのパケット処理性能が期待されるパケット処理装置、バス転送制御方法およびバス転送制御プログラムに関する。
【背景技術】
【０００２】
現状のパケット処理装置等のネットワーク装置においては、経路制御のような複雑な処理を必要とするコントロールプレーンはソフトウェアとして実装され、パケット転送のような単純ではあるが、高速で動作する必要があるデータプレーンに関してはハードウェアとして実装されるのが一般的だった。しかし、近年、注目が集まっているＮＦＶ（Network  Functions  Virtualization）技術においては、ファイアウォール、ＮＡＴ（Network  Address  Translation）などのネットワーク機能を全て仮想環境上のソフトウェアによって実現するために、ハードウェア並みの高速パケット処理が可能なデータプレーンソフトウェアの需要が高まってきている。
【０００３】
また、近年、汎用サーバに搭載可能なＣＰＵ（Central  Processing  Unit）の高性能化、ネットワークに接続するネットワークアダプタの大容量化が進んでおり、汎用サーバ上のデータプレーンソフトウェアにおいてハードウェア並みのパケット処理性能を実現することが技術的にも可能になってきている。
【０００４】
その技術の一例が、パケット処理装置に関し、特許文献１の特開平０８−１４９１５２号公報「データ中継装置」に記載されている。特許文献１の技術では、ネットワークとの間で送受信するパケットをネットワークアダプタとメインメモリとの間のバス上を転送する際には、ＤＭＡ（Direct  Memory  Access）転送により、ＣＰＵが介在することなく、パケットがネットワークアダプタ、メインメモリ間のバス上を直接高速転送されるように構成されている。
【０００５】
図７は、現状のパケット処理技術を適用した場合のパケット処理装置の一般的な構成を示すブロック構成図である。図７に示すパケット処理装置１００Ａは、ＣＰＵ１１０Ａ、メインメモリ１２０Ａ、ネットワークアダプタ１３０Ａから構成されており、それぞれのブロックは、バスブリッジ１４０Ａによってバス１５０Ａ，１５１Ａ，１５２Ａを介して接続されている。また、パケット処理装置１００Ａはネットワークアダプタ１３０Ａ内のパケット送受信ポート１３７Ａ，１３８Ａからそれぞれネットワーク２００，２０１に接続されている。なお、図７には、パケット送受信ポート１３７Ａ，１３８Ａとして２つのポートを備えている場合を示しているが、１つのみの場合や３つ以上のポートを備えている場合もある。
【０００６】
次に、図７に示すパケット処理装置１００Ａが、ネットワーク２００から受信したパケットをネットワーク２０１へ転送する場合の動作について説明する。ネットワークアダプタ１３０Ａは、ネットワーク２００に接続されたパケット送受信ポート１３７Ａから受信したパケットを、ＤＭＡ転送によりバス１５１Ａ、バスブリッジ１４０Ａ、バス１５２Ａを経由して、メインメモリ１２０Ａへ転送する。ＣＰＵ１１０Ａが実行するデータプレーンソフトウェアは、メインメモリ１２０ＡにＤＭＡ転送されたパケットを解析して、必要に応じた更新処理を実施した後、ネットワーク２０１へ転送するために、当該ネットワーク２０１と接続しているネットワークアダプタ１３０Ａに対してＤＭＡ転送依頼を行う。
【０００７】
ネットワークアダプタ１３０Ａは、メインメモリ１２０Ａ上のパケットを、バス１５２Ａ、バスブリッジ１４０Ａ、バス１５１Ａを経由して、ネットワークアダプタ１３０Ａ内にＤＭＡ転送し、パケット送受信ポート１３８Ａからネットワーク２０１へ送信する。
【０００８】
つまり、パケット処理装置１００Ａにおいて、ネットワークアダプタ１３０Ａがネットワーク２００，２０１から受信したパケットの全て（ヘッダ部＋ペイロード部）をメインメモリ１２０ＡへＤＭＡ転送する。そして、ＣＰＵ１１０Ａがメインメモリ１２０Ａ内の当該パケットのヘッダ部を解析して、パケット処理装置１００Ａ内において処理すべきパケットに関してはＣＰＵ１１０Ａが適切に処理する。一方、他のパケット処理装置へ転送すべきパケットの場合には、ＣＰＵ１１０Ａは、メインメモリ１２０Ａ内の当該パケットを転送するために必要とする更新を該パケットのヘッダ部に行った後、再度、該パケットの全てをネットワークアダプタ１３０ＡへＤＭＡ転送することにより、ネットワーク２００，２０１へ送信する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平０８−１４９１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
前述の図７に現状の技術として示したパケット処理装置１００Ａにおいてパケット転送に関する全体性能は、ソフトウェアを実行するＣＰＵ１１０Ａの処理性能、ネットワークアダプタ１３０Ａのパケット送受信性能、ＤＭＡ転送の通過ルートであるバス１５１Ａ、バスブリッジ１４０Ａ、バス１５２Ａのスループットに依存して決定される。ＤＭＡ転送の通過ルートであるバス（バス１５１Ａ、バスブリッジ１４０Ａ、バス１５２Ａ）に関して、ＰＣＩ  Expressのような業界標準規格を適用している場合には、そのスループットはバス規格によって定められている。
【００１１】
その結果、現状においては、ＣＰＵ１１０Ａやネットワークアダプタ１３０Ａの高性能化に伴って、バスのスループットが、パケット処理装置１００Ａのパケット転送に関する全体性能のボトルネックとなっている。このため、転送するパケットのデータ量が多くなると、バス（バス１５１Ａ、バスブリッジ１４０Ａ、バス１５２Ａ）は、ネットワークアダプタ１３０Ａとメインメモリ１２０Ａとの間のパケットの転送のために占有されてしまう状態に陥り、ＣＰＵ１１０Ａは、メインメモリ１２０Ａ上のデータにアクセスすることができなくなり、パケット処理装置１００Ａのシステム性能が低下してしまう事態になる。
【００１２】
したがって、現状のパケット処理装置１００Ａにおいて、ＣＰＵ１１０Ａの処理能力を向上させ、パケット処理装置１００Ａ全体のシステム性能を向上させるためには、ネットワークアダプタ１３０Ａとメインメモリ１２０Ａとの間でＤＭＡ転送されるパケットによってバス（バス１５１Ａ、バスブリッジ１４０Ａ、バス１５２Ａ）が占有されてしまうことを防止することが非常に重要になっている。
【００１３】
（本開示の目的）
本開示の目的は、かかる事情に鑑み、メインメモリに接続されるバスに関し、パケットのＤＭＡ転送による該バスの占有を防止することが可能なパケット処理装置、バス転送制御方法およびバス転送制御プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
前述の課題を解決するため、本発明によるパケット処理装置、バス転送制御方法およびバス転送制御プログラムは、主に、次のような特徴的な構成を採用している。
【００１５】
（１）本発明によるパケット処理装置は、
ネットワークと接続してパケットを送受信するネットワークアダプタと、該パケットを格納するメインメモリと、該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）と、をバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とする。
【００１６】
（２）本発明によるバス転送制御方法は、
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）とをバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作を制御し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とする。
【００１７】
（３）本発明によるバス転送制御プログラムは、
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）とをバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作の制御をコンピュータによって実行し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とする。
【発明の効果】
【００１８】
本発明のパケット処理装置、バス転送制御方法およびバス転送制御プログラムによれば、主に、以下のような効果を奏することができる。
【００１９】
すなわち、本発明においては、パケット処理装置におけるパケット処理に関する各機能を、下位ハードウェアのネットワークアダプタ、中位ソフトウェアのデータプレーンソフトウェア、上位ソフトウェアのパケット終端ソフトウェアと３つの階層に階層構造化して、それぞれの階層間で引き渡すべきパケットを、ヘッダ部のみ、ペイロード部のみ、パケットの全て（すなわちヘッダ部とペイロード部との双方）、と分類することにより、メインメモリのバス上を転送するパケットのデータ転送量を削減することを可能にしている。
【００２０】
而して、パケットのデータ転送によってバスが占有されてしまうといういわゆるバスボトルネックを防止することができ、その結果として、パケット処理の中核を担うデータプレーンソフトウェアの処理性能を改善することができるので、パケット処理装置全体のシステム性能を向上させることができる。
【図面の簡単な説明】
【００２１】
【図１】ＯＳＩ参照モデルのLayer２〜Layer４のヘッダ部とペイロード部とから構成されるパケットの一例を示すテーブルである。
【図２】本発明に係るパケット処理装置の受信パケットに対する処理の流れの一例を説明するための説明図である。
【図３】本発明に係るパケット処理装置の内部構成の一例を示すブロック構成図である。
【図４Ａ】図３に示したパケット処理装置のパケット受信時の動作の一例を説明するためのフローチャートの前半部分を示す図である。
【図４Ｂ】図３に示したパケット処理装置のパケット受信時の動作の一例を説明するためのフローチャートの後半部分を示す図である。
【図５】図３に示したパケット処理装置のネットワークアダプタ内の受信ＤＭＡルールテーブルに事前登録されている登録内容の一例を示すテーブルである。
【図６】図３に示したパケット処理装置自身のパケット送信時の動作の一例を説明するためのフローチャートである。
【図７】現状のパケット処理技術を適用した場合のパケット処理装置の一般的な構成を示すブロック構成図である。
【発明を実施するための形態】
【００２２】
以下、本発明によるパケット処理装置、バス転送制御方法およびバス転送制御プログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明によるパケット処理装置およびバス転送制御方法について説明するが、かかるバス転送制御方法をコンピュータにより実行可能なバス転送制御プログラムとして実施するようにしても良いし、あるいは、バス転送制御プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではないことも言うまでもない。
【００２３】
（本発明の特徴）
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、ＣＰＵ上で動作するソフトウェアによりパケット処理を行うパケット処理装置において、パケット転送時に発生するネットワークアダプタとメインメモリとの間のバス上のデータ転送性能が、当該パケット処理装置全体のパケット処理性能のボトルネックとなって、パケット処理性能が低下することを防止するために、ネットワークアダプタとメインメモリとの間のバス上を流れるパケットに関するデータを必要最小限の部分に限定することによって、バス上の転送データ量を削減することを主要な特徴としている。
【００２４】
つまり、パケット処理装置におけるパケット処理に関する各機能を、ネットワークアダプタの下位ハードウェア、データプレーンソフトウェアからなる中位ソフトウェア、パケット終端処理ソフトウェアからなる上位ソフトウェアとの３つの階層に階層構造化して、それぞれの階層間で引き渡すべきパケットに関するデータを、該パケットのヘッダ部のみ、該パケットのペイロード部のみ、該パケットの全て（ヘッダ部とペイロード部との双方）、に分類することにより、メインメモリに転送するバス上のパケットの転送データ量を削減することを、主要な特徴としている。
【００２５】
本発明の特徴をさらに説明すると、次の通りである。パケット処理装置のメインメモリとネットワークアダプタとの間のバス上にＤＭＡ転送されるパケットは、一般に、ヘッダ部とペイロード部とから構成されている。ヘッダ部には、パケットを宛先へ到達させるために必要な情報が設定されており、ペイロード部には、送信元が宛先へ届ける必要があるデータが設定されている。
【００２６】
図１は、ＯＳＩ（Open  System  Interconnection）参照モデルのLayer２〜Layer４のヘッダ部とペイロード部とから構成されるパケットの一例を示すテーブルである。図１に示すように、パケット１０は、ヘッダ部１１とペイロード部１２とから構成されている。ヘッダ部１１は、Layer２ヘッダ１１ａ、Layer３ヘッダ１１ｂ、Layer４ヘッダ１１ｃから構成され、ペイロード部１２は、宛先向けの情報であるペイロード１２ａが設定されている。ヘッダ部１１に関しては、一般的には、Layer２ヘッダ１１ａとしてEthernet（登録商標）ヘッダ、Layer３ヘッダ１１ｂとしてＩＰｖ４（Internet  Protocol  Version  ４）ヘッダまたはＩＰｖ６（Internet  Protocol  Version  ６）ヘッダ、Layer４ヘッダ１１ｃとしてＴＣＰ（Transmission  Control  Protocol）ヘッダまたはＵＤＰ（User  Datagram  Protocol）ヘッダなどが用いられることが多い。また、Layer２ヘッダ１１ａ、Layer３ヘッダ１１ｂ、Layer４ヘッダ１１ｂの各ヘッダは、それぞれのLayerの送信元や宛先を示す情報、次ヘッダのプロトコル種別などの情報を保持している。
【００２７】
ＤＭＡ転送によりネットワークアダプタからメインメモリ上に転送されたパケット１０は、パケット処理用のソフトウェア（データプレーンソフトウェアやパケット終端ソフトウェア）から参照されるが、必ずしも、全てのパケット１０についてヘッダ部１１とペイロード部１２との両方が参照されるわけではない。パケット１０の宛先が当該パケット１０を処理しているパケット処理装置自身であった場合には、ヘッダ部１１は中位ソフトウェアのデータプレーンソフトウェアから参照され、ペイロード部１２は上位ソフトウェアのパケット終端ソフトウェアから参照される。
【００２８】
また、パケット１０の宛先が当該パケットを処理しているパケット処理装置以外であった場合には、ヘッダ部１１のみが転送先を決定するために、中位ソフトウェアのデータプレーンソフトウェアから参照される。該データプレーンソフトウェアによっては、パケット１０の転送先の決定に加えて、ＮＡＰＴ（Network  Address  Port  Translation）、ファイアウォール、フィルタリングなど様々なネットワーク機能を実行するが、これらの各機能もヘッダ部１１のみの参照・更新によって実現することが可能になる場合がほとんどである。
【００２９】
かくのごとき観点から、本発明においては、ネットワークアダプタにて受信したパケットのメインメモリへのＤＭＡ転送対象を必要な部分のみに限定することによって、ネットワークアダプタとメインメモリとの間のバス上を流れるデータ量を削減し、バスの性能ボトルネックを緩和する。ここで、ＤＭＡ転送対象の必要な部分とは、例えば当該パケット処理装置内で終端するパケットに関しては、ヘッダ部とペイロード部との両方であり、当該パケット処理装置内では終端しないで他のパケット処理装置に転送するパケットに関しては、ヘッダ部のみとなる。パケット転送を主目的とするパケット処理装置の場合は、ネットワークからネットワークアダプタに入力されたパケットの大半は、他のパケット処理装置に転送されるので、本発明により、ネットワークアダプタとメインメモリとの間のバス上を流れるデータ量を大幅に削減することが可能になる。
【００３０】
つまり、本発明におけるパケット処理装置は、一般的なソフトウェアによってパケット処理装置が具備している機能に加えて、以下の機能をさらに具備することにより、メインメモリへのバスを経由したパケットのＤＭＡ転送対象範囲を必要な部分のみに限定したパケット処理を実現することを主要な特徴としている。
【００３１】
（１）ネットワークアダプタにおけるパケット受信時に、メインメモリへ受信パケット全体をＤＭＡ転送するか、受信パケットの一部（少なくともヘッダ部を含むデータ）のみをＤＭＡ転送するかを選択する機能。
【００３２】
（２）ネットワークアダプタからメインメモリへ受信パケットの一部（少なくともヘッダ部を含むデータ）のみをＤＭＡ転送する場合、ネットワークアダプタ内に受信パケットの全体を保持しておきつつ、受信パケットの一部（少なくともヘッダ部を含むデータ）のみをメインメモリへＤＭＡ転送し、該受信パケットの一部に対してソフトウェア処理を施すことによって該受信パケットの一部（少なくともヘッダ部を含むデータ）の更新やネットワークアダプタ内の出力先ポートの決定を行い、しかる後、該受信パケットの一部（少なくともヘッダ部を含むデータ）をメインメモリからネットワークアダプタへＤＭＡ転送し、ＤＭＡ転送した該受信パケットの一部（少なくともヘッダ部を含むデータ）を用いて、ネットワークアダプタ内に保持しておいた受信パケットの全体に対してソフトウェアで実施した更新を反映して送信する機能。
【００３３】
（３）ネットワークアダプタからメインメモリへ受信パケットの一部（少なくともヘッダ部を含むデータ）のみをＤＭＡ転送する場合、ネットワークアダプタ内に受信パケットの全体を保持しておきつつ、受信パケットの一部（少なくともヘッダ部を含むデータ）のみをメインメモリへＤＭＡ転送し、該受信パケットの一部（少なくともヘッダ部を含むデータ）に対してソフトウェア処理を施した結果、該受信パケットを廃棄する必要があると判定した場合、ネットワークアダプタ内に保持しておいた受信パケットの全体を廃棄する機能。
【００３４】
次に、パケット処理装置における受信パケットに対する処理の流れについて図２を用いてさらに説明する。図２は、本発明に係るパケット処理装置の受信パケットに対する処理の流れの一例を説明するための説明図である。図２の説明図に示すように、パケットに関する処理を行うソフトウェアを、受信したパケットのヘッダ部を解析して自パケット処理装置１００が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェア３００と、自パケット処理装置１００が該パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェア３１０と、に分離している。そして、前記パケットに関する処理を行う各機能を、ネットワークアダプタ１３０の下位ハードウェアと、データプレーンソフトウェア３００の中位ソフトウェアと、パケット終端ソフトウェア３１０の上位ソフトウェアと、の３つの階層に階層化し、かつ、受信したパケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部、該パケットの全て、のいずれかを選択して引き渡すように構成している。
【００３５】
図２の説明図において、最初に、パケット処理装置１００内で終端するパケットの流れを示す符号２０〜符号２２を参照しながら受信パケット全体をネットワークアダプタ１３０からメインメモリ１２０にＤＭＡ転送する場合の流れを説明する。ネットワークアダプタ１３０は、ネットワーク２００からパケット２０を受信すると、ネットワークアダプタ内パケット保持領域１３５に保持し、保持したパケット２０に対して該パケット２０全体をＤＭＡ転送するか、または、該パケット２０の一部のみをＤＭＡ転送するかを判定する。そして、当該パケット処理装置１００内で終端するパケットであった場合には、該パケット２０全体のＤＭＡ転送を選択する。
【００３６】
ネットワークアダプタ１３０は、該選択結果に従い、パケット２０の全体（すなわちヘッダ部とペイロード部との両方）を、ＤＭＡ転送によりデータプレーンソフトウェア３００が参照するメインメモリ１２０上のデータプレーンソフトウェア参照可能メインメモリ領域１２２へパケット２１として格納する。ネットワークアダプタ１３０は、パケット２０のデータプレーンソフトウェア参照可能メインメモリ領域１２２への格納完了後、ネットワークアダプタ内パケット保持領域１３５から該パケット２０を廃棄する。つまり、パケット２１は、パケット２０のＤＭＡ転送の結果として、データプレーンソフトウェア参照可能メインメモリ領域１２２に保持されたパケット２０のコピーである。
【００３７】
データプレーンソフトウェア３００は、データプレーンソフトウェア参照可能メインメモリ領域１２２に保持したパケット２１を解析した結果、該パケット２１がパケット処理装置内のパケット終端ソフトウェア３１０にて処理するパケットであると判定すると、パケット２１のペイロード部をパケット終端ソフトウェア参照可能メインメモリ領域１２３へペイロード部２２としてコピーする。データプレーンソフトウェア３００は、パケット終端ソフトウェア参照可能メインメモリ領域１２３へのパケット２１のペイロード部のコピー終了後に、データプレーンソフトウェア参照可能メインメモリ領域１２２から該パケット２１を削除する。パケット終端ソフトウェア３１０は、パケット終端ソフトウェア参照可能メインメモリ領域１２３に保持したペイロード部２２を参照して、パケット終端ソフトウェア３１０自身の処理を実施する。
【００３８】
次に、図２の説明図において、パケット処理装置１００がネットワーク２００から受け取ったパケットをネットワーク２０１へ転送する際のパケットの流れを示す符号３０〜３１を参照しながら該パケットの一部（少なくともヘッダ部を含むデータ）のみをネットワークアダプタ１３０からメインメモリ１２０にＤＭＡ転送する場合の流れを説明する。ネットワークアダプタ１３０は、ネットワーク２００からパケット３０を受信すると、ネットワークアダプタ内パケット保持領域１３５に保持し、保持したパケット３０に対して該パケット３０全体をＤＭＡ転送するか、または、該パケット３０の一部（少なくともヘッダ部を含むデータ）のみをＤＭＡ転送するかを判定する。そして、該パケット３０の最終的な宛先が自パケット処理装置１００ではなくネットワーク２０１へ転送するパケットであった場合には、該パケット３０の一部（少なくともヘッダ部を含むデータ）のみのＤＭＡ転送を選択する。
【００３９】
ネットワークアダプタ１３０は、該選択結果に従い、パケット３０の一部（少なくともヘッダ部を含むデータ）のみを、ＤＭＡ転送によりデータプレーンソフトウェア３００が参照するメインメモリ１２０上のデータプレーンソフトウェア参照可能メインメモリ領域１２２へヘッダ部３１として格納するとともに、データプレーンソフトウェア３００に対して、格納したヘッダ部３１がパケット３０の一部であることを通知する。ネットワークアダプタ１３０は、パケット３０のヘッダ部のデータプレーンソフトウェア参照可能メインメモリ領域１２２への格納完了後も、パケット３０をネットワークアダプタ内パケット保持領域１３５に保持し続ける。つまり、ヘッダ部３１は、パケット３０のヘッダ部のＤＭＡ転送の結果として、データプレーンソフトウェア参照可能メインメモリ領域１２２に保持されたパケット３０のヘッダ部のコピーである。
【００４０】
データプレーンソフトウェア３００は、データプレーンソフトウェア参照可能メインメモリ領域１２２に保持したヘッダ部３１に対して一般的なデータプレーン処理を行うことによって、該ヘッダ部３１に関するパケット（すなわちパケット３０）の出力先ポートを決定するとともに、ヘッダ部３１の更新を行う。しかる後、データプレーンソフトウェア３００は、ネットワークアダプタ１３０に対して、データプレーンソフトウェア参照可能メインメモリ領域１２２に保持したヘッダ部３１がパケット３０の一部であることを通知した上で、該ヘッダ部３１のＤＭＡ転送依頼を行う。
【００４１】
ネットワークアダプタ１３０は、データプレーンソフトウェア３００からのヘッダ部３１のＤＭＡ転送依頼を受け取ると、該ヘッダ部３１をデータプレーンソフトウェア参照可能メインメモリ領域１２２からネットワークアダプタ内パケット保持領域１３５へＤＭＡ転送し、ネットワークアダプタ内パケット保持領域１３５に保持しているパケット３０のヘッダ部をＤＭＡ転送してきたヘッダ部３１にて上書きする。しかる後、ネットワークアダプタ１３０は、ヘッダ部がデータプレーンソフトウェア３００によりヘッダ部３１に更新された状態になったパケット３０をネットワーク２０１へ送信する。
【００４２】
最後に、図２の説明図において、パケット３０が、データプレーンソフトウェア３００によるパケット３０のヘッダ部３１の解析結果に基づいて、廃棄される場合について説明する。データプレーンソフトウェア３００は、データプレーンソフトウェア参照可能メインメモリ領域１２２に保持したヘッダ部３１の解析結果として、該ヘッダ部３１に関するパケット（すなわちパケット３０）を廃棄することを決定した場合、該ヘッダ部３１をデータプレーンソフトウェア参照可能メインメモリ領域１２２から廃棄するとともに、ヘッダ部３１に関するパケット（すなわちパケット３０）の廃棄要求を、ネットワークアダプタ１３０に対して通知する。ネットワークアダプタ１３０は、データプレーンソフトウェア３００からヘッダ部３１に関するパケット（すなわちパケット３０）の廃棄要求の通知を受け取ると、該廃棄要求に基づいてパケット３０をネットワークアダプタ内パケット保持領域１３５から廃棄する。
【００４３】
（本発明の実施形態の構成例）
次に、本発明に係るパケット処理装置の実施形態について説明する。まず、本発明に係るパケット処理装置の内部構成についてその一例を、図３を参照しながら詳細に説明する。図３は、本発明に係るパケット処理装置の内部構成の一例を示すブロック構成図である。
【００４４】
図３に示すパケット処理装置１００は、ＣＰＵ１１０、メインメモリ１２０、ネットワークアダプタ１３０から構成されており、ネットワークアダプタ１３０内のパケット送受信ポート１３７，１３８からそれぞれネットワーク２００、ネットワーク２０１に接続されている。また、ＣＰＵ１１０、メインメモリ１２０、ネットワークアダプタ１３０は、それぞれ、バスブリッジ１４０によってバス１５０，１５１，１５２を介して接続されている。
【００４５】
ＣＰＵ１１０は、メインメモリ１２０、ネットワークアダプタ１３０の動作を制御するとともに、パケットの処理を行うデータプレーンソフトウェア３００およびパケット終端ソフトウェア３１０を動作させることが可能である。そして、ＣＰＵ１１０は、メインメモリ１２０を参照しながら、パケット処理に関する中位ソフトウェアであるデータプレーンソフトウェア３００を動作させることによってパケットの処理を行い、該パケットの宛先が当該パケット処理装置１００であった場合には、パケット処理に関する上位ソフトウェアであるパケット終端ソフトウェア３１０を動作させることによって、該パケットのペイロード部を処理する。
【００４６】
なお、図２において前述したように、パケット処理に関する各機能に関して階層構造化しており、ネットワークアダプタ１３０は、パケットの処理に関しては、中位ソフトウェアのデータプレーンソフトウェア３００、上位ソフトウェアのパケット終端ソフトウェア３１０に対して下位側に位置する下位ハードウェアとして機能する。
【００４７】
図３のメインメモリ１２０内には、一般的なデータプレーンソフトウェア３００がパケットの送受信を行うためのデータ領域として、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２、受信ディスクリプタ１２４、送信ディスクリプタ１２５が配置される。また、パケット終端ソフトウェアが当該パケット処理装置１００宛パケットの最終的な処理を行うためのデータ領域として、パケットバッファ１２１内にパケット終端ソフトウェア参照可能領域１２３が配置される。
【００４８】
パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２は、ネットワークアダプタ１３０からＤＭＡ転送されたパケット自身とパケット処理を行うに当たって必要となる制御データとを保持するためのバッファである。受信ディスクリプタ１２４は、ネットワークアダプタ１３０からパケットバッファ１２１に向かう方向のＤＭＡ転送を制御するためのデータ領域である。送信ディスクリプタ１２５は、パケットバッファ１２１からネットワークアダプタ１３０に向かう方向のＤＭＡ転送を制御するためのデータ領域である。また、パケットバッファ１２１内のパケット終端ソフトウェア参照可能領域１２３は、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２から転送されたパケットのペイロード部を保持するためのバッファである。
【００４９】
なお、本実施形態においては、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２の制御データ、受信ディスクリプタ１２４、送信ディスクリプタ１２５のそれぞれには、パケットに関する一般的なデータに加えて、少なくとも、以下のデータをさらに保持している。
【００５０】
（Ａ）  パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２のパケットがパケット全体か一部（ヘッダ情報のみ）かを示す識別情報
（Ｂ）  ネットワークアダプタ１３０内に保持しているパケットの位置を示す位置情報（すなわちパケット保持領域１３５内の位置情報）
【００５１】
ネットワークアダプタ１３０がネットワーク２００，２０１から受信したパケット全体をパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へＤＭＡ転送する場合には、前記（Ａ）の識別情報には、完全なパケットを示す値が設定される。ネットワークアダプタ１３０がネットワークから受信したパケットの一部（少なくともヘッダ情報を含むデータ）のみをパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へＤＭＡ転送する場合には、前記（Ａ）の識別情報には、部分的なパケットであることを示す値が設定される。また、前記（Ｂ）の位置情報の値は、前記（Ａ）の識別情報が部分的なパケットを示す値である場合にのみ有効な値として保証される。
【００５２】
本パケット処理装置１００において他のパケット処理装置に対してパケット転送を行う場合、前記（Ａ）の識別情報、前記（Ｂ）の位置情報は、以下のように、受信ディスクリプタ１２４、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２、送信ディスクリプタ１２５の順に伝搬される。
【００５３】
（１）ネットワークアダプタ１３０が、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へＤＭＡ転送する際に、まず、受信ディスクリプタ１２４へ前記（Ａ）の識別情報、前記（Ｂ）の位置情報を書き込む。
【００５４】
（２）次に、データプレーンソフトウェア３００が、ネットワークアダプタ１３０からパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へのＤＭＡ転送を受け取った際に、受信ディスクリプタ１２４内の前記（Ａ）の識別情報、前記（Ｂ）の位置情報を、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２の制御データへ書き込む。
【００５５】
（３）しかる後、データプレーンソフトウェア３００がネットワークアダプタ１３０へＤＭＡ転送を依頼する際に、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２の制御データ内の前記（Ａ）の識別情報、前記（Ｂ）の位置情報を、送信ディスクリプタ１２５へ書き込む。
【００５６】
また、本パケット処理装置１００自身が作成したパケットを送信する場合には、データプレーンソフトウェア３００がパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２の制御データへ前記（Ａ）の識別情報を書き込む。この時、前記（Ａ）の識別情報は、完全なパケットを示す値になる。次に、データプレーンソフトウェア３００がネットワークアダプタ１３０へＤＭＡ転送を依頼する際に、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２の制御データ内の前記（Ａ）の識別情報を送信ディスクリプタ１２５へ書き込む。
【００５７】
次に、ネットワークアダプタ１３０の内部構成について説明する。ネットワークアダプタ１３０は、ＤＭＡ制御部１３１、パケット保持領域１３５、パケット送受信ポート１３７、パケット送受信ポート１３８から構成され、それぞれがネットワークアダプタ１３０内の内部バス１３６を介して接続される。また、パケット送受信ポート１３７とパケット送受信ポート１３８とは、それぞれ、ネットワーク２００とネットワーク２０１とのそれぞれに接続される。
【００５８】
ネットワークアダプタ１３０内のＤＭＡ制御部１３１は、受信処理部１３２と送信処理部１３３と受信ＤＭＡルールテーブル１３４とから構成される。受信処理部１３２は、パケット送受信ポート１３７またはパケット送受信ポート１３８から受信してパケット保持領域１３５に保持するパケットを、受信ＤＭＡルールテーブル１３４内に事前登録されたルールに従って処理する。受信ＤＭＡルールテーブル１３４には、複数のルールを登録することが可能であり、各ルールは、条件とアクションとから構成される。受信処理部１３２は、パケット受信時に、受信ＤＭＡルールテーブル１３４内に登録されたルールの条件に一致するアクションを実行する。
【００５９】
受信ＤＭＡルールテーブル１３４に事前登録されるルールの条件には、パケット内の各種フィールド値を設定することが可能である。また、受信ＤＭＡルールテーブル１３４に事前登録されるアクションとしては、例えば、以下のように、受信パケット全体をメインメモリ１２０へＤＭＡ転送するか、受信パケットの一部（少なくともヘッダ部を含むデータ）のみをメインメモリ１２０へＤＭＡ転送するか、あるいは、受信パケットを廃棄するか等に関して設定することが可能である。
【００６０】
（ａ）受信パケット全体をメインメモリ１２０へＤＭＡ転送
（ｂ）受信パケットのLayer２ヘッダをメインメモリ１２０へＤＭＡ転送
（ｃ）受信パケットのLayer２ヘッダ、Layer３ヘッダをメインメモリ１２０へＤＭＡ転送
（ｄ）受信パケットのLayer２ヘッダ、Layer３ヘッダ、Layer４ヘッダをメインメモリ１２０へＤＭＡ転送
（ｅ）受信パケットの先頭から受信ＤＭＡルールテーブル１３４に事前に設定された指定サイズまでのデータをメインメモリ１２０へＤＭＡ転送
（ｆ）受信パケットを廃棄
【００６１】
受信処理部１３２は、受信パケットの一部のみをメインメモリ１２０へＤＭＡ転送する場合、該受信パケットの一部をメインメモリ１２０上のパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へのＤＭＡ転送を完了した後も、該受信パケット全体をパケット保持領域１３５に保持したままとする。
【００６２】
また、送信処理部１３３は、メインメモリ１２０上のパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２のデータをネットワークアダプタ１３０へＤＭＡ転送する。ネットワークアダプタ１３０は、メインメモリ１２０からＤＭＡ転送したデータがパケット全体を示すデータの場合は、そのまま、パケット送受信ポート１３７またはパケット送受信ポート１３８へ送信することにより、ネットワーク２００またはネットワーク２０１へ送信する。一方、メインメモリ１２０からＤＭＡ転送したデータが、パケットの一部のみを示すデータの場合は、ＤＭＡ転送したパケットの一部を用いてパケット保持領域１３５内に保持されているパケットの該当部分を更新した後、更新後のパケットを、パケット送受信ポート１３７またはパケット送受信ポート１３８へ送信することにより、ネットワーク２００またはネットワーク２０１へ送信する。
【００６３】
（本発明の実施形態の動作の説明）
（（パケット受信時の動作例））
次に、本発明の一実施形態として説明した図３のパケット処理装置１００の動作について、その一例を詳細に説明する。まず、図３のパケット処理装置１００がネットワーク２００，２０１からパケットを受信した場合の動作例について図４Ａ、図４Ｂのフローチャートを参照しながら説明する。図４Ａおよび図４Ｂは、図３に示したパケット処理装置１００のパケット受信時の動作の一例を説明するためのフローチャートにおける前半部分および後半部分をそれぞれ示す図である。このフローチャートは、本来１枚の紙面に一体で記載することが好ましいが、紙面の大きさの制限から、そのフローチャートを前半部分および後半部分に分け、前半部分を図４Ａに、後半部分を図４Ｂにそれぞれ記載した。そこで、以下の説明では、図４Ａおよび図４Ｂの両図を連接することにより構成されるフローチャートを、図４と記載することとする。
【００６４】
図４のフローチャートにおいて、まず、パケット処理装置１００のネットワークアダプタ１３０内の受信処理部１３２は、パケット送受信ポート１３７，１３８を介してネットワーク２００，２０１からのパケットを受信すると、該パケットのヘッダ部の解析を行い、該パケットに関するＤＭＡルールを判定する（ステップＳ１０１）。すなわち、受信処理部１３２は、受信パケットのヘッダ部から抽出したフィールド値により受信ＤＭＡルールテーブル１３４に事前登録されているＤＭＡルールの条件を検索して、該フィールド値と一致した条件に該当するＤＭＡルールのアクションを抽出することにより、該受信パケットに関して如何なるアクションを行うべきかというＤＭＡルールを判定する。
【００６５】
受信処理部１３２は、該受信パケットに関するＤＭＡルールの判定結果に基づいて、処理を分岐して、それぞれに該当する該受信パケットに関する処理を行う（ステップＳ１０２）。ＤＭＡルールの判定結果が廃棄であった場合には（ステップＳ１０２の「廃棄」の場合）、受信処理部１３２は、該受信パケットを廃棄する（ステップＳ１０３）。また、ＤＭＡルールの判定結果が該受信パケット全体のＤＭＡ転送を示した場合には（ステップＳ１０２の「全体をＤＭＡ転送」の場合）、受信処理部１３２は、該受信パケット全体をメインメモリ１２０上のパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へＤＭＡ転送する（ステップＳ１０４）。
【００６６】
また、ＤＭＡルールの判定結果が一部（少なくともヘッダ情報を含むデータ）のＤＭＡ転送を示した場合には（ステップＳ１０２の「一部をＤＭＡ転送」の場合）、受信処理部１３２は、まず、パケット保持領域１３５に該受信パケット全体を保持する。さらに、受信処理部１３２は、該受信パケットのヘッダ部のフィールド値と「条件」が一致した受信ＤＭＡルールテーブル１３４の「アクション」に指定されている指定サイズを取り出し、該受信パケットのうち、該指定サイズに該当するパケットの一部を、メインメモリ１２０上のパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へＤＭＡ転送する（ステップＳ１０５）。
【００６７】
ここで、パケット処理装置１００のネットワークアダプタ１３０内の受信ＤＭＡルールテーブル１３４に事前登録されている登録内容の具体例について、図５を用いて説明する。図５は、図３に示したパケット処理装置１００のネットワークアダプタ１３０内の受信ＤＭＡルールテーブル１３４に事前登録されている登録内容の一例を示すテーブルであり、データプレーンソフトウェア３００が、一般的なＩＰルーティングを行うことを想定した場合すなわちLayer３転送を行うことを想定した場合のＤＭＡルールの登録例を示している。
【００６８】
図５に示す受信ＤＭＡルールテーブル１３４は、条件欄１３４ａとアクション欄１３４ｂとから構成されており、条件欄１３４ａには、上から順番に、「宛先ＭＡＣアドレスが自ネットワークアダプタ１３０のアドレス以外」、「宛先ＩＰアドレスが自パケット処理装置１００のアドレス」、「Ether  TypeがＩＰｖ４およびＩＰｖ６以外」、「プロトコルがＴＣＰ」、「プロトコルがＵＤＰ」、「上記以外のパケット」が登録されている例を示している。また、アクション欄１３４ｂには、条件欄１３４ａのそれぞれの条件に関連付けて、上から順番に、「廃棄」、「パケット全体をＤＭＡ転送」、「パケット全体をＤＭＡ転送」、「先頭からＴＣＰヘッダまでをＤＭＡ転送」、「先頭からＵＤＰヘッダまでをＤＭＡ転送」、「先頭からＩＰヘッダまでをＤＭＡ転送」が登録されている例を示している。
【００６９】
図５に示す受信ＤＭＡルールテーブル１３４の場合には、ステップＳ１０１，Ｓ１０２のＤＭＡルール判定処理において、受信ＤＭＡルールテーブル１３４の上から順番に、受信パケットのヘッダ部のフィールド値と一致する条件を検索する処理を行い、ステップＳ１０３〜ステップＳ１０５において、それぞれ、該フィールド値と一致した条件に該当するアクションを実行する。
【００７０】
つまり、受信パケットの宛先ＭＡＣアドレスが自パケット送受信ポート１３７，１３８のアドレスと異なる場合には、受信ＤＭＡルールテーブル１３４の番号１の条件欄１３４ａに一致するので、ステップＳ１０３において、該受信パケットを廃棄する。また、宛先ＭＡＣアドレスが自パケット送受信ポート１３７，１３８のいずれか該受信パケットを受け取った方のアドレスと一致する場合には、受信ＤＭＡルールテーブル１３４の番号１の条件欄１３４ａには一致しないので、受信ＤＭＡルールテーブル１３４の番号２のＤＭＡルール判定処理へ進む。
【００７１】
そして、受信パケットの宛先ＩＰアドレスが該受信パケットを処理している自パケット処理装置１００自身のＩＰアドレスと一致する場合には、受信ＤＭＡルールテーブル１３４の番号２の条件欄１３４ａに一致するので、ステップＳ１０４において、該受信パケット全体をＤＭＡ転送する。なお、パケット全体をＤＭＡ転送する場合には、ネットワークアダプタ１３０の受信処理部１３２は、メインメモリ１２０の受信ディスクリプタ１２４に、パケットバッファ１２１にＤＭＡ転送した該受信パケットが完全なパケット全体であることを示す識別情報を書き込む。また、該識別情報には、該受信パケットをＤＭＡ転送したパケットバッファ１２１の位置に関する情報も設定される。
【００７２】
さらに、受信パケットの宛先ＭＡＣアドレスが自パケット送受信ポート１３７，１３８のいずれか該受信パケットを受け取った方のアドレスと一致しているものの、該受信パケットの宛先ＩＰアドレスが自パケット処理装置１００自身のＩＰアドレスと一致していない場合には、受信ＤＭＡルールテーブル１３４の番号３のＤＭＡルール判定処理へ進む。
【００７３】
そして、該受信パケットがＩＰパケット以外（すなわち、Ether  TypeがＩＰｖ４およびＩＰｖ６以外のパケット）であって例えばＡＲＰ（Address  Resolution  Protocol）パケットであった場合には、受信ＤＭＡルールテーブル１３４の番号３の条件欄１３４ａに一致するので、ステップＳ１０４において、ネットワークアダプタ１３０の受信処理部１３２は、該受信パケット全体をメインメモリ１２０のパケットバッファ１２１にＤＭＡ転送するとともに、メインメモリ１２０の受信ディスクリプタ１２４にも該受信パケットが完全なパケット全体であることを示す識別情報を書き込む。なお、該識別情報には、該受信パケットをＤＭＡ転送したパケットバッファ１２１の位置に関する情報も設定される。
【００７４】
さらに、受信パケットの宛先ＭＡＣアドレスが自パケット送受信ポート１３７，１３８のいずれか該受信パケットを受け取った方のアドレスと一致している場合であって、かつ、該受信パケットの宛先ＩＰアドレスが自パケット処理装置１００自身のＩＰアドレスとは異なるＩＰパケット（すなわち、Ether  TypeがＩＰｖ４またはＩＰｖ６のパケット）であった場合には、受信ＤＭＡルールテーブル１３４の番号４〜６のいずれかのＤＭＡルールの条件に一致する。
【００７５】
したがって、ステップＳ１０５において、ネットワークアダプタ１３０の受信処理部１３２は、該受信パケットの一部をメインメモリ１２０のパケットバッファ１２１にＤＭＡ転送する。すなわち、該受信パケットの先頭から、受信ＤＭＡルールテーブル１３４の一致した条件に該当するアクション欄１３４ｂに設定されている指定サイズ分に相当するデータ（該当するアクション欄１３４ｂにて指定された、ヘッダ部を少なくとも含むデータ範囲）を抽出して、メインメモリ１２０のパケットバッファ１２１にＤＭＡ転送する。
【００７６】
なお、受信ＤＭＡルールテーブル１３４の番号４〜６のいずれかのＤＭＡルールの条件に一致する場合には、該受信パケットは、最終的には、ネットワークアダプタ１３０から、ネットワーク２００またはネットワーク２０１へ再度転送する必要があるので、ネットワークアダプタ１３０は、データプレーンソフトウェア３００からの何らかの指示が届くまで、該受信パケット全体をパケット保持領域１３５に保持したままにする。
【００７７】
さらに、ステップＳ１０５においては、ネットワークアダプタ１３０の受信処理部１３２は、メインメモリ１２０のパケットバッファ１２１にＤＭＡ転送したデータが、該受信パケットの一部（すなわち、部分的なパケット）であることを示す識別情報と該受信パケット全体を保持しているパケット保持領域１３５内の位置情報とを、メインメモリ１２０の受信ディスクリプタ１２４に書き込む。なお、該識別情報には、該受信パケットをＤＭＡ転送したパケットバッファ１２１の位置に関する情報も設定している。
【００７８】
ステップＳ１０４またはステップＳ１０５の動作が終了して、ネットワークアダプタ１３０からメインメモリ１２０上のパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２へ受信パケットの全部または一部がＤＭＡ転送されてくるとともに、メインメモリ１２０の受信ディスクリプタ１２４に識別情報または該識別情報と位置情報とが書き込まれると、データプレーンソフトウェア３００は、メインメモリ１２０の受信ディスクリプタ１２４への該識別情報の書き込みを検出する。
【００７９】
受信ディスクリプタ１２４への該識別情報の書き込みを検出したデータプレーンソフトウェア３００は、検出した受信ディスクリプタ１２４の識別情報に基づいて、該識別情報が示すパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２にＤＭＡ転送により格納された受信パケットに関する解析を開始する（ステップＳ１０６）。この時、データプレーンソフトウェア３００は、まず、受信ディスクリプタ１２４の該識別情報に基づき、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納された該受信パケットが、該受信パケット全体であるか、該受信パケットの部分的なパケットであるかを示す識別情報を、パケットバッファ１２１内の制御データ領域に書き込む。
【００８０】
さらに、該識別情報が部分的なパケットを示していた場合には、データプレーンソフトウェア３００は、該受信パケット全体を保持しているネットワークアダプタ１３０のパケット保持領域１３５内の位置を示す受信ディスクリプタ１２４の位置情報を読み取り、該位置情報も、パケットバッファ１２１内の制御データ領域に書き込む。
【００８１】
しかる後、データプレーンソフトウェア３００は、受信パケットに関する解析結果に基づいて、該受信パケットに対して、廃棄、自パケット処理装置１００内における受信処理、または、他のパケット処理装置への転送、のいずれかの処理を決定して、それぞれに該当する処理に分岐する（ステップＳ１０７）。なお、データプレーンソフトウェア３００のこのような決定ロジックに関しては、一般的なデータプレーンソフトウェアにおいて実施されている処理であるので、ここでの更なる説明は割愛する。
【００８２】
データプレーンソフトウェア３００が、該受信パケットを廃棄する決定を行った場合には（ステップＳ１０７の「廃棄」の場合）、データプレーンソフトウェア３００は、パケットバッファ１２１内の制御データ領域の識別情報を参照して、処理中の該受信パケットが、パケット全体であるかまたは部分的なパケット（パケットの一部）であるかを判定する（ステップＳ１０８）。パケット全体であった場合には（ステップＳ１０８の「Ｎｏ」の場合）、直ちに、ステップＳ１１２に進むが、部分的なパケット（パケットの一部）であった場合には（ステップＳ１０８の「Ｙｅｓ」の場合）、該受信パケットの全体がネットワークアダプタ１３０内のパケット保持領域１３５に保持されている場合である。
【００８３】
したがって、データプレーンソフトウェア３００は、パケットバッファ１２１内の制御データ領域の位置情報を取り出して、パケット保持領域１３５内の該位置情報が示す位置に保持されている該受信パケット全体の削除要求をネットワークアダプタ１３０に対して行う（ステップＳ１１１）。ネットワークアダプタ１３０は、データプレーンソフトウェア３００からの該削除要求を受け取ると、該削除要求が示す位置に保持されている受信パケット全体を、パケット保持領域１３５から削除する。
【００８４】
しかる後、ステップＳ１１２において、データプレーンソフトウェア３００は、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納されている該受信パケットの部分的なパケットまたは該受信パケット全体を廃棄する（ステップＳ１１２）。
【００８５】
次に、ステップＳ１０７において、受信パケットの解析結果として、データプレーンソフトウェア３００が、該受信パケットを自パケット処理装置１００宛のパケットとして、パケット終端ソフトウェア３１０によってパケット処理を行うことを決定した場合には（ステップＳ１０７の「当該装置自身で受信」の場合）、以下の処理を行う。すなわち、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納されている該受信パケットのペイロード部を、パケットバッファ１２１内のパケット終端ソフトウェア参照可能領域１２３にコピーすることにより、該受信パケットのペイロード部をパケット終端ソフトウェア３１０に引き継いで、パケット終端ソフトウェア３１０に該受信パケットのペイロード部に関する処理を依頼する（ステップＳ１０９）。
【００８６】
また、ステップＳ１０７において、受信パケットの解析結果として、データプレーンソフトウェア３００が、該受信パケットを例えばネットワーク２０１を介して他のパケット処理装置へ転送することを決定した場合には（ステップＳ１０７の「転送」の場合）、データプレーンソフトウェア３００は、まず、必要に応じて、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納されている該受信パケットに関する更新を行う。すなわち、例えば、該受信パケットがＩＰｖ４パケットであった場合には、ＩＰｖ４ヘッダ内のＴＴＬ（Time  To  Live）の更新やチェックサム値の更新を行う。また、Layer２ヘッダに関しては全て更新を行う。
【００８７】
しかる後、データプレーンソフトウェア３００は、該受信パケットが格納されているパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２の位置（アドレス）、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納されている該受信パケットがパケット全体であるかパケットの一部であるかを示す識別情報、および、パケットバッファ１２１内にパケットの一部（部分的なパケット）が格納されていた場合には該受信パケット全体が保持されているネットワークアダプタ１３０のパケット保持領域１３５内の位置情報、のそれぞれを、メインメモリ１２０内の送信ディスクリプタ１２５に書き込む。
【００８８】
なお、送信ディスクリプタ１２５は、ネットワークアダプタ１３０のパケット送受信ポート１３７，１３８対応にメインメモリ１２０内に配置されていて、前述のように、該受信パケットを例えばネットワーク２０１を介して転送する場合には、ネットワーク２０１と接続されているネットワークアダプタ１３０のパケット送受信ポート１３８に対応した送信ディスクリプタ１２５へ書き込む。そして、送信ディスクリプタ１２５への書き込みが終了すると、データプレーンソフトウェア３００は、ネットワークアダプタ１３０に対して、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納されている該受信パケットのネットワークアダプタ１３０へのＤＭＡ転送を依頼する（ステップＳ１１０）。
【００８９】
ネットワークアダプタ１３０の送信処理部１３３は、データプレーンソフトウェア３００からの受信パケットのネットワークアダプタ１３０へのＤＭＡ転送依頼を受け取ると、まず、メインメモリ１２０の送信ディスクリプタ１２５を読み取る。そして、該送信ディスクリプタ１２５に設定された位置（アドレス）が示すパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２から受信パケットをネットワークアダプタ１３０へＤＭＡ転送するとともに、該送信ディスクリプタ１２５に設定された識別情報に基づいて、該ＤＭＡ転送した受信パケットがパケット全体であるかパケットの一部であるかを判定する（ステップＳ１１３）。
【００９０】
該ＤＭＡ転送した受信パケットがパケット全体であった場合には（ステップＳ１１４の「Ｎｏ」の場合）、ネットワークアダプタ１３０の送信処理部１３３は、ＤＭＡ転送した受信パケットを、そのまま、読み取った送信ディスクリプタ１２５が対応するパケット送受信ポート１３８を介してネットワーク２０１に送信する（ステップＳ１１６）。
【００９１】
一方、該ＤＭＡ転送した受信パケットがパケットの一部であった場合には（ステップＳ１１４の「Ｙｅｓ」の場合）、ネットワークアダプタ１３０の送信処理部１３３は、送信ディスクリプタ１２５に設定された位置情報が示すパケット保持領域１３５内の位置に受信パケット全体として保持されている受信パケットのうち該当部分（ＤＭＡ転送したパケットの一部に該当する部分例えばヘッダ部）を、ＤＭＡ転送した受信パケット（パケットの一部例えばヘッダ部）によって更新して、更新した受信パケットを、読み取った送信ディスクリプタ１２５に対応するパケット送受信ポート１３８を介してネットワーク２０１に送信する（ステップＳ１１５）。
【００９２】
（（パケット送信時の動作例））
次に、本発明の一実施形態として説明した図３のパケット処理装置１００自身が作成したパケットをネットワーク２００，２０１に送信する場合の動作例について図６のフローチャートを参照しながら説明する。図６は、図３に示したパケット処理装置１００自身のパケット送信時の動作の一例を説明するためのフローチャートである。
【００９３】
図６のフローチャートにおいて、まず、パケット処理装置１００自身が、ネットワーク２００またはネットワーク２０１を介して他のパケット処理装置に対して送信しようとする送信パケットを作成すると、作成した送信パケットは、メインメモリ１２０のパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納される（ステップＳ１２１）。該送信パケットは、ヘッダ部からペイロード部までの全てを含むパケットであり、パケットバッファ１２１の制御データには、該送信パケットに関する識別情報として、パケット全体を示す識別情報が設定される。
【００９４】
データプレーンソフトウェア３００は、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に送信パケットが格納されたことを確認すると、該送信パケットを解析して（ステップＳ１２２）、解析結果として、該送信パケットを廃棄するか、あるいは、送信するかを決定する（ステップＳ１２３）。データプレーンソフトウェア３００の該決定ロジックに関しては、一般的なデータプレーンソフトウェアにおいて実施されている処理であるので、ここでの更なる説明は割愛する。
【００９５】
該送信パケットを廃棄すると決定した場合には（ステップＳ１２３の「廃棄」の場合）、データプレーンソフトウェア３００は、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納されている該送信パケットを廃棄する（ステップＳ１２４）。
【００９６】
また、該送信パケットを送信すると決定した場合には（ステップＳ１２３の「送信」の場合）、データプレーンソフトウェア３００は、該送信パケットが格納されているパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２上の位置（アドレス）と、送信対象の該送信パケットがパケット全体であることを示す識別情報と、をメインメモリの送信ディスクリプタ１２５に書き込む。
【００９７】
なお、送信ディスクリプタ１２５は、ネットワークアダプタ１３０のパケット送受信ポート１３７，１３８対応にメインメモリ１２０内に配置されていて、該送信パケットを例えばネットワーク２０１を介して転送する場合には、ネットワーク２０１と接続されているネットワークアダプタ１３０のパケット送受信ポート１３８に対応した送信ディスクリプタ１２５へ書き込む。そして、送信ディスクリプタ１２５への書き込みが終了すると、データプレーンソフトウェア３００は、ネットワークアダプタ１３０に対して、パケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２に格納されている該送信パケットのネットワークアダプタ１３０へのＤＭＡ転送を依頼する（ステップＳ１２５）。
【００９８】
ネットワークアダプタ１３０の送信処理部１３３は、データプレーンソフトウェア３００からの送信パケットのネットワークアダプタ１３０へのＤＭＡ転送依頼を受け取ると、まず、メインメモリ１２０の送信ディスクリプタ１２５を読み取る。そして、該送信ディスクリプタ１２５に設定された位置（アドレス）が示すパケットバッファ１２１内のデータプレーンソフトウェア参照可能領域１２２から送信パケットをネットワークアダプタ１３０へＤＭＡ転送するとともに、該送信ディスクリプタ１２５に記述された識別情報に基づいて、該ＤＭＡ転送した送信パケットがパケット全体であると判定する（ステップＳ１２６）。
【００９９】
したがって、ネットワークアダプタ１３０の送信処理部１３３は、ＤＭＡ転送した送信パケットを、そのまま、送信ディスクリプタ１２５により送信先として指定されているパケット送受信ポート１３８を介して、ネットワーク２０１へ送信する（ステップＳ１２７）。
【０１００】
（実施形態の効果の説明）
以上に詳細に説明したように、本実施形態においては以下のような効果が得られる。
【０１０１】
すなわち、本実施形態においては、パケット処理に関する機能を、下位ハードウェアのネットワークアダプタ１３０、中位ソフトウェアのデータプレーンソフトウェア３００、上位ソフトウェアのパケット終端ソフトウェア３１０のように、階層構造化して、それぞれの階層間で引き渡すべきパケットを、ヘッダ部のみ、ペイロード部のみ、ヘッダ部とペイロード部との双方、と分類することにより、ネットワークアダプタ１３０とメインメモリ１２０との間のＤＭＡ転送によるバス１５１，１５２、バスブリッジ１４０上のパケットのデータ転送量やメインメモリ１２０上のパケットデータのコピー量を削減することを可能にしている。
【０１０２】
而して、パケットのデータ転送によってバス（バス１５０，１５１，１５２、バスブリッジ１４０）が占有されてしまうといういわゆるバスボトルネックを防止することができ、その結果として、パケット処理の中核を担うデータプレーンソフトウェア３００の処理性能を改善することができるので、パケット処理装置１００全体のシステム性能を向上させることができる。
【０１０３】
一般に、バス（バス１５０，１５１，１５２、バスブリッジ１４０）上を転送されるＩＰパケットのサイズに関しては、ヘッダ部のサイズよりもペイロード部のサイズの方が大きい場合が大半を占めるので、本実施形態を適用することにより、バス（バス１５０，１５１，１５２、バスブリッジ１４０）上を流れるデータ量を大幅に削減することが可能である。
【０１０４】
例えば、バス構成として一般的なEthernet（登録商標）を適用する場合、パケットサイズはEthernet（登録商標）ヘッダを含めて最大１５１４バイトである。したがって、本実施形態に示したように、例えばEthernet（登録商標）ヘッダとＩＰｖ４ヘッダのみをメインメモリ１２０へＤＭＡ転送する場合には、ＤＭＡ転送サイズは３４バイトとなり、最大サイズの１５１４バイトのパケット全体をＤＭＡ転送する場合に比べてバス上のデータ転送量は約（１／４４）に抑えることができる。
【０１０５】
また、ジャンボフレームと呼ばれる拡張機能を使用して９０００バイトのパケットを転送する場合においては、さらに効果が大きく、Ethernet（登録商標）ヘッダとＩＰｖ４ヘッダのみをＤＭＡ転送する場合のＤＭＡ転送サイズは３４バイトであるので、パケット全体をＤＭＡ転送する場合と比べてバス転送量は約（１／２６４）と大幅に削減することができる。すなわち、パケットのＤＭＡ転送によるバス１５１，１５２、バスブリッジ１４０の占有をより確実に防止することができる。
【０１０６】
（他の実施形態）
以上に説明した実施形態においては、ネットワークアダプタ１３０内のパケット送受信ポートの個数がパケット送受信ポート１３７，１３８の２個の場合を例示したが、かかる個数に限るものではなく、１個でも３個以上でも任意の個数であって構わない。
【０１０７】
また、前述の実施形態においては、パケット処理装置１００内のネットワークアダプタ１３０の個数について、ネットワークアダプタ１３０の１個のみ備えている場合について説明したが、かかる個数に限るものではなく、例えば、以下のいずれかの機能を具備することによって、複数個のネットワークアダプタを備えることも可能である。
（１）各ネットワークアダプタ間に専用バスを設置し、各ネットワークアダプタ内のパケット保持領域に保持されているパケットを各ネットワークアダプタ間の該専用バスを介して転送する機能。
（２）各ネットワークアダプタ内ではなく、各ネットワークアダプタに共有のパケット保持領域を配置し、該パケット保持領域を各ネットワークアダプタ間で互いに共有する機能。
【０１０８】
以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【０１０９】
１０        パケット
１１        ヘッダ部
１１ａ      Layer２ヘッダ
１１ｂ      Layer３ヘッダ
１１ｃ      Layer４ヘッダ
１２        ペイロード部
１２ａ      ペイロード
２０        パケット
２１        パケット
２２        ペイロード部
３０        パケット
３１        ヘッダ部
１００      パケット処理装置
１００Ａ    パケット処理装置
１１０      ＣＰＵ
１１０Ａ    ＣＰＵ
１２０      メインメモリ
１２０Ａ    メインメモリ
１２１      パケットバッファ
１２２      データプレーンソフトウェア参照可能領域
（データプレーンソフトウェア参照可能メインメモリ領域）
１２３      パケット終端ソフトウェア参照可能領域
（パケット終端ソフトウェア参照可能メインメモリ領域）
１２４      受信ディスクリプタ
１２５      送信ディスクリプタ
１３０      ネットワークアダプタ
１３０Ａ    ネットワークアダプタ
１３１      ＤＭＡ制御部
１３２      受信処理部
１３３      送信処理部
１３４      受信ＤＭＡルールテーブル
１３４ａ    条件欄
１３４ｂ    アクション欄
１３５      パケット保持領域（ネットワークアダプタ内パケット保持領域）
１３６      内部バス
１３７      パケット送受信ポート
１３７Ａ    パケット送受信ポート
１３８      パケット送受信ポート
１３８Ａ    パケット送受信ポート
１４０      バスブリッジ
１４０Ａ    バスブリッジ
１５０      バス
１５０Ａ    バス
１５１      バス
１５１Ａ    バス
１５２      バス
１５２Ａ    バス
２００      ネットワーク
２０１      ネットワーク
３００      データプレーンソフトウェア
３１０      パケット終端ソフトウェア
【図１】
2019205115.tif 000003
【図２】
2019205115.tif 000004
【図３】
2019205115.tif 000005
【図４Ａ】
2019205115.tif 000006
【図４Ｂ】
2019205115.tif 000007
【図５】
2019205115.tif 000008
【図６】
2019205115.tif 000009
【図７】
2019205115.tif 000010
【手続補正書】
【提出日】令和1年8月21日(2019.8.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークと接続してパケットを送受信するネットワークアダプタと、該パケットを格納するメインメモリと、該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）と、をバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするパケット処理装置。
【請求項２】
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関し、
該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスではなかった場合には、該パケットを廃棄し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置であるか、または、Ether  TypeがＩＰｖ４およびＩＰｖ６以外のタイプであった場合には、該パケットの全てを前記メインメモリに対してＤＭＡ転送し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置ではなく、かつ、Ether  TypeがＩＰｖ４およびＩＰｖ６であった場合には、該パケットの全てを自ネットワークアダプタ内のパケット保持領域に保持するとともに、該パケットのヘッダ部を前記メインメモリに対してＤＭＡ転送する
ことを特徴とする請求項１に記載のパケット処理装置。
【請求項３】
前記ネットワークアダプタは、前記ネットワークから受信した前記パケットの全てまたは前記パケットのヘッダ部を前記メインメモリにＤＭＡ転送する際に、
ＤＭＡ転送する該パケットが、該パケットの全てまたは該パケットのヘッダ部のいずれであるかを識別する識別情報と、該パケットのヘッダ部をＤＭＡ転送する場合には該パケットの全てを保持している自ネットワークアダプタ内の前記パケット保持領域内の位置を示す位置情報と、を前記メインメモリに配置した受信ディスクリプタに設定して、前記データプレーンソフトウェアに通知する
ことを特徴とする請求項２に記載のパケット処理装置。
【請求項４】
前記データプレーンソフトウェアは、前記メインメモリの前記受信ディスクリプタによる通知を受け取って、前記ネットワークアダプタからの前記パケットが前記メインメモリに格納されたことを検出した際に、
前記パケットのヘッダ部を解析して、該パケットの宛先ＩＰアドレスが自パケット処理装置であった場合には、パケット最終ソフトウェアに該パケットの処理を依頼するために、前記メインメモリ内の前記パケット最終ソフトウェアが参照可能な領域に該パケットのペイロード部をコピーして、該ペイロード部を前記パケット終端ソフトウェアに引き継ぎ、
また、前記パケットのヘッダ部を解析して、該パケットの宛先ＩＰアドレスが自パケット処理装置以外であった場合には、該パケットのヘッダ部を必要に応じて更新した後、前記ネットワークアダプタに対して該パケットの該ネットワークアダプタへのＤＭＡ転送を依頼する
ことを特徴とする請求項３に記載のパケット処理装置。
【請求項５】
前記データプレーンソフトウェアは、前記メインメモリの前記受信ディスクリプタによる通知を受け取って、前記ネットワークアダプタからの前記パケットが前記メインメモリに格納されたことを検出した際に、
前記パケットのヘッダ部を解析した結果として該パケットを廃棄すると判定した場合には、前記メインメモリから該パケットを廃棄するとともに、前記受信ディスクリプタに設定されている前記識別情報を参照して、前記メインメモリに格納されている該パケットが、該パケットのヘッダ部であることを確認した場合、前記受信ディスクリプタに設定されている前記位置情報をさらに参照して、該位置情報が示す前記ネットワークアダプタ内の前記パケット保持領域の位置に保持されている該パケットの全てを削除することを、前記ネットワークアダプタに対して要求する
ことを特徴とする請求項３または４に記載のパケット処理装置。
【請求項６】
前記データプレーンソフトウェアは、前記メインメモリに格納したパケットを前記ネットワークに送信するために、前記ネットワークアダプタに対して該パケットの該ネットワークアダプタへのＤＭＡ転送を依頼する際に、
ＤＭＡ転送を依頼する前記パケットが格納されている前記メインメモリのアドレスと、該パケットが完全な状態のパケット全てまたは該パケットのヘッダ部のいずれであるかを識別する識別情報と、該パケットのヘッダ部をＤＭＡ転送する場合には該パケットの全てを保持している前記ネットワークアダプタ内の前記パケット保持領域の位置を示す位置情報と、を前記メインメモリに配置した送信ディスクリプタに設定して、前記ネットワークアダプタに通知する
ことを特徴とする請求項２ないし５のいずれかに記載のパケット処理装置。
【請求項７】
前記ネットワークアダプタは、前記メインメモリから自ネットワークアダプタへの前記パケットのＤＭＡ転送の依頼を前記データプレーンソフトウェアから受け取った際に、
前記メインメモリの前記送信ディスクリプタを参照して、該送信ディスクリプタに設定されている前記メインメモリの前記アドレスが示すアドレスから自ネットワークアダプタへ、前記パケットをＤＭＡ転送し、
前記送信ディスクリプタに設定されている前記識別情報が、ＤＭＡ転送した前記パケットが完全な状態のパケット全てであることを示している場合には、該パケットをそのまま前記ネットワークに送信し、
また、前記送信ディスクリプタに設定されている前記識別情報が、ＤＭＡ転送した前記パケットがパケットのヘッダ部であることを示している場合には、前記送信ディスクリプタに設定されている前記位置情報が示す前記パケット保持領域の位置に保持している前記パケット全てのうちヘッダ部を、ＤＭＡ転送した前記パケットのヘッダ部により更新して、該ヘッダ部を更新した前記パケット全てを前記ネットワークに送信する
ことを特徴とする請求項６に記載のパケット処理装置。
【請求項８】
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）とをバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作を制御し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするバス転送制御方法。
【請求項９】
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関し、
該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスではなかった場合には、該パケットを廃棄し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置であるか、または、Ether  TypeがＩＰｖ４およびＩＰｖ６以外のタイプであった場合には、該パケットの全てを前記メインメモリに対してＤＭＡ転送し、
また、該パケットの宛先ＭＡＣアドレスが自ネットワークアダプタのアドレスであり、かつ、該パケットの宛先ＩＰアドレスが自パケット処理装置ではなく、かつ、Ether  TypeがＩＰｖ４およびＩＰｖ６であった場合には、該パケットの全てを自ネットワークアダプタ内のパケット保持領域に保持するとともに、該パケットのヘッダ部を前記メインメモリに対してＤＭＡ転送する
ことを特徴とする請求項８に記載のバス転送制御方法。
【請求項１０】
ネットワークと接続してパケットを送受信するネットワークアダプタと該パケットを格納するメインメモリと該パケットに関する処理を行うソフトウェアを実行するＣＰＵ（Central  Processing  Unit）とをバスを介して接続し、該パケットをＤＭＡ転送により前記バスを介して前記ネットワークアダプタと前記メインメモリとの間で転送する構成からなるパケット処理装置において、前記パケットに関するデータを前記バス上に転送する動作の制御をコンピュータによって実行し、
前記ネットワークアダプタは、前記ネットワークから受信したパケットに関して、前記メインメモリに対して該パケットの全て若しくは該パケットのヘッダ部をＤＭＡ転送するか、または、該パケットを廃棄するかを判定する機能を有し、
かつ、前記パケットに関する処理を行うソフトウェアを、前記メインメモリ上の前記パケットのヘッダ部を解析して自パケット処理装置が該パケットの最終的な宛先であるかまたは他に転送すべき該パケットの宛先であるかを判定するとともに、該ヘッダ部に対して必要な更新処理を行うデータプレーンソフトウェアと、自パケット処理装置が前記パケットの最終的な宛先であった場合に該パケットのペイロード部の処理を行うパケット終端ソフトウェアと、に分離して、前記パケットに関する処理を行う各機能を、前記ネットワークアダプタの下位ハードウェアと、前記データプレーンソフトウェアの中位ソフトウェアと、前記パケット終端ソフトウェアの上位ソフトウェアと、の３つの階層に階層化し、
かつ、前記パケットのヘッダ部の解析結果に応じて、それぞれの階層間に引き渡す際の該パケットに関するデータとして、該パケットのヘッダ部、該パケットのペイロード部または該パケットの全て、のいずれかを選択して引き渡す
ことを特徴とするバス転送制御プログラム。