(57)【要約】【課題】並列化によるパケット受信処理の高速化が可能なパケット処理装置を得ることを目的とする。【解決手段】ＯＳを搭載したマルチコア／マルチプロセッサＣＰＵ（ＣＰＵａ１〜ａｎ）を有するパケット受信処理部７と、ネットワークインタフェイスデバイスであるＮＩＣ（Network Interface Card）３とを備えたパケット処理装置において、ＮＩＣ３を監視するデバイス監視部９を用いることにより、パケット受信処理を並列化し、高速受信処理が可能なパケット処理装置を実現する。【選択図】        図１
2008299439.tif 000002
【特許請求の範囲】
【請求項１】
外部ネットワーク装置からパケットが入力されるネットワークインタフェイスデバイスと、
このネットワークインタフェイスデバイスからのパケットのＤＭＡ転送の監視を行うデバイス監視部と、
複数個のＣＰＵを有するとともにＯＳが搭載されたマルチプロセッサ、および前記各ＣＰＵにそれぞれ対応して前記ＯＳのカーネル空間内に形成され前記ネットワークインタフェイスデバイスからＤＭＡ転送されたパケットを格納するための複数個のＤＭＡ受信バッファ、を有するパケット受信処理部と、
を備え、
前記パケット受信処理部は、
前記ネットワークインタフェイスデバイスから前記複数個のＤＭＡ受信バッファのうちの１つのＤＭＡ受信バッファへのＤＭＡ転送が完了すると、前記ネットワークインタフェイスデバイスからの割り込み通知をもとに前記複数個のＣＰＵのうちの１つのＣＰＵに対して割り込み通知を行い、次の割り込み通知先として前記１つのＣＰＵとは異なる他のＣＰＵを設定するとともに、
前記デバイス監視部を介して前記ネットワークインタフェイスデバイスから前記１つのＤＭＡ受信バッファへのＤＭＡ転送が完了したことを検出した後に、次のＤＭＡ転送先として前記１つのＤＭＡ受信バッファとは異なる他のＤＭＡ受信バッファを設定し、前記ネットワークインタフェイスデバイスに対して前記他のＤＭＡ受信バッファへの次のＤＭＡ転送を開始させるようにして、前記マルチプロセッサによるパケットの並列受信処理を行うことを特徴とするパケット処理装置。
【請求項２】
前記パケット受信処理部は、前記各ＤＭＡ受信バッファにそれぞれ対応して設けられた複数個のキューと、前記各ＤＭＡ受信バッファで受信したパケットが転送されるキューの順番で、前記キューから前記パケットを取得して上位レイヤ側へ転送するパケット集約部と、をさらに有することを特徴とする請求項１に記載のパケット処理装置。
【請求項３】
前記パケット受信処理部は、次に割込みを通知するＣＰＵを前記１つのＣＰＵとは異なる他のＣＰＵに切替えて設定する際に、前記複数個のＣＰＵのうちパケットの受信処理を行っていないＣＰＵであってかつ処理負荷が最も低いＣＰＵを選択して前記他のＣＰＵに設定することを特徴とする請求項２に記載のパケット処理装置。
【請求項４】
前記パケット集約部は、前記キューにポーリングを行なうことによって前記各キューを監視し、この監視結果に基づいてパケット受信の順序制御を行うことを特徴とする請求項２または３に記載のパケット処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数個のＣＰＵを用いてパケットの並列受信処理を行うパケット処理装置に関する。
【背景技術】
【０００２】
近時、インターネットを利用した通信サービスが次々と登場し、アクセス網およびコア網におけるＩＰトラヒック量は年々増加している。それに伴い、イーサネット（登録商標）規格（ＩＥＥＥ８０２．３）に代表される有線ネットワークや、ＷｉＭＡＸ（ＩＥＥＥ８０２．１６）に代表される無線ネットワーク等において、伝送帯域の高速化の検討が進められている。特に有線通信では、１００Ｍｂｐｓ、１Ｇｂｐｓに止まらず、１０Ｇｂｐｓの伝送速度を実現するイーサネット（登録商標）規格が策定され、既に対応したネットワークインタフェイスデバイスが製品化されている。
【０００３】
一方、ＣＰＵもクロックアップや、マルチコア／マルチプロセッサによる高性能化が進んでいるが、ＯＳを搭載したＣＰＵおよびネットワークインタフェイスデバイスで構成される通信装置では、ＣＰＵとネットワークインタフェイスデバイスとの間のパケット送受信がボトルネックとなり、１０Ｇｂｐｓのような高速伝送帯域を収容することが困難となっている。
【０００４】
汎用ＯＳを搭載したＣＰＵおよびネットワークインタフェイスデバイスで構成される従来のパケット処理装置における受信処理では、まずＯＳは割り込みを通知するＣＰＵの決定を行うとともに、ネットワークインタフェイスデバイスからＤＭＡ（Direct Memory Access）転送されてくるパケットを格納するＤＭＡ受信バッファをカーネル空間内に用意する。また、物理デバイスから受信したパケットは、ＭＡＣ（Media Access Control）ヘッダ、ＦＣＳ（Frame Check Sequence）等によるフィルタリングがなされた後に、ネットワークインタフェイスデバイス内のバッファからＤＭＡ受信バッファに転送される。その後、ネットワークインタフェイスデバイスは、パケット到着をＣＰＵ（ＯＳ）側に通知するために、ＣＰＵに対してＨＷ（Hard Ware）割込みを通知する。
【０００５】
ＣＰＵ（ＯＳ）側では、ＨＷ割込みに対応する割込みハンドラ、ネットワークドライバを起動することで、パケット受信を確認し、その後、上位プロトコルスタックにパケット処理の制御を移行させる（非特許文献１参照）。この一連の処理シーケンスにおいて、ＯＳによる割込みハンドラ処理やネットワークドライバ処理時のスレッド生成や割当て、コンテキストスイッチの発生等により、受信処理の遅延が発生し、受信処理におけるボトルネックとなっている。
【０００６】
また、これらの課題に対して、ＨＷ割込みを複数個のＣＰＵに振り分けることで、パケット受信処理の並列化を図る方法も提案されている（特許文献１参照）。
【０００７】
【特許文献１】特開平０８−０３６４９８号公報
【非特許文献１】K. Salah, K. El-Badawi, “Performance evaluation of interrupt-driven kernels in gigabit networks”, Global Telecommunications Conference, 2003, GLOBECOM '03, IEEE, pp. 3953 - 3957
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の技術には、以下に示すような問題点があった。
【０００９】
すなわち、従来のパケット処理装置における受信処理では、カーネル空間内にＤＭＡ受信バッファが１つしか用意されていないために、ＤＭＡ転送を完了しＨＷ割込みをＣＰＵが受け取り、ネットワークドライバによる受信処理が完了した後にしか、ネットワークインタフェイスデバイスは次のＤＭＡ転送を開始することができない。このため、従来のようにＨＷ割込みを複数個のＣＰＵに振り分けるだけでは受信処理を並列化することができず、並列化による受信処理の高速化が図れないという問題点があった。
【００１０】
本発明は、上記に鑑みてなされたものであって、並列化によるパケット受信処理の高速化が可能なパケット処理装置を得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明にかかるパケット処理装置は、外部ネットワーク装置からパケットが入力されるネットワークインタフェイスデバイスと、このネットワークインタフェイスデバイスからのパケットのＤＭＡ転送の監視を行うデバイス監視部と、複数個のＣＰＵを有するとともにＯＳが搭載されたマルチプロセッサ、および前記各ＣＰＵにそれぞれ対応して前記ＯＳのカーネル空間内に形成され前記ネットワークインタフェイスデバイスからＤＭＡ転送されたパケットを格納するための複数個のＤＭＡ受信バッファ、を有するパケット受信処理部と、を備え、前記パケット受信処理部は、前記ネットワークインタフェイスデバイスから前記複数個のＤＭＡ受信バッファのうちの１つのＤＭＡ受信バッファへのＤＭＡ転送が完了すると、前記ネットワークインタフェイスデバイスからの割り込み通知をもとに前記複数個のＣＰＵのうちの１つのＣＰＵに対して割り込み通知を行い、次の割り込み通知先として前記１つのＣＰＵとは異なる他のＣＰＵを設定するとともに、前記デバイス監視部を介して前記ネットワークインタフェイスデバイスから前記１つのＤＭＡ受信バッファへのＤＭＡ転送が完了したことを検出した後に、次のＤＭＡ転送先として前記１つのＤＭＡ受信バッファとは異なる他のＤＭＡ受信バッファを設定し、前記ネットワークインタフェイスデバイスに対して前記他のＤＭＡ受信バッファへの次のＤＭＡ転送を開始させるようにして、前記マルチプロセッサによるパケットの並列受信処理を行うことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、デバイス監視部を設けることにより、ネットワークインタフェイスデバイスからＤＭＡ受信バッファへのパケットのＤＭＡ転送を監視することができ、１つのＤＭＡ受信バッファへのパケットのＤＭＡ転送が完了したこと検出した後に、他のＤＭＡ受信バッファへのＤＭＡ転送を開始することができる。そのため、先に割り込み通知を受けたＣＰＵが受信処理を行っている間に、効率良く、次のＤＭＡ転送の開始と次の割り込み通知を行うことができ、並列処理によるパケット受信処理の高速化が可能になる、という効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明にかかるパケット処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１４】
実施の形態１．
図１は、本実施の形態にかかるパケット処理装置の構成およびパケット受信処理の流れを示すブロック図である。
【００１５】
本実施の形態にかかるパケット処理装置は、例えばＩＰパケット等の通信パケットの処理を行うネットワーク装置であって、物理デバイス（ＰＨＹ）１と、ネットワークインタフェイスデバイスとしてのＮＩＣ（Network Interface Card）３と、ＮＩＣ３と物理デバイス１との間のインタフェイスであるＮＩＣ−ＰＨＹ間ＩＦ２と、割り込み通知機構としての割り込み通知部８と、デバイス監視機能を備えたデバイス監視部９と、パケット受信処理部７と、パケット受信処理部７内のＣＰＵとＮＩＣ３との間のインタフェイスであるＣＰＵ−ＮＩＣ間ＩＦ６と、を備えている。また、パケット受信処理部７、割り込み通知部８、およびデバイス監視部９は、ＯＳ（Operating System）（ＳＷ（Soft Ware））２０の一部を構成している。
【００１６】
物理デバイス１は、外部ネットワーク装置（図示せず）との間でＩＰパケット（フレーム）を受信するデバイスであり、ＮＩＣ−ＰＨＹ間ＩＦ２を介してＮＩＣ３に接続されている。
【００１７】
ＮＩＣ−ＰＨＹ間ＩＦ２は、物理デバイス１とＮＩＣ３との間のインタフェイスであり、例えば、ＧＭＩＩ（Gigabit Media Independent Interface）、ＸＡＵＩ（10 Gigabit Attachment Unit Interface）、またはＸＧＭＩＩ（10 Gigabit Media Independent Interface）等である。
【００１８】
ハードウェアであるＮＩＣ３は、汎用ネットワークインタフェイスカードまたはＡＳＩＣ（Application Specific Integrated Circuit）／ＦＰＧＡ（Field Programmable Gate Array）／ＮＰＵ（Network Processing Unit）等のパケット処理に特化したハードウェアネットワークインタフェイスデバイスである。ＮＩＣ３は、主に、ＭＡＣレイヤ処理（イーサネット（登録商標）処理）等を行う。
【００１９】
ＮＩＣ３は、ＭＡＣレイヤ処理部（ＭＡＣ  Ｂｌｏｃｋ）４と、フレームバッファ５と、を備えている。ＭＡＣレイヤ処理部４は、物理デバイス１、ＮＩＣ−ＰＨＹ間ＩＦ２を経てＮＩＣ３に入力されたＩＰパケットに対して、ＭＡＣヘッダ解析、フレーム検証、および送信先・送信元アドレスの検証等を含むＭＡＣレイヤプロトコルに関する処理を行う。フレームバッファ５は、ＭＡＣレイヤ処理部４から出力されたフレームデータを格納するバッファである。ＮＩＣ３は、フレームバッファ５に格納されたフレームデータを、パケット受信処理部７にＤＭＡ転送する。
【００２０】
パケット受信処理部７は、それぞれＣＰＵ、ＤＭＡ受信バッファおよびネットワークドライバ（Network Driver）を有する複数個（図示例では、ｎ個）の処理部を備えており、例えば、ＣＰＵａ１、ＤＭＡ受信バッファｂ１、およびネットワークドライバｄ１を有する処理部、ＣＰＵａ２、ＤＭＡ受信バッファｂ２、およびネットワークドライバｄ２を有する処理部、ならびにＣＰＵａｎ、ＤＭＡ受信バッファｂｎ、およびネットワークドライバｄｎを有する処理部を備えている。
【００２１】
これらの複数個のＣＰＵａ１〜ａｎは、マルチコアプロセッサまたはマルチプロセッサ（マルチコア／マルチプロセッサ）対応のＣＰＵである。また、これらの複数個のＣＰＵａ１〜ａｎのメモリ（図示せず）空間上には、マルチコア／マルチプロセッサ対応のＯＳ２０が搭載されている。すなわち、搭載されているＯＳ２０は、メモリ空間上に複数個のＣＰＵａ１〜ａｎを認識しこれらを使用可能であり、複数個のＣＰＵａ１〜ａｎは、マルチコア／マルチプロセッサを構成している。
【００２２】
割り込み通知部８は、Ｉ／Ｏ（Input／Output）インタフェイス、および種々のデバイスからのＨＷ割り込みを、各ＣＰＵ（ＣＰＵａ１〜ａｎ）に振り分けて通知する割り込み通知機構である。特に、割り込み通知部８は、ＮＩＣ３からのＨＷ割り込みを各ＣＰＵ（ＣＰＵａ１〜ａｎ）に振り分けて通知する。
【００２３】
パケット受信処理部７において、各ＣＰＵａ１〜ａｎは、割込み通知部８からＨＷ割込み通知を受けた場合に割込みハンドラを生成する。各ＣＰＵａ１〜ＣＰＵａｎにて生成された割込みハンドラは、自身を生成したＣＰＵに対応するネットワークドライバにＮＩＣ３からＤＭＡ転送されてくるパケットの受信処理を行なわせる。
【００２４】
ＤＭＡ受信バッファｂ１〜ｂｎは、ＯＳ２０が認識しているメモリ空間内に形成されたフレームデータ格納用のバッファである。本実施の形態においては、ＮＩＣ３のフレームバッファ５からＤＭＡ受信バッファｂ１〜ｂｎへのパケットの転送は、ＣＰＵａ１〜ａｎ等のＣＰＵが介在しないＤＭＡ転送によってなされる。
【００２５】
ネットワークドライバ（Network Driver）ｄ１〜ｄｎは、割込み通知部８からＣＰＵａ１〜ＣＰＵａｎの何れかにＨＷ割込み通知がされた後に、受信パケットの整合性をチェックし、この受信パケットを後述の上位レイヤ側に転送する。
【００２６】
デバイス監視部９は、デバイス監視機能を有し、ＮＩＣ３のフレームバッファ５から各ＤＭＡ受信バッファｂ１〜ｂｎへのパケットのＤＭＡ転送が完了したことを監視し、次のＤＭＡ転送を順次開始する様に指示する。
【００２７】
さらに、図１に示すように、パケット受信処理部７は、ｎ個のキューｃ１〜ｃｎと、上位レイヤ側の構成要素であるパケット集約（Packet Aggregation）部１１、上位レイヤ（Upper Layer）処理部１２、および１または複数個のＣＰＵ３０と、を備えている。
【００２８】
キューｃ１〜ｃｎは、上位レイヤ側への転送に使用されるパケットバッファキューであり、それぞれネットワークドライバｄ１〜ｄｎに接続されている。また、キューｃ１〜ｃｎは、パケット集約部１１に接続されている。
【００２９】
パケット集約部１１は、受信したパケットの集約を行う制御モジュールであって、パケットが転送されたキューの順番情報に基づいて、各キューｃ１〜ｃｎに格納されているパケットを上位レイヤ処理部１２に転送する。本実施の形態においては、パケット受信処理が並列化されることによる、パケットの順序逆転を防ぐために、パケットの順序制御を行うパケット集約部１１を設けている。上位レイヤ処理部１２は、パケット集約部１１から受信したパケットに対して上位レイヤ処理を行なう。ＣＰＵ３０は、パケット集約部１２および上位レイヤ処理部１２を含む上位レイヤ側の制御を行う。
【００３０】
次に、本実施の形態の動作について説明する。ＯＳ２０は、予め、受信処理のみを行わせるｎ個のＣＰＵａ１〜ａｎと、ｎ個のＤＭＡ受信バッファｂ１〜ｂｎとを用意しておく。
【００３１】
ＯＳ２０は、デバイス初期化時にＮＩＣ３に対して、ＤＭＡ転送を行う受信バッファとしてカーネル空間内に形成された、例えばＤＭＡ受信バッファｂ１を設定する。さらに、ＯＳ２０は、割込み通知部８に対して、ＮＩＣ３からのＨＷ割込みを通知するＣＰＵとして、ＣＰＵａ１を設定しておく。
【００３２】
外部ネットワーク装置からのＩＰパケットは、物理デバイス１にて物理的な信号として受信・終端され、ＭＡＣレイヤ処理を行なうＮＩＣ３へＮＩＣ−ＰＨＹ間ＩＦ３経由で送信される。
【００３３】
ＮＩＣ３では、ＭＡＣレイヤ処理部４にてＭＡＣヘッダ解析、フレーム検証、および送信先・送信元アドレスの検証等を行い、装置内上位レイヤに送信すべきフレームを、自身のバッファであるフレームバッファ５に格納する。
【００３４】
ＮＩＣ３は、フレームバッファ５からデバイス初期化時に設定されたカーネル空間内のＤＭＡ受信バッファｂ１に対して、例えば予め設定されたフレーム数に達するまでフレームのＤＭＡ転送を行い、設定されたフレーム数に達したらＤＭＡ転送を停止する。なお、ＤＭＡ受信バッファへの１回でのＤＭＡ転送のフレーム数は、ＮＩＣ３の仕様・パラメータ設定に依存しており、複数個のフレームをまとめてＤＭＡ転送することもできる。
【００３５】
ＮＩＣ３は、ＤＭＡ転送開始から一定の時間を経過した後、またはＤＭＡ転送したフレームが一定のフレーム数に達した後、割込み通知部８にＨＷ割込みを通知する。
【００３６】
割込み通知部８は、ＮＩＣ３からＨＷ割込みの通知を受け取ると、ＯＳ２０によりデバイス初期化時に設定されたＣＰＵａ１に対してＨＷ割込みを通知する。
【００３７】
ＣＰＵａ１は、ＨＷ割込みを受け取ると、割込みハンドラを生成することにより、ネットワークドライバｄ１に受信処理を開始させる。このとき、ＯＳ２０は、割込み通知部８に対して、次にＨＷ割り込みを通知するＣＰＵを、ＣＰＵａ１から例えばＣＰＵａ２に変更させる。
【００３８】
また、ＯＳ２０は、ＮＩＣ３からの次のＤＭＡ転送先を、ＤＭＡ受信バッファｂ１からＤＭＡ受信バッファｂ２に切り替える。ここで、ＤＭＡ受信バッファの切り替えのタイミングを、ＮＩＣ３からＤＭＡ受信バッファｂ１へのＤＭＡ転送完了時とする。このように、本実施の形態では、ＮＩＣ３からのＤＭＡ転送を順次開始させるために、ＤＭＡ受信バッファの切り替えのタイミングをＤＭＡ転送完了時としている。また、ＤＭＡ転送が完了したことを監視するために、デバイス監視部９はＮＩＣ３を監視している。ＯＳ２０は、ＣＰＵａ１に対して、受信処理と並行してデバイス監視部９の監視処理をさせており、デバイス監視部９によるＮＩＣ３の監視結果から、ＤＭＡ転送が完了したことを検出すると、ＮＩＣ３に対して、次にＤＭＡ転送を行うＤＭＡ受信バッファを、ＤＭＡ受信バッファｂ２に変更するように通知する。そして、ＮＩＣ３は、ＤＭＡ受信バッファｂ２に対して、ＤＭＡ転送を開始する。
【００３９】
ネットワークドライバｄ１は、ＤＭＡ受信バッファｂ１からフレーム情報を取得し、ＯＳ２０内部で管理可能な形式であるパケットデータ（ソケットバッファ）を生成し、上位レイヤ転送向けのキューｃ１にキューイングする。ネットワークドライバｄ１は、受信処理が完了すると、パケット集約部１１に対して、受信処理が完了したことを通知する。
【００４０】
パケット集約部１１には、予めＯＳ２０からパケットが転送されるキューの順番の情報を与えておく。パケット集約部１１は、ネットワークドライバｄ１から受信完了通知を受け取ると、キューの順番の情報に基づいてキューｃ１に格納されているパケットを上位レイヤ処理部１２に転送する。ここで、キューｃ１に格納されたパケットが上位レイヤ側に転送されていない場合には、以降の処理で、キューｃ２〜ｃｎに格納されたパケットを転送しない。
【００４１】
ＮＩＣ３は、ＤＭＡ受信バッファｂ２へのＤＭＡ転送開始から一定の時間を経過した後、またはＤＭＡ転送したフレームが一定のフレーム数に達した後、割り込み通知部８を介してＣＰＵａ２にＨＷ割り込みを通知する。割り込み通知を受け取ったＣＰＵａ２は、同様に、受信処理とデバイス監視処理を行う。このように、ＣＰＵおよびＤＭＡ受信バッファはラウンドロビンで変更され、ＣＰＵａ１〜ａｎ内で、受信処理とデバイス監視処理をラウンドロビンで繰り返して行う。すなわち、本実施の形態では、ＣＰＵａ１、ＣＰＵａ２、・・・、ＣＰＵａｎの順番でＨＷ割り込みの通知をし、ＤＭＡ受信バッファｂ１、ＤＭＡ受信バッファｂ２、・・・、ＤＭＡ受信バッファｂｎの順番でＤＭＡ転送を行う受信バッファを設定すると共に、キューｃ１、キューｃ２、・・・、キューｃｎの順番でパケットを転送させるようにパケット集約部１１に指示する。
【００４２】
図３は、複数個のＣＰＵａ１〜ａｎによる受信処理の流れを示す模式図である。ＮＩＣ３からＤＭＡ受信バッファｂ１にＤＭＡ転送が行われると、ＣＰＵａ１に対して割り込み通知がなされ、ＣＰＵａ１は割り込み処理を行い、続いて受信処理を行う。ＮＩＣ３からＤＭＡ受信バッファｂ１へのＤＭＡ転送が完了すると、受信バッファはＤＭＡ受信バッファｂ１からＤＭＡ受信バッファｂ２に切り替えられる。この切り替え後に、ＮＩＣ３では、ＤＭＡ受信バッファｂ２へのＤＭＡ転送を開始する。そして、ＣＰＵａ１の場合と同様に、ＮＩＣ３からＤＭＡ受信バッファｂ２にＤＭＡ転送が行われると、ＣＰＵａ２に対して割り込み通知がなされ、ＣＰＵａ２は割り込み処理を行い、続いて受信処理を行う。ＣＰＵａ３〜ａｎに対しても同様であり、ＣＰＵａｎによる受信処理後には、再びＣＰＵａ１に対する割り込み通知がなされ、同様の処理が順次繰り返される。
【００４３】
以上の動作によって、ＮＩＣ３からのＤＭＡ転送を順次開始することができ、ネットワークドライバｄ１〜ｄｎを用いて受信処理を並列化することにより、受信処理時間を短縮している。
【００４４】
本実施の形態によれば、デバイス監視部９を設けることにより、ＮＩＣ３内のフレームバッファ５からＤＭＡ受信バッファｂ１〜ｂｎへのパケット転送を監視することができ、一のＤＭＡ受信バッファへのパケットのＤＭＡ転送が完了したこと検出した後に、次のＤＭＡ受信バッファへのＤＭＡ転送を開始することができる。そのため、先に割り込みを受けたＣＰＵが受信処理を行っている間に、効率良く、次のＤＭＡ転送と次のＣＰＵへの割り込み通知を行うことができ、並列処理によるパケット受信処理の高速化が可能になる、という効果を奏する。
【００４５】
なお、図４は、汎用ＯＳを搭載したＣＰＵ、およびネットワークインタフェイスデバイスで構成された従来のパケット処理装置の構成を示すブロック図である。図４に示すように、従来のパケット処理装置は、物理デバイス（ＰＨＹ）１０１と、ネットワークインタフェイスデバイスとしてのＮＩＣ１０３と、ＮＩＣ１０３と物理デバイス１０１との間のインタフェイスであるＮＩＣ−ＰＨＹ間ＩＦ１０２と、パケット受信処理部１０６と、を備えている。
【００４６】
ＮＩＣ１０３の内部には、ＭＡＣレイヤ処理部（ＭＡＣ  Ｂｌｏｃｋ）１０４と、フレームバッファ１０５と、が設けられている。パケット受信処理部１０６内部には、ＤＭＡ受信バッファ１０７と、ネットワークドライバ１０８と、上位レイヤ（Ｕｐｐｅｒ  Ｌａｙｅｒ）１０９と、ＣＰＵ１１０と、が設けられており、ＣＰＵ１１０上にはＯＳが搭載されている。
【００４７】
この従来のパケット処理装置における受信処理では、物理デバイス１０１から受信したパケットは、ＭＡＣレイヤ処理部１０４にて、ＭＡＣヘッダ、ＦＣＳなどによってフィルタリングされ、ＮＩＣ１０３内のフレームバッファ１０５からパケット受信処理部１０６内のＤＭＡ受信バッファ１０７に転送される。その後、ＮＩＣ１０３は、パケットの到着をＯＳ側に通知するため、ＨＷ割込みをパケット受信処理部１０６に対して通知する。
【００４８】
続いて、ＯＳは、割り込みを通知するＣＰＵ１１０を決定するとともに、ＮＩＣ１０３からＤＭＡ転送されてくるパケットを格納するＤＭＡ受信バッファ１０７をカーネル空間内に用意する。また、パケット受信処理部１０６では、ＮＩＣ１０３からのＨＷ割込みに対応する割込みハンドラとネットワークドライバ１０８とを起動することによって、パケットの受信を確認し、その後、上位レイヤ１０９にパケット処理の制御を移行させる（例えば、非特許文献１参照）。この一連の処理シーケンスにおいては、ＯＳによる割込みハンドラ処理やネットワークドライバ処理時のスレッド生成や割当て、コンテキストスイッチの発生等により、受信処理の遅延が発生し、受信処理におけるボトルネックとなっている。
【００４９】
また、特許文献１では、ＨＷ割り込みを複数個のＣＰＵに振り分けることによって、パケットの受信処理を並列化する方法を提案している。しかしながら、特許文献１では、本実施の形態とは対照的に、カーネル空間内にＤＭＡ受信バッファが１つしか用意されていないので、パケット受信の際、ＤＭＡ転送を完了してＣＰＵがＨＷ割込みを受け取り、ネットワークドライバによるパケットの受信処理が完了した後にしか、次のＤＭＡ転送を開始することができない。このため、ＨＷ割込みを複数のＣＰＵに振り分けるだけでは受信処理を並列化することができなかった。
【００５０】
本実施の形態は、これらの従来の問題点を解消し、並列処理によるパケット受信処理の高速化を実現するものである。
【００５１】
実施の形態２．
図３は、実施の形態２にかかるパケット処理装置の構成およびパケット受信処理の流れを示すブロック図である。
【００５２】
図３では、図１に示す実施の形態１の構成に加えて、ＣＰＵ負荷判別機構であるＣＰＵ負荷判別部１３が設けられている。ＣＰＵ負荷判別部１３は、ＣＰＵａ１〜ａｎの負荷情報を判別し管理する装置であり、割り込み通知部８に接続されている。なお、図３における他の構成は図１と同様であり、そのため、同一の構成要素には同一の符号を付して、その詳細な説明を省略する。
【００５３】
次に、本実施の形態の動作について説明する。本実施の形態においては、割込み通知部８によるＨＷ割り込みを通知するＣＰＵの選択処理が、実施の形態１とは異なる。すなわち、割込み通知部８は、ＨＷ割り込みを通知するＣＰＵの選択方法として、受信処理を行っておらず、且つ処理負荷の低いＣＰＵを選択する。ここで、ＣＰＵの処理負荷の情報は、ＣＰＵ負荷判別部１３から提供される。
【００５４】
また、実施の形態１では、パケット集約部１１は、予めＯＳ２０から与えられたキューの順序情報と、各ネットワークドライバｄ１〜ｄｎからの受信処理完了通知を受けて、キューｃ１〜ｃｎからのパケットの順序制御処理を行ったが、本実施の形態では、パケット集約部１１に特定のＣＰＵを割当て、ポーリングをさせることにより各キューｃ１〜ｃｎの状態を監視し、パケットの順序制御処理を行う。この場合、ネットワークドライバｄ１〜ｄｎは、パケット集約部１１にキューイングした際に、パケット集約部１１に対して受信処理完了通知を行わない。このような順序制御により、順序情報に基づいて処理を行い、例えばキューｃ１にパケットがキューイングされていた場合、キューｃ１からパケットを上位レイヤ処理部１２に転送する。これらの処理以外の動作は、実施の形態１の動作と同様である。
【００５５】
本実施の形態によれば、ＣＰＵ負荷判別部１３を設けることにより、ＣＰＵａ１〜ＣＰＵａｎのうち、パケットの受信処理を行っておらず且つ処理負荷の低いＣＰＵを選択してＨＷ割り込みの通知を行うようにしたので、ＣＰＵａ１〜ＣＰＵａｎへのより一層の負荷分散が可能となり、高速にパケット受信処理を行うことができる。また、ネットワークドライバｄ１〜ｄｎは、パケット集約部１１にキューイングした際に、パケット集約部１１に対して受信処理完了通知を行わないので、ネットワークドライバｄ１〜ｄｎの負荷を低減することができる。なお、本実施の形態におけるその他の効果は、実施の形態１の効果と同様である。
【産業上の利用可能性】
【００５６】
以上のように、本発明にかかるパケット処理装置は、高速なパケット処理が要求される通信ネットワークに好適に利用することができる。
【図面の簡単な説明】
【００５７】
【図１】実施の形態１にかかるパケット処理装置の構成およびパケット受信処理の流れを示すブロック図である。
【図２】実施の形態２にかかるパケット処理装置の構成およびパケット受信処理の流れを示すブロック図である。
【図３】複数個のＣＰＵａ１〜ａｎによる受信処理の流れを示す模式図である。
【図４】汎用ＯＳを搭載したＣＰＵ、およびネットワークインタフェイスデバイスで構成された従来のパケット処理装置の構成を示すブロック図である。
【符号の説明】
【００５８】
１  物理デバイス（ＰＨＹ）
２  ＮＩＣ−ＰＨＹ間ＩＦ
３  ＮＩＣ（Network Interface Card）
４  ＭＡＣレイヤ処理部（ＭＡＣ  Ｂｌｏｃｋ）
９  デバイス監視部
７  パケット受信処理部
８  割り込み通知部
９  デバイス監視部
１１  パケット集約（Packet Aggregation）部
１２  上位レイヤ（Upper Layer）処理部
１３  ＣＰＵ負荷判別部
２０  ＯＳ（ＳＷ）
３０，ａ１〜ａｎ  ＣＰＵ
【図１】
2008299439.tif 000003
【図２】
2008299439.tif 000004
【図３】
2008299439.tif 000005
【図４】
2008299439.tif 000006