JP4242835B2 - 高データレートのステートフルプロトコル処理 - Google Patents

高データレートのステートフルプロトコル処理 Download PDF

Info

Publication number
JP4242835B2
JP4242835B2 JP2004526038A JP2004526038A JP4242835B2 JP 4242835 B2 JP4242835 B2 JP 4242835B2 JP 2004526038 A JP2004526038 A JP 2004526038A JP 2004526038 A JP2004526038 A JP 2004526038A JP 4242835 B2 JP4242835 B2 JP 4242835B2
Authority
JP
Japan
Prior art keywords
flow
event
ppc
processing
message
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
Application number
JP2004526038A
Other languages
English (en)
Other versions
JP2005535226A (ja
Inventor
ファジル・イズメット・オスマン
サイモン・ジョン・ニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Astute Networks Inc
Original Assignee
Astute Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Astute Networks Inc filed Critical Astute Networks Inc
Publication of JP2005535226A publication Critical patent/JP2005535226A/ja
Application granted granted Critical
Publication of JP4242835B2 publication Critical patent/JP4242835B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

本発明は、データ転送処理システムに関する。
データ転送システムは、典型的には、異なるタイプの処理をそれぞれ実行する複数の様々な層(レイヤ)を介してデータを伝送する。異なる層の数及びそれらの属性は、与えられた通信システムの基礎となる概念モデルによって変化する。例としては、国際標準化機構(International Standards Organization:ISO)によって定義された開放型システム間相互接続(Open Systems Interconnection:OSI)のための7つの階層を有するモデルと、米国規格協会(American National Standards Institute:ANSI)によって定義された「ファイバチャネル」モデルと呼ばれることもある5層モデルとが含まれる。この他にも、様々な数の階層を有し、幾分異なった機能を実行する多数のモデルが提案されている。大部分のデータ通信システムでは、階層(レイヤ)は、データを含む信号が送受信される際に使用される物理層から、高レベルのプログラム及びプロセスが情報を共有する際に使用されるアプリケーション層にまでわたる。この概念的階層モデルの大部分では、これらの最上位層と最下位層との間にトランスポート層が存在する。このようなトランスポート層内では、多様な物理リンクを介して送信されているデータの転送を調整してより高位のプロセスへ分配するために必要とされる機能が実行される。
トランスポート層内では、通信システムは(パケット等の)多数のメッセージを調整し、ここで、上記メッセージは、特定の「フロー」に、又はこのようなメッセージのグループ化されたものにそれぞれ属している。各メッセージは、特定のフロー識別キー(フローキー)に対するそれの関連性によって識別されることが可能であり、上記フロー識別キーは、典型的には、通信の終端(エンドポイント)に関する情報によって定義される。トランスポート層の処理は、一般に、トランスポート層端末装置(transport layer termination:TLT)と呼ばれる複数の処理モジュールによって実行され、これらの処理モジュールは、遠隔の複数のTLTから受信される(又は遠隔の複数のTLTへ送信される)データを、各特定フローについて選択されたトランスポート層プロトコル(transport layer protocol:TLP)により定義される複数のルールにてなるセットに従って管理する。TLTは、それが処理する各メッセージを調べて、そのメッセージが属するフローの状態を定義するフロー状態に関連した情報について当該メッセージを処理し、フロー状態を適宜更新し、受信された未処理のデータをこのフロー状態に基づいて再構成してメッセージの宛先にとって適切な形式にする。ここで、メッセージの宛先は典型的には、遠隔のTLTであるか、又はローカルホストであるかのいずれかである。フローは典型的には双方向通信であり、よって、遠隔のTLTから特定のフローに属するメッセージを受信するTLTはまた、一般に、同じフローに属するメッセージをその遠隔のTLTへ送信する。対応する複数のフロー状態を保持することによって選択された複数のTLPに従って複数のフローの全体を管理することは、トランスポート層の処理を、一般には個別のメッセージにのみ関連したリンクレベルの処理から区別する。
TLPには、ファイバチャネル、SCTP、UDP及びTCP等の多数の公知のものが存在し、将来はさらに多くが開発されるであろう。TLPは典型的には、失われたか又は損傷を受けたメッセージを検出してその再送信を要求すること、あるフローにおける複数の様々なメッセージを、意図された順序に再組織化すること、及び/又はその通信についての関連した事実を宛先へ提供すること等によって、理解可能かつ正確な情報の伝送を保証するように機能する。伝送制御プロトコル(Transmission Control Protocol:TCP)は、おそらくはTLPの最も良く知られた例であり、インターネット及びイーサネットアプリケーション等のネットワークにおいて広範に使用されている。TCPは接続指向のプロトコルであり、接続の状態に関する情報は、接続がアクティブである間、接続の終端装置(端末装置)において保持される必要がある。接続状態情報は、例えば、輻輳制御情報と、パケットが再送信されるべきか否かを決定するためのタイマと、肯定応答情報と、発信元及び宛先の識別情報及び開閉状態を含む接続識別情報とを含む。従って、アクティブなTCP接続はそれぞれ、一意的な接続IDと接続状態とを有する。TCP「接続」は、本明細書では「フロー」と呼んでいる、より一般的なステートフルプロトコル処理システム(すなわち、状態を保持するプロトコル処理システム。stateful protocol processing system:「SPPS」)の一例であり、TCPの「接続ID」及び「接続状態」は、本明細書では各々「フローキー」及び「フロー状態」と呼んでいる、より一般的なSPPS概念の例である。TLPにおけるフローキーは、遠隔のリンク(宛先)のアドレス(典型的にはインターネットプロトコル又は「IP」アドレス)と、遠隔(宛先)のTCPポート番号と、ローカルなリンク(発信元)のアドレス(同じく典型的にはIPアドレス)と、ローカルな(発信元の)TCPポート番号と場合によっては受信側インターフェースIDとの組み合わせによって、一意的に特定されることが可能である。また、何も対処しなければ異なるTLPを用いるにも関わらず同一にアドレス指定されたアドレスを有することになる複数のフローを区別するために、一般的なフローキーの一部としてプロトコル標識情報を含むことが有用な場合もある。
データ通信は、古典的なトランスポート層以外にも多くの階層において生じることが可能である。例えば、iSCSI通信はトランスポート層より上の階層で生じるが、本通信もやはり、1つのフローに属するステートフルメッセージを含み、よってある意味ではトランスポート層の通信に類似している。
次第に増大する複数のコンピュータがローカルな(例えばローカルエリアネットワークを介した)リンクと広域にわたる(例えばインターネットを介した)リンクとの両方で接続されるとき、データ通信システムのためのデータレートを増大させることに対する要求は絶えず存在する。より速いデータレートを達成するためには、トランスポート層及び他の場所においてステートフルプロトコルに関して相応のより高速な処理が必要である。当然ながら、より高速なハードウェアは速度に比例して処理速度を増大できる場合がある。しかしながら、ハードウェアの速度を増大させるだけでは、プロトコル処理速度を費用について効率的にかつ望みどおりに迅速に増大させることはなく、よって、プロトコル処理システムのアーキテクチャ及び方法により、与えられたハードウェア速度でより高速な処理を可能にするプロトコル処理システムに対する必要性が存在する。
本明細書では、ステートフルプロトコル処理のための方法、システム及び装置について説明する。ステートフルプロトコル処理は、データの「フロー」の状況を追跡するために「状態」を保持することを必然的に伴う。ある特定のフローの状態は、そのフローに属する個別のデータ「メッセージ」の処理を反映するためにしばしば更新され、フロー自体は、そのフローに属する各メッセージに対して明示的又は暗黙的に関連付けられたフローキーによって識別される。各メッセージについて標識により指定されるプロトコルは、フローの現在の状態に鑑みて各メッセージに対して実行されるべき処理ステップを定義する。
ある態様において、本発明は、多数のメッセージフローを処理するように構成されたステートフルプロトコル処理システム(「SPPS」)におけるデータを処理する方法に関する。各フローは、そのようなフローに属する複数のメッセージによって伝送される、一意的に対応するフローキーに関連付けられる。本方法は、ある特定のフローに属する複数のメッセージを受信することを含む。次に、受信された複数のメッセージから、その特定のフローに関連付けられた様々なSPPSイベントが導出される。本方法はさらに、特定のフローに係る1つ又は複数のイベントをこの特定のフローのステートフルプロトコル(SP)に従って処理するために第1のプロトコル処理コア(protocol processing core:「PPC」)を特定的に割り当てることを含む。さらに、特定のフローに係る1つ又は複数の他のイベントをこの特定のフローのSPに従って処理するために異なる第2のPPCが特定的に割り当てられる。
本明細書に記載のSPPSは多くの方法で実装されることが可能であり、以下、いくつかの例示的な実施形態について詳述する。ある実施形態は、より一般的なクラスのフローからのイベントとは対照的なある特定のフローのイベント(すなわち複数のメッセージから導出された情報)の処理をPPCへ割り当てることを含む方法である。もう1つの実施形態は、イベントが位置した予備的キューメモリに関わりなくフローに係るイベントの処理をPPCへ割り当て、次に、割り当てられたPPCのローカルなキューメモリへそのイベントを転送することを含む方法である。さらにもう1つの実施形態は、メッセージを受信するステップと、受信されたメッセージに基づいてイベントの定義を生成するステップと、フローに係る第1のイベントを第1のPPCへ割り当てるステップと、上記フローに係る第2のイベントを第2のPPCへ割り当てるステップとを含む方法である。
別の実施形態は、データ通信トランスポート層の終端装置(又は端末装置)として動作するシステムであり、フローIDをそれぞれ有する複数のメッセージを受信してそこから複数のイベントを導出するように構成されたメッセージ受信機モジュールを含む(イベントは、例えば単に受信されたままのメッセージである場合もあるが、典型的には受信されたメッセージの内容又は形式に対する幾分かの変更を含む)。本実施形態はまたいくつかのPPCモジュールと、ディスパッチャーモジュールとを含み、上記ディスパッチャーモジュールは、イベントを受信することと、同じフローのイベントを処理するためにすでにPPCが割り当てられているか否かを決定することと、割り当てられていなければ、そのイベントに関連付けられたフローIDに関係なく、イベントを処理するためにそのイベントに適合する(互換性を有する)ように構成されているPPCを選択することとを実行するように構成される。
さらに別の実施形態は、メッセージを処理するための装置であり、メッセージを受信するための手段と、フロー情報のステートフルプロトコル(SP)処理のための2つ以上の手段と、フローIDに関わりなく特定のフローの情報を処理するPPCを選択するための手段とを含む。もう1つの実施形態は、2つ以上のPPCマイクロプロセッサを含む装置であって、上記PPCマイクロプロセッサの各々が、割り当てられたフローに属する複数のメッセージについてSP処理を実行するように構成され、このような割り当てられたフローのフロー状態を保持するローカルメモリを有する装置である。この実施形態はまた、メッセージ情報を受信し、1つのメッセージの少なくともフロー状態に関連した部分を第1のPPCマイクロプロセッサへ転送し、もう1つのメッセージの少なくともフロー状態に関連した部分を第2のPPCマイクロプロセッサへ転送するディスパッチャーを有する。
また、新規なサブシステムについて、それらのサブシステムを使用可能なSPPSのコンテキストにおいて説明する。一例はデータディスパッチャーサブシステムであり、もう1つの例はイベント導出システムである。これらのサブシステムの各々もまたさらなる複数のサブシステムを有することが可能であり、例えばデータディスパッチャーサブシステムは、複数のフローに係るフロー情報、特にPPCにより現在処理されているのではない複数のフローに係るフロー情報を追跡するためのルックアップサブシステムを含み、及び/又は、PPCにより現在処理されている情報を追跡し続けるためのコア稼働状況マネージャサブシステムを含むことが可能である。データディスパッチャーサブシステムは、分配されるべき単一のフローに属する複数のデータイベントを、PPCの負荷状態に基づいて複数の並列なプロトコルプロセッサコアへ方向付けることが可能であり、また、特定のフローに係るデータイベントをどのプロトコルプロセッサコアも処理していないときには、その特定のフローに係るフロー状態を独立して保持することが可能である。
添付の図面及び下記の説明において、実施形態の詳細及びいくつかの代替例について述べる。本発明のすべての実施形態を本明細書において無理なく網羅することは不可能であるので、説明する実施形態は、本発明を限定するものとしてではなく、例示的なものとして理解されなければならない。
各図面における同様の参照番号及び名称は、全体を通して同様の構成要素を示す。
本説明を通じて、実施形態及び変形例は、本発明の用途及び実装の例示を目的として説明されている。例示的な説明は、本発明の範囲を限定するものとしてではなく、本発明の例を提示するものとして理解されるべきである。
ステートフルプロトコル処理は、識別可能かつ区別可能な装置に到来するデータであって、本明細書では「メッセージ」と称するデータを処理することを必然的に伴う。1つの「フロー」には多数のメッセージが属し、「フロー」は、当該フローを一意的に識別する「フローキー」にそれぞれ関連付けられた複数のメッセージにてなるグループである。ステートフルプロトコル処理に関して本明細書で説明する方法及び装置は、多数の異なるフローが同時にアクティブである場合に最も有用である。フローは、さらなるメッセージが予想される限り、そのフローのメッセージが現在処理されているか否かに関わらず「アクティブ」であり、その特定のフローに属するメッセージのさらなる処理が予想されないときに「非アクティブ」になる。
「ステートフルプロトコル」は、あるフローに属する複数のメッセージを、そのフローの状況を反映するために保持されている「状態」に従って処理するためのプロトコルを定義する。あるフローに属するメッセージのうちの少なくともいくつか(典型的にはその多数)は、そのフローの状態に影響を与え、よって、ステートフルプロトコル処理は、着信する複数のメッセージがそれらの属するフローに対して与える効果についてチェックすることと、それに従ってそのフローの状態(又は「フロー状態」)を更新することと、メッセージを、そのメッセージが属するフローの現在の状態に鑑みて適用可能なプロトコルの指示通りに処理することとを含む。
TCP(伝送制御プロトコル)に従ってデータ通信を処理することは、ステートフルプロトコル処理の一例である。TCPフローは典型的には「接続」と呼ばれ、メッセージはパケットである。各パケットに関連付けられたフローキーは、主として終端アドレス(例えば発信元及び宛先の「ソケットアドレス」)からなる。フロー状態はアクティブな各接続(又はフロー)について保持され、処理されるフローの各パケットを反映するように更新される。データの実際の処理は、フロー状態とTCP処理ルールとに従って実行される。
TCPは、TLT(トランスポート層端末)システムにおいて一般的に使用されるプロトコルである。典型的なTLTはメッセージをパケットで受け入れ、パケットのヘッダ内に含まれる情報から、そのメッセージが属するフローと、メッセージを処理する際に使用すべきプロトコルとを識別する。しかしながら、メッセージが属するフローとメッセージを処理する際に使用すべきプロトコルとに対して当該メッセージを関連付けるために必要な情報は他の方法で提供されてもよく、例えば、それが関連付けられた別のメッセージから、もしくはそれが導出される特定のソースによって間接的又は暗黙的に提供されることが可能である(例えば、ある特定のホストが、アクティブなフローを一度に1つだけ有するということが知られている場合、暗黙的に、そのホストからの各メッセージは、そのホストに関してアクティブであるフローに属する)。
さらに、ここで説明するステートフルプロトコル処理は、TLTシステムとは異なる環境において利用されることも可能であり、その場合、フロー及びプロトコルに関する情報は、着信パケットのヘッダ以外の場所で適切に提供されてもよい。例えば、着信するTCPパケットは、全く異なるプロトコルによって処理されるべきデータを、処理の異なる「階層」にカプセル化してもよい。従って、ここで説明しているTLTシステムのコンテキストにおいて実行されるステートフルプロトコル処理は、一般的なステートフルプロトコル処理システム(「SPPS」)の特別な例を提供する。あるステートフルプロトコルフローに属するメッセージは、例えば、ある別個のステートフルプロトコルに属するメッセージ内にカプセル化されてもよい。「SCSI」と呼ばれる公知の通信プロトコルは、トランスポート層とは異なる階層におけるデータ通信の例を提供する。SCSIの一般的な用途は、ホストと、ディスクドライブ等の周辺装置との間に存在する。SCSI通信はSCSI通信専用の特殊目的の接続を介して実行されてもよく、又は、SCSI通信はカプセル化されて異なる階層を介して伝送されてもよい。SCSIは、ファイバチャネル及びTCP等の、いくつかのトランスポート層プロトコルのメッセージ内にカプセル化されてもよい。「FCP」は、SCSIメッセージをファイバチャネルプロトコルのメッセージにカプセル化する際に使用されるプロトコルであり、「iSCSI」は、SCSIメッセージをTCPメッセージにカプセル化する際に使用されるプロトコルである。FCP及びiSCSIは各々、ステートフルプロトコルである。
このようなカプセル化の一例は、ローカルネットワークを介して伝送されるiSCSIフロー等の第1のステートフルフローに属する情報が、TCP接続等の別個の第2のステートフルフローに属するメッセージ内にあるということを含む。第1のSPPSは、カプセル化するTCP接続(フロー)の状態を追跡し続けることができる。この同じSPPS又は異なる第2のSPPSは、カプセル化フローによって伝送されるメッセージの中には、カプセル化されたiSCSIフローに属するより高位のメッセージを形成するものがあるということを決定してもよい。カプセル化されたiSCSIフローのフローキーは、カプセル化された各メッセージ内に含まれていてもよく、又はそれは、情報を伝送しかつカプセル化するTCP/IPパケットのフローキーから暗黙的に決定されてもよい。カプセル化されたフローのフローキーと、カプセル化されたフローを処理する際に使用されるべきプロトコル(iSCSI)とについての知識が与えられれば、SPPSはiSCSIフローの状態を保持することが可能であり、また、そのフローに関連付けられたメッセージを識別し、指定されたプロトコル(本例ではiSCSI)に従ってそのメッセージを処理することが可能である。
このように、トランスポート層端末システムはSPPS(ステートフルプロトコル処理システム)の優れた一例を提供することが可能である。実際、TLTは少なくとも何らかのステートフル処理を含むことが見込まれ、よってSPPSとしての資格を備えている。しかしながら、SPPSは、他のデータ通信の階層にも利用可能であり、SPPSはまた、多数のメッセージが属するフローのフロー状態を更新することを含む処理に関する限り、それらのメッセージに関して定義されるステートフルプロトコルに従った他のタイプの処理にも利用可能である。従って、本発明は主としてTLTシステムに関連して説明されているが、本発明がTLTシステムに限定されるという不適当な推論がされないように注意が必要である。
図1Aは、SPPS100へのインターフェース接続を示す。SPPSのパケット入力処理ブロック102は、任意個数の発信元からデータをパケットで受け入れることが可能である。これらの発信元は、典型的には、「ホスト1」104等のホスト接続と、「ネットワーク1」106等のネットワーク接続とを含むが、単一のシステムで、「ホストN」108及び「ネットワークM」110で表されるような他の任意個数のホスト接続及び/又はネットワーク接続が使用されてもよい。プロトコル処理ブロック112は、各データフローにつき適切な複数のルール(すなわち、そのようなステートフルプロトコルに従った処理が指定されているステートフルメッセージのための、公知のTCPによって定義されたもののようなステートフルプロトコルの複数のルール)に従って着信データを処理する。フローは一般に双方向通信を含み、よって、データは典型的には、各ホスト接続及び/又はネットワーク接続との間で双方向に伝送される。最終的には、パケット出力処理ブロック114が、データを、典型的にはパケット入力処理ブロック102がデータを受信する際に用いたものと同じ接続にてなるセット(「ホスト1」104乃至「ホストN」108及び「ネットワーク1」106乃至「ネットワークM」110)へ伝送する。
図1Bは、コンピューティングシステム152内に実装されたときの、簡単なSPPSの一例を提供するTLTS150への接続の概要を示す。単一のホストシステム154は、公知のSPI−4プロトコルを使用する接続156を介してTLTS150へ接続される。ホスト154は、図1Aに示したホスト104乃至108のうちの任意のものとして動作し、TLTS150にメッセージを送信し、またTLTS150からメッセージを受信する。TLTS150は、もう1つのSPI−4プロトコルの接続160を介して媒体アクセス制御(Media Access Control:「MAC」)装置158へ接続される。MAC158は、適切な接続164を介してネットワーク162へ接続される。MACは、TLTS用のデータ(この場合はSPI−4フォーマットにおけるデータ)と、ネットワーク162に対する接続164によって使用される物理的信号との間での変換を行う。ネットワーク162は内部に複数の接続及び複数の分岐を有していてもよく、「発信元/宛先システム1」170、「発信元/宛先システム2」180及び「発信元/宛先システム3」190で例示される遠隔の通信に係る発信元及び/又は宛先との間でデータを送受信して通信する。特定のネットワークを介して、通信に係る任意個数の発信元/宛先にアクセスすることが可能である。発信元/宛先システムは、コンピューティングシステム152に類似したものであってよい。さらに複雑な発信元/宛先システムは、図1Aに示したもののような複数のホスト及びネットワーク接続を有していてもよい。従って、発信元/宛先システムの中には、様々な異なるネットワークを互いに効果的に接続するものがあってもよい。
図2は、例示的なSPPS200に係る複数のモジュールを示すブロック図である。ある実施形態では、「システムパケットインターフェースレベル4(SPI−4)フェーズ2:物理層及びリンク層装置のためのOC−192システムインターフェース.実施協定OIF−SPI4−02.0,オプティカルインターネットワーキングフォーラム,カリフォルニア州フリーモント,2001年1月("System Packet Interface Level 4 (SPI-4) Phase 2: OC-192 System Interface for Physical and Link Layer Devices. Implementation Agreement OIF-SPI4-02.0," Optical Internetworking Forum, Fremont, CA, January 2001)(又は最新版)」に従う標準的なSPI−4の16ビットバスをそれぞれ介して、2つのSPI−4 Rxインターフェース装置202及び204がデータを受信する。接続の数は、それがシステムに必要な全体的処理能力に影響する限りにおいて重要であり、1つ乃至多数のインターフェースが接続可能である。個別のインターフェースはそれぞれ、任意個数のネットワーク及び/又はホストの発信元への通信を処理することが可能であり、別個の物理的なホスト及びネットワーク接続は必要ではないが、概念的及び物理的には便利である。さらに、ある実施形態では便宜上SPI−4が使用されても、他の実施形態では、物理層に対するインターフェースのための他の任意の技術(例えばPCI−X)が、(202,204等の対応する入力ブロックにおける処理を準拠させることにより)代替としてか又は追加で使用されてもよい。
メッセージの分割
同じく図2を参照すると、インターフェース202及び204によって受信されたデータは、処理のためにそれぞれメッセージスプリッタモジュール206及び208へ転送される。この転送は、典型的には、サイズ「B」のバス上で行われる。本明細書を通じて、「B」は、速度及びレイアウトに関する拘束条件を満たすように工学上の便宜に鑑みて選択可能なバスサイズを示すために使用するものであり、単一の値を表すものではないが、典型的には16乃至128ビットの範囲内である。メッセージスプリッタモジュール206及び208は、複数のサービスの組み合わせを実行可能である。例えば、これらは、断片的にバーストで受信される複数の着信メッセージ(典型的にはパケット)を再組織化することが可能であり、その発信元及びコンテンツからパケットのタイプを識別して、後段の処理に係るタイプ識別を簡単化するためにメッセージへ何らかのデータを追加することが可能である。これらはまた、着信するメッセージを「ペイロード」データと「プロトコルイベント」(以後、単に「イベント」という。)データとに分割することが可能である。
SPI−4インターフェースからデータが到来すると、206又は208等のメッセージスプリッタモジュールは、都合のよい幅Bを有するバスを介してデータのすべてをスクラッチパッドメモリ210における既知のロケーションへ移動させることが可能である。それに代わって、これは、ペイロードデータのみを、又はメッセージ全体の他のサブセットをスクラッチパッドに送ってもよい。スクラッチパッド210は様々な方法で構成されることが可能であり、例えばこれは、公知の先入れ先出し(first-in, first-out:FIFO)バッファとして機能することが可能である。さらに精巧な例では、スクラッチパッド210は、限定されてはいるが有用な個数の複数のページに組織化されていてもよい。各ページは、そのようなページで始まるスクラッチパッドに格納されているペイロード(又はメッセージ)が位置決めされる際に使用可能な、比較的短いスクラッチパッド参照IDを有していてもよい。ペイロードが1つのページを超過すると、そのページの終わりには、続きとして次のページが認識されるように指示情報が提供されてもよく、このようにして、1つ又は複数のページからなるブロックに、第1のページの参照IDによって識別可能な任意長のペイロード(又はメッセージ)が収容されることが可能である。ペイロード長は通常、受信されるメッセージのヘッダ情報の一部である。スクラッチパッド参照IDはベースアドレスを提供してもよく、ペイロードは、予め決められた方法でベースアドレスを参照したメモリに配置されてもよい。ペイロードはペイロード長の終わりで暗黙的に終了し、よって、ヘッダにおいて示されたペイロード長と比較して検証するために、スクラッチパッドにより受信されたバイトのバイト数を独立に追跡することが有用な場合がある。スクラッチパッドがまたメッセージのヘッダも受信する場合には、そのヘッダは、スクラッチパッド参照IDを参照することによって同様にアクセスされることが可能である。当然ながらこの場合、ペイロード長の検証はスクラッチパッドメモリモジュール210内で容易に実行可能であるが、このような検証は一般に、データ処理の観点での便宜上、発信元メッセージスプリッタ(206,208)内、ディスパッチャー212内、又はPPC216乃至222内のような、他の多くの場所で実行されることが可能である。
イベントの導出
メッセージスプリッタ206及び208の典型的な機能は、着信するメッセージから、そのメッセージのステートフル処理に最も関連のある情報を導出し、このような情報が導出されたもとのメッセージと同じフローに関連する1つの「イベント」に当該情報をフォーマットして配置することである。例えば、多くのトランスポート層プロトコルによれば、フロー識別、ハンドシェイキング、長さ、パケットの順序、及びプロトコル識別を含む「状態に関連した」データは、パケットヘッダ内の既知の場所に配置される。各ステートフルプロトコルメッセージは、それが属するフローの状態に関連する情報を有し、このような状態に関連した情報は、それを識別できる場所に配置される。(ステートフルプロトコル処理を実行するシステムは、ステートレスメッセージ(すなわち状態を保持しないプロトコルのメッセージ)も処理できるという点に留意されたい。TLPは、例えば典型的には、アドレス要求プロトコル(Address Request Protocol)又はARPパケットのような、確立されたフローに関連付けられておらず従ってフロー状態に影響を与えることのないパケットも処理する。このような「ステートレス」パケットは、ここで説明している実施形態に適合する任意の技術によって処理されることが可能である。しかしながら、中心となることがらは、メッセージフローに係るフロー状態に実際に影響するステートフルメッセージの処理にあるので、本明細書ではこれらの技術についてこれ以上論じない。)
206又は208等のメッセージスプリッタモジュールによって着信メッセージから導出されるイベントは、広範な形態をとってもよい。最も簡単な例では、いくつかの実施形態においてこれはメッセージ全体である場合がある。より典型的には、イベントは、SP処理に必要な決定を下すためには必要とされない、いくつかの情報を除外することが可能である。例えば、ペイロードは多くの場合除外されて別に処理されてもよく、よって、イベントは単に、受信されたままのメッセージのヘッダになってもよい。しかしながら、実施形態によっては情報がヘッダに追加されるか、又はヘッダから除去されてもよく、その結果が再フォーマットされてSPPSにおける処理に便利な導出されたイベントが生成されてもよい。
イベントタイプの分類
受信されたメッセージは、例えば、インターフェース(202,204)又はメッセージスプリッタ(206,208)モジュールによってある程度検査されてもよく、このような検査の結果は、そのイベントの「タイプ」を導出するために使用可能である。例えば、パケットが属するフローで呼び出されたプロトコルによるエラーチェックにおいて当該パケットに異常が存在しなければ、このようなパッケージから導出されるイベントは、そのメッセージのプロトコル及び明らかな有効性を反映するイベントの「タイプ」フィールドによって識別されることが可能である。従ってSPPSによって処理される異なる各プロトコルは、特定の「タイプ」を有してもよく、この情報はイベントに包含されて後続の処理に関する決定が簡単化されることが可能である。その他、メッセージの断片であるタイプが定義される場合もあり、このような断片は一般に、そのメッセージの残りが到来するまで、処理されずに保持される必要がある。メッセージの断片は、イベントのプロトコルに従ったサブタイプを有してもよいが、このことは必須ではない。さらなるイベントタイプが、エラーを有するメッセージとして定義される場合もある。イベントの「タイプ」は、後続するイベントの処理を方向付ける(制御する)ために有用な場合があるので、異なる処理が必要なエラーを有するメッセージは、一般的なエラーのサブタイプとして識別されることが可能である。一例として、エラータイプのイベントは、そのイベントのSPを反映するサブタイプによって識別されることが可能である。
後続の処理に影響を与えるメッセージ(又は導出されたイベント)に係る任意の特徴は、イベントタイプの分類のための候補となりうる。従って、イベントタイプの分類は、工学上の観点からSPPSの実施形態に適合させて、非常に簡単なものであってもよく又は複雑であってもよい。イベントタイプの分類は、イベントを導出する際に、受信されたメッセージ情報に対して実行されてもよい増補の一例である。他の増補には、チェックサムを改訂したり又は追加したりすること、もしくは受信されたメッセージの有効性に関して実行された様々なチェックの成功又は失敗を示す情報を提供することが含まれてもよい。また、スクラッチパッドメモリ210内でメッセージ情報を発見できる場所を示すスクラッチパッドロケーションのような、関連したロケーションが追加されてもよい。ただし、ホスト等の、SPPSを用いるメッセージの発信元が、SPPSまで伝送されるメッセージ(例えばヘッダ)内のこのような「増補する」情報の一部又はすべてを提供するように設計されている場合、そのメッセージスプリッタは、その情報を実際に追加して「増補された」イベントを取得する必要はないということに留意されたい。
メッセージ情報を増補することに加えて、イベントの導出は、SPPSによるイベントのより便利な操作を許容するようにイベント情報を再フォーマットすることを含んでもよい。例えば、処理は、所定のタイプのイベント(システムによってはTCPイベント等)に合わせて最適化されてもよく、他のタイプのイベントを導出することは、このような最適化された処理を適応させるように再フォーマットすることを含んでもよい。従って一般に、イベントは、受信されたメッセージに対して何も実行することなく導出されてもよく、又は、後の処理ステップの手助けとなるように、メッセージの情報、特に状態に関連した情報を増補したり、及び/又は再フォーマットしたりすることによって導出されてもよい。例えばTCPの場合、結果的に導出されるイベントは、主として、不必要な情報が除去されかつコピーされる先のスクラッチパッドのロケーションを反映して情報が追加されたパケットの最初の256バイトと、エラーチェックの結果と、イベントタイプの分類とからなってもよい。ホストが、便利な形式でデータを作成するように設定されている場合、メッセージスプリッタから発行される結果的なホストイベントは、ほとんど変更されていないか又は全く変更されていないメッセージの最初のバイト(例えば最初の256バイト)であることが可能である。
メッセージスプリッタ機能の実装は、装置の設計を変更する必要なしにそれ自体の再プログラミングを支援する、マイクロコードを実行する組み込み型プロセッサを使用して行うことが便利な場合がある。しかしながら、メッセージスプリッタ機能は代替として、汎用プロセッサで実行されるソフトウェアを用いて、又は特定用途向け集積回路(application specific integrated circuit:ASIC)において、もしくは他の任意の適切な方法で実装されてもよい。
206及び208等のメッセージスプリッタモジュールによって実行される複数の処理ステップにてなる特定のセットには、多くの代替例が可能である。例えば、フローIDの「ローカルプロキシ(ローカルな代理)」(すなわち、SPPS内のフローを識別するのに十分であり、かつローカルな処理のためにより有用である、メッセージのフローIDを表す数字)が決定され、上記ローカルプロキシが、図示した実施形態では後の処理ブロックの間に実行されるステップである、メッセージスプリッタにおけるイベントに追加される場合もある。また、着信するメッセージが分割される必要性は全くない。代わりに、着信する複数のメッセージは一緒に保持されてもよく、例えば、これらのメッセージは、システムの多数の部分により利用可能であるようにそのまま完全にスクラッチパッドメモリ内に格納されてもよく、又は、これらのメッセージは、その全体がイベントディスパッチャー212へ直接転送されて、そこから、詳細後述するプロトコル処理コア(PPC)216乃至222へと転送されることが可能である。着信するメッセージが分割されない場合には、これらのモジュール206,208は、混乱を減らすために例えば「パケットプリプロセッサ」と改名されてもよい。当業者は、複雑なシステム内でどのモジュールが任意の特定の動作を実行するのかを多くの場合に主として設計上の便宜が決定するということを理解するであろう。
イベントディスパッチャー
図2に示すように、メッセージスプリッタ206,208によって作成された複数のイベントは、イベントディスパッチャーモジュール212へ転送され、ここでそれらのイベントはキューメモリに入力されることが可能である。イベントディスパッチャーモジュール212(又は単にディスパッチャー)は、メッセージとともに到来するフロー識別「キー」に基づいて、ローカルフローIDプロキシの検索を開始することにより、着信するイベントの処理を開始できる。
ローカルフローIDプロキシ
フロー識別キー(又は単に「フローキー」)は、フローによって使用されるSP(例えばTLP)に従って、メッセージが属するフローを一意的に識別する。フローキーは非常に大きなものであってもよく(典型的には、TCPの場合で116ビット)、それ自体では、特定のフローに関連した、SPPSによって保持された情報の位置決めのために便利なフォーマットではない場合がある。この目的で、代わりにローカルフローIDプロキシが使用可能である。ローカルフローIDプロキシ(又は単に「ローカルプロキシID」、「ローカルフローID」又は「プロキシID」)は一般に、SPPS内部の特定のフローを一意的に識別するのに十分な情報を含み、特定のフローに関連する情報をSPPS内において位置決めするためにさらに有用にされることも可能である。例えば、ローカルフローIDプロキシは、SPPS内に保持されている特定のフローに関する情報(フロー状態等)を位置決めするための、フロー状態メモリ214へのインデックスとして機能するように選択されることが可能である。ローカルフローIDプロキシは、SPPSを目的とするフローのより便利な代表となってもよいだけでなく、典型的にはより小さいものにもなる。
ローカルフローIDプロキシは、ディスパッチャーモジュール内で決定されてもよく、又は、前述のようなメッセージスプリッタモジュール206,208内のような他の場所で決定されてもよい。例えば複数の大規模なTLTS(トランスポート層端末システム)において、保持される必要のある非常に多くの個数のローカルフローIDプロキシが与えられているものとすれば、プロキシIDを決定することが重要なタスクであってもよい。そうであれば、工学的観点からは、後述するようにこのような決定を別個の「ルックアップ」モジュールによって行なうことが好都合であってもよい。実施形態によっては、このようなルックアップモジュールは,メッセージスプリッタモジュール206,208のサブモジュールである場合もあり、又はこれはディスパッチャーモジュールのサブモジュールである場合もあり、又はこれは独立したものであってかつ他の様々なモジュールからアクセス可能なものとして最も良好に設計される場合もある。
ネットワーク上のフローメッセージに付随する通常のSPフローキーではなく(又はこれに加えて)ローカルフローIDプロキシを含むように構成されている、ホストから受信されたイベントに関しては、ローカルフローIDプロキシの検索が簡単化されてもよく、又は除外されさえしてもよい。このようなホスト構成は、どのようなモジュールであれ(例えばディスパッチャー)、当該ホスト構成を採用していなかった場合には当該モジュールがローカルフローIDプロキシを決定するという動作上の負荷を削減することができる。ローカルフローIDプロキシを照合する(ルックアップする)負荷を削減するためのもう1つの方法は、使用された最新のフローID及びこれらに関連付けられたプロキシの「クイックリスト」を保持して、メッセージ又はイベントが到来する毎にまずこのリストをチェックするというものが可能である。
ローカルフローIDプロキシ又はフロー状態のうちで対応した既知のものが存在しないフローに属するメッセージが到来すると、ディスパッチャー212は新たなローカルフロープロキシIDを生成することができる。多くの場合、ディスパッチャー(又はルックアップサブモジュール)は次に、このような新たなフローのフロー状態を初期化することができる。このようなプロキシIDは、このような新規なフローのフロー状態をフロー状態メモリ214等の都合のよいメモリに格納するために使用可能なメモリへのテーブルエントリとして機能する値として選択されることが有用な場合がある。このようなメモリは、大規模システムでは非常に大きなものであってもよく、このことは特殊な管理を必要とする。
メモリ
本明細書に記述しているスクラッチパッドメモリ210及びフロー状態メモリ214等の別個の「メモリ」は各々、典型的には、メモリ単体だけでなく適切なメモリコントローラ装置も含む。しかしながら、メモリコントローラの機能は一般には本明細書における説明の要となるものではなく、ここでは単に、メモリが要求に応答して特定のデータブロックを格納すること、又は返すことのいずれかを必要としている。本明細書に記載したSPPSは、数百万のアクティブなフローを同時に処理できるように作成されてもよい(もしくは、数千又はさらに少ない数のアクティブなフローを処理することに制限されてもよい)ので、また、典型的なフロー状態は約512バイトであってもよく、それ故、図2のSPPSを実装するためには1GBの何倍ものメモリが必要とされてもよい。このような大規模メモリを実装する技術は既知であって常に発展しており、このような既知の、又は今後開発される技術の任意のものは、そのようなメモリによって十分な性能が達成される限り、図2のSPPSを形成するために任意のタイプのメモリとともに使用可能である。複数のメモリは、それらが実質的に独立した方法で機能すれば、別個のメモリとして互いに区別される。例えば、1つのメモリに格納されたデータ項目をアドレス指定することが、別個のメモリにおける無関係の項目を同時にアドレス指定することを妨げないように、複数の別個のメモリは独立してアドレス指定されることが可能である。また、1つのメモリにおけるある項目へアクセスすることが、別個のメモリにおける無関係の項目へ同時にアクセスすることを妨げないように、複数の別個のメモリは独立してアクセスされることが可能である。このような独立性に起因して、複数の別個のメモリは、場合によって、複数の共通(又は共用)メモリに困難をもたらすデータアクセス上のボトルネックを除去することが可能である。
ルックアップサブモジュール
図2に示したディスパッチャーモジュール212は、ディスパッチャーの複数のタスクのうちの特定のサブセットを実行する複数のサブモジュールを含んでもよい。例えば、到来するイベントに含まれているフローキーに基づいてローカルフローIDプロキシを照合する機能を実行する別個の「ルックアップ」モジュールを組み込むことが有用な場合がある。ディスパッチャー212のもう1つの機能は、各フローに関連付けられた特定のSPによって必要とされる場合があるように、複数のアクティブなフローのための複数のフロータイマを確立して維持することであってもよい。ローカルフローIDプロキシによってインデックスが付与されるこのような複数のフロータイマをメモリ内に維持することが好都合である場合、ルックアップモジュールはまた、これらのフロータイマをモニタリングする機能を便宜的に実行してもよい。またディスパッチャー212は、フローに係るイベントを処理するためにPPCを割り当てる際に、フロー状態を当該PPCへ提供してもよい。このフロー状態が、メモリにおいて、ローカルフローIDプロキシによって付与されたインデックスを有するロケーションに同様に保持される場合、これは、ルックアップモジュールによって便宜的に実行されることが可能な別の機能になってもよい。このようなルックアップモジュールは独立したものであってもよく、又は本質的にディスパッチャーのサブモジュールであってもよい。ルックアップモジュールはまた、主としてシステムの他の複数のセクションに関連付けられてもよい。例えばこれは、ルックアップタスクが実行される場所がメッセージスプリッタモジュール206,208であれば主としてそのメッセージスプリッタモジュール206,208に(又はそのサブモジュールにも)関連付けられてもよく、ルックアップタスクが主にPPC216乃至222で実行されるのであれば主としてそのPPC216乃至222に関連付けられてもよい。
ルックアップ処理は、そのままのフロー識別情報又は「フローキー」に基づいてローカルフローIDプロキシを選択したり又は決定したりするために、ハッシュルックアップ手順等の大規模な処理を必要としてもよい。従って、ルックアップモジュール(又はサブモジュール)は、それ自体のマイクロプロセッサシステム及びサポート用ハードウェアを伴って実装されてもよい。フローIDプロキシの決定がルックアップモジュール(又はサブモジュール)によって実行される場合、ディスパッチャーは、決定が完了されるのを待機することなくPPCへイベントを割り当てて転送することが可能であり、ルックアップモジュールは、ディスパッチャーとさらなる対話を行うことなく、割り当てられたPPCへ(ローカルフローIDプロキシの使用により取得される)フロー情報を後で転送することが可能である。
「ルックアップ」サブモジュール又は他のサブモジュールが別個のエンティティとしていったん確立されると、それは、設計の便宜上、ディスパッチャー(もしくは、それが位置している他のモジュール、又はそれに関連付けられた他のモジュール)に帰属するタスクのうちの任意のものを実行するように構成されることが可能であり、実際に多くの場合、本明細書においてはメッセージスプリッタモジュール等の他の複数のモジュールに帰属した複数のタスクを実行することが可能である。異なる複数の機能モジュール間で機能を移動させる能力は、複合的な処理システムに共通する機能であり、当業者には、モジュール間で機能を移動することは一般にシステムを大幅に異なるものにするわけではないということが理解されるであろう。
その他、多くの機能がディスパッチャー212によって、又はそのサブモジュールによって実行されることが可能である。例えばディスパッチャーは、メッセージのペイロードを反映するスクラッチパッドメモリ210からのチェックサムを要求し、それを、イベントに変換されるメッセージの部分をカバーしかつイベントとともに含まれるチェックサムと組み合わせ、組み合わされたチェックサムをイベントに組み込むことが可能である。ディスパッチャー212と他の処理ブロックとの間には、この目的を達成するのに十分な適度のサイズのバスが図示されている。多くのディスパッチャー機能の場合と同様に、この機能は、メッセージスプリッタブロック206,208等の他の場所で実行されることも、又は後の処理の間に実行されることも可能である。
指示器サブモジュール
ディスパッチャーに係る意志決定のうちの一部又はすべてを実行するために、もう1つのモジュール、又はディスパッチャーサブモジュールが生成されてもよい。「指示器(ダイレクタ)」と呼ばれるこのようなサブモジュールは、フローに係る特定のイベントを処理する特定のPPCを選択することに関わるステップと、SPPS(ステートフルプロトコル処理システム)全体に関して、複数の様々なPPCにおけるアクティブなフロー処理の状態を追跡することに関わるステップとを実行することが可能である。
指示器サブモジュールによって保持される「フロー処理状態」は、例えば、フローに係る他のイベントが現在所定のPPCによって処理されていることを表してもよく、又は、PPCが(フローに係る)以前のイベントを処理した後で生じた新規なフロー状態が、現在フロー状態メモリへ書き込まれていることを表してもよい。これはまた、フローが分解されつつあるか否かを表してもよく、又はタイマイベントがそのフローに関して保留中であることを表してもよい。このようなフロー処理状態情報は、例えば、あるフローのフロー状態がPPCからフロー状態メモリへ書き込まれつつあることを当該フローのフロー処理状態が示している間はフロー状態を上書きすることを防止する場合のような適切な場合には、指示器サブモジュールに、PPCへのイベントの転送を遅延させるように使用されてもよい。フロー状態メモリの更新がいったん完了すると、このことはフロー処理状態によって反映され、新規なイベントはPPCへ転送されることが可能になる。
指示器サブモジュールのフロー処理状態情報はまた、例えば、フローがPPCによって処理されている間にタイマの満了を示す信号が不適切に発行されることを防止するために使用されてもよい。イベントを処理する動作そのものがそのようなタイマの満了をキャンセルさせる場合には、このようなタイマイベントは発行されるべきでない。指示器サブモジュールは、タイマイベントがPPCへ発行されることを許容する前にフロー処理状態情報を参照することが可能であり、よって、このようなタイマイベントは、そのフローに対してアクティブである他のイベントが存在しないときのみ発行される。ルックアップサブモジュールの場合と同様に、別個のモジュールとしての指示器の組織化された構成は、ディスパッチャーが着信するイベントを単に指示器へ伝送する(ハンドオフする)ことを可能にすることができる。
プロトコル処理コア及びバス−構造上の導入説明
メッセージに対してローカルフローIDプロキシを確立すると、ディスパッチャー212は、フローに関連付けられたSPに従ってメッセージイベント(又は、メッセージとイベントとが分割されていなければメッセージ全体)がどこで処理されるべきかを決定する。実施形態によっては、大量のこのようなSP処理が1つのプロトコル処理コア(「PPC」)によって実行される。所定個数のPPCを有するクラスタはPPC216乃至218で表されるとともに、PPC220及び222は複数のPPCにてなるもう1つのクラスタを表す。図示されているPPCクラスタは2つであるが、任意個数のこのようなPPCクラスタの使用が可能である。例えば、一実施形態に係るTLTSは単一のPPCクラスタのみを備える場合がある一方、複雑な実施形態に係るSPPSは数百ものクラスタを含む場合がある。図2では1つのクラスタ内のPPCのうちの2つが示されているが、与えられた任意のクラスタにおいて2つ以上のPPCが使用されてもよく、典型的には1つのクラスタにつき5つのPPCが存在する。設計の対称性にとって好都合であるが、各クラスタ内のPPCの個数が同一である必要はない。複数のクラスタ内に複数のPPCを特定的に組織化した構成は、部分的には、バスの輻輳を緩和することによってデータ転送を促進するように選択される。各クラスタは、各クラスタに係る複数のPPCを相互接続するクラスタ内コア間バス224(又は226)を利用可能であり、各クラスタは、典型的には、バス230又は232によってバスネットワーク及び制御装置ブロック228に接続される。ディスパッチャー212と複数のPPCとの間のデータは、バスネットワーク及び制御装置ブロック228によって組織化されることが可能である。バスネットワーク及び制御装置ブロック228は、後に詳述するように、複数の様々なモジュール間の通信を促進する「クロスバー」スイッチとして主に機能する。
複数のPPC(例えば216乃至222)は、典型的には、PPCに実行依頼されたイベントを当該PPCが処理できるようにするプロセッサコア及びマイクロコード(すなわち、プロセッサコアに対する何らかの形式の逐次的な命令)を含む。これらはまた、典型的には、PPCが他のPPCに干渉することなくアクセス可能なローカルメモリであって、PPCによって処理されているフローに係る関連したフロー状態データを保持するのに十分なローカルメモリを含む。典型的には、特定のフローに係るフロー状態の多くの部分又はすべてを、そのフローに関するメッセージイベントを処理するPPCのローカルメモリ内に保持することが好都合である。PPCのローカルメモリは、フロー状態をそれぞれ保持する能力を有する多数のブロック又は「ワークスペース」へと組織化されてもよい。PPCは、典型的には、着信するイベントのためのキューメモリと、PPCによって同時に処理されている上記キューメモリ内の複数のイベントを有する、いくつかの異なるフローのためのワークスペースとを有する。
本明細書に示したバスは、本質的に双方向性であるものとして説明されている。しかしながら、好都合であれば、バスは2つの一方向バスとして実装されてもよく、これらのバスは場合によっては両方の方向で異なるビット幅を有する。従って、Bビットの幅を有するものとして示されたバスは、特定の実装において便宜上選択されることが可能なバス幅であって、かつ方向に関して非対称であってもよいバス幅を表す。バスのサイズに関しては、物理的なレイアウトに係る空間的及びドライバに関する拘束条件と、特定の性能目標を達成するために必要な要求されるトラフィックとを含む、考慮すべき典型的な事項が適用される。バスは網羅的に図示されたわけではなく、例えば、TPTSのすべての物理的な部品の間にはメッセージバスが(例えばデイジーチェーンで接続することによって)有用であるように接続されることが可能であるが、図2にはこのようなバスは明示されていない。さらに、SPPSが、マイクロプロセッサをそれぞれ組み込んだ複数のASICを用いた典型的な実装においてではなく、汎用処理システム上で実行されるソフトウェア又はファームウェアにおいて複数のプログラムモジュールとして実装される場合には、図2に示されたバスは、ハードウェア信号ではなく、ソフトウェアモジュール間のデータ転送を表してもよい。
PPCへのイベントの割り当て
本発明のいくつかの実施形態では、ディスパッチャー212は、特定のフローに関連付けられた複数のイベントを処理する特定のPPCを選択する。このような割り当てに関しては、多数の考慮すべき事項が存在する。まず、PPCは、問題となっているタイプに属するイベントに適合し、又はそのイベントを処理するように構成されているPPCのうちの1つである必要がある。このような適合性(互換性)は、ディスパッチャーにおいてか又はディスパッチャーのフロー処理状態サブシステムにおいて、PPCが適合するイベントタイプ又はプロトコルを示すPPCテーブルにより決定されることが可能であり、次にこれは、着信するイベントのプロトコル又はイベントタイプの必要条件と比較されることが可能である。実施形態によっては、イベントは、別の処理段において、例えばメッセージスプリッタモジュールにおいてその「タイプ」を示す情報によりマーキングされる。従ってディスパッチャーは、予め決められたイベントの「タイプ」に基づいて、適合性のあるPPCを選択するだけでよい。典型的には、イベントタイプは、特定のフローの状態に関連した情報を有するすべてのメッセージもまた同じイベントタイプを有しかつ上記すべてのメッセージが同じPPCにより処理されることが可能であるように定義される。従ってPPCは、指示されたイベントタイプを処理できるPPCにてなるグループから選択される。
PPCは、例えばPPCの負荷状態を比較して最小負荷のPPCを発見することが可能なアルゴリズムに従って、もしくはラウンドロビン型でPPCを選択可能なアルゴリズム又はランダムにPPCを選択可能なアルゴリズムに従って、複数の適合したPPCにてなる上記グループから選択される。典型的には、各フローに係る複数のイベントは、1つのPPCへと特定的に方向付けられるのであって、複数のフローにてなるクラスの一要素として1つのPPCへ方向付けられるのではない。各フローに係るこのような個別化された処理は、複数のフローにてなるクラスの属性に関わりのない負荷分散を可能にする。所定の特徴を備えた1つのフローID(又はフローキー)を共有するクラスのような、1つのクラスの要素として複数のフローが割り当てられる場合、多数のそのようなクラスが同時に処理される必要があって1つのPPCの容量を圧倒しているが別のPPCはロードされていないという状況が生じる。このことの影響は、多数の要素を有するクラスとして複数のフローがPPCに割り当てられる場合にさらに悪化する場合がある。多くの実施形態は各フローを(サイズ1のクラスで)一意的に割り当てるが、実施形態によっては、複数のフローを複数のクラスに割り当てること、特に、複数の小さなクラスに割り当てること、又は変更可能な要素を有する複数のクラスであって、それによって負荷状態をバランス化させることが可能な複数のクラスに割り当てることが効果的である場合がある。
特定のフローを特定のPPCへの割り当てから解放する機構が提供されていれば、複数のフローが1つの大規模なクラスに割り当てられているとしても、負荷分散に対して同様の効果を達成可能である。多くの実施形態では、PPCへのフローの割り当て及び解放の両方は、個別のフロー又は特定のフローに関して実行される。最終的には、PPCへの複数のフローの割り当てと、PPCからの複数のフローの解放との両方が、複数のフローにてなるクラスに対して実行されるとしても、負荷状態をバランス化させるように複数のクラスを柔軟に再割り当て可能にすることにより同等の効果を達成可能である。すなわち、PPCへ割り当てられるクラスが特定のフローのレベルで変更されることが可能であれば、負荷状態は大きな柔軟性をもってバランス化されることが可能である。いずれの場合でも、フローIDを特定の値にハッシュする特性等の任意の固定的なクラス属性とは本質的に関わりなく、また同様に、そのPPC(又は別のPPC)へ割り当てられる他のフローに関わりなく、1つのフローが最終的に1つのPPCへと割り当てられるように、PPCへ割り当てられるフローを、単一のフローを単位として変更することが可能である。
あるPPCを選択した後、ディスパッチャー212は、イベントを、フロー状態の「ワークスペース」に関する命令とともにそのPPCへ転送する。先に述べたように、PPCを選択する決定は、ディスパッチャー内の指示器サブモジュールにおいて実行される場合がある。ある典型的な実施形態では、ディスパッチャー212はまず、着信するイベントが、すでにイベントを特定のPPCへ割り当てているフローに属するか否かを決定する。実施形態によっては、PPCの稼働状況(アクティビティ)を追跡するコア稼働状況マネージャ(Core Activity Manager)等のサブモジュールがこの決定を実行してもよく、他の実施形態では指示器サブモジュールがこれらの機能を実行してもよい。着信するイベントのフローに係るイベントに関してPPCがすでに割り当てられている場合、着信するイベントは典型的には同じPPCへ転送され、このとき、上記PPCは、そのローカルメモリ内に存在しているフロー状態をすでに有していてもよい。
しかしながら、現時点でフローにPPCが割り当てられていない場合には、ディスパッチャーは、着信するイベントを処理する特定のPPC、例えばPPC216を選択する(又はそのフローを特定のPPCへ割り当てる)。選択は、様々な(互換性のある)複数のPPC上の負荷状態をバランス化させるために使用可能な稼働状態を保持する、コア稼働状況マネージャの情報に基づくことが可能である。実際の割り当て及びバランス化の決定は指示器サブモジュールによって行われてもよく、実施形態によっては、指示器とコア稼働状況マネージャとは、実質的に、これらのタスクを実行するための専用のプロセッサ及びプログラムコードを有する単一のサブモジュールである。割り当ては、単に、適合したPPCであって最も新しくイベントを受信したPPCに対する「ラウンドロビン」型であってもよく、あるいは、PPCのキューメモリの空き状況を基準とするもの又はその他であってもよい。
着信するイベントを処理するPPC216が割り当てられた後、PPC216のローカルメモリにおいてワークスペースが選択され、選択されたワークスペースにおいて、着信するイベントのフローに係る現在のフロー状態が確立される。ワークスペースの選択は、ディスパッチャーモジュールによって(例えばその指示器サブモジュールによって)実行されてもよく、又はさもなければ利用可能な順で次のPPCによる、等によって実行されてもよい。フロー状態は、選択されたワークスペースにおいて任意の好都合な方法で確立されることが可能である。例えば、ディスパッチャーは、ディスパッチャーを介して(例えばルックアップサブモジュールの動作として)フロー状態をPPCへ送ることが可能であり、又は、PPC自体がメモリ(例えばフロー状態メモリ214)からフロー状態を要求することも可能である。イベントは、典型的には、ディスパッチャー212からPPC216の入力キューメモリへ送られ、選択されたワークスペースに関連付けられる。また、スクラッチパッドメモリ(もしあれば)内のデータペイロードのサイズ及びロケーションも、別個に、又はイベントの一部として、典型的にはPPC216へ伝送される。この情報を有する場合、PPC216は、イベントがキューメモリに到達した時点でこれを処理することが可能になるが、この点については後に詳述する。PPC216は、特定のイベントの処理を終了すると、実施形態によっては「完了」メッセージをディスパッチャー212へ送信し、そのため、ディスパッチャーはこのPPCの稼働状況を追跡することができる。当然ながら、コア稼働状況モジュール又は指示器のようなサブモジュールがこのような追跡を実行してもよい。
アクティブなフロー処理を追跡するイベントのカウント処理
選択されたPPC(216)にイベントを送信すると、ディスパッチャー212は、フローに関連付けられた(従ってPPC216に関連付けられた)ロケーションにおいてイベントカウンタをインクリメントする。イベントカウンタは、現在のPPC処理に関するこうした情報のために予約され、ローカルフローIDプロキシに関連付けられたローカルメモリブロック内(例えば、ディスパッチャー内のコア稼働状況マネージャ内)に保持されることが可能であり、又は他の好都合なロケーションに保持されることが可能である。イベントカウンタは、イベントがそのPPCへ送信される毎にインクリメントされ、PPCがそのフローに関する「完了」メッセージを返信する毎にデクリメントされる。イベントカウンタが非ゼロである限り、PPCは、関連付けられたフローに関するイベントをその時点で処理している。イベントカウンタが特定のフローに関してゼロに到達すると、PPC(216)はもはやその特定のフローに関して処理すべきイベントを持たず、そのリソースのうちの当該特定のフローを処理するために割り当てられていたものは、他のフローを処理するために解放されることが可能である。ただし、PPC216は他のフローのイベントを処理している場合があり、この特定のフローを処理することからのその解放は、このような他のフローとは関わりなく実行可能であるということに留意されたい。
ディスパッチャー212に到来するイベントのフローに関連付けられたイベントカウンタがゼロでなければ、その到来するイベントを同じPPCへ割り当てて転送することが好適である。実施形態によっては、PPCがあるイベントをすでに処理中である場合には、フロー状態のグローバルな(すなわちフロー状態メモリ214の)バージョンはもはや無効であり、PPCワークスペースにおけるフロー状態のみが有効である。このような実施形態では、現在のPPCワークスペースにおける有効なフロー状態は、続いて選択されるPPCにとって利用可能とされる必要があるが、このことは、現在のPPCがイベントの処理を終了した後でのみ実行される必要がある。従って、少なくともこのような実施形態では、PPCが、選択されたフローに関わるすべての実行中のイベントを完了させるまでは、その選択されたフローに属する到来するイベントを処理するために同じPPCを割り当てることが、一般的にはより好都合となるであろう。
ディスパッチャー212へ到来するイベントであって、あるPPCにすでに割り当てられている特定のフローに関するイベントは、時として、異なるPPCへ転送されたり又は割り当てられたりすることが必要な場合がある。こうした場合には、現在のPPCが、割り当てられているすべてのイベントの処理を完了するまで、イベントをディスパッチャー212内に保持しておくことが好都合である。ディスパッチャー212内にイベントを保持しておくことは、特定のフローに係るフロー状態を同時に更新している2つのPPCを調整する必要性を除去する。またこのようなハンドオーバー処理が発生する前に、PPCがそのワークスペース(現在のフロー状態を反映するメモリ)を新規なPPCの割り当ての前にフローメモリへ「チェックイン」できるようにすることが好都合である。それに代わって、ワークスペースは、現在のPPCのキューメモリに係るすべてのイベントが処理された後に、現在のPPCから新規なPPCへ直接転送されることも可能である。
アクティブであるフローに関連してディスパッチャーにイベントが到来したが、ディスパッチャー212にイベントが到来した時点で関連のイベントカウンタがゼロであれば(その時点でフローに割り当てられたPPCが存在しないことを示す)、ディスパッチャー(又はその指示器サブモジュール)は、そのイベントタイプを処理するために利用可能なPPCを選択する。この選択は典型的には先行した処理とは独立したものであり、負荷の共有や、イベントタイプ処理の能力のような、様々な因子に基づくことが可能である。従って、次に選択されるPPCは、そのフローに属するイベントを以前に処理したPPCとはおそらく異なるであろう。しかしながら、PPCが実際に有用な状態情報を保持している場合のようないくつかの実施形態では、特定のPPCによる特定のフローに係る先行した処理に対して考慮が払われてもよい。いったんPPCの選択が実行されると、前述のように処理は継続され、イベントは新規なPPCへ伝送され、フロー状態は、PPC内において選択されたローカルなワークスペース内に配置される。ディスパッチャー212は、現在のフロー状態を新規なPPCへ転送するか、フロー状態メモリ214内のどこに現在のフロー状態が発見されるかということを示すかのいずれかを行う。
イベントカウンタは、特定のPPCがその時点で同じフローの先行したイベントを処理しているか否かを決定するために使用可能な一手段にすぎない。代替として、例えば、あるフローに係るあるイベントをその時点で処理しているPPCは、アクティブなワークスペースに関連付けられたその入力キューメモリ内にイベントを発見しない場合に、ディスパッチャー212に対してフラグを発行してもよい。その他、PPCがその時点で特定のフローの処理に割り当てられているか否かの決定には、任意の適切な手順が使用されてもよい。
フロー状態の更新とPPCの解放
PPCは、関連付けられたイベントカウンタがゼロに到達した後で、特定のフローに係るイベントを処理する責務から解放されることが可能である。よって、一般にワークスペースはフリーにされるので、このような解放は、PPCが異なるフローに係るイベントの処理に割り当てられてもよいということを意味する。一般に、PPCは同時に別のフローを処理していてもよく、上記解放は、このような他のフローに対するPPCの責務に影響することはない。特定のフローに係るイベントが処理のために別のPPCへ再割り当てされてもよいということをイベントカウンタ(又は他の指示情報)が示す典型的な状況では、SPPSは、(そのフローに係るイベントタイプを処理できるPPCのうちの)異なる複数のPPCの間で、上記複数のPPCによって処理されている他のフローとは独立に特定の個々のフローをシフトすることにより、PPC処理の負荷をバランス化させることが可能にされる。複数のフローにてなるクラス(所定の特性を有するフローキーをそれぞれ備えた複数のフローにてなるクラス等)に係るイベントを複数のPPCに処理させる技術に比べて、このような独立したフロー割り当ては、1つ又は複数のPPCがアイドル状態であって別のPPCは継続的にイベントを処理しているということの統計的確率を低下させてもよい。
PPCが解放される前に、PPC(216)によって更新されているフローメモリは、後に同じフローを処理するために選択される異なるPPCにとって利用可能になる場所に格納される。このことは、任意の適切な方法によって達成可能であり、例えば、関連したPPCワークスペースのコンテンツをディスパッチャー212へ転送し、かつそこからフロー状態メモリ214へ転送することによって達成可能である。それに代わって、PPC(216)は、ディスパッチャー212と協働してフロー状態情報をフロー状態メモリ214内の既知のロケーションへ転送することが可能であり、そのため、ディスパッチャーは、フロー状態が更新されていて将来のアクセスのために準備完了しているということを認識する。フロー状態は、バスネットワーク及び制御装置ブロック228からのバス234等を介して、PPC(216)からフロー状態メモリ214へ、より直接的に伝送されることが可能である。バス234は、フロー状態メモリ214からPPCへのフロー状態の「チェックアウト」のため、又はPPCからフロー状態メモリ214への更新されたフロー状態の「チェックイン」のためのいずれかに使用可能である。イベントカウンタがゼロに到達し、フロー状態がフロー状態メモリ214へチェックインされたとき、その時点でのPPCは解放されることが可能であり、フローは、その時点でそれに割り当てられたPPCが存在しないことを反映する状態に戻る。PPC内部では、フロー状態のワークスペースがフリーであると示されてもよい。
実施形態によっては、フロー状態をフロー状態メモリ214内に格納するために代替の方法が使用されてもよい。PPCにおいてローカルに設けられた十分なメモリが提供されているSPPSの場合、フロー状態は、それが別のPPC等の他の場所で必要とされるようなときまで、それを処理した最後のPPCのワークスペース内に保持されてもよい。このような実施形態では、フロー状態は、224又は226等のクラスタ内バスを介して新規なPPC内の適切なワークスペースへ転送されることが可能である。このことは、限られた個数の同時的なフローを処理する小規模なSPPSの場合において、実際的な代替方法としてさらにふさわしい。
ソケットメモリと出力処理
例えばTCPのような、メッセージの配信を保証するTLPアプリケーションにおいては、送信されたメッセージが正しく受信されたことの確認が1つの必要条件である。これらのTLPでは、メッセージが正しく受信されなければ、そのメッセージは再送信される必要がある。再送信の要求が到着するにはしばらく時間がかかる場合があるので、送信されたメッセージは、所定時間期間だけメモリ(例えば「送信バッファ」)内に保持される必要がある。送信バッファを使用することは、最初の送信より前であっても要求される場合があり、例えば出力宛先(例えば図2のホスト1 104又はネットワーク1 106)においてデータの受け入れ準備ができていないときに要求される。同様に、「受信バッファ」もしばしば必要とされる。例えば、複数のメッセージは、本来とは異なる順序で受信され又は断片的に受信される場合があるが、これらは、メッセージを完成させてそれらメッセージを正しい順序にすることを必要とするTCPのルールに従うために、所定時間期間だけ保存される必要がある。メッセージは、簡単にスクラッチパッドメモリ210に格納されることも可能ではあるが、大型の送受信バッファを伴う大規模システムの場合には、別個の「ソケットメモリ」236を確立して大量のデータを幾分延長された期間に渡って格納することがより好都合である。このようなソケットメモリ236は、図2に示すようにバス238を介してスクラッチパッドメモリ210とインターフェースをとり、もう1つのバス240を介してバスネットワーク及びPPCクラスタ制御装置228とインターフェースをとることが可能である。(多大なトラフィックに起因して、実施形態によっては、バス240は実際にはいくつかの個々のバス構造を備えてもよい。)
ソケットメモリ236は、出力するためのデータを、バス246及び248を介して出力プロセッサ及びSPI−4インターフェース242,244へ提供することが可能である。しかしながら、出力されるべきデータがまだスクラッチパッドメモリ210内に存在しているとき、場合によってはそのデータをバス250,252を介して出力プロセッサ242,244へ直接提供する方が速い。出力処理は、メッセージのヘッダを主としてイベントデータから準備すること、チェックサムを計算すること、及び完成された出力メッセージをアセンブルすること(「再アセンブル」すること)等のタスクを含んでもよい。イベントは、典型的には何らかのタイプのSP又はイベントタイプ識別情報を保持し、出力プロセッサはこの情報を用いて、ヘッダ、巡回冗長検査(cyclic redundancy checks:CRC)及び他のSP記帳(ブックキーピング)情報の適切なフォーマットを決定することが可能である。出力プロセッサによってメッセージが再アセンブルされた後、出力装置242及び244のSPI−4部分は、データがSPPSへの入力の際に受信された接続と同じ接続(例えば「ホスト1」104及び「ネットワーク1」106)へデータが出力されることが可能であるように、SPI−4(又は他の選択された)インターフェースプロトコルに従ってメッセージをフォーマットする。
プロトコルプロセッサコアの機能
PPCは、適正なタイプのイベントを受信して任意のペイロードのサイズ及びロケーションを反映した情報をいったん有すると、使用されているSPに従ったメッセージ全体の処理を管理することが可能である。PPCは、例えば再送信を要求することや、以前に送信されたメッセージを再送信することなどの、イベントが属するフローに関する動作を管理することが可能であり、かつそのフローのフロー状態を適宜更新することが可能である。実施形態によっては、PPCが物理的にメッセージを出力プロセッサ(242,244)へ直接転送せず、単に他の回路を制御することによって出力プロセッサ242,244における再アセンブルのためにメッセージを転送させるならば、トラフィックの輻輳を削減することが可能である。
発信するメッセージの中には、肯定応答又は再送信要求等の情報をほとんど含まない(例えば、ヘッダ以外に、ほとんど何も含まないか又は全く含まない)ものがある。このような場合、イベントを処理しているPPC(例えばPPC216)は、イベント情報に基づいてヘッダを形成し、これをソケットメモリ236へ転送してもよい。次いでソケットメモリ236は、ヘッダ情報に対してほとんど何も実行することなく、又は何も実行することなく、これを出力プロセッサ242,244のうちの一方へ転送する。発信する他のメッセージは、例えば、着信するメッセージとともに受信されてスクラッチパッドメモリ210に格納されていてもよい、実質的なペイロードを含む。PPCは、このようなペイロードを、スクラッチパッドメモリ210からソケットメモリ236へ移動されるように方向付けることが可能であり、また、このようなペイロードのうちの1つを、例えば出力プロセッサ242,244の一方において、PPCにより形成された適切なヘッダと縦続接続されるように別個に方向付けることが可能である。コンピュータアーキテクチャの分野の当業者には、PPCは出力メッセージ及びフロー状態情報を多くの方法で制御できるということが認識されるであろう。
PPCは、その機能と矛盾しない任意の方法で実装されることが可能である。例えば、マイクロプログラマブルプロセッサは、変化する通信上のニーズを処理する際にあるレベルの柔軟性をもたらす。それに代わって、いくつかのPPC又はすべてのPPCは、固定状態マシンとしてハードウェアで実装されてもよく、回路サイズは縮小され、及び/又は処理速度は増大される。またさらに、いくつかのPPC又はすべてのPPCは、SPPSがアクティブである間であっても、「オン・ザ・フライ」で変更可能なプログラムメモリに基づいて動作可能な組み込み型マイクロプロセッサを備えることが可能である。このような実装は、特定のタイプのイベントを処理できるPPCの個数を調整して、さらなる負荷分散の柔軟性を追加することを可能にする。PPCは、いくつかのステートフルプロトコルを処理し、その他は処理しないように構成されてもよく、この構成は固定されたものであっても、又は可変であってもよい。例えば、マイクロプログラマブルプロセッサに基づくPPCでは、マイクロプログラム(又はソフトウェア)は、典型的には、PPCがどのイベントタイプ又はプロトコルを処理するように構成されるかを決定する。PPCが、このようなイベントタイプを処理するように、又はこのようなプロトコルに従ってメッセージ(イベント)を処理するように構成されている場合、このPPCは特定のイベントタイプ又はプロトコルに「適合する(互換性を有する)」。
バスネットワーク及びPPCクラスタ制御装置
図3は、図2のバスネットワーク及びPPCクラスタ制御装置228の例示的なアーキテクチャを示す。この実施形態では、複数のPPC(216乃至218)にてなるクラスタは、クラスタバスインターフェース302を介して部分的に制御される。命令は、典型的にはRAMを用いて実装された命令メモリ304から、クラスタバスインターフェース302を介して、クラスタ内のすべてのPPC(216乃至218)によって利用されることが可能である。クラスタバスインターフェース302はまた、クラスタ内のすべてのPPCに、ルーティング制御テーブル306へのアクセスを提供することが可能である。クラスタのDMAコントローラ308(「C DMA」)が提供されることも可能であり、これは、DMAコントローラ308のFIFOからクラスタバスインターフェース302へデータを伝送するとともに、上記FIFOからクラスタのPPC216乃至218の各々のデュアルポートメモリ(例えばDPMEM310,312)における一方の側へデータを伝送する出力バスを有することが可能である。DPMEM310,312は、DMAコントローラとは異なる側においてその対応するプロセッサにアクセス可能であり、DPMEM310,312は、PPC216,218の一部として上記対応するプロセッサと関連付けられている。図3に示すように、DMAコントローラ308は別個の入力バスを有することが可能であり、FIFOは、上記入力バスによって、デュアルポートメモリ(例えばDPMEM310,312)とクラスタバスインターフェース302とからデータを受信する。DMAコントローラ308は、例えば、PPCのローカルメモリとフロー状態メモリ214との間でフロー状態を転送するために使用可能である。図3に示すように、クラスタバスインターフェース302はまた、双方向バス接続をメッセージバス314へ提供し、さらなる双方向バス接続240bをソケットメモリ236へ提供する。PPCのローカルメモリのうちの一部又は実質的な全体は、DPMEM310等のDPMEMであることが可能であるが、設計及び製造上の都合により、任意の適切なローカルメモリが代わりに使用されてもよい。
図3には、ソケットメモリ236とバスネットワーク及びPPCクラスタ制御装置228とを相互接続するバス240が、3つの別個の双方向バス、すなわちソケットメモリ236とメッセージバス314とを相互接続するバス240a、上述のバス240b、及びさらなるクラスタバスインターフェース316に至るバス240cによって実装されたものとして示されている。クラスタバスインターフェース316は、PPC220乃至222にてなるクラスタに関連してクラスタバスインターフェース302と相似的に、複数のPPCとメッセージバス314及びソケットメモリ236との間の通信を促進するクロスバースイッチであって、共通の命令メモリ318及びルーティングテーブル320へのアクセスを提供するクロスバースイッチとして動作する。さらなるクラスタDMA322は、PPC220乃至222のデュアルポートメモリとクラスタバスインターフェース316との間のデータフローを同様に管理する。当然ながら、さらなる類似した複数のモジュールにてなるセット(ルーティング、命令、クラスタバスインターフェース、及びクラスタDMA)が提供されて、同様に相互接続されることも可能である。
コンピュータアーキテクチャの分野の当業者には、バスネットワーク及びPPCクラスタ制御装置228について示した接続を実装するために、適切な任意のバス制御を使用可能であるということが認識されるであろう。例えば、ルーティング及び命令の情報は、個別のPPC内に保持されることが可能である。さらに、PPCメモリはデュアルポートである必要はなく、308又は322等のDMAコントローラも必要ではない。さほど複雑でない実施形態では、クラスタバスインターフェース302,316は単にメッセージバス314の一部であってもよく、あるいはインターフェースは完全に省かれていてもよい。反対に、いくつかの実施形態ではその速度及びパワーを増大させるために、さらに精巧なバスアーキテクチャを使用してもよい。
代替のプロトコルコアを用いたフロー処理
図4は、一般に複数のPPC(プロトコル処理コア)を交代させる、すなわち異なるときに異なるPPCを使用する、あるフローに属するメッセージのステートフルプロトコル処理を実行するために例示的なSPPSによって実行されることが可能な動作を示すフローチャートである。図4に示すように、ステップ402でメッセージが受信される。このステップは、パケットの断片から完全なメッセージを再構成すること、有効性のチェックを実行すること、及び/又はチェックサムを確立すること等の様々なサブステップを含んでもよい。次に、ステップ404において、メッセージのペイロードはスクラッチパッドメモリへ移動されることが可能である。ステップ404が、メッセージを分割することと、特に入力処理装置及び出力処理装置の両方にとって利用可能な一時的メモリロケーションにメッセージの一部を格納することとを示す限り、このステップ404はオプションである。代替として、例えば、メッセージは一緒に保持されてもよく、及び/又は、より永久的なメモリロケーションに直接移動されてもよい。
ステップ406へ進むと、メッセージのイベント部分の定義が生成されることが可能である。イベントの定義は、典型的にはメッセージの状態に関連した部分を含み、また、先に詳述したように、イベントのさらなる処理を促進するために、メッセージのヘッダを再フォーマットすることと、チェックサム及びイベントタイプを示し情報等の、情報を追加することとを伴ってもよい。メッセージが分割されない場合には、「イベント」はペイロード情報を含んでもよく、実質的に受信されたままの着信メッセージでありさえしてもよい。イベントの処理はステップ408へ進み、ここでは、イベント内に含まれてフローを一意的に識別するデータ(「フローキー」)が検査され、フロー状態情報のロケーション及びローカルフローIDプロキシを決定する処理が開始される。決定ステップ410は、同じフローのイベントをPPCがアクティブに処理しているか否かをチェックする。このチェックは、ローカルな「アクティブフロー」テーブルにおいてフローキーを検索することにより実行可能である。「アクティブフロー」テーブル内にフローキーが発見された場合、PPCはその時点で同じフローに属する別のイベントを処理しており、処理は決定ステップ410から「yes」の分岐に進む。フローがアクティブでない場合には(例えば「アクティブフロー」テーブル内にそのフローのフローキーが発見されない場合には)、処理は決定ステップ412に進んで継続される。ステップ410では、そのフローキーに関連付けられたイベントがその時点で任意のPPCによって処理されているか否かを決定するために、その時点で1つのPPC(例えば、ディスパッチャーのコア稼働状況管理サブモジュール内)によって処理されているメッセージフローの状態のために予約されたメモリのエリアを探索することのような、他の技術が使用されてもよい。それに代わって、例えば、あるPPCにおいて処理が進行中であることを示す情報(例えばフラグ)を求めて、単一のフロー状態ロケーションが検査される場合もある。PPCがフローをアクティブに処理しているか否かを決定するためのさらなる技術及び基準については、決定ステップ428を参照して後述する。
決定ステップ412では、そのフローキーに関連付けられたフローがSPPSにおいてアクティブであるか否かについてチェックが行われる。これは、その時点でフローのイベントを処理しているPPCが存在しない場合にアクティブなフローのフロー状態を保持するフローメモリ内の有効なフローロケーションをチェックすることによって実行されることが可能である。(アクティブなフローの個数は非常に大きなものになる場合があるので、フローメモリは典型的には別個のものであり、別々にアクセス可能なものであり、かつその時点でPPCによって処理されているフローに使用されるローカルフローテーブルよりずっと大きなものである。)このステップは、典型的には、そのフローキーに関連したローカルフローIDプロキシを決定する「ルックアップ」タスク、ハッシュアルゴリズムに従ってフローキー情報を処理することに関わりのあるタスクを含む。ローカルフローIDプロキシがいったん決定されると、これは一般に、そのフローキーに対応したフローに係る既存のフロー状態を位置決めするために使用可能である。有効なフロー状態が単に存在していることは、決定ステップ412において肯定的結果をもたらす。
一般的なフロー状態メモリにも、またフローをアクティブに処理しているPPCにも有効なフロー状態が存在しないような、フローが全くアクティブでない場合には、処理は初期化ステップ414へ進んで、フロー状態メモリ内に有効なフロー状態エリアを生成して初期化する。ただし、フローに属さないイベントであり、かつイベントに対して生成される必要のあるフローが存在しないイベントである、アドレス解決プロトコル(Address Resolution Protocol:ARP)イベントのような、フロー状態を要求しないいくつかのステートレス「イベント」が存在するということに留意されたい。ARP及び他のこのような「ステートレス」イベントは、主として「ステートフル」イベントに関連する図4の処理ステップとは独立して処理されることが可能である。
アクティブなフローがいったん確立されると(決定ステップ412で位置決めされたか、又は初期化ステップ414で初期化されたかには関わらない)、本方法は、割り当てステップ416に進んで、イベントを処理するPPCを割り当てることが可能である。このステップは、そのイベントを処理するためにはどのPPCが適合し(すなわち該当するタイプのイベントを処理する能力があり)かつ利用可能である(例えばそのキューメモリに余地がある)かを決定して識別すること等の、いくつかのサブステップを含むことが可能である。PPCは、上記基準の両方を満たすものの中から、ラウンドロビン型による方法、又は最も空きの多いPPCのローカルキューメモリを選択する方法、又はランダムな方法、もしくは他の負荷分散アルゴリズムによる方法等の多くの方法で選択されることが可能である。PPCはそのイベントを処理するために新たに割り当てられたばかりであるので、ステップ418においてPPCはフロー状態を利用できるようになる。フロー状態は、先に述べたようにディスパッチャー(又はサブモジュール)によって配信されることが可能であり、もしくは、グローバルなフロー状態メモリが、割り当てられたPPCと共用されている場合には、このステップは、フロー状態メモリのロケーションの識別情報をPPCに提供することを含んでもよい。ステップ418はまた、典型的には、処理中にPPCがフロー状態にアクセスすることができる「ワークスペース」のロケーションを識別することを含む。このようなワークスペースは、典型的にはPPCにおいてローカルに保持されるが、実施形態によっては、よりグローバルに保持されることも可能であり、ローカル及びグローバルの両方に分割される場合もある。
ステップ418の後(又は肯定ステップ410の後)に生じるように、いったんPPCの割り当てが完了しかつPPCが有効なフロー状態を有すると、処理はステップ420及び422へ進む。ステップ420は、フローを処理するPPCの稼働状況を追跡する。本発明の一実施形態では、ステップ420は、フローを処理するPPCの割り当てに関連付けられたイベントカウンタをインクリメントすることを含むが、以下、決定ステップ428に関連して代替例について説明する。
ステップ422では、割り当てられたPPCへイベントのコンテンツが提供される。これは、イベントのコンテンツをPPCのローカルメモリ内のキューメモリへ物理的にコピーすることによって達成されることが可能であり、又は代替例として、イベントデータのロケーションの識別情報をPPCへ提供することによって達成されることが可能である。このようなキューメモリは、異なる複数のフローからのイベントを含むことが可能であり、例えば対応するフロー状態に関してワークスペース記憶装置が利用可能であるだけの個数の異なるフローからのイベントを含むことが可能である。互換PPCにおいて(又は互換PPCにとって)イベントのキューメモリ又はフロー状態のワークスペースのいずれかが利用可能でなければ、ディスパッチャーは一時的に、PPCへのイベント/ワークスペース転送の一部又はすべての実行を保留することが可能である。
いったん転送が完了すると、割り当てられたPPCは、そのフローのフロー状態へのアクセスと、典型的にはそのイベントに関連付けられたペイロードのサイズ及びロケーションに関する情報を含む、イベントデータへのアクセスとを有する。ステップ424において、PPCは、イベントに関連付けられたメッセージに関するトランスポート層プロトコルの処理のうちの多くを実行することが可能である。本プロトコルは、このような処理が達成しなければならない最終的な効果を定義しているが、当然ながらこの効果は、このようなトランスポート層の処理に関して現在実施されている方法か又は後に開発される方法かのいずれか任意の方法で達成可能である。PPCによるアクションは、例として、フロー状態を更新すること、出力されるべきメッセージのヘッダを生成すること、以前に送信されたメッセージの再送信を管理すること、又はエラーを含んで受信されたメッセージの再送信要求を送信することを含むことが可能である。PPCによるアクションはまた、PPCが構成するヘッダを、受信されたペイロードに再構成することと、フローの他端でネットワークに接続された異なるTLTSへ送信すること、又はローカルホストへ送信することとを管理することを含んでもよい。イベントが完了した時点で、ステップ426において完了ステートメントがアサートされる。ある実施形態では、完了ステートメントは、PPCの稼働状況の追跡に使用されるグローバルなディスパッチャーへ返信される。
アクティブなPPCの解放
PPCが現時点のイベントの処理を完了した後、決定ステップ428では、イベントの属するフローに関するすべての処理をPPCが完了したか否かについての決定が行われる。ある実施形態では、このような決定は、「完了」ステートメントに応答してPPCに関連付けられたイベントカウンタをデクリメントしかつイベントカウンタがゼロに到達したと決定するディスパッチャーモジュールによって行われることが可能である。しかしながら、異なる実施形態では、そのフローに関してPPCが完了されることを確立するための多くの代替方法が適切となる。例えば、PPCのキューメモリ内に存在するフローの最後のイベントの処理を完了した時点で、PPCは、そのフローに関して「完了」したものとされてもよい。別の例として、PPCのローカルメモリ内のフロー状態が、別のPPCにおける処理によって上書きされたり又は無効化されたりした時点で、PPCはそのフローに関して完了したものとされてもよい。「完了」に係るこれらの定義、又は他の定義は、PPC自体の内部等の様々な場所のうちの1つ(又はそれ以上)において、もしくはディスパッチャー等のよりグローバルなモジュールにおいて(例えばコア稼働状況マネージャサブモジュール内で)追跡されることが可能である。
決定ステップ428において、PPCがフローをアクティブに処理していると決定されれば、PPCにおいてローカルなフロー状態は更新されていてかつグローバルなフロー状態は必ずしも更新される必要はないので、本方法は最終ステップ430へ進むことが可能であり、さらなる処理を実行しない。しかしながら、フローの処理をPPCが完了したと決定されると、ステップ432において、PPCで更新されたローカルフロー状態が、よりグローバルなフロー状態のロケーションへ転送され、それによってPPCワークスペースは、異なるフローのイベントを処理するために利用可能になる。そしてこれに続いて、グローバルなフロー状態へのアクセスが、そのフローに属するさらなるイベントが到来した時点で可能になる。PPCは、ディスパッチャーによって決定されるか、サブモジュール又は他のモジュールによって決定されるか、もしくはPPC自体によって決定される、そのフローに関するイベント処理の完了に基づいて、「完了」であるとされることが可能である。「完了」であると指定することはまた、そのフローからの全イベントの処理が完了した後に延期されてもよく、例えばPPCが他に新たなフロー及びイベントのための余地を持たなくなるまで延期されてもよい。PPCは、ステップ434でいったん「完了」であるとされると、フローを処理することへの「割り当て」から解放されることが可能であるが、このことは例えば、PPCにおけるフロー状態メモリがもはや有効でないことを示すか、又は異なるフロー状態のさらなる格納に利用可能であることを示すフラグを設定することを含んでもよい。ステップ434の後、PPCは、そのイベントと、そのイベントが属するフローとから解放されたものとして扱われる。
決定ステップ436は、典型的には、PPCによって処理された最後のイベントが、フローが完全に閉じられることを可能にするか否かを決定するために所定の時点で発生する。フローを終了させるこのような決定は、フロー状態をメモリに書き込むことの必要性を除去する場合があるので、この決定ステップ436は、決定ステップ428が行われるよりも前に、もしくはステップ432及び/又は434より前に実行されることも可能である。またこのような決定は、そのフローに関してPPCが「完了」したという決定を包含することも可能である。しかしながら、処理上の都合により、この終了の決定は図4に示したシーケンスにおいて行われるとされてもよい。PPC自体は、典型的には、そのSP処理デューティの一部として最後のイベントがそのフローを完了したか否か(例えば、フロー状態が「接続が閉じられた」状態まで進められているか否か)を決定する。しかしながら、そのフローを実際に閉じる決定は、ディスパッチャー(又はサブモジュール)等において、よりグローバルに行われてもよい。決定ステップ436において、フローを終了しないと決定されると、システムは一般にメッセージを処理するように動作させられ、完了ステップ430へ進む。しかしながら、ステップ436においてフローを終了すると決定されれば、ローカルフローIDプロキシ及びフロー状態メモリロケーションは、その時点で他の使用のために解放されることが可能である。PPCは、他のフローが(少なくとも複数の互換PPCによって形成される世界の中で)どこに割り当てられるかということには大抵の場合に無関係に、一般的には、特定のフローに係るレベルにおけるフローに属するイベントの処理に割り当てられ、またその処理から解放されるので、PPCは別のPPCによって以前に処理されたフローに属するイベント(又はメッセージ)の処理に割り当てられる場合があり、実際かなり高い確率で可能である。このようなフローとPPCとの再割り当ては、かなり頻繁に発生してもよく、いくつかの状況下では、フローの各イベント毎に発生してもよい。
ディスパッチャー処理
図5は、例示的なSPPS内の「ディスパッチャー」モジュールにより、あるフローに属するイベントを異なる時間において異なるPPCに対してディスパッチ処理するために行われてもよい動作を示すフローチャートである。図5は、一般にはディスパッチャーモジュール(及び複数のサブモジュール)に帰属されてもよい動作である、着信するイベントの分配を実行する動作に焦点を当てたものである。従って、図5のステップは実質的に、図4に示したもののようなSPPS全体に係るステップのサブセットであってもよいが、図5のステップはディスパッチャーモジュールの視点からのものであり、図4に示したもの以外の異なる詳細事項を含んでもよい。ディスパッチャーモジュールは、当該ディスパッチャーモジュールがイベントをディスパッチ処理する対象であるPPCとも、当該ディスパッチャーモジュールによって受信されるイベントが到来してくる入力処理とも概念上は別個のものであり、図2におけるディスパッチャー212と同様にSPPS内に接続されることも可能であれば、又は他の方法で接続されることも可能である。ディスパッチャーモジュールはまた、概念的にも、又は物理的にさえも、さらに分割されることが可能であり、例えば、ローカルフローIDプロキシ(及び/又はフロー状態)の「ルックアップ」モジュールや、指示器コア稼働状況マネージャを参照すると、これらは各々、概念的にか又は物理的にかのいずれかで、ディスパッチャーモジュールのサブモジュールであったり、又はディスパッチャーに関連付けられた補助モジュールであったりしてもよい。
図5に示すように、ステップ502において入力発信元からイベントが受信される。イベントは、典型的には、SPPSによって処理されているメッセージの「状態に関連した」部分のみを含む。すなわち、イベントは典型的に、メッセージのペイロードではなくメッセージに関連付けられたフローのフロー状態の保全をPPC(プロトコル処理コア)が制御するために必要な情報のみを含む。しかしながら、実施形態によっては、ペイロード又はその一部が、状態に関連したデータとともに保持される場合もある。ディスパッチャーは、イベント内に含まれた「フローキー」であって、そのイベントが属するフローを一意的に識別する「フローキー」を検査する。ステップ504において、ディスパッチャーは、PPCがそのフローに関連したイベントをアクティブに処理していたことを示す、コア稼働状況マネージャ(Core Activity Manager:又は「CAM」)におけるフローキーとの一致の有無を検索する。(ディスパッチャーとは物理的又は概念的に別個のものであってもよい)CAM内に一致が見つからない場合には、この例示的実施形態においては、フローに係るイベントをアクティブに処理しているPPCが存在しないということが推測され、ステップ506において、そのイベントを処理するために割り当てられたPPCの稼働状況を追跡するために、CAMのエントリが初期化される。
ステップ508において、ディスパッチャーは、フローキーに対応するローカルフローIDプロキシを検索する。多数のフローを処理するSPPSの場合、この検索は別個のルックアップモジュールによって実行されることが可能であり、当該ルックアップモジュールは、例えば、ローカルフローIDプロキシを可能な限り迅速に位置決めするためにハッシュの照合(ルックアップ)を実行してもよい。決定ステップ510は、フローキーに一致するローカルフローIDプロキシが発見されたか否かに依存する。発見されていなければ、SPPSは、まだフローからのいかなるデータも処理していない場合があり、よってステップ512において、そのイベントのフローキーによって一意的に識別されるフローに関連付けられたフロー状態IDが選択されることが可能である。その後(又は、ローカルフローIDプロキシが発見されかつステップ510における決定が「yes」である場合)、処理はステップ514へ進むことが可能である。
ステップ514では、イベントを処理するPPCが選択される。このステップは、処理されているイベントのタイプを決定するサブステップを含むことが可能であるが、実施形態によっては、このサブステップは、先行する処理モジュール(例えば、図2の206又は208等のメッセージスプリッタ)によって実行される。各PPCに関してディスパッチャー内に保持された「イベントタイプマスク」は、イベントのタイプを示すビットと比較されることが可能であり、これにより、そのイベントタイプにどのPPCが適合するかということが決定される。別のサブステップとして、そのイベントタイプを処理するように構成されたPPCの相対的な稼働状況レベルを検査することが含まれてもよい。空き時間が最も多いPPCが選択されてもよく、又は、それの入力キューメモリ内に任意の余地を有する次のPPCが、ラウンドロビン型に選択されてもよい。さらなる例として、ローカルなワークスペースを割り当てることを含む最近のPPCの稼働状況に関するデータが(例えばコア稼働状況マネージャサブモジュール内に)保持されてもよく、また、他の状況ではそのフローに関して「完了」とされる場合でも、イベントのフローに関してそれのフロー状態メモリがまだ上書きされていないPPCが選択されてもよい。コア稼働状況マネージャ(CAM)サブモジュールと組み合わされているか、又は上記CAMサブモジュールの一部であるかのいずれかである指示器サブモジュールが、これらの動作を実行することが可能である。(複数の互換PPCによって形成される世界における)1つのPPCの選択は、一般に、(それのフローキーの特性等に起因して)そのフローが属する当該フローに係る先験的なクラスに関わりなく、着信する各イベントのフローについて特定的に行われる。このような個別的な割り当て技術の結果として、フローに係る特定のイベントを処理するために選択されたPPCは、(別途説明の通り、その特定のフローが、現時点で、あるPPCにおいてアクティブでない限り)同じフローに係る以前のイベントを処理したPPCとは相違する場合が多い。
フロー状態がステップ512において初期化されたか又はステップ508乃至510において位置決めされ、PPCがステップ514において選択されたので、フロー状態は次に、ステップ516においてPPCへ転送されることが可能である。実施形態によっては、このような転送は「仮想的」であってもよく、PPCがアクセスできるようにフロー状態がメモリ内のどこに存在するかを示す情報が単に提供される。次に、処理はステップ518へ進むことができる。この同じステップへは、ステップ504における決定が「yes」であれば、同じフローに属する先行するイベントをPPCがすでに処理しているので、決定ステップ504から直接到達される場合もある。このようなアクティブなPPCは、(多くの実施形態において)そのフローにとって最も妥当なフロー状態をすでに有し、その場合は一般に現時点のイベントを処理するために選択される。従って、ステップ518では、イベント自体が、選択されたPPCの入力エリア又はキューメモリへ転送されることが可能である。ステップ518に加えて、イベントカウンタはステップ520においてインクリメントされることが可能である。イベントカウンタは、現時点のイベントのフローに係る別のイベントをPPCがアクティブに処理しているのがいつであるのかを決定するための一方法であるが、特定のフローに係る現時点のすべてのイベントの処理が完了している示す情報をPPCが生成するのを待機するような、他の方法が使用されることもある。ディスパッチャーの受信処理は、これで終了である。
図6は、ディスパッチャー(又はその複数のサブモジュール)がPPCからのフィードバックに応答して実行可能ないくつかのステップを示すフローチャートである。図5の場合と同様に、図6のステップは、おおまかには、SPPS全体によって行われるステップのサブセットであるが、これらのステップはディスパッチャーの視点から説明され、SPPS全体に関して図4に示したステップにはないステップ、又はそれら図4に示したステップとは異なるステップを含んでもよい。
図6に示した応答動作はステップ602で開始され、ディスパッチャーはその間に、PPCが特定のフローに係るイベントの処理を完了したことを示す「完了ステートメント」又は他の情報を受信する。ディスパッチャーは次に、そのフローに関するイベントカウンタをデクリメントすることが可能である(図5のステップ520に関連してすでに論じた)。決定ステップ606において、イベントカウンタがゼロに到達していることが発見された場合、もしくはさもなければ、PPCによって複数のイベントにてなる「バースト」が完了されたことを示す情報が生成された場合、ディスパッチャーは、PPCによって更新された状態のフロー状態をより永久的なメモリへ格納させ、PPCのメモリを解放することが可能である。(ただし、メモリを処理しているPPCが存在しない場合と同じメモリが処理中にPPCによって使用される実施形態では、このステップは必要とされないことに留意されたい。起こりうる状況としては、例えば、フロー状態が常に同じグローバルロケーションに保持され、しかも、当該フロー状態が、そのフローを処理するPPCによって必要なときにアクセスされるだけである場合がある。)次に、PPCに格納されたフロー状態がもはや有効でないことを示すフラグ又は他の指示情報が、CAMに含まれるか、又はPPCへ送信されることが可能である。次にステップ612で、PPCは、それが処理していた特定のフローを取り扱うことから解放されることが可能である。これで特定のフローに係るイベントを処理するアクティブなPPCは存在しなくなるので、ステップ614では、PPCの稼働状況が保持されていたCAMブロックが解放されることも可能である。
「解放する」ことは、PPC(又はCAMメモリブロック)が利用可能であることを示すフラグを単に設定するということに帰着できる。このようなフラグは利用可能性を示してもよいが、本質的なデータが上書きされているのではない限り、PPCは、どの点から見ても、このような情報を提示した後もなおフローに係るイベントをアクティブに処理しているかのように扱われてもよい。この場合、データブロックが実際に上書きされ従って破壊されるまで、決定ステップ606は「no」を返す。いずれにしても、決定ステップ606が「no」を返す場合には、ステップ608乃至614は一般に当該イベントにおいて不要であるので、処理が完了される。そうでなければ、ステップ614においてCAMブロックが解放された後に処理が完了される。
カプセル化されたステートフルフロー処理
本明細書に記載したようなSPPS(ステートフルプロトコル処理システム)がトランスポート層以外の階層のフローを処理できる一つの方法は、カプセル化されたメッセージを抽出し、抽出されたメッセージをさらなる処理のために再循環させるというものである。このようなさらなる処理は、カプセル化されるメッセージのための適切なプロトコルに従って実行可能であるが、これは典型的には、メッセージをカプセル化する場合に使用されるプロトコル(典型的にはTLP)とは異なる。
カプセル化されたステートフルメッセージが検索して読み出され、再フォーマットされかつSPPSへ入力(非トランスポート層入力)として提供された後、1つ又は複数のPPCが特定のプロトコル(例えばiSCSI)によって必要とされるステップにより構成される限り、SPPSは適切なプロトコルに従ってメッセージを処理することができる。従って、単にSPPSを使用して非トランスポート層を処理すれば簡単である。
カプセル化されたデータが再循環を要求していることについてSPPSが通知されることが可能な方法は、数多く存在する。通知は、例えば処理されるすべてのデータが再循環を要求する場合には、暗黙的であってもよい。代替として、カプセル化するメッセージのヘッダ又はペイロードの一部又は複数の部分が、このような再循環の必要性を示す情報を含んでもよい。SPPSは、カプセル化された情報を再循環させることを示す情報を各ペイロードにおいて調べてもよく、ヘッダに所定の情報が提供されている場合に限ってペイロードを調べてもよい。従ってSPPSは、カプセル化するメッセージのヘッダ及び/又はペイロードにおける暗黙的情報及び明示的情報の任意の組み合わせによって、ペイロードが検査されるべきか否かということと、それがさらなる処理を必要としているか否かということと、このようなさらなる処理はどのようなプロトコルによって実行されるべきかということとに関する命令を受信することが可能である。
「再循環」プロトコルはまず、カプセル化するメッセージのペイロード(及び/又はヘッダの一部)がセグメント化され、かつカプセル化されたフローに関するメッセージとして再アセンブルされるように、呼び出されることが可能である。ただし、カプセル化する単一のメッセージが、複数のカプセル化されたメッセージのすべて又は一部を含む場合もあれば、逆に、単一のカプセル化されたメッセージが、伝送されるべきカプセル化する複数のメッセージを要求する場合もある(例えば、大きいメッセージが、ATMパケット等の複数の小さいパケットにカプセル化される場合)ことに留意されたい。再循環プロトコルは、カプセル化されたメッセージの適切な再アセンブルを定義し、またそれがさらなる処理のためにSPPSの入力へ返信されるように管理する。このような再循環プロトコルは、ローカルフローIDプロキシと、イベントタイプと、他の既知の有用な情報とを指定すること等によって、再循環されるメッセージを特に効率的な形式にフォーマットすることが可能である。このようにして、SPPS再循環プロトコルに係る(複数の)プロセッサは、SPPSと密に連携して動作するホストと同様に機能する。このようなホストは、SPPSへのメッセージにとって理想的な形式を認識していて、メッセージをこのような理想的な形式にフォーマットすることにより処理速度を増大させることが可能である。
また、再アセンブリ装置又は「出力プロセッサ」242及び/又は244が、カプセル化されかつ再アセンブルされたメッセージを、再循環には不要な場合のある242,244,202及び204におけるSPI−4インターフェース等のインターフェースを介して伝送する代わりに、メッセージスプリッタ206又は208へ直接に転送して戻すように、再循環は、変更された通信経路によって実行されてもよいということも留意されるべきである。実際、再循環されるメッセージは、そうでなければメッセージスプリッタ206又は208によって実行される方法で予め完全にフォーマットされていてもよい。カプセル化するメッセージを処理する選択されたPPC(又は関連のプロセッサ)は、このような前置フォーマット化処理を実行することと、配信されるべき情報を242/244における再アセンブリプロセッサからスクラッチパッドメモリ210及びディスパッチャー212へ直接に方向付けることとが可能であり、こうしてメッセージスプリッタは完全にバイパスされる。
再循環がいったん実行されると、カプセル化された情報のさらなる処理は、先に述べた通りに、すなわちTLPメッセージが処理される場合と実質的に同じ方法で実行されることが可能である。関心が持たれている場合では、カプセル化された情報はステートフルであってかつ1つのフローに属し、よって、メッセージに係る状態に関連した部分を反映するイベントが生成されてもよく、フローキーのローカルプロキシが決定され、フローの状態が生成されるか又は位置決めされ、プロトコルに適合するPPC(プロトコル処理コア)が(予めカプセル化されて現時点で再循環されている)メッセージから導出されるイベントを処理するために割り当てられる。これらのステップは、再循環されたメッセージに関してだけでなく、トランスポート層であるか否かに関わらずSPPSの入力へ提供される任意のフローのメッセージに関して実行されてもよい。
非トランスポート層のメッセージを処理することは、当然ながら、情報がさらなるサブシステムへ送信されることを必要とする場合がある。例えば、カプセル化されたメッセージ内のデータは、ホストへの配信を必要とする場合がある。割り当てられたPPCは、宛先となるホストにとって受容可能な方法で情報が再アセンブルされるように指示し、次に再アセンブルされたメッセージが宛先となるホストへ転送されるように指示することによって、このような送信を実行することが可能である。ある代替例では、カプセル化されたメッセージをネットワーク接続へ送信することは、発信するメッセージが再度カプセル化されてTLPメッセージにされること(典型的には、TCP等の、カプセル化する元のメッセージに使用されたものと同じTLPであるが、必ずしもこれでなくともよい)を必要としてもよい。従って、この時点では、このようなメッセージを再度カプセル化するためにさらなる再循環が必要とされてもよい。少なくとも理論上、メッセージは、任意回数の一連のカプセル化によって「ネスト」されている(入れ子状態にされている)が、これは、最も内側のステートフルメッセージが処理され得るまでにはぎ取られる(カプセル化が解除される)必要がある。同様に、このような最も内側のステートフルメッセージを処理することは、メッセージの対称的な再カプセル化を必要としてもよい。実際には効率上の観点から、過剰なカプセル化は回避される。
以上、本発明に係る多数の実施形態について説明した。しかしながら、本発明の範囲を逸脱することなく様々な変更を行うことが可能であるということは理解されるであろう。例えば、本発明に係る方法は、ソフトウェア又はハードウェアにおいて、もしくはハードウェア及びソフトウェアの実施形態の組み合わせにおいて実施されることが可能である。別の例として、あるモジュールの部分として説明された機能は、一般には別のモジュールにおいて等しく実行可能であるということは理解される必要がある。さらに別の例として、特定のシーケンスで示された、又は説明されたステップ又は動作は、一般には、指定されたステップ順序を含むクレームに記載されている実施形態を除いて、異なる順序で実行されてもよい。
従って本発明は、説明した特定の実施形態によって限定されるべきものではなく、添付の請求の範囲によってのみ限定されることは理解されるべきである。本明細書の説明は、請求の範囲に列挙されたものと類似した特徴を有する例を提示しているが、こうした同一性が請求の範囲を理解する上で不可欠でない限り、このような類似した特徴が請求の範囲に記載されたものと同一であるという想定はされるべきでない。場合によっては、わずかに異なる用語を使用することにより、請求の範囲に記載された特徴と明細書で説明された特徴との意図された対照性が強調されている。
ステートフルプロトコル処理システムへの一般的なインターフェース接続を示すブロック図である。 典型的なコンピュータシステム内のトランスポート層端末システムのブロック図である。 図1に示したもの等のステートフルプロトコル処理システムのさらに詳細なブロック図である。 図2のステートフルプロトコル処理システムに係る特徴機能のうちのいくつかをさらに詳細に示すブロック図である。 フローを処理するために選択されるプロトコルコアを変更する際に使用される動作のフローチャートである。 あるフローに属するイベントの受信に応答してディスパッチャーモジュールにより実行される動作のフローチャートである。 あるプロトコルコアからの「完了ステートメント」の受信に応答してディスパッチャーモジュールにより実行される動作のフローチャートである。

Claims (49)

  1. 複数のメッセージにてなる複数のフローを処理するステートフルプロトコル処理システム(「SPPS」)においてデータを処理する方法であって、各フローは、このようなフローに属する複数のメッセージによって伝送される一意的に対応したフロー識別情報(「FID」)に関連付けられ、
    上記方法は、
    a)特定のフローに属する複数のメッセージを受信することと、
    b)上記複数のメッセージから上記特定のフローに関連付けられた複数のイベントを導出することと、
    c)上記特定のフローのステートフルプロトコル(SP)に従って上記イベントのうちの1つ又は複数を処理する第1のプロトコル処理コア(「PPC」)を特定的に割り当てることと、
    d)上記特定のフローのSPに従って上記イベントのうちの他の1つ又は複数を処理する異なる第2のPPCを特定的に割り当てることとを含む方法。
  2. ステップc)及びd)においてPPCを割り当てることは、異なる複数のPPC間で負荷状態をバランス化させるアルゴリズムに従うことをさらに含む請求項1記載の方法。
  3. 上記異なる複数のPPC間で負荷状態をバランス化させるアルゴリズムは、複数のPPCにてなるセット間におけるラウンドロビン型分配を含む請求項2記載の方法。
  4. e)各PPCのローカルキューメモリにいくつかのイベントを格納することと、
    f)複数のPPCにてなる関連したグループ内における低負荷のPPCであって、上記関連したグループ内の異なるPPCのキューメモリに格納されたイベントより少ないイベントが当該低負荷のPPCのローカルキューメモリに格納されている低負荷のPPCを識別することとをさらに含み、
    g)上記異なる複数のPPC間で負荷状態をバランス化させるアルゴリズムは、PPCに割り当てられたイベントを現在持たないフローに係るイベントを処理するために上記低負荷のPPCを割り当てることを含む請求項2記載の方法。
  5. e)異なる複数のフローの組み合わせに係る複数のイベントを同時に上記第1のPPCへ割り当てることと、
    f)上記異なる複数のフローの組み合わせのうちの1つに係る後続のイベントを上記第2のPPCへ割り当る一方、上記第1のPPCは、上記異なる複数のフローの組み合わせのうちのもう1つのものに係るイベントの処理を継続することとをさらに含む請求項1記載の方法。
  6. e)異なる複数のフローの組み合わせに係る複数のイベントを同時に上記第1のPPCへ割り当てることと、
    f)上記異なる複数のフローの組み合わせのうちの1つに係るイベントを処理することに対する第1のPPCの割り当てを明示的に解放する一方、上記第1のPPCは、上記異なる複数のフローの組み合わせのうちのもう1つのものに係るイベントの処理を引き続き割り当てられることとをさらに含む請求項1記載の方法。
  7. e)現在どのPPCにもイベントの処理が割り当てられていない、割り当てられていないフローのメッセージを受信することをさらに含み、上記割り当てられていないフローは、対応するFIDを有し、
    f)上記割り当てられていないフローに係る一般的なタイプのイベントのうちのイベントを処理するように構成された複数の互換PPCを識別することと、
    g)上記割り当てられていないフローに対応するFIDに関わりなく、上記複数の互換PPCの間から、上記割り当てられていないフローに係る1つ又は複数のイベントを処理するPPCを選択することとをさらに含む請求項1記載の方法。
  8. e)現在どのPPCにもイベントの処理が割り当てられていない、割り当てられていないフローのメッセージを受信することと、
    f)上記複数の互換PPCによって処理されるために現在キューメモリに格納されているフローのFIDに関わりなく、このようなイベントに適合する複数のPPCの間から、上記割り当てられていないフローに係る1つ又は複数のイベントを処理するPPCを選択することとをさらに含む請求項1記載の方法。
  9. 特定のイベントを処理するPPCを選択する前に、上記特定のイベントが、現在PPCが割り当てられているフローに属するか否かを明示的に決定することをさらに含む請求項1記載の方法。
  10. 以前に選択されたPPCが、対応するフローに現在割り当てられていると決定されたとき、上記以前に選択されたPPCを用いて、上記対応するフローの状態に影響を与えるすべての着信イベントを処理することをさらに含む請求項9記載の方法。
  11. いかなるフローのFIDにも関わりなく、特定のフローに係るイベントを処理するPPCの以前の割り当てを解放することをさらに含む請求項9記載の方法。
  12. 第1のフローの状態に影響することに関連したイベントであって、かつ現在処理されているイベントが存在しないことを示す情報に基づいて、上記第1のフローに係るイベントを処理するPPCの以前の割り当てを解放することをさらに含む請求項1記載の方法。
  13. 上記第1のフローに関連したイベントであってかつ現在処理されているイベントが存在しないことを示す情報は、上記第1のフローに関連したイベントの導入及び完了をカウントするカウンタに基づく請求項12記載の方法。
  14. イベントを処理するPPCを選択する前に、上記イベントのタイプを決定することをさらに含む請求項1記載の方法。
  15. e)PPCを選択することに先行して、複数の様々なフローに属する受信されたメッセージから導出される所定個数のイベントについてイベントタイプを決定することをさらに含み、決定される複数の別個のイベントタイプは、少なくとも、
    i)第1のステートフルプロトコル(「SP」)を用いるフローに係る良好なイベントと、
    ii)異なる第2のSPを用いるフローに係る良好なイベントと、
    iii)エラーを有すると決定され、上記第1のSPを用いるフローに係るイベントとを含む請求項1記載の方法。
  16. 上記決定される複数の別個のイベントタイプはさらに、iv)パケットの断片を含む請求項15記載の方法。
  17. 上記SPPS内のステートフルプロトコル処理のための第1のメッセージ内にカプセル化された情報を、第2のステートフルプロトコルメッセージとして再循環することをさらに含む請求項1記載の方法。
  18. 複数のデータ通信メッセージにてなる複数のフローを処理するデータ通信ステートフルプロトコル処理システムにおいてデータを処理する方法であって、各フローは、このようなフローに属する複数のメッセージによって伝送される一意的に対応したフロー識別情報(「FID」)に関連付けられ、
    上記方法は、
    a)特定のフローに属するメッセージと、他のフローに属するメッセージとを受信することと、
    b)上記受信されたメッセージから、上記特定のフローに関連付けられたイベントと上記他のフローに関連付けられたイベントとを含む、イベントが導出されるメッセージのFIDによって示されたフローに関連付けられたイベントを導出することと、
    c)各イベントを1つ又は複数の予備処理キューメモリからなるグループの1つに配置することと、
    d)上記特定のフローに係る第1のイベントを処理する第1のプロトコルプロセッサコア(「PPC」)を、上記第1のイベントが位置した上記予備処理キューメモリに関わりなく割り当て、続いて上記割り当てられた第1のPPCのローカルキューメモリへ上記第1のイベントを転送することと、
    e)上記特定のフローに係る異なる第2のイベントを処理する異なる第2のPPCを、上記第2のイベントが位置した上記予備処理キューメモリに関わりなく割り当て、続いて上記割り当てられた第2のPPCのローカルキューメモリへ上記第2のイベントを転送することとを含む方法。
  19. 上記第1及び第2のPPCは、実質的に、ステートフルプロトコルメッセージの処理を実行するために設けられる請求項18記載の方法。
  20. ステップb)は、上記導出されるイベントから、上記受信されたメッセージのペイロードデータを実質的に除外することをさらに含む請求項18記載の方法。
  21. ステップb)は、イベントタイプを示す情報を含まないイベント内に、イベントタイプを示す情報を配置することをさらに含む請求項20記載の方法。
  22. f)上記イベントをPPCに転送することに先行して、イベントの完全性を検証することをさらに含む請求項18記載の方法。
  23. すべてのステートフルプロトコルPPCとは物理的に別個のパケットプロセッサにおいてステップb)を実行することをさらに含む請求項18記載の方法。
  24. f)PPCによる処理のために現在割り当てられていないフローに係るイベントのローカルプロキシIDを、上記パケットプロセッサによって実行されずかつ上記PPCによって実行されないプログラムステップを実行するルックアッププロセッサの動作を用いて決定することをさらに含む請求項23記載の方法。
  25. f)上記ローカルプロキシIDに依存してメモリアドレスにおいてフロー状態にアクセスすることをさらに含み、上記フロー状態は、PPCによる処理のために現在割り当てられていないフローに関して予め格納されている請求項24記載の方法。
  26. f)少なくとも特定のPPCによる処理のために現在割り当てられていないフローに属するイベントに関するローカルフロープロキシIDを、専用のルックアップハードウェアの動作を用いて決定することをさらに含む請求項18記載の方法。
  27. 上記専用のルックアップハードウェアはマイクロプロセッサを含む請求項26記載の方法。
  28. f)上記第1のイベントのデータと、関連付けられたフロー状態のデータとを、上記第1のPPCに一意的に関連付けられた第1のメモリに保持することと、
    g)異なるフローに係るイベントのデータと、上記異なるフローの対応するフロー状態とを、上記第1のPPCによる上記第1のメモリのアクセスに関わりなく異なるPPCによりアクセス可能なメモリに同時に保持することとをさらに含む請求項18記載の方法。
  29. イベントデータ及び対応するフロー状態データの両方を、このようなイベントの処理を割り当てられたPPCのローカルなメモリに、上記割り当てられたPPCによるこのようなイベントの処理が完了するまで保持することをさらに含む請求項28記載の方法。
  30. 複数のイベントを処理する複数のPPCを、異なる複数のPPC間で負荷状態をバランス化させるアルゴリズムに基づいて割り当てることをさらに含む請求項18記載の方法。
  31. 複数のメッセージにてなる複数のフローを処理するステートフルプロトコル処理システム(「SPPS」)においてデータを処理する方法であって、各フローは、このようなフローに属する複数のメッセージによって伝送される一意的に対応したフロー識別情報(「FID」)に関連付けられ、
    上記方法は、
    a)特定のフローに属する複数のメッセージの受信を実行するステップと、
    b)上記複数のメッセージに基づいてイベントの定義を生成するステップと、
    c)ステートフルプロトコル(「SP」)処理のために、第1のプロトコルプロセッサコア(「PPC」)への、特定のフローに係る第1のイベントの割り当てを実行するステップと、
    d)SP処理のために、異なる第2のPPCへの、上記特定のフローに係る第2のイベントの割り当てを実行するステップとを含む方法。
  32. 新規なイベントのFIDに関連付けられたフローに係るイベントを、任意のPPCが現在処理しているか否かを決定するステップをさらに含む請求項31記載の方法。
  33. 特定のFIDに関連付けられて存在するすべてのイベントについて処理がいつ完了したかを決定するステップをさらに含む請求項31記載の方法。
  34. データ通信のトランスポート層の終端として動作するシステムであって、
    a)メッセージ受信機モジュールを備え、上記メッセージ受信機モジュールは、
    i)多数のデータ通信メッセージを受信するように構成され、上記各メッセージは、上記メッセージのフロー識別情報(「FID」)によって一意的に識別されるフローに関連付けられ、かつ、
    ii)上記受信された複数のメッセージから複数のイベントを導出するように構成され、各イベントは、当該イベントが導出されるメッセージに関連付けられたフローに関連付けられ、
    上記システムは
    b)イベントのフローのステートフルプロトコルに従って当該イベントを処理するように構成された複数のプロトコルプロセッサコア(「PPC」)モジュールと、
    c)上記複数のPPCモジュールの間において複数のイベントをディスパッチ処理するイベントディスパッチ処理モジュールとを備え、上記イベントディスパッチ処理モジュールは、
    iv)上記メッセージ受信機モジュールから複数のイベントを受信し、
    v)受信された各イベントについて、上記受信されたイベントのフローに係るイベントを処理するために現在PPCモジュールが割り当てられているか否かを決定し、かつ、
    vi)受信された特定のイベントのフローのFIDに関わりなく、複数の互換PPCモジュールの中から、受信されたイベントであってかつステップii)で処理のために現在割り当てられているPPCモジュールを持たないと決定されたイベントを処理するPPCモジュールを選択するように構成されたシステム。
  35. 上記イベントディスパッチ処理モジュールはさらに、受信されたイベントであってかつステップii)で処理のために現在割り当てられたPPCモジュールを持たないと決定されたイベントのフローのローカルプロキシ識別情報を決定するように構成されたルックアップサブモジュールを備えた請求項34記載のシステム。
  36. 上記イベントディスパッチ処理モジュールはさらに、
    d)イベント追跡サブモジュールを備え、上記イベント追跡サブモジュールは、
    i)特定のフローに係るイベントを処理するPPCモジュールが現在割り当てられているか否かを決定するように、複数のPPCモジュールに対してディスパッチ処理される複数のイベントに関するフロー処理状態情報を格納するように構成された請求項34記載のシステム。
  37. (d)上記イベント追跡サブモジュールはさらに、
    ii)イベントのフローに従って上記イベントのカウント値を保持し、かつ、
    iii)特定のフローに係るイベントが、上記フローに割り当てられたPPCモジュールに対してディスパッチ処理されるとき、上記特定のフローのカウント値を増大させ、
    iv)上記特定のフローに係るイベントの処理を上記割り当てられたPPCが完了したことを示す情報に応答して、上記特定のフローのカウント値を減少させるように構成された請求項36記載のシステム。
  38. e)メッセージから導出されたイベントから分離された、上記メッセージのペイロードデータを格納するように構成されたスクラッチパッドメモリをさらに備えた請求項34記載のシステム。
  39. e)出力メッセージのフローを処理するPPCモジュールからの命令に従って当該出力メッセージをアセンブルするように構成されたメッセージ出力処理モジュールをさらに備えた請求項34記載のシステム。
  40. 上記メッセージ受信機モジュールはさらに、イベント内にイベントタイプフィールドを確立するように構成されたプロセッサを備えた請求項34記載のシステム。
  41. データ通信ステートフルプロトコルに従ってメッセージを処理する装置であって、
    a)物理層から複数のメッセージを受信する手段を備え、上記メッセージは1つ又は複数の通信フローに対応し、
    b)上記1つ又は複数の通信フローのうちの特定の通信フローに係る情報のステートフルプロトコル(SP)処理を実行する複数の手段と、
    c)上記特定の通信フローのメッセージにおいて提供されるフロー識別情報(「FID」)データに関わらずプロセッサの負荷状態をバランス化させるように、上記複数のSP処理手段の中から上記特定の通信フローの情報を処理する1つのSP処理手段を選択する手段とを備えた装置。
  42. c)上記選択する手段は、
    i)上記特定の通信フローの情報を処理するための特定のSP処理手段を割り当てる手段と、
    ii)上記割り当てられたSP処理手段を他の任意の通信フローの情報を処理することから解放する必要なしに、上記割り当てられたSP処理手段を上記特定の通信フローの情報を処理することから解放する手段とを備えた請求項41記載の装置。
  43. d)対応するフローの受信されたメッセージから当該対応するフローに係るイベントを導出する手段をさらに備えた請求項42記載の装置。
  44. c)上記選択する手段は、割り当てられたSP処理手段へ転送されているフローに係るすべてのイベントについていつ処理が完了されるかを決定する手段をさらに備えた請求項43記載の装置。
  45. a)2つ以上のプロトコル処理コア(「PPC」)マイクロプロセッサと、b)ディスパッチャーとを備えたステートフルプロトコル処理装置であって、
    各PPCマイクロプロセッサは、
    i)他のPPCに干渉することなく上記PPCによりアクセス可能なフロー状態を実質的に格納するのに十分なローカルメモリと、
    ii)当該装置の動作中に、受信されたデータメッセージを適切なステートフルプロトコル(SP)に従ってマイクロプロセッサに処理させるのに十分な命令コードを含むように構成されたプログラムメモリとを含み、上記命令コードは、上記受信されたデータメッセージ内の状態に関連した情報に応答してローカルメモリに格納された関連付けられたフロー状態を更新することを含み、
    上記ディスパッチャーは、複数のデータメッセージを受信するための入力と、処理回路とを含み、上記処理回路は、少なくとも当該装置の動作中に、
    iv)特定のフローに関連付けられた第1の受信されたデータメッセージの情報を、SP処理のために第1のPPCへ転送し、
    v)上記特定のフローに関連付けられた少なくとも1つの異なる第2のメッセージの情報を、SP処理のために異なる第2のPPCへ転送するように構成された装置。
  46. 各PPCはさらにデュアルポートローカルメモリを備えた請求項45記載の装置。
  47. データ通信システム内において、対応する複数の通信フローに属する複数の通信イベントを、互換性のある複数のプロトコルプロセッサ間に分配する方法であって、
    a)分配のために第1のフローに属する第1のイベントをキューメモリにおいて受信することと、
    b)第1のイベントに適合する複数のプロトコルプロセッサの中から上記第1のイベントを処理する第1のプロトコルプロセッサを選択することと、
    c)上記第1のイベントを上記キューメモリから上記第1のプロトコルプロセッサへ転送することと、
    d)他のフローに属する他のイベントを上記キューメモリから上記第1のプロトコルプロセッサへ転送することと、
    e)上記特定のフローに属する第2のイベントを上記キューメモリにおいて受信することと、
    f)上記互換性のある複数のプロトコルプロセッサの中から上記第2のイベントを処理する異なる第2のプロトコルプロセッサを選択することと、
    g)上記第2のイベントを上記キューメモリから上記第2のプロトコルプロセッサへ転送する一方、上記第1のプロトコルプロセッサは上記キューメモリからの他のイベントの処理を継続することとを含む方法。
  48. 上記第1のプロトコルプロセッサへ転送されていた上記第1のフローに係るすべてのイベントが上記第1のプロトコルプロセッサによって完了されたことに応答して、上記第1のプロトコルプロセッサを、上記第1のフローに係るイベントを処理することから解放することをさらに含む請求項47記載の方法。
  49. h)ステップc)の後であってかつ上記第1のプロトコルプロセッサが上記第1のイベントの処理を完了する前に、上記特定のフローに係る第3のイベントを受信することと、
    i)結果的に、上記特定のフローに係る上記第3のイベントを処理するために上記第1のプロトコルプロセッサを選択することとをさらに含む請求項47記載の方法。
JP2004526038A 2002-08-02 2003-07-10 高データレートのステートフルプロトコル処理 Expired - Fee Related JP4242835B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/211,434 US8015303B2 (en) 2002-08-02 2002-08-02 High data rate stateful protocol processing
PCT/US2003/021583 WO2004013720A2 (en) 2002-08-02 2003-07-10 High data rate stateful protocol processing

Publications (2)

Publication Number Publication Date
JP2005535226A JP2005535226A (ja) 2005-11-17
JP4242835B2 true JP4242835B2 (ja) 2009-03-25

Family

ID=31187574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004526038A Expired - Fee Related JP4242835B2 (ja) 2002-08-02 2003-07-10 高データレートのステートフルプロトコル処理

Country Status (6)

Country Link
US (1) US8015303B2 (ja)
EP (2) EP1546843B1 (ja)
JP (1) JP4242835B2 (ja)
CN (1) CN1688989B (ja)
AU (1) AU2003251842A1 (ja)
WO (1) WO2004013720A2 (ja)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050232303A1 (en) * 2002-04-26 2005-10-20 Koen Deforche Efficient packet processing pipeline device and method
US8015303B2 (en) 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US7596621B1 (en) * 2002-10-17 2009-09-29 Astute Networks, Inc. System and method for managing shared state using multiple programmed processors
US7814218B1 (en) * 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
US8151278B1 (en) 2002-10-17 2012-04-03 Astute Networks, Inc. System and method for timer management in a stateful protocol processing system
US7103064B2 (en) * 2003-01-21 2006-09-05 Nextio Inc. Method and apparatus for shared I/O in a load/store fabric
US7836211B2 (en) * 2003-01-21 2010-11-16 Emulex Design And Manufacturing Corporation Shared input/output load-store architecture
US8346884B2 (en) * 2003-01-21 2013-01-01 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US8032659B2 (en) * 2003-01-21 2011-10-04 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US8102843B2 (en) * 2003-01-21 2012-01-24 Emulex Design And Manufacturing Corporation Switching apparatus and method for providing shared I/O within a load-store fabric
US7917658B2 (en) * 2003-01-21 2011-03-29 Emulex Design And Manufacturing Corporation Switching apparatus and method for link initialization in a shared I/O environment
US7953074B2 (en) * 2003-01-21 2011-05-31 Emulex Design And Manufacturing Corporation Apparatus and method for port polarity initialization in a shared I/O device
US7370081B2 (en) * 2003-06-19 2008-05-06 International Business Machines Corporation Method, system, and program for communication of code changes for transmission of operation requests between processors
US7363629B2 (en) * 2003-06-19 2008-04-22 International Business Machines Corporation Method, system, and program for remote resource management
US7206872B2 (en) * 2004-02-20 2007-04-17 Nvidia Corporation System and method for insertion of markers into a data stream
US7554974B2 (en) * 2004-03-09 2009-06-30 Tekelec Systems and methods of performing stateful signaling transactions in a distributed processing environment
US7856094B2 (en) * 2005-03-21 2010-12-21 Tekelec Methods, systems, and computer program products for providing telecommunications services between a session initiation protocol (SIP) network and a signaling system 7 (SS7) network
US7760708B2 (en) 2005-07-08 2010-07-20 Tekelec Methods, systems, and computer program products for triggering SIP nodes to include SS7 routing information in response messages including information requested by SS7 nodes
US7672236B1 (en) 2005-12-16 2010-03-02 Nortel Networks Limited Method and architecture for a scalable application and security switch using multi-level load balancing
US8050253B2 (en) * 2006-01-09 2011-11-01 Tekelec Methods, systems, and computer program products for decentralized processing of signaling messages in a multi-application processing environment
US7769715B2 (en) * 2006-03-17 2010-08-03 International Business Machines Corporation Synchronization of access permissions in a database network
US20070245225A1 (en) * 2006-04-18 2007-10-18 Nally Martin P System and method for translating between a global view of a system process and a set of interacting processes
US8260924B2 (en) * 2006-05-03 2012-09-04 Bluetie, Inc. User load balancing systems and methods thereof
US8056082B2 (en) * 2006-05-31 2011-11-08 Bluetie, Inc. Capacity management and predictive planning systems based on trended rate change of monitored factors and methods thereof
US8800268B2 (en) * 2006-12-01 2014-08-12 Basf Corporation Zone coated filter, emission treatment systems and methods
US20080127638A1 (en) * 2006-12-01 2008-06-05 Marius Vaarkamp Emission Treatment Systems and Methods
JP4369471B2 (ja) * 2006-12-27 2009-11-18 富士通株式会社 ミラーリングプログラム、ミラーリング方法、情報記憶装置
US8059667B2 (en) * 2007-01-31 2011-11-15 Tekelec Methods, systems, and computer program products for applying multiple communications services to a call
US8073127B2 (en) * 2007-02-21 2011-12-06 Tekelec Methods, systems, and computer program products for using a location routing number based query and response mechanism to effect subscriber cutover
US8213440B2 (en) * 2007-02-21 2012-07-03 Tekelec Global, Inc. Methods, systems, and computer program products for using a location routing number based query and response mechanism to route calls to IP multimedia subsystem (IMS) subscribers
US20080198996A1 (en) * 2007-02-21 2008-08-21 Tekelec Methods, systems, and computer program products for using a location routing number based query and response mechanism to effect advanced routing
US8730970B2 (en) * 2007-02-23 2014-05-20 Tekelec Global, Inc. Methods systems, and computer program products for providing voicemail routing information in a network that provides customized voicemail services
EP2143230A1 (en) * 2007-04-20 2010-01-13 Tekelec Methods, systems, and computer program products for providing fault-tolerant service interaction and mediation function in a communications network
JP4872952B2 (ja) 2008-03-06 2012-02-08 日本電気株式会社 Tcpバッファコピー分散並列処理装置、方法及びプログラム
US8532092B2 (en) * 2008-06-02 2013-09-10 Tekelec, Inc. Methods, systems, and computer readable media for providing next generation network (NGN)-based end user services to legacy subscribers in a communications network
WO2010060087A2 (en) * 2008-11-24 2010-05-27 Tekelec Systems, methods, and computer readable media for location-sensitive called-party number translation in a telecommunications network
US9219677B2 (en) 2009-01-16 2015-12-22 Tekelec Global, Inc. Methods, systems, and computer readable media for centralized routing and call instance code management for bearer independent call control (BICC) signaling messages
US9712341B2 (en) 2009-01-16 2017-07-18 Tekelec, Inc. Methods, systems, and computer readable media for providing E.164 number mapping (ENUM) translation at a bearer independent call control (BICC) and/or session intiation protocol (SIP) router
US9459941B2 (en) * 2009-07-28 2016-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for synchronizing the processing of events associated with application sessions in a telecommunications network
US8224337B2 (en) * 2009-09-16 2012-07-17 Tekelec, Inc. Methods, systems, and computer readable media for providing foreign routing address information to a telecommunications network gateway
US9264321B2 (en) * 2009-12-23 2016-02-16 Juniper Networks, Inc. Methods and apparatus for tracking data flow based on flow state values
US8400923B2 (en) * 2010-10-15 2013-03-19 Telefonaktiebolaget L M Ericsson (Publ) Multipath transmission control protocol proxy
US9223624B2 (en) * 2010-10-20 2015-12-29 International Business Machines Corporation Processing requests in a cloud computing environment
EP2490403A1 (en) * 2011-02-17 2012-08-22 Alcatel Lucent Network communication node comprising a plurality of processors for processing layers of communication and associated node
CN102761472B (zh) * 2011-04-29 2015-07-15 无锡江南计算技术研究所 通信端口及其路由方法、通信模块及并行事务级模拟系统
US9306794B2 (en) * 2012-11-02 2016-04-05 Brocade Communications Systems, Inc. Algorithm for long-lived large flow identification
US9661657B2 (en) 2013-11-27 2017-05-23 Intel Corporation TCP traffic adaptation in wireless systems
US10681145B1 (en) * 2014-12-22 2020-06-09 Chelsio Communications, Inc. Replication in a protocol offload network interface controller
US10015048B2 (en) 2014-12-27 2018-07-03 Intel Corporation Programmable protocol parser for NIC classification and queue assignments
US9825862B2 (en) 2015-08-26 2017-11-21 Barefoot Networks, Inc. Packet header field extraction
US10523764B2 (en) * 2015-09-24 2019-12-31 Barefoot Networks, Inc. Data-plane stateful processing units in packet processing pipelines
US9923816B2 (en) 2015-09-24 2018-03-20 Barefoot Networks, Inc. Data-plane stateful processing units in packet processing pipelines
US9912774B2 (en) 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
US10437616B2 (en) * 2016-12-31 2019-10-08 Intel Corporation Method, apparatus, system for optimized work submission to an accelerator work queue
US11245572B1 (en) 2017-01-31 2022-02-08 Barefoot Networks, Inc. Messaging between remote controller and forwarding element
US10686735B1 (en) 2017-04-23 2020-06-16 Barefoot Networks, Inc. Packet reconstruction at deparser
US10911377B1 (en) 2017-07-23 2021-02-02 Barefoot Networks, Inc. Using stateful traffic management data to perform packet processing
US10708393B1 (en) 2017-08-31 2020-07-07 F5 Networks, Inc. Stateless communication using a stateful protocol
US10594630B1 (en) 2017-09-28 2020-03-17 Barefoot Networks, Inc. Expansion of packet data within processing pipeline

Family Cites Families (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2269150B1 (ja) * 1974-04-25 1977-10-28 Honeywell Bull Soc Ind
US4130865A (en) 1974-06-05 1978-12-19 Bolt Beranek And Newman Inc. Multiprocessor computer apparatus employing distributed communications paths and a passive task register
US5303344A (en) 1989-03-13 1994-04-12 Hitachi, Ltd. Protocol processing apparatus for use in interfacing network connected computer systems utilizing separate paths for control information and data transfer
US5251125A (en) 1990-04-30 1993-10-05 Eaton Corporation User interface for a process control device
US5321844A (en) 1990-12-20 1994-06-14 Siemens Aktiengesellschaft Method for error correction of software errors in a communication system
JP2791236B2 (ja) 1991-07-25 1998-08-27 三菱電機株式会社 プロトコル並列処理装置
US5706429A (en) 1994-03-21 1998-01-06 International Business Machines Corporation Transaction processing system and method
US5485460A (en) * 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
SE503219C2 (sv) 1994-09-05 1996-04-22 Ericsson Telefon Ab L M Anordning och förfarande för processbaserad meddelandehantering i ett kommunikationssystem
DE19530322A1 (de) 1995-08-17 1997-02-20 Siemens Ag Verfahren zum Übertragen von Signalisierungsinformationen innerhalb eines Breitband-ISDN-Kommunikationsnetzes
US6275861B1 (en) 1996-09-27 2001-08-14 Pmc-Sierra, Inc. Method and apparatus to identify flows in data systems
US6133846A (en) 1996-10-01 2000-10-17 Honeywell Inc. Low cost redundant communications system
US6070199A (en) 1996-11-13 2000-05-30 Extended Systems, Inc. Apparatus to connect a client computer to a computer data network
US5818852A (en) 1996-11-20 1998-10-06 Kapoor; Vijay Packet data communication method and system
US6233242B1 (en) 1996-12-30 2001-05-15 Compaq Computer Corporation Network switch with shared memory system
US6076115A (en) 1997-02-11 2000-06-13 Xaqti Corporation Media access control receiver and network management system
CH691155A5 (fr) 1997-02-13 2001-04-30 Fotowire Dev S A Procédé de traitement d'images et dispositif pour sa mise en oeuvre.
US6084855A (en) 1997-02-18 2000-07-04 Nokia Telecommunications, Oy Method and apparatus for providing fair traffic scheduling among aggregated internet protocol flows
US5892922A (en) 1997-02-28 1999-04-06 3Com Corporation Virtual local area network memory access system
US6252851B1 (en) 1997-03-27 2001-06-26 Massachusetts Institute Of Technology Method for regulating TCP flow over heterogeneous networks
US6219697B1 (en) 1997-05-02 2001-04-17 3Com Corporation Method and apparatus for operating the internet protocol over a high-speed serial bus
US6167027A (en) 1997-09-09 2000-12-26 Cisco Technology, Inc. Flow control technique for X.25 traffic in a high speed packet switching network
US6587884B1 (en) * 1997-09-10 2003-07-01 Schneider Automation, Inc. Dual ethernet protocol stack for maximum speed access to a programmable logic controller (PLC)
US6172980B1 (en) 1997-09-11 2001-01-09 3Com Corporation Multiple protocol support
FI107842B (fi) 1997-09-23 2001-10-15 Nokia Networks Oy Adaptiivinen prosessorijärjestelmä
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
JP3233208B2 (ja) 1998-04-30 2001-11-26 日本電気株式会社 レイヤ3フロースイッチング方法
US7100020B1 (en) 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6862622B2 (en) 1998-07-10 2005-03-01 Van Drebbel Mariner Llc Transmission control protocol/internet protocol (TCP/IP) packet-centric wireless point to multi-point (PTMP) transmission system architecture
US6300964B1 (en) 1998-07-30 2001-10-09 Genesis Microship, Inc. Method and apparatus for storage retrieval of digital image data
US6594701B1 (en) 1998-08-04 2003-07-15 Microsoft Corporation Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data
US6237021B1 (en) 1998-09-25 2001-05-22 Complex Data Technologies, Inc. Method and apparatus for the efficient processing of data-intensive applications
JP3397144B2 (ja) 1998-09-29 2003-04-14 日本電気株式会社 パケット処理装置とパケット処理方法とパケット交換機
US6621799B1 (en) 1998-10-05 2003-09-16 Enterasys Networks, Inc. Semi-reliable data transport
US20040030873A1 (en) 1998-10-22 2004-02-12 Kyoung Park Single chip multiprocessing microprocessor having synchronization register file
US6279041B1 (en) * 1998-11-13 2001-08-21 International Business Machines Corporation Methods, systems and computer program products for differencing data communications using a message queue
SE9901145D0 (sv) 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
US6338078B1 (en) 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US6978312B2 (en) 1998-12-18 2005-12-20 Microsoft Corporation Adaptive flow control protocol
US6658469B1 (en) 1998-12-18 2003-12-02 Microsoft Corporation Method and system for switching between network transport providers
US6321269B1 (en) 1998-12-29 2001-11-20 Apple Computer, Inc. Optimized performance for transaction-oriented communications using stream-based network protocols
US6347337B1 (en) 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US6393458B1 (en) * 1999-01-28 2002-05-21 Genrad, Inc. Method and apparatus for load balancing in a distributed object architecture
US7328270B1 (en) 1999-02-25 2008-02-05 Advanced Micro Devices, Inc. Communication protocol processor having multiple microprocessor cores connected in series and dynamically reprogrammed during operation via instructions transmitted along the same data paths used to convey communication data
US6480489B1 (en) 1999-03-01 2002-11-12 Sun Microsystems, Inc. Method and apparatus for data re-assembly with a high performance network interface
US6453360B1 (en) 1999-03-01 2002-09-17 Sun Microsystems, Inc. High performance network interface
US7102998B1 (en) 1999-03-22 2006-09-05 Lucent Technologies Inc. Scaleable congestion control method for multicast communications over a data network
US6768992B1 (en) 1999-05-17 2004-07-27 Lynne G. Jolitz Term addressable memory of an accelerator system and method
JP3449294B2 (ja) * 1999-06-18 2003-09-22 日本電気株式会社 マルチプロトコル処理装置、回線インターフェース及びそれらを有するマルチプロトコルスイッチシステム
US6957255B1 (en) * 1999-06-28 2005-10-18 Amdocs (Israel) Ltd. Method and apparatus for session reconstruction and accounting involving VoIP calls
EP1196856B1 (en) 1999-06-30 2011-01-19 Apptitude, Inc. Method and apparatus for monitoring traffic in a network
US6970913B1 (en) 1999-07-02 2005-11-29 Cisco Technology, Inc. Load balancing using distributed forwarding agents with application based feedback for different virtual machines
US6985431B1 (en) 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
US6460120B1 (en) 1999-08-27 2002-10-01 International Business Machines Corporation Network processor, memory organization and methods
US6668317B1 (en) 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6532501B1 (en) 1999-09-30 2003-03-11 Silicon Graphics, Inc. System and method for distributing output queue space
US7106756B1 (en) 1999-10-12 2006-09-12 Mci, Inc. Customer resources policy control for IP traffic delivery
JP2001167066A (ja) 1999-12-08 2001-06-22 Nec Corp プロセッサ間通信方法及びマルチプロセッサシステム
JP4344442B2 (ja) 1999-12-17 2009-10-14 富士機械製造株式会社 チャック装置
US6307789B1 (en) 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6662213B1 (en) 2000-01-10 2003-12-09 Sun Microsystems, Inc. System and method for ensuring delivery of a single communication between nodes
US7649901B2 (en) * 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US6981027B1 (en) 2000-04-10 2005-12-27 International Business Machines Corporation Method and system for memory management in a network processing system
US6735717B1 (en) 2000-04-13 2004-05-11 Gnp Computers, Inc. Distributed computing system clustering model providing soft real-time responsiveness and continuous availability
US7215637B1 (en) 2000-04-17 2007-05-08 Juniper Networks, Inc. Systems and methods for processing packets
US7013394B1 (en) 2000-04-18 2006-03-14 International Business Machines Corporation Data flow pattern recognition and manipulation
US7114008B2 (en) 2000-06-23 2006-09-26 Cloudshield Technologies, Inc. Edge adapter architecture apparatus and method
US6947963B1 (en) 2000-06-28 2005-09-20 Pluris, Inc Methods and apparatus for synchronizing and propagating distributed routing databases
US7031267B2 (en) 2000-12-21 2006-04-18 802 Systems Llc PLD-based packet filtering methods with PLD configuration data update of filtering rules
US6907005B1 (en) 2000-07-24 2005-06-14 Telefonaktiebolaget L M Ericsson (Publ) Flexible ARQ for packet data transmission
US7177945B2 (en) 2000-08-04 2007-02-13 Avaya Technology Corp. Non-intrusive multiplexed transaction persistency in secure commerce environments
US7222150B1 (en) * 2000-08-15 2007-05-22 Ikadega, Inc. Network server card and method for handling requests received via a network interface
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US6594712B1 (en) 2000-10-20 2003-07-15 Banderacom, Inc. Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link
US6757769B1 (en) 2000-11-28 2004-06-29 Emc Corporation Cooperative lock override procedure
US7028092B2 (en) 2000-12-11 2006-04-11 Acme Packet, Inc. System and method for assisting in controlling real-time transport protocol flow through multiple networks via media flow routing
JP4403348B2 (ja) 2000-12-14 2010-01-27 ソニー株式会社 通信装置及び通信方法
US7301933B1 (en) 2000-12-22 2007-11-27 Cisco Technology, Inc. Delivery of a service program to a digital signal processor within a multiservice processing system
JP2004525449A (ja) 2001-02-14 2004-08-19 クリアスピード・テクノロジー・リミテッド 相互接続システム
US6987760B2 (en) 2001-03-05 2006-01-17 International Business Machines Corporation High speed network processor
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7222347B2 (en) * 2001-03-29 2007-05-22 Intel Corporation Method and apparatus for processing real-time events associated with a wireless communication protocol
US7085869B1 (en) 2001-04-04 2006-08-01 Advanced Micro Devices, Inc. Arrangement for managing transmitted packets requiring acknowledgement in a host channel adapter
US6842809B2 (en) 2001-04-12 2005-01-11 International Business Machines Corporation Apparatus, method and computer program product for converting simple locks in a multiprocessor system
US6937606B2 (en) 2001-04-20 2005-08-30 International Business Machines Corporation Data structures for efficient processing of IP fragmentation and reassembly
US7274706B1 (en) 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
US20040004966A1 (en) 2001-04-27 2004-01-08 Foster Michael S. Using virtual identifiers to route transmitted data through a network
US7143131B1 (en) 2001-05-04 2006-11-28 Microsoft Corporation Transmission control protocol
US7464154B2 (en) * 2001-05-18 2008-12-09 Network Resonance, Inc. System, method and computer program product for analyzing data from network-based structured message stream
US7287649B2 (en) 2001-05-18 2007-10-30 Broadcom Corporation System on a chip for packet processing
US6925537B2 (en) 2001-06-11 2005-08-02 Hewlett-Packard Development Company, L.P. Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
US7308715B2 (en) 2001-06-13 2007-12-11 Mcafee, Inc. Protocol-parsing state machine and method of using same
US7085286B2 (en) 2001-06-29 2006-08-01 International Business Machines Corporation Stateful business-to-business protocol exchange
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US20030033379A1 (en) 2001-07-20 2003-02-13 Lemur Networks Intelligent central directory for soft configuration of IP services
US7031311B2 (en) 2001-07-23 2006-04-18 Acme Packet, Inc. System and method for providing rapid rerouting of real-time multi-media flows
US20030037154A1 (en) * 2001-08-16 2003-02-20 Poggio Andrew A. Protocol processor
US7039037B2 (en) 2001-08-20 2006-05-02 Wang Jiwei R Method and apparatus for providing service selection, redirection and managing of subscriber access to multiple WAP (Wireless Application Protocol) gateways simultaneously
WO2003021443A1 (en) 2001-08-31 2003-03-13 Adaptec, Inc. Systems and methods for implementing host-based security in a computer network
US20030046330A1 (en) 2001-09-04 2003-03-06 Hayes John W. Selective offloading of protocol processing
US6909713B2 (en) * 2001-09-05 2005-06-21 Intel Corporation Hash-based data frame distribution for web switches
EP1530761A4 (en) 2001-09-19 2008-01-23 Bay Microsystems Inc VERTICAL INSTRUCTION AND DATA PROCESSING IN A NETWORK PROCESSOR ARCHITECTURE
US7360217B2 (en) 2001-09-28 2008-04-15 Consentry Networks, Inc. Multi-threaded packet processing engine for stateful packet processing
US7051112B2 (en) 2001-10-02 2006-05-23 Tropic Networks Inc. System and method for distribution of software
US6920485B2 (en) 2001-10-04 2005-07-19 Hewlett-Packard Development Company, L.P. Packet processing in shared memory multi-computer systems
US7676588B2 (en) 2001-10-05 2010-03-09 International Business Machines Corporation Programmable network protocol handler architecture
US7072970B2 (en) 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
US20030074473A1 (en) 2001-10-12 2003-04-17 Duc Pham Scalable network gateway processor architecture
US7257817B2 (en) 2001-10-16 2007-08-14 Microsoft Corporation Virtual network with adaptive dispatcher
JP2003140837A (ja) 2001-10-30 2003-05-16 Hitachi Ltd ディスクアレイ制御装置
US7046676B2 (en) 2001-11-01 2006-05-16 International Business Machines Corporation QoS scheduler and method for implementing quality of service with cached status array
US6977932B1 (en) 2002-01-16 2005-12-20 Caspian Networks, Inc. System and method for network tunneling utilizing micro-flow state information
US7346707B1 (en) 2002-01-16 2008-03-18 Advanced Micro Devices, Inc. Arrangement in an infiniband channel adapter for sharing memory space for work queue entries using multiply-linked lists
US7076555B1 (en) 2002-01-23 2006-07-11 Novell, Inc. System and method for transparent takeover of TCP connections between servers
US6836808B2 (en) 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing
US7237031B2 (en) 2002-03-07 2007-06-26 Sun Microsystems, Inc. Method and apparatus for caching protocol processing data
US6944670B2 (en) 2002-03-13 2005-09-13 Commatch Ltd. Method and apparatus for multiple processing of a plurality of communication protocols on a single processing machine
US7302492B1 (en) 2002-04-09 2007-11-27 Cisco Technology, Inc. Method and apparatus for matching web service in applications using a data object exchange protocol
US7631107B2 (en) 2002-06-11 2009-12-08 Pandya Ashish A Runtime adaptable protocol processor
US20030231660A1 (en) 2002-06-14 2003-12-18 Bapiraju Vinnakota Bit-manipulation instructions for packet processing
US7289480B2 (en) 2002-06-24 2007-10-30 Telefonaktiebolaget Lm Ericsson (Publ) Applications based radio resource management in a wireless communication network
US7313140B2 (en) 2002-07-03 2007-12-25 Intel Corporation Method and apparatus to assemble data segments into full packets for efficient packet-based classification
US7327705B2 (en) 2002-07-03 2008-02-05 Massachusetts Institute Of Technology Hybrid wireless network for data collection and distribution
US7516202B2 (en) 2002-07-10 2009-04-07 Nortel Networks Limited Method and apparatus for defining failover events in a network device
US7089282B2 (en) 2002-07-31 2006-08-08 International Business Machines Corporation Distributed protocol processing in a data processing system
US7076545B2 (en) * 2002-07-31 2006-07-11 Sun Microsystems, Inc. Load balancing the servicing of received packets
US8015303B2 (en) 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US20040042475A1 (en) 2002-08-30 2004-03-04 Bapiraju Vinnakota Soft-pipelined state-oriented processing of packets
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7137040B2 (en) 2003-02-12 2006-11-14 International Business Machines Corporation Scalable method of continuous monitoring the remotely accessible resources against the node failures for very large clusters
US7210061B2 (en) 2003-04-17 2007-04-24 Hewlett-Packard Development, L.P. Data redundancy for writes using remote storage system cache memory
US7085896B2 (en) * 2003-04-30 2006-08-01 International Business Machines Corporation Method and apparatus which implements a multi-ported LRU in a multiple-clock system

Also Published As

Publication number Publication date
US8015303B2 (en) 2011-09-06
US20040024894A1 (en) 2004-02-05
EP1546843B1 (en) 2017-06-28
EP1546843A4 (en) 2009-01-14
AU2003251842A1 (en) 2004-02-23
EP1546843A2 (en) 2005-06-29
CN1688989A (zh) 2005-10-26
WO2004013720A2 (en) 2004-02-12
AU2003251842A8 (en) 2004-02-23
CN1688989B (zh) 2010-04-28
WO2004013720A3 (en) 2004-04-29
JP2005535226A (ja) 2005-11-17
EP2372489A1 (en) 2011-10-05

Similar Documents

Publication Publication Date Title
JP4242835B2 (ja) 高データレートのステートフルプロトコル処理
US7814218B1 (en) Multi-protocol and multi-format stateful processing
US7802001B1 (en) System and method for flow control within a stateful protocol processing system
US6928478B1 (en) Method and apparatus for implementing a MAC address pool for assignment to a virtual interface aggregate
US9361042B2 (en) Accelerating internet small computer system interface (iSCSI) proxy input/output (I/O)
US9535867B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
US8631162B2 (en) System and method for network interfacing in a multiple network environment
JP4012545B2 (ja) リモート・ダイレクト・メモリ・アクセス対応ネットワーク・インタフェース・コントローラのスイッチオーバーとスイッチバックのサポート
US7076569B1 (en) Embedded channel adapter having transport layer configured for prioritizing selection of work descriptors based on respective virtual lane priorities
US7555002B2 (en) Infiniband general services queue pair virtualization for multiple logical ports on a single physical port
US8051212B2 (en) Network interface adapter with shared data send resources
US6493343B1 (en) System and method for implementing multi-pathing data transfers in a system area network
US7664892B2 (en) Method, system, and program for managing data read operations on network controller with offloading functions
US8099521B2 (en) Network interface card for use in parallel computing systems
US20050144402A1 (en) Method, system, and program for managing virtual memory
CN113490927A (zh) 具有硬件集成和乱序放置的rdma输送
US7539760B1 (en) System and method for facilitating failover of stateful connections
WO2020171988A1 (en) Rdma transport with hardware integration
US6816889B1 (en) Assignment of dual port memory banks for a CPU and a host channel adapter in an InfiniBand computing node
US8151278B1 (en) System and method for timer management in a stateful protocol processing system
US20020078265A1 (en) Method and apparatus for transferring data in a network data processing system
US7292593B1 (en) Arrangement in a channel adapter for segregating transmit packet data in transmit buffers based on respective virtual lanes
US7596621B1 (en) System and method for managing shared state using multiple programmed processors
JPH0320094B2 (ja)
US8090832B1 (en) Method and apparatus for allocating network protocol operation resources

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060614

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081225

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees