JP2001027877A - データ・ストリームに対してアルゴリズムを実行する装置 - Google Patents

データ・ストリームに対してアルゴリズムを実行する装置

Info

Publication number
JP2001027877A
JP2001027877A JP2000112528A JP2000112528A JP2001027877A JP 2001027877 A JP2001027877 A JP 2001027877A JP 2000112528 A JP2000112528 A JP 2000112528A JP 2000112528 A JP2000112528 A JP 2000112528A JP 2001027877 A JP2001027877 A JP 2001027877A
Authority
JP
Japan
Prior art keywords
algorithmic
data
bus
algorithm
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000112528A
Other languages
English (en)
Inventor
Brian M Dowling
ブライアン・エム・ダウリング
Ecuyer Brian P L
ブライアン・ピー・レクイェール
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2001027877A publication Critical patent/JP2001027877A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/403Bus networks with centralised control, e.g. polling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up

Abstract

(57)【要約】 【課題】トランザクションを介してデータを送信すると
きにアルゴリズムをデータに対して実行することができ
る装置。 【解決手段】アルゴリズミック・スヌープ装置はアルゴ
リズミック・エントリ、およびアルゴリズミック・エン
ジンを含む。アルゴリズミック・エントリはクライアン
トIDレジスタ、開始アドレス及び終了アドレス・レジ
スタ、読取り又は書込みフラグ、暗号鍵及び復号鍵レジ
スタ、アルゴリズムIDレジスタ、状態/制御レジス
タ、累算器,一時記憶領域、及びメモリ・ポインタを含
む。アルゴリズミック・エンジンはバス分離装置、アル
ゴリズム一致装置を含む。アルゴリズミック・エントリ
とトランザクションが一致する場合、アルゴリズムID
レジスタによって識別されるアルゴリズムがデータに実
行される。本発明は必然的に発生するメモリ転送にアル
ゴリズムの実行を上乗せすることができる利点がある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データ・ストリー
ムがバス・トランザクションよって搬送されるときに、
保全性(integrity)を照合するチェックサム
機能およびセキュリティを可能にする暗号化機能などの
機能を、データ・ストリームに実行するアルゴリズムに
関する。より詳細には本発明は、共有バスに接続したク
ライアント間のトランザクションを通じてデータが送信
されるときに、インターリーブされたトランザクション
を共有バス上でスヌープ(snoop)し、このトラン
ザクションからスヌープされたデータに様々なアルゴリ
ズムを実行する。
【0002】
【従来の技術】コンピュータ・ネットワーキングの技術
分野において、ネットワーク媒体によって接続されたネ
ットワーク・ノード間でデータを送信するには、通常プ
ロトコル・スタック(protocol stack)
を使用する。ネットワーク・ノードには、コンピュータ
・ワークステーション、サーバ、ネットワーク・プリン
タ、ネットワーク・スキャナなどの装置が含まれる。プ
ロトコル・スタックの開発と実施を調整するために、国
際標準化機構(ISO)は、7層のネットワーク・プロ
トコルを規定する開放型システム間相互接続(OSI)
参照モデルを告示した。
【0003】図1はOSI参照モデルのブロック図10
である。このモデルは物理層12、データ・リンク層1
4、ネットワーク層16、トランスポート層18、セッ
ション層20、プレゼンテーション層22、およびアプ
リケーション層24を含む。各層は特定のタスクの実行
を担う。物理層12はビット・ストリームを物理的に送
信する機械的詳細および電気的詳細の両方の処理を担
う。データ・リンク層14は物理層で発生した誤り検出
および誤り回復を含むパケットの処理を担う。ネットワ
ーク層16は、通信ネットワーク内において接続を可能
にし、発信パケットのアドレスを処理すること、着信パ
ケットのアドレスをデコードすること、および経路制御
情報を維持管理して変化する負荷に適切に応答すること
を含むパケットの経路制御を担う。トランスポート層1
8は、ネットワークに対する下位レベルのアクセスと、
メッセージをパケットに分割すること、パケットの順
序、フロー制御、物理アドレスの生成を維持管理するこ
とを含むユーザ間のメッセージ転送を担う。セッション
層20は、プロセス・ツー・プロセス・プロトコル(p
rocess−to−process protoco
l)の実施を担う。プレゼンテーション層22は、ネッ
トワーク内の様々なサイト間の、文字変換および半二重
/全二重(エコー制御)を含むフォーマットの相違の解
決を担う。最後にアプリケーション層24は、ユーザと
の直接対話を担う。層24は電子メール、分散データ・
ベース、ウェブ・ブラウザなどのアプリケーションを含
むことができる。
【0004】ISOがOSI参照モデルを告示する以前
に、国防総省国防高等研究事業局(DARPA)はAR
PNET参照モデルを告示した。ARPNET参照モデ
ルは、ネットワーク・ハードウェア層、ネットワーク・
インタフェース層、ホスト・ツー・ホスト層、プロセス
/アプリケーション層の4層を含む。
【0005】これらの名前が暗示するとおり、OSI参
照モデルおよびARPNET参照モデルは、プロトコル
の設計者が従うか従わないかを選択することができる指
針を提供する。しかしほとんどのネットワーキング・プ
ロトコルは、少なくとも大まかには参照モデルに対応す
る層を規定している。
【0006】コンピュータ処理の分野では、ネットワー
ク・ノード間のデータ送信に使用する一般的なプロトコ
ルが多数存在する。例えば、TCP/IP、Apple
Talk(商標)、NetBEUI、IPXは全て、コ
ンピュータ・ネットワークに接続するサーバ、ワークス
テーション、プリンタ、およびその他の装置間のデータ
送信に使用される一般的なプロトコルである。
【0007】ネットワーク・ノードが単一の「ネットワ
ーク・クライアント」を有していようと、多数の「ネッ
トワーク・クライアント」を有していようと、ネットワ
ーク・ノードは、いくつかの送信プロトコルを使用する
のが普通である。本明細書で使用されるとおり、「ネッ
トワーク・クライアント」という用語は、2つのネット
ワーク・ノード間でネットワーク媒体を介してデータを
送信するのに使用される装置(ネットワーク・アダプ
タ、ポートまたはモデムなど)を指す。例えば、典型的
なコンピュータ・ワークステーションは、モデムを介し
てインターネット上で通信するのにTCP/IPを使用
し、ネットワーク・アダプタを介してネットワーク・サ
ーバと通信するのにIPXを使用する。同様にプリンタ
は、同じネットワーク・アダプタを介して、Apple
TalkプロトコルとNetBEUIプロトコルのどち
らかを使用して印刷ジョブを受信することができるよう
に構成されている。通常データ・リンク層14またはネ
ットワーク層16に存在するソフトウェア・ルーチン
は、ネットワーク・アダプタと適当なプロトコル・スタ
ックの間でデータ・パケットを経路制御する。
【0008】様々なプロトコルは、そのプロトコルによ
って送信されるデータの保全性を照合する方法も規定し
ている。例えば、TCP/IPパケットがイーサネット
・ネットワーク・アダプタなどのネットワーク・クライ
アントに到着する場合を考えてみる。イーサネット・パ
ケット全体は、巡回符号チェック(CRC)コードによ
って保護され、このコードは、送信ネットワーク・アダ
プタによって計算されてイーサネット・パケット内に詰
め込まれ、受信ネットワーク・アダプタによってこのイ
ーサネット・パケットの保全性の照合に使用される。も
しパケットの保全性を照合することができない場合に
は、このパケットは廃棄される。
【0009】TCP/IPプロトコルのIP部分は、イ
ーサネット・パケット内にカプセル化されている。この
IP部分は、IPヘッダを保護する16ビットのチェッ
クサム・コードを有する。IPヘッダの保全性が照合さ
れない場合には、そのパケットが廃棄される。TCP/
IPプロトコルのTCP部分は、IP部分にカプセル化
され、そのパケットのTCP部分のTCPヘッダおよび
内容を保護する16ビットのチェックサム・コードを有
する。TCP部分のTCPヘッダおよび内容の保全性が
照合されない場合には、そのパケットが廃棄され、送り
手は意図する受け手から到着確認のパケットを受信しな
いので、そのパケットを再送信する。
【0010】上述の例でイーサネット・パケットの保全
性は、ネットワーキング・ハードウェアによって物理層
12で検証される。従ってこの機能は極めて迅速に実行
される。しかしながらプロトコル・スタックの上位層
は、通常ソフトウェアによって実施される。ソフトウェ
ア・ルーチンを使用したチェックサムの計算はかなり遅
い。従来の技術では、物理層がそのスタックの上位層の
知識を有していないため、プロトコル・スタックの上位
層で必要とされるチェックサムを、その物理層で生成す
ることができなかった。
【0011】プロトコル・スタックの上位層でチェック
サムの生成を高速化する従来技術による解決策の1つ
は、プロトコル・スタックの上位層によって制御される
ハードウェア・チェックサム機器を使用することであ
る。例えばTCPモジュールが、TCPヘッダおよびそ
の対応するデータの保全性を検証しようとするとき、こ
のTCPモジュールは、ハードウェア・チェックサム機
器のレジスタに書き込んでチェックサム処理を開始し、
その機器にポーリングしてチェックサムがいつ終了する
かを判断する。そのような解決策は、ソフトウェア・ル
ーチンだけによって生成されるチェックサムよりも高速
であるが、チェックサムが生成される間に依然として相
当の遅延がある。
【0012】ハードウェアを使用してチェックサムを計
算する別の方法が、Snyder等によって「Calc
ulation of Network Data C
heck Sums by Dedicated Ha
rdware With Software Corr
ections」という名称の米国特許番号第5522
039号に開示された。この特許は、アダプタ・メモリ
とシステム・メモリの間の直接メモリ・アクセス(DM
A)動作によってパケットが転送されるときに、パケッ
ト全体の「グロス・チェックサム(gross che
cksum)」を生成することを開示している。次に、
プロトコル・スタックの上位層は、必要なチェックサム
を計算する。そのチェックサムは、パケットの必要とし
ない部分に関する「差分チェックサム(differe
nce checksum)」を計算し、次にこの差分
チェックサムをグロス・チェックサムから引いて「ネッ
ト・チェックサム(net checksum)」を生
成して計算される。ネット・チェックサムは、そのプロ
トコル・スタックの層が必要とするチェックサムであ
る。ソフトウェアによって計算される差分チェックサム
が、比較的少数バイトに対して計算されるので、第55
22039号特許によって開示された機構では、他の従
来技術の方法よりも犠牲になる時間が少なくて済む。
【0013】1997年9月25日に出願された「Ha
rdware ChecksumAssist For
Protocol Stacks」という名称の米国
特許出願番号第08/937912号において、Bri
an M.Dowling等は、データがイーサネット
(登録商標)・アダプタなどのネットワーク・クライア
ントによって受信されるときに、そのデータに対してチ
ェックサムおよびその他のアルゴリズムを計算すること
のできる機構を開示している。ここでその出願を参照し
て取り込む。特許出願番号第08/937912号によ
って開示されるとおり、フライバイ・チェックサム生成
装置(fly−by checksum genera
tion unit)がネットワーク・クライアントに
組み込まれる。ネットワーク・クライアントがパケット
をメモリ内に転送するときに、このフライバイ・チェッ
クサム装置はチェックサムを計算する。特許出願番号第
08/937912号は、フライバイ・チェックサム装
置が開始および終了バイト・レジスタを含むことも開示
し、それによって、第5522039号特許によって開
示されるのと同様に、ソフトウェアを使用して差分チェ
ックサムを計算する必要を少なくするかまたは無くして
いる。
【0014】特許番号第5522039号および特許出
願番号第08/937912号はそれぞれ、データに
「接触」しなければならない回数を減らすことによっ
て、チェックサムを生成するのに必要なオーバーヘッド
を減らしている。しかしながら、第5522039号特
許および第08/937912号特許出願によって開示
される機構は、各ネットワーク・クライアントに設けな
ければならない。対照的に、ソフトウェア・ルーチンお
よびハードウェア・チェックサム機器は、各ネットワー
ク・クライアントに設ける必要はないが、上述の理由の
ためにより遅い。
【0015】典型的なコンピュータ・システムにおいて
提供されるネットワーク・クライアントの種類数が急増
している。現在利用可能なネットワーク・クライアント
の中には、ネットワーク・アダプタ(イーサネット・ア
ダプタ、トークン・リング・アダプタなどを含む)、パ
ラレル・ポート、シリアル・ポート、モデム(標準V9
0電話モデム、DSLモデム、ケーブル・モデム、IS
DNモデムなどを含む)、USBポート、IEEE13
94ポート、IRおよびRFポート、SCSIポート、
およびEIDEポートがある。さらに、ネットワーク・
ノードを標準電話回線を介して接続することができるH
omePNA規格などの、新たなネットワーク・クライ
アントの規格が開発され続けている。電話回線が安全で
はないので、暗号化および認証がHomePNA規格の
重要なコンポーネントになることが検討されている。T
CP/IPなどのプロトコルは、この多数のネットワー
ク・クライアント規格を介してデータを送信するのに使
用される可能性がある。
【0016】いくつかのネットワーク・クライアントを
含むネットワーク・ノードにおいて、第5522039
号特許または第08/937912号特許出願によって
開示される機構を含むことは現実的ではないことが多
い。なぜならそのような機構を各ネットワーク・クライ
アントに備えなければならないからである。当技術分野
で要求されることは、第5522039号特許および第
08/937912号特許出願によって開示される性能
の利点を提供するが、各ネットワーク・クライアントご
とに、それらの方法を再現する必要のない方法および装
置である。
【0017】
【発明が解決しようとする課題】本発明は、データがト
ランザクションを介して送信されるとき、インターリー
ブしたトランザクションを共有バスを介してスヌープす
ることによって、保全性を検証するチェックサム機能お
よびセキュリティを可能にする暗号化機能などの機能の
アルゴリズムをデータに対して実行することができる装
置および方法を提供することを目的とする。
【0018】
【課題を解決するための手段】本発明は、共有バスに接
続したクライアント間のトランザクションによってデー
タが送信されるときに、インターリーブしたトランザク
ションをこの共有バスを介してスヌープし、トランザク
ションからスヌープされたデータに対して様々なアルゴ
リズムを実行するアルゴリズミック・スヌープ装置であ
る。本発明によるアルゴリズミック・スヌープ装置は、
システムCPU、記憶装置、および1つまたは複数のネ
ットワーク・クライアントなどの様々なバス・クライア
ントと共に共有バスに接続される。このアルゴリズミッ
ク・スヌープ装置もそれ自体バス・クライアントとな
る。
【0019】本発明によるアルゴリズミック・スヌープ
装置内には、1つまたは複数のアルゴリズミック・エン
トリならびにアルゴリズミック・エンジンがある。各ア
ルゴリズミック・エントリは、一連のアルゴリズミック
・エントリ制御情報レジスタおよび結果/一時記憶装置
を含む。アルゴリズミック・エントリ制御情報レジスタ
は、トランザクションに関するクライアントを識別する
クライアントIDレジスタ、アルゴリズムを実行するア
ドレス範囲を規定する開始アドレス・レジスタおよび終
了アドレス、トランザクションが読取り動作か、書込み
動作かを識別する読取りまたは書込みフラグ、暗号鍵を
保有する暗号鍵レジスタ、復号鍵を保有する復号鍵レジ
スタ、実行すべきアルゴリズムを識別するアルゴリズム
IDレジスタ、様々な状態ビットおよび制御ビットを保
有する状態/制御レジスタを含む。結果/一時記憶装置
は、アルゴリズムの実行結果を累算する累算器、一時記
憶領域、および(暗号化アルゴリズムの結果などの)大
量のデータを含む結果を中に格納することができるメモ
リの位置を示す1つまたは複数のメモリ・ポインタを含
む。
【0020】アルゴリズミック・エンジンは、バス分離
装置、アルゴリズミック・エントリ一致装置、およびア
ルゴリズム計算装置を含む。バス分離装置は、バス・ト
ランザクションをアドレス・コンポーネント、データ・
コンポーネント、クライアントID・コンポーネント、
および読取り/書込み状態コンポーネントに分離する。
アルゴリズミック一致装置は、これらのコンポーネント
と作動状態の各アルゴリズミック・エントリの対応する
レジスタの内容とを比較する。もし一致する場合には、
アルゴリズムIDレジスタによって識別されるアルゴリ
ズムが、トランザクションによって搬送されるデータに
対して実行される。各トランザクションに対して複数の
アルゴリズムを実行することができる。
【0021】本発明によって提供される主要な利点の1
つは、望む限り多数のアルゴリズムの実行を、必然的に
発生するメモリ転送に「上乗せ(piggy back
ed)」することができることである。本発明によるア
ルゴリズミック・スヌープ装置は、アルゴリズムを実行
するシステムCPUに依存せず、既存のトランザクショ
ンをスヌープしてアルゴリズミック・スヌープ装置にデ
ータを提供する。このため僅かな付加的システム・リソ
ースを使用して、メモリ転送の完了と同時にアルゴリズ
ムの実行を完了する。
【0022】
【発明の実施の形態】本発明は、トランザクションを介
してデータを送信するときに、インターリーブしたトラ
ンザクションを共有バス上でスヌープすることによっ
て、機能を遂行するアルゴリズムをデータに対して実行
する。そのような機能のの例としては保全性を検証する
チェックサム機能およびセキュリティを可能にする暗号
化機能などがある。本明細書で使用されるとおり、「イ
ンターリーブしたトランザクション」という用語は、特
定のデータ・ストリームを搬送するバス・トランザクシ
ョンが連続する必要がないということを指す。言い換え
るとストリームを送信する間に、異なるバス・クライア
ントがバスを所有する可能性がある。例えば同じ時間間
隔に2つのデータ・ストリームがバスを介して送信され
る場合、第1、第3、第4、第8のバス・トランザクシ
ョンが第1ストリームの一部のデータを搬送し、第2、
第5、第6、第7のバス・トランザクションが第2スト
リームの一部のデータを搬送するように、バス・トラン
ザクションをインターリーブすることが可能である。
【0023】本発明は、複数のネットワーク・クライア
ントが単一の装置に統合されるHewlett−Pac
kard製のJetDirectプリント・サーバなど
の装置において特に有効である。しかしながら、複数の
バス・クライアントが共有バスを介して通信し、バスに
よって搬送されるトランザクションをスヌープすること
ができる任意のシステムにおいても、本発明を有利に使
用することができる。
【0024】図2は、本発明によるシステム26を単純
化したブロック図である。システム26は、アルゴリズ
ミック・スヌープ装置(algorithmic sn
oop unit)28、システムCPU30、システ
ム・メモリ32、ネットワーク・クライアント34、3
6、38、記憶装置40、および共有バス42を備え
る。ネットワーク・クライアント34、36、38は、
当技術分野のいかなる種類のネットワーク・クライアン
トでもよい。例えば、ネットワーク・クライアント34
がHomePNAネットワーク・アダプタ、ネットワー
ク・クライアント36がIEEE1394アダプタ、ネ
ットワーク・クライアント38がイーサネット・アダプ
タでもよい。もちろんこれらの例は単に代表に過ぎず、
ネットワーク・クライアントは、コンピュータ処理装置
間でネットワーク媒体を介してデータを送信するいかな
る種類の装置でもよい。例えば、システム26がHew
lett−PackardのJetDirectプリン
ト・サーバの場合、ネットワーク・クライアントの1つ
をIEEE1284パラレル・ポートまたはシリアル・
ポートとすることが望ましい。
【0025】記憶装置40は、ハード・ディスク・ドラ
イブ、CD−ROMドライブ、フロッピー(登録商標)
・ディスク・ドライブなど、当技術分野で知られる任意
のタイプの記憶装置である。記憶装置40、アルゴリズ
ミック・スヌープ装置28、システムCPU30、シス
テム・メモリ32、およびネットワーク・クライアント
34、36、38は、総称してバス・クライアントと呼
ばれる。各バス・クライアントは、それ自体と別のバス
・クライアントとの間で共有バス42を介してデータを
転送することができる。
【0026】共有バス42は、バス・クライアント(ア
ルゴリズミック・スヌープ装置28、システムCPU3
0、システム・メモリ32、およびネットワーク・クラ
イアント34、36、38、記憶装置40)間で、それ
を介してデータが流れる任意の相互接続機構である。主
な必要条件は、アルゴリズミック・スヌープ装置28が
バス・クライアント間のトランザクションをスヌープす
ることができることである。より詳しく以下に述べる1
つの特定の構成において、アルゴリズミック・スヌープ
装置28にそれ自体のメモリ・トランザクションをスヌ
ープさせることが望ましいことに留意されたい。ネット
ワーク・クライアント34、36、38、アルゴリズミ
ック・スヌープ装置28、記憶装置40は通常、当技術
分野で知られる直接メモリ・アクセス(DMA)操作を
使用してデータを転送する。
【0027】システム26は、単一の集積回路マイクロ
コントローラ上に実施することができる。例えばシステ
ムCPU30は、ARM社によって規定されたアドバン
スト・マイクロコントローラ・バス・アーキテクチャ
(AMBA)のARMアドバンスト・システム・バス
(ASB)仕様に準拠する共有バス42を有するARM
社によって提供されるARM CPUマクロセルとして
実施することができる。
【0028】このASBは非多重で、別々のアドレスお
よびデータ・バス、並びに一連のバス制御線を含む。ト
ランザクションの読取り/書込み状態およびクライアン
トのIDは、バス制御線から容易に得ることができる。
共有バス42がASB−AMBAバスであるこの例にお
いて、アルゴリズミック・スヌープ装置28は、バス4
2を監視して、バス・クライアントがシステム・メモリ
32における特定のメモリ範囲などの別のバス・クライ
アントにいつ書き込みをするか判断する。バス42を介
してデータを転送するときに、装置28は、データを書
き込むバス・クライアントおよびデータが書き込まれる
バス・クライアントに基づいてそのデータに対してアル
ゴリズムの機能を実行する。
【0029】システム26がPCIバス・アーキテクチ
ャ(PCI bus architecture)に基
づくコンピュータ・システムであり、ネットワーク・ク
ライアント34、36、38がPCIカードとして実施
されると考える。そのような構成では、PCIカードが
同じPCIブリッジ(PCI bridge)上にある
場合とない場合があるので、ネットワーク・クライアン
トとシステム・メモリ32との間のトランザクションを
別のPCIスロットからスヌープすることができないこ
とがある。もしネットワーク・クライアントが全て同じ
ブリッジ上にある場合には、アルゴリズミック・スヌー
プ装置28も同じブリッジ内のPCIカード上に存在す
ることができる。一方、ネットワーク・クライアントが
異なる(または個々の)ブリッジ上にある場合には、装
置28がトランザクションをスヌープすることができる
ようなバス機構内の位置に装置28を設けなければなら
ない。装置28がバス・クライアント間のトランザクシ
ョンをスヌープすることができるバス機構内の位置を、
当業者なら理解するであろう。また、もしシステム26
が複数のCPU(multiple CPU)および/
また複数のキャッシュ・レベル(multiple c
ache level)を備える場合には、装置28と
共にキャッシュ・コヒーレンシ(cache cohe
rency)機構を設けて、異なるCPU間のキャッシ
ュ・メモリ内で発生するCPUトランザクションをスヌ
ープする必要があることに留意されたい。そのようなキ
ャッシュ・コヒーレンシ機構は当分野で知られている。
【0030】図3はアルゴリズミック・スヌープ装置2
8のブロック図である。装置28は、共有バス42に接
続したアルゴリズミック・エンジン44およびアルゴリ
ズミック・エントリ46、48、50を有する。各アル
ゴリズミック・エントリは、結果/一時記憶装置および
アルゴリズミック・エントリ制御情報レジスタを含む。
例えばアルゴリズミック・エントリ48は、結果/一時
記憶装置52およびアルゴリズミック・エントリ制御情
報レジスタ54を含む。各アルゴリズミック・エントリ
は、アルゴリズミック・エンジン44に接続している。
アルゴリズミック・スヌープ装置28の様々なレジスタ
およびエントリは、より詳しく以下に述べるとおり、共
有バス42によって図2のシステムCPU30からアク
セス可能である。
【0031】図3はN個のアルゴリズミック・エントリ
を含む。設けられるアルゴリズミック・エントリの数
は、バス・クライアントの数、各バス・クライアントが
サポートする同時転送の数、および実行する所望のアル
ゴリズムの数に基づく。基本的には本発明を実施する設
計者は、全ての所望のアルゴリズムを同時に実行するこ
とができるのに充分なアルゴリズミック・エントリを設
けたいと考えるだろう。例えば、図1のネットワーク・
クライアント34から受け取る、暗号化されたデータ・
パケットを考える。さらに、暗号化されたデータ・パケ
ットが、ネットワーク・クライアント34に到着し、ネ
ットワーク・クライアント36に送出されるデータ・ス
トリームの一部であると仮定する。この例では、ネット
ワーク・クライアント34から着信したデータに対して
チェックサムを計算し、ネットワーク・クライアント3
4からのこのデータを復号化し、ネットワーク・クライ
アント36へのデータ送信に備えてチェックサムを計算
することが望ましい。したがってこの例では、3つのア
ルゴリズミック・エントリが必要である。別のバス・ク
ライアントにデータを送信することに備えて着信データ
にアルゴリズム操作を実行することを、より詳しく以下
に述べる。
【0032】図4は、図3のアルゴリズミック・スヌー
プ装置28におけるアルゴリズミック・エントリ48の
アルゴリズミック・エントリ制御情報レジスタ54のブ
ロック図である。もちろん図4は、アルゴリズミック・
エントリそれぞれのアルゴリズミック・エントリ制御情
報レジスタである。各レジスタは、共有バス42を介し
て図2のシステムCPU30からアクセス可能である。
レジスタ54は、クライアントIDレジスタ56、開始
アドレス・レジスタ58、終了アドレス・レジスタ6
0、読取りまたは書込みフラグ62、暗号鍵レジスタ6
4、復号鍵レジスタ66、アルゴリズムIDレジスタ6
8、および状態/制御レジスタ70を含む。
【0033】クライアントIDレジスタ56は、図2の
共有バス42のデータを読み取るまたはデータを書き込
むクライアントを規定する。ASB−AMBAバス仕様
によれば、クライアントIDは、共有バス42のバス制
御線から容易に得られる。他のバス仕様では、多重化ト
ランザクションなど、他の方法でクライアントIDを示
す可能性がある。所与のバス・アーキテクチャのバス・
トランザクションからクライアントIDをどのように取
り出すかを、当業者なら理解するであろう。アルゴリズ
ミック・スヌープ装置28自体が、クライアントIDレ
ジスタ56の内容によって識別されるクライアントでも
よいことに留意されたい。これをより詳しく以下に述べ
る。
【0034】開始アドレス・レジスタ58は、アルゴリ
ズムが実行される開始アドレスを指定する。しかしなが
ら開始アドレス・レジスタ58は、3つの異なる値を指
定することが望ましい。第1に開始アドレス・レジスタ
58は、着信パケットを受け取るように構成されたメモ
リ内のバッファの先頭アドレスを格納することが望まし
い。これは例えば、より詳しく以下に述べるとおり、装
置28がCPUとネットワーク・クライアントの間の構
成ダイアログをスヌープすることによって、アルゴリズ
ミック・エントリが構成される場合には望ましい。第2
に、上述のとおり開始アドレス・レジスタ58は、アル
ゴリズムが実行される開始アドレスを指定しなければな
らない。アルゴリズムが実行される開始アドレスは、絶
対アドレスとしてか、またはバッファの先頭アドレスか
らのオフセットとして指定することができることに留意
されたい。最後に、開始アドレス・レジスタ58は、計
算の開始位置として実際に使用すべき先頭ワード内の位
置を示すワード・オフセットを含むことができる。例え
ば、TCP/IPパケットを含むイーサネット・パケッ
トを考えてみる。もしイーサネット・パケット内に含ま
れるデータのTCP/IPチェックサムを計算すること
を望む場合には、TCP/IPパケットのデータ部分に
達するためにバッファの先頭アドレスからのオフセット
が必要とされる。もし図2のシステム26が、32ビッ
トまたは64ビットの増分でメモリをアドレス指定する
場合には、開始位置がアドレス境界にちょうど当たらな
い可能性があり、ワード・オフセットを指定する必要が
ある。
【0035】通常、開始アドレス(ならびに以下の終了
アドレス)は、図2のシステム・メモリ32内のアドレ
スである。しかしながらこのことは、本発明に必要では
ない。アドレスは、他のどのバス・クライアントにマッ
ピングされたアドレスであってもよい。例えば、データ
がネットワーク・クライアントからハード・ディスクに
直接DMAされるときに、このデータに対してアルゴリ
ズムを実行するために本発明を使用することができる。
そのようなハード・ディスクはハード・ディスク・コン
トローラのアドレス内に格納したデータを提供し、その
アドレスはレジスタ58、60にそれぞれ格納した開始
アドレスおよび終了アドレスによって範囲指定される。
【0036】終了アドレス・レジスタ60は、アルゴリ
ズムが実行される最終アドレスを指定する。開始レジス
タ58と同様に、終了アドレス・レジスタ60は3つの
異なる値を指定することが望ましい。第1に終了アドレ
ス・レジスタ60は、着信パケットを受け取るように構
成されたメモリ内のバッファの最終アドレスを格納する
ことが望ましい。バッファの最終アドレスは、絶対アド
レスとしてか、または開始アドレス・レジスタ58に格
納されたバッファの先頭アドレスからのオフセットとし
て格納することができることに留意されたい。第2に、
終了アドレス・レジスタ60は、アルゴリズムが実行さ
れる最終アドレスを指定しなければならない。アルゴリ
ズムが実行される最終アドレスは、絶対アドレスとして
か、またはバッファの最終アドレスからの負のオフセッ
トとして指定することができることに留意されたい。最
後に、終了アドレス・レジスタ60は、計算の終了位置
として実際に使用すべき最終ワード内の位置を示すワー
ド・オフセットを含むことができる。
【0037】クライアントIDレジスタ56によって識
別されるバス・クライアントがデータを書き込んでいる
またはデータを読み取っている場合、読取りまたは書込
みフラグ62はアルゴリズムを実行すべきかどうかを指
示する。代替的に、データを読み取るか、データを書き
込むか、またはデータの読取り書込みのいずれかを行う
場合、2ビット・レジスタを設けてアルゴリズムを計算
することができる。この情報は通常、共有バス42のバ
ス制御線によって搬送される。
【0038】アルゴリズムが暗号化アルゴリズムである
場合、暗号鍵レジスタ64および復号鍵レジスタ66
は、使用すべき暗号鍵および復号鍵を保有する。もし実
行されるアルゴリズムが、復号化/暗号化の複合アルゴ
リズム(combined decryption/e
ncryption algorithm)である場合
には、2つの鍵が必要となる。着信データを復号化して
復号化したそのデータを別のバス・クライアントへの送
信に備えて暗号化する場合には、そのような複合アルゴ
リズムが望ましい。復号化/暗号化の複合アルゴリズム
は、アルゴリズムの復号化部分を1つのアルゴリズミッ
ク・エントリに割り当て、アルゴリズムの暗号化部分を
第2のアルゴリズミック・エントリに割り当てて、第2
のアルゴリズミック・エントリのクライアントIDレジ
スタをアルゴリズミック・スヌープ装置28自体に設定
することによって実行することができる。データが第1
のアルゴリズミック・エントリに格納したパラメータに
従って復号化され、装置28が復号化したデータを第1
のメモリ範囲に格納するとき、装置28は、それ自体の
バス・トランザクションをスヌープし、第2のアルゴリ
ズミック・エントリに格納したパラメータに従ってデー
タを暗号化する。以下にこれをより詳しく述べる。
【0039】アルゴリズム・レジスタ68は、どのアル
ゴリズムを実行するかを示すアルゴリズム識別子を保有
する。最後に状態/制御レジスタ70は、アルゴリズム
の実行を制御し、他のハウスキーピング作業を実行する
様々なフラグを含む。状態/制御レジスタ70内のフラ
グは、図3のアルゴリズミック・エンジン44が、アル
ゴリズミック・エントリ54のレジスタの内容に従って
アルゴリズムを実行すべきかどうかを示す作動状態/非
作動状態フラグ、終了アドレスに達したかどうかを示す
完了フラグ、およびエラー条件が発生したかどうかを示
すエラー・フラグを含むが、これだけには限らない。
【0040】図5は、図3のアルゴリズミック・スヌー
プ装置28のアルゴリズミック・エントリ48の結果/
一時記憶装置52のブロック図である。もちろん図5
は、アルゴリズミック・エントリそれぞれの結果/一時
記憶装置の代表例である。装置52は、累算器72、一
時記憶74、メモリ・ポインタ76、78を含む。累算
器72は、データ範囲に対するアルゴリズムの実行結果
が1つの値または少数の値であるところのチェックサ
ム、巡回符号チェック、または他の適当なコードを蓄積
するのに使用される。一時記憶74は、データを計算す
るときに中間記憶として使用される。例えば、実行され
ているアルゴリズムが128ビットの復号鍵を有する復
号化アルゴリズムである場合には、復号鍵をデータ・セ
グメントに適用する前に、任意のトランザクションから
の任意のデータ値を一時的に格納する必要がある。
【0041】累算器72は、8または16バイトなど限
られたサイズのアルゴリズムの結果を格納するのに使用
される。対照的にメモリ・ポインタ76および78は、
より長い結果を格納する可能性のあるメモリ内の領域を
指す。例えば、もし着信イーサネット・パケットが復号
化されている場合には、メモリ・ポインタ76によって
示されるメモリ範囲内に、復号化した結果を格納するこ
とができる。データの各ワードを格納するときは、ポイ
ンタ76はインクリメントされメモリの次のアドレスを
指示する。さらに、もしパケットに格納されたデータ
が、別のネットワーク・クライアントにデータを送信す
ることに備えて暗号化される場合には、アルゴリズム
は、最初にデータを復号化し次に暗号化を行う復号化/
暗号化の複合アルゴリズムであってもよく、暗号化した
データをメモリ・ポインタ78が指示するメモリ範囲内
に格納することができる。実施する場合、もし所望のア
ルゴリズムが必要とすれば、本発明は付加的なメモリ・
ポインタを追加するように選択することができる。
【0042】上述のとおり、着信データを復号化して暗
号化することを望む場合には、最初にデータを復号化
し、次に復号化したばかりのデータを暗号化する単一の
復号化/暗号化の複合アルゴリズムを使用することがで
きる。この方法は、単一のアルゴリズミック・エントリ
を用い、結果としてアルゴリズミック・スヌープ装置2
8が、復号化したストリームおよび暗号化したストリー
ムの2つのデータ・ストリームを生成する。代替的に、
2つのアルゴリズミック・エントリを使用することがで
きる。第1のエントリは、ネットワーク・クライアント
からのデータをスヌープし、図4のレジスタ66に格納
した復号鍵を用いてデータを復号化し、第1エントリの
メモリ・ポインタ76が指し示すメモリ範囲内に復号化
したデータを格納するように構成される。第2のエント
リは、アルゴリズミック・スヌープ装置28自体が書き
込んだ復号化したデータをスヌープするように構成され
る。第2エントリによってスヌープされたデータは、第
1エントリのメモリ・ポインタ76が指し示すメモリ位
置に書き込まれた、復号化したデータである。第2エン
トリのレジスタ68に格納されたアルゴリズムIDが、
暗号化アルゴリズムを呼び出し、暗号化されたデータ
は、第2エントリのメモリ・ポインタ76が指し示すメ
モリ位置に格納される。異なる復号化アルゴリズムと暗
号化アルゴリズムを、復号化/暗号化の複合アルゴリズ
ムに組み合わせることは現実的ではないので、この方法
が好ましい。
【0043】任意の暗号化アルゴリズムは、メモリ・ポ
インタを適当に使用して大きなデータ・ブロックに対し
て動作することができることに留意されたい。しかしな
がら他の暗号化アルゴリズムは、1回に数バイトで動作
するにすぎず、この場合には結果を累算器72に格納
し、図2のシステムCPU30が定期的に取り出すこと
ができる。
【0044】図6は、図3のアルゴリズミック・スヌー
プ装置28の一部である図3のアルゴリズミック・エン
ジン44のブロック図である。アルゴリズミック・エン
ジン44は、バス要素分離装置80、アルゴリズミック
・エントリ一致装置82、およびアルゴリズム計算装置
84を含む。
【0045】アルゴリズミック・スヌープ装置28は、
全てのバス・トランザクションをスヌープする。したが
って、全てのバス・トランザクションが共有バス42を
介してバス要素分離装置80に与えられる。バス要素分
離装置80は各バス・トランザクションを、アドレス、
クライアントID、読取り/書込み信号、およびデータ
に分離する。アドレスはアドレス・バス86上に、クラ
イアントIDはクライアントIDバス88上に、読取り
/書込み信号はR/W線90上に、およびデータはデー
タ・バス98上に与えられる。もしこの全ての情報が共
有バス42の個々の線によって与えられる場合には、装
置80の実施は容易であることに留意されたい。しかし
ながら、共有バス42が多重化トランザクションまたは
パイプライン・トランザクション(pipelined
transaction)を使用する場合には、装置
80は、デマルチプレクサ、ラッチ、および同様のロジ
ックを用いて実施する必要がある。所与の任意のバス・
アーキテクチャに対して、バス要素分離装置80をどの
ように実施すべきかを、当業者なら理解するだろう。
【0046】アドレス・バス86、クライアントIDバ
ス88、およびR/W線90は、アルゴリズミック・エ
ントリ一致装置82に提供される。アルゴリズミック・
エントリ一致装置82は、各バス・トランザクションに
対してアルゴリズミック・エントリを処理する必要があ
るかどうかを判断する。所与の任意のバス・トランザク
ションに対して、複数のアルゴリズミック・エントリが
呼び出されてもよいことに留意されたい。特定のデータ
・ストリームを搬送するバス・トランザクションは連続
する必要がないことにも留意されたい。言い換えると、
トランザクションはインターリーブすることができる。
例えば特定のアルゴリズミック・エントリは、他の組の
バス・クライアント間でデータを搬送する他のトランザ
クションのために、せいぜい20か30のバス・トラン
ザクションに1度しか呼び出されない。
【0047】上述のとおり装置82は、バス要素分離装
置80から、アドレス、クライアントID、およびトラ
ンザクションの読取りまたは書込み状態を受け取る。装
置82は、クライアントIDレジスタ56、開始アドレ
ス・レジスタ58、終了アドレス・レジスタ60、読取
りまたは書込みフラグ62、および状態/制御レジスタ
70の内容を図3の各アルゴリズミック・エントリから
バス92を介して受け取る。状態/制御レジスタ70に
基づいて作動する各アルゴリズミック・エントリに対し
て、装置82は、トランザクションからのクライアント
IDがアルゴリズミック・エントリのクライアントID
レジスタ56に格納したクライアントIDと一致するか
どうか、トランザクションのアドレスがアルゴリズミッ
ク・エントリの開始アドレス・レジスタ58および終了
アドレス・レジスタ60によって指定される範囲内に当
たるかどうか、およびトランザクションの読取り/書込
み状態がアルゴリズミック・エントリの読取りまたは書
込みフラグ62に格納された読取り/書込みフラグに一
致するかどうかを判断する。もしこの3つのパラメータ
全てが、任意の(または複数の)アルゴリズミック・エ
ントリに一致する場合には、装置82は、作動状態のア
ルゴリズミック・エントリ・バス94の対応する線をア
サートにすることによって、適当なアルゴリズミック・
エントリを処理すべきであることを指示する。
【0048】アルゴリズミック・エントリ一致装置82
は、「エントリ当たりの部分ワード」バス96も提供す
る。各エントリに対してバス96は、データ・バス98
によって搬送されるメモリ・ワード全体に対してアルゴ
リズムを実行すべきか、または単にこのワードの一部に
対して実行すべきかを示す。バス96によって搬送され
る情報は、上述のとおり、開始アドレスレジスタ58お
よび終了アドレス・レジスタ60に格納されたワード・
オフセット情報から得られる。もちろんレジスタ58お
よび60は、アルゴリズム計算装置84に直接提供する
こともでき、この場合装置84内で同じ情報が生成され
るので、バス96は必要ない。
【0049】作動状態のアルゴリズミック・エントリ・
バス94が指定する作動状態の各アルゴリズミック・エ
ントリに対して、アルゴリズム計算装置84は、データ
・バス98によって搬送されるトランザクション・デー
タ、図4のアルゴリズミック・エントリ制御情報レジス
タ54および図5の結果/一時記憶装置52に格納され
たオペランドに基づきアルゴリズムを実行する。アルゴ
リズム計算装置84は、作動状態の各アルゴリズミック
・エントリに対して、暗号鍵レジスタ64、復号鍵レジ
スタ66、およびアルゴリズミックIDレジスタ68を
バス100を介して受け取る。状態/制御レジスタ70
も各アルゴリズミック・エントリと装置84の間でバス
100を介して搬送され、任意の状態または制御情報を
提供し、装置84が任意の誤りフラグまたは状態フラグ
をレジスタ70に設定することができるようにする。ア
ルゴリズム計算装置84は、作動状態の各アルゴリズミ
ック・エントリに対してバス102を介して累算器7
2、一時記憶74、メモリ・ポインタ76、78にアク
セスすることもできる。
【0050】作動状態のアルゴリズミック・エントリが
提供する情報およびデータ・バス98が提供するトラン
ザクション・データに基づき、装置84は、作動状態の
各アルゴリズミック・エントリに対してアルゴリズムを
実行する。アルゴリズム計算装置84の実際の実施は、
もちろんサポートされるアルゴリズムの種類に基づき変
化する。例えば、本発明が単にチェックサムを計算する
ためにだけ使用される場合には、装置84は、トランザ
クション・データを累算器72の内容に加算して、その
結果を累算器72に戻して格納する一連の加算器に過ぎ
ない。しかしながら、もし装置84が暗号化アルゴリズ
ムを提供する場合には、この装置84は明らかにより複
雑になる。どのように装置84を実施して所望のアルゴ
リズムをサポートすべきかを、当業者なら理解するだろ
う。
【0051】装置84によってサポートされるアルゴリ
ズムは、ハードウェアにおいて実施されてもよいし、ま
たは装置84がプログラム可能な要素を備えてソフトウ
ェア・コードまたはマイクロコードによってアルゴリズ
ムを実施してもよいことに留意されたい。もしアルゴリ
ズムがソフトウェア・コードまたはマイクロコードとし
て実施される場合には、そのコードを、装置84のBI
OSルーチン内に格納するか、図2のシステムCPU3
0の制御の下で装置84に格納することもできる。
【0052】最後に上述のとおり、装置84によってサ
ポートされるアルゴリズムのいくつかは、そのようなア
ルゴリズムによって生成されるデータ・ストリームがア
ルゴリズミック・エントリ内に格納するには大きすぎる
ので、図2のシステム・メモリ32にデータを格納する
ことを必要とする。このことは、図5のメモリ・ポイン
タ76、78に関連して上述した。そのようなデータは
バス104によって共有バス42に搬送され、アルゴリ
ズミック・スヌープ装置28によって他の任意のバス・
クライアントと全く同様にメモリに格納される。より詳
しく以下に述べるとおり、アルゴリズミック・スヌープ
装置28は、アルゴリズミック・エントリの内容に従っ
てそれ自体のデータをスヌープすることができる。
【0053】アルゴリズミック・スヌープ装置28の実
施について前述したが、図2のシステムCPU30によ
って実行されるソフトウェアが、最もよく装置28を利
用することができる方法を理解することは有用である。
特定の例を与える前に、データをバス・クライアント間
で転送するような転送中に、装置28がアルゴリズムを
計算することを最初に考える。転送が始まる前に、ソフ
トウェアは、各転送に対してどのアルゴリズムを計算す
る必要があるのかを知っている場合もあれば知らない場
合もある。このため、装置28によって提供されるアル
ゴリズムの全てをソフトウェア・ルーチンとして利用可
能とすることは有利である。
【0054】例えば、TCP/IPプロトコルを使用す
るイーサネット・アダプタによって受信されたデータ・
ストリームが、メモリ内に格納されていると考える。第
1のパケットが到着するとき、CPU30は、どのプロ
トコルがパケット内にカプセル化されているか(推測す
ることはできるが)わからない。このため、アルゴリズ
ムはアルゴリズミック・スヌープ装置28内に構成され
ず、このパケットに関するチェックサムを計算しない可
能性がある。したがってTCP/IPスタックを実施す
るソフトウェア・モジュールが、第1のパケットに対し
てTCP/IPチェックサムを計算しなければならな
い。その後、このモジュールは後続のパケットが同じデ
ータ・ストリームの一部であると予測し、後続の各パケ
ットに対してチェックサム計算を実行するようにアルゴ
リズミック・エントリを構成する。もしこのモジュール
の予測が間違っている場合には、このモジュールは単に
ソフトウェア・ベース型式の適当なアルゴリズムを使用
する。しかしながら、もし予測が正しい場合には(ほと
んどいつもそうだが)、本発明によって提供される有利
な性能が実現する。
【0055】TCP/IPパケットを含むイーサネット
・パケットを受信するとき、通常パケット全体が到着す
るまでイーサネット・パケットの終わりが分からないこ
とにも留意されたい。この状況では、MAC CRCな
どのチェックサムがTCP/IPパケットの終わりを数
バイト超えて含む可能性がある。当技術分野で知られ、
上述したとおり、ソフトウェア・モジュールは、このチ
ェックサムを「グロス・チェックサム」として扱い、
「差分チェックサム」を引いてTCP/IPチェックサ
ムに到達することによって、この状況を処理することが
できる。
【0056】着信データに対してアルゴリズムを実行す
ることは全く容易であり、必要なアルゴリズムを予測す
るソフトウェア・モジュールが、単純にスヌープ装置2
8のアルゴリズミック・エントリを構成してアルゴリズ
ムを実行する。しかしながら、発信データに対してアル
ゴリズムを実行することはより複雑となる。TCP/I
Pパケットがチェックサムを含むTCP/IPヘッダを
含むと考える。このTCP/IPヘッダはTCP/IP
データより前に来る。したがってネットワーク・クライ
アントがパケットを送出するとき、パケット全体を送信
する前にチェックサムが分かっていなければならない。
この結果TCP/IPに関してアルゴリズミック・スヌ
ープ装置28は送信中にチェックサムを生成することが
できない。なぜなら装置28がチェックサムの計算を終
える前に、チェックサムは既に送信されているからであ
る。
【0057】この問題に対処する方法はいくつかある。
本発明によって可能な最も重要な利点の1つは、必然的
に発生するメモリ転送にアルゴリズムの実行を「上乗せ
(piggy backed)」することができること
である。したがって、発信パケットが記憶装置40に格
納される場合において、装置40が発信データを別のバ
ス・クライアントに送信するのに備えてそのパケットを
システム・メモリ32に書くときに、アルゴリズミック
・スヌープ装置28は構成され、記憶装置40のメモリ
・トランザクションをスヌープすることができる。同様
にネットワーク・クライアント34からの着信データ
が、図2のネットワーク・クライアント36への発信デ
ータとして直ちに送信されることを、ソフトウェア・モ
ジュールが検出すると仮定する。これは、コンピュータ
からの着信データがプリンタへの発信データとして直ち
に送信されるプリント・サーバにおいて一般的である。
この状況において、ソフトウェア・モジュールは、1つ
のアルゴリズミック・エントリを構成して着信データ・
パケットに必要なチェックサムを計算することができ、
さらに別のアルゴリズミック・エントリを構成して発信
データに必要なチェックサムを計算することができる。
したがって、データを受信するネットワーク・クライア
ントがこの着信データをメモリ内にDMAするときに、
両方のチェックサムは計算される。
【0058】たとえ、アルゴリズムの実行を「上乗せ」
することができるメモリ転送を識別することが不可能で
あると仮定しても、システムCPU30は依然としてア
ルゴリズミック・スヌープ装置28を構成することがで
き、発信パケットを含むメモリ範囲に関してメモリ読取
りトランザクションをスヌープすることができる。CP
U30はパケットを含む全てのメモリ位置を単純に読み
取り、次に装置28からチェックサムを取り出す。この
方法はデータに「接触」することを必要とするが、CP
Uサイクルは依然節約される。なぜなら、CPUは単に
このデータを読むにすぎず、チェックサムは装置28に
よって並列に計算されるのでチェックサムを計算する必
要がないからである。
【0059】最後の例として、図2のシステム26がH
ewlett−PackardのJetDirectプ
リント・サーバであり、ネットワーク・クライアント3
4がイーサネット・アダプタ、ネットワーク・クライア
ント36がHomePNAアダプタであると考える。イ
ーサネット・アダプタがコンピュータにイーサネット接
続を介して接続し、HomePNAアダプタがプリンタ
にHomePNA接続によって接続されており、Hom
ePNA接続を介して送信されるデータは暗号化されな
ければならず、両方のアダプタを介してデータを送信す
るのにTCP/IPを使用すると仮定する。さらにコン
ピュータがプリンタにデータを送信していくつかのパケ
ットが送信され、上述のデータ・ストリームが作動状態
であることをシステムCPU30によって実行した関連
ソフトウェア・モジュールが検出したと仮定する。最初
にシステムCPU30は着信パケットを受信するメモリ
内の領域を規定する。そのようなメモリ領域はしばし
ば、当技術分野で「バッファ」と呼ばれ、各バッファは
通常数キロバイトである。この例で、CPU30が規定
したバッファを「第1バッファ」と呼ぶ。
【0060】次いでCPU30は着信パケットに対して
TCP/IPチェックサムを計算するように第1アルゴ
リズミック・エントリを構成する。クライアントIDレ
ジスタ56が、ネットワーク・クライアント34を参照
するように設定され、開始アドレス・レジスタ58が、
TCP/IPデータの先頭が格納されていると期待され
るバッファ内の位置を参照するように設定され、終了ア
ドレス・レジスタ60が、このバッファの最後に設定さ
れ、読取りまたは書込みフラグ60が、「書込み」に設
定され、アルゴリズミックIDレジスタ68が「チェッ
クサム」に設定される。最後に状態/制御レジスタ70
がエントリが作動状態であることを示すように設定され
る。
【0061】次にCPU30は、HomePNAアダプ
タにデータを送信するのに備えてこのデータを暗号化す
るように、第2アルゴリズミック・エントリを構成す
る。再度、クライアントIDレジスタ56が、ネットワ
ーク・クライアント34を参照するように設定され、T
CP/IPデータの先頭が格納されていると期待される
バッファ内の位置を参照するように開始アドレス・レジ
スタ58が設定され、終了アドレス・レジスタ60が、
このバッファの最後に設定され、読取りまたは書込みフ
ラグ60が、「書込み」に設定される。さらに暗号鍵が
暗号鍵レジスタ64に格納され、アルゴリズムIDレジ
スタが適当な暗号化アルゴリズムを指示するように設定
され、図5のメモリ・ポインタ76が、暗号化データを
アルゴリズミック・スヌープ装置28から受信するため
に、システム・メモリ32の第2バッファを指し示すよ
うに設定され、状態/制御レジスタ70が、エントリが
作動状態であることを指示するように設定される。
【0062】最後にCPU30は、HomePNAアダ
プタに暗号化されたデータを送信するのに備えて暗号化
されたデータのTCP/IPチェックサムを計算するよ
うに、第3アルゴリズミック・エントリを構成する。暗
号化されたデータがアルゴリズミック・スヌープ装置2
8によって生成されるので、装置28はチェックサムを
計算するために、それ自体のトランザクションをスヌー
プするように構成されなければならない。したがって、
クライアントIDレジスタ56は、アルゴリズミック・
スヌープ装置28を参照するように設定され、開始アド
レス・レジスタ58は、第2アルゴリズミック・エント
リのメモリ・ポインタ76と同じ位置(第2バッファの
先頭)を参照するように設定され、終了アドレス・バッ
ファ60は、第2バッファの最後に設定され、読取りま
たは書込みフラグ60は、「書込み」に設定され、アル
ゴリズミックIDレジスタ68は「チェックサム」に設
定される。最後に状態/制御レジスタ70は、エントリ
が作動状態であることを示すように設定される。
【0063】3つのアルゴリズミック・エントリが全て
構成されたので、イーサネット・アダプタ(この例では
ネットワーク・クライアント34)がデータ・パケット
を受信し始めると仮定する。データを受信するとき、イ
ーサネット・アダプタは、このデータを第1バッファに
DMAし、アルゴリズミック・スヌープ装置28は各ト
ランザクションをスヌープする。TCP/IPデータの
第1ワードを搬送するメモリ・トランザクションが発生
するとき、図6のアルゴリズミック・エントリ一致装置
82は、第1および第2アルゴリズミック・エントリが
作動状態であることを検出する。第2アルゴリズミック
・エントリを処理するとき、アルゴリズミック・スヌー
プ装置28は、(この時点か、またはイーサネット・ア
ダプタからあと数ワードを受信した後で)バス・トラン
ザクションを起動して、暗号化データを第2バッファに
格納する。装置28は、それ自体のトランザクションを
スヌープし、第2アルゴリズミック・エントリによって
生成したトランザクションによって、第3アルゴリズミ
ック・エントリが作動状態になり、これによって暗号化
された発信データに対するTCP/IPチェックサムを
計算する。
【0064】この処理は、パケットの全てのバイトが受
信されるまで、パケットの各ワードに対して継続する。
このパケットが受信されたとき、適当なソフトウェア・
モジュールが3つのアルゴリズミック・エントリを非作
動状態にし、これによってこれらのエントリを別の計算
に利用可能とする。この適当なソフトウェア・モジュー
ルは、第1のアルゴリズミック・エントリの図5の累算
器72にもアクセスして、着信TCP/IPチェックサ
ムを取り出す。この取り出されたチェックサムは、次い
でパケットの保全性を照合するために、パケットに含ま
れていたチェックサムと比較される。
【0065】次に、発信TCP/IPチェックサムが、
第3アルゴリズミック・エントリの累算器72から取り
出される。この発信チェックサムを、第2バッファの適
当な位置に詰め込むことができ、第2バッファに格納さ
れた暗号化されたデータを送信するようにHomePN
Aアダプタに信号を送ることができる。
【0066】従来の技術に対して本発明の可能な多くの
利点を考慮されたい。着信パケットが受信されるやいな
や、着信チェックサムおよび発信チェックサムが提供さ
れ、データが暗号化され、発信パケットの送信準備は整
う。全ての計算が着信データの受信と並列に行われ、ア
ルゴリズムを実行する特別なトランザクションはほとん
ど必要ない。アルゴリズミック・スヌープ装置28がメ
モリ・トランザクションを生成するとき(データを暗号
化するときなど)でさえ、これらのトランザクション
は、このネットワーク・クライアント(または他のバス
・クライアント)によって生成されたトランザクション
と共にインターリーブされ、このネットワーク・クライ
アントの受信速度を減速しない。上記例で、たとえ着信
データが暗号化されていても、上述のとおりか、または
第4のアルゴリズミック・エントリを構成することによ
って、このデータを、復号化/暗号化の複合アルゴリズ
ムを用いて容易に復号化することが可能なことに留意さ
れたい。
【0067】対照的に従来技術の手法は、データに数回
「接触」することを必要とする。いくつかの従来技術の
手法は、「実行中」に様々なアルゴリズムを計算するこ
とを可能にするが、本発明ほど包括的かつ効果的にこの
問題にアプローチしたものはない。本発明により、必然
的に発生するトランザクションをスヌープすることによ
って、多数のアルゴリズムを並行して計算することがで
きるようになる。
【0068】さらに本発明は、非常に柔軟である。存在
する任意のバスからのトランザクション(本発明のアル
ゴリズミック・スヌープ装置自身のものでさえ)はアル
ゴリズム計算の基盤を形成することができる。このため
本発明は、メモリからメモリへの転送、ネットワーク・
アダプタからメモリへの転送、ディスクからメモリへの
転送などに対してアルゴリズムを実行することができ
る。
【0069】上記例において、アルゴリズミック・スヌ
ープ装置28のアルゴリズミック・エントリは、バス・
クライアント間のデータを転送するのに備えてCPU3
0によって構成された。しかしながら他の実施形態で
は、この最低限の作業でさえ無くすことができる。図2
の各バス・クライアントに対して、アルゴリズミック・
スヌープ装置28が「バス・クライアント構成ダイアロ
グ監視装置」を含むと仮定する。各監視装置は、この監
視装置が指し示すバス・クライアントでターゲットにさ
れた構成ダイアログをスヌープすることを担い、スヌー
プされた構成ダイアログに基づきアルゴリズミック・エ
ントリを可能な限り構成する。例えばシステムCPU3
0が、クライアント34を指示するネットワーク・クラ
イアント34のダイアログと連動して、メモリ・アドレ
スAとBによって範囲指定されたバッファに次の着信パ
ケットを格納すると仮定する。ネットワーク・クライア
ント34に示された監視装置は、このダイアログをスヌ
ープし、着信パケットに対して(チェックサムなどの)
アルゴリズムを実行するようにアルゴリズミック・エン
トリを構成する。このパケットが受信された後に、CP
U30は単にアルゴリズミック・スヌープ装置28から
アルゴリズムの結果を取り出す。
【0070】上述のとおり、開始アドレス・レジスタ5
8および終了アドレス・レジスタ60はそれぞれ3つの
値を格納することが望ましい。すなわち、バッファの境
界を規定する絶対アドレス、アルゴリズムを実行すべき
範囲の開始または終了アドレスを示すオフセットまたは
絶対アドレス、およびワード内の開始位置または終了位
置を示すワード・オフセットである。これが望ましい理
由の1つは、上述のようにもし構成ダイアログをスヌー
プする監視装置がアルゴリズミック・エントリを構成す
る場合、スヌープされた値はバッファ境界を含むからで
ある。対照的に、アルゴリズムを実行すべき開始または
終了アドレスを指し示すオフセットまたは絶対アドレ
ス、およびワード内の開始または終了位置を指し示すワ
ード・オフセットは、プロトコルに基づく傾向がある。
【0071】例えば、CPU30が、次の着信パケット
をメモリ・アドレスAとBによって範囲指定されたバッ
ファに格納するようにネットワーク・クライアント34
を構成すると仮定する。さらに着信パケットは全てTC
P/IPプロトコルまたはNetBEUIプロトコルを
用いてデータを送信すると仮定する。構成ダイアログを
スヌープする監視装置は、単に1つのダイアログを監視
するに過ぎない。しかしながら監視装置は、各プロトコ
ルに1つずつ、2つのアルゴリズミック・エントリを構
成することができる。このバッファ境界は、各エントリ
に対するメモリ・アドレスAとBであるが、アルゴリズ
ムが実行される範囲はプロトコルで変動する。
【0072】一般に本発明(および特に上述の実施形
態)によって可能になる本当に素晴らしい利点の1つ
は、本発明が単一のデータ・ストリームに対して多数の
アルゴリズムを同時に計算することができることであ
る。したがってアルゴリズミック・スヌープ装置28
は、使用されることが期待される全てのプロトコルおよ
びデータ・ストリーム・フォーマットに対してアルゴリ
ズムを実行するように構成される。例えばパケットを受
信した後に、使用されるプロトコルを判断するためにバ
ッファ内のこのパケットが調査される。その後CPU3
0は、プロトコルに対応するアルゴリズミック・エント
リから適当な値を取り出す。使用することのできる全て
のアルゴリズムが、性能を犠牲にすることなく実行され
る。
【0073】本発明は、パケットのチェックサムを計算
する従来技術の方法に比べ、大きな性能の利点を提供す
る。例えば本発明は、メモリからメモリへのハードウェ
アに基づくチェックサム機器に対して約30%の改善を
することができ、第08/937912号特許出願によ
って開示されたフライバイのチェックサムの方法に対し
て約15%の改善を可能にする。
【0074】本発明が有利に適用される他の応用を、当
業者なら理解するであろう。例えば本発明は、データを
メモリ内に転送するときに、MPEGビデオ・データ・
ストリームを復号するのに使用することができる。最後
に本発明は、共有バス上の「転送中」のデータに対して
アルゴリズムを実行することのできる、全く新しい種類
のデータ処理の可能性を提供する。
【0075】好ましい実施形態について本発明を述べた
が、本発明の精神および範囲を逸脱することなく、形態
および詳細に変更を加えることができることを、当業者
なら理解するであろう。
【0076】本発明は例として次の実施形態を含む。
【0077】(1)共有バスに接続したアルゴリズミッ
ク・スヌープ装置であって、バス・トランザクションに
よって搬送されるデータに対してアルゴリズムを実行す
ることが可能であり、特定のバス・トランザクションに
関してアルゴリズムを計算すべきかどうかを指示する情
報を、それぞれに保持する1つまたは複数のアルゴリズ
ミック・エントリと、バス・トランザクション内に搬送
される情報と各アルゴリズミック・エントリ内に保持さ
れる情報とを比較して、前記アルゴリズミック・エント
リをこのトランザクションに関して作動すべきかどうか
を判断し、各アルゴリズミック・エントリに関するバス
・トランザクションによって搬送されるデータに基づい
て、作動状態のアルゴリズムを実行するアルゴリズミッ
ク・エンジンとを備えるアルゴリズミック・スヌープ装
置。
【0078】(2)各アルゴリズミック・エントリが、
結果/一時記憶装置と、一組のアルゴリズミック・エン
トリ制御レジスタを備える(1)に記載のアルゴリズミ
ック・スヌープ装置。
【0079】(3)前記一組のアルゴリズミック・エン
トリ制御レジスタが、前記バス・トランザクションのバ
ス・クライアントを識別する値を格納するクライアント
IDレジスタと、アルゴリズムを実行すべきアドレス範
囲の開始アドレスを示す値を格納する開始アドレスと、
アルゴリズムを実行すべきアドレス範囲の終了アドレス
を示す値を格納する終了アドレス・レジスタとを含む
(2)に記載のアルゴリズミック・スヌープ装置。
【0080】(4)前記一組のアルゴリズミック・エン
トリ制御レジスタが、前記バス・トランザクションが読
取り動作または書込み動作を搬送する場合に、アルゴリ
ズムを実行すべきかどうかを示す値を格納する読取りま
たは書込みフラグを含む(3)に記載のアルゴリズミッ
ク・スヌープ装置。
【0081】(5)前記一組のアルゴリズミック・エン
トリ制御レジスタが、前記アルゴリズミック・スヌープ
装置の状態および制御に関する値を格納する状態/制御
レジスタと、前記バス・トランザクションに含まれるデ
ータに対して実行すべきアルゴリズムを識別する値を格
納するアルゴリズミックIDレジスタとを含む(4)に
記載のアルゴリズミック・スヌープ装置。
【0082】(6)前記アルゴリズミック・エントリ制
御レジスタの集合が、暗号化アルゴリズムと共に使用す
べき暗号鍵を格納する暗号鍵レジスタを含む(5)に記
載のアルゴリズミック・スヌープ装置。
【0083】(7)前記結果/一時記憶装置が、1つま
たは複数のバス・トランザクションに対して計算された
アルゴリズムの結果を累積する累算器を含む(3)に記
載のアルゴリズミック・スヌープ装置。
【0084】(8)前記結果/一時記憶装置が、アルゴ
リズムを実行する間の一時データを格納する一時記憶
と、アルゴリズムの実行によって生成された結果を格納
するメモリ内の位置を指し示す1つまたは複数のメモリ
・ポインタとを含む(7)に記載のアルゴリズミック・
スヌープ装置。
【0085】(9)アルゴリズミック・スヌープ装置が
それ自体のバス・トランザクションをスヌープすること
ができる(8)に記載のアルゴリズミック・スヌープ装
置。
【0086】(10)前記アルゴリズミック・エンジン
が、クライアントID、アドレス、およびバス・トラン
ザクションからのデータを取り出すバス要素分離装置
と、前記バス・トランザクションから取り出された情報
と各アルゴリズミック・エントリ内に格納された情報を
比較して、どのアルゴリズミック・エントリが特定のバ
ス・トランザクションに対して作動状態であるかを判断
するアルゴリズミック・エントリ一致装置と、作動状態
の各エントリに対してアルゴリズムを実行するアルゴリ
ズム計算装置とを備える、(1)に記載のアルゴリズミ
ック・スヌープ装置。
【0087】
【発明の効果】本発明を用いることによって、トランザ
クションを介してデータを送信するときに、アルゴリズ
ムをデータに対して実行することができる装置および方
法が得られる。
【図面の簡単な説明】
【図1】開放型システム間相互接続(OSI)参照モデ
ルのブロック図である。
【図2】本発明によるシステムの単純化したブロック図
である。
【図3】本発明による図2のアルゴリズミック・スヌー
プ装置のブロック図である。
【図4】図3のアルゴリズミック・スヌープ装置のアル
ゴリズミック・エントリのアルゴリズミック・エントリ
制御情報レジスタのブロック図である。
【図5】図3のアルゴリズミック・スヌープ装置28の
アルゴリズミック・エントリの結果/一時記憶装置のブ
ロック図である。
【図6】図3のアルゴリズミック・スヌープ装置の一部
であるアルゴリズミック・エンジンのブロック図であ
る。
【符号の説明】
28 アルゴリズミック・スヌープ装置 44 アルゴリズミック・エンジン 46、48、50 アルゴリズミック・エントリ 52 結果/一時記憶装置 54 アルゴリズミック・エントリ制御情報レジスタ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 13/00 351 G06F 13/00 351N H04L 9/14 H04L 9/00 641 (72)発明者 ブライアン・ピー・レクイェール アメリカ合衆国95624カリフォルニア州エ ルク・グローブ、グレイト・コート 8716

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 共有バスに接続されたアルゴリズミック
    ・スヌープ装置であって、バス・トランザクションによ
    って搬送されるデータに対してアルゴリズムを実行する
    ことが可能であり、 特定のバス・トランザクションに関してアルゴリズムを
    計算すべきかどうかを指示する情報を、それぞれに保持
    する1つまたは複数のアルゴリズミック・エントリと、 バス・トランザクション内に搬送される情報と各アルゴ
    リズミック・エントリ内に保持される情報とを比較し
    て、前記アルゴリズミック・エントリをこのトランザク
    ションに関して作動すべきかどうかを判断し、各アルゴ
    リズミック・エントリに関するバス・トランザクション
    によって搬送されるデータに基づいて、作動状態のアル
    ゴリズムを実行するアルゴリズミック・エンジンとを備
    えるアルゴリズミック・スヌープ装置。
JP2000112528A 1999-04-30 2000-04-13 データ・ストリームに対してアルゴリズムを実行する装置 Pending JP2001027877A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30372499A 1999-04-30 1999-04-30
US09/303724 1999-04-30

Publications (1)

Publication Number Publication Date
JP2001027877A true JP2001027877A (ja) 2001-01-30

Family

ID=23173398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000112528A Pending JP2001027877A (ja) 1999-04-30 2000-04-13 データ・ストリームに対してアルゴリズムを実行する装置

Country Status (2)

Country Link
EP (1) EP1049292A3 (ja)
JP (1) JP2001027877A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014090385A (ja) * 2012-10-31 2014-05-15 Universal Entertainment Corp 通信システム、通信用lsi及び遊技機
WO2023119893A1 (ja) * 2021-12-23 2023-06-29 ソニーセミコンダクタソリューションズ株式会社 データ処理装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1892885B1 (de) 2002-07-18 2010-11-03 VEGA Grieshaber KG Busstation mit integrierter Busmonitorfunktion
EP1523826B1 (de) 2002-07-18 2007-12-12 VEGA Grieshaber KG Busstation mit integrierter busmonitorfunktion

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0473102B1 (en) * 1990-08-29 1995-11-22 Honeywell Inc. Data communication system with checksum calculating means
US5430842A (en) * 1992-05-29 1995-07-04 Hewlett-Packard Company Insertion of network data checksums by a network adapter
US5737638A (en) * 1995-07-14 1998-04-07 International Business Machines Corporation System for determining plurality of data transformations to be performed upon single set of data during single transfer by examining communication data structure

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014090385A (ja) * 2012-10-31 2014-05-15 Universal Entertainment Corp 通信システム、通信用lsi及び遊技機
WO2023119893A1 (ja) * 2021-12-23 2023-06-29 ソニーセミコンダクタソリューションズ株式会社 データ処理装置

Also Published As

Publication number Publication date
EP1049292A3 (en) 2002-06-05
EP1049292A2 (en) 2000-11-02

Similar Documents

Publication Publication Date Title
US6427169B1 (en) Parsing a packet header
US7159030B1 (en) Associating a packet with a flow
US6629125B2 (en) Storing a frame header
US6526446B1 (en) Hardware only transmission control protocol segmentation for a high performance network interface card
US6728265B1 (en) Controlling frame transmission
US9411775B2 (en) iWARP send with immediate data operations
US7903660B1 (en) Protocol to implement token ID mechanism for network data transfer
JP4726601B2 (ja) Pci−expressベースの入力/出力アダプタのためのエンドツーエンドのデータ完全性保護
US8495262B2 (en) Using a table to determine if user buffer is marked copy-on-write
US20060262782A1 (en) Asynchronous dual-queue interface for use in network acceleration architecture
JP2002517855A (ja) 処理タスクをソフトウエアからハードウエアにオフロードする方法およびコンピュータ・プログラム製品
JPH0678024A (ja) ネットワークアダプタシステム
US11095626B2 (en) Secure in-line received network packet processing
US20040054822A1 (en) Transferring interrupts from a peripheral device to a host computer system
JP2006325054A (ja) Tcp/ip受信処理回路及びそれを具備する半導体集積回路
US6578080B1 (en) Mechanism for run time programming of hardware resources with least interference with continued operation
WO2019190859A1 (en) Efficient and reliable message channel between a host system and an integrated circuit acceleration system
JP3988475B2 (ja) 送信装置、受信装置およびそれらの方法
CN110958216B (zh) 安全的在线网络分组传输
US20110258444A1 (en) Network Controller Decryption
JP2001027877A (ja) データ・ストリームに対してアルゴリズムを実行する装置
JP2015216450A (ja) 情報処理装置、情報処理システム及び中継プログラム
Huse et al. The Network Agnostic MPI–Scali MPI Connect
Banks et al. A High Performance Network Architecture for the HP Apollo 9000 Series 700 Workstation
Daniel Design, modeling, simulation, circuit design, and proof-of-concept for transporting PCI data over Ethernet