(57)【要約】      （修正有）【課題】プロセッサとネットワークインタフェイスデバイスとの間のパケット受信処理におけるボトルネックを解消し、高速パケット処理が可能なネットワーク装置を提案する。【解決手段】ネットワーク装置は、複数のＣＰＵ６ａ〜６ｄを持ち共有メモリ空間上にマルチプロセッサ対応ＯＳ７を搭載したマルチプロセッサ６と、このマルチプロセッサ６と外部ネットワーク装置とを接続するインタフェイスカード（ネットワークインタフェイスデバイス）２とを備え、ＯＳ７は、カード２からのパケットの受信処理を複数のＣＰＵ６ａ〜６ｄのうち特定のＣＰＵ６ａに割り当てるとともに、パケットの受信処理以外の処理を他のＣＰＵ６ｂ〜６ｄに割り当て、パケットの受信処理を割り当てられたＣＰＵ６ａのみがカード２からのパケット到着をポーリングにて監視する。【選択図】        図１
2008129767.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵを持つとともに共有メモリ空間上にマルチプロセッサ対応ＯＳを搭載したマルチプロセッサと、
当該マルチプロセッサと外部ネットワーク装置とを接続するインタフェイスデバイスとを備え、
前記マルチプロセッサ対応ＯＳは、前記インタフェイスデバイスからのパケットの受信処理を前記複数のＣＰＵのうち特定のＣＰＵに割り当てるとともに、前記パケット受信処理以外の処理を他のＣＰＵに割り当て、前記パケットの受信処理を割り当てられた前記ＣＰＵのみが前記インタフェイスデバイスからのパケット到着をポーリングにて監視する
ことを特徴とするネットワーク装置。
【請求項２】
前記マルチプロセッサ対応ＯＳは、前記パケット受信処理以外の処理を、予めグループ分けされているパケット種別に基づいて、該パケット種別に対応する前記他のＣＰＵに割り当てる
ことを特徴とする請求項１に記載のネットワーク装置。
【請求項３】
前記マルチプロセッサ対応ＯＳは、パケット毎のＣＰＵ処理時間を見積もり統計管理して、前記パケット受信処理以外の処理を負荷が分散するように前記他のＣＰＵに割り当てることを特徴とする請求項１に記載のネットワーク装置。
【請求項４】
前記マルチプロセッサ対応ＯＳは、前記インタフェイスデバイスのハードウェア情報をポーリングして前記パケット到着を監視する
ことを特徴とする請求項１から３のいずれか１項に記載のネットワーク装置。
【請求項５】
前記マルチプロセッサ対応ＯＳは、前記インタフェイスデバイスのハードウェア情報を最短フレーム長の到着間隔と同様な周期にてポーリングする
ことを特徴とする請求項４に記載のネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マルチコア／マルチプロセッサ対応ＯＳを搭載したマルチコア／マルチプロセッサ対応ＣＰＵ及び外部ネットワーク装置との接続のためのネットワークインタフェイスデバイスを装備し、ＩＰパケットに代表される通信パケットの転送や上位レイヤプロトコルの処理を上記ＯＳ上のアプリケーションにて実行するネットワーク装置に関するものである。
【背景技術】
【０００２】
インタネットを利用した通信サービスが次々登場し、アクセス網及びコア網におけるＩＰトラヒック量は年々増加している。それに伴い、イーサネット（登録商標）規格（ＩＥＥＥ８０２．３）に代表される有線ネットワークや、ＷｉＭＡＸ（ＩＥＥＥ８０２．１６）に代表される無線ネットワークにおいて、伝送帯域の高速化の検討が進められている。特に有線通信では１００Ｍｂｐｓ、１Ｇｂｐｓに止まらず、１０Ｇｂｐｓのイーサネット（登録商標）規格が策定され、既に対応したネットワークインタフェイスデバイスが製品化されている。一方、ＣＰＵもクロックアップ、マルチコア／マルチプロセッサによる高性能化が進んでいるが、ＯＳを搭載したＣＰＵとネットワークインタフェイスデバイスとで構成されるネットワーク装置では、ＣＰＵとデバイス間のパケット送受信がボトルネックとなり、１０Ｇｂｐｓのような高速伝送帯域にて通信を行うことが困難であった。
【０００３】
図７は従来のネットワーク装置をパケット受信処理の流れとともに示す機能ブロック図である。図７において、インタフェイスカード２内部には、ＭＡＣレイヤプロトコル処理部４とフレームデータ格納バッファ５とが設けられている。また、図示しないＣＰＵに搭載されたＯＳ７は、フレームデータ格納バッファ９と、割込みハンドラ・ネットワークドライバ１８と、上位レイヤへの転送に使用されるパケットバッファキュー１１とを認識可能とされている。
【０００４】
外部ネットワークの物理デバイス（ＰＨＹレイヤ）１から受信したパケットは、ＭＡＣヘッダ、ＦＣＳ等によるフィルタリング処理が行われ、ネットワークインタフェイスカード２内のバッファ５からＯＳ７側のメモリ内バッファ９に転送される。その後、このパケット到着をＯＳ７側に通知するために、ハードウェア割込みがＯＳ７を搭載するＣＰＵに対して入れられる。
【０００５】
これに対して、ＯＳ７は、そのハードウェア割込みに対応する割込みハンドラ・ネットワークドライバ１８を起動することで、パケット到着（データ受信）を確認し、その後上位プロトコルスタックにパケット処理の制御を移行する（例えば、非特許文献１参照）。
【０００６】
【非特許文献１】Ｂｅｙｏｎｄ  Ｓｏｆｔｎｅｔ  ：  Ｊａｍａｌ，Ｈａｄｉ  Ｓａｌｉｍ，Ｒｏｂｅｒｔ  Ｏｌｓｓｏｎ，Ａｌｅｚｅｙ  Ｋｕｚｎｅｔｓｏｖ  （Ｎｅｗ  ＡＰＩ）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記図７に示したネットワーク装置の一連の処理シーケンスにおいて、例えばショートパケットが連続して到着した場合に、ＣＰＵ（ＯＳ７）側において、割込みハンドラ自体の処理が多くなり、この処理が全体の処理のうち大部分を占めてしまい、受信を含めたプロトコル処理及び他処理タスクの動作に悪影響を及ぼすことになるので問題とされていた（ライブロックの発生）。
【０００８】
この問題の解決策のひとつとして、パケットの到着を、従来一般的に用いられていたハードウェア割込みをトリガーとして使用とせずに、ＣＰＵ（ＯＳ７）が常にポーリングをして監視する方法が提案されている。しかしながら、そのポーリング処理自体が、前述の割込みハンドラ処理同様、他処理タスクの妨げになってしまうので改善が望まれていた。また、他の解決策として、蓄積パケット数や固定時間を割込みのトリガーとすることで、ＣＰＵ（ＯＳ７）側への単位時間当りの割込み回数を抑制する方法も提案されているが、上記の方法と同様にその処理を行うタスクの動作が、他処理タスクの妨げになるので課題とされていた。
【０００９】
この発明は上記課題の解決策として提案されるものであって、ＯＳを搭載するプロセッサとネットワークインタフェイスデバイス（汎用ネットワークインタフェイスカードやＡＳＩＣ／ＦＰＧＡ／ＮＰＵのようなパケット処理に特化したデバイス）とを装備するネットワーク装置において、上記プロセッサとして、今後普及が期待されるマルチコア／マルチプロセッサＣＰＵを用い、プロセッサとネットワークインタフェイスデバイスとの間のパケット受信処理におけるボトルネックを解消して、高速パケット処理が可能となるネットワーク装置を提案することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、この発明に係るネットワーク装置は、複数のＣＰＵを持つとともに共有メモリ空間上に複数のＣＰＵを認識及び使用可能なマルチプロセッサ対応ＯＳを搭載したマルチプロセッサと、このマルチプロセッサと外部ネットワーク装置とを接続するインタフェイスデバイスとを備え、マルチプロセッサ対応ＯＳは、インタフェイスデバイスからのパケットの受信処理を複数のＣＰＵのうち特定のＣＰＵに割り当てるとともに、パケットの受信処理以外の処理を他のＣＰＵに割り当て、パケットの受信処理を割り当てられたＣＰＵのみがインタフェイスデバイスからのパケット到着（データ転送）をポーリングにて監視する。
【発明の効果】
【００１１】
この発明に係るネットワーク装置によれば、パケット受信処理を割り当てられた特定ＣＰＵのみがインタフェイスデバイスからのパケット到着をポーリングによって監視するので、ＯＳの割込みハンドラ処理時間が短縮されて、他のＣＰＵに割当てられるパケット受信処理以外のパケット処理への悪影響が回避される。これにより、プロセッサとインタフェイスデバイスとの間のパケット受信処理におけるボトルネックが解消され、高速パケット処理が可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明にかかるネットワーク装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態１．
図１はこの発明に係るネットワーク装置の実施の形態１をパケット受信処理の流れとともに示す機能ブロック図である。図１において、ネットワーク装置は、外部ネットワークの物理デバイス（ＰＨＹレイヤ）１と接続されパケット処理（主にＭＡＣレイヤ：Ｅｔｈｅｒｎｅｔ（登録商標）処理）を特化して行う汎用ネットワークインタフェイスカード（ネットワークインタフェイスデバイス）２と、複数のＣＰＵ６ａ〜６ｄを持つとともにこれらＣＰＵ群の共有メモリ空間上に複数のＣＰＵを認識、使用可能なマルチコア／マルチプロセッサ対応ＯＳ（以降、単にＯＳ）７を搭載するマルチコア／マルチプロセッサ対応ＣＰＵ（以降、単にマルチプロセッサ）６とを含んで構成されている。
【００１４】
インタフェイスカード２は、ネットワーク物理デバイス１に、ＧＭＩＩ、ＸＡＵＩ、及びＸＧＭＩＩ等のインタフェイス３を介して接続されている。また、インタフェイスカード２とマルチプロセッサ６とは、ＰＣＩ或いはＰＣＩ  Ｅｘｐｒｅｓｓ等のバスインタフェイス８を介して接続されている。
【００１５】
ハードウェアであるインタフェイスカード２内部には、ＭＡＣレイヤプロトコル処理部４とフレームデータ格納バッファ５とが設けられている。一方、ソフトウェアであるＯＳ７は、認識しているＣＰＵメモリ空間内に設けられたフレームデータ格納バッファ９と、インタフェイスカード２に対してポーリングにてパケット到着を監視するポーリング処理部１０と、上位レイヤへの転送に使用されるパケットバッファキュー１１とを認識可能とされている。インタフェイスカード２のフレームデータ格納バッファ５から、マルチプロセッサ対応ＯＳ７のフレームデータ格納バッファ９へは、一般的にＣＰＵが介在しないＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送によってフレームデータが転送される。
【００１６】
次に、ポーリング処理部１０の動作について図２のフローチャートに沿って説明する。ネットワーク装置は、ＯＳ７を搭載したマルチプロセッサ６と、外部ネットワーク装置との接続のためのインタフェイスカード２とを含んで構成され，ＩＰパケットに代表される通信パケットの転送や上位レイヤプロトコルの処理をＯＳ上のアプリケーションにて実行する。図示しない外部ネットワーク装置からのＩＰパケットは、ネットワーク物理デバイス１で物理的な信号を受信、終端され、ＭＡＣレイヤ処理を行なうインタフェイスカード２へ規定インタフェイス３経由で送信される。
【００１７】
インタフェイスカード２では、ＭＡＣレイヤプロトコル処理部４にてＭＡＣヘッダ解析、フレーム検証、送信先・送信元アドレス検証を行い、装置内上位レイヤに送信すべきフレームは自身のバッファ５に格納する。そして、インタフェイスカード２は、自身のフレームデータ格納バッファ５からデバイス初期化時に指定されたＯＳメモリ内のバッファ９に向けてＤＭＡ転送を行なう。なお、ここでＯＳメモリ内のバッファ９に１回のＤＭＡ転送にて転送可能なフレーム数は、ネットワークインタフェイスデバイスの仕様及びパラメータ設定に依存しており、複数のフレームをまとめてＤＭＡ転送することも可能である。
【００１８】
図２のフローチャートにおいて、ＯＳ７上のポーリング処理部１０は、予め決められた特定のＣＰＵ６ａに固定的に処理を割当てられる（ステップＳ１）。そして、従来一般的にパケット到着を通知する際に用いられていたインタフェイスカード２のハードウェア割込みは停止される（ステップＳ２）。その後、ポーリング処理部１０はインタフェイスカード２のＤＭＡ転送完了（パケット到着）を監視するため、インタフェイスカード２のハードウェア情報（レジスタ）を最短フレーム長の到着間隔と同様な周期にてポーリングを実行する（ステップＳ３）。なお、複数のインタフェイスカード２が上位レイヤタスク１２と分離するように設けられていれば、単一のポーリング処理部で監視しても、複数のＣＰＵ上の複数のポーリング処理部で監視してもよい（つまり、インタフェイスカード２の数に応じてポーリング処理部１０の数を変更（増加）してもよい）。
【００１９】
そして、このポーリングによってパケット到着を検出すると、ＯＳメモリ内バッファ９よりフレーム情報を取得し、ＯＳ内部で管理可能な形式であるパケットデータ（ソケットバッファ）を生成して（ステップＳ４）、その後、上位レイヤ転送向けのパケットバッファキュー１１にキューイングする（ステップＳ５）。キューイングされたパケットデータは上位レイヤ処理（ＩＰスタック、アプリケーション等）のタスクが随時必要に応じてデキューし、パケット処理が継続される。この時、上位レイヤ処理のタスクはポーリング処理部１０が割り当てられたＣＰＵ６ａとは異なる他のＣＰＵ６ｂ〜６ｃに割当てられる。そして、インタフェイスカード２のフレームデータ格納バッファ５からＯＳメモリ内のバッファ９にＤＭＡ転送が行われ（ステップＳ６）、その後、ステップＳ３に戻るようにして、この間の動作を繰り返す。
【００２０】
すなわち、本実施の形態のネットワーク装置においては、以下の特徴的な動作とその効果を有している。
（１）マルチプロセッサ６で構成される複数のＣＰＵ群（ＣＰＵ６ａ〜６ｄ）を、インタフェイスカード（ネットワークデバイス）２からのパケット受信処理とその他のパケット処理とにＯＳレベルで分割して割り当てる。
（２）パケット受信処理を割り当てた特定ＣＰＵ６ａのみがインタフェイスカード２からのパケット到着（データ転送）を常にポーリングによって監視する。これにより、従来のＯＳの割込みハンドラ処理時間を短縮して、その他のＣＰＵ６ｂ〜６ｄに割当てるパケット処理への悪影響を回避する。
（３）特定ＣＰＵ６ａにてパケット受信後，その他のパケット処理が割り当てられている各ＣＰＵ６ｂ〜６ｄの上位レイヤタスク１２にパケット情報（バッファ位置、サイズ、パケット種別）を順番に通知する。
（４）通知されたパケット情報を基に上位レイヤタスク１２は、パケット処理を継続する。
【００２１】
以上のように本実施の形態のネットワーク装置によれば、パケット受信処理を特定のＣＰＵ６ａに割り当てるので、割込みによるパケット到着監視の際に発生するＯＳ割込みハンドラ処理及びタスクスケジューリング処理の時間を短縮することができる。また、ポーリングによるパケット到着監視の際に問題となるＣＰＵ負荷による他タスク処理への悪影響を回避することができる。これにより、ショートパケット連続受信時においてもライブロックの発生することがない高速パケット受信処理を実現することができる。
【００２２】
なお、本実施の形態のネットワーク装置においては、ネットワークインタフェイスデバイスは、汎用ネットワークインタフェイスカードによって構成されているが、ネットワークインタフェイスデバイスは、汎用ネットワークインタフェイスカードに限らず、パケット処理に特化したハードウェアであれば適用することができ、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）／ＦＰＧＡ（Field Programmable Gate Array）／ＮＰＵ（Network Processing Units）等でもよい。
【００２３】
実施の形態２．
図３はこの発明に係るネットワーク装置の実施の形態をパケット受信処理の流れとともに示す機能ブロック図である。図３において、本実施の形態のネットワーク装置のＯＳ７は、実施の形態１の構成に加えてクラス分類処理部１３と負荷予測処理部１４とを有している。クラス分類処理部１３は、パケット種別によるグルーピングを行うことにより処理ＣＰＵ割り当てを実行する。負荷予測処理部１４は、パケット処理時間の見積もりを統計管理してＣＰＵ負荷予測に応じてＣＰＵ割り当てを実行する。その他の構成は実施の形態１のものと同様である。
【００２４】
図４は本実施の形態のポーリング処理部１０の動作を示すフローチャートである。図５はクラス分類処理部１３の動作を示すフローチャートである。図６は負荷予測処理部１４の動作を示すフローチャートである。まず、図４に沿ってポーリング処理部１０の動作について説明する。ポーリング処理部１０がＯＳメモリ内バッファ９よりフレーム情報を取得してＯＳ内部で管理可能な形式であるパケットデータ（ソケットバッファ）を生成するまでは、上記図２のフローチャートの動作と同じである（ステップＳ１１〜ステップＳ１４）。
【００２５】
ステップＳ１５にてクラス分類処理（機能振り分け）を適用する場合には、ポーリング処理部１０はパケットデータをクラス分類処理部１３に送信する。図５に移行して、クラス分類処理部１３は、ポーリング処理部１０と同様に、特定ＣＰＵ６ａに固定的に割り当てられ（ステップＳ２１）、他上位レイヤタスクとは分離されたこの特定ＣＰＵ６ａ上で動作する。そして、ポーリング処理部１０からパケットデータを受け取ると（ステップＳ２２）、所定のグループ（送信元・送信先ＩＰアドレス、上位プロトコル、サービス、優先度等を事前に登録しておき、これに基づいてグループ分けする）に分類し（ステップＳ２３）、その分類に従って指定ＣＰＵ用の上位レイヤ転送向けのキュー１１にキューイングを行ない、指定されたＣＰＵにそのパケットデータを処理する上位レイヤタスク１２ｂ〜１２ｄを割当てる（ステップＳ２４，Ｓ２５）。なお、このとき図４のステップＳ１７の動作は行わない。このように動作することで、グルーピングに応じた機能振分の実現及びＣＰＵキャッシュヒット率向上が可能となる。
【００２６】
図４にもどり、ステップＳ１６にて負荷予測処理（負荷分散）を適用する場合には、ポーリング処理部１０はパケットデータを負荷予測処理部１４に送信する。図６に移行して、負荷予測処理部１４は、ポーリング処理部１０同様、特定ＣＰＵ６ａに固定的に割り当てられ（ステップＳ３１）、他上位レイヤタスクとは分離されたこの特定ＣＰＵ６ａ上で動作する。そして、ポーリング処理部１０からパケットデータを受信すると（ステップＳ３２）、このパケットに対するＣＰＵ処理時間をパケット種別に基づいて見積もり、ＣＰＵ６ｂ〜６ｄ毎に統計管理をして、これを処理負荷（処理時間）としてＣＰＵ６ｂ〜６ｄ毎に情報を管理する（ステップＳ３３）。そして、この情報に基づいて指定ＣＰＵ用の上位レイヤ転送向けのキュー１１にキューイングを行ない、指定されたＣＰＵにそのパケットデータを処理する上位レイヤタスク１２ｂ〜１２ｄを割当てる（ステップＳ３４，Ｓ３５）。なお、このとき図４のステップＳ１７は行わない。このように上位レイヤ転送向けのキュー１１にキューイングする際、統計情報を用いることで処理負荷の低いＣＰＵを優先的に指定可能であり負荷分散を実現することができる。なお、クラス分類処理部１３と負荷予測処理部１４とは、排他使用ではなく共に連動したＣＰＵ割当てが可能とされている。
【００２７】
以上のように本実施の形態のネットワーク装置においては、パケット情報を順番に各ＣＰＵ６ｂ〜６ｄの上位レイヤタスクへ通知するのではなく、特定のグループ分類に従って指定のＣＰＵ６ｂ〜６ｄに振分通知する。グルーピングに応じた機能振分の実現が可能となる。
【００２８】
また、他のＣＰＵ６ｂ〜６ｄにて行なうパケット処理へのパケット情報通知において、このパケットにおける処理負荷（処理時間）をＣＰＵ毎に統計情報として管理する。振分通知の際にこの管理情報を用いることで常に処理負荷の低いＣＰＵに対して処理を分散可能となる。
【産業上の利用可能性】
【００２９】
この発明は、マルチコア／マルチプロセッサ対応ＯＳを搭載したマルチコア／マルチプロセッサ対応ＣＰＵ及び外部ネットワーク装置との接続のためのネットワークインタフェイスデバイスを有するネットワーク装置に最適なものである。
【図面の簡単な説明】
【００３０】
【図１】この発明に係るネットワーク装置の実施の形態１をパケット受信処理の流れとともに示す機能ブロック図である。
【図２】実施の形態１のポーリング処理部の動作を示すフローチャートである。
【図３】この発明に係るネットワーク装置の実施の形態２をパケット受信処理の流れとともに示す機能ブロック図である。
【図４】実施の形態２のポーリング処理部の動作を示すフローチャートである。
【図５】実施の形態２のクラス分類処理部の動作を示すフローチャートである。
【図６】実施の形態２の負荷予測処理部の動作を示すフローチャートである。
【図７】従来のネットワーク装置のパケット受信処理の流れとともに示す機能ブロック図である。
【符号の説明】
【００３１】
１  ネットワーク物理デバイス
２  ネットワークインタフェイスカード（ネットワークインタフェイスデバイス）
３  規定インタフェイス
４  レイヤプロトコル処理部
５  ネットワークインタフェイスカード内部のフレームデータ格納バッファ
６  マルチプロセッサ（マルチコア／マルチプロセッサ対応ＣＰＵ）
６ａ〜６ｄ  ＣＰＵ
８  バスインタフェイス
９  ＯＳの認識するＣＰＵメモリ空間内のフレームデータ格納バッファ
１０  ポーリング処理部
１１  パケットバッファキュー
１２，１２ｂ〜１２ｄ  上位レイヤタスク
１３  クラス分類処理部
１４  負荷予測処理部
１８  ハンドラ・ネットワークドライバ
【図１】
2008129767.tif 000003
【図２】
2008129767.tif 000004
【図３】
2008129767.tif 000005
【図４】
2008129767.tif 000006
【図５】
2008129767.tif 000007
【図６】
2008129767.tif 000008
【図７】
2008129767.tif 000009