(57)【要約】【課題】共有バッファの管理において異常が発生しても、共有バッファのアドレス空間を縮小せずに有効に活用できるフレーム転送方法及び装置を提供する。【解決手段】共有バッファ(SB)からフレームデータが必ず読み出される一の監視周期内で共有バッファ(SB)にフレームデータを書き込んだ後、共有バッファ(SB)からフレームデータが読み出されなかったアドレス空間を次の監視周期で検出し、少なくとも該監視周期内にフレームデータの書込は行われたが読出は行われないアドレス空間を検出する。そして、該次の監視周期において、該アドレス空間を共有バッファの空きアドレスとして開放する。【選択図】図1
2008160705.tif 000002
【特許請求の範囲】
【請求項１】
共有バッファにフレームデータを書き込んでから該フレームデータが必ず読み出される一の監視周期内で該共有バッファから該フレームデータが読み出されなかった該共有バッファのアドレスを記憶しておき、該アドレスを次の監視周期で検出する第1ステップと、
該次の監視周期において該検出したアドレスを該共有バッファの空きアドレスとして設定する第2ステップと、
を備えたことを特徴とするフレーム転送方法。
【請求項２】
請求項1において、
該第1ステップが、該共有バッファから、フレームデータの読出が行われたときの読出アドレスを空きアドレスとして管理するステップと、該監視周期を生成するステップと、該共有バッファへのフレームデータ書込時にその書込アドレスと組み合わせて書込フラグ及び監視フラグから成るチェックビットを第1状態に設定し、該一の監視周期の開始時に該第1状態のチェックビットを第2状態に更新し、その後、該一の監視周期内で該共有バッファから該フレームデータの読出が行われたとき、そのアドレスのチェックビットを該第2状態から第3状態に更新するステップとを含み、
該第2ステップが、該次の監視周期において該第2状態を検出したとき、検出したアドレスを空きアドレスとして開放するステップを含むことを特徴とするフレーム転送方法。
【請求項３】
請求項２において、
該第2ステップが、該次の監視周期内において該第2状態を検出したとき、該第2状態を該第3状態に更新するステップをさらに含むことを特徴としたフレーム転送方法。
【請求項４】
共有バッファにフレームデータを書き込んでから該フレームデータが必ず読み出される一の監視周期内で該共有バッファから該フレームデータが読み出されなかった該共有バッファのアドレスを記憶しておき、該アドレスを次の監視周期で検出する第1手段と、
該次の監視周期において該検出したアドレスを該共有バッファの空きアドレスとして設定する第2手段と、
を備えたことを特徴とするフレーム転送装置。
【請求項５】
請求項４において、
該第1手段が、該共有バッファから、フレームデータの読出が行われたときの読出アドレスを空きアドレスとして管理する手段と、該監視周期を生成する手段と、該共有バッファへのフレームデータ書込時にその書込アドレスと組み合わせて書込フラグ及び監視フラグから成るチェックビットを第1状態に設定し、該一の監視周期の開始時に該第1状態のチェックビットを第2状態に更新し、その後、該一の監視周期内で該共有バッファから該フレームデータの読出が行われたとき、そのアドレスのチェックビットを該第2状態から第3状態に更新する手段とを含み、
該第2手段が、該次の監視周期において該第2状態を検出したとき、検出したアドレスを空きアドレスとして開放する手段を含むことを特徴とするフレーム転送装置。
【請求項６】
請求項４において、
該第2手段が、該次の監視周期内において該第2状態を検出したとき、該第2状態を該第3状態に更新する手段をさらに含むことを特徴としたフレーム転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フレーム転送方法及び装置に関し、特に共有バッファを用いたL2スイッチにおけるフレーム転送方法及び装置に関するものである。
【背景技術】
【０００２】
近年、デバイスの微細化及びデバイス内部の動作速度の高速化、またデバイス間のインタフェース速度の高速化が進んでおり、デバイス内部の誤動作やデバイス間インタフェースのノイズ等が無視できなくなっている。このため、L2スイッチ等においては、共有バッファ(Shared Buffer)の管理に際して異常が発生することがある。
【０００３】
このような問題に対して、誤り訂正符号(ECC: Error Correction Code）等を用いてデータの訂正を行う取り組みも進んでいるが、訂正できるのはエラービット数が１ビット等で複数ビットがエラーしているような場合には、訂正することができなかった。
【０００４】
その為、共有バッファを管理する回路においてパリティエラー、ECCエラー（複数ビット誤り検出時の訂正できないエラー）等を検出した場合には、共有バッファの領域を無効化することで、誤動作を防止していた。このような従来技術について、図を参照して以下に説明する。
【０００５】
図7は、従来より知られている共有バッファを用いたL2スイッチの一例を概略的に示し、ラインインタフェースユニット(LIU)カードC#0〜C#3の各ポートP0〜P3より入力されたL2フレームデータ(以下、単にフレームと称することがある。)は、L2フレーム終端/生成部TG#0〜TG#3において、それぞれ、フレーム中の宛先アドレス（DA：Destination Address）を用いてフォワーディングデータベース（FDB：Forwarding Data Base）を検索し、フレーム転送先のカード情報及びポート情報をデータベースFDBより取得し、スイッチカードSWC側へフレームを転送する。転送する際に、フレームにカード情報及びポート情報を付加する。
【０００６】
フレーム中の宛先アドレスがデータベースFDBに登録されていない場合には、L2フレーム終端/生成部TG#0〜TG#3は、スイッチカードSWCから入力されたL2フレームにカード情報及びポート情報が付加されていないため、全てのLIUカードC#0〜C#3に転送（Flooding）するように、フレームにカード情報及びポート情報を付加する。すなわち、LIUカードC#0〜C#3とスイッチカードSWC間のインタフェースで、装置内部転送を目的としてカード情報及びポート情報が付加される。
【０００７】
スイッチカードSWCは、各LIUカードC#0〜C#3からポートP0〜P3を介して受信したフレーム（カード情報及びポート情報含む。）を多重し、一旦共有バッファSBに格納する。また、共有バッファSBに格納したときの共有バッファSBのアドレスを宛先であるLIUカード毎及びLIUカード内の優先度毎に設けられ管理される後述のキュー(Queue)に格納する。共有バッファSBからの読出に際しては、スイッチ部SPが各LIUカード毎に優先制御を行い、キューからアドレスを取得する。取得したアドレスで共有バッファSBよりデータ(フレーム)を読み出して、対象LIUカードへ転送する。
【０００８】
LIUカードC#0〜C#3は、スイッチカードSWCから受信したL2フレーム（カード情報及びポート情報含む。）から、転送先ポート（LIUカードのP0〜P3のいずれか１つ、または複数）を特定し、対象ポートへの転送を行う。この際にL2スイッチSW内で付加した情報を削除する。
【０００９】
このようなL2スイッチSWにおけるスイッチカードSWCの従来の具体的な構成と動作を図8〜図11を参照して以下に説明する。
【００１０】
図8は、共有バッファSBと共にスイッチカードSWCを構成するスイッチ部SPの従来例を示したものである。まず、共有バッファSBへのフレーム書込時においては、図7に示したスイッチ部SPの各ポートP0〜P3から入力されるフレームは、フレーム多重部1でフレーム多重処理され、WAF読出制御部2、パリティ生成部3、及び宛先情報・優先制御情報抽出部4、並びに共有バッファSBに転送される。
【００１１】
宛先情報・優先制御情報抽出部4では、LIUカードC#0〜C#3におけるL2フレーム終端/生成部TG#0〜TG#3において、フレームに付加された宛先情報及び優先制御情報を抽出し、この抽出した情報を書込制御部6へ転送する。これと同時にWAF読出制御部2は共有バッファSBの空き領域(アドレス)を書込アドレスFifo(WAF:Write Address Fifo)5から巡回アドレスを指定することにより取得する。また、WAF読出制御部2は、取得した空きアドレスを共有バッファSB及び書込制御部6に「書込アドレス」として転送する。パリティ生成部3は、入力されたフレームに対して故障検出用にパリティ演算を行った結果(パリティビット)とフレームを出力し、これを共有バッファSBが、書込アドレスFifo5からWAF読出制御部2を介して取得した空き領域(書込アドレス)に格納する。
【００１２】
この時、書込制御部6は、宛先情報・優先制御情報抽出部4から転送された宛先情報及び優先制御情報に基づき、宛先としてのLIUカード及びその優先度単位に設けた読出キュー8_1〜8_4(以下、符号8で総称することがある。)の内の該当するキューを順次選択し、選択したキューに書込アドレスFifo5より取得した書込アドレスを転送する。また、選択したキューに対する書込フラグWFLGを読出制御部10へ転送する。
【００１３】
なお、読出キュー8は、図示の例では4個示されているが、これは例えば、宛先α−優先の読出キュー8-4及び宛先α−低優先の読出キュー8-2がLIUカードC#1に対応し、宛先β−高優先の読出キュー8-3及び宛先β−低優先の読出キュー8-1がLIUC#2に対応していることを示している。従って、図7の例のように4個のLIUカードC#0〜C#3が存在するときには、8個の読出キューが必要になるが、便宜上4個のみ読出キューが図示されている。
【００１４】
パリティ生成部7_1〜7_4(以下、符号7で総称することがある。)の内、選択されたキュー8に対応するものは、書込制御部6から転送されて来た書込アドレスに対して故障検出用にパリティ演算を行った結果(パリティビット)と該書込アドレスとを出力し、これを当該キュー8が「読出アドレス」として格納する。読出制御部10では、書込制御部6から転送された書込フラグWFLGを受けて、各キュー8毎にキューの容量(読出アドレス)の監視を行う、読出制御部10に内蔵された容量カウンタ(図示せず)をカウントアップする。
【００１５】
また、共有バッファSBからのフレーム読出時において、読出制御部10は、上記のとおり、出力すべきフレームデータが共有バッファSB内に蓄積されているか否かを、各キュー8に格納されている読出アドレスの容量を示す容量カウンタで判断することができる。
【００１６】
そして、読出制御部10は、各キュー8毎に監視を行っている容量カウンタが‘0’でない場合には、各キュー8の優先制御及び公平性制御(例えば、ラウンドロビン)を行い、その結果選択されたキュー8から読出アドレスの読出を行う。読み出された読出アドレスはパリティチェック部9_1〜9_4(以下、符号9で総称することがある。)にてパリティ演算を行い、パリティ生成部7で付与されたパリティビットとの比較を行う。
【００１７】
比較した結果、エラーが有る場合には、読出制御部10は、エラー信号を受けて、キュー8から読み出された読出アドレスを廃棄し、共有バッファSBへの転送を行わない。すなわち、該当する読出アドレスに対応するフレームの共有バッファからの読出しを行わない。読出制御部10は、エラーが無い場合には、キュー8から読み出された読出アドレスを共有バッファSB及びWAF書込制御部11に転送する。また、選択したキューの情報を出力ポート情報としてフレーム分離部14に転送する。上記の例の如く、宛先αがLIUカードC#1に対応するのであれば、出力ポート情報として、LIUカードC#1への出力に対応するスイッチ部SPのポートP1を示す情報P1がフレーム分離部14に転送されることになる。
【００１８】
共有バッファSBは、読出制御部10から受信した読出アドレスに基づき、データ（フレーム）を取り出し、これを後段のパリティチェック部12にてパリティ演算を行い、パリティ生成部3で付与したパリティビットとの比較を行う。
【００１９】
比較した結果、エラーが有る場合には、読み出されたフレームをデータ廃棄判定部13にて廃棄処理する。エラーが無い場合には、読み出されたフレームをフレーム分離部14に転送する。フレーム分離部14はデータ廃棄判定部13より受信したフレームを読出制御部10から受信した出力ポート情報によって指定されたポートへ分離して転送する。
【００２０】
また、WAF書込制御部11では、読出制御部10から受信した読出アドレスをデータとして書込アドレスFifo5へ格納する。この際の書込アドレスFifo 5のアドレスはWAF書込制御部11で管理する巡回アドレスとなる。この動作により、共有バッファSBからフレームが読み出された共有バッファアドレスは、空きアドレスとして書込アドレスFifo5へ格納されたことになる。そして、以下の記述において、この動作を「空きアドレスを返却する」と記載することがある。
【００２１】
上記の書込・読出動作を、図8に示すスイッチカードSWCにおいて各ポートP0〜P3よりフレームデータが入力され、宛先となるポートP0〜P3へ転送されるまでの動作として図を参照して説明する。
【００２２】
まず、図9に示すアドレス“0〜1023”の領域を有する共有バッファSBへのフレーム書込側動作においては、入力フレームデータA,B,C,Dのヘッダ情報head1〜4に宛先及び優先度が格納されており、図8にも示すとおり、それぞれ、宛先β−低優先、宛先α−低優先、宛先β−高優先、宛先α−高優先が付加されているものとする。なお、図９では、同一宛先で優先度が異なるフレームデータは異なる時刻に入力された例を示している。
【００２３】
LIUカードC#0〜#3にそれぞれ対応するポートP0〜P3から入力されたフレームデータは、フレーム多重部1にて多重される。
【００２４】
その後、WAF読出制御部2が各フレームデータ毎に書込アドレスFifo5に対し、共有バッファSBへフレームデータを格納する為のアドレス取得要求（本例では結果として、共有バッファSBに対する書込アドレス“0,1,2,3”を取得することになる。）を行う。
【００２５】
具体的には、WAF読出制御部2はフレームデータAを受信すると、例えば初期値として書込アドレスFifo（WAF）5に対して、アドレス“0”を送出する。すると書込アドレスFifo 5は、そのデータ(共有バッファSBに対する次アドレス)として、共有バッファSBの空きアドレス“0”をWAF読出制御部2に送出する。同様にして、フレームデータB,C, Dを受信すると、WAF読出制御部2は、それぞれ、書込アドレスFifo 5に対して巡回アドレス“1”, “2”,“3”を送り、書込アドレスFifo 5これらの巡回アドレスのデータ“1”,“2”,“3”を順次WAF読出制御部2に送る。
【００２６】
このようにして、WAF読出制御部2は、フレームデータを受信する毎に、書込アドレスFifo5に送出するアドレスをインクリメントすることにより共有バッファ格納アドレスの取得要求を行い(ステップS1,S2)、書込アドレスFifo 5より共有バッファSBの空きアドレス（本例ではアドレス“0,1,2,3”）の取得を順次行う(ステップS3)。
【００２７】
取得した空きアドレス空間“0,1,2,3”に対してパリティ生成部3で故障検出用のパリティビットを付加して(ステップS5)、共有バッファSBのアドレス“0,1,2,3”へフレームデータA〜Dの書込をそれぞれ行う(ステップS4)。
【００２８】
また、宛先情報・優先制御情報抽出部4にてフレームデータのヘッダ情報の抽出を行い(本例では、フレームデータA,B, C, Dに対応して、それぞれ、宛先β−低優先、宛先α−低優先、宛先β−高優先、宛先α−高優先)、抽出したヘッダ情報に基づき書込制御部6が、転送先の読出キュー8_1〜8_4のいずれかに対して、WAF読出制御部2より取得した書込アドレスを読出アドレスのデータとしてパリティ生成部7_1〜7_4で生成した故障検出用のパリティビットを付加して書き込む(ステップS5)。本例では書込アドレス“0,1,2,3”に対応してキュー8_1〜8_4にアドレス“0,1,2,3”をそれぞれ読出アドレスとして書き込んでいる。
【００２９】
図10に示す読出側動作(正常時)では、図9で書込アドレスを格納した読出キュー8_1〜8_4に対して読出制御部10が読出のスケジューリング（調停）(ステップS6)を行い、読出キュー8_1〜8_4より読出アドレスを取得する。取得の際には故障検出用のパリティビットのチェックをパリティチェック部9_1〜9_4で行っている(ステップS7)。ここで取得したアドレス（故障検出でエラー無し）は共有バッファSBよりフレームデータを読み出すアドレスとして使用する。なお、本例では、高優先の宛先α、高優先の宛先β、低優先の宛先α、低優先の宛先βの順でスケジューリングされているので、読出キュー8-4,8-3, 8-2, 8-1の順に共有バッファSBのアドレス（読出アドレス）を読み出し、これに応じて共有バッファSBからは、アドレス“3,2,1,0”の順に、それぞれ対応したフレームデータD,C,B,Aが読み出される。
【００３０】
そして、読出制御部10は、取得したアドレス（故障検出でエラー無し）を、共有バッファSBよりフレームを読み出した後の空きアドレスとして、書込アドレスFifo5に返却する(ステップS8,S9)ことで、使用領域の開放を図っている。本例では、フレームデータD,C,B,Aが共有バッファSBから読み出された順に書込アドレスFifo5のアドレス“0,1,2,3”へ次アドレスデータ“3,2,1,0”がWAF書込制御部11を介して格納される。
【００３１】
従って、次にWAF読出制御部2 から書込アドレスFifo5のアドレス“0,1,2,3”が指定されると、フレーム書込はそれぞれ共有バッファSBの空きアドレス“3,2,1,0”に対して行われることになる。ただし、WAF読出制御部2は「1023」までの巡回アドレスを書込アドレスFifo5に対して指定するので、上記のとおりフレームデータDに対応してWAFアドレス“3”を指定したときには、次に到達するフレームに対しては、書込アドレスFifo5のアドレス“4”を指定することになる。
【００３２】
図11に示す読出側動作例(異常時)では、図10と同じく図9で書込アドレスを格納した読出キュー8_1〜8_4に対して読出制御部10で読出のスケジューリング（調停）(ステップS6)を行い、読出キュー8より読出アドレスを取得する。取得の際には故障検出用のパリティビットのチェックを行っており(ステップS7)、図11の例では、取得したアドレスの一部(アドレス“1,2”)に故障検出用のパリティチェックでエラーErrが発生する場合を示している。エラーの無いアドレスは、図10で説明した場合と同じ動作になる。
【００３３】
エラーErrが発生したデータ（共有バッファSBのアドレス）は、ビットエラーが発生していることが考えられる為、キュー8から読み出したデータ（アドレス）を無効とし(ステップS10)、共有バッファSBよりフレームデータを読み出すアドレスとして使用しない(ステップS11)。
【００３４】
このとき、読出制御部10は、取得したアドレス（故障検出でエラー有り）を、共有バッファSBから読み出した領域として書込アドレスFifo5に返却を行わない。具体的には、読出制御部10は、エラーErrが発生したデータ（アドレス）についてはWAF書込制御部11に通知しない。従って、本例では、エラーの無かった共有バッファSBのアドレス“3,0”のフレームデータD,Aのみが読み出されると共に、このときの共有バッファSBのアドレス“3,0”のみが書込アドレスFifo5のアドレス“0,1”のデータとして順次書き込まれるが、書込アドレスFifo 5のアドレス“2,3”のデータは図9と同じ状態を保っている。
【００３５】
このようにして、従来例においては、共有バッファの管理において、異常が発生したとき、これに対応する共有バッファ領域部分を無効化すること（読み出さないこと）で誤動作を防止していた。
【００３６】
なお、データ格納メモリ、アドレス格納メモリ、空アドレス格納メモリのパリティ挿入部とパリティ異常検出部に加えて使用マップ監視部、未使用マップ監視部及びサーチ監視部を設けチェーン毎のアドレス複合、アドレス消失、異状チェーン発生を検出するメモリ監視方式がある（例えば特許文献1参照。）。
【００３７】
また、共有バッファのアドレス管理回路部に、共有バッファの空きアドレスと出力ポート番号毎の読み出しアドレスとを管理するCAMと、CAMより空きアドレス及び読み出しアドレスを検索するアドレス検索部を有し、その管理方法は、共有バッファの空きアドレスと、読み出しアドレスとを１つのCAMに蓄積するステップと、CAMのアドレスポインタにより共有バッファの空きまたは読み出しアドレスを検索するステップを有し、ATMセルの共有バッファのアドレスの管理を行う装置がある（例えば特許文献2参照。）。
【特許文献１】特開平11-102325号公報
【特許文献２】特開平11-261569号公報
【発明の開示】
【発明が解決しようとする課題】
【００３８】
図8〜11に示した従来例の動作説明で、読出キュー8_1〜8_4から読み出したアドレスにビットエラーが発生しなかった例（図10）、及びビットエラーが発生した例（図11）において、読出キュー8に書き込まれたアドレスを読出制御部10がスケジュール管理後に全て読み出した例を説明しているが、エラーが発生した場合と発生しなかった場合とでは、全て読み出した後の書込アドレスFifo5の状態が異なる。
【００３９】
エラーが発生しなかった場合では、読出キュー8から読み出したデータ（アドレス）を用いて、共有バッファSBからフレームデータを読み出したことで、共有バッファSB内の空きアドレス空間として、書込アドレスFifo5にデータ（共有バッファSBのアドレス）の返却を行っている。この例では、読出キュー8への書込を4回及び読出を4回行い、書込アドレスFifo 5への返却を4回（書込を4回）行っており、書込アドレスFifo5内に格納している共有バッファSBの空きアドレス空間の数は1024となっている。
【００４０】
一方、エラーが発生した場合では、エラー時に読み出されたデータ（アドレス）はビットエラーが含まれる可能性が高いので、読み出したデータを無効として処理し、書込アドレスFifo 5への返却を行わない。この為、この例では、読出キュー8への書込を4回及び読出を4回行い、書込アドレスFifo 5への返却を2回（書込を2回）行っており、書込アドレスFifo5内に格納している空きアドレス空間の数は1022（エラーの無い場合に比べて-2）となっている。すなわち、書込アドレスFifo 5に読出アドレスが返却されないときは、共有バッファSBのアドレス“1,2”は使用されないままとなってしまう。
【００４１】
これは、書込アドレスFifo 5の空き領域管理がメモリ容量に基づいて行われていることに起因する。すなわち、図11の状態では、書込アドレスFiFo5のアドレス“1,0”に共有バッファSBの空きアドレス“0, 3”が格納され、アドレス“2, 3”には共有バッファSBの無効（未使用）アドレス“2, 3”が格納されている。このときの書込アドレスFifo5の空き領域（共有バッファSBの空き領域）は1024−2＝1022である。この状態では、次のフレームデータは書込アドレスFifo5のアドレス“4”に示されるデータ“4”を書込アドレスとして共有バッファSBに書き込まれる。この共有バッファSBへの書込は、巡回アドレスによりアドレス“1023”まで進み、その後はアドレス“0,1”まで戻って行われる。
【００４２】
この時点で、書込アドレスFifo5の容量は一杯（共有バッファSBの空き領域がゼロ）となり、これを管理しているWAF読出制御部2により共有バッファSBへの書込は停止される。この後、共有バッファSBから、いずれかのフレームデータが読み出された時に、書込アドレスFifo5のアドレス“2”には、その読み出されたフレームデータの共有バッファSBのアドレスが空きアドレスとして返却されることになる。
【００４３】
この結果、共有バッファSBにはフレームデータB, Cが読み出されずに残ったままになってしまう。
【００４４】
このように、一度エラーを検出し、書込アドレスFifo 5への返却ができなかった共有バッファSBのアドレス空間は、その後の運用においても返却することができない為、物理的に1024あるアドレス空間が、エラーによって、1022(-2)となってしまい、エラー発生する毎に共有バッファSBの容量が小さくなってしまうという問題があった。
【００４５】
従って、本発明は、共有バッファの管理において異常が発生しても、共有バッファのアドレス空間を縮小せずに有効に活用できるフレーム転送方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００４６】
上記の目的を達成するため、本発明に係るパケット転送方法(又は装置)は、共有バッファにフレームデータを書き込んでから該フレームデータが必ず読み出される一の監視周期内で該共有バッファから該フレームデータが読み出されなかった該共有バッファのアドレスを記憶しておき、該アドレスを次の監視周期で検出する第1ステップ(又は手段)と、該次の監視周期において該検出したアドレスを該共有バッファの空きアドレスとして設定する第2ステップ(又は手段)と、を備えたことを特徴としている。
【００４７】
すなわち本発明では、共有バッファに書き込んだデータは或る一定時間内に必ず読み出されるという原理を利用し、共有バッファの全アドレスに対して一定時間内に1度、アクセスの有無の監視を行う。
【００４８】
その監視方法は、監視周期（上述した共有バッファからフレームが必ず読み出される一定時間）を設定し、監視周期内に共有バッファへのフレームの書込後、アクセス（読出）の無かったアドレス空間を一の監視周期で検出する。従って、少なくとも監視周期内に書込は行われたが読出が行われていないアドレス空間を検出することが可能となる。
【００４９】
すなわち、例えばパリティチェックでエラーがない通常の動作を考えると、その監視周期内に共有バッファに書き込まれたフレームデータは必ず監視周期内に読み出される為、上記の書込は行われたが読出が行われないアドレス空間は、次の監視周期迄に読出が行われ、空きアドレス空間となる。
【００５０】
これに反して監視周期内で共有バッファからフレームの読出が行われなかったとき(例えばパリティチェックでエラーが有ったとき)は、共有バッファのフレーム読出が行えなくなっているアドレスが次の監視周期で検出されることになるので、このときには、該次の監視周期において、その検出したアドレスを共有バッファの空きアドレスとして設定（開放）する。
【００５１】
また、上記の該第1ステップ(又は手段)が、該共有バッファから、フレームデータの読出が行われたときの読出アドレスを空きアドレスとして管理するステップ(又は手段)と、該監視周期を生成するステップ(又は手段)と、該共有バッファへのフレームデータ書込時にその書込アドレスと組み合わせて書込フラグ及び監視フラグから成るチェックビットを第1状態に設定し、該一の監視周期の開始時に、該第1状態のチェックビットを第2状態に更新し、その後、該一の監視周期内で該共有バッファから該フレームデータの読出が行われたとき、そのアドレスのチェックビットを該第2状態から第3状態に更新するステップ(又は手段)とを含むことができる。
【００５２】
また、上記の第2ステップ(又は手段)は、該第2状態を検出したとき、該第2状態を該第3状態に更新するステップ(又は手段)をさらに含むことができる。
【発明の効果】
【００５３】
このように、本発明では、共有バッファの容量を減少させるようなエラー発生後に、共有バッファの全領域に対してチェックを行い、領域中で無効化された領域の検出を行い、検出した領域を有効領域として活用できるように空き領域として開放することで、共有バッファの領域を有効に活用することを可能にしている。
【発明を実施するための最良の形態】
【００５４】
[1]構成例：図1
図1は、図7に示した一般的なL2スイッチにおけるスイッチカードSWCに適用される本発明による構成例を示したものである。この構成例では、図8に示した従来例に加えて、監視周期生成部15とWAFチェックバッファ16とWAF管理部17をさらに備えている。
【００５５】
WAF管理部17は、WAF書込制御部11が読出制御部10から受信し書込アドレスFifo 5にデータとして書き込む空きアドレスを同時に入力し、WAF読出制御部2から共有バッファSBへの書込アドレスに基づき、チェックビット(W/R(書込/読出)状態及び監視フラグ)の書込をWAFチェックバッファ16に対して行う。このとき、共有バッファSBからフレームデータを読み出した時には、W/R状態を‘0’(読出)とし、監視フラグを‘0’にクリアする(チェックビットの第3状態)。
【００５６】
監視周期生成部15は監視周期（共有バッファSBに書き込んだフレームデータが必ず読み出される間隔）を生成し、その周期中にWAFチェックバッファ16のアドレス空間のチェックが1周するように巡回アドレスの生成を行い、WAF管理部17へ転送する。
【００５７】
WAF管理部17は、監視周期生成部15より受信した巡回アドレスを読出アドレスとしてWAFチェックバッファ16からチェックビットを読み出し、W/R状態及び監視フラグのチェックを行う。
【００５８】
そして、WAF管理部17は、WAFチェックバッファ16から読み出したW/R状態が‘1’(書込)で監視フラグが‘0’状態の場合(共有バッファSB内にフレームデータ書込後読出未実施の状態＝チェックビットの第1状態)には、監視同期の開始時に、W/R状態を‘1’とし監視フラグを‘1’として(チェックビットの第2状態)同一アドレスへの書戻しを行う。
【００５９】
また、WAF管理部17は、WAFチェックバッファ16から読み出したW/R状態が‘0’の場合(共有バッファSB内にフレームデータ書込後読出実施済の状態)には、W/R状態を‘0’とし監視フラグを‘0’として(チェックビットの第3状態)同一アドレスへの書戻し処理を行う。
【００６０】
さらに、WAF管理部17は、W/R状態が‘1’で監視フラグが‘1’状態（共有バッファSB内にフレームデータ書込後読出未実施の状態＝チェックビットの第2状態）が監視周期以上継続した場合には、共有バッファSBの未使用(未読出又は無効)領域を検出し、W/R状態を‘0’とし監視フラグを‘0’(チェックビットの第3状態)として同一アドレスへの書戻しを行うと共に、検出したアドレスをWAF書込制御部11に返却する。なお、W/R状態‘0’で監視フラグ‘1’の状態は無く、第1〜第3状態を判別するためにW/Rビットに監視フラグを加えた2ビットでチェックビットを形成している。
【００６１】
WAF書込制御部11は、WAF管理部17より受信した返却アドレスをデータとして書込アドレスFifo5へ格納し、共有バッファのSBの未使用領域の返却を行う。この際、WAF書込制御部11は、読出制御部10より受信する返却アドレスとWAF管理部17より受信する返却アドレスに対するアクセスの調停を行う。また、アドレスはWAF書込制御部11で管理する巡回アドレスとなる。なお、このWAF管理部17による動作については次の動作例においても言及する。
【００６２】
[2]動作例：図2〜図6
次に、図1に示すスイッチカードSWCにおいて各ポートP0〜P3よりフレームデータが入力され、宛先となるポートP0〜P3へ転送されるまでの動作、並びに共有バッファSBの空きアドレス空間の監視及びアドレス空間の開放動作について、図2〜図6を参照して説明する。
【００６３】
まず、図2に示す書込側動作例において、ステップS1〜S5までは、図9に示した従来例の書込側動作例と同様であるが、ステップS5と同時に、WAF管理部17が、WAFチェックバッファ16に対し、共有バッファSB内で使用したアドレス（WAF読出制御部2からの書込アドレス）に、チェックビットとして、W/R=‘1’(書込)と、監視フラグ‘0’の書込を行っている(ステップS12)点が異なる。
【００６４】
次に、図3に示す読出側動作例(正常時)では、ステップS1,S6〜S9までは図10に示した従来例の読出側動作と同様であるが、WAF書込制御部11が、読出制御部10から取得したアドレス（故障検出でエラー無し）を、共有バッファSBより読み出したアドレスとして書込アドレスFifo5に返却する(ステップS8)と同時に、この返却したアドレスを、WAF書込制御部11経由でWAF管理部17も受け、このWAF管理部17が共有バッファSB内の開放した空きアドレスとして、WAFチェックバッファ16に対して、W/R=‘0’(読出)及び監視フラグ=‘0’に更新する(ステップS13)点が異なる。
【００６５】
図4に示すWAFチェックバッファの動作例(正常時)では、監視周期生成部15で生成される監視周期を時間軸として、図2及び図3で転送したフレームデータの動作を説明している。時間軸は、監視周期N-1(Old)→監視周期N→監視周期N+1（New）の順である。
【００６６】
(1)監視周期N-1(Old)
始めに、図2でも説明したとおり、共有バッファSBへのフレームデータ書込時において、フレームデータA〜Dの入力に対して、図4(5)(及び図10)に示すように書込アドレスFifo5に書込アドレスが格納されると共に、WAFチェックバッファ16のデータ格納アドレス“0,1,2,3”に、W/R=‘1’(書込)及び監視フラグ=‘0’の書込を行っている(ステップS21)。
【００６７】
(2)監視周期N
次に、監視周期N-1から監視周期Nへ切り替わると、すなわち一の監視周期Nが開始されると、監視周期N内でWAFチェックバッファ16の全アドレス空間に対してのチェック動作を開始し、アドレス“0”から“1023”まで順次、W/Rビット及び監視フラグのチェックを行う。この結果、本例では、アドレス“0,1,2,3”の領域は、W/R=‘1’且つ監視フラグ=‘0’(共有バッファSBへの書込後読出未状態＝第1状態)を示しており、エラーの検出はない(ステップS22)。；なお、このエラー検出に関しては、この監視周期Nでは不確実であるが、監視周期N+1でエラー無しが確定される。また、その他の領域は、W/R=‘0’且つ監視フラグ=‘0’(共有バッファSBへの書込無し、空き空間；共有バッファSBへの書込後、監視周期内に読み出された状態＝第3状態)を示しており、やはりエラーの検出は無い(ステップS23)。
【００６８】
そして、上記のバッファ16のチェック時に、第1状態にあるアドレスのチェックビットのみ更新を行っている。本例では、第1状態にあるアドレス“0,1,2,3”の領域にW/R=‘1’且つ監視フラグ=‘1’(共有バッファSBへの書込後読出未状態且つ監視周期チェック済＝第2状態)の書戻しを行い(ステップS22)、第3状態にある他のアドレスに対しては、W/R=‘0’且つ監視フラグ=‘0’の書戻し(第3状態のまま)を行っている(ステップS23)。
【００６９】
なお、この書戻し動作はバッファ16の1つのアドレスに対して一監視周期N内で行われればよく、バッファ16のチェック(読出)はアドレス順に行われるため、一つの書戻し動作が行われているときに、バッファ16の他のアドレスのチェックビットが共有バッファSBへの書込に伴う更新(第3状態→第1状態)が行われていてもよい。
【００７０】
(3)監視周期N；共有バッファからの読出後
また、監視周期N内に読出制御部10は、読出キュー8_1〜8_4より書込アドレスを読み出し（故障検出でエラー無し）、読み出したアドレスを用いて共有バッファSBよりフレームデータの読出を行う。この際、読み出したアドレスが読出制御部10からWAF書込制御部11に返却されることにより、WAF書込制御部11から書込アドレスFifo5へ該アドレスが空きアドレスとして与えられるときWAF管理部17にも同時に与えられる。これにより、WAF管理部17はWAFチェックバッファ16に対してW/R=‘0’且つ監視フラグ=‘0’(共有バッファSBへの書込無し、空き空間)を上書きし、共有バッファSBからの読出完了状態を格納する(ステップS24)。
【００７１】
ここで、監視周期生成部15で生成される監視周期としては、システム上の動作において、フレームが必ず転送できる時間を指している。例えば、共有バッファSBに格納されたフレームデータが必ず3ms以内に出力されるようなシステムの場合には、監視周期は3ms以上に設定を行う。
【００７２】
(4)監視周期N+1
さらに次の監視周期N+1に切り替わると、監視周期N+1内にWAFチェックバッファ16の全アドレス空間に対してのチェック動作を再度開始し、アドレス“0”から“1023”まで順次、W/Rビット及び監視フラグのチェックを行う。本例では、全ての領域が、W/R=‘0’且つ監視=‘0’(共有バッファSBへの書込無し、空き空間)を示しており、エラーの検出無し(空き領域の検出無し)の場合を示している(ステップS25)。この時点で、上述したエラー検出無しの確定がなされる。
【００７３】
図5に示す読出側動作例(異常時)では、図3と同じく読出キュー8に対して読出制御部10が読出のスケジューリング（調停）(ステップS6)を行い、読出キュー8より読出アドレスを取得する。このアドレス取得の際には故障検出用のパリティビットのチェックを行っており(ステップS7)、図5の例では、図11の従来例と同様に、取得したアドレス“1,2”に故障検出用のパリティチェックでエラーが発生する場合を示している。エラーの無い場合は、図3で説明した場合と同じ動作になる。
【００７４】
エラーが発生した書込アドレス“1,2”には、ビットエラーが発生していることが考えられる為、読み出した書込アドレスを無効とし(ステップS10)、共有バッファSBよりフレームデータを読み出すアドレスとして使用しない。これは、使用した場合には、誤ったアドレスのデータを出力してしまう場合があるからである。
【００７５】
また、取得したアドレス（故障検出でエラー有り）“1,2”は、共有バッファSBから読み出した領域として書込アドレスFifo5に返却されない。これは、従来例と同様に、返却した場合には、誤ったアドレス空間を返却してしまったことによって、読出前の本来のデータを上書きしてしまう場合があるからである。
【００７６】
さらに、取得したアドレス（故障検出でエラー有り）“1,2”については、WAFチェックバッファ16に対してアクセスは行われない。なお、前述したように、共有バッファSB内の領域を開放(読出)していないので、読出完了の処理を行わない。
【００７７】
図6に示すWAFチェックバッファ16の動作例（異常時）では、図4と同じ監視周期を時間軸として、図2及び5で転送したフレームデータの動作を説明しており、図4とは、下記の周期(3a)及び(4a)のみが異なっている。なお、この動作例においても、図11に示した従来例と同様に、共有バッファSBのアドレス“1,2”に故障検出用のパリティチェックでエラーが発生したものとする。
【００７８】
(3a)監視N;読出後
監視周期N内に読出制御部10からのスケジューリング要求を受け、キュー8_1〜8_4より書込アドレスを読み出し、故障検出でエラーが無い場合（宛先α−高優先のキュー8_4、及び宛先β−低優先のキュー8_1）には、読み出した書込アドレス“0,3”を用いて共有バッファSBよりフレームデータの読出を行うと共に、読み出した書込アドレス“0,3”のWAFチェックバッファ16のチェックビットに対して、WAF管理部17が、W/R=‘0’且つ監視フラグ=‘0’(共有バッファSBへの書込無し、空き空間)を上書し(ステップS24)、共有バッファSBからの読出完了状態を格納する。
【００７９】
故障検出でエラーErrが有った場合（宛先β−高優先のキュー8_3、及び宛先α−低優先のキュー8_2）には、読み出した書込アドレス“1,2”にビットエラーが発生している可能性がある為、データを無効とし、共有バッファSBからの読出処理、書込アドレスFifo5への返却処理、及びWAFチェックバッファ16へのチェックビットの更新処理は実行されない。すなわち、WAFチェックバッファ16においては、アドレス“1,2”のチェックビットは、W/R=‘1’且つ監視フラグ=‘1’(第2状態)のままである。
【００８０】
(4a)監視周期N+1
さらに次の監視周期N+1に切り替わると、監視周期N+1内にWAFチェックバッファ16の全アドレス空間に対してのチェック動作を再度開始し、アドレス“0”から“1023”まで順次、W/Rビット及び監視フラグのチェックを行う。本例では、WAFチェックバッファ16のアドレス“1,2”において、W/R=‘1’且つ監視フラグ=‘1’(共有バッファSBへの書込後、監視周期期間中の読出無し＝第2状態)を示しており、エラー検出(未使用領域として検出)を行うと共にW/R=‘0’且つ監視フラグ=‘0’(第3状態)をそれぞれアドレス“1,2”のチェックバッファ領域に書き戻す（ステップS26）。残りのアドレス空間は、W/R=‘0’且つ監視フラグ=‘0’(共有バッファSBへの書込無し、空き空間)を示しており、エラーの検出はない。
【００８１】
また、WAF管理部17が、先に検出した未使用アドレス“1,2”をWAF書込制御部11を経由して書込アドレスFifo5に返却する(ステップS27)ことで、同図(6)に示す書込アドレスFifo 5のアドレス“0,1,2,3”には次アドレスデータ“3,0,1,2”が書き込まれ、以て故障により共有バッファSB内の空間として使用できない領域の開放を行う。
【００８２】
なお、本発明は、上記実施例によって限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。        
【図面の簡単な説明】
【００８３】
【図１】L2スイッチにおけるスイッチカードに適用される本発明の構成例を示すブロック図である。
【図２】図1に示す本発明の構成例における共有バッファの書込側動作例を説明するためのブロック図である。
【図３】図1に示す本発明の構成例における共有バッファの読出側動作例(正常時)を説明するためのブロック図である。
【図４】図1に示す本発明の構成例に用いられる書込アドレスFifo(WAF)チェックバッファの動作例(正常時)を説明するためのブロック図である。
【図５】図1に示す本発明の構成例における共有バッファの読出側動作例(異常時)を説明するためのブロック図である。
【図６】図1に示す本発明の構成例に用いられる書込アドレスFifo(WAF)チェックバッファの動作例(異常時)を説明するためのブロック図である。
【図７】本発明及び従来例が共通に適用されるL2スイッチの概略構成を示したブロック図である。
【図８】L2スイッチにおけるスイッチカードに適用される本発明の従来構成例を示すブロック図である。
【図９】図8に示す従来例における共有バッファの書込側動作例を説明するためのブロック図である。
【図１０】図8に示す従来例における共有バッファの読出側動作例(正常時)を説明するためのブロック図である。
【図１１】図8に示す従来例における共有バッファの読出側動作例(異常時)を説明するためのブロック図である。
【符号の説明】
【００８４】
1  フレーム多重部
2,10  読出制御部
3,7_1〜7_4  パリティ生成部
4  宛先情報・優先制御情報抽出部
5  書込アドレスFifo(WAF)
6,11  書込制御部
8_1〜8_4  読出キュー
9_1〜9_4,12  パリティチェック部
13  データ廃棄判定部
14  フレーム分離部
15  監視周期生成部
16  WAFチェックバッファ
17  WAF管理部
SB  共有バッファ
SP  スイッチ部
SWC  スイッチカード
C#0〜C#3  LIUカード
TG#0〜TG#3  L2フレーム終端/生成部
図中、同一符号は同一又は相当部分を示す。
【図１】
2008160705.tif 000003
【図２】
2008160705.tif 000004
【図３】
2008160705.tif 000005
【図４】
2008160705.tif 000006
【図５】
2008160705.tif 000007
【図６】
2008160705.tif 000008
【図７】
2008160705.tif 000009
【図８】
2008160705.tif 000010
【図９】
2008160705.tif 000011
【図１０】
2008160705.tif 000012
【図１１】
2008160705.tif 000013