2015年3月14日 星期六

STP(Spanning-Tree Protocol擴張樹協定)

STP主要是用來防止實體線路的迴圈,會從邏輯上刻意block可能產生迴圈的路徑,會產生迴圈有許多因素像是一開始沒有設計好,或者為了要使用備援機制等等,都有可能造成迴圈。

STP的流程
1.選擇Root Bridge(根交換器):是依據每一台的BID(bridge ID)來決定。

STP在每台交換器的連接埠發送彼此的BPDU(Bridge Protocol Data Unit)封包,此封包內有8 bytes BID其中包含兩個值,Bridge Priority和MAC位址,交換器會先比較Bridge Priority數值較小的成為Root Bridge如果一樣則比較MAC位址。



2.選擇Root Port (根連接埠RP):除了Root Bridge以外每台交換器都會有一個RP,它是依據Path cost(路徑成本)來決定,如果相同就去跟另一端的交換器BID和port ID來做比較。

在選擇完Root Bridge後接下來就是分配每個連接埠的角色,總共有三種分別為RP、DP、NDP每一個Port都會被指定一種角色。一開始STP會選擇一個Port當作RP,此為交換器到Root Bridge的最佳路徑,判斷方式則是依據Path cost來比較越小的優先



假設Switch 2為根交換器當Switch 0要選擇RP時就有兩條路徑第一條Switch 0---->Switch 2  cost為19,第二條Switch 0---->Switch 1---->Switch 3---->Switch 2   cost為19+19+19=57,因此就以最小成本的第一條port當作RP其他交換器則依此類推。

3.選擇Designated Port(委任連接埠DP):每一個LAN區段只會有一個DP,如果有兩個要競爭則是選擇最低連接埠成本和BID來決定。
目前剩下的Port通通先假設為DP再來查看一個LAN segment只有一個DP的原則,這時你會發現有一個LAN segment出現了兩個DP,他們會以最小的路徑成本來做比較,Switch 0的cost有兩個分別為19和57,Switch 1的cost都是38,先在開始比較Switch 0最小cost為19,Switch 1最小cost為38因此Switch 0的Fa0/1成為DP。




4.選擇Non-Designated Port(非委任連接埠NDP):剩下的就是NDP此埠會被封鎖。

接下來就是如何手動設定根交換器,設定方法有下列兩種
1.調整BID的值:
指令為spanning-tree vlan 1 priority 20480
在調整BID的數值時要注意必須為4096的倍數
因為在前面有提到BID是由兩個部分組成分別為Bridge Priority和MAC位址



但是在多重Vlan時就無法判別因此就有一種新的STP版本誕生了,就是PVSTP他將Bridge Priority有劃分為4bits與12bits分別表示Bridge Priority和Extend System ID(等於Vlan ID或sys-id-ext),在Bridge Priority的值就只能動到2的12次方以後也就是4096的倍數。


2.直接下spanning-tree vlan X root primary指令

BPDU Guard

設定此功能的介面只要收到BPDU封包就會將介面關閉並呈現error disable那為何要有此功能因為在PC連接交換器時是不可能有迴圈發生的因此也就不需要BPDU。

PortFast
在交換器接PC時是不會有迴圈發生的但是STP還是會檢查因此我們可以使用PortFast來停止STP的運作,當PortFast執行時會掉過學習和傾聽的過程直接重封鎖轉換到轉送,所以PC就可以直接使用網路,而不用等STP運行完畢。

Port State
1.Block(BLK):STP一運作時,port就會進入block,此時並不能傳送資料,只能接收BPDU來確認Root Bridge和Root Bridge ID。

2.Listen(LSN):此狀態port會接收別人的BPDU,和傳送自己的BPDU

3.Learn(LRN):此狀態開始學習MAC,並將其儲存到MAC Table中。

4.Forward(FWD):此狀態表示port已經在可以正常轉送資料,同時也會發送、接收BPDU。

5.Disable:此狀態為停用,通常是由管理者自行關閉。

STP與RSTP比較:

STP(IEEE802.1D)的收斂時間約為30秒因為在Port State轉換需要Timer(計數器),所以收斂時間較長,因此出現了RSTP(Rapid STP IEEE802.1w),在RSTP的Port State轉換是用Proposal and Agreememt(主動協商)所以收斂時間較快。在RSTP Port Role中將NDP用Alternate Port與Backup Port取代。
在RSTP Port State 中將Block、Disable合為Discard(丟棄),Listen、Learn合為Learn(學習)

指令
========================================================================
S1(config)#spanning-tree vlan x priority 20480(將vlan x 的BID調整為20480)
S1(config)#spanning-tree vlan X root primary(將S1的vlan x 設定為根交換器)
S1(config)#spanning-tree vlan X root secondary(將S1的vlan x 設定為備援根交換器)
S1(config)#spanning-tree portfast bpduguard default(將所有的Port啟動BPDU Guard)
S1(config-if)#spanning-tree portfast bpduguard ecable(在某介面啟用BPDU Guard)
S1(config-if)#spanning-tree portfast bpduguard disable(在某介面停用BPDU Guard)
S1(config)#spanning-tree  portfast default(將所有的Port啟動PortFast)
S1#show spanning-tree (顯示STP)
S1#show spanning-tree vlan 5(顯示vlan 5 的STP)

沒有留言:

張貼留言