# L2スイッチング / UDLD

UDLD（UniDirectional Link Detection）は、UDLDプローブメッセージ(UDLD PDU)というフレームを使って、対向機器との間でフレームの到達性を監視する機能（RFC5171）です。
フレームの送信、もしくは受信が正しく行えない、Unidirectional（単一方向）のリンク状態を検出したとき、ポートを閉塞します。
オプションを設定することで、ポート閉塞後、一定期間を置いて閉塞状態を解除することができます。
本機能はデフォルトでは無効になっています。
Note

UDLD動作機器同士の間に、UDLD非サポートのHUBやスイッチ製品を接続しないでください。

Note

リンクアグリゲーション、LACPを設定しているポートでUDLDを併用する場合は、saX（スタティックチャンネルグループ）、poX（LACPチャンネルグループ）ではなく、port X.Y.Zに設定してください。

Note

ポートセキュリティーとUDLDは併用できません。

## UDLDの構成

UDLD機能の基本的な用語を解説します。

### Directional-State

UDLDで検出される稼働状況（Directional-State）については、下表をご覧ください。

表 1
Unknown | 初期状態
Neighbor's echo is empty | 受信したUDLDプローブメッセージのNeighborキャッシュの内容がない場合
Bidirectional（双方向） | 対向機器との間で、イーサネットのTXポートからフレームを送信し、RXポートでフレームを受信できる状態
Unidirectional（単一方向） | 対向機器との間で、イーサネットのTXポートからフレームが送信できない、もしくは、RXポートでフレームを受信できない状態
Transmit-to-receive loop | 該当ポートで自身のUDLDプローブメッセージを受信した状態（対向機器からループバックしてしまった）
Mismatch with neighbor state reported | UDLD動作機器同士の間に、UDLD非サポートのHUBやスイッチ製品を接続して、接続ミスがある状態

### Operational-State

UDLDの状態（Operational-State）には、以下の種類があり、処理の流れで遷移します。

表 2：Operational-State（フェーズ）
Inactive (Link down / Disabled port) | UDLDが無効となっているか、ポートがリンクダウンしている状態
Link up | ポートがリンクアップして、UDLDプローブメッセージを受信していない状態
Detection | 対向機器からUDLDプローブメッセージを受信して、UDLDの稼働状態がBidirectionalとなるまでの状態
Extended detection | DetectionフェーズでNeighbor情報が収集できなかった場合の状態
Advertisement | 対向機器からUDLDプローブメッセージを受信しない状態
Advertisement - Single neighbor detected | 単一の対向機器との間で、Bidirectionalが確立した状態
Advertisement - MULTIPLE NEIGHBORS DETECTED | 複数の対向機器との間で、Bidirectionalが確立した状態（未サポート）

### UDLDのタイマー

UDLDで使用されるタイマーには、以下の種類があります。

表 3
メッセージインターバル | 対向機器にUDLDプローブメッセージを送信する間隔。デフォルトは15秒
ディテクションウィンドウ | 対向機器から最初にUDLDプローブメッセージを受信してから、Bidirectionalとなるまでに許容される間隔。5秒で固定

Note

メッセージインターバルの設定値が有効となるのは、UDLDの稼働状況がBidirectionalで、状態がAdvertisementフェーズとなった場合のみであり、Link upおよびDetectionフェーズでは、設定値ではなく1秒間隔で送信します。また、稼働状況がBidirectionalでないときに、Advertisementフェーズとなった場合には、7秒間隔で送信します。

### UDLDの基本動作

UDLD機能では、次の手順で対向機器との間で到達性を確認し、単一方向のリンクを検出した場合はポートを閉塞します。

#### Link upフェーズ

UDLDが有効となっているポートがリンクアップすると、1秒間隔でUDLDプローブメッセージを送信し始めます。
8回UDLDプローブメッセージを送信するまでの間に、対向機器からのUDLDプローブメッセージを受信できない場合は、Advertisementフェーズへ移行します。
対向機器からUDLDプローブメッセージを受信すると、Detectionフェーズへ移行します。

#### Detectionフェーズ

対向機器に対して、1秒間隔で5回（＝ディテクションウィンドウ）、受信したプローブメッセージから抽出した情報を埋め込んだエコーメッセージを送信します。
ディテクションウィンドウの間に自分の情報が格納されているエコーメッセージを受信すると、ディテクションウィンドウ終了後、稼働状況をBidirectionalとし、Advertisementフェーズに移行します。

#### Extended detectionフェーズ

ディテクションウィンドウの間に自分の情報が格納されているエコーメッセージを受信できない場合、拡張ディテクションウィンドウが開始され、以後は7秒間隔でエコーを送信します。
拡張ディテクションウィンドウの間に空のエコーを受信するとUnidirectionalと判断し、該当ポートを閉塞します。
拡張ディテクションウィンドウに移行した後、対向機器から通知されるメッセージインターバルの3倍の時間が経過すると、Link upフェーズへ移行します。

#### Advertisementフェーズ

稼働状況がBidirectionalの場合、設定されたメッセージインターバルの間隔でUDLDプローブメッセージを送信し続けます。（ただし、Advertisementフェーズに移行した最初の 5回分は、7秒間隔で送信）
稼働状況がBidirectionalでない場合、7秒間隔でプローブメッセージを送信し続けます。
対向機器から送られてくるUDLDプローブメッセージに、自分の情報が含まれなくなった後、対向機器から通知されるメッセージインターバルの3倍の時間が経過すると、Link upフェーズへ移行します。

### UDLDの動作モード

UDLDの動作モードにはノーマルモードとアグレッシブモードの2種類があり、一旦Bidirectionalが確立した後に、Unidirectionalのリンク状態を検出する処理が異なります。
UDLD機能がノーマルモードで動作しているときは、Extended detectionフェーズにおいて、拡張ディテクションウィンドウの間に空のエコーを受信することでUnidirectionalと判断し、ポートを閉塞します。
このため、対向機器のポートが送信も受信もできない状態の場合、Unidirectionalを検出することができません。
動作モードをアグレッシブモードに設定すると、Link upフェーズに移行後、1秒間隔で8回、UDLDプローブメッセージを送信し、その間に対向機器からUDLDプローブメッセージを受信できなかった場合、リンク状態はUnidirectionalと判断され、ポートを閉塞します。
このため、対向機器のポートが送信も受信もできない状態でも、Unidirectionalを検出できます。
Note

アグレッシブモードが動作する条件として、一度、対向機器とのリンクがBidirectionalで確立した後、Link upフェーズに移行する必要があります。

## UDLD機能の有効/無効

本製品でUDLD機能を使うには、UDLD機能を有効にする必要があります。
UDLD機能を有効にするには、udld portコマンドを使います。

    awplus(config-if)# udld port

光スイッチポートのUDLD機能を有効にするには、udld enableコマンドを使います。

    awplus(config)# udld enable

UDLDの動作モードをアグレッシブモードに切り替えるには、udld aggressive-modeコマンドを使います。

    awplus(config)# udld aggressive-mode

UDLD機能を無効にするには、udld portコマンドをno形式で指定します。

    awplus(config-if)# no udld port

光スイッチポートのUDLD機能を無効にするには、udld enableコマンドをno形式で指定します。

    awplus(config)# no udld enable

## UDLDの各種設定

対向機器にUDLDプローブメッセージを送信する間隔や、Unidirectional検出によるポート閉塞の持続時間を変更する方法と、ポート閉塞状態を解除する方法を説明します。
対向機器にUDLDプローブメッセージを送信する間隔（メッセージインターバル）は、udld time message-intervalコマンドで設定可能です。単位は秒で、デフォルトは15秒です。

    awplus(config)# udld time message-interval 30

Unidirectional検出によるポート閉塞の持続時間は、udld time disable-periodコマンドで設定可能です。

    awplus(config)# udld time disable-period 60

Unidirectional検出によるポート閉塞状態を解除するには、udld resetコマンドまたは、shutdownコマンドをno形式で使います。

    awplus# udld reset
    awplus(config-if)# no shutdown

## EPSRとUDLDの併用

EPSRとUDLDを併用する場合、UDLDの有効設定後にEPSRの設定をする必要があります。
EPSR運用中にリング中の1箇所のみUDLDを有効にすると、UDLDパケットがループしてポートを閉塞してしまうためです。

## その他

UDLD機能の各種情報を確認するには、show udldコマンド（グローバルコンフィグレーション、光スイッチポートの情報）、show udld portコマンド（全ポートの情報）、show udld neighborsコマンドを使います。

    awplus# show udld
    awplus# show udld port
    awplus# show udld neighbors