1、UDLD(單向鏈路檢測協議)工作原理
為了在生成轉發環路之前檢測到單向鏈路,Cisco 設計並實施了 UDLD 協議。UDLD 是與第 1 層 (L1) 機制一起工作以確定鏈路物理狀態的第 2 層 (L2) 協議。
在第 1 層中,自動協商負責物理信令和故障檢測。UDLD 執行自動協商不能執行的任務,例如,檢測鄰居身份和關閉錯誤連接的端口。當同時啟用自動協商和 UDLD 時,第 1 層和第 2 層檢測將一起工作,以防止出現物理和邏輯單向連接以及其他協議無法正常工作的情況。
UDLD 的工作方式為與相鄰設備交換協議數據包。為了使 UDLD 發揮作用,鏈路上的兩個設備必須支持 UDLD,並且已在各自的端口上啟用了 UDLD。
為 UDLD 配置的每個交換機端口將發送 UDLD 協議數據包,這些數據包中包含該端口自己的設備/端口 ID,以及由該端口上的 UDLD 發現的鄰接設備/端口 ID。鄰接端口應在接收自另一端的數據包中查看它們自己的設備/端口 ID(回聲)。
如何判斷為單向鏈路:如果在特定的持續時間內,該端口在傳入的 UDLD 數據包中未看到其自己的設備/端口 ID,則該鏈路會被視為單向鏈路。
此回聲算法允許檢測以下問題:
①鏈路兩端均已接通,但是,只有一端可以接收數據包(單通)。
②當接收和傳輸光纖未連接到遠程端上的同一端口時發生的配線錯誤。
UDLD觸發時的現象和如何恢復:
一旦 UDLD 檢測到單向鏈路,將禁用各自的端口,並將在控制台上輸出以下信息:
UDLD-3-DISABLE Unidirectional link detected on port 1/2.Port disabled
由 UDLD 關閉的端口將保持禁用狀態,直到手動重新啟用該端口,或直到 errdisable 超時到期(如果已配置)。
2、UDLD 運行模式
UDLD 能夠以兩種模式運行:正常和主動。
在正常模式下,如果確定端口的鏈路狀態為雙向,並且 UDLD 信息超時,UDLD 不會執行任何操作。UDLD 的端口狀態標記為未確定。該端口根據其 STP 狀態運行。
在主動模式下,如果確定端口的鏈路狀態為雙向,並且在該端口上的鏈路仍處於接通狀態時,UDLD 信息超時,則 UDLD 將嘗試重建端口狀態。如果不成功,則該端口被置於 errdisable 狀態。
當運行 UDLD 的端口在保留時間段內不接收來自鄰接端口的 UDLD 數據包時,會發生 UDLD 信息老化的情況。端口的保留時間由遠程端口決定,並且取決於遠程端的消息間隔。消息間隔越短,保留時間就越短,檢測速度也越快。UDLD 的最近實施允許配置消息間隔。
UDLD 信息可能會由於端口上的錯誤率較高(由某個物理問題或雙工不匹配導致)而老化。這樣的數據包丟棄並不意味着鏈路是單向的,以正常模式運行的 UDLD 不會禁用這樣的鏈路。
為了保證適當的檢測時間,能夠選擇正確的消息間隔非常重要。消息間隔應該足夠短,以便可以在生成轉發環路之前檢測到單向鏈路,但是,它不應使交換機 CPU 過載。默認的消息間隔為 15 秒,完全能夠在用默認 STP 定時器生成轉發環路之前檢測到單向鏈路。
檢測時間大約等於消息間隔的三倍。
例如:T檢測 | message_interval x3
對於默認的消息間隔 15 秒,檢測時間為 45 秒。
它采取T STP的reconvergence(再收斂) = max_age + 2x forward_delay能再聚合在單向鏈路故障的情況下。使用默認定時器,需要花費 20+2x15=50 秒。
它通過選擇一個適當的消息間隔推薦保持T檢測 < T再收斂。
在主動模式下,一旦信息老化,UDLD 將嘗試通過每秒發送一次數據包(共持續 8 秒)的方式來重建鏈路狀態。如果仍然沒有確定鏈路狀態,將禁用該鏈路。
主動模式添加了對以下情況的附加檢測:
①端口停止響應(一端的端口既不傳輸也不接收,但是鏈路兩端均處於接通狀態)。
②鏈路在一端處於接通狀態,並在另一端處於斷開狀態。這是光纖端口可能出現的問題。從本地端口上拔下傳輸光纖后,鏈路仍然在本地端處於接通狀態。但是,它在遠程端已斷開。
最近,為使鏈路兩端在這些情況下都處於斷開狀態,光纖快速以太網硬件實施提供了遠端故障指示(FEFI) 功能。在千兆以太網上,鏈路協商提供了一個相似的功能。銅纜端口通常不會受這類問題的影響,因為它們使用以太網鏈路脈沖監控鏈路。必須指出的是,在這兩種情況下,由於端口之間沒有任何連接,所以不會存在任何轉發環路。但是,如果鏈路的一端接通,而另一端斷開,則可能發生數據流黑洞。主動 UDLD 設計為可防止出現此問題。
3、可用性
4、配置和監控
通過使用以下命令詳細說明了運行 CatOS 的 Catalyst 交換機上的 UDLD 配置。首先需要使用以下命令全局啟用 UDLD(默認為禁用狀態):
Vega> (enable) set udld enable //UDLD enabled globally
發出以下命令:以驗證是否已啟用 UDLD
Vega> (enable) show udld
UDLD :enable
Message Interval:15 seconds
還需要對必要的端口使用以下命令啟用 UDLD:
Vega> (enable) set udld enable 1/2 //UDLD enabled on port 1/2
要驗證是否已對端口啟用 UDLD 以及鏈路狀態是什么狀態,請發出 show udld port 命令:
Vega> (enable) show udld port
UDLD : enabled
Message Interval : 15 seconds
Port Admin Status Aggressive Mode Link State
-------- ------------ --------------- ----------------
1/1 enabled disabled undetermined
1/2 enabled disabled bidirectional
使用 set udld aggressive-mode enable <module/port> 命令,對每個端口啟用主動 UDLD:
Vega> (enable) set udld aggressive-mode enable 1/2
Aggressive UDLD enabled on port 1/2.
Vega> (enable) show udld port 1/2
UDLD : enabled
Message Interval : 15 seconds
Port Admin Status Aggressive Mode Link State
-------- ------------ --------------- ----------------
1/2 enabled enabled undetermined
發出以下命令以更改消息間隔:
Vega> (enable) set udld interval 10 //UDLD message interval set to 10 seconds
間隔范圍可為 7 秒到 90 秒,默認值是 15 秒。
原文鏈接:https://www.cisco.com/c/zh_cn/support/docs/lan-switching/spanning-tree-protocol/10591-77.html