JP3735647B2 - マップされていないファイバーチャネルフレームの確認およびホストバッファの割当てを行う方法 - Google Patents
マップされていないファイバーチャネルフレームの確認およびホストバッファの割当てを行う方法 Download PDFInfo
- Publication number
- JP3735647B2 JP3735647B2 JP2000538472A JP2000538472A JP3735647B2 JP 3735647 B2 JP3735647 B2 JP 3735647B2 JP 2000538472 A JP2000538472 A JP 2000538472A JP 2000538472 A JP2000538472 A JP 2000538472A JP 3735647 B2 JP3735647 B2 JP 3735647B2
- Authority
- JP
- Japan
- Prior art keywords
- frame
- sequence
- current
- header
- payload
- 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 - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/356—Switches specially adapted for specific applications for storage area networks
- H04L49/357—Fibre channel switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータネットワークにおけるデータの転送に関し、さらに詳しくは、コンピュータネットワークの境界を横切るデータの非インターロックフレームのシーケンスの処理および伝送に関する。
【0002】
【従来の技術】
近年、コンピュータと周辺装置の数は急激に増大している。そのため、これら装置の相互接続方法の改良された方法が要望されている。多種類のネットワーク化のパラダイムが開発されて、異なる種類のコンピュータと周辺コンポーネントが互いに交信できるようになってきた。
【0003】
データを、このようなネットワークにそって交換できる速度に問題がある。このことは、ネットワークアーキテクチャの速度の増大がより速いコンピュータの処理速度と歩調がそろっていないから、予想外のことではない。コンピュータチップの処理力は、これまで、18ヶ月毎に約2倍になっており、強力なマシンと”帯域幅ハングリー(bandwidth hungry)”アプリケーションがどしどし生まれている。入力/出力の1秒当り1メガビットが、一般に、処理力の”MIPS”(1秒当り数百万の命令)当りに必要であると推定されている。現在、CPUは優に200MIPSを超えているので、ネットワークはこれらのいっそう速い速度に歩調をあわせることは困難である。
【0004】
広域のネットワークとチャネルは、コンピュータのネットワークアーキテクチャのために開発された二つの方法である。従来のネットワーク(例えばLANやWANのネットワーク)は、大きなフレキシビリティと比較的長い距離の通信能力(relatively large distance capability)を示す。The Enterprise System Connection(ESCON)およびthe Small Computer System Interface(SCSI)などのチャネルは、高い性能と信頼性を得るために開発されたものである。チャネルは一般に、コンピュータ間またはコンピュータと周辺装置の間の専用の短距離の接続を使用する。
【0005】
チャネルとネットワーク両者の特徴が、”ファイバーチャネル(Fibre Channel)”として知られている新しいネットワーク標準に組み込まれている。ファイバーチャネルシステムは、チャネルの速度と信頼性およびネットワークのフレキシビリティーと接続性を兼ね備えている。ファイバーチャネルの製品は、現在、非常に高いデータ速度、例えば、266Mbpまたは1062Mbpで作動可能である。これらの速度は、非圧縮、フルモーション、高品質のビデオ(uncompressed,full motion,high-quality video)などの全デマンディングアプリケーション(quite demanding application)を扱うのに十分な速度である。
【0006】
ファイバーチャネルネットワークを配備するのに一般に3種の方法がある。すなわち単純なポイントツーポイント接続;アービトレーテッドループ(arbitrated loop);および交換ファブリック(switched fabric)である。最も簡単な形態は、ポイントツーポイントの配置構成であり、この場合、二つのファイバーチャネルシステムが単純に、直接、接続されている。アービトレーテッドループは、アービトレーションによって、帯域幅に対する共用アクセスを提供するファイバーチャネルリングの接続である。交換ファイバーチャネルネットワーク(”ファブリック”と呼称される)は、クロスポイントスイッチングの利益を高めることによって、最高の性能を発揮する。
【0007】
上記ファイバーチャネルのファブリックは、従来の電話システムとほぼ同様に作動する。このファブリックは、ファイバーチャネルのインターフェースポートをもっている、ワークステーション、PCS、サーバ、ルータ、メインフレームおよび記憶装置など各種の装置を接続できる。これらの装置は各々、フレームのヘッダ中の宛先ポートのアドレスに入ることによって、該ファブリックを”呼出す”オリジネーションポート(origination port)を持つことができる。このファイバーチャネルの仕様は、このフレームの構造を定義する(このフレーム構造は、以下に考察しかつ本発明が扱うデータ転送の問題を提起する)。上記ファイバーチャネルファブリックは所望の接続をセットアップするすべての作業を行うのでフレームのオリジネータ(frame originator)は、複雑なルーチングアルゴリズムに関与する必要がない。セットアップすべき複雑な相手固定接続(PVC)が全くない。ファイバーチャネルファブリックは、1600万を超えるアドレスを扱うことができるので非常に大きなネットワークを収容できる。このファブリックはポートを追加するだけで拡大することができる。完全に構成されたファイバーチャネルのネットワークの集合体データの速度(aggregate data rate)は、1秒当りテラビットの範囲内たりうる。
【0008】
ファイバーチャネルの接続法の三つの基本的なタイプ各々を、図1に示す。なお、各種図面中の同じ参照番号と名称は同じ要素を示す。図1はファイバーチャネルの技法を使用するいくつもの方式を示している。特に、メインフレームを互いに接続するポイントツーポイントの接続100が示されている。ディスク記憶ユニットを接続するファイバーチャネルのアービトレーテッドループ102が示されている。ファイバーチャネルのスイッチファブリック104は、ワークステーション106、メインフレーム108、サーバ110、ディスク駆動装置112およびローカルエリアのネットワーク(LAN)114を接続している。このようなLANとしては、例えばイーサーネット(Ethernet)、トークンリング(Token Ring)およびFDDIのネットワークがある。
【0009】
ANSIの仕様(X3.230-1994)に、ファイバーチャネルネットワークが定義されている。この仕様によれば、ファイバーチャネルの機能は、五つの層に配分されている。図2に示すように、ファイバーチャネルの五つの機能層は、FC−0層:物理的媒体層;FC−1層:コーディングおよびエンコーディングを行う層;FC−2層:実転送機構(フレーミングプロトコルとノード間のフロー制御を含む);FC−3層:共通サービスの層;およびFC−4層:上層のプロトコルである。
【0010】
ファイバーチャネルは、比較的速い速度で作動するとはいえ、さらに速度を上げて、いっそう速いプロセッサの要求を満たすことが望ましい。これを実行する一方法は、インターフェースポイントで起こる遅延を除くかまたは小さくする方法である。この遅延の一つは、フレームを、FC−1層からFC−2層へ転送する間に生じる。このインターフェースにおいて、ファイバーチャネルのデータリンクでリンクされた装置はファイバーチャネルのフレームをシリアルに受信する。プロトコルエンジンがこれらのフレームを受信して、これらフレームを次の層すなわち図2に示すFC−2層で処理する。上記プロトコルエンジンの機能には、各フレームを確認する機能;各フレームをホスト(ホストコンピュータ)に転送するため、ダイレクトメモリアクセス(DMA)の操作を待ち行列に入れる(キューする)機能;およびトランスミットフレームを構築する機能がある。各フレームはヘッダとペイロード部分をもっている。
【0011】
フレームを扱う通常の方法は一般に、フレームバイフレームベース(frame-by-frame basis)でホストCPUが行う方法である。例えば、受信されたフレームの確認およびDMAの操作と肯定応答のセットアップは一般に、ホストCPUに行わせる。これは、フレームの伝送と受信の速度を制限して、ホストCPUが他のタスクを実行することを阻止する。さらに、ソフトウェアプロトコル”スタック”を有するホストCPUは、ファイバーチャネルのような速いネットワークと歩調を合わせることは困難である。
【0012】
一般に、ファイバーチャネルでは、受信されたフレームはすべて、プロトコルエンジンが、受信されたフレームのヘッダを、予想値に対して確認できるコンテキスト(context)にマップされる。特に、大部分のクラスのファイバーチャネルのサービスには、トランスミッタとレシーバに、”RXID”と”OXID”のヘッダフィールドを用いて一連のフレームを交換局(exchange)に対しマップさせるインターロッキングフレームがある。しかし、特定のクラスのサービスとプロファイル(例えば、クラス3、TCP/IP)では、ファイバーチャネルのフレームのシーケンスはインタロックされない。したがって、受信されたフレームは、結合したコンテキスト(associated context)をもっていないので、プロトコルエンジンはヘッダを確認できない。通常の設計では、プロトコルエンジンは、ホストCPUがヘッダを確認して、ペイロードデータを適正なホストバッファにコピーできるように、受信されたフレームヘッダおよびペイロードの両方を、ホストメモリに送らねばならない。フレームのホストメモリへの転送は各々、ホストCPUに対する割込みを起こす。この方法は、ホストに負担をかけ、ヘッダ記憶用のホストのバッファスペースを消費し、そして転送バス帯域を浪費する。
【0013】
図3は、マップされていないフレームの一般的な従来技術のホストデータ構造体の簡略化したブロック図である。第一フレーム300と第二フレーム302は、ネットワークデータリンクから受信したシリアルデータからアセンブルされる。各フレームはヘッダとペイロード部分からなり、それぞれ、該ブロック図中に、”HDR1”と”PL1”および”HDR2”と”PL2”として示してある。受信されたフレームは結合したコンテキストをもっていないので、プロトコルエンジンによって確認することができない。したがって、各フレーム300と302の受信されたフレームのヘッダとペイロードのデータの両方は、ヘッダの確認と、結合したペイロードデータの適正なバッファ記憶とを行うためにホストメモリ304に送らなければならない。ホストメモリ304に記憶されたフレームは図に示すように、簡単に連結される。次いでホストは、各フレームのヘッダを逐次検査して、フレームが現行シーケンス(current sequence)の一部であるかどうかを確認する。
【0014】
【発明が解決しようとする課題】
上記のことからみて、本発明の目的は次のとおりである。すなわち、ファイバーチャネルのネットワークなどの高速ネットワークにおけるデータ転送処理速度を上昇すること;フレームバイフレームベースで作動するホストCPUを関与させることなしに、データフレームのプロトコルエンジンによる処理をスピードアップできる技法を提供すること;介入ヘッダを除くためにホストCPUがペイロードデータをコピーする必要をなくすこと;フレームの完全なまたは一部のシーケンスが受信されたときにのみホストの割込みを発生させることによって、ホストの割込みの数を減らすこと;および浪費されるバス帯域、およびマップされていないフレームに対し全てのフレームヘッダを記憶するのに必要なホストメモリをなくすことである。
【0015】
【発明の概要】
本発明は、コンピュータのデータリンクにおけるデータのフレームの処理と転送に関する。本発明は、プロトコルエンジンに、特定の環境下で、マップされていないフレームに対するヘッダの確認を実行させる。
【0016】
さらに詳しく述べると、本発明には、ヘッダとペイロードを各々含み、結合したコンテキスト(前後関係)を有さないマップされていないフレームを確認する方法が含まれており、その方法は以下のステップを含んでなる方法である。すなわち、マップされていないフレームを受信し;その受信したマップされていないフレームである現行フレームがシーケンス内の第一フレームであるかどうかを確認し、そうであれば現行フレームのヘッダとペイロードをバッファ内に保存し(退避させ)、そしてそうでなければ、その現行フレームが、シーケンス内の次の予想されるフレームであるかどうかを確認し;現行フレームがシーケンス内の次の予想されるフレームである場合、現行フレームのペイロードを、バッファ内の先行フレーム(prior frame)のペイロードに続く次の部分に保存し(退避させ);現行フレームがシーケンス内の最後のフレームであるかどうかを確認し、そうであれば、完全なシーケンスを受信したことを示すメッセージをホストに送り;現行フレームがシーケンス内の次の予想されるフレームでない場合は、現行フレームのヘッダとペイロードを前記バッファ内に保存し(退避させ)、そして、部分シーケンスを受信したことを示すメッセージをホストに送るステップを含んでなる方法である。完全なシーケンスが受信されるか、または受信された現行フレームが先に受信されたフレームと矛盾した場合(例えば、受信された現行フレームのシーケンスアイデンティフィケーション、ソース識別子(source identifier)、またはシーケンスのカウントが予測値と一致しない場合)、即ち一部のシーケンスが受信されると、ホストCPUが割込まれる。次に、ホストCPUはそのシーケンスの連結されたペイロードを処理する。本発明は、ファイバーチャネルのネットワーク内のTCP/IPフレームを処理するのに特に有用である。
【0017】
本発明の一つ以上の実施態様の詳細を、添付図面と以下の説明によって述べる。本発明の他の特徴、目的、および利点は、以下の説明と図面および特許請求の範囲から明らかになるであろう。
【0018】
【発明の実施の形態】
本発明は、ホストへの割込みの数を減らすことによって、ファイバーチャネルなどの高速データリンクでのホストの性能を改善する。本発明の好ましい実施態様は、完全なシーケンスまたは部分シーケンスの第一フレームに対する”静的”フレームヘッダフィールドを保存し、”動的”フレームヘッダフィールドに対する次に予想される値を算出して、その”静的”および”動的”のヘッダフィールドを、次に受信されるフレームの対応するフィールドと比較する。前記次のフレームが予想値と一致すれば、次のフレームのヘッダは、ホストメモリに書き込む必要がない。
【0019】
図4は好ましい通信処理システムを示す。シリアルデータがファイバーチャネルの様なデータリンク400にそって受信される。フレームは一般に、三つの部分、すなわち、プリアンブル、データまたは”ペイロード”の部分、およびトレーラの部分を含んでいる。例えば、ファイバーチャネルのデータリンクの場合、フレームは、フレーム開始(SOF)ワード(4バイト);フレームヘッダ(6バイト)、ゼロ〜2112のペイロードバイトおよび周期冗長検査(CRC)ワード(4バイト)を含むデータ部分;およびフレーム終了(EOF)ワード(4バイト)を含んでいる。そのフレームのヘッダを使用して、リンクアプリケーションを制御し、装置プロトコルの転送を制御し、そして行方不明または異常フレームを検出する。CRCのワードは、データ崩壊(data corruption)などの伝送時の問題があるかどうか、または、フレームのある部分が伝送中に損失したかどうかを示す。
【0020】
データリンク400から受信されたフレームは、入ってくるシリアルデータを、デコード及びパラレル化してワードにし、次いでそれらのワードを、フレームにアセンブルするNL−ポート402によって処理される。また、NL−ポート402は、受信された各フレームについてCRCワードを検査し、次に得られた”良−不良(good-bad)”のCRC状態標識を、EOFワードから生じるEOF状態ワード内の他の状態情報ビットに付加する。NL−ポート402は、次に、受信フレームの先入れ先出し(FIFO)バッファ404中に各フレームを書き込む。好ましい受信フレームFIFOバッファモジュール404のさらなる詳細事項は、本発明の譲受人と同じ譲受人に譲渡された、1997年9月23日付け出願の、発明の名称が”RECEIVE FRAME FIFO WITH END OF FRAME BYPASS”の同時係属中の米国特許願第08/935,898号に記載されている。なお、この特許の開示事項は本願に援用するものである。類似の方式で、NL−ポート402は、トランスミットフレームFIFOバッファ406から伝送されるフレームを受信し、次にこのようなフレームをシリアルデータに変換する。
【0021】
次にフレームは、全二重方式の通信プロセッサ408(プロトコルエンジン(PENG)とも呼称される)によって受信される。このPENG408によって以下のいくつもの機能が実行される。すなわち(1)ホストの指令を待ち行列に入れて(キューして)、受信されたフレームのデータを、直接メモリアクセス(DMA)チャネルを通じて、ホストメモリ412に書き込み;(2)フレームヘッダを確認して、そのフレームが受信されるべき次の論理フレームであることを保証し;(3)そのフレームに欠陥があるかまたはないかを確認し;および(4)受信されたフレームまたはホストが発した伝送指令に応答して伝送フレームを発する機能である。好ましいPENG408のさらなる詳細事項は、本発明の譲受人と同じ譲受人に譲渡された、1997年9月24日付け出願の、発明の名称が”FULL-DUPLEX COMMUNICATION PROCESSOR”の同時係属中の米国特許願第08/937,066号に記載されている。なお、この特許の開示事項は本願に援用するものである。
【0022】
本発明によれば、PENG408は、受信フレームFIFOバッファ404から受信されたPENGヘッダバッファ410内でフレームヘッダを確認する。またPENG408は、伝送フレームも構築して、それを、伝送フレームFIFOバッファ406を通じてデータリンク400に送る。
【0023】
各フレームヘッダの内の探索フィールドは、結合”コンテキスト”(associated "context")に対するポインタを含んでいる。一般に、結合コンテキストは、ホストメモリ412内のホストドライバによって初期設定され、そして、特定のデータフレームをホストメモリ412内のどこに入れるかを示す情報をもっている。さらに詳しく述べると、上記コンテキストは、バッファのリストで定義される、最大のフレームの大きさ、現行バッファのポインタと長さおよび状態の情報などのフィールドを含んでいる。ファイバーチャネルを実動化する際の状態情報は小型コンピュータシステムインターフェース(SCSI)の状態情報を含んでいる。各フレームヘッダは、フレームを確認できるように、その特定のフレームに対してどのコンテキストをアクセスまたは”プルダウン”するかをPENG408に知らせる。当該コンテキストは、コンテキストマネージャーエンジンの制御下、ホストメモリインタフェース416を通じてホストメモリ412からプルダウンされる。次に、レシーブプロトコルエンジンシーケンサー( receive protocol engine sequencer )がフレームを確認する。フレームの確認が一旦完了すると、フレームヘッダによってポイントされるコンテキストは、レシーブプロトコルエンジンに、そのフレームをどう処理すべきかを知らせる。
【0024】
探索フィールドがフレームヘッダ内に提供されていない場合、PENG408は、ホストからコンテキスト情報を得ることができないが、受信されたフレームの現行シーケンスについての一時的な情報を蓄積することができる。さらに詳しく述べると、本発明にしたがって、PENG408は、ホストコンピュータ414と共同して作動し、PENGヘッダバッファ410内に入っているフレームヘッダを確認する。
【0025】
本発明の好ましい実施態様にしたがって、各フレームは、少なくとも以下のフィールドを画定するデータを含んでいる。すなわちフレームのソースを示すソースID;そのソースからの特定のシーケンスを示すシーケンスID;および特定のシーケンス内のフレームの順序を示すシーケンス識別子のフィールドである。前記ソースIDはポートIDと交換IDを含んでいてもよく、これらのIDはさらに、フレームのソースを修飾する。例えばシーケンスがゼロからスタートして番号をつけた10個のフレームを有している場合、シーケンス#4は、フレームが、その特定のシーケンスの5番目の部分であることを示す。これらのフィールドは、本発明にしたがって、PENG408によって検査されて、フレームのシーケンスを確認する。
【0026】
フレームヘッダ内の他の情報を使用して、フレームのシーケンスを確認することができる。例えば、ファイバーチャネルのフレームは、シーケンス内に、第一フレームと最後のフレームのSOFワードとEOFワードそれぞれに対する独特の標識を提供する。これらの標識を使用して、特定のフレームがその予測されるシーケンスオーダーになっているかまたはシーケンスの中断が起こっているかをさらに確かめることができる。
【0027】
図5は、本発明にしたがって行われるヘッダによって確認してホストバッファを割当てる方法の簡略化したフローチャートである。一般に、シーケンスの第一フレームのヘッダとペイロードが記憶される。その後、各フレームが受信され、先に受信されたフレームから得られる情報と比較される。現行フレームが同じシーケンス内の次の論理フレームである場合、ヘッダは転送されず、結合したペイロードデータだけが記憶される。このプロセスは、次の論理フレームが受信されなくなるまでまたはフレームのシーケンスが終わるまで続く。
【0028】
さらに詳しく述べると、図5のAで始まり、フレームがデータリンク400から受信される(ステップ500)。その受信されたフレームが、進行中のフレームのシーケンスの一部でない場合(ステップ502)、フレームヘッダおよび結合したペイロード(新しいシーケンスの第一ヘッダおよびペイロード)は、ホストメモリ内のバッファに記憶される(ステップ504)。次いでプロセスはAに折り返して次のフレームを処理する(ステップ506)。受信されたフレームが進行中のフレームのシーケンスの一部である場合(ステップ502)、そのフレームをチェックして、シーケンス内の次の予想されるフレームであるかどうかを調べる(ステップ508)。シーケンスオーダーの確認は、例えば、PENGのヘッダバッファ410内の先のフレームのシーケンス識別子、シーケンスIDおよびソースIDを読み取って記憶することによって行うことができる。次いで、次のフレームのシーケンスIDとソースIDは一致(match)するか否かについて比較することができ、そしてシーケンスの識別子が連続した値についてチェックされる。この後者のテストは以下のいくつもの方法のうちのいずれかで実施できる。すなわち先行フレーム(prior frame)のシーケンス識別子を増加させて記憶させ、その記憶値を、一致するか否かについて現行フレームのシーケンス識別子と比較する方法;先行フレームのシーケンス識別子を記憶させて、その記憶値を現行フレームのシーケンス識別子から差し引いて結果が”1”になるかどうかをテストする方法;先行フレームのシーケンス識別子を記憶させ、現行フレームのシーケンス識別子を減少させ、次いで前記記憶値を、現行フレームの減少させた前記シーケンス識別子と、一致するか否かについて比較する方法がある。
【0029】
受信されたフレームが、シーケンス内の次の予想されるフレームである場合(ステップ508)、そのフレームをチェックして、シーケンス内の最後のフレームであるかどうかを調べる(ステップ510)。このことは、例えば、そのフレームヘッダを検査して、現行フレームがシーケンスの最後のフレームであるかどうかを示すフラグの存在を確認することによって確認できる。受信されたフレームがシーケンス内の最後のフレームでない場合、そのフレームヘッダは廃棄され、次いでフレームのペイロードのデータが同じシーケンス内の前記記憶された第一ヘッダ及び先行ペイロードに関連してホストメモリに記憶される(ステップ512)。次に、そのプロセスは、Aに折り返して次のフレームを処理する(ステップ514)。
【0030】
一方、受信されたフレームが、予想されるシーケンス内の最後のフレームである場合(ステップ510)、そのフレームのペイロードのデータは、同じシーケンス内の前記記憶された第一ヘッダ及び先行ペイロードに関連してホストメモリに記憶される(ステップ516)。その後、フレームの全シーケンスが受信されたことを示すメッセージがホストに送られる(ステップ518)。好ましい実施態様で、前記メッセージには最後のフレームのフレームヘッダからの情報が含まれており、その情報は、ホストが全シーケンスを処理するのに使用できる。ここで、ホストは、単一のフレームヘッダおよび複数の逐次パックされたペイロードを処理することができ、その結果、ホストの割込みがいっそう少なくなりかつ処理量の効率がいっそう高くなる。
【0031】
ステップ508に戻って、受信されたフレームが予想されるシーケンス内の次のフレームでない場合、受信されたフレームのヘッダと結合ペイロードのデータはホストメモリに記憶されて(ステップ520)、新しいシーケンスが始まる。次に、先のシーケンスが部分シーケンスであることを示すメッセージがホストに送られる(ステップ522)。好ましい実施態様で、このメッセージには、先のフレームのフレームヘッダからの情報が含まれており、その情報は、ホストが、先のシーケンス全体を処理するのに使用できる。これら最後の二つのステップ520と522は順序を逆にすることができる。
【0032】
図5に示すプロセス図の帰結は、シーケンスのフレームペイロードが、ホストのインタラクション(interaction)が必要になる前に、単一のヘッダとともにメモリにおいて論理的に連結されることである。図6は、本発明の好ましい実施態様による通信処理システムのブロック図であり、いくつもの入ってくる非インターロッキングフレームを受信した後の各種の好ましいデータ構造を示す。特に、ファイバーチャネルの如くのデータリンク400から受信されたシリアルデータは、NL−ポート402によってフレームに変換される。これらフレームは、受信フレームFIFOバッファ404を通じてプロトコルエンジン(PENG)408に転送されて、本発明にしたがって処理される。NL−ポート402、フレームFIFOバッファ404、PENG408は、特定用途向け集積回路(ASIC)などのシングルチップ600上で実行(実現)できる。レジスタセット602は、処理されるフレームのためのソースID604、シーケンスID606およびシーケンス識別子608を記憶する記憶場所を、現行フレームの類似のフィールドと比較するために提供する。
【0033】
初めのフレームヘッダおよび結合ペイロードのデータのシーケンスは、バッファ610のバッファスロット620〜632内に配置される。バッファ610は、順次バッファディスクリプタのバッファリスト614と連結されたバッファゲットポインタ612によって指標付けされる。各バッファディスクリプタには、バッファスロットの開始をポイントするアドレス616と、バッファスロットの入口の大きさを示す長さ618が含まれている。
【0034】
本発明によれば、シーケンス内の第一フレームまたは異なるシーケンスの次のフレームからのヘッダが、バッファリストゲストポインタ612が示す、最初に利用可能な空のバッファスロット620内に配置される。そのゲットポインタ612は次いで、次の利用可能な空のバッファスロット622に進められ、そのスロット622は第一フレームからのペイロードを受信する。同じシーケンスのより多くのフレームが適正な順に受信されると、それらフレームのペイロードが、最初のペイロードバッファスロット622から出発して(スペースが利用可能な場合)次のバッファスロットに続いてバッファ610内にパックされる。
【0035】
例えば、ヘッダHDR0とペイロードPL0を有する初めのフレーム0のヘッダHDR0は、最初の利用可能なバッファスロット620に記憶され、そしてペイロードPL0は次の利用可能なバッファスロット622に記憶される。その後、次のフレーム1が受信される。PENG408は、フレームの0と1が同じシーケンスの一部分であり、かつフレーム1はフレーム0に続く次の予想されるフレームであることを確認する。したがって、フレーム1のヘッダは廃棄され、そして結合したペイロードPL1だけが、バッファスロット622内の利用可能なバッファスペースを使用してバッファ610に記憶され、次に、必要に応じて続けてバッファスロット624と626に記憶される。その後、次のフレーム2が受信される。フレーム0、1および2は同じシーケンスの一部分であり、そしてフレーム2は、フレーム1に続く次の予想されるフレームである。やはり、フレーム2のヘッダが廃棄されそして、結合ペイロードPL2だけが、バッファ610内の、次の利用可能なバッファスロット628に記憶される。このプロセスは、新しいシーケンスが始まるまで(すなわち、完全なシーケンスが先に受信されるまで)またはそのシーケンスの次の予想されるフレーム以外のフレームが受信されるまで(すなわち、部分シーケンスが受信されるまで)続く。何れの場合であっても、対応するフレームヘッダと結合ペイロードは次の利用可能なバッファスロット内に配置される。例えば、フレームの部分シーケンスが受信されたことを示すため、フレーム0、1、2および4が同じシーケンスの一部分であるが、フレーム4がフレーム2に続く次の予想されるフレームでないとみなす。むしろ、対応するヘッダHDR3と結合ペイロードPL3を有するフレーム3(図6には示していない)がフレーム2に続く次の予想されるフレームである。この場合、フレーム4のヘッダHDR4が次の利用可能なバッファスロット630に記憶され、ペイロードPL4が次のバッファスロット632に記憶され、そして、メッセージが、ホストに部分シーケンスを知らせる(フレーム0、1および2)。
【0036】
応答リング636(すなわち、メモリレジスターセットまたはメモリ構造体)がPENG408からホストへの情報の通信のために使用される。メッセージスロット634は、完成されたフレームシーケンス(”RSP-SEQ-RCVD”)の受信、または部分のフレームシーケンス(”RSP-PARTIAL-SEQ-RCVD” )の受信を示すために使用される。大きさの値638が、ホストに、シーケンスに対するペイロードデータの全体の大きさを提供する。好ましい実施態様で、最後のフレームヘッダの情報640も、ホストへの伝達のために利用できる。次に、ホストは割込まれて、受信されたシーケンスを、所望の方式で処理する。要約すると、本発明は、ホストへの割込みを減らし、ホストドライバの性能を改善し、そして、フレームの部分または完全なシーケンスが受信された場合のみ、ホストの割込みを行うことによって、無駄になっている転送バス帯域幅およびマップされていないすべてのフレームを記憶するためのホストメモリが除かれる。
【0037】
基本発明を知っていることから、本発明の他の側面は容易に実現される。本発明は、ハードウェアもしくはソフトウェアで、または両者の組合せで実現できる。本発明がソフトウェアで実現される場合、ソフトウェアは、少なくとも一つのプロセッサ要素、データ記憶システム(揮発性および非揮発性のメモリおよび/または記憶要素を含む)、少なくとも一つの入力ポートおよび少なくとも一つの出力ポートを備えているプロセッサにおいて実行する一つ以上のコンピュータプログラムとして構成されている。プログラムコードが、入力データに適用されて、本願で述べた機能が実行されて、出力情報が生成される。その出力情報は、公知の方式で、一つ以上の出力ポートまたは出力デバイスに適用される。
【0038】
このようなコンピュータプログラムは各々、記憶媒体または記憶デバイスをプロセッサが読み取って、本願に述べられている手順を実行するとき、プロセッサのコンフィギュレーションを行って作動させるため、一般的なまたは特別な目的のプログラム可能なプロセッサによって読取り可能な記憶媒体または記憶デバイス(例えば、ROMまたは磁気ディスケット)に記憶させることが好ましい。また本発明のシステムは、コンピュータプログラムで構成された、コンピュータが読取り可能な記憶媒体として実現されると考えられ、このように構成された記憶媒体によって、コンピュータまたはプロセッサは特定の前もって定められた方式で作動して、本願に記憶されている機能を実行する。
【0039】
本発明のいくつもの実施態様を述べてきたが、本発明は、本発明の精神と範囲から逸脱することなく、各種の変形を行うことができるものである。例えば、上記のいくつものステップとテストは、異なる順序で実施しても同じ結果を得ることができる。したがって図5に示す実施態様に対して別の実施態様で、ステップ512と516の記憶機能は、ステップ510のテストを実行する前に実施することができる。さらに、ステップ520と522は逆にすることができる。別の例として、他の基準を使用して、例えば次の予想されるフレームが時間切れの期間内に受信されない場合に、シーケンスが不完全であることを示すことができる。したがって、他の実施態様は、前記特許請求の範囲の範囲内に入っている。
【図面の簡単な説明】
【図1】 ファイバーチャネルの技法を利用する、従来技術の複合コンピュータネットワークのブロック図である。
【図2】 従来技術のファイバーチャネル標準の五つの機能層の図である。
【図3】 マップされていないファイバーチャネルフレームの代表的な従来技術のホストデータ構造を示す簡略化ブロック図である。
【図4】 好ましい通信処理システムの簡略化ブロック図である。
【図5】 本発明による、ヘッダの確認とホストバッファの割当てを行う方法の簡略化フローチャートである。
【図6】 本発明の好ましい実施態様による通信処理システムのブロック図であり、入ってくるいくつもの非インターロッキングフレームを受信した後の各種の好ましいデータ構造を示してある。
Claims (6)
- ヘッダとペイロードを各々含み、結合したコンテキストを有さないマップされていないフレームを確認する方法であって;
(a)マップされていないフレームを受信し;
(b)前記ステップ(a)において受信したマップされていないフレームである現行フレームが現行シーケンスの一部であるかどうかを確認し、そうでない場合には現行フレームのヘッダとペイロードをバッファ内に保存し、その他の場合には、その現行フレームが現行シーケンス内の次の予想されるフレームであるかどうかを確認し;
(c)現行フレームが現行シーケンス内の次の予想されるフレームである場合、
(1)現行フレームのペイロードを、バッファ内の先行フレームのペイロードに続く次の部分に保存し、
(2)現行フレームが現行シーケンス内の最後のフレームであるかどうかを確認し、そうであれば、完全な現行シーケンスを受信したことを示すメッセージをホストに送り;
(d)現行フレームが現行シーケンス内の次の予想されるフレームでない場合は、部分シーケンスを受信したことを示すメッセージをホストに送り、現行フレームのヘッダとペイロードをバッファ内に保存する;
ステップを含んでなる方法。 - 各フレームがファイバーチャネルのフレームである請求項1に記載の方法。
- 各フレームのヘッダが、少なくとも、シーケンスアイデンティフィケーション、シーケンス識別子およびソースアイデンティフィケーションを有し、そして現行フレームがシーケンス内の次の予想されるフレームであるかどうかを確認するステップが、現行フレームのシーケンスアイデンティフィケーション、シーケンス識別子およびソースアイデンティフィケーション各々を、先のフレームの対応するシーケンスアイデンティフィケーション、シーケンス識別子およびソースアイデンティフィケーション各々と比較するステップを含んでいる請求項1に記載の方法。
- ヘッダとペイロードを各々含み、結合したコンテキストを有さないマップされていないフレームを確認するシステムであって;
(a)マップされていないフレームを受信する入力ポート;
(b)ホストプロセッサに連結されるように構成されているバッファ;
(c)プロトコルプロセッサであって、
(1)前記受信されたマップされていないフレームである現行フレームが現行シーケンスの一部であるかどうかを確認し、そうでない場合には、現行フレームのヘッダとペイロードをバッファ内に保存し、その他の場合には、現行フレームが現行シーケンス内の次の予想されるフレームであるかどうかを確認し;
(2)現行フレームが現行シーケンス内の次の予想されるフレームである場合、
(2−1)現行フレームのペイロードを、バッファ内の先行フレームのペイロードに続く次の部分に保存し;
(2−2)現行フレームが現行シーケンス内の最後のフレームであるかどうかを確認し、そうであれば、完全な現行シーケンスが受信されたことを示すメッセージをホストに送り;
(3)現行フレームが現行シーケンス内の次の予想されるフレームでない場合は、部分シーケンスが受信されたことを示すメッセージをホストに送り、現行フレームのヘッダとペイロードをバッファ内に保存する;
ためのプロトコルプロセッサ;
を備えてなるシステム。 - 各フレームがファイバーチャネルのフレームである請求項4に記載のシステム。
- 各フレームのヘッダが、少なくともシーケンスアイデンティフィケーション、シーケンス識別子およびソースアイデンティフィケーションを有し、そして現行フレームがシーケンス内の次の予想されるフレームであるかどうかを確認するプロトコルプロセッサの機能が、現行フレームのシーケンスアイデンティフィケーション、シーケンス識別子およびソースアイデンティフィケーションの各々を、先のフレームの対応するシーケンスアイデンティフィケーション、シーケンス識別子およびソースアイデンティフィケーションの各々と比較する機能を含んでいる請求項4に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/048,930 | 1998-03-26 | ||
US09/048,930 US6314100B1 (en) | 1998-03-26 | 1998-03-26 | Method of validation and host buffer allocation for unmapped fibre channel frames |
PCT/US1999/006490 WO1999049621A1 (en) | 1998-03-26 | 1999-03-24 | Method of validation and host buffer allocation for unmapped fibre channel frames |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002508625A JP2002508625A (ja) | 2002-03-19 |
JP3735647B2 true JP3735647B2 (ja) | 2006-01-18 |
Family
ID=21957203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000538472A Expired - Fee Related JP3735647B2 (ja) | 1998-03-26 | 1999-03-24 | マップされていないファイバーチャネルフレームの確認およびホストバッファの割当てを行う方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6314100B1 (ja) |
EP (1) | EP1070403A4 (ja) |
JP (1) | JP3735647B2 (ja) |
KR (1) | KR100394546B1 (ja) |
CA (1) | CA2325857C (ja) |
WO (1) | WO1999049621A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6118776A (en) | 1997-02-18 | 2000-09-12 | Vixel Corporation | Methods and apparatus for fiber channel interconnection of private loop devices |
US6185203B1 (en) * | 1997-02-18 | 2001-02-06 | Vixel Corporation | Fibre channel switching fabric |
US6747972B1 (en) * | 2000-03-07 | 2004-06-08 | Cisco Technology, Inc. | Method and apparatus for reducing the required size of sequence numbers used in resequencing packets |
FR2818066B1 (fr) * | 2000-12-12 | 2003-10-10 | Eads Airbus Sa | Procede et dispositif de transmission deterministe de donnees asynchrones mises en paquet |
US6909904B2 (en) * | 2001-05-23 | 2005-06-21 | Nokia Corporation | System and protocol for extending functionality of wireless communication messaging |
US20030115350A1 (en) * | 2001-12-14 | 2003-06-19 | Silverback Systems, Inc. | System and method for efficient handling of network data |
US6987761B2 (en) * | 2002-02-13 | 2006-01-17 | International Business Machines Corporation | Inbound data stream controller with pre-recognition of frame sequence |
US20040203371A1 (en) * | 2002-10-08 | 2004-10-14 | Hewlett Packard Company | Error control in a bluetooth wireless communication system |
US20040198223A1 (en) * | 2002-10-08 | 2004-10-07 | Loh Weng Wah | Flow control in a bluetooth wireless communication system |
US7430623B2 (en) * | 2003-02-08 | 2008-09-30 | Hewlett-Packard Development Company, L.P. | System and method for buffering data received from a network |
US7783769B2 (en) * | 2004-03-31 | 2010-08-24 | Intel Corporation | Accelerated TCP (Transport Control Protocol) stack processing |
US7764710B1 (en) * | 2006-04-25 | 2010-07-27 | Altera Corporation | Method and apparatus for processing communication protocol frame input |
KR100941757B1 (ko) * | 2007-12-18 | 2010-02-11 | 한국전자통신연구원 | 통신 장치 및 통신 방법 |
KR20090099734A (ko) * | 2008-03-18 | 2009-09-23 | 삼성전자주식회사 | 스트림 기반의 인터페이스 시스템 및 그 제어 방법 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5260933A (en) * | 1992-05-15 | 1993-11-09 | International Business Machines Corporation | Acknowledgement protocol for serial data network with out-of-order delivery |
US5495580A (en) | 1992-10-20 | 1996-02-27 | Xlnt Designs, Inc. | Ring network security system with encoding of data entering a subnetwork and decoding of data leaving a subnetwork |
US5522047A (en) | 1993-12-15 | 1996-05-28 | Xlnt Designs, Inc. | Graceful insertion of a tree into a ring network |
US5659718A (en) | 1994-08-19 | 1997-08-19 | Xlnt Designs, Inc. | Synchronous bus and bus interface device |
US5598541A (en) * | 1994-10-24 | 1997-01-28 | Lsi Logic Corporation | Node loop port communication interface super core for fibre channel |
US5603064A (en) * | 1994-10-27 | 1997-02-11 | Hewlett-Packard Company | Channel module for a fiber optic switch with bit sliced memory architecture for data frame storage |
US5592472A (en) | 1994-10-27 | 1997-01-07 | Hewlett-Packard Company | High performance path allocation system and method for a fiber optic switch for a fiber optic network |
US5590122A (en) * | 1994-12-22 | 1996-12-31 | Emc Corporation | Method and apparatus for reordering frames |
US5872822A (en) | 1995-10-26 | 1999-02-16 | Mcdata Corporation | Method and apparatus for memory sequencing |
US5768530A (en) * | 1995-12-28 | 1998-06-16 | Emc Corporation | High speed integrated circuit interface for fibre channel communications |
US5959994A (en) * | 1996-08-19 | 1999-09-28 | Ncr Corporation | ATM/SONET network enhanced as a universal computer system interconnect |
US5889949A (en) * | 1996-10-11 | 1999-03-30 | C-Cube Microsystems | Processing system with memory arbitrating between memory access requests in a set top box |
US6061358A (en) | 1997-02-13 | 2000-05-09 | Mcdata Corporation | Data communication system utilizing a scalable, non-blocking, high bandwidth central memory controller and method |
US6105122A (en) * | 1998-02-06 | 2000-08-15 | Ncr Corporation | I/O protocol for highly configurable multi-node processing system |
US6148004A (en) * | 1998-02-11 | 2000-11-14 | Mcdata Corporation | Method and apparatus for establishment of dynamic ESCON connections from fibre channel frames |
-
1998
- 1998-03-26 US US09/048,930 patent/US6314100B1/en not_active Expired - Fee Related
-
1999
- 1999-03-24 JP JP2000538472A patent/JP3735647B2/ja not_active Expired - Fee Related
- 1999-03-24 KR KR10-2000-7010661A patent/KR100394546B1/ko not_active IP Right Cessation
- 1999-03-24 EP EP99914129A patent/EP1070403A4/en not_active Withdrawn
- 1999-03-24 WO PCT/US1999/006490 patent/WO1999049621A1/en active IP Right Grant
- 1999-03-24 CA CA002325857A patent/CA2325857C/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002508625A (ja) | 2002-03-19 |
EP1070403A4 (en) | 2007-10-24 |
WO1999049621A1 (en) | 1999-09-30 |
KR20010042178A (ko) | 2001-05-25 |
US6314100B1 (en) | 2001-11-06 |
KR100394546B1 (ko) | 2003-08-14 |
WO1999049621A9 (en) | 2000-02-24 |
EP1070403A1 (en) | 2001-01-24 |
CA2325857C (en) | 2003-09-16 |
CA2325857A1 (en) | 1999-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9049218B2 (en) | Stateless fibre channel sequence acceleration for fibre channel traffic over Ethernet | |
JP3735647B2 (ja) | マップされていないファイバーチャネルフレームの確認およびホストバッファの割当てを行う方法 | |
US7916632B1 (en) | Systems and methods for handling packet fragmentation | |
US6005849A (en) | Full-duplex communication processor which can be used for fibre channel frames | |
US7773599B1 (en) | Packet fragment handling | |
US7106751B2 (en) | Apparatus for linking a SAN with a LAN | |
US7664112B2 (en) | Packet processing apparatus and method | |
US7936758B2 (en) | Logical separation and accessing of descriptor memories | |
US7680116B1 (en) | Optimized buffer loading for packet header processing | |
US5961659A (en) | Independent simultaneous queueing of message descriptors | |
JP4173636B2 (ja) | 制御とタイプヘッダのフィールドに基づいてファイバーチャネルフレームをマップする方法 | |
US5951706A (en) | Method of independent simultaneous queueing of message descriptors | |
JP2002503914A (ja) | ファイバ・チャネル・フレームからダイナミックescon接続を確立する方法及び装置 | |
JP3457947B2 (ja) | バッファリスト変更子制御ビットを備えた通信プロセッサ | |
JP3605005B2 (ja) | ポイント・ツー・ポイント・プロトコル・ヘッダ情報を選択的に分離するためのシステムおよび方法 | |
JPH10164176A (ja) | 通信方法 | |
WO1999015973A1 (en) | Receive frame fifo with end of frame bypass |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040910 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040914 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20041214 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20041227 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050311 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050726 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050825 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050825 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050914 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050915 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091104 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |