在開始講解之前,我們大家一個問題。 一套企業(yè)網絡,最重要的是什么? 可能大家都覺得是最重要的是'快'就是性能方面一定要強,不然大流量關鍵業(yè)務怎樣跑,這個答案看似是沒什么毛病。 在企業(yè)網當中性能固然重要,但不是最重要的,企業(yè)網最看重的是'容災性',所以企業(yè)網設計盡量避免'單點故障',一下我們通過一個例子來說明一下: 下圖,是一個簡化版的企業(yè)網絡結構,從下圖我們可以看出整個網絡的核心是SW1,如果中間的SW1突然掛了,那整個網絡就全癱瘓了,整個被稱為'單點故障',在企業(yè)網設計中是要盡量避免這種設計,當然前提是預算允許。 然后我們在來看另一個拓撲圖。 這個圖我們可以看出核心層從原來的一臺設備增加到兩臺,這種設計即使SW1掛了也不會導致整個網絡癱瘓,因為還有SW2在,SW2會在SW1掛了的時候完全自動接替SW1的工作,這樣就很好的避免了'單點故障'了。 拓展閱讀:上述的這種情況,在SW1掛了的情況下SW2自動接替SW1的工作這種情況是需要做配置的,一般情況這種配置我們成為'高可靠性',一般實現(xiàn)這種功能有很多方法,例如現(xiàn)在很流行的'虛擬化',又或者是傳統(tǒng)的'MSTP+VRRP'都可以。 然而細心的讀者可能會發(fā)現(xiàn),這種所謂的'高可靠性'設計不就是上一篇文章《帶你走進網絡世界:交換機的工作失誤?廣播風暴詳解》中提到的環(huán)路嗎,是的,這種高可靠性設計確實是一個'物理環(huán)路'。 那既然是物理環(huán)路那為什么沒有產生廣播風暴呢? 那是因為有'STP'的存在。 STP(Spanning Tree Protocol 生成樹協(xié)議)下面我們來詳細了解一下STP究竟是何方神圣: 生成樹協(xié)議是一種工作在OSI七層模型中第二層的一個協(xié)議,它是通過阻塞物理端口來達到消除廣播風暴的目的。 之所以叫'生成樹協(xié)議',是因為自然生長的樹是沒有環(huán)路的,從樹根到到某一片樹葉只有一條路能到達,這個特性較為符合'生成樹協(xié)議'的特性,所以就這么叫了。 STP中有幾個重要的概念,我們先了解一下: STP協(xié)議端口狀態(tài):Blocking(阻塞狀態(tài)): 此端口為非指定端口,且不會轉發(fā)數(shù)據(jù)幀,端口在這個狀態(tài)下只會接收'BPDU'報文,當網絡拓撲發(fā)生改變的時候此端口會根據(jù)'BPDU'報文進行狀態(tài)更改。 Listening(偵聽狀態(tài)): 當端口處于這個狀態(tài)下就證明交換機判定這個端口應該參與根端口或者指定端口的選舉,這個狀態(tài)的端口仍然不能發(fā)送和接收數(shù)據(jù)幀,而是僅可以接收和發(fā)送BPDU,這個狀態(tài)只會發(fā)展成兩個狀態(tài),要么成為根端口或者是指定端口,要么是回到 Blocking狀態(tài)。 Learning(學習狀態(tài)): 能夠接收和發(fā)送BPDU,并開始學習MAC表,準備參與數(shù)據(jù)幀的轉發(fā)。 Forwarding(轉發(fā)狀態(tài)): 在forwarding狀態(tài)下該端口可以發(fā)送和接收數(shù)據(jù)幀,也可以收集MAC地址加入到它的地址表,還可以發(fā)送和接收BPDU報文。 Disabled(禁用狀態(tài)): 這個狀態(tài)下的端口是完全關閉的,不參與任何的數(shù)據(jù)幀交換。 STP協(xié)議角色:根橋(Root Bridge) 根橋是一個網絡的邏輯中心,但并不一定是物理上的中心,根橋會根據(jù)網絡拓撲變化而動態(tài)變化,在網絡完成收斂后會定期發(fā)送BPDU維護網絡拓撲的穩(wěn)定。 根端口(Root Port) 根端口負責想根橋轉發(fā)數(shù)據(jù),是交換機到達根橋路徑開銷最小的端口,也是就是距離根橋'最近'的端口。 指定端口(Designated Port) 當一個網段擁有兩條或者兩條以上的鏈路通往根橋時,連接這個網段的交換機就必須指定一個指定端口。 路徑開銷(Path Cost) 路徑開銷是由鏈路速率決定的??梢赃@樣理解,從A市到達B市,走高速的話耗費1小時,走低速的耗費2小時,這個耗費的時間就可以理解成路徑開銷了。 生成樹協(xié)議通過上述的參數(shù)將有環(huán)路的物理拓撲修剪成無環(huán)網絡,達到鏈路備份和路徑優(yōu)化等目的。 首先要實現(xiàn)上述的功能,交換機需要通過一系列的'信息交流'和'選舉',方可實現(xiàn)。 信息交流:交換機在修剪無環(huán)網絡的過程中需要互相進行信息交流,而交流的這些'信息'我們稱之為'BPDU(Bridge Protocol Data Unit)',BPDU是二層報文,所有支持STP協(xié)議的交換機都會收到并且處理這種數(shù)據(jù)報文,BPDU報文中包含多種生成樹所需要的參數(shù)。這些參數(shù)會用到在后面的選舉過程中。 選舉:1、選舉根橋 選舉根橋是在真?zhèn)€運行STP的網絡中選舉出一個唯一的根橋,這個根橋是STP網絡中最頂端的設備。 選舉根橋的過程中,每臺交換機都認為自己是根,然后互相發(fā)送BPDU報文,然后通過規(guī)則進行比較選舉出根橋。(一個廣播域需要選舉出一個根橋) 選舉的規(guī)則如下: 對比規(guī)則:Bridge ID值和MAC地址 Bridge ID值可以手動調整,數(shù)值越低優(yōu)先級越高(范圍是1-61440默認32768,需要是4096的倍數(shù)),若Bridge ID值相同則對比MAC地址,MAC地址的數(shù)值越小優(yōu)先級則越高,優(yōu)先級高的交換機則當選為根橋。 修改Bridge ID值命令:stp priority 4096 (數(shù)值取值 1-61440) 2、非根交換機選舉根端口 對比規(guī)則:對比路徑開銷,根據(jù)接口帶寬比例計算 根端口選舉就是在所有非根橋上的不同端口之間選舉出一個到根橋最近的端口,當然這個'最近'并不是指到達根橋所經過的交換機數(shù)量最少,而是根據(jù)端口到根橋的累計根路徑開銷最小的來判定,實際上是非根橋上接收到最優(yōu)配置BPDU的那個端口即為根端口,每個非根橋設備都要選擇一個根端口,根端口對于一個設備來說只有一個。 累計根路徑開銷的計算方法是累加從端口到達根橋所經過的各個端口(除根橋上的指定端口外)的各段鏈路的路徑開銷值(鏈路開銷),這里需要注意一下,同一交換機上不同端口之間的路徑開銷值為0。 如果同一交換機上有兩個以上的端口計算得到的累計根路徑開銷相同,那么選擇收到的BPDU中的發(fā)送者Bridge ID最小的那個端口作為根端口。 這里需要注意一下:根橋上沒有根端口的。 3、每個線路選舉指定端口 每一條物理鏈路需要選舉指定端口,可以理解成為每條連接交換機的物理線路的兩個端口之間,有一個就要被選為指定端口,每個網段選舉指定端口后,就能保證每個網段的鏈路都能夠到達根交換機,根端口的對端一定是指定端口(主要作用是用來轉發(fā)來自根橋的BPDU) 對比規(guī)則:對比路徑開銷,根據(jù)接口帶寬比例計算 比較同一段鏈路上2個端口發(fā)送BPDU到根的路徑開銷,較小的一個端口成為DP,如果相同再比較發(fā)送者的Bridge ID,Bridge ID小的那個則成為指定端口。 4、阻塞非根,非指定端口 在完成以上選舉之后,交換機會對落選的端口,即不能成為根端口和指定端口的端口進行阻塞。 STP選舉過程中端口的變化:端口從禁用狀態(tài)進入阻塞狀態(tài) 在阻塞狀態(tài)下,端口只能接受和分析BPDU,不能發(fā)送BPDU。 當端口被選舉為根端口或者指定端口時會進入偵聽狀態(tài),這個時候端口能夠正接收和發(fā)送BPDU,這個狀態(tài)會持續(xù)15秒。 如果沒有意外情況,端口就會進入學習狀態(tài),如果有意外情況,端口則回到阻塞狀態(tài)。 端口處于學習狀態(tài)能夠接收和發(fā)送BPDU,同時會開始學習MAC地址,構建MAC地址表,需要注意的是這個端口狀態(tài)下端口還不能接收和發(fā)送數(shù)據(jù)幀。 在端口處于學習狀態(tài)下,如果沒有因為端口被禁用等情況端口會順利進入轉發(fā)狀態(tài),端口處于轉發(fā)狀態(tài)能夠接收和發(fā)送數(shù)據(jù)幀與BPDU。 交換機發(fā)送的BPDU報文 STP協(xié)議收斂如果STP完成了選舉并且進入穩(wěn)定狀態(tài)之后,因為網絡發(fā)生變化就會觸發(fā)收斂。 當觸發(fā)了STP收斂會重新開始對各個角色的選舉。(重復上述選舉過程) STP收斂需要耗費很長時間,所以現(xiàn)在STP協(xié)議已經被淘汰了,取而代之的是RSTP和MSTP,當然也有思科的私有協(xié)議PVST。 |
|
來自: 昵稱11935121 > 《待分類》