(57)【特許請求の範囲】
【請求項１】
スイッチ装置であって、
伝送路からパケットを受け付ける複数の入力ポートと、
伝送路へパケットを送出する複数の出力ポートと、
アクセス速度が相対的に高く小容量のメモリであって、前記複数の出力ポートに対応する複数のキューが設けられた高速メモリと、
アクセス速度が相対的に低く大容量のメモリであって、前記複数の入力ポートに対応する複数のキューが設けられた低速メモリと、
前記複数の入力ポートのそれぞれで受け付けられたパケットを格納すべきバッファとして、前記高速メモリの空きが所定の閾値以上の場合に前記高速メモリを選択する一方、前記高速メモリの空きが当該閾値未満の場合は前記低速メモリを選択する振分け部と、
前記パケットのバッファとして前記低速メモリが選択された場合、前記パケットが受け付けられた入力ポートに対応する前記低速メモリのキューへ前記パケットを格納する第１の書込み制御部と、
前記低速メモリからパケットを読出す読出し制御部と、
前記読出し制御部により読出されたパケットが複数の出力ポートから送出するべきパケットである場合に、その出力ポート数に応じて前記読出されたパケットを複製するコピー制御部と、
前記コピー制御部から出力されたパケットのそれぞれを、各パケットを送出するべき出力ポートに対応する前記高速メモリのキューへ格納する第２の書込み制御部と、
前記高速メモリの各キューに格納されたパケットを、各キューに対応する出力ポートから送出させる出力制御部と、
を備えることを特徴とするスイッチ装置。
【請求項２】
前記振分け部は、相対的に高い優先度が設定された高優先パケットのバッファとして前記高速メモリを選択し、相対的に低い優先度が設定された低優先パケットのバッファとして、前記高速メモリの空きが所定の閾値以上の場合に前記高速メモリを選択する一方、前記高速メモリの空きが所定の閾値未満の場合は前記低速メモリを選択することを特徴とする請求項１に記載のスイッチ装置。
【請求項３】
前記振分け部は、前記低優先パケットのバッファとして前記低速メモリを選択した後、前記低速メモリに格納された全ての低優先パケットが読出され、かつ、前記高速メモリの空きが所定の閾値以上となった場合、前記低優先パケットのバッファを前記高速メモリへ変更することを特徴とする請求項２に記載のスイッチ装置。
【請求項４】
前記第２の書込み制御部は、前記高速メモリの空きが所定の閾値以上の場合は、前記読出し制御部により読出されたパケットを前記高速メモリへ格納する一方、前記高速メモリの空きが当該閾値未満の場合は、前記高速メモリの空きが当該閾値以上となるまで、前記読出されたパケットを所定のバッファに保持させ、
前記読出し制御部は、前記所定のバッファにパケットが保持されている場合、前記低速メモリからのパケット読出しを抑制することを特徴とする請求項１から３のいずれかに記載のスイッチ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ通信技術に関し、通信データを中継するスイッチ装置に関する。
【背景技術】
【０００２】
スイッチ装置の中には、入力ポートにおいて伝送路から受信したイーサネットパケット（「イーサネット」は登録商標）のＶＬＡＮ識別子と宛先ＭＡＣアドレスにしたがって出力ポートを決定するものがある。また、パケットに設定された優先度にしたがって、優先度振分けを行うものがある。
【０００３】
またスイッチ装置の中には、バッファに書き込まれたパケットを出力ポート毎に読出すスケジューラを設け、スケジューラから読出された順序で出力ポートから伝送路へパケットを送出するものがある。一般的にスケジューラは、優先度が高いパケットを優先度が低いパケットより優先して読出す。また優先度が低いパケットの読出しには、ＶＬＡＮ識別子毎にＷＲＲ（Weighted Round Robin）規則が適用される場合もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１５３４８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
スイッチ装置におけるパケットスイッチは、パケットバッファとしてのメモリに対するパケットの書込みと読出し（Write/Read）により実現される。このため、要求されるスイッチ処理速度が高くなるほど、メモリに対するWrite/Read速度を高くする必要がある。例えば、入力100Gb/s（ギガバイト毎秒）、出力100Gb/sのパケットスイッチにおいては、メモリへのアクセス速度として、Write速度=100Gb/s、Read速度=100Gb/sが必要になる。
【０００６】
ところで、パケットバッファのメモリとしては外部メモリが用いられることもあり、また内部メモリが用いられることもある。外部メモリは、スイッチデバイス（基盤回路）の外部に設けられたメモリであり、例えばスイッチデバイスに対して外付けされるＤＲＡＭである。外部メモリは、低速かつ大容量のメモリであり、例えばWrite/Read速度が32bit幅×400MHz（Double Data Rate）で、容量が数百Mb（メガバイト）〜数Gb以上である。その一方、高速メモリは、スイッチデバイス（基盤回路）内部に設けられるメモリであり、例えばＬＳＩ（ＦＰＧＡ・ＡＳＩＣ・ＡＳＳＰ等）内部に構築されたメモリである。高速メモリは、高速かつ小容量のメモリであり、Write/Read速度には実質的に制約はないが（例えば100Gb/s）、容量は2.5Mb程度が限界である。
【０００７】
上記のパケット処理速度を実現するため、パケットバッファとして外部メモリ使用する場合、外部メモリのWrite/Read速度を32bit幅×400MHz（Double Data Rate）とすると、８個の外部メモリが必要になる。
100Gb/s(Write) ＋ 100Gb/s(Read) = 200Gb/s(MIN)
32bit幅 × 400MHz × 2(DDR) × 8個 = 204.8Gb/s
【０００８】
また、イーサネットのユーザトラヒックにはバースト性があり、ユーザトラヒックのバーストが同時刻に重なっても廃棄されるパケット量を抑制するために、大容量のメモリが必要になる。例えば、１０個の入力ポートを備えるスイッチ装置において、10Gb/sの入力ポートに平均帯域10Mb/s、最大帯域100Mb/s、バーストサイズ100Kb（キロバイト）のユーザを1000ユーザ収容する場合、パケット廃棄を防ぐために必要なバッファ容量は1Gbとなる。
1000ユーザ × 100Kbバーストサイズ = 100Mb
100Mb × 10ポート = 1Gb
【０００９】
以上より、200Gb/sのアクセス速度と、1Gbのバースト耐性を持たせるためには、Write/Read速度が32bit幅×400MHz（Double Data Rate）、容量が125Mbの外部メモリを８個搭載する必要がある。外部メモリは典型的には１センチ×２センチ程度の大きさがあるため、外部メモリを８個搭載するにはスイッチ装置に広い部品配置スペースを設ける必要があり、小型のスイッチ装置では実装が困難であった。また大量の電力を消費してしまう問題もあった。
【００１０】
パケットバッファとして内部メモリを使用する場合、アクセス速度の条件は達成できるが、メモリ容量は2.5Mb程度が限界であり、バースト耐性の条件が達成できない。
【００１１】
本発明は、こうした課題に鑑みてなされたものであり、その主たる目的は、外部メモリの個数を抑制しつつ、メモリへの高速なアクセスと、ユーザトラヒックのバースト吸収とを両立したスイッチ装置を実現するための技術を提供することである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明のある態様のスイッチ装置は、スイッチ装置であって、アクセス速度が相対的に高く小容量のメモリである高速メモリと、アクセス速度が相対的に低く大容量のメモリである低速メモリと、入力ポートにおいて受け付けられたパケットを格納すべきバッファとして、高速メモリの空きが所定の閾値以上の場合に高速メモリを選択する一方、高速メモリの空きが当該閾値未満の場合は低速メモリを選択する振分け部と、を備える。
【００１３】
なお、以上の構成要素の任意の組合せ、本発明の表現を、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１４】
本発明によれば、外部メモリの個数を抑制しつつ、メモリへの高速なアクセスと、ユーザトラヒックのバースト吸収とを両立したスイッチ装置を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態のスイッチ装置の構成を示す図である。
【図２】出力ポート検索テーブルを模式的に示す図である。
【図３】内部メモリの構成を模式的に示す図である。
【図４】外部メモリの構成を模式的に示す図である。
【図５】ＷＲＲ規則テーブルを模式的に示す図である。
【図６】図１の振分け処理部の詳細な構成を示すブロック図である。
【図７】スイッチ装置の動作を示すフローチャートである。
【図８】図７のＳ１８の振分け処理を詳細に示すフローチャートである。
【図９】スイッチ装置の動作を示すフローチャートである。
【図１０】スイッチ装置の動作を示すフローチャートである。
【図１１】第２の実施の形態のスイッチ装置の特徴部分を示す図である。
【発明を実施するための形態】
【００１６】
まず、本発明の実施の形態の概要を説明する。
実施の形態のスイッチ装置は、レイヤ２スイッチであり、相対的に高い優先度が設定されたイーサネットフレーム（以下、「高優先パケット」とも呼ぶ。）と、相対的に低い優先度が設定されたイーサネットフレーム（以下、「低優先パケット」とも呼ぶ。）を伝送路から受け付けてスイッチ処理を実行する。高優先パケットは、イーサネットフレームのＶＬＡＮタグのＰＣＰ（Priority Code Point）フィールド（３ビット）に優先度が高いことを示す値（例えば４，５，６，７のいずれか）が設定されたものでもよい。言い換えれば、ＰＣＰフィールドの値が示す優先度が所定値以上（例えば４以上）のものでもよい。同様に低優先パケットは、ＰＣＰフィールドに優先度が低いことを示す値（１，２，３，４）が設定されたものでもよく、言い換えれば、ＰＣＰフィールドの値が示す優先度が所定値未満（例えば４未満）のものでもよい。以下では、高優先パケットと低優先パケットを総称する場合、単に「パケット」と呼ぶ。
【００１７】
実施の形態のスイッチ装置は、内部メモリと外部メモリの両方を備える。内部メモリには、高優先パケットを出力ポート単位で保持する高優先キューと、低優先パケットを出力ポート単位かつＶＬＡＮ単位で保持する低優先キューが設けられる。またスイッチ装置は、出力ポート毎に高優先キュー＞低優先キューの優先度でパケットを読出すＳＰ（Strict Priority）スケジューラと、低優先キューから出力ポート毎かつＶＬＡＮ毎に、各ＶＬＡＮに対して定められた重みに応じた比率でパケットを読出すＷＲＲ（Weighted Round Robin）スケジューラを備える。
【００１８】
内部メモリの低優先キューには空き状況に関する閾値が設定される。内部メモリの低優先キューの空きが閾値以上であれば、すなわち非輻輳時には、低優先パケットを内部メモリの低優先キューへ格納する。その一方、内部メモリの低優先キューの空きが閾値未満になると、すなわち輻輳時には、低優先パケットを大容量の外部メモリへ格納する。
【００１９】
入力100Gb/s、出力100Gb/sのパケットスイッチにおいて、パケットの９割が内部メモリへ格納されると仮定すると、外部メモリに要求されるアクセス速度は10Gb/s(Write)＋10Gb/s(Read)となり、32bit幅×400MHz(DDR)の外部メモリ１個で実現できる。
10Gb/s(Write) ＋ 10Gb/s(Read) = 20Gb/s(MIN)
32bit幅 × 400MHz × 2(DDR) × 1個 = 25.6Gb/s
【００２０】
また外部メモリの容量を１Ｇｂとすれば、外部メモリ１個で、バーストサイズ１００Ｋｂのユーザを１０００ユーザ収容することが可能になる。このように実施の形態のスイッチ装置によれば、小容量高速アクセスメモリ（内部メモリ）と、少数の大容量低速アクセスメモリ（外部メモリ）を使い分けることにより、１００Ｇｂ／ｓの入出力に対応可能なメモリアクセスと、輻輳時におけるバースト吸収を実現できる。
【００２１】
（第１の実施の形態）
図１は、第１の実施の形態のスイッチ装置の構成を示す。スイッチ装置１００は、基盤回路１０と、基盤回路１０に外付けされた外部メモリ８０を備える。基盤回路１０は、パケットスイッチ処理のロジックが実装された電子回路（ＦＰＧＡ・ＡＳＩＣ・ＡＳＳＰ等のＬＳＩ）である。基盤回路１０は、入力ポート１２で総称される入力ポート１２ａ、入力ポート１２ｂ・・・入力ポート１２ｃと、出力ポート１４で総称される出力ポート１４ａ、出力ポート１４ｂ・・・出力ポート１４ｃと、出力先決定部１６と、スケジューラ１８で総称されるスケジューラ１８ａ、スケジューラ１８ｂ・・・スケジューラ１８ｃと、内部メモリ２０と、振分け処理部３０を有する。
【００２２】
図１では、スイッチ装置１００が備える各機能をブロックとして描いている。本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのＣＰＵやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【００２３】
入力ポート１２は、スイッチ装置１００の外部の伝送路からパケットを受け付ける通信ポートである。出力ポート１４は、スイッチ装置１００の外部の伝送路へパケットを送出する通信ポートである。入力ポート１２ａと出力ポート１４ａ、入力ポート１２ｂと出力ポート１４ｂ・・・は、物理的に単一のポートとして実装されてもよいことはもちろんである。
【００２４】
出力先決定部１６は、出力ポート検索テーブルを参照して、入力ポート１２ａ〜入力ポート１２ｃのそれぞれにおいて受信されたパケットの出力ポートを決定する。図２は、出力ポート検索テーブルを模式的に示す。同図の出力ポート「０ｘ０１０」「０ｘ０８０」「０ｘ００Ｆ」は、出力ポート１４ａ〜出力ポート１４ｃに対応する。出力先決定部１６は、出力ポート検索テーブルにおいて、パケットに設定された宛先ＭＡＣアドレス（ＭＡＣ−ＤＡ）およびＶＬＡＮ識別子（以下、「ＶＩＤ」とも呼ぶ。）と対応づけられた出力ポートを、当該パケットの出力ポートとして決定する。出力先決定部１６は、パケットの入力ポートを示す入力ポート情報と、パケットの出力ポートを示す出力ポート情報とを含む装置内ヘッダをパケットへ付加し、パケットを振分け処理部３０へ渡す。なお、宛先ＭＡＣアドレスが、マルチキャストアドレスもしくはブロードキャストアドレスの場合は、出力ポート情報には複数の出力ポートが指定される。
【００２５】
図１に戻り、内部メモリ２０は、基盤回路１０の内部に設けられたメモリであり、高速アクセス可能で小容量のメモリである。図３は、内部メモリ２０の構成を模式的に示す。内部メモリ２０は、高優先キュー２２と低優先キュー２４を有する。高優先キュー２２は、高優先パケットを出力ポート単位に保持する出力ポート単位キュー２６を含む。例えば、出力ポート単位キュー２６の第１出力ポートキューは出力ポート１４ａから出力されるべき高優先パケットを保持し、第２出力ポートキューは出力ポート１４ｂから出力されるべき高優先パケットを保持する。
【００２６】
低優先キュー２４は、低優先パケットを出力ポート単位かつＶＬＡＮ単位に保持する出力ポート・ＶＬＡＮ単位キュー２８を含む。例えば、出力ポート・ＶＬＡＮ単位キュー２８としての、第１出力ポートキューの第１ＶＬＡＮキューは、出力ポート１４ａから出力されるべき低優先パケットであって、第１のＶＬＡＮに属する（例えばＶＩＤ＝１が設定された）低優先パケットを保持する。第１出力ポートキューの第２ＶＬＡＮキューは、出力ポート１４ａから出力されるべき低優先パケットであって、第２のＶＬＡＮに属する（例えばＶＩＤ＝２が設定された）低優先パケットを保持する。同様に、出力ポート・ＶＬＡＮ単位キュー２８の第２出力ポートキューも各ＶＬＡＮ用のキュー（不図示）を含み、出力ポート１４ｂから出力されるべき低優先パケットをＶＬＡＮ単位に保持する。
【００２７】
図１に戻り、外部メモリ８０は、基盤回路１０の外部に設けられたメモリであり、内部メモリ２０よりアクセス速度が低速である一方、内部メモリ２０より容量が大きいメモリである。図４は、外部メモリ８０の構成を模式的に示す。外部メモリ８０は、低優先パケットを入力ポート単位かつＶＬＡＮ単位に保持する入力ポート・ＶＬＡＮ単位キュー８２を含む。例えば、入力ポート・ＶＬＡＮ単位キュー８２としての、第１入力ポートキューの第１ＶＬＡＮキューは、入力ポート１２ａから入力された低優先パケットであって、第１のＶＬＡＮに属する（例えばＶＩＤ＝１が設定された）低優先パケットを保持する。また第１入力ポートキューの第２ＶＬＡＮキューは、入力ポート１２ａから入力された低優先パケットであって、第２のＶＬＡＮに属する（例えばＶＩＤ＝２が設定された）低優先パケットを保持する。同様に、入力ポート・ＶＬＡＮ単位キュー８２の第２入力ポートキューも各ＶＬＡＮ用のキュー（不図示）を含み、入力ポート１２ｂから入力された低優先パケットをＶＬＡＮ単位に保持する。
【００２８】
図１に戻り、スケジューラ１８ａ〜スケジューラ１８ｃは、出力ポート１４ａ〜出力ポート１４ｃのそれぞれと予め対応づけられており、各々に対応づけられた出力ポートからのパケットの送出を制御する。スケジューラ１８ａ〜スケジューラ１８ｃのそれぞれは、ＳＰスケジューラおよびＷＲＲスケジューラとして機能し、内部メモリ２０に設けられたキューのうち、自身に対応づけられた出力ポート用のキューからパケットを読出す。具体的には、内部メモリ２０の出力ポート単位キュー２６からは高優先パケットを、内部メモリ２０の出力ポート・ＶＬＡＮ単位キュー２８からは低優先パケットを読出す。その際には高優先パケットを絶対優先として読出す。また、出力ポート・ＶＬＡＮ単位キュー２８から低優先パケットを読出す際には、ＷＲＲ規則テーブルに定められたＶＬＡＮ毎の重み付けにしたがって、各ＶＬＡＮ用のキューから順次低優先パケットを読出す。
【００２９】
図５は、ＷＲＲ規則テーブルを模式的に示す。同図のＷＲＲ規則は、ＶＩＤ＝１，２，３のパケットを、１：１０：３の比率で読出すよう定めたものである。スケジューラ１８は、ＶＩＤ＝１が設定された低優先パケットを、ＶＩＤ＝１用のキューから１個読出し、次にＶＩＤ＝２が設定された低優先パケットを、ＶＩＤ＝２用のキューから１０個読出し、さらにＶＩＤ＝３が設定された低優先パケットを、ＶＩＤ＝３用のキューから３個読出してもよい。
【００３０】
図１に戻り、振分け処理部３０は、入力ポート１２において受信されたパケットを、当該パケットの優先度および内部メモリ２０の空き状況に応じて振分け、内部メモリ２０もしくは外部メモリ８０へ格納する。
【００３１】
図６は、図１の振分け処理部３０の詳細な構成を示すブロック図である。振分け処理部３０は、優先度振分け部３２と、高優先パケット振分け部３４と、高優先パケット書込み制御部３６と、内部キュー監視部３８と、外部キュー監視部４０と、メモリ振分け部４２と、低優先パケット振分け部４４と、低優先パケット書込み制御部４６と、外部キュー振分け部４８と、外部メモリ書込み制御部５０と、外部メモリ読出し制御部５２と、コピー制御部５４と、内部キュー振分け部５６を含む。
【００３２】
優先度振分け部３２は、パケットの優先度ビットに応じて、当該パケットが高優先パケットと低優先パケットのいずれであるかを判定する。具体的には、ＶＬＡＮタグのＰＣＰフィールドの値が４以上であれば高優先パケットと判定し、４未満であれば低優先パケットと判定する。優先度振分け部３２は、高優先パケットを高優先パケット振分け部３４へ渡し、低優先パケットをメモリ振分け部４２へ渡す。
【００３３】
高優先パケット振分け部３４は、高優先パケットの装置内ヘッダの出力ポート情報にしたがって、当該パケットを格納すべき内部メモリ２０の出力ポート単位キュー２６を決定する。高優先パケット書込み制御部３６は、高優先パケット振分け部３４により決定された内部メモリ２０の出力ポート単位キュー２６へ高優先パケットを格納する。
【００３４】
内部キュー監視部３８は、内部メモリ２０の出力ポート・ＶＬＡＮ単位キュー２８を監視し、各キューのキュー長（すなわちパケット保持状況）を管理する。言い換えれば、各キューの空き状況を管理する。具体的には、内部キュー監視部３８は、出力ポート・ＶＬＡＮ単位キュー２８の各キューについて、新たなパケットを格納可能な空き容量が所定の閾値（以下、「内部キュー閾値」とも呼ぶ。）以上か否かを判定し、空き容量が内部キュー閾値未満のキューを、新たなパケットの格納ができない満杯キューとして特定する。言い換えれば、内部キュー監視部３８は、各キューのキュー長が所定の閾値未満か否かを判定する。
【００３５】
外部キュー監視部４０は、外部メモリ８０の入力ポート・ＶＬＡＮ単位キュー８２を監視し、各キューのキュー長を管理する。言い換えれば、各キューの空き状況を管理する。具体的には、外部キュー監視部４０は、入力ポート・ＶＬＡＮ単位キュー８２の各キューについて、新たなパケットを格納可能な空き容量が所定の閾値（以下、「外部キュー閾値」とも呼ぶ。）以上か否かを判定し、空き容量が外部キュー閾値未満のキューを、新たなパケットの格納ができない満杯キューとして特定する。言い換えれば、外部キュー監視部４０は、各キューのキュー長が所定の閾値未満か否かを判定する。
【００３６】
例えば、内部キュー監視部３８および外部キュー監視部４０は、１つのキューに対して割り当てられた全記憶容量のうちパケットの格納に未使用の空き容量が所定割合（例えば１０％）未満となったキューを満杯キューとして特定してもよい。また、キューに格納可能なパケット数（例えば１２８パケット）のうち所定数（例えば１００パケット）以上のパケットを保持中のキューを満杯キューとして特定してもよい。言い換えれば、空き容量が２８パケット分の容量以下となったキューを満杯キューとして特定してもよい。
【００３７】
また上記の内部キュー閾値および外部キュー閾値は、スイッチ装置１００の開発者や運用者の経験、もしくはスイッチ装置１００を用いた実験により、適切な値が決定されてよい。なお、内部メモリ２０の使用効率が高まるよう、内部キュー閾値（ここでは空き容量の大きさの指標値であるとする）は小さい値が望ましい。しかし、過度に小さくすると内部キューのあふれ（その結果としてのパケットロス）が発生しうるため、内部メモリ２０の使用効率とパケットロス防止の比較考量により値が決定されることが望ましい。
【００３８】
また外部キュー監視部４０は、外部メモリ８０の入力ポート・ＶＬＡＮ単位キュー８２の各キューについて、保持中のパケット、言い換えれば、未読出しのパケットがあるか否かを判定する。
【００３９】
メモリ振分け部４２は、低優先パケットの出力ポートおよびＶＩＤにしたがって、当該低優先パケットの格納先候補である内部メモリ２０の出力ポート・ＶＬＡＮ単位キュー２８（以下、「対応内部キュー」とも呼ぶ。）を特定する。また、低優先パケットの入力ポートおよびＶＩＤにしたがって、当該低優先パケットの格納先候補である外部メモリ８０の入力ポート・ＶＬＡＮ単位キュー８２（以下、「対応外部キュー」とも呼ぶ。）を特定する。
【００４０】
メモリ振分け部４２は、内部キュー監視部３８および外部キュー監視部４０による監視結果にもとづいて、対応内部キューが満杯キューでなく、かつ、対応外部キューのキュー長が０（未読出しのパケットがない）場合に、低優先パケットの格納先を対応内部キューに決定する。そして、低優先パケットを低優先パケット振分け部４４に渡す。対応内部キューが満杯キューであり、もしくは対応外部キューに未読出しのパケットが存在する場合は、低優先パケットの格納先を対応外部キューに決定して、低優先パケットを外部キュー振分け部４８に渡す。この構成により、先に受け付けられて外部メモリ８０に格納された低優先パケットが、それより後に受け付けられた低優先パケットよりも後に外部へ出力されてしまうことを防止できる。
【００４１】
低優先パケット振分け部４４は、低優先パケットの装置内ヘッダの出力ポート情報およびＶＩＤにしたがって、当該パケットを格納すべき内部メモリ２０の出力ポート・ＶＬＡＮ単位キュー２８（すなわち対応内部キュー）を決定する。低優先パケット書込み制御部４６は、低優先パケット振分け部４４により決定された内部メモリ２０の出力ポート・ＶＬＡＮ単位キュー２８へ低優先パケットを格納する。
【００４２】
外部キュー振分け部４８は、低優先パケットの装置内ヘッダの入力ポート情報およびＶＩＤにしたがって、当該パケットを格納すべき外部メモリ８０の入力ポート・ＶＬＡＮ単位キュー８２（すなわち対応外部キュー）を決定する。外部キュー監視部４０による監視結果にもとづいて対応外部キューが満杯キューでない場合、外部キュー振分け部４８は低優先パケットを外部メモリ書込み制御部５０へ渡し、外部メモリ書込み制御部５０は低優先パケットを対応外部キューへ格納する。対応外部キューが満杯キューである場合、外部キュー振分け部４８は低優先パケットを廃棄する。
【００４３】
外部メモリ読出し制御部５２は、不図示のＷＲＲ規則テーブルを参照して、当該テーブルに定められたＶＬＡＮ毎の重み付けにしたがって、入力ポート・ＶＬＡＮ単位キュー８２における各ＶＬＡＮ用のキューから低優先パケットを読出す。外部メモリ読出し制御部５２は、入力ポート単位に並行して低優先パケットを読出す一方、１つの入力ポートキューにおける各ＶＬＡＮ用のキューからＷＲＲ規則にしたがって低優先パケットを順次読出す。なお、外部メモリ読出し制御部５２が参照するＷＲＲ規則テーブルは、図５と同様に、ＶＩＤと重みを対応づけたものである。
【００４４】
コピー制御部５４は、外部メモリ読出し制御部５２により読出された低優先パケットの装置内ヘッダの出力ポート情報にしたがって、低優先パケットを適宜コピー（マルチキャストコピー）する。
【００４５】
内部キュー振分け部５６は、低優先パケットの装置内ヘッダの出力ポート情報およびＶＩＤにしたがって、当該パケットを格納すべき内部メモリ２０の出力ポート・ＶＬＡＮ単位キュー２８（すなわち対応内部キュー）を決定する。内部キュー監視部３８による監視結果にもとづいて対応内部キューが満杯キューでない場合、内部キュー振分け部５６は低優先パケットを低優先パケット書込み制御部４６へ渡し、低優先パケット書込み制御部４６は低優先パケットを対応内部キューへ格納する。対応内部キューが満杯キューである場合、内部キュー振分け部５６は低優先パケットを廃棄する。
【００４６】
以上の構成によるスイッチ装置１００の動作を以下説明する。
図７は、スイッチ装置１００の動作を示すフローチャートである。同図は、伝送路から入力されたパケットをパケットバッファへ書込むまでの動作を示している。入力ポート１２においてパケットが受け付けられると（Ｓ１０のＹ）、出力先決定部１６はパケットの出力ポートを決定し（Ｓ１２）、優先度振分け部３２はパケットの優先度を判定する。高優先パケットの場合（Ｓ１４のＹ）、高優先パケット振分け部３４は高優先パケットを格納すべき対応内部キューを決定し、高優先パケット書込み制御部３６は高優先パケットを対応内部キューへ格納する（Ｓ１６）。低優先パケットの場合（Ｓ１４のＮ）、振分け処理部３０は後述の振分け処理を実行する（Ｓ１８）。入力ポート１２においてパケットを受け付けなければ（Ｓ１０のＮ）、以降のステップをスキップして本図のフローを終了する。
【００４７】
図８は、図７のＳ１８の振分け処理を詳細に示すフローチャートである。メモリ振分け部４２は、低優先パケットの対応内部キューのキュー長を内部キュー監視部３８から取得し、低優先パケットの対応内部キューのキュー長を外部キュー監視部４０から取得する。対応内部キューの空き容量が内部キュー閾値以上で（Ｓ２０のＹ）、対応外部キューのキュー長が０の場合（Ｓ２２のＹ）、メモリ振分け部４２は対応内部キューへの格納を決定する。そして低優先パケット振分け部４４は低優先パケットを対応内部キューへ振分け、低優先パケット書込み制御部４６は低優先パケットを対応内部キューへ格納する（Ｓ２４）。
【００４８】
対応内部キューの空き容量が内部キュー閾値未満（Ｓ２０のＮ）、もしくは対応外部キューのキュー長が０より大きい場合（Ｓ２２のＮ）、メモリ振分け部４２は対応外部キューへの格納を決定する。そして対応外部キューの空き容量が外部キュー閾値以上であれば（Ｓ２６のＹ）、外部キュー振分け部４８は低優先パケットを対応外部キューへ振分け、外部メモリ書込み制御部５０は低優先パケットを対応外部キューへ格納する（Ｓ２８）。対応外部キューの空き容量が外部キュー閾値未満の場合は（Ｓ２６のＮ）、低優先パケットは廃棄される（Ｓ３０）。
【００４９】
図９は、スイッチ装置１００の動作を示すフローチャートである。同図は、外部メモリ８０から低優先パケットを読出して内部メモリ２０へ格納する動作を示しており、入力ポート・ＶＬＡＮ単位キュー８２に対して入力ポート単位に並行して実行されてもよい。
【００５０】
外部メモリ読出し制御部５２は、外部メモリ８０の入力ポート・ＶＬＡＮ単位キュー８２にパケットが格納されていることを検出すると（Ｓ４０のＹ）、ＶＬＡＮ毎の重み付けにしたがってパケットを読出す（Ｓ４２）。コピー制御部５４は、外部メモリ８０から読出されたパケットをその出力ポート数分、コピーする（Ｓ４４）。内部キュー振分け部５６は低優先パケットを格納すべき対応内部キューを特定し（Ｓ４６）、その対応内部キューの空き容量が内部キュー閾値以上であれば（Ｓ４８のＹ）、低優先パケット書込み制御部４６は低優先パケットを対応内部キューへ格納する（Ｓ５０）。対応内部キューの空き容量が内部キュー閾値未満であれば（Ｓ４８のＮ）、低優先パケットは廃棄される（Ｓ５２）。外部メモリ８０の入力ポート・ＶＬＡＮ単位キュー８２にパケットが格納されていない、すなわち入力ポート・ＶＬＡＮ単位キュー８２に格納された全パケットが読出し済みであれば（Ｓ４０のＮ）、以降のステップをスキップして本図のフローを終了する。
【００５１】
図１０は、スイッチ装置１００の動作を示すフローチャートである。同図は、内部メモリ２０からパケットを読出して伝送路へ送出する動作を示しており、典型的にはスケジューラ１８ａ〜スケジューラ１８ｃのそれぞれが並行して実行する。以下では、出力ポート１４ａに対応づけられたスケジューラ１８ａの動作として説明する。
【００５２】
スケジューラ１８ａは、出力ポート１４ａに対応する出力ポート単位キュー２６に高優先パケットが格納されていることを検出すると（Ｓ６０のＹ）、出力ポート１４ａに対応する出力ポート・ＶＬＡＮ単位キュー２８に低優先パケットが格納されているか否かにかかわらず、出力ポート単位キュー２６から高優先パケットを読出す（Ｓ６２）。出力ポート１４ａに対応する出力ポート単位キュー２６に高優先パケットが未格納であり（Ｓ６０のＮ）、出力ポート１４ａに対応する出力ポート・ＶＬＡＮ単位キュー２８に低優先パケットが格納されていることを検出すると（Ｓ６４のＹ）、出力ポート・ＶＬＡＮ単位キュー２８からＷＲＲ規則にしたがって低優先パケットを読出す（Ｓ６６）。スケジューラ１８ａは、内部メモリ２０から読出した高優先パケットもしくは低優先パケットを、出力ポート１４ａから伝送路へ送出させる（Ｓ６８）。出力ポート１４ａに対応する出力ポート単位キュー２６および出力ポート・ＶＬＡＮ単位キュー２８にパケットが未格納であれば（Ｓ６４のＮ）、以降のステップをスキップして本図のフローを終了する。
【００５３】
第１の実施の形態のスイッチ装置１００によれば、外部メモリ８０に優先して内部メモリ２０をパケットバッファとして選択することで高速なメモリアクセスを実現する。また、小容量の内部メモリ２０の空きが少なくなった場合は大容量の外部メモリ８０をパケットバッファとして選択することでバーストトラヒックも吸収することが容易になる。言い換えれば、バーストトラヒックに伴うパケットロスを抑制することができる。また、優先的に内部メモリ２０を選択しつつ、外部メモリ８０を補完的に用いることで、外部メモリ８０の個数を低減でき、装置の小型化・省消費電力化に対応が容易になる。
【００５４】
またスイッチ装置１００によれば、高優先パケットは必ず内部メモリ２０へ格納し、低優先パケットは内部メモリ２０の空き状況に応じて格納先を内部メモリ２０もしくは外部メモリ８０とする。これにより、高優先パケットのスイッチ処理を優先しつつ、高優先パケットのスイッチ処理終了待ちの低優先パケットの数が増加しても、低優先パケットの廃棄を抑制することができる。
【００５５】
またスイッチ装置１００によれば、各入力ポートに対応するキューを外部メモリ８０に設け、外部メモリ８０に対してパケットの入力ポートを基準としてパケットを格納する。そして、外部メモリ８０からパケットを読出した後にパケットの出力ポートの数に応じてパケットをコピーする。これにより、外部メモリ８０に格納すべきパケット数を低減でき、アクセス速度が比較的低速な外部メモリ８０を効率的に使用できる。
【００５６】
（第２の実施の形態）
第２の実施の形態のスイッチ装置１００は、外部メモリ８０から読出した低優先パケットを、内部メモリ２０の低優先キュー２４へ書込み可能となるまで保留させるための待ち合せバッファをさらに備える点で第１の実施の形態とは異なる。以下、相違点を中心に説明し、共通点の説明は省略する。
【００５７】
図１１は、第２の実施の形態のスイッチ装置１００の特徴部分を示す。他の構成は図１〜図６と同じである。内部メモリ２０は、低優先パケットを一時的に保持するための記憶領域である待ち合せバッファ２９をさらに有する。図１１には不図示であるが、待ち合せバッファ２９は、低優先キュー２４と同様に、出力ポート単位かつＶＬＡＮ単位の複数のキューを含む。言い換えれば、待ち合せバッファ２９は、出力ポート・ＶＬＡＮ単位キュー２８の各キューに対応する複数の待ち合せキューを含む。
【００５８】
内部キュー振分け部５６は、外部メモリ８０から読出された低優先パケットについて、その出力ポート情報およびＶＩＤに対応する待ち合せキュー（以下、「対応待ち合せキュー」とも呼ぶ。）を特定し、当該低優先パケットを対応待ち合せキューへ格納する。外部メモリ８０から読出された低優先パケットがマルチキャスト送信パケットである場合は、コピー制御部５４により当該パケットはコピーされ、内部キュー振分け部５６は、コピーされた各パケットに対応する複数の対応待ち合せキューへパケットを格納する。
【００５９】
内部キュー振分け部５６は、内部キュー監視部３８による監視結果にもとづいて、パケットを保持する対応待ち合せキューに対応する対応内部キューの空き状況を確認する。対応内部キューが満杯キューでない場合、対応待ち合せキューから低優先パケットを読出して低優先パケット書込み制御部４６へ渡し、その低優先パケットを対応内部キューへ格納させる。その一方、対応内部キューが満杯キューであった場合は、対応待ち合せキューから低優先パケットを読出すことなく、対応待ち合せキューに低優先パケットを保持させた状態を維持する。なお内部キュー振分け部５６は、パケットを保持する対応待ち合せキューに対応する対応内部キューの空き状況を定期的に繰り返し確認し、対応内部キューの満杯状態が解消されると、対応待ち合せキューに保留されたパケットを読出して対応内部キューへ転送する。
【００６０】
内部キュー振分け部５６は、待ち合せバッファ２９が空でない場合、すなわち待ち合せバッファ２９にパケットが保留されている場合、外部メモリ読出し制御部５２に対して、パケット読出しを抑止するよう指示するためのＮｏｔＥｍｐｔｙ通知を行う。以下では、ＮｏｔＥｍｐｔｙ通知として内部キュー振分け部５６から外部メモリ読出し制御部５２へ送信される信号を「読出し抑止指示」と呼ぶ。外部メモリ読出し制御部５２は、読出し抑止指示を受け付けると、外部メモリ８０からの低優先パケットの読出しを抑制する。
【００６１】
内部キュー振分け部５６は、待ち合せバッファ２９が空になると、すなわち待ち合せバッファ２９に保留された全てのパケットを読出すと、読出し抑止指示の送信を中止する。外部メモリ読出し制御部５２は、読出し抑止指示を受け付けていないとき、入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しを実行する。例えば、内部キュー振分け部５６からの読出し停止指示が途切れた場合に、パケット読出しを再開する。
【００６２】
第２の実施の形態のスイッチ装置１００によれば、第１の実施の形態において既述した効果に加え、内部メモリ２０における出力ポート・ＶＬＡＮ単位キュー２８が満杯状態であっても低優先パケットの廃棄を抑制できるという効果を奏する。すなわち、出力ポート・ＶＬＡＮ単位キュー２８が満杯状態の場合、外部メモリ８０から読出された低優先パケットを待ち合せバッファ２９に保留しておくとともに、外部メモリ８０から新たな低優先パケットの読出しを抑制するため、大容量の外部メモリ８０に空きがある限り、低優先パケットの廃棄を防ぐことができる。
【００６３】
変形例として、内部キュー振分け部５６は、読出し抑止指示において、パケットを保持する待ち合せキューに対応づけられたＶＩＤを指定してもよい。すなわち、内部キュー振分け部５６は、ＶＬＡＮ単位で読出し抑止指示を送信してもよい。外部メモリ読出し制御部５２は、読出し抑止指示により指定されたＶＩＤに対応する入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しを停止してもよく、読出し抑止指示で指定対象外のＶＩＤに対応する入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しは継続してもよい。
【００６４】
別の変形例として、内部キュー振分け部５６は、待ち合せバッファ２９が空になると、パケット読出しを再開させるための信号（以下、「読出し再開指示」とも呼ぶ。）を外部メモリ読出し制御部５２へ送信してもよい。この場合、外部メモリ読出し制御部５２は、読出し再開指示を受け付けると、外部メモリ８０からの低優先パケットの読出しを再開する。なお、読出し再開指示においても、空になった待ち合せキューに対応するＶＩＤが指定されてもよく、外部メモリ読出し制御部５２は、読出し再開指示により指定されたＶＩＤに対応する入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しを再開してもよい。
【００６５】
さらに別の変形例として、外部メモリ読出し制御部５２は、待ち合せバッファ２９にパケットが保持されているか否かを自立的に監視してもよい。そして、待ち合せバッファ２９にパケットが保持されていることを検出すると、外部メモリ８０からの低優先パケットの読出しを抑制してもよい。また待ち合せバッファ２９が空になったことを検出すると、外部メモリ８０からの低優先パケットの読出しを再開してもよい。
【００６６】
また、外部メモリ読出し制御部５２は、パケットを保持する待ち合せキューに対応づけられたＶＩＤに対応する入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しを停止してもよい。その一方、パケットを保持する待ち合せキューに対応づけられたＶＩＤ以外のＶＩＤに対応する入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しは継続してもよい。また、特定のＶＩＤに対応する入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しを停止した後、そのＶＩＤに対応する待ち合せキューが空になったことを検出すると、そのＶＩＤに対応する入力ポート・ＶＬＡＮ単位キュー８２からの低優先パケットの読出しを再開してもよい。
【００６７】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００６８】
上記実施の形態では、スイッチ装置として、イーサネットフレームのスイッチ処理を実行するレイヤ２スイッチを例示したが、レイヤ３スイッチやレイヤ４スイッチ等、他の種類のスイッチ装置に対しても本発明の技術思想を適用可能であり、同様の効果を奏する。また、スイッチ処理の対象とするパケットもイーサネットフレームに制限されず、ＩＰパケット等、他の種類の通信データの場合にも本発明の技術思想を適用可能であり、同様の効果を奏する。
【００６９】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。例えば、請求項に記載の第２の書込み制御部は、実施の形態の記載の内部キュー振分け部５６と低優先パケット書込み制御部４６の連携により実現されてもよい。
【符号の説明】
【００７０】
１０  基盤回路、  １２  入力ポート、  １４  出力ポート、  １６  出力先決定部、  １８  スケジューラ、  ２０  内部メモリ、  ２９  待ち合せバッファ、  ３０  振分け処理部、  ３２  優先度振分け部、  ３４  高優先パケット振分け部、  ３６  高優先パケット書込み制御部、  ４２  メモリ振分け部、  ４４  低優先パケット振分け部、  ４６  低優先パケット書込み制御部、  ４８  外部キュー振分け部、  ５０  外部メモリ書込み制御部、  ５２  外部メモリ読出し制御部、  ５６  内部キュー振分け部、  ８０  外部メモリ、  １００  スイッチ装置。
【図１】
0005631850.tif 000002
【図２】
0005631850.tif 000003
【図３】
0005631850.tif 000004
【図４】
0005631850.tif 000005
【図５】
0005631850.tif 000006
【図６】
0005631850.tif 000007
【図７】
0005631850.tif 000008
【図８】
0005631850.tif 000009
【図９】
0005631850.tif 000010
【図１０】
0005631850.tif 000011
【図１１】
0005631850.tif 000012