JP2005044353A - 複数のnicrdma対応デバイスにおける状態の移行 - Google Patents

複数のnicrdma対応デバイスにおける状態の移行 Download PDF

Info

Publication number
JP2005044353A
JP2005044353A JP2004206470A JP2004206470A JP2005044353A JP 2005044353 A JP2005044353 A JP 2005044353A JP 2004206470 A JP2004206470 A JP 2004206470A JP 2004206470 A JP2004206470 A JP 2004206470A JP 2005044353 A JP2005044353 A JP 2005044353A
Authority
JP
Japan
Prior art keywords
network interface
identifier
computer
rdma
readable medium
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004206470A
Other languages
English (en)
Inventor
Khawar M Zuberi
エム.ズベール ハワー
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005044353A publication Critical patent/JP2005044353A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)
  • Logic Circuits (AREA)
  • Circuits Of Receivers In General (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

【課題】 複数のネットワークインタフェースを有する同一のデバイス中で、第1のネットワークインタフェースによって生成された識別子をそのインタフェースが送信した後に第1のネットワークインタフェースと少なくとも第2のネットワークインタフェース間でコントロールを転送する方法を提供すること。
【解決手段】 この方法では、第2のデバイスからの識別子の受信を知らせるメッセージを受信することを含み、第1のネットワークインタフェースによって生成された識別子のリストと、それら識別子に関連付けられた、複数ネットワークインタフェースを有するデバイスのメモリ中の記憶域とをプログラムコンポーネントに供給するように第1のネットワークインタフェースに問い合わせる。第2のデバイスによって受信された識別子がリストにある場合、この方法は、その識別子に関連付けられた記憶域を第2のネットワークインタフェースに送信する。
【選択図】 図5

Description

本発明は一般にはネットワーキングに関し、より詳細には、ネットワーク機器のCPUリソースをより効率的に使用することに関する。
ネットワークコンピューティングはすっかり普及したと言ってよい。今日使用されるコンピュータの多くは、複数のネットワークインタフェースコントローラ、すなわちNICを備えている。こうしたNICで可能なデータ転送速度は、そのデータを処理するために利用できるCPUの処理能力とメモリシステムの帯域幅とを上回る速さで増大している。その結果、この処理が次第にNICカード自体に移されるようになっている。この解決法はある程度は有効であるが、ネットワーク処理の負担をCPUおよびメモリバスからNICに移すことをさらに支援するプロトコルを開発するためにさらに標準の取り組みが進められている。
そのようなプロトコルの1つがリモートダイレクトメモリアクセス、すなわちRDMAである。RDMAは、NICカードがコンピュータシステムのメインメモリ中の所定の記憶域にデータパケットを置くことを可能にするプロトコルである。標準的なネットワークプロトコルスタックでは、RDMAソフトウェアは、トランスポート制御プロトコル(TCP)ソフトウェアのすぐ上位に存在する。これにより、最小限のCPUの介入でデータパケットを直接システムメモリに置くことが可能になる。
RDMAプロトコルを使用して、第1のマシンのメインシステムメモリの一区画を遠隔の第2のマシンが直接利用できるようにする。このプロトコルは、第1のマシンのメモリをSTagと称されるハンドルに関連付ける。第1のマシンのCPUから可能な限り多くの処理を軽減するために、第1のマシンのNICがSTagを生成する。次いでそのSTagが第2のマシンに送信され、第2のマシンは、関連付けられたデータとともにSTagを送り返すことにより書き込みを行うことができる。このデータおよび関連付けられたSTagを受信すると、第1のマシンのNICは、STagを読み取り、DMA転送を使用してそのデータをSTagに関連付けられたメモリに移す。
インターネットを通じて移動するデータは、1つのマシンから別のマシンまでいくつかの異なる経路をとることができる。このインターネット中の経路は、複数のサーバへの負荷が変化すると、またはサーバに一斉に障害が発生すると変化する。この経路の変化により、複数のNICを有するマシンがRDMA転送を行う際に問題が生じる可能性がある。データがインターネット中でとる経路が変化すると、第1のマシンから第2のマシンまで選択された経路が、それら2つのマシン間の経路をマシン1のNIC1からNIC2に変える形で変化する。NICがSTagを生成することを思い出されたい。したがって、NIC2は、NIC1によって生成されたSTagについての知識を持たないことになる。Stagの生成時にはマシン1からマシン2への経路がNIC1を使用しており、その後マシン2がマシン1にデータを送信する前にNIC2を使用する経路に変化した場合、マシン2は、NIC2にとって未知のSTagとともにデータを返すことになる。
同一マシン中の1つのNICによって生成され、別のNICによって受信されたSTagに対処する方法が必要とされる。
諸実施形態は、あるSTagを生成しなかったネットワークインタフェースにそのSTagが到着する問題を克服する方法を対象とする。この方法は、一意のSTagを有する所与のコンピュータのネットワークインタフェースに依拠する。これは、オペレーティングシステムによって確実にされることができる。所与のコンピュータのSTagは一意なので、同じコンピュータ上の別のネットワークインタフェースによって生成されたSTagを受信するネットワークインタフェースは、そのSTagが別のネットワークインタフェースによって生成されたことを検出できるようにされる。そのようなSTagが検出されると、そのSTagを受信するネットワークインタフェースは、OSカーネルに常駐するRDMAプログラムコンポーネントである、より高位レベルのソフトウェアにSTagを渡す。RDMAプログラムコンポーネントは、どのネットワークインタフェースがSTagを発信したのかを識別し、そのネットワークインタフェースによって生成されたすべてのSTagと、それらのSTagに関連付けられた割り当てられたメモリのアドレスとを関連付けられたネットワークインタフェースに問い合わせることができる。そしてそのアドレスが、未知のSTagを受信したネットワークインタフェースに渡される。このメモリアドレスを用いて、ネットワークインタフェースはデータ転送を完了することができる。
より詳細には、一実施形態は、複数のネットワークインタフェースを有するデバイス中で第1のネットワークインタフェースが第1のネットワークインタフェースによって生成された識別子を第2のデバイスに送信した後に、第1のネットワークインタフェースと少なくとも第2のネットワークインタフェースとの間でコントロールを転送する方法を対象とする。この識別子は、複数のネットワークインタフェースを有するデバイス中の記憶域に関連付けることができ、識別子とそれに関連付けられたデータフィールドは、第2のネットワークインタフェースが受信することができる。この方法はさらに、第2のデバイスからの識別子の受信を知らせる第2のネットワークインタフェースからプログラムコンポーネントへのメッセージを受信することを含む。次いで、この方法では、第1のネットワークインタフェースによって生成された識別子のリストと、それら識別子に関連付けられた、複数のネットワークインタフェースを有するデバイスのメモリ中の記憶域とをそのプログラムコンポーネントに供給するように第1のネットワークインタフェースに問い合わせる。第2のデバイスによって受信された識別子がリストにある場合、この方法は、その識別子に関連付けられた記憶域を第2のネットワークインタフェースに送信する。したがって、第2のネットワークインタフェースは、識別子に関連付けられた記憶域に、関連付けられたデータフィールドを送信することができるようになる。
別の実施形態は、第1のネットワークインタフェースと第2のネットワークインタフェースを含むホストコンピュータ中で、第1のネットワークインタフェースと少なくとも第2のネットワークインタフェースとの間でコントロールを転送する方法を対象とする。この方法は、第1のネットワークインタフェースによって生成され、ホストコンピュータ中の記憶域に関連付けられた識別子をリモートコンピュータから受信することを含む。次いで、この方法では、プログラムコンポーネントにメッセージを送信して識別子の受信を知らせ、プログラムコンポーネントは、第1のネットワークインタフェースによって生成された識別子のリストと、それら識別子に関連付けられたホストコンピュータ中の記憶域とを第1のネットワークインタフェースに問い合わせるように構成される。識別子のリストにリモートコンピュータからの識別子が含まれる場合、この方法は、その識別子に関連付けられた記憶域を受け取る。識別子のリストがリモートコンピュータからの識別子を含まない場合、この方法は、リモートコンピュータからの識別子を無効にする。
本発明のこの他の特徴および利点は、添付図面を参照して進める以下の例示的実施形態の詳細な説明から明らかになろう。
添付の特許請求の範囲に本発明の特徴を詳細に記載するが、本発明とその目的および利点は、添付図面と併せて以下の詳細な説明を読むことにより最もよく理解することができる。
図面では同様の要素は同様の参照符号で参照し、本発明は、適切なコンピューティング環境で実施されるものとして説明する。これは必須ではないが、本発明は、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令とそれに関連する電子回路に概ね即して説明する。一般に、プログラムモジュールには、特定のタスクを行うか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、当業者には、本発明は、ハンドヘルド機器、マルチプロセッサシステム、マイクロプロセッサを利用した、あるいはプログラム可能な家庭電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施してもよいことが認識されよう。本発明は、通信ネットワークを通じてリンクされた遠隔の処理機器によってタスクが行われる分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に置くことができる。
図1に、本発明を実施することが可能な適切なコンピューティングシステム環境100の一例を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能性の範囲について何らの制限を示唆するものではない。また、コンピューティング環境100は、例示的動作環境であるコンピューティング環境100に図示する構成要素の1つまたは組み合わせに関する依存性または必要性を有するものとも解釈すべきでない。
本発明は、他の多数の汎用または特殊目的のコンピューティングシステム環境または構成で動作することができる。本発明に使用するのに適する可能性がある、よく知られるコンピューティングシステム、環境、および/または構成の例には、これらに限定しないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド機器またはラップトップ機、タブレット機、マルチプロセッサシステム、マイクロプロセッサを利用したシステム、セットトップボックス、プログラム可能な家庭電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは機器を含む分散コンピューティング環境などがある。
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明することができる。一般に、プログラムモジュールには、特定タスクを行うか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、通信ネットワークを通じてリンクされた遠隔の処理機器によってタスクを行う分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよび/またはリモートのコンピュータ記憶媒体に置くことができる。
図1を参照すると、最も基本的な構成で、コンピューティングデバイス100は、少なくとも処理装置102とメモリ104を含む。コンピューティングデバイスの正確な構成とタイプに応じて、メモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはこれら2種の何らかの組み合わせとすることができる。この基本的構成を図1では点線106で示す。また、デバイス100は、追加的な特性/機能を備えることもできる。例えば、デバイス100は、これらに限定しないが磁気または光学的なディスクまたはテープを含む追加的ストレージ(取り外し可能および/または取り外し不能)も含むことができる。このような追加的ストレージを図1では取り外し可能ストレージ108および取り外し不能ストレージ110で表す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術として実装された揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれる。メモリ104、取り外し可能ストレージ108、および取り外し不能ストレージ110は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、これらに限定しないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CDROM、デジタル多用途ディスク(DVD)、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報の記憶に使用することができ、デバイス100によるアクセスが可能な他の媒体が含まれる。そのようなコンピュータ記憶媒体をいずれもデバイス100の一部とすることができる。
デバイス100は、デバイスが他のデバイスと通信することを可能にする1つまたは複数の通信接続112も含むことができる。通信接続112は、通信媒体の一例である。通信媒体は通例、コンピュータ可読命令、データ構造、プログラムモジュール、あるいはその他のデータを、搬送波などの変調データ信号またはその他のトランスポート機構として実施し、任意の情報伝達媒体を含む。用語「変調データ信号」とは、信号中に情報を符号化する形でその特性の1つまたは複数を設定または変化させた信号を意味する。これらに限定しないが、通信媒体の例には、有線ネットワークや直接配線接続などの有線媒体と、音響、RF、赤外線、およびその他の無線媒体などの無線媒体が含まれる。上記のように、本明細書で使用する用語「コンピュータ可読媒体」は、記憶媒体と通信媒体の両方を含む。
デバイス100は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの1つまたは複数の入力装置114も有することができる。ディスプレイ、スピーカ、プリンタなどの1つまたは複数の出力装置116も含めることができる。これらのデバイスはいずれも当技術分野でよく知られており、ここでさらに詳細に説明する必要はない。
リモートダイレクトメモリアクセスは、データネットワーク中でより効率的にデータを移送するためのプロトコルである。このプロトコルは、業界コンソーシアムによって採用され、2002年10月にコンソーシアムによって承認された。RDMAプロトコルは、広く普及しているTCP/IPプロトコルの最上位で使用することができる。RDMAは、ホストプロセッサの介入の必要なしにシステムメモリに直接データを転送することを可能にし、それにより、ホストプロセッサにかかるデータ転送の負担を大幅に軽減することができる。
リモートダイレクトメモリアクセス(RDMA)は、業界コンソーシアムによって承認されたプロトコルである。このプロトコルは、IETF標準としての承認を求めてIETF(Internet Engineering Task Force)に提出されている。RDMAの目的は、ネットワークトラフィックに対処するために必要とされるCPUへの負荷を軽減することである。CPUへの負荷の軽減が必要となったのは、ネットワークのデータ転送速度が、利用可能なホストCPUの処理能力と利用可能なメモリ帯域幅とを上回る速度で増大したためである。例えば、わずか10年前には10Mb/秒のイーサネット(登録商標)が普通であったのに対し、現在では10Gb/秒のイーサネット(登録商標)が業界標準になっている。
RDMAは、CPUによる介入を最小に抑え、利用可能なメモリ帯域幅の需要を可能な限り抑えて、1つのマシンが別のマシンのメモリに直接データを置くことを可能にする。RDMAは、RDMAoverTCP/IPと称される特定のバージョンで標準的なTCP/IPネットワークを通じて透過に機能するように設計されている。これは、送信されるデータにRDMA固有の制御フィールドを埋めこんでRDMAパケットを形成し、そのRDMAパケットをTCP/IPデータグラムに埋め込むことによって達成される。したがって、ネットワークにとってTCP/IPパケットは他のTCP/IPパケットと同じように見え、RDMAヘッダのないTCP/IPパケットと全く同じ形で処理される。
ネットワークインタフェースコントローラ(NIC)の進歩により、RDMAが有用になることが可能となった。最初のそのような進歩は、TCP/IPオフロードエンジン(TOE)である。TOE技術は、TCP/IPの処理の多くをNICに移し、ホストCPUからこの負荷の多くを取り除く。ただし、TOEはそれ自体では着信データのゼロコピーが常に可能である訳ではなく、すなわち、しばしば、TOE NICがDMAを使用して着信データをメモリに転送する場合でも、そのデータはなおネットワークレイヤソフトウェアでコピーする必要がある。この追加的なコピーの必要性は、NICおよびNICとのインタフェースをとるソフトウェアが必要とするアプリケーションプログラマインタフェース(API)に大きく依存する。RDMAは、このコピーの必要性を軽減または除去し、したがってCPUの介入の必要性を低減するように設計されている。
RDMAは、特定のデータ転送を開始する前にその転送のための記憶域を割り当てることによってゼロコピー動作を実現する。この記憶域は、STagと称する識別子に関連付けられる。STagは、RDMAヘッダの一部として送信され、リモートマシンに送信される。RDMAoverTCP/IPが使用される場合は、このヘッダはTCP/IPパケットに埋め込まれる。リモートマシンは、データおよび同じSTagを別のTCP/IPパケットに埋め込んで返す。送信元マシンのRDMAおよびTOEに対応するNICカードは、そのパケットのTCP/IP部分を処理し、データ中にSTagが埋め込まれていることを認識する。次いで、NICカードはこのSTagを調べ、関連付けられた記憶域を見つけ、DMAを使用してその記憶域に直接データを置く。RDMAと非RDMA転送との違いは、RDMAのない単独のTCP/IPパケットは、関連付けられた記憶域を持たず、一般には、ソフトウェアに渡してデータの最終的な宛先を判断しなければならない点である。この宛先が判定されると、ソフトウェアは、CPUリソースを使用して宛先のアプリケーションに対応するバッファにデータをコピーしなければならない。RDMAではこの宛先はデータが到着する前に判定することができ、したがってコピーの必要がない。
セキュリティは、RDMAコンソーシアムによって取り組まれた重要な課題である。RDMAを使用すると、リモートコンピュータがホストコンピュータのメモリに直接コマンドを置くことができる。このセキュリティの問題に対処するために使用される方法の1つは、転送が完了した後にSTagを無効化できるようにすることである。このために、RDMAヘッダは、STagを無効にするビットを含んでいる。受信パケットにこのビットが設定されている場合は、アクティブなSTagのリストからそのSTagが削除され、そのSTagとともに受信される以降のRDMAパケットはいずれも破棄される。STag自体は32ビット数であり、STagを直ちに無効にすれば、アクティブなSTagを推測しようとする悪意ある試みの機会は少なくなる。RDMA標準では所与の回数の転送が行われた後にSTagを無効にすることは必須としていないが、セキュリティ上の理由から、RDMAを使用する大半のアプリケーションは、データ転送が完了するたびに所与のSTagを無効にする。
簡略化したRDMAの読み取りサイクルのフローチャート200を図2に示す。この開示の恩恵を受ける当業者は、図に示す簡略化したRDMAの読み取りサイクルは、以下の説明のための例示であることを理解されよう。フローチャート200では、ネットワークを通じて転送されるデータはTCP/IPプロトコルを使用するものと想定する。当業者には、他の伝送プロトコルが可能であることが理解されよう。初めに、ブロック201でSTagと称する識別子を生成する。次いでブロック203で、STagをデータストレージ、通例はメインシステムメモリに関連付ける。ブロック201と203をまとめてバインディングと称する。次いで、ブロック205で、TCP/IPデータグラム中にカプセル化されたRDMAパケットのSTagと読み取り要求とを、リモートマシンからデータを取得する要求としてリモートマシンに送信する。ブロック207で、リモートマシンでSTagを必要なデータフィールドと連結する。次いで、STagとデータフィールドを連結したものとが送信元マシンに返される。受信すると、ブロック209でTCP/IPデータグラムおよびRDMAパケットからSTagを取り出し、関連付けられた記憶域を確定する。記憶域が分かると、ブロック211でデータをその記憶域に転送し、データは、そのデータ転送を開始したアプリケーションから利用できるようになる。
図3は、典型的なRDMA読み取りの転送を実施することが可能なネットワークコンピュータシステム300のブロック図である。コンピュータ301がホストコンピュータであり、このコンピュータを使用してRDMA転送を例示する。コンピュータ301は、これに限定しないが通例はランダムアクセスメモリ(RAM)であるメモリシステム302、アプリケーションプログラム303、オペレーティングシステム(OS)305、およびNIC309からなる。これらの構成要素は、一般的なコンピュータのすべての構成要素を表すものではない。これらの構成要素は、RDMA転送を実施するのに必要な構成要素である。さらに、メモリシステム302は、割り当てられたメモリブロック、すなわちメモリ割り当て311を含む。この説明ではこのデータストレージをメモリと称し、これは本コンピュータシステムでは通例はRAMである。ただし、本発明の範囲はRAMに限定されず、一般には、これらに限定しないがFLASH、ハードディスク、RAM、または読み取りおよび書き込みを行うことができる任意の他の記憶装置を含む任意のデータ記憶装置でよい。コンピュータシステム301もこの説明ではコンピュータと称するが、これは、一般にはこれらに限定しないがPDA、コンピュータ、携帯電話、セットトップボックスを含むネットワークインタフェースをサポートすることが可能な任意の装置でよい。
次いで図3と図4を併せて参照し、図4の流れ図でRDMAの読み取り動作を説明する。転送は、ブロック402でアプリケーション303がデータの転送要求をOS305に対して行うことによって開始される。この場合のすべてのオペレーティングシステムコマンドは、カーネルモードで行うことができる。OSは、その要求にはネットワークアクセスが必要であることを判断する。NIC309がRDMA機能を有する場合、OS305は、この転送をRDMAを利用して行って処理の負荷の一部をホストCPUから軽減することができる。RDMA転送は、OS305がブロック404でNIC309にSTagを要求することによって開始する。NIC309は、ブロック406で、STag401と称する識別子をネットワークOS305に返す。ブロック408で、OS305は、その転送のためのメモリを割り当ててメモリ割り当て311を作成し、割り当てられたメモリ割り当て311のアドレスをNIC309に送信する。次いでNIC309は、メモリ割り当て311をSTag401に関連付ける。この関連付けにより、NIC309は、STag401とともに到着するデータをメモリ割り当て311に置くことができる。次いでブロック410で、NIC309がRDMAパケット403を作成する。RDMAパケット403は、STag401とデータ読み取りのコマンドとからなる。次いでブロック412で、NIC309は、RDMAパケット403をTCP/IPデータグラム405中にカプセル化する。ブロック414で、TCP/IPデータグラム405をインターネット313上に送信し、インターネット313は、ブロック416でTCP/IPデータグラム405をリモートコンピュータ315までルーティングする。リモートコンピュータ315は、ブロック418で、TCP/IPデータグラム405からRDMAパケット403を抽出する。この抽出は、NICまたはソフトウェアで行うことができる。ブロック420でRDMAパケット403からSTag401を抽出し、要求されたデータ407と組み合わせて使用してRDMAパケット406を形成する。ブロック422で、TCP/IPデータグラム409にRDMAパケット406をカプセル化する。次いでブロック424でインターネット313上にデータグラム409を送信し、インターネット313はTCP/IPデータグラム409をコンピュータ301にルーティングする。次いでブロック426でNIC309がTCP/IPデータグラム409を受信する。次いでブロック428で、NIC309はTCP/IPデータグラム409からRDMAパケット406を抽出する。ブロック430で、NIC309は、RDMAパケット406からSTag401を抽出し、RDMAヘッダ中の無効化ビットを調べる。このビットが設定されている場合はSTagが無効にされる。次いでブロック432で、STag401を使用して、関連付けられたメモリ割り当て311を取り出し、要求されるデータ407をDMAを使用してこのメモリ割り当てに送る。
データ転送全体で必要とされるCPUの介入が非常に少ないことに留意されたい。OS305は、NIC309への転送を行うことを要求し、メモリ割り当て311を行い、そのメモリの場所をNIC309に通知するだけでよい。NIC309がすべてのデータ転送を処理する。メモリは転送ごとに割り当てられるので、メモリは、アプリケーションが直接データにアクセスできる形で割り当てることができる。アプリケーションが直接アクセスするので、NICがメモリにデータを置いた後にデータを移動しなくて済む。これにより、CPUが多量のデータを移動し、その結果高速ネットワーク中で多量のCPUリソースを消費せずに済む。
図5に、本発明による2つのネットワークコンピュータ間のRDMA読み取り転送のブロック図500を示す。ブロック図500は、コンピュータ501が第2のNIC510を有する点を除いてはブロック図300と同じである。同様の構成要素は同様の符号を使用して表す(例えば、図5のコンピュータ501は、コンピュータ301と同一である)。
図6aおよび6bと併せて図5を参照すると、流れ図により一実施形態によるRDMAの読み取り動作を説明する。この流れ図では、分かりやすいように図5で使用した識別符号を参照する。転送は、TCP/IPデータグラムがリモートコンピュータから返される箇所までは図4に示す手順と同じ手順をたどる。しかし、図6aおよび6bに示す転送ではインターネットで使用される経路が変化しており、TCP/IPデータグラム609は、転送を開始したNIC509ではなくNIC510で終端する経路をとる。NIC510は転送を開始しなかったので、NIC510は、STag601およびそれに関連付けられた記憶域(メモリ割り当て)511の知識を持たない。しかしこの知識はNIC509には存在する。
NIC510は、図6aのブロック626でTCP/IPデータグラム609を受信すると、必要なすべてのTCP/IP処理を行い、ブロック628でRDMAパケット606を抽出する。次いでブロック630でRDMAパケット606からSTag601を除去する。ブロック632で、NIC510は、NIC510で作成されたすべての有効なSTagのリストを検索するが、STag601は見つからない。この時点で、STag601が無効であるか、またはSTag601が同じコンピュータ501の別のNICによって作成されたかの2つの可能性がある。NIC510は、後者が該当すると想定し、ブロック634で認識されないSTagとしてSTag601をOS505に報告する。OS505は、STag601が有効であるかどうかを確認することを試みる。確認を行うために、ブロック636で、OS505は、NIC509によって生成されたすべての有効なSTagとそのSTagに関連付けられたアドレスをNIC509に問い合わせる。ブロック638で、NIC509は、要求されたリストを返す。次いで、OS505は、ブロック640でそのリストを検索してSTag601を探す。ブロック642で、OS505は、STag601が見つかったかどうかについて判定を行う。見つからない場合はブロック650が実施され、ここでSTag601を無効とNIC510に報告する。次いでNIC510は、パケットを転送する有効な記憶域がないのでそのパケットを破棄する。有効な記憶域を利用できる場合に、無効なSTagを有するパケットをメモリに転送するとセキュリティ上のリスクが生じる。この例では、NIC509がSTag601を作成したとしているのでこの分岐は明らかに可能でないことに留意されたい。しかし、無効なSTagを正しく処理しなければならない完全なアルゴリズムを説明するためにこの分岐を含めている。ブロック642でSTag601がNIC509によって生成されたSTagのリストにあると判定された場合は、ブロック644で、OS505がSTag601に関連付けられた記憶域511を見つける。ブロック646で、関連付けられた記憶域511をNIC510に報告する。関連付けられたメモリ割り当て511の知識により、NIC510は、要求されるデータ607をメモリ割り当て511に転送して、転送を完了することができる。
1つのNICから別のNICに切り替わる間、CPUは、RDMAプロトコルスタックの一部の処理にアクティブに関わらなければならない。この状況が無限に続く場合は明らかに望ましくない。さらに、経路の変化によって影響を受ける、NIC509での処理を待つ多くの未処理のSTagが存在する可能性もある。最悪の場合、例えばNIC509からケーブルが抜かれた場合は、NIC509に残っているすべてのSTagがNIC510によって処理されることになる。RDMA標準ではSTagの寿命について時間的な制限は設定しておらず、したがって、それらのSTagの使用にCPUが無限に関与することが必要となる可能性がある。しかし、実際にはSTagは通例転送が終わるたびに無効にされ、多数回の転送にわたって使用されることはめったにない。したがって、大半の場合は、STagの転送にソフトウェアが関与するのはごく限られた継続時間である。STagの無効化は、RDMAヘッダに無効化フラグを設定することによって達成することができるが、ソフトウェアアプリケーションからの明示的なコマンドによって行うことも可能である。セキュリティ上の理由から、RDMAを使用する大半のアプリケーションは、無効化ビットが設定されていない場合でも1回の転送が終わるとSTagを無効にする。
実際には、リモートコンピュータ515も、STagを割り当て、そのSTagをリモートコンピュータ515のメモリに関連付け、ローカルコンピュータ501のアプリケーション503に送信するアプリケーションを含む。そして、アプリケーション503がRDMAの書き込みを行う。より詳細には、リモートのSTagとデータとを含むRDMA書き込みパケットが作成される。データとリモートSTagは、TCP/IPデータグラム中にカプセル化され、リモートコンピュータ515に送信される。リモートコンピュータ515のRDMA NICは、このデータグラムを受信し、STagを介して、データを置くメモリ中の場所を知る。RDMA NICは、DMAを介してそのデータをそのメモリに置く。上記のRDMA読み取りの場合と同様にIP経路の変化がこのSTagに影響を与える可能性があり、リモートコンピュータ515は、RDMA読み取りの場合について上述した方式と同じように経路の変化に対処することができる。
同様に、分かりやすくするために上述の説明ではすべて単一のSTagを扱った。実際にはRDMA読み取りの動作には2つのSTagが伴う。再度図2を参照すると、ステップ201の前でさえ、リモートコンピュータ315(図3)のアプリケーションは、STagを割り当て(これを「リモートSTag」と称する)、そのSTagをコンピュータ315のメモリに関連付ける。そして、リモートコンピュータ315のアプリケーションが、このリモートSTagをローカルコンピュータ301のアプリケーションに送信する。これにより、ローカルアプリケーション303がRDMAの読み取りを行うことが可能になる(図2のブロック201〜211)。RDMA読み取り要求パケット(ブロック205)は、実際には2つのSTag、すなわちローカルSTagとリモートSTagとを搬送する。IP経路の変化は、ローカルSTagと同じようにリモートSTagに影響しうる。その場合は、リモートコンピュータ315によるリモートSTagの処理は、ローカルコンピュータ301によるローカルSTagの処理と全く同じに行われる。
本発明の原理を応用することが可能な多くの可能な実施形態を考慮すると、図面との関係で本明細書に記載する実施形態は、説明のみを目的とするものであり、本発明の範囲を限定するものと解釈すべきでないことが理解されよう。例えば、当業者は、ソフトウェアとして図示した例示実施形態の要素は、ハードウェアとして実施することもでき、その逆も同様であり、あるいは、例示した実施形態は本発明の精神から逸脱することなく構成と詳細を変更できることを認識されよう。したがって、本明細書に記載する本発明は、添付の特許請求の範囲とその均等物に該当するすべてのそのような実施形態を企図する。
本発明が存在する例示的コンピュータシステムを概略的に示すブロック図である。 本発明の一実施形態によるRDMAのデータ転送の概略を説明する流れ図である。 本発明の一実施形態による典型的なRDMA転送を実施することが可能なネットワークコンピュータシステムのブロック図である。 本発明の一実施形態による標準的なRDMA転送の実施を説明する流れ図である。 本発明の一実施形態を実施することが可能なネットワークコンピュータシステムのブロック図である。 本発明の一実施形態による方法を説明する流れ図である。 本発明の一実施形態による方法を説明する流れ図である。
符号の説明
301 コンピュータ
302 システムメモリ
303 アプリケーション
305 オペレーティングシステム
307 ネットワーク層
313 インターネット
315 リモートコンピュータ
501 コンピュータ
502 システムメモリ
503 アプリケーション
505 オペレーティングシステム
507 ネットワーク層
513 インターネット
515 リモートコンピュータ

Claims (28)

  1. 複数のネットワークインタフェースを備えるデバイス中で、第1のネットワークインタフェースが、前記第1のネットワークインタフェースによって生成され、前記複数のネットワークインタフェースを備えるデバイス中の記憶域に関連付けられた識別子を第2のデバイスに送信した後に前記第1のネットワークインタフェースと少なくとも第2のネットワークインタフェースとの間でコントロールを転送する方法であって、前記識別子および関連付けられたデータフィールドは前記第2のネットワークインタフェースによって受信されることが可能であり、前記方法は、
    前記第2のデバイスからの前記識別子の受信を知らせる、前記第2のネットワークインタフェースからプログラムコンポーネントへのメッセージを受信すること、
    前記第1のネットワークインタフェースによって生成された識別子のリストと、該識別子に関連付けられた、前記複数のネットワークインタフェースを備えるデバイスのメモリ中の記憶域とを前記プログラムコンポーネントに供給するように前記第1のネットワークインタフェースに問い合わせること、および
    前記識別子に関連付けられた記憶域を前記第2のネットワークインタフェースに送信することであって、前記第2のネットワークインタフェースは、前記関連付けられたデータフィールドを前記識別子に関連付けられた記憶域に送信することができること
    を備えることを特徴とする方法。
  2. 前記識別子は、前記識別子に付加されたビットフィールドと、前記第2のデバイスから受信される関連付けられたデータフィールドとの制御下で無効にされることを特徴とする請求項1に記載の方法。
  3. 前記識別子が無効にされた場合、前記関連付けられたデータフィールドを破棄することを特徴とする請求項2に記載の方法。
  4. 前記記憶域はランダムアクセスメモリであることを特徴とする請求項1に記載の方法。
  5. 前記プログラムコンポーネントはコンピュータのオペレーティングシステムであることを特徴とする請求項1に記載の方法。
  6. 前記第1のネットワークインタフェースおよび前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルの下で動作することを特徴とする請求項1に記載の方法。
  7. 前記第1のネットワークインタフェースおよび前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルoverTCP/IPプロトコルの下で動作することを特徴とする請求項1に記載の方法。
  8. 第1のネットワークインタフェースと第2のネットワークインタフェースを含むホストコンピュータ中で前記第1のネットワークインタフェースと少なくとも前記第2のネットワークインタフェースとの間でコントロールを転送する方法であって、
    前記第1のネットワークインタフェースによって生成され、前記ホストコンピュータ中の記憶域に関連付けられた識別子をリモートコンピュータから受信すること、
    前記識別子の受信を知らせるメッセージをプログラムコンポーネントに送信することであって、前記プログラムコンポーネントは、前記第1のネットワークインタフェースによって生成された識別子のリストと、前記識別子に関連付けられた前記ホストコンピュータ中の記憶域とを前記第1のネットワークインタフェースに問い合わせるように構成されること、
    前記識別子のリストが前記リモートコンピュータからの識別子を含む場合、前記識別子に関連付けられた記憶域を受信すること、および
    前記識別子のリストが前記リモートコンピュータからの識別子を含まない場合、前記リモートコンピュータからの識別子を無効にすること
    を備えることを特徴とする方法。
  9. 前記識別子は、前記識別子に付加されたビットフィールドと、前記リモートコンピュータから受信される関連付けられたデータフィールドとの制御下で無効にされることを特徴とする請求項8に記載の方法。
  10. 前記識別子が無効にされた場合、前記関連付けられたデータフィールドを破棄することを特徴とする請求項9に記載の方法。
  11. 前記記憶域はランダムアクセスメモリであることを特徴とする請求項8に記載の方法。
  12. 前記プログラムコンポーネントはコンピュータのオペレーティングシステムであることを特徴とする請求項8に記載の方法。
  13. 前記第1のネットワークインタフェースおよび前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルの下で動作することを特徴とする請求項8に記載の方法。
  14. 前記第1のネットワークインタフェースと前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルoverTCP/IPプロトコルの下で動作することを特徴とする請求項8に記載の方法。
  15. 複数のネットワークインタフェースを備えるデバイス中で、第1のネットワークインタフェースが、前記第1のネットワークインタフェースによって生成され、前記複数のネットワークインタフェースを備えるデバイス中の記憶域に関連付けられた識別子を第2のデバイスに送信した後に前記第1のネットワークインタフェースと少なくとも前記第2のネットワークインタフェースとの間でコントロールを転送する動作を行う命令が格納されたコンピュータ可読媒体であって、前記識別子および関連付けられたデータフィールドは前記第2のネットワークインタフェースによって受信されることが可能であり、前記動作は、
    前記第2のデバイスからの前記識別子の受信を知らせる、前記第2のネットワークインタフェースからプログラムコンポーネントへのメッセージを受信する動作と、
    前記第1のネットワークインタフェースによって生成された識別子のリストと、該識別子に関連付けられた、前記複数のネットワークインタフェースを備えるデバイスのメモリ中の記憶域とを前記プログラムコンポーネントに供給するように前記第1のネットワークインタフェースに問い合わせる動作と、
    前記識別子に関連付けられた記憶域を前記第2のネットワークインタフェースに送信する動作であって、前記第2のネットワークインタフェースは、前記関連付けられたデータフィールドを前記識別子に関連付けられた記憶域に送信することができる動作と
    を備えることを特徴とするコンピュータ可読媒体。
  16. 前記識別子は、前記識別子に付加されたビットフィールドと、前記第2のデバイスから受信される関連付けられたデータフィールドとの制御下で無効にされることを特徴とする請求項15に記載のコンピュータ可読媒体。
  17. 前記識別子が無効にされた場合、前記関連付けられたデータフィールドを破棄することを特徴とする請求項16に記載のコンピュータ可読媒体。
  18. 前記記憶域はランダムアクセスメモリであることを特徴とする請求項15に記載のコンピュータ可読媒体。
  19. 前記プログラムコンポーネントはコンピュータのオペレーティングシステムであることを特徴とする請求項15に記載のコンピュータ可読媒体。
  20. 前記第1のネットワークインタフェースおよび前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルの下で動作することを特徴とする請求項15に記載のコンピュータ可読媒体。
  21. 前記第1のネットワークインタフェースおよび前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルoverTCP/IPプロトコルの下で動作することを特徴とする請求項15に記載のコンピュータ可読媒体。
  22. 第1のネットワークインタフェースと第2のネットワークインタフェースを含むホストコンピュータ中で前記第1のネットワークインタフェースと少なくとも前記第2のネットワークインタフェースとの間でコントロールを転送する動作を行う命令が格納されたコンピュータ可読媒体であって、前記動作は、
    前記第1のネットワークインタフェースによって生成され、前記ホストコンピュータ中の記憶域に関連付けられた識別子をリモートコンピュータから受信する動作と、
    前記識別子の受信を知らせるメッセージをプログラムコンポーネントに送信する動作であって、前記プログラムコンポーネントは、前記第1のネットワークインタフェースによって生成された識別子のリストと、前記識別子に関連付けられた前記ホストコンピュータ中の記憶域とを前記第1のネットワークインタフェースに問い合わせるように構成される動作と、
    前記識別子のリストが前記リモートコンピュータからの識別子を含む場合、前記識別子に関連付けられた記憶域を受け取る動作と、
    前記識別子のリストが前記リモートコンピュータからの識別子を含まない場合、前記リモートコンピュータからの識別子を無効にする動作と
    を備えることを特徴とするコンピュータ可読媒体。
  23. 前記識別子は、前記識別子に付加されたビットフィールドと、前記第2のデバイスから受信される関連付けられたデータフィールドとの制御下で無効にされることを特徴とする請求項22に記載のコンピュータ可読媒体。
  24. 前記識別子が無効にされた場合、前記関連付けられたデータフィールドを破棄することを特徴とする請求項23に記載のコンピュータ可読媒体。
  25. 前記記憶域はランダムアクセスメモリであることを特徴とする請求項22に記載のコンピュータ可読媒体。
  26. 前記プログラムコンポーネントはコンピュータのオペレーティングシステムであることを特徴とする請求項22に記載のコンピュータ可読媒体。
  27. 前記第1のネットワークインタフェースおよび前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルの下で動作することを特徴とする請求項22に記載のコンピュータ可読媒体。
  28. 前記第1のネットワークインタフェースと前記第2のネットワークインタフェースは、リモートダイレクトメモリアクセス(RDMA)プロトコルoverTCP/IPプロトコルの下で動作することを特徴とする請求項22に記載のコンピュータ可読媒体。
JP2004206470A 2003-07-18 2004-07-13 複数のnicrdma対応デバイスにおける状態の移行 Pending JP2005044353A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/622,217 US7565454B2 (en) 2003-07-18 2003-07-18 State migration in multiple NIC RDMA enabled devices

Publications (1)

Publication Number Publication Date
JP2005044353A true JP2005044353A (ja) 2005-02-17

Family

ID=33477126

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004206470A Pending JP2005044353A (ja) 2003-07-18 2004-07-13 複数のnicrdma対応デバイスにおける状態の移行

Country Status (7)

Country Link
US (1) US7565454B2 (ja)
EP (1) EP1498822B1 (ja)
JP (1) JP2005044353A (ja)
KR (1) KR20050009685A (ja)
CN (1) CN1578308A (ja)
AT (1) ATE409911T1 (ja)
DE (1) DE602004016795D1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100834431B1 (ko) 2006-01-02 2008-06-04 인터내셔널 비지네스 머신즈 코포레이션 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드
US7581015B2 (en) 2006-03-24 2009-08-25 Fujitsu Limited Communication device having transmitting and receiving units supports RDMA communication
JP2015502590A (ja) * 2011-10-27 2015-01-22 ▲ホア▼▲ウェイ▼技術有限公司 高速データ配布のための方法および装置
JP2021526766A (ja) * 2018-06-12 2021-10-07 華為技術有限公司Huawei Technologies Co.,Ltd. メモリ管理の方法、装置、およびシステム

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536479B2 (en) * 2004-11-09 2009-05-19 Intel Corporation Local and remote network based management of an operating system-independent processor
JP2008020977A (ja) * 2006-07-11 2008-01-31 Sony Computer Entertainment Inc ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
US8090790B2 (en) * 2007-05-30 2012-01-03 Broadcom Corporation Method and system for splicing remote direct memory access (RDMA) transactions in an RDMA-aware system
US8271669B2 (en) * 2007-05-30 2012-09-18 Broadcom Corporation Method and system for extended steering tags (STAGS) to minimize memory bandwidth for content delivery servers
US8892541B2 (en) * 2009-12-01 2014-11-18 Topsy Labs, Inc. System and method for query temporality analysis
US8909727B2 (en) * 2010-11-24 2014-12-09 International Business Machines Corporation RDMA read destination buffers mapped onto a single representation
US8903935B2 (en) * 2010-12-17 2014-12-02 Ryan Eric GRANT Remote direct memory access over datagrams
US9170797B2 (en) 2012-01-31 2015-10-27 Red Hat, Inc. Automated deployment of an application in a computing platform
US9135092B2 (en) 2012-02-02 2015-09-15 International Business Machines Corporation Multicast message filtering in virtual environments
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
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
US9176911B2 (en) * 2012-12-11 2015-11-03 Intel Corporation Explicit flow control for implicit memory registration
US9247033B2 (en) * 2012-12-26 2016-01-26 Google Inc. Accessing payload portions of client requests from client memory storage hardware using remote direct memory access
US9311225B2 (en) * 2013-01-04 2016-04-12 Microsoft Technology Licensing, Llc DMA channels
US9178815B2 (en) * 2013-03-05 2015-11-03 Intel Corporation NIC flow switching
US9311110B2 (en) * 2013-07-08 2016-04-12 Intel Corporation Techniques to initialize from a remotely accessible storage device
US9313274B2 (en) 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
WO2015150975A1 (en) * 2014-04-02 2015-10-08 Strato Scale Ltd. Remote asymmetric tcp connection offload over rdma
CN105446653B (zh) 2014-08-27 2018-12-14 阿里巴巴集团控股有限公司 一种数据合并方法和设备
US10064138B2 (en) 2014-12-23 2018-08-28 Microsoft Technology Licensing, Llc Energy efficient wireless data transfer
US10055381B2 (en) 2015-03-13 2018-08-21 International Business Machines Corporation Controller and method for migrating RDMA memory mappings of a virtual machine
US9904627B2 (en) 2015-03-13 2018-02-27 International Business Machines Corporation Controller and method for migrating RDMA memory mappings of a virtual machine
US9792248B2 (en) 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
US10713210B2 (en) 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US10375167B2 (en) 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
US10713211B2 (en) 2016-01-13 2020-07-14 Red Hat, Inc. Pre-registering memory regions for remote direct memory access in a distributed file system
US10901937B2 (en) 2016-01-13 2021-01-26 Red Hat, Inc. Exposing pre-registered memory regions for remote direct memory access in a distributed file system
JP6740683B2 (ja) * 2016-04-07 2020-08-19 富士通株式会社 並列処理装置及び通信制御方法
RU2646380C1 (ru) * 2016-12-22 2018-03-02 Общество с ограниченной ответственностью "Аби Продакшн" Использование верифицированных пользователем данных для обучения моделей уверенности
US10359954B2 (en) 2017-05-31 2019-07-23 Alibaba Group Holding Limited Method and system for implementing byte-alterable write cache
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10303241B2 (en) 2017-06-19 2019-05-28 Alibaba Group Holding Limited System and method for fine-grained power control management in a high capacity computer cluster
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10423508B2 (en) 2017-08-11 2019-09-24 Alibaba Group Holding Limited Method and system for a high-priority read based on an in-place suspend/resume write
US10303601B2 (en) 2017-08-11 2019-05-28 Alibaba Group Holding Limited Method and system for rearranging a write operation in a shingled magnetic recording device
US20190073132A1 (en) * 2017-09-05 2019-03-07 Alibaba Group Holding Limited Method and system for active persistent storage via a memory bus
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10789011B2 (en) 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
CN109936510B (zh) 2017-12-15 2022-11-15 微软技术许可有限责任公司 多路径rdma传输
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US10402112B1 (en) 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11620245B2 (en) * 2021-05-09 2023-04-04 Mellanox Technologies, Ltd. Multi-socket network interface controller with consistent transaction ordering
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067569A (en) * 1997-07-10 2000-05-23 Microsoft Corporation Fast-forwarding and filtering of network packets in a computer system
US6807581B1 (en) * 2000-09-29 2004-10-19 Alacritech, Inc. Intelligent network storage interface system
US6687758B2 (en) * 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US5991797A (en) * 1997-12-23 1999-11-23 Intel Corporation Method for directing I/O transactions between an I/O device and a memory
US6163834A (en) * 1998-01-07 2000-12-19 Tandem Computers Incorporated Two level address translation and memory registration system and method
GB9802096D0 (en) * 1998-01-30 1998-03-25 Sgs Thomson Microelectronics Shared memory access
US6904519B2 (en) * 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US6490632B1 (en) * 1999-03-18 2002-12-03 3Com Corporation High performance load balancing and fail over support of internet protocol exchange traffic over multiple network interface cards
US6512774B1 (en) * 1999-03-18 2003-01-28 3Com Corporation Fail over with multiple network interface cards
WO2000072158A1 (en) * 1999-05-24 2000-11-30 Hewlett-Packard Company Reliable multicast
US7222150B1 (en) * 2000-08-15 2007-05-22 Ikadega, Inc. Network server card and method for handling requests received via a network interface
US7089335B2 (en) * 2000-10-30 2006-08-08 Microsoft Corporation Bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device
US7032243B2 (en) * 2000-12-15 2006-04-18 Hewlett-Packard Development Company, L.P. System and method for a group-based network access control for computer
US6976174B2 (en) * 2001-01-04 2005-12-13 Troika Networks, Inc. Secure multiprotocol interface
US6917987B2 (en) * 2001-03-26 2005-07-12 Intel Corporation Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US20040006636A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Optimized digital media delivery engine
US8700724B2 (en) * 2002-08-19 2014-04-15 Broadcom Corporation System and method for transferring data over a remote direct memory access (RDMA) network
US6721806B2 (en) * 2002-09-05 2004-04-13 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
US7233984B2 (en) * 2002-11-12 2007-06-19 Microsoft Corporation Light weight file I/O over system area networks
US8291176B2 (en) * 2003-03-27 2012-10-16 Hewlett-Packard Development Company, L.P. Protection domain groups to isolate access to memory windows
US7502826B2 (en) * 2003-03-27 2009-03-10 Hewlett-Packard Development Company, L.P. Atomic operations
US20040252709A1 (en) * 2003-06-11 2004-12-16 Fineberg Samuel A. System having a plurality of threads being allocatable to a send or receive queue

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100834431B1 (ko) 2006-01-02 2008-06-04 인터내셔널 비지네스 머신즈 코포레이션 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드
US7581015B2 (en) 2006-03-24 2009-08-25 Fujitsu Limited Communication device having transmitting and receiving units supports RDMA communication
JP2015502590A (ja) * 2011-10-27 2015-01-22 ▲ホア▼▲ウェイ▼技術有限公司 高速データ配布のための方法および装置
US9774651B2 (en) 2011-10-27 2017-09-26 Huawei Technologies Co., Ltd. Method and apparatus for rapid data distribution
JP2021526766A (ja) * 2018-06-12 2021-10-07 華為技術有限公司Huawei Technologies Co.,Ltd. メモリ管理の方法、装置、およびシステム
US11416394B2 (en) 2018-06-12 2022-08-16 Huawei Technologies Co., Ltd. Memory management method, apparatus, and system

Also Published As

Publication number Publication date
ATE409911T1 (de) 2008-10-15
CN1578308A (zh) 2005-02-09
EP1498822B1 (en) 2008-10-01
US20050015469A1 (en) 2005-01-20
DE602004016795D1 (de) 2008-11-13
US7565454B2 (en) 2009-07-21
EP1498822A3 (en) 2007-01-03
KR20050009685A (ko) 2005-01-25
EP1498822A2 (en) 2005-01-19

Similar Documents

Publication Publication Date Title
JP2005044353A (ja) 複数のnicrdma対応デバイスにおける状態の移行
US9858214B2 (en) Task offload to a peripheral device
US7656894B2 (en) Offloading processing tasks to a peripheral device
US20220070095A1 (en) Data transmission method and apparatus, network adapter, and storage medium
US8300647B2 (en) Intelligent load balancing and failover of network traffic
JP4651692B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
US20070101023A1 (en) Multiple task offload to a peripheral device
JP4840943B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
US8495262B2 (en) Using a table to determine if user buffer is marked copy-on-write
US20080126578A1 (en) Method, system, and program for managing data read operations
US20030225889A1 (en) Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports
EP3828709A1 (en) Communication method and network card
JP2006033854A (ja) ノード間の通信を可能にする方法、システム、およびプログラム
WO2023005773A1 (zh) 基于远程直接数据存储的报文转发方法、装置、网卡及设备
US11799827B2 (en) Intelligently routing a response packet along a same connection as a request packet
JP2017034666A (ja) コンテンツ指向型ネットワークのスタックにおける状態の転送
US20090157896A1 (en) Tcp offload engine apparatus and method for system call processing for static file transmission
WO2019076068A1 (zh) 数据传输的方法、服务器、卸载卡及存储介质
JP2011229093A (ja) ネットワーク装置
US10742776B1 (en) Accelerating isochronous endpoints of redirected USB devices
JP2017215745A (ja) データ処理装置、データ処理方法およびプログラム
CN111800340B (zh) 数据包转发方法和装置
KR102337119B1 (ko) 컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드
US10397029B2 (en) Relay apparatus
CN115361443A (zh) 一种报文处理方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070627

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100129