(57)【要約】【課題】一般的なL2スイッチで適用が可能であり、且つ複雑なループ発生判断の為の条件式等を必要としないループ検出方法及び装置を提供する。【解決手段】同一の送信元アドレスのパケットが異なるポートに入力した端末移動状態を検出し、各ポート毎に端末移動状態を検出した回数をカウントし、該回数が閾値を越えたとき、そのポートにループが発生していると見做す。【選択図】    図4
2006173785.tif 000002
【特許請求の範囲】
【請求項１】
同一の送信元アドレスのパケットが異なるポートに入力した端末移動状態を検出する第１のステップと、
該第１のステップにおいて各ポート毎に端末移動状態を検出した回数をカウントし、該回数が閾値を越えたとき、そのポートにループが発生していると見做す第２のステップと、
を備えたことを特徴とするループ検出方法。
【請求項２】
請求項１において、
該第１のステップが、パケットの送信元アドレスとポートとの関係を学習してテーブルに保持する第３のステップと、該第３のステップによる学習の後、パケットを入力したポートと、該入力したパケットの送信元アドレスと同一のアドレスについて該テーブルから検索されるポートとが異なる該端末移動状態を検出する第４のステップとを含むことを特徴としたループ検出方法。
【請求項３】
請求項１において、
該閾値が、該ポートに対する端末の移動回数と見做される回数を越えた値であることを特徴としたループ検出方法。
【請求項４】
請求項１において、
該第２のステップで該ループの発生と見做したとき、該ループが発生しているポートをマスクする第５のステップをさらに備えたことを特徴とするループ検出方法。
【請求項５】
請求項１又は２において、
該第１のステップが、該ポートがどのカードのポートであるかも検出条件とするステップを更に含むことを特徴としたループ検出方法。
【請求項６】
同一の送信元アドレスのパケットが異なるポートに入力した端末移動状態を検出する第１の手段と、
該第１の手段が各ポート毎に端末移動状態を検出した回数をカウントし、該回数が閾値を越えたとき、そのポートにループが発生していると見做す第２のステップと、
を備えたことを特徴とするループ検出装置。
【請求項７】
請求項６において、
該第１の手段が、パケットの送信元アドレスとポートとの関係を学習してテーブルに保持する第３の手段と、該第３の手段による学習の後、パケットを入力したポートと、該入力したパケットの送信元アドレスと同一のアドレスについて該テーブルから検索されるポートとが異なる該端末移動状態を検出する第４の手段とを含むことを特徴としたループ検出装置。
【請求項８】
請求項６において、
該閾値が、該ポートに対する端末の移動回数と見做される回数を越えた値であることを特徴としたループ検出装置。
【請求項９】
請求項６において、
該第２の手段が該ループの発生と見做したとき、該ループが発生しているポートをマスクする第５の手段をさらに備えたことを特徴とするループ検出装置。
【請求項１０】
請求項６又は７において、
該第１の手段が、該ポートがどのカードのポートであるかも検出条件とする手段を更に含むことを特徴としたループ検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はループ検出方法及び装置に関し、特にインターネット通信に用いられるコアスイッチやエッジスイッチ等のパケット転送用L2スイッチにおけるループ検出方法及び装置に関するものである。
【０００２】
従来より、L2スイッチではループの無いネットワークの構築が前提となっているが、設定誤り等でループが発生することがあり、ループの検出が求められている。
【背景技術】
【０００３】
近年、インターネット通信の普及とともにIP（インターネットプロトコル）パケットによる通信の需要が急増して来ている。このようなパケット通信ではL2スイッチやルータを用いてパケットの転送を行っているが、L2スイッチではネットワーク内のツリーを把握することでループを持たないネットワークを構成することができる。
【０００４】
ネットワーク内のツリーを把握する方法としては、一般にスパニングツリープロトコルが知られている。このスパニングツリープロトコルは、ネットワーク内に存在するスイッチ間で動作し、ループの検出と解消を自動的に行って最適な方法でネットワークを構成できるプロトコルである。
【０００５】
このようなスパニングツリープロトコルを用いることでループの発生を抑止できることが知られているが、複雑なネットワークにおいては、実際の構成を常に正確に把握することは困難である。また、ネットワーク管理者が、動作中のネットワークにスイッチを追加したり、オフにしていたスイッチをオンにしたりするとき、ループが構成されることもあるので、このように発生したループ状態を検出する機構が必要となる。
【０００６】
ループを検出する方法として、ユーザのパケットをL2スイッチによってイーサネット（登録商標）で包み込む、EoE(Ether over Ether) を用いる手法が知られている。
【０００７】
しかしながら、このような手法では、EoEをサポートする特殊なL2スイッチでしかネットワークを構築することができない。また、イーサフレームを、更にカプセル化するため、ユーザデータに対するオーバーヘッドが大きくなってしまうという問題を抱えている。
【０００８】
一方、受信したフレームのフレーム情報と受信時間をテーブルに登録しておき、フレームを受信した際にテーブルを参照することにより同じフレームの二度目の受信を検出してループ発生を判断し、この判断に基づき受信フレームを送信せずに破棄し、無限ループの発生を回避したフレーム中継装置がある（例えば、特許文献1参照）。
【特許文献１】特開2001-197114号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながらこのような特許文献1の場合には、所定の条件式を満足する場合にループ発生と判断しており、その為の条件式は、受信フレームと登録フレームからパケット転送速度を算出し、この算出したパケット転送速度が所定の最大パケット転送速度を超え、有り得ない値となっている場合にループ発生と判断するものであり、このようなパケット転送速度まで検出しなければならないという問題があった。
【００１０】
従って本発明は、一般的なL2スイッチで適用が可能であり、且つ複雑なループ発生判断の為の条件式等を必要としないループ検出方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成するため本発明に係るループ検出方法は、同一の送信元アドレスのパケットが異なるポートに入力した端末移動状態を検出する第１のステップと、該第１のステップにおいて各ポート毎に端末移動状態を検出した回数をカウントし、該回数が閾値を越えたとき、そのポートにループが発生していると見做す第２のステップと、を備えたことを特徴としている。
【００１２】
すなわち、通常は端末が移動しない限り、同一の入力ポートに同一の送信元アドレスのパケットが入力されるが、端末が移動したような場合には、同一の送信元アドレスのパケットが異なるポートに入力することになる。
【００１３】
第1のステップではこのような端末移動状態を検出し、第2のステップでは更に、第1のステップにおいて各ポート毎に端末移動状態を検出した回数をカウントする。この回数が閾値を超えたとき、すなわち、通常有り得ないような端末移動回数であることがわかった場合には、そのポートにループが発生していると見做すことができる。
【００１４】
上記の本発明の原理を図を参照して以下に説明する。
【００１５】
図1は正常なネットワーク例を示しており、この例では、L2スイッチ40_1と40_2がコアネットワーク43を介して接続される構成になっている。L2スイッチ40_1はポートP0〜P2を有し、その内のポートP0に端末41（MACアドレス:X）が接続されており、またL2スイッチ40_2はポートP1〜P12を有し、その内のポートP10が端末42（MACアドレス:Y）に接続されている。
【００１６】
まず最初は、或るポートから入力して来たパケットデータを他の全てのポートからフラッディングによって送出し、そのパケットデータの宛先アドレスの端末から返信パケットデータの送られて来ることにより、L2スイッチ40_1,40_2にはそれぞれ学習テーブルT10,T11が学習されることになる。
【００１７】
この後、端末41からパケットデータPD1がL2スイッチ40_1のポートP0に送られて来ると、L2スイッチ40_1においては、既に学習されている学習テーブルT10に基づき、パケットデータPD1の宛先アドレスDA=Yを検索して、パケットデータPD1をポートP1に出力する。すなわちパケットデータPD1はポートP0からP1へ転送され、コアネットワーク43に送出される。
【００１８】
そして、このコアネットワーク43を経由してL2スイッチ40_2に到着したパケットデータPD1は、そのポートP11に入力される。そしてL2スイッチ40_2においては、既に学習されている学習テーブルT11を参照することにより、宛先アドレスDA=YがポートP10に出力するように学習されているので、パケットデータPD1はポートP10から端末42に転送されることになる。
【００１９】
このようなパケットデータPD1を受信した端末42から、端末41に対してパケットデータを送信するとき、パケットデータPD2がL2スイッチ40_2のポートP10へ送信される。
【００２０】
これを受けたL2スイッチ40_2においては、送信元アドレスSA=XのパケットデータPD1がポートP11に入力されたことが学習テーブルT11において既に学習されているので、パケットデータPD2はポートP10からポートP11へ転送されてコアネットワーク43に送出される。
【００２１】
そして、コアネットワーク43からL2スイッチ40_1のポートP1にパケットデータPD2が送られると、L2スイッチ40_1においては学習テーブルT10が、パケットデータPD2の宛先アドレスDA=Xに対してポートP0を示しているので、パケットデータPD2はポートP1からポートP0に転送され、以って端末41に到達するようになる。
【００２２】
このような正常なネットワーク例に対し、図2は、L2スイッチ40_1においてポートP1とポートP2がループ状態になったときのネットワーク動作例を示している。
【００２３】
すなわち、この場合には、L2スイッチ40_1のポートP0に入力されたパケットデータPD1は、学習テーブルT10を参照することにより、その宛先アドレスDA=Yを検索し、ポートP1に出力される。ただし、この場合、ポートP1とP2とがループ状態にあるので、パケットデータPD1は図示のようにポートP2に入力されることになる。
【００２４】
このときのパケットデータPD1は、ポートP2に入力されると、学習テーブルT10を参照することによりその宛先アドレスDA=YがポートP1を示しているので、ポートP1に転送される。このとき、パケットデータPD1の送信元アドレスSA=Xは学習テーブルT10においてポートP2に書き換えられることになる。
【００２５】
従って、このL2スイッチ40_1においては、端末41があたかもポートP0からP2に移動したかのように動作することになるが、ポートP1とP2はループ状態にあるため、パケットデータPD1がポートP0に入力して来ない限り、学習テーブルT10は書き換えられたまま変わらず、パケットデータPD1はポートP1とP2の間を循環することになる。
【００２６】
従って、パケットデータPD1がポートP0に入力して来たときには、再び送信元アドレスSA=XがポートP0になるように学習テーブルT10が再び書き換えられる。そして、これがポートP1に転送されると再びパケットデータPD1としてポートP2にリンクされるので、このような書き換えを繰り返すことになる。
【００２７】
このように、端末移動は、ネットワークに接続していた端末のケーブルを或るポートから抜き、別のポートへ再接続するような場合に実際の動作として起こり得るが、このような端末移動はそれほど頻繁に発生することは有り得ない。
【００２８】
従って、ポート毎にカウントした端末移動回数を閾値と比較し、この閾値を超えた場合、想定されている端末移動ではない異常状態、すなわちループ状態を検出することができることになる。
【００２９】
これをネットワーク上でループが組まれた場合としてその動作を考えると、パケットデータを中継した装置から転送したパケットデータが折り返って来ることになり、この折り返って来たパケットは同一ポートから入力された場合以外は端末移動に見えるため、ループが組まれた場合にはネットワーク内をパケットがループし、端末移動が連続して発生しているのと同様の動作となり、実際の動作で発生する端末移動の発生頻度に比べ頻繁に端末移動回数がカウントされることになる。これを利用して異常状態をループ状態として検出することが可能になる。
【００３０】
ここで、上記の第1のステップは、パケットの送信元アドレスとポートとの関係を学習してテーブルに保持する第３のステップと、該第３のステップによる学習の後、パケットを入力したポートと、該入力したパケットの送信元アドレスと同一のアドレスについて該テーブルから検索されるポートとが異なる該端末移動状態を検出する第４のステップとを含むことができる。
【００３１】
また上記の閾値は、該ポートに対する端末の移動回数と見做される回数を越えた値でよい。
【００３２】
また上記の第２のステップで該ループの発生と見做したとき、該ループが発生しているポートをマスクする第５のステップをさらに備えたこともできる。
【００３３】
また上記の第1のステップが、該ポートがどのカードのポートであるかも検出条件とするステップを更に含むことができる。
【００３４】
すなわち、1つのカードにおけるポート間のループ状態だけでなく、複数のカードの内のどのカードのどのポート間にループが発生したのかを検出することができる。
【００３５】
さらに上記の第1のステップは、該端末移動状態を検出したとき、該パケットを、外部に出力しないことを条件としてフラッディングするステップを更に含むことができる。
【００３６】
すなわち、このような端末移動状態は、外部のネットワーク等には知らせる必要がなく、内部においてフラッディングすれば十分である。
【００３７】
なお上記の第1のステップは、該学習したテーブルにパケットの宛先アドレスを含み、該入力パケットの宛先アドレスが該テーブルに含まれていなかったときは、該パケットをフラッディングし、該宛先アドレスが該テーブルに含まれていたときには該入力パケットをユニキャストするステップを更に含むものである。
【００３８】
上記のループ検出方法を実現するネットワークに係るループ検出装置は、同一の送信元アドレスのパケットが異なるポートに入力した端末移動状態を検出する第１の手段と、該第１の手段が各ポート毎に端末移動状態を検出した回数をカウントし、該回数が閾値を越えたとき、そのポートにループが発生していると見做す第２のステップと、を備えることができる。
【００３９】
また上記の第1の手段は、パケットの送信元アドレスとポートとの関係を学習してテーブルに保持する第３の手段と、該第３の手段による学習の後、パケットを入力したポートと、該入力したパケットの送信元アドレスと同一のアドレスについて該テーブルから検索されるポートとが異なる該端末移動状態を検出する第４の手段とを含むことができる。
【００４０】
また上記の閾値は、該ポートに対する端末の移動回数と見做される回数を越えた値であればよい。
【００４１】
また上記の第２の手段が該ループの発生と見做したとき、該ループが発生しているポートをマスクする第５の手段をさらに備えることができる。
【００４２】
また上記の第1の手段が、該ポートがどのカードのポートであるかも検出条件とする手段を更に含むことができる。
【００４３】
また上記の第1の手段は、該端末移動状態を検出したとき、該パケットを、外部に出力しないことを条件としてフラッディングする手段を更に含むことができる。
【００４４】
また上記の第1の手段は、該学習したテーブルにパケットの宛先アドレスを含み、該入力パケットの宛先アドレスが該テーブルに含まれていなかったときは、該パケットをフラッディングし、該宛先アドレスが該テーブルに含まれていたときには該入力パケットをユニキャストする手段を更に含むことができる。
【発明の効果】
【００４５】
本発明に係るループ検出方法及び装置によれば、一般的なL2スイッチによって異常状態を検出し、ループ判断が可能なため、イーサフレームでカプセル化した特殊なネットワーク網に限定されることなく、一般的なネットワーク網内のループによる輻輳を検出し且つこの輻輳状態を回避することが可能となる。
【発明を実施するための最良の形態】
【００４６】
図3は、本発明に係るループ検出方法を実現する装置の概略構成例を示したものであり、この実施例によるループ検出装置としてL2スイッチ40を用いている。このL2スイッチ40は一例として4枚のカード＃0〜＃3とこれらのカード間を接続するスイッチ部SWとで構成されている。
【００４７】
カード＃0〜＃3は、それぞれ、ポートP0〜P3,P10〜P13,P20〜P23,P30〜P33と、インタフェース部IF0〜IF3と、イングレス（Ingress）部ING0〜ING3と、イーグレス（Egress）部EGR0〜EGR3とで構成されている。イングレス部ING0〜ING3はそれぞれ、学習テーブルT0〜T3を備えている。これらのイングレス部ING0〜ING3及びイーグレス部EGR0〜EGR3はスイッチ部SWを介して相互接続される。学習テーブルT0〜T3はイーグレス部EGR0〜EGR3からそれぞれ学習情報STD0〜STD3が与えられるようになっている。
【００４８】
このような構成例において、例えばカード＃0のポートP0〜P3のいずれか一つから入力されたパケットデータは、その宛先（DA:Destination Address）に基づいて学習テーブルT0を検索し、パケットデータを転送するカード及びポートの情報を取得し、スイッチ部SWへパケットデータを転送する。パケットデータを転送する際に、そのパケットデータには宛先端末に接続されるカード番号及びポート番号が付加される。
【００４９】
宛先アドレスが学習テーブルT0に登録されていない場合には、イングレス部ING0はスイッチ部SWを介して入力されたパケットデータをL2スイッチ40内の全てのカード♯0〜♯3のイーグレス部EGR0〜EGR3に転送する（フラッディング）。このときもパケットデータに宛先カード番号及びポート番号を付加する。
【００５０】
各イーグレス部EGR0〜EGR3は、スイッチ部SWから受け取ったパケットデータ（カード番号及びポート番号を含む）から転送元アドレス（SA:Source Address）とカード番号とポート番号を抽出し、学習情報STD0としてイングレス部ING0内の学習テーブルT0に転送して登録する。この登録された学習情報STD0は、転送元アドレスSAがどのカードのどのポートの配下に存在しているかを示しており、宛先アドレスDAによる学習テーブルT0の検索時に取得するパケットデータの宛先情報となる。
【００５１】
図4は、図3に示したL2スイッチ40におけるカード＃0〜＃3の各々の実施例構成を示しているが、この実施例は特に図1に示したカード＃0の構成例を示している。
【００５２】
この構成例において、ポートP0〜P3は、それぞれ、マスク部50p_0〜50p_3（以下、50pで総称することがある。）を経由して書込制御部50a_0〜50a_3（以下、50aで総称することがある。）に接続されるとともに待ち合わせバッファ50b_0〜50b_3（以下、50bで総称することがある。）に接続されている。これにより、ポートP0〜P3のいずれかに入力して来たパケットデータはマスク部50pを経由して待ち合わせバッファ50bのいずれかに書き込まれる。なお、マスク部50pはハードソフトインタフェースHISによって制御され、最初はマスクしない設定になっている。
【００５３】
待ち合わせバッファ50bには、それぞれ書込制御部50aから書込イネーブル信号WEが与えられている。待ち合わせバッファ50bにパケットデータが書き込まれたとき、書込制御部50aからは、待ち合わせバッファ50bが空か否かを示す書込完了フラグWFが読出制御部50dに与えられる。
【００５４】
読出制御部50dでは、受信した書込完了フラグWFから、待ち合わせバッファ50bの容量を監視し、バッファ50b内にパケットデータが有る場合に読出イネーブル信号REを待ち合わせバッファ50bに与え、以って待ち合わせバッファ50bからパケットデータを読み出すと共に、ポート番号格納部50c_0〜50c_3（以下、50cで総称することがある。）に格納されたポート番号を付加した読出データRD0〜RD3として選択回路50eに送る。
【００５５】
選択回路50eは、書込完了フラグWFを受けた読出制御部50dから発生された選択信号Selを受けることにより、現在受信しているポートからの読出データRD0〜RD3のいずれかを選択出力することになる。
【００５６】
また、読出制御部50dからは、パケットデータの先頭を示すフレームパルスFPが発生されてタイミング生成部50fに与えられる。このタイミング生成部50fには、MACアドレス（宛先アドレス/送信元アドレス）抽出部50gとポート/カード番号抽出部50hとポート/カード番号比較部50jとカード番号格納部50lとが接続され、それぞれにタイミング信号が与えられるようになっている。また、選択回路50eから出力されるパケットデータはMAC抽出部50gとポート/カード番号抽出部50hとフラッディング判定部50mに送られる。
【００５７】
MACアドレス抽出部50gでは、タイミング生成部50fで生成したタイミングに基づき、パケットデータ内のMACアドレス（宛先アドレス及び送信元アドレス）を抽出して保持する。保持したMACアドレスは学習テーブル50iに検索キーとして送られる。
【００５８】
また、学習テーブル50iは図3に示した学習テーブルTOに対応しており、この学習テーブル50iでは受信したMACアドレスからテーブル検索を行い、MACアドレスに対して登録されているポート番号及びカード番号をポート/カード番号比較部50j及びフラッディング判定部50mへ出力するとともに、フラッディング判定部50mに対してはさらに検索結果（有り/無し）情報を出力する。
【００５９】
ポート/カード番号抽出部50hにおいては、受信した先頭信号からパケットデータに付加したポート番号及びカード番号を抽出し、ポート/カード番号比較部50jへ送る。ポート/カード番号比較部50jでは、ポート/カード番号抽出部50hで保持したポート番号及びカード番号と、学習テーブル50iにおいて既に検索したポート/カード番号を、タイミング生成部50fで生成したタイミング（比較タイミング）に基づいて比較し、不一致の場合にカウント部50kのカウントをカウントパルスによってインクリメントする。
【００６０】
ハードソフトインタフェースHISは、カウント部50kを一定間隔でポーリングし、各ポート毎のカウント数（端末移動数）を読み出し、ソフトウェアでカウント数を集計する。そして集計したカウント数がある一定期間中に一定の閾値Fを超えた場合にその対象ポートのループ検出を行うとともに、ループを検出したカードの対象ポートに対してマスク部50pへのマスク処理を行い、パケットデータの転送を抑止するようにしている。
【００６１】
カード番号格納部50lは、このカード＃0の固有のカード番号を記憶しており、タイミング生成部50fからのタイミング信号を受けて選択回路50eからのパケットデータとともにフラッディング判定部50mに送られる。従って、フラッディング判定部50mへの入力パケットデータのヘッダは、図示のように“DA/SA/SAのポート番号/SAのカード番号”となる。
【００６２】
フラッディング判定部50mは、学習テーブル50iからの検索結果（有り/無し情報）及び学習テーブル50iから検索されたポート/カード番号並びにポート/カード番号比較部50jからの不一致情報を受けて、その出力パケット（フラッディングパケット又はユニキャストパケット）を学習依頼パケット生成部50n及び多重部（MUX）部50oに送るように接続されている。
【００６３】
学習依頼パケット生成部50nは学習テーブル部50iの検索結果並びにポート/カード番号比較部50jからの不一致情報も受けるように接続されており、学習依頼パケットを生成して多重部50oに送る。この多重部50oからの、ポート番号及びカード番号が付加されたパケットデータは図3に示したスイッチ部SWへ送られる。
【００６４】
スイッチ部SWを経由して入力したパケットデータは全てのイーグレス部EGR0〜EGR3又はこれらのいずれか一つに送られ、カード番号抽出部50qとポート番号抽出部50rとアドレス抽出部50sとを経由して学習情報STD0が学習テーブル部50iに格納される。
学習テーブル50iにおいては、学習情報受信時に、学習テーブル50i部内において検索及び学習登録の調停を行い、MACアドレス情報に対するポート番号及びカード番号の登録を行う。
【００６５】
また、各エグレス部EGR0〜EGR3は学習依頼パケット廃棄部50tを備えており、スイッチ部SWからのパケットデータが学習依頼パケットであるときのみパケット廃棄を行い、それ以外はスルーで通過させるようになっている。
【００６６】
図5は、学習テーブル50iの構成例を示したもので、この学習テーブルの一例としてはCAMを用いることができ、三つの項目に分かれている。まず最初の項目はMACアドレス（宛先アドレス/送信元アドレス）であり、次の項目はポート番号であり、三つ目の項目はカード番号である。なお、MACアドレスはこれに限定されるものではなく種々のアドレスを用いることができる。
【００６７】
以下、図4に示した実施例の動作を、図3及び図6に示した出力パケットの出力動作要約並びに図7〜図11に示した学習テーブル例を参照して以下に説明する。なお、この動作例においては、図3に示したカード＃0とカード＃1のみを例にとり、カード＃0にパケットデータが入力された場合を想定している。カード＃0及びカード＃1における学習テーブルはパケットデータ受信毎に学習更新される。
初期状態（パケットデータPD1〜PD4の受信前）：図7の学習テーブル
今、カード＃0における学習テーブルは図7（1）に示すようなテーブル状態となっており、カード＃1の場合は同図（2）に示すテーブル状態になっているものとする。これは、図1で説明したように、フラッディングと学習を行った結果、得られたものである。
パケットデータPD1(DA=300; SA=100; ポートP0)の受信後の動作：図8の学習テーブル
図7に示した学習テーブル50i（T0）の初期状態において、パケットデータPD1(DA=300;SA=100)がポートP0から入力されると、パケットデータPD1は書込制御部50aによって書込制御され、待ち合わせバッファ50bに書き込まれる。書込制御部50aは、書込完了後に書込完了フラグFWを読出制御部50dに転送し、この読出制御部50dは書込制御部50a及びポート番号格納部50cから読出制御及び選択部50eの選択制御を行う。選択部50e及びカード番号格納部50lにより、学習するための情報が付加されたパケットデータ（DA/SA/ポートPO/カード♯0）が生成され（図4のフレーム参照）、フラッディング判定部50mへ送られる。
【００６８】
この後、MACアドレス抽出部50gにおいてMACアドレスを抽出し、学習テーブル50iに対し、まず宛先アドレスDA=300の検索を行って図7（1）に示すカード＃0の学習テーブル50iから「ポートP12/カード＃1」を取得する。これは学習テーブル50iに宛先情報が格納されていたことを示しているので、図6に示す動作要約図において、DA検索結果が「有り」（ヒット）となり、これがフラッディング判定部50mに与えられる。
【００６９】
フラッディング判定部50m においては、DA検索結果が「有り」であり、SA検索も「有り」であり、さらには未だ入力ポートの不一致検出はされないから、選択回路50e及びカード番号格納部50lからのパケットデータに宛先アドレスDAの「ポートP12/カード＃1」を付加したパケットデータ（DA/ポートP12/カード♯1/SA/ポートP0/カード♯0）として多重部50oに送る（図4のフレーム参照）。多重部50oは更にこのパケットデータPD1をスイッチ部SWを介してカード＃1のポートP12へ向けてユニキャスト送信する。
【００７０】
カード＃1においては、スイッチ部SWからパケットデータPD1をイーグレス部EGR1において受信する。そして、このパケットデータPD1はそのイーグレス部EGR1における学習依頼パケット廃棄部50tをそのまま通過してインタフェース部IF1及びポートP12を介して対応する端末に出力されることになる。
【００７１】
また、このカード＃1のイーグレス部EGR1において、パケットデータはカード番号抽出部50qとポート番号抽出部50rとアドレス抽出部50sに送られ、それぞれカード番号、ポート番号、及びアドレスが抽出されて学習テーブル50iに送られる。
【００７２】
この場合、図7（2）に示すカード＃1の学習テーブル50i（図3の学習テーブルT1）においては、パケットデータPD1の送信元アドレス（SA=100）は格納されていないので、図8（2）において網掛けで示すようにカード＃0のポートP0が送信元アドレスSA=100の端末に接続されていることが学習記憶される。
【００７３】
一方、カード＃0においては、ポート/カード番号抽出部50hにおいて、パケットデータPD1に付加された送信元アドレスについてのポート番号50c及びカード番号50lを抽出してポート/カード番号比較部50jへ送る。ポート/カード番号比較部50jにおいては、ポート/カード番号抽出部50hで抽出したポート/カード番号と、MACアドレス抽出部50gによって抽出された送信元アドレスSAに基づいて学習テーブル50iから検索したポート/カード番号との比較を行う。
【００７４】
この結果、図7（1）に示したパケットデータPD1の受信前のカード＃0におけるポートP0のMACアドレスは“100”であり、これは、図8（1）に示したパケットデータPD1の受信後のカード＃0におけるポートP0のMACアドレス＝100と同一であるから一致検出する。一致検出したときにはカウント部50kに対してカウントアップパルスは出力しない。
【００７５】
このようにして、カード＃0及びカード＃1における学習テーブルは図8（1）及び（2）に示すように登録される。
パケットデータPD2 (DA=600; SA=500; ポートP2)の受信後：図9の学習テーブル
今、パケットデータPD2 (DA=600;SA=500)がカード♯0のポートP2から入力されると、上記のパケットデータPD1の場合と同様にパケットデータの生成を行い、MACアドレス抽出部50gにおいてMACアドレスを抽出し、学習テーブル50iに対して宛先アドレスの取得及び転送元アドレスの確認を行う。
【００７６】
この場合に、宛先アドレスDA=600であるので、図9（1）に示すようにカード＃0においては、アドレス“600”に相当する項目は無く、宛先アドレスを取得できないため、この結果、学習テーブル50iからフラッディング判定部50mに対して検索結果「無し」（ミスヒット）の信号が与えられる。これにより、フラッディング判定部50mは、図6に示す如く、生成されたパケットデータに対してフラッディング識別子を付加し多重部50aを経由してスイッチ部SWへ出力する。これによりスイッチ部SWは全てのカード及びポート宛にフラッディング転送を行う。
【００７７】
また、MACアドレス抽出部50gにおいて送信元アドレスSAを検索した場合は、やはり送信元アドレスSA=500は図8（1）に示すカード＃0においては検索されないので、ポート/カード番号比較部50jでの比較は行われず、従ってカウント部50kへのカウントアップパルスも発生されない。
【００７８】
全カード及びポートに転送されたパケットデータは、各カードにおいて「送信元アドレスSA=500/ポートP2/カード＃0」が抽出され、学習情報STDとして学習テーブル50iへ転送され学習登録されるので、図9（1）及び（2）において網掛けで示すように学習登録されることになる。
パケットデータPD3 (DA=400; SA=200; ポートP2)の受信後：図10の学習テーブル
パケットデータPD3（DA=400; SA=200）がカード＃0のポートP2から入力されると、上記と同様にパケットデータの生成が行われ、宛先アドレスDA及び送信元アドレスSAの順に学習テーブル50iへ宛先情報の取得並びに送信元アドレスの確認を行う。この場合、図9（1）の状態に基づき、宛先アドレスDA=400として「ポートP13/カード＃1」を取得し、送信元アドレスSA=200として「ポートP1/カード＃0」を取得する。
【００７９】
そして、上記と同様に、学習テーブル50iからフラッディング判定部50mに対しては検索結果「有り」が与えられるのでフラッディング判定部50mは入力したパケットデータPD3において、宛先アドレスDAに「ポートP13/カード＃1」を付加して出力する。
【００８０】
これにより、フラッディング判定部50mからは学習依頼パケット生成部50n及び多重部50oに対してパケットデータPD3が送られる。このとき、学習テーブル50iから出力された検索結果「有り」は学習依頼パケット生成部50nに対しても送られている。
【００８１】
一方、ポート/カード番号抽出部50hにおいてパケットデータに付加された送信元アドレスに対するポート番号及びカード番号を抽出してポート/カード番号比較部50jに送ると、このポート/カード番号比較部50jにおいては、既に学習テーブル50iから送信元アドレスSAに対して「ポートP1/カード＃0」が与えられているので、「ポートP2/カード＃0」（抽出部50h出力）≠「ポートP1/カード＃0」（学習テーブル50i出力）として不一致を検出する。
【００８２】
このような不一致検出時には、端末移動が発生したものとしてポート/カード番号比較部50jはカウント部50kに対してカウントアップパルスを与え、カウント部50kはこのカウントアップパルスを受けて内蔵するカウンタのインクリメントを行う。
【００８３】
一方、学習依頼パケット生成部50nは、学習テーブル50iから検索結果「有り」の情報を受けておりなお且つポート/カード番号比較部50jから不一致情報を受けたので、図6に示す通り、DA検索＝有り、SA検索＝有り、で且つポート/カード番号比較部50jによる比較結果が「不一致」であるので、学習依頼パケットを生成して多重部50oに送る。このとき学習依頼パケット生成部50nは学習パケット識別子を付加するように動作する。
【００８４】
この結果、この学習依頼パケットは全カード♯0〜♯3宛に転送されるが、L2スイッチ40の外部においてはこのようなフラッディングは行う必要が無いので、この学習依頼パケットを受信した各イーグレス部EGRの学習依頼パケット廃棄部50tにおいて学習依頼パケットが廃棄されることとなる。
【００８５】
この結果、図10（1）において網掛けで示すように、送信元アドレス「ポートP2/カード＃0」は図3に示すL2スイッチ40の各カード♯0〜♯3において学習登録されることとなる。
パケットデータPD4 (DA=400; SA=200; ポートP1)の受信後：図11の学習テーブル
パケットデータPD4（DA=400; SA=200）がカード＃0のポートP1から入力されると、上記と同様にパケットデータの生成が行われるとともに、MACアドレス抽出部50gにおいてMACアドレスを抽出し、宛先アドレスDA及び送信元アドレスSAの順に学習テーブル50iに対して宛先情報取得及び送信元アドレス確認を行う。この場合、パケットデータPD4は、宛先DA情報として「ポートP13/カード＃1」を取得し、送信元アドレスSAとして「ポートP2/カード＃0」を取得する。
【００８６】
従って、この取得された宛先アドレスDAに従って上記と同様にパケットデータPD4はカード＃1のポートP13に向けてユニキャスト送出される。
【００８７】
一方、ポート/カード番号抽出部50hにおいてパケットデータPD4に付加されたポート番号及びカード番号を抽出し、ポート/カード番号比較部50jにおいて、パケットデータPD4から抽出したポート/カード番号と、学習テーブル50iにおいて検索したポート/カード番号との比較を行い、その結果、「ポートP1/カード＃0」（抽出部50h出力）≠「ポートP2/カード＃0」（学習テーブル50i出力）として不一致検出を行う。
【００８８】
この不一致検出は、端末移動状態が発生したものとしてカウント部50kに対してカウンタパルスを発生するので、カウント部50kはカウンタパルスを受けてカウンタのインクリメントを行う。
【００８９】
この場合も、図11に示したパケットデータPD3と同様に学習依頼パケット生成部50nは図6に示した動作要約図に基づき、DA検索＝有り、SA検索＝有り、ポート/カード番号比較結果＝不一致であるので、学習依頼パケット識別子を付加したフラッディングを行うこととなる。
【００９０】
この結果、図11（1）に示すように、カード＃0においては、MACアドレス＝200に関しては「ポートP1/カード＃0」に学習されて更新されることになる。これはカード＃1においても同様である。
【００９１】
このように図10と図11の状態はカード＃0においてポートP1とポートP2が端末移動状態にあることを示しているが、このようなパケットデータPD3とPD4が交互にポートP1とP2から入力された場合、パケットが入力される度にポート/カード番号が不一致検出され、カウントアップパルスが生成されてカウント部50kがインクリメントされるので、ハードソフトインタフェースHSIからカウント部50kのカウント数をポーリングで読み取り、ポート毎に計数を行い、例えば100回/秒（或る一定間隔）を超えた場合にカード＃0におけるポートP1とポートP2は単なる端末移動ではなく、ループが発生していると判定できる。
【００９２】
そして、このようなループ状態になった場合、ハードソフトインタフェースHSIは、ソフトウェアによってマスク部50pに対してマスク設定を行い、ループ対象ポートのデータが転送されることを抑止する。
【００９３】
なお本動作例では、カード＃0に到着するパケットPD1〜PD4が学習テーブルから宛先情報及び送信元情報を取得して、送信元情報が不一致の場合に端末移動の検出を行い、端末移動が発生した場合には、学習テーブルを更新するため、該当するパケットのフラッディングを行っている。その結果、端末移動後のポート/カード情報が学習テーブルに学習されることになり、次のパケット到着時の端末移動検出が可能となることが分かる。
【００９４】
また、複数のポート/カードから同一の送信元アドレスのパケットが入力される状態が継続的に発生するようなネットワークがループを起こしている状態では、端末移動が継続的に発生する異常状態の検出が可能なことが分かる。
【００９５】
（付記１）
同一の送信元アドレスのパケットが異なるポートに入力した端末移動状態を検出する第１のステップと、
該第１のステップにおいて各ポート毎に端末移動状態を検出した回数をカウントし、該回数が閾値を越えたとき、そのポートにループが発生していると見做す第２のステップと、
を備えたことを特徴とするループ検出方法。
（付記２）付記１において、
該第1のステップが、パケットの送信元アドレスとポートとの関係を学習してテーブルに保持する第３のステップと、該第３のステップによる学習の後、パケットを入力したポートと、該入力したパケットの送信元アドレスと同一のアドレスについて該テーブルから検索されるポートとが異なる該端末移動状態を検出する第４のステップとを含むことを特徴としたループ検出方法。
（付記３）付記１において、
該閾値が、該ポートに対する端末の移動回数と見做される回数を越えた値であることを特徴としたループ検出方法。
（付記４）付記1において、
該第２のステップで該ループの発生と見做したとき、該ループが発生しているポートをマスクする第５のステップをさらに備えたことを特徴とするループ検出方法。
（付記５）付記1又は２において、
該第1のステップが、該ポートがどのカードのポートであるかも検出条件とするステップを更に含むことを特徴としたループ検出方法。
（付記６）付記1又は２において、
該第1のステップが、該端末移動状態を検出したとき、該パケットを、外部に出力しないことを条件としてフラッディングするステップを更に含むことを特徴としたループ検出方法。
（付記７）付記２において、
該第1のステップが、該学習したテーブルにパケットの宛先アドレスを含み、該入力パケットの宛先アドレスが該テーブルに含まれていなかったときは、該パケットをフラッディングし、該宛先アドレスが該テーブルに含まれていたときには該入力パケットをユニキャストするステップを更に含むことを特徴としたループ検出装置。
（付記８）
同一の送信元アドレスのパケットが異なるポートに入力した端末移動状態を検出する第１の手段と、
該第１の手段が各ポート毎に端末移動状態を検出した回数をカウントし、該回数が閾値を越えたとき、そのポートにループが発生していると見做す第２のステップと、
を備えたことを特徴とするループ検出装置。
（付記９）付記８において、
該第1の手段が、パケットの送信元アドレスとポートとの関係を学習してテーブルに保持する第３の手段と、該第３の手段による学習の後、パケットを入力したポートと、該入力したパケットの送信元アドレスと同一のアドレスについて該テーブルから検索されるポートとが異なる該端末移動状態を検出する第４の手段とを含むことを特徴としたループ検出装置。
（付記１０）付記８において、
該閾値が、該ポートに対する端末の移動回数と見做される回数を越えた値であることを特徴としたループ検出装置。
（付記１１）付記８において、
該第２の手段が該ループの発生と見做したとき、該ループが発生しているポートをマスクする第５の手段をさらに備えたことを特徴とするループ検出装置。
（付記１２）付記８又は９において、
該第1の手段が、該ポートがどのカードのポートであるかも検出条件とする手段を更に含むことを特徴としたループ検出装置。
（付記１３）付記８又は９において、
該第1の手段が、該端末移動状態を検出したとき、該パケットを、外部に出力しないことを条件としてフラッディングする手段を更に含むことを特徴としたループ検出装置。
（付記１４）付記９において、
該第1の手段が、該学習したテーブルにパケットの宛先アドレスを含み、該入力パケットの宛先アドレスが該テーブルに含まれていなかったときは、該パケットをフラッディングし、該宛先アドレスが該テーブルに含まれていたときには該入力パケットをユニキャストする手段を更に含むことを特徴としたループ検出装置。
【図面の簡単な説明】
【００９６】
【図１】本発明の原理を説明するため、正常なネットワーク例を示したブロック図である。
【図２】本発明の原理を説明するため、ループ発生時のネットワーク例を示したブロック図である。
【図３】本発明に係るループ検出方法を実現する装置（例えばL2スイッチ）の概略構成例を示したブロック図である。
【図４】図3に示したL2スイッチにおける各カードの実施例構成を示したブロック図である。
【図５】本発明で用いる学習テーブルの構成例を示した図である。
【図６】本発明に係るループ検出方法及び装置の動作要約図である。
【図７】本発明におけるループ検出方法及び装置においてパケットデータを受信する前の初期状態を示した学習テーブル図である。
【図８】パケットデータPD1を受信した後の学習テーブル図である。
【図９】パケットデータPD2を受信した後の学習テーブル図である。
【図１０】パケットデータPD3を受信した後の学習テーブル図である。
【図１１】パケットデータPD4を受信した後の学習テーブル図である。
【符号の説明】
【００９７】
P0〜P3, P10〜P13, P20〜P23,P30〜P33  ポート
IF0〜IF3  インタフェース部
＃0〜＃3  カード
ING0〜ING3  イングレス部
EGR0〜EGR3  イーグレス部
T0〜T3  学習テーブル
STD0〜STD3  学習情報
50a, 50a_0〜50a_3  書込制御部
50b, 50b_0〜50b_3  待ち合わせバッファ
50c, 50c_0〜50c_3  ポート番号格納部
50d  読出制御部
50e  選択回路
50f  タイミング生成部
50g  MACアドレス抽出部
50h  ポート/カード番号抽出部
50i  学習テーブル
50j  ポート/カード番号比較部
50k  カウント部
50l  カード番号格納部
50m  フラッディング判定部
50n  学習依頼パケット生成部
50o  多重部
50p,50p_0〜50p_3  マスク部
50q  カード番号抽出部
50r  ポート番号抽出部
50s  アドレス抽出部
50t  学習依頼パケット廃棄部
図中、同一符号は同一又は相当部分を示す。
【図１】
2006173785.tif 000003
【図２】
2006173785.tif 000004
【図３】
2006173785.tif 000005
【図４】
2006173785.tif 000006
【図５】
2006173785.tif 000007
【図６】
2006173785.tif 000008
【図７】
2006173785.tif 000009
【図８】
2006173785.tif 000010
【図９】
2006173785.tif 000011
【図１０】
2006173785.tif 000012
【図１１】
2006173785.tif 000013