目錄

簡介

必要條件

需求

採用元件

慣例

問題定義

單向連結偵測通訊協定運作原理

UDLD運作模式

可用性

組態和監控

相關資訊

簡介

本檔案將說明單向連結偵測(UDLD)通訊協定如何協助防止交換網路中的回圈和流量異常。

必要條件

需求

本文件沒有特定需求。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

問題定義

生成樹協定(STP)將冗餘物理拓撲解析為無環樹狀轉發拓撲。

為此，它會阻塞一個或多個埠。阻塞一個或多個埠後，轉發拓撲中沒有環路。STP的運行依賴於橋接協定資料單元(BPDU)的接收和傳輸。如果埠處於阻塞狀態的交換機上運行的STP進程沒有從其上游（指定）交換機接收BPDU，則STP最終會將該埠的STP資訊過期並將其移至轉發狀態。

這可能會產生STP回圈，封包將沿著回圈路徑無限循環並佔用越來越多的頻寬和資源。這可能會導致網路中斷。

交換機如何在埠處於開啟狀態時不接收BPDU?原因是單向鏈路。

發生此情況時，連結會視為單向的：

- 連線兩端的連線都處於開啟狀態。

- 本地端不接收遠端端傳送的封包，而遠端端接收本地端傳送的封包。

請考慮以下情況。箭頭指示STP BPDU的流量。

在正常運行期間，網橋B是鏈路B-C上的指定埠。網橋B將BPDU向下傳送到C，這是阻塞埠。當C看到來自該鏈路上B的BPDU時，該埠被阻塞。

現在，請考慮如果鏈路B-C在C方向上發生故障，將會發生什麼情況。C不再接收來自B的流量，但是B仍然接收來自C的流量。

up

C不會在鏈路B-C上接收BPDU，但會保留使用最後一個BPDU接收的資訊。這最多需要20秒，具體取決於maxAge STP計時器。一旦埠上的STP資訊過期，該埠就會從阻塞狀態轉換到偵聽、學習，並最終轉換到轉發STP狀態。這會產生回圈，因為三角形A-B-C中沒有阻塞埠。資料包沿該路徑循環（B仍接收來自C的資料包），這將消耗額外的頻寬，直到鏈路完全被填滿。

這種情況可能會使網路停機。單向鏈路可能造成的另一個問題是流量黑洞。

單向連結偵測通訊協定運作原理

UDLD是第2層(L2)通訊協定，與第1層(L1)機制合作以確定連結的物理狀態。在第1層，自動交涉負責物理訊號傳送和故障檢測。UDLD會執行自動交涉無法執行的任務，例如檢測鄰居的身份和關閉連線埠不當的情況。啟用自動交涉和UDLD時，第1層和第2層檢測會協同工作，防止物理和邏輯單向連線以及其他協定的故障。

UDLD是透過在相鄰裝置之間交換通訊協定封包來運作。若要使UDLD正常運作，連結上的兩台裝置都必須支援UDLD，並在各自的連線埠上啟用它。

針對UDLD設定的每個交換器連線埠都會傳送UDLD通訊協定封包，其中包含UDLD在該連線埠上看到的連線埠裝置/連線埠ID以及鄰近裝置/連線埠ID。鄰近連線埠會在從另一端接收的封包中看到自己的裝置/連線埠ID（回應）。如果連線埠在傳入UDLD封包中的特定持續時間內看不到其自己的裝置/連線埠ID，則連結會視為單向的。

此回應演演算法允許偵測到以下問題：

- 兩端的鏈路都為up狀態，但只有一端接收資料包。

- 當接收和傳輸光纖未連線到遠端端上的同一埠時，發生連線（電線）錯誤。

UDLD偵測到單向連結後，相應的連線埠就會停用，且主控台上會顯示以下訊息：

UDLD-3-DISABLE: Unidirectional link detected on port 1/2. Port disabled

UDLD關閉的埠將一直處於禁用狀態，直到手動啟用該埠或直到錯誤停用超時過期（如果已配置）。

UDLD運作模式

UDLD可以在兩種模式下運作：正常模式和主動模式。

- 在正常模式下，如果埠鏈路狀態確定為雙向且UDLD資訊超時，則UDLD不會執行任何操作。UDLD的埠狀態標籤為未確定。連線埠的行為與其STP狀態相符。

- 在主動模式下，如果確定埠的鏈路狀態為雙向，並且當埠上的鏈路仍處於開啟狀態時，UDLD資訊超時，則UDLD會嘗試重新建立埠狀態。如果失敗，連線埠就會進入錯誤停用狀態。

如果執行UDLD的連線埠在保留時間持續時間內沒有收到來自相鄰連線埠的UDLD封包，就會發生UDLD資訊過期的情況。連線埠的保持時間由遠端連線埠決定，並取決於遠端上的訊息間隔。消息間隔越短，保持時間越短，檢測速度越快。最近的UDLD實現允許配置消息間隔。由於某些物理問題或雙工不相符導致連線埠上的高錯誤率，UDLD資訊可能會過期。此類封包捨棄並不意味著連結是單向的，且正常模式下的UDLD不會停用此類連結。

必須能夠選擇正確的消息間隔，以確保正確的檢測時間。消息間隔必須足夠快，才能在建立前向環路之前檢測單向鏈路，但是它不能使交換機CPU過載。預設消息間隔為15秒，並且速度足夠快，可以在使用預設STP計時器建立前向環路之前檢測單向鏈路。檢測時間大約等於消息間隔的三倍。

例如： Tdetection~ message_interval x3

預設消息間隔15秒為45秒。

單向鏈路故障時，STP需要Treconvergence=max_age + 2x forward_delay才能重新收斂。使用預設計時器時，需要20+2x15=50秒。

建議保留Tdetection< Treconvergence並選擇適當的消息間隔。

在主動模式下，一旦資訊老化，UDLD將嘗試重新建立鏈路狀態，並每秒8秒傳送一次資料包。如果仍然無法確定鏈路狀態，則表示鏈路已禁用。

Aspirsivemode會增加這些情況的額外檢測：

- 連線埠停滯(在一側連線埠既不傳輸也不接收，但是連結在兩側都處於開啟狀態)。

- 鏈路在一側開啟，在另一側關閉。在本地埠上拔下傳輸光纖時，本地埠上的鏈路保持up狀態，在光纖埠上可看到此問題。但是，遠端已關閉</tt>。

最近，光纖快速乙太網硬體實施具有遠端故障指示(FEFI)功能，以便在這些情況下使兩端鏈路斷開。在GigabitEthernet上，連結交涉提供類似的功能。銅纜埠通常不易受此類問題的影響，因為它們使用乙太網鏈路脈衝來監控鏈路。必須注意的是，在這兩種情況下，由於連線埠之間沒有連線，所以不會發生正向回圈。但是，如果鏈路在一端處於開啟狀態而在另一端處於關閉狀態，則可能會發生流量黑洞。積極的UDLD旨在防止這種情況。

可用性

UDLD在Cisco IOS®軟體版本12及更高版本的正常和主動模式下可用。

組態和監控

運行命令show udld以驗證介面上是否已啟用UDLD:

Switch#show udld

Interface Gi1/0/1

---

Port enable administrative configuration setting: Disabled

Port enable operational state: Disabled

Current bidirectional state: Unknown

Interface Gi1/0/2

---

Port enable administrative configuration setting: Disabled

Port enable operational state: Disabled

Current bidirectional state: Unknown

Interface Gi1/0/3

---

Port enable administrative configuration setting: Disabled

Port enable operational state: Disabled

Current bidirectional state: Unknown

可以在介面上配置主動式UDLD，  udld port aggressive 指令:

Switch#configure terminal

Enter configuration commands, one per line. End with CNTL/Z.

Switch(config)#interface gigabitEthernet1/0/1

Switch(config-if)#udld port aggressive

Switch(config-if)#end

Switch#

發出show udld

和 show udld neighbors 命令驗證連線埠上是否已啟用或停用UDLD，以及連結和鄰居狀態是什麼：

Switch#show udld GigabitEthernet1/0/1

Interface Gi1/0/1

---

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: 31600 ms

Cache Device index: 1

Current neighbor state: Bidirectional

Device ID: 346288238580

Port ID: Gi4/0/1

Neighbor echo 1 device: 70B4F35F080

Neighbor echo 1 port: Gi1/0/1

TLV Message interval: 15 sec

No TLV fast-hello interval

TLV Time out interval: 5

TLV CDP Device name: MXC.TAC.M.02-3850-01

Switch#show udld neighbors

Port      Device Name    Device ID   Port ID     Neighbor State

----      -----------    ---------   -------     --------------

Gi1/0/1   346288238580   1           Gi4/0/1     Bidirectional

Total number of bidirectional entries displayed: 1

使用  udld message time  命令更改消息間隔：

Switch(config)#udld message time 10

UDLD message interval set to 10 seconds

間隔的範圍是從1到90秒，預設值為15秒。

相關資訊

- 思科技術支援與下載

- 若是Catalyst 3560交換器，請參閱設定UDLD。

- 有關執行Cisco IOS的Catalyst 4500/4000，請參閱設定UDLD。

- 有關Catalyst 9300交換器，請參閱如何設定UDLD

- 有關Catalyst 9500交換器，請參閱如何設定UDLD