STP鏈路故障MAC地址表錯誤復(fù)現(xiàn)

? ? ? ? 在上邊這個例子中,B交換機的MAC地址表項定義了通過端口g0/0/3可以到達(dá)主機A,通過端口g0/0/1到達(dá)主機B,但是由于C交換機的RP端口產(chǎn)生故障,導(dǎo)致生成樹拓?fù)渲匦率諗浚藭rA主機發(fā)往B交換幀后,B交換機會先查MAC地址表,還是會先把A主機的幀數(shù)據(jù)從g0/0/1發(fā)出去(MAC地址表老化時間是300s,遠(yuǎn)遠(yuǎn)超過了STP鏈路故障恢復(fù)時間)。交換機A此時由于g0/0/2端口故障,找不到目標(biāo)地址,就會把這個單播幀在其他端口進(jìn)行泛洪,網(wǎng)絡(luò)中斷。這樣的轉(zhuǎn)發(fā)是錯誤的,那如何避免?

我們在上節(jié)聊到,STP協(xié)議在有一個端口是AP的根橋故障后,AP端口會從Blocking轉(zhuǎn)變?yōu)閘istening,Listening-->learning-->Forwarding,兩個15s后變?yōu)镕orwarding狀態(tài)。
在這個例子中,C交換機g0/0/2變?yōu)镕orwarding的同時(確切的說是當(dāng)AP的狀態(tài)從blocking到listening狀態(tài))向?qū)Χ税l(fā)送TCN的BPDU,用來告知網(wǎng)絡(luò)拓?fù)浒l(fā)生變更。
上游交換機收到后,會發(fā)送TCA比特位置1的配置BPDU報文,同時,會繼續(xù)將TCN BPDU(復(fù)習(xí)一下,stp協(xié)議一共有兩種BPDU第一種是配置BPDU,第二種是拓?fù)涓淖兺ㄖ狟PDU(TCN BPDU))向根橋轉(zhuǎn)發(fā)TCN BPDU報文。
根橋收到TCN BPDU后,向其他端口所有端口發(fā)送TC=1的配置BPDU,通知全網(wǎng)交換機,網(wǎng)絡(luò)拓?fù)湟呀?jīng)發(fā)生改變,將下游設(shè)備把MAC地址表項的老化時間由默認(rèn)的300s修改為轉(zhuǎn)發(fā)延時時間(默認(rèn)15s)。
最多等待15s,B交換機的錯誤MAC地址表項就會自動清除,然后B交換機可以重新開始MAC表項的學(xué)習(xí)及轉(zhuǎn)發(fā)操作。
從上邊這個過程我們能夠發(fā)現(xiàn),華為設(shè)備STP協(xié)議幾種發(fā)送TCN BPDU報文的情況
1、第一種就是過渡到forwarding狀態(tài)后,發(fā)送TCN? ? BPDU
2、RP發(fā)送給根橋TCN BPDU
我們講述了上邊的案例,發(fā)現(xiàn)通過縮減MAC地址表項老化時間解決因為STP故障導(dǎo)致的MAC地址錯誤問題,但是還有一種情況我們不得不再次考慮,那就是對于邊界STP設(shè)備,如果他接入的都是電腦主機,主機開關(guān)機,導(dǎo)致網(wǎng)絡(luò)拓?fù)浒l(fā)生改變,根橋就會不斷的發(fā)送TC=1的BPDU報文,不斷地重置MAC地址表老化時間,新的問題產(chǎn)生了。
這個問題的避免,華為STP協(xié)議不得不對拓?fù)渥兓M(jìn)行新的定義,什么情況下才算是拓?fù)渥兓兀?/p>
1、當(dāng)DP端口進(jìn)入到forwarding狀態(tài)認(rèn)為是拓?fù)渥兓A為設(shè)備新加邊緣端口屬性,如果設(shè)置STP交換機的其中一個端口為邊緣端口,如果該端口進(jìn)入到forwarding狀態(tài),則不認(rèn)為是發(fā)生了拓?fù)涓淖儭?/p>
2、RP失效或者RP進(jìn)入Fordwarding狀態(tài)認(rèn)為是拓?fù)渥兓ň褪墙鉀QSTP故障后的MAC地址表錯誤問題)
3、非根橋DP端口失效不認(rèn)為是拓?fù)涓淖儯ū热绶歉鶚蚪粨Q機是一臺終端接入交換機,當(dāng)終端接入設(shè)備,端口變?yōu)镈P時,此時終端關(guān)機,端口失效,就不認(rèn)為是拓?fù)涓淖儯?/p>
4、根橋的DP失效直接發(fā)送TC BPDU(如果是根橋的DP失效,那就直接發(fā)送TC,拓?fù)湟欢òl(fā)生改變了)