關(guān)于生成樹協(xié)議里那些你不知道秘密??
一、生成樹協(xié)議(STP)
Compaq很久之前名為數(shù)字設(shè)備公司( DEC),后被收購(gòu)并更名為現(xiàn)在的名稱。早在此前的30年,DEC就開發(fā)出了生成樹協(xié)議的最初版本。后來(lái)IEEE研發(fā)了自己的STP版本,命名為802.1D。思科已經(jīng)開始在其新生產(chǎn)的交換機(jī)上完成到另一個(gè)行業(yè)標(biāo)準(zhǔn)的過(guò)渡,即所謂的802.1w。
STP的主要任務(wù)是防止第2層網(wǎng)絡(luò)(網(wǎng)橋或交換機(jī))出現(xiàn)網(wǎng)絡(luò)環(huán)路。它警惕地監(jiān)視著網(wǎng)絡(luò)以找出所有可用鏈路,并關(guān)閉任何冗余鏈路以確保不會(huì)出現(xiàn)環(huán)路。STP首先使用生成樹算法( STA)創(chuàng)建一個(gè)拓?fù)鋽?shù)據(jù)庫(kù),然后找出并關(guān)閉冗余鏈路。運(yùn)行STP后,數(shù)據(jù)幀就只能在STP選定的最優(yōu)鏈路上進(jìn)行轉(zhuǎn)發(fā)。
在下面的小節(jié)中我們來(lái)看下生成樹協(xié)議最基本的內(nèi)容。
1. 注意
STP是一種2層協(xié)議,用于維護(hù)一個(gè)無(wú)環(huán)路的交換式網(wǎng)絡(luò)。在圖10-9中所示的網(wǎng)絡(luò)中,生成樹協(xié)議是必須的。
在圖10-9中給出了一個(gè)帶有冗余拓?fù)?交換環(huán)路)的交換式網(wǎng)絡(luò)。如果不在網(wǎng)絡(luò)中采取一些2層協(xié)議機(jī)制來(lái)阻止網(wǎng)絡(luò)環(huán)路,此網(wǎng)絡(luò)就會(huì)遇到前面所討論過(guò)的問(wèn)題:廣播風(fēng)暴、多幀復(fù)制以及MAC表不穩(wěn)定。
2. 警告
警告:應(yīng)該注意,圖10-9 中的網(wǎng)絡(luò)在不使用STP的情況下有時(shí)也是可以運(yùn)行的,當(dāng)然它工作起來(lái)會(huì)非常地緩慢。這個(gè)示例清楚地展示了交換環(huán)路所能造成的危害。最糟糕的是,一旦網(wǎng)絡(luò)運(yùn)轉(zhuǎn)起來(lái),要想找出問(wèn)題的根源會(huì)超級(jí)困難!
二、生成樹術(shù)語(yǔ)
在詳細(xì)描述STP在網(wǎng)絡(luò)中的運(yùn)行機(jī)制之前,我們首先來(lái)學(xué)習(xí)一些基本概念和術(shù)語(yǔ),并且還要掌握。這些內(nèi)容與第2層交換式網(wǎng)絡(luò)的關(guān)聯(lián)。
(1) 根橋:根橋是指擁有最佳橋 ID的網(wǎng)橋。對(duì)于STP來(lái)說(shuō),關(guān)鍵就是要為網(wǎng)絡(luò)中所有的交換機(jī)推選出一個(gè)根橋,并使根橋成為該網(wǎng)絡(luò)中最重要的點(diǎn)。而網(wǎng)絡(luò)中所有其他決策一比如哪個(gè)端需要阻塞以及哪個(gè)端口需要配置為轉(zhuǎn)發(fā)模式——都需要基于與根橋的關(guān)系進(jìn)行選擇。一旦網(wǎng)絡(luò)中的根橋被選舉出來(lái),所有其他的網(wǎng)橋都需要確定一個(gè)通往根橋的單一路徑。通往根橋的最佳路徑上的端口就被稱為根端口。
(2) BPDU:指網(wǎng)絡(luò)中所有交換機(jī)都需要 相互交換的、用于根交換機(jī)選舉的信息,這些信息也會(huì)用于網(wǎng)絡(luò)的后續(xù)配置。每臺(tái)交換機(jī)都會(huì)對(duì)橋協(xié)議數(shù)據(jù)單元(BPDU)內(nèi)的參數(shù)進(jìn)行比較,并將從鄰居收到的BPDU放人自己的BPDU中,然后再將其傳送給其他鄰居。
(3) 橋ID:STP使用橋ID跟蹤網(wǎng)絡(luò)中的所有交換機(jī)。橋ID由橋優(yōu)先級(jí)(默認(rèn)情況下所有思科交換機(jī)的優(yōu)先級(jí)都為32 768)和橋MAC地址共同決定。在網(wǎng)絡(luò)中擁有最小橋ID的網(wǎng)橋?qū)⒊蔀楦鶚颉?/p>
(4) 非根橋:指除了根橋外的所有網(wǎng)橋。非根橋會(huì)與所有的網(wǎng)橋交換BPDU,并在所有交換機(jī)上更新STP拓?fù)鋽?shù)據(jù)庫(kù),以防止環(huán)路并對(duì)鏈路失效提供保障措施。
(5) 端口開銷:當(dāng)兩臺(tái)交換機(jī)間存在多條鏈路時(shí),端口開銷用于確定最佳路徑。一條鏈路的開銷取決于鏈路的帶寬。
(6) 根端口 :根端口是指與根橋直接相連的鏈路所在的端口,或者是通往根橋路徑開銷最低的端口。如果存在連接到根橋的多條鏈路,那么只有檢查每條鏈路的帶寬才能確定根端口,此時(shí)最低開銷的端口是根端口。如果上行的多臺(tái)交換機(jī)開銷均相同,那么就使用帶有較低通告的橋ID的那個(gè)橋。當(dāng)多條鏈路連接到同一臺(tái)設(shè)備時(shí),就使用上行交換機(jī)上連接到最低端口號(hào)的端口。
(7) 指定端口:指定端口是專門指定的,通過(guò)其根端口到達(dá)根橋開銷最低的端口。指定端口會(huì)被標(biāo)記為轉(zhuǎn)發(fā)端口。
(8) 非指定端口:非指定端口是指開銷比指定端口高的端口。確定根端口和指定端口后剩下的端口就是非指定端口。非指定端口將被設(shè)置為阻塞狀態(tài),不能進(jìn)行轉(zhuǎn)發(fā)。
(9) 轉(zhuǎn)發(fā)端口:轉(zhuǎn)發(fā)端口指能夠進(jìn)行數(shù)據(jù)幀轉(zhuǎn)發(fā)的端口, 它可以是根端口或指定端口。
(10) 阻塞端口:阻塞端口是指不能轉(zhuǎn)發(fā)幀的端口, 設(shè)置阻塞端口是為了避免環(huán)路。然而,阻塞端口會(huì)始終監(jiān)聽BPDU幀并丟棄其他所有幀。
三、生成樹的操作
正如前面所講的,STP 的任務(wù)就是要找出網(wǎng)絡(luò)中所有的鏈路,關(guān)閉任何冗余鏈路,從而阻止網(wǎng)絡(luò)環(huán)路的出現(xiàn)。
為了做到這一點(diǎn),STP 首先選舉一個(gè)根橋, 根橋可以通過(guò)所有的端口完成對(duì)數(shù)據(jù)的轉(zhuǎn)發(fā),并且它是該STP域中所有設(shè)備的參考點(diǎn)。一旦所有的交換機(jī)都同意將某臺(tái)交換機(jī)選為根橋,每個(gè)網(wǎng)橋就必須找出屬于它自己的一個(gè)并且也是唯一個(gè)分派的根端口。任意兩臺(tái)交換機(jī)之間的鏈路必須要有一個(gè)而且只能有一個(gè)指定端口,該端口位于能夠提供到根橋最大帶寬的鏈路上。
注意, 一個(gè)網(wǎng)橋可以通過(guò)多個(gè)其他網(wǎng)橋到達(dá)根橋,也就是說(shuō)這一路徑可能不是最短路徑,但一定是最快(具有最大帶寬)路徑,這一點(diǎn)很重要。
顯然,根橋上的每個(gè)端口都是指定端口(為某個(gè)網(wǎng)段的轉(zhuǎn)發(fā)端口),因?yàn)楦鶚螂x自己總是最近的。等到塵埃落定之后,那些既不是根端口也不是指定端口的端口,也就是那些非根端口和非指定端口,全部被設(shè)置為阻塞狀態(tài),這樣就破壞了已構(gòu)成的交換環(huán)路。在決定航行路線時(shí),如果只有一個(gè)人有決定權(quán),事情會(huì)進(jìn)行得異常順利,因此,在任何給定的網(wǎng)絡(luò)中,只允許有一個(gè)根橋。
1. 選舉根橋
橋ID將用于STP域中根橋的選舉,并且當(dāng)多個(gè)候選者的可用根端口和路徑開銷相等時(shí),橋ID也可以確定此STP域中剩余設(shè)備的根端口。這個(gè)ID長(zhǎng)8B,其中包括了設(shè)備的優(yōu)先級(jí)和MAC地址。在所有運(yùn)行IEEE STP版本的設(shè)備上,默認(rèn)優(yōu)先級(jí)為32 768。
為了確定根橋,需要將每個(gè)橋的優(yōu)先級(jí)和它的MAC地址結(jié)合起來(lái)。如果兩個(gè)交換機(jī)或網(wǎng)橋碰巧擁有相同的優(yōu)先級(jí)數(shù)值,那么,MAC地址就成為決定哪個(gè)設(shè)備具有最低( 最佳) ID的依據(jù)。如果有兩臺(tái)交換機(jī),分別為A和B,它們都使用默認(rèn)優(yōu)先級(jí)32 768,那么,MAC地址就是進(jìn)行比較的依據(jù)。如果交換機(jī)A的MAC地址為000000101,而交換機(jī)B的MAC地址是00000.22222這樣,交換機(jī)A將成為根橋。只要記住,在進(jìn)行根橋選舉時(shí),取值越小越好。
默認(rèn)情況下,在根橋選舉之前,BPDU 通過(guò)網(wǎng)橋/交換機(jī)的所有活動(dòng)端口每2秒向外發(fā)送一次,再?gòu)?qiáng)調(diào)一次,帶有最小(最佳)橋ID的網(wǎng)橋?qū)⒈贿x舉為根橋。降低橋的優(yōu)先級(jí)可以修改ID值,從而使其自動(dòng)成為根橋。在大型交換式網(wǎng)絡(luò)中,能夠做到這一點(diǎn)是很重要的, 這樣就能保證最佳路徑會(huì)被選中。在這里需要追求的是效率!
圖10-10 給出了一個(gè)典型的帶有冗余交換路徑的交換式網(wǎng)絡(luò)。首先,我們需要找出根交換機(jī);然后通過(guò)修改交換機(jī)的優(yōu)先級(jí),來(lái)讓非根橋成為根橋。
查看圖10-10,可以看出交換機(jī)A是根橋,因?yàn)樗臉騃D最小。為了阻止交換環(huán)路的出現(xiàn),交換機(jī)B必須關(guān)閉一個(gè)與交換機(jī)A相連接的端口。記住,盡管交換機(jī)B不能通過(guò)阻塞端口進(jìn)行發(fā)送,但它仍然可以接收BPDU幀。
STP為了確定關(guān)閉交換機(jī)B上的哪個(gè)端口,它首先要檢查每條鏈路的帶寬值,然后將帶寬值最低的鏈路關(guān)閉。由于在交換機(jī)A和B之間的兩條鏈路都是100Mbit/s,因此,STP 通常會(huì)關(guān)閉端口號(hào)較高的那一條鏈路。在這個(gè)示例中,12要比11高, 因此,端口12將被設(shè)置為阻塞模式。修改默認(rèn)優(yōu)先級(jí)是選擇根橋的最佳方式。挑選距離網(wǎng)絡(luò)中心最近的交換機(jī)作為根橋,這樣的配置可以保證STP的快速會(huì)聚,這一點(diǎn)很重要。
讓我們來(lái)試下,讓交換機(jī)B成為網(wǎng)絡(luò)中的根橋。下面是交換機(jī)B的輸出,它顯示了默認(rèn)優(yōu)先級(jí)。這里可以使用show spanning-tree 命令:
在這里,我們立即注意到了兩件事:交換機(jī)B運(yùn)行的是IEEE 802.1d協(xié)議(輸出中給出的是"ieee" ),并且第一項(xiàng)輸出( RootID)是此交換式網(wǎng)絡(luò)中關(guān)于根橋的信息。注意,這個(gè)根橋不是交換機(jī)B。交換機(jī)B到根橋的端口( 所謂的根端口)是端口1。這里的橋ID實(shí)際上是由交換機(jī)B和VLAN 1 構(gòu)成的生成樹橋ID的信息,VLAN 1被表示為VLAN0001,注意每個(gè)VLAN都可以有不同的根橋。此處還列出了交換機(jī)B的MAC地址,可以看出,它與根橋的MAC地址是不同的。
交換機(jī)B的優(yōu)先級(jí)是32 768,這是所有交換機(jī)的默認(rèn)優(yōu)先級(jí)。注意,它在這里被顯示為32 769,即與VLAN ID相加的結(jié)果,由此可以推出,對(duì)于VLAN 1,它將顯示為32 769。對(duì)于VLAN 2則為32 770,以此類推。
正如前面所述,通過(guò)修改優(yōu)先級(jí),可以指定某臺(tái)交換機(jī)成為STP網(wǎng)絡(luò)中的根橋,現(xiàn)在指定交換機(jī)B成為根橋。可以使用下列命令在Catalyst交換機(jī)上修改某個(gè)橋的優(yōu)先級(jí):
可以將優(yōu)先級(jí)設(shè)置為0到61 440之間的任何值。將優(yōu)先級(jí)設(shè)置為零(0)意味著,該交換機(jī)始終為根橋(假設(shè)其他交換機(jī)的橋ID也被設(shè)置為0時(shí),它與這些交換機(jī)相比總是擁有較低的MAC),橋優(yōu)先級(jí)的數(shù)值是以4096為間隔遞增的。如果需要將某臺(tái)交換機(jī)設(shè)置為網(wǎng)絡(luò)中所有VLAN的根橋,那么必須修改每個(gè)VLAN的優(yōu)先級(jí),0是可以使用的最低優(yōu)先級(jí)。最好不要將所有交換機(jī)的優(yōu)先級(jí)都設(shè)置為0。
請(qǐng)看下面的輸出,將VLAN 1中交換機(jī)B的優(yōu)先級(jí)修改為4096后,我們就成功地指定了這臺(tái)交換機(jī)成為根橋:
現(xiàn)在,根橋的MAC地址和交換機(jī)B的橋優(yōu)先級(jí)一樣了, 這表明交換機(jī)B已經(jīng)成了根橋。需要了解命令show spanning-tree,這非常重要。
!注意不管你信不信,還有另一個(gè)可以用來(lái)設(shè)置根橋的命令。
2. 生成樹的端口狀態(tài)
對(duì)于運(yùn)行IEEE 802.1d STP的網(wǎng)橋或交換機(jī)來(lái)說(shuō),其端狀態(tài)會(huì)在5種不同的狀態(tài)間進(jìn)行轉(zhuǎn)換。
- 阻塞被阻塞的端 口不能對(duì)數(shù)據(jù)幀進(jìn)行轉(zhuǎn)發(fā);它只監(jiān)聽BPDU 幀。設(shè)置阻塞狀態(tài)是為了阻止
- 使用有環(huán)路的路徑。當(dāng)交換機(jī)通電時(shí),所有端口在默認(rèn)情況下都處于阻塞狀態(tài)。
- 偵聽端口 偵聽BPDU,以確保在開始傳送數(shù)據(jù)幀之前,網(wǎng)絡(luò)上沒有環(huán)路出現(xiàn)。處于偵聽狀態(tài)的端口在沒有形成MAC地址表時(shí)就準(zhǔn)備轉(zhuǎn)發(fā)數(shù)據(jù)幀。
- 學(xué)習(xí)交換機(jī)端口 偵聽BPDU,并學(xué)習(xí)此交換式網(wǎng)絡(luò)中的所有路徑。處在學(xué)習(xí)狀態(tài)的端口開始形成MAC地址表,但仍不能轉(zhuǎn)發(fā)數(shù)據(jù)幀。轉(zhuǎn)發(fā)延遲是指將端口從偵聽狀態(tài)轉(zhuǎn)換到學(xué)習(xí)模式(或從學(xué)習(xí)到轉(zhuǎn)發(fā)模式)所需花費(fèi)的時(shí)間,默認(rèn)設(shè)置為15秒,可以用命令show spanning-tree查看。
- 轉(zhuǎn)發(fā)端口發(fā)送并接收所有 橋接端口上的數(shù)據(jù)幀。如果在學(xué)習(xí)狀態(tài)結(jié)束時(shí),端口仍然是指定端口或根端口,那么它就會(huì)進(jìn)入轉(zhuǎn)發(fā)狀態(tài)。
- 禁用(在技術(shù)上它不是一個(gè)可轉(zhuǎn)換狀態(tài)) 處于禁用狀態(tài)的端口(管理上)不能參與幀的轉(zhuǎn)發(fā)或組成STP。禁用狀態(tài)下的端口實(shí)質(zhì)上是不工作的。
注意只有在學(xué)習(xí)和轉(zhuǎn)發(fā)模式中,交換機(jī)才能形成MAC地址表。
在大多數(shù)情況下,交換機(jī)的端口都處于阻塞或轉(zhuǎn)發(fā)狀態(tài)。轉(zhuǎn)發(fā)端口通常是到根橋開銷最低(最佳)的端口。但如果網(wǎng)絡(luò)拓?fù)浒l(fā)生了改變(可能是因?yàn)殒溌肥Щ蛘哂腥颂砑恿艘慌_(tái)新的交換機(jī)),就會(huì)發(fā)現(xiàn)交換機(jī)上的端口在偵聽和學(xué)習(xí)狀態(tài)之間轉(zhuǎn)換。
我曾經(jīng)提到,阻塞端口是一種預(yù)防網(wǎng)絡(luò)環(huán)路的策略。一旦交換機(jī)為它的根端口和任一指定端口確定了到達(dá)根橋的最佳路徑,那么,所有其他的冗余端口都將處于阻塞狀態(tài)。被阻塞的端口仍可以接收BPDU,只是它們不能再發(fā)送出任何幀。
如果由于網(wǎng)絡(luò)拓?fù)涞母淖?交換機(jī)迭定一個(gè)阻塞端口為指定端口或根端口, 那么它將進(jìn)人偵聽模式,并檢查所有收到的BPDU,從而確保一旦端口進(jìn)入轉(zhuǎn)發(fā)模式它不會(huì)創(chuàng)建網(wǎng)絡(luò)環(huán)路。
3. 會(huì)聚
當(dāng)網(wǎng)橋或交換機(jī)上的所有端口都轉(zhuǎn)換到了轉(zhuǎn)發(fā)或阻塞模式時(shí),就會(huì)形成會(huì)聚。在會(huì)聚完成之前,無(wú)法轉(zhuǎn)發(fā)數(shù)據(jù)。是的,就是這樣:在STP會(huì)聚過(guò)程中,所有的主機(jī)數(shù)據(jù)都會(huì)停止發(fā)送!因此,如果你想與網(wǎng)絡(luò)用戶保持良好的關(guān)系(或者是長(zhǎng)期保持雇傭關(guān)系),就必須確保你的交換式網(wǎng)絡(luò)設(shè)計(jì)完好,從而使STP能夠快速會(huì)聚。
圖10-11給出了在設(shè)計(jì)和實(shí)現(xiàn)交換式網(wǎng)絡(luò)時(shí),必須特別重視的問(wèn)題,從而保證STP能夠高效會(huì)聚。
由于會(huì)聚可以確保所有的設(shè)備都具有一個(gè)協(xié)調(diào)統(tǒng)-的數(shù)據(jù)庫(kù), 因此會(huì)聚確實(shí)相當(dāng)重要。但是我還需要再次強(qiáng)調(diào),達(dá)到會(huì)聚實(shí)際上要用掉一些時(shí)間。從阻塞轉(zhuǎn)換到轉(zhuǎn)發(fā)模式通常會(huì)需要50秒的時(shí)間,建議不要修改這個(gè)默認(rèn)的STP定時(shí)器時(shí)間(但如果需要或處理大型網(wǎng)絡(luò)時(shí),可以調(diào)整這些定時(shí)器的設(shè)置)??梢韵駡D10-11 所示的那樣,通過(guò)創(chuàng)建層級(jí)交換機(jī)實(shí)用設(shè)計(jì),設(shè)法讓核心交換機(jī)成為STP的根橋,就可以讓STP會(huì)聚得又快又好。
在交換機(jī)端口上,從阻塞到轉(zhuǎn)發(fā)的典型的生成樹拓?fù)鋾?huì)聚時(shí)間為50秒,這樣在服務(wù)器或主機(jī)上就會(huì)引發(fā)超時(shí)的問(wèn)題,比如,重新啟動(dòng)交換機(jī)。針對(duì)這樣的問(wèn)題,可以在個(gè)別端口上使用快速端口來(lái)
禁用生成樹協(xié)議。
4. 生成樹的端口快速
如果交換機(jī)上連接服務(wù)器或其他設(shè)備,并且你可以完全確定這些鏈路不會(huì)因?yàn)榻肧TP而產(chǎn)生交換環(huán)路,那么,可以在這些端口上使用所謂的端口快速( PortFast )。使用了端口快速就表明,當(dāng)STP會(huì)聚時(shí),這一端口無(wú)需花費(fèi)50秒即可進(jìn)人轉(zhuǎn)發(fā)模式。
下面是可以完成這一配置的命令,相當(dāng)簡(jiǎn)單:
關(guān)于中繼端口,我們至今還沒有正式介紹過(guò),從根本上講,中繼端口用于連接交換機(jī),并在交換機(jī)間傳遞VLAN信息。如果要在某個(gè)中繼端口.上啟用端口快速,就必須特別地小心。交換機(jī)間的端口通常都需要運(yùn)行STP,因此這不是典型的配置。下面,我們就來(lái)看下,當(dāng)在某個(gè)接口上啟用了端口快速時(shí),交換機(jī)會(huì)給我們一些什么提示:
我們?cè)诙丝贔0/1上啟用了端口快速,注意到這里給出了一個(gè)相當(dāng)長(zhǎng)的提示信息,它告訴你這樣做要小心。另一個(gè)很實(shí)用的接口命令是range,通過(guò)它可以在交換機(jī)上同時(shí)配置多個(gè)端口。下面是一個(gè)例子:
- Swi tch(config)#int range fastEthernet 0/1 - 12
- Swi tch(config-if- range)#spanning-tree portfast
只需輸人上面介紹的range和配置端口快速命令再加一個(gè)回車,我們就可以將此交換機(jī)上的所有12個(gè)端口都設(shè)置為端口快速模式。希望這種配置不會(huì)創(chuàng)建任何環(huán)路!再次強(qiáng)調(diào),在使用端口快速時(shí)一定要特別地小心謹(jǐn)慎。同時(shí)還需要注意,命令interface range 可以與任何命令聯(lián)合使用。在上面的示例中,它是與portfast命令一起使用的。
5. 生成樹的UplinkFast
UplinkFast是思科產(chǎn)品特有的特性,當(dāng)鏈路失效時(shí)UplinkFast可用來(lái)縮短STP的會(huì)聚時(shí)間。注意,與portfast命令樣, 在使用這個(gè)命令時(shí),同樣需要特別地小心謹(jǐn)慎! UplinkFast 特性專門運(yùn)行于交換式環(huán)境中,當(dāng)交換機(jī)至少有一個(gè)可替換/備份的根端口(一個(gè)處于阻塞狀態(tài)的端口)時(shí)才會(huì)需要使用它。這也就是為什么思科只推薦一種 典型的應(yīng)用,即當(dāng)接人層的交換機(jī)端口被阻塞時(shí),才啟用UplinkFast。
UplinkFast 允許交換機(jī)在主鏈路失效之前就找出到根橋的可替換路徑。這表明如果主鏈路失效,可替換的備用鏈路將首先被啟用,這樣端口就不用再等待通常STP會(huì)聚所需要的50秒的時(shí)間。因此,如果你正在運(yùn)行802.1d STP,而且在接人層的交換機(jī)上配置了冗余鏈路,那么,你肯定需要打開UplinkFast。但是,在思科多層設(shè)計(jì)中,如果不知道通常用于分配層和核心層交換機(jī)的可替換/備份的根鏈路的拓?fù)湓O(shè)計(jì)結(jié)構(gòu),就不要輕易使用Uplinkfast。
6. 生成樹的BackboneFast
與可以在本地交換機(jī)上確定并快速修復(fù)鏈路失效的UplinkFast不同,思科還有一個(gè)專用的STP擴(kuò)展特性BackboneFast,在那些無(wú)法與交換機(jī)直接相連的鏈路失效的情況下,使用BackboneFast可以加速會(huì)聚。當(dāng)運(yùn)行BackboneFast的交換機(jī)從指定網(wǎng)橋接收到一個(gè)劣質(zhì)BPDU,它就知道到根橋的路徑中某一鏈路失效了。需要明確的是,劣質(zhì)BPDU是一個(gè)給出根橋和指定橋等同類交換機(jī)列表的BPDU。
另外,BackboneFast 與UplinkFast不同,Uplinkfast 只能配置在接入層交換機(jī)上,或者是帶冗余鏈路的交換機(jī)(并且其中至少有一條鏈路處于阻塞模式),而BackboneFast可以在所有的Catalyst交換機(jī)上啟用,這樣就能夠檢測(cè)出非直連鏈路上的失效。啟用BackboneFast的好處是它能夠加速生成樹的再配置過(guò)程,在默認(rèn)的50秒的STP會(huì)聚時(shí)間中,它能節(jié)省20秒鐘。
7. 快速生成樹協(xié)議(RSTP) 802.1w
你是否希望在你的交換式網(wǎng)絡(luò)(無(wú)論是何種品牌的交換機(jī))中,不僅STP配置良好,而且在每臺(tái)交換機(jī)上都內(nèi)置并啟用上面剛剛討論過(guò)的所有特性?這樣的結(jié)果,當(dāng)然可以有!那么,歡迎進(jìn)人快速生成樹協(xié)議(RSTP )的世界。
思科創(chuàng)建了PortFast、 UplinkFast 和BackboneFast來(lái)“修補(bǔ)”IEEE 802.1d 標(biāo)準(zhǔn)中的漏洞和缺陷。但這些改進(jìn)特性的不足之處在于,它們都是思科專用的,還需要進(jìn)行額外的配置。但新的802.1w 標(biāo)準(zhǔn)( RSTP)將所有這些“問(wèn)題"都-并解決了 ,你需要做的就只是打開RSTP。有一點(diǎn)很重要,即必須確保網(wǎng)絡(luò)中所有的交換機(jī)都能正確地運(yùn)行802.1w協(xié)議。
!注意RSTP確實(shí)能夠與傳統(tǒng)的STP協(xié)議實(shí)現(xiàn)互操作,你可能對(duì)此有些吃驚。但需要知道,當(dāng)它與傳統(tǒng)的網(wǎng)橋進(jìn)行交互時(shí),802.1w將喪失其內(nèi)在的快速會(huì)聚能力。
RSTP并不是一個(gè)“全新”的協(xié)議,但比起802.1d標(biāo)準(zhǔn)它又進(jìn)化了許多,當(dāng)拓?fù)浒l(fā)生改變時(shí)它具有更快的會(huì)聚時(shí)間。在創(chuàng)建802.1w時(shí)必須保證向后的兼容性。
802.1w重新定義了5種端口狀態(tài):
- 禁止=丟棄
- 阻塞=丟棄
- 偵聽=丟棄
- 學(xué)習(xí)=學(xué)習(xí)
- 轉(zhuǎn)發(fā)=轉(zhuǎn)發(fā)
找出根橋、根端口和指定端口的方式并沒有改變;但是,需要重新學(xué)習(xí)確定每個(gè)鏈路開銷的方法。表10-1給出了基于帶寬的IEEE開銷,STP和RSTP據(jù)此確定通往根橋的最佳路徑。
下面來(lái)看一下如何使用改進(jìn)的IEEE開銷規(guī)范確定端口,圖10-12演示了這樣一個(gè)示例。在圖10-12中,哪個(gè)交換機(jī)會(huì)變成根橋,而哪些端口又會(huì)成為根端口和指定端口呢?
交換機(jī)C擁有最低的MAC地址,因此,交換機(jī)C將成為根橋,并且根橋上的所有端口都是轉(zhuǎn)發(fā)端口,可見,這是最容易的部分。交換機(jī)A的根端口是哪個(gè)?如果交換機(jī)A和交換機(jī)B之間的路徑都是吉比特的,那么它的開銷只能是4,但是它們之間是快速以太網(wǎng)鏈路,因此交換機(jī)A和B之間的鏈路開銷是19。
看一下交換機(jī)B和C之間的鏈路開銷,可以看出這一開銷為 4,因?yàn)樗羌忍氐逆溌?然而,由于交換機(jī)D和C之間是快速以太網(wǎng)鏈路,因而其開銷為19,與交換機(jī)A和B之間的鏈路是相同的。從交換機(jī)A到C中間通過(guò)交換機(jī)B和D的路徑總開銷為19+4+19 = 42。如果從交換機(jī)A直接到交換機(jī)C,開銷更低(19),因此,在交換機(jī)A上Fa0/1就是我們的根端口。對(duì)于交換機(jī)B,最佳路徑經(jīng)由交換機(jī)D,它的開銷為4+19=23,于是,交換機(jī)B上的Gi0/1為根端口,而交換機(jī)D上的Gi0/2為根端口。在交換機(jī)A和B之間的鏈路上,我們只需要一個(gè)轉(zhuǎn)發(fā)端口,由于交換機(jī)A擁有更低的橋ID,因此交換機(jī)A的Fa0/2將成為轉(zhuǎn)發(fā)端口。所有沒有在這里列出的端口都將進(jìn)人阻塞模式(非指定狀態(tài)),用于阻止環(huán)路的出現(xiàn)。
如果還是不太清楚,記住只需要找出根橋,然后判斷出根端口,然后是指定端口。理解這些內(nèi)容的最佳方式就是實(shí)踐,因此,我們?cè)賮?lái)看一個(gè)示例,如圖10-13所示。
哪個(gè)網(wǎng)橋會(huì)成為根橋?由于所有的優(yōu)先級(jí)都設(shè)定為默認(rèn)情況,SW-C將成為根橋,因?yàn)樗鼡碛凶畹偷腗AC地址。我們很快就會(huì)發(fā)現(xiàn),SW-D 有一個(gè)連接到Sw-C的吉比特端口,因此它將成為SW_D的根端口,其開銷為4。SW-B的最佳路徑也是直接連接到sw-C的吉比特端口,其開銷也為4,但是SW-A呢? SW-A的根端口不會(huì)是直接相連的100 Mbit/s端口,它的開銷為19,而連接到SW_D的吉比特端口和隨后連接到SW-C的吉比特端口,它們的總開銷只為8。
8. EtherChannel
除了配置冗余鏈路并允許STP將某條鏈路設(shè)置為阻塞( BLK)模式之外,我們還可以將多條鏈路捆綁在一起創(chuàng)建邏輯上的聚合,這樣多條鏈路可以像單一鏈路那樣工作。既然這種做法與STP一樣,也可以提供同樣的冗余性,那么為什么我們不將這些冗余的鏈路捆在一起使用呢?
同樣,這里也有兩個(gè)不同的版本可供選擇,思科的EtherChannel 和IEEE的端口通道協(xié)商協(xié)議的版本。思科的版本被稱為端口聚合協(xié)議( PAgP ),而IEEE的802.3ad的標(biāo)準(zhǔn)則被稱為鏈路聚合控制協(xié)議(LACP )。這兩個(gè)版本都很好用,但配置各不相同。