(57)【特許請求の範囲】
【請求項１】
所定の仮想ネットワークに属する装置からパケットを受信して、他の装置へ中継する中継装置であって、
パケットを中継する優先順位を示す優先度と仮想ネットワークを識別するためのＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューと、
優先度とＶＬＡＮ番号との組合せに対応付けて、前記キューを識別するためのキュー番号を記憶するキュー番号記憶手段と、
優先度に対応付けて、該優先度に対応する複数のキューに蓄積されているパケット蓄積量の総和である総パケット蓄積量を記憶する蓄積量記憶手段と、
キュー番号に対応付けて、総パケット蓄積量の閾値を記憶する閾値記憶手段と、
パケットを受信した場合に、該パケットに設定されているＶＬＡＮ番号と優先度との組合せに対応付けて前記キュー番号記憶手段に記憶されているキュー番号が示すキューに、該パケットを格納させることを決定する格納先キュー決定手段と、
前記パケットに設定されている優先度に対応付けて前記蓄積量記憶手段に記憶されている総パケット蓄積量と、前記格納先キュー決定手段によって決定されたキューである格納先キューを示すキュー番号に対応付けて前記閾値記憶手段に記憶されている閾値とに基づいて、前記パケットを廃棄する輻輳制御手段と、
を備えたことを特徴とする中継装置。
【請求項２】
前記輻輳制御手段は、前記総パケット蓄積量が前記閾値より小さい場合に、前記パケットを前記格納先キューに格納し、前記総パケット蓄積量が前記閾値以上である場合に、前記パケットを廃棄することを特徴とし、
前記輻輳制御手段によってキューに格納されたパケットを、前記キューに対応付けられた優先度に基づいて他の装置へ送信するパケット送信手段をさらに備えたことを特徴とする請求項１に記載の中継装置。
【請求項３】
前記パケット送信手段は、同一の優先度に対応付けられた複数のキューから、ラウンドロビン方式によってパケットを取り出すラウンドロビン制御手段と、前記ラウンドロビン制御手段によって取り出されたパケットを、優先度の高い順番に前記他の装置へ送信する優先制御送信手段とを備えたことを特徴とする請求項２に記載の中継装置。
【請求項４】
前記ラウンドロビン制御手段は、前記ラウンドロビン方式として、不足ラウンドロビン方式または加重ラウンドロビン方式のいずれかによって同一の優先度に対応付けられた複数のキューからパケットを取り出すことを特徴とする請求項３に記載の中継装置。
【請求項５】
所定の仮想ネットワークに属する装置からパケットを受信して、他の装置へ中継する中継装置におけるパケット中継方法であって、
前記中継装置が、
パケットを中継する優先順位を示す優先度と、仮想ネットワークを識別するためのＶＬＡＮ番号との組合せに対応付けて、優先度とＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューを識別するためのキュー番号をキュー番号記憶部に記憶するキュー番号記憶工程と、
優先度に対応付けて、該優先度に対応する複数のキューに蓄積されているパケット蓄積量の総和である総パケット蓄積量を蓄積量記憶部に記憶する蓄積量記憶工程と、
キュー番号に対応付けて、総パケット蓄積量の閾値を閾値記憶部に記憶する閾値記憶工程と、
パケットを受信した場合に、該パケットに設定されているＶＬＡＮ番号と優先度との組合せに対応付けて前記キュー番号記憶部に記憶されているキュー番号が示すキューに、該パケットを格納させることを決定する格納先キュー決定工程と、
前記パケットに設定されている優先度に対応付けて前記蓄積量記憶部に記憶されている総パケット蓄積量と、前記格納先キュー決定工程によって決定されたキューである格納先キューを示すキュー番号に対応付けて前記閾値記憶部に記憶されている閾値とに基づいて、前記パケットを廃棄する輻輳制御工程と、
を含んだことを特徴とするパケット中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の仮想ネットワークに属する装置から受信したパケットを他の装置へ中継する中継装置およびパケット中継方法に関する。
【背景技術】
【０００２】
近年、スイッチやルータなどのパケットを中継する中継装置には、ＱｏＳ（Quality  of  Service）と呼ばれる通信の品質を確保するための機能を有するものがある。通信の品質を確保するための機能としては、各ユーザと契約した最低帯域幅を保証したデータ伝送を実現する帯域制御や、パケットに設定されている優先度が高い順番にパケットを中継する優先制御や、ネットワークの負荷状況に応じて転送速度を制御する輻輳制御などがある。
【０００３】
かかる中で、輻輳制御では、パケットに設定されている優先度ごとに、パケット受信量が所定の閾値以上であるか否かを判定し、パケット受信量が所定の閾値に達した場合（輻輳時）に、その後に受信するパケットを廃棄することが行われる。
【０００４】
【特許文献１】特開２００４−１６６０８０号公報
【特許文献２】特開平１１−１１２５４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、近年では、物理ネットワーク内に仮想的なネットワークを形成するＶＬＡＮ（Virtual  Local  Area  Network）が普及しつつあり、ＶＬＡＮを提供する通信事業者やＶＬＡＮを利用するユーザから、仮想ネットワークごとに輻輳制御を行いたいという要望がある。
【０００６】
しかしながら、上記従来技術では、優先度ごとに輻輳制御を行うことができるものの、仮想ネットワークごとに輻輳制御を行うことができないという問題があった。具体的には、従来の中継装置では、所定の優先度が設定されているパケットの受信量が閾値を超えた場合、その後、どの仮想ネットワークに属する装置から送信されるパケットであっても、かかる優先度が設定されているパケットを廃棄する。このため、従来の中継装置による輻輳制御は、仮想ネットワークが異なる点は考慮されていなかった。
【０００７】
開示の技術は、上述した従来技術による問題点を解消するためになされたものであり、仮想ネットワークごとに輻輳制御を行うことができる中継装置およびパケット中継方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本願に開示する中継装置は、所定の仮想ネットワークに属する装置からパケットを受信して、他の装置へ中継する中継装置であって、パケットを中継する優先順位を示す優先度と仮想ネットワークを識別するためのＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューと、優先度とＶＬＡＮ番号との組合せに対応付けて、前記キューを識別するためのキュー番号を記憶するキュー番号記憶手段と、優先度に対応付けて、該優先度に対応する複数のキューに蓄積されているパケット蓄積量の総和である総パケット蓄積量を記憶する蓄積量記憶手段と、キュー番号に対応付けて、総パケット蓄積量の閾値を記憶する閾値記憶手段と、パケットを受信した場合に、該パケットに設定されているＶＬＡＮ番号と優先度との組合せに対応付けて前記キュー番号記憶手段に記憶されているキュー番号が示すキューに、該パケットを格納させることを決定する格納先キュー決定手段と、前記パケットに設定されている優先度に対応付けて前記蓄積量記憶手段に記憶されている総パケット蓄積量と、前記格納先キュー決定手段によって決定されたキューである格納先キューを示すキュー番号に対応付けて前記閾値記憶手段に記憶されている閾値とに基づいて、前記パケットを廃棄する輻輳制御手段と、を備えたことを要件とする。
【０００９】
なお、本願に開示する中継装置の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
【発明の効果】
【００１０】
本願に開示した中継装置によれば、仮想ネットワークごとに輻輳制御を行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に、本願に開示する中継装置およびパケット中継方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、本願に開示する中継装置およびパケット中継方法をスイッチに適用した例について説明するが、本願に開示する中継装置およびパケット中継方法は、ルータ等の他の中継装置に適用することも可能である。
【実施例１】
【００１２】
まず、実施例１に係るスイッチの概要について説明する。図１は、実施例１に係るスイッチの概要を説明するための図である。同図に示すように、実施例１に係るスイッチ１０は、蓄積量記憶部１５７、閾値記憶部１５８、キュー群１５０−０等を有する。
【００１３】
蓄積量記憶部１５７は、優先度に対応付けて、かかる優先度に対応するキュー群１５０−０等が有するすべてのキュー１５１−０等に蓄積されているパケットのサイズの総和を記憶する。例えば、蓄積量記憶部１５７は、優先度「０」に対応付けて、キュー１５１−０〜１５４−０に蓄積されているパケットのサイズの総和（以下、「総パケット蓄積量」という）を記憶し、優先度「１」に対応付けて、キュー１５１−１〜１５４−１に蓄積されているパケットのサイズの総和を記憶する。閾値記憶部１５８は、各々のキュー１５１−０等ごとに、総パケット蓄積量の閾値を記憶する。
【００１４】
キュー群１５０−０等は、パケットに設定される優先度ごとに、スイッチ１０に設けられる。同図に例示したスイッチ１０は、受信するパケットに設定される優先度の範囲が「０」〜「７」であるものとして、８個のキュー群１５０−０〜１５０−７を有するものとする。なお、同図に示したキュー群１５０−０は、優先度「０」に対応し、キュー群１５０−１は、優先度「１」に対応する。
【００１５】
各々のキュー群１５０−０等は、複数のキューを有する。同図に示した例では、キュー群１５０−０は、４個のキュー１５１−０〜１５４−０を有し、キュー群１５０−１は、４個のキュー１５１−１〜１５４−１を有する。
【００１６】
なお、実施例１に係るスイッチ１０は、パケットを受信した場合に、かかるパケットを所定の記憶部（後述するストリームメモリ１６）に記憶させる。また、スイッチ１０は、ストリームメモリ１６に記憶されているパケットを他の装置へ中継する旨の命令（以下、「中継処理命令」という）をキュー１５１−０等に格納する。ただし、図１を用いた説明では、説明を簡単にするために、スイッチ１０は、パケットをキュー１５１−０等に格納するものとする。
【００１７】
このような構成の下、スイッチ１０は、パケットを受信した場合に、かかるパケットに設定されているＶＬＡＮ番号および優先度と、所定の記憶部（後述するキュー番号記憶部１７３）に記憶されている各種情報とに基づいて、受信したパケットを格納するキューを決定する。以下、スイッチ１０によって決定されたパケットの格納先のキューを「格納先キュー」と呼ぶこととする。
【００１８】
続いて、スイッチ１０は、蓄積量記憶部１５７から、受信したパケットに設定されている優先度に対応付けて記憶されている総パケット蓄積量を取得する。また、スイッチ１０は、閾値記憶部１５８から、受信したパケットの格納先キューに対応付けて記憶されている閾値を取得する。続いて、スイッチ１０は、取得した総パケット蓄積量と、閾値とを比較する。総パケット蓄積量が閾値よりも小さい場合、スイッチ１０は、受信したパケットを格納先キューに格納するとともに、パケットに設定されている優先度に対応付けて蓄積量記憶部１５７に記憶されている総パケット蓄積量を、格納するパケットのサイズ分だけ加算する。一方、総パケット蓄積量が閾値以上である場合、スイッチ１０は、受信したパケットを廃棄する。
【００１９】
かかるスイッチ１０による処理について、図１に示した例を用いて説明する。同図において、パケットＰ１１〜Ｐ１３は、ＶＬＡＮ番号に「Ａ」が設定されており、優先度に「０」が設定されているものとする。また、パケットＰ２１〜Ｐ２３は、ＶＬＡＮ番号に「Ｂ」が設定されており、優先度に「０」が設定されているものとする。また、閾値記憶部１５８に記憶されているキュー１５１−０の閾値が「１００」であり、キュー１５２−０の閾値が「２００」であるものとする。また、パケットＰ１１等を受信する前における蓄積量記憶部１５７の各総パケット蓄積量には、閾値記憶部１５８に記憶されている閾値よりも小さい値が記憶されているものとする。また、スイッチ１０は、上述したパケットを、パケットＰ１１、Ｐ１２、Ｐ１３、Ｐ２１、Ｐ２２、Ｐ２３の順に受信するものとする。
【００２０】
かかる場合に、スイッチ１０は、パケットＰ１１を受信すると、パケットＰ１１を、優先度「０」に対応するキュー群１５０−０内のキュー１５１−０に格納するとともに、蓄積量記憶部１５７に記憶されている優先度「０」の総パケット蓄積量を、パケットＰ１１のサイズ分だけ加算する。続いて、スイッチ１０は、パケットＰ１２を受信した場合に、パケットＰ１２をキュー１５１−０に格納するとともに、蓄積量記憶部１５７に記憶されている優先度「０」の総パケット蓄積量を、パケットＰ１２のサイズ分だけ加算する。
【００２１】
このとき、蓄積量記憶部１５７に記憶されている優先度「０」の総パケット蓄積量が「１１０」になり、閾値記憶部１５８に記憶されているキュー１５１−０の閾値「１００」を超えたものとする。かかる場合、スイッチ１０は、その後にパケットＰ１３を受信すると、パケットＰ１３を廃棄する。
【００２２】
続いて、スイッチ１０は、パケットＰ２１を受信した場合、優先度「０」の総パケット蓄積量「１１０」が、キュー１５２−０の閾値「２００」以上ではないため、パケットＰ２１をキュー１５２−０に格納するとともに、蓄積量記憶部１５７を更新する。同様に、スイッチ１０は、パケットＰ２２およびＰ２３を受信した場合に、優先度「０」の総パケット蓄積量「１１０」が、キュー１５２−０の閾値「２００」以上にならない限り、パケットＰ２２およびＰ２３をキュー１５２−０に格納するとともに、蓄積量記憶部１５７を更新する。
【００２３】
また、同図に示した例において、パケットＰ３１〜Ｐ３３は、ＶＬＡＮ番号に「Ａ」が設定されており、優先度に「１」が設定されているものとする。また、パケットＰ４１〜Ｐ４３は、ＶＬＡＮ番号に「Ｂ」が設定されており、優先度に「１」が設定されているものとする。また、閾値記憶部１５８に記憶されているキュー１５１−１の閾値が「２００」であり、キュー１５２−１の閾値が「３００」であるものとする。また、スイッチ１０は、上述したパケットを、パケットＰ３１、Ｐ３２、Ｐ３３、Ｐ４１、Ｐ４２、Ｐ４３の順に受信するものとする。
【００２４】
かかる場合に、スイッチ１０は、パケットＰ３１を受信すると、パケットＰ３１をキュー１５１−１に格納するとともに、蓄積量記憶部１５７に記憶されている優先度「１」の総パケット蓄積量を、パケットＰ３１のサイズ分だけ加算する。このとき、蓄積量記憶部１５７に記憶されている優先度「１」の総パケット蓄積量が「２１０」になり、閾値記憶部１５８に記憶されているキュー１５１−１の閾値「２００」以上になったとする。かかる場合、スイッチ１０は、その後にパケットＰ３２を受信すると、パケットＰ３２を廃棄する。
【００２５】
ここで、パケットＰ３３を受信する前に、スイッチ１０が、キュー１５１−１に蓄積されているパケットを他の装置へ送信したために、蓄積量記憶部１５７に記憶されている優先度「１」の総パケット蓄積量が「１９０」になったとする。すなわち、優先度「１」の総パケット蓄積量が、キュー１５１−１の閾値「２００」よりも小さくなったとする。かかる場合、スイッチ１０は、その後にパケットＰ３３を受信すると、優先度「１」の総パケット蓄積量「１９０」が、キュー１５２−０の閾値「２００」以上ではないため、パケットＰ３３をキュー１５１−１に格納するとともに、蓄積量記憶部１５７を更新する。
【００２６】
続いて、スイッチ１０は、パケットＰ４１およびパケットＰ４２を受信して、パケットＰ４１およびパケットＰ４２をキュー１５２−１に格納するとともに、蓄積量記憶部１５７を更新する。このとき、蓄積量記憶部１５７に記憶されている優先度「１」の総パケット蓄積量が「３１０」になり、閾値記憶部１５８に記憶されているキュー１５２−１の閾値「３００」以上になったとする。かかる場合、スイッチ１０は、その後にパケットＰ４３を受信すると、パケットＰ４３を廃棄する。
【００２７】
このように、実施例１に係るスイッチ１０は、優先度とＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューと、同一の優先度に対応付けられたキューに蓄積されているパケットのサイズの総和を記憶する蓄積量記憶部１５７と、キューごとにパケット蓄積量の閾値を記憶する閾値記憶部１５８とを有し、パケットを受信した場合に、かかるパケットに設定されている優先度に対応付けて蓄積量記憶部１５７に記憶されている総パケット蓄積量と、パケットの格納先キューに対応付けて閾値記憶部１５８に記憶されている閾値とに基づいて、パケットを廃棄するか否かを決定するので、仮想ネットワークごとに輻輳制御を行うことができる。
【００２８】
なお、上記では、ＶＬＡＮ番号が異なるパケットを異なるキューに格納する例について説明したが、ＶＬＡＮ番号が異なるパケットを同一のキューに格納するようにしてもよい。例えば、スイッチ１０は、ＶＬＡＮ番号に「Ａ」〜「Ｃ」が設定されているパケットをキュー１５１−０に格納し、ＶＬＡＮ番号「Ｄ」〜「Ｆ」をキュー１５１−１に格納するようにしてもよい。
【００２９】
これにより、いくつかの仮想ネットワークを１つの仮想ネットワークグループとして扱うことができ、仮想ネットワークグループごとに輻輳制御を行うことができる。例えば、同種の業務に用いられている複数の仮想ネットワークを、１つの仮想ネットワークグループとして輻輳制御を行うことができる。また、ＶＬＡＮの数が多数存在するようなネットワークであっても、ＶＬＡＮの数と同一のキューを設ける必要がなくなるので、スイッチ１０の構成を簡易にすることができる。
【００３０】
また、パケットが流通する時間帯が異なり、かつ、パケット蓄積量の閾値が同一である複数の仮想ネットワークを、１つの仮想ネットワークグループにすることで、資源（キュー）を有効に利用することができる。具体的には、互いにパケット蓄積量の閾値が同一であり、かつ、午前のみパケットが流通する仮想ネットワークＡと、午後のみパケットが流通する仮想ネットワークＢとが存在する場合、仮想ネットワークＡおよびＢを１つの仮想ネットワークグループにする。これにより、所定のキューを、午前は仮想ネットワークＡ上のパケットを中継処理する際に用い、午後は仮想ネットワークＢ上のパケットを中継処理する際に用いることができ、その結果、キューが使用されない時間が減少するので、資源（キュー）を有効に利用することができる。なお、ＶＬＡＮ番号が異なるパケットを同一のキューに格納することは、後述するキュー番号記憶部１７３に記憶されている各種情報を変更することで実現できる。
【００３１】
次に、実施例１に係るスイッチ１０が適用されるネットワークについて説明する。図２は、実施例１に係るスイッチ１０が適用されるネットワークの構成例を示す図である。同図に示すように、ネットワーク１は、サーバシステム２Ａ〜２Ｃと、記憶システム３Ａ〜３Ｃと、スイッチ１０Ａ〜１０Ｆを含むスイッチ群４と、ネットワークシステム５と、ルーティングシステム６とを有する。なお、ネットワーク１は、複数の仮想ネットワーク（ＶＬＡＮ）が形成されているものとする。
【００３２】
サーバシステム２Ａ〜２Ｃは、ホストコンピュータ等の情報処理装置であり、スイッチ１０Ａ〜１０Ｆのいずれかに接続されている。記憶システム３Ａ〜３Ｃは、ストレージ装置等のデータ入出力装置であり、スイッチ１０Ａ〜１０Ｆのいずれかに接続されている。ネットワークシステム５は、ネットワーク１の保守や監視を行うための装置であり、スイッチ１０Ｅに接続されている。ルーティングシステム６は、ネットワーク１と、他のネットワークとの間でデータの中継処理を行うための装置であり、スイッチ１０Ｆに接続されている。
【００３３】
スイッチ１０Ａ〜１０Ｆは、データの中継処理を行う中継装置であり、自装置以外の他のスイッチ１０Ａ〜１０Ｆや、サーバシステム２Ａ〜２Ｃ等と接続されている。スイッチ１０Ａ〜１０Ｆは、仮想ネットワークが形成されているネットワーク１内において、パケットにＶＬＡＮタグを挿入または削除して中継処理を行う。
【００３４】
なお、図２に示したネットワーク１の構成はあくまで一例であり、実施例１に係るスイッチ１０Ａ〜１０Ｆが適用されるネットワークの構成例は、同図に示したネットワークの構成に限られない。例えば、同図に示したネットワーク１では、３台のサーバシステム２Ａ〜２Ｃと、３台の記憶システム３Ａ〜３Ｃと、６台のスイッチ１０Ａ〜１０Ｆと、１台のネットワークシステム５と、１台のルーティングシステム６を有する例を示したが、各々の装置の台数は、同図に示した例に限られない。
【００３５】
次に、実施例１に係るスイッチ１０の構成について説明する。図３は、実施例１に係るスイッチ１０の構成を示すブロック図である。なお、図３に示したスイッチ１０は、図２に示したスイッチ１０Ａ〜１０Ｆに対応する。図３に示すように、スイッチ１０は、受信ポート１１ａ〜１１ｃと、送信ポート１２ａ〜１２ｃと、スイッチコア１３とを有する。
【００３６】
受信ポート１１ａ〜１１ｃは、所定の装置（例えば、サーバシステム２Ａ〜２Ｃや、他のスイッチ）からパケットを受信するインタフェースである。各々の受信ポート１１ａ〜１１ｃは、所定の仮想ネットワークに属する装置からパケットを受信する。例えば、受信ポート１１ａは、仮想ネットワークＡ〜Ｅに属する装置からのみパケットを受信したり、受信ポート１１ｂは、仮想ネットワークＦ〜Ｊに属する装置からのみパケットを受信したりする。
【００３７】
送信ポート１２ａ〜１２ｃは、受信ポート１１ａ〜１１ｃによって受信されたパケットを他の装置へ送信するインタフェースである。各々の送信ポート１２ａ〜１２ｃは、所定の仮想ネットワークに属する装置に対してパケットを送信する。例えば、送信ポート１２ａは、仮想ネットワークＡ〜Ｅに属する装置に対してのみパケットを送信したり、送信ポート１２ｂは、仮想ネットワークＦ〜Ｊに属する装置に対してのみパケットを送信したりする。
【００３８】
なお、図３に示した例では、スイッチ１０が、３個の受信ポート１１ａ〜１１ｃと、３個の送信ポート１２ａ〜１２ｃとを有する例を示したが、スイッチ１０は、２個以下の受信ポートおよび送信ポートを有してもよいし、４個以上の受信ポートおよび送信ポートを有してもよい。
【００３９】
スイッチコア１３は、データの中継処理を担う機能部であり、受信ポートモジュール１４ａ〜１４ｃを含むポートモジュール群１４と、送信ポートモジュール１５ａ〜１５ｃを含むポートモジュール群１５と、ストリームメモリ１６と、記憶部１７と、制御部１８とを有する。
【００４０】
受信ポートモジュール１４ａ〜１４ｃは、受信ポート１１ａ〜１１ｃごとに設けられるモジュールであり、受信ポート１１ａ〜１１ｃからパケットを入力された場合に、かかるパケットをストリームメモリ１６に書き込むとともに、パケットのヘッダ情報を、制御部１８へ出力する。ここでいう「ヘッダ情報」とは、例えば、ＤＡ（Destination  Address：宛先ＭＡＣ（Media  Access  Control）アドレス）や、ＳＡ（Source  Address：送信元ＭＡＣアドレス）、ＶＬＡＮ番号、優先度などを示す。
【００４１】
なお、同図では、受信ポートモジュール１４ａが受信ポート１１ａに対応し、受信ポートモジュール１４ｂが受信ポート１１ｂに対応し、受信ポートモジュール１４ｃが受信ポート１１ｃに対応する例を示している。すなわち、受信ポートモジュール１４ａは、受信ポート１１ａによって受信されたパケットについて上述した処理を行うことになる。
【００４２】
送信ポートモジュール１５ａ〜１５ｃは、送信ポート１２ａ〜１２ｃごとに設けられるモジュールであり、ストリームメモリ１６に格納されているパケットを読み出して送信ポート１２ａ〜１２ｃに出力する。具体的には、送信ポートモジュール１５ａ〜１５ｃは、中継処理命令を格納するためのキューを複数有し、かかる中継処理命令に従って、ストリームメモリ１６に格納されているパケットを、送信ポート１２ａ〜１２ｃを介して他の装置へ送信する。送信ポートモジュール１５ａ〜１５ｃの構成については、後に詳述する。
【００４３】
なお、同図では、送信ポートモジュール１５ａが送信ポート１２ａに対応し、送信ポートモジュール１５ｂが送信ポート１２ｂに対応し、送信ポートモジュール１５ｃが送信ポート１２ｃに対応する例を示している。すなわち、送信ポートモジュール１５ａは、送信ポート１２ａに対してパケットを出力することになる。
【００４４】
ストリームメモリ１６は、メモリ等の記憶デバイスであり、受信ポートモジュール１４ａ〜１４ｃによって書き込まれたパケットを記憶する。ストリームメモリ１６は、記憶領域を所定のサイズの論理ブロックに分割して、論理ブロック単位にデータを記憶する。例えば、ストリームメモリ１６は、パケットのサイズが、１つの論理ブロックのサイズ以下である場合、かかるパケットを１つの論理ブロックに記憶する。一方、パケットのサイズが、１つの論理ブロックのサイズより大きい場合、ストリームメモリ１６は、かかるパケットを複数の論理ブロックに分割して記憶する。
【００４５】
記憶部１７は、メモリ等の記憶デバイスであり、タグメモリ１７１と、方路記憶部１７２と、キュー番号記憶部１７３とを有する。タグメモリ１７１は、ストリームメモリ１６の論理ブロックを管理するための各種情報を記憶する。
【００４６】
具体的には、タグメモリ１７１は、論理ブロックを識別するための論理ブロック番号を記憶する。また、タグメモリ１７１は、論理ブロック間の関係性を示す情報（以下、「リンク情報」という）を記憶する。ここで、タグメモリ１７１が記憶するリンク情報について例を挙げて説明する。例えば、１つのパケットＰ１０１が３個の論理ブロックＲ１〜Ｒ３に分割されて記憶されているとする。かかる場合、タグメモリ１７１は、パケットＰ１０１が論理ブロックＲ１〜Ｒ３に記憶されていることを示すリンク情報を記憶する。また、例えば、１つのデータが９個のパケットＰ２０１〜Ｐ２０９に分割されており、かかるパケットＰ２０１〜Ｐ２０９が複数の論理ブロックＲ１１〜Ｒ３０に格納されているとする。かかる場合、タグメモリ１７１は、パケットＰ１１〜Ｐ１９が論理ブロックＲ１１〜Ｒ３０に格納されていることを示すリンク情報を記憶する。
【００４７】
方路記憶部１７２は、パケットに設定されているＤＡに対応付けて、かかるパケットの出力先の送信ポートを識別するための番号（以下、受信ポート１１ａ〜１１ｃおよび送信ポート１２ａ〜１２ｃを識別するための番号を「ポート番号」という）を記憶する。方路記憶部１７２の一例を図４に示す。同図に示すように、方路記憶部１７２は、ＭＡＣアドレス、ポート番号といった項目を有する。ＭＡＣアドレスは、パケットに設定されているＤＡを示す。ポート番号は、対応するＭＡＣアドレスがＤＡに設定されているパケットの出力先の送信ポート１２ａ〜１２ｃのポート番号を示す。なお、以下では、図３に示した受信ポート１１ａ〜１１ｃおよび送信ポート１２ａ〜１２ｃに付した参照符号「１１ａ」〜「１１ｃ」および「１２ａ」〜「１２ｃ」をポート番号とする。
【００４８】
すなわち、図４に示した方路記憶部１７２の１行目は、ＤＡに「００：０１：０２：０３：０４：０５」が設定されているパケットが、ポート番号「１２ａ」が示す送信ポート１２ａに出力されることを示している。また、図４に示した方路記憶部１７２の２行目は、ＤＡに「００：０１：０２：０３：０４：０６」が設定されているパケットが、ポート番号「１２ｂ」が示す送信ポート１２ｂに出力されることを示している。
【００４９】
キュー番号記憶部１７３は、ＶＬＡＮ番号に対応付けて、優先度ごとに、中継処理命令を格納するキューを識別するためのキュー番号（以下、「ＱＩＤ：queue  ID」という）を記憶する。キュー番号記憶部１７３の一例を図５に示す。同図に示すように、キュー番号記憶部１７３は、ＶＬＡＮ番号、優先度、メンバポート番号、ＱＩＤ、指定閾値といった項目を有する。
【００５０】
ＶＬＡＮ番号は、仮想ネットワークを識別するための番号を示す。メンバポート番号は、ＶＬＡＮ番号が示す仮想ネットワーク上で流通するパケットを受信または送信する受信ポート１１ａ〜１１ｃおよび送信ポート１２ａ〜１２ｃのポート番号を示す。ＱＩＤは、対応するＶＬＡＮ番号および優先度が設定されているパケットに基づいて生成された中継処理命令の格納先キューのＱＩＤを示す。指定閾値は、スイッチ１０が受信可能なパケットサイズの閾値を示し、閾値の具体的な値は、後述する閾値記憶部１５８が記憶する。
【００５１】
すなわち、図５に示したキュー番号記憶部１７３の１〜８行目は、ＶＬＡＮ番号「１」が示す仮想ネットワーク上で流通するパケットを受信するポートが、受信ポート１１ａであり、流通するパケットを送信するポートが、送信ポート１２ａまたは送信ポート１２ｂであることを示している。また、図５に示したキュー番号記憶部１７３の１行目は、ＶＬＡＮ番号「１」かつ優先度「０」である中継処理命令が、ＱＩＤ「０」が示すキューに格納されることを示している。
【００５２】
制御部１８は、スイッチコア１３を全体制御する制御部であり、リンク情報取得部１８１と、方路決定部１８２と、格納先キュー決定部１８３と、パケット廃棄部１８４とを有する。リンク情報取得部１８１は、ポートモジュール群１４からヘッダ情報を入力された場合に、タグメモリ１７１から、かかるヘッダ情報を有するパケットのリンク情報を取得して、取得したリンク情報を格納先キュー決定部１８３へ出力する処理部である。
【００５３】
方路決定部１８２は、方路記憶部１７２に記憶されている各種情報に基づいて、受信したパケットを送信する送信ポートを決定する処理部である。具体的には、方路決定部１８２は、ポートモジュール群１４からヘッダ情報を入力された場合に、方路記憶部１７２から、ヘッダ情報に設定されているＤＡに対応付けて記憶されているポート番号を取得する。そして、方路決定部１８２は、取得したポート番号が示す送信ポート１２ａ〜１２ｃのいずれかに、かかるヘッダ情報を有するパケットを出力することを決定する。
【００５４】
例えば、方路記憶部１７２が図４に示した状態であり、方路決定部１８２が、ＤＡに「００：０１：０２：０３：０４：０５」が設定されているヘッダ情報Ｈ１を、ポートモジュール群１４から入力されたものとする。かかる場合、方路決定部１８２は、方路記憶部１７２からポート番号「１２ａ」を取得する。そして、方路決定部１８２は、取得したポート番号「１２ａ」が示す送信ポート１２ａに、ヘッダ情報Ｈ１を有するパケットを出力することを決定する。
【００５５】
格納先キュー決定部１８３は、キュー番号記憶部１７３に記憶されている各種情報に基づいて、中継処理命令を生成するとともに、生成した中継処理命令の格納先キューを決定する処理部である。
【００５６】
具体的には、格納先キュー決定部１８３は、ポートモジュール群１４からヘッダ情報を入力された場合に、キュー番号記憶部１７３から、かかるヘッダ情報に設定されているＶＬＡＮ番号と優先度との組合せに対応付けて記憶されているＱＩＤおよび指定閾値を取得する。取得されたＱＩＤが示すキューが、ヘッダ情報を有するパケットの格納先キューとなる。
【００５７】
続いて、格納先キュー決定部１８３は、入力されたヘッダ情報と、かかるヘッダ情報を有するパケットが記憶されているストリームメモリ１６上の論理ブロックを示す論理ブロック番号や、キュー番号記憶部１７３から取得したＱＩＤおよび指定閾値、リンク情報取得部１８１から入力されたリンク情報などを含む中継処理命令を生成する。なお、格納先キュー決定部１８３は、中継処理命令にパケットのサイズなどを含めてもよい。続いて、格納先キュー決定部１８３は、方路決定部１８２によって決定された送信ポート１２ａ〜１２ｃのいずれかに対応する送信ポートモジュール１５ａ〜１５ｃに、生成した中継処理命令を出力する。
【００５８】
例えば、方路記憶部１７２が図４に示した状態であり、キュー番号記憶部１７３が図５に示した状態であるものとする。また、制御部１８は、ポートモジュール群１４から、ＤＡ「００：０１：０２：０３：０４：０６」、ＶＬＡＮ番号「２」、かつ、優先度「７」が設定されているヘッダ情報Ｈ２を入力されたものとする。かかる場合、方路決定部１８２は、ヘッダ情報Ｈ２を有するパケットを送信ポート１２ｂに出力することを決定する。続いて、格納先キュー決定部１８３は、ＶＬＡＮ番号「２」と優先度「７」との組合せに対応付けてキュー番号記憶部１７３に記憶されているＱＩＤ「３」および指定閾値「ＴＨ７」を取得する。続いて、格納先キュー決定部１８３は、ＱＩＤ「３」および指定閾値「ＴＨ７」を含む中継処理命令を生成する。続いて、格納先キュー決定部１８３は、生成した中継処理命令を、方路決定部１８２によって決定された送信ポート１２ｂに対応する送信ポートモジュール１５ｂに出力する。
【００５９】
パケット廃棄部１８４は、後述する輻輳制御部１５９から、中継処理命令を廃棄した旨の情報（以下、「廃棄情報」という）を入力された場合に、かかる中継処理命令に含まれる論理ブロック番号が示す論理ブロックに記憶されているパケットを、ストリームメモリ１６から廃棄する処理部である。なお、輻輳制御部１５９による廃棄情報出力処理については、後に詳述する。
【００６０】
ここで、ストリームメモリ１６に記憶されているパケットを廃棄する手法の一例を説明する。例えば、パケット廃棄部１８４は、受信ポートモジュール１４ａ〜１４ｃのいずれかに対して、廃棄対象のパケットをストリームメモリ１６から読み出させる。ストリームメモリ１６は、記憶されている情報が読み出されると削除されるため、受信ポートモジュール１４ａ〜１４ｃによって読み出されることで、パケットが廃棄されることになる。
【００６１】
次に、図３に示した送信ポートモジュール１５ａ〜１５ｃの構成について説明する。図６は、図３に示した送信ポートモジュール１５ａ〜１５ｃの構成を示すブロック図である。なお、送信ポートモジュール１５ａ〜１５ｃは、いずれも同様の構成を有するため、ここでは、送信ポートモジュール１５ａの構成についてのみ説明する。
【００６２】
同図に示すように、送信ポートモジュール１５ａは、キュー群１５０−０〜１５０−７と、優先制御送信スケジューラ１５６と、蓄積量記憶部１５７と、閾値記憶部１５８と、輻輳制御部１５９とを有する。
【００６３】
キュー群１５０−０は、キュー１５１−０〜１５４−０と、ラウンドロビン制御スケジューラ（以下、「ＤＲＲスケジューラ」という）１５５−０とを有する。キュー１５１−０〜１５４−０は、後述する輻輳制御部１５９によって、優先度が「０」である中継処理命令が格納される記憶領域である。
【００６４】
ＤＲＲスケジューラ１５５−０は、ＤＲＲ方式によって、キュー１５１−０〜１５４−０から中継処理命令を取り出す処理部である。なお、ＤＲＲスケジューラ１５５−０は、加重率が等しいラウンドロビン方式や、ＷＲＲ（Weighted  Round  Robin：加重ラウンドロビン）方式によって、中継処理命令を取り出してもよい。また、ＤＲＲスケジューラ１５５−０は、本願の出願人によって出願された特開２００４−２４２３３５に開示されているラウンドロビン方式によって、中継処理命令を取り出してもよい。
【００６５】
同様に、キュー群１５０−７は、輻輳制御部１５９によって優先度が「７」である中継処理命令が格納されるキュー１５１−７〜１５４−７と、ＤＲＲスケジューラ１５５−７とを有する。同図では、図示することを省略しているが、送信ポートモジュール１５ａは、優先度が「１」〜「６」である中継処理命令が格納されるキュー群１５０−１〜１５０−６も有する。かかるキュー群１５０−１〜１５０−６の構成は、キュー群１５０−０および１５０−７の構成と同様である。
【００６６】
なお、同図では、各々のキュー群１５０−０〜１５０−７は、４個のキュー（キュー群１５０−０の例では、キュー１５１−０〜１５４−０）を有する例を示したが、各々のキュー群１５０−０〜１５０−７は、３個以下のキューを有してもよいし、５個以上のキューを有してもよい。
【００６７】
また、以下では、キュー群１５１−０等が有する各キューのＱＩＤは、上から順に「０」、「１」、「２」、「３」であるものとする。具体的には、キュー１５１−０のＱＩＤが「０」であり、キュー１５２−０のＱＩＤが「１」であり、キュー１５３−０のＱＩＤが「２」であり、キュー１５４−０のＱＩＤが「３」であるものとする。同様に、キュー１５１−７のＱＩＤが「０」であり、キュー１５２−７のＱＩＤが「１」であり、キュー１５３−７のＱＩＤが「２」であり、キュー１５４−７のＱＩＤが「３」であるものとする。
【００６８】
優先制御送信スケジューラ１５６は、ＤＲＲスケジューラ１５５−０〜１５５−７によって取り出された中継処理命令のうち、優先度の高い順番に、中継処理命令に従って処理を行う。具体的には、優先制御送信スケジューラ１５６は、ストリームメモリ１６から、中継処理命令に含まれる論理ブロック番号が示す論理ブロックに記憶されているパケットを読み出して、送信ポート１２ａへ出力する。また、優先制御送信スケジューラ１５６は、中継処理命令にリンク情報が含まれている場合、かかるリンク情報に含まれる論理ブロック番号が示す論理ブロックに記憶されているパケットを、ストリームメモリ１６から読み出して、送信ポート１２ａへ出力する。優先制御送信スケジューラ１５６は、優先度の高い順番に、中継処理命令に従って、同様のパケット出力処理を行う。
【００６９】
このように、ＤＲＲスケジューラ１５５−０〜１５５−７が、各キューからＤＲＲ方式によって中継処理命令を取り出すので、仮想ネットワークごとに帯域制御を行うことができる。また、優先制御送信スケジューラ１５６が、優先度が高い順番に、中継処理命令に従って、パケットを他の装置へ送信するので、受信するパケット全体の優先度を考慮して優先制御を行うことができる。
【００７０】
蓄積量記憶部１５７は、優先度に対応付けて、優先度ごとに設けられた複数のキューに格納されている中継処理命令が示すパケットのサイズの総和を記憶する。蓄積量記憶部１５７の一例を図７に示す。同図に示すように、蓄積量記憶部１５７は、優先度、総パケット蓄積量といった項目を有する。優先度は、キューに対応付けられた優先度を示す。総パケット蓄積量は、対応する優先度に対応付けて設けられた複数のキューに格納されている中継処理命令が示すパケットサイズの総和を示す。
【００７１】
すなわち、図７に示した蓄積量記憶部１５７の１行目は、優先度「０」に対応付けて設けられたキュー１５１−０〜１５４−０に格納されている中継処理命令が示すパケットのサイズの総和が「１００バイト」であることを示している。また、蓄積量記憶部１５７の８行目は、優先度「７」に対応付けて設けられたキュー１５１−７〜１５４−７に格納されている中継処理命令が示すパケットのサイズの総和が「１４０バイト」であることを示している。
【００７２】
閾値記憶部１５８は、指定閾値に対応付けて、具体的な閾値を記憶する。閾値記憶部１５８の一例を図８に示す。同図に示すように、閾値記憶部１５８は、指定閾値、閾値といった項目を有する。指定閾値は、図５に示したキュー番号記憶部１７３が有する指定閾値に対応する。閾値は、総パケット蓄積量の閾値を示す。
【００７３】
すなわち、図８に示した閾値記憶部１５８の１行目は、指定閾値「ＴＨ０」の閾値が「３００バイト」であることを示しており、図８に示した閾値記憶部１５８の８行目は、指定閾値「ＴＨ７」の閾値が「３０００バイト」であることを示している。
【００７４】
輻輳制御部１５９は、格納先キュー決定部１８３から中継処理命令を入力された場合に、かかる中継処理命令を廃棄するか、または、所定のキューに格納するかを制御する処理部である。具体的には、輻輳制御部１５９は、格納先キュー決定部１８３から入力された中継処理命令に含まれる優先度に対応付けて蓄積量記憶部１５７に記憶されている総パケット蓄積量を取得する。続いて、輻輳制御部１５９は、中継処理命令に含まれる指定閾値に対応付けて閾値記憶部１５８に記憶されている閾値を取得する。続いて、輻輳制御部１５９は、蓄積量記憶部１５７から取得した総パケット蓄積量と、閾値記憶部１５８から取得した閾値とを比較する。
【００７５】
総パケット蓄積量が閾値よりも小さい場合、輻輳制御部１５９は、中継処理命令に含まれる優先度に対応付けて設けられたキューのうち、中継処理命令に含まれるＱＩＤが示すキューに中継処理命令を格納する。一方、総パケット蓄積量が閾値以上である場合、輻輳制御部１５９は、中継処理命令を廃棄するとともに、廃棄情報をパケット廃棄部１８４に出力する。
【００７６】
次に、実施例１に係るスイッチ１０によるパケット中継処理の手順について説明する。図９は、実施例１に係るスイッチ１０によるパケット中継処理手順を示すフローチャートである。同図に示すように、スイッチ１０の受信ポート１１ａ〜１１ｃがパケットを受信した場合（ステップＳ１０１肯定）、受信ポートモジュール１４ａ〜１４ｃは、かかるパケットのヘッダ情報を制御部１８へ出力するとともに、パケットをストリームメモリ１６に書き込む（ステップＳ１０２）。
【００７７】
ヘッダ情報を受け付けた制御部１８の方路決定部１８２は、かかるヘッダ情報と、方路記憶部１７２に記憶されている各種情報に基づいて、パケットを送信する送信ポートを決定する（ステップＳ１０３）。
【００７８】
続いて、格納先キュー決定部１８３は、入力されたヘッダ情報に設定されているＶＬＡＮ番号と優先度との組合せに対応付けてキュー番号記憶部１７３に記憶されているＱＩＤおよび指定閾値を取得する。格納先キュー決定部１８３は、ヘッダ情報に設定されている優先度に対応付けて設けられた複数のキューのうち、キュー番号記憶部１７３から取得したＱＩＤが示すキューに中継処理命令を格納することを決定する（ステップＳ１０４）。
【００７９】
続いて、格納先キュー決定部１８３は、入力されたヘッダ情報や、かかるヘッダ情報を有するパケットが記憶されている論理ブロックを示す論理ブロック番号、キュー番号記憶部１７３から取得したＱＩＤおよび指定閾値、リンク情報取得部１８１から入力されたリンク情報などを含む中継処理命令を生成する（ステップＳ１０５）。続いて、格納先キュー決定部１８３は、方路決定部１８２によって決定された送信ポート１２ａ〜１２ｃのいずれかに対応する送信ポートモジュール１５ａ〜１５ｃに、生成した中継処理命令を出力する。
【００８０】
格納先キュー決定部１８３から中継処理命令を入力された送信ポートモジュール１５ａ〜１５ｃの輻輳制御部１５９は、入力された中継処理命令に含まれる優先度に対応付けて蓄積量記憶部１５７に記憶されている総パケット蓄積量を取得するとともに、中継処理命令に含まれる指定閾値に対応付けて閾値記憶部１５８に記憶されている閾値を取得する。続いて、輻輳制御部１５９は、蓄積量記憶部１５７から取得した総パケット蓄積量と、閾値記憶部１５８から取得した閾値とを比較する（ステップＳ１０６）。
【００８１】
総パケット蓄積量が閾値以上である場合（ステップＳ１０７否定）、輻輳制御部１５９は、中継処理命令を廃棄するとともに、廃棄情報をパケット廃棄部１８４に出力する。廃棄情報を受け付けたパケット廃棄部１８４は、中継処理命令に含まれる論理ブロック番号が示すパケットをストリームメモリ１６から廃棄する（ステップＳ１０８）。
【００８２】
一方、総パケット蓄積量が閾値よりも小さい場合（ステップＳ１０７肯定）、輻輳制御部１５９は、中継処理命令に含まれる優先度に対応付けて蓄積量記憶部１５７に記憶されている総パケット蓄積量を、中継処理命令が示すパケットのサイズ分だけ加算する（ステップＳ１０９）。続いて、輻輳制御部１５９は、中継処理命令に含まれる優先度に対応付けて設けられた複数のキューのうち、中継処理命令に含まれるＱＩＤが示すキューに中継処理命令を格納する（ステップＳ１１０）。
【００８３】
続いて、送信ポートモジュール１５ａ〜１５ｃのＤＲＲスケジューラ１５５−０〜１５５−７は、ＤＲＲ方式によって、キューから中継処理命令を取り出す（ステップＳ１１１）。具体的には、ＤＲＲスケジューラ１５５−０は、ＤＲＲ方式によって、キュー１５１−０〜１５４−０から中継処理命令を取り出し、ＤＲＲスケジューラ１５５−７は、ＤＲＲ方式によって、キュー１５１−７〜１５４−７から中継処理命令を取り出す。
【００８４】
続いて、優先制御送信スケジューラ１５６は、ＤＲＲスケジューラ１５５−０〜１５５−７によって取り出された中継処理命令のうち、優先度の高い順番に、中継処理命令に従って、ストリームメモリ１６からパケットを読み出して、送信ポート１２ａ〜１２ｃへ出力する（ステップＳ１１２）。具体的には、優先制御送信スケジューラ１５６は、中継処理命令に含まれる論理ブロック番号が示す論理ブロックに記憶されているパケットを、ストリームメモリ１６から読み出して、送信ポート１２ａ〜１２ｃへ出力する。また、優先制御送信スケジューラ１５６は、中継処理命令にリンク情報が含まれている場合、かかるリンク情報に含まれる論理ブロック番号が示す論理ブロックに記憶されているパケットを、ストリームメモリ１６から読み出して、送信ポート１２ａ〜１２ｃへ出力する。
【００８５】
優先制御送信スケジューラ１５６によってパケットが送信ポート１２ａ〜１２ｃへ出力された後、輻輳制御部１５９は、出力されたパケットの優先度に対応付けて蓄積量記憶部１５７に記憶されている総パケット蓄積量を、出力されたパケットのサイズ分だけ減算する（ステップＳ１１３）。
【００８６】
上述してきたように、実施例１に係るスイッチ１０は、送信ポートモジュール１５ａ〜１５ｃごとに、優先度とＶＬＡＮ番号との組合せに対応付けて複数のキューを有し、また、同一の優先度に対応付けられたキューに蓄積されている中継処理命令が示すパケットのサイズの総和を記憶する蓄積量記憶部１５７と、キューごとに総パケット蓄積量の閾値を記憶する閾値記憶部１５８とを有し、パケットを受信した場合に、かかるパケットに設定されている優先度に対応付けて蓄積量記憶部１５７に記憶されている総パケット蓄積量と、パケットの格納先キューに対応付けて閾値記憶部１５８に記憶されている閾値とに基づいて、パケットを廃棄するか否かを決定するので、仮想ネットワークごとに輻輳制御を行うことができる。
【００８７】
また、実施例１に係るスイッチ１０は、ＶＬＡＮ番号が異なる場合であっても、パケットを同一のキューに格納することも可能であるため、いくつかの仮想ネットワークを１つの仮想ネットワークグループとして扱うことができ、仮想ネットワークグループごとに輻輳制御を行うことができる。
【実施例２】
【００８８】
ところで、上記実施例１では、キュー番号記憶部１７３が、優先度ごとに、メンバポート番号と、ＱＩＤと、指定閾値とを記憶する例を示したが、メンバポート番号、ＱＩＤ、指定閾値は、異なる記憶部に分散して記憶させてもよい。そこで、実施例２では、メンバポート番号と、ＱＩＤおよび指定閾値とを分散して記憶部に記憶させる例について説明する。
【００８９】
まず、実施例２に係るスイッチ２０の構成について説明する。図１０は、実施例２に係るスイッチ２０の構成を示すブロック図である。なお、以下では、図３に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
【００９０】
図１０に示すように、スイッチ２０が有するスイッチコア２３は、図３に示したスイッチコア１３が有する記憶部１７の代わりに、記憶部２７を新たに有する。記憶部２７は、図３に示した記憶部１７と比較して、キュー番号記憶部１７３の代わりに、キュー番号記憶部２７３と、ＶＬＡＮ記憶部２７４とを新たに有する。
【００９１】
キュー番号記憶部２７３の一例を図１１に示す。同図に示すように、キュー番号記憶部２７３は、ＶＬＡＮ番号、優先度、ＱＩＤ、指定閾値といった項目を有する。ＶＬＡＮ記憶部２７４の一例を図１２に示す。同図に示すように、ＶＬＡＮ記憶部２７４は、ＶＬＡＮ番号、メンバポート番号といった項目を有する。
【００９２】
上述してきたように、実施例２に係るスイッチ２０は、キュー番号記憶部２７３が、優先度によって異なる値を取り得るＱＩＤおよび指定閾値を記憶し、ＶＬＡＮ記憶部２７４が、優先度によって値が変化しないメンバポート番号を記憶するので、仮想ネットワークごとに輻輳制御を行うことができ、さらに、各記憶部の構成を簡潔にすることができる。
【実施例３】
【００９３】
ところで、上記実施例１および２では、キュー番号記憶部１７３または２７３に記憶されている指定閾値に対応する閾値を、閾値記憶部１５８から取得して輻輳制御を行う例を示したが、指定閾値を設けないように構成してもよい。また、上記実施例１および２では、キュー群の単位で、総パケット蓄積量を蓄積量記憶部１５７に記憶させる例を示したが、キューごとにパケット蓄積量を記憶させてもよい。そこで、実施例３では、キュー番号記憶部が指定閾値を有さず、かつ、蓄積量記憶部がキュー毎にパケット蓄積量を記憶する例について説明する。
【００９４】
まず、実施例３に係るスイッチ３０の構成について説明する。図１３は、実施例３に係るスイッチ３０の構成を示すブロック図である。図１３に示すように、スイッチ３０が有するスイッチコア３３は、図３に示したスイッチコア１３が有するポートモジュール群１５、記憶部１７および制御部１８の代わりに、ポートモジュール群３５と、記憶部３７と、制御部３８とを新たに有する。
【００９５】
ポートモジュール群３５は、送信ポート１２ａ〜１２ｃに対応する送信ポートモジュール３５ａ〜３５ｃを有する。送信ポートモジュール３５ａ〜３５ｃの構成については、後に詳述する。
【００９６】
記憶部３７は、図３に示した記憶部１７と比較して、キュー番号記憶部１７３の代わりに、キュー番号記憶部３７３を新たに有する。キュー番号記憶部３７３の一例を図１４に示す。同図に示すように、キュー番号記憶部３７３は、図５に示したキュー番号記憶部１７３と比較して、指定閾値を有さない。
【００９７】
制御部３８は、図３に示した制御部１８と比較して、格納先キュー決定部１８３の代わりに、格納先キュー決定部３８３を新たに有する。格納先キュー決定部３８３は、指定閾値を含まない中継処理命令を生成して、送信ポートモジュール３５ａ〜３５ｃのいずれかへ出力する処理部である。
【００９８】
具体的には、格納先キュー決定部３８３は、ポートモジュール群１４からヘッダ情報を入力された場合に、キュー番号記憶部３７３から、かかるヘッダ情報に設定されているＶＬＡＮ番号と優先度との組合せに対応するＱＩＤを取得する。続いて、格納先キュー決定部３８３は、入力されたヘッダ情報や、かかるヘッダ情報を有するパケットが記憶されている論理ブロックを示す論理ブロック番号、キュー番号記憶部３７３から取得したＱＩＤ、リンク情報などを含む中継処理命令を生成する。続いて、格納先キュー決定部３８３は、方路決定部１８２によって決定された送信ポート１２ａ〜１２ｃのいずれかに対応する送信ポートモジュール３５ａ〜３５ｃに、生成した中継処理命令を出力する。
【００９９】
次に、図１３に示した送信ポートモジュール３５ａ〜３５ｃの構成について説明する。図１５は、図１３に示した送信ポートモジュール３５ａ〜３５ｃの構成を示すブロック図である。なお、送信ポートモジュール３５ａ〜３５ｃは、いずれも同様の構成を有するため、ここでは、送信ポートモジュール３５ａの構成についてのみ説明する。また、以下では、図６に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
【０１００】
図１５に示すように、送信ポートモジュール３５ａは、キュー群１５０−０〜１５０−７と、優先制御送信スケジューラ１５６と、蓄積量記憶部３５７と、閾値記憶部３５８と、輻輳制御部３５９とを有する。
【０１０１】
蓄積量記憶部３５７の一例を図１６に示す。同図に示すように、蓄積量記憶部３５７は、優先度に対応付けて、ＱＩＤごとにパケット蓄積量を記憶する。すなわち、同図に示した蓄積量記憶部３５７の１行目は、優先度「０」に対応するキュー群１５０−０が有するキューのうち、ＱＩＤ「０」が示すキュー１５１−０に、「５０バイト」のパケットが蓄積されていることを示しており、ＱＩＤ「１」が示すキュー１５２−０に、「１００バイト」のパケットが蓄積されていることを示しており、ＱＩＤ「２」が示すキュー１５３−０に、「５０バイト」のパケットが蓄積されていることを示しており、ＱＩＤ「３」が示すキュー１５４−０に、「５０バイト」のパケットが蓄積されていることを示している。
【０１０２】
また、同図に示した蓄積量記憶部３５７の８行目は、優先度「７」に対応するキュー群１５０−７が有するキューのうち、ＱＩＤ「０」が示すキュー１５１−７に、「３００バイト」のパケットが蓄積されていることを示しており、ＱＩＤ「１」が示すキュー１５２−７に、「５００バイト」のパケットが蓄積されていることを示しており、ＱＩＤ「２」が示すキュー１５３−７に、「２５０バイト」のパケットが蓄積されていることを示しており、ＱＩＤ「３」が示すキュー１５４−７に、「２５０バイト」のパケットが蓄積されていることを示している。
【０１０３】
閾値記憶部３５８の一例を図１７に示す。同図に示すように、閾値記憶部３５８は、優先度に対応付けて、ＱＩＤごとに閾値を記憶する。すなわち、同図に示した閾値記憶部３５８の１行目は、優先度「０」に対応するキュー群１５０−０が有するキューのうち、ＱＩＤ「０」が示すキュー１５１−０の閾値が「３００バイト」であることを示しており、ＱＩＤ「１」が示すキュー１５２−０の閾値が「２００バイト」であることを示しており、ＱＩＤ「２」が示すキュー１５３−０の閾値が「５００バイト」であることを示しており、ＱＩＤ「３」が示すキュー１５４−０の閾値が「１０００バイト」であることを示している。
【０１０４】
なお、図１６に示した蓄積量記憶部３５７、および、図１７に示した閾値記憶部３５８の構造は、キュー群１５１−０等が有する各キューのＱＩＤが、上から順に「０」、「１」、「２」、「３」に割り当てられることを前提としている。ただし、すべてのキューに対してユニークなＱＩＤを割り当てることも可能であり、かかる場合には、蓄積量記憶部３５７は、ＱＩＤに対応付けて、パケット蓄積量を記憶し、閾値記憶部３５８は、ＱＩＤに対応付けて、閾値を記憶する。
【０１０５】
輻輳制御部３５９は、格納先キュー決定部３８３から中継処理命令を入力された場合に、入力された中継処理命令に含まれる優先度とＱＩＤの組合せに対応付けて蓄積量記憶部３５７に記憶されているパケット蓄積量を取得する。続いて、輻輳制御部３５９は、中継処理命令に含まれる優先度とＱＩＤの組合せに対応付けて閾値記憶部３５８に記憶されている閾値を取得する。続いて、輻輳制御部３５９は、蓄積量記憶部３５７から取得したパケット蓄積量と、閾値記憶部３５８から取得した閾値とを比較する。
【０１０６】
パケット蓄積量が閾値よりも小さい場合、輻輳制御部３５９は、中継処理命令に含まれる優先度に対応付けて設けられた複数のキューのうち、中継処理命令に含まれるＱＩＤが示すキューに中継処理命令を格納する。一方、パケット蓄積量が閾値以上である場合、輻輳制御部３５９は、中継処理命令を廃棄するとともに、廃棄情報をパケット廃棄部１８４に出力する。
【０１０７】
上述してきたように、実施例３に係るスイッチ３０は、優先度とＱＩＤとの組合せに対応付けて、パケット蓄積量および閾値を記憶するので、仮想ネットワークごとに輻輳制御を行うことができ、各キューに蓄積されているパケット蓄積量や、各キューに対して設定されている閾値を容易に確認することができる。
【０１０８】
なお、上記実施例１〜３では、格納先キュー決定部１８３等が中継処理命令をキューに格納し、送信ポートモジュール１５ａ等が、キューから中継処理命令を取り出して、かかる中継処理命令に従ってパケットの中継処理を行う例を示したが、かかるパケット中継処理の手法はあくまで一例であり、他の手法によってパケット中継処理を行ってもよい。例えば、図１を用いて説明したように、スイッチ１０、２０および３０は、各キューにパケット自体を格納して、パケット中継処理を行ってもよい。
【０１０９】
また、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散、統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散、統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１１０】
以上の実施例１〜３を含む実施形態に関し、更に以下の付記を開示する。
【０１１１】
（付記１）所定の仮想ネットワークに属する装置からパケットを受信して、他の装置へ中継する中継装置であって、
パケットを中継する優先順位を示す優先度と仮想ネットワークを識別するためのＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューと、
優先度とＶＬＡＮ番号との組合せに対応付けて、前記キューを識別するためのキュー番号を記憶するキュー番号記憶手段と、
優先度に対応付けて、該優先度に対応する複数のキューに蓄積されているパケット蓄積量の総和である総パケット蓄積量を記憶する蓄積量記憶手段と、
キュー番号に対応付けて、総パケット蓄積量の閾値を記憶する閾値記憶手段と、
パケットを受信した場合に、該パケットに設定されているＶＬＡＮ番号と優先度との組合せに対応付けて前記キュー番号記憶手段に記憶されているキュー番号が示すキューに、該パケットを格納させることを決定する格納先キュー決定手段と、
前記パケットに設定されている優先度に対応付けて前記蓄積量記憶手段に記憶されている総パケット蓄積量と、前記格納先キュー決定手段によって決定されたキューである格納先キューを示すキュー番号に対応付けて前記閾値記憶手段に記憶されている閾値とに基づいて、前記パケットを廃棄する輻輳制御手段と、
を備えたことを特徴とする中継装置。
【０１１２】
（付記２）所定の仮想ネットワークに属する装置からパケットを受信して、他の装置へ中継する中継装置であって、
パケットを中継する優先順位を示す優先度と仮想ネットワークを識別するためのＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューと、
優先度とＶＬＡＮ番号との組合せに対応付けて、前記キューを識別するためのキュー番号を記憶するキュー番号記憶手段と、
キュー番号に対応付けて、該キュー番号が示すキューに蓄積されている総パケット蓄積量を記憶する蓄積量記憶手段と、
キュー番号に対応付けて、総パケット蓄積量の閾値を記憶する閾値記憶手段と、
パケットを受信した場合に、該パケットに設定されているＶＬＡＮ番号と優先度との組合せに対応付けて前記キュー番号記憶手段に記憶されているキュー番号が示すキューに、該パケットを格納させることを決定する格納先キュー決定手段と、
前記格納先キュー決定手段によって決定されたキューである格納先キューを示すキュー番号に対応付けて前記蓄積量記憶手段に記憶されている総パケット蓄積量と、前記格納先キューを示すキュー番号に対応付けて前記閾値記憶手段に記憶されている閾値とに基づいて、前記パケットを廃棄する輻輳制御手段と、
を備えたことを特徴とする中継装置。
【０１１３】
（付記３）前記輻輳制御手段は、前記総パケット蓄積量が前記閾値より小さい場合に、前記パケットを前記格納先キューに格納し、前記総パケット蓄積量が前記閾値以上である場合に、前記パケットを廃棄することを特徴とし、
前記輻輳制御手段によってキューに格納されたパケットを、前記キューに対応付けられた優先度に基づいて他の装置へ送信するパケット送信手段をさらに備えたことを特徴とする付記１または２に記載の中継装置。
【０１１４】
（付記４）前記パケット送信手段は、同一の優先度に対応付けられた複数のキューから、ラウンドロビン方式によってパケットを取り出すラウンドロビン制御手段と、前記ラウンドロビン制御手段によって取り出されたパケットを、優先度の高い順番に前記他の装置へ送信する優先制御送信手段とを備えたことを特徴とする付記３に記載の中継装置。
【０１１５】
（付記５）前記ラウンドロビン制御手段は、前記ラウンドロビン方式として、不足ラウンドロビン方式または加重ラウンドロビン方式のいずれかによって同一の優先度に対応付けられた複数のキューからパケットを取り出すことを特徴とする付記４に記載の中継装置。
【０１１６】
（付記６）所定の仮想ネットワークに属する装置からパケットを受信して、他の装置へ中継する中継装置におけるパケット中継方法であって、
前記中継装置が、
パケットを中継する優先順位を示す優先度と、仮想ネットワークを識別するためのＶＬＡＮ番号との組合せに対応付けて、優先度とＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューを識別するためのキュー番号をキュー番号記憶部に記憶するキュー番号記憶工程と、
優先度に対応付けて、該優先度に対応する複数のキューに蓄積されているパケット蓄積量の総和である総パケット蓄積量を蓄積量記憶部に記憶する蓄積量記憶工程と、
キュー番号に対応付けて、総パケット蓄積量の閾値を閾値記憶部に記憶する閾値記憶工程と、
パケットを受信した場合に、該パケットに設定されているＶＬＡＮ番号と優先度との組合せに対応付けて前記キュー番号記憶部に記憶されているキュー番号が示すキューに、該パケットを格納させることを決定する格納先キュー決定工程と、
前記パケットに設定されている優先度に対応付けて前記蓄積量記憶部に記憶されている総パケット蓄積量と、前記格納先キュー決定工程によって決定されたキューである格納先キューを示すキュー番号に対応付けて前記閾値記憶部に記憶されている閾値とに基づいて、前記パケットを廃棄する輻輳制御工程と、
を含んだことを特徴とするパケット中継方法。
【０１１７】
（付記７）所定の仮想ネットワークに属する装置からパケットを受信して、他の装置へ中継する中継装置におけるパケット中継方法であって、
前記中継装置が、
パケットを中継する優先順位を示す優先度と、仮想ネットワークを識別するためのＶＬＡＮ番号との組合せに対応付けて、優先度とＶＬＡＮ番号との組合せに対応付けて設けられた複数のキューを識別するためのキュー番号をキュー番号記憶部に記憶するキュー番号記憶工程と、
キュー番号に対応付けて、該キュー番号が示すキューに蓄積されている総パケット蓄積量を蓄積量記憶部に記憶する蓄積量記憶工程と、
キュー番号に対応付けて、総パケット蓄積量の閾値を閾値記憶部に記憶する閾値記憶工程と、
パケットを受信した場合に、該パケットに設定されているＶＬＡＮ番号と優先度との組合せに対応付けて前記キュー番号記憶部に記憶されているキュー番号が示すキューに、該パケットを格納させることを決定する格納先キュー決定工程と、
前記格納先キュー決定工程によって決定されたキューである格納先キューを示すキュー番号に対応付けて前記蓄積量記憶部に記憶されている総パケット蓄積量と、前記格納先キューを示すキュー番号に対応付けて前記閾値記憶部に記憶されている閾値とに基づいて、前記パケットを廃棄する輻輳制御工程と、
を含んだことを特徴とするパケット中継方法。
【０１１８】
（付記８）前記輻輳制御工程は、前記総パケット蓄積量が前記閾値より小さい場合に、前記パケットを前記格納先キューに格納し、前記総パケット蓄積量が前記閾値以上である場合に、前記パケットを廃棄することを特徴とし、
前記輻輳制御工程によってキューに格納されたパケットを、前記キューに対応付けられた優先度に基づいて他の装置へ送信するパケット送信工程をさらに含んだことを特徴とする付記６または７に記載のパケット中継方法。
【図面の簡単な説明】
【０１１９】
【図１】実施例１に係るスイッチの概要を説明するための図である。
【図２】実施例１に係るスイッチが適用されるネットワークの構成例を示す図である。
【図３】実施例１に係るスイッチの構成を示すブロック図である。
【図４】方路記憶部の一例を示す図である。
【図５】キュー番号記憶部の一例を示す図である。
【図６】図３に示した送信ポートモジュールの構成を示すブロック図である。
【図７】蓄積量記憶部の一例を示す図である。
【図８】閾値記憶部の一例を示す図である。
【図９】実施例１に係るスイッチによるパケット中継処理手順を示すフローチャートである。
【図１０】実施例２に係るスイッチの構成を示すブロック図である。
【図１１】キュー番号記憶部の一例を示す図である。
【図１２】ＶＬＡＮ記憶部の一例を示す図である。
【図１３】実施例３に係るスイッチの構成を示すブロック図である。
【図１４】キュー番号記憶部の一例を示す図である。
【図１５】図１３に示した送信ポートモジュールの構成を示すブロック図である。
【図１６】蓄積量記憶部の一例を示す図である。
【図１７】閾値記憶部の一例を示す図である。
【符号の説明】
【０１２０】
１                              ネットワーク
２Ａ〜２Ｃ                      サーバシステム
３Ａ〜３Ｃ                      記憶システム
４                              スイッチ群
５                              ネットワークシステム
６                              ルーティングシステム
１０Ａ〜１０Ｆ                  スイッチ
１０、２０、３０                スイッチ
１１ａ〜１１ｃ                  受信ポート
１２ａ〜１２ｃ                  送信ポート
１３、２３、３３                スイッチコア
１４、１５、３５                ポートモジュール群
１４ａ〜１４ｃ                  受信ポートモジュール
１５ａ〜１５ｃ、３５ａ〜３５ｃ  送信ポートモジュール
１６                            ストリームメモリ
１７、２７、３７                記憶部
１８、３８                      制御部
１５０−０〜１５０−７          キュー群
１５１−０〜１５４−０          キュー
１５１−７〜１５４−７          キュー
１５５−０〜１５５−７          ＤＲＲスケジューラ
１５６                          優先制御送信スケジューラ
１５７、３５７                  蓄積量記憶部
１５８、３５８                  閾値記憶部
１５９、３５９                  輻輳制御部
１７１                          タグメモリ
１７２                          方路記憶部
１７３、２７３、３７３          キュー番号記憶部
１８１                          リンク情報取得部
１８２                          方路決定部
１８３、３８３                  格納先キュー決定部
１８４                          パケット廃棄部
２７４                          ＶＬＡＮ記憶部
【図１】
0005104508.tif 000002
【図２】
0005104508.tif 000003
【図３】
0005104508.tif 000004
【図４】
0005104508.tif 000005
【図５】
0005104508.tif 000006
【図６】
0005104508.tif 000007
【図７】
0005104508.tif 000008
【図８】
0005104508.tif 000009
【図９】
0005104508.tif 000010
【図１０】
0005104508.tif 000011
【図１１】
0005104508.tif 000012
【図１２】
0005104508.tif 000013
【図１３】
0005104508.tif 000014
【図１４】
0005104508.tif 000015
【図１５】
0005104508.tif 000016
【図１６】
0005104508.tif 000017
【図１７】
0005104508.tif 000018