JP2005510893A - データ・ストリーム・プロセッサにおけるデータ・ストリームの操作 - Google Patents

データ・ストリーム・プロセッサにおけるデータ・ストリームの操作 Download PDF

Info

Publication number
JP2005510893A
JP2005510893A JP2002582564A JP2002582564A JP2005510893A JP 2005510893 A JP2005510893 A JP 2005510893A JP 2002582564 A JP2002582564 A JP 2002582564A JP 2002582564 A JP2002582564 A JP 2002582564A JP 2005510893 A JP2005510893 A JP 2005510893A
Authority
JP
Japan
Prior art keywords
descriptor
scheduler
queue
packet
traffic
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.)
Granted
Application number
JP2002582564A
Other languages
English (en)
Other versions
JP4070610B2 (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.)
NXP USA Inc
Original Assignee
NXP USA 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 NXP USA Inc filed Critical NXP USA Inc
Publication of JP2005510893A publication Critical patent/JP2005510893A/ja
Application granted granted Critical
Publication of JP4070610B2 publication Critical patent/JP4070610B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/15Flow control; Congestion control in relation to multipoint traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/58Changing or combining different scheduling modes, e.g. multimode scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/60Queue scheduling implementing hierarchical scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • H04L49/203ATM switching fabrics with multicast or broadcast capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/255Control mechanisms for ATM switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5647Cell loss
    • H04L2012/5648Packet discarding, e.g. EPD, PTD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5651Priority, marking, classes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5679Arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management
    • H04L2012/5682Threshold; Watermark
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/40Constructional details, e.g. power supply, mechanical construction or backplane
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/501Overload detection
    • H04L49/503Policing

Landscapes

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

Abstract

パケットのストリーム上でユーザが設定することができるトラヒック管理機能を実行するための技術。この機能は、シェーピングおよびセグメント分割および再組立てを含むマルチキャスト、廃棄、スケジューリングを含む。上記技術の場合、上記機能は、ストリームのパケット上で直接実行されるのではなく、記憶したパケットを表す記述子上で実行される。パケットの記述子は、パケットに対する少なくとも1つの識別子および記述子上で実行されるトラヒック管理機能のセットに対する指定子を含む。ユーザは、記述子のトラヒック・キューに対するトラヒック管理機能のセットを構成する。マルチキャストの場合には、記述子はコピーされ、2つ以上のトラヒック・キュー上に置かれる。廃棄の場合には、記述子は廃棄トラヒック・キュー内に置かれる。廃棄トラヒック・キュー内の記述子が表すパケットは、バッファから廃棄される。廃棄トラヒック・キューを含むすべてのトラヒック・キューからの記述子の出力はスケジュールされる。スケジューリングはスケジューラの階層により行われる。この技術はトラヒック管理コプロセッサ集積回路で実施される。本明細書は、また、修正部分パケット廃棄アルゴリズムおよびフレームをベースとする不足ラウンドロビン・スケジューリング・アルゴリズムも開示している。

Description

(関連出願への相互参照)
本特許出願は、2001年4月13日に提出された米国仮特許出願番号60/283746の優先権を主張する。
本発明は、一般に、パケット・スイッチおよびルータなどの装置でのデジタル・データのストリームの処理に関する。本発明は、より詳細には、出力ストリームのシェーピングおよび出力ストリームのセグメント分割または再組立てを含む多数のストリームへのパケットのマルチキャスト、ストリーム内のパケットの廃棄、およびスケジューリングなどの処理に関する。
<パケットおよびプロトコル>
デジタル・システム間の通信では、通常「パケット」が使用される。図1の参照番号113はパケットを示す。パケットとは、その意味がプロトコルにより決定される単なる一連のビットである。プロトコルとは、パケットを処理するデジタル装置が、パケット内のビットをどのように解釈すべきかを定義するものである。大部分のパケットは、プロトコルが何であれ、特定のパケットをプロトコルに従ってどのように処理すべきかを示すヘッダ115、およびパケットにより送られる実際の情報であるペイロード117を有する。パケットは、このほかに単にパケットの終わりを示し得るトレーラ119を有することがあるが、パケットの送信または処理中に発生した誤りを検出または訂正することができる情報を含むこともある。パケットは、パケットを定義するプロトコルに応じて、固定長または可変長であり得る。以下の説明においては、ヘッダ115およびトレーラ119の内容を「プロトコル・データ」と呼ぶ。この理由は、ヘッダ115およびトレーラ119の内容を解釈する方法が、プロトコルにより完全に決定されるためである。ペイロード117の内容は「ペイロード・データ」と呼ばれる。あるプロトコルに対するパケットは、多くの場合、「フレーム」または「セル」と呼ばれる。
パケットは、デジタル・システムにおいて、多様なレベルで通信のために使用される。このため、デジタル・システムのあるレベルでのパケットのグループのペイロードが、より高いレベルのパケットであることもある。このような例を、図1の参照番号137に示す。IPパケット121は、IPプロトコルにより解釈されるパケットである。IPパケット121は、IPヘッダ123および可変長IPペイロード125を有する。IPヘッダ123内の情報には、IPペイロード125の長さが含まれている。IPパケット121が物理ネットワークを介して送られる場合には、IPパケットは、転送パケット127のストリーム135のペイロードで送信される。各転送パケット127は、自分自身のヘッダ129、ペイロード131、およびトレーラ133を有する。本明細書で転送パケットとの用語は、ISO7層モデルのリンク層におけるパケットを指す。転送パケットは、リンク層内で使用するプロトコルに応じて、固定長または可変長であり得る。
転送パケットを処理する装置は、パケット内のヘッダ129およびトレーラ133に示されるとおりに処理を行い、ペイロード131の内容をチェックしない。転送パケットがその宛先に到着した場合には、ペイロードは、本例ではIPプロトコルにより動作する構成要素であるシステムの目的の部分に送られ、この構成要素がIPヘッダ123に示されるとおりにIPパケット121を処理する。当然ながら、IPペイロード125は、他のより高いレベルに対するパケットであってもよい。例えば、IPペイロードは、解読装置宛のパケットであってもよいし、そのパケットのペイロードは、暗号化されたIPパケッ
ト121であってもよい。このような場合、IPパケット121を処理する構成要素は、ペイロードを解読装置に送る。解読装置は暗号化されたIPパケット121を解読し、解読したIPパケットをさらに処理するするため、IPパケットを処理する構成要素に返送する。当然ながら、この処理は、解読したIPパケットの他の宛先への送信を含み、その宛先との通信が転送パケット127に対するプロトコルに従う場合には、IPパケットを処理する構成要素は、解読したIPパケットを、転送パケット・ストリームを生成する構成要素に提供し、解読されたIPパケットは転送パケット127のペイロードに格納される。
<パケット・スイッチ>
相互に離れた場所にあるデジタル・システム間で通信を行うためにパケットを使用する場合には、パケットは、システムを接続しているデジタル・ネットワーク上を移動する。デジタル・ネットワークは、物理レベルで、2つの装置間で信号を送信するために、例えば、イーサ(ether)、導線または光ケーブルなどの任意の媒体を使用することができる。パケットは、パケット・スイッチにより送信経路間でルーティングされる。パケット・スイッチは、通常は、パケット・ヘッダ内に含まれている情報によりパケットをルーティングする。
予想されるように、各種のプロトコルは、それ自身のルーティング規則を有する。例えば、IPプロトコルは、論理ルーティング(logical routing)を使用する。この場合、IPパケットの各ソースまたは宛先は論理IPアドレスを有し、所与の宛先へのIPパケットは、そのヘッダ内に宛先の論理IPアドレスを有する。ヘッダは宛先の物理的な位置を示すものではない。IPパケット・スイッチは、宛先への経路の少なくとも一部でIPアドレスをパケットを取得する物理アドレスに変換しなければならず、その物理アドレス宛てのIPパケットをペイロード131として運ぶ転送パケットのストリーム135を生成しなければならない。このため、IPノード109(n)はイーサネットLAN105(a)上のイーサネット・ノード107(n)上に位置し、LAN105(a)に接続しているIPパケット・スイッチは、そのペイロードとしてIPパケットを運ぶイーサネット・ノード107(n)宛のイーサネット・パケットのストリームを生成することにより、IPノード109(n)宛のIPパケットに応答しなければならない。
参照番号103は、典型的なパケット・スイッチを示す。パケット・スイッチ103は、多数の物理媒体106に接続しており、これによって、パケット・スイッチ103はデータを送受信することができるようになる。このような媒体の例としては、光ファイバ・ケーブル、または導体からなるケーブル等がある。このような各媒体106は、媒体を介して送られるデータを定義するため、自身のプロトコルを有する。光ケーブルによりデータを送るために広く使用されている1つのプロトコルの例に、SONETプロトコルがある。図1においては、媒体106(a…m)はSONETプロトコルを使用する光ケーブルであり、媒体106(n…z)は電気ケーブルである。本明細書においては、媒体パケットと呼ぶ媒体レベルのパケットは、自身のペイロード転送パケットを有する。ISO7層モデルの場合には、媒体パケットは、物理層パケットである。スイッチ103においては、光ケーブル上で送受信される転送パケットは、ATMワイド・エリア・ネットワーク111で使用されるATMプロトコルに従って形成されたパケットであり、一方、電気ケーブル上で送受信される転送パケットは、ローカル・エリア・ネットワーク109で使用されるイーサネット(商標)プロトコルに従って形成される。多くの場合、転送パケットは、そのペイロードとしてIPパケットを有し、このような場合、パケット・スイッチ103は、IPパケットをIPノード109にルーティングする。すでに説明したように、パケット・スイッチは、その宛先に到着するためにIPパケットが移動しなければならない媒体106(i)を決定し、次にそのペイロードとしてその媒体と併用する転送パケット・ストリームを有する媒体のために必要なプロトコルに従ってパケットのストリームを生成することによって上記ルーティングを行い、パケットのストリームはそのペイロード
としてIPパケットを有する。このため、パケット・スイッチ103がWAN111からIPノード109(n)宛のIPパケットを受信し、IPノード109(n)がイーサネットLAN105(a)上のイーサネット・ノード107(n)内に位置している場合には、パケット・スイッチ103は、そのペイロードが、そのペイロードとしてIPパケットを運ぶイーサネット・ノード107(n)宛のイーサネット・パケットのストリームである媒体106(n)が必要とする形でパケットのストリームを形成しなければならない。
パケット・スイッチ103が実行する機能は、パケット・スイッチが動作するネットワーク環境およびパケット・スイッチの能力により異なる。本明細書においては、以下の説明のために重要な機能をトラヒック管理機能と呼ぶ。トラヒック管理機能には下記の3つの一般的なグループがある。
・特定の発信元から受信したパケットを少なくとも1つの異なる宛先にルーティングする機能。
・ルーティングのためにパケット・ストリームを変換する機能。
・データを送信するスイッチ103も装置も、過負荷とならないように、またサービスを提供するスイッチ103およびネットワークが均等化に効率的に使用されるようにトラヒックを制御する機能。
これらの機能についてさらに詳細に説明すると、ルーティングはフィルタリングおよびマルチキャストを含む。フィルタリングはネットワーク境界において行われる。図では、パケット・スイッチ103は、専用網104と公衆網102の間の境界に位置する。各IPパケット121のヘッダは、そのパケットに対する発信元IPアドレスおよび宛先IPアドレスを含み、専用網104の機密保護ポリシーは、専用網104へのいくつかの発信元アドレスを含む公衆網102からのIPパケットによるアクセスを禁止し、同様に公衆網102へのいくつかの発信元アドレスを含む専用網104からのパケットによるアクセスも禁止する。スイッチ103は、その発信元アドレスを、禁止すべき発信元アドレスのリストと比較することにより、受信した各IPパケットをフィルタリングし、受信パケットの発信元アドレスがリストに存在する場合には、それを廃棄する。スイッチ103は同じような方法によって送信パケットをフィルタリングする。マルチキャストとは、発信元から受信したパケットのコピーを複数の宛先に送信することである。
ストリーム変換は、ATM転送パケットのストリームとして受信したIPパケットを、イーサネット転送パケットのストリームとして、その宛先に送信されるIPパケットに変換する上記の変換のような動作を含む。このような動作は、通常、スイッチで高いレベルのパケットを受信した場合に、その転送パケットのペイロードからより高いレベルのパケットを再組立てするステップと、それがスイッチから送信される時に、より高いレベルのパケットを転送パケットにセグメント分割するステップとを含む。ストリーム変換には、また、ペイロードの暗号化および解読も含まれる。暗号化または解読が行われる場所としてはネットワークの境界等がある。例えば、専用網104の機密保護ポリシーは、公衆網102内のある宛先に送るIPパケットを暗号化することを要求する場合があり、暗号化はスイッチ103内で実行することができる。また、スイッチ103は、専用網104にパケットが着信した場合には、これらの宛先からのパケットを解読することができる。
トラヒックの制御は、スイッチ103およびその下流の宛先を、出力帯域幅が効率的に使用され、可能な範囲でネットワーク・リソースおよびタイミングの点で各出力ストリームの要件が満足できるようにパケットを廃棄し、スイッチ103からのパケットの出力のスケジュールを作成することにより過負荷にならないようにするステップを含む。この点
に関し、出力ストリームのこの要件は、「サービス・クラス」と呼ばれる。パケット・スイッチは、電子メールからパケット電話までの範囲のサービス・クラスを処理できなければならない。電子メールでは、パケットが、デジタルTVを介して送った後妥当な時間(数時間のこともある)の後に到着しさえすればよく、パケットは一定の時間間隔で到着する必要があるのに対し、パケット電話では、パケット間の時間間隔に対する厳しい要求のみならず、パケットが発信元からその宛先までネットワークを横断するために要する総時間に関しても厳しい制約がある。
図面内の参照番号は、3桁またはそれ以上である。一般的に、一番左の桁は図面番号であり、右2桁は、図面内の参照番号である。このため、参照番号203で示す要素は、最初に図2の要素203として使用されている。下記の表は、この規則の例外を示す。
Figure 2005510893
以下の詳細な説明においては、最初に、本明細書に開示する技術を実行することができる環境の概略を説明し、次に上記技術を実行するトラヒック・マネージャについて詳細に説明し、最後に、トラヒック・マネージャ集積回路および外部メモリICを使用するトラヒック・マネージャの実施について説明する。
<ルック・アサイド・データ・ストリーム操作>
本明細書で開示するデータ・ストリーム操作のための技術は、ルック・アサイド・データ・ストリーム操作を使用する環境で実行される。ルック・アサイド・データ・ストリーム操作の場合には、パケットのペイロードがネットワーク入力から受信され、それがネットワーク出力に出力されるまで記憶される。パケットを受信すると、パケットを表す「記述子」が作成される。本明細書において記述子という用語を使用する場合、記述子は、記憶したペイロードと、環境が、ペイロードが属するパケット・ストリームを操作する方法を制御する追加情報用の識別子とを含む。データ・ストリームの操作は、それが表すパケットではなく記述子により行われる。例えば、入力から出力へのパケットの切替えは、出力によりサービスを受けるキュー上に記述子を置くことにより行われる。記述子がキューの一番前に来ると、出力は、出力のために必要な形の記述子に関連づけられたペイロードを出力するために、操作情報およびペイロード記述子を使用する。マルチキャスト、速度管理、輻輳による廃棄、スケジューリングまたはセグメント分割および再組立てのような他の動作は、ペイロードではなく記述子を操作することにより、全体またはその一部が同じような方法によって実行される。
<ルック・アサイド・データ・ストリーム操作のための環境:図2>
図2は、ルック・アサイド・データ・ストリーム操作が実行される環境201である。環境201は、2つの主な構成要素、すなわち、これらが示すペイロードから独立して記述子を操作するデジタル通信プロセッサ(DCP)202、ならびにマルチキャスト、速度管理および廃棄、スケジューリング、シェーピング、およびデジタル通信プロセッサ202のための再組立ておよびセグメント分割のようなより高いレベルのデータ・ストリーム操作を行うトラヒック管理コプロセッサ(TMC)203を有する。ある実施形態の場合には、DCP202およびTMC203は、追加の外部メモリICを有する集積回路として実施される。別の実施形態においては、DCPおよびTMCはそのようには実施されない。また別の実施形態においては、TMC203をDCP202に内蔵させることができる。DCP202のICの一実施例としては、01845 米国マサチューセッツ州アンドーバー、ウォーター・ストリート120所在のCポート・コーポレーション(C−Port Corporation)社が市販しているC−5(登録商標)がある。C−5のプロトタイプの実施は、1999年11月18日付けの、「デジタル通信プロセッサ」(Digital Communications Processor)という名称で、Cポート・コーポレーション(C−Port Corporation)社の国際PCT特許出願第WO99/59078号公報に詳細に記載されている。
DCP202についてより詳細には、DCP202は、入力219(0…m)において少なくとも1つのネットワークからデータ・ストリームを受信し、出力225(0…p)において少なくとも1つのネットワークへデータ・ストリームを送信する。本発明に関係があるDCP202の内部構成要素は下記のとおりである。
・データ・ストリームを処理するチャネル・プロセッサ。チャネル・プロセッサは、
−入力219(0…m)において受信したデータ・ストリームを処理する受信プロセッサ221、および
−出力225(0…p)に送られるデータ・ストリームを処理する送信プロセッサ223を備える。
また、チャネル・プロセッサは、DCP202の内部でペイロードを処理するために使用することもできる。
・入力219(0…m)を介して受信したペイロードを、出力225(0…p)を通して出力されるまでペイロード・バッファ229内に記憶するバッファ管理ユニット227。
・記述子のキュー213を記憶するキュー管理ユニット211。
チャネル・プロセッサは、異なるタイプの転送パケットおよび物理層データ表現を処理するように構成することができる。記述子は、チャネル・プロセッサにより作成され、読み出される。ほとんどの場合、記述子は、バッファ管理ユニット227内に記憶されているペイロードを表し、記述子が表すペイロードを含むペイロード・バッファ229(i)に対する識別子を含む。記述子がDCP202内にとどまっている限り、その内容は、単に記述子およびそれを読むチャネル・プロセッサを作成するチャネル・プロセッサのニーズにより決定される。DCP202内にとどまっている記述子は、以下の説明においては、チャネル・プロセッサ記述子と呼ぶ。参照番号214はそのような記述子の1つを示す。記述子がTMC203およびチャネル・プロセッサによって処理される場合には、記述子はTMC203が使用するための追加情報を含んでいなければならない。このような追加情報を含んでいる記述子は、以下の説明においてTMC記述子216と呼ぶ。
ATMパケットを転送パケットとして使用し、光物理層を有するネットワークからIPパケットを受信し、イーサネット・パケットを転送パケットとして使用し、電子物理層を有するネットワークへIPパケットを出力する例を参照しながら、データ・ストリームを
処理するために、DCP202の構成要素が相互に作用する方法について説明する。受信ストリーム219(i)は、光物理層およびATMトランスポート層を有するデータ・ストリームを処理し、IPパケットを処理するように構成された受信プロセッサ221(i)により受信される。受信プロセッサ221(i)がストリーム219(i)を受信すると、受信プロセッサは、ストリームからIPパケット・ペイロードを抽出し、バッファ管理ユニット227内のペイロード・バッファ229(j)にIPパケット・ペイロードを書き込み、ペイロード・バッファ229(j)のための識別子を保持する。識別子は、チャネル・プロセッサ記述子214(k)内に置かれる。記述子は、さらに、IPパケットから他のプロトコル・データを含むことができる。受信プロセッサ221(i)は、さらに、キュー管理ユニット211内のどの記述子のキュー213(l)が、IPパケットのための記述子を置くべきかを決定するために、IPパケット・ヘッダ内のアドレス情報を処理し、記述子214(k)をキューの末尾に置く。このキュー213(l)は、所望のネットワークに出力する送信プロセッサ223(j)により読み出される。送信プロセッサ223(j)は、イーサネット・トランスポート層および電子物理層によりIPパケットを出力するように構成されている。記述子214(k)がキュー213(l)の先頭に到着すると、送信プロセッサ223(j)は、バッファ229(j)の位置を発見するために記述子214(k)内の情報を使用し、適当なトランスポート層および物理層を使用して、ペイロードをIPパケットとして出力する。
<環境201内のトラヒック管理>
DCP202の動作の上記説明を読めば理解することができると思うが、DCP202は、最も簡単なトラヒック管理機能のためだけにそれ自身の十分なリソースを有する。DCP202は、特定の入力219(i)において受信したデータ・ストリームを特定の出力219(j)にルーティングすることができ、必要に応じてこのルーティングのためにデータ・ストリームを変換することができる。チャネル・プロセッサ内の再循環機能により、さらに、暗号化および解読のようなデータ・ストリームの変換を行うこともできる。しかし、DCP202は、DCP202自身の状態、またはDCP202により接続しているネットワーク内の装置の要件の知識を必要とする、「より高度な」トラヒック管理機能を実行するだけの十分なリソースを有さない。このような機能の例としては、パケットの廃棄、スケジューリング、シェーピング、およびパケット再組立ておよびセグメント分割等がある。
環境201においては、このようなより高度なトラヒック管理機能が、トラヒック管理コプロセッサ203により実行される。好ましい一実施形態では、このトラヒック管理コプロセッサ203は、外部メモリを有し、DCP202のIC実施形態と協働して作動するように設計されているICである。DCP202をTMC203と併用する場合には、キュー管理ユニットは、DCP202のところで説明したように使用されるローカル・キュー245ばかりでなく、TMC203に送られるTMC記述子216に対するキュー243、およびTMC203から受信した記述子に対する少なくとも1つのキュー247を含む。DCP202が処理しているデータ・ストリームが、少なくとも1つのより高度なトラヒック管理機能を必要とする場合には、データ・ストリームを受信中の受信プロセッサ221(i)は、QMU211に、キュー243の末尾に追加するTMC記述子216を提供する。コプロセッサ203は、このTMC記述子216(i)を、そのデータ・ストリームおよび、多くの場合、そのトラヒックを記述子216(i)が関連するデータ・ストリームと共に管理しなければならない他のデータ・ストリームに対するトラヒック・キュー204(m)内に置く。トラヒック・キューのTMC記述子は、どのTMC203が記述子と関連し、どう関連するのかを決定するために置かれる。このため、広義では、トラヒック・キューは、一組の記述子をTMC203内の一組のトラヒック管理機能と関連づける。以下にさらに詳細に説明するように、トラヒック・キューも、一組の記述子をDCP202内の一組のパケット処理機能と関連づける。
トラヒック・キューには2つの一般的なクラスがある。すなわち、DCP202により廃棄されないパケットに対する記述子に対する非廃棄トラヒック・キュー249と、TMC203が廃棄すべきであると決定したパケットに対する記述子に対する廃棄トラヒック・キュー251である。TMC203は、参照番号207で示すように、特定のトラヒック・キュー204(m)の先頭からTMC記述子216を読み出し、TMC記述子216を処理するためにQMU211が必要とする情報を追加し、TMC記述子をQMU記述子に変換し、QMU記述子をキュー管理ユニット211に提供する。キュー管理ユニット211は、次に、QMU記述子内に含まれているcp記述子を、記述子が表すパケットに対してDCP202内で行わなければならないさらなる処理のために記述子キュー213(n)の末尾に置く。以下にさらに詳細に説明するように、TMC203への記述子の入力、およびTMC203からの記述子の出力の流れの制御が行われる。後者の場合、流れ制御は、TMC203からのQMU211への流れを制御するばかりでなく、キュー247内の個々のキュー213への記述子の流れも制御する。
例えば、トラヒック・キューが、廃棄トラヒック・キューである場合には、キュー管理ユニット211は、記述子を、バッファ管理ユニット227からのキューにより表されるパケットを廃棄するために必要な処理を行うチャネル・プロセッサによりサービスの提供を受けるキュー213内に置く。一方、トラヒック・キューが、非廃棄トラヒック・キューである場合には、キュー管理ユニット211は、記述子を、送信ストリーム225(i)にストリームを出力している送信プロセッサ223(j)に対する記述子キュー213内に置くことができる。DCP202内の送信プロセッサまたは受信プロセッサのいずれかは、QMU211が管理するキューから記述子を読み出し、このキューに記述子を書き込むことができるので、コプロセッサ203とDCP202間の任意の複雑な相互作用ももちろん可能である。このような複雑な相互作用の例については以下に説明する。
トラヒック管理コプロセッサ203は、トラヒック・キュー204に多数の異なるトラヒック管理技術を適用することができる。しかし、この技術の適用方法は、各トラヒック・キュー204により高度に構成可能なものである。トラヒック・キュー204(i)にどのトラヒック管理技術を適用するのかを決定する情報は、トラヒック管理情報235内に含まれている。論理的な用語でいうと、トラヒック管理情報235は、下記の3つの種類に分類される。
・使用できる技術を定義するトラヒック管理定義237。好ましい実施形態においては、これらの定義はTMC203に内蔵される。別の実施形態においては、ユーザは、定義237を修正することができるし、または新しい定義を追加することができる。
・237で定義した技術のトラヒック・キュー204のセットへの適用方法を定義するトラヒック管理構成データ239、および
・各トラヒック・キュー204およびトラヒック管理に関連するTMC203およびDCP202の他の構成要素の現在の状態を含む現在のトラヒック管理状態241。
トラヒック管理は、トラヒック・キュー204を選択するために、構成データ239により構成したトラヒック管理定義235を現在のトラヒック管理状態241に適用することによりTMC203で行われ、選択したトラヒック・キューの先頭のTMC記述子216に関連づけられたペイロードは、必要に応じて、トラヒック管理定義、構成および現在のトラヒック管理状態により処理される。
<TMC203の論理的概観:図3>
図3は、トラヒック管理コプロセッサ203の構成要素の論理的概観である。好ましい実施形態においては、TMC203は、2つの主なサブ区画、すなわち、少なくとも1つの処理素子内で実施することができる処理構成要素306と、TMCメモリ307とを含
む。好ましい実施形態においては、すべての処理構成要素306は、1つのIC内で実施される。処理構成要素306は、3つの機能グループ、すなわち、エンキュー・プロセッサ301、トラヒック・キュープロセッサ305およびデキュー・スケジューラ303に分類される。エンキュー・プロセッサ301は、QMU211からTMC記述子216を受信し、どのトラヒック・キューに記述子を入れるのかを決定する。このタスクの一部は、それが表す記述子およびパケットを廃棄すべきかどうか決定する。記述子を廃棄すべき場合には、エンキュー・プロセッサ301は、それを廃棄トラヒック・キュー内に入れるように指定する。トラヒック・キュープロセッサ305は、エンキュー・プロセッサ301から記述子216を受信し、この記述子216を、エンキュー・プロセッサ301が指定したトラヒック・キュー204内にリンクする。デキュー・スケジューラ303は、QMU211に記述子216を提供する次のトラヒック・キュー204を決定し、そのトラヒック・キューの先頭に位置する記述子をQMU211に提供する。好ましい実施形態においては、これら3つのプロセッサは、すべて並列に動作し、これによって記述子のパイプライン処理を行うことができる。
好ましい実施形態においては、TMCメモリ307は、プロセッサ306が実施されるIC内部のメモリと、IC外部のメモリの両方とを有する。別の実施形態においては、ICと外部メモリとの間のメモリの分配は変化する。機能的な用語で言えば、メモリは、tm定義237用の記憶領域と、tm構成データ239用の記憶領域と、現在のtm状態241用の記憶領域とに分割される。メモリ307のこれらの領域の内容の機能は、概論ですでに説明した。
TMCメモリ307内の内容は3つの大きなクラス、すなわち、スケジューリングの際に使用されるスケジューラ情報333と、記述子216をトラヒック・キュー204にエンキューするために使用されるTQエンキュー情報335と、マルチキャストの際に使用されるマルチキャスト情報337とに分割される。より詳細には、好ましい実施形態においては、tm定義237の3つの大きなクラス、すなわち、DCP202に提供する次の記述子216を選択するための技術を指定するスケジューリング・アルゴリズム309と、DCP202から受信したTMC記述子216を廃棄すべきかどうかを決定するための技術を指定するトラヒック・キューエンキュー・アルゴリズム311と、複数のトラヒック・キューに1つのTMC記述子216をコピーする方法を記述するマルチキャスト・アルゴリズム315とがある。
定義の各クラスに対応する構成データ239が存在する。スケジューラ構成317は、個々のスケジューラおよびスケジューラ階層内にスケジューラを配置する方法を定義する。トラヒック・キューエンキュー構成319は、廃棄を行う条件を定義する。詳細テーブル323は、どのトラヒック・キューが、マルチキャストされるパケットに対する記述子を置くのかを指定する。さらに、各トラヒック・キュー204に対する構成データ327が存在する。TMC203のユーザは、特定のトラヒック・キューにどのTM定義を適用するのか、これらの定義の適用方法を決定するために構成データ239を設定することができる。一例を挙げると、TQ処理構成319内の廃棄構成は、特定のトラヒック・キュー204の末尾に置く代わりに、記述子216を廃棄する条件を決定するパラメータを指定する。好ましい実施形態においては、TMC203が初期化される時だけ、構成データ239を設定することができる。別の実施形態においては、構成データ239を動的に設定することができる。
現在のtm状態241は、スケジューラ階層内で各トラヒック・キュー213およびスケジューラの現在の状態を指定するデータを含む。現在のTM状態241は、現在のトラヒック・キューの状態329、および現在のスケジューラ状態318を含む。現在のトラヒック・キューの状態329は、各キュー内に現在含まれている記述子216、キュー内
の記述子が表すパケットのサイズ、およびパケットを記憶しているペイロード・バッファ229の現在の状態を含む。パケットのサイズおよびペイロード・バッファ229の現在の状態は、記述子216をトラヒック・キュー204上に置く代わりに、廃棄すべきかどうか、およびどのトラヒック・キュー204を、次にデキュー・スケジューラ303により選択するのかを決定するために使用される。現在のスケジューラの状態318は、デキュー・スケジューラ303によりDCP202に出力するためにどのTMC記述子216を選択するのかを決定する。
<TMC203の一般的動作:図25>
図25は、TMC203およびQMU211の構成要素が、送信プロセッサ223が使用している記述子キュー213内のcp記述子214の到着のスケジュールを作成し、これによって、送信プロセッサ223により記述子が表すペイロードの出力のスケジュールを作成する方法を示すブロック図である。
すでに説明したように、TMC203によりスケジュールが作成されるTMC記述子216を作成しているチャネル・プロセッサは、cp記述子214に追加情報を追加しなければならない。チャネル・プロセッサは、効果的にそれにTMC情報2513を追加することにより、TMC記述子214の詳細図に示すように、cp記述子214をカプセルに入れる。同じような方法で、TMC203がQMU211にcp記述子214を返送すると、TMC203は、BMU記述子2508の詳細図に再び示すように、それにBMU情報2515を追加することによりそれをカプセル内に収容する。最低でも、TMC情報2513は下記のものを含む。
・TMC203内のトラヒック・キュー204に対する識別子、および
・記述子が可変長のパケットを表している場合には、記述子213が表すパケットのバイトによる長さ。
TMC203が実行するある動作に対して追加情報が必要になる場合がある。QMU情報2515は、最低、どの記述子キュー247内に、カプセルに入れたcp記述子214を入れるべきかを決定するために、QMU211が使用する仮想出力ポート識別子を含む。当然ながら、どの記述子キュー247に、カプセルに入れたcp記述子214を入れるのかにより、記述子214が表すパケットがDCP202内でさらに処理される方法が決まる。
図25は、さらに、TMC203のアーキテクチャ、および図3より詳細なあるレベルでのQMU211およびTMC203間のインタフェースを示す。図25に示すように、QMU211は、TMC入力キューの先頭のTMC記述子を、記述子216を含むエンキュー・データ・メッセージ601を通してTMC203に送る。TMC203がエンキュー・データ・メッセージを受信すると、TMC203はメッセージからの記述子216を入力キュー2501の末尾に置く。
エンキュー・プロセッサ301は、入力キュー2501の先頭からTMC記述子216を読み取る。記述子216が、それが表すパケットをマルチキャストすべきであることを示している場合には、エンキュー・プロセッサ301は、どのトラヒック・キュー204が、記述子216のコピーを受信すべきかを決定するためにマルチキャスト情報327を使用する。そうでない場合には、TMC記述子216は、記述子216を受信するトラヒック・キューを直接指定する。エンキュー・プロセッサ301が、どのトラヒック・キュー204に記述子216を置くべきかを知った場合には、エンキュー・プロセッサ301は、トラヒック・キューの状態が、記述子216および廃棄すべき記述子が表すパケットを必要としているかどうかを判断するために、TQエンキュー情報335を使用する。この場合、エンキュー・プロセッサ301は、DTQS251内の廃棄トラヒック・キュー
の代わりに、TMC記述子216内に元来指定されているトラヒック・キューを使用する。エンキュー・プロセッサ301が、記述子216を受信するトラヒック・キュー204を最終的に決定した場合には、エンキュー・プロセッサ301は、エンキュー・プロセッサ301が指定したトラヒック・キューの末尾にエンキューするために、トラヒック・キュープロセッサ305に記述子216を提供する。
スケジュールを作成する目的で、TMC203内のトラヒック・キュー204は、図25に参照番号523で示すスケジューラ・キューに編成される。スケジューラ・キュー523は、トラヒック・キュー204のキューを含む。デキュー・スケジューラ303は、スケジューリングのために一組の空でないスケジューラ・キュー523の内の1つを選択するために、スケジューラ情報333を使用する。デキュー・スケジューラ303が、スケジューリングのためにスケジューラ・キュー523を選択すると、現在選択したスケジューラ・キュー523の先頭に位置するトラヒック・キュー204(i)にサービスが提供される。すなわち、現在トラヒック・キュー204(i)の先頭に位置する記述子216が、キュー2507を出力するためにQMU記述子2508として出力される。ここから、TMC203は、QMU記述子2508をデキュー・データ・メッセージ701としてQMU211に出力する。QMU211は、記述子2508をTMC出力キュー2509に入れ、次に、適当な記述子キュー213内のQMU記述子2508内に含まれるcp記述子214をキュー247内に入れる。
スケジューリングについてさらに詳細に説明すると、トラヒック・キュープロセッサ305は、スケジューラ・キュー523内にトラヒック・キュー204を入れることを担い、これらのトラヒック・キューをスケジューラ・キュー523から除去する。トラヒック・キュー204は、トラヒック・キューにサービスを提供することができる場合だけ、スケジューラ・キュー523の先頭に位置することができる。本明細書においては、サービスを受けることができるトラヒック・キューは、選択可能なトラヒック・キューと呼ばれる。空のトラヒック・キューは、もちろん選択することはできない。トラヒック・キュー204の選択を行うことができない他の状況について以下に詳細に説明する。トラヒック・キュー204が現在選択できない場合には、トラヒック・キュープロセッサ305は、それをスケジューラ・キューに入れないで、その代わりに、それを一組の選択不能なトラヒック・キュー2511内にそのまま置く。トラヒック・キュー204は、また、それがスケジューラ・キュー523内に置かれた時間からサービスの提供を受ける時間まで、選択不能な状態になる場合がある。この場合、トラヒック・キュープロセッサ305は、それがサービスを受ける前に、選択不能なトラヒック・キュー204をスケジューラ・キュー523の先頭から除去し、それを選択不能なトラヒック・キュー2511に戻す。その先頭に選択可能なトラヒック・キューを有するスケジューラ・キュー523は、能動スケジューラ・キューと呼ばれる。デキュー・スケジューラ303は、能動スケジューラ・キューだけのスケジュールを作成する。
すでに説明したように、QMU記述子2508は、記述子を記述子キュー247内のキュー213に関連づける仮想出力ポート識別子を含む。デキュー・スケジューラ303のタスクの1つは、各QMU記述子2508を適当な仮想出力ポートに関連づけることである。その方法については以下に詳細に説明する。仮想出力ポート機構も、キュー247内の記述子キュー213のレベルにおけるデキュー・スケジューラ303の動作を流れ制御するために使用される。各仮想出力ポートは、仮想出力ポートに対応する記述子キュー247内の記述子キュー213が、どれだけ多くのcp記述子214が、現在キューに入れるために受け入れるかを示すクレジット値と関連づけられる。クレジット値がゼロである場合には、デキュー・スケジューラ303は、仮想出力ポートに関連づけられた記述子キューに対するQMU記述子2508を出力するスケジューラ・キューのスケジュールは作成しない。デキュー・スケジューラ303が、所与の出力ポート用の記述子を出力するス
ケジューラ・キューのスケジュールを作成する度に、クレジット値は低減する。キュー247内の記述子キュー213からcp記述子214が除去される度に、QMU211は、デキュー肯定応答メッセージ1925を、記述子キューに対応する仮想出力ポートを指定するTMC203に送り、デキュー・スケジューラ303は、仮想出力ポートのクレジット値を増大させることによりメッセージ1925に応答する。能動状態であり、仮想出力ポートによりゼロのクレジット値でスケジュール中から禁止されていないスケジューラ・キュー523は、スケジュール可能なスケジューラ・キューと呼ばれる。このため、デキュー・スケジューラ303は、能動状態にありスケジュールを作成することが可能なスケジューラ・キュー523(j)の先頭に位置する選択可能なトラヒック・キュー204(i)の先頭に位置するQMU211へ出力される記述子キューを選択する。ここでまた、スケジューラ・キュー523(j)の先頭に位置するトラヒック・キュー204(i)の先頭から記述子が除去されたので、トラヒック・キュー204(i)が選択不能にならない限り、トラヒック・キュー204(i)は、スケジューラ・キュー523(j)の終わりに移動することを指摘しておかなければならない。このため、能動スケジューラ・キューは、その選択可能なトラヒック・キューをラウンドロビン順にサーブする。さらに、トラヒック・キュープロセッサ305は、記述子216をトラヒック・キューに追加することができる。一方、トラヒック・キューはスケジューラ・キュー523内に位置する。
すでに説明したように、廃棄した記述子は、非廃棄トラヒック・キューのようなスケジュールが作成される廃棄トラヒック・キュー内に入れられる。廃棄トラヒック・キューからのQMU記述子2508は、記述子2508が表すパケットは廃棄すべきであることを示し、また廃棄の理由も示す。QMU217は、再使用のためにバッファ管理ユニット227にバッファ識別子を返送するDCP202内にチャネル・プロセッサに対するキュー内の記述子2508を置くことにより、廃棄トラヒック・キューからの記述子を含む廃棄デキュー・データ・メッセージに応答し、これによって、バッファ識別子が識別したバッファの内容を効果的に廃棄する。
図25は、また、好ましい実施形態のTMC203およびQMU211間のハードウェア・インタフェースの概略も示す。入力キュー2501内に余裕がある場合には、TMC203は、入力キュー作動可能信号1915を出力(assert)し、QMU211は、TMC IQ243の先頭に位置するエンキュー・メッセージをTMC203に出力する。TMC出力キュー2509内に余裕がある場合には、QMU211はDQRDY信号1919を出力(assert)し、TMC203は、出力キュー2507の先頭に位置するQMU記述子を出力する。DQARDY1923およびDQACK1921は、キュー247内の記述子キュー213からの記述子をデキューする肯定応答をするために使用される。各DQACKメッセージは、そのcp記述子214が、QMU211がそれをTMC203から受信した後で、それが置かれた記述子キュー213から、チャネル・プロセッサによりデキューされたばかりのデキュー・メッセージからの仮想出力ポート指定子を含む。すでに説明したように、TMC203は、その宛先記述子キュー247へのQMU記述子2508の流れを制御するために、返送された仮想出力ポート指定子を使用する。
<トラヒック・キューおよび関連データ構造:図4>
トラヒック管理コプロセッサ203のすべての活動は、トラヒック・キュー204を含む。トラヒック・キュー内にTMC記述子が置かれると、記述子に適用される廃棄ポリシー、記述子のスケジュールの作成方法、および記述子が出力されるQMUキューが決定する。図4は、トラヒック・キュー204およびその関連するデータ構造を示す。各トラヒック・キュー204は、トラヒック・キュー識別子423を有し、トラヒック・キュー・パラメータ・ブロック403により定義される。トラヒック・キューに属するTMC記述子216は、TMC記述子キュー419内で一緒にリンクされる。トラヒック・キュー・パラメータ・ブロック403は、キュー419内のヘッド記述子216を指しているtq
ヘッド・ポインタ405、およびキュー419内の末尾記述子216を指しているtq末尾ポインタ407を有する。パラメータ・ブロック403内の残りの情報は、パラメータ・ブロック403が示すトラヒック・キュー204の現在の状態についての情報、記述子216をトラヒック・キューに追加すべきか廃棄すべきかを決定するために使用する情報411、マルチキャストで使用される情報415、およびトラヒック・キューのスケジューリングの際に使用する情報413を含む。
関連データ構造は、トラヒック・キューを含む動作の際に使用する追加情報を含む。パケットをマルチキャストする場合には、その記述子は、トラヒック・キューの1つのグループの各トラヒック・キュー内に置かれる。このグループは、少なくとも1つのマルチキャスト詳細テーブル421のチェーン422により定義される。グループ内の各トラヒック・キューに対してテーブル421内にはtqid423が存在する。所与のマルチキャスト・テーブル421は、そのmetid420により識別される。パケットがマルチキャストされるものである場合には、そのTMC記述子216は、トラヒック・キューのグループを指定するMETチェーン422内のヘッド・マルチキャスト詳細テーブルのmetidを含む。
記述子を廃棄するかどうかの決定は、いくつかのアルゴリズム311の内の1つにより行われる。これらの内のあるものは、バッファ管理ユニット227内のバッファ229の状態を考慮に入れる。この状態情報は、トラヒック管理コプロセッサ203内に、バッファのプールおよびバッファのプールのセットの形で維持される。バッファのプールおよびバッファのプールのセットは、DCP202内のいくつかのバッファの状態のTMC203内のモデルとして機能する。TMC203が状態を維持する各バッファ・プールは、DCP202内のバッファ空間の量を指定するバッファ・プール仕様433を有する。トラヒック・キュー・パラメータ・ブロック403は、このような1つのバッファ・プール仕様を指定する。各バッファ・プール仕様433(i)は、バッファ・プール仕様433(i)が表すバッファ・プールが属するバッファ・プールのセットに対する親バッファ・プール仕様を指定する。各バッファ・プールは、それに対して予約したバッファ空間の最低量を有する。親バッファ・プール仕様は、親バッファ・プールに属するバッファ・プール間で共有するために使用することができるバッファ・プールに対する全最低バッファ空間上のバッファ空間の量を示す。
廃棄構成ブロック431は、所与のトラヒック・キュー204が使用する廃棄方法に対する構成情報を含み、廃棄コード432はその方法に対するコードである。廃棄構成ブロック431は、TMC203のメモリ内のアレイ441に編成され、所与のトラヒック・キュー204(i)は、8つの廃棄構成ブロック431の中から選択を行うことができる。バッファ・プール仕様437の場合のように、多くのトラヒック・キュー・パラメータ・ブロック403は、所与の廃棄構成ブロック431を指定することができる。記述子を所与のトラヒック・キュー204に追加する場合には、バッファ・プール仕様433および435内の情報が、廃棄すべき記述子かどうかを判断するために、廃棄コード432により、廃棄構成ブロック431内の情報と共に使用される。記述子を廃棄する場合には、記述子は廃棄トラヒック・キュー251内に入れられる。
現在所与のトラヒック・キュー204(i)の先頭に位置するTMC記述子216をDCP202にいつ出力すべきかについての決定は、スケジューラの階層を使用して行われる。機能的には、スケジューラの階層は、その入力として、一組の能動およびスケジュール可能なスケジューラ・キュー523をとり、そのセットうちの1つをその先頭記述子216がDCP203に出力されるトラヒック・キュー204のソースとして選択する。このため、スケジューラ階層がスケジューラ・キューを選択する方法は、TMC203、最終的にはTMC−DCPシステム201のどれだけの幅の帯域幅を、スケジューラ・キュ
ーのトラヒック・キュー内の記述子が表すパケットに対して使用できるかを決定する。
参照番号430により示すように、好ましい実施形態においては、スケジューラは、スケジューラ構成指定子425、およびスケジューラ構成指定子内の情報を使用して実行されるスケジューラ・コード429により定義される。トラヒック・キュー・パラメータ・ブロック403内のスケジューリング情報413は、所与のトラヒック・キュー204を、1つのスケジューラ430に属する1つのスケジュール構成指定子425(i)と関連づける。このスケジューラは、所与のスケジューラ430に対するスケジューラ構成指定子425を有するすべてのトラヒック・キューが属するトラヒック・クラスを定義する。このため、スケジューラ430は、トラヒック・クラス・スケジューラ503と呼ばれる。好ましい実施形態においては、トラヒック・クラス・スケジューラは、またセグメント分割および再組立てを処理する。トラヒック・クラス・スケジューラは、スケジューラ階層内におけるリーフ・スケジューラであり、図4の参照番号427および434で示すように、その階層内には、いつでも少なくとも1つの他の内部スケジューラが存在していなければならない。
<スケジューラ階層:図5>
図5は、スケジューラ階層501の概要である。スケジューラ階層501の入力は、一組の能動スケジューラ・キュー523である。スケジューラ階層501の出力は、一組の能動スケジューラ・キュー523の内の1つである。TMC203は、スケジューラ階層501が出力するスケジューラ・キューの先頭に位置するトラヒック・キュー204の先頭に位置するTMC記述子216内のcp記述子214を含むQMU記述子2508を出力する。スケジューラ階層501は、そのノードがトラヒック・クラス・スケジューラ503または内部スケジューラ509であるツリーを形成する。階層内の各スケジューラは、一組の能動スケジューラ・キューをその入力として選択し、入力セットうちの1つをその出力として選択する。
階層501はツリーである。ツリーのリーフ・ノードは、常にトラヒック・クラス・スケジューラ503である。内部ノードは常に内部スケジューラ509である。階層のレベル0にある1つの内部スケジューラ515は、ツリーのルートを形成する。スケジューラ階層501が、所与の能動スケジューラ・キュー523(i)のスケジュールを作成する場合には、キュー523(i)のスケジュールを作成するスケジューラは、階層を通してトラヒック・クラス・スケジューラ503からツリーのルートへの経路を形成する。図5の529においては、太い矢印がこのような経路の1つを示す。好ましい実施形態の階層の最大深さは4つのスケジューラである。
図5を見れば分かるように、好ましい実施形態においては、レベル0のルート・スケジューラ509(a)は、入力として最大32のスケジューラからの出力スケジューラ・キューを受信するように構成することができ、これにより、最大32までのスケジューラ・キューの入力セットを有することができる。他のレベルの各内部スケジューラは、それぞれ、最大32のスケジューラ・キューからの入力スケジューラ・キューを入力として有し、このため、最大32までのスケジューラ・キューの入力セットを有することができるように構成することができる。各トラヒック・クラス・スケジューラ503は、最大32のスケジューラ・キューを入力として有することができ、これにより、最大32のスケジューラ・キューの一組の入力を有することができる。1つのトラヒック・クラス・スケジューラ503に対するスケジューラ・キューの実際の数は、トラヒック・クラス・スケジューラのタイプにより異なる。
内部スケジューラ509とトラヒック・クラス・スケジューラ503との重要な違いは、所与のトラヒック・クラス・スケジューラ503(j)において、スケジューラ・キューの入力セットが、トラヒック・クラス・スケジューラ503(j)を指定しているトラ
ヒック・キューを含む能動スケジューラ・キューであることである。所与の内部スケジューラ509(k)においては、スケジューラ・キューの入力セットは、内部スケジューラ509(k)に入力を提供するより低いレベルのスケジューラによりスケジュールされたスケジューラ・キューである。内部スケジューラ・キュー509(k)への入力として使用することができるすべてのスケジューラ・キューは能動状態にあるが、内部スケジューラ・キュー509(k)によりスケジュールを作成することはできない。それが、仮想出力ポート521がスケジューラ・キュー509(k)への入力上に位置している場合であり、仮想出力ポートからQMU211に記述子をさらに出力することはできない。
スケジューラ階層501が動作している場合には、各スケジューラは、能動およびスケジュール可能な入力スケジューラ・キューのその現在のセットうちの1つをその出力として選択する。このため、トラヒック・クラス・スケジューラ503(c)は、スケジューラ523(d)がするように、その能動スケジューラ・キュー523の内の1つをその出力として選択し、これら2つのスケジューラ・キューは、内部スケジューラ509(c)へ出力し、仮想出力ポートによりスケジュール不能とならないスケジューラ503が提供する任意の他のものと共に、内部スケジューラ509(c)への入力であるスケジューラ・キュー523である。内部スケジューラ509(c)は、内部スケジューラ509(b)への出力に対するそれへの入力の中から1つのスケジューラ・キュー523を選択し、内部スケジューラ509(b)は、ルート内部スケジューラ509(a)への出力に対して、それへの入力から1つのスケジューラ・キュー523を選択する。ルート内部スケジューラ509(a)は、その入力から1つのスケジューラ・キュー523を選択し、選択したスケジューラ・キューの先頭に位置するトラヒック・キュー204の先頭のTMC記述子216内のcp記述子214が、QMU記述子2508内の出力になる。QMU記述子2508は、次に、DCP202のキュー管理ユニット211へ送られるデキュー・データ・メッセージ701になる。記述子を取り出したトラヒック・キューが選択できなくならない限り、トラヒック・キュー504は、そのスケジューラ・キューの末尾に移動する。トラヒック・キューが選択できない場合には、そのトラヒック・キューは、スケジューラ・キューから除去され、それが選択することができるようになるまで、スケジューラ・キュー内には置かれない。図501の参照番号535が示すように、選択できないトラヒック・キュー204は、そのトラヒック・クラス・スケジューラ503に関連したままの状態で残る。再び選択できるようになった場合、トラヒック・キューは、トラヒック・キューのトラヒック・クラス・スケジューラへの入力としての働きをするスケジューラ・キュー523の内の1つの末尾に置かれる。
スケジューラ階層501内の流れの制御の2つのレベルは、QMU217がTMC記述子216を処理することができるようになる前に、TMC記述子216がQMU217に出力されるのを防止する。一方のレベルは、QMU217が、TMCコプロセッサ203からの任意の他の記述子を全く処理できないようにする。このレベルは、TMC203とDCP202との間のハードウェア・インタフェースにおいて動作する。TMCコプロセッサ203は、DCP202が、このような記述子を受信する準備ができていると示した場合だけ、DCP202に記述子を送る。流れ制御のもう一方のレベルは、特定の記述子キュー213内に、TMC203からの追加の記述子に対する十分な余裕がない状況を処理する。流れ制御のこのレベルは、階層501内の仮想出力ポート521により処理される。
階層501内のリーフ・スケジューラ503とルート・スケジューラ509間の各経路は、仮想出力ポート521を有していなければならず、どの経路も2つ以上の仮想出力ポート521を有することはできない。各仮想出力ポートは、それを一意に識別する識別子を有する。仮想出力ポート521は、2つの機能を有する。
・各仮想出力ポートは、スケジューラ階層501の出力の一部を、QMU211の記述子キュー247内の記述子キュー213に関連づける。
・各仮想出力ポートは、また、その対応する記述子キュー213が、どれだけの数の記述子を現在とることができかを示する。
第1の機能は、仮想出力ポートに対する識別子を、TMC203からQMU211へ出力される各QMU記述子2508内に挿入することにより実行される。識別子は、QMU記述子2508内のcp記述子214が属しているトラヒック・キュー204を含むスケジューラ・キュー523のスケジューラ階層501を通る経路529上の仮想出力ポート521の識別子である。
第2の機能は、下記のように実行される。仮想出力ポート521に対応する記述子キュー213が、仮想出力ポートが出力を制御するスケジューラにより選択されたスケジューラ・キュー523の先頭に位置するトラヒック・キュー204から出力される記述子に対する空きがない場合には、仮想出力ポート521は、階層の次のレベルのスケジューラにより、スケジューラ・キューのスケジュールの作成が行われないようにする。対応する記述子キュー204に再び空きができた場合には、仮想出力ポートに次のスケジューリング・レベルに対して出力できるようにする。能動スケジューラ・キューのソースであるトラヒック・クラス・スケジューラ503と、現在スケジュールを作成しているスケジューラ・キュー523(i)であるスケジューラの間の経路529上の仮想出力ポート521(j)が、仮想出力ポート521(j)に対応する記述子キュー213が現在追加の記述子に対する空きがないことを示した場合には、能動スケジューラ・キュー523(i)のスケジュールを作成することはできない。
トラヒック・キュー204のところですでに説明したように、トラヒック・キューには2つの種類、すなわち、廃棄トラヒック・キュー251と非廃棄トラヒック・キュー249がある。通常、2つの種類は、TMC203からの記述子を受け入れている記述子キュー213により表されるパケットの送信を禁止し、このため、スケジューラ階層501を通る経路の仮想出力ポート521を閉鎖するイベントが、決して廃棄トラヒック・キューからの記述子を阻止しないように、階層501を通る別々の経路上でスケジュールされる。この理由は、廃棄トラヒック・キューからの記述子の処理は、DCP202に対して完全に内部的なものであり、送信したストリーム225の閉鎖とは無関係に続行することができるためである。階層501の形状、階層内のスケジューラ503および509のスケジューリング・アルゴリズム、および階層内の仮想出力ポート521の位置は、すべてTMC203のユーザによる設定が可能である。
<エンキュー・データ・メッセージの詳細:図6および図31>
すでに説明したように、TMC203にQMU211が提供するTMC記述子216は、エンキュー・データ・メッセージ内に含まれている。図6および図31は、好ましい実施形態のエンキュー・データ・メッセージ601の詳細を示す。好ましい実施形態においては、エンキュー・データ・メッセージは、最大13の24ビット語からなる。エンキュー・データ・メッセージ601の長さは、エンキュー・データ・メッセージの語2〜12内に含まれているcp記述子214の長さにより異なる。図6の場合には、エンキュー・データ・メッセージの各フィールドに対して1つの行が存在する。列603は1つのフィールドを含む語の語オフセットを示し、列605はフィールド名を示し、列607は語内のフィールドのビット位置を示し、列609はフィールドの内容および目的を記述する。参照番号611〜627は、フィールドに対する行を示す。フィールド615は、tqid423またはmetid420を含むことができることに留意されたい。metidは、記述子が表すパケットがマルチキャストである場合である。
一般的に、エンキュー・データ・メッセージ601のフィールドの性質および目的は、
図6および図31を見ればよく理解することができる。タイプ・フィールド611を除くすべてのフィールドに対する値は、タイプ・フィールドがメッセージがないことを示す場合には、TMC記述子216からのものである。記述子フィールド627は、TMC記述子216内のカプセルに入っているcp記述子214を含む。推論的なエンキューの場合、および廃棄優先順位フィールド625の場合には、さらに、コメントが必要になる。推論的エンキューは、DCP202がまだ完全に受信していないパケットに対するパケット記述子をエンキューするための機構である。推論的にエンキューされたパケットをDCP202が完全に受信していた場合には、コミット・エンキュー・メッセージと呼ばれる第2の1語の長さのエンキュー・メッセージが、推論的エンキューを行うためにTMC203に転送される。エンキュー・メッセージ内のタイプ・フィールド611は、推論的またはコミット・エンキュー・メッセージを識別するために使用される。推論的エンキューについては以下にさらに詳細に説明する。廃棄優先順位フィールド625は、TMC記述子216が意図するトラヒック・キューに関連づけられた最大8つの廃棄構成ブロック431の内の1つを選択するために使用される。
<デキュー・データ・メッセージの詳細:図7、図32および図33>
図7、図32および図33は、TMC203がバッファ管理ユニット211に送るデキュー・メッセージ701のフォーマットを示す。これらの各メッセージは、QMU記述子2508を含む。すでに説明したように、各フィールドは、列を示す603〜609、および行を示す701〜725を含む1つの行を有する。大部分のフィールドの目的および内容は、図7を見れば分かる。廃棄理由フィールド723の場合、このフィールドは、エンキュー・プロセッサ301が記述子を廃棄した場合に設定される。廃棄トラヒック・キュー251からのQMU記述子2508が、キュー管理ユニット211に出力された場合には、タイプ・フィールド703および廃棄理由フィールド723は、QMU記述子内のcp記述子214が表すパケットのペイロードを廃棄すべきことおよびその理由を示す。フィールドの内容は、DCP202が、フィールド703内の行動を起こして応答しなければならない場合がある廃棄理由、およびフィールド723内の情報の目的としての働きをする理由とに分割される。この場合も、アイドル・メッセージのフィールド値を除くデキュー・データ・メッセージ701内のすべてのフィールド値は、QMU記述子208内に含まれる。フィールド725はカプセルに入っているcp記述子214を含む。
<トラヒック・キュー・パラメータ・ブロック403の詳細:図8および図34>
図8および図34は、好ましい実施形態のトラヒック・キュー・パラメータ・ブロック403のフォーマットを示す。すでに説明したように、フォーマットは、列を示す801〜809およびフィールドを示す811〜869を含む。列809内のフィールドの大部分は図を見れば理解することができる。以下の説明においては、フィールドは、図4の論理サブ区画に関連する。
<スケジューリング情報413>
この情報を提供するフィールドは、トラヒック・キュー・パラメータ・ブロック403が示すトラヒック・キュー204に対するトラヒック・クラス・スケジューラ503(i)を識別するフィールド819、トラヒック・クラス・スケジューラ503(i)のトラヒック・キュー204に属するどのスケジューラ・キュー523(j)を、選択できる場合に、置くべきかを決定するフィールド831、トラヒック・キュー204を選択することができるかどうか、できる場合には、そのスケジューラ・キューをスケジュールする方法を決定するために使用されるトラヒック・キュー204内のヘッドTMC記述子216に関する情報を含むフィールド845を含む。この情報は、トラヒック・キュー204の記述子が表すパケットのタイプ、およびスケジューラ・キュー523(i)が使用するスケジューリング・アルゴリズムにより異なる。ここでは2つの例について説明する。可変長のパケットを表す記述子の場合には、フィールド845は、パケットの長さを含み、固定長パケットを表す記述子と共に、フィールド845は、固定長パケットにより運ばれているメッセージ内の最後のパケットに対する記述子が、トラヒック・キュー内にすでに受信されたかどうかを示すメッセージの終わりインジケータ(eom)を含む。
<マルチキャスト情報415>
好ましい実施形態においては、TQタグ・フィールド865は、QMU211にトラヒック・キュー204を指定する識別子である。トラヒック・キューは、下記の2つの環境内で指定される。
・cp記述子214が表すパケットがマルチキャストされる場合には、識別子は、エンキュー・プロセッサ301がTMC記述子216の特定のコピーを置いたトラヒック・キュー204を指定する。
・cp記述子214が表すパケットを廃棄すべき場合には、識別子は、TMC記述子がTMC203内に受信された場合に、cp記述子214を含むTMC記述子216内で指定されたトラヒック・キュー204を指定する。
<廃棄情報411>
フィールド813および814は、トラヒック・キューに対する廃棄構成ブロック443を識別する。これらのフィールドにTMC識別子216内の廃棄優先順位フィールド625を加えたものは、所与の記述子と併用するブロック443内の実際の廃棄構成ブロック431を識別する。フィールド815,816,869および827は、すべて種々の廃棄技術で使用されるデータを含む。
<現在のtq状態情報409>
この情報はフィールド836内に含まれる。このフィールドはトラヒック・キューの先頭に位置する記述子に関する情報を含む。フィールド内の情報が何であるかは、トラヒック・キューの先頭に位置する記述子が表すパケットのタイプにより異なる。可変長パケットである場合には、フィールド836はパケットの長さを含む。固定長パケットの場合には、フィールド836は、多重パケット・メッセージに関するパケットの状態を示す。メッセージ内の最後のパケットが到着したかどうか、到着していた場合には、記述子が表すパケットがメッセージ内の最後のパケットであるかどうかを示す。好ましい実施形態においては、トラヒック・キュー内の各TMC記述子216は、トラヒック・キュー内の次の記述子に対する現在のTQ状態情報を含むフィールド836のようなフィールドに、それを先頭に付加済みである。
<Tqヘッド405およびTq末尾407>
これらは、それぞれフィールド823および811内で実施される。好ましい実施形態においては、識別子は、記述子に対する単なるポインタである。TMC203の設計の機能は、可能な限り、記述子、トラヒック・キューまたはスケジューラ・キューではなく、ポインタが操作されることである。
<TMC203が実行する動作の詳細>
以下の説明においては、エンキュー・プロセッサ301が実行するマルチキャスト動作から開始して、エンキュー・プロセッサ301、トラヒック・キュープロセッサ305、およびデキュー・スケジューラ303が実行する動作の例について詳細に説明する。別の実施形態においては、この動作を異なる方法で実行することができることを理解されたい。
<マルチキャスト:図9および図35>
パケットが1つの入力点にある切替え装置に到着すると、パケットはマルチキャストされ、複数の出力点のところから出力される。システム201においては、マルチキャストは、QMU211またはトラヒック管理コプロセッサ203で行うことができる。本明細書の記述は、トラヒック管理コプロセッサ203でのマルチキャストである。マルチキャストは、エンキュー・データ・メッセージ601で受信したTMC記述子216のコピーを、マルチキャスト詳細テーブル421内で指定されたトラヒック・キュー204に追加することにより行われる。
<マルチキャスト詳細テーブルの詳細>
図9および図35は、好ましい実施形態のマルチキャスト詳細テーブルの詳細を示す。
この場合も、フォーマットは、テーブルのフィールドを表す各行、およびフィールドに関する情報を示す列903〜909を含む表である。すでに説明したように、TMC203は、マルチキャスト詳細テーブル421のリンクされたリストを維持する。フィールド911は、リスト内の次のマルチキャスト詳細テーブル421のmetid420を含む。所与の詳細テーブル421が、リンクされたリストの最後のものである場合には、フィールド913の値により示される。詳細テーブル421は、記述子のコピーを追加することができる最大8つのトラヒック・キューを指定することができる。参照番号915は、1つのトラヒック・キューに対するエントリの詳細図を示す。関連する2つのフィールドが存在する。すなわち、トラヒック・キュー204に対するtqid423を含むフィールド916およびフィールド916の内容が有効であるかどうかを示すフィールド917が存在する。参照番号919で示すテーブルの残りの部分は、残りのトラヒック・キューに対するトラヒック・キューエントリ915である。
エンキューした記述子の複数のコピーが、同じ仮想出力ポート宛の複数のトラヒック・キューにマルチキャスト合成される場合には、QMU211は、記述子のコピーがどのトラヒック・キューからのものであるかを判断することができなければならない。トラヒック・キューを識別するフィールドは、パラメータ・ブロックのトラヒック・キュータグ・フィールド865である。宛先トラヒック・キューのタグは、トラヒック・キュー内に含まれる記述子から作成した各QMU記述子のフィールド713内に入れられる。
<マルチキャスト・エンキュー・データ・メッセージ処理の詳細>
エンキュー・データ・メッセージ601をユニキャストするのかマルチキャストするのかは、エンキュー・データ・メッセージのフィールド619により示される。フィールド619がマルチキャストを示している場合には、フィールド615は、マルチキャストで使用されるMETチェーン内の第1のマルチキャスト詳細テーブル421に対するmetid420を含む。マルチキャスト・エンキュー・メッセージは、マルチキャスト合成を行うために余分な処理時間を必要とする。余分な処理時間は、エンキュー・プロセッサ301により処理されるまで待機している間に、エンキュー・データ・メッセージ601をバッファに記憶するために必要な時間である。一般的に、エンキュー・プロセッサ301は、ユニキャスト・エンキュー・データ・メッセージの処理に厳格な優先順位を付ける。しかし、エンキュー・プロセッサ301により処理される記述子の全数の固定部分がマルチキャスト記述子であることを保証する、ユーザによる設定が可能な機構がある。この部分は、処理される2つの記述子の内の1つから、処理される256の記述子の内の1つまでの範囲内に設定し得る。処理を待つマルチキャスト・エンキュー・メッセージは、最大32のマルチキャスト・エンキュー・メッセージを保持するバッファ内に記憶される。マルチキャスト・エンキュー・メッセージを受信した場合で、マルチキャスト・エンキュー・メッセージ・バッファが満杯である場合は、マルチキャスト・メッセージは、エンキュー・メッセージ・ソース識別子(エンキュー・データ・メッセージのフィールド623)に関連づけられた廃棄キューに廃棄される。そうでない場合には、マルチキャスト記述子を廃棄する決定は、マルチキャスト・グループ内の各宛先トラヒック・キューに対するエンキュー・プロセッサ301により別々に行われる。
エンキュー・プロセッサ301は、関連コミット・エンキュー・メッセージを受信するまで、推論的にエンキューされるマルチキャスト・エンキュー・メッセージを処理しない。このため、推論的にエンキューされたマルチキャスト・メッセージは、関連コミット・エンキュー・メッセージを受信するまで、以降のすべてのマルチキャスト・エンキュー・メッセージを阻止する。この阻止はデキュー・パケット記述子の順序を維持するために必要である。
マルチキャスト・コピーの1つの使用方法は、DCP202がそれ自身マルチキャスト合成をサポートしない時分割多重化チャネル化インタフェース・装置を駆動しているシス
テム201での使用である。マルチキャスト・コピーは、各宛先チャネルに対するパケットの1つのコピーを送信するために使用することができる。
<記述子廃棄動作の詳細>
すでに説明したように、エンキュー・プロセッサ301が、トラヒック・キュー内にリンクされるトラヒック・キュープロセッサ305に記述子を提供する前に、エンキュー・プロセッサ301は、記述子が表すパケットを廃棄すべきか、または輻輳を避け、現在の輻輳を管理し、または過去の輻輳から回復するためにタグを付けるべきかを判断する。
<廃棄およびタグ付け動作>
輻輳しているかどうかを判断するために、エンキュー・プロセッサ301が使用する技術は、バッファしきい値の決定、ランダム早期検出、および管理アルゴリズムを含む。特定のトラヒック・キューに対してどの技術エンキュー・プロセッサ301を使用するかは、トラヒック・キューの廃棄構成ブロック431により決定される。輻輳は下記のように処理される。
1.輻輳期間から抜け出すために廃棄するパケット記述子の選択。
2.輻輳を避けるために廃棄する不適合パケット記述子の選択。
3.輻輳を避けようとしている下流のネットワーク素子により、不適合パケットを選択的に廃棄できるように、不適合パケット記述子へのタグ付け。
4.下流のネットワーク素子が、元のトラヒック・ソースに速度を低減するように通知することができるように、輻輳を経験したパケット記述子へのマーク付け。
<バッファ・プールおよび親バッファ・プール:図4>
エンキュー・プロセッサ301が使用するバッファ・プール情報は、廃棄すべきパケットが、バッファ・プールおよび親バッファ・プール・データ構造内に依然として入っているかどうかを判断する。図4は、これらの構造を示す。各バッファ・プールに対するバッファ・プール仕様433(i)は、最小しきい値、最大しきい値、およびバッファ・プールの親に対する最小しきい値を示す。トラヒック・キュー204(i)が使用するバッファ・プール433(j)内のこれらの値は、トラヒック・キュー240(i)のための記述子を廃棄するかどうかを決定するために、エンキュー・プロセッサ301により使用される。バッファ・プール仕様433および親バッファ・プール仕様435は、TMC記述子216がトラヒック・キュー204内でエンキューされるか、トラヒック・キュー204からデキューされる度に更新される。
<廃棄トラヒック・キュー>
トラヒック管理コプロセッサ203内で行われたすべての廃棄動作からの記述子は、TMC203により維持されている32の廃棄トラヒック・キュー251の内の1つに送られる。廃棄トラヒック・キューは、非廃棄トラヒック・キューのようにスケジューリングが行われる。スケジューラ階層は、廃棄キューに対するスケジューラの出力が、廃棄トラヒックのサービス提供専用の仮想出力ポートに送られるように通常構成される。このため、これらの仮想出力ポートは、外へ出てゆくパケット・トラヒックが、バックアップされる時阻止されないで、外へ出てゆくトラヒック・パケットを表す記述子に関連づけられた仮想出力ポート251がこれらの記述子のスケジューリングを阻止する。廃棄したパケット記述子に関連づけられたパケットの長さは、スケジューラ帯域幅計算の際に使用されない。この理由は、DCP202が、廃棄されたパケット記述子を処理するために必要な時間は、パケットの長さとは無関係であるためである。代わりに、0〜255バイトの範囲内の構成可能なパケットの長さが、スケジュールを作成する目的で廃棄キュー記述子に割り当てられる。
廃棄されたパケット記述子に対する宛先廃棄キューは、優先順位順に配列された下記のソースの内の1つから選択される。
1.廃棄キュー識別子は、そうしたい場合には、トラヒック・キューの廃棄構成ブロック431内に指定することができる。
2.トラヒック・キュー廃棄構成により指定されていない場合には、TMC203は、キ
ューを廃棄するために、TMC記述子216のソースに関連するテーブルから廃棄キュー識別子を入手する。TMC識別子のソースに対する識別子は、フィールド603から入手される。
3.前の2つのソースにより指定されていない場合には、廃棄キュー識別子は、トラヒック・キューのクラス・スケジューラ503内に指定される。
<廃棄アルゴリズムのタイプの概要>
好ましい実施形態は、多数の異なる廃棄アルゴリズムを提供する。ここで概要を示す。アルゴリズムの内の1つの詳細な例について以下に説明する。異なる各廃棄アルゴリズムに対する廃棄構成ブロック431に対しては異なるフォーマットが存在する。
(しきい値設定)
しきい値設定は、下記の条件の下で、バッファ・プールのサイズおよび親バッファ・プールのサイズに基づいて、パケット記述子を選択的に廃棄するために使用される。
1.トラヒック・キューの関連するバッファ・プール・サイズが最小しきい値より小さい場合には、記述子を廃棄しない。
2.トラヒック・キューの関連するバッファ・プール・サイズが最大しきい値より大きい場合には、記述子を廃棄する。
3.バッファ・プール・サイズが最小しきい値と最大しきい値との間であり、親バッファ・プール・サイズが、トラヒック・キューの選択した廃棄構成データが指定する親バッファ・プールしきい値より大きい場合には、廃棄のためにパケット記述子を選択する。そうでない場合には、記述子を廃棄しない。
(ランダム早期検出(RED))
バッファ・プールは、適応トラヒック・ソースに関連づけられたパケット記述子を選択的に廃棄するために、ランダム早期検出(RED)を使用するように設定が可能である。好ましい実施形態で使用するREDの実施は、下記の基準に基づいて行われる。
1993年8月のネットワークに関するIEEE/ACM議事録(IEEE/ACM Transactions on Networking)掲載のフロイド、サリー(Flody,Sally)およびヤコブセン、ファン(Jacobson,Van)の「輻輳を避けるためのランダム早期検出(Random Early Detection for Congestion Avoidance)」。
REDアルゴリズムは、指数加重平均バッファ・プール・サイズ、および最小および最大平均バッファ・プール・サイズしきい値に依存するランダム廃棄の確率を計算する。平均バッファ・プール・サイズは、トラヒックの一時的バーストが無駄に廃棄されないように、瞬間サイズの代わりに使用される。REDをIPパケットと併用する場合には、エンキュー・メッセージ601の廃棄優先順位フィールド625の値を、IPパケットに対して指定された優先権に基づいて、異なるREDしきい値および確率パラメータを選択するために使用することができる。
(管理)
速度管理(rate policing)は、そのパケットが、トラヒック・キューの割り当てられた、または保証された伝送速度よりも速い速度で受信されているトラヒック・キューを識別するためにトラヒック・キュー毎に使用される。速度管理により、その保証された速度より速い速度を使用しているトラヒック・キューは、決してトラヒック・キューに適合する他の保証速度に悪影響を与えない。速度管理は、バッファ・プールおよび親バッファ・プールしきい値設定アルゴリズムと併用することができる。
速度管理パラメータは、一組または二組の漏洩バケット・パラメータ、すなわち、維持可能な最大速度およびバースト許容範囲および/または最大ピーク速度および遅延変動許容範囲を含む。漏洩バケット適合定義は、可変長パケットおよび固定長パケットをサポートするために拡張したATMフォーラムTM4.0仕様(ATM Forum TM 4
.0)により定義される。TMC管理機能で実施された漏洩バケットは、ATMフォーラムTM4.0適合定義6つをすべてサポートするように設定することができる。漏洩バケットは、TMC外部の条件のモデルのTMC203の使用のもう1つの例である。
各速度管理トラヒック・キューは、速度および許容範囲を強制的に実施するために、1つまたは2つのクレジット・バケット状態を維持する。トラヒック・キューが初期化された場合、各バケットは、その全許容範囲でクレジットされる。クレジット・バケットは、エンキューされた各パケット・バイトに対して1バイト・クレジットを失い、その構成されたバイト速度でバイト・クレジットを入手する。エンキューされたパケットのバイト・カウントは、トラヒック管理インタフェースを介して受信するその関連するエンキュー・メッセージのパケット・バイト長フィールドからのものである。
ATMフォーラムTM4.0適合定義は、とるべき行動を定義し、漏洩クレジット・バケットが、エンキューされたパケット・バイト長を収容するだけの十分なバイト・クレジットを有していない場合には、廃棄したり、タグを付けたりする。例えば、ピーク速度漏洩バケットが、パケットを収容するだけの十分なクレジットを有していない場合には、関連するパケット記述子が常に廃棄のために選択される。維持可能な速度バケットが、パケットを収容するだけの十分なクレジットを有さない場合には、パケット記述子は、適合定義により廃棄のためにタグが付けられるか、選択される。
(メッセージ廃棄モード)
メッセージが一連の固定長パケットにより運ばれている場合には、各パケットはそれ自身の記述子を有する。このような一連の固定長パケットにおいては、最後のパケットのヘッダは、パケットがメッセージの終りを運んでいることを示すように設定されたメッセージの終わり(eom)フラグを有する。対応するメッセージの始めフラグは存在しない。代わりに、次のメッセージを開始するパケットが、そのeomフラグがセットされているパケットの直後に位置するという事実により識別される。固定長パケットを表すTMC記述子216は、記述子がメッセージの最後のパケットを表す場合にセットされるメッセージの終わりフラグを有する。EOMフラグは、TMC記述子のフィールド613内に位置する。メッセージの始めのための記述子は、同様に、そのEOMフラグ・セットを有する記述子の直後に位置するという事実により識別される。
メッセージを運ぶために一連のパケットを使用するシステムにおいては、メッセージを構成しているパケット記述子の任意の1つが廃棄された場合、全メッセージを再構成することができず、メッセージに属するすべてのパケットを廃棄しなければならないと仮定する。そのため、メッセージの残りのパケットの廃棄を、第1の廃棄を行った直後に開始できる場合には性能を改善することができる。ルック・アサイド・データ・ストリーム処理中にこの種の廃棄を行う際に難しいのは、メッセージ内の廃棄すべき第1のパケットに対応するQMU記述子2508が必ずeomフラグ・セットを有するようにすることである。その結果、記述子に対応するパケットを処理しているチャネル・プロセッサは、パケットに適当なマークを付け、次のメッセージの第1のパケットのQMU記述子を認識することができる。
トラヒック管理コプロセッサ203は、下記の4つの異なるメッセージ廃棄モードで動作することができる。
・非メッセージ廃棄モード
・早期パケット廃棄モード
・部分パケット廃棄モード
・修正部分パケット廃棄モード
廃棄モードは、トラヒックごとのキューに基づいて構成される。各トラヒック・キューは、多数の廃棄モードを使用することができる。廃棄モードは、廃棄構成ブロック433
内のトラヒック・キューに対して指定される。所与のトラヒック・キューに対して使用することができるこれらの廃棄モードの内のどの廃棄モードを、トラヒック・キュー内の所与の記述子が表すパケットに対して使用すべきかは、記述子内のフィールドにより指定される。どのモードも、廃棄が必要かどうかを決定するための技術の内の任意の技術を使用することができる。
非メッセージ廃棄モードの場合には、メッセージの終わりインジケータは、メッセージの残りのパケットの廃棄方法を決定する際に何の役割も果たさない。
早期パケット廃棄モードの場合には、より大きなメッセージを受け入れるか廃棄するかについての決定は、メッセージの第1のパケットに対する記述子を受信した場合に行われる。第1の記述子を廃棄する場合には、パケットのメッセージに対する残りのすべての記述子も廃棄する。その逆も同じである。メッセージ内に2つ以上のパケットが存在する場合には、第1の記述子はそのEOMフラグ・セットを有さない。残りの記述子を廃棄するには、エンキュー・プロセッサ301は、多重パケット・メッセージに属するパケットに対する記述子がすでに廃棄されていて、そのEOMフラグ・セットを含む記述子をまだ受信していないことを示すために、トラヒック・キュー状態フィールド861内のフラグをセットする。メッセージのパケットに対する各記述子を受信すると、エンキュー・プロセッサ301は、メッセージの終わりフラグを探してフィールド613をチェックする。フラグが全くセットされていない場合には、記述子は廃棄される。フィールド613内のEOMフラグがセットされている場合には、エンキュー・プロセッサ301は記述子を廃棄して、EOMフラグを含む記述子を受信したことを示すために、トラヒック・キュー状態フィールド861内のフラグをセットする。全多重パケット・メッセージを処理できる機会を増やすために、エンキュー・プロセッサ301は、バッファ・プールおよび親バッファ・プール仕様が、広いバッファ空間が使用できることを示している限りは、第1のパケットを廃棄することができる。
部分パケット廃棄(PPD)モードは、第1のパケットを廃棄する場合には、EPDモードと同様な動作をする。しかし、このモードの場合には、また、第1のパケットが廃棄されていなかった場合には、「中間パケット」(middle packet)上で廃棄の決定を行うことができる。このような廃棄の決定を行った場合には、決定が行われるパケットおよび最後のパケットを除く以降のすべてのパケットが廃棄される。最後のパケットは廃棄することができない。この理由は、最後のパケットは、次のメッセージの始まりを識別するのに必要なEOMフラグを有するためである。最後のパケットは、また、短縮メッセージの最終受信者に、そのメッセージが不足メッセージであることを示すエラー検出情報を含む。
ルック・アサイド・データ・ストリーム処理の場合には、パケットを廃棄する決定は、当然ながら、パケット自身の上では行われず、パケットを表すTMC記述子216上で行われる。エンキュー・プロセッサ301が、廃棄のために中間パケットを表す記述子を選択した場合には、エンキュー・プロセッサ301は、多重パケット・メッセージ内のパケットに対する記述子がすでに廃棄され、そのEOMフラグ・セットを含む記述子をまだ受信していないことを示すために、トラヒック・キュー状態フィールド861内のフラグをセットする。エンキュー・プロセッサ301は、次に、EOMフラグ・セットを含む記述子を含まないそれまでの記述子を廃棄し、上記のようにフィールド861内のフラグをリセットする。最後の記述子を廃棄しなければ、DCP202からの出力としてのメッセージは、そのEOMフラグ・セットを含む最後のパケットを必ず含んでいる。多重パケット・メッセージを受信しているトラヒック・キューに対して指定した廃棄モードが何であれ、エンキュー・プロセッサ301は、メッセージのさらなるパケットを記憶するためのDCP202内のバッファがない場合には、メッセージに属するパケットの残りを廃棄するためにPPDを使用する。当然ながら、この状態は、メッセージのパケットに対する記述
子を受信しているトラヒック・キューに対するバッファ・プール、および親バッファ・プール情報により示される。
最後のメッセージ廃棄モードは、修正部分パケット(MPP)モードである。MPPは、パケット再組立てと共に使用される特殊なメッセージ廃棄方法である。再組立ての場合、多重パケット・メッセージを構成しているパケットに対応するすべての記述子は、メッセージに対する最後のパケットが受信されるまで、TMC203内に保持され、次に、バーストによりDCP202に出力される。DCP202は、記述子のバーストが表すパケットを1つのパケットに組立てる。記述子のバーストが表すパケットがDCP202内で1つのパケットに組立てられるという事実は、PPDの問題を解決するための利点と考えることができる。すなわち、PPD技術に従って形成された短縮されたメッセージは、宛先に到着して欠陥があると判断されるまで、システム201およびネットワークの残りの部分で引き続きリソースを使用する。PPDとMPPDとの間の違いは、EOMフラグを含むパケットの処理である。MPPDにおいては、廃棄中の「中間パケット」に対する記述子は、セットされたEOMフラグ705ばかりでなく、それが中間パケットの廃棄であることを示すためにセットされたタイプ・フィールド703も含む。中間パケットに対する記述子は、次に、メッセージの再組立てが行われるトラヒック・キュー204内に置かれる。メッセージの最後のパケットを含むメッセージのパケットに対する記述子の残りの部分が廃棄される。部分メッセージに対するパケットを表す記述子はスケジュールすることができる。以下に詳細に説明するように、記述子は、トラヒック・キューが指定するトラヒック・クラス・スケジューラに対して仮想ポート251が指定する記述子キュー247にインタリーブされないで出力される。記述子キュー247をサーブするチャネル・プロセッサは、次に、記述子が表すパケットからのペイロードを1つのパケットのペイロードに再度組み立てる。チャネル・プロセッサが、EOMフラグおよび中間パケット廃棄指標を含む記述子に遭遇した場合には、チャネル・プロセッサは再度組み立てたペイロードを含む1つのパケットを廃棄する。
<廃棄の詳細な例:図10および図11>
下記の詳細な例においては、廃棄構成ブロック431、バッファ・プール仕様433、および親バッファ・プール仕様435の詳細について、修正部分パケット廃棄モードが使用され、パケットを廃棄すべきかどうかを判断するために、ランダム早期廃棄検出(RED)技術が使用されている場合に対するエンキュー・プロセッサ301の動作について詳細に説明する。
<廃棄構成ブロック431の詳細>
図10は、この場合に対する廃棄構成ブロック431のフィールドである。廃棄構成ブロック431は2つの部分、すなわち、そのフィールドがすべての廃棄構成ブロックに対して共通な部分1001および1019、そのフィールド1023〜1029が、いつパケットを廃棄すべきかを判断するための技術の内の1つに特有な部分1003からなる。部分1001の共通なフィールドおよびフィールド10019から説明するが、参照番号1002は、通常の方法による、パラメータ・ブロック431の共通の部分のフォーマットを示す。このフォーマットは、各フィールドに対して、列1004〜1006および1つの行を含む。フィールド1019から説明すると、このフィールドは、パケットを廃棄すべきかどうかを判断するために使用する技術を示すコードを含む。この場合、コードは011bであり、RED廃棄技術が適用されていることを示す。
フィールド1017は、廃棄構成ブロック431に関連づけられた廃棄トラヒック・キューに対するtqid423を含むことができる。記述子が廃棄構成ブロック431に指定されているように廃棄されると、それはフィールド1017内に指定された廃棄トラヒック・キューへ廃棄される。フィールド1015は、フィールド1017内に実際に有効なtqidが存在するかどうかを示す。eom制御フィールド1013は、トラヒック・キューに対して、メッセージ廃棄モードのどれを使用すべきかを指定するコードを含む。
フィールド1011〜1008は、それにトラヒック・キュー204が属するバッファ・プールおよびバッファ・プールの親に対するしきい値を指定する。フィールド1010および1011が指定するバッファ・プール最大しきい値は、バッファ・プールに内蔵させることができるパケットの全最大サイズを指定する。キューに新しいパケットを追加した場合に、この制限を超えた場合には、パケットに対する記述子はトラヒック・キューに追加されず、代わりに廃棄キュー内に入れられる。フィールド1008および1009が指定する親バッファ・プールの最大しきい値は、親バッファ・プールの子であるバッファ・プールにより共有するために使用することができる、パケット記憶装置の大きさを指定する。記述子が表す受信パケットに対して記憶装置の空間が十分ない場合には、記述子はトラヒック・キューに追加されずに、廃棄キュー内に入れられる。
フィールド1007は、その内容がいつパケットを廃棄すべきかを検出するために使用する技術により変化する廃棄構成ブロック431の一部を含む。図10においては、これらのフィールドは、RED部分1003のフィールド1023〜1029である。RED技術は、この技術をいつ適用すべきかを決定するために最小しきい値を使用する。トラヒック・キューのバッファ・プール内のパケットの全サイズが、受信パケットをトラヒック・キューに追加した後のサイズより小さい場合には、受信パケットは、親バッファ・プールの状態がどうであれ廃棄されない。フィールド1027および1029はこの最小しきい値を含む。トラヒック・キューのバッファ・プール内のパケットの全サイズが、バッファの最小しきい値とバッファ・プールの最大しきい値との間である場合には、RED技術は、パケットを廃棄すべきかどうかを決定するために、バッファ・プール仕様403内に記憶している他の情報と共に、フィールド1023および1025内に定義されている確率項を使用する。フィールド1021はこの構成では使用されない。
<バッファ・プール仕様433の詳細:図11>
廃棄構成ブロック431のように、バッファ・プール仕様433は、2つの部分、すなわち、参照番号1102で示すすべてのバッファ・プール仕様に共通な部分と、参照番号1103で示すいつパケットを廃棄すべきかを決定するための所与の技術に特有な部分とを含む。図11の部分1103は、RED技術が必要とする部分である。バッファ・プール仕様433は、廃棄構成ブロック433と同じ方法で示されている。
部分1102内の共通なフィールドから説明するが、1107は部分1103が置かれるフィールドである。1108は、仕様433が表すバッファ・プールの瞬間的(すなわち現在の)サイズを含む。フィールド内の値は、バッファ・プールに属するトラヒック・キューへの記述子の追加、またはこれらのトラヒック・キューからの記述子の除去を追跡するために更新される。第1の場合には、記述子が表すパケットのサイズは、バッファ・プールの瞬間的なサイズに追加され、第2の場合には、パケットのサイズは、バッファ・プールの瞬間的なサイズから差し引かれる。フィールド1109および1110は、それ以下では、パケットをバッファ・プールに属するトラヒック・キューから廃棄されないバッファ・プールのサイズを指定する。
sizeinPacketsNotBytesフィールド1111は、バイト数またはパケット数でバッファ・プール・サイズを指定すべきかどうかを示す。親バッファ・プール識別子1113は、バッファ・プールの親バッファ・プールに対する識別子である。廃棄データ構成タイプ1115は、最終的に、バッファ・プールに属するトラヒック・キューが使用する廃棄技術を指定する。廃棄データ構成タイプ1115は、これらトラヒック・キュー内のフィールド1019が指定したように、同じ技術を指定しなければならない。この例のフィールド1115内においては、廃棄データ構成タイプ1115は、RED廃棄技術を指定する。
参照番号1103は、RED廃棄技術に特有のフィールドを示す。RED技術は、その
計算の際に平均バッファ・サイズを使用し、フィールド1117はその値が最後に更新された時間であり、一方、フィールド1119は、値自身を含む。フィールド1121〜1129はすべてRED廃棄技術で使用する値を含む。フィールド1101および1115は、バッファ・プール仕様433の共通部分1102からの情報を含む。
<廃棄動作の詳細:図12>
図12は、トラヒック・キューの廃棄構成ブロック431が、パケットを廃棄すべきかどうかを決定するために、RED技術が使用することを示す廃棄データ・タイプ・フィールド1019、および部分的パケット廃棄の修正PPDフォームを使用すべきことを示すeom制御フィールド1013内にあるタイプを有する場合に、エンキュー・プロセッサ301が、多重パケット・メッセージを処理する方法のフローチャートである。トラヒック・キューが、メッセージ内のパケットに対する記述子を受信している限りは、エンキュー・プロセッサ301は、トラヒック・キューに関するループ1205を実行する。
すでに説明したように、エンキュー・プロセッサ301が、パケットを廃棄するためにMPPDアルゴリズムを使用している場合には、エンキュー・プロセッサ301は、TMC記述子214の内の1つを廃棄しなければならなくなるまで、非廃棄トラヒック・キュー204へのメッセージ内のパケットを表すTMC記述子214を出力する。この時点以降、エンキュー・プロセッサ301は、自分がメッセージの最後のパケットに対する記述子を受信するまで、トラヒック・キューを廃棄するために残りのパケットに対する記述子を廃棄する。この記述子は、そのEOMフラグ・セットを有し、エンキュー・プロセッサ301は、エラーを示すためにそれにマークを付け、それを廃棄しなかったメッセージのパケットを含む非廃棄トラヒック・キューに出力する。パケットのペイロードを1つのパケットに再組立てしているDCP202内のチャネル・プロセッサが、そのEOMフラグ・セットを有し、欠陥ありとマークされた記述子に遭遇した場合には、チャネル・プロセッサは再度組立てたパケットを廃棄する。
図12のフローチャート1201に示す、好ましい実施形態のアルゴリズムの実施について引き続き詳細に説明するが、まず開始点1203から開始してループ1205に入る。エンキュー・プロセッサ301は、最初に、メッセージに対する次の記述子を入手する。トラヒック・キューのトラヒック・キュー・パラメータ・ブロック401内のトラヒック・キュー状態フィールド837および853が、キューが多重パケット・メッセージのパケットに対する記述子を受信中であること、およびメッセージを廃棄すべきであること(1209)を示している場合には、記述子が表すパケットが廃棄トラヒック・キューに追加される。この追加を行うために、分岐1211が実行される。そうでない場合には、分岐1213はブロック1215へ進む。多重パケット・メッセージの一部ではない記述子の場合には、この実施形態と関係がない。ブロック1215においては、次の記述子が表すパケットのサイズが、新しい値、新しいBPszを入手するために、トラヒック・キューのバッファ・プール仕様のBpサイズ・フィールド1108内の値に追加され、値、新しいPBPszを入手するために、親バッファ・プール仕様435内の対応する値に追加される。これらの値は、記述子の処理方法を決定するための、ケース・ステートメント1217内のバッファ・プールおよび親バッファ・プールに対する廃棄構成ブロック431内のしきい値の値と共に使用される。
下記の3つの可能性がある。
・新しいBPszは、廃棄構成ブロック431のフィールド1027および1029の最小許容しきい値の値より小さい。この場合、パケットは廃棄されない(分岐1219)。
・新しいPBPszは、廃棄構成ブロック431内の親バッファ・プールに対する最大しきい値フィールド1008および1009の値より大きい。または新しいBPszは、
廃棄構成ブロック431内のバッファ・プールに対する最大しきい値フィールドの値より大きい。この場合、パケットは廃棄される(分岐1223)。
・そうでない場合には、パケットを廃棄すべきかどうかを決定するために、RED技術が使用される(分岐1221)。RED技術は、決定を行うために、バッファ・プール仕様431内の確率項情報を使用する。
第1の可能性の場合、記述子は、図1251に示すように、非廃棄トラヒック・キューに単に追加される。第3の可能性の場合、RED技術がパケットが廃棄すべきでないことを示している場合には(ブロック1225)、分岐1227は分岐1219に進み、記述子は非廃棄トラヒック・キューに追加される。第2の可能性の場合には、またはRED技術がパケットを廃棄すべきであると示している場合には、分岐1229に進む。この理由は、両方の場合とも、トラヒック・キュー状態フィールド836を、この記述子および以降の記述子を廃棄すべきことを示すために設定しなければならないためである。状態はブロック1231で設定される。
廃棄すべき記述子の場合には、次のステップにおいて、記述子がそのEOMフラグ・セットを有するかどうかのチェックが行われる(決定ブロック1233)。持っている場合には(分岐1237)、MPPD技術は、記述子がエラーを含んでいるというマークを付け、非廃棄トラヒック・キューに入れることを要求する。これは1239および1241において行われる。そうでない場合には、分岐1235に進み、記述子が廃棄トラヒック・キューに追加される。すべての場合、それがEOM記述子であるかどうかをチェックするために、記述子が再度チェックされる。そうでない場合には、ループ1205は継続する(分岐1245)。そうでない場合には、ループは終了し(分岐1247)処理が終了する(1249)。
<推論的エンキュー:図13>
推論的エンキューは、受信プロセッサ221が、記述子216が表す全パケットを受信する前に、トラヒック・キュー204にTMC記述子216を提供できるようにする技術である。TMC203は、受信プロセッサ221が全パケットの受信に成功したか失敗した後まで、TMC記述子216内に含まれているcp記述子214が、QMU221への出力でないことを保証する。受信プロセッサは、一組のエンキュー・データ・メッセージ601により推論的エンキューを行う。第1のエンキュー・データ・メッセージは、パケットに対するTMC記述子216を含み、フィールド611内に記述子216が表すパケットが推論的にエンキューされていることを示す。受信プロセッサ221がパケットの処理を終了した場合には、第2のエンキュー・データ・メッセージ、コミット・メッセージが後に続く。この場合も、フィールド611は、メッセージがコミット・メッセージであることを示す。コミット・メッセージが到着した後でだけ、TMC203は、第1のエンキュー・データ・メッセージ内に含まれているcp記述子214を出力する。
推論的にエンキューは、それがトラヒック・キュー204に提供中の受信プロセッサ221内で表すパケットの受信の開始から、TMC記述子216に対する固定待ち時間を保証するのに有用である。このような固定待ち時間は、多数の受信プロセッサ221の間で、パケットの1つの高い帯域幅ストリーム(OC48cパケット・ストリームのような)から受信したパケットの処理を分散するDCP202内で稼働しているアプリケーションにとって重要なものである。分散受信パケット処理の場合には、受信順序と同じ順序でトラヒック・キューに必ず記述子が提供されるように注意しなければならない。DCP202においては、受信プロセッサが厳格なラウンドロビン順序でパケットを処理し、自分たちが処理しているパケットに対するTMC記述子216を同じ厳格なラウンドロビン順序でQMU215に出力し、また記述子キュー213内の記述子の順序が正しくなるように、受信プロセッサをセットアップすることにより順序が維持される。パケット受信の開始
と推論的エンキュー機構によるトラヒック・キュー204内のエンキュー間の固定待ち時間は、全パケットの受信をTMC203への記述子の提供と分離し、そのため、小さなパケットを受信しているチャネル・プロセッサが、より長いパケットを受信しているチャネル・プロセッサがその全パケットを受信するまで阻止された場合に発生する受信帯域幅を狭くしないで、この記述子の厳格なラウンドロビン処理をできるようにする。
続けてより詳細には、好ましい実施形態においては、コミット・エンキュー・データ・メッセージのフィールド623は、推論的にエンキューされているパケットのソース、すなわち、記述子が表すパケットを受信した受信プロセッサを識別する。全パケットを受信プロセッサ221で受信した場合には、受信プロセッサ221は、コミット・エンキュー・データ・メッセージを送信する。図13の参照番号1301は、コミット・エンキュー・データ・メッセージの詳細図である。コミット・エンキュー・データ・メッセージ1301は、タイプ・フィールド611とソース識別子フィールド623だけしか含んでいない。タイプ識別子フィールド611は、パケットの受信に成功したことを示すコミットの成功、またはパケットを正しく受信できなかったことを示すコミットの失敗を示すように設定することができる。同じ受信プロセッサが全パケットを受信するので、デキュー・データ・メッセージ内のソース識別子フィールド623は、パケットを表す記述子に対するエンキュー・データ・メッセージ内の値と同じ値に設定される。
コミット・エンキュー・メッセージが到着すると、トラヒック・キュープロセッサ305は、コミット・エンキュー・メッセージを、対応する推論的エンキュー・メッセージからのTMC記述子216と整合するために、コミット・エンキュー・メッセージにより送られたTMC記述子内のソース識別子フィールド623の値を使用する。好ましい実施形態においては、整合プロセスは、DCP202内には少数の受信プロセスしか存在しないし、所与のソースは、所与のトラヒック・キュー内の推論的エンキュー・メッセージから未決着のTMC記述子216を1つしか持つことができないので整合の処理は簡単になる。整合が行われた場合、トラヒック・キュープロセッサ305は、推論的にエンキューしたTMC記述子216内のフィールド611の値を、コミット・メッセージ内のフィールド611の値が決定したように設定する。コミット・メッセージ内のフィールドが「成功によるコミット」を示した場合には、トラヒック・キュープロセッサ305は、推論的エンキュー・メッセージ内のフィールド611の値を、正常なエンキュー・メッセージを示すように設定する。フィールドが「失敗によるコミット」を示している場合には、トラヒック・キュープロセッサ305は、推論的エンキュー・メッセージ内のフィールド611の値を、失敗を含む正常なエンキュー・メッセージを示すように設定する。修正した推論的エンキュー・メッセージの記述子が、そのトラヒック・キューの先頭に到着し、スケジューリングが行われ、キュー管理ユニット211にデキューされると、記述子に対するデキュー・データ・メッセージは、コミット・メッセージによりフィールド611が設定された値に対応するフィールド703内の値を有する。好ましい実施形態のキュー管理ユニット211は、記述子を処理しているチャネル・プロセッサ上のフィールド611に送り、チャネル・プロセッサは、フィールド611が推論的エンキューに失敗したことを示している場合には、何をするのかを決定する。当然ながら、ほとんどの場合、チャネル・プロセッサはパケットを廃棄させる。
推論的エンキューの重要な面は、スケジューリングに対するその影響である。推論的にエンキューされたTMC記述子216内のcp記述子214は、コミット・メッセージを受信するまでQMU211に出力することはできないので、そのヘッドTMC記述子216が、コミット・メッセージがまだ受信されていない推論的にエンキューされた記述子であるトラヒック・キュー204は、スケジューリングのために選択することができない。このため、このようなトラヒック・キューが、スケジューラ・キュー523の先頭に到着すると、トラヒック・キュープロセッサ305は、TMC記述子216がサービスを受け
る前に、スケジューラ・キュー523からトラヒック・キュー204を除去し、それをトラヒック・キューのトラヒック・クラス・スケジューラ503に関連づけられた選択できないトラヒック・キュー内に入れる。トラヒック・キュープロセッサ305が、トラヒック・キュー204を選択可能にするコミット・メッセージを受信した場合には、トラヒック・キュープロセッサ305は、トラヒック・キュー204をトラヒック・クラス・スケジューラに対するスケジューラ・キューに返送する。
<デキュー・スケジューラ303が実行する動作の詳細>
デキュー・スケジューラ303は、スケジューラ階層501内のスケジューラを実行し、これによってTMC203のスケジューリング機能、シェーピング機能、およびセグメント分割機能および再組立て機能を実行する。最初に、TMC203の好ましい実施形態で使用することができるスケジューラの一般的な説明を行い、次に、好ましい実施形態のスケジューラが使用するスケジューリング・アルゴリズム、シェーピング・アルゴリズム、およびセグメント分割アルゴリズム、および再組立てアルゴリズムについて説明し、最後にスケジューラの詳細な例およびこれらスケジューラの実施および実行方法について説明する。
<TMC203内のスケジューラ>
概論ですでに指摘したように、デキュー・スケジューリングは、TMC203のユーザによる広範な設定が可能であるスケジューリング階層501により行われる。以下の説明においては、スケジューラの種類、スケジューラの構成方法、およびスケジューラの動作方法について詳細に説明する。
概論で説明したように、スケジューラは、階層内のその位置により階層501内で分類される。トラヒック・クラス・スケジューラ503は、リーフ・ノードのところに位置しており、内部スケジューラ509は、内部ノード内に位置している。好ましい実施形態のスケジューラは、スケジューラの入力スケジューラ・キュー523の間から出力する目的で、スケジューラ・キュー523を選択するために、下記のタイプのスケジューリング・アルゴリズムを使用することができる。
・入力スケジューラ・キュー523の間で厳格な優先順位により出力スケジューラ・キュー523が選択される厳格な優先順位
・ラウンドロビン
・各入力スケジューラ・キューに加重が与えられ、所与の入力スケジューラ・キューが受信した帯域幅の共有が、所与の入力スケジューラ・キューの加重と、すべての入力スケジューラ・キューの全加重との間の関係により決まる加重均等化共有
・パケット・バイト長をベースとする加重均等化共有スケジューリングを行う、フレームをベースとする不足ラウンドロビン
・その記述子が固定サイズのパケットを表す、入力トラヒック・キュー間で使用できる帯域幅を割り当てるグループ化加重均等化キューイング
好ましい実施形態においては、トラヒック・クラス・スケジューラ503は、上記スケジューリング・アルゴリズムの内の任意のものを使用するように設定することができるが、内部スケジューラ509は、厳格な優先順位アルゴリズム、ラウンドロビン・アルゴリズム、または加重均等化共有アルゴリズムだけを使用するように設定することができる。当然ながら、階層501を通してスケジューラ・キューが移動する経路209に沿ったいくつかの点で、異なるタイプのスケジューラを使用することもできる。
<構成スケジューラ:図14>
図14は、好ましい実施形態でスケジューラを構成するユーザが使用することができるリソースである。これらのリソースが、以下の説明において論理スケジューラ1401と呼ぶものを構成している。ユーザは、論理スケジューラ1401が提供するリソースの中から選択を行うことによりトラヒック・クラス・スケジューラまたは内部スケジューラを構成する。リソースは、厳格な優先順位スケジューラ1407、過度スケジューラ141
5、および保証スケジューラ1413を含む。
3つのスケジューラ1413、1415および1407は、下記のように相互に関連している。保証スケジューラ1413は、スケジューラ1401がスケジューリングを行うために使用することができる全帯域幅の一部が、論理スケジューラ1401に対する入力スケジューラ・キュー間で共有するために使用できることを保証する。保証部分の共有が帯域幅を完全に使用しない場合には、各スケジューラ・キューは、帯域幅の保証されていない部分の一部を受信し、使用するためにさらに選択することができる。過度スケジューラ1415は、帯域幅のこのまだ保証されていない部分のスケジューリングを行うために使用することができる。このため、その保証された帯域幅をすで使用してしまっているために、スケジューラ1413がスケジューラ・キュー523を選択することができない場合には、スケジューラ・キューは、帯域幅の保証されていない部分のスケジューリングを行う、過度スケジューラ1415が選択するために依然として選択することができる。スケジューラ1413の出力1409、およびスケジューラ1415の出力1411は、厳格な優先順位スケジューラ1407に進み、厳格な優先順位スケジューラは、スケジューラ1415が選択した任意のスケジューラ・キューより、スケジューラ1413の優先順位が選択した任意のスケジューラ・キューを与える。出力1403にある論理スケジューラ1401のスケジューラ・キュー出力は、スケジューラ1407が選択したものである。
可能な構成について引き続きより詳細には、好ましい実施形態においては、保証スケジューラは、常に非作業保存加重均等化キューイングスケジューラとして構成される。好ましい実施形態においては、特に重要な加重均等化キューイングスケジューラの1つの形は、フレームをベースとする不足ラウンドロビン・スケジューラである。過度スケジューラは、厳格な優先順位スケジューラ、ラウンドロビン・スケジューラまたは作業保存加重均等化キューイングスケジューラとして構成することができる。保証スケジューラが、非作業保存加重均等化キューイングスケジューラとして構成される場合には、過度スケジューラは、厳格な優先順位スケジューラ、ラウンドロビン・スケジューラ、または加重均等化キューイングスケジューラとして構成することができる。
<スケジューラが使用するアルゴリズムの詳細>
好ましい実施形態でスケジューラが使用するアルゴリズムの内のラウンドロビンおよび厳格な優先順位についてはこれ以上の説明は省略する。以下の説明においては、加重均等化キューイング、フレームをベースとする不足ラウンドロビン、およびグループ化加重均等化キューイングについてより詳細に説明する。
<加重均等化キューイング>
加重均等化キューイングは、動的に、システム201を通過するトラヒックのいくつかの流れに優先順位または加重を適用する。低い加重を有するトラヒックの流れは、すべての流れが使用することができる帯域幅のより大きな部分を入手し、所与の流れが使用することができる帯域幅の幅は、流れの現在の数および加重により変化する。加重均等化キューイングの利点は、即時送信を必要とする対話型トラヒックのようなトラヒックが、低い加重を受けとることができることであり、一方、即時送信を必要としないトラヒックは、高い加重を受け取ることができることである。種々のトラヒックのどれも、他のトラヒックを阻止しないし、すべてのトラヒックが必要とするアクセスのタイプを入手する。通常、加重均等化キューイングアルゴリズムを使用する場合、入力セッションが受信するサービスまたは帯域幅の部分的な大きさは、そのセッションの加重をすべての入力セッションの加重の合計で割ったものに等しい。TMC203においては、スケジューラの各能動およびスケジュール可能な入力スケジューラ・キュー523は、1つの入力セッションを表す。
パケット・トラヒックに対する種々の「加重均等化キューイング」アルゴリズを定義す
る多くの論文がこれまでに発表されている。これらの種々の加重均等化キューイングアルゴリズムは、すべて一般化プロセッサ共有(GPS)モデルに由来するものであって、すべてのアルゴリズムは異なる均等化特性を有する。TMC203の好ましい実施形態で使用するアルゴリズムの種々のタイプは、最も簡単な構造で最善の遅延および均等化特性を達成しようとする。
好ましい実施形態の加重均等化キューイングスケジューラは、作業保存または非作業保存スケジューラとして構成することができる。作業保存スケジューラは、スケジューラ・キューが能動状態またはスケジューリングを行うことができる場合には、常に入力スケジューラ・キューにサービスを提供することができる。作業保存スケジューラの目標は、スケジューラの入力スケジューラ・キューが最小の多忙さでサービスを受ける一定の速度を発生するために、スケジューラ入力を完全にインタリーブすることである。作業保存スケジューラは、スケジューラがスケジューラ・キューを出力することができる速度は可変であり、そのため好ましい実施形態の加重均等化キューイングアルゴリズムで使用するシステムの潜在的または仮想時間機能は、リアルタイムの速度で進行しないで、その代わりに提供されるサービスの量により進行するものと仮定する。非作業保存スケジューラにおいては、入力スケジューラ・キューは、リアルタイムで特定のモメントが発生するまでサービスを受けない。そのモメントが起こるまで、次にサービスを受けるトラヒック・キューは、選択することができなくなったために除去されない限り、そのままスケジューラ・キューの先頭に位置する。
<フレームをベースとする不足ラウンドロビン>
フレームをベースとする不足ラウンドロビン・スケジューリング・アルゴリズムは、可変長パケットからなるトラヒック・ストリーム用に使用される。このアルゴリズムは、通常帯域幅保証を必要としないか、または厳格なジッタおよび遅延要件を有するトラヒック・キュー間で使用できるサービス帯域幅を加重均等化共有割当てする。このアルゴリズムは、通常、長いメッセージ・パケットおよび遥かに短い肯定応答パケットが混ざっているTCPトラヒックに対して特に有用である。
好ましい実施形態においては、アルゴリズムは、トラヒック・クラス・スケジューラ503で使用される。フレームをベースとする不足ラウンドロビン・トラヒック・クラス・スケジューラは、3つの入力スケジューラ・キューを有する。1つは、高優先順位スケジューラ・キューと呼ばれ、他の2つは現在のスケジューラ・キューおよび次のスケジューラ・キューと呼ばれる。トラヒック・クラス・スケジューラ503は、高優先順位スケジューラ・キューおよび現在のスケジューラ・キューだけを、現在のスケジューラ・キューより高い優先順位を有する高優先順位スケジューラ・キューでスケジューリングを行う。スケジューラ503は、空になるまで現在のスケジューラ・キューのスケジューリングを行う。この時点で、スケジューラ503は、現在のスケジューラ・キューと次のスケジューラ・キューとを交換する。選択可能になったトラヒック・キューは、次のスケジューラ・キューに追加され、時間間隔中にサービスのその共有分を受信したトラヒック・キューは、現在のスケジューラ・キューまたは高優先順位スケジューラ・キューから除去され、次のスケジューラ・キューに追加される。選択不能になったトラヒック・キューは、高優先順位スケジューラ・キューまたは現在のスケジューラ・キューから除去される。
FBDRRアルゴリズムは、トラヒック・キューを高優先順位スケジューラ・キュー間で移動し、これらスケジューラ・キューの両方から次のスケジューラ・キューへ移動する。トラヒック・キューは、FBDRRスケジューラ内の2つのトラヒック・キュー・パラメータと、各トラヒック・キュー内の2つのカウンタの値により移動する。パラメータは下記の通りである。
・トラヒック・キューが、高優先順位スケジューラ・キュー、または現在のスケジュー
ラ・キューから次のスケジューラ・キューに移動する前に、トラヒック・キューが受信することができるサービスの最大量を指定する最大割合(maximum quantum)、および
・トラヒック・キューが、高優先順位キューから現在のスケジューラ・キューへ移動する前に、トラヒック・キューが受信するサービスの量を指定する最小割合(minimum quantum)。
カウンタは、不足カウンタおよびBytesServedThisRoundCounterである。値はトラヒック・キューのパラメータ・ブロック403内のスケジューラ状態フィールド845内に記憶される。
スケジューラが、現在のスケジューラ・キューのスケジューリングを開始すると、現在のスケジューラ・キュー内の各トラヒック・キューに対する不足カウンタは、不足カウンタの現在の値に最大割合を加算した値にセットされ、トラヒック・キュー用のBytesServedThisRoundCounterはゼロにセットされる。所与のトラヒック・キューが、現在のスケジューラ・キューまたは高優先順位キューの先頭に到着する度に、ヘッド記述子内に指定されているパケット長が、不足カウンタの現在の値から減算され、そのパケット長が、BytesServedThisRoundCounterに加算される。興味のある結果が3つある。
・減算の結果が正である場合、および加算の結果が最小割合より小さい場合、および所与のトラヒック・キューが、まだ高優先順位スケジューラ・キュー内に存在しない場合には、所与のトラヒック・キューは、現在のスケジューラ・キューから高優先順位スケジューラ・キューへと移動する。
・減算の結果が正である場合、および加算の結果が最小割合より大きい場合であって、すでに存在している場合には、トラヒック・キューは現在のスケジューラ・キュー内に留まる。そうでない場合には、トラヒック・キューは、現在のスケジューラ・キューの末尾に移動する。いずれの場合も、BytesServedThisRoundはゼロにセットされる。
・減算の結果が負である場合には、所与のトラヒック・キューは、現在のスケジューラ・キューまたは高優先順位キューから除去され、次のスケジューラ・キュー内に入れられる。そうした場合、不足カウンタは、不足カウンタに最大割合を加算したものにセットされ、BytesServedThisRoundはゼロにセットされる。最大割合に不足カウンタを加算すると、トラヒック・キューは、このラウンドで受信できなかったサービスを次のラウンドで受信する機会が与えられる。
高優先順位スケジューラ・キュー、およびトラヒック・キューを高優先順位スケジューラ上に置き、高優先順位スケジューラから除去するための規則により、そのヘッド記述子が最小割合パラメータより小さいパケットを表すトラヒック・キューは、確実に優先順位サービスを受けることになる。これにより、今度は、TCP肯定応答パケットに対する記述子のスケジューリングが確実に迅速に行われる。FBDRRアルゴリズムの他のバージョンは、現在のスケジューラ・キューおよび次のスケジューラ・キューだけを必要とする。このバージョンの場合、高優先順位スケジューラ・キューへ移動する条件を満足させたトラヒック・キューは、単に、それが次のスケジューラ・キューに移動するための条件を満足するまで、現在のスケジューラ・キューの先頭にそのまま位置する。
<グループ化加重均等化キューイング>
トラヒック・クラス・スケジューラは、グループ化加重均等化キューイングアルゴリズムを使用することができる。このアルゴリズムは、加重均等化キューイングアルゴリズム
に類似しているが、共通のサービス加重およびパケット・サービス間隔を有する複数のグループのトラヒック・キュー間でサービス帯域幅を分配するためにすでに修正されている。このアルゴリズムは、入力スケジューラ・キュー毎の加重均等化共有とは反対に、トラヒック・キュー毎に加重均等化共有を割り当てる。
グループ化加重均等化キューイングスケジューラは、下記のように機能する。
1.同じ入力スケジューラ・キューに割り当てられたすべてのトラヒック・キューは、同じサービス加重および同じパケットサービス間隔を共有する。すなわち、スケジューラは、固定の一組の加重、各入力スケジューラ・キュー内のすべてのトラヒック・キューに対する1つの加重をサポートし、また、同じ入力スケジューラ・キューに属するすべてのトラヒック・キューは、同じサイズ2のパケットを運ぶものと仮定する。スケジューラは、選択可能な各トラヒック・キューに対して加重均等化共有を保証するが、最悪の場合の最初の待ち時間上のトラヒック・キューの保証された境界は、そのトラヒック・キューのスケジューラ・キュー内の選択可能なトラヒック・キューの数により影響を受ける恐れがある。このスケジューリング・アルゴリズムは、帯域幅を保証する場合、またはATMセルのような固定サイズのパケットを運ぶトラヒック・キューの間で使用できる帯域幅を割り当てる場合に有用である。
<シェーピングの詳細>
TMC203内でのシェーピングは、必要なデキュー伝送速度特性を達成するために、トラヒック・キューまたはトラヒック・キューの集合体からパケット記述子のデキューを遅らせるために使用する機構として定義される。TMC203においては、シェーピングは非作業保存加重均等化キューイングアルゴリズムを使用するスケジューラで実施される。このようなスケジューラは、トラヒック・ストリームのデキュー・サービス速度が、所与の時間中指定の最大速度を超えないように、能動トラヒック・ストリームへのサービスを遅らせるように構成することができる。すべてのシェーピングされたスケジューリングにより、短期間のデキュー速度はバースト的になりやすくなり、場合によっては、多数の能動スケジューラ入力の多重化により導入されたジッタおよび遅延により、必要な速度制限を超える恐れもある。
<シェーピングのためのスケジューラの構成>
シェーピングのための論理スケジューラ1401を構成するために多数の技術を使用することができる。これらすべての技術の基礎は、非作業保存スケジューラとして保証スケジューラ1413を構成し、過度スケジューラ1415に帯域幅を割り当てないことである。より詳細には、グループ化加重均等化キューイングアルゴリズムを保証スケジューラ1413で使用する場合には、
・各トラヒック・キュー入力は、トラヒック・キューが属する入力スケジューラ・キューの加重が指定する速度にシェーピングされる。
・トラヒック・クラス・スケジューラが、可変長パケット・トラヒックのスケジューリングを行っている場合には、トラヒックを運んでいるトラヒック・キューを、トラヒック・クラス・スケジューラを加重均等化キューイングスケジューラとして構成し、各入力スケジューラ・キューを可変パケット長トラヒックを運ぶ1つのトラヒック・キューに制限することにより別々にシェーピングすることができる。
(二重漏洩バケットによるシェーピング)
Q5内での二重漏洩バケット(dual leaky bucket)スケジューリングは、短期間のピーク速度およびある程度長い期間中の維持速度へのデキューを制限する方法での固定長トラヒックのスケジューリングに制限される。このスケジューリングは、グループ化モードで動作している非作業保存加重均等化キューイングトラヒック・クラス・スケジューラ503に接続している複数のペアのスケジューラ・キュー523を通してサポートされている。各組の偶数のスケジューラ・キューは、必要な一次速度でパケットを出力するように構成しなければならない。奇数のスケジューラ・キューは、保持速度で
パケットを出力するように構成しなければならない。トラヒック・キューをスケジューラ・キューに追加しなければならない場合には、保持速度漏洩バケット・アルゴリズムが、パケットを今送信すれば保持速度漏洩バケットに違反するのかどうかを判断するために使用される。保持速度漏洩バケットに対する状態情報は、管理2のフィールド816内のトラヒック・キューのパラメータ・ブロック403内に、トラヒック・キュー毎にセーブされる。このため、それに対する廃棄ポリシーが二重管理であるトラヒック・キュー504は、デュアル・シェーピング・アルゴリズムによりスケジュールされるスケジューラを指定することはできない。トラヒック・キュー504は、さらに、そのスケジューラ入力構成3011(図30)内にデュアル・シェーピングを指定しなければならないし、また、入力構成に適当な定数を選択しなければならない。定数は、スケジューラ入力のどのセットが使用されているのか、パケット内で測定した漏洩バケット周期、および漏洩バケット限界を定義しなければならない。
トラヒック・キュー204が最初に選択できるようになった場合、そのトラヒック・キューは、一次速度で構成されたスケジューラ・キュー上に置かれ、漏洩バケット状態情報は、トラヒック・キューの管理2のフィールド816にセーブされる。トラヒック・クラス・スケジューラは、トラヒック・キューのスケジュール状態フィールド845内に記憶されている記述子が、サービスを受けている場合には、スケジュール状態情報を返送する。記憶されている値は、トラヒック・クラス・スケジューラに返送され、次回、トラヒック・キューはスケジューラ・キューの先頭に位置することになる。スケジュール状態情報は、その速度に対する適当な時間まで、トラヒック・キューがサービスを受けるのを防止する動作可能時間を含む。
トラヒック・キューが選択できるようになり、スケジューラ・キューに追加される度に、トラヒック・キューの先頭の記述子が表すパケットへのサービス提供が、保持速度漏洩バケットを違反するのかどうかを判断するために、管理2のフィールド内の漏洩バケット状態がチェックされる。速度に違反する場合には、パケットの記述子が、一次速度キュー上ではなく、保持速度スケジューラ・キュー上に置かれる。さらに、選択できる時間の値が、トラヒック・キューが、選択可能な時間になる前にサービスを受けるのを防止するトラヒック・キューのパラメータ・ブロック403内にセットされる。選択可能時間になり、トラヒック・キューがサービスを受けると、(依然として選択可能であるなら)トラヒック・キューが、保持速度キューの末尾に戻される。
<セグメント分割および再組立て>
システム201は、長いパケットにより送られたメッセージを、一連の短いパケットにより送られたメッセージに変換することができるし、一連の短いパケットにより送られたメッセージを、長いパケットにより送られたメッセージに変換することもできる。これらの変換の最初の変換はセグメント分割と呼ばれ、第2の変換は再組立てと呼ばれる。その一例が、一連のATMパケットのペイロードとして送られるIPパケットである。セグメント分割の場合、IPパケットは、一連のATMパケットのペイロードにセグメント分割される。再組立ての場合には、上記一連のATMパケットのペイロードが、IPパケットに再組み立てされる。
システム201においては、セグメント分割および再組立ての両方が、cp記述子214上での動作を含む。セグメント分割の場合には、長いパケットに対する1つの記述子214が、短いパケットに対する一連の記述子になる。再組立ての場合には、短いパケットに対する一連の記述子214が、長いパケットに対する1つの記述子214になる。好ましい実施形態においては、これらの動作の両方が、TMC203内のトラヒック・キューを含み、トラヒック・クラス・スケジューラ503内で行われる。セグメント分割のために使用されるトラヒック・クラス・スケジューラは、セグメント分割スケジューラと呼ばれ、再組立てのために使用されるトラヒック・クラス・スケジューラは、再組立てスケジ
ューラと呼ばれる。好ましい実施形態においては、ユーザは、セグメント分割スケジューラまたは再組立てスケジューラになるように、トラヒック・クラス・スケジューラを構成することができる。セグメント分割スケジューラまたは再組立てスケジューラを指定するように構成されるトラヒック・キューは、さらに、それぞれ、セグメント分割トラヒック・キュー、または再組立てトラヒック・キューと呼ばれる。セグメント分割の場合、セグメント分割の際に使用されるパラメータの値は、セグメント分割スケジューラが構成された場合に指定される。再組立ての場合には、再組立てトラヒック・キューが構成された場合に、再組立て動作のためのパラメータが指定される。
<セグメント分割の詳細>
トラヒック・キューのセグメント分割の場合には、セグメント分割トラヒック・キューの先頭に到着した1つのTMC記述子216が、一連のQMU記述子2508を生成させる。一連の各QMU記述子は、エンキューされた記述子のコピー、およびプログレス・インジケータ(フィールド715)を含む。このプログレス・インジケータ(フィールド715)により、一連のQMU記述子に対応するパケットを送信しているDCP202内のチャネル・プロセッサは、一連のQMU記述子が生成される1つのTMC記述子が表すパケットのペイロードのどのバイトを、一連の各QMU記述子が表すパケットを形成するために取り出す必要があるのかを決定することができるようになる。
一連のQMU記述子の数、および各QMU記述子内のプログレス・インジケータの値は、下記情報により決定される。
・トラヒック・キューのトラヒック・キュー・パラメータ・ブロック403内の情報フィールド836;再組立てトラヒック・キュー内においては、このフィールドの値は、トラヒック・キューの先頭に現在位置する記述子が表す各パケットの長さである。
・セグメント分割スケジューラ内のセグメント・サイズ・フィールド;このフィールドの値は、シーケンス内の各パケットの全サイズである。
・セグメント分割スケジューラ内のペイロード・サイズ・フィールド;このフィールドの値は、シーケンスの各パケット内のペイロードの最大サイズである。
・セグメント分割スケジューラ内のオーバーヘッド・サイズ・フィールド;このフィールドの値は、セグメント・サイズ・フィールドおよびペイロード・サイズ・フィールド内に指定されているサイズの間の違いである。
すべてのサイズはバイト単位で測定される。
セグメント分割スケジューラが、1つの可変長パケットを表す記述子に対するエンキュー・メッセージから生成するデキュー・データ・メッセージの数は、下記により計算される。
セグメントの数=最大限度((パケット長+セグメント分割オーバーヘッド・サイズ)/セグメント・ペイロード・サイズ)
シーケンスに属する各デキュー・データ・メッセージ701は、セグメントのこの記述子が生成される前に、セグメント分割中のパケットのペイロードのどれだけが残ったのかを示すフィールド715内のパケット・バイトの残りの値を含む。
一例を挙げて説明すると、セグメント分割トラヒック・キューの先頭の記述子は、157バイトの全長を有するパケットを表す。この記述子は一連の固定長パケットにセグメント分割される。各固定長パケットは、60バイトの全長を有する。60バイトの内の48バイトはペイロードである。セグメント分割の結果は、60バイト・パケットの下記のシーケンスである。
Figure 2005510893
この例の場合、セグメント分割スケジューラにより生成されたQMU記述子2508を受信しているDCP202内のチャネル・プロセッサは、適当なヘッダおよびトレーラを含む60バイトのパケットを生成するようにプログラムされる。QMU記述子からの残りの値、および元のパケットの長さ(QMU記述子のcp記述子214内に含まれている)を使用して、チャネル・プロセッサは、各60バイトのパケットの48バイトのペイロードに内蔵する元のパケットのペイロードのどのバイトをバッファ管理ユニット227から取り出さなければならないか、また、所与の60バイトのパケットは、元のパケットのペイロード、中間パケットまたは最終パケットを含むシーケンス内の第1のパケットであるのかどうかを判断する。
セグメント分割がトラヒック・クラス・スケジューラにより行われるという事実から分かると思うが、パケットを廃棄するという決定は、その宛先がセグメント分割トラヒック・キューであるかどうかによっては影響を受けない。スケジューリングの場合、個々の各デキュー・データ・メッセージ内の記述子は、別々にスケジュールされる。このため、パケットのシーケンス内のパケットに対するQMU記述子を含むデキュー・データ・メッセージを他のデキュー・データ・メッセージによりインタリーブすることができる。セグメント分割トラヒック・キューにより作成された記述子に対して使用されるスケジューリング機構は、他の記述子に対するものと同じものである。唯一の違いは、記述子のスケジューリングを行うために使用するパケット長の値が、TMC記述子216内に指定されているサイズからではなく、セグメント・サイズ・フィールドから検索されることである。
<再組立て>
再組立ては、1つのパケットのペイロードを形成するための一連のパケットのペイロードの結合を含む。DCP202は結合を行う。それ自身の上で結合を行う目的で、DCP202は、一連の小さなパケットから大きなパケットを正しく再構成するために、状態の種々の断片を維持しなければならない。TMC203は、大きなパケットに対して必要なパケットを表すQMU記述子が、仮想出力ポートを通して出力された他のQMU記述子によりインタリーブされないで、再組立てスケジューラに対する仮想出力ポート521を通して出力されるように、TMC203からの一連のパケットに対するQMU記述子2508のデキューを編成することにより結合を行うためにDCP202内で必要な状態を最小にする。再組立て中の再組立てトラヒック・キューの役割は、シーケンスを提供することである。再組立てに関連する問題は、シーケンス内のすべての記述子を受信し、記述子を出力することができるようになるまで、記述子を記憶する際に結合されるTMC203内のリソースの量である。TMC203で実施される再組立ては、この問題を2つの方法で処理する。
・シーケンス内の記述子の内の1つが廃棄されたらすぐに、そのシーケンス内の受信したすべての記述子を廃棄するために、修正したPPD廃棄アルゴリズムを使用する方法。
・シーケンス内のパケットの流れが中断したことを判断するために、タイムアウト機構を使用する方法。中断が検出された場合、シーケンスに対する記述子は、修正したPPD
廃棄アルゴリズムにより廃棄される。
TMC203が、1つのインタリーブされていないバースト内のQMU記述子2508のシーケンスを、再組立てスケジューラのVOP251が指定する記述子キューに出力した場合、DCP202内のチャネル・プロセッサは、一連のパケットのペイロードを1つの大きなパケットに結合するために、QMU記述子2508を処理することができ、大きなパケットに対するTMC記述子216を、通常の方法でスケジューリングを行うためにエンキュー・データ・メッセージ601内のTMC203に提供することができる。TMC203が、大きなパケットに対するQMU記述子2508を含むデキュー・データ・メッセージを出力すると、大きなパケットはDCP202内の他のチャネル・プロセッサにより出力される。このため、再組立ては、システム201内で行うことができるTMC203とDCP202間の複雑な相互作用の種々のタイプの好適例である。
それにより再組立てが行われる種々のタイプのトラヒック内においては、そのペイロードが、大きなパケットに再組立てされる一連のパケットに属するパケットが、下記の特徴を有するトラヒックのストリーム内のその発信元から、DCP202内に到着する。
・パケットは、ソースにより送られる順序で受信される。
・ソースは、異なる一連のパケットに属するパケットとインタリーブしない。
・異なるソースにより送られたシーケンスに属するパケットはインタリーブすることができる。
シーケンス内の最後のパケットには、メッセージの終わりを含んでいるというマークが付けられる。
TMC203は、TMC203内で再組立てされる一連のパケットの各ソースに対応するトラヒック・キューが存在するように、シーケンスを含むトラヒックのストリームを処理する受信プロセッサが、それらがTMC203に送るTMC記述子216内のソースに対応するトラヒック・キューを指定するようにすでに構成されている。このため、所与の発信元からシーケンスに対するTMC記述子216を受信しているトラヒック・キューは、それらがDCP202内で受信された順序でTMC記述子を受信する。しかし、他の発信元からの任意のインタリーブされたTMC記述子は含まない。チャネル・プロセッサは、シーケンス内の最後のパケットに対するTMC記述子に、そのパケットがEOM(メッセージの終わり)パケットであることを示すマークを付ける。このため、再組立てされるパケットに対する記述子を受信するトラヒック・キューは、少なくとも1つのTMC記述子のインタリーブされていないシーケンスを含み、記述子の各シーケンスは、トラヒック・キューが対応する発信元からの一連のパケットに対応し、DCP202で受信し、まだ再組立てしていない一連のパケットを表す。パケットの最後のシーケンスに属するパケットが、すべてDCP202に到着していない場合には、記述子の最後のシーケンスは、そのパケットがEOMパケットであることを示す記述子を含んでいない。
トラヒック・キューの先頭に位置するTMC記述子216が、EOMパケットを表しているというマークが付けられているTMC記述子216をまだ含んでいないTMC記述子216のシーケンスに属している場合には、再組立てトラヒック・キュー204をスケジュールのために選択することはできない。他の任意の選択することができないトラヒック・キューのように、選択できない再組立てトラヒック・キューは、サービスを受ける場合には、スケジューラ・キューから除去される。EOM記述子が到着すると、トラヒック・キュープロセッサ305は、再び、トラヒック・キューをスケジューラ・キューの中に入れる。トラヒック・キュープロセッサ305が、シーケンスに対するEOM記述子が到着したかどうかを判断するために使用する状態情報は、トラヒック・キューのパラメータ・ブロック403のフィールド861内に含まれている。
トラヒック・キュー204がスケジューラ・キューの先頭に位置しており、スケジューラ階層501がスケジューラ・キューを選択した場合には、トラヒック・キューの先頭で一連の記述子の出力が開始する。この時点で、スケジューラ・キューにより再組立てトラヒック・クラス・スケジューラ293から仮想出力ポートまでスケジューラ階層を通る経路209内のスケジューラは、同じ仮想出力ポートを使用する他のスケジューラ・キューのスケジューリングが行われないようにロックされ、またトラヒック・キューは、シーケンス内のすべての記述子が出力されるまでスケジューラ・キューの先頭にそのまま残る。マークされたEOMである記述子が出力されると、ロックされたスケジューラのロックが外され、トラヒック・キューがスケジューラ・キューの先頭から除去される。このため、トラヒック・キューの先頭の一連の記述子は、一連の記述子が対応する一連のパケットがDCP202内で受信された順序で、そのトラヒック・キュー204から経路の仮想出力ポートに対応するQMU217内の記述子キュー213に出力される。再組立てスケジューラに属するトラヒック・キュー内でのエンキューのためのTMC記述子216は、他のトラヒック・キュー内のエンキューのための記述子と同じ方法で廃棄することができる。好ましい実施形態で使用される廃棄モードは、MPPDモードである。
今説明した再組立て技術に関する問題は、形の崩れたメッセージ、すなわち、EOMマーカーを有さないメッセージから記述子を検出するという問題である。このようなメッセージを表す一連のTMC記述子は、マークのついた最後の記述子を決して受信しないので、シーケンス内の最初のTMC記述子がトラヒック・キューの先頭に到着すると、トラヒック・キューは選択できなくなり、引き続き選択できない状態が続く。トラヒック・キュープロセッサ305は、形の崩れたシーケンスの位置を発見し、そのリソースを解放するのを助けることができる、トラヒック・キューの動作不能状態を追跡するための一般的な方法により、この状況を検出する。一般的な動作不能状態の追跡は、「クロック・スイープ」方法の実施により行われる。周期的に、トラヒック・キューのパラメータ・ブロック403のフィールド869に、1回目のスイープを行ったというマークが付けられる。トラヒック・キュー上の任意のエンキュー動作により、「1回スイープ」という表示がクリアされる。「クロック・スイープ」が、次回のクロック・スイープの際にトラヒック・キューに渡されると、フィールド869は、最後のスイープ以来エンキュー動作によりクリアされた場合には、1回スイープ済みと再度マークが付けられるか、クリアされたことがない場合には、2回またはそれ以上スイープされたとマークされる。2回またはそれ以上スイープ済みとマークされる任意のトラヒック・キューは、少なくともそのスイープの周期の間アイドル状態でいなければならない。
再組立てトラヒック・キューの場合、一般的クロック・スイープは、トラヒック・キューに、フィールド869が2回スイープされたとマークされた後で、進行中の再組立てを「タイムアウト」させるために使用される。タイムアウトが発生した場合、フィールド861は、トラヒック・キューが動作不能になり、トラヒック・キューが、能動スケジューリング・キュー内に入れられることを示すようにセットされる。形の崩れたメッセージに対する一連の記述子は、すでに説明したように、TMC203からデキューされるが、形の崩れたシーケンスの最後のパケットがデキューされると、フィールド861が、トラヒック・キューが動作不能になることを示すためにセットされたために、デキュー・スケジューラ303が、シーケンスが早期に終了したこと、およびトラヒック・キューが動作不能になったことを示す特殊なEOMインジケータで最後のパケットにマークを付ける。再組立てされるペイロードに対する記述子を受信しているDCP202内のチャネル・プロセッサが、形の崩れたメッセージを示すEOMを含む記述子を受信すると、チャネル・プロセッサは記述子に対応するペイロードを廃棄する。再組立てのためにトラヒック・キュー毎の状態を維持しなければならないので、再組立てトラヒック・クラス・スケジューラは、スケジューリングのためにトラヒック・キュー毎の状態を必要とするスケジューリング・アルゴリズムを使用することができない。好ましい実施形態においては、フレームを
ベースとする不足ラウンドロビンおよびグループ化加重均等化キューイングアルゴリズムは、スケジューリングのためにトラヒック・キュー毎の状態を必要とする。
<スケジューラの実施の詳細>
好ましい実施形態においては、スケジューラは、TMC IC1503内のスケジューラ・メモリ1515で実施され、メモリ1515内にスケジューラの状態をセットすることにより構成される。各スケジューラは、スケジューラ階層501内のレベルおよびレベル内のその数により参照され、スケジューラへの所与の入力は、スケジューラのレベル、レベル内の数および入力の数により参照される。好ましい実施形態においては、各レベルは、そのレベルにおけるスケジューラ入力を指定するために使用することができる値の範囲を有し、スケジューラの数は、範囲内のオフセットであり、スケジューラに属する入力は、オフセットと(スケジューラの入力の数から1を引いたもの)の間の入力である。入力は、1つのスケジューラだけに属することができる。好ましい実施形態においては、1つのレベル0のスケジューラは、32の入力を使用することができ、レベル1のスケジューラは512の入力を使用することができ、レベル2のスケジューラは4Kの入力を使用することができ、レベル3のスケジューラは8Kの入力を使用することができる。すでに説明したように、スケジューラ階層のリーフは、常にトラヒック・クラス・スケジューラ503であり、内部ノード内部スケジューラ509である。
<トラヒック・クラス・スケジューラ503の詳細:図21>
図21は、階層501内の特定のトラヒック・クラス・スケジューラ503(i)の位置、および好ましい実施形態のその行動を定義する情報である。トラヒック・クラス・スケジューラ503(i)は、階層内のリーフであるので、その一組の入力スケジューラ・キューは、そのトラヒック・キュー204が、トラヒック・クラス・スケジューラ503(i)を指定する能動スケジューラ・キュー523の内の一組531である。その各入力2101に対して、トラヒック・クラス・スケジューラ503(i)は、入力2101に関連づけられたスケジューラ・キュー523に対する入力状態2103を維持する。所与の入力2101(i)に対する入力状態2103(i)は、入力がバックログされているかどうか(フィールド2105)、すなわち、入力の関連するスケジューラ・キュー523(j)が能動状態にあるかどうか、アルゴリズム依存入力状態2106、および入力2101に関連づけられたスケジューラ・キュー523内のヘッド・トラヒック・キュー、および末尾トラヒック・キューの識別子2107および2109を含む。アルゴリズム依存入力状態2106は、スケジューラが使用するスケジューリング・アルゴリズムにより変化する入力スケジューラ・キューに関連する状態である。
階層501内のトラヒック・クラス・スケジューラ503(i)の位置は、内部スケジューラ509およびスケジューラ503(i)が、スケジューラ503(i)が選択したバックログされたスケジューラ・キュー523を出力するその入力を定義する接続状態2121により指定される。この内部スケジューラは、スケジューラ503(i)の親と呼ばれる。接続状態2121は、親が属する階層501内のレベル2123、そのレベル内のスケジューラの数2125、およびスケジューラ503(i)がそれが選択するスケジューラ・キューを出力している親の入力2127を含む。
トラヒック・クラス・スケジューラ503(i)が、その入力に関連づけられたスケジューラ・キューのスケジューリングを行う方法は、スケジューラ状態2111により決まる。スケジューラ・タイプ2113は、スケジューラ・タイプを指定し、したがって、トラヒック・クラス・スケジューラが使用するアルゴリズム、およびそれがセグメント分割スケジューラまたは再組立てスケジューラかどうかを指定する。入力2115の数は、トラヒック・クラス・スケジューラに属する入力2101の数を指定する。ロックされているかどうか。2117は、スケジューラ503(i)をロックするために使用され、一方、階層501を通るその経路がスケジューラ503(i)として同じ仮想出力ポート521を含む再組立てスケジューラ503は、一連の記述子を出力している。アルゴリズム依
存状態2119の内容は、2113で指定されるスケジューラ・タイプにより異なり、そのスケジューリング・アルゴリズムを実行するために必要なスケジューラ・タイプおよび状態を構成するために必要な情報を含む。
<内部スケジューラ509の詳細:図22>
図22は、内部スケジューラ509(i)の詳細なブロック図である。接続状態2121およびスケジューラ状態2111は、内部スケジューラ509(i)に対するものも、トラヒック・クラス・スケジューラ503に対するものも同じである。内部スケジューラ509(i)とトラヒック・クラス・スケジューラ503の間の機能的な違いは、内部スケジューラ509(i)は、スケジューラ階層501の内部ノードであり、したがって、内部スケジューラ509(i)は、それに属するものが、階層501内の下位のスケジューラ509(i)であるスケジューラの動作により決まるスケジューラ・キューの内の一組534のスケジューリングを行うことである。この機能的な違いは、スケジューラ509(i)が、入力に現在バウンドしているスケジューラ・キュー523の位置を発見し、そのスケジューラ・キューが能動状態であるばかりでなく、スケジュール可能であるかどうかを判断することができるようにする情報を含む入力状態2205に反映される。
参照番号2205(0)は、入力2203(0)に対する入力状態2205の詳細を示す。フィールド2105は、選択したスケジューラ・キュー2201(i)が能動状態にあり、スケジューリングを行うことができるかどうかを示す。フィールド2106は、図21で説明したように、アルゴリズム依存入力状態を含む。フィールド2207〜2209は、スケジューラ・キューのトラヒック・クラス・スケジューラ503から伝搬する、スケジューラ・キュー2201(i)に関する情報を含む。ソース・スケジューラ・フィールド2207およびソース・スケジューラ入力フィールド2209により、スケジューラ・キューに対するヘッドおよび末尾ポインタの位置を知ることができる。伝搬した選択可能な時間2211は、スケジューラ・キュー2201が、非作業保存スケジューリング・アルゴリズム内でスケジュールされるために次に選択可能になる時点を示す。
フィールド2213〜2217は、スケジューラ509(i)とスケジューラ・キュー2201(i)のソースであるトラヒック・クラス・スケジューラ503の間の経路上に位置する任意の仮想出力ポート521(k)に関する情報を含む。フィールド2213は、そのような仮想出力ポートが存在するかどうかを示す。そのような仮想出力ポートが存在する場合には、フィールド2215は、仮想出力ポート521(k)に対応する記述子キュー213が、さらに記述子を含むことができるかどうか、すなわち、スケジューラ・キュー2201(i)のスケジューリングを行うことができるかどうかを示す。VOP指定子フィールド2217は、仮想出力ポートに対する識別子を含む。QMU記述子2508がTMC203から出力されると、レベル0のスケジューラ509内のこのフィールドは、QMU記述子2508のフィールド707内に指定されているVOP識別子のソースである。
<仮想出力ポートの詳細:図27>
図27は、仮想出力ポート521(i)を実施するために、好ましい実施形態で使用するデータ構造である。フィールド2701は、仮想出力ポート521(i)が使用することができる現在のクレジット、すなわち、仮想出力ポート521(i)に対応する記述子キュー213に現在追加することができる記述子の数を含む。フィールド2701は、デキュー/デキュー肯定応答ループの往復の待ち時間がある場合に、仮想出力ポートの全帯域幅を確実に維持することができるように計算される最大デキュー・クレジットにより構成される。TMC203が、スケジューラ階層501を通るその経路529が仮想出力ポート521(i)を含むスケジューラ・キューに属するトラヒック・キューから記述子を出力する場合は常に、フィールド2701の値は減少する。QMU217が、TMC203に、仮想出力ポート521(i)に対応する記述子キュー213から記述子が除去されたことを示すデキュー・データ・メッセージ肯定応答1921を送信する場合は常に、フ
ィールド2701の値は増大する。これらのメッセージを送る機構については以下に説明する。現在のクレジット・フィールド2701の値がゼロである場合には、その経路529が仮想出力ポート521(i)を通るスケジューラ・キューのどれに対してもスケジューリングを行うことができない。フィールド2703は、仮想出力ポート2703の識別子である。好ましい実施形態においては、識別子は、単に、仮想出力ポートに対応する記述子キュー213の識別子である。フィールド2701および2703は、図22に示すように、スケジューラ階層501内の仮想出力ポート521(i)上に位置するスケジューラ509に送られる。2705で一緒にグループ分けされたフィールドは、スケジューラ階層501内の仮想出力ポート521(i)の位置を指定する。この位置は、特定のスケジューラ509(j)への入力を指定することにより指定される。スケジューラ509(j)は、階層(フィールド2707)内のそのレベルおよびレベル(フィールド2709)内のその位置により指定され、フィールド2711は、スケジューラ509(j)への入力を指定する。
<スケジューラ階層501の動作の詳細>
スケジューラ階層501は、スケジューラ階層501の状態を変更するスケジューラ・イベントに応じて、スケジューラ・キュー523のスケジューリングを行う。このようなイベントが発生する度に、デキュー・スケジューラ303は、最初、そのイベントが必要とする階層501の状態を変更し、次に、階層501の状態の変化により影響を受けた階層501の一部内で、スケジューラ・キュー523のスケジューリングを行う。3つのタイプのスケジューラ・イベントが存在する。
・スケジューラ・キューエンキュー・イベント。スケジューラ・キューエンキュー・イベントは、スケジューラ・キューの先頭に位置するトラヒック・キュー204内で、またはヘッド・トラヒック・キューの先頭のTMC記述子216内で変化が起きた場合に発生する。
・スケジューラ・キューデキュー・イベント。スケジューラ・キューデキュー・イベントは、スケジューラ階層501がデキューに対するスケジューラ・キュー523を選択した場合に常に発生する。
・仮想出力ポート・イネーブル・イベント。仮想出力ポート・イネーブル・イベントは、DCP202からのデキュー肯定応答メッセージ1921の受信により、仮想出力ポートのデキュー・クレジットがゼロからゼロでない状態に移行した場合に発生する。
スケジューラ・イベントが発生すると、スケジューラおよび仮想出力ポートの状態の値が変化し、イベントによる変更が値で行われた場合、イベントにより影響を受けた経路529内のスケジューラは、スケジューリングを開始する。このスケジューリングは、経路のトラヒック・クラス・スケジューラ523から開始し、レベル0のスケジューラにおいて終了する。
<スケジューラ・イベントによる状態変化>
スケジューラ・イベントにより影響を受けた状態について、引き続きさらに詳細に説明するが、スケジューラ・キューエンキュー・イベントは、空でなくなりそのため能動状態になっているスケジューラ・キューにより発生する場合もあるし、新しいトラヒック・キューを入力スケジューラ・キューのヘッドにするスケジューラ・キューデキュー動作により発生する場合もあるし、または入力スケジューラ・キューの先頭に位置するトラヒック・キューの先頭になる新しい記述子により発生する場合もある。後者の場合、新しい記述子をデキューすることができず、そのため、トラヒック・キューを選択することができなくなった場合には、スケジューラ・キューエンキュー・イベントが、スケジューラ・キューから除去される選択不能なトラヒック・キューになる。それにより、今度は、スケジューラ・キューが空になり、そのため非能動状態になる。スケジューラ・キューエンキュー
・イベントのために、スケジューラ・キューが能動状態または非能動状態になると、当然ながら、バックログされたか?2105の値は変化する。
デキュー・イベントは、トラヒック・キューを空にする場合があり、空になると今度はスケジューラ・キューは非能動状態になる。そうすると、今度は、そこから記述子がデキューされたスケジューラ・キューに対する入力状態2103のトラヒック・クラス・スケジューラ503のバックログしたか?フィールド2105が更新される。デキュー・イベントは、さらに、スケジューラ階層501を通るスケジューラ・キューの経路529沿いの仮想出力ポートの後のスケジューラ内の仮想出力ポート・イネーブル・フィールド2215を更新する。仮想出力ポート・イネーブル・イベントは、また、最後に、スケジューラ階層501を通るスケジューラ・キューの経路529沿いの仮想出力ポートの後の、スケジューラ内の仮想出力ポート・イネーブル・フィールド2215を更新する。
<スケジューラ・イベントによるスケジューリング>
イベントにより要求される階層501内の状態の更新が行われた後で、スケジューリングが、その状態がイベントにより影響を受け、レベル0のスケジューラを通る最も低いレベルで影響を受けたスケジューラから、階層を通して経路529上のスケジューラに続いている、階層501内の最も低いレベルのスケジューラから開始する。このため、スケジューラ・キューエンキューおよびデキュー・イベントの場合には、スケジューリングは、イベントにより影響を受けたトラヒック・クラス・スケジューラ503により開始し、仮想出力ポート・イネーブル・イベントの場合には、スケジューリングは、その入力をその状態がイベントにより影響を受ける仮想出力ポートにより制御されるスケジューラから開始する。経路上の各スケジューラにおいて、スケジューラの入力により定義される一組のスケジューラ・キューからのスケジューラ・キュー523の選択が、下記の規則により行われる。
・イベントによる影響を受けた最も低いレベルのスケジューラが、トラヒック・クラス・スケジューラ503である場合には、入力スケジューラ・キューがバックログされていない限り、フィールド2105で示すように、トラヒック・クラス・スケジューラにより入力スケジューラ・キューを選択することはできない。
・スケジューラが、仮想出力ポートにより制御される入力スケジューラ・キューを有する内部スケジューラ509である場合には、仮想出力ポート・イネーブル状態2215が入力スケジューラ・キューがスケジュール可能であると示していない限り、スケジューラにより入力スケジューラ・キューを選択することはできない。
・スケジューラが内部スケジューラ509であり、入力スケジューラ・キューが将来のものではない送られた選択可能な時間フィールド2211内にある値を有する場合には、スケジュール可能な入力スケジューラ・キューの間での選択は、スケジューラの構成されたスケジューリング・アルゴリズムにより制御される(例えば、厳格な優先順位スケジューリング・アルゴリズムは、値の最も低い能動状態のスケジューラ入力を選択する)。
・すべての入力スケジューラ・キューが、将来のものである時間をフィールド2211内に持っている場合には、最も近い選択可能な時間を有するスケジュール可能な入力スケジューラ・キューが選択される。
DCP202へのデキューのために選択したスケジューラ・キューは、レベル0のスケジューラが選択した入力2203に関連づけられた入力状態2205内の送られたスケジューラ/入力状態2207および2209により識別され、選択したスケジューラ・キューが通った経路に対する仮想出力ポート521は、入力2203に関連づけられた入力状態2205内の送られた仮想出力ポート指定子2217により識別される。
<スケジューラ構成の詳細:図23、図24、図29、図36および図37>
図23および図36は、トラヒック・クラス・スケジューラ503、および内部スケジューラ509両方を構成するために使用されるスケジューラ構成データ2301を示す。いくつかのタイプのトラヒック・クラス・スケジューラの構成は、図29に示す追加のトラヒック・クラス・スケジューラ構成データ2901を必要とする。指定子2301内に含まれているデータは、スケジューラ用のスケジューラ構成指定子425を構成するために使用される。上記と同様に、これら図面はテーブルであるが、テーブルの各行は、構成データ2301または2901内のフィールドを示す。フィールドの使用方法は行1006内に指定してある。図23のほとんどの部分は説明を必要としない。フィールド2303および2305は、スケジューラのレベルおよびレベル内の位置を指定し、これによって構成中のスケジューラを識別する。フィールド2307〜2311は、その親へのスケジューラの接続方法を定義する。フィールド2313〜2317は、論理スケジューラ1401に関してスケジューラのタイプを定義する。フィールド2319はスケジューラの入力に対する入力数を定義する。この数はスケジューラのタイプにより変化する。入力構成データは、図24のスケジューラの各入力に関連する。
図29は、トラヒック・クラス・スケジューラ構成データ2901である。フィールド2903は、定義中のトラヒック・クラス・スケジューラ503に関連づけられた廃棄トラヒック・キューに対するtqid423である。グループ化スケジューラ・タイプ・フラグ2906は、スケジューラがグループ化モードで動作しているかどうかを示す。スケジューラ・タイプ・フィールド2907は、スケジューラがFBDRRスケジューラであるかどうかを示す。デュアル・シェーパ・フラグ2909は、すべてのスケジューラの入力がデュアル・シェーピング・モードで動作していることを示す。タイプ・フィールド2911は、スケジューラがスケジューリング中のトラヒック・キューのタイプを指定する。このフィールドは、トラヒック・キュー204が可変長または固定長のパケットを有するかどうかを示し、固定長のパケットである場合には、スケジューラがトラヒック・キューでパケットをセグメント分割するのかまたは再組立てするのかを示す。タイプ・フィールド2911が、トラヒック・キューをセグメント分割することを示している場合には、フィールド2913〜2917は、セグメント分割の際に使用するパラメータを指定する。
図24および図37は、スケジューラの入力を初期化するために使用されるスケジューラ入力初期化データ2401を示す。このデータは、また、スケジューラ構成指定子425の一部でもある。この場合も、これらの図はテーブルであり、各行は入力初期化データ内のフィールドを示す。フィールド2407および2409は入力が属するスケジューラを指定し、一方、フィールド2411は指定のスケジューラで初期化中の入力の数を示す。残りのフィールドの内のどれを使用するかは、スケジューラのタイプにより異なる。フィールド2403および2405は、加重均等化キューイングを使用するスケジューラ・タイプ内のバイト・サービス間隔を指定する。フィールド2413は、保証スケジューラ1413および過度スケジューラ1415への入力の接続方法を指定するために、図14のタイプの保証−過度選択スケジューラで使用される。
図30、図40および図41は、トラヒック・キューを、トラヒック・クラス・スケジューラ503に対する入力スケジューラ・キュー523に関連づけるために使用するデータ3001を示す。所与のトラヒック・キューに対して、このデータは、トラヒック・キューのパラメータ・ブロック403内のフィールド831により参照される。データの内容は、トラヒック・クラス・スケジューラが使用するスケジューリング・アルゴリズムにより異なる。3003に示す内容は、トラヒック・キューが、トラヒック・クラス・スケジューラに属する1つの入力スケジューラ・キューに割り当てられたままになっているすべてのスケジューリング・アルゴリズムに対して使用される。データは、アルゴリズムが
固定スケジューラ・キュー内およびトラヒック・クラス・スケジューラ内の固定入力スケジューラ・キューの数を含むフィールド3009内にトラヒック・キューを保持していることを示す00にセットされるタイプ・フラグ3005からなる。データ3003を使用するトラヒック・クラス・スケジューラの例としては、ラウンドロビン・スケジューラおよび厳格な優先順位スケジューラ等がある。
データ3011は、トラヒック・キューが、ペアの入力スケジューラ・キューの部材間で移動するデュアル・シェーピング漏洩バケット・スケジューラに対して使用される。タイプ・フィールドの値は、このタイプのスケジューリングを指定し、フィールド3015および3017は、漏洩バケットスケジューリング用のパラメータを含み、フィールド3019は、ペアの偶数の入力スケジューラ・キューを指定する。データ3021は、FBDRRスケジューラのために使用される。タイプ・フィールド3023は、値「10」と共にこれを示す。フィールド3025は、トラヒック・キューに対する最小割合パラメータである。フィールド3027は、トラヒック・キューの最大割合パラメータである。当然ながら、多くの異なるトラヒック・キュー204もデータ3021を共有することができる。
<例:図26:フレームをベースとする不足ラウンドロビン・スケジューリング・アルゴリズムを使用するスケジューラの構成および動作>
図26は、フレームをベースとする不足ラウンドロビン・スケジューラ2601として構成されたトラヒック・クラス・スケジューラ503の詳細な構成である。すでに説明したように、FBDRRアルゴリズムは、パケット・サイズによりスケジューリングを行い、そのためトラヒックが、TCPプロトコルの通常のパケットのような可変サイズのパケットからなる場合には、帯域幅を効果的に割当てる。FBDRRのこのバージョンの新規な特徴は、TCPプロトコル内の多くのメッセージが、比較的短い肯定応答メッセージであるという事実のために、将来に備える方法である。
スケジューラ2601においては、各入力に対する接続状態2121および入力状態2103は、すでに説明した通りである。スケジューラ・タイプ・フィールド2113は、値b111を有し、不足ラウンドロビン・スケジューリング・アルゴリズムを示し、入力2115の数は値4であり、その内の3つの入力2103(0…2)は、実際にそれらに関連づけられたスケジューラ・キュー523を有する。好ましい実施形態で使用されるFBDRRアルゴリズムの実施に際しては、この場合、スケジューラ・キューの内の2つ、すなわち、入力2101(0)および2101(2)に取り付けられているスケジューラ・キュー2607および2611は、それぞれ、現在のスケジューラ・キュー2607および次のスケジューラ・キュー2611として交替する。現在のスケジューラ・キューが空である場合には、このスケジューラ・キューは次のスケジューラ・キューになり、次のスケジューラ・キューは現在のスケジューラ・キューになる。第3のスケジューラ・キューは、高優先順位キュー2609である。アルゴリズムに依存する状態2119は、3つの各スケジューラ・キューに対する状態の1つの項目を含む。項目2601は、キュー2607および2611のどちらが現在のスケジューラ・キューであるかを示す。項目2605は、どれが次のスケジューラ・キューであるかを示す。項目2603は、どのスケジューラ・キューが高優先順位キュー2609であるのかを示す。FBDRRアルゴリズムのところで説明したように、トラヒック・キューをどのスケジューラ・キュー内に置くかは、トラヒック・キューの最大割合パラメータ、および最小割合パラメータ、およびその不足カウンタ2615およびBytesServedThisRound(BSTR)カウンタ2616により決まる。パラメータの値は、参照番号2613で示すように、トラヒック・キューのパラメータ・ブロック内のフィールド831によりポイントされている入力データ3021(図30)内に含まれている。カウンタの値はフィールド845に記憶される。
各トラヒック・キューの一番下の表現は、最大割合2615、最小割合2613、不足カウンタ2615およびBSTRカウンタ2616の値が、トラヒック・キューが位置するどのスケジューラ・キューにどのように関連しているのかを示す。アルゴリズムのところで説明したように、記述子が、現在のスケジューラ・キュー2607、または高優先順位スケジューラ・キュー2609の先頭に位置するトラヒック・キュー204から除去されると、トラヒック・キューの不足カウンタ2615は、記述子のパケットの長さだけ減少し、そのBSTRカウンタ2616はその長さだけ増大する。トラヒック・キューが、高優先順位スケジューラ・キュー2609から現在のスケジューラ・キュー2607に移動すると、BSTR2616はゼロにセットされる。トラヒック・キューが、高優先順位スケジューラ・キュー2609または現在のスケジューラ・キュー2607から次のスケジューラ・キュー2611に移動すると、トラヒック・キューの不足カウンタ2615は最大割合に不足カウンタの値を加算したものにセットされ、そのBSTRカウンタ2616はゼロにセットされる。現在のスケジューラ・キュー2607または高優先順位スケジューラ・キュー2609の先頭に位置するトラヒック・キューが、選択できないかまたは選択できなくなった場合には、そのトラヒック・キューはスケジューラ・キューから除去される。トラヒック・キューが選択できるようになると、そのトラヒック・キューは次のスケジューラ・キュー2611内に入れられる。
<TMC203の物理実施:図15〜図20>
<物理実施の概要:図15>
図15は、システム201の物理実施1501のブロック図である。システム201のところで説明したように、システム201は、2つの主要な構成部品、すなわち、DCP202およびTMC203を含む。この図により詳細に示すように、TMC203は、スケジューラ階層501が構成されているスケジューラ・メモリ1515、およびTMCメモリ307の残りを実施する外部メモリ1509、1511および1513を含むTMCメモリ307の一部と共に、エンキュー・プロセッサ301、デキュー・スケジューラ303、およびトラヒック・キュープロセッサ305が実施されているTMC IC1503を含む。外部メモリ1509は、トラヒック・キュー・パラメータ・ブロック403およびトラヒック・キューに対する関連データ構造を記憶するZBT SRAMメモリである。外部メモリ1513は、トラヒック・キューの記述子キュー419内の記述子を記憶するDDRSDRAMメモリである。外部メモリ1511は、トラヒック・キュー204内でTMC記述子216をリンクし、トラヒック・キューをスケジューラ・キュー内にリンクするために使用されるデータを記憶するZBT SRAMメモリである。以下にさらに詳細に説明するように、TMC IC1503は、外部メモリの容量を変更するように構成される。
TMC IC1503は、TMIバス1507を通してDCP202からエンキュー・データ・メッセージ601を受信し、DCP202にデキュー・データ・メッセージ701を提供する。DCP202およびTMC203の両方は、TMCメモリ307に書き込むために、PCIバス1505により構成することができる。内部および外部TMCメモリ307はPCIバス1505を通して読み出したり書き込んだりすることができる。PCIバス1505は、標準PCIバス・プロトコルを使用する。TMIバス1507で使用されるプロトコルについては、以下にさらに詳細に説明する。
<TMC IC1503の詳細:図16>
図16は、TMC IC1503の内部の詳細図である。TMC IC1503はメモリも内蔵しているが、図には示していない。TMC IC1503は、PCIバス1505へのインタフェース1601、TMIバス1507へのインタフェース1603、パラメータ・メモリ1509用のコントローラ1605、リンク・メモリ1511用のコントローラ1607、および記述子メモリ1513用のコントローラ1609を含む。TMC
IC1503は、また、デキュー・スケジューラ303、エンキュー・プロセッサ301、およびトラヒック・キュープロセッサ305を含む。構成要素をリンクしている矢印
は、これら構成要素間のデータの流れを示す。このため、TMIバス・インタフェース1603がエンキュー・データ・メッセージ601を受信すると、このインタフェースは、エンキュー・データ・メッセージ601をエンキュー・プロセッサ301に出力するが、このエンキュー・プロセッサ301は、記述子メモリ1513内に記憶するために記述子メモリ・コントローラ1609に、少なくともcp記述子214、TMC記述子216の残りの内容、記憶したcp記述子214へのリンク、およびトラヒック・キュープロセッサ305へのトラヒック・キューの使用を提供する。トラヒック・キュープロセッサ305は、記述子を指定のトラヒック・キューにリンクし、またはトラヒック・キューを廃棄するために、情報、リンク・メモリ・コントローラおよびリンク・メモリ1511を使用する。これが行われている間に、デキュー・スケジューラ303は、TMC IC1503のメモリ内に記憶されているスケジューラを実行し、これによってその先頭の記述子がTMIバス・インタフェース1603を通して次に出力されるトラヒック・キューを選択する。デキュー・スケジューラ303は、選択したトラヒック・キューの先頭の記述子へのリンクを検索するために、トラヒック・キュープロセッサ305を使用し、それをデキュー・データ・メッセージ701を生成するのに必要な追加情報と共に、TMIバス・インタフェース1603に提供し、TMIバス・インタフェース1603は、コントローラ1513へリンクを提供し、メモリ1513から記述子を受信し、TMIバス・インタフェース1603を通して記述子を含むデキュー・データ・メッセージ701を出力する。<TMC IC1503によるメモリ構成:図17および図18>
すでに説明したように、TMC IC1503は、異なる容量の外部メモリにより構成することができる。図17は最大構成を示す。記述子メモリ1513は、最大4つまでの128Mb(×16)メモリと、1つの128Mb(×8)DDRSDRAMメモリIC1703を含むことができる。リンク・メモリ1511は、最大5つまでの1Mb(×18)ZBT SRAMメモリIC1705を含むことができ、記述子パラメータ・メモリ1511は、最大4つまでの512K(×36)ZBT SRAMメモリICを含むことができる。このように構成した場合、TMC IC1503は、OC48ライン・レートをサポートし、2M32ビット記述子、256Kトラヒック・キュー、および8Kスケジューラ・キューを処理することができる。ライン・レートが低い場合または記述子が少ないかまたは小さい場合、またはトラヒック・キューの数が少ないか、またはスケジューラ・キューの数が少ない場合、外部メモリの容量を少なくすることができる。PCIバス1505を通してセットすることができるTMC IC1503の構成レジスタは、外部メモリの最大サイズ、および外部メモリ内の区画のサイズの両方を定義する。図18は、OC48ライン・レートの場合の通常の構成の可能性、およびこれらの構成のために必要な各タイプの外部メモリの容量を示すテーブル1801である。
<TMIバス1507の詳細:図19>
図19は、TMIバス1507の略図1901である。テーブル1925は、バスの信号名のリスト、信号がTMC1503の観点からみて入力信号であるのか、または出力信号であるのか、および信号の記述を示すテーブルである。
(クロック信号)
DQCLK/DQCLKX1905ペアは、TMICLKソース1903からTMC IC1503が入手する。DQCLKの周波数は、TMICLKの周波数の半分である。DQCLKXは、DQCLKを倒置したものである。DQCLKXの位相とDQCLKの位相とは正確に180度ずれている。TMC IC1503のすべての出力は、DQCLKおよびDQCLKXの両方の立ち上がり縁部と同期している。これらの出力は、DQD[23:0]、NQRDY、DQARDYおよびDQPARを含む。NQCLK/NQCLKXペア1907は、受信したDQCLK/DQCLKXペアからDCPにより入手される。NQCLKXの位相とNQCLKの位相とは正確に180度ずれている。DCP202のすべての出力は、NQCLKおよびNQCLKXの両方の立ち上がり縁部と同期している。これらの出力は、NQD[23:0]、DQRDY、DQACK[1:0]およびNQPARを含む。TMICLK信号に対する最大クロック周波数は200MHzであ
るが、このことは、DQCLK/DQCLKXおよびNQCLK/NQCLKXペア内の各クロックに対する最大周波数が100MHzであることを意味する。TMICLK周波数およびNQD/DQDバス幅は、全C−5DCPポート帯域幅(約5Gbps)および40バイトの最小平均パケット・サイズを仮定して、32バイトの記述子をサポートするように選択される。TMICLK周波数は、133MHzの最大周波数を有するTMCシステム・クロック、SCLKの周波数の2倍を超えないようにさらに制限される。
(パリティ信号)
NQPAR信号1909は、(NQD[23:0]、DQRDYおよびDQACK[1:0]を含む)TMC IC1503が受信したDCP202のすべての出力をカバーする奇数パリティ信号である。DQPAR1911信号は、(DQD[23:0]、NQRDYおよびDQARDYを含む)DCP202が受信したTMC IC1503のすべての出力をカバーする奇数パリティ信号である。
(メッセージ・バス)
TMIバス1507内には3つのメッセージ・バス、すなわち、エンキュー・データ・メッセージを運ぶNQD[23:0]1913;デキュー・データ・メッセージを運ぶDQD[23:0]1917;デキュー・データ・メッセージの肯定応答を運ぶDQACK[1:0]1921が存在する。NQD[23:0]1913は、エンキュー・データ・メッセージの24ビット語を運ぶ。図6、図31および図13は、これらメッセージのフォーマットの詳細図である。NQD[23:0]バス・ピンは、バスがアイドル状態の場合には、すべて高レベルである。エンキュー・メッセージの開始は、メッセージのタイプ・フィールド611(メッセージの最初の24ビット語のビット2:0)内の非アイドル値により識別される。DQD[23:0]はデキュー・データ・メッセージの24ビット語を運ぶ。図7、図32および図33は、メッセージのフォーマットの詳細図である。エンキュー・データ・メッセージの場合のように、デキュー・データ・メッセージの開始は、メッセージのタイプ・フィールド703(メッセージの最初の24ビット語のビット2:0)内の非アイドル値により識別される。エンキュー・データ・メッセージまたはデキュー・データ・メッセージのサイズは、記述子のサイズにより異なる。記述子のサイズは、任意のエンキュー・メッセージがDCP202からTMC IC1503に送られる前に、インタフェースの両側で静的に構成される。
DQACK[1:0]は、デキュー肯定応答メッセージをDCP202からTMC IC1503に運ぶ。肯定応答メッセージが送られる度に、記述子がキュー247内のキュー213からデキューされる。各メッセージは、デキューされた記述子がTMC IC1503から送られてきたデキュー・データ・メッセージ701のフィールド707内に指定されている仮想出力ポート識別子を含む。メッセージは5つの2ビット語からなり、図28の参照番号2801はそのフォーマットを示す。
<TMIバス1510上での流れの制御:図20、図38、図39>
メッセージ・バスNQD1913、DQD1917およびDQACK1:0上のメッセージの流れは、信号NQRDY1915、DQRDY1919およびDOARDY1923によりそれぞれ制御される。NQRDY信号1915は、エンキュー・データ・バス(NQD[23:0])上でのエンキュー・データ・メッセージの流れを可能にすることを出力(assert)するものでなければならない。エンキュー・データ・メッセージが、エンキュー・データ・バス上で開始すると、終わりまで実行しなければならない。この信号は、DCP202からのエンキュー・データ・メッセージを整調するために、TMC
IC1503により使用される。極端な例の場合には、TMC IC1503は、自分が記述子記憶リソースを使い果たした場合、外部からのエンキュー・データ・メッセージを完全にストップするためにこの信号を使用する。TMC IC1503によるNQRDY1915のアサート解除の後で、DCP202は、NQCLKおよびNQCLKX両方の12の立ち上がり縁部のカウント内でエンキュー・データ・メッセージの発生をストップしなければならない。図20のタイミング図2001はこの様子を示す。NQRDY1
915は、2003でアサート解除され、DCP202は、2005が示す時間までにエンキュー・データ・メッセージの発生をストップしなければならない。
NQRDY信号がDQCLK/DQCLKXクロック・ペアと同期していることに留意されたい。NQCLK/NQCLKXペアの立ち上がり縁部は、NQRDYのサンプリングが行われるDQCLK/DQCLKXペアの第1の立ち上がり縁部が能動状態でなくなった後で、第1のNQCLK/NQCLKX立ち上がり縁部からカウントされる。NQCLK/NQCLKXペアがDQCLK/DQCLKXペアと非同期しているとして処理される場合には、必要な12からのNQCLK/NQCLKXの1つの立ち上がり縁部が、クロックの非同期的性質のために喪失する。
DQRDY信号1919は、デキュー・データ・メッセージの流れの制御を管理する。DQRDYは、デキュー・データ・バス(DQD[23:0])上でデキュー・メッセージが流れることができるようにするとアサートすることになる。デキュー・データ・メッセージがデキュー・データ・バスの上で開始すると、終わりまで実行すしなければならない。この信号は、TMC IC1503からのデキュー・データ・メッセージを整調するために、DCP202により使用される。TMC IC1503は、図20のタイミング図2007に示すように、DCPによるDQRDYのアサート解除の後で、DQCLKおよびDQCLKXの両方の6つの立ち上がり縁部のカウント中に、デキュー・データ・メッセージの発生をストップしなければならない。この場合、DQRDY1919のアサート解除は、2009において発生し、2011がこれ以上新しいデキュー・データ・メッセージを発生することができない時点をマークする。
DQRDY信号1919が、NQCLK/NQCLKXクロックペアと同期していることに留意されたい。DQCLK/DQCLKXペアの立ち上がり縁部は、DQRDYのサンプリングが行われるNQCLK/NQCLKXペアの第1の立ち上がり縁部が能動状態でなくなった後で、第1のDQCLK/DQCLKX立ち上がり縁部からカウントされる。DQCLK/DQCLKXペアがNQCLK/NQCLKXペアと非同期しているとして処理される場合には、必要な6からのDQCLK/DQCLKXの1つの立ち上がり縁部が、クロックの非同期的性質のために喪失する。
DQARDY1923は、デキュー肯定応答バスDQACK1921上でデキュー肯定応答メッセージが流れることができるようにするとアサートすることになる。デキュー肯定応答メッセージがデキュー肯定応答バスの上で開始すると、終わりまで実行しなければならない。DQARDY1923は、DCP202からのデキュー肯定応答メッセージを整調するために、TMC IC1503により使用される。DCPは、図20のタイミング図2013に示すように、TMC IC1503によるDQARDYのアサート解除の後で、NQCLKおよびNQCLKXの両方の12の立ち上がり縁部のカウント中に、デキュー肯定応答メッセージの発生をストップしなければならない。この場合、DQARDY1919のアサート解除は、2015において発生し、2017がこれ以上新しいデキュー肯定応答メッセージを発生することができない時点をマークする。
DQARDY信号1023が、DQCLK/DQCLKXクロックペアと同期していることに留意されたい。NQCLK/NQCLKXペアの立ち上がり縁部は、DQARDYのサンプリングが行われるDQCLK/DQCLKXペアの第1の立ち上がり縁部が能動状態でなくなった後で、第1のNQCLK/NQCLKX立ち上がり縁部からカウントされる。NQCLK/NQCLKXペアがDQCLK/DQCLKXペアと非同期しているとして処理される場合には、必要な12からのNQCLK/NQCLKXの1つの立ち上がり縁部が、クロックの非同期的性質のために喪失する。
<結論>
上記の詳細な説明で、関連技術の当業者に対して、本特許出願の発明が実施されるストリーム・データ処理環境の作成および使用方法を説明してきたが、上記詳細な説明は、またさらに本発明者が現在知っている本発明の最良の実施の形態も開示している。しかし、関連技術の当業者であれば、本発明は、本明細書に記載した環境以外の多くのストリーム・データ処理環境で実行することができること、および本明細書に記載した環境で、本発明の実施形態を種々に変更することができることを直ちに理解することができるだろう。
いくつかの例を挙げると、本明細書に記載した本発明の技術は、パケット処理がある集積回路において実行され、トラヒック管理が他の集積回路において実行される環境で特に有用である。しかし、本発明の技術はこのような環境に制限されるものではなく、トラヒック管理とパケット処理を別々に実施することが望ましいすべての環境に適用することができ、これによって、トラヒック管理機能またはパケット処理機能を実施するものの、集積回路として実装されたものではない装置と併用することができる。さらに、記述子の形式および内容は、トラヒック管理機能およびパケット処理機能のようにインプリメンテーションごとに変わる。さらに、好ましい実施形態のパケットに対して記述子上で実行される廃棄動作およびスケジューリング動作も、パケット自身を使用して実行することができる。環境のトラヒック管理部分とパケット処理部分との間のインタフェースの詳細も、インプリメンテーションごとに変わる。
上記すべての理由により、詳細な説明は、すべての点において例示的なものであり、本発明を制限するものではないと見なすべきであり、本明細書に記載した本発明の範囲は、詳細な説明から判断すべきものではなく、特許法によって規定される全範囲により解釈する特許請求の範囲から判断すべきものである。
パケット・ネットワークおよびパケットの図。 ルック・アサイド・データ・ストリーム管理を使用するデジタル通信プロセッサ、およびデジタル通信プロセッサと共に使用されるトラヒック管理プロセッサのブロック図。 トラヒック管理プロセッサ203の概念的全体図。 トラヒック・キュー204およびそれに関連づけられたデータ構造の全体図。 スケジューラ階層を示す図面。 エンキュー・データ・メッセージのフォーマットの詳細図。 デキュー・データ・メッセージのフォーマットの詳細図。 トラヒック・キュー・パラメータ・ブロック403のフォーマットの詳細図。 マルチキャスト詳細テーブル421のフォーマットの詳細図。 廃棄構成ブロック431のフォーマットの詳細図。 バッファ・プール仕様433のフォーマットの詳細図。 廃棄動作の詳細なフローチャート。 コミット・エンキュー・データ・メッセージのフォーマットの詳細図。 好ましい実施形態でスケジューラを構成することができる基本図面。 システム201の現在の好ましい実施例のブロック図。 TMC IC1503の詳細なブロック図。 TMC IC1503の外部メモリの構成の詳細なブロック図。 TMC IC1503の例示としての外部メモリ構成を示すテーブル。 TMIバス1507上の信号の詳細図。 TMIバス1507上の信号のタイミング図。 トラヒック・クラス・スケジューラ503の詳細図。 内部スケジューラ509の詳細図。 スケジューラを構成するために使用するデータ構造の詳細図。 スケジューラ入力を定義するために使用するデータの詳細図。 TMC203およびQMU211のハイレベル・ブロック図。 フレームをベースとする不足ラウンドロビン・スケジューリング・アルゴリズムを使用するトラヒック・クラス・スケジューラの詳細なブロック図。 仮想出力ポート521を構成するデータ構造の図面。 デキュー肯定応答メッセージの図面。 トラヒック・クラス・スケジューラ503を構成するために使用するデータ構造の図面。 トラヒック・クラス・スケジューラ503に対してスケジューラ・キューを入力するために、トラヒック・キュー204を関連づけるために使用するデータ構造の図面。 図6の続き。 図7の続き。 図7のさらに続き。 図8の続き。 図9の続き。 図23の続き。 図24の続き。 図20の続き。 図20のさらに続き。 図30の続き。 図30のさらに続き。

Claims (49)

  1. 第1トラヒック・ストリーム処理装置において記述子によって表されるパケットからなるトラヒック・ストリーム上で、第1の複数のストリーム処理機能を実行する前記第1トラヒック・ストリーム処理装置と、前記記述子を使用して前記トラヒック・ストリーム処理装置のために第2の複数のトラヒック管理機能を実行する第2トラヒック管理装置との間で情報を転送し、
    前記記述子と前記複数のトラヒック管理機能の第1のサブセットを選択する少なくとも第1選択子とを前記第1装置から前記第2装置へ転送する前記第1装置と前記第2装置との間の第1データ経路と、
    前記第1のサブセットの内の機能が実行された後に、前記記述子と前記ストリーム処理機能の第2のサブセットを選択する少なくとも第2選択子とを前記第2装置から前記第1装置へ転送する前記第1装置と前記第2装置との間の第2データ経路とを備えるインタフェース。
  2. 前記インタフェースは、前記第1装置が、前記記述子によって表される前記パケット上で前記第2のサブセットの内の機能を実行することができる場合に、前記第1装置から前記第2装置へ前記第2選択子を転送する前記第1装置と前記第2装置との間の第3データ経路を備え、前記第2装置は、該第2装置から前記第1装置への前記機能が実行されるパケットを表す記述子の流れを制御するために前記第2選択子を使用する、請求項1に記載のインタフェース。
  3. 前記第1装置は前記記述子を前記ストリーム処理機能の前記第2のサブセットと関連づけるために第1キューを使用し、
    前記第2装置は前記記述子を前記トラヒック管理機能の前記第1のサブセットと関連づけるために第2キューを使用し、
    前記第1選択子は前記第2キューを指定し、前記第2選択子は前記第1キューを指定し、
    前記第1キューの先頭から記述子が除去されたときに、前記第2選択子が前記第2装置に転送される、請求項2に記載のインタフェース。
  4. 前記第2装置が、前記第1データ経路を介して前記第1装置から前記第2装置への転送を受け入れることができるかどうかを示す指標を転送する前記第1装置と第2装置との間の第4データ経路と、
    前記第1装置が、前記第2データ経路を介して前記第2装置から前記第1装置への転送を受け入れることができるかどうかを示す指標を転送する前記第1装置と第2装置との間の第5データ経路と、
    前記第2装置が、前記第3データ経路を介して前記第2装置から前記第1装置への転送を受け入れることができるかどうかを示す指標を転送する前記第1装置と第2装置との間の第6データ経路とをさらに備える、請求項1に記載のインタフェース。
  5. 複数のパケットからなり、かつトラヒック・ストリーム・プロセッサによって処理されるトラヒック・ストリームのためのトラヒック管理動作を実行する装置であって、該装置は、
    複数のトラヒック管理機能と、
    前記トラヒック・ストリーム・プロセッサからトラヒック管理機能指定子に関連づけられた記述子を受信する入力装置と、前記記述子は前記トラヒック・ストリーム・プロセッサによって処理されるパケットを表すことと、前記記述子に関連づけられた前記トラヒック管理機能指定子は前記トラヒック管理機能のサブセットを指定することと、
    前記記述子で前記関連トラヒック管理機能指定子によって指定される前記サブセット内
    の少なくとも1つのトラヒック管理機能を実行し、前記記述子を前記トラヒック・ストリーム・プロセッサにおいて機能を指定するトラヒック・ストリーム・プロセッサ機能指定子と関連づける処理構成要素と、
    前記トラヒック・ストリーム・プロセッサに前記記述子および前記トラヒック・ストリーム・プロセッサ機能指定子を提供する出力装置とを備える装置。
  6. 複数のパケットからなるトラヒック・ストリームに対してトラヒック管理動作を実行する装置であって、
    該装置は、
    トラヒック・ストリーム内のパケットを表す複数の記述子のセットと、
    複数のトラヒック管理機能と、前記複数のトラヒック管理機能のサブセットと関連付けられている記述子の所与のセットと、
    前記所与のセットに属する記述子において記述子のセットと関連付けられている前記サブセットにある少なくとも1つのトラヒック管理機能を実行する処理構成要素とを備える装置。
  7. 記述子が前記トラヒック・ストリームを処理するストリーム・プロセッサから受信され、前記記述子のセットに関連づけられたトラヒック管理機能が前記記述子で実行された後で、前記ストリーム・プロセッサに提供される、請求項6に記載の装置。
  8. 前記ストリーム・プロセッサから受信した前記記述子は、前記複数の記述子のセットうちの1つを指定するセット指定子を備える、請求項7に記載の装置。
  9. 前記トラヒック管理機能はマルチキャスト機能を含み、
    前記複数の記述子のセットは、前記マルチキャスト機能が前記複数の記述子のセットの内の複数の他のセットにコピーする記述子用の記述子のマルチキャスト・セットを含む、請求項8に記載の装置。
  10. 前記トラヒック管理機能は、前記記述子のセット指定子によって指定されたセット内に置く代わりに、廃棄するパケットを表す受信した記述子を選択する廃棄機能のセットを含み、前記選択した記述子は、前記記述子が表すパケットを廃棄すべきことを示す指標と共に前記ストリーム・プロセッサに提供される、請求項8に記載の装置。
  11. 前記装置は、前記セット内の前記記述子が表すパケットが属するトラヒック・ストリームの状態のモデルをさらに有し、
    前記セット内の前記廃棄機能は、前記セットからのパケットを廃棄すべきかどうかを判断するために前記モデルを使用する、請求項10に記載の装置。
  12. 前記モデルは前記ストリーム・プロセッサ内のバッファの状態をモデル化し、前記バッファは前記ストリームに属するパケットからのペイロードを記憶するために使用される、請求項11に記載の装置。
  13. 前記モデルは前記ストリームの帯域幅の使用をモデル化する、請求項11に記載の装置。
  14. 前記トラヒック管理機能は受信した前記ストリーム・プロセッサに記述子をいつ提供すべきかを決定するスケジューリング機能のセットを含む、請求項7に記載の装置。
  15. 前記スケジューリング機能は、前記記述子が前記ストリーム・プロセッサに提供される時、前記記述子と共に含まれている前記ストリーム・プロセッサ内の記述子のセットに対する指定子を決定する、請求項14に記載の装置。
  16. 前記トラヒック管理機能は、前記記述子のセット指定子によって指定された前記セット内に置く代わりに、廃棄するパケットを表す受信した記述子を選択する廃棄機能のセットと、前記ストリーム・プロセッサに記述子をいつ提供すべきかを決定し、前記ストリーム・プロセッサ内の記述子のセットに対する指定子を、提供中の前記記述子に追加するスケジューリング機能のセットとを含み、
    前記記述子のセットは、廃棄すべきパケットを表す記述子を含む廃棄記述子のセットを含み、
    前記廃棄記述子のセットから提供された記述子に追加された追加指定子は、廃棄すべきパケットを表すストリーム・プロセッサ内の記述子のセットを指定する、請求項7に記載の装置。
  17. 前記記述子によって表される前記パケット内に少なくともその一部が含まれているメッセージが、前記ストリーム・プロセッサ内に完全に受信される前に、前記装置が前記ストリーム・プロセッサから前記記述子を受信する、請求項7に記載の装置。
  18. 前記トラヒック管理機能は、前記ストリーム・プロセッサに記述子をいつ提供すべきかを判断するスケジューリング機能のセットを含み、
    前記メッセージが前記ストリーム・プロセッサ内に完全に受信された場合に、前記ストリーム・プロセッサは前記装置へ通知を提供し、
    前記ストリーム・プロセッサ内に前記メッセージが完全に受信される前に、前記ストリーム・プロセッサから前記記述子を受信した場合に、前記プロセッサ構成要素は、前記通知を受信するまで前記記述子上でスケジューリング機能を実行しない、請求項17に記載の装置。
  19. 前記トラヒック管理機能は、前記パケットに対する前記記述子からパケットの一部を表す一連の記述子を生成するセグメント分割機能を含む、請求項7に記載の装置。
  20. 前記トラヒック管理機能は、前記ストリーム・プロセッサへのより大きなパケットに再組立てされるパケットを表す連続している一連の記述子を提供する再組立て機能を含む、請求項7に記載の装置。
  21. 所与の記述子のセットと前記複数のトラヒック管理機能のサブセットとの間の関連が設定可能である、請求項6に記載の装置。
  22. 前記複数のトラヒック管理機能は設定可能である、請求項21に記載の装置。
  23. 前記複数のトラヒック管理機能および前記処理構成要素は1つの集積回路において実施される、請求項6に記載の装置。
  24. 前記記述子のセットはキューとして編成され、その場合、受信した記述子が前記キューの末尾に置かれ、提供される記述子が前記キューの先頭から提供される、請求項7に記載の装置。
  25. パケットからなり、トラヒック・ストリーム・プロセッサによって処理されるトラヒック・ストリームに対するトラヒック管理動作を実行する装置であって、
    マルチキャスト機能、廃棄機能およびスケジューリング機能を含み、ユーザによる設定が可能なトラヒック管理機能と、
    それぞれが少なくとも1つの前記トラヒック管理機能とのユーザ設定が可能な関連を有する、前記パケットを表す記述子の複数のトラヒック管理キューと、
    記述子をトラヒック管理キュー内に置き、前記トラヒック・ストリーム・プロセッサ内のキューに対する指定子と共に前記トラヒック・ストリーム・プロセッサに出力される前記記述子のスケジューリングを行うために、関連するキュー指定子によって指定される前記トラヒック管理キューに関連づけられた前記トラヒック管理機能を使用することによって、前記ストリーム・プロセッサから受信する前記記述子および該記述子に関連づけられたキュー指定子に応答する処理構成要素とを備える装置。
  26. パケットが記述子によって表されるシステムにおいて、メッセージを運ぶシーケンスに属するパケットを廃棄するための方法であって、該方法は、前記システムが前記メッセージを運ぶ前記パケットを1つの集合パケットに組立てる時に使用され、
    前記シーケンスのパケットを廃棄する第1の決定の際に、前記パケットを表す前記記述子をメッセージの終わりパケットの記述子として、また不足パケットの記述子としてマークし、前記記述子によって表される前記パケットを前記集合パケットに組立てることにより、前記記述子に応答する組立装置に前記記述子を提供するステップと、
    前記マークを付けた記述子の後の前記メッセージの前記パケットに対する前記記述子を、前記記述子に応じて前記パケットを廃棄する前記システム内のパケット廃棄装置に提供するステップと、
    前記組立装置において、前記集合パケットを廃棄することにより、前記マークを付けた記述子に応答するステップとを含む方法。
  27. パケットが記述子により表されるシステムにおいて、全メッセージがシステムに受信される前に、メッセージのパケットを表す記述子の処理を開始するための方法であって、
    前記記述子のスケジューリングを行う以外の前記記述子上で処理を行うステップと、
    全メッセージを前記システム内にすでに受信したという通知を受け取った場合に、前記記述子のスケジューリングを行うステップとを含む方法。
  28. 前記通知がおそらく到着しないと決定するステップと、
    前記システムに前記記述子が示す前記パケットを廃棄させるステップとをさらに含む、請求項27に記載の方法。
  29. 前記記述子は全メッセージを含むパケットを表す、請求項28に記載の方法。
  30. 前記記述子は、前記メッセージを含むパケットの多重パケット・シーケンス内のパケットを表す、請求項28に記載の方法。
  31. パケットのストリームを処理する装置でさらに処理を行うために、前記パケットのスケジューリングを行うための装置であって、該装置は、
    少なくとも1つの内部ノードと1つのリーフ・ノードを有する1つの階層のノードを形成する複数のスケジューラと、
    前記リーフ・ノード・スケジューラに関連づけられたパケットのセットと、
    スケジューリングを行うために、前記リーフ・ノード・スケジューラと関連する前記セットの内のパケットを選択するために、前記リーフ・ノード・スケジューラと前記内部ノード・スケジューラを実行するプロセッサとを備え、
    複数のスケジューリング・アルゴリズムの中から選択した1つのスケジューリング・アルゴリズムによりスケジューリングを行うように前記スケジューラを個々に設定可能な装置。
  32. 前記パケットのセットと前記リーフ・ノード・スケジューラとの間の関連は設定可能である、請求項31に記載の装置。
  33. 前記階層の形状は設定可能である、請求項31に記載の装置。
  34. 前記階層は前記階層のルート・ノードである1つの内部ノード・スケジューラを有し、
    前記階層を通る各リーフ・ノード・スケジューラから前記ルート・ノードへの一意的な経路が存在し、
    前記一意的な経路が前記パケットに対する別の処理のモードと関連している、請求項31に記載の装置。
  35. 前記モードは、前記経路と関連する仮想出力ポート番号によって指定される、請求項34に記載の装置。
  36. 前記パケットのセットは、前記セット内のパケットを表す記述子のセットによって前記リーフ・ノードスケジューラと関連づけられている、請求項31に記載の装置。
  37. 前記記述子のセットは記述子の少なくとも1つのトラヒック・キュー、および前記トラヒック・キューの少なくとも1つのスケジューラ・キューに編成され、各スケジューラ・キューは、前記記述子のセットが関連付けられている前記リーフ・ノード・スケジューラの入力と関連付けられている、請求項36に記載の装置。
  38. 前記複数のスケジューリング・アルゴリズムは、厳格な優先順位アルゴリズム、ラウンドロビン・アルゴリズム、および加重均等化キューイングアルゴリズムを含む、請求項31に記載の装置。
  39. 前記階層のノード内のスケジューラは、保証スケジューラ、過度スケジューラ、および前記保証スケジューラに第1の優先順位を与える厳格な優先順位スケジューラを含むスケジューラ・リソースから構成される、請求項38に記載の装置。
  40. 複数の加重均等化キューイングアルゴリズムが存在し、該複数の加重均等化キューイングアルゴリズムは非作業保存加重均等化キューイングアルゴリズムを含む、請求項38に記載の装置。
  41. 可変長パケットのスケジューリングを行うための方法であって、該方法は、前記パケットのセットの内の2つのセットを使用し、
    スケジューリングを行うために前記パケットのセットの内の前記2つのセットの内の現在のセットに属する所与のパケットのセットを選択するステップであって、前記パケットのセットの内の現在のセットに属する各パケットのセットは最大割合および最小割合に関連づけられており、前記所与のパケットのセットは前記最小割合の決定に従ってスケジューリングのために選択された状態のままに維持され、前記最小割合は、再びスケジューリングを行うために、前記複数のセットの内の前記現在のセットに属するパケットのセットを選択する前に、前記選択したパケットのセットからスケジューリングを行うことができるパケットの全サイズを決定するステップと、
    前記最大割合の決定に従って前記パケットのセットの内の前記2つのセットの内の他方の中に前記所与のパケットのセットを置くステップであって、前記最大割合が、前記選択したセットが前記パケットのセットの内の前記2つのセットの内の他方の中に入れられる前に、前記選択したセットからスケジューリングを行うことができるパケットの全サイズを決定するステップと、
    前記パケットのセットの内の前記現在のセットが空になった場合に、前記パケットのセットの内の前記現在のセットと前記パケットのセットの内の他のセットとを交換するステップとを含む方法。
  42. 前記パケットのセットは、前記現在のセットから次のセットに移動した場合、実際にスケジュールされている前記パケットの全サイズと、前記パケットのセットが前記2つのパケットのセットの内の他方に入れられた時点の前記最大割合との間の違いにより新しい最大割合を計算するステップをさらに含む、請求項41に記載の方法。
  43. 前記現在のセットに属するパケットのセットがスケジュールのために選択不能になった場合に、前記現在のセットから前記選択不能なパケットのセットを除去するステップと、
    選択不能なパケットのセットがスケジュールのために選択可能になった場合に、前記選択可能なセットを次のセットに追加するステップとをさらに含む、請求項41に記載の方法。
  44. パケットのセットの内の前記現在のセットはある順序に配列されたセットであり、前記パケットのセットはラウンドロビン方式でスケジューリングのために選択される、請求項41に記載の方法。
  45. 前記現在のセット内の前記パケットのセットは、ある順序で配列されたセットであり、パケットのセットがスケジューリングのために選択された場合、パケットがラウンドロビン方式でそのセットから選択される、請求項41に記載の方法。
  46. パケットのセットの内の前記現在のセットよりも、スケジューリングについて高い優先順位を有するパケットのセットの内の第3のセットを使用し、
    前記所与のパケットのセットがパケットのセットの内の前記第3のセットに属し、一方、前記所与のパケットのセットが、前記最小割合の決定に従ってスケジューリングのために選択された状態のまま維持され、その後で、パケットのセットの内の前記現在のセットに移動し、前記最大割合の決定に従ってそこからスケジュールされる、請求項41に記載の方法。
  47. パケットのセットの内の前記現在のセットおよびパケットのセットの内の前記第3のセットが、ある順序で配列されたセットであり、前記パケットのセットが、前記現在のパケットのセットおよび前記第3のパケットのセット内で、ラウンドロビン方式でスケジューリングのために選択される、請求項46に記載の方法。
  48. 前記現在のセット内の前記パケットのセットおよびパケットのセットの内の前記第3のセットは、ある順序で配列されたセットであり、スケジューリングのためにパケットのセットが選択された場合に、そのセットからパケットがラウンドロビン方式で選択される、請求項47に記載の方法。
  49. 各パケットは記述子によって表現され、前記パケットは前記パケットのセット内でその記述子によって表現される、請求項41に記載の方法。
JP2002582564A 2001-04-13 2002-04-11 データ・ストリーム・プロセッサにおけるデータ・ストリームの操作 Expired - Fee Related JP4070610B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US28374601P 2001-04-13 2001-04-13
PCT/US2002/011509 WO2002084957A2 (en) 2001-04-13 2002-04-11 Manipulating data streams in data stream processors

Publications (2)

Publication Number Publication Date
JP2005510893A true JP2005510893A (ja) 2005-04-21
JP4070610B2 JP4070610B2 (ja) 2008-04-02

Family

ID=23087372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002582564A Expired - Fee Related JP4070610B2 (ja) 2001-04-13 2002-04-11 データ・ストリーム・プロセッサにおけるデータ・ストリームの操作

Country Status (7)

Country Link
US (2) US20040260829A1 (ja)
EP (1) EP1382165A2 (ja)
JP (1) JP4070610B2 (ja)
KR (1) KR100902513B1 (ja)
CN (1) CN1611035A (ja)
TW (1) TW558887B (ja)
WO (1) WO2002084957A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008520141A (ja) * 2004-11-15 2008-06-12 フランス テレコム 優先して扱われるべきパケットの間接的な判断でネットワークにおいてルートするためのパケットを順序付けるための方法及び装置
JP2015076889A (ja) * 2013-10-11 2015-04-20 ジーイー・アビエイション・システムズ・エルエルシー 航空機用データ通信ネットワーク
JP2017163530A (ja) * 2016-03-10 2017-09-14 グーグル インコーポレイテッド ネットワークデバイスおよびトラフィックシェーピング方法
US10404602B2 (en) 2016-09-23 2019-09-03 Fujitsu Limited Transmission apparatus and transmission processing method

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957281B2 (en) * 2002-01-15 2005-10-18 Intel Corporation Ingress processing optimization via traffic classification and grouping
US20040019704A1 (en) * 2002-05-15 2004-01-29 Barton Sano Multiple processor integrated circuit having configurable packet-based interfaces
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US8176298B2 (en) 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US7984268B2 (en) 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US9088474B2 (en) 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7961723B2 (en) 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
JP3788803B2 (ja) * 2002-10-30 2006-06-21 富士通株式会社 L2スイッチ
KR100518813B1 (ko) * 2003-02-15 2005-10-05 삼성전자주식회사 패킷 메모리 관리 장치를 가지는 패킷 포워딩 시스템 및 그의 동작방법
US20040213264A1 (en) * 2003-04-25 2004-10-28 Nortel Networks Limited Service class and destination dominance traffic management
US6981074B2 (en) * 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US7370125B2 (en) * 2003-11-25 2008-05-06 Intel Corporation Stream under-run/over-run recovery
CN100359888C (zh) * 2003-11-27 2008-01-02 华为技术有限公司 一种数据轮询调度方法
GB0420548D0 (en) * 2004-09-15 2004-10-20 Streamshield Networks Ltd Network-based security platform
US8332938B2 (en) * 2004-09-17 2012-12-11 At&T Intellectual Property I, L.P. Detection of encrypted packet streams using a timer
US7761705B2 (en) * 2004-09-17 2010-07-20 At&T Intellectual Property I, L.P. Detection of encrypted packet streams
US7451309B2 (en) 2004-09-17 2008-11-11 At&T Intellectual Property L.P. Signature specification for encrypted packet streams
US7730519B2 (en) * 2004-09-17 2010-06-01 At&T Intellectual Property I, L.P. Detection of encrypted packet streams using feedback probing
US20060098673A1 (en) * 2004-11-09 2006-05-11 Alcatel Input queue packet switch architecture and queue service discipline
US7620071B2 (en) * 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US7831747B2 (en) * 2004-12-08 2010-11-09 Intel Corporation Method and apparatus to generate a data descriptor
JP4557748B2 (ja) 2005-02-28 2010-10-06 株式会社東芝 演算処理装置
CN100466603C (zh) * 2005-05-17 2009-03-04 华为技术有限公司 对网络中传输的业务流进行整形的方法及装置
KR100798920B1 (ko) * 2005-11-18 2008-01-29 한국전자통신연구원 RED방식을 확장한 VoIP 네트워크의 폭주 제어 방법및 이를 위한 장치
US20070150585A1 (en) * 2005-12-28 2007-06-28 Microsoft Corporation Multi-dimensional aggregation on event streams
KR100748514B1 (ko) * 2006-01-13 2007-08-14 엘지전자 주식회사 Sip 기반 세션 서비스의 데이터 처리 방법 및 단말
US8275132B2 (en) * 2006-05-15 2012-09-25 Buchen Neil B System and method for dynamically allocating stream identifiers in a multi-encryption transport system
CN1968186A (zh) * 2006-06-19 2007-05-23 华为技术有限公司 一种调度报文发送的装置及方法
GB0619519D0 (en) * 2006-10-04 2006-11-15 Siemens Ag Packet scheduling
US8254348B2 (en) * 2006-12-20 2012-08-28 Honeywell International Inc. Voice-over-internet protocol intra-vehicle communications
US8451807B2 (en) * 2006-12-20 2013-05-28 Honeywell International Inc. Configuration aware packet routing in an ad-hoc network
US8059544B2 (en) * 2006-12-20 2011-11-15 Honeywell International Inc. Distance adaptive routing protocol
US7925798B2 (en) * 2007-01-26 2011-04-12 Lantiq Deutschland Gmbh Data packet processing device
GB2447683B (en) * 2007-03-21 2011-05-04 Advanced Risc Mach Ltd Techniques for generating a trace stream for a data processing apparatus
EP2174450B1 (en) 2007-07-02 2016-10-12 Telecom Italia S.p.A. Application data flow management in an ip network
US7676461B2 (en) * 2007-07-18 2010-03-09 Microsoft Corporation Implementation of stream algebra over class instances
US7864775B2 (en) * 2007-12-20 2011-01-04 Honeywell International Inc. Automatic sequencing based on wireless connectivity
CN101488909B (zh) * 2008-01-17 2011-05-04 杭州华三通信技术有限公司 传输控制方法及同轴线路终端、光网络单元
US8233502B2 (en) * 2008-01-18 2012-07-31 Juniper Networks, Inc. System and method for heuristically dropping packets in a multilink PPP bundle
CN101494594B (zh) * 2008-01-22 2011-05-04 杭州华三通信技术有限公司 传输控制方法、同轴线路终端及光网络单元
US8064377B2 (en) * 2008-01-24 2011-11-22 Honeywell International Inc. Method for enhancement of multicasting forwarding protocol in a wireless network
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
GB2458952B (en) 2008-04-04 2012-06-13 Micron Technology Inc Queue processing method
US8031606B2 (en) 2008-06-24 2011-10-04 Intel Corporation Packet switching
US20100088325A1 (en) 2008-10-07 2010-04-08 Microsoft Corporation Streaming Queries
US20100097932A1 (en) * 2008-10-15 2010-04-22 Viasat, Inc. Satellite traffic and congestion-based upstream scheduler
EP2187580B1 (en) * 2008-11-18 2013-01-16 Alcatel Lucent Method for scheduling packets of a plurality of flows and system for carrying out the method
US8108546B2 (en) * 2008-12-12 2012-01-31 Comtech Ef Data Corporation Data packet encapsulation methods
EP2207312B1 (en) * 2009-01-07 2012-04-18 ABB Research Ltd. IED for, and method of engineering, an SA system
US8112491B1 (en) 2009-01-16 2012-02-07 F5 Networks, Inc. Methods and systems for providing direct DMA
US9152483B2 (en) 2009-01-16 2015-10-06 F5 Networks, Inc. Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof
US8880696B1 (en) 2009-01-16 2014-11-04 F5 Networks, Inc. Methods for sharing bandwidth across a packetized bus and systems thereof
US8615013B2 (en) * 2010-05-18 2013-12-24 Agere Systems Llc Packet scheduling with guaranteed minimum rate in a traffic manager of a network processor
US8848723B2 (en) * 2010-05-18 2014-09-30 Lsi Corporation Scheduling hierarchy in a traffic manager of a network processor
US8837501B2 (en) * 2010-05-18 2014-09-16 Lsi Corporation Shared task parameters in a scheduler of a network processor
CN101938404B (zh) * 2009-07-01 2012-11-28 中兴通讯股份有限公司 用于数据流量管理的随机早期丢弃方法和装置
US8230350B2 (en) 2009-07-03 2012-07-24 Tweetdeck, Inc. System and method for managing and displaying data messages
CN101958824B (zh) * 2009-07-14 2012-06-27 华为技术有限公司 一种数据交换方法及数据交换结构
US9158816B2 (en) 2009-10-21 2015-10-13 Microsoft Technology Licensing, Llc Event processing with XML query based on reusable XML query template
US9313047B2 (en) 2009-11-06 2016-04-12 F5 Networks, Inc. Handling high throughput and low latency network data packets in a traffic management device
KR101040260B1 (ko) * 2010-05-28 2011-06-09 엘아이지넥스원 주식회사 중복 메시지 필터링에 기초한 제어 메시지 처리 방법 및 장치
TWI400912B (zh) * 2010-07-19 2013-07-01 Chunghwa Telecom Co Ltd 封包導向方法
WO2012068171A1 (en) * 2010-11-15 2012-05-24 Reed Coke S Parallel information system utilizing flow control and virtual channels
US10620988B2 (en) 2010-12-16 2020-04-14 Et International, Inc. Distributed computing architecture
CN102200906B (zh) * 2011-05-25 2013-12-25 上海理工大学 大规模并发数据流处理系统及其处理方法
CN102201992B (zh) * 2011-05-25 2013-09-25 上海理工大学 面向流处理器并行环境的数据流通信系统及其通信方法
US9965520B2 (en) * 2011-06-17 2018-05-08 Microsoft Corporation Efficient logical merging over physically divergent streams
US8984526B2 (en) * 2012-03-09 2015-03-17 Microsoft Technology Licensing, Llc Dynamic processor mapping for virtual machine network traffic queues
CN103546393B (zh) * 2012-07-12 2018-01-19 中兴通讯股份有限公司 一种基于加权公平队列的调度实现方法及装置
CN103546392B (zh) * 2012-07-12 2017-10-10 中兴通讯股份有限公司 队列单周期调度方法和装置
US8879578B2 (en) * 2012-07-19 2014-11-04 Broadcom Corporation Reducing store and forward delay in distributed systems
US9047417B2 (en) 2012-10-29 2015-06-02 Intel Corporation NUMA aware network interface
US9270602B1 (en) * 2012-12-31 2016-02-23 F5 Networks, Inc. Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9106593B2 (en) * 2013-06-12 2015-08-11 Cisco Technology, Inc. Multicast flow reordering scheme
US9450881B2 (en) * 2013-07-09 2016-09-20 Intel Corporation Method and system for traffic metering to limit a received packet rate
CN104348751B (zh) 2013-07-31 2019-03-12 中兴通讯股份有限公司 虚拟输出队列授权管理方法及装置
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US9864606B2 (en) 2013-09-05 2018-01-09 F5 Networks, Inc. Methods for configurable hardware logic device reloading and devices thereof
US9853714B2 (en) 2013-10-11 2017-12-26 Ge Aviation Systems Llc Data communications network for an aircraft
US9876711B2 (en) 2013-11-05 2018-01-23 Cisco Technology, Inc. Source address translation in overlay networks
US9825857B2 (en) 2013-11-05 2017-11-21 Cisco Technology, Inc. Method for increasing Layer-3 longest prefix match scale
US9898482B1 (en) * 2013-12-27 2018-02-20 EMC IP Holding Company LLC Managing stream connections in storage systems
US20150281109A1 (en) * 2014-03-30 2015-10-01 Sachin Saxena System for en-queuing and de-queuing data packets in communication network
EP3295628B1 (en) * 2015-05-13 2020-11-11 Cisco Technology, Inc. Dynamic protection of shared memory used by output queues in a network device
US9866401B2 (en) * 2015-05-13 2018-01-09 Cisco Technology, Inc. Dynamic protection of shared memory and packet descriptors used by output queues in a network device
US10305819B2 (en) * 2015-05-13 2019-05-28 Cisco Technology, Inc. Dynamic protection of shared memory used by output queues in a network device
CN109391559B (zh) * 2017-08-10 2022-10-18 华为技术有限公司 网络设备
US11855898B1 (en) 2018-03-14 2023-12-26 F5, Inc. Methods for traffic dependent direct memory access optimization and devices thereof
CN113114564A (zh) * 2018-10-31 2021-07-13 华为技术有限公司 一种业务流处理方法及装置
US11537716B1 (en) 2018-11-13 2022-12-27 F5, Inc. Methods for detecting changes to a firmware and devices thereof
CN112311696B (zh) * 2019-07-26 2022-06-10 瑞昱半导体股份有限公司 网络封包接收装置及方法

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69433109D1 (de) * 1994-04-28 2003-10-09 Hewlett Packard Co Mehrfachsendeeinrichtung
US5822540A (en) * 1995-07-19 1998-10-13 Fujitsu Network Communications, Inc. Method and apparatus for discarding frames in a communications device
US5859835A (en) * 1996-04-15 1999-01-12 The Regents Of The University Of California Traffic scheduling system and method for packet-switched networks
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
US6128278A (en) * 1996-08-30 2000-10-03 Mmc Networks, Inc. Cell queuing in ATM switches
US6452933B1 (en) * 1997-02-07 2002-09-17 Lucent Technologies Inc. Fair queuing system with adaptive bandwidth redistribution
WO1998045990A1 (en) 1997-04-04 1998-10-15 Ascend Communications, Inc. High speed packet scheduling method and apparatus
US6014367A (en) * 1997-04-25 2000-01-11 Mmc Networks, Inc Method for weighted fair queuing for ATM cell scheduling
US6094435A (en) * 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US6026093A (en) * 1997-10-02 2000-02-15 Sun Microsystems, Inc. Mechanism for dispatching data units via a telecommunications network
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6233243B1 (en) * 1997-11-24 2001-05-15 Ascend Communications, Inc. Method and apparatus for performing cut-through virtual circuit merging
US6144668A (en) * 1997-11-26 2000-11-07 International Business Machines Corporation Simultaneous cut through and store-and-forward frame support in a network device
US6859438B2 (en) * 1998-02-03 2005-02-22 Extreme Networks, Inc. Policy based quality of service
US6160812A (en) * 1998-05-04 2000-12-12 Cabletron Systems, Inc. Method and apparatus for supplying requests to a scheduler in an input buffered multiport switch
US6606301B1 (en) * 1999-03-01 2003-08-12 Sun Microsystems, Inc. Method and apparatus for early random discard of packets
EP1172017A1 (en) * 1999-04-03 2002-01-16 Top Layer Networks, Inc. Switching system and process for automatic detection of and quality of service for multimedia applications
JP3683133B2 (ja) * 1999-08-17 2005-08-17 日本電気株式会社 パケットスケジューリング装置
US6760337B1 (en) * 1999-08-17 2004-07-06 Conexant Systems, Inc. Integrated circuit that processes communication packets with scheduler circuitry having multiple priority levels
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
US6680933B1 (en) 1999-09-23 2004-01-20 Nortel Networks Limited Telecommunications switches and methods for their operation
US6430152B1 (en) * 1999-12-22 2002-08-06 Alcatel Usa Sourcing, L.P. Scheduler system for scheduling the distribution of ATM cells
US6629147B1 (en) * 2000-03-31 2003-09-30 Intel Corporation Segmentation and reassembly of data frames
US7123622B2 (en) * 2000-04-13 2006-10-17 International Business Machines Corporation Method and system for network processor scheduling based on service levels
US7315901B1 (en) * 2000-04-13 2008-01-01 International Business Machines Corporation Method and system for network processor scheduling outputs using disconnect/reconnect flow queues
US7027394B2 (en) * 2000-09-22 2006-04-11 Narad Networks, Inc. Broadband system with traffic policing and transmission scheduling
US7457313B2 (en) * 2000-09-25 2008-11-25 General Instrument Corporation Hierarchical prioritized round robin (HPRR) scheduling
US20020107974A1 (en) * 2000-10-06 2002-08-08 Janoska Mark William Data traffic manager
US7760737B2 (en) * 2000-11-30 2010-07-20 Audiocodes, Inc. Method for reordering and reassembling data packets in a network
US7236491B2 (en) * 2000-11-30 2007-06-26 Industrial Technology Research Institute Method and apparatus for scheduling for packet-switched networks
US6882625B2 (en) * 2000-12-14 2005-04-19 Nokia Networks Oy Method for scheduling packetized data traffic
US7075934B2 (en) * 2001-01-10 2006-07-11 Lucent Technologies Inc. Method and apparatus for hierarchical bandwidth distribution in a packet network
US6917591B2 (en) * 2001-01-12 2005-07-12 Telefonaktiebolaget Lm Ericsson (Publ) Methods, systems and computer program products for bandwidth allocation in a multiple access system
US7035212B1 (en) * 2001-01-25 2006-04-25 Optim Networks Method and apparatus for end to end forwarding architecture
US6934760B1 (en) * 2001-02-04 2005-08-23 Cisco Technology, Inc. Method and apparatus for resequencing of packets into an original ordering using multiple resequencing components
US6987760B2 (en) * 2001-03-05 2006-01-17 International Business Machines Corporation High speed network processor

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008520141A (ja) * 2004-11-15 2008-06-12 フランス テレコム 優先して扱われるべきパケットの間接的な判断でネットワークにおいてルートするためのパケットを順序付けるための方法及び装置
JP4762996B2 (ja) * 2004-11-15 2011-08-31 フランス・テレコム 優先して扱われるべきパケットの間接的な判断でネットワークにおいてルートするためのパケットを順序付けるための方法及び装置
JP2015076889A (ja) * 2013-10-11 2015-04-20 ジーイー・アビエイション・システムズ・エルエルシー 航空機用データ通信ネットワーク
US9749256B2 (en) 2013-10-11 2017-08-29 Ge Aviation Systems Llc Data communications network for an aircraft
JP2017163530A (ja) * 2016-03-10 2017-09-14 グーグル インコーポレイテッド ネットワークデバイスおよびトラフィックシェーピング方法
US10404602B2 (en) 2016-09-23 2019-09-03 Fujitsu Limited Transmission apparatus and transmission processing method

Also Published As

Publication number Publication date
EP1382165A2 (en) 2004-01-21
US7929433B2 (en) 2011-04-19
TW558887B (en) 2003-10-21
JP4070610B2 (ja) 2008-04-02
CN1611035A (zh) 2005-04-27
WO2002084957A3 (en) 2003-07-31
US20040260829A1 (en) 2004-12-23
WO2002084957A2 (en) 2002-10-24
US20090154459A1 (en) 2009-06-18
KR100902513B1 (ko) 2009-06-15
KR20030089717A (ko) 2003-11-22

Similar Documents

Publication Publication Date Title
JP4070610B2 (ja) データ・ストリーム・プロセッサにおけるデータ・ストリームの操作
US7346001B1 (en) Systems and methods for limiting low priority traffic from blocking high priority traffic
US7050440B2 (en) Method and structure for variable-length frame support in a shared memory switch
JP4879382B2 (ja) パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置
US7100020B1 (en) Digital communications processor
US8665875B2 (en) Pipelined packet switching and queuing architecture
US6721316B1 (en) Flexible engine and data structure for packet header processing
US8571024B2 (en) Pipelined packet switching and queuing architecture
US7151744B2 (en) Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover
US6999415B2 (en) Switching device and method for controlling the routing of data packets
US8023521B2 (en) Methods and apparatus for differentiated services over a packet-based network
US20070140282A1 (en) Managing on-chip queues in switched fabric networks
US20040252711A1 (en) Protocol data unit queues
EP1133110A2 (en) Switching device and method
JP4111974B2 (ja) 送信主導型フロー制御装置
US9363186B2 (en) Hierarchical shaping of network traffic
EP1209865B1 (en) Method and structure for variable-length frame support in a shared memory switch
CA2325135A1 (en) Asynchronous transfer mode layer device
CA2288513A1 (en) Apparatus and method for an atm layer device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070320

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070522

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070822

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080115

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4070610

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110125

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120125

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130125

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees