独自ループ検出

独自ループ検出

1. 機能概要

本製品は、構成したネットワーク環境でループが発生していないかどうかを検出する独自の仕組みを提供します。
LANポートから独自のループ検出フレームを送信し、そのフレームが自身に戻ってくるかどうかを監視します。
送信フレームが自身に戻ってきた場合、該当ポートでループが発生していると判断します。

2. 用語の定義

LDF (Loop Detection Frame)

ループ検出のために使用するヤマハ独自のイーサーネットフレーム。

3. 機能詳細

3.1. ループ検出 動作仕様

本製品のループ検出仕様について、以下に示します。

  1. 本製品のループ検出は、システム全体の有効・無効制御に加え、LAN ポートごとに有効・無効制御が行えます。
    LAN ポートでループ検出を機能させる場合は、システム全体の設定が 有効 になっている必要があります。

    • システム全体の設定は、グローバルコンフィギュレーションモードで loop-detect コマンド を使用します。

    • LAN ポートごとの設定は、該当ポートのインターフェースモードで loop-detect コマンド を使用します。

  2. ループ検出機能の初期設定は、以下のようになっています。

    • システム全体の設定: 有効

    • LAN ポート設定: 有効

  3. ループ検出機能が有効となっている本製品は、以下の動作を行います。

    • ループ検出フレーム (以降、LDF) を、リンクアップしているLANポートから 2秒間隔 で送信します。
      ただし、スタティック論理インターフェース、ミラーリング設定を行ったポート(ミラーポート)は、 ループ検出機能対象外 とします。

    • 送信したLDFを自身で受信した場合、ループが発生したと判断し、以下の動作を行います。

      • Port Blocking
        送信したLANポートの番号が受信時のポート番号より小さい場合、LDF以外のフレームを遮断します。
        LDFは定期的に送信しますが、他機器からのLDFの転送は行いません。
        BlockingしたLANポートは、5秒間、自身が送信したLDFを検出しなかった場合、ループが解消したと判断し、通常の通信を再開します。
        loop-detect blocking interval コマンドでブロッキング持続時間が指定されている場合、ループ検出時点から指定時間が経過したタイミングでループが解消されているか確認を行います。
        このとき、ループが解消されていれば Blocking 状態を解除しますが、ループが解消されていなければ、再度指定時間が経過するまで Blocking 状態を継続します。

      • Port Detected
        送信したLANポートの番号が受信時のポート番号より大きい場合、他のポートでブロッキングを行っているため、通常の通信を継続します。

    • ループを検出すると、本製品の LINK/ACT LED 表示を 橙色で点滅 に、STATUS LED 表示を 橙色で点灯 に変更し、以下のSYSLOGメッセージを出力します。

      • [LOOP]: inf: Detected Loop! : port1.1 ①

        1 ループ検出開始から5秒周期で表示
    • ループ解消後の通信再開と合わせて、本製品のポートランプ表示を復旧し、以下のSYSLOGメッセージを出力します。

      • [LOOP]: inf: Recovered Loop! : port1.1

  4. ループ検出状態(Detected, Blocking)は、 loop-detect reset コマンドにより、強制的に解消することができます。
    ループ検出中のポートでリンクダウンが発生した場合も同様に、検出状態は解消されます。

  5. ループ検出機能の状態は、 show loop-detect コマンドで確認できます。以下を表示します。

    • システムの有効/無効状態の表示

    • ループ検出状態の表示(LANポート単位の状態)

  6. ループ検出機能が無効な状態で、LANポートで LDF を受信すると、他の全ポートから受信フレームをそのまま転送します。
    ただし、スタティック論理インターフェース、ミラーリング設定を行ったポート(ミラーポート)は、転送対象外とします。

  7. 以下のような場合、本製品に接続されているハブで発生しているループを検出できないことがあります。

    • 接続中のハブでループ検出が行われている

    • 接続中のハブでループ検出フレームが転送されない

  8. 異なるポートベースVLAN間、および異なるマルチプルVLAN間でループを発生させた場合、以下の動作となります。

    条件 動作

    異なるポートベースVLANに所属するポート間でループが発生

    ブロッキングしない

    異なるマルチプルVLANに所属するポート間でループが発生

    ブロッキングする

3.2. ループ検出例

以下に本製品におけるループ検出例を示します。

ループ検出ケース 構成例 ループ検出状況

1

image

自分が送信したLDFを受信することでループを検出します。
 port1.1 : Blocking

2

image

同一端末の複数ポートでループを検出した場合、大きい番号の
ポートをBlockingします。
 port1.1 : Detected
 port1.3 : Blocking

3

image

複数のポートをBlockingすることで、ループを回避します。
Blocking Portの選択は、Case2と同じ規則となります。
 port1.1 : Detected
 port1.2 : Blocking
 port1.3 : Blocking

4

image

複数組のループを検出した場合、各組で大きい番号のポートを
Blockingします。
 port1.1 : Detected, port1.2 : Blocking
 port1.3 : Detected, port1.4 : Blocking

5

image

スイッチ同士でループが起きた場合、どちらか一方でループが
検出されます。
○スイッチ#Aのport1.3で検出した場合
 port1.1: Detected, port1.3: Blocking

○スイッチ#Bのport1.7で検出した場合
 port1.5: Detected, port1.7: Blocking

6

image

ケーブルが繋がっている6ポートのうち、ループ検出が一番早かった
一つのポートをBlockingします。
○スイッチ#Aのport1.2で検出した場合
 port1.1: Detected, port1.2: Blocking

○スイッチ#Bのport1.4で検出した場合
 port1.3: Detected, port1.4: Blocking

○スイッチ#Cのport1.6で検出した場合
 port1.5: Detected, port1.6: Blocking

7

image

各ポートから送信したLDFが、各ポートに戻ってくるため、
port1.5, port1.6ともにBlockingします。
 port1.5 : Blocking
 port1.6 : Blocking

8

image

スイッチ#Bのport1.6をBlockingします。
タイミングによってはスイッチ#Aのport1.1もBlockingしますが、
スイッチ#Bのport1.6をBlockingすることで、スイッチ#Aのport1.1の
ループは解消されます。
 スイッチ#A port1.1 : Blocking
 スイッチ#B port1.5 : Detected
 スイッチ#B port1.6 : Blocking

4. 関連コマンド

関連コマンドについて、以下に示します。
コマンドの詳細は、コマンドリファレンスを参照してください。

操作項目 操作コマンド

ループ検出機能の有効・無効設定(システム)

loop-detect enable/disable

ループ検出機能の有効・無効設定(LANポート)

loop-detect enable/disable

ループ検出によるポートブロッキングの持続時間の設定

loop-detect blocking interval

ループ検出状態のリセット

loop-detect reset

ループ検出 設定状態の参照

show loop-detect

5. コマンド実行例

ループ検出機能が有効になっていると、以下のような構成のとき、本製品上で発生しているループを検出します。

  • [例1] 本製品内でループが発生

    image

  • [例2] 本製品に接続されている他社ハブでループが発生

    image

LANポート #1 と #3 でループを検出するように設定します。

■設定手順

  1. システム全体のループ検出機能を有効にします。

    Yamaha(config)#loop-detect enable (1)
    1 システム全体のループ検出機能を有効にする
  2. LANポート #1 と #3 のループ検出機能を有効にします。

    Yamaha(config)#interface port1.1
    Yamaha(config-if)#loop-detect enable (1)
    (上記設定をLANポート #3 に対しても行います。)
    1 LANポートごとのループ検出機能を有効にする
    • システム全体のループ検出機能を有効化、LANポートごとのループ検出機能の有効化ともに、初期値として設定されています。

  3. ループ検出機能の設定を確認します。
    LANポート #1 と #3 でループ検出機能が有効(*)になっていることが確認できます。

    Yamaha>show loop-detect
    loop-detect: Enable
    
    port        loop-detect         status
    -----------------------------------------
    port1.1        enable(*)        Normal
    port1.2        enable(*)        Normal
    port1.3        enable(*)        Normal
    port1.4        enable(*)        Normal
       :             :                :
  4. ループ検出が発生した場合、ループ検出機能の状態が確認できます。

    • 例1の場合

      Yamaha>show loop-detect
      loop-detect: Enable
      
      port        loop-detect         status
      -----------------------------------------
      port1.1        enable(*)        Detected (1)
      port1.2        enable(*)        Normal
      port1.3        enable(*)        Blocking (2)
      port1.4        enable(*)        Normal
         :             :                :
      1 LANポート #1 はDetected状態になる
      2 LANポート #3 はBlocking状態になる
    • 例2の場合

      Yamaha>show loop-detect
      loop-detect: Enable
      
      port        loop-detect         status
      -----------------------------------------
      port1.1        enable(*)        Blocking (1)
      port1.2        enable(*)        Normal
      port1.3        enable(*)        Normal
      port1.4        enable(*)        Normal
         :             :                :
      1 LANポート #1 はBlocking状態になる

6. 注意事項

特になし

7. 関連文書

特になし