【IT168 专稿】要保证企业的网络中的关键应用可持续性,就需要对交换网络进行冗余设计,然而这将产生广播风暴、"网络环路"等问题,严重时,将导致整个网络瘫痪?于是,STP生成树解决办法出现了……
网络冗余设计与广播风暴的矛盾
广播风暴的克星:设计STP网络生成树
技术剖析:STP生成树初始化与收敛
实战剖析:STP生成树如何配置?
技术进化:RSTP快速生成树配置
快速生成树协议(RSTP)
STP并不是已经淘汰不用,实际上不少厂家目前还仅支持STP。STP的最大缺点就是他的收敛时间太长,对于现在网络要求靠可靠性来说,这是不允许的,快速生成树的目的就是加快以太网环路故障收敛的速度。
1.RSTP 5种端口类型
STP定义了4种不同的端口状态,监听(Listening),学习(Learning),阻断(Blocking)和转发(Forwarding),其端口状态表现为在网络拓扑中端口状态混合(阻断或转发),在拓扑中的角色(根端口、指定端口等等)。在操作上看,阻断状态和监听状态没有区别,都是丢弃数据帧而且不学习MAC地址,在转发状态下,无法知道该端口是根端口还是指定端口。
表8-20中看RSTP的端口状态只有三种状态,Discarding、Leaning和Forwarding。
表8-20 STP和RSTP端口状态比较
STP端口状态 RSTP端口状态 端口是否激活 是否学习MAC地址
Disabled Discarding 否 否
Blocking Discarding 否 否
Listening Discarding 是 否
Leaning Leaning 是 是
Forwarding Forwarding 是 是
RSTP有五种端口类型。根端口和指定端口这两个角色在RSTP中被保留,阻断端口分成备份和替换端口角色。生成树算法(STA)使用BPDU来决定端口的角色,端口类型也是通过比较端口中保存的BPDUB来确定哪个比其他的更优先。
1)根端口
非根桥收到最优的BPDU配置信息的端口为根端口,即到根桥开销最小的端口,这点和STP一样。请注意图8-16上方的交换机,根桥没有根端口。
按照STP的选择根端口的原则,SW-1和SW-2和根连接的端口为根端口。
2)指定端口
与STP一样,每个以太网网段段内必须有一个指定端口。假设SW-1的BID比SW-2 优先,而且SW-1的P1口端口ID比P2优先级高,那么P1为指定端口,如图8-17所示。
图8-16 RSTP根端口 图8-17 指定端口的选择
3)替换端口
如果一个端口收到另外一个网桥的更好的 BPDU,但不是最好的,那么这个端口成为替换端口,如图8-18所示。
对于SW-2来说,端口P3收到的BPDU比自己优先,自己为次优先,P3为替换端口。
4)备份端口
如果一个端口收到同一个网桥的更好 BPDU,那么这个端口成为备份端。当两个端口被一个点到点链路的一个环路连在一起时,或者当一个交换机有两个或多个到共享局域网段的连接时,一个备份端口才能存在。
如图8-19所示,SW-1的P1和P2口同时接入到以太网的同一网段,P1为指定端口,P2 优先级低,则P2端口为备份端口。
图8-18 替换端口的选择 图8-19 备份端口的选择
5)禁用端口
在快速生成树协议应用的网络运行中不担当任何角色。
2.BPDU更新与变化
RSTP添加标志位,如图8-20所示。在STP中,标志位只有0为TC和7为TCA使用,RSTP使用其中保留的6位。另外,RSTP在BPDU指定了端口的角色和端口状态,并且采用提议/同意的控制机制。
图8-20 RSTP更新BPDU结构
1)间隔发送BPDU
STP的非根桥仅传递根桥生成的BPDU;RSTP的网桥不管是否收到来自根桥的BPDU,它每隔Hello time(默认2秒)时间发送本身的BPDU配置信息。
2)快速的老化信息
STP必须等到20秒的老花时间到时,才能更新BPDU;RSTP采用心跳的机制,当一台网桥在连续三次没有收到BPDU的情况下,网桥认为邻居的根和指定根已经丢失,立即老化自己的BPDU配置信息。
3)接受下级的BPDU
与Cisco专有的Backbone Fast的特性类似,RSTP接受下级的BPDU。如图8-21所示,如果一台网桥从它的指定根桥收到下级信息,立即接受并覆盖原先的BPDU配置信息。
因为交换机SW-2知道根桥还在,立即发送BPDU的包含根桥信息给SW-1,SW-1停止发送BPDU,同时接受连接SW-2的端口为新的根端口。
图8-21 接收下级BPDU
3.快速转换到转发状态
STP 的网络端口从阻断到转发状态,如果想快速收敛的话,需要修改默认的转发延迟和老化时间定时器;RSTP可以快速收敛而不依赖于定时器,这些快速的收敛主要依赖边缘端口和点到点的链路来实现。
1)边缘端口
一个边缘端口就像一个Port Fast-enabled端口,并且只在连接了一个单独的末端站点的端口上启用他。但他和Port Fast-enabled 不一样,他不产生拓扑改变,但当他收到BPDU时,自动成为生成树端口,Cisco交换机的配置也是采用Port Fast-enabled方式配置。
2)点到点链路
两台交换机之间的链路只有一根链路,同时端口之间的连接为全双工,这样的链路类型叫点到点链路。对于半双工的链路叫共享端口。链路类型交换机自己检查,也可人为修改。
4.提议/同意握手机制
RSTP使用提议/同意握手机制来完成端口的快速收敛。下面以图8-22中的变化为例说明。
图8-22 提议/同意案例
假设SW-1有一条新的链路连接到根桥。链路起来时,根桥的P0口和SW-1的P1口同时进入指定阻断状态,而且P0和P1同时发布带有提议标志位的RSTP BPDU ①,同时P1成为新的根端口。
SW-1开始同步新的消息给其他的端口,P2为替换端口,同步中保持不变,P3为指定端口,同步中必须阻断P3、P4为边缘端口,同步中保持不变②;SW-1 通过新的根端口P1给根桥发送一个提议BPDU同意消息,将标志位有提议给为同意,P0和P1握手成功③,P0和P1直接进入转发状态;这时P3端口为指定端口,还处于阻断状态,同样按照P0和P1的提议/同意握手机制,SW-1和SW-2快速进入转发状态。
提议/同意握手机制收敛很快,状态转变中无须依赖任何定时器;如果指定阻断端口发送提议消息后没有收到同意消息,此时进入STP的监听、学习机制,这种可能出现在对方网桥不知道RSTP的BPDU,或者端口是关闭状态。
5.新的拓扑改变机制
如图8-23所示,STP的拓扑变化是先将TCN发送到根桥,再由根桥将TC发送给所有网桥。
SW-4发送自己的拓扑变化通知(TCN)位传递给根桥,根桥发送TC位的BPDU给所有的其他网桥,通知拓扑变化。
1)拓扑改变检测
在RSTP中,只有非边缘端口进入转发状态时,才引起拓扑的改变,端口改变到其他状态不引起拓扑改变(不产生TC),但RSTP网桥检测到拓扑改变,发生以下动作:
非边缘的指定端口和根端口启动一个等于两倍Hello Time的TC等待计数器。
泛洪MAC地址到所有的端口上。
只要TC等待计时器在端口中运行,该端口发送的带有TC位的BPDU,在计时器激活期间,根端口也发送BPDU信息。
2)拓扑改变传播
当一个网桥收到带有拓扑改变(TC)标志为BPDU,按照以下两种方式进行处理:
清除交换机上所有端口学来的MAC地址除了拓扑改变收来的MAC地址。
启动拓扑改变(TC)等待计数器,发送带有TC标志位的BPDU到所有的指定端口和根端口。
通过这样的机制,SW-4的TCN通过一步快速泛洪到整个网络中,如图8-24所示,无须经过根桥。
图8-23 STP拓扑改变过程 图8-24 RSTP拓扑改变过程
6.RSTP的兼容性
STP无法知道RSTP中BPDU 带有的版本为2,其本身的版本为0,但是RSTP可以识别版本为0的STP,一旦RSTP的端口接着是STP的设备,该端口将使用STP的BPDU和TCN来运行,以保证RSTP和STP的互操作性。
对于Cisco的每VLAN生成树(PVRST+),由于Cisco新的设备全部支持多生成树,同时Cisco的每VLAN生成树的私有性,理论上和RSTP没有太多的区别,这里不再详细介绍。
7.RSTP的配置
RSTP的配置,由于Cisco默认是开启STP。可以使用 spanning-tree mode rapid-pvst 命令,配置Cisco交换机的快速每VLAN生成树,其他的配置和STP配置一样。
Cisco的快速生成树(PVRST+)已经增强了802.1Q协议,支持在同一Trunk的链路中,阻断某些VLAN,同时开通某些VLAN。
可能有的厂家的设备,默认是开启单VLAN的快速生成树。在配置时,参看相关手册进行配置。