説明

通信装置

【課題】公平な帯域制御と通信速度の向上への対応との両立を支援する通信装置を実現する。
【解決手段】通信装置10の複数のキューバッファ24は、通信の管理単位であるフローごとの入力フレームをそれぞれ保持する。逐次スケジューラ32および調整スケジューラ34は、複数のフレームバッファを巡回して、外部へ出力すべきフレームを各フレームバッファから読み出す。逐次スケジューラ32は、通信装置10の通信速度より低速で、各フレームバッファに対する1回の巡回あたり1フレームを読み出す。その一方、調整スケジューラ34は、各フレームバッファに対する1回の巡回あたり、最短フレーム長より大きい所定の基準値を読み出しの制限量として1以上のフレームを読み出す。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、データ通信技術に関し、特に通信装置に関する。
【背景技術】
【0002】
近年、光ファイバによるブロードバンドの急速な普及により、通信におけるアクセス回線速度は、最大100Mbpsから1Gbpsへ高速化が進展している。さらに、10GE−PON(Gigabit Ethernet-Passive Optical Network、「Ethernet」は登録商標)の標準化により、アクセス回線のさらなる高速化も想定される。
【0003】
インターネットアクセスは基本的にベストエフォートサービスであり、複数の加入者のトラフィックは有限の通信帯域を共有して通信が行われる。このような通信形態においては、専用線等に求められる帯域保証ではなく、各加入者のトラフィックを公平に取り扱うよう帯域制御を行う通信装置が用いられることがある。なお、本明細書での「帯域」は、所定の単位時間あたりの通信データ量であるとも言える。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−153482号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
公平な帯域制御を実現する従来の技術としてWRR(Weighted Round Robin)キューバッファ読み出し制御方式が知られている。この方式では、論理的な加入者回線(加入者側の装置と他装置との論理的な通信セッションとも言える)である入力フローごとに、フレームを一時的に保持するキューバッファを具備する。通信装置に入力されたフレームは、入力フローごとのキューバッファへ格納される。スケジューラは、フレーム読み出しを行うキューバッファを一定周期で巡回的に決定することにより各フローにおける出力データ量が均等になるようにする。
【0006】
1周期における読み出しデータ量(ここでは「X」とする)を最短フレーム長より大きくすると、最短フレームが1つ蓄積されたキューバッファからフレームを読み出す場合、読み出しデータ量はXよりも小さくなる。すなわち、出力帯域よりも少ないデータ量しか読み出されず、出力帯域に余剰が発生することになる。また、余剰分を他のキューバッファのフレームに割り当てる場合、余剰量に応じて動的にかつ公平に割り当てる方式が必要となるが、この場合、方式が複雑化しやすく適切な方法もなかった。
【0007】
出力帯域の余剰が発生しないように、X以上にフレームが蓄積されたキューバッファからのみフレームを読み出すよう制限することも考えられる。しかしこの場合、Xより小さいフレーム蓄積量しかないキューバッファからはフレームが読み出されなくなってしまう。また、Xを最短フレーム長とした場合は出力帯域の余剰は発生しない。しかし通信速度が速くなると、最短フレームの処理に費やすことができる時間(以下、「フレーム処理猶予時間」とも呼ぶ。)は短くなりすなわち1周期が短くなる。通信速度の一層の高速化が見込まれる状況において、従来の技術では、フレーム処理猶予時間内に、次のフレーム読み出しを行うべきキューバッファを決定することが一層困難になることが考えられる。
【0008】
本発明は、こうした課題に鑑みてなされたものであり、その主たる目的は、通信装置において公平な帯域制御と通信速度の向上への対応との両立を支援するための技術を提供することである。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明のある態様の通信装置は、通信の管理単位であるフローごとの入力フレームをそれぞれ保持する複数のフレームバッファと、複数のフレームバッファを巡回して、外部へ出力すべきフレームを各フレームバッファから読み出す第1スケジューラおよび第2スケジューラと、を備える。第1スケジューラは、本通信装置の通信速度より低速で、各フレームバッファに対する1回の巡回あたり1フレームを読み出し、第2スケジューラは、各フレームバッファに対する1回の巡回あたり、最短フレーム長より大きい所定の基準値を読み出しの制限量として1以上のフレームを読み出す。
【0010】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0011】
本発明によれば、通信装置において公平な帯域制御と通信速度の向上への対応との両立を支援することができる。
【図面の簡単な説明】
【0012】
【図1】実施の形態の通信システムの構成を示す図である。
【図2】図1の通信装置の機能構成を示すブロック図である。
【図3】逐次スケジューラの動作を詳細に示すフローチャートである。
【図4】調整スケジューラの動作を詳細に示すフローチャートである。
【図5】実施の形態の通信装置におけるフレーム読み出しの具体例を示す図である。
【図6】実施の形態の通信装置におけるフレーム読み出しの具体例を示す図である。
【発明を実施するための形態】
【0013】
実施の形態の通信装置は、複数のキューバッファを巡回してフレームを読み出すスケジューラを2つ備える。第1のスケジューラは、通信装置の通信速度(例えば10Gbps)よりも低速(例えば1Gbps)で、1周期あたり読み出し対象のキューバッファから1フレームを読み出す。言い換えれば、最低フレーム長を読み出し制限量として、1周期あたり読み出し対象のキューバッファから、読み出しデータ量が読み出し制限量以上になるまでフレームを読み出す。その一方、第2のスケジューラは、最低フレーム長より大きい基準値を読み出し制限量として、1周期に読み出し対象のキューバッファから、読み出しデータ量が読み出し制限量以上になるまでフレームを読み出す。
【0014】
少なくとも第1のスケジューラは各キューバッファを順次巡回して1フレームを読み出すため、複数のキューバッファ間でのフレーム読み出し量の公平性を維持しやすくなる。また、第1のスケジューラと並行して第2のスケジューラがフレームを読み出すため、第1のスケジューラが通信装置の通信速度よりも低速で動作しても出力帯域の余剰は発生しにくい。すなわち、通信装置の出力帯域を有効活用しつつ、通信装置の高速化へ対応が容易になる。言い換えれば、通信速度に対するスケーラビリティを維持しやすくなる。
【0015】
なお実施の形態の通信装置は、可変長のイーサネットフレーム(「イーサネット」は登録商標、以下単に「フレーム」とも呼ぶ。)を中継するレイヤ2スイッチであることとする。ただし、所定の通信フレームを伝送するその他の伝送装置、例えばL3スイッチやルータ等であってもよいことはもちろんである。
【0016】
図1は、実施の形態の通信システムの構成を示す。通信システム100において、通信装置10は、所定の伝送路を介して他の通信装置である他通信装置12や、ユーザのPC等の情報処理端末14と接続され、他通信装置12とともにLANやWAN等の通信網を構成する。通信装置10は、他通信装置12や情報処理端末14から送出されたフレームを受信し、フレームの設定内容(VLAN−ID、MACアドレス等)に基づいて他通信装置12や情報処理端末14へ当該フレームを中継する。本実施の形態では、通信装置10の出力帯域、すなわち通信速度は10Gbpsであることとする。
【0017】
図2は、図1の通信装置10の機能構成を示すブロック図である。通信装置10は、入力ポート20と、出力ポート22と、キューバッファ24で総称される第1キューバッファ24a、第1キューバッファ24b、第3キューバッファ24c・・・と、方路決定部26と、フレーム書込部28と、フレーム読出し部30を備える。
【0018】
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのCPUやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【0019】
入力ポート20は、他通信装置12や情報処理端末14から伝送路へ送出されたイーサネットフレームを受信する通信ポートである。出力ポート22は、他通信装置12や情報処理端末14へ伝送すべきイーサネットフレームを伝送路へ送出する通信ポートである。なお入力ポート20および出力ポート22は説明の簡明化のため別個に示しているが、物理的には1つの通信ポートにおいて入力ポート20と出力ポート22の両方の機能が実装されてもよいことはもちろんである。
【0020】
キューバッファ24は、通信装置10で受け付けられたフレームデータを、その設定内容(VLAN−IDやMACアドレス等)に応じたフローごとに一時的に保持するFIFO(First In First Out)のメモリである。図2では第1キューバッファ24a〜第3キューバッファ24cを示したが、例えば送信元MACアドレスと宛先MACアドレスとの組み合わせごと、またVLAN−IDごと等、4以上のキューバッファが含まれてもよいことはもちろんである。なお、第1キューバッファ24a〜第3キューバッファ24cのそれぞれが蓄積するフレームのデータ量は後述の積算量監視部36へ通知される。
【0021】
方路決定部26は、入力ポート20で受け付けられたフレームに設定された宛先情報(宛先MACアドレスやVLAN−ID等)にもとづいてフローおよび出力ポート22を決定する。フレーム書込部28は、方路決定部26からフレームを受け付けて、方路決定部26により特定されたフローに対応するキューバッファ24へフレームデータを格納する。フレーム書込部28は、フレームを格納したキューバッファ24の識別情報と、格納したフレームの長さを積算量監視部36へ通知する。
【0022】
フレーム読出し部30は、キューバッファ24に格納されたフレームデータを読み出し、方路決定部26により決定された出力ポート22から、そのフレームデータを送出させる。フレーム読出し部30は、逐次スケジューラ32と調整スケジューラ34と積算量監視部36を含む。
【0023】
逐次スケジューラ32は、一度に処理するフレームの制限量(言い換えると、1周期における読み出しフレームの制限量)を最短フレーム長である84バイト、すなわちイーサネットフレームの最短長64バイト+フレーム間ギャップ20バイトとする。そして、通信装置10の通信速度よりも低速の1Gbpsで動作する。具体的には、1周期0.672マイクロ秒(以下「μs」とも表記する。)で第1キューバッファ24a〜第3キューバッファ24cを順次巡回する。そして、各キューバッファ24への巡回あたり読み出しフレームの制限量を超えるまでフレームデータを読み出す。すなわち各キューバッファ24から1フレームを読み出す。逐次スケジューラ32は、各キューバッファ24から読み出したフレームのデータ量を積算量監視部36へ通知する。
【0024】
調整スケジューラ34は、一度に処理するフレームの制限量(以下「読み出し基準値」とも呼ぶ。)を最短フレーム長の10倍の840バイトとする。そして、出力帯域の10Gbpsの速度で動作する。具体的には、1周期0.672μsで第1キューバッファ24a〜第3キューバッファ24cを順次巡回する。そして、各キューバッファ24への巡回あたり、読み出し基準値と、各キューバッファ24からのそれまでの読み出し量とに応じて定まる制限量(以下、「読み出し制限量」とも呼ぶ。)を超えるまでフレームデータを読み出す。詳細は後述するが、各キューバッファ24からのそれまでの読み出し量が小さいほど、調整スケジューラ34によるフレームデータの読み出し量を大きくすることにより、複数のキューバッファ24間での公平なフレーム読み出しを実現する。
【0025】
積算量監視部36は、第1キューバッファ24a〜第3キューバッファ24cのそれぞれに蓄積されたフレームのデータ量を示す情報(以下、「蓄積フレーム量」とも呼ぶ。)を保持する。そして、フレーム書込部28から通知された書込フレーム量に応じて蓄積フレーム量を増加させる一方、逐次スケジューラ32および調整スケジューラ34から通知された読み出しフレーム量に応じて蓄積フレーム量を減少させる。
【0026】
また積算量監視部36は、第1キューバッファ24a〜第3キューバッファ24cのそれぞれについて、逐次スケジューラ32および調整スケジューラ34で読み出されたフレームの積算量を示す情報(以下、「読み出し積算量」とも呼ぶ。)を保持する。具体的には、逐次スケジューラ32から通知された読み出しフレームのデータ量を、そのまま読み出し積算量へ加算する。その一方、調整スケジューラ34から通知された読み出しフレームのデータ量については、そのデータ量から読み出し基準値(840バイト)を減じた値を読み出し積算量へ加算する。したがって、読み出しフレーム量が読み出し基準値未満であれば、読み出し積算量を減少させることになる。
【0027】
逐次スケジューラ32および調整スケジューラ34は、キューバッファ24からのフレーム読み出しを行うべき際、積算量監視部36から各キューバッファ24の蓄積フレーム量を取得する。調整スケジューラ34は、積算量監視部36から各キューバッファ24の読み出し積算量をさらに取得する。逐次スケジューラ32は、フレームが蓄積されたキューバッファ24、すなわち蓄積フレーム量が0より大きいキューバッファ24をフレーム読み出しの対象として選択する。その一方、調整スケジューラ34は、蓄積フレーム量+読み出し積算量が読み出し基準値(840バイト)以上となるキューバッファ24をフレーム読み出しの対象として選択する。
【0028】
以上の構成による通信装置10の動作を以下説明する。
通信装置10の入力ポート20は、他通信装置12や情報処理端末14から送信された通信フレームを所定の伝送路を介して受信する。方路決定部26は、受信された通信フレームの内容に基づいて出力ポートおよびフローを決定する。フレーム書込部28は、複数種類のフローと複数種類のキューバッファとの対応関係を予め定めたテーブルを参照し、方路決定部26により決定されたフローに対応づけられたキューバッファ24へフレームを格納する。そして、フレームを格納したキューバッファ24とそのフレーム長とを積算量監視部36へ通知する。
【0029】
積算量監視部36は、各キューバッファ24における蓄積フレーム量と読み出し積算量を保持し、フレーム書込部28やスケジューラからの通知に応じて逐次更新する。逐次スケジューラ32は、積算量監視部36に保持された蓄積フレーム量にしたがって、フレームを読み出すべきキューバッファ24を決定してフレームデータを読み出す。調整スケジューラ34は、積算量監視部36に保持された蓄積フレーム量と読み出し積算量とにしたがって、フレームを読み出すべきキューバッファ24と読み出し制限量とを決定してフレームを読み出す。フレーム読出し部30は、逐次スケジューラ32および調整スケジューラ34により読み出されたフレームデータを、出力ポート22を介して他通信装置12や情報処理端末14へ送出させる。
【0030】
図3は、逐次スケジューラ32の動作を詳細に示すフローチャートである。逐次スケジューラ32は、積算量監視部36から各キューバッファ24の蓄積フレーム量を取得する。逐次スケジューラ32は、前回選択したキューバッファ(以下「M」)を記憶し、M+1のキューバッファ24から順にフレームが蓄積されたキューバッファ24を検索して、条件に該当する最初のキューバッファ24を選択する(S10)。
【0031】
いずれかのキューバッファ24を選択した場合(S12のY)、当該バッファから1フレームを読み出す(S14)。そして、逐次スケジューラ32はフレームを読み出したキューバッファ24および読み出したフレーム長を積算量監視部36へ通知し、積算量監視部36は当該キューバッファ24の読み出し積算量へそのフレーム長を加算する(S15)。なお図3には不図示であるが、積算量監視部36は、当該キューバッファ24の蓄積フレーム量から読み出しフレーム量を減算する。
【0032】
いずれのキューバッファ24も未選択、すなわちフレームを蓄積したキューバッファ24がなければ(S12のN)、S14およびS15はスキップされる。停止コマンドが受け付けられた等の所定の終了条件が未充足の場合(S16のN)、1周期(0.672μs)が経過するまで待機し(S18のN)、1周期の経過を検出すると(S18のY)、S10へ戻る。終了条件が充足すると(S16のY)、本図のフローを終了する。
【0033】
図4は、調整スケジューラ34の動作を詳細に示すフローチャートである。調整スケジューラ34は、積算量監視部36から各キューバッファ24の蓄積フレーム量および読み出し積算量を取得する。逐次スケジューラ32は、前回選択したキューバッファ(以下「N」)を記憶し、N+1のキューバッファ24から順に、(蓄積フレーム量+読み出し積算量)が読み出し基準値(840バイト)以上となるキューバッファ24を検索する。そして条件に該当する最初のキューバッファ24を選択する(S20)。
【0034】
いずれかのキューバッファ24を読み出し対象として選択した場合(S22のY)、調整スケジューラ34は、読み出し基準値(840バイト)から読み出し積算量を減じた値を読み出し制限量として算出する(S24)。なお同一の周期において逐次スケジューラ32が同一のキューバッファ24からフレームを読み出した場合、逐次スケジューラ32により読み出されたフレーム量も読み出し積算量に含める。読み出し制限量が0以上であれば(S26のN)、調整スケジューラ34は読み出し対象のキューバッファ24から読み出し制限量を超えるまでフレーム読み出しを実行する(S28)。読み出し制限量が0未満、言い換えれば読み出し基準値よりも読み出し積算量が大きければ(S26のY)、S28をスキップし、フレーム読み出しを行わない。
【0035】
調整スケジューラ34は、読み出し対象のキューバッファ24および読み出したフレーム長を積算量監視部36へ通知する。積算量監視部36は、通知されたキューバッファ24の読み出し積算量へ、読み出しフレーム量から読み出し基準値(840バイト)を減じた値を加算する(S30)。このとき、読み出しフレーム量が840バイトよりも小さい場合は、読み出し積算量をそれまでより小さくすることになる。なお図4には不図示であるが、積算量監視部36は、通知されたキューバッファ24の蓄積フレーム量から読み出しフレーム量を減算する。
【0036】
いずれのキューバッファ24も未選択、すなわち(蓄積フレーム量+読み出し積算量)が読み出し基準値(840バイト)以上となるキューバッファ24がなければ(S22のN)、S22からS30はスキップされる。停止コマンドが受け付けられた等の所定の終了条件が未充足の場合(S32のN)、1周期(0.672μs)が経過するまで待機し(S34のN)、1周期の経過を検出すると(S34のY)、S20へ戻る。終了条件が充足すると(S32のY)、本図のフローを終了する。
【0037】
次に、図5および図6を参照して実施の形態の通信装置10におけるフレーム読み出しの具体例を説明する。この例ではキューバッファ#1〜#10のそれぞれに、格納フレーム欄で示すフレームが蓄積されている。なおキューバッファ#4は開始当初、500バイト1フレームが蓄積されており、後述するように後の時点で500バイト1フレームが追加して蓄積される。同図のフレーム長84バイトは、イーサネットの最小フレーム長に、フレーム間ギャップおよびプリアンブルを加えた長さである。また、逐次スケジューラ32のM+1および調整スケジューラ34のN+1、すなわち両スケジューラが最初に検索すべきキューバッファはともにキューバッファ#1であることとする。
【0038】
図5の各周期の欄では、「フレームを読み出すスケジューラ種類」−「読み出しフレーム数」−「読み出し積算量」を示している。S1は逐次スケジューラ32を意味し、S2は調整スケジューラ34を意味している。
【0039】
1周期目は、逐次スケジューラ32によりキューバッファ#1が選択され、84バイトフレームが1つ読み出される。また調整スケジューラ34は、蓄積フレーム量が840バイト以上あるキューバッファを検索してキューバッファ#5を選択する。そしてキューバッファ#5から840バイトを超える1000バイトフレームが1つ読み出される。逐次スケジューラ32と調整スケジューラ34は、読み出し対象のキューバッファと読み出したフレーム量を積算量監視部36へ通知する。積算量監視部36は、キューバッファ#1の読み出し積算量を84バイト、キューバッファ#5の読み出し積算量を160バイト(1000−840)と算出する。
【0040】
2周期目は、逐次スケジューラ32によりキューバッファ#2が選択され、84バイトフレームが1つ読み出される。また調整スケジューラ34によりキューバッファ#6が選択され、1000バイトフレームが1つ読み出される。キューバッファ#2の読み出し積算量は84バイト、キューバッファ#6の読み出し積算量は160バイトとなる。
【0041】
3周期目は、逐次スケジューラ32によりキューバッファ#3が選択され、84バイトフレームが1つ読み出される。また調整スケジューラ34によりキューバッファ#7が選択されて1000バイトフレームが1つ読み出される。キューバッファ#3の読み出し積算量は84バイト、キューバッファ#7の読み出し積算量は160バイトとなる。
【0042】
4周期目は、逐次スケジューラ32によりキューバッファ#4が選択され、500バイトフレームが1つ読み出される。また調整スケジューラ34によりキューバッファ#8が選択されて840バイトを超えるまでフレームが読み出されることにより、500バイトフレームが2つ読み出される。キューバッファ#4の読み出し積算量は500バイト、キューバッファ#8の読み出し積算量は160バイトとなる。
【0043】
5周期目は、逐次スケジューラ32によりキューバッファ#5が選択され、1000バイトフレームが1つ読み出される。また調整スケジューラ34によりキューバッファ#9が選択され、500バイトフレームが2つ読み出される。キューバッファ#5の読み出し積算量は1160バイト(160+1000)、キューバッファ#9の読み出し積算量は160バイトとなる。
【0044】
6周期目は、逐次スケジューラ32によりキューバッファ#6が選択され、1000バイトフレームが1つ読み出される。また調整スケジューラ34によりキューバッファ#10が選択され、500バイトフレームが2つ読み出される。キューバッファ#6の読み出し積算量は1160バイト、キューバッファ#10の読み出し積算量は160バイトとなる。
【0045】
ここでキューバッファ#4に、500バイトのフレームが新たに格納されたとする。
7周期目は、逐次スケジューラ32によりキューバッファ#7が選択され、1000バイトフレームが1つ読み出される。また調整スケジューラ34は、(蓄積フレーム量+読み出し積算量)が840バイト以上となるキューバッファを検索してキューバッファ#4を選択する。そしてキューバッファ#4から、(840バイト−読み出し積算量500バイト)を超えるまでフレームを読み出すことにより、500バイトフレームを1つ読み出す。キューバッファ#7の読み出し積算量は1160バイトとなる。キューバッファ#4の読み出し積算量は、元の読み出し積算量500バイト+(読み出しフレーム量500バイト−読み出し基準値840バイト)=160バイトとなる。
【0046】
8周期目は、逐次スケジューラ32によりキューバッファ#8が選択され、500バイトフレームが1つ読み出される。また調整スケジューラ34は、(蓄積フレーム量+読み出し積算量)が840バイト以上となるキューバッファを検索してキューバッファ#5を選択する。このときキューバッファ#5では、読み出し基準値840バイト−読み出し積算量1160バイト<0となるため、調整スケジューラ34はフレームの読み出しをスキップする。キューバッファ#8の読み出し積算量は660バイト(160+500)となる。キューバッファ#5の読み出し積算量は、元の読み出し積算量1160バイト+(読み出しフレーム量0バイト−読み出し基準値840バイト)=320バイトとなる。
【0047】
9周期目は、逐次スケジューラ32によりキューバッファ#9が選択され、500バイトフレームが1つ読み出される。また調整スケジューラ34は、(蓄積フレーム量+読み出し積算量)が840バイト以上となるキューバッファを検索してキューバッファ#6を選択する。このときキューバッファ#6では、読み出し基準値840バイト−読み出し積算量1160バイト<0となるため、調整スケジューラ34はフレームの読み出しをスキップする。キューバッファ#9の読み出し積算量は660バイト(160+500)となる。キューバッファ#6の読み出し積算量は、元の読み出し積算量1160バイト+(読み出しフレーム量0バイト−読み出し基準値840バイト)=320バイトとなる。
【0048】
10周期目は、逐次スケジューラ32によりキューバッファ#10が選択され、500バイトフレームが1つ読み出される。また調整スケジューラ34は、(蓄積フレーム量+読み出し積算量)が840バイト以上となるキューバッファを検索してキューバッファ#7を選択する。このときキューバッファ#7では、読み出し基準値840バイト−読み出し積算量1160バイト<0となるため、調整スケジューラ34はフレームの読み出しをスキップする。キューバッファ#10の読み出し積算量は660バイト(160+500)となる。キューバッファ#7の読み出し積算量は、元の読み出し積算量1160バイト+(読み出しフレーム量0バイト−読み出し基準値840バイト)=320バイトとなる。
【0049】
11周期目は、逐次スケジューラ32によりフレームが蓄積されたキューバッファ#8が選択され、500バイトフレームが1つ読み出される。また調整スケジューラ34は、(蓄積フレーム量+読み出し積算量)が840バイト以上となるキューバッファを検索して同じキューバッファ#8を選択する。このときキューバッファ#8では、読み出し基準値840バイト−元の読み出し積算量660バイト−逐次スケジューラ32による読み出し量500バイト<0となるため、調整スケジューラ34はフレームの読み出しをスキップする。キューバッファ#8の読み出し積算量は、元の読み出し積算量660バイト+逐次スケジューラ32による読み出し量500バイト+(調整スケジューラ34による読み出しフレーム量0バイト−読み出し基準値840バイト)=320バイトとなる。
【0050】
12周期目は、逐次スケジューラ32によりフレームが残存するキューバッファ#9が選択され、500バイトフレームが1つ読み出される。また調整スケジューラ34は、(蓄積フレーム量+読み出し積算量)が840バイト以上となるキューバッファを検索して同じキューバッファ#9を選択する。このときキューバッファ#9では、読み出し基準値840バイト−元の読み出し積算量660バイト−逐次スケジューラ32による読み出し量500バイト<0となるため、調整スケジューラ34はフレームの読み出しをスキップする。キューバッファ#9の読み出し積算量は、元の読み出し積算量660バイト+逐次スケジューラ32による読み出し量500バイト+(調整スケジューラ34による読み出しフレーム量0バイト−読み出し基準値840バイト)=320バイトとなる。
【0051】
13周期目は、逐次スケジューラ32によりフレームが残存するキューバッファ#10が選択され、500バイトフレームが1つ読み出される。また調整スケジューラ34は、(蓄積フレーム量+読み出し積算量)が840バイト以上となるキューバッファを検索して同じキューバッファ#10を選択する。このときキューバッファ#10では、読み出し基準値840バイト−元の読み出し積算量660バイト−逐次スケジューラ32による読み出し量500バイト<0となるため、調整スケジューラ34はフレームの読み出しをスキップする。キューバッファ#10の読み出し積算量は、元の読み出し積算量660バイト+逐次スケジューラ32による読み出し量500バイト+(調整スケジューラ34による読み出しフレーム量0バイト−読み出し基準値840バイト)=320バイトとなる。
【0052】
この13回の周期において各キューバッファから読み出されたフレーム量と読み出し積算量は以下のようになる。
キューバッファ#1 :読み出しフレーム量84バイト、積算量84バイト
キューバッファ#2 :読み出しフレーム量84バイト、積算量84バイト
キューバッファ#3 :読み出しフレーム量84バイト、積算量84バイト
キューバッファ#4 :読み出しフレーム量1000バイト、積算量160バイト
キューバッファ#5 :読み出しフレーム量2000バイト、積算量320バイト
キューバッファ#6 :読み出しフレーム量2000バイト、積算量320バイト
キューバッファ#7 :読み出しフレーム量2000バイト、積算量320バイト
キューバッファ#8 :読み出しフレーム量2000バイト、積算量320バイト
キューバッファ#9 :読み出しフレーム量2000バイト、積算量320バイト
キューバッファ#10:読み出しフレーム量2000バイト、積算量320バイト
【0053】
この13回の周期に相当する出力帯域のフレーム量は、840バイト×13=10920バイトである。これを10個のキューバッファで均等に分けると1092バイト/キューバッファとなる。しかし、キューバッファ#1〜#4は、1092バイトのフレームがないため、単純に逐次スケジューラ32のみで巡回した場合、出力帯域に余剰が発生することになる。その余剰量は、1092バイト×4−(84バイト×3+1000バイト)=3116バイトとなる。通信装置10のキューバッファ#5〜#10は、1092バイト×6+3116バイト=9668バイトを公平に使用することになる。
【0054】
上記の例では、キューバッファ#5〜#10は、それぞれが格納するフレーム長が異なるにもかかわらず、読み出したフレーム量は同じであり、公平な帯域使用が実現されている。また、キューバッファ#1〜#4は、一度には840バイトに満たないフレームしか蓄積されなかったにもかかわらず、840バイトのフレームデータの蓄積を待つことなく、フレーム読出しが行われている。また、全体の読み出しフレーム量は13252バイト、読み出し積算量は2332バイトとなり、前者から後者を減算すると10920バイトとなって13回分の出力帯域のフレーム量と合致している。このように、出力帯域に対しても無駄なくフレームの読み出しが行われている。
【0055】
本実施の形態の通信装置10によれば、逐次スケジューラ32は各キューバッファへの巡回あたり1フレームを読み出すため、複数のキューバッファ間でのフレーム読み出し量の公平性を維持しやすくなる。また、逐次スケジューラ32と並行して調整スケジューラ34がフレーム読み出しを行うため、逐次スケジューラ32が通信装置の通信速度よりも低速で動作しても出力帯域の余剰は発生しにくい。すなわち、通信装置の出力帯域を有効活用しつつ、通信装置の高速化への対応が容易になる。
【0056】
また通信装置10によれば、あるキューバッファにおけるフレームの読み出し積算量が大きいほど、当該キューバッファからの調整スケジューラ34によるフレーム読み出し量を小さくする。これにより、複数のキューバッファ間でのフレーム読み出し量の公平性を一層厳密に維持しやすくなる。
【0057】
また通信装置10によれば、あるキューバッファにおけるフレームの読み出し積算量が所定値(例えば読み出し基準値840バイト)を超過する場合、当該キューバッファからの調整スケジューラ34によるフレーム読み出しをスキップする。そして、当該キューバッファの読み出し積算量をそれまでよりも小さくする(例えば読み出し基準値840バイトを減算する)。これにより、次回の巡回時には当該キューバッファからの調整スケジューラ34によるフレーム読み出しが行われやすくなり、複数のキューバッファ間でのフレーム読み出し量の公平性を一層厳密に維持しやすくなる。
【0058】
なお、通信装置10では、出力帯域10Gbpsの公平読み出しを実現するにあたり、逐次スケジューラ32および調整スケジューラ34において次のフレーム読み出しの対象とするキューバッファを決定するまでの時間として、1Gbpsの最短フレーム時間である0.672μsが確保されればよい。一方、従来のWRRによるフレーム読み出しでは同じ0.672μs周期で次のフレーム読み出しの対象とするキューバッファを決定した場合、1Gbpsの出力帯域しか実現できない。このように、通信装置10で提案する技術は、従来技術と比較して、高速な出力帯域での公平読み出しを一層容易に実現可能であり、高速なインタフェースを持つ通信装置に好適である。
【0059】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0060】
上記実施の形態の通信装置10は、最短フレーム長を基準として各キューバッファへの巡回あたり1フレームを読み出す逐次スケジューラ32と、読み出し基準値840バイト(ここでは「第1読み出し基準値」と呼ぶ。)を基準として各キューバッファへの巡回あたり1以上のフレームを読み出す調整スケジューラ34を備えることとした。変形例として、通信装置10は、最短フレーム長よりも大きく第1読み出し基準値よりも小さい基準値(ここでは「第2読み出し基準値」と呼ぶ。)を基準として各キューバッファへの巡回あたり1以上のフレームを読み出す1つ以上の中間スケジューラをさらに備えてもよい。
【0061】
以下では、通信装置10は、1つの中間スケジューラをさらに備える例を示す。なお第2読み出し基準値は、最短フレーム長と読み出し基準値の略中間値であってもよく、また読み出し基準値の半分程度の値であってもよく、ここでは420バイトとする。
【0062】
中間スケジューラは、逐次スケジューラ32と同様に動作し、各キューバッファへの巡回あたり、第2読み出し基準値420バイトを上回るまで1以上のフレームデータを読み出し、キューバッファの識別情報と読み出しフレーム量を積算量監視部36へ通知する。積算量監視部36は、逐次スケジューラ32および中間スケジューラによる読み出し量を各キューバッファの読み出し積算量にそのまま加算する。実施の形態と同様に、調整スケジューラ34は、読み出し積算量が大きいほど読み出し制限量を小さくし、その結果、調整スケジューラ34による読み出しフレーム量は低減される。
【0063】
上記実施の形態では、調整スケジューラ34による1回の読み出し量が大きくなることがあり、言い換えれば、各キューバッファのフレームのバースト量が大きくなることがあった。この場合、通信装置10の出力フレームを受け付ける他通信装置12等において一度に大きなデータ量を処理する必要が生じ、他通信装置12等の処理負荷が一時的に高まって処理の遅延を生じさせることが考えられる。本変形例によれば、逐次スケジューラ32と調整スケジューラ34の中間の値を基準値とする中間スケジューラを設けることにより、1周期あたりの通信装置10の出力フレーム量を平準化させやすくなる。これにより例えば他通信装置12における処理負荷も平準化させやすくなり、処理の遅延を生じさせにくくすることができる。
【0064】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
【符号の説明】
【0065】
10 通信装置、 20 入力ポート、 22 出力ポート、 24 キューバッファ、 26 方路決定部、 28 フレーム書込部、 30 フレーム読出し部、 32 逐次スケジューラ、 34 調整スケジューラ、 36 積算量監視部。

【特許請求の範囲】
【請求項1】
通信の管理単位であるフローごとの入力フレームをそれぞれ保持する複数のフレームバッファと、
前記複数のフレームバッファを巡回して、外部へ出力すべきフレームを各フレームバッファから読み出す第1スケジューラおよび第2スケジューラと、
を備え、
前記第1スケジューラは、本通信装置の通信速度より低速で、各フレームバッファに対する1回の巡回あたり1フレームを読み出し、
前記第2スケジューラは、各フレームバッファに対する1回の巡回あたり、最短フレーム長より大きい所定の基準値を読み出しの制限量として1以上のフレームを読み出すことを特徴とする通信装置。
【請求項2】
前記複数のフレームバッファのそれぞれについて、少なくとも前記第1スケジューラにより読み出されたフレームの積算量を読み出し積算量として保持する積算量監視部をさらに備え、
前記第2スケジューラは、あるフレームバッファの読み出し積算量が大きいほど当該フレームバッファからの読み出しの制限量を小さい値へ変更することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記第2スケジューラは、あるフレームバッファの読み出し積算量が所定値を超過する場合、当該フレームバッファからのフレーム読み出しをスキップし、
前記積算量監視部は、前記フレームバッファからのフレーム読み出しがスキップされた場合、前記フレームバッファの読み出し積算量をそれまでよりも小さくすることを特徴とする請求項2に記載の通信装置。
【請求項4】
前記複数のフレームバッファを巡回して、外部へ出力すべきフレームを各フレームバッファから読み出すスケジューラであって、最短フレーム長より大きく、かつ、前記第2スケジューラにおける基準値より小さい別の基準値を読み出しの制限量として1以上のフレームを読み出す第3スケジューラをさらに備えることを特徴とする請求項1から3のいずれかに記載の通信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate