説明

帯域制御方法及び帯域制御装置

【課題】 収容する複数ユーザフローに対して契約帯域を超過したフレームを通信キャリア網へ送信することを抑制し、出力競合が発生する場合でも各ユーザフローの契約帯域分のフレームを送信する。
【解決手段】 ネットワークに接続される通信装置であって、フレームを受信する入力インタフェースと、入力インタフェースで受信したフレームを保持する出力フレームバッファと、入力インタフェースで受信したフレームの読み出し要求通知タイミングをフロー毎に制御する複数の帯域制御部と、複数の帯域制御部から通知される各フローの前記フレーム読み出し要求に基づいて、フレームの読み出しタイミングを決定する出力スケジューラと、出力スケジューラから通知されるタイミングでフレームを出力する出力インタフェースと、を備え、帯域制御部は、フロー毎に保持されるトークン値に基づいて該フローの読み出し要求を出力スケジューラに通知するかしないかを判定し、出力フレームバッファのフレームの蓄積量に基づいて、トークン値の加減算量を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケット網の帯域制御に関する帯域制御の方法に関する。
【背景技術】
【0002】
大容量で安価なイーサネット(商標登録、以下同じ)の普及に伴い、イーサネット専用線サービスが増加している。専用線サービスは高い信頼性が要求される通信サービスであり、専用線サービスを提供するキャリアは、SLA(Service Level Agreement)において規定する帯域を保証する必要がある。
【0003】
近年のイーサネット専用線サービスでは、通信装置が複数ユーザを論理多重することでシステム構築コストを削減している。ユーザサイトへ接続する専用装置(ユーザアクセス装置)が回線内に複数ユーザフローを収容し、さらに中継装置がユーザアクセス装置を複数多重することで、サービスに必要な通信装置の数は減少する。
【0004】
イーサネット専用線サービスを提供する通信キャリアは、通信キャリア網のエッジに位置するユーザアクセス装置が収容する各々のユーザフローに対して契約帯域を通信キャリア網内で割当てる。ユーザサイトから通信キャリア網のエッジに位置するユーザアクセス装置へ流入するトラフィックは,平均帯域が契約帯域以下であっても,瞬間的に契約帯域を超過したトラフィックとなる場合がある。この契約帯域を超過したトラフィックが複数のユーザサイトから通信キャリア網に流入すると、通信キャリア網内の中継装置の回線容量を超過し、通信キャリア網内でフレーム廃棄が発生する可能性がある。通信キャリアは、各ユーザフローに対して契約帯域分の通信帯域を通信キャリア網内で保証するためには、通信キャリア網へ流入する各ユーザフローのトラフィックの帯域を常に契約帯域以下に抑える必要がある。尚、通信キャリアはユーザサイト内(すなわち、ユーザ端末とユーザアクセス装置間の)の帯域の変動は保証しない。
【0005】
通信キャリアは、通信キャリア網内に流入する各ユーザフローのトラフィックの帯域を契約帯域以下に抑えるため、ユーザアクセス装置にシェーパを実装する。ユーザアクセス装置がシェーパを実装することにより通信キャリア網内でのフレーム廃棄確率が小さくなることは、待ち行列理論などで一般的に知られている。
【0006】
フロー毎に帯域を制御するため、トークンバケツアルゴリズムを用いてシェーパを実現することが特許文献1に開示されている。トークンバケツアルゴリズムは、設定された帯域に対応する速度で帯域制御カウンタ(トークン)を加算し、送信するフレーム長分のトークンが蓄積されていればフレームを送信し、フレーム長分のトークンを減算する。特許文献1では、ユーザトラフィックを複数フローに分類し、フロー毎にバケツの深さを持たせ、各フローの帯域を各フローのトークンバケツアルゴリズムにより制御することが開示されている。これにより、各フローのフレームの送信間隔を平滑化し、送信帯域を制御することを目的としている。 ユーザアクセス装置は、複数ユーザフローを収容する場合は出力競合が発生するため、各ユーザフローのフレームを送信する順番を制御(スケジューリング)する必要がある。各トークンバケツアルゴリズムは、自身が帯域を制御するユーザフローのフレームを送信する際、他ユーザフローのフレームが送信中である場合はフレーム送信を待合わせる必要がある。出力競合はユーザアクセス装置内部の問題であり、ユーザアクセス装置は各ユーザフローの送信可能な帯域が契約帯域を下回らないように保証する必要がある。
【0007】
そのため、トークンバケツアルゴリズムにおいて、トークンバケツの深さまでトークンの蓄積を可能とし、他ユーザフローのフレーム送信を待合わせる際もトークンを加算する。他ユーザフローのフレームが送信された後、蓄積したトークンに応じて待合わせたフレームを連続送信する。未来時間で待合わせた帯域を補うことで、出力競合が生じる場合でも契約帯域分のフレーム送信を可能とする。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−147874号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、トークンバケツの深さまで常にトークンを蓄積すると、単一フローのユーザフレームが通信装置に断続的に到着し、他フローとの出力競合がない場合、通信装置は、蓄積されているトークン量分、単一フローのフレームを連続して送信する。したがって、各フローの契約帯域を超過したトラフィックが通信装置から送信されるという問題があった。 本発明は、前述した問題に鑑みてなされたものであり、収容する複数ユーザフローに対して、他フローとの出力競合が発生した場合には、出力競合で待ち合わせた分の各ユーザフローの契約帯域分のフレームを送信可能としつつ、他フローとの出力競合が発生していない場合には、各フローの契約帯域以下でフレームを送出する帯域制御装置及び帯域制御方法を提供することを目的とする。
以上では、トークンバケツアルゴリズムを用いて説明したが、リーキーバケツアルゴリズムを用いた場合も、他フローとの出力競合が生じた場合に待ち合わせた分の各ユーザフローの契約帯域分のフレームを送信可能とするためには、トークンが一定量以下であればフレームを送信可能とし、トークンを一定量よりも減算できるようにすることが必要となるが、常にトークンを一定量よりも減算できるようにすると、他フローとの出力競合が発生していない場合には、減算されたトークンにより各フローの契約帯域以上でフレームを送出することとなる問題がある。
【課題を解決するための手段】
【0010】
本発明の代表的な一例を示せば以下のとおりである。すなわち、
ネットワークに接続される通信装置であって、フレームを受信する入力インタフェースと、前記入力インタフェースで受信したフレームを保持する出力フレームバッファと、前記入力インタフェースで受信したフレームの読み出し要求通知タイミングをフロー毎に制御する複数の帯域制御部と、前記複数の帯域制御部から通知される各フローの前記フレーム読み出し要求に基づいて、前記フレームの読み出しタイミングを決定する出力スケジューラと、前記出力スケジューラから通知されるタイミングで前記フレームを出力する出力インタフェースと、を備え、前記帯域制御部は、フロー毎に保持されるトークン値に基づいて該フローの読み出し要求を出力スケジューラに通知するかしないかを判定し、前記出力フレームバッファのフレームの蓄積量に基づいて、前記トークン値の加減算量を決定することを特徴とする。
【発明の効果】
【0011】
本発明の一実施形態によれば、帯域制御装置は、収容する複数ユーザフローに対して契約帯域を超過したフレームを通信キャリア網へ送信することを抑制し、出力競合が発生する場合でも各ユーザフローの契約帯域分のフレームを送信することができる。
【図面の簡単な説明】
【0012】
【図1】本発明の第1の実施形態のネットワークシステムの例を示す説明図である。
【図2】本発明の帯域制御装置を通過する前後でのフレーム量の変動を示す図である。
【図3】本発明の第1の実施形態の帯域制御装置の構成を示すブロック図である。
【図4】本発明の第1の実施形態の帯域制御装置の通信フレームに付加される装置内ヘッダのフォーマットの一例を示す説明図である。
【図5】本発明の第1の実施形態の通信フレームのフォーマットの一例を示す説明図である。
【図6】本発明の第1の実施形態の出力フレームバッファ制御部の構成を示すブロック図である。
【図7】本発明の第1の実施形態のバッファ管理レジスタ情報を示す説明図である。
【図8】本発明の第1の実施形態のバッファ書込み処理部が実行するバッファ書込み処理を示すフローチャートである。
【図9】本発明の第1の実施形態のバッファ読出し処理部が実行するバッファ読出し処理を示すフローチャートである。
【図10】本発明の第1の実施形態の帯域制御部の構成を示すブロック図である。
【図11】本発明の第1の実施形態の帯域制御部が実行する帯域制御処理を示すフローチャートである。
【図12】本発明の第1の実施形態の帯域制御方法の概要を示す説明図である。
【図13】本発明の第2の実施形態の帯域制御装置の構成を示すブロック図である。
【図14】本発明の第2の実施形態のバッファ管理テーブルを示す説明図である。
【図15】本発明の第2の実施形態の出力フレームバッファ制御部の構成を示すブロック図である。
【図16】本発明の第2の実施形態のバッファ書込み処理部が実行するバッファ書込み処理を示すフローチャートである。
【図17】本発明の第2の実施形態のバッファ読出し処理部が実行するバッファ読出し処理を示すフローチャートである。
【図18】本発明の第2の実施形態の帯域制御部の構成を示すブロック図である。
【図19】本発明の第2の実施形態の帯域制御部が実行する帯域制御処理を示すフローチャートである。
【図20】本発明の第3の実施形態の帯域制御装置の構成を示すブロック図である。
【図21】本発明の第3の実施形態の出力フレームバッファ制御部の構成を示すブロック図である。
【図22】本発明の第3の実施形態のバッファ書込み処理部が実行するバッファ書込み処理を示すフローチャートである。
【図23】本発明の第3の実施形態の帯域制御部の構成を示すブロック図である。
【図24】本発明の第3の実施形態の帯域制御部が実行する帯域制御処理を示すフローチャートである。
【図25】本発明の第3の実施形態の帯域制御方法の概要を示す説明図である。
【図26】本発明の第4の実施形態の帯域制御部の構成を示すブロック図である。
【図27】本発明の第4の実施形態の帯域制御部が実行する帯域制御処理を示すフローチャートである。
【図28】本発明の第4の実施形態の帯域制御方法の概要を示す説明図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施例について、図面を参照して説明する。
【0014】
<実施形態1>
以下、本発明の第1の実施形態について図1から図12を用いて説明する。なお、以下に述べる第1の実施形態は本発明の実施形態の一つであって、本発明を制限するものではない。
【0015】
図1は、本発明の第1の実施形態の通信装置を適用するネットワークシステムの例を示す説明図である。
【0016】
通信キャリア網は、中継装置102-1〜102-n、及び、ユーザアクセス装置(帯域制御装置)101-1〜101-nを備える。中継装置102-1〜102-nは、中継網を構成し、複数のユーザアクセス装置101-1〜101-nを収容する。本発明の第1の実施形態のユーザアクセス装置(帯域制御装置)は、通信キャリア網の端点に設置され、ユーザサイトに設置されたユーザ装置103-1〜nを収容する。ユーザ装置から送信されるフローは、SW、ユーザアクセス装置(帯域制御装置)、中継装置、対向のユーザアクセス装置、を介して対向のユ-ザ装置に送信される。
【0017】
通信キャリアは、ユーザアクセス装置(帯域制御装置)が収容する各々のユーザフローに対して契約帯域を割当てる。ユーザサイトから通信キャリア網へ流入するトラフィックは,平均帯域が契約帯域以下であっても,瞬間的に契約帯域を超過したトラフィックとなる。この様子を図2Aに示した。ユーザ装置103-1から送出される1ユーザフローの送出帯域の時間変化を示す。契約帯域は、図1に示した通信キャリア網内でユーザ装置103-1から送出されるフローに対する契約帯域である。
【0018】
本願では、帯域制御装置は、以下で説明する帯域制御部(シェーパ)を実装し、各ユーザフローの契約帯域に応じてフレームの送信間隔を平滑化する。
【0019】
以下に、本発明の帯域制御装置における通信フレームについて説明する。
【0020】
図5は、本発明の第1の実施形態の通信フレームのフォーマットの一例を示す説明図である。
【0021】
通信フレーム5は、宛先MACアドレス501、送信元MACアドレス502、VLANヘッダ503、イーサタイプ値504、ペイロード505、及び、フレームチェックシーケンス(FCS)506を含む。宛先MACアドレス501及び送信元MACアドレス502には、帯域制御装置101、または端末のMACアドレスが設定される。VLANヘッダ503には、フローの識別子となるVLAN IDが設定される。
以下に、帯域制御装置101の構成について説明する。
【0022】
図3は、本発明の第1の実施形態の帯域制御装置の構成を示すブロック図である。
【0023】
帯域制御装置101は、複数のネットワークインタフェースボード(NIF)(300−1〜300−M)、それぞれのNIF300に接続されたスイッチ部306を備える。
【0024】
各NIF300は、通信ポートとなる入出力回線インタフェース301、スイッチ部306に接続されたSWインタフェース305、論理回路350、及びNIF管理部1311を備える。帯域制御装置101は、これらの入出力回線インタフェース301を介して、他の装置と接続されている。第1の実施形態では、入出力回線インタフェース301は、イーサネット用の回線インタフェースである。
【0025】
論理回路350は、これらの入出力回線インタフェース301に接続された入力ヘッダ処理部302、入力ヘッダ処理部302に接続された入力フレームバッファ制御部303、SWインタフェース305に接続された出力ヘッダ処理部307、出力ヘッダ処理部307に接続された出力フレームバッファ制御部1308、及び、設定レジスタ312を備える。
【0026】
入出力回線インタフェース301は、受信した通信フレーム5に装置内ヘッダ4を付加する。
【0027】
図4は、入出力回線インタフェース301が受信したフレームに付加する装置内ヘッダのフォーマットの一例を示す説明図である。装置内ヘッダ4は、出力ネットワークインタフェースボード識別子(出力NIF ID)401、フローID402、及び、フレーム長403を含む。このうち、出力NIF ID401は、内部ルーティング情報となっており、スイッチ部306は、この内部ルーティング情報に従い、入力フレームを特定のネットワークインタフェースボードの特定のSWインタフェースに転送する。
【0028】
入出力回線インタフェース301が受信した通信フレーム5に装置内ヘッダ4を付加した時点では、出力NIF ID401、フローID402は空欄である。出力NIF ID401、及び、フローID402には、入力ヘッダ処理部302によって値が設定される。
【0029】
入力ヘッダ処理部302は、受信フレームの503に基づいて各入力フレーム(装置内ヘッダ4が付与された通信フレーム5)のフローを識別し、識別されたフローに応じてVLANタグの処理を実行し、装置内ヘッダ4に出力NIF ID401、及び、フローID402を追加する。VLANタグの処理とは、VLANタグの透過、変換、付与及び削除である。
【0030】
入力ヘッダ処理部302は、VLANタグの処理において、宛先MACアドレス501及び送信元MACアドレス502を、入出力回線インタフェース301に設定される値で上書きしてもよいし、フロー毎に登録しておいた値で上書きしてもよい。
【0031】
VLANタグを処理し、装置内ヘッダ4に出力NIF ID401及びフローID402を追加した後、入力ヘッダ処理部302は、入力フレームを入力フレームバッファ制御部303に転送する。
【0032】
入力フレームバッファ制御部303は、入力ヘッダ処理部302から入力フレームを受信すると、入力フレームバッファ304にフレームを格納する。さらに、入力フレームバッファ304に格納されたフレームを読み出し、フレーム間ギャップを調整してSWインタフェース305に送信する。
【0033】
スイッチ部306は、各NIF300のSWインタフェース305から入力フレームを受信した後、受信した入力フレームの転送先である出力NIF ID401を特定する。次に、スイッチ部306は、受信した入力フレームを、出力フレームとして、特定されたNIF300に対応するSWインタフェース305に転送する。
【0034】
SWインタフェース305は、受信した出力フレームを出力ヘッダ処理部307に転送する。第1の実施形態では、入力ヘッダ処理部302が入力フレームから出力フレームへのフォーマット変換を実行したが、代わりに、出力ヘッダ処理部307がフォーマット変換を実行してもよい。なお、入力ヘッダ処理部302においてフォーマット変換(ヘッダ変換)がなされている場合には、出力ヘッダ処理部307は、SWインタフェース305から受信した出力フレームをそのまま出力フレームバッファ制御部1308に転送する。
【0035】
出力フレームバッファ制御部1308は、出力フレームをフロー毎の出力フレームバッファ310に蓄積する。出力フレームバッファ制御部1308は、格納された出力フレームをバッファ管理レジスタ1309に設定されたフロー毎の情報を用いてシェーピングしながら出力フレームバッファ310から読出し、入出力回線インタフェース301に送出する。
【0036】
入出力回線インタフェース301は、出力フレームから装置内ヘッダ4を除去した後、図5に示すフォーマットで出力フレームを他の装置へ転送する。
【0037】
NIF管理部1311は、設定レジスタ312を制御する。設定レジスタ312は、各ブロックのレジスタ値を設定する。
【0038】
図6は、本発明の第1の実施形態の出力フレームバッファ制御部の構成を示すブロック図である。
【0039】
出力フレームバッファ制御部1308は、フロー制御部1604、及び、出力スケジューラ605を備える。
【0040】
また、フロー制御部1604は、バッファ書込み処理部1601、バッファ読出し処理部1602、帯域制御部1603、バッファ管理レジスタ1309、及び、出力フレームバッファ310から構成される。
【0041】
バッファ書込み処理部1601は、出力ヘッダ処理部307からのフレームを受信すると、後述するバッファ書込み処理S1750を実施する。バッファ書込み処理部1601は、フレームを受信すると、フレームの内部ヘッダのフローID402に基づいてフローを識別し、自フロー制御部で処理すべきフレームであった場合、フレームを出力フレームバッファ310に格納し、バッファ管理レジスタ1309を更新する。 帯域制御部1603は、後述する帯域制御処理S1950を実施し、送信要求を出力スケジューラ605に送信する。
【0042】
出力スケジューラ605は、各フロー制御部(1604−1〜N)の帯域制御部1603から送信要求を受信すると、読出すフレームをスケジューリングする。出力スケジューラ605は、送信要求を各フロー制御部(1604−1〜N)のバッファ読出し処理部1602に送信し、バッファ読出し処理部1602から受信したフレームを入出力回線インタフェース301に送出する。
【0043】
バッファ読出し処理部1602は、出力スケジューラ605からフレーム送信要求を受信すると、後述するバッファ読出し処理S1850を実施する。バッファ読出し処理部1602は、出力フレームバッファ310から読出したフレームを出力スケジューラ605に送信し、バッファ管理レジスタ1309を更新し、読出通知、及び、読出フレーム長通知を帯域制御部1603に送信する。
【0044】
図7は、本発明の第1の実施形態のバッファ管理レジスタ情報を示す説明図である。
バッファ管理レジスタ1309は、バッファ管理レジスタ情報30として、バッファサイズ:3001、格納フレーム数:3002、格納バイト数:3003、ライトポインタ3004、及び、リードポインタ3005を備える。ここで、バッファサイズ3001は、運用するバッファサイズを示し、格納フレーム数3002は、バッファに格納されているフレーム数を示し、格納バイト数3003は、バッファに格納されているバイト数を示し、ライトポインタ3004は、バッファのライト開始アドレスを示し、リードポインタ3005は、バッファのリード開始アドレスを示す。
以下に、バッファ書込み処理部1601が実行するバッファ書込み処理(S1750)について説明する。
【0045】
図8は、本発明の第1の実施形態のバッファ書込み処理部が実行するバッファ書込み処理を示すフローチャートである。
【0046】
バッファ書込み処理部1601は、出力ヘッダ処理部307からフレームを受信する(S1700)と、装置内ヘッダ4からフローID402、及び、フレーム長403を取得する(S1701)。
【0047】
次に、バッファ書込み処理部1601は、取得したフローID402が設定レジスタ312から設定されたフローIDと同一であるか否かを判定する(S1702)。
【0048】
S1702において、取得したフローID402が設定されたフローIDと同一である場合、バッファ管理レジスタ1309から、バッファサイズ3001、ライトポインタ3004、格納フレーム数3002、及び、格納バイト数3003を取得する(S1703)。
【0049】
次に、バッファ書込み処理部1601は、取得した格納バイト数3003とフレーム長403を足し合わせた値と、バッファサイズ3001を比較する(S1704)。
【0050】
S1704において、取得した格納バイト数3003とフレーム長403を足し合わせた値がバッファサイズ3003以下である場合、ライトポインタ3004、格納フレーム数3002、及び、格納バイト数3003を更新し、出力フレームバッファ310にフレームを送出し、前記各更新値をバッファ管理レジスタ1309に設定し(S1705)、処理を終了する(S1707)。
【0051】
また、S1702において、取得したフローID402が設定されたフローIDと同一でない場合、処理対象外フローのフレームを示しており、フレームを廃棄し(S1706)、処理を終了する(S1707)。
【0052】
また、S1704において、取得した格納バイト数3003とフレーム長403を足し合わせた値がバッファサイズ3001より大きい場合、バッファがオーバーフローすることを示しており、フレームを廃棄し(S1706)、処理を終了する(S1707)。
【0053】
次に、バッファ読出し処理部1602が実行するバッファ読出し処理(S1850)について説明する。
【0054】
図9は、本発明の第1の実施形態のバッファ読出し処理部が実行するバッファ読出し処理を示すフローチャートである。
【0055】
バッファ読出し処理部1602は、出力スケジューラ605からフレーム送信要求を受信する(S1800)と、バッファ管理レジスタ1309から、リードポインタ3005、格納フレーム数3002、及び、格納バイト数3003を取得する(S1801)。
【0056】
次に、リードポインタ3005、格納フレーム数3002、及び、格納バイト数3003を更新し、出力フレームバッファ310から出力スケジューラ605へフレームを送信し、前記各更新値をバッファ管理レジスタ1309に設定し(S1802)、処理を終了する(S1804)。
【0057】
一方、バッファ読出し処理部1602は、S1802と同時に、帯域制御部1603に読出通知、及び、読出フレーム長通知を送信し(S1803)、処理を終了する(S1804)。
【0058】
図10は、本発明の第1の実施形態の帯域制御部の構成を示すブロック図である。
【0059】
帯域制御部1603は、トークン量保持部701、トークン減算部702、トークン加算部703、トークン加算量保持部704、蓄積トークン量制御部705、最大蓄積トークン量制御部706、フレーム有無判定部707、トークン量判定部708、及びトークン判定量保持部709を備える。
【0060】
トークン量保持部701は、トークンバケツアルゴリズムに用いられるパラメータ(トークンバケツに蓄積されるトークン量)を保持する。トークン量保持部701に蓄積されるトークン量は、送信フレーム長(読出フレーム長)に基づいて減算され、一定時間に一定量が加算される。トークン量保持部701が加算(蓄積)可能なトークン量は、蓄積トークン量制御部705により制御される。
【0061】
トークン減算部702は、出力フレームバッファ310から読み出されたフレーム長に基づいて、トークン量保持部701から、読出フレーム長に対応する量のトークンを減算する。
【0062】
トークン加算部703は、一定タイミングで一定量のトークンを加算する。具体的には、トークン加算部703は、トークン加算信号(例えば、クロック信号)が入力されると、トークン加算量保持部704に保持された量のトークンを加算する。
【0063】
トークン加算量保持部704は、定期的に加算されるトークン量を保持しており、この定期的に加算されるトークン量は、設定レジスタ312により設定される。
【0064】
蓄積トークン量制御部705は、バッファ管理レジスタ1309の格納フレーム数3002に基づいて、トークン量保持部701が加算するトークン量を制御する。本発明の第1の実施形態では、格納フレーム数が1以上の場合は最大蓄積トークン量保持部706に設定された値、格納フレーム数が0の場合はトークン判定量保持部709に設定された値を、蓄積トークン量制御部705がトークン量保持部701を制御する値とする。
【0065】
最大蓄積トークン量保持部706は、トークン量保持部701で加算できる最大のトークン量(バケツの深さ)を保持しており、バケツの深さは、設定レジスタ312により設定される。
【0066】
フレーム有無判定部707は、格納フレーム数3002が0より大きいか否かを判定し、トークン量判定部708に通知する。
【0067】
トークン量判定部708は、フレーム有無判定部707より格納フレーム数3002が0より大きいことを通知された場合、トークン量保持部701に蓄積されるトークン量(トークン量)とトークン判定量保持部709が保持するトークン量(一定量)の大小を判定し、(トークン量)≧(一定量)であれば出力スケジューラ605にフレームの送信要求を出す。
【0068】
トークン判定量保持部709は、トークン量判定部708が出力スケジューラ605へ送信要求を行うか否かの基準となるトークン量(一定量)を保持しており、この一定量は、設定レジスタ312により設定される。
【0069】
以下に、帯域制御部1603が実行する帯域制御処理(S1950)について説明する。
【0070】
図11は、本発明の第1の実施形態の帯域制御部1603が実行する帯域制御処理を示すフローチャートである。
【0071】
トークン加算部703は、一定タイミングでトークン加算信号が入力されると処理を開始する。(S1900)、トークン加算部703は、トークン加算量保持部704が保持する一定トークン量を、トークン量保持部701に加算する(S1901)。この一定タイミングで一定量加算するトークンが各フローの契約帯域に相当する。一定量は、NIF管理部1311が制御する設定レジスタ312から設定される。
【0072】
次に、蓄積トークン量制御部705は、バッファ管理レジスタ1309から格納フレーム数3002を取得し、取得した格納フレーム数3002が0より大きいか否かを判定する(S1902)。
【0073】
S1902において、格納フレーム数3002が0より大きい場合、蓄積トークン量制御部705は、トークン量保持部701が保持するトークン量が、最大蓄積トークン量保持部706が保持するバケツの深さより大きいか否かを判定する(S1903)。
S1903において、トークン量保持部701が保持するトークン量がバケツの深さより大きくない場合、S1907の処理に進む。一方、トークン量がバケツの深さより大きい場合は、蓄積トークン量制御部705は、トークン量保持部701が保持するトークン量をバケツの深さの値に設定し(S1904)、S1907の処理に進む。バケツの深さは、NIF管理部1311から設定されるものである。ここで、S1904において、トークン量をバケツの深さの値に設定することにより、バケツの深さに相当する蓄積フレーム数以上のバースト送信を発生させない。
【0074】
次に、トークン量判定部708は、トークン量保持部701が保持するトークン量が、トークン判定量保持部709が保持する一定量以上であるか否かを判定する(S1907)。
【0075】
S1907において、トークン量保持部701が保持するトークン量が一定量以上である場合、トークン量判定部708は出力スケジューラ605に送信要求を送信し(S1908)、S1910の処理に進む。ここで、一定量以上である場合は、フレームを送信するトークン量(送信権)を保持しているため、トークン量判定部708は、トークン量を監視しているフローのフレーム読み出しが可能であると判断し、出力スケジューラ605に送信要求を送信する。
【0076】
一方、S1902において、格納フレーム数3002が0である場合、蓄積トークン量制御部705は、トークン量保持部701が保持するトークン量が、トークン判定量保持部709が保持する一定量より大きいか否かを判定する(S1905)。
S1905において、トークン量が一定量より大きい場合、蓄積トークン量制御部705は、トークン量保持部701が保持するトークン量を一定量に設定し(S1906)、S1910の処理に進む。第1の実施形態においては、この格納フレーム数3002が0である場合にトークン量を一定量に設定することによって、送信するフレームが無い場合にトークン加算は一定量までとなり、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。
【0077】
また、S1905において、トークン量が一定量以下の場合、S1910の処理に進む。
【0078】
また、S1907において、トークン量が一定量以上でない場合は、S1910の処理に進む。
【0079】
トークン減算部702は、バッファ読出し処理部1602からの読出通知があるか否かを判定する(S1910)。
【0080】
S1910において、読出通知がない場合、処理を終了する(S1912)。一方、読出通知がある場合、トークン減算部702は、バッファ読出し処理部1602からの読出フレーム長分のトークン量を、トークン量保持部701から減算し(S1911)、処理を終了する(S1912)。
【0081】
尚、図10及び図11では、格納フレーム数3002が0であるか否かによって、トークンの加算上限値を変更するとしたが、格納フレーム数がある一定数を超えた場合にトークンの加算上限値を変更することとしてもよい。
【0082】
図12は、図11で説明した本発明の第1の実施形態の帯域制御部1603が実行する帯域制御処理による、トークンバケツのトークン量の変化及びフレームの制御状態を示す説明図である。
【0083】
本発明の帯域制御部では、フロー毎に設定された契約帯域に対応する速度でトークンを加算する。トークンが一定量になるとフレーム送信が可能であり、フレームを送信するとフレーム長分のトークンを減算する(T211)。これにより、フレーム到着タイミングに対して、理想送信タイミングを決定する。図2では、簡単化のため、フレームが固定長である場合を示しており、このため理想送信タイミングは一定となる。理想タイミングとは、他フローの影響を受けずに契約帯域で送信する場合のタイミングである。
【0084】
フレームがフロー制御部に到着すると、バッファ書き込み処理S1750を実行し、バッファ管理レジスタ1309の格納フレーム数を1加算して、フレームを出力フレームバッファ310に格納する。フレームを送信する際(実送信)、バッファ読み出し処理S1850を実行し、バッファ管理レジスタ1309の格納フレーム数を1減算して、フレームを出力フレームバッファ310から読出す。
【0085】
他フローと出力競合が発生した場合、すなわち、図11のS1910で読み出し通知がない場合、該フローのフレーム送信を理想タイミングで実現できず、出力スケジューラからの読出通知を受信するまで該フローのフレームの送信を待合わせる必要がある。そのため、本発明の帯域制御部は、バッファ管理レジスタ1309から取得する格納フレーム数が1以上の場合はバケツの深さまでトークンを加算可能とする。これにより、他ユーザフローのフレーム送信後、他フローのフレーム送信の間に蓄積したトークンに応じて待合わせたフレームを連続送信することができ、契約帯域分のフレームを送信可能とする。
【0086】
この様子を図12を用いて説明する。T212では、トークンは一定量に達しているが出力スケジューラからの読出通知を受領していないため、フレームを読み出すことが出来ない状態である。図11のS1902、1903、1907、S1908、S1908、S1910、S1912の判断となる場合である。S1903において、トークン量よりもバケツの深さが大きいためトークン量をバケツの深さに設定するなどのトークン量の制限は行わない。この場合、T212のタイミングで実送信206は実行されていない。これは、他ユーザフロー送信207で示す通り、他ユーザフローのフレームを読み出しているためである。T212の後、出力スケジューラから読出通知を受領するT213までトークン量がバケツの深さより大きくならない限りトークンを蓄積する(S1903)。T213で出力スケジューラから読出通知を受領すると、一定量のトークンがバケツに保持されているためフレームを読み出す。さらにT214で出力スケジューラから読出通知を受領すると、このタイミングでも一定量のトークンが蓄積されているためフレームを読み出す。これはT212からT213の間もトークンを蓄積していたためである。これにより、T214の実送信206に示すように、T212で待ち合わせた帯域分をT214で読み出すことができる。
【0087】
一方、格納フレーム数が0である場合は、トークン加算は一定量までとする。フレームが断続的に到着した場合、瞬間的に契約帯域を超過したフレームが到着するため、トークン加算を一定量までとすることにより、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。この様子を図12を用いて説明する。T215から、トークンが一定値に達するT216に至るまでは一定量のトークンが加算される。しかしながら、T216においては、格納フレーム数は0であり(S1902からS1905)、T217でフレームを受信し格納フレーム数が1となるまでは、S1905の判定においてトークンが一定量より大きくなるため、S1906にて、トークンが一定値に設定される。従って、T218のタイミングでフレームを受信しても、畜積されたトークン量は一定量より少ないためT219のタイミングまでフレームは送信されず、契約帯域を超過したフレームの送信を抑制することができる。
【0088】
以上により、図1のユーザ装置103-1から送信された図2Aに示すフローは、帯域制御装置による制御によって、図2Bに示す通り、フレームの送信間隔を平滑化され、契約帯域を超過したフレームの送信は抑制される。
従って、第1の実施形態によれば、帯域制御装置は、収容する複数ユーザフローに対して契約帯域を超過したフレームを通信キャリア網へ送信することを抑制し、出力競合が発生する場合でも各ユーザフローの契約帯域分のフレームを送信することができる。
【0089】
<実施形態2>
以下、本発明の第2の実施形態について図13から図19を用いて説明する。
【0090】
第1の実施形態では、帯域制御部1603は、バッファ管理レジスタ1309の格納フレーム数3002が0である場合に、トークンが一定量より大きければトークンを一定量に設定した。第2の実施形態では、帯域制御部603は、フレーム有フラグが1であり、かつ、トークンが一定量以上である場合に、バッファ書込み処理部601からのフレーム初到着通知があればトークンを一定量に設定する。
【0091】
図13は、本発明の第2の実施形態の帯域制御装置の構成を示すブロック図である。
【0092】
第2の実施形態の帯域制御装置3は、図3に示す第1の実施形態の帯域制御装置101と、バッファ管理レジスタ1309を含まず、バッファ管理テーブル309を含む点で、出力フレームバッファ制御部308、及び、NIF管理部311の処理が異なる。
【0093】
出力フレームバッファ制御部308は、出力フレームをフロー毎の出力フレームバッァ310に蓄積する。出力フレームバッファ制御部308は、格納された出力フレームをバッファ管理テーブル309に設定されたフロー毎の情報を用いてシェーピングしながら出力フレームバッファ310から読出し、入出力回線インタフェース301に送出する。
NIF管理部311は、バッファ管理テーブル309及び設定レジスタ312を制御する。
【0094】
図14は、本発明の第2の実施形態のバッファ管理テーブルを示す説明図である。
【0095】
バッファ管理テーブル309は、フローID:1001を検索キーとして、バッファサイズ:1002、格納フレーム数:1003、格納バイト数:1004、ライトポインタ1005、及び、リードポインタ1006を検索する。ここで、バッファサイズ1002は、当該フローの運用するバッファサイズを示し、格納フレーム数1003は、当該フローのバッファに格納されているフレーム数を示し、格納バイト数1004は、当該フローのバッファに格納されているバイト数を示し、ライトポインタ1005は、当該フローのバッファのライト開始アドレスを示し、リードポインタ1006は、当該フローのバッファのリード開始アドレスを示す。
【0096】
図15は、本発明の第2の実施形態の出力フレームバッファ制御部の構成を示すブロック図である。
【0097】
出力フレームバッファ制御部308は、フロー制御部604、及び、出力スケジューラ605を備える。
【0098】
また、フロー制御部604は、バッファ書込み処理部601、バッファ読出し処理部602、帯域制御部603、及び、出力フレームバッファ310から構成される。
【0099】
バッファ書込み処理部601は、出力ヘッダ処理部307からのフレームを受信すると、後述するバッファ書込み処理S750を実施する。バッファ書込み処理部601は、フレームを受信すると、フローを識別し、該当するフレームであった場合、フレームを出力フレームバッファ310に格納し、バッファ管理テーブル309を更新し、フレーム有フラグ、フレーム初到着を帯域制御部603に通知する。
【0100】
帯域制御部603は、後述する帯域制御処理S950を実施し、送信要求を出力スケジューラ605に送信する。
【0101】
出力スケジューラ605は、各フロー制御部(604−1〜N)の帯域制御部603から送信要求を受信すると、読出すフレームをスケジューリングする。出力スケジューラ605は、送信要求を各フロー制御部(604−1〜N)のバッファ読出し処理部602に送信し、バッファ読出し処理部602から受信したフレームを入出力回線インタフェース301に送出する。
【0102】
バッファ読出し処理部602は、出力スケジューラ605からフレーム送信要求を受信すると、後述するバッファ読出し処理S850を実施する。バッファ読出し処理部602は、出力フレームバッファ310から読出したフレームを出力スケジューラ605に送信し、バッファ管理テーブル309を更新し、読出通知、及び、読出フレーム長通知を帯域制御部603に送信し、フレーム有フラグを帯域制御部603に通知する。
【0103】
以下に、バッファ書込み処理部601が実行するバッファ書込み処理(S750)について説明する。
【0104】
図16は、本発明の第2の実施形態のバッファ書込み処理部が実行するバッファ書込み処理を示すフローチャートである。
【0105】
バッファ書込み処理部601は、出力ヘッダ処理部307からフレームを受信する(S700)と、装置内ヘッダ4からフローID402、及び、フレーム長403を取得する(S701)。
【0106】
次に、バッファ書込み処理部601は、取得したフローID402が設定レジスタ312から設定されたフローIDと同一であるか否かを判定する(S702)。
【0107】
S702において、取得したフローID402が設定されたフローIDと同一である場合、取得したフローID402を用いてバッファ管理テーブル309を検索し、バッファサイズ1002、ライトポインタ1005、格納フレーム数1003、及び、格納バイト数1004を取得する(S703)。
【0108】
次に、バッファ書込み処理部601は、取得した格納バイト数1004とフレーム長403を足し合わせた値と、バッファサイズ1002を比較する(S704)。
【0109】
S704において、取得した格納バイト数1004とフレーム長403を足し合わせた値がバッファサイズ1002以下である場合、ライトポインタ1005、格納フレーム数1003、及び、格納バイト数1004を更新し、出力フレームバッファ310にフレームを送出し、前記各更新値をバッファ管理テーブル309に格納し(S705)、処理を終了する(S710)。
【0110】
一方、バッファ書込み処理部601は、S705と同時に、帯域制御部603にフレーム有フラグを1として通知する(S706)。
バッファ書込み処理部601は、バッファ管理テーブル309から取得した格納フレーム数1003が0であるか否かを判定する(S707)。
【0111】
S707において、格納フレーム数1003が0である場合、帯域制御部603にフレーム初到着を通知し(S708)、処理を終了する(S710)。
【0112】
一方、格納フレーム数1003が0でない場合、処理を終了する(S710)。
【0113】
また、S704において、取得した格納バイト数1004とフレーム長403を足し合わせた値がバッファサイズ1002より大きい場合、バッファがオーバーフローすることを示しており、フレームを廃棄し(S709)、処理を終了する(S710)。
【0114】
また、S702において、取得したフローID402が設定されたフローIDと同一でない場合、処理対象外フローのフレームを示しており、フレームを廃棄し(S709)、処理を終了する(S710)。
【0115】
次に、バッファ読出し処理部602が実行するバッファ読出し処理(S850)について説明する。
【0116】
図17は、本発明の第2の実施形態のバッファ読出し処理部が実行するバッファ読出し処理を示すフローチャートである。
【0117】
バッファ読出し処理部602は、出力スケジューラ605からフレーム送信要求を受信する(S800)と、設定レジスタ312から設定されたフローIDを用いてバッファ管理テーブル309を検索し、リードポインタ1006、格納フレーム数1003、及び、格納バイト数1004を取得する(S801)。
【0118】
次に、リードポインタ1006、格納フレーム数1003、及び、格納バイト数1004を更新し、出力フレームバッファ310から出力スケジューラ605へフレームを送信し、前記各更新値をバッファ管理テーブル309に格納し(S802)、処理を終了する(S806)。
【0119】
一方、バッファ読出し処理部602は、S802と同時に、帯域制御部603に読出通知を送信し、読出フレーム長を通知する(S803)。
【0120】
バッファ読出し処理部602は、バッファ管理テーブル309から取得した格納フレーム数1003が1より大きいか否かを判定する(S804)。
【0121】
S804において、格納フレーム数1003が1より大きい場合、処理を終了する(S806)。
【0122】
一方、S804において、格納フレーム数1003が1より大きくない場合、帯域制御部603にフレーム有フラグを0として通知し(S805)、処理を終了する(S806)。
【0123】
図18は、本発明の第2の実施形態の帯域制御部の構成を示すブロック図である。
【0124】
第2の実施形態の帯域制御部603は、図10に示す第1の実施形態の帯域制御部1603と比較し、トークン量保持部1701、蓄積トークン量制御部1705、及び、トークン量判定部1708の処理が異なる。
【0125】
トークン量保持部1701は、トークンバケツアルゴリズムに用いられるパラメータ(トークンバケツに蓄積されるトークン量)を保持する。トークン量保持部1701に蓄積されるトークン量は、送信フレーム長(読出フレーム長)に基づいて減算され、一定時間に一定量が加算される。トークン量保持部1701が加算(蓄積)可能なトークン量は、蓄積トークン量制御部1705により制御される。
【0126】
蓄積トークン量制御部1705は、最大蓄積トークン量保持部706に設定された値を、トークン量保持部1701を制御する値とする。ただし、フレーム有フラグ=‘1’かつフレーム初到着通知がある場合は、トークン判定量保持部709に設定された値を、蓄積トークン量制御部1705がトークン量保持部1701を制御する値に設定する。
トークン量判定部1708は、バッファ書込み処理部601からのフレーム有フラグ=‘1’の場合、トークン量保持部1701に蓄積されるトークン量(トークン量)とトークン判定量保持部709が保持するトークン量(一定量)の大小を判定し、(トークン量)≧(一定量)であれば出力スケジューラ605にフレームの送信要求を出す。 以下に、帯域制御部603が実行する帯域制御処理(S950)について説明する。
【0127】
図19は、本発明の第2の実施形態の帯域制御部が実行する帯域制御処理を示すフローチャートである。
【0128】
トークン加算部703は、一定タイミングでトークン加算信号が入力されると処理を開始し(S900)、トークン加算量保持部704が保持する一定トークン量を、トークン量保持部1701に加算する(S901)。
【0129】
次に、トークン量保持部1701が保持するトークン量が、最大蓄積トークン量保持部706が保持するバケツの深さより大きいか否かを判定する(S902)。S902において、トークン量保持部1701が保持するトークン量がバケツの深さより大きくない場合、S904の処理に進む。一方、トークン量がバケツの深さより大きい場合は、蓄積トークン量制御部1705は、トークン量保持部1701が保持するトークンをバケツの深さの値に設定し(S903)、S904の処理に進む。
【0130】
トークン量判定部1708は、バッファ書込み処理部601からのフレーム有フラグが‘1’であり、かつ、トークン量保持部1701が保持するトークン量が、トークン判定量保持部709が保持する一定量以上であるか否かを判定する(S904)。
【0131】
S904において、フレーム有フラグが‘1’であり、かつ、トークン量保持部1701が保持するトークンが一定量以上である場合、トークン量判定部1708は出力スケジューラ605に送信要求を送信する(S905)。
【0132】
次に、蓄積トークン量制御部1705は、バッファ書込み処理部601からのフレーム初到着通知があるか否かを判定する(S906)。
【0133】
S906において、フレーム初到着通知がない場合、S909の処理に進む。また、フレーム初到着通知がある場合は、蓄積トークン量制御部1705は、トークン量保持部1701が保持するトークン量を一定量に設定し(S907)、S909の処理に進む。第2の実施形態においては、このフレーム初到着通知がある場合にトークンを一定量に設定することによって、送信するフレームが無い場合にトークン加算は一定量までとすることと同じになり、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。
【0134】
一方、S904において、フレーム有フラグが1であり、かつ、トークン量保持部1701が保持するトークンが一定量以上でない場合は、S909の処理に進む。
【0135】
次に、トークン減算部702は、バッファ読出し処理部602からの読出通知があるか否かを判定する(S909)。
【0136】
S909において、読出通知がない場合、処理を終了する(S911)。一方、読出通知がある場合、トークン減算部702は、バッファ読出し処理部602からの読出フレーム長分のトークン量を、トークン量保持部1701から減算し(S910)、処理を終了する(S911)。
【0137】
尚、第2の実施形態の帯域制御処理による、トークンバケツのトークン量の変化及びフレームの制御状態は実施形態1で説明した図12と同様であるが、T216からT217に至るまでのトークン量の変化が異なる。
【0138】
第2の実施形態の帯域制御部603は、バケツの深さまでトークンを加算可能とする。これにより、T210からT215に至るまでのトークン量の変化は実施形態1と同じであり、他ユーザフローのフレーム送信後、他フローのフレーム送信の間に蓄積したトークンに応じて待合わせたフレームを連続送信することができ、契約帯域分のフレームを送信可能とする。
【0139】
ただし、フレーム有フラグ=‘1’であり、かつフレーム初到着通知がある場合は、トークン加算を一定量までとする。トークン加算を一定量までとすることにより、実施形態1と同様に、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。この様子を図12を用いて説明する。
【0140】
T215から、トークンが一定値に達するT216に至るまでは一定トークンが加算される。また、T216からT217に至るまでも、バケツの深さを越えない範囲で、一定トークンが加算される。T217においては、トークン量が一定量以上かつフレーム有フラグ=‘1’であり、かつフレーム初到着通知があるため(S904からS906)、S907にて、トークンが一定値に設定される。従って、実施形態1と同様に、T218のタイミングでフレームを受信しても、畜積されたトークン量は一定量より少ないためT219のタイミングまでフレームは送信されず、契約帯域を超過したフレームの送信を抑制することができる。
【0141】
以上説明したように、第2の実施形態によれば、第1の実施形態の効果と同様に、帯域制御装置は、収容する複数ユーザフローに対して契約帯域を超過したフレームを通信キャリア網へ送信することを抑制し、出力競合が発生する場合でも各ユーザフローの契約帯域分のフレームを送信することができる。
【0142】
<実施形態3>
以下、本発明の第3の実施形態について図20から図25を用いて説明する。
【0143】
第1及び第2の実施形態では、トークンの加算値が一定量になるとフレーム送信が可能であるとした。第3の実施形態では、送信するフレーム長分のトークンが加算されるとフレーム送信が可能であるとする。
【0144】
図20は、本発明の第3の実施形態の帯域制御装置の構成を示すブロック図である。
【0145】
第3の実施形態の帯域制御装置23は、図3に示す第1の実施形態の帯域制御装置101と、出力フレームバッファ制御部2308の処理が異なる。
【0146】
図21は、本発明の第3の実施形態の出力フレームバッファ制御部の構成を示すブロック図である。
【0147】
出力フレームバッファ制御部2308は、フロー制御部2604、及び、出力スケジューラ605を備える。
【0148】
また、フロー制御部2604は、バッファ書込み処理部2601、バッファ読出し処理部2602、帯域制御部2603、バッファ管理レジスタ1309、及び、出力フレームバッファ310から構成される。
【0149】
バッファ書込み処理部2601は、出力ヘッダ処理部307からのフレームを受信すると、後述するバッファ書込み処理S2750を実施する。バッファ書込み処理部2601は、フレームを受信すると、フローを識別し、該当するフレームであった場合、フレームを出力フレームバッファ310に格納し、バッファ管理レジスタ1309を更新する。
【0150】
帯域制御部2603は、後述する帯域制御処理S2950を実施し、送信要求を出力スケジューラ605に送信する。
【0151】
書込フレーム長格納キュー2609は、後述するバッファ書込み処理S2750において、バッファ書込み処理部2601から通知される書込フレーム長の情報を格納する。
【0152】
出力スケジューラ605は、各フロー制御部(2604−1〜N)の帯域制御部2603から送信要求を受信すると、読出すフレームをスケジューリングする。出力スケジューラ605は、送信要求を各フロー制御部(2604−1〜N)のバッファ読出し処理部2602に送信し、バッファ読出し処理部2602から受信したフレームを入出力回線インタフェース301に送出する。
【0153】
バッファ読出し処理部2602は、第1の実施形態のバッファ読出し処理部1602と同様であり、出力スケジューラ605からフレーム送信要求を受信すると、前述のバッファ読出し処理S1850を実施する。バッファ読出し処理部2602は、出力フレームバッファ310から読出したフレームを出力スケジューラ605に送信し、バッファ管理レジスタ1309を更新し、読出通知、及び、読出フレーム長通知を帯域制御部2603に送信する。
【0154】
以下に、バッファ書込み処理部2601が実行するバッファ書込み処理(S2750)について説明する。
【0155】
図22は、本発明の第3の実施形態のバッファ書込み処理部が実行するバッファ書込み処理を示すフローチャートである。
【0156】
バッファ書込み処理部2601は、出力ヘッダ処理部307からフレームを受信する(S2700)と、装置内ヘッダ4からフローID402、及び、フレーム長403を取得する(S2701)。
【0157】
次に、バッファ書込み処理部2601は、取得したフローID402が設定レジスタ312から設定されたフローIDと同一であるか否かを判定する(S2702)。
【0158】
S2702において、取得したフローID402が設定されたフローIDと同一である場合、バッファ管理レジスタ1309から、バッファサイズ3001、ライトポインタ3004、格納フレーム数3002、及び、格納バイト数3003を取得する(S2703)。
【0159】
次に、バッファ書込み処理部2601は、取得した格納バイト数3003とフレーム長403を足し合わせた値と、バッファサイズ3001を比較する(S2704)。
【0160】
S2704において、取得した格納バイト数3003とフレーム長403を足し合わせた値がバッファサイズ3003以下である場合、ライトポインタ3004、格納フレーム数3002、及び、格納バイト数3003を更新し、出力フレームバッファ310にフレームを送出し、前記各更新値をバッファ管理レジスタ1309に設定し(S2705)、処理を終了する(S2710)。
【0161】
一方、バッファ書込み処理部2601は、S2705と同時に、帯域制御部2603に書込フレーム長を通知する(S2706)。
【0162】
バッファ書込み処理部2601は、バッファ管理レジスタ1309から取得した格納フレーム数3002が0であるか否かを判定する(S2707)。
【0163】
S2707において、格納フレーム数3002が0である場合、帯域制御部2603にフレーム初到着を通知し(S2708)、処理を終了する(S2710)。
【0164】
一方、格納フレーム数3002が0でない場合、処理を終了する(S2710)。
【0165】
また、S2702において、取得したフローID402が設定されたフローIDと同一でない場合、処理対象外フローのフレームを示しており、フレームを廃棄し(S2709)、処理を終了する(S2710)。
【0166】
また、S2704において、取得した格納バイト数3003とフレーム長403を足し合わせた値がバッファサイズ3003より大きい場合、バッファがオーバーフローすることを示しており、フレームを廃棄し(S2709)、処理を終了する(S2710)。
【0167】
バッファ読出し処理部2602が実行するバッファ読出し処理は、第1の実施形態のバッファ読出し処理部が実行するバッファ読出し処理(S1850)と同じである。
【0168】
図23は、本発明の第3の実施形態の帯域制御部の構成を示すブロック図である。
【0169】
第3の実施形態の帯域制御部2603は、図10に示す第1の実施形態の帯域制御部1603と比較し、トークン量保持部2701、蓄積トークン量制御部2705、及び、トークン量判定部2708の処理が異なる。また、トークン判定量保持部709を含まず、書込フレーム長格納キュー2609を所持する。
【0170】
トークン量保持部2701は、トークンバケツアルゴリズムに用いられるパラメータ(トークンバケツに蓄積されるトークン量)を保持する。トークン量保持部2701に蓄積されるトークン量は、送信フレーム長(読出フレーム長)に基づいて減算され、一定時間に一定量が加算される。トークン量保持部2701が加算(蓄積)可能なトークン量は、蓄積トークン量制御部2705により制御される。
【0171】
蓄積トークン量制御部2705は、最大蓄積トークン量保持部706に設定された値を、トークン量保持部2701を制御する値とする。ただし、フレーム初到着通知がある場合は、書込フレーム長格納キュー2609から取得したフレーム長の値を、蓄積トークン量制御部2705がトークン量保持部2701を制御する値に設定する。
【0172】
トークン量判定部2708は、フレーム有無判定部707より格納フレーム数3002が0より大きいことを通知された場合、トークン量保持部2701に蓄積されるトークン量(トークン量)と蓄積トークン量制御部2705から通知されるフレーム長の大小を判定し、(トークン量)≧(フレーム長)であれば出力スケジューラ605にフレームの送信要求を出す。
【0173】
書込フレーム長格納キュー2609は、バッファ書込み処理部2601から通知される書込フレーム長の情報を格納する。また、蓄積トークン量制御部2705へ格納したフレーム長の情報を通知する。
【0174】
図24は、本発明の第3の実施形態の帯域制御部が実行する帯域制御処理を示すフローチャートである。
【0175】
トークン加算部703は、一定タイミングでトークン加算信号が入力されると処理を開始し(S2900)、トークン加算量保持部704が保持する一定トークン量を、トークン量保持部2701に加算する(S2901)。
【0176】
次に、トークン量保持部2701が保持するトークン量が、最大蓄積トークン量保持部706が保持するバケツの深さより大きいか否かを判定する(S2902)。
【0177】
S2902において、トークン量保持部2701が保持するトークンがバケツの深さより大きくない場合、S2904の処理に進む。一方、トークンがバケツの深さより大きい場合は、蓄積トークン量制御部2705は、トークン量保持部2701が保持するトークンをバケツの深さの値に設定し(S2903)、S2904の処理に進む。
【0178】
次に、書込フレーム長格納キュー2609は、バッファ書込み処理部2601から書込フレーム長の通知があるか否かを判定する(S2904)。
【0179】
S2904において、書込フレーム長の通知がない場合、S2906の処理に進む。一方、書込フレーム長の通知がある場合、書込フレーム長格納キュー2609は、通知された書込フレーム長を書込フレーム長格納キューへ格納し(S2905)、S2906の処理に進む。
【0180】
次に、蓄積トークン量制御部2705は、バッファ書込み処理部2601からのフレーム初到着通知があるか否か、あるいは、バッファ管理レジスタの格納フレーム数3002が0であり、かつバッファ読出し処理部2602からの読出通知があるか否かを判定する(S2906)。
【0181】
S2906において、バッファ書込み処理部2601からのフレーム初到着通知がない場合、かつ、バッファ管理レジスタの格納フレーム数3002が0であり、かつバッファ読出し処理部2602からの読出通知がない場合、S2911の処理に進む。
【0182】
一方、S2906において、バッファ書込み処理部2601からのフレーム初到着通知がある場合、あるいは、バッファ管理レジスタの格納フレーム数3002が0であり、かつバッファ読出し処理部2602からの読出通知がある場合、蓄積トークン量制御部2705は、書込フレーム長格納キュー2609からフレーム長を取得し、トークン量保持部2701を制御する値(フレーム長)として設定する(S2907)。
【0183】
次に、蓄積トークン量制御部2705は、バッファ書込み処理部2601からのフレーム初到着通知であったか否かを判定する(S2908)。
【0184】
S2908において、フレーム初到着通知ではない場合、S2911の処理に進む。一方、フレーム初到着通知である場合、蓄積トークン量制御部2705は、トークン量保持部2701が保持するトークン量がフレーム長以上であるか否かを判定する(S2909)。
【0185】
S2909において、トークンがフレーム長以上でない場合、S2911の処理に進む。一方、トークンがフレーム長以上である場合、蓄積トークン量制御部2705は、トークン量保持部2701が保持するトークンをフレーム長分に設定し(S2910)、S2911の処理に進む。
【0186】
第3の実施形態においては、バッファ書込み処理部2601からのフレーム初到着通知ある場合、トークンが演算フレーム長以上であれば、トークンを演算フレーム長分に設定する。後述するS2914の処理において、フレームを読み出す際にフレーム長分のトークンを減算するため、蓄積されたトークンを全て使用することと同様になる。これにより、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。
【0187】
次に、蓄積トークン量制御部2705は、バッファ管理レジスタの格納フレーム数3002が0より大きく、かつトークン量保持部2701が保持するトークン量が、蓄積トークン量制御部2705から通知されるフレーム長以上であるか否かを判定する(S2911)。
【0188】
S2911において、バッファ管理レジスタの格納フレーム数3002が0より大きく、かつトークン量保持部2701が保持するトークンがフレーム長以上である場合、蓄積トークン量制御部2705はスケジューラに送信要求を送出し(S2912)、S2913の処理に進む。一方、バッファ管理レジスタの格納フレーム数3002が0より大きく、かつトークンがフレーム長以上でない場合、S2913の処理に進む。
【0189】
次に、トークン減算部702は、バッファ読出し処理部2602からの読出通知があるか否かを判定する(S2913)。
【0190】
S2913において、読出通知がない場合、処理を終了する(S2915)。一方、読出通知がある場合、トークン減算部702は、バッファ読出し処理部2602から通知される読出フレーム長分のトークン量を、トークン量保持部2701から減算し(S2914)、処理を終了する(S2915)。
【0191】
図25は本発明の第3の実施形態の帯域制御部のトークンバケツのトークン量の変化とフレームの制御タイミングを示す説明図である。
【0192】
第3の実施形態の帯域制御部では、フロー毎に設定された契約帯域に対応する速度でトークンを加算する。送信するフレーム長分のトークンが加算されるとフレーム送信が可能であり、フレームを送信するとフレーム長分のトークンを減算する(T2211)。これにより、フレーム到着タイミングに対して、理想送信タイミングを決定する。図25では、簡単化のため、フレームが固定長である場合を示しており、このため理想送信タイミングは一定となる。理想タイミングとは、他フローの影響を受けずに契約帯域で送信する場合のタイミングである。
【0193】
尚、第3の実施形態の帯域制御処理による、トークンバケツのトークン量の変化及びフレームの制御状態は、フレーム長が固定である場合は実施形態1で説明した図12と同様であるが、T2216からT2217に至るまでのトークン量の変化が異なる。
【0194】
第3の実施形態の帯域制御部2603は、バケツの深さまでトークンを加算可能とする。これにより、T2210からT2215に至るまでのトークン量の変化は、実施形態1と同様であり、他ユーザフローのフレーム送信後、他フローのフレーム送信の間に蓄積したトークンに応じて待合わせたフレームを連続送信することができ、契約帯域分のフレームを送信可能とする。
【0195】
ただし、フレーム初到着通知がある場合は、トークン加算をフレーム長分までとする。トークン加算をフレーム長分までとすることにより、初到着したフレームを読み出す際にフレーム長分のトークンを減算するため、蓄積されたトークンを全て使用することと同様になる。これにより、実施形態1と同様に、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。この様子を図25を用いて説明する。
【0196】
T2215から、トークンが送信フレーム長に達するT2216に至るまでは一定トークンが加算される。また、T2216からT2217に至るまでも、バケツの深さを越えない範囲で、一定トークンが加算される。T2217においては、フレーム初到着通知があり、かつトークンがフレーム長分以上あるため(S2908からS2909)、S2910にて、トークンがフレーム長分に設定される。従って、実施形態1と同様に、T2218のタイミングでフレームを受信しても、畜積されたトークン量はフレーム長分より少ないためT2219のタイミングまでフレームは送信されず、契約帯域を超過したフレームの送信を抑制することができる。
【0197】
以上説明したように、第3の実施形態によれば、第1の実施形態の効果と同様に、帯域制御装置は、収容する複数ユーザフローに対して契約帯域を超過したフレームを通信キャリア網へ送信することを抑制し、出力競合が発生する場合でも各ユーザフローの契約帯域分のフレームを送信することができる。
【0198】
<実施形態4>
以下、本発明の第4の実施形態について図26から図28を用いて説明する。
【0199】
第1、第2及び第3の実施形態ではトークンバケツアルゴリズムを用いたが、第4の実施形態では、トークンを減算する方法であるリーキーバケツアルゴリズムを用いる。
【0200】
第4の実施形態の帯域制御装置の構成は実施形態1で説明した図3と同じである。また、第4の実施形態の出力フレームバッファ制御部の構成も実施形態1で説明した図6と同じであるが、帯域制御部の構成は異なる。
【0201】
図26は、本発明の第4の実施形態の帯域制御部の構成を示すブロック図である。
【0202】
帯域制御部4603は、トークン量保持部4701、トークン加算部702、トークン減算部4703、トークン減算量保持部4704、蓄積トークン量制御部4705、フレーム有無判定部4707、トークン量判定部4708、及びトークン判定量保持部4709を備える。
【0203】
トークン量保持部4701は、トークンバケツアルゴリズムに用いられるパラメータ(トークンバケツに蓄積されるトークン量)を保持する。トークン量保持部4701に蓄積されるトークン量は、送信フレーム長(読出フレーム長)に基づいて加算され、一定時間に一定量が減算される。トークン量保持部4701が保持するトークン量は、蓄積トークン量制御部4705により制御される。
【0204】
トークン加算部4702は、出力フレームバッファ310から読み出されたフレーム長に基づいて、トークン量保持部4701から、読出フレーム長に対応する量のトークンを加算する。
【0205】
トークン減算部4703は、一定タイミングで一定量のトークンを加算する。具体的には、トークン減算部4703は、トークン減算信号(例えば、クロック信号)が入力されると、トークン減算量保持部4704に保持された量のトークンを減算する。
【0206】
トークン減算量保持部4704は、定期的に減算されるトークン量を保持しており、設定レジスタ312により設定される。
【0207】
蓄積トークン量制御部4705は、バッファ管理レジスタ1309の格納フレーム数3002に基づいて、トークン量保持部4701が保持するトークン量を制御する。本発明の第4の実施形態では、格納フレーム数が1以上の場合は0(最低値)、格納フレーム数が0の場合はトークン判定量保持部4709に設定された値を、蓄積トークン量制御部705がトークン量保持部4701を制御する値とする。
【0208】
フレーム有無判定部4707は、格納フレーム数3002が0より大きいか否かを判定し、トークン量判定部4708に通知する。
【0209】
トークン量判定部4708は、フレーム有無判定部4707より格納フレーム数3002が0より大きいことを通知された場合、トークン量保持部4701が保持するトークン量(トークン量)とトークン判定量保持部4709が保持するトークン量(一定量)の大小を判定し、(トークン量)≦(一定量)であれば出力スケジューラ605にフレームの送信要求を出す。
【0210】
トークン判定量保持部4709は、トークン量判定部708が出力スケジューラ605へ送信要求を行うか否かの基準となるトークン量(一定量)を保持しており、設定レジスタ312により設定される。
【0211】
以下に、帯域制御部4603が実行する帯域制御処理(S4950)について説明する。
【0212】
図27は、本発明の第4の実施形態の帯域制御部が実行する帯域制御処理を示すフローチャートである。
【0213】
トークン減算部4703は、一定タイミングでトークン減算信号が入力されると処理を開始し(S4900)、トークン減算量保持部4704が保持する一定トークン量を、トークン量保持部4701から減算する(S4901)。この一定タイミングで一定量減算するトークンが各フローの契約帯域に相当する。一定量は、NIF管理部1311が制御する設定レジスタ312から設定される。
【0214】
次に、蓄積トークン量制御部4705は、バッファ管理レジスタ1309から格納フレーム数3002を取得し、取得した格納フレーム数3002が0より大きいか否かを判定する(S4902)。
【0215】
S4902において、格納フレーム数3002が0より大きい場合、蓄積トークン量制御部4705は、トークン量保持部4701が保持するトークン量が0より小さいか否かを判定する(S4903)。
S4903において、0より小さくない場合、S4907の処理に進む。一方、トークン量が0より小さい場合は、蓄積トークン量制御部4705は、トークン量保持部4701が保持するトークン量を0に設定し(S4904)、S4907の処理に進む。
【0216】
次に、トークン量判定部4708は、トークン量保持部4701が保持するトークン量が、トークン判定量保持部709が保持する一定量以下であるか否かを判定する(S4907)。
【0217】
S4907において、トークン量保持部4701が保持するトークン量が一定量以下である場合、トークン量判定部4708は出力スケジューラ605に送信要求を送信し(S4908)、S4910の処理に進む。ここで、一定量以下である場合、トークン量判定部4708がトークン量を監視しているフローのフレーム読み出しが可能であると判断することにより、一定量から0まで減算されるトークン量に応じたフレームの連続送信が可能となる。
【0218】
一方、S4902において、格納フレーム数3002が0である場合、蓄積トークン量制御部4705は、トークン量保持部4701が保持するトークン量が、トークン判定量保持部4709が保持する一定量より小さいか否かを判定する(S4905)。
S4905において、トークン量が一定量より小さい場合、蓄積トークン量制御部4705は、トークン量保持部4701が保持するトークン量を一定量に設定し(S4906)、S4910の処理に進む。第4の実施形態においては、この格納フレーム数3002が0である場合にトークン量の減算を一定量までと設定することによって、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。また、S4905において、トークン量が一定量以上の場合、S4910の処理に進む。
【0219】
また、S4907において、トークン量が一定量以下でない場合は、S4910の処理に進む。
【0220】
トークン加算部4702は、バッファ読出し処理部1602からの読出通知があるか否かを判定する(S4910)。
【0221】
S4910において、読出通知がない場合、処理を終了する(S4912)。一方、読出通知がある場合、トークン加算部4702は、バッファ読出し処理部1602からの読出フレーム長分のトークン量を、トークン量保持部4701に加算し(S4911)、処理を終了する(S4912)。
【0222】
尚、図26及び図27では、格納フレーム数3002が0であるか否かによって、トークンの減算下限値を変更するとしたが、格納フレーム数がある一定数を超えた場合にトークンの減算下限値を変更することとしてもよい。
図28は、図27で説明した本発明の第4の実施形態の帯域制御部4603が実行する帯域制御処理による、トークンバケツのトークン量の変化及びフレームの制御状態を示す説明図である。
本発明の帯域制御部では、フロー毎に設定された契約帯域に対応する速度でトークンを減算する。トークンが一定量になるとフレーム送信が可能であり、フレームを送信するとフレーム長分のトークンを加算する(T4211)。これにより、フレーム到着タイミングに対して、理想送信タイミングを決定する。図28では、簡単化のため、フレームが固定長である場合を示しており、このため理想送信タイミングは一定となる。理想タイミングとは、他フローの影響を受けずに契約帯域で送信する場合のタイミングである。
フレームがフロー制御部に到着すると、バッファ書き込み処理S1750を実行し、バッファ管理レジスタ1309の格納フレーム数を1加算して、フレームを出力フレームバッファ310に格納する。フレームを送信する際(実送信)、バッファ読み出し処理S1850を実行し、バッファ管理レジスタ1309の格納フレーム数を1減算して、フレームを出力フレームバッファ310から読出す。
他フローと出力競合が発生した場合、すなわち、図27のS4910で読み出し通知がない場合、該フローのフレーム送信を理想タイミングで実現できず、出力スケジューラからの読出通知を受信するまで該フローのフレームの送信を待合わせる必要がある。そのため、本発明の帯域制御部は、バッファ管理レジスタ1309から取得する格納フレーム数が1以上の場合は、一定量を下回り0までトークンを減算可能とする。これにより、他ユーザフローのフレーム送信後、他フローのフレーム送信の間に減算したトークンに応じて待合わせたフレームを連続送信することができ、契約帯域分のフレームを送信可能とする。
この様子を図28を用いて説明する。T4212では、トークンは一定量まで減算されているが出力スケジューラからの読出通知を受領していないため、フレームを読み出すことが出来ない状態である。図27のS4902、4903、4907、S4908、S4910、S4912の判断となる場合である。S4903において、0よりもトークン量が大きいためトークン量を0に設定するなどのトークン量の設定は行わない。この場合、T4212のタイミングで実送信4206は実行されていない。これは、他ユーザフロー送信4207で示す通り、他ユーザフローのフレームを読み出しているためである。T4212の後、出力スケジューラから読出通知を受領するT4213までトークン量が0より小さくならない限りトークンを減算する(S4903)。T4213で出力スケジューラから読出通知を受領すると、一定量以下のトークンがバケツに保持されているためフレームを読み出す。さらにT4214で出力スケジューラから読出通知を受領すると、このタイミングでもトークンは一定量以下であるためフレームを読み出す。これはT4212からT4213の間もトークンを減算していたためである。これにより、T4214の実送信4206に示すように、T4212で待ち合わせた帯域分をT4214で読み出すことができる。
一方、格納フレーム数が0である場合は、トークン減算は一定量までとする。フレームが断続的に到着した場合、瞬間的に契約帯域を超過したフレームが到着するため、トークン減算を一定量までとすることにより、フレームが断続的に到着した場合でも、フレームの送信間隔を平滑化し、契約帯域を超過したフレームの送信を抑制する。
この様子を図28を用いて説明する。T4215から、トークンが一定値に達するT4216に至るまでは一定量のトークンが減算される。しかしながら、T4216においては、格納フレーム数は0であり(S4902からS4905)、T4217でフレームを受信し格納フレーム数が1となるまでは、S4905の判定においてトークンが一定量より小さくなるため、S4906にて、トークンが一定値に設定される。従って、T4218のタイミングでフレームを受信しても、畜積されたトークン量は一定量より大きいためT4219のタイミングまでフレームは送信されず、契約帯域を超過したフレームの送信を抑制することができる。
【0223】
従って、第4の実施形態によれば、帯域制御装置は、収容する複数ユーザフローに対して契約帯域を超過したフレームを通信キャリア網へ送信することを抑制し、出力競合が発生する場合でも各ユーザフローの契約帯域分のフレームを送信することができる。
【0224】
また、第4の実施形態では、第1の実施形態のトークンバケツアルゴリズムを用いた場合に対するトークンの減算モデルを示したが、第2の実施形態のトークンバケツアルゴリズムを用いた場合に対するトークンの減算モデルとして、フレーム有フラグが1であり、かつ、トークンが一定量より小さい場合に、バッファ書込み処理部601からのフレーム初到着通知があればトークンを一定量に設定するとしてもよい。また、第3の実施形態のトークンバケツアルゴリズムを用いた場合に対するトークンの減算モデルとして、バケツの最大値から送信するフレーム長分のトークンが減算されるとフレーム送信が可能であるとし、トークンがバケツの最大値からフレーム長分以上に減算されている場合に、バッファ書込み処理部2601からのフレーム初到着通知がある場合は、トークンをバケツの最大値からフレーム長分減算された値に設定するとしてもよい。
【符号の説明】
【0225】
3 帯域制御装置
4 装置内ヘッダ
5 通信フレーム
23 帯域制御装置
101 帯域制御装置
300 ネットワークインタフェースボード
301 入出力回線インタフェース
302 入力ヘッダ処理部
303 入力フレームバッファ制御部
304 入力フレームバッファ
305 SWインタフェース
306 スイッチ部
307 出力ヘッダ処理部
308 出力フレームバッファ制御部
309 バッファ管理テーブル
310 出力フレームバッファ
311 NIF管理部
312 設定レジスタ
350 論理回路
401 出力ネットワークインタフェースボード識別子
402 フローID
403 フレーム長
501 宛先MACアドレス
502 送信元MACアドレス
503 VLANヘッダ
504 イーサタイプ値
505 ペイロード
506 フレームチェックシーケンス
601 バッファ書込み処理部
602 バッファ読出し処理部
603 帯域制御部
604 フロー制御部
605 出力スケジューラ
701 トークン量保持部
702 トークン減算部
703 トークン加算部
704 トークン加算量保持部
705 蓄積トークン量制御部
706 最大蓄積トークン量保持部
707 フレーム有無判定部
708 トークン量判定部
709 トークン判定量保持部1001 フローID
1002 バッファサイズ
1003 格納フレーム数
1004 格納バイト数
1005 ライトポインタ
1006 リードポインタ
1308 出力フレームバッファ制御部
1309 バッファ管理レジスタ
1311 NIF管理部
1601 バッファ書込み処理部
1602 バッファ読出し処理部
1603 帯域制御部
1604 フロー制御部
1701 トークン量保持部
1705 蓄積トークン量制御部
1708 トークン量判定部2308 出力フレームバッファ制御部
2601 バッファ書込み処理部
2602 バッファ読出し処理部
2603 帯域制御部
2604 フロー制御部
2609 書込フレーム長格納キュー
2701 トークン量保持部
2705 蓄積トークン量制御部
2708 トークン量判定部
3001 バッファサイズ
3002 格納フレーム数
3003 格納バイト数
3004 ライトポインタ
3005 リードポインタ
4603 帯域制御部
4701 トークン量保持部
4702 トークン加算部
4703 トークン減算部
4704 トークン減算量保持部
4705 蓄積トークン量制御部
4707 フレーム有無判定部
4708 トークン量判定部
4709 トークン判定量保持部

【特許請求の範囲】
【請求項1】
ネットワークに接続される通信装置であって、
フレームを受信する入力インタフェースと、
前記入力インタフェースで受信したフレームを保持する出力フレームバッファと、
前記入力インタフェースで受信したフレームの読み出し要求通知タイミングをフロー毎に制御する複数の帯域制御部と、
前記複数の帯域制御部から通知される各フローの前記フレーム読み出し要求に基づいて、前記フレームの読み出しタイミングを決定する出力スケジューラと、
前記出力スケジューラから通知されるタイミングで前記フレームを出力する出力インタフェースと、を備え、
前記帯域制御部は、
フロー毎に保持されるトークン値に基づいて該フローの読み出し要求を出力スケジューラに通知するかしないかを判定し、前記出力フレームバッファのフレームの蓄積量に基づいて、前記トークン値の加減算量を決定することを特徴とする通信装置。
【請求項2】
前記帯域制御部は、
前記フロー毎のトークン量を保持するトークン量保持部と、
前記フロー毎に周期的に一定量のトークンを前記トークン量保持部に加算するトークン加算部と、
前記トークン量保持部で保持されるトークン量に基づいて該フローの読み出し要求を出力スケジューラに通知するかしないかを判定するトークン量判定部と、
前記出力インタフェースから前記出力フレームバッファに保持されたフレームが読み出されると、前記トークン量保持部のトークンを減算するトークン減算部と、
前記出力フレームバッファのフレームの蓄積量に基づいて、前記トークン値の加算量を決定する蓄積トークン量制御部と、を備えることを特徴とする通信装置。
【請求項3】
請求項2に記載の通信装置であって、
前記トークン量判定部は、
前記フロー毎に設定される規定の値以上トークン量保持部にトークンが蓄積されている場合に、前記出力スケジューラに読み出し要求を通知することを特徴とする通信装置。
【請求項4】
請求項2に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されているか否かによって、前記トークン量保持部に加算するトークン値の加算上限値を変更することを特徴とする通信装置。
【請求項5】
請求項2に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていない場合に前記一定量以上トークンを加算しないことを特徴とする通信装置。
【請求項6】
請求項2記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていないときのトークン量の加算上限値を、前記出力フレームバッファにフレームが格納されているときのトークン量の加算上限値より小さい値に設定することを特徴とする通信装置。
【請求項7】
請求項2に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていないときに新たに出力フレームバッファにフレームを格納した場合に、前記トークンバケツのトークン値を、請求項3に記載の規定の値のトークン値に設定することを特徴とする通信装置。
【請求項8】
請求項2に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていないときに新たに出力フレームバッファにフレームを格納した場合に、前記新たに格納されたフレームのフレーム長に応じたトークンよりも多く前記トークンバケツで保持されるトークン値を減算することを特徴とする通信装置。
【請求項9】
請求項2に記載の通信装置であって、
前記トークン加算部は、
フローの契約帯域に応じて周期的に一定量のトークンを加算することを特徴とする通信装置。
【請求項10】
請求項1に記載の通信装置であって、
前記フロー毎のトークン量を保持するトークン量保持部と、
前記フロー毎に周期的に一定量のトークンを前記トークン量保持部に加算するトークン加算部と、
次に読み出し要求を通知すべきフレームのフレーム長に応じたトークン値分以上トークンバケツにトークンを保持している場合に該フローの読み出し要求を出力スケジューラに通知するトークン量判定部と、
前記出力インタフェースから前記出力フレームバッファに保持されたフレームが読み出されると、前記トークン量保持部のトークンを減算するトークン減算部と、
前記出力フレームバッファのフレームの蓄積量に基づいて、前記トークン値の加算量を決定する蓄積トークン量制御部と、を備えることを特徴とする通信装置。
【請求項11】
請求項8に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていないときに新たに出力フレームバッファにフレームを格納した場合に、前記トークンバケツのトークン値を、前記新たに格納されたフレームのフレーム長に応じたトークン値に設定することを特徴とする通信装置。
【請求項12】
請求項8に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていないときに新たに出力フレームバッファにフレームを格納した場合に、前記新たに格納されたフレームのフレーム長に応じたトークンよりも多く前記トークンバケツで保持されるトークン値を減算することを特徴とする通信装置。
【請求項13】
請求項1の通信装置であって、
前記帯域制御部は、
前記フロー毎のトークン量を保持するトークン量保持部と、
前記フロー毎に周期的に一定量のトークンを前記トークン量保持部から減算するトークン減算部と、
前記トークン量保持部で保持されるトークン量に基づいて該フローの読み出し要求を出力スケジューラに通知するかしないかを判定するトークン量判定部と、
前記出力インタフェースから前記出力フレームバッファに保持されたフレームが読み出されると、前記トークン量保持部のトークンを加算するトークン加算部と、
前記出力フレームバッファのフレームの蓄積量に基づいて、前記トークン値の減算量を決定する蓄積トークン量制御部と、を備えることを特徴とする通信装置。
【請求項14】
請求項11に記載の通信装置であって、
前記トークン量判定部は、
前記フロー毎に設定される規定の値以下トークン量保持部にトークンが蓄積されている場合に、前記出力スケジューラに読み出し要求を通知することを特徴とする通信装置。
【請求項15】
請求項11に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されているか否かによって、前記トークン量保持部から減算するトークン値の減算下限値を変更することを特徴とする通信装置。
【請求項16】
請求項11に記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていない場合に前記一定量よりトークンを減算しないことを特徴とする通信装置。
【請求項17】
請求項11記載の通信装置であって、
前記蓄積トークン量制御部は、
前記出力フレームバッファにフレームが格納されていないときのトークン量の減算下限値を、前記出力フレームバッファにフレームが格納されているときのトークン量の減算下限値より大きい値に設定することを特徴とする通信装置。
【請求項18】
受信したフレームの送出タイミングを通信装置において制御する帯域制御方法であって、
受信する複数のフローをフロー毎に出力フレームバッファに格納するステップと、
前記フロー毎に保持されるトークン値に基づいて該フローの読み出し要求を出力スケジューラに通知するかしないかを判定するステップと、
前記出力フレームバッファのフレームの蓄積量に基づいて、前記トークン値の加減算量を決定するステップと、を含む帯域制御方法。
【請求項19】
前記フロー毎のトークン量をトークン量保持部で保持するステップと、
前記フロー毎に周期的に一定のトークンを前記トークン量保持部に加算するステップと、
前記トークン保持部で保持されるトークン量に基づいて該フローの読み出し要求を出力スケジューラに通知するステップと、
前記フローが読み出されると前記トークン量保持部のトークンを減算するステップと、
前記出力フレームバッファのフレームの蓄積量に基づいて、前記トークン値の加減算量を決定するステップと、を有する請求項16に記載の帯域制御方法。
【請求項20】
前記出力フレームバッファにフレームが格納されているか否かによって、前記トークン量保持部に加算するトークン値の加算上限値を変更するステップを有する請求項17に記載の帯域制御方法。
【請求項21】
前記出力フレームバッファにフレームが格納されていない場合に前記一定量以上トークンを加算しないステップを有する請求項17に記載の帯域制御方法。
【請求項22】
前記出力フレームバッファにフレームが格納されていないときのトークン量の加算上限値を、前記出力フレームバッファにフレームが格納されているときのトークン量の加算上限値より小さい値に設定するステップを有する請求項17に記載の帯域制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate


【公開番号】特開2012−60203(P2012−60203A)
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願番号】特願2010−198459(P2010−198459)
【出願日】平成22年9月6日(2010.9.6)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】