(57)【要約】【課題】  高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大する。【解決手段】  パケット入力部１は、入力されたパケットをパケットバッファ２に格納する。キュー制御部５は、パケット情報を所定のキューに格納する。ＱｏＳ処理部６は、予め指定されたパケットスケジューリング（優先制御、重み付け公平制御、パケットシェーピング）により決定された順序でキューからパケット情報を受理し、送信要求とともに後述するパケット送信部７に通知する。パケット送信部７は、通知されたパケット情報あるいは管理番号から、送信すべきパケットのパケットバッファ２内の格納アドレスを取得し、該格納アドレスで特定されるパケットバッファ内のパケットを送信する。【選択図】    図１
2007110515.tif 000002
【特許請求の範囲】
【請求項１】
入力された通信パケットの通信品質を制御して出力するパケット通信品質制御装置において、
入力された通信パケットを示すパケットデータを記憶する記憶手段と、
前記記憶手段に記憶されたパケットデータに関する情報であるパケット情報を順次記憶する複数のキューと、
前記複数のキューに記憶されたパケット情報を所定の順序に基づいて読み出して出力する複数の重み付け公平制御手段と、
前記複数の重み付け公平制御手段から出力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて通信パケットを生成して送信する送信手段と、
前記複数のキューと、前記複数の重み付け公平制御手段と、前記送信手段とを収容するとともに、これら各部の入出力を相互に切替可能に接続する経路切替手段とを備え、
前記キューは、記憶する前記パケット情報とこのパケット情報に対応するパケットデータの出力要求とを前記経路切替手段を介して対応する接続相手へ出力し、
前記重み付け公平制御手段は、入力の各々に対応する複数のカウンタと、該複数のカウンタへの重みの積算速度を調整するための加算手段とを備え、前記複数のカウンタへの重みの積算速度を前記加算手段により調整しつつ、出力要求を送信可能な入力が存在せず、かつ前記カウンタの値が所定の閾値に達するまでの間、当該カウンタに所定の重みを積算し、該複数のカウンタの値と前記経路切替手段を介して入力される前段からの出力要求とに基づいて、前記経路切替手段を介して入力されたパケット情報および出力要求を選択し、前記経路切替手段を介して対応する接続相手へ出力し、
前記送信手段は、入力された出力要求に応じて当該出力要求とともに入力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて送信パケットを生成して送信することを特徴とするパケット通信品質制御装置。
【請求項２】
前記複数の重み付け公平制御手段は、前記複数のカウンタの値と前記経路切替手段を介して入力される前段からの出力要求とに基づいて前記パケット情報および前記出力要求を選択する際、接続相手から送信完了通知が入力されたときは、出力要求した接続相手に対して送信完了通知を送信することを特徴とする請求項１記載のパケット通信品質制御装置。
【請求項３】
前記複数の重み付け公平制御手段は、後段への出力要求の送出後、出力要求している入力に対応するカウンタから出力要求したパケットのパケット長だけ減算し、出力要求したパケットのパケット長を前記加算手段に積算する一方、該加算手段の値に基づいて、前記複数のカウンタに重みを積算するとともに、前記加算手段の値を前記重み分減算することを特徴とする請求項１または２記載のパケット通信品質制御装置。
【請求項４】
前記複数の重み付け公平制御手段は、出力要求を送信可能な入力が存在せず、かつ前記カウンタの値が所定の閾値に達している場合、前記複数のカウンタの値を前記加算手段に積算した後、前記複数のカウンタの値をゼロとすることを特徴とする請求項３記載のパケット通信品質制御装置。
【請求項５】
前記複数の重み付け公平制御手段は、前記接続相手から送信完了通知を受信してから、次の接続相手から入力されたパケット情報および出力要求を受理するまでの時間を調整する調整手段を備えることを特徴とする請求項１ないし４のいずれかに記載のパケット通信品質制御装置。
【請求項６】
前記複数の重み付け公平制御手段の各々の前段または後段に配置され、前段から出力要求されたパケットのパケット長さとに基づいて、パケット送出レートを制御する複数のパケット送出レート調整手段を備えることを特徴とする請求項１記載のパケット通信品質制御装置。
【請求項７】
前記複数のパケット送出レート調整手段は、その入出力を前記経路切替手段の入出力に接続され、該経路切替手段による切り替え動作によって前記複数の重み付け公平制御手段の各々の前段または後段に配置されることを特徴とする請求項６記載のパケット通信品質制御装置。
【請求項８】
前記複数のパケット送出レート調整手段は、その入力を前記複数の重み付け公平制御手段の出力に接続され、その出力を前記経路切替手段の入力に接続されていることを特徴とする請求項６記載のパケット通信品質制御装置。
【請求項９】
前記複数のパケット送出レート調整手段は、その入力を前記複数のキューの出力に接続され、その出力を前記経路切替手段の入力に接続されていることを特徴とする請求項６記載のパケット通信品質制御装置。
【請求項１０】
入力された通信パケットの通信品質を制御して出力するパケット通信品質制御装置において、
入力された通信パケットを示すパケットデータを記憶する記憶手段と、
前記記憶手段に記憶されたパケットデータに関する情報であるパケット情報を順次記憶する複数のキューと、
前記複数のキューに記憶されたパケット情報を所定の順序に基づいて読み出して出力する複数の優先制御手段と、
前記複数の優先制御手段から出力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて通信パケットを生成して送信する送信手段と、
前記複数のキューと、前記複数の優先制御手段と、前記送信手段とを収容するとともに、これら各部の入出力を相互に切替可能に接続する経路切替手段とを備え、
前記キューは、記憶する前記パケット情報とこのパケット情報に対応するパケットデータの出力要求とを前記経路切替手段を介して対応する接続相手へ出力し、
前記優先制御手段は、後段の接続相手のいずれかから送信完了通知を受信してから、次の前段の接続相手から入力されたパケット情報および出力要求を受理するまでの時間を調整する調整手段を備え、前記調整手段による時間調整後、前記前段の接続相手の各々に固有の優先度に基づいて、前記前段の接続相手のいずれか１つから、パケット情報および出力要求を選択して出力し、
前記送信手段は、前記出力された出力要求に応じて、該出力要求とともに出力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて送信パケットを生成して送信することを特徴とするパケット通信品質制御装置。
【請求項１１】
前記優先制御手段は、前記各接続相手に固有の優先度に基づいて、いずれか１つのパケット情報および出力要求を選択する際、接続相手から送信完了通知が入力されたときは、出力要求した接続相手に対して送信完了通知を送信することを特徴とする請求項１０記載のパケット通信品質制御装置。
【請求項１２】
入力された通信パケットの通信品質を制御して出力するパケット通信品質制御方法において、
入力された通信パケットを示すパケットデータを記憶するステップと、
前記パケットデータに関する情報であるパケット情報を複数のキューに順次記憶するステップと、
出力要求を送信可能なキューが存在しない場合、所定の閾値に達するまでの間、複数のカウンタに所定の重みを積算するステップと、
前記複数のカウンタへの重みの積算頻度を制御するステップと、
前記積算された重みの値と前記複数のキューからの出力要求とに基づいて、前記複数のキューから入力されたパケット情報および出力要求を選択するステップと、
前記選択されたパケット情報で特定されるパケットデータを読み出し、そのパケットデータに基づいて通信パケットを生成して送信するステップと
を含むことを特徴とするパケット通信品質制御方法。
【請求項１３】
入力された通信パケットの通信品質を制御して出力するパケット通信品質制御方法において、
入力された通信パケットを示すパケットデータを記憶するステップと、
前記パケットデータに関する情報であるパケット情報を複数のキューに順次記憶するステップと、
前記複数のキューから入力されたパケット情報および出力要求を受理するまでの時間を調整するステップと、
前記時間調整後、入力の各々に固有の優先度に基づいて、前記複数のキューのいずれか１つから、パケット情報および出力要求を選択して出力するステップと、
前記出力された出力要求に応じて、該出力要求とともに出力されたパケット情報で特定されるパケットデータを読み出し、そのパケットデータに基づいて通信パケットを生成して送信するステップと
を含むことを特徴とするパケット通信品質制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信技術に関し、特に、ネットワークを介して受信した通信パケットを送信する際の通信品質を制御するパケット通信品質制御装置およびパケット通信品質制御方法に関する。
【背景技術】
【０００２】
データ通信以外に音声電話やＴＶ電話など、多様な通信サービスがインターネットを介して提供されている。このような多様化に伴い、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）と呼ばれる通信品質制御が必要となっている。このＱｏＳ制御は、多様に通信制御を行う必要があるため、プログラム制御によって行われてきた。また、一部の処理をハードウェアで行うことで、プログラム制御の問題であった処理速度を向上させるようとするものもある（例えば、非特許文献１参照）。
【非特許文献１】「簡単・快適・安全なネットワークサービスを実現するホームゲートウェイ（ＨＩＫＡＲＩ  ＧＡＴＥ）」、ＮＴＴ技術ジャーナル、２００３  Ｖｏｌ．１５  Ｎｏ．５  ｐｐ．１８−２１
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来技術では、パケットが入力されるキュー、パケットの通信品質制御を行うパケットスケジューラおよびパケットを外部に送信する送信部等、装置の各構成部品の接続が固定されているため、通信品質の制御のための調整または変更の自由度が小さいという問題があった。
【０００４】
本発明は、このような事情を考慮してなされたものであり、その目的は、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるパケット通信品質制御装置およびパケット通信品質制御方法を提供することにある。
【課題を解決するための手段】
【０００５】
上述した課題を解決するために、本発明は、入力された通信パケットの通信品質を制御して出力するパケット通信品質制御装置において、入力された通信パケットを示すパケットデータを記憶する記憶手段と、前記記憶手段に記憶されたパケットデータに関する情報であるパケット情報を順次記憶する複数のキューと、前記複数のキューに記憶されたパケット情報を所定の順序に基づいて読み出して出力する複数の重み付け公平制御手段と、前記複数の重み付け公平制御手段から出力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて通信パケットを生成して送信する送信手段と、前記複数のキューと、前記複数の重み付け公平制御手段と、前記送信手段とを収容するとともに、これら各部の入出力を相互に切替可能に接続する経路切替手段とを備え、前記キューは、記憶する前記パケット情報とこのパケット情報に対応するパケットデータの出力要求とを前記経路切替手段を介して対応する接続相手へ出力し、前記重み付け公平制御手段は、入力の各々に対応する複数のカウンタと、該複数のカウンタへの重みの積算速度を調整するための加算手段とを備え、前記複数のカウンタへの重みの積算速度を前記加算手段により調整しつつ、出力要求を送信可能な入力が存在せず、かつ前記カウンタの値が所定の閾値に達するまでの間、当該カウンタに所定の重みを積算し、該複数のカウンタの値と前記経路切替手段を介して入力される前段からの出力要求とに基づいて、前記経路切替手段を介して入力されたパケット情報および出力要求を選択し、前記経路切替手段を介して対応する接続相手へ出力し、前記送信手段は、入力された出力要求に応じて当該出力要求とともに入力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて送信パケットを生成して送信することを特徴とする。
【０００６】
本発明は、上記の発明において、前記複数の重み付け公平制御手段は、前記複数のカウンタの値と前記経路切替手段を介して入力される前段からの出力要求とに基づいて前記パケット情報および前記出力要求を選択する際、接続相手から送信完了通知が入力されたときは、出力要求した接続相手に対して送信完了通知を送信することを特徴とする。
【０００７】
本発明は、上記の発明において、前記複数の重み付け公平制御手段は、後段への出力要求の送出後、出力要求している入力に対応するカウンタから出力要求したパケットのパケット長だけ減算し、出力要求したパケットのパケット長を前記加算手段に積算する一方、該加算手段の値に基づいて、前記複数のカウンタに重みを積算するとともに、前記加算手段の値を前記重み分減算することを特徴とする。
【０００８】
本発明は、上記の発明において、前記複数の重み付け公平制御手段は、出力要求を送信可能な入力が存在せず、かつ前記カウンタの値が所定の閾値に達している場合、前記複数のカウンタの値を前記加算手段に積算した後、前記複数のカウンタの値をゼロとすることを特徴とする。
【０００９】
本発明は、上記の発明において、前記複数の重み付け公平制御手段は、前記接続相手から送信完了通知を受信してから、次の接続相手から入力されたパケット情報および出力要求を受理するまでの時間を調整する調整手段を備えることを特徴とする。
【００１０】
本発明は、上記の発明において、前記複数の重み付け公平制御手段の各々の前段または後段に配置され、前段から出力要求されたパケットのパケット長さとに基づいて、パケット送出レートを制御する複数のパケット送出レート調整手段を備えることを特徴とする。
【００１１】
本発明は、上記の発明において、前記複数のパケット送出レート調整手段は、その入出力を前記経路切替手段の入出力に接続され、該経路切替手段による切り替え動作によって前記複数の重み付け公平制御手段の各々の前段または後段に配置されることを特徴とする。
【００１２】
本発明は、上記の発明において、前記複数のパケット送出レート調整手段は、その入力を前記複数の重み付け公平制御手段の出力に接続され、その出力を前記経路切替手段の入力に接続されていることを特徴とする。
【００１３】
本発明は、上記の発明において、前記複数のパケット送出レート調整手段は、その入力を前記複数のキューの出力に接続され、その出力を前記経路切替手段の入力に接続されていることを特徴とする。
【００１４】
また、上述した課題を解決するために、本発明は、入力された通信パケットの通信品質を制御して出力するパケット通信品質制御装置において、入力された通信パケットを示すパケットデータを記憶する記憶手段と、前記記憶手段に記憶されたパケットデータに関する情報であるパケット情報を順次記憶する複数のキューと、前記複数のキューに記憶されたパケット情報を所定の順序に基づいて読み出して出力する複数の優先制御手段と、前記複数の優先制御手段から出力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて通信パケットを生成して送信する送信手段と、前記複数のキューと、前記複数の優先制御手段と、前記送信手段とを収容するとともに、これら各部の入出力を相互に切替可能に接続する経路切替手段とを備え、前記キューは、記憶する前記パケット情報とこのパケット情報に対応するパケットデータの出力要求とを前記経路切替手段を介して対応する接続相手へ出力し、前記優先制御手段は、後段の接続相手のいずれかから送信完了通知を受信してから、次の前段の接続相手から入力されたパケット情報および出力要求を受理するまでの時間を調整する調整手段を備え、前記調整手段による時間調整後、前記前段の接続相手の各々に固有の優先度に基づいて、前記前段の接続相手のいずれか１つから、パケット情報および出力要求を選択して出力し、前記送信手段は、前記出力された出力要求に応じて、該出力要求とともに出力されたパケット情報で特定されるパケットデータを前記記憶手段から読み出し、そのパケットデータに基づいて送信パケットを生成して送信することを特徴とする。
【００１５】
本発明は、上記の発明において、前記優先制御手段は、前記各接続相手に固有の優先度に基づいて、いずれか１つのパケット情報および出力要求を選択する際、接続相手から送信完了通知が入力されたときは、出力要求した接続相手に対して送信完了通知を送信することを特徴とする。
【００１６】
また、上述した課題を解決するために、本発明は、入力された通信パケットの通信品質を制御して出力するパケット通信品質制御方法において、入力された通信パケットを示すパケットデータを記憶するステップと、前記パケットデータに関する情報であるパケット情報を複数のキューに順次記憶するステップと、出力要求を送信可能なキューが存在しない場合、所定の閾値に達するまでの間、複数のカウンタに所定の重みを積算するステップと、前記複数のカウンタへの重みの積算頻度を制御するステップと、前記積算された重みの値と前記複数のキューからの出力要求とに基づいて、前記複数のキューから入力されたパケット情報および出力要求を選択するステップと、前記選択されたパケット情報で特定されるパケットデータを読み出し、そのパケットデータに基づいて通信パケットを生成して送信するステップとを含むことを特徴とする。
【００１７】
また、上述した課題を解決するために、本発明は、入力された通信パケットの通信品質を制御して出力するパケット通信品質制御方法において、入力された通信パケットを示すパケットデータを記憶するステップと、前記パケットデータに関する情報であるパケット情報を複数のキューに順次記憶するステップと、前記複数のキューから入力されたパケット情報および出力要求を受理するまでの時間を調整するステップと、前記時間調整後、入力の各々に固有の優先度に基づいて、前記複数のキューのいずれか１つから、パケット情報および出力要求を選択して出力するステップと、前記出力された出力要求に応じて、該出力要求とともに出力されたパケット情報で特定されるパケットデータを読み出し、そのパケットデータに基づいて通信パケットを生成して送信するステップとを含むことを特徴とする。
【発明の効果】
【００１８】
この発明によれば、複数のキューと、複数の制御手段と、送信手段との入出力を経路切替手段により切替可能に接続し、重み付け公平制御手段により、複数のカウンタへの重みの積算速度を加算手段により調整しつつ、出力要求を送信可能な入力が存在せず、かつ前記カウンタの値が所定の閾値に達するまでの間、当該カウンタに所定の重みを積算し、該複数のカウンタの値と経路切替手段を介して入力される前段からの出力要求とに基づいて、経路切替手段を介して入力されたパケット情報および出力要求を対応する接続相手へ出力し、送信手段によって、入力された出力要求に応じて当該出力要求とともに入力されたパケット情報で特定されるパケットデータを記憶手段から読み出し、そのパケットデータに基づいて送信パケットを生成して送信する。したがって、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００１９】
また、本発明によれば、複数のカウンタの値と複数のキューからの出力要求とに基づいてパケット情報および出力要求を選択する際、接続相手から送信完了通知が入力されたときは、出力要求した接続相手に対して送信完了通知を送信する。したがって、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２０】
また、この発明によれば、重み付け公平制御手段により、後段への出力要求の送出後、出力要求している入力に対応するカウンタから出力要求したパケットのパケット長だけ減算し、出力要求したパケットのパケット長を加算手段に積算する一方、該加算手段の値に基づいて、複数のカウンタに重みを積算するとともに、加算手段の値を重み分減算する。したがって、パケットの送信速度の高低に関わらず、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２１】
また、本発明によれば、重み付け公平制御手段により、出力要求を送信可能な入力が存在せず、かつカウンタの値が所定の閾値に達している場合、複数のカウンタの値を加算手段に積算した後、複数のカウンタの値をゼロとする。したがって、重みの積算速度を向上させることができ、パケットの送信速度の高低に関わらず、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２２】
また、この発明によれば、調整手段により、接続相手から送信完了通知を受信してから、次の接続相手から入力されたパケット情報および出力要求を受理するまでの時間を調整する。したがって、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２３】
また、本発明によれば、複数の重み付け公平制御手段の各々の前段または後段に配置された複数のパケット送出レート調整手段により、前段から出力要求されたパケットのパケット長さとに基づいて、パケット送出レートを制御する。したがって、容易にパケット送出レートを制御することができ、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２４】
また、本発明によれば、複数のパケット送出レート調整手段の入出力を経路切替手段の入出力に接続し、該経路切替手段による切り替え動作によって、複数のパケット送出レート調整手段を複数の重み付け公平制御手段の各々の前段または後段に配置する。したがって、容易にパケット送出レートを制御することができ、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２５】
また、この発明によれば、複数のパケット送出レート調整手段の入力を複数の重み付け公平制御手段の出力に接続し、その出力を経路切替手段の入力に接続する。したがって、回路構成を簡単にすることができ、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２６】
また、この発明によれば、複数のパケット送出レート調整手段の入力を複数のキューの出力に接続し、その出力を経路切替手段の入力に接続する。したがって、回路構成を簡単にすることができ、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２７】
また、この発明によれば、複数のキューと、複数の制御手段と、送信手段との入出力を経路切替手段により切替可能に接続し、優先制御手段の調整手段により、後段の接続相手のいずれかから送信完了通知を受信してから、次の前段の接続相手から入力されたパケット情報および出力要求を受理するまでの時間を調整し、該時間調整後、前段の接続相手の各々に固有の優先度に基づいて、前段の接続相手のいずれか１つから、パケット情報および出力要求を所定の順序で読み出して、送信手段により、当該出力要求とともに入力されたパケット情報で特定されるパケットデータを記憶手段から読み出し、そのパケットデータに基づいて送信パケットを生成して送信する。したがって、固有の優先度に従ってパケットを送信することができ、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【００２８】
また、この発明によれば、優先制御手段により、各接続相手に固有の優先度に基づいて、いずれか１つのパケット情報および出力要求を選択する際、接続相手から送信完了通知が入力されたときは、出力要求した接続相手に対して送信完了通知を送信する。したがって、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができるという利点が得られる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の一実施形態を、図面を参照して説明する。
図１は、本発明の実施形態によるパケット処理装置の構成を示すブロック図である。図１において、パケット入力部１は、入力されたパケットをパケットバッファ２に格納するためのアドレスを空き領域管理テーブル３に問い合わせ、格納アドレスを取得し、その格納アドレスに入力されるパケットを格納する。また、パケット入力部１は、同時に空き領域管理テーブル３から管理番号を取得する。このとき、パケット識別に必要となるパケットの情報（送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、宛先ＩＰアドレス等）やパケット長を抽出し、パケット情報としてパケット識別器４に入力する。
【００３０】
空き領域管理テーブル３は、パケットバッファ２に格納されているパケットを管理するための管理番号、パケット情報、格納アドレス、パケット長などを対応付けて記憶するパケット情報テーブル３−１を備えている。
【００３１】
パケット識別器４は、予め設定されたルールに従い、上記パケット情報を後述する複数のキューのうち、どのキューに格納するのかを決定し、キュー制御部５にパケット情報を入力する。キュー制御部５は、複数のキュー＃０〜＃Ｊを備え、パケット情報を上記パケット識別器４によって決定されたキュー＃ｊ（ｊ＝０〜Ｊ）に格納する。キュー制御部５は、キュー＃ｊ（ｊ＝０〜Ｊ）にパケット情報が存在するとき、ＱｏＳ処理部６に対して、送信要求（Ｒｅｑ）を送出する。また、同時にパケット情報自体、あるいは管理番号を通知する。
【００３２】
ＱｏＳ処理部６は、予め指定された後述するパケットスケジューリング（優先制御、重み付け公平制御、パケットシェーピング）により送信決定されたパケット情報あるいは管理番号を送信要求とともに後述するパケット送信部７に通知する。また、ＱｏＳ処理部６は、後述するパケット送信部７から通知された完了通知を送信要求を行ったパスを辿って戻すことで、自身の内部状態を、次のパケットを送信できる状態にするとともに、キュー制御部５に完了通知を通知する。完了通知は、当該完了通知を送信する契機となった送信要求を行ったキューに到達するので、完了通知を受け取ったキューは、送信要求を送信する契機となったパケット情報を削除する。
【００３３】
パケット送信部７は、通知されたパケット情報あるいは管理番号から、送信すべきパケットのパケットバッファ２内の格納アドレスを取得し、該格納アドレスで特定されるパケットバッファ内のパケットを送信する。また、パケット送信部７は、送信開始、あるいは送信終了時に、ＱｏＳ処理部６に対して、完了通知（Ａｃｋ）を送出する。また、パケット送信完了時、当該パケットの管理番号を他のパケットが使用できるように空き領域管理テーブル３に通知する。
【００３４】
次に、図２は、上述したＱｏＳ処理部６の構成を示すブロック図である。図２において、ＱｏＳ処理部６は、セレクタ１０と、複数のパケットスケジューラ（優先制御、重み付け公平制御）１１−１〜１１−Ｋと、複数のシェーパ１２−１〜１２−Ｌとを備えている。セレクタ１０の入力には、キュー制御部５のキュー＃０〜＃Ｊからの出力（パケット情報）および各パケットスケジューラ１１−１〜１１−Ｋおよび各シェーパ１２−１〜１２−Ｌの出力が接続されており、セレクタ１０の出力には、最終段の出力を除いて、各パケットスケジューラ１１−１〜１１−Ｋの入力および各シェーパ１２−１〜１２−Ｌの入力が接続されている。セレクタ１０は、外部からの設定に従って、任意の入力を任意の出力に接続することが可能となっている。
【００３５】
次に、該ＱｏＳ処理部６における接続設定の例を図３（ａ）、（ｂ）、図４（ａ）、（ｂ）に示す。図３（ａ）、図４（ａ）は、セレクタ内の接続状態を示す図、図３（ｂ）、図４（ｂ）は、それを展開して見やすくした図である。図３（ａ）に示すように、セレクタ１０の入出力を接続することで、図３（ｂ）に示すように、キュー＃０〜＃３の出力をセレクタ１０を介してパケットスケジューラ１１−１に入力し、キュー＃４の出力をセレクタ１０を介してパケットスケジューラ１１−２に入力する。さらに、セレクタ１０を介してパケットスケジューラ１１−１の出力をパケットスケジューラ１１−２に入力する。そして、パケットスケジューラ１１−２の出力をシェーパ１２−１に入力し、該シェーパ１２−１の出力を最終の出力（パケット送信部７への入力）としている。
【００３６】
また、図４（ａ）、（ｂ）に示す例では、図４（ａ）に示すように、セレクタ１０の入出力を接続することで、図４（ｂ）に示すように、キュー＃０の出力をシェーパ１２−１に入力し、キュー＃１およびキュー＃２の出力をパケットスケジューラ１１−１に入力する。さらに、シェーパ１２−１の出力と、パケットスケジューラ１１−１の出力とを、パケットスケジューラ１１−２に入力し、該パケットスケジューラ１１−２の出力を最終の出力（パケット送信部７への入力）としている。このようにセレクタ１０の接続状態を外部より設定することで、構成において自由度の高いＱｏＳ制御が可能となる。
【００３７】
ここで、図４（ａ）、（ｂ）に示す接続状態の場合におけるＱｏＳ処理部６の動作を図５から図１０を参照して説明する。
【００３８】
図５（ａ）は、キュー＃０、＃１、＃２にそれぞれ４つのパケット情報Ｑ０＿０〜Ｑ０＿３、Ｑ１＿０〜Ｑ１＿３、Ｑ２＿０〜Ｑ２＿３が蓄積され、それぞれセレクタ１０により接続されるシェーパ１２−１、パケットスケジューラ１１−１に送信要求Ｒｅｑ０＿０、Ｒｅｑ１＿０、Ｒｅｑ２＿０を送出している。
【００３９】
図５（ｂ）では、シェーパ１２−１およびパケットスケジューラ１１−１から送信要求Ｒｅｑ０＿０、Ｒｅｑ１＿０がパケットスケジューラ１１−２に送出されている。シェーパ１２−１は、トラヒック量を調整するためのもので、内部的に持っているトークン量と送信要求されたパケットの長さを比較し、トークン量が大きければ、受信した送信要求を後段に送出する。送出後、トークン量を送信要求されたパケット長さ分減算する。トークンの追加は、トークンレートで制御されており、トークンレートが遅い場合、パケットの送出レートを低下させることができ、トークンレートが速い場合、パケットの送出レートを高くすることができる。これにより、パケット送出レートを制御している。
【００４０】
図５（ｂ）に示す状態では、トークン量が要求パケット長よりも大きいものとして取り扱っている。パケットスケジューラ１１−１は、優先制御になっているので、優先度の高い送信要求Ｒｅｑ１＿０が出力されている。
【００４１】
次に、図６（ａ）では、パケットスケジューラ１１−２からパケット送信部７に送信要求Ｒｅｑ０＿０が出力されている。これは、パケットスケジューラ１１−２に入力されている送信要求Ｒｅｑ０＿０、Ｒｅｑ１＿０のうち、送信要求Ｒｅｑ０＿０のほうが、高い優先入力であるためである。図６（ｂ）では、送信要求Ｒｅｑ０＿０を受信したパケット送信部７が、送信要求Ｒｅｑ０＿０の指し示すパケット情報Ｑ０＿０から得られたパケットを送出開始し、完了通知Ａｃｋをパケットスケジューラ１１−２に返している。
【００４２】
次に、図７（ａ）で、完了通知Ａｃｋを受信したパケットスケジューラ１１−２が送信要求Ｒｅｑ０＿０を停止し、送信要求Ｒｅｑ０＿０を入力したポート（シェーパ１２−１）に対して完了通知Ａｃｋを返している。この間、パケット情報Ｑ０＿０のパケットが全て送出されていない場合、そのまま継続してパケットを送出する。図７（ｂ）では、完了通知Ａｃｋを受信したシェーパ１２−１がその完了通知Ａｃｋをキュー＃０に返している。
【００４３】
次に、図８（ａ）では、完了通知Ａｃｋを受信したキュー＃０は、パケット情報Ｑ０＿０を削除し、さらにキューイングされているパケット情報Ｑ０＿１の送信要求Ｒｅｑ０＿１をシェーパ１２−１に送信している。図８（ｂ）では、先ほど、送信要求Ｒｅｑ０＿０を送信したばかりなので、シェーパ１２−１でのトークン量がパケット情報Ｑ０＿１のパケット長に満たないため、送信要求はパケットスケジューラ１１−２に送出されない。しかし、パケットスケジューラ１１−２の低優先ポートには、送信要求Ｒｅｑ１＿０が通知されているので、パケットスケジューラ１１−２は、送信要求Ｒｅｑ１＿０をパケット送信部７に送出する。
【００４４】
次に、図９（ａ）では、パケット送信部７がパケット送出状態を確認し、パケット送出中であれば、送信要求Ｒｅｑ１＿０に対する完了通知Ａｃｋを返さないが、現時点では、先のパケット情報Ｑ０＿０のパケットの送信が完了しているので、送信要求Ｒｅｑ１＿０を受理し、完了通知Ａｃｋをパケットスケジューラ１１−２に返すとともに、パケット情報Ｑ１＿０が示すパケットの送出を開始する。図９（ｂ）では、パケットスケジューラ１１−２が受信した完了通知Ａｃｋを送信要求Ｒｅｑ１＿０を要求した低優先ポートに送信すると同時に、パケット送信部７に送出していた送信要求Ｒｅｑ１＿０を止める。そして、この完了通知Ａｃｋは、パケットスケジューラ１１−１で受信され、パケットスケジューラ１１−１では、送信要求Ｒｅｑ１＿０を送信していた高優先ポートに接続されているキュー＃１に完了通知Ａｃｋを送出する。
【００４５】
次に、図１０（ａ）では、シェーパ１２−１におけるトークン量が送信要求Ｒｅｑ０＿１に対応するパケット情報Ｑ０＿１が示すパケット長がトークン量を超えるので、送信要求Ｒｅｑ０＿１がパケットスケジューラ１１−２に送出される。また、キュー＃１は、先に受けた完了通知Ａｃｋによりパケット情報Ｑ１＿０を削除し、次にキューイングされていたパケット情報Ｑ１＿１の送信要求Ｒｅｑ１＿１をパケットスケジューラ１１−１に送出する。パケットスケジューラ１１−１は、高優先ポートに通知されている送信要求Ｒｅｑ１＿１をパケットスケジューラ１１−２に送出する。図１０（ｂ）では、パケットスケジューラ１１−２は、高優先ポートに通知されている送信要求Ｒｅｑ０＿１をパケット送信部７に送出し、それを受けたパケット送信部７は、パケット送出状態を確認し、パケットが送出されていない状況である場合、完了通知Ａｃｋをパケットスケジューラ１１−２に送出するとともに、送信要求Ｑ０＿１の示すパケットを送出する。
【００４６】
このような送信要求（Ｒｅｑ）とその要求を受理したことを示す完了通知（Ａｃｋ）、およびシェーパ１２−１〜１２−Ｌや、パケットスケジューラ１１−１〜１１−Ｋの動作モードの１つである重み付け公平制御（後述）を行うためのパケット長を用いてＱｏＳ処理を行う。
【００４７】
次に、図１１及び図１２は、セレクタ１０とパケットスケジューラ１１−１〜１１−Ｋやシェーパ１２−１〜１２−Ｌとの接続形態の一例を示すブロック図である。図１１に示すように、パケットスケジューラ１１−１〜１１−Ｋの各出力をシェーパ１２−１〜１２−Ｋに固定的に接続したり、図１２に示すように、キュー＃０〜＃Ｊとセレクタ１０との間にシェーパ１３−１〜１３−Ｊを接続したりすることで、図２の構成に比べて、セレクタ１０の接続端子を削減したり、キュー＃０〜＃Ｊからの出力帯域を予め絞った状態で、運用するようにしてもよい。
【００４８】
次に、図１３は、パケットスケジューラ１１−１〜１１−Ｋの一構成例を示すブロック図である。図１３に示すパケットスケジューラ１１−ｋ（ｋ＝０〜Ｋ）は、４入力の構成例であり、カウンタ制御部２０およびＲｅｑＡｃｋ制御部２１からなる。カウンタ制御部２０は、入力数に対応する、重み付け公平制御を行うためのカウンタ＃０〜＃３を備えており、該カウンタ＃０〜＃３の動作を制御する。カウンタ制御部２０は、ＲｅｑＡｃｋ制御部２１の状態が後述するＳｉ（ｉ＝０〜３）に遷移したとき、すなわち、後段のパケットスケジューラ１１−（ｋ＋１）、あるいはシェーパ１２−（ｌ）、あるいはパケット送信部７に送信要求（Ｒｅｑ）を通知するときに、当該パケットのフレーム長を、前段のパケットスケジューラ１１−（ｋ−ｉ−１）、あるいはシェーパ１２−（ｌ−１）、あるいはキュー＃ｊからの送信要求のうち、後段のパケットスケジューラ１１−（ｋ＋１）に通知しようとする入力に対応するカウンタ＃ｉから減ずる。
【００４９】
より具体的には、カウンタ制御部２０は、重み付け公平制御におけるカウンタ＃０〜＃３の動作を調整するためのクレジット部２０−１を備えている。カウンタ制御部２０は、後述するｓｃｈｅｄｉ（ｉ＝０〜３）のいずれかが１のとき（スケジューリング完了状態のものがあるとき）、すなわち、パケット送信可能な状態の入力がある場合で、かつ、クレジット部２０−１の値が負または０のとき、各カウンタ＃ｉへの重み＃ｉの加算を行わない。また、パケットスケジューラ１１−ｋが入力＃ｉに対する送信要求を行うとき、カウンタ＃ｉからそのパケット長分の値を減算するとともに、そのパケット長分の値をクレジット部２０−１に加算する。
【００５０】
また、カウンタ制御部２０は、後述するｓｃｈｅｄｉ（ｉ＝０〜３）の全てが０のとき（スケジューリング完了状態のものがない）、すなわち、パケット送信可能な状態の入力がない場合で、かつ、クレジット部２０−１の値が正のとき、各カウンタ＃０〜＃３に対応する重み＃０〜＃３を加算するようになっている。重み＃０〜＃３を加算する場合には、加算した分、クレジット部２０−１から減算する。
【００５１】
すなわち、カウンタ制御部２０は、上述したクレジット部２０−１を用いることで（カウンタへ重みを加算するか否かの判定条件にクレジット部２０−１の値を加えることで）、送信要求を行う度に、該当カウンタ＃ｉ（ｉ＝０〜３）から減算されたパケット長分の重みを再び全てのカウンタ＃０〜＃３に対して重みとして分配するという動作を行うことになる。ｓｃｈｅｄｉ（ｉ＝０〜３）が１になる条件は、「ＲｅｑＩｎｉ（ｉ＝０〜３）により送信要求が通知されており、かつ、カウンタ値が正もしくは０」の場合である。
【００５２】
このようにクレジット部２０−１を用いる効果は、１つのパケットに対する送信要求を行った後、すぐにカウンタ＃０〜＃３への加算が行われるので、パケットスケジューラ１１−ｋ（ｋ＝０〜３）の出力が高速であっても低速であっても、次の出力回線が空くまでに、カウンタ＃０〜＃３への加算を途中まで完了（スケジューリング完了状態）させることができることにある。また、重み＃０〜＃３の値を小さくすることができ、重み＃０〜＃３の値が小さいと、重み付け公平制御の精度を高めることができることにある。
【００５３】
また、送信レートが低い場合、すなわち、送信要求（Ｒｅｑ）を通知してから完了通知（Ａｃｋ）が返ってくるまでの時間が長い場合、クレジット部２０−１を用いない場合、重みが各カウンタ＃０〜＃３に加算し続けられる。このため、カウンタの最大値、あるいは、ある閾値に達すると、カウンタ＃０〜＃３に対する加算を停止させる機構が必要となる。このような場合、全てのカウンタ＃０〜＃３の値が同じ値になるので、ただの公平制御となってしまい、重み付け公平制御を行うことができなくなる。そこで、クレジット部２０−１を用いて、送信要求したパケット長分のみ、カウンタ＃０〜＃３への重みとして分配することにより、送信レートが低い場合であっても、重み付け公平制御を行うことができるようになる。
【００５４】
また、別の考え方として、パケットの送信要求を送信した後、次に送信要求を送出できるのは、送出パケット長÷出力帯域後である。送信要求を行ってからクレジット部２０−１に加算され、それが各カウンタ＃０〜＃３に分配されるわけであるが、全て分配した後、カウンタ＃０〜＃３への分配は止まる。次に、分配が開始されるのは、次の送信要求が送出されたときである。このため、この分配を平均化すると、分配速度は、出力帯域と同じとなる。これにより、出力帯域が高速の場合であっても、低速の場合であっても、それに合わせた分配速度になるように調整されるように動作することになる。
【００５５】
上述したカウンタ＃０〜＃３およびクレジット部２０−１に加算または減算されるフレーム長は、後述するＰＩＩｎｉ（ｉ＝０〜３）から得る場合や、ＰＩＩｎｉで通知されるのが管理番号だけである場合、この管理番号を用いてパケット情報テーブル３−１からフレーム長を検索する。さらに、実際のパケット送信時に付加されるヘッダ（トンネリングヘッダなど）や情報分（ＥｔｈｅｎｅｔフレームのプリアンブルやＦＳＣなど）の長さを加えた値をフレーム長として用いることも有用である。
【００５６】
ＲｅｑＡｃｋ制御部２１は、外部からの優先制御／重み付け公平制御動作切り替え指示に従って、初期状態であるＩｄｌｅ、後段に送信要求（ＲｅｑＯｕｔ）を行っている状態Ｓｉ（ｉ＝０，１，２，３）、後段からの完了通知（ＡｃｋＩｎ）を受信し、ｄｅｌａｙ部２１−１で示される動作サイクル時間が経過するのを待っている状態Ｗｉ（ｉ＝０，１，２，３）を用いて、パケット情報の後段への出力を制御する。送信要求（ＲｅｑＯｕｔ）は、状態がＳｉ（ｉ＝０，１，２，３）に遷移したときに１となり、それ以外の時には０となる。ＰＩＯｕｔには、現在の状態がＳ０のときＰＩＩｎ０のパケット情報、Ｓ１のときＰＩＩｎ１のパケット情報、Ｓ２のときＰＩＩｎ２のパケット情報、Ｓ３のときＰＩＩｎ３のパケット情報が出力される。
【００５７】
ＡｃｋＯｕｔｉ（ｉ＝０，１，２，３）は、後段からの完了通知（ＡｃｋＩｎ）を受けたときの状態がＳ０のとき、ＡｃｋＯｕｔ０のみが１、Ｓ１のときＡｃｋＯｕｔ１のみが１、Ｓ２のときＡｃｋＯｕｔ２のみが１、Ｓ３のときＡｃｋＯｕｔ３のみが１となり、前段のパケットスケジューラに対して完了通知を送信する。ここで、重み付け公平制御動作における状態遷移を図１４に示し、重み付け公平制御動作における状態遷移の条件を図１５に示す。
【００５８】
ここで、ｄｅｌａｙ部２１−１は、セレクタ１０を通してパケットスケジューラ１１−１〜１１−ｎが多段に接続された場合、後段からの完了通知（ＡｃｋＩｎ）を受け、すぐに入力状態を調べ、次の入力が選択されてしまうと、完了通知Ａｃｋがキュー＃０〜＃Ｊに辿り着いてから次のパケットの送信要求を送ったとしても、伝播遅延のため、その送信要求を受けることができない。そのため、伝播遅延を考慮した値をｄｅｌａｙ部２１−１に設定することにより伝播遅延の影響をなくすようになっている。なお、図１５に示すｄｅｌａｙは、ｄｅｌａｙ部２１−１に設定されている値を示している。
【００５９】
次に、上述した本実施形態の動作について説明する。
まず、本実施形態のパケット処理装置による優先制御および重み付け公平制御の基本的な動作について説明する。図１６は、本実施形態のパケット処理装置による優先制御および重み付け公平制御の基本的な動作を説明するための構成およびそれぞれのシーケンス図である。ここでは、説明を簡単にするために、図１６（ａ）に示すように、２つのキュー＃０、＃１からのパケット情報をパケットスケジューラ１１−１を介して出力する基本構成を例として説明する。
【００６０】
優先制御では、パケットスケジューラ１１−１において、キュー＃０側の入力の方がキュー＃１側の入力に比べて優先度が高いものとする。この場合、現在のパケット情報（キュー＃０、＃１のいずれでも構わない）を出力している間に、優先度の高い方の入力である、キュー＃０にパケット情報Ｑ０＿ｍ（ｍ＝１〜４）が入力されていると、そのパケット情報Ｑ０＿ｍを優先して出力する。したがって、優先度の高い側のキュー＃０からのパケット情報Ｑ０＿ｍに対しては、送出可能な最小時間（図示の矢印を参照）で送出されることになる。
【００６１】
次に、重み付け公平制御では、パケットスケジューラ１１−１において、２つの入力とも同じ重みとし、キュー＃０、＃１ともパケット長は同じであるとする。この場合、すなわち同じ重みである場合には、キュー＃０のパケット情報Ｑ０＿ｍとキュー＃１のパケット情報Ｑ１＿ｍ（ｍ＝１〜５）とを交互に出力する。したがって、最小の待ち時間で送出されることはないが、指定された重みに従って、この場合、双方とも同じであるので交互に出力される（重みに従い帯域分割される）。
【００６２】
次に、本実施形態のパケット処理装置による重み付け公平制御動作について説明する。ここで、図１７は、重み付け公平制御時におけるカウンタ制御部２０及びＲｅｑＡｃｋ制御部２１の一動作例を説明するためのフローチャートである。まず、カウンタ制御部２０は、各カウンタ＃０〜＃３及びクレジット部２０−１を０にリセットする（Ｓ１）。次に、ＲｅｑＡｃｋ制御部２１が、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ０に遷移したか否かを判定する（Ｓ２）。そして、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ０に遷移した場合には、ＰＩＩｎ０から得られるパケット長をカウンタ＃０から減ずるとともに、同パケット長をクレジット部２０−１に加算し（Ｓ３）、ステップＳ２へ戻る。
【００６３】
一方、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ０に遷移していない場合には、ＲｅｑＡｃｋ制御部２１が、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ１に遷移したか否かを判定する（Ｓ４）。そして、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ１に遷移した場合には、ＰＩＩｎ１から得られるパケット長をカウンタ＃１から減ずるとともに、同パケット長をクレジット部２０−１に加算し（Ｓ５）、ステップＳ２へ戻る。
【００６４】
一方、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ１に遷移していない場合には、ＲｅｑＡｃｋ制御部２１が、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ２に遷移したか否かを判定する（Ｓ６）。そして、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ２に遷移した場合には、ＰＩＩｎ２から得られるパケット長をカウンタ＃２から減ずるとともに、同パケット長をクレジット部２０−１に加算し（Ｓ７）、ステップＳ２へ戻る。
【００６５】
一方、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ２に遷移していない場合には、ＲｅｑＡｃｋ制御部２１が、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ３に遷移したか否かを判定する（Ｓ８）。そして、初期状態Ｉｄｌｅあるいは状態Ｗｉ（ｉ＝０，１，２，３）から状態Ｓ３に遷移した場合には、ＰＩＩｎ３から得られるパケット長をカウンタ＃３から減ずるとともに、同パケット長をクレジット部２０−１に加算し（Ｓ９）、ステップＳ２へ戻る。
【００６６】
また、いずれの場合でもない場合には、ｓｃｈｅｄｉ（ｉ＝０，１，２，３）のいずれかが１であり、かつクレジット部２０−１の値が０以下であるか否かを判定する（Ｓ１０）。そして、ｓｃｈｅｄｉ（ｉ＝０，１，２，３）のいずれかが１であり（スケジューリング完了状態）、すなわち、パケット送信可能な状態の入力があり、かつクレジット部２０−１の値が０以下であるとき（スケジューリング完了状態）、すなわち、パケット送信可能な状態の入力がある場合、各カウンタ＃０〜＃３への重みの加算を行うことなく、ステップＳ２へ戻る。
【００６７】
一方、そうでない場合、すなわち、パケット送信可能な状態の入力がない場合、変数ｎを０とし（Ｓ１１）、変数ｎが入力数（今回は４）以上になったか否かを判定し（Ｓ１２）、変数ｎが４以上でなければ、送信要求を受けている（ＲｅｑＩｎ＝１）か否かを判定する（Ｓ１３）。そして、送信要求を受けていない場合（ＲｅｑＩｎ＝０）には、カウンタ＃ｎ（ｎ＝０〜３）が０以上であるか否かを判定する（Ｓ１４）。そして、カウンタ＃ｎ（ｎ＝０〜３）が０以上でなければ、カウンタ＃ｎに対応する重み＃ｎを加算するとともに、クレジット部２０−１から重み＃ｎを減算する（Ｓ１５）。一方、カウンタ＃ｎ（ｎ＝０〜３）が０以上であれば、カウンタ＃ｎへの重みの加算およびクレジット部２０−１からの重みの減算を行わない。また、送信要求を受けている場合（ＲｅｑＩｎ＝０）には、カウンタ＃ｎの値に関係なく、カウンタ＃ｎに対応する重み＃ｎを加算するとともに、クレジット部２０−１から重み＃ｎを減算する（Ｓ１５）。
【００６８】
次に、いずれの場合も、変数ｎを１つだけインクリメントし（Ｓ１６）、ステップＳ１２へ戻り、変数ｎが４以上になるまで、すなわち、全てのカウンタ＃０〜＃３に対する処理が終了するまで、上述した処理を繰り返す。そして、変数ｎが４以上になると、ステップＳ２に戻る。
【００６９】
次に、図１８は、重み付け公平制御時におけるカウンタ制御部２０及びＲｅｑＡｃｋ制御部２１の他の動作例を説明するためのフローチャートである。なお、図１８におけるステップＳ２１〜Ｓ３３は、上述した図１７におけるステップＳ１〜Ｓ１３と同じであるので説明を省略する。
【００７０】
ステップＳ３３で、送信要求を受けている（ＲｅｑＩｎ＝１）か否かを判定した際、送信要求を受けていない場合（ＲｅｑＩｎ＝０）には、カウンタ＃ｎ（ｎ＝０〜３）が０以上で、かつ、ｄｅｌａｙ部２１−１が０または完了通知Ａｃｋを受信したか否かを判定する（Ｓ３４）。そして、カウンタ＃ｎ（ｎ＝０〜３）が０以上でなく、またはｄｅｌａｙ部２１−１が０または完了通知Ａｃｋを受信していなければ、カウンタ＃ｎに対応する重み＃ｎを加算するとともに、クレジット部２０−１から重み＃ｎを減算する（Ｓ３５）。一方、カウンタ＃ｎ（ｎ＝０〜３）が０以上で、かつｄｅｌａｙ部２１−１が０または完了通知Ａｃｋを受信した場合には、カウンタ＃ｎの値をクレジット部２０−１に加算するとともに、同カウンタ＃ｎの値を０とする（Ｓ３６）。また、送信要求を受けている場合（ＲｅｑＩｎ＝０）には、カウンタ＃ｎの値やｄｅｌａｙ部２１−１の値、あるいは完了通知Ａｃｋを受信しているか否かに関係なく、カウンタ＃ｎに対応する重み＃ｎを加算するとともに、クレジット部２０−１から重み＃ｎを減算する（Ｓ３５）。
【００７１】
そして、いずれの場合も、変数ｎを１つだけインクリメントし（Ｓ３７）、ステップＳ３２へ戻り、変数ｎが入力数（今回は４）以上になるまで、すなわち、全てのカウンタ＃０〜＃３に対する処理が終了するまで、上述した処理を繰り返す。そして、変数ｎが４以上になると、ステップＳ２２に戻る。
【００７２】
図１７と図１８の処理の違いは、送信要求を受けていない入力のカウンタの値が正の値をとったときの動作にある。クレジット部２０−１と各カウンタ＃０〜＃３との和は、基本的には０となっている。このため、図１７に示す動作の場合、いずれかのカウンタ＃ｉ（ｉ＝０〜３）が正の値である場合、それ以外のカウンタ＃ｐ（ｐ＝０〜３；ｉ以外）が負であることが考えられる。したがって、クレジット部２０−１の全ての値が分配された場合、次のパケットが送出され、クレジット部２０−１にそのパケット長が加算されるまで、あるいは、スケジューリング完了状態の入力がなくなるまで、重み＃０〜＃３はカウンタ＃０〜＃３に加算されなくなる。これにより、その負の値を有するカウンタ＃ｐに対する入力のスケジューリング完了が遅れる可能性がある。そこで、図１８に示す動作では、送信要求を受けていないにもかかわらず、正の値を有するカウンタ＃ｉに対しては、該カウンタ＃ｉの値を０にし、そのカウンタ＃ｉが有する値をクレジット部２０−１に戻すことで、見かけ上、重みの加算速度を向上させている。
【００７３】
ところで、上述したカウンタ＃０〜＃３への追加方法は、図１７および図１８では、シーケンシャルに行われているように記載されているが、並列処理を行ってもよい。この場合、クレジット部２０−１からの減算に際して競合が生じないようにする配慮が必要である。また、カウンタ＃０〜＃３への重みの加算は、カウントアップの時間を重みに合わせて調整したり（重みが４であれば、カウントアップサイクルを４とする）、加算器を用いることが考えられる。
【００７４】
ここで、図１９（ａ）〜（ｄ）は、上述したカウンタへの追加方法として、同時加算（並列処理）、順次加算、およびカウントアップ時間を調整して行う場合の動作例を示すタイミングチャートである。図１９（ａ）には、カウンタ＃０〜＃３に対して同時に重み＃０〜＃３を加算する様子を示しており、図１９（ｂ）には、カウンタ＃０〜＃３に重み＃０〜＃３を順次加算する様子を示している。また、図１９（ｃ）には、カウントアップ時間を調整してカウンタ＃０〜＃３へのカウントアップを同時に行う様子を示しており、図１９（ｄ）には、カウントアップ時間を調整してカウンタ＃０〜＃３へのカウントアップを順次行う様子を示している（斜線部分がカウントアップ時間）。
【００７５】
回路規模の点から考えると、図１９（ａ）は加算器が４つ、図１９（ｂ）は加算器が１つ、図１９（ｃ）はカウンタが４つ、図１９（ｄ）はカウンタが１つ必要であるため、（ａ）＞（ｂ）＞（ｃ）＞（ｄ）の順に回路規模が小さくなる。しかしながら、高速動作させるために必要な動作周波数は、（ａ）＜（ｂ）＜（ｃ）＜（ｄ）の順に大きくなる。そのため、回路規模と動作周波数を考慮して使用するカウンタ制御方法を選択する。
【００７６】
次に、優先制御動作について説明する。
優先制御動作時には、カウンタ制御部２０を使用しないので、停止させておいてもよい。基本的には、重み付け公平制御時と同様の動作を行う。違いは、状態遷移である。優先制御時における状態遷移を図２０に示し、優先制御時における状態遷移の条件を図２１に示す。入力の優先順は、入力＃０＞入力＃１＞入力＃２＞入力＃３の場合を示している。この状態遷移によりＲｅｑＩｎが存在する場合、優先順に入力された送信要求を後段のパケットスケジューラに通知することができる。優先制御の場合、特に、ｄｅｌａｙ部２１−１が重要であり、その理由を図２２（ａ）、（ｂ）を参照して説明する。
【００７７】
図２２（ａ）、（ｂ）において、各々のパケットスケジューラ１１−１、１１−２は、優先制御スケジューラであり、階層的に接続されている。説明を簡単にするために、入力ポート数を２としている。現時点で、キュー＃０の最初のパケット情報Ｑ０＿０が示すパケットが送信開始され、完了通知Ａｃｋがパケットスケジューラ１１−２に戻ってきている状態とする。期待される動作としては、パケット情報Ｑ０＿０の次に出力されるのは、パケット情報Ｑ０＿１が示すパケットである。
【００７８】
図２２（ａ）に示すように、遅延制御がない場合には、パケットスケジューラ１１−２からパケットスケジューラ１１−１に完了通知Ａｃｋを送出した時点で、高優先ポートに通知されている送信要求を一度キャンセルするために、高優先ポートからの送信要求がない状態になる。このとき、低優先ポートには、送信要求が通知されているので、低優先ポートに接続されているキュー＃２からのパケット情報Ｑ２＿０が示すパケットが、パケット情報Ｑ０＿０が示すパケットの次に出力されてしまう。
【００７９】
図２２（ｂ）に示すように、遅延制御がある場合にも、パケットスケジューラ１１−２がパケットスケジューラ１１−１に完了通知Ａｃｋを送出した時点で、高優先ポートに通知されている送信要求を一度キャンセルするが、このとき、ｄｅｌａｙ部２１−１に３を設定しているため待ち状態になる。パケットスケジューラ１１−２がパケットスケジューラ１１−１に完了通知Ａｃｋを送出したあと、パケットスケジューラ１１−１がキュー＃０に完了通知Ａｃｋを送出するのに１サイクル、キュー＃０がパケット情報Ｑ０＿１の送信要求を送出するのに１サイクル、パケットスケジューラ１１−２がパケットスケジューラ１１−１に送信要求するのに１サイクルの合計３サイクル、完了通知Ａｃｋを送出してから送信要求Ｒｅｑを受けるまでにかかる。パケット情報Ｑ０＿１の送信要求Ｒｅｑを受けたとき、ちょうどｄｅｌａｙ部２１−１の遅延は０となるので、この時点で出力する入力ポートをパケットスケジューラ１１−１が選択する。
【００８０】
次に、パケットスケジューラ１１−２がＱ０＿１を受けたとき、パケットスケジューラ１−２のｄｅｌａｙ部がちょうど０になるので、この時点で出力する入力ポートをパケットスケジューラ１１−２が選択する。もちろんこの場合には、高優先ポートに通知されたパケット情報Ｑ０＿１が示すパケットが出力される。
【００８１】
このように、特に、優先制御スケジューラを階層的に接続して用いる場合には、完了通知Ａｃｋを送出してから送信要求Ｒｅｑを受けるまでの遅延時間動作を行うことにより、正しい（この場合、パケット情報Ｑ０＿０が示すパケットの次にパケット情報Ｑ０＿１が示すパケットが出力される）パケットスケジューリングが可能となる。
【００８２】
次に、図２３に示すような単純なスケジューリング構成を用いて、重み付け公平制御動作時の各信号の様子を説明する。図２３において、パケットスケジューラ（総称してパケットスケジューラ１１とする）の４つの入力に接続されている各キュー＃０〜＃３には、各々、パケット情報Ｑ０＿０〜Ｑ０＿３、パケット情報Ｑ１＿０〜Ｑ１＿３、パケット情報Ｑ２＿０〜Ｑ２＿３、パケット情報Ｑ３＿０〜Ｑ３＿３が蓄積されており、パケットスケジューラ１１に対して送信要求ＲｅｑＩｎ０〜ＲｅｑＩｎ３を通知している。それぞれのキュー＃０〜＃３に蓄積されているパケット情報は、Ｑｊ＿ｍ（ｊ：キュー番号、ｍ：蓄積されている順に付けたパケット情報の番号）で示される。
【００８３】
パケットスケジューラ１１により送信するパケットが決定されたときには、先に記述したように、パケット送信部７にパケット情報と合わせて送信要求ＲｅｑＯｕｔが送信される。送信要求ＲｅｑＯｕｔを受けたパケット送信部７は、パケットを送信できる状態であれば、パケット情報Ｑｊ＿ｍに示されるパケットを送信するとともに、パケットスケジューラ１１に対して完了通知ＡｃｋＩｎを送出する。完了通知ＡｃｋＩｎを受け取ったパケットスケジューラ１１は、送信要求元のキュー＃ｊ（ｊ＝０〜３）に対し、完了通知ＡｃｋＯｕｔｉ（ｉ＝０〜３）を通知する。完了通知ＡｃｋＯｕｔｉを受けたキュー＃ｊは、当該パケット情報Ｑｊ＿ｍを開放するとともに、次のパケット情報を通知し、さらに送信要求をパケットスケジューラ１１に通知する。
【００８４】
以下の説明においては、パケットスケジューラ１１の各入力に対する重み＃０〜＃３を、入力＃０に対しては１６、入力＃１に対しては１２、入力＃２に対しては８、入力＃３に対しては４として説明を行う（４：３：２：１）。また、キュー＃０〜＃３に蓄積されている各パケット情報が示すパケットの長さを、説明を簡単にするために１００とする。同様の理由でｄｅｌａｙ部２１−１に設定する遅延時間を０とする。
【００８５】
次に、図２４は、本実施形態による重み付け公平制御動作時の各信号（Ｒｅｑｉｎ、ＰＩＩｎ、ＡｃｋＯｕｔ、ＰＩＯｕｔ、ＡｃｋＩｎ、およびカウンタ値）の様子を示すタイミングチャートである。
【００８６】
期間Ａは、初期状態で、パケットスケジューラは、アイドル（Ｉｄｌｅ）状態であり、各カウンタ＃０〜＃３の値は０であり、各入力＃０〜＃３には、送信要求とともにパケット情報が入力される。各入力＃０〜＃３には、ＲｅｑＩｎ０〜ＲｅｑＩｎ３が立っており、かつカウンタ＃０〜＃３が０であるので、スケジュール完了状態にある（ｓｃｈｅｄ０〜ｓｃｈｅｄ３が１）。このとき、パケットスケジューラ１１の内部状態は、アイドル状態Ｉｄｌｅから状態Ｓ０へ遷移する。
【００８７】
期間Ｂでは、内部状態がＳ０なので、パケット送信部７にＲｅｑＯｕｔとパケット情報Ｑ０＿０を送出する。さらに、カウンタ＃０の値からパケット情報Ｑ０＿０の示すパケットの長さである１００を減ずる（−１００になる）。加えて、クレジット部２０−１にそのパケット長が加算され、クレジットの値は１００となる。
【００８８】
期間Ｃにおいて、パケット送信部７では、これより前にパケットを送出していないので、回線に空きがある。そのため、直ちにパケット情報Ｑ０＿０により示されるパケットを送出するとともに、完了通知ＡｃｋＩｎをパケットスケジューラ１１に返す。完了通知ＡｃｋＩｎを受信したパケットスケジューラ１１は、現在の状態がＳ０であるので、状態Ｗ０に遷移する。加えて、クレジット値≧０であるので、各カウンタ＃０〜＃３への重み＃０〜＃３の加算を開始する。
【００８９】
期間Ｄでは、現在の状態がＷ０であるので、入力＃０から完了信号ＡｃｋＯｕｔ０を送出し、送信が完了したことをキュー＃０に通知する。このとき、ｄｅｌａｙ部２１−１による遅延時間を設定する。今回の説明では０として考えているので、ｄｅｌａｙ＝＝０は常に成り立つ。通常は、０でない値を設定するので、設定されたサイクル分状態を変更させずに待ち続ける。現時点でＲｅｑＩｎ１が立っており、カウンタ＃１の値が０であるので、入力＃１に対するスケジューリングは完了している（ｓｃｈｅｄ１＝１）。また、ｄｅｌａｙ＝＝０であるので、パケットスケジューラ１１の内部状態は、Ｗ０→Ｓ１に遷移する。
【００９０】
ところで、ＲｅｑＩｎ０〜ＲｅｑＩｎ３の信号は、図２４においてパルスとして書かれているが、パケットスケジューラ１１の内部的には、送信要求されているということで、期間Ｄの場合であっても、ＲｅｑＩｎ１は立っていることとして取り扱う。実際には、Ｓｅｔ−Ｒｅｓｅｔフリップフロップを用い、Ｓｅｔ端子がＲｅｑＩｎ０〜ＲｅｑＩｎ３につながり、Ｒｅｓｅｔ端子をＡｃｋＩｎにつなげ、その出力をＲｅｑＩｎ０〜ＲｅｑＩｎ３とすることなどで対応可能である。これにより、ＲｅｑＩｎ０〜ＲｅｑＩｎ３を受けてからＡｃｋＩｎを受けるまでの間、ＲｅｑＩｎ０〜ＲｅｑＩｎ３を受けているとして取り扱える。
【００９１】
期間Ｅでは、内部状態がＳ１になったので、ＰＩＯｕｔとしてパケット情報Ｑ１＿０を出力するとともに、送信要求ＲｅｑＯｕｔをパケット送信部７に通知する。期間Ｃとは異なり、今回は、パケット情報Ｑ０＿０のパケットを送信中であるので、送信が完了する期間Ｇまで、送信完了は通知されない。また、カウンタ＃１からパケット長である１００を減ずる（−１００になる）。さらに、クレジット部２０−１にそのパケット長を加算する。
【００９２】
期間Ｇでは、クレジット部２０−１の全ての値が各カウンタ＃０〜＃３に分配されて０になり、かつスケジューリングが完了しているものがあるので（（ｓｃｈｅｄ０‖ｓｃｈｅｄ１‖ｓｃｈｅｄ２‖ｓｃｈｅｄ３）＝１）、各カウンタ＃０〜＃３への加算を停止する。該期間Ｇに至るまでにクレジット部２０−１は、合計２００蓄積し、カウンタ＃０〜＃３のそれぞれに累計８０、６０、４０、２０ずつ加算されたことと、入力＃０、＃１に対するフレーム送信要求を行った（カウンタ＃０、＃１から各々１００減じられた）ので、カウンタ＃０〜＃３の現時点での値は、−２０、−４０、４０、２０となっている。
【００９３】
期間Ｈでは、先に送出した入力１に対する送信完了が通知されているので、現在の状態Ｓ１から状態Ｗ１に遷移する。
【００９４】
期間Ｉでは、状態がＷ１であるので、入力＃１から完了信号ＡｃｋＯｕｔ１を送出し、送信が完了したことをキュー＃１に通知する。このとき、ｄｅｌａｙ部２１−１に遅延時間を設定する（この場合、０）。現時点で、ＲｅｑＩｎ２が立っており、カウンタ＃２の値が４０であるので、入力＃２に対するスケジューリングは完了しているので、状態Ｗ１→状態Ｓ２に遷移する。
【００９５】
期間Ｊ以降は同様の処理を行っていく。
期間Ｑでは、パケット情報Ｑ２＿０のパケット送信が終了したので、送信要求を出しているパケット情報Ｑ３＿０の送信が開始され、完了通知Ａｃｋが返される。これにより、Ｓ３→Ｗ３に遷移する。
【００９６】
期間Ｒでは、状態Ｗ３であるので、入力＃３に対して完了信号ＡｃｋＯｕｔを通知する。また、入力＃０に対するスケジューリングが完了しているので、状態Ｗ３→状態Ｓ０に遷移する。
【００９７】
このような処理を続けていくことにより出力されるパケットは、図２４の最下段に示すようになる。すなわち、図示されている１０パケットを見ると、キュー＃０のパケットが４つ、キュー＃１のパケットが３つ、キュー＃２のパケットが２つ、キュー＃３のパケットが１つとなり、重みで指定した４：３：２：１の比率で、パケットが送信されたことが分かる。
【００９８】
上述した実施形態によれば、パケットスケジューラの回路ブロックはそのままで、制御方法を変えることで、優先制御、重み付け公平制御を行うことで、高速パケット処理を実現しつつ、通信品質制御の調整または変更の自由度を拡大することができる。
【００９９】
なお、上述した実施形態においては、上述したパケット入力部１、パケット識別器４、キュー制御部５、ＱｏＳ処理部６、パケット送信部７などによる一連の処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶され、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われるようにしてもよい。すなわち、パケット入力部１、パケット識別器４、キュー制御部５、ＱｏＳ処理部６、パケット送信部７などは、ＣＰＵ等の中央演算処理装置がＲＯＭやＲＡＭ等の主記憶装置に上記プログラムを読み出して、情報の加工・演算処理を実行することにより、実現されるようにしてもよい。
【０１００】
ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施形態によるパケット処理装置の構成を示すブロック図である。
【図２】ＱｏＳ処理部の構成を示すブロック図である。
【図３】ＱｏＳ処理部における接続設定の例を示すブロック図である。
【図４】ＱｏＳ処理部における接続設定の例を示すブロック図である。
【図５】ＱｏＳ処理部の動作を説明するためのブロック図である。
【図６】ＱｏＳ処理部の動作を説明するためのブロック図である。
【図７】ＱｏＳ処理部の動作を説明するためのブロック図である。
【図８】ＱｏＳ処理部の動作を説明するためのブロック図である。
【図９】ＱｏＳ処理部の動作を説明するためのブロック図である。
【図１０】ＱｏＳ処理部の動作を説明するためのブロック図である。
【図１１】セレクタとパケットスケジューラやシェーパとの接続形態の一例を示すブロック図である。
【図１２】セレクタとパケットスケジューラやシェーパとの接続形態の一例を示すブロック図である。
【図１３】パケットスケジューラの一構成例を示すブロック図である。
【図１４】重み付け公平制御動作における状態遷移を示す概念図である。
【図１５】重み付け公平制御動作における状態遷移の条件を示す図である。
【図１６】本実施形態のパケット処理装置による優先制御および重み付け公平制御の基本的な動作を説明するための構成およびそれぞれのシーケンス図である。
【図１７】重み付け公平制御時におけるカウンタ制御部の一動作例を説明するためのフローチャートである。
【図１８】重み付け公平制御時におけるカウンタ制御部の他の動作例を説明するためのフローチャートである。
【図１９】上述したカウンタへの追加方法として、同時加算（並列処理）、順次加算、およびカウントアップ時間を調整して行う例を示すタイミングチャートである。
【図２０】優先制御時における状態遷移を示す概念図である。
【図２１】優先制御時における状態遷移の条件を示す図である。
【図２２】優先制御時におけるｄｅｌａｙ部の重要性を説明するためのブロック図である。
【図２３】重み付け公平制御動作時における各信号の様子を説明するための一構成例を示すブロック図である。
【図２４】重み付け公平制御動作時における各信号の様子を示すタイミングチャートである。
【符号の説明】
【０１０２】
１  パケット入力部
２  パケットバッファ（記憶手段）
３  空き領域管理テーブル
３−１  パケット情報テーブル
４  パケット識別器
５  キュー制御部（複数のキュー）
６  ＱｏＳ処理部
７  パケット送信部（送信手段）
１０  セレクタ（経路切替手段）
１１−１〜１１−Ｋ  パケットスケジューラ（複数の重み付け公平制御手段、複数の優先制御手段）
１２−１〜１２−Ｌ  シェーパ（パケット送出レート調整手段）
１２−１〜１２−Ｋ  シェーパ（パケット送出レート調整手段）
１３−１〜１３−Ｊ  シェーパ（パケット送出レート調整手段）
２０  カウンタ制御部（複数のカウンタ）
２０−１  クレジット部（加算手段）
２１  ＲｅｑＡｃｋ制御部
２１−１  ｄｅｌａｙ部（調整手段）
【図１】
2007110515.tif 000003
【図２】
2007110515.tif 000004
【図３】
2007110515.tif 000005
【図４】
2007110515.tif 000006
【図５】
2007110515.tif 000007
【図６】
2007110515.tif 000008
【図７】
2007110515.tif 000009
【図８】
2007110515.tif 000010
【図９】
2007110515.tif 000011
【図１０】
2007110515.tif 000012
【図１１】
2007110515.tif 000013
【図１２】
2007110515.tif 000014
【図１３】
2007110515.tif 000015
【図１４】
2007110515.tif 000016
【図１５】
2007110515.tif 000017
【図１６】
2007110515.tif 000018
【図１７】
2007110515.tif 000019
【図１８】
2007110515.tif 000020
【図１９】
2007110515.tif 000021
【図２０】
2007110515.tif 000022
【図２１】
2007110515.tif 000023
【図２２】
2007110515.tif 000024
【図２３】
2007110515.tif 000025
【図２４】
2007110515.tif 000026