以下、添付する図面を参照して実施例を説明する。図1は、開示のパケット伝送装置の概略構成の説明図である。参照符号1はパケット伝送装置を示し、参照符号2…2は回線インタフェースユニット(LIU: Line Interface Unit)カードを示し、参照符号3はスイッチカードを示し、参照符号NW1及びNW2はネットワーク網を示す。パケット伝送装置1は、例えばレイヤ2スイッチであってよいが、本実施例の適用範囲はレイヤ2スイッチに限定されるものではなく、出力パケットバッファにおけるパケット蓄積量を調整するバックプレッシャ機能を有する他の種類のパケット伝送装置にも、広く適用可能である。
パケット伝送装置1は、LIUカード#1〜#4を含む複数のLIUカード2…2とスイッチカードを備える。各LIUカード2…2は、ネットワーク網NW1及び/又はNW2から到来するパケットを受信し、又はネットワーク網NW1及び/又はNW2へパケットを送信するための複数の物理ポートP#0〜P#nを備える。複数のLIUカード2…2を、「LIUカード2」と総称することがある。また、複数の物理ポートP#0〜P#nを「物理ポートP」と総称することがある。特許請求の範囲に記載の通信ポートは、例えば、物理ポートPによって実現されてよい。
パケット伝送装置1は、ネットワーク網NW1及び/又はNW2から受信したパケットをスイッチカード3へ入力する前に一時的に格納する入力パケットバッファ4を備える。またパケット伝送装置1は、スイッチカード3から受信したパケットをネットワーク網NW1及び/又はNW2へ送信する前に一時的に格納する出力パケットバッファ5を備える。
例えば、ネットワークNW1及び/又はNW2から到来したパケットは、図1の点線で表した経路に沿ってスイッチカード3へ入力される。まずパケットは、物理ポートPにおいて受信される。パケットは、入力パケットバッファ4に一時的に格納された後、スイッチカード3へ入力される。
スイッチカード3では、各パケットの宛先となる物理ポート、すなわち各パケットを出力すべき物理ポートをそれぞれ識別し、識別した物理ポートが存在するLIUカード2へパケットを出力する。この出力経路を一点鎖線にて表す。
スイッチカード3からパケットを受信したLIUカード2は、スケジューリング制御及び出力制御を行って、各物理ポートPからネットワーク網NW1及び/又はNW2へ、パケットを送信する。
このようにネットワーク網NW1及び/又はNW2へパケットが送信される物理ポートは、パケット伝送装置1によるパケット交換処理の、転送先又は宛先となる物理ポートである。以下の説明において、パケット伝送装置1によるパケット交換処理の転送先となる物理ポートを、このパケットの「宛先ポート」と記載することがある。また、以下の説明において、パケット伝送装置1によるパケット交換処理によりある物理ポートへ転送されるパケットのことを、この物理ポート「を宛先とするパケット」若しくはこの物理ポート「宛のパケット」と記載することがある。
図2は、図1に記されたLIUカード2の概略構成の説明図である。参照符号11はマルチプレクサ(Mux)を示し、参照符号12は入力パケットバッファメモリを示し、参照符号13は書込制御部を示し、参照符号14は読出制御部を示し、参照符号15はセレクタを示す。
参照符号20は出力パケットバッファメモリを示し、参照符号21は書込制御部を示し、参照符号22は読出制御部を示し、参照符号23はデマルチプレクサ(Dmux)を示し、参照符号24はキュー長管理部を示す。
参照符号25は閾値管理部を示し、参照符号26はBP信号生成部を示し、参照符号27はBPパケット生成部を示し、参照符号28はBPパケット検出部を示す。参照符号30はスケジューラを示し、参照符号31はアドレス管理部を示し、参照符号32は読出アドレス格納部を示す。
LIUカード2は、マルチプレクサ(Mux)11、入力パケットバッファメモリ12、書込制御部13、読出制御部14、セレクタ15、出力パケットバッファメモリ20、書込制御部21、読出制御部22、及びデマルチプレクサ(Dmux)23を備える。
また、LIUカード2は、キュー長管理部24、閾値管理部25、BP信号生成部26、BPパケット生成部27、BPパケット検出部28、スケジューラ30、アドレス管理部31、及び読出アドレス格納部32を備える。
マルチプレクサ(Mux)11は、ネットワーク網NW1及び/又はNW2から各物理ポートPにおいて受信されたパケットを多重化する。入力パケットバッファメモリ12は、図1に示した入力パケットバッファ4用の記憶領域を用意するために用いられ、ネットワーク網NW1及び/又はNW2から入力されたパケットを蓄積する。
書込制御部13は、マルチプレクサ11から受信したパケットを入力パケットバッファメモリ12へ書き込む。書込制御部13は、パケット伝送装置1に設けられた各物理ポートPについて生成されたBP発行要求信号を受信する。BP発行要求信号は、対象の物理ポートPについてバックプレッシャを行うことを要求する信号であり、後述のBP信号生成部26及びBPパケット検出部28によって生成される。
ある物理ポートP#xについて生成されたBP発行要求信号を受信したとき、書込制御部13は、物理ポートP#xを宛先とするパケットの書き込みを抑制する。書込制御部13は、入力パケットバッファメモリ12の容量に応じて物理ポートP#xを宛先とするパケットを廃棄することによって、パケットの書き込みを抑制する。
書込制御部13は、パケット伝送装置1に設けられた各物理ポートPについて生成されたBP解除要求信号を受信する。BP解除要求信号は、対象の物理ポートPについて行われているバックプレッシャを解除することを要求する信号であり、後述のBP信号生成部26及びBPパケット検出部28によって生成される。ある物理ポートP#xについて生成されたBP解除要求信号を受信したとき、書込制御部13は、物理ポートP#xを宛先とするパケットの書き込みの抑制を解除する。
読出制御部14は、入力パケットバッファメモリ12からパケットを読み出し、読み出されたパケットをスイッチカード3へ入力する。読出制御部14は、パケット伝送装置1に設けられた各物理ポートPについて生成されたBP発行要求信号を受信する。ある物理ポートP#xについて生成されたBP発行要求信号を受信したとき、読出制御部14は、物理ポートP#xを宛先とするパケットの入力パケットバッファメモリ12から読み出しを抑制する。
読出制御部14は、パケット伝送装置1に設けられた各物理ポートPについて生成されたBP解除要求信号を受信する。ある物理ポートP#xについて生成されたBP解除要求信号を受信したとき、読出制御部14は、物理ポートP#xを宛先とするパケットの読み出しの抑制を解除する。このようにして、書込制御部13及び読出制御部14は、ネットワーク網NW1及び/又はNW2から各物理ポートPにおいて受信されたパケットの、スイッチカード3への入力を制御する。特許請求の範囲に記載されたパケット入力制御部は、例えば書込制御部13及び読出制御部14によって実現されてよい。
セレクタ15は、読出制御部14及びBPパケット生成部27のどちらからパケットが出力されるのかに応じて、スイッチカード3へのパケットの入力元を、読出制御部14とBPパケット生成部27との間で切り替える。
出力パケットバッファメモリ20は、図1に示した出力パケットバッファ5用の記憶領域を用意するために用いられ、ネットワーク網NW1及び/又はNW2へ出力するパケットを蓄積する。LIUカード2に設けられた各物理ポートPに対してそれぞれ個別のキューが用意され、各物理ポートPを宛先とするパケットは、それぞれの物理ポートPに対して用意されたキューに保持される。出力パケットバッファメモリ20には、LIUカード2に設けられた複数の物理ポートPについて用意された上記の複数のキューが記憶される。
書込制御部21は、スイッチカード3から受信したパケットを出力パケットバッファメモリ20へ書き込む。また書込制御部21は、受信したパケットをキュー長管理部24へ送信する。
後述するように、書込制御部21は、出力パケットバッファメモリ20へ書き込むパケットのパケット情報をアドレス管理部31へ送信する。パケット情報は、対象のパケットの宛先ポートの識別情報及びパケットサイズを含む。書込制御部21は、パケットを出力パケットバッファメモリ20へ書き込むとき、パケットを書き込む書込アドレス値をアドレス管理部31から受信する。
読出制御部22は、スケジューラ30の制御にしたがって、各物理ポートPから出力するパケットを出力パケットバッファメモリ20から読み出し、デマルチプレクサ(Dmux)23へ出力する。読出制御部22は、読み出したパケットをキュー長管理部24へ送信する。
デマルチプレクサ(Dmux)23は、出力パケットバッファメモリ20から読み出された多重化されたパケットを、各物理ポートP宛のパケットに分離する。またデマルチプレクサ(Dmux)23は、各物理ポートPから出力されるパケットを整調する。
キュー長管理部24は、各物理ポートPに対してそれぞれ用意されたキュー毎に、各キューに保持されたパケット量を監視する。またキュー長管理部24は、これら複数のキューに保持されるパケット量の総合計値を監視する。
閾値管理部25は、各物理ポートP#0、P#1〜P#nに対してそれぞれ用意されたキュー毎に設定されたBP発行閾値Tdi0、Tdi1〜Tdin、及びBP解除閾値Tdr0、Tdr1〜Tdrnを記憶する。閾値管理部25は、これら複数のキューに保持されるパケット量の総合計値に対して設けられたBP発行閾値Tai及びBP解除閾値Tarを記憶する。
以下の説明において、BP発行閾値Tdi0〜Tdin及びBP解除閾値Tdr0〜Tdrnを、それぞれ「個別BP発行閾値」及び「個別BP解除閾値」と呼ぶことがある。また、以下の説明においてBP発行閾値Tai及びBP解除閾値Tarを、それぞれ「全体BP発行閾値」及び「全体BP解除閾値」と呼ぶことがある。
特許請求の範囲に記載された第1閾値は、例えば、個別BP発行閾値Tdi0〜Tdinであってよい。特許請求の範囲に記載された第2閾値は、例えば、全体BP発行閾値Taiであってよい。特許請求の範囲に記載された第3閾値は、例えば、個別BP解除閾値Tdr0〜Tdrnであってよい。特許請求の範囲に記載された第4閾値は、例えば、全体BP解除閾値Tarであってよい。
BP信号生成部26は、BP発行要求信号及びBP解除要求信号を生成する。BP信号生成部26は、ある物理ポートP#xのキューに保持されるパケット量が個別BP発行閾値Tdix以上であり、かつ複数の物理ポートP#0〜P#nに対してそれぞれ用意された複数のキューに保持されるパケット量の総合計値が全体BP発行閾値Tai以上になったとき、この物理ポートP#xについてBP発行要求信号を生成する。
なお、簡単のため以下の説明において、複数の物理ポートP#0〜P#nに対してそれぞれ用意された複数のキューに保持されるパケット量の総合計値のことを、単に「総パケット量」と記載することがある。
BP信号生成部26は、ある物理ポートP#xについてBP発行要求信号を生成した後に、物理ポートP#xのキューに保持されるパケット量が個別BP解除閾値Tdrxよりも小さくなると、物理ポートP#xについてBP解除要求信号を生成する。また、BP信号生成部26は、ある物理ポートP#xについてBP発行要求信号を生成した後に、総パケット量が全体BP解除閾値Tarよりも小さくなった場合も、物理ポートP#xについてBP解除要求信号を生成する。
特許請求の範囲に記載された停止信号及び許可信号は、例えば、それぞれBP発行要求信号及びBP解除要求信号であってよい。BP信号生成部26は、BP発行要求信号及びBP解除要求信号を、書込制御部13及び読出制御部14へ出力する。BP信号生成部26は、BP発行要求信号及びBP解除要求信号が生成されたことに知らせるために、これらの信号をBPパケット生成部27へ出力してもよい。
BP信号生成部26がBP発行要求信号を生成したとき、BPパケット生成部27は、対象の物理ポートP#xについてバックプレッシャを行うことを要求するBP発行要求パケットを生成する。特許請求の範囲に記載された停止信号パケットは、例えば、BP発行要求パケットであってよい。BP信号生成部26がBP解除要求信号を生成したとき、BPパケット生成部27は、対象の物理ポートP#xについて行われているバックプレッシャを解除することを要求するBP解除要求パケットを生成する。
BPパケット生成部27は、生成されたBP発行要求パケット及びBP解除要求パケットを、セレクタ15を介してスイッチカード3へ入力する。BP発行要求パケット及びBP解除要求パケットは、スイッチカード3を経由して、パケット伝送装置1に設けられた各LIUカード2へ転送される。
BPパケット検出部28は、スイッチカード3を経由して入力された、他のLIUカード2にて生成されたBP発行要求パケット及びBP解除要求パケットを検出する。BP発行要求パケットを受信したとき、BPパケット検出部28は、対象の物理ポートP#xについてのBP発行要求信号を、書込制御部13及び読出制御部14へ出力する。BP解除要求パケットを検出したとき、BPパケット検出部28は、対象の物理ポートP#xについてのBP解除要求信号を、書込制御部13及び読出制御部14へ出力する。
スケジューラ30は、各物理ポートPに接続された回線を使用する顧客の契約帯域を監視して帯域制御を行いながら、出力パケットバッファメモリ20からパケットを読み出すべき宛先ポートを選択するスケジューリング制御を行う。スケジューラ30は、例えばラウンドロビン方式によって宛先ポートを選択してもよい。
アドレス管理部31は、書込制御部21が出力パケットバッファメモリ20へパケットを書き込む書込アドレス値を発行する。アドレス管理部31は、書込アドレス値を書込制御部21へ出力する。アドレス管理部31は、スケジューラ30によるスケジューリング制御に従って、読出制御部22が出力パケットバッファメモリ20からパケット読み出す読出アドレス値を発行する。アドレス管理部31は、読出アドレス値を読出アドレス格納部32へ出力する。
読出アドレス格納部32は、アドレス管理部31から受信した読出アドレス値を一時的に格納する。読出アドレス格納部32は、各物理ポートPのそれぞれの実レートに応じてパケットを出力すべき物理ポートを順次決定する。読出アドレス格納部32は、格納された読出アドレス値のうち、決定された物理ポート宛のパケットを読み出すアドレス値を読出制御部22へ出力する。読出制御部22は、各物理ポートPから出力するパケットを、読出アドレス格納部32から受信したアドレスから読み出す。
次に、BP信号生成部26によりBP発行要求信号及び/又はBP解除要求信号が出力される条件を説明する。図3の(A)及び図3の(B)は、BP発行要求信号を出力する条件の説明図であり、図4の(A)及び図4の(B)は、BP解除要求信号を出力する条件の説明図である。ここでは、説明の簡単のため、複数の物理ポートP#0〜P#nが3個の物理ポートP#0、P#1及びP#2である場合を想定する。
参照符号100、101及び102は、それぞれ物理ポートP#0、P#1及びP#2に対して、これらのポートから出力されるパケットを保持するために用意されたキュー#0、#1及び#2を示す。参照符号103は、キュー#0〜#2に格納されるパケットを記憶するために使用されている全記憶容領域を示す。図10の(A)、図10の(B)、図11の(A)、図11の(B)、図12の(A)、図12の(B)、図13の(A)、図13の(B)、図14の(A)、図14の(B)、図15の(A)、図15の(B)、図16の(A)、図16の(B)においても同様である。
本例において、キュー#0〜#2をそれぞれ使用する各物理ポートP#0〜P#2は、LIUカード2に設けられた各物理ポートPのうちの一部又は全部であってよい。キュー#0〜#2により利用可能な記憶領域は、出力パケットバッファメモリ20において、各物理ポートPから出力されるパケットを保持するキューのために確保された全記憶領域であってよい。またはキュー#0〜#2により利用可能な記憶領域は、出力パケットバッファメモリ20において、各物理ポートPから出力されるパケットを保持するキューのために確保された一部の記憶領域であってよい。
図3の(A)及び図3の(B)において、キュー#0〜#2及び全記憶領域103の全記憶容量に対して、キュー#0〜#2及び全記憶領域103にそれぞれ蓄積されるパケット量が占める記憶容量が、ハッチングされた領域の高さで表される。キュー#0〜#2においてハッチングされた各領域のパケット量は、全記憶領域103において同じパターンでハッチングされた各領域のパケット量に対応する。また、キュー#0〜#2に蓄積されるパケット量に対する、各キュー#0〜#2にそれぞれ設定された個別BP発行閾値Tdi0〜Tdi2及び個別BP解除閾値Tdr0〜Tdr2の位置が、点線104及び105にて表されている。全記憶領域103に蓄積されるパケット量に対する、全体BP発行閾値Tai及び全体BP解除閾値Tarの位置が、点線106及び107にてそれぞれ表されている。図4の(A)、図4の(B)、図10の(A)、図10の(B)、図11の(A)、図11の(B)、図12の(A)、図12の(B)、図13の(A)、図13の(B)、図14の(A)、図14の(B)、図15の(A)、図15の(B)、図16の(A)、図16の(B)においても同様である。
図3の(A)の場合には、キュー#0において、パケット蓄積量が個別BP発行閾値Tdi0を超えている。しかし、パケット蓄積量が個別BP発行閾値Tdi0以上であることのみを条件としてキュー#0についてバックプレッシャを行うと、全記憶領域103にまだ余裕があるのにも関わらず、これ以上、物理ポートP#0宛のパケットが蓄積できない。
本実施例では、BP信号生成部26は、キュー#0のパケット蓄積量が個別BP発行閾値Tdi0以上であっても、総パケット量、すなわちキュー#0〜#2の蓄積パケットの総合計値が全体BP発行閾値Tai以上になるまで、キュー#0についてのBP発行要求信号を生成しない。すなわち、図3の(B)に示すように、キュー#0のパケット蓄積量が個別BP発行閾値Tdi0以上となり、総パケット量が全体BP発行閾値Tai以上となったとき、BP信号生成部26は、キュー#0についてのBP発行要求信号を生成する。
キュー#0についてBP発行要求信号が生成されると、キュー#0へのパケットの蓄積が止まるので、キュー#0のパケット蓄積量が減少を始める。本実施例では、BP信号生成部26は、総パケット量が全体BP解除閾値Tarよりも小さくなったとき、キュー#0についてのBP発行解除信号を生成する。この状態を図4の(A)に示す。または、BP信号生成部26は、キュー#0のパケット蓄積量が個別BP解除閾値Tdr0よりも小さくなったとき、キュー#0についてのBP発行解除信号を生成する。この状態を図4の(B)に示す。
このように、総パケット量が全体BP発行閾値になるまで、バックプレッシャを行わないことにより、個別BP発行閾値以上のパケットを蓄積したキューへ入力されるパケットを、他のキューのために用意した記憶領域に格納することができるので、全記憶領域103の利用効率が向上する。
個別BP発行閾値Tdi0〜Tdin及び個別BP解除閾値Tdr0〜Tdrn、並びに全体BP発行閾値Tai及び全体BP解除閾値Tarは、図2の閾値記憶部25に記憶される閾値テーブル110に格納される。図5は、閾値テーブル110の構成例の説明図である。
閾値テーブル110は、各物理ポートP#0〜P#nにそれぞれ対応するアドレス「0」〜「n」に、それぞれの各物理ポートP#0〜P#nのキューに設定された個別BP発行閾値Tdi0〜Tdin及び個別BP解除閾値Tdr0〜Tdrnを格納する。また、閾値テーブル110は、アドレス「n+1」に全体BP発行閾値Tai及び全体BP解除閾値Tarを格納する。
なお、BP発行要求信号が出力されても、書込制御部13及び読出制御部14がスイッチカード3へのパケットの入力を停止するまでにはタイムラグがあり、このタイムラグの間はキューにパケットが送信されてくる。このため、個別BP発行閾値Tdi0〜Tdin及び全体BP発行閾値Taiの値を、実際の使用可能記憶容量よりも少なく設定して、タイムラグの間に受信されるパケットを格納できるようにしてもよい。
また、BP解除要求信号が出力されても、書込制御部13及び読出制御部14がパケットの送信を再開されるまでのタイムラグがある。この間にキューが空になってしまうと出力レート割れやバーストを生じさせてしまう。このため、個別BP解除閾値Tdr0〜Tdrn及び全体BP解除閾値Tarの値は、キューの蓄積量が0にならないように設定してよい。
上述のパケット蓄積量と各閾値との比較処理は、図2のキュー長管理部24によって行われる。図6は、図2に記されたキュー長管理部24の概略構成の説明図である。参照符号40は受信パケットサイズ算出部を示し、参照符号41は送信パケットサイズ算出部を示し、参照符号42はパケット蓄積量メモリを示し、参照符号43は蓄積量演算部を示し、参照符号44は比較部を示す。
キュー長管理部24は、受信パケットサイズ算出部40、送信パケットサイズ算出部41、パケット蓄積量メモリ42、蓄積量演算部43、及び比較部44を備える。
受信パケットサイズ算出部40は、出力パケットバッファメモリ20へ書き込むパケットを書込制御部21から受信する。受信パケットサイズ算出部40は、このパケットのパケットサイズを算出する。
送信パケットサイズ算出部41は、出力パケットバッファメモリ20から読み出されたパケットを読出制御部22から受信する。送信パケットサイズ算出部41は、このパケットのパケットサイズを算出する。
パケット蓄積量メモリ42は、各物理ポートP#0〜P#nのキューに保持されているパケットのそれぞれのパケット蓄積量と、総パケット量と、を格納するパケット蓄積量テーブル111を記憶する。図7は、パケット蓄積量テーブル111の構成例の説明図である。
パケット蓄積量テーブル111は、各物理ポートP#0〜P#nにそれぞれ対応するアドレス「0」〜「n」に、それぞれの各物理ポートP#0〜P#nのキューに保持されるパケットの蓄積量を格納する。また、パケット蓄積量テーブル111は、アドレス「n+1」に総パケット量を格納する。
図6を参照する。蓄積量演算部43は、パケット蓄積量テーブル111に記憶されている、書込制御部21から受信したパケットの宛先ポートのキューのパケット蓄積量に、受信パケットサイズ算出部40が算出したサイズを加える。また、蓄積量演算部43は、パケット蓄積量テーブル111に記憶されている総パケット量に、受信パケットサイズ算出部40が算出したサイズを加える。
また蓄積量演算部43は、パケット蓄積量テーブル111に記憶されている、読出制御部22から受信したパケットの宛先ポートのキューのパケット蓄積量から、送信パケットサイズ算出部41が算出したサイズを減算する。また、蓄積量演算部43は、パケット蓄積量テーブル111に記憶されている総パケット量から、送信パケットサイズ算出部41が算出したサイズを減算する。
比較部44は、閾値記憶部25の閾値テーブル110から、個別BP発行閾値Tdi0〜Tdin及び個別BP解除閾値Tdr0〜Tdrn、並びに全体BP発行閾値Tai及び全体BP解除閾値Tarを読み出す。
比較部44は、各キューのパケット蓄積量と、各キューにそれぞれ設定された個別BP発行閾値Tdi0〜Tdinとを比較する。比較部44は、各キューのパケット蓄積量と、各キューにそれぞれ設定された個別BP解除閾値Tdr0〜Tdrnとを比較する。比較部44は、総パケット量と全体BP発行閾値Taiとを比較する。比較部44は、総パケット量と全体BP解除閾値Tarとを比較する。比較部44は、これらの比較結果をBP信号生成部26に出力する。BP信号生成部26は、これらの比較結果に基づいて、BP発行要求信号及びBP解除要求信号を生成すべきか否かを判定する。
続いて、BP発行要求信号を出力する際の動作を説明する。図8は、BP発行要求信号を出力する際の動作の説明図である。なお、別な実施の態様においては、下記のオペレーションAA〜オペレーションAKの各オペレーションはステップであってもよい。
オペレーションAAにおいて受信パケットサイズ算出部40は、出力パケットバッファメモリ20へ書き込むパケットを書込制御部21から受信する。オペレーションABにおいて受信パケットサイズ算出部40は、受信したパケットのパケットサイズを算出する。
オペレーションACにおいて蓄積量演算部43は、書込制御部21から受信したパケットの宛先ポートのキューである、対象のキューのパケット蓄積量をパケット蓄積量テーブル111から読み出す。この対象のキューを、図8の説明において「キュー#x」と記し、キュー#xが設けられた物理ポートを「物理ポートP#x」と記す。また図8の説明において、キュー#xについて設定された個別BP発行閾値を、「個別BP発行閾値Tdix」と記す。
オペレーションADにおいて蓄積量演算部43は、読み出したパケット蓄積量に受信パケットサイズ算出部40が算出したサイズを加えることにより、対象のキュー#xのパケット蓄積量の記憶値を更新する。蓄積量演算部43は、更新したパケット蓄積量をパケット蓄積量テーブル111へ保存する。
オペレーションAEにおいて蓄積量演算部43は、総パケット量をパケット蓄積量テーブル111から読み出す。オペレーションAFにおいて蓄積量演算部43は、読み出した総パケット量に受信パケットサイズ算出部40が算出したサイズを加えることにより、総パケット量の記憶値を更新する。蓄積量演算部43は、更新した総パケット量をパケット蓄積量テーブル111へ保存する。
オペレーションAGにおいて比較部44は、閾値記憶部25の閾値テーブル110から、個別BP発行閾値Tdixを読み出す。オペレーションAHにおいて比較部44は、更新された対象のキュー#xのパケット蓄積量と、個別BP発行閾値Tdixとを比較する。
対象のキュー#xのパケット蓄積量が個別BP発行閾値Tdix以上であるとき(オペレーションAH:Y)、処理はオペレーションAIへ移行する。対象のキュー#xのパケット蓄積量が個別BP発行閾値Tdixより小さいとき(オペレーションAH:N)、BP信号生成部26によるBP発行要求信号の生成が行われずに、処理が終了する。
オペレーションAIにおいて比較部44は、閾値記憶部25の閾値テーブル110から、全体BP発行閾値Taiを読み出す。オペレーションAJにおいて比較部44は、更新された総パケット量と全体BP発行閾値Taiとを比較する。
総パケット量が全体BP発行閾値Tai以上であるとき(オペレーションAJ:Y)、処理はオペレーションAKへ移行する。総パケット量が全体BP発行閾値Taiより小さいとき(オペレーションAJ:N)、BP信号生成部26によるBP発行要求信号の生成が行われずに、処理が終了する。
オペレーションAKにおいてBP信号生成部26は、キュー#xが設けられた物理ポートP#xについてBP発行要求信号を出力する。その後処理が終了する。以上、図8を参照して説明した上記動作によって、BP信号生成部26は、ある物理ポートP#xのキューに保持されるパケット量が個別BP発行閾値Tdix以上であり、かつ総パケット量が全体BP発行閾値Tai以上になったとき、この物理ポートP#xについてBP発行要求信号を生成する。
図9は、BP解除要求信号を出力する際の動作の説明図である。なお、別な実施の態様においては、下記のオペレーションBA〜オペレーションBKの各オペレーションはステップであってもよい。
オペレーションBAにおいて送信パケットサイズ算出部41は、出力パケットバッファメモリ20から読み出されたパケットを読出制御部22から受信する。オペレーションBBにおいて送信パケットサイズ算出部41は、受信したパケットのパケットサイズを算出する。
オペレーションBCにおいて蓄積量演算部43は、読出制御部22から受信したパケットの宛先ポートのキューである、対象のキューのパケット蓄積量をパケット蓄積量テーブル111から読み出す。この対象のキューを、図9の説明において「キュー#x」と記し、キュー#xが設けられた物理ポートを「物理ポートP#x」と記す。また図9の説明において、キュー#xについて設定された個別BP解除閾値を、「個別BP解除閾値Tdrx」と記す。
オペレーションBDにおいて蓄積量演算部43は、送信パケットサイズ算出部41が算出したサイズを読み出したパケット蓄積量から減算することにより、対象のキュー#xのパケット蓄積量の記憶値を更新する。蓄積量演算部43は、更新したパケット蓄積量をパケット蓄積量テーブル111へ保存する。
オペレーションBEにおいて蓄積量演算部43は、総パケット量をパケット蓄積量テーブル111から読み出す。オペレーションBFにおいて蓄積量演算部43は、送信パケットサイズ算出部41が算出したサイズを読み出した総パケット量から減算することにより、総パケット量の記憶値を更新する。蓄積量演算部43は、更新した総パケット量をパケット蓄積量テーブル111へ保存する。
オペレーションBGにおいて比較部44は、閾値記憶部25の閾値テーブル110から、個別BP解除閾値Tdrxを読み出す。オペレーションBHにおいて比較部44は、更新された対象のキュー#xのパケット蓄積量と、個別BP解除閾値Tdrxとを比較する。
対象のキュー#xのパケット蓄積量が個別BP解除閾値Tdrxより小さいとき(オペレーションBH:Y)、処理はオペレーションBKへ移行する。対象のキュー#xのパケット蓄積量が個別BP解除閾値Tdrx以上のとき(オペレーションBH:N)、処理はオペレーションBIへ移行する。
オペレーションBIにおいて比較部44は、閾値記憶部25の閾値テーブル110から、全体BP解除閾値Tarを読み出す。オペレーションBJにおいて比較部44は、更新された総パケット量と全体BP解除閾値Tarとを比較する。
総パケット量が全体BP解除閾値Tarより小さいとき(オペレーションBJ:Y)、処理はオペレーションBKへ移行する。総パケット量が全体BP解除閾値Tar以上のとき(オペレーションBJ:N)、BP信号生成部26によるBP解除要求信号の生成が行われずに、処理が終了する。
オペレーションBKにおいてBP信号生成部26は、キュー#xが設けられた物理ポートP#xについてBP解除要求信号を出力する。その後処理が終了する。以上、図9を参照して説明した上記動作によって、BP信号生成部26は、ある物理ポートP#xのキューに保持されるパケット量が個別BP解除閾値Tdrxより小さくなったときか、若しくは総パケット量が全体BP解除閾値Tarよりも小さくなったとき、この物理ポートP#xについてBP解除要求信号を生成する。
以下、添付する図10の(A)、図10の(B)、図11の(A)、図11の(B)、図12の(A)、図12の(B)、図13の(A)、図13の(B)、図14の(A)、図14の(B)、図15の(A)、図15の(B)、図16の(A)及び図16の(B)を参照しながら、本実施例によるBP発生要求信号及びBP解除要求信号の生成処理の動作を説明する。
説明の簡単のため、複数の物理ポートP#0〜P#nの数が3個である場合、すなわち複数の物理ポートP#0〜P#nが、3個の物理ポートP#0、P#1及びP#2である場合を想定する。これら物理ポートP#0、P#1及びP#2に対して、出力パケットを保持するためにキュー#0、#1及び#2が用意される。
また、複数のキュー#0〜#2のために確保された全記憶領域103に保持可能なパケットの記憶容量を300とする。したがって、この記憶容量を、複数のキュー#0〜#2に均等に割り当てた場合の各キューの記憶可能容量は100となる。なお、パケットのデータ量及び記憶容量を表すために本説明で使用される数の単位は、データのビット数を示す単位であれば何でもよく、特に特定しない。
図10に示すように、個別BP発行閾値Tdi0〜Tdi2の値が「80」に、個別BP解除閾値Tdr0〜Tdr2の値が「40」に、全体BP発行閾値Taiの値が「200」に、全体BP解除閾値Tarの値が「100」に設定された場合を想定する。
図11の(A)及び図11の(B)は出力パケットバッファの状態の説明図(その1)である。なお、図11の(A)に表される「パケット#0」はキュー#0に保持されるパケットにより占められた記憶容量を表す。「パケット#1」はキュー#1に保持されるパケットにより占められた記憶容量を表す。「パケット#2」はキュー#2に保持されるパケットにより占められた記憶容量を表す。図12の(A)、図13の(A)、図14の(A)、図15の(A)及び図16の(A)についても同様である。
パケットがキュー#0〜#2に蓄積されることにより、キュー#0のパケット蓄積量が「90」に、キュー#1のパケット蓄積量が「20」に、キュー#2のパケット蓄積量が「20」になる。この状態ではキュー#0のパケット蓄積量「90」が個別BP発行閾値Tdi0(=80)以上となっている。しかし、総パケット量(90+20+20=130)が、全体BP発行閾値Tai(=200)より小さい。このため、BP信号生成部26は、キュー#0についてBP発行要求信号を生成しない。
図12の(A)及び図12の(B)は出力パケットバッファの状態の説明図(その2)である。この場合、キュー#0のパケット蓄積量が「130」に、キュー#1のパケット蓄積量が「50」に、キュー#2のパケット蓄積量が「30」になっている。この状態ではキュー#0のパケット蓄積量「130」が個別BP発行閾値Tdi0(=80)以上となり、かつ総パケット量(130+50+30=210)が、全体BP発行閾値Tai(=200)以上となっている。このため、BP信号生成部26は、キュー#0についてBP発行要求信号を生成する。
この場合、キュー#0は、全記憶領域103をキュー#0〜#2に均等に割り当てた場合の各キューの記憶容量「100」よりも多いパケットを保持しているので、キュー#0は、他のキュー#1及び#2のために用意された記憶領域を利用している、と言うことができる。
BP信号生成部26によるBP発行要求信号の生成によって、物理ポートP#0に対してバックプレッシャが行われると、キュー#0のパケット蓄積量が減少する。図13の(A)及び図13の(B)は出力パケットバッファの状態の説明図(その3)である。この場合、キュー#0のパケット蓄積量が「60」に、キュー#1のパケット蓄積量が「70」に、キュー#2のパケット蓄積量が「50」になっている。
この状態ではキュー#0のパケット蓄積量「60」が個別BP解除閾値Tdr0(=40)以上であり、総パケット量(60+70+50=180)が、全体BP解除閾値Tar(=100)以上である。このため、BP信号生成部26は、キュー#0についてのBP解除要求信号を生成しない。このため、物理ポートP#0に対してバックプレッシャは解除されない。
物理ポートP#0に対するバックプレッシャにより、キュー#0のパケット蓄積量がさらに減少する。また、他のキュー#1および#2には更にパケットが蓄積される。図14の(A)及び図14の(B)は出力パケットバッファの状態の説明図(その4)である。この場合、キュー#0のパケット蓄積量が「30」に、キュー#1のパケット蓄積量が「90」に、キュー#2のパケット蓄積量が「60」になっている。
この状態では、総パケット量(30+90+60=180)が、全体BP解除閾値Tar(=100)以上であるが、キュー#0のパケット蓄積量「30」が個別BP解除閾値Tdr0(=40)よりも小さくなる。このため、BP信号生成部26は、キュー#0についてのBP解除要求信号を生成する。これによって物理ポートP#0に対するバックプレッシャが解除される。
一方で、キュー#1のパケット蓄積量「90」が個別BP発行閾値Tdi1(=80)以上となっている。しかし、総パケット量「180」が、全体BP発行閾値Tai(=200)より小さい。このため、BP信号生成部26は、キュー#1についてBP発行要求信号を生成しない。
図15の(A)及び図15の(B)は出力パケットバッファの状態の説明図(その5)である。この場合、キュー#0のパケット蓄積量が「50」に、キュー#1のパケット蓄積量が「110」に、キュー#2のパケット蓄積量が「70」になっている。この状態ではキュー#1のパケット蓄積量「110」が個別BP発行閾値Tdi1(=80)以上となり、かつ総パケット量(50+110+70=230)が、全体BP発行閾値Tai(=200)以上となっている。このため、BP信号生成部26は、キュー#1についてBP発行要求信号を生成する。
この場合、キュー#1は、全記憶領域103をキュー#0〜#2に均等に割り当てた場合の各キューの記憶容量「100」よりも多いパケットを保持しているので、キュー#1は、他のキュー#0及び#2のために用意された記憶領域を利用している、と言うことができる。
図16の(A)及び図16の(B)は出力パケットバッファの状態の説明図(その6)である。この場合、キュー#0のパケット蓄積量が「20」に、キュー#1のパケット蓄積量が「60」に、キュー#2のパケット蓄積量が「10」になっている。この状態では、キュー#1のパケット蓄積量「60」が個別BP解除閾値Tdr1(=40)以上であるが、総パケット量(20+60+10=90)が、全体BP解除閾値Tar(=100)よりも小さくなる。このため、BP信号生成部26は、キュー#1についてのBP解除要求信号を生成する。これによって物理ポートP#1に対するバックプレッシャが解除される。
本実施例よれば、複数のキューのうちの特定のキューにパケットが集中して蓄積されても、他のキューのパケット蓄積量が少ない場合には、複数のキューが記憶される記憶領域の空き領域に、上記特定キューに蓄積するパケットを格納することができる。このため、キューを記憶する記憶領域に利用効率が向上する。
以下、出力パケットバッファメモリ20へのパケットを書き込みの際のアドレス制御について説明する。出力パケットバッファメモリ20が、各物理ポートPに対してそれぞれ用意されるキューに対して割り当てる記憶領域の大きさは固定長ではない。出力パケットバッファメモリ20は、各キューに対して割り当てる記憶領域の大きさを変更することができる。
このようなバッファメモリの制御方法は、特許文献3にて開示されている。以下の説明では、出力パケットバッファメモリ20のアドレス制御方法として、特許文献3に開示される方法と同様のアドレス制御方法を説明する。しかし、出力パケットバッファメモリ20は、各キューに対して割り当てる記憶領域の大きさを変更することができればよく、出力パケットバッファメモリ20を制御する方法は、以下の実施形態に限定されるものではない。
図17は、出力パケットバッファメモリ20に記憶される出力パケットバッファ5の構成例の説明図である。出力パケットバッファ5は、アドレス空間「0」〜「m」の各アドレスに、パケットを格納する。
図18は、図2に記されたアドレス管理部31の概略構成の説明図である。参照符号50はアドレス制御部を示し、参照符号51はチェーン管理メモリを示し、参照符号52は先頭アドレス管理メモリを示し、参照符号53は末尾アドレス管理メモリを示す。アドレス管理部31は、アドレス制御部50と、チェーン管理メモリ51と、先頭アドレス管理メモリ52と、末尾アドレス管理メモリ53を備える。
チェーン管理メモリ51には、チェーン管理テーブル120が記憶される。図19は、チェーン管理テーブル120の構成例の説明図である。チェーン管理テーブル120は、出力パケットバッファ5に格納されたパケットの順序のつながりを、各パケットが格納された出力パケットバッファ5のアドレス値のチェーンを用いて管理する。またチェーン管理テーブル120は、出力パケットバッファ5内の空きアドレスを管理する。
チェーン管理テーブル120は、パケットバッファのアドレス毎に、各アドレスに格納されたパケットの次のパケットが格納されたアドレス値を記憶する。チェーン管理テーブル120に記憶される、次のパケットの格納アドレスの値のことを、以下の説明において「次アドレス値」と記載することがある。
またチェーン管理テーブル120は、パケットが格納されていない出力パケットバッファ5の空のアドレスについては、各空のアドレスの次にパケットを格納すべき他の空のアドレス値を格納する。チェーン管理テーブル120に記憶される、次にパケットを格納すべき他の空のアドレス値のことを、以下の説明において「空き次アドレス値」と記載することがある。
チェーン管理テーブル120は、出力パケットバッファ5の各アドレス「1」〜「m」にそれぞれ対応するアドレス「1」〜「m」に、次アドレス値又は空き次アドレス値を格納する。
先頭アドレス管理メモリ52には、先頭アドレス管理テーブル121が記憶される。図20は、先頭アドレス管理テーブル121の構成例の説明図である。先頭アドレス管理テーブル121は、各物理ポートP毎に、それぞれの物理ポートPへ出力される先頭パケットが格納されている出力パケットバッファ5のアドレス値を格納する。先頭アドレス管理テーブル121に記憶される、先頭パケットが格納されている出力パケットバッファ5のアドレス値のことを、以下の説明において「先頭アドレス値」と記載することがある。
また、先頭アドレス管理テーブル121は、出力パケットバッファ5に次にパケットを書き込む空き領域のアドレス値を格納する。先頭アドレス管理テーブル121に記憶される、出力パケットバッファ5に次にパケットを書き込む空き領域のアドレス値のことを、以下の説明において「空き領域の先頭アドレス値」と記載することがある。
先頭アドレス管理テーブル121は、各物理ポートP#0〜P#nにそれぞれ対応するアドレス「0」〜「n」に、それぞれの各物理ポートP#0〜P#nのへ出力される先頭パケットが格納されている出力パケットバッファ5のアドレス値を格納する。先頭アドレス管理テーブル121は、アドレス「n+1」に空き領域の先頭アドレス値を格納する。
末尾アドレス管理メモリ53には、末尾アドレス管理テーブル122が記憶される。図21は、末尾アドレス管理テーブル122の構成例の説明図である。末尾アドレス管理テーブル122は、各物理ポートP毎に、それぞれの物理ポートPへ出力される末尾パケットが格納されている出力パケットバッファ5のアドレス値を格納する。末尾アドレス管理テーブル122に記憶される、末尾パケットが格納されている出力パケットバッファ5のアドレス値のことを、以下の説明において「末尾アドレス値」と記載することがある。
また、末尾アドレス管理テーブル122は、出力パケットバッファ5の空きアドレスのうち、パケットを書き込む順番が最後のアドレス値を格納する。末尾アドレス管理テーブル122に記憶される、パケットを書き込む順番が最後のアドレス値のことを、以下の説明において「空き領域の末尾アドレス値」と記載することがある。
末尾アドレス管理テーブル122は、各物理ポートP#0〜P#nにそれぞれ対応するアドレス「0」〜「n」に、それぞれの各物理ポートP#0〜P#nのへ出力される末尾パケットが格納されている出力パケットバッファ5のアドレス値を格納する。末尾アドレス管理テーブル122は、アドレス「n+1」に空き領域の先頭アドレス値を格納する。
アドレス制御部50の機能及び動作については、後述のLIUカード2の動作の説明において併せて説明する。
図22は、図2に記された読出アドレス格納部32の概略構成の説明図である。参照符号61は宛先識別部を示し、参照符号62は各物理ポートP#0〜P#n毎に設けられた複数のアドレスFIFOを示す、参照符号63は調停部を示す。読出アドレス格納部32は、宛先識別部61と、複数のアドレスFIFO62と、調停部63を備える。
宛先識別部61は、アドレス管理部31から読出アドレス値を受信する。宛先識別部61は、スケジューラ30により決定された宛先ポートを識別する。識別した宛先ポートは、受信した読出アドレス値に格納されたパケットの宛先ポートである。宛先識別部61は、物理ポートP#0〜P#n毎に用意された複数のアドレスFIFO62のうちいずれのアドレスFIFOに、受信した読出アドレス値を格納するかを選択し、選択したアドレスFIFOに読出アドレスを格納する。
アドレスFIFO62は、物理ポートP#0〜P#n毎に、出力するパケットを読み出す読出アドレス値を格納する。図23は、1つのアドレスFIFO62の構成例の説明図である。アドレスFIFO62は、アドレス空間「0」〜「x」の各アドレスに、読出パケット値を格納する。
図22を参照する。調停部63は、読出アドレス値を取り出すアドレスFIFO62を選択し、選択したアドレスFIFO62から取り出した読出アドレス値を読出制御部22へ出力する。また、後述するようにバックプレッシャ信号Sbpにより物理ポートP毎にパケットの読出を停止する。
LIUカード2がスイッチカード3からパケットを受信したときの動作を、図24〜図33を参照して説明する。図24は、パケット受信時におけるLIUカード2の動作の説明図(その1)である。まず、ある宛先ポートのキューにパケットが受信されていない状態においてパケットを最初に受信した時の動作を説明する。なお、以下の動作(1)〜(5)に関連する信号の各フローは、それぞれ図24において点線(1)〜(5)により表されている。
動作(1)において、スイッチカード3からパケットを受信したとき、書込制御部21はパケット情報をアドレス制御部50へ送信する。パケット情報は、受信したパケットの宛先ポートの識別情報及びパケットサイズを含む。アドレス制御部50は、先頭アドレス管理テーブル121から、空き領域の先頭アドレス値を取得する。
動作(2)において、アドレス制御部50は、動作(1)で取得した空き領域の先頭アドレス値が示すアドレスの記憶内容を、チェーン管理テーブル120から読み出すことによって空き次アドレス値を取得する。アドレス制御部50は、取得した空き次アドレス値を、先頭アドレス管理テーブル121のアドレス「n+1」に書き込むことによって、空き領域の先頭アドレス値を更新する。
動作(3)において、アドレス制御部50は、先頭アドレス管理テーブル121の宛先ポートに対応するアドレスに、動作(1)で取得した空き領域の先頭アドレス値を書き込む。これによって先頭アドレス管理テーブル121に記憶されている宛先ポートの先頭アドレス値が更新される。またアドレス制御部50は、末尾アドレス管理テーブル122の宛先ポートに対応するアドレスにも、動作(1)で取得した空き領域の先頭アドレス値を書き込む。これによって末尾アドレス管理テーブル122に記憶されている宛先ポートの末尾アドレス値が更新される。
動作(4)において、アドレス制御部50は、スケジューラ30へパケット情報を通知する。パケット情報は、スケジューラ30の読出制御のために使用される。
動作(5)において、アドレス制御部50は、動作(1)で取得した空き領域の先頭アドレス値を書込制御部21へ出力する。書込制御部21は、その空き領域の先頭アドレス値が示す出力パケットバッファ5のアドレスに受信パケットを格納する。
図25は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その1)である。図25に示す状態では、また出力パケットバッファ5にパケットが格納されていない。このため、出力パケットバッファ5は全て空である。また、チェーン管理テーブル120は、空き次アドレスのみによって満たされている。
チェーン管理テーブル120は各アドレスのアドレス値は、1つのアドレス(本例ではアドレス「0」)を除いて、他のいずれかの1つのアドレスに格納された空き次アドレス値によって指定される。このような各アドレスに格納された空き次アドレス値によって、チェーン管理テーブル120は各アドレスが連鎖的に繋がれている。チェーン管理テーブル120の各アドレスは、出力パケットバッファ5の各アドレスに一対一に対応している。したがって、チェーン管理テーブル120は、空き次アドレス値による各アドレスの連鎖によって、出力パケットバッファ5の空きアドレスのチェーンを記憶することができる。
先頭アドレス管理テーブル121には、まだ先頭アドレス値が格納されておらず、空き領域の先頭アドレス値は「0」である。末尾アドレス管理テーブル122にも、まだ末尾アドレス値が格納されておらず、空き領域の末尾アドレス値は「n」である。
図26は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その2)である。受信されたバッファA1、B1及びC1は、それぞれ物理ポートP#0〜P#2を宛先ポートとするパケットである。パケットA1、B1及びC1の順でこれらパケットを受信することによって、出力パケットバッファ5のアドレス「0」、「1」及び「2」にそれぞれパケットA1、B1及びC1が格納される。
出力パケットバッファ5のアドレス「0」、「1」及び「2」に格納されたパケットの次のパケットはまだ格納されていないので、チェーン管理テーブル120のアドレス「0」、「1」及び「2」に格納される次アドレス値は意味を持たない。
先頭アドレス管理テーブル121のアドレス「0」、「1」及び「2」には、パケットA1〜C1がそれぞれ格納された出力パケットバッファ5のアドレス「0」、「1」及び「2」が格納される。出力パケットバッファ5のアドレス「0」、「1」及び「2」にパケットが書き込まれることにより、空き領域の先頭アドレス値は「3」になる。
末尾アドレス管理テーブル122のアドレス「0」、「1」及び「2」には、パケットA1〜C1がそれぞれ格納された出力パケットバッファ5のアドレス「0」、「1」及び「2」が格納される。空き領域の末尾アドレス値は「n」のままである。
図27は、パケット受信時におけるLIUカード2の動作の説明図(その2)である。まず、既にパケットを受信しているキューにおいて、さらにパケットが受信される時の動作を説明する。なお、以下の動作(1)〜(6)に関連する信号の各フローは、それぞれ図27において点線(1)〜(6)により表されている。
動作(1)において、スイッチカード3からパケットを受信したとき、書込制御部21はパケット情報をアドレス制御部50へ送信する。アドレス制御部50は、先頭アドレス管理テーブル121から、空き領域の先頭アドレス値を取得する。
動作(2)において、アドレス制御部50は、動作(1)で取得した空き領域の先頭アドレス値が示すアドレスの記憶内容を、チェーン管理テーブル120から読み出すことによって空き次アドレス値を取得する。アドレス制御部50は、取得した空き次アドレス値を、先頭アドレス管理テーブル121のアドレス「n+1」に書き込むことによって、空き領域の先頭アドレス値を更新する。
動作(3)において、アドレス制御部50は、末尾アドレス管理テーブル122の宛先ポートに対応するアドレスに、動作(1)で取得した空き領域の先頭アドレス値を書き込む。これによって末尾アドレス管理テーブル122に記憶されている宛先ポートの末尾アドレス値が更新される。
動作(4)において、アドレス制御部50は、宛先ポートに対応するアドレスの記憶内容を先頭アドレス管理テーブル121から読み出し、宛先ポートの先頭アドレス値を取得する。アドレス制御部50は、チェーン管理テーブル120の、宛先ポートの先頭アドレス値が示すアドレスに、動作(1)で取得した空き領域の先頭アドレス値を書き込む。これによって、チェーン管理テーブル120に記憶されている、宛先ポート宛のパケットが格納されている出力パケットバッファ5のアドレス値のチェーンが更新される。
動作(5)において、アドレス制御部50は、スケジューラ30へパケット情報を通知する。
動作(6)において、アドレス制御部50は、動作(1)で取得した空き領域の先頭アドレス値を書込制御部21へ出力する。書込制御部21は、その空き領域の先頭アドレス値が示す出力パケットバッファ5のアドレスに受信パケットを格納する。
なお、1つのパケットのデータが複数アドレスの記憶領域を使用する場合も、上記動作と同様に、空きアドレスの取得とアドレス値のチェーンの更新を1パケット内で複数回行い、パケット内をチェーンで繋いで行けばよい。
図28は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その3)である。受信されたバッファA2は、物理ポートP#0を宛先ポートとするパケットである。図26の(C)の状態の先頭アドレス管理テーブル121に格納された空き領域の先頭アドレス値は「3」であるため、パケットA2は、出力パケットバッファ5のアドレス「3」に格納される。
チェーン管理テーブル120のアドレス「0」には、次アドレス値「3」が格納される。この次アドレス値によって、出力パケットバッファ5のアドレス「0」に格納されたパケットA1の次パケットA2は、アドレス「3」に格納されることが記憶される。このように、チェーン管理テーブル120のあるアドレス値Ad1のアドレスに格納されるアドレス値Ad2のアドレスには、出力パケットバッファ5のアドレス値Ad1のアドレスに格納されるパケットの次のパケットが格納される。
チェーン管理テーブル120の各アドレスは、出力パケットバッファ5の各アドレスに一対一に対応している。このため、チェーン管理テーブル120の各アドレスは、それぞれに格納された次アドレス値によって連鎖的に繋がれる。チェーン管理テーブル120は、次アドレス値による各アドレスの連鎖によって、各宛先ポート宛のパケットが格納されたアドレスのチェーンを記憶する。
また、チェーン管理テーブル120のアドレス「3」に格納されたパケットA2の次のパケットはまだ格納されていないので、チェーン管理テーブル120のアドレス「3」に格納される次アドレス値は意味を持たない。
出力パケットバッファ5のアドレス「3」にパケットA2が書き込まれることにより、先頭アドレス管理テーブル121に格納される空き領域の先頭アドレス値は「4」になる。出力パケットバッファ5のアドレス「3」に物理ポートP#0宛のパケットA2が書き込まれることにより、末尾アドレス管理テーブル122の宛先ポートP#0に対応するアドレス「0」に記憶される宛先ポートP#0の末尾アドレス値が「3」に更新される。
図29は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その4)である。受信されたバッファC2は、物理ポートP#2を宛先ポートとするパケットである。図28の(C)の状態の先頭アドレス管理テーブル121に格納された空き領域の先頭アドレス値は「4」であるため、パケットC2は、出力パケットバッファ5のアドレス「4」に格納される。
チェーン管理テーブル120のアドレス「2」には、次アドレス値「4」が格納される。この次アドレス値によって、出力パケットバッファ5のアドレス「2」に格納されたパケットC1の次パケットC2は、アドレス「4」に格納されることが記憶される。また、チェーン管理テーブル120のアドレス「4」に格納されたパケットC2の次のパケットはまだ格納されていないので、チェーン管理テーブル120のアドレス「4」に格納される次アドレス値は意味を持たない。
出力パケットバッファ5のアドレス「4」にパケットC2が書き込まれることにより、先頭アドレス管理テーブル121に格納される空き領域の先頭アドレス値は「5」になる。出力パケットバッファ5のアドレス「4」に物理ポートP#2宛のパケットC2が書き込まれることにより、末尾アドレス管理テーブル122の宛先ポートP#2に対応するアドレス「2」に記憶される宛先ポートP#0の末尾アドレス値が「4」に更新される。
図30は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その5)である。受信されたバッファA3は、物理ポートP#0を宛先ポートとするパケットである。図29の(C)の状態の先頭アドレス管理テーブル121に格納された空き領域の先頭アドレス値は「5」であるため、パケットA3は、出力パケットバッファ5のアドレス「5」に格納される。
チェーン管理テーブル120のアドレス「3」には、次アドレス値「5」が格納される。この次アドレス値によって、出力パケットバッファ5のアドレス「3」に格納されたパケットA2の次パケットA3は、アドレス「5」に格納されることが記憶される。また、チェーン管理テーブル120のアドレス「5」に格納されたパケットA3の次のパケットはまだ格納されていないので、チェーン管理テーブル120のアドレス「5」に格納される次アドレス値は意味を持たない。
出力パケットバッファ5のアドレス「5」にパケットA3が書き込まれることにより、先頭アドレス管理テーブル121に格納される空き領域の先頭アドレス値は「6」になる。出力パケットバッファ5のアドレス「5」に物理ポートP#0宛のパケットA3が書き込まれることにより、末尾アドレス管理テーブル122の宛先ポートP#0に対応するアドレス「0」に記憶される宛先ポートP#0の末尾アドレス値が「5」に更新される。
図31は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その6)である。受信されたバッファB2は、物理ポートP#1を宛先ポートとするパケットである。図30の(C)の状態の先頭アドレス管理テーブル121に格納された空き領域の先頭アドレス値は「6」であるため、パケットB2は、出力パケットバッファ5のアドレス「6」に格納される。
チェーン管理テーブル120のアドレス「1」には、次アドレス値「6」が格納される。この次アドレス値によって、出力パケットバッファ5のアドレス「1」に格納されたパケットB1の次パケットB2は、アドレス「6」に格納されることが記憶される。また、チェーン管理テーブル120のアドレス「6」に格納されたパケットB2の次のパケットはまだ格納されていないので、チェーン管理テーブル120のアドレス「6」に格納される次アドレス値は意味を持たない。
出力パケットバッファ5のアドレス「6」にパケットB2が書き込まれることにより、先頭アドレス管理テーブル121に格納される空き領域の先頭アドレス値は「7」になる。出力パケットバッファ5のアドレス「6」に物理ポートP#1宛のパケットB2が書き込まれることにより、末尾アドレス管理テーブル122の宛先ポートP#1に対応するアドレス「1」に記憶される宛先ポートP#1の末尾アドレス値が「6」に更新される。
図32は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その7)である。受信されたバッファC3は、物理ポートP#2を宛先ポートとするパケットである。図31の(C)の状態の先頭アドレス管理テーブル121に格納された空き領域の先頭アドレス値は「7」であるため、パケットC3は、出力パケットバッファ5のアドレス「7」に格納される。
チェーン管理テーブル120のアドレス「4」には、次アドレス値「7」が格納される。この次アドレス値によって、出力パケットバッファ5のアドレス「4」に格納されたパケットC2の次パケットC3は、アドレス「7」に格納されることが記憶される。また、チェーン管理テーブル120のアドレス「7」に格納されたパケットC3の次のパケットはまだ格納されていないので、チェーン管理テーブル120のアドレス「7」に格納される次アドレス値は意味を持たない。
出力パケットバッファ5のアドレス「7」にパケットC3が書き込まれることにより、先頭アドレス管理テーブル121に格納される空き領域の先頭アドレス値は「8」になる。出力パケットバッファ5のアドレス「7」に物理ポートP#2宛のパケットC3が書き込まれることにより、末尾アドレス管理テーブル122の宛先ポートP#2に対応するアドレス「2」に記憶される宛先ポートP#2の末尾アドレス値が「7」に更新される。
図33は、パケット受信時の出力パケットバッファ及び各テーブルの状態の説明図(その8)である。受信されたバッファB3は、物理ポートP#1を宛先ポートとするパケットである。図32の(C)の状態の先頭アドレス管理テーブル121に格納された空き領域の先頭アドレス値は「8」であるため、パケットB3は、出力パケットバッファ5のアドレス「8」に格納される。
チェーン管理テーブル120のアドレス「6」には、次アドレス値「8」が格納される。この次アドレス値によって、出力パケットバッファ5のアドレス「6」に格納されたパケットB2の次パケットB3は、アドレス「8」に格納されることが記憶される。また、チェーン管理テーブル120のアドレス「8」に格納されたパケットB3の次のパケットはまだ格納されていないので、チェーン管理テーブル120のアドレス「8」に格納される次アドレス値は意味を持たない。
出力パケットバッファ5のアドレス「8」にパケットB3が書き込まれることにより、先頭アドレス管理テーブル121に格納される空き領域の先頭アドレス値は「9」になる。出力パケットバッファ5のアドレス「8」に物理ポートP#1宛のパケットB3が書き込まれることにより、末尾アドレス管理テーブル122の宛先ポートP#1に対応するアドレス「1」に記憶される宛先ポートP#1の末尾アドレス値が「8」に更新される。
図34は、パケット送信時におけるLIUカード2の動作の説明図である。なお、以下の動作(1)〜(7)に関連する信号の各フローは、それぞれ図34において点線(1)〜(7)により表されている。
動作(1)において、スケジューラ30は、スケジューリング処理によってパケットを出力する物理ポートPを決定する。簡単のため、図34に関する以下の説明において、スケジューラ30により決定されたこの物理ポートを「物理ポートP#x」と記載する。スケジューラ30は、物理ポートP#xをアドレス制御部50に通知する。アドレス制御部50は、物理ポートP#xに対応するアドレスの記憶内容を先頭アドレス管理テーブル121から読み出すことにより、物理ポートP#xの先頭アドレス値を読み出す。
動作(2)において、アドレス制御部50は、動作(1)で取得した物理ポートP#xの先頭アドレス値が示すアドレスの記憶内容をチェーン管理テーブル120から読み出すことによって、次アドレス値を取得する。アドレス制御部50は、取得した次アドレス値を、先頭アドレス管理テーブル121の物理ポートP#xに対応するアドレスへ書き込む。これによって、先頭アドレス管理テーブル121に記憶された物理ポートP#xの先頭アドレス値が更新される。
動作(3)において、アドレス制御部50は、動作(1)で取得した先頭アドレス値を読出アドレス値として読出アドレス格納部32へ出力する。読出アドレス格納部32の宛先識別部61は、物理ポートP#xに対して用意されたアドレスFIFO62に、先頭アドレス値を格納する。
動作(4)において、アドレスFIFO62に蓄積された読出アドレス値は、調停部63からの読出要求により、アドレスFIFO62から読み出される。調停部63は、例えばラウンドロビン動作によって、読出アドレス値を取り出すアドレスFIFO62を決定してよい。調停部63は、取り出した読出アドレス値を読出制御部22へ出力する。読出制御部22は、調停部63から出力された読み出しアドレス値が示すアドレスの記憶内容を出力パケットバッファ5から読み出すことにより、パケットを取得する。パケットは、デマルチプレクサ23を介して物理ポートP#xから出力される。
なお、デマルチプレクサ23は各物理ポートPの実レートに応じて、パケットの出力制御を行っている。デマルチプレクサ23は、バースト等により実レートを越える状態が起きた場合は、パケットの出力を停止し、またバックプレッシャ信号Sbpを調停部63に送出する。このとき、調停部63は該当ポートからの読出を停止する。
動作(5)において、アドレス制御部50は、末尾アドレス管理テーブル122から空き領域の末尾アドレス値を読み出す。アドレス制御部50は、チェーン管理テーブル120の、空き領域の末尾アドレス値が示すアドレスに、動作(1)で取得した物理ポートP#xの先頭アドレス値を書き込む。これによって、動作(4)でパケットの読み出しが終了したアドレス値を、新しい空き領域の末尾アドレス値として現在の空き領域の末尾アドレス値の後に繋げるチェーンが、チェーン管理テーブル120に記憶される。
動作(6)において、アドレス制御部50は、チェーン管理テーブル120の、動作(1)で取得した物理ポートP#xの先頭アドレス値が示すアドレスに「空き次アドレス=なし」を書き込む。
動作(7)において、アドレス制御部50は、末尾アドレス管理テーブル122のアドレス「n+1」に上記(1)で取得した物理ポートP#xの先頭アドレス値を書き込むことによって、空き領域の末尾アドレス値を更新する。
以下、図35〜40を参照して、パケット送信時の出力パケットバッファ及び各テーブルの状態の遷移を説明する。図35は、パケット送信時の出力パケットバッファ及び各テーブルの状態の説明図(その1)である。図33に示した状態からパケットA1が送信される場合を想定する。
スケジューラ30の指示により、宛先ポートP#0のパケットA1を送信するとき、アドレス制御部50は、図33の(C)の先頭アドレス管理テーブル121に記憶された宛先ポートP#0の先頭アドレス値「0」を、読出アドレス格納部32のアドレスFIFO62に格納しておく。
調停部63が、その調停動作により、読出制御部33へ宛先ポートP#0の先頭アドレス値「0」を与えることにより、宛先ポートP#0の先頭アドレス値「0」における受信パケットA1が、出力パケットバッファ5から読み出される。
パケットが読み出された出力パケットバッファ5のアドレス「0」は空き状態となる。チェーン管理テーブル120の、現在の空き領域の末尾アドレス値「n」のアドレスの記憶内容が、新たな空き領域の末尾アドレス値「0」へ更新される。また、チェーン管理テーブル120のアドレス「0」の記憶内容の値は、「空き次アドレス=なし」に更新される。
図33の(B)の状態のチェーン管理テーブル120では、出力パケットバッファ5のアドレス「0」に格納されたパケットA1の次のパケットA2の格納先として、アドレス「3」が指定されている。このため、先頭アドレス管理テーブル121に記憶される、宛先ポートP#0の先頭アドレス値が「3」へ更新される。
末尾アドレス管理テーブル122に記憶される空き領域の末尾アドレス値が、新たな空き領域の末尾アドレス値「0」へ更新される。
図36は、パケット送信時の出力パケットバッファ及び各テーブルの状態の説明図(その2)である。図35に示した状態からパケットA2が送信される場合を想定する。パケットA2の格納先は、出力パケットバッファ5のアドレス「3」である。このため、パケットが読み出された出力パケットバッファ5のアドレス「3」は空き状態となる。
チェーン管理テーブル120の、現在の空き領域の末尾アドレス値「0」のアドレスの記憶内容が、新たな空き領域の末尾アドレス値「3」へ更新される。また、チェーン管理テーブル120のアドレス「3」の記憶内容の値は、「空き次アドレス=なし」に更新される。
図35の(B)の状態のチェーン管理テーブル120では、出力パケットバッファ5のアドレス「3」に格納されたパケットA2の次のパケットA3の格納先として、アドレス「5」が指定されている。このため、先頭アドレス管理テーブル121に記憶される、宛先ポートP#0の先頭アドレス値が「5」へ更新される。
末尾アドレス管理テーブル122に記憶される空き領域の末尾アドレス値が、新たな空き領域の末尾アドレス値「3」へ更新される。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の通信ポートと、
前記複数の通信ポート間でパケットを交換するスイッチと、
前記複数の通信ポートから出力するパケットをそれぞれ保持する複数のキューが記憶される記憶部と、
いずれかの前記通信ポートの前記キューに保持されるパケット量が所定の第1閾値以上であり、かつ前記複数のキューに保持されるパケット量の合計が所定の第2閾値以上であるとき、前記いずれかの通信ポート宛のパケットを前記スイッチへ入力するのを停止させる停止信号を生成する停止信号生成部と、
を備えるパケット伝送装置。
(付記2)
前記スイッチへのパケットの入力を制御するパケット入力制御部を備え、
前記停止信号は、前記パケット入力制御部が前記いずれかの通信ポート宛のパケットを前記スイッチへ入力するのを停止させる付記1に記載のパケット伝送装置。
(付記3)
前記いずれかの通信ポートの前記キューに保持されるパケット量が所定の第3閾値よりも小さくなり、又は前記複数のキューに保持されるパケット量の合計が所定の第4閾値よりも小さくなったとき、前記いずれかの通信ポート宛のパケットを前記スイッチへ入力するのを許可する許可信号を生成する許可信号生成部を備える付記1又は2に記載のパケット伝送装置。
(付記4)
前記スイッチへのパケットの入力を制御するパケット入力制御部を備え、
前記許可信号は、前記パケット入力制御部が前記いずれかの通信ポート宛のパケットを前記スイッチへ入力するのを許可する付記3に記載のパケット伝送装置。
(付記5)
複数の回線間におけるパケット交換を行うスイッチを有するパケット伝送装置に設けられ、前記回線と前記スイッチとの間において前記パケットのインタフェース制御を行う回線インタフェースユニットであって、
前記複数の回線に接続される複数の前記通信ポートと、
前記複数の通信ポートから出力するパケットをそれぞれ保持する複数のキューが記憶される記憶部と、
いずれかの前記通信ポートの前記キューに保持されるパケット量が所定の第1閾値以上であり、かつ前記複数のキューに保持されるパケット量の合計が所定の第2閾値以上であるとき、前記いずれかの通信ポート宛のパケットを前記スイッチへ入力するのを停止させる停止信号を生成する停止信号生成部と、
を備える回線インタフェースユニット。
(付記6)
前記パケット伝送装置は、複数の前記回線インタフェースユニットを備え、
各前記回線インタフェースユニットは、前記スイッチを経由して他の前記回線インタフェースユニットへ伝送される停止信号パケットを、前記停止信号に従って生成する停止信号パケット生成部を備え、
前記停止信号パケットは、前記スイッチへの前記いずれかの通信ポート宛のパケットの入力の停止を要求するパケットである、付記5に記載の回線インタフェースユニット。
(付記7)
複数の通信ポートと、前記複数の通信ポート間でパケットを交換するスイッチと、前記複数の通信ポートから出力するパケットをそれぞれ保持する複数のキューが記憶される記憶部と、を備えるパケット伝送装置の制御方法であって、
いずれかの前記通信ポートの前記キューに保持されるパケット量と所定の第1閾値との間の比較、及び前記複数のキューに保持されるパケット量の合計と所定の第2閾値との間の比較をそれぞれ行い、
いずれかの前記通信ポートの前記キューに保持されるパケット量が所定の第1閾値以上であり、かつ前記複数のキューに保持されるパケット量の合計が所定の第2閾値以上であるとき、前記いずれかの通信ポート宛のパケットを前記スイッチへ入力するのを停止する、パケット伝送装置の制御方法。
(付記8)
前記いずれかの通信ポートの前記キューに保持されるパケット量が所定の第3閾値よりも小さくなり、又は前記複数のキューに保持されるパケット量の合計が所定の第4閾値よりも小さくなったとき、前記いずれかの通信ポート宛のパケットを前記スイッチへ入力するのを許可する付記7に記載のパケット伝送装置の制御方法。