[go: up one dir, main page]

JP2008020977A - ネットワークプロセッサシステムおよびネットワークプロトコル処理方法 - Google Patents

ネットワークプロセッサシステムおよびネットワークプロトコル処理方法 Download PDF

Info

Publication number
JP2008020977A
JP2008020977A JP2006190053A JP2006190053A JP2008020977A JP 2008020977 A JP2008020977 A JP 2008020977A JP 2006190053 A JP2006190053 A JP 2006190053A JP 2006190053 A JP2006190053 A JP 2006190053A JP 2008020977 A JP2008020977 A JP 2008020977A
Authority
JP
Japan
Prior art keywords
processor
tcp
protocol
packet
memory access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006190053A
Other languages
English (en)
Inventor
Kazuyoshi Horie
和由 堀江
Kazumine Tachibana
一峰 立花
Taku Tanaka
卓 田中
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2006190053A priority Critical patent/JP2008020977A/ja
Priority to US11/774,998 priority patent/US8671152B2/en
Publication of JP2008020977A publication Critical patent/JP2008020977A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】リモートダイレクトメモリアクセス(RDMA)を利用するためには、RDMA対応のNICが必要であり、コストがかかる。
【解決手段】RDMA機能をエミュレートするマルチプロセッサシステムを提供する。第1のサブプロセッシングユニット(SPU)22は、送信すべきメッセージを生成する。第2のSPU21は、リモートダイレクトメモリアクセス機能をエミュレートするプロセッサであり、第1のSPU22からの通知を受けて、メッセージをRDMAプロトコルにしたがったパケットに組み立てる。第3のSPU20は、TCP/IPプロトコル処理を実行するプロセッサであり、第2のSPU21からの通知を受けて、RDMAプロトコルにしたがって生成されたパケットをTCP/IPパケットに組み立て、ネットワークインターフェースカード(NIC)30から送出する。
【選択図】図3

Description

この発明は、ネットワークプロセッサシステムおよびネットワークプロトコル処理方法に関する。
近年のネットワーク技術の進歩により、ギガビットネットワークの利用が広がるなど、ネットワークの帯域が著しく伸びている。その一方で、ネットワークを流れるパケットを処理するマイクロプロセッサの処理性能はネットワーク性能に比べてそれほど向上していないのが現状である。そのため、高速なネットワークを流れるパケットをマイクロプロセッサが十分な速度で処理することは難しい。特に、ネットワークの帯域幅が1Gbps(giga bit per second)を越えるあたりからマイクロプロセッサの処理性能がネットワークの帯域幅に対してボトルネックとなる。
プロセッサの処理性能がボトルネックになる原因は、大きく分けて次の3つである。
(1)TCP(Transmission Control Protocol)処理
(2)コンテキストスイッチ
(3)メモリ間コピー
(1)のTCP処理とは、TCPにおけるチェックサムや再送制御など、計算量の多い処理であり、プロセッサへの負荷が大きくなる。この問題を解決するために、TCPオフロードエンジン(TCP Offload Engine; TOE)と呼ばれる技術があり、TCPにおける各処理を実行する専用のハードウェアがネットワークインタフェースカード(NIC)に実装される。このようなTCPオフロードエンジンが搭載されたネットワークインタフェースカードはTOE−NICと呼ばれる。この場合、送受信バッファはTOE−NIC内に設けられる。
(2)のコンテキストスイッチとは、パケット処理をするためにユーザモードとカーネルモードの間でコンテキストスイッチが行われることであり、このコンテキストスイッチがオーバーヘッドとなり、全体の処理性能のボトルネックとなる。この問題を解決するために、カーネルによるプロトコル処理をスキップするカーネルバイパスなどの実装技術が検討されている。
(3)のメモリ間コピーとは、パケットを処理する過程でパケットのデータが複数のメモリ間でコピーされることである。まず、ネットワークインタフェースカードがカーネルのバッファに受信パケットを書き込む。CPUはカーネルのバッファ内のパケットを解析した後、アプリケーションのバッファにパケットを書き込む。この処理過程でカーネルバッファからアプリケーションバッファへパケットのデータがコピーされており、このメモリ間コピーがオーバーヘッドとなる。
メモリ間コピーの問題を解決するために、リモートダイレクトメモリアクセス(RDMA)と呼ばれる技術の実装が行われている。CPUを介さずに各種デバイスとRAMの間で直接データ転送する方式がダイレクトメモリアクセス(DMA)であるが、RDMAは、このDMA機能をネットワークに拡張したものである。RDMAは、あるコンピュータのメモリから別のコンピュータのメモリに直接データを移動させることで、CPU処理のオーバーヘッドをなくす。RDMAを利用するためには、TCP/IPネットワークの場合、RDMA対応のネットワークインタフェースカード(RNIC;RDMA-enabled NIC)を用いる必要がある。一般に、RNICはTOE機能とRDMA機能を合わせもつネットワークインタフェースカードである。
今後ますます高速化するネットワークに対応するために、マイクロプロセッサへの処理負荷を減らすことが通信の効率化のために重要な課題となっている。そのためのひとつの解決策が前述のRDMAである。しかしながら、RDMAを利用するためには、RNICと呼ばれる、RDMA対応の特別なネットワークインタフェースカードが必要であり、これまで使用されていた通常のネットワークインタフェースカードでは、RDMAを利用することができない。現在使用中のNICをすべてRDMA対応のRNICに入れ換えることは、たいへんなコストがかかる。これはRDMAの普及を遅らせている一因である。
また、一部のネットワークインタフェースカードだけをRDMA対応にすることで従来のNICとRNICとが混在するネットワークを構成した場合、従来のNICとRNICの間で通信ができないという問題が生じる。
本発明はこうした課題に鑑みてなされたものであり、その目的は、RDMA機能を前提とした通信を効率良く行うことのできる通信技術を提供することにある。
上記課題を解決するために、本発明のある態様のネットワークプロセッサシステムは、リモートダイレクトメモリアクセス機能をエミュレートする第1プロセッサと、前記第1プロセッサによりリモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、前記バッファからパケットを読み込み、TCP/IPプロトコル処理を施す第2プロセッサと、前記第2プロセッサにより生成されたTCP/IPパケットをネットワークに送信するネットワークインターフェースカードとを含む。
本発明の別の態様もまた、ネットワークプロセッサシステムである。このネットワークプロセッサシステムは、ユーザレベルで処理を実行するプロセッサであって、送信すべきメッセージをユーザ空間に生成する第1プロセッサと、カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートするプロセッサであって、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立てる第2プロセッサと、前記第2プロセッサから出力される前記リモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、カーネルレベルでTCP/IPプロトコル処理を実行するプロセッサであって、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコルにしたがったパケットに組み立てる第3プロセッサと、前記第3プロセッサにより生成されたTCP/IPパケットをネットワークに送信するネットワークインターフェースカードとを含む。
本発明のさらに別の態様もまた、ネットワークプロセッサシステムである。このネットワークプロセッサシステムは、リモートダイレクトメモリアクセス機能をエミュレートするプロセッサと、前記プロセッサから出力されるリモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すためのTCP/IPオフロード機能をもつネットワークインタフェースカードとを含む。
本発明のさらに別の態様もまた、ネットワークプロセッサシステムである。このネットワークプロセッサシステムは、ユーザレベルで処理を実行するプロセッサであって、送信すべきメッセージをユーザ空間に生成する第1プロセッサと、カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートするプロセッサであって、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立てる第2プロセッサと、前記第2プロセッサから出力される前記リモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すTCP/IPオフロード機能をもつネットワークインタフェースカードとを含む。
本発明のさらに別の態様もまた、ネットワークプロセッサシステムである。このネットワークプロセッサシステムは、リモートダイレクトメモリアクセス機能をエミュレートする第1プロセッサと、前記第1プロセッサによりリモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施す第2プロセッサと、前記第2プロセッサにより生成されたTCP/IPパケットをネットワークに送信する第1ネットワークインタフェースカードと、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すためのTCP/IPオフロード機能をもつ第2ネットワークインタフェースカードとを含む。前記第1プロセッサは、前記パケットの送信元IPアドレスを前記第1ネットワークインタフェースカードのMACアドレスまたは前記第2ネットワークインタフェースカードのMACアドレスに対応づけたテーブルを参照して、前記パケットの送信元IPアドレスに応じて、前記パケットを送出するためのネットワークインタフェースを前記第1ネットワークインタフェースカードまたは前記第2ネットワークインタフェースカードのいずれかに振り分ける機能を有する。前記パケットが前記第1ネットワークインタフェースカードに振り分けられる場合は、前記パケットは、前記第2プロセッサによりTCP/IPプロトコル処理がなされて、前記第1ネットワークインタフェースカードから送出され、前記パケットが前記第2ネットワークインタフェースカードに振り分けられる場合は、前記パケットは、前記第2ネットワークインタフェースカードのTCP/IPオフロード機能によりTCP/IPプロトコル処理がなされて、前記第2ネットワークインタフェースカードから送出される。
本発明のさらに別の態様は、ネットワークプロトコル処理方法である。この方法は、ユーザレベルで処理を実行する第1プロセッサが、送信すべきメッセージをユーザ空間に生成するステップと、カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートする第2プロセッサが、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立て、バッファにキューイングするステップと、カーネルレベルでTCP/IPプロトコル処理を実行する第3プロセッサが、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコルにしたがったパケットに組み立てるステップとを含む。
本発明のさらに別の態様もまた、ネットワークプロトコル処理方法である。この方法は、ユーザレベルで処理を実行する第1プロセッサが、送信すべきメッセージをユーザ空間に生成するステップと、カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートする第2プロセッサが、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立て、バッファにキューイングするステップと、ネットワークインタフェースカード内でTCP/IPオフロード機能を実行する第3プロセッサが、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すステップを実行する。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、プログラム製品、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、RMDA機能を利用した効率の良い通信を行うことができる。
以下、図面を参照し、本発明の実施の形態を説明する。なお、以下に述べる実施の形態は、本発明の好適な具体例であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は以下の説明において、特に本発明を限定する旨の記載がない限り、これらの形態に限定されるものではない。
また、実施の形態では、カーネルモードおよびユーザモードに分けてプロトコル処理を説明するが、これは一例に過ぎず、各プロトコルスタックが実装されるべきモードを限定する趣旨ではない。なお、カーネルモード、ユーザモードは、それぞれカーネルレベル、ユーザレベルとも呼ばれる。
さらに、RDMA機能を実行するプロセッシングエレメントとして、マルチプロセッサのひとつを用いたが、RDMA機能だけを実行するために、別チップのCPUを用いることも可能である。
実施の形態1
図1は、本発明の実施の形態に係るネットワークシステムを示す図である。ネットワーク100には、複数のノード200a、200b、200c、…、200nが接続されている。以下、ネットワーク100に接続されたノードを総称するときは、単にノード200という。ネットワーク100はルータを含み、IP(Internet Protocol)にしたがってパケットを転送する。
図2は、図1のノード200の構成図である。各ノード200は、マイクロプロセッシングユニット(MPU)210、メインメモリ220、I/Oブリッジ240、およびネットワークインタフェースカード(NIC)230を含む。
MPU210は、メインメモリ220に保持された送信すべきデータに宛先アドレスなどのヘッダ情報を付加したパケットを生成し、I/Oブリッジ240を介してNIC230のバッファにパケットを渡す。NIC230は、バッファ内に蓄積されたパケットをネットワーク100に送出する。
NIC230はネットワーク100から受信されたパケットをバッファに蓄積し、I/Oブリッジ240を介してMPU210にパケットを渡す。MPU210はパケットのヘッダを解析し、パケット内のデータをメインメモリ220に格納する。
図3は、図2のノード200のMPU210に実装されたTCP/IPプロトコルスタックおよびRDMA機能を説明する図である。これらの機能は、ハードウェアとソフトウェアの組み合わせにより構成され、ソフトウェアはユーザモードおよびカーネルモードで動作する。
ハードウェアの構成として各ノード200にはNIC230とMPU210がある。NIC230として、同図に示したように、TOE機能のないNIC30またはTOE機能が搭載されたTOE−NIC31のいずれか、あるいは両方が用いられる。MPU210は、ここでは、プロセッシングユニット(PU)とサブプロセッシングユニット(SPU)を含むマルチプロセッサで構成される。ここで、PUとSPUは処理性能や構成が異なるプロセッシングエレメントである。一例としてPUは、メインメモリ220のデータをキャッシュするためのハードウェアキャッシュ機構を有するが、SPUは、ハードウェアキャッシュ機構がなく、ローカルメモリをもつ。
ユーザモードで動作するソフトウェアとして、アプリケーションプログラム11u−1、22u−1、ソケットAPI11u−2、22u−2およびソケットスイッチ50がある。ソケットスイッチ50は、パケットのプロトコルがTCPあるいはSDP(ソケットダイレクトプロトコル)のどちらであるかを判別して、パケットの供給先を切り替える。ここで、SDPとは、既存のソケットプログラムへ変更を加えることなくRDMA機能を実現するためのプロトコルである。ソケットスイッチ50の働きにより、RDMA機能を前提とするパケットはRDMA機能を実装したカーネルレベルのプロトコルスタック21rに渡され、RDMA機能を必要としない通常のTCPのパケットはRDMA機能が実装されていないカーネルレベルのプロトコルスタック10s、20sに渡される。
カーネルモードで動作するソフトウェアとして、次の3つがある。
(1)PU10上で動作するTCP/IPプロトコルスタック10s、
(2)SPU20上で動作するTCP/IPプロトコルスタック20s、および
(3)SPU21上で動作するRDMAプロトコルスタック21r。
RDMAプロトコルスタック21rは、既存のソケットプログラムを変更することなしにRDMA動作を可能とするために、ソケット層21r−1とSDP層21r−2を含む。これらのレイヤの下にRDMA層21r−3があり、RDMAリード(read)、RDMAライト(write)などのRDMAコマンドがDDP(Direct Data Placement)メッセージに変換される。RDMA層21r−3の下には、DDP層21r−4がある。DDP層21r−4は、送信の際、DDPメッセージを1つまたは複数のDDPセグメントに分割し、受信の際、1つまたは複数のDDPセグメントをDDPメッセージにリアセンブルする。
DDP層21r−4の下には、MPA(Marker Protocol-data-unit Aligned)層21r−5がある。MPA層21r−5は、DDPセグメントに一定間隔で逆変換マーカーを付加し、各MPAセグメントにDDPセグメントのデータ長と誤り検出のためのCRC(Cyclic Redundancy Check)を付加する。MPA層21r−5の下には、TCP/IPプロトコルスタックが実装される。
TCP/IPプロトコルスタックの実装方法として、(a)PU10またはSPU20にカーネルモードで動作するソフトウェアとして実装する方法と、(b)TOE−NIC31内のTCPオフロードエンジン(TOE)機能としてハードウェアで実装する方法とがある。後者の場合、RDMAプロトコルスタック21rにより処理されたパケットは、デバイスドライバ21r−6、SPU21、I/Oブリッジ240を経由して、TOE−NIC31に渡され、TOE機能によりTCP/IPプロトコル処理がなされ、ネットワークに送出される。
一方、TOE機能が実装されていないNIC30の場合には、PU10またはSPU20にカーネルモードで動作するソフトウェアとして実装された、TCP/IPプロトコルスタック10s、20sを用いてTCP/IPプロトコル処理を行う必要がある。
上記の(a)TOE機能なしの実装と(b)TOE機能ありの実装の切り換えは、システム起動時に設定ファイルの情報を用いて行う。以下、(a)TOE機能なしの実装の構成と動作を実施例1として説明し、(b)TOE機能ありの実装の構成と動作を実施例2として説明する。また、ノード200内にTOE機能のない通常のNIC30とTOE機能付きのTOE−NIC31がともに実装されている場合の構成と動作を実施例3として説明する。
RDMAプロトコルスタック21rとTCP/IPプロトコルスタック10s、20sはMPU210の各プロセッサ上に常駐することを基本とするが、RDMA機能を用いない場合には、RDMAプロトコルスタック21rはサスペンドされ、他のプロセスが動作してもよい。これは、TCP/IPプロトコルスタック10s、20sについても同様である。
実施例1
図4は、実施例1のノード200の構成図である。実施例1では、ノード200にはTOE機能のない通常のNIC30が搭載されており、システム起動時の設定により、NIC30が動作可能になるため、動作しないTOE−NIC31に関わる構成については図示していない。実施例1では、TCP/IPプロトコルスタックはPU10またはSPU20上に実装される。PU10およびSPU20上のTCP/IPプロトコルスタック10sおよび20sは同時に動作することも可能であるし、どちらかが休止していてもかまわない。
RDMA動作の一例として、RDMAライトについて説明する。図1の2つのノード200aと200b間でRDMAライトが実行されるとする。発行元ノード200aが発行先ノード200bに対してRDMAライト命令を発行し、RDMAライトされるべきデータを発行先ノード200bに送信する。
図5は、発行元ノード200aと発行先ノード200bの間で行われるRDMAライト処理のシーケンス図である。はじめに、発行元ノード200aから発行先ノード200bへRDMAライトのリクエストが発行される(S10)。このリクエスト時にRDMAライトされるデータのサイズ等の情報が送信される。その後、発行元ノード200aは、自ノード内のメインメモリ220aにRDMAライトすべきデータを準備する(S12)。
一方、発行先ノード200bは、発行元ノード200aから発行されたRDMAライトのリクエストに対して、自ノード内のメインメモリ220bにRDMAライト用のメモリ領域を確保する(S14)。発行先ノード200bにデータが受信されると、自ノードのNIC30bがカーネルモードのソフトウェアに割り込み信号を送ることで、受信データの存在をカーネルに知らせる。
発行先ノード200bは、RDMAライト用メモリ領域を確保した後、発行元ノード200aに向けて、レディ(Ready)メッセージを送信する(S16)。
発行元ノード200aは、発行先ノード200bからレディメッセージを受信した後、RDMAライトを実行する(S18)。なお、発行元のノード200aは、メッセージの受信を自ノードのNIC30から割り込みが入ることで検出することができる。
発行元のノード200aは、RDMAライトが完了した後に、完了メッセージを発行先ノード200bに送信する(S20)。以上で、RDMAライトの処理が完了する。
図6および図7Aを参照し、図5のRDMAライト処理シーケンスの各ステップが図4の構成によって実行される様子を詳しく説明する。図6は、図5のRDMAライト処理シーケンスの内、RDMA機能を使用しないTCPによる送受信動作を示す図である。一方、図7Aは、図5のRDMAライト処理シーケンスの内、RDMA機能を使用するSDPによる送受信動作を示す図である。
以下では、TCP/IPプロトコルスタックがSPU20に実装されている場合について動作を説明するが、TCP/IPプロトコルスタックがPU10に実装されている場合の動作も基本的には同様である。
(1)ステップS10の動作
図4において、発行元ノード200aのユーザ空間にあるアプリケーションプログラム11u−1または22u−1により、RDMAライトのリクエストが発行される。ここで、アプリケーションプログラム11u−1、22u−1はそれぞれ発行元ノード200aのPU11、SPU22で実行される。ここでは、アプリケーションプログラム11u−1、22u−1を実行するPU11、SPU22と、プロトコルスタックを実行するPU10a、SPU20、21は異なるものとして説明するが、アプリケーションプログラムとプロトコルスタックを実行するPUあるいはSPUは同一であってもかまわない。
発行元ノード200aのソケットスイッチ50は、RDMAライトのリクエストが通常のTCP/IPにより送信されるべきであることを識別する。この識別は、発行元ノード200aのソケットAPI11u−2あるいは22u−2において、以下のコマンドを実行することで実現される。
socket(AF_INET, SOCK_STREAM, 0);
ここで、socketコマンドの第1引数AF_INETは、IPv4のインターネットプロトコルであることを示す。第2引数SOCK_STREAMは通信がコネクション型であることを示す。第3引数の0は通常のTCP/IPプロトコルを用いることを示す。
RDMAライトのリクエストメッセージは、発行元ノード200aのSPU20上に実装されたTCP/IPプロトコルスタック20sを経由することで、RDMAライトのリクエストパケットへと組み立てられる。
図6を参照して、RDMAライトのリクエストパケットの生成過程を説明する。発行元ノード200aにおいて、ユーザレベルで動作中のSPU22aは、ユーザ空間にあるアプリケーション用バッファ222aにRDMAライトのリクエストメッセージ223aを生成する。その後、ユーザレベルで動作中のSPU22aは、カーネルレベルで動作中のSPU20aに対してイベント通知することにより、パケットの組み立ての開始を通知する。このイベント通知には、アトミック命令のような同期機能を用いてもよく、SPUにイベント通知用のレジスタやメールボックスなどを設けることにより実現してもよい。
カーネルレベルのSPU20aは、アプリケーション用バッファ222aからRDMAライトのリクエストメッセージ223aを読み出し、そのリクエストメッセージ223aにヘッダを付加し、カーネル空間にあるTCP/IP送受信バッファ224aにRDMAライトのリクエストパケット225aを生成する。生成されたリクエストパケット225aは発行元ノード200aのNIC30aから送出される。
(2)ステップS12の動作
発行元ノード200aにおいてRDMAライトのリクエストの発行が終わると、図7Aに示すように、発行元ノード200aのユーザモードにあるSPU22aがアプリケーションを実行し、RDMAライトにより書き込むべきRDMAメッセージ227aをアプリケーション用バッファ222aに書き込み、RDMAライト用のデータを準備する。
(3)ステップS14の動作
一方、発行先ノード200bは、ステップS10において発行元ノード200aが発行したRDMAライトのリクエストを受け取り、RDMAライト用のメモリ領域を準備する。図6に示すように、発行先ノード200bのNIC30bはネットワーク100からRDMAライトのリクエストパケット225bを受信し、TCP/IP送受信バッファ224bにコピーする。
発行先ノード200bのカーネルモードにあるSPU20bは、TCP/IP送受信バッファ224bに受信されたRDMAライトのリクエストパケット225bを解析し、パケット内のリクエストメッセージ223bをリアセンブルしてユーザ空間のアプリケーション用バッファ222bにコピーする。その後、カーネルモードにあるSPU20bは、ユーザモードにあるSPU22bにイベント通知し、RDMAライトのリクエストメッセージが受信されたことを通知する。
カーネルモードにあるSPU20bからイベント通知を受けた、ユーザモードにあるSPU22bはアプリケーション22u−1を実行し、RDMAライトのリクエストメッセージ223bを読み、アプリケーション用バッファ222b内にRDMAライトに必要なメモリ領域(「RDMAライト用領域」という)226bを確保する。
(4)ステップS16の動作
その後、発行先ノード200bのユーザ空間にあるアプリケーション22u−1は、レディメッセージを発行元ノード200aに返信する。RDMAライトのリクエストメッセージの場合と同様、レディメッセージは、発行先ノード200bのソケットスイッチ50がTCP/IPプロトコルを指定したコマンドを実行することにより、通常のTCP/IPプロトコルにしたがって、TCP/IPプロトコルスタック20sにより処理され、NIC30bから送信される。
(5)ステップS18の動作
図4および図7Aを参照して、RDMAライトの動作を詳しく説明をする。発行元ノード200aにおいてアプリケーションプログラム11u−1あるいは22u−1がRDMAライトのコマンドを発行する。その際、ソケットAPI11u−2あるいは22u−2は、
socket(AF_INET_SDP, SOCK_STREAM, 0);
というコマンドを用いる。ここで、第1引数"AF_INET_SDP"は、通信プロトコルとしてSDPを用いてRDMA機能を実行することを意味する。それ以外のパラメータは前述の通りである。
ソケットスイッチ50がsocketコマンドの第1引数によってRDMA動作であることを認識し、RDMAプロトコルスタックが実装されているSPU21aにイベント通知し、SPU21aがRDMAパケットを生成する。
図7Aを参照して、RDMAパケットの生成過程を説明する。発行元ノード200aにおいて、ユーザモードのSPU22aからイベント通知を受け取ったカーネルモードのSPU21aは、ユーザ空間にあるアプリケーション用バッファ222a内のRDMAメッセージ227aをセグメント化し、RDMAパケットを組み立て、FIFOバッファ221aにRDMAパケットをキューイングする。
FIFOバッファ221aは、RDMAプロトコルスタックが実装されたSPU21aと、TCP/IPプロトコルスタックが実装されたSPU20aとの間で共有されており、SPU21aはSPU20aにイベント通知し、FIFOバッファ221aに送信すべきRDMAパケットがあることを知らせる。イベント通知されたSPU20aは、FIFOバッファ221aにあるRDMAパケットをTCP/IPパケットに組み立て、TCP/IP送受信バッファ224aにコピーする。NIC30aは、TCP/IP送受信バッファ224a内のRDMAパケット229aをネットワーク100に送出する。
一方、発行先ノード200bにおいても、ソケットAPI11u−1あるいは22u−2によってRDMA機能を使用することがsocketコマンドにより宣言される。そして、ソケットスイッチ50により、ユーザレベルのSPU22bからカーネルレベルのSPU21bおよびSPU20bへRDMAイベントがあることが通知される。
発行先ノード200bのNIC30bは、ネットワーク100からRDMAパケット229bを受信し、TCP/IP送受信バッファ224bへコピーする。TCP/IPプロトコルスタック20sが実装されたSPU20bは、TCP/IP送受信バッファ224b内のRDMAパケット229bをTCP/IPプロトコルにしたがって解析し、FIFOバッファ221bにTCP/IPパケットをキューイングする。FIFOバッファ221bは、TCP/IPプロトコルスタック20sが実装されたSPU20bとRDMAプロトコルスタック21rが実装されたSPU21bの間で共有されている。TCP/IPプロトコル処理の後、SPU20bは、RDMAプロトコル処理を行うSPU21bにイベント通知し、RDMAパケットが受信されたことを知らせる。
RDMAプロトコルスタック21rが実装されたSPU21bは、RDMAプロトコルにしたがってFIFOバッファ221bにあるRDMAパケットを解析し、RDMAライトすべきメッセージをリアセンブルし、アプリケーション用バッファ222bのRDMAライト用領域226bに書き込む。
(6)ステップS20の動作
RDMAライトの発行が終わると、発行元ノード200aは「完了」メッセージを発行先ノード200bに送信する。「完了メッセージ」は、図6で説明した、RDMA機能を用いない通常のTCP/IPパケットで送信される。発行先ノード200bは「完了」メッセージを受信し、RDMAライト用領域226bを解放し、RDMAライトの動作を終了する。
以上述べたように、実施例1によれば、RDMAプロトコル処理をソフトウェアでエミュレートすることにより、RDMA対応のNICでなくてもRDMA機能を用いた通信を行うことができる。また、実施例1では、ノード200内の複数のプロセッサが、TCP/IPプロトコル処理やRDMAプロトコル処理など個別の特定処理を専門に行う。同一のプロセッサがTCP/IPプロトコル処理とRDMAプロトコル処理を担当すると、異なるプロトコル処理を行う際、コンテキストスイッチが生じ、オーバーヘッドとなる。実施例1では、マルチプロセッサシステムであることを利用して、TCP/IPプロトコル処理を行うプロセッサと、RDMAプロトコル処理を行うプロセッサを別々に分けたため、コンテキストスイッチによるオーバーヘッドを低減することができ、高速なネットワーク処理を実現することができる。また、RDMA機能を使わない通信の際は、TCP/IPプロトコルスタックが実装されたプロセッサだけを利用して通信を行うことができる。
上記の実施の形態では、各ノード200内にあるメインメモリ220にTCP/IP送受信バッファ224を設ける構成を説明したが、図7Bに示すように、各ノード200に搭載されたNIC30内にTCP/IP送受信バッファ224を設ける構成であってもよい。この場合、メインメモリ220とNIC30内のバッファの間でRDMAパケット229をコピーする必要がなく、いわゆる「ゼロコピー」を実現することができ、メモリ間コピーによるオーバーヘッドをなくすことができる。
実施例2
図8は、実施例2のノード200の構成図である。実施例1では、TOE機能をもたない通常のNIC30がノード200に搭載されている場合を説明したが、実施例2では、TOE機能をもつTOE−NIC31がノード200に搭載されている場合を説明する。システム起動時の設定により、TOE−NIC31が動作可能になるため、動作しないNIC30に関わる構成については図示していない。TOE−NIC31にはTCP/IPプロトコルスタックが実装されており、TOE−NIC31内部でTCP/IPのプロトコル処理を行うことができる。
実施例2でも、実施例1と同様に、発行元ノード200aと発行先ノード200bの間でRDMAライトが実行される場合の動作を説明する。発行元ノード200aと発行先ノード200bの間で行われるRDMAライト処理のシーケンスは、実施例1の図5と同じである。図9および図10を参照し、実施例2において、図5のRDMAライト処理シーケンスの各ステップが図8の構成によって実行される様子を詳しく説明する。図9は、図5のRDMAライト処理シーケンスの内、RDMA機能を使用しないTCPによる送受信動作を示す図である。一方、図10は、図5のRDMAライト処理シーケンスの内、RDMA機能を使用するSDPによる送受信動作を示す図である。以下、実施例1と同様の動作については適宜説明を簡略にする。
(1)ステップS10の動作
図8において、発行元ノード200aのユーザ空間にあるアプリケーションプログラム11u−1または22u−1により、RDMAライトのリクエストが発行される。実施例1で説明したように、発行元ノード200aのソケットスイッチ50は、RDMAライトのリクエストが通常のTCP/IPにより送信されるべきであることを識別する。実施例2では、RDMA動作をしない通常の通信もRDMAプロトコルスタックが実装されたSPU21aにおいて実行される。
発行元ノード200aのソケット層21r−1は、ソケットスイッチ50のコマンドの引数により、RDMAプロトコル処理を必要としない通常のTCP/IPの通信であることを識別し、SDP層21r−2、RDMA層21r−3、DDP層21r−4、およびMPA層21r−5のRDMAプロトコルスタックをバイパスして、直接デバイスドライバ21r−6にRDMAライトのリクエストメッセージを渡す。
図9を参照する。発行元ノード200aにおいて、ユーザモードで動作しているSPU22aがTOE−NIC31a内のプロセッサ32aにイベント通知する。プロセッサ32aは、ユーザ空間のアプリケーション用バッファ222aに書きこまれたRDMAライトのリクエストメッセージ223aを読み出し、TCP/IPパケットとして組み立て、TOE−NIC31a内に設けられたTCP/IP送受信バッファ224aにRDMAライトのリクエストパケット225aを書き込む。TOE−NIC31aは、TCP/IP送受信バッファ224a内のリクエストパケット225aをネットワーク100に送信する。
(2)ステップS12の動作
発行元ノード200aにおいてRDMAライトのリクエストの発行が終わると、図10に示すように、発行元ノード200aのユーザモードにあるSPU22aがアプリケーションを実行し、RDMAライトすべきRDMAメッセージ227aをアプリケーション用バッファ222aに書き込む。
(3)ステップS14の動作
一方、発行先ノード200bは、ステップS10において発行元ノード200aが発行したRDMAライトのリクエストを受け取り、RDMAライト用のメモリ領域を準備する。図9に示すように、発行先ノード200bのTOE−NIC31bはネットワーク100からRDMAライトのリクエストパケット225bを受信し、TOE−NIC31b内に設けられたTCP/IP送受信バッファ224bに格納する。
TOE−NIC31b内のプロセッサ32bは、TCP/IP送受信バッファ224bに受信されたRDMAライトのリクエストパケット225bを解析し、パケット内のリクエストメッセージ223bをリアセンブルしてユーザ空間のアプリケーション用バッファ222bにコピーする。その後、プロセッサ32bは、ユーザモードにあるSPU22bにイベント通知し、RDMAライトのリクエストメッセージが受信されたことを通知する。
プロセッサ32bからイベント通知を受けたSPU22bはアプリケーション22u−1を実行し、RDMAライトのリクエストメッセージ223bを読み、アプリケーション用バッファ222b内にRDMAライトに必要なメモリ領域(「RDMAライト用領域」)226bを確保する。
(4)ステップS16の動作
その後、発行先ノード200bのユーザ空間にあるアプリケーション22u−1は、レディメッセージを発行元ノード200aに返信する。RDMAライトのリクエストメッセージの場合と同様、レディメッセージは、発行先ノード200bのソケットスイッチ50がTCP/IPプロトコルを指定したコマンドを実行することにより、SPU21においてRDMAプロトコルスタックをスキップしてデバイスドライバ21r−6に渡され、TOE−NIC31bのTOE機能によりTCP/IPプロトコル処理がなされ、ネットワーク100に送信される。
(5)ステップS18の動作
図8および図10を参照して、RDMAライトの動作を詳しく説明をする。発行元ノード200aにおいてアプリケーションプログラム11u−1あるいは22u−1がRDMAライトのコマンドを発行する。
ソケットスイッチ50がsocketコマンドの引数によってRDMA動作であることを認識し、RDMAプロトコルスタックが実装されているSPU21aにイベント通知し、SPU21aがRDMAパケットを生成する。
図10を参照して、RDMAパケットの生成過程を説明する。発行元ノード200aにおいて、ユーザモードのSPU22aからイベント通知を受け取ったカーネルモードのSPU21aは、ユーザ空間にあるアプリケーション用バッファ222aに書き込まれたRDMAメッセージ227aをセグメント化し、RDMAパケットを組み立て、FIFOバッファ221aにRDMAパケットをキューイングする。
FIFOバッファ221aは、RDMAプロトコルスタックが実装されたSPU21と、TCP/IPプロトコルスタックが実装されたプロセッサ32aとの間で共有されており、SPU21は、TOE−NIC31a内のプロセッサ32aにイベント通知し、FIFOバッファ221aに送信すべきRDMAパケットがあることを知らせる。イベント通知されたプロセッサ32aは、FIFOバッファ221aにあるRDMAパケットをTCP/IPパケットに組み立て、TOE−NIC31a内に設けられたTCP/IP送受信バッファ224aにコピーする。TOE−NIC31aは、TCP/IP送受信バッファ224a内のRDMAパケット229aをネットワーク100に送出する。
一方、発行先ノード200bにおいても、ソケットAPI11u−1あるいは22u−2によってRDMA機能を使用することが宣言される。ソケットスイッチ50により、ユーザレベルのSPU22bからカーネルレベルのSPU21bおよびTOE−NIC31b内のプロセッサ32bへRDMAイベントがあることが通知される。
発行先ノード200bのTOE−NIC31bは、ネットワーク100からRDMAパケット229bを受信し、TCP/IP送受信バッファ224bに格納する。TOE−NIC31b内のプロセッサ32bは、TCP/IP送受信バッファ224b内のRDMAパケット229bをTCP/IPプロトコルにしたがって解析し、FIFOバッファ221bにTCP/IPパケットをキューイングする。FIFOバッファ221bは、TOE−NIC31b内のプロセッサ32bとRDMAプロトコルスタック21rが実装されたSPU21bの間で共有されている。TCP/IPプロトコル処理の後、プロセッサ32bは、RDMAプロトコル処理を行うSPU21bにイベント通知し、RDMAパケットが受信されたことを知らせる。
RDMAプロトコルスタック21rが実装されたSPU21bは、RDMAプロトコルにしたがってFIFOバッファ221bにあるRDMAパケットを解析し、RDMAライトすべきメッセージをリアセンブルし、アプリケーション用バッファ222bのRDMAライト用領域226bに書き込む。
なお、ここで述べたFIFOバッファ221a、221bは必ずしも、各ノード200a、200b内のメインメモリにある必要はなく、TOE−NIC31a、31b内に設けられてもよい。
(6)ステップS20の動作
RDMAライトの発行が終わると、発行元ノード200aは「完了」メッセージを発行先ノード200bに送信する。「完了メッセージ」は、図9で説明した、RDMA機能を用いない通常のTCP/IPパケットで送信される。発行先ノード200bは「完了」メッセージを受信し、RDMAライト用領域226bを解放し、RDMAライトの動作を終了する。
以上述べたように、実施例2によれば、RDMAプロトコル処理をソフトウェアでエミュレートすることにより、RDMA対応のNICでなくてもRDMA機能を用いた通信を行うことができる。また、実施例2では、マルチプロセッサシステムにおいて、RDMAプロトコル処理を行うプロセッサをユーザレベルでアプリケーションを実行するプロセッサとは別に設けたことで、RDMAプロトコル処理を効率良く実行することができる。また、NIC内のTOE機能を実行するプロセッサが、RDMAプロトコル処理を担当するプロセッサに負荷をかけないで、RDMAプロトコル処理されたパケットをTCP/IPプロトコル処理することができる。
実施例3
実施例1ではTOE機能をもたない通常のNIC30を用いたRDMA動作を説明し、実施例2ではTOE機能をもつTOE−NIC31を用いたRDMA動作を説明した。実際には、NICが複数枚実装されており、TOE機能のないNICとTOE機能のあるNICが共存するネットワークノードの存在する。そのようなネットワークノードの一例としてルータがある。ルータはポート毎に異なるNICを搭載するため、複数の異なる種類のNICが共存することがある。また、別の例として、マルチプロセッサシステムにおいて各プロセッサに異なるIPアドレスを割り当て、プロセッサ毎にNICを設ける構成もある。以下では、実施例3として、TOE機能のないNICとTOE機能のあるNICが共存するネットワークノードの構成を取り上げ、TOE機能のないNICとTOE機能のあるNICを動的に切り替えて、通信する仕組みを説明する。
図11は、実施例3のノード200の構成図である。ノード200内には、TOE機能のないNIC30とTOE機能のあるTOE−NIC31とが搭載されており、I/Oブリッジ240を介してMPU210の各プロセッサと接続している。TCP/IPプロトコルスタック10s、20sが実装されたPU10、SPU20は、TOE機能のないNIC30を利用して通信し、RDMAプロトコルスタック21rが実装されたSPU21は、TOE機能のあるTOE−NIC31を利用して通信する。
RDMAプロトコルスタック21rのMPA層21r−5の下に、パケットのIPアドレスを判別するためのIPA(Internet Protocol Address)判別層21r−7を新たに設ける。IPA判別層21r−7には、送信元IPアドレスをNICのMACアドレスに対応づけたアドレステーブルをあらかじめ用意しておく。ここで、MACアドレスは、一つ一つのNICに割り当てられた固有のアドレスである。IPA判別層21r−7は、メッセージを送信する際に、IPパケットの送信元アドレスを取得し、このアドレステーブルを参照することにより、どのNICから送信すべきパケットであるかを判定する。
IPA判別層21r−7において、パケットの送信元IPアドレスがTOE機能のないNIC30のMACアドレスに対応づけられていることが判明すると、RDMAプロトコルスタック21rが実装されたSPU21は、TCP/IPプロトコルスタック20sが実装されたSPU20にイベント通知する。これにより、当該パケットはSPU20のTCP/IPプロトコルスタック20sによりプロトコル処理され、NIC30から送信される。
IPA判別層21r−7において、パケットの送信元IPアドレスがTOE機能のあるTOE−NIC31のMACアドレスに対応づけられていることが判明すると、DMAプロトコルスタック21rが実装されたSPU21は、自分自身にイベント通知するか、あるいは、ドライバ21r−6へとパケットを渡す。これにより、当該パケットはTOE−NIC31に供給され、TOE−NIC31のTOE機能を用いてTCP/IPにしたがったプロトコル処理がなされ、ネットワークに送信される。
ネットワークからパケットを受信する際は、通常のTCP/IP通信であるか、あるいは、RDMA機能を用いた通信であるかは、通信を開始するときに指定されるため、TCP/IPプロトコルスタック10s、20sに特別な機能を設ける必要はない。
実施例3によれば、TOE機能のないNICとTOE機能のあるNICが混在するシステムにおいても、両者を動的に切り替えて通信を行うことができ、システムに柔軟性と拡張性をもたせることができる。
実施の形態2
実施の形態2では、実施の形態1で説明したノード200の応用例として、RDMA機能を利用したサーバ−クライアントシステムを説明する。
図12は、実施の形態2に係るネットワークシステムの構成図である。このネットワークシステムは、複数のサーバ310a、310bと複数のクライアント202a〜202nがネットワークで接続されて構成される。複数のサーバ310a、310bは、スイッチ320a、320bを介してネットワークに接続しており、これらはサーバクラスタ300を構成し、クライアント202a〜202nから見た場合、ひとつのサーバとして機能する。以下、複数のサーバ310a、310bを総称してサーバ310と呼び、複数のクライアント202a〜202nを総称してクライアント202と呼ぶ。
サーバ310にはRDMA対応のNICが搭載されており、サーバ310のCPUの負荷を低減させることができる。一方、クライアント202には、ソフトウェアでRDMAをエミュレートするRDMA機能が実装されており、いわゆるiWARPが実現して、サーバ310との間でRDMAによる通信が可能となり、サーバ310の負荷を低減させるのに貢献する。
図13は、クライアント202とサーバ310の構成図である。クライアント202は、実施の形態1で説明したマルチプロセッサシステムのように、RDMAプロトコルスタックが実装されるプロセッサとTCP/IPプロトコルスタックが実装されるプロセッサが異なってもよいが、実施の形態2では、クライアント202はシングルプロセッサシステムであり、RDMAプロトコルスタックとTCP/IPプロトコルスタックが1つのプロセッサで実行される場合を説明する。
クライアント202のユーザレベルにはバッファ60が設けられ、サーバ310に送信するデータとサーバ310から受信するデータが格納される。DAFS(Direct Access File System)API62は、RDMAプロトコル上で動作するファイルシステムであるDAFSのアプリケーションプログラムインタフェース(API)である。uDAPL(user Direct Access Programming Library)64は、RDMA機能を実現するための汎用APIである。クライアント202は、これらのAPIを使用して、RDMA機能を用いてサーバ310のデータにアクセスする。
カーネルレベルには、ソケット層71、RDMA層72、TCP層73、IP層74、NICドライバ75が実装され、RDMAリードあるいはRDMAライトのパケットがプロトコル処理され、ギガビットイーサネット(商標または登録商標)80を介してネットワーク100に送信される。
サーバ310のユーザレベルにはバッファ80が設けられ、クライアント202に送信するデータとクライアント202から受信するデータが格納される。また、クライアント202と同様に、DAFSAPI82とuDAPL84が実装される。また、カーネルレベルのHCAドライバ88にアクセスするための仮想的なAPIであるVAPI86が実装される。
サーバ310にはRDMA対応のNIC(以下、「RNIC」という)90が搭載されており、カーネルレベルのHCAドライバ88により制御される。RNIC90においてRDMAプロトコル処理がハードウェアで実行され、サーバ310のCPUを用いることなく、バッファ80に対してデータが直接読み書きされる。なお、RNIC90にはTOE機能も搭載されており、ハードウェアでTCP/IPプロトコル処理もなされる。
図13において、クライアント202からサーバ310に対してRDMAリードあるいはRDMAライトが発行されると、クライアント202のRDMA層72においてソフトウェアでRDMA機能が実行され、サーバ310のRNIC90においてハードウェアでRDMA機能が実行される。これにより、クライアント202は、サーバ310のCPUに負荷をかけないで、サーバ310のバッファ80に直接アクセスすることができる。
実施の形態2によれば、サーバ−クライアントシステムにおいて、サーバ側にRDMA機能が実装されており、クライアント側に必ずしもRNICが実装されていない場合でも、クライアント側でRDMA機能をエミュレートするため、サーバとクライアント間でRDMA機能を前提とした通信を行うことができる。これにより、サーバに搭載されたRDMA機能を有効活用して、高速な通信を行うことができる。特定のクライアントにおいてRNICの搭載ができなかったり、RNICの搭載が遅れる事情があっても、サーバ側でRDMA機能を停止させる必要がないため、RNICが搭載されているかどうかに関係なく、システムにクライアントを追加していくことができ、サーバ−クライアントシステムの拡張が容易である。
以上説明したように、いずれの実施の形態においてもマルチプロセッサシステム上に、RDMAプロトコルおよびTCPプロトコルを常駐させるので、新規にRDMA対応のNICを購入することなく、低コストで、RDMA機能をエミュレートすることが可能となる。実施の形態ではRDMAプロトコルスタックをカーネルレベルに実装する例を説明したが、RDMAプロトコルスタックをユーザレベルに実装してもよい。RDMA機能をTCP/IP上に実装する技術は、一般にiWARPと呼ばれ、ネットワーク上の通信先のノードのメモリに直接データを書き込むことで処理遅延を減らすことができる。実施の形態では、iWARPをソフトウェアで実装することで、RDMAのハードウェアをもたないシステムでもRDMA機能を実現可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
実施の形態では、プロセッサ間でイベント通知をすることにより、送受信データの存在を他のプロセッサに知らせたが、これ以外にも、たとえば、PUあるいはSPUが受信バッファをポーリングすることにより、イベントを検知してもよい。
また、各ノード200内のメインメモリ220を用いて、パケット用のバッファを構築したが、たとえば、図2における、MPU210内の各プロセッサが個別にローカルメモリをもっており、そのローカルメモリを用いてパケット用のバッファを構築してもよい。
なお、ソケットプログラムでは、送受信時にsendあるいはrecvコマンドを発行するが、実施の形態では説明の簡略化のため、ソケットの処理の詳細は省略した。
本発明の実施の形態に係るネットワークシステムを示す図である。 図1のノードの構成図である。 図2のノードのMPUに実装されたTCP/IPプロトコルスタックおよびRDMA機能を説明する図である。 実施例1のノードの構成図である。 実施例1における発行元ノードと発行先ノードの間で行われるRDMAライト処理のシーケンス図である。 図5のRDMAライト処理シーケンスの内、RDMA機能を使用しないTCPによる送受信動作を示す図である。 図5のRDMAライト処理シーケンスの内、RDMA機能を使用するSDPによる送受信動作を示す図である。 各ノードに搭載されたNIC内にTCP/IP送受信バッファを設ける構成を説明する図である。 実施例2のノードの構成図である。 実施例2において、図5のRDMAライト処理シーケンスの内、RDMA機能を使用しないTCPによる送受信動作を示す図である。 実施例2において、図5のRDMAライト処理シーケンスの内、RDMA機能を使用するSDPによる送受信動作を示す図である。 実施例3のノードの構成図である。 実施の形態2に係るネットワークシステムの構成図である。 図12のクライアントとサーバの構成図である。
符号の説明
10 PU、 11 PU、20 SPU、 21 SPU、 22 SPU、 30 NIC、 31 TOE−NIC、 50 ソケットスイッチ、 100 ネットワーク、 200 ノード、 210 MPU、 220 メインメモリ、 222 アプリケーション用バッファ、 224 TCP/IP送受信バッファ、 230 NIC、 240 I/Oブリッジ。

Claims (13)

  1. リモートダイレクトメモリアクセス機能をエミュレートする第1プロセッサと、
    前記第1プロセッサによりリモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、
    前記バッファからパケットを読み込み、TCP/IPプロトコル処理を施す第2プロセッサと、
    前記第2プロセッサにより生成されたTCP/IPパケットをネットワークに送信するネットワークインターフェースカードとを含むことを特徴とするネットワークプロセッサシステム。
  2. ユーザレベルで処理を実行するプロセッサであって、送信すべきメッセージをユーザ空間に生成する第1プロセッサと、
    カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートするプロセッサであって、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立てる第2プロセッサと、
    前記第2プロセッサから出力される前記リモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、
    カーネルレベルでTCP/IPプロトコル処理を実行するプロセッサであって、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコルにしたがったパケットに組み立てる第3プロセッサと、
    前記第3プロセッサにより生成されたTCP/IPパケットをネットワークに送信するネットワークインターフェースカードとを含むことを特徴とするネットワークプロセッサシステム。
  3. 送信すべきメッセージをリモートダイレクトメモリアクセス機能を用いることなく送信する場合、前記第3プロセッサは、前記第1プロセッサからの通知を受けて、前記メッセージをTCP/IPにしたがったパケットに組み立てることを特徴とする請求項2に記載のネットワークプロセッサシステム。
  4. 前記第1プロセッサは、指定されたプロトコルの違いを判別してイベント通知先を変更するプロトコルスイッチの機能を有し、
    前記プロトコルスイッチは、
    リモートダイレクトメモリアクセスのプロトコルが指定された場合、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立てるために前記第2プロセッサにイベント通知し、
    リモートダイレクトメモリアクセスのプロトコルが指定されない場合、前記メッセージをTCP/IPにしたがったパケットに組み立てるために前記第3プロセッサにイベント通知することを特徴とする請求項3に記載のネットワークプロセッサシステム。
  5. リモートダイレクトメモリアクセス機能をエミュレートするプロセッサと、
    前記プロセッサから出力されるリモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、
    前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すためのTCP/IPオフロード機能をもつネットワークインタフェースカードとを含むことを特徴とするネットワークプロセッサシステム。
  6. ユーザレベルで処理を実行するプロセッサであって、送信すべきメッセージをユーザ空間に生成する第1プロセッサと、
    カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートするプロセッサであって、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立てる第2プロセッサと、
    前記第2プロセッサから出力される前記リモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、
    前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すTCP/IPオフロード機能をもつネットワークインタフェースカードとを含むことを特徴とするネットワークプロセッサシステム。
  7. 送信すべきメッセージをリモートダイレクトメモリアクセス機能を用いることなく送信する場合、前記TCP/IPオフロード機能をもつネットワークインタフェースカードは、前記第1プロセッサからの通知を受けて、前記メッセージをTCP/IPにしたがったパケットに組み立てることを特徴とする請求項6に記載のネットワークプロセッサシステム。
  8. 前記第1プロセッサは、指定されたプロトコルの違いを判別してイベント通知先を変更するプロトコルスイッチの機能を有し、
    前記プロトコルスイッチは、
    リモートダイレクトメモリアクセスのプロトコルが指定された場合、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立てるために前記第2プロセッサにイベント通知し、
    リモートダイレクトメモリアクセスのプロトコルが指定されない場合、前記メッセージをTCP/IPにしたがったパケットに組み立てるために前記TCP/IPオフロード機能をもつネットワークインタフェースカードにイベント通知することを特徴とする請求項7に記載のネットワークプロセッサシステム。
  9. リモートダイレクトメモリアクセス機能をエミュレートする第1プロセッサと、
    前記第1プロセッサによりリモートダイレクトメモリアクセスのプロトコルにしたがって生成されたパケットをキューイングするバッファと、
    前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施す第2プロセッサと、
    前記第2プロセッサにより生成されたTCP/IPパケットをネットワークに送信する第1ネットワークインタフェースカードと、
    前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すためのTCP/IPオフロード機能をもつ第2ネットワークインタフェースカードとを含み、
    前記第1プロセッサは、前記パケットの送信元IPアドレスを前記第1ネットワークインタフェースカードのMACアドレスまたは前記第2ネットワークインタフェースカードのMACアドレスに対応づけたテーブルを参照して、前記パケットの送信元IPアドレスに応じて、前記パケットを送出するためのネットワークインタフェースを前記第1ネットワークインタフェースカードまたは前記第2ネットワークインタフェースカードのいずれかに振り分ける機能を有し、
    前記パケットが前記第1ネットワークインタフェースカードに振り分けられる場合は、前記パケットは、前記第2プロセッサによりTCP/IPプロトコル処理がなされて、前記第1ネットワークインタフェースカードから送出され、
    前記パケットが前記第2ネットワークインタフェースカードに振り分けられる場合は、前記パケットは、前記第2ネットワークインタフェースカードのTCP/IPオフロード機能によりTCP/IPプロトコル処理がなされて、前記第2ネットワークインタフェースカードから送出されることを特徴とするネットワークプロセッサシステム。
  10. ユーザレベルで処理を実行する第1プロセッサに、送信すべきメッセージをユーザ空間に生成するステップを実行させ、
    カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートする第2プロセッサに、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立て、バッファにキューイングするステップを実行させ、
    カーネルレベルでTCP/IPプロトコル処理を実行する第3プロセッサに、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコルにしたがったパケットに組み立てるステップを実行させることを特徴とするプログラム。
  11. ユーザレベルで処理を実行する第1プロセッサに、送信すべきメッセージをユーザ空間に生成するステップを実行させ、
    カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートする第2プロセッサに、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立て、バッファにキューイングするステップを実行させ、
    ネットワークインタフェースカード内でTCP/IPオフロード機能を実行する第3プロセッサに、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すステップを実行させることを特徴とするプログラム。
  12. ユーザレベルで処理を実行する第1プロセッサが、送信すべきメッセージをユーザ空間に生成するステップと、
    カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートする第2プロセッサが、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立て、バッファにキューイングするステップと、
    カーネルレベルでTCP/IPプロトコル処理を実行する第3プロセッサが、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコルにしたがったパケットに組み立てるステップとを含むことを特徴とするネットワークプロトコル処理方法。
  13. ユーザレベルで処理を実行する第1プロセッサが、送信すべきメッセージをユーザ空間に生成するステップと、
    カーネルレベルでリモートダイレクトメモリアクセス機能をエミュレートする第2プロセッサが、前記第1プロセッサからの通知を受けて、前記メッセージをリモートダイレクトメモリアクセスのプロトコルにしたがったパケットに組み立て、バッファにキューイングするステップと、
    ネットワークインタフェースカード内でTCP/IPオフロード機能を実行する第3プロセッサが、前記第2プロセッサからの通知を受けて、前記バッファから前記パケットを読み込み、TCP/IPプロトコル処理を施すステップを実行することを特徴とするネットワークプロトコル処理方法。
JP2006190053A 2006-07-11 2006-07-11 ネットワークプロセッサシステムおよびネットワークプロトコル処理方法 Pending JP2008020977A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006190053A JP2008020977A (ja) 2006-07-11 2006-07-11 ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
US11/774,998 US8671152B2 (en) 2006-07-11 2007-07-09 Network processor system and network protocol processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006190053A JP2008020977A (ja) 2006-07-11 2006-07-11 ネットワークプロセッサシステムおよびネットワークプロトコル処理方法

Publications (1)

Publication Number Publication Date
JP2008020977A true JP2008020977A (ja) 2008-01-31

Family

ID=38949133

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006190053A Pending JP2008020977A (ja) 2006-07-11 2006-07-11 ネットワークプロセッサシステムおよびネットワークプロトコル処理方法

Country Status (2)

Country Link
US (1) US8671152B2 (ja)
JP (1) JP2008020977A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020777A (ja) * 2008-07-14 2010-01-28 Safenet Inc ゼロ−インストールipセキュリティ
JP2013524342A (ja) * 2010-04-02 2013-06-17 マイクロソフト コーポレーション Rdmaセマンティクスの高速記憶装置へのマッピング
US8510491B1 (en) * 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
JP2014501003A (ja) * 2010-11-12 2014-01-16 アルカテル−ルーセント 遠隔通信ネットワーク・アプリケーションのための、ロックレスでゼロ・コピーのメッセージング・スキーム
KR20160075730A (ko) * 2013-12-26 2016-06-29 인텔 코포레이션 노드들 사이의 i/o 서비스 및 메모리 공유
JP2017117448A (ja) * 2015-12-26 2017-06-29 インテル コーポレイション アプリケーションレベルネットワークキューイング

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050066045A1 (en) * 2003-09-03 2005-03-24 Johnson Neil James Integrated network interface supporting multiple data transfer protocols
US7430584B1 (en) * 2008-03-12 2008-09-30 Gene Fein Data forwarding storage
US7636759B1 (en) * 2008-09-29 2009-12-22 Gene Fein Rotating encryption in data forwarding storage
US7599997B1 (en) 2008-08-01 2009-10-06 Gene Fein Multi-homed data forwarding storage
US7636761B1 (en) * 2008-09-29 2009-12-22 Gene Fein Measurement in data forwarding storage
US8458285B2 (en) 2008-03-20 2013-06-04 Post Dahl Co. Limited Liability Company Redundant data forwarding storage
US9203928B2 (en) 2008-03-20 2015-12-01 Callahan Cellular L.L.C. Data storage and retrieval
US7877456B2 (en) * 2008-04-08 2011-01-25 Post Dahl Co. Limited Liability Company Data file forwarding storage and search
US8386585B2 (en) * 2008-04-25 2013-02-26 Tajitshu Transfer Limited Liability Company Real-time communications over data forwarding framework
US8452844B2 (en) * 2008-05-07 2013-05-28 Tajitshu Transfer Limited Liability Company Deletion in data file forwarding framework
US8599678B2 (en) 2008-07-10 2013-12-03 Tajitshu Transfer Limited Liability Company Media delivery in data forwarding storage network
US8370446B2 (en) 2008-07-10 2013-02-05 Tajitshu Transfer Limited Liability Company Advertisement forwarding storage and retrieval network
US8478823B2 (en) 2008-09-29 2013-07-02 Tajitshu Transfer Limited Liability Company Selective data forwarding storage
US8352635B2 (en) * 2008-09-29 2013-01-08 Tajitshu Transfer Limited Liability Company Geolocation assisted data forwarding storage
WO2011102488A1 (ja) * 2010-02-22 2011-08-25 日本電気株式会社 通信制御システム、スイッチングノード、通信制御方法、及び通信制御用プログラム
US8832216B2 (en) * 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
CN103179087B (zh) * 2011-12-21 2016-07-06 上海飞田通信技术有限公司 应用层到TCP层异步Socket数据传输方法及系统
US9002970B2 (en) * 2012-07-12 2015-04-07 International Business Machines Corporation Remote direct memory access socket aggregation
US9063928B2 (en) * 2012-07-12 2015-06-23 International Business Machines Corporation Processing data packets from a receive queue in a remote direct memory access device
US10042682B2 (en) * 2014-01-30 2018-08-07 Hewlett Packard Enterprise Development Lp Copy message from application buffer to send buffer within kernel
US9648081B2 (en) 2014-04-10 2017-05-09 Mellanox Technologies, Ltd. Network-attached memory
US9887939B2 (en) 2015-03-11 2018-02-06 International Business Machines Corporation Transmitting multi-destination packets in overlay networks
US9912750B2 (en) * 2014-07-25 2018-03-06 Unisys Corporation Data path selection for network transfer using high speed RDMA or non-RDMA data paths
JP2016045510A (ja) * 2014-08-19 2016-04-04 富士通株式会社 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム
JP6763307B2 (ja) * 2015-01-16 2020-09-30 日本電気株式会社 計算機、デバイス制御システムおよびデバイス制御方法
US10412002B1 (en) 2015-03-25 2019-09-10 Amazon Technologies, Inc. Processing packet data using an offload engine in a service provider environment
US20160294983A1 (en) * 2015-03-30 2016-10-06 Mellanox Technologies Ltd. Memory sharing using rdma
US9952980B2 (en) 2015-05-18 2018-04-24 Red Hat Israel, Ltd. Deferring registration for DMA operations
US11880326B2 (en) 2016-08-12 2024-01-23 Liqid Inc. Emulated telemetry interfaces for computing units
US11294839B2 (en) * 2016-08-12 2022-04-05 Liqid Inc. Emulated telemetry interfaces for fabric-coupled computing units
JP2018045438A (ja) * 2016-09-14 2018-03-22 富士通株式会社 並列処理装置、送信プログラム、受信プログラム及びデータ転送方法
CN109145638B (zh) * 2018-07-20 2021-01-01 武汉斗鱼网络科技有限公司 一种获取自加载模块函数的方法及装置
TWI731287B (zh) * 2018-12-22 2021-06-21 威聯通科技股份有限公司 網路應用程式產品及處理應用層協定的方法
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11182221B1 (en) * 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
US11392740B2 (en) 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware
US11200096B1 (en) 2021-03-26 2021-12-14 SambaNova Systems, Inc. Resource allocation for reconfigurable processors
CN113064846A (zh) * 2021-04-14 2021-07-02 中南大学 基于Rsockets协议的零拷贝数据传输方法
US11924106B2 (en) * 2021-08-24 2024-03-05 Hewlett Packard Enterprise Development Lp Method and system for granular dynamic quota-based congestion management
US12242413B2 (en) * 2021-08-27 2025-03-04 Keysight Technologies, Inc. Methods, systems and computer readable media for improving remote direct memory access performance
US12229057B2 (en) 2023-01-19 2025-02-18 SambaNova Systems, Inc. Method and apparatus for selecting data access method in a heterogeneous processing system with multiple processors
US12210468B2 (en) 2023-01-19 2025-01-28 SambaNova Systems, Inc. Data transfer between accessible memories of multiple processors incorporated in coarse-grained reconfigurable (CGR) architecture within heterogeneous processing system using one memory to memory transfer operation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06309251A (ja) * 1993-04-26 1994-11-04 Hitachi Ltd 高速の通信アダプタを実装した計算機
WO2002017034A2 (en) * 2000-08-24 2002-02-28 Voltaire Advanced Data Security Ltd. System and method for highly scalable high-speed content-based filtering and load balancing in interconnected fabrics
JP2005310130A (ja) * 2004-04-21 2005-11-04 Internatl Business Mach Corp <Ibm> データ転送要求を実行するための方法、システム、およびプログラム
WO2005114339A2 (en) * 2004-05-12 2005-12-01 Pandya Ashish A Runtime adaptable protocol processor
WO2006055691A2 (en) * 2004-11-16 2006-05-26 Secure64 Software Corporation Queued, asynchronous communication architecture interface

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4406604B2 (ja) * 2002-06-11 2010-02-03 アシシュ エイ パンドヤ Tcp/ip、rdma、及びipストレージアプリケーションのための高性能ipプロセッサ
US7565454B2 (en) * 2003-07-18 2009-07-21 Microsoft Corporation State migration in multiple NIC RDMA enabled devices
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US7457861B1 (en) * 2003-12-05 2008-11-25 Unisys Corporation Optimizing virtual interface architecture (VIA) on multiprocessor servers and physically independent consolidated NICs
US8984140B2 (en) * 2004-12-14 2015-03-17 Hewlett-Packard Development Company, L.P. Managing connections through an aggregation of network resources providing offloaded connections between applications over a network

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06309251A (ja) * 1993-04-26 1994-11-04 Hitachi Ltd 高速の通信アダプタを実装した計算機
WO2002017034A2 (en) * 2000-08-24 2002-02-28 Voltaire Advanced Data Security Ltd. System and method for highly scalable high-speed content-based filtering and load balancing in interconnected fabrics
JP2005310130A (ja) * 2004-04-21 2005-11-04 Internatl Business Mach Corp <Ibm> データ転送要求を実行するための方法、システム、およびプログラム
WO2005114339A2 (en) * 2004-05-12 2005-12-01 Pandya Ashish A Runtime adaptable protocol processor
JP2008503799A (ja) * 2004-05-12 2008-02-07 アシシュ エイ パンドヤ ランタイム適応プロトコルプロセッサ
WO2006055691A2 (en) * 2004-11-16 2006-05-26 Secure64 Software Corporation Queued, asynchronous communication architecture interface
JP2008524878A (ja) * 2004-11-16 2008-07-10 セキュア64・ソフトウェア・コーポレイション キュー非同期通信アーキテクチャーインタフェース

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510491B1 (en) * 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
JP2010020777A (ja) * 2008-07-14 2010-01-28 Safenet Inc ゼロ−インストールipセキュリティ
JP2013524342A (ja) * 2010-04-02 2013-06-17 マイクロソフト コーポレーション Rdmaセマンティクスの高速記憶装置へのマッピング
US8984084B2 (en) 2010-04-02 2015-03-17 Microsoft Technology Licensing, Llc Mapping RDMA semantics to high speed storage
JP2014501003A (ja) * 2010-11-12 2014-01-16 アルカテル−ルーセント 遠隔通信ネットワーク・アプリケーションのための、ロックレスでゼロ・コピーのメッセージング・スキーム
KR20160075730A (ko) * 2013-12-26 2016-06-29 인텔 코포레이션 노드들 사이의 i/o 서비스 및 메모리 공유
KR101895763B1 (ko) 2013-12-26 2018-09-07 인텔 코포레이션 노드들 사이의 i/o 서비스 및 메모리 공유
US10915468B2 (en) 2013-12-26 2021-02-09 Intel Corporation Sharing memory and I/O services between nodes
JP2017117448A (ja) * 2015-12-26 2017-06-29 インテル コーポレイション アプリケーションレベルネットワークキューイング

Also Published As

Publication number Publication date
US20080013448A1 (en) 2008-01-17
US8671152B2 (en) 2014-03-11

Similar Documents

Publication Publication Date Title
JP2008020977A (ja) ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
Shashidhara et al. {FlexTOE}: Flexible {TCP} offload with {Fine-Grained} parallelism
Rizzo et al. Vale, a switched ethernet for virtual machines
US7274706B1 (en) Methods and systems for processing network data
US8713180B2 (en) Zero-copy network and file offload for web and application servers
EP3238401B1 (en) Network extended tcp splicing
TWI222288B (en) End node partitioning using virtualization
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
JP6055310B2 (ja) 仮想記憶ターゲットオフロード技術
JP2006516054A (ja) Tcp/ip、rdma、及びipストレージアプリケーションのための高性能ipプロセッサ
JPWO2011096307A1 (ja) プロキシ装置とその動作方法
JP7344315B2 (ja) ネットワークベースのサービスのためのfire-and-forgetオフロードメカニズム
US20050091334A1 (en) System and method for high performance message passing
Tian et al. Accelerating distributed deep learning using multi-path RDMA in data center networks
JP2003242097A (ja) クロスコール機能を備えるディスク制御装置
CN115379018A (zh) 使用数据路径状态复制和中间设备映射进行服务分配的方法和系统
JP2007193786A (ja) ネットワーク・プロトコル・スタック隔離のためのネットワーク・アーキテクチャ、方法、およびコンピュータ・プログラム(ネットワーク・プロトコル・スタック隔離)
Cui et al. Optimizing overlay-based virtual networking through optimistic interrupts and cut-through forwarding
WO2022120974A1 (zh) 一种虚拟化安全网关系统
JP3628514B2 (ja) 計算機間データ送受信方法
GB2532732A (en) Integrating a communication bridge into a data procesing system
Riddoch et al. Distributed computing with the CLAN network
JP3792538B2 (ja) ネットワークインタフェースカードを用いるピアレベル通信用システムおよび方法
JP4123712B2 (ja) 通信処理方法ならびに通信処理プログラムが記録される記録媒体
WO2018131550A1 (ja) コネクション管理ユニット、およびコネクション管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090702

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110825

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120214