弱電網絡工程師最易犯的9大錯誤,你中招了嗎?
01
什么是生成樹協議?
IEEE 802.1D生成樹協議(STP)由Radia Pearlman在1985年發明,當時他還供職于數字設備公司(DEC)。
STP是一種第2層協議,在網橋之間運行,旨在幫助建立無環路(loop-free)的網絡拓撲結構。網橋協議數據單元(BPDU)是以太網交換機(實際上就是多端口網橋)之間發送的數據包,負責搭建根網橋(root bridge)、計算通向根的最佳路徑以及阻止形成環路的任何端口。因而生成的樹(根在頂端)覆蓋局域網中的所有網橋,生成樹這個名稱由此得來。
生成樹在以默認的配置設置防止環路方面很有效。因而,許多人忘了調整任何參數,僅僅接受默認設置了事。這導致好多人忽視了網絡設計中的STP;多年后,許多企業組織驚訝地發現存儲的網絡問題居然與生成樹有關。有許多方法可以優化STP,但是如果STP沒有配置好,那么網絡無法得益于這些新的功能特性。
02
在生成樹里
網工最常見的9種錯誤
這張圖顯示了通常錯誤配置的生成樹環境,表明了本文探討的許多常見錯誤。
01 沒有配置根網橋
許多企業組織對生成樹習以為常,僅僅接受默認的配置設置了事。這使得網絡環境中的所有交換機都使用32678這一默認的根網橋優先級值。如果所有交換機都有同一個根網橋優先級,那么MAC地址最低的那只交換機將被建立為根網橋。許多網絡并沒有配置成單只交換機有一個較低的根網橋優先級,這會迫使那只核心交換機被建立為任何或所有虛擬局域網(VLAN)的STP根。
在這種情況下,MAC地址偏低的小型接入層交換機就有可能是STP根。這種情況勢必會增加一些性能開銷,導致會聚時間較長(由于根網橋重新建立)。
如上圖所示,作為STP根的交換機實際上是核心交換機2,因為它擁有的MAC地址恰好低于核心交換機1。
一條最佳實踐就是為“主”(核心)交換機配置較低的STP優先級,那樣一只交換機將是根網橋,其他任何核心交換機會有高一點的優先級值。
萬一主核心網橋失效,它們就會自動接過重任。萬一出現網橋故障,在交換機上配置“不同層次”的STP優先級將查明哪只交換機應該是根網橋。
這樣一來,STP網絡運行起來就更具有確定性了。
在核心思科交換機上,你應該用這個命令配置主根交換機:
Core-Sw1(config)# spanning-tree vlan 1-4096 root primary
在核心思科交換機上,你應該用這個命令配置次根交換機:
Core-Sw2(config)# spanning-tree vlan 1-4096 root secondary
這兩個命令的最終效果會將主交換機端口的網橋優先級設為8192,將次交換機的根網橋優先級設為16384。
02 使用IEEE 802.1D,而未使用Rapid-STP
典型的IEEE 802.1D協議有下列默認計時器:15秒用于偵聽,15秒用于學習,20秒用于最長生存時間超時。生成樹中的所有交換機都應該認同這些計時器,不鼓勵你修改這些計時器。這些較舊的計時器對一二十年前的網絡來說也許夠用了,而如今,這些30秒至50秒的會聚時間實在太慢了。
如今,許多交換機能夠支持快速生成樹協議(IEEE 802.1w),可是很少有網絡管理員啟用該功能??焖偕蓸鋮f議(RSTP)大大縮短了會聚時間,其秘訣在于使用端口角色,使用通過指定端口在網橋之間發送消息這種方法,計算備用路徑,以及使用更快速的計時器。因而,如果可以使用RSTP,企業組織應該盡量使用。如果貴企業仍擁有無法使用RSTP的交換機,也別擔心:針對通向老式STP交換機的那些接口,RSTP交換機會切回到傳統的802.1D操作方式。
03 阻塞的上行鏈路
生成樹的任務就是防止環路形成。為此,它學習了解通向根的次最優路徑,讓這些不太理想的鏈路處于阻塞模式。如果交換機之間有多條并行路徑,那么其中一條路徑將被選擇進入阻塞模式,防止兩只交換機之間出現環路。這樣一來,擁有多條上行鏈路只適用于主鏈路故障切換,而不是為這條路徑提供更高的帶寬。在上圖中,你可以看到交換機D的這種情況。
通向交換機2的鏈路是通向根網橋的最優路徑,而通向交換機1的次最優路徑處于STP阻塞狀態。因此,只有一條鏈路的帶寬可供上行通信使用。我們希望能夠利用這兩條上行鏈路來轉發流量、增加帶寬,那樣我們可以使用某種鏈路聚合技術,比如端口信道/以太網信道(LACP (IEEE 802.3ad),PAgP),或者某種多機箱端口信道(MC-LAG IEEE 802.3AX/AY),或者使用擁有虛擬端口信道(vPC)的思科Nexus交換機。
另一種選擇就是使用可堆疊交換機,并配置每個上行鏈路端口,連接至堆疊交換機中的不同交換機。由于堆疊交換機可以配置成它就是一只交換機,那樣可以使用端口信道;從生成樹的角度來看可以將兩條鏈路當成一條鏈路,這兩條鏈路都可以用來轉發流量。其他選擇能夠取得同樣這個效果,比如思科的6500虛擬交換系統(VSS)。
04 超過STP的最大規模
我們都生活在這樣的城市:缺少統一協調的城市規劃,道路總是擁擠不堪、無法順暢通行。同樣,網絡常常像白楊樹那樣生長。網絡當中出現新增的設備,但是網絡很少重新設計架構,除非購置了一套全新的網絡。隨著新的交換機添加到局域網環境中,生成樹不斷隨之變化。
一些大型網絡環境支持的應用程序依賴整個網絡上的第2層連接,這類網絡環境應該意識到這種生長。
要是網絡拓撲超過STP的最大規格,這些企業會遇到問題。802.1D規范建議,生成樹的網橋跳數(bridge hop)不超過7段。
如果有許多“雛菊鏈式”交換機,很可能出現這種情況。參閱上圖,就會發現連一種簡單的網絡拓撲也會超過生成樹的這一最大規模。
像醫院和大學校園這些組織的網絡擁有龐大的局域網環境,跨整個網絡延伸單一的VLAN。
它們應該認識到其生成樹的規模。這些組織應該將局域網交換環境的情況記入文檔,并且尋找過于頻繁的拓撲變更通知(TCN),從而定期檢查生成樹的規模。
05 VTP域
企業組織面臨的困難常常牽涉VLAN隧道協議(VTP)以及它與STP有怎樣的關系。VTP這種機制可以幫助在單一局域網交換環境中建立和維護VLAN。
VTP服務器可以建立新的VLAN,然后自動為VTP客戶機配置那些新的VLAN。隨后,那些VTP客戶端交換機上的端口被分配到這個新的VLAN。VTP有助于讓VLAN編號在局域網交換環境中保持一致性。很早以來就存在與VTP有關的問題,許多人建議將VTP配置成透明模式。一些企業組織抽時間來配置VTP域,并配置VTP服務器和客戶機。一些企業組織還在所有交換機上使用同一個VTP域名,即便在所有地方都是如此。
如果使用第2層城域以太網服務,并將其配置成802.1Q干線,這就會開始引起問題。上圖描述了這個問題。該例子中的交換機都有同樣的VTP域名。數據中心與災難恢復站點之間的連接使用了802.1Q干線,但是只允許三個VLAN接入這條干線。因此,災難恢復站點的交換機了解所有的VLAN,使用生成樹來確定城域以太網鏈路是VLAN 10、20和30通向根的路徑。
然而,災難恢復站點的交換機認為,它是該干線上未使用的其他VLAN的STP根。這可能會引起問題,因為現在環境有兩只交換機認為自己是VLAN 40、50和60的STP根。使用VTP的企業應該慎重使用,知道哪些交換機是VTP服務器或客戶機,使用VTP密碼,刪除不再提供服務的交換機上的配置和VTP信息,并且在不需要VTP的場合下考慮禁用VTP。
06 STP與HSRP不一致
許多企業組織擁有冗余核心交換機,它們還為所連接局域網上的計算機充當第3層默認網關。像HSRP、VRRP、GLBP及其他這些首跳冗余協議為只配置一個單一默認網關IP地址的主機提供了默認網關冗余機制。
如果HSRP活動默認網關不是為該VLAN充當STP根的同一只第2層/第3層交換機,問題就會隨之而來。
上圖表示,交換機1是HSRP活動路由器,但它不是任何VLAN的STP根。交換機2是STP根,但它配置成HSRP備用路由器。這就形成了非最佳流量路徑,可能會導致核心交換機間的干線上出現更嚴重的擁塞狀況。使用首跳冗余協議的企業應該確保,活動默認網關與STP根相一致。
07 沒有控制STP
由于那么多的企業組織只是接受交換機廠商在生成樹方面的默認設置,它們并沒有最優化控制STP。
企業可能沒有配置生成樹,以防止無意中添加的未授權交換機形成環路。
許多企業使用思科的PortFast接口設置,幫助為連接到我們知道不運行STP的計算機的端口迅速調出交換機端口。激活端口之前,讓端口連接至等待偵聽和學習狀態的計算機毫無意義。
結合使用PortFast和BPDU-Guard是最佳實踐,那樣如果通過該接口收到BPDU,它可以防御性地關閉端口。
激活這項功能的思科IOS全局命令如下:
Core-Sw1(config)# spanning-tree portfast edge bpduguard
激活這項功能的思科IOS接口配置命令如下:
Core-Sw1(config-if)# spanning-tree bpduguard enable
如果交換機已配置好了任何端口信道,那么配置以太網信道保護機制(EtherChannel guard)是個好主意。
激活這項功能的思科IOS全局命令如下:
Core-Sw1(config)# spanning-tree etherchannel guard misconfig
企業還應該在連接至服務器的所有接入交換機端口上使用根保護機制(Root Guard)。
激活這項功能的思科IOS接口配置命令如下:
Core-Sw1(config-if)# spanning-tree guard root
有時候,刀片服務器嵌入了以太網交換機,這類服務器也應該考慮到STP設計和配置當中。應該將這些交換機的配置與其他任何STP設備一視同仁,其配置應該補充網絡環境中的其他交換機。
08 不一致的生成樹度量指標
在過去,生成樹使用16位值作為網橋使用的鏈路成本,以計算通向根的最短路徑。若使用這些較老的16位度量指標,10Mbps鏈路的成本為100,1Gbps鏈路的成本為4。
然而,這些度量指標已跟不上鏈路速度的需要,現在有了32位長路徑成本。若使用較新的32位度量指標,1Gbps鏈路的成本為20000,10Gbps鏈路的成本為2000,而100Gbps鏈路的成本為200。
想在思科交換機上啟用長路徑成本,只要輸入這個全局配置命令:
Core-Sw1(config)# spanning-tree pathcost method long
如果網絡里面既有使用16位路徑成本值的交換機,又有使用32位路徑成本值的交換機,就會出現問題。因此,配置方面做到一致很重要,力求讓你的所有網絡設備都使用32位長路徑成本這一較新的度量指標。
09 禁用生成樹
我們偶爾會碰到這種網絡:生成樹協議故意被禁用,也許是網絡管理員覺得,不需要STP,因為網絡沒有任何的線纜環路。也許是網絡管理員覺得,禁用STP可以縮短第3層會聚時間。
然而,我本人親眼目睹過這一幕:有人擅自添加了一條線纜后,STP被禁用的網絡出現了全面癱瘓。這導致了“致命的特大數據包風暴”,原因是數據包在環路中不斷轉發。不像第3層環路:IP數據包的TTL值會減小,直至為零,隨后數據包被丟棄,第2層環路則允許數據包不斷轉發,而不減小TTL。
讓STP處于啟用狀態是個最佳實踐,即便可能不需要它。其道理在于,這是一種成本低廉的保險機制,可以防止環路。在現代交換機上運行STP并不會帶來任何明顯的開銷。每秒只有幾個配置BPDU并不會大大增加帶寬使用量。STP癱瘓的風險實在太高了。因此,禁用了STP的企業應該重新啟用它。
03
其他常見問題
企業在局域網交換機方面還會常犯另外幾個配置錯誤。許多企業使用VLAN編號1,這給思科交換機的安全帶來了一些影響。如果VLAN 1用作思科交換機上的“原生VLAN”,問題也會出現。思科交換機上的其他常見問題與網絡管理員沒有標記原生VLAN有關。還有無數的交換機間鏈路沒有經過配置,以限制干線上允許VLAN。我們在評估網絡狀況時,經常會在客戶的網絡中遇到這些問題。
有時候,上述九大問題會全部集中出現在一個環境中。如果企業組織糾正這些生成樹問題,可以改善應用程序性能、縮短會聚時間、提高彈性以及減少網絡停運時間。建議每位網工都應該好好閱讀本篇文章,確定本企業的設備有沒有存在這些錯誤。審查網絡、查找這幾類問題,并且主動采取措施來解決這些問題,這很重要。STP方面的這些改進有望提升網絡的穩定性、性能、彈性以及會聚速度。