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