簡介
本文件說明錯誤停用狀態、如何從中復原,並提供錯誤停用復原的範例。
必要條件
需求
本文件沒有特定需求。
採用元件
若要建立本檔案中的範例,您的實驗室環境中需要兩部具有已清除組態的Cisco Catalyst 4500/6500系列交換器(或同等級)。交換器必須執行Cisco IOS®軟體,且每台交換器必須有兩個具備EtherChannel和PortFast功能的高速乙太網路連線埠。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
本文件會將「因為錯誤而停用」和「錯誤停用」字詞互換使用。客戶注意到一或多個交換器連接埠變成錯誤停用(表示連接埠處於錯誤停用狀態)時,通常會聯絡思科技術支援。這些客戶想要瞭解為什麼會發生錯誤停用,以及如何將連接埠還原為正常狀態。
註:err-disabled的連線埠狀態會顯示在show interfaces介面編號status命令的輸出中。
使用錯誤停用的平台
以下 Catalyst 交換器支援錯誤停用功能:
執行錯誤停用的方式會因軟體平台而有所不同。本文件專門介紹執行 Cisco IOS 軟體之交換器的錯誤停用。
錯誤停用
錯誤停用的功能
如果組態顯示某個連接埠需要啟用,但交換器上的軟體偵測到該連接埠有錯誤情況,軟體就會關閉該連接埠。換句話說,因為連接埠發生錯誤情況,所以交換器作業系統軟體會自動停用該連接埠。
連接埠因為錯誤而停用時,就會實際關閉,而且該連接埠不會再傳送或接收任何流量。此時連線埠LED會設定為橙色,而且您發出show interfaces命令時,連線埠狀態會顯示err-disabled。以下舉例說明因為錯誤而停用之連接埠在交換器的指令行介面 (CLI) 中顯示的樣子:
cat6knative#show interfaces gigabitethernet 4/1 status
Port Name Status Vlan Duplex Speed Type
Gi4/1 err-disabled 100 full 1000 1000BaseSX
或者,如果介面已經因為錯誤情況而停用,您就會在主控台和系統日誌中看到類似以下訊息:
%SPANTREE-SP-2-BLOCK_BPDUGUARD:
Received BPDU on port GigabitEthernet4/1 with BPDU Guard enabled. Disabling port.
%PM-SP-4-ERR_DISABLE:
bpduguard error detected on Gi4/1, putting Gi4/1 in err-disable state
此範例訊息顯示了主機連接埠何時收到橋接器通訊協定資料單元 (BPDU)。實際訊息內容取決於錯誤情況的原因。
錯誤停用功能有兩個用途:
錯誤停用的原因
一開始之所以會執行此功能,是為了處理交換器連接埠上偵測到過度或延遲衝突等特殊衝突情況。系統因為交換器連續發生 16 次衝突而捨棄訊框時,就會發生過度衝突。線路上的每部裝置都識別不出線路已遭使用,因此就會發生延遲衝突。可能導致這些錯誤類型的原因包括:
介面進入錯誤停用狀態的原因有很多,可能包括:
註:預設情況下會基於所有這些原因啟用錯誤禁用檢測。若要停用錯誤停用檢測,請使用 no errdisable detect cause 命令。show errdisable detect 命令會顯示錯誤停用偵測狀態。
判斷連接埠是否處於錯誤停用狀態
如果您發出 show interfaces 命令,就可以判斷連接埠是否已因為錯誤而停用。
以下是使用中連接埠的範例:
cat6knative#show interfaces gigabitethernet 4/1 status
!--- Refer to show interfaces status for more information on the command.
Port Name Status Vlan Duplex Speed Type
Gi4/1 Connected 100 full 1000 1000BaseSX
以下是相同連接埠處於錯誤停用狀態的範例:
cat6knative#show interfaces gigabitethernet 4/1 status
!--- Refer to show interfaces status for more information on the command.
Port Name Status Vlan Duplex Speed Type
Gi4/1 err-disabled 100 full 1000 1000BaseSX
註:連線埠因為錯誤而停用時,與該連線埠相關聯之前面板的LED會設定為橙色。
判斷進入錯誤停用狀態的原因(主控台訊息、系統日誌和 show errdisable recovery 命令)
交換器使連接埠進入錯誤停用狀態時,會向主控台傳送一則訊息,說明為什麼會停用該連接埠。本節的範例提供了兩則顯示連接埠停用原因的範例訊息:
注意:如果您發出show log命令,則也可以在系統日誌中看到這些消息。
以下是訊息範例:
%SPANTREE-SP-2-BLOCK_BPDUGUARD:
Received BPDU on port GigabitEthernet4/1 with BPDU Guard enabled. Disabling port.
%PM-SP-4-ERR_DISABLE:
bpduguard error detected on Gi4/1, putting Gi4/1 in err-disable state
%SPANTREE-2-CHNMISCFG: STP loop - channel 11/1-2 is disabled in vlan 1
如果您已啟用 errdisable recovery,就可以在發出 show errdisable recovery 命令後判斷錯誤停用狀態的原因。以下是範例:
cat6knative#show errdisable recovery
ErrDisable Reason Timer Status
----------------- --------------
udld Enabled
bpduguard Enabled
security-violatio Enabled
channel-misconfig Enabled
pagp-flap Enabled
dtp-flap Enabled
link-flap Enabled
l2ptguard Enabled
psecure-violation Enabled
gbic-invalid Enabled
dhcp-rate-limit Enabled
mac-limit Enabled
unicast-flood Enabled
arp-inspection Enabled
Timer interval: 300 seconds
Interfaces that can be enabled at the next timeout:
Interface Errdisable reason Time left(sec)
--------- --------------------- --------------
Fa2/4 bpduguard 273
將連接埠從錯誤停用狀態中復原
本節將提供範例來說明如何會遇到因為錯誤而停用的連接埠以及如何加以修復,並簡短討論一些連接埠可能會進入錯誤停用狀態的其他原因。若要將連接埠從錯誤停用狀態中復原,請先找出並修正根本問題,然後重新啟用連接埠。如果在修正根本問題之前重新啟用連接埠,連接埠就會再次因為錯誤而停用。
修正根本問題
發現連接埠遭到停用的原因後,請修正根本問題。修正方式取決於問題是由什麼引發的。有許多原因會觸發關閉。本節將討論一些最顯著且常見的原因:
-
EtherChannel 組態錯誤
若要使 EtherChannel 正常運作,相關的連接埠必須具有一致的組態。這些連接埠必須具有相同的 VLAN、相同的主幹模式、相同的速度、相同的雙工等等。建立通道時,系統會擷取並回報交換器內的大部分組態差異。如果對一台交換器設定了 EtherChannel,但並未對另一台交換器設定 EtherChannel,則跨距樹狀目錄程序可能就會關閉已設定 EtherChannel 那一端已通道化的連接埠。EtherChannel的on模式不會在通道化之前傳送PAgP封包與另一端進行協商,只會假設另一端正在進行通道化。此外,此範例不會對另一台交換器開啟 EtherChannel,但會將這些連接埠保留為單獨且未通道化的連接埠。如果將另一台交換器保持此狀態約一分鐘,則開啟 EtherChannel 之交換器上的跨距樹狀目錄通訊協定 (STP) 會認為有迴圈。這樣會使通道化的連接埠進入錯誤停用狀態。
在此範例中,系統偵測到迴圈並將連接埠停用。show etherchannel summary 命令的輸出顯示 Number of channel-groups in use 為 0。當您查看其中一個相關的連接埠時,可以看到狀態為 err-disabled:
%SPANTREE-2-CHNL_MISCFG: Detected loop due to etherchannel misconfiguration of Gi4/1
cat6knative#show etherchannel summary
!--- Refer to show etherchannel for more information on the command.
Flags: D - down P - in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
u - unsuitable for bundling
Number of channel-groups in use: 0
Number of aggregators: 0
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
由於系統已將此交換器上的連接埠進入錯誤停用狀態,EtherChannel 已關閉。
cat6knative#show interfaces gigabitethernet 4/1 status
Port Name Status Vlan Duplex Speed Type
Gi4/1 err-disabled 100 full 1000 1000BaseSX
若要判斷問題為何,請查看錯誤訊息。該訊息指出 EtherChannel 遇到了跨距樹狀目錄迴圈。如本節所述,當某台裝置(此案例為交換器)已透過使用 on 模式(而非 desirable)手動開啟 EtherChannel,而另一台連線的裝置(此案例為另一台交換器)完全未開啟 EtherChannel 時,就可能會發生此問題。解決此情況的方法之一是在連線的兩端將通道模式設定為 desirable,然後重新啟用這些連接埠。然後,如果兩端都同意進行通道化,則各個端才會形成通道。如果兩端不同意進行通道化,則兩端會繼續以一般連接埠運作。
cat6knative(config-terminal)#interface gigabitethernet 4/1
cat6knative(config-if)#channel-group 3 mode desirable non-silent
- 雙工不相符
因為無法適當地自動協商速度和雙工所造成的雙工不相符情況非常普遍。全雙工裝置與半雙工裝置不同,後者必須等待直到 LAN 網段上沒有其他裝置進行傳輸,前者則是無論是否有其他裝置,都會在裝置有內容要傳送時加以傳輸。如果在半雙工裝置傳輸時,全雙工裝置也進行此類傳輸作業,則半雙工裝置會將其視為衝突(在時槽時間內)或延遲衝突(在時槽時間之後)。因為全雙工端從來不會預期到衝突,所以該端從來不會意識到必須重新傳輸遭到捨棄的封包。半雙工發生小部分的衝突是正常的,但對全雙工來說則不正常。如果交換器連接埠收到許多延遲衝突,通常代表有雙工不相符的問題。請確保將纜線兩端的連接埠都設定為相同的速度和雙工。show interfaces 介面編號 命令會顯示 Catalyst 交換器連接埠的速度和雙工。較新版本的 Cisco Discovery Protocol (CDP) 可以在連接埠進入錯誤停用狀態之前向您傳送有關雙工不相符的警告。
此外,NIC(例如自動極性變換功能)上的設定也可能會造成問題。如果有疑問,請關閉這些設定。如果您有多個 NIC 來自某一家供應商,而且這些 NIC 似乎都發生相同問題,請查看製造商網站的版本資訊,並確保您擁有最新的驅動程式。
延遲衝突的其他原因包括:
- NIC 故障(發生實體問題,而非僅是組態問題)
- 纜線故障
- 某個纜線段過長
- BPDU 連接埠防護
使用PortFast的連線埠僅能連線到終端站(例如工作站或伺服器),不能連線到會產生跨距樹狀目錄BPDU的裝置(例如交換器)或橋接器和路由器。如果交換器在已啟用跨距樹狀目錄 PortFast 和跨距樹狀目錄 BPDU 防護的連接埠上收到跨距樹狀目錄 BPDU,則交換器會使該連接埠進入錯誤停用模式,以避免可能出現迴圈。PortFast 會假設交換器上的連接埠無法產生實體迴圈。因此,PortFast 會對該連接埠略過初始跨距樹狀目錄檢查,以避免啟動時終端站發生逾時。網路管理員必須謹慎執行 PortFast。在已啟用 PortFast 的連接埠上,BPDU 防護有助於確保維持 LAN 不會產生迴圈。
以下範例顯示如何開啟此功能。之所以選擇此範例,是因為在此案例中很容易產生錯誤停用情況:
cat6knative(config-if)#spanning-tree bpduguard enable
!--- Refer to spanning-tree bpduguard for more information on the command.
在以下範例中,Catalyst 6509 交換器連線到另一台交換器 (6509)。6500 每 2 秒傳送一次 BPDU(使用預設跨距樹狀目錄設定)。在 6509 交換器連接埠上啟用 PortFast 時,BPDU 防護功能會監視透過該連接埠傳入的 BPDU。BPDU 進入連接埠時(代表該連接埠上偵測到不是終端裝置的裝置),BPDU 防護功能會因為錯誤而停用該連接埠,以避免出現跨距樹狀目錄迴圈的可能性。
cat6knative(config-if)#spanning-tree portfast enable
!--- Refer to spanning-tree portfast (interface configuration mode) !--- for more information on the command.
Warning: Spantree port fast start can only be enabled on ports connected
to a single host. Connecting hubs, concentrators, switches, bridges, etc. to
a fast start port can cause temporary spanning tree loops.
%PM-SP-4-ERR_DISABLE: bpduguard error detected on Gi4/1, putting Gi4/1 in err-disable state.
在以下訊息中,交換器表示在已啟用 PortFast 的連接埠上收到了 BPDU,因此關閉了連接埠 Gi4/1。
cat6knative#show interfaces gigabitethernet 4/1 status
Port Name Status Vlan Duplex Speed Type
Gi4/1 err-disabled 100 full 1000 1000BaseSX
您必須關閉 PortFast 功能,因為該連接埠具有不當的連線。連線不當是因為 PortFast 已啟用,但交換器連線到另一台交換器。請記住,PortFast 僅能用於連線到終端站的連接埠。
cat6knative(config-if)#spanning-tree portfast disable
-
UDLD
UDLD 通訊協定允許透過光纖或銅纜乙太網路纜線(例如類別 5 纜線)連線的裝置監控纜線的實體組態,並在存在單向連結時進行偵測。偵測到單向連結時,UDLD 會關閉受影響的連接埠,並向使用者傳送警示。單向連結可能會導致多種問題,包括跨距樹狀目錄拓撲迴圈。
注意:UDLD在相鄰裝置之間交換協定資料包。連結上的兩台裝置都必須支援 UDLD,並在各自的連接埠上啟用 UDLD。如果只在連結的一個連接埠上啟用 UDLD,也可能會使設定 UDLD 的一端進入錯誤停用狀態。
針對 UDLD 設定的每個交換器連接埠都會傳送 UDLD 通訊協定封包,其中包含 UDLD 在該連接埠上看到的連接埠裝置(或連接埠 ID)以及鄰近裝置(或連接埠 ID)。鄰近連接埠必須在從另一端接收的封包中看到自己的裝置或連接埠 ID (回應)。如果連接埠在特定期間內未在內送 UDLD 封包中看到自己的裝置或連接埠 ID,就會將該連結視為單向。因此,相應的連接埠就會停用,而且主控台上會顯示類似以下的訊息:
PM-SP-4-ERR_DISABLE: udld error detected on Gi4/1, putting Gi4/1 in err-disable state.
如需更多有關UDLD運作、組態和命令的資訊,請參閱Catalyst 6500版本12.2SXF和重建軟體組態設定指南的檔案。
-
連結翻動錯誤
連結翻動表示介面不斷開啟和關閉。如果介面在 10 秒內翻動超過五次,就會進入錯誤停用狀態。連結翻動的常見原因是第 1 層問題,例如纜線故障、雙工不相符或 Gigabit 介面轉換器 (GBIC) 卡故障。請查看主控台訊息或傳送到系統日誌伺服器的訊息;該訊息會說明連接埠關閉的原因。
%PM-4-ERR_DISABLE: link-flap error detected on Gi4/1, putting Gi4/1 in err-disable state
發出以下命令可檢視翻動值:
cat6knative#show errdisable flap-values
!--- Refer to show errdisable flap-values for more information on the command.
ErrDisable Reason Flaps Time (sec)
----------------- ------ ----------
pagp-flap 3 30
dtp-flap 3 30
link-flap 5 10
-
回送錯誤
keepalive 封包回送到傳送 keepalive 的連接埠時,就會發生回送錯誤。交換器預設會從所有介面傳送 keepalive。裝置可能會將封包回送到來源介面,這通常是因為網路中有跨距樹狀目錄未封鎖的邏輯迴圈。來源介面會收到其傳送出去的 keepalive 封包,然後交換器就會停用該介面(錯誤停用)。之所以會出現以下訊息,是因為 keepalive 封包回送至傳送 keepalive 的連接埠:
%PM-4-ERR_DISABLE: loopback error detected on Gi4/1, putting Gi4/1 in err-disable state
在基於 Cisco IOS 軟體版本 12.1EA 的軟體中,預設會在所有介面上傳送 keepalive。在基於 Cisco IOS 軟體版本 12.2SE 的軟體及更高版本中,預設不會在光纖和上行鏈路介面上傳送 keepalive。如需更多資訊,請參閱Cisco錯誤ID CSCea46385 (僅限註冊客戶)。
建議的解決方法是停用 keepalive 並升級到 Cisco IOS 軟體版本 12.2SE 或更高版本。
-
L2pt 防護
第 2 層 PDU 透過傳入邊緣交換器進入通道或存取連接埠時,交換器會使用公認的思科專有多點傳送位址 (01-00-0c-cd-cd-d0) 覆寫客戶的 PDU 目的地 MAC 位址。如果已啟用 802.1Q 通道化,則也會對封包進行雙重標記。外部標記是客戶 metro 標記,內部標記則是客戶 VLAN 標記。核心交換器會略過內部標記,並將封包轉送到相同 metro VLAN 中的所有主幹連接埠。傳出端上的邊緣交換器會還原適當的第 2 層通訊協定和 MAC 位址資訊,並將封包轉送到相同 metro VLAN 中的所有通道或存取連接埠。因此,第 2 層 PDU 會保持不變,並透過服務提供者基礎架構傳輸到客戶網路的另一端。
Switch(config)#interface gigabitethernet 0/7
l2protocol-tunnel {cdp | vtp | stp}
介面會進入錯誤停用狀態。如果從已啟用第 2 層通道的通道連接埠或存取連接埠接收到封裝的 PDU (具有專有目的地 MAC 位址),就會關閉通道連接埠以避免迴圈。達到針對通訊協定設定的關閉臨界值時,連接埠也會關閉。您可以手動重新啟用連線埠(依序發出shutdown、no shutdown命令);或是如果已啟用錯誤停用復原功能,則會在指定的時間間隔後重試該作業。
若要將介面從錯誤停用狀態中復原,請使用命令errdisable recovery cause l2ptguard重新啟用連線埠。此命令是用來設定從第 2 層最大速率錯誤中復原的機制,以便使介面離開停用狀態並允許再試一次。您還可以設定時間間隔。錯誤停用復原功能預設會停用;啟用時,預設時間間隔為300秒。
-
SFP 纜線不正確
連線Catalyst 3560和Catalyst 3750交換器並使用SFP互連纜線時,連線埠會進入錯誤停用狀態,並顯示%PHY-4-SFP_NOT_SUPPORTED錯誤訊息。
Cisco Catalyst 3560 SFP 互連纜線 (CAB-SFP-50CM=) 在 Catalyst 3560 系列交換器之間提供低成本、點對點的 Gigabit 乙太網路連線。50公分(cm)纜線是SFP收發器的替代方案,可透過其SFP連線埠短距離互連Catalyst 3560系列交換器。所有 Cisco Catalyst 3560 系列交換器都支援 SFP 互連纜線。
Catalyst 3560 交換器連線到 Catalyst 3750 或任何其他類型的 Catalyst 交換器型號時,不能使用 CAB-SFP-50CM= 纜線。您可以在兩台交換器上同時使用具備SFP(GLC-T)的銅纜線來取代CAB-SFP-50CM=纜線,將兩台交換器連線。
-
802.1X 資安違規
DOT1X-SP-5-SECURITY_VIOLATION: Security violation on interface GigabitEthernet4/8,
New MAC address 0080.ad00.c2e4 is seen on the interface in Single host mode
%PM-SP-4-ERR_DISABLE: security-violation error detected on Gi4/8, putting Gi4/8 in err-disable state
此訊息表示指定介面的連接埠已設定為單主機模式。在該介面上偵測到的任何新主機都會視為資安違規。連接埠已因為錯誤而停用。
修正根本問題後,如果尚未在交換器上設定錯誤停用復原,這些連接埠仍然會停用。在這種情況下,您就必須手動重新啟用連接埠。在相關聯的介面上發出 shutdown 命令,然後發出 no shutdown 介面模式命令,即可手動重新啟用連接埠。
errdisable recovery 命令可讓您選擇哪些錯誤類型可在指定時間之後自動重新啟用連接埠。show errdisable recovery 命令會顯示所有可能條件的預設錯誤停用復原狀態。
cat6knative#show errdisable recovery ErrDisable Reason Timer Status ----------------- -------------- udld Disabled bpduguard Disabled security-violation Disabled channel-misconfig Disabled pagp-flap Disabled dtp-flap Disabled link-flap Disabled l2ptguard Disabled psecure-violation Disabled gbic-invalid Disabled dhcp-rate-limit Disabled unicast-flood Arp-inspection Timer Interval: 300秒可在下一個超時時啟用的介面:
註:預設的超時間隔為300秒,並且預設情況下會禁用超時功能。
若要開啟 errdisable recovery 並選擇錯誤停用條件,請發出以下命令:
- cat6knative#errdisable recovery cause ? all啟用計時器從所有原因中恢復arp-inspection啟用計時器從arp檢查錯誤中恢復disable狀態bduguard啟用計時器從BPDU中恢復guard錯誤禁用狀態channel-misconfig啟用計時器從通道誤配置中恢復dhcp-rate-limit啟用計時器從dhcp-rate-limit錯誤禁用狀態dtp-flap啟用計時器從dtp-flap錯誤禁用狀態gbic-invalid啟用計時器從無效GBIC錯誤禁用狀態l2ptguard啟用啟用計時器啟用啟用啟用計時器從恢復啟用計時器啟用啟用計時器啟用計時器從錯誤禁用狀態中恢復從mac limit disable state pagp-flap中恢復啟用計時器從pagp-flap error disable state psecure-violation啟用計時器從psecure violation disable state security-violation中恢復啟用計時器從802.1x違規禁用狀態udld啟用計時器從udld錯誤禁用狀態中恢復unicast-flood啟用計時器從單播泛洪禁用狀態中恢復。
以下範例顯示如何啟用 BPDU 防護錯誤停用復原條件:
cat6knative(Config)#errdisable recovery cause bpduguard
- 此命令有一個很好的功能:如果您啟用錯誤停用復原,該命令就會列出使連接埠進入錯誤停用狀態的一般原因。在以下範例中,請注意 BPDU 防護功能是連接埠 2/4 關閉的原因:
- cat6knative#show errdisable recovery ErrDisable Reason Timer Status ----------------- -------------- udld Disabled bpduguard Enabled security-violation Disabled channel-misconfig Disabled pagp-flap Disabled dtp-flap Disabled link-flap Disabled l2ptguard Disabled psecure-violation Disabled gbic-invalid Disabled dhcp-rate-limit Disabled unicast-flood Arp-inspection Disabled Timer interval: 300秒可在下次超時啟用的介面:介面錯誤禁用原因剩餘時間--------- --------------------- -------------- Fa2/4 dubpguard 290
- 如果啟用了任何一個錯誤停用復原條件,就會在 300 秒後重新啟用具有此條件的連接埠。您也可以發出以下命令來變更預設的 300 秒:
- cat6knative(Config)#errdisable recovery interval timer_interval_in_seconds
- 以下範例將錯誤停用復原間隔從 300 秒變更為 400 秒:
- cat6knative(Config)#errdisable recovery interval 400
驗證
-
show version — 顯示交換器上使用的軟體版本。
-
show interfaces interface 連接埠編號 status — 顯示交換器連接埠的目前狀態。
-
show errdisable detect — 顯示錯誤停用逾時功能的目前設定。此外,如果任一連接埠目前因為錯誤而停用,就會顯示遭到錯誤停用的原因。
疑難排解
-
show interfaces status err-disabled — 顯示哪些本機連接埠與錯誤停用狀態相關。
-
show etherchannel summary — 顯示 EtherChannel 的目前狀態。
-
show errdisable recovery — 顯示介面會在多久時間以後啟用錯誤停用條件。
-
show errdisable detect — 顯示錯誤停用狀態的原因。
- 如需更多有關如何疑難排解交換器連線埠問題的資訊,請參閱疑難排解交換器連線埠和介面問題。
相關資訊