JP2004192179A - Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置 - Google Patents
Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置 Download PDFInfo
- Publication number
- JP2004192179A JP2004192179A JP2002357449A JP2002357449A JP2004192179A JP 2004192179 A JP2004192179 A JP 2004192179A JP 2002357449 A JP2002357449 A JP 2002357449A JP 2002357449 A JP2002357449 A JP 2002357449A JP 2004192179 A JP2004192179 A JP 2004192179A
- Authority
- JP
- Japan
- Prior art keywords
- host
- rdma
- driver
- message
- hosts
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims description 83
- 230000006870 function Effects 0.000 title claims description 45
- 230000008569 process Effects 0.000 title description 72
- 238000013519 translation Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 abstract description 20
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 abstract 1
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 abstract 1
- MMZNUCVCUUYOPO-UHFFFAOYSA-N Dammar-24-ene-3,20,26-triol-(3beta,20S)-form Natural products C12OC2C2(O)CC=CC(=O)C2(C)C(CCC23C)C1C3CCC12OC(C)(C(C)(O)C(O)O2)CC2C1C MMZNUCVCUUYOPO-UHFFFAOYSA-N 0.000 description 9
- UGNWWWXQCONFKB-UHFFFAOYSA-N Nic 11 Natural products CC1C2CC(COC13CCC4C5C6OC6C7(O)CC=CC(=O)C7(C)C5CCC34C)C(C)(O)C(O)O2 UGNWWWXQCONFKB-UHFFFAOYSA-N 0.000 description 9
- CGFWCZMBHASRBJ-UHFFFAOYSA-N Nic-11 Natural products C1CC2OC(C(C)(C)O)CCC2(C)C(C2O)C1(C)OC1=C2C(=O)C=C(C(C)C(OC(C)=O)C(C)=CC)C1=O CGFWCZMBHASRBJ-UHFFFAOYSA-N 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 241000720945 Hosta Species 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241001331845 Equus asinus x caballus Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Bus Control (AREA)
Abstract
【課題】RDMA機能を有するNICを持つホストをネットワークに安全に組み込むための装置を提供する。
【解決手段】複数のホストを含むネットワークにおいて、ホストが起動すると、該ホストのドライバは、該ホストが起動することを示すBOOTINGメッセージを全ての他のホストに送り、これを受信した、起動するホスト以外のホストのドライバは、起動するホストへのRDMAアクセスを利用不可能にする。起動するホスト以外のホストのドライバは、ACKあるいはBOOTINGメッセージで応答する。ある場合には、ネットワークがハードウェアNACKを生成する。起動するホストが全てのホストから応答を受信すると、起動するホストのドライバは自ホストへのRDMAアクセスを許可する。
【選択図】 図4
【解決手段】複数のホストを含むネットワークにおいて、ホストが起動すると、該ホストのドライバは、該ホストが起動することを示すBOOTINGメッセージを全ての他のホストに送り、これを受信した、起動するホスト以外のホストのドライバは、起動するホストへのRDMAアクセスを利用不可能にする。起動するホスト以外のホストのドライバは、ACKあるいはBOOTINGメッセージで応答する。ある場合には、ネットワークがハードウェアNACKを生成する。起動するホストが全てのホストから応答を受信すると、起動するホストのドライバは自ホストへのRDMAアクセスを許可する。
【選択図】 図4
Description
【0001】
【発明の属する技術分野】
本発明は、RDMA機能を有するホストマシンをネットワークに組み込み、あるいは、再組み込みするための装置に関する。
【0002】
【従来の技術】
リモートDMA(RDMA:Remote Direct Memory Access)は、ネットワークインタフェースカード(NIC:Network Interface Card)に対する、特に、RDMA拡張機能を通常のAPIに付加するという最近の提案においては、重要な要求となってきている。RDMAをサポートするNICは、ローカルメモリへのRDMAアクセスが適切に有効化することを確保するために、メモリプロテクション、例えば、翻訳保護テーブル(TPT:translation and protection table)をサポートすることが要求される。このようなテーブルを実装することは、ハードウェアコストを増大し、特に、周辺バス(例えば、PCI:Peripheral Component Interconnect)へ接続されるNICの性能に影響を与える可能性がある。ハードウェアベースのTPTの代替法法としては、他のNICへのRDMAアクセスを有効化するための機能を果たすNICドライバを構成することである。この場合、全体のシステムは、RDMAアクセスがホストをクラッシュさせるようには生じないことを確保するために協同しなくてはいけない。
【0003】
この問題に対する解決方法は、ホスト上で動作するドライバにコピーが保持される、システム全体をカバーする保護テーブルの形で実現されるであろう。ドライバは、テーブルのローカル部を更新し、変更を遠隔の度ラバに反映する。ホストが再起動しない限りは、問題はない。しかし、ホスト、例えば、HOST Aが再起動された場合には、システム内の残りのホストは、すぐには、このことを認知しない、あるいは、認知できない。HOST Aが、RDMAアクセスを再起動の直後に可能とすると、保護テーブル内の古い情報(HOST Aが再起動される前)に基づいたリモートホストから始められたRDMA動作は、HOSTAをクラッシュさせることがある。
【0004】
例えば、ホスト(ネットワーク内のノード)が再起動されたとき、ホストの内部RDMA設定、すなわち、登録されたメモリ領域は解除され、初期化される。しかし、他のホストのRDMA設定が更新されていないと、他のホストは、RDMAを使って、最近再起動したホストのメモリにアクセス使用とするかもしれない。このとき、当該ホストのメモリ割当ては、再起動後初期化されており、再起動されたホストのメモリ割当ての初期化が他のホストの設定に反映されていないので、他のホストの再起動したホストのメモリへの、古い設定によって決定されたアドレスへのアクセスは、再起動したホストの動作に重要な情報を上書きしてしまうかもしれず、再起動したホストをクラッシュさせるかもしれない。
【0005】
従って、再起動されたホストが他のホストによってそのように認識され、再起動したホストに関連するシステムの保護テーブル内の情報が、再起動したホストが完全にシステムに再び組み込まれるまで、無効化されることを確保することが本質的である。
【0006】
【発明が解決しようとする課題】
通常の解決方法は、おそらくハートビートユーザレベルプロセスと共に、リモートホストの状態の変化をドライバに通知する各ノード上のユーザレベルプロセス(Unix(登録商標)におけるデーモンプロセスのような)の形を採用するかもしれない。例えば、システムは、各ホストにNIC制御プロセスとハートビートプロセスを有する。NIC制御プロセスは、NICを初期化する機能を持ち、NICドライバに、システムにおける例えば、ホストの再起動などの変化を通知する。各ハートビートプロセスは、ハートビートプロセスとメッセージを交換することによって、他のホストの状態を監視し続ける。例えば、ホスト、HOSTAが、落ちた場合には、ハートビートメッセージは送られない。所定の時間後、他のハートビートプロセスは、HOST Aが落ちたことを断定する。各ハートビートプロセスは、NIC制御プロセスにそのことを通知し、これは次にドライバに通知して、HOST Aへの全てのアクセスをブロックする。HOST Aが復帰すると、そのハートビートプロセスは再びメッセージを送信し始める。他のハートビートプロセスは、メッセージを受け取り、これらのNIC制御プロセスに、これを通知し、こんどは、ドライバにこれを通知して、HOST Aへのアクセスを再び可能とする。しかし、このアプローチには幾つかの問題がある。例えば、NICの初期化は、ユーザレベルプロセスであるNIC制御プロセスに依存しているため、NICが初期化されるまでに時間がかかる。ホストの負荷が大きい場合には、このプロセスは、ちょうど良く動作するようにはスケジューリングされいないかもれいない(システム応答が遅い)。この間、NICは使用できない。また、NIC制御プロセスあるいはハートビートプロセスのいずれかが落ちるかもしれない。NIC制御プロセスが落ちることは、システムイベントに対するホストの応答を含み、例えば、再起動したホストへのアクセスが長時間再開されないかもしれない。ハートビートプロセスが落ちることは、ホストのクラッシュと間違えられる可能性があり、従って、全体のシステム性能に影響する。すなわち、ユーザレベルプロセスを使用することは、システム全体の信頼性を低くすることになる。
【0007】
他の問題は、潜在的に、RDMAリクエストによって使用されるものとは異なる、組み込みプロトコルのための通信経路を用い、NICのRDMA機能が利用可能とされる前に、実行途中のRDMAアクセスが無いことを確保することができないユーザレベルプロセスに起因することになろう。
【0008】
ノードが再起動されたとする。そのノードのドライバは、以前の状態の全ての情報を失う。特に、全ての、以前に登録したメモリ領域と、他のノードに登録されているメモリ領域に関する全ての情報を失う。しかし、リモートノードは、そのノードが再起動されたことを知らないかもしれない。あるドライバが当該ホストが再起動されたことを知り、他のドライバが知らないようなシステムに再起動されたホスト上のNICを再組み込みする問題は、解決する必要がある。ターゲットであるNICに対して、動作途中であるRDMA動作が無いことを確保しなければならないという意味において、解決方法は安全でなくてはならない。もし、そのようなRDMA動作が有ると、これらは、ホストが再起動される前に始動されており、古い情報に基づいており、ホストをクラッシュさせる可能性がある。再組み込みの終わりには、そのNICドライバは、システムの保護テーブルの最新のコピーを有していなければならず、システムの一部である、他の全てのホストは、そのNICがシステムの一部として機能していることを知らなければらない。この問題をユーザレベルモニタプロセスで解決することは、安全な時間になるまで、NICの全体の初期化を送らせることになる。ユーザレベルプロセスが通信するためには、各ホストは、他のNICと、RDMA機能なしに、適合されていなければならず、全体のハードウェアコストを増加させる。
【0009】
本発明の課題は、RDMA機能を有するNICを持つホストを、NICの初期化を制御するのに、ユーザレベルプロセスに頼らないで、ネットワークに安全に組み込むための装置を提供することである。
【0010】
【課題を解決するための手段】
本発明の装置は、RDMA機能を有している複数のホストからなるネットワーク内のホストにある装置であって、ネットワーク内のホストが起動されたとき、ネットワーク内の複数のホストの全てに、当該ホストが起動されたことを示す代1のメッセージを送信する手段と、複数のホストから当該ホストへのRDMAアクセスを全て利用不可能にする手段と、当該ホストに第2のメッセージを送ることによって、第1のメッセージに応答する手段と、当該ホストが複数のホストからのRDMAアクセスを受け付ける準備ができたことを示す第3のメッセージを、複数のホストの全てから第2のメッセージを受け取り、RDMA機能が利用可能とされた後に、全ての複数のホストに送信する手段とを備えることを特徴とする。
【0011】
本発明によれば、ネットワーク内のホストが起動される毎に、ホストは、ネットワークの全てのホストにこれを通知する。従って、全てのホストは、どのホストが起動されたかを知ることができ、当該ホストへのRDMAアクセスに使用される情報を、正しくクリアし、更新することができる。結果として、起動されたホストは、ネットワークに安全に組み込み、あるいは、再組み込みされるが、クラッシュは生じない。起動された、あるいは、再起動されたホストのネットワークへの組み込み、あるいは、再組み込みは、同様に行うことができる。
【0012】
このアプローチの独自性の一部は、SEND/RECEIVE機能と、RDMA機能の初期化を分離したことにある。SEND/RECEIVE初期化は、NIC自身がそのためのプロトコルを使って使用されるように実行され、従って、全体のハードウェアコストを下げる。RDMA機能を有しない他のNICが当該プロトコルを実行する必要はない。更に、NIC自体がこのプロトコルを実行するのに使われるため、プロトコルが終了すれば、システム内にRDMAアクセスが処理されずに残っていることがないことの保証を、ユーザプロセスが使用されうる場合よりも簡単に達成することができる。更に、このプロトコルが依然処理中であっても、SEND/RECEIVEを介して、通常の通信をNICを持ち手開始することが可能である。また、ユーザプロセスに対する依存性を減少させることで、システム内の部品の数を減らすことができ、全体の信頼度を上げることができる。この機能をカーネルに含ませることにより、ドライバの開発コストは上がるが、他のコストは、プロトコルが簡単であるため、かなり小さくなる。
【0013】
【発明の実施の形態】
ここで、再起動されたホストのNICをシステムに安全に再組み込みし、これらのRDMA機能を利用可能にすることを確保するためにユーザレベルプロセスを使用しないアプローチを示す。このアプローチは、システム内のNICドライバ間の協同にのみ依存している。この機能をドライバに実装することは、開発コストを増加させるが、高速な応答を可能にするという利点がある。(ドライバは、他のノードからの入力プロトコルメッセージに応答するのに、割り込みの処理を利用することができる。)更に、ドライバは、そのRDMA機能を利用可能とする前に、処理途中である古いRDMAアクセスが無いことを確保することができる。要求されるロジックは、ユーザレベルプロセスによって要求されるものより、おそらくは簡単で、従って、信頼性も改善されるであろう。
−システム構成
図1は、本発明の実施形態が基礎とするシステム構成を示す図である。
【0014】
システムは、多くのホスト10−1〜10−7によって構成されている。各ホスト10−1〜10−7は、1以上のNIC11を持っている。NIC11は、ネットワーク12を介して接続される。NIC11は、別々に、SEND/RECEIVE機能11−1とRDMA機能11−2の両方を持つ。例えば、SEND/RECEIVE機能11−1を利用可能とし、同時にRDMA機能11−2を利用不可能とすることが可能である。
【0015】
NIC11は、専用のハードウェアのアドレス翻訳保護テーブル(TPT)を持たない。そのかわり、ドライバ13は、協同して、ソフトウェアのシステム全体に渡る保護テーブル13−1を持つ。テーブル13−1は、ローカル部とリモート部の2つの部分からなる。ローカルなユーザアプリケーションがドライバ13にメモリを登録する結果として、テーブルのローカル部にエントリが加えられる。ユーザプロセスは、登録したメモリへのRDMAアクセスを利用可能としたり利用不可能とすることができる。ドライバ13は、テーブル13−1のローカル部の変更を他のノードのテーブル13−1の対応するリモート部に反映させる。再起動するホストが無い限り、全てのドライバ13は、保護テーブル13−1に同じ情報を持っている。
【0016】
各ドライバの保護テーブル13−1は、システム内の全てのNIC11についての情報を含んでいる。ローカルプロセスがRDMA動作を発行すると、ドライバ13は、保護テーブル13−1のコピーをチェックし、リモートアクセスが許可されているか否かを判断する。(保護テーブルを他の形で実現することも可能である。例えば、ドライバは、各RDMAトランザクションを異なるプロトコルで有効化する。この場合、各ドライバは、ローカルアドレスのみを登録するテーブルを持ち、リモートアクセスが要求されたときには、リモートアクセスの要求が発行される前に、プロトコルを確立するメッセージが、ローカルアドレスのみを有するテーブルを使って、ホスト間でやりとりされる。しかし、古い保護情報を使用するという問題は依然存在する。以後に示すアプローチは依然適用可能である。)
システム内のNIC11の最大数は、全てのホスト10−1〜10−7に知られているか、確定可能である。この最大数は、現在接続されているNIC11データはなく、ネットワーク12に接続可能なNIC11の可能な全数を反映している。メッセージあるいは、RDMA動作は、NIC11が適切に初期化されていないあるいは、ネットワーク12に接続されていないのでない限りは、データを配布することになる。後者の場合、メッセージを送信したドライバ13が見ることができる、ハードウェアで生成された、ネガティブアクノレッジメント(NACK)がある。
【0017】
ドライバ11がNACKを検出すると、NIC11がシステムに再組み込みされるまで、リモートNIC11へのアクセスをドライバが禁止する。
最後に、同じ送信元、宛先のRDMA及びSEND動作は、同じ経路を使用する。ネットワーク12は、このような動作が互いに追い越すことを許さない。
【0018】
図2は、ホストの構成を示す図である。
ホスト10−iと10−jは、NIC11を介して、ネットワーク12に接続される。ホスト10−iと10−jは、ユーザ空間とカーネル空間を有している。プロセスPは、ユーザ空間に有る。ドライバは、カーネル空間にある。NICは、ホスト10−iと10−jのハードウェアの一部である。各NIC11は、ネットワーク12とドライバ13のインターフェースを持ったSEND/RECEIVE機能11−1とRDMA機能11−2を有している。
【0019】
プロセスPが起動されると、プロセスPは、ドライバ13のRDMA保護機能内の翻訳保護テーブル(TPT)13−1にプロセスP自身が使用するメモリ領域iを登録する。そして、TPT13−1は、プロセスPに割り当てられた領域iのエントリを有する。同様に、ホスト10−jにおいては、プロセスMは、メモリ領域Xをドライバ(不図示)に登録する。この登録は、ホスト10−iのTPT13−1に反映される。そして、ホスト10−iのTPTは、プロセスMの領域Xのエントリを持つようになる。
【0020】
プロセスPがプロセスMにアクセスする必要があるときは、プロセスPは、TPT13−1の領域Xのエントリを参照して、アクセスのための要求を発行し、アクセスが確立される。プロセスMがクラッシュしたか、ホスト10−jがクラッシュした場合には、TPT13−1の領域Xのエントリは、ホスト10−jのプロセスMが利用できないことを示すために、TPT13−1から消去される。
【0021】
図3は、翻訳保護テーブルの構成を示す図である。
図3においては、ネットワーク内に、0〜N−1まで番号付けられたN個のノードがあるとする。
【0022】
TPTは、上記したように、ローカル部とリモート部を有している。ノード0では、TPTのローカル部に、自ノード0のためのメモリ領域が登録されている。リモート部には、ノード1〜ノードN−1のためのメモリ領域が登録されている。TPTのエントリフォーマットが図3(b)に示されている。TPTの各エントリは、項目として、論理アドレス、物理アドレス、長さ、保護属性を有している。ユーザ空間のユーザプロセスは、論理アドレスを用いて、アクセス要求を発行する。この論理アドレスは、TPTを参照することによって、物理アドレスに変換され、物理アドレスを用いて、宛先にメッセージを送信する。長さの項目は、物理アドレスの項目で特定されるアドレスの領域の長さを、例えば、バイト単位で示すものである。保護属性の項目は、物理アドレスで示される領域の、メモリ保護の種類(読み取り専用、書き込み専用など)を特定するものである。
【0023】
図4は、本発明の実施形態に従ったメッセージ交換のシーケンスを示す図である。
ホストがドライバ(DRIVER A)を起動したとき、初期化の一部として、SEND/RECEIVE機構を利用可能とし、RDMA機構を利用不可能とする。SEND/RECEIVE機構は、NICドライバがリモートノードと通信できるように利用可能とされる。RDMA機構は、あらゆる入力する(古い)RDMA動作を拒絶するために、利用不可能とされる。
【0024】
DRIVER Aは、システム全体に、起動していることを示すメッセージ(BOOTING)をブロードキャスト(あるいは、ユニキャスト)する。他のNICドライバから、その存在を認識したというメッセージを得るまでまつ。各ホストの応答が一回のみカウントされるように、応答を監視する。
【0025】
DRIVER AからのBOOTINGメッセージを受信したNICドライバ(DRIVER B)は、ローカルに保持している翻訳保護テーブルのDRIVER Aの部分をクリアする。テーブルのDRIVER Aの部分をクリアすることは、DRIVER AのNICに対するRDMAアクセスを禁止する効果がある。また、DRIVER Aの翻訳保護テーブルへの更新を送信することも禁止する。(DRIVER Bが、より早くに、DRIVER AのNICが機能しておらず、既にそれへのアクセスが禁止されていることを認識することは可能である。アクセスが既に禁止されているか否かは、ここでは問題ではない。)次のステップでは、DRIVER Bが、そのNICへの全ての発行された動作、SENDあるいはRDMAが実行されたか否かを確認する。その後、DRIVER Bは、アクノレッジメントメッセージ(ACK)で応答する。
【0026】
DRIVER Aは、DRIVER BにBOOTINGメッセージを送信し、DRIVER BがACKメッセージで応答したので、DRIVER AとDRIVER Bとの間に、まだ終わっていない、あるいは、実行中のRDMA動作が無いことを保証する。(追い越しなし、及び、同じ経路を使っていることを仮定。)換言すれば、DRIVER AのNICは、古いRDMA動作から保護されている。DRIVER Bが、ACKを送る前に、全ての発行された動作が実行されたことを確認しないならば、この保証は成り立たない。ACKが、以前に発行されたRDMA動作の前に送られることはありえる。特に、NICが発行された動作を処理するのに、複数のキューを持っている場合、これがあり得る。
【0027】
リモートNICが接続されていない、あるいは、動作していない場合、ドライバのACKではなく、ハードウェアで生成された(HW)NACKが受信される。従って、ドライバは、システム内の全てのノードを数えることができ、どのNICがシステムの一部で、どれがそうでないかを知ることができる。全てのNICが数えられた時にのみ、DRIVER Aは、RDMA機能を利用可能にする。そして、RDMAアクセスの準備ができたことを示すメッセージ(RDMA READY)を分かっている全てのNICに送信する。
【0028】
RDMA READYメッセージを受信するNICドライバ(DRIVERB)は、そのNICへのRDMAアクセスを利用可能にする。言い換えれば、DRIVER Aのシステム保護テーブルに、翻訳保護テーブルの更新を送信し始める。そして、DRIVER Aの保護テーブルの内、DRIVER BのNICを参照する部分を更新する。全てのリモートNICドライバが、DRIVER Aのテーブルのこれらの部分を更新したとき、DRIVER Aは、システムに完全に再組み込みされる。
【0029】
ホストの状態は、何時変わるかわからないので、ドライバがそのホストのクラッシュに応答する前に、NICドライバ(DRIVER C)によってBOOTINGメッセージが受信されることもあり得る。この場合、DRIVER Aは、DRIVER CのNICを数えることができない。従って、DRIVER Aは、適切なタイムアウト時間後、数えることができなかったNICにBOOTINGメッセージを再送する。この処理は、全てのNICが数えられるまで繰り返される。別の方法として、DRIVER CからACKメッセージの代わりに、BOOTINGメッセージを受け取った場合には、DRIVER Aは、このプロセスをやらないことも可能である。
【0030】
新しいホストは、再起動したホストと同様の方法でシステムに加えることが可能である。
図5は、本発明の実施形態に従った、TPTにユーザプロセスが使う領域をユーザプロセスが登録する処理のフローチャートである。
【0031】
ステップS1においては、ノードNのユーザプロセスは、ドライバに登録されるべき領域の情報を与える。ステップS2においては、ノードNのドライバは、領域を特定し(あるいは、割当て)、論理アドレスを物理アドレスに変換し、ローカルTPTにエントリiを割当て、その領域に関する情報を格納する。ステップS3においては、ノードNのドライバは、ネットワークにつながれた全てのノードに更新要求を発行する。更新要求により、ノードNのドライバによって割り当てられた領域に対応する各ノードのTPTのエントリiを更新する。
【0032】
図6は、本発明の実施形態に従った、ユーザプロセスがRDMA Write転送コマンドを発行する処理のフローチャートである。
ステップS10において、ユーザプロセスは、ローカルな登録された領域X(以下、RR X)から、遠隔の登録された領域Y(以下、RR Y)へBバイトデータ(Bは、バイト単位のデータ長である)を転送する要求である、RDMAコマンドをドライバへ発行する。ステップS11においては、ドライバは、ユーザプロセスが、ReadアクセスをRR Xに発行したか否かを判断する。ステップS11の判断がNOの場合には、ドライバは、ユーザプロセスに保護エラーを返す。ステップS11の判断がYESの場合には、ステップS12に進む。ステップS12においては、ドライバは、ユーザプロセスがRR Yに対し、Writeアクセスを発行したか否かを判断する。ステップS12の判断がNOの場合には、ドライバは、ユーザプロセスに保護エラーを返す。ステップS12の判断がYESの場合には、ステップS13に進む。ステップS13においては、ドライバは、転送されたデータの長さが、2つの領域(すなわち、RR XとRRY)の限界以内であるか否かを判断する。ステップS13の判断がNOの場合には、ドライバは、ユーザプロセスに保護エラーを返す。ステップS13の判断がYESの場合には、ドライバは、NICにデータを転送させるため、NICに対し、転送コマンドを発行する。
【0033】
図7は、本発明の実施形態に従った、ホストの起動処理を示すフローチャートである。
ホストが起動された後、ドライバは、NICとTPTを初期化し、SEND/RECEIVE機能を利用可能とし、RDMA機能を利用不可能とし、{応答集合}という変数を全ての0に設定する(ステップS15)。ステップS16においては、ドライバは、全てのノードにBOOTINGメッセージを送信する。ステップS17では、ドライバは、所定の時間内で、他のノードからの応答を待つ。ステップS17でタイムアウトが起こったときは、ステップS16に戻る。ステップS17において、ドライバが、応答メッセージ(ACK、ハードウェアで生成されたNACK、BOOTINGメッセージのいずれか)を受信した場合には、取り阿波は、応答メッセージの発信ノードを特定し、ステップS18において、{応答集合}にノードの識別子を加える。
【0034】
例えば、応答集合は、0と1の列から構成される。ステップS15においては、この列は全て0に設定される。この列中、各位は、ホストに対応付けられる。自ホストのドライバによって応答が受信された場合には、応答を送信したホストが特定され、対応する位置にある列内の0を1に設定する。列が1で満たされた場合、これは、全てのホストから応答を受信したことを示す。
【0035】
ステップS19において、ドライバは、全てのノードが{応答集合}にあるか否かを判断する。ステップS19における判断が、NOの場合には、ステップS17に進む。ステップS19の判断がYESの場合には、ステップS20に進む。ステップS20では、ドライバは、RDMA機能を利用可能とし、ステップS21において、全てのノードにRDMA READYメッセージを送信する。
【0036】
図8は、起動されたノード以外のノードの動作を示すフローチャートである。
ステップS25において、ドライバは、起動されたノードNのドライバからBOOTINGメッセージを受信する。ステップS26において、ドライバはノードNのTPTエントリをクリアし、ノードNへのTPT更新を利用不可能にする。ステップS27においては、ドライバは、ノードNに対し、ACKで応答する。他の場合には、ノードN以外のノードのドライバは、ダウンしている可能性がある。この場合、BOOTINGメッセージへの応答(HW NACK)は、ハードウェアで生成され、、ノードNに送り返される。また、ノードN以外のノードは、ちょうど起動されたばかりかもしれない。この場合、BOOTINGメッセージがノードNに送られ、このノードがノードNとして動作する。
【0037】
いずれにしても、ドライバは、ステップS28において、RDMA READYメッセージをノードNから受信する。ステップS29においては、ドライバは、ノードNに対するTPT更新を利用可能とする。そして、ステップS30において、ドライバは、そのローカルTPT部の内容により、ノードNのTPTを更新する。この更新は、例えば、RDMA Writeコマンドにより達成される。
【0038】
処理フローは、2つのホストのみを参照して説明したが、この処理フローは、多くのホスト間で実行される。
(付記1)RDMA機能を有した、ホストと複数のホストからなるネットワーク内の該ホストに設けられた装置であって、
該ネットワーク内のホストが起動したとき、該ホストが起動したことを示す第1のメッセージを、該ネットワーク内の全ての該複数のホストに送信する手段と、
該複数のホストからの該ホストへのRDMAアクセスを利用不可能とする手段と、
該ホストに第2のメッセージを送信することによって、第1のメッセージに応答する手段と、
該ホストが、該複数のホストからのRDMAアクセスを受付可能であることを示す第3のメッセージを、該複数のホストの全てから第2のメッセージを受信し、RDMA機能を利用可能とした後、該複数のホストの全てに送信する手段と、を備えることを特徴とする装置。
【0039】
(付記2)前記装置は、前記ホストのドライバに含まれることを特徴とする付記1に記載の装置。
(付記3)他のホストにRDMAアクセスを行うための情報を有する翻訳保護テーブル手段を更に有し、
前記第1のメッセージを受信したとき、該第1のメッセージを送信したホストに関する情報を該翻訳保護テーブル手段からクリアし、該ホストへのRDMAアクセスを不可能にすることを特徴とする付記1に記載の装置。
【0040】
(付記4)前記複数のホストの翻訳保護テーブルは、該複数のホストへ、前記第3のメッセージが送られた後、更新されることを特徴とする付記3に記載の装置。
【0041】
(付記5)前記第2のメッセージは、アクノレッジメント、ノンアクノレッジメント、及び、前記複数のホストから送られた前記第1のメッセージの一つであり、ノンアクノレッジメントは、ハードウェアによって生成されることを特徴とする付記1に記載の装置。
【0042】
(付記6)前記第2のメッセージが前記複数のホストの全てから受信されたか否かは、監視され、0と1の列からなる応答集合によって判断されることを特徴とする付記1に記載の装置。
【0043】
(付記7)前記ホストは、RDMA機能と他のメッセージ通信機能を有するネットワークインターフェースカードを有し、RDMA機能と他のメッセージ通信機能の初期化は独立して行われることを特徴とする付記1に記載の装置。
【0044】
(付記8)RDMA機能を有した、ホストと複数のホストからなるネットワーク内の該ホストの方法であって、
該ネットワーク内のホストが起動したとき、該ホストが起動したことを示す第1のメッセージを、該ネットワーク内の全ての該複数のホストに送信するステップと、
該複数のホストからの該ホストへのRDMAアクセスを利用不可能とするステップと、
該ホストに第2のメッセージを送信することによって、第1のメッセージに応答するステップと、
該ホストが、該複数のホストからのRDMAアクセスを受付可能であることを示す第3のメッセージを、該複数のホストの全てから第2のメッセージを受信し、RDMA機能を利用可能とした後、該複数のホストの全てに送信するステップと、
を備えることを特徴とする方法。
【0045】
(付記9)前記方法は、前記ホストのドライバで行われることを特徴とする付記8に記載の方法。
(付記10)他のホストにRDMAアクセスを行うための情報を格納する翻訳保護テーブルステップを更に有し、
前記第1のメッセージを受信したとき、該第1のメッセージを送信したホストに関する情報を該翻訳保護テーブルステップで格納された情報からクリアし、該ホストへのRDMAアクセスを不可能にすることを特徴とする付記8に記載の方法。
【0046】
(付記11)前記複数のホストの翻訳保護テーブルは、該複数のホストへ、前記第3のメッセージが送られた後、更新されることを特徴とする付記10に記載の方法。
【0047】
(付記12)前記第2のメッセージは、アクノレッジメント、ノンアクノレッジメント、及び、前記複数のホストから送られた前記第1のメッセージの一つであり、ノンアクノレッジメントは、ハードウェアによって生成されることを特徴とする付記8に記載の方法。
【0048】
(付記13)前記第2のメッセージが前記複数のホストの全てから受信されたか否かは、監視され、0と1の列からなる応答集合によって判断されることを特徴とする付記8に記載の方法。
【0049】
(付記14)前記ホストは、RDMA機能と他のメッセージ通信機能を有するネットワークインターフェースカードを有し、RDMA機能と他のメッセージ通信機能の初期化は独立して行われることを特徴とする付記8に記載の方法。
【0050】
【発明の効果】
本発明によれば、RDMA機能を有するNICを持つホストを、ユーザレベルプロセスを用いずに、ネットワークに安全に組み込む装置が提供される。
【図面の簡単な説明】
【図1】本発明の実施形態が基本とするシステム構成を示す図である。
【図2】ホストの構成を示す図である。
【図3】翻訳保護テーブル(translation and protection table)の構成を示す図である。
【図4】本発明の実施形態に従った、メッセージ交換のシーケンスを示す図である。
【図5】本発明の実施形態に従った、ユーザプロセスが、ユーザプロセスが使用する領域をTPTに登録する処理のフローチャートである。
【図6】本発明の実施形態に従った、ユーザプロセスがRDMA転送コマンドを発行する処理のフローチャートである。
【図7】本発明の実施形態に従った、ホストの起動処理のフローチャートである。
【図8】起動されたノード以外のノードの動作を示すフローチャートである。
【符号の説明】
10−1〜10−7、10−i、10−j ホスト
11 NIC
11−1 SEND/RECEIVE機能
11−2 RDMA機能
12 ネットワーク
13 ドライバ
13−1 RDMA保護機能
20 ユーザ空間
21 カーネル空間
【発明の属する技術分野】
本発明は、RDMA機能を有するホストマシンをネットワークに組み込み、あるいは、再組み込みするための装置に関する。
【0002】
【従来の技術】
リモートDMA(RDMA:Remote Direct Memory Access)は、ネットワークインタフェースカード(NIC:Network Interface Card)に対する、特に、RDMA拡張機能を通常のAPIに付加するという最近の提案においては、重要な要求となってきている。RDMAをサポートするNICは、ローカルメモリへのRDMAアクセスが適切に有効化することを確保するために、メモリプロテクション、例えば、翻訳保護テーブル(TPT:translation and protection table)をサポートすることが要求される。このようなテーブルを実装することは、ハードウェアコストを増大し、特に、周辺バス(例えば、PCI:Peripheral Component Interconnect)へ接続されるNICの性能に影響を与える可能性がある。ハードウェアベースのTPTの代替法法としては、他のNICへのRDMAアクセスを有効化するための機能を果たすNICドライバを構成することである。この場合、全体のシステムは、RDMAアクセスがホストをクラッシュさせるようには生じないことを確保するために協同しなくてはいけない。
【0003】
この問題に対する解決方法は、ホスト上で動作するドライバにコピーが保持される、システム全体をカバーする保護テーブルの形で実現されるであろう。ドライバは、テーブルのローカル部を更新し、変更を遠隔の度ラバに反映する。ホストが再起動しない限りは、問題はない。しかし、ホスト、例えば、HOST Aが再起動された場合には、システム内の残りのホストは、すぐには、このことを認知しない、あるいは、認知できない。HOST Aが、RDMAアクセスを再起動の直後に可能とすると、保護テーブル内の古い情報(HOST Aが再起動される前)に基づいたリモートホストから始められたRDMA動作は、HOSTAをクラッシュさせることがある。
【0004】
例えば、ホスト(ネットワーク内のノード)が再起動されたとき、ホストの内部RDMA設定、すなわち、登録されたメモリ領域は解除され、初期化される。しかし、他のホストのRDMA設定が更新されていないと、他のホストは、RDMAを使って、最近再起動したホストのメモリにアクセス使用とするかもしれない。このとき、当該ホストのメモリ割当ては、再起動後初期化されており、再起動されたホストのメモリ割当ての初期化が他のホストの設定に反映されていないので、他のホストの再起動したホストのメモリへの、古い設定によって決定されたアドレスへのアクセスは、再起動したホストの動作に重要な情報を上書きしてしまうかもしれず、再起動したホストをクラッシュさせるかもしれない。
【0005】
従って、再起動されたホストが他のホストによってそのように認識され、再起動したホストに関連するシステムの保護テーブル内の情報が、再起動したホストが完全にシステムに再び組み込まれるまで、無効化されることを確保することが本質的である。
【0006】
【発明が解決しようとする課題】
通常の解決方法は、おそらくハートビートユーザレベルプロセスと共に、リモートホストの状態の変化をドライバに通知する各ノード上のユーザレベルプロセス(Unix(登録商標)におけるデーモンプロセスのような)の形を採用するかもしれない。例えば、システムは、各ホストにNIC制御プロセスとハートビートプロセスを有する。NIC制御プロセスは、NICを初期化する機能を持ち、NICドライバに、システムにおける例えば、ホストの再起動などの変化を通知する。各ハートビートプロセスは、ハートビートプロセスとメッセージを交換することによって、他のホストの状態を監視し続ける。例えば、ホスト、HOSTAが、落ちた場合には、ハートビートメッセージは送られない。所定の時間後、他のハートビートプロセスは、HOST Aが落ちたことを断定する。各ハートビートプロセスは、NIC制御プロセスにそのことを通知し、これは次にドライバに通知して、HOST Aへの全てのアクセスをブロックする。HOST Aが復帰すると、そのハートビートプロセスは再びメッセージを送信し始める。他のハートビートプロセスは、メッセージを受け取り、これらのNIC制御プロセスに、これを通知し、こんどは、ドライバにこれを通知して、HOST Aへのアクセスを再び可能とする。しかし、このアプローチには幾つかの問題がある。例えば、NICの初期化は、ユーザレベルプロセスであるNIC制御プロセスに依存しているため、NICが初期化されるまでに時間がかかる。ホストの負荷が大きい場合には、このプロセスは、ちょうど良く動作するようにはスケジューリングされいないかもれいない(システム応答が遅い)。この間、NICは使用できない。また、NIC制御プロセスあるいはハートビートプロセスのいずれかが落ちるかもしれない。NIC制御プロセスが落ちることは、システムイベントに対するホストの応答を含み、例えば、再起動したホストへのアクセスが長時間再開されないかもしれない。ハートビートプロセスが落ちることは、ホストのクラッシュと間違えられる可能性があり、従って、全体のシステム性能に影響する。すなわち、ユーザレベルプロセスを使用することは、システム全体の信頼性を低くすることになる。
【0007】
他の問題は、潜在的に、RDMAリクエストによって使用されるものとは異なる、組み込みプロトコルのための通信経路を用い、NICのRDMA機能が利用可能とされる前に、実行途中のRDMAアクセスが無いことを確保することができないユーザレベルプロセスに起因することになろう。
【0008】
ノードが再起動されたとする。そのノードのドライバは、以前の状態の全ての情報を失う。特に、全ての、以前に登録したメモリ領域と、他のノードに登録されているメモリ領域に関する全ての情報を失う。しかし、リモートノードは、そのノードが再起動されたことを知らないかもしれない。あるドライバが当該ホストが再起動されたことを知り、他のドライバが知らないようなシステムに再起動されたホスト上のNICを再組み込みする問題は、解決する必要がある。ターゲットであるNICに対して、動作途中であるRDMA動作が無いことを確保しなければならないという意味において、解決方法は安全でなくてはならない。もし、そのようなRDMA動作が有ると、これらは、ホストが再起動される前に始動されており、古い情報に基づいており、ホストをクラッシュさせる可能性がある。再組み込みの終わりには、そのNICドライバは、システムの保護テーブルの最新のコピーを有していなければならず、システムの一部である、他の全てのホストは、そのNICがシステムの一部として機能していることを知らなければらない。この問題をユーザレベルモニタプロセスで解決することは、安全な時間になるまで、NICの全体の初期化を送らせることになる。ユーザレベルプロセスが通信するためには、各ホストは、他のNICと、RDMA機能なしに、適合されていなければならず、全体のハードウェアコストを増加させる。
【0009】
本発明の課題は、RDMA機能を有するNICを持つホストを、NICの初期化を制御するのに、ユーザレベルプロセスに頼らないで、ネットワークに安全に組み込むための装置を提供することである。
【0010】
【課題を解決するための手段】
本発明の装置は、RDMA機能を有している複数のホストからなるネットワーク内のホストにある装置であって、ネットワーク内のホストが起動されたとき、ネットワーク内の複数のホストの全てに、当該ホストが起動されたことを示す代1のメッセージを送信する手段と、複数のホストから当該ホストへのRDMAアクセスを全て利用不可能にする手段と、当該ホストに第2のメッセージを送ることによって、第1のメッセージに応答する手段と、当該ホストが複数のホストからのRDMAアクセスを受け付ける準備ができたことを示す第3のメッセージを、複数のホストの全てから第2のメッセージを受け取り、RDMA機能が利用可能とされた後に、全ての複数のホストに送信する手段とを備えることを特徴とする。
【0011】
本発明によれば、ネットワーク内のホストが起動される毎に、ホストは、ネットワークの全てのホストにこれを通知する。従って、全てのホストは、どのホストが起動されたかを知ることができ、当該ホストへのRDMAアクセスに使用される情報を、正しくクリアし、更新することができる。結果として、起動されたホストは、ネットワークに安全に組み込み、あるいは、再組み込みされるが、クラッシュは生じない。起動された、あるいは、再起動されたホストのネットワークへの組み込み、あるいは、再組み込みは、同様に行うことができる。
【0012】
このアプローチの独自性の一部は、SEND/RECEIVE機能と、RDMA機能の初期化を分離したことにある。SEND/RECEIVE初期化は、NIC自身がそのためのプロトコルを使って使用されるように実行され、従って、全体のハードウェアコストを下げる。RDMA機能を有しない他のNICが当該プロトコルを実行する必要はない。更に、NIC自体がこのプロトコルを実行するのに使われるため、プロトコルが終了すれば、システム内にRDMAアクセスが処理されずに残っていることがないことの保証を、ユーザプロセスが使用されうる場合よりも簡単に達成することができる。更に、このプロトコルが依然処理中であっても、SEND/RECEIVEを介して、通常の通信をNICを持ち手開始することが可能である。また、ユーザプロセスに対する依存性を減少させることで、システム内の部品の数を減らすことができ、全体の信頼度を上げることができる。この機能をカーネルに含ませることにより、ドライバの開発コストは上がるが、他のコストは、プロトコルが簡単であるため、かなり小さくなる。
【0013】
【発明の実施の形態】
ここで、再起動されたホストのNICをシステムに安全に再組み込みし、これらのRDMA機能を利用可能にすることを確保するためにユーザレベルプロセスを使用しないアプローチを示す。このアプローチは、システム内のNICドライバ間の協同にのみ依存している。この機能をドライバに実装することは、開発コストを増加させるが、高速な応答を可能にするという利点がある。(ドライバは、他のノードからの入力プロトコルメッセージに応答するのに、割り込みの処理を利用することができる。)更に、ドライバは、そのRDMA機能を利用可能とする前に、処理途中である古いRDMAアクセスが無いことを確保することができる。要求されるロジックは、ユーザレベルプロセスによって要求されるものより、おそらくは簡単で、従って、信頼性も改善されるであろう。
−システム構成
図1は、本発明の実施形態が基礎とするシステム構成を示す図である。
【0014】
システムは、多くのホスト10−1〜10−7によって構成されている。各ホスト10−1〜10−7は、1以上のNIC11を持っている。NIC11は、ネットワーク12を介して接続される。NIC11は、別々に、SEND/RECEIVE機能11−1とRDMA機能11−2の両方を持つ。例えば、SEND/RECEIVE機能11−1を利用可能とし、同時にRDMA機能11−2を利用不可能とすることが可能である。
【0015】
NIC11は、専用のハードウェアのアドレス翻訳保護テーブル(TPT)を持たない。そのかわり、ドライバ13は、協同して、ソフトウェアのシステム全体に渡る保護テーブル13−1を持つ。テーブル13−1は、ローカル部とリモート部の2つの部分からなる。ローカルなユーザアプリケーションがドライバ13にメモリを登録する結果として、テーブルのローカル部にエントリが加えられる。ユーザプロセスは、登録したメモリへのRDMAアクセスを利用可能としたり利用不可能とすることができる。ドライバ13は、テーブル13−1のローカル部の変更を他のノードのテーブル13−1の対応するリモート部に反映させる。再起動するホストが無い限り、全てのドライバ13は、保護テーブル13−1に同じ情報を持っている。
【0016】
各ドライバの保護テーブル13−1は、システム内の全てのNIC11についての情報を含んでいる。ローカルプロセスがRDMA動作を発行すると、ドライバ13は、保護テーブル13−1のコピーをチェックし、リモートアクセスが許可されているか否かを判断する。(保護テーブルを他の形で実現することも可能である。例えば、ドライバは、各RDMAトランザクションを異なるプロトコルで有効化する。この場合、各ドライバは、ローカルアドレスのみを登録するテーブルを持ち、リモートアクセスが要求されたときには、リモートアクセスの要求が発行される前に、プロトコルを確立するメッセージが、ローカルアドレスのみを有するテーブルを使って、ホスト間でやりとりされる。しかし、古い保護情報を使用するという問題は依然存在する。以後に示すアプローチは依然適用可能である。)
システム内のNIC11の最大数は、全てのホスト10−1〜10−7に知られているか、確定可能である。この最大数は、現在接続されているNIC11データはなく、ネットワーク12に接続可能なNIC11の可能な全数を反映している。メッセージあるいは、RDMA動作は、NIC11が適切に初期化されていないあるいは、ネットワーク12に接続されていないのでない限りは、データを配布することになる。後者の場合、メッセージを送信したドライバ13が見ることができる、ハードウェアで生成された、ネガティブアクノレッジメント(NACK)がある。
【0017】
ドライバ11がNACKを検出すると、NIC11がシステムに再組み込みされるまで、リモートNIC11へのアクセスをドライバが禁止する。
最後に、同じ送信元、宛先のRDMA及びSEND動作は、同じ経路を使用する。ネットワーク12は、このような動作が互いに追い越すことを許さない。
【0018】
図2は、ホストの構成を示す図である。
ホスト10−iと10−jは、NIC11を介して、ネットワーク12に接続される。ホスト10−iと10−jは、ユーザ空間とカーネル空間を有している。プロセスPは、ユーザ空間に有る。ドライバは、カーネル空間にある。NICは、ホスト10−iと10−jのハードウェアの一部である。各NIC11は、ネットワーク12とドライバ13のインターフェースを持ったSEND/RECEIVE機能11−1とRDMA機能11−2を有している。
【0019】
プロセスPが起動されると、プロセスPは、ドライバ13のRDMA保護機能内の翻訳保護テーブル(TPT)13−1にプロセスP自身が使用するメモリ領域iを登録する。そして、TPT13−1は、プロセスPに割り当てられた領域iのエントリを有する。同様に、ホスト10−jにおいては、プロセスMは、メモリ領域Xをドライバ(不図示)に登録する。この登録は、ホスト10−iのTPT13−1に反映される。そして、ホスト10−iのTPTは、プロセスMの領域Xのエントリを持つようになる。
【0020】
プロセスPがプロセスMにアクセスする必要があるときは、プロセスPは、TPT13−1の領域Xのエントリを参照して、アクセスのための要求を発行し、アクセスが確立される。プロセスMがクラッシュしたか、ホスト10−jがクラッシュした場合には、TPT13−1の領域Xのエントリは、ホスト10−jのプロセスMが利用できないことを示すために、TPT13−1から消去される。
【0021】
図3は、翻訳保護テーブルの構成を示す図である。
図3においては、ネットワーク内に、0〜N−1まで番号付けられたN個のノードがあるとする。
【0022】
TPTは、上記したように、ローカル部とリモート部を有している。ノード0では、TPTのローカル部に、自ノード0のためのメモリ領域が登録されている。リモート部には、ノード1〜ノードN−1のためのメモリ領域が登録されている。TPTのエントリフォーマットが図3(b)に示されている。TPTの各エントリは、項目として、論理アドレス、物理アドレス、長さ、保護属性を有している。ユーザ空間のユーザプロセスは、論理アドレスを用いて、アクセス要求を発行する。この論理アドレスは、TPTを参照することによって、物理アドレスに変換され、物理アドレスを用いて、宛先にメッセージを送信する。長さの項目は、物理アドレスの項目で特定されるアドレスの領域の長さを、例えば、バイト単位で示すものである。保護属性の項目は、物理アドレスで示される領域の、メモリ保護の種類(読み取り専用、書き込み専用など)を特定するものである。
【0023】
図4は、本発明の実施形態に従ったメッセージ交換のシーケンスを示す図である。
ホストがドライバ(DRIVER A)を起動したとき、初期化の一部として、SEND/RECEIVE機構を利用可能とし、RDMA機構を利用不可能とする。SEND/RECEIVE機構は、NICドライバがリモートノードと通信できるように利用可能とされる。RDMA機構は、あらゆる入力する(古い)RDMA動作を拒絶するために、利用不可能とされる。
【0024】
DRIVER Aは、システム全体に、起動していることを示すメッセージ(BOOTING)をブロードキャスト(あるいは、ユニキャスト)する。他のNICドライバから、その存在を認識したというメッセージを得るまでまつ。各ホストの応答が一回のみカウントされるように、応答を監視する。
【0025】
DRIVER AからのBOOTINGメッセージを受信したNICドライバ(DRIVER B)は、ローカルに保持している翻訳保護テーブルのDRIVER Aの部分をクリアする。テーブルのDRIVER Aの部分をクリアすることは、DRIVER AのNICに対するRDMAアクセスを禁止する効果がある。また、DRIVER Aの翻訳保護テーブルへの更新を送信することも禁止する。(DRIVER Bが、より早くに、DRIVER AのNICが機能しておらず、既にそれへのアクセスが禁止されていることを認識することは可能である。アクセスが既に禁止されているか否かは、ここでは問題ではない。)次のステップでは、DRIVER Bが、そのNICへの全ての発行された動作、SENDあるいはRDMAが実行されたか否かを確認する。その後、DRIVER Bは、アクノレッジメントメッセージ(ACK)で応答する。
【0026】
DRIVER Aは、DRIVER BにBOOTINGメッセージを送信し、DRIVER BがACKメッセージで応答したので、DRIVER AとDRIVER Bとの間に、まだ終わっていない、あるいは、実行中のRDMA動作が無いことを保証する。(追い越しなし、及び、同じ経路を使っていることを仮定。)換言すれば、DRIVER AのNICは、古いRDMA動作から保護されている。DRIVER Bが、ACKを送る前に、全ての発行された動作が実行されたことを確認しないならば、この保証は成り立たない。ACKが、以前に発行されたRDMA動作の前に送られることはありえる。特に、NICが発行された動作を処理するのに、複数のキューを持っている場合、これがあり得る。
【0027】
リモートNICが接続されていない、あるいは、動作していない場合、ドライバのACKではなく、ハードウェアで生成された(HW)NACKが受信される。従って、ドライバは、システム内の全てのノードを数えることができ、どのNICがシステムの一部で、どれがそうでないかを知ることができる。全てのNICが数えられた時にのみ、DRIVER Aは、RDMA機能を利用可能にする。そして、RDMAアクセスの準備ができたことを示すメッセージ(RDMA READY)を分かっている全てのNICに送信する。
【0028】
RDMA READYメッセージを受信するNICドライバ(DRIVERB)は、そのNICへのRDMAアクセスを利用可能にする。言い換えれば、DRIVER Aのシステム保護テーブルに、翻訳保護テーブルの更新を送信し始める。そして、DRIVER Aの保護テーブルの内、DRIVER BのNICを参照する部分を更新する。全てのリモートNICドライバが、DRIVER Aのテーブルのこれらの部分を更新したとき、DRIVER Aは、システムに完全に再組み込みされる。
【0029】
ホストの状態は、何時変わるかわからないので、ドライバがそのホストのクラッシュに応答する前に、NICドライバ(DRIVER C)によってBOOTINGメッセージが受信されることもあり得る。この場合、DRIVER Aは、DRIVER CのNICを数えることができない。従って、DRIVER Aは、適切なタイムアウト時間後、数えることができなかったNICにBOOTINGメッセージを再送する。この処理は、全てのNICが数えられるまで繰り返される。別の方法として、DRIVER CからACKメッセージの代わりに、BOOTINGメッセージを受け取った場合には、DRIVER Aは、このプロセスをやらないことも可能である。
【0030】
新しいホストは、再起動したホストと同様の方法でシステムに加えることが可能である。
図5は、本発明の実施形態に従った、TPTにユーザプロセスが使う領域をユーザプロセスが登録する処理のフローチャートである。
【0031】
ステップS1においては、ノードNのユーザプロセスは、ドライバに登録されるべき領域の情報を与える。ステップS2においては、ノードNのドライバは、領域を特定し(あるいは、割当て)、論理アドレスを物理アドレスに変換し、ローカルTPTにエントリiを割当て、その領域に関する情報を格納する。ステップS3においては、ノードNのドライバは、ネットワークにつながれた全てのノードに更新要求を発行する。更新要求により、ノードNのドライバによって割り当てられた領域に対応する各ノードのTPTのエントリiを更新する。
【0032】
図6は、本発明の実施形態に従った、ユーザプロセスがRDMA Write転送コマンドを発行する処理のフローチャートである。
ステップS10において、ユーザプロセスは、ローカルな登録された領域X(以下、RR X)から、遠隔の登録された領域Y(以下、RR Y)へBバイトデータ(Bは、バイト単位のデータ長である)を転送する要求である、RDMAコマンドをドライバへ発行する。ステップS11においては、ドライバは、ユーザプロセスが、ReadアクセスをRR Xに発行したか否かを判断する。ステップS11の判断がNOの場合には、ドライバは、ユーザプロセスに保護エラーを返す。ステップS11の判断がYESの場合には、ステップS12に進む。ステップS12においては、ドライバは、ユーザプロセスがRR Yに対し、Writeアクセスを発行したか否かを判断する。ステップS12の判断がNOの場合には、ドライバは、ユーザプロセスに保護エラーを返す。ステップS12の判断がYESの場合には、ステップS13に進む。ステップS13においては、ドライバは、転送されたデータの長さが、2つの領域(すなわち、RR XとRRY)の限界以内であるか否かを判断する。ステップS13の判断がNOの場合には、ドライバは、ユーザプロセスに保護エラーを返す。ステップS13の判断がYESの場合には、ドライバは、NICにデータを転送させるため、NICに対し、転送コマンドを発行する。
【0033】
図7は、本発明の実施形態に従った、ホストの起動処理を示すフローチャートである。
ホストが起動された後、ドライバは、NICとTPTを初期化し、SEND/RECEIVE機能を利用可能とし、RDMA機能を利用不可能とし、{応答集合}という変数を全ての0に設定する(ステップS15)。ステップS16においては、ドライバは、全てのノードにBOOTINGメッセージを送信する。ステップS17では、ドライバは、所定の時間内で、他のノードからの応答を待つ。ステップS17でタイムアウトが起こったときは、ステップS16に戻る。ステップS17において、ドライバが、応答メッセージ(ACK、ハードウェアで生成されたNACK、BOOTINGメッセージのいずれか)を受信した場合には、取り阿波は、応答メッセージの発信ノードを特定し、ステップS18において、{応答集合}にノードの識別子を加える。
【0034】
例えば、応答集合は、0と1の列から構成される。ステップS15においては、この列は全て0に設定される。この列中、各位は、ホストに対応付けられる。自ホストのドライバによって応答が受信された場合には、応答を送信したホストが特定され、対応する位置にある列内の0を1に設定する。列が1で満たされた場合、これは、全てのホストから応答を受信したことを示す。
【0035】
ステップS19において、ドライバは、全てのノードが{応答集合}にあるか否かを判断する。ステップS19における判断が、NOの場合には、ステップS17に進む。ステップS19の判断がYESの場合には、ステップS20に進む。ステップS20では、ドライバは、RDMA機能を利用可能とし、ステップS21において、全てのノードにRDMA READYメッセージを送信する。
【0036】
図8は、起動されたノード以外のノードの動作を示すフローチャートである。
ステップS25において、ドライバは、起動されたノードNのドライバからBOOTINGメッセージを受信する。ステップS26において、ドライバはノードNのTPTエントリをクリアし、ノードNへのTPT更新を利用不可能にする。ステップS27においては、ドライバは、ノードNに対し、ACKで応答する。他の場合には、ノードN以外のノードのドライバは、ダウンしている可能性がある。この場合、BOOTINGメッセージへの応答(HW NACK)は、ハードウェアで生成され、、ノードNに送り返される。また、ノードN以外のノードは、ちょうど起動されたばかりかもしれない。この場合、BOOTINGメッセージがノードNに送られ、このノードがノードNとして動作する。
【0037】
いずれにしても、ドライバは、ステップS28において、RDMA READYメッセージをノードNから受信する。ステップS29においては、ドライバは、ノードNに対するTPT更新を利用可能とする。そして、ステップS30において、ドライバは、そのローカルTPT部の内容により、ノードNのTPTを更新する。この更新は、例えば、RDMA Writeコマンドにより達成される。
【0038】
処理フローは、2つのホストのみを参照して説明したが、この処理フローは、多くのホスト間で実行される。
(付記1)RDMA機能を有した、ホストと複数のホストからなるネットワーク内の該ホストに設けられた装置であって、
該ネットワーク内のホストが起動したとき、該ホストが起動したことを示す第1のメッセージを、該ネットワーク内の全ての該複数のホストに送信する手段と、
該複数のホストからの該ホストへのRDMAアクセスを利用不可能とする手段と、
該ホストに第2のメッセージを送信することによって、第1のメッセージに応答する手段と、
該ホストが、該複数のホストからのRDMAアクセスを受付可能であることを示す第3のメッセージを、該複数のホストの全てから第2のメッセージを受信し、RDMA機能を利用可能とした後、該複数のホストの全てに送信する手段と、を備えることを特徴とする装置。
【0039】
(付記2)前記装置は、前記ホストのドライバに含まれることを特徴とする付記1に記載の装置。
(付記3)他のホストにRDMAアクセスを行うための情報を有する翻訳保護テーブル手段を更に有し、
前記第1のメッセージを受信したとき、該第1のメッセージを送信したホストに関する情報を該翻訳保護テーブル手段からクリアし、該ホストへのRDMAアクセスを不可能にすることを特徴とする付記1に記載の装置。
【0040】
(付記4)前記複数のホストの翻訳保護テーブルは、該複数のホストへ、前記第3のメッセージが送られた後、更新されることを特徴とする付記3に記載の装置。
【0041】
(付記5)前記第2のメッセージは、アクノレッジメント、ノンアクノレッジメント、及び、前記複数のホストから送られた前記第1のメッセージの一つであり、ノンアクノレッジメントは、ハードウェアによって生成されることを特徴とする付記1に記載の装置。
【0042】
(付記6)前記第2のメッセージが前記複数のホストの全てから受信されたか否かは、監視され、0と1の列からなる応答集合によって判断されることを特徴とする付記1に記載の装置。
【0043】
(付記7)前記ホストは、RDMA機能と他のメッセージ通信機能を有するネットワークインターフェースカードを有し、RDMA機能と他のメッセージ通信機能の初期化は独立して行われることを特徴とする付記1に記載の装置。
【0044】
(付記8)RDMA機能を有した、ホストと複数のホストからなるネットワーク内の該ホストの方法であって、
該ネットワーク内のホストが起動したとき、該ホストが起動したことを示す第1のメッセージを、該ネットワーク内の全ての該複数のホストに送信するステップと、
該複数のホストからの該ホストへのRDMAアクセスを利用不可能とするステップと、
該ホストに第2のメッセージを送信することによって、第1のメッセージに応答するステップと、
該ホストが、該複数のホストからのRDMAアクセスを受付可能であることを示す第3のメッセージを、該複数のホストの全てから第2のメッセージを受信し、RDMA機能を利用可能とした後、該複数のホストの全てに送信するステップと、
を備えることを特徴とする方法。
【0045】
(付記9)前記方法は、前記ホストのドライバで行われることを特徴とする付記8に記載の方法。
(付記10)他のホストにRDMAアクセスを行うための情報を格納する翻訳保護テーブルステップを更に有し、
前記第1のメッセージを受信したとき、該第1のメッセージを送信したホストに関する情報を該翻訳保護テーブルステップで格納された情報からクリアし、該ホストへのRDMAアクセスを不可能にすることを特徴とする付記8に記載の方法。
【0046】
(付記11)前記複数のホストの翻訳保護テーブルは、該複数のホストへ、前記第3のメッセージが送られた後、更新されることを特徴とする付記10に記載の方法。
【0047】
(付記12)前記第2のメッセージは、アクノレッジメント、ノンアクノレッジメント、及び、前記複数のホストから送られた前記第1のメッセージの一つであり、ノンアクノレッジメントは、ハードウェアによって生成されることを特徴とする付記8に記載の方法。
【0048】
(付記13)前記第2のメッセージが前記複数のホストの全てから受信されたか否かは、監視され、0と1の列からなる応答集合によって判断されることを特徴とする付記8に記載の方法。
【0049】
(付記14)前記ホストは、RDMA機能と他のメッセージ通信機能を有するネットワークインターフェースカードを有し、RDMA機能と他のメッセージ通信機能の初期化は独立して行われることを特徴とする付記8に記載の方法。
【0050】
【発明の効果】
本発明によれば、RDMA機能を有するNICを持つホストを、ユーザレベルプロセスを用いずに、ネットワークに安全に組み込む装置が提供される。
【図面の簡単な説明】
【図1】本発明の実施形態が基本とするシステム構成を示す図である。
【図2】ホストの構成を示す図である。
【図3】翻訳保護テーブル(translation and protection table)の構成を示す図である。
【図4】本発明の実施形態に従った、メッセージ交換のシーケンスを示す図である。
【図5】本発明の実施形態に従った、ユーザプロセスが、ユーザプロセスが使用する領域をTPTに登録する処理のフローチャートである。
【図6】本発明の実施形態に従った、ユーザプロセスがRDMA転送コマンドを発行する処理のフローチャートである。
【図7】本発明の実施形態に従った、ホストの起動処理のフローチャートである。
【図8】起動されたノード以外のノードの動作を示すフローチャートである。
【符号の説明】
10−1〜10−7、10−i、10−j ホスト
11 NIC
11−1 SEND/RECEIVE機能
11−2 RDMA機能
12 ネットワーク
13 ドライバ
13−1 RDMA保護機能
20 ユーザ空間
21 カーネル空間
Claims (5)
- RDMA機能を有した、ホストと複数のホストからなるネットワーク内の該ホストに設けられた装置であって、
該ネットワーク内のホストが起動したとき、該ホストが起動したことを示す第1のメッセージを、該ネットワーク内の全ての該複数のホストに送信する手段と、
該複数のホストからの該ホストへのRDMAアクセスを利用不可能とする手段と、
該ホストに第2のメッセージを送信することによって、第1のメッセージに応答する手段と、
該ホストが、該複数のホストからのRDMAアクセスを受付可能であることを示す第3のメッセージを、該複数のホストの全てから第2のメッセージを受信し、RDMA機能を利用可能とした後、該複数のホストの全てに送信する手段と、
を備えることを特徴とする装置。 - 前記装置は、前記ホストのドライバに含まれることを特徴とする請求項1に記載の装置。
- 他のホストにRDMAアクセスを行うための情報を有する翻訳保護テーブル手段を更に有し、
前記第1のメッセージを受信したとき、該第1のメッセージを送信したホストに関する情報を該翻訳保護テーブル手段からクリアし、該ホストへのRDMAアクセスを不可能にすることを特徴とする請求項1に記載の装置。 - 前記第2のメッセージは、アクノレッジメント、ノンアクノレッジメント、及び、前記複数のホストから送られた前記第1のメッセージの一つであり、ノンアクノレッジメントは、ハードウェアによって生成されることを特徴とする請求項1に記載の装置。
- 前記ホストは、RDMA機能と他のメッセージ通信機能を有するネットワークインターフェースカードを有し、RDMA機能と他のメッセージ通信機能の初期化は独立して行われることを特徴とする請求項1に記載の装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002357449A JP2004192179A (ja) | 2002-12-10 | 2002-12-10 | Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置 |
US10/721,506 US7418487B2 (en) | 2002-12-10 | 2003-11-26 | Apparatus and the method for integrating NICs with RDMA capability but no hardware memory protection in a system without dedicated monitoring processes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002357449A JP2004192179A (ja) | 2002-12-10 | 2002-12-10 | Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004192179A true JP2004192179A (ja) | 2004-07-08 |
Family
ID=32463431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002357449A Withdrawn JP2004192179A (ja) | 2002-12-10 | 2002-12-10 | Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7418487B2 (ja) |
JP (1) | JP2004192179A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581015B2 (en) | 2006-03-24 | 2009-08-25 | Fujitsu Limited | Communication device having transmitting and receiving units supports RDMA communication |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430629B2 (en) * | 2005-05-12 | 2008-09-30 | International Business Machines Corporation | Internet SCSI communication via UNDI services |
US8327192B2 (en) * | 2006-02-06 | 2012-12-04 | Intel Corporation | Method for memory integrity |
WO2008011253A2 (en) * | 2006-07-17 | 2008-01-24 | Bigfoot Networks, Inc. | Host posing network device and method thereof |
US10474625B2 (en) | 2012-01-17 | 2019-11-12 | International Business Machines Corporation | Configuring compute nodes in a parallel computer using remote direct memory access (‘RDMA’) |
US9229901B1 (en) | 2012-06-08 | 2016-01-05 | Google Inc. | Single-sided distributed storage system |
US8862561B1 (en) | 2012-08-30 | 2014-10-14 | Google Inc. | Detecting read/write conflicts |
US9058122B1 (en) | 2012-08-30 | 2015-06-16 | Google Inc. | Controlling access in a single-sided distributed storage system |
US8676851B1 (en) | 2012-08-30 | 2014-03-18 | Google Inc. | Executing transactions in distributed storage systems |
US9164702B1 (en) | 2012-09-07 | 2015-10-20 | Google Inc. | Single-sided distributed cache system |
US9146819B2 (en) | 2013-07-02 | 2015-09-29 | International Business Machines Corporation | Using RDMA for fast system recovery in virtualized environments |
US9313274B2 (en) | 2013-09-05 | 2016-04-12 | Google Inc. | Isolating clients of distributed storage systems |
US10303646B2 (en) | 2016-03-25 | 2019-05-28 | Microsoft Technology Licensing, Llc | Memory sharing for working data using RDMA |
CN113300818B (zh) * | 2021-02-08 | 2023-04-28 | 阿里巴巴集团控股有限公司 | 数据传输系统及方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119244A (en) * | 1998-08-25 | 2000-09-12 | Network Appliance, Inc. | Coordinating persistent status information with multiple file servers |
US6675200B1 (en) * | 2000-05-10 | 2004-01-06 | Cisco Technology, Inc. | Protocol-independent support of remote DMA |
US7103650B1 (en) * | 2000-09-26 | 2006-09-05 | Microsoft Corporation | Client computer configuration based on server computer update |
US6804673B2 (en) * | 2001-04-19 | 2004-10-12 | Fujitsu Limited | Access assurance for remote memory access over network |
US20040010612A1 (en) * | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US7290038B2 (en) * | 2002-07-31 | 2007-10-30 | Sun Microsystems, Inc. | Key reuse for RDMA virtual address space |
WO2004017220A1 (en) * | 2002-08-19 | 2004-02-26 | Broadcom Corporation | One-shot rdma |
US7299266B2 (en) * | 2002-09-05 | 2007-11-20 | International Business Machines Corporation | Memory management offload for RDMA enabled network adapters |
US7171452B1 (en) * | 2002-10-31 | 2007-01-30 | Network Appliance, Inc. | System and method for monitoring cluster partner boot status over a cluster interconnect |
US7233984B2 (en) * | 2002-11-12 | 2007-06-19 | Microsoft Corporation | Light weight file I/O over system area networks |
US7610348B2 (en) * | 2003-05-07 | 2009-10-27 | International Business Machines | Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed |
US7370082B2 (en) * | 2003-05-09 | 2008-05-06 | Microsoft Corporation | Remote invalidation of pre-shared RDMA key |
US7716323B2 (en) * | 2003-07-18 | 2010-05-11 | Netapp, Inc. | System and method for reliable peer communication in a clustered storage system |
US20060075057A1 (en) * | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access system and method |
US20060259570A1 (en) * | 2005-05-13 | 2006-11-16 | Microsoft Corporation | Method and system for closing an RDMA connection |
-
2002
- 2002-12-10 JP JP2002357449A patent/JP2004192179A/ja not_active Withdrawn
-
2003
- 2003-11-26 US US10/721,506 patent/US7418487B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581015B2 (en) | 2006-03-24 | 2009-08-25 | Fujitsu Limited | Communication device having transmitting and receiving units supports RDMA communication |
Also Published As
Publication number | Publication date |
---|---|
US7418487B2 (en) | 2008-08-26 |
US20040111498A1 (en) | 2004-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6594698B1 (en) | Protocol for dynamic binding of shared resources | |
US6105122A (en) | I/O protocol for highly configurable multi-node processing system | |
EP0935200B1 (en) | Highly scalable parallel processing computer system architecture | |
US6925547B2 (en) | Remote address translation in a multiprocessor system | |
US6078990A (en) | Volume set configuration using a single operational view | |
US6711632B1 (en) | Method and apparatus for write-back caching with minimal interrupts | |
EP0935375B1 (en) | Name service for a highly configurable multi-node processing system | |
JP4825794B2 (ja) | ユーザーレベルスタック | |
US5448698A (en) | Inter-processor communication system in which messages are stored at locations specified by the sender | |
US6148349A (en) | Dynamic and consistent naming of fabric attached storage by a file system on a compute node storing information mapping API system I/O calls for data objects with a globally unique identification | |
US5625795A (en) | Exclusive control unit for a resource shared among computers | |
JP2004192179A (ja) | Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置 | |
US7844810B2 (en) | Computer system and booting method therefor and server used for streaming on-demand a remaining part of a boot-up main memory image that includes an operating system | |
US7840765B2 (en) | RDMA copy-on-write | |
US7003775B2 (en) | Hardware implementation of an application-level watchdog timer | |
CN113495795A (zh) | 一种进程间通信方法及相关设备 | |
JP2002328813A (ja) | プログラム修正方法 | |
JPH11316749A (ja) | デ―タ・ストレ―ジ・システムにおける冗長デ―タの識別方法 | |
US10397103B2 (en) | Data processing system with routing tables | |
JP3176472B2 (ja) | データ転送方式 | |
JP2005515543A (ja) | ドメイン間データ転送 | |
JP3130892B2 (ja) | 二重化システム | |
JPH0619857A (ja) | コンピュータ間のデータ一致装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060307 |