JP2014528107A - リモート・ダイレクト・メモリー・アクセスによる任意サイズの移送動作 - Google Patents

リモート・ダイレクト・メモリー・アクセスによる任意サイズの移送動作 Download PDF

Info

Publication number
JP2014528107A
JP2014528107A JP2014518588A JP2014518588A JP2014528107A JP 2014528107 A JP2014528107 A JP 2014528107A JP 2014518588 A JP2014518588 A JP 2014518588A JP 2014518588 A JP2014518588 A JP 2014518588A JP 2014528107 A JP2014528107 A JP 2014528107A
Authority
JP
Japan
Prior art keywords
rdma
smb2
protocol
data
server
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.)
Granted
Application number
JP2014518588A
Other languages
English (en)
Other versions
JP6047158B2 (ja
JP2014528107A5 (ja
Inventor
タルピー,トーマス・エム
クレイマー,グレゴリー・ロバート
クルーズ,デーヴィッド・マシュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2014528107A publication Critical patent/JP2014528107A/ja
Publication of JP2014528107A5 publication Critical patent/JP2014528107A5/ja
Application granted granted Critical
Publication of JP6047158B2 publication Critical patent/JP6047158B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/72Admission control; Resource allocation using reservation actions during connection setup
    • H04L47/722Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Bus Control (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本明細書において記載する実施形態は、一般に、RDMA移送に加えて、データー動作、例えば、SMBの一バージョンを実現するプロトコルに関する。実施形態では、システムおよび方法は、プロトコル定義を使用する。このプロトコル定義は、RDMA接続をネゴシエートし、ネゴシエートした通信を使用してSMB2データーを転送するために新たなメッセージを指定する。新たなプロトコル・メッセージは、メッセージ・サイズ、メッセージ数、およびRDMAによってSMB2データーを送るための他の情報を決定するための新たなヘッダー情報を含むことができる。ヘッダー情報は、RDMAとSMB2との間におけるメッセージ・サイズ要件の違いに対処するために使用される。SMBダイレクト・プロトコルは、SMB2データーを、複数の個々のRDMAメッセージに断片化することを可能にする。次いで、受信側がこれらのRDMAメッセージを繋ぎ合わせて1つのSMB2要求またはSMB2応答にする。また、SMBダイレクト・プロトコルは、SMB2が効率的なRDMAダイレクト配置によってアプリケーション・データーを転送し、転送が完了したときにアプリケーション・データーの入手可能性について知らせることも可能にすることができる。【選択図】図2A

Description

従来技術
[0001] サーバー・メッセージ・ブロック(SMB)またはそのバージョン、例えば、SMB2のようなファイル・アクセス・プロトコルは、ファイルへの共有アクセスおよびネットワークにおけるノード間の多種雑多な通信を主に設けるために使用されるアプリケーション−レイヤー・ネットワーク・プロトコルとして動作することができる。以前では、SMBまたはSMB2は、送信制御プロトコル(TCP)移送(transport)および従前のネットワーク・インフラストラクチャ上で動作していた。SMB2は、汎用リモート・ファイル・アクセスのためのプロトコルとして非常に成功したが、SMB2は、高スループットおよび低レイテンシのファイル入力/出力が要求されるリモート・ファイル・アクセスには広く採用されなかった。
[0002] リモート・ダイレクト・メモリー・アクセス(RDMA)は、一方のコンピューターのメモリーから他方のコンピューターのメモリーへのダイレクト・メモリー・アクセスであり、他方のコンピューターのオペレーティング・システムを必要としない。このダイレクト転送(direct transfer)は、ネットワークを介した高スループット、低レイテンシのデーター転送を可能にし、特に性能に厳しい配備において有用である。アプリケーションがRDMAリードまたはライト要求を実行するとき、アプリケーション・データーがダイレクト・ソース・メモリー・バッファーから宛先メモリー・バッファーに、RDMA−可能なネットワーク・アダプターを使用して配信され、この転送において中央処理ユニット(CPU)(または単にプロセッサーと呼ぶ)やオペレーティング・システムを必要としない。これらのRDMA転送は、レイテンシを低減し、高速メッセージ転送を可能にする。生憎、SMB2はRMDAと共に動作していないので、RDMAの恩恵は、SMB2を使用するシステムによって利用されていない。
[0003] この背景では具体的な問題に取り組んだが、本開示は、これら具体的な問題を解決することに限定されることは全く意図していない。
[0004] 一般に、実施形態は、RDMA移送に加えて(atop)、SMB2動作(あるいは、例えば、SMB動作またはファイル・アクセス・プロトコル動作の他のバージョン)のような、データー動作を実現するためのプロトコルおよび処理に関する。実施形態では、プロトコル定義は、RDMA接続のネゴシエーションのための新たなメッセージ、および、例えば、ネゴシエートした接続を使用してSMB2データーを転送する(transfer)ための新たなメッセージを指定する。一実施形態では、RDMA移送に加えてSMB2動作を実現するためのプロトコルは、SMBダイレクト・プロトコルである。しかしながら、他の実施形態は、本開示の主旨および範囲から逸脱することなく、他のSMBプロトコル、SMBプロトコル・バージョン、または他のデーター動作プロトコルにも対応する(provide for)。一実施形態によれば、新たなSMBダイレクト・メッセージは、新たなヘッダー情報を含むことができる。この新たなヘッダー情報は、以下の内1つ以上を含むことができるが、これらに限定されるのではない。CreditsRequested、CreditsGranted、Flags、Reserved、RemainingDataLength、DataOffset、およびDataLength。このヘッダー情報が使用されるのは、RDMA移送が、受信側によって固定サイズのみのメッセージを受信することをサポートするからであり、そしてSMB2メッセージのサイズが約100バイトから100万バイトを超える非常に大きなメッセージまで幅広く変化する可能性があるからである。SMB2プロトコルは、RDMA能力の存在を認識するように変更され、一方SMBダイレクト・プロトコルは、新たなレイヤーをネットワーキング・スタックに追加して、複数の個々のRDMAメッセージを論理的に1つの要求または応答に繋ぎ合わせて、RDMAメッセージに対する固定サイズの制約、およびSMB2メッセージングに固有の不確定なサイズ要件の双方に対処することを可能にする。SMB2プロトコルに対する変更、およびSMBダイレクト・プロトコルの追加によって、ピアのメモリー間におけるデーターの直接転送を可能にする。実施形態では、SMB2サーバーは、RDMAを使用してクライアントのメモリーから読み出し、またはクライアントのメモリーに書き込み、データーの直接配置を実行することができる。サーバーは、RDMAライトをクライアントに対して実行してSMB2リードを完了し、RDMAリードを実行してSMB2ライトを完了する。SMBダイレクト・プロトコルは、ピアのメモリー間におけるSMB/SMB2の直接転送を可能にするが、SMBダイレクト・プロトコルは、一実施形態によれば、他のプロトコルにも適応させることができる。実施形態によれば、SMBダイレクト・プロトコルの双方向ピア−ツー−ピアという性質が、それ自体を複数のタイプのデーター転送動作に相応しいものにする。
[0005] また、RDMA移送は、任意の時点において処理することができるメッセージの数を制限する。この場合も、値は受信側のみによって固定(fix)される。このRDMAの要件に合わせるために、実施形態は、ピアが「クレジット」を交換するまたは割り当てる機能を設ける(provide)。クレジットとは、各プロトコル・ヘッダーにおいて、各相互ピアによって要求されこれに付与される数値であり、送信側が受信側に送ることができるRDMAメッセージの数を指定する。クレジットは、動的であり、各ピアによって独立して管理される。SMB2交換を実行するために利用可能な十分なクレジットを管理して作る規則は、本明細書において開示する実施形態におけるプロトコルによって定められる。
[0006] 実施形態では、独立した双方向クレジットの供給によって、各ピアが、明示的なネゴシエーションや受信側ピアによる事前の把握(knowledge)および同意がなくても、要求や応答を送ることを可能にすることができる。RDMAに関連して順次送ることによって、RDMA処理においてエラーを生ずることなく、そしてこのような状態が起こったときに非効率的なネゴシエーションによる転送に頼ることなく、予期できなかった程の大きなメッセージの交換も可能にすることができる。
[0007] 実施形態によれば、プロトコル・バージョンおよび他のパラメータのネゴシエーションのために、追加のメッセージを使用することもできる。ネゴシエーション要求メッセージは、例えば、CreditRequested、Reserved、MinVersion、MaxVersion、OutboundSendSize、MaxInboundSendSize等に対するフィールドを含むことができる。一方、要求メッセージに応答して送られるネゴシエーション応答メッセージは、例えば、CreditRequested、CreditsGranted、Version、Reserved、Status、OutBoundSendSize、InboundSendSize等に対するフィールドを含むことができる。これらのパラメータは、能力のネゴシエーション、リソースの端末間最適化、およびプロトコルの今後の改良バージョンとの互換性をサポートする。
[0008] この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを全く意図していない。
[0011] 本開示の実施形態について、添付図面を参照することにより、更に分かりやすく説明することができる。図面において、同様の参照番号は同様の品目を指す。
図1は、本開示の実施形態にしたがって、SMB2メッセージをRDMAによって(over)交換する環境またはシステムの論理表現例を示す。 図2Aは、本開示の実施形態にしたがって、SMB2メッセージをRDMAによって送るクライアント・システムの論理表現例を示す。 図2Bは、本開示の実施形態にしたがって、SMB2メッセージをRDMAによって受信するサーバー・システムの論理表現例を示す。 図3Aは、本開示の実施形態にしたがって、RDMAによってSMB2メッセージを使用してデーターを交換するときに送信または受信されるメッセージの論理表現を示す。 図3Bは、本開示の実施形態にしたがって、RDMAによってSMB2メッセージを使用してデーターを交換するときに送信または受信されるメッセージの論理表現を示す。 図3Cは、本開示の実施形態にしたがって、RDMAによってSMB2メッセージを使用してデーターを交換するときに送信または受信されるメッセージの論理表現を示す。 図3Dは、本開示の実施形態にしたがって、RDMAによってSMB2メッセージを使用してデーターを交換するときに送信または受信されるメッセージの論理表現を示す。 図3Eは、本開示の実施形態にしたがって、RDMAによってSMB2メッセージを使用してデーターを交換するときに送信または受信されるメッセージの論理表現を示す。 図4Aは、本開示の実施形態にしたがって、RDMAによってSMB2を使用して通信をネゴシエートするプロセスの動作特性を表す流れ図を示す。 図4Bは、本開示の実施形態にしたがって、RDMAによってSMB2を使用して通信をネゴシエートするプロセスの動作特性を表す流れ図を示す。 図4Cは、本開示の実施形態にしたがって、RDMAによってSMB2を使用して通信をネゴシエートするプロセスの動作特性を表す流れ図を示す。 図5Aは、本開示の実施形態にしたがって、RDMAによってSMB2を使用してデーターを交換するプロセスの動作特性を表す流れ図を示す。 図5Bは、本開示の実施形態にしたがって、RDMAによってSMB2を使用してデーターを交換するプロセスの動作特性を表す流れ図を示す。 図5Cは、本開示の実施形態にしたがって、RDMAによってSMB2を使用してデーターを交換するプロセスの動作特性を表す流れ図を示す。 図5Dは、本開示の実施形態にしたがって、RDMAによってSMB2を使用してデーターを交換するプロセスの動作特性を表す流れ図を示す。 図6は、本開示の実施形態にしたがって、RDMAダイレクト・データー転送を使用してデーターを交換するプロセスの動作特性を表す流れ図を示す。 図7は、本開示の実施形態を実現することができる計算システム例を示す。
[0018] これより、本開示は、添付図面を参照しながら、実施形態例について更に詳しく説明する。添付図面には、具体的な実施形態が示されている。しかしながら、他の形態も多くの異なる形式(form)で具体化することができ、具体的な実施形態を本開示に含ませることを、そのような形態を本明細書において説明する実施形態に限定するように解釈してはならない。逆に、図面に示される実施形態は、周到かつ完全(through and complete)であり、意図する範囲を当業者に余すところなく伝える開示を提供するために含まれている。任意のコンポーネントまたは動作を示すために、破線が使用されている場合がある。
[0019] 概して言えば、実施形態は、RDMA接続によってSMB2データーを交換するためのシステム、方法、およびプロトコルに関する。RDMAは、データーを移送するときに利点が得られる。例えば、RDMAは、一方のメモリーから他方のデバイスまたはシステムのメモリーへの転送を行う。これらの転送は、プロセッサーを必要とせず、したがって、データーを伝達するときに伴うオーバーヘッドを低減する。更に、移送管理においてプロセッサーを必要としないので、RDMAは、より少ないクロック・サイクルで、データーを転送する。つまり、RDMAは低レイテンシ、高帯域幅の接続を提供する。
[0020] 一般に、SMB2のようなSMBのバージョンは、アプリケーション−レイヤー・ネットワーク・プロトコルであり、ネットワークにおけるノード間においてファイルおよび種々雑多な通信に対して共有アクセスを提供するために使用される。SMBおよびSMB2は、つまり、ファイル・アクセス動作プロトコルの例である。SMB2は、クライアント(1つまたは複数)とサーバー(1つまたは複数)との間におけるメッセージの交換におけるデーターの転送に対応する(allow for)。本明細書における一部の実施形態の説明では、SMB2に言及する。しかしながら、他の実施形態では、本開示の主旨や範囲から逸脱することなく、SMBまたは他のファイル・アクセス動作プロトコルの任意のバージンを使用することができる。
[0021] 一般に、動作の違いのため、SMB2(またはSMB)は現在ではRDMAによる動作を行わず、代わりに、TCPを使用してデーターを移送する(transport)。本実施形態は、RDMA可能なネットワーク・プロトコルによってSMB2メッセージを交換するためのシステムおよびプロトコルを作る。最初に、クライアントおよび/またはサーバーがSMB2のコンポーネントを使用して、互いの能力(capabilities or abilities)を発見する。クライアントおよび/またはサーバーを纏めてピアと呼ぶことができる。一実施形態では、クライアントがサーバーについての情報を求めることによって、要求が送られる。応答する側のサーバーは、当該サーバーが有するネットワーク・インターフェース・カード(NIC)の数、NICのインターネット・プロトコル(IP)アドレス)、NICの速度、NICがRDMA可能であるか否か、および/または、恐らく、IPアドレスについての情報と共に回答する。実施形態では、要求する側のクライアントは、この情報を使用して、どのようにサーバーとインターフェースするか決定することができる。
[0022] サーバーがRDMA可能である場合、RDMA可能クライアントは、次いで、本開示の実施形態にしたがって、RDMA接続をそのサーバーとネゴシエートすることができる。実施形態ではRDMAインターフェースと呼ばれる新たなインターフェースは、RDMA可能ネットワーク・アダプターと他のシステム・コンポーネント(SMBクライアントを含む)との間におけるインターフェースである。更に、SMBダイレクト・クライアント/サーバーと呼ばれる、新たなモジュールがスタックに追加される。最初に、SMBダイレクト・クライアントが、恐らくは能力要求に応答して、他のピアからメッセージを受信するためにメモリー・バッファーの少なくとも一部を予約することによって、受信をプリポスト(pre-post)する。SMBダイレクト・クライアントは、次に、SMBダイレクト・ネゴシエート要求パケットを送ることができる。SMBダイレクト・ネゴシエート要求は、ピア間にSMBダイレクト接続を作るプロセスを開始する。実施形態によれば、SMBダイレクト・ネゴシエート要求は、どのようにRDMA接続が機能するかを定める1つ以上のフィールドを含む。
[0023] 実施形態では、SMBダイレクト・ネゴシエート要求の一部は、「クレジット」の要求である。RDMAが直接1つのメモリーから他のメモリーに転送すると、受信側ピアは、送信側ピアが移送データーを入れることができる空間を、メモリー・バッファー内に予約する。メモリー・バッファーは、ブロック単位で(例えば、1Kバイト・ブロック)割り当てられる。実施形態では、この割り当ては、SMBダイレクト接続が作られた後にブロック・サイズが変化しないように設定される。他の実施形態では、割り当てが設定されず、この場合ブロック・サイズが変化することができる。割り当てが設定される場合、メモリー・バッファーへの転送はいずれも、ブロック・サイズを超えることはできない。ブロック・サイズよりも大きいサイズを有するSMB2データーを転送するためには、送信側は2つ以上のパケットを送る。これらは、メモリー・バッファーの2つ以上の割り当てに格納される。メモリー割り当て(allocation)を予約するために、送信側ピアはクレジットを要求する。要求されるクレジット数は、ローカル・ポリシーによって決定され、必ずしもメッセージの組成による影響は受けない。各クレジットは、メモリー・バッファーのブロックを表し、したがって、要求元が他のピアに送ることができるメッセージを表す。
[0024] 本開示の実施形態では、サーバーは、応答、例えば、SMBダイレクト・ネゴシエート応答を要求元に送ることができる。このSMBダイレクト・ネゴシエート応答は、RDMA接続を定める種々のフィールドも含む。この要求に応答して、SMBダイレクト・ネゴシエート応答は、ある数のクレジットをクライアントに提供する。更に、SMBダイレクト・ネゴシエート応答も、クライアントのメモリー・バッファー内に割り当てを予約するクレジットを要求することができる。実施形態では、SMBダイレクト・ネゴシエート要求およびSMBダイレクト・ネゴシエート応答の交換によって、RDMA接続を作る。その後、この接続を介してSMB2データーを交換することができる。
[0025] 実施形態によれば、RDMA接続を介したSMB2データーの交換は、少なくとも1つのパケットの移送を含む。送られるSMB2データーがブロック・サイズよりも小さい場合、SMBダイレクト・データー転送パケットと呼ばれる1つのパケットだけを送ることができる。しかしながら、送ろうとするSMB2データーがブロック・サイズよりも大きい場合、一実施形態によれば、2つ以上のSMBダイレクト・データー転送パケットを送ることができる。RDMAは、シーケンスにしたがうパケット受信に対処する。つまり、通信において受信される第2のパケットは、第1の受信パケットの直後に置かれる。このRDMAの利点を利用するために、SMBダイレクト・データー転送パケットは、送られるSMB2データーの総量を知らせるフィールド、および現在のパケットの後にどのくらい送られるパケットが残っているかを知らせるフィールドを含む。このように、SMBダイレクト・ピアは、SMB転送が完了するときを判断することができ、SMB2データーを再び組み立てることができる。SMBダイレクト・プロトコルは、したがって、実施形態では、低レイテンシおよび低オーバーヘッドで、SMB2の迅速な転送に備えつつ、SMB2データーをRDMAによって転送することに付随する問題を克服する。
[0026] 本明細書において開示する実施形態にしたがって、RDMA接続を介してSMB2データーを交換する論理環境またはシステムの一例100を図1に示す。接続ピア(クライアント102およびサーバー106とも呼ぶ)102および106は、RDMA接続を介して、RDMA NIC(RNIC)108aおよび108b間でSMB2データーをネットワーク104を介して移動させることができる。接続ピアとは、例えば、図7に関して説明するような、任意のコンピューター・システムであってよい。接続ピアは、図1においてクライアント/アプリケーション・サーバー102およびファイル・サーバー106として示されている。しかしながら、これらのピアは、一例として提示されるに過ぎない。実施形態では、任意のタイプのクライアント(1つまたは複数)またはサーバー(1つまたは複数)が、接続ピアとして機能することができる。つまり、RDMA接続は、例えば、複数のクライアント、複数のサーバー、サーバー・ファーム(1つまたは複数)、サーバー・クラスタ(1つまたは複数)、メッセージ・サーバー(1つまたは複数)の間、あるいはクライアント(1つまたは複数)とサーバー(1つまたは複数)との間にあってもよい。クライアント/アプリケーション・サーバー102およびファイル・サーバー106は、本明細書において開示する実施形態の教示を理解することのみを目的に、例として提示されるに過ぎない。
[0027] SMB2データーがネットワーク104を介して移動される間、ネットワーク104は、例えば、図7に関して説明するようであればよい。ネットワーク104は、個別の1つのネットワークとして示されているが、当業者によって通常理解される任意のタイプのネットワークであればよい。一実施形態によれば、ネットワークはグローバル・ネットワーク(例えば、インターネットまたはワールド・ワイド・ウェブ、即ち、省略して「ウェブ」)であってもよい。また、ローカル・エリア・ネットワーク、例えば、イントラネット、またはワイド・エリア・ネットワークであってもよい。実施形態によれば、ネットワーク104を介した通信が、1つ以上の標準的なパケット・ベースのフォーマット、例えば、H.323、IP、イーサネット(登録商標)、および/またはATMにしたがって行われる。
[0028] 更に、実施形態では、RNIC108(aおよび/またはb)は、任意のネットワーク・インターフェース・カード、ネットワーク・アダプター、および/またはRDMAをサポートするネットワーク・インターフェース・コントローラーであってもよい。RNICを提供する様々な販売業者がある。例えば、iWARPまたはInfiniBandは、RDMAをサポートするネットワーク・プロトコルである。RNICは、RDMAをサポートすることができ、メモリー110aからメモリー110bへ、およびその逆のデーターの直接転送を可能にする。これらのデーター転送は、プロセッサー112aまたは112bの監視を必要とせず、含むこともない。つまり、本発明の実施形態によれば、RDMA転送は、高帯域幅、低レイテンシ、および低オーバーヘッドである。プロセッサー112およびメモリー110は、例えば、図7に関して説明した通りであってよい。
[0029] 図1は、RDMAを介したSMB2データー交換の一般的な環境を示し、図2Aは、本明細書において開示する実施形態にしたがって、RDMA接続を介してSMB2データーを送信または受信するピアの一例102を示す。この例では、ピア102は、クライアントおよび/またはアプリケーション・サーバーである。クライアント102の種々のコンポーネントには、本開示の実施形態によるハードウェアおよび/またはソフトウェアを含むことができる。しかしながら、例示の目的のために、以後、コンポーネントをソフトウェア・モジュールとして説明する。実施形態では、クライアント102は、カーネル202a、少なくとも1つのアプリケーション220、メモリー・バッファー222a、1つ以上のタイマー224a、および/または1つ以上の設定226aの内1つ以上を含むが、これらに限定されるのではない。実施形態では、「カーネル」とは、オペレーティング・システムの中核であり、ここでメモリー、ファイル、および周辺デバイスが管理され、アプリケーションがトリガーおよび起動され、システム・リソースが割り当てられる。
[0030] 実施形態では、カーネル202aは、WIN32(登録商標)ファイル・アプリケーション・プログラミング・インターフェース(API)または同等物204、SMB2モジュール(SMB2クライアント208として示されている)、SMBダイレクト・モジュール(SMBダイレクト・クライアント214aとしてしめされている)、およびRDMAインターフェース216aの内1つ以上を含むことができるが、これらに限定されるのではない。SMBダイレクト・モジュールおよびRDMAインターフェース216aは、本明細書において説明する方法およびプロセスを実行するために導入される。モジュール、コンポーネント、および/またはインターフェースについて次のように説明する。
[0031] 実施形態では、WIN32(登録商標)ファイルAPI204は、カーネル202aと1つ以上のユーザー・アプリケーション220との間のアプリケーションとすることができる。一実施形態例では、WIN32(登録商標)ファイルAPI204は、MICROSOFT WINDOWS(登録商標)オペレーティング・システムにおいて利用可能な1組のAPIである。殆ど全てのWINDOWS(登録商標)プログラムは、機能を実行するためにWINDOWS(登録商標)と相互作用する。WIN32(登録商標)ファイルAPI204の実施形態は、例えば、ファイル・システム、デバイス、および/またはエラー・ハンドリングというような、WINDOWS(登録商標)システムに利用可能なリソースへのアクセスを付与する。WIN32(登録商標)ファイルAPI204は、実施形態によれば、カーネルに追加される機能へのアクセスを不要することができる。実施形態では、WIN32(登録商標)ファイルAPI204は、加えて、基礎のファイル・アクセス機能を使用するリモート・ファイルに対する動作(action)をシステムが実行することを可能にする。一方、基礎のファイル・アクセス機能は種々のネットワーク処理機能(networking capabilities)を使用し、リモート・アクセスに対処する。
[0032] 実施形態では、SMB2クライアント208は、アプリケーションと、SMB2サーバー212bによって提供されるインターフェースとの間における通信を管理する。デバイスが動作する速度は、オペレーティング・システムと一致しない場合もあるので、オペレーティング・システムとデバイス・ドライバーとの間の通信は、主にI/O要求パケット(IRP)を介して行われる。これらのパケットは、例えば、ネットワーク・パケットまたはWINDOWS(登録商標)メッセージ・パケットと同様である。これらのパケットは、オペレーティング・システム(1つまたは複数)から特定のドライバーに、そしてドライバー間で渡される。実施形態では、SMB2クライアント208は、I/O要求をネットワーク・リソースにリディレクトし、SMBメッセージを作成して(compose)ネットワークを介した通信を行うことができる。SMB2クライアント208は、SMBパケットまたはデーターをRMDAによって交換するために、SMBパケットをSMBダイレクト・クライアント214aに伝達する。同様に、 一実施形態によれば、SMB2サーバー212bもIRPを使用して、SMB2クライアント208からのファイル要求をサーバーのストレージに送ることもできる。
[0033] 実施形態では、SMBダイレクト・モジュール214は、カーネル202におけるSMBダイレクト・ネットワーク・プロバイダ・インターフェース(NPI)から作られたインスタンスである。SMBダイレクト・モジュール214は、API(SMBダイレクトNPIと呼ぶ)を、SMB2クライアントおよびSMB2サーバー・モジュールに露出する。SMB2クライアント/サーバー・モジュールは、このSMBダイレクトNPIを使用して、SMBダイレクト接続を介してデーターを送るまたは受信するための要求を行う。実施形態によれば、SMBダイレクト・モジュール214は、SMBダイレクト・プロトコルを実現し、SMB2クライアント/サーバー・モジュールと基礎のRDMAインターフェースとの間に位置する。SMBダイレクトNPIは、SMBダイレクト・プロトコルをイネーブルする。SMBダイレクトNPIは、動作の中でもとりわけ、SMBダイレクト接続を作成および破壊し、SMBダイレクト接続を介してデーターを送信および受信し、メモリーを登録/登録解除し、RDMAリード/ライト動作をピアとの間でSMBダイレクト接続を介して実行し、SMBダイレクト接続がピアによって切断されたときに通知を受信し、SMBダイレクト接続を介した送信のためにSMB2パケットを直列化/非直列化することができる。これらのタスクを遂行するために、SMBダイレクト・モジュール214が作成される。SMBダイレクト・モジュール214は、RDMAプロトコルによって格納されたSMB2データーのメモリー・バッファー222からの送信および引き出しを管理することができる。つまり、SMBダイレクト・モジュール214は、単にSMB2データーからRDMAに、そしてRDMAからSMB2に逆に、データーを変換する。SMBダイレクト・モジュール214は、他の新たなモジュール、RDMAインターフェース216と通信し、本開示の実施形態における動作を実行する。
[0034] 実施形態によれば、SMBダイレクト・モジュール214は、様々な機能を実行する。SMBDirectReceiveEventコールバック関数は、SMB2クライアント208またはSMB2サーバー212Bに、SMBダイレクト・エンドポイントにおいてメッセージが受信されたことを通知する。SMBDirectDisconnectEventイベント・コールバック関数は、SMB2クライアント208またはSMB2サーバー212bに、エンドポイントにおける接続が切断されたことを通知する。SMBDirectAcceptEventイベント・コールバック関数は、SMB2サーバー212bに、リスニング・エンドポイント(listening endpoint)における着信接続(incoming connection)が受け入れられたことを通知する。SMBDirectListen関数は、所与のローカル・アドレスにおける着信接続を傍聴する(listen for)リスナー・エンドポイントを作る。SMBDirectCloseEndpoint関数は、エンドポイントを閉鎖し、あらゆる関連するリソースを解放する。SMBDirectConnect関数は、エンドポイントをリモートSMBダイレクト移送アドレスに接続する。SMBDirectDisconnect関数は、エンドポイントをリモートSMBダイレクト移送アドレスから切断する。SMBDirectSend関数は、データーのバッファーをリモートSMBダイレクト・ピアに送る。SMBDirectSend関数は、データーのバッファーをリモートSMBダイレクト・ピアに送る。SMBDirectRegisterMemory関数は、SMB2クライアント208が、RDMAリード/ライト動作に使用するためにメモリー・バッファーを登録することを可能にする。SMBDirectUnregisterMemory関数は、SMBDirectRegisterMemory関数によって以前に登録されたメモリー・バッファーの登録を解除する。SMBDirectRdmaRead関数は、RDMAに、エンドポイントが接続されているリモート・ピアのメモリーから直接データーを読み取らせる。SMBDirectRdmaWrite関数は、RDMAに、エンドポイントが接続されているリモート・ピアのメモリーにデーターを直接書き込ませる。これらの関数およびその動作について、図6と関連付けて説明する。
[0035] 一実施形態では、RDMAインターフェース216は、RNICの販売業者特定RDMA機能とインターフェースするための新たなインターフェースである。RDMAインターフェース216は、RDMAデバイスの関数へのアクセスを与えることができる。RDMAデバイスの機能は、SMBダイレクト・パケットを受信するためのポートを傍聴することを含み、SMB2データーをSMBダイレクト・モジュール214に供給することができる。一実施形態では、RDMAデバイスは、RDMA接続を介した通信を管理するために、カーネル・モードRDMAモジュールを含むことができる。更に、RDMAデバイスは、RDMAメッセージを送るポートにアクセスしここで傍聴するためにRDMAアクセス・レイヤーおよび拡張も含むことができる。実施形態によれば、プロキシー・ドライバーは、RNICのハードウェア・ドライバーとインターフェースすることができる。
[0036] 実施形態では、ユーザー・アプリケーション220は、ユーザーまたは他のソフトウェアのためにプロセッサーによって実行される任意のソフトウェアであればよい。ユーザー・アプリケーション220の例には、ウェブ・ブラウザー、電子メール等が含まれる。これらのユーザー・アプリケーション220は、カーネル202aとインターフェースして、特に、ファイル・サーバー106のようなリモート記憶位置からのデーターを送信および受信する。
[0037] 一実施形態では、メモリー・バッファー222は、図7に関して説明するように、任意のタイプのメモリーであればよい。メモリー・バッファー222は、メッセージ内において送られるSMBダイレクト・メッセージおよび/またはSMB2データーを受信するために使用することができ、そしてこれらのメッセージを送信する前に、発信するSMBダイレクト・メッセージを結集する(stage)ために使用することができる。つまり、実施形態によれば、メモリー・バッファー222は、以下で説明するようにブロックに区分することができる。
[0038] タイマー224は、実施形態では、所定時間から0までカウント・ダウンすることができる1組のクロックである。つまり、タイマー224は、格納されているデーター、およびプロセッサーによって実行されるクロック関数を表す。タイマー224の満了が、RDMAインターフェースにおいてまたはSMBダイレクト・モジュール214によって1つ以上の関数をトリガーすることができる。他の実施形態では、タイマーが0から閾値までカウントすること、または他の何らかのタイプのカウント動作を実行することもできる。これらのタイマーの一部は、SendCreditGrantTimerを含むことができる。これは、SendCreditCountがゼロに達したときに開始され、タイマー・セクション224において動作するタイマーである。離れて接続されているピアは、このタイマーが満了するまでに、追加のSendCreditsを付与しなければならない。また、SendCreditGrantTimerは、ピアが追加のSendCreditsを付与するまでクライアント/サーバーがこのピアを待つ時間量を規制することもできる。クライアント/サーバーが、SendCreditsCountの値がゼロであるために、パケットをピアに送ることができないことを発見したとき、クライアント/サーバーは、実施形態によれば、所定の秒数後に満了するタイマーを設定する。SendCreditsが入手可能になる前にこのタイマーが満了した場合、クライアント/サーバーは接続を切断する。一実施形態では、アイドル接続タイマーが、ピアがパケットを送るまでクライアント/サーバーが待つ時間量を規制する。最後の所定数の秒の間にピアからパケットが受信されていない場合、クライアント/サーバーは、存続要求(keep alive request)をピアに送り、KeepAliveResponseタイマーを設定する。KeepAliveResponseタイマーの満了前に応答が受信されない場合、本開示の実施形態によれば、接続は切断される。
[0039] 本発明の実施形態によれば、SMBダイレクト接続を介した任意のSMBダイレクト・データー転送のために、KEEPALIVE_REQUESTEDフラグをセットすることもできる。一実施形態では、KEEPALIVE_REQUESTEDフラグは、受信側がまだ接続されていて応答可能であることを送信側が分かるように、できるだけ早く送信側に応答することを受信側ピアに求める要求である。1つ以上のシステムが、メッセージ交換なしに、接続を時間切れにしようと試みることができる。このため、KEEPALIVE_REQUESTEDフラグが付いたメッセージは、接続を維持することができる。代替実施形態では、KEEPALIVE_REQUESTEDフラグがセットされたメッセージは、クレジットを要求または受信するために使用することができる。
[0040] 一実施形態では、設定226ストアは、RDMAによるSMBメッセージ交換に関連するデーターを格納し引き出す。設定226は、図7に関して説明するような任意のタイプのメモリーまたは記憶デバイスに格納することができる。一例として、これらの設定は、設定された後にクレジット補充タイマーが満了する秒数、ピアが他のピアから受信してもよいSMBダイレクト・データー転送パケットの最大サイズ、またはピアが他のピアに付与する送出クレジット数に対する制限等を含むことができる。
[0041] SMB_DIRECT_ENDPOINT構造は、実施形態では、SMBダイレクト・エンドポイントを表す不透明な構造とすることができる。SMBダイレクト・エンドポイントは、例えば、ネットワーク・ソケットと機能が類似する。一実施形態によれば、SMB2クライアント208またはSMB2サーバー212bは、この構造のメンバに直接アクセスできないが、SMBダイレクト・モジュール214を介してアクセスすることができる。SMB_DIRECT_ENDPOINT構造は、様々な動作のためのデーターを含むことができる。MwReleaseListは、解放されてリモート接続ピアに戻すことができるメモリー・ウィンドウのリストである。これらのメモリー・ウィンドウは、完了しているRDMAリード/ライト動作に関連付けられる。ReceiveCreditCountは、リモート接続ピアに付与されることになっている受信クレジットの数である。エンドポイントのホストは、エンドポイントにおいて保留になっている少なくともこの数の受信を有することができる。SendCreditCountは、エンドポイントのホストが現在有する送出クレジットの数である。リモート接続ピアは、エンドポイントにおいて保留になっている少なくともこの数の受信を有することができる。PendingRdmaReadCountは、このエンドポイントにおいて開始したが未だ完了していないRDMAリード動作の数である。PendingRdmaReadLimit は、同時にエンドポイントにおいて保留にすることができるRDMAリード動作の最大数である。DeferredInitiatorOpQueueは、実施形態では、それらを発行するためのエンドポイント・リソースが現在入手可能でないために延期されているイニシエータ動作(initiator operation)の待ち行列である。NdkQpは、受信およびイニシエータ要求待ち行列を表す待ち行列対オブジェクト(queue pair object)である。NdkReceiveCqは、NDK受信完了待ち行列である。受信要求完了はこの待ち行列に入れられる。NdkReceiveQueueCapacityは、エンドポイントにおいて同時に保留にすることができる受信要求の最大数である。NdkInitiatorCqは、NDKイニシエータ完了待ち行列である。送出(send)、結合(bind)、高速登録(fast register)、リード、ライト、および無効化(invalidate)要求完了は、例えば、この待ち行列に並べられる。実施形態では、NdkInitiatorQueueCapacityは、エンドポイントにおいて同時に保留にすることができる送出、結合、高速登録、リード、ライト、および無効化要求の数である。
[0042] 図2Bは、本明細書において開示する実施形態にしたがって、RDMA接続を介してSMB2データーを送信または受信するピアの一例106を示す。この例では、ピア106はファイル・サーバーである。ファイル・サーバー106の種々のコンポーネントは、ソフトウェアおよび/またはハードウェアを含むことができる。実施形態ではこれらのコンポーネントをソフトウェア・モジュールとして説明するが、他の実施形態は他のタイプのモジュールにも備えている。実施形態では、ファイル・サーバー106は、カーネル202b、NTFS232、メモリー・バッファー222b、1つ以上のタイマー224b、および/または1つ以上の設定226bの内1つ以上を含むが、これらに限定されるのではない。これらの機能の一部は、図2Aにおいて説明したものと同一または同様であってもよい。
[0043] 実施形態によれば、カーネル202b(および/または図2Aに関して説明したように)、入力/出力(I/O)マネージャー206b、SMB2サーバー212b、SMBダイレクト・サーバー214b、およびRDMAインターフェース216bの内1つ以上を含むが、これらに限定されるのではない。これらの機能の一部は、図2Aにおいて説明したものと同一または同様であってもよい。
[0044] 実施形態では、SMB2サーバー212bは、MICROSOFT(登録商標)サーバーに対してSMB2プロトコルのサーバー側を実現するドライバーである。他の実施形態は、他のタイプのサーバーにも備えている。SMB2サーバー212bは、始動して、SMBを使用してデーターを交換し、データーを供給し、I/Oマネージャー206bからのデーターを受信することができる。実施形態では、SMB2サーバー212bは、ネットワーク接続を介してSMB2データーを送信または受信することができる。SMB2サーバー212bは、サーバー用ネットワークを介して通信するように機能する。つまり、実施形態によれば、SMB2サーバー212bは、送信のためのSMB2データーを供給し、ネットワーク送信からSMB2データーを受信する。
[0045] 実施形態では、新技術ファイル・システム(NTFS)232は標準的なファイル・システムであってよい。NTFSは、性能、信頼性、およびディスク空間利用度を高めるため、そしてセキュリティ・アクセス制御リスト(ACL)およびファイル・システム・ジャーナリング(journaling)というような追加の拡張のために、メタデーターおよび高度データー構造の使用のサポートを含む。NTFSは、1つ以上のクライアントに対してファイル・データーを編成し格納するように機能する。このデーター・ファイルは、RDMAによるSMB2データー転送のように、クライアントとの通信を介して、クライアントに供給することができる。
[0046] 実施形態によれば、SMBダイレクト(SMB Direct)は、SMB2データーを交換するために、RDMA接続を作る。このプロトコルは、ネゴシエーション・プロセスによってRDMA接続を作る。ピア102および106がRDMA接続をネゴシエートした後、ピア102または106のいずれかが、RDMA接続を介してSMB2データーを送ることができる。
[0047] 実施形態によれば、第1SMBダイレクト・ネゴシエート要求パケット300が図3Aに示されている。一方、実施形態では、関連するSMBダイレクト・ネゴシエート応答パケット336が図3Bに示されている。更に、実施形態によれば、データーを転送するために使用されるSMBダイレクト・データー転送パケット338が図3Cに示されている。各メッセージまたはパケットは、例えば、作る、送信する、格納する、および/または受信することができる。実施形態では、これらのパケットまたはメッセージは、各々、異なるデーターを格納する部分またはフィールドを含むことができる。
[0048] 図3Aに移ると、本開示の実施形態によるSMBダイレクト・ネゴシエート要求パケット300が示されている。SMBダイレクト・ネゴシエート要求パケット300は、例えば、以下のフィールドの内1つ以上を含むことができるが、これらに限定されるのではない。MinVersion302、MaxVersion304、Reserved306,CreditsRequested308、PreferredSendSize310、MaxzReceiveSize312、および/またはMaxSmb2MessageSize314。SMBダイレクト・ネゴシエート要求パケット300は、楕円316によって表されるように、図3Aに示したフィールドよりも多いフィールドまたは少ないフィールドを含むこともできる。
[0049] 一実施形態では、MinVersionフィールド302は、クライアント/要求元102がサポートする最も低いSMBダイレクト・プロトコル・バージョンについての値を含むことができる。MaxVersionフィールド304は、クライアント/要求元102がサポートする最も高いSMBダイレクト・プロトコル・バージョンを格納することができる。この値は、MinVersionフィールド302の値以上であればよい。実施形態では、クライアント/要求元は、MinVersionフィールド302における値とMaxVersionフィールド304における値との間の範囲における(含まれる)プロトコル・バージョンの全てをサポートする。Reservedフィールド306は、単に、未だ分からない今後の要求のために確保されているフィールドであり、一実施形態によれば、クライアントによって使用されない。
[0050] 実施形態によれば、CreditsRequestedフィールド308は、クライアント/要求元102がサーバー/受信側106に要求している送出クレジット数についての値を含む。実施形態では、CreditsRequestedフィールド308における値は、SMB2データーを後続のメッセージにおいて確実に送ることができるように、ゼロ(0)よりも大きくなる。しかしながら、CreditsRequestedフィールド308における値は任意の数でもよく、実施形態によれば、平均的使用に基づいて設定することもできる。代替実施形態では、CreditsRequestedフィールド308における値は、少なくとも、送られるSMBメッセージのサイズに基づくことができる。更に他の実施形態では、他のまたは追加の要素も、クレジットを要求するときに考慮することができる。また、実施形態では、大きなメッセージもRDMAを使用して転送することができる。
[0051] PreferredSendSizeフィールド310は、クライアント/要求元102がサーバー/受信側106に送信することができることを望む最も大きなSMBダイレクト・データー転送パケット338のサイズ(恐らくはバイト単位)を含むことができる。MaxReceiveSizeフィールド312は、クライアント/要求元102がサーバー/受信側106から受け入れる最も大きなSMBダイレクト・データー・データー転送メッセージのサイズを含む(恐らくはバイト単位)。つまり、1つのSMB2データー転送はメモリー割り当てを超過しない。実施形態では、この値は閾値128以上である。閾値128は、少なくともデーター転送パケットおよび小SMB2メッセージにおけるSMBダイレクト・ヘッダーのサイズである。MaxSMB2MessageSizeフィールド314は、一実施形態によれば、クライアント/要求元がサーバー/受信側106から受け入れる最も大きなSMB2プロトコル・メッセージのサイズ(恐らくはバイト単位)を含むことができる。この値は、クライアント102によって予め決められ設定される。実施形態では、MaxSmb2MessageSizeフィールド314は、メモリー・バッファー222aの総サイズよりも大きくてはならない。このようにして、SMBメッセージがメモリー・バッファー222aから溢れなくすることができる。しかしながら、一実施形態によれば、MaxSmb2MessageSizeフィールド314は、ユーザーによって決定されるような、メモリー・バッファー222aにおけるメモリー量未満であればよい。
[0052] 図3Bに移ると、実施形態によるSMBダイレクト・ネゴシエート応答パケット336が示されている。SMBダイレクト・ネゴシエート応答パケット336は、RDMA接続に対するネゴシエーションを完了するためにピア106によって送ることができる。SMBダイレクト・ネゴシエート応答パケット336は、以下のフィールドの内1つ以上を含むことができるが、これらに限定されるのではない。例えば、MinVersion302b、MaxVersion304、PreferredVersion318、Reserved306b、CreditsRequested308b、CreditsGranted320a、Status322、PreferredSendSize310b、MaxReceiveSize312b、および/またはMaxSMB2MessageSize314bである。SMBダイレクト・ネゴシエート応答パケット336は、楕円324によって表されるように、図3Bに示したフィールドよりも多いフィールドまたは少ないフィールドを含むこともできる。
[0053] 実施形態によれば、MinVersionフィールド302bは、サーバー/受信側106がサポートする最も低いSMBダイレクト・プロトコルの値を含む。MaxVersionフィールド304bは、サーバー/受信側106がサポートする最も高いSMBダイレクト・プロトコル・バージョンを格納する。この値は、MinVersionフィールド302bの値以上であればよい。実施形態では、サーバー/受信側106はMinVersionフィールド302bにおける値とMaxVersionフィールド304bにおける値との間の範囲にある(含まれる)プロトコル・バージョンの全てをサポートする。PreferredVersionフィールド318は、共通SMBダイレクト・プロトコル・バージョンの値を格納する。PreferredVersionフィールド318の値は、実施形態では、クライアントのSMBダイレクト・ネゴシエート要求パケット300のMinVersionフィールド302aおよびMaxVersionフィールド302bによって指定される範囲の間である。他の実施形態では、PreferredVersionフィールド318の値は、サーバーのSMBダイレクト・ネゴシエート応答パケット336のMinVersionフィールド302bおよびMaxVersionフィールド304bによって指定される範囲の間である。実施形態によれば、Reservedフィールド306bは、単に今後の未知の要求のために確保されるフィールドであり、サーバーによって使用されない。
[0054] CreditsRequestedフィールド308bは、実施形態によれば、サーバー/受信側106がクライアント/要求元102に要求している送出クレジット数に対する値を含む。実施形態では、CreditsRequestedフィールド308bにおける値は、SMB2データーを後続のメッセージにおいて確実に送ることができるように、ゼロ(0)よりも大きくなる。しかしながら、CreditsRequestedフィールド308bにおける値は、任意の数でもよく、平均的な使用に基づいて設定してもよい。代替実施形態では、CreditsRequestedフィールド308bにおける値は、送ろうとするSMBメッセージのサイズに基づき、または他の係数(factor)に基づいてもよい。実施形態によれば、1つのクレジットが要求されるときに大きなメッセージが送られることがある。CreditsGranatedフィールド320aは、サーバー/受信側106からクライアント/要求元102に付与されるクレジットの数を含む。実施形態では、CreditsGrantedフィールド320aの値は、クライアント/要求元102に次のSMBダイレクト・メッセージを送らせるために、ゼロ(0)よりも大きくなる。
[0055] 実施形態では、ステータス・フィールド322は少なくとも1つのフラグまたは値を含む。一実施形態では、ステータス・フィールド322は1つまたは2つの値、即ち、ステータス成功またはステータス非サポートを含む。成功フラグは、サーバー/受信側106がクライアント/要求元のSMBダイレクト・ネゴシエート要求パケット300を受け入れたことを示す。非サポート・フラグは、サーバー/受信側106がクライアント/要求元102のSMBダイレクト・ネゴシエート要求パケット300を拒否したことを示す。
[0056] 実施形態によれば、PreferredSendSize310bは、サーバー/受信側106がクライアント/要求元102に送信できることを望む最も大きなSMBダイレクト・データー転送パケット338のサイズ(恐らくはバイト単位)を含むことができる。PreferredSendSize310bは、実施形態では、SMBダイレクト・ネゴシエート要求パケット300におけるMaxReceiveSizeフィールド312a以下である。つまり、サーバー/受信側106によって送られるパケット・サイズは、クライアント/要求元102のメモリー・バッファー222aの割り当てよりも大きくてはならない。
[0057] 実施形態では、MaxReceiveSizeフィールド312bは、サーバー/受信側106がクライアント/要求元102から受け入れる最も大きなSMBダイレクト・データー転送メッセージのサイズ(恐らくはバイト単位)を含む。この値は、サーバー/受信側106が設定するメモリー・バッファー222bのブロックまたは所定の割り当てに等しくするとよい。つまり、実施形態では、SMB2データー転送はこのメモリー割り当てを超過しない。実施形態では、この値は閾値128以上である。閾値128は、少なくともデーター転送パケットにおけるSMBダイレクト・ヘッダーのサイズである。MaxSmb2MessageSizeフィールド314bは、サーバー/受信側106がクライアント/要求元102から受け入れる最も大きなSMB2プロトコル・メッセージのサイズ(恐らくはバイト単位)を含むことができる。この値は、サーバー/受信側106によって予め決められ設定される。実施形態では、MaxSmb2MessageSizeフィールド314bにおける値は、メモリー・バッファー222bの全サイズよりも大きくてはならない。このように、SMBメッセージはメモリー・バッファー222bから溢れることはない。しかしながら、MaxSmb2MessageSize314bの値は、一実施形態によれば、ユーザーによって決定されるような、メモリー・バッファー222bにおけるメモリー量未満であればよい。
[0058] 本明細書において開示する実施形態によるSMBダイレクト・データー転送パケット338が、図3Cに示されている。SMBダイレクト・データー転送パケット338は、ネゴシエーションの間に作られたRDMA接続を介してSMB2データーを転送するために送ることができる。クライアント/要求元102またはサーバー/受信側106のいずれも、SMB2データーを送信または受信することができる。したがって、クライアント/要求元102およびサーバー/受信側106を、一般的に受信側および送信側と呼ぶ。SMBダイレクト・データー転送パケット338は、は、以下のフィールドの内1つ以上を含むことができるが、これらに限定されるのではない。例えば、CreditsRequested308c、CreditsGranted320b、Reserved306c、RemainingDataLength326、DataOffset328、DataLength330、および/またはSMB2Data322である。SMBダイレクト・データー転送パケット338は、実施形態によれば、楕円334によって表されるように、図3Cに示したフィールドよりも多いフィールドまたは少ないフィールドを含むこともできる。
[0059] 実施形態では、CreditsRequestedフィールド308cは、送信側が受信側に要求している送出クレジットの数に対する値を含む。実施形態では、CreditsRequestedフィールド308cにおける値は、SMB2データーを後続のメッセージにおいて確実に送ることができるように、ゼロ(0)よりも大きくなる。しかしながら、CreditsRequestedフィールド308cにおける値は、任意の数とすることもでき、予測される今後の使用に基づいて、即ち、SMB2データーの転送を完了するための追加パケット数に基づいて設定することができる。CreditsGranatedフィールド320bは、送信側から受信側に付与されるクレジット数を含む。実施形態では、CreditsGrantedフィールド320bの値はゼロにすることができる。何故なら、ピアはクレジットを求めるピアの要求を引き受けることを強いられないからである。しかしながら、ピアは、クライアント/要求元102が次のSMBダイレクト・メッセージを送ることができるようにするために、CreditsGrantedフィールド320bにおいてクレジットを供給することができる。Reservedフィールド306cは、本明細書において開示する実施形態によれば、単に今後の未知の要求のために確保されるフィールドであり、サーバーによって使用されない。
[0060] 実施形態では、RemainingDataLengthフィールド326は、受信側が未だ受信していない断片化SMB2メッセージのバイト数を含むことができる。つまり、このフィールドにおけるゼロ以外の任意の値は、受信側に、他のSMBダイレクト・データー転送パケット338が、他のデーターと共に送られることを示す。SMBダイレクト・データー転送パケット338が完全なSMB2メッセージを伝える場合、または断片化SMB2データーを伝える2つ以上のSMBダイレクト・データー転送パケット338の内最後のものを伝える場合、RemainingDataLengthフィールド326における値は、実施形態によれば、ゼロ(0)になる。RDMAは、メッセージを順次送ることができる。したがって、メッセージを再度組み立てることが簡略化される。何故なら、一連のメッセージが、厳格な受信順序で、再度組み立てられるからである。つまり、実施形態は、例えば、ヘッダーにおけるメッセージ識別子、または他のもっと複雑な再組み立て技法の使用の必要性をなくする。
[0061] 一実施形態では、DataOffsetフィールド328は、SMBダイレクト・データー転送パケット338の先頭から、カプセル化されたSMB2プロトコル・メッセージの最初の8バイト整列バイトまでのオフセットに対する値をバイト単位で含む。実施形態では、DataLengthフィールド330の値がゼロである場合、DataOffsetフィールド328もゼロに設定される。DataLengthフィールドの値がゼロでない場合、DataOffsetフィールド328は何らかの値であり、24バイト以上であるとよい。これは、一実施形態によれば、ヘッダーにおける他のフィールドのサイズである。DataLengthフィールド330は、SMB2データー・フィールド332におけるカプセル化SMB2プロトコル・メッセージのサイズを、バイト単位で含む。実施形態では、SMBダイレクト・データー転送パケット338がSMB2プロトコル・メッセージをカプセル化しない場合、DataLengthフィールド330の値はゼロに設定される。SMB2データー・フィールドは、実施形態によれば、任意のSMB2プロトコル・メッセージを含む。
[0062] 本明細書において開示する実施形態によるSMB2リード・ライト要求340が、図3Dに示されている。SMB2リード/ライト要求340は、ダイレクトRDMAリード/ライトを実行するために、SMBダイレクト・データー転送パケット338にカプセル化することができる。ダイレクトRDMAリード/ライトは、エンコードされていないアプリケーション・データーのみを送る。本開示の実施形態によれば、SMB2リード/ライト要求340は、サーバー106がRDMAライトをクライアント102に対して実行しようとする場合には、SMB2リード要求となることができ、サーバー106がクライアントからのRDMAリードを実行しようとする場合には、SMB2リード要求となることができる。いずれの場合でも、SMB2リード/ライト要求340におけるフィールドは同様である。尚、サーバー106は、クライアント102が要求したRDMA転送を実行することは注記してしかるべきである。SMB2リード/ライト要求340は、以下のフィールドの内1つ以上を含むことができるが、これらに限定されるのではない。例えば、Channel342、ChannelInfoOffset346、およびChannelinfolength348である。一実施形態では、これらのフィールドは、RDMAデーター転送を完了するための誘導(steering)情報を含むことができる。Reservedフィールド344は、一実施形態によれば、今後の未知の要求のために確保されるフィールドであり、使用されない。SMB2リード/ライト要求340は、楕円351によって表されるように、図3D示したフィールドよりも多いフィールドまたは少ないフィールドを含むこともできる。図示したフィールドは、例示の目的に限って提示されたのであり、限定することを意図するのではない。
[0063] 実施形態では、Channelフィールド342は、データーを発見しようとするチャネルに対する値を含む。RDMA接続は、様々なチャネルを含むことができる。チャネル情報は、実施形態によれば、転送を遂行するためにピアがRDMAデバイスに提供する情報を含むことができる。例えば、チャネル情報は、図3Eに示すように、1つ以上のトークン、オフセット、メモリー・セグメントの長さを、他のRDMA特定情報と共に含むことができる。
[0064] 一実施形態では、ChannelInfoOffsetフィールド346およびChannelInfoLengthフィールド348は、データー・パケットにおけるオフセット、トークン、および長さ情報に対するポインタである。これらのポインタは、SMB2リードまたはライト要求において、情報を突き止めることができる位置を与える。実施形態では、フラグ350は、RDMAダイレクト・データー転送の挙動を制御するまたは変化させる任意の情報を含む。
[0065] 図3Eに移ると、本明細書において開示する実施形態によるRDMAチャネル記述子352が示されている。RDMAチャネル記述子352は、SMBダイレクト要求内に、通例ではチャネル・フィールド342にカプセル化することができる。RDMAチャネル記述子352は、以下のフィールドの内1つ以上を含むことができるが、これらに限定されるのではない。例えば、オフセット354、トークン346、および長さ358である。一実施形態では、これらのフィールドはRDMAデーター転送を完了するための誘導情報である。RDMAチャネル記述子352は、楕円360によって表されるように、図3Eに示したフィールドよりも多いフィールドまたは少ないフィールドを含むこともできる。図示したフィールドは、例示の目的に限って提示されたに過ぎない。ダイレクト・データー転送を完了するために、チャネル・フィールド342における情報に基づいて、読み取られるデーターまたは書き込まれるデーターおよびデーターの長さと共に、RDMAをメモリーに導く。ダイレクト・データー転送はアプリケーション・データーのみを送るので、この情報は適正な転送を確保するのに役立つ。
[0066] 一実施形態によれば、オフセット354は、バイトまたはビット単位の値であり、そこからデーターが開始する。オフセット354は、メモリー・ブロックの開始アドレスから測定することができる。開始アドレスは、トークン356内に設けられる情報を用いて突き止めることができる。長さ358は、ビットまたはバイト単位の値であり、データー・セグメントの長さである。この誘導情報は、例えば、ダイレクト・データー転送を案内する。
[0067] 図2Aおよび図2Bに示した種々のソフトウェア機能モジュールの相互作用を、図4Aから図4Cに示す動作ステップ400において、本明細書において開示する実施形態にしたがって、RDMA接続をネゴシエートすることについて更に例示する。図4Aは、本開示の実施形態による、クライアント102とサーバー106との間におけるパケット408および424の転送の図400Aを示す。図4Bは、本開示の実施形態にしたがって、クライアント102の観点から示し、一方図4Cはサーバー106の観点から示す。尚、プロセス400は、クライアントがRDMA接続を要求し、サーバー106が応答するときについて説明することは注記してしかるべきである。しかしながら、実施形態によれば、逆も成り立つことができ、その場合、サーバー106が要求し、クライアントが応答する。更に、本方法は、例えば、複数のクライアント間、および/または複数のサーバー間でも行うことができる。
[0068] 図4Bに移ると、一実施形態にしたがって、RDMAによってSMB2を使用して接続をネゴシエートする動作ステップ例400Bが示されている。プロセス400Bは、START動作402Bにおいて開始し、プロセス400Bは先に進んで、クライアントが受信をプリポストする(pre-post)(404)。実施形態では、RDMAインターフェース216aは自動的にRNIC108a/108bを検出および利用して、これらが利用可能であり適正に構成されていることを確認する。次に、一実施形態では、SMBダイレクトNPIがSMBダイレクト・モジュール214によって露出される。SMBダイレクト・クライアント214aは、RDMAアダプターへのハンドルを開いて、SMB2クライアント208に対するRDMA接続を形成することができる。一実施形態では、SMBダイレクト・クライアント214aは、次に、RDMAインターフェース216aを介して、RDMA接続を要求する。また、SMBダイレクト・クライアント214aは、メモリー・バッファー222aにおいて割り当てを作り、最初の送出クレジットに対して何を要求するか、そして受信クレジットに対して何が許可されるか決定することができる。メモリー・バッファー222aにおける割り当ては、実施形態では、所定のサイズにすることができる。実施形態によれば、メモリー・バッファー222aにおけるメモリーの総量も、決定することができる。
[0069] 図4Bに戻って、SMBダイレクト・クライアント214aは、次に、RDMAインターフェース216aに送るために、SMBダイレクト・ネゴシエート要求パケット300を組み立てる(construct)ことができる。例えば、SMBダイレクト・ネゴシエート要求パケット300は、図3Aにおいて説明した通りである。したがって、SMBダイレクト・クライアント214aは、SMBダイレクト・ネゴシエート要求パケット300におけるフィールドを設定する。つまり、SMBダイレクト・クライアント214aは、クライアント102がサポートすることができるSMBダイレクトの最低および最高バージョンを判定する。SMBダイレクト・クライアント214aは、要求するクレジットの数を決定する。実施形態では、要求するクレジットの数は、送られることが分かっている今後のSMBメッセージ、今後起こり得る予測SMBトラフィック、SMBの過去の使用に基づくことができ、または何らかの他の方法によることができる。送信サイズは、内部関数および速度の考慮によって決定される。最大受信サイズは、メモリー・バッファー割り当てのサイズに一定させる(peg)ことができる。最後に、最大SMBメッセージ・サイズが決定され設定される(一般に、最大SMBメッセージ・サイズは、ピアが大きなSMB2パケットを送ることができる十分な大きさであるが、全てのメモリーを使用する程の大きさではない)。この収集した情報は、本開示の実施形態によれば、SMBダイレクト・ネゴシエート要求パケット300に入力される。
[0070] 次に、SMBダイレクト・クライアント214aはSMBダイレクト・ネゴシエート要求パケット300を送る(408B)。一実施形態では、SMBダイレクト・クライアント214aは、送出動作によってSMBダイレクト・ネゴシエート要求パケット300を送ることを、RDMAインターフェース216aに要求する。RDMAインターフェース216aは、RDMAインターフェース216bと通信し、SMBダイレクト・ネゴシエート要求パケット300をサーバー106に送る。SMBダイレクト・ネゴシエート要求パケット300の送信と共に、SMBダイレクト・クライアント214aは、ネゴシエーション要求満了タイマー310を起動する。ネゴシエーション要求満了タイマーは、所定の値を有することができ、その値からゼロまでカウント・ダウンする。SMBダイレクト・クライアント214aは、次に、SMBダイレクト・ネゴシエート要求パケット300に対する応答を待つ。SMBダイレクト・ネゴシエート要求パケット300に対する応答を受信する前にネゴシエーション要求満了タイマーが満了したと判断した場合(411)、プロセス400BはNOからEND動作432Bに進み、接続が落とされる。
[0071] 図4Cに移り、開始動作402Cにおいて、実施形態では、サーバー106はSMBダイレクト・ネゴシエート要求パケット300を予想し、受信412をプリポストする。実施形態によれば、SMB2サーバー212bは、アクティビティ(activity)を傍聴し、自動的に、RDMAが入手可能でありRNIC108bのポートに繋がれている(bound)ことを発見することができる。SMB2サーバー212bは、リスナー・エンドポイントを開き、RDMAがRNIC108bにおいて入手可能であると判断する。次に、SMB2サーバー212bはSMBダイレクト・サーバー214bとの通信を開始する。SMBダイレクト・サーバー214bは、RDMA接続を開き、RDMAアダプター・ハンドルを受信することができる。SMBダイレクト・サーバー214bは、次に、RDMAインターフェース216bを介して、RDMA接続を要求する。次いで、SMBダイレクト・サーバー214bはRDMA接続を受け入れることができ、これによってクライアント102に、接続要求が成功したことを知らせる。このRDMAインターフェース216aからの成功の指示が、クライアントにネゴシエート要求を送らせる。
[0072] また、SMBダイレクト・サーバー214bは、メモリー・バッファー222bにおいて割り当てを作り、最初の送出クレジットに対して何を要求するか、そして受信クレジットに対して何が許可されるか決定することができる。メモリー・バッファー222bにおける割り当ては、実施形態では、所定のサイズにすることができる。実施形態によれば、メモリー・バッファー222bにおけるメモリーの総量も、決定することができる。
[0073] 図4Cに戻り、SMBダイレクト・サーバー214bは、次に、ネゴシエーション要求満了タイマー414を起動することができる。サーバー106におけるネゴシエーション要求満了タイマーは、実施形態では、所定の値を有することができ、その値からゼロまでカウント・ダウンする。SMBダイレクト・サーバー214bは、次に、SMBダイレクト・ネゴシエート要求パケット300を受信するのを待つ。待っている間、SMBダイレクト・サーバー214bはRDMA接続を監視し、SMBダイレクト・ネゴシエート要求パケット300を受信する前にネゴシエーション要求満了タイマーが満了したか否か判断する(416)。ネゴシエーション要求タイマーが満了した場合、プロセス400CはNOからEND動作432Cに進み、接続が落とされる。
[0074] しかしながら、ネゴシエーション要求満了タイマーの満了前にSMBダイレクト・ネゴシエート要求パケット300がRNIC108bおよびRDMAインターフェース216bに到達した場合、プロセス400CはYESに進み、408CにおいてRDMAインターフェース216bによって、SMBダイレクト・ネゴシエート要求パケット300を受信して有効性を確認し、このパケットをメモリー・バッファー222bに入れる。次に、SMBダイレクト・サーバー214bは、このデーターが知らされ、SMBダイレクト・ネゴシエート要求パケット300が有効か否か判断する(418)。
[0075] 実施形態では、SMBダイレクト・ネゴシエート要求パケット300の有効性を判断するために、SMBダイレクト・サーバー214bはSMBダイレクト・ネゴシエート要求パケット300からデーターを読み出し、以下のことを判定する。例えば、MaxVersionフィールド304の値がMinVersionフィールド302の値未満か否か、またはその範囲における値がサポートされるか否か、CreditsRequestedフィールド308の値がゼロか否か、MaxReceiveSizeフィールド312の値が所定の閾値(例えば、128バイト)未満か否か、あるいはMaxSmb2MessageSizeフィールド314の値が所定の閾値未満か否か判定する。以上の内いずれかが真である場合、SMBダイレクト・ネゴシエート要求パケット300は有効でなく、プロセス400CはNOからEND動作432Cに進み、SMBダイレクト・サーバー214bは切断する。チェックの全てが真でない場合、プロセス400CはYESに進んでSMBダイレクト応答420を処理し、SMBダイレクト・ネゴシエート要求パケット300がSMBダイレクト・クライアント214aに、SMBダイレクト・サーバー214bによって送られる。
[0076] SMBダイレクト・ネゴシエート要求パケット300を処理するとき、実施形態では、SMBダイレクト・サーバー214bはsettingProtocolVersionを、クライアント102およびサーバー106によって共有される最高プロトコル・バージョンに等しく設定する。また、SMBダイレクト・サーバー214bは付与するクレジット数も決定する。付与するクレジット数は、実施形態では、メモリー・バッファー222bにおいて利用可能な空間または他の要因に依存する。これらの決定を行った後、SMBダイレクト・サーバー214bはSMBダイレクト・ネゴシエート応答パケット336を生成する(422)。一実施形態では、SMBダイレクト・サーバー214bはSMBダイレクト・ネゴシエート応答パケット336におけるフィールドを設定する。例えば、PreferredVersionフィールドは、settingProtocolVersionにおける値に設定される。CreditsGranted320aは、一実施形態によれば、SMBダイレクト・サーバー214bによって決定されたクレジット数に設定される。他のフィールドも、SMBダイレクト・ネゴシエート要求パケット300と同様に満たされる。次いで、SMBダイレクト・ネゴシエート応答パケット336は、クライアントに送られる(424C)。実施形態では、SMBダイレクト・サーバー214bはSMBダイレクト・ネゴシエート応答パケット336を送るために、RDMAインターフェース216bに送る。
[0077] 図4Bに戻り、SMBダイレクト・クライアント214aは、実施形態によれば、ネゴシエート満了タイマーの満了の前に応答が受信されたか否か判断する(411)。タイマーの満了前に応答が受信された場合、プロセス400BはYESに進み、SMBダイレクト・ネゴシエート応答パケット336の有効性を判断する。SMBダイレクト・ネゴシエート応答パケット336の有効性を判断するために、SMBダイレクト・クライアント214aは以下のことを判定する。例えば、本開示の実施形態によれば、ステータス・フィールド322がSTATUS_SUCCESSではないか否か、PreferredVersionフィールド318が、クライアントのSMBダイレクト・ネゴシエート要求パケット300のMinVersionフィールド302とMaxVersionフィールド304によって指定された範囲内の値を含むか否か、CreditsRequestedフィールド308bがゼロか否か、CreditsGrantedフィールド320aがゼロか否か、PreferredSendSizeフィールド310bが、クライアントのSMBダイレクト・ネゴシエート要求パケット330のMaxReceiveSizeフィールド312によって指定される値よりも大きいか否か、またはMaxReceiveSizeフィールド312bが所定の閾値(例えば、128バイト)未満か否かについて判定する。以上の内いずれかが真である場合、SMBダイレクト・ネゴシエート応答パケット336は有効ではなく、プロセス400BはNOからEND動作432Bに進み、SMBダイレクト・クライアント214aは切断する。これらのチェックの全てが真でない場合、プロセス400BはYESに進み、SMBダイレクト応答430を処理する。ここで、本明細書において開示する実施形態にしたがって、SMBダイレクト・ネゴシエート応答パケット336がSMBダイレクト・クライアント214aによって処理される。
[0078] SMBダイレクト・ネゴシエート応答パケット336を処理するとき、SMBダイレクト・クライアント21aは以下のことを完了する。例えば、実施形態では、設定226における接続のPeerTargetSendCreditsCount設定を、CreditsRequestedフィールド308bに等しく設定する。SMBダイレクト接続プロパティにおける接続のSendCreditsCount設定を、CreditsGrantedフィールド320aに等しく設定する。設定226における接続のMaxSendSize設定を、MaxReceiveSizeフィールド312bに設定する。設定226における接続のReceiveSize設定をPreferredSendSizeフィールド310bに設定する。設定226における接続のMaxOutboundFragmentedMessageSize設定を、MaxReceiveSizeフィールド312bに等しく設定する。そして、接続のアイドル接続タイマーを、所定の時間量(例えば、数時間、数分等)の後満了するように設定し、このタイマーを起動する。一旦以上のステップが実行されたなら、RDMA接続ネゴシエーションは完了し、クライアント102およびサーバー106は、SMBダイレクト・データー転送パケットを交換し始めることができる。次いで、プロセス400BはEND動作432Bにおいて終了する。
[0079] 図2Aおよび図2Bにおいて示した種々のソフトウェア機能モジュールの相互作用を、図5Aから図5Dに示す動作ステップ500において、本明細書において開示する実施形態にしたがって、作られたRDMA接続を介してSMB2データーを交換する場合について更に例示する。本開示の実施形態によれば、要求および応答通信において、SMB2データーは、SMB2データーをSMBダイレクト・データー転送パケット338のデーター・ペイロードとしてカプセル化することによって、クライアント102とサーバー106との間で作られたSMBダイレクト接続を介して送信される。要求および応答通信は、例えば、制御チャネル通信、ファイル・メタデーターの交換、または他のプロセスのために使用することができる。図5Aは、本開示の実施形態による、クライアント(1つまたは複数)102とサーバー(1つまたは複数)106との間におけるパケット516/518、530、532、および546の図を示す。図5Bおよび図5Cは、クライアント102の観点から示し、一方図5Dはサーバー106の観点から示す。尚、プロセス500は、クライアントがSMB3データーをサーバー106に、独立してまたはサーバーからの要求に応答して送るときについて説明することは注記してしかるべきである。しかしながら、逆も成り立つことができ、その場合サーバー106が要求に応答し、データーをクライアント102に返送する。つまり、ここに記載するプロセスは、実施形態では、サーバーが要求を送りクレジットを要求する場合にも該当する。更に、本方法は、例えば、複数のクライアント間または複数のサーバー間でも行うことができる。
[0080] 図5Bに移ると、本明細書において開示する実施形態にしたがって、SMB2を使用してRDMAによってデーターを交換する動作ステップ例500Bが示されている。開始動作502が開始され、プロセス500Bは先に進んで、クライアント102がRDMA接続504を作る。RDMA接続を作ることについては、本開示の実施形態にしたがって、図4Aから図4Cに関して説明することができる。一実施形態では、SMBダイレクト・クライアント214aが様々な接続プロパティを設定する。これには、MaxSendSIze設定を、MaxReceiveSizeフィールド312bに設定し、接続のReceiveSize設定をPreferredSendSizeフィールド310bに設定し、そして 設定226における接続のMaxOutboundFragmentedMessageSize設定を、MaxReceiveSizeフィールド312bに等しく設定することを含む。このように、クライアント102は、実施形態にしたがって、サーバー106に送ることができるパケットのサイズを決定した。
[0081] 図5Bに戻り、SMBダイレクト・クライアント214aは、実施形態にしたがって、SMB2メッセージをサーバー106に移送するために必要となるSMBダイレクト・データー転送パケットの数を決定することができる。この決定を行うために、SMBダイレクト・クライアント214aは、最初に、ネゴシエーションの間に設定されたMaxSendSize(Rで示す)を引き出すことができる。次に、SMBダイレクト・クライアント214aは、送られるSMB2プロトコル・メッセージ(1つまたは複数)のサイズを決定することができる。実施形態では、この値を「S」として設定する。また、SMBダイレクト・クライアント214aは、SMBダイレクト・データー転送パケット338のヘッダーおよびSMBダイレクト・データー転送パケット338のペイロードが8バイト整列境界から始まるようにするためのパディング(例えば、DataOffset328等)によって消費されるバイト数(実施形態ではPで示す)を決定する。実施形態では、SMBダイレクト・クライアント214aは、次に、Sが(R−P)以下であるか否か判定を行い、そうである場合、実施形態によれば、Sを(R−P)で除算することによって、パケット数を決定することができる。
[0082] 次いで、プロセス500Bは先に進んで、SMBダイレクト・クライアント214aによって、断片化(fragmentation)が使用されるか否か判断する(510)。一実施形態では、断片化が使用されるのは、SMB2プロトコル・メッセージが1つのSMBダイレクト・データー転送パケット338に「収まらない」ときである。言い換えると、Sが(R−P)よりも大きいか?となる。断片化が使用されない場合、プロセス500BはNOに進んで、1つのSMBダイレクト・データー転送パケット518Bを送る。一方、断片化が使用される場合、プロセス500BはYESに進み、送信バッファー・バイト512を初期化する。
[0083] ステップ518に戻り、実施形態によれば、SMB2プロトコル・メッセージを断片化せずに送信することもできる。パケットを送信するために使用されるメモリー・バッファー222aの一部が初期化される。実施形態では、最初のPバイトは、SMBダイレクト・データー転送パケット338についてのヘッダー情報を設定するため、そしてSMB2ペイロードが確実に8バイトに整列されるためにゼロのパディング・バイトを追加するために初期化される。つまり、実施形態によれば、バッファーにおいて、DataOffsetフィールド328がPに設定され、DataLengthフィールドがSに設定され、RemainingDataLengthフィールド326がゼロ(0)に設定される。クレジットについての情報、またはその要求が、CreditsRequestedフィールド308cまたはCreditsGrantedフィールド320bに格納される。つまり、クライアント102はSMBダイレクト・データー転送パケット338においてより多くのクレジットを要求または付与することができる。実施形態では、SMBダイレクト・データー転送パケットの送信側は、CreditsRequestedフィールドを少なくとも1に設定しなければならない。次のSバイトはメモリー・バッファー222aにおいて初期化され、SMB2プロトコル・メッセージがSMB2データー・フィールド332に格納される。SMBダイレクト・データー転送パケット338が組み立てられた後、SMBダイレクト・クライアント214aは、RDMA接続を介してサーバー106に送るために、パケットをRDMAインターフェース216aに送る(518B)。次いで、プロセス500Bはページ・コネクタB422を通りEND動作548Cに進み、プロセス500Bは終了する。
[0084] ステップ512に戻り、実施形態によれば、Sが(R−P)よりも大きい場合、SMB2プロトコル・メッセージは2つ以上の部分に分割される。これらの部分は、次に、一連のRDMA送信動作において順次送られる。送信動作の各々は、SMB2プロトコル・メッセージの一部(断片と呼ぶ)を伝える。SMB2プロトコル・メッセージを断片に分割するために、第1ペイロードのサイズをXに設定する。これは(R−P)以下である。Xは、一実施形態によれば、少なくとも第1RDMA送信動作によって送られるSMB2プロトコル・メッセージのバイト数を表す。ステップ518Bと同様、パケットを送信するために使用されるメモリー・バッファー222aの一部が初期化される。実施形態では、最初のPバイトが、SMBダイレクト・データー転送パケット338についてのヘッダー情報およびパディング・バイトを設定するために初期化される。次に、DataOffsetフィールド328がPに設定され、DataLengthフィールド330がXに設定され、RemainingDataLengthフィールド326が(S−X)に設定される(514)。実施形態では、RemainingDataLengthフィールド326は、SMB2プロトコル・メッセージの内送信されずに残っているバイト数を示す。実施形態では、SMB2プロトコル・メッセージの最後の断片が送信されると、(S−X)はゼロ(0)になる。最後のパケットにおいて、RemainingDataLengthフィールド426がゼロに設定され、SMBダイレクト・データー転送パケット338がSMB2プロトコル・メッセージの最後の断片を伝えることを示す。クレジットについての情報、またはその要求が、CreditsRequestedフィールド308cまたはCreditsGrantedフィールド320bに格納される。つまり、実施形態では、クライアント102はSMBダイレクト・データー転送パケット338においてより多くのクレジットを要求または付与することができる。次いで、メモリー・バッファー222aの次のXバイトが初期化される。次いで、本明細書において開示する実施形態によれば、SMB2プロトコル・メッセージの断片をSMB2データー・フィールド332に格納することができる。
[0085] SMB2プロトコル・メッセージの最初の未送信XバイトでSMBダイレクト・データー転送パケット338を組み立てた後、SMBダイレクト・データー転送パケット338がサーバーに送られる(516B)。実施形態では、SMBダイレクト・クライアント214aは、RDMA接続を介してサーバー106に送るために、SMBダイレクト・データー転送パケット338をRDMAインターフェース216aに送る(516B)。次いで、プロセス500Bはページ・コネクタA520を介して任意ステップ526に進み、SMBダイレクト・クライアント214aは、他の断片を含む他のSMBダイレクト・データー転送パケット338を送らなければならないか否か判断する。つまり、実施形態では、SMBダイレクト・クライアント214aは、最後のパケットを送った後、(S−X)が0であるか否か判定を行う。(S−X)が0以下である場合、最後の断片が最後のSMBダイレクト・データー転送パケット338において送られたことを意味し、プロセス500BはNOからEND動作548Cに進み、プロセス500Bは終了する。しかしながら、(S−X)が0よりも大きい場合、プロセス500BはYESに進み、十分な送出クレジットが存在するか否か判断する(528)。実施形態では、ステップ526は任意であってもよい(図示のように)。何故なら、断片を移送するSMBダイレクト・データー転送パケット338はメモリー・バッファー222aに予め結集されて (pre-stage) おり、順次送ることができるからである。バッファー222aが空である場合、プロセス500Bは終了する。この場合、次のパケットを送らなければならないか判断する必要がなくなる。尚、実施形態によれば、SMB2プロトコル・メッセージが断片化されるとき、断片を伝えるRDMA送信動作は順次そして単調に送られ、断片化されたSMB2プロトコル・メッセージに関係ない他のRDMA送信動作によって中断させらずに済むことは注記してしかるべきである。一実施形態によれば、受信側におけるRDMA移送順序は、受信側ピアが元のメッセージを再現できるように、断片のシーケンス処理を保存する。
[0086] ステップ528に戻って、SMBダイレクト・クライアント214aは、次の断片を送るための十分な送出クレジットがあるか否か判断する(528)。本質的に、SMBダイレクト・クライアント214aは、1つの送出クレジットが残っているか否か判断する。送出クレジットがある場合、プロセス500BはYESから、ページ・コネクタC524を介してステップ512に進む。実施形態では、RDMA移送は、送信側がパケットを送ることができる前に、受信側によってプリポストされた受信バッファーを有する。この規則は、受信側が受信をプリポストする前に送信側がパケットを送ろうとしないことを確保するために、送信側と受信側との間で調整が必要となる。SMBダイレクトは、本開示の実施形態によれば、所望の調整を達成するために、送信Creditsのシステムを使用する。
[0087] 一実施形態では、サーバー106またはクライアント102から付与される送出クレジットは、サーバー106またはクライアントにおいてプリポストされた1つの受信を表す。ピアは、1つの送出クレジットで1回のRDMA送信動作を実行する資格がある。また、クライアント102は、CreditsRequestedフィールド308cを設定することによってまたは別の送出クレジット要求(一実施形態によれば、断片化SMB2データーを移送する1組のSMBダイレクト・データー転送パケット338の間には送られない)の形態で、クライアントがその作業負荷を効率的サポートするために必要な送出クレジット数についての情報をサーバー106に提供する。送出クレジットは、SMBダイレクト・データー転送パケット338のCreditsGrantedフィールド320bにおいて付与される。つまり、SMBダイレクト・クライアント214aは、CreditsRequestフィールド308cにおける値を更に大きな数に設定することによって(恐らくは全ての今後の断片化パケットをカバーする)、より多くの送出クレジットを要求することができる。次いで、SMBダイレクト・クライアント214aは、サーバー106から送られるSMBダイレクト・データー転送パケット338を待つことによって、送出クレジットを受信するのを待てばよい(530C)。一実施形態によれば、このパケット338はデーターを有さないが、SMBダイレクト・データー転送パケット338のCreditsGrantedフィールド320bに送出クレジットを含む。SMBダイレクト・クライアント214aは、クエリー542Cにおいて、タイマー224aにおいてSendCreditsGrantedTimerを設定することによって、クレジットが受信されたか否か判断することができる。クレジットが付与される前にSendCreditsGrantedTimerが満了した場合(547)、プロセス500BはYESからページ・コネクタC524を介してステップ523に進む。一実施形態によれば、タイマーが設定されない場合および/またはタイマーが満了していない場合(547)、プロセス500BはNOに進み、送信動作を行わないのではなく、即ち、終了せず、代わりに送出クレジットを受信するのを待ち続ける(530C)。
[0088] 図5Dおよびプロセス500Dの開始動作502Dに移り、サーバー106において、SMBダイレクト・データー転送パケット338が受信される(516D)。一実施形態では、RDMAインターフェース216bがSMBダイレクト・データー転送パケット338を受信し、それをSMBダイレクト・サーバー214bに送る。最初に、SMBダイレクト・サーバー214bはヘッダー情報を読み取る。SMBダイレクト・サーバー214bは、クエリー536に進み、RemainingDataLengthフィールド326がゼロ以外の何かであるか否か判断する。RemainingDataLengthフィールド326がゼロである場合、SMBダイレクト・データー転送パケット338は唯一のパケットとなり、プロセス500DはNOに進み、SMBパケット・データー554を処理する。ここで、一実施形態では、SMBダイレクト・サーバー214bは、パケット・データーを処理し、SMB2プロトコル・メッセージをSMB2サーバー212bに送る。RemainingDataLengthフィールド326がゼロ以外の何かである場合、プロセス500DはYESに進み、再度組み立てバッファーを割り当てる(538)。
[0089] ステップ538において、SMBダイレクト・サーバー214bは、一実施形態では、バッファー222bにおいてSMB2プロトコル・メッセージを再度組み立てるために、メモリー・バッファー222bの一部を割り当てる。つまり、SMBダイレクト・サーバー214bは、現在のSMBダイレクト・データー転送パケット338および次に来るSMBダイレクト・データー転送パケット338におけるデーターを受け入れるために、メモリー・バッファー222bにおいて十分なブロックを割り当てることができる。これは、DataLengthフィールド330の値およびRemainingDataLengthフィールド326の値に基づく。本開示の実施形態によれば、SMBダイレクト・サーバー214bは、次いで、SMB2データーをSMB2データー・フィールド332から読み出し、このデーターを、割り当てられたバッファー540にコピーすることができる。
[0090] 次に、一実施形態では、SMBダイレクト・サーバー214bが次のSMBダイレクト・データー転送パケット338を待ち、そして受信する(546D)ことに備える。一実施形態では、SMB2データー・フィールド332におけるデーターは、メモリー・バッファー222bの次の部分にもコピーされる。代替実施形態では、SMBダイレクト・サーバー214bは、任意に、この次のSMBダイレクト・データー転送パケット338が断片化データー542を含む最後のパケットであるか否か判断することができる。この判断を行うために、SMBダイレクト・サーバー214bは、RemainingDataLengthフィールド326がゼロであるか否かチェックする。RemainingDataLengthフィール326がゼロである場合、SMBダイレクト・サーバー214bは、これ以上のパケットが受信されないことを理解し、プロセス500DはYESに進み、メモリー・バッファー222bからのSMB2プロトコル・メッセージ544を処理する。次いで、プロセス500DはEND動作において終了する(548D)。一方、RemainingDataLengthフィールド326がゼロ以外の何かである場合、一実施形態によれば、SMBダイレクト・サーバー214bは、他のパケット(1つまたは複数)が受信されることを理解し、プロセス500DはNOに進み、次のSMBダイレクト・データー転送パケット338を受信する(546D)。
[0091] 図2Aおよび図2Bに示した種々のソフトウェア機能モジュールの相互作用について、図6に示す動作ステップ600において、本明細書に開示する一実施形態にしたがってRDMAダイレクト・データー転送を実行することについて、更に例示する。図6は、本開示の実施形態による、クライアント102とサーバー106との間におけるデーター転送の図を示す。
[0092] 図6に示すように、プロセス600は開始動作602において開始され、SMB2クライアント208がSMB2リード/ライト要求340を作る(604)。アプリケーション220は、データーをサーバー106に転送すること、またはサーバー106から読み出すことを要求することができる。このデーター転送は、本開示の実施形態によれば、SMB2サーバー106が一意に実際のRDMA要求を実行するように、RDMAダイレクト・データー転送を採用することを、SMB2クライアント208によって指示することができる。この転送を始めるために、SMB2クライアント208は、エンコードされていないアプリケーション・データーを供給または受信するために、ターゲット・メモリー・バッファーを登録し、次いでSMBリード/ライト・コマンドを生成する。このコマンドはRDMAによって送られ、導かれる。このコマンドは、SMB2リード/ライト要求340に含まれて、SMBダイレクト・クライアント214aに送られてもよい。SMBダイレクト・クライアント214aは、このSMB2リード/ライト要求340をSMBダイレクト・データー転送パケットにカプセル化する(606)。実施形態では、SMB2リード/ライト要求340は、SMBダイレクト・データー転送パケットのSMB2データー・フィールド332に格納される。SMBダイレクト・データー転送パケットは、次いで、RDMAインターフェース216を介してサーバー106に送ることができる(608)。一実施形態では、サーバー106はSMBダイレクト・データー転送パケットを受信し、SMB2データー・フィールド332からSMB2リード/ライト要求340を読み出す。次いで、SMBダイレクト・サーバー214bは、SMB2リード/ライト要求340からデーターを読み出すことができる。このデーターには、チャネル342、ChannelInfoOffset346、およびChannelInfoLength348が含まれる。この情報は、SMBダイレクト・サーバー214bを、RDMAチャネル記述子352における誘導情報610に導くことができる。この誘導情報から、SMBダイレクト・サーバー214bは、エンコードされていないアプリケーション・データーをクライアント102のバッファーにおけるメモリー位置に送るまたはこのメモリー位置から引き出すことによって、ダイレクト・データー転送を開始することができる。次いで、プロセス600はEND動作614において終了する。
[0093] 図4Aから図4C、図5Aから図5D、および図6は、それぞれ、本明細書において開示する実施形態にしたがって、RDMAによってファイル・アクセス・プロトコルを使用して通信をネゴシエートし直し、RDMAによってファイル・アクセス・プロトコルを使用してデーターを交換するときの動作特性例を示す。実施形態では、図示する動作ステップを他のステップに組み合わせること、および/または並び替えることもできる。更に、例えば、もっと少ないステップまたはもっと多いステップを使用することもできる。
[0094] 総じて、クレジットは本実施形態の利点である。送出クレジットは、ピアにおいて着信データーを受信するためにプリポストされたバッファーを表す。したがって、送出クレジットは、ピアがデーターを送信するために使用することができるように、ピアに引き渡された限定受信側リソース(メモリー、メモリー領域等)を表す。RDMAの性質のため、一旦ポストされた受信は、実施形態では、取り消すことができない。解放すべき受信に関連するリソースについて、このリソースは、次に来る送信(incoming send)にサービスするために使用される。これは、受信側のピアが低リソース(run low on resource)で動作し始め、未処理の受信専用に既に割り当てた(dedicate)リソースの一部を取り戻したい場合に、実施形態において問題を生ずる可能性がある。本明細書において開示する実施形態によれば受信を取り消すことができないので、これらのリソースを取り戻すには、ピアの協同に頼ることになる。
[0095] SMBダイレクトにおけるこの問題に対する解決策は、一実施形態によれば、送出クレジット廃止と呼ばれる。ピアに送信されるSMBダイレクト・データー転送パケットは、ピアに付与された追加の送出クレジット量を指定する、CreditsGrantedフィールドを有する。代替実施形態では、SMBダイレクト・データー転送パケット338においてCreditRevocationフラグ(図示せず)をセットすることによって、CreditsGrantedフィールド320bの意味が、ピアが保持できる送出クレジット数に変化する。例えば、CreditRevocationフラグがセットされ、CreditsGrantedフィールド320bの値が10である場合、10は受信側が保持できるクレジット数になる。受信側が現在10個よりも多い送出クレジットを保持している場合、受信側が10個以下の送出クレジットを有することになるように、取り消された送出クレジットを使い果たすために、受信側は一連のRDMA送信動作を実行する。取り消された送出クレジットを使い果たすために実行される送信動作は、空のSMBダイレクト・データー転送パケット338(データー・ペイロードがないパケット)を送ることを含むことができる。着信した空のSMBダイレクト・データー転送パケット338を受信すると、一実施形態によれば、送出クレジットを取り消したピアは、これらのリソースを解放し、これらを、相応しいと思われるように再利用することができる。
[0096] 送出クレジットは、2つのピアがそれらの送信および受信動作を同期させることを可能にするが、実施形態では、これらのピアは送出クレジットのデッドロックを回避しようとする。ピアYがピアXからの1つの送出クレジットを有し、ピアXがピアYからの1つの送出クレジットを有するというシナリオを想像する。このシナリオでは、各ピアには任意の時点においてそのピアへの1つの送信を実行する資格がある。XおよびY双方が、プロセスにおいてそれらの1つの送出クレジットを使用して同時に送信動作を実行したが、双方のピアによって送信されたSMBダイレクト・データー転送パケット338は追加の送出クレジットをピアに付与しないと想像する。結果的に生ずる状態を、送出クレジット・デッドロックと呼ぶ。XおよびY双方はそれらの最後の送出クレジットを使い終えている。追加のパケットをピアに送ることができるためには、各ピアは追加の送出クレジットを必要とする。しかしながら、送出クレジットはSMBダイレクト・データー転送パケット338によって付与され、いずれのピアもこれ以上の送信動作を実行することが全くできない。その結果、いずれのピアも追加のパケットを全く送信することができず、これらが他の送出クレジットを取得できるメカニズムはない。したがって、デッドロックが発生したことになる。
[0097] この問題に対する解決策は、本開示の実施形態によれば、単なる規則である。SMBダイレクト・ピアがその最後の送出クレジットを使用するとき、一実施形態によれば、送られているSMBダイレクト・データー転送パケット338は少なくとも1つの追加の送出クレジットをピアに付与する。双方のピアがこの規則に従えば、デッドロックは発生しない。何故なら、各ピアは常に他方に対して追加の送出クレジットの付与で応答できるからである。
[0098] 最後に、図7は本明細書において開示した実施形態を実現することができる計算システム例700を示す。例えば、クライアント/アプリケーション・サーバー102またはファイル・サーバー106のような、コンピューター・システム700は、本明細書において示したようなメッセージ・データーを交換するために少なくとも1つのプロセッサー702を有し、本明細書において開示した実施形態にしたがって図示されている。システム700は、メモリー704を有する。メモリー704は、例えば、システム・メモリー、揮発性メモリー、および不揮発性メモリーを含む。その最も基本的な構成では、計算システム700は、破線706によって図7において示される。加えて、システム700は追加のストレージ(リムーバブルおよび/または非リムーバブル)も含むことができる。追加のストレージは、磁気または光ディスクあるいはテープを含むが、これらに限定されるのではない。このような追加のストレージは、図7ではリムーバブル・ストレージ708および非リムーバブル・ストレージ710によって例示されている。
[0099] 本明細書において使用する場合、コンピューター読み取り可能媒体という用語は、コンピューター記憶媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含むことができ、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現される。システム・メモリー704、リムーバブル・ストレージ708、および非リムーバブル・ストレージ710は、全てコンピューター記憶媒体の例(即ち、メモリー・ストレージ)である。コンピューター記憶媒体は、限定ではなく、RAM、ROM、電子的消去可能リード・オンリー・メモリー(EEPROM)、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは情報を格納するために使用することができ計算システム700によってアクセスすることができる任意の他の媒体を含むことができる。任意のこのようなコンピューター記憶媒体は、システム700の一部であってもよい。図7における例示は、本開示の範囲を限定することを全く意図していない。
[00100] また、本明細書において使用する場合、コンピューター読み取り可能媒体という用語は通信媒体も含むことができる。通信媒体は、搬送波のような変調データー信号または他の移送メカニズムにおけるコンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターによって具体化することができ、任意の情報配信媒体を含む。「変調データー信号」という用語は、この信号内に情報をエンコードするようなやり方でその1つ以上の特性が設定または変更されている信号を記述することができる。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、無線周波(RF)、赤外線、および他のワイヤレス媒体のようなワイヤレス媒体とを含むことができる。
[00101] また、システム700はデバイスが互いに通信することを可能にする通信接続(1つまたは複数)716も内蔵することができる。加えて、システム700は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等のような入力デバイス(1つまたは複数)も有することができる。ディスプレイ、スピーカー、プリンター等のような出力デバイス(1つまたは複数)712も含むことができる。これらのデバイスは全て当技術分野では周知であり、ここで延々と説明する必要はない。以上で述べたデバイスは例であり、他のものを使用することもできる。
[00102] 以上、本開示の実施形態について、先の図を参照して説明したが、これらの実施形態に対して、当業者には容易に想起され、添付した特許請求の範囲において定められる本開示の範囲および主旨に含まれる複数の変更を行うことができることは認められてしかるべきである。実際、本開示の目的のために実施形態について説明したが、本開示の範囲に該当する種々の変化および変更が行われてもよい。
[00103] 同様に、本開示では、構造的特徴、方法論的動作、およびこのような動作を含むコンピューター読み取り可能媒体に特定の文言を使用したが、添付した特許請求の範囲に定められる主題は、本明細書において説明した具体的な構造、動作、特徴、または媒体には必ずしも限定されないことは言うまでもない。例えば、API、ルーチン等の名称というような、具体的な名称または命名規則を、実施形態の様相(aspect)を説明するときに使用したが、本開示の主旨および範囲内に含まれる多数の変更は、このような名称および/または命名規則に対しても行うことができる。以上で記載した具体的な構造、特徴、動作、名称、命名規則、および/または媒体は、特許請求の範囲を実現する形態例として開示されたのである。実施形態の様相は、複数のクライアント/アプリケーション・サーバー、複数のファイル・サーバー、複数のネットワーク、複数の接続ピア等を見込んでいる。また、他の実施形態では、1つのサーバーを有する1つのクライアント・コンピューターおよび1つのネットワークが使用された。当業者には、本開示の範囲および主旨に該当する他の実施形態または改良も認められよう。したがって、これらの具体的な構造、動作、または媒体は、本開示を実現する実施形態例として開示されたものとする。本開示は、添付する特許請求の範囲によって定められるものとする。

Claims (15)

  1. コンピューター実行可能命令を格納するコンピューター読み取り可能記憶媒体であって、プロセッサーによって前記命令を実行すると、リモート・ダイレクト・メモリー・アクセス(RDMA)によるデーター動作を使用してデーターを交換する方法を実行し、前記方法が、
    サーバーとの接続を作るステップと、
    前記サーバーとの接続をネゴシエートするステップであって、前記ネゴシエーションが、前記接続において前記サーバーが受信する最大バイト数を決める、ステップと、
    前記サーバーへの接続に関連するデーターを送るパケット数を決定するステップと、
    前記データーの断片化を使用するか否か判断するステップと、
    前記データーの断片化を使用しない場合、第1プロトコル・パケットを前記データーと共に前記サーバーに送るステップと、
    前記データーの断片化を使用する場合、送信バッファーにおける最初のバイトを、前記第1プロトコル・パケットにおけるデーターとして送るように初期化するステップと、
    前記第1プロトコル・パケットにおいてDataLengthフィールドおよびRemainingDataLengthフィールドを設定するステップと、
    前記第1プロトコル・パケットを前記サーバーに送るステップと、
    少なくとも1つの第2プロトコル・パケットに対して、
    前記送信バッファー内にあるバイトを、少なくとも第2プロトコル・パケットにおいてデーターとして送るように初期化し、
    前記少なくとも1つの第2プロトコル・パケットにおける前記RemainingDataLengthフィールドを設定し、
    前記少なくとも1つの第2プロトコル・パケットを前記サーバーに送る、
    ことを含む命令を繰り返すステップと、
    を含む、コンピューター読み取り可能記憶媒体。
  2. 請求項1記載のコンピューター読み取り可能記憶媒体において、断片化を使用するか否か判断する前記ステップが、前記データーを送るためのパケットの数が1よりも大きいか否か判断するステップを含む、コンピューター読み取り可能記憶媒体。
  3. 請求項2記載のコンピューター読み取り可能記憶媒体において、前記接続に関連するデーターを前記サーバーに送るためのパケット数を決定する前記ステップが、前記サーバーが前記接続において受信する最大バイト数が、送られるデーターのバイト数未満であるか否か判断するステップを含む、コンピューター読み取り可能記憶媒体。
  4. 請求項1記載のコンピューター読み取り可能記憶媒体において、前記サーバーとの接続をネゴシエートするステップが、
    受信をプリポストするステップと、
    プロトコル・ネゴシエート要求を作るステップと、
    前記プロトコル・ネゴシエート要求を前記サーバーに送るステップと、
    ネゴシエート満了タイマーを設定するステップと、
    前記ネゴシエート満了タイマーが満了する前に、前記プロトコル・ネゴシエート要求に対する応答が受信されたか否か判断するステップと、
    前記ネゴシエート満了タイマーが満了する前に 前記プロトコル・ネゴシエート要求に対する応答が受信されない場合、前記プロトコル・ネゴシエート応答を再送するステップと、
    前記ネゴシエート満了タイマーが満了する前に前記プロトコル・ネゴシエートに対する応答が受信された場合、プロトコル・ネゴシエート応答を受信するステップと、
    前記プロトコル・ネゴシエート応答の有効性を判断するステップと、
    前記プロトコル・ネゴシエート応答を処理するステップであって、前記プロトコル・ネゴシエート応答が、前記プロトコル・パケットを送るための少なくとも1つのクレジットを前記送信側に供給する、ステップと、
    を含む、コンピューター読み取り可能記憶媒体。
  5. 請求項4記載のコンピューター読み取り可能記憶媒体であって、更に、
    前記少なくとも1つの第2プロトコル・パケットを送るための十分なクレジットが存在する場合、前記少なくとも1つの第2プロトコル・パケットを送るステップと、
    前記少なくとも1つの第2プロトコル・パケットを送るための十分なクレジットが存在しない場合、少なくとも1つの追加クレジットを前記サーバーに要求するステップと、
    十分なクレジットが受信されたか否か判断するステップと、
    十分なクレジットが受信されない場合、前記接続を終了するステップと、
    十分なクレジットが受信された場合、前記少なくとも1つの第2プロトコル・パケットを送るステップと、
    を含む、コンピューター読み取り可能記憶媒体。
  6. リモート・ダイレクト・メモリー・アクセス(RDMA)によってサーバー・メッセージ・ブロック(SMB/SMB2)を使用してデーターを交換するように構成されたシステムであって、
    RDMAメッセージによってデーターを転送するように動作可能なRDMAネットワーク・インターフェース・カード(RNIC)と、
    プロセッサーによって実行可能なコンピューター・プログラム命令を格納するように動作可能なメモリーと、
    を含み、前記プロセッサーが、前記RNICおよび前記メモリーと通信して、カーネルを実行するように動作可能であり、前記カーネルが、
    第1プロトコル・クライアントを含み、この第1プロトコル・クライアントが、
    1つ以上のRDMAメッセージにおいてSMBデーターを伝達し、
    クレジットを交換するために受信バッファーを作る、
    ように動作可能であり、前記クレジットが、送信側が受信側に送ることができるメッセージ数を決定する、システム。
  7. 請求項6記載のシステムであって、更に、前記第1プロトコル・クライアントと通信可能なRDMAインターフェースを含み、前記RDMAインターフェースが、前記RNICを介してRDMA接続を開くように動作可能である、システム。
  8. 請求項7記載のシステムであって、更に、
    第2プロトコル・クライアントを含み、この第2プロトコル・クライアントが、
    RDMAダイレクト・データー転送を実行することをサーバーに命令するためにSMB2リード/ライト要求を作り、
    前記SMB2リード/ライト要求を前記第1プロトコル・クライアントに送るように動作可能であり、
    前記第1プロトコル・クライアントが、更に、
    前記SMB2リード/ライト要求を第1プロトコル・データー転送パケットにカプセル化し、
    前記第1プロトコル・データー転送パケットを前記サーバーに送るように動作可能である、システム。
  9. 請求項8記載のシステムにおいて、前記SMB2リード/ライト要求が、RDMAチャネル記述子情報を特定するフィールドを含み、前記第1プロトコルが前記SMBダイレクト・プロトコルである、システム。
  10. 請求項9記載のシステムにおいて、前記RDMAチャネル記述子情報が、誘導情報を含み、前記サーバーが、前記誘導情報を決定し、前記誘導情報によって特定されたメモリー・アドレスに対して、エンコードされていないアプリケーション・データーのRDMAライトまたはRDMAリードを実行する、システム。
  11. リモート・ダイレクト・メモリー・アクセス(RDMA)によってサーバー・メッセージ・ブロック(SMB/SMB2)を使用してデーターを交換する接続を作るためのコンピューター実装方法であって、
    第1SMBダイレクト・データー転送パケットを受信するステップであって、前記第1SMBダイレクト・データー転送パケットが、RemainingDataLengthフィールドおよびSMB2データーを含む、ステップと、
    前記RemainingDataLengthフィールドが非ゼロであるか否か判断するステップと、
    RemainingDataLengthフィールド前記がゼロである場合、前記第1SMBダイレクト・データー転送パケットにおける前記SMB2データーを処理するステップと、
    前記RemainingDataLengthフィールドが非ゼロである場合、再組み立てバッファーを前記接続に割り当てるステップと、
    前記SMB2データーを前記第1SMBダイレクト・データー転送パケットから前記再組み立てバッファーにコピーするステップと、
    少なくとも1つの他のSMBダイレクト・データー転送パケットを受信するステップと、
    前記SMB2データーを、前記少なくとも1つの他のSMBダイレクト・データー転送パケットから前記再組み立てバッファーにコピーするステップと、
    を含む、コンピューター実装方法。
  12. 請求項11記載の方法において、前記SMBダイレクト・データー転送パケットが、CreditsRequested、CreditsGranted、DataOffset、およびDataLengthから成るグループからの1つ以上のフィールドを含む、方法。
  13. 請求項12記載の方法において、前記CreditsGrantedフィールドが、前記SMBダイレクト・データー転送パケットの送信側にどれだけのクレジットが供給されたかを示す、方法。
  14. 請求項11記載の方法において、クレジットが、前記送信側によって送ることができるRDMAメッセージの数に対する値である、方法。
  15. 請求項11記載の方法であって、更に、
    前記少なくとも1つの他のSMBダイレクト・データー転送パケットが最後のパケットであるか否か判断するステップと、
    前記少なくとも1つの他のSMBダイレクト・データー転送パケットが最後のパケットである場合、前記再組み立てバッファーにおける前記SMB2データーを処理するステップと、
    前記少なくとも1つの他のSMBダイレクト・データー転送パケットが最後のパケットではない場合、少なくとも1つの他のSMBダイレクト・データー転送パケットを受信し、前記少なくとも1つの他のSMBダイレクト・データー転送パケットからの前記SMB2データーを、前記再組み立てバッファーにコピーするステップを繰り返すステップと、
    を含む、方法。
JP2014518588A 2011-06-29 2012-06-06 リモート・ダイレクト・メモリー・アクセスによる任意サイズの移送動作 Active JP6047158B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/172,757 2011-06-29
US13/172,757 US9331955B2 (en) 2011-06-29 2011-06-29 Transporting operations of arbitrary size over remote direct memory access
PCT/US2012/041049 WO2013002980A2 (en) 2011-06-29 2012-06-06 Transporting operations of arbitrary size over remote direct memory access

Publications (3)

Publication Number Publication Date
JP2014528107A true JP2014528107A (ja) 2014-10-23
JP2014528107A5 JP2014528107A5 (ja) 2015-07-23
JP6047158B2 JP6047158B2 (ja) 2016-12-21

Family

ID=47391756

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014518588A Active JP6047158B2 (ja) 2011-06-29 2012-06-06 リモート・ダイレクト・メモリー・アクセスによる任意サイズの移送動作

Country Status (6)

Country Link
US (2) US9331955B2 (ja)
EP (1) EP2737685A4 (ja)
JP (1) JP6047158B2 (ja)
KR (1) KR102047142B1 (ja)
CN (2) CN106411767B (ja)
WO (1) WO2013002980A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019175445A (ja) * 2018-03-26 2019-10-10 三星電子株式会社Samsung Electronics Co.,Ltd. 格納システム及びそのホスト格納ドライブ並びにデータ格納方法

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332526B2 (en) 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
US9473596B2 (en) * 2011-09-27 2016-10-18 International Business Machines Corporation Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US9495324B2 (en) * 2012-03-30 2016-11-15 Intel Corporation Efficient distribution of subnet administration data over an RDMA network
US20140280669A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
US20140337456A1 (en) * 2013-05-07 2014-11-13 Dell Products L.P. Systems and methods for enabling rdma between diverse endpoints
US9641614B2 (en) 2013-05-29 2017-05-02 Microsoft Technology Licensing, Llc Distributed storage defense in a cluster
US10404520B2 (en) 2013-05-29 2019-09-03 Microsoft Technology Licensing, Llc Efficient programmatic memory access over network file access protocols
US10223326B2 (en) * 2013-07-31 2019-03-05 Oracle International Corporation Direct access persistent memory shared storage
US10277678B2 (en) * 2014-05-14 2019-04-30 Hitachi Data Systems Engineering UK Limited Method and an apparatus, and related computer-program products, for managing access request to one or more file systems
US9584429B2 (en) * 2014-07-21 2017-02-28 Mellanox Technologies Ltd. Credit based flow control for long-haul links
CN105450588B (zh) * 2014-07-31 2019-02-12 华为技术有限公司 一种基于rdma的数据传输方法及rdma网卡
US9582463B2 (en) * 2014-12-09 2017-02-28 Intel Corporation Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US10469581B2 (en) 2015-01-05 2019-11-05 International Business Machines Corporation File storage protocols header transformation in RDMA operations
US10073809B2 (en) * 2015-04-27 2018-09-11 Intel Corporation Technologies for scalable remotely accessible memory segments
WO2016187813A1 (zh) * 2015-05-26 2016-12-01 华为技术有限公司 一种光电混合网络的数据传输方法及装置
US20170034267A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Methods for transferring data in a storage cluster and devices thereof
CN105141603B (zh) * 2015-08-18 2018-10-19 北京百度网讯科技有限公司 通信数据传输方法及系统
CN105446936B (zh) * 2015-11-16 2018-07-03 上海交通大学 基于htm和单向rdma操作的分布式哈希表方法
CN105938446B (zh) * 2016-01-12 2019-01-25 上海交通大学 基于rdma和硬件事务性内存支持的数据复制容错方法
WO2017131749A1 (en) 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Remote direct memory access
CN107533537B (zh) * 2016-01-29 2021-02-26 慧与发展有限责任合伙企业 存储系统、用于存储的方法和非暂时性计算机可读介质
CN107179878B (zh) * 2016-03-11 2021-03-19 伊姆西Ip控股有限责任公司 基于应用优化的数据存储的方法和装置
US11190454B2 (en) * 2016-03-23 2021-11-30 Purdue Research Foundation Receiver-directed computer network congestion control system
US10169238B2 (en) 2016-09-30 2019-01-01 International Business Machines Corporation Memory access for exactly-once messaging
US9794366B1 (en) * 2016-10-19 2017-10-17 Red Hat, Inc. Persistent-memory management
CN106411922A (zh) * 2016-10-31 2017-02-15 四川长虹电器股份有限公司 一种安全的身份认证方法及系统
US10198378B2 (en) * 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Faster data transfer with simultaneous alternative remote direct memory access communications
US10997132B2 (en) 2017-02-07 2021-05-04 Oracle International Corporation Systems and methods for live data migration with automatic redirection
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10732836B2 (en) * 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
CN109756464B (zh) * 2017-11-07 2021-12-03 阿里巴巴集团控股有限公司 一种通信方法及服务器、客户端
US10911547B2 (en) * 2017-12-28 2021-02-02 Dell Products L.P. Systems and methods for SMB monitor dialect
CN108319428A (zh) * 2017-12-29 2018-07-24 杭州华为数字技术有限公司 一种数据读取的方法及装置
US11394776B2 (en) * 2018-06-07 2022-07-19 Tuxera, Inc. Systems and methods for transport layer processing of server message block protocol messages
WO2020005501A1 (en) * 2018-06-29 2020-01-02 R-Stor Inc. System and method for performing fast file transfers
US11019132B2 (en) 2018-06-29 2021-05-25 R-Stor Inc. System and method for performing fast file transfers with dynamic bandwidth provisioning
US11128575B2 (en) * 2018-07-20 2021-09-21 Bank Of America Corporation System for increasing processing efficiency through automated resource field transformation
US11403253B2 (en) 2018-09-13 2022-08-02 Microsoft Technology Licensing, Llc Transport protocol and interface for efficient data transfer over RDMA fabric
US11295205B2 (en) * 2018-09-28 2022-04-05 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization
CN111262798B (zh) * 2018-11-30 2023-03-14 深圳市中兴微电子技术有限公司 一种信息处理方法、设备及计算机存储介质
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
KR20210030073A (ko) * 2019-09-09 2021-03-17 삼성전자주식회사 엣지 컴퓨팅 서비스를 위한 방법 및 장치
CN111400212B (zh) * 2019-09-29 2022-02-08 杭州海康威视系统技术有限公司 一种基于远程直接数据存取的传输方法、设备
CN111277988B (zh) * 2020-03-17 2023-06-23 北京百瑞互联技术有限公司 一种提高微信小程序蓝牙传输速度的方法
US20220187992A1 (en) * 2020-12-16 2022-06-16 Kioxia Corporation Systems and methods for data copy offload for storage devices
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
CN113127387A (zh) * 2021-03-12 2021-07-16 山东英信计算机技术有限公司 一种存储器和服务器
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device
CN115328408B (zh) * 2022-10-14 2023-01-03 联想凌拓科技有限公司 用于数据处理的方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006333434A (ja) * 2005-05-25 2006-12-07 Microsoft Corp シーケンス番号によるデータ通信の調整
US20100161855A1 (en) * 2003-12-31 2010-06-24 Microsoft Corporation Lightweight input/output protocol

Family Cites Families (278)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4399504A (en) 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
JPS6019341A (ja) 1983-07-13 1985-01-31 Usac Electronics Ind Co Ltd 回線制御方式
JPS6019341U (ja) 1983-07-19 1985-02-09 ヤンマー農機株式会社 コンバインの脱穀装置
JPS613496U (ja) 1984-06-13 1986-01-10 株式会社東芝 タ−ビンミサイルの防護装置
US4825354A (en) 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
JPS62256165A (ja) 1986-04-30 1987-11-07 Fujitsu Ltd 構造解析デ−タ処理装置
US4736369A (en) 1986-06-13 1988-04-05 International Business Machines Corp. Adaptive session-level pacing
US4780821A (en) 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
JPH076917B2 (ja) 1986-09-01 1995-01-30 富士写真フイルム株式会社 乾式分析方法における検量線の補正方法
US4914570A (en) 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
JPS6361148U (ja) 1986-10-08 1988-04-22
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
JPS63205747A (ja) 1987-02-13 1988-08-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 通信方法及びデータ処理システム
US5202971A (en) 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US4791566A (en) 1987-03-27 1988-12-13 Digital Equipment Corporation Terminal device session management protocol
JPS63256165A (ja) 1987-04-14 1988-10-24 Seiko Epson Corp 嫌気性液体の定量吐出方法
JPS6461148A (en) 1987-08-31 1989-03-08 Nec Corp Flow control system
CA1321994C (en) 1987-10-28 1993-09-07 Reid Von Borstel Acylated uridine and cytidine and uses thereof
US5008853A (en) 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US4891785A (en) 1988-07-08 1990-01-02 Donohoo Theodore J Method for transferring data files between computers in a network response to generalized application program instructions
JPH0821969B2 (ja) 1988-09-13 1996-03-04 日本電気株式会社 伝送制御方法
JPH02101847A (ja) 1988-10-11 1990-04-13 Nec Corp 通信制御方式
US5124909A (en) 1988-10-31 1992-06-23 Hewlett-Packard Company Software program for providing cooperative processing between personal computers and a host computer
JPH02101847U (ja) 1989-01-24 1990-08-14
CA1323448C (en) 1989-02-24 1993-10-19 Terrence C. Miller Method and apparatus for translucent file system
US5109519A (en) 1989-03-28 1992-04-28 Wang Laboratories, Inc. Local computer participating in mail delivery system abstracts from directory of all eligible mail recipients only served by local computer
US5113519A (en) 1989-05-15 1992-05-12 International Business Machines Corporation Maintenance of file attributes in a distributed data processing system
US5560008A (en) 1989-05-15 1996-09-24 International Business Machines Corporation Remote authentication and authorization in a distributed data processing system
US5218696A (en) 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
US5265261A (en) 1989-08-14 1993-11-23 Microsoft Corporation Method and system for network communications using raw mode protocols
US5261051A (en) 1989-08-14 1993-11-09 Microsoft Corporation Method and system for open file caching in a networked computer system
JPH0374745A (ja) 1989-08-15 1991-03-29 Oki Electric Ind Co Ltd データ処理装置
JPH0754462Y2 (ja) 1989-11-10 1995-12-18 株式会社竹中工務店 被連結部材の連結装置
JPH03245939A (ja) 1990-02-20 1991-11-01 Fudoo Kk 工具ホルダー把持装置
JP2575543B2 (ja) 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
US5130986A (en) 1990-04-27 1992-07-14 At&T Bell Laboratories High speed transport protocol with two windows
JPH04172039A (ja) 1990-11-05 1992-06-19 Matsushita Electric Ind Co Ltd パケット通信装置
KR940001700B1 (ko) 1991-05-25 1994-03-05 한국전기통신공사 전전자 교환기의 운용 명령어 수행상태 조회 및 삭제방법
JPH0589048A (ja) 1991-09-25 1993-04-09 Nec Corp コマンド処理方式
JPH05143488A (ja) 1991-11-18 1993-06-11 Nippon Telegr & Teleph Corp <Ntt> 複数コマンドの転送方法
JPH0619771A (ja) 1992-04-20 1994-01-28 Internatl Business Mach Corp <Ibm> 異種のクライアントによる共用ファイルのファイル管理機構
JPH0675890A (ja) 1992-08-26 1994-03-18 Chugoku Nippon Denki Software Kk クライアント・サーバ間の要求データ応答データ授受方式
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5493728A (en) 1993-02-19 1996-02-20 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5491752A (en) 1993-03-18 1996-02-13 Digital Equipment Corporation, Patent Law Group System for increasing the difficulty of password guessing attacks in a distributed authentication scheme employing authentication tokens
JPH0675890U (ja) 1993-04-02 1994-10-25 市光工業株式会社 コーナリングランプ点灯回路
JP2513127B2 (ja) 1993-05-31 1996-07-03 日本電気株式会社 ホットスタンバイ高速切替えシステム
JPH0736760A (ja) 1993-07-20 1995-02-07 Nippon Telegr & Teleph Corp <Ntt> 装置多重化機能とモジュール間共用機能を併用した外部記憶装置の高信頼化方法
US5522042A (en) 1994-01-28 1996-05-28 Cabletron Systems, Inc. Distributed chassis agent for distributed network management
US5588117A (en) 1994-05-23 1996-12-24 Hewlett-Packard Company Sender-selective send/receive order processing on a per message basis
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
JPH08314784A (ja) 1995-05-19 1996-11-29 Toshiba Corp ファイル管理装置
US5628005A (en) 1995-06-07 1997-05-06 Microsoft Corporation System and method for providing opportunistic file access in a network environment
US5826027A (en) 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US5764887A (en) 1995-12-11 1998-06-09 International Business Machines Corporation System and method for supporting distributed computing mechanisms in a local area network server environment
US5633899A (en) 1996-02-02 1997-05-27 Lsi Logic Corporation Phase locked loop for high speed data capture of a serial data stream
US6343313B1 (en) 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
EP0891663A1 (en) 1996-04-01 1999-01-20 Hewlett-Packard Company Transmitting messages over a network
RU2118051C1 (ru) 1996-04-30 1998-08-20 Лихачев Александр Геннадьевич Способ доступа к ресурсам "всемирной паутины" через шлюзы-представители
US6434120B1 (en) 1998-08-25 2002-08-13 Cisco Technology, Inc. Autosensing LMI protocols in frame relay networks
US5933602A (en) 1996-07-31 1999-08-03 Novell, Inc. System for selecting command packet and corresponding response packet from communication stream of packets by monitoring packets sent between nodes on network
US6208952B1 (en) 1996-10-24 2001-03-27 Microsoft Corporation Method and system for delayed registration of protocols
JPH10133971A (ja) 1996-10-25 1998-05-22 Nec Corp ファイル転送処理方式
US6125122A (en) 1997-01-21 2000-09-26 At&T Wireless Svcs. Inc. Dynamic protocol negotiation system
FR2759518B1 (fr) 1997-02-07 1999-04-23 France Telecom Procede et dispositif d'allocation de ressources dans un reseau numerique de transmission par paquets
US5987621A (en) 1997-04-25 1999-11-16 Emc Corporation Hardware and software failover services for a file server
US5931913A (en) 1997-05-07 1999-08-03 International Business Machines Corporation Methods, system and computer program products for establishing a session between a host and a terminal using a reduced protocol
JP3341637B2 (ja) 1997-06-20 2002-11-05 日本電気株式会社 トランザクション処理システムにおける端末状態管理方法及びコンピュータ読み取り可能な記録媒体
US6219799B1 (en) 1997-07-01 2001-04-17 Unisys Corporation Technique to support pseudo-names
US6092199A (en) 1997-07-07 2000-07-18 International Business Machines Corporation Dynamic creation of a user account in a client following authentication from a non-native server domain
JPH1155314A (ja) 1997-07-30 1999-02-26 Nippon Telegr & Teleph Corp <Ntt> データ転送制御方法
US6275953B1 (en) 1997-09-26 2001-08-14 Emc Corporation Recovery from failure of a data processor in a network server
US6247139B1 (en) 1997-11-11 2001-06-12 Compaq Computer Corp. Filesystem failover in a single system image environment
US6085247A (en) 1998-06-08 2000-07-04 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different computers
US6131125A (en) 1997-11-14 2000-10-10 Kawasaki Lsi U.S.A., Inc. Plug-and-play data cable with protocol translation
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
KR100272567B1 (ko) 1997-12-31 2000-11-15 서평원 이동통신 네트워크를 이용한 이동 인터넷
US7010532B1 (en) 1997-12-31 2006-03-07 International Business Machines Corporation Low overhead methods and apparatus for shared access storage devices
US6243862B1 (en) 1998-01-23 2001-06-05 Unisys Corporation Methods and apparatus for testing components of a distributed transaction processing system
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
JPH11265361A (ja) 1998-03-17 1999-09-28 Nec Corp 多重計算機システム、通信処理装置、トランザクション処理システム、トランザクション処理システム運転引き継ぎ方法、トランザクション処理システム運転引き継ぎプログラムを記録した記録媒体
JP3506920B2 (ja) 1998-08-25 2004-03-15 日本電信電話株式会社 全命令トレースデータの2次記憶装置への格納競合防止方法
AU1105600A (en) * 1998-10-07 2000-04-26 Adobe Systems Incorporated Distributing access to a data item
US6230190B1 (en) 1998-10-09 2001-05-08 Openwave Systems Inc. Shared-everything file storage for clustered system
US6401123B1 (en) 1998-11-24 2002-06-04 International Busines Machines Corporation Systems, methods and computer program products for employing presumptive negotiation in a data communications protocol
JP2000163369A (ja) 1998-11-30 2000-06-16 Nippon Telegr & Teleph Corp <Ntt> 処理結果分散管理方法及びシステム及び処理結果分散管理サーバ装置及び処理結果分散管理プログラムを格納した記憶媒体
US6347337B1 (en) * 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US6883000B1 (en) 1999-02-12 2005-04-19 Robert L. Gropper Business card and contact management system
US6453354B1 (en) 1999-03-03 2002-09-17 Emc Corporation File server system using connection-oriented protocol and sharing data sets among data movers
US6324581B1 (en) 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US20040139004A1 (en) 1999-04-08 2004-07-15 Aceinc Pty Ltd. Secure online commerce transactions
US6938096B1 (en) 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
US7562129B1 (en) 1999-04-15 2009-07-14 Alcatel-Lucent Canada Inc. Subscription management system for data communication network
US6349350B1 (en) 1999-05-04 2002-02-19 International Business Machines Corporation System, method, and program for handling failed connections in an input/output (I/O) system
WO2000068856A2 (en) 1999-05-11 2000-11-16 Webvan Group, Inc. Electronic commerce enabled delivery system and method
US7318102B1 (en) 1999-05-24 2008-01-08 Hewlett-Packard Development Company, L.P. Reliable datagram
US6430691B1 (en) 1999-06-21 2002-08-06 Copytele, Inc. Stand-alone telecommunications security device
US6490666B1 (en) 1999-08-20 2002-12-03 Microsoft Corporation Buffering data in a hierarchical data storage environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
JP2001077844A (ja) 1999-09-06 2001-03-23 Axle Linkage Labo Inc ネットワーク制御方法、サーバ装置、クライアント装置、遊技台装置用ネットワーク制御方法、ホールサーバコンピュータ装置、遊技台装置
JP2001094613A (ja) 1999-09-21 2001-04-06 Canon Inc 通信制御装置、方法および記録媒体
US6775707B1 (en) 1999-10-15 2004-08-10 Fisher-Rosemount Systems, Inc. Deferred acknowledgment communications and alarm management
US6910082B1 (en) 1999-11-18 2005-06-21 International Business Machines Corporation Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server
US6658476B1 (en) 1999-11-29 2003-12-02 Microsoft Corporation Client-server protocol support list for standard request-response protocols
US7050984B1 (en) 1999-12-22 2006-05-23 Ge Medical Systems, Inc. Integrated interactive service to a plurality of medical diagnostic systems
US7111060B2 (en) 2000-03-14 2006-09-19 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, a secure, cost-effective, web-enabled, integrated virtual office environment remotely accessible through a network-connected web browser
US6883015B1 (en) 2000-03-30 2005-04-19 Cisco Technology, Inc. Apparatus and method for providing server state and attribute management for multiple-threaded voice enabled web applications
US6993587B1 (en) 2000-04-07 2006-01-31 Network Appliance Inc. Method and apparatus for election of group leaders in a distributed network
JPWO2001077844A1 (ja) 2000-04-10 2004-04-30 富士通株式会社 情報処理システム及び方法並びにサーバ
US7225244B2 (en) 2000-05-20 2007-05-29 Ciena Corporation Common command interface
US6452903B1 (en) 2000-05-31 2002-09-17 Fujitsu Network Communications, Inc. Network switch supporting rate-based and credit-based flow control mechanisms on a link-by-link basis
US6961858B2 (en) 2000-06-16 2005-11-01 Entriq, Inc. Method and system to secure content for distribution via a network
EP1170975B1 (en) * 2000-07-05 2004-05-19 Roke Manor Research Limited Method of operating a packet reassembly buffer and network router
US7693976B2 (en) 2000-07-11 2010-04-06 Ciena Corporation Granular management of network resources
US6732289B1 (en) 2000-08-31 2004-05-04 Sun Microsystems, Inc. Fault tolerant data storage system
US6349250B1 (en) 2000-10-26 2002-02-19 Detroit Diesel Corporation Clear historic data from a vehicle data recorder
US20020062379A1 (en) 2000-11-06 2002-05-23 Widegren Ina B. Method and apparatus for coordinating quality of service requirements for media flows in a multimedia session with IP bearer services
JP2002183000A (ja) 2000-12-11 2002-06-28 Hitachi Ltd ネットワークを介するデータ参照方法及びそのシステム
US20020073211A1 (en) 2000-12-12 2002-06-13 Raymond Lin System and method for securely communicating between application servers and webservers
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
KR100750735B1 (ko) 2001-02-03 2007-08-22 삼성전자주식회사 홈네트워크내의 기기 제어장치 및 방법 및 이를 적용한홈네트워크 시스템
US7493391B2 (en) 2001-02-12 2009-02-17 International Business Machines Corporation System for automated session resource clean-up by determining whether server resources have been held by client longer than preset thresholds
US7055036B2 (en) 2001-04-06 2006-05-30 Mcafee, Inc. System and method to verify trusted status of peer in a peer-to-peer network environment
US8051212B2 (en) 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US20030093678A1 (en) 2001-04-23 2003-05-15 Bowe John J. Server-side digital signature system
JP3797236B2 (ja) 2001-04-27 2006-07-12 日本ビクター株式会社 記録再生装置および記録再生方法
JP2002328828A (ja) 2001-04-27 2002-11-15 Fujitsu Ltd ストレージサービス方法、ストレージサービスユーザ及びストレージサービスプロバイダ
US6640226B1 (en) 2001-06-19 2003-10-28 Informatica Corporation Ranking query optimization in analytic applications
US7287079B2 (en) * 2001-06-29 2007-10-23 Qualcomm Incorporated Implementing and coordinating configuration of protocol processes
JP4249915B2 (ja) 2001-07-13 2009-04-08 株式会社バンダイ 配信システム、そのサーバ及び収容装置と、携帯端末システムと、プログラム
US7409420B2 (en) 2001-07-16 2008-08-05 Bea Systems, Inc. Method and apparatus for session replication and failover
US6944785B2 (en) 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
JP2003069610A (ja) 2001-08-22 2003-03-07 Canon Inc 通信装置、その制御方法、通信システム、及び制御プログラム
JP3663627B2 (ja) 2001-10-18 2005-06-22 ソニー株式会社 通信処理装置、および通信処理方法、並びにコンピュータ・プログラム
US7136982B2 (en) 2001-11-09 2006-11-14 Danger, Inc. Apparatus and method for allocating memory blocks
US7107341B2 (en) 2001-12-07 2006-09-12 Research In Motion Limited System and method of managing information distribution to mobile stations
US7394764B2 (en) 2001-12-14 2008-07-01 Sasken Communication Technologies Limited Technique for improving transmission control protocol performance in lossy networks
US7313816B2 (en) 2001-12-17 2007-12-25 One Touch Systems, Inc. Method and system for authenticating a user in a web-based environment
JP3969089B2 (ja) 2001-12-25 2007-08-29 株式会社日立製作所 階層構成サーバシステム
US7111035B2 (en) 2001-12-26 2006-09-19 Hewlett-Packard Development Company, L.P. Fault tolerance associations for IP transport protocols
US20030140129A1 (en) 2002-01-24 2003-07-24 Noam Livnat Installing communication protocol in a handheld device
US20030154398A1 (en) 2002-02-08 2003-08-14 Eaton Eric Thomas System for providing continuity between session clients and method therefor
US6829606B2 (en) 2002-02-14 2004-12-07 Infoglide Software Corporation Similarity search engine for use with relational databases
US7178050B2 (en) 2002-02-22 2007-02-13 Bea Systems, Inc. System for highly available transaction recovery for transaction processing systems
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7388866B2 (en) 2002-03-07 2008-06-17 Broadcom Corporation System and method for expediting upper layer protocol (ULP) connection negotiations
US7668306B2 (en) 2002-03-08 2010-02-23 Intel Corporation Method and apparatus for connecting packet telephony calls between secure and non-secure networks
JP2003281091A (ja) 2002-03-25 2003-10-03 Fujitsu Ltd 同時受付制御システム
JP4315696B2 (ja) 2002-03-29 2009-08-19 富士通株式会社 ホスト端末エミュレーションプログラム、中継用プログラムおよびホスト端末エミュレーション方法
CA2385344A1 (en) 2002-05-08 2003-11-08 Bell Globemedia Inc. Data transfer method and apparatus
JP4000905B2 (ja) 2002-05-22 2007-10-31 ソニー株式会社 情報処理システムおよび方法、情報処理装置および方法、記録媒体、並びにプログラム
JP2003337717A (ja) 2002-05-22 2003-11-28 Nec Corp オンライントランザクション処理の障害時復旧同期システム
US20050228884A1 (en) 2002-06-10 2005-10-13 Caplin Systems Limited Resource management
US7290141B2 (en) 2002-06-27 2007-10-30 Nokia, Inc. Authentication of remotely originating network messages
US20040003210A1 (en) 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
CN1666188A (zh) 2002-07-01 2005-09-07 株式会社东芝 无缝系统和记录介质以及计算机系统的处理继续方法
CA2393502A1 (en) 2002-07-15 2004-01-15 Mark J. Frazer System and method for reliable transport in a computer network
US20040019660A1 (en) 2002-07-24 2004-01-29 Sandhya E. Lock holding multi-threaded processes for distibuted data systems
US6829473B2 (en) 2002-07-25 2004-12-07 Utstarcom, Inc. Roaming and hand-off support for prepaid billing for wireless data networks
WO2004012061A2 (en) 2002-07-29 2004-02-05 Eternal Systems, Inc. Consistent message ordering for semi-active and passive replication
US7386855B2 (en) 2002-08-12 2008-06-10 Ntt Docomo, Inc. Application mobility service
US20040032876A1 (en) 2002-08-19 2004-02-19 Ajay Garg Selection of transmission channels
JP3846384B2 (ja) 2002-08-28 2006-11-15 ブラザー工業株式会社 端末装置、接続制御方法、接続制御用プログラム及び記録媒体
US6957367B2 (en) 2002-08-30 2005-10-18 Hewlett-Packard Development Company L.P. System and method for controlling activity of temporary files in a computer system
JP3938002B2 (ja) 2002-10-18 2007-06-27 キヤノン株式会社 印刷システムの制御方法
US7109430B2 (en) 2002-11-05 2006-09-19 Emrise Corporation Low profile rotary switch with detent in the bushing
US7386889B2 (en) 2002-11-18 2008-06-10 Trusted Network Technologies, Inc. System and method for intrusion prevention in a communications network
US7421502B2 (en) 2002-12-06 2008-09-02 International Business Machines Corporation Method and system for storage-aware flow resource management
US7475142B2 (en) 2002-12-06 2009-01-06 Cisco Technology, Inc. CIFS for scalable NAS architecture
US7664991B1 (en) 2002-12-17 2010-02-16 Symantec Operating Corporation System and method for distributed file system I/O recovery
US20040153700A1 (en) 2003-01-02 2004-08-05 Nixon Mark J. Redundant application stations for process control systems
US7290051B2 (en) 2003-01-09 2007-10-30 Sun Microsystems, Inc. Method and apparatus for hardware implementation independent verification of network layers
JP3999135B2 (ja) 2003-01-24 2007-10-31 株式会社エヌ・ティ・ティ・ドコモ 通信システム、データ送信方法、通信装置、プログラムおよび記録媒体
US7526658B1 (en) 2003-01-24 2009-04-28 Nortel Networks Limited Scalable, distributed method and apparatus for transforming packets to enable secure communication between two stations
US7151939B2 (en) 2003-02-18 2006-12-19 Qualcomm Incorporated Method, apparatus, and machine-readable medium for providing indication of location service availability and the quality of available location services
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7490152B2 (en) 2003-04-11 2009-02-10 Alcatel-Lucent Usa Inc. Version caching mechanism
US7339885B2 (en) 2003-06-05 2008-03-04 International Business Machines Corporation Method and apparatus for customizable surveillance of network interfaces
US20040255202A1 (en) 2003-06-13 2004-12-16 Alcatel Intelligent fault recovery in a line card with control plane and data plane separation
US7363629B2 (en) 2003-06-19 2008-04-22 International Business Machines Corporation Method, system, and program for remote resource management
US7693998B2 (en) 2003-06-30 2010-04-06 Microsoft Corporation System and method for message-based scalable data transport
US7526640B2 (en) 2003-06-30 2009-04-28 Microsoft Corporation System and method for automatic negotiation of a security protocol
US7698115B2 (en) 2003-06-30 2010-04-13 Microsoft Corporation System and method for dynamically allocating resources in a client/server environment
US20050015511A1 (en) 2003-07-02 2005-01-20 Nec Laboratories America, Inc. Accelerated large data distribution in overlay networks
JP4229774B2 (ja) 2003-07-11 2009-02-25 日本電信電話株式会社 セッション制御プログラムと通信端末装置
US7296264B2 (en) 2003-07-18 2007-11-13 Bea Systems, Inc. System and method for performing code completion in an integrated development environment
WO2005010757A1 (ja) 2003-07-24 2005-02-03 Matsushita Electric Industrial Co., Ltd. ファイル管理方法及び情報処理装置
US8028078B2 (en) 2003-08-07 2011-09-27 Teamon Systems, Inc. Communications system including protocol interface device providing enhanced operating protocol selection features and related methods
CN100547583C (zh) 2003-08-14 2009-10-07 甲骨文国际公司 数据库的自动和动态提供的方法
US7870268B2 (en) 2003-09-15 2011-01-11 Intel Corporation Method, system, and program for managing data transmission through a network
US20050091226A1 (en) 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support
US7539722B2 (en) 2003-10-24 2009-05-26 Microsoft Corporation Method and system for accessing a file
US7231397B2 (en) 2003-10-24 2007-06-12 Microsoft Corporation Method and system for transacted file operations over a network
US7673066B2 (en) 2003-11-07 2010-03-02 Sony Corporation File transfer protocol for mobile computer
EP1680746B1 (en) 2003-11-07 2009-03-25 Sony Electronics Inc. File transfer protocol for mobile computer
JP4836432B2 (ja) 2003-11-17 2011-12-14 株式会社リコー 文書管理システム、文書管理装置、文書管理方法、文書管理プログラム及び記録媒体
US7188273B2 (en) 2003-11-24 2007-03-06 Tsx Inc. System and method for failover
US20050111030A1 (en) 2003-11-25 2005-05-26 Berkema Alan C. Hard copy imaging systems, print server systems, and print server connectivity methods
FI20031779A0 (fi) 2003-12-05 2003-12-05 Nokia Corp Menetelmä, järjestelmä ja lähetettävän puolen yhteyskäytäntöyksikkö datapakettien lähettämiseksi kuittaamattoman toimintamuodon palveluissa
US7730489B1 (en) 2003-12-10 2010-06-01 Oracle America, Inc. Horizontally scalable and reliable distributed transaction management in a clustered application server environment
US7383483B2 (en) 2003-12-11 2008-06-03 International Business Machines Corporation Data transfer error checking
US7243284B2 (en) 2003-12-11 2007-07-10 International Business Machines Corporation Limiting number of retransmission attempts for data transfer via network interface controller
US7177941B2 (en) 2003-12-11 2007-02-13 International Business Machines Corporation Increasing TCP re-transmission process speed
US7478381B2 (en) 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US20050177635A1 (en) 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US7493394B2 (en) 2003-12-31 2009-02-17 Cisco Technology, Inc. Dynamic timeout in a client-server system
US7383463B2 (en) 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
KR20060123773A (ko) 2004-03-17 2006-12-04 코닌클리케 필립스 일렉트로닉스 엔.브이. 디스크 형상 정보 기억 매체를 주사하기 위한 방법 및장치
US7444536B1 (en) 2004-04-16 2008-10-28 Sun Microsystems, Inc. RMI-IIOP request failover mechanism
US7627627B2 (en) 2004-04-30 2009-12-01 Hewlett-Packard Development Company, L.P. Controlling command message flow in a network
US20050246803A1 (en) 2004-04-30 2005-11-03 Spencer Andrew M Peripheral device for processing data from a computing device
JP2005321953A (ja) 2004-05-07 2005-11-17 Hitachi Ltd ストレージ制御装置、その動作プログラム、及びアクセス制御方法
JP2005322016A (ja) 2004-05-10 2005-11-17 Yokogawa Electric Corp サーバ装置および情報配信方法
US7380080B2 (en) 2004-05-17 2008-05-27 Hewlett-Packard Development Company, L.P. Calculating unneeded data storage credits for a data transmission to a pair of storage devices
US7330910B2 (en) 2004-05-20 2008-02-12 International Business Machines Corporation Fencing of resources allocated to non-cooperative client computers
US7487353B2 (en) 2004-05-20 2009-02-03 International Business Machines Corporation System, method and program for protecting communication
US7434087B1 (en) 2004-05-21 2008-10-07 Sun Microsystems, Inc. Graceful failover using augmented stubs
US7080173B2 (en) 2004-05-27 2006-07-18 Microsoft Corporation Reducing information reception delays
US20060059118A1 (en) 2004-08-10 2006-03-16 Byrd Stephen A Apparatus, system, and method for associating resources using a behavior based algorithm
US8023417B2 (en) 2004-08-30 2011-09-20 International Business Machines Corporation Failover mechanisms in RDMA operations
US7418709B2 (en) 2004-08-31 2008-08-26 Microsoft Corporation URL namespace to support multiple-protocol processing within worker processes
US7418712B2 (en) 2004-08-31 2008-08-26 Microsoft Corporation Method and system to support multiple-protocol processing within worker processes
US7428655B2 (en) 2004-09-08 2008-09-23 Hewlett-Packard Development Company, L.P. Smart card for high-availability clustering
KR20060025100A (ko) 2004-09-15 2006-03-20 삼성전자주식회사 다국어를 지원하는 메타 데이터를 기록한 정보저장매체 및메타 데이터 처리방법
US20060067244A1 (en) 2004-09-30 2006-03-30 Microsoft Corporation Registration identifier reuse
US7451347B2 (en) 2004-10-08 2008-11-11 Microsoft Corporation Failover scopes for nodes of a computer cluster
JP4398843B2 (ja) 2004-10-13 2010-01-13 日本放送協会 配信サーバ及び配信プログラム
CN1767472A (zh) 2004-10-27 2006-05-03 乐金电子(天津)电器有限公司 家庭网络系统
US8156049B2 (en) 2004-11-04 2012-04-10 International Business Machines Corporation Universal DRM support for devices
US7457722B1 (en) 2004-11-17 2008-11-25 Symantec Operating Corporation Correlation of application instance life cycle events in performance monitoring
JP4451293B2 (ja) 2004-12-10 2010-04-14 株式会社日立製作所 名前空間を共有するクラスタ構成のネットワークストレージシステム及びその制御方法
US8522293B2 (en) 2004-12-15 2013-08-27 Time Warner Cable Enterprises Llc Method and apparatus for high bandwidth data transmission in content-based networks
US8515490B2 (en) 2004-12-30 2013-08-20 Alcatel Lucent Method and apparatus for providing same session switchover between end-user terminals
JP2008530835A (ja) 2005-02-08 2008-08-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) パケット交換ネットワーク上のオンデマンドマルチチャネルストリーミングセッション
US7743245B2 (en) 2005-03-10 2010-06-22 Intel Corporation Security protocols on incompatible transports
US7453879B1 (en) 2005-04-04 2008-11-18 Sun Microsystems, Inc. Method and apparatus for determining the landing zone of a TCP packet
US20060281525A1 (en) 2005-05-17 2006-12-14 Milo Borissov Slot type game with player input opportunity
JP2006333433A (ja) 2005-05-25 2006-12-07 Microsoft Corp データ通信プロトコル
US8332526B2 (en) 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
JP2007058506A (ja) 2005-08-24 2007-03-08 Ricoh Co Ltd 文書管理サーバ、文書管理システム、及び、文書管理プログラムとその記録媒体
GB0519246D0 (en) 2005-09-21 2005-10-26 Ibm A method, apparatus and computer program for handling web server failure
RU2313824C2 (ru) 2005-09-26 2007-12-27 Михаил Васильевич Беляев Информационная система клиент - сервер и способ предоставления графического пользовательского интерфейса
US20070150602A1 (en) 2005-10-04 2007-06-28 Peter Yared Distributed and Replicated Sessions on Computing Grids
US7962129B2 (en) 2005-10-24 2011-06-14 At&T Intellectual Property I, L.P. Method and system of creating customized ringtones
US8108548B2 (en) 2005-12-22 2012-01-31 Microsoft Corporation Methodology and system for file replication based on a peergroup
US8051179B2 (en) 2006-02-01 2011-11-01 Oracle America, Inc. Distributed session failover
US8024439B2 (en) 2006-03-17 2011-09-20 Microsoft Corporation Server session management application program interface and schema
US7526668B2 (en) 2006-06-08 2009-04-28 Hitachi, Ltd. Failover method of remotely-mirrored clustered file servers
US7685227B2 (en) 2006-11-10 2010-03-23 Gerber Robert H Message forwarding backup manager in a distributed server system
US7774544B1 (en) 2006-11-15 2010-08-10 Netapp, Inc. Reliable disk ownership changes
KR20080057483A (ko) 2006-12-20 2008-06-25 삼성전자주식회사 서버, 클라이언트, 로드 밸런싱 시스템 및 그의 로드밸런싱 방법
US7809828B2 (en) 2007-04-11 2010-10-05 International Business Machines Corporation Method for maintaining state consistency among multiple state-driven file system entities when entities become disconnected
US20090077097A1 (en) 2007-04-16 2009-03-19 Attune Systems, Inc. File Aggregation in a Switched File 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
US8073922B2 (en) 2007-07-27 2011-12-06 Twinstrata, Inc System and method for remote asynchronous data replication
US8280925B2 (en) 2007-09-28 2012-10-02 Xcerion Aktiebolag Resolution of multi-instance application execution
EP2066101B1 (en) 2007-11-28 2012-10-17 Alcatel Lucent System and method for an improved high availability component implementation
US20090158221A1 (en) 2007-12-17 2009-06-18 Nokia Corporation Device feature manipulation based on presented content
CN101217483A (zh) 2008-01-21 2008-07-09 中兴通讯股份有限公司 用于实现集群服务器内负载分担代理的方法
US8458298B2 (en) 2008-03-03 2013-06-04 Microsoft Corporation Failover in an internet location coordinate enhanced domain name system
JP5054618B2 (ja) 2008-06-10 2012-10-24 京セラドキュメントソリューションズ株式会社 ネットワークファイル処理システム
JP4549408B2 (ja) 2008-06-24 2010-09-22 富士通株式会社 ファイルサーバのクラスタノード制御プログラム,クラスタノード制御方法及びクラスタノード制御装置
US7840730B2 (en) 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8700760B2 (en) 2008-08-18 2014-04-15 Ge Fanuc Intelligent Platforms, Inc. Method and systems for redundant server automatic failover
US8275815B2 (en) 2008-08-25 2012-09-25 International Business Machines Corporation Transactional processing for clustered file systems
US8185566B2 (en) 2009-01-15 2012-05-22 Microsoft Corporation Client-based caching of remote files
CN101594320B (zh) 2009-06-23 2012-05-09 中兴通讯股份有限公司 一种基于snmp协议的消息交互方法
US9749387B2 (en) 2009-08-13 2017-08-29 Sap Se Transparently stateful execution of stateless applications
JP2011119794A (ja) 2009-11-30 2011-06-16 Toshiba Corp 電子機器及び通信制御方法
US8806030B2 (en) 2010-12-06 2014-08-12 Microsoft Corporation Multichannel connections in file system sessions
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
US9896870B2 (en) 2012-03-05 2018-02-20 Gator Kennels Llc Enclosure having ribbed stanchions
US9888068B2 (en) 2013-04-06 2018-02-06 Citrix Systems, Inc. Systems and methods for maintaining session persistence in a cluster system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161855A1 (en) * 2003-12-31 2010-06-24 Microsoft Corporation Lightweight input/output protocol
JP2006333434A (ja) * 2005-05-25 2006-12-07 Microsoft Corp シーケンス番号によるデータ通信の調整

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019175445A (ja) * 2018-03-26 2019-10-10 三星電子株式会社Samsung Electronics Co.,Ltd. 格納システム及びそのホスト格納ドライブ並びにデータ格納方法
JP7311280B2 (ja) 2018-03-26 2023-07-19 三星電子株式会社 格納システム及びそのホスト格納ドライブ並びにデータ格納方法
US11775454B2 (en) 2018-03-26 2023-10-03 Samsung Electronics Co., Ltd. Mechanism to autonomously manage SSDs in an array

Also Published As

Publication number Publication date
KR102047142B1 (ko) 2019-11-20
EP2737685A2 (en) 2014-06-04
JP6047158B2 (ja) 2016-12-21
CN106411767B (zh) 2019-08-13
US20160226951A1 (en) 2016-08-04
WO2013002980A2 (en) 2013-01-03
US10284626B2 (en) 2019-05-07
US9331955B2 (en) 2016-05-03
WO2013002980A3 (en) 2013-03-14
US20130007180A1 (en) 2013-01-03
CN106411767A (zh) 2017-02-15
CN103636181A (zh) 2014-03-12
EP2737685A4 (en) 2015-07-01
KR20140034872A (ko) 2014-03-20
CN103636181B (zh) 2016-11-02

Similar Documents

Publication Publication Date Title
JP6047158B2 (ja) リモート・ダイレクト・メモリー・アクセスによる任意サイズの移送動作
US10880235B2 (en) Remote shared server peripherals over an ethernet network for resource virtualization
US20200314181A1 (en) Communication with accelerator via RDMA-based network adapter
CN108536543B (zh) 具有基于跨步的数据分散的接收队列
EP2649531B1 (en) Multichannel connections in file system sessions
US10051038B2 (en) Shared send queue
EP1784735B1 (en) Apparatus and method for supporting memory management in an offload of network protocol processing
US20070208820A1 (en) Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations
EP1759317B1 (en) Method and system for supporting read operations for iscsi and iscsi chimney
WO2022089258A1 (zh) 网络接口卡、控制器、存储装置和报文发送方法
EP1782602A1 (en) Apparatus and method for supporting connection establishment in an offload of network protocol processing
WO2022021988A1 (zh) 网络接口卡、存储装置、报文接收方法和发送方法
WO2022148363A1 (zh) 数据传输方法及数据传输服务器
CN110535811B (zh) 远端内存管理方法及系统、服务端、客户端、存储介质
US20050281261A1 (en) Method and system for supporting write operations for iSCSI and iSCSI chimney
US20040267960A1 (en) Force master capability during multicast transfers
WO2023109891A1 (zh) 组播传输方法、装置和系统
Fox et al. IBM's Shared Memory Communications over RDMA (SMC-R) Protocol
Interface UDI NIC Driver Specification Version 1.0
JP2007520093A (ja) 単一接続上のグループ対グループ通信とエラー許容対称型マルチコンピューティングシステム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150605

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160428

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160721

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161118

R150 Certificate of patent or registration of utility model

Ref document number: 6047158

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250