(57)【要約】【課題】  ネットワーク上でループが検出された場合，ループパケットが無限に周回しないように適正にパケットを遮断することによりループを回避したネットワークを構築できる。【解決手段】  スイッチングＨＵＢやブリッジ等のネットワーク装置において，ネットワーク上にループ接続を検出した場合，各ネットワーク装置がループを検出した時点から乱数を発生させ、その乱数を元に算出された時間だけ待ってもう一度検出を行い、再びループが検出されたらループしているポートのどちらか一方についてパケットを遮断する。パケット遮断後は、他のネットワーク装置で同時にパケット遮断が行われることにより、ネットワークが分離されてしまっていないかを確認するためにループするであろうパケットを監視し、ネットワークが分離されていると判定されればパケット遮断を中止する。【選択図】  図２
2006050222.tif 000002
【特許請求の範囲】
【請求項１】
スイッチングHUBやブリッジ等のネットワーク装置におけるパケットの無限ループ回避方法において、
ネットワーク上にループ接続を検出した場合、各ネットワーク装置がループを検出した時点から乱数を発生させ、その乱数を元に算出された時間だけ待ってから、もう一度ループ検出を行い、再びループが検出されたら、ループしているポートのどちらか一方についてパケットを遮断する手段を備えたことを特徴とするパケットの無限ループ回避方法。
【請求項２】
スイッチングHUBやブリッジ等のネットワーク装置におけるパケットの無限ループ回避方法において、
前記パケット遮断動作を実行したネットワーク装置は、ループ接続されていると判定されて遮断を行わなかった方のポートからループパケットになり得るパケットあるいはループ検出用パケットを送信する際に、当該パケットを記憶しておき、当該パケットがネットワークを通してパケット遮断を行っている方のポートにて検出できるかを確認する手段を備えたことを特徴とするパケットの無限ループ回避方法。
【請求項３】
スイッチングHUBやブリッジ等のネットワーク装置におけるパケットの無限ループ回避方法において、
前記確認手段にて当該パケットが確認できなかった場合、パケット遮断動作を中止する手段を備えたことを特徴とするパケットの無限ループ回避方法。
【請求項４】
スイッチングHUBやブリッジ等のネットワーク装置におけるパケットの無限ループ回避方法において、
複数のネットワーク装置が同時にパケット遮断動作を行いネットワークを分離してしまうことやネットワーク構成が変更された場合に、前記手段を繰り返すことにより、ループ接続及びネットワークの分離のないネットワークを構築できることを特徴とするパケットの無限ループ回避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパケットの無限ループ回避方法に関する。
【背景技術】
【０００２】
従来、スイッチングHUBやブリッジは各ポート間を直接交換接続して、他のポートへトラフィックの影響を与えない。どのポートとどのポート接続するかは、学習してあるアドレスで判定する。各ポートに接続されたアドレスのテーブルを作成し、そのテーブルに従いポート間をスイッチング技術によって接続する。アドレステーブルに登録されていない送信元アドレスを持ったパケットを受信した場合は、受信したポート以外の全てのポートにパケットを送信する。また、複数のアドレスのテーブルをポートごとに作成することができるので、ポート先には端末やHUBを接続することができる。
【特許文献１】特開平９−９３２８２号公報
【特許文献２】特開平８−３２６１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、スイッチングHUBやブリッジのパケット転送には問題がある。それは図1のように装置間でループ形状を伴う接続をしてしまった場合である。このような接続においてある端末からブロードキャストパケットが送信された場合、転送ループを形成してしまう。転送ループではブロードキャストパケットがネットワーク上を無限に周回するため、新しいトラフィックが送信されるごとに増えつづけてトラフィックレートが上昇し、最終的にはネットワークが飽和状態に陥ってしまう。また、ネットワーク全体で解決することができない宛先アドレスのパケットが送信された場合も同様である。これに対してIEEE 802.1Dブリッジング標準では、転送ループの回避策としてスパニングツリーアルゴリズムが規定されている。
【０００４】
スパニングツリーアルゴリズムでは、スパニングツリー用のマルチキャストアドレスを使用して、各スイッチが送信するコンフィグレーションメッセージをもとに動作し、ループ接続時に単一のルートを選択してパケットを送信することができる。しかしながら、通常スパニングツリーのようなループ検出プロトコルは、動作制御が非常に複雑なプロトコルであり、実装する場合には、ＣＰＵやメモリ等の専有時間が増えて、資源を消費するという問題点があった。また、この方法では、ループ検出用の制御パケットを装置間で定期的に交換するため、通常のユーザデータを送るための実質的な回線が減少するという問題点があった。更にスパニングツリープロトコルが実装されているスイッチングHUBはそうでないものと比較するとコストが上がってしまうという問題点もある。
【０００５】
スパニングツリープロトコルを使用せずにループを検出し、ループパケットを遮断する方法として、特許文献１では、あるポートから受信したパケットの送信元アドレスと以前に他のポートから受信したパケットの送信元アドレスとを比較し、この比較結果がある一定時間内に設定回数だけ一致した場合、そのパケットをループパケットとして遮断する。しかしながらこの方法では、ネットワークがループ接続されている以上、必ずループパケットが発生し、その度にループを検出し、ループパケットを廃棄するという処理を行うことになり、効率が非常に悪い。
【０００６】
更に、特許文献２では、あるポートから同じ中継装置の他のポートを宛先とするループ判定用のパケットを送出し、そのループ判定用パケットが当該宛先ポートに到着した場合にループ接続が存在すると判定し、任意の時間後、もう一度、同様のループ判定を行い、2度目もループがあるものと判定された時当該宛先ポートを中継禁止とする。ループの判定を2度行う理由としては、両方の中継装置が同時に働いてループを形成する中継経路が2つとも切れてしまい、2つのネットワークに分離されてしまうことを回避するためであり、ループの判定後に任意の時間待ちを行った後、もう一度、同様のループ判定を行うことで、1度目のループ判定が両方の中継装置で同時であっても、中継装置がそれぞれ任意の時間待ちを行ったことで、2度目のループ判定は同時ではなくなり、どちらかが先に行うことになるからである。しかしながら、1度目のループ判定が同時ではなく、お互いの中継装置が任意の時間待ちを行ってしまったことにより、2度目のループ判定が同時になってしまい、2つのネットワークに分離されてしまう場合については考えられていない。また、中継禁止動作が正常に行われたとしても、後にネットワークの構成が変わり、中継を禁止しているポートを復帰させなければならない状況に対応することができないという問題点がある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本出願に係る発明はスイッチングHUBやブリッジ等のネットワーク装置において、スパニングツリーを実装することなくネットワーク上のループ接続を検出した後に、それぞれのネットワーク装置が自律的にループ接続されているポートについてパケットを遮断することにより、適正なネットワークを構築することを特徴とする。
【０００８】
上記構成において、ネットワーク上のループ接続を検出した後にそれぞれのネットワーク装置が自律的に、ループ接続されているポートについてパケットを遮断する手段は、ネットワーク上にループ接続を検出した場合、各ネットワーク装置がループを検出した時点から乱数を発生させ、その乱数を元に算出された時間だけ待ってから、もう一度ループ検出を行い、再びループが検出されたら、ループしているポートのどちらか一方についてパケットを遮断する手段と、前記パケット遮断動作を実行したネットワーク装置は、ループ接続されていると判定されて遮断を行わなかった方のポートからループパケットになり得るパケットあるいはループ検出用パケットを送信する際に、当該パケットを記憶しておき、当該パケットがネットワークを通してパケット遮断を行っている方のポートにて検出できるかを確認する手段と、前記確認手段にて当該パケットが確認できなかった場合、パケット遮断動作を中止する手段とを持ち、複数のネットワーク装置が同時に前記パケット遮断動作を行いネットワークを分離してしまうことや、ネットワーク構成が変更された場合に、前記手段を繰り返すことにより、ループ接続がなくネットワークの分離も発生していないネットワークを構築できることを特徴とする。
【発明の効果】
【０００９】
以上説明したように、本出願に係る発明によれば、スイッチングHUBやブリッジなどのネットワーク装置のパケット転送において、ネットワーク装置間でループ形状を伴う接続を行い、端末からブロードキャストパケットなどの複数端末宛てパケットが送信された場合、上記パケットがネットワーク上を無限に周回し最終的にはネットワークが飽和状態に陥ってしまうという問題がある。これに対して、ネットワーク装置内で複雑な処理を行い、専用メッセージをやり取りしなくてはならないスパニングツリープロトコルを実装せずに、ループを検出した各ネットワーク装置が自律的に動作し、ループ接続されているポートのパケット遮断を適正に行うことで、ループ接続を回避したネットワークを構築するという効果がある。
【発明を実施するための最良の形態】
【００１０】
（実施例１）
図を用いて本発明の実施例を詳細に説明する。
【００１１】
複数のポートが搭載されているスイッチングHUBを例に挙げ、ある一定時間内に複数ポートで同一の送信元アドレスのパケットを繰り返し受信することでループ接続を検出するスイッチングHUBに本発明を適用した場合のブロック図を図2に示し、詳細を述べる。
【００１２】
ポートの受信部201ではポートで受信されるパケットを物理層レベルで受信する。パケット処理部202ではパケットの受信処理及び送信処理を行う。パケット解析部203ではポートに受信したパケットの送信元アドレスと宛先アドレス及び、ポートから送信するパケットの送信元アドレスを解析する。受信パケットから解析された送信元アドレスはアドレステーブル204に出力し、アドレステーブル204からスイッチングすべきポート番号を取得する。同様に受信パケットから解析された送信元アドレスは学習処理及びループ検出のためにアドレステーブル204に出力する。また、ループを検出したポートのうちパケット遮断動作を行わなかったポートからブロードキャストパケットを送信する場合と、パケット遮断を行ったポートでパケットを受信した場合は、解析された送信元アドレスをループ確認用アドレス記憶部205に出力する。
【００１３】
ループ確認用アドレス記憶部205はパケット解析部203から入力された送信元アドレスを、記憶及び比較してパケット遮断部に遮断中止信号を出力する。アドレステーブル204はパケットのアドレスとスイッチングHUBのポート番号を対応付けて管理しており、各スイッチングHUBに1つ搭載されている。アドレステーブル204はパケット解析部203より受信した宛先アドレスをもとに検索を行い、対応付けられているポート番号をパケット解析部203に出力する。また、パケット解析部203より受信パケットの送信元アドレスが、アドレステーブル204に登録されているかどうかを検索し、登録されていなければ学習処理としてその送信元アドレスを受信したポートに割り当てる。アドレステーブル204にて検索した送信元アドレスが別のポートに登録されており、ループ接続が行われていると判断した場合、ループ検出部205にポートごとのエラー信号を出力する。ループ検出部206はアドレステーブル204よりエラー信号を受信するとループを検出したと断定し、乱数発生部207に起動信号を出力する。ループ検出部206から起動信号を受信した乱数発生部207は乱数を発生させ、その乱数を元に時間Tを算出する。乱数発生部207は起動信号が入力されてからT時間経過後にパケット遮断部に対してパケット遮断信号を出力する。パケット遮断部208は通常の通信では動作していないが、乱数発生部207からパケット遮断信号が入力されると、スイッチング部209からのパケット及びパケット解析部203からのパケットを遮断し破棄する。また、ループ確認用アドレス記憶部から遮断中止信号が入力されると、遮断動作を中止し通常の通信状態になる。スイッチング部209は受信したパケットを正しいポートにスイッチし、送信部210からパケットが送信されるように動作する。
【００１４】
本発明において、スイッチングHUBに実装されたループ検出部206で、ループが検出された場合のパケット遮断のフローチャートを図３に示す。
【００１５】
図３のステップS301ではネットワーク上でループ接続が行われておらず、通常の通信状態である。ここで、スイッチングHUBのポートMとポートNにつながる機器を通して、ネットワークでループ接続が構成されるとステップS302でループを検出し、ステップS303でポートM、Nでループがあると判定される。ループを検出するとスイッチングHUBは乱数発生部207において乱数を発生し、その乱数をもとに待ち時間Tを算出する(ステップS304)。時間Tは基本的に任意であるが、送信元アドレスからループを検出する場合、ループ接続されている各スイッチングHUBでループを検出するタイミングがほぼ同時であると推定され、パケットがネットワークを周回してくる時間を、スイッチングHUB間で差分として持たせておくことが望ましい。例えば、スイッチングHUB1が算出した時間T1とスイッチングHUB2が算出した時間T2の差が、パケットがループネットワークを周回している時間より大きくなるように時間Tを算出する。このような時間を算出するためには、発生させる乱数を2以上の整数とし、
時間T＝乱数×パケットが周回する時間
のような算出方法を行えばよい。上記のような算出方法が一例として考えられる。時間Tを算出したスイッチングHUBはその時点から時間Tが経過するまで待機状態に入る(ステップS305)。T時間が経過するとステップS306において、再びポートM、Nにおいてループが検出されるかを判定する。ステップS306にて規定時間内にポートM、Nでループが検出されなかった場合は他のスイッチングHUBがパケットを遮断したか、もしくはネットワークの構成が変更され、ネットワーク上にループ接続がなくなったと判断し、ステップS301の初期状態に戻る。ステップS306にてポートM、Nで再びループが検出された場合、ステップS307に進みポートMもしくはポートのNのどちらか一方についてパケット遮断部208でパケットを遮断する。ループを検出したポートMとポートNのどちらかを遮断することにより、ネットワーク上のループ接続が回避されたとしてパケット遮断処理を終了する。ステップS306でいう規定時間とはパケットが周回してくる時間より十分長い時間を設定しておくとよい。
【００１６】
ネットワーク上にループ接続が行われていた場合、各スイッチングHUBは自律的に図３のフローチャートを実行する。各スイッチングHUBが発生させた乱数から算出したT時間待機してからパケット遮断動作に入ることで、図４のようにスイッチングHUB Xのポート4とスイッチングHUB Zのポート4が同時にパケット遮断を行い、ネットワークが分離されてしまうことを回避しているが、検出するタイミングと待機する時間Tによっては必ずしも回避できるとは言えない。また、図５のようにループ接続を正常に回避できたとしても、スイッチングHUB Yのポート1とスイッチングHUB Zのポート4を接続しているケーブルがユーザによって取り除かれた場合、スイッチングHUB Xのポート4におけるパケット遮断は中止しなければならない。このような問題を解決するために、正常遮断判定フローチャートを図６に示す。
【００１７】
図６のステップS601では、、スイッチングHUBが図3に示すパケット遮断フローチャートに従い、ポートMとポートNでループを検出し、ポートNをパケット遮断した状態にある。ポートNをパケット遮断したスイッチングHUBはステップS602において、ポートMからブロードキャストパケットを送信するかどうかを監視しておく。ポートMからブロードキャストパケットを送出する場面が発生したら、そのパケットの送信元アドレスをループ確認用アドレス記憶部205に記憶する。この時ループ確認用アドレス記憶部の内容は図７のようになる。その後、パケットの遮断動作に入っているポートNで受信するパケットの送信元アドレスを監視する(ステップS604)。もし、図5のように自スイッチングHUBによって行ったパケット遮断動作が、ネットワーク全体から見て正常に行われている場合はステップS603から送出したブロードキャストパケットが必ずポートNに到着するはずである。逆に、ポートNに到着しない場合は図4のように他のスイッチングHUBでもパケット遮断動作を行ってしまいネットワークが分離されてしまった可能性がある。ステップS605において規定時間内(パケットが周回してくる時間より十分長い時間を設定しておくとよい)に記憶してある送信元アドレスのパケットを受信したかどうかを判定し、受信すればステップS606に進み、パケット遮断によりループ接続が正常に回避されたとして、ループ確認用アドレス記憶部のポートMの内容を消去する。
【００１８】
その後、ステップS602に戻り、ポートMからブロードキャストパケットが送信されるかどうかを監視しておく。また、ステップS605において規定時間内に記憶してある送信元アドレスのパケットが受信されなかった場合、ステップS607において自スイッチングHUBのパケット遮断によってネットワークが分離されてしまったと判断する。その後ステップS608においてループ確認用アドレス記憶部に記憶されている送信元アドレスを消去し、ポートNのパケット遮断を中止する(ステップS609)。このように自スイッチングHUBのパケット遮断によるネットワークへの悪影響を検出し回避する。このフローチャートでは1度正常遮断判定を行った後に、ポートMから送出されるすべてのブロードキャストパケットについて判定を行っているが、定期的に監視するだけでもよい。
【００１９】
ここで、複数のスイッチングHUBが図６の正常遮断判定フローチャートによりパケット遮断を中止し、ループ構成を再構築してしまうことも考えられる。しかし、再び図3のパケット遮断フローチャートに従って、各スイッチングHUBが新たに発生させる乱数によって算出する時間Tだけ待機してパケット遮断を行うので正常なネットワークを構築できる。仮に再びネットワークの分離が発生してしまったとしても、各スイッチングHUBが図３のパケット遮断フローチャートに従いパケットを遮断し、その後、図６の正常遮断判定フローチャートにて判定を行うというアルゴリズムを繰り返すことにより、いずれ必ず適正なネットワークを構築できる。
【００２０】
更に、ユーザによってネットワーク構成が変更され、パケット遮断は中止しなければならない場合においても、図６の正常遮断判定フローチャートにより、パケット遮断を行っているポートを中止し、適正なネットワークを構築することができる。
【００２１】
（実施例２）
複数のポートが搭載されているスイッチングHUBを例に挙げ、送信元アドレスが自スイッチングHUBであるパケットをブロードキャスト送信し、当該パケットが自スイッチングHUBで受信された時、ループ接続と判定するスイッチングHUBに本発明を適用した場合のブロック図を図８に示す。
【００２２】
ポートの受信部801ではポートで受信されるパケットを物理層レベルで受信する。パケット処理部802ではパケットの受信処理及び送信処理を行う。パケット解析部ではポートに受信したパケットの送信元アドレスと宛先アドレスを解析する。受信パケットから解析された送信元アドレスはアドレステーブル804に出力し、アドレステーブル804からスイッチングすべきポート番号を取得する。同様に受信パケットから解析された送信元アドレスは学習処理のためにアドレステーブル804に出力する。また、受信した送信元アドレスはループパケット検出部805にも出力する。アドレステーブル804はパケットのアドレスとスイッチングHUBのポート番号を対応付けて管理しており、各スイッチングHUBに1つ搭載されている。アドレステーブル804はパケット解析部803より受信した宛先アドレスをもとに検索を行い、対応付けられているポート番号をパケット解析部803に出力する。また、パケット解析部803より受信パケットの送信元アドレスが、アドレステーブル804に登録されているかどうかを検索し、登録されていなければ学習処理としてその送信元アドレスを受信したポートに割り当てる。アドレステーブル804にて検索した送信元アドレスが別のポートに登録されていれば、その送信元アドレスを新しいポートに割り当てる。ループ検出パケット送出部は宛先がブロードキャストで送信元アドレスが自スイッチングHUBになるようなパケットを生成し、すべてポートの送信部807へ送信する。ループパケット検出部805は受信したパケットの送信元アドレスが自スイッチングHUBのアドレスに一致した場合、乱数発生部に起動信号を出力する。
【００２３】
また、検出されるべきパケットが検出されない場合は、パケット遮断部に対してパケット遮断中止信号を出力する。ループパケット検出部から起動信号を受信した乱数発生部808は乱数を発生させ、その乱数を元に時間Tを算出する。乱数発生部808は起動信号が入力されてからT時間経過後にパケット遮断部809に対してパケット遮断信号を出力する。パケット遮断部809は通常の通信では動作していないが、乱数発生部808からパケット遮断信号が入力されると、スイッチング部810からのパケット及びパケット解析部803からのパケットを遮断し破棄する。また、ループパケット検出部805から遮断中止信号が入力されると、遮断動作を中止し通常の通信状態になる。スイッチング部810は受信したパケットを正しいポートにスイッチを行う。
【００２４】
本発明において、スイッチングHUBに実装されたループパケット検出部805で、ループが検出された場合のパケット遮断のフローチャートを図９に示す。
【００２５】
図９のステップS901ではネットワーク上でループ接続が行われておらず、通常の通信状態である。ここで、全ポートにループ検出用パケットを送出する(ステップS902)。ループ検出用パケットの送出タイミングは定期的に行うか、自スイッチングHUBの電源投入時及び自スイッチングHUBのポートを監視しておき、その状態が変化した時などが考えれる。ループ検出用パケットを送出するとステップS903において、規定時間内にループを検出できるかを判断する。ここでいう規定時間とはパケットが周回してくる時間より十分長い時間を設定しておくとよい。規定時間内にループを検出できなかった場合はステップS901の初期状態に戻る。規定時間内にループを検出するとスイッチングHUBは乱数発生部808において乱数を発生し、その乱数をもとに待ち時間Tを算出する(ステップS904)。時間Tは基本的には任意である。時間Tを算出したスイッチングHUBはその時点から時間Tが経過するまで待機状態に入る(ステップS905)。T時間が経過するとステップS906において、全ポートにループ検出用パケットを送出する。その後、ステップS907において規定時間内に再び同一ポートからループが検出されたら、ループを検出したポートのどちらか一方をパケット遮断し、パケット遮断処理を終了する。ステップS907において、ループが検出されなかった場合は他のスイッチングHUBがパケットを遮断したか、もしくはネットワークの構成が変更され、ネットワーク上にループ接続がなくなったと判断し、ステップS901の初期状態に戻る。
【００２６】
パケットを遮断した後に、ネットワークが適正な構成になっているかを診断するために行う正常遮断判定フローチャートを図10に示す。ステップS1001では、スイッチングHUBが図９に示すパケット遮断フローチャートに従い、ポートMとポートNでループを検出し、ポートNをパケット遮断した状態にある。ポートNを遮断したスイッチングHUBはステップS1002において、ポートMからループ検出用パケットを送出する。その後、ステップS1003で規定時間内(パケットが周回してくる時間より十分長い時間を設定しておくとよい)にポートNでループ検出用パケットが検出できるか監視する。規定時間内に検出できた場合は、ステップS1004に進み、ループ検出用パケットの送出を周期的に行うために一定時間待機する。一定時間待機した後に、ステップS1002に戻る。ステップS1003において、規定時間内に検出できなかった場合は、ポートNのパケット遮断によってネットワークが分離されていると判断(ステップS1005)し、ステップS1006においてポートNのパケット遮断を中止する。
【００２７】
ここで、複数のスイッチングHUBが図１０の正常遮断判定フローチャートによりパケット遮断を中止し、ループ構成を再構築してしまうことも考えられる。しかし、再び図９のパケット遮断フローチャートに従って、各スイッチングHUBが新たに発生させる乱数によって算出する時間Tだけ待機してパケット遮断を行うので正常なネットワークを構築できる。仮に再びネットワークの分離が発生してしまったとしても、各スイッチングHUBが図９のパケット遮断フローチャートに従いパケットを遮断し、その後、図10の正常遮断判定フローチャートにて判定を行うというアルゴリズムを繰り返すことにより、いずれ必ず適正なネットワークを構築できる。
【００２８】
更に、ユーザによってネットワーク構成が変更され、パケット遮断は中止しなければならない場合においても、図１０の正常遮断判定フローチャートにより、パケット遮断を行っているポートを中止し、適正なネットワークを構築することができる。
【図面の簡単な説明】
【００２９】
【図１】ネットワーク装置のループ接続例。
【図２】送信元アドレスからループを検出するスイッチングHUBのブロック図。
【図３】パケット遮断フローチャート（送信元アドレスからループを検出した場合）。
【図４】パケット遮断によるネットワークの分離。
【図５】パケット遮断による正常なネットワークの構成。
【図６】正常遮断判定フローチャート（送信元アドレスからループを検出した場合）。
【図７】ループ確認用アドレス記憶部の内容。
【図８】ループ検出用パケットを送出してループを検出するスイッチングＨＵＢのブロック図。
【図９】パケット遮断フローチャート（ループ検出用パケットを送出する場合）。
【図１０】正常遮断判定フローチャート（ループ検出用パケットを送出する場合）。
【符号の説明】
【００３０】
201  受信部
202  パケット処理部
203  パケット解析部
204  アドレステーブル
205  ループ確認用アドレス記憶部
206  ループ検出部
207  乱数発生部
208  パケット遮断部
209  スイッチング部
210  送信部
【図１】
2006050222.tif 000003
【図２】
2006050222.tif 000004
【図３】
2006050222.tif 000005
【図４】
2006050222.tif 000006
【図５】
2006050222.tif 000007
【図６】
2006050222.tif 000008
【図７】
2006050222.tif 000009
【図８】
2006050222.tif 000010
【図９】
2006050222.tif 000011
【図１０】
2006050222.tif 000012