PortChannel對于生成樹協(xié)議來說,是單條線路,因此,所有的PortChannel的成員端口,STP狀態(tài)是一致的。觀察典型的vPC接入網(wǎng)絡結(jié)構(gòu),接入交換機和兩臺vPC對等交換機之間,通過vPC和vPC peer link形成了一個三角環(huán)狀回路,并且所有的鏈路都是轉(zhuǎn)發(fā)狀態(tài)。那么,在不阻斷任何一條鏈路的情況下,是如何避免出現(xiàn)環(huán)路的呢?
首先,vPC對等交換機的轉(zhuǎn)發(fā)原則是盡可能在本地轉(zhuǎn)發(fā),即盡量不讓數(shù)據(jù)幀穿越vPC peer link。
其次,支持vPC的交換機在硬件層面上實現(xiàn)了一條特殊的轉(zhuǎn)發(fā)原則:對于一臺vPC對等交換機來說,從vPC peer link接收的數(shù)據(jù)幀,禁止轉(zhuǎn)發(fā)到任一個vPC member port端口,只可以轉(zhuǎn)發(fā)到孤端口或者三層接口,如圖3所示。
需要注意的是,這個轉(zhuǎn)發(fā)原則只適用于vPC VLAN數(shù) 據(jù) 幀,nonvPC VLAN數(shù)據(jù)幀仍然沿用傳統(tǒng)的二層轉(zhuǎn)發(fā)模式。
如何理解這個轉(zhuǎn)發(fā)原則呢?請牢記典型的vPC網(wǎng)絡結(jié)構(gòu),每一個通過vPC上聯(lián)的接入層交換機,在正常情況下(即所有vPC member port端口都正常工作),到兩臺vPC交換機,一定存在至少一條二層直連的數(shù)據(jù)鏈路。那么對交換機B來說,所有通過vPC peer link從A轉(zhuǎn)發(fā)過來的數(shù)據(jù)幀(大部分是無轉(zhuǎn)發(fā)MAC的單播、廣播或組播幀),也必定通過vPC member port的直連鏈路轉(zhuǎn)發(fā)到了交換機SW1和SW2,因此如果交換機A再次向本地vPC member port轉(zhuǎn)發(fā)這些數(shù)據(jù)幀,邏輯上相當于對vPC PortChannel發(fā)送了兩次同樣的數(shù)據(jù)幀,這樣,必將在交換機SW1和SW2上產(chǎn)生重復幀。
圖3 vPC的防環(huán)路機制
圖4 特殊的孤端口
vPC loop avoidance rule states that traffic coming from vPC member port, then crossing vPC peer-link is NOT allowed to egress any vPC member port;however it can egress any other type of port (L3 port, orphan port, …).
即:從vPC member port端口接收的數(shù)據(jù)幀,跨越了vPC peer link后,禁止轉(zhuǎn)發(fā)到任何vPC member port端口,但是,可以轉(zhuǎn)發(fā)到孤端口或者三層接口……
由此可見,這里限定了從vPC member port端口接收的數(shù)據(jù)幀才適用該原則,不過很明顯,從孤端口接收的廣播幀,如果不適用該轉(zhuǎn)發(fā)原則,同樣會有重復幀問題。
注:Cisco的官方文檔《Best Practices for Virtual Port Channels(vPC) on Cisco Nexus 7000 Series Switches 》中,描述防環(huán)機制的的原文如下:
vPC防環(huán)路機制對所有的二層、三層流量都適用,惟一例外的是non-vPC VLAN流量。因此,在設計網(wǎng)絡時要十分小心,當存在流量不管是什么原因需要跨越vPC peer link,并且流量是屬于vPC VLAN的時候,我們一定要意識到,這些流量不能被轉(zhuǎn)發(fā)到正常工作狀態(tài)下的vPC成員端口,但可以轉(zhuǎn)發(fā)到其他三層或孤端口。
這里存在兩種特殊情況下的孤端口:
一是正常的vPC,假如有兩個成員端口,那么當其中一個端口狀態(tài)不可用時,另一個可用端口就由vPC成員端口轉(zhuǎn)變?yōu)楣露丝凇?/p>
二是當一臺下聯(lián)交換機通過正常的兩條鏈路分接兩臺vPC交換機,且接入端口屬于vPC VLAN,同時通過STP協(xié)議其中一條鏈路被阻斷,那么處于轉(zhuǎn)發(fā)狀態(tài)的端口也屬于孤端口。如圖4所示,vPC交換機A上的兩個端口成為孤端口。