(57)【要約】【課題】ネットワークにおいて規定される最大転送単位を超えるパケットを効率的に転送することは難しい。【解決手段】送信バッファ２０には、プロトコルスタックから受け取った、ネットワークにおいて規定される最大転送単位を超えるデータ長のロングパケットが蓄積される。ペイロード分割部３４は、ロングパケットのペイロードを分割し、ヘッダ複製部３２は、ロングパケットのヘッダを複製して、分割されたペイロードに対するヘッダを生成する。ショートパケット生成部３６は、複製により生成されたヘッダを分割されたペイロードに付加することにより、ネットワークに送信すべき最大転送単位以下のデータ長のショートパケットを生成する。送信部４０は、物理層インタフェース９０を介して、ショートパケットをネットワークに送出する。【選択図】図５
2007266759.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークにおいて規定される最大転送単位を超えるデータ長のロングパケットをプロトコルスタックから受け取り、蓄積する送信バッファと、
前記ロングパケットのペイロードを分割するペイロード分割部と、
前記ロングパケットのヘッダを複製して、前記ペイロード分割部により分割されたペイロードに対するヘッダを生成するヘッダ複製部と、
前記ヘッダ複製部により生成されたヘッダを前記分割されたペイロードに付加することにより、ネットワークに送信すべき前記最大転送単位以下のデータ長のパケットを生成するパケット生成部とを含むことを特徴とするネットワーク処理装置。
【請求項２】
ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットをネットワークから受信し、蓄積する受信バッファと、
コネクション単位で前記複数のパケットのペイロードを連結するペイロード連結部と、
前記複数のパケットのヘッダを前記コネクション単位で集約して、前記ペイロード連結部により連結されたペイロードに対するヘッダを生成するヘッダ集約部と、
前記ヘッダ集約部により集約されたヘッダを前記連結されたペイロードに付加することにより、プロトコルスタックに渡すべき前記最大転送単位を超えるデータ長のロングパケットを生成するパケット生成部とを含むことを特徴とするネットワーク処理装置。
【請求項３】
ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットをネットワークから受信し、受信したパケットをヘッダとペイロードに分離してそれぞれを蓄積するヘッダバッファとペイロードバッファを含む受信バッファと、
コネクション単位で前記複数のパケットのペイロードを連結するペイロード連結部と、
前記複数のパケットのヘッダを前記コネクション単位で集約して、前記ペイロード連結部により連結されたペイロードに対するヘッダを生成するヘッダ集約部と、
前記ヘッダ集約部により集約されたヘッダを前記ヘッダバッファから、前記連結されたペイロードを前記ペイロードバッファから、それぞれ独立に上位層に転送する入出力インタフェースとを含むことを特徴とするネットワーク処理装置。
【請求項４】
前記入出力インタフェースは、前記コネクション単位でまとめられる複数のパケットの各々の個別のヘッダを、前記集約されたヘッダとともに、あるいは前記集約されたヘッダに代えて、前記ヘッダバッファから上位層に転送することを特徴とする請求項３に記載のネットワーク処理装置。
【請求項５】
前記入出力インタフェースは、前記個別のヘッダおよび前記集約されたヘッダをプロトコルスタックに、前記連結されたペイロードを直接アプリケーション層に転送することを特徴とする請求項４に記載のネットワーク処理装置。
【請求項６】
当該ネットワーク処理装置は、それぞれがローカルメモリを有する複数のプロセッサと前記複数のプロセッサにより共有されるメインメモリとを含むマルチプロセッサシステムと接続されており、
前記複数のプロセッサの内、１つのプロセッサが、残りのプロセッサに代わってネットワークを介して通信されるデータのプロトコル処理を行うプロトコルスタックの機能を有し、
前記入出力インタフェースは、前記個別のヘッダおよび前記集約されたヘッダを前記１つのプロセッサ内の前記ローカルメモリに転送し、前記連結されたペイロードを前記残りのプロセッサから参照される前記メインメモリ内の領域に転送することを特徴とする請求項４に記載のネットワーク処理装置。
【請求項７】
それぞれがローカルメモリを有する複数のプロセッサと、
前記複数のプロセッサにより共有されるメインメモリとを含み、
前記複数のプロセッサの内、１つのプロセッサが、残りのプロセッサに代わってネットワークを介して通信されるデータのプロトコル処理を行うプロトコルスタックの機能を有し、
ネットワークに対して送受信されるべきパケットからヘッダとペイロードが分離され、前記ペイロードは、前記残りのプロセッサから参照される前記メインメモリ内の領域に転送され、前記ヘッダは、前記１つのプロセッサ内の前記ローカルメモリに転送され、
前記１つのプロセッサは、当該プロセッサ内の前記ローカルメモリに転送されたヘッダにもとづいて前記パケットのプロトコル処理を行うことを特徴とするマルチプロセッサシステム。
【請求項８】
それぞれがローカルメモリを有する複数のプロセッサと、
前記複数のプロセッサにより共有されるメインメモリとを含み、
前記複数のプロセッサの内、１つのプロセッサが、残りのプロセッサに代わってネットワークを介して通信されるデータのプロトコル処理を行うプロトコルスタックの機能を有し、
ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットがネットワークから受信された場合に、コネクション単位で前記複数のパケットのペイロードを連結したデータは、前記残りのプロセッサから参照される前記メインメモリ内の領域に転送され、前記コネクション単位の前記複数のパケットの各々の個別のヘッダは、前記１つのプロセッサ内の前記ローカルメモリに転送され、
前記１つのプロセッサは、当該プロセッサ内の前記ローカルメモリに転送された個別のヘッダにもとづいて前記複数のパケットのプロトコル処理を行い、
前記残りのプロセッサは、前記１つのプロセッサのプロトコル処理の結果を受けて、前記メインメモリから前記連結されたデータを読み取ることを特徴とするマルチプロセッサシステム。
【請求項９】
ネットワークにおいて規定される最大転送単位を超えるデータ長のロングパケットをプロトコルスタックから受け取り、前記ロングパケットのペイロードを分割するステップと、
前記ロングパケットのヘッダを複製して、分割されたペイロードに対するヘッダを生成するステップと、
生成されたヘッダを前記分割されたペイロードに付加することにより、ネットワークに送信すべき前記最大転送単位以下のデータ長のパケットを生成するステップとをネットワークプロセッサに実行させることを特徴とするプログラム。
【請求項１０】
ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットをネットワークから受信し、コネクション単位で前記複数のパケットのペイロードを連結するステップと、
前記複数のパケットのヘッダを前記コネクション単位で集約して、連結されたペイロードに対するヘッダを生成するステップと、
集約されたヘッダを前記連結されたペイロードに付加することにより、プロトコルスタックに渡すべき前記最大転送単位を超えるデータ長のロングパケットを生成するステップとをネットワークプロセッサに実行させることを特徴とするプログラム。
【請求項１１】
ネットワークにおいて規定される最大転送単位を超えるデータ長のロングパケットをプロトコルスタックから受け取り、送信バッファに蓄積するステップと、
前記ロングパケットのペイロードを分割するステップと、
前記ロングパケットのヘッダを複製して、分割されたペイロードに対するヘッダを生成するステップと、
生成されたヘッダを前記分割されたペイロードに付加することにより、ネットワークに送信すべき前記最大転送単位以下のデータ長のパケットを生成するステップとを含むことを特徴とするネットワークプロトコル処理方法。
【請求項１２】
ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットをネットワークから受信し、受信バッファに蓄積するステップと、
コネクション単位で前記複数のパケットのペイロードを連結するステップと、
前記複数のパケットのヘッダを前記コネクション単位で集約して、連結されたペイロードに対するヘッダを生成するステップと、
集約されたヘッダを前記連結されたペイロードに付加することにより、プロトコルスタックに渡すべき前記最大転送単位を超えるデータ長のロングパケットを生成するステップとを含むことを特徴とするネットワークプロトコル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークに対してデータを送受信するためのネットワーク処理装置およびマルチプロセッサシステムに関する。
【背景技術】
【０００２】
ネットワーク通信においては、物理層やデータリンク層の仕様や規定により、転送可能なパケットのデータ長は制限される。転送可能な最大データ長は、最大転送単位（ＭＴＵ；Maximum Transfer Unit）と呼ばれ、たとえば、イーサネット（登録商標）やＰＰＰ（Point to Point Protocol）では、ＭＴＵは１５００バイト、ＦＤＤＩでは、ＭＴＵは４３５２バイトである。コンピュータ上で動作するアプリケーションが送信するパケットのデータ長がＭＴＵを超える場合、ソケット、トランスポート層、ネットワーク層のいずれかの階層においてＭＴＵ以下のパケットに分割されてから転送される。コンピュータのプロセッサは、分割されたパケットをプロトコル処理するために、プロトコルスタックなどのネットワーキングソフトウェアに多大なリソースを割り当てる必要があり、処理効率が低下する。
【０００３】
イーサネットのデータ転送速度は当初は１０Ｍｂｐｓであったが、その後、１００Ｍｂｐｓが普及し、さらに、最近では光ファイバを利用したギガビット・イーサネットも利用されるようになっている。このようにネットワークのデータ転送速度が速くなると、大量のデータを送受信するようになるため、データ転送量に比べてパケットサイズが小さいことがパケットの転送処理性能に影響を与え、通信速度を低下させる要因となっている。
【０００４】
ネットワークインタフェースカード（ＮＩＣ）の中には、サポート可能なパケット長を通常のＭＴＵを超える値に設定可能なものがある。ＭＴＵを超えるデータ長をもつパケットは、一般的に「ジャンボパケット」と呼ばれている。ジャンボパケット機能を有効にすると、一度に転送するデータサイズが大きくなり、パケットの転送回数が少なくなるため、大量のデータを転送する際の負荷を軽減し、スループットを向上させることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ジャンボパケットを利用するには、送信側と受信側の双方の通信装置、通信経路上にあってパケットを中継するハブなど、通信に関わるすべての機器がジャンボパケットに対応している必要があり、いずれかの通信機器がジャンボパケットに対応していなければ、ジャンボパケットを正しく転送することができない。また、ジャンボパケットがインターネットを経由して転送される場合、既存のルータはジャンボパケットに対応していないことが多く、ジャンボパケットはルータによってＭＴＵ以下のサイズに分割されて転送されてしまう。そのため、ジャンボパケット技術は、ルータを経由しないローカルエリアネットワークにおいてのみ有効であるのが現状である。また、ジャンボパケットのサポートは機器依存であるため、ジャンボパケット使用時に、ユーザまたはネットワーク管理者が、すべての対象通信機器のジャンボパケット機能を有効にするために設定を行う必要があり、管理が煩雑となる。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その目的は、ネットワークの規定の最大データ長を超えるパケットの転送を効率良く行うことのできる通信技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様のネットワーク処理装置は、ネットワークにおいて規定される最大転送単位を超えるデータ長のロングパケットをプロトコルスタックから受け取り、蓄積する送信バッファと、前記ロングパケットのペイロードを分割するペイロード分割部と、前記ロングパケットのヘッダを複製して、前記ペイロード分割部により分割されたペイロードに対するヘッダを生成するヘッダ複製部と、前記ヘッダ複製部により生成されたヘッダを前記分割されたペイロードに付加することにより、ネットワークに送信すべき前記最大転送単位以下のデータ長のパケットを生成するパケット生成部とを含む。
【０００８】
本発明の別の態様もまた、ネットワーク処理装置である。この装置は、ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットをネットワークから受信し、蓄積する受信バッファと、コネクション単位で前記複数のパケットのペイロードを連結するペイロード連結部と、前記複数のパケットのヘッダを前記コネクション単位で集約して、前記ペイロード連結部により連結されたペイロードに対するヘッダを生成するヘッダ集約部と、前記ヘッダ集約部により集約されたヘッダを前記連結されたペイロードに付加することにより、プロトコルスタックに渡すべき前記最大転送単位を超えるデータ長のロングパケットを生成するパケット生成部とを含む。
【０００９】
ここで、複数のパケットのヘッダを集約してヘッダを生成することには、複数のパケットのヘッダの内容に共通する部分がある場合に、共通する部分については重複しないように１つにすることにより、複数のヘッダをまとめることが含まれる。このようなヘッダの集約は、一般的にデータ集約（データアグリゲーション（data aggregation））と呼ばれていることの一例であると言うこともできる。もっとも、ヘッダの集約というとき、複数のヘッダの内容に重複があっても、重複をもたせたまま複数のヘッダを集めて１つのヘッダにすることを除外する趣旨ではなく、重複を完全になくしてまとめる場合、重複をある程度許容してまとめる場合、重複を全くなくさないでまとめる場合のいずれをも含む趣旨である。
【００１０】
本発明のさらに別の態様もまた、ネットワーク処理装置である。この装置は、ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットをネットワークから受信し、受信したパケットをヘッダとペイロードに分離してそれぞれを蓄積するヘッダバッファとペイロードバッファを含む受信バッファと、コネクション単位で前記複数のパケットのペイロードを連結するペイロード連結部と、前記複数のパケットのヘッダを前記コネクション単位で集約して、前記ペイロード連結部により連結されたペイロードに対するヘッダを生成するヘッダ集約部と、前記ヘッダ集約部により集約されたヘッダを前記ヘッダバッファから、前記連結されたペイロードを前記ペイロードバッファから、それぞれ独立に上位層に転送する入出力インタフェースとを含む。
【００１１】
本発明のさらに別の態様は、マルチプロセッサシステムである。このマルチプロセッサシステムは、それぞれがローカルメモリを有する複数のプロセッサと、前記複数のプロセッサにより共有されるメインメモリとを含む。前記複数のプロセッサの内、１つのプロセッサが、残りのプロセッサに代わってネットワークを介して通信されるデータのプロトコル処理を行うプロトコルスタックの機能を有する。ネットワークに対して送受信されるべきパケットからヘッダとペイロードが分離され、前記ペイロードは、前記残りのプロセッサから参照される前記メインメモリ内の領域に転送され、前記ヘッダは、前記１つのプロセッサ内の前記ローカルメモリに転送される。前記１つのプロセッサは、当該プロセッサ内の前記ローカルメモリに転送されたヘッダにもとづいてパケットのプロトコル処理を行う。
【００１２】
本発明のさらに別の態様も、マルチプロセッサシステムである。このマルチプロセッサシステムは、それぞれがローカルメモリを有する複数のプロセッサと、前記複数のプロセッサにより共有されるメインメモリとを含む。前記複数のプロセッサの内、１つのプロセッサが、残りのプロセッサに代わってネットワークを介して通信されるデータのプロトコル処理を行うプロトコルスタックの機能を有する。ネットワークにおいて規定される最大転送単位以下のデータ長の複数のパケットがネットワークから受信された場合に、コネクション単位で前記複数のパケットのペイロードを連結したデータは、前記残りのプロセッサから参照される前記メインメモリ内の領域に転送され、前記複数のパケットの各々の個別のヘッダは、前記コネクション単位でまとめられて前記１つのプロセッサ内の前記ローカルメモリに転送される。前記１つのプロセッサは、当該プロセッサ内の前記ローカルメモリに転送された個別のヘッダにもとづいて前記複数のパケットのプロトコル処理を行う。前記残りのプロセッサは、前記１つのプロセッサのプロトコル処理の結果を受けて、前記メインメモリから前記連結されたデータを読み取る。
【００１３】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１４】
本発明によれば、ネットワークにおいて規定される最大転送単位を超えるパケットの転送を効率良く行うことのできる。
【発明を実施するための最良の形態】
【００１５】
実施の形態１
本発明の実施の形態１に係る情報処理システムは、上位層のアプリケーションがネットワークを介してデータを送受信する際に、オペレーティングシステム内に実装されるプロトコルスタックおよびネットワークドライバにおいては、ネットワークにおいて規定される最大転送単位を超えるロングパケットを扱い、ネットワークインタフェースカード等のネットワークデバイスにおいて最大転送単位以下のパケットに分割して転送する。
【００１６】
図１は、実施の形態に係る情報処理システムの機能構成の階層を説明する図である。情報処理システムの上位層のユーザレベルには、アプリケーション３００があり、これはＯＳＩ（Open Systems Interconnection）参照モデルのアプリケーション層に対応する。下位層のカーネルレベルには、プロトコルスタック３１０とネットワークドライバ３２０がある。
【００１７】
プロトコルスタック３１０は、ネットワーク機能を実現するために必要なプロトコルを階層状に積み上げたネットワーキングソフトウェアであり、セッション層に対応するソケット、トランスポート層に対応するＴＣＰ（Transmission Control Protocol）やＵＤＰ（User Datagram Protocol）、およびネットワーク層に対応するＩＰ（Internet Protocol）の各階層を含む。同図では、ＩＣＭＰ（Internet Control Message Protocol）を、ＴＣＰやＵＤＰと並べて図示したが、ＩＣＭＰは、データ転送に直接関係せず、ＩＰ層のエラーメッセージや制御メッセージを転送するプロトコルであるため、ＩＰと同じネットワーク層に属するものとして扱うこともある。
【００１８】
プロトコルスタック３１０は、アプリケーション３００から渡されるデータをプロトコル処理し、送信パケットとしてネットワークドライバ３２０に渡す。また、プロトコルスタック３１０は、ネットワークドライバ３２０から渡される受信パケットをプロトコル処理し、受信されたデータをアプリケーション３００に渡す。
【００１９】
ネットワークドライバ３２０は、物理層のネットワークを動作させるための基本ソフトウエアであり、データリンク層に位置する。物理層は、ネットワークプロセッサ３３０およびネットワークデバイス３４０を含む。一例として、ネットワークデバイス３４０は、ネットワークインタフェースカード（ＮＩＣ）であり、ネットワークプロセッサ３３０は、ＮＩＣ上のプロセッサである。
【００２０】
図２は、ネットワークで送受信されるパケットフォーマット４００の一例を示す図である。ここでは、物理層およびデータリンク層でイーサネットを使用し、ネットワーク層にＩＰ、トランスポート層にＵＤＰをそれぞれ使用した場合のパケットフォーマット４００を示す。パケットフォーマット４００は、イーサネットヘッダ、ＩＰヘッダ、ＵＤＰヘッダ、およびデータを含む。なお、イーサネットでは一般にパケットをフレームと呼ぶこともあるが、以下では、パケットと称する。
【００２１】
イーサネットヘッダは、宛先ＭＡＣ（Media Access Control）アドレス、送信元ＭＡＣアドレス、タイプを含む。
【００２２】
ＩＰヘッダは、バージョン番号、ヘッダ長を示すＩＨＬ（Internet Head Length）、優先順位を示すＴＯＳ（Type Of Service）、ヘッダとペイロードの合計を示す総データ長（Total Length）、ＩＰデータグラムを送信する度に１つインクリメントされる識別番号（Identification）、フラグ、フラグメントオフセット、ＴＴＬ（Time To Live）、プロトコル番号、ヘッダチェックサム、送信元ＩＰアドレス、宛先ＩＰアドレスを含む。
【００２３】
ＵＤＰヘッダは、送信元ポート、宛先ポート、データ長、チェックサムを含む。
【００２４】
データは、パケットから上記の各種のヘッダを除いた残りの部分であり、ペイロードとも呼ばれる。トランスポート層にＴＣＰを使用して通信を行う場合は、ＵＤＰヘッダの代わりにＴＣＰヘッダが設けられる。
【００２５】
図３は、ＴＣＰヘッダフォーマット４２０を示す図である。ＴＣＰヘッダフォーマット４２０は、ＴＣＰヘッダとデータを含む。ＴＣＰヘッダは、送信元ポート、宛先ポート、シーケンス番号、応答確認番号（Acknowledgment Number）、オフセット、予約済み（Reserved）、フラグ、ウインドウサイズ、チェックサム、緊急ポインタ、オプション、パディングを含む。
【００２６】
大きなサイズのデータをネットワークで転送する場合、ネットワークで規定されるＭＴＵに合わせて複数のパケットに分割されて転送されるが、これらの複数のパケットのヘッダのフィールドの値は一部を除いて同一になる。図２のパケットフォーマット４００において、イーサネットヘッダ４０２の宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、タイプは同一の値であり、ＩＰヘッダ４０４においても、総データ長、識別番号、ヘッダチェックサムを除くすべてのフィールドの値は同一である。また、ＵＤＰヘッダ４０６では、送信元ポートおよび宛先ポートの値は同一である。もし各パケットのデータサイズが同じであれば、ＩＰヘッダ４０４の総データ長、ＵＤＰヘッダ４０６のデータ長も同一となる。また、図３のＴＣＰヘッダフォーマット４２０では、ＴＣＰヘッダ４２２の送信元ポートおよび宛先ポートの値は同一である。
【００２７】
大きなサイズのデータは、図１のプロトコルスタック３１０のソケット、ＴＣＰもしくはＵＤＰ、ＩＰのいずれかのレイヤにおいて複数の小さなサイズのパケットに分割されることになり、パケットが分割されたレイヤよりも下位のレイヤでは、分割された複数のパケットのヘッダをもとにプロトコル処理をすることになる。上述のように、分割されたパケットのヘッダの相当数のフィールドは同一の値をもつ。複数個に分割されたパケットをプロトコル処理する際、このような非常に似たヘッダを繰り返し参照し、その内容を解析することになるため、ＣＰＵやメモリなどのシステムリソースを消費し、プロトコル処理のオーバーヘッドが大きくなり、通信性能が低下する。
【００２８】
そこで、本実施の形態の情報処理システムでは、プロトコルスタックではＭＴＵを超えるロングパケットを扱い、ネットワークに送信する段階でＭＴＵ以下のショートパケットに分割するようにし、分割後のショートパケットのヘッダはロングパケットのヘッダから複製して生成する。また、ネットワークから受信されるショートパケットをコネクション単位で連結し、ヘッダは１つの集約させることにより、ＭＴＵを超えるロングパケットを生成し、ロングパケットの形でプロトコルスタックに与える。これにより、プロトコルスタックにおいてサイズの小さいパケットのヘッダのプロトコル処理を繰り返す必要がなくなり、処理負荷が軽減され、通信性能が向上する。
【００２９】
図４は、実施の形態１に係る情報処理システム１００の構成図である。情報処理システム１００は、メインシステム１１０とネットワークサブシステム１５０を含み、これらはバスなどで相互に接続されている。
【００３０】
メインシステム１１０は、メインプロセッサ１２０とメインメモリ１３０を有する。メインプロセッサ１２０は、メインメモリ１３０を利用して、図１のアプリケーション３００、プロトコルスタック３１０およびネットワークドライバ３２０の各機能を実行し、ネットワークに送信すべきパケットをネットワークサブシステム１５０に与え、また、ネットワークから受信されたパケットをネットワークサブシステム１５０から受け取る。
【００３１】
メインシステム１１０に実装されるプロトコルスタックは、アプリケーションが送受信を要求するデータのサイズがＭＴＵを超える場合でも、一つのパケットとして扱ってプロトコル処理する。プロトコル処理はヘッダの内容を解析することにより行われるため、データ長がＭＴＵを超えてもプロトコル処理自体には変更を加える必要はなく、既存のプロトコルスタックを利用することができる。
【００３２】
ネットワークサブシステム１５０は、図１のネットワークプロセッサ３３０およびネットワークデバイス３４０に相当し、ネットワークプロセッサ１６０およびバッファ１７０を含む。ネットワークプロセッサ１６０は、ネットワークに送信するパケットおよびネットワークから受信されるパケットをバッファ１７０に蓄積し、パケットの転送処理を行う。
【００３３】
ネットワークサブシステム１５０は、メインシステム１１０から渡されるＭＴＵを超えるデータサイズのロングパケットをＭＴＵ以下のデータサイズのショートパケットに分割してネットワークに送信する処理、ネットワークから受信されるショートパケットをコネクション単位で連結してＭＴＵを超えるデータサイズのロングパケットを生成し、メインシステム１１０に供給する処理を行う。
【００３４】
メインシステム１１０のメインメモリ１３０からネットワークサブシステム１５０のバッファ１７０に送信パケットを転送し、ネットワークサブシステム１５０のバッファ１７０からメインシステム１１０のメインメモリ１３０に受信パケットを転送する方式の一つに、ＤＭＡ（Direct Memory Access）転送方式がある。ＤＭＡ転送方式は、メインシステム１１０のメインプロセッサ１２０を介さずに、ネットワークサブシステム１５０とメインシステム１１０のメインメモリ１３０の間で直接データを転送する方法であり、高速なデータ転送が可能である。
【００３５】
図５は、ネットワークサブシステム１５０の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００３６】
入出力インタフェース１０は、メインシステム１１０との間でデータのやりとりをするインタフェースであり、一例としてＤＭＡコントローラの機能を有する。
【００３７】
送信バッファ２０は、メインシステム１１０から渡される、ＭＴＵを超えるデータ長のロングパケットを蓄積する。
【００３８】
パケット分割処理部３０は、送信バッファ２０からロングパケットを読み取り、ヘッダを含めたデータ長がＭＴＵ以下となるように所定のサイズの複数のパケットに分割する処理を行う。パケット分割処理部３０は、ヘッダ複製部３２、ペイロード分割部３４、およびショートパケット生成部３６を有する。
【００３９】
ペイロード分割部３４は、送信バッファ２０からロングパケットのペイロードを取得し、ＭＴＵより小さい所定のデータ長のペイロードに分割する。ヘッダ複製部３２は、ロングパケットのヘッダを複製して、ペイロード分割部３４により分割されたペイロードに対するヘッダを生成する。
【００４０】
ヘッダ複製部３２は、ロングパケットのヘッダを複製した後、分割されたパケット毎に異なる値を設定すべきフィールドの値を変更する。たとえば、ＩＰヘッダの総データ長、識別番号およびヘッダチェックサム、ＵＤＰパケットであれば、ＵＤＰヘッダのデータ長とチェックサム、ＴＣＰパケットであれば、ＴＣＰヘッダのシーケンス番号やチェックサムは、分割されたパケット毎に新たに計算して各フィールドに設定する。
【００４１】
ショートパケット生成部３６は、ペイロード分割部３４により分割されたペイロードに、ヘッダ複製部３２により生成されたヘッダを付加して、ショートパケットを生成する。ショートパケット生成部３６により生成されたショートパケットは、送信部４０に与えられ、送信部４０は、物理層インタフェース９０を介して、ネットワークに送出される。ロングパケットを分割して生成される複数のショートパケットは、ロングパケット全体の分割処理が終わるまでバッファリングせずに、生成された順に逐次物理層に転送することが望ましい。なぜなら、これにより、必要なバッファ容量を抑えることができるからである。
【００４２】
受信部５０は、ネットワークから物理層インタフェース９０を介して、パケットを受信し、受信バッファ６０に蓄積する。大きなデータが受信される場合は、同一コネクションの多数の受信パケットが受信バッファ６０に蓄積される。また、同一コネクションにおいて、データサイズの小さい多数のパケットが連続して受信されることもある。
【００４３】
パケット連結処理部７０は、受信されたＭＴＵ以下のデータ長の複数のパケットを受信バッファ６０から読み取り、それらのパケットのヘッダを取り除いて連結し、１つのヘッダを付加してＭＴＵを超えるデータ長のロングパケットを生成する処理を行う。パケット連結処理部７０は、コネクション識別部７２、ヘッダ集約部７４、およびペイロード連結部７６を有する。
【００４４】
パケットは非同期に到着するため、受信バッファ６０にある程度の数のパケット数が蓄積されるのを待つために、所定の待機時間を設ける。コネクション識別部７２は、受信バッファ６０に待機時間の間に蓄積されたパケットのヘッダを調べてコネクションを識別し、同一コネクションのパケットをヘッダ集約部７４とペイロード連結部７６に通知する。同一コネクションかどうかは、ヘッダに含まれるＩＰアドレスとポート番号の組み合わせによって識別することができる。
【００４５】
ペイロード連結部７６は、同一コネクションのパケットのペイロードを連結する。ヘッダ集約部７４は、同一コネクションのパケットのヘッダをまとめて１つのヘッダを生成する。ヘッダ集約部７４により集約されたヘッダは、ペイロード連結部７６によって連結されたペイロードに付加すべきヘッダである。送信元および宛先アドレスや、送信元および宛先ポートなど、共通するフィールドは集約され、シーケンス番号やチェックサムのようにパケット毎に異なるフィールドは、連結後のパケットに対応するように調整される。
【００４６】
ロングパケット生成部７８は、ペイロード連結部７６により連結されてペイロードにヘッダ集約部７４により集約されたヘッダを付加してロングパケットを生成し、入出力インタフェース１０を介してメインシステム１１０に渡す。
【００４７】
連結すべきパケットの到着を待つための待機時間は、所定の値に固定されてもよいが、より好適には、最初は小さい値に設定しておき、同一コネクションから到着するパケットの数が増えるにつれて、徐々に大きな値に変更していく、いわゆる「スロースタート」のアルゴリズムを用いてもよい。パケットが連続して到着しないにもかかわらず最初から待機時間を大きくすると、遅延が発生する。待機時間をスロースタートさせ、学習により待機時間を調整することで、遅延の発生を回避しつつ、多数のパケットが到着する場合には、できるだけ連結対象のパケット数を増やし、大きなサイズのロングパケットを生成することができ、プロトコルスタックの負担を軽減することができる。
【００４８】
以上説明したパケット分割処理部３０、送信部４０、受信部５０、パケット連結処理部７０の各機能は、図４のネットワークプロセッサ１６０により実行される。これらの機能は、一例として組み込みオペレーティングシステム（ＯＳ）として実装することもできる。また、送信バッファ２０および受信バッファ６０は、図４のバッファ１７０内に設けられる。
【００４９】
図６は、パケット分割処理部３０によりロングパケットが複数のショートパケットに分割される様子を示す図である。ロングパケット４３０は、イーサネットヘッダ、ＩＰヘッダおよびＵＤＰヘッダ（これらをまとめて「オリジナルヘッダ」（符号４３２）という）と、ペイロード４３４とを含む。ロングパケット４３０のペイロード４３４は、同図の例では、３つのペイロード４４４ａ〜ｃに分割され、各ペイロード４４４ａ〜ｃには、ロングパケット４３０のオリジナルヘッダ４３２を複製したヘッダ４４２ａ〜ｃが付加される。これにより、ＭＴＵ以下のデータ長に分割されたショートパケット４４０ａ〜ｃが生成される。
【００５０】
ショートパケット４４０ａ〜ｃの各ヘッダ４４２ａ〜ｃは、基本的にはロングパケット４３０のオリジナルヘッダ４３２の複製であるが、ショートパケット４４０ａ〜ｃ毎に異なる値をもつべきフィールドの値は適宜更新される。
【００５１】
図７は、パケット連結処理部７０によりショートパケットが連結されてロングパケットが生成される様子を示す図である。
【００５２】
同図では、ＭＴＵ以下の３つのショートパケット４５０ａ〜ｃが連結されて１つのロングパケット４６０が生成される例が示されている。各ショートパケット４５０ａ〜ｃのペイロード４５４ａ〜ｃはＩＰヘッダの識別番号の順に連結されて１つのペイロード４６４が形成される。ショートパケット４５０ａ〜ｃの各ヘッダ４５２ａ〜ｃは、共通するフィールドの値をまとめることで１つのヘッダ４６２に集約されて、連結されたペイロード４６４のヘッダとして付加される。
【００５３】
ショートパケット４４０ａ〜ｃの各ヘッダ４４２ａ〜ｃのフィールドは、基本的には共通する値をもつため、連結されたペイロード４６４のヘッダ４６２に集約することが可能であるが、ショートパケット４４０ａ〜ｃ毎に異なる値をもつフィールドについては、連結後のペイロード４６４に対応する値に更新される。ただし、各ショートパケット４４０ａ〜ｃのヘッダのチェックサムは、受信時にチェックされているため、ロングパケット４６０に改めてチェックサムをつける必要はない。
【００５４】
以上述べたように、実施の形態１に係る情報処理システム１００によれば、ネットワークプロセッサが、ホストシステムのプロトコルスタックから渡されるロングパケットをＭＴＵ以下のデータ長のショートパケットに分割して送信し、受信したショートパケットを連結してロングパケットにしてプロトコルスタックに渡すため、ホストシステムのプロトコルスタックは、仮想的にＭＴＵを超えるデータ長のロングパケットを扱うことができる。これにより、大きいサイズのデータを送受信する際にも１つのパケットとしてプロトコル処理することができ、ＴＣＰ／ＩＰに代表されるプロトコルスタックなどのネットワーキングソフトウエアの処理負荷を軽減することができる。
【００５５】
また、ネットワークプロセッサ側でもホストシステムのプロトコルスタックから渡されたロングパケットをショートパケットに分割して送信する際、ロングパケットのヘッダを複製した上で、ショートパケット毎に異なる値を設定すべきフィールドの値を適宜変更するだけでよいため、ヘッダの生成処理には大きな負荷がかからない。このように、ロングパケットの送信の際、ホストシステムにかかる処理負荷だけでなくネットワークプロセッサにかかる処理負荷も軽減することができるという利点がある。
【００５６】
また、小さいサイズのパケットが一定期間に連続的に受信される場合でも、ネットワークプロセッサがこれらの受信パケットをまとめて一つのロングパケットに変換するため、多数の受信パケットをプロトコル処理する場合に比べて処理負荷を大幅に減らすことができる。
【００５７】
実施の形態２
実施の形態１では、受信された複数のショートパケットを連結してロングパケットを生成する際に、各ショートパケットのヘッダを１つのヘッダに集約させてロングパケットのヘッダとし、各ショートパケットのヘッダは不要となるので破棄していた。しかし、プロトコルによっては、データの整合性や秘匿性を確保したり、確実な転送を保証するために各パケットに付加されるヘッダに各種の制御情報をもたせることがあり、パケットの連結後にヘッダを破棄すると、制御情報が失われてしまう。そこで、実施の形態２に係る情報処理システム１００のネットワークサブシステム１５０では、各ショートパケットのヘッダを破棄することなく、メインシステム１１０に転送する。
【００５８】
図８は、実施の形態２に係る情報処理システム１００の構成図である。ネットワークサブシステム１５０のバッファ１７０には、受信されたショートパケットのヘッダとペイロードをそれぞれ別に保持するヘッダバッファ１７２とペイロードバッファ１７４が設けられる。本実施の形態では、ヘッダとペイロードを別系統バッファに保持して独立に制御する。データ転送には、ＤＭＡが用いられ、ヘッダとペイロードを分離して独立にメインシステム１１０のメインメモリ１３０に転送することができる。
【００５９】
ネットワークサブシステム１５０は、実施の形態１で説明した図５の各機能構成を含むが、ヘッダとペイロードを分離してメインシステム１１０に転送するため、連結されたペイロードにヘッダを付加するためのロングパケット生成部７８の構成は設けず、ヘッダ集約部７４とペイロード連結部７６がそれぞれ独立にヘッダと連結されたペイロードを入出力インタフェース１０を介してメインシステム１１０にＤＭＡ転送する構成を取る。また、実施の形態２のヘッダ集約部７４は、同一コネクションの複数のショートパケットの個別のヘッダを集約したヘッダだけでなく、各ショートパケットの個別のヘッダも合わせてメインシステム１１０に転送する。
【００６０】
ヘッダバッファ１７２には、ネットワークから受信されたＮ個のショートパケットの個別のヘッダ１〜Ｎ（符号１７６）が蓄積される。ヘッダ集約部７４は、これらのヘッダ１〜Ｎを１つのヘッダ１７５に集約して、ヘッダバッファ１７２に蓄積する。ヘッダバッファ１７２に蓄積された個別のヘッダ１７６は集約されたヘッダ１７５とともにメインシステム１１０のメインメモリ１３０にＤＭＡ転送される。
【００６１】
ペイロードバッファ１７４には、Ｎ個のショートパケットの各ペイロード１〜Ｎ（符号１７８）が蓄積され、ペイロード連結部７６によりこれらのペイロード１〜Ｎは連結される。連結されたペイロードは、メインシステム１１０のメインメモリ１３０にＤＭＡ転送される。連結後のペイロードはデータ長が大きくなる可能性があり、連結されたペイロードのメインメモリ１３０への転送は、個別のヘッダ１〜Ｎおよび集約されたヘッダの転送よりも時間を要する。個別のヘッダ１〜Ｎおよび集約されたヘッダは、メインメモリ１３０に先に転送されるため、メインプロセッサ１２０は個別のヘッダ１〜Ｎの解析を先に進め、プロトコル処理を行うことができ、その間、連結されたペイロードはバックグラウンドでメインメモリ１３０に転送される。メインプロセッサ１２０は、ヘッダの解析が終わると、バックグラウンドでメインメモリ１３０に転送された連結されたペイロードの処理を進める。
【００６２】
ヘッダとペイロードを分離することで、ヘッダはプロトコルスタックに渡し、ペイロードは、プロトコル処理には関係しないため、アプリケーションにより参照されるメモリ領域に直接渡すことができる。ペイロードをアプリケーションのメモリ領域に渡す際、いわゆるゼロ・コピー技術を利用してプロトコルスタックからアプリケーションへデータをコピーする処理を省略し、コピーによるオーバーヘッドをなくすことができる。
【００６３】
アプリケーションで利用されるデータは、プロトコル処理が完了した時点で、アプリケーションに渡せばよいため、ペイロード用のＤＭＡコントローラは、プロトコルスタックがヘッダのプロトコル処理をしている間に、連結されたペイロードをアプリケーションのメモリ領域にバックグラウンドで転送することができる。
【００６４】
実施の形態２に係る情報処理システム１００によれば、たとえば、ＩＰｓｅｃ（Security Architecture for Internet Protocol）のようにＩＰパケットがヘッダ情報も含めて暗号化される場合や、トランスポート層のプロトコルとしてＴＣＰを用いるため、シーケンス番号など再送制御にヘッダ情報が必要となる場合に、連結前の各ショートパケットの個別のヘッダもプロトコルスタックに渡されるため、プロトコルスタックはＩＰパケットの復号やＴＣＰの再送制御を行うことができる。また、ヘッダとペイロードの転送系統を分離したため、連結されたペイロードがバックグランドでメモリに転送される間に、ショートパケットの個別のヘッダをプロトコル処理することができ、処理効率を上げることができる。
【００６５】
なお、上記の説明では、同一コネクションの複数のパケットの個別のヘッダを集約されたヘッダとともにメモリに転送したが、ヘッダの集約は行わないで、複数のパケットの個別のヘッダだけをメモリに転送するように構成してもよい。
【００６６】
実施の形態３
実施の形態３では、実施の形態２のメインシステム１１０が、複数のプロセッサを含むマルチプロセッサシステムにより実現される構成である。
【００６７】
図９は、実施の形態３に係るマルチプロセッサシステム２００の構成図である。マルチプロセッサシステム２００は、複数（同図では４個）のサブプロセッサユニット２０１〜２０４、これらのサブプロセッサユニット２０１を制御するメインプロセッサユニット２０９、メインプロセッサユニット２０９および複数のサブプロセッサユニット２０１〜２０４により共有されるメインメモリ２３０を有し、外部インタフェース２４０を介してネットワークサブシステム１５０と接続されている。
【００６８】
ネットワークサブシステム１５０は、実施の形態２で説明したネットワークサブシステム１５０であり、ネットワークプロセッサ１６０と、ヘッダバッファ１７２とペイロードバッファ１７４を含むバッファ１７０とを有する。
【００６９】
各サブプロセッサユニット２０１〜２０４は、プロセッサ２１１〜２１４およびローカルメモリ２２１〜２２４を含む。ローカルメモリ２２１〜２２４は、プロセッサ２１１〜２１４が高速にアクセスすることのできる専用メモリである。メインプロセッサユニット２０９は、プロセッサ２１９およびキャッシュ２２９を含む。
【００７０】
メインプロセッサユニット２０９、サブプロセッサユニット２０１〜２０４、メインメモリ２３０、および外部インタフェース２４０が１つのパッケージに集積され、マルチコアプロセッサを形成してもよい。
【００７１】
複数のサブプロセッサユニットの内、１つのサブプロセッサユニット、同図の例では第４のサブプロセッサユニット２０４は、プロトコルスタックなどのネットワーキング機能をもち、それ以外の残りのサブプロセッサユニット、同図の例では第１から第３のサブプロセッサユニット２０１〜２０３は、ネットワークを利用するアプリケーションを実行する。ネットワーク処理専用のサブプロセッサユニット２０４を設けることで、アプリケーションを実行するサブプロセッサユニット２０１〜２０３からネットワーク処理をオフロードすることができる。なお、メインプロセッサユニット２０９にネットワーキング機能をもたせる構成であってもよい。
【００７２】
ネットワークサブシステム１５０は、ヘッダバッファ１７２に蓄積された複数の連結されるべきショートパケットの個別のヘッダおよび集約されたヘッダの少なくとも一方を、第４のサブプロセッサユニット２０４のローカルメモリ２２４にＤＭＡ転送し、ペイロードバッファ１７４に蓄積された連結後のペイロードをメインメモリ２３０にＤＭＡ転送する。
【００７３】
第４のサブプロセッサユニット２０４のプロセッサ２１４は、専用のローカルメモリ２２４に転送されたショートパケットの個別のヘッダおよび集約ヘッダの少なくとも一方を参照してプロトコル処理を行う。第４のサブプロセッサユニット２０４によりプロトコル処理が終わった後、第１〜第３のサブプロセッサユニット２０１〜２０３は、メインメモリ２３０に転送された連結後のペイロードを自分宛に送信されたデータとして参照する。
【００７４】
上記の説明では、ネットワークサブシステム１５０により受信された複数のパケットが連結される場合に、連結されたペイロードと、各パケットの個別ヘッダおよび集約ヘッダの少なくとも一方とを分離して、連結されたペイロードをメインメモリ２３０に、各パケットの個別ヘッダおよび集約ヘッダの少なくとも一方をネットワーク処理専用のサブプロセッサユニット２０４のローカルメモリ２２４に転送した。変形例として、パケットを連結せずにショートパケットのまま送受信する場合でも、ヘッダとペイロードを分離して、ヘッダをネットワーク処理専用のサブプロセッサユニット２０４のローカルメモリ２２４にバッファリングし、ペイロードをメインメモリ２３０にバッファリングするようにしてもよい。
【００７５】
実施の形態３のマルチプロセッサシステム２００によれば、ネットワークから受信されるパケットのヘッダとペイロードを分離し、ヘッダはネットワーク処理専用のサブプロセッサユニットの専用のローカルメモリに格納し、ペイロードは複数のサブプロセッサユニットが共有するメインメモリに格納する。これにより、ネットワーク処理専用のサブプロセッサユニットは、ローカルメモリに格納されたヘッダを参照してプロトコル処理を高速に行うことができる。また、ヘッダとペイロードを分離して転送制御するため、プロトコル処理と並行して、サブプロセッサユニット上で動作するアプリケーションが、データをメインメモリに対して読み書きすることができるため、システム全体の処理効率が上がる。特に、受信された複数のパケットを連結する場合、連結後のペイロードのデータ長が長くなるため、ヘッダとペイロードを分離して転送制御することによる処理効率の改善効果が一層顕著になる。
【００７６】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【００７７】
ネットワークサブシステム１５０のパケット連結処理部７０やパケット分割処理部３０の機能などは、メインシステム１１０の機能として、たとえば、ネットワークドライバ３２０にもたせてもよい。
【００７８】
上記の説明では、ネットワークサブシステム１５０の実装例としてネットワークインタフェースカードを一例として挙げたが、ネットワークサブシステム１５０は、スイッチングハブなどのネットワーク機器として実装されてもよい。
【００７９】
上記の説明では、データリンク層および物理層としてイーサネットを想定したが、ネットワークはイーサネットに限られず、無線ＬＡＮやＦＤＤＩなどであってもよく、各実施の形態は、いずれのネットワークであっても有効である。
【図面の簡単な説明】
【００８０】
【図１】実施の形態１に係る情報処理システムの機能構成の階層を説明する図である。
【図２】ネットワークで送受信されるパケットフォーマットの一例を示す図である。
【図３】ＴＣＰヘッダフォーマットを示す図である。
【図４】実施の形態１に係る情報処理システムの構成図である。
【図５】図４のネットワークサブシステムの機能構成図である。
【図６】図５のパケット分割処理部によりロングパケットが複数のショートパケットに分割される様子を示す図である。
【図７】図５のパケット連結処理部によりショートパケットが連結されてロングパケットが生成される様子を示す図である。
【図８】実施の形態２に係る情報処理システムの構成図である。
【図９】実施の形態３に係るマルチプロセッサシステムの構成図である。
【符号の説明】
【００８１】
１０  入出力インタフェース、  ２０  送信バッファ、  ３０  パケット分割処理部、  ３２  ヘッダ複製部、  ３４  ペイロード分割部、  ３６  ショートパケット生成部、  ４０  送信部、  ５０  受信部、  ６０  受信バッファ、  ７０  パケット連結処理部、  ７２  コネクション識別部、  ７４  ヘッダ集約部、  ７６  ペイロード連結部、  ７８  ロングパケット生成部、  １００  情報処理システム、  １１０  メインシステム、  １２０  メインプロセッサ、  １３０  メインメモリ、  １５０  ネットワークサブシステム、  １６０  ネットワークプロセッサ、  １７０  バッファ、  ２００  マルチプロセッサシステム。
【図１】
2007266759.tif 000003
【図２】
2007266759.tif 000004
【図３】
2007266759.tif 000005
【図４】
2007266759.tif 000006
【図５】
2007266759.tif 000007
【図６】
2007266759.tif 000008
【図７】
2007266759.tif 000009
【図８】
2007266759.tif 000010
【図９】
2007266759.tif 000011