JP4657720B2 - ネットワーク・インターフェースおよびプロトコル - Google Patents

ネットワーク・インターフェースおよびプロトコル Download PDF

Info

Publication number
JP4657720B2
JP4657720B2 JP2004535685A JP2004535685A JP4657720B2 JP 4657720 B2 JP4657720 B2 JP 4657720B2 JP 2004535685 A JP2004535685 A JP 2004535685A JP 2004535685 A JP2004535685 A JP 2004535685A JP 4657720 B2 JP4657720 B2 JP 4657720B2
Authority
JP
Japan
Prior art keywords
data
communication interface
memory
queue
operating system
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.)
Expired - Lifetime
Application number
JP2004535685A
Other languages
English (en)
Other versions
JP2005539305A (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.)
Solarflare Communications Inc
Original Assignee
Solarflare Communications 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 Solarflare Communications Inc filed Critical Solarflare Communications Inc
Publication of JP2005539305A publication Critical patent/JP2005539305A/ja
Application granted granted Critical
Publication of JP4657720B2 publication Critical patent/JP4657720B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/35Network arrangements, protocols or services for addressing or naming involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function

Landscapes

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

Description

本発明は、ネットワークを介してデータを渡す際に使用するためのネットワーク・インターフェースおよびプロトコルに関する。
データ・チャネルを介して2つの装置間でデータが転送されるとき、それらの装置のそれぞれは、それがそのチャネルの両端で通信できるようにする適当なネットワーク・インターフェースを持たねばならない。それらの装置およびそのネットワーク・インターフェースは、プロトコルを使用して、そのチャネルを介して送信されるデータを、それが受信側で復号化され得るように形成する。データ・チャネルはネットワークの一部であり、またはその一部を形成するとみなされ、そのネットワークに他の装置が接続され得る。
イーサネット・システムは、多くのネットワーク用途に使用される。ギガビット・イーサネットはイーサネット・プロトコルの高速バージョンであり、特に、サーバ間や、同じまたは異なる筐体内のデータ・プロセッサ間のリンクなど、大量の帯域幅を必要とするリンクに適している。イーサネット・システムを介して通信する装置は、イーサネット・システムの物理的、論理的要件をサポートすることのできるネットワーク・インターフェースを備える。ネットワーク・インターフェースの物理的ハードウェア構成要素は、ネットワーク・インターフェース・カード(NIC)と呼ばれるが、それらはカードの形態である必要はない。例えばそれらは、マザーボード上に直接取り付けられた集積回路(IC)およびコネクタの形態とすることもできる。
ネットワーク中の協働するプロセッサ間でデータが転送される場合、メモリ・マップ・システムを実装するのが一般的である。メモリ・マップ・システムでは、アプリケーション間の通信は、ネットワークを介して別のアプリケーションにマップされている1つのアプリケーションの仮想アドレス空間の一部によって達成される。マッピングを形成するそのアドレス空間中の「穴」はアパーチャと呼ばれる。
図1に、ネットワークを介した仮想アドレス空間(X〜X)の別の仮想アドレス空間(Y〜Y)へのマッピングを示す。そのようなシステムでは、X〜Xメモリ空間にアクセスすることのできるCPUは、ストア命令[st r,x]を発行することにより、ロケーションxにアクセスしてそのロケーションにレジスタrの内容を書き込むことができるはずである。仮想メモリを物理メモリ・ロケーションにマップするためにメモリ・マッピング・ユニット(MMU)が用いられる。
次いで、以下のステップがとられる。
1.CPUは、仮想アドレスxへの書込み操作としてrの内容(例えば値10など)を出力する
2.MMU(CPU内に含まれ得る)は、仮想アドレスxを物理アドレスpciに変える(これはページ表探査またはページ不在を含み得る)
3.CPUの書込みバッファは「write 10,pci」命令を発し、それが、そのCPUが位置するバスのコントローラ、この例ではPCI(入出力バス・サブシステム)コントローラによって「捕らえ」られる。次いで、その命令が、コンピュータのPCIバス上に転送される。
4.バスに接続され、ネットワークへのインターフェースを提供するNICは、そのPCI命令を「捕らえ」、仮想アドレス空間(Y〜Y)がホストされている宛先コンピュータにデータを転送する
5.同等のハードウェアを備えると想定される宛先コンピュータで、ネットワーク・カードは、そのデータをメモリに格納するためにPCI書込みトランザクションを出力する
6.受信側アプリケーションは、メモリへの仮想メモリ・マッピングを備え、「load Y」命令を実行することによってデータを読み取ることができる。
上記のステップを図2に示す。この図には、ハードウェア・ストア命令があるハードウェア装置から別の装置に渡される時点ごとに、1つのアドレス空間から別のアドレス空間へのアドレスの変換が必要とされ得ることが示されている。また、まったく同様な一連のイベントが読取り操作をサポートし、そのホスト入出力バス実装形態として、必須ではないが、PCIが想定されることにも留意されたい。
したがって、全体のメモリ空間マッピング{X〜X}→{Y〜Y}は、以下のような一連のサブマッピングによって実施される。
{X−X

{PCI,PCI}(プロセッサ1のアドレス空間)

{PCI’,PCI’}(PCIバスのアドレス空間)

ネットワーク−マッピング図示せず

{PCI”,PCI”}(宛先PCIバスのアドレス空間)

{mem〜mem}(宛先メモリのアドレス空間)

{Y〜Y}(宛先アプリケーションの仮想アドレス空間)
図2に「ネットワーク」とマークするステップは、宛先がそのマッピング・チェーンを続行することができるように、NIC/ネットワーク・コントローラがそのトランザクションを正しい宛先ホストに転送することを必要とする。これは、別のメモリ・アパーチャによって達成される。
アパーチャ・マッピングを使用する2つの主な理由は以下の通りである。
a)システムの頑健性。マッピングが行われる時点ごとに、ハードウェアは、有効なアパーチャ表と突き合わせることによって、アドレスの有効性をチェックすることができる。これは、悪意のある装置や誤作動する装置から保護する。獲得される保護の量は、(ビット単位の)アドレス空間サイズと、割り振られたアパーチャの数(ビット単位の合計サイズ)の比である。
b)アドレス・ビットの節約。32ビット・メモリ・バス内のホストが2つの32ビットPCIバスにアクセスする必要がある場合を考える。最低33ビットが必要とされるはずなので、一見したところでは、これは十分なビット数ではない。しかしながら、アパーチャの使用により、両方のPCIバスのサブセットにアクセスすることが可能になる。
{PCI〜PCI}→{PCI’〜PCI’}および
{PCI〜PCI}→{PCI’〜PCI’
ハードウェア・アドレス・マッピングおよびアパーチャは、仮想メモリおよび入出力バス・マッピング(PCIなど)の分野ではよく理解されている。しかしながら、ネットワークを介して必要とされるマッピングを実施する際には問題がある。主要な問題は以下の通りである。
1.多数のアパーチャを管理することが必要とされ得る。というのは、1つのホストが、ネットワークを介して他の多くホストと通信しなければならないからである。
2.ネットワークの状況では、セキュリティ上の理由で、各ホストをそれ自体の保護および管理ドメインとして扱うのが普通である。その結果、ネットワークを介して2つのアドレス空間の間の接続が行われるとき、そのパスに沿ったアパーチャ・マッピングすべてが開始側ホストによってセットアップされ得るとは限らなくなる。代わりに、各保護ドメイン内のすべてのマッピングが、そのドメインの「所有者」によって終端間接続が確立されるように設定されることを可能にするプロトコルが考案されなければならない。
3.セキュリティ上の理由で、ネットワーク内のホストは、その他のホスト全部を信頼するとは限らないのが普通であり、そのため、そのマッピング方式は、任意の欠陥または悪意のあるホストが、別のホストのメモリを破壊しないようにする必要がある。
従来方式(例えばイーサネットまたはATMスイッチングなど)では、プロトコル・スタックおよびネットワーク・ドライバはカーネルに存在している。これが行われているのは、
1.より上位レベルのインターフェースによって、ネットワーク・ハードウェアの複雑さが隠されること、
2.多くのアプリケーション上での、ネットワーク・ハードウェアおよび他のシステム・リソース(メモリなど)の安全な多重化、
3.欠陥または悪意のあるアプリケーションに抗するシステムのセキュリティ
を可能にするためである。
通常のカーネル・スタック・システムの動作では、ハードウェア・ネットワーク・インターフェース・カードがネットワークとカーネルの間のインターフェースを提供する。カーネルでは、デバイス・ドライバ層が、NICと直接やりとりし、プロトコル層がシステムのアプリケーション・レベルとやりとりする。
NICは、カーネルに供給される着信データおよびネットワークに適用される発信データのためのバッファへのポインタを格納する。これらはRxデータ・リングおよびTxデータ・リングと呼ばれる。NICは、カーネルによって読み取られるRxバッファ・リング上の次のデータを示すバッファ・ポインタを更新する。Txデータ・リングは、直接メモリ・アクセス(DMA)によって供給され、NICは送信されている発信データを示すバッファ・ポインタを更新する。NICは、割り込みを用いてカーネルに知らせることができる。
着信データが、カーネルによってRxデータ・リングから選択され、順に処理される。帯域外データは、普通、カーネル自体によって処理される。アプリケーション固有のポートに送られるデータは、ポインタによって、カーネルの専用アドレス空間にある、そのポート専用のバッファキューに加えられる。
データ受信のためのシステム動作時に以下のステップが行われる。
1.システム初期設定時に、オペレーティング・システム・デバイス・ドライバは、カーネル・バッファを作成し、NICのRxリングをこれらのバッファを指し示すように初期設定する。また、OSは、構成スクリプトからそのIPホスト・アドレスを知らされる。
2.アプリケーションは、ネットワーク・パケットを受け取ろうとし、オペレーティング・システム内にあるキューのような構造であるポートを作成する。これは、<ホスト:ポート>によってアドレス指定されたネットワーク・パケットがそのポートのキューに配信され得るように、ホストに固有の番号ポートを持つ。
3.パケットはネットワーク・インターフェース・カード(NIC)に到着する。NICは、ホスト入出力バス(PCIバスなど)を介して、そのパケットを次の有効RxDMAリング・ポインタ値によって指し示されるメモリ・アドレスにコピーする。
4.利用可能なDMAポインタが残っていない場合、または事前指定されたタイムアウト時に、NICは、データが配信されていることをホストに通知するために、入出力バス割り込みをアサートする。
5.割り込みに応答して、デバイス・ドライバは、配信されたバッファを検査し、それが有効ホスト・アドレスなどの有効なアドレス情報を含む場合、そのバッファへのポインタを適当なプロトコル・スタック(TCP/IPなど)に渡す。
6.プロトコル・スタックは、有効な宛先ポートが存在するかどうか判定し、存在する場合、ネットワーク・プロトコル処理(受信したデータの肯定応答を生成するなど)を実行し、パケットをそのポートのキューに入れる。
7.OSは、アプリケーションに(「選択」ビット・マスク中のビットをスケジュール変更し、設定することなどにより)、そのポートがバインドされているネットワーク・エンドポイントにパケットが到着していると指示することができる。(そのアプリケーションを実行可能であるとマークし、スケジューラを呼び出すことによって)。
8.アプリケーションは、例えば、(バッファのアドレスおよびサイズを供給する)recv()システム・コールを実行することによって、OSにデータを要求し、OSカーネルでは、カーネル・バッファからアプリケーションのバッファにデータがコピーされる。システム・コールから戻ると、アプリケーションは、アプリケーション・バッファからデータにアクセスすることができる。
9.コピーの後、カーネルは、カーネル・バッファをO/Sの空きメモリプールに返す。また、割り込み時に、デバイス・ドライバは、新しいバッファを割り振り、DMAリングへのポインタを付加する。このように、空きプールからアプリケーションのポートへ、そしてまた元に戻るバッファの循環がある。
10.カーネル・バッファの1つの重要な特性は、それらが物理RAM中で適合しており、決してVMシステムによってページ・アウトされないことである。しかしながら、空きプールは、すべてのアプリケーションの共通リソースとして共用され得る。
データ送信では、以下のステップが行われる。
1.オペレーティング・システム・デバイス・ドライバは、送信に使用するためのカーネル・バッファを作成し、NICのTxリングを初期設定する。
2.データを送信するアプリケーションは、そのデータをアプリケーション・バッファに格納し、例えば、(そのアプリケーション・バッファのアドレスおよびサイズを供給する)send()システム・コールを実行することによって、OSによる送信を要求する。
3.send()コールに応答して、OSカーネルは、データをアプリケーション・バッファからカーネル・バッファにコピーし、適当なプロトコル・スタック(TCP/IPなど)を適用する。
4.データを含むカーネル・バッファへのポインタが、Txリング状の次の空きスロットに入れられる。利用可能なスロットがない場合、バッファは、NICが、割り込みなどによって、スロットが利用可能になったことを示すまで、カーネルでキューに入れられる。
5.スロットは、NICによって処理されるようになると、ホスト入出力バスを介してDMAサイクルによりスロットの内容で示されるカーネル・バッファにアクセスし、次いで、データを送信する。
システムを通過するデータの移動を考えると、データ受信の場合、カーネル・バッファからアプリケーション・バッファへのデータのコピーは、実際には、そのデータをプロセッサのキャッシュに存在したままにしており、そのため、この機構を使用する余分なコピーがあるように見えても、そのコピーは、実際には、キャッシュ・ロード操作として働く。データ送信の場合、送信されるデータは、送信のためにアプリケーションに渡される前にキャッシュから出ている可能性が高く、その場合、コピー・ステップは、明らかに、非効率的である。コピー・ステップには以下の2つの理由がある。
1.NICがデータを内外にコピーしている間データが識別されたカーネル・メモリ中にあることを保証するため。これは、データが送信または受信されているときに該当し、また、カーネル・プロトコル処理の後でアプリケーションがバッファを改ざんし、または破損することができないという利点も持つ。
2.送信の場合、データが実際に送信される前にsend()システム・コールが正常に戻ることがよくある。コピー・ステップは、プロトコル層によって再送信が要求される場合に備えてOSがデータを保持できるようにする。
コピー・ステップが省略された場合でさえ、データを受信すると、アプリケーションがカーネル・バッファにアクセスしたときにキャッシュ・ロードが行われるはずである。これらの付加的なコピーが性能低下の原因となっていることを多くの人々が認めている(米国特許第6246683号参照)。しかしながら、これまで提示されている解決法は、すべて、何らかの余分なデータ移動を伴うものである。このオーバーヘッドを低減することが望ましいはずである。本発明の発明者らは、見落とされている問題は、コピーではなく、ユーザからカーネルへのコンテキスト・スイッチおよび割り込み処理のオーバーヘッドであると理解している。例えば、米国特許第6246683号は、これらのオーバーヘッドを回避するために何もしていない。
汎用オペレーティング・システム上でのコンテキスト・スイッチ中には、多くのレジスタは保存され、復元される必要があり、TLBエントリおよびキャッシュはフラッシュされ得る。昨今のプロセッサは、キャッシュからの持続した操作のために高密度に最適化されており、(メモリ・ギャップなどの)アーキテクチャ上の制約条件は、多数のコンテキスト・スイッチに直面した際の性能が大幅に低下するというものである。これについての詳細な考察が、「Piglet:A Low-intrusion Vertical Operating System」、S.J.MuirおよびJ.M.Smith、Tech.rep.MS-CIS-00-04、Univ.of PA、2000年1月に記載されている。したがって、データ転送時と接続管理時の両方でコンテキスト・スイッチを低減することが望ましいはずである。
データ送信および受信からコンテキスト・スイッチのコストを除去するために、U−NETの学業からVIA(仮想インターフェース・アーキテクチャ)がオープン・スタンダードとして開発された。詳細情報は、www.vidf.orgから入手可能な仮想インターフェース・アーキテクチャ仕様に記載されている。いくつかの商用実施形態が作成され、それがその後、インフィニバンド標準へと発展している。このシステムの基本原理は、各アプリケーション(ネットワーク・エンドポイント)にそれ自体のDMAキューの対TxおよびRx)を提供するようにネットワーク・インターフェース・ハードウェアを拡張することである。このアーキテクチャは、カーネル・エージェント、ハードウェアNIC、およびユーザ/アプリケーション・レベルのインターフェースを備える。ユーザ・レベルの各アプリケーションには、VI(仮想インターフェース)の制御が与えられる。これは、送信用に1つと受信用に1つ、2つのキュー(および任意選択のCQ完了キュー)を備える。VI上でいくらかのデータを送信するために、アプリケーションは以下を行わなければならない。
1.データが、識別されているバッファ中にあることを保証する。(これは、システム・コールが割り振ることを必要とするはずである)。
2.バッファ・ポインタおよび長さを含む記述子を構築し、その記述子へのポインタを送信キューに加える。(注意:その記述子も識別されたメモリ中になければならない。)
3.必要ならば、アプリケーションは、VIエンドポイントに関連付けられたNIC上のハードウェア「呼び鈴」ロケーションに書き込むことによって、作業キューがアクティブであることを示す。
4.その後のある時点において、NICは送信キューを処理し、バッファからのデータにDMA(直接メモリ・アクセス)し、ネットワーク・パケットを形成し、受信側に送信する。次いで、NICは、そのバッファに関連付けられた記述子を、データが送信されたとマークする。
VIを完了キューとも関連付けることが可能である。これがなされている場合、NICは、バッファが送信されていることを示すために、完了キューにイベントを通知する。これは、1つのアプリケーションが、ただ1つの完了キュー上のイベントを調べることによっていくつかのVIキューを管理できるようにするためであることに留意されたい。
VI送信キューまたは完了キューは、割り込みのために使用可能にされ得る。
バッファを受け取るために、アプリケーションは、空きバッファを指し示す記述子を作成し、その記述子を受信キュー上に配置しなければならない。また、受信キューがアクティブであることを示すために「呼び鈴」に書き込むこともできる。
NICは、それが特定のVI受信キューにアドレス指定されたパケットを持つとき、そのキューから記述子を読み取り、Rxバッファ・ロケーションを決定する。次いで、NICは、受信バッファへのデータにDMAし、
1.その記述子をマークし、
2.(それがVIと関連付けられている場合は)完了キュー上でイベントを生成し、
3.それが(Rxキューまたは完了キューをマークする)アプリケーションまたはカーネルによって要求されている場合は、割り込みを生成する
ことによって受信を指示する。
このキューに基づくモデルには以下の問題がある。
1.記述子オーバーヘッドのために小さいメッセージでの性能が劣る。
2.受信バッファ・オーバーランを回避するためにアプリケーションによってフロー制御が行われなければならない。
また、VIAは、接続セットアップのためにコンテキスト・スイッチを回避せず、エラー回復機能を持たない。これは、VIAが、存続時間の長い接続があり、エラーがほとんどないクラスタ内で使用するためのものであったからである。エラーが発生した場合、VI接続は、単に、エラー状態に置かれる(そして、普通は、取り外され、再作成される必要がある)。
VIA接続セットアップおよび取り外しは、カーネル・スタック処理で説明したのとまったく同じ方式で、カーネル・エージェントを使用して進行する。したがって、開く、接続する、受け入れるなどの操作はすべて、カーネルへのコンテキスト・スイッチを必要とする。ゆえに、接続の存続時間が短く(WWWなど)、またはエラーが頻繁に起こる(イーサネットなど)環境では、VIAインターフェースはうまく動作しない。
VIAはメッセージ受け渡しインターフェースの1つの発展を表し、ハードウェアへのユーザ・レベル・アクセスを可能にする。また、共用メモリ・インターフェースをサポートする別の方法での開発も行われている。これらの研究の多くは、それぞれがローカル・メモリを備えるいくつかのプロセッサおよび高速相互接続から大型スーパーコンピュータが構築される、大型の単一オペレーティング・システムNUMA(非均一メモリ・アーキテクチャ)マシン(スタンフォードのDASHなど)の構築を対象としたものであった。そのようなマシンでは、各ノードのメモリ間のコヒーレンシが、ハードウェア(相互接続)によって維持された。コヒーレンシは、一般に、CPU上に介在するストア操作がある場合でさえも、CPU上のストア/ロード操作が正しい値を返すことを保証しなければならない。これは、CPUが最初のストアの内容をキャッシュすることができ、介在する書込みが発生しなかった場合にはキャッシュしたコピーを返すことが期待されるときには、達成するのが困難である。SCI(スケーラブル・コヒーレント相互接続)のIEEE標準の大部分は、コヒーレンシを保証することで占められている。この標準はwww.vesa.orgから入手可能である。
共用メモリ相互接続のNUMAおよびコヒーレンシの遺産のために、クラスタの管理および障害モードは、単一マシンのものであった。例えば、各実装形態は、しばしば、以下を想定したものであった。
1.信頼されるクラスタ規模のサービスによって管理された単一ネットワークアドレス空間(例えば、DECのメモリ・チャネル:R Gillett、「Memory Channel Network for PCI」、IEEE Micro 16(2)、1996年2月12〜18日参照)
2.ローカル・ホスト・メモリを着信ネットワーク・アクセスから保護する保護(またはページ・レベル保護)対策がないこと(SCIなど)
3.単一プロセッサ・ノードの障害が「マシン」全体の障害を引き起こすこと(SCIなど)
クラスタ規模の接続サービスのメモリ・チャネル実装形態では、物理的に、すべてのネットワーク書込みが同時にそのクラスタ中のすべてのノードに渡され、そのため、受信側ノードは、ただ、書込みをその着信ウィンドウに対して突き合わせるだけである。この方法は、(本発明と同様に)着信の保護は提供するが、アドレス空間管理は、管理ノードとの通信を必要とし、非効率的である。
SCIは、書込みが特定のホストに宛先指定され得るように、アドレス空間の12ビットがノード識別子専用とされることを除けば、同様である。残りの48ビットは、ホスト実装に依存する。ほとんどの実装形態は、単に、ローカル・メモリの単一の大きなセグメントを割り振り、その48ビットをオフセットとして使用するにすぎない。
どの実装形態も、そのアーキテクチャの一部として、アドレス指定されたポートも、分散接続管理も持たない。
いくつかの実装形態は、イベント・メッセージが、1つのホストから別のホストに(またはネットワークからホストに)送信され得るイベント機構を提供する。これらがソフトウェアでプログラム可能であれば、ポートを用いた分散接続セットアップが可能である。しかしながら、これらの機構は、(まれな)エラー処理(例えば、ケーブルが抜かれた場合など)のために設計されたものであるため、そのイベントキューは、カーネルのみのオブジェクトになるように設計され、したがって、接続管理のために、VIAまたはカーネル・スタック・モデルと同じ方式で依然としてコンテキスト・スイッチが必要とされる。
本発明の一態様によれば、データ・リンクとデータ・プロセッサの間のインターフェースを提供する通信インターフェースが提供され、データ・プロセッサは、オペレーティング・システムおよびユーザ・アプリケーションをサポートすることができ、通信インターフェースは、リンクを介して受け取られ、ユーザ・アプリケーションに関連付けられた論理データ・ポートにアドレス指定されたデータの第1のキューをサポートし、リンクを介して受け取られ、オペレーティング・システムに宛先指定されていると識別されたデータの第2のキューをサポートし、リンクを介して受け取られ、オペレーティング・システムまたはデータ・ポートに宛先指定されていると識別されたデータを分析して、そのデータが1つまたは複数の事前定義された基準を満たすかどうか判定し、それが基準を満たす場合、オペレーティング・システムに割り込みを送信するように構成される。
好都合には、ユーザ・アプリケーションはアドレス空間を持ち、第1のキューはそのアドレス空間に位置する。好都合には、オペレーティング・システムは、アドレス空間を持ち、第2のキューはそのアドレス空間に位置する。最も好都合には、ユーザ・アプリケーションのアドレス空間の少なくとも一部は、オペレーティング・システムのアドレス空間の少なくとも一部と同一である。好ましくは、ユーザ・アプリケーションのアドレス空間すべては、オペレーティング・システムのアドレス空間内にある。
通信インターフェースは、好ましくは、リンクを介して受け取られ、データ・ポートに宛先指定されていると識別された第1のキューデータに適用されるように構成される。通信インターフェースは、好ましくは、リンクを介して受け取られ、オペレーティング・システムに宛先指定されていると識別された第2のキューデータに適用されるように構成される。
好ましくは、事前定義基準の1つは、リンクを介して受け取られたデータが1つまたは複数の所定のメッセージ形式とマッチする場合、通信インターフェースはオペレーティング・システムに割り込みを送信するというものである。
好ましくは、通信インターフェースは、データが事前定義基準の1つまたは複数およびその他の基準の1つまたは複数を満たす場合、オペレーティング・システムに割り込みを送信すると共に、そのデータがアドレス指定されたポートを示すオペレーティング・システムへのメッセージを送信するように構成される。好ましくは、その他の基準は、エラー条件を示すものである。
好ましくは、通信インターフェースは、リンクを介して受け取られ、ユーザ・アプリケーションに関連付けられた論理データ・ポートにアドレス指定されたデータの第3のキューをサポートするように構成され、リンクを介して受け取られた、固定長を有する形式の第1のキューデータ単位に適用されると共に、リンクを介して受け取られた、可変長を有する形式の第3のキューデータ単位に適用されるように構成される。好ましくは、固定サイズのデータ単位は、リンクを介して受け取られ、通信インターフェースによってエラー状況を示すと解釈されるメッセージを含む。好ましくは、固定サイズのデータ単位は、リンクを介して受け取られ、通信インターフェースによって接続のセットアップを求める要求またはその肯定応答を示すと解釈されるメッセージを含み、または含み得る。好ましくは、固定サイズのデータ単位は、リンクを介して受け取られ、通信インターフェースによって、データ配信イベントを示すと解釈されるメッセージを含む。
好ましくは、通信インターフェースは、リンクを介して受け取られた各データ単位の内容を解析し、そのデータ単位の内容に応じて、前記キューのどれにそのデータ単位を適用すべきか決定するように構成される。
好ましくは、通信インターフェースは、オペレーティング・システムによって前記基準を設定するように構成可能である。
好ましくは、通信インターフェースとオペレーティング・システムの一方または両方は、所定のタイプのメッセージに応答して、ポートの状況を示す情報を含むメッセージを返す。
本発明によれば、前述の通信インターフェースおよび前記データ・プロセッサを含む通信システムも提供される。
データ・プロセッサは、好ましくは、データ・ポートが関連付けられているアプリケーションの処理が中断されたとき、そのデータ・ポートに宛先指定されていると識別されたデータを受け取ると、通信インターフェースがオペレーティング・システムに割り込みを送信するという基準を設定するように構成される。
本発明の第2の態様によれば、データ・リンクと、メモリを含む第1のデータ処理装置の間のインターフェースを提供する通信インターフェースが提供され、データ・インターフェースは、第1のデータ処理装置のメモリの一領域が、リンクによって通信インターフェースに接続された第2のデータ処理装置のメモリにマップされ得るようなものであり、通信インターフェースは、第2のデータ処理装置中の第1の1つまたは複数のメモリ・ロケーションの範囲の、第1のデータ処理装置中の第2の1つまたは複数のメモリ・ロケーションの範囲へのマッピングを確立すると、第2のデータ処理装置に第1のメモリ・ロケーションの範囲を識別するデータを送信するように構成される。
好ましくは、第2のデータ処理装置のメモリは仮想メモリである。好ましくは、第2のデータ処理装置のメモリ中のメモリ・ロケーションは仮想メモリ・ロケーションである。最も好ましくは、第1のデータ処理装置のメモリ中の前記1つまたは複数のメモリ・ロケーションは1つまたは複数の仮想メモリ・ロケーションであり、通信インターフェースは、前記マッピングを確立すると、1つまたは複数の仮想メモリ・ロケーションの、第1のデータ処理装置のメモリ中の1つまたは複数の物理メモリ・ロケーションへの別のマッピングを確立するように構成される。
好ましくは、通信インターフェースは、第2のデータ処理装置のメモリ中の第1の1つまたは複数のメモリ・ロケーションの範囲の、第1のデータ処理装置のメモリ中の第2の1つまたは複数のメモリ・ロケーションの範囲へのマッピングを確立すると、そのマッピングに識別情報を割り振り、その識別情報を第2のデータ処理装置に送信するように構成される。
好ましくは、通信インターフェースは、そのデータ・メッセージが含むデータが適用される宛先ポートを指定するデータ・メッセージによって通信することができる。
好ましくは、通信インターフェースは、第2のデータ処理装置のメモリ中の第1の1つまたは複数のメモリ・ロケーションの範囲の、第1のデータ処理装置のメモリ中の第2の1つまたは複数のメモリ・ロケーションの範囲へのマッピングを確立すると、チェック・データを決定し、そのチェック・データを第2のデータ処理装置送信するように構成され、また、通信インターフェースは、そのチェック・データを示さない、そのマッピングを介した後続の通信を拒絶するように構成される。好ましくは、チェック・データは、通信インターフェースによってランダムに生成される。好都合には、チェック・データを示すために、通信はそのチェック・データを含む。
好ましくは、通信インターフェースは、マッピングの操作中に、事前定義された方式に従って、チェック・データを変更するように構成される。その場合、好ましくは、その変更されたデータを示さないそのマッピングを介した後続の通信を、通信インターフェースが拒絶するように構成される。好ましくは、チェック・データは数を表し、事前定義された方式は、そのマッピングを介して事前定義回数の通信が受け取られるたびに、チェック・データによって表される数を事前定義された量だけ増分するものである。事前定義の量は、必須ではないが、好ましくは1である。事前定義の数は、必須ではないが、好ましくは1である。
好ましくは、通信インターフェースは、第1の範囲外のデータにアクセスすることを求める要求を示す、そのマッピングを介した後続の通信を拒絶するように構成される。
本発明によれば、前述の通信インターフェースおよび前記データ・プロセッサを含む通信システムも提供される。
データ・プロセッサは、好ましくは、オペレーティング・システムおよびユーザ・アプリケーションをサポートすることができる。このシステムは、好ましくは、第1の範囲に格納されたデータを送信し、または第1の範囲に格納するためのデータを受信するためのデータ・リンクを介した通信での動作パラメータを定義するデータ項目を格納するデータ・ストアを備える。
オペレーティング・システムは、ユーザ・アプリケーションに、そのアプリケーションに付与された信頼のレベルに応じて、そのデータ・ストア中の1つまたは複数のデータ項目にアクセスすることを許可するように構成され得る。
チェック・データは、好ましくは、データ・ストア中のデータ項目の1つとして格納され、オペレーティング・システムは、少なくともいくつかのユーザ・アプリケーションに、そのデータ項目への書込みアクセスを行うことを許可するように構成され、通信インターフェースは、チェック・データを判定するために、そのデータ項目の内容を読み取り、それをチェック・データとして扱うように構成される。
好ましくは、データ・ストア中のデータ項目は、第1のデータ処理装置のメモリ中の第1のメモリ・ロケーションの範囲の開始点および終了点を定義し、第2のデータ処理装置のメモリ中の第2のメモリ・ロケーションの範囲の開始点および終了点を格納する。好ましくは、オペレーティング・システムは、1つまたは複数の信頼レベルを持つアプリケーションに、データ・ストア中のデータ項目への書込みアクセスを行い、第2のデータ処理装置のメモリ中の第2のメモリ・ロケーションの範囲の開始点および終了点を格納することを許可すると共に、どのアプリケーションにも、第1のデータ処理装置のメモリ中の第1のメモリ・ロケーションの範囲の開始点および終了点を定義するデータ・ストア中のデータ項目に書込みアクセスすることを許可しないように構成される。
次に、本発明を、添付の図面を参照し、例を引いて説明する。
好ましくは、通信インターフェースは、第2のデータ処理装置中の1つまたは複数の仮想メモリ・ロケーションのそれぞれの第1の範囲の、第1のデータ処理装置中の1つまたは複数のメモリ・ロケーションのそれぞれの第2の範囲への複数のマッピングそれぞれをサポートすることができ、そのような各マッピングごとに、それぞれの1つまたは複数の仮想メモリ・ロケーションの、第1のデータ処理装置のメモリ中の1つまたは複数の物理メモリ・ロケーションへのそれぞれのさらなるマッピングをサポートすることができる。
好ましくは、通信インターフェースは、前記1つまたは複数の仮想メモリ・ロケーションの範囲のそれぞれとの間のアクセスを、第1のデータ処理装置のメモリ中のそれぞれの1つまたは複数の物理メモリ・ロケーションとの間のアクセスに変換すると共に、第1のデータ処理装置のメモリ中の1つまたは複数の物理メモリ・ロケーションのそれぞれとの間のアクセスを、1つまたは複数の仮想メモリ・ロケーションのそれぞれの範囲との間のアクセスに変換する変換インターフェースを含む。好ましくは、仮想メモリ・ロケーションは、例えば、PCIバス・アドレスなどのローカル・バス・アドレスである。あるロケーションへのアクセスは、好適には、そのロケーションへの書込みアクセスである。あるロケーションからのアクセスは、好適には、そのロケーションからの読取りアクセスである。
好ましくは、通信インターフェースは、前記さらなるマッピングの詳細を格納するように構成されたマッピング・メモリを備える。このマッピング・メモリは、好ましくは、変換インターフェースに対してローカルの第1のマッピング・メモリと、変換インターフェースに対して第1のマッピング・メモリより遠い第2のマッピング・メモリとを備え、通信インターフェースは、さらなるマッピングのすべての詳細を第2のマッピング・メモリに格納すると共に、さらなるマッピングの一部だけの詳細を第1のマッピング・メモリに格納するように構成される。好ましくは、第1のマッピング・メモリは連想メモリである。
好ましくは、変換インターフェースは、前記1つまたは複数の仮想メモリ・ロケーションの範囲の1つのとの間のアクセスと、第1のデータ処理装置のメモリ中のそれぞれの1つまたは複数の物理メモリ・ロケーションとの間のアクセスの間の変換のために、第1のマッピング・メモリに優先的にアクセスして変換を実施し、アクセスの対象の仮想メモリ・ロケーションの範囲のマッピングの詳細が第1のマッピング・メモリに格納されていない場合、第2のマッピング・メモリにアクセスして変換を実施するように構成される。
好ましくは、通信インターフェースは、直前に使用されたさらなるマッピングの詳細を第1のマッピング・メモリに格納するように構成される。好ましくは、それは、第1のマッピング・メモリから詳細にアクセスしようとする試みに失敗した場合、第1のマッピング・メモリ中の詳細を、失敗したアクセスの試みの詳細で置き換えるように構成される。
図3は、第1のデータ処理装置(DPU)20がネットワーク・リンク22を介して第2のデータ処理装置21と通信するためのデータ伝送システムの概略図である。各データ処理装置は、メモリ・バス25、26を介してPCIコントローラ27、28に接続されたCPU23、24を備える。PCIコントローラは、NIC31、32が接続されたそれぞれのPCIバス29、30を介して通信を制御する。NICはネットワークを介して相互に接続される。他の類似のデータ処理装置をネットワークに接続して、それらを相互に、またDPU20、21と通信させることもできる。各メモリ・バス25、26にはローカルのランダム・アクセス・メモリ(RAM)33、34が接続される。
本明細書で説明するデータ伝送システムは、いくつかの有意義な機能を実施する。それらは、(1)NIC31、32間のアパーチャ・マッピングの動的キャッシング、(2)NIC間の通信でのパケット指向のセットアップおよび取り外し構成、および(3)NICの一方または両方のアドレス空間における、本明細書で「ノンス・ビット」と呼ぶ特定のビットの使用である。
アパーチャ・エントリの動的キャッシング
静的な表を使用して少数のアパーチャ・マッピングが効率よく格納され得る。これを実施するために、アドレスのいくつかのビット(マップ・ビット)がNICのアドレス復号化論理によって捕らえられ、マッピングを反転させるのに使用されるビット(再マップ・ビット)を含むメモリ・アレイへのインデックスとして使用される。例えば、図3に示すタイプのシステムでは、NICは、PCIバス29を介して、指定されたローカル・アドレスの所のデータを読み取り、またはそこにデータを書き込むよう求める要求を受け取ることができる。NICは、そのローカル・アドレスに対応するリモート・アドレスを示すマッピングを格納し、その変換は、そのローカル・アドレスのビットの1つまたは複数を置き換えることによって実行される。例えば、そのアドレスの第2および第3のニブルが置き換えられ得る。その場合、0x8210BEECというローカル・アドレスに対応するリモート・アドレスにアクセスするために、NICは、マッピング表にアクセスし、ビット「21」のマッピング(それはビット「32」であると想定する)を決定し、次いで、対応するリモート・アドレス(この例では0x8320BEEC)をアドレス指定するはずである。(図4参照)
この方法は、使用される実装技術(通常はFPGAまたはASIC)に応じて数百または数千エントリまで拡張可能であるが、マッピング表を保持するのに使用される装置内で利用可能な空間によって制限される。1つの優れた実装方法が、マッピングを(それに対するアクセスが結果としてより遅くなる)より大容量のストアに格納すると共に、直前に使用されたマッピングを、迅速にアクセスされ得る連想メモリにキャッシュするものである。(ハードウェア・サーチ操作によって)連想メモリ中に置き換えられるビットのマッチが見つかった場合、その再マップは非常に迅速に行われる。マッチが見つからなかった場合、ハードウェアは、(表またはツリー構造の)より大きなメモリで二次検索を実行しなければならない。通常、連想メモリは、NICの処理チップ上に実装され、より大容量のメモリはオフチップで、例えばDRAMなどに実装される。これを図5に示す。この方法は、CPU上のTLBの動作に多少似ている。しかしながら、この場合、それはまったく異なる機能、すなわち、メモリ・マップ・ネットワーク・カード上のアパーチャ・マッピングのために使用される。
実際、マッピング情報は、ネットワークを介してパケットを送信するのに必要とされるすべてのアドレス情報を含まなければならない。これについて以下でより詳細に論じる。
パケット指向接続セットアップおよび取り外しプロトコル
次に、2つの管理ドメイン(通信するホストのそれぞれに属するもの)がある場合に、アパーチャを用いて2つのアプリケーションのアドレス空間の間で接続を確立するためのプロトコルについて説明する。その一般的構成を図6に示す。ドメインAには、仮想アドレス空間A、およびその仮想アドレス空間にアクセスし得るNIC Aを備えるホストAがある。ドメインBには、仮想アドレス空間B、およびその仮想アドレス空間にアクセスし得るNIC Bを備えるホストBがある。これらのNICは、ネットワークを介して相互に接続される。
この例では、ドメインAの装置のマッピング・エントリは、ホストA上のオペレーティング・システムによってのみ設定され得る。以下で、ホストA上で走るアプリケーションAが、ドメインA内のアパーチャ・マッピング上に(全部ではなく)一部のビットを設定することができる別の実装形態について説明する。
説明する接続プロトコルは、IP(インターネット・プロトコル)データグラムを用いて、(標準イーサネット・ネットワークの場合と同様に)1つのホストから別のホストにパケットを転送する。これらのデータグラムは、<ホスト:ポート>としてアドレス指定され、<ホスト>は宛先ホストのネットワーク識別子であり、<ポート>は、そのホスト内のアプリケーション(注意:各アプリケーションは、異なるネットワーク接続に対応するいくつかの割り振り部分を持ち得る)の識別子である。本プロトコルが、IP以外のトランスポート・プロトコルを介しても使用され得ることが理解されるであろう。
本プロトコルでは、ホストAが、アプリケーションBが走っている受動(受け入れ側)ホストBへの能動接続を行おうとするものと想定すると、接続セットアップは以下のように進行する。
1.アプリケーションBは、その受け入れ側インターネット・アドレス<ホスト:ポート>をパブリッシュする。これは、通常の方法でネットワークを介してアクセスされ得る。
2.アプリケーションA(以下便宜上ホストAと呼ぶ)は、オペレーティング・システムAに、通信に使用されるホストA内のメモリ上への着信アパーチャの作成を求める要求を提示する。このアパーチャが定義されると、その仮想空間中のアドレスに宛先指定された着信ネットワーク書込みが、メモリA中の対応する実アドレスに宛先指定されるように、NIC A上にその詳細がプログラムされる。このアパーチャには、参照アドレス:in−indexAが付与される。
3.ホストAは、接続メッセージ:
[CONNECT/in−index
を含む<ホスト:ポート>へのIPデータグラムを送信する。フルIPデータグラムは、通常、発信元および宛先IPアドレス(およびポート)も含むことに留意されたい。
4.接続メッセージは、アプリケーションBによって受け取られる。このメッセージは、後で説明するように(二重イベントキューの状況に従って)直接ユーザ・レベルに、またはオペレーティング・システムに受け取られ得る。
5.ホストBはそのメッセージを、Bに接続するよう求める要求であると理解し、アパーチャin−indexAを提示する。(通常はセキュリティのために)Bで事前にプログラムされた規則を用いて、ホストBは、その接続を拒絶するか、それとも受け入れるか決定する。Bは、接続を受け入れると決定した場合、メモリBにマップされ、参照アドレス:in−indexが付与される着信アパーチャを作成する(または事前に作成された着信アパーチャを使用する)。ホストBは、その接続の新しいポート:ポート’Bを作成することを選択することもできる。ホストBはホストAに、ホストAへのIPデータグラム
[ACCEPT/:ポート’/in−index
として受諾メッセージを返信する。フルIPデータグラムは、通常、発信元および宛先IPアドレス(およびポート)も含むことに留意されたい。
これが受け取られた後、各ホストはアパーチャを作成しており、各NICはそのアパーチャでの読取りまたは書込みを求める要求のマッピングを実行するようにセットアップされ、各ホストは、相手側ホストのアパーチャの参照アドレスを知っている。
6.以上で論じたメッセージングの後、両ホストは発信アパーチャを作成する。Aは、アプリケーションAの仮想アドレス空間をNIC発信アパーチャOUT_indexにマップするアパーチャを作成する。この発信アパーチャは、メモリBにマップする[host:in−index]にマップする。ホストBは、メモリAにマップする同様の発信アパーチャout−indexを作成する。このようにして、メモリ・マップ領域を介して双方向通信が可能になる。アプリケーションは、いつでも、メモリ・マッピングに関連付けられこのポートにメッセージを送信することができる。これらを用いて、例えば以下のような帯域外データが保証され得る。
(i)接続、したがって、メモリ・マッピングを停止すべきであることを示すCLOSEメッセージ
(ii)非応答アプリケーションに応答を要求するALIVEメッセージ[その応答はALIVEACKになるはずである]
(iii)データ転送エラーを検出しているデータ・パス上の任意のハードウェア要素によって生成されるERRORメッセージ。このメッセージは、メモリ・マップ・インターフェースからフィードバックが提供されることを可能にするので、重要である。
アプリケーションが、すでに発信アパーチャへの仮想アドレス・マッピングを持っている場合、ステップ6は、NICが発信アパーチャを特定のホストの着信アパーチャにマップするよう求める要求になることに留意されたい。これについては、以下で、ユーザ・レベル接続管理の観点から詳細に説明する。
二重イベントキュー
この文脈では、ポートは、アプリケーションにバインドされ、アドレス・コードを持ち、メッセージを受け取ることのできる、オペレーティング・システムに特有のエンティティであるとみなす。この概念を図7に示す。ポートにアドレス指定された1つまたは複数の着信メッセージはメッセージキューを形成し、それはオペレーティング・システムによって処理される。オペレーティング・システムは、そのポートとオペレーティング・システム上で走るアプリケーションの間のバインディングを事前に格納している。ポートのメッセージキュー中のメッセージは、オペレーティング・システムによって処理され、オペレーティング・システムによってそのポートがバインドされるアプリケーションに提供される。オペレーティング・システムは、適当なポートを指定することによって着信メッセージが適当なアプリケーションに適用されるように、アプリケーションへの複数のポートのバインディングを格納することができる。
ポートは、対応するアプリケーションの状態がどのようなものであれ、メッセージが受け取られ、安全に処理されるようにオペレーティング・システム内に存在する。それは、特定のアプリケーションにバインドされ(つながれ)、メッセージキューに接続される。従来のプロトコル・スタック、例えばカーネル内TCP/IPなどでは、すべてのデータは、通常、それがアプリケーションによって読み取られる前にポート・メッセージキューに入れられる(このオーバーヘッドは、本明細書で説明するメモリ・マップ・データ転送機構によって回避され得る)。
本明細書で説明する方式では、帯域外データだけがポート・メッセージキューに入れられる。図7にこれをCONNECTメッセージについて示す。図7では、宛先ホストおよびポートの指定(フィールド50)、メッセージ・タイプ(フィールド51)およびインデックス(フィールド52)を含む着信パケットEがNIC53によって受け取られる。このデータはCONNECTメッセージであるため、帯域外データのクラスに相当する。しかしながら、これは、なお、適当なポート55のメッセージキューに適用され、そこからオペレーティング・システムによってそのポートに割り当てられているアプリケーションによって読み取られ得る。
別の拡張が、ポートに関連付けられた二重キューを使用するものである。これは、帯域外メッセージを読み取るときにシステム・コールを行う必要を最小限に抑えるのに役立つ。これは、例えばWebサーバでのような高接続率や、イーサネットで予期され得る高エラー率など、多くのメッセージがある場合に特に有用である。
その動作の開始時に、オペレーティング・システムは、帯域外メッセージを処理するキューを作成する。このキューは、NICによって書き込まれ、それに関連付けられた割り込みを持ち得る。アプリケーションがポートにバインドされると、オペレーティング・システムはそのポートを作成し、それをそのアプリケーションと関連付ける。また、そのポート専用の帯域外メッセージを処理するキューも作成する。次いで、そのポートの帯域外メッセージキューは、カーネル・コンテキスト・スイッチを必要とせずにイベントをキューから外せるように、アプリケーションの仮想アドレス空間にメモリ・マップされる。
イベントキューはNICに登録され、NIC上には各キューと関連付けられ(OSとアプリケーションのどちらかまたは両方のアドレス空間にマップされ)た制御ブロックがある。
制御ブロックを備えるキューを図8に示す。キュー59はメモリ60に格納され、そこにNIC61がアクセスし得る。このキューに関連付けられているのは読取りポインタ(RDPTR)62aおよび書込みポインタ(WRPTR)63aであり、それらは、データが次に読み取られ、書き込まれるキュー中のポイントを示す。ポインタ62aはメモリ60に格納される。ポインタ63aはNIC61に格納される。これらのポインタのマップされたコピーRDPTR’62bおよびWPTR’63bは、元のポインタの相手側のNICおよびメモリに格納される。システムの動作は以下の通りである。
1.NICは、それがローカルで格納しているRDPTR’とWRPTRを比較することにより、書込みに使用可能な空間を決定することができる。
2.NICは、それがデータグラムとして受け取られたときに帯域外データを生成し、それをキュー59に書き込む。
3.NICは、次のデータが最後のデータの後に書き込まれるように、データが書き込まれたときにWRPTRとWRPTR’を更新する。
4.アプリケーションは、メモリ60からのアクセスとしてRDPTRとWRPTR’を比較することにより、読取りに使用可能な空間を決定する。
5.アプリケーションは、キュー59から帯域外データを読み取り、メッセージを処理する。
6.アプリケーションは、RDPTRおよびRDPTR’を更新する。
7.アプリケーションが割り込みを必要とする場合、それ(またはそれに代わるオペレーティング・システム)は、制御ブロック64のIRQ65aおよびIRQ’65bビットを設定する。制御ブロックはメモリ60に格納され、NICの対応する記憶にマップされる。設定された場合、NICはステップ3で割り込みも生成するはずである。
割り込みが生成された場合、まず、コンピュータの割り込みハンドラが確実に実行されるようにPCI割り込み線がアサートされるが、第2のメッセージもオペレーティング・システムのキューに送られる。一般に、このキューは、ハードウェア障害など多様な割り込みを処理することができるが、この場合OSキューは[PORT]に属するアプリケーションキューに帯域外データが配信されていることを示すメッセージ[ODBDATA:PORT]を含む。OSはキュー59中のデータを検査し、適当な措置を講じることができる。その普通の状況は、アプリケーションがブロックされ、またはスケジュール解除され、OSがそれを起動させる(スケジューラに実行可能とマークする)必要があるというものであろう。
この二重キュー機構は、アプリケーションが走っている間に、OSを関与させずにアプリケーションによって帯域外データが処理され得るようにする。アプリケーションがブロックされた場合、第2のキューおよび割り込みは、OSが、潜在的に多くのアプリケーションキューのうちのどれが配信されたデータを持っているか判定できるようにする。この全体の構成を図9に示す。
帯域外(OOB)キューは、以下の帯域外データを保持する。
1.ポートに関連付けられたエラー・イベント
2.ネットワークおよび他のアプリケーションからの接続セットアップ・メッセージおよび他の信号メッセージ
3.送信側アプリケーション、NICまたは受信側OSによって生成され得るデータ配信イベント
キューが可変サイズのデータを含む場合、各メッセージのデータ部分のサイズがそのメッセージの先頭に含まれなければならない。
本システムで、アプリケーションが共用のメモリを介して通信するとき、非コヒーレント共用メモリを用いて2つの通信するエンドポイント間で単一の作業キューが共用され得る。データがキューに書き込まれる際に、そのデータが読取りに有効であることを示すために、送信側アプリケーションによってリモートのネットワーク・マップ・メモリに書込みポインタ(WRPTR)更新も書き込まれる。データがキューから取り除かれる際には、そのキュー中の空き空間を示すために、ネットワークを介し、受信側アプリケーションによって読取りポインタ(RDPR)更新が書き戻される。
これらのポインタ更新は保守的であり、データの読取りまたは書込みを短時間遅らせることもあるが、受信側でバッファが利用可能になるまで送信側がデータのネットワーク転送を開始しないことを意味し、ポインタ更新の低待ち時間は、1対の通信するエンドポイントをサポートするのに必要とされるキューバッファ空間の量が小さいことを意味する。前述のイベント機構を用いて、アプリケーションを満杯/空のキュー上でブロックさせ、CPU使用率および応答時間の点から拡張可能な多重化イベント・ストリームによって多数のキューを管理することができる。
イベントキューに宛先指定された可変長データは、第2のキューに配信されるはずである。これは、ハードウェアでのイベント生成機構を簡略化するという利点を持つ。ゆえに、固定サイズのキューは、単純なイベントおよび可変長キューへのポインタ(サイズ)を含む。
1.図13に示すように、RDPTRとWRPTRの差は、それらが固定サイズであるため、キュー中の有効なイベントを示すと共に、イベントの数も示す。
2.(例えば)イベントVar10は、サイズ10ワードの可変サイズのイベントが可変サイズのキューに配置されていることを示す。
3.WRPTRとRDPTRの差は、可変サイズのキュー中にあるワード数だけを示すが、アプリケーションは、10ワードを取り除くことによって第1のイベント全部をキューから外すことができる。
4.アプリケーションは、
(a)静的キューでは、処理されるイベントの数に各イベントのサイズを掛けたもので、
(b)可変サイズのキューでは、消費されるワード数で(すなわち両方とも同じ)
NICのメモリ上のRDPTRを更新することによって、NICにイベントの処理を指示する。
5.可変長キュー上のデータは、そのサイズも含むことができる(例えば、それがUDP/IPパケットの場合)
拡張アパーチャ・マッピングおよび「ノンス(nonce)・ビット」
この実装形態では、誤作動する、または悪意のあるハードウェアまたはソフトウェアがアパーチャに意図せずに書き込むのを防ぐために、「ノンス・ビット」と呼ばれる追加ビットが提供される。これを説明するために、以下のネットワーク・マッピングについて論じる。
<仮想メモリ・アドレス>→<PCIアドレス>→<ホスト:in−index>→...
...<ネットワーク・パケット>→<PCIアドレス>→<物理メモリ・アドレス>→...
...<仮想メモリ・アドレス>
<ホスト:in−index>へのマッピングを実行するとき、NICは<ホスト:in−index>でアドレス指定される発信パケットを作成することができる。これは、そのパケットを受け取るNICによって、ポートを介して対応するアプリケーションに渡すためのパケットとしてではなく、アパーチャ・パケットとして処理するためのパケットであると理解されることになる。ゆえに、このパケットは、着信アパーチャ検索(lookup)ハードウェアに提示される。
前述の方式の下では、データが送信される先のPCIアドレスは、アパーチャ・マッピングとそのアパーチャ内のオフセットの両方を符号化することにまず留意すべきである。これは、NICが宛先アドレスを、PCIバス上のメッセージがそれに向けて形成されたアドレスの関数として形成し得るからである。NICによってPCIバスを介して受け取られたアドレスは、アパーチャ定義およびそのアパーチャのオフセットの定義を含む(例えば)32ビットから形成されるとみなされ得る。受信側NICがそのデータを着信アパーチャ・ベースとの関連で書き込むことができるように、オフセット・ビットも発信パケットに符号化される。データ書込みの場合、結果として生じるネットワーク・パケットは、データを、オフセット、in−index、およびそれがアドレス指定された先のホストの表示を含むロケーション定義と共に含むものとみなされ得る。ホストの受信側NICにおいて、これは、受け取ったオフセット分だけオフセットされた、そのアパーチャに対応するPCIアドレスへのデータの書込みを命令するものとみなされることになる。読取り要求の場合には、類似の操作が行われる。この機能は、アパーチャが(前述したように)アプリケーション間で循環キューとして利用されることを可能にし、新しい受信データ・バッファごとに新しいアパーチャを作成する必要を回避する。
この実装形態では、ネットワーク・パケットはノンス・ビットも含む。これらのビットは、接続セットアップ時にアパーチャ・マッピングにプログラムされ、さらなるセキュリティを実現するためのものであり、アパーチャが異なるホストへの多くの接続で安全に再利用され得るようにする。
ホストAとBの間の通信でのノンス・ビット処理は以下の通りである。
1.ホストAで、乱数がノンスAとして選択される。
2.ノンスAがアパーチャin−indexAと併せて格納される。
3.一般的に前述したように通信をセットアップするために、ホストBに接続メッセージが送信される。この例では、メッセージはノンスAも含む。ゆえに、接続メッセージは、ポートB、in−indexA、ノンスAを含む。
4.接続メッセージを受け取ると、ホストBは、発信アパーチャBと併せてin−indexAおよびノンスAを格納する。
5.ホストBは乱数をノンスBとして選択する。
6.ノンスBがアパーチャin−indexBと併せて格納される。
7.一般的に前述したように通信のセットアップを受け入れるために受諾メッセージがホストBに送信される。この例では、メッセージはノンスBも含む。ゆえに、受諾メッセージは、ポートB’、in−indexB、ノンスBを含む。
8.ホストAは、発信アパーチャAと併せてin−indexBおよびノンスBを格納する。
ノンス・ビットを含むように接続がセットアップされた後、発信アパーチャを介してAからBに送られたすべてのパケットはノンスBを含む。受け取られると、NICはin−indexBを検索し、受け取ったノンス値をBでプログラムされたものと比較する。それらが異なる場合、パケットは拒絶される。これは、誤作動するアプリケーションが失効した接続を保持し続けている場合には非常に有用である。すなわち、それは有効な[host:in−index]アドレスを持つパケットを送信することはできるが、古いノンス・ビットを持つはずであり、そのため拒絶されることになる。
ユーザ・レベル・アプリケーションが、帯域外キューのための制御ブロックを持つことを想起すると、この制御ブロックを用いて、接続セットアップおよび取り外しが完全にユーザ・レベルで実行されるように、アプリケーションに関連付けられたアパーチャを制御することができる。
アパーチャ制御ブロックの一部だけがユーザ・プログラム可能であり、他の部分はオペレーティング・システムによってプログラムされなければならないことに留意されたい。
・ ユーザ・プログラム可能ビットには、ノンス・ビット、宛先ホスト・ビットが含まれる。
・ OSプログラム可能ビットには、
a)着信アパーチャのベース・アドレス(これはアプリケーションが誤って、あるいは悪意によってメモリ・バッファを破壊することを防ぐ)
b)発信元ホスト・ビット(これはアプリケーションが別のホストから発信していると偽装することを防ぐ)
が含まれる。
信頼されないアプリケーションには、カーネル接続管理が実行される。これは、帯域外データがカーネルでのみ処理され、プログラム可能ビットがアプリケーションから利用できないことを意味する。
発信アパーチャ表の一例を図10に示す。表の各行はアパーチャを表し、そのアパーチャの属性を示す。以下について留意すべきである。
1.いくつかのアパーチャ・サイズがサポートされ得る。これらは、ベース・アドレスがアパーチャのサイズも与えるようにグループ化される。代替として、アパーチャ表にはサイズ・フィールドも含まれ得る。
2.タイプ・フィールドは、発信パケットに使用するイーサネット・タイプを示す。これは、宛先アドレスが4バイトIPv4アドレスであるか、それとも16ビット・クラスタ・アドレスであるかも示す。(IPv6アドレスまたは他のプロトコル・アドレスも同様に対応され得る)。タイプ・フィールドは、クラスタ内のイベント・パケットとデータ・パケットも区別する。(イベント・パケットは、結果として宛先イベントキュー上に固定サイズのイベント・メッセージを出現させる)。
3.PCIベース・アドレスはOSプログラム可能に限られ、他のフィールドは、システムのセキュリティ・ポリシーに応じて、ユーザ・レベルでアプリケーションによってプログラムされ得る。
4.発信元イーサネット・アドレス、発信元IPおよびクラスタ・アドレス、ならびにおそらくその他の情報は、全エントリに共通であり、NICメモリごとに格納される。
5.あらゆる場合において、発信イーサネット・パケットのアドレス指定は、
<イーサネットMAC><IPホスト:IPポート>(TCP/IPパケットの場合)
または
<イーサネットMAC><CIホスト:CIin−index:CIノンス:CIアパーチャ・オフセット>(CI(コンピュータ・インターフェース)パケットの場合)
である(注意:オフセットは、発行されたPCIアドレスから導出される)。
6.各アパーチャには初期シーケンス番号が割り振られる。これは、パケットが処理され、任意選択でクラスタ・アドレス形式として含まれる際にハードウェアによって増分される。
着信アパーチャ表の一例を図11に示す。表の各行はアパーチャを表し、そのアパーチャの属性を示す。着信アパーチャは、基本的には、発信アパーチャの逆である。以下について留意すべきである。
1.サイズが、固定サイズ表を持つことによって任意選択で符号化されるのみならず、EthTypeも、別のアパーチャ表をグループ化することによって任意選択で符号化され得る。
2.シーケンス番号フィールドは任意選択であり、受信側は、
(a)シーケンス・チェックを行うべきかどうか
(b)初期シーケンス番号の値
を設定することができる。
行われた場合は、これもまた接続プロトコルの一部として伝達されなければならず、それは、好都合には、あるホストから別のホストへのノンス値の通信と類似の方法で実行され得る。
3.発信アパーチャと同様に、IPアドレスやイーサネット・アドレスなど一部の情報はNICごとである。
4.アプリケーション・レベルの頑健性のために、デフォルトの範囲内にある範囲を指定するアドレスおよびサイズを指定することによってアパーチャを「狭める」ことも可能である。これは、アプリケーション・レベルのデータ構造が、デフォルトのアパーチャ・サイズより小さいサイズのもの、またはそれと異なるアラインメントであり、きめ細かいメモリ保護が必要とされるときに行われ得る。
5.マップ・アドレスは、NICがアパーチャのメモリに書き込むために出力するPCIアドレス、またはイベントキューの記述子への(NICのSRAMにとっての)ローカル・ポインタである。
発信アパーチャでのPCI書込みは図12に示すように処理される。そのステップは以下の通りである。
1.そのアドレスがNICに割り振られた範囲内に含まれるPCIバーストが出力される。
2.NICのアドレス・デコーダは、そのバーストを取り込み、そのアドレスがアパーチャの範囲内にあることを判定する(そうでない場合、それはローカル制御書込みであり得る)。
3.(アドレスから大まかに求められる)アパーチャ・サイズに応じて、アドレスは<ベース:オフセット>に分割される。例えば、1kのアパーチャでは、下位10ビットがオフセットになるはずである。ベースはアパーチャ表キャッシュに供給されて、必要なパケット・ヘッダ情報に突き合わされる。
4.イーサネット・パケット・タイプ・フィールドに応じて、IP/イーサネットまたはCI/イーサネット・パケット・ヘッダが形成される。
5.CIパケットは、例えば、以下のフィールドを含むはずである。
データ(PCIバーストのデータ・ペイロードを含む)
チェックサム(ヘッダの内容に対してハードウェアによって計算される)
オフセット(アドレス・デコーダによる)
シーケンス番号
ノンス
アパーチャインデックス
CIホスト・クラスタ・アドレス
6.特定のホストにいくつかのPCIバーストが到着した場合、それらは、冗長ヘッダ情報を取り除くために適用される圧縮技術を用いて単一のイーサネット・フレームに圧縮され得る。
7.本システムでは、システム固有のCRCまたはチェックサムを用いてエンドツーエンド保護が提供され、パケットのデータ部分に付加される。イーサネット・パケットもCRCを含むが、それは取り除され、任意のホップで(スイッチなどで)再計算され得るので、内部破損(スイッチ特有のものなど)に対する保護を提供しない。
8.シーケンス番号が適用された場合、それは増分され、アパーチャ表エントリに書き戻される。
着信パケットでは、逆の操作が行われる。着信アパーチャが検索され、それが以下であることがチェックされる。
(a)有効である;
(b)期待されるシーケンス番号がパケットの番号とマッチする;
(c)ノンスがマッチする(またはポート);
(d)期待されるイーサネット発信元アドレスである;
(e)期待されるIPまたはCI発信元アドレスである(これは、発信元アドレスの範囲をマッチさせるためのネットマスクとして指定され得る);
必要とされるセキュリティ・レベルに応じて、これらのチェックの任意の1つまたは複数が実施され、または省略され得る。
検索(lookup)は、アパーチャの(ベース+エクステント)のフィールドを返す。アパーチャ外アクセスが行われず、受信側のPCIバス上で、
Figure 0004657720
の形式を用いてPCI書込みが形成され、出力されるように、オフセットがエクステントに対してチェックされる。
PCIバスが機能停止した場合、(データ上などで)新しいPCIトランザクションが出力される。
Figure 0004657720
同様に、連続したCIデータ・パケットが到着した場合、それらは、単に冗長な中間ヘッダを除去することにより、より大きなPCIバーストに合併され得る。
本出願人は、本明細書で説明した個々の特徴および2つ以上のそのような特徴の任意の組合せを、そのような特徴または特徴の組合せが本明細書で開示した任意の問題を解決するかどうかにかかわらず、また特許請求の範囲の範囲を限定することもなく、そのような特徴または組合せが、当分野の技術者に共通の一般的知識を考慮して本明細書全体に基づいて実行され得る程度まで、分離して開示する。本出願人は、本発明の諸態様が、任意のそのような個々の特徴または特徴の組合せから構成され得ることを示す。前述の説明を考察すれば、本発明の範囲内で様々な変更が行われ得ることが当分野の技術者には明らかになるであろう。
ネットワークを介した1つのアドレス空間の別のアドレス空間へのマッピングを示す図である。 従来技術のメモリ・マップ・アーキテクチャのアーキテクチャを示す図である。 データ伝送システムを示す概略図である。 アドレスのビットのマッピングを示す図である。 アドレスのビットのマッピングを示す図である。 メモリ空間アパーチャおよびその管理ドメインを示す図である。 ポートの諸機能を示す図である。 制御ブロックを備えるキューを示す図である。 二重キュー機構を示す図である。 発信アパーチャ表の一例を示す図である。 着信アパーチャ表の一例を示す図である。 発信アパーチャのためのPCI書込みでの諸ステップを示す図である。 固定長および可変長キューにおけるポインタの操作を示す図である。

Claims (12)

  1. データ・リンクとデータ・プロセッサの間のインターフェースを提供する通信インターフェースであって、前記データ・プロセッサはオペレーティング・システムおよびユーザ・アプリケーションをサポートすることができ、
    前記リンクを介して受け取られユーザ・アプリケーションに関連付けられた特定の論理データ・ポート向けとして識別されたデータを、ユーザ・アプリケーションのアドレス空間に位置づけられた第1のキューに入力し、
    前記特定の論理データ・ポート用の前記リンクを介して受け取られ前記オペレーティング・システム向けとして識別された帯域外データを、前記オペレーティング・システムのアドレス空間に位置づけられ前記ユーザ・アプリケーションのアドレス空間にマップされたメモリからなる第2のキューに入力し、
    前記リンクを介して受け取られ、前記オペレーティング・システムまたは前記データ・ポート向けとして識別されたデータを分析して、そのデータが1つまたは複数の事前定義された基準を満たすかどうか判定し、それが前記基準を満たす場合、前記オペレーティング・システムに割り込みを送信し、前記ユーザ・アプリケーションの処理が中断されるときに前記通信インターフェースが前記データ・ポート向けとして識別されたデータを受信する際に前記オペレーティング・システムに割り込みを送信するように前記事前定義された基準は設定される通信インターフェース。
  2. 前記事前定義された基準の1つは、前記リンクを介して受け取られた前記データが1つまたは複数の所定のメッセージ形式にマッチする場合、前記通信インターフェースが前記オペレーティング・システムに割り込みを送信するというものである請求項1に記載の通信インターフェース。
  3. 前記データが前記事前定義された基準の1つまたは複数および1つまたは複数のさらなる基準を満たす場合、前記オペレーティング・システムに割り込みを送信し、前記データがアドレス指定されたポートを示す前記オペレーティング・システムへのメッセージを送信するように構成された請求項1または2に記載の通信インターフェース。
  4. 前記さらなる基準がエラー条件を示す請求項に記載の通信インターフェース。
  5. 前記リンクを介して受け取られユーザ・アプリケーションに関連付けられた論理データ・ポートにアドレス指定されたデータ第3のキューに入力するように構成され、前記リンクを介して受け取られ固定長を有する形式のデータ単位を前記第1のキューに入力すると共に、前記リンクを介して受け取られ可変長を有する形式のデータ単位を前記第3のキューに入力するように構成された請求項1〜のいずれかに記載の通信インターフェース。
  6. 前記固定サイズのデータ単位が、前記リンクを介して受け取られ、前記通信インターフェースによってエラー状況を示していると解釈されたメッセージを含む請求項に記載の通信インターフェース。
  7. 前記固定サイズのデータ単位が、前記リンクを介して受け取られ、前記通信インターフェースによって、接続のセットアップを求める要求またはその肯定応答を示していると解釈されたメッセージを含む請求項またはに記載の通信インターフェース。
  8. 前記固定サイズのデータ単位が、前記リンクを介して受け取られ、前記通信インターフェースによってデータ配信イベントを示していると解釈されたメッセージを含む請求項のいずれかに記載の通信インターフェース。
  9. 前記リンクを介して受け取られた各データ単位の内容を分析し、そのデータ単位の内容に応じて、前記データ単位を前記キューのうちのどれに適用するか決定するように構成された請求項1〜のいずれかに記載の通信インターフェース。
  10. 前記オペレーティング・システムによって前記基準を設定するように構成可能である請求項1〜のいずれかに記載の通信インターフェース。
  11. 前記通信インターフェースと前記オペレーティング・システムの一方または両方が、所定のタイプのメッセージに応答して、前記ポートの状況を示す情報を含むメッセージを返す請求項1〜10のいずれかに記載の通信インターフェース。
  12. 請求項11に記載の通信インターフェース、および前記データ・プロセッサを含み、前記データ・プロセッサは、データ・ポートが関連付けられたアプリケーションの処理が中断されたとき、そのデータ・ポート向けとして識別されたデータを受け取ると、前記通信インターフェースが前記オペレーティング・システムに割り込みを送信するという前記基準を設定するように構成された通信システム。
JP2004535685A 2002-09-16 2003-09-15 ネットワーク・インターフェースおよびプロトコル Expired - Lifetime JP4657720B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0221464.1A GB0221464D0 (en) 2002-09-16 2002-09-16 Network interface and protocol
PCT/GB2003/003971 WO2004025477A2 (en) 2002-09-16 2003-09-15 Network interface and protocol supporting mappings of virtual memory locations at different processing devices

Publications (2)

Publication Number Publication Date
JP2005539305A JP2005539305A (ja) 2005-12-22
JP4657720B2 true JP4657720B2 (ja) 2011-03-23

Family

ID=9944152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004535685A Expired - Lifetime JP4657720B2 (ja) 2002-09-16 2003-09-15 ネットワーク・インターフェースおよびプロトコル

Country Status (8)

Country Link
US (4) US7844742B2 (ja)
EP (1) EP1565826B1 (ja)
JP (1) JP4657720B2 (ja)
CN (1) CN1695127A (ja)
AU (1) AU2003269131A1 (ja)
GB (1) GB0221464D0 (ja)
TW (1) TWI244288B (ja)
WO (1) WO2004025477A2 (ja)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8073994B2 (en) 2000-05-03 2011-12-06 At&T Laboratories Data transfer, synchronising applications, and low latency networks
US7640582B2 (en) 2003-04-16 2009-12-29 Silicon Graphics International Clustered filesystem for mix of trusted and untrusted nodes
US7899828B2 (en) 2003-12-10 2011-03-01 Mcafee, Inc. Tag data structure for maintaining relational data over captured objects
US7814327B2 (en) 2003-12-10 2010-10-12 Mcafee, Inc. Document registration
US7984175B2 (en) 2003-12-10 2011-07-19 Mcafee, Inc. Method and apparatus for data capture and analysis system
US7774604B2 (en) * 2003-12-10 2010-08-10 Mcafee, Inc. Verifying captured objects before presentation
US8656039B2 (en) 2003-12-10 2014-02-18 Mcafee, Inc. Rule parser
US8548170B2 (en) 2003-12-10 2013-10-01 Mcafee, Inc. Document de-registration
US20050131876A1 (en) * 2003-12-10 2005-06-16 Ahuja Ratinder Paul S. Graphical user interface for capture system
US7930540B2 (en) 2004-01-22 2011-04-19 Mcafee, Inc. Cryptographic policy enforcement
GB0404696D0 (en) * 2004-03-02 2004-04-07 Level 5 Networks Ltd Dual driver interface
US7783769B2 (en) 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
US7962591B2 (en) 2004-06-23 2011-06-14 Mcafee, Inc. Object classification in a capture system
US20050286526A1 (en) * 2004-06-25 2005-12-29 Sood Sanjeev H Optimized algorithm for stream re-assembly
US7461173B2 (en) * 2004-06-30 2008-12-02 Intel Corporation Distributing timers across processors
US20060004933A1 (en) * 2004-06-30 2006-01-05 Sujoy Sen Network interface controller signaling of connection event
US20060031474A1 (en) * 2004-07-19 2006-02-09 Linden Cornett Maintaining reachability measures
US8560534B2 (en) 2004-08-23 2013-10-15 Mcafee, Inc. Database for a capture system
US7949849B2 (en) 2004-08-24 2011-05-24 Mcafee, Inc. File system for a capture system
GB0420057D0 (en) 2004-09-09 2004-10-13 Level 5 Networks Ltd Dynamic resource allocation
GB0426202D0 (en) * 2004-11-30 2004-12-29 Ibm A method, system and computer program for addressing a web service
US7562366B2 (en) * 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
CN101421791B (zh) 2005-02-03 2015-11-25 索勒弗莱尔通信有限公司 用于主机和外围设备之间通信的队列深度管理的方法
US7831749B2 (en) * 2005-02-03 2010-11-09 Solarflare Communications, Inc. Including descriptor queue empty events in completion events
WO2006127013A1 (en) * 2005-05-26 2006-11-30 Zetera Corporation Virtual devices and virtual bus tunnels, modules and methods
US7620981B2 (en) * 2005-05-26 2009-11-17 Charles William Frank Virtual devices and virtual bus tunnels, modules and methods
EP1891787B1 (en) 2005-06-15 2010-03-24 Solarflare Communications Incorporated Data processing system
US7496699B2 (en) 2005-06-17 2009-02-24 Level 5 Networks, Inc. DMA descriptor queue read and cache write pointer arrangement
US7907608B2 (en) 2005-08-12 2011-03-15 Mcafee, Inc. High speed packet capture
US8819092B2 (en) 2005-08-16 2014-08-26 Rateze Remote Mgmt. L.L.C. Disaggregated resources and access methods
US7818326B2 (en) * 2005-08-31 2010-10-19 Mcafee, Inc. System and method for word indexing in a capture system and querying thereof
US7724658B1 (en) 2005-08-31 2010-05-25 Chelsio Communications, Inc. Protocol offload transmit traffic management
US7660306B1 (en) 2006-01-12 2010-02-09 Chelsio Communications, Inc. Virtualizing the operation of intelligent network interface circuitry
US7730011B1 (en) 2005-10-19 2010-06-01 Mcafee, Inc. Attributes of captured objects in a capture system
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US7657104B2 (en) * 2005-11-21 2010-02-02 Mcafee, Inc. Identifying image type in a capture system
WO2007074343A2 (en) 2005-12-28 2007-07-05 Level 5 Networks Incorporated Processing received data
US7916750B2 (en) * 2005-12-28 2011-03-29 Intel Corporation Transaction layer packet compression
US20070226504A1 (en) * 2006-03-24 2007-09-27 Reconnex Corporation Signature match processing in a document registration system
US8504537B2 (en) 2006-03-24 2013-08-06 Mcafee, Inc. Signature distribution in a document registration system
US7958227B2 (en) 2006-05-22 2011-06-07 Mcafee, Inc. Attributes of captured objects in a capture system
US8010689B2 (en) 2006-05-22 2011-08-30 Mcafee, Inc. Locational tagging in a capture system
US7689614B2 (en) 2006-05-22 2010-03-30 Mcafee, Inc. Query generation for a capture system
US7668984B2 (en) * 2007-01-10 2010-02-23 International Business Machines Corporation Low latency send queues in I/O adapter hardware
US20080195756A1 (en) * 2007-02-08 2008-08-14 Michael Galles Method and system to access a service utilizing a virtual communications device
US8935406B1 (en) 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US8060644B1 (en) * 2007-05-11 2011-11-15 Chelsio Communications, Inc. Intelligent network adaptor with end-to-end flow control
US8589587B1 (en) 2007-05-11 2013-11-19 Chelsio Communications, Inc. Protocol offload in intelligent network adaptor, including application level signalling
US20090083392A1 (en) * 2007-09-25 2009-03-26 Sun Microsystems, Inc. Simple, efficient rdma mechanism
US9396159B2 (en) * 2007-09-25 2016-07-19 Oracle America, Inc. Simple, reliable, connectionless communication mechanism
US7937449B1 (en) * 2007-10-08 2011-05-03 Empirix, Inc. System and method for enabling network stack processes in user mode and kernel mode to access kernel memory locations
US8205242B2 (en) 2008-07-10 2012-06-19 Mcafee, Inc. System and method for data mining and security policy management
US9253154B2 (en) 2008-08-12 2016-02-02 Mcafee, Inc. Configuration management for a capture/registration system
US8850591B2 (en) 2009-01-13 2014-09-30 Mcafee, Inc. System and method for concept building
US8706709B2 (en) 2009-01-15 2014-04-22 Mcafee, Inc. System and method for intelligent term grouping
US8473442B1 (en) 2009-02-25 2013-06-25 Mcafee, Inc. System and method for intelligent state management
US8667121B2 (en) 2009-03-25 2014-03-04 Mcafee, Inc. System and method for managing data and policies
US8447722B1 (en) 2009-03-25 2013-05-21 Mcafee, Inc. System and method for data mining and security policy management
KR20100107801A (ko) * 2009-03-26 2010-10-06 삼성전자주식회사 무선 통신 시스템에서 안테나 선택을 위한 장치 및 방법
US8234407B2 (en) * 2009-06-30 2012-07-31 Oracle America, Inc. Network use of virtual addresses without pinning or registration
CN102026171B (zh) * 2009-09-17 2013-06-12 国基电子(上海)有限公司 安全控制远程无线设备的方法
TWI416336B (zh) * 2009-11-10 2013-11-21 Realtek Semiconductor Corp 可共享緩衝器的網路介面卡與緩衝器共享方法
US8824472B2 (en) * 2010-09-16 2014-09-02 Verizon Patent And Licensing Inc. Sanitizing packet headers
US8806615B2 (en) 2010-11-04 2014-08-12 Mcafee, Inc. System and method for protecting specified data combinations
US9071499B2 (en) * 2011-03-28 2015-06-30 Citrix Systems, Inc. Systems and methods for emulating a NIC for packet transmission on hardware RSS unaware NICs in a multi-core system
US20120303750A1 (en) * 2011-05-26 2012-11-29 Mike Anderson Cloud-assisted network device integration
US9160785B2 (en) 2011-05-26 2015-10-13 Candi Controls, Inc. Discovering device drivers within a domain of a premises
US8700561B2 (en) 2011-12-27 2014-04-15 Mcafee, Inc. System and method for providing data protection workflows in a network environment
US9098271B2 (en) * 2012-02-05 2015-08-04 Jeffrey R. Eastlack Autonomous microprocessor re-configurability via power gating pipelined execution units using static profiling
US20170109299A1 (en) * 2014-03-31 2017-04-20 Stephen Belair Network computing elements, memory interfaces and network connections to such elements, and related systems
US9411637B2 (en) * 2012-06-08 2016-08-09 Apple Inc. Adaptive process importance
US9612877B1 (en) * 2012-07-12 2017-04-04 Cisco Technology, Inc. High performance computing in a virtualized environment
US9438638B2 (en) * 2013-03-15 2016-09-06 Silicon Graphics International Corp. Method for transparently connecting augmented network socket operations
US9465763B2 (en) * 2013-06-17 2016-10-11 Altera Corporation Bridge circuitry for communications with dynamically reconfigurable circuits
US9292379B2 (en) * 2013-09-28 2016-03-22 Intel Corporation Apparatus and method to manage high capacity storage devices
US9436751B1 (en) * 2013-12-18 2016-09-06 Google Inc. System and method for live migration of guest
US9444747B2 (en) 2014-01-30 2016-09-13 Telefonaktiebolaget Lm Ericsson (Publ) Service specific traffic handling
US9660930B2 (en) 2014-03-17 2017-05-23 Splunk Inc. Dynamic data server nodes
US9836358B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Ephemeral remote data store for dual-queue systems
US9838467B2 (en) * 2014-03-17 2017-12-05 Splunk Inc. Dynamically instantiating dual-queue systems
US9753818B2 (en) 2014-09-19 2017-09-05 Splunk Inc. Data forwarding using multiple data pipelines
US9838346B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Alerting on dual-queue systems
US9778963B2 (en) 2014-03-31 2017-10-03 Solarflare Communications, Inc. Ordered event notification
US11310312B2 (en) 2014-07-07 2022-04-19 Citrix Systems, Inc. Peer to peer remote application discovery
US11283866B2 (en) * 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks
US9952979B1 (en) * 2015-01-14 2018-04-24 Cavium, Inc. Methods and systems for direct memory access operations
US10838852B2 (en) * 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space
US11036533B2 (en) 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
US10397140B2 (en) 2015-04-23 2019-08-27 Hewlett-Packard Development Company, L.P. Multi-processor computing systems
EP3296836B1 (en) 2015-07-22 2019-09-11 Huawei Technologies Co., Ltd. Computer device and data read-write method for computer device
CN106803812B (zh) * 2015-11-26 2020-12-01 华为技术有限公司 一种用于实现负载分担的方法和装置
CN108701003B (zh) * 2016-03-31 2022-04-26 英特尔公司 用于对远程节点的许多存储操作的原子写入的结构弹性支持
US10498867B2 (en) * 2016-11-02 2019-12-03 Solarflare Communications, Inc. Network interface device and host processing device field
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
US11157422B2 (en) 2017-03-31 2021-10-26 Intel Corporation Shared memory for intelligent network interface cards
CN110892380B (zh) * 2017-07-10 2023-08-11 芬基波尔有限责任公司 用于流处理的数据处理单元
CN110915173B (zh) 2017-07-10 2022-04-29 芬基波尔有限责任公司 用于计算节点和存储节点的数据处理单元
US10686872B2 (en) * 2017-12-19 2020-06-16 Xilinx, Inc. Network interface device
US10686731B2 (en) 2017-12-19 2020-06-16 Xilinx, Inc. Network interface device
US11165720B2 (en) 2017-12-19 2021-11-02 Xilinx, Inc. Network interface device
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US20190278715A1 (en) * 2018-03-12 2019-09-12 Nutanix, Inc. System and method for managing distribution of virtual memory over multiple physical memories
US11409569B2 (en) * 2018-03-29 2022-08-09 Xilinx, Inc. Data processing system
US11119789B2 (en) * 2018-04-25 2021-09-14 Hewlett Packard Enterprise Development Lp Kernel space measurement
US10614000B2 (en) * 2018-05-04 2020-04-07 Intel Corporation High bandwidth link layer for coherent messages
US10873564B2 (en) * 2018-09-20 2020-12-22 Palo Alto Research Center Incorporated Cloud-based device manager based on message queues
CN111176855B (zh) * 2018-11-09 2023-10-27 微软技术许可有限责任公司 在用户空间中建立线程之间的队列

Family Cites Families (157)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4393443A (en) * 1980-05-20 1983-07-12 Tektronix, Inc. Memory mapping system
US5325532A (en) 1992-09-25 1994-06-28 Compaq Computer Corporation Automatic development of operating system boot image
US5272599A (en) 1993-03-19 1993-12-21 Compaq Computer Corporation Microprocessor heat dissipation apparatus for a printed circuit board
JPH07110749A (ja) 1993-04-16 1995-04-25 Hewlett Packard Co <Hp> ダイアログ・ボックスの動的構築方法
US6098112A (en) 1995-10-19 2000-08-01 Hewlett-Packard Company Streams function registering
DE69727465T2 (de) * 1997-01-09 2004-12-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung
US5886872A (en) 1997-04-23 1999-03-23 Compaq Computer Corporation Pivotable support and heat sink apparatus removably connectable without tools to a computer processor
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
IL121457A (en) * 1997-08-03 2004-06-01 Guru Internat Inc Computerized dictionary and thesaurus applications
US6111894A (en) * 1997-08-26 2000-08-29 International Business Machines Corporation Hardware interface between a switch adapter and a communications subsystem in a data processing system
US6067595A (en) * 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
ES2285782T3 (es) * 1997-09-25 2007-11-16 John Wolfgang Halpern Sistema de cifrado de datos para comunicaciones por internet.
EP1038220A2 (en) * 1997-11-17 2000-09-27 MCMZ Technology Innovations LLc A high performance interoperable network communications architecture (inca)
US6160554A (en) 1998-03-19 2000-12-12 Hewlett Packard Company Computer file content preview window
US6002804A (en) 1998-03-26 1999-12-14 Hewlett-Packard Company Tone dependent variable halftoning with adjustable algorithm selection
US6246683B1 (en) * 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass
US6260127B1 (en) 1998-07-13 2001-07-10 Compaq Computer Corporation Method and apparatus for supporting heterogeneous memory in computer systems
US6768996B1 (en) 1998-10-08 2004-07-27 Hewlett-Packard Development Company, L.P. System and method for retrieving an abstracted portion of a file without regard to the operating system of the current host computer
US6314532B1 (en) * 1998-12-04 2001-11-06 Lucent Technologies Inc. Method and system for recovering from a software failure
US6360241B1 (en) 1999-02-01 2002-03-19 Compaq Information Technologies Goup, L.P. Computer method and apparatus for division and square root operations using signed digit
US6466952B2 (en) 1999-04-08 2002-10-15 Hewlett-Packard Company Method for transferring and indexing data from old media to new media
US6502203B2 (en) 1999-04-16 2002-12-31 Compaq Information Technologies Group, L.P. Method and apparatus for cluster system operation
GB2349717A (en) * 1999-05-04 2000-11-08 At & T Lab Cambridge Ltd Low latency network
US6304945B1 (en) 1999-05-13 2001-10-16 Compaq Computer Corporation Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses
US7318102B1 (en) 1999-05-24 2008-01-08 Hewlett-Packard Development Company, L.P. Reliable datagram
AU7036400A (en) 1999-09-08 2001-04-10 Mellanox Technologies Ltd. Synchronization of interrupts with data packets
WO2001048922A1 (en) 1999-12-28 2001-07-05 Mellanox Technologies Ltd. Duty cycle adapter
DE60135127D1 (de) 2000-05-24 2008-09-11 Voltaire Ltd Gefilterte kommunikation von anwendung zu anwendung
US7103626B1 (en) 2000-05-24 2006-09-05 Hewlett-Packard Development, L.P. Partitioning in distributed computer system
WO2001093046A1 (en) 2000-06-02 2001-12-06 Mellanox Technologies Ltd. Dma doorbell
JP3552648B2 (ja) * 2000-06-20 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション アドホック無線通信用データ送受システム及びアドホック無線通信用データ送受方法
US6690757B1 (en) 2000-06-20 2004-02-10 Hewlett-Packard Development Company, L.P. High-speed interconnection adapter having automated lane de-skew
JP2002014872A (ja) * 2000-06-29 2002-01-18 Fujitsu Ltd 暗号制御装置
US6799200B1 (en) * 2000-07-18 2004-09-28 International Business Machines Corporaiton Mechanisms for efficient message passing with copy avoidance in a distributed system
US7222150B1 (en) * 2000-08-15 2007-05-22 Ikadega, Inc. Network server card and method for handling requests received via a network interface
JP2004526218A (ja) 2000-08-24 2004-08-26 ボルテール アドバンスト データ セキュリティ リミテッド 相互接続されたファブリックにおける高度にスケーラブルで高速のコンテンツ・ベース・フィルタリング及び負荷均衡化システム及び方法
US6765922B1 (en) 2000-09-08 2004-07-20 Hewlett-Packard Development Company, L.P. Speculative transmit for system area network latency reduction
US20020059052A1 (en) 2000-09-12 2002-05-16 Mellanox Technologies Ltd. Co-simulation of network components
US6349035B1 (en) 2000-09-29 2002-02-19 Compaq Information Technologies Group, L.P. Method and apparatus for tooless mating of liquid cooled cold plate with tapered interposer heat sink
US6718392B1 (en) 2000-10-24 2004-04-06 Hewlett-Packard Development Company, L.P. Queue pair partitioning in distributed computer system
AUPR108900A0 (en) 2000-10-28 2000-11-23 S4 Technology Pty Limited Modular digital transmission assembly
US6976174B2 (en) * 2001-01-04 2005-12-13 Troika Networks, Inc. Secure multiprotocol interface
US6728743B2 (en) 2001-01-04 2004-04-27 Mellanox Technologies Ltd. Modulo remainder generator
US7254237B1 (en) 2001-01-12 2007-08-07 Slt Logic, Llc System and method for establishing a secure connection
US6950961B2 (en) 2001-02-13 2005-09-27 Hewlett-Packard Development Company, L.P. Highly available, monotonic increasing sequence number generation
ATE479147T1 (de) * 2001-02-24 2010-09-15 Ibm Neuartiger massivparalleler supercomputer
US20020129293A1 (en) 2001-03-07 2002-09-12 Hutton John F. Scan based multiple ring oscillator structure for on-chip speed measurement
US20020140985A1 (en) 2001-04-02 2002-10-03 Hudson Kevin R. Color calibration for clustered printing
US20020152328A1 (en) 2001-04-11 2002-10-17 Mellanox Technologies, Ltd. Network adapter with shared database for message context information
US7543290B2 (en) 2001-04-11 2009-06-02 Mellanox Technologies Ltd. Multiple queue pair access with single doorbell
US7042848B2 (en) 2001-05-04 2006-05-09 Slt Logic Llc System and method for hierarchical policing of flows and subflows of a data stream
US6901052B2 (en) 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US6944168B2 (en) 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US6438130B1 (en) 2001-06-28 2002-08-20 Mellanox Technologies Ltd. Forwarding database cache
US6980328B2 (en) 2001-07-05 2005-12-27 Hewlett-Packard Development Company, L.P. Direction-dependent color conversion in bidirectional printing
US7136397B2 (en) 2001-08-20 2006-11-14 Slt Logic Llc Network architecture and system for delivering bi-directional xDSL based services
US7151744B2 (en) 2001-09-21 2006-12-19 Slt Logic Llc Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover
US7099275B2 (en) 2001-09-21 2006-08-29 Slt Logic Llc Programmable multi-service queue scheduler
US7161719B2 (en) 2001-09-26 2007-01-09 Hewlett-Packard Development Company, L.P. Generalized color calibration architecture and method
US6904534B2 (en) 2001-09-29 2005-06-07 Hewlett-Packard Development Company, L.P. Progressive CPU sleep state duty cycle to limit peak power of multiple computers on shared power distribution unit
US7023584B2 (en) 2001-10-02 2006-04-04 Hewlett-Packard Development Company, L.P. Color calibration method and apparatus
US20030065856A1 (en) * 2001-10-03 2003-04-03 Mellanox Technologies Ltd. Network adapter with multiple event queues
US7054035B2 (en) 2001-10-29 2006-05-30 Hewlett-Packard Development Company, L.P. Method and system for management of color through conversion between color spaces
US7240350B1 (en) 2002-01-07 2007-07-03 Slt Logic, Llc System and method for providing communications to processes
US7093158B2 (en) 2002-03-11 2006-08-15 Hewlett-Packard Development Company, L.P. Data redundancy in a hot pluggable, large symmetric multi-processor system
US7245627B2 (en) 2002-04-23 2007-07-17 Mellanox Technologies Ltd. Sharing a network interface card among multiple hosts
US6705703B2 (en) 2002-04-24 2004-03-16 Hewlett-Packard Development Company, L.P. Determination of control points for construction of first color space-to-second color space look-up table
US6667918B2 (en) 2002-05-01 2003-12-23 Mellanox Technologies Ltd. Self-repair of embedded memory arrays
US7149227B2 (en) 2002-05-31 2006-12-12 Mellanox Technologies Ltd. Round-robin arbiter with low jitter
CN1647054B (zh) * 2002-06-19 2010-09-08 艾利森电话股份有限公司 双模网络设备驱动设备、系统和方法
US7263103B2 (en) 2002-07-23 2007-08-28 Mellanox Technologies Ltd. Receive queue descriptor pool
US7143412B2 (en) 2002-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for optimizing performance in a multi-processing system
US7290038B2 (en) * 2002-07-31 2007-10-30 Sun Microsystems, Inc. Key reuse for RDMA virtual address space
US7631106B2 (en) 2002-08-15 2009-12-08 Mellanox Technologies Ltd. Prefetching of receive queue descriptors
US7386619B1 (en) 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7316017B1 (en) 2003-01-06 2008-01-01 Slt Logic, Llc System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system
US7190827B2 (en) 2003-01-22 2007-03-13 Hewlett-Packard Development Company, L.P. Color space conversion using interpolation
US8023520B2 (en) 2003-03-27 2011-09-20 Hewlett-Packard Development Company, L.P. Signaling packet
US7103744B2 (en) 2003-03-27 2006-09-05 Hewlett-Packard Development Company, L.P. Binding a memory window to a queue pair
US7502826B2 (en) 2003-03-27 2009-03-10 Hewlett-Packard Development Company, L.P. Atomic operations
US7554993B2 (en) 2003-03-27 2009-06-30 Hewlett-Packard Development Company, L.P. Method and apparatus for performing connection management with multiple stacks
US20040210754A1 (en) 2003-04-16 2004-10-21 Barron Dwight L. Shared security transform device, system and methods
US20040252685A1 (en) 2003-06-13 2004-12-16 Mellanox Technologies Ltd. Channel adapter with integrated switch
US7352893B2 (en) 2003-07-09 2008-04-01 Hewlett-Packard Development Company, L.P. Representing extended color gamut information
US7446901B2 (en) 2003-07-21 2008-11-04 Hewlett-Packard Development Company Conforming output intensities of pens
US7192891B2 (en) * 2003-08-01 2007-03-20 Samsung Electronics, Co., Ltd. Method for forming a silicon oxide layer using spin-on glass
US7484209B2 (en) 2003-08-12 2009-01-27 Hewlett-Packard Development Company, L.P. Instrumenting java code by modifying bytecodes
US7496903B2 (en) 2003-08-12 2009-02-24 Hewlett-Packard Development Company, L.P. Synthesizing application response measurement (ARM) instrumentation
US20050039171A1 (en) 2003-08-12 2005-02-17 Avakian Arra E. Using interceptors and out-of-band data to monitor the performance of Java 2 enterprise edition (J2EE) applications
US7757232B2 (en) 2003-08-14 2010-07-13 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing work request lists
US7617376B2 (en) 2003-08-14 2009-11-10 Hewlett-Packard Development Company, L.P. Method and apparatus for accessing a memory
US7404190B2 (en) 2003-09-18 2008-07-22 Hewlett-Packard Development Company, L.P. Method and apparatus for providing notification via multiple completion queue handlers
US7653754B2 (en) 2004-01-05 2010-01-26 Mellanox Technologies Ltd. Method, system and protocol that enable unrestricted user-level access to a network interface adapter
US20050172181A1 (en) 2004-01-16 2005-08-04 Mellanox Technologies Ltd. System and method for production testing of high speed communications receivers
US20050219278A1 (en) 2004-03-30 2005-10-06 Hudson Kevin R Image formation with a flexible number of passes
US7168784B2 (en) 2004-03-30 2007-01-30 Hewlett-Packard Development Company, L.P. Formation of images
US7929161B2 (en) 2004-04-15 2011-04-19 Hewlett-Packard Development Company, L.P. Image processing system and method
US7650386B2 (en) 2004-07-29 2010-01-19 Hewlett-Packard Development Company, L.P. Communication among partitioned devices
US20060045098A1 (en) 2004-08-31 2006-03-02 Krause Michael R System for port mapping in a network
US7403535B2 (en) 2004-12-14 2008-07-22 Hewlett-Packard Development Company, L.P. Aggregation of network resources providing offloaded connections between applications over a network
US7551614B2 (en) 2004-12-14 2009-06-23 Hewlett-Packard Development Company, L.P. Aggregation over multiple processing nodes of network resources each providing offloaded connections between applications over a network
US20060193318A1 (en) 2005-02-28 2006-08-31 Sriram Narasimhan Method and apparatus for processing inbound and outbound quanta of data
US7674564B2 (en) 2005-04-11 2010-03-09 Hewlett-Packard Development Company, L.P. Color filter
US7580415B2 (en) 2005-04-27 2009-08-25 Hewlett-Packard Development Company, L.P. Aggregation of hybrid network resources operable to support both offloaded and non-offloaded connections
US7580495B2 (en) 2005-06-30 2009-08-25 Slt Logic Llc Mixer-based phase control
US7573967B2 (en) 2005-07-01 2009-08-11 Slt Logic Llc Input threshold adjustment in a synchronous data sampling circuit
US8645964B2 (en) 2005-08-23 2014-02-04 Mellanox Technologies Ltd. System and method for accelerating input/output access operation on a virtual machine
US7285996B2 (en) 2005-09-30 2007-10-23 Slt Logic, Llc Delay-locked loop
US7813460B2 (en) 2005-09-30 2010-10-12 Slt Logic, Llc High-speed data sampler with input threshold adjustment
US9104894B2 (en) 2005-12-16 2015-08-11 Hewlett-Packard Development Company, L.P. Hardware enablement using an interface
US7827442B2 (en) 2006-01-23 2010-11-02 Slt Logic Llc Shelf management controller with hardware/software implemented dual redundant configuration
US7518164B2 (en) 2006-03-29 2009-04-14 Mellanox Technologies Ltd. Current-triggered low turn-on voltage SCR
US9111602B2 (en) 2006-04-07 2015-08-18 Mellanox Technologies, Ltd. Accurate global reference voltage distribution system with local reference voltages referred to local ground and locally supplied voltage
US7514978B2 (en) 2006-05-08 2009-04-07 Mellanox Technologies Ltd. Terminated input buffer with offset cancellation circuit
US7567267B2 (en) 2006-07-31 2009-07-28 Hewlett-Packard Development Company, L.P. System and method for calibrating a beam array of a printer
US7822594B2 (en) 2006-08-07 2010-10-26 Voltaire Ltd. Service-oriented infrastructure management
US7801027B2 (en) 2006-08-30 2010-09-21 Mellanox Technologies Ltd. Auto-negotiation by nodes on an infiniband fabric
US8948199B2 (en) 2006-08-30 2015-02-03 Mellanox Technologies Ltd. Fibre channel processing by a host channel adapter
US20080115217A1 (en) 2006-10-31 2008-05-15 Hewlett-Packard Development Company, L.P. Method and apparatus for protection of a computer system from malicious code attacks
US8296849B2 (en) 2006-10-31 2012-10-23 Hewlett-Packard Development Company, L.P. Method and apparatus for removing homogeneity from execution environment of computing system
US8522042B2 (en) 2006-10-31 2013-08-27 Hewlett-Packard Development Company, L.P. Method and apparatus for enforcement of software licence protection
US8233380B2 (en) 2006-11-06 2012-07-31 Hewlett-Packard Development Company, L.P. RDMA QP simplex switchless connection
US8244825B2 (en) 2006-11-06 2012-08-14 Hewlett-Packard Development Company, L.P. Remote direct memory access (RDMA) completion
US20080135774A1 (en) 2006-12-08 2008-06-12 Asml Netherlands B.V. Scatterometer, a lithographic apparatus and a focus analysis method
US8909742B2 (en) 2006-12-18 2014-12-09 Hewlett-Packard Development Company, L.P. Distributed configuration of network interface cards
US7864787B2 (en) 2007-03-26 2011-01-04 Voltaire Ltd. Device, system and method of multicast communication
US7848322B2 (en) 2007-03-26 2010-12-07 Voltaire Ltd. Device, system and method of UDP communication
US7856488B2 (en) 2007-03-30 2010-12-21 Hewlett-Packard Development Company, L.P. Electronic device profile migration
WO2008127672A2 (en) 2007-04-11 2008-10-23 Slt Logic Llc Modular blade for providing scalable mechanical, electrical and environmental functionality in the enterprise using advanced tca boards
US8817817B2 (en) 2007-06-06 2014-08-26 Hewlett-Packard Development Company, L.P. Method for ethernet power savings on link aggregated groups
US7802071B2 (en) 2007-07-16 2010-09-21 Voltaire Ltd. Device, system, and method of publishing information to multiple subscribers
US20090165003A1 (en) 2007-12-21 2009-06-25 Van Jacobson System and method for allocating communications to processors and rescheduling processes in a multiprocessor system
US8903989B2 (en) 2008-04-28 2014-12-02 Hewlett-Packard Development Company, L.P. Adjustable server-transmission rates over fixed-speed backplane connections within a multi-server enclosure
US8248930B2 (en) 2008-04-29 2012-08-21 Google Inc. Method and apparatus for a network queuing engine and congestion management gateway
US8520686B2 (en) 2008-05-08 2013-08-27 Hewlett-Packard Development Company, L.P. Method for interfacing a fibre channel network with an ethernet based network
US8108538B2 (en) 2008-08-21 2012-01-31 Voltaire Ltd. Device, system, and method of distributing messages
US20100088437A1 (en) 2008-10-06 2010-04-08 Mellanox Technologies Ltd Infiniband adaptive congestion control adaptive marking rate
US7921178B2 (en) 2008-12-04 2011-04-05 Voltaire Ltd. Device, system, and method of accessing storage
US8201168B2 (en) 2008-12-25 2012-06-12 Voltaire Ltd. Virtual input-output connections for machine virtualization
US8370675B2 (en) 2009-01-28 2013-02-05 Mellanox Technologies Ltd. Precise clock synchronization
WO2010087826A1 (en) 2009-01-29 2010-08-05 Hewlett-Packard Development Company, L.P. Connecting ports of one or more electronic devices to different subsets of networks based on different operating modes
US8000336B2 (en) 2009-04-21 2011-08-16 Voltaire Ltd. Spanning tree root selection in a hierarchical network
US8255475B2 (en) 2009-04-28 2012-08-28 Mellanox Technologies Ltd. Network interface device with memory management capabilities
US8407478B2 (en) 2009-07-07 2013-03-26 Mellanox Technologies Ltd. Control message signature for device control
US8365057B2 (en) 2009-07-30 2013-01-29 Mellanox Technologies Ltd Processing of data integrity field
US8644140B2 (en) 2009-09-09 2014-02-04 Mellanox Technologies Ltd. Data switch with shared port buffers
US8225182B2 (en) 2009-10-04 2012-07-17 Mellanox Technologies Ltd. Processing of block and transaction signatures
US7934959B2 (en) 2009-10-06 2011-05-03 Mellanox Technologies Ltd. Adapter for pluggable module
WO2011043768A1 (en) 2009-10-07 2011-04-14 Ziebel, As Combination injection string and distributed sensing string
US8576715B2 (en) 2009-10-26 2013-11-05 Mellanox Technologies Ltd. High-performance adaptive routing
CN102575906B (zh) 2009-10-30 2013-09-25 惠普发展公司,有限责任合伙企业 用于刀片外壳的热汇流条
CN102576313A (zh) 2009-11-02 2012-07-11 惠普发展公司,有限责任合伙企业 采用分布式嵌入式切换的多处理计算
US9110860B2 (en) 2009-11-11 2015-08-18 Mellanox Technologies Tlv Ltd. Topology-aware fabric-based offloading of collective functions
US8811417B2 (en) 2009-11-15 2014-08-19 Mellanox Technologies Ltd. Cross-channel network operation offloading for collective operations
US8213315B2 (en) 2009-11-19 2012-07-03 Mellanox Technologies Ltd. Dynamically-connected transport service
US20110173352A1 (en) 2010-01-13 2011-07-14 Mellanox Technologies Ltd Power Reduction on Idle Communication Lanes

Also Published As

Publication number Publication date
US7970949B2 (en) 2011-06-28
AU2003269131A1 (en) 2004-04-30
US9112752B2 (en) 2015-08-18
EP1565826B1 (en) 2019-05-22
US7844742B2 (en) 2010-11-30
US20050138242A1 (en) 2005-06-23
WO2004025477A2 (en) 2004-03-25
EP1565826A2 (en) 2005-08-24
TWI244288B (en) 2005-11-21
US20110040897A1 (en) 2011-02-17
CN1695127A (zh) 2005-11-09
US8954613B2 (en) 2015-02-10
JP2005539305A (ja) 2005-12-22
US20070214308A1 (en) 2007-09-13
TW200409490A (en) 2004-06-01
US20110219145A1 (en) 2011-09-08
GB0221464D0 (en) 2002-10-23
AU2003269131A8 (en) 2004-04-30
WO2004025477A3 (en) 2005-03-17

Similar Documents

Publication Publication Date Title
JP4657720B2 (ja) ネットワーク・インターフェースおよびプロトコル
JP5282115B2 (ja) ユーザーレベルスタック
US7934141B2 (en) Data protocol
US7912988B2 (en) Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US7519650B2 (en) Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
US6888792B2 (en) Technique to provide automatic failover for channel-based communications
US6598144B1 (en) Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping
WO2005099375A2 (en) System and method for placement of rdma payload into application memory of a processor system
WO2005098644A2 (en) Placement of sharing physical buffer lists in rdma communication
EP1543422A1 (en) Remote direct memory access enabled network interface controller switchover and switchback support
CA2242074A1 (en) System and method for remote buffer allocation and management for message passing between network nodes
US6742075B1 (en) Arrangement for instigating work in a channel adapter based on received address information and stored context information
US20070076712A1 (en) Processing packet headers
WO2006046028A1 (en) Buffering packets according to their addresses
GB2435366A (en) Data protocol in which a frame is divided into sections, each containing traffic data, at least one error checking field and a memory address
WO2006033009A1 (en) Merging bursts in a packet with reduced address information

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050822

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060818

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090814

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091116

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101102

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: 20101124

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101222

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4657720

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

EXPY Cancellation because of completion of term