環路那些事

2021-08-20 12:28:20 字數 3946 閱讀 7645

很多時候,為了防止單點故障,如圖(a),會人為地在鏈路中新增冗餘鏈路,用作備份鏈路,以提高網路的可靠性,但是這樣的代價是在會網路帶來環路,如圖(b)所示。

圖(a)無冗餘鏈路

圖(b)冗餘環路

圖(b)中的環路存在三大危害:廣播風暴、重複幀和交換機

mac位址表不穩定。

在圖(b)的拓撲場景下,當主機a和主機b想要通訊時,主機a需要先獲取到主機b的mac位址,由此主機a會傳送arp廣播報文來獲取主機b的mac;而這個廣播報文會經過a路線(1/1—>1/2—>2/2—>2/1—>1/1)和b路線(2/1—>2/2—>1/2—>1/1—>2/1)兩個方向永無止境的被迴圈複製**,最後整個鏈路都充斥著同乙個廣播報文(抓到的報文如圖(c)所示),直到鏈路頻寬資源被耗盡,鏈路無法再正常通訊,這就是廣播風暴。

為了停止上述的廣播的風暴,除了人為地切斷物理冗餘鏈路(複雜的現實鏈路中難以執行),另外一種方法就是啟用stp生成樹協議,從邏輯上切斷環路,阻止廣播風暴。在交換機a和交換機b上開啟生成樹協議stp後,主機a和主機b恢復正常通訊

stp是生成樹協議(spanning tree protocol),定義在ieee 802.1d 中。stp

通過阻塞冗餘鏈路,來消除橋接網路中可能存在的環路;並在當前活動路徑發生故障時,

stp啟用冗餘鏈路恢復網路連通性。簡單來講就是,stp允許兩個網路節點之間存在多條物理鏈路,每一次stp只允許其中一條主鏈路處於「通」的狀態,其他鏈路則處於「阻塞」的備份狀態,當主鏈路發生故障時,stp經過相應的演算法,自動啟用一條備份鏈路,從而提高網路的可靠性。

交換機之間週期(一般為2秒)性地傳送stp的橋接協議資料單元(bridge protocol data unit ,bpdu),用於實現stp的功能;bpdu報文格式如下:

øprotocol id:協議號,目前都是0

øversion:版本號,802.1d的版本號是0

ømessage type:訊息型別,指名為配置bpdu還是tcn bpdu

øflags:表明此報文是tc報文還是tca報文

øroot id:根交換機

idøcost ofpath

:到根交換機的路徑開銷

øbridge id

:傳送bpdu

的交換機

idøport id:傳送

bpdu

的埠id

ømessage age:訊息壽命,每經過乙個交換機遞增1,為各網橋到達根交換機的跳數

ømaximum time:當一段時間未收到任何bpdu,生存期達到max age時,網橋則認為該埠連線的鏈路發生故障。預設20秒

øhello time:傳送bpdu的週期,預設2秒

øforward delay:bpdu全網傳輸延遲,預設15秒

其中,1)、路徑開銷修訂前後的802.1d路徑成本

ø  網橋優先順序取值範圍:0到65535;預設值:32768(0x8000)

ø 首先判斷網橋優先順序,優先順序最低的網橋將成為根網橋

ø 如果網橋優先順序相同,則比較網橋

mac位址,具有最低

mac位址的交換機或網橋將成為根網橋

3)、埠id:

ø  埠優先順序是從0到255的數字,預設值是128(0x80)

ø 埠優先順序越小,則優先順序越高

ø 如果埠優先順序相同,則編號越小,優先順序越高

wireshark抓到的bpdu報文如下:

stp切斷環路的步驟如下:

1)、選擇根網橋(root bridge);

1>網橋id最小。

2)、選擇根埠(root ports)(非根橋上選擇乙個根埠);

1>到根路徑成本最低;

2>與本埠直連的上級網橋id最小;

3>與本埠直連的上級橋埠id最小(即對端埠id最小)。

3)、選擇指定埠(designated ports)(在每個網段上,選擇1個指定埠);

1>根路徑成本最低;

2>本網橋id最小;

3>本網橋上埠id最小。

4)、將既不是根埠也不是指定埠的埠狀態設定為阻塞狀態。

預設交換機優先順序為32765,預設埠優先順序為128,sw1的mac位址為00d0.f822.34b0,sw2的mac位址為001a.a90f.5016。

1)、驗證根橋的選擇和個埠的選擇

預設條件下,各交換機優先順序都相同,各埠優先順序也都相同,那麼按照前述理論,sw2的mac位址較小,則根橋應該是sw2;而根橋sw2的埠8比10小,則8口對端的2口應該是sw1的根埠,10其對端的8口冗餘應該置為阻塞狀態,開啟生成樹,驗證是否如此:

在sw1上檢視生成樹:

確實sw2為根橋,且sw1的跟埠是2;再檢視sw1的8口:

**狀態為1(即blocking),埠角色為備份埠

驗證結論:符合理論

2)、埠

id中含有兩個字元意義(優先順序和埠號),到底是先比較優先順序還是先比較埠號?

在上述優先順序相同的情況下,已經明確是比較的埠號,在此基礎上,更改根橋sw2上的埠10優先順序小於8口的優先順序,如果sw1的根埠轉為8則驗證先比較優先順序,反之則先比較埠號:

更改根橋sw2的10口的優先順序為64,而8口的優先順序依然是128:

檢視sw1上的埠狀態變化情況:

實驗發現,sw1上埠8和2的角色發生對調,證明先比較的是優先順序

3)、驗證根橋

id中優先順序與

mac位址誰先做比較

在優先順序相同兒mac位址不同的情況下已經知道了mac位址小的被選為根橋;現在更改優先順序,將sw1的優先順序改為更小的4096,而sw2的優先順序依然為預設值32768,檢視根橋是否變化

實驗證明,根橋變為mac位址較大的sw1,由此說明,先比較的橋id的優先順序。

那些人,那些事

很久沒有整理一下自己的思緒,聽著熟悉的歌,那歌聲會讓我想起那些人,那些事.乙個標點,乙個符號,乙個個早已在歲月深處冰封的眼神,一段沒有伴侶的歸途。一直以來我都認為我的人生就是這樣,平平淡淡,安安靜靜,波瀾不驚地在歲月的 眼角劃過,不留絲毫痕跡。現在看來,原來我寫的東西在很大程度上是是在滿足自己的某種...

那些人,那些事

一年前的今天,我大概和bi11一起奔波於各大招聘會上,白天各睡各的覺,晚上一起在工作室寫著程式 那時候似乎成都已經很冷,工作室有著溫暖的空調.而現在猛烈的陽光一件薄薄的襯衫真讓我不敢相信已經是十一月了.我在成都待了四年,說實話我不喜歡成都,不過還是有著很多讓人快樂的人和事給了我很多快樂的回憶.先說說...

那些人,那些事

回顧一下自己的it職業生涯,應該和大多數同僚一樣,從無知還有些自負的毛頭小子,到在技能上還算熟練,在性格上也變得成熟的奔三人士,在這個過程中給我最大的感覺就是越學習越發現自己懂得東西少,在職場上越來越感覺到僅僅靠技術層面上的提高是不能讓我們大多數人成功的。在自己目前的職業生涯中經歷過太多人太多事,大...