網(wǎng)絡(luò)環(huán)路現(xiàn)在我們的生活已經(jīng)離不開網(wǎng)絡(luò),如果我家斷網(wǎng),我會(huì)抱怨這什么破網(wǎng)絡(luò),影響我刷抖音、打游戲;如果公司斷網(wǎng),那老板估計(jì)會(huì)罵娘,因?yàn)闀?huì)影響到公司正常運(yùn)轉(zhuǎn),直接造成經(jīng)濟(jì)損失。網(wǎng)絡(luò)通信中,通常是以一條鏈路能夠正常工作為前提,如果鏈路斷開或節(jié)點(diǎn)故障,那么互聯(lián)的設(shè)備就無(wú)法正常通信了,這類網(wǎng)絡(luò)問題叫做單點(diǎn)故障。沒有備份的鏈路或節(jié)點(diǎn),出現(xiàn)故障會(huì)直接斷網(wǎng)。 如果要提供 7×24 小時(shí)不間斷的服務(wù),那就需要在網(wǎng)絡(luò)中提前部署冗余。避免出現(xiàn)單點(diǎn)故障,合理的做法是在網(wǎng)絡(luò)中的關(guān)鍵設(shè)備和關(guān)鍵鏈路添加冗余。在冗余的網(wǎng)絡(luò)環(huán)境中,任意一條鏈路發(fā)生故障斷開,都不會(huì)影響網(wǎng)絡(luò),直接使用其它鏈路繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù),解決單點(diǎn)故障的隱患。 但同時(shí)也帶來(lái)了另外的網(wǎng)絡(luò)問題。這種組網(wǎng)會(huì)構(gòu)成二層環(huán)路,會(huì)引發(fā)廣播風(fēng)暴、重復(fù)幀、MAC 地址漂移等問題,嚴(yán)重時(shí)會(huì)占滿鏈路帶寬,或打爆設(shè)備 CPU ,導(dǎo)致設(shè)備無(wú)法正常工作,最終造成網(wǎng)絡(luò)癱瘓。當(dāng)然,在實(shí)際的網(wǎng)絡(luò)中,不少二層環(huán)路是由于人為的錯(cuò)誤操作導(dǎo)致的,比如接錯(cuò)了網(wǎng)線。 舉個(gè)栗子: 大劉的主機(jī)想要與小美的主機(jī)進(jìn)行通信,現(xiàn)在只知道小美主機(jī)的 IP 地址,不知道 MAC 地址。有 IP 地址,就可以通過 ARP 協(xié)議來(lái)獲取小美主機(jī)的 MAC 地址。我們來(lái)看看有冗余的網(wǎng)絡(luò)中數(shù)據(jù)交換的過程:
通過這個(gè)簡(jiǎn)單的演示,我們看到了冗余鏈路帶來(lái)的風(fēng)險(xiǎn)。重復(fù)幀、MAC 地址漂移和廣播風(fēng)暴,都是由一個(gè)廣播幀引起的,可是網(wǎng)絡(luò)中不可避免出現(xiàn)廣播幀,也不能因?yàn)槎迎h(huán)路問題而忽略冗余鏈路增加網(wǎng)絡(luò)可靠性的好處。 那么如何在保證網(wǎng)絡(luò)冗余的情況下,消除二層環(huán)路呢?實(shí)際上交換機(jī)的二層環(huán)路是一個(gè)典型問題,解決方案也有不少。其中的一個(gè)解決方案就是 STP(生成樹協(xié)議),能夠阻斷冗余鏈路來(lái)消除可能存在的環(huán)路,并且在網(wǎng)絡(luò)故障時(shí)激活被阻斷的冗余備份鏈路,恢復(fù)網(wǎng)絡(luò)的連通性,保障業(yè)務(wù)的不間斷服務(wù)。 當(dāng)網(wǎng)絡(luò)中部署了 STP 后,交換機(jī)之間會(huì)交互相關(guān)協(xié)議報(bào)文,并計(jì)算出一個(gè)無(wú)環(huán)路的網(wǎng)絡(luò)拓?fù)洹.?dāng)網(wǎng)絡(luò)存在環(huán)路時(shí),STP 會(huì)將網(wǎng)絡(luò)中的一個(gè)或多個(gè)接口進(jìn)行阻塞,將環(huán)路網(wǎng)絡(luò)結(jié)構(gòu)修剪成無(wú)環(huán)路的樹狀網(wǎng)絡(luò)結(jié)構(gòu)。被阻塞的接口不再轉(zhuǎn)發(fā)數(shù)據(jù),這樣二層環(huán)路問題便迎刃而解。STP 會(huì)持續(xù)監(jiān)控網(wǎng)絡(luò)拓?fù)錉顩r,當(dāng)網(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí),STP 能夠及時(shí)感知,并動(dòng)態(tài)調(diào)整被阻塞接口,而無(wú)需人工干預(yù)。 STP 基本概念STP 是用在局域網(wǎng)中消除數(shù)據(jù)鏈路層物理環(huán)路的協(xié)議,標(biāo)準(zhǔn)名稱是 802.1D 。STP 帶來(lái)的好處有:
在了解 STP 的原理之前,我們先來(lái)看看幾個(gè)專業(yè)術(shù)語(yǔ): 1、橋 ID( Bridge ID ,BID )在公司內(nèi)我們使用資產(chǎn)編號(hào)標(biāo)記不同的設(shè)備,在 STP 里我們使用不同的橋 ID 標(biāo)識(shí)不同的交換機(jī)。每一臺(tái)運(yùn)行 STP 的交換機(jī)都有一個(gè)唯一的橋 ID 。橋 ID 一共 8 字節(jié),包含 2 字節(jié)的橋優(yōu)先級(jí)和 6 字節(jié)的橋 MAC 地址。橋優(yōu)先級(jí)的值可以人為設(shè)定,默認(rèn)值是 32768 。橋 MAC 地址通常是交換機(jī)默認(rèn) VLAN1 的 MAC 地址。 2、根橋( Root Bridge ,RB )STP 要在整個(gè)二層網(wǎng)絡(luò)中計(jì)算出一棵無(wú)環(huán)的 “ 樹 ” ,樹形成了,網(wǎng)絡(luò)中的無(wú)環(huán)拓?fù)湟簿托纬闪?。其中最重要的就是樹根,樹根明確了,“ 樹枝 ” 才能沿著網(wǎng)絡(luò)拓?fù)溥M(jìn)行延伸。STP 的根橋就是這棵樹的樹根。當(dāng) STP 啟動(dòng)后,第一件事就是在網(wǎng)絡(luò)中選舉出根橋。在一個(gè)二層網(wǎng)絡(luò)中,根橋只有一個(gè),其余設(shè)備都是非根橋。當(dāng)網(wǎng)絡(luò)的拓?fù)浒l(fā)生變化時(shí),根橋也可能會(huì)發(fā)生變化。 網(wǎng)絡(luò)中橋 ID 最小的交換機(jī)將成為根橋。在比較橋 ID 大小時(shí),首先比較的是橋優(yōu)先級(jí),橋優(yōu)先級(jí)的值最小的交換機(jī)選為根橋;如果橋優(yōu)先級(jí)相同,那么會(huì)比較 MAC 地址,MAC 地址最小的交換機(jī)選為根橋。 3、根路徑開銷( Root Path Cost ,RPC )STP 交換機(jī)每一個(gè)端口都對(duì)應(yīng)一個(gè)開銷值,這個(gè)值表示數(shù)據(jù)通過端口發(fā)送時(shí)的開銷,這個(gè)值與端口帶寬有關(guān),帶寬越高,開銷值越小。對(duì)于端口開銷值的定義有不同的標(biāo)準(zhǔn),通常設(shè)備默認(rèn)使用 IEEE 802.1t 中定義的開銷值,同時(shí)還支持其它標(biāo)準(zhǔn),以便兼容不同廠家的設(shè)備。 非根橋到達(dá)根橋可能有多條路徑,每條路徑都有一個(gè)總開銷值,也就是根路徑開銷( RPC ),這個(gè)值是通過這條路徑所有出端口的開銷值累加而來(lái)的。STP 不會(huì)計(jì)算入端口的開銷,只在數(shù)據(jù)通過端口發(fā)出時(shí),才計(jì)算這個(gè)端口的開銷。對(duì)于根橋來(lái)說,根路徑開銷是 0 。 4、端口 ID( Port ID ,PID )運(yùn)行 STP 的交換機(jī)使用端口 ID 標(biāo)識(shí)每個(gè)端口,端口 ID 主要用于選舉指定端口。端口 ID 長(zhǎng)度為 16 比特,其中前 4 比特是端口優(yōu)先級(jí),后 12 比特是端口編號(hào)。在進(jìn)行比較時(shí),先比較端口優(yōu)先級(jí),優(yōu)先級(jí)小的端口優(yōu)先;在優(yōu)先級(jí)相同時(shí),再比較端口編號(hào),編號(hào)小的端口優(yōu)先。通常情況下,端口編號(hào)無(wú)法改變,可通過設(shè)置端口優(yōu)先級(jí)來(lái)影響生成樹的選路。 5、BPDUSTP 協(xié)議使用 BPDU 報(bào)文進(jìn)行交互,BPDU 包含與 STP 協(xié)議相關(guān)的所有信息,并且使用這些信息來(lái)完成生成樹的計(jì)算。BPDU 是組播幀,地址為 0180-c200-0000 ,并由 STP 交換機(jī)產(chǎn)生、發(fā)送、接收、處理,終端主機(jī)不參與。BPDU 分為兩種類型:
配置 BPDU 的參數(shù)詳情如下:
STP 樹的生成STP 的基本原理是在一個(gè)有二層環(huán)路的網(wǎng)絡(luò)中,交換機(jī)通過運(yùn)行 STP ,自動(dòng)生成一個(gè)沒有環(huán)路的網(wǎng)絡(luò)拓?fù)?。這個(gè)無(wú)環(huán)網(wǎng)絡(luò)拓?fù)湟步凶?STP 樹( STP Tree ),樹節(jié)點(diǎn)為某些交換機(jī),樹枝為某些鏈路。當(dāng)網(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí),STP 樹也會(huì)自動(dòng)地發(fā)生相應(yīng)的改變。 STP 樹的生成過程是:首先選舉根橋,然后確定根端口和指定端口,最后阻塞備用端口。既然是選舉,我們就看下參選者和選舉范圍。 STP 是通過比較 BPDU 中的信息進(jìn)行選舉的,最終的結(jié)果是:
1、選舉根橋根橋是 STP 樹的根節(jié)點(diǎn)。要生成一棵 STP 樹,首先要確定一個(gè)根橋。根橋是整個(gè)二層網(wǎng)絡(luò)的邏輯中心,但不一定是物理中心。 在 STP 交換機(jī)剛連接到網(wǎng)絡(luò)時(shí),每臺(tái)交換機(jī)都以自己為根橋,從所有啟動(dòng)的端口發(fā)送 BPDU ,宣告自己是根橋。收到 BPDU 的交換機(jī)會(huì)比較 BPDU 中的根橋 ID 與自己的根橋 ID ,選擇根橋 ID 值小的配置成自己 BPDU 中的根橋 ID 。交換機(jī)不停地交互 BPDU ,同時(shí)對(duì)根橋 ID 進(jìn)行比較,直至選出一臺(tái)根橋 ID 最小的交換機(jī)作為根橋。根橋會(huì)在固定的時(shí)間間隔發(fā)送 BPDU ,其它設(shè)備對(duì) BPDU 進(jìn)行轉(zhuǎn)發(fā),從而保證網(wǎng)絡(luò)拓?fù)涞姆€(wěn)定。 根橋交換機(jī)往往會(huì)承擔(dān)這個(gè)網(wǎng)絡(luò)中最大流量的轉(zhuǎn)發(fā)工作,我們希望性能最高的交換機(jī)當(dāng)選根橋交換機(jī)。但是 STP 在選舉時(shí),并不會(huì)把交換機(jī)的性能列入考量。為了讓網(wǎng)絡(luò)流量更合理的轉(zhuǎn)發(fā),可以通過配置橋優(yōu)先級(jí)的值來(lái)影響根橋的選舉。 同時(shí),根橋是可以搶占的,在 STP 完成網(wǎng)絡(luò)收斂后,如果網(wǎng)絡(luò)中接入一臺(tái)新的交換機(jī),且新增交換機(jī)的優(yōu)先級(jí)比根橋交換機(jī)更優(yōu),那么新增交換機(jī)會(huì)成為網(wǎng)絡(luò)中新的根橋。同時(shí),STP 將會(huì)重新收斂、重新計(jì)算網(wǎng)絡(luò)拓?fù)?,這個(gè)過程會(huì)引發(fā)網(wǎng)絡(luò)震蕩,對(duì)流量的正常轉(zhuǎn)發(fā)造成影響。 2、選舉根端口( Root Port ,RP )根橋選舉出來(lái)后,其它沒有成為根橋的交換機(jī)稱為非根橋。STP 會(huì)為每個(gè)非根橋選舉一個(gè)根接口,也就是在交換機(jī)的所有端口中,選擇距離根橋最近的一個(gè)端口,這就是根端口。 在 STP 樹形成后的穩(wěn)定期,根橋依然會(huì)周期性的向網(wǎng)絡(luò)中發(fā)送 BPDU ,而非根橋的根端口會(huì)收到 BPDU ,并向指定端口發(fā)送出去。 那是如何選擇根端口的呢?根橋周期性的發(fā)送 BPDU ,非根橋的所有端口都能收到 BPDU ,對(duì)比端口收到的 BPDU 中的參數(shù)值。
準(zhǔn)確的說,選舉根端口的目的是選舉出 STP 網(wǎng)絡(luò)中每臺(tái)交換機(jī)上與根交換機(jī)通信效率最高的端口。 3、選舉指定端口( Designated Port ,DP )根端口確保了交換機(jī)到根橋的路徑是唯一的,也是最優(yōu)的。網(wǎng)絡(luò)中的每條鏈路與根橋之間的路徑也要是唯一且最優(yōu)的。當(dāng)一條鏈路中有兩條或兩條以上的路徑到達(dá)根橋,就必須確定出一個(gè)唯一的指定端口,防止出現(xiàn)二層環(huán)路。指定端口不但是這條鏈路內(nèi)所有端口中到達(dá)根橋的最優(yōu)接口,還會(huì)向鏈路內(nèi)發(fā)送 BPDU 。 雖然選舉指定端口的范圍和根端口不同,但是選舉的原則是一致的。指定端口的選舉同樣會(huì)按照以下過程進(jìn)行:
如果有人不小心將同一臺(tái)交換機(jī)上的兩個(gè)端口用網(wǎng)線連接起來(lái),網(wǎng)絡(luò)中就會(huì)產(chǎn)生環(huán)路。選舉指定端口就是為了預(yù)防這種錯(cuò)誤連接導(dǎo)致環(huán)路的情況。當(dāng)出現(xiàn)這種連接時(shí),STP 會(huì)以端口 ID 較小的端口作為指定端口,從而打破環(huán)路。 為什么根橋交換機(jī)的所有端口都是指定端口呢? 因?yàn)楦鶚蚪粨Q機(jī)端口的根路徑開銷都是 0 ,根據(jù)選擇選舉原則,成為這條鏈路的指定端口。 4、阻塞備用端口( Alternate Port ,AP )在確定了根端口和指定端口后,交換機(jī)上剩下的非根端口和非指定端口都叫做備用端口。備用端口是打破環(huán)路的關(guān)鍵,STP 會(huì)對(duì)這些備用端口進(jìn)行邏輯阻塞。邏輯阻塞,是指端口不會(huì)接收或發(fā)送任何數(shù)據(jù),但是會(huì)監(jiān)聽 BPDU 。當(dāng)網(wǎng)絡(luò)的一些端口出現(xiàn)故障時(shí),STP 會(huì)讓備用端口開始轉(zhuǎn)發(fā)數(shù)據(jù),用來(lái)恢復(fù)網(wǎng)絡(luò)的正常通信。 三種端口的異同如下: 一旦備用端口被邏輯阻塞后,STP 樹的生成過程就完成了。 STP 端口狀態(tài)機(jī)STP 不但定義了 3 種端口角色:根端口、指定端口、備用端口,還講定義了 5 種端口狀態(tài):禁用狀態(tài)、阻塞狀態(tài)、偵聽狀態(tài)、學(xué)習(xí)狀態(tài)、轉(zhuǎn)發(fā)狀態(tài)。 STP 交換機(jī)的端口啟動(dòng)時(shí),首先會(huì)從禁用狀態(tài)自動(dòng)進(jìn)入到阻塞狀態(tài)。在阻塞狀態(tài),端口只能接收和分析 BPDU ,不能發(fā)送 BPDU 。如果端口選為根端口或指定端口,則會(huì)進(jìn)入偵聽狀態(tài),這時(shí)端口可以接收并發(fā)送 BPDU ,這種狀態(tài)會(huì)持續(xù)一個(gè) Forward Delay 的時(shí)間,默認(rèn)是 15 秒。15 秒后端口會(huì)進(jìn)入到學(xué)習(xí)狀態(tài),并持續(xù)一個(gè) Forward Delay 的時(shí)間。學(xué)習(xí)狀態(tài)的端口可以接收和發(fā)送 BPDU ,同時(shí)開始進(jìn)行 MAC 地址學(xué)習(xí),為數(shù)據(jù)轉(zhuǎn)發(fā)做好準(zhǔn)備。最后,端口由學(xué)習(xí)狀態(tài)進(jìn)入到轉(zhuǎn)發(fā)狀態(tài),就開始進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。在整個(gè)狀態(tài)的遷移過程中,端口一旦關(guān)閉或發(fā)生鏈路故障,就會(huì)進(jìn)入到禁用狀態(tài);如果端口不再是根端口或指定端口,那么端口狀態(tài)會(huì)立刻退回到阻塞狀態(tài)。 在 STP 的生成過程中,為什么要有兩個(gè) Forward Delay 時(shí)間? 在偵聽狀態(tài)有一個(gè) Forward Delay 的時(shí)間,是因?yàn)?BPDU 泛洪到全網(wǎng)需要一定的時(shí)間,STP 完成全網(wǎng)拓?fù)涞挠?jì)算同樣需要時(shí)間,所以停留 15 秒讓 STP 有充分的時(shí)間計(jì)算全網(wǎng)拓?fù)?,避免網(wǎng)絡(luò)中出現(xiàn)臨時(shí)的環(huán)路。在學(xué)習(xí)狀態(tài)又有一個(gè) Forward Delay 的時(shí)間,是由于交換機(jī)的接口上未學(xué)習(xí)到任何 MAC 地址,需要時(shí)間學(xué)習(xí) MAC 地址,避免網(wǎng)絡(luò)中出現(xiàn)不必要的數(shù)據(jù)幀泛洪現(xiàn)象。停留 15 秒,為進(jìn)入轉(zhuǎn)發(fā)狀態(tài)做好準(zhǔn)備。 STP 時(shí)間參數(shù)STP 定義了 3 個(gè)重要的時(shí)間參數(shù)。
由于時(shí)間參數(shù)的設(shè)計(jì),一個(gè) STP 接口從阻塞狀態(tài)進(jìn)入到轉(zhuǎn)發(fā)狀態(tài),可能需要 30 ~ 50 秒的時(shí)間,這段時(shí)間內(nèi),網(wǎng)絡(luò)無(wú)法正常使用。 舉例說明
STP 的改進(jìn)和代替技術(shù)在實(shí)際應(yīng)用中,STP 有很多不足之處,RSTP/MSTP 對(duì) STP 進(jìn)行了哪些改良?有哪些其它技術(shù)用來(lái)代替生成樹技術(shù)?欲知具體細(xì)節(jié),且看下篇文章。 實(shí)戰(zhàn)演練STP 基礎(chǔ)配置我們用 3 臺(tái)交換機(jī)搭建一個(gè)網(wǎng)絡(luò)環(huán)境,而且網(wǎng)絡(luò)中存在二層環(huán)路。為了對(duì)網(wǎng)絡(luò)進(jìn)行破環(huán),將在交換機(jī)上部署 STP 。 網(wǎng)絡(luò)拓?fù)?/h2> |
|
來(lái)自: 新用戶0935snDB > 《待分類》