(57)【要約】【課題】トラヒックシェーピング回路のハードウェア規模を低減する。【解決手段】フローｉごとにフレームバッファ＃ｉとフレーム長キュー＃ｉとを有するフレーム記憶回路＃ｉを設けるとともに、フローｉに共通してトラヒックシェーピング回路１０を設け、トラヒックシェーピング回路１０により、トークンバケット方式に基づいて、各フローｉの入力フレームに関する出力レートを制限して平滑化する。【選択図】  図１
2018198351.tif 000002
【特許請求の範囲】
【請求項１】
入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置であって、
前記フローｉごとに個別に設けられて、前記フローｉに振り分けられた入力フレームとフレーム長を、それぞれ先入れ先出し方式のフレームバッファ＃ｉとフレーム長キュー＃ｉで一時的に記憶する、Ｎ個のフレーム記憶回路と、
前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する前記フレーム長キュー＃ｉの先頭に位置する先頭フレーム長に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定し、前記フローｉに関する出力可否判定結果を出力するトラヒックシェーピング回路と、
前記トラヒックシェーピング回路に対して出力可否判定開始指示を出力し、これに応じて前記トラヒックシェーピング回路から出力された前記フローｉに関する出力可否判定結果に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉから前記先頭フレームを読み出して出力する読出制御回路とを備え、
前記トラヒックシェーピング回路は、
前記フローｉごとに設けられたバケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように、前記バケット値Ｂｔ＃ｉの加算更新を指示する加算タイミングＴａ＃ｉを、一定の加算周期Ｔｍでそれぞれ出力するタイマ回路と、
前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、
前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、前記出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備え、
前記シェーピング処理回路は、
前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、
前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、
前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、
前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有する
ことを特徴とするフレーム通信装置。
【請求項２】
入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置であって、
前記フローｉごとに個別に設けられて、前記フローｉに振り分けられた入力フレームとフレーム長を、それぞれ先入れ先出し方式のフレームバッファ＃ｉとフレーム長キュー＃ｉで一時的に記憶する、Ｎ個のフレーム記憶回路と、
前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する前記フレーム長キュー＃ｉの先頭に位置する先頭フレーム長に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定し、前記フローｉに関する出力可否判定結果を出力するトラヒックシェーピング回路と、
前記トラヒックシェーピング回路に対して出力可否判定開始指示を出力し、これに応じて前記トラヒックシェーピング回路から出力された前記フローｉに関する出力可否判定結果に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉから前記先頭フレームを読み出して出力する読出制御回路とを備え、
前記トラヒックシェーピング回路は、
前記フローｉごとに設けられたバケット＃ｉのうち、基準となる基準バケット＃Ｓのバケット値Ｂｔ＃Ｓを加算更新する加算タイミングＴａ＃Ｓを、一定の加算周期Ｔｍで出力するタイマ回路と、
前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、
前記加算タイミングＴａ＃Ｓを基準として、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように計時した、前記バケット＃ｉのそれぞれに関する加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、前記出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備え、
前記シェーピング処理回路は、
前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、
前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、
前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、
前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有し、
前記増分計算部は、前記加算タイミングＴａ＃Ｓから前記加算タイミングＴａ＃ｉまでの加算更新前期間に、前記判定タイミングが到来した場合、前記バケット値増分ΔＢ＃ｉを前記トークン加算量Ｒｔ＃ｉ×Ｔｍだけ加算する
ことを特徴とするフレーム通信装置。
【請求項３】
請求項１または請求項２に記載のフレーム通信装置において、
前記トラヒックシェーピング回路は、
前記バケットの特性を示すプロファイルを、それぞれ固有のＩＤと対応させて記憶するプロファイルメモリ回路をさらに備え、
前記バケット値メモリ回路は、前記バケット値ごとに、対応するバケットに適用するプロファイルを示すＩＤを記憶し、
前記シェーピング処理回路は、前記判定タイミングの到来に応じて、前記バケット値メモリ回路からバケット＃ｉのＩＤを取得し、前記プロファイルメモリ回路から前記ＩＤに基づき取得したプロファイルに基づいて、前記バケット値Ｂｔ＃ｉの加算更新および前記先頭フレームの出力可否判定を行う
ことを特徴とするフレーム通信装置。
【請求項４】
入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置で用いられて、前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する先入れ先出し方式のフレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定するトラヒックシェーピング回路であって、
前記フローｉごとに設けられたバケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように、前記バケット値Ｂｔ＃ｉの加算更新を指示する加算タイミングＴａ＃ｉを、一定の加算周期Ｔｍでそれぞれ出力するタイマ回路と、
前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、
前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、入力された出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備え、
前記シェーピング処理回路は、
前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、
前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、
前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレームの先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、
前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有する
ことを特徴とするトラヒックシェーピング回路。
【請求項５】
入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置で用いられて、前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する先入れ先出し方式のフレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定するトラヒックシェーピング回路であって、
前記フローｉごとに設けられたバケット＃ｉのうち、基準となる基準バケット＃Ｓのバケット値Ｂｔ＃Ｓを加算更新する加算タイミングＴａ＃Ｓを、一定の加算周期Ｔｍで出力するタイマ回路と、
前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、
前記加算タイミングＴａ＃Ｓを基準として、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように計時した、前記バケット＃ｉのそれぞれに関する加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、入力された出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備え、
前記シェーピング処理回路は、
前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、
前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、
前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレームの先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、
前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有し、
前記増分計算部は、前記加算タイミングＴａ＃Ｓから前記加算タイミングＴａ＃ｉまでの加算更新前期間に、前記判定タイミングが到来した場合、前記バケット値増分ΔＢ＃ｉを前記トークン加算量Ｒｔ＃ｉ×Ｔｍだけ加算する
ことを特徴とするトラヒックシェーピング回路。
【請求項６】
請求項４または請求項５に記載のトラヒックシェーピング回路において、
前記バケットの特性を示すプロファイルを、それぞれ固有のＩＤと対応させて記憶するプロファイルメモリ回路をさらに備え、
前記バケット値メモリ回路は、前記バケット値ごとに、対応するバケットに適用するプロファイルを示すＩＤを記憶し、
前記シェーピング処理回路は、前記判定タイミングの到来に応じて、前記バケット値メモリ回路からバケット＃ｉのＩＤを取得し、前記プロファイルメモリ回路から前記ＩＤに基づき取得したプロファイルに基づいて、前記バケット値Ｂｔ＃ｉの加算更新および前記先頭フレームの出力可否判定を行う
ことを特徴とするトラヒックシェーピング回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたフレームに関する出力レートをフローごとに制限して平滑化するトラヒックシェーピング回路技術に関する。
【背景技術】
【０００２】
一般に、入力されたフレーム（パケット）を転送する場合、フレームの出力レートがフローごとに指定されている帯域以下となるよう、フレーム出力を平滑化するトラヒックシェーピング回路が用いられる。従来、このようなトラヒックシェーピング回路のハードウェア規模を低減するため、前回のフレーム到着時の時刻およびトークンバケットカウンタ値と、新たなフレーム到着時の時刻および加算レートとから、新たなフレーム到着時の新たなトークンバケットカウンタ値を計算し、新たなトークンバケットカウンタ値と新たなフレームのフレーム長とに基づいて、送信可否を判定する技術が提案されている（例えば、特許文献１など参照）。
【０００３】
図１３は、従来のフレーム通信装置の構成例である。このフレーム通信装置には、Ｎ個のフローごとにトラヒックシェーピング回路＃１，＃２，…，＃ｉ，…，＃Ｎが設けられている。トラヒックシェーピング回路＃ｉ（ｉ＝１〜Ｎ）は、フレームバッファ、フレーム長キュー、シェーピング処理回路、バケット値レジスタを備えている。フレームバッファおよびフレーム長キューは先入れ先出し方式で動作する。
【０００４】
図１３のフレーム通信装置において、分類回路は、入力フレームをＮ個のフローのいずれかに分類し、入力フレームとともに分類結果（フロー番号ｉ）を出力する。
振り分け回路は、分類結果に基づいて、入力フレームを対応するトラヒックシェーピング回路＃ｉに振り分ける。これにより、入力フレームはフレームバッファ♯ｉに入力され、入力フレームのフレーム長はフレーム長キュー♯ｉに入力される。
【０００５】
トラヒックシェーピング回路＃ｉは、フローｉごとに予め設定された条件（出力レート等）に基づいて、フローｉに個別のバケット値レジスタ＃ｉが保持しているフローｉのバケット値Ｂｔ＃ｉを管理する。
また、トラヒックシェーピング回路＃ｉは、フレームバッファ♯ｉの先頭に位置する先頭フレームの先頭フレーム長Ｌ＃ｉとバケット値Ｂｔ＃ｉとに基づいて、先頭フレームの出力可否（出力または保留）を判定し、出力可否判定結果＃ｉを出力する。
【０００６】
フレーム読出制御回路は、フローｉごとの出力可否判定結果＃ｉに基づいて、出力可であるいずれかのフローｉのトラヒックシェーピング回路＃ｉに、フレーム読出要求＃ｉを出力する。
トラヒックシェーピング回路＃ｉは、フレーム読出要求♯ｉの受信に応じて、フレームバッファ♯ｉから先頭フレーム＃ｉを読み出してフレーム読出制御回路へ出力し、フレーム長キュー♯ｉでフレーム長の順位を繰り上げ、シェーピング処理回路♯ｉでバケット値レジスタ＃ｉのバケット値Ｂｔ♯ｉから先頭フレーム長分を減算して更新する。
【０００７】
図１４は、従来のシェーピング処理を示す説明図である。図１５は、従来のシェーピング処理に応じたバケット値の変化を示すタイムチャートである。図１４に示すように、フローごとに備えられたトラヒックシェーピング回路＃ｉのシェーピング処理回路＃ｉ（ｉは１〜Ｎの整数）は、予め設定されている一定の出力レートに基づいて、バケット値の上限であるバケットサイズを超えない範囲で、クロックサイクルごとにバケット値を加算することにより、トークンバケットにトークンを追加する。
【０００８】
分類回路での分類結果（フロー番号ｉ）に基づいて振り分け回路によりトラヒックシェーピング回路＃ｉを選択する。選択されたトラヒックシェーピング回路＃ｉのシェーピング処理回路＃ｉは、読出制御回路からのフレーム読出要求に応じて、バケット値と先頭フレームの先頭フレーム長とを比較し、フレームバッファ♯ｉの先頭フレーム＃ｉに関する出力可否を判定する。
【０００９】
比較の結果、先頭フレーム長≦バケット値であり、先頭フレーム長分のトークンがトークンバケットにあれば、出力可（ＹＥＳ）と判定して、フレームバッファ♯ｉから先頭フレーム＃ｉを出力し、先頭フレーム長分だけバケット値を減算する。
一方、先頭フレーム長＞バケット値であり、先頭フレーム長分のトークンがトークンバケットになければ、出力不可（ＮＯ）と判定して、フレームバッファ♯ｉで先頭フレーム＃ｉを保持し続けるとともに、バケット値も減算しない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−１８３８８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
図１６は、従来のパケット（フレーム）出力可否判定を示す説明図である。前述した特許文献１によれば、パケットの出力可否を判定する際、比較部でパケットサイズＬと比較されるトークン量ＴＣＢは、パケット到着時に記憶した到着時刻ｐＴ、ｐＴにおけるトークンバケットカウンタ値ｐＴＢＣ、現在の時刻Ｔ、加算レートｒ、およびバケットサイズｂに基づいて計算している。
【００１２】
このように、特許文献１によれば、これらパラメータｐＴ，ｐＴＢＣ，ｂ，ｒをフローごとにメモリで記憶する必要がある。したがって、フロー数が少ない場合にはメモリサイズも小さくて済むが、より多くのフロー数に対応するためには、メモリサイズを増大する必要がある。このため、トラヒックシェーピング回路のハードウェア規模が増大し、実装面積さらにはコストが増大するという問題点があった。
【００１３】
本発明はこのような課題を解決するためのものであり、ハードウェア規模を低減できるトラヒックシェーピング回路技術を提供することを目的としている。
【課題を解決するための手段】
【００１４】
このような目的を達成するために、本発明にかかるフレーム通信装置は、入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置であって、前記フローｉごとに個別に設けられて、前記フローｉに振り分けられた入力フレームとフレーム長を、それぞれ先入れ先出し方式のフレームバッファ＃ｉとフレーム長キュー＃ｉで一時的に記憶する、Ｎ個のフレーム記憶回路と、前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する前記フレーム長キュー＃ｉの先頭に位置する先頭フレーム長に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定し、前記フローｉに関する出力可否判定結果を出力するトラヒックシェーピング回路と、前記トラヒックシェーピング回路に対して出力可否判定開始指示を出力し、これに応じて前記トラヒックシェーピング回路から出力された前記フローｉに関する出力可否判定結果に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉから前記先頭フレームを読み出して出力する読出制御回路とを備えている。
【００１５】
これに加えて、前記トラヒックシェーピング回路は、前記フローｉごとに設けられたバケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように、前記バケット値Ｂｔ＃ｉの加算更新を指示する加算タイミングＴａ＃ｉを、一定の加算周期Ｔｍでそれぞれ出力するタイマ回路と、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、前記出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備えている。
【００１６】
さらに、前記シェーピング処理回路は、前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有している。
【００１７】
また、本発明にかかる他のフレーム通信装置は、入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置であって、前記フローｉごとに個別に設けられて、前記フローｉに振り分けられた入力フレームとフレーム長を、それぞれ先入れ先出し方式のフレームバッファ＃ｉとフレーム長キュー＃ｉで一時的に記憶する、Ｎ個のフレーム記憶回路と、前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する前記フレーム長キュー＃ｉの先頭に位置する先頭フレーム長に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定し、前記フローｉに関する出力可否判定結果を出力するトラヒックシェーピング回路と、前記トラヒックシェーピング回路に対して出力可否判定開始指示を出力し、これに応じて前記トラヒックシェーピング回路から出力された前記フローｉに関する出力可否判定結果に基づいて、前記フローｉと対応する前記フレームバッファ＃ｉから前記先頭フレームを読み出して出力する読出制御回路とを備えている。
【００１８】
これに加えて、前記トラヒックシェーピング回路は、前記フローｉごとに設けられたバケット＃ｉのうち、基準となる基準バケット＃Ｓのバケット値Ｂｔ＃Ｓを加算更新する加算タイミングＴａ＃Ｓを、一定の加算周期Ｔｍで出力するタイマ回路と、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、前記加算タイミングＴａ＃Ｓを基準として、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように計時した、前記バケット＃ｉのそれぞれに関する加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、前記出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備えている。
【００１９】
さらに、前記シェーピング処理回路は、前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有し、前記増分計算部は、前記加算タイミングＴａ＃Ｓから前記加算タイミングＴａ＃ｉまでの加算更新前期間に、前記判定タイミングが到来した場合、前記バケット値増分ΔＢ＃ｉを前記トークン加算量Ｒｔ＃ｉ×Ｔｍだけ加算するようにしたものである。
【００２０】
また、本発明にかかる上記フレーム通信装置の一構成例は、前記トラヒックシェーピング回路が、前記バケットの特性を示すプロファイルを、それぞれ固有のＩＤと対応させて記憶するプロファイルメモリ回路をさらに備え、前記バケット値メモリ回路は、前記バケット値ごとに、対応するバケットに適用するプロファイルを示すＩＤを記憶し、前記シェーピング処理回路は、前記判定タイミングの到来に応じて、前記バケット値メモリ回路からバケット＃ｉのＩＤを取得し、前記プロファイルメモリ回路から前記ＩＤに基づき取得したプロファイルに基づいて、前記バケット値Ｂｔ＃ｉの加算更新および前記先頭フレームの出力可否判定を行うようにしたものである。
【００２１】
また、本発明にかかるトラヒックシェーピング回路は、入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置で用いられて、前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する先入れ先出し方式のフレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定するトラヒックシェーピング回路であって、前記フローｉごとに設けられたバケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように、前記バケット値Ｂｔ＃ｉの加算更新を指示する加算タイミングＴａ＃ｉを、一定の加算周期Ｔｍでそれぞれ出力するタイマ回路と、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、前記出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備えている。
【００２２】
これに加えて、前記シェーピング処理回路は、前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有している。
【００２３】
また、本発明にかかる他のトラヒックシェーピング回路は、入力フレームに関する出力レートを、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに制限するフレーム通信装置で用いられて、前記フローに共通して設けられて、前記フローｉごとに、トークンバケット方式で、前記フローｉと対応する先入れ先出し方式のフレームバッファ＃ｉの先頭に位置する先頭フレームに関する出力可否を判定するトラヒックシェーピング回路であって、前記フローｉごとに設けられたバケット＃ｉのうち、基準となる基準バケット＃Ｓのバケット値Ｂｔ＃Ｓを加算更新する加算タイミングＴａ＃Ｓを、一定の加算周期Ｔｍで出力するタイマ回路と、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉを、それぞれ対応する記憶領域で記憶するバケット値メモリ回路と、前記加算タイミングＴａ＃Ｓを基準として、前記バケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように計時した、前記バケット＃ｉのそれぞれに関する加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路の対応するバケット値Ｂｔ＃ｉを加算更新するとともに、前記出力可否判定開始指示に応じて、前記バケット値メモリ回路から取得した、前記フローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉに基づいて、前記先頭フレームの出力可否を判定するシェーピング処理回路とを備えている。
【００２４】
これに加えて、前記シェーピング処理回路は、前記加算タイミングＴａ＃ｉに応じて、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに、前記フローｉに関するトークンレートＲｔ＃ｉから計算した前記加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、前記バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新するトークン加算処理部と、前記出力可否判定開始指示に応じて、直前の加算タイミングＴａ＃ｉから前記出力可否の判定タイミングまでの経過期間の経過期間長Ｔｐに前記トークンレートＲｔ＃ｉを乗算することにより、前記経過期間に増加したバケット値増分ΔＢ＃ｉを計算する増分計算部と、前記バケット値メモリ回路のバケット値Ｂｔ＃ｉに前記バケット値増分ΔＢ＃ｉを、前記バケットサイズＢｓ＃ｉを超えない範囲で加算することにより、前記判定タイミングにおける暫定バケット値Ｂｄ＃ｉを計算した後、前記先頭フレーム長Ｌ＃ｉと比較することにより、前記先頭フレームの出力可否を判定するフレーム判定部と、前記先頭フレームに対して出力可と判定された場合、前記暫定バケット値Ｂｄ＃ｉから前記先頭フレーム長Ｌ＃ｉと前記バケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算して前記バケット値メモリ回路に更新記録するバケット値更新部とを有し、前記増分計算部は、前記加算タイミングＴａ＃Ｓから前記加算タイミングＴａ＃ｉまでの加算更新前期間に、前記判定タイミングが到来した場合、前記バケット値増分ΔＢ＃ｉを前記トークン加算量Ｒｔ＃ｉ×Ｔｍだけ加算するようにしたものである。
【発明の効果】
【００２５】
本発明によれば、各フローに共通したトラヒックシェーピング回路において、各フローに関するバケット値の加算更新処理が時分割で実行されるため、これらバケット値を各フローに共通する１つのバケット値メモリ回路で記憶することができる。このため、トラヒックシェーピング回路で必要となる実装面積を削減でき、ハードウェア規模の低減によりコストを削減することが可能となる。
【図面の簡単な説明】
【００２６】
【図１】第１の実施の形態にかかるフレーム通信装置の構成を示すブロック図である。
【図２】第１の実施の形態にかかるトラヒックシェーピング回路の構成を示すブロック図である。
【図３】バケット値メモリ回路での記憶例である。
【図４】第１の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（アップカウンタの場合）である。
【図５】第１の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（ダウンカウンタの場合）である。
【図６】第１の実施の形態にかかるシェーピング処理に応じたバケット値の変化を示すタイミングチャートである。
【図７】第２の実施の形態にかかるトラヒックシェーピング回路の構成を示すブロック図である。
【図８】第２の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（アップカウンタの場合）である。
【図９】第２の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（ダウンカウンタの場合）である。
【図１０】第２の実施の形態にかかるシェーピング処理に応じたバケット値の変化（出力可否判定タイミング：加算更新後期間）を示すタイミングチャートである。
【図１１】第２の実施の形態にかかるシェーピング処理に応じたバケット値の変化（出力可否判定タイミング：加算更新前期間）を示すタイミングチャートである。
【図１２】第３の実施の形態にかかるトラヒックシェーピング回路の構成を示すブロック図である。
【図１３】従来のフレーム通信装置の構成例である。
【図１４】従来のシェーピング処理を示す説明図である。
【図１５】従来のシェーピング処理に応じたバケット値の変化を示すタイムチャートである。
【図１６】従来のパケット（フレーム）出力可否判定を示す説明図である。
【発明を実施するための形態】
【００２７】
次に、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
まず、図１および図２を参照して、本発明の第１の実施の形態にかかるトラヒックシェーピング回路について説明する。図１は、第１の実施の形態にかかるフレーム通信装置の構成を示すブロック図である。図２は、第１の実施の形態にかかるトラヒックシェーピング回路の構成を示すブロック図である。
【００２８】
このフレーム通信装置１は、データ通信網を構成する通信装置の１つであり、トラヒックシェーピング回路１０を用いて、トークンバケット方式に基づいて、Ｎ（Ｎは２以上の整数）個のフローｉ（ｉ＝１〜Ｎの整数）ごとに、入力フレームに関する出力レートを制限して平滑化する装置である。
【００２９】
［フレーム通信装置］
フレーム通信装置１には、図２に示すように、主な回路部として、分類回路２、振り分け回路３、フレーム記憶回路４、読出制御回路５、およびトラヒックシェーピング回路１０が設けられている。
分類回路２は、入力フレームをＮ個のフローのいずれかに分類し、入力フレームとともに分類結果（フロー番号ｉ）を出力する機能を有している。
振り分け回路３は、分類回路２からの分類結果に基づいて、入力フレームと入力フレームのフレーム長とを、対応するフローのトラヒックシェーピング回路＃ｉに振り分ける機能を有している。
フレーム記憶回路（＃１，＃２，…，＃ｉ，…，＃Ｎ）４は、フローｉごとに設けられて、振り分け回路３から振り分けられた入力フレームとフレーム長を、それぞれフレームバッファ＃ｉとフレーム長キュー＃ｉで一時的に記憶する機能を有している。これらフレームバッファ＃ｉとフレーム長キュー＃ｉは、先入れ先出し方式で動作する。
【００３０】
読出制御回路５は、トラヒックシェーピング回路１０から出力された、フローｉに関する出力可否判定結果＃ｉが出力可を示す場合、フローｉと対応するフレーム記憶回路＃ｉにフレーム読出要求＃ｉを出力することにより、フレーム記憶回路＃ｉからフレームバッファ＃ｉの先頭に位置する先頭フレーム＃ｉを読み出して、出力フレームとして後段へ出力する機能と、フレーム記憶回路＃ｉからフレーム長キュー＃ｉの先頭に位置する先頭フレーム長＃ｉを無効にして、フレーム長キュー＃ｉの2番目に位置していたフレーム長を先頭フレーム長＃ｉとする機能と、フレームの読み出しがない期間に出力可否判定開始指示をトラヒックシェーピング回路１０へ出力する機能とを有している。
【００３１】
［トラヒックシェーピング回路］
トラヒックシェーピング回路１０には、図１に示すように、主な回路部として、バケット値メモリ回路１１、タイマ回路１２、およびシェーピング処理回路１４が設けられている。
【００３２】
バケット値メモリ回路１１は、各バケットに関するバケット値を、それぞれ対応する記憶領域で記憶するメモリ回路である。
図３は、バケット値メモリ回路での記憶例である。ここでは、バケットｉごとに、バケット値Ｂｔ＃ｉ、バケットサイズＢｓ＃ｉ、トークンレートＲｔ＃ｉ、およびトークン加算量Ｒｔ＃ｉ×Ｔｍがそれぞれ記憶されている。
【００３３】
タイマ回路１２は、フローｉごとにバケットタイマ＃ｉを有し、フローｉごとに設けられたバケット＃ｉに関するバケット値Ｂｔ＃ｉの加算更新が互いに重複することなく順次実行されるように、バケット値Ｂｔ＃ｉの加算更新を指示する加算タイミングＴａ＃ｉを、バケットタイマ＃ｉから一定の加算周期Ｔｍでそれぞれシェーピング処理回路１４へ出力する機能を有している。
【００３４】
トークンバケット方式では、前述したように、フローｉに対して予め設定されたトークンレートＲｔ＃ｉに基づいて、単位時間当たりで一定数のトークンがバケットに追加される。バケット値Ｂｔ＃ｉは、バケット＃ｉに溜められているトークン量を示す値である。本実施の形態では、タイマ回路１２において、バケット＃ｉごとに個別のバケットタイマ＃ｉを設け、各バケット値Ｂｔ＃ｉの加算更新を実行する加算タイミングＴａ＃ｉを生成している。
【００３５】
図４は、第１の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（アップカウンタの場合）である。図５は、第１の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（ダウンカウンタの場合）である。
バケット＃１，＃２，…，＃Ｎ関するバケットタイマ＃１，＃２，…，＃Ｎの値は、処理時間長Ｔｗだけ順にずらして、一定の加算周期Ｔｍで繰り返しカウントされる。この際、図３のようにアップカウンタを用いてもよく、図４のようにダウンカウンタを用いてもよい。
【００３６】
バケット＃１，＃２，…，＃Ｎに関する加算タイミングＴａ＃１，＃２，…，＃Ｎは、バケットタイマ＃１，＃２，…，＃Ｎの満了時で、処理時間長Ｔｗだけ順にずらして、一定の加算周期Ｔｍで繰り返し出力される。Ｔｗは、１つのバケット値Ｂｔを加算更新する処理に要する処理時間長を示している。Ｔｍは、Ｎ個すべてのバケット値Ｂｔの加算更新に要する加算周期を示しており、Ｎ×Ｔｗ分より長い時間長を持つ。これにより、バケット値メモリ回路１１で記憶している各バケット値ＢｔがＢｔ＃１から順にＢｔ＃Ｎまで加算更新され、これが加算周期Ｔｍで繰り返し実行されることになる。
【００３７】
［シェーピング処理回路］
シェーピング処理回路１４は、加算タイミングＴａ＃１，＃２，…，＃Ｎのそれぞれに応じて、バケット値メモリ回路１１の対応するバケット値Ｂｔ＃１，＃２，…，＃Ｎを加算更新する機能と、読出制御回路５からの出力可否判定開始指示に応じて、バケット値メモリ回路１１から取得した、先頭フレームのフローｉと対応するバケット＃ｉのバケット値Ｂｔ＃ｉと、フローｉと対応するフレーム記憶回路＃ｉから出力された、フレーム長キュー＃ｉの先頭に位置する先頭フレーム長Ｌ＃ｉとに基づいて、フレーム記憶回路＃ｉに記憶されているフローｉの先頭フレームに関する出力可否を判定し、出力可否判定結果を読出制御回路５に出力する機能とを有している。
【００３８】
シェーピング処理回路１４には、主な回路部として、トークン加算処理部１４Ａ、増分計算部１４Ｂ、フレーム判定部１４Ｃ、バケット値更新部１４Ｄ、およびフロー選択部１４Ｅが設けられている。
【００３９】
トークン加算処理部１４Ａ、タイマ回路１２からの加算タイミングＴａ＃ｉに応じて、バケット値メモリ回路１１から取得したバケット値Ｂｔ＃ｉに、フローｉに対して予め設定されているトークンレートＲｔ＃ｉから計算した加算周期Ｔｍ分のトークン加算量Ｒｔ＃ｉ×Ｔｍを、バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で一括して加算更新する機能を有している。この際、バケット値Ｂｔ＃ｉは、予め設定されているバケットサイズＢｓ＃ｉが上限値となるため、加算更新時において、例えばＢｔ＃ｉ＋Ｒｔ＃ｉ×ＴｍとＢｓ＃ｉのうち小さいほうの値を選択して加算更新すればよい。
【００４０】
増分計算部１４Ｂは、読出制御回路５からの出力可否判定開始指示に応じて、フローｉに関する直前の加算タイミングＴａ＃ｉから出力可否判定タイミングＴｄまでの経過期間の経過期間長Ｔｐに、トークンレートＲｔ＃ｉを乗算することにより、直前の加算タイミングＴａ＃ｉから出力可否判定タイミングＴｄ＃ｉまでの間に増加したバケット値増分ΔＢ＃ｉを計算する機能を有している。
【００４１】
フレーム判定部１４Ｃは、バケット値メモリ回路１１のバケット値Ｂｔ＃ｉにバケット値増分ΔＢ＃ｉを、バケット値Ｂｔ＃ｉの上限であるバケットサイズＢｓ＃ｉを超えない範囲で加算することにより、出力可否判定タイミングＴｄにおける暫定バケット値Ｂｄ＃ｉを計算する機能と、得られた暫定バケット値Ｂｄ＃ｉを先頭フレーム長Ｌ＃ｉと比較することにより、先頭フレームの出力可否を判定する機能と、得られた出力可否判定結果を読出制御回路５へ出力する機能とを有している。この際、バケット値Ｂｔ＃ｉは、予め設定されているバケットサイズＢｓ＃ｉが上限値となるため、加算更新時において、例えばＢｔ＃ｉ＋Ｒｔ＃ｉ×ＴｍとＢｓ＃ｉのうち小さいほうの値を選択して暫定加算更新すればよい。
【００４２】
バケット値更新部１４Ｄは、フレーム判定部１４Ｃにより先頭フレームに対して出力可と判定された場合、暫定バケット値Ｂｄ＃ｉから先頭フレーム長Ｌ＃ｉとバケット値増分ΔＢ＃ｉとを減算することにより、新たなバケット値Ｂｔ＃ｉを計算してバケット値メモリ回路１１に更新記録する機能を有している。
【００４３】
フロー選択部１４Ｅは、読出制御回路５から出力された出力可否判定開始指示に応じて、フローｉを所定の順で選択し、フローｉと対応するフレーム記憶回路＃ｉから出力された先頭フレーム長Ｌ＃ｉを選択して、トークン加算処理部１４Ａ、増分計算部１４Ｂ、フレーム判定部１４Ｃ、およびバケット値更新部１４Ｄへ出力する機能を有している。フローｉの選択順については、例えば、フロー番号が小さい順や予め設定されているフローの優先度に基づく選択順を用いればよい。
【００４４】
［第１の実施の形態の動作］
次に、図６を参照して、本実施の形態にかかるトラヒックシェーピング回路１０の動作について説明する。図６は、第１の実施の形態にかかるシェーピング処理に応じたバケット値の変化を示すタイミングチャートである。
ここでは、フロー＃ｉの先頭フレーム＃ｉに対するシェーピング処理のみに注目して説明するものとし、バケット値Ｂｔ＃ｉ、暫定バケット値Ｂｄ＃ｉ、バケットサイズＢｓ＃ｉ、およびトークンレートＲｔ＃ｉを省略して単にＢｔ，Ｂｄ，Ｂｓ，Ｒｔと表すものとする。
【００４５】
トラヒックシェーピング回路１０のシェーピング処理回路１４は、基本的には、図６に示された□印、△印、○印のタイミングにおいて、次のような演算処理を実行する。まず、□印のタイミングでは、Ｂｔ＋Ｒｔ×Ｔｍの計算結果を新たなＢｔ（加算時）としてバケット値メモリ回路１１を更新する。一方、△印のタイミングでは、Ｂｔ＋バケット値増分ΔＢの計算結果とＢｓのうち小さい方をＢｄとする。また、○印のタイミングでは、Ｂｄ−先頭フレーム長Ｌ＃ｉ−バケット値増分ΔＢの計算結果を新たなＢｔ’（出力可時）としてバケット値メモリ回路１１を更新する。なお、ΔＢはＲｔ×経過期間長Ｔｐで求められる。
【００４６】
まず、時刻Ｔ１における加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ０を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ１でバケット値メモリ回路１１を更新する。これにより、加算タイミングＴａ＃ｉごとに、バケット値Ｂｔを、実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致させることができる。なお、図６の例では、時刻Ｔ１以前のバケット値Ｂｔ０がバケットサイズＢｓに達しているため、時刻Ｔ１におけるバケット値Ｂｔ１もＢｓと等しい値となる。
【００４７】
その後、時刻Ｔｄ１に出力可否判定開始指示が入力された場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃ｉである時刻Ｔ１から時刻Ｔｄ１までの経過期間長Ｔｐ１に、トークンレートＲｔを乗算することにより、時刻Ｔ１から時刻Ｔｄ１までの間に増加したバケット値増分ΔＢ１を計算する。
【００４８】
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ１に、増分計算部１４Ｂで計算したバケット値増分ΔＢ１を加算することにより、時刻Ｔｄ１における暫定バケット値Ｂｄ１を計算し、先頭フレーム長Ｌ＃ｉ１と比較する。これにより、加算タイミングＴａ＃ｉの時刻Ｔ１とは異なる時刻Ｔｄ１であっても、実際のトークン量Ｔｋと一致した暫定バケット値Ｂｄ１に基づいて、先頭フレームの出力可否を正確に判定することができる。
【００４９】
ここで、図６の例では、バケット値Ｂｔ１がバケットサイズＢｓに達していることから、暫定バケット値Ｂｄ１もＢｓと等しくなるが、Ｂｄ１＞Ｌ＃ｉ１であることから、フレーム判定部１４Ｃは先頭フレームに対して出力可と判定する。
また、バケット値更新部１４Ｄは、フレーム判定部１４Ｃでの出力可判定に応じて、暫定バケット値Ｂｄ１から先頭フレーム長Ｌ＃ｉ１とバケット値増分ΔＢ１とを減算することにより、バケット＃ｉの新たなバケット値Ｂｔ１’を計算してバケット値メモリ回路１１に更新記録する。
【００５０】
その後、時刻Ｔ２における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ１’を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ２でバケット値メモリ回路１１を更新する。この際、時刻Ｔｄ１において、バケット値更新部１４Ｄにより、バケット値増分ΔＢ１でバケット値Ｂｔ１’が補正されているため、時刻Ｔ２において、バケット値に加算周期Ｔｍ分のトークン加算量Ｒｔ×Ｔｍを一括して加算した時点で、バケット値Ｂｔ２を実際のトークン量Ｔｋと一致させることができる。
【００５１】
次に、時刻Ｔｄ２において出力可否判定開始指示が入力された場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃ｉである時刻Ｔ２から時刻Ｔｄ２までの経過期間長Ｔｐ２に、トークンレートＲｔを乗算することにより、時刻Ｔ２から時刻Ｔｄ２までの間に増加したバケット値増分ΔＢ２（＝Ｒｔ×Ｔｐ２）を計算する。
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値ＢＴ２に、増分計算部１４Ｂで計算したバケット値増分ΔＢ２を加算することにより、時刻Ｔｄ２における暫定バケット値Ｂｄ２を計算し、先頭フレーム長Ｌ＃ｉ２と比較する。
ここで、図６の例では、Ｂｄ２＜Ｌ＃ｉ２であることから、フレーム判定部１４Ｃは先頭フレーム＃ｉ２に対して出力不可と判定する。
また、バケット値の更新は行わない。この後の時刻Ｔｄ４も同様である。
【００５２】
続く、時刻Ｔ３における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ２を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ３でバケット値メモリ回路１１を更新する。これにより、時刻Ｔ３において、バケット値Ｂｔ３が実際のトークン量Ｔｋと一致することになる。
【００５３】
その後、時刻Ｔｄ３に出力可否判定開始指示が入力された場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃ｉである時刻Ｔ３から時刻Ｔｄ３までの経過期間長Ｔｐ３に、トークンレートＲｔを乗算することにより、時刻Ｔ３から時刻Ｔｄ３までの間に増加したバケット値増分ΔＢ３を計算する。
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ３に、増分計算部１４Ｂで計算したバケット値増分ΔＢ３を加算することにより、時刻Ｔｄ３における暫定バケット値Ｂｄ３を計算し、先頭フレーム長Ｌ＃ｉ２と比較する。
【００５４】
ここで、図６の例では、Ｂｄ３＞Ｌ＃ｉ２であることから、フレーム判定部１４Ｃは先頭フレーム＃ｉ２に対して出力可と判定する。
また、バケット値更新部１４Ｄは、フレーム判定部１４Ｃでの出力可判定に応じて、暫定バケット値Ｂｄ３から先頭フレーム長Ｌ＃ｉ２とバケット値増分ΔＢ３とを減算することにより、バケット＃ｉの新たなバケット値Ｂｔ３’を計算してバケット値メモリ回路１１に更新記録する。
【００５５】
続く、時刻Ｔ４における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ３’を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ４でバケット値メモリ回路１１を更新する。これにより、時刻Ｔ４において、バケット値Ｂｔ４が実際のトークン量Ｔｋと一致することになる。
【００５６】
［第１の実施の形態の効果］
このように、本実施の形態は、フローｉごとにフレームバッファ＃ｉとフレーム長キュー＃ｉとを有するフレーム記憶回路＃ｉを設けるとともに、フローｉに共通してトラヒックシェーピング回路１０を設け、トラヒックシェーピング回路１０により、トークンバケット方式に基づいて、各フローｉの入力フレームに関する出力レートを制限して平滑化するようにしたものである。
【００５７】
これに加えて、トラヒックシェーピング回路１０のシェーピング処理回路１４において、トークン加算処理部１４Ａが、システムクロックなどの最小時間単位よりも周期が長い、バケット＃ｉごとに固有の加算タイミングＴａ＃ｉで、バケット値メモリ回路１１のバケット値Ｂｔ＃ｉをＲｔ＃ｉ×Ｔｍだけ一括して加算更新し、増分計算部１４Ｂが、直前加算タイミングＴａ＃ｉから出力可否判定タイミングＴｄまでの経過期間長Ｔｐに増加したバケット値増分ΔＢ＃ｉを計算し、フレーム判定部１４Ｃが、ΔＢ＃ｉから計算した暫定バケット値Ｂｄ＃ｉと先頭フレーム長Ｌ＃ｉと比較して出力可否を判定し、バケット値更新部１４Ｄが、出力可判定に応じて、Ｂｄ＃ｉからＬ＃ｉとΔＢ＃ｉとを減算して得たＢｔ＃ｉをバケット値メモリ回路１１に更新記録するようにしたものである。
【００５８】
これにより、フローｉに共通したトラヒックシェーピング回路１０において、各フローｉに関するバケット値の加算更新処理が時分割で実行されるため、これらバケット値を各フローｉに共通する１つのバケット値メモリ回路１１で記憶することができる。このため、トラヒックシェーピング回路１０で必要となる実装面積を削減でき、ハードウェア規模の低減によりコストを削減することが可能となる。
【００５９】
この際、バケット値の加算更新を時分割処理した場合、バケット値を逐次加算更新できないため、加算タイミングＴａごとに、加算タイミング間隔に相当する加算周期Ｔｍ分のトークン加算量Ｒｔ×Ｔｍを一括してバケット値Ｂｔに加算するようにしたものである。ここで、トークン加算量Ｒｔ＃ｉと加算周期Ｔｍが定数なので、Ｒｔ＃ｉ×Ｔｍも定数である。これにより、加算タイミングＴａごとに、バケット値Ｂｔを、実際にバケットに溜められているべきトークン量Ｔｋと一致させることができる。
【００６０】
また、出力可否判定時には、直前の加算タイミングＴａから出力可否判定タイミングＴｄまでの経過期間長Ｔｐ分のトークン量に相当するバケット値増分ΔＢを、バケット値Ｂｔに加算して暫定バケット値Ｂｄを計算し、この暫定バケット値Ｂｄと先頭フレーム長Ｌ＃ｉとを比較して、出力可否判定を行うようにしたものである。これにより、加算タイミングＴａとは異なる出力可否判定タイミングＴｄであっても、実際のトークン量Ｔｋと一致した暫定バケット値Ｂｄに基づいて、先頭フレームの出力可否を正確に判定することができる。
【００６１】
さらに、出力可の判定に応じてバケット値Ｂｔを更新する場合には、暫定バケット値Ｂｄから先頭フレーム長Ｌ＃ｉを減算した後、さらにバケット値増分ΔＢを減算することにより、バケット値を補正しておくようにしたものである。これにより、次回の加算タイミングＴａにおいて、加算周期Ｔｍ分のトークン加算量Ｒｔ×Ｔｍを加算した時点で、バケット値Ｂｔを実際のトークン量Ｔｋと一致させることができる。
【００６２】
［第２の実施の形態］
次に、図７を参照して、本発明の第２の実施の形態にかかるトラヒックシェーピング回路１０について説明する。図７は、第２の実施の形態にかかるトラヒックシェーピング回路の構成を示すブロック図である。
【００６３】
第１の実施の形態では、タイマ回路１２に各フロー＃１，＃２，…，＃Ｎに対応するバケットタイマ＃１，＃２，…，＃Ｎを設けて、フロー＃ｉごとに個別の加算タイミングＴａ＃ｉを出力する場合を例として説明した。本実施の形態では、タイマ回路１２に１つのバケットタイマ＃Ｓを設け、バケット＃１，＃２，…，＃Ｎのうち、基準となる基準バケット＃Ｓの加算タイミングＴａ＃Ｓを出力し、シェーピング処理回路１４が、この加算タイミングＴａ＃Ｓに基づき、各バケット＃ｉの加算タイミングＴａ＃ｉを内部で計時する場合について説明する。
【００６４】
図８は、第２の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（アップカウンタの場合）である。図９は、第２の実施の形態にかかるバケットタイマの値と加算タイミングを示すタイミングチャート（ダウンカウンタの場合）である。
基準バケット＃Ｓ（Ｓ＝１）に関する加算タイミングＴａ＃Ｓは、バケットタイマ＃Ｓの満了時で、一定の加算周期Ｔｍで繰り返し出力される。バケット＃１，＃２，…，＃Ｎに関する加算タイミングＴａ＃１，＃２，…，＃Ｎは、加算タイミングＴａ＃Ｓからの経過期間長がＴｗ×（１−１），Ｔｗ×（２−１），…，Ｔｗ×（Ｎ−１）になる時で、処理時間長Ｔｗだけ順にずらして一定の加算周期Ｔｍで繰り返される。
【００６５】
加算タイミングＴａ＃Ｓからの経過期間長は、図８のようにバケットタイマがアップカウンタの場合はバケットタイマ＃Ｓの現在値、図９のようにダウンカウンタの場合はバケットタイマ＃Ｓの現在値と最大値Ｔｍの差分である。シェーピング処理回路１４は、加算タイミングＴａ＃Ｓを基準として、各バケット＃ｉの加算タイミングＴａ＃ｉを内部で計時する。したがって、タイマ回路１２に関する実装面積を削減することができる。
【００６６】
なお、Ｔｗは、１つのバケット値Ｂｔを加算更新する処理に要する処理時間長を示している。Ｔｍは、Ｎ個すべてのバケット値Ｂｔの加算更新に要する処理時間長を示しており、Ｎ×Ｔｗ分より長い時間長を持つ。これにより、バケット値メモリ回路１１で記憶している各バケット値ＢｔがＢｔ＃１から順にＢｔ＃Ｎまで加算更新され、これが加算周期Ｔｍで繰り返し実行されることになる。
【００６７】
第１の実施の形態では、出力可否判定時、直前の加算タイミングＴａから出力可否判定タイミングＴｄまでの経過期間長Ｔｐを計時して、トークンレートＲｔ＃ｉを乗算することにより、バケット値増分ΔＢ＃ｉを計算している。この経過期間長Ｔｐは、バケットタイマがアップカウンタの場合はバケットタイマ＃Ｓの現在値、ダウンカウンタの場合はバケットタイマ＃Ｓの現在値と最大値Ｔｍの差分である。
【００６８】
しかし、本実施の形態にかかる上記構成を採用した場合、シェーピング処理回路１４には加算タイミングＴａ＃Ｓしか入力されないため、外部からの入力信号をトリガとして経過期間長Ｔｐを計時する場合には、いずれのバケット＃ｉにおいても、経過期間長Ｔｐの計時を開始するタイミングが加算タイミングＴａ＃Ｓに限定されることになる。このため、経過期間長Ｔｐの計時開始タイミング、すなわち加算タイミングＴａ＃Ｓから、実際にバケット値＃ｉが加算更新される加算タイミングＴａ＃ｉまでの期間は、バケット値メモリ回路１１のバケット値Ｂｔ＃ｉが加算更新されていないことになる。
【００６９】
したがって、バケット値Ｂｔ＃ｉが加算更新されていない期間においては、先頭フレームに対する正確な出力可否判定ができなくなる。
本実施の形態では、このようなケースを回避するため、増分計算部１４Ｂにおいて、加算タイミングＴａ＃Ｓから加算タイミングＴａ＃ｉまでの加算更新前期間については、バケット値増分ΔＢ＃ｉをトークン加算量Ｒｔ＃ｉ×Ｔｍだけ加算するようにしたものである。
【００７０】
［第２の実施の形態の動作］
次に、図１０および図１１を参照して、本実施の形態にかかるトラヒックシェーピング回路１０の動作について説明する。図１０は、第２の実施の形態にかかるシェーピング処理に応じたバケット値の変化（出力可否判定タイミング：加算更新後期間）を示すタイミングチャートである。図１１は、第２の実施の形態にかかるシェーピング処理に応じたバケット値の変化（出力可否判定タイミング：加算更新前期間）を示すタイミングチャートである。
以下では、出力可否判定タイミングが、加算更新後期間である場合と加算更新前期間である場合に分けて説明する。
【００７１】
［出力可否判定タイミングが加算更新後期間である場合］
まず、図１０を参照して、加算タイミングＴａ＃ｉから次の加算タイミングＴａ＃Ｓまでの加算更新後期間にフレームが入力された場合の動作について説明する。
ここでは、フロー＃ｉの先頭フレーム＃ｉに対するシェーピング処理のみに注目して説明するものとし、バケット値Ｂｔ＃ｉ、暫定バケット値Ｂｄ＃ｉ、バケットサイズＢｓ＃ｉ、およびトークンレートＲｔ＃ｉを省略して単にＢｔ，Ｂｄ，Ｂｓ，Ｒｔと表すものとする。
【００７２】
トラヒックシェーピング回路１０のシェーピング処理回路１４は、基本的には、図１０に示された□印、△印、○印のタイミングにおいて、次のような演算処理を実行する。まず、□印のタイミングでは、Ｂｔ＋Ｒｔ×Ｔｍの計算結果を新たなＢｔ（加算時）としてバケット値メモリ回路１１を更新する。一方、△印のタイミングでは、Ｂｔ＋バケット値増分ΔＢの計算結果とＢｓのうち小さい方をＢｄとする。また、○印のタイミングでは、Ｂｄ−先頭フレーム長Ｌ＃ｉ−バケット値増分ΔＢの計算結果を新たなＢｔ’（出力可時）としてバケット値メモリ回路１１を更新する。なお、ΔＢはＲｔ×経過期間長Ｔｐで求められる。
【００７３】
まず、時刻Ｔ１Ｓに加算タイミングＴａ＃Ｓが入力された後の、時刻Ｔ１における加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ０を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ１でバケット値メモリ回路１１を更新する。これにより、加算タイミングＴａ＃ｉごとに、バケット値Ｂｔを、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致させることができる。なお、図１０の例では、時刻Ｔ１以前のバケット値Ｂｔ０がバケットサイズＢｓに達しているため、時刻Ｔ１におけるバケット値Ｂｔ１もＢｓと等しい値となる。
【００７４】
その後、時刻Ｔ１から時刻Ｔ２Ｓに加算タイミングＴａ＃Ｓが入力されるまでの加算更新後期間のうち、時刻Ｔｄ１にフロー＃ｉの出力可否判定タイミングが到来した場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃Ｓである時刻Ｔ１から時刻Ｔｄ１までの経過期間長Ｔｐ１に、トークンレートＲｔを乗算することにより、時刻Ｔ１から時刻Ｔｄ１までの間に増加したバケット値増分ΔＢ１を計算する。
【００７５】
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ１に、増分計算部１４Ｂで計算したバケット値増分ΔＢ１を加算することにより、時刻Ｔｄ１における暫定バケット値Ｂｄ１を計算し、先頭フレーム長Ｌ＃ｉと比較する。これにより、加算タイミングＴａ＃ｉの時刻Ｔ１とは異なる時刻Ｔｄ１でフレームが入力されても、実際のトークン量Ｔｋと一致した暫定バケット値Ｂｄ１に基づいて、先頭フレームの出力可否を正確に判定することができる。
【００７６】
ここで、図１０の例では、バケット値Ｂｔ１がバケットサイズＢｓに達していることから、暫定バケット値Ｂｄ１もＢｓと等しくなるが、Ｂｄ１＞Ｌ＃ｉ１であることから、フレーム判定部１４Ｃは先頭フレームに対して出力可と判定する。
また、バケット値更新部１４Ｄは、フレーム判定部１４Ｃでの出力可判定に応じて、暫定バケット値Ｂｄ１から先頭フレーム長Ｌ＃ｉ１とバケット値増分ΔＢ１とを減算することにより、バケット＃ｉの新たなバケット値Ｂｔ１’を計算してバケット値メモリ回路１１に更新記録する。
【００７７】
続いて、時刻Ｔ２Ｓに加算タイミングＴａ＃Ｓが入力された後の、時刻Ｔ２における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ１’を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ２でバケット値メモリ回路１１を更新する。この際、時刻Ｔｄ１において、バケット値更新部１４Ｄにより、バケット値増分ΔＢ１でバケット値Ｂｔ１’が補正されているため、時刻Ｔ２において、バケット値に加算周期Ｔｍ分のトークン加算量Ｒｔ×Ｔｍを一括して加算した時点で、バケット値Ｂｔ２を、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致させることができる。
【００７８】
その後、時刻Ｔ２から時刻Ｔ３Ｓに加算タイミングＴａ＃Ｓが入力されるまでの加算更新後期間のうち、時刻Ｔｄ２に出力可否判定タイミングが到来した場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃Ｓである時刻Ｔ２Ｓから時刻Ｔｄ２までの経過期間長Ｔｐ２に、トークンレートＲｔを乗算することにより、時刻Ｔ２Ｓから時刻Ｔｄ２までの間に増加したバケット値増分ΔＢ２（＝Ｒｔ×Ｔｐ２）を計算する。
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値ＢＴ２に、増分計算部１４Ｂで計算したバケット値増分ΔＢ２を加算することにより、時刻Ｔｄ２における暫定バケット値Ｂｄ２を計算し、先頭フレーム長Ｌ＃ｉ３と比較する。
ここで、図１０の例では、Ｂｄ２＜Ｌ＃ｉ２であることから、フレーム判定部１４Ｃは先頭フレームに対して出力不可と判定する。
また、バケット値の更新は行わない。この後の時刻Ｔｄ４も同様である。
【００７９】
続く、時刻Ｔ３Ｓに加算タイミングＴａ＃Ｓが入力された後の、時刻Ｔ３における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ２を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ３でバケット値メモリ回路１１を更新する。これにより、時刻Ｔ３において、バケット値Ｂｔ３が、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致することになる。
【００８０】
その後、時刻Ｔ３から時刻Ｔ４Ｓに加算タイミングＴａ＃Ｓが入力されるまでの加算更新後期間のうち、時刻Ｔｄ３に出力可否判定タイミングが到来した場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃Ｓである時刻Ｔ３Ｓから時刻Ｔｄ３までの経過期間長Ｔｐ３に、トークンレートＲｔを乗算することにより、時刻Ｔ３Ｓから時刻Ｔｄ３までの間に増加したバケット値増分ΔＢ３を計算する。
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ３に、増分計算部１４Ｂで計算したバケット値増分ΔＢ３を加算することにより、時刻Ｔｄ３における暫定バケット値Ｂｄ３を計算し、先頭フレーム長Ｌ＃ｉ３と比較する。
【００８１】
ここで、図１０の例では、Ｂｄ３＞Ｌ＃ｉ３であることから、フレーム判定部１４Ｃは先頭フレームに対して出力可と判定する。
また、バケット値更新部１４Ｄは、フレーム判定部１４Ｃでの出力可判定に応じて、暫定バケット値Ｂｄ３から先頭フレーム長Ｌ＃ｉ３とバケット値増分ΔＢ３とを減算することにより、バケット＃ｉの新たなバケット値Ｂｔ３’を計算してバケット値メモリ回路１１に更新記録する。
【００８２】
続く、時刻Ｔ４Ｓに加算タイミングＴａ＃Ｓが入力された後の、時刻Ｔ４における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ３’を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ４でバケット値メモリ回路１１を更新する。これにより、時刻Ｔ４において、バケット値Ｂｔ４が、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致することになる。
【００８３】
［出力可否判定タイミングが加算更新前期間である場合］
次に、図１１を参照して、加算タイミングＴａ＃ｉから次の加算タイミングＴａ＃Ｓまでの加算更新前期間にフレームが入力された場合の動作について説明する。
ここでは、フロー＃ｉの先頭フレームに対するシェーピング処理のみに注目して説明するものとし、バケット値Ｂｔ＃ｉ、暫定バケット値Ｂｄ＃ｉ、バケットサイズＢｓ＃ｉ、およびトークンレートＲｔ＃ｉを省略して単にＢｔ，Ｂｄ，Ｂｓ，Ｒｔと表すものとする。
【００８４】
トラヒックシェーピング回路１０のシェーピング処理回路１４は、基本的には、図１１に示された□印、△印、○印のタイミングにおいて、次のような演算処理を実行する。まず、□印のタイミングでは、Ｂｔ＋Ｒｔ×Ｔｍの計算結果を新たなＢｔ（加算時）としてバケット値メモリ回路１１を更新する。一方、△印のタイミングでは、Ｂｔ＋バケット値増分ΔＢの計算結果とＢｓのうち小さい方をＢｄとする。また、○印のタイミングでは、Ｂｄ−先頭フレーム長Ｌ＃ｉ−バケット値増分ΔＢの計算結果を新たなＢｔ’（出力可時）としてバケット値メモリ回路１１を更新する。なお、ΔＢはＲｔ×経過期間長Ｔｐで求められる。
【００８５】
まず、時刻Ｔ１Ｓに加算タイミングＴａ＃Ｓが入力された後の、時刻Ｔ１における加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ０を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ１でバケット値メモリ回路１１を更新する。これにより、加算タイミングＴａ＃ｉごとに、バケット値Ｂｔを、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致させることができる。なお、図１１の例では、時刻Ｔ１以前のバケット値Ｂｔ０がバケットサイズＢｓに達しているため、時刻Ｔ１におけるバケット値Ｂｔ１もＢｓと等しい値となる。
【００８６】
その後、時刻Ｔ２Ｓに加算タイミングＴａ＃Ｓが入力されてから、次の加算タイミングＴａ＃ｉまでの加算更新前期間のうち、時刻Ｔｄ１にフロー＃ｉの出力可否判定タイミングが到来した場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃Ｓである時刻Ｔ２Ｓから時刻Ｔｄ１までの経過期間長Ｔｐ１と加算周期Ｔｍとの和に、トークンレートＲｔを乗算することにより、時刻Ｔ１から時刻Ｔｄ１までの間に増加したバケット値増分ΔＢ１を計算する。
【００８７】
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ１に、増分計算部１４Ｂで計算したバケット値増分ΔＢ１を加算することにより、時刻Ｔｄ１における暫定バケット値Ｂｄ１を計算し、先頭フレーム長Ｌ＃ｉと比較する。これにより、加算タイミングＴａ＃ｉの時刻Ｔ１とは異なる時刻Ｔｄ１でフレームが入力されても、実際のトークン量Ｔｋと一致した暫定バケット値Ｂｄ１に基づいて、先頭フレームの出力可否を正確に判定することができる。
【００８８】
ここで、図１１の例では、バケット値Ｂｔ１がバケットサイズＢｓに達していることから、暫定バケット値Ｂｄ１もＢｓと等しくなるが、Ｂｄ１＞Ｌ＃ｉ１であることから、フレーム判定部１４Ｃは先頭フレームに対して出力可と判定する。
また、バケット値更新部１４Ｄは、フレーム判定部１４Ｃでの出力可判定に応じて、暫定バケット値Ｂｄ１から先頭フレーム長Ｌ＃ｉ１とバケット値増分ΔＢ１とを減算することにより、バケット＃ｉの新たなバケット値Ｂｔ１’を計算してバケット値メモリ回路１１に更新記録する。
【００８９】
その後、時刻Ｔ２における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ１’を、トークンレートＲｔに加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ２でバケット値メモリ回路１１を更新する。この際、時刻Ｔｄ１において、バケット値更新部１４Ｄにより、バケット値増分ΔＢ１でバケット値Ｂｔ１’が補正されているため、時刻Ｔ２において、バケット値に加算周期Ｔｍ分のトークン加算量Ｒｔ×Ｔｍを一括して加算した時点で、バケット値Ｂｔ２を、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致させることができる。
【００９０】
その後、時刻Ｔ２から時刻Ｔ３Ｓに加算タイミングＴａ＃Ｓが入力されるまでの加算更新後期間のうち、時刻Ｔｄ２に出力可否判定タイミングが到来した場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃Ｓである時刻Ｔ２Ｓから時刻Ｔｄ２までの経過期間長Ｔｐ２に、トークンレートＲｔを乗算することにより、時刻Ｔ２Ｓから時刻Ｔｄ２までの間に増加したバケット値増分ΔＢ２（＝Ｒｔ×Ｔｐ２）を計算する。
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値ＢＴ２に、増分計算部１４Ｂで計算したバケット値増分ΔＢ２を加算することにより、時刻Ｔｄ２における暫定バケット値Ｂｄ２を計算し、先頭フレーム長Ｌ＃ｉ３と比較する。
ここで、図１１の例では、Ｂｄ２＜Ｌ＃ｉ２であることから、フレーム判定部１４Ｃは先頭フレームに対して出力不可と判定する。
また、バケット値の更新は行わない。この後の時刻Ｔｄ４も同様である。
【００９１】
続く、時刻Ｔ３Ｓに加算タイミングＴａ＃Ｓが入力された後の、時刻Ｔ３における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ２を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ３でバケット値メモリ回路１１を更新する。これにより、時刻Ｔ３において、バケット値Ｂｔ３が、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致することになる。
【００９２】
その後、時刻Ｔ４Ｓに加算タイミングＴａ＃Ｓが入力されてから、次の加算タイミングＴａ＃ｉまでの加算更新前期間のうち、時刻Ｔｄ３にフロー＃ｉの出力可否判定タイミングが到来した場合、増分計算部１４Ｂは、直前の加算タイミングＴａ＃Ｓである時刻Ｔ４Ｓから時刻Ｔｄ３までの経過期間長Ｔｐ３と加算周期Ｔｍとの和に、トークンレートＲｔを乗算することにより、時刻Ｔ３Ｓから時刻Ｔｄ３までの間に増加したバケット値増分ΔＢ３を計算する。
続いて、フレーム判定部１４Ｃは、バケット＃ｉと対応するバケット値メモリ回路１１のバケット値Ｂｔ３に、増分計算部１４Ｂで計算したバケット値増分ΔＢ３を加算することにより、時刻Ｔｄ３における暫定バケット値Ｂｄ３を計算し、先頭フレーム長Ｌ＃ｉ３と比較する。
【００９３】
ここで、図１１の例では、Ｂｄ３＞Ｌ＃ｉ３であることから、フレーム判定部１４Ｃは先頭フレームに対して出力可と判定する。
また、バケット値更新部１４Ｄは、フレーム判定部１４Ｃでの出力可判定に応じて、暫定バケット値Ｂｄ３から先頭フレーム長Ｌ＃ｉ３とバケット値増分ΔＢ３とを減算することにより、バケット＃ｉの新たなバケット値Ｂｔ３’を計算してバケット値メモリ回路１１に更新記録する。
【００９４】
その後、時刻Ｔ４における新たな加算タイミングＴａ＃ｉに応じて、トークン加算処理部１４Ａは、バケット値メモリ回路１１のバケット値Ｂｔ３’を、トークンレートＲｔと加算周期Ｔｍとの積からなるトークン加算量Ｒｔ×Ｔｍだけ一括して加算し、得られたバケット値Ｂｔ４でバケット値メモリ回路１１を更新する。これにより、時刻Ｔ４において、バケット値Ｂｔ４が、直前の加算タイミングＴａ＃Ｓに実際にバケット＃ｉに溜められているべきトークン量Ｔｋと一致することになる。
【００９５】
［第２の実施の形態の効果］
このように、本実施の形態は、タイマ回路１２が、バケットのうち、基準となる基準バケット＃Ｓのバケット値Ｂｔ＃Ｓを加算更新する加算タイミングＴａ＃Ｓを、一定の加算周期Ｔｍで出力し、シェーピング処理回路１４が、加算タイミングＴａ＃Ｓを基準として、バケットに関するバケット値の加算更新が互いに重複することなく順次実行されるように計時した、バケットのそれぞれに関する加算タイミングＴａ＃ｉに応じて、バケット値メモリ回路１１の対応するバケット値を加算更新し、増分計算部１４Ｂが、加算タイミングＴａ＃Ｓから加算タイミングＴａ＃ｉまでの加算更新前期間に、フロー＃ｉの出力可否判定時に、バケット値増分ΔＢ＃ｉをトークン加算量Ｒｔ＃ｉ×Ｔｍだけ加算するようにしたものである。
【００９６】
これにより、出力可否判定タイミングが、加算タイミングＴａ＃Ｓから加算タイミングＴａ＃ｉまでの加算更新前期間に到来した場合には、バケット値増分ΔＢ＃ｉがトークン加算量Ｒｔ＃ｉ×Ｔｍだけ加算されるため、その後、実行される加算タイミングＴａ＃ｉにおける加算更新分だけ、出力可否判定タイミング時に補正されることになる。したがって、タイマ回路１２から加算タイミングＴａ＃Ｓだけを基準として出力する構成を採用した場合でも、先頭フレームの出力可否を正確に判定することができ、結果として、タイマ回路１２に関する実装面積を削減することができる。
【００９７】
［第３の実施の形態］
次に、図１２を参照して、本発明の第３の実施の形態にかかるトラヒックシェーピング回路１０について説明する。図１２は、第３の実施の形態にかかるトラヒックシェーピング回路の構成を示すブロック図である。
トラヒックシェーピング回路１０により、複数のフローについて出力レートを制限する場合、フローによって、バケットサイズＢｓ＃ｉ、トークンレートＲｔ＃ｉ、トークン加算量Ｒｔ＃ｉ×Ｔｍなど、バケットの特性を示すプロファイルが異なる場合がある。
【００９８】
本実施の形態は、これらプロファイルを、それぞれ固有のＩＤと対応させて記憶するプロファイルメモリ回路１３を設けるとともに、バケット値メモリ回路１１で、バケット値ごとに、対応するバケットに適用するプロファイルを示すＩＤを記憶しておき、シェーピング処理回路１４が、フロー＃ｉに関する出力可否判定時に、バケット値メモリ回路１１からバケット＃ｉのＩＤを取得し、プロファイルメモリ回路１３からＩＤに基づき取得したプロファイルに基づいて、バケット値Ｂｔ＃ｉの加算更新および先頭フレームの出力可否判定を行うようにしたものである。
【００９９】
図１２の例では、プロファイルメモリ回路１３に、Ｍ（Ｍは正整数）個のプロファイルが登録されており、それぞれのプロファイルには、バケットサイズＢｓ＃ｉ、トークンレートＲｔ＃ｉ、およびトークン加算量Ｒｔ＃ｉ×Ｔｍが設定されている。
一方、バケット値メモリ回路１１は、それぞれのフロー＃ｉのバケット値Ｂｔ＃ｉごとに、対応するバケット＃ｉで用いるプロファイルを示すＩＤ＃ｉが設定されている。
【０１００】
したがって、シェーピング処理回路１４は、フロー＃ｉに関する出力可否判定タイミングが到来した場合、バケット値メモリ回路１１からバケット＃ｉのＩＤを取得し、プロファイルメモリ回路１３からそのＩＤに基づき取得したプロファイルに基づいて、バケット値Ｂｔ＃ｉの加算更新および先頭フレームの出力可否判定を行う。
なお、図１２の例では、タイマ回路１２が基準となる加算タイミングＴａ＃Ｓのみを出力する、第２の実施の形態に沿った構成が例として示されているがこれに限定されるものではなく、第１の実施の形態に沿った構成としてもよい。
【０１０１】
［第３の実施の形態の効果］
このように、本実施の形態は、バケットの特性を示すプロファイルを、それぞれ固有のＩＤと対応させて記憶するプロファイルメモリ回路１３を設けて、バケット値メモリ回路１１で、バケット値ごとに、対応するバケットに適用するプロファイルを示すＩＤを記憶し、シェーピング処理回路１４が、フロー＃ｉに関する出力可否判定時に、バケット値メモリ回路１１からバケット＃ｉのＩＤを取得し、プロファイルメモリ回路１３からＩＤに基づき取得したプロファイルに基づいて、バケット値Ｂｔ＃ｉの加算更新および先頭フレームの出力可否判定を行うようにしたものである。
【０１０２】
これにより、フローごとに、バケットのプロファイルとして、バケットサイズＢｓ＃ｉ、トークンレートＲｔ＃ｉ、およびトークン加算量Ｒｔ＃ｉ×Ｔｍを容易に設定したり選択することができる。したがって、異なるバケットで同じプロファイルを用いる場合には、バケット値メモリ回路１１で同じＩＤを登録しておけばよく、各バケットのプロファイルの設定に要する作業負担を大幅に軽減できる。また、プロファイルを格納するためのメモリの容量を増大させずに、バケット数Nを増やすことが可能となる。
【０１０３】
［実施の形態の拡張］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
【符号の説明】
【０１０４】
１…フレーム通信装置、２…分類回路、３…振り分け回路、４…フレーム記憶回路、５…読出制御回路、１０…トラヒックシェーピング回路、１１…バケット値メモリ回路、１２…タイマ回路、１３…プロファイルメモリ回路、１４…シェーピング処理回路、１４Ａ…トークン加算処理部、１４Ｂ…増分計算部、１４Ｃ…フレーム判定部、１４Ｄ…バケット値更新部、１４Ｅ…フロー選択部、Ｔｍ…加算周期、Ｔｗ…処理時間長、Ｔａ…加算タイミング、Ｂｔ…バケット値、Ｂｓ…バケットサイズ、Ｒｔ…トークンレート、Ｔｐ…経過期間長、Ｌ…先頭フレーム長、ΔＢ…バケット値増分、Ｂｄ…暫定バケット値、Ｔｋ…トークン量。
【図１】
2018198351.tif 000003
【図２】
2018198351.tif 000004
【図３】
2018198351.tif 000005
【図４】
2018198351.tif 000006
【図５】
2018198351.tif 000007
【図６】
2018198351.tif 000008
【図７】
2018198351.tif 000009
【図８】
2018198351.tif 000010
【図９】
2018198351.tif 000011
【図１０】
2018198351.tif 000012
【図１１】
2018198351.tif 000013
【図１２】
2018198351.tif 000014
【図１３】
2018198351.tif 000015
【図１４】
2018198351.tif 000016
【図１５】
2018198351.tif 000017
【図１６】
2018198351.tif 000018