之所以大費(fèi)周章,弄出個(gè)vPC來,無非是要在邏輯上簡化一下網(wǎng)絡(luò)拓?fù)?,特別是能夠跨設(shè)備實(shí)現(xiàn)PortChannel,簡 化 STP。那么,這些功能是如何實(shí)現(xiàn)的呢?
兩臺vPC交換機(jī)通過相互協(xié)作,欺騙對端設(shè)備,讓對端設(shè)備誤以為自己通過PortChannel連接的就是同一臺交換機(jī)。對端設(shè)備可以是普通的二層或三層交換機(jī)、服務(wù)器等任何可以支持PortChannel的設(shè)備。Cisco建議,兩邊的設(shè)備盡量啟用LACP協(xié)議。
在進(jìn)行LACP協(xié)商時(shí),兩臺vPC交換機(jī)使用相同的系統(tǒng)MAC,這個(gè)MAC被稱為vPC system MAC,定義如下:
vPCsystemMAC=00:23:04:ee:be:
例 如,當(dāng)vPC domain ID定 義 為10時(shí),vPC system MAC的 值 為00:23:04:ee:be:0a,這個(gè)系統(tǒng)MAC在兩臺vPC交換機(jī)中必須相同。除此以外,每個(gè)vPC交換機(jī)還各自有一個(gè) Local system MAC,這個(gè)MAC從本地交換機(jī)系統(tǒng)MAC中獲得,因此,各自保持唯一。
當(dāng) vPC系統(tǒng)需要對外欺騙,宣示自己為同一臺設(shè)備時(shí),就使用vPC system MAC作為身份標(biāo)識,例如,在vPC對外進(jìn)行LACP協(xié)商時(shí),以及運(yùn)行STP協(xié)議時(shí)。否則,使用各自的Local system MAC作為身份標(biāo)識,例如,在進(jìn)行普通的PortChannel LACP協(xié)商時(shí)。
這里假定STP模式為RPVST(Cisco建議,當(dāng)二層網(wǎng)絡(luò)規(guī)模比較大時(shí),運(yùn)行 MST)。 對于non-vPC VLAN,兩臺vPC交換機(jī)使用各自的Local system MAC,各自獨(dú)立運(yùn)行STP進(jìn)程,互不干涉。
對于vPC VLAN,兩臺vPC交換機(jī)各自運(yùn)行一個(gè)STP實(shí)例,它們各自有自己的Bridge ID。然而,只有primary像一個(gè)正常交換機(jī)那樣參與STP,scondary就像自己根本不存在一樣,僅僅轉(zhuǎn)發(fā)從其他交換機(jī)接收到到的BPDU給primary。這樣,在接入交換機(jī)看來,自己通過PortChannel僅僅連接了一個(gè)交換機(jī),那就是primary。
另 外,vPC還 規(guī) 定,peerl link鏈路參與STP,并且永遠(yuǎn)不能被STP阻斷。還里需要明確的一點(diǎn)就是,分布于primary和secondary的同一vPC的所有成員端口,無論何時(shí),它們的STP端口狀態(tài)永遠(yuǎn)是一致的。
STP穩(wěn)定后,ROOT 和ROOT secondary交換機(jī)和vPC primary、secondary 交換機(jī),無任何關(guān)系。即除非你手工干預(yù),否則,STP的ROOT和ROOT secondary交換機(jī)可能位于二層網(wǎng)絡(luò)的任何位置。
Cisco建議分別配置vPC primary、secondary交換機(jī)為STP的ROOT和ROOT secondary交換機(jī)。
下面分STP ROOT交換機(jī)是否屬于vPC交換機(jī)兩種情況進(jìn)行分析。
圖5 Secondary交換機(jī)出現(xiàn)兩個(gè)RP端口
ROOT交換機(jī)可能是通過vPC接入的交換機(jī),也可能是位于另一個(gè)vPC domain內(nèi)。那么,對于整個(gè)STP域的其他交換機(jī)來說,等效于vPC primary交換機(jī)通過vPC連接到了二層網(wǎng)絡(luò)。在vPC domain內(nèi)部, 如果vPC為根端口,則primary設(shè)置vPC的所有成員端口為Root Port,peerlink端口為DP;secondary設(shè)置同一vPC的所有成員端口為Root Port,peerlink端口同樣為RP。
如果primary為ROOT交換機(jī),則從外部看來,等效于其他交換機(jī)通過vPC和primary交換機(jī)連接,primary和secondary的vPC成員端口均被設(shè)置為DP,secondary 的 peerlink端口被設(shè)置為RP。如果secondary為ROOT交換機(jī),則從外部看來,等效于其他交換機(jī)通過vPC和secondary交換機(jī)連接,primary和secondary的vPC成員端口均被設(shè)置為DP,primary 的 peer-link端口被設(shè)置為RP。
primary在產(chǎn)生和處理BPDU時(shí),如果自身為ROOT,則BPDU的bridge ID為自身。如果secondary為ROOT,則BPDU的bridge ID取自secondary。無論secondary是否為ROOT,都不會產(chǎn)生、處理BPDU。
比較容易迷惑的地方是第一種情況中的secondary有兩個(gè)RP端口。而在傳統(tǒng)STP中,任何一個(gè)交換機(jī)都是有且只有一個(gè)RP。在正常的STP行為中,secondary的peer-link會被阻斷,但vPC修改了STP規(guī)則,peer-link永遠(yuǎn)不能被STP阻斷,因此出現(xiàn)了同一交換機(jī)中出現(xiàn)兩個(gè)RP的怪現(xiàn)象,如圖5所示。
看似奇怪,其實(shí)因?yàn)閜eer link鏈路的特殊性,是合乎情理的。這里把peer link當(dāng)作一條普通的數(shù)據(jù)鏈路來分析。考慮secondary的peer link口狀態(tài)是被阻斷或是RP,對正常的vPC VLAN數(shù)據(jù)流(不考慮CFS控制數(shù)據(jù))會產(chǎn)生怎樣的影響?答案是無任何影響。因?yàn)閟econdary的數(shù)據(jù)流,遵循本地轉(zhuǎn)發(fā)模式,即只要本地vPC成員端口狀態(tài)正常,永遠(yuǎn)不會有數(shù)據(jù)幀轉(zhuǎn)發(fā)到peer link上。也就是說,在網(wǎng)絡(luò)正常的情況下,peer link端口狀態(tài)無論是阻塞還是RP,都不會有數(shù)據(jù)流經(jīng)過。如果本地vPC成員端口狀態(tài)為down,則作為一條普通二層鏈路,如果peer link原來是阻斷狀態(tài),也要轉(zhuǎn)變?yōu)檗D(zhuǎn)發(fā)狀態(tài)(RP則不做任何狀態(tài)轉(zhuǎn)換),此時(shí)數(shù)據(jù)流自然穿越peerlink到達(dá)primary。即無論peer-link狀態(tài)是RP還是阻斷,并不影響本地的vPC VLAN數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑。但是,阻斷peerlink卻阻止了CFS交換控制數(shù)據(jù)。
有讀者或許會問,網(wǎng)絡(luò)正常的情況下會有vPC VLAN中的廣播包和多播包穿越RP狀態(tài)的peer-link,會不會產(chǎn)生環(huán)路呢?也不會,因?yàn)楦鶕?jù)vPC防環(huán)路機(jī)制,這些穿越了peer link的幀是不會進(jìn)入vPC的成員端口的。事實(shí)上,也正是由于vPC的防環(huán)路機(jī)制,才使得secondary即使有了兩個(gè)RP端口,也不會產(chǎn)生環(huán)路。
如果vPC交換機(jī)為STP ROOT(Cisco推薦如此配置),則:
* 除非vPC secondary交換機(jī)本身為 STP ROOT,否則,它的peer link口永遠(yuǎn)是Root Port。
* 所有vPC 成員端口狀態(tài)為DP。
* primary產(chǎn) 生 的BPDU,Bridge ID可能是屬于secondary交換機(jī)。
雖然vPC domain采用secondary對 STP“靜 默”方式,對外模擬出只有一個(gè)交換機(jī)參與STP。但由于ROOT可能是primary或secondary,因此對外模擬的交換機(jī)可能是primary,也可能是secondary。
Cisco推薦的配置模式是primary和secondary應(yīng)分別配置為STP的ROOT和ROOT srcondary。在一個(gè)穩(wěn)定的網(wǎng)絡(luò)中,如果ROOT宕機(jī),則ROOT srcondary變 身 為vPC primary和STP ROOT,這個(gè)過程中,srcondary開始接管STP BPDU的處理,并發(fā)生STP拓?fù)渥兓?。如果原來的primary恢復(fù),則因其配置的STP優(yōu)先級原因,又要成為STP ROOT,但vPC primary身份卻不再切換,這一復(fù)雜過程會對網(wǎng)絡(luò)穩(wěn)定性產(chǎn)生影響。
通 過peer switch命令,可 以 讓primary和secondary同時(shí)參與處理STP BPDU,但他們使用的是相同的Bridge ID,即vPC system MAC。這樣,通過vPC連接的交換機(jī),會收到兩份相同的BPDU,但它們的內(nèi)容是一致的。
使用peer switch的好處就是,當(dāng)ROOT宕機(jī)的時(shí)候,能夠有效減少網(wǎng)絡(luò)中斷的時(shí)間。因?yàn)閷ν獠拷粨Q機(jī)來 說,ROOT宕 機(jī),ROOT srcondary接管,并沒有發(fā)生網(wǎng)絡(luò)拓?fù)浣Y(jié)果的變化。