如果從網絡的可用性出發,企業設計了物理冗余的拓撲結構。那么于此同時,需要為交換機的相關端口配置環路防護等類似的保護機制。防止因為出現網絡環路而導致網絡黑洞問題。否則的話,網絡管理員很可能是搬起石頭砸自己的腳。本來想通過冗余拓撲來提高網絡的可用性,結果卻造成了新的問題。
在網絡部署中,為了提高網絡的穩定性,往往會采取物理冗余的方式。如下圖所示,即使到交換機B的某個端口出現故障,由于物理冗余的存在,使得數據仍然可以傳送。只是其傳送的路徑不同而已。當網絡運行正常的時候,生成樹協議會自動根據相關的規則來確定數據流傳送的路徑。所以雖然形成了一個物理的環路,但是在數據傳遞的時候,不會因為環路而形成網絡黑洞。但是,如果采取某種保護機制的話,當網絡出現故障后再恢復的過程中,就可能出現環路。
一、故障模擬
如上圖所示,假設交換機A是根路由器。為了提高網絡的可用性,在交換機A、B、C之間形成了物理環路。不過生成樹協議會根據一定的規則來確定數據傳輸的路徑。所以在正常情況下,不會產生網絡環路。但是如果當網絡出現故障的時候,就可能產生問題。如因為某種原因,交換機B與C之間的鏈路可能發生單向失效。也就是說,交換機C無法交換機B那里接收數據(包括BPDU信息)。
當沒有采取任何環路保護機制的話,會出現什么情況呢?當交換機監測到錯誤的時候,交換機C會自動將自己的故障端口設置為STP阻塞狀態。在交換機最大壽命計時器到期之后,交換機C上面的阻塞端口將會成阻塞狀態轉換為STP監聽狀態。。然后在兩倍的延遲時間之后,將這個端口轉換為轉發狀態。當交換機C的某個端口出現故障時,生成樹協議會自動監測到這個錯誤,從而改變數據的傳輸路徑,從交換機B流向交換機C。而當交換機C的端口重新設置為轉發狀態時,數據就再次從交換機C流向交換機B。此時數據的傳遞就會發生環路,從而導致環路黑洞的產生。
二、利用環路保護來防止網絡黑洞
為了避免出現如上錯誤,筆者建議通過一些保護措施來防治網絡環路。類似的保護措施有很多。筆者今天要介紹的是通過思科的環路防護機制來避免網絡黑洞。
簡單的說,環路保護機制可以對第二層轉發環路提供額外的保護,主要針對的是STP環路。從以上的分析中可以看出,如果網絡中存在物理的冗余網絡。則當冗余拓撲結構中的STP阻塞端口錯誤的過渡到監聽狀態、再錯誤的過渡到轉發端口之后,如果沒有采取一定的措施,就會發生橋接環路。這最本質的原因,主要是因為由于鏈路的故障,導致交換機無法連續的收到BPDU數據包。
眾所周知,當物理冗余網絡拓撲中的某個故障端口停止接收STP BPDU的時候(如上圖中的交換機C),STP則會認為這個網絡拓撲沒有存在物理環路。最后由于冗余端口的阻塞端口過渡到指定端口,并且將STP轉換到轉發狀態,從而產生環路,導致網絡黑洞。現在市面上的一些保護措施,基本上都是圍繞著這個理念來設計的。
通過使用環路保護機制可以有效的避免這種情況。如果啟用了這個機制,則交換機在將某個端口轉換到轉發狀態之前,會多做一步檢查的工作。在檢查中如果發現啟用環路保護特性的非指定端口上停止接收BPDU,則交換機會將這個端口轉換到“不一致環路”的阻塞狀態。如果這個端口為設置為這個狀態,其有一個特點,將破壞原有的轉換規則,即當過了最大壽命時間之后,不會將這個端口設置為監聽狀態。當過了兩倍的延遲時間之后,也不會將這個端口設置為轉發狀態。從而從根本上避免了網絡環路的出現。
當然,如果交換機在不一致環路STP狀態的端口上接收到新的BPDU信息的時候,斷口將根據接收到的信息而轉換到STP狀態。這個轉換的過程也是系統自動完成的,不需要手工的干預。從而不會造成網絡管理員額外的工作量。
三、具體的配置以及注意事項
要在交換機上啟用或者停用這個環路保護機制,是非常簡單的一件事情。只需要通過如下的命令就可以實現:spanning-tree loopgurad default或者no spanning-tree guard。第一個命令是告訴交換機啟用環路保護機制,第二個命令則是禁用環路保護機制。可見這個啟用或者禁用的操作是非常簡單的。其難點在于后續的維護以及一些管理的注意事項上。
在配置環路保護機制的時候,第一個需要注意的是在所有非指定的端口上都要啟用這個環路防護機制。只有如此才能夠發揮其應有的作用。而不僅僅只是在阻塞端口上啟用這個環路保護特性。換一句話說,就是要在活躍拓撲的所有可能組合中,都應該在相關的端口上(如根端口或者后備端口)上啟用環路保護機制。這一點非常的重要,如果漏掉一個端口,那么在某些情況下仍然可能會出現環路環路的情況。無法從根本上杜絕網絡黑洞。
第二個需要注意的是,在事先事后需要做好測試分析的工作。在啟用網絡環路防護特性之前,需要考慮所有可能的故障切換情況。在啟用這個特性后,需要進行測試,以判斷這個特性的有效性。其實不光光是這個網絡環路特性。只要是更改了網絡的設置,基本上都要做好這個事先的設計與事后的測試工作。這主要是從網絡的可用性角度出發的。否則的話,很有可能因為新的配置導致網絡出現故障。
第三個需要注意的是,雖然端口恢復的過程是自動的。但是作為網絡管理員,仍然要做到時候追蹤的工作。因為故障的原因不會憑空產生。如果沒有從根本上解決問題,則這個原因會重復的出現。筆者認為,網絡管理員可以從交換機的日志中追蹤到相關的信息。無論是交換機將某個端口設置為“不一致環路”狀態,還是恢復到正常的狀態下,其都會在日志中留下相關的信息。從日志中,如果可以看到以spantree-2-loopguardunblock開頭的信息,就表示觸發了這個環路保護機制。具體是故障還是自動恢復,可以看后面的提示信息。當這個信息出現的比較頻繁的時候,網絡管理員就需要引起注意。一定要及時的找到問題的根源并解決它。如果是偶爾的,如一個月才出現一次,那么可以當作偶然錯誤,可以暫時放放。
第四個需要注意的是,如果企業還啟用了安全虛擬局域網(vlan),那么這個環路保護特性仍然是奏效的。因為這個環路保護機制可以以VLAN為單位阻塞不一致的端口。(正常情況下是以端口為單位啟用環路防護特性)。也就是說,如果企業采用的是虛擬局域網,則在配置環路防護機制的時候,會更加的方便。不用以端口為單位進行配置與維護,而只需要以VLAN為單位進行管理即可。在企業中往往VLAN的數量要比交換機的端口數量少的多,為此可以在很大程度上降低網絡管理員的工作量。在現實工作中,如果企業沒有虛擬局域網的需求,那么可以將公司的整個網絡設置為一個虛擬局域網,從而簡化后續的配置維護工作。這無疑是一種有效的“偷懶”方法。
總之,如果從網絡的可用性出發,企業設計了物理冗余的拓撲結構。那么于此同時,需要為交換機的相關端口配置環路防護等類似的保護機制。防止因為出現網絡環路而導致網絡黑洞問題。否則的話,網絡管理員很可能是搬起石頭砸自己的腳。本來想通過冗余拓撲來提高網絡的可用性,結果卻造成了新的問題。