STP 17 對抗單向鏈路問題

2022-08-30 12:15:11 字數 2723 閱讀 3855

單向鏈路問題是指鏈路上的兩條傳輸路徑中,有一條出現了問題,但並不是兩條同時出現問題。這可能是因為線纜錯誤、切斷了一條光纖線纜、拔掉了一根管線、gbic問題,或其他問題。因為stp會監控入向bpdu,以便知道何時重新收斂網路,單向鏈路兩端的鄰接交換機可能都會成為**狀態,從而造成環路,如圖所示。

上圖顯示了sw1和sw2之間兩根線纜的光纖鏈路。sw2一開始為阻塞狀態,但因為sw1傳輸路徑故障,sw2無法從sw1那裡收到hello。sw2隨後轉為**狀態,現在所有交換機上的所有鏈路都是**狀態。即使sw1的傳輸光纖有故障,資料幀也會逆時針在網路中迴圈。

在catalyst交換機上,有幾種機制可以用來檢測和避免由單向鏈路造成的問題。這些機制包括udld、stp環路防護、網橋保障和rstp/mst爭議機制。

單向鏈路檢測(unidirectional link detection,udld)是cisco私有的二層訊息協議,是用於一對裝置之間的響應機制。使用udld訊息,每台交換機作為訊息的生成者,通告自己的身份和埠識別符號對,以及它從相同網段上獲知的鄰居交換機/埠對列表。通過使用這個資訊,udld可以通過以下現象來檢測單向鏈路。

若檢測到上述任意現象,udld就會宣告這條鏈路是單向的,並將埠置為err-disable狀態。

此外,在埠沒有關閉的情況下,如果丟失了所有的入向udld訊息,也表明有單向鏈路問題。然而這種現象並不總是表示單向鏈路的可靠跡象。例如,假設兩台交換機之間使用一對金屬/光纖介質轉換器互連。如果一台交換機已關閉,另一台交換機並不會發生鏈路關閉事件;只是發現不再收到udld訊息。這時候如果認為鏈路已經成為單向的,就不對了。

因此udld對於突然無法收到udld訊息,有兩種操作模式。在正常模式中,如果不再收到udld訊息,交換機會嘗試與鄰居重連(8次),如果嘗試失敗,udld不採取操作。特別是,不再收到udld訊息的埠會保持啟用狀態。在激進模式中,如果不再收到udld訊息,交換機會進行8次嘗試與其鄰居重連,如果嘗試失敗,udld會將埠置為err-disable狀態。正常和激進模式之間的區別在於交換機對於突然丟失入向udld訊息所作出的響應,這種現象隱含暗示了可能出現單向鏈路的情況。注意如果明確檢測到前文描述的三種單向鏈路現象,正常和激進模式都會將埠置為err-disable狀態。

工程師可以在全域性啟用udld,或基於埠啟用udld,兩台互連裝置上都需要啟用。全域性udld配置只應用於光纖埠;基於埠的udld配置無論介質如何都可以啟用。udld在全域性使用udld 命令啟用,enable關鍵字表示正常模式,而aggressive關鍵字表示激進模式。在埠上,使用udld port [aggressive] 命令啟用udld。如果省略了aggressive關鍵字,就表示使用正常模式。udld的執行狀態中包含埠資訊、檢測到的鄰居,以及鄰居狀態,工程師可以使用命令show udld 和show udld neighbors進行檢視。如果udld在檢測到單向鏈路條件後,將埠置為了err-disable狀態,除了關閉再啟用外,工程師也可以在特權exec模式中使用udld reset命令重置埠。

stp環路防護是一項附加邏輯,與點到點鏈路上的根埠和替換埠接收bpdu有關。在單向鏈路上,這些埠可能會從根埠或替換埠變為指定埠,進而建立交換環路。stp環路防護特性認為在根埠和替換埠收到bpdu後,在乙個正常工作的網路中,這些埠不可能在不關閉的前提下突然停止接收bpdu。根埠和替換埠突然無法收到入向bpdu,表明可能出現了單向鏈路的情況。

遵循此邏輯.stp壞路防護機制能夠防止根埠和替換埠由於不再收到入向bpdu而變為指定埠。如果這些埠不再收到bpdu.當埠上儲存的bpdu超時後.壞路防護特性會將其置為壞路不一致的阻塞狀態。再次開始接收bpdu後•埠將自動移出此狀態。

工程師可以在全域性啟用環路防護特性.也可以基於埠啟用.這是一種本地保護機制(即不要求其他交換機也配置壞路防護)。如果工程師使用全域性命spanning-tree loopguard default來啟用壞路防護特性.它會自動保護交換機上點到點鏈路型別的所有根埠和替換埠。全域性配置的環路防護特性並不保護共享型別鏈路上的埠。工程師也可以使用命令spanning-tree guard loop基於埠配置.此時可以將該特性應用於共享鏈路上的埠。

網橋保障只適用於rpvst+和mst.且只用於點到點鏈路.是壞路防護特性所用理念的進一步的擴充套件。網橋保障特性修改了傳送bpdu的規則。埠上啟用了網橋保障特性時,埠總是以hello間隔傳送bpdu.無論它是根埠、指定埠、替換埠.還是備用埠。bpdu實際上成為了一對互連交換機之間的hello機制。網橋保障機制一一被保護的埠必須要能夠接收bpdu。如果收不到bpdu的話,埠將被置為ba不一致阻塞狀態.直到再次開始接收bpdu。除了單向鏈路.當交換機發生故障.不再參與rpvst+/mst (完全停止處理和傳送bpdu).而是完全開啟它們的埠時.網橋保障特性也能夠在這種時刻預防壞路的生成。在本書寫作時.特定的catalyst 6500和nexus「000平台能夠支援網橋保障特性。在catalyst 6500系列裝置匕配置該特性時,要求既要在全域性使用命令spanning-tree bridge assurance進行配置.也要在連線其他交換機的stp點到點鏈路型別的埠上使用 介面命令spanning-tree portfast network來啟用。鄰居裝置上必須也配置使用網橋保障特性。

爭議機制是另一種用來檢測單向鏈路的標準化方式。它使用rst標誌欄位和mstbpdu中編碼的資訊,即**bpdu的那個埠的角色和狀態。操作原則非常簡單:如果埠從宣告為指定學習狀態或指定**狀態的埠上收到了乙個次優bpdu,它自己將進入丟棄狀態。cisco也在rpvst+中應用了爭議機制。傳統的stp/pvst+不支援爭議機制,因為這些stp版本沒有將埠角色和狀態編碼到bpdu中。爭議機制是rstp/mst的組成部分,無須配置。

17 物件的構造

如果沒有賦初值,全域性儲存區的成員變數初始值系統預設為0,棧空間和堆空間上成員變數初始值系統預設為隨機數。從程式設計的角度,物件只是變數,c 中可以定義與類名相同的特殊成員函式 建構函式。建構函式沒有任何返回型別的宣告。建構函式在物件定義時自動呼叫。每個物件在使用之前都應該初始化,建構函式用於物件初...

17 物件的構造(中)

1 建構函式 建構函式和普通函式的區別 普通函式的函式名可以隨機定義,而建構函式的函式名和類名一致 普通函式有返回值,而建構函式沒有返回值 普通函式可以定義引數,那麼建構函式可以定義引數嗎?class test test t 定義物件並呼叫建構函式 int main 我們的整個編譯過程分為好幾步 1...

1 7 移除對引數的賦值動作

源 1 int discount int inputval,int quantity,int yeartodate 27 if quantity 100 8 11if yeartodate 10000 12 15return inputval 16 移除對引數的賦值動作 1 以臨時變數取代對引數的賦...