(57)【特許請求の範囲】
【請求項１】
総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するトークン量管理テーブルと、
通信データパケットを受信する受信手段と、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるトークン量減少手段と、
該受信手段が受信した通信データパケットを送信する送信手段と、
該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるトークン量増加手段と、
該トークン量管理テーブルを更新して、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数ずつ減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるトークン量更新手段と、
を有し、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合には、該トークン量減少手段は、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄する、
ことを特徴とする通信装置。
【請求項２】
該トークン量更新手段は、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数が該所定数に対して不足している場合には、該第二バケットでのトークンの保持個数だけ、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を増加させると共に、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数をゼロとし、以降、該トークン量増加手段が該保持個数を増加させるまで、該トークン量管理テーブルにおける該第二バケット及び該第一バケットでのトークンの保持個数の更新を中断する、ことを特徴とする請求項１に記載の通信装置。
【請求項３】
該トークン量更新手段は、該受信手段が通信データパケットを受信した際に、該トークン量管理テーブルの更新を行うことを特徴とする請求項１または２に記載の通信装置。
【請求項４】
該トークン量更新手段は、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数以上であった場合にのみ、該トークン量管理テーブルの更新を行うことを特徴とする請求項３に記載の通信装置。
【請求項５】
該トークン量更新手段は、所定の周期で該トークン量管理テーブルの更新を行うことを特徴とする請求項１または２に記載の通信装置。
【請求項６】
通信データパケットを受信する受信手段と該通信データパケットを送信する送信手段とを有する通信装置を用いて行うトラヒック量の制御方法であって、
総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するトークン量管理テーブルにおける、該第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるトークン量減少ステップと、
該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるトークン量増加ステップと、
該トークン量管理テーブルを更新して、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるトークン量更新ステップと、
を有しており、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合には、該トークン量減少ステップでは、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄するようにする、
ことを特徴とするトラヒック量の制御方法。
【請求項７】
通信データパケットを受信する受信手段と該通信データパケットを送信する送信手段とを有する通信装置を用いて行うトラヒック量の制御を演算処理装置に行わせるためのプログラムであって、
総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するトークン量管理テーブルにおける、該第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるトークン量減少処理と、
該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるトークン量増加処理と、
該トークン量管理テーブルを更新して、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるトークン量更新処理と、
を該演算処理装置に行わせ、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合には、該トークン量減少処理では、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄するようにする、
ことを特徴とするプログラム。
【請求項８】
予め定められた個数のトークンと、
該トークンを保持する第一バケット及び第二バケットと、
通信データパケットを受信する受信手段と、
該受信手段が受信した通信データパケットのサイズに応じた個数のトークンを該第一バケットから取り出して該通信データパケットに付与するトークン付与手段と、
該トークン付与手段により該トークンが付与された該通信データパケットを送信する送信手段と、
該送信手段が送信した通信データパケットに付与されていたトークンを該第二バケットに格納して保持させる第一トークン格納手段と、
所定の頻度で、該第二バケットに保持されているトークンを取り出して該第一バケットに格納して保持させる第二トークン格納手段と、
を有し、
該トークン付与手段は、該第一バケットで保持されているトークンの個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に足りない場合には、該通信データパケットを廃棄する、
ことを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で議論される実施態様は、通信パケットの交換により行われるデータ通信におけるトラヒック量の制御技術に関する。
【背景技術】
【０００２】
通信ネットワーク間でのデータ通信を中継する中継装置において、受信した通信トラヒックを送信する際にそのトラヒック量をコントロールする技術のひとつとして、トークンバケット（Token Bucket）方式が知られている。このトークンバケット方式の原理について、図１８を参照しながら説明する。
【０００３】
図１８において、バケット１００には、一定の時間間隔でトークン１０１が補充される。このバケット１００は、貯蔵最大量（トークン１０１を貯蔵可能な最大量）が予め定められており、貯蔵最大量を超えたトークン１０１は捨てられる。
【０００４】
トークン１０１にはデータ送信量が予め定められている。中継装置は、上流装置から受信した通信データパケット（以下、単に「パケット１１１」と記す）を下流装置へ送信する際に、パケット制御点１１０において、バケット１００に貯蔵されているトークン１０１を、パケット１１１のサイズに応じた数ｎだけ消費する。但し、送信対象のパケット１１１のサイズに応じたトークン１０１の数がバケット１００で不足している場合には、そのパケット１１１については送信対象とせずに廃棄（policing）する。
【０００５】
以上のように、このトークンバケット方式では、必要な数のトークン１０１が貯蔵されていたことでパケット制御点１１０において廃棄されずに通過した送信対象のパケット１１１は、送信待ちの状態となる。このため、他のトラヒックの増大等の要因により送信対象のパケット１１１の送信が滞ると、その送信対象のパケット１１１は中継装置内に大量に滞留することとなる。また、その後にトラヒックの状況が回復すると、滞留していた送信対象のパケット１１１を今度は一気に吐き出すために当該パケット１１１が大量に送信されることになる。すると、下流の通信ネットワークでは、大量に送信されたパケット１１１が、しばらくの間輻輳を生じさせることがあった。
【０００６】
このトークンバケット方式を採用した場合における下流の輻輳を抑制する技術に関して幾つかの技術が知られている。そのうちの第一の技術は、トークンが保持されるトークンバッファでトークンが減少している状態（減少状態）における通信データのスループットに基づいて、トークンバッファへのトークンの出力頻度の更新後の値を決定するというものである。この技術では、トークンバッファ内のトークンの減少が続いてやがて空の状態（枯渇状態）となった場合におけるトークンバッファへのトークンの出力頻度を、当該決定した値にする。更に、この技術では、この枯渇状態が所定時間継続した場合には、所定量のトークンをトークンバッファへ一気に追加して、トークンバッファを減少状態に遷移させる。
【０００７】
また、そのうちの第二の技術は、ネットワークとの接続に使用するリンクに対して設定可能な通信速度と、ネットワークに接続するリンクの混雑度を示すリンク輻輳情報とに基づいて、トークンバッファへのトークンの出力頻度を更新するというものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−２２１５２９号公報
【特許文献２】特開２００８−５０９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述した第一の技術においては、他のトラヒックの増大等の要因により通信データのスループットが低下すると、通信データの過大な滞留を回避するために、トークンバッファへのトークンの出力頻度を低下させる必要があると思われる。この結果、トークンバッファは減少状態となり、更には枯渇状態へと遷移する。その後、トークンバッファが枯渇状態に遷移してから所定時間後に所定量のトークンをトークンバッファへ追加して減少状態に遷移させる動作が行われる。ところが、このようにしてトークンをトークンバッファへ追加すれば、結局は、下流の通信ネットワークでしばらくの間輻輳を生じさせることになってしまう。ここで、トークンのトークンバッファへの追加量をゼロとしてしまうと、前述した要因が解消しても、トークンバッファが枯渇状態から抜け出せなくなってしまうため、通信データのスループットを元の状態に回復させることができなくなってしまうと考えられる。
【００１０】
本発明は上述した問題に鑑みてなされたものであり、その解決しようとする課題は、通信パケットの滞留を少なくすると共に、通信データパケットの滞留の解消に起因する下流の通信ネットワークでの輻輳を減少させることである。
【課題を解決するための手段】
【００１１】
本明細書で後述する通信装置のひとつには、トークン量管理テーブルと、受信手段と、トークン量減少手段と、送信手段と、トークン量増加手段と、トークン量更新手段とを有するというものがある。このうち、トークン量管理テーブルは、総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するテーブルである。受信手段は、通信データパケットを受信するものである。トークン量減少手段は、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるものである。送信手段は、該受信手段が受信した通信データパケットを送信するものである。トークン量増加手段は、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるものである。そして、トークン量更新手段は、該トークン量管理テーブルを更新するものである。なお、この更新は、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数ずつ減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるというものである。但し、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合がある。この場合には、該トークン量減少手段は、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄するようにする。
【００１２】
また、本明細書で後述するトラヒック量の制御方法のひとつには、通信データパケットを受信する受信手段と該通信データパケットを送信する送信手段とを有する通信装置を用いて行うというものがある。この制御方法は、トークン量減少ステップと、トークン量増加ステップと、トークン量更新ステップとを有している。このうち、トークン量減少ステップは、管理するトークン量管理テーブルにおける、第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるというものである。なお、トークン量管理テーブルは、総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するテーブルである。また、トークン量増加ステップは、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるというものである。そして、トークン量更新ステップは、該トークン量管理テーブルを更新するというものである。なお、この更新は、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるというものである。但し、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合がある。この場合には、該トークン量減少ステップでは、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄するようにする。
【００１３】
また、本明細書で後述するプログラムのひとつには、通信データパケットを受信する受信手段と該通信データパケットを送信する送信手段とを有する通信装置を用いて行うトラヒック量の制御を演算処理装置に行わせるためのものがある。このプログラムは、トークン量減少処理と、トークン量増加処理と、トークン量更新処理とを該演算処理装置に行わせる。このうち、トークン量減少処理は、トークン量管理テーブルにおける第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるというものである。なお、トークン量管理テーブルは、総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するテーブルである。また、トークン量増加処理は、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるというものである。そして、トークン量更新処理は、該トークン量管理テーブルを更新するものである。なお、この更新は、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるというものである。但し、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合がある。この場合には、該トークン量減少処理では、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄するようにする。
【００１４】
また、本明細書で後述する通信装置のひとつには、予め定められた個数のトークンと、第一バケット及び第二バケットと、受信手段と、トークン付与手段と、送信手段と、第一トークン格納手段と、第二トークン格納手段とを有するというものがある。このうち、第一バケット及び第二バケットは、該トークンを保持するものである。また、受信手段は、通信データパケットを受信するものである。トークン付与手段は、該受信手段が受信した通信データパケットのサイズに応じた個数のトークンを該第一バケットから取り出して該通信データパケットに付与するものである。送信手段は、該トークン付与手段により該トークンが付与された該通信データパケットを送信するものである。第一トークン格納手段は、該送信手段が送信した通信データパケットに付与されていたトークンを該第二バケットに格納して保持させるものである。そして、第二トークン格納手段は、所定の頻度で、該第二バケットに保持されているトークンを取り出して該第一バケットに格納して保持させるものである。但し、該第一バケットで保持されているトークンの個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に足りない場合がある。この場合には、該トークン付与手段は、該通信データパケットを廃棄するようにする。
【発明の効果】
【００１５】
本明細書で後述する通信装置は、通信パケットの滞留を少なくすると共に、通信データパケットの滞留の解消に起因する下流の通信ネットワークでの輻輳を減少させる。
【図面の簡単な説明】
【００１６】
【図１】パケット通信ネットワークの構成の一例である。
【図２】ホストシステムが有している機能を図解した機能ブロック図である。
【図３】ルータが有している機能を図解した機能ブロック図である。
【図４】コンピュータの標準的なハードウェア構成の一例である。
【図５】ルータにより行われるトラヒック量の制御を説明する図である。
【図６】トークン量管理テーブルのデータ構造例である。
【図７】トークンが付与されているパケットのデータ構造例である。
【図８】トークン付与管理テーブルのデータ構造例である。
【図９】トークン付与処理の第一の例の処理内容を図解したフローチャートである。
【図１０】トークン解放処理の第一の例の処理内容を図解したフローチャートである。
【図１１】パケット受信量及びパケット送信可能量の時間変化の一例である。
【図１２Ａ】従来技術を採用してトラヒック量の制御を行った場合におけるパケットの滞留及び送信の様子（その１）である。
【図１２Ｂ】従来技術を採用してトラヒック量の制御を行った場合におけるパケットの滞留及び送信の様子（その２）である。
【図１２Ｃ】従来技術を採用してトラヒック量の制御を行った場合におけるパケットの滞留及び送信の様子（その３）である。
【図１３】図３の構成を有するルータによりトラヒック量の制御を行った場合におけるパケットの滞留及び送信の様子である。
【図１４】トークン解放処理の第二の例の処理内容を図解したフローチャートである。
【図１５】トークン付与処理の第二の例の処理内容を図解したフローチャートである。
【図１６】トークン付与処理の第三の例の処理内容を図解したフローチャートである。
【図１７】トークン汲み上げ処理の処理内容を図解したフローチャートである。
【図１８】トークンバケット方式の原理を説明する図である。
【発明を実施するための形態】
【００１７】
まず図１について説明する。図１は、パケットデータ通信ネットワークの構成の一例が図解されている。この通信ネットワークは、通信端末である４台のホストシステム１、２、３、及び４と、通信装置である２台のルータ（中継装置）５及び６とを備えて構成されている。ここで、ホストシステム１（Host#A）及びホストシステム２（Host#B）は、ルータ５（＃Ａ）に直接接続されており、ホストシステム３（Host#B）及びホストシステム４（Host#D）は、ルータ６（＃Ｂ）に直接接続されている。また、ルータ５とルータ６とが接続されている。従って、ホストシステム１若しくは２がホストシステム３若しくは４と通信を行う場合には、ルータ５及び６の両方を経由する必要がある。
【００１８】
以下の説明では、この図１の通信ネットワークにおいて、ホストシステム１から送信されてホストシステム３で受信される通信データパケット（以下、単に「パケット」と記す）の流量（トラヒック量）を、ルータ５が制御する場合を想定する。
【００１９】
次に図２について説明する。図２は、図１のホストシステム１が有している機能を図解した機能ブロック図である。なお、図１における他のホストシステム２、３、及び４の各々も、ホストシステム１と同一の機能を有しているものでよい。
【００２０】
図２から分かるように、ホストシステム１は、制御部１１、記憶部１２、入出力制御部１３、及び通信制御部１４を、機能ブロックとして備えている。
制御部１１は、ホストシステム１全体の動作の制御を行う機能を有する。
【００２１】
記憶部１２は、制御部１１による管理の下で各種のデータを記憶し保持しておく機能を有する。
入出力制御部１３は、入力装置である例えばキーボード装置やマウス装置と、出力装置である例えば表示装置との動作を、制御部１１による管理の下で制御する機能を有する。ホストシステム１の使用者等による入力装置への操作が検出されると、入出力制御部１３は、その操作内容に対応付けられている各種情報の入力を取得し、取得した入力情報を制御部１１に送付する。また、入出力制御部１３は、出力データを制御部１１から受け取ると、出力装置を制御して、その出力データで表現されている各種のテキストや画像を出力する。
【００２２】
通信制御部１４は、パケットの送信及び受信を行う通信装置を、制御部１１による管理の下で制御し、ホストシステム１と物理的に接続されているルータ５との間でパケットの授受を行う機能を有する。
【００２３】
次に図３について説明する。図３は、図１のルータ５が有している機能を図解した機能ブロック図である。なお、図１におけるルータ６も、ルータ５と同一の機能を有しているものでよい。
【００２４】
図３から分かるように、ルータ５は、制御部２１、記憶部２２、入出力制御部２３、通信制御部２４、及び時計制御部２５を、機能ブロックとして備えている。
制御部２１は、ルータ５全体の動作の制御を行う機能を有する。
【００２５】
記憶部２２は、制御部２１による管理の下で各種のデータを記憶し保持しておく機能を有している。なお、図３では、記憶部２２がトークン量管理テーブル２２−１、トークン付与テーブル２２−２、及びパケットバッファ２２−３の記憶を行うための記憶領域を特に備えていることを図解しているが、これらの詳細については後で説明する。
【００２６】
入出力制御部２３は、入力装置である例えばキーボード装置やマウス装置と、出力装置である例えば表示装置との動作を、制御部２１による管理の下で制御する機能を有する。図１の通信ネットワークの管理者等による入力装置への操作が検出されると、入出力制御部２３は、その操作内容に対応付けられている各種情報の入力を取得し、取得した入力情報を制御部２１に送付する。また、入出力制御部２３は、出力データを制御部２１から受け取ると、出力装置を制御して、その出力データで表現されている各種のテキストや画像を出力する。
【００２７】
通信制御部２４は、パケットの送信及び受信を行うインタフェース装置を、制御部２１による管理の下で制御し、ホストシステム１と物理的に接続されている、ホストシステム１若しくは２又はルータ６との間でパケットの授受を行う機能を有する。
【００２８】
時計制御部２５は、現在の日時の計時を行う時計の機能を有する。
なお、図４に例示するような、標準的なハードウェア構成のコンピュータを、ルータ５若しくは６として機能させることも可能である。次に、この図４について説明する。
【００２９】
このコンピュータ３０は、ＭＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、ハードディスク装置３４、入力装置３５、表示装置３６、インタフェース装置３７、及び記録媒体駆動装置３８を備えている。なお、これらの構成要素はバス３９を介して接続されており、ＭＰＵ３１の管理の下で各種のデータを相互に授受することができる。
【００３０】
ＭＰＵ（Micro Processing Unit）３１は、このコンピュータ３０全体の動作を制御する演算処理装置である。
ＲＯＭ（Read Only Memory）３２は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。ＭＰＵ３１は、この基本制御プログラムをコンピュータ３０の起動時に読み出して実行することにより、このコンピュータ３０の各構成要素の動作制御が可能になる。
【００３１】
ＲＡＭ（Random Access Memory）３３は、ＭＰＵ３１が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
【００３２】
ハードディスク装置３４は、ＭＰＵ３１によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。ＭＰＵ３１は、ハードディスク装置３４に記憶されている所定の制御プログラムを読み出して実行することにより、後述する各種の制御処理を行えるようになる。
【００３３】
入力装置３５は、例えばキーボード装置やマウス装置であり、コンピュータ３０の使用者により操作されると、その操作内容に対応付けられている使用者からの各種情報の入力を取得し、取得した入力情報をＭＰＵ３１に送付する。
【００３４】
表示装置３６は例えば液晶ディスプレイであり、ＭＰＵ３１から送付される表示データに応じて各種のテキストや画像を表示する。
インタフェース装置３７は、このコンピュータ３０に接続される各種機器との間での各種データの授受を行う。従って、インタフェース装置３７は、ホストシステム１から送られてくるパケットを受信する受信装置として機能し、また、当該パケットを、当該パケットの宛先であるホストシステム３へ宛てて所定の処理後に送信する送信装置としても機能する。
【００３５】
記録媒体駆動装置３８は、可搬型記録媒体４０に記録されている各種の制御プログラムやデータの読み出しを行う装置である。ＭＰＵ３１は、可搬型記録媒体４０に記録されている所定の制御プログラムを、記録媒体駆動装置３８を介して読み出して実行することによって、後述する各種の制御処理を行うようにすることもできる。なお、可搬型記録媒体４０としては、例えばＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）などがある。
【００３６】
このようなコンピュータ３０をルータ５若しくは６として動作させるには、まず、後述する制御処理の処理内容をＭＰＵ３１に行わせるための制御プログラムを作成する。作成された制御プログラムはハードディスク装置３４若しくは可搬型記録媒体４０に予め格納しておく。そして、ＭＰＵ３１に所定の指示を与えてこの制御プログラムを読み出させて実行させる。こうすることで、ＭＰＵ３１が、制御部２１、入出力制御部２３、通信制御部２４、及び時計制御部２５として機能すると共に、ハードディスク装置３４を記憶部２２として機能させることが可能となり、コンピュータ３０がルータ５若しくは６として動作する。
【００３７】
次に、ルータ５が行うトラヒック量の制御について、図５を参照しながら説明する。
このトラヒック量の制御を行うルータ５は、トークン５０と、バケット５１と、解放トークンバケット５２と、受信部５３と、トークン付与部５４と、送信部５５と、解放トークン格納部５６と、トークン補充部５７と、送信待ちバッファ５８とを備えている。
【００３８】
トークン５０の実体は、例えば、予め定められている特定のデータである。前述したように、トークン５０には、予め定められているデータ送信量が対応付けられている。なお、本実施形態においては、ルータ５内におけるトークン５０の総個数は、予め定められている。
【００３９】
バケット５１（第一バケット）及び解放トークンバケット５２（第二バケット）は、どちらも、トークン５０を保持するものであり、例えば、トークン５０であるデータを格納するデータバッファである。なお、図３においては、バケット５１及び解放トークンバケット５２は、記憶部２２の所定の記憶領域として構成される。
【００４０】
受信部５３は、ここではホストシステム１から送信されて送られてくるパケットを受信する。なお、受信部５３は、図３における通信制御部２４により制御されるインタフェース装置である。
【００４１】
トークン付与部５４は、受信部５３が受信したパケットのサイズに応じた個数のトークン５０をバケット５１から取り出して当該パケットに付与する。但し、トークン付与部５４は、バケット５１で保持されているトークン５０の個数が、受信部５３が受信したパケットのサイズに応じた個数に足りない場合には、該パケットを廃棄する。なお、トークン付与部５４としての機能は、図３における制御部２１が提供する。
【００４２】
送信部５５は、トークン付与部５４によりトークン５０が付与されたパケットを、当該パケットの宛先であるホストシステム３へ宛てて送信する。但し、送信部５５によるパケットの送信レートは、ホストシステム１とホストシステム３との通信において、その送信時に許容されているデータ通信レートとする。なお、送信部５５は、パケットに付与されていたトークン５０は送信しない。なお、送信部５５は、図３における通信制御部２４により制御されるインタフェース装置である。
【００４３】
解放トークン格納部５６（第一トークン格納部）は、送信部５５が送信したパケットに付与されていたトークン５０を当該パケットから解放して解放トークンバケット５２に格納して保持させる。なお、解放トークン格納部５６としての機能は、図３における制御部２１が提供する。
【００４４】
トークン補充部５７（第二トークン格納部）は、所定の頻度で、解放トークンバケット５２に保持されているトークン５０を所定数取り出してバケット５１に格納して保持させる。但し、解放トークン格納部５６によるトークン５０の解放トークンバケット５２への格納が間に合わなくなると、解放トークンバケット５２が空（トークン５０が保持されていない状態）となり、トークン補充部５７によるトークン５０の取り出しができなくなる。この場合には、トークン補充部５７は、解放トークン格納部５６が解放トークンバケット５２にトークン５０を新たに格納するまで、解放トークンバケット５２からのトークン５０の取り出し及びバケット５１への格納を中断する。
なお、トークン補充部５７としての機能も、図３における制御部２１が提供する。
【００４５】
送信待ちバッファ５８は、トークン付与部５４によりトークン５０が付与されているパケットを送信部５５が送信しきれない場合に、一時的に格納しておくバッファメモリである。この送信待ちバッファ５８は、図３における記憶部２２のパケットバッファ２２−３に相当するものである。
【００４６】
ルータ５は、以上のように構成されており、この構成によりパケットの流量を制御する。この構成では、ルータ５内におけるトークン５０の総個数が予め定められているため、トークン５０の総個数に相当するデータ送信量以上のパケットがルータ５内に滞留することがない。従って、送信部５５に許容されているパケットの送信レートの制限が緩和されたときには、ルータ５内に滞留していたパケットが速やかに解消する。
なお、このトラヒック量の制御を、ルータ５の代わりにルータ６が行うことも可能である。
【００４７】
ところで、図５を参照して説明したルータ５によるトラヒック量の制御では、ルータ５内にデータとして実在させたトークン５０を用いて行っていた。この代わりに、トークン付与がされているパケットを管理すると共に、バケット５１内と解放トークンバケット５２内とのトークン量を管理することによって、ルータ５内にトークン５０を実在させることなくトラヒック量の制御を行うことも可能である。次に、このようにして行うトラヒック量の制御の詳細を説明する。
【００４８】
まず図６について説明する。図６には、図３の記憶部２２で保持される、トークン量管理テーブル２２−１のデータ構造例が図解されている。
トークン量管理テーブル２２−１は、総数が予め定められているトークン５０についての、バケット５１と解放トークンバケット５２との各々での保持個数を管理するテーブルである。
【００４９】
トークン量管理テーブル２２−１には、「最終算出日時」、「最終算出時バケット内トークン量」、「最終算出時待機トークン量」、及び「トークン生成率」の各項目が用意されている。
【００５０】
「最終算出日時」には、トークン量管理テーブル２２−１の各項目の更新を行った最直近の日時が格納される。
「最終算出時バケット内トークン量」には、「最終算出日時」におけるバケット５１内のトークン量の算出結果が格納される。
【００５１】
「最終算出時待機トークン量」には、「最終算出日時」における解放トークンバケット５２のトークン量の算出結果が格納される。
「トークン生成率」には、トークン５０が解放トークンバケット５２からバケット５１に移送される際の、解放トークンバケット５２からバケット５１へのトークン５０の移送速度が格納される。なお、この移送速度の値は、ルータ５を管理する、図１の通信ネットワークの管理者により予め設定される。
【００５２】
次に図７について説明する。図７には、トークン５０が付与されているパケットのデータ構造例が図解されている。図３の記憶部２２に用意されているパケットバッファ２２−３内では、各パケットが、図７のデータ構造を有した状態で格納される。
【００５３】
トークン５０が付与されているパケットの実体は、図３における「パケット内容」の格納領域に格納されている。また、「パケットサイズ」の格納領域には、この「パケット内容」のデータサイズが格納される。更に、「パケットＩＤ」の格納領域には、このパケットを個別に識別するための識別情報であるパケットＩＤが格納される。なお、「パケットサイズ」及び「パケットＩＤ」は、トークン付与部５４がパケットにトークン５０を付与した際に、当該パケットに付される情報である。
【００５４】
次に図８について説明する。図８には、図３の記憶部２２で保持される、トークン付与管理テーブル２２−２のデータ構造例が図解されている。
トークン付与管理テーブル２２−２には、「パケットＩＤ」が格納される。トークン付与部５４は、パケットにトークン５０を付与した際に、当該パケットに付与したパケットＩＤを、このトークン付与管理テーブル２２−２に格納する。
【００５５】
次にルータ５内にトークン５０を実在させることなくトラヒック量の制御を行う場合に制御部２１が行う制御処理について説明する。
制御部２１は、これより説明するトークン付与処理とトークン解放処理とを行うことで、図５におけるトークン付与部５４、解放トークン格納部５６、及びトークン補充部５７の各々が提供するものに相当する機能を提供する。なお、図４に構成を図解したコンピュータ３０をルータ５として機能させる場合には、これより説明する制御処理を、前述したようにしてＭＰＵ３１に行わせる。
【００５６】
まず図９について説明する。図９は、トークン付与処理の第一の例の処理内容を図解したフローチャートである。この処理は、ホストシステム１から送られてくる新たなパケットの受信を、通信制御部２４を介して制御部２１が検知する度に開始される。
【００５７】
図９において、まず、Ｓ１０１では、受信したパケットのサイズを求め、得られたサイズに基づき、この受信パケットを送信する際のデータ送信量に相当するトークン５０の個数（必要トークン量）を算出する処理が行われる。
【００５８】
次に、Ｓ１０２では、この時点でのバケット５１内のトークン量を算出する処理が行われる。
この処理では、まず、この時点での日時の計時結果を時計制御部２５から取得する。次に、この時点でのトークン量管理テーブル２２−１のデータ内容を参照し、まず、当該テーブルにおける「最終算出日時」から、時計制御部２５より取得した日時までの経過時間を算出する。そして次に、当該テーブルにおける「トークン生成率」にこの経過時間を乗算して、解放トークンバケット５２からバケット５１へのトークン５０の移送量を算出する。但し、この算出結果に対し、当該テーブルにおける「最終算出時待機トークン量」が不足している場合には、この「最終算出時待機トークン量」を、解放トークンバケット５２からバケット５１へのトークン５０の移送量とする。当該移送量をこのようにして求めることで、トークン５０が解放トークンバケット５２に新たに格納されるまで、解放トークンバケット５２からのトークン５０の取り出し及びバケット５１への格納を中断する制御が行われる。
【００５９】
以上のようにして得られる、「トークン生成率」と当該経過時間との乗算結果と、「最終算出時待機トークン量」とのうちの小さいほうの値を、解放トークンバケット５２からの汲み上げトークン量と称することとする。
【００６０】
その後、この汲み上げトークン量と、当該テーブルにおける「最終算出時バケット内トークン量」とを加算することで、この時点でのバケット５１内のトークン量が算出される。
【００６１】
次に、Ｓ１０３では、受信パケットに付与すべきトークン５０の個数が足りているか否かを判定する処理が行われる。すなわち、Ｓ１０１の処理で算出された必要トークン量が、Ｓ１０２の処理で算出されたバケット５１内のトークン量以下であるか否かを判定する処理が行われる。ここで、必要トークン量がバケット５１内のトークン量以下であると判定されたとき（判定結果が「Ｙｅｓ」のとき）にはＳ１０４に処理を進める。一方、必要トークン量がバケット５１内のトークン量を超えていると判定されたとき（判定結果が「Ｎｏ」のとき）にはＳ１０８に処理を進める。
【００６２】
次に、Ｓ１０４では、受信パケットに、前述した「パケットＩＤ」と「パケットサイズ」（すなわちＳ１０１の処理で求めた受信したパケット）とを付加して、図７に図解したデータ構造とする処理が行われる。そして、続くＳ１０５において、Ｓ１０４の処理後のパケットを、記憶部２２に用意されているパケットバッファ２２−３に格納する処理が行われる。
【００６３】
次に、Ｓ１０６では、Ｓ１０５の処理でパケットバッファ２２−３に格納したパケットについての「パケットＩＤ」を、記憶部２２に用意されているトークン付与管理テーブル２２−２に追加して格納する処理が行われる。
【００６４】
次に、Ｓ１０７では、トークン量管理テーブル２２−１の更新処理が行われる。このＳ１０７の処理では、まず、当該テーブルにおける「最終算出日時」のデータを、Ｓ１０２の処理で時計制御部２５から取得した日時の計時結果に更新する。次に、Ｓ１０２の処理で算出したバケット５１内のトークン量から、Ｓ１０１の処理で算出された必要トークン量を減算し、その減算結果の値を、当該テーブルにおける「最終算出時バケット内トークン量」の更新後のデータとする。そして次に、当該テーブルにおける「最終算出時待機トークン量」のデータから、前述した汲み上げトークン量を減算し、その減算結果の値を、この「最終算出時待機トークン量」の更新後の値とする。従って、前述したＳ１０２の処理において、汲み上げトークン量を「最終算出時待機トークン量」としていた場合には、「最終算出時待機トークン量」の更新後の値はゼロとなる。
【００６５】
このＳ１０７の処理により、トークン量管理テーブル２２−１におけるバケット５１でのトークン５０の保持個数を、受信パケットのサイズに応じた個数分減少させる制御が行われる。また、このＳ１０７の処理により、トークン量管理テーブル２２−１における解放トークンバケット５２でのトークン５０の保持個数を所定の頻度で所定数減少させる制御が行われる。更に、前述したＳ１０２の処理を加味したＳ１０７の処理により、トークン量管理テーブル２２−１におけるバケット５１内でのトークンの保持個数を、解放トークンバケット５２でのトークン５０の減少分だけ増加させる制御が行われる。
以上のＳ１０７の処理を終えた後には、この図９の処理が終了する。
【００６６】
一方、図９におけるＳ１０８では、このトークン付与処理を開始する切っ掛けとなった受信パケットを廃棄する処理が行われる。従って、前述したＳ１０３の処理とこのＳ１０８の処理とにより、バケット５１で保持されているトークン５０の個数が、受信パケットのサイズに応じた個数に足りない場合に、当該受信パケットを廃棄する制御が行われる。
【００６７】
次に、Ｓ１０９では、トークン量管理テーブル２２−１の更新処理が行われる。このＳ１０９の処理では、まず、当該テーブルにおける「最終算出日時」のデータを、Ｓ１０２の処理で時計制御部２５から取得した日時の計時結果に更新する。次に、ここでは、Ｓ１０２の処理で算出したバケット５１内のトークン量を、（必要トークン量の減算を行わずに）当該テーブルにおける「最終算出時バケット内トークン量」の更新後のデータとする。そして次に、当該テーブルにおける「最終算出時待機トークン量」のデータから、前述した汲み上げトークン量を減算し、その減算結果の値を、この「最終算出時待機トークン量」の更新後の値とする。
以上のＳ１０７の処理を終えた後には、この図９の処理が終了する。
【００６８】
次に図１０について説明する。図１０は、トークン解放処理の第一の例の処理内容を図解したフローチャートである。この処理は、通信制御部２４がインタフェース装置を制御して、前述したトークン付与処理によりパケットバッファ２２−３に格納したパケットの読み出し及び送信を行わせる度に開始される。
【００６９】
図１０において、まず、Ｓ２０１では、パケットバッファ２２−３において、送信されたパケットに付与されていた「パケットＩＤ」が、トークン付与管理テーブル２２−２に格納されているか否かを判定する処理が行われる。ここで、当該「パケットＩＤ」が、トークン付与管理テーブル２２−２に格納されていると判定されたとき（判定結果が「Ｙｅｓ」のとき）にはＳ２０２に処理を進める。一方、当該「パケットＩＤ」が、トークン付与管理テーブル２２−２に格納されていないと判定されたとき（判定結果が「Ｎｏ」のとき）には、このままこのトークン解放処理を終了する。
【００７０】
次に、Ｓ２０２では、パケットバッファ２２−３において、送信されたパケットに付与されていた「パケットサイズ」のデータを取得し、このデータで示されている値に相当するトークン５０の個数を算出する処理が行われる。この処理により算出される個数を、解放トークン量と称することとする。
【００７１】
次に、Ｓ２０３では、Ｓ２０１の処理によりトークン付与管理テーブル２２−２から発見された「パケットＩＤ」を当該トークン付与管理テーブル２２−２から削除する処理が行われる。
【００７２】
次に、Ｓ２０４では、この時点でのバケット５１内のトークン量を算出する処理が行われる。
このＳ２０４の処理は、図９のＳ１０２の処理と同様の処理内容である。すなわち、まず、この時点での日時の計時結果を時計制御部２５から取得する。次に、この時点でのトークン量管理テーブル２２−１のデータ内容を参照し、まず、当該テーブルにおける「最終算出日時」から、時計制御部２５より取得した日時までの経過時間を算出する。そして次に、当該テーブルにおける「トークン生成率」にこの経過時間を乗算して、解放トークンバケット５２からバケット５１へのトークン５０の移送量を算出する。但し、この算出結果に対し、当該テーブルにおける「最終算出時待機トークン量」が不足している場合には、この「最終算出時待機トークン量」を、解放トークンバケット５２からバケット５１へのトークン５０の移送量とする。このようにして解放トークンバケット５２からの汲み上げトークン量を求める。そして、この汲み上げトークン量と、当該テーブルにおける「最終算出時バケット内トークン量」とを加算することで、この時点でのバケット５１内のトークン量が算出される。
【００７３】
次に、Ｓ２０５では、トークン量管理テーブル２２−１の更新処理が行われる。このＳ２０５の処理では、まず、当該テーブルにおける「最終算出日時」のデータを、Ｓ２０４の処理で時計制御部２５から取得した日時の計時結果に更新する。次に、Ｓ２０４の処理で算出したバケット５１内のトークン量を、当該テーブルにおける「最終算出時バケット内トークン量」の更新後のデータとする。そして次に、当該テーブルにおける「最終算出時待機トークン量」のデータに、前述した汲み上げトークン量を減算し、その減算結果に対し、更に、ここでは、前述した解放トークン量を加算する。そして、このようにして算出された値を、この「最終算出時待機トークン量」の更新後の値とする。このＳ２０５の処理により、トークン量管理テーブル２２−１における解放トークンバケット５２でのトークン５０の保持個数を、送信パケットのサイズに応じたトークン５０の個数分増加させる制御が行われる。
以上のＳ２０５の処理を終えた後には、この図１０の処理が終了する。
【００７４】
以上のトークン付与処理とトークン解放処理とを制御部２１が行うことで、ルータ５内にトークン５０を実在させることなく、図５を参照して説明したものと同様のトラヒック量の制御を行うことができる。
【００７５】
以上のトラヒック量の制御を行うことによる効果について説明する。
まず図１１について説明する。図１１は、ルータ５による、ホストシステム１からのパケット受信量及びホストシステム３へのパケット送信可能量の時間変化の一例を図解したものである。
【００７６】
この例では、パケット受信量は量率ｘ［／秒］で一定であるのに対し、パケット送信量は、時刻Ｔ＃０まではｚ［／秒］、その後時刻Ｔ＃１までは０、更にその後時刻Ｔ＃２まではｙ［／秒］と変動し、Ｔ＃２においてｚ［／秒］に回復する場合を想定する。なお、ｚ＞ｘ＞ｙ＞０とする。
【００７７】
これより説明する図１２Ａ、図１２Ｂ、図１２Ｃ、及び図１３では、パケット受信量及びパケット送信可能量が、図１１に図解したように時間変化する場合を想定している。
まず図１２Ａについて説明する。図１２Ａは、ルータ５が、図１８に図解したトークンバケット方式の原理に従ってトラヒック量の制御を行った場合における、パケットのルータ５内での滞留及び送信の様子を図解したものである。
【００７８】
この場合、Ｔ＃０においてパケット送信可能量がゼロとなってもトークン１０１のバケット１００への補充は継続されるため、パケット１１１は廃棄されない。このため、パケット１１１のルータ５内での滞留量は時間の経過と共に増加していく。その後、Ｔ＃１においてパケット送信可能量がｙまで回復しても、その回復はパケット受信量ｘに満たないため、パケット１１１のルータ５内での滞留は更に増加する。従って、その後の時刻Ｔ＃２においてパケット送信可能量が当初のｚまで回復すると、それまでに滞留したパケット１１１が一気に吐き出され、大量のパケット１１１の送信（パケット受信量ｘを上回るような大量送信）が長時間に渡って継続することになる。このとき、ルータ６では、大量のパケット１１１によって輻輳が生じる場合もある。
【００７９】
次に、図１２Ｂ及び図１２Ｃについて説明する。図１２Ｂ及び図１２Ｃは、どちらも、前述した第一の技術を採用してトラヒック量の制御を行った場合におけるパケットの滞留及び送信の様子を図解したものである。
【００８０】
まず図１２Ｂに注目する。前述した第一の技術では、Ｔ＃１において通信データのスループットが低下すると、通信データの過大な滞留を回避するために、トークンバッファへのトークンの出力頻度を低下させる。従って、パケット１１１のルータ５内での滞留は一時的には抑制される。しかしながら、前述した第一の技術では、その後、トークンバッファが枯渇状態に遷移してから所定時間後には、通信データのスループットが回復しなくても、所定量のトークンをトークンバッファへ追加して減少状態に遷移させる動作が行われる。このため、パケット１１１のルータ５内での滞留量は時間の経過と共に結局は増加していく。従って、時刻Ｔ＃２においてパケット送信可能量が当初のｚまで回復すれば、図１２の場合の同様、それまでに滞留したパケット１１１が一気に吐き出されて大量の送信（パケット受信量ｘを上回るような大量送信）が長時間に渡って継続することになる。このとき、ルータ６では、大量のパケット１１１によって輻輳が生じる場合もある。
【００８１】
ここで、トークンバッファを枯渇状態から減少状態に遷移させるためのトークンバッファへのトークンの追加を中止した場合が図１２Ｃの場合である。このようにすると、パケット１１１のルータ５内での滞留量は所定量に制限される。しかしながら、その後、ルータ５内で滞留していたパケット１１１の、スループットｙによる送信が時刻Ｔ＃１以降において完了してしまう場合がある。この場合には、その後に他のトラヒックの増大等の要因が解消してパケット送信可能量がｚまで回復しても、通信データのスループットは、パケット受信量と同一のｘまでは回復しないことになってしまう。
【００８２】
これに対し、図１３は、図３の構成を有するルータ５によりトラヒック量の制御を行った場合におけるパケットの滞留及び送信の様子を図解している。この場合では、ルータ５内で滞留するパケットの総量は、予め設定したトークン５０の総個数により定まる量を超えることはない。従って、ルータ５内で滞留している、パケットバッファ２２−３に格納されているパケットの大量送信は短時間で完了する。更に、その後に他のトラヒックの増大等の要因が解消してパケット送信可能量が元のｚまで回復すれば、通信データのスループットも、パケット受信量であるｘまで速やかに回復する。
【００８３】
次に、前述した図９のトークン付与処理及び図１０のトークン解放処理の変形例について幾つか説明する。
まず、図１４について説明する。図１４は、トークン解放処理の第二の例の処理内容を図解したフローチャートである。
【００８４】
制御部２１が、図１０のトークン解放処理に代えて、この図１４のトークン解放処理を、図９のトークン付与処理と共に行うようにしても、図５を参照して説明したものと同様のトラヒック量の制御を行うことができる。
【００８５】
図１４の処理は、通信制御部２４がインタフェース装置を制御して、前述したトークン付与処理によりパケットバッファ２２−３に格納したパケットの読み出し及び送信を行わせる度に開始される。
【００８６】
この図１４のフローチャートは、図１０のフローチャートにおけるＳ２０４及びＳ２０５の処理を、Ｓ２１１の処理に置き換えたものである。そこで、ここでは、Ｓ２１１の処理のみについて説明する。
【００８７】
Ｓ２０３に続くＳ２１１では、トークン量管理テーブル２２−１における「最終算出時待機トークン量」の値に、Ｓ２０２の処理で算出した解放トークン量を加算してその値を更新する処理が行われ、その後はこの図１４の処理が終了する。
【００８８】
このように、上述したＳ２１１の処理では、トークン量管理テーブル２２−１における解放トークンバケット５２でのトークン５０の保持個数を、送信されたパケットのサイズに応じたトークン５０の個数分増加させる処理のみが行われる。つまり、解放トークンバケット５２からのトークン５０の汲み上げ及びバケット５１への移送に相当するトークン量管理テーブル２２−１の更新については、パケットを受信した際にトークン付与処理で行うようにし、パケット送信時には行わないようにする。このようにすることで、トークン量管理テーブル２２−１の更新のための処理量が削減されるので、制御部２１の処理負担が軽減される。
【００８９】
次に図１５について説明する。図１５は、トークン付与処理の第二の例の処理内容を図解したフローチャートである。
制御部２１が、図９のトークン付与処理に代えて、この図１５のトークン付与処理を、図１４のトークン解放処理と共に行うようにしても、図５を参照して説明したものと同様のトラヒック量の制御を行うことができる。
【００９０】
図１５の処理は、ホストシステム１から送られてくる新たなパケットの受信を、通信制御部２４を介して制御部２１が検知する度に開始される。
この図１５のフローチャートは、図９のフローチャートにおけるＳ１０９の処理が削除されて、Ｓ１０８の処理後にトークン付与処理を終了するようにしたものである。つまり、解放トークンバケット５２からのトークン５０の汲み上げ及びバケット５１への移送に相当するトークン量管理テーブル２２−１の更新については、パケットを受信した際にトークン付与処理で行う。但し、この更新の処理は、Ｓ１０３の判定結果がＹｅｓである場合にのみＳ１０７で行うようにし、Ｓ１０３の判定結果がＮｏである場合には行わない。これはすなわち、トークン量管理テーブル２２−１におけるバケット５１でのトークン５０の保持個数が、受信パケットのサイズに応じた個数以上であった場合にのみ上記のトークン量管理テーブル２２−１の更新を行うようにするものである。このようにすることで、トークン量管理テーブル２２−１の更新のための処理量が更に削減されるので、制御部２１の処理負担が更に軽減される。
【００９１】
なお、上述したトークン量管理テーブル２２−１の更新を、パケット受信の際やパケット送信の際に行う代わりに、所定の周期で、パケットの送受信のタイミングとは無関係に行うようにしてもよい。このようにするには、制御部２１が、これより説明する図１６のトークン付与処理の第三の例を図１４のトークン解放処理と共に行うようにし、これと並行して、後述する図１７のトークン汲み上げ処理を制御部２１が行うようにすればよい。
【００９２】
図１６について説明する。図１６は、トークン付与処理の第三の例の処理内容を図解したフローチャートである。
図１６の処理は、ホストシステム１から送られてくる新たなパケットの受信を、通信制御部２４を介して制御部２１が検知する度に開始される。
【００９３】
この図１６のフローチャートは、図１５のフローチャートにおけるＳ１０２及びＳ１０７の処理を、それぞれＳ１１１及びＳ１１２の処理に置き換えたものである。そこで、ここでは、このＳ１１１及びＳ１１２の処理のみについて説明する。
【００９４】
Ｓ１０１に続くＳ１１１では、この時点でのトークン量管理テーブル２２−１のデータ内容を参照して「最終算出時バケット内トークン量」の値を取得する処理が行われる。なお、この処理に続くＳ１０３の判定処理では、この処理で取得した値を、バケット５１内のトークン量とする。
【００９５】
その一方、Ｓ１０６に続くＳ１１２では、トークン量管理テーブル２２−１のうちの「最終算出時バケット内トークン量」のデータのみを更新する処理が行われる。すなわち、上述したＳ１１１の処理で取得したバケット５１内のトークン量から、Ｓ１０１の処理で取得した必要トークン量を減算し、この減算結果の値を、トークン量管理テーブル２２−１の「最終算出時バケット内トークン量」とする処理が行われる。そして、この処理を終えた後には、この図１６の処理が終了する。
【００９６】
従って、このＳ１１２の処理では、トークン量管理テーブル２２−１におけるバケット５１でのトークン５０の保持個数を、受信パケットのサイズに応じた個数分減少させる処理のみが行われる。つまり、解放トークンバケット５２からのトークン５０の汲み上げ及びバケット５１への移送に相当するトークン量管理テーブル２２−１の更新については、このトークン付与処理では行われず、また、図１４のトークン解放処理でも行われない。
【００９７】
次に図１７について説明する。図１７は、トークン汲み上げ処理の処理内容を図解したフローチャートである。
この図１７の処理は、所定の周期、より具体的には、時計制御部２５が所定時間の経過を計時する度に、その計時結果を制御部２１が受け取ることで開始される。
【００９８】
図１７において、まず、Ｓ３０１では、前述した汲み上げトークン量の算出処理が行われる。すなわち、まず、この時点での日時の計時結果を時計制御部２５から取得する。次に、この時点でのトークン量管理テーブル２２−１のデータ内容を参照し、まず、当該テーブルにおける「最終算出日時」から、時計制御部２５より取得した日時までの経過時間を算出する。そして次に、当該テーブルにおける「トークン生成率」にこの経過時間を乗算して、解放トークンバケット５２からバケット５１へのトークン５０の移送量を算出する。但し、この算出結果に対し、当該テーブルにおける「最終算出時待機トークン量」が不足している場合には、この「最終算出時待機トークン量」を、解放トークンバケット５２からバケット５１へのトークン５０の移送量とする。以上のようにして得られた解放トークンバケット５２からバケット５１へのトークン５０の移送量を、解放トークンバケット５２からの汲み上げトークン量とする。
【００９９】
次に、Ｓ３０２では、トークン量管理テーブル２２−１の更新処理が行われる。このＳ３０２の処理では、まず、当該テーブルにおける「最終算出日時」のデータを、Ｓ３０１の処理で時計制御部２５から取得した日時の計時結果に更新する。次に、当該テーブルにおける「最終算出時バケット内トークン量」のデータに、前述した汲み上げトークン量を加算し、その加算結果の値を、この「最終算出時バケット内トークン量」の更新後の値とする。そして次に、当該テーブルにおける「最終算出時待機トークン量」のデータから、前述した汲み上げトークン量を減算し、その減算結果の値を、この「最終算出時待機トークン量」の更新後の値とする。
以上のＳ３０２の処理を終えた後には、この図１７の処理が終了する。
【０１００】
以上の図１６のトークン付与処理と、図１４のトークン解放処理と、図１７のトークン汲み上げ処理とを制御部２１が並行して行うようにしても、図５を参照して説明したものと同様のトラヒック量の制御を行うことができる。
【０１０１】
なお、以上までに説明した実施形態に関し、更に以下の付記を開示する。
（付記１）
総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するトークン量管理テーブルと、
通信データパケットを受信する受信手段と、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるトークン量減少手段と、
該受信手段が受信した通信データパケットを送信する送信手段と、
該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるトークン量増加手段と、
該トークン量管理テーブルを更新して、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数ずつ減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるトークン量更新手段と、
を有し、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合には、トークン量減算手段は、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄する、
ことを特徴とする通信装置。
（付記２）
該トークン量更新手段は、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数が該所定数に対して不足している場合には、該第二バケットでのトークンの保持個数だけ、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を増加させると共に、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数をゼロとし、以降、該トークン量増加手段が該保持個数を増加させるまで、該トークン量管理テーブルにおける該第二バケット及び該第一バケットでのトークンの保持個数の更新を中断する、ことを特徴とする付記１に記載の通信装置。
（付記３）
該トークン量変更手段は、該受信手段が通信データパケットを受信した際に、該トークン量管理テーブルの更新を行うことを特徴とする付記１または２に記載の通信装置。
（付記４）
該トークン量変更手段は、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数以下であった場合に、該トークン量管理テーブルの更新を行うことを特徴とする付記３に記載の通信装置。
（付記５）
該トークン量変更手段は、所定の周期で該トークン量管理テーブルの更新を行うことを特徴とする付記１または２に記載の通信装置。
（付記６）
通信データパケットを受信する受信手段と該通信データパケットを送信する送信手段とを有する通信装置を用いて行うトラヒック量の制御方法であって、
総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するトークン量管理テーブルにおける、該第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるトークン量減少ステップと、
該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるトークン量増加ステップと、
該トークン量管理テーブルを更新して、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるトークン量更新ステップと、
を有しており、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合には、該トークン量減少ステップでは、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄するようにする、
ことを特徴とするトラヒック量の制御方法。
（付記７）
該トークン量更新ステップでは、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数がゼロである場合には、該トークン量増加ステップにより該保持個数を増加させるまで、該トークン量管理テーブルにおける該第二バケット及び該第一バケットでのトークンの保持個数の更新を中断する、ことを特徴とする付記６に記載のトラヒック量の制御方法。
（付記８）
通信データパケットを受信する受信手段と該通信データパケットを送信する送信手段とを有する通信装置を用いて行うトラヒック量の制御を演算処理装置に行わせるためのプログラムであって、
総数が予め定められているトークンについての、該トークンを保持する第一バケット及び第二バケットの各々での保持個数を管理するトークン量管理テーブルにおける、該第一バケットでのトークンの保持個数を、該受信手段が受信した通信データパケットのサイズに応じた個数分減少させるトークン量減少処理と、
該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を、該送信手段が送信した通信データパケットのサイズに応じた個数分増加させるトークン量増加処理と、
該トークン量管理テーブルを更新して、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数を所定の頻度で所定数減少させると共に該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を当該減少分だけ増加させるトークン量更新処理と、
を該演算処理装置に行わせ、
該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に満たない場合には、該トークン量減処理では、該トークン量管理テーブルにおける該第一バケットでのトークンの保持個数を維持すると共に、該通信データパケットを該送信手段に送信させることなく廃棄するようにする、
ことを特徴とするプログラム。
（付記９）
該トークン量更新処理では、該トークン量管理テーブルにおける該第二バケットでのトークンの保持個数がゼロである場合には、該トークン量増加処理により該保持個数を増加させるまで、該トークン量管理テーブルにおける該第二バケット及び該第一バケットでのトークンの保持個数の更新を中断する、ことを特徴とする付記８に記載のプログラム。
（付記１０）
予め定められた個数のトークンと、
該トークンを保持する第一バケット及び第二バケットと、
通信データパケットを受信する受信手段と、
該受信手段が受信した通信データパケットのサイズに応じた個数のトークンを該第一バケットから取り出して該通信データパケットに付与するトークン付与手段と、
該トークン付与手段により該トークンが付与された該通信データパケットを送信する送信手段と、
該送信手段が送信した通信データパケットに付与されていたトークンを該第二バケットに格納して保持させる第一トークン格納手段と、
所定の頻度で、該第二バケットに保持されているトークンを取り出して該第一バケットに格納して保持させる第二トークン格納手段と、
を有し、
該トークン付与手段は、該第一バケットで保持されているトークンの個数が、該受信手段が受信した通信データパケットのサイズに応じた個数に足りない場合には、該通信データパケットを廃棄する、
ことを特徴とする通信装置。
（付記１１）
該第二トークン格納手段は、該第二バケットにトークンが保持されていない場合には、該第一トークン格納手段が該第二バケットにトークンを新たに格納するまで、該第二バケットからのトークンの取り出し及び該第一バケットへの格納を中断する、ことを特徴とする付記１０に記載の通信装置。
【符号の説明】
【０１０２】
１、２、３、４  ホストシステム
５、６  ルータ
１１、２１  制御部
１２、２２  記憶部
１３、２３  入出力制御部
１４、２４  通信制御部
２２−１  トークン量管理テーブル
２２−２  トークン付与テーブル
２２−３  パケットバッファ
２５  時計制御部
３０  コンピュータ
３１  ＭＰＵ
３２  ＲＯＭ
３３  ＲＡＭ
３４  ハードディスク装置
３５  入力装置
３６  表示装置
３７  インタフェース装置
３８  記録媒体駆動装置
３９  バス
４０  可搬型記録媒体
５０、１０１  トークン
５１、１００  バケット
５２  解放トークンバケット
５３  受信部
５４  トークン付与部
５５  送信部
５６  解放トークン格納部
５７  トークン補充部
５８  送信待ちバッファ
１１０  パケット制御点
１１１  パケット
【図２】
0005458957.tif 000002
【図３】
0005458957.tif 000003
【図４】
0005458957.tif 000004
【図５】
0005458957.tif 000005
【図６】
0005458957.tif 000006
【図７】
0005458957.tif 000007
【図８】
0005458957.tif 000008
【図９】
0005458957.tif 000009
【図１０】
0005458957.tif 000010
【図１１】
0005458957.tif 000011
【図１２Ａ】
0005458957.tif 000012
【図１２Ｂ】
0005458957.tif 000013
【図１２Ｃ】
0005458957.tif 000014
【図１３】
0005458957.tif 000015
【図１４】
0005458957.tif 000016
【図１５】
0005458957.tif 000017
【図１６】
0005458957.tif 000018
【図１７】
0005458957.tif 000019
【図１８】
0005458957.tif 000020
【図１】
0005458957.tif 000021