(57)【要約】【課題】  RDMA通信では、RDMA受信装置は受信端末のメモリ領域を確保した上で、RDMA送信装置にメモリ領域を通知する処理が必要であり、また、複数のRDMA送信装置が存在する場合、受信端末において、各RDMA送信装置向けにメモリ領域が別々に確保されるため、メモリの効率的な利用が困難である。【解決手段】  RDMA受信装置１０４は、確保メモリ領域テーブル１０８及び利用メモリ領域テーブル１０９により受信端末のメモリ領域を管理する。RDMA受信装置１０４は、受信したRDMAパケットに受信端末のメモリ領域が指定されていない場合、確保メモリ領域テーブル１０８及び利用メモリ領域テーブル１０９を利用して、受信した電子データを空きメモリ領域に書き込む。電子データ処理アプリケーション１０５は、RDMA受信装置１０４から受信した電子データのメモリ領域を通知してもらうことにより、受信した電子データのメモリ領域を知る。【選択図】  図１
2011234145.tif 000002
【特許請求の範囲】
【請求項１】
パケット受信部と、
前記パケット受信部が受信したRDMAパケットの電子データが書き込まれるメモリと、
前記メモリのメモリ領域を管理するための確保メモリ領域テーブルと、
前記メモリの既に電子データが書き込こまれているメモリ領域を管理するための利用メモリ領域テーブルと、
前記メモリのメモリ領域の確保・管理・解放の処理を行うメモリ領域管理部と、
を備え、
前記受信部は、受信したRDMAパケットに、前記メモリの書き込み先アドレスが指定されていない場合、そのRDMAパケットを前記メモリ領域管理部に転送し、前記メモリ領域管理部は、当該RDMAパケットの電子データを書き込む先の前記メモリのメモリ領域を確保するとともに、前記確保メモリ領域テーブルの設定を行い、当該RDMAパケットの電子データを前記メモリに書き込む時に、前記利用メモリ領域テーブルの設定を行うことを特徴とするRDMA受信装置。
【請求項２】
請求項１記載のRDMA受信装置において、
前記メモリ領域管理部は前記確保メモリ領域テーブル及び前記利用メモリ領域テーブルを参照し、前記メモリの確保されているメモリ領域のうち利用されていない空きメモリ領域を探索し、空きメモリ領域がある場合には、前記利用メモリ領域テーブルに、前記電子データを書き込むメモリ領域のエントリを追加することを特徴とするRDMA受信装置。
【請求項３】
請求項２記載のRDMA受信装置において、
メモリ入力部をさらに備え、
前記メモリ領域管理部は、前記エントリ情報と前記RDMAパケット内の電子データを前記メモリ入力部に転送し、
前記メモリ入力部は前記電子データを、前記メモリの前記エントリで指定されたメモリ領域に書き込むことを特徴とするRDMA受信装置。
【請求項４】
請求項１記載のRDMA受信装置において、
前記メモリ領域管理部は前記確保メモリ領域テーブル及び前記利用メモリ領域テーブルを参照し、前記メモリの確保されているメモリ領域のうち利用されていない空きメモリ領域を探索し、空きメモリ領域がない場合に、メモリ領域管理部は送信元であるRDMA送信装置に対してエラーを通知することを特徴とするRDMA受信装置。
【請求項５】
請求項１記載のRDMA受信装置において、
メモリ入力部をさらに備え、
前記パケット受信部は受信したRDMAパケットにメモリの領域が指定されていると判断したときに、前記RDMAパケット内の指定されているメモリのメモリ領域情報及び電子データを前記メモリ入力部に転送し、
前記メモリ入力部は前記電子データを、前記メモリの前記指定されたメモリ領域に書き込むことを特徴とするRDMA受信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はRDMA(Remote Direct Memory Access)通信により電子データを送信する通信方法、及び通信装置に関し、特にRDMA受信装置に関する。
【背景技術】
【０００２】
大規模な科学技術システムでは、システムを構成する端末間の電子データの送信を高速化するため、RDMA通信が用いられる。RDMA通信では、送信端末及び受信端末が、送信端末及び受信端末の双方のメモリ領域を指定して電子データの送信を行う。このため、ソケット通信よりも低遅延及び高速の電子データ送信が可能である。
【０００３】
一般に、RDMA通信による電子データ送信は以下の手順で行われる。
(1)RDMA通信のために、送信端末が備えるRDMA通信装置(以下、RDMA送信装置)は送信端末のメモリ領域を確保し、受信端末が備えるRDMA通信装置(以下、RDMA受信装置)は、受信端末のメモリ領域を確保する。
(2)RDMA送信装置及びRDMA受信装置は、(1)で確保したメモリ情報をお互い交換する。
(3)RDMA送信装置は、受信端末のメモリ領域を指定したRDMAパケットを生成し、電子データをRDMAパケットに含めた上で、RDMA受信装置に送信する。
(4)RDMA受信装置は、RDMAパケットを解析し、受信端末の指定されたメモリ領域に電子データを書き込む。
また、複数のRDMA送信装置が単一のRDMA受信装置に電子データを送信する場合、受信端末において同時に複数のRDMA送信装置から受信した電子データを同じメモ領域に書き込むことを避ける必要がある。このため、上記の場合、RDMA通信において、受信端末のメモリ領域は各送信端末向けに重複しないように別々に確保される。
RDMA通信による電子データ送信を高速化する方法として、RDMA受信装置に転送領域管理部を備えることにより、RDMA送信装置がRDMA受信装置に対して送信開始許可を求める処理を不要にする方法がある(特開2007-257479号公報)。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2007-257479号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のRDMA通信では、RDMA通信による電子データを送信する前に、RDMA送信装置は送信端末のメモリ領域を、RDMA受信装置は受信端末のメモリ領域を確保し、RDMA送信装置は、RDMA受信装置のメモリ領域の情報を取得する必要がある。この時、RDMA送信装置及びRDMA受信装置は双方のメモリ領域を知らないため、Ethernet(登録商標)通信などのRDMA通信以外の方法で、RDMA受信装置はRDMA送信装置にメモリ領域の情報を通知する。この処理のため、RDMA送信装置がRDMA受信装置に電子データを送信する必要があっても、上記の処理を行った後でなければ電子データを送信できない。
【０００６】
また、複数のRDMA送信装置が単一のRDMA受信装置に電子データを送信する場合、受信端末のメモリ領域は各送信端末向けに別々に確保される。このため、受信端末のメモリ領域において、あるRDMA送信装置から受信する電子データのためのメモリ領域が一杯である一方、別のRDMA送信装置からの電子データのためのメモリ領域が空であるという状況が発生する。このように、受信端末のメモリ領域が効率的に利用できない。
【０００７】
本発明の目的は、RDMA送信装置が受信端末のメモリ領域が不明である場合でも、RDMA送信装置が電子データを送信することができ、さらに、受信端末のメモリ領域を効率的に利用できるRDMA受信装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のRDMA受信装置は、
パケット受信部と、
前記パケット受信部が受信したRDMAパケットの電子データが書き込まれるメモリと、
前記メモリのメモリ領域を管理するための確保メモリ領域テーブルと、
前記メモリの既に電子データが書き込こまれているメモリ領域を管理するための利用メモリ領域テーブルと、
前記メモリのメモリ領域の確保・管理・解放の処理を行うメモリ領域管理部と、
を備え、
前記受信部は、受信したRDMAパケットに、前記メモリの書き込み先アドレスが指定されていない場合、そのRDMAパケットを前記メモリ領域管理部に転送し、前記メモリ領域管理部は、当該RDMAパケットの電子データを書き込む先の前記メモリのメモリ領域を確保するとともに、前記確保メモリ領域テーブルの設定を行い、当該RDMAパケットの電子データを前記メモリに書き込む時に、前記利用メモリ領域テーブルの設定を行う。
【発明の効果】
【０００９】
本発明によれば、RDMA送信装置は、RDMA通信において受信端末のメモリ領域を指定せずに電子データを送信することができる。また、RDMA受信装置は、1つのRDMA送信装置向けに限定せず共有して受信端末のメモリ領域を管理するため、受信端末のメモリ領域を効率的に利用することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明のRDMA受信装置を含む受信端末の全体構造の図。
【図２】本発明のRDMA受信装置の確保メモリ領域テーブルの構造の図。
【図３】本発明のRDMA受信装置の利用メモリ領域テーブルの構造の図。
【図４】本発明のRDMA受信装置の初期化時の処理フローの図。
【図５】本発明のRDMA受信装置の電子データ受信時の処理フローの図。
【図６】本発明のRDMA受信装置の電子データ処理アプリケーションからの問い合わせ時の処理フローの図。
【図７】本発明のRDMA受信装置の確保メモリ領域の追加・削除の処理フローの図。
【図８】本発明のRDMA受信装置を利用した緊急情報伝送システムの図。
【図９】本発明のRDMA受信装置を利用した半導体外観検査装置の図
【図１０】本発明のRDMA受信装置を利用した遠隔監視システムの図。
【発明を実施するための形態】
【００１１】
以下、図面を用いて本発明のRDMA受信装置を説明する。
図１は本発明のRDMA受信装置を含むシステムの全体構造を示す図である。受信端末１０１は、中央制御部１０２と、メモリ１０３と、本発明のRDMA受信装置１０４を備えている。中央制御部１０２は、電子データ処理アプリケーション１０５などのプログラムデータを読み込み、そのプログラムデータの処理を行う。電子データ処理アプリケーション１０５は受信した電子データをメモリ１０３から読み込み、電子データの計算処理を行う。メモリ１０３には、受信した電子データがRDMA受信装置１０４により書き込まれる。また、メモリ１０３には、電子データ処理アプリケーション１０５により電子データが読み込まれる。
RDMA受信装置１０４は、パケット受信部１０６と、メモリ領域管理部１０７と、確保メモリ領域テーブル１０８と、利用メモリ領域テーブル１０９と、メモリ入力部１１０を備えている。パケット受信部１０６は、受信したRDMAパケットを解析し、RDMAパケットにメモリ１０３のメモリ領域が指定されている場合、そのRDMAパケットをメモリ入力部１１０に渡す。一方、パケット受信部１０６は、受信したRDMAパケットにおいて、メモリ１０３のメモリアドレスが０に設定されている等、メモリ１０３のメモリ領域が指定されていない場合、そのRDMAパケットをメモリ領域管理部１０７に渡す。メモリ領域管理部１０７は、メモリ１０３のメモリ領域を確保及び解放した時、確保メモリ領域テーブル１０８の設定を行う。また、メモリ領域管理部１０７は、メモリ１０３のメモリ領域に電子データを書き込む時及びメモリ１０３のメモリ領域にある電子データが不要となった時に、利用メモリ領域テーブル１０９の設定を行う。メモリ入力部１１０は、パケット受信部１０６及びメモリ領域管理部１０７からRDMAパケットを受け取り、受信した電子データをメモリ１０３に書き込む。
【００１２】
図２は、本発明のRDMA受信装置１０４のメモリ領域管理部１０７が管理する確保メモリ領域管理テーブル１０８の構成である。確保メモリ領域管理テーブル１０８には、RDMA受信装置１０４が確保しているメモリ１０３のメモリ領域の情報が格納されている。メモリ領域ID２０１の項目は、RDMA受信装置１０４が確保したメモリ１０３の各メモリ領域に対して一意に割り当てられる値である。確保メモリアドレス２０２の項目は、メモリ１０３の確保しているメモリ領域の最初のアドレスである。確保メモリサイズ２０３の項目は、メモリ１０３が確保しているメモリ領域の大きさである。RDMA受信装置１０４が確保している１つのメモリ領域は、行２０４のように１つのエントリとして書き込まれる。
【００１３】
図３は、本発明のRDMA受信装置１０４のメモリ領域管理部１０７が管理する利用メモリ領域管理テーブル１０９の構成である。利用メモリ領域管理テーブル１０９には、RDMA受信装置１０４が現在受信データを書き込んでいるメモリ１０３のメモリ領域の情報が格納されている。利用メモリ領域ID３０１の項目は、利用メモリアドレス３０２及び利用メモリサイズ３０３により定まるメモリ領域がどの確保メモリ領域テーブル１０８のメモリ領域ID２０１のどのメモリ領域に含まれているかを示す値である。利用メモリアドレス３０２の項目は、メモリ１０３において電子データが書き込まれるメモリ領域の最初のアドレスである。利用メモリサイズ３０３の項目は、メモリ１０３において電子データが書き込まれる領域の大きさである。RDMA送信装置ID３０４の項目は、RDMA送信装置のネットワークアドレスのように、電子データの送信元であるRDMA送信装置に一意に割り当てられているRDMA送信装置のIDである。RDMA受信装置１０４が電子データを書き込む１つのメモリ領域は、行３０５のように１つのエントリとして書き込まれる。
【００１４】
図４は、本発明のRDMA受信装置が初期化時に行う処理のフローを説明する図である。メモリ領域管理部１０７は、メモリ１０３において電子データ受信のための領域を確保する（４０１）。メモリ領域管理部１０７は、４０１で確保したメモリ領域のエントリを確保メモリ領域管理テーブル１０８に追加する（４０２）。次に、メモリ領域管理部１０７は、定期的なメモリ領域の確保・解放のためにタイマーを設定する（４０３）。
【００１５】
図５は、本発明のRDMA受信装置が、電子データを受信した時の処理のフローを説明する図である。パケット受信部１０６は、RDMAパケットを受信する（５０１）。パケット受信部１０６は５０１で受信したRDMAパケットを解析し、メモリ１０３の領域が指定されているか確認する（５０２）。メモリ１０３のメモリ領域が指定されている場合（５０２）、パケット受信部１０６は指定されているメモリ１０３のメモリ領域及び電子データをメモリ入力部１１０に渡し、メモリ入力部１１０は電子データを、メモリ１０３の指定されたメモリ領域に書き込む（５０３）。メモリ１０３のメモリアドレスが０となっているなど、メモリ１０３の領域が指定されていない場合（５０２）、パケット受信部１０６は５０１で受信したRDMAパケットをメモリ領域管理部１０７に渡し、メモリ領域管理部１０７は確保メモリ領域テーブル１０８及び利用メモリ領域テーブル１０９を参照し、メモリ１０３の確保されているメモリ領域のうち利用されていない空きメモリ領域を探索する（５０４）。空きメモリ領域がない場合（５０５）、メモリ領域管理部１０７は送信元であるRDMA送信装置に対してエラーを通知する（５０６）。空きメモリ領域がある場合（５０５）、メモリ領域管理部１０７は利用メモリ領域テーブル１０９に、メモリ１０３の電子データを書き込むメモリ領域のエントリを追加する（５０７）。メモリ領域管理部１０７は、電子データを書き込むメモリ１０３のメモリ領域及び電子データをメモリ入力部１１０に渡し、メモリ入力部１１０は電子データをメモリ１０３の指定されたメモリ領域に書き込む（５０８）。
【００１６】
図６は、本発明のRDMA受信装置が、電子データ処理アプリケーションから受信した電子データの有無の問い合わせを受けた時に行う処理のフローを説明する図である。メモリ領域管理部１０７は、電子データ処理アプリケーション１０５から、受信した電子データの有無の問い合わせを受ける（６０１）。メモリ領域管理部１０７は、利用メモリ領域テーブル１０９にエントリが存在するか確認する（６０２）。利用メモリ領域テーブル１０９にエントリが存在しない場合（６０３）、メモリ領域管理部１０７は、電子データ処理アプリケーション１０５に対して、受信した電子データが存在しないことを通知する（６０４）。利用メモリ領域テーブル１０９にエントリが存在する場合（６０３）、メモリ領域管理部１０７は、利用メモリ管理テーブル１０９に存在する全てのエントリに含まれている利用メモリアドレス３０２、利用メモリサイズ３０３、RDMA送信装置ID３０４の情報を電子データ処理アプリケーション１０５に通知する（６０５）。電子データ処理アプリケーション１０５は、メモリ１０３から必要な受信した電子データを読み込んだ後、利用メモリアドレス及び利用メモリサイズを指定した上で、そのメモリ領域の電子データが不要であることをメモリ領域管理部１０７に通知する（６０６）。メモリ領域管理部１０７は、電子データ処理アプリケーション１０５から通知されたメモリ１０３のメモリ領域に関するエントリを、利用メモリ領域テーブル１０９から削除する。
【００１７】
図７は、本発明のRDMA受信装置が確保しているメモリ領域の追加・解放を定期的に行う処理のフローを示す図である。メモリ領域管理部１０７は、タイマーが0になるのを待つ（７０１）。メモリ領域管理部１０７は、確保メモリ領域テーブル１０８及び利用メモリ領域テーブル１０９から、メモリ１０３の利用できる空きメモリ領域の大きさを計算し、その空きメモリ領域の大きさが、RDMA受信装置が設定する定数である閾値１を下回るかどうかを確認する（７０２）。空きメモリ領域の大きさが閾値１を下回る場合（７０２）、メモリ領域管理部１０７は、メモリ１０３の空きメモリ領域の大きさが閾値１を上回るように、メモリ１０３において新たに電子データ受信のための領域を確保する（７０３）。メモリ領域管理部１０７は、７０３で確保したメモリ１０３のメモリ領域のエントリを、確保メモリ領域テーブル１０８に追加する（７０４）。メモリ領域管理部１０７は、メモリ１０３の確保しているメモリ領域の追加・解放を一定時間後に行うためにタイマーを設定する（７０５）。空きメモリ領域の大きさが閾値１を上回る場合（７０２）、メモリ領域管理部１０７は、メモリ１０３の空きメモリ領域の大きさが、定数である閾値２を上回るかどうか確認する（７０６）。空きメモリ領域の大きさが閾値２を上回る場合（７０６）、メモリ領域管理部１０７は、確保メモリ領域テーブル１０８及び利用メモリ領域テーブル１０９より、メモリ１０３の確保しているメモリ領域のうち、利用されていないメモリ領域を探索する（７０７）。メモリ領域管理部１０７は、空きメモリ領域の大きさが閾値２を下回るように、確保メモリ領域テーブル１０８のエントリを削除するか、もしくは確保メモリアドレス２０２及び確保メモリサイズ２０３の項目を修正する（７０８）。メモリ領域管理部１０７は、７０８で削除もしくは修正したエントリのメモリ１０３のメモリ領域を解放する（７０９）。メモリ領域管理部１０７は、メモリ１０３の確保しているメモリ領域の追加・解放を一定時間後に行うためにタイマーを設定する（７０５）。空きメモリ領域の大きさが閾値２を下回る場合（７０６）、メモリ領域管理部１０７は、メモリ１０３の確保しているメモリ領域の追加・解放を一定時間後に行うためにタイマーを設定する（７０５）。
【００１８】
以下、図面を用いて本発明のRDMA受信装置の実施例を説明する。
図８は、地震などの緊急事態の発生時に、緊急情報を送信端末から受信端末に送信する緊急情報伝送システムの図である。地震などの緊急事態が発生した場合、緊急情報送信装置８０１は、ネットワーク８０２を介して、緊急情報受信装置８０３に緊急情報を送信する。この時、緊急情報受信装置８０３が本発明のRDMA受信装置を備えることで、緊急情報送信装置８０１は、緊急情報受信装置８０３のメモリ領域を取得することなく、緊急情報を送信することが可能である。
図９は、半導体外観検査装置の例である。半導体外観検査装置９０１は、検査の処理性能を高速化するために、複数のカメラ９０２により画像データを取得し、ネットワーク９０３を介して、複数の画像処理サーバ９０４に画像データをRDMA通信により送信する。複数の画像処理サーバ９０４で画像データを並列処理することで、検査の処理性能を高速化する。この時、カメラ９０２は、最も処理負荷が小さい画像処理サーバ９０４に画像データを送信して画像処理を行う。この場合、ある画像処理サーバ９０４は、全てのカメラ９０２から定期的に画像データが送られず、各カメラ９０２から受信する画像データの受信レートは、各カメラ９０２により異なる。従来のRDMA受信装置では、画像処理サーバ９０４は、各カメラ９０２から受信する画像データの受信レートの最大値に応じて各カメラ９０２向けに別々にメモリを確保しなければならない。本発明によるRDMA受信装置を利用する場合、画像処理サーバ９０４は、メモリを共有して画像データを受信するためメモリの効率的な利用が可能になる。
【００１９】
図１０は、遠隔監視システムの例である。監視サーバ１００１は、ネットワーク１００２を介して、複数の監視カメラ１００３と接続されている。監視サーバ１００１は、複数の監視カメラ１００３の中から単一もしくは複数の監視カメラを指定し、指定した監視カメラからRDMA通信により画像データを受信し、受信した画像データをディスプレイに表示する。監視サーバ１００１が事前にメモリ領域を確保する場合、従来のRDMA受信装置では全ての監視カメラ１００３向けにメモリ領域を確保する必要があり、多くのメモリ領域が必要となる。一方、監視サーバ１００１が監視カメラ１００３を指定する時に、メモリ領域を確保した上で監視カメラ１００３にメモリ領域を通知する場合、これらの処理のオーバーヘッドのために、監視サーバ１００１で画像データを受信して表示するまでの時間が長くなる。遠隔監視システムでは、一般的にリアルタイムで監視する目的で用いられるため、画像データは表示される必要がある。監視サーバ１００１が本発明のRDMA受信装置を備えることにより、監視カメラ１００３は、監視サーバ１００１にRDMA通信による画像データを送信することが可能となり、また、監視サーバ１００１のメモリ領域を効率的に利用することが可能となる。
【符号の説明】
【００２０】
１０１    受信端末
１０２    中央制御部
１０３    メモリ
１０４    RDMA受信装置
１０５    電子データ処理アプリケーション
１０６    パケット受信部
１０７    メモリ領域管理部
１０８    確保メモリ領域テーブル
１０９    利用メモリ領域テーブル
１１０    メモリ入力部
２０１    メモリ領域IDの項目
２０２    確保メモリアドレスの項目
２０３    確保メモリサイズの項目
２０４    １つの確保メモリ領域のエントリ
３０１    メモリ領域IDの項目
３０２    利用メモリアドレスの項目
３０３    利用メモリサイズの項目
３０４    RDMA送信装置IDの項目
３０５    １つの利用メモリ領域のエントリ
８０１    緊急情報送信装置
８０２    ネットワーク
８０３    緊急情報受信装置
９０１    半導体外観検査装置
９０２    カメラ
９０３    ネットワーク
９０４    画像処理サーバ
１００１  監視サーバ
１００２  ネットワーク
１００３  監視カメラ
【図１】
2011234145.tif 000003
【図２】
2011234145.tif 000004
【図３】
2011234145.tif 000005
【図４】
2011234145.tif 000006
【図５】
2011234145.tif 000007
【図６】
2011234145.tif 000008
【図７】
2011234145.tif 000009
【図８】
2011234145.tif 000010
【図９】
2011234145.tif 000011
【図１０】
2011234145.tif 000012