JP2006302246A - ネットワークアダプタ、通信システムおよび通信方法 - Google Patents

ネットワークアダプタ、通信システムおよび通信方法 Download PDF

Info

Publication number
JP2006302246A
JP2006302246A JP2005272552A JP2005272552A JP2006302246A JP 2006302246 A JP2006302246 A JP 2006302246A JP 2005272552 A JP2005272552 A JP 2005272552A JP 2005272552 A JP2005272552 A JP 2005272552A JP 2006302246 A JP2006302246 A JP 2006302246A
Authority
JP
Japan
Prior art keywords
host computer
header
packet
network adapter
body data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005272552A
Other languages
English (en)
Other versions
JP5039292B2 (ja
Inventor
Shinji Kobayashi
伸治 小林
Masanobu Araya
正総 新家
Yuichiro Yasujima
雄一郎 安島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005272552A priority Critical patent/JP5039292B2/ja
Publication of JP2006302246A publication Critical patent/JP2006302246A/ja
Application granted granted Critical
Publication of JP5039292B2 publication Critical patent/JP5039292B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】 ホストコンピュータにおけるメモリ間コピーを廃してメモリの使用効率を向上する。
【解決手段】 ヘッダ処理部43が、受信した各パケットをヘッダ部と本体データ部とに分離する。アダプタメモリ12が、各パケットを蓄積する。パケット再構成処理部44が、複数パケットの各ヘッダ部に基づいて新たなヘッダを作成し、新たなヘッダ、およびアダプタメモリ12に蓄積されている複数の本体データ部の各格納位置を示す複数の位置情報40を、ホストコンピュータ2に通知する。DMA制御部13が、ホストコンピュータ2において位置情報40を用いて作成された転送指示に基づいて、アダプタメモリ12から複数の本体データ部を読み出してホストコンピュータ2に転送する。
【選択図】図4

Description

本発明は、ネットワークを介して受信したパケットを、ホストコンピュータに転送する技術に関する。
ネットワークの高速化に伴い、通信を行うホストコンピュータにかかる負荷をどのように軽減させるかが、近年の課題となってきている。現在、広く使われているTCP(Transmission Control Protocol)/IP(Internet Protocol)とSocket API(Socket Application Interface)との組み合わせでは、ホストコンピュータにおける、パケットごとのプロトコル処理およびメモリ間コピーにかかる負荷の軽減が特に課題となってきている。
パケットの送受信においては、送受信されるパケットごとにヘッダの生成や解析等の処理が実行される。より通信を高速化させるためには、送信するパケット1つ当たりのサイズをできる限り大きくし、これらの処理に要する時間を短縮させるのが好ましい。しかし、イーサネット(登録商標)等のネットワークでは、1つのパケットの最大長(MTU、Maximum Transmit Unit)が定められている。例えば、通常のイーサネット(登録商標)では1500バイト、ジャンボフレーム(Jumbo Frame)と呼ばれる拡張機能を用いても9キロバイト程度であるのが一般的である。近年の高速ネットワークにおいては、とりわけ、パケットごとのプロトコル処理がボトルネックとなる可能性がある。
パケットごとの処理を軽減することを目的とする技術としては、例えば、通信ネットワークからパケットを受信する際にヘッダ等のパケット情報をまとめ、ホストコンピュータのCPUにかかる負荷を軽減する技術について開示されている(例えば、特許文献1)。他の例としては、パケットの宛先アドレスから経路を共通とするパケットを複数抽出し、それら複数のパケットを集約して各パケットの情報を含む集約パケットを送信する技術について開示されている(例えば、特許文献2)。さらに他の例として、TCPレベルで、送信側についてのパケットの分割を行う技術や受信側についての組立を行う技術について開示されている(例えば、特許文献3)。
通信を高速化させるための他の技術として、国際出願番号PCTJP04/12006のように、ホストコンピュータにおけるメモリ間コピーに要する時間を短縮させる技術がある。かかる技術によれば、パケットの送信側においては、パケットの本体データ部については、ホストコンピュータのユーザ空間から直接DMA(Direct Memory Access)転送し、ネットワークアダプタのバッファ(送信バッファ)に転送される。ネットワークアダプタのバッファに蓄積されたデータは、生成したヘッダを用いてネットワークに送信される。パケット受信側のネットワークアダプタにおいては、ネットワーク側から受信したパケットをホストコンピュータに転送する際に、ヘッダと本体データとを分離し、まず生成したヘッダをホストコンピュータに転送する。本体データは、ホストコンピュータのソフトウェアがプロトコル処理を実行して、データ配送先のユーザ空間が決定してから転送される。
特開2003−87255号公報(要約、図1および図2、0035段落) 特表2003−003673号公報(要約、請求項1) 特開2002−84289号公報(要約、図1、0008段落)
ネットワークアダプタがホストコンピュータに転送するパケットをネットワークから受信するときに、自装置のメモリ上に連続した1つのパケットとして蓄積されるよう、各パケットを受信することは困難である。すなわち、ネットワーク側から到着したパケットを直ちに解析し、本体データがパケット全体のうちでどの部分に当たるかを判定した上で適当な位置に蓄積しようとすると、ネットワークアダプタ内のメモリ間コピーがオーバヘッドとなり、実現が困難である。そこで、ネットワークアダプタのメモリには、非連続なパケットを、ホストコンピュータのメモリに転送する際に連続した領域になるように転送することになる。なお、かかる技術は、スキャッタ・ギャザー(Scatter Gather)DMAと呼ばれる、一般的な技術であるのでここではその説明を省略する。
ネットワークアダプタに蓄積された本体データのホストコンピュータへの転送の指示は、ホストコンピュータが行う。これを実現するには、ホストコンピュータが、ネットワークアダプタのメモリのうちどこに各本体データが存在するのかを、認識している必要がある。ホストコンピュータが本体データの位置を認識しないで転送処理を実現するには、ネットワークアダプタ内で本体データをまとめたパケットに対してハンドルを発行し、ネットワークアダプタにおいてこのハンドルおよび各本体データの対応関係を管理しなくてはならない。これには、ネットワークアダプタ側における管理コストを要する。
あるいは、ネットワークアダプタのメモリに非連続に蓄積されたパケットの本体データをホストコンピュータに転送する際には、蓄積された各本体データのメモリ上の先頭アドレスおよびデータ長の情報をネットワークアダプタからホストコンピュータに対して通知することが必要となる。従来から用いられてきている一般的なDMA転送においては、これらの情報は、DMAディスクリプタに含めてホストコンピュータに対して通知されることになる。しかし、DMAディスクリプタは固定長であるので、受信するパケットのデータ量が大きくなるほど、上記の先頭アドレスとデータ長との組の数が多くなる。例えば、MTUが1500バイトのイーサネット(登録商標)から受信したパケットを64キロバイト毎にまとめると、上記先頭アドレスとデータ長の組数は44組となる。1つのDMAディスクリプタに対し、かかる多数の情報を格納するための領域を確保しておかなくてはならない。
本発明は、ネットワークから受信したパケットをホストコンピュータに転送する際に、ネットワークアダプタのコスト高を抑制し、かつホストコンピュータのプロトコル処理を簡易に保ったまま、ホストコンピュータにおけるメモリ間コピーを廃してメモリの使用効率を向上させることのできる技術を提供することを目的とする。
本発明のネットワークアダプタは、ネットワークを介して受信した複数のパケットをホストコンピュータに転送するためのものであって、受信した各パケットをヘッダ部と本体データ部とに分離する分離手段と、前記分離手段により分離された各パケットを蓄積するための蓄積手段と、前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成する作成手段と、前記新たなヘッダおよび前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を前記ホストコンピュータに通知する通知手段と、前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する転送手段、を備える。
上記ネットワークアダプタにおいては、受信した複数のパケットが、論理的に、新たなヘッダおよび複数の本体データ部から構成される1つのパケットにまとめられる。新たなヘッダおよび位置特定情報は、本体データ部とは別にホストコンピュータに転送される。本体データ部は、ホストコンピュータにおいて位置特定情報を用いて作成された転送指示に基づいて、そのホストコンピュータのメモリの所定領域に転送される。ホストコンピュータは、新たなヘッダに基づいてプロトコル処理を行い、上記本体データ部の転送先を決定し、複数の本体データ部が転送先のホストコンピュータメモリで連続するように転送指示を作成する。
上記ネットワークアダプタにおいて、前記通知手段は、前記新たなヘッダおよび前記位置特定情報を前記ホストコンピュータにおけるメモリのカーネル空間に対して送信し、前記転送手段は、前記複数の本体データ部を前記ホストコンピュータにおけるメモリのユーザ空間に対して転送するようにしてもよい。この構成においては、ホストコンピュータ内において、本体データ部をカーネル空間からユーザ空間へメモリ間転送する必要がない。
また、前記通知手段は、前記新たなヘッダおよび前記複数の位置特定情報に加えて、その複数の位置特定情報の個数を前記ホストコンピュータに通知するようにしてもよい。この構成においては、ホストコンピュータは、位置特定情報の個数に基づいて、各位置特定情報の格納場所または新たなヘッダの格納場所を認識できる。
本発明によれば、ネットワークアダプタに複雑なバッファ管理機能を設けることなく、複数のパケットを論理的に1つのパケットにまとめてホストコンピュータに転送することができる。また、ホストコンピュータにおいてメモリの利用効率が向上する。
以下、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
図1は、本発明に係る通信システム10において送受信される、パケットの流れを概略的に示した図である。パケットの送信側ホストコンピュータ2Sおよび受信側のホストコンピュータ2Rは、送信側ネットワークアダプタ1(1S)、受信側ネットワークアダプタ1(1R)を介して互いに接続されている。ホストコンピュータ2のメモリ3には、ユーザ空間4とカーネル空間5とがあるが、ここでは、ユーザ空間4におけるデータ(パケット)の送受信、すなわち、ユーザ空間4に格納されたアプリケーションバッファ6のデータを、上記の国際出願番号PCTJP04/12006で記載のCOE(Copy Offload Engine)技術で送受信する場合を考える。
送信側ホストコンピュータ2Sにおけるアプリケーションバッファ6のデータは、COE技術により、カーネル空間5を経由せずに送信側の送信バッファ6に転送され、送信側ネットワークアダプタ1(1S)によってMTUサイズ毎の分割されたパケット(フラグメント)として、ネットワークアダプタ1(1R)に送信される。その後、ネットワークアダプタ1(1R)に受信されたデータは、カーネル空間5を経由せずに受信側ホストコンピュータ2Rのユーザ空間4に対して転送される。受信側におけるパケットのユーザ空間4への転送処理は、ネットワークアダプタ1内の受信バッファのデータに対し、ホストコンピュータ2が行う。上記の背景技術でも説明したように、プロトコル処理は、ホストコンピュータ2のソフトウェアが実行する。
図2は、一般的なDMA転送を実行するためのDMAインタフェースを説明する図である。本実施形態に係るネットワークアダプタ1の動作について説明する前に、まず、一般的なDMA転送におけるネットワークアダプタの動作について、図2を用いて説明する。
ネットワークを介して受信したパケットは、ネットワークアダプタ100に到着した順に、アダプタメモリ(受信バッファ)101に非連続に蓄積される。ネットワークアダプタ100のアダプタメモリ101に蓄積されたパケットは、ホストコンピュータ200のメモリ(ホストメモリ)201にDMAディスクリプタを用いてDMA転送される。
パケットをネットワークアダプタ100から受信するホストコンピュータ200のメモリ201は、ディスクリプタ領域と受信バッファとを含んで構成される。ディスクリプタ領域とはDMA転送に用いられるディスクリプタを格納する領域であり、受信バッファとはネットワークアダプタ100からDMA転送されたパケットをいったん格納するための領域である。
ディスクリプタ領域に配置されるディスクリプタは配列あるいはリストから構成され、パケットデータの読み出しのために必要な情報の格納先についての物理アドレス、ホストコンピュータ200からネットワークアダプタ100へのコマンド、受信パケットの長さおよびステータス等の制御情報を保持している。制御情報のひとつであるステータスによって、ネットワーク側から転送されてくる複数のパケットについて、全て受信したか否かが示される。なお、受信パケットの長さやステータス等の制御情報は、ネットワークアダプタ100によってパケットの受信完了時に更新される。
図3は、本実施形態に係るネットワークアダプタ1を用いて、受信パケットをホストコンピュータ2に転送する動作の概略を説明する図である。本実施形態においては、ネットワーク側から受信したパケットがネットワークアダプタ1のアダプタメモリ12に非連続に格納されると、連続したパケットに再構成する処理をネットワークアダプタ1側においては行わず、受信した複数のパケットのヘッダに基づいて論理的に1つにまとめられたパケットを作成する。そして、その論理的に作成されたパケットのヘッダおよび複数の受信パケットから取り出した複数の本体データ部分がホストコンピュータ2に転送され、ホストコンピュータ2は論理的に作成されたパケットのヘッダに基づいてプロトコル処理を実行する。以下、受信した複数のパケットのヘッダから論理的に作成され、ホストコンピュータ2に転送するための新たなヘッダを、再構成ヘッダ30とする。
ネットワークアダプタ1から転送された再構成ヘッダ30は、ホストコンピュータ2においては、ホストメモリ3のカーネル空間5に格納される。ホストコンピュータ2のプロトコル処理を実行するソフトウェアによって再構成ヘッダ30が処理され、パケットの本体データの転送先が決定される。ここで、パケットの本体データの転送先とは、ホストメモリ3のユーザ空間4上の領域であり、本実施形態においては、ホストコンピュータ2においてメモリ間コピーは行わず、ネットワークアダプタ1のアダプタメモリ12上のパケットの本体データは、直接ホストコンピュータ2のユーザ空間4にDMA転送される。アダプタメモリ12の本体データの格納位置は、本体データの転送に先立って、本体データの位置情報(位置特定情報)としてネットワークアダプタ1からホストコンピュータ2に送信される。
図4は、本実施形態に係るネットワークアダプタ1を用いて構成される、通信システム10のブロック図である。本実施形態においては、上記の通り、通信システム10は、ネットワークアダプタ1およびホストコンピュータ2を含んで構成される。図4を用いて、図3に概略的に示される動作を具体的に実行する際の各装置における機能について説明する。
ネットワークアダプタ1は、MAC(Media Access Control)11、受信バッファ(アダプタメモリ)12、DMA制御部13および制御部14を含む。MAC11は、データリンク層の下位に位置し、データの送受信単位であるフレームの送受信に関し、フレームの形式や誤り検出方法等、所定の方式でデータが送受信されているか否かを規定する。受信バッファ12は、上記の通り、ネットワーク側から受信したパケットや、ホストコンピュータ2からネットワークに向けて送信されるパケットを格納する。DMA制御部13は、ホストコンピュータ2により作成されるコマンド(DMAディスクリプタ)に従ってDMA転送を行う。制御部14は、送受信されるパケットの制御を行う。
ネットワークアダプタ1の制御部14は、チェックサム検算機構部41、COE動作判定処理部42、ヘッダ処理部43およびパケット再構成処理部44を含む。チェックサム検算機構部41は、送受信するパケットが壊れていないか検査するときに用いられるチェックサムの算出や、そのチェックサムを用いて検査を行う。COE動作判定処理部42は、再構成ヘッダ30を用いたパケットの転送を実行するか否かを、分割されたパケット(フラグメント)のサイズ等により判定する。ヘッダ処理部43は、再構成ヘッダ30を作成する。パケット再構成処理部44は、フラグメントの本体データを、ホストコンピュータ2において分割前の順にデータが配列されるために必要な情報を作成する。
ホストコンピュータ2は、メモリ3、ドライバ22および制御部23を含んで構成される。メモリ3は、上記の通り、ネットワークアダプタ1から受信した再構成ヘッダ30やパケットの本体データを格納する領域であり、ユーザ空間4とカーネル空間5とを含む。
ドライバ22は、ネットワークアダプタ1との間でなされるパケットの送受信を制御する。ドライバ22は、通常パケット転送部221とCOEデータ転送部222とを含んで構成される。通常パケット転送部221は、通常のパケット転送を実行する。COEデータ転送部222は、再構成ヘッダ30に基づいて、ネットワークアダプタ1の受信バッファ12に格納されたパケットの本体データの送受信を行う。
メモリ3は、上記の通りユーザ空間4とカーネル空間5とから構成される。ユーザ空間4およびカーネル空間5については、前述の通りであるのでここではその説明を割愛する。
ホストコンピュータ2の制御部23は、本発明に係わる動作としては、ホストコンピュータ2におけるパケットの送受信に関する制御を行う。制御部23は、プロトコル処理部231を含む。プロトコル処理部231は、ネットワークアダプタ1から受信した再構成ヘッダ30に基づいて、プロトコル処理を実行するためのソフトウェアを起動する。
図5は、本実施形態に係る通信システム10におけるホストコンピュータ2の受信バッファに、パケットの本体データの位置情報40と再構成ヘッダ30とを格納することを説明する図である。図5に示されるホストコンピュータ2のカーネル空間5のうち、上部はディスクリプタ領域、下部は受信バッファを表している。
図5において、受信バッファ領域には、ネットワークアダプタ1から送られてくる再構成ヘッダ30および位置情報40が格納される。ここで、位置情報40は、例えば、ネットワークアダプタ1のアダプタメモリ12における、各本体データの先頭アドレス、および各本体データのデータ長から構成される。なお、ネットワークアダプタ1からホストコンピュータ2への再構成ヘッダ30および位置情報40の転送は、後述するヘッダ転送用DMAディスクリプタに従って行われる。
データ転送用のディスクリプタは、位置情報40を利用してホストコンピュータ2によって作成される。ここで、図5のヘッダ転送用ディスクリプタは、先に図2を用いて説明したように、受信バッファの物理アドレス、受信パケットの長さおよびステータス等の情報を含んでいる。
図5において、ディスクリプタ領域におけるステータスについては先に図2を用いて説明した通りである。バッファアドレスには、受信バッファの先頭アドレスが格納される。位置情報数には、アダプタメモリ12における位置情報40の個数、すなわちアダプタメモリ12に蓄積されている本体データの個数についての情報が格納される。そして、ホストコンピュータ2は、位置情報40に基づいてデータ転送用のDMAディスクリプタを作成し、ネットワークアダプタ1は、そのDMAディスクリプタに従ってアダプタメモリ12からパケットの本体データを読み出してホストコンピュータ2へ転送する。転送バイト数には、受信バッファに転送した、再構成ヘッダ30および位置情報40のバイト数が格納される。
なお、図5に示す例においては、受信バッファに格納される情報は、先頭から位置情報40が、続く領域には再構成ヘッダ30が設定されているが、これに限られない。例えば、ホストコンピュータ2が、位置情報40、再構成ヘッダ30の先頭アドレスを設定した後その設定値をネットワークアダプタ1に対して通知することとしてもよい。あるいは、例えば、位置情報40や再構成ヘッダ30の格納領域を定めておき、その領域の先頭に再構成ヘッダ30を格納し、領域の末尾等、所定の位置に位置情報40を格納することとしてもよい。
このように、実施形態の通信システムにおいては、複数の受信パケットに対応する個数の位置情報40がネットワークアダプタ1において作成され、ネットワークアダプタ1からホストコンピュータ2にそれらの位置情報40が通知される際に、その位置情報40の個数もホストコンピュータ2に通知される。したがって、各位置情報40のデータ長が互いに同じであるものとすると、ホストコンピュータ2は、受信バッファ内における各位置情報40の格納アドレスを認識していなくても、先頭の位置情報40の格納アドレスさえ認識していれば、他の任意の位置情報40の格納アドレス(および、場合によっては、再構成ヘッダ30の格納アドレスも)を計算により求めることができる。
図6は、再構成ヘッダ30の構造の一例である。本実施形態において作成される再構成ヘッダ30は、ネットワーク側から受信した、分割されたパケット(フラグメント)のIPヘッダに基づく。ネットワークアダプタ1が、受信したフラグメントのIPヘッダを参照して、送信元、宛先、識別子等が共通するフラグメントについてまとめて1つのパケットとしてホストコンピュータ2に転送するための再構成ヘッダ30を作成する。フラグメントの各本体データは、再構成ヘッダ30に従って1つのパケットとしてプロトコル処理された後に、それぞれ直接ユーザ空間4に転送される。本実施形態においては、まとめるべきフラグメントを他のフラグメントと区別するための、パケットの送信元等の情報を識別情報とする。図6では、「識別子(Identification)」、「プロトコル(Protocol)」、「送信元アドレス(Source Address)」および「宛先アドレス(Destination Address)」がこの識別情報に相当する。
識別子には、分割されたパケットには全て同一の値が格納される。プロトコルは、IPパケットに格納されたデータのプロトコルである。送信元アドレス、宛先アドレスには、それぞれパケットの送信元、送信先のIPアドレスが格納される。
識別情報の各値は、ネットワーク側から受信したパケットのヘッダに基づいて設定される。用いられるヘッダは、例えば、先頭フラグメントのIPヘッダである。受信したそのパケットが先頭フラグメントであるか否かは、ヘッダの「フラグメントオフセット(Fragment Offset、元のデータ中の位置)」の情報を参照して判定する。受信したパケットが先頭フラグメントである場合には、値として「0」が格納されているため、先頭以外のフラグメントとの識別が可能とされる。
再構成ヘッダ30を構成する情報のうち、「パケットの全長(Total Length)」、「MF(More Fragment Flag)」および「ヘッダチェックサム(Header Checksum)」については、アダプタメモリ12にすべてのフラグメントが蓄積されたときに更新される。パケットの全長(Total Length)は、先頭フラグメントのヘッダ長(IHL)、および末尾フラグメントのヘッダ長(IHL)、パケットの全長(Total Length)および「フラグメントオフセット(Fragment Offset)」を元に算出される。フラグメントオフセットには、1つのパケットが複数のフラグメントに分割される前における、データの先頭からのオフセット値が格納されている。
MFに関しては、本実施形態においては分割されたパケットをネットワークアダプタ1においてまとめ、1つのパケットとしてホストコンピュータ2に転送することを表す値として「0」が格納される。ヘッダチェックサム(Header Checksum)は、まとめられたパケットの再構成ヘッダ30が壊れていないか検査する際に用いられ、パケットの全長等の、再構成によって変更された値に基づいて更新、設定される。あるいは、パケットの全長等を更新した後に通常のIPヘッダチェックサム計算によって算出したものを設定してもよい。
図6に示される再構成ヘッダ30の各フィールドのうち、「オプション(Option)」および「パディング(Padding)」については、ヘッダを構成するフィールドとしては、必ずしも設定されている必要はない。図6中に示される他のフィールドについては、パケットの正当性を確認する際に用いられる。例えば、IPのバージョンが「IPv4」である場合、「バージョン(Version)」として「4」が格納される。また、「DF(Don’t Fragment Flag)」は、パケットを分割してよい場合は0、分割してはいけない場合は1が格納される。よって、パケットがフラグメント化されているのに、DFに1が格納されている場合は、そのパケットは正当でないと判定される。「生存時間(Time to Live)」に0が格納されている場合についても同様に正当でないと判定される。
図6に示される再構成ヘッダ30の識別情報は、先頭フラグメントの識別情報を元に作成されている。先頭以外のフラグメントについても同様に、各フラグメントのヘッダ部分には識別情報が格納されている。本実施形態においては、フラグメントのヘッダに含まれる識別情報に基づいて1つにまとめられるべきフラグメントを判断し、ネットワークアダプタ1からホストコンピュータ2に対し、1つのパケットにまとめられるべき複数の本体データ部をホストコンピュータ2に転送する際に必要な情報が通知される。フラグメントのヘッダを元に管理される、本体データの転送に必要な情報を管理情報とする。以下、フラグメントのヘッダの情報をネットワークアダプタ1において管理する方法について説明する。
図7は、管理情報のデータ構造の一例である。フラグメントの識別情報をキーとして検索することにより、各フラグメントにおける本体データ部の、アダプタメモリ12における格納先アドレス、データ長等の情報が得られる。
図7中、最上段に示されるデータ構造を、まとめられる1つのパケットについてのパケット管理情報Pとする。中段に示されるデータ構造を、1番目にアダプタメモリ12に蓄積されたフラグメントについてのフラグメント管理情報F1、下段に示されるデータ構造を2番目のフラグメントについてのフラグメント管理情報F2、以下、N番目のフラグメントについてのフラグメント管理情報FNとする。受信したフラグメントについてのフラグメント管理情報は、本実施形態ではリスト構造により管理される。
アダプタメモリ12に蓄積されたフラグメントについては、順次、パケット管理情報Pの「受信済みフラグメントリスト」に情報が追記され、「受信済みフラグメント数」が加算される。パケット管理情報Pの「タイマ」は、最初に蓄積されたフラグメントについてフラグメント管理情報F1が作成されると初期化され、1つのパケットを分割することにより生成された全てのフラグメントについて、アダプタメモリ12に蓄積される期間を測定する。
最初にアダプタメモリ12に蓄積されたフラグメントについての、フラグメント管理情報F1を例に挙げる。「末尾フラグメントフラグ」には、分割されたデータの最後のフラグメントが他のフラグメントと識別可能になるように設定される。「データグラム内オフセット」には、分割前のパケット(データグラム)においての、先頭からのオフセット値、すなわちヘッダの「フラグメントオフセット」の値が設定される。「データ部分のサイズ」は、フラグメントのうちヘッダを除いた、本体データ部分のデータ長が設定される。「データグラム内オフセット」と「データ部分のサイズ」とから、そのフラグメントが1つのパケットにまとめられた場合に占める位置が算出される。本実施形態においては、これら3つのデータを用いて、パケットを構成する全フラグメントを蓄積したか否かを判定する。
「フラグメントサイズ」は、フラグメント全体のデータ長が設定される。「蓄積したバッファの先頭アドレス」は、アダプタメモリ12において蓄積されている位置のアドレスが設定される。「データ部分のオフセット」は、アダプタメモリ12において、先頭、すなわち蓄積したバッファの先頭アドレスからのオフセット値が設定される。「データ部分の部分チェックサム」は、フラグメント自身のデータに基づいて算出された、パケット(データグラム)が壊れていないか検査するための値が設定される。
アダプタメモリ12には、各フラグメントのヘッダおよび本体データ部が蓄積される。「蓄積したバッファの先頭アドレス」に各フラグメントの「データ部分のオフセット」を加えた値が、ホストコンピュータ2に送信すべき、そのフラグメントの本体データ部分の開始アドレスである。本体データ部分の開始アドレスと、本体データ部分のデータ長である「データ部分のサイズ」とが上記位置情報として、ホストコンピュータ2に通知される。
全てのフラグメントをアダプタメモリ12に蓄積する前にパケット管理情報Pの「タイマ」で計測している期間が所定の期間を超えた場合は、例えば、「蓄積したバッファの先頭アドレス」および「フラグメントサイズ」データを用いて、その時点でアダプタメモリ12に蓄積されているヘッダおよび本体データ部からそれぞれパケットを復元し、それらのパケットをホストコンピュータ2に転送する。
各フラグメントのデータ部分についての部分チェックサムは、再構成によりフラグメントごとにまとめてフラグメント管理情報として保持しておくことで、全てのフラグメントが蓄積された時点で、全ての値を加算してまとめられたパケットについてのチェックサムを求めることができる。このチェックサムに基づいて、TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)のチェックサムを検算することができる。
図8は、フラグメントの本体データ部分を、ディスクリプタを用いて転送させる動作の概略を説明する図である。図7を参照して説明したように、ネットワークアダプタ1が作成した管理情報からDMA転送に必要な情報を通知されると、ホストコンピュータ2は、通知された情報に基づいてDMA転送に用いるディスクリプタを生成する。ホストコンピュータ2によってDMAディスクリプタが作成されると、ネットワークアダプタ1のDMAエンジンは、そのディスクリプタに従ってパケットの本体データのDMA転送処理を実行する。
1つのフラグメントの本体データ部を転送するためのディスクリプタは、ステータス、本体データ部の書込み先ホストアドレス(ホストコンピュータ2における格納先の先頭アドレス)、本体データ部の送信元格納アドレス(ネットワークアダプタ1のアダプタメモリ12の格納アドレス)、および本体データ部のデータ長を含んで構成される。本実施形態においては、書込み先ホストアドレス、送信元アドレスおよびデータ長については、ネットワークアダプタ1から通知された管理情報に基づいて、ホストコンピュータ2が設定する。
ホストコンピュータ2における格納先の先頭アドレスは、ホストコンピュータ2のユーザ空間4における本体データの先頭アドレスである。送信元アドレスは、アダプタメモリ12における本体データの先頭アドレスであり、データ長は、本体データの大きさである。図8の例では、フラグメント1、2についてそれぞれ生成された、ディスクリプタ1、2が示されている。フラグメント2のホストコンピュータ2における先頭アドレスは、フラグメント1の先頭アドレス(図8においては「Host Address」)にフラグメント1のデータ長を加算した値が格納される。ユーザ空間4に転送された本体データは、パケットの構成にしたがって、順に連続して格納される。ネットワークアダプタ1は、各ディスクリプタで指示されたDMA転送処理が完了するごとに、ステータスの値を「完了」ステータスを示す値に設定する。
図9から図11は、本実施形態に係るパケット転送に関するフローチャートである。以下、図面を参照して、本実施形態に係るパケット転送を実現するための処理方法について説明する。
図9は、パケットを受信したネットワークアダプタ1の動作を説明するフローチャートである。
まず、ステップS1で、パケットを受信する。次にステップS2で、受信パケットのIPヘッダが正当であるか否かを判定する。また、宛先IPアドレスがホストコンピュータ2のものであるもののみを正当と見なす。正当と判定されると、ステップS3で、受信パケットのヘッダ部分から識別情報を抽出する。なお、識別情報については、先に図6を参照して説明したのでここでは省略する。
ステップS4では、受信したパケットがIPフラグメントであるか否かを判定する。IPフラグメントである場合、ステップS5で、そのフラグメントが再構成の対象であるか否かが判定される。例えば、本実施形態では、プロトコルはTCPプロトコルであるか否かや、ホストコンピュータに転送するデータサイズは本発明の転送方法を実行するのに適しているか否か等に基づいて判定される。
受信したパケットが、再構成の対象と判定されると、ステップS6で、識別情報が過去に受信したパケットについてのそれと一致するか否かを判定する。一致しない場合、ステップS7で、受信したパケットについての管理情報を新規に作成し、さらに管理情報の「タイマ」を初期化した後にステップS9に進む。なお、ステップS6で識別情報が過去に受信したパケットについての識別情報と一致する場合、ステップS8で、受信したパケットから必要な情報を抽出して管理情報を更新し、ステップS9に進む。なお、ステップS7またはS8において管理情報が作成または更新される際、当該受信パケットの本体データ部についての位置情報(アダプタメモリ12における格納アドレスおよびデータ長)が作成される。
ステップS9では、受信パケットをアダプタメモリ12に蓄積する。ステップS10で、蓄積したパケット先頭のフラグメントであるか否か判定する。なお、先頭のフラグメントのIPヘッダには、フラグメントオフセットの値として「0」が格納されている点については、先に図6を用いて説明した再構成ヘッダと同様である。受信パケットが先頭のフラグメントと判定された場合は、ステップS11に進み、そのフラグメントのヘッダに格納されている情報を再構成ヘッダ30にコピーしてステップS12に進む。先頭フラグメントでない場合は、ステップS11をスキップしてステップS12に進む。
ステップS12では、全てのフラグメントがアダプタメモリ12に蓄積されたか否かを判定する。全フラグメントの蓄積が完了していない場合、さらにステップS13で、タイマが完了しているか否かを判定する。タイマが未完了の場合は特に処理を行わずに終了する。一方、タイマが完了している場合は、ステップS14で、アダプタメモリ12に蓄積されている、識別情報が同一のフラグメントの全てについて、ヘッダも含めてホストコンピュータ2に転送して処理を終了する。
ステップS12の判定において、全フラグメントが蓄積されていた場合、ステップS15で、再構成ヘッダ30の「MF」を0に設定し、フラグメントの管理情報から「パケットの全長」および「ヘッダ(IP)チェックサム」を算出して設定する。ステップ16で、各フラグメントの位置情報、および再構成ヘッダ30をホストコンピュータ2に転送する。なお、位置情報は、上述したように、ステップS7またはS8において受信パケットごとに作成される。ステップS17で、管理情報および再構成ヘッダ30を保持していた領域を解放し、さらにタイマをクリアして処理を終了する。
先のステップS4の判定において受信したパケットがIPフラグメントでない場合、およびステップS5の判定において受信パケットが再構成の対象でないと判定された場合、ステップS18に進み、識別情報が一致するか否かを判定する。一致する場合、先に管理情報の作成されていたパケットについては、データの破損等により誤って管理情報や再構成ヘッダ30が作成されたものと判断し、ステップS19で管理情報、再構成ヘッダ30およびタイマをクリアする。ステップS20で、受信したパケットをそのままの形でホストコンピュータ2に転送し、処理を終了する。なお、ステップS2でIPヘッダが正当でないと判定された場合についてもステップS20に進み、再構成ヘッダ30によるパケット転送は行わない。
なお、本実施形態においては、ステップS2で正当と見なされなかったパケットはステップS20の処理で受信したパケットをそのままの形でホストコンピュータ2に転送することとし、ステップS13でタイマが完了した場合にもステップS14でホストコンピュータ2に転送することとしているが、これに限られない。例えば、ステップS2において、IPヘッダが正当でないパケット(宛先IPアドレスがホストコンピュータ2のものでないために正当とみなされなかったものは除く)や、ステップS13でタイマが完了した全てのフラグメントについては、ネットワークアダプタ1において、廃棄する等でもよい。
図10は、再構成ヘッダ30および位置情報40をホストコンピュータ2に通知する処理についてのフローチャートである。まず、ステップS31で、位置情報40をネットワークアダプタ1内の所定のバッファ領域に書き込む。ステップS32で、ホストコンピュータ2に通知する際にパディングが必要か否かを判定する。パディング不要の場合は特に処理を行わずにステップS34に進むが、パディングが必要な場合は、ステップS33で、バッファにパディングを入れてからステップS34に進む。
ステップS34で、再構成ヘッダ30をネットワークアダプタ1内の所定のバッファ領域に書き込む。ここで、再構成ヘッダ30が書き込まれるバッファは、先に位置情報40を書き込んだバッファとは別のバッファであってもよい。ステップS35で、バッファの内容、すなわち位置情報40および再構成ヘッダ30をホストコンピュータ2のカーネル空間の受信バッファに対して転送する。なお、位置情報40および再構成ヘッダ30をホストコンピュータ2へ転送する処理は、例えば、ホストコンピュータ2により作成されるヘッダ転送用DMAディスクリプタに従う。
ステップS36では、ホストコンピュータ2において作成されているデータ転送用DMAディスクリプタに、再構成ヘッダ30および位置情報40全体のバイト数(ヘッダサイズ)、および位置情報40の数を設定する。ステップS37で、ディスクリプタのステータスとして、「完了」ステータスを設定し、処理を終了する。なお、ステップS31からS37の処理は、ネットワークアダプタ1により行われる。
図11は、ホストコンピュータ2が、フラグメントの本体データをDMA転送するためのデータ転送用DMAディスクリプタを作成する処理についてのフローチャートである。図10の処理の実行によってディスクリプタの転送データのバイト数、位置情報40およびステータスについての設定が完了すると、ホストコンピュータ2は、さらに転送すべき本体データ部の転送元アドレス、転送先アドレス、バイト数、コマンド等の設定を行い、フラグメントの本体データのDMA転送を実行する。
まず、ステップS41で、位置情報40を読み出すためのポインタを初期化する。なお、位置情報40は、図9に示すフローチャートの処理によりネットワークアダプタ1から送信されてきたものである。このとき、カーネル空間5内の受信バッファに含まれる位置情報40の先頭のアドレスが設定される。次に、ステップS42で、転送先ポインタを初期化する。このときホストコンピュータ2のアプリケーションバッファ(ユーザ空間4)の先頭アドレスが設定される。
ステップS43では、位置情報40を読み出すためのポインタが位置情報40の末尾に達したか否かによって、未転送のデータがアダプタメモリ12に存在するか否かを判定する。未転送データが存在する場合、ステップS44に進み、ディスクリプタの転送元(図8における転送元アドレスがこれに対応する)として、位置情報40を読み出すためのポインタが指す位置情報40に設定されている、本体データの先頭アドレスを設定する。ステップS45で、ディスクリプタの転送先(図8におけるホストアドレスがこれに対応する)として、転送先ポインタが指すアドレスを設定する。
ステップS46では、位置情報40を読み出すためのポインタが指す位置情報40に設定されている、本体データのデータ長を、ディスクリプタの転送サイズ(図8におけるデータ長がこれに対応する)に設定する。ステップS47で、ディスクリプタのコマンドを設定する。ネットワークアダプタ1は、受信したコマンドに基づいて、DMAエンジンを駆動する。ステップS48で、位置情報40を読み出すためのポインタが、次の位置情報40を指すようポインタを更新する。ステップS49で、転送先ポインタに、ステップS46で設定した転送サイズを加算した結果を、転送先ポインタに設定し直し、ステップS43に戻る。
以降、ステップS43からステップS49の処理を繰り返し、アダプタメモリ12に蓄積されたフラグメントの本体データが存在しなくなると、ステップS50に進む。ステップS50においては、全ての転送すべきフラグメントについて、ディスクリプタが設定されたとして、ネットワークアダプタ1に対し、DMAを起動するよう指示し、処理を終了する。
以上、本実施形態に係るネットワークアダプタ1を含む通信システムによれば、ネットワークアダプタ1において論理的にフラグメントをまとめてパケットを再構成し、そのヘッダ(再構成ヘッダ30)を、位置情報40(各フラグメントのアダプタメモリ12の先頭アドレスおよびデータ長を表す情報)とともにホストコンピュータ2に通知する。ホストコンピュータ2においては、各フラグメントの先頭アドレスおよびデータ長の情報に基づいて、DMA転送が可能とされる。このとき、受信パケットの本体データ部は、ネットワークアダプタ1からホストコンピュータ2のメモリのユーザ空間4へ直接的に転送されるので、ホストコンピュータ2においてデータのメモリ間コピーは不要となる。よって、メモリの利用効率が向上する。また、ホストコンピュータ2において、プロトコル処理ソフトウェアによる受信バッファの管理が容易になる。
また、実施形態の通信システム10では、ネットワークアダプタ1において各受信パケットのヘッダと本体データ部とが分離され、それらのヘッダ部に基づいて作成された再構成ヘッダ30および各本体データ部の位置情報40のみが本体データ部とは別にホストコンピュータ2のカーネル空間5の受信バッファ領域に転送される。ここで、この受信バッファ領域に書き込まれる再構成ヘッダ30および各本体データ部の位置情報40のデータ量は、一般的なMTU(例えば、1500バイト)と比べて十分に小さいので、本発明の転送方式を実現するために特別なデータ領域を用意する必要はない。
なお、上記実施形態においては、受信したパケットがIPフラグメントである場合について説明しているが、これに限られない。例えば、受信した複数のTCPパケット(セグメント)を論理的にまとめて大きなTCPパケット(セグメント)として再構成し、各セグメントのアダプタメモリ上の先頭アドレスおよびデータサイズを、再構成したヘッダとともにホストコンピュータに通知する手段を備えることで、上記実施形態と同様にパケットの転送を実現することが可能とされる。
(付記1)
ネットワークを介して受信した複数のパケットを、ホストコンピュータに転送するためのネットワークアダプタであって、
受信した各パケットを、ヘッダ部と本体データ部とに分離する分離手段と、
前記分離手段により分離された各パケットを蓄積するための蓄積手段と、
前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成する作成手段と、
前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知する通知手段と、
前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する転送手段と
を備えることを特徴とするネットワークアダプタ。
(付記2)
前記通知手段は、前記新たなヘッダおよび前記位置特定情報を、前記ホストコンピュータにおけるメモリのカーネル空間に対して送信し、
前記転送手段は、前記複数の本体データ部を、前記ホストコンピュータにおけるメモリのユーザ空間に対して転送する
ことを特徴とする付記1に記載のネットワークアダプタ。
(付記3)
前記通知手段は、前記カーネル空間に書き込まれているDMAディスクリプタに従って、前記新たなヘッダおよび前記位置特定情報を該カーネル空間の所定の領域に対して送信する
ことを特徴とする付記2に記載のネットワークアダプタ。
(付記4)
前記通知手段は、前記新たなヘッダおよび前記複数の位置特定情報に加えて、その複数の位置特定情報の個数を前記ホストコンピュータに通知する
ことを特徴とする付記1に記載のネットワークアダプタ。
(付記5)
前記通知手段は、前記ホストコンピュータのメモリ内に予め用意されているバッファ領域の先頭に前記新たなヘッダを送信し、前記複数の位置特定情報を前記バッファ領域の所定位置に送信し、その位置特定情報の送信先アドレスを前記ホストコンピュータに通知する
ことを特徴とする付記4に記載のネットワークアダプタ。
(付記6)
前記通知手段は、前記ホストコンピュータのメモリ内に予め用意されているバッファ領域の先頭に前記新たなヘッダを送信するとともに、そのバッファ領域の末尾に前記複数の位置特定情報を送信する
ことを特徴とする付記4に記載のネットワークアダプタ。
(付記7)
前記通知手段は、前記ホストコンピュータのメモリ内に予め用意されているバッファ領域の先頭に前記複数の位置制御情報を書き込むとともに、その位置特定情報に続く領域に前記新たなヘッダを書き込む
ことを特徴とする付記4に記載のネットワークアダプタ。
(付記8)
前記複数のパケットは、送信装置において1つのパケットを分割することにより得られたものである
ことを特徴とする付記1に記載のネットワークアダプタ。
(付記9)
前記位置特定情報は、それぞれ対応する本体データ部のデータ長を表す情報を含んでいる
ことを特徴とする付記1に記載のネットワークアダプタ。
(付記10)
前記蓄積手段は、前記複数の本体データ部の全てが前記転送手段によって前記ホストコンピュータに転送されると、対応する全てのヘッダ部を廃棄する
ことを特徴とする付記1に記載のネットワークアダプタ。
(付記11)
前記新たなヘッダは、前記複数の本体データ部の全てについて前記蓄積手段に蓄積されたか否かを示すフラグを備え、
前記通知手段は、前記フラグに基づいて前記複数の本体データ部の全てが前記蓄積手段に蓄積されたことを認識すると、前記ホストコンピュータへ前記新たなヘッダおよび前記位置特定情報を転送する処理を開始する
ことを特徴とする付記1に記載のネットワークアダプタ。
(付記12)
前記複数のパケットの中の最初のパケットを受信したときから最後のパケットを受信し終えるまでの時間を計測するタイマ手段、をさらに備え、
前記タイマ手段により計測される時間が所定の時間を超えると、前記転送手段は、それらの受信パケットをそのままホストコンピュータに転送する
ことを特徴とする付記1に記載のネットワークアダプタ。
(付記13)
ホストコンピュータ、およびネットワークを介して受信した複数のパケットを該ホストコンピュータに転送するためのネットワークアダプタを含む通信システムであって、
前記ネットワークアダプタは、
受信した各パケットを、ヘッダ部と本体データ部とに分離する分離手段と、
前記分離手段により分離された各パケットを蓄積するための蓄積手段と、
前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成する作成手段と、
前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知する通知手段と、
前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する転送手段と、を備え、
前記ホストコンピュータは、前記新たなヘッダに基づいて前記複数の本体データ部を組み立てる
ことを特徴とする通信システム。
(付記14)
前記ホストコンピュータは、前記ネットワークアダプタから通知された複数の位置特定情報に基づいて、前記転送指示として前記ネットワークアダプタが実行すべきDMAディスクリプタを作成する
ことを特徴とする付記13に記載の通信システム。
(付記15)
ネットワークを介して受信した複数のパケットをホストコンピュータに転送するための通信方法であって、
受信した各パケットを、ヘッダ部と本体データ部とに分離し、
前記分離された各パケットを蓄積手段に蓄積し、
前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成し、
前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知し、
前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する
処理を含むことを特徴とする通信方法。
(付記16)
ネットワークアダプタに、ネットワークを介して受信した複数のパケットを、ホストコンピュータに転送する転送処理を実行させるネットワーク転送プログラムであって、
前記ネットワークアダプタに、
受信した各パケットを、ヘッダ部と本体データ部とに分離し、
前記分離された各パケットを蓄積手段に蓄積し、
前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成し、
前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知し、
前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する
処理を実行させることを特徴とするネットワーク転送プログラム。(7)
本発明に係る通信システムにおいて送受信される、パケットの流れを概略的に示した図である。 一般的なDMA転送を実行するためのDMAインタフェースを説明する図である。 本実施形態に係るネットワークアダプタを用いて、受信パケットをホストコンピュータに転送する動作の概略を説明する図である。 本実施形態に係るネットワークアダプタを用いて構成される、通信システムのブロック図である。 本実施形態に係る通信システムにおけるホストコンピュータの受信バッファに、パケットの本体データの位置情報と再構成ヘッダとを格納することを説明する図である。 再構成ヘッダの構造の一例である。 管理情報のデータ構造の一例である。 フラグメントの本体データ部分を、ディスクリプタを用いて転送させる動作の概略を説明する図である。 パケットを受信したネットワークアダプタの動作を説明するフローチャートである。 再構成ヘッダおよび位置情報をホストコンピュータに通知する処理についてのフローチャートである。 データ転送用ディスクリプタを作成する処理についてのフローチャートである。
符号の説明
1 ネットワークアダプタ
2 ホストコンピュータ
3 ホストメモリ
4 ユーザ空間
5 カーネル空間
12 アダプタメモリ(受信バッファ)
13 DMA制御部
14 制御部
41 チェックサム検算機構部
42 COE動作判定処理部
43 ヘッダ処理部
44 パケット再構成処理部

Claims (10)

  1. ネットワークを介して受信した複数のパケットを、ホストコンピュータに転送するためのネットワークアダプタであって、
    受信した各パケットを、ヘッダ部と本体データ部とに分離する分離手段と、
    前記分離手段により分離された各パケットを蓄積するための蓄積手段と、
    前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成する作成手段と、
    前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知する通知手段と、
    前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する転送手段と
    を備えることを特徴とするネットワークアダプタ。
  2. 前記通知手段は、前記新たなヘッダおよび前記位置特定情報を、前記ホストコンピュータにおけるメモリのカーネル空間に対して送信し、
    前記転送手段は、前記複数の本体データ部を、前記ホストコンピュータにおけるメモリのユーザ空間に対して転送する
    ことを特徴とする請求項1に記載のネットワークアダプタ。
  3. 前記通知手段は、前記カーネル空間に書き込まれているDMAディスクリプタに従って、前記新たなヘッダおよび前記位置特定情報を該カーネル空間の所定の領域に対して送信する
    ことを特徴とする請求項2に記載のネットワークアダプタ。
  4. 前記通知手段は、前記新たなヘッダおよび前記複数の位置特定情報に加えて、その複数の位置特定情報の個数を前記ホストコンピュータに通知する
    ことを特徴とする請求項1に記載のネットワークアダプタ。
  5. 前記通知手段は、前記ホストコンピュータのメモリ内に予め用意されているバッファ領域の先頭に前記新たなヘッダを送信し、前記複数の位置特定情報を前記バッファ領域の所定位置に送信し、その位置特定情報の送信先アドレスを前記ホストコンピュータに通知する
    ことを特徴とする請求項4に記載のネットワークアダプタ。
  6. 前記通知手段は、前記ホストコンピュータのメモリ内に予め用意されているバッファ領域の先頭に前記新たなヘッダを送信するとともに、そのバッファ領域の末尾に前記複数の位置特定情報を送信する
    ことを特徴とする請求項4に記載のネットワークアダプタ。
  7. ネットワークアダプタに、ネットワークを介して受信した複数のパケットを、ホストコンピュータに転送する転送処理を実行させるネットワーク転送プログラムであって、
    前記ネットワークアダプタに、
    受信した各パケットを、ヘッダ部と本体データ部とに分離し、
    前記分離された各パケットを蓄積手段に蓄積し、
    前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成し、
    前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知し、
    前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する
    処理を実行させることを特徴とするネットワーク転送プログラム。
  8. ホストコンピュータ、およびネットワークを介して受信した複数のパケットを該ホストコンピュータに転送するためのネットワークアダプタを含む通信システムであって、
    前記ネットワークアダプタは、
    受信した各パケットを、ヘッダ部と本体データ部とに分離する分離手段と、
    前記分離手段により分離された各パケットを蓄積するための蓄積手段と、
    前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成する作成手段と、
    前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知する通知手段と、
    前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する転送手段と、を備え、
    前記ホストコンピュータは、前記新たなヘッダに基づいて前記複数の本体データ部を組み立てる
    ことを特徴とする通信システム。
  9. 前記ホストコンピュータは、前記ネットワークアダプタから通知された複数の位置特定情報に基づいて、前記転送指示として前記ネットワークアダプタが実行すべきDMAディスクリプタを作成する
    ことを特徴とする請求項8に記載の通信システム。
  10. ネットワークを介して受信した複数のパケットをホストコンピュータに転送するための通信方法であって、
    受信した各パケットを、ヘッダ部と本体データ部とに分離し、
    前記分離された各パケットを蓄積手段に蓄積し、
    前記複数パケットの各ヘッダ部に基づいて新たなヘッダを作成し、
    前記新たなヘッダ、および前記蓄積手段に蓄積されている複数の本体データ部の各格納位置を示す複数の位置特定情報を、前記ホストコンピュータに通知し、
    前記ホストコンピュータにおいて前記位置特定情報を用いて作成された転送指示に基づいて、前記蓄積手段から前記複数の本体データ部を読み出してホストコンピュータに転送する
    処理を含むことを特徴とする通信方法。
JP2005272552A 2005-03-23 2005-09-20 ネットワークアダプタ、通信システムおよび通信方法 Expired - Fee Related JP5039292B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005272552A JP5039292B2 (ja) 2005-03-23 2005-09-20 ネットワークアダプタ、通信システムおよび通信方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005084002 2005-03-23
JP2005084002 2005-03-23
JP2005272552A JP5039292B2 (ja) 2005-03-23 2005-09-20 ネットワークアダプタ、通信システムおよび通信方法

Publications (2)

Publication Number Publication Date
JP2006302246A true JP2006302246A (ja) 2006-11-02
JP5039292B2 JP5039292B2 (ja) 2012-10-03

Family

ID=37470421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005272552A Expired - Fee Related JP5039292B2 (ja) 2005-03-23 2005-09-20 ネットワークアダプタ、通信システムおよび通信方法

Country Status (1)

Country Link
JP (1) JP5039292B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269346A (ja) * 2007-04-20 2008-11-06 Nuflare Technology Inc データ転送システム
JP2009009250A (ja) * 2007-06-27 2009-01-15 Nec Network & Sensor Systems Ltd 通信システム、通信機器及びそれらに用いるデータ転送方法
WO2009113353A1 (ja) * 2008-03-13 2009-09-17 日本電気株式会社 転送制御装置、多重化フレーム転送システム、転送制御方法、及び転送制御プログラム
JP2009237790A (ja) * 2008-03-26 2009-10-15 Yamaha Corp Dmaコントローラ
JP2011249922A (ja) * 2010-05-24 2011-12-08 Nec Access Technica Ltd ネットワーク装置、tcpパケット受信装置及び方法
JP2012049883A (ja) * 2010-08-27 2012-03-08 Nec Access Technica Ltd 通信装置およびパケット処理方法
JP2019185376A (ja) * 2018-04-10 2019-10-24 日本電信電話株式会社 パケット処理装置およびパケット処理方法
JP2019205051A (ja) * 2018-05-23 2019-11-28 日本電信電話株式会社 パケット処理装置およびパケット処理方法
WO2020217968A1 (ja) * 2019-04-22 2020-10-29 日本電信電話株式会社 パケット処理装置およびパケット処理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62267847A (ja) * 1986-05-16 1987-11-20 Nec Corp Dma転送制御回路
JPH04108242A (ja) * 1990-08-28 1992-04-09 Nec Corp 通信制御装置のデータ転送方式
JPH0962613A (ja) * 1995-08-22 1997-03-07 Dainippon Screen Mfg Co Ltd データ転送装置
JP2003304248A (ja) * 2002-04-09 2003-10-24 Nippon Telegr & Teleph Corp <Ntt> データ転送方法及び装置
JP2004094931A (ja) * 2003-08-11 2004-03-25 Hitachi Ltd ネットワークシステムおよびネットワークにおける通信方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62267847A (ja) * 1986-05-16 1987-11-20 Nec Corp Dma転送制御回路
JPH04108242A (ja) * 1990-08-28 1992-04-09 Nec Corp 通信制御装置のデータ転送方式
JPH0962613A (ja) * 1995-08-22 1997-03-07 Dainippon Screen Mfg Co Ltd データ転送装置
JP2003304248A (ja) * 2002-04-09 2003-10-24 Nippon Telegr & Teleph Corp <Ntt> データ転送方法及び装置
JP2004094931A (ja) * 2003-08-11 2004-03-25 Hitachi Ltd ネットワークシステムおよびネットワークにおける通信方法

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269346A (ja) * 2007-04-20 2008-11-06 Nuflare Technology Inc データ転送システム
JP2009009250A (ja) * 2007-06-27 2009-01-15 Nec Network & Sensor Systems Ltd 通信システム、通信機器及びそれらに用いるデータ転送方法
WO2009113353A1 (ja) * 2008-03-13 2009-09-17 日本電気株式会社 転送制御装置、多重化フレーム転送システム、転送制御方法、及び転送制御プログラム
JPWO2009113353A1 (ja) * 2008-03-13 2011-07-21 日本電気株式会社 転送制御装置、多重化フレーム転送システム、転送制御方法、及び転送制御プログラム
JP2009237790A (ja) * 2008-03-26 2009-10-15 Yamaha Corp Dmaコントローラ
JP2011249922A (ja) * 2010-05-24 2011-12-08 Nec Access Technica Ltd ネットワーク装置、tcpパケット受信装置及び方法
JP2012049883A (ja) * 2010-08-27 2012-03-08 Nec Access Technica Ltd 通信装置およびパケット処理方法
JP7056337B2 (ja) 2018-04-10 2022-04-19 日本電信電話株式会社 パケット処理装置およびパケット処理方法
JP2019185376A (ja) * 2018-04-10 2019-10-24 日本電信電話株式会社 パケット処理装置およびパケット処理方法
JP2019205051A (ja) * 2018-05-23 2019-11-28 日本電信電話株式会社 パケット処理装置およびパケット処理方法
WO2019225379A1 (ja) * 2018-05-23 2019-11-28 日本電信電話株式会社 パケット処理装置およびパケット処理方法
US11321255B2 (en) 2018-05-23 2022-05-03 Nippon Telegraph And Telephone Corporation Packet processing device and packet processing method
JP7102936B2 (ja) 2018-05-23 2022-07-20 日本電信電話株式会社 パケット処理装置およびパケット処理方法
WO2020217968A1 (ja) * 2019-04-22 2020-10-29 日本電信電話株式会社 パケット処理装置およびパケット処理方法
JP2020178303A (ja) * 2019-04-22 2020-10-29 日本電信電話株式会社 パケット処理装置およびパケット処理方法
JP7331431B2 (ja) 2019-04-22 2023-08-23 日本電信電話株式会社 パケット処理装置およびパケット処理方法

Also Published As

Publication number Publication date
JP5039292B2 (ja) 2012-10-03

Similar Documents

Publication Publication Date Title
US7561573B2 (en) Network adaptor, communication system and communication method
JP5039292B2 (ja) ネットワークアダプタ、通信システムおよび通信方法
US11249688B2 (en) High-speed data packet capture and storage with playback capabilities
US7813342B2 (en) Method and apparatus for writing network packets into computer memory
US8255600B2 (en) Method and system for interlocking data integrity for network adapters
US11392317B2 (en) High speed data packet flow processing
JP2007266759A (ja) ネットワーク処理装置、マルチプロセッサシステムおよびネットワークプロトコル処理方法
US11128740B2 (en) High-speed data packet generator
JP2008512797A (ja) 決定性有限オートマトン(dfa)処理
US10990326B2 (en) High-speed replay of captured data packets
JP2002538731A (ja) 高性能ネットワークインターフェースにおけるダイナミックな構文解析
US20050135395A1 (en) Method and system for pre-pending layer 2 (L2) frame descriptors
JP2007208963A (ja) パケット処理装置及びパケット処理方法
US9866639B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
US20110145469A1 (en) Apparatus for processing peripheral component interconnect express protocol
JP6189898B2 (ja) アクティブメッセージによるrmaapiのサポート
US20140105226A1 (en) Communications over multiple protocol interfaces in a computing environment
US11704063B2 (en) Efficient storage architecture for high speed packet capture
US9961147B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
CN113783800A (zh) 数据包处理方法、装置、计算机设备及可读存储介质
JP2002538721A (ja) 高性能ネットワークインターフェースにおけるネットワークトラフィックを分類するための方法および装置
JP4657529B2 (ja) パケット情報収集装置及びその方法
JP2003304248A (ja) データ転送方法及び装置
JP2007274056A (ja) データグラム再組立装置
JP4786575B2 (ja) コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080321

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120406

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120709

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees