(57)【特許請求の範囲】
【請求項１】
パケットの出力制御に用いる情報であるトークン値を記憶する第１および第２の記憶部と、
前記第１の記憶部に記憶されているトークン値の総和を示す第１の総トークン値に所定の周期で所定のトークン値を加算するとともに、前記パケットの出力に応じて前記第１の総トークン値から所定のトークン値を減算するトークン制御部と、
前記トークン制御部によるトークン値の加算に際して、当該加算後の前記第１の総トークン値が所定の上限値を超過する場合には、前記第１の総トークン値を当該上限値に相当する値に設定するとともに、当該上限値を超過する分のトークン値を前記第２の記憶部に記憶されているトークン値の総和を示す第２の総トークン値に加算する超過時制御部と、
前記トークン制御部によるトークン値の減算によって前記第１の総トークン値が前記所定の上限値より過小になった場合に、前記第２の総トークン値から所定のトークン値を減算し、当該減算されたトークン値を前記第１の総トークン値に加算する過小時制御部と、
パケットを格納するキューと、
前記キューにパケットが格納されているか否かを監視するキュー監視部と、
を備え、
前記超過時制御部は、前記第１の総トークン値が前記上限値を超過し、かつ、前記キュー監視部によって前記キューにパケットが格納されていると判定された場合に、前記上限値を超過する分のトークン値を前記第２の総トークン値に加算することを特徴とするパケット伝送装置。
【請求項２】
前記過小時制御部は、前記トークン制御部によって前記第１の総トークン値に所定の周期で加算されるトークン値とともに、前記第２の総トークン値から減算されたトークン値を前記第１の総トークン値に加算することを特徴とする請求項１に記載のパケット伝送装置。
【請求項３】
前記過小時制御部は、前記第２の総トークン値が予め定められた基準値以下であれば、前記第２の総トークン値から当該第２の総トークン値に含まれる全てのトークン値を減算し、当該減算されたトークン値を前記第１の総トークン値に加算し、前記第２の総トークン値が前記基準値を超えていれば、前記第２の総トークン値から前記基準値に相当する分のトークン値を減算し、当該減算されたトークン値を前記第１の総トークン値に加算することを特徴とする請求項１又は２に記載のパケット伝送装置。
【請求項４】
前記第１および第２の記憶部を一体構成とし、
前記第１の記憶部に記憶された前記上限値を、パケットを受信する対向装置に対して一度に出力可能なパケット量の最大値を規定するためのバースト閾値として設定したことを特徴とする請求項１〜３のいずれか一つに記載のパケット伝送装置。
【請求項５】
パケットの出力制御に用いる情報であるトークン値を記憶する第１の記憶部に記憶されているトークン値の総和を示す第１の総トークン値に所定の周期で所定のトークン値を加算するとともに、前記パケットの出力に応じて前記第１の総トークン値から所定のトークン値を減算するトークン制御工程と、
前記トークン制御工程によるトークン値の加算に際して、当該加算後の前記第１の総トークン値が所定の上限値を超過する場合には、前記第１の総トークン値を当該上限値に相当する値に設定するとともに、当該上限値を超過する分のトークン値を第２の記憶部に記憶されているトークン値の総和を示す第２の総トークン値に加算する超過時制御工程と、
前記トークン制御工程によるトークン値の減算によって前記第１の総トークン値が前記所定の上限値より過小になった場合に、前記第２の総トークン値から所定のトークン値を減算し、当該減算されたトークン値を前記第１の総トークン値に加算する過小時制御工程と、
パケットを格納するキューにパケットが格納されているか否かを監視するキュー監視工程とを含み、
前記超過時制御工程は、前記第１の総トークン値が前記上限値を超過し、かつ、前記キュー監視工程によって前記キューにパケットが格納されていると判定された場合に、前記上限値を超過する分のトークン値を前記第２の総トークン値に加算することを特徴とするパケット伝送方法。
【請求項６】
パケットの出力制御に用いる情報であるトークン値を記憶する第１の記憶部に記憶されているトークン値の総和を示す第１の総トークン値に所定の周期で所定のトークン値を加算するとともに、前記パケットの出力に応じて前記第１の総トークン値から所定のトークン値を減算するトークン制御手順と、
前記トークン制御手順によるトークン値の加算に際して、当該加算後の前記第１の総トークン値が所定の上限値を超過する場合には、前記第１の総トークン値を当該上限値に相当する値に設定するとともに、当該上限値を超過する分のトークン値を第２の記憶部に記憶されているトークン値の総和を示す第２の総トークン値に加算する超過時制御手順と、
前記トークン制御手順によるトークン値の減算によって前記第１の総トークン値が前記所定の上限値より過小になった場合に、前記第２の総トークン値から所定のトークン値を減算し、当該減算されたトークン値を前記第１の総トークン値に加算する過小時制御手順と、
パケットを格納するキューにパケットが格納されているか否かを監視するキュー監視手順と
をコンピュータに実行させ、
前記超過時制御手順は、前記第１の総トークン値が前記上限値を超過し、かつ、前記キュー監視手順によって前記キューにパケットが格納されていると判定された場合に、前記上限値を超過する分のトークン値を前記第２の総トークン値に加算することを特徴とするパケット伝送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット伝送装置、パケット伝送方法及びパケット伝送プログラムに関する。
【背景技術】
【０００２】
ＩＰネットワークでは、様々な箇所から様々な宛先へパケットが流れている。このパケットの流れ（以下「フロー」と言う）が合流する地点には、フローのトラフィックを制御するためのパケット伝送装置が設置される。かかるパケット伝送装置は、複数のフローを集約した回線を多段で収容している。
【０００３】
図２０は、パケット伝送装置における回線を説明するための図である。同図に示すように、パケット伝送装置は、ユーザ回線、仮想回線及び物理回線をこの順番に収容している。ユーザ回線は、個々のユーザが使用するフローを集約した回線であり、仮想回線は、ユーザが所属する企業等のグループ単位でユーザ回線を集約した回線であり、物理回線は、企業等のグループ間を結ぶファイバ等に仮想回線を集約した回線である。
【０００４】
このように複数の回線を多段で収容するパケット伝送装置は、一般に、各回線から出力するパケットの出力レート（以下「帯域幅」と言う）を制御する。帯域幅を制御する手法としては、パケットの出力を許可するか否かを判別する情報であるトークン値を用いたトークン制御が広く用いられている。
【０００５】
図２１は、トークン制御の一例を説明するための図である。なお、図２１では、横軸が時間を示し、縦軸が所定のメモリ内に記憶されるトークン値を示すものとする。トークン制御を行うパケット伝送装置は、トークン値の総和を示す総トークン値に所定の周期で所定のトークン値を加算する（図２１の（ａ）参照）。また、パケット伝送装置は、パケットの出力に応じてメモリ内の総トークン値から出力パケット分のトークン値を減算する（図２１の（ｂ）参照）。そして、パケット伝送装置は、メモリ内の総トークン値へ所定のトークン値を加算する際に、加算後の総トークン値が所定の上限値を超過する場合には、上限値を超過する分のトークン値を廃棄する（図２１の（ｃ）参照）。このような動作を繰り返しつつ、パケット伝送装置は、メモリ内の総トークン値に応じて各回線からパケットの出力を行い、帯域幅を制御する。
【０００６】
また、パケット伝送装置は、パケットを格納するキューが各回線に複数存在する場合には、ＲＲ（Ｒｏｕｎｄ  Ｒｏｂｉｎ）法によりキューを順次選択し、選択したキューからパケットを順次出力する。なお、ＲＲ法は、対象を順番に選択するための公知の手法である。
【０００７】
図２２は、ＲＲ法を用いたパケットの出力を説明するための図である。なお、図２２に示すパケット伝送装置は、ユーザ回線、仮想回線及び物理回線をこの順番に収容しており、パケットを格納する複数のキューを各回線に備えるものとする。また、図２２に示すパケット伝送装置は、トークン制御により帯域幅を制御するシェイパ（Ｓｈａｐｅｒ）機能を各回線に備えるものとする。
【０００８】
パケット伝送装置は、ユーザ回線において、Ｓｈａｐｅｒ機能によりパケットの出力が可能となった複数のキューの中から、キューを順次選択し、選択したキューからパケットを仮想回線へ出力する（図２２の（ａ）参照）。そして、パケット伝送装置は、仮想回線において、Ｓｈａｐｅｒ機能によりパケットの出力が可能となった複数のキューの中から、キューを順次選択し、選択したキューからパケットを物理回線へ出力する（図２２の（ｂ）参照）。そして、パケット伝送装置は、仮想回線から受付けたパケットを他の装置へ出力する（図２２の（ｃ）参照）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平９−２２４０３６号公報
【特許文献２】特開平９−２２４０３８号公報
【特許文献３】特開平９−２００２１４号公報
【特許文献４】特開平９−８８１２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来のパケット伝送装置では、総トークン値が所定の上限値を超過する場合に、帯域幅が減少するという問題がある。かかる問題点について図２３及び図２４を用いてさらに詳細に説明する。図２３及び図２４は、従来のパケット伝送装置の問題点を説明するための図である。
【００１１】
図２３に示すように、パケットを出力可能な多数のキュー＃０〜＃Ｎが存在する場合に、パケット伝送装置は、ＲＲ法によりキューを順次選択し、選択したキューからパケットを上位回線へ順次出力する。なお、図２３に示す上位回線は、例えば、物理回線や仮想回線であり、最大２０Ｇｂｐｓの帯域幅を収容するものとする。また、図２３に示す下位回線は、例えば、仮想回線やユーザ回線であり、帯域幅１０Ｇｂｐｓのキュー＃０と帯域幅１Ｍｂｐｓのキュー＃１〜＃Ｎとを備えるものとする。
【００１２】
このような状況の下で、パケット伝送装置は、図２４に示すように、例えばキュー＃０より一度パケットを出力してから他のキュー＃１〜＃Ｎからのパケットの出力が完了するまでの間、キュー＃０からのパケットの出力を停止する。なお、図２４の上段は、キュー＃０〜＃Ｎが、ＲＲ法で選択される順番に時系列に沿って並べられている様子を示している。また、図２４の下段は、キュー＃０におけるメモリ内の総トークン値の推移を時間軸上に表した履歴である。
【００１３】
そして、パケット伝送装置は、キュー＃０からのパケットの出力を停止している間も、メモリ内の総トークン値に所定の周期でトークン値を加算する（図２４の（ａ）参照）。一方、キュー＃０からのパケットの出力が行われないため、メモリ内の総トークン値からトークン値が減算されない。このため、トークン値の加算後の総トークン値が所定の上限値を超過し、パケット伝送装置は、上限値を超過する分のトークン値を廃棄することとなる（図２４の（ｂ）参照）。この結果、廃棄されたトークン値に相当するパケットが出力されず、帯域幅が減少してしまう。
【００１４】
なお、かかる帯域幅の減少を抑制するために、メモリの上限値を増大させ、より多くのトークン値をメモリに保持する構成を採用することも考えられる。しかし、かかる構成では、一度に出力可能なパケット量が増加する結果、出力されたパケットを受信する対向装置では、パケットの溢れが発生し、パケットの廃棄（バースト）が発生する恐れがある。
【００１５】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、帯域幅の減少を抑制することができるパケット伝送装置、パケット伝送方法及びパケット伝送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するため、パケット伝送装置は、パケットの出力制御に用いる情報であるトークン値を記憶する第１および第２の記憶部と、前記第１の記憶部に記憶されているトークン値の総和を示す第１の総トークン値に所定の周期で所定のトークン値を加算するとともに、前記パケットの出力に応じて前記第１の総トークン値から所定のトークン値を減算するトークン制御部と、前記トークン制御部によるトークン値の加算に際して、当該加算後の前記第１の総トークン値が所定の上限値を超過する場合には、当該上限値を超過する分のトークン値を前記第２の記憶部に記憶されているトークン値の総和を示す第２の総トークン値に加算する超過時制御部と、前記トークン制御部によるトークン値の減算によって前記第１の総トークン値が前記所定の上限値より過小になった場合に、前記第２の総トークン値から所定のトークン値を減算し、当該減算されたトークン値を前記第１の総トークン値に加算する過小時制御部とを備えた。
【発明の効果】
【００１７】
開示のパケット伝送装置によれば、帯域幅の減少を抑制することができるという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係るパケット伝送装置の構成を示すブロック図である。
【図２】図２は、実施例１に係るパケット伝送装置による処理の一例を説明するための図である。
【図３】図３は、実施例１に係るパケット伝送装置による処理の一例を説明するための図である。
【図４】図４は、図３におけるＰ部の拡大図である。
【図５】図５は、実施例２に係るパケット伝送装置の構成を示すブロック図である。
【図６】図６は、図５に示した帯域調整部の構成を示すブロック図である。
【図７】図７は、実施例２に係るパケット伝送装置によるパケット出力処理の処理手順を示すフローチャートである。
【図８】図８は、実施例２における帯域制御部による超過時制御処理の処理手順を示すフローチャートである。
【図９】図９は、実施例２における帯域制御部による過小時制御処理の処理手順を示すフローチャートである。
【図１０】図１０は、実施例２に係るパケット伝送装置の効果を説明するための図である。
【図１１】図１１は、実施例２に係るパケット伝送装置の効果を説明するための図である。
【図１２】図１２は、実施例３に係るパケット伝送装置によるトークン制御手法を説明するための図である。
【図１３】図１３は、実施例３に係るパケット伝送装置が有する帯域調整部の構成を示すブロック図である。
【図１４】図１４は、実施例３に係るパケット伝送装置によるパケット出力処理の処理手順を示すフローチャートである。
【図１５−１】図１５−１は、実施例３における帯域制御部による超過時制御処理の処理手順を示すフローチャートである。
【図１５−２】図１５−２は、パケット伝送装置が総トークン値の中でトークン値のやり取りを行う場合の超過時制御処理の処理手順を示すフローチャートである。
【図１６】図１６は、バースト閾値が追加トークン値と等しい場合のパケットの出力履歴を示す図である。
【図１７】図１７は、バースト閾値が追加トークン値よりも小さい場合のパケットの出力履歴を示す図である。
【図１８】図１８は、バースト閾値と帯域取り戻し時間との関係を示す図である。
【図１９】図１９は、パケット伝送プログラムを実行するコンピュータを示す図である。
【図２０】図２０は、パケット伝送装置における回線を説明するための図である。
【図２１】図２１は、トークン制御の一例を説明するための図である。
【図２２】図２２は、ＲＲ法を用いたパケットの出力を説明するための図である。
【図２３】図２３は、従来のパケット伝送装置の問題点を説明するための図である。
【図２４】図２４は、従来のパケット伝送装置の問題点を説明するための図である。
【発明を実施するための形態】
【００１９】
以下に、本願の開示するパケット伝送装置、パケット伝送方法及びパケット伝送プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、本願に開示するパケット伝送装置、パケット伝送方法及びパケット伝送プログラムをＩＰネットワークにおけるルータやスイッチ等のパケット伝送装置に適用する例を説明する。
【実施例１】
【００２０】
まず、実施例１に係るパケット伝送装置の構成を説明する。実施例１に係るパケット伝送装置１０は、パケットの出力を許可するか否かを判別する情報であるトークン値を用いた制御（以下「トークン制御」と言う）により、パケットの出力を制御する。例えば、パケット伝送装置は、パケットの出力レート（以下「帯域幅」と言う）を制御するシェイパ（Ｓｈａｐｅｒ）機能を備えるものが該当する。
【００２１】
図１は、実施例１に係るパケット伝送装置１０の構成を示すブロック図である。図１に示すように、実施例１に係るパケット伝送装置１０は、第１の記憶部１１と、第２の記憶部１２と、トークン制御部１３と、超過時制御部１４と、過小時制御部１５とを有する。第１の記憶部１１及び第２の記憶部１２は、パケットの出力制御に用いる情報であるトークン値を記憶する。なお、以下では、第１の記憶部１１に記憶されているトークン値の総和を「第１の総トークン値」と呼び、第２の記憶部１２に記憶されているトークン値の総和を「第２の総トークン値」と呼ぶ。また、第２の記憶部１２としては、トークン値を記憶するメモリ等、トークン値を蓄積可能な記憶装置であれば如何なる記憶装置を用いてもよい。
【００２２】
トークン制御部１３は、第１の総トークン値１１ａに所定の周期で所定のトークン値を加算する。また、トークン制御部１３は、パケットの出力に応じて第１の総トークン値１１ａから所定のトークン値を減算する。
【００２３】
超過時制御部１４は、トークン制御部１３によるトークン値の加算に際して、当該加算後の第１の総トークン値１１ａが所定の上限値を超過するか否かを判定する。そして、超過時制御部１４は、加算後の第１の総トークン値１１ａが所定の上限値を超過する場合には、当該上限値を超過する分のトークン値を第２の総トークン値１２ａに加算する。一方、超過時制御部１４は、加算後の第１の総トークン値１１ａが所定の上限値を超過しない場合には、現状の第２の総トークン値１２ａを維持する。
【００２４】
過小時制御部１５は、トークン制御部１３によるトークン値の減算によって第１の総トークン値１１ａが所定の上限値より過小になった場合に、第２の総トークン値１２ａから所定のトークン値を減算する。そして、過小時制御部１５は、減算されたトークン値を第１の総トークン値１１ａに加算する。
【００２５】
次に、実施例１に係るパケット伝送装置１０による処理を一例を挙げて説明する。図２及び図３は、実施例１に係るパケット伝送装置１０による処理の一例を説明するための図であり、図４は、図３におけるＰ部の拡大図である。なお、図２〜図４では、パケット伝送装置１０が、複数のキュー＃０〜＃Ｎのうち、トークン制御によりキュー＃０の帯域幅を制御する例について説明する。また、図３の上段は、キュー＃０〜＃Ｎが、ＲＲ（Ｒｏｕｎｄ  Ｒｏｂｉｎ）法で選択される順番に時系列に沿って並べられている様子を示している。なお、ＲＲ法は、対象を順番に選択するための公知の手法である。
【００２６】
また、図３の下段は、キュー＃０における第１の記憶部１１内の第１の総トークン値１１ａの推移を時間軸上に実線で表した履歴であり、図３の左側から右側に向かって時間が経過している様子を示している。
【００２７】
実施例１に係るパケット伝送装置１０は、トークン制御により、キュー＃０の帯域幅を制御する。すなわち、トークン制御部１３は、第１の記憶部１１の第１の総トークン値１１ａに所定の周期で所定のトークン値を加算する（図２の（ａ）参照）。また、トークン制御部１３は、キュー＃０からのパケットの出力に応じて、第１の総トークン値１１ａから、例えば、出力したパケットのパケット長に相当するトークン値を減算する（図２の（ｂ）参照）。
【００２８】
このような帯域幅の制御を実行しつつ、実施例１に係るパケット伝送装置１０は、帯域幅の減少を抑制するための処理を実行する。超過時制御部１４は、トークン制御部１３によるトークン値の加算後の第１の総トークン値１１ａが上限値を超過する場合に、当該上限値を超過する分のトークン値を第２の記憶部１２の第２の総トークン値１２ａに加算する（図２の（１）及び図３の（１）参照）。
【００２９】
そして、過小時制御部１５は、トークン制御部１３によるトークン値の減算によって第１の総トークン値１１ａが上限値より過小になった場合に、第２の総トークン値１２ａから所定のトークン値を減算する。そして、過小時制御部１５は、減算したトークン値を第１の総トークン値１１ａに加算する（図２の（２）及び図３の（２）参照）。
【００３０】
これにより、第１の総トークン値１１ａが、図４に示すように、第２の総トークン値１２ａから加算されたトークン値の分だけ瞬間的に増加する。なお、図４に示す破線は、通常のトークン制御により、所定の周期で所定のトークン値を第１の総トークン値１１ａに加算したと仮定した場合の当該第１の総トークン値１１ａの推移を示している。また、図４に示す実線は、過小時制御部１５によって第２の総トークン値１２ａから減算されたトークン値を第１の総トークン値１１ａに加算した場合の当該第１の総トークン値１１ａの推移を示している。
【００３１】
このように、パケット伝送装置１０は、トークン制御にて第１の記憶部１１から溢れたトークン値を第２の記憶部１２に蓄積し、パケットの出力に伴い第１の記憶部１１からトークン値が消費された場合に、第２の記憶部１２のトークン値を加算する。このため、パケット伝送装置１０は、通常のトークン制御により所定の周期で所定のトークン値を加算する従来の手法よりも、第１の記憶部１１の第１の総トークン値を迅速に増加させることができる。これは、パケット伝送装置１０が、例えばＲＲ法によりキューを順次選択する場合に、選択したキューに対応する第１の記憶部１１に、より大きい第１の総トークン値１１ａを保持することができることを意味する。したがって、パケット伝送装置１０は、第１の記憶部１１の第１の総トークン値に応じたパケットの出力をより迅速に行うことができる。その結果、パケット伝送装置１０は、メモリの上限値を超過したトークン値を全て廃棄する従来の手法と比較して、帯域幅の減少を抑制することができる。
【００３２】
なお、パケット伝送装置１０は、第１の記憶部１１の第１の総トークン値に応じてパケットを出力し、第１の記憶部１１の上限値を増大させるわけではない。このため、パケット伝送装置１０は、対向装置におけるバーストの発生を防止することができる。
【実施例２】
【００３３】
［実施例２に係るパケット伝送装置の構成］
次に、実施例２に係るパケット伝送装置の構成を説明する。図５は、実施例２に係るパケット伝送装置２０の構成を示すブロック図である。図５に示すように、実施例２に係るパケット伝送装置２０は、パケット管理部２１と、スケジューラ部２２とを有する。
【００３４】
パケット管理部２１は、他の装置から受信したパケットを管理する。具体的には、パケット管理部２１は、他の装置からパケットを受信すると、受信したパケットを共有メモリ２１ａに保持する。そして、パケット管理部２１は、共有メモリ２１ａに含まれる各メモリ領域と当該メモリ領域に格納されたパケットとを対応付けた情報であるパケット情報をスケジューラ部２２の後述するキュー振り分け部３１に送信する。また、パケット管理部２１は、スケジューラ部２２の後述する出力調整部３３からパケットを受信すると、受信したパケットを出力する。
【００３５】
スケジューラ部２２は、パケットを一時的に格納する複数のキュー２３を備え、パケット管理部２１より受信したパケット情報を用いてトークン制御を行い、トークン制御に基づいてキュー２３から出力するパケットの帯域幅を調整する。具体的には、スケジューラ部２２は、キュー振り分け部３１と、３階層の帯域調整部３２−１〜３２−３と、出力調整部３３とを有する。
【００３６】
なお、図５に示すスケジューラ部２２は、ユーザ回線用の帯域調整部３２−１、仮想回線用の帯域調整部３２−２及び物理回線用の帯域調整部３２−３の３階層の帯域調整部を有するものとして説明を行う。しかしながら、スケジューラ部２２は、２階層以下の帯域調整部や４階層以上の帯域調整部を有するものでもよく、任意の階層の帯域調整部を有するものであってもよい。また、以下では、３つの帯域調整部３２−１〜３２−３を特に使い分ける必要がない場合には、単に「帯域調整部３２」と呼ぶこととする。
【００３７】
キュー振り分け部３１は、パケット管理部２１からパケット情報を受信すると、当該パケット情報で示される共有メモリ２１ａのメモリ領域から該当するパケットを読み出し、読み出したパケットをキュー２３に振り分けて格納する。帯域調整部３２は、トークン制御を実行することで、キュー２３から出力するパケットの帯域幅を調整し、帯域幅を調整したパケットを出力調整部３３へ出力する。なお、帯域調整部３２の具体的な構成については、後に説明する。
【００３８】
出力調整部３３は、帯域調整部３２のうち最上位である物理回線用の帯域調整部３２−３から出力されるパケットが競合しないようにタイミングの調整を行い、帯域調整部３２−３からパケットを受信すると、受信したパケットをパケット管理部２１へ送信する。
【００３９】
ここで、帯域調整部３２の具体的な構成を説明する。図６は、図５に示した帯域調整部３２の構成を示すブロック図である。帯域調整部３２は、トークン制御を実行することで、キュー２３から出力するパケットの帯域幅を調整する。具体的には、帯域調整部３２は、図６に示すように、第１メモリ４１と、第２メモリ４２と、キュー管理部４３と、キュー選択部４４と、帯域制御部４５とを有する。
【００４０】
第１メモリ４１は、トークン値を記憶する。具体的には、第１メモリ４１は、キュー２３それぞれについて、第１総トークン値、第１上限トークン値及び追加トークン値を対応付けて記憶する。第１総トークン値は、キュー２３それぞれに割り当てられて現に第１メモリ４１に記憶されているトークン値の総和を示す。第１上限トークン値は、第１メモリ４１における第１総トークン値の上限値を示す。追加トークン値は、キュー２３それぞれに割り当てられて第１メモリ４１に一度に追加されるトークン値を示す。
【００４１】
第２メモリ４２は、トークン値を記憶する。具体的には、第２メモリ４２は、キュー２３それぞれについて、第２総トークン値、第２上限トークン値及び基準トークン値を対応付けて記憶する。第２総トークン値は、第１メモリ４１の第１総トークン値のうち第１上限トークン値を超過する分のトークン値である超過トークン値の総和を示す。第２上限トークン値は、第２メモリ４２における第２総トークン値の上限値を示す。基準トークン値は、第２総トークン値に含まれる全てのトークン値を第１総トークン値に加算するか否かを判断するための基準値である。
【００４２】
キュー管理部４３は、複数のキュー２３に関するパケットの入出力を管理する。具体的には、キュー管理部４３は、キュー振り分け部３１や前段の帯域調整部３２からパケットを受付けると、受付けたパケットをキュー２３に格納する。そして、キュー管理部４３は、キュー選択部４４によって選択されたキューのキューＩＤを受付けると、当該キューＩＤで示すキュー２３からパケットを出力する。なお、以下では、キュー２３にパケットを格納する処理を「エンキュー」と呼び、キュー２３からパケットを出力する処理を「デキュー」と呼ぶこととする。
【００４３】
また、キュー管理部４３は、デキューを実行したキュー２３のキューＩＤとデキューされたパケットのパケット長を帯域制御部４５へ通知する。また、キュー管理部４３は、複数のキュー２３にパケットが格納されているか否かを示す情報であるキュー状態情報をキュー選択部４４に通知する。
【００４４】
キュー選択部４４は、第１メモリ４１から読み出した第１総トークン値に応じてパケットの出力対象となるキュー２３を選択し、選択したキュー２３のキューＩＤをキュー管理部４３へ通知する。具体的には、キュー選択部４４は、ＲＲ（Ｒｏｕｎｄ  Ｒｏｂｉｎ）対象フラグ設定部５１と、ＲＲ処理部５２とを有する。
【００４５】
ＲＲ対象フラグ設定部５１は、第１メモリ４１の第１総トークン値に応じて、複数のキュー２３のうちパケットの出力可能なキュー２３を決定し、その決定結果をＲＲ処理部５２へ通知する。具体的には、ＲＲ対象フラグ設定部５１は、キュー管理部４３から通知されるキュー状態情報からパケットが格納されているキュー２３を判別し、当該キュー２３の第１総トークン値を第１メモリ４１から読み出す。そして、ＲＲ対象フラグ設定部５１は、第１総トークン値が対応するキュー２３に格納されたパケットのパケット長以上である場合に、パケットの出力を許可するためのＲＲ対象フラグ「ＯＮ」を当該キュー２３のキューＩＤに設定する。なお、ＲＲ対象フラグ設定部５１は、第１総トークン値が０よりも大きい場合に、パケットの出力を許可するためのＲＲ対象フラグ「ＯＮ」を当該キュー２３のキューＩＤに設定するようにしてもよい。
【００４６】
また、ＲＲ対象フラグ設定部５１は、第１総トークン値が対応するキュー２３に格納されたパケットのパケット長未満である場合には、パケットの出力を許可しないためのＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する。また、ＲＲ対象フラグ設定部５１は、キュー管理部４３から通知されるキュー状態情報からパケットが格納されていないキュー２３を判別した場合には、パケットの出力不可を示すＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する。そして、ＲＲ対象フラグ設定部５１は、ＲＲ対象フラグを設定したキューＩＤをＲＲ処理部５２へ通知する。
【００４７】
ＲＲ処理部５２は、ＲＲ対象フラグ設定部５１から通知されるキューＩＤのうちＲＲ対象フラグ「ＯＮ」が設定されたキューＩＤに対してＲＲ法を適用する。具体的には、ＲＲ処理部５２は、ＲＲ対象フラグ設定部５１から通知されるキューＩＤのうちＲＲ対象フラグ「ＯＮ」が設定されたキューＩＤのキュー２３をＲＲにより選択し、選択したキュー２３のキューＩＤをキュー管理部４３に送信する。
【００４８】
帯域制御部４５は、トークン制御を行うとともに、トークン制御にて第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積し、パケットの出力に伴い第１メモリ４１からトークン値が消費された場合に、第２メモリ４２のトークン値を加算する。具体的には、帯域制御部４５は、トークン制御部６１と、キュー監視部６２と、超過時制御部６３と、過小時制御部６４とを有する。
【００４９】
トークン制御部６１は、第１メモリ４１の第１総トークン値に所定の周期で所定のトークン値を加算する。具体的には、トークン制御部６１は、所定の周期ごとに、第１メモリ４１から第１総トークン値及び追加トークン値を読み出す。そして、トークン制御部６１は、超過時制御部６３によって第２メモリ４２から読み出された第２総トークン値がゼロである場合に、第１総トークン値に追加トークン値を加算し、加算後の第１総トークン値を第１メモリ４１に格納する。
【００５０】
また、トークン制御部６１は、キュー２３からのパケットの出力に応じて第１メモリ４１の第１総トークン値から所定のトークン値を減算する。具体的には、トークン制御部６１は、デキューを実行したキュー２３のキューＩＤとデキューされたパケットのパケット長をキュー管理部４３から受付けると、キューＩＤで示すキュー２３の第１総トークン値からパケット長分のトークン値を減算する。そして、トークン制御部６１は、減算後の第１総トークン値を第１メモリ４１に格納する。
【００５１】
キュー監視部６２は、キュー２３にパケットが格納されているか否かを監視し、その監視結果を超過時制御部６３へ通知する。
【００５２】
超過時制御部６３は、トークン制御部６１によるトークン値の加算に際して、加算後の第１総トークン値が所定の上限値を超過する場合に、当該上限値を超過する分のトークン値（以下「超過トークン値」という）を第２メモリ４２の第２総トークン値に加算する。具体的には、超過時制御部６３は、第１メモリ４１から第１総トークン値、第１上限トークン値及び追加トークン値を読み出す。そして、超過時制御部６３は、追加トークン値を第１総トークン値に加算する。そして、超過時制御部６３は、加算後の第１総トークン値と第１上限トークン値とを比較し、加算後の第１総トークン値が第１上限トークン値よりも大きい場合に、第１総トークン値から第１上限トークン値を減算することによって超過トークン値を算出する。そして、超過時制御部６３は、算出した超過トークン値を第２メモリ４２から読み出した第２総トークン値に加算し、加算後の第２総トークン値を第２メモリ４２に格納する。
【００５３】
なお、本実施例では、超過時制御部６３は、トークン値の加算後の第１総トークン値が所定の上限値を超過し、かつ、キュー２３にパケットが格納されている旨の監視結果をキュー監視部６２から受付けた場合に、超過トークン値を第２総トークン値に加算する。一方、トークン値の加算後の第１総トークン値が所定の上限値を超過しても、キュー２３にパケットが格納されていない旨の監視結果をキュー監視部６２から受付けた場合には、超過時制御部６３は、超過トークン値を廃棄する。これにより、デキューの必要がない場合に、超過トークン値を第２総トークン値に加算する処理を省略することができ、超過時制御部６３の処理負担を軽減することが可能である。
【００５４】
過小時制御部６４は、トークン制御部６１によるトークン値の減算によって第１総トークン値が上限トークン値より過小となった場合に、第２総トークン値から所定のトークン値を減算し、当該減算されたトークン値を第１総トークン値に加算する。また、過小時制御部６４は、トークン制御部６１によって第１総トークン値に所定の周期で加算される追加トークン値とともに、第２総トークン値から減算されたトークン値を第１総トークン値に加算する。
【００５５】
さらに、過小時制御部６４は、第２総トークン値が基準トークン値未満であれば、第２総トークン値から全てのトークン値を減算し、当該減算されたトークン値を第１総トークン値に加算する。一方、過小時制御部６４は、第２総トークン値が基準トークン値以上であれば、第２総トークン値から基準トークン値に相当する分のトークン値を減算し、当該減算されたトークン値を第１総トークン値に加算する。
【００５６】
具体的には、過小時制御部６４は、トークン制御部６１によって第１メモリ４１から第１総トークン値及び追加トークン値が読み出されると、第２メモリ４２から第２総トークン値及び基準トークン値を読み出す。そして、過小時制御部６４は、第２総トークン値がゼロより大きい場合に、第２総トークン値と基準トークン値との大小を比較する。そして、過小時制御部６４は、第２総トークン値が基準トークン値以下であれば、第２総トークン値から全てのトークン値を減算し、当該減算されたトークン値、すなわち、第２総トークン値に相当する分のトークン値を追加トークン値に加算する。そして、過小時制御部６４は、加算後の追加トークン値を第１総トークン値に加算し、加算後の第１総トークン値を第１メモリ４１に格納する。
【００５７】
一方、過小時制御部６４は、第２総トークン値が基準トークン値を超えていれば、第２総トークン値から基準トークン値に相当する分のトークン値を減算し、当該減算されたトークン値を追加トークン値に加算する。そして、過小時制御部６４は、加算後の追加トークン値を第１総トークン値に加算し、加算後の第１総トークン値を第１メモリ４１に格納する。
【００５８】
なお、本実施例では、トークン制御部６１と過小時制御部６４とを分散した構成例を示したが、トークン制御部６１と過小時制御部６４とを適宜統合した構成としてもよい。また、パケット管理部２１、スケジューラ部２２は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ (Field Programmable Gate Array)などの集積回路である。また、第１メモリ４１、第２メモリ４２は、例えば、ＲＡＭ（Random Access Memory)、ＥＰＲＯＭ（Erasable Programmable Read Only Memory)、フラッシュメモリ (flash memory)などの半導体メモリ素子である。
【００５９】
［実施例２に係るパケット伝送装置による処理］
次に、実施例２に係るパケット伝送装置２０による処理を説明する。ここでは、まず、パケット出力処理について説明し、その後、超過時制御処理について説明し、過小時制御処理について説明する。図７は、実施例２に係るパケット伝送装置２０によるパケット出力処理の処理手順を示すフローチャートである。図８は、実施例２における帯域制御部４５による超過時制御処理の処理手順を示すフローチャートである。図９は、実施例２における帯域制御部４５による過小時制御処理の処理手順を示すフローチャートである。なお、図８及び図９に示す処理は、帯域制御部４５によって所定の周期で定期的に実行される。
【００６０】
［パケット出力処理］
図７は、実施例２に係るパケット伝送装置２０によるパケット出力処理の処理手順を示すフローチャートである。なお、図７に示す処理手順は、所定のタイミングで定期的に実行されるものとする。図７に示すように、パケット伝送装置２０では、帯域調整部３２のキュー選択部４４が、キュー管理部４３から通知されるキュー状態情報からキュー２３にパケットが格納されているか否かを判定する（ステップＳ１１）。キュー２３にパケットが格納されていない場合には（ステップＳ１１否定）、キュー選択部４４は、パケットの出力不可を示すＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する（ステップＳ１２）。
【００６１】
一方、キュー２３にパケットが格納されている場合には（ステップＳ１１肯定）、キュー選択部４４は、当該キュー２３の第１総トークン値を第１メモリ４１から読み出す。そして、キュー選択部４４は、第１総トークン値が対応するキュー２３に格納されたパケットのパケット長以上であるか否かを判定する（ステップＳ１３）。第１総トークン値が対応するキュー２３に格納されたパケットのパケット長未満である場合に（ステップＳ１３否定）、キュー選択部４４は、ＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する（ステップＳ１４）。一方、第１総トークン値が対応するキュー２３に格納されたパケットのパケット長以上である場合に（ステップＳ１３肯定）、キュー選択部４４は、パケットの出力を許可するためのＲＲ対象フラグ「ＯＮ」を当該キュー２３のキューＩＤに設定する（ステップＳ１５）。なお、キュー選択部４４は、第１総トークン値が０よりも大きいか否かを判定し、第１総トークン値が０よりも大きい場合に、パケットの出力を許可するためのＲＲ対象フラグ「ＯＮ」を当該キュー２３のキューＩＤに設定するようにしてもよい。
【００６２】
続いて、キュー選択部４４は、ＲＲ対象フラグを設定したキューＩＤが示すキュー２３のうち、ＲＲ対象フラグ「ＯＮ」が設定されたキュー２３をＲＲにより選択し、選択したキュー２３のキューＩＤをキュー管理部４３に送信する（ステップＳ１６）。
【００６３】
続いて、キュー管理部４３は、キュー選択部４４によって選択されたキュー２３のキューＩＤを受付けると、当該キューＩＤで示すキュー２３からパケットを出力する（ステップＳ１７）。そして、帯域制御部４５は、デキューを実行したキュー２３のキューＩＤとデキューされたパケットのパケット長をキュー管理部４３から受付けると、キューＩＤで示すキュー２３の第１総トークン値からパケット長分のトークン値を減算する（ステップＳ１８）。そして、帯域制御部４５は、減算後の第１総トークン値を第１メモリ４１に格納する（ステップＳ１９）。
【００６４】
［超過時制御処理］
図８は、実施例２における帯域制御部４５による超過時制御処理の処理手順を示すフローチャートである。なお、図８に示す処理手順は、例えば、第１メモリ４１の第１総トークン値に所定のトークン値が加算されるたびに実行されるものとする。図８に示すように、帯域制御部４５では、まず、超過時制御部６３が、第１メモリ４１から第１総トークン値、第１上限トークン値及び追加トークン値を読み出す（ステップＳ３１）。そして、超過時制御部６３は、追加トークン値を第１総トークン値に加算する（ステップＳ３２）。そして、超過時制御部６３は、加算後の第１総トークン値と第１上限トークン値とを比較し（ステップＳ３３）、加算後の第１総トークン値が第１上限トークン値以下である場合には（ステップＳ３３否定）、超過トークン値を０（なし）とする（ステップＳ３４）。
【００６５】
一方、加算後の第１総トークン値が第１上限トークン値よりも大きい場合には（ステップＳ３３肯定）、超過時制御部６３は、キュー監視部６２からの監視結果を基にキュー２３にパケットが格納されているか否かの判断を行う（ステップＳ３５）。そして、キューにパケットが格納されていないと判断した場合には（ステップＳ３５否定）、超過時制御部６３は、超過トークン値を０（廃棄）とし（ステップＳ３６）、第１総トークン値を第１上限トークン値に更新する（ステップＳ３７）。一方、キュー２３にパケットが格納されていると判断した場合には（ステップＳ３５肯定）、超過時制御部６３は、第１総トークン値から第１上限トークン値を減算することによって超過トークン値を算出する（ステップＳ３８）。そして、超過時制御部６３は、第１総トークン値を第１上限トークン値に更新する（ステップＳ３９）。
【００６６】
その後、超過時制御部６３は、第１総トークン値を第１メモリ４１に格納し（ステップＳ４０）、第２メモリ４２から第２総トークン値及び第２上限トークン値を読み出す（ステップＳ４１）。そして、超過時制御部６３は、ステップＳ３４、Ｓ３６又はＳ３８で求めた超過トークン値を第２総トークン値に加算し（ステップＳ４２）、加算後の第２総トークン値と第２上限トークン値とを比較する（ステップＳ４３）。
【００６７】
そして、加算後の第２総トークン値が第２上限トークン値よりも大きい場合には（ステップＳ４３肯定）、超過時制御部６３は、第２総トークン値を第２上限トークン値に更新し（ステップＳ４４）、第２メモリ４２に格納する（ステップＳ４５）。一方、加算後の第２総トークン値が第２上限トークン値以下である場合には（ステップＳ４３否定）、超過時制御部６３は、現状の第２総トークン値を第２メモリ４２に格納する（ステップＳ４５）。
【００６８】
［過小時制御処理］
図９は、実施例２における帯域制御部４５による過小時制御処理の処理手順を示すフローチャートである。なお、図９に示す処理手順は、例えば、第１メモリ４１の第１総トークン値に所定のトークン値が加算されるたびに実行されるものとする。図９に示すように、帯域制御部４５では、まず、トークン制御部６１が、第１メモリ４１から第１総トークン値及び追加トークン値を読み出し（ステップＳ５１）、過小時制御部６４が、第２総トークン値及び基準トークン値を読み出す（ステップＳ５２）。
【００６９】
そして、過小時制御部６４は、第２総トークン値が０よりも大きいか否かを判定する（ステップＳ５３）。第２総トークン値が０である場合には（ステップＳ５３否定）、過小時制御部６４は、処理をステップＳ５９に移行する。一方、第２総トークン値が０よりも大きい場合には（ステップＳ５３肯定）、過小時制御部６４は、第２総トークン値と基準トークン値とを比較する（ステップＳ５４）。
【００７０】
第２総トークン値が基準トークン値以下であれば（ステップＳ５４否定）、過小時制御部６４は、第２総トークン値から全てのトークン値を減算し、第２総トークン値に相当する分のトークン値を追加トークン値に加算する（ステップＳ５５）。そして、過小時制御部６４は、第２総トークン値を０（なし）とする（ステップＳ５６）。
【００７１】
一方、第２総トークン値が基準トークン値を超えていれば（ステップＳ５４肯定）、過小時制御部６４は、第２トークン値から基準トークン値に相当する分のトークン値を減算し、減算したトークン値を追加トークン値に加算する（ステップＳ５７）。そして、過小時制御部６４は、現状の第２総トークン値から基準トークン値を減算することによって第２総トークン値を更新する（ステップＳ５８）。
【００７２】
その後、過小時制御部６４は、追加トークン値を第１総トークン値に加算し（ステップＳ５９）、加算後の第１総トークン値を第１メモリ４１に格納する（ステップＳ６０）。そして、過小時制御部６４は、第２総トークン値を第２メモリ４２に格納する（ステップＳ６１）。
【００７３】
［実施例２の効果］
上述したように、実施例２に係るパケット伝送装置２０は、トークン制御にて第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積し、パケットの出力に伴い第１メモリ４１からトークン値が消費された場合に、第２メモリ４２のトークン値を加算する。このため、パケット伝送装置２０は、通常のトークン制御により所定の周期で所定のトークン値を加算する従来の手法よりも、第１メモリ４１の第１総トークン値を迅速に増加させることができる。これは、パケット伝送装置２０が、例えばＲＲ法によりキューを順次選択する場合に、選択したキューに対応する第１メモリ４１に、より大きい第１総トークン値を保持することができることを意味する。したがって、パケット伝送装置２０は、第１メモリ４１の第１総トークン値に応じたパケットの出力をより迅速に行うことができる。その結果、パケット伝送装置２０は、メモリの上限値を超過したトークン値を全て廃棄する従来例と比較して、帯域幅の減少を抑制することができる。
【００７４】
図１０及び図１１は、実施例２に係るパケット伝送装置２０の効果を説明するための図である。図１０では、帯域幅１０Ｇｂｐｓのキュー＃０と帯域幅１Ｇｂｐｓのキュー＃１〜＃２０４７との計２０４８のキューが１つの回線に収容されている場合に、１１００ｎｓ間でキュー＃０から出力されるパケット量の累計を従来例と本実施例とで比較した結果を示す。また、図１１では、キュー＃０の帯域幅の推移を時間軸上に表す。
【００７５】
図１０の（１）で示す従来例は、メモリの上限値を超過したトークン値を全て廃棄する。すなわち、従来例は、メモリ内の総トークン値に１００ｎｓの周期で追加トークン値１０００ｂｉｔを加算してゆき、０〜５００ｎｓで総トークン値が上限値５０００ｂｉｔに到達すると、７００ｎｓまで上限値を超過する分のトークン値を廃棄する。ここで、従来例は、０〜７００ｎｓの間、キュー＃１〜＃２０４７からのパケットの出力を実行し、キュー＃０からのパケットの出力を停止しているものとする。
【００７６】
そして、従来例は、７１０ｎｓ以降、キュー＃０から１０ｎｓごとにパケット長８００ｂｉｔのパケットの出力を開始し、パケットの出力に応じて総トークン値からパケット長８００ｂｉｔに相当する分のトークン値を減算する。そして、従来例は、８００ｎｓで総トークン値に追加トークン値１０００ｂｉｔを再度加算するが、パケット長８００ｂｉｔのパケットの出力を行ったため、総トークン値が−４００＜０となる。このため、従来例は、８００〜９００ｎｓの間、パケットの出力を行うことができない。同様の理由で、従来例は、１０００〜１１００ｎｓの間も、パケットの出力を行うことができない。
【００７７】
一方、図１０の（２）で示す本実施例は、従来例と同様に、第１メモリ４１内の第１総トークン値に１００ｎｓの周期で追加トークン値１０００ｂｉｔを加算してゆく。しかし、本実施例は、従来例と異なり、０〜５００ｎｓで第１総トークン値が上限値５０００ｂｉｔに到達すると、７００ｎｓまで上限値を超過する分のトークン値を第２メモリ４２内の第２総トークン値に加算する。ここで、本実施例は、従来例と同様に、０〜７００ｎｓの間、キュー＃１〜＃２０４７からのパケットの出力を実行し、キュー＃０からのパケットの出力を停止しているものとする。
【００７８】
そして、本実施例は、従来例と同様に、７１０ｎｓ以降、キュー＃０から１０ｎｓごとにパケット長８００ｂｉｔのパケットの出力を開始し、パケットの出力に応じて第１総トークン値からパケット長８００ｂｉｔに相当する分のトークン値を減算する。そして、本実施例は、従来例と同様に、８００ｎｓで第１総トークン値に追加トークン値１０００ｂｉｔを再度加算する。しかし、本実施例は、従来例と異なり、追加トークン値１０００ｂｉｔとともに、第２総トークン値から減算された５００ｂｉｔのトークン値を第１総トークン値に加算する。このため、本実施例は、８００ｎｓでパケット長８００ｂｉｔのパケットの出力を行ったとしても、第１総トークン値を１００ｂｉｔまで一時的に増加させることができる。したがって、本実施例は、従来例と異なり、８１０ｎｓでパケット長８００ｂｉｔのパケットを出力することができる。同様の理由で、本実施例は、従来例と異なり、１０１０ｎｓでもパケット長８００ｂｉｔのパケットを出力することができる。
【００７９】
このように、実施例２に係るパケット伝送装置２０は、第１メモリ４１の第１総トークン値を一時的に増加させることができるため、第１メモリ４１の第１総トークン値に応じたパケットの出力量を瞬間的に増加させることができる。例えば、図１０に示した例では、実施例２に係るパケット伝送装置２０は、１１００ｎｓでキュー＃０からのパケットの出力量を、メモリの上限値を超過したトークン値を全て廃棄する従来例と比較して、１６００ｂｉｔ増加させることができる。
【００８０】
その結果、実施例２に係るパケット伝送装置２０は、メモリの上限値を超過したトークン値を全て廃棄する従来例と比較して、帯域幅の減少を抑制することができる。例えば、図１１に示す本実施例及び従来例では、いずれも、０〜７００ｎｓの間、キュー＃０からのパケットの出力を停止するため、キュー＃０の帯域幅は、１０Ｇｂｐｓよりも減少している。しかし、本実施例では、図１０の説明で述べたように、８００ｎｓ以降、追加トークン値とともに、第２総トークン値から減算されたトークン値を第１総トークン値に加算する。このため、本実施例は、８００ｎｓ以降、キュー＃０からのパケットの出力量を従来例よりも増加させることができる。したがって、本実施例は、従来例と比較して、１０Ｇｂｐｓよりも減少していた帯域幅を１０Ｇｂｐｓまで迅速に取り戻すことができ、帯域幅の減少を抑制することができる。
【００８１】
また、実施例２に係るパケット伝送装置２０は、第１メモリ４１の第１総トークン値に応じてパケットを出力し、第１メモリ４１の上限値を増大させるわけではない。このため、パケット伝送装置２０は、対向装置におけるバーストの発生を防止することができる。
【００８２】
また、実施例２に係るパケット伝送装置２０は、第１メモリ４１の第１総トークン値が上限トークン値を超過し、かつ、キュー２３にパケットが格納されている場合に、超過トークン値を第２メモリ４２の第２総トークン値に加算する。このため、実施例２に係るパケット伝送装置２０は、デキューの必要がない場合に、超過トークン値を第２総トークン値に加算する処理を省略することができ、処理負荷を軽減することができる。
【００８３】
また、実施例２に係るパケット伝送装置２０は、第１総トークン値に所定の周期で加算するトークン値とともに、第２総トークン値から減算されたトークン値を第１総トークン値に加算する。このため、実施例２に係るパケット伝送装置２０は、第１総トークン値に所定の周期でトークン値を加算するという既存の処理と同時に、第２総トークン値からのトークン値を第１総トークン値に加算する処理を行うことができ、処理負荷の増大を抑制可能である。
【００８４】
また、実施例２に係るパケット伝送装置２０は、第２総トークン値が基準トークン値を超えていれば、第２総トークン値から基準トークン値に相当する分のトークン値を減算し、当該減算されたトークン値を第１総トークン値に加算する。このため、実施例２に係るパケット伝送装置２０は、基準トークン値の大小で第１総トークン値に加算するトークン値を規定することができ、第１総トークン値を一時的に増加させる量をより緻密に調整可能である。その結果、実施例２に係るパケット伝送装置２０は、帯域幅の減少をより確実に抑制することができる。
【実施例３】
【００８５】
上記実施例２では、第１メモリ４１および第２メモリ４２を別個のメモリとして構成し、トークン制御にて第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積する例を説明した。しかし、第１メモリ４１および第２メモリ４２を一体のメモリとして構成し、トークン制御にて第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積するようにしてもよい。そこで、実施例３では、第１メモリ４１および第２メモリ４２を一体のメモリとして構成し、トークン制御にて第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積する例について説明する。
【００８６】
［実施例３に係るパケット伝送装置によるトークン制御手法］
まず、実施例３に係るパケット伝送装置によるトークン制御手法を説明する。図１２は、実施例３に係るパケット伝送装置によるトークン制御手法を説明するための図である。
【００８７】
同図に示すように、本実施例に係るパケット伝送装置は、図６に示した第１メモリ４１および第２メモリ４２を一体化したメモリ３００を有し、メモリ３００には、バースト閾値が設定されている。バースト閾値は、対向装置に対して一度に出力可能なパケット量の最大値を規定するための閾値である。バースト閾値以下の容量のパケットが出力された場合には、パケットを受信する対向装置におけるバーストの発生が回避されることとなる。本実施例では、バースト閾値として、第１メモリ４１の第１上限トークン値が設定される。
【００８８】
このような構成の下で、本実施例に係るパケット伝送装置は、第１メモリ４１の第１総トークン値に所定の周期で所定のトークン値を加算する（図１２の（１）参照）。また、本実施例に係るパケット伝送装置は、パケットの出力に応じて第１メモリ４１の第１総トークン値から所定のトークン値を減算する（図１２の（２）参照）。
【００８９】
そして、本実施例に係るパケット伝送装置は、トークン値の加算後の第１総トークン値がバースト閾値を超過する場合に、バースト閾値を超過する分のトークン値を第２メモリ４２の第２総トークン値に加算する（図１２の（３）参照）。
【００９０】
このように、本実施例に係るパケット伝送装置は、第１メモリ４１および第２メモリ４２を一体化したメモリ３００を有し、メモリ３００において第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積する。このため、本実施例に係るパケット伝送装置は、実施例１と同様に、メモリの上限値を超過したトークン値を全て廃棄する従来の手法と比較して帯域幅の減少を抑制することができる。さらに、本実施例に係るパケット伝送装置は、第１メモリ４１および第２メモリ４２をメモリ３００として一体化しているため、装置構成を簡素化することができる。
【００９１】
［実施例３に係るパケット伝送装置の構成］
次に、実施例３に係るパケット伝送装置が有する帯域調整部の構成について説明する。図１３は、実施例３に係るパケット伝送装置２０ａが有する帯域調整部３２ａの構成を示すブロック図である。なお、以下では、図６で示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。また、実施例３に係るパケット伝送装置２０ａの構成は、図５に示した構成と同様であるため、ここでは、その説明を省略する。
【００９２】
図１３に示すように、帯域調整部３２ａは、図６に示した第１メモリ４１および第２メモリ４２に代えて、メモリ３００およびバースト管理メモリ３１０を有する。また、帯域調整部３２ａは、図６に示したキュー選択部４４および帯域制御部４５に代えて、キュー選択部４４ａおよび帯域制御部４５ａを有する。
【００９３】
メモリ３００は、図６に示した第１メモリ４１および第２メモリ４２を一体化したメモリである。本実施例では、第１メモリ４１に記憶された第１上限トークン値は、バースト管理メモリ３１０の後述するバースト閾値として設定される。また、第２メモリ４２に記憶された第２上限トークン値は、メモリ３００（第１メモリ４１および第２メモリ４２）全体に記憶されているトークン値の上限値を示す。なお、以下では、第２メモリ４２に記憶された第２上限トークン値を「メモリ上限トークン値」と呼ぶこととする。
【００９４】
バースト管理メモリ３１０は、対向装置におけるバーストを制御するための各種情報を記憶する。具体的には、バースト管理メモリ３１０は、キュー２３それぞれについて、バースト許容トークン値及びバースト閾値を対応付けて記憶する。バースト許容トークン値は、対向装置に対して一度に出力可能なパケット量に対応するトークン値を示す。バースト閾値は、対向装置に対して一度に出力可能なパケット量の最大値を規定するための閾値であり、バースト許容トークン値の上限値を示す。本実施例では、第１メモリ４１に記憶された第１上限トークン値がバースト閾値に設定される。
【００９５】
キュー選択部４４ａは、パケットの出力対象となるキュー２３を選択し、選択したキュー２３のキューＩＤをキュー管理部４３へ通知する。具体的には、キュー選択部４４ａは、ＲＲ（Ｒｏｕｎｄ  Ｒｏｂｉｎ）対象フラグ設定部５１ａと、ＲＲ処理部５２とを有する。
【００９６】
ＲＲ対象フラグ設定部５１ａは、第１メモリ４１の第１総トークン値とバースト管理メモリ３１０のバースト許容トークン値とに応じて、複数のキュー２３のうちパケットの出力可能なキュー２３を決定し、その決定結果をＲＲ処理部５２へ通知する。具体的には、ＲＲ対象フラグ設定部５１ａは、キュー管理部４３から通知されるキュー状態情報からパケットが格納されているキュー２３を判別し、当該キュー２３の第１総トークン値を第１メモリ４１から読み出す。さらに、ＲＲ対象フラグ設定部５１ａは、当該キュー２３のバースト許容トークン値をバースト管理メモリ３１０から読み出す。そして、ＲＲ対象フラグ設定部５１ａは、第１総トークン値が０よりも大きく、かつ、バースト許容トークン値が０よりも大きい場合に、パケットの出力を許可するためのＲＲ対象フラグ「ＯＮ」を当該キュー２３のキューＩＤに設定する。
【００９７】
また、ＲＲ対象フラグ設定部５１ａは、第１総トークン値が０以下であるか、又は、バースト許容トークン値が０以下である場合には、パケットの出力を許可しないためのＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する。また、ＲＲ対象フラグ設定部５１は、キュー管理部４３から通知されるキュー状態情報からパケットが格納されていないキュー２３を判別した場合には、パケットの出力不可を示すＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する。そして、ＲＲ対象フラグ設定部５１ａは、ＲＲ対象フラグを設定したキューＩＤをＲＲ処理部５２へ通知する。
【００９８】
帯域制御部４５ａは、トークン制御を行うとともに、トークン制御にて第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積し、パケットの出力に伴い第１メモリ４１からトークン値が消費された場合に、第２メモリ４２のトークン値を加算する。具体的には、帯域制御部４５ａは、トークン制御部６１ａと、キュー監視部６２と、超過時制御部６３ａと、過小時制御部６４とを有する。
【００９９】
トークン制御部６１ａは、基本的には図６に示したトークン制御部６１と同様の処理を行う。さらに、トークン制御部６１ａは、キュー２３からのパケットの出力に応じてバースト管理メモリ３１０のバースト許容トークン値から所定のトークン値を減算する。具体的には、トークン制御部６１ａは、デキューを実行したキュー２３のキューＩＤとデキューされたパケットのパケット長をキュー管理部４３から受付けると、キューＩＤで示すキュー２３のバースト許容トークン値からパケット長分のトークン値を減算する。そして、トークン制御部６１ａは、減算後のバースト許容トークン値をバースト管理メモリ３１０に格納する。
【０１００】
超過時制御部６３ａは、トークン制御部６１によるトークン値の加算に際して、加算後の第１総トークン値が所定の上限値を超過する場合に、上限値を超過する分のトークン値（以下「超過トークン値」という）を第２メモリ４２の第２総トークン値に加算する。
【０１０１】
具体的には、超過時制御部６３ａは、第１メモリ４１から第１総トークン値及び追加トークン値を読み出す。そして、超過時制御部６３ａは、バースト管理メモリ３１０からバースト閾値及びバースト許容トークン値を読み出す。そして、超過時制御部６３ａは、追加トークン値を第１総トークン値に加算する。そして、超過時制御部６３ａは、追加トークン値の加算後の第１総トークン値とバースト閾値とを比較し、加算後の第１総トークン値がバースト閾値以下である場合に、超過トークン値を０（なし）とする。
【０１０２】
一方、超過時制御部６３ａは、加算後の第１総トークン値がバースト閾値よりも大きい場合に、キュー監視部６２からの監視結果を基にキュー２３にパケットが格納されているか否かを判断する。そして、超過時制御部６３ａは、キュー２３にパケットが格納されていないと判断した場合に、超過トークン値を０（廃棄）とする。一方、超過時制御部６３ａは、キュー２３にパケットが格納されていると判断した場合には、追加トークン値の加算後の第１総トークン値とメモリ上限トークン値とを比較する。
【０１０３】
そして、超過時制御部６３ａは、加算後の第１総トークン値がメモリ上限トークン値以下である場合に、第１総トークン値からバースト閾値を減算することによって超過トークン値を算出する。一方、超過時制御部６３ａは、加算後の第１総トークン値がメモリ上限トークン値よりも大きい場合に、メモリ上限トークン値からバースト閾値を減算することによって超過トークン値を算出する。そして、超過時制御部６３ａは、第１総トークン値をバースト閾値に更新する。そして、超過時制御部６３ａは、算出した超過トークン値を第２メモリ４２から読み出した第２総トークン値に加算し、加算後の第２総トークン値を第２メモリ４２に格納する。
【０１０４】
また、超過時制御部６３ａは、トークン制御部６１ａによるトークン値の加算に際して、バースト許容トークン値をバースト閾値に更新し、更新後のバースト許容トークン値をバースト管理メモリ３１０に格納する。
【０１０５】
［実施例３に係るパケット伝送装置による処理］
次に、実施例３に係るパケット伝送装置２０ａによる処理を説明する。ここでは、まず、パケット出力処理について説明し、その後、超過時制御処理について説明する。図１４は、実施例３に係るパケット伝送装置２０ａによるパケット出力処理の処理手順を示すフローチャートである。図１５−１は、実施例３における帯域制御部４５ａによる超過時制御処理の処理手順を示すフローチャートである。なお、実施例３における帯域制御部４５ａによる過小時制御処理の処理手順は、図９に示した処理手順と同様であるため、ここではその説明を省略する。
【０１０６】
［パケット出力処理］
図１４は、実施例３に係るパケット伝送装置２０ａによるパケット出力処理の処理手順を示すフローチャートである。図１４に示すように、パケット伝送装置２０ａでは、帯域調整部３２ａのキュー選択部４４ａが、キュー管理部４３から通知されるキュー状態情報からキュー２３にパケットが格納されているか否かを判定する（ステップＳ７１）。キュー２３にパケットが格納されていない場合には（ステップＳ７１否定）、キュー選択部４４ａは、パケットの出力不可を示すＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する（ステップＳ７２）。
【０１０７】
一方、キュー２３にパケットが格納されている場合には（ステップＳ７１肯定）、キュー選択部４４ａは、当該キュー２３の第１トークン値を第１メモリ４１から読み出す。さらに、キュー選択部４４ａは、当該キュー２３のバースト許容トークン値をバースト管理メモリ３１０から読み出す。そして、キュー選択部４４ａは、第１総トークン値が０よりも大きく、かつ、バースト許容トークン値が０よりも大きいか否かを判定する（ステップＳ７３）。第１総トークン値が０以下であるか、又は、バースト許容トークン値が０以下である場合に、キュー選択部４４ａは、ＲＲ対象フラグ「ＯＦＦ」を当該キュー２３のキューＩＤに設定する（ステップＳ７４）。一方、第１総トークン値が０よりも大きく、かつ、バースト許容トークン値が０よりも大きい場合に、キュー選択部４４ａは、パケットの出力を許可するためのＲＲ対象フラグ「ＯＮ」を当該キュー２３のキューＩＤに設定する（ステップＳ７５）。
【０１０８】
続いて、キュー選択部４４ａは、ＲＲ対象フラグを設定したキューＩＤが示すキュー２３のうちＲＲ対象フラグ「ＯＮ」が設定されたキュー２３をＲＲにより選択し、選択したキュー２３のキューＩＤをキュー管理部４３に送信する（ステップＳ７６）。
【０１０９】
続いて、キュー管理部４３は、キュー選択部４４ａにより選択されたキュー２３のキューＩＤを受付けると、当該キューＩＤで示すキュー２３からパケットを出力する（ステップＳ７７）。
【０１１０】
そして、帯域制御部４５ａは、デキューを実行したキュー２３のキューＩＤとデキューされたパケットのパケット長をキュー管理部４３から受付けると、キューＩＤで示すキュー２３の第１総トークン値からパケット長分のトークン値を減算する（ステップＳ７８）。そして、帯域制御部４５ａは、減算後の第１総トークン値を第１メモリ４１に格納する（ステップＳ７９）。
【０１１１】
そして、帯域制御部４５ａは、キューＩＤで示すキュー２３のバースト許容トークン値からパケット長分のトークン値を減算する（ステップＳ８０）。そして、帯域制御部４５ａは、減算後のバースト許容トークン値をバースト管理メモリ３１０に格納する（ステップＳ８１）。
【０１１２】
［超過時制御処理］
図１５−１は、実施例３における帯域制御部４５ａによる超過時制御処理の処理手順を示すフローチャートである。なお、図１５−１に示す処理手順は、例えば、第１メモリ４１の第１総トークン値に所定のトークン値が加算されるたびに実行されるものとする。図１５−１に示すように、帯域制御部４５ａでは、まず、超過時制御部６３ａが、第１メモリ４１から第１総トークン値及び追加トークン値を読み出す（ステップＳ９１）。そして、超過時制御部６３ａは、バースト管理メモリ３１０からバースト閾値及びバースト許容トークン値を読み出す（ステップＳ９２）。そして、超過時制御部６３ａは、追加トークン値を第１総トークン値に加算する（ステップＳ９３）。そして、超過時制御部６３ａは、加算後の第１総トークン値とバースト閾値とを比較し（ステップＳ９４）、加算後の第１総トークン値がバースト閾値以下である場合に（ステップＳ９４否定）、超過トークン値を０（なし）とし（ステップＳ９５）、処理をステップＳ１０２に進める。
【０１１３】
一方、超過時制御部６３ａは、加算後の第１総トークン値がバースト閾値よりも大きい場合に（ステップＳ９４肯定）、キュー監視部６２からの監視結果を基にキュー２３にパケットが格納されているか否かを判断する（ステップＳ９６）。そして、超過時制御部６３ａは、キュー２３にパケットが格納されていないと判断した場合に（ステップＳ９６否定）、超過トークン値を０（廃棄）とする（ステップＳ９７）。一方、超過時制御部６３ａは、キュー２３にパケットが格納されていると判断した場合に（ステップＳ９６肯定）、追加トークン値の加算後の第１総トークン値とメモリ上限トークン値とを比較する（ステップＳ９８）。
【０１１４】
そして、超過時制御部６３ａは、加算後の第１総トークン値がメモリ上限トークン値以下である場合に（ステップＳ９８否定）、第１総トークン値からバースト閾値を減算することによって超過トークン値を算出する（ステップＳ９９）。一方、超過時制御部６３ａは、加算後の第１総トークン値がメモリ上限トークン値よりも大きい場合に（ステップＳ９８肯定）、メモリ上限トークン値からバースト閾値を減算することによって超過トークン値を算出する（ステップＳ１００）。さらに、超過時制御部６３ａは、ステップＳ９７、Ｓ９９およびＳ１００の処理により超過トークン値を算出すると、第１総トークン値をバースト閾値に更新する（ステップＳ１０１）。
【０１１５】
そして、超過時制御部６３ａは、第１総トークン値を第１メモリ４１に格納し（ステップＳ１０２）、第２メモリ４２から第２総トークン値を読み出す（ステップＳ１０３）。
そして、超過時制御部６３ａは、第２総トークン値を、ステップＳ９５、Ｓ９７、Ｓ９９又はＳ１００で求めた超過トークン値に更新し（ステップＳ１０４）、更新後の第２総トークン値を第２メモリ４２に格納する（ステップＳ１０５）。
【０１１６】
そして、超過時制御部６３ａは、バースト許容トークン値をバースト閾値に更新し（ステップＳ１０６）、更新後のバースト許容トークン値をバースト管理メモリ３１０に格納する（ステップＳ１０７）。
【０１１７】
なお、図１５−１に示した処理手順では、便宜上、第１総トークン値と第２総トークン値の２つのパラメータ値が存在するものとして説明を行った。しかし、本実施例に係るパケット伝送装置２０ａは、実際には、図１３に示すように、第１総トークン値及び第２総トークン値を一つのパラメータ値である総トークン値とし、一つの総トークン値の中でトークン値のやりとりを行う。パケット伝送装置２０ａが総トークン値の中でトークン値のやり取りを行う場合の超過時制御処理の処理手順を図１５−２に示す。以下では、図１５−２に示す処理手順のうち図１５−１に示す処理手順と同様の処理手順には同一の符号を付してその説明を省略する。
【０１１８】
図１５−２に示すように、超過時制御部６３ａは、追加トークン値の加算後の第１総トークン値がバースト閾値よりも大きい場合に（ステップＳ９４肯定）、キュー監視部６２からの監視結果を基にキュー２３にパケットが格納されているか否かを判断する（ステップＳ９６）。そして、超過時制御部６３ａは、キュー２３にパケットが格納されていないと判断した場合に（ステップＳ９６否定）、総トークン値をバースト閾値に更新し（ステップＳ９６ａ）、処理をステップＳ１０２に進める。
【０１１９】
一方、超過時制御部６３ａは、キュー２３にパケットが格納されていると判断した場合に（ステップＳ９６肯定）、追加トークン値の加算後の総トークン値とメモリ上限トークン値とを比較する（ステップＳ９８）。
【０１２０】
そして、超過時制御部６３ａは、加算後の総トークン値がメモリ上限トークン値よりも大きい場合に（ステップＳ９８肯定）、総トークン値をメモリ上限トークン値に更新し（ステップＳ９８ａ）、処理をステップＳ１０２に進める。
【０１２１】
［実施例３の効果］
上述したように、実施例３に係るパケット伝送装置２０ａは、第１メモリ４１および第２メモリ４２を一体化したメモリ３００を有し、メモリ３００において第１メモリ４１から溢れたトークン値を第２メモリ４２に蓄積する。このため、パケット伝送装置２０ａは、実施例１と同様に、メモリの上限値を超過したトークン値を全て廃棄する従来の手法と比較して帯域幅の減少を抑制することができる。さらに、パケット伝送装置２０ａは、第１メモリ４１および第２メモリ４２をメモリ３００として一体化しているため、装置構成を簡素化することができる。
【０１２２】
［バースト閾値の推奨値］
最後に、本実施例におけるバースト閾値の推奨値について説明する。本実施例では、第１総トークン値に所定の周期で追加トークン値を加算する。この追加トークン値は、追加トークン値を第１総トークン値に加算する周期（以下「追加周期」という）が大きくなるほど、大きくなる。すなわち、追加トークン値は、追加周期に依存し、以下の式により算出される。
追加トークン値＝出力帯域／（１秒／追加周期）  ・・・  （１）
なお、上記式（１）において、出力帯域は、１秒間に出力されるパケット量を示す。
【０１２３】
そして、上記式（１）により求められる追加トークン値が前回の追加周期から次回の追加周期までの間に消費される場合には、所望の帯域のパケットを出力することが可能となる。
【０１２４】
図１６は、バースト閾値が追加トークン値と等しい場合のパケットの出力履歴を示す図である。図１６は、図表３０及び図表４０を含んでいる。図表３０は、横軸が時間を表し、縦軸が出力帯域を表す。図表４０は、横軸が時間を表し、縦軸が第１総トークン値を表す。図表３０及び図表４０では、バースト閾値とパケットの出力量とが等しく、追加トークン値が第１総トークン値に加算された後にパケットが出力された様子を示している。図表３０及び図表４０に示すように、バースト閾値が少なくとも追加トークン値と等しい場合には、所望の帯域である１Ｇｂｐｓ分のパケットを出力することができることが分かる。
【０１２５】
一方、バースト閾値が追加トークン値よりも小さい場合には、追加周期が到来するたびに第１総トークン値がバースト閾値を超える。このため、所望の帯域のパケットを出力することができなくなる。
【０１２６】
図１７は、バースト閾値が追加トークン値よりも小さい場合のパケットの出力履歴を示す図である。図１７は、図表５０及び図表６０を含んでいる。図表５０は、横軸が時間を表し、縦軸が出力帯域を表す。図表６０は、横軸が時間を表し、縦軸が第１総トークン値を表す。図表５０及び図表６０では、バースト閾値が追加トークン値よりも大きく、追加トークン値が第１総トークン値に加算された後にパケットが出力された様子を示している。図表５０及び図表６０に示すように、バースト閾値が追加トークン値よりも小さい場合には、所望の帯域である１Ｇｂｐｓ分のパケットを出力することができなくなる。
【０１２７】
以上のことから、所望の帯域のパケットが出力されるためには、バースト閾値は、少なくとも追加トークン値以上である必要がある。しかし、バースト閾値が追加トークン値と等しい場合には、一旦失われた出力帯域が元の値に戻るまでの時間（以下「帯域取り戻し時間」という）が長期化する。なお、本実施例では、溢れたトークン値を取り戻す機能を備えるため、バースト閾値を最小のバースト閾値とすることができる。
【０１２８】
図１８は、バースト閾値と帯域取り戻し時間との関係を示す図である。図１８の下側の図では、バースト閾値が追加トークン値と等しく、図１８の上側の図では、バースト閾値が追加トークン値よりも大きいものとする。図１８に示すように、バースト閾値が追加トークン値よりも大きい場合の帯域取り戻し時間Ｔ１は、バースト閾値が追加トークン値と等しい場合の帯域取り戻し時間Ｔ２よりも短い。
【０１２９】
このように、バースト閾値が追加トークン値と等しい場合には、バースト閾値が追加トークン値よりも大きい場合と比較して、帯域の取り戻し時間が長期化する。このため、バースト閾値としては、追加トークン値よりも大きい値、例えば、追加トークン値を１．５倍した値が設定されることが望ましい。なお、ここでは、バースト閾値の推奨値について説明を行ったが、実施例２における第１上限トークン値の推奨値としても、追加トークン値よりも大きい値、例えば、追加トークン値を１．５倍した値が設定されることが望ましい。
【０１３０】
なお、上記実施例２では、バースト量を通常バケット（第１メモリ４１）により制御する。このため、実施例２における基準トークン値および第２上限トークン値としては、それぞれ、バースト量を約１０倍した値および追加トークン値と同じ値が設定されることが望ましい。一方、上記実施例３では、バースト閾値によりバースト量を制御する。このため、実施例３における上限トークン値としては、実施例２と同様にバースト量を約１０倍した値が設定されることが望ましい。各パラメータの推奨値を以下の表１に示す。
【０１３１】
【表１】
0005598260.tif 000002
【実施例４】
【０１３２】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下にその他の実施例について説明する。
【０１３３】
［第２総トークン値からのトークン値の加算周期］
上記実施例２では、第１総トークン値に所定の周期で加算されるトークン値とともに、第２総トークン値からのトークン値を第１総トークン値に加算することとした。しかしながら、開示の技術はこれに限られるものではない。例えば、第１総トークン値に所定の周期で加算されるトークン値の加算周期と異なる加算周期を用意し、当該異なる加算周期で第２総トークン値からのトークン値を第１総トークン値に加算することとしてもよい。
【０１３４】
［プログラム］
ところで、上記の実施例で説明した各種は、予め用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図１９を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１９は、パケット伝送プログラムを実行するコンピュータを示す図である。
【０１３５】
同図に示すように、パケット伝送装置としてのコンピュータ１００は、第１メモリ１１０、第２メモリ１２０、ＲＯＭ（Read Only Memory)１３０及びＣＰＵ（Central Processing Unit）１４０を備える。また、第１メモリ１１０、第２メモリ１２０、ＲＯＭ１３０及びＣＰＵ１４０は、バス１５０で接続される。
【０１３６】
ＲＯＭ１３０は、上記実施例と同様の機能を発揮するパケット伝送プログラム、つまり、図１９に示すように、トークン制御プログラム１３１、超過時制御プログラム１３２及び過小時制御プログラム１３３を記憶する。なお、各プログラム１３１〜１３３は、必ずしもＲＯＭ１３０に記憶される必要はない。
【０１３７】
ＣＰＵ１４０は、各プログラム１３１〜１３３をＲＯＭ１３０から読み出して実行する。すると、図１９に示すように、各プログラム１３１〜１３３は、トークン制御プロセス１４１、超過時制御プロセス１４２及び過小時制御プロセス１４３として機能する。なお、各プロセス１４１〜１４３は、図１に示したトークン制御部１３、超過時制御部１４及び過小時制御部１５にそれぞれ対応する。
【０１３８】
なお、第１メモリ１１０及び第２メモリ１２０は、図１に示した第１の記憶部１１及び第２の記憶部１２にそれぞれ対応する。
【符号の説明】
【０１３９】
１０、２０        パケット伝送装置
１１        第１の記憶部
１１ａ        第１の総トークン値
１２        第２の記憶部
１２ａ        第２の総トークン値
１３、６１、６１ａ        トークン制御部
１４、６３、６３ａ        超過時制御部
１５、６４        過小時制御部
２１        パケット管理部
２１ａ        共有メモリ
２２        スケジューラ部
２３        キュー
３１        キュー振り分け部
３２        帯域調整部
３３        出力調整部
４１        第１メモリ
４２        第２メモリ
４３        キュー管理部
４４、４４ａ        キュー選択部
４５、４５ａ        帯域制御部
５１、５１ａ        ＲＲ対象フラグ設定部
５２        ＲＲ処理部
６２        キュー監視部
３００  メモリ
３１０  バースト管理メモリ
【図１】
0005598260.tif 000003
【図２】
0005598260.tif 000004
【図３】
0005598260.tif 000005
【図４】
0005598260.tif 000006
【図５】
0005598260.tif 000007
【図６】
0005598260.tif 000008
【図７】
0005598260.tif 000009
【図８】
0005598260.tif 000010
【図９】
0005598260.tif 000011
【図１０】
0005598260.tif 000012
【図１１】
0005598260.tif 000013
【図１２】
0005598260.tif 000014
【図１３】
0005598260.tif 000015
【図１４】
0005598260.tif 000016
【図１５−１】
0005598260.tif 000017
【図１５−２】
0005598260.tif 000018
【図１６】
0005598260.tif 000019
【図１７】
0005598260.tif 000020
【図１８】
0005598260.tif 000021
【図１９】
0005598260.tif 000022
【図２０】
0005598260.tif 000023
【図２１】
0005598260.tif 000024
【図２２】
0005598260.tif 000025
【図２３】
0005598260.tif 000026
【図２４】
0005598260.tif 000027