(57)【要約】【課題】ＴＣＰ通信におけるデータストリームをアプリケーションの処理単位に分割する処理と、通信下位プロトコルの処理と、を実行するオフロードエンジンを別ハードウェアとして付加し、アプリケーションを簡略化して最適化する。【解決手段】上位アプリケーション１１と、通信下位プロトコルを実行するオフロードエンジン２１を接続するオフロードエンジンドライバ１２と、を搭載するサービスサブシステム１と、通信下位プロトコルを実行し、受信データを上位アプリケーション１１の処理単位に分割してオフロードエンジンドライバ１２に送付するオフロードエンジン２１を搭載するネットワークサブシステム２と、を備える。【選択図】      図１
2006014143.tif 000002
【特許請求の範囲】
【請求項１】
クライアント及びサーバのアプリケーションを処理するサービスサブシステムをネットワークサブシステムを介してネットワークに接続してなるシステムにおいて、
上位アプリケーションと、通信下位プロトコルを実行するオフロードエンジンを接続するオフロードエンジンドライバと、を搭載するサービスサブシステムと、
前記通信下位プロトコルを実行し、受信データストリームを前記上位アプリケーションの処理単位に分割して前記オフロードエンジンドライバに送付するオフロードエンジンを搭載するネットワークサブシステムと、
を備えることを特徴とする通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム。
【請求項２】
前記オフロードエンジンドライバは、
前記オフロードエンジンに前記処理単位に分割したデータを格納する受信バッファの可変個のアドレス情報を渡し、前記オフロードエンジンから前記受信バッファに前記処理単位に分割したデータの格納済み情報を得ることを特徴とする請求項１記載の通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム。
【請求項３】
前記オフロードエンジンは、
前記ネットワークを接続するハードウェアを含み、前記サービスサブシステムを制御するオペレーティングシステムとは独立に、通信下位プロトコルの実行と、前記アドレス情報に基づく前記受信バッファに前記処理単位に分割したデータの格納と、前記格納済み情報を前記オフロードエンジンドライバへの通知と、をすることを特徴とする請求項１記載の通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム。
【請求項４】
前記ネットワークサブシステムは、
前記サービスサブシステムを搭載するハードウェアカードとは別のハードウェアカードに搭載されることを特徴とする請求項１記載の通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム。
【請求項５】
前記ネットワークサブシステムは、
前記サービスサブシステムを搭載するハードウェアカードの一部に搭載されることを特徴とする請求項１記載の通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム。
【請求項６】
前記上位アプリケーションは、
ネットワークファイルシステムのＮＦＳデーモンであることを特徴とする請求項１記載の通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム。
【請求項７】
前記上位アプリケーションは、
共通インターネットファイルシステムのＣＩＦＳデーモンであることを特徴とする請求項１記載の通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、クライアントあるいはサーバが実行する通信プロトコル及びアプリケーションを搭載するプロセッサカードでなる通信システムに関し、特に通信下位プロトコル（ＴＣＰ／ＩＰ）を実行して受信データストリームをアプリケーションの処理単位に分割するオフロードエンジンをオペレーティングシステムに対して独立に作動するネットワークカードに搭載する、通信下位プロトコル及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システムに関する。
【背景技術】
【０００２】
一般に、オペレーティングシステムは、プロセッサにローカルファイルシステム、ネットワークファイルシステム、メモリ、周辺装置ドライバ、及びアプリケーションを含む各処理のタスクを実行するよう設計される。そのため、プロセッサに処理が集中することになる。そのため、プロセッサの集中負担を軽減するため、サブシステム化することが行われている。
【０００３】
従来のファイルサーバで、サービス要求及びそれの応答を送受するネットワークサブシステムと、サービスモジュール、ファイルシステムモジュール、記憶モジュールを備えるサービスサブシステムと、によって２つのサブシステムが専用の別ハードウェアで実行される構成を採り、ネットワークサブシステムは、サービスサブシステムのソフトウェアによる直接の制御は受けない構成として、アプリケーションを実行するサービスサブシステムのプロセッサ負担を軽減する例がある（例えば、特許文献１）。
【０００４】
【特許文献１】特表２００３−５１１７７７号公報（段落００２７乃至００３８、図３）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記の例では、ファイルサーバとしてアプリケーションを実行するプロセッサからネットワークプロトコル実行負荷を軽減することにあるが、ネットワークから受信するデータの形態を変換する処理を別ハードウェアに負担させて、更に、負荷軽減を図ることができる。
【０００６】
アプリケーションからみて通信下位プロトコルであるＴＣＰ通信ではデータは一連の連なり（ストリーム）としてやりとりされるので、ＴＣＰ層からデータを受けとる上位アプリケーションでは、そのストリームを読んで、適切な処理単位にデータを区切る必要がある。しかしＴＣＰ層から渡されたデータは、どのように分割されているか分からないため、上位アプリケーションでデータストリームを適切に分割するためにはバッファリングなどの制御構造が必要となり、そのための処理の分だけ上位アプリケーションの処理時間が掛かり、アプリケーションの実行速度も遅くなってしまう課題がある。
【０００７】
このバッファリングなどの制御構造が必要になる事情を説明する図６を参照すると、ＴＣＰ受信データはデータストリームであるから、ＴＣＰ通信以下の下位プロトコルのヘッダ情報を削除して、ＴＣＰ層の上のプロトコルのフラグメントヘッダとデータとでなる一連のデータストリームになる（図６のステップＥ１）。受信バッファには上位層の区切りを意識することなく端からストリームを詰めるため、上位アプリケーションにＴＣＰ受信データが渡されると、端から詰められた上位アプリケーションの受信バッファからフラグメントヘッダとデータという処理単位のデータを抽出することになる。つまり、上位アプリケーション処理負担が大きくなる。
【０００８】
そこで、ネットワーク通信下位プロトコル（ＴＣＰ／ＩＰ）の実行機能と、受信したデータストリームをアプリケーション処理単位に分割する分割機能と、をオペレーティングシステムの直接制御を受けないオフロードエンジンとして搭載する別ハードウェアにする。
【０００９】
上位アプリケーションの受信データ制御部分を省略するため、ＴＣＰ／ＩＰプロトコル処理をコンピュータ上にある中央処理装置に代わりにネットワークサブシステム側で処理するオフロードエンジンを用いる。オフロードエンジンは、ネットワークからデータを受け取りＴＣＰ／ＩＰプロトコル処理を施す。更に、そのオフロードエンジンでの受信データ作成において、上位プロトコルの処理単位で分割する。
【００１０】
また、上位アプリケーションはオフロードエンジン側から受けとるデータが、そのプロトコルの処理単位で区切られていることを想定した作りにする。通常データの解析に必要となる機構（データのバッファリング機構など）を省くことができ、かつ、受けとるデータが上位プロトコルの処理単位となっているので、直ちにメインの処理に入ることができるなど処理の最適化が行える。
【００１１】
したがって、別ハードウェアによる高速な通信プロトコル処理に加えて、上位プロトコルの処理単位分割を併せて行うことにより、上位アプリケーションの最適化を行って、課題を解決する。
【００１２】
この発明の目的は、ＴＣＰ通信のようなデータストリームをアプリケーション処理単位に分割する処理と、通信下位プロトコルの処理と、を実行するオフロードエンジンを別ハードウェアとして付加し、課題を解決することにある。
【課題を解決するための手段】
【００１３】
そのため、この発明の、クライアント及びサーバのアプリケーションを処理するサービスサブシステムをネットワークサブシステムを介してネットワークに接続してなるシステムにおいて、上位アプリケーションと、通信下位プロトコルを実行するオフロードエンジンを接続するオフロードエンジンドライバと、を搭載するサービスサブシステムと、前記通信下位プロトコルを実行し、受信データストリームを前記上位アプリケーションの処理単位に分割して前記オフロードエンジンドライバに送付するオフロードエンジンを搭載するネットワークサブシステムと、を備えることを特徴とする。
【００１４】
更に、前記オフロードエンジンドライバは、前記オフロードエンジンに前記処理単位に分割したデータを格納する受信バッファの可変個のアドレス情報を渡し、前記オフロードエンジンから前記受信バッファに前記処理単位に分割したデータの格納済み情報を得ることを特徴とする。
【００１５】
更に、前記オフロードエンジンは、前記ネットワークを接続するハードウェアを含み、前記サービスサブシステムを制御するオペレーティングシステムとは独立に、通信下位プロトコルの実行と、前記アドレス情報に基づく前記受信バッファに前記処理単位に分割したデータの格納と、前記格納済み情報を前記オフロードエンジンドライバへの通知と、をすることを特徴とする。
【００１６】
更に、前記ネットワークサブシステムは、前記サービスサブシステムを搭載するハードウェアカードとは別のハードウェアカードに搭載されることを特徴とする。
【００１７】
更に、前記ネットワークサブシステムは、前記サービスサブシステムを搭載するハードウェアカードの一部に搭載されることを特徴とする。
【００１８】
更に、前記上位アプリケーションは、ネットワークファイルシステムのＮＦＳデーモンであることを特徴とする。
【００１９】
更に、前記上位アプリケーションは、共通インターネットファイルシステムのＣＩＦＳデーモンであることを特徴とする。
【発明の効果】
【００２０】
この発明の効果は、上位アプリケーションを簡略化して、処理速度を向上できる。その理由は、上位アプリケーションによるデータストリーム分割処理をオフロードエンジンに分担させて、上位アプリケーション自体の簡略化と最適化とが図られるからである。
【発明を実施するための最良の形態】
【００２１】
この発明を実施するための最良の形態について図面を参照して説明する。発明の実施例の構成を示す図１を参照すると、第１の実施例は、プログラムにより動作する図示しないプロセッサを搭載し、アプリケーションを実行するサービスサブシステム１と、ファームウェアにより動作する図示しないプロセッサを搭載し、ネットワークに対する通信下位プロトコルを実行し、受信データストリームを処理単位に分割するネットワークサブシステム２と、ネットワーク３と、を備える。
【００２２】
サービスサブシステム１には、通信上位プロトコル及びアプリケーションを実行する上位アプリケーション１１と、オフロードエンジンに図示しない受信バッファの可変個のアドレス情報及び該受信バッファの格納済み情報を授受するオフロードエンジンドライバ１２と、を搭載する。ネットワークサブシステム２には、通信下位プロトコル及び受信データストリームのデータ分割を実行し、該アドレス情報に基づく分割データの格納を通知するオフロードエンジン２１を搭載する。
【００２３】
上位アプリケーション１１には、ＮＦＳデーモン４１を当てた場合を示す図２を参照して、これらの手段の動作を説明する。通信サブシステム５のオフロードエンジン５１は、ハードウェア（以降ＨＷ）とファームウェア（以降ＦＷ）で構成される。ＦＷは  ＨＷの制御を行う。オフロードエンジン５１では、ＮＦＳ通信で使用されるＲＰＣ／ＮＦＳプロトコルのデータ単位への分割をサポートする。オフロードエンジン５１と後述するＮＦＳデーモン４１との橋渡しはオフロードエンジンドライバ４２で行う。ＮＦＳデーモン４１は、受信したデータはＲＰＣ／ＮＦＳプロトコルのデータ単位で受信データが区切られていることを想定した作りになって、簡略化が図られている。
【００２４】
図４を参照し、ＲＰＣ／ＮＦＳプロトコルのデータ単位をネットワーク上のデータ単位であるパケットに変換する過程を説明すると、ＲＰＣレコード（図４のステップＣ１）は、通信下位プロトコルを適用するために、フラグメントヘッダとＲＰＣデータとからなるフラグメントに分割される（ステップＣ２）。次に、フラグメントは、通信下位プロトコルを適用されたＴＣＰヘッダ、フラグメントヘッダ、ＲＰＣデータの構成に変化し、ヘッダ情報が付加される（ステップＣ３）。更に、ネットワーク上の形態には、ヘッダ情報が付加されて、ネットワーク上のパケット長に応じたイーサネット（登録商標）ヘッダ、ＩＰヘッダ、ＴＣＰヘッダ、フラグメントヘッダ、ＲＰＣデータの構成にヘッダ情報が付加される。データ長が２ブロックにまたがる場合は、つづくパケットが、イーサネット（登録商標）ヘッダ、ＩＰヘッダ、ＲＰＣデータの構成になる（ステップＣ４）。
【００２５】
次に、この実施例の動作について図面を参照して説明する。図２を参照すると、まず、オフロードエンジンドライバ４２は、ネットワーク３からのデータ受信の前に図示しない受信バッファを作成し、可変個のアドレス情報をオフロードエンジン５１に渡す（図２のステップＡ１）。オフロードエンジン５１が、ネットワーク３からデータを受信すると（ステップＡ２）、オフロードエンジン５１は上位プロトコル（ＲＰＣ／ＮＦＳ）のデータの区切りを検出する。検出したデータの区切りを境にし、受信バッファに受信したデータを詰める。データを詰め終えると、オフロードエンジンドライバ４２に格納済み情報を通知する（ステップＡ３）。オフロードエンジンドライバ４２は受信データを上位アプリケーション４１に渡す（ステップＡ４）。
【００２６】
このデータの区切りを検出して、受信バッファにヘッダ情報を削除してデータを詰める過程を説明する図５を参照すると、ネットワーク３から受信した受信パケットは、イーサネット（登録商標）ヘッダと、ＩＰヘッダと、ＴＣＰヘッダと、フラグメントヘッダと、データとで構成される場合と、イーサネット（登録商標）ヘッダと、ＩＰヘッダと、データと、でなる場合とがある（図５のステップＤ１）。受信パケットからイーサネット（登録商標）ヘッダ、ＩＰヘッダ、ＴＣＰヘッダのヘッダ情報を除き、フラグメントヘッダと、データと、でなるＴＣＰデータを構築する（ステップＤ２）。次に、フラグメントヘッダにある長さを基にフラグメント部分を受信バッファに詰める（ステップＤ３）。
【００２７】
データを受信バッファに詰めた状態を説明する図７及び図８を参照すると、ＴＣＰ受信データはフラグメントヘッダとデータとでなる（図７のステップＦ１、図８のステップＧ１）。受信バッファのサイズが十分大きい場合は、フラグメントヘッダとデータが、一つの受信バッファに格納され（ステップＦ２）、受信バッファのサイズが小さい場合は、フラグメントヘッダとデータが２バッファ以上に詰められる（ステップＧ２）。
【００２８】
以上の説明によれば、ＮＦＳプロトコルのデータをオフロードエンジ５１で分割できるので、上位アプリケーションのＮＦＳデーモン４１の構造から通信データのバッファリングやその制御を除くことができる。更に、ＮＦＳでやりとりするデータは、（ヘッダ情報＋受け渡すデータ）のようにヘッダ情報が先頭に位置する。このため受けとったデータの先頭を確認することで、次にすべき行動が判断できる。
【００２９】
次に、第２の実施例について図面を参照して説明する。構成を示す図３を参照すると、第２の実施例の構成は、プログラム制御によりアプリケーションを処理するサービスサブシステム６と、通信下位プロトコル実行とデータ分割とを分担するネットワークサブシステム７と、を有し、サービスサブシステム６には、上位アプリケーションとしてＣＩＦＳデーモン６１と、オフロードエンジンドライバ６２と、が搭載され、ネットワークサブシステム７には、オフロードエンジン７１が搭載される。
【００３０】
オフロードエンジン７１は、ハードウェア（以降ＨＷ）とファームウェア（以降ＦＷ）とで構成される。ＦＷは図示しないプロセッサによって、ＨＷの制御を行う。このオフロードエンジン７１ではＣＩＦＳ通信で使用されるＮｅｔＢＩＯＳセッション／ＳＭＢプロトコルのデータ単位への分割と、通信下位プロトコルの実行をサポートする。オフロードエンジン７１と後述するＣＩＦＳデーモン６１との橋渡しをオフロードエンジンドライバ６２が行う。ＣＩＦＳデーモン６１は、渡されるデータがＣＩＦＳで用いるプロトコルのデータ単位で区切られていることを想定した作りになって、簡略化される。
【００３１】
図３を参照して第２の実施例の動作について詳細に説明する。まず、オフロードエンジンドライバ６２は、ネットワーク３からのデータ受信前に受信バッファの可変個のアドレス情報をオフロードエンジン７１に渡す（図３のステップＢ１）。オフロードエンジン７１がネットワーク３からデータを受信すると（ステップＢ２）と、オフロードエンジン７１は上位プロトコル（ＣＩＦＳ／ＳＭＢ）のデータの区切りを検出する。検出したデータの区切りを境にし、図示しない受信バッファに受信したデータをつめる。データを詰め終えるとオフロードエンジンドライバ６２に格納済み情報を通知する（ステップＢ３）。オフロードエンジンドライバ６２は受信データを上位アプリケーションのＣＩＦデーモン６１に渡す（ステップＢ４）。
【００３２】
以上の説明によれば、ＣＩＦＳプロトコルのデータを分割できるように構成されているため、上位アプリケーションの  ＣＩＦＳデーモン６１の構造から通信データのバッファリングやその制御を削除できる。ＣＩＦＳでやりとりするデータは、（ＮｅｔＢＩＯＳセッション用の情報＋ＳＭＢヘッダ情報＋受け渡すデータ）のようにヘッダ情報が先頭に位置する。このため、受けとったデータの先頭を確認することで次にすべき行動が判断できる。
【産業上の利用可能性】
【００３３】
データストリームにて通信を行うネットワーク通信装置の用途に適用できる。
【図面の簡単な説明】
【００３４】
【図１】発明のシステム構成を示す図である。
【図２】第１の実施例の構成を示す図である。
【図３】第２の実施例の構成を示す図である。
【図４】ＲＰＣデータとネットワーク上のデータとデータ表現を説明する図である。
【図５】受信からデータ構築までの関係を説明する図である。
【図６】従来の受信データをバッファに詰める仕方を説明する図である。
【図７】データを大きな受信バッファに詰める仕方を例示する図である。
【図８】データを小さな受信バッファに詰める仕方を例示する図である。
【符号の説明】
【００３５】
１    サービスサブシステム
２    ネットワークサブシステム
３    ネットワーク
１１    上位アプリケーション
１２    オフロードエンジンドライバ
２１    オフロードエンジン
【図１】
2006014143.tif 000003
【図２】
2006014143.tif 000004
【図３】
2006014143.tif 000005
【図４】
2006014143.tif 000006
【図５】
2006014143.tif 000007
【図６】
2006014143.tif 000008
【図７】
2006014143.tif 000009
【図８】
2006014143.tif 000010