JP4736859B2 - 通信装置および通信方法 - Google Patents

通信装置および通信方法 Download PDF

Info

Publication number
JP4736859B2
JP4736859B2 JP2006055969A JP2006055969A JP4736859B2 JP 4736859 B2 JP4736859 B2 JP 4736859B2 JP 2006055969 A JP2006055969 A JP 2006055969A JP 2006055969 A JP2006055969 A JP 2006055969A JP 4736859 B2 JP4736859 B2 JP 4736859B2
Authority
JP
Japan
Prior art keywords
area
memory area
application memory
processing unit
payload 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.)
Expired - Fee Related
Application number
JP2006055969A
Other languages
English (en)
Other versions
JP2007235674A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2006055969A priority Critical patent/JP4736859B2/ja
Priority to US11/708,347 priority patent/US7817572B2/en
Publication of JP2007235674A publication Critical patent/JP2007235674A/ja
Application granted granted Critical
Publication of JP4736859B2 publication Critical patent/JP4736859B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols

Description

本発明は通信装置に関し、特に受信パケットに含まれるペイロードデータをアプリケーションプログラムのバッファに直接書き込む機能を有する通信装置に関する。
一般的に、コンピュータは、ネットワークインタフェースカードを有し、ネットワークインタフェースカード経由で他のコンピュータや機器と通信を行う。
特に通信性能がシステムに大きく影響する並列コンピューティングの分野では、RDMA(リモートダイレクトメモリアクセス)という技術が利用されている。RDMAは、データを受信する側が、受信したパケットのペイロードデータを、オペレーティングシステム(OS)が管理するOS空間を介することなく、アプリケーションプログラム(以下、アプリケーションと称す)で利用するメモリ空間に直接転送する技術である。このように転送データに対するバッファコピー回数を削減することで、プロセッサ処理負荷の削減による性能の向上および通信レイテンシの削減が可能になる。特に最近では、インターネットの標準プロトコルでTCP/IP上でRDMAを利用するためのプロトコルであるiWARPが、RDMA Consortium(http://www.rdmaconsortium.org/home)にて標準化されている(例えば非特許文献1および2)。
RDMAを使って通信を行うRDMA通信装置の構成例を図8に示す。図8を参照すると、RDMA通信装置9は、ネットワークアダプタ1、プロセッサ2、メインメモリ3、I/O装置4と、これらを接続するシステムバス5とにより構成される。
メインメモリ3は、アプリケーションが処理を実施するためのメモリ領域であるアプリケーションメモリ領域31と、通信プロトコルが制御情報を管理するためのメモリ領域である制御情報メモリ領域32との2つのメモリ領域を有する。ネットワークアダプタ1は、受信処理部8、送信処理部13、コネクション管理メモリ12より構成される。
RDMA通信装置9と他のRDMA通信装置9とでRDMAを利用した通信を行う場合、送信側のRDMA通信装置9内のプロセッサ2は、アプリケーションメモリ領域31内の送信用データを送出することを制御情報メモリ領域32に設定し、ネットワークアダプタ1に対してパケット送信を要求する。ネットワークアダプタ1内の送信処理部13は、制御情報メモリ領域32から送信用データの格納先を判別し、アプリケーションメモリ領域31から送信用データを読み出す。さらに、送信処理部13は、コネクション管理メモリ12から、パケットを送出するために必要なコネクション情報を読み出し、送出用パケットを作成し、受信側のRDMA通信装置9宛に、パケットを送出する。コネクション管理メモリ12は、必要に応じてコネクション情報の更新を行い、コネクション管理メモリ12に格納する。
受信側のRDMA通信装置9では、送信側のRDMA通信装置9から受信したパケットは、ネットワークアダプタ1の受信処理部8に入力される。受信処理部8は、受信パケットのヘッダ部分からコネクションを識別し、コネクション管理メモリ12からコネクション情報の読み出しを行う。さらに、受信処理部8は、受信パケットのヘッダに記述された情報とコネクション情報とから、当該受信パケットのペイロード部分をアプリケーションメモリ領域31のどのアドレスに書き込むかを判定して、受信パケットのペイロード部分をアプリケーションメモリ領域31に書き込む。受信処理部8は、必要に応じてコネクション情報の更新を行い、コネクション管理メモリ12を更新する。
送信側RDMA通信装置9と受信側RDMA通信装置9との間に確立されるコネクションに関し、アプリケーションメモリ領域31を特定する情報(アプリケーションメモリ領域31として使うバッファの識別子、先頭アドレス、サイズ)と、アプリケーションメモリ領域31の現在の書き込み状況(例えば、正常に受信したシーケンス番号のリスト)とをコネクション管理メモリ12に保持し、受信パケットのヘッダ部分に、ペイロードデータに含まれるデータの先頭シーケンス番号とサイズとを含ませておけば、受信パケットのヘッダに記述された情報とコネクション情報からペイロードデータの書込位置を特定することができる。受信パケットのヘッダに記述された情報とコネクション情報から具体的にどのようにしてペイロード書込位置を特定するか等、RDMA通信の標準的な実現方法に関しては、非特許文献1および2に詳細に記載されている。
図9に、RDMA通信装置9内の受信処理部8の従来の構成例を示す。従来の受信処理部8は、パケット受信処理部81、パケットエラーチェック部83、コネクション情報読出部82、プロトコル処理部84、コネクション情報書込要求部87、パケット送信要求部89、ペイロードデータ書込要求部85、制御情報書込要求部88、メインメモリ書込処理部86から構成される。
パケット受信処理部81は、送信側のRDMA通信装置9からパケットを受信すると、パケット内のヘッダ部分からプロトコル種別を判定した上で、パケットエラーチェック部83に対してパケットにエラーが存在しないかどうかのチェックを要求する。パケットエラーチェック部83は、パケット全体もしくはパケットのペイロード部分にデータエラーが存在しないかどうかのチェックを行う。エラーチェック処理とは、具体的には、レイヤ2でイーサネット(登録商標)を利用している場合のFCS演算や、レイヤ4でTCPを利用している場合のTCPチェックサム演算である。パケットにエラーが発生している場合は、そのパケットは廃棄され、以後の処理は行われない。
パケットの末尾まで検査してパケットにエラーが存在しない場合、コネクション情報読出部82は、パケット内のヘッダ部分から抽出可能なコネクションを一意に識別するためのコネクション識別子を元に、コネクション管理メモリ12からコネクション情報の読み出しを行う。コネクション情報の読み出しが完了すると、プロトコル処理部84は、読み出されたコネクション情報と受信パケットのペイロード情報とから、プロトコル処理を実施する。プロトコル処理とは、具体的には、ペイロードデータをアプリケーションメモリ領域31のどのアドレスに書き込むかを判定する処理と、コネクション情報の更新内容を決定する処理と、応答パケットの送出が必要かどうかを判定し、応答パケットの送出が必要な場合に応答パケットの情報を生成する処理と、制御情報メモリ領域32に制御情報の書き込みが必要かどうかを判定して、必要な場合は制御情報の内容を決定する処理である。応答パケットの典型的な例はTCPのACK(Acknowledgement)パケットである。
プロトコル処理部84が、ペイロードデータの書込位置を決定した時点で、ペイロードデータ書込要求部85は、メインメモリ書込処理部86経由でペイロードデータのアプリケーションメモリ領域31への書込処理を行う。コネクション情報書込要求部87は、プロトコル処理部84が更新したコネクション情報をコネクション管理メモリ12に対して書き込む。パケット送信要求部89は、プロトコル処理部84が応答パケットの送出が必要と判定した場合に、送信処理部13に対して応答パケットの送出を要求する。制御情報書込要求部88は、プロトコル処理部84が、制御情報の書き込みが必要と判定した場合に、ペイロードデータの書込完了を待ってから、メインメモリ書込処理部86経由で、制御情報メモリ領域32に対して制御情報の書込を行う。
RDMA通信における制御情報の典型的な例は、RDMA読出制御を行った際の読み出し完了通知である。RDMA通信では、転送データの全てがデータ送信側のRDMA通信装置9のアプリケーションメモリ領域31からデータ受信側のRDMA通信装置9のアプリケーションメモリ領域31に転送された時点で、RDMA読出制御が完了したという制御情報を書き込むことで、プロセッサ2に対してRDMA読み出しの完了を通知する。一度のRDMA通信に転送される転送データの総容量は、パケットのペイロード長よりも大きいことが多く、その場合、RDMA通信は、転送データを複数パケットのペイロードに分割して実行される。RDMA読み出し制御が完了したことを通知する制御情報の書き込みは、RDMA転送のためのパケットの全ての受信が完了し、アプリケーションメモリ領域31へのペイロードデータの転送が完了した時点で実施されることになる。
次に、RDMA通信装置9における従来の受信動作を図10のタイミングチャートを参照して説明する。
パケット受信処理部81は、送信側のRDMA通信装置9からパケットを受信すると、ヘッダ部分を受信し、プロトコルの種別が確定した時点で、パケットエラーチェック部83に対して処理の要求を行う。パケットエラーチェック部83は、パケットに異常が無いかどうかをパケット全体、もしくは、パケット内のペイロードデータ全体を検査することで判定する。パケットエラーチェック部83が、パケットにエラーが存在するかどうかの判定を完了するまでには、必ずパケットを末尾まで受信する必要がある。パケットエラーチェック部83でのエラーチェックが完了すると、コネクション情報読出部82がコネクション情報の読み出しを行い、プロトコル処理部84へ受け渡す。プロトコル処理部84が、パケットのヘッダ情報とコネクション情報とからペイロードの書込位置を判定した時点で、メインメモリ書込処理部86にてペイロードデータの書込処理が実行される。プロトコル処理部84において、その他のプロトコル処理が完了すると、コネクション情報書込要求部87とパケット送信要求部89の処理が実行される。メインメモリ書込処理部86での制御情報の書込処理は、プロトコル処理部84のその他プロトコル処理と、メインメモリ書込処理部86のペイロードデータの書き込みの両方の完了後に実行される。
受信パケットに含まれるペイロードデータをアプリケーションプログラムのバッファに直接書き込む機能を有する通信装置は、特許文献1にも記載されている。ただし、特許文献1に記載される通信装置では、RDMA通信専用に定義されたレイヤ4プロトコルを使用している。
他方、通信に関連する他の従来技術として、特許文献2に示されるように、受信バッファの残量に応じて、エラーチェックを伴うデータ転送とエラーチェックを省略したデータ転送とを切り替える技術がある。また別の従来技術として、特許文献3に示されるように、パケットのエラーチェックの完了を待たずにメモリへの書き込みを開始し、エラー検出時、それまでに書き込まれたエラーの含まれるデータを破棄するようにした技術がある。
特開2004-7354号公報 特開平9−149067号公報 特開平10−341419号公報 RDMA Protocol Verbs Specification (Version 1.0) pp191-201、[平成18年2月21日検索]、インターネット<URL:http://www.rdmaconsortium.org/home/draft-hilland-iwarp-verbs-v1.0-RDMAC.pdf> An RDMA Protocol Specification (Version 1.0) pp4-7、[平成18年2月21日検索]、インターネット<URL:http://www.rdmaconsortium.org/home/draft-recio-iwarp-rdmap-v1.0.pdf>
上述したように従来のRDMA通信装置は、受信したパケットにエラーが無いかどうかをチェックした上で、パケットにエラーが存在しないと分かってからペイロードをアプリケーションのバッファに書き込んでいる。パケットにエラーが存在するかどうかをチェックする代表的な例は、FCSやCRCであるが、FCSやCRCを計算してパケットにエラーが無いかどうかをチェックするためには、パケットデータの末尾までデータを受信する必要がある。インターネットで標準的に使われているイーサネット(登録商標)では通常パケットサイズは1500バイトである。よって、受信側のRDMA通信装置は、1500バイトのパケットデータを全て受け取って、パケットにエラーが無いことを確認してから、始めてペイロードデータをアプリケーションバッファに書き込む。当然ながら、転送効率を上げるためにより大きなパケットサイズで通信を行っている場合は、パケットのエラーが無いかどうかを確認するための待ち時間はさらに大きくなる。
このように従来のRDMA通信装置では、受信側RDMA通信装置9がパケットを受信してからアプリケーションバッファに書き込むまでの遅延が大きいという課題がある。その理由は、前述したように、受信側RDMA通信装置9が、パケットの全てを受信し終わってパケットにエラーが無いことを確認してから、コネクション情報の読み出し、ペイロードデータの書込位置判定に代表されるプロトコル処理、及び、ペイロードデータをアプリケーションバッファに書き込む処理を実施するためである。
このような問題を解決するために、特許文献3に記載される技術をRDMA通信に適用し、受信パケットに対するエラーチェックの完了を待たずにアプリケーションメモリへの書き込みを開始し、エラー検出時、それまでに書き込まれたエラーの含まれるデータを破棄することが考えられる。しかしながら、レイヤ4にTCPの様な通信プロトコルを利用している場合、再送されてきたパケットのペイロードの格納先が過去に受信したパケットのペイロードの格納先と一部もしくは全てが重なってしまう可能性があるため、エラーチェック前にペイロードデータの書き込みを行ってしまうと、アプリケーションメモリ領域31内の有効データを上書きしてしまう可能性があり、エラーパケットを破棄するだけではアプリケーションメモリ領域31上の有効領域がエラーパケットで破壊されたままアプリケーションに渡される危険性がある。勿論、特許文献1に見られるようなRDMA通信専用に定義されたレイヤ4プロトコルを利用して、受信パケットのペイロードの格納先が過去に受信したパケットのペイロードの格納先と重複しないことを保証するプロトコルであれば問題はないが、インターネットで標準的に利用されているTCP/IPを使うことで、RDMA通信装置の低価格化、他の通信プロトコル及びアプリケーションとの共存が可能となるため、TCP/IPを利用してRDMA通信を実現すること、つまりRDMA over TCP/IPは重要である。
本発明はこのような事情に鑑みて発案されたものであり、その目的は、受信側RDMA通信装置がパケットを受信してからアプリケーションバッファに書き込むまでの遅延を小さくし、且つ、再送されてきたパケットのペイロードの格納先が過去に受信したパケットのペイロードの格納先と一部もしくは全てが重なってしまう可能性があるレイヤ4プロトコルを利用する場合であっても、アプリケーションプログラムに破壊されたデータが渡されないようにすることにある。
本発明の第1の通信装置は、受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信装置において、前記ペイロードデータのエラーチェックを行うエラーチェック部と、前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を行う書込処理部と、前記エラーチェックの処理の完了を待たずに前記書込処理部による前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を開始させ、エラー検出時に、前記書込処理によって上書きされた前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻すプロトコル処理部とを備えることを特徴とする。
本発明の第2の通信装置は、受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信装置において、前記ペイロードデータのエラーチェックを行うエラーチェック部と、前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を行う書込処理部と、前記アプリケーションメモリ領域中の有効領域が上書きされない範囲内において、前記エラーチェックの処理の完了を待たずに前記書込処理部による前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を開始させるプロトコル処理部とを備えることを特徴とする。
『作用』
本発明にあっては、受信パケットのペイロードデータのエラーチェックと並行してアプリケーションメモリ領域への書き込みを行うことでパケット処理の遅延を削減し、エラーが検出されたら書込処理によって上書きされた前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻すか、あるいはアプリケーションメモリ領域中の有効領域が上書きされない範囲内においてペイロードデータをアプリケーションメモリ領域に書き込むことにより、破壊されたデータがアプリケーションプログラムに渡されるのを防止する。
本発明によれば、パケットを受信してからアプリケーションメモリ領域へペイロードデータを書き込むまでの遅延を小さくすることができる。その理由は、エラーチェックの処理の完了を待たずにアプリケーションメモリ領域へのペイロードデータの書込処理を開始するからである。
また本発明によれば、再送されてきたパケットのペイロードの格納先が過去に受信したパケットのペイロードの格納先と一部もしくは全てが重なってしまう可能性があるTCPなどのレイヤ4プロトコルを利用する場合であっても、アプリケーションプログラムに破壊されたデータが渡されることがない。その理由は、エラーが検出されたら書込処理によって上書きされたアプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻すか、あるいはアプリケーションメモリ領域中の有効領域が上書きされない範囲内においてペイロードデータをアプリケーションメモリ領域に書き込むようにしているからである。
『第1の実施の形態』
本発明のRDMA通信装置9の全体構成は、従来のRDMA通信装置9の構成と同様に、図8に示されるように、ネットワークアダプタ1、プロセッサ2、メインメモリ3、I/O装置4と、これらを接続するシステムバス5とにより構成され、メインメモリ3は、アプリケーションが処理を実施するためのメモリ領域であるアプリケーションメモリ領域31と、通信プロトコルが制御情報を管理するためのメモリ領域である制御情報メモリ領域32との2つのメモリ領域を有し、ネットワークアダプタ1は、受信処理部8、送信処理部13およびコネクション管理メモリ12より構成される。本発明のRDMA通信装置は、受信処理部8の構成に従来のRDMA通信装置9との違いがある。
図1を参照すると、本発明の第1の実施の形態にかかるRDMA通信装置9における受信処理部8は、パケット受信処理部81、コネクション情報読出部82、プロトコル処理部84、パケットエラーチェック部83、ペイロードデータ書込要求部85、後処理部90、制御情報書込要求部88、コネクション情報書込要求部87、メインメモリ書込処理部86、パケット送信要求部89より構成される。
送信側のRDMA通信装置9から受信したパケットは、受信側のRDMA通信装置9のパケット受信処理部8のパケット受信処理部81に入力される。パケット受信処理部81では、受信パケットのヘッダ情報から、パケットの種別、及び、コネクションの識別を行う。パケット受信処理部81でコネクションが識別されると、コネクション情報読出部82においてコネクション管理メモリ12から該当コネクションを処理するために必要な情報が読み出される。また、同時に、パケットエラーチェック部83では、受信したパケットにエラーが含まれていないかどうかのチェック処理が実行される。
コネクション情報読出部82でのコネクション情報の読み出しが完了すると、プロトコル処理部84は、受信パケットのヘッダ情報とコネクション情報とからプロトコル処理を実施し、受信パケットのペイロードをアプリケーションメモリ領域31のどこのアドレスに書き込むかを判定し、ペイロードデータ書込要求部85に対してペイロードデータの書込処理を要求する。また、プロトコル処理部84は、受信パケットにエラーがない場合を仮定して、コネクション情報の更新内容、必要に応じて受信パケットに対する応答として送出する応答パケットの情報、必要に応じて制御情報メモリ領域32に書き込みを行う制御情報を算出する。さらに、プロトコル処理部84は、パケットにエラーが発生した場合を仮定して、コネクション情報の更新内容、必要に応じて送出する応答パケットの情報、必要に応じて制御情報メモリ領域32に書き込む制御情報の内容を算出する。
メインメモリ書込処理部86は、ペイロードデータ書込要求部85からペイロード書込要求を受信すると、ペイロードデータを指定されたアプリケーションメモリ領域31のアドレスに書き込む。この書込処理は、パケットエラーチェック部83の処理結果に関係なく実行される。このため、パケット受信後、低遅延でペイロードデータをアプリケーションメモリ領域31に書き込むことが可能である。
後処理部90は、プロトコル処理部84より、受信パケットにエラーが発生した場合と、受信パケットにエラーが発生しない場合の二通りに対する後処理情報を受信する。後処理情報とは、具体的には、コネクション管理メモリ12を更新するためのコネクション情報と、応答のために送出するパケットのパケット情報と、制御情報メモリ領域32に書き込む制御情報との3つである。但し、コネクション管理メモリ12を更新するためのコネクション情報は、コネクション情報を更新しない旨の情報も含む。また、応答のために送出するパケットのパケット情報は、応答パケットを送出しない旨の情報も含む。制御情報メモリ領域32に書き込む制御情報は、制御情報を書き込まない旨の情報も含む。
後処理部90は、後処理情報とパケットエラーチェック部83のエラーチェック処理結果の両方を受信後に、後処理を開始する。具体的には、受信パケットにエラーが発生した場合と受信パケットにエラーが発生しない場合の二通りに対する後処理情報のうち、エラーチェック処理結果がエラー無しであれば前者を選択し、エラー有りであれば後者を選択し、選択した後処理情報に従って、コネクション管理メモリ12に対してコネクション情報の更新を要求する処理と、パケット送信要求部89に対して応答パケットの送出を要求する処理と、制御情報書込要求部88に対して制御情報メモリ領域32への制御情報書き込みを要求する処理との3つの処理を実施する。その際、後処理部90は、コネクション情報の更新が必要な場合は、コネクション情報書込要求部87経由にて、コネクション管理メモリ12のコネクション情報を更新する。また、後処理部90は、応答パケットの送出が必要と判定した場合は、パケット送信要求部89経由にて、送信処理部13に対して応答パケットの送出を要求する。また、後処理部90は、制御情報の書き込みが必要な場合は、制御情報書込要求部88経由でメインメモリ書込処理部86に対して、制御情報の書き込みを要求する。メインメモリ書込処理部86は、制御情報書込要求部88からの要求に従って、制御情報を制御情報メモリ領域32に書き込む。メインメモリ書込処理部86は、書き込み予定の制御情報に対応する受信パケットのペイロードデータの書き込みが完了していない場合は、書込処理の完了を待って制御情報の書き込みを実施する必要がある。
なお、後処理部90は、パケットエラーチェック部83でのエラーチェック結果に従って、パケット送信要求部89に対して応答パケットの送出を要求するが、パケットエラーチェック部83でのエラーチェック結果に関係なく、同一の応答パケットを送出する場合には、エラーチェックの結果を待たずに応答パケットの送出要求を行っても良い。また、後処理部90は、パケットエラーチェック部83でのエラーチェック結果に従って、コネクション情報書込要求部87に対するコネクション情報の更新要求を行うが、コネクション情報の一部、もしくは、全てがエラーチェック結果に関係なく同一の更新内容となる場合は、同一の更新部分に関しては、エラーチェックの結果を待たずにコネクション情報書込要求部87に対して更新要求を通知しても良い。
次に、本実施の形態にかかるRDMA通信装置9の動作を、図2の受信制御部8のタイミングチャートを参照して説明する。
パケット受信処理部81は、受信したパケットを処理する際に、ヘッダ部分を受信した時点でパケットエラーチェック部83とコネクション情報読出部82とに対して処理の要求を行う。コネクション情報読出部82がヘッダ情報を読み出した後、プロトコル処理部84がペイロード書込位置を判定すると、ペイロードデータ書込要求部85からの要求を契機にメインメモリ書込処理部86がペイロードデータの書き込みを開始する。また、プロトコル処理部84がその他のプロトコル処理を完了し、かつ、パケットエラーチェック部83がパケット末尾までのエラーチェックを完了すると、後処理部90が、エラーが発生したかどうかに従って、実行すべき処理を選択する。処理選択の結果、必要に応じて、コネクション情報書込要求部87でコネクション情報の更新が行われ、パケット送信要求部89において応答パケットの送出要求が行われる。メインメモリ書込処理部86での制御情報の書込動作は、後処理部90での実行処理の選択とメインメモリ書込処理部86でのペイロードデータの書込処理との双方が完了した後に実行される。
このように、コネクション情報読み出し処理、プロトコル処理部84でのペイロード書込位置判定処理、及び、メインメモリ書込処理部86でのペイロードデータ書込処理という一連の処理が、パケットエラーチェック部83でのエラーチェック結果を待たずに即時に実施されることにより、全体としてのパケット処理遅延を削減することが可能である。
『詳細な動作例』
次に本実施の形態にかかるRDMA通信装置9の詳細な動作例について、図面を参照して説明する。なお、以下の動作例においては、RDMA通信装置9のレイヤ4プロトコルとしてTCPを利用するものとする。
『詳細な動作例1』
図3に本発明にかかるRDMA通信装置9のパケット受信時におけるアプリケーションメモリ領域31の管理内容の変化例1を示す。
アプリケーションメモリ領域31に、データ1とデータ2が書き込まれており、それぞれ有効領域1、有効領域2となっていたとする。それ以外の未受信の領域は無効領域とする。なお、有効領域とは、アプリケーションメモリ領域31内で有効にデータを受信したものとして管理されているメモリ領域であり、RDMA通信完了時にプロセッサ2に正常データとして通知される予定のデータ領域である。これに対して無効領域は、アプリケーションメモリ領域31内でまだ有効なデータを受信しておらず、送信側のRDMA通信装置9からの正常データ受信が必要なメモリ領域である。なお、この有効領域、無効領域はネットワークアダプタ1が受信データを管理するための領域である。よって、プロセッサ2が、RDMA通信完了前にメモリ領域が有効であるか無効であるかを参照して、有効領域に対する処理を開始することはない。プロセッサ2が、最終的な有効領域にアクセスするのは、RDMA通信における転送データ全体の受信が完了して、RDMA通信完了をネットワークアダプタ1が制御情報メモリ領域32を通じてプロセッサ2に通知した後である。この特性により、ネットワークアダプタ1は、一端、有効領域となったデータ領域を上書きして、無効領域にすることが可能である。
なお、図3では、説明を分かりやすくするためデータ1とデータ2とに対応付けて有効領域1と有効領域2を別々の領域として管理しているように記載しているが、このような連続した2つ以上の領域は、一つの連続した有効領域として管理しても良い。
上記の状態において、送信側のRDMA通信装置9からペイロードデータにデータ3の入ったパケットを受信したとする。ここで、データ3は、データ2の直ぐ後ろに続くデータであるとすると、受信側のRDMA通信装置9は、受信パケットにエラーがあるかどうかのチェックが完了する前に、このデータ3をアプリケーションメモリ領域31に書き込む。その後、受信パケットのエラーチェックが完了し、エラーが発生していない場合は、書き込んだデータ3を有効データとして管理し、また、送信側のRDMA通信装置9に対して応答パケットとしてデータ3まで受信したことを通知する。
他方、受信側のRDMA装置9は、受信パケットにエラーが存在した場合、書き込んだデータ3を無効領域として管理する。受信側のRDMA装置9が、特に応答パケットを送出しなければ、送信側のRDMA通信装置9は、パケットが廃棄されたものと判定し、データ3を含むペイロード付きパケットを再送する。受信側のRDMA通信装置9は、データ3を含むペイロード付きパケットを再度受信すると、一度目と同様の処理を実行する。受信側のRDMA通信装置9は、再受信したデータ3を含むペイロードのパケットにエラーが存在しなければ、データ部分を有効領域として管理する。最終的にRDMA通信での転送データの全てが有効領域に書き込まれた後に、制御情報メモリ領域32にデータの受信完了が通知され、RDMA通信装置9内のプロセッサ2はデータを受信したことを認識する。
なお、本実施の形態においては、最初のデータ3を含むペイロード付きパケットを受信した際に、パケットにエラーが発生した場合、応答パケットを返さないことにより、データ3を含むペイロード付きパケットが再送されるが、あえて、データ2まで受信したという応答パケットを返すことにより、データ3を含むペイロード付きパケットの再送パケットが早く送出されるようにする工夫も可能である。
『詳細な動作例2』
図4に本実施の形態にかかるRDMA通信装置9におけるパケット受信時のアプリケーションメモリ領域31の管理内容の変化例2を示す。
最初の段階では、アプリケーションメモリには、データ1、データ2、データ3、データ4がそれぞれ有効領域1、2、3、4として書き込まれている状態とする。データ1、データ2は、連続した領域であるが、データ2とデータ3間及びデータ3とデータ4間には無効領域が存在する。なお、図中の「有」は有効領域、「無」は無効領域、「デ」はデータ、「未」は未受信を意味する。このように有効領域が非連続な状態になる主原因はパケットロスである。
この状態で、データ5のペイロードを有する再送パケットを受信したとする。ここで、データ5は、データ2の末尾からデータ3の領域を含み、データ4の途中まで続くデータ領域を占めているものとする。受信側のRDMA通信装置9は、データ5のペイロード付きパケットを受信すると、パケットにエラーが存在するかどうかを確認する前に、アプリケーションメモリ領域31にデータ5を書き込む。データ5の書込処理において、既に有効データとなっていた部分、つまり、データ3の全てとデータ4の先頭からの一部データは、データ5で上書きされることになる。
データ5のパケットのエラーチェックが完了して、パケットにエラーが存在しない場合には、書き込んだデータ5のメモリ領域が新たに有効領域となる。結果として、有効領域は、データ1から始まりデータ4の末尾までの連続した領域となる。よって、TCPのACKパケットとして、データ4の末尾まで受信したというACKシーケンス番号をつけて、応答パケットを送信側のRDMA通信装置9宛に送出する。
他方、データ5のパケットにエラーが存在した場合は、データ5の書き込まれた部分は、新たに無効領域として定義される。結果として、元は、有効領域であったデータ3の格納されていた有効領域3の範囲、及び、データ4の格納されていた有効領域4の範囲の先頭部分に関して、無効領域に変更されることになる。受信側RDMA通信装置9内の受信制御部8内のプロトコル処理部84では、受信パケットにエラーが発生しない場合の通常のプロトコル処理とは別に、受信パケットにエラーが発生した場合に整合性を取るためのプロトコル処理を実行する機能を有する。
受信パケットにエラーが発生することにより整合性を取るためのプロトコル処理の具体例としては、エラーパケットのペイロードデータが書き込まれた部分を無効領域として管理するデータを生成することである。レイヤ4がTCPでありSACKオプション(RFC2018)を利用しない場合、エラーの発生したデータ5の部分を無効領域として管理し、無効領域を含まない連続した有効領域の末尾部分を示す正しいACKパケットを送出していれば、新たに無効領域として定義された部分に関しては、再送パケットが送出されることになるので、最終的には正常なパケットを受信することが可能である。
また、レイヤ4プロトコルとして、どこが有効領域であり、また、どこが無効領域であるかを通知するようなTCP SACKオプションのようなプロトコルを利用する場合、受信パケットにエラーが発生することにより整合性を取るためのプロトコル処理の他の具体例としては、パケットをエラーとして廃棄することによる有効領域と無効領域の変化をACK応答パケットとして、送信側のRDMA通信装置9に通知する処理がある。
次に図5を参照して、アプリケーションメモリ領域31に書き込まれるデータの有効領域、無効領域を管理するコネクション情報の例を説明する。図5の例では、rcv_nxt、rcv_wnd、受信中データSEQ番号の3種類のデータで、データの有効領域および無効領域を管理する。ここで、rcv_nxtは、データをどこまで連続して正常に受信しているかをデータSEQ番号で表示し、rcv_wndは、有効な受信範囲をrcv_nxtからのデータSEQ番号で表示し、受信中データSEQ番号は、rcv_wndのうち正常に受信したデータの範囲をデータSEQ番号で表示する。例えば図5の上段の状態は、SEQ番号100まで正常にデータを受信しており、残りの有効な受信範囲が1000−100=900であり、そのうち、SEQ番号200から400までのデータと、600〜850までのデータを正常に受信している状態にあるため、rcv_nxt=100、rcv_wnd=900、受信中データSEQ番号=200−400,600−850となっている。
この状態で、先頭SEQ番号=500、レングス=200(SEQ番号)がヘッダに設定された再送パケットを受信し、そのパケットに誤りがあったとすると、図5の下段に示すように当該パケットのペイロードが上書きされたSEQ番号=500〜700の箇所が無効領域となり、その結果、コネクション情報のうち、受信中データSEQ番号が、200−400,600−850から、200−400,700−850に書き換えられる。因みに、当該再送パケットにエラーがない場合には、受信中データSEQ番号は、200−400、500−850となる。
次に本実施の形態の効果を説明する。
本実施の形態によれば、メインメモリ書込処理部86によるペイロードデータの書込処理が、パケットエラーチェック部83でのエラーチェック結果を待たずに即時に実施されるため、図2のタイミングチャートに示されるように全体としてのパケット処理遅延を削減することが可能である。
また本実施の形態によれば、パケットエラーが検出された場合には、当該パケットのペイロードデータを無効にするだけでなく、既に正常に受信していたデータのうち当該ペイロードデータによって上書きされた部分を無効な状態に戻すことにより、アプリケーションプログラムに破壊されたデータが渡されてしまう事態を回避することができる。
さらに本実施の形態によれば、レイヤ4プロトコルとして、どこが有効領域であり、また、どこが無効領域であるかを通知するようなTCP SACKオプションのようなプロトコルを利用する場合に、パケットをエラーとして廃棄することによる有効領域と無効領域の変化をACK応答パケットとして送信側のRDMA通信装置9に通知することにより、一旦有効領域として通知したメモリ領域を後に無効領域として送信側に認識させることが可能となる。
『第2の実施の形態』
第1の実施の形態では、エラーチェック結果が出るのを待たずにペイロードデータの全てをアプリケーションメモリ領域に書き込むようにしたが、本実施の形態である第2の実施の形態から後述する第6の実施の形態までは、有効領域が上書きされない範囲内においてペイロードデータの書き込みを実施する。
図6を参照すると、本発明の第2の実施の形態にかかるRDMA通信装置9の受信処理部8は、パケットエラーチェック部83からプロトコル処理部84に対してエラーチェック結果が通知されるようになっており、プロトコル処理部84は、図3で示したように全ての有効領域が連続し、有効領域と有効領域の間に無効領域が存在しない場合にのみ、パケットエラーチェック部83の処理結果を待たずに、ペイロードデータ書込要求部85に対してペイロードデータの書き込みを要求し、図4で示したように有効領域と有効領域の間に無効領域が存在するような場合、プロトコル処理部84は、パケットエラーチェック部83でのエラーチェックの結果を待ち、エラーが発生していないときのみペイロードデータの書込要求を行う。すなわち、本実施の形態は、TCPの仕様RFC793によれば、有効領域が連続している状態において、アプリケーションメモリ領域31に書き込まれるペイロードデータは、既に存在する有効領域と重ならないことが保証される点に着目している。その他の構成と動作は第1の実施の形態と同じである。
次に本実施の形態の効果を説明する。
本実施の形態によれば、パケットエラーチェック部83でのエラーチェックが完了する前に、プロトコル処理部84からペイロードデータの書込要求処理を実施する条件を、有効領域が連続している場合に限定することで、後処理部90で実行される後処理が単純になるという効果が得られる。すなわち、書き込まれるペイロードデータが既に存在する有効領域と重ならないことが保証されるため、パケットにエラーが発生した際に必要な後処理は、単純にパケットを受信しなかったものとして、コネクション情報の更新を行わず、応答パケットを送出しなければよく、第1の実施の形態のように、エラーが発生した場合に、既存のデータが有効領域から無効領域に変更されることに付随する専用の整合処理を実行する必要が無くなる分だけ、処理が簡単になるからである。
また、本実施の形態によれば、受信側のRDMA通信装置9が生成する応答パケットが、有効領域と無効領域を送信側のRDMA通信装置9に通知するプロトコルを利用し、かつ、その一貫性を保つ必要がある場合、すなわち、一度有効領域と判定したメモリ領域を後から無効領域と判定できない場合にも適用可能であるというメリットがある。
なお、ネットワークが安定して2台のRDMA通信装置9間のパケット廃棄がほとんど発生しない状態においては、ほとんどの状態において有効領域が連続した状態であり、有効領域と有効領域の間が無効領域となっていることは少ないと考えられ、有効領域と有効領域の間に無効領域が存在する場合に、パケットエラーチェック部83でのエラーチェック完了前にペイロードデータが書き込みされて通信遅延を削減するという効果が得られない点に関しては、システム全体としての影響は少ないと考えられる。
また、有効領域と有効領域の間に無効領域が存在する状況というのは、ネットワークが安定しておらず再送が発生しやすい状況であり、システム全体としては、エラーチェック完了前にペイロードデータを書き込むことによる遅延時間削減の効果より、パケット再送による通信遅延時間の増大の影響の方が格段に大きいため、有効領域と有効領域の間の無効領域が存在する状況では、エラーチェック完了前にペイロードデータを書き込む処理を行わなくてもシステムへの影響は小さいと考えられる。
『第3の実施の形態』
本実施の形態にかかるRDMA通信装置9の受信処理部8は、第2の実施の形態にかかるRDMA通信装置9の受信処理部8と同様に図6に示される構成を備えており、第2の実施の形態と比較して、パケットエラーチェック部83からプロトコル処理部84に対してエラーチェック結果が通知される点は同じであるが、本実施の形態のプロトコル処理部84は、ペイロードデータ書込位置を判定する際に、アプリケーションメモリ領域31への書込予定のデータと既に存在する有効領域との間に重なっている部分があるかどうかをチェックし、重なっている部分が存在しない場合には、パケットエラーチェック部83でのエラーチェックの結果を待たずに、ペイロードデータ書込要求部85に対してペイロードデータの書き込みを要求し、重なっている部分が存在する場合には、パケットエラーチェック部83でのエラーチェック結果を待ち、エラーが発生していないことを確認してから、ペイロードデータ書込要求部85に対してペイロードデータの書き込みを要求する点で相違する。その他の構成と動作は第2の実施の形態と同じである。
次に本実施の形態の効果を説明する。
本実施の形態によれば、第2の実施の形態と同様に、エラーチェックの完了前にペイロードデータを書き込む際に、既存の有効領域を上書きしないことが保証されるため、後処理部90において、パケットにエラーが発生した場合の後処理を単純にすることができるという効果が得られる。
また、本実施の形態では、有効領域と有効領域の間に無効領域が存在する場合においても、新たに書き込むペイロードデータと有効領域との間に重なりが生じなければ、エラーチェックの完了を待たずにペイロードの書き込みが開始されるので、第2の実施の形態では通信遅延を削減できない状況でも通信遅延を削減できるという効果が得られる。
なお、プロトコル処理部84が、ペイロードデータ書込要求部85に対して要求するペイロードデータは、受信したパケットのペイロード全体とは限らず、利用するレイヤ4プロトコルに依存して異なる。例えば、TCPの場合は、受信したパケット内のペイロードの先頭部分が、既存の有効領域と重なる場合は、既存の有効領域を優先するため受信したパケットの先頭の重なっている部分は除去してペイロードデータの書込要求を行う。逆に、受信したパケットのペイロードの先頭部分よりも後ろ側から開始されるデータ部分が有効データと重なる場合は、受信したパケットを優先して、既存のペイロードデータに上書き処理を行う。具体例を挙げて説明すると、例えば図5の上段の状況において、SEQ番号=300、レングス=400がヘッダに設定された再送パケットを受信した場合、SEQ番号300〜400の部分は上書きされず、SEQ番号600〜700の部分は上書きされる。
『第4の実施の形態』
本実施の形態にかかるRDMA通信装置9の受信処理部8は、第1の実施の形態にかかるRDMA通信装置9の受信処理部8と同様に図1に示される構成を備えており、第1の実施の形態と比較して、プロトコル処理部84が、受信したパケットをペイロードデータ書込要求部85に書込要求する際に、アプリケーションメモリ領域31内の有効領域との比較を行い、データに重なりがある場合は、全て、アプリケーションメモリ領域31内に存在する有効領域を優先するものとして、重なっていないデータ部分だけを、エラーチェックの完了前にペイロードデータ書込要求部85に対して書き込みを要求する点で相違する。ここで、要求されるデータは、連続している場合もあれば、不連続の場合もありうる。不連続の場合には、ペイロードデータ書込要求部85は、不連続なデータに対する書込要求を処理する必要がある。その他の構成および動作は第1の実施の形態と同じである。
次に本実施の形態の効果を説明する。
本実施の形態によれば、第2および第3の実施の形態と同様に、既存の有効領域を上書きしないことが保証されるため、後処理部90において、パケットにエラーが発生した場合の後処理を単純化することができるという効果が得られる。また、有効領域の状態に関係なく、常にエラーチェック前にペイロードデータの書込要求が行われるため、通信時間を削減できるという効果が得られる。
また、受信パケットのペイロードと有効領域との間に重なりがあった際に、重なった部分のペイロードデータを書き込む必要がないため、ペイロード書込時間、及び、ペイロード書込最中のシステムバス5の占有時間を削減できるという効果が得られる。
反面、ペイロードデータに重なりが生じた場合に、既に書き込まれていた有効領域の方をすべて優先するという動作は、TCPの仕様と違反することになる点には注意が必要である。すなわち、TCPの場合は、受信したパケット内のペイロードの先頭部分より後ろ側から開始されるデータ部分が既存の有効領域と重なる場合は、受信したパケットを優先して上書きするが、本実施の形態ではその部分も上書きしない。但し、通常の通信装置では、最初に書き込んだデータと後から書き込まれるデータのペイロードの内容が異なることは無いため、どちらのデータを優先しても、実際の結果に違いないと想定されるため、このような動作を行っても実用上の問題は無いと判断される。
『第5の実施の形態』
本実施の形態にかかるRDMA通信装置9の受信処理部8は、第2および第3の実施の形態にかかるRDMA通信装置9の受信処理部8と同様に図6に示される構成を備えており、プロトコル処理部84が、受信したパケットをペイロードデータ書込要求部85に書込要求する際に、アプリケーションメモリ領域31内の有効領域との比較を行い、データに重なりがある場合は、重なっていないデータ部分だけを、エラーチェックの完了前にペイロードデータ書込要求部85に対して書き込みを要求する点で第4の実施の形態と同じであるが、さらに、パケットエラーチェックが完了しエラーが存在しない場合には、本来、書き込む必要があったが、データに重なりがあったために書き込めなかったデータ部分の書込処理を行う点で、第4の実施の形態と相違する。
次に本実施の形態の効果を説明する。
本実施の形態では、パケットのペイロードとアプリケーションメモリ領域31中の有効領域とに重なりがある場合に、重なりの無い部分をエラーチェック前に書き込み、重なっている部分はエラーチェック後に書き込むことで、エラーチェック後には重なっている部分だけの転送で済み、第2および第3の実施の形態よりも通信時間を削減できるという効果がある。
『第6の実施の形態』
本実施の形態にかかるRDMA通信装置9の受信処理部8は、第2、第3および第5の実施の形態にかかるRDMA通信装置9の受信処理部8と同様に図6に示される構成を備えており、プロトコル処理部84は、受信したパケットをペイロードデータ書込要求部85に書込要求する際に、アプリケーションメモリ領域31内の有効領域との比較を行い、データに重なりがある場合は、書込予定データの先頭から最初の重なりがあるところまでを、エラーチェック完了前に書き込みを行い、そして、パケットエラーチェックが完了し、エラーが存在しない場合には、残りの書込予定データの書き込みを行う点で、第4、第5の実施の形態と相違する。その他の構成および動作は第4、第5の実施の形態と同じである。
次に本実施の形態の効果を説明する。
本実施の形態では、第4および第5の実施の形態のように、ペイロードデータ書込要求部85での一回の書込処理を複数回に分けて処理する必要がないため、第4および第5の実施の形態に比べて処理を単純化でき、また、複数回転送することにより発生する転送毎の処理およびペイロード転送のオーバヘッドを削減できるという効果が得られる。
『第7の実施の形態』
図7を参照すると、本発明の第7の実施の形態にかかるRDMA通信装置9の受信処理部8は、パケットエラーチェック部83からペイロードデータ書込要求部85に対してエラーチェック結果が通知されるようになっており、ペイロードデータ書込要求部85は、パケットエラーチェック部83から、受信パケットにエラーがあることが通知されると、該当する受信パケットのペイロードデータ書込処理を書込途中であってもキャンセルする機能を有する点で、第1の実施の形態と相違する。その他の構成および動作は第1の実施の形態と同じである。
次に本実施の形態の効果を説明する。
本実施の形態では、受信パケットにエラーが発生した際にペイロードの書込処理をキャンセルすることで、無駄なペイロードデータ転送を削減し、受信処理部8の処理量、及び、システムバス5の占有時間を削減できるという効果がある。なお、受信パケットにエラーが発生した際にペイロードの書込処理をキャンセルする構成は、第2ないし第6の実施の形態に対しても適用可能である。
『第8の実施の形態』
本実施の形態にかかるRDMA通信装置9の受信処理部8は、第1の実施の形態にかかるRDMA通信装置9の受信処理部8と同様に図1に示される構成を備えており、プロトコル処理部84が、パケットエラーが発生した場合の後処理の算出を行わずに、パケットエラーが発生した場合の後処理に必要な情報を後処理部90に対して通知し、後処理部90は、パケットエラーチェック部83でエラーが発生した場合に、始めて、エラーが発生した際に必要な後処理の算出を行って、後処理を実行する点で、第1の実施の形態と相違する。つまり、受信処理部8は、有効領域との重なり部分が存在する状態でペイロードデータを書き込んだ際に、エラーが発生したときの新しい有効領域を算出する処理が必要であるが、本処理に関して、第1の実施の形態では、プロトコル処理部84がパケットエラーチェック部83でのエラーチェックの結果を待たずに実施していたのに対し、本実施の形態では、後処理部90がパケットエラーチェック部83でのエラーチェック完了後にパケットにエラーが発生していた場合にのみ実施する。その他の構成および動作は第1の実施の形態と同じである。
次に本実施の形態の効果を説明する。
本実施の形態では、実際にパケットにエラーが発生していた場合のみ、後処理でエラー発生時に必要な処理を実施するため、第1の実施の形態に比べてエラーが発生していない場合の処理負荷を削減できるという効果が得られる。
また本実施の形態では、ネットワークが安定している通常のRDMA通信装置9間のデータ転送においては、パケットにエラーが発生すること自体がまれであると考えられるため、通常状態で上記のプロトコル処理部84がエラー発生時の処理を算出する必要がないという効果が得られる。
以上、本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。また、本発明の通信装置は、その有する機能をハードウェア的に実現することは勿論、コンピュータと通信プログラムとで実現することができる。通信プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態におけるRDMA通信装置として機能させる。
本発明の第1、第4および第8の実施の形態にかかるRDMA通信装置内の受信処理部の構成例を示すブロック図である。 本発明の第1の実施の形態における受信制御のタイミングチャートである。 本発明のRDMA通信装置におけるパケット受信時のアプリケーションメモリ領域の管理内容の変化例を示す図である。 本発明のRDMA通信装置におけるパケット受信時のアプリケーションメモリ領域の管理内容の別の変化例を示す図である。 本発明のRDMA通信装置におけるパケット受信時のアプリケーションメモリ領域の管理内容の更に別の変化例を示す図である。 本発明の第2、第3、第5、第6の実施の形態にかかるRDMA通信装置内の受信処理部の構成例を示すブロック図である。 本発明の第7の実施の形態にかかるRDMA通信装置内の受信処理部の構成例を示すブロック図である。 RDMA通信装置の構成例を示すブロック図である。 従来のRDMA通信装置内の受信処理部の構成例を示すブロック図である。 従来のRDMA通信装置における受信制御のタイミングチャートである。
符号の説明
1…ネットワークアダプタ
2…プロセッサ
3…メインメモリ
4…I/O装置
5…システムバス
8…受信処理部
9…RDMA通信装置
12…コネクション管理メモリ
13…送信処理部
31…アプリケーションメモリ領域
32…制御情報メモリ領域
81…パケット受信部
82…コネクション情報読み出し部
83…パケットエラーチェック部
84…プロトコル処理部
85…ペイロードデータ書込要求部
86…メインメモリ書込処理部
87…コネクション情報書込要求部
88…パケット送信要求部
89…制御情報書込要求部
90…後処理部

Claims (20)

  1. 受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信装置において、前記ペイロードデータのエラーチェックを行うエラーチェック部と、前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を行う書込処理部と、前記エラーチェックの処理の完了を待たずに前記書込処理部による前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を開始させ、エラー検出時に、前記書込処理によって上書きされた前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻すプロトコル処理部とを備えることを特徴とする通信装置。
  2. 前記プロトコル処理部は、前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻した際、有効領域及び無効領域の情報を通知する応答パケットを送信側に送出することを特徴とする請求項1記載の通信装置。
  3. 受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信装置において、前記ペイロードデータのエラーチェックを行うエラーチェック部と、前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を行う書込処理部と、前記アプリケーションメモリ領域中の有効領域が上書きされない範囲内において、前記エラーチェックの処理の完了を待たずに前記書込処理部による前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を開始させるプロトコル処理部とを備えることを特徴とする通信装置。
  4. 前記プロトコル処理部は、前記アプリケーションメモリ領域中の有効領域と有効領域の間に無効領域が存在せず有効領域が連続している場合、前記ペイロードデータの全てを、前記エラーチェックの処理の完了を待たずに前記書込処理部によって前記アプリケーションメモリ領域へ書き込むことを特徴とする請求項3記載の通信装置。
  5. 前記プロトコル処理部は、前記アプリケーションメモリ領域中の有効領域と書込予定の前記ペイロードデータとの重なりをチェックし、重なりが存在しないとき、前記ペイロードデータの全てを、前記エラーチェックの処理の完了を待たずに前記書込処理部によって前記アプリケーションメモリ領域へ書き込むことを特徴とする請求項3記載の通信装置。
  6. 前記プロトコル処理部は、前記アプリケーションメモリ領域中の有効領域と書込予定の前記ペイロードデータとの重なりをチェックし、前記ペイロードデータの少なくとも一部が有効領域と重ならないとき、前記ペイロードデータ中の有効領域と重ならないデータ部分を、前記エラーチェックの処理の完了を待たずに前記書込処理部によって前記アプリケーションメモリ領域へ書き込むことを特徴とする請求項3記載の通信装置。
  7. 前記プロトコル処理部は、前記ペイロードデータ中の有効領域と重なるデータ部分を、前記エラーチェックの処理の完了後にエラーが発生していないことを条件に前記書込処理部によって前記アプリケーションメモリ領域に書き込むことを特徴とする請求項6記載の通信装置。
  8. 前記プロトコル処理部は、前記アプリケーションメモリ領域中の有効領域と書込予定の前記ペイロードデータとの重なりをチェックし、前記ペイロードデータの少なくとも一部が有効領域と重ならないとき、前記ペイロードデータの先頭から最初の重なりの直前までのデータ部分を、前記エラーチェックの処理の完了を待たずに前記書込処理部によって前記アプリケーションメモリ領域へ書き込むことを特徴とする請求項3記載の通信装置。
  9. 前記プロトコル処理部は、前記ペイロードデータの残りのデータ部分を、前記エラーチェックの処理の完了後にエラーが発生していないことを条件に前記書込処理部によって前記アプリケーションメモリ領域に書き込むことを特徴とする請求項8記載の通信装置。
  10. 前記書込処理部は、書込処理を行っている前記ペイロードデータについて前記エラーチェック部でエラーが検出された場合、当該ペイロードデータの書込処理を中断することを特徴とする請求項1乃至9の何れか1項に記載の通信装置。
  11. 前記プロトコル処理部は、前記エラーチェックの処理の完了を待たずに、エラーが発生した場合に行うべき後処理と発生しなかった場合に行うべき後処理とを事前に算出することを特徴とする請求項1乃至9の何れか1項に記載の通信装置。
  12. 前記プロトコル処理部は、前記エラーチェックの処理の完了を待たずに、エラーが発生しなかった場合に行うべき後処理を事前に算出し、予想に反してエラーが発生した場合にはその時点でエラーが発生した場合に行うべき後処理を算出することを特徴とする請求項1乃至9の何れか1項に記載の通信装置。
  13. 再送されてきたパケットのペイロードの格納先が過去に受信したパケットのペイロードの格納先と一部もしくは全てが重なってしまう可能性があるレイヤ4プロトコルを使用することを特徴とする請求項1乃至9の何れか1項に記載の通信装置。
  14. RDMA over TCPプロトコルを使用することを特徴とする請求項1乃至9の何れか1項に記載の通信装置。
  15. 受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信方法において、前記ペイロードデータのエラーチェックを行う第1のステップと、前記エラーチェックの処理の完了を待たずに前記ペイロードデータを前記アプリケーションメモリ領域へ書き込む第2のステップと、エラー検出時に、前記ペイロードデータによって上書きされた前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻す第3のステップとを含むことを特徴とする通信方法。
  16. 前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻した際、有効領域及び無効領域の情報を通知する応答パケットを送信側に送出する第4のステップを含むことを特徴とする請求項15記載の通信方法。
  17. 受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信方法において、前記ペイロードデータのエラーチェックを行う第1のステップと、前記ペイロードデータの書込処理によって前記アプリケーションメモリ領域中の有効領域が上書きされるかどうかをチェックする第2のステップと、前記アプリケーションメモリ領域中の有効領域が上書きされない範囲内において、前記エラーチェックの処理の完了を待たずに前記書込処理部による前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を開始させる第3のステップとを含むことを特徴とする通信方法。
  18. 受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信装置を構成するコンピュータに、前記ペイロードデータのエラーチェックを行う第1のステップと、前記エラーチェックの処理の完了を待たずに前記ペイロードデータを前記アプリケーションメモリ領域へ書き込む第2のステップと、エラー検出時に、前記ペイロードデータによって上書きされた前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻す第3のステップとを行わせるためのプログラム。
  19. 前記コンピュータに、さらに、前記アプリケーションメモリ領域中の有効領域を未だ正常なデータを受信していない無効領域に戻した際、有効領域及び無効領域の情報を通知する応答パケットを送信側に送出する第4のステップを行わせることを特徴とする請求項18記載のプログラム。
  20. 受信パケットに含まれるペイロードデータをアプリケーションメモリ領域に直接転送する通信装置を構成するコンピュータに、前記ペイロードデータのエラーチェックを行う第1のステップと、前記ペイロードデータの書込処理によって前記アプリケーションメモリ領域中の有効領域が上書きされるかどうかをチェックする第2のステップと、前記アプリケーションメモリ領域中の有効領域が上書きされない範囲内において、前記エラーチェックの処理の完了を待たずに前記書込処理部による前記アプリケーションメモリ領域への前記ペイロードデータの書込処理を開始させる第3のステップとを行わせるためのプログラム。
JP2006055969A 2006-03-02 2006-03-02 通信装置および通信方法 Expired - Fee Related JP4736859B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006055969A JP4736859B2 (ja) 2006-03-02 2006-03-02 通信装置および通信方法
US11/708,347 US7817572B2 (en) 2006-03-02 2007-02-21 Communications apparatus and communication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006055969A JP4736859B2 (ja) 2006-03-02 2006-03-02 通信装置および通信方法

Publications (2)

Publication Number Publication Date
JP2007235674A JP2007235674A (ja) 2007-09-13
JP4736859B2 true JP4736859B2 (ja) 2011-07-27

Family

ID=38471410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006055969A Expired - Fee Related JP4736859B2 (ja) 2006-03-02 2006-03-02 通信装置および通信方法

Country Status (2)

Country Link
US (1) US7817572B2 (ja)
JP (1) JP4736859B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8351426B2 (en) * 2008-03-20 2013-01-08 International Business Machines Corporation Ethernet virtualization using assisted frame correction
EP2871811B1 (en) * 2012-07-25 2018-04-04 Huawei Technologies Co., Ltd. Data shunting method, data transmission device and shunting node device
US8988987B2 (en) * 2012-10-25 2015-03-24 International Business Machines Corporation Technology for network communication by a computer system using at least two communication protocols
JP6245700B2 (ja) * 2014-04-11 2017-12-13 国立大学法人 東京大学 計算機システム、データの検査方法及び計算機
WO2023032127A1 (ja) * 2021-09-02 2023-03-09 日本電信電話株式会社 通信システム、計算機、通信方法、および、プログラム
WO2023047567A1 (ja) * 2021-09-27 2023-03-30 日本電信電話株式会社 中間装置、通信方法、およびプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02181248A (ja) 1989-01-06 1990-07-16 Fujitsu Ltd Dmaシステム
JPH03203445A (ja) 1989-12-29 1991-09-05 Fujitsu Ltd 受信バッファ切り替えによる回線制御方式
JPH0522350A (ja) * 1991-07-17 1993-01-29 Matsushita Electric Ind Co Ltd 時間軸変換メモリ装置
JP3203445B2 (ja) 1993-03-09 2001-08-27 マツダ株式会社 ターボ過給機付エンジンの排気還流装置
JPH09149067A (ja) * 1995-11-21 1997-06-06 Hitachi Cable Ltd スイッチングハブ
JP3356203B2 (ja) 1997-06-09 2002-12-16 日本電気株式会社 Mpeg2トランスポートストリーム分離方法と回路
US6977930B1 (en) * 2000-02-14 2005-12-20 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
JP2004007354A (ja) * 2002-04-02 2004-01-08 Nippon Telegr & Teleph Corp <Ntt> 計算機間データ転送方法及びデータ同報配信方法
WO2003104943A2 (en) * 2002-06-11 2003-12-18 Ashish A Pandya High performance ip processor for tcp/ip, rdma and ip storage applications
JP4408692B2 (ja) * 2003-12-19 2010-02-03 富士通株式会社 通信装置管理プログラム
US20070168452A1 (en) * 2004-05-21 2007-07-19 Winter Howard W Method of processing data, a network analyser card, a host and an intrusion detection system

Also Published As

Publication number Publication date
US20070206598A1 (en) 2007-09-06
JP2007235674A (ja) 2007-09-13
US7817572B2 (en) 2010-10-19

Similar Documents

Publication Publication Date Title
JP4160642B2 (ja) ネットワークデータ転送方法
US7397800B2 (en) Method and system for data placement of out-of-order (OOO) TCP segments
US10430374B2 (en) Selective acknowledgement of RDMA packets
US8706901B2 (en) Protocols for high performance computing visualization, computational steering and forward progress
US6470391B2 (en) Method for transmitting data via a network in a form of divided sub-packets
US7363572B2 (en) Editing outbound TCP frames and generating acknowledgements
US8655974B2 (en) Zero copy data transmission in a software based RDMA network stack
US9071525B2 (en) Data receiving apparatus, data receiving method, and program storage medium
JP4736859B2 (ja) 通信装置および通信方法
JP4464969B2 (ja) Rdma完了および再送信システムおよび方法
CN113709131B (zh) 一种网络数据传输方法、装置、计算机设备及可读介质
JP4786354B2 (ja) iSCSI通信制御方法とそれを用いた記憶システム
US6826148B1 (en) System and method for implementing a routing scheme in a computer network using intention packets when fault conditions are detected
US9130740B2 (en) Variable acknowledge rate to reduce bus contention in presence of communication errors
JP4979823B2 (ja) データ転送エラー検査
JP6745821B2 (ja) ハイパーテキスト・トランスファ・プロトコル要求の再送方法及びデバイス並びにクライアント端末
US20070115820A1 (en) Apparatus and method for creating and managing TCP transmission information based on TOE
JP3727928B2 (ja) 情報処理装置及び再送制御方法
US20170265103A1 (en) Communication device, communication method, and non-transitory computer readable medium
US20080091841A1 (en) Communication method, communication system, communication apparatus, and recording medium
JP4510524B2 (ja) データ通信装置
JP2008148181A (ja) 通信装置及び通信制御方法
CN117729274A (zh) 报文处理的方法、装置、设备及可读存储介质
CN115314445A (zh) 数据报文传输方法及装置、存储介质和电子设备
CN115686344A (zh) 网络接口卡、数据存储方法和存储装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090212

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090805

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110204

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110418

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees