(57)【要約】【課題】保証帯域を維持しつつ、送信フレームのバーストを抑制する。【解決手段】通信装置は、トークン管理部３１と、バースト管理部３２と、バッファ制御部３３とを有する。トークン管理部３１は、トークンバケット内のトークンの残量を管理する。バースト管理部３２は、所定期間内に送信されたフレームのデータ量を管理する。バッファ制御部３３は、トークンの残量が送信対象のフレームのデータ量以上であり、かつ、所定期間内に送信されたフレームのデータ量が所定量未満であるか否かに基づいて、送信対象のフレームの送信を制御する。【選択図】図３
2016066835.tif 000002
【特許請求の範囲】
【請求項１】
トークンバケット内のトークンの残量を管理する第１の管理部と、
所定期間内に送信されたフレームのデータ量を管理する第２の管理部と、
前記トークンの残量が送信対象のフレームのデータ量以上であり、かつ、前記所定期間内に送信されたフレームのデータ量が所定量未満であるか否かに基づいて、前記送信対象のフレームの送信を制御する送信制御部と
を有することを特徴とする伝送装置。
【請求項２】
前記送信制御部は、
前記所定期間内に他のフレームが送信されていない場合に、前記所定期間内に送信されたフレームのデータ量が所定量未満であると判定することを特徴とする請求項１に記載の伝送装置。
【請求項３】
前記第２の管理部は、
所定周期をカウントするタイマと、
送信されたフレームのデータ量に対応する値をカウント値として保持するカウンタと、
フレームが送信された場合に、送信されたレームのデータ量に対応する値を前記カウンタのカウント値に加算し、前記タイマが前記所定周期をカウントする毎に前記カウンタのカウント値を０にリセットするカウンタ制御部と
を有し、
前記送信制御部は、
前記トークンの残量が前記送信対象のフレームのデータ量以上であり、かつ、前記カウント値が所定のデータ量に対応する値未満である場合に、フレームの送信を行う送信部に、前記送信対象のフレームの送信を指示することを特徴とする請求項１に記載の伝送装置。
【請求項４】
前記第２の管理部は、
所定周期を計測する複数のタイマと、
前記複数のタイマのそれぞれに対応して設けられ、送信されたフレームのデータ量に対応する値をカウント値としてそれぞれ保持する複数のカウンタと、
フレームが送信された場合に、送信されたフレームのデータ量に対応する値をそれぞれの前記カウンタのカウント値に加算し、それぞれの前記タイマが前記所定周期を計測する毎に対応する前記カウンタのカウント値を０にリセットするカウンタ制御部と
を有し、
それぞれの前記タイマは、
前記所定期間の計測の開始および終了のタイミングが異なっており、
前記送信制御部は、
前記トークンの残量が前記送信対象のフレームのデータ量以上であり、かつ、前記複数のカウンタのそれぞれのカウント値が全て所定のデータ量に対応する値未満である場合に、フレームの送信を行う送信部に、前記送信対象のフレームの送信を指示することを特徴とする請求項１に記載の伝送装置。
【請求項５】
前記第２の管理部は、
送信されたフレームのデータ量に対応する値をカウント値として保持するカウンタと、
フレームが送信された場合に、送信されたフレームのデータ量に対応する値を前記カウンタのカウント値に加算すると共に、前記カウンタのカウント値を時間の経過に従って減少させるカウンタ制御部と
を有し、
前記送信制御部は、
前記トークンの残量が前記送信対象のフレームのデータ量以上であり、かつ、前記カウント値が所定のデータ量に対応する値未満である場合に、フレームの送信を行う送信部に、前記送信対象のフレームの送信を指示することを特徴とする請求項１に記載の伝送装置。
【請求項６】
前記カウンタ制御部は、
フレームが送信された場合に、送信されたフレームのデータ量に所定の増加率を乗じた値を前記カウンタのカウント値に加算し、単位時間当たり所定の減少率で前記カウンタのカウント値を減少させることを特徴とする請求項５に記載の伝送装置。
【請求項７】
前記カウンタ制御部は、
フレームを送信された際の前記カウント値が所定の閾値未満である場合に、送信されたフレームのデータ量に第１の増加率を乗じた値を前記カウンタのカウント値に加算し、フレームを送信された際の前記カウント値が前記閾値以上であるである場合に、送信されたフレームのデータ量に前記第１の増加率とは異なる第２の増加率を乗じた値を前記カウンタのカウント値に加算することを特徴とする請求項６に記載の伝送装置。
【請求項８】
前記カウンタ制御部は、
前記カウント値が前記閾値未満である場合に、単位時間当たり第１の減少率で前記カウンタのカウント値を減少させ、前記カウント値が前記閾値以上である場合に、単位時間当たり、前記第１の減少率とは異なる第２の減少率で前記カウンタのカウント値を減少させることを特徴とする請求項７に記載の伝送装置。
【請求項９】
伝送装置が、
トークンバケット内のトークンの残量を管理し、
所定期間内に送信されたフレームのデータ量を管理し、
前記トークンの残量が送信対象のフレームのデータ量以上であり、かつ、前記所定期間内に送信されたフレームのデータ量が所定量未満であるか否かに基づいて、前記送信対象のフレームの送信を制御する
処理を実行することを特徴とする伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送装置および伝送方法に関する。
【背景技術】
【０００２】
近年のインターネットやモバイルネットワークの普及に伴い、通信事業者によって管理運営されるキャリアネットワークは、従来のＴＤＭ（Time  Division  Multiplexing）等の同期系のネットワークから、非同期系のネットワークへの移行が進められている。非同期系のキャリアネットワークでは、顧客提供サービスの１つとして、ネットワークのユーザ（顧客）に対して、使用帯域の保証を行う帯域保証サービスが提供される場合がある。帯域保証サービスにおいて、ネットワーク上に設置される通信機器は、ユーザに対して保証する最大帯域を超えないように、ユーザが送信するフレームに対して帯域制御を行う。なお、帯域制御とは、単位時間当たりに転送されるデータ量を制御するものであり、１秒当たりに伝送されるビット量であるｂｐｓ（bit  per  second）等で表現される。
【０００３】
ネットワーク上に設置される各通信機器は、例えばトークンバケット方式と呼ばれる技術を用いて帯域制御を行う。トークンバケット方式では、トークンバケットと呼ばれる記憶領域の中に、保証帯域に相当するレートでトークンが補充される。各通信機器は、フレームを受信した場合に、受信したフレームのデータ量に相当するトークンがトークンバケットの中に存在していれば、受信したフレームを送信する。そして、各通信機器は、送信したフレームのデータ量に相当するトークンをトークンバケットから取り除く。これにより、ネットワーク上に設置される各通信機器は、帯域制御を行うことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２４４４１７号公報
【特許文献２】特開２０１３−２６９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、非同期系のネットワークでは、送信されるフレームのサイズが可変長であり、フレームが不規則に送信される。そのため、ネットワーク上に設置される各通信機器は、トークンバケットのサイズをある程度大きくして、トークンを余分に蓄えておくことにより、長期的に保証帯域を満たすようにフレームの送信を制御する。
【０００６】
しかし、トークンバケット方式では、フレームの送信がしばらく行われなければ、トークンバケット内に多くのトークンが蓄えられる。そのため、フレームの送信がしばらく行われていない状態において、バースト性を有する複数のフレームを短期間に連続して受信すると、トークンバケットに存在するトークンに相当するデータ量のフレームが、バースト性を有したまま転送されることになる。バースト性を持つデータが送信されると、受信側の通信機器では、受信バッファのオーバーフローが発生する場合がある。
【０００７】
また、トークンバケットのサイズを小さくすると、送信フレームのバースト性を抑えることができるが、トークンを一時的に蓄える量が減る。そのため、不規則に送信されるフレームに対して、十分な帯域保証サービスを提供することができない。
【０００８】
本願に開示の技術は、保証帯域を維持しつつ、送信フレームのバーストを抑制する。
【課題を解決するための手段】
【０００９】
１つの側面では、伝送装置は、第１の管理部と、第２の管理部と、送信制御部とを有する。第１の管理部は、トークンバケット内のトークンの残量を管理する。第２の管理部は、所定期間内に送信されたフレームのデータ量を管理する。送信制御部は、トークンの残量が送信対象のフレームのデータ量以上であり、かつ、所定期間内に送信されたフレームのデータ量が所定量未満であるか否かに基づいて、送信対象のフレームの送信を制御する。
【発明の効果】
【００１０】
１実施形態によれば、保証帯域を維持しつつ、フレームのバーストを抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、通信システムの一例を示す図である。
【図２】図２は、通信装置の一例を示すブロック図である。
【図３】図３は、実施例１における制御回路の一例を示すブロック図である。
【図４】図４は、実施例１におけるフレームの送信制御の一例を説明する図である。
【図５】図５は、比較例におけるフレームの送信制御を説明する図である。
【図６】図６は、比較例におけるフレームの送信制御を説明する図である。
【図７】図７は、実施例１における送信制御処理の一例を示すフローチャートである。
【図８】図８は、実施例２における制御回路の一例を示すブロック図である。
【図９】図９は、実施例２におけるフレームの送信制御の一例を説明する図である。
【図１０】図１０は、実施例２における送信制御処理の一例を示すフローチャートである。
【図１１】図１１は、実施例３における制御回路の一例を示すブロック図である。
【図１２】図１２は、実施例３におけるフレームの送信制御の一例を説明する図である。
【図１３】図１３は、実施例３におけるカウンタ制御処理の一例を示すフローチャートである。
【図１４】図１４は、実施例３における送信制御処理の一例を示すフローチャートである。
【図１５】図１５は、実施例４におけるフレームの送信制御の一例を説明する図である。
【図１６】図１６は、実施例４におけるカウンタ制御処理の一例を示すフローチャートである。
【図１７】図１７は、実施例４における送信制御処理の一例を示すフローチャートである。
【図１８】図１８は、制御回路のハードウェアの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する伝送装置および伝送方法の実施例を、図面に基づいて詳細に説明する。なお、以下の実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１３】
［通信システム１０の概要］
図１は、通信システム１０の一例を示す図である。通信システム１０は、複数の通信装置２０を有する。それぞれの通信装置２０は、１つ以上の他の通信装置２０に接続されている。通信装置２０には、アクセス回線を介して複数のユーザ端末１１が接続されているものがある。なお、それぞれの通信装置２０は、例えば、ユーザ毎に帯域保証サービスを提供している通信事業者等によって管理されている。
【００１４】
それぞれの通信装置２０は、ユーザ端末１１または他の通信装置２０から送信されたフレームを受信し、受信したフレームをフレームバッファに格納する。そして、通信装置２０は、フレームバッファに格納したフレームのアドレス情報等に基づいて、フレームバッファ内のフレームを送信するポートを特定する。そして、通信装置２０は、フレームバッファ内のフレームを、特定したポートからユーザ端末１１または他の通信装置２０へ送信する。
【００１５】
本実施例において、ユーザ端末１１から送信されるフレームは、例えばEthernet（登録商標）規格に基づくフォーマットのフレームである。Ethernetフレームは、可変長フレームであり、非同期に送信される。それぞれの通信装置２０は、Ethernetフレームを送受信する。
【００１６】
ここで、複数の他の通信装置２０に接続されている通信装置２０は、複数の他の通信装置２０から、一定期間内に所定数以上のフレームを受信すると、フレームバッファがあふれ、フレームを破棄する。これにより、通信品質の劣化や、フレームの再送による通信トラフィックの増加が起る。そのため、それぞれの通信装置２０は、他の通信装置２０へフレームを送信する場合に、バースト性を抑えて送信することが好ましい。
【００１７】
［通信装置２０］
図２は、通信装置２０の一例を示すブロック図である。通信装置２０は、複数のＩ／Ｆ（インターフェイス）回路２１、ＳＷ（スイッチ）回路２２、および制御回路３０を有する。それぞれのＩ／Ｆ回路２１は、主にフレームのデータが伝送される信号線によってＳＷ回路２２に接続されている。また、それぞれのＩ／Ｆ回路２１およびＳＷ回路２２は、制御信号が伝送される制御線によって制御回路３０に接続されている。図２の例において、通信装置２０内の信号線は実線で示されており、通信装置２０内の制御線は破線で示されている。
【００１８】
それぞれのＩ／Ｆ回路２１には複数の回線ポート２１０が設けられており、それぞれの回線ポート２１０は、ユーザ端末１１または他の通信装置２０に接続されている。それぞれのＩ／Ｆ回路２１は、回線ポート２１０を介してユーザ端末１１または他の通信装置２０から送信されたフレームを受信する。そして、それぞれのＩ／Ｆ回路２１は、制御回路３０からの指示に応じて、受信したフレームをＳＷ回路２２へ送信する。また、それぞれのＩ／Ｆ回路２１は、ＳＷ回路２２から送信されたフレームを受信し、受信したフレームを、ＳＷ回路２２から指示された回線ポート２１０を介して、ユーザ端末１１または他の通信装置２０へ送信する。
【００１９】
ＳＷ回路２２は、それぞれのＩ／Ｆ回路２１から送信されたフレームを受信し、受信したフレームのアドレス情報等に基づいて、受信したフレームを送信する回線ポート２１０を特定する。そして、ＳＷ回路２２は、受信したフレームを、特定した回線ポート２１０が設けられているＩ／Ｆ回路２１へ送信し、特定した回線ポート２１０から送信させる。
【００２０】
制御回路３０は、それぞれのＩ／Ｆ回路２１が回線ポート２１０を介してフレームを受信した場合に、受信したフレームの送信元または宛先のユーザに対して予め設定されている保証帯域に基づいて、Ｉ／Ｆ回路２１が受信したフレームの送信を制御する。制御回路３０は、制御線を介して制御端末４０に接続され、制御端末４０を介して通信装置２０の管理者から各種設定情報の入力を受け付ける。
【００２１】
本実施例において、複数のＩ／Ｆ回路２１、ＳＷ回路２２、および制御回路３０は、例えば着脱可能なモジュールやカードとして提供される。なお、複数のＩ／Ｆ回路２１、ＳＷ回路２２、および制御回路３０は、例えば１枚の基板に搭載され、１つのモジュールやカードとして提供されてもよい。
【００２２】
［制御回路３０］
図３は、実施例１における制御回路３０の一例を示すブロック図である。本実施例における制御回路３０は、トークン管理部３１、バースト管理部３２、およびバッファ制御部３３を有する。本実施例において、トークン管理部３１、バースト管理部３２、およびバッファ制御部３３は、例えば、帯域が制御されるユーザ毎に設けられる。
【００２３】
トークン管理部３１は、トークンバケット３１０およびトークン制御部３１１を有する。トークンバケット３１０は、所定の上限値までのトークンを保持することができる。トークンバケット３１０には、対応するユーザに保証する帯域に相当するビットレートで、トークンが補充される。上限値までトークンがトークンバケット３１０に補充された場合、上限値以上のトークンはトークンバケット３１０に補充されない。
【００２４】
本実施例において、トークンバケット３１０の上限値は、例えば、対応するユーザの回線で伝送される最大サイズのフレームの数倍のデータ量に相当する値である。最大サイズのフレームのデータ量は、例えば数千ビットである。また、本実施例において、１トークンは、１ビットに相当する。そのため、ユーザに対して１００Ｍｂｐｓの通信帯域を保証する場合、トークンバケット３１０には、例えば１秒間に１０億個のトークンが補充される。
【００２５】
トークン制御部３１１は、バッファ制御部３３から問い合わせを受けた場合に、トークンバケット３１０を参照し、トークンバケット３１０内のトークンの残量をバッファ制御部３３に返す。また、トークン制御部３１１は、送信対象のフレームのデータ量をバッファ制御部３３から受信した場合に、受信したデータ量に相当するトークンをトークンバケット３１０から削除する。
【００２６】
バースト管理部３２は、タイマ３２０、カウンタ制御部３２１、およびカウンタ３２２を有する。タイマ３２０は、一定周期（例えば１ミリ秒）を繰り返し計測する。カウンタ３２２は、送信されたフレームのデータ量に相当する値をカウント値として保持する。本実施例において、カウンタ３２２は、送信されたフレームの１ビットのデータ量を、例えば１のカウント値として保持する。
【００２７】
カウンタ制御部３２１は、バッファ制御部３３から問い合わせがあった場合に、カウンタ３２２のカウント値を読み出し、読み出したカウント値をバッファ制御部３３に返す。また、カウンタ制御部３２１は、送信対象のフレームのデータ量をバッファ制御部３３から受信した場合に、受信したデータ量に相当するカウント値を、カウンタ３２２のカウント値に加算する。また、カウンタ制御部３２１は、タイマ３２０が一定周期の計測を終了する都度、カウンタ３２２のカウント値を０にリセットする。
【００２８】
Ｉ／Ｆ回路２１は、フレームバッファ２１１を有する。フレームバッファ２１１は、回線ポート２１０を介してフレームを受信した場合に、受信したフレームを保持する。そして、フレームバッファ２１１は、保持したフレームを、受信した順に送信対象のフレームとして、送信対象のフレームのデータ量をバッファ制御部３３に通知する。そして、フレームバッファ２１１は、バッファ制御部３３から送信を指示された場合に、送信対象のフレームを、ＳＷ回路２２へ送信する。
【００２９】
バッファ制御部３３は、トークンバケット３１０内のトークンの残量が送信対象のフレームのデータ量以上であり、かつ、所定期間内に送信されたフレームのデータ量が所定量未満であるか否かに基づいて、送信対象のフレームの送信を制御する。例えば、バッファ制御部３３は、送信対象のフレームのデータ量をフレームバッファ２１１から受信した場合に、トークンの残量をトークン制御部３１１に問い合わせる。
【００３０】
そして、トークン制御部３１１から返されたトークンの残量が、送信対象のフレームのデータ量以上である場合、バッファ制御部３３は、カウンタ３２２のカウント値をカウンタ制御部３２１に問い合わせる。カウンタ制御部３２１から返されたカウント値が所定の上限値未満である場合、バッファ制御部３３は、フレームバッファ２１１に送信対象のフレームの送信を指示する。
【００３１】
そして、バッファ制御部３３は、送信対象のフレームのデータ量をトークン制御部３１１へ送る。これにより、送信されたフレームのデータ量に相当するトークンがトークンバケット３１０から削除される。また、バッファ制御部３３は、送信対象のフレームのデータ量をカウンタ制御部３２１へ送る。これにより、送信されたフレームのデータ量に相当するカウント値がカウンタ３２２のカウント値に加算される。
【００３２】
なお、バッファ制御部３３は、トークンバケット３１０内のトークンが１以上存在し、かつ、カウンタ３２２のカウント値が所定の上限値未満である場合に、送信対象のフレームの送信をフレームバッファ２１１に指示してもよい。トークンバケット３１０内のトークンが、送信対象のフレームのデータ量未満の場合、送信されたフレームのデータ量に相当するトークンがトークンバケット３１０から削除されることで、トークンバケット３１０内のトークン量は一時的にマイナスになる。そして、トークンバケット３１０内のトークン量が１以上となるまで、送信対象のフレームの送信は保留されることになる。
【００３３】
［フレームの送信制御］
図４は、実施例１におけるフレームの送信制御の一例を説明する図である。図４の最上段には、フレームバッファ２１１におけるフレームの受信タイミングの一例が示されている。また、図４の上から２段目には、トークンバケット３１０内に存在するトークン量の時間変化が示されている。また、図４の上から３段目には、カウンタ３２２のカウント値の時間変化が示されている。また、図４の最下段には、フレームバッファ２１１におけるフレームの送信タイミングの一例が示されている。
【００３４】
図４の例において、＃１、＃２、・・・は、それぞれフレームを示しており、数値は受信または送信の順番を示している。また、図４の例では、説明を簡略化するために、それぞれのフレームのデータ量は、上限値以上のカウント値に相当するデータ量であると仮定する。また、＃１のフレームが送信される直前までは、フレームの送信がしばらく行われておらず、トークンバケット３１０内には上限値までのトークンが保持されており、カウンタ３２２のカウント値は０であるものと仮定する。
【００３５】
例えば図４に示すように、フレームの送信がしばらく行われていない時刻ｔ1において、フレームバッファ２１１が、バースト性を持って連続して送信されたフレーム＃１〜＃４を受信する。時刻ｔ1では、トークンバケット３１０内にフレーム＃１のデータ量以上のトークンが残っており、かつ、カウンタ３２２のカウント値が上限値未満である。そのため、バッファ制御部３３は、フレームバッファ２１１に即座に送信を指示する。
【００３６】
フレームバッファ２１１は、例えば図４に示す時刻ｔ1において、送信対象のフレーム＃１をＳＷ回路２２へ送信する。そして、ＳＷ回路２２は、フレーム＃１を送信する回線ポートを特定し、特定した回線ポートを有するＩ／Ｆ回路２１にフレーム＃１を送信させる。これにより、時刻ｔ1において、通信装置２０からフレーム＃１が送信される。
【００３７】
また、フレーム＃１が送信された時刻ｔ1において、バッファ制御部３３は、送信対象のフレーム＃１のデータ量をトークン制御部３１１へ送信する。トークン制御部３１１は、送信対象のフレーム＃１のデータ量に相当するトークンをトークンバケット３１０から削除する。これにより、時刻ｔ1において、トークンバケット３１０内のトークンが、送信対象のフレーム＃１のデータ量分減少する。
【００３８】
また、フレーム＃１が送信された時刻ｔ1において、バッファ制御部３３は、送信対象のフレーム＃１のデータ量をカウンタ制御部３２１へ送信する。カウンタ制御部３２１は、送信対象のフレーム＃１のデータ量に相当するカウント値をカウンタ３２２のカウント値に加算する。これにより、時刻ｔ1において、カウンタ３２２のカウント値が、送信対象のフレーム＃１のデータ量に相当するカウント値分増加する。これにより、図４の例では、カウンタ３２２のカウント値が上限値を超える。
【００３９】
また、図４の例では、フレーム＃１の送信が終了した時点で、フレームバッファ２１１は、既にフレーム＃２を受信して保持している。そして、フレーム＃１の送信が終了した時点では、トークンバケット３１０内にフレーム＃２のデータ量以上のトークンが残っている。しかし、カウンタ３２２のカウント値が上限値以上であるため、バッファ制御部３３は、カウンタ３２２のカウント値が０にリセットされる時刻ｔ2まで、次に受信したフレーム＃２の送信指示を保留する。
【００４０】
タイマ３２０は、一定周期Ｔを計測している。フレーム＃１のデータ量に相当するカウント値が加算されたカウンタ３２２のカウント値は、一定周期Ｔの計測が終了する、例えば図４に示す時刻ｔ2において、カウンタ制御部３２１によって０にリセットされる。カウンタ３２２のカウント値が０にリセットされると、カウンタ３２２のカウント値は、所定の上限値を下回る。これにより、バッファ制御部３３は、カウンタ３２２のカウント値が０にリセットされた時刻ｔ2において、フレーム＃２の送信をフレームバッファ２１１に指示する。これにより、時刻ｔ2において、通信装置２０からフレーム＃２が送信される。
【００４１】
以下、同様に、フレーム＃２が送信された時刻ｔ2において、送信対象のフレーム＃２のデータ量に相当するトークンがトークン制御部３１１によってトークンバケット３１０から削除される。また、フレーム＃２が送信された時刻ｔ2において、送信対象のフレーム＃２のデータ量に相当するカウント値がカウンタ制御部３２１によってカウンタ３２２のカウント値に加算される。これにより、カウンタ３２２のカウント値が０にリセットされる時刻ｔ3まで、次に受信したフレーム＃３の送信が保留される。
【００４２】
このように、バースト性を持って送信されたフレームのデータ量に相当するトークンがトークンバケット３１０内に存在したとしても、タイマ３２０で計測される一定周期内において送信されるデータ量は、カウンタ３２２のカウント値によって制限される。これにより、通信装置２０は、バースト性を持つフレームを受信した場合であっても、それぞれのフレームをより長い期間に分散して送信することができる。これにより、受信側の通信装置２０において、受信バッファのオーバーフローを防止することができる。
【００４３】
ここで、バースト管理部３２を用いることなく、トークン管理部３１によってフレームの送信を制御する場合を比較例として説明する。図５および図６は、比較例におけるフレームの送信制御を説明する図である。図５に示すように、フレームバッファ２１１が、バースト性を有するフレーム＃１〜＃４を連続して受信した場合、フレーム＃１〜＃４のデータ量に相当するトークンがトークンバケット３１０内に存在すれば、フレーム＃１〜＃４は即座に送信される。
【００４４】
これにより、例えば図５に示すように、フレーム＃１〜＃４が、時刻ｔ1'〜ｔ4'において、受信時のバースト性を保ったまま受信側の通信装置２０へ送信されることになる。ここで、受信したフレーム分のトークンがトークンバケット３１０内に存在すれば、通信装置２０は、トークンバケット３１０内のトークン分のフレームを、送信側の回線の帯域で送信してしまう。例えば、通信装置２０の送信側の回線の帯域が１Ｇｂｐｓである場合、長期的にはユーザに対して５００Ｍｂｐｓの帯域制御が行われている場合でも、短期的には、１Ｇｂｐｓでフレームがバースト送信されてしまう。
【００４５】
これにより、受信側の通信装置２０では、受信バッファのオーバーフローが発生し、いくつかのフレームが破棄される。特に、受信バッファが小さい通信装置２０や、フレームの処理性能が低い通信装置２０では、受信バッファのオーバーフローが発生やすい。また、複数の通信装置２０に接続されている通信装置２０では、他の通信装置２０からバースト性を有するデータが集中するため、受信バッファのオーバーフローが頻発することになる。
【００４６】
これに対して、本実施例の通信装置２０は、一定周期内において送信されるフレームのデータ量を制限する。これにより、バースト性を持って送信されたフレームを他の通信装置２０へ転送する場合であっても、それぞれのフレームをより長い期間に分散させて転送することができる。これにより、他の通信装置２０から送信されたデータのバースト性を緩和することができ、受信側の通信装置２０における受信バッファのオーバーフローの発生を抑制することができる。
【００４７】
図６は、トークンバケット３１０の上限値を下げることでフレームのバースト性を緩和する場合の比較例を示している。可変長のフレームを伝送する非同期系のネットワークでは、フレームの送信間隔に揺らぎが生じる。例えば、フレーム＃１〜＃４の送信間隔がばらつき、図６に示すようなタイミングで、フレームバッファ２１１がフレーム＃１〜＃４を受信した場合を考える。
【００４８】
例えば、図６に示すように、フレームバッファ２１１がフレーム＃１を受信した場合、フレーム＃１のデータ量に相当するトークンがトークンバケット３１０内に存在するため、フレームバッファ２１１は、時刻ｔ1"においてフレーム＃１を即座に送信する。そして、時刻ｔ1"においてフレーム＃１のデータ量に相当するトークンがトークンバケット３１０から削除される。そして、トークンバケット３１０内にトークンが補充され、やがて、時刻ｔ12"においてトークンバケット３１０内のトークンは上限値に達する。
【００４９】
そして、時刻ｔ2"においてフレーム＃２を受信した場合、フレーム＃２のデータ量に相当するトークンがトークンバケット３１０内に存在するため、フレームバッファ２１１は、フレーム＃２を即座に送信する。そして、時刻ｔ2"においてフレーム＃２のデータ量に相当するトークンがトークンバケット３１０から削除される。
【００５０】
次に、フレームバッファ２１１が時刻ｔ23"においてフレーム＃３を受信した場合、フレーム＃３のデータ量に相当するトークンがトークンバケット３１０内に存在しない。そのため、フレームバッファ２１１は、フレーム＃３のデータ量に相当するトークンがトークンバケット３１０内に溜まる時刻ｔ3"まで、フレーム＃３の送信を保留する。そして、時刻ｔ3"において、フレームバッファ２１１は、フレーム＃３を送信する。そして、時刻ｔ3"においてフレーム＃３のデータ量に相当するトークンがトークンバケット３１０から削除される。
【００５１】
次に、フレームバッファ２１１が時刻ｔ34"においてフレーム＃４を受信した場合、フレーム＃４のデータ量に相当するトークンがトークンバケット３１０内に存在しない。そのため、フレームバッファ２１１は、フレーム＃４のデータ量に相当するトークンがトークンバケット３１０内に溜まるまで、フレーム＃４の送信を保留する。そして、時刻ｔ4"において、フレームバッファ２１１は、フレーム＃４を送信する。そして、時刻ｔ4"においてフレーム＃４のデータ量に相当するトークンがトークンバケット３１０から削除される。
【００５２】
ここで、トークンバケット３１０内のトークン量が上限に達した時刻ｔ12"から、次のフレーム＃２を受信する時刻ｔ2"までの期間Δｔ1では、トークンの補充は行われず、トークンバケット３１０内のトークン量は上限値で維持される。そして、フレーム＃２の送信により時刻ｔ2"においてフレーム＃２のデータ量に相当するトークンがトークンバケット３１０から削除される。これにより、次に送信すべきフレーム＃３のデータ量に相当するトークンがトークンバケット３１０内に溜まるまで、期間Δｔ1分余計に時間がかかり、フレーム＃３の送信が期間Δｔ2分延期される。
【００５３】
これにより、Δｔ3の期間に受信したフレーム＃１〜＃４が、Δｔ3よりも長いΔｔ4の期間で送信されることになる。これにより、受信したフレームは、通信装置２０によって転送されることにより、データレートが低下することになる。通信経路の中に複数の通信装置２０が介在する場合、データレートの低下はさらに大きくなり、ユーザの保証帯域を維持することができない。このように、トークン管理部３１のみを用いて帯域制御を行う場合、フレームのバースト性を抑えようとすれば、フレームの揺らぎにより通信帯域の維持が困難となり、通信帯域を維持させようとすれば、バースト性を抑えることが困難となる。
【００５４】
これに対して、本実施例の通信装置２０では、トークン管理部３１とバースト管理部３２とを用いることで、ユーザの帯域保証はトークン管理部３１によって実現し、バーストの抑制はバースト管理部３２によって実現することができる。これにより、保証帯域の維持とバーストの抑制とをそれぞれ独立して制御することが可能となり、保証帯域の維持とバーストの抑制とを両立することができる。
【００５５】
なお、本実施例において、タイマ３２０によって計測される一定周期Ｔは、例えば１ミリ秒であり、カウンタ３２２のカウント値の上限値は、一定周期Ｔ内でのバースト性を抑えるために適切な値が設定される。保証帯域に基づいて１秒当たりに伝送可能なデータ量は、トークンバケット３１０によって制御される。そのため、タイマ３２０によって計測される一定周期Ｔと、カウンタ３２２のカウント値の上限値との関係は、例えば以下の関係式（１）を満たすように設定される。
保証帯域（bps）＜上限値（ビット）／一定周期Ｔ（秒）      ・・・（１）
【００５６】
本実施例において、「上限値（ビット）」と「一定周期Ｔ（秒）」とは、上記の関係式（１）の右辺の「上限値（ビット）／一定周期Ｔ（秒）」の値が、左辺の「保証帯域（bps）」の値の例えば１．５〜２倍となるように選択される。「上限値（ビット）」や「一定周期Ｔ（秒）」等の値は、制御装置２０の管理者等により、制御端末４０によって制御線を介して制御回路３０に予め設定される。
【００５７】
［制御回路３０の動作］
図７は、実施例１における送信制御処理の一例を示すフローチャートである。例えば、送信対象のフレームのデータ量をフレームバッファ２１１から受信した場合に、制御回路３０は、本フローチャートに示す送信制御処理を開始する。なお、図７に示す送信制御処理とは別に、カウンタ制御部３２１は、タイマ３２０が一定周期を計測する都度、カウンタ３２２のカウント値を０にリセットしている。
【００５８】
図７に示す送信制御処理は、トークンの残量が送信対象のフレームのデータ量以上であり、かつ、一定周期内に送信されたフレームのデータ量が上限値未満である場合に、送信対象のフレームの送信を指示する処理である。
【００５９】
まず、バッファ制御部３３は、トークンの残量をトークン制御部３１１に問い合わせる。そして、バッファ制御部３３は、トークン制御部３１１から返されたトークンの残量と、送信対象のフレームのデータ量とを比較して、送信対象のフレームのデータ量以上のトークンがトークンバケット３１０内に存在するか否かを判定する（Ｓ１００）。トークンバケット３１０内のトークンが、送信対象のフレームのデータ量未満である場合（Ｓ１００：Ｎｏ）、バッファ制御部３３は、所定時間（例えば数マイクロ秒）待機して、再びステップＳ１００に示した処理を実行する。
【００６０】
一方、送信対象のフレームのデータ量以上のトークンがトークンバケット３１０内に存在する場合（Ｓ１００：Ｙｅｓ）、バッファ制御部３３は、カウンタ３２２のカウント値をカウンタ制御部３２１に問い合わせる。カウンタ制御部３２１は、カウンタ３２２のカウント値を読み出してバッファ制御部３３に返す。バッファ制御部３３は、カウンタ制御部３２１から返されたカウント値と、所定の上限値とを比較して、カウント値が上限値未満か否かを判定する（Ｓ１０１）。カウント値が上限値以上である場合（Ｓ１０１：Ｎｏ）、バッファ制御部３３は、所定時間（例えば数マイクロ秒）待機して、再びステップＳ１０１に示した処理を実行する。
【００６１】
一方、カウント値が上限値未満である場合（Ｓ１０１：Ｙｅｓ）、バッファ制御部３３は、フレームバッファ２１１に送信対象のフレームの送信を指示する（Ｓ１０２）。これにより、送信対象のフレームが送信される。そして、バッファ制御部３３は、送信対象のフレームのデータ量をトークン制御部３１１へ送る。トークン制御部３１１は、送信対象のフレームのデータ量に相当するトークンをトークンバケット３１０から削除する（Ｓ１０３）。
【００６２】
次に、バッファ制御部３３は、送信対象のフレームのデータ量をカウンタ制御部３２１へ送る。カウンタ制御部３２１は、送信対象のフレームのデータ量に相当するカウント値をカウンタ３２２のカウント値に加算する（Ｓ１０４）。そして、制御回路３０は、本フローチャートに示した送信制御処理を終了する。
【００６３】
［実施例１の効果］
上述したように、本実施例の通信装置２０によれば、保証帯域を維持しつつ、フレームのバーストを抑制することができる。
【実施例２】
【００６４】
本実施例における制御回路３０は、タイマ３２０およびカウンタ３２２がそれぞれ複数設けられる点が実施例１の制御回路３０とは異なる。なお、通信システム１０および通信装置２０の概要については、実施例１と同様であるため説明を省略する。
【００６５】
［制御回路３０］
図８は、実施例２における制御回路３０の一例を示すブロック図である。本実施例におけるバースト管理部３２は、タイマ３２０ａ、タイマ３２０ｂ、カウンタ制御部３２１、カウンタ３２２ａ、およびカウンタ３２２ｂを有する。なお、以下で説明する点を除き、図８において図３と同一の符号を付した構成は、図３における構成と同一または同様の機能を有するため説明を省略する。
【００６６】
タイマ３２０ａおよび３２０ｂは、それぞれ、一定周期（例えば１ミリ秒）を繰り返し計測する。ただし、タイマ３２０ａとタイマ３２０ｂとは、一定周期の計測の開始および終了のタイミングが異なる。本実施例において、タイマ３２０ａとタイマ３２０ｂとは、一定周期の計測の開始および終了のタイミングが、半周期（例えば５００マイクロ秒）だけ異なる。
【００６７】
カウンタ３２２ａ、タイマ３２０ａに対応して設けられ、カウンタ３２２ｂは、タイマ３２０ｂに対応して設けられる。カウンタ制御部３２１は、タイマ３２０ａが一定周期の計測を終了する都度、カウンタ３２２ａのカウント値を０にリセットする。また、カウンタ制御部３２１は、タイマ３２０ｂが一定周期の計測を終了する都度、カウンタ３２２ｂのカウント値を０にリセットする。
【００６８】
また、カウンタ制御部３２１は、バッファ制御部３３から問い合わせがあった場合に、カウンタ３２２ａおよび３２２ｂからカウント値をそれぞれ読み出し、読み出したそれぞれのカウント値をバッファ制御部３３に返す。また、カウンタ制御部３２１は、送信したフレームのデータ量をバッファ制御部３３から受信した場合に、受信したデータ量に相当するカウント値を、カウンタ３２２ａおよび３２２ｂのカウント値にそれぞれ加算する。
【００６９】
バッファ制御部３３は、トークンの残量が、送信対象のフレームのデータ量以上である場合に、カウンタ３２２ａおよび３２２ｂのカウント値をカウンタ制御部３２１に問い合わせる。カウンタ制御部３２１から返されたカウンタ３２２ａおよび３２２ｂのカウント値が、いずれも、所定の上限値未満である場合、バッファ制御部３３は、フレームバッファ２１１に送信対象のフレームの送信を指示する。そして、バッファ制御部３３は、送信対象のフレームのデータ量をトークン制御部３１１およびカウンタ制御部３２１へ送る。
【００７０】
［フレームの送信制御］
図９は、実施例２におけるフレームの送信制御の一例を説明する図である。図９の最上段には、フレームバッファ２１１におけるフレームの受信タイミングの一例が示されている。また、図９の上から２段目には、トークンバケット３１０内に存在するトークン量の時間変化が示されている。また、図９の上から３段目には、カウンタ３２２ａのカウント値＃１の時間変化が示されている。また、図９の上から４段目には、カウンタ３２２ｂのカウント値＃２の時間変化が示されている。また、図９の最下段には、フレームバッファ２１１におけるフレームの送信タイミングの一例が示されている。
【００７１】
例えば図９に示すように、フレームの送信がしばらく行われていない時刻ｔ1において、フレームバッファ２１１が、バースト性を持って連続して送信されたフレーム＃１〜＃４を受信する。時刻ｔ1では、トークンバケット３１０内にフレーム＃１のデータ量以上のトークンが残っており、かつ、カウンタ３２２ａおよび３２２ｂのいずれのカウント値も上限値未満である。そのため、バッファ制御部３３は、時刻ｔ1においてフレームバッファ２１１に即座に送信を指示する。これにより、時刻ｔ1において、通信装置２０からフレーム＃１が送信される。
【００７２】
また、フレーム＃１が送信された時刻ｔ1において、トークン制御部３１１は、送信対象のフレーム＃１のデータ量に相当するトークンをトークンバケット３１０から削除する。また、カウンタ制御部３２１は、送信対象のフレーム＃１のデータ量に相当するカウント値をカウンタ３２２ａおよび３２２ｂのカウント値にそれぞれ加算する。
【００７３】
図９の例では、フレーム＃１のデータ量に相当するカウント値がカウンタ３２２ａのカウント値＃１に加算されると、カウンタ３２２ａのカウント値＃１が上限値を超える。同様に、フレーム＃１のデータ量に相当するカウント値がカウンタ３２２ｂのカウント値＃２に加算されると、カウンタ３２２ｂのカウント値＃２も上限値を超える。
【００７４】
カウンタ制御部３２１は、タイマ３２０ａによって一定期間Ｔの計測が終了した時刻ｔ12において、カウンタ３２２ａのカウント値＃１を０にリセットする。また、カウンタ制御部３２１は、タイマ３２０ｂによって一定期間Ｔの計測が終了した時刻ｔ2において、カウンタ３２２ｂのカウント値＃２を０にリセットする。
【００７５】
また、図９の例では、フレーム＃１の送信が終了した時点で、フレームバッファ２１１は、既にフレーム＃２を受信して保持している。そして、フレーム＃１の送信が終了した時点では、トークンバケット３１０内にフレーム＃２のデータ量以上のトークンが残っている。しかし、時刻ｔ12と時刻ｔ2との間の期間では、カウンタ３２２ａのカウント値＃１は０にリセットされているが、カウンタ３２２ｂのカウント値＃２は上限値を超えたままとなっている。そのため、バッファ制御部３３は、カウンタ３２２ｂのカウント値＃２も０にリセットされる時刻ｔ2まで、次に受信したフレーム＃２の送信指示を保留する。
【００７６】
そして、時刻ｔ2において、カウンタ３２２ｂのカウント値＃２が０にリセットされると、バッファ制御部３３は、送信対象のフレーム＃２の送信をフレームバッファ２１１に指示する。これにより、時刻ｔ2において、フレーム＃２が送信される。
【００７７】
ここで、複数のタイマ３２０ａおよび３２０ｂを用いずに、１つのタイマ３２０ａによってフレームの送信を制御する場合を考える。フレーム＃１の送信が終了した時点で、フレームバッファ２１１は既にフレーム＃２を受信して保持している。そのため、図９の時刻ｔ12において、カウンタ３２２ａのカウント値＃１が０にリセットされると、バッファ制御部３３は、時刻ｔ12において、フレーム＃２の送信をフレームバッファ２１１に指示することになる。
【００７８】
時刻ｔ12においてフレーム＃２が送信されると、先に送信されたフレーム＃１との送信間隔が短くなってしまう。そのため、短期間に送信されるデータ量が多くなり、受信側の通信装置２０が受信するデータ量も一時的に多くなり、受信側の通信装置２０において、受信バッファのオーバーフローが発生する可能性が高まる。また、複数の通信装置２０から送信されたフレームを受信する通信装置２０では、受信バッファのオーバーフローが発生する可能性がさらに高まる。
【００７９】
フレーム＃１の送信タイミングである時刻ｔ1が、タイマ３２０ａによる一定周期Ｔの計測の終了タイミングである時刻ｔ12に近いほど、フレーム＃１とフレーム＃２との送信間隔が短くなる。そして、フレームの送信間隔が短くなるほど、短期間に送信されるデータ量が多くなり、受信側の通信装置２０の受信バッファへの負担が多くなる。
【００８０】
これに対し、本実施例の通信装置２０では、一定周期Ｔの計測の開始および終了タイミングをずらした複数のタイマ３２０を用いて、それぞれに対応するカウンタ３２２のリセットを制御する。これにより、フレームの送信タイミングが、１つのタイマ３２０による一定周期Ｔの計測の終了タイミングに近くても、他のタイマ３２０による一定周期Ｔの計測の終了タイミングからは遠くなる。そのため、フレームの送信間隔が短くなるのを防止することができ、受信側の通信装置２０の受信バッファへの負担を軽減することができる。
【００８１】
なお、複数のタイマ３２０を用いる場合、それぞれのタイマ３２０による一定周期Ｔの計測の開始および終了タイミングは、時間的に離れていることが好ましい。例えば、２つのタイマ３２０を用いる場合、それぞれのタイマ３２０は、一定周期Ｔの計測の開始および終了タイミングは、互いに半周期分ずれていることが好ましい。
【００８２】
［制御回路３０の動作］
図１０は、実施例２における送信制御処理の一例を示すフローチャートである。例えば、送信対象のフレームのデータ量をフレームバッファ２１１から受信した場合に、制御回路３０は、本フローチャートに示す送信制御処理を開始する。
【００８３】
なお、図１０の送信制御処理とは別に、カウンタ制御部３２１は、タイマ３２０ａが一定周期を計測する都度、カウンタ３２２ａのカウント値を０にリセットし、タイマ３２０ｂが一定周期を計測する都度、カウンタ３２２ｂのカウント値を０にリセットしている。また、以下で説明する点を除き、図１０において図７と同一の符号を付した処理は、図７における処理と同様の処理であるため説明を省略する。
【００８４】
送信対象のフレームのデータ量以上のトークンがトークンバケット３１０内に存在する場合（Ｓ１００：Ｙｅｓ）、バッファ制御部３３は、カウンタ３２２ａのカウント値＃１をカウンタ制御部３２１に問い合わせる。カウンタ制御部３２１は、カウント値＃１をカウンタ３２２ａから読み出してバッファ制御部３３に返す。バッファ制御部３３は、カウンタ制御部３２１から返されたカウント値＃１と、所定の上限値とを比較して、カウント値＃１が上限値未満か否かを判定する（Ｓ１２０）。カウント値＃１が上限値以上である場合（Ｓ１２０：Ｎｏ）、バッファ制御部３３は、所定時間待機して、再びステップＳ１２０に示した処理を実行する。
【００８５】
一方、カウント値＃１が上限値未満である場合（Ｓ１２０：Ｙｅｓ）、バッファ制御部３３は、カウンタ３２２ｂのカウント値＃２をカウンタ制御部３２１に問い合わせる。カウンタ制御部３２１は、カウント値＃２をカウンタ３２２ｂから読み出してバッファ制御部３３に返す。バッファ制御部３３は、カウンタ制御部３２１から返されたカウント値＃＃２と、所定の上限値とを比較して、カウント値＃２が上限値未満か否かを判定する（Ｓ１２１）。カウント値＃２が上限値以上である場合（Ｓ１２１：Ｎｏ）、バッファ制御部３３は、所定時間待機して、再びステップＳ１２１に示した処理を実行する。
【００８６】
一方、カウント値＃２が上限値未満である場合（Ｓ１２１：Ｙｅｓ）、バッファ制御部３３は、フレームバッファ２１１に送信対象のフレームの送信を指示する（Ｓ１０２）。そして、バッファ制御部３３は、送信対象のフレームのデータ量をトークン制御部３１１へ送る。トークン制御部３１１は、バッファ制御部３３から受け取ったデータ量に相当するトークンをトークンバケット３１０から削除する（Ｓ１０３）。
【００８７】
次に、バッファ制御部３３は、送信対象のフレームのデータ量をカウンタ制御部３２１へ送る。カウンタ制御部３２１は、送信対象のフレームのデータ量に相当するカウント値をカウンタ３２２ａのカウント値＃１およびカウンタ３２２ｂのカウント値＃２にそれぞれ加算する（Ｓ１２２）。そして、制御回路３０は、本フローチャートに示した送信制御処理を終了する。
【００８８】
［実施例２の効果］
上述したように、本実施例の通信装置２０によれば、保証帯域を維持しつつ、フレームのバーストを抑制することができる。また、本実施例の通信装置２０によれば、一定周期の境界付近において発生しうるバーストを抑制することができる。
【実施例３】
【００８９】
本実施例における制御回路３０は、タイマ３２０を有しない点が実施例１の制御回路３０とは異なる。なお、通信システム１０および通信装置２０の概要については、実施例１と同様であるため、説明を省略する。
【００９０】
［制御回路３０］
図１１は、実施例３における制御回路３０の一例を示すブロック図である。本実施例におけるバースト管理部３２は、カウンタ制御部３２１およびカウンタ３２２を有する。なお、以下で説明する点を除き、図１１において図３と同一の符号を付した構成は、図３における構成と同一または同様の機能を有するため説明を省略する。
【００９１】
カウンタ制御部３２１は、送信対象のフレームのデータ量をバッファ制御部３３から受信した場合に、受信したデータ量に相当するカウント値を、カウンタ３２２のカウント値に加算する。本実施例において、カウンタ制御部３２１は、送信対象のフレームのデータ量をバッファ制御部３３から受信した場合に、受信したデータ量に所定の増加率Ａを乗じた値を、カウンタ３２２のカウント値に加算する。
【００９２】
また、カウンタ制御部３２１は、時間の経過に従って、カウンタ３２２のカウント値を０まで減少させる。本実施例において、カウンタ制御部３２１は、単位時間当たり、所定の減少率Ｂで、カウンタ３２２のカウント値を０まで減少させる。本実施例において、所定の減少率Ｂとは、単位時間当たりに、減少させるカウント値である。単位時間とは、例えば、回線において１ビットが送信される時間であり、１Ｇｂｐｓの回線では１ナノ秒である。
【００９３】
例えば、１Ｇｂｐｓの回線において、保証帯域が３００Ｍｂｐｓ、トークンバケット３１０の上限値が８００ｋビット、許容するバースト量を１６０ｋビットとした場合、本実施例において、増加率Ａと減少率Ｂとは、例えば７対３に設定される。また、許容されるバースト量が１６０ｋビットであるため、カウント値の上限値は、１１２００００となる。なお、増加率Ａおよび減少率Ｂは、バースト管理部３２によって制限される帯域が、トークンバケット３１０によって制御される保証帯域を下回らないような値であれば、任意の値に設定可能である。ただし、バースト発生時にはカウント値を大きく増加させ、未送信時にはカウント値の減算（回復）を緩やかに行うため、増加率Ａは減少率Ｂよりも大きな値に設定されることが好ましい。これにより、連続的なバースト転送を抑止させることが可能となる。なお、カウント値の上限値、増加率Ａ、および減少率Ｂ等の値は、制御装置２０の管理者等により、制御端末４０によって制御線を介して制御回路３０に予め設定される。
【００９４】
［フレームの送信制御］
図１２は、実施例３におけるフレームの送信制御の一例を説明する図である。図１２の最上段には、フレームバッファ２１１におけるフレームの受信タイミングの一例が示されている。また、図１２の上から２段目には、トークンバケット３１０内に存在するトークン量の時間変化が示されている。また、図１２の上から３段目には、カウンタ３２２のカウント値の時間変化が示されている。また、図１２の最下段には、フレームバッファ２１１におけるフレームの送信タイミングの一例が示されている。
【００９５】
例えば図１２に示すように、フレームの送信がしばらく行われていない時刻ｔ1において、フレームバッファ２１１が、バースト性を持って連続して送信されたフレーム＃１〜＃４を受信する。時刻ｔ1では、トークンバケット３１０内にフレーム＃１のデータ量以上のトークンが残っており、かつ、カウンタ３２２のカウント値が上限値未満である。そのため、バッファ制御部３３は、フレームバッファ２１１に即座に送信を指示する。これにより、時刻ｔ1において、通信装置２０からフレーム＃１が送信される。
【００９６】
また、フレーム＃１が送信された時刻ｔ1において、トークン制御部３１１は、送信対象のフレーム＃１のデータ量に相当するトークンをトークンバケット３１０から削除する。また、フレーム＃１が送信された時刻ｔ1において、カウンタ制御部３２１は、送信対象のフレーム＃１のデータ量に、増加率Ａを乗じた値をカウンタ３２２のカウント値に加算する。これにより、時刻ｔ1において、カウンタ３２２のカウント値が、送信対象のフレーム＃１のデータ量に相当するカウント値分増加する。
【００９７】
図１２の例では、フレーム＃１のデータ量に増加率Ａを乗じた値がカウンタ３２２のカウント値に加算されると、カウンタ３２２のカウント値が上限値を超える。そのため、カウンタ３２２のカウント値が上限値を下回る時刻ｔ2まで、次に受信したフレーム＃２の送信が保留される。
【００９８】
カウンタ制御部３２１は、単位時間が経過する毎に、カウンタ３２２のカウント値から、所定の減少率Ｂ分のカウント値を減少させる。これにより、例えば図１２に示すように、時刻ｔ2において、カウンタ３２２のカウント値が上限値を下回る。時刻ｔ2の時点では、図１２に示すように、トークンバケット３１０内に送信対象のフレーム＃２のデータ量以上のトークンが残っているため、バッファ制御部３３は、フレームバッファ２１１に送信を指示する。これにより、時刻ｔ2において、送信対象のフレーム＃２が送信される。
【００９９】
以下、同様に、フレーム＃２が送信された時刻ｔ2において、送信対象のフレーム＃２のデータ量に相当するトークンがトークン制御部３１１によってトークンバケット３１０から削除される。また、フレーム＃２が送信された時刻ｔ2において、送信対象のフレーム＃２のデータ量に相当するカウント値がカウンタ制御部３２１によってカウンタ３２２のカウント値に加算される。これにより、カウンタ３２２のカウント値が上限値を下回る時刻ｔ3まで、次に受信したフレーム＃３の送信が保留される。
【０１００】
このように、短期間に連続して受信したフレームのデータ量に相当するトークンがトークンバケット３１０内に存在したとしても、カウンタ３２２のカウント値が上限値を下回るまでは、送信されるデータ量が制限される。これにより、通信装置２０は、バースト性を持つフレームを受信した場合であっても、それぞれのフレームをより長い期間に分散して送信することができる。
【０１０１】
［カウンタ制御処理］
図１３は、実施例３におけるカウンタ制御処理の一例を示すフローチャートである。図１３に示すカウンタ制御処理は、単位時間毎にカウンタ３２２のカウント値を所定の減少率Ｂで減少させる処理である。
【０１０２】
まず、カウンタ制御部３２１は、単位時間が経過したか否かを判定することにより、カウント値の更新タイミングか否かを判定する（Ｓ２００）。カウント値の更新タイミングではない場合（Ｓ２００：Ｎｏ）、カウンタ制御部３２１は、再びステップＳ２００に示した処理を実行する。
【０１０３】
一方、カウント値の更新タイミングである場合（Ｓ２００：Ｙｅｓ）、カウンタ制御部３２１は、カウンタ３２２からカウント値を読み出す（Ｓ２０１）。そして、カウンタ制御部３２１は、読み出したカウント値が０であるか否かを判定する（Ｓ２０２）。読み出したカウント値が０である場合（Ｓ２０２：Ｙｅｓ）、カウンタ制御部３２１は、再びステップＳ２００に示した処理を実行する。
【０１０４】
一方、読み出したカウント値が０でない場合（Ｓ２０２：Ｎｏ）、カウンタ制御部３２１は、読み出したカウント値から所定の減少率Ｂを減算する（Ｓ２０３）。そして、カウンタ制御部３２１は、減算結果が０以上か否かを判定する（Ｓ２０４）。減算結果が０以上である場合（Ｓ２０４：Ｙｅｓ）、カウンタ制御部３２１は、減算結果でカウンタ３２２のカウント値を書き換える（Ｓ２０５）。一方、減算結果が０未満である場合（Ｓ２０４：Ｎｏ）、カウンタ制御部３２１は、０でカウンタ３２２のカウント値を書き換える（Ｓ２０６）。そして、カウンタ制御部３２１は、再びステップＳ２００に示した処理を実行する。
【０１０５】
［制御回路３０の動作］
図１４は、実施例３における送信制御処理の一例を示すフローチャートである。例えば、送信対象のフレームのデータ量をフレームバッファ２１１から受信した場合に、制御回路３０は、本フローチャートに示す送信制御処理を開始する。なお、以下で説明する点を除き、図１４において図７と同一の符号を付した処理は、図７における処理と同様の処理であるため説明を省略する。
【０１０６】
トークン制御部３１１が、バッファ制御部３３から受け取ったデータ量に相当するトークンをトークンバケット３１０から削除した後（Ｓ１０３）、バッファ制御部３３は、送信対象のフレームのデータ量をカウンタ制御部３２１へ送る。カウンタ制御部３２１は、送信対象のフレームのデータ量に、所定の増加率Ａを乗じた値を、カウンタ３２２のカウント値に加算する（Ｓ１３０）。そして、制御回路３０は、本フローチャートに示した送信制御処理を終了する。
【０１０７】
［実施例３の効果］
上述したように、本実施例の通信装置２０によれば、増加率Ａおよび減少率Ｂを調整することにより、カウンタ３２２のカウント値の増加および減少を任意に設定することができるため、より有効で柔軟なバースト制御を提供することが可能となる。
【実施例４】
【０１０８】
本実施例における制御回路３０は、カウンタ３２２のカウント値に応じて、増加率Ａおよび減少率Ｂを変更する点が実施例３の制御回路３０とは異なる。なお、通信システム１０および通信装置２０の概要については、実施例１と同様であるため、説明を省略する。また、制御回路３０の概要についても、以下に説明する点を除き、図１１と同様であるため、説明を省略する。
【０１０９】
［フレームの送信制御］
図１５は、実施例４におけるフレームの送信制御の一例を説明する図である。図１５の最上段には、フレームバッファ２１１におけるフレームの受信タイミングの一例が示されている。また、図１５の上から２段目には、トークンバケット３１０内に存在するトークン量の時間変化が示されている。また、図１５の上から３段目には、カウンタ３２２のカウント値の時間変化が示されている。また、図１５の最下段には、フレームバッファ２１１におけるフレームの送信タイミングの一例が示されている。
【０１１０】
例えば図１５に示すように、フレームの送信がしばらく行われていない時刻ｔ1において、フレームバッファ２１１が、バースト性を持って連続して送信されたフレーム＃１〜＃５を受信する。時刻ｔ1では、トークンバケット３１０内にフレーム＃１のデータ量以上のトークンが残っており、かつ、カウンタ３２２のカウント値が上限値未満である。そのため、バッファ制御部３３は、フレームバッファ２１１に即座に送信を指示する。これにより、時刻ｔ1において、通信装置２０からフレーム＃１が送信される。
【０１１１】
フレーム＃１が送信された時刻ｔ1において、トークン制御部３１１は、送信対象のフレーム＃１のデータ量に相当するトークンをトークンバケット３１０から削除する。また、フレーム＃１が送信された時刻ｔ1において、カウンタ制御部３２１は、送信対象のフレーム＃１のデータ量に、所定の増加率を乗じた値をカウンタ３２２のカウント値に加算する。
【０１１２】
ここで、時刻ｔ1におけるカウンタ３２２のカウント値は、所定の閾値未満の第１の範囲内であるため、カウンタ制御部３２１は、送信対象のフレーム＃２のデータ量に、第１の増加率Ａ1を乗じた値をカウンタ３２２のカウント値に加算する。
【０１１３】
また、フレーム＃１の送信が終了した時刻ｔ2において、フレームバッファ２１１は、既にフレーム＃２を受信して保持している。そして、時刻ｔ2では、トークンバケット３１０内にフレーム＃２のデータ量以上のトークンが残っており、かつ、カウンタ３２２のカウント値が上限値未満である。そのため、バッファ制御部３３は、フレームバッファ２１１に即座に送信を指示する。これにより、時刻ｔ2において、通信装置２０からフレーム＃２が送信される。
【０１１４】
フレーム＃２が送信された時刻ｔ2において、トークン制御部３１１は、送信対象のフレーム＃２のデータ量に相当するトークンをトークンバケット３１０から削除する。また、フレーム＃２が送信された時刻ｔ2において、カウンタ制御部３２１は、送信対象のフレーム＃２のデータ量に、所定の増加率（第１の増加率Ａ1）を乗じた値をカウンタ３２２のカウント値に加算する。
【０１１５】
同様に、フレーム＃２の送信が終了した時刻ｔ3において、フレームバッファ２１１は、既にフレーム＃３を受信して保持している。そして、時刻ｔ3では、トークンバケット３１０内にフレーム＃３のデータ量以上のトークンが残っており、かつ、カウンタ３２２のカウント値が上限値未満である。そのため、バッファ制御部３３は、フレームバッファ２１１に即座に送信を指示する。これにより、時刻ｔ3において、通信装置２０からフレーム＃３が送信される。
【０１１６】
フレーム＃３が送信された時刻ｔ3において、トークン制御部３１１は、送信対象のフレーム＃３のデータ量に相当するトークンをトークンバケット３１０から削除する。また、フレーム＃３が送信された時刻ｔ3において、カウンタ制御部３２１は、送信対象のフレーム＃３のデータ量に、所定の増加率（第１の増加率Ａ1）を乗じた値をカウンタ３２２のカウント値に加算する。
【０１１７】
フレーム＃３の送信が終了した時刻ｔ4において、フレームバッファ２１１は、既にフレーム＃４を受信して保持している。そして、時刻ｔ4では、トークンバケット３１０内にフレーム＃４のデータ量以上のトークンが残っており、かつ、カウンタ３２２のカウント値が上限値未満である。そのため、バッファ制御部３３は、フレームバッファ２１１に即座に送信を指示する。これにより、時刻ｔ4において、通信装置２０からフレーム＃４が送信される。
【０１１８】
フレーム＃４が送信された時刻ｔ4において、トークン制御部３１１は、送信対象のフレーム＃４のデータ量に相当するトークンをトークンバケット３１０から削除する。また、フレーム＃４が送信された時刻ｔ4において、カウンタ制御部３２１は、送信対象のフレーム＃４のデータ量に、所定の増加率を乗じた値をカウンタ３２２のカウント値に加算する。
【０１１９】
ここで、時刻ｔ4におけるカウンタ３２２のカウント値は、所定の閾値以上の第２の範囲内である。そのため、カウンタ制御部３２１は、送信対象のフレーム＃２のデータ量に、第１の増加率Ａ1とは異なる第２の増加率Ａ2を乗じた値をカウンタ３２２のカウント値に加算する。本実施例において、第１の増加率Ａ1は、第２の増加率Ａ2よりも大きい値である。
【０１２０】
フレーム＃４の送信が終了した時刻ｔ45において、フレームバッファ２１１は、既にフレーム＃５を受信して保持している。また、時刻ｔ45では、トークンバケット３１０内にフレーム＃５のデータ量以上のトークンが残っている。しかし、カウンタ３２２のカウント値は上限値以上である。そのため、バッファ制御部３３は、カウンタ３２２のカウント値が上限値未満となる時刻ｔ5まで、フレーム＃５の送信指示を保留する。
【０１２１】
そして、カウンタ３２２のカウント値が上限値未満となった時刻ｔ5において、バッファ制御部３３は、フレームバッファ２１１に送信を指示する。これにより、時刻ｔ5において、通信装置２０からフレーム＃５が送信される。
【０１２２】
フレーム＃５が送信された時刻ｔ5において、トークン制御部３１１は、送信対象のフレーム＃５のデータ量に相当するトークンをトークンバケット３１０から削除する。また、フレーム＃５が送信された時刻ｔ5において、カウンタ制御部３２１は、送信対象のフレーム＃５のデータ量に、所定の増加率（第２の増加率Ａ2）を乗じた値をカウンタ３２２のカウント値に加算する。
【０１２３】
その後、フレームバッファ２１１がフレームを受信しなければ、例えば図１５に示すように、カウンタ制御部３２１は、カウンタ３２２のカウント値を、時刻ｔ6において閾値まで減少させ、時刻ｔ7において０まで減少させる。ただし、カウンタ３２２のカウント値が第１の範囲内にある時刻ｔ1〜ｔ3および時刻ｔ6〜ｔ7の期間では、カウンタ制御部３２１は、単位時間当たり第１の減少率Ｂ1でカウンタ３２２のカウント値を減少させる。また、カウンタ３２２のカウント値が第２の範囲内にある時刻ｔ3〜ｔ6の期間では、カウンタ制御部３２１は、単位時間当たり、第１の減少率Ｂ1とは異なる第２の減少率Ｂ2でカウンタ３２２のカウント値を減少させる。本実施例において、第１の減少率Ｂ1は、第２の減少率Ｂ2よりも大きい値である。
【０１２４】
ここで、具体的な数値の一例を示す。本実施例において、カウンタ３２２の上限値は例えば１１２００００であり、閾値は例えば５６００００である。また、本実施例において、第１の範囲内のカウント値に適用される第１の増加率Ａ1は例えば５であり、第１の減少率Ｂ1は例えば５である。また、本実施例において、第２の範囲内のカウント値に適用される第２の増加率Ａ2は例えば１０であり、第２の減少率Ｂ2は例えば３である。
【０１２５】
このように、短時間に送信されるデータ量が少ない第１の範囲では、バースト抑止カウンタが閾値を超えることが少ないため、カウント値の増減を繰り返すことになり、ある程度のデータのバースト性が許容される状態となる。一方、フレームのバースト性が継続するような場合、カウンタ３２２のカウント値が閾値を超えて第２の範囲へ移行した時点で、新たなカウンタの増減量が選択され、第１の範囲よりも大きくカウント値が増加し、また緩やかに減少する。これにより、カウント値は、第２の範囲内では、第１の範囲内にある場合に比べて、大きな値を保持する期間が長くなる。そのため、フレームのバースト性が継続するような場面では、カウント値が上限に達しやすくなり、フレームのバースト性が緩和されやすくなる。従って、フレームのバースト性をより段階的に抑止する方向で制御することが可能となる。なお、カウント値の上限値、カウント値の閾値、第１の増加率Ａ1、第２の増加率Ａ2、第１の減少率Ｂ1、および第２の減少率Ｂ2等の値は、制御装置２０の管理者等により、制御端末４０によって制御線を介して制御回路３０に予め設定される。
【０１２６】
［カウンタ制御処理］
図１６は、実施例４におけるカウンタ制御処理の一例を示すフローチャートである。なお、以下で説明する点を除き、図１６において図１３と同一の符号を付した処理は、図１３における処理と同様の処理であるため説明を省略する。
【０１２７】
ステップＳ２０２において、カウンタ３２２から読み出したカウント値が０でない場合（Ｓ２０２：Ｎｏ）、カウンタ制御部３２１は、読み出したカウント値が閾値未満か否かを判定する（Ｓ２１０）。カウント値が閾値未満である場合（Ｓ２１０：Ｙｅｓ）、カウンタ制御部３２１は、読み出したカウント値から第１の減少率Ｂ1を減算する（Ｓ２１１）。そして、カウンタ制御部３２１は、ステップＳ２０４に示した処理を実行する。一方、カウント値が閾値以上である場合（Ｓ２１０：Ｎｏ）、カウンタ制御部３２１は、読み出したカウント値から第２の減少率Ｂ2を減算する（Ｓ２１２）。そして、カウンタ制御部３２１は、ステップＳ２０５に示した処理を実行する。
【０１２８】
［制御回路３０の動作］
図１７は、実施例４における送信制御処理の一例を示すフローチャートである。例えば、送信対象のフレームのデータ量をフレームバッファ２１１から受信した場合に、制御回路３０は、本フローチャートに示す送信制御処理を開始する。なお、以下で説明する点を除き、図１７において図７と同一の符号を付した処理は、図７における処理と同様の処理であるため説明を省略する。
【０１２９】
トークン制御部３１１が、バッファ制御部３３から受け取ったデータ量に相当するトークンをトークンバケット３１０から削除した後（Ｓ１０３）、バッファ制御部３３は、送信対象のフレームのデータ量をカウンタ制御部３２１へ送る。カウンタ制御部３２１は、カウンタ３２２からカウント値を読み出し、読み出したカウント値が閾値未満であるか否かを判定する（Ｓ１４０）。
【０１３０】
読み出したカウント値が閾値未満である場合（Ｓ１４０：Ｙｅｓ）、カウンタ制御部３２１は、送信対象のフレームのデータ量に第１の増加率Ａ1を乗じた値を、カウンタ３２２のカウント値に加算する（Ｓ１４１）。そして、制御回路３０は、本フローチャートに示した送信制御処理を終了する。
【０１３１】
一方、読み出したカウント値が閾値以上である場合（Ｓ１４０：Ｎｏ）、カウンタ制御部３２１は、送信対象のフレームのデータ量に第２の増加率Ａ2を乗じた値を、カウンタ３２２のカウント値に加算する（Ｓ１４２）。そして、制御回路３０は、本フローチャートに示した送信制御処理を終了する。
【０１３２】
［実施例４の効果］
上述したように、本実施例の通信装置２０によれば、帯域の保証およびバーストの抑制を、より細かく制御することができる。
【０１３３】
［ハードウェア］
なお、これまで説明した図に示された各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１３４】
さらに、通信装置２０で行われる各種処理機能は、ＣＰＵ（Central  Processing  Unit）（又はＭＰＵ（Micro  Processing  Unit）、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部又は任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行するプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【０１３５】
ところで、上記した各実施例で説明した各種の処理は、予め用意されたプログラムを制御回路３０で実行することで実現できる。そこで、以下では、上記した各実施例と同様の機能を有するプログラムを実行する制御回路３０の一例を説明する。図１８は、制御回路３０のハードウェアの一例を示す図である。
【０１３６】
図１８に示すように、制御回路３０は、通信インターフェイス５０、ＣＰＵ５１、ＲＡＭ（Random  Access  Memory）５２、およびＲＯＭ（Read  Only  Memory）５３を有する。通信インターフェイス５０、ＣＰＵ５１、ＲＡＭ５２、およびＲＯＭ５３は、バス５４を介して互いに接続されている。
【０１３７】
ＲＯＭ５３には、例えば図１８に示すように、第１の管理プログラム５３０、第２の管理プログラム５３１、および制御プログラム５３２を含む伝送処理プログラムが予め記憶される。ＣＰＵ５１は、第１の管理プログラム５３０、第２の管理プログラム５３１、および制御プログラム５３２をＲＯＭ５３から読み出してＲＡＭ５２に展開する。第１の管理プログラム５３０、第２の管理プログラム５３１、および制御プログラム５３２については、図３、図８、または図１１に示した各々の構成要素と同様、適宜統合または分離してもよい。
【０１３８】
ＣＰＵ５１は、例えば図１８に示すように、ＲＯＭ５３から第１の管理プログラム５３０、第２の管理プログラム５３１、および制御プログラム５３２を読み出す。そして、ＣＰＵ５１は、第１の管理プロセス５２０、第２の管理プロセス５２１、および制御プロセス５２２としてＲＡＭ５２に展開する。そして、ＣＰＵ５１は、上記した各実施例において、ＲＡＭ５２上に展開した第１の管理プロセス５２０、第２の管理プロセス５２１、および制御プロセス５２２を実行する。これにより、ＣＰＵ５１は、トークン管理部３１、バースト管理部３２、およびバッファ制御部３３と同様の機能を発揮する。
【０１３９】
また、ＣＰＵ５１は、上記した実施例１において、ＲＡＭ５２上に展開した第１の管理プロセス５２０、第２の管理プロセス５２１、および制御プロセス５２２を実行することにより、例えば図７に示した処理を実行する。また、ＣＰＵ５１は、上記した実施例２において、ＲＡＭ５２上に展開した第１の管理プロセス５２０、第２の管理プロセス５２１、および制御プロセス５２２を実行することにより、例えば図１０に示した処理を実行する。また、ＣＰＵ５１は、上記した実施例３において、ＲＡＭ５２上に展開した第１の管理プロセス５２０、第２の管理プロセス５２１、および制御プロセス５２２を実行することにより、例えば図１３および図１４に示した処理を実行する。ＣＰＵ５１は、上記した実施例４において、ＲＡＭ５２上に展開した第１の管理プロセス５２０、第２の管理プロセス５２１、および制御プロセス５２２を実行することにより、例えば図１６および図１７に示した処理を実行する。
【０１４０】
なお、ＣＰＵ５１によって仮想的に実現される各処理部は、全ての処理部がＣＰＵ５１によって常に実現されていなくてもよく、処理に用いられる処理部のみが仮想的に実現されればよい。また、第１の管理プログラム５３０、第２の管理プログラム５３１、および制御プログラム５３２は、必ずしも最初から全てをＲＯＭ５３内に記憶させておかなくてもよい。例えば、通信装置２０に挿入されるＩＣカードなどの可搬型記録媒体に各プログラムが記憶され、通信装置２０が可搬型記録媒体から各プログラムを取得して実行するようにしてもよい。また、各プログラムを記憶させた他のコンピュータまたはサーバ装置などから、無線通信回線、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介して、通信装置２０が各プログラムを取得して実行するようにしてもよい。
【０１４１】
［その他］
また、上記した実施例１では、トークンバケット３１０内に送信対象のフレームのデータ量以上のトークンが残っており、かつ、カウンタ３２２のカウント値が上限値未満である場合に、送信対象のフレームが送信されるが、開示の技術はこれに限られない。例えば、トークンバケット３１０内に送信対象のフレームのデータ量以上のトークンが残っており、かつ、所定期間以内に他のフレームが送信されていない場合に、送信対象のフレームが送信されるようにしてもよい。
【０１４２】
例えば、カウンタ３２２は、フレームが送信されたことを示す値をカウント値として保持し、カウンタ制御部３２１は、フレームが送信された場合に、フレームが送信されたことを示す値をカウント値に書き込む。そして、タイマ３２０が一定期間を計測する都度、カウンタ制御部３２１は、カウンタ３２２のカウント値をフレームが送信されていないことを示す値に書き換える。
【０１４３】
バッファ制御部３３は、フレームバッファ２１１から送信対象のフレームのデータ量を受信した場合に、トークンバケット３１０内のトークンンをトークン制御部３１１に問い合わせ、カウンタ３２２のカウント値をカウンタ制御部３２１に問い合わせる。そして、送信対象のフレームのデータ量以上のトークンが残っており、かつ、カウント値がフレームが送信されていないことを示す値である場合に、バッファ制御部３３は、フレームバッファ２１１にフレームの送信を指示する。そして、カウンタ制御部３２１は、カウンタ３２２のカウント値を、フレームが送信されたことを示す値に書き換える。
【０１４４】
これにより、フレームが送信された場合に、タイマ３２０によって一定期間の計測が終了するまで、次のフレームの送信が保留される。そのため、フレームが連続して送信されることを防止することができ、バーストの発生を防止することができる。
【０１４５】
なお、実施例１において、カウント値の上限値を、１ビットなど微小なデータ量に相当する値とすることでも、所定期間以内に他のフレームが送信されていない場合に、送信対象のフレームが送信されるように制御することが可能である。
【０１４６】
また、上記した各実施例において、バッファ制御部３３は、フレームを受信したＩ／Ｆ回路２１がＳＷ回路２２へフレームを送信する際に、トークンの残量およびカウント値に応じてフレームの送信を制御するが、開示の技術はこれに限られない。例えば、ＳＷ回路２２が、フレームを送信する回線ポート２１０が設けられたＩ／Ｆ回路２１へフレームを送信する際に、バッファ制御部３３は、トークンの残量およびカウント値に応じてフレームの送信を制御してもよい。また、Ｉ／Ｆ回路２１が、ＳＷ回路２２から受信したフレームをＳＷ回路２２から指示された回線ポート２１０より送信する際に、バッファ制御部３３は、トークンの残量およびカウント値に応じてフレームの送信を制御してもよい。
【０１４７】
また、上記した各実施例において、バッファ制御部３３は、送信対象のフレームのデータ量以上のトークンが残っており、かつ、カウント値が上限値未満の場合に、送信対象のフレームの送信を指示するが、開示の技術はこれに限られない。例えば、バッファ制御部３３は、送信対象のフレームのデータ量以上のトークンが残っており、かつ、現在のカウント値と、送信対象のフレームのデータ量に相当するカウント値との合計が上限値未満の場合に、送信対象のフレームの送信を指示してもよい。これにより、カウント値が上限値未満に制限されるため、バースト送信されるデータ量を一定値未満に制限することができる。
【０１４８】
以上、実施の形態を説明したが、本発明の技術的範囲は上記実施例に記載された範囲には限定されない。上記実施例に多様な変更または改良を加えることが可能であることが当業者には明らかである。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得る。
【符号の説明】
【０１４９】
２０  通信装置
２１  Ｉ／Ｆ回路
２１０  回線ポート
２１１  フレームバッファ
３０  制御回路
３１  トークン管理部
３１０  トークンバケット
３１１  トークン制御部
３２  バースト管理部
３２０  タイマ
３２１  カウンタ制御部
３２２  カウンタ
３３  バッファ制御部
【図１】
2016066835.tif 000003
【図２】
2016066835.tif 000004
【図３】
2016066835.tif 000005
【図４】
2016066835.tif 000006
【図５】
2016066835.tif 000007
【図６】
2016066835.tif 000008
【図７】
2016066835.tif 000009
【図８】
2016066835.tif 000010
【図９】
2016066835.tif 000011
【図１０】
2016066835.tif 000012
【図１１】
2016066835.tif 000013
【図１２】
2016066835.tif 000014
【図１３】
2016066835.tif 000015
【図１４】
2016066835.tif 000016
【図１５】
2016066835.tif 000017
【図１６】
2016066835.tif 000018
【図１７】
2016066835.tif 000019
【図１８】
2016066835.tif 000020