STPapi
本篇的基本內容:生成樹協議包括最初的STP(Spanning Tree Protocol,生成樹協議),可以快速收斂的RSTP(Rapid Spanning Tree Protocol,快速生成樹協議),以及適應多VLAN複雜環境的MSTP(Multiple Spanning Tree Protocol,多生成樹協議)。網絡
STP介紹:局域網中的物理環境一般有兩種產生緣由,一種是基於可靠性的考慮,爲交換機之間提供冗餘鏈接;另外一種是因爲錯誤的網絡設置致使環路的產生。若是不對網絡拓撲加以管理,以上兩種狀況均會致使嚴重的後果,如廣播風暴和MAC地址學習錯誤等。ide
STP在IEEE制定的802.1D標準中定義:用於在局域網中消除數據鏈路層環路。STP能夠經過計算動態地阻斷冗餘鏈路,而當活動鏈路發生故障時,STP又能夠激活冗餘鏈路,恢復網絡的連通,避免網絡中斷。學習
STP消除鏈路層環路的基本思想:將網絡拓撲修建爲樹形拓撲,而樹形拓撲是不存在環路的。(注意)spa
運行STP設備之間交互一些信息,而後經過計算實現拓撲的收斂,具體內容以下:orm
(1) 運行STP的設備依據必定的準則選舉一個樹根節點做爲網絡中的根橋,其餘節點爲非樹根節點。ip
(2) 每個非樹根節點,會選擇最優的路徑和根相連,非樹根節點上位於最優路徑的端口,爲該節點的根端口。同步
(3) 若是網絡中存在冗餘鏈路,則阻塞冗餘鏈路。it
每個非樹根節點都進行一樣的計算,最終網絡中任何兩臺設備之間都只有一條路徑可達,從而造成一顆無環的樹。io
當拓撲發生變化時,節點從新進行計算,收斂爲新的樹形拓撲。
STP基本概念
一、 橋和端口的角色
STP中有兩種特殊的網橋:根橋(Root Bridge)和指定橋(Designate Bridge)。根橋是整個生成樹的根節點,由全部網橋中優先級最高的橋擔任。指定橋是負責一個Physical Segment(物理段)上數據轉發任務的橋,由這個Physical Segment上優先級最高的擔任。
網橋上的端口有不一樣的角色,包括根端口(Root port)、指定端口(Designate Port)、和候補端口(Alternate port)。
根端口指定網橋上距離根最近的端口。根橋沒有根端口,每個非根橋有且僅有一個根端口
指定端口指Physical Segment上屬於指定橋的端口。根橋是全部網橋中優先級最高的,它在其所鏈接的全部Physical Segment上都是指定橋,因此一般狀況下根橋的全部端口都是指定端口。
Alternate端口指既不是根端口也不是指定端口的端口,它用來爲根端口或指定端口作備份,從Alternate端口出發到達根橋的路徑,是網橋到達根橋的備用路徑,即最終須要阻塞的路徑。
網絡處於穩定狀態時,根端口和指定端口處於轉發狀態,Alternate端口處於阻塞狀態,阻塞Alternate端口,就消除了網絡中的環路。
橋ID
STP中每個網橋都具備一個橋ID(Bridge ID),用於在網絡中惟一標識一個橋。根橋選擇的依據就是橋ID,具備最小橋ID的網橋即爲網絡中的根橋。
在進行橋ID的比較時,先比較橋優先級,優先級數值小者爲優;在優先級相同的狀況下,在比較MAC地址,MAC地址小者爲優。當網橋沒有哦配置優先級時,使用默認優先級32768,此時,具備最小MAC地址的網橋即爲網絡中的根橋。
路徑開銷
非根橋須要肯定根端口,根端口的選擇取決於端口到達根橋距離的遠近,網橋上到達根橋距離最近的端口爲根端口。衡量距離遠近依據是路徑開銷(Path Cost)。路徑開銷用戶衡量橋與橋之間路徑的優劣。STP中每條鏈路都具備開銷值,默認的鏈路開銷值取決於所遵循的路徑開銷標準以及鏈路帶寬。路徑開銷等於整個路徑上所有鏈路開銷的和。
BPDU
STP使用BPDU(Bridge Protocol Data Unit,橋協議數據單元)來交互協議信息,BPDU分兩類
(1) 配置BPDU(Configuration BPDU):用來進行生成樹計算和維護生成樹拓撲的報文。
(2) TCNBPDU(Topology Change Notification BPDU):當拓撲結果改變時,用來通知相關設備網絡拓撲結構發生變化的報文。
網橋之間經過交互配置BPDU來進行根橋的選舉以及端口角色的肯定。配置BPDU基於二層組播方式發送,目的地址爲01-80-C20-00-00-00。
配置BPDU由根橋從指定端口週期性發出,發送週期爲Hello Time。非根橋從根端口接受配置BPDU,進行更新並從指定端口將其發送出去。網絡中只有根橋會產生配置BPDU,非根橋只對配置BPDU進行中繼,不會自行生成配置BPDU。沒有運行STP協議的網橋將把配置BPDU看成普通數據幀轉發。
網橋上的每一個端口都會保存本端口接收到的最優配置BPDU,端口保存的配置BODU信息老化時間爲Max Age時間內配置BPDU信息沒有獲得更新時,端口將清除保存的配置BPDU信息。
配置BPDU包含目的MAC地址、源MAC地址、幀長、邏輯鏈路頭以及載荷
STP計算過程
STP的計算過程主要包含兩個任務:選舉根橋和肯定端口角色。在實際計算過程當中,這兩個任務是同步計算完成的。
進行STP計算時,網橋將各個端口收到的配置BPDU和本身的配置BPDU做比較,得出優先級最高的配置BPDU;網橋用優先級最高的配置BPDU更新自己的配置BPDU,用於選舉根橋和肯定端口角色;網橋從指定端口發送新的配置BPDU。
比較配置BPDU時依據優先級向量最小者最優的原則。
根橋選舉
在初始狀態時,每個網橋都尚未收到其餘網橋發送的配置BPDU,此時每一個網橋都認爲本身是網絡中的根橋,並將向外發送以本身爲根橋的配置BPDU。同時也會收到對端網橋發送的配置BPDU。每個網橋都將自身認爲的Root Bridge ID 和接收到的配置BPDU中的Root Bridge ID進行比較,選擇Root Bridge ID較小的做爲網絡中的根橋。
肯定端口角色
端口角色的肯定方式分爲根端口肯定、指定端口肯定和Alternate端口肯定的3個工做。
根端口的肯定須要比較RPC。當網橋從一個端口收到配置BPDU後首先獲取其中的RPC,和接收端口的鏈路開銷相加,獲得此端口的RPC,每一個收到配置BPDU的端口都進行一樣的計算,而後比較各端口的RPC,擁有最下RPC值的端口即爲本網橋的根端口。
指定端口的肯定須要比較端口發送的配置BPDU和接收的配置BPDU,若是發送的配置BPDU優於接收到的配置BPDU,代表端口在本Physical Segment上擁有最優的配置BPDU則該端口爲指定端口。
Alternate端口指該端口的配置BPDU在其所屬Physical Segment上不是最優的,且端口不是根端口。
(注意:在華三設備上該協議是默認開啓的因此本篇不附實驗)