JP6543246B2 - ネットワークインターフェイス - Google Patents

ネットワークインターフェイス Download PDF

Info

Publication number
JP6543246B2
JP6543246B2 JP2016523907A JP2016523907A JP6543246B2 JP 6543246 B2 JP6543246 B2 JP 6543246B2 JP 2016523907 A JP2016523907 A JP 2016523907A JP 2016523907 A JP2016523907 A JP 2016523907A JP 6543246 B2 JP6543246 B2 JP 6543246B2
Authority
JP
Japan
Prior art keywords
data
frame
network interface
buffer
write
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.)
Active
Application number
JP2016523907A
Other languages
English (en)
Other versions
JP2016535483A (ja
Inventor
マシュー チャップマン
マシュー チャップマン
Original Assignee
ゾモジョ・ピーティーワイ・リミテッド
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 ゾモジョ・ピーティーワイ・リミテッド filed Critical ゾモジョ・ピーティーワイ・リミテッド
Publication of JP2016535483A publication Critical patent/JP2016535483A/ja
Application granted granted Critical
Publication of JP6543246B2 publication Critical patent/JP6543246B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/423Loop networks with centralised control, e.g. polling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、コンピュータシステムのネットワークインターフェイス及びデータ通信の管理方法に関する。
ネットワークインターフェイスは、コンピュータシステムとデータネットワークとの間の通信を促進する。典型的なネットワークインターフェイスは、外部ネットワークとの通信リンクを確立する専用のハードウエアを有する。そのハードウエアはホストコンピュータシステムの他の構成部分と一体化されていてもよい。専用のファームウエア及び/又はソフトウエアがネットワークインターフェイスに組み込まれていてもよい。ネットワークインターフェイスの一般の名称には、ネットワークインターフェイスカード(NIC)、ネットワークインターフェイスコントローラ、ネットワークインターフェイスアダプタ、及びネットワークインターフェイスユニットがある。
ネットワークケーブルコンピュータシステムは一般に少なくとも一つの専用ネットワークインターフェイスを有している。ネットワークインターフェイスは、ホストコンピュータシステムの内部システムバス(例えばPCI又はPCIエキスプレスバス)と外部データネットワーク(例えばイーサネット(登録商標)ネットワーク)との橋渡しとなる。ネットワークインターフェイスは他のシステム構成部分と一体化されたり(例えばシステムマザーボードに組み込まれたオンボードネットワークインターフェイス)、モジュラ(例えばPCI−eカード)として供給されてもよい。
従来のネットワークインターフェイスは二つの主要な機能を有する。それは、外部ネットワークからデータを受信することと、ホストコンピュータシステムから外部ネットワークにデータを送信することである。ネットワークインターフェイスは、これらの動作の間、ホストコンピュータシステムのシステムバスとインタラクション(情報をやり取り)し、データ交換を管理する。これらのインタラクションはプロトコル(通常、ネットワークインターフェイスにより定義され、そのネットワークインターフェイスのドライバーにより実装される。)に従っており、そのプロトコルにより、ホストコンピュータシステムで実行されているソフトウエアアプリケーションがネットワークインターフェイスとインタラクションできる。
従来のインターフェイスドライバープロトコルは、一般的に通信遅延を犠牲にしてリソースの最適化を優先していた。従来のドライバープロトコルを用いたネットワークインターフェイスとホストコンピュータシステムとの間のデータのやり取りには、データ交換を調整するための制御メッセージの交換(例えば、データ配置のポインタや読取り確認の交換)が含まれている。これが、システム間のネットワークデータの転送を遅らせるような重大な遅延を導く。
この本発明の第一の態様によれば、ネットワークインターフェイスを介して外部ネットワークからデータを受信する工程と、そのデータを内部システムバスを介してホストコンピュータシステム内のメモリに転送する工程とを具備するデータ受信方法を提供する。ネットワークインターフェイスは、ホストコンピュータシステムの介入なしに、ホストコンピュータシステムのメモリ内のデータの配置を規定する。
この本発明の第二の態様によれば、データ受信方法は、
ネットワークインターフェイスを介して外部ネットワークから複数のデータフレームを受信する工程と、
ネットワークインターフェイスからのデータフレームを、内部システムバスを介して、ホストコンピュータシステムのメモリ内の受信バッファに転送する工程と、
ネットワークインターフェイスが、ホストコンピュータシステムからの介入なしに、受信バッファ内のデータフレームの配置を規定する工程と、を含む。
一実施例において、データ受信方法は、ネットワークインターフェイスからの各受信データフレームを、開ループ書き込みプロトコルを使って、受信バッファに転送する工程を含む。
一実施例において、データ受信方法は、受信データフレームを受信バッファ内の連続したメモリ範囲に連続的に書き込みする工程を含む。
一実施例において、データ受信方法は、複数のデータフレームを保持できる保存容量を有する連続したメモリ内に、受信バッファを配置する工程を含む。
一実施例において、データ受信方法は、配置されたメモリを、個別にアクセスできる複数の連続したスロットであって、同じ保存容量を有するスロットに分割する工程を含む。
一実施例において、データ受信方法は、受信データフレームを、前記受信バッファ内の前記各スロットに連続的に書き込む工程を含む。
一実施例において、データ受信方法は、受信バッファを、前記ホストコンピュータシステムからの読み出し確認無しに、繰り返し上書きする工程を含む。
一実施例において、データ受信方法は、スロットの保存容量を超える大きさの受信データフレームをフレームフラグメントに分割し、フレームフラグメントを受信バッファ内の連続したスロットに割り当てる工程を含む。
一実施例において、データ受信方法は、連続した複数のスロットのフレームデータの関係を定義することにより、フラグメントに分割されたデータフレームを復元するための制御データを生成する工程を含む。
一実施例において、データ受信方法は、制御データが前記フレームフラグメントと同じバストランザクションの対応するスロットの最後に書き込まれるように、制御データを各フレームフラグメントの最後に付加する工程を含む。
一実施例において、制御データが、対応するスロットに割り当てられたフレームフラグメントの長さも定義する。
この本発明の第三の態様によれば、ネットワークインターフェイスは、外部データネットワークからデータを受信するネットワーク面と、内部システムバスを介してホストコンピュータシステム内のメモリにデータを送信するホスト面と、ホストコンピュータシステムからの介入なしに、ホストコンピュータシステムのメモリ内のデータの配置を規定する制御システムを具備する。
この本発明の第四の態様によれば、ネットワークインターフェイスは、
外部ネットワークデータから複数のデータフレームを受信するネットワーク面と、
ホスト内部システムバスを介してホストコンピュータシステムのメモリ内に配置される受信バッファに、データフレームを転送するホスト面と、
前記ホストコンピュータシステムからの介入なしに、受信バッファ内の前記データフレームの割り当てを規定する制御システムと、を具備する。
一実施例において、ネットワークインターフェイスは、開ループプロトコルを使って、受信データフレームのそれぞれを受信バッファに転送する書き込みコントローラを具備する。
一実施例において、書き込みコントローラが受信バッファ内の連続したメモリ範囲にデータフレームを連続的に書き込む。
一実施例において、ネットワークインターフェイスは、個別にアクセスできる複数の連続したスロットであって同じ保存容量を有するスロットを、受信バッファに配置された連続したメモリ内に配置するバッファ管理モジュールを具備する。
一実施例において、ネットワークインターフェイスは、受信データフレームを受信バッファ内の各スロットに連続的に転送する書き込みコントローラを具備する。
一実施例において、書き込みコントローラが、ホストコンピュータシステムからの読み出し確認無しに、受信バッファを繰り返し上書きする。
一実施例において、ネットワークインターフェイスは、スロットの保存容量を超える大きさの受信データフレームをフレームフラグメントに分割し、フレームフラグメントを受信バッファ内の連続したスロットに割り当てるフレーム管理モジュールを具備する。
一実施例において、フレーム管理モジュールが、連続した複数のスロットのフレームデータの関係を定義することにより、フラグメントに分割されたデータフレームを復元するための制御データを生成する。
一実施例において、書き込みコントローラが、制御データがフレームフラグメントと同じバストランザクションの対応するスロットの最後に書き込まれるように、制御データを各フレームフラグメントの最後に付加する。
一実施例において、制御データが、対応するスロットに割り当てられたフレームフラグメントの長さも定義する。
この本発明の第五の態様によれば、バッファアクセスプロトコルは、
メモリバッファ内の複数のスロットから書き込みイタレーションカウンタを読み出す工程であって、書き込みイタレーションカウンタはスロットのそれぞれにいつデータが最後に書き込まれたかを定義する工程と、
データを受信する次のスロットを規定する書き込みアドレスを定義する工程であって、書き込みアドレスは書き込みイタレーションカウンタから定義される工程と、
スロットの書き込み更新を検出するために書き込みアドレスを繰り返しポーリングする工程と、を具備する。
この本発明の第六の態様によれば、バッファアクセスプロトコルは、
循環バッファ内の複数のデータスロットにアクセスし、アクセスしたスロットのそれぞれから書き込みイタレーションカウンタを読み出す工程であって、書き込みイタレーションカウンタはデータが各スロットに最後に書き込まれたときの書き込みイタレーションを規定する工程と、
データにより上書きされる次のスロットを定義する循環バッファの書き込みアドレスを定義する工程であって、書き込みアドレスは、隣接スロットに割り当てられた書き込みイタレーションカウンタへの移行により定義される工程と、
書き込み更新を検出するために書き込みアドレスを繰り返しポーリングする工程であって、書き込み更新は対応するスロットの書き込みイタレーションカウンタの変化から判定される工程と、を含む。
一実施例において、バッファアクセスプロトコルは、
循環バッファ内の所定のスロットから書き込みイタレーションカウンタをコピーし、コピーした書き込みイタレーションカウンタから読み出しイタレーションカウンタを作成する工程と、
読み出しイタレーションカウンタを循環バッファ内の連続したスロットに割り当てられた複数の書き込みイタレーションカウンタと比較して書き込みアドレスを特定する工程と、を含む。
一実施例において、バッファアクセスプロトコルは、
循環バッファ内の所定のスロットで読み出しポインタを初期化し、
所定のスロットに割り当てられた書き込みイタレーションカウンタを読み出しイタレーションカウンタと比較する工程と、
読み出しポインタが書き込みアドレスと一致するまで、読み出しポインタをインクリメントして、循環バッファ内の連続するスロットにアラインする工程と、を含む。
一実施例において、バッファアクセスプロトコルは、書き込み更新を検出した後に、読み出しポインタをインクリメントして連続するスロットにアラインする工程を含む。
一実施例において、バッファアクセスプロトコルは、現在の書き込みイタレーションを規定する循環バッファのループカウンタを保持する工程であって、ループカウンタは各書き込みイタレーションの最後にインクリメントされる工程を含む。
一実施例において、バッファアクセスプロトコルは、個々のスロットへの書き込みトランザクションと共に、循環バッファ内の個々のスロットにループカウンタを書き込む工程であって、ループカウンタは読み出し同期のための書き込みイタレーションカウンタを規定する工程を含む。
一実施例において、バッファアクセスプロトコルは、
書き込み更新が検出されたとき、書き込みアドレスと一致するスロットからデータを抽出する工程と、
データの抽出の後に書き込みイタレーションカウンタを確認し、抽出プロセスを有効化する工程と、
書き込み更新の検出の後に書き込みイタレーションカウンタが変わっていた場合に読み出しエラーを生成する工程と、を含む。
一実施例において、バッファアクセスプロトコルは、
書き込み更新の後に書き込みアドレスに対応する現在のスロットから長さリファレンスを読み出す工程と、
長さリファレンスが、現在のスロットがフレームフラグメントを含んでいることを示した場合、連続するスロットからのデータと現在のスロットとを結合する工程と、を含む。
この本発明の第七の態様によれば、バッファアクセスシステムは、
メモリバッファ内の複数のスロットから書き込みイタレーションカウンタを読み出す参照モジュールであって、書き込みイタレーションカウンタは、スロットのそれぞれにいつデータが最後に書き込まれたかを定義する参照モジュールと、
データを受信する次のスロットを規定する書き込みアドレスを定義する同期モジュールであって、書き込みアドレスは書き込みイタレーションカウンタから定義される同期モジュールと、
スロットの書き込み更新を検出するために書き込みアドレスを繰り返しポーリングする書き込みモニターと、を具備する。
この本発明の第八の態様によれば、バッファアクセスシステムは、
循環バッファ内の複数のデータスロットにアクセスし、アクセスしたスロットのそれぞれから書き込みイタレーションカウンタを読み出す参照モジュールであって、書き込みイタレーションカウンタは、データが各スロットに最後に書き込まれたときの書き込みイタレーションを規定する参照モジュールと、
データにより上書きされる次のスロットを定義する前記循環バッファの書き込みアドレスを定義する同期モジュールであって、書き込みアドレスは、隣接スロットに割り当てられた書き込みイタレーションカウンタへの移行により定義される同期モジュールと、
書き込み更新を検出するために書き込みアドレスを繰り返しポーリングする書き込みモニターであって、書き込み更新は対応するスロットの書き込みイタレーションカウンタの変化から判定される書き込みモニターと、を具備する。
一実施例において、参照モジュールが、循環バッファ内の所定のスロットから書き込みイタレーションカウンタをコピーし、コピーした書き込みイタレーションカウンタから読み出しイタレーションカウンタを作成し、
同期モジュールが、読み出しイタレーションカウンタを循環バッファ内の連続したスロットに割り当てられた複数の書き込みイタレーションカウンタと比較して書き込みアドレスを特定する。
一実施例において、同期モジュールが、循環バッファ内の所定のスロットで読み出しポインタを初期化し、所定のスロットに割り当てられた書き込みイタレーションカウンタを読み出しイタレーションカウンタと比較し、読み出しポインタが書き込みアドレスと一致するまで、読み出しポインタをインクリメントして、循環バッファ内の連続するスロットにアラインする。
一実施例において、書き込みモニターが書き込み更新を検出した後に、同期モジュールが読み出しポインタをインクリメントしてバッファ内の連続するスロットにアラインする。
一実施例において、バッファアクセスシステムは、書き込み更新が検出されたとき、書き込みアドレスと一致するスロットからデータを抽出し、データの抽出の後に書き込みイタレーションカウンタを確認して、抽出プロセスを有効化し、書き込み更新の検出の後に書き込みイタレーションカウンタが変わっていた場合に読み出しエラーを生成する、抽出モジュールを具備する。
一実施例において、バッファアクセスシステムは、書き込み更新に続き書き込みアドレスに対応する現在のスロットから長さリファレンスを読み出し、長さリファレンスが、現在のスロットのデータとそれに続くスロットのデータが一つのフレームのデータからなることを示している場合に、それらのデータを結合する、フレーム復元モジュールを具備する。
この本発明の第九の態様によれば、データ送信方法は、ホストコンピュータシステムのプロセッサ内の外部送信ネットワークデータをバッファへ移す工程と、バッファに移された外部送信ネットワークデータをネットワークインターフェイス内の所定のメモリであって、ホストコンピュータシステムのローカルメモリ階層にマッピングされたメモリに書き込む工程を具備する。
この本発明の第十の態様によれば、データ送信方法は、
ネットワークインターフェイスからの所定のメモリをホストコンピュータシステムのローカルメモリ階層(ヒエラルキー)にマッピングする工程と、
ホストコンピュータシステムのプロセッサの書き込み−結合バッファ内の外部送信ネットワークデータをバッファへ移す工程と、
書き込み−結合バッファからの外部送信ネットワークデータを所定のメモリに書き込む工程と、
ネットワークインターフェイスからの前記データを外部ネットワークに送信する工程とを含む。
一実施例において、データ送信方法は、外部ネットワークへのデータフレームの送信を開始するために、フレームリファレンスをネットワークインターフェイス内の離間した制御レジスタに書き込む工程であって、フレームレファレンスは、所定のメモリ内の対応するフレームの位置を規定する工程を含む。
一実施例において、データ送信方法は、離間した制御レジスタを、ホストコンピュータシステムの基本アドレスレジスタ0にマッピングする工程を含む。
一実施例において、データ送信方法は、所定のネットワークインターフェイスメモリをホストコンピュータシステムの基本アドレスレジスタ2にマッピングし、マッピングされたメモリの書き込み−結合可能にする。
一実施例において、データ送信方法は、外部ネットワークへ伝送するために所定のメモリから個別のデータフレームを抽出する工程であって、データフレームは、離間した制御レジスタへ書き込まれたフレームリファレンスと所定のメモリ内のデータフレームに書き込まれたフレーム長さにより定義される工程を含む。
一実施例において、データ送信方法は、外部送信ネットワークデータを含む所定のメモリに制御データを書き込む工程であって、制御データが対応するデータフレームのサイズを規定するフレーム長を含む工程を含む。
一実施例において、データ送信方法は、外部送信ネットワークデータを含む所定のメモリに書き込まれる制御データにフィードバック記述子を組み込む工程であって、フィードバック記述子はネットワークインターフェイスからのコンファメーションメッセージのホストコンピュータシステムへの送信を促進する工程を含む。
一実施例において、データ送信方法は、所定のメモリからのフレーム識別子をホストコンピュータシステムメモリ内に配置されたフィードバックレジスタに書き込み、対応するデータフレームのネットワークインターフェイスから外部ネットワークへの送信を報告する工程を含む。
一実施例において、データ送信方法は、対応するデータフレームの抽出を含む統合されたメモリアクセストランザクションにおいて、ホストコンピュータシステムフィードバックレジスタを規定するフレーム識別子と参照アドレスとを所定のメモリから抽出する工程を含む。
この本発明の第十一の態様によれば、データ送信システムは、ネットワークインターフェイスからのメモリをホストコンピュータシステム内のローカルメモリ階層にマッピングするメモリ管理モジュールと、外部送信ネットワークデータを直接メモリにマッピングする前に、前記ホストコンピュータシステムのプロセッサ内の前記外部ネットワークデータをバッファに移す書き込みコントローラと、を具備する。
この本発明の第十二の態様によれば、データ送信システムは、
ネットワークインターフェイスからの所定のメモリをホストコンピュータシステムのローカルメモリ階層(ヒエラルキー)にマッピングするメモリ管理モジュールと、
外部送信ネットワークデータをネットワークインターフェイスからの所定のメモリに書き込む前に、書き込み−結合バッファ内の外部送信ネットワークデータをバッファへ移す書き込みコントローラと、
を具備する。
一実施例において、データ送信システムは、外部ネットワークへのデータフレームの送信を開始するために、フレームリファレンスをネットワークインターフェイス内の離間した制御レジスタに書き込む制御モジュールを具備し、フレームレファレンスは、所定のメモリ内の対応するフレームの位置を規定する。
一実施例において、メモリ管理モジュールが、離間した制御レジスタを、ホストコンピュータシステムの基本アドレスレジスタ0にマッピングする。
一実施例において、メモリ管理モジュールが、所定のネットワークインターフェイスメモリをホストコンピュータシステムの基本アドレスレジスタ2にマッピングし、マッピングされたメモリの書き込み−結合を可能にする。
一実施例において、データ送信システムは、外部ネットワークへ伝送するために前記所定のメモリから個別のデータフレームを抽出する送信エンジンを具備し、前記データフレームは、前記離間した制御レジスタへ書き込まれたフレームリファレンスと前記所定のメモリ内のデータフレームに書き込まれたフレーム長さにより定義される。
一実施例において、データ送信システムは、書き込みコントローラが前記ネットワークデータを前記所定のメモリに書き込む前に、制御データを外部送信ネットワークデータと結合する制御モジュールを具備し、前記制御データが対応するデータフレームのサイズを規定する。
一実施例において、制御モジュールが、外部送信ネットワークデータと結合された制御データにフィードバック記述子を組み込み、フィードバック記述子はネットワークインターフェイスからのコンファメーションメッセージのホストコンピュータシステムへの送信を促進する。
一実施例において、データ送信システムは、所定のメモリからのフレーム識別子をホストコンピュータシステムメモリ内に配置されたフィードバックレジスタに書き込み、対応するデータフレームのネットワークインターフェイスから外部ネットワークへの送信を報告する通知エンジンを具備する。
一実施例において、通知エンジンが、対応するデータフレームの抽出を含む統合されたメモリアクセストランザクションにおいて、前記ホストコンピュータシステムフィードバックレジスタを規定するフレーム識別子と参照アドレスとを前記所定のメモリから抽出する。
この本発明の第十三の態様によれば、ネットワークインターフェイスは、
外部データネットワークと接続する複数のデータポートと、前記データポートとホストコンピュータシステムの内部システムバスとの間のデータのやり取りを管理する制御システムを具備し、
前記制御システムは、前記システムバスと個々のデータポートとの間でやり取りしたデータを複製し、複製されたデータを所定のロギングポートに転送するロギングモジュールを有する。
この本発明の第十三の態様によれば、ネットワークインターフェイスは、
外部データネットワークと接続してデータのやり取りを促進するネットワーク面であって、通信のためのデータチャネルを規定する複数のデータポートを有するネットワーク面と、
ホストコンピュータシステムの内部システムバスと接続して前記ネットワークインターフェイスとホストコンピュータシステムとの間のデータのやり取りを促進するホスト面と、
ネットワークインターフェイスのネットワーク面とホスト面との間のデータのやり取りを管理する制御システムであって、個々のデータチャネルからのデータを複製し、複製されたデータを所定のロギングポートに転送するロギングモジュールを有する制御システムと、を具備する。
一実施例において、ネットワークインターフェイスは、ロギングモジュールの構成を促進するロギングインターフェイスであって、ロギングモジュールにより複製されたデータチャネルを規定する複数の制御レジスタを有するロギングインターフェイスを具備する。
一実施例において、ネットワークインターフェイスは、各データチャネルからのデータを受信ストリームと送信ストリームに分離するロギングコントローラを具備し、ロギングインターフェイスが前記ロギングモジュールにより複製されたデータストリームを規定する複数の制御レジスタを有する。
一実施例において、ネットワークインターフェイスは、外部ネットワークへ送信するために、複数のデータポートからのデータを統合されたデータストリームに結合するロギングユニットを具備する。
この本発明の第十五の態様によれば、データロギング方法は、コンピュータシステムネットワークインターフェイス内のネットワークデータを自律的に複製する工程と、複製されたデータを外部ロギングシステムへ送信するためにネットワークインターフェイスの所定のロギングポートに転送する工程とを具備する。
この本発明の第十六の態様によれば、データロギング方法は、
複数のデータポートを有するネットワークインターフェイスを使ってホストコンピュータシステムと外部データネットワークとの間でデータのやり取りをする工程であって、ネットワークインターフェイスはホストコンピュータシステムの内部システムバスに接続されている工程と、
個々のデータポートからのデータを複製し、複製されたデータをネットワークインターフェイスに組み込まれた所定のロギングポートに送信する工程と、を含む。
一実施例において、データロギング方法は、ロギングするための個別のデータポートを選択する工程であって、データポートはネットワークインターフェイス内に配置された所定の制御レジスタを使って選択される工程を含む。
一実施例において、データロギング方法は、
データポートのそれぞれで受信されたデータを受信ストリームと送信ストリームに分離する工程と、
個々のデータストリームをロギングのために選択する工程であって、そのストリームはネットワークインターフェイス内に配置された所定の制御レジスタを使って選択される工程と、を含む。
一実施例において、データロギング方法は、複数のデータポートからのデータを結合して、結合されたデータをホストコンピュータシステムから外部ネットワークに送信する工程を含む。
この本発明の第十七の態様によれば、ネットワークインターフェイスは、複数のデータポートと、データポートとホストコンピュータシステムの内部システムバスとの間のデータのやり取りを管理する制御システムを具備し、制御システムは、ホストコンピュータシステムからの介入なしに、離間したデータポート間でデータを転送する転送モジュールを有する。
この本発明の第十八の態様によれば、ネットワークインターフェイスは、
外部データネットワークと接続してデータのやり取りを促進するネットワーク面であって、複数のデータポートを有するネットワーク面と、
ホストコンピュータシステムの内部システムバスと接続してネットワークインターフェイスとホストコンピュータシステムとの間のデータのやり取りを促進するホスト面と、
ネットワークインターフェイスのネットワーク面とホスト面との間のデータのやり取りを管理する制御システムであって、ネットワークインターフェイスの規定されたデータポートからデータを直接受信し、ホストコンピュータシステムからの介入なしに、受信したデータをネットワークインターフェイスの他のデータポートを使って外部データネットワークへ送信する転送モジュールを有する制御システムと、を具備する。
一実施例において、ネットワークインターフェイスは、転送モジュールの構成を促進する転送インターフェイスであって、二つのポート間でデータ転送をできなくする制御レジスタを有する転送インターフェイスを具備する。
一実施例において、ネットワークインターフェイスは、転送モジュールにより受信されたデータから送り先アドレスを読み出し、ホストコンピュータシステムに関連するアドレスと一致する送り先アドレスのデータの転送を防ぐフィルタリングエンジンを具備する。
この本発明の第十九の態様によれば、データ転送方法は、コンピュータシステムネットワークインターフェイスの所定のデータポートでネットワークデータを受信する工程と、ホストコンピュータシステムからの介入なしに、受信されたデータを前記ネットワークインターフェイスの他のポートを介して外部データネットワークへ転送する工程と、を具備する。
この本発明の第二十の態様によれば、データ転送方法は、
複数のデータポートを有するネットワークインターフェイスを使って外部データネットワークからデータを受信する工程であって、ネットワークインターフェイスはホストコンピュータシステムの内部システムバスと接続されている工程と、
ホストコンピュータシステムからの介入なしに、ネットワークインターフェイスの所定のポートを介して受信したデータをネットワークインターフェイスの他のポートに転送する工程と、を含む。
一実施例において、データ転送方法は、ネットワークインターフェイス内の制御レジスタに書き込むことにより二つのネットワークインターフェイスポート間でのデータ転送をできなくする工程を含む。
一実施例において、データ転送方法は、転送モジュールにより受信されたデータから送り先アドレスを読み出し、ホストコンピュータシステムに関連するアドレスを一致する送り先アドレスのデータの転送を防ぐ工程を含む。
本発明の特徴及び利点は、下記の実施の形態における図面を参照した例示的説明で明らかになる。
相互に連結された複数のコンピュータシステムを含むネットワークの概略図を示す。 複数の機能モジュールを含むネットワークインターフェイスの概略図を示す。 受信バッファのメモリの配置を表したブロック図である。 ネットワークインターフェイスとのデータ交換を調整する複数の機能モジュールを含むホストコンピュータシステムの概略図を示す。 ネットワークインターフェイスの中のメモリの配置を示すブロック図である。 コンピュータシステムからネットワークインターフェイスへのデータ転送の送信プロセスのフローチャートである。 ネットワークインターフェイスのロギング機能のブロック図である。 ネットワークインターフェイスのポート伝送機能のブロック図である。
低遅延ネットワークインターフェイスとそれを補足するデータ管理プロトコルについての実施例をここで説明する。データ管理プロトコルは、制御データをネットワークデータと統合することにより、ネットワークインターフェイスとホストコンピュータシステムとの間の制御メッセージの交換を減少させる。
通信遅延を減少させることにより、通常、ネットワークの集中的なインタラクションの処理時間が改善する。下記で説明する送信プロトコルと受信プロトコルの実施例では、ネットワークインターフェイスとホストコンピュータシステムとの間のやり取りを制限して処理時間を減少させる。全体的な遅延を数分の一秒でも減少させることは、コンピュータアプリケーション(例えばオンラインゲームや金融トレーディング)の高性能化に深く関係する。
従来のネットワークアプリケーションでは、ネットワークデータは通常、個別のデータフレームを使ってコンピュータシステム間で伝送される。データフレームは、送信側により定義され、送信処理で使われる制御データ(例えば送信先のアドレス)を含んでいる。本明細書で説明されるネットワークインターフェイスの実施例は、主にフレームに基づくネットワークの実施(データがフレームで通信される)に関連する。しかしながら、一般のプロトコルも他のネットワーク規格で実行されてもよい。
遅延(レイテンシー)とは、データがシステムを通過するのにかかる時間の長さである。ネットワークインターフェイスの「受信遅延」とは、ホストコンピュータシステムが外部ネットワークからデータフレームを受信してから、そのホストコンピュータシステムで実行されているソフトウエアアプリケーションでそのフレームが利用可能になるまでの時間を示す。ネットワークインターフェイスの「送信遅延」とは、フレームがホストコンピュータシステムで実行されているソフトウエアアプリケーションで利用可能となってから、そのフレームが外部ネットワークに伝送されるまでの時間を示す。受信遅延と送信遅延は主にネットワークインターフェイスに起因する。
データ管理プロトコル及びインターフェイスに関する実施例は、本明細書における個別の機能ユニット(典型的には、モジュール又はエンジン)で実現される。これらの機能ユニットは、それらが具現化する様々なインターフェイス要素(ハードウエア及びソフトウエア)の動作及び相互作用を明示する。それらは、厳格な動作区分又は特定のハードウエア/ソフトウエアの実行を表示するのではない。複数の機能ユニットに起因する動作は、一つのハードウエア(例えばマイクロプロセッサ又はフィールドプログラマブルゲートウエイ)、ソフトウエアアプリケーション(例えばドライバーソフトウエア又は組み込み(エンベデッド)ソフトウエア)、複数のハードウエア、又はハードウエアとソフトウエアの混合により実施されてもよい。
(外部ネットワークからのデータ受信)
従来のネットワークインターフェイスプロトコルは、ホストコンピュータシステムで実行されるドライバーソフトウエアにより調整される。ドライバーはホストメモリを個別のデータフレームに割り当て、ポインタ(受信ディスクリプタ(受信記述子))の配列をホストメモリの中で記録として維持する。ネットワークインターフェイスは、新しいフレームが受信されたときに受信ディスクリプタの配列にアクセスし、そのフレームを対応するポインタで定義されたメモリアドレスにコピーする。コピーが完了してホストシステムに新しいフレームが移管されたことを警告すると、インターフェイスはシステムインタラプト(割り込み)を発生させる。フレームが処理されると、ドライバーソフトウエアはポインタを次の使用から解放する。
ここで説明するネットワークインターフェイス及び受信プロトコルは、ホストコンピュータシステムとのいくつかのインタラクションを省略することにより、ネットワークインターフェイスに起因する受信遅延を減少させる。ここで開示されるネットワークインターフェイスは、ホストコンピュータシステムのメモリに配置された一つの受信バッファ(または少数の受信バッファ)を使って、ホストコンピュータシステムと受信ネットワークデータをやり取りする。各受信バッファは、外部ネットワークから受信されたデータフレームを複数記憶できる。
ネットワークインターフェイスは、ホストコンピュータシステムから介入されることなしに、受信バッファの中のデータの配置を自立的に規定する。典型的なインターフェイスは、循環した先入先出(ファーストインファーストアウト、FIFO)配列プロトコルを使って、受信バッファの中に受信データフレームを連続的に配置する。ホストコンピュータシステムは、ネットワークインターフェイスにより受信された個別のフレームに、書き込みアドレス又は専用バッファを割り当てない。
ネットワークインターフェイスは、ホストコンピュータシステムからのフィードバック(例えば、フレームが抽出されたことを示す読み出し確認)がない開ループ書き込みプロトコルを使って、データフレームを受信バッファに繰り返し書き込む。このことにより、ホストコンピュータシステムで実行されている複数のソフトウエアアプリケーションによる、受信バッファのデータへの組織的でないアクセスが促進される。ネットワークインターフェイスは、書き込みイタレーション(繰り返し)が間、受信バッファに新しいフレームを連続的に書き込む。ネットワークインターフェイスは、通常、受信フレームが受信バッファに書き込まれる際に、その受信フレームに標準化された制御データ(現状の書き込みイタレーションを含む)を付加する。制御データは、ホストコンピュータシステムが受信バッファからフレームを抽出するのに用いられる。
ホストコンピュータシステムは受信プロトコルを実行して、受信バッファからのデータフレームを、ホストコンピュータシステムで実行されているソフトウエアアプリケーションがアクセスできるようにする。受信プロトコルは、ネットワークインターフェイスにより作成された制御データを使って、受信バッファに保存されているデータフレームの抽出と再構成を容易にする。
図1にコンピュータネットワーク10を示す。ネットワーク10は、互いに接続されている複数のコンピュータシステムを含む。それらのコンピュータシステムは共通のデータネットワーク11(例えば、インターネット又はローカルエリアネットワーク)により接続されている。
図に示されたデータネットワーク11は、ホストコンピュータシステム15と複数の遠隔コンピュータシステム12との間の通信を容易にする。ホストコンピュータシステム15には、データネットワーク11によるデータ交換を管理するネットワークインターフェイス20が組み込まれている。
図2はネットワークインターフェイス12の機能を示す図である。インターフェイス20は、外部データネットワーク11からデータを受信するネットワーク面21と、受信したデータを、内部システムバスを介してホストコンピュータシステム15内のメモリに転送するシステム面22とを含む。
図2に示すネットワークインターフェイス20のネットワーク面21は、複数のデータポート19を含む。各データポート19は、ネットワークインターフェイス制御システム25と外部データネットワークとの間のネットワークデータのやり取りのためのデータチャネルを定義する。データポート19は物理的なコネクタ(例えば図2に示す小型フォームファクタモジュール(Small Form‐Factor Modules))で一体化されるか、又は外部ネットワークとの無線データチャネル接続であってもよい。
ネットワークインターフェイスのシステム面22は、一般的に、ネットワークインターフェイスと内部システムバスとの機能的接合部となる(例えば、統合されたアプリケーションの共有されたマイクロコントローラ内の機能的部分)。インターフェイスのシステム面22により定義されたこの機能的接合部は、物理的な接合点(例えば、バスコネクタ又はPCB上の有線インターフェイス)と同じであってもいてもよい。図2に示すネットワークインターフェイス20のシステム面22はホストコンピュータシステムのマザーボード24のPCIバススロット23と同じである。インターフェイス制御システム25はネットワークインターフェイス20のネットワーク面21とシステム面22との間のデータ転送を管理する。
インターフェイス20はネットワーク11からフレーム単位でデータを受信する。典型的なイーサネット(登録商標)フレームの大きさは、63バイトから1518バイトの間である。フレームの最大サイズより大きいデータ群は、データネットワーク11に伝送される前に複数のフレームに分割される。ネットワークインターフェイスはネットワークから受信したフレームをホストコンピュータシステムの共有メモリに転送する。この手順は、従来の受信プロトコルにおいては、ホストコンピュータシステムにより管理されている。
図2に示すネットワークインターフェイス20は、ホストコンピュータシステムの介入なしに、受信したフレームをホストメモリの固定したバッファに転送する。これにより、時間的に集中するシステムインタラクションのいくつか(ホストコンピュータとのポインタ配置確認メッセージ及びシステム読み出し確認メッセージの交換を含む)を省略することで、受信処理のオーバーヘッドを減少させる。
インターネット制御システム25はインターフェイス20のネットワーク面21からホストコンピュータシステム15内のシステムバス(例えばPCIバス又はPCIエクスプレスバス)へのフレーム転送を管理する。システムバスはフレームを、ホストコンピュータシステムプロセッサで実行されているソフトウエアアプリケーションがアクセス可能な受信バッファに送信する。
ネットワークインターフェイスドライバーはホストコンピュータ15内のメモリをネットワークインターフェイス20に割り当てる。割り当てられたメモリは、ネットワークインターフェイス20からのフレーム転送のためのバッファ(受信バッファ)に統合される。割り当てられたメモリアドレスは、一般的に、複数のデータフレームの保存に十分な容量の連続的なメモリの範囲を定義する(受信バッファのサイズは一般的に、ネットワークからのデータフレームの予想されるサイズより少なくとも一桁大きい)。ホストコンピュータシステム15は、データ抽出を最適化するために、システムプロセッサにより効率的にアクセスできるメモリに受信バッファを割り当てる。
ホストコンピュータ15は、複数のデータフレームを受信できる容量を有する受信バッファのいくつかにメモリを割り当ててもよい。しかしながら、ホストコンピュータシステム15により割り当てられる受信バッファの総数は、システムが処理することが予想されるデータフレームの数に比較して少ない。独立した受信バッファは一般的に、多数ポートネットワークインターフェイスの個々のポートに割り当てられる。単数ポートネットワークインターフェイスは、プログラム可能なフィルタを使って、フレームを複数の受信バッファに配分してもよい。個々の受信バッファは、ホストメモリの中で、連続(隣接)していなくてもよい(しかし一般的には、各バッファに割り当てられたメモリは連続(隣接)している)。
ネットワークインターフェイス受信バッファは一般的に、システム起動の間に、専用のハードウエアドライバーにより割り当てられる(例えば、システムスタートアップ又は起動コマンドの後に)。図3に、受信バッファ30内に割り当てられたデータの例示的な概略図を示す。
ネットワークインターフェイス20は、各受信バッファに割り当てられたメモリを複数の連続したスロット31に分割する。統合されたバッファ管理モジュール27は、割り当てられたメモリの分割を調整する。バッファ管理モジュール27は、各受信バッファの中に、個別にアクセスできる複数の連続したスロット31を生成する。バッファ管理モジュール27により生成された複数のスロット31は、同じ保存容量を有し、同じメモリアドレスオフセットを有する、均一のものである。スロット31の保存容量は、典型的には、32バイトと512バイトの間である。
これらスロット31によって、ネットワークインターフェイス20は、連続した受信バッファ30への書き込み操作を、ホストコンピュータシステムからの介入なしに、効率よく調整できる。例示されたネットワークインターフェイス20は、割り当てられたメモリを循環バッファとして使う。つまり、特定のメモリアドレスへの書き込みシーケンスを再開する前に、特定のスロット31のそれぞれに連続的に書き込む(典型的には、第一スロットになる)。インターフェイス制御システム25は、ホストコンピュータシステム(ホストコンピュータシステムで実行されているインターフェイスドライバーを含む)からの介入なしに、受信バッファ30内でのデータフレームの割り当てを自律的に規定する。
例示されたインターフェイス制御システム25には、開ループ書き込みプロトコルを使って受信データフレームを受信バッファ30に書き込む、書き込みコントローラ26が組み込まれている。書き込みコントローラ26は、連続した書き込みループの終了に続いて、受信バッファ30内のスロット31を繰り返し上書きする。受信バッファ30の中のデータは、ホストコンピュータシステムからの読み出し確認(そのデータが処理済みであるとのフィードバック)なしに、上書きされる。ホストシステムからのフィードバックを省略することで、ネットワークインターフェイス20は、中断なしにデータフレームを連続的にメモリに書き込みでき、データ転送の効率を高めることができる。
ネットワークインターフェイス20は、受信バッファ30内の各スロット31に書き込まれたネットワークデータ32に、制御データ33を結合させる。制御データ33は、ホストコンピュータシステムにおいて受信バッファ30からのデータ抽出を管理するのに使われる。例示されている制御システム25には、ネットワークインターフェイス20のための制御データ33を作成するフレーム管理モジュール28が組み込まれている。フレーム管理モジュール28により作成された制御データ33には以下のデータが含まれている。
タイムスタンプ(34) :32ビット
フレーム状態(35) :8ビット
長さ(36) :8ビット
未使用(37) :8ビット
書き込みイタレーションカウンタ(38) :8ビット
フレーム管理モジュール28は、バッファへの書き込み操作の前に、制御データ33とネットワークデータ32とをひとまとめにする。このことにより、書き込みコントローラ26は、ネットワークデータと同じバストランザクションで制御データ33を受信バッファ30に転送できる。ひとまとめになったデータパッケージは、ネットワークインターフェイス20から受信バッファ30へ、分離したスロットで転送される。
例示したネットワークインターフェイスは、受信バッファ30の各スロット31に8バイト(64ビット)の制御データを作成する。制御データ33の1バイト(8ビット)は拡張のために割り当てられている(「未使用」データフィールド37)。
制御データ33は、対応するネットワークデータを含む統合されたメモリトランザクションにおいて、受信バッファ30の個々のスロット31に書き込まれる。このことは、スロット31の有効容量(ネットワークデータが利用できるメモリ)を減少させる。例えば、128バイトのスロットは、120バイトのネットワークデータ32と8バイトの制御データ33を保存できる。スロット31内の、制御データ33のネットワークデータ32に対する比率は、スロット割り当てがより小さな場合に増加する。
制御データ33をネットワークデータ32と同じスロット内に割り当てることで、制御データが別のレジスタに書き込まれている場合に一般的に発生する補助的な読み込み/書き込み操作を避けることができる。書き込みコントローラ26は、典型的には、ネットワークデータと同じバストランザクションで、制御データ33を受信スロットに書き込む。このことにより、フレームをホストコンピュータシステムに転送するのに必要な書き込み操作が減少する。例示した書き込みコントローラ26は、制御データ33がバッファ内の該当するスロットの最後に書き込まれるように、ネットワークデータ32に制御データ33を付加する。このことにより、ホストコンピュータシステムは制御データ33をチェックすることで、バッファ書き込み操作を確認できる。
フレーム管理モジュール28は、制御データ33の4バイト(32ビット)をシステムタイムスタンプ34に割り当てている。タイムスタンプフィールド34は、ネットワークインターフェイス20におけるフレーム受信時間を記録する(典型的には、ネットワーク分析と診断に用いられる)。制御システム25は、内部カウンタからタイムスタンプフィールド34を引き出す。
例示したフレーム管理モジュール28は、フレームの第一バイトが外部ネットワークから受信されたときに、内部カウンタの値をタイムスタンプフィールド34にコピーする。フレームがバッファ内で複数のスロット31に分割された場合(つまり、データフレームが受信バッファ30のスロットサイズより大きい場合)、同じタイムスタンプ34が各フレームフラグメント(断片)に用いられる。
フレーム状態フィールド35は、受信フレームの一般的な状態の情報が含まれている。フレーム管理モジュール28は、検知されたフレーム受信エラーをフレーム状態フィールド35に記録する。例示されたフ制御システム25により作成されるフレーム状態コードは、以下のとおりである。
0−正常受信
1−フレーム内遠隔送信者送信中止
2−フレームの完全性チェック失敗
3−フレーム受信中に内部メモリオーバーフロー
バッファスロット31の保存容量を超える受信フレームは、フレームフラグメント(断片)に分割され、複数のスロット31に分配される。フレーム管理モジュール28は、バッファの中で大きなデータフレームの分割と分配を調整する。フラグメントは、典型的には、受信バッファ30の中の連続したスロット31に分配される。
フレーム管理モジュール28は、制御データの長さフィールド36を用いて、バッファ内の個々のフレームの分配を記録する。長さフィールド36は、バッファ内の連続する複数のスロット31間の関係を規定する。長さフィールド36がゼロ以外の値の場合は、そのスロット内で、フレームが終わっていることを示す(そのスロットに、スロット分割と一致するフレームの端が含まれていることを示す)。長さフィールド36の値がゼロの場合は、隣接するスロット31に同じデータフレームのフラグメントが含まれていることを示す。ホストコンピュータシステムは長さフィールド36を、断片化されたデータフレームを復元するのに用いる。
一つのスロット31内に含まれているフレームの長さフィールド36はそのフレームのサイズ(典型的には、バイト数で)を示す。フレームの最初及び中間のフラグメントは長さフィールド36の値にゼロを示す。このことは、同じフレームからのさらなるフラグメントが次の(連続した)スロットに保存されていることを示す。フレームの最後のフラグメントには、フラグメントのサイズ(スロット内でフラグメントが占める記憶スペース)に等しい長さが示されている。ゼロでない値の長さが入力されていることは、フレームのすべてのフラグメントがバッファから抽出され、次のスロットには異なるフレームが含まれていることを、ホストコンピュータシステムに示す。
バッファ管理モジュール27は、ネットワークインターフェイス20における特定のレジスタの中の受信バッファ30のジェネレーションカウンタを保持する。ジェネレーションカウンタは、循環する受信バッファ30の現在の書き込みイタレーションを記録する。バッファ管理モジュール27は、書き込みループが完了するたびに(つまり、書き込みコントローラ26が循環バッファ内の最後のスロットにデータを書き込むたびに)、ジェネレーションカウンタを単調にインクリメントする。
フレーム管理モジュール28は、書き込み操作の間に、バッファの現在のジェネレーションカウンタの値を制御データの書き込みイタレーションカウンタフィールド38にコピーする。ホストコンピュータシステムで実行されているソフトウエアは書き込みイタレーションカウンタ38を用いて受信バッファ30からの読み出し操作の同期をとる。
(バッファアクセスプロトコル)
ホストコンピュータシステムは、ネットワークインターフェイスからの書き込み更新のために受信バッファ30をモニターし、新しいフレームが利用可能になったら、そのフレームを抽出する。このプロセスは、遅延しやすいアプリケーションにおいてネットワークインターフェイス書き込み操作に依存しない。ネットワークインターフェイスからの介入なしに受信バッファからネットワークデータを抽出することは、いくつかの時間を要するシステムインタラクション(従来のネットワークインターフェイスプロトコルで内部データの交換の調整に使われていた)を省略することになる。このことにより、ネットワークインターフェイスはより少ないオーバーヘッドで、データフレームをホストコンピュータシステムに転送できる。
ホストコンピュータシステムには受信バッファ30からのデータ抽出を調整するバッファアクセスシステムが組み込まれている。図4はバッファアクセスシステム40を機能的に示す図である。例示されたバッファアクセスシステム40は、複数の機能モジュールを含んでいる。それぞれのモジュールは、特定のドライバーソフトウエアにより、インプリメントされてもよいし、ホストコンピュータシステム15で実行される独立のソフトウエアアプリケーションであってもよい。
図4に例示されているバッファアクセスシステム40には、データ抽出プロセスが始まったときに受信バッファ30の状態を評価する、参照モジュール41が組み込まれている。参照モジュール41は、バッファの状態を判定するのに、書き込みイタレーションカウンタフィールド38を用いる。各スロット31の制御データ33の中に配置された書き込みイタレーションカウンタ38は、データが最後にスロットに書き込まれたときに書き込みイタレーションを定義する。参照モジュール41は、循環する受信バッファ30の中の複数のデータスロット31にアクセスし、制御データ33に含まれる書き込みイタレーションカウンタ38を評価する。バッファアクセスシステム40は、連続するスロット31からの書き込みイタレーションカウンタ38を使って、現在の書き込みイタレーションと以前の書き込みイタレーションとの境界を特定する。
同期モジュール42は、参照モジュール41が定めた書き込みイタレーションカウンタ38を使って、循環バッファの現在の書き込みアドレスを定義する。書き込みアドレスは、ネットワークインターフェイス20によりデータが上書きされる次のスロット31を受信バッファ30の中で規定する。同期モジュール42により実行される、バッファ書き込みアドレスを特定するプロセスは、ネットワークインターフェイスにより使用される書き込みイタレーションカウンタ38のフォーマットに依存する。バイナリ(2進数)及び整数での書き込みイタレーションカウンタ38のフォーマットでアドレス特定するプロセスは、本明細書で別途説明される。
同期モジュール42は書き込みアドレスを書き込みモニター43に伝達する。書き込みモニター43は、書き込みアドレスを繰り返しポーリング(順次問い合わせる)して、ネットワークインターフェイスからの書き込み更新を確認する。書き込みアドレスで定義されたバッファスロット31内の制御データ33が変わったときに、書き込み更新が検出される。ネットワークインターフェイスは、書き込み更新の際に、ネットワークデータ32と制御データ33を共に上書きする。書き込みモニター43は、モニターしているスロットの書き込みイタレーションカウンタ38が変わったときに、スロット31が書き込み更新を受けたかどうかを判定する。
抽出モジュール44は、書き込みモニター43が、書き込み更新を検出したとき、書き込みアドレスに該当するスロット31からデータを抽出する。抽出モジュール44は、データをスロット31から抽出した後に、いくつかのデータ有効確認を実行する。有効確認は、受信確認(制御データ33のフレーム状態フィールド35から導かれる)、データ完全性評価(書き込み更新の間、各スロット31の最後に付加される制御データ33の完全性から導かれる)、及び抽出評価を含む。
抽出モジュール44は、データ抽出に続いて、バッファスロット31の書き込みイタレーションカウンタ38を確認して、抽出プロセスを有効にする。書き込みモニター43により特定された書き込み更新の検出の後に、書き込みイタレーションカウンタ38が変わった場合、抽出モジュール44は、読み出しエラーを生成する。読み出しエラーは、データが読み出される前に、スロット31がネットワークインターフェイスにより上書きされているかもしれないことを示す(このことにより、抽出されたデータは信頼できないものとなる)。受信したソフトウエアアプリケーションは、一般的に、データを失ったフレームについて付加リクエストを発行することで、読み出しエラーに対処する。
フラグメントデータフレームは、受信バッファ30から抽出された後に、フレーム復元モジュール45により、コンパイルされる。フレーム復元モジュール45は、書き込み更新の後に抽出された制御データ33から長さリファレンスフィールド36を読み出し、該当するネットワークデータの状態を判定する。データ状態は、全データフレームからフレームフラグメントを識別し、同じデータフレームの複数のフラグメント間の関係を特定する。フレーム復元モジュール45は、長さリファレンスフィールド36が、各スロット31が一つのフレームからのデータを含むことを示す場合に、連続する複数のスロット31かあのネットワークデータ32を結合させる。ネットワークインターフェイスは、フレーム復元モジュールが連続したフラグメントをバッファから直接コンパイルできるように、受信バッファ30に書き込まれるフレームフラグメントの順序を規定する。
ネットワークインターフェイスは、連続する書込みイタレーションを記録するために、バイナリ書き込みイタレーションカウンタと整数書き込みイタレーションカウンタを用いることができる。バイナリ書き込みイタレーションカウンタは最少のメモリ消費で連続する複数の書き込みイタレーションを区別する。整数書き込みイタレーションカウンタ(例えばフレーム管理モジュール28により割り当てられた8ビットの書き込みイタレーションカウンタ)は、書き込みイタレーションカウンタの絶対値を維持できる。書き込みイタレーションカウンタ38に用いられるデータタイプは、同期モジュールにより実行される評価プロセスに影響する。
(書き込みアドレス:バイナリ書き込みイタレーションカウンタ)
バイナリ書き込みイタレーションカウンタの値は、連続するバッファ書き込みループにより書き換えられる。このことにより、同期モジュール42は連続する複数の書き込みイタレーションを識別できる。しかし、抽出モジュールにより実施されるデータの有効性確認を損なうことにもなり得る。
同期モジュール42は、バッファ内の連続するスロット31のバイナリ書き込みイタレーションカウンタを繰り返し比較することにより、バッファへの書き込みアドレスを判定できる。バッファの隣接するスロットに異なる書き込みイタレーションカウンタを特定することにより、バッファ書き込みアドレスの位置が定まる。
(書き込みアドレス:整数書き込みイタレーションカウンタ)
整数書き込みイタレーションカウンタは、書き込みイタレーションの蓄積を記録する。これにより、より多くのメモリを消費することになるが、抽出モジュールにより実施されるデータ認証確認の精度が改善される。図2に例示されるネットワークインターフェイス20は、書込み操作の間に個々のスロット31の書き込みイタレーションカウンタフィールドにコピーされるジェネレーションカウンタを保持する。
バッファアクセスシステム40は、補助的な読み出しイタレーションカウンタを作成することにより、整数書き込みイタレーションカウンタを適応させる。読み出しイタレーションカウンタは、受信バッファ30の現在の書き込みアドレスを特定するために、連続したバッファスロット31の制御データ33と比較される。
図4に例示されている参照モジュール41は、同期モジュール42のための読み出しイタレーションカウンタを作成する。読み出しイタレーションカウンタはバッファ管理モジュール27で保持されているバッファジェネレーションカウンタを複製する。参照モジュール41は、受信バッファ30内の特定のスロット31に書き込まれた制御データ33から、読み出しイタレーションカウンタを引き出す。このことにより、ネットワークインターフェイスから直接ジェネレーションカウンタを検索することを避けられる。
例示されている参照モジュール41は、受信バッファ30の最後のスロットからの書き込みイタレーションカウンタにより、読み出しイタレーションカウンタを初期化する。読み出しイタレーションカウンタは典型的には、バッファの最後のスロットから引き出される。ジェネレーションカウンタが各書き込みサイクルの完了時にのみインクリメントするので(最後のバッファスロットへの書き込み操作の後)、最後のスロットのそれぞれの書き込みイタレーションカウンタは、各書き込みサイクルの間、変わらずに残る。
参照モジュール41は、読み出しイタレーションカウンタを同期モジュール42に転送する。同期モジュール42は、読み出しイタレーションカウンタを、循環バッファ内の連続するスロット31に割り当てられた複数の書き込みイタレーションカウンタと比較する。バッファの書き込みアドレスは、読み出しイタレーションカウンタ(バッファの最後から引き出されたもの)と一致する書き込みイタレーションカウンタを有する最初のスロット31(バッファの最初に一番近いスロット31)に一致する。
比較プロセスは、受信バッファ30内の連続する複数のスロット31を循環する読み出しポインタを使って調整される。バッファアクセスシステム40は、典型的に、受信バッファ30内の最初のスロットから読み出しポインタを始める。読み出しポインタで特定されたスロットの書き込みイタレーションカウンタが、読み出しイタレーションカウンタと一致するまで、同期モジュール42は読み出しポインタを規定されたオフセット(規定されたバッファスロットサイズに比例する)でインクリメントする。インクリメントのオフセットは、バッファ管理モジュール27で割り当てられたバッファスロット31のサイズに比例する。同期モジュール42は、読み出しポインタをインクリメントして、検出された書き込み更新に続く連続するスロット31にアライン(位置合わせ)する。
(遅延集中データの受信警告プロトコル)
図2に例示されているネットワークインターフェイス20は、遅延が集中してネットワークデータの受信に対して、警告プロトコルを実行できる。受信警告プロトコルは、ホストコンピュータシステムのモニタリングオーバーヘッドを縮小する。
警告プロトコルは、ホストコンピュータシステム上で実行されているソフトウエアアプリケーションとインターフェイスするリザベーションモジュール(図示せず)により開始される。ソフトウエアアプリケーションは、遅延集中するネットワーク上のやり取りを特定し、それをリザベーションモジュールに伝達する。リザベーションモジュールは、これらのデータやり取りに帰するネットワークデータについて、一時的に書き込みモニター43の記録機能を停止し、ネットワークインターフェイス警告プロトコルを開始する。これで、ホストコンピュータシステムプロセッサの負荷を緩和できる。
リザベーションモジュールは、遅延が重大なことになるソフトウエアを全体的に優先することができる、個々のソフトウエアアプリケーションに対する設定変更可能な遅延指定を保持していてもよい。ソフトウエアインターフェイス(典型的には、ネットワークインターフェイスドライバーにより供給される)は、個々のソフトウエアアプリケーションの遅延指定の設定を促進する。
リザベーションモジュールは、書き込みモニター43を停止すると同時に、ネットワークインターフェイス制御システム25に組み込まれている報告エンジンを初期化する。報告エンジンは、データが受信バッファに書き込まれているときに、システムの割込みを発生させる。この割込みは、リザベーションモジュールに、新しいデータが受信バッファの中で利用可能になっていることを通知する。
受信警告も可能なネットワークインターフェイスには、リザベーションモジュールが警告プロトコルを初期化するのに使う、特定のしきい値レジスタが組み込まれている。リザベーションモジュールは、しきい値レジスタにスロットアドレスを書き込んで報告エンジンを起動する。そのスロットアドレスは、報告エンジンがモニターするスロットを受信バッファ内で特定する。スロットアドレスにより特定されたスロットが書き込み更新を受信したときに、報告エンジンは書き込みコントローラ26とインターフェイスし、通知中断を発生させる。
しきい値レジスタに書き込まれたスロットアドレスは、典型的には、受信バッファ内でのスロットオフセットを示す整数表示である。報告エンジンは、しきい値レジスタの中のスロットアドレスと、書き込みコントローラ26で保持されている書き込みアドレスとを比較し、書き込みアドレスがスロットアドレスと等しいか、スロットアドレスより大きい場合に、システム割込みを発生させる。
しきい値レジスタにスロット表示の絶対値を書き込むことは、同時に発生する書き込みコントローラ26による書き込み操作を補う。同時に発生する書き込み操作は、リザベーションモジュールが、現状の書き込みアドレスの書き込み更新と同時に(又は部分的には後で)、しきい値レジスタへの書き込みを行う場合に発生する。報告エンジンは、書き込みコントローラのシーケンス番号がしきい値レジスタに書き込まれたスロットアドレスを超えることを確認することで、同時の書き込み更新を検出する。このことは、報告エンジンがバイナリ起動である場合には、不可能である。
(外部ネットワークへのデータ送信)
ほとんどのネットワークインターフェイスは、バスマスタリング(bus mastering)プロトコル又は、プログラムされた入力/出力(programed I/O)プロトコルを用いて、ホストコンピュータシステムの内部データ転送の調整を行う。これらのプロトコルは共に、標準化された内部システムバスを用いて実行される。
早期のネットワークインターフェイスは、ホストコンピュータシステムとの通信するために、プログラムされた入力/出力プロトコル(プログラムされたI/O)を実行した。プログラムされたI/Oプロトコルは、内部システムバス(例えばパラレルATAバス)を通じて、低い帯域幅のホスト制御の通信を促進する。外部送信するネットワークデータは、ホストコンピュータシステム内のI/Oアドレスに書き込むことにより、小さなパッケージ(通常、16ビット又は32ビット)でネットワークインターフェイスにプッシュされる。ホストコンピュータシステムのプロセッサはI/O書き込みを高周波で行う。このことは、過度のシステムバス帯域幅の消費や不均衡なプロセッサ負荷等の、リソース消費やホストコンピュータシステムにおけるオーバーヘッド発生を引き起こし得る。これらの制約は、バスマスタリングプロトコルにより、大部分対処される。
ほとんどの従来のネットワークインターフェイスは、外部送信されるネットワークデータ(ホストコンピュータシステムから外部ネットワークへ送信されるデータ)の調整にバスマスタリングプロトコルを使用する。バスマスタリングにより、ネットワークインターフェイスは、バストランザクションを管理することができ、ホストコンピュータシステム内の外部送信ネットワークデータを、ホストコンピュータシステムプロセッサにとって最少のオーバーヘッドで移動できる。
ホストコンピュータシステムで実行されているソフトウエアは、ネットワークインターフェイスに新しい外部送信ネットワークデータを通知することにより、転送プロセスを開始する。通知は、内部システムバスを用いて、プロセッサからネットワークインターフェイスに送られる。それからネットワークインターフェイスは、自律的に、ホストメモリから対応するデータを検索する。それには、ホストメモリへの読み出しリクエストと外部送信ネットワークデータの受信が含まれる(両方のやり取りには、システムバスが使われる)。
ここで説明される伝送プロトコルの実施例では、ホストコンピュータシステムのプロセッサが外部送信ネットワークデータを、ネットワークインターフェイスのメモリ内の伝送バッファに直接書き込むことができる。これは、伝送バッファをホストコンピュータシステムのメモリ階層(ヒエラルキー)にマッピングすることにより、促進される。伝送バッファへの書き込みは、プログラムされたI/Oプロトコルに関連したいくつかの非効率を避けるために、バーストで放出される。これは、ネットワークインターフェイス内のアドレス指定可能なメモリ(伝送バッファ)に外部送信ネットワークデータを直接放出する前に、外部送信ネットワークデータを書き込み−結合バッファ(典型的にはホストコンピュータシステムのプロセッサ内にある)に集めることにより促進される。
開示される伝送プロトコルは、バスマスタリングにおいて内部データ転送の調整に使われる、ホストプロセッサとネットワークインターフェイスとの間のいくつかのデータ管理のためのやり取りを省力する。省略されるやり取りは以下のとおりである。
・ネットワークインターフェイスからホストメモリへの、新しいデータを検索するための読み出しリクエスト。
・ホストコンピュータシステムメモリからネットワークインターフェイスへの新しいデータの転送。
省略されるやり取りは、データがバスマスタリングプロトコルを使ってネットワークインターフェイスへ転送される前に実施される必要があるので、この省略により、開示されるネットワークインターフェイスの遅延動作が改善される。
図4にデータ送信システム50の機能的表示を示す。例示されたデータ伝送システム50は、所定のネットワークインターフェイスメモリ内の伝送バッファ29を管理するメモリ管理モジュール51を含む。伝送バッファは典型的には、4キロバイトから2メガバイトの間の保存容量を有している(より大きな保存容量を使用してもよい)。図2に記載されているネットワークインターフェイス20は、16キロバイト、32キロバイト、又は64キロバイトの伝送バッファ29を有していてもよい。
メモリ管理モジュール51は、所定のネットワークインターフェイスメモリを、ホストコンピュータシステム15内のローカルメモリ階層61にマッピングする。このことにより、マッピングされたメモリ(伝送バッファ29に対応する)がホストコンピュータシステムのプロセッサから、直接アドレス指定可能になる。メモリ管理モジュール51は、マッピングされたメモリの書き込みー結合も可能にする(これは、PCIバスアプリケーションに先読み可能属性を設定することにより達成される)。図5に、マッピングされたメモリ61内に割り当てられたデータを図示する。
伝送システム50には、ネットワークインターフェイス20へのデータ書き込みを調整する書き込みコントローラ52が組み込まれている。書き込みコントローラ52は、内部システムバスを使って、マッピングされたメモリ55(伝送バッファ29)に外部送信ネットワークデータ74を書き込む。外部送信ネットワークデータ74は、ネットワークインターフェイス20の介入なしに、伝送バッファ29に書き込まれる。書き込みコントローラは、ネットワークインターフェイスに書き込む前に、ホストコンピュータシステムプロセッサに割り当てられている書き込み−結合バッファ内の外部送信ネットワークデータ74を集める。このことより、外部送信ネットワークデータ74は伝送バッファ29にバーストとして(小さなビットパッケージではなく)書き込まれる。
書き込みコントローラ52は、典型的には、外部ネットワークへ送信するために作成されたデータフレームで、外部送信ネットワークデータ74を伝送バッファ29に書き込む。このことにより、ネットワークインターフェイス20は、最少の追加処理で、外部送信ネットワークデータ74を伝送バッファ29から抽出してデータ送信できる。データフレームは制御データ73と結合されてもよい。そのことにより、伝送バッファ29からの個々のフレーム抽出が容易になる。
図4に例示されている伝送システム50には、制御データ73を伝送バッファ29に書き込まれたデータフレームと結合する制御モジュール53が組み込まれている。制御モジュール53は、各フレームが書き込みコントローラ52によりネットワークインターフェイス20に転送される前に、各データフレームの前に制御データ73を付加する。書き込みコントローラ52は、対応するデータフレームと同じトランザクションで、制御データ73を伝送バッファ29に書き込む。制御データ73は、通常、対応するデータフレームの前に付けられ、伝送バッファの中に外部送信ネットワークデータ74と共に保存される。図4に例示された制御モジュール53により生成された制御データ73は、以下のデータを含む。
・フレーム識別子(76) :16ビット
・フィードバックオフセット(77) :16ビット
・フレーム長(78) :16ビット
・未使用(79) :16ビット
制御モジュール53は、各データフレームに対して8バイト(64ビット)の制御データを生成する。制御データの2バイト(16ビット)は、拡張のために割り当てられている(「未使用」データフィールド(79))。
制御モジュール53により生成される制御データ73は、フィードバック記述子を含み、それによりネットワークインターフェイスがフレーム伝送を報告できる。また制御データ73は、伝送バッファ29内の対応するフレームのサイズを定義する長さフィールドを含む。各フレームの前に付加されている制御データ73は標準化されている。
制御モジュール53は、フレームリファレンスをネットワークインターフェイス20内の離間した制御レジスタ62に書き込むことにより、外部ネットワークへのデータ伝送を開始する。フレームリファレンスは、所定のバッファメモリ内の対応するデータフレームの位置を規定する。制御モジュール53は、典型的には、フレームリファレンスを所定のメモリバッファ29におけるオフセットとして特定する。
ネットワークインターフェイスに組み込まれている伝送エンジン(図示せず)は、外部ネットワークへ伝送するために、バッファ29から個々のデータフレームを抽出する。フレームリファレンスとフレーム長(78)フィールドは、所定のメモリバッファ内における対応するデータフレームの境界を規定する。伝送エンジンは、これらのフィールドを、伝送バッファ29からフレームを抽出するために用いる。
伝送エンジンは、フレームリファレンスにより規定されたバッファメモリアドレスでフレームポインタを初期化することにより、抽出プロセスを開始する。フレームポインタは典型的には、データフレームの前に付加された制御データ73に一致する。伝送エンジンは、フレームの制御データ73に含まれるフレーム長78を読み出し、そのフレームの最後のアドレスを定義する。
ネットワークインターフェイス20は、伝送バッファ29から抽出されたフレームを、外部ネットワークへ送信する。もしソースソフトウエアアプリケーションから要求される場合は、送信後に、コンファメーションメッセージがホストコンピュータシステムに送られてもよい。通知エンジン(図示せず)は、対応するフレームの制御データ73に含まれているフィードバック記述子を使って、コンファメーションメッセージ送信を管理する。通知エンジンは、対応するデータフレームと同じトランザクションで、所定のネットワークインターフェイスメモリからフィードバック記述子を抽出する。フィードバック記述子は、フレームを生成したソフトウエアアプリケーションにより規定される。
通知エンジンは、所定のネットワークインターフェイスメモリから抽出されたフレーム識別子76を、ホストコンピュータシステムメモリ内に割り当てらえたフィードバックレジスタに書き込み、フレーム伝送を報告する。フィードバックレジスタは、制御データ73に組み込まれたフィードバックオフセットフィールド77により規定される。これは、典型的には、ソフトウエアアプリケーションが書き込み確認のためにモニターするフィードバックアレイ54(ホストコンピュータシステムメモリ内に保持されている)内のオフセットを表示する。ソフトウエアアプリケーションは、フィードバックオフセットフィールド77内で規定されているビットを設定することにより、コンファメーションメッセージを拒否できる。伝送プロトコルの実施例を図6にフローチャートで示す。
書き込みコントローラ52とメモリ管理モジュール51を使って伝送プロセスを実行する特定プロトコルは、ホストプロセッサとネットワークインターフェイスとの間のデータ送受信をするシステムバスに依存する。PCIバス標準を用いて実行する例をここで簡単に説明する。伝送プロセスは、他のシステムバス標準を使っても実行できる。
メモリ管理モジュール51は、伝送バッファの所定のインターフェイスメモリを、ホストコンピュータシステムメモリ階層61内の所定の基本アドレスレジスタ(BAR)(例えばPCIバスのBAR2(72))にマッピングする。このことにより、書き込みコントローラ52が、マッピングされたメモリ55に対して書き込み−結合を使うことができる。メモリ管理モジュール51も、マッピングされたメモリ55に対して書き込み−結合することができる。フレーム伝送を開始するのに用いられる制御レジスタ62は、メモリ管理モジュール51により、I/Oスペースに離間して(典型的には、基本アドレスレジスタ0(60))マッピングされる。
(ネットワークインターフェイス内でのネットワークデータの伝送)
図2に例示されているネットワークインターフェイス20は、従来は専用のネットワークスイッチング装置により実行されていた、いくつかのデータ伝送機能を実行することができる。ネットワークインターフェイス20は、ネットワークデータを内部のポート間で転送することにより、追加の伝送機能が対応可能になっている。このことにより、従来はネットワークデータを中間にあるスイッチに転送していたために発生していた遅延を避けることができる。
ネットワークインターフェイスのネットワーク面21は複数のデータポートを含む。これらのデータポートは、図2に例示されているように、互換性のある物理的媒体と物理的に接続できるハードウエアコネクタ(例えば小型フォームファクタモジュール(Small Form‐Factor Modules))で一体化されていてもよい。各データポートは、ネットワークインターフェイス制御システム25と外部データネットワークとの間のネットワークデータのやり取りのためのデータチャネルを規定する。ネットワークインターフェイスには、外部ネットワークとの無線データチャネルを規定する無線データポート(図示せず)も組み込まれていてもよい。
ネットワークインターフェイス制御システム25は、個別のデータポートでやり取りしたネットワークデータをロギングポートにコピーすることにより、データログを取る(data logging)ことを容易にする。コピーされたネットワークデータは、外部ロギングシステムに送信するために、統合されたデータストリームにまとめられる。ネットワークインターフェイス制御システムは、ホストコンピュータシステムからの介入なしに、ロギングプロセスを促進する。
ネットワークインターフェイス制御システム25のデータロギングが可能な実施例には、ネットワークインターフェイス20内でのデータロギングを調整するロギングモジュール85が組み込まれている。ロギングモジュール85は、個別のデータチャネル(ネットワークインターフェイスポートにより規定される)からのネットワークデータを複製し、その複製データを所定のロギングポートへ転送する。ロギングユニットは統合されたロギングデータストリームを生成し、それはロギングポートを介して外部データネットワークに送信される。
ロギングモジュール85は、動的なロギングリコンフィグレーションを促進するロギングインターフェイスを含む。ロギングインターフェイスは、ロギング(複製して遠隔のロギングサーバに送信する)のためのデータチャネルを指定する複数の制御レジスタを有する。制御レジスタは、システムアドミニストレータにより、個別のポートについてロギングできる/できないを、動的に設定されてもよい。
ロギングモジュールはデータチャネルの中の離れたデータストリームに対して独立にロギングを促進してもよい。独立したデータストリームのロギングは、ロギングコントローラにより調整される。ロギングコントローラは、個別のデータストリームを一つのデータチャネルから分離し、指定されたストリームをロギングユニットに独立に転送する。ロギングインターフェイスは、所定の制御レジスタをデータチャネル内の個別のストリームに割り当てることにより、データストリームロギングを促進する。
図7に、いくつかのデータチャネル内のデータストリームを送受信するための、独立したロギングについてのブロック図を示す。各データポートは、受信データストリーム87と送信データストリーム88をそれぞれ伝搬する受信エンジン81と送信エンジン82とで表示される。各データストリームは、複製され、ロギングモジュール85にコピーされる。
所定のロギングユニット(図示せず)は、ネットワークインターフェイスから(ロギングポート送信エンジン83を介して)送信するために、個々のデータフレームを結合させて、統合ロギングストリーム90を作成する。統合ロギングストリームに組み込まれる個々のデータフレームは、動的に設定変更可能な制御レジスタを使って転送モジュール85により選択される。
図7に示すロギングポートは、ロギングモジュール85により生成されたロギングストリーム90に加えて、通常のネットワーク通信も管理する。マルチプレクサ84は、ロギングポート送信ストリーム89とロギングストリーム90からの外部送信ネットワークデータを、ロギングポート送信エンジン83に転送する。マルチプレクサ84は、ロギングユニットに組み込まれていてもよい。
ロギングポート送信ストリーム89とロギングポート受信ストリーム86は、複製され、ロギングモジュール85に転送されて、他のデータポートからのデータストリームと共にロギングストリーム90に含まれる。
ネットワークインターフェイス制御システム25は、ネットワークインターフェイス20の複数のポート間のデータ伝送を促進してもよい。データ伝送は、ネットワークインターフェイスの所定のポート(転送ポート)から受信したデータを他のポート(送り先ポート)へ転送することにより、促進される。例示したネットワークインターフェイス20は、ホストコンピュータシステムの介入なしに、転送ポートで受信したデータを自律的に伝送する。このことにより、ネットワークインターフェイス20の複数のポート間のデータ転送が可能になる。
伝送可能なネットワークインターフェイス制御システムは、転送ポートから直接データを受信し、受信したデータを他のポート(送り先ポート)を介して外部データネットワークに転送する転送モジュールを含む。転送モジュールは、受信したネットワークデータを、ホストコンピュータシステムの介入なしに、自律的に転送できる。このことにより、ホストコンピュータシステムのオペレーティングシステムへのデータ転送により遅延を避けることができる。
フィルタリングモジュールは転送ポートで受信したネットワークデータをフィルタでき、ホストコンピュータシステムへ宛てられたデータではないデータを選択して伝送する。フィルタエンジン(通常転送モジュールに組み込まれている)は、転送ポートで受信したデータの送り先アドレスを読む。送り先アドレスは、典型的には、ネットワークデータに付随しているメタデータ(例えばパケットヘッダ)に規定されている。フィルタリングモジュールは、送り先アドレスが、ホストコンピュータシステムのアドレスと一致するデータを保持する。
転送インターフェイスは、転送モジュールの構成を促進する(フィルタリングエンジンの起動を含む)。転送インターフェイスは、システム管理者による設定に応じて二つのポート間のデータ伝送をできなくする、制御レジスタを有する。
ネットワークインターフェイスに伝送機能があることにより、コンピュータシステムは、外部ネットワークスイッチや光学スプリッタを使うことなしに、共通のネットワーク接続を共有できる。
図8に典型的なポート伝送の実施例91を示す。図に示した実施例91は、受信データを相互にやり取りする、連結された複数のデータポートを有し、シンメトリーなポート伝送構成となっている。各データポートは、外部ネットワークとの通信を促進する所定の受信エンジン92と送信エンジン93を含む。
到来したネットワークデータフレームは受信エンジン92により受信される。各ポートは、受信エンジン92で受信されたすべてのフレームを、フィルタリングエンジン97に転送する。各受信エンジン92には、実施例に例示されているように、所定のフィルタリングエンジン96がある。
フィルタリングエンジン97は、各受信データフレームから送り先アドレスを読み出す。送り先アドレスがホストコンピュータシステムのアドレスと一致するデータフレームは、ネットワークインターフェイス制御システムに転送して受信バッファ格納する。ホストコンピュータシステムのアドレスとは異なる送り先アドレスを有するデータフレームは、外部ネットワークは転送されるために抽出される。
フィルタリングエンジンは、データフレームを転送ポートから複数の送り先(通常、送り先ポート及びホストコンピュータシステム)に配信する。このことにより、送り先アドレスがホストコンピュータシステムのアドレスを一致しないとき、フィルタリングエンジンがデータフレームをネットワークインターフェイス制御システム25に転送できる(ロギングとアプリケーションに役立つ)。フィルタリングエンジンにより採用されるデータ配信の基準は、典型的には、転送インターフェイスを使って規定される。
フィルタリングエンジンは、複数の送り先に配信するために転送ポートで受信したデータフレームのサブセットを選択してもよい。これは、望まれていないデータ(例えば放送データやマルチキャストデータ)を取り扱うときに良く使われる。フィルタリングエンジンは、無差別モードに設定さえた場合は、転送ポートで受信したデータフレームを無差別に配信してもよい。
フィルタリングエンジン97は、連結された送り先データポートの送信エンジン95に、フィルタされたデータストリーム(ホストコンピュータシステムのアドレスとは異なるアドレスであるフレーム)を転送する。マルチプレクサ96は、フィルタされたデータストリームをホストコンピュータシステムからの外部送信ネットワークデータと結合する。
図8に示したポート伝送の実施例により、「マスター」コンピュータシステムは付加的なネットワークスイッチ無しで、「スレーブ」コンピュータシステムとネットワーク接続を共有することができる。例示された実施例は、「マスター」コンピュータシステム(外部ネットワークと直接接続されているコンピュータシステム)のためのポート伝送の構成を規定している。
特許請求の範囲及びこの明細書において、「含む」またはその変形である「含み」、「含んで」等は、言葉の表現や必要なニュアンスにより前後の文脈から必要となる場合を除いて、「少なくとも含む」という意味で使われている。すなわち、述べられた特徴が存在することを述べているが、本発明の他の実施例における他のさらなる特徴の存在又は追加を排除するものではない。
当業者であれば、本発明の範囲を逸脱することなく、本発明に多くの変形例が可能であることは理解できると考えられる。

Claims (15)

  1. ネットワークインターフェイスを介して外部ネットワークから複数のデータフレームを受信する工程と、
    前記ネットワークインターフェイスからの前記データフレームを、内部システムバスを介して、ホストコンピュータシステムのメモリ内の受信バッファに転送する工程と、
    前記ネットワークインターフェイスが、前記ホストコンピュータシステムからの介入なしに、前記受信バッファ内のデータフレームの配置を規定する工程と、
    前記ネットワークインターフェイスからの各受信データフレームを、開ループ書き込みプロトコルを使って、前記受信バッファに転送する工程であって、前記受信データフレームは前記受信バッファ内の連続したメモリ範囲に連続的に書き込まれ、前記受信データフレームは、前記ホストコンピュータシステムからの読み出し確認無しに、前記受信バッファを繰り返し上書きする工程と、
    を含むデータ受信方法。
  2. 複数のデータフレームを保持できる保存容量を有する連続したメモリ内に、前記受信バッファを配置する工程を含む請求項1記載の方法。
  3. 前記配置されたメモリを、個別にアクセスできる複数の連続したスロットであって、同じ保存容量を有するスロットに分割する工程を含む請求項2記載の方法。
  4. 受信データフレームを、前記受信バッファ内の前記各スロットに連続的に書き込む工程を含む請求項3記載の方法。
  5. 前記スロットの保存容量を超える大きさの前記受信データフレームをフレームフラグメントに分割し、前記フレームフラグメントを前記受信バッファ内の連続したスロットに割り当てる工程を含む請求項3及び4のいずれか記載の方法。
  6. 連続した複数のスロットのフレームデータの関係を定義することにより、フラグメントに分割されたデータフレームを復元するための制御データを生成する工程を含む請求項記載の方法。
  7. 前記制御データが前記フレームフラグメントと同じバストランザクションの対応するスロットの最後に書き込まれるように、前記制御データを各フレームフラグメントの最後に付加する工程を含む請求項記載の方法。
  8. 前記制御データが、前記対応するスロットに割り当てられたフレームフラグメントの長さも定義する請求項記載の方法。
  9. 外部ネットワークデータから複数のデータフレームを受信するネットワーク面と、
    ホスト内部システムバスを介してホストコンピュータシステムのメモリ内に配置される受信バッファに、前記データフレームを転送するホスト面と、
    前記ホストコンピュータシステムからの介入なしに、前記受信バッファ内の前記データフレームの割り当てを規定する制御システムと、
    開ループプロトコルを使って、前記受信データフレームのそれぞれを前記受信バッファに転送する書き込みコントローラと、を具備し、
    前記書き込みコントローラが、前記受信バッファ内の連続したメモリ範囲に前記データフレームを連続的に書き込み、
    前記開ループプロトコルは、前記ホストコンピュータシステムからの読み出し確認無しに、前記受信バッファを繰り返し上書きするネットワークインターフェイス。
  10. 個別にアクセスできる複数の連続したスロットであって同じ保存容量を有するスロットを、前記受信バッファに配置された連続したメモリ内に配置するバッファ管理モジュールを具備する請求項記載のネットワークインターフェイス。
  11. 前記受信データフレームを前記受信バッファ内の各スロットに連続的に転送する書き込みコントローラを具備する請求項10記載のネットワークインターフェイス。
  12. 前記スロットの保存容量を超える大きさの前記受信データフレームをフレームフラグメントに分割し、前記フレームフラグメントを前記受信バッファ内の連続したスロットに割り当てるフレーム管理モジュールを具備する請求項11記載のネットワークインターフェイス。
  13. 前記フレーム管理モジュールは、連続した複数のスロットのフレームデータの関係を定義することにより、フラグメントに分割されたデータフレームを復元するための制御データを生成する請求項12記載のネットワークインターフェイス。
  14. 前記書き込みコントローラは、前記制御データが前記フレームフラグメントと同じバストランザクションの対応するスロットの最後に書き込まれるように、前記制御データを各フレームフラグメントの最後に付加する請求項13記載のネットワークインターフェイス。
  15. 前記制御データが、前記対応するスロットに割り当てられたフレームフラグメントの長さも定義する請求項14記載のネットワークインターフェイス。
JP2016523907A 2013-10-18 2014-10-17 ネットワークインターフェイス Active JP6543246B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2013245529 2013-10-18
AU2013245529A AU2013245529A1 (en) 2013-10-18 2013-10-18 Network Interface
PCT/AU2014/000994 WO2015054738A1 (en) 2013-10-18 2014-10-17 Network interface

Publications (2)

Publication Number Publication Date
JP2016535483A JP2016535483A (ja) 2016-11-10
JP6543246B2 true JP6543246B2 (ja) 2019-07-10

Family

ID=52827459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016523907A Active JP6543246B2 (ja) 2013-10-18 2014-10-17 ネットワークインターフェイス

Country Status (11)

Country Link
US (1) US10284672B2 (ja)
EP (1) EP3058684B1 (ja)
JP (1) JP6543246B2 (ja)
KR (1) KR20160075564A (ja)
CN (1) CN105993148B (ja)
AU (2) AU2013245529A1 (ja)
BR (1) BR112016008606A8 (ja)
CA (1) CA2925612A1 (ja)
RU (1) RU2686016C2 (ja)
SG (2) SG11201602350PA (ja)
WO (1) WO2015054738A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013245529A1 (en) * 2013-10-18 2015-05-07 Cisco Technology, Inc. Network Interface
US20190238485A1 (en) * 2018-01-30 2019-08-01 Hewlett Packard Enterprise Development Lp Transmitting credits between accounting channels
US11336757B2 (en) * 2019-03-19 2022-05-17 Texas Instruments Incorporated Sample based data transmission over low-level communication channel
US11068181B2 (en) * 2019-10-17 2021-07-20 EMC IP Holding Company LLC Generating and storing monotonically-increasing generation identifiers
CN111930650B (zh) * 2020-09-23 2021-01-08 新华三半导体技术有限公司 一种网络流量转发方法及设备
CN114520711B (zh) * 2020-11-19 2024-05-03 迈络思科技有限公司 数据包的选择性重传

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043981A (en) 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
JPH06197133A (ja) * 1992-12-24 1994-07-15 Toshiba Corp 通信システム
JPH06274425A (ja) * 1993-03-17 1994-09-30 Hitachi Ltd ネットワークアダプタ装置
ATE211564T1 (de) * 1993-07-28 2002-01-15 3Com Corp Netzwerkstation mit mehreren netzwerkadressen
GB2349717A (en) 1999-05-04 2000-11-08 At & T Lab Cambridge Ltd Low latency network
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
US7289509B2 (en) * 2002-02-14 2007-10-30 International Business Machines Corporation Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections
US20070260777A1 (en) * 2003-11-25 2007-11-08 Timpe Barrie R Queues for information processing and methods thereof
US7698361B2 (en) 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
US7613813B2 (en) * 2004-09-10 2009-11-03 Cavium Networks, Inc. Method and apparatus for reducing host overhead in a socket server implementation
US7835380B1 (en) * 2004-10-19 2010-11-16 Broadcom Corporation Multi-port network interface device with shared processing resources
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
JP4837361B2 (ja) * 2005-10-28 2011-12-14 メタウォーター株式会社 伝送システム、そのデータ送信装置、データ受信装置
US9137179B2 (en) * 2006-07-26 2015-09-15 Hewlett-Packard Development Company, L.P. Memory-mapped buffers for network interface controllers
JP2008097273A (ja) 2006-10-11 2008-04-24 Fujitsu Ltd ネットワークインタフェース装置、ネットワークインタフェース制御方法、情報処理装置、データ転送方法
US8700873B2 (en) * 2010-10-14 2014-04-15 International Business Machines Corporation Direct memory access memory management
ITRM20120094A1 (it) * 2012-03-14 2013-09-14 Istituto Naz Di Fisica Nuclea Re Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale
AU2013245529A1 (en) * 2013-10-18 2015-05-07 Cisco Technology, Inc. Network Interface

Also Published As

Publication number Publication date
CN105993148A (zh) 2016-10-05
CN105993148B (zh) 2019-08-23
EP3058684A4 (en) 2017-07-19
RU2016118760A (ru) 2017-11-23
EP3058684B1 (en) 2020-12-02
US10284672B2 (en) 2019-05-07
US20160241666A1 (en) 2016-08-18
SG10201803201VA (en) 2018-06-28
JP2016535483A (ja) 2016-11-10
AU2014336967A1 (en) 2016-04-28
WO2015054738A1 (en) 2015-04-23
AU2014336967B2 (en) 2019-04-04
RU2686016C2 (ru) 2019-04-23
CA2925612A1 (en) 2015-04-23
RU2016118760A3 (ja) 2018-07-25
KR20160075564A (ko) 2016-06-29
AU2013245529A1 (en) 2015-05-07
EP3058684A1 (en) 2016-08-24
SG11201602350PA (en) 2016-05-30
BR112016008606A8 (pt) 2020-03-17

Similar Documents

Publication Publication Date Title
JP6543246B2 (ja) ネットワークインターフェイス
US11636052B2 (en) Non-volatile memory express (NVMe) data processing method and system
US11809367B2 (en) Programmed input/output mode
JP2584957B2 (ja) ホスト指示結合式の装置
US8868809B2 (en) Interrupt queuing in a media controller architecture
US20210004171A1 (en) I/o request processing method and device
CN110119304B (zh) 一种中断处理方法、装置及服务器
US9432288B2 (en) System on chip link layer protocol
WO2013136522A1 (ja) 計算機システム及び計算機間のデータ通信方法
CN105556930A (zh) 针对远程存储器访问的nvm express控制器
JPH06511583A (ja) ホストから独立したバッファ管理によるネットワーク・インタフェース
US9137780B1 (en) Synchronizing multicast data distribution on a computing device
JP5687959B2 (ja) I/oデバイス共有方法、および装置
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
CN115210694A (zh) 数据传输方法及装置
CN112764666B (zh) 用于存储管理的方法、设备和计算机程序产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190402

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190614

R150 Certificate of patent or registration of utility model

Ref document number: 6543246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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