(57)【要約】【課題】出力レートを適切に平滑化することを課題とする。【解決手段】キュー情報と当該キューの蓄積トークン値とを対応づけて記憶し、未使用なキューや、蓄積トークン値が所定の上限値を超過しているキューを識別するキュー情報を取得し、キュー情報が取得されると、パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択し、複数のキューそれぞれに所定のトークン値を追加する際に、選択されたキューを識別するキュー情報に対応づけられた蓄積トークン値にのみ所定のトークン値を追加する。【選択図】        図２
2009200947.tif 000002
【特許請求の範囲】
【請求項１】
パケットを格納する複数のキューそれぞれに所定のトークン値を追加しつつ割り当て、当該キューに割り当てられたトークン値の蓄積を示す蓄積トークン値が当該キューに格納されたパケットのパケット長より多い場合に、当該キューから当該パケットを出力し、当該キューからパケットが出力される場合に、当該パケットが出力されたキューの当該蓄積トークン値から当該パケット長を減算するパケット伝送装置であって、
前記キューを識別するキュー情報と当該キューの前記蓄積トークン値とを対応づけて記憶する記憶手段と、
前記パケット伝送装置において用いられていない前記キューを識別する前記キュー情報、および／または、前記蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得する取得手段と、
前記取得手段によって前記キュー情報が取得されると、前記パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する選択手段と、
複数のキューそれぞれに所定のトークン値を追加する際に、前記選択手段によって選択された前記キューを識別する前記キュー情報に対応づけて前記記憶手段に記憶されている前記蓄積トークン値にのみ前記所定のトークン値を追加する追加手段と、
を備えたことを特徴とするパケット伝送装置。
【請求項２】
前記選択手段によって前記キューが選択されると、前記複数のキューの内選択された当該キューが占める割合を算出する割合算出手段をさらに備え、
前記追加手段は、前記選択手段によって選択された前記キューに、前記所定のトークン値の内、前記割合算出手段によって算出された前記割合に相当するトークン値を追加することを特徴とする請求項１に記載のパケット伝送装置。
【請求項３】
パケットを格納する複数のキューそれぞれに所定のトークン値を追加しつつ割り当て、当該キューに割り当てられたトークン値の蓄積を示す蓄積トークン値が当該キューに格納されたパケットのパケット長より多い場合に、当該キューから当該パケットを出力し、当該キューからパケットが出力される場合に、当該パケットが出力されたキューの当該蓄積トークン値から当該パケット長を減算するパケット伝送方法であって、
前記キューを識別するキュー情報と当該キューの前記蓄積トークン値とを対応づけて記憶部に記憶する記憶工程と、
用いられていない前記キューを識別する前記キュー情報、および／または、前記蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得する取得工程と、
前記取得工程によって前記キュー情報が取得されると、前記パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する選択工程と、
複数のキューそれぞれに所定のトークン値を追加する際に、前記選択工程によって選択された前記キューを識別する前記キュー情報に対応づけて前記記憶部に記憶されている前記蓄積トークン値にのみ前記所定のトークン値を追加する追加工程と、
を含んだことを特徴とするパケット伝送方法。
【請求項４】
パケットを格納する複数のキューそれぞれに所定のトークン値を追加しつつ割り当て、当該キューに割り当てられたトークン値の蓄積を示す蓄積トークン値が当該キューに格納されたパケットのパケット長より多い場合に、当該キューから当該パケットを出力し、当該キューからパケットが出力される場合に、当該パケットが出力されたキューの当該蓄積トークン値から当該パケット長を減算する制御方法をコンピュータに実行させるパケット伝送プログラムであって、
前記キューを識別するキュー情報と当該キューの前記蓄積トークン値とを対応づけて記憶部に記憶する記憶手順と、
用いられていない前記キューを識別する前記キュー情報、および／または、前記蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得する取得手順と、
前記取得手順によって前記キュー情報が取得されると、前記パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する選択手順と、
複数のキューそれぞれに所定のトークン値を追加する際に、前記選択手順によって選択された前記キューを識別する前記キュー情報に対応づけて前記記憶部に記憶されている前記蓄積トークン値にのみ前記所定のトークン値を追加する追加手順と、
をコンピュータに実行させることを特徴とするパケット伝送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、パケット伝送装置、パケット伝送方法およびパケット伝送プログラムに関する。
【背景技術】
【０００２】
従来より、パケット伝送装置では、パケット伝送装置から出力されるパケットの出力レートを制御（平滑化）する手法として、パケットの出力を許可するかを判別する符号であるトークンを用いた制御が行われている。
【０００３】
一般的なトークンを用いた制御手法について簡単に説明する。例えば、トークンを用いた制御を行うトークン制御回路は、パケット伝送装置から出力されるパケットを格納する複数のキューそれぞれにトークン値を定期的に割り当てて追加する。また、トークン制御回路は、キューに割り当てられたトークンの値であるトークン値が、出力するパケットのパケット長より多い場合に、パケットを出力する。また、トークン制御回路は、出力されたパケットが格納されたキューのトークン値から、出力したパケットのパケット長に相当する値を減算する。
【０００４】
ここで、出力レートを平滑化する手法に関して、様々な手法が行われている。例えば、パケット伝送装置は、図１５の（１）に示すように、キューごとに、トークン値を追加する処理を繰り返すので、一つのトークン制御回路により制御される処理キュー数の増加に伴って、同じキューに対してトークンを再度追加するまでの時間を示すトークン追加周期が長くなる。このため、キュー数の増加に伴って長くなるトークン追加周期に対応して、一度に追加する追加トークン値を増加する手法が行われている。
【０００５】
また、例えば、キュー数の増加に伴って、一つのパケット伝送装置内に設置するトークン制御回路を増加する手法が行われている。具体的な例をあげて説明すると、パケット伝送装置は、図１５の（２）に示すように、パケット伝送装置が用いるキューの数とトークン制御回路とトークン格納メモリとを、それぞれ同数備え、トークン制御回路各々が、担当する一つのキューに関するトークン制御のみ行う。なお、特許文献１（特開２００６−３３３０９１号公報）には、一般的なパケットシェイパに関する技術が開示されている。
【０００６】
【特許文献１】特開２００６−３３３０９１号公報（第７−９、１６−１７頁、第９−１２図）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上記した従来の技術は、出力レートを適切に平滑化することができないという課題があった。
【０００８】
例えば、一度に追加する追加トークン値を増加する従来の手法では、連続して出力することができるデータ量（またはデータの個数）であるバースト長が増加し、パケット伝送装置が、出力レートを細やかに平滑化できなかった。また、バースト長が増加した結果、出力されたパケットを受信する対向装置では、パケット溢れが発生し、パケットの廃棄が生じる可能性も生じていた。
【０００９】
シェーピングレート（出力レート）が「１Ｇｂｐｓ」である場合を例にあげて、具体的に説明する。まず、シェーピングレートと追加トークン値とトークン追加周期との関係は、以下の（式１）によって示される。
（式１）「シェーピングレート」＝「追加トークン値」／「トークン追加周期」
【００１０】
この（式１）により、例えば、一度に追加する追加トークン値を増加する手法を実行する従来のパケット伝送装置では、トークン追加周期が「１μｓ」の場合には、追加トークン値が１２５ｂｙｔｅであり、バースト長は、１００ｂｙｔｅのパケット１個分となる（１００ｂｙｔｅのパケットならば、連続して１個出力する）。また、同様に、トークン追加周期が「１００μｓ」の場合には、追加トークン値が１２５００ｂｙｔｅであり、バースト長は、１００ｂｙｔｅのパケット１２５個分となる（１００ｂｙｔｅのパケットならば、連続して１２５個出力し、１０００ｂｙｔｅのパケットならば、連続して１２個出力する）。
【００１１】
この結果、トークン追加周期が「１μｓ」から「１００μｓ」へと長くなることによって、バースト長は、１００ｂｙｔｅのパケット１個分から、１００ｂｙｔｅのパケット１２５個分へと増加していた。
【００１２】
さらに、従来のパケット伝送装置では、一般的に、蓄積可能なトークン値の上限値（上限蓄積トークン値、最大バースト値）として（数回の追加トークン値分を蓄積可能にするために）、追加トークン値より大きな値が設定される。この結果、一度に追加する追加トークン値を増加する手法を実行する従来のパケット伝送装置は、一度に追加される追加トークン値によって出力されるバースト長よりも、さらに多くのパケットを出力していた。
【００１３】
このように、一度に追加する追加トークン値を増加する手法を実行する従来のパケット伝送装置では、細やかな制御（一度に小さい追加トークン値を、頻繁に追加する手法）を実現することができず、バースト長が増加し、出力レートを適切に平滑化することができなかった。
【００１４】
また、例えば、複数の回路を用いる従来の手法では、パケット伝送装置が、回路規模を増大させずに、出力レートを適切に平滑化することができなかった。
【００１５】
具体的に例をあげて説明すると、Ｎ個のキューと１つのトークン制御回路とを備えるパケット伝送装置（パケット伝送装置甲とする）と比較して、トークン追加周期を１／Ｎに短縮する場合に、複数の回路を用いる手法を実行する従来のパケット伝送装置は、パケット伝送装置甲と比較してＮ倍の回路規模を備えなければならなかった。なお、上記した特許文献１には、出力レートを適切に平滑化する手法については開示されていない。
【００１６】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、出力レートを適切に平滑化することが可能であるパケット伝送装置、パケット伝送方法およびパケット伝送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上述した課題を解決し、目的を達成するため、このパケット伝送装置は、パケットを格納する複数のキューそれぞれに所定のトークン値を追加しつつ割り当て、当該キューに割り当てられたトークン値の蓄積を示す蓄積トークン値が当該キューに格納されたパケットのパケット長より多い場合に、当該キューから当該パケットを出力し、当該キューからパケットが出力される場合に、当該パケットが出力されたキューの当該蓄積トークン値から当該パケット長を減算するパケット伝送装置であって、前記キューを識別するキュー情報と当該キューの前記蓄積トークン値とを対応づけて記憶する記憶手段と、前記パケット伝送装置において用いられていない前記キューを識別する前記キュー情報、および／または、前記蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得する取得手段と、前記取得手段によって前記キュー情報が取得されると、前記パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する選択手段と、複数のキューそれぞれに所定のトークン値を追加する際に、前記選択手段によって選択された前記キューを識別する前記キュー情報に対応づけて前記記憶手段に記憶されている前記蓄積トークン値にのみ前記所定のトークン値を追加する追加手段と、を備えたことを要件とする。
【００１８】
また、このパケット伝送装置は、さらに、前記選択手段によって前記キューが選択されると、前記複数のキューの内選択された当該キューが占める割合を算出する割合算出手段をさらに備え、前記追加手段は、前記選択手段によって選択された前記キューに、前記所定のトークン値の内、前記割合算出手段によって算出された前記割合に相当するトークン値を追加することを要件とする。
【発明の効果】
【００１９】
開示のパケット伝送装置によれば、出力レートを適切に平滑化することが可能である。
【００２０】
また、開示のパケット伝送装置によれば、トークン追加周期を変更した場合にも、当該変更に合わせて追加トークン値を変更することができ、出力レートを適切に平滑化することが可能である。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明に係るパケット伝送装置、パケット伝送方法およびパケット伝送プログラムの実施例を詳細に説明する。なお、以下では、実施例１を説明するうえで前提となる技術、実施例１で用いる主要な用語、実施例１に係るパケット伝送装置の概要および特徴、パケット伝送装置の構成および処理の流れを順に説明し、その後、その他の実施例について説明する。
【実施例１】
【００２２】
［前提技術］
まず最初に、図１−１と図１−２とを用いて、実施例１を説明するうえで前提となる技術について説明する。なお、図１−１と図１−２とは、実施例１における前提技術を説明するための図である。
【００２３】
実施例１で用いる「パケット伝送装置」は、トークンを用いた制御（トークン制御）により、パケットの出力を制御する。例えば、パケット伝送装置は、パケットの出力レートを制御するパケットシェイパ（Ｐａｃｋｅｔ  Ｓｈａｐｅｒ）機能を備えるものが該当する。
【００２４】
なお、パケット伝送装置において、トークン制御を用いて出力レートの制御を実行するのは、ネットワークにおいて、資源（例えば、ネットワークの帯域など）を有効利用し、また、ネットワークのサービス品質を保証する上で、ネットワークにおけるトラフィックに対して一定の規制を行うことが必要だからである。
【００２５】
このパケット伝送装置では、入力されたパケット（出力するパケット）を、キューと呼ばれる待ち行列に蓄積する。また、一般的に、パケット伝送装置では、複数のキューを備え、トークン制御による出力レートの調整をキュー単位で行う。
【００２６】
パケット伝送装置において行われるトークン制御について、簡単に説明する。図１−１に示すように、パケット伝送装置は、パケットを格納する複数のキューそれぞれに、一定周期ごとに、所定のトークン値を追加しつつ割り当てる。
【００２７】
例えば、パケット伝送装置が、１０２４個のキュー（＃０〜＃１０２３の合計１０２４個）に対してトークン値を追加する場合を例に説明する。パケット伝送装置は、図１−１の（１）に示すように、キュー「＃０」にトークン値を追加する処理を行い、キュー「＃０」にトークン値を追加する処理を終了すると、続いて、図１−１の（２）に示すように、キュー「＃１」にトークン値を追加する処理を行う。そして、パケット伝送装置は、その他のキューに対して、キュー「＃０」と、キュー「＃１」にトークン値を追加する処理と同様に、キュー「＃１０２３」までトークン値を順番に追加する。
【００２８】
ここで、同じキューに対して、トークン値を再度追加するまでの時間を示すトークン追加周期が「１００μｓ」である場合には、パケット伝送装置が、キュー「＃０」にトークン値を追加する処理を行った「１００μｓ」後に、再度キュー「＃０」にトークン値を追加する。言い換えると、パケット伝送装置は、１０２４個のキューに対するトークン値追加処理を、「１００μｓ」周期で繰り返す。
【００２９】
ここで、実施例１で用いる「トークン」と「トークン値」と「追加トークン値」と「蓄積トークン値」と「上限トークン値」との関係について、簡単に説明する。「トークン」とは、パケットの出力を許可するかを判別する符号（概念）を示す。「トークン値」とは、トークンとして用いられる情報であって、量に関する情報を含むものを示す。「追加トークン値」とは、パケット伝送装置によってパケットを格納する複数のキューそれぞれに、一度に追加されて割り当てられるトークン値を示す。
【００３０】
また、図１−１の（３）に示すように、「蓄積トークン値」とは、キューそれぞれに割り当てられて現に蓄積されている「トークン値」の総和を示す情報であり、「上限トークン値」とは、キューそれぞれに割り当てることが許される蓄積トークン値の上限の値を示す情報である。なお、「蓄積トークン値」と「上限トークン値」とは、キューそれぞれについて、与えられる（あるいは、算出される、設定される）情報である。なお、パケット伝送装置は、上限トークン値を超えてトークン値が割り当てられた場合に、この割り当てられたトークン値を廃棄する。
【００３１】
そして、パケット伝送装置は、図１−２に示すように、蓄積トークン値が、当該キューに格納されたパケットのパケット長より多い場合に、キューから当該パケットを出力する。例えば、図１−２の（４ａ）に示す例では、パケット伝送装置は、キュー「＃０」に割り当てられた蓄積トークン値が、出力するパケット長より多いので、キュー「＃０」からこのパケットを出力する。また、例えば、図１−２の（４ｂ）に示す例では、パケット伝送装置は、キュー「＃１」に割り当てられた蓄積トークン値が、出力するパケット長より少ないので、キュー「＃１」からこのパケットを出力しない。
【００３２】
［パケット伝送装置の概要および特徴］
次に、図２を用いて、実施例１に係るパケット伝送装置の概要および特徴を説明する。図２は、実施例１に係るパケット伝送装置の概要および特徴を説明するための図である。
【００３３】
同図に示すように、実施例１に係るパケット伝送装置は、トークン制御によりパケットの出力を制御する装置であり、以下で説明するように、出力レートを適切に平滑化することが可能である点に主たる特徴がある。なお、ここでは、図２に示すように、説明の便宜上から、パケット伝送装置が、４個のキュー（キュー「♯０」、キュー「♯１」、キュー「♯２」、キュー「♯３」）を備えている場合を例に説明する。
【００３４】
すなわち、実施例１に係るパケット伝送装置は、キューを識別するキュー情報と、当該キューの蓄積トークン値とを対応づけて記憶する。ここで、実施例１に係るパケット伝送装置は、キューそれぞれについて、キュー情報と蓄積トークン値とを対応付けて記憶する。
【００３５】
そして、実施例１に係るパケット伝送装置は、図２の（１）に示すように、未使用なキューを識別するキュー情報や、蓄積トークン値が所定の上限トークン値を超過しているキューを識別するキュー情報を取得する。例えば、図２に示す例では、実施例１に係るパケット伝送装置には、キュー「♯１」に割り当てられた蓄積トークン値が上限トークン値を超過しており、また、キュー「♯２」が未使用なキューであると設定されている。このような場合において、実施例１に係るパケット伝送装置は、取得部が、図２の（１ａ）に示すように、上限トークン値を超過しているキューとして、キュー♯１を識別するキュー情報「♯１」を取得し、図２の（１ｂ）に示すように、未使用なキューとして、キュー♯２を識別するキュー情報「♯２」を取得する。
【００３６】
なお、ここで、実施例１で用いる「未使用なキュー（特許請求の範囲に記載の「パケット伝送装置において用いられていないキュー」に対応する）」とは、例えば、一定期間パケットを格納していないキュー（または、一定期間パケットを出力していないキュー）や、パケット伝送装置を使用する設定者によって「未使用なキュー」として設定されたキューなどが該当する。
【００３７】
そして、実施例１に係るパケット伝送装置は、取得部によってキュー情報が取得されると、パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する。例えば、実施例１に係るパケット伝送装置は、「キュー♯０」と「キュー♯１」と「キュー♯２」と「キュー♯３」とを有しており、このような場合において、実施例１に係るパケット伝送装置は、選択部が、図２の（２）に示すように、取得部によって取得されたキュー情報によって識別される「キュー♯１」および「キュー♯２」以外のキューである「キュー♯０」と「キュー♯３」とを選択する。
【００３８】
そして、実施例１に係るパケット伝送装置は、複数のキューそれぞれに所定のトークン値を追加する際に、選択部によって選択されたキューを識別するキュー情報に対応づけられた蓄積トークン値にのみ、所定のトークン値を追加する。例えば、実施例１に係るパケット伝送装置は、図２の（３）に示す例では、選択部によって選択された「キュー♯０」と「キュー♯３」とにのみ、所定のトークン値を追加する。
【００３９】
このようなことから、実施例１に係るパケット伝送装置は、上記した主たる特徴の如く、出力レートを適切に平滑化することが可能である。
【００４０】
例えば、キュー数の増加した場合にもすべてのキューに対してトークン値を追加し、その際に、一度に追加するトークン値である追加トークン値を増加する従来の手法においては、バースト長が増加し、出力レートを適切に平滑化することができなかった。このような一度に追加する追加トークン値を増加する従来の手法と比較して、開示のパケット伝送装置では、追加する必要のあるキューにのみトークン値を追加することによって、トークン追加周期を短くすることができ、一度に追加する追加トークン値を増加することなく、出力レートを適切に平滑化することが可能である。
【００４１】
また、例えば、追加トークン値を増加する場合であっても、従来の手法（すべてのキューに対して、トークン追加処理を行う手法）と比較して、トークン値の増加量を減少させることができ、出力レートを適切に平滑化することが可能である。
【００４２】
また、例えば、キュー数の増加に伴って、一つのパケット伝送装置内に設置するトークン制御回路を増加することなく、トークン追加周期を短くすることができ、出力レートを適切に平滑化することが可能である。
【００４３】
［パケット伝送装置の構成］
次に、図３〜図７を用いて、図２に示したパケット伝送装置の構成を説明する。なお、図３は、実施例１に係るパケット伝送装置の構成を示すためのブロック図である。図４は、実施例１におけるトークン格納メモリを説明するための図である。図５は、実施例１における追加対象情報記憶部を説明するための図である。図６は、実施例１におけるトークン値追加処理部を説明するための図である。図７は、実施例１における追加割合算出部を説明するための図である。
【００４４】
ここで、図３に示すように、このパケット伝送装置は、送受信部１００と、使用キュー情報入力部１０２と、トークン制御回路部２００とから構成される。
【００４５】
なお、以下では、特に言及しない限り、パケット伝送装置が、１０２４個のキュー１０１を備え（＃０〜＃１０２３の合計１０２４個）、トークン追加周期の初期値が「１００μｓ」であり、パケット伝送装置の使用者によって、トークン追加周期が「１００μｓ」であるとして（トークン追加周期が「１００μｓ」である場合における）追加トークン値が設定された場合について説明する。
【００４６】
送受信部１００は、パケットを一時的に格納するキュー１０１を備え、パケットの入力を受付けて、受付けたパケットをキュー１０１に格納し、キュー１０１に格納したパケットを出力する。具体的には、送受信部１００は、後述するトークン管理部２２０によるトークン制御に基づいて、キュー１０１に格納したパケットを出力する。また、送受信部１００は、パケットを出力すると、後述するトークン値減算処理部２２３に伝達する。
【００４７】
具体的な一例をあげて説明すると、送受信部１００は、キュー１０１に格納したパケットを出力する際に、後述するトークン管理部２２０によるトークン制御処理によって出力が許可された場合には、当該パケットを出力し、後述するトークン管理部２２０によるトークン制御処理によって出力が許可されなかった場合には、当該パケットを出力しない。
【００４８】
なお、送受信部１００は、後述するトークン管理部２２０によるトークン制御処理によって出力が許可されなかった場合には、例えば、その後、後述するトークン値追加処理部２２２により、出力するパケットが格納されたキュー１０１にトークン値が追加され、続いて、後述するトークン管理部２２０によるトークン制御処理によって出力が許可されると、パケットを出力する。
【００４９】
使用キュー情報入力部１０２は、未使用なキューを識別するキュー情報を受付ける。例えば、使用キュー情報入力部１０２は、キーボードやマウス、マイクなどを備え、パケット伝送装置を使用する使用者から、キュー情報の入力を受付ける。また、使用キュー情報入力部１０２は、未使用なキューを識別するキュー情報を、後述する未使用キュー管理部２３１に伝達する。
【００５０】
トークン制御回路部２００は、トークン制御処理の処理手順などを規定したプログラムおよび所要データを格納するための記憶部を有し、これらによって種々のトークン制御処理を実行する。トークン制御回路部２００は、特に本発明に密接に関連するものとして、トークン格納メモリ２０１と、アクセス管理部２１０と、トークン管理部２２０と、追加対象制御部２３０と、を備える。なお、トークン格納メモリ２０１は、特許請求の範囲に記載の「記憶手段」に対応する。
【００５１】
トークン格納メモリ２０１は、キュー情報と蓄積トークン値とを対応づけて記憶する。なお、本実施例では、トークン格納メモリ２０１にキュー情報と蓄積トークン値とに加えて、追加トークン値をさらに対応付けて記憶する手法について説明する。なお、例えば、トークン格納メモリ２０１は、パケット伝送装置の使用者によって、トークン追加周期が「１００μｓ」であるとして（トークン追加周期が「１００μｓ」である場合における）追加トークン値を記憶する。
【００５２】
なお、ここで、トークン格納メモリ２０１が追加トークン値を記憶することは必須の要素ではなく、後述するトークン値追加処理部２２２が一度に追加するトークン値（または、出力レート）を把握できればよい。例えば、後述するトークン値追加処理部２２２が各キューに対して一度に追加するトークン値を識別する際に用いる情報を、トークン値追加処理部２２２が備える内部の記憶部に記憶してもよい。また、例えば、トークン格納メモリ２０１が、出力レートをキューごとに記憶し、開示のパケット伝送装置は、トークン格納メモリ２０１に格納されている出力レートから、キューごとの追加トークン値を算出し、トークン値を追加する処理を実行してもよい。
【００５３】
例えば、トークン格納メモリ２０１は、図４に示すように、キュー情報各々に対応付けて、追加トークン値と蓄積トークン値とを記憶する。具体的に例をあげて説明すると、トークン格納メモリ２０１は、キュー情報「♯０」に対応付けて、追加トークン値「１２５００ｂｙｔｅ」と、蓄積トークン値「３００ｂｙｔｅ」とを記憶する。また、トークン格納メモリ２０１は、キュー情報「♯１」に対応付けて、追加トークン値「１２５００ｂｙｔｅ」と、蓄積トークン値「１００ｂｙｔｅ」とを記憶する。
【００５４】
なお、図４に示すトークン格納メモリ２０１では、開示のパケット伝送装置が、「１０２４個」のキューを備えるものとして記載しているが、本発明はこれに限定されるものではなく、任意の数のキューを備えるパケット伝送装置でよい。例えば、パケット伝送装置は、２４個のキューを備えるものであってもよく、その場合、トークン格納メモリ２０１は、２４個のキューそれぞれについて、キュー情報と蓄積トークン値とを対応づけて記憶する。
【００５５】
アクセス管理部２１０は、後述するトークン管理部２２０からの指示に従って、トークン格納メモリ２０１から情報を読出し、また、トークン格納メモリ２０１に情報を書き込む。具体的には、アクセス管理部２１０は、後述するトークン管理部２２０の指示に従って、追加トークン値を読み出して、読み出した追加トークン値を後述するトークン管理部２２０に伝達する。また、アクセス管理部２１０は、後述するトークン管理部２２０の指示に従って、蓄積トークン値を読み出し、読み出した蓄積トークン値をトークン管理部２２０（後述するトークン値追加処理部２２２やトークン値減算処理部２２３）に伝達する。
【００５６】
また、アクセス管理部２１０は、後述するトークン値追加処理部２２２の指示にしたがって、蓄積トークン値に追加トークン値を追加（加算）し、加算した蓄積トークン値を後述するトークン値追加処理部２２２に伝達する。また、アクセス管理部２１０は、後述するトークン値減算処理部２２３の指示に従って、蓄積トークン値から対応付けられたキュー１０１から出力されたパケット長を減算し、減算した蓄積トークン値を後述するトークン値減算処理部２２３に伝達する。
【００５７】
また、アクセス管理部２１０は、後述するトークン値追加処理部２２２からの指示によるアクセスと、後述するトークン値減算処理部２２３からの指示によるアクセスとについて、アクセス調停を行う。例えば、上記したトークン管理部２２０の各構成部からトークン格納メモリ２０１へのアクセスが、トークン格納メモリにおいて衝突（例えば、同じ箇所の情報を同時に読むなど）することを回避する処理を行う。
【００５８】
トークン管理部２２０は、トークン制御処理を行う制御部であり、特に本発明に密接に関連するものとして、トークン値追加処理部２２２と、トークン値減算処理部２２３とを備える。ここで、トークン値追加処理部２２２は、追加対象情報記憶部２２１を内部に備えるものである。なお、トークン値追加処理部２２２は、特許請求の範囲に記載の「追加手段」に対応する。
【００５９】
ここで、トークン管理部２２０は、図示している後述するトークン値追加処理部２２２とトークン値減算処理部２２３とが別に、パケットの出力を制御するトークン制御処理を行う。具体的には、トークン管理部２２０は、送受信部１００からキュー１０１に格納されたパケットが出力される際に、パケットが出力されるキュー１０１に対応付けられた蓄積トークン値をトークン格納メモリ２０１から読みだす指示をアクセス管理部２１０に指示し、アクセス管理部２１０から蓄積トークン値を伝達されて取得する。そして、トークン管理部２２０は、取得した蓄積トークン値が、当該キューに格納されたパケットのパケット長より多い場合に、キュー１０１から当該パケットの出力を許可する。また、トークン管理部２２０は、取得した蓄積トークン値が、当該キューに格納されたパケットのパケット長より少ない場合に、キュー１０１から当該パケットの出力を許可しない。
【００６０】
追加対象情報記憶部２２１は、後述する追加対象管理部２３３によって選択されたキュー１０１を識別するキュー情報を記憶する。例えば、追加対象情報記憶部２２１は、図５に示すように、トークン値を追加する対象となるキュー１０１を示すキュー情報である「追加対象キュー」を記憶する。図５に示す例を用いて、具体的に説明すると、追加対象情報記憶部２２１は、図５に示す例では、キュー情報「♯０」と、キュー情報「♯１」と、キュー情報「♯４」と、キュー情報「♯７」などを記憶する。
【００６１】
また、追加対象情報記憶部２２１は、後述する追加割合算出部２３４によって算出された情報である追加割合（実際に追加するトークン値を算出する際に用いる情報）を記憶する。例えば、追加対象情報記憶部２２１は、図５に示すように、後述する追加割合算出部２３４によって算出された追加割合として、パケット伝送装置が備える複数のキュー１０１の内、後述する追加対象管理部２３３によって選択されたキュー１０１が占める割合を記憶する。図５に示す例を用いて、具体的に説明すると、追加対象情報記憶部２２１は、追加割合として、「Ｎ」を記憶する。
【００６２】
ここで、開示のパケット伝送装置は、追加割合「Ｎ」として、後述する追加対象管理部２３３によって選択されたキュー１０１の数が全キュー数において占める割合そのものを用いてもよい。
【００６３】
また、開示のパケット伝送装置は、追加割合「Ｎ」として、予め設定された値を用いる場合であってもよい。例えば、開示のパケット伝送装置は、「１／２」や「１／４」、「１／８」、「１／１６」…「１／１０２４」のいずれかを用いる場合であってもよい。これにより、例えば、追加割合として用いる値を一部の値に限定することができ、その結果、後述する追加割合算出部２３４によって、追加割合を算出する際の処理負荷が減少し、追加割合算出処理に用いられる回路を簡素化することが可能である。
【００６４】
また、例えば、追加割合として用いる値として、比較的計算処理が大きくならない値（例えば、「１／１３」や「１／３１」などの値と比較して、「１／２」や「１／４」、「１／８」などの値を用いた場合には、計算処理が小さくなる）を用いることで、後述するトークン値追加処理部２２２によって、実際追加するトークン値を算出する際の処理負荷を減少することができ、追加トークン値算出処理に用いられる回路を簡素化することが可能である。
【００６５】
トークン値追加処理部２２２は、複数のキュー１０１それぞれに所定のトークン値を追加する際に、後述する追加対象管理部２３３によって選択されたキュー１０１を識別するキュー情報に対応づけてトークン格納メモリ２０１に記憶されている蓄積トークン値にのみ、所定のトークン値を追加する。言い換えると、トークン値追加処理部２２２は、後述する追加対象管理部２３３によって選択されたキュー１０１にのみ、トークン値を追加する。
【００６６】
具体的には、トークン値追加処理部２２２は、後述する追加対象管理部２３３によって選択されて追加対象情報記憶部２２１に「追加対象キュー」として記憶されているキュー情報に対応付けられたキュー１０１のみについて、トークン値を追加する指示をアクセス管理部２１０に指示し、アクセス管理部２１０が、トークン値を追加する。
【００６７】
また、トークン値追加処理部２２２は、後述する追加対象管理部２３３によって選択されたキュー１０１に、所定のトークン値の内、後述する追加割合算出部２３４によって算出された追加割合に相当するトークン値を追加する指示をアクセス管理部２１０に指示する。具体的には、トークン値追加処理部２２２は、後述する追加割合算出部２３４によって算出されて追加対象情報記憶部２２１に記憶されている「追加割合」を読み出し、読出した「追加割合」を追加トークン値に掛けた値を、キュー１０１に追加する指示をアクセス管理部２１０に指示する。
【００６８】
例えば、図５の例を用いて説明すると、後述する追加対象管理部２３３によって、キュー「♯０」と、キュー「♯１」と、キュー「♯４」と、キュー「♯７」とが選択された場合に、トークン値追加処理部２２２は、図６に示すように、キュー「♯０」と、キュー「♯１」と、キュー「♯４」と、キュー「♯７」とにのみ、所定のトークン値を追加する（トークン制御を行う）。
【００６９】
具体的に例をあげて説明すると、トークン値追加処理部２２２は、追加対象情報記憶部２２１に記憶されている「追加対象キュー」の内一つのキュー１０１を選択すると（例えば、キュー「♯０」を選択すると）、当該キュー１０１を識別するキュー情報に対応付けられた追加トークン値をトークン格納メモリ２０１から読み出す指示を、アクセス管理部２１０に指示し、アクセス管理部２１０から追加トークン値が伝達されて取得する。例えば、トークン値追加処理部２２２は、追加トークン値が「１２５００ｂｙｔｅ」であると取得する（図４参照）。
【００７０】
ここで、追加割合が「１／２」であり、トークン値を追加するキュー１０１に対応付けられた追加トークン値が「１２５００ｂｙｔｅ」である場合を用いて、具体的に例をあげて説明する。トークン値追加処理部２２２は、追加対象となるキュー１０１を識別するキュー情報に対応付けられた追加トークン値が「１２５００ｂｙｔｅ」であると取得すると、実際に追加するトークン値を算出する。例えば、トークン値追加処理部２２２は、追加割合が「１／２」であるので、「１２５００ｂｙｔｅ」の「１／２」に相当する「６２５０ｂｙｔｅ」を算出する（図７参照）。
【００７１】
そして、トークン値追加処理部２２２は、追加対象となるキュー１０１に実際に追加するトークン値を追加する指示をアクセス管理部２１０に指示し、トークン値が追加された蓄積トークン値をアクセス管理部２１０から伝達されて取得し、後述する蓄積トークン値上限キュー管理部２３２に蓄積トークン値を伝達する。また、トークン値追加処理部２２２は、同様の処理を、追加対象キュー１０１すべてについて、一つずつ順番に実行する。
【００７２】
この点について、さらに説明を行う。トークン値追加処理部２２２は、後述する追加対象管理部２３３によって選択されたキュー１０１にのみ、トークン値を追加する処理を行い、一方、後述する追加対象管理部２３３によって選択されていないキュー１０１には、トークン値を追加する処理を行わない。
【００７３】
例えば、説明の便宜上、パケット伝送装置が、８個のキュー（キュー「♯０」からキュー「♯７」）を備える場合を例に説明すると、トークン値追加処理部２２２は、キュー「♯０」と、キュー「♯１」と、キュー「♯４」と、キュー「♯７」とには、トークン値を追加する処理を行い、一方、キュー「♯２」と、キュー「♯３」と、キュー「♯５」と、キュー「♯６」とには、トークン値を追加する処理を行なわず、処理をスキップする。
【００７４】
すなわち、開示のパケット伝送装置では、トークン値追加処理部２２２は、後述する追加対象管理部２３３によって選択されたキュー１０１についてのみ、アクセス管理部２１０を介して、追加トークン値を読出し、トークン値を追加し、蓄積トークン値を取得し、また、後述する蓄積トークン値上限キュー管理部２３２に蓄積トークン値と、トークン値が追加されたキュー１０１を識別するキュー情報とを伝達するという一連の処理を実行する。
【００７５】
言い換えると、開示のパケット伝送装置では、トークン値追加処理部２２２は、後述する追加対象管理部２３３によって選択されていないキュー１０１については、追加トークン値として「０」を追加するという一連の処理すら実行しない。例えば、トークン値追加処理部２２２は、当該選択されていないキュー１０１については、追加処理を行う対象のキュー１０１として選択せず、追加トークン値として「０」を追加するという処理も実行しない。
【００７６】
ここで、追加割合に相当するトークン値のみを追加する意義について説明する。上記したように、トークン値追加処理部２２２は、後述する追加対象管理部２３３によって選択されたキュー１０１にのみ、トークン値を追加する処理を実行するので、開示のパケット伝送装置においては、すべてのキュー１０１に対してトークン値を追加する手法と比較して、トークン追加周期が短くなる。
【００７７】
このため、すべてのキュー１０１に対してトークン値を追加する場合におけるトークン追加周期に対応する追加トークン値（または、トークン追加周期が変更された場合に、変更前のトークン追加周期に対応する追加トークン値）を用いて、キュー１０１それぞれに対してトークン値を追加すると、パケットの出力レートを一定に制御できない。
【００７８】
例えば、トークン追加周期が短くなった場合に、トークン値追加処理部２２２が、トークン追加周期が短くなる前に設定された追加トークン値を追加すると、キュー１０１それぞれには、トークン追加周期が短くなる前と比較して、多くのトークン値が追加されることになり、バースト長が増加し、パケット伝送装置は、出力レートを平滑化できない。また、例えば、トークン追加周期が長くなった場合に、トークン値追加処理部２２２が、トークン追加周期が長くなる前に設定された追加トークン値を追加すると、キュー１０１それぞれには、トークン追加周期が長くなる前と比較して、少ないトークン値が追加されることになり、パケット伝送装置は、出力レートを平滑化できない。
【００７９】
このため、開示のパケット伝送装置では、トークン追加周期を変更する場合に、後述する追加割合算出部２３４が、追加トークン値を変更する割合を算出し、トークン値追加処理部２２２が、追加トークン値の内当該追加割合に相当する値のみを追加することにより、パケットの出力レートを一定に制御することが可能となる。
【００８０】
トークン値減算処理部２２３は、送受信部１００から、キュー１０１に格納されたパケットが出力される場合に（例えば、送受信部１００から、パケットが出力されたことが伝達されると、）、当該パケットが出力されたキュー１０１の蓄積トークン値から、出力されたパケットのパケット長を減算する。具体的には、トークン値減算処理部２２３は、蓄積トークン値から、出力されたパケットのパケット長を減算する指示をアクセス管理部２１０に指示し、アクセス管理部２１０が、蓄積トークン値からトークン値を減算する。
【００８１】
例えば、パケットが出力されたキュー１０１情報に対応付けられた蓄積トークン値が「３００ｂｙｔｅ」であり、出力されたパケットのパケット長が「２００ｂｙｔｅ」である場合を用いて、具体的に説明すると、トークン値減算処理部２２３は、蓄積トークン値「３００ｂｙｔｅ」から、パケット長「２００ｂｙｔｅ」を減算する指示をアクセス管理部２１０に指示し、アクセス管理部２１０が、蓄積トークン値を「１００ｂｙｔｅ」にする。
【００８２】
また、トークン値減算処理部２２３は、減算した蓄積トークン値をアクセス管理部２１０から伝達されて取得し、後述する蓄積トークン値上限キュー管理部２３２に減算された蓄積トークン値と、トークン値が減算されたキュー１０１を識別するキュー情報とを伝達する。
【００８３】
追加対象制御部２３０は、追加対象となるキュー１０１に関する処理を実行する制御部であり、特に本発明に密接に関連するものとしては、未使用キュー管理部２３１と、蓄積トークン値上限キュー管理部２３２と、追加対象管理部２３３と、追加割合算出部２３４と、を備える。なお、未使用キュー管理部２３１と蓄積トークン値上限キュー管理部２３２とは、特許請求の範囲に記載の「取得手段」に対応する。また、追加対象管理部２３３は、特許請求の範囲に記載の「選択手段」に対応する。また、追加割合算出部２３４は、特許請求の範囲に記載の「割合算出手段」に対応する。
【００８４】
未使用キュー管理部２３１は、パケット伝送装置において用いられていないキュー１０１を識別するキュー情報を取得する。例えば、未使用キュー管理部２３１は、使用キュー情報入力部１０２から伝達されることで、未使用なキューを識別するキュー情報を取得する。また、未使用キュー管理部２３１は、伝達されて取得した未使用なキューを識別するキュー情報を、後述する追加対象管理部２３３に伝達する。
【００８５】
ここで、未使用なキューか、使用しているキューかは、例えば、パケット伝送装置を使用する使用者による設定次第であり、未使用キュー管理部２３１は、パケット伝送装置を使用する使用者による設定（未使用なキューとする設定や、使用するキューとする設定など）が伝達されて取得すると、後述する追加対象管理部２３３に伝達する。
【００８６】
蓄積トークン値上限キュー管理部２３２は、蓄積トークン値が所定の上限値を超過しているキュー１０１を識別するキュー情報を取得する。例えば、蓄積トークン値上限キュー管理部２３２は、トークン管理部２２０が、トークン格納メモリ２０１にアクセスする毎に、トークン管理部２２０から伝達されることで、蓄積トークン値が所定の上限値を超過しているキュー１０１を識別するキュー情報を取得し、また、蓄積トークン値が所定の上限値を超過していたが、所定の上限値を下回ったキュー１０１を識別するキュー情報を取得する。また、取得したキュー情報を後述する追加対象管理部２３３に伝達する。
【００８７】
具体的な一例をあげて説明すると、例えば、蓄積トークン値上限キュー管理部２３２は、トークン値追加処理部２２２がトークン値を追加し、トークン値が追加された蓄積トークン値がトークン値追加処理部２２２から伝達される毎に、伝達された蓄積トークン値が予め設定されている所定の上限を超えているかいないかを判別し、所定の上限を超えている場合に、トークン値が追加されたキュー１０１を識別するキュー情報を取得する。また、取得したキュー情報を後述する追加対象管理部２３３に伝達する。
【００８８】
また、具体的な一例をあげて説明すると、蓄積トークン値上限キュー管理部２３２は、トークン値減算処理部２２３によって、蓄積トークン値が減算されると、蓄積トークン値が減算されたキューについて、蓄積トークン値が所定の上限を超えているキュー１０１ではないと判定する。そして、蓄積トークン値上限キュー管理部２３２は、この蓄積トークン値を減算されたキュー１０１を識別するキュー情報が、蓄積トークン値が上限値に達しているキューを識別するキュー情報として後述する追加対象管理部２３３に送信していた場合に、このキュー１０１が、蓄積トークン値が上限値に達しているキュー１０１ではなくなった旨の情報を、後述する追加対象管理部２３３に伝達する。
【００８９】
追加対象管理部２３３は、未使用キュー管理部２３１や蓄積トークン値上限キュー管理部２３２からキュー情報が伝達されると、パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキュー（例えば、当該キューを識別するキュー情報）を選択する。
【００９０】
例えば、追加対象管理部２３３は、未使用キュー管理部２３１や蓄積トークン値上限キュー管理部２３２からキュー情報が伝達され、追加対象となるキュー１０１に変更があると、未使用キュー管理部２３１や蓄積トークン値上限キュー管理部２３２から伝達されたキュー情報を用いて、未使用なキュー１０１および蓄積トークン値が上限値に達しているキュー１０１以外のキューを識別するキュー情報すべてを、パケット伝送装置が備える複数のキューを識別するキュー情報から選択する。また、追加対象管理部２３３は、選択したキュー情報を、追加対象情報記憶部２２１に記憶させる。
【００９１】
蓄積トークン値上限キュー管理部２３２によって、蓄積トークン値が上限値に達しているキュー１０１を識別するキュー情報として、「♯２」と、「♯３」と、「♯５」と、「♯６」とが取得された場合を例に用いて、具体的に説明すると、追加対象管理部２３３は、「♯２」と「♯３」と「♯５」と「♯６」と以外のキュー情報として、例えば、「♯０」と「♯１」と「♯４」と「♯７」とを選択する。また、追加対象管理部２３３は、選択した「♯０」と「♯１」と「♯４」と「♯７」とを、追加対象情報記憶部２２１の「追加対象キュー」に記憶させる。
【００９２】
また、追加対象管理部２３３は、取得したキュー情報の数を、後述する追加割合算出部２３４に伝達し、後述する追加割合算出部２３４から伝達された追加割合を追加対象情報記憶部２２１に記憶させる。
【００９３】
例えば、追加対象管理部２３３は、選択したキューが「♯０」と「♯１」と「♯４」と「♯７」とである場合に、キューが４個であると後述する追加割合算出部２３４に伝達し、後述する追加割合算出部２３４から追加割合「Ｎ」が伝達された場合に、追加割合「Ｎ」を追加対象情報記憶部２２１に記憶させる。
【００９４】
追加割合算出部２３４は、追加対象管理部２３３によってキュー１０１が選択され、選択されたキュー１０１の数が伝達されると、複数のキューの内選択された当該キューが占める割合（追加割合）を算出する。ここで、図７を用いて、追加割合算出部２３４について説明する。また、追加割合算出部２３４は、算出した追加割合を、追加対象管理部２３３に伝達する。
【００９５】
なお、図７は、トークンを追加するキューの数を示す「トークン値追加制御必要キュー数」と、「トークン追加周期」と、「追加トークン値」と、「追加割合」との関係を示したものである。例えば、パケット伝送装置が備える１０２４個のキューすべてに対してトークン値を追加する場合には、トークン値追加制御必要キュー数が「１０２４」であり、トークン追加周期が「１００μｓ」になり、追加トークン値が「１２５００ｂｙｔｅ」となり、追加割合「１」となる。
【００９６】
ここで、例えば、追加割合算出部２３４は、図７に示すように、追加対象管理部２３３によって選択されたキュー数が、「５１２」であった場合には、キュー数が「１／２」になっているので、トークン追加周期が「５０μｓ」（「１００μｓ」の「１／２」の値）になると算出し、追加トークン値が「６２５０ｂｙｔｅ」（「１２５００ｂｙｔｅ」の「１／２」の値）になると算出し、追加割合が「１／２」になると算出する。また、追加割合算出部２３４は、追加割合が「１／２」を、追加割合算出部２３４に伝達する。
【００９７】
なお、ここでは、追加割合算出部２３４が、トークン追加周期と追加トークン値と追加割合とを算出する手法について説明したが、本発明はこれに限定されるものではなく、追加割合算出部２３４は、例えば、追加割合のみを算出してもよい。
【００９８】
なお、このパケット伝送装置は、既知のパーソナルコンピュータ、ワークステーション、携帯電話、ＰＨＳ端末、移動体通信端末またはＰＤＡなどの情報処理装置に、上記した使用キュー情報入力部１０２やトークン制御回路部２００、トークン格納メモリ２０１、アクセス管理部２１０、トークン管理部２２０、追加対象情報記憶部２２１、トークン値追加処理部２２２、トークン値減算処理部２２３、追加対象制御部２３０、未使用キュー管理部２３１、蓄積トークン値上限キュー管理部２３２、追加対象管理部２３３、追加割合算出部２３４の各機能を搭載することによって実現することもできる。
【００９９】
［パケット伝送装置による処理］
次に、図８〜図１０を用いて、パケット伝送装置による処理を説明する。ここでは、まず、トークン値を追加する処理の流れについて説明し、その後、トークン値を減算する処理の流れについて説明し、追加対象制御部の処理の流れを説明する。なお、図８は、実施例１におけるトークン値追加処理の流れを示すフローチャートである。図９は、実施例１におけるトークン値減算処理の流れを示すフローチャートである。図１０は、実施例１における追加対象制御部の処理の流れを示すフローチャートである。
【０１００】
［トークン値追加処理］
図８に示すように、開示のパケット伝送装置では、トークン値追加処理部２２２が追加対象となるキューを１つ選択すると（ステップＳ１０１肯定）、トークン値追加処理部２２２は、選択されたキュー１０１を識別するキュー情報に対応付けられた追加トークン値を読み出す（ステップＳ１０２）。例えば、トークン値追加処理部２２２は、追加対象情報記憶部２２１に記憶されている「追加対象キュー」の内一つを選択すると、選択したキュー１０１を識別するキュー情報に対応付けられた追加トークン値を読み出す指示をアクセス管理部２１０に指示し、アクセス管理部２１０がトークン格納メモリ２０１から読み出した追加トークン値（例えば、「１２５００ｂｙｔｅ」）を取得する。
図４参照）。
【０１０１】
そして、トークン値追加処理部２２２は、実際に追加するトークン値を算出する（ステップＳ１０３）。例えば、トークン値追加処理部２２２は、追加割合算出部２３４によって算出されて追加対象情報記憶部２２１に記憶されている追加割合が「１／２」である場合に、「１２５００ｂｙｔｅ」の「１／２」に相当する「６２５０ｂｙｔｅ」を算出する（図７参照）。
【０１０２】
そして、トークン値追加処理部２２２は、トークン値を追加する（ステップＳ１０４）。例えば、トークン値追加処理部２２２は、実際に追加するトークン値として算出した「６２５０ｂｙｔｅ」を、追加対象として選択されたキュー１０１に追加する指示をアクセス管理部２１０に指示し、アクセス管理部２１０が、トークン格納メモリ２０１の蓄積トークン値にトークン値を追加する。
【０１０３】
そして、トークン値追加処理部２２２は、トークン値が追加された蓄積トークン値を、蓄積トークン値上限キュー管理部２３２に伝達する（ステップＳ１０５）。例えば、トークン値追加処理部２２２は、蓄積トークン値をアクセス管理部２１０から取得し、取得した蓄積トークン値を蓄積トークン値上限キュー管理部２３２に伝達する。
【０１０４】
なお、トークン値追加処理部２２２は、上記したステップＳ１０１からＳ１０５までの処理を、追加対象情報記憶部２２１に記憶されている「追加対象キュー」すべてに対して順番にトークン値を追加する処理を実行する。また、トークン値追加処理部２２２は、すべての「追加対象キュー」に対して上記したステップＳ１０１からＳ１０５までの処理を実行した後には、追加対象情報記憶部２２１に記憶されている「追加対象キュー」すべてに対して順番にトークン値を追加する処理を繰り返し、トークン値を追加する処理を継続する。
【０１０５】
［トークン値減算処理］
図９に示すように、開示のパケット伝送装置では、キュー１０１からパケットが出力されると（ステップＳ２０１肯定）、トークン値減算処理部２２３は、パケットが出力されたキュー１０１の蓄積トークン値から、出力されたパケットのパケット長分減算する（ステップＳ２０２）。例えば、パケットが出力されたキュー１０１情報に対応付けられた蓄積トークン値が「３００ｂｙｔｅ」であり、出力されたパケットのパケット長が「２００ｂｙｔｅ」である場合に、トークン値減算処理部２２３は、蓄積トークン値「３００ｂｙｔｅ」からパケット長「２００ｂｙｔｅ」を減算する指示をアクセス管理部２１０に指示し、アクセス管理部２１０が、蓄積トークン値を「１００ｂｙｔｅ」にする。
【０１０６】
また、トークン値減算処理部２２３は、減算した蓄積トークン値を、蓄積トークン値上限キュー管理部２３２に伝達する（ステップＳ２０３）。例えば、トークン値減算処理部２２３は、減算された蓄積トークン値をアクセス管理部２１０から取得し、取得した蓄積トークン値を蓄積トークン値上限キュー管理部２３２に伝達する。
【０１０７】
［追加対象制御部の処理］
図１０に示すように、開示の追加対象制御部２３０では、キュー１０１に変更があると（ステップＳ３０１肯定）、追加対象管理部２３３は、１０２４個のキュー１０１の内、追加対象となるキュー１０１を選択する（ステップＳ３０２）。つまり、未使用キュー管理部２３１や蓄積トークン値上限キュー管理部２３２によってキュー情報が取得され、未使用キュー管理部２３１や蓄積トークン値上限キュー管理部２３２から追加対象管理部２３３に伝達されると、追加対象管理部２３３は、パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキュー（例えば、当該キューを識別するキュー情報）を選択する。
【０１０８】
そして、追加割合算出部２３４は、追加割合を算出する（ステップＳ３０３）。つまり、追加割合算出部２３４は、追加対象管理部２３３によって追加対象となるキューが選択されると、複数のキューの内選択された当該キューが占める割合を算出し、算出した追加割合を追加対象管理部２３３に伝達する。
【０１０９】
そして、追加対象管理部２３３は、選択したキュー情報（追加対象キュー）と、追加割合算出部２３４から伝達された追加割合とを、トークン管理部２２０に伝達する（ステップＳ３０４）。例えば、追加対象管理部２３３は、選択したキュー情報と追加割合とを、追加対象情報記憶部２２１に記憶させる。
【０１１０】
［実施例１の効果］
上記したように、実施例１によれば、キューを識別するキュー情報と当該キューの蓄積トークン値とを対応づけて記憶し、未使用なキューを識別するキュー情報や、蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得し、キュー情報が取得されると、パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択し、複数のキューそれぞれに所定のトークン値を追加する際に、選択されたキューを識別するキュー情報に対応づけて記憶されている蓄積トークン値にのみ所定のトークン値を追加するので、出力レートを適切に平滑化することが可能である。
【０１１１】
具体的には、図１１に示すように、開示のパケット伝送装置では、トークン管理部２２０が、トークン格納メモリ２０１を用いてトークン追加処理を行う際に、追加対象となるキュー１０１を選択する追加対象制御部２３０を備えるので、トークン値追加処理部２２２が、後述する追加対象管理部２３３によって選択されたキュー１０１にのみ、トークン値を追加する処理を実行し、トークン追加周期を短くすることが可能である。
【０１１２】
例えば、図１２の（１）に示すような、トークン制御処理を行う一つの回路が、担当するすべてのキュー１０１に対してトークン値を追加し、キュー数の増加に伴って、追加トークン値を増加する従来の手法では、蓄積トークン値が所定の上限値に達しているキューについても、追加トークン値として「０」を追加するという処理を行っていた。
【０１１３】
このような従来の手法とは異なり、実施例１では、キュー「♯２」と、キュー「♯３」と、キュー「♯５」と、キュー「♯６」とに、トークン値を追加しない場合に、図１３の（１）に示すように、すべてのキューに対して追加する処理を行うのではなく（トークン値を追加しないキューについても、追加トークン値として「０」を追加する処理を実行するのではなく）、図１３の（２）に示すように、キュー「♯２」と、キュー「♯３」と、キュー「♯５」と、キュー「♯６」とについて処理をスキップし、キュー「♯０」と、キュー「♯１」と、キュー「♯４」と、キュー「♯７」とにのみ、トークン値を追加する処理を行う。
【０１１４】
これにより、一度に追加する追加トークン値を増加する従来の手法と比較して、一度に追加する追加トークン値を増加させることなく、出力レートを適切に平滑化することが可能である。
【０１１５】
また、図１２の（２）に示すように、キュー数の増加に伴って複数の回路を用いることにより、トークン追加周期を短くする従来の手法と比較して、本実施例では、複数の回路を用いることなく（回路規模を増大させずに）、出力レートを適切に平滑化することが可能である。
【０１１６】
また、実施例１によれば、キュー１０１が選択されると、複数のキュー１０１の内選択された当該キュー１０１が占める割合（追加割合）を算出し、選択されたキュー１０１に、所定のトークン値の内、算出された追加割合に相当するトークン値を追加するので、パケットの出力レートを一定に制御することが可能となる。
【０１１７】
例えば、トークン値追加処理部２２２は、追加対象管理部２３３によって選択されたキュー１０１にのみ、トークン値を追加する処理を実行するので、開示のパケット伝送装置においては、すべてのキュー１０１に対してトークン値を追加する手法と比較して、トークン追加周期が短くなる。
【０１１８】
このため、従来の手法のままでは、すべてのキュー１０１に対してトークン値を追加する際のトークン追加周期に対応する追加トークン値（または、トークン追加周期が変更された場合に、変更前のトークン追加周期に対応する追加トークン値）を用いて、キュー１０１それぞれに対してトークン値を追加すると、パケットの出力レートを一定に制御できない。
【０１１９】
例えば、従来の手法のままでは、トークン追加周期が短くなった場合に、トークン値追加処理部２２２が、トークン追加周期が短くなる前に設定された追加トークン値を追加すると、キュー１０１それぞれには、トークン追加周期が短くなる前と比較して、多くのトークン値が追加されることになり、バースト長が増加し、パケット伝送装置は、出力レートを平滑化できない。また、例えば、トークン追加周期が長くなった場合に、トークン値追加処理部２２２が、トークン追加周期が長くなる前に設定された追加トークン値を追加すると、キュー１０１それぞれには、トークン追加周期が長くなる前と比較して、少ないトークン値が追加されることになり、パケット伝送装置は、出力レートを平滑化できない。
【０１２０】
このような場合にも、実施例１では、トークン追加周期を変更する場合に、追加割合算出部２３４が、追加トークン値を変更する割合を算出し、トークン値追加処理部２２２が、追加トークン値の内当該追加割合に相当する値のみを追加することにより、パケットの出力レートを一定に制御することが可能である。
【実施例２】
【０１２１】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下にその他の実施例について説明する。
【０１２２】
［実施例の組み合わせについて］
実施例１では、未使用なキューなどに対しての処理をスキップする手法と、トークン追加周期が変化した際に、追加するトークン値を変更する手法とを併せて実行する場合について説明したが、本発明はこれに限定されるものではなく、未使用なキューなどに対しての処理をスキップする手法のみを実行してもよい。
【０１２３】
［システム構成］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（例えば、図３〜図１０、図１４）については、特記する場合を除いて任意に変更することができる。
【０１２４】
［プログラム］
上記実施例１では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、予め用意されたプログラムをコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図１４を用いて、上記の実施例１に示したパケット伝送装置と同様の機能を有するパケット伝送プログラムを実行するコンピュータの一例を説明する。なお、図１４は、実施例１に係るパケット伝送装置のプログラムを説明するための図である。
【０１２５】
図１４に示すように、実施例１におけるパケット伝送装置３０００は、操作部３００１、マイク３００２、スピーカ３００３、キュー３００４、ディスプレイ３００５、通信部３００６、ＣＰＵ３０１０、ＲＯＭ３０１１、ＨＤＤ３０１２、ＲＡＭ３０１３をバス３００９などで接続して構成されている。
【０１２６】
ＲＯＭ３０１１には、上記の実施例１で示した送受信部１００と、使用キュー情報入力部１０２と、アクセス管理部２１０と、トークン管理部２２０と、トークン値追加処理部２２２と、トークン値減算処理部２２３と、追加対象制御部２３０と、未使用キュー管理部２３１と、蓄積トークン値上限キュー管理部２３２と、追加対象管理部２３３と、追加割合算出部２３４と同様の機能を発揮する制御プログラム、つまり、同図に示すように、送受信プログラム３０１１ａと、使用キュー情報入力プログラム３０１１ｂと、アクセス管理プログラム３０１１ｃと、トークン管理プログラム３０１１ｄと、トークン値追加処理プログラム３０１１ｅと、トークン値減算処理プログラム３０１１ｆと、追加対象制御プログラム３０１１ｇと、未使用キュー管理プログラム３０１１ｈと、蓄積トークン値上限キュー管理プログラム３０１１ｉと、追加対象管理プログラム３０１１ｊと、追加割合算出プログラム３０１１ｋとが予め記憶されている。なお、これらのプログラム３０１１ａ〜３０１１ｋについては、図３に示したパケット伝送装置の各構成要素と同様、適宜統合または分離してもよい。
【０１２７】
そして、ＣＰＵ３０１０が、これらのプログラム３０１１ａ〜３０１１ｋをＲＯＭ３０１１から読み出して実行することにより、図１４に示すように、各プログラム３０１１ａ〜３０１１ｋについては、送受信プロセス３０１０ａと、使用キュー情報入力プロセス３０１０ｂと、アクセス管理プロセス３０１０ｃと、トークン管理プロセス３０１０ｄと、トークン値追加処理プロセス３０１０ｅと、トークン値減算処理プロセス３０１０ｆと、追加対象制御プロセス３０１０ｇと、未使用キュー管理プロセス３０１０ｈと、蓄積トークン値上限キュー管理プロセス３０１０ｉと、追加対象管理プロセス３０１０ｊと、追加割合算出プロセス３０１０ｋとして機能するようになる。なお、各プロセス３０１０ａ〜３０１０ｋは、図３に示した、送受信部１００と、使用キュー情報入力部１０２と、アクセス管理部２１０と、トークン管理部２２０と、トークン値追加処理部２２２と、トークン値減算処理部２２３と、追加対象制御部２３０と、未使用キュー管理部２３１と、蓄積トークン値上限キュー管理部２３２と、追加対象管理部２３３と、追加割合算出部２３４とにそれぞれ対応する。
【０１２８】
そして、ＨＤＤ３０１２には、トークン格納テーブル３０１２ａと、追加対象情報テーブル３０１２ｂとが設けられている。なお、各テーブル３０１２ａ〜３０１２ｂは、図３に示した、トークン格納メモリ２０１と、追加対象情報記憶部２２１とにそれぞれ対応する。
【０１２９】
そして、ＣＰＵ３０１０は、トークン格納テーブル３０１２ａと、追加対象情報テーブル３０１２ｂとを読み出してＲＡＭ３０１３に格納し、ＲＡＭ３０１３に格納されたトークン格納データ３０１３ａと、追加対象情報データ３０１３ｂとを用いて、パケット伝送プログラムを実行する。
【０１３０】
［その他］
なお、本実施例で説明したパケット伝送装置は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【０１３１】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１３２】
（付記１）パケットを格納する複数のキューそれぞれに所定のトークン値を追加しつつ割り当て、当該キューに割り当てられたトークン値の蓄積を示す蓄積トークン値が当該キューに格納されたパケットのパケット長より多い場合に、当該キューから当該パケットを出力し、当該キューからパケットが出力される場合に、当該パケットが出力されたキューの当該蓄積トークン値から当該パケット長を減算するパケット伝送装置であって、前記キューを識別するキュー情報と当該キューの前記蓄積トークン値とを対応づけて記憶する記憶手段と、前記パケット伝送装置において用いられていない前記キューを識別する前記キュー情報、および／または、前記蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得する取得手段と、前記取得手段によって前記キュー情報が取得されると、前記パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する選択手段と、複数のキューそれぞれに所定のトークン値を追加する際に、前記選択手段によって選択された前記キューを識別する前記キュー情報に対応づけて前記記憶手段に記憶されている前記蓄積トークン値にのみ前記所定のトークン値を追加する追加手段と、を備えたことを特徴とするパケット伝送装置。
【０１３３】
（付記２）前記選択手段によって前記キューが選択されると、前記複数のキューの内選択された当該キューが占める割合を算出する割合算出手段をさらに備え、前記追加手段は、前記選択手段によって選択された前記キューに、前記所定のトークン値の内、前記割合算出手段によって算出された前記割合に相当するトークン値を追加することを特徴とする付記１に記載のパケット伝送装置。
【０１３４】
（付記３）パケットを格納する複数のキューそれぞれに所定のトークン値を追加しつつ割り当て、当該キューに割り当てられたトークン値の蓄積を示す蓄積トークン値が当該キューに格納されたパケットのパケット長より多い場合に、当該キューから当該パケットを出力し、当該キューからパケットが出力される場合に、当該パケットが出力されたキューの当該蓄積トークン値から当該パケット長を減算するパケット伝送方法であって、前記キューを識別するキュー情報と当該キューの前記蓄積トークン値とを対応づけて記憶部に記憶する記憶工程と、用いられていない前記キューを識別する前記キュー情報、および／または、前記蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得する取得工程と、前記取得工程によって前記キュー情報が取得されると、前記パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する選択工程と、複数のキューそれぞれに所定のトークン値を追加する際に、前記選択工程によって選択された前記キューを識別する前記キュー情報に対応づけて前記記憶部に記憶されている前記蓄積トークン値にのみ前記所定のトークン値を追加する追加工程と、を含んだことを特徴とするパケット伝送方法。
【０１３５】
（付記４）パケットを格納する複数のキューそれぞれに所定のトークン値を追加しつつ割り当て、当該キューに割り当てられたトークン値の蓄積を示す蓄積トークン値が当該キューに格納されたパケットのパケット長より多い場合に、当該キューから当該パケットを出力し、当該キューからパケットが出力される場合に、当該パケットが出力されたキューの当該蓄積トークン値から当該パケット長を減算する制御方法をコンピュータに実行させるパケット伝送プログラムであって、前記キューを識別するキュー情報と当該キューの前記蓄積トークン値とを対応づけて記憶部に記憶する記憶手順と、用いられていない前記キューを識別する前記キュー情報、および／または、前記蓄積トークン値が所定の上限値を超過している当該キューを識別する当該キュー情報を取得する取得手順と、前記取得手順によって前記キュー情報が取得されると、前記パケット伝送装置が備える複数のキューの内、取得された当該キュー情報にて識別されるキュー以外のキューを選択する選択手順と、複数のキューそれぞれに所定のトークン値を追加する際に、前記選択手順によって選択された前記キューを識別する前記キュー情報に対応づけて前記記憶部に記憶されている前記蓄積トークン値にのみ前記所定のトークン値を追加する追加手順と、をコンピュータに実行させることを特徴とするパケット伝送プログラム。
【図面の簡単な説明】
【０１３６】
【図１−１】実施例１における前提技術の説明に用いるための図である。
【図１−２】実施例１における前提技術の説明に用いるための図である。
【図２】実施例１に係るパケット伝送装置の概要および特徴を示すための図である。
【図３】実施例１に係るパケット伝送装置の構成を示すためのブロック図である。
【図４】実施例１におけるトークン格納メモリを説明するための図である。
【図５】実施例１における追加対象情報記憶部を説明するための図である。
【図６】実施例１におけるトークン値追加処理部を説明するための図である。
【図７】実施例１における追加割合算出部を説明するための図である。
【図８】実施例１におけるトークン値追加処理の流れを示すフローチャートである。
【図９】実施例１におけるトークン値減算処理の流れを示すフローチャートである。
【図１０】実施例１における追加対象制御部の処理の流れを示すフローチャートである。
【図１１】実施例１に係るパケット伝送装置の効果を説明するための図である。
【図１２】実施例１に係るパケット伝送装置の効果を説明するための図である。
【図１３】実施例１に係るパケット伝送装置の効果を説明するための図である。
【図１４】実施例１に係るパケット伝送装置のプログラムを説明するための図である。
【図１５】従来技術を説明するための図である。
【符号の説明】
【０１３７】
１００  送受信部
１０１  キュー
１０２  使用キュー情報入力部
２００  トークン制御回路部
２０１  トークン格納メモリ
２１０  アクセス管理部
２２０  トークン管理部
２２１  追加対象情報記憶部
２２２  トークン値追加処理部
２２３  トークン値減算処理部
２３０  追加対象制御部
２３１  未使用キュー管理部
２３２  蓄積トークン値上限キュー管理部
２３３  追加対象管理部
２３４  追加割合算出部
【図１−１】
2009200947.tif 000003
【図１−２】
2009200947.tif 000004
【図２】
2009200947.tif 000005
【図３】
2009200947.tif 000006
【図４】
2009200947.tif 000007
【図５】
2009200947.tif 000008
【図６】
2009200947.tif 000009
【図７】
2009200947.tif 000010
【図８】
2009200947.tif 000011
【図９】
2009200947.tif 000012
【図１０】
2009200947.tif 000013
【図１１】
2009200947.tif 000014
【図１２】
2009200947.tif 000015
【図１３】
2009200947.tif 000016
【図１４】
2009200947.tif 000017
【図１５】
2009200947.tif 000018