JP4786575B2 - コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ - Google Patents

コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ Download PDF

Info

Publication number
JP4786575B2
JP4786575B2 JP2007073173A JP2007073173A JP4786575B2 JP 4786575 B2 JP4786575 B2 JP 4786575B2 JP 2007073173 A JP2007073173 A JP 2007073173A JP 2007073173 A JP2007073173 A JP 2007073173A JP 4786575 B2 JP4786575 B2 JP 4786575B2
Authority
JP
Japan
Prior art keywords
data
header
common
information
header information
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.)
Expired - Fee Related
Application number
JP2007073173A
Other languages
English (en)
Other versions
JP2008236378A (ja
Inventor
充 佐藤
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 JP2007073173A priority Critical patent/JP4786575B2/ja
Publication of JP2008236378A publication Critical patent/JP2008236378A/ja
Application granted granted Critical
Publication of JP4786575B2 publication Critical patent/JP4786575B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、ンピュータとネットワークの間に設けられ、ンピュータの送信データを分割したパケットをネットワークに送信するネットワークインタフェースコントローラとンピュータの間のデータ転送方式に関するものである。
現在のコンピュータシステムにおいて、外部とのデータのやりとりを高速に行なうことは、システム全体の高速化につながる重要な課題である。特に、PCなどの小さなコンピュータシステムをネットワークで接続し、全体として大きなひとつのコンピュータシステムとして使用するクラスタシステムなどでは、ネットワークを介した情報伝送がシステム全体の計算速度を決める重要な要素となっている。このため、コンピュータシステムのデータ通信性能は年々向上しており、その向上率は平均すると約3年で2倍という非常に高い値となっている。これはコンピュータの演算装置の速度向上を上回る勢いである。このようにデータ通信性能が向上してくると、高速な演算装置と高速なネットワークとを接続するための接続装置の構成が重要な課題となってくる。
一般にコンピュータシステムをネットワークに接続する際には、間にネットワークインタフェースコントローラ(以下、NICと表記する場合がある。)と呼ばれる接続装置を介在させる。これによりコンピュータシステム( 以下、ホストコンピュータあるいはホストと呼ぶ場合がある。)は、NICを変更するだけでさまざまな種類のネットワークに対応することができ、構成の柔軟性を確保することができる。
図7は、ネットワークインタフェースコントローラを用いてホストコンピュータからネットワークにパケットを送信するシステムの構成を示す図である。
ホストコンピュータ1とNIC5の間は、I/Oバス4と呼ばれる、ホストコンピュータ1によって用意された外部入出力装置と接続するためのインタフェースを経由して接続される。I/Oバス4にはPCIやPCI-X、PCI Express などの標準規格が広く用いられている。ホストコンピュータ1はこのI/Oバス4を経由してNIC5にデータや指示を送り、ネットワーク6を経由したデータのやりとりを行なう。
ネットワーク6上でのデータはパケットという形で転送される。パケットは一般にヘッダとペイロードとで構成される。ヘッダには通信のための各種情報、たとえば送信元や送信先、プロトコルの種類、データの長さなどが記載されている。ペイロードは送信するデータそのものであり、受信相手はヘッダ情報を元にペイロードをどのように扱えばよいかを判断し、処理を行なう。
したがって、ホストコンピュータ1からデータを外に転送しようとすると、ホストコンピュータ1のCPU2は、メモリ3上の制御情報31に基づいてヘッダを作成し、データ32に付加してパケットを構成し、NIC5を経由してネットワーク6に送り出す必要がある。
ところで、ネットワーク6の種類によっては、パケットの最大サイズが決められている。
例えばイーサネット(登録商標)では1500バイト程度の大きさが上限であり、それ以上の長さのパケットを送受信することはできない。そのため、ホストコンピュータ1から1500 バイト以上の大きなデータ32を送信しようとすると、データ32を150
0バイトより小さなサイズに分割し、それぞれにヘッダをつけ、別々のパケット#1,パケット#2,・・・,パケット#n としてネットワークに送り出さなくてはならない。
パケットの最大サイズはネットワーク6によって固定であるため、元となるデータ32が大きければ大きいほどパケットの数が多くなる。ヘッダは各パケットごとにつけなければならないため、パケットの数が多いということはヘッダの数が多くなることを意味する。
図8は、NIC5を用いてネットワーク経由でデータを転送する従来の方式を説明する図である。
まずNIC5が接続されているホスト1のCPU2上で動く制御ソフトウェアが、送信すべきデータ32と転送のための制御情報31(図8では記載を省略している。)を受け取る。次に制御ソフトウェアはパケットのための領域33を確保し、そこに制御情報31を元にヘッダを生成する。さらに、データ32の一部をコピーし、パケットを構成する。NIC5のコントローラ51 に転送指示を与えることによってこのパケットがNIC5のバッファ52に転送され、さらにパケットがNIC5からネットワーク6に送信される。この手順は、データ32が全て転送し終えるまで繰り返えされる。
上記のような方式でデータをパケット化し、ネットワークに転送すると、以下のような問題が生じる。
(I/O バスの問題)
先に述べたように、NIC5はI/Oバス4を経由してコンピュータシステム1と接続されている。コンピュータシステム1はこのI/Oバス4を経由してNIC5への指示やデータの送受信を行なっている。
このI/Oバス4は、現在ではPCI Express など高速なものが用いられており、ネットワーク6の速度以上のデータ転送速度を確保している。しかし、I/Oバス4は初期オーバーヘッドが大きいという問題がある。初期オーバーヘッドとは、データの転送を開始した時点から実際にデータが流れ始めるまでの時間である。この初期オーバーヘッドは、大量のデータを転送する場合には問題にならないが、少量のデータの場合には重要な問題となってくる。
I/Oバス4経由でデータを転送する場合には、ヘッダだけをNIC5 に送ったり、NIC5に送信指示を送るといった小さなデータ転送が多数発生する。そのため、この小さなデータ転送回数を減らし、I/Oバス4の大きな初期オーバーヘッドの影響を小さくするための転送方式が必要とされている。
(データコピーの問題)
パケットをひとつずつ作って転送する方式では、元データからパケットへデータのコピーが必要となる。これはデータ全体に渡って行なう必要があるため、データが大きければ大きいほどコピーの回数が多くなる。
現在、ネットワーク6が高速化するにつれ、コンピュータシステム1の演算装置とネットワーク6の転送速度の差が縮まっている。これは、相対的に見ると、ネットワーク6に対して演算装置の処理能力が落ちているということを意味している。このような状況では、ソフトウェアによるデータコピー処理というものは非常に重い処理となってしまい、それがたとえばクラスタシステムなどの全体の性能を引き下げる要因となる。そのため、できるだけデータのコピーを伴わないデータ転送方式が必要とされている。
(ヘッダ作成の問題)
ネットワーク6にデータを転送する際には、必ずヘッダを作成する必要がある。このヘッダはネットワーク6の種類によって異なり、それぞれのネットワーク6に対応したヘッダを作成する必要がある。
ネットワーク6に送り出そうとするデータが大きければ、その大きなかたまりのデータを最大パケットサイズに収まるように分割し、それぞれに対してヘッダをつけなくてはならない。このとき、ヘッダはパケット数分作らなくてはならないが、これらのヘッダには共通する情報が多い。たとえば、送信元や送信先、プロトコルの種類などは全てのパケットで共通である。
このように共通する情報が多いのに、それぞれ別のパケットとして取り扱わなければならないということは、ホスト1上の制御ソフトウェアのオーバーヘッドを招くのとともに、無駄なデータがI/Oバス4を経由してホスト1からNIC5へ送られることになり、性能を低下させる要因となる。そのため、できるだけ無駄な情報の作成、やりとりは行なわない方式が望ましい。
上記のような問題を解決するため、これまでいくつかの新たな手法が提案されている。
(一括送信方式)
図8で説明した送信方式は、パケットをひとつ作るたびにNIC5のコントローラ51に対して転送指示を与えていた。I/Oバス4を経由してNIC5へ転送指示を行なうのは非常に大きなオーバーヘッドを伴うため、この方式では無駄が多い。
そこで、ホスト1の制御ソフトウェアがパケットのための領域33を必要なだけ複数個確保してそこに複数のパケットを連続的に作成し、それらの複数のパケットの転送指示をまとめて一度で済ます方式が考えられている。この方式を用いると、I/Oバス4経由の転送指示のオーバーヘッドを削減することができる。
しかし、残りふたつの問題であるデータコピーの問題やヘッダ作成の問題に関してはそのまま残っている。
(ギャザーテーブル方式)
ギャザーテーブルとは、データへのポインタを複数個まとめたテーブルのことである。ギャザーテーブルを用いると、ばらばらに配置されたデータを一つ一つ渡すことなく、まとめて渡すことができる。
図9は、ギャザーテーブルをホスト1とNIC5の間の転送処理に応用した方式を説明する図である。
ホスト1のCPU2上で動く制御ソフトウェアが、送信すべきデータ32と転送のための制御情報31(図9では記載を省略している。)を受け取る。次に制御ソフトウェアは複数のヘッダのための領域34を確保し、そこに制御情報31を元に複数のヘッダを生成する。またギャザーテーブルのための領域35を確保し、そこにヘッダへのポインタと、そのヘッダに対応するデータへのポインタをまとめたギャザーテーブルを作成し、NIC5のコントローラ51に、領域35のアドレス通知を含む転送指示を行う。
コントローラ51はホスト1上のギャザーテーブルを読み出して格納する領域53を確保して、ホスト1から領域53にギャザーテーブルを読み出す。次にギャザーテーブル上のポインタによりホスト1からヘッダ、データをそれぞれ取り出し、パケットバッファ52でパケットとしてまとめ、ネットワーク6へ送信する。
ギャザーテーブルを用いることによって、ホスト1がデータをコピーしてパケットを生成する必要がなくなる。そのため、データコピーの問題は解決する。
しかし、ヘッダ作成の問題に関してはそのまま残っている。また、NIC5がI/O バス4経由でヘッダを取り出さなくてはならないため、I/O バス4のオーバーヘッドが増加してしまうという問題も発生する。
(オフロードエンジン方式)
上記問題をすべて解決するための方法として、オフロードエンジン方式が提案されている。オフロードエンジンとは、パケット処理を行なうNIC上のハードウェアのことである。
図10は、オフロードエンジン方式を説明する図である。
ホスト1のCPU2からはパケット送信に必要な情報としてヘッダ作成用の情報を予めNIC5のオフロードエンジン55に渡して領域54に登録するとともに、データ32の位置のみを通知することで転送指示を行う。
NIC5では領域54に登録した情報を元にヘッダを作成し、パケットに必要なデータを図示しないI/O バス4経由で読み出し、パケットを領域52に生成してネットワーク6に送信する。
オフロードエンジン方式は必要な情報のみを渡すため、ホスト1のオーバーヘッドが小さい。そのため、最も効率よい転送方式であると言える。
しかし、オフロードエンジン方式ではNIC5での処理が複雑になってしまうという問題がある。NIC5上に搭載するオフロードエンジン55をハードウェアで構成した場合、ハードウェアで作りこまれた特定のネットワーク処理しかできないNIC5となってしまうため、ネットワーク処理の柔軟性に欠ける。
一方、オフロードエンジン55をNIC5上に搭載するマイクロプロセッサとソフトウェア( ファームウェア) で構成した場合、本来ホスト1で行なうヘッダ生成その他の処理を行なうためのものであるため高速性が要求され、非常に高価なハードウェアを必要とする。
以上のように、NIC5での処理が複雑になることによって、柔軟性に欠ける、あるいはハードウェアが高価になってしまうという問題が生じることとなる。
下記特許文献1及び特許文献2にはオフロードエンジン方式を用いたTCP/IP あるいはUDP/IP のためのネットワークインタフェースコントローラが提案されている。これらの方式は、特定のプロトコルであるTCP/IP あるいはUDP/IP に特化されており、他のプロトコルに応用することができない。
また、ネットワークに関する技術が発展するにつれ、同じTCP/IP やUDP/IP でも拡張がなされていく可能性がある。ホスト上等のソフトウェアでヘッダを構成する方式では、新たなソフトウェアを導入するだけで実現可能であるが、オフロードエンジンをハードウェアで構成した場合ではハードウェアそのものを交換しなければ対応することができない。
特開2006−081033号公報 特表2006−526969号公報
本発明の目的は、前述のI/Oバス、データコピー、ヘッダ作成の問題を解決するとともに、ネットワークインタフェースコントローラのハードウェアに対する付加機能を最小限にとどめ、ネットワークインタフェースコントローラのハードウェアを複雑で高価なものにすることなく、ソフトウェア処理による柔軟なネットワーク対応を可能にした、ネッ
トワークインタフェースコントローラとホストコンピュータ間のデータ転送方式を実現することである。
ホストコンピュータとネットワークインタフェースコントローラとのパケットに関する情報転送にヘッダテーブル(情報)という構造を新たに導入する。ヘッダテーブルには、パケットの圧縮されたヘッダ情報とパケットのペイロードデータへのポインタ(アドレス情報)が記載される。
ヘッダ情報の圧縮は、ヘッダに記載する情報を共通する1つの部分ヘッダ情報と、非共通の部分ヘッダ情報に分解することにより行う。共通する1つの部分ヘッダ情報とは、一つの送信データを分割した全てのパケットに共通する情報であり、たとえば送信元、送信先、プロトコルの種類などが相当する。非共通の部分ヘッダ情報は各パケットで異なる情報であり、たとえばシーケンス番号、チェックサム情報などが相当する。
ネットワークインタフェースコントローラはヘッダテーブルの共通する1つの部分ヘッダ情報と各パケットに対応した非共通の部分ヘッダ情報の内容を元に各パケットのヘッダを作成し、ポインタによりデータをホストコンピュータから取得し、内部でパケットを構成する。
本発明のヘッダテーブルを利用する転送方式によって、ヘッダはネットワークインタフェースコントローラ内部で生成することができる。そして、ホストコンピュータからネットワークインタフェースコントローラにヘッダ情報を渡す際、共通する1つの部分ヘッダ情報は一度に送る送信データに対して1回のみ、非共通の部分ヘッダ情報はパケットの数分だけであるので、重複する情報を何度も転送することはない。
また、パケットの作成もネットワークインタフェースコントローラ内部で行うのでペイロードのコピーの問題が発生しない。
そして、本発明のヘッダテーブルは、ホストコンピュータ上の制御プログラムが作成する。そのため、パケットのヘッダ構成をホストコンピュータ上のソフトウェアによって自由に変更することができ、さまざまなプロトコルに柔軟に対応することが可能となる。
図1は、本発明によるパケット作成の原理を説明する図である。
本発明においてパケット作成に用いられる制御情報は、図1(a)に示すように、共通部、パケット#1用の可変部1、パケット#1用のデータポインタ、……、パケット#n用の可変部n、パケット#n用のデータポインタという構成になっている。共通部の制御情報はヘッダテーブルの共通ヘッダに用いられる情報であり、各可変部の制御情報はヘッダテーブルの各可変ヘッダに用いられる情報である。
先に述べたように、共通部の制御情報は、たとえば送信元、送信先、プロトコルの種類などであり、各可変部の制御情報は、たとえばシーケンス番号、チェックサム情報などである。なお、チェックサム情報がトレーラに設定されるプロトコルでは、トレーラごと最後のペイロードデータである図1(b)に示すデータnに含ませて転送することができる。
送信データは図1(b)に示すようにデータ1、データ2、・・・、データnと分割され、それぞれの先頭アドレスは図1(a)に示す制御情報のポインタで示されている。
図1(a)に示す制御情報と図1(b)に示すデータにより、図1(c)に示すパケット#1、パケット#2、・・・、パケット#n が作成される。パケット#1、パケット#2、・・・、パケット#n のヘッダは、 図1(c)に示すように、共通部の制御情報と可変部の制御情報から作成される。
図2は、本発明の一実施形態によるホストとNIC間のパケット作成用の情報転送方式の概要を説明する図である。
ホスト側のCPU2は、1まとまりの送信データ32ごとにヘッダテーブル36を生成する。ヘッダテーブル36は送信データに共通な共通ヘッダと、1まとまりの送信データを分割して得られた各パケットにより送信するデータごとの可変ヘッダと各パケットにより送信するデータへのポインタで構成される。
ホスト側のCPU2がNIC側のヘッダ解釈/構成エンジン56に転送指示を行うと、ヘッダ解釈/構成エンジン56はヘッダテーブル36を読み出してヘッダテーブルバッファ57に格納し、共通ヘッダと可変ヘッダを合成してパケットのヘッダを作成する。さらにヘッダ解釈/構成エンジン56はヘッダテーブルバッファ57に格納したヘッダテーブル中の、パケットに格納すべきデータの位置を示すポインタによりホスト側からデータを読み出して先に合成したヘッダとともにパケットをパケットバッファ52に作成してネットワーク側に送信する。
図3は、本発明の一実施形態によるヘッダテーブル36の、各可変ヘッダの構成例を示す図である。
図3に示すように、可変ヘッダの先頭は、可変ヘッダ全体の長さを示すレングス部である。それ以降は各可変データに対応したものであり、それは、可変データの長さがバイト、ワードあるいはダブルワードであるか等を示すタイプT、可変データを書き込む共通ヘッダの先頭からのオフセットを示すO、及び書き換えるデータそのものである可変データDから構成される。図3に示す例では可変データはD0〜D4の5個となっている。
図4は、本発明の一実施形態によるNIC5aの構成例を示す図である。図4にはNIC5aのパケット送信に関する部分のブロック構成のみ示しており、受信に関する部分は省略している。
図4に示すように、NIC5aのパケット送信部は、ホストインタフェース50、パケットバッファ52、コントローラ561、ヘッダ合成ユニット562、ヘッダテーブルバッファ57、共通ヘッダバッファ58を含んで構成される。コントローラ561とヘッダ合成ユニット562は、図2に示すヘッダ解釈/構成エンジン56に相当する。
NIC5aは図示しないI/Oバスとネットワークそれぞれに接続しており、I/Oバス経由で図示しないホストとデータ等をやりとりする。ホストインタフェース50はホストとのやりとりを行なうブロックで、ホストからの転送指示を受け取ったり、ホストへメモリの読み出し要求を出すという操作を行なう。
中央のコントローラ561はパケット送信手続きを実行するブロックであり、ホストインタフェース561がホストから受け取った転送指示により起動される。起動されると、コントローラ561は、ホストからのヘッダテーブルの読み出し、ヘッダ合成ユニット562へのヘッダ合成指示、ホストからのデータ読み出し、ヘッダとデータを組み合わせたパケットのパケットバッファ52上での作成、作成されたパケットのネットワークへの送信の制御を順次行なう。
ヘッダ合成ユニット562は、共通ヘッダバッファ58に格納された共通ヘッダとヘッダバッファテーブル57から読み出した可変ヘッダを合成して、新たなパケット用のヘッダを生成するブロックである。
ヘッダ合成ユニット562は、図3に示す可変ヘッダの“O”で示されるオフセット先に“T”で示されるサイズで“DATA” を書き込むという動作を繰り返すことによって、共通ヘッダと可変ヘッダからパケット用のヘッダを作成する。
つまり、上記オフセット値にしたがって、ヘッダ合成ユニット562は共通ヘッダのうち書き換える部分を探し出し、可変ヘッダ中のデータで書き換えることで、それぞれのパケットに適合したヘッダを作成する。
図4に示すNIC5aを実現するためのハードウェアは、通常用いられているネットワークインタフェースコントローラのハードウェアに、共通ヘッダを記憶しておく領域、可変ヘッダを解析して共通ヘッダと合わせてパケットのヘッダを作成する回路を追加したものとなる。したがって、オフロードエンジン方式で問題となっていた柔軟性に欠ける、あるいはCPUとして高価なハードウェアを必要とするという問題も解決することが可能である。
図5は、本発明の一実施形態によるホストとNIC間のパケット送信のための情報転送方式に係るホスト上の制御プログラム(OS)とNIC側のハードウェアの動作シーケンスを説明する図である。
ホスト上の制御ソフトウェア(OS)は、ユーザからのデータ送信要求により起動され、ステップS10でメモリ上に領域を確保しそこを送信データ用のヘッダテーブル36に割り当てる。
次にステップS11で、ヘッダテーブル36の先頭にデータを送信するネットワークのプロトコル及び各パケットの共通データに応じて共通ヘッダを作成する。
次にステップS12で、ネットワークの最大パケットサイズに応じて送信データを分割し、分割された送信データごとに可変ヘッダを作成し、ステップS13で分割された送信データへのポインタの設定を行い順次それらをヘッダテーブル36に格納していく。
ステップS14での判定により、送信データの分割数、すなわちパケットの数だけ上記ステップS12とステップS13を繰り返し、ヘッダテーブル36が完成するとステップS15において、NIC側に転送指示を出す。
NIC側では、ホスト側からの転送指示を受け取ると、ステップS20でホスト側からヘッダテーブル36を読み出し、ヘッダテーブルバッファ57に格納する。
ヘッダテーブル36の具体的転送方法には、ホスト側からの転送指示にヘッダテーブルのアドレスを含ませる方法、ヘッダテーブル36のアドレスを予めNIC側に設定しておく方法などが可能である。また、それらの方法に替えて、ホスト側から転送指示とともにヘッダテーブル36をNIC側への書き込みデータとして転送することもできる。
いずれにしろ、ヘッダテーブル36のデータはNIC側へ転送され、NIC側はヘッダテーブルの情報を取得する。本明細書及び特許請求の範囲では、ホスト側からヘッダテーブルを読み出すことと、ホスト側主導で書き込みデータとして転送されたヘッダテーブルを受信することの双方について、取得という用語を用いる。
また、上述のヘッダテーブルの転送をホスト側から見た場合、ホストからNICにヘッダテーブルを渡すと表記する場合もある。
次にステップS21で、ヘッダテーブル57に格納したヘッダテーブルから共通ヘッダを取り出し、共通ヘッダバッファ58に格納する。
続いてステップS22において、ヘッダテーブルバッファ57から各パケットに対応する可変ヘッダを順次取り出し、ステップS23で共通ヘッダバッファ58から取り出した共通ヘッダとステップS22で取り出した可変ヘッダによりヘッダの合成を行い、パケットバッファ52のヘッダエリアに書き込む。
ステップS22とステップS23の処理は、先に述べたように図4に示すヘッダ合成ユニット562により実行される。ヘッダ合成の具体的処理も先に述べたとおりであって、まず共通ヘッダをパケットバッファ52のヘッダエリアに書き込み、次に可変ヘッダに設定されている可変データで共通ヘッダの一部を書き換えていく。
すなわち、ヘッダエリアの先頭アドレスから、可変ヘッダの“O”で示されるオフセット先に“T”で示されるサイズで“DATA” を書き込むことを可変データの数だけ実行する。なお、上記処理を実行するに際して、ヘッダ合成ユニット562は、可変ヘッダのレングス部 とタイプTの値により、次に処理するデータが可変ヘッダのどこにあるかと全てのデータの処理が終了したかを判別できることは明らかである。
ステップS23に続いてステップS24に進み、ヘッダテーブルバッファ57から各パケットに対応するデータへのデータポインタを取り出し、ステップS25で、そのデータポインタによりホスト側からデータを読み出すことをホストインタフェース50に要求し、読み出されたデータをパケットバッファのデータ領域に書き込んで一つのパケットを作成する。
次にステップS26で作成したパケットをネットワークに送信し、ステップS27においてヘッダテーブル内の全てのデータの処理が終了したか判定する。
ヘッダテーブル内に未処理のデータが残っていればステップS22に戻って以降の処理を繰り返し、全ての処理が終了していれば、ホスト側に処理終了通知を返す。
ホストはNIC側から処理終了通知を受信すると、ステップS16においてヘッダテーブル36を解放し、ステップS17において、送信要求を行ったユーザに送信完了を通知して一連の処理を終了する。
上述のように、共通ヘッダは、ホスト上のソフトウェアにより、ネットワークのプロトコルに適合した形式で、ユーザから送信要求のあったデータに共通の送信先等の情報により作成される。したがって、パケットヘッダ作成のためのテンプレートとなっている。可変ヘッダもホスト上のソフトウェアにより作成され、各パケットに特有の情報とそれを書き込むヘッダ中の位置を示す情報により構成され、テンプレートの変更部分を示している。
したがって、パケットがヘッダとペイロードから構成されるかぎり、すべてのパケット転送プロトコルに対して、本発明のヘッダテーブルを用いたパケット情報転送方式は適用可能である。また、先に述べたとおり、トレーラは最後のパケットのペイロード中に含めることができる。
以上の図4、図5を参照したNIC5aの説明では、共通ヘッダバッファ58を設け、共通ヘッダをヘッダテーブルバッファ57からコピーしてそれにヘッダ合成ユニット562がアクセスするものであったが、ヘッダ合成ユニット562が直接ヘッダテーブルバッファ57に格納された共通ヘッダにアクセスするように構成することも可能である。
また、上述のNIC5aはハードウェアオリエンテッドで構成したものであるが、これは本発明のヘッダテーブルを用いた転送方式はハードウェア構成によるNICで好適に実
現できることを説明したまでのことであって、本発明がソフトウェアを用いて実現可能であることを否定するものではない。
図6は、マイクロプロセッサ(CPU)とCPU上のソフトウェア構成による実施例におけるネットワークインタフェースコントローラの構成例を示す図である。
図6に示すように、NIC5bは、ホストインタフェース50、CPU560及びメモリ570を含んで構成される。
メモリ570には、ヘッダテーブルバッファ571、共通ヘッダバッファ572及びパケットバッファ573が確保されている。先に述べたのと同様に、共通ヘッダバッファ572は省略することも可能である。また、場合によっては、共通ヘッダバッファをレジスタにより構成することも考えられる。
CPU560でのソフトウェア処理は、図5に示すステップS20〜ステップS27のフローで表されるものと同様である。
本発明によるヘッダテーブルを用いた転送方式によれば、パケット作成に必要なデータはヘッダテーブルにまとめられていることからCPU560による処理もさほど重いものではないので、安価なものを使用することができ、適用分野によっては好適に採用することができる。
以上においては、NICに収容されるネットワークの回線数については特には触れずに本発明を説明してきた。本発明はネットワーク回線を一つだけ収容するNICに限られるわけではなく、各図に示されたネットワークとNICを接続する回線は太線一本で記載してあっても、複数の回線の場合も合わせて表記したものである。
複数本の回線を収容するNICの場合には、例えば共通ヘッダには宛先を識別する情報が存在し、複数本の回線を収容するNICには当然のことながら宛先を識別する情報によりパケットを複数の回線のうちの1つに振り分ける手段が存在するから、それによりどの回線にパケットを送信するかを決めるようにすればよい。
また、複数の物理回線をまとめて1本の論理回線として用いるリンクアグリゲーションを採用した場合には、可変ヘッダの部分にどの物理回線に送信するかの情報を設定してそのパケットを送信する回線を指定することができる。そして、リンクアグリゲーションを採用するNICであれば、指定された物理回線にパケットを送信できることは勿論である。
そして、本発明のホストコンピュータとネットワークインタフェースコントローラ間の転送方式は、いわゆるコンピュータ間通信用のホストとNICに限らず、パケット通信を利用するあらゆる分野、例えばパケットを用いた移動体通信の分野等においても適用可能であることは明らかである。
ネットワークインタフェースコントローラに接続されるネットワークの接続形態についても、ネットワークの回線が直接ネットワークインタフェースコントローラに接続される必要はなく、ネットワークインタフェースコントローラから出力されたパケットデータを各種変調方式で変調する変調部や各種符号化を行う符号化部等を介してネットワークの回線に接続される場合も含むものである。
以上本発明を詳細に説明したところから明らかなとおり、本発明によれば、高価なハードウェアを用いることなく、ネットワーク変更に対する柔軟性を維持したまま、I/Oバスの問題、データコピーの問題、ヘッダ生成の問題を解決することができる。また、I/
Oバスを経由したホストとNICとのやりとりや、ホスト上の制御プログラムのオーバーヘッドを削減し、効率よくデータをネットワークに送り出すことが可能となる。
(付記1)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラとホストコンピュータの間のデータ転送方法において、
前記ホストコンピュータは、
前記送信データごとに、該送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを作成し、
前記ネットワークインタフェースコントローラに転送指示を行い、
前記ネットワークインタフェースコントローラに前記ヘッダテーブルを渡し、
前記ネットワークインタフェースコントローラは、
該渡されたヘッダテーブルに設定されたポインタによりパケットのペイロードとなるデータをホストコンピュータから読み出す、
ことを特徴とするデータ転送方法。
(付記2)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記1に記載のデータ転送方法。
(付記3)
前記ネットワークインタフェースコントローラは前記ネットワークの複数の回線を収容するものであり、前記共通ヘッダには該回線を識別する情報が含まれることを特徴とする付記2に記載のデータ転送方法。
(付記4)
前記ネットワークインタフェースコントローラは複数の物理回線をリンクアグリゲーションで運用する前記ネットワークの回線を収容するものであり、前記可変ヘッダには対応するパケットが送信される前記物理回線を識別する情報が含まれることを特徴とする付記2に記載のデータ転送方法。
(付記5)
前記ホストコンピュータは、前記ネットワークインタフェースコントローラからの読み出しにより前記ヘッダテーブルを渡すことを特徴とする付記1乃至付記4のいずれか1つに記載のデータ転送方法。
(付記6)
前記ホストコンピュータは、前記ヘッダテーブルを前記ネットワークインタフェースコントローラへの書込みにより渡すことを特徴とする付記1乃至付記4のいずれか1つに記載のデータ転送方法。
(付記7)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラにデータを転送するホストコンピュータを、
前記送信データごとに、該送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを作成する手段と、
前記ネットワークインタフェースコントローラに転送指示を行う手段と、
前記ネットワークインタフェースコントローラに前記ヘッダテーブルを渡す手段と、
して機能させることを特徴とするプログラム。
(付記8)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記7に記載のプログラム。
(付記9)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラにおいて、
制御部とヘッダ合成部とバッファ部を備え、
前記制御部は、前記ホストコンピュータから取得した、前記送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを前記バッファ部に格納して、前記ヘッダ合成部にヘッダの合成を指示するとともに、前記ヘッダテーブルに設定された前記ポインタによりパケットのペイロードとなるデータを読み出して前記バッファのパケットのペイロードデータ格納エリアに格納し、
前記ヘッダ合成部は、前記バッファ部から前記共通ヘッダと前記可変ヘッダを読み出し、前記共通ヘッダと前記可変ヘッダを合成してパケットのヘッダを作成して前記バッファのパケットのヘッダ格納エリアに格納する、
ことを特徴とするネットワークインタフェースコントローラ。
(付記10)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記9に記載のネットワークインタフェースコントローラ。
(付記11)
前記可変ヘッダは、さらに可変ヘッダ全体の長さを示すレングス部と、前記共通ヘッダに書き込むデータごとに、該データの長さを示すタイプ部を含み、前記制御部は、前記レングス部とタイプ部の長さ情報に基づいて前記可変ヘッダから、前記共通ヘッダに書き込むデータを取り出すとともに全ての該書き込みデータを取り出したことを判定することを特徴とする付記10に記載のネットワークインタフェースコントローラ。
(付記12)
前記ネットワークの複数の回線を収容し、前記共通ヘッダには該回線を識別する情報が含まれ、該回線を識別する情報に基づいて該回線に作成したパケットを送信することを特徴とする付記9乃至付記11のいずれか1つに記載のネットワークインタフェースコントローラ。
(付記13)
複数の物理回線をリンクアグリゲーションで運用する前記ネットワークの回線を収容し、前記可変ヘッダには対応するパケットが送信される前記物理回線を識別する情報が含まれ、該物理回線を識別する情報に基づいて該物理回線に作成したパケットを送信することを特徴とする付記9乃至付記11のいずれか1つに記載のネットワークインタフェースコントローラ。
(付記14)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットネットワークインタフェースコントローラに、
前記ホストから前記送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを取得する機能と、
該ヘッダテーブル中のパケットのペイロードとなるデータの格納アドレスを示すポインタにより該パケットのペイロードとなるデータを読み出す機能と、
前記共通ヘッダと前記各可変ヘッダを合成して各パケットのヘッダを作成する機能と、
を実現させることを特徴とするプログラム。
(付記15)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記14に記載のプログラム。
本発明によるパケット作成の原理を説明する図である。 本発明の一実施形態によるホストとNIC間の転送方式の概要を説明する図である。 本発明の一実施形態による可変ヘッダの構成を示す図である。 本発明の一実施形態によるNICの構成例を示す図である。 本発明の一実施形態による転送方式に係る動作シーケンスを説明する図である。 ソフトウェア構成による実施例におけるNICの構成例を示す図である。 NICを用いてホストからパケットを送信する構成を示す図である。 NICを用いてデータを転送する従来の方式を説明する図である。 ギャザーテーブル方式を説明する図である。 オフロードエンジン方式を説明する図である。
符号の説明
1 ホストコンピュータ
2 CPU
3 メモリ
4 I/Oバス
5、5a、5b ネットワークインタフェースコントローラ(NIC)
6 ネットワーク
36 ヘッダテーブル
50 ホストインタフェース
52 パケットバッファ
56 ヘッダ解釈/構成エンジン
561 コントローラ
562 ヘッダ合成ユニット
57 ヘッダテーブルバッファ
58 共通ヘッダバッファ

Claims (5)

  1. ンピュータに備えられた格納手段に格納されたデータをネットワークインタフェースコントローラによりネットワークに送信するデータ転送方法において、
    記コンピュータは、
    前記格納手段に格納された複数のデータのそれぞれの格納アドレスを示すアドレス情報と前記複数のデータを送信する際に生成する複数のパケットのヘッダ情報のうち、前記複数のパケットについて共通する1つの部分ヘッダ情報と、前記複数のパケットのそれぞれについて共通でない複数の非共通の部分ヘッダ情報を含む情報を作成し、
    記ネットワークインタフェースコントローラは、
    前記情報を取得し、
    取得した前記情報含まれる各アドレス情報に基づいて、前記格納手段に格納されたデータのそれぞれを読み出
    前記格納手段から読み出したそれぞれのデータに、前記情報に含まれる前記共通する1つの部分ヘッダ情報と、当該読み出したそれぞれのデータに対応する非共通の部分ヘッダ情報とに基づくヘッダ情報を付加して前記複数のパケットを生成する
    ことを特徴とするデータ転送方法。
  2. 前記複数の非共通の部分ヘッダ情報は、前記共通する1つのヘッダ情報に書き込むデータと、前記書き込むデータを前記共通する1つのヘッダ情報に書き込む位置を示す位置情報を含み、
    前記複数のパケットの各ヘッダ情報は、それぞれ、前記共通する1つの部分ヘッダ情報に、対応する非共通の部分ヘッダ情報に従って前記書き込むデータを書き込むことで生成されることを特徴とする請求項1に記載のデータ転送方法。
  3. データを格納する格納手段を備えットワークインタフェースコントローラにより前記データをネットワークに送信させるコンピュータを、
    前記格納手段に格納された複数のデータのそれぞれの格納アドレスを示すアドレス情報と前記複数のデータを送信する際に生成する複数のパケットのヘッダ情報のうち、前記複数のパケットについて共通する1つの部分ヘッダ情報と、前記複数のパケットのそれぞれについて共通でない複数の非共通の部分ヘッダ情報を含む情報を作成する手段と、
    て機能させることを特徴とするプログラム。
  4. ケットをネットワークに送信するネットワークインタフェースコントローラにおいて、
    制御部とヘッダ合成部とバッファ部を備え、
    前記制御部は、ンピュータに備えられた格納手段に格納された複数のデータのそれぞれの格納アドレスを示すアドレス情報と、前記複数のデータを送信する際に生成する複数のパケットのヘッダ情報のうち、前記複数のパケットについて共通する1つの部分ヘッダ情報と、前記複数のパケットのそれぞれについて共通でない複数の非共通の部分ヘッダ情報を含む情報を取得し前記バッファ部に格納して、前記ヘッダ合成部にヘッダ情報の合成を指示するとともに、前記情報に設定された前記アドレス情報によりパケットのペイロードとなる前記複数のデータを前記格納手段から読み出して前記バッファのパケットのペイロードデータ格納エリアに格納し、
    前記ヘッダ合成部は、前記バッファ部から前記共通する1つの部分ヘッダ情報と前記複数の非共通の部分ヘッダ情報を読み出し、前記共通する1つの部分ヘッダ情報各非共通の部分ヘッダ情報それぞれ合成して、前記複数のパケットのヘッダ情報を作成して前記バッファのパケットのヘッダ格納エリアに格納し
    前記ペイロードデータ格納エリアに格納されたそれぞれのデータに、前記ヘッダ格納エリアに格納された対応するヘッダ情報を付加して前記複数のパケットを生成して前記ネットワークに送信する
    ことを特徴とするネットワークインタフェースコントローラ。
  5. ケットをネットワークに送信するネットワークインタフェースコントローラに、
    コンピュータに備えられた格納手段に格納された複数のデータのそれぞれの格納アドレスを示すアドレス情報と、前記複数のデータを送信する際に生成する複数のパケットのヘッダ情報のうち、前記複数のパケットについて共通する1つの部分ヘッダ情報と、前記複数のパケットのそれぞれについて共通でない複数の非共通の部分ヘッダ情報を含む情報を取得する機能と、
    情報中の前記アドレス情報によりパケットのペイロードとなる前記複数のデータを前記格納手段から読み出す機能と、
    前記共通する1つの部分ヘッダ情報と前記複数の非共通の部分ヘッダ情報の各非共通の部分ヘッダ情報をそれぞれ合成して、前記複数のパケットのヘッダ情報を作成する機能と、
    前記読み出す機能により読み出されたそれぞれのデータに、前記作成する機能により作成された対応するヘッダ情報を付加して前記複数のパケットを生成して前記ネットワークに送信する機能と
    を実現させることを特徴とするプログラム。
JP2007073173A 2007-03-20 2007-03-20 コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ Expired - Fee Related JP4786575B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007073173A JP4786575B2 (ja) 2007-03-20 2007-03-20 コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007073173A JP4786575B2 (ja) 2007-03-20 2007-03-20 コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ

Publications (2)

Publication Number Publication Date
JP2008236378A JP2008236378A (ja) 2008-10-02
JP4786575B2 true JP4786575B2 (ja) 2011-10-05

Family

ID=39908618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007073173A Expired - Fee Related JP4786575B2 (ja) 2007-03-20 2007-03-20 コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ

Country Status (1)

Country Link
JP (1) JP4786575B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010072244A1 (en) 2008-12-22 2010-07-01 Telefonaktiebolaget L M Ericsson (Publ) Ip multiplexing from many ip hosts
JP5880551B2 (ja) * 2011-03-28 2016-03-09 日本電気株式会社 再送制御システム及び再送制御方法
US8902890B2 (en) 2011-05-27 2014-12-02 International Business Machines Corporation Memory saving packet modification
JP2013062683A (ja) * 2011-09-13 2013-04-04 Toshiba Corp データ転送装置、データ送信システム、データ送信方法およびプログラム
KR102173089B1 (ko) 2014-08-08 2020-11-04 삼성전자주식회사 인터페이스 회로 및 그것의 패킷 전송 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09149034A (ja) * 1995-11-20 1997-06-06 Nec Eng Ltd Atmセルの生成方法及び通信制御装置

Also Published As

Publication number Publication date
JP2008236378A (ja) 2008-10-02

Similar Documents

Publication Publication Date Title
US7320041B2 (en) Controlling flow of data between data processing systems via a memory
US9594718B2 (en) Hardware accelerated communications over a chip-to-chip interface
JP6433146B2 (ja) 情報処理装置、システム、情報処理方法、コンピュータプログラム
US7813339B2 (en) Direct assembly of a data payload in an application memory
US7409468B2 (en) Controlling flow of data between data processing systems via a memory
US20030099254A1 (en) Systems and methods for interfacing asynchronous and non-asynchronous data media
US12021955B2 (en) Method and apparatus for processing data in a network
JP4786575B2 (ja) コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ
EP3058684B1 (en) Network interface
US9753883B2 (en) Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
CN113498595B (zh) 一种基于PCIe的数据传输方法及装置
JP2006302246A (ja) ネットワークアダプタ、通信システムおよび通信方法
CN110958216B (zh) 安全的在线网络分组传输
US9535851B2 (en) Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set
US7532644B1 (en) Method and system for associating multiple payload buffers with multidata message
EP1049292A2 (en) System and method for network monitoring
JP7145607B2 (ja) Dma転送装置、dma転送装置の制御方法、および通信装置
JP5906078B2 (ja) データ転送装置及びデータ転送方法
US7330484B2 (en) Method and system for transmitting packet chains
KR20050065133A (ko) 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
CN115859334A (zh) 一种加解密数据处理方法及装置
CN118708368A (zh) 一种分布式内存计算引擎集群的数据处理方法及装置
JP2002183072A (ja) インタフェース制御装置
JP2010287972A (ja) ネットワーク装置およびネットワーク処理装置
JP2004227040A (ja) ネットワークサーバ及びストレージデータ通信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110620

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: 20110712

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: 20110713

R150 Certificate of patent or registration of utility model

Ref document number: 4786575

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees