JP2000341333A - ネットワークパケット送受信方法およびネットワークアダプタ - Google Patents

ネットワークパケット送受信方法およびネットワークアダプタ

Info

Publication number
JP2000341333A
JP2000341333A JP11151137A JP15113799A JP2000341333A JP 2000341333 A JP2000341333 A JP 2000341333A JP 11151137 A JP11151137 A JP 11151137A JP 15113799 A JP15113799 A JP 15113799A JP 2000341333 A JP2000341333 A JP 2000341333A
Authority
JP
Japan
Prior art keywords
packet
transmission
network
network adapter
received
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.)
Pending
Application number
JP11151137A
Other languages
English (en)
Inventor
Ryuichi Ono
隆一 大野
Koichi Shibata
巧一 柴田
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP11151137A priority Critical patent/JP2000341333A/ja
Publication of JP2000341333A publication Critical patent/JP2000341333A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

(57)【要約】 【課題】本発明は高速ネットワーク上でデータパケット
を送受信する際のCPUに対する割り込み等のオーバヘ
ッドを削減するための方法および装置を提供することに
ある。 【解決手段】IPフラグメントを受信した際に、割り込
みを上げるのを、後続のフラグメントが存在しない場
合、既に割り込みが上がっているIPパケット中のフラ
グメント受信時、または、次の受信パケットが持つはず
のIP識別子のさらに次以降のIP識別子を持つIPフ
ラグメント受信時のみに絞ることで、パケット紛失や受
信順序誤りが無い場合には大幅に割り込みを削減でき、
パケット紛失や受信順序誤りが有る場合には適宜割り込
みが上がることで受信処理が不必要に待たされることも
無くなる。つまり、意味の無い割り込みを削減すること
が可能となる。さらに、相手先ごとのフローを時間帯ご
とに記述したテーブルに基づいた送出制御を行うこと
で、予め受信側ネットワークアダプタの速度がわかって
いる場合等には無駄な送出を抑え、適切なフローのデー
タをネットワークに送り出すことが可能となる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はネットワークで接続
されたコンピュータにおける、各コンピュータ上のネッ
トワークアダプタのアーキテクチャに関し、特に高速ネ
ットワーク上でデータパケットを送受信する際のCPU
に対する割り込み等のオーバヘッドを削減するための方
法および装置に関する。
【0002】
【従来の技術】ネットワークを介して文字情報から画像
情報まで様々な種類のデータがコンピュータ間でやり取
りされている。これらのコンピュータ間通信においては
イーサネット(登録商標)規格に基づくローカルエリア
ネットワークが普及している。また、OSI参照モデル
で規定されるプロトコル階層においてネットワーク層、
及び、トランスポート層に相当するプロトコルスタック
としては、TCP/IPプロトコルがよく知られてい
る。
【0003】イーサネットでは、その最大転送単位(M
TU)は1500バイトに制限される。このため、MT
Uサイズよりも大きいパケットはIP層で分割されてか
ら送出され、受信側で再び組み立てられるが、パケット
送受信のたびに割り込み処理が起動される。たとえば、
65536バイトのパケットを送受信する場合、送信側
では44回の送信完了割り込みが、受信側では44回の
受信完了割り込みが発生する。
【0004】イーサネット規格では、伝送媒体の速度に
かかわらず、最大転送単位は1500バイトに制限され
ため、各コンピュータは伝送媒体が1Gb/sの場合、
10Mb/sの場合と比較して単位時間当たり100倍
の割り込みを処理する必要がある。 この割り込みのオ
ーバヘッドによりCPU負荷が増大し、伝送路の帯域を
使い切るためのボトルネックとなってきている。
【0005】このような割り込み処理のオーバヘッドに
よるCPUの負荷を削減するため、前の割り込み以降に
指定の時間以内に割り込みが到着し、かつ、そのパケッ
トが前の割り込み以降、N番目のパケットではない場
合、割り込みを発生させないようにすることで割り込み
数を調整する方法が、“バースト高速ネットワーク・ト
ラフィックを受信するための割り込み調整器”(特開平
9−223091)に記載されている。また、同じく割
り込み処理のオーバヘッドによるCPUの負荷を削減を
狙い、送信側で1つのメッセージを複数のパケットに分
割し、各パケットヘッダ部に受信終了割り込みビットを
設け、最後の分割パケットヘッダ中でこの割り込みビッ
トをセットすることで受信終了時に割り込みを発生させ
るようにする方法が“プロセッサ間通信方法及び装置”
(特開平8−6912)に記載されている。
【0006】
【発明が解決しようとする課題】かかる従来の方法にお
いては、次のような問題がある。
【0007】最初の方法では、どのような種類のパケッ
トであるかに関わらずパケット受信のタイミングにより
無作為に割り込みが上がるパケットと上がらないパケッ
トに分類されてしまい、次のパケットが到着しないため
に割り込みが上がらず、受信処理が遅れるといった問題
が発生する。例えば、イーサネット上でTCP/IPプ
ロトコルの伝送を行っているときに、65536バイト
のデータを1500バイトで分割した44個のIPフラ
グメントを受信した場合、44個目のフラグメントで割
り込みが上がらなければ(他のフラグメント受信時に割
り込みが上がっても)次のパケットを受信するまでこの
IPパケットを再構成することはできず、受信処理は待
たされることになる。この次のパケットはいつ到着する
かわからないため、場合によってはアプリケーションや
トランスポート層でのタイムアウト待ちとなり、スルー
プットの大幅な低下を引き起こす。
【0008】2つ目の方法では分割パケットが順序通り
到着しなかった場合、例えば最後の分割パケット到着後
に途中のパケットが到着した場合、最後の分割パケット
到着時に割り込みが上がるだけで、遅れて到着した途中
のパケット受信時には割り込みが上がらず受信処理が遅
れるという問題が発生する。例えば、イーサネット上で
TCP/IPプロトコルの伝送を行っているときに、6
5536バイトのデータを1500バイトで分割した4
4個のIPフラグメントを受信した際に、20個目〜3
0個目のフラグメントが44個目のフラグメントよりも
後で到着したとすると、44個目のフラグメント受信時
に割り込みが上がっても、20個目〜30個目のフラグ
メント受信時には割り込みが上がらないため、次のパケ
ットを受信するまでこのIPパケットを再構成すること
はできず、受信処理は待たされることになる。この次の
パケットはいつ到着するかわからないため、場合によっ
てはアプリケーションやトランスポート層でのタイムア
ウト待ちとなり、スループットの大幅な低下を引き起こ
す。また、この方法では分割パケットヘッダ中に割り込
みフラグを設ける必要があるため、従来のIPパケット
を送受信するネットワークアダプタと、パケット送受信
をおこなうことはできない。
【0009】さらに、複数のルータ等のネットワーク中
継装置を介して1Gb/sのネットワークアダプタと1
0Mb/sのネットワークアダプタが接続されている場
合や、1Gb/sのネットワークアダプタ同士が接続さ
れているが、時間帯により輻輳が発生し、受信側のネッ
トワークアダプタもしくは中継装置が10Mb/s程度
でしか受けられない場合等には、1Gb/sのネットワ
ークアダプタからその帯域をフルに使って送出されるパ
ケットはどこかのネットワーク中継装置またはネットワ
ークアダプタにおいて大量に破棄されることとなる。つ
まり、ネットワーク中の資源が大量に浪費される。この
ような場合、ネットワーク中継装置がパケット破棄を検
知し、TCP/IPプロトコルのICMPパケットによ
り送信側コンピュータに対し輻輳通知を行うことで輻輳
を回避する方法がある。しかし、ICMPは必ずしもす
べてのネットワーク中継機器がサポートしているわけで
はない。また、ICMPを受け取った送信側コンピュー
タの動作は規定されていないため、場合によっては必要
に送出を抑制し、スループットの低下を引き起こす。
【0010】つまり、上記従来の方法では、高速伝送路
を介して通信を行う場合に生じる割り込み処理のオーバ
ヘッドを効果的に削減できないという問題と、高速送出
可能ななネットワークアダプタから低速なネットワーク
へのパケット送信時にネットワーク上のデータフローを
うまく制御できないという問題があった。
【0011】本発明の目的は、上記問題を解決するもの
であり、コンピュータ上でのCPUへの割り込み数を効
果的に削減可能なネットワークアダプタを提供すること
にある。また他の目的は、スループットの異なるネット
ワークへも適切なフローでデータを送出するネットワー
クアダプタを提供することにある。
【0012】
【課題を解決するための手段】上記目的は、パケットの
送出制御と受信制御をつぎのようにおこなうことにより
達成される。
【0013】パケット送信制御の場合、ネットワークア
ダプタとネットワークドライバは、プロトコル制御プロ
グラムに対して、伝送媒体の最大転送単位を規格値より
大きい値を通知しておき(例えば、イーサネット上でT
CP/IPプロトコルを使用する場合には、規格では1
500Bytesが最大転送単位だが、64KByte
sと通知する)、伝送媒体の最大転送単位よりも大きい
サイズの送信パケットが本ネットワークアダプタに渡さ
れるようにする。ネットワークアダプタでは、送信パケ
ットのサイズが伝送媒体の最大転送単位よりも大きいか
調べ、大きい場合には複数のパケットに分割し、パケッ
トの分割情報をパケットのヘッダーエリアに記述し、ネ
ットワークに送出する。そして、分割前の送信パケット
一つにつき一回の送出完了割り込みをCPUに通知す
る。これにより、送信パケットの送出割り込みの発生回
数を少なくできる。
【0014】パケット受信制御の場合、ネットワークア
ダプタとネットワークドライバは、受信パケットが分割
パケットで、つぎのパケットを受信した時にCPUに割
り込みを通知する。後続の分割パケットが無いパケット
受信した(分割した最後のパケット)時、または、既に
割り込みが上がっている送信パケット中の分割パケット
を受信した時、または、次の受信パケットが持つはずの
分割識別子のさらに次以降の分割識別子を持つ分割パケ
ットを受信した時に、CPUにパケット受信割り込みを
通知するようにする。この割り込みを受けてCPUは、
ネットワークドライバの割り込み処理ルーチンを起動
し、分割パケットの組立てをおこない、プロトコル制御
プログラムに1つの受信パケットとしてデータを渡す。
これにより、パケット紛失や受信順序誤りが無い場合に
は大幅に割り込みを削減でき、パケット紛失や受信順序
誤りが有る場合には適宜割り込みが上がることで受信処
理が不必要に待たされることも無くなる。
【0015】特に、TCP/IPプロトコルのIPパケ
ットを送受信する場合には、IPヘッダー部の相当エリ
アに分割するパケット情報を格納するようにする。これ
により、従来IPプロトコル制御プログラムでおこなっ
ていたIPパケットの分割・組立てを、ネットワークア
ダプタとネットワークドライバでおこない、IPフラグ
メント(分割されたIPパケット)ごとに発生していた
割り込みを低減することができる。
【0016】また、本ネットワークアダプタ中に相手先
ごとのフローを記述したテーブル(フローテーブル)を
設け、このフローテーブルに基づきネットワークアダプ
タからネットワークへパケットを送出する際の送出制御
を行う。例えば、相手先としてはIPアドレス、IPア
ドレスとTCP/UDPポートの組、等を指定する。ま
た、フローとしては時間帯ごとの最大転送レート等を指
定する。
【0017】このように相手先ごとのフローを記述した
テーブルに基づいた送出制御を行うことで、予め受信側
ネットワークアダプタの速度がわかっている場合や予め
時間帯ごとにネットワーク上を転送可能な最大速度を推
定できる場合には無駄な送出を抑え、適切なデータをネ
ットワークに送り出すことが可能となる。
【0018】
【発明の実施の形態】以下、本発明の実施の形態を、イ
ーサネットでTCP/IPプロトコル通信をおこなった
場合を例に、詳細に説明する。
【0019】図1は、本発明に係わるシステム構成、及
び、プロトコルモジュール階層を示すブロック図であ
る。また、図2は図1の送出制御部の処理手順を示すフ
ローチャートであり、図3は図1のパケット抽出部及び
割り込み制御部を示すフローチャート、図4、図5は図
1のネットワークドライバにおける送出処理、割り込み
処理を示すフローチャート、図6は図1のネットワーク
アダプタにおけるフローテーブルである。また、図7は
IPパケットのフォーマットを示している。図8はIP
パケットの分割の一例を示している。図9は本発明のネ
ットワークアダプタを含む複数のネットワークアダプタ
がネットワークを介して接続されている場合の一例を示
す。図10は図1のネットワークアダプタにおけるIP
状態保持領域である。図11は図1のネットワークアダ
プタにおける送出パケット保持領域である。
【0020】図1において、コンピュータ100はディ
スプレイ118、キーボード116、CPU114、磁
気ディスク112、ネットワークアダプタ120、主メ
モリ130から構成される。ディスプレイ118、キー
ボード116、磁気ディスク112、ネットワークアダ
プタ120、主メモリ130はCPU114よりバスを
介してアクセスされる。主メモリ130にはネットワー
クドライバ132、プロトコルスタック134がロード
され、ワークエリア136が確保されている。
【0021】ネットワークアダプタ120は送出制御部
122、パケット抽出部124、割り込み制御部126
から構成される。送出制御部122中にはフローテーブ
ル保持領域152、送出パケットリスト保持領域15
4、計時用カウンタ156が存在する。計時用カウンタ
156はフローテーブル中の時間帯による送出制御を行
う場合に現在時刻を知るのに用いるカウンタで、一定ク
ロックごと(例えば、1秒ごと)に増加する。また、割
り込み制御部126中にはIP状態保持領域150が存
在する。
【0022】ネットワークドライバ132はネットワー
クアダプタ120を制御するためのソフトウェアに相当
し、OSI参照モデルで規定されるプロトコル階層にお
いて主に物理層、データリンク層に相当するプロトコル
モジュールである。
【0023】プロトコルスタック134はOSI参照モ
デルで規定されるプロトコル階層において主にネットワ
ーク層、トランスポート層、及びそれよりも上位の層に
相当するプロトコルモジュールであり、ネットワークド
ライバ132の機能を利用して2つのコンピュータ上の
アプリケーション等のソフトウェア間の通信を行うため
の機能を提供する。代表的なプロトコルスタックとして
は、TCP/IPがある。
【0024】ワークエリアはモジュール間でのデータの
やりとりの際に使用されるメモリ領域である。
【0025】図6は図1のネットワークアダプタ120
上に存在するフローテーブル152の一例を示す。IP
アドレスは相手先を指定するのに用いる。また、フロー
の指定としては時間帯ごとの最大送出レートを用いる。
つまり、時間帯A610と時間帯A最大送出レート61
5のペア、時間帯B620と時間帯B最大送出レート6
25のペア、といったように時間帯とその時間帯の最大
送出レートのペアによりフローを指定する。
【0026】なお、本フローテーブルは図9のネットワ
ークアダプタの接続例において、ネットワークアダプタ
910上に存在するフローテーブルの一例である。本フ
ローテーブルでは、IPアドレス123.45.67.
8に対しては常時最大送出レートを10Mb/sに抑え
る。同様に、IPアドレス123.45.67.22に
対しては常時最大送出レートを100Mb/sに、IP
アドレス123.45.67.77に対しては7時〜1
9時の時間帯では最大送出レートを1000Mb/s
に、19時〜7時の時間帯では最大送出レートを100
Mb/sに抑える。なお、本テーブルに記述されていな
いIPアドレスに対しては送出レートを抑えることはな
い。
【0027】図7はIPパケットのフォーマットを示し
ている。IDENT725はIPパケットが分割される
際に各IPフラグメントがばらばらにならないように識
別するための値を入れる。この識別子は、通常1ずつ単
純に増加していく値である。FLAGS730は後続の
フラグメントが存在すること等を示すフラグである。F
RAGMENT OFFSET750はIPフラグメン
トが元のIPパケットのどの位置からのデータを保持し
ているかを示す値で、8Bytes単位の値を示してい
る。
【0028】図8はIPパケットの分割の一例を示して
いる。本例では、IPヘッダ20Bytes,データ3
500バイトからなる3520バイトのIPパケットが
最大転送単位1500バイトの制約により3分割される
場合の例を示している。
【0029】図10は図1のネットワークアダプタ12
0上に存在するIP状態保持領域の一例を示す。IPア
ドレスは相手先を示す。また、最新割り込み済みIP識
別子は各相手先ごとに存在し、IPの受信割り込み状態
を示す情報である。なお、本IP状態保持領域は図9の
ネットワークアダプタの接続例において、ネットワーク
アダプタ910上に存在するIP状態保持領域の一例で
ある。本IP状態保持領域では、IPアドレス123.
45.67.8からの最新割り込み済みIP識別子は7
7である。同様に、IPアドレス123.45.67.
22からの最新割り込み済みIP識別子は38に、IP
アドレス123.45.67.77からの最新割り込み
済みIP識別子は19となっている。なお、本領域に記
述されていないIPアドレスからのIPパケットによる
受信割り込みは発生しておらず、はじめて受信割り込み
が発生した時点で本領域にIPアドレスとIP識別子の
組が追加される。
【0030】図11は図1のネットワークアダプタ12
0上に存在する送出パケットリストの一例を示す。IP
アドレス1100は相手先を指定するのに用いる。ま
た、送出カウンタ1105はフローテーブル中の時間帯
ごとの最大送出レートに応じて増加するカウンタ、次送
出待ちパケット情報へのポインタ1110は次送出待ち
パケット情報へのポインタを示している。また、送出待
ちパケット情報1115は現在送出中または送出待ち状
態のパケットに関する情報として、次の送出待ちパケッ
ト情報へのポインタ、IPヘッダ情報、現在の送出位置
等の送出状態を含む。なお、本パケットリストは図9の
ネットワークアダプタの接続例において、ネットワーク
アダプタ910上に存在するパケットリストの一例であ
る。本パケットリストでは、IPアドレス123.4
5.67.8に対しては送出カウンタが2010で、2
つの送出待ちパケットが存在する。同様に、IPアドレ
ス123.45.67.22に対しては送出カウンタが
0で1つの送出待ちパケットが存在し、IPアドレス1
23.45.67.77に対しては送出カウンタが10
00で送出待ちパケットは存在しない。また、4つめ
の、IPアドレスがAnyとなっているパケットリストは
フローテーブルに存在しない任意のIPアドレスへの送
出パケットリストであり、送出カウンタは無限大、つま
り何時でも送出可能状態である。このパケットリストに
は2つの送出待ちパケットが存在する。
【0031】次に、図1の各部の動作を図2、図3、図
4、図5の各フローチャートに基づいて説明する。
【0032】まず、図4のフローチャートに基いて図1
のネットワークドライバ132の送出処理の動作を説明
する。ここで、送出に先立って、ネットワークドライバ
132は、IPパケットを構築するプロトコルスタック
134に対しては伝送媒体の最大転送単位を実際より大
き目に通知しておく(例えば、実際は1500Byte
sでも64KBytesと通知する)ものとする。ネッ
トワークドライバ132は、まず、プロトコルスタック
134からパケット送出要求を受け取る(ステップ40
0)。この際に、受け渡されたパケットがIPパケット
であるかどうか判別(ステップ405)し、IPパケッ
トでない場合、伝送媒体の最大転送長以下か(ステップ
415)調べ、最大転送長より大きい場合プロトコルス
タック134へエラーを返す(ステップ425)。それ
以外の場合、及び、IPパケットの場合にはネットワー
クアダプタ120へ送出パケットを受け渡す(ステップ
420)。好ましい実施形態では、この送出パケットの
受け渡しはCPU114を介さず、DMA技法を使用し
ネットワークドライバ132上のバッファからネットワ
ークアダプタへ直接行われる。
【0033】次に、図2のフローチャートに基き、図
6、図7、図8、図9、図10、図11などを参考にし
ながら、図1のネットワークアダプタ120中の送出制
御部122の動作を説明する。送出制御部122は、ま
ず、ネットワークドライバ132から送出要求を受け取
り(ステップ200)、送出パケットのヘッダを調べI
Pパケットかどうか判定する(ステップ205)。IP
パケットでない場合、送出パケットの構築及びネットワ
ークへの送出を行い(ステップ240)、CPUに送出
完了割り込みを上げる(ステップ250)。IPパケッ
トの場合、相手先IPアドレスごとに存在する送出パケ
ットリストにこのパケットを挿入する(ステップ21
0)。この相手先IPアドレスごとに存在する送出パケ
ットリストを用いることで相手先IPアドレスごとの送
出制御を行う。ここで、送出制御をIPアドレスだけで
なく、TCP/UDPポートに対しても行いたい場合、
ポートごとに送出パケットリストを作成し、送出を制御
する必要がある。この相手先IPアドレスごとに存在す
る送出パケットリストは各相手先IPアドレスごとに送
出レートに応じて増加するカウンタである送出カウンタ
1105と、現在送出中もしくは送出待ちのIPパケッ
トに関する情報である送出待ちパケット情報1115を
持つ。この、送出カウンタはクロックに応じて増加し、
このカウンタが次の送出パケットのバイト数を超えると
次のパケットを送出できる。また、パケット送出の度に
カウンタの値は送出パケットの大きさ分減らされる。こ
のパケットは上限を持ち、この一定の上限値以上には増
えない。また、送出待ちパケット情報は各IPパケット
のヘッダ情報、分割が必要かを示すフラグ、分割が必要
な場合の次の送出IPフラグメントのオフセット、DM
Aによりネットワークドライバ132上のバッファから
データを受け渡す際に必要なアドレス情報等である。次
に、パケット長から分割が必要なパケットであるか調べ
(ステップ215)、必要な場合、IPヘッダ部分をカ
ード上のメモリ(送出待ちパケット情報のIPパケット
ヘッダ情報保持領域)に保持する(ステップ220)。
このIPヘッダ情報は、後にIPフラグメントを構築す
る際に用いられる。次に、送出カウンタを参照し、次の
パケットを送出することができるか調べ(ステップ22
5)、送出不可の場合、送出可能になるまで待つ。図6
の例では、IPアドレス123.45.67.8に対し
て送出を行う場合、このIPアドレスに対する送出パケ
ットリストに挿入された順番で、10Mb/sの最大送
出レートを守りながら次々とパケットが送出される。つ
まり、既に挿入されているパケットが全て送出を終え、
かつ、次のパケットを送出しても10Mb/sの送出レ
ートを超えない場合に、次のパケットの送出が可能とな
る。次のパケットが送出可能な場合、分割が必要なパケ
ットであるかどうか調べ(ステップ230)、必要な場
合、次に送出するIPフラグメントを構築する(ステッ
プ235)。図8はIPパケットの分割の一例を示して
いる。本例では、IPヘッダを含め3520Bytes
のIPパケットが最大転送単位1500バイトの制約に
より3分割される。ここで、IDENTは3つのIPフ
ラグメントとも、オリジナルのIPパケットのIDEN
Tである777となっている。また、FLAGSは最初
のIPフラグメントと第2のIPフラグメントが0x0
1となっており、後続のフラグメントが存在することを
示しているのに対し、第3のフラグメントでは0x00
となっており、最後のフラグメントであることがわか
る。また、FRAGMENT OFFSETについては
最初のIPフラグメントが0で、オフセットが0Byt
e、第2のIPフラグメントが185でオフセットはそ
の8倍の1480Bytes、第3のIPフラグメント
が370でオフセットは2960Bytesであること
がわかる。また、IPヘッダ中のTOTAL LENG
TH720や、HEADER CHECKSUM750
等のフィールドはIPフラグメント構築の際に新たに計
算し直されるが、それ以外のフィールドはオリジナルの
IPパケットのヘッダと同じ値を用いる。次に、送出パ
ケットを構築し、ネットワークに送出する(ステップ2
40)。ここで、データリンク層がイーサネットの場
合、イーサネットのヘッダ、及び、フレームチェックシ
ーケンスを付加する。また、トークンリング等、他のデ
ータリンク層のフレーム仕様についても、同様に送出フ
レームを構築し、最大転送単位を仕様に合わせることで
サポートする。次に、送出を終えたパケットの後続のI
Pフラグメントが存在するか調べ(ステップ245)、
存在する場合には次のIPフラグメントに対しステップ
225からの処理を繰り返す。後続のIPフラグメント
が存在しない場合、CPUに送出完了割り込みを上げ
(ステップ250)、送出を完了する。
【0034】次に、図3のフローチャートに基き、図1
のネットワークアダプタ120中のパケット抽出部12
4及び割り込み調整部126の動作を説明する。パケッ
ト抽出部124はネットワークからパケットを受け取る
(ステップ300)と、受信パケットをネットワークド
ライバ132上の受信バッファに転送(ステップ35
5)し、そのパケットがIPパケットであるかどうか調
べ(ステップ305)、IPパケットでない場合にはC
PUに受信割り込みを上げる(ステップ345)。IP
パケットの場合、IPパケット割り込み調整部320の
処理を行う。IPパケット割り込み調整部320では、
まず、後続のフラグメントが存在しないか調べる(ステ
ップ315)。後続のフラグメントが存在しない場合、
IP状態保持領域150中のIP識別子1005を、受
信したIP識別子が最新の場合その値に更新し(ステッ
プ355)、CPUに受信割り込みを上げる(ステップ
345)。後続のフラグメントが存在する場合、既に割
り込みの上がっているIP識別子を持つフラグメントで
あれば(ステップ325)CPUに受信割り込みを上げ
る(ステップ345)。後続のフラグメントが存在し、
既に割り込みの上がっているIP識別子を持つフラグメ
ントでなければ、次の受信パケットが持つはずのIP識
別子のさらに次以降のIP識別子を持つフラグメント受
信かチェックし(ステップ335)、そうであればIP
状態保持領域中のIP識別子を、受信したパケットのI
P識別子の一つ前の値に更新し(ステップ365)、C
PUに割り込みをあげる(ステップ345)。後続のフ
ラグメントが存在し、既に割り込みの上がっているIP
識別子を持つフラグメントでなく、次の受信パケットが
持つはずのIP識別子のさらに次以降のIP識別子を持
つフラグメント受信でなければ受信割り込みは上げな
い。好ましい実施形態では受信パケットのネットワーク
アダプタ120からネットワークドライバ132上の受
信バッファへの転送はCPU114を介さず、DMAに
より行われる。
【0035】次に、図5のフローチャートに基き、図1
のネットワークドライバ132の割り込み処理の動作を
説明する。ネットワークアダプタからCPUへの割り込
みにより割り込み処理ルーチンが起動される(ステップ
500)と、まず、送出完了パケットが存在するか調べ
られ(ステップ505)、存在した場合、メモリ領域の
解放等の送出完了処理(ステップ510)が行われる。
全ての送出完了パケットを調べ終わると、次に、受信完
了パケットが調べられ(ステップ515)、存在する場
合、IPフラグメントであるかどうか判別される(ステ
ップ520)。IPフラグメントでない場合、プロトコ
ルスタック134への受信通知等の受信完了処理(ステ
ップ535)が行われる。IPフラグメントの場合、フ
ラグメント化されたパケットがすべて存在するか調べ
(ステップ525)、存在する場合には一つのIPパケ
ットに組み立てられ(ステップ530)、受信完了処理
(ステップ535)が行われる。また、フラグメント化
されたパケットがすべては存在しない場合にはフラグメ
ントされた個々のパケットに対して受信完了処理(ステ
ップ535)を行う。
【0036】以上述べたように、本実施例によれば、送
信パケットの完了割り込みをIPパケット単位にするこ
とができ、割り込み回数を低減することができる。ま
た、IPフラグメントを受信した際に、割り込みを上げ
るのを、後続のフラグメントが存在しない場合、既に割
り込みが上がっているIPパケット中のフラグメント受
信時、または、次の受信パケットが持つはずのIP識別
子のさらに次以降のIP識別子を持つIPフラグメント
受信時のみに絞ることで、パケット紛失や受信順序誤り
が無い場合には大幅に割り込みを削減でき、パケット紛
失や受信順序誤りが有る場合には適宜割り込みが上がる
ことで受信処理が不必要に待たされることも無くなる。
【0037】また、IPパケットのIPフラグメントへ
の分割は、インターネットの標準化ドキュメントに記述
されている内容に従うため、本発明を用いていないネッ
トワークアダプタでも本発明を用いたネットワークアダ
プタからのIPフラグメントを受信することが可能とな
る。
【0038】
【発明の効果】以上述べたように、本発明によれば、送
受信パケットの送受信完了割り込みの通知回数を低減で
き、割り込みにともなう処理を低減できる。これによ
り、割り込み処理によるオーバーヘッドを低減でき、高
速伝送路を介して通信を行う場合でもスループットが低
下することがない。
【0039】また、送信先ごとにネットワークのフロー
を記憶し、送出時に格納されたフローに基づいて送出制
御をおこなうことにより、不必要なパケットの送出を防
止でき、スループットが低下することがない。
【図面の簡単な説明】
【図1】本発明の実施の形態のシステムブロック図であ
る。
【図2】本発明の実施の形態の送出制御部の処理手順を
示すフローチャートである。
【図3】本発明の実施の形態のパケット抽出部と割り込
み調整部の処理手順を示すフローチャートである。
【図4】本発明の実施の形態のネットワークドライバの
送出処理の処理手順を示すフローチャートである。
【図5】本発明の実施の形態のネットワークドライバの
割り込み処理の処理手順を示すフローチャートである。
【図6】本発明の実施の形態のフローテーブルを示す図
である。
【図7】本発明の実施の形態のIPパケットのフォーマ
ットを示す図である。
【図8】本発明の実施の形態のIPパケットの分割の一
例を示す図である。
【図9】本発明の実施の形態の複数のネットワークアダ
プタがネットワークを介して接続されている場合の一例
を示す図である。
【図10】本発明の実施の形態のIP状態保持領域を示
す図である。
【図11】本発明の実施の形態の送出パケットリストを
示す図である。
【符号の説明】
600.IPアドレス 610.時間帯A 615.時間帯Aの最大送出レート 620.時間帯B 625.時間帯Bの最大送出レート 720.IPパケットの全長 725.フラグメント識別子 730.フラグ 735.フラグメントオフセット 750.IPヘッダのチェックサム 755.送信元IPアドレス 760.宛先IPアドレス 1000.IPアドレス 1005.最新割り込み済みIP識別子 1100.IPアドレス 1105.送出カウンタ 1110.次送出待ちパケット情報へのポインタ 1115.送出待ちパケット情報

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】パケットの送受信制御をおこなうネットワ
    ークドライバとネットワークアダプタにおいて、プロト
    コル制御プログラムに伝送媒体の最大転送単位を規格値
    より大きな値を通知するステップと、送出要求された送
    信パケットを伝送媒体の最大転送長以下の複数のパケッ
    トに分割するステップと、分割内容をパケットヘッダー
    に登録するステップと、分割前の送信パケットごとに送
    出完了割り込みを通知するステップを有することを特徴
    とするネットワークパケット送受信方法。
  2. 【請求項2】パケットの送受信制御をおこなうネットワ
    ークドライバとネットワークアダプタにおいて、送信元
    毎に受信パケットの履歴情報を格納する記憶手段を有
    し、前記履歴情報を参照するステップと、受信したパケ
    ットのヘッダー情報を参照するステップと、前記履歴情
    報と前記ヘッダー情報から、受信したパケットが、後続
    の分割されたパケットが存在しない場合か、または、既
    に割り込みが上がっているパケット中の分割パケット受
    信した場合か、または、次の受信分割パケットが持つは
    ずのパケット識別子のさらに次以降のパケット識別子を
    持つ分割パケットを受信した場合かを判定するステップ
    と、前記いずれかの場合に割り込みを通知するステップ
    を有することを特徴とするネットワークパケット送受信
    方法。
  3. 【請求項3】パケットの送受信をおこなうネットワーク
    アダプタとネットワークアダプタにおいて、送出先毎の
    フローを格納する記憶手段を有し、ネットワークへパケ
    ットを送出する際に前記記憶手段に格納されたフローに
    基づいてパケット送出制御をおこなうことを特徴とする
    ネットワークアダプタ。
  4. 【請求項4】請求項3記載のフローを格納する記憶手段
    に、送出先の最大送出レートを記憶することを特徴とす
    るネットワークアダプタ。
JP11151137A 1999-05-31 1999-05-31 ネットワークパケット送受信方法およびネットワークアダプタ Pending JP2000341333A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11151137A JP2000341333A (ja) 1999-05-31 1999-05-31 ネットワークパケット送受信方法およびネットワークアダプタ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11151137A JP2000341333A (ja) 1999-05-31 1999-05-31 ネットワークパケット送受信方法およびネットワークアダプタ

Publications (1)

Publication Number Publication Date
JP2000341333A true JP2000341333A (ja) 2000-12-08

Family

ID=15512187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11151137A Pending JP2000341333A (ja) 1999-05-31 1999-05-31 ネットワークパケット送受信方法およびネットワークアダプタ

Country Status (1)

Country Link
JP (1) JP2000341333A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006180510A (ja) * 2004-12-21 2006-07-06 Bosch Rexroth Ag 短いデータ電文による伝送を制御する方法
US7903689B2 (en) 2004-06-21 2011-03-08 Fujitsu Limited Method and system for packet reassembly based on a reassembly header
JP5652388B2 (ja) * 2009-03-06 2015-01-14 日本電気株式会社 通信レート制御方法、送信装置および通信システム
JP2017520166A (ja) * 2014-07-08 2017-07-20 インテル・コーポレーション パケットシステムのベアラスプリッティングのためのデバイス

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7903689B2 (en) 2004-06-21 2011-03-08 Fujitsu Limited Method and system for packet reassembly based on a reassembly header
JP2006180510A (ja) * 2004-12-21 2006-07-06 Bosch Rexroth Ag 短いデータ電文による伝送を制御する方法
JP5652388B2 (ja) * 2009-03-06 2015-01-14 日本電気株式会社 通信レート制御方法、送信装置および通信システム
JP2017520166A (ja) * 2014-07-08 2017-07-20 インテル・コーポレーション パケットシステムのベアラスプリッティングのためのデバイス
US10045257B2 (en) 2014-07-08 2018-08-07 Intel Corporation Devices for packet system bearer splitting

Similar Documents

Publication Publication Date Title
US10652147B2 (en) Packet coalescing
EP0912028B1 (en) Mechanism for dispatching packets via a telecommunications network
US7817634B2 (en) Network with a constrained usage model supporting remote direct memory access
EP1784735B1 (en) Apparatus and method for supporting memory management in an offload of network protocol processing
CA2573162C (en) Apparatus and method for supporting connection establishment in an offload of network protocol processing
US6907042B1 (en) Packet processing device
EP1868093B1 (en) Method and system for a user space TCP offload engine (TOE)
US7239636B2 (en) Multiple virtual channels for use in network devices
US6034962A (en) Communication method with attaching identifiers to receive request and transmit request
JP4743894B2 (ja) データ・パケットを伝送しながらセキュリティを改良するための方法及び装置
US20110206059A1 (en) Methods and devices for transmitting data between storage area networks
EP3298739B1 (en) Lightweight transport protocol
US20070291782A1 (en) Acknowledgement filtering
EP1826968B1 (en) Methods and devices for transmitting data between storage area networks
JP2000341333A (ja) ネットワークパケット送受信方法およびネットワークアダプタ
US7213074B2 (en) Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet
US20030128699A1 (en) Method and apparatus for header updating
Cisco Configuring Serial Tunneling and SDLC Transport
US7738493B2 (en) Methods and devices for transmitting data between storage area networks
EP1384364A2 (en) Multiple buffers for removing unwanted header information from received data packets
US20060034269A1 (en) Action list for a split media access and control layer communications system
JP2004363681A (ja) パケットシェーピング方法、この方法を実施するパケットシェーピング装置及びコンピュータプログラム、並びにコンピュータプログラム記憶媒体
JPH10164176A (ja) 通信方法