BPDU是運(yùn)行STP的交換機(jī)之間交換的消息幀。BPDU內(nèi)包含了STP所需的路徑和優(yōu)先級信息,STP便利用這些信息來確定根橋以及到根橋的路徑。
中文名稱 | BPDU | 版本號 | STP的版本(為IEEE 802.1d時(shí)值為0 |
---|---|---|---|
協(xié)議ID | 該值總為0。 | 報(bào)文類型 | BPDU類型 |
協(xié)議ID:該值總為0。
版本號:STP的版本(為IEEE 802.1d時(shí)值為0)。
報(bào)文類型:BPDU類型(配置BPDU=0,TCN BPDU=80)。
標(biāo)記域:LSB(最低有效位)=TCN標(biāo)志;MSB(最高有效位)=TCA標(biāo)志。
根網(wǎng)橋ID:根信息由2字節(jié)優(yōu)先級和6字節(jié)ID組成。這個(gè)信息組合標(biāo)明已經(jīng)被選定為根網(wǎng)橋的設(shè)備標(biāo)識。
根路徑成本:路徑成本為到達(dá)根網(wǎng)橋交換機(jī)的STP開銷。表明這個(gè)BPDU從根網(wǎng)橋傳輸了多遠(yuǎn),成本是多少。這個(gè)字段的值用來決定哪些端口將進(jìn)行轉(zhuǎn)發(fā),哪些端口將被阻斷。
發(fā)送網(wǎng)絡(luò)橋ID:發(fā)送該BPDU的網(wǎng)橋信息。由網(wǎng)橋的優(yōu)先級和網(wǎng)橋ID組成。
端口ID:發(fā)送該BPDU的網(wǎng)橋端口ID。
計(jì)時(shí)器:計(jì)時(shí)器用于說明生成樹用多長時(shí)間完成它的每項(xiàng)功能。這些功能包括報(bào)文老化時(shí)間、最大老化時(shí)間、訪問時(shí)間和轉(zhuǎn)發(fā)延遲。
最大老化時(shí)間:根網(wǎng)橋發(fā)送BPDU后的秒數(shù),每經(jīng)過一個(gè)網(wǎng)橋都會(huì)增加1,所以它的本質(zhì)是到達(dá)根網(wǎng)橋的跳計(jì)數(shù)。
訪問時(shí)間:根網(wǎng)橋連續(xù)發(fā)送BPDU的時(shí)間間隔。
轉(zhuǎn)發(fā)延遲:網(wǎng)橋在監(jiān)聽學(xué)習(xí)狀態(tài)所停留的時(shí)間。
在一個(gè)橋接的局域網(wǎng)里,為了增強(qiáng)可靠性,必然要建立一個(gè)冗余的路徑,網(wǎng)段會(huì)用冗余的網(wǎng)橋連接。但是,在一個(gè)透明橋橋接的網(wǎng)絡(luò)里,存在冗余的路徑就能建立一個(gè)橋回路,橋回路對于一個(gè)局域網(wǎng)是致命的。
生成樹協(xié)議是一種橋嵌套協(xié)議,在IEEE 802.1d規(guī)范里定義,可以用來消除橋回路。它的工作原理是這樣的:生成樹協(xié)議定義了一個(gè)數(shù)據(jù)包,叫做橋協(xié)議數(shù)據(jù)單元BPDU(Bridge Protocol Data Unit)。網(wǎng)橋用BPDU來相互通信,并用BPDU的相關(guān)機(jī)能來動(dòng)態(tài)選擇根橋和備份橋。但是因?yàn)閺闹行臉虻饺魏尉W(wǎng)段只有一個(gè)路徑存在,所以橋回路被消除。
在一個(gè)生成樹環(huán)境里,橋不會(huì)立即開始轉(zhuǎn)發(fā)功能,它們必須首先選擇一個(gè)橋?yàn)楦鶚?,然后建立一個(gè)指定路徑。在一個(gè)網(wǎng)絡(luò)里邊擁有最低橋ID的將變成一個(gè)根橋,全部的生成樹網(wǎng)絡(luò)里面只有一個(gè)根橋。根橋的主要職責(zé)是定期發(fā)送配置信息,然后這種配置信息將會(huì)被所有的指定橋發(fā)送。這在生成樹網(wǎng)絡(luò)里面是一種機(jī)制,一旦網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化,網(wǎng)絡(luò)狀態(tài)將會(huì)重新配置。
當(dāng)選定根橋之后,在轉(zhuǎn)發(fā)數(shù)據(jù)包之前,它們必須決定每一個(gè)網(wǎng)段的指定橋,運(yùn)用生成樹的這種算法,根橋每隔2秒鐘從它所有的端口發(fā)送BPDU包,BPDU包被所有的橋從它們的根端口復(fù)制過來,根端口是接根橋的那些橋端口。BPDU包括的信息叫做端口的COST,網(wǎng)絡(luò)管理員分配端口的COST到所有的橋端口,當(dāng)根橋發(fā)送BPDU的時(shí)候,根橋設(shè)置它的端口值為零。然后沿著這條路徑,下一個(gè)橋增加它的配置端口COST為一個(gè)值,這個(gè)值是它接收和轉(zhuǎn)發(fā)數(shù)據(jù)包到下一個(gè)網(wǎng)段的值。這樣每一個(gè)橋都增加它的端口的COST值為它所接收的BPDU的包的COST值,所有的橋都檢測它們的端口的COST值,擁有最低端口的COST值的橋就變?yōu)榱酥付ǖ臉?。擁有比較高端口COST值的橋置它的端口進(jìn)入阻塞狀態(tài),變?yōu)榱藗浞輼?。在阻塞狀態(tài),一個(gè)橋停止了轉(zhuǎn)發(fā),但是它會(huì)繼續(xù)接收和處理BPDU數(shù)據(jù)包。
網(wǎng)橋協(xié)議數(shù)據(jù)單元(Bridge Protocol Data Unit)。是一種生成樹協(xié)議問候數(shù)據(jù)包,它以可配置的間隔發(fā)出,用來在網(wǎng)絡(luò)的網(wǎng)橋間進(jìn)行信息交換。
當(dāng)一個(gè)網(wǎng)橋開始變?yōu)榛顒?dòng)時(shí),它的每個(gè)端口都是每2s(使用缺省定時(shí)值時(shí))發(fā)送一個(gè)BPDU。然而,如果一個(gè)端口收到另外一個(gè)網(wǎng)橋發(fā)送過來的BPDU,而這個(gè)BPDU比它正在發(fā)送的BPDU更優(yōu),則本地端口會(huì)停止發(fā)送BPDU。如果在一段時(shí)間(缺省為20s)后它不再接收到鄰居的更優(yōu)的BPDU,則本地端口會(huì)再次發(fā)送BPDU。
BPDU是網(wǎng)橋協(xié)議數(shù)據(jù)單元(Bridge Protocol Data Unit)的英文首字母縮寫。
BPDU究竟是如何工作的呢?
這得從網(wǎng)橋說起。網(wǎng)橋有三種典型的方式:透明橋、源路由橋與源路由透明橋。
網(wǎng)橋典型地連接兩個(gè)用同樣介質(zhì)存取控制方法的網(wǎng)段,IEEE 802.1d規(guī)范(此規(guī)范是為所有的802介質(zhì)存取方法開發(fā)的)定義了透明橋。源路由橋是由IBM公司為它的令牌環(huán)網(wǎng)絡(luò)開發(fā)的;而源路由透明橋則是透明橋和源路由橋的組合。橋兩邊的網(wǎng)段分屬于不同的沖突域,但卻屬于同一個(gè)廣播域。
交換機(jī)啟動(dòng)時(shí),假定自己是根網(wǎng)橋,在向外發(fā)送的BPDU中,根網(wǎng)橋ID字段填寫自己的網(wǎng)橋ID
STP使用BPDU選擇根網(wǎng)橋2-2
當(dāng)接收到其他交換機(jī)發(fā)出的BPDU后,比較網(wǎng)橋ID,選擇較小的添加到根網(wǎng)橋ID中
STP使用BPDU計(jì)算根路徑成本2-1
根網(wǎng)橋發(fā)送根路徑成本為0的BPDU
其他交換機(jī)接收到根網(wǎng)橋的BPDU后,在根路徑成本上添加接收接口的路徑成本,然后轉(zhuǎn)發(fā)
生成樹端口的狀態(tài)
生成樹計(jì)時(shí)器
hello-timer :2s root每2s產(chǎn)生BPDU
forwarding-timer:15s stp選舉時(shí)間
max-age:20s 儲(chǔ)存BPDU的時(shí)間,spanning-tree發(fā)生故障,20s后原blocking狀態(tài)->learning 狀態(tài)
STP狀態(tài)機(jī)
在STP選舉過程中,端口是不能轉(zhuǎn)發(fā)用戶數(shù)據(jù)的。端口一開始處于阻塞狀態(tài),這個(gè)狀態(tài)只能接收BPDU;
一個(gè)接口20秒沒收到BPDU,也就是到了最大時(shí)間,端口會(huì)進(jìn)入偵聽狀態(tài),這時(shí)接口可以接收BPDU,并開始發(fā)送BPDU;
發(fā)送15秒的BPDU,接口將會(huì)為轉(zhuǎn)發(fā)用戶數(shù)據(jù)做準(zhǔn)備,也開始學(xué)習(xí)MAC地址,這個(gè)狀態(tài)叫學(xué)習(xí)狀態(tài);
再經(jīng)過15秒的學(xué)習(xí)后,端口進(jìn)入轉(zhuǎn)發(fā)狀態(tài),轉(zhuǎn)發(fā)狀態(tài)是一個(gè)正常的接口。
開啟STP:
switchA(Config)#spanning-tree
MSTP is starting now, please wait...........
MSTP is enabled successfully.
spanning-tree設(shè)置
查看配置
SW1#sh spanning-tree
-- MSTP Bridge Config Info --
Standard : IEEE802.1s
Bridge MAC : 00:03:0f:01:0e:30
Bridge Times : Max Age 20, Hello Time 2, Forward Delay 15
Force Version: 3
########################### Instance 0 ###########################
Self Bridge Id : 32768 - 00:03:0f:01:0e:30
Root Id : 16384.00:03:0f:01:0f:52
Ext.RootPathCost : 200000
Region Root Id : this switch
Int.RootPathCost : 0
Root Port ID : 128.1
Current port list in Instance 0:
Ethernet0/0/1 Ethernet0/0/2 (Total 2)
PortName ID ExtRPC IntRPC State Role DsgBridge DsgPort
-------------- ------- --------- --------- --- ---- ------------------ -------
Ethernet0/0/1 128.001 0 0 FWD ROOT 16384.00030f010f52 128.007
Ethernet0/0/2 128.002 0 0 BLK ALTR 16384.00030f010f52 128.011
MSTP
用少量資源在網(wǎng)絡(luò)中實(shí)現(xiàn)多個(gè)生成樹
在多條Trunk鏈路上實(shí)現(xiàn)VLAN級負(fù)載均衡
MSTP配置
DCS (Config)# spanning-tree mst configuration
DCS (Config-Mstp-Region)#name mstp
DCS (Config-Mstp-Region)#instance 1 vlan 10
DCS (Config-Mstp-Region)#instance 2 vlan 20
DCS (Config-Mstp-Region)#exit
DCS (Config)# spanning-tree
MSTP is starting now, please wait...........
MSTP is enabled successfully.
改變生成樹的形態(tài)
改變交換機(jī)優(yōu)先級
switchB(Config)#spanning-tree mst 0 priority 28672
改變鏈路開銷
switchA(config-Ethernet0/0/2 )#spanning-tree mst 1 cost 300000
改變端口優(yōu)先級
switchA(Config-Ethernet0/0/2)#spanning-tree mst 0 port-priority 144
阻塞狀態(tài)(Blocking state)網(wǎng)橋監(jiān)聽BPDU的STP 狀態(tài)。排在禁用(Disabled)狀態(tài)后面。阻塞狀態(tài)下不進(jìn)行轉(zhuǎn)發(fā)。
單獨(dú)的路由器和交換機(jī)都是非常成熟的產(chǎn)品形態(tài)。路由器下掛交換機(jī)更是一種成熟應(yīng)用模型,分布式設(shè)計(jì),在交換模塊有獨(dú)立的操作系統(tǒng),軟件成熟度極高,同時(shí)便于功能擴(kuò)展,功能豐富,可以提供交換機(jī)加上路由器所有的完整的功能。
進(jìn)一步分析,分布式交換架構(gòu)對于所有由交換協(xié)議報(bào)文都本地處理,比如所有的二層攻擊報(bào)文、802.1X的EAP驗(yàn)證報(bào)文、生成樹協(xié)議的BPDU報(bào)文、ARP報(bào)文、組播報(bào)文等,都可以由交換部分的CPU獨(dú)立處理,不需要上傳到路由器的主CPU部分。極大地降低主CPU的負(fù)擔(dān)。