説明

スイッチ装置

【課題】外部メモリの個数を抑制しつつ、メモリへの高速なアクセスと、ユーザトラヒックのバースト吸収とを両立したスイッチ装置を実現する。
【解決手段】スイッチ装置100は、アクセス速度が高速で小容量の内部メモリ20と、アクセス速度が低速で大容量の外部メモリ80を備える。振分け処理部30は、入力ポート12において受け付けられたパケットを格納すべきバッファとして、内部メモリ20の空きが所定の閾値未満の場合に内部メモリ20を選択する一方、内部メモリ20の空きが所定の閾値未満の場合は外部メモリ80を選択する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、データ通信技術に関し、通信データを中継するスイッチ装置に関する。
【背景技術】
【0002】
スイッチ装置の中には、入力ポートにおいて伝送路から受信したイーサネットパケット(「イーサネット」は登録商標)のVLAN識別子と宛先MACアドレスにしたがって出力ポートを決定するものがある。また、パケットに設定された優先度にしたがって、優先度振分けを行うものがある。
【0003】
またスイッチ装置の中には、バッファに書き込まれたパケットを出力ポート毎に読出すスケジューラを設け、スケジューラから読出された順序で出力ポートから伝送路へパケットを送出するものがある。一般的にスケジューラは、優先度が高いパケットを優先度が低いパケットより優先して読出す。また優先度が低いパケットの読出しには、VLAN識別子毎にWRR(Weighted Round Robin)規則が適用される場合もある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−153482号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
スイッチ装置におけるパケットスイッチは、パケットバッファとしてのメモリに対するパケットの書込みと読出し(Write/Read)により実現される。このため、要求されるスイッチ処理速度が高くなるほど、メモリに対するWrite/Read速度を高くする必要がある。例えば、入力100Gb/s(ギガバイト毎秒)、出力100Gb/sのパケットスイッチにおいては、メモリへのアクセス速度として、Write速度=100Gb/s、Read速度=100Gb/sが必要になる。
【0006】
ところで、パケットバッファのメモリとしては外部メモリが用いられることもあり、また内部メモリが用いられることもある。外部メモリは、スイッチデバイス(基盤回路)の外部に設けられたメモリであり、例えばスイッチデバイスに対して外付けされるDRAMである。外部メモリは、低速かつ大容量のメモリであり、例えばWrite/Read速度が32bit幅×400MHz(Double Data Rate)で、容量が数百Mb(メガバイト)〜数Gb以上である。その一方、高速メモリは、スイッチデバイス(基盤回路)内部に設けられるメモリであり、例えばLSI(FPGA・ASIC・ASSP等)内部に構築されたメモリである。高速メモリは、高速かつ小容量のメモリであり、Write/Read速度には実質的に制約はないが(例えば100Gb/s)、容量は2.5Mb程度が限界である。
【0007】
上記のパケット処理速度を実現するため、パケットバッファとして外部メモリ使用する場合、外部メモリのWrite/Read速度を32bit幅×400MHz(Double Data Rate)とすると、8個の外部メモリが必要になる。
100Gb/s(Write) + 100Gb/s(Read) = 200Gb/s(MIN)
32bit幅 × 400MHz × 2(DDR) × 8個 = 204.8Gb/s
【0008】
また、イーサネットのユーザトラヒックにはバースト性があり、ユーザトラヒックのバーストが同時刻に重なっても廃棄されるパケット量を抑制するために、大容量のメモリが必要になる。例えば、10個の入力ポートを備えるスイッチ装置において、10Gb/sの入力ポートに平均帯域10Mb/s、最大帯域100Mb/s、バーストサイズ100Kb(キロバイト)のユーザを1000ユーザ収容する場合、パケット廃棄を防ぐために必要なバッファ容量は1Gbとなる。
1000ユーザ × 100Kbバーストサイズ = 100Mb
100Mb × 10ポート = 1Gb
【0009】
以上より、200Gb/sのアクセス速度と、1Gbのバースト耐性を持たせるためには、Write/Read速度が32bit幅×400MHz(Double Data Rate)、容量が125Mbの外部メモリを8個搭載する必要がある。外部メモリは典型的には1センチ×2センチ程度の大きさがあるため、外部メモリを8個搭載するにはスイッチ装置に広い部品配置スペースを設ける必要があり、小型のスイッチ装置では実装が困難であった。また大量の電力を消費してしまう問題もあった。
【0010】
パケットバッファとして内部メモリを使用する場合、アクセス速度の条件は達成できるが、メモリ容量は2.5Mb程度が限界であり、バースト耐性の条件が達成できない。
【0011】
本発明は、こうした課題に鑑みてなされたものであり、その主たる目的は、外部メモリの個数を抑制しつつ、メモリへの高速なアクセスと、ユーザトラヒックのバースト吸収とを両立したスイッチ装置を実現するための技術を提供することである。
【課題を解決するための手段】
【0012】
上記課題を解決するために、本発明のある態様のスイッチ装置は、スイッチ装置であって、アクセス速度が相対的に高く小容量のメモリである高速メモリと、アクセス速度が相対的に低く大容量のメモリである低速メモリと、入力ポートにおいて受け付けられたパケットを格納すべきバッファとして、高速メモリの空きが所定の閾値以上の場合に高速メモリを選択する一方、高速メモリの空きが当該閾値未満の場合は低速メモリを選択する振分け部と、を備える。
【0013】
なお、以上の構成要素の任意の組合せ、本発明の表現を、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0014】
本発明によれば、外部メモリの個数を抑制しつつ、メモリへの高速なアクセスと、ユーザトラヒックのバースト吸収とを両立したスイッチ装置を実現することができる。
【図面の簡単な説明】
【0015】
【図1】第1の実施の形態のスイッチ装置の構成を示す図である。
【図2】出力ポート検索テーブルを模式的に示す図である。
【図3】内部メモリの構成を模式的に示す図である。
【図4】外部メモリの構成を模式的に示す図である。
【図5】WRR規則テーブルを模式的に示す図である。
【図6】図1の振分け処理部の詳細な構成を示すブロック図である。
【図7】スイッチ装置の動作を示すフローチャートである。
【図8】図7のS18の振分け処理を詳細に示すフローチャートである。
【図9】スイッチ装置の動作を示すフローチャートである。
【図10】スイッチ装置の動作を示すフローチャートである。
【図11】第2の実施の形態のスイッチ装置の特徴部分を示す図である。
【発明を実施するための形態】
【0016】
まず、本発明の実施の形態の概要を説明する。
実施の形態のスイッチ装置は、レイヤ2スイッチであり、相対的に高い優先度が設定されたイーサネットフレーム(以下、「高優先パケット」とも呼ぶ。)と、相対的に低い優先度が設定されたイーサネットフレーム(以下、「低優先パケット」とも呼ぶ。)を伝送路から受け付けてスイッチ処理を実行する。高優先パケットは、イーサネットフレームのVLANタグのPCP(Priority Code Point)フィールド(3ビット)に優先度が高いことを示す値(例えば4,5,6,7のいずれか)が設定されたものでもよい。言い換えれば、PCPフィールドの値が示す優先度が所定値以上(例えば4以上)のものでもよい。同様に低優先パケットは、PCPフィールドに優先度が低いことを示す値(1,2,3,4)が設定されたものでもよく、言い換えれば、PCPフィールドの値が示す優先度が所定値未満(例えば4未満)のものでもよい。以下では、高優先パケットと低優先パケットを総称する場合、単に「パケット」と呼ぶ。
【0017】
実施の形態のスイッチ装置は、内部メモリと外部メモリの両方を備える。内部メモリには、高優先パケットを出力ポート単位で保持する高優先キューと、低優先パケットを出力ポート単位かつVLAN単位で保持する低優先キューが設けられる。またスイッチ装置は、出力ポート毎に高優先キュー>低優先キューの優先度でパケットを読出すSP(Strict Priority)スケジューラと、低優先キューから出力ポート毎かつVLAN毎に、各VLANに対して定められた重みに応じた比率でパケットを読出すWRR(Weighted Round Robin)スケジューラを備える。
【0018】
内部メモリの低優先キューには空き状況に関する閾値が設定される。内部メモリの低優先キューの空きが閾値以上であれば、すなわち非輻輳時には、低優先パケットを内部メモリの低優先キューへ格納する。その一方、内部メモリの低優先キューの空きが閾値未満になると、すなわち輻輳時には、低優先パケットを大容量の外部メモリへ格納する。
【0019】
入力100Gb/s、出力100Gb/sのパケットスイッチにおいて、パケットの9割が内部メモリへ格納されると仮定すると、外部メモリに要求されるアクセス速度は10Gb/s(Write)+10Gb/s(Read)となり、32bit幅×400MHz(DDR)の外部メモリ1個で実現できる。
10Gb/s(Write) + 10Gb/s(Read) = 20Gb/s(MIN)
32bit幅 × 400MHz × 2(DDR) × 1個 = 25.6Gb/s
【0020】
また外部メモリの容量を1Gbとすれば、外部メモリ1個で、バーストサイズ100Kbのユーザを1000ユーザ収容することが可能になる。このように実施の形態のスイッチ装置によれば、小容量高速アクセスメモリ(内部メモリ)と、少数の大容量低速アクセスメモリ(外部メモリ)を使い分けることにより、100Gb/sの入出力に対応可能なメモリアクセスと、輻輳時におけるバースト吸収を実現できる。
【0021】
(第1の実施の形態)
図1は、第1の実施の形態のスイッチ装置の構成を示す。スイッチ装置100は、基盤回路10と、基盤回路10に外付けされた外部メモリ80を備える。基盤回路10は、パケットスイッチ処理のロジックが実装された電子回路(FPGA・ASIC・ASSP等のLSI)である。基盤回路10は、入力ポート12で総称される入力ポート12a、入力ポート12b・・・入力ポート12cと、出力ポート14で総称される出力ポート14a、出力ポート14b・・・出力ポート14cと、出力先決定部16と、スケジューラ18で総称されるスケジューラ18a、スケジューラ18b・・・スケジューラ18cと、内部メモリ20と、振分け処理部30を有する。
【0022】
図1では、スイッチ装置100が備える各機能をブロックとして描いている。本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのCPUやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【0023】
入力ポート12は、スイッチ装置100の外部の伝送路からパケットを受け付ける通信ポートである。出力ポート14は、スイッチ装置100の外部の伝送路へパケットを送出する通信ポートである。入力ポート12aと出力ポート14a、入力ポート12bと出力ポート14b・・・は、物理的に単一のポートとして実装されてもよいことはもちろんである。
【0024】
出力先決定部16は、出力ポート検索テーブルを参照して、入力ポート12a〜入力ポート12cのそれぞれにおいて受信されたパケットの出力ポートを決定する。図2は、出力ポート検索テーブルを模式的に示す。同図の出力ポート「0x010」「0x080」「0x00F」は、出力ポート14a〜出力ポート14cに対応する。出力先決定部16は、出力ポート検索テーブルにおいて、パケットに設定された宛先MACアドレス(MAC−DA)およびVLAN識別子(以下、「VID」とも呼ぶ。)と対応づけられた出力ポートを、当該パケットの出力ポートとして決定する。出力先決定部16は、パケットの入力ポートを示す入力ポート情報と、パケットの出力ポートを示す出力ポート情報とを含む装置内ヘッダをパケットへ付加し、パケットを振分け処理部30へ渡す。なお、宛先MACアドレスが、マルチキャストアドレスもしくはブロードキャストアドレスの場合は、出力ポート情報には複数の出力ポートが指定される。
【0025】
図1に戻り、内部メモリ20は、基盤回路10の内部に設けられたメモリであり、高速アクセス可能で小容量のメモリである。図3は、内部メモリ20の構成を模式的に示す。内部メモリ20は、高優先キュー22と低優先キュー24を有する。高優先キュー22は、高優先パケットを出力ポート単位に保持する出力ポート単位キュー26を含む。例えば、出力ポート単位キュー26の第1出力ポートキューは出力ポート14aから出力されるべき高優先パケットを保持し、第2出力ポートキューは出力ポート14bから出力されるべき高優先パケットを保持する。
【0026】
低優先キュー24は、低優先パケットを出力ポート単位かつVLAN単位に保持する出力ポート・VLAN単位キュー28を含む。例えば、出力ポート・VLAN単位キュー28としての、第1出力ポートキューの第1VLANキューは、出力ポート14aから出力されるべき低優先パケットであって、第1のVLANに属する(例えばVID=1が設定された)低優先パケットを保持する。第1出力ポートキューの第2VLANキューは、出力ポート14aから出力されるべき低優先パケットであって、第2のVLANに属する(例えばVID=2が設定された)低優先パケットを保持する。同様に、出力ポート・VLAN単位キュー28の第2出力ポートキューも各VLAN用のキュー(不図示)を含み、出力ポート14bから出力されるべき低優先パケットをVLAN単位に保持する。
【0027】
図1に戻り、外部メモリ80は、基盤回路10の外部に設けられたメモリであり、内部メモリ20よりアクセス速度が低速である一方、内部メモリ20より容量が大きいメモリである。図4は、外部メモリ80の構成を模式的に示す。外部メモリ80は、低優先パケットを入力ポート単位かつVLAN単位に保持する入力ポート・VLAN単位キュー82を含む。例えば、入力ポート・VLAN単位キュー82としての、第1入力ポートキューの第1VLANキューは、入力ポート12aから入力された低優先パケットであって、第1のVLANに属する(例えばVID=1が設定された)低優先パケットを保持する。また第1入力ポートキューの第2VLANキューは、入力ポート12aから入力された低優先パケットであって、第2のVLANに属する(例えばVID=2が設定された)低優先パケットを保持する。同様に、入力ポート・VLAN単位キュー82の第2入力ポートキューも各VLAN用のキュー(不図示)を含み、入力ポート12bから入力された低優先パケットをVLAN単位に保持する。
【0028】
図1に戻り、スケジューラ18a〜スケジューラ18cは、出力ポート14a〜出力ポート14cのそれぞれと予め対応づけられており、各々に対応づけられた出力ポートからのパケットの送出を制御する。スケジューラ18a〜スケジューラ18cのそれぞれは、SPスケジューラおよびWRRスケジューラとして機能し、内部メモリ20に設けられたキューのうち、自身に対応づけられた出力ポート用のキューからパケットを読出す。具体的には、内部メモリ20の出力ポート単位キュー26からは高優先パケットを、内部メモリ20の出力ポート・VLAN単位キュー28からは低優先パケットを読出す。その際には高優先パケットを絶対優先として読出す。また、出力ポート・VLAN単位キュー28から低優先パケットを読出す際には、WRR規則テーブルに定められたVLAN毎の重み付けにしたがって、各VLAN用のキューから順次低優先パケットを読出す。
【0029】
図5は、WRR規則テーブルを模式的に示す。同図のWRR規則は、VID=1,2,3のパケットを、1:10:3の比率で読出すよう定めたものである。スケジューラ18は、VID=1が設定された低優先パケットを、VID=1用のキューから1個読出し、次にVID=2が設定された低優先パケットを、VID=2用のキューから10個読出し、さらにVID=3が設定された低優先パケットを、VID=3用のキューから3個読出してもよい。
【0030】
図1に戻り、振分け処理部30は、入力ポート12において受信されたパケットを、当該パケットの優先度および内部メモリ20の空き状況に応じて振分け、内部メモリ20もしくは外部メモリ80へ格納する。
【0031】
図6は、図1の振分け処理部30の詳細な構成を示すブロック図である。振分け処理部30は、優先度振分け部32と、高優先パケット振分け部34と、高優先パケット書込み制御部36と、内部キュー監視部38と、外部キュー監視部40と、メモリ振分け部42と、低優先パケット振分け部44と、低優先パケット書込み制御部46と、外部キュー振分け部48と、外部メモリ書込み制御部50と、外部メモリ読出し制御部52と、コピー制御部54と、内部キュー振分け部56を含む。
【0032】
優先度振分け部32は、パケットの優先度ビットに応じて、当該パケットが高優先パケットと低優先パケットのいずれであるかを判定する。具体的には、VLANタグのPCPフィールドの値が4以上であれば高優先パケットと判定し、4未満であれば低優先パケットと判定する。優先度振分け部32は、高優先パケットを高優先パケット振分け部34へ渡し、低優先パケットをメモリ振分け部42へ渡す。
【0033】
高優先パケット振分け部34は、高優先パケットの装置内ヘッダの出力ポート情報にしたがって、当該パケットを格納すべき内部メモリ20の出力ポート単位キュー26を決定する。高優先パケット書込み制御部36は、高優先パケット振分け部34により決定された内部メモリ20の出力ポート単位キュー26へ高優先パケットを格納する。
【0034】
内部キュー監視部38は、内部メモリ20の出力ポート・VLAN単位キュー28を監視し、各キューのキュー長(すなわちパケット保持状況)を管理する。言い換えれば、各キューの空き状況を管理する。具体的には、内部キュー監視部38は、出力ポート・VLAN単位キュー28の各キューについて、新たなパケットを格納可能な空き容量が所定の閾値(以下、「内部キュー閾値」とも呼ぶ。)以上か否かを判定し、空き容量が内部キュー閾値未満のキューを、新たなパケットの格納ができない満杯キューとして特定する。言い換えれば、内部キュー監視部38は、各キューのキュー長が所定の閾値未満か否かを判定する。
【0035】
外部キュー監視部40は、外部メモリ80の入力ポート・VLAN単位キュー82を監視し、各キューのキュー長を管理する。言い換えれば、各キューの空き状況を管理する。具体的には、外部キュー監視部40は、入力ポート・VLAN単位キュー82の各キューについて、新たなパケットを格納可能な空き容量が所定の閾値(以下、「外部キュー閾値」とも呼ぶ。)以上か否かを判定し、空き容量が外部キュー閾値未満のキューを、新たなパケットの格納ができない満杯キューとして特定する。言い換えれば、外部キュー監視部40は、各キューのキュー長が所定の閾値未満か否かを判定する。
【0036】
例えば、内部キュー監視部38および外部キュー監視部40は、1つのキューに対して割り当てられた全記憶容量のうちパケットの格納に未使用の空き容量が所定割合(例えば10%)未満となったキューを満杯キューとして特定してもよい。また、キューに格納可能なパケット数(例えば128パケット)のうち所定数(例えば100パケット)以上のパケットを保持中のキューを満杯キューとして特定してもよい。言い換えれば、空き容量が28パケット分の容量以下となったキューを満杯キューとして特定してもよい。
【0037】
また上記の内部キュー閾値および外部キュー閾値は、スイッチ装置100の開発者や運用者の経験、もしくはスイッチ装置100を用いた実験により、適切な値が決定されてよい。なお、内部メモリ20の使用効率が高まるよう、内部キュー閾値(ここでは空き容量の大きさの指標値であるとする)は小さい値が望ましい。しかし、過度に小さくすると内部キューのあふれ(その結果としてのパケットロス)が発生しうるため、内部メモリ20の使用効率とパケットロス防止の比較考量により値が決定されることが望ましい。
【0038】
また外部キュー監視部40は、外部メモリ80の入力ポート・VLAN単位キュー82の各キューについて、保持中のパケット、言い換えれば、未読出しのパケットがあるか否かを判定する。
【0039】
メモリ振分け部42は、低優先パケットの出力ポートおよびVIDにしたがって、当該低優先パケットの格納先候補である内部メモリ20の出力ポート・VLAN単位キュー28(以下、「対応内部キュー」とも呼ぶ。)を特定する。また、低優先パケットの入力ポートおよびVIDにしたがって、当該低優先パケットの格納先候補である外部メモリ80の入力ポート・VLAN単位キュー82(以下、「対応外部キュー」とも呼ぶ。)を特定する。
【0040】
メモリ振分け部42は、内部キュー監視部38および外部キュー監視部40による監視結果にもとづいて、対応内部キューが満杯キューでなく、かつ、対応外部キューのキュー長が0(未読出しのパケットがない)場合に、低優先パケットの格納先を対応内部キューに決定する。そして、低優先パケットを低優先パケット振分け部44に渡す。対応内部キューが満杯キューであり、もしくは対応外部キューに未読出しのパケットが存在する場合は、低優先パケットの格納先を対応外部キューに決定して、低優先パケットを外部キュー振分け部48に渡す。この構成により、先に受け付けられて外部メモリ80に格納された低優先パケットが、それより後に受け付けられた低優先パケットよりも後に外部へ出力されてしまうことを防止できる。
【0041】
低優先パケット振分け部44は、低優先パケットの装置内ヘッダの出力ポート情報およびVIDにしたがって、当該パケットを格納すべき内部メモリ20の出力ポート・VLAN単位キュー28(すなわち対応内部キュー)を決定する。低優先パケット書込み制御部46は、低優先パケット振分け部44により決定された内部メモリ20の出力ポート・VLAN単位キュー28へ低優先パケットを格納する。
【0042】
外部キュー振分け部48は、低優先パケットの装置内ヘッダの入力ポート情報およびVIDにしたがって、当該パケットを格納すべき外部メモリ80の入力ポート・VLAN単位キュー82(すなわち対応外部キュー)を決定する。外部キュー監視部40による監視結果にもとづいて対応外部キューが満杯キューでない場合、外部キュー振分け部48は低優先パケットを外部メモリ書込み制御部50へ渡し、外部メモリ書込み制御部50は低優先パケットを対応外部キューへ格納する。対応外部キューが満杯キューである場合、外部キュー振分け部48は低優先パケットを廃棄する。
【0043】
外部メモリ読出し制御部52は、不図示のWRR規則テーブルを参照して、当該テーブルに定められたVLAN毎の重み付けにしたがって、入力ポート・VLAN単位キュー82における各VLAN用のキューから低優先パケットを読出す。外部メモリ読出し制御部52は、入力ポート単位に並行して低優先パケットを読出す一方、1つの入力ポートキューにおける各VLAN用のキューからWRR規則にしたがって低優先パケットを順次読出す。なお、外部メモリ読出し制御部52が参照するWRR規則テーブルは、図5と同様に、VIDと重みを対応づけたものである。
【0044】
コピー制御部54は、外部メモリ読出し制御部52により読出された低優先パケットの装置内ヘッダの出力ポート情報にしたがって、低優先パケットを適宜コピー(マルチキャストコピー)する。
【0045】
内部キュー振分け部56は、低優先パケットの装置内ヘッダの出力ポート情報およびVIDにしたがって、当該パケットを格納すべき内部メモリ20の出力ポート・VLAN単位キュー28(すなわち対応内部キュー)を決定する。内部キュー監視部38による監視結果にもとづいて対応内部キューが満杯キューでない場合、内部キュー振分け部56は低優先パケットを低優先パケット書込み制御部46へ渡し、低優先パケット書込み制御部46は低優先パケットを対応内部キューへ格納する。対応内部キューが満杯キューである場合、内部キュー振分け部56は低優先パケットを廃棄する。
【0046】
以上の構成によるスイッチ装置100の動作を以下説明する。
図7は、スイッチ装置100の動作を示すフローチャートである。同図は、伝送路から入力されたパケットをパケットバッファへ書込むまでの動作を示している。入力ポート12においてパケットが受け付けられると(S10のY)、出力先決定部16はパケットの出力ポートを決定し(S12)、優先度振分け部32はパケットの優先度を判定する。高優先パケットの場合(S14のY)、高優先パケット振分け部34は高優先パケットを格納すべき対応内部キューを決定し、高優先パケット書込み制御部36は高優先パケットを対応内部キューへ格納する(S16)。低優先パケットの場合(S14のN)、振分け処理部30は後述の振分け処理を実行する(S18)。入力ポート12においてパケットを受け付けなければ(S10のN)、以降のステップをスキップして本図のフローを終了する。
【0047】
図8は、図7のS18の振分け処理を詳細に示すフローチャートである。メモリ振分け部42は、低優先パケットの対応内部キューのキュー長を内部キュー監視部38から取得し、低優先パケットの対応内部キューのキュー長を外部キュー監視部40から取得する。対応内部キューの空き容量が内部キュー閾値以上で(S20のY)、対応外部キューのキュー長が0の場合(S22のY)、メモリ振分け部42は対応内部キューへの格納を決定する。そして低優先パケット振分け部44は低優先パケットを対応内部キューへ振分け、低優先パケット書込み制御部46は低優先パケットを対応内部キューへ格納する(S24)。
【0048】
対応内部キューの空き容量が内部キュー閾値未満(S20のN)、もしくは対応外部キューのキュー長が0より大きい場合(S22のN)、メモリ振分け部42は対応外部キューへの格納を決定する。そして対応外部キューの空き容量が外部キュー閾値以上であれば(S26のY)、外部キュー振分け部48は低優先パケットを対応外部キューへ振分け、外部メモリ書込み制御部50は低優先パケットを対応外部キューへ格納する(S28)。対応外部キューの空き容量が外部キュー閾値未満の場合は(S26のN)、低優先パケットは廃棄される(S30)。
【0049】
図9は、スイッチ装置100の動作を示すフローチャートである。同図は、外部メモリ80から低優先パケットを読出して内部メモリ20へ格納する動作を示しており、入力ポート・VLAN単位キュー82に対して入力ポート単位に並行して実行されてもよい。
【0050】
外部メモリ読出し制御部52は、外部メモリ80の入力ポート・VLAN単位キュー82にパケットが格納されていることを検出すると(S40のY)、VLAN毎の重み付けにしたがってパケットを読出す(S42)。コピー制御部54は、外部メモリ80から読出されたパケットをその出力ポート数分、コピーする(S44)。内部キュー振分け部56は低優先パケットを格納すべき対応内部キューを特定し(S46)、その対応内部キューの空き容量が内部キュー閾値以上であれば(S48のY)、低優先パケット書込み制御部46は低優先パケットを対応内部キューへ格納する(S50)。対応内部キューの空き容量が内部キュー閾値未満であれば(S48のN)、低優先パケットは廃棄される(S52)。外部メモリ80の入力ポート・VLAN単位キュー82にパケットが格納されていない、すなわち入力ポート・VLAN単位キュー82に格納された全パケットが読出し済みであれば(S40のN)、以降のステップをスキップして本図のフローを終了する。
【0051】
図10は、スイッチ装置100の動作を示すフローチャートである。同図は、内部メモリ20からパケットを読出して伝送路へ送出する動作を示しており、典型的にはスケジューラ18a〜スケジューラ18cのそれぞれが並行して実行する。以下では、出力ポート14aに対応づけられたスケジューラ18aの動作として説明する。
【0052】
スケジューラ18aは、出力ポート14aに対応する出力ポート単位キュー26に高優先パケットが格納されていることを検出すると(S60のY)、出力ポート14aに対応する出力ポート・VLAN単位キュー28に低優先パケットが格納されているか否かにかかわらず、出力ポート単位キュー26から高優先パケットを読出す(S62)。出力ポート14aに対応する出力ポート単位キュー26に高優先パケットが未格納であり(S60のN)、出力ポート14aに対応する出力ポート・VLAN単位キュー28に低優先パケットが格納されていることを検出すると(S64のY)、出力ポート・VLAN単位キュー28からWRR規則にしたがって低優先パケットを読出す(S66)。スケジューラ18aは、内部メモリ20から読出した高優先パケットもしくは低優先パケットを、出力ポート14aから伝送路へ送出させる(S68)。出力ポート14aに対応する出力ポート単位キュー26および出力ポート・VLAN単位キュー28にパケットが未格納であれば(S64のN)、以降のステップをスキップして本図のフローを終了する。
【0053】
第1の実施の形態のスイッチ装置100によれば、外部メモリ80に優先して内部メモリ20をパケットバッファとして選択することで高速なメモリアクセスを実現する。また、小容量の内部メモリ20の空きが少なくなった場合は大容量の外部メモリ80をパケットバッファとして選択することでバーストトラヒックも吸収することが容易になる。言い換えれば、バーストトラヒックに伴うパケットロスを抑制することができる。また、優先的に内部メモリ20を選択しつつ、外部メモリ80を補完的に用いることで、外部メモリ80の個数を低減でき、装置の小型化・省消費電力化に対応が容易になる。
【0054】
またスイッチ装置100によれば、高優先パケットは必ず内部メモリ20へ格納し、低優先パケットは内部メモリ20の空き状況に応じて格納先を内部メモリ20もしくは外部メモリ80とする。これにより、高優先パケットのスイッチ処理を優先しつつ、高優先パケットのスイッチ処理終了待ちの低優先パケットの数が増加しても、低優先パケットの廃棄を抑制することができる。
【0055】
またスイッチ装置100によれば、各入力ポートに対応するキューを外部メモリ80に設け、外部メモリ80に対してパケットの入力ポートを基準としてパケットを格納する。そして、外部メモリ80からパケットを読出した後にパケットの出力ポートの数に応じてパケットをコピーする。これにより、外部メモリ80に格納すべきパケット数を低減でき、アクセス速度が比較的低速な外部メモリ80を効率的に使用できる。
【0056】
(第2の実施の形態)
第2の実施の形態のスイッチ装置100は、外部メモリ80から読出した低優先パケットを、内部メモリ20の低優先キュー24へ書込み可能となるまで保留させるための待ち合せバッファをさらに備える点で第1の実施の形態とは異なる。以下、相違点を中心に説明し、共通点の説明は省略する。
【0057】
図11は、第2の実施の形態のスイッチ装置100の特徴部分を示す。他の構成は図1〜図6と同じである。内部メモリ20は、低優先パケットを一時的に保持するための記憶領域である待ち合せバッファ29をさらに有する。図11には不図示であるが、待ち合せバッファ29は、低優先キュー24と同様に、出力ポート単位かつVLAN単位の複数のキューを含む。言い換えれば、待ち合せバッファ29は、出力ポート・VLAN単位キュー28の各キューに対応する複数の待ち合せキューを含む。
【0058】
内部キュー振分け部56は、外部メモリ80から読出された低優先パケットについて、その出力ポート情報およびVIDに対応する待ち合せキュー(以下、「対応待ち合せキュー」とも呼ぶ。)を特定し、当該低優先パケットを対応待ち合せキューへ格納する。外部メモリ80から読出された低優先パケットがマルチキャスト送信パケットである場合は、コピー制御部54により当該パケットはコピーされ、内部キュー振分け部56は、コピーされた各パケットに対応する複数の対応待ち合せキューへパケットを格納する。
【0059】
内部キュー振分け部56は、内部キュー監視部38による監視結果にもとづいて、パケットを保持する対応待ち合せキューに対応する対応内部キューの空き状況を確認する。対応内部キューが満杯キューでない場合、対応待ち合せキューから低優先パケットを読出して低優先パケット書込み制御部46へ渡し、その低優先パケットを対応内部キューへ格納させる。その一方、対応内部キューが満杯キューであった場合は、対応待ち合せキューから低優先パケットを読出すことなく、対応待ち合せキューに低優先パケットを保持させた状態を維持する。なお内部キュー振分け部56は、パケットを保持する対応待ち合せキューに対応する対応内部キューの空き状況を定期的に繰り返し確認し、対応内部キューの満杯状態が解消されると、対応待ち合せキューに保留されたパケットを読出して対応内部キューへ転送する。
【0060】
内部キュー振分け部56は、待ち合せバッファ29が空でない場合、すなわち待ち合せバッファ29にパケットが保留されている場合、外部メモリ読出し制御部52に対して、パケット読出しを抑止するよう指示するためのNotEmpty通知を行う。以下では、NotEmpty通知として内部キュー振分け部56から外部メモリ読出し制御部52へ送信される信号を「読出し抑止指示」と呼ぶ。外部メモリ読出し制御部52は、読出し抑止指示を受け付けると、外部メモリ80からの低優先パケットの読出しを抑制する。
【0061】
内部キュー振分け部56は、待ち合せバッファ29が空になると、すなわち待ち合せバッファ29に保留された全てのパケットを読出すと、読出し抑止指示の送信を中止する。外部メモリ読出し制御部52は、読出し抑止指示を受け付けていないとき、入力ポート・VLAN単位キュー82からの低優先パケットの読出しを実行する。例えば、内部キュー振分け部56からの読出し停止指示が途切れた場合に、パケット読出しを再開する。
【0062】
第2の実施の形態のスイッチ装置100によれば、第1の実施の形態において既述した効果に加え、内部メモリ20における出力ポート・VLAN単位キュー28が満杯状態であっても低優先パケットの廃棄を抑制できるという効果を奏する。すなわち、出力ポート・VLAN単位キュー28が満杯状態の場合、外部メモリ80から読出された低優先パケットを待ち合せバッファ29に保留しておくとともに、外部メモリ80から新たな低優先パケットの読出しを抑制するため、大容量の外部メモリ80に空きがある限り、低優先パケットの廃棄を防ぐことができる。
【0063】
変形例として、内部キュー振分け部56は、読出し抑止指示において、パケットを保持する待ち合せキューに対応づけられたVIDを指定してもよい。すなわち、内部キュー振分け部56は、VLAN単位で読出し抑止指示を送信してもよい。外部メモリ読出し制御部52は、読出し抑止指示により指定されたVIDに対応する入力ポート・VLAN単位キュー82からの低優先パケットの読出しを停止してもよく、読出し抑止指示で指定対象外のVIDに対応する入力ポート・VLAN単位キュー82からの低優先パケットの読出しは継続してもよい。
【0064】
別の変形例として、内部キュー振分け部56は、待ち合せバッファ29が空になると、パケット読出しを再開させるための信号(以下、「読出し再開指示」とも呼ぶ。)を外部メモリ読出し制御部52へ送信してもよい。この場合、外部メモリ読出し制御部52は、読出し再開指示を受け付けると、外部メモリ80からの低優先パケットの読出しを再開する。なお、読出し再開指示においても、空になった待ち合せキューに対応するVIDが指定されてもよく、外部メモリ読出し制御部52は、読出し再開指示により指定されたVIDに対応する入力ポート・VLAN単位キュー82からの低優先パケットの読出しを再開してもよい。
【0065】
さらに別の変形例として、外部メモリ読出し制御部52は、待ち合せバッファ29にパケットが保持されているか否かを自立的に監視してもよい。そして、待ち合せバッファ29にパケットが保持されていることを検出すると、外部メモリ80からの低優先パケットの読出しを抑制してもよい。また待ち合せバッファ29が空になったことを検出すると、外部メモリ80からの低優先パケットの読出しを再開してもよい。
【0066】
また、外部メモリ読出し制御部52は、パケットを保持する待ち合せキューに対応づけられたVIDに対応する入力ポート・VLAN単位キュー82からの低優先パケットの読出しを停止してもよい。その一方、パケットを保持する待ち合せキューに対応づけられたVID以外のVIDに対応する入力ポート・VLAN単位キュー82からの低優先パケットの読出しは継続してもよい。また、特定のVIDに対応する入力ポート・VLAN単位キュー82からの低優先パケットの読出しを停止した後、そのVIDに対応する待ち合せキューが空になったことを検出すると、そのVIDに対応する入力ポート・VLAN単位キュー82からの低優先パケットの読出しを再開してもよい。
【0067】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0068】
上記実施の形態では、スイッチ装置として、イーサネットフレームのスイッチ処理を実行するレイヤ2スイッチを例示したが、レイヤ3スイッチやレイヤ4スイッチ等、他の種類のスイッチ装置に対しても本発明の技術思想を適用可能であり、同様の効果を奏する。また、スイッチ処理の対象とするパケットもイーサネットフレームに制限されず、IPパケット等、他の種類の通信データの場合にも本発明の技術思想を適用可能であり、同様の効果を奏する。
【0069】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。例えば、請求項に記載の第2の書込み制御部は、実施の形態の記載の内部キュー振分け部56と低優先パケット書込み制御部46の連携により実現されてもよい。
【符号の説明】
【0070】
10 基盤回路、 12 入力ポート、 14 出力ポート、 16 出力先決定部、 18 スケジューラ、 20 内部メモリ、 29 待ち合せバッファ、 30 振分け処理部、 32 優先度振分け部、 34 高優先パケット振分け部、 36 高優先パケット書込み制御部、 42 メモリ振分け部、 44 低優先パケット振分け部、 46 低優先パケット書込み制御部、 48 外部キュー振分け部、 50 外部メモリ書込み制御部、 52 外部メモリ読出し制御部、 56 内部キュー振分け部、 80 外部メモリ、 100 スイッチ装置。

【特許請求の範囲】
【請求項1】
スイッチ装置であって、
アクセス速度が相対的に高く小容量のメモリである高速メモリと、
アクセス速度が相対的に低く大容量のメモリである低速メモリと、
入力ポートにおいて受け付けられたパケットを格納すべきバッファとして、前記高速メモリの空きが所定の閾値以上の場合に前記高速メモリを選択する一方、前記高速メモリの空きが当該閾値未満の場合は前記低速メモリを選択する振分け部と、
を備えることを特徴とするスイッチ装置。
【請求項2】
前記振分け部は、相対的に高い優先度が設定された高優先パケットのバッファとして前記高速メモリを選択し、相対的に低い優先度が設定された低優先パケットのバッファとして、前記高速メモリの空きが所定の閾値以上の場合に前記高速メモリを選択する一方、前記高速メモリの空きが所定の閾値未満の場合は前記低速メモリを選択することを特徴とする請求項1に記載のスイッチ装置。
【請求項3】
前記振分け部は、前記低優先パケットのバッファとして前記低速メモリを選択した後、前記低速メモリに格納された全ての低優先パケットが読出され、かつ、前記高速メモリの空きが所定の閾値以上となった場合、前記低優先パケットのバッファを前記高速メモリへ変更することを特徴とする請求項2に記載のスイッチ装置。
【請求項4】
前記低速メモリには各入力ポートに対応するキューが設けられ、
前記パケットのバッファとして前記低速メモリが選択された場合、前記パケットが受け付けられた入力ポートに対応するキューへ前記パケットを格納する第1の書込み制御部をさらに備えることを特徴とする請求項1から3のいずれかに記載のスイッチ装置。
【請求項5】
前記高速メモリに格納されたパケットを出力ポートから送出させる出力制御部と、
前記低速メモリからパケットを読出す読出し制御部と、
前記高速メモリの空きが所定の閾値以上の場合は、前記読出し制御部により読出されたパケットを前記高速メモリへ格納する一方、前記高速メモリの空きが当該閾値未満の場合は、前記高速メモリの空きが当該閾値以上となるまで、前記読出されたパケットを所定のバッファに保持させる第2の書込み制御部をさらに備え、
前記読出し制御部は、前記所定のバッファにパケットが保持されている場合、前記低速メモリからのパケット読出しを抑制することを特徴とする請求項1から4のいずれかに記載のスイッチ装置。

【図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


【公開番号】特開2013−106260(P2013−106260A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2011−249850(P2011−249850)
【出願日】平成23年11月15日(2011.11.15)
【出願人】(000237662)富士通テレコムネットワークス株式会社 (682)
【Fターム(参考)】