このドキュメントでは、単方向リンク検出(UDLD)プロトコルを使用して、スイッチドネットワークでのループやトラフィックの異常を防止する方法について説明します。
このドキュメントに関する固有の要件はありません。
このドキュメントでは、一般的なUDLDの動作について説明します。このドキュメントの設定例および検証例は、Cisco IOS XE 17.Xリリースを実行するCisco Catalyst 9300シリーズスイッチで検証されています。
注:コマンド構文、デフォルト、タイマー範囲、および出力は、プラットフォームおよびソフトウェアリリースによって異なります。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
スパニングツリープロトコル(STP)は、冗長な物理トポロジを、ループフリーなツリー状の転送トポロジに解決します。STP は、そのために 1 つまたは複数のポートをブロックします。1 つまたは複数のポートがブロックされると、転送トポロジにループは発生しません。STP の動作は、Bridge Protocol Data Unit(BPDU; ブリッジ プロトコル データ ユニット)の受信と送信に依存しています。 STPのブロッキング状態またはディスカーディング状態にあるポートが指定ブリッジからBPDUを受信しなくなった場合、STPは最終的にそのポートに関連付けられている情報をエージングアウトし、forwarding状態に移行します。
これによりSTPループが発生し、パケットがループしたパスを無限に循環し始め、より多くの帯域幅とリソースを消費する可能性があります。その結果、ネットワークが停止する可能性があります。
ポートが up 状態であるにもかかわらずスイッチが BPDU を受信しないのはなぜでしょうか。これは単方向リンクが原因です。
リンクは、次の場合に単方向とみなされます。
リンクの接続の両端が up 状態になっている。
ローカル側はリモート側から送信されたパケットを受信しませんが、リモート側はローカル側から送信されたパケットを受信します。
次のシナリオでは、矢印はSTP BPDUのフローを示しています。
STPポート状態トポロジ
このトポロジに示されている状況では、スイッチCに向かうスイッチBのインターフェイスがB-Cセグメントの指定ポートになり、スイッチCに向けてBPDUを送信します。スイッチC上のスイッチBに向かうインターフェイスは、従来のIEEE 802.1D STPでは非指定ポートです。またはRSTPの代替ポートで、スイッチBからBPDUを受信して処理している間は、ブロッキングステートまたはディスカーディングステートのままです。スイッチCのインターフェイスはブロッキングステートまたはディスカーディングステートですが、ポートはBPDUを受信して処理し続けます。これらのステートによって、ポートはデータフレームを転送できなくなりますが、BPDUを受信できなくなります。
B-Cリンクが単方向になり、B-C方向で障害が発生した場合の状況を考→してください。スイッチCはスイッチBからBPDUを受信できなくなり、スイッチBはスイッチCによって送信されたBPDUを受信できます。スイッチCでは、最後のBPDUから学習した情報が、古くなるまで保持されます。従来のIEEE 802.1D STPでは、デフォルトの最大経過時間は20秒ですが、これには最大で20秒かかる場合があります。STP情報がエージングアウトすると、スイッチCではそのセグメントでスイッチBが上位とは見なされなくなり、ポートはブロッキングからリスニング、ラーニング、そして最終的にはフォワーディングに移行できます。
これにより、ブロックされたポートがA-B-Cのトライアングルにないため、レイヤ2フォワーディングループが発生します。ブロードキャスト、不明なユニキャスト、およびマルチキャストのフレームがループを繰り返し循環し、帯域幅やCPUを消費して、ブロードキャストストームを引き起こす可能性があります。
このシナリオでは、ネットワークがダウンする可能性があります。これは、トラフィックのブラックホールのような単方向リンクが原因で発生する別の問題です。
STP の BPDU フロー
UDLDは、直接接続されたデバイス間の単方向通信と特定のケーブル配線の不整合を特定することによって、レイヤ1リンク検出メカニズムを補完するレイヤ2プロトコルです。
レイヤ1では、自動ネゴシエーションによって物理シグナリングと障害検出が解決されます。UDLDでは、ネイバーIDの検出や誤って接続されたポートのシャットダウンなど、オートネゴシエーションでは実行できないタスクが実行されます。オートネゴシエーションとUDLDの両方を有効にすると、レイヤ1とレイヤ2の検出が連携して、物理的および論理的な単方向接続と、他のプロトコルの動作不良を防止します。
UDLD は、隣接デバイス間でプロトコルパケットを交換することによって動作しています。双方向のUDLDネイバー関係を確立するには、直接接続された両方のデバイスがUDLDをサポートし、接続されたインターフェイスでUDLDを有効にする必要があります。両方のデバイスで双方向状態を確認します。
UDLD に設定された各スイッチポートでは、UDLD プロトコルパケットが送信されます。このパケットには、ポートのデバイス/ポート ID と、そのポートの UDLD で認識された隣接デバイス/隣接ポートの ID が含まれます。
隣接ポートは、相手側から受信したパケットで、自分のデバイス/ポート ID(エコー)を確認します。着信 UDLD パケットで、自分のデバイス ID またはポート ID を特定の期間認識できないと、リンクは単方向とみなされます。
エコーアルゴリズムを使用すれば、次の問題を検出できます。
リンクは両側で up 状態になっているが、パケットは片側だけで受信されている。
接続(配線)ミスで、受信ファイバと送信ファイバがリモート側の同じポートに接続されていない。
UDLDは、単方向状態を検出すると、検出ローカルインターフェイスをerr-disable状態にします。リモートインターフェイスの状態は、リモートUDLDの検出と物理リンクの動作に依存します。同様のメッセージがコンソールに表示されます。
UDLD-3-DISABLE: Unidirectional link detected on port 1/2. Port disabled
UDLDによって無効にされたインターフェイスは、手動で回復されるか、有効にされたerrdisable回復タイマーが時間切れになるまで、err-disable状態のままになります。リカバリの前に、ファイバ、トランシーバ、ケーブル、またはリモートインターフェイスの障害を修正します。手動回復にはshutdownおよびno shutdownを使用します。UDLDをサポートするプラットフォームでは、udld resetにより、UDLDによってディセーブル/シャットダウンされたインターフェイスがリセットされます。回復後に、show interfaces status err-disabled、show udld <interface-id>、およびshow udld neighborsコマンドを実行して、インターフェイスが動作していて、UDLDの関係が双方向であることを確認します。システムログを確認して、障害が再発しないことを確認します。
UDLDは、通常モードとアグレッシブモードの2つのモードで動作できます。
サポートされているインターフェイスでUDLDが有効になっている場合、アグレッシブモードが明示的に設定されていない限り、通常モードがデフォルトの動作モードになります。UDLDは、自動ネゴシエーションなどのレイヤ1メカニズムと連動して、リンクを検証します。レイヤ1メカニズムは、物理シグナリングとリンク障害を検出します。UDLDは、隣接デバイスを特定し、正しいポートに接続されているファイバストランドを確認します。
通常モードでは、UDLDは、ポート間でファイバストランドが正しく接続されておらず、レイヤ1メカニズムでケーブル配線エラーが検出されない単方向状態を検出します。ファイバストランドが正しいポートに接続されていても、トラフィックが一方向だけに流れている場合、UDLD通常モードでは論理リンクが未定義としてマークされ、ポートは無効になりません。この動作は、物理障害を検出するためにレイヤ1メカニズムに依存しています。1本の光ファイバが切断され、自動ネゴシエーションによって物理的な障害が検出された場合、リンクはアップ状態のままになりません。レイヤ1はすでに問題を検出しており、UDLDの論理リンクの状態はundeterminedであるため、UDLDではシャットダウンアクションは実行されません。
アグレッシブモードには、通常モードの検出機能が含まれ、ポイントツーポイント光ファイバおよびツイストペアリンクに対する保護機能が追加されています。この機能は、ファイバストランドの接続ミスや、一方のエンドポイントがトラフィックを送受信できない、一方のポートがアップ状態のまま他方がダウンしている、または一方のファイバストランドが切断された状態を検出します。
UDLD helloパケットは、ポイントツーポイントリンクのハートビートとして機能します。リンクが双方向として確立された後、UDLDがこれらのパケットの受信を停止すると、アグレッシブモードでは双方向関係の再確立が試行されます。UDLDで関係を復元できない場合は、双方向の動作を確認できないリンクが引き続き使用されるのを防ぐために、影響を受けるローカルポートがディセーブルにされます。
両方のファイバストランドがレイヤ1に対して動作可能であると思われる場合、アグレッシブUDLDによって、それらが正しい隣接ポートに接続されていること、およびトラフィックが予期される隣接ポート間で双方向に流れていることが確認されます。レイヤ1で動作するため、オートネゴシエーションではこのネイバーおよびポートIDの検証を実行できません。
UDLDを実行しているポートが、ホールドタイムの間に隣接ポートからUDLDパケットを受信しないと、UDLD情報がエージングアウトします。これらのタイマーは、通常モードとアグレッシブモードの両方でUDLDネイバー情報メンテナンスに適用されます。有効期間後のアクションは、設定されているモードと検出された状態によって異なります。ポートの保留時間はリモート ポートによって規定され、リモート側のメッセージ間隔に依存します。メッセージ間隔が短ければ短いほど、保留時間が短くなって検出が速くなります。最近のUDLDの実装では、メッセージ間隔を設定できます。一部の物理的な問題や全二重/半二重のミスマッチが原因でポートでのエラー率が高くなると、UDLD 情報がエージング アウトする場合があります。このようなパケットの廃棄はリンクが単方向になったことを意味するものではなく、通常モードのUDLDではリンクが無効にされることはありません。
適切な検出時間を確保するには、適切なメッセージ間隔を選択することが重要です。メッセージ間隔は、フォワーディングループが発生する前に単方向リンクを検出できるほど高速である必要がありますが、スイッチのCPUを過負荷にしないでください。この例のデフォルトのメッセージ間隔は15秒です。記載されている従来のIEEE 802.1D STPタイマーのシナリオでは、UDLD情報の推定有効期限は、ブロックされたポートがフォワーディングステートに達するまでの推定時間よりも短くなります。
この比較によって、STPが転送トポロジを変更する前に、アグレッシブUDLDによってインターフェイスがerr-disable状態になることは保証されません。UDLDネイバー情報が期限切れになるおおよその時間は、メッセージ間隔の3倍です。例:
Texpiration ≈ message_interval × 3
デフォルトのメッセージ間隔では、Texpiration ≈ 15 × 3 = 45秒です。 標準的なIEEE 802.1D STPの動作では、ブロックされたポートが格納されているSTP情報をエージングアウトし、リスニング状態とラーニング状態を経てフォワーディングステートに移行するのにおよその時間は次のとおりです。
Tforward = max_age + (2 × forward_delay)
デフォルトのSTPタイマーでは、Tforward = 20 + (2 × 15) = 50秒:UDLDネイバー情報の有効期限とSTPポートの遷移を比較する場合、維持するメッセージインターバルを選択します。Texpiration < Tforward
アグレッシブモードでは、UDLDネイバー情報の期限が切れた後、UDLDは1秒間に1つのメッセージを8秒間送信することで、双方向関係の再確立を試みます。双方向ステートを再確立できない場合、UDLDによってローカルポートがディセーブルにされます。
注:これらの計算は概算であり、このドキュメントで説明されているUDLDの動作と標準的なIEEE 802.1D STPタイマーのシナリオに適用されます。導入されたプラットフォーム、ソフトウェアリリース、STPモード、設定されたタイマー、および障害が発生した時間が、実際のタイミングに影響する可能性があります。
注:従来のSTP計算Treconvergence = max_age + (2 × forward_delay)は、通常のRSTP高速コンバージェンスには適用されません。RSTP プロトコル情報は、3回連続してHelloインターバルの間にBPDUが受信されなかったり、該当する最大経過時間の条件に達したりすると、期限切れになる場合があります。その後、適格な代替ポートが迅速にフォワーディングステートに移行します。移行時間の合計は、トポロジ、ポートの役割、リンクタイプ、同期処理、および障害状態によって異なります。したがって、固定タイマーの計算では、RSTPによって転送トポロジが変更される前に、UDLDによって単方向リンクが検出されたり無効にされたりすることは保証できません。導入されたプラットフォーム、ソフトウェアリリース、トポロジ、およびタイマー設定での、UDLDとRSTP間のインタラクションを検証します。
アグレッシブモードによって検出されるその他の条件の例としては、次のものがあります。
イーサネットPHYの実装の中には、リモート障害シグナリングまたはリンクネゴシエーションメカニズムを提供するものがあり、特定の物理的障害の後に、一方または両方のリンクエンドポイントがダウン状態に移行することがあります。動作は、プラットフォーム、インターフェイスタイプ、トランシーバ、メディア、およびネゴシエーションモードによって異なります。UDLDは、物理層シグナリングでは検出されない単方向状態に対して、レイヤ2の検証を提供します。一方のエンドポイントが送受信できない場合、または一方のエンドポイントがアップしていて他方がダウンしている場合、障害が発生したリンク自体は完全な転送パスを提供せず、転送ループを形成しません。ただし、インターフェイスがアップ状態のままでも、トラフィックを機能しないパスに転送し続け、その結果、トラフィックがブラックホールに入る可能性があります。アグレッシブUDLDでは、双方向通信の喪失が検出され、UDLD関係を再確立できない場合は、該当するローカルポートが無効になります。
接続された両方のインターフェイスでUDLDを有効にします。両方のエンドポイントで同じUDLDモードを設定し、一貫したローカル障害検出とerr-disable動作を提供します。
9300-1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-1(config)#interface TenGigabitEthernet1/1/6
9300-1(config-if)#udld port
9300-1(config-if)#end
9300-2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-2(config)#interface TenGigabitEthernet1/1/6
9300-2(config-if)#udld port
9300-2(config-if)#end
注:グローバルUDLDコマンドとそのインターフェイススコープはプラットフォームによって異なります。グローバルコマンドを使用する前に、対象のプラットフォームコマンドリファレンスを確認してください。
両方のリンクエンドポイントでshow udld <interface-id>コマンドとshow udld neighborsコマンドを実行します。各インターフェイスが運用可能であり、現在の状態が双方向であり、予期されるネイバーデバイスとポートIDが表示されていることを確認します。
9300-1#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 37500 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8CA00
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8C180
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-2
9300-1#show udld neighbors
Port Device Name Device ID Port ID Neighbor State
---- ----------- --------- ------- --------------
Te1/1/6 F87A41A8CA00 1 Te1/1/6 Bidirectional
Total number of bidirectional entries displayed: 1
9300-2#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 32500 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8C180
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8CA00
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-1
9300-2#show udld neighbors
Port Device Name Device ID Port ID Neighbor State
---- ----------- --------- ------- --------------
Te1/1/6 F87A41A8C180 1 Te1/1/6 Bidirectional
Total number of bidirectional entries displayed: 1
インターフェイスにアグレッシブUDLDを設定するには、udld port aggressiveコマンドを使用します。
9300-1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-1(config)#interface TenGigabitEthernet1/1/6
9300-1(config-if)#udld port aggressive
9300-1(config-if)#end
9300-2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-2(config)#interface TenGigabitEthernet1/1/6
9300-2(config-if)#udld port aggressive
9300-2(config-if)#end
両方のエンドポイントでshow udld <interface-id>コマンドを実行して、アグレッシブモードが動作可能であることを確認します。
9300-1#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
Port enable administrative configuration setting: Enabled / in aggressive mode
Port enable operational state: Enabled / in aggressive mode
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 31200 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8CA00
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8C180
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-2
9300-2#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
Port enable administrative configuration setting: Enabled / in aggressive mode
Port enable operational state: Enabled / in aggressive mode
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 38600 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8C180
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8CA00
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-1
メッセージ間隔を変更するには、udld message timeコマンドを実行します。
9300-1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-1(config)#udld message time ?
<1-90> Time in seconds between sending of messages in steady state
Cisco Catalyst 3000および9000シリーズスイッチでは、udldメッセージの時間値は1 ~ 90秒の範囲で、デフォルトは15秒です。他のシステムの許容範囲とデフォルトを確認するには、コマンドリファレンスガイドを参照してください。
Catalyst 3560スイッチの場合は、「UDLDの設定」を参照してください。
| 改定 | 発行日 | コメント |
|---|---|---|
2.0 |
18-Aug-2026
|
読みやすいように、スペル、文法、挿入された水平線をセクションごとに分けて更新。 |
1.0 |
09-Jul-2007
|
初版 |