觀察vPC domain二層結(jié)構(gòu)會發(fā)現(xiàn),對于一個(gè)vPC VLAN來說,只要vPC的成員端口狀態(tài)是正常的,那么兩臺vPC交換機(jī)的MAC轉(zhuǎn)發(fā)表是一致的,因此,當(dāng)只涉及到二層數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),正常的流量是不會穿越peer link的。只有當(dāng)某臺vPC交換機(jī)上有成員端口狀態(tài)為Down時(shí),或存在孤端口時(shí),才會有流量穿越peer link,但這些流量又不違反vPC的防環(huán)路機(jī)制。因此,對于二層流量,不用擔(dān)心數(shù)據(jù)幀丟失問題。
但是,當(dāng)涉及到三層,例如vPC交換機(jī)上配置了 vPC VLAN 的 SVI,和HSRP同樣的原因,接入層交換機(jī)看來,SVI的IP對應(yīng)的MAC來自PortChannel,均衡算法會導(dǎo)致一部分流量穿越peer link,如果數(shù)據(jù)包的下一跳IP位于vPC連接的三層設(shè)備,毫無疑問會被丟棄。
Cisco的官方文檔給出了一些不支持的vPC三層網(wǎng)絡(luò)結(jié)構(gòu),這里挑選幾個(gè)典型的進(jìn)行分析。分析三層問題時(shí)請牢記vPC的防環(huán)路機(jī)制,以及接入層設(shè)備的上行數(shù)據(jù)流會通過PortChannel均衡算法,在兩條vPC成員鏈路上分配上行流量。
圖7 不支持的三層結(jié)構(gòu)
圖8 特殊設(shè)備應(yīng)答行為
如圖7所示的三種三層結(jié)構(gòu),與vPC混用都會出現(xiàn)問題。先說(a),R1(可以是三層交換機(jī))通過vPC與兩臺vPC交換機(jī)形成動態(tài)路由(比如OSPF)鄰居關(guān)系。在R1看來,它有兩個(gè)等值鄰居,分別是7K1和7K2,無論數(shù)據(jù)包下一跳選擇哪個(gè)路由器,必然會有一部分流量穿越peer link,由此導(dǎo)致這部分流量不能被發(fā)送到vPC中。當(dāng)然,如果數(shù)據(jù)包的目的主機(jī)不在vPC后面,會一切正常。
圖(b),三層設(shè)備通過vPC VLAN和STP連接到 vPC domain,STP 會阻斷其中一條鏈路,如虛線所示。在這種情況下運(yùn)行動態(tài)路由協(xié)議,同樣會出現(xiàn)問題。在R1看來,在R1看來,它同樣有兩個(gè)等值鄰居,分別是7K1和7K2,如果動態(tài)路由協(xié)議采用負(fù)載均衡算法,必然會有一部分流量從7K1穿越peer link到 達(dá) 7K2。圖(c)中不難看出,兩個(gè)單臂路由有類似問題。
Cisco推薦設(shè)計(jì)三層網(wǎng)絡(luò)時(shí),在7K1和7K2之間可以單獨(dú)連接一條三層專用鏈路,不要使用peer link傳輸三層數(shù)據(jù)包。
實(shí)際上,只要避免外接的三層設(shè)備,比如防火墻、路由器或三層交換機(jī),通過peer link與vPC交換機(jī)形成動態(tài)路由鄰居關(guān)系,就能避免80%的三層問題。
有一些存貯設(shè)備,在回包時(shí)會改變自己的IP路由行為。比如,應(yīng)答包的目的MAC地址,會采用原數(shù)據(jù)包進(jìn)入時(shí)所使用的源MAC地址,而不是通過ARP獲取缺省網(wǎng)關(guān)的MAC。這種情況在非vPC環(huán)境中沒有任何問題,但在vPC中,問題出現(xiàn)了。
觀察圖8,假設(shè)服務(wù)器B為存貯設(shè)備。當(dāng)主機(jī)A訪問服務(wù)器B時(shí),一切正常,最終經(jīng)過7K1或7K2將數(shù)據(jù)包路由VLAN10到VLAN11,然后假定由7K2將數(shù)據(jù)包轉(zhuǎn)發(fā)給了服務(wù)器B。注意,7K2轉(zhuǎn)發(fā)包時(shí)使用的源MAC地址是它自己的物理MAC,這里是2222.2222.2222.2222。那么,當(dāng)B回包時(shí),它會直接使用這個(gè)物理MAC作為回包的MAC,而不是通過ARP去解析缺省網(wǎng)關(guān)的MAC。回包在選擇vPC路徑時(shí),有可能首先到達(dá)7K1,而數(shù)據(jù)幀的目的MAC是7k2,又帶來了穿越peer link數(shù)據(jù)流的老問題。
為解決這類問題,Cisco增加了一個(gè)特性peer gateway。通過在vPC交換機(jī)啟用這個(gè)特性,每個(gè)本地交換機(jī),當(dāng)收到的數(shù)據(jù)幀的目的MAC屬于對端交換機(jī),且目的IP不屬于對端交換機(jī)時(shí),將本地轉(zhuǎn)發(fā)該數(shù)據(jù)包,而不是通過peer link轉(zhuǎn)發(fā)給對端交換機(jī)。也就是說,只要收到的數(shù)據(jù)包不是發(fā)給對端交換機(jī)本身的,即在本地轉(zhuǎn)發(fā)該數(shù)據(jù)包。這個(gè)行為類似于HSRP,但HSRP僅僅針對虛擬HSRP組的MAC地址。
那 么, 啟 用peer gateway特性能不能解決原來提到的三層路由問題呢?也許可以,但有一點(diǎn)副作用:原來7K1和7K2之間與外接三層設(shè)備是二層連接,三者形成路由鄰居沒任何問題。啟用該特性后,這個(gè)連接變成了三層連接,因大部分路由協(xié)議鄰居發(fā)現(xiàn)過程中數(shù)據(jù)包的TTL被設(shè)置為1,所以外接設(shè)備只能與兩個(gè)7K之間的一個(gè)能形成鄰居關(guān)系。