爲防止二層單點故障,採用冗餘的交換機,可是,冗餘會產生環路,致使廣播風暴、mac-address-table不穩定,多幀複製等一系列問題。因此救世主STP來了。
html
選舉 root bridge: 最初全部的交換機都想成爲root bridge, 都會發送BPDU宣稱本身是root bridge, 有發送BPDU就會收到別的交換機發的BPDU, 交換機根據接收到的BPDU中的bridge-id 與本身的bridge-id比較, 最小的爲root bridge 。 bridge-id 組成:優先級+物理地址
選舉 root port: 此時根橋已經選舉完成了,只有root bridge能夠發送BPDU,因此交換機根據接收到的BPDU 中的Root Path Cost值,比較值的大小,小的會成爲root port(是從交換機自己的各個接收BPDU的端口中選舉root port ,與其餘交換機不要緊 )。 注:Path Cost:根橋發出的COST值是0,在下一交換機的入口處才加上COST值,出口處COST值不變。交換機接收BPDU時開銷值增長,發送BPDU時開銷值不變; 選舉根端口,比較接收的BPDU 。
選舉 指定端口: 選舉完root port後,就還剩下到目前爲止尚未名字的port了,選舉指定端口,比較端口轉發BPDU時的Root Path Cost , 小的爲指定端口。(看下面引用的案例最好理解,在不一樣交換機之間端口產生 指定端口) 注:選舉指定端口,比較發送的BPDU
阻塞端口: 不是root port , 不是指定端口的就是 阻塞端口了。
端口角色:
ide
一、blocking--阻塞狀態,不轉發數據幀,監聽流入的BPDU,不學習MAC地址 二、listening--監聽狀態,不轉發數據幀,不學習MAC地址,可以決定端口角色 三、learning--學習狀態,不轉數據發幀,能學習MAC地址 四、forwarding--轉發狀態,可以進行正常的幀轉發 五、disable--該端口沒有運行STP 當拓撲發生變化時,端口從阻塞狀態過渡到正常轉發狀態的時間是30-50S ① 若是是直鏈接口down掉,端口狀態過渡最大須要30S 【直連端口掛了,能夠感知到出現問題了,因此不用20s的等待來判斷是否出問題了】 ② 若是是非直連故障,最大須要50S <BPDU Timer> 三個計時器: •Message Age:最大存活時間(20S) Hello Time:根橋連續發送BPDU的間隔(2S) Forward Time:SW在監聽和學習狀態所停留的時間(15S)
參考連接:http://www.360doc.com/content/13/0330/14/8797027_274883365.shtml學習
BPUD的封裝
選舉實例:
code
①選舉根橋(Root Bridge)。優先級同樣,比較MAC地址,SW1爲根橋。 ②選舉每臺非根橋交換機上的根端口(Root Port),比較接收到的BPDU(BPDU由根橋發出,即SW1發出): SW2:從f0端口收到的BPDU代價爲19;從f1端口收到的BPDU代價爲19+4+19=42;所以f0端口爲根端口。 SW3:從g0端口收到的BPDU代價爲19+19=38;從g1端口收到的BPDU代價爲19+4=23;所以g1端口爲根端口。 SW4:從g0端口收到的BPDU代價爲19;從g1端口收到的BPDU代價爲19+19+4=42;所以g0端口爲根端口。 ③選舉每一個網段上的指定端口(Designated Port),比較發出的BPDU: SW1-SW2網段:從SW1/f0口發出的BPDU代價爲0;從SW2/f0口發出的BPDU代價爲19+4+19=42;所以SW1/f0口爲指定端口。 SW1-SW4網段:從SW1/f1口發出的BPDU代價爲0;從SW4/g0口發出的BPDU代價爲19+19+4=42;所以SW1/f1口爲指定端口。 SW3-SW4網段:從SW3/g1口發出的BPDU代價爲19+19=38;從SW4/g1口發出的BPDU代價爲19;所以SW4/g1口爲指定端口。 SW2-SW3網段:從SW2/f1口發出的BPDU代價爲19;從SW3/g0口發出的BPDU代價爲19+4=23;所以SW2/f1口爲指定端口。 ④非根端口,非指定端口即爲阻塞端口(Block Port),即SW3/g0口爲阻塞端口。