使用STP協議,爲的是解決環路問題,然而在特殊狀況下,反而會致使鏈路被阻斷,業務中斷。
服務器
某日,一用戶反應,兩臺核心之間出現異常現象,直連時不通,可是經過一臺交換機中轉就通了。網絡
上圖中,二層交換機原本是做爲核心A的下級交換機,接了大量服務器,網關都在覈心A上,核心A與核心B之間爲三層鏈接,互指路由通信。改造前的結構明顯不合理,客戶決定將核心直接互聯,可是互聯後,直鏈接口沒法PING通。線纜,接口配置都已檢查過均沒有問題。運維
到達現場,首先依舊從線纜及接口配置檢查開始,將筆記本配置爲核心A地址與核心B互聯,通;反之也通。排除線纜及接口配置問題。ide
第二步,在覈心A上檢查ARP表,空白,沒有對端的ARP表項。spa
第三步,接口下無任何針對對端MAC的限制策略,沒有IP+MAC綁定設計
第四步,檢查STP狀態,發現STP將核心A與核心B的互聯口阻斷。blog
直接緣由找到,可是從眼前的拓撲結構來講,不該該阻斷接口,換一種狀況,若是核心A與核心B之間確實還有一條沒有找到的線路,那麼線路中間串一個二層交換機,爲何就不會阻斷接口了,並且業務是正常的,沒有出現被環路影響的狀況。核心A與核心B之間是三層互聯,使用路由通訊,自己也就不會有二層環路。接口
下面再舉個例子說明一下路由
兩臺交換機兩個線互聯,兩邊的G0/0/1口屬於vlan10,兩邊的G0/0/2口屬於vlan20,這種狀況下是不是環路,若是開啓STP會出現什麼狀況。get
從實際效果來講,這不是環路,vlan10和vlan20內的廣播報文是不會傳到對方vlan內的,這也是劃分vlan的主要目的之一。可是開啓了STP後,是會阻斷一個口的。
這裏最關鍵的一點就是,STP報文與vlan無關,它是協議報文,不論接口下劃分什麼類型,放行或阻斷什麼vlan都不會阻礙它的傳遞。這也就解釋了上圖的現象。
那麼返回最初的問題,接口被阻斷的緣由知道了,爲何中間串了二層交換機就正常了,其實也狠簡單,那臺二層交換機沒有開啓STP協議,收到STP報文後就直接丟棄了,因此核心A與核心B在STP這個層面裏感知只有一條線路是互聯的。
最後,那條不知道隱藏在哪裏的線路依舊沒有找到,也許那中間又串了幾臺交換機。這個故障實際上是能夠避免的,在進行網絡設計及改造的時候,交換機之間在邏輯上應該要保證只有一條線路,能夠多口進行捆綁。合理、規範的設計能夠爲後期的網絡運維避免不少的疑難雜症,切記切記。