详细讲述STP过程.docx
- 文档编号:8099407
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:17
- 大小:540.12KB
详细讲述STP过程.docx
《详细讲述STP过程.docx》由会员分享,可在线阅读,更多相关《详细讲述STP过程.docx(17页珍藏版)》请在冰豆网上搜索。
详细讲述STP过程
详细讲述STP过程
来源:
作者:
发布时间:
2008-07-28阅读次数313
21.2.1 STP判决和BPDU交换
Spanning-tree算法主要依靠BID,路径开
销和端口ID,在创建一个无环路的拓扑时,
STP执行如下4个步骤:
1.选取根交换机
2.计算到根交换机的最小路径开销
3.确定最小发送者BID
4.确定最小的端口ID
为做出最佳判决,STP需要保证所有参与的网桥都获得正确的信息,网桥间的信息交互采用网桥协
议数据单元(BPDU)的基于2层的frame来传递STP信息。
网桥通过如上4步来选择每个端口上所看到的
“最佳”BPDU。
当一个网桥被激活后,其所有的端口每隔2s(默认hello时间)发送一次BPDU报文 。
如果收到其它端口比自己更好的BPDU,则本地端口停止发送BPDU。
如果20s(默认最大时间MaxAge)
的时间没有从邻居收到更好的BPDU,则本地端口将重新发送BPDU。
最大生存时间是最佳BPDU超时的
时间。
21.2.2 STP收敛步骤
生成树算法比较复杂,其收敛于一个无拓扑的初始过程包含
1.选举根交换机(RootBridge)
2.选举根端口(RootPorts)
3.选举指定端口(DesignatedPorts)
在网络第一次“初始”的时候,所有的网桥都会泛洪混合的BPDU信息。
网桥开始执行前面讨论
过的STP4个判断过程。
使得网桥追踪到一组BPDU,形成整个网络(Cisco是一个vlan一个STP实例,故
cisco的生成树范围定义在一个vlan中)。
A。
选举根交换机
STP要求每个网桥分配一个唯一的标识(BID),BID通常由优先级(2bytes)和网桥MAC地址(6bytes)
构成。
根据IEEE802.1d规定,优先级值为0-65535,缺省的优先级为32768(0x8000)。
当交换机最初
启动时,它假定自己就是根交换机,并发送次优的BPDU,当交换机接收到一个更低的BID时,它会把
自己正在发送的BPDU的根BDI替换为这个最低的根BID,所有的网桥都会接收到这些BPDU,并且判定
具有最小BID值的网桥作为根网桥。
如下图所示,假定A,B的优先级均为32,768C的优先级为40,000
根据选举规则,选择较小的优先级的交换机,则选择出Cat-A和Cat-B。
在A,B优先级相同的时候,
查找最小的MAC地址AA-AA-AA-AA-AA-AA.于是Cat-A被选举成为根交换机.
B。
选举根端口
在选举根桥结束后,将选举根端口,一个网桥的根端口是按照路径开销最靠近根交换机的端口。
每
一个非根交换机都将选出一个根端口。
根交换机每个接口均为根端口。
其选择过程如下:
1. 根交换机Cat-A发送BPDU,他们所包含的根路径开销为0,当Cat-B收到这些BPDU
后,迅速将端口1/1的路径开销累加到所收到BPDU的根路径开销。
假定为
FastEthernet,则加上端口1/1的开销19,Cat-B1/1 到根路径的开销为 19。
2. Cat-B使用内部值19 ,并从端口1/2发送一个根路径开销为19的BPDU
3. 当Cat-C从Cat-B收到这些BPDU将计算自己到根网桥的开销为38(19+19)。
4. Cat-C也在1/1上收到来自A的BPDU。
同时计算1/1到根网桥的开销为19。
5. 根据最靠近根桥原则,C选出根端口为1/1。
6. Cat-C将继续向下游交换机公布其到根端口的开销为19
C。
选举指定端口
指定端口是定义在一个网段(Segment)上的概念。
在选举根端口的同时,基于到根网桥的的根路径
成本的累加值的指定端口选择过程也在进行。
包含某一网段的指定端口的网桥称为该网段的指定网桥。
根网桥的所有活动端口都成为指定端口。
这条规则的例外是:
当根网桥自身存在第一层物理环路的情况。
例如:
根网桥的两个端口连接到了同一台集线器上,或者两个端口通过交叉线连接到了一起。
指定端口
选举过程如下:
Segment 1中,根交换机Cat-A上1/1的路径开销为0,Cat-B上1/1的开销为19。
故Cat-A的1/1
为指定端口。
Segment 2中,同样Cat-A上的1/2被选举为指定端口。
在Segment 3中。
Cat-B和Cat-C
上的1/2口,端口路径开销均为19。
此时将根据最小发送者的BID来确定,此时确定B的端口为指定
端口,在某些情况下,例如Cisco的交换机每个vlan一个生成树实例,此时,将会出现BID相同的情况,
则最后比较端口ID,端口ID在同一台交换机上定义是必定不相同的,最小端口ID的端口被定义为指定
端口。
注意:
接入端口在指定端口过程中不扮演任何角色,所有的指定端口选举军仅在中继端口中交互,
接入端口仅用于连接主机和路由器。
21.2.3 STP状态
在确定根端口,指定端口和非指定端口后,STP准备创建一个无环路拓扑。
STP配置根端口和指定
端口来转发流量,非指定端口阻塞流量。
STP一共有5种状态
A.阻塞状态(blocking)
一个端口处于阻塞状态将会有如下特征:
丢弃所有连接的网段上收到的数据帧,或者通过交换而来内部转发的帧 。
接收到的BPDU直接传给系统模块。
没有地址数据库。
不传递从系统模块收到的BPDU
接收响应网络管理消息,但不传递他们
B.侦听状态(Listening)
如果一个网桥在启动或者在一定时间没有收到BPDU后立即认为自己是根交换机,断口进入侦听
状态,侦听状态是一种不传用户数据的STP状态,仅在端口发送和接收BPDU报文。
努力确定一个活动
的拓扑,该状态有如下特征:
丢弃所有连接的网段上收到的数据帧,或者通过交换而来内部转发的帧 。
接收到的BPDU直接传给系统模块。
没有地址数据库。
不传递从系统模块收到的BPDU
接收响应网络管理消息
选举根桥,根端口和指定端口发生在侦听状态期间。
在指定端口选举中失败的端口成为非指定端
口,并回到阻塞状态,剩下的指定端口或者根端口在15s后进入学习状态。
C.学习状态(Learning)
学习状态是网桥不传递用户数据帧但构建桥街表并收集诸如数据帧源vlan等信息的一种STP状态。
当网桥收到一个帧, 他将源MAC地址和端口放入桥接表, 当数据转发开始后学习状态减少了所需的
泛洪次数需求。
徐锡状态的生存时间同样受转发延迟定时器的控制,默认为15s
一个处于学习状态的端口特性:
丢弃所有连接的网段上收到的数据帧。
丢弃从其它端口交换来的需要转发的帧
接收到的BPDU直接传给系统模块。
接收,处理传递从系统模块收到的BPDU
接收响应网络管理消息
D.转发状态(Forwarding)
处于一个学习状态端口在转发延迟定时器超时后仍然是根端口或者指定端口,则将进入转发状态,
转发状态特性如下
转发所有连接的网段上收到的数据帧。
转发从其它端口交换来的需要转发的帧
将位置状态信息包含进自己的地址数据库
接收到的BPDU直接传给系统模块。
处理从系统模块收到的BPDU
接收响应网络管理消息
21.2.4 STP定时器
STP运作受3个定时器控制
HELLO时间(根网桥发送配置BPDU的时间间隔) 缺省2s
这个值实际上只控制配置BPDU在根网桥上生成的时间,其他网桥则把它们从根网桥接
收到的BPDU向外通告。
换言之,如果在2-20秒内由于网络故障而没有收到新的BPDU,非
根网桥在这段时间内就停止发送周期BPDU。
如果这种情况持续超过20s,也就是超过最大存
活期,非根网桥就使原来存储的BPDU无效,并开始寻找新的根端口。
转发延迟(侦听状态或学习状态的持续时间) 缺省15s
网桥在侦听状态和学习状态所花费的时间。
只用转发延迟就控制了转发和学习两个状态。
15秒这个值是假定网络的最大规模为7段网桥跳数;BPDU的最大丢失个数为3以及HELLO
时间间隔为2秒的情况下得到的。
这个转发延迟计时器同样可以用来控制网桥表在网络拓扑
发生变化后的生存时间。
最大存活期(存储BPDU的时间) 缺省20s
就是网桥在丢弃BPDU前用来备份存储它的时间。
21.2.5 BPDU的格式
STPBPDU帧格式随着所使用的协议类型变化。
下图显示了IEEE802.1D生成树协议的BPDU帧格式。
Cisco专有的BPDU帧格式:
帧控制域总是01
目的地址域指定了在桥街租地址表中所规定的目的地址,在IEEESTPBPDU帧中,这个
地址为0x800143000000
原地址域指明了交换机所使用的基本MAC地址
路由选择信息域仅在CiscoSTPBPDU中有,RIF必须为0x0200
逻辑链路控制域控制所有STPBPDU的帧类型,这个域被设置为0x424203
BPDU域内定义如下:
拓扑变化BPDU
21.2.6 拓扑变化和STP
STP通过使用一组定时器来避免在网络中出现桥街环路,如果一个稳定的STP进程出现变化可能需
要30~50s的时间才能收敛到新的拓扑。
(MaxAge20s+2次forwarddelay15s)当网络在收敛过程时,那
些已经不可达的物理地址仍旧存在于交换表中。
STP在拓扑变化的机制中,要求迅速清空交换表以删除不
可达的物理地址。
防止交换机将一些数据帧转发到那些不可达的设备。
下图为一个拓扑变化过程:
1.交换机D注意到拓扑变化
2.交换机D从根端口发出一个拓扑变化通知(TCN)BPDU,最终目的地为根交换机。
TCNBPDU
通过BPDU中值为0x80的一个字节类型域表明。
网桥持续发送TCN BPDU知道该网段的指定
网桥响应一个TCA配置BPDU,类型TCA是通过1字节标志域中的最高比特位指明的。
3.该网段的指定网桥(Cat-B)发送一个TCA配置BPDU到源网桥(Cat-D).交换机B也从根端口发送
一格目的地为根交换机的TCNBPDU
4.当根交换机收到(上游)TCN BPDU,就发送配置BPDU通告发生了一个拓扑变化。
根交换机
在配置中嵌入拓扑变化的时间等于转发延迟加最大生存时间.(15s+15s+20s)
5.一个网桥收到(下游)从根交换机发出的拓扑变化配置消息,用转发延迟定时器(15s)使全部
地址表超时。
这是的比默认设备通常需要5分钟才老化整张表快乐很多。
网桥将持续这一个
过程知道不再从根交换机收到拓扑变化配置消息
21.2.7 备份的根网桥
通常拓扑变化中,如果根桥出现问题,将会极大地影响网络的STP收敛时间,此时,cisco采用了
一种备份根桥的策略。
如下图:
其实质上是根据根网桥选举规则进行处理的,配置命令为:
Spaning-treevlanvlan-idroot primay
Spaning-treevlanvlan-idroot secondary
这2条命令的作用是修改BID中的Priority值,该命令仅在Catalyst6500,4500,3750,3550,2950
上支持
STP特性的描述与介绍
来源:
作者:
发布时间:
2008-07-28阅读次数187
21.3.1 PortFast
STPPortFast是一个Catalyst的一个特性,能使交换机或中继端口跳过侦听学习状态。
立即进入STP
转发状态,在基于IOS交换机上,PortFast只能用于连接到终端工作站的接入端口上。
当一个设备连接到一个端口上时,端口通常进入侦听状态。
当转发延迟定时器超时后,进入学习
状态,当转发延迟定时器第二次超时,端口进入到转发或者阻塞状态,当一个交换机或中继端口启用
PortFast后,端口立即进入转发状态,但交换机检测到链路,端口就进入转发状态(插电缆后的2s).如果端
口检测到一个环路同时又启用了PortFast功能。
它就进入阻塞状态。
重要的是要注意到PortFast值在端口
初始化的时候才生效。
如果端口由于某种原因又被迫进入阻塞状态,随后又需要回到转发状态,仍然要经过正常的侦听和学习过程。
启用PortFast的主要原因是防止启动周期小于30s的PC需要和交换机端口从未连接状态进入到转
发状态,一些网卡直到MAC层软件驱动被实际加载之后才会启动链路。
这种情况下就会导致一些故障,
例如DHCP环境下,这可能会出现一些问题。
配置方式:
Switch(config-if)#spanning-treeportfast[trunk]
Switch#showspanning-treeportfast
21.3.2 UplinkFast
在STP收敛过程中,一些终端站点可能会不可达,这是基于站点所连接交换机端口的STP状态而
定。
这打乱网络连接,于是关键是减少STP的收敛时间和网络受影响的时间。
当链路或交换机故障,或STP重新配置后, UplinkFast可以加速选择一个新的根端口。
根端口立
即进入转发状态,Uplinkfast通过减少最大更新速率来限制突发多博流量。
定义了更新分组发送的最大速
率,默认为150分组/分钟
Uplinkfast对于网络边缘的布线间交换机非常有用。
他不适用于骨干设备。
UplinkFast在直连链路
故障后提供快速的收敛能力, 并通过上行链路组在冗余。
如上图所示,A和根交换机相连的端口为转发状态,另一个为阻塞状态。
当到根交换机的上行链
路断开后, 如果配置了Uplinkfast 到另一台上层交换机的链路将直接转入转发状态。
受UplinkFast的影响,这个变化将花费1s~5s。
一点交换机将以个备用端口转为转发状态, 交换
机开始在该端口发送伪多播帧,本地桥接标中每个表项都对应一个伪多播帧。
它适用工作站地址做为
源地址,目的地址01-00-0C-CD-CD-CD作为目的地址。
如果原来的交换机恢复连接,交换机在等待2倍转发延迟时间再加上5s后才将该端口转入转发状
态。
这是的邻接端口有时间经过侦听和学习状态转入转发状态。
配置方法:
Switch(config-if)#spanning-treeuplinkfast
Switch(config)#[no]spanning-treeuplinkfast[max-update-ratemax_update_rate]
Switch#showspanning-treeuplinkfast
21.3.3 BackboneFast
BackboneFast是Catalyst交换机在跟端口或阻塞端口从指定网桥收到一个劣质(inferor)的BPDU时会
起动的一种特性。
当一个交换机收到一个劣质BPDU,就以为这该交换机的一个非直接链路出现故障。
也就是说,一个指定网桥已经丢失到根交换机的连接。
按照STP规则,因为所有配置的最大生存时间,
交换机会忽略所有的劣质的BPDU。
为了减少这20s时间,设计了BackboneFast特性。
当一个交换机收到劣质BPDU的时候,交换机
试图判断是否有一条备用路径到根交换机。
有2种情况:
1. 如果劣质BPDU到达一个阻塞端口,则交换机上的根端口和其他阻塞端口成为到根交换
机的备选路径
2. 如果劣质BPDU到达根端口,所有的阻塞端口都会成为到根交换机的潜在备用。
如果劣质BPDU到达根端口,且没有阻塞端口,交换机将自己定义为根交换机。
如果交换机存在备
用路径,它适用备用路径传送一种新的协议,通常情况下该模式会节约20s的时间。
如上图:
当L1Down时,SWB会发送一个劣等BPDU,告诉SWC,我SWB是Root,SWC经过和SWA沟
通(使用Root Link Query BPDU查询),SWA告诉SWC,我SWA还活着呢。
然后SWC告诉SWB,SWA
还活着,它还是Root。
配置方法:
Switch(config-if)#spanning-treebackbonefast
Switch#showspanning-treebackbonefast
21.3.4 BPDU保护
BPDU保护仅用在PortFast模式。
它被网络设计者用来加强STP域边界。
从而保持与其的活动拓扑。
在启用STPPortFast端口之后的设备被禁止影响STP拓扑。
通过配置BPDU保护后,端口入如果收到BPDU
将会把端口状态调整到Err-Disable.如下是一个出错信息:
2000May1215:
13:
32%SPANTREE-2-RX_PORTFAST:
ReceivedBPDUonPortFast
enableport.Disabling2/1
2000May1215:
13:
32%PAGP-5-PORTFROMSTP:
Port2/1leftbridgeport2/1
如图所示,A的优先级为10,为该vlan的根桥,B的优先级为20,为备份根桥,B和A之间的链
路为Gbit/s链路,正确的BPDU流向,如下左图
如果D为一台基于Linux的软件网桥,可以发送BPDU报文,并将自身BID的优先级设置为0,此
时,D将成为根桥,故BPDU流向变为右图, A,B间的Gbit/s链路被阻塞,通过C走100Mbit/s链路。
此时会超负载出现丢包的情况, BPDU保护的目的就是基于这种情况,防止接入设备对整个网络拓扑的
影响。
配置方式:
在全局模式:
Switch(config)#spanning-treeportfastbpduguarddefault
接口模式:
Switch(config-if)#spanning-treebpduguardenable
注意在全局模式配置了portfast默认打开BPDU保护,需要在相应的接口上打开portfast才能
启用
21.3.5 根保护
传统的802.1D STP没有给网络管理员提供确保交换式第2层网络拓扑安全。
如下图,当新接入的
交换机优先级更低,将抢占原有的根网桥。
根保护的目的是确保启用了根保护的端口成为指定端口。
通常一个根桥的所有端口均为指定端口。
除非连接到两个或多根网桥的端口。
如果网桥在启用根保护的端口上收到一个较好的STP BPDU。
这个
端口进入STP的根不一致状态, 不会有流量通过该端口。
如上拓扑,
A和B为分布层SW,C为接入层SW,根为A。
当在C下面再接一台SW时,由于D的优先级或
MAC地址可能比其它要低,可能会使D成为Root SW,从而使得从A到达B的流量不能直接发送到B,
而得使用C来转发,这样很不合理(A和B之间为千兆)。
为了避免这种情况,可以在C的下联端口上
使用RootGuard,以防止该端口成为RootPort,从而防止D成为RootSW,确保A永远为RootSW。
使
用RootGuard后,当SWD接入网络后,C的下联D的端口会收到一个更新的BPDU(前提是D的优先
级最高)后,C将该端口转为Block状态,直到D不在发送新的BPDU或更改D的优先级。
A交换机:
连接交换机C的端口
B交换机:
连接交换机C的端口
C交换机:
连接交换机D的端口
当一个根保护端口阻塞一个端口时,控制台将会显示如下消息:
%SPANTREE-2-ROOTGUARDBLOCK:
Port1/1triedtobecomenon-designatedinVLAN77.Moved
toroot-inconsistentstate
配置根保护端口的方法如下:
RootGuard配置在接口上,使用命令:
Switch(config-if)#spanning-treeguardroot
RootGuard配置在接口上,使用命令:
在接口上启用BPDU防护功能:
Switch(config-if)#spanning-treebpduguardenable
诊断命令:
显示接口的命令:
Switch#showrunning-configinterfaceinterfacex/y
显示端口不一致状态(即为Block的端口)的命令:
Switch#showspanning-treeinconsistentports
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 详细 讲述 STP 过程