(57)【特許請求の範囲】
【請求項１】
受信したフレームのキュー格納情報に基づいてフレーム受信バッファの複数のキューのいずれかに書き込むＷＲ制御部と、
前記フレーム受信バッファの複数の前記キューのいずれかからフレームを読み込むＲＤ制御部と、
前記キューごとの重み付きシーケンス番号と、ラウンド番号とを記録するキュー管理テーブルと、を備え、
前記ＷＲ制御部または前記ＲＤ制御部は、フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算し、前記キュー管理テーブルに記録し、
前記ＲＤ制御部は、前記キューの優先度と前記重み付きシーケンス番号とに基づいて、フレームを読み込むキューを選択し、選択したキューの重み付きシーケンス番号を前記ラウンド番号として、前記キュー管理テーブルに記録し、
更に前記ＲＤ制御部は、フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算し、前記キュー管理テーブルに記録し、初回の読み込みは前記キューの優先度に基づいてフレームを読み込むキューを選択し、２回目以降の読み込みは最も小さい前記重み付きシーケンス番号を持つキューを選択することを特徴とする通信装置。
【請求項２】
受信したフレームのキュー格納情報に基づいてフレーム受信バッファの複数のキューのいずれかに書き込むＷＲ制御部と、
前記フレーム受信バッファの複数の前記キューのいずれかからフレームを読み込むＲＤ制御部と、
前記キューごとの重み付きシーケンス番号と、ラウンド番号とを記録するキュー管理テーブルと、を備え、
前記ＷＲ制御部または前記ＲＤ制御部は、フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算し、前記キュー管理テーブルに記録し、
前記ＲＤ制御部は、前記キューの優先度と前記重み付きシーケンス番号とに基づいて、フレームを読み込むキューを選択し、選択したキューの重み付きシーケンス番号を前記ラウンド番号として、前記キュー管理テーブルに記録し、
更に前記ＷＲ制御部は、フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算し、前記キュー管理テーブルに記録し、さらに前記シーケンス番号を当該フレームの先頭に追加して、前記フレーム受信バッファの複数のキューのいずれかに書き込み、
前記ＲＤ制御部は、フレームを読みだすとき、前記読み出しフレームの次のフレームのシーケンス番号を先読みして、前記キュー管理テーブルに先読み重み付きシーケンス番号として記録し、前記先読み重み付きシーケンス番号に基づいて、読みだすキューを選択することを特徴とする通信装置。
【請求項３】
受信したフレームのキュー格納情報に基づいてフレーム受信バッファの複数のキューのいずれかに書き込むＷＲ制御部と、前記フレーム受信バッファの複数の前記キューのいずれかからフレームを読み込むＲＤ制御部と、前記キューごとの重み付きシーケンス番号と、ラウンド番号とを記録するキュー管理テーブルと、を備えた通信装置における優先制御
方法であって、
前記ＷＲ制御部または前記ＲＤ制御部において、
フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算するステップと、
前記重み付きシーケンス番号を前記キュー管理テーブルに記録するステップと、
前記ＲＤ制御部において、
前記キューの優先度と前記重み付きシーケンス番号とに基づいて、フレームを読み込むキューを選択するステップと、
選択したキューの重み付きシーケンス番号を前記ラウンド番号として、前記キュー管理テーブルに記録するステップと、
更に前記ＲＤ制御部において、フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算し、前記キュー管理テーブルに記録し、初回の読み込みは前記キューの優先度に基づいてフレームを読み込むキューを選択し、２回目以降の読み込みは最も小さい前記重み付きシーケンス番号を持つキューを選択するステップと、
を含む優先制御方法。
【請求項４】
受信したフレームのキュー格納情報に基づいてフレーム受信バッファの複数のキューのいずれかに書き込むＷＲ制御部と、前記フレーム受信バッファの複数の前記キューのいずれかからフレームを読み込むＲＤ制御部と、前記キューごとの重み付きシーケンス番号と、ラウンド番号とを記録するキュー管理テーブルと、を備えた通信装置における優先制御
方法であって、
前記ＷＲ制御部または前記ＲＤ制御部において、
フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算するステップと、
前記重み付きシーケンス番号を前記キュー管理テーブルに記録するステップと、
前記ＲＤ制御部において、
前記キューの優先度と前記重み付きシーケンス番号とに基づいて、フレームを読み込むキューを選択するステップと、
選択したキューの重み付きシーケンス番号を前記ラウンド番号として、前記キュー管理テーブルに記録するステップと、
更に前記ＷＲ制御部において、フレームごとに、フレームの優先度と長さとに依存する前記重み付きシーケンス番号を演算し、前記キュー管理テーブルに記録し、さらに前記シーケンス番号を当該フレームの先頭に追加して、前記フレーム受信バッファの複数のキューのいずれかに書き込むステップと、
前記ＲＤ制御部において、フレームを読みだすとき、前記読み出しフレームの次のフレームのシーケンス番号を先読みして、前記キュー管理テーブルに先読み重み付きシーケンス番号として記録し、前記先読み重み付きシーケンス番号に基づいて、読みだすキューを選択するステップと、
を含む優先制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置および優先制御方法に係り、特にＷＦＱ（Weighted Fair Queuing）機能を実装した通信装置および優先制御方法に関する。
【背景技術】
【０００２】
近年、エンドユーザが使うアプリケーションの多様化、広帯域化、またやり取りするデータ容量の増加によりＵＮＩ（User Network Interface）からＮＮＩ（Network Node Interface）へのトラフィックの増加が特に著しい。そのため通信ネットワークのＱｏＳ（Quality of Service）を維持するために、ＵＮＩとＮＮＩの境界面に設置される通信装置にトラフィックを制御するための帯域制御機能を具備させる要求がある。
【０００３】
帯域制御を行なう上で、音声や画像など遅延が許されないデータ（優先されるべきデータ）とメールおよびデータ通信など比較的遅延が許される通信がある。ユーザの要望に答えるべく、キャリアは、データの優先度を付けて優先制御を行なう必要がある。
【０００４】
優先制御を実現する帯域制御機能の一つにＷＦＱがある。ＷＦＱは、データの従量（多さ・大きさや重要性）に応じてパケットの優先順位を変える技術である。ＷＦＱは、音声および画像のストリーミングに優先的に順位を譲ることで、安定したストリーミングを実現しつつ、低優先のサービスについても帯域を確保できる。ＷＦＱは、複数のキューがある場合、どのキューのパケットから送出するかを決めるキューイング・アルゴリズムの一つである。ＷＦＱは、各キューに割り当てられた帯域や優先度に応じて、キューに重み付けを設定するとともに、パケットのサイズも考慮する。ＷＦＱによれば、サイズの大きいパケットは、相対的に送出時の優先順位は低くなる。
【０００５】
ＷＦＱの装置への実装に関して様々な方法があり、大別するとハードウェア処理で実現する場合とソフトウェア処理で実現する場合がある。
本技術分野の背景技術として、特許文献１がある。特許文献１は、ソフトウェアでＷＦＱを実現する。具体的には、受信したフレームからフレーム長、クラスキュー情報を読み出してその情報を元に読み出し順（シーケンス番号）を計算する。このとき、受信フレームバッファ（キューバッファ）に書き込む前にシーケンス番号をフレームに付与し、受信フレームバッファ（キューバッファ）から読み出し時にシーケンス番号を参照し優先度の高いフレームから読み出す。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１９７１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一般的にＷＦＱ機能を実現する場合、ソフトウェア処理またはハードウェア処理の両方で実現可能である。しかし、ソフトウェア処理を行なっている特許文献１において優先クラスキューに格納されているデータの読み出し遅延がユーザ数の増加、またクラスキュー数の増加に比例して大きくなる可能性がある。その結果、音声および映像など遅延が許されない通信において遅延が発生し帯域低下の要因となる可能性がある。
【０００８】
またフローを識別するにあたりＶＬＡＮにてユーザフローを識別するが、ユーザ単位にＷＦＱを実現する上でユーザ数が増加してくると、ソフトウェア処理ではＤＳＰなどより高速に処理できるＷＦＱ専用のＣＰＵが必要になる。またハードウェア処理をする場合にも処理するユーザフローが増えると格納するテーブルも増える事になり、効率的にハードウェア処理しなければ遅延が発生し帯域低下の要因となる可能性がある。具体的には帯域制御パラメータである重み付きシーケンス番号を効率良く計算処理し、フレーム読み出し時もより少ない処理シーケンスで一番小さい重み付きシーケンス番号のフレームから読み出しを行なうアルゴリズムを考える必要がある。
【課題を解決するための手段】
【０００９】
上述した課題は、受信したフレームのキュー格納情報に基づいてフレーム受信バッファの複数のキューのいずれかに書き込むＷＲ制御部と、フレーム受信バッファの複数のキューのいずれかからフレームを読み込むＲＤ制御部と、キューごとの重み付きシーケンス番号と、ラウンド番号とを記録するキュー管理テーブルと、を備え、ＷＲ制御部またはＲＤ制御部は、フレームごとに、フレームの優先度と長さとに依存する重み付きシーケンス番号を演算し、キュー管理テーブルに記録し、ＲＤ制御部は、キューの優先度と重み付きシーケンス番号とに基づいて、フレームを読み込むキューを選択し、選択したキューの重み付きシーケンス番号をラウンド番号として、キュー管理テーブルに記録する通信装置により、達成できる。
【００１０】
また、受信したフレームのキュー格納情報に基づいてフレーム受信バッファの複数のキューのいずれかに書き込むＷＲ制御部と、フレーム受信バッファの複数のキューのいずれかからフレームを読み込むＲＤ制御部と、キューごとの重み付きシーケンス番号と、ラウンド番号とを記録するキュー管理テーブルと、を備えた通信装置における優先制御方法であって、ＷＲ制御部またはＲＤ制御部において、フレームごとに、フレームの優先度と長さとに依存する重み付きシーケンス番号を演算するステップと、重み付きシーケンス番号をキュー管理テーブルに記録するステップと、ＲＤ制御部において、キューの優先度と重み付きシーケンス番号とに基づいて、フレームを読み込むキューを選択するステップと、選択したキューの重み付きシーケンス番号をラウンド番号として、キュー管理テーブルに記録するステップと、を含む優先制御方法により、達成できる。
【発明の効果】
【００１１】
テーブルにて重み付きシーケンス番号の情報を持ち、効率的にＷＦＱ処理を行なうことにより汎用ＦＰＧＡでも十分対応が可能な通信装置を提供できる。
【図面の簡単な説明】
【００１２】
【図１】ＷＦＱを実装する通信装置を含んだネットワークの構成を説明するブロック図である。
【図２】通信装置のブロック図である。
【図３】キューに保存するフレームの構成を説明する図である。
【図４】ＷＦＱのハードウェア処理を実現する帯域制御部の機能ブロック図である。
【図５】実施例１のＷＦＱのハードウェア処理を実現する帯域制御部の機能ブロック図である。
【図６Ａ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その１）である。
【図６Ｂ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その２）である。
【図６Ｃ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その３）である。
【図６Ｄ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その４）である。
【図７】ユーザフローｎフローある場合に対応するテーブルとバッファを説明する図である。
【図８】ラップアラウンド処理を説明するフローチャートである。
【図９】キューに保存する他のフレームの構成を説明する図である。
【図１０】実施例２のＷＦＱの機能構成を示すブロック図である。
【図１１Ａ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その１）である。
【図１１Ｂ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その２）である。
【図１１Ｃ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その３）である。
【図１１Ｄ】受信したフレームをキューに格納し、キューから読みだす動作を説明する図（その４）である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、実施例を用い図面を参照しながら詳細に説明する。なお、実質同一部位には同じ参照番号を振り、説明は繰り返さない。また、実施例は、発明を限定するものではない。
【００１４】
図１を参照して、ネットワークの構成を説明する。図１において、ネットワーク１００は、エンドユーザ１０と、通信装置１１と、キャリアネットワーク１９とから構成されている。キャリアネットワーク１９は、アクセス回線網１２と、他キャリアアクセス回線網１３と、ＡＴＭアクセスネットワーク１４と、イーサアクセスネットワーク１５と、ＶＬＡＮサービス網１６と、専用線網１７と、エッジＳＷ（switch）１８とから構成されている。
【００１５】
ＡＴＭアクセスネットワーク１４は、通信装置１１−１が接続されている。通信装置１１−１は、エンドユーザ１０−１、１０−２と接続されている。アクセス回線網１２は、通信装置１１−２が接続されている。通信装置１１−２は、エンドユーザ１０−３と接続されている。他キャリアアクセス回線網１３は、通信装置１１−４が接続されている。通信装置１１−４は、エンドユーザ１０−５と接続されている。イーサアクセスネットワーク１５は、通信装置１１−３が接続されている。通信装置１１−３は、エンドユーザ１０−４と接続されている。
通信装置１１からみて、キャリアネットワーク１９側をＮＮＩ側と呼ぶ。通信装置１１からみて、エンドユーザ１０側をＵＮＩ側と呼ぶ。
【００１６】
キャリアネットワーク１９は、一般的にＶＬＡＮサービス網１６および専用線網１７等の基幹網から構成される。それら基幹網は、エッジＳＷ１８等により接続されている。基幹網は、網間で通信が可能である。
【００１７】
これらの網とエンドユーザ１０の接点として様々なアクセス回線網１２がある。アクセス回線網１２は、具体的にはＡＴＭアクセスネットワーク１４、イーサアクセスネットワーク１５、他キャリアのアクセス回線網１３である。
【００１８】
エンドユーザ１０は、通信装置１１を介してキャリアネットワーク１９へアクセスを行ない、通信を行ないたい対向のエンドユーザとの通信を実行する。なお、エンドユーザ１０は、ＰＣ、ユーザ網等である。エンドユーザ１０間で、やりとりするデータとして音声および画像など遅延が許されないデータ（優先されるべきデータ）とメールまたはデータ通信など比較的遅延がある程度許されるデータがある。
ユーザの要望に答えるべくキャリアは、データに優先度を付けて優先制御を行なう。通信装置１１は、優先制御機能の一つであるＷＦＱを実装し、優先制御を実現する。
【００１９】
図２を参照して、通信装置の機能ブロックを説明する。図２において、通信装置１１は、ＰＨＹ２０と、フレーム分離部２１と、制御フレーム終端部２２と、制御フレーム生成部２３と、多重部２４と、帯域制御部２５とから構成されている。
【００２０】
ＰＨＹ２０は、受信フレームの物理レイヤ終端処理を行なう。フレーム分離部２１は、ＮＮＩ側からの制御フレームと下りユーザフレームを分離する。制御フレーム終端部２２は、分離した制御フレームを終端する。制御フレーム生成部２３は、上り信号の帯域を制御する制御フレームを生成する。多重部２４は、生成した制御フレームと上りユーザフレームとを多重する。帯域制御部２５は、ＷＦＱを実装する。
【００２１】
図３を参照して、キューに格納するフレームの構成を説明する。図３において、後述する図４と図５の帯域制御部の場合、後述するＷＲ制御ブロック３０で計算された重み付きシーケンス番号（ＳＮ）５０をフレームの先頭に付与する。ヘッダ部分には、ＣＯＳ（Class Of Service）またはＴＯＳ（Type Of Service）／ＴＣ（Traffic Class）５１と、Ｌｅｎｇｔｈ５２を含む。
【００２２】
ＣＯＳまたはＴＯＳ／ＴＣ５０は、格納キュー情報である。ＣＯＳまたはＴＯＳ／ＴＣ５０は、フレーム到着時に、フレーム受信バッファ３２における格納キューを選択する情報である。Ｌｅｎｇｔｈ５２は、重み付きシーケンス番号を計算する時に使用するパラメータである。
【００２３】
図４を参照して、帯域制御部について、ＷＦＱをハードウェア処理にて実現する構成を説明する。図４において、帯域制御部２５は、ＷＲ（write）制御ブロック３０と、帯域キュー管理テーブル３１と、受信フレームバッファ３２と、ＲＤ（read）制御ブロック３３とから構成されている。
【００２４】
ＷＲ制御ブロック３０は、フレーム受信をトリガとして、ユーザフローを特定するキュー格納情報を取得する。ＷＲ制御ブロック３０は、フレーム受信バッファ３２に受信フレームを格納する。
【００２５】
ＲＤ制御ブロック３３は、受信バッファ３２にフレーム有りを検出した事をトリガとして、帯域制御キュー管理テーブル３１からキュー管理情報を取得する。ＲＤ（read）制御ブロック３３は、フレーム受信バッファ３２からフレームを読み出し送出する。
【００２６】
帯域制御キュー管理テーブル３１は、帯域制御対象となるコネクションのキュー情報を保持する。帯域制御キュー管理テーブル３１は、ＷＡ（Write Address）３１２と、フレーム先頭情報３１１と、ＲＡ（Read Address）３１４とを含む。帯域制御キュー管理テーブル３１のレコードは、優先度が高い順に、クラス３（絶対優先）、クラス２、クラス１、クラス０を含む。クラス３（絶対優先）は、絶対優先であり、ＷＦＱには参加しない。したがって、クラス３（絶対優先）のフレーム先頭情報３１１欄には、ラウンド番号３１３を記録している。
【００２７】
ラウンド番号３１３は、ＷＦＱ出力フレームの重み付きシーケンス番号を保存するためのテーブルである。ラウンド番号３１３は、フロー単位に具備される。
ＷＲ制御ブロック３０は、ラウンド番号取得部３０１と、重み付きシーケンス番号計算ａｎｄ付与部３０２と、を含む。ラウンド番号取得部３０１は、重み付きシーケンス番号を計算するために、帯域制御キュー管理テーブル３１のクラス３（絶対優先）にあるラウンド番号３１３を取得する。重み付きシーケンス番号計算ａｎｄ付与部３０２は、到着したフレームのフレーム長と格納されるクラスキューの重みと３０１にて取得したラウンド番号により重み付きシーケンス番号を計算しフレームの先頭に付与する。
【００２８】
具体的にフレームの流れに沿って説明する。フレーム受信バッファ３２に格納されるフレームの先頭に、ＷＲ制御ブロック３０は、重み付きシーケンス番号を付与する。ＲＤ制御ブロック３３は、フレーム読み出し時、重み付きシーケンス番号の小さい順に読み出しを行なう。
【００２９】
書き込み側のＷＲ制御ブロック３０の処理について説明する。ＷＲ制御ブロック３０に受信フレームが到着する。受信フレームが格納されるキューがアクティブなクラスキューの場合（Not Empty）と非アクティブなクラスキューの場合（Empty）で重み付きシーケンス番号の計算方法が下記の通り異なる。なお、受信フレームの格納されるべきキューについて、ＷＲ制御ブロック３０は、ＣＯＳまたはＴＯＳ／ＴＣ５１にて判定する。
【００３０】
アクティブなクラスキューの場合（Not Empty）
：前回の重み付きシーケンス番号＋該当クラスのＷｅｉｇｈｔ値×フレームバイト数
非アクティブなクラスキューの場合（Empty）
：取得したラウンド番号＋該当クラスのＷｅｉｇｈｔ値×フレームバイト数
ＷＲ制御ブロック３０は、計算した重み付きシーケンス番号２０をフレームの先頭に付与し、受信バッファ３２の該当キューに格納する。アクティブなクラスキューの場合の前回の重み付きシーケンス番号は、クラスキューに最後に格納したフレームの先頭アドレスであるフレーム先頭情報３１１を帯域制御キュー管理テーブル３１より読み出す。読み出したフレーム先頭情報３１１で示されるアドレスから前回の重み付きシーケンス番号を取得する。
【００３１】
次に、読み出し側の処理について説明する。ＲＤ制御ブロック３３は、フレームの読み出し時に帯域制御キュー管理テーブル３１の各クラスのＲＡ３１４を読みだす。次に、ＲＤ制御ブロック３３は、ＲＡ３１４で示される各クラスキューに格納されているフレームを読み出す。ＲＤ制御ブロック３３は、読み出した各フレームに付与されている重み付きシーケンス番号を比較し、値の小さいフレームから順次読み出しを行なう。ＲＤ制御ブロック３３は、帯域制御キュー管理テーブル３１とフレーム受信バッファ３２を読み出した後に重み付きシーケンス番号の比較を行ない、読み出すクラスキューの決定を行なう。
【実施例１】
【００３２】
図５を参照して、帯域制御部について、ＷＦＱをハードウェア処理にて実現する他の構成を説明する。図５において、帯域制御部２５は、ＷＲ制御ブロック３０と、帯域キュー管理テーブル３１Ａと、受信フレームバッファ３２と、ＲＤ制御ブロック３３とから構成されている。なお、フレーム受信バッファ３２は、ＦＩＦＯ（first-in first-out）メモリである。
【００３３】
ＷＲ制御ブロック３０は、フレーム受信をトリガとして、ユーザフローを特定するキュー格納情報を取得する。ＷＲ制御ブロック３０は、フレーム受信バッファ３２に受信フレームを格納する。
【００３４】
ＲＤ制御ブロック３３は、受信バッファ３２にフレーム有りを検出した事をトリガとして、帯域制御キュー管理テーブル３１Ａからキュー管理情報を取得する。ＲＤ（read）制御ブロック３３は、フレーム受信バッファ３２からフレームを読み出し送出する。
【００３５】
実施例１の特徴は、ＷＲ制御ブロック３０で重み付きシーケンス番号４１１をフレームに付与する点である。なお、ＷＲ制御ブロック３０、フレーム受信バッファ３２、ＲＤ制御ブロック３３、ラウンド番号３１３、ラウンド番号取得部３０１、重み付きシーケンス番号計算ａｎｄ付与部３０２に関しては、図４で説明した動作と同じである。
【００３６】
帯域キュー管理テーブル３１Ａは、帯域制御対象となるコネクションのキュー情報を保持する。帯域制御キュー管理テーブル３１Ａは、ＷＡ３１２と、重み付きシーケンス番号４１１と、先読み重み付きシーケンス番号４１２と、ＲＡ３１４とを含む。帯域制御キュー管理テーブル３１Ａのレコードは、優先度が高い順に、クラス３（絶対優先）、クラス２、クラス１、クラス０を含む。クラス３（絶対優先）は、絶対優先であり、ＷＦＱには参加しない。したがって、クラス３（絶対優先）の重み付きシーケンス番号４１１欄には、ラウンド番号３１３を記録している。
【００３７】
帯域制御キュー管理テーブル３１の重み付きシーケンス番号４１１は、ＷＦＱ演算用シーケンス番号を格納する。
先読み重み付きシーケンス番号４１２は、ＲＤ制御ブロック３３にてフレーム読み出し時に次のフレームの先頭の重み付きシーケンス番号まで読み、その値を先読み重み付きシーケンス番号４１２として格納する。先読み重み付きシーケンス番号４１２は、次に読みだすパケットの選択に利用する。
【００３８】
具体的にフレームの流れに沿って説明する。フレーム受信バッファ３２に格納されるフレームの先頭に、ＷＲ制御ブロック３０は、重み付きシーケンス番号４１１を付与する。ＲＤ制御ブロック３３は、フレーム読み出し時、次のフレームの重み付きシーケンス番号を先読みする。
【００３９】
まず書き込み側のＷＲ制御ブロック３０処理について説明する。ＷＲ制御ブロック３０に受信フレームが到着する。受信フレームが格納されるキューがアクティブなクラスキューの場合（Not Empty）と非アクティブなクラスキューの場合（Empty）で重み付きシーケンス番号の計算方法が下記の通り異なる。なお、受信フレームの格納されるべきキューは、ＣＯＳまたはＴＯＳ／ＴＣ５１にて判定する。
【００４０】
アクティブなクラスキューの場合（Not Empty）
：前回の重み付きシーケンス番号＋該当クラスのＷｅｉｇｈｔ値×フレームバイト数
非アクティブなクラスキューの場合（Empty）
：取得したラウンド番号３１３＋該当するクラスのＷｅｉｇｈｔ値×フレームバイト数
ＷＲ制御ブロック３０は、計算した重み付きシーケンス番号をフレームの先頭（ＳＮ５０）に付与し、受信バッファ３２の該当キューに格納する。
【００４１】
ＷＲ制御ブロック３０は、帯域制御キュー管理テーブル３１Ａに重み付きシーケンス番号を書き込む。このとき、ＷＲ制御ブロック３０は、該当するクラスの重み付きシーケンス番号４１１を上書きする。書き込んだ重み付きシーケンス番号４１１は、次フレームの重み付きシーケンス番号算出に使用する。
【００４２】
フレーム受信バッファ３２にフレームを書き込み時キューが空であれば、ＷＲ制御ブロック３０では、制御キュー管理テーブル３１Ａの先読み重み付きシーケンス番号４１２領域にも計算した重み付きシーケンス番号４１１を上書きする。
【００４３】
帯域制御キュー管理テーブル３１Ａは、格納したフレームに該当するフローおよびクラスキューのエントリに対して、当該フレームに付与した重み付きシーケンス番号４１１も一緒に更新する。
【００４４】
次に読み出し側の処理について説明する。ＲＤ制御ブロック３３は、フレームの読み出し時に先読み重み付きシーケンス番号４１２を比較して読み出す。１回目の読み出し時はＷＲ制御ブロック３０にて重み付きシーケンス番号４１１と同じＳＮが先読み重み付きシーケンス番号４１２領域に書かれるため、その値を比較し読み出しを行なう。２回目以降は１回目の読み出しで先読みした先読み重み付きシーケンス番号４１２により、読む順番を決定する。
【００４５】
ここで先読みについて説明する。先読みとは、ＲＤ制御ブロック３３が、フレーム読み出し時に次フレーム先頭のＳＮ５０まで読み、帯域制御キュー管理テーブル３１の先読み重み付きシーケンス番号領域４１２に上書きする。
【００４６】
帯域制御キュー管理テーブル３１Ａは、読み出したフレームに該当するフローおよびクラスキューのエントリに対して、当該フレームの重み付きシーケンス番号４１１と先読みした先読み重み付きシーケンス番号４１２も一緒に更新する。
【００４７】
ＷＲ制御ブロック３０は、受信フレームに重み付きシーケンス番号（ＳＮ）を付与する。キューからの受信フレーム読み出し時、ＲＤ制御ブロック３３は、各キューから出力されるフレームの重み付きシーケンス番号（ＳＮ）を比較し、重み付きシーケンス番号（ＳＮ）の最も小さいフレームを送信する。
【００４８】
ＲＤ制御ブロック３３は、出力したフレームの重み付きシーケンス番号（ＳＮ）をラウンド番号という名称で帯域制御キュー管理テーブル３１Ａに記録しておく。なお、ラウンド番号は、ＳＮを付与する際に使用される。重み付きシーケンス番号（ＳＮ）の付与則について、以下説明する。
【００４９】
ＷＲ制御ブロック３０は、あらかじめ受信フレームのフレーム長を取得しておく。ＷＲ制御ブロック３０は、格納するキューが空の場合、（ラウンド番号）＋（フレーム長）×（該当キューのフレーム重み）を重み付きシーケンス番号（ＳＮ）とする。
【００５０】
格納するキューにフレームが蓄積されている場合、最後に蓄積されたフレームの重み付きシーケンス番号（ＳＮ）を使用し、ＷＲ制御ブロック３０は、（最後に蓄積されたフレームのＳＮ）＋（フレーム長）×（該当キューのフレームの重み）を重み付きシーケンス番号（ＳＮ）とする。
【００５１】
次に優先割合からフレーム重みの算出方法について説明する。優先割合とフレーム重みは逆数の関係である。以下の説明では、クラスキュー＃２、＃１、＃０の優先割合（Ｐ２：Ｐ１：Ｐ０）をＰ２＝９、Ｐ１＝２、Ｐ０＝１とする。
【００５２】
各キューのフレーム重みを整数とするため、以下の計算を行なう。優先割合（Ｐ２：Ｐ１：Ｐ０）＝（９：２：１）の最小公倍数を算出する。この場合、最小公倍数は、１８である。優先割合の逆数を取り、最小公倍数を掛け算する。計算の結果、クラスキュー＃２、＃１、＃０のフレーム重みの割合（Ｗ２：Ｗ１：Ｗ０）は、
Ｗ２：Ｗ１：Ｗ０＝２：９：１８
となる。
【００５３】
ＷＲ制御ブロック３０は、ＣＯＳまたはＴＯＳ／ＴＣ５１により格納するキューを決定する。ＲＤ制御ブロック３３は、各キューから出力されるフレームの重み付きシーケンス番号（ＳＮ）を比較し、重み付きシーケンス番号（ＳＮ）の最も小さいフレームの読み出しを行なう。ただし、クラスキュー＃３（絶対優先）にフレームが格納されている場合はクラスキュー＃３（絶対優先）のフレームを優先する。
【００５４】
図６を参照して、受信フレームのキューへの格納と、読み出しを説明する。図６Ａにおいて、以下のフレームが（Ａ）、（Ｂ）、（Ｃ）の順で到着した場合を説明する。
【００５５】
（Ａ）  フレーム長：１００、クラスキュー：＃０
（Ｂ）  フレーム長：１５０、クラスキュー：＃１
（Ｃ）  フレーム長：２００、クラスキュー：＃１
ＷＲ制御ブロック３０は、到着したフレーム（Ａ）、（Ｂ）、（Ｃ）の重み付きシーケンス番号（ＳＮ）をそれぞれ計算する。
・（Ａ）の重み付きシーケンス番号（ＳＮ）計算
格納すべきクラスキュー＃０が空のため、ＷＲ制御ブロック３０は、ラウンド番号を使用する。なお、ラウンド番号の初期値は、０である。
【００５６】
重み付きシーケンス番号（ＳＮ）
＝（ラウンド番号）＋（フレーム長）×（フレーム重み：Ｗ０）
＝０＋１００×１８
＝１８００
・（Ｂ）の重み付きシーケンス番号（ＳＮ）計算
格納すべきクラスキュー＃１が空のため、ＷＲ制御ブロック３０は、ラウンド番号を使用する。
重み付きシーケンス番号（ＳＮ）
＝（ラウンド番号）＋（フレーム長）×（フレーム重み：Ｗ１）
＝０＋１５０×９
＝１３５０
・（Ｃ）の重み付きシーケンス番号（ＳＮ）計算
格納すべきクラスキュー＃１にフレーム（Ｂ）が蓄積されているため、ＷＲ制御ブロック３０は、最後に蓄積されたフレームのＳＮを使用する。
重み付きシーケンス番号（ＳＮ）
＝（最後に蓄積されたフレームのＳＮ）＋（フレーム長）×（フレーム重み：Ｗ１）
＝１３５０＋２００×９
＝３１５０
ＷＲ制御ブロック３０は、計算した各重み付きシーケンス番号（ＳＮ）をフレーム（Ａ）（Ｂ）（Ｃ）の先頭にそれぞれ付与し、該当キュー３２３、３２４へ格納する。
【００５７】
図６Ｂにおいて、ＲＤ制御ブロック３３は、図６Ａにてクラスキュー＃０、＃１に蓄積されたフレーム（Ａ）、（Ｂ）の重み付きシーケンス番号（ＳＮ）を比較し、最も小さい（Ｂ）を帯域制御部２５の図示しないシェーパへ出力する。この時、クラスキュー＃２は、キュー内にフレームが存在しないため、比較対象ではない。
【００５８】
ＲＤ制御ブロック３３は、出力したフレーム（Ｂ）の重み付きシーケンス番号（ＳＮ）をラウンド番号とし、ラウンド番号領域３１３を０から１３５０へ書き換える。
【００５９】
図６Ｃにおいて、次に新たに以下のフレーム（Ｄ）が到着した場合を説明する。
（Ｄ）  フレーム長：２５０、クラスキュー：＃２
・（Ｄ）の重み付きシーケンス番号（ＳＮ）計算
格納すべきクラスキュー＃２が空のため、ＷＲ制御ブロック３０は、ラウンド番号を使用する。
重み付きシーケンス番号（ＳＮ）
＝（ラウンド番号）＋（フレーム長）×（フレーム重み：Ｗ２）
＝１３５０＋２５０×２
＝１８５０
ＷＲ制御ブロック３０は、計算した重み付きシーケンス番号（ＳＮ）をフレーム（Ｄ）の先頭に付与し、該当のクラスキュー＃２へ格納する。
【００６０】
図６Ｄを参照して、現在キューに溜まっているフレーム（Ａ）、（Ｃ）、（Ｄ）のキューからの読み出しの流れを説明する。図６Ｄにおいて、ＲＤ制御ブロック３３は、クラスキュー＃０、＃１、＃２に蓄積されたフレーム（Ａ）、（Ｃ）、（Ｄ）の重み付きシーケンス番号（ＳＮ）を比較する。最も小さい重み付きシーケンス番号（ＳＮ）はフレーム（Ａ）の１８００のため、ＲＤ制御ブロック３３は、フレーム（Ａ）を最初に帯域制御部２５の図示しないシェーパへ出力する。ＲＤ制御ブロック３３は、出力したフレーム（Ａ）の重み付きシーケンス番号（ＳＮ）をラウンド番号とし、ラウンド番号領域３１３を１３５０から１８００へ書き換える。
【００６１】
次に、ＲＤ制御ブロック３３は、キュー内に存在するフレーム（Ｃ）、（Ｄ）のシーケンス番号を比較する。小さい重み付きシーケンス番号（ＳＮ）はフレーム（Ｄ）の１８５０のため、ＲＤ制御ブロック３３は、フレーム（Ｄ）を次に出力する。ＲＤ制御ブロック３３は、出力したフレーム（Ｄ）の重み付きシーケンス番号（ＳＮ）をラウンド番号とし、ラウンド番号領域３１３を１８００から１８５０へ書き換える。
【００６２】
最後に、ＲＤ制御ブロック３３は、クラスキュー＃１に残っているフレーム（Ｃ）を出力する。ＲＤ制御ブロック３３は、出力したフレーム（Ｃ）の重み付きシーケンス番号（ＳＮ）をラウンド番号とし、ラウンド番号領域３１３を１８５０から３１５０へ書き換える。
【００６３】
図７を参照して、ユーザフローがｎフローの場合の、帯域制御キュー管理テーブルとフレーム受信バッファを説明する。図７において、ユーザフローが複数（ｎ＞１）のとき、帯域制御部２５は、ユーザフロー数分だけ帯域制御キュー管理テーブル３１Ａ−１〜３１Ａ−ｎとフレーム受信バッファ３２−１〜３２−ｎを具備する。
【００６４】
重み付きシーケンス番号およびラウンド番号は、有限の値を取る。このため、最大値を超えた場合（ラップアラウンドと呼ぶ）、０に戻ることになる。０に戻った場合、単純に重み付きシーケンス番号の比較を行なうことはできない。これは、０に戻ったシーケンス番号が常に最小値となってしまうためである。ラウンドアップフラグは、ラップアラウンドが発生したキューを識別し、比較対象から外すために使用する。これを図８を参照して、説明する。
【００６５】
図８において、ＷＲ制御ブロック３０は、重み付きシーケンス番号（ＳＮ）を計算する（Ｓ８０）。ＷＲ制御ブロック３０は、ＳＮがラップアラウンド閾値以上か判定する（Ｓ８１）。ＹＥＳのとき、ＷＲ制御ブロック３０は、当該優先キューのラップアラウンドフラグを立てる（Ｓ８２）。ステップ８１でＮＯのとき、ＷＲ制御ブロック３０は、ラップアラウンドフラグが立っていない優先キューのＳＮ比較を実施して（Ｓ８３）、ステップ８０に遷移する。
【００６６】
ステップ８２のあと、ＷＲ制御ブロック３０は、全ての優先キューでラップアラウンドフラグが立っているか判定する（Ｓ８４）。ＹＥＳのとき、ＷＲ制御ブロック３０は、全優先キューのラップアラウンドフラグをクリアする（Ｓ８６）。ＷＲ制御ブロック３０は、ＳＮを比較して（Ｓ８７）、ステップ８０に遷移する。ステップ８４でＮＯのとき、ＷＲ制御ブロック３０は、ステップ８３に遷移する。
【実施例２】
【００６７】
図９を参照して、実施例２の優先キューに保存されるフレーム構成を説明する。図９において、フレーム７０Ａは、ヘッダと、ペイロードとで構成され、ヘッダには、格納すべきキューの選択情報であるＣＯＳまたはＴＯＳ／ＴＣ５１と、重み付きシーケンス番号を演算するに必要なフレーム情報であるＬｅｎｇｔｈ５２を含んでいる。図３のフレーム７０との対比から明らかなように、フレーム７０ＡにはＳＮが含まれていない。
【００６８】
図１０を参照して、ＲＤ制御ブロック３３Ａで重み付きシーケンス番号４１１を生成し、その値に従ってフレーム受信バッファ３２より読み出すフレームの順番を決定する実施例２を説明する。図１０において、帯域制御部２５Ａは、ＷＲ制御ブロック３０Ａと、帯域制御キュー管理テーブル３１Ｂと、フレーム受信バッファ３２と、ＲＤ制御ブロック３３Ａとから構成される。
【００６９】
帯域制御キュー管理テーブル３１Ｂは、帯域制御対象となるコネクションのキュー情報を保持する。帯域制御キュー管理テーブル３１Ｂは、重み付きシーケンス番号４１１と、ＲＡ３１４とを含む。帯域制御キュー管理テーブル３１Ｂのレコードは、優先度が高い順に、クラス３（絶対優先）、クラス２、クラス１、クラス０を含む。クラス３（絶対優先）は、絶対優先であり、ＷＦＱには参加しない。したがって、クラス３（絶対優先）の重み付きシーケンス番号４１１欄には、ラウンド番号３１３を記録している。
【００７０】
フレーム受信バッファ３２は、クラス３キュー（絶対優先）３２１と、クラス２キュー（重み：Ｗ２）３２２と、クラス１キュー（重み：Ｗ１）３２３と、クラス０キュー（重み：Ｗ０）３２４とを保持する。なお、フレーム受信バッファ３２は、ＦＩＦＯメモリである。
ＲＤ制御ブロック３３Ａは、ラウンド番号取得部３３１と、重み付きシーケンス番号計算部３３２とを含む。ラウンド番号取得部３３１は、帯域制御キュー管理テーブル３１Ｂから、ラウンド番号３１３を読みだす。重み付きシーケンス番号計算部３３２は、ラウンド番号３１１と、フレームのＬｅｎｇｔｈ５２と、重みとに基づいて、重み付きシーケンス番号を計算する。
【００７１】
実施例２において、ＲＤ制御ブロック３３Ａは、重み付きシーケンス番号４１１を生成し、その値に従って読み出す順番を決定する。以下、その具体的な動作を説明する。
ＷＲ制御ブロック３０Ａに到着したフレームについて、ＷＲ制御ブロック３０Ａは、図９のＣＯＳまたはＴＯＳ／ＴＣ５１をもとに、該当のクラスキュー３２１〜３２４に格納する。
【００７２】
ＲＤ制御ブロック３３Ａでの１回目の読出しのとき（一番最初の読み出し）、ＲＤ制御ブロック３３Ａは、フレーム受信バッファ３２のＥｍｐｔｙではない優先度の高いクラスキューから読出しを開始する。重み付きシーケンス番号計算部３３２は、読み出ししたフレームのバイト数から重み付きシーケンス番号を計算する。計算した重み付きシーケンス番号４１１について、重み付きシーケンス番号計算部３３２は、帯域制御キュー管理テーブル３１Ｂの該当クラスに格納する。
【００７３】
以降２回目の読み出しのとき、ＲＤ制御ブロック３３Ａは、読み出し時に帯域制御キュー管理テーブル３１Ｂを参照し、重み付きシーケンス番号４１１の値が小さいキューの順にフレーム受信バッファ３２よりフレームの読み出しを行なう。ＲＤ制御ブロック３３Ａは、その都度重み付きシーケンス番号計算部３３２にて、次のフレームの重み付きシーケンス番号を計算し、帯域制御キュー管理テーブル３１Ｂの該当クラスに格納する。
【００７４】
実施例１では、予め各クラスキューの重み付きシーケンス番号４１１がわかっている上で、重み付きシーケンス番号４１１の小さい順にフレーム受信バッファ３２よりフレームを読み出す。しかし、実施例２では、フレーム受信バッファ３２よりフレームを読み出して、重み付きシーケンス番号４１１を計算した結果、次に読みだすクラスキューを決定する。
【００７５】
この時、読み出し側であるＲＤ制御ブロック３３Ａで、フレーム読み出しによる重み付きシーケンス番号４１１更新時、フレーム受信バッファ３２が空のクラスについても、読み出したフレームの計算した重み付きシーケンス番号４１１にて上書きする。ただし、上書きする重み付きシーケンス番号４１１の値があらかじめ帯域制御キュー管理テーブル３１Ｂに保存されている重み付きシーケンス番号４１１よりも大きい場合は、上書きを行なわない。
一方、書き込み側であるＷＲ制御ブロック３０Ａは、重み付きシーケンス番号４１１の参照、上書きは一切行なわない。
【００７６】
ここでラウンド番号３１３について説明する。ＲＤ制御ブロック３３Ａは、非アクティブなキュー＝Ｅｍｐｔｙとし、帯域制御キュー管理テーブル３１Ｂの各クラスの中で最も小さい値の重み付けシーケンス番号４１１を持つキューのパケットで計算した重み付けシーケンス番号をラウンド番号３１３とする。また、フレーム読出し後、ＲＤ制御ブロック３３Ａは、フローの内、Ｅｍｐｔｙとなっているクラスキューの重み付きシーケンス番号４１１にラウンド番号３１３を上書きする。
【００７７】
ここで重み付きシーケンス番号４１１の計算方法について説明する。
重み付きシーケンス番号４１１
＝帯域制御キュー管理テーブル３１Ｂから読み出した重み付きシーケンス番号４１１＋クラスに該当するＷｅｉｇｈｔ値×フレームバイト数
アクティブなクラスキューの場合（Not Empty）も非アクティブなクラスキューの場合（Empty）も上記の計算式である。なお、１回目の読み出し時（一番最初の読み出し時）、管理テーブル３１Ｂは、重み付きシーケンス番号４１１シーケンス番号を保持していないので、ラウンド番号（初期値０）を利用する。
【００７８】
図１１を参照して、実施例２のフレームのキューへの格納と、読み出しを説明する。なお、図１１では、帯域制御キュー管理テーブル３１Ｂの重み付きシーケンス番号４１１をキュー内部に記載している。これは、図示の簡便のためである。
【００７９】
まず、図１１Ａを参照して、以下のフレームが（Ａ）、（Ｂ）、（Ｃ）の順で到着した場合を説明する。
（Ａ）  フレーム長：１００、クラスキュー：＃０
（Ｂ）  フレーム長：１５０、クラスキュー：＃１
（Ｃ）  フレーム長：２００、クラスキュー：＃１
各キューの優先割合であるフレーム重みとして実施例１の値を使用する。
実施例２では、書き込み側ではＷＦＱに関して一切処理をせず、ＷＲ制御ブロック３０Ａは、フレーム７０ＡのＣＯＳまたはＴＯＳ／ＴＣ５１に従って、キュー３２３、３２４に格納する。
【００８０】
到着したフレーム（Ａ）（Ｂ）（Ｃ）の重み付きシーケンス番号（ＳＮ）の計算は、読み出し側で行なう。
図１１Ｂにおいて、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂを参照して、読み出すフレームを選択する。図１１Ｂの場合、１回目の読み出し時（一番最初の読み出し時）のためＥｍｐｔｙではない優先度の高いクラスキューから読み出しを開始する。そのため、ＲＤ制御ブロック３３Ａは、クラスキュー＃１に格納されているフレーム（Ｂ）を最初に読み出す。
【００８１】
次に、ＲＤ制御ブロック３３Ａは、読み出したフレーム（Ｂ）の重み付きシーケンス番号（ＳＮ）計算を下記の通り行なう。
・（Ｂ）の重み付きシーケンス番号（ＳＮ）計算
フレーム（Ｂ）はアクティブなクラスキュー＃１のため、ＲＤ制御ブロック３３Ａは、ラウンド番号を使用する。
【００８２】
重み付きシーケンス番号（ＳＮ）
＝（ラウンド番号）＋（フレーム長）×（フレーム重み：Ｗ１）
＝０＋１５０×９
＝１３５０
ＲＤ制御ブロック３３Ａは、計算したフレーム（Ｂ）の重み付きシーケンス番号（ＳＮ）１３５０にて、ラウンド番号３１３を０から１３５０に上書きする。また、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂのクラス＃１、＃２の重み付きシーケンス番号（ＳＮ）も０から１３５０へ上書きを行なう。＃２の重み付きシーケンス番号（ＳＮ）を０から１３５０へ上書きを行なうのは、＃２がＥｍｐｔｙだからである。
【００８３】
図１１Ｃを参照して、次に新たに以下のフレーム（Ｄ）が到着した場合を説明する。
（Ｄ）  フレーム長：２５０、クラスキュー：＃２
図１１Ｃにおいて、図１１Ａと同様に、ＷＲ制御ブロック３０Ａは、ＣＯＳまたはＴＯＳ／ＴＣ５１に従ってキュー３２２に格納する。
【００８４】
図１１Ｄを参照して、現在キューに溜まっているフレーム（Ａ）、（Ｃ）、（Ｄ）のキューからの読み出しの流れを説明する。図１１Ｄにおいて、ＲＤ制御ブロック３３Ａは、図１１Ｃにて更新された帯域制御キュー管理テーブル３１Ｂのフレームが蓄積されているクラス＃２、＃１、＃０の重み付きシーケンス番号を比較する。
【００８５】
最も小さい重み付きシーケンス番号（ＳＮ）はフレーム（Ａ）の０のため、ＲＤ制御ブロック３３Ａは、フレーム（Ａ）を最初に出力する。
【００８６】
次に読み出したフレーム（Ａ）の重み付きシーケンス番号（ＳＮ）計算を行なう。
・（Ａ）の重み付きシーケンス番号（ＳＮ）計算
フレーム（Ａ）は非アクティブなクラスキュー＃０のため、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂで読み出した重み付きシーケンス番号を使用する。
重み付きシーケンス番号（ＳＮ）
＝（帯域制御キュー管理テーブル３１Ｂで読み出したＳＮ）＋（フレーム長）×（フレーム重み：Ｗ０）
＝０＋１００×１８
＝１８００
計算結果の重み付きシーケンス番号（ＳＮ）１８００を、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂのクラスキュー＃０の重み付きシーケンス番号領域にを上書きする。また、ＲＤ制御ブロック３３Ａは、ラウンド番号３１３を１３５０から１８００に上書きする。
【００８７】
次に、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂのフレームが蓄積されているクラス＃２、＃１の重み付きシーケンス番号を比較する。クラス＃２、＃１ともに重み付きシーケンス番号は１３５０のため、ＲＤ制御ブロック３３Ａは、優先度の高いクラス＃２に蓄積されているフレーム（Ｄ）を次に読み出す。
【００８８】
ＲＤ制御ブロック３３Ａは、読み出したフレーム（Ｄ）の重み付きシーケンス番号（ＳＮ）計算を行なう。
・（Ｄ）の重み付きシーケンス番号（ＳＮ）計算
フレーム（Ｄ）は非アクティブなクラスキュー＃２のため、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂで読み出した重み付きシーケンス番号を使用する。
重み付きシーケンス番号（ＳＮ）
＝（帯域制御キュー管理テーブル３１Ｂで読み出したＳＮ）＋（フレーム長）×（フレーム重み：Ｗ２）
＝１３５０＋２５０×２
＝１８５０
ＲＤ制御ブロック３３Ａは、重み付きシーケンス番号（ＳＮ）１８５０を帯域制御キュー管理テーブル３１Ｂのクラスキュー＃２の重み付きシーケンス番号領域に上書きする。また優先クラスキュー＃０もバッファが空のため、ＲＤ制御ブロック３３Ａは、重み付きシーケンス番号を１８００から１８５０へ上書きを行なう。また、ＲＤ制御ブロック３３Ａは、ラウンド番号３１３を１８００から１８５０に上書きする。
【００８９】
最後に、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂのクラス＃１に蓄積されているフレーム（Ｃ）を読み出す。
【００９０】
ＲＤ制御ブロック３３Ａは、読み出したフレーム（Ｃ）の重み付きシーケンス番号（ＳＮ）計算を行なう。
・（Ｃ）の重み付きシーケンス番号（ＳＮ）計算
フレーム（Ｃ）は非アクティブなクラスキュー＃１のため、ＲＤ制御ブロック３３Ａは、帯域制御キュー管理テーブル３１Ｂで読み出した重み付きシーケンス番号を使用する。
重み付きシーケンス番号（ＳＮ）
＝（帯域制御キュー管理テーブル３１Ｂで読み出したＳＮ）＋（フレーム長）×（フレーム重み：Ｗ１）
＝１３５０＋２００×９
＝３１５０
ＲＤ制御ブロック３３Ａは、重み付きシーケンス番号（ＳＮ）３１５０を帯域制御キュー管理テーブル３１Ｂのクラスキュー＃１の重み付きシーケンス番号領域に上書きする。また、ＲＤ制御ブロック３３Ａは、優先クラスキュー＃２、＃０もバッファが空のため重み付きシーケンス番号を３１５０へ上書きを行なう。また、ＲＤ制御ブロック３３Ａは、ラウンド番号３１３を１８５０から３１５０に上書きする。
【００９１】
ラップアラウンドについて、実施例２は、実施例１と同様の動作とすればよい。
上述した実施例によれば、汎用ＦＰＧＡにて高速にＷＦＱ処理が可能な通信装置を提供することができた。
【符号の説明】
【００９２】
１０…エンドユーザ、１１…通信装置、１２…アクセス回線網、１３…他キャリアアクセス回線網、１４…ＡＴＭアクセスネットワーク、１５…イーサアクセスネットワーク、１６…ＶＬＡＮサービス網、１７…専用線網、１８…エッジＳＷ、１９…キャリアネットワーク、２０…ＰＨＹ、２１…フレーム分離部、２２…制御フレーム終端部、２３…制御フレーム生成部、２４…多重部、２５…帯域制御部、３０…ＷＲ制御ブロック、３１…帯域制御キュー管理テーブル、３２…フレーム受信バッファ、３３…ＲＤ制御ブロック、５０…ＳＮ（シーケンス番号）、５１…キュー格納情報、５２…フレーム長情報、７０…フレーム、１００…ネットワーク、３０１…ラウンド番号取得部、３０２…重み付きシーケンス番号計算ａｎｄ付与部、３１１…フレーム先頭情報、３１２…ＷＡ（Write Address）、３１３…ラウンド番号、３１４…ＲＡ（Read Address）、３２１…クラス３キュー（絶対優先）、３２２…クラス２キュー（重み：Ｗ２）、３２３…クラス１キュー（重み：Ｗ１）、３２４…クラス０キュー（重み：Ｗ０）、３３１…ラウンド番号取得部、３３２…重み付きシーケンス番号計算部、４１１…重み付きシーケンス番号、４１２…先読み重み付きシーケンス番号。
【図１】
0005759941.tif 000002
【図２】
0005759941.tif 000003
【図３】
0005759941.tif 000004
【図４】
0005759941.tif 000005
【図５】
0005759941.tif 000006
【図６Ａ】
0005759941.tif 000007
【図６Ｂ】
0005759941.tif 000008
【図６Ｃ】
0005759941.tif 000009
【図６Ｄ】
0005759941.tif 000010
【図７】
0005759941.tif 000011
【図８】
0005759941.tif 000012
【図９】
0005759941.tif 000013
【図１０】
0005759941.tif 000014
【図１１Ａ】
0005759941.tif 000015
【図１１Ｂ】
0005759941.tif 000016
【図１１Ｃ】
0005759941.tif 000017
【図１１Ｄ】
0005759941.tif 000018