扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
基本含义
生成树是一个交换网络中检测交消除冗余链路以防止出现二层循环的一个协议。如果不运行STP,帧有可能会在网络中循环发送,流量极剧升高,最后使整个网络彻底瘫痪。STP最初是一个较慢的基于软件实现的一个桥接规范(IEEE802.1D),现在已经是一个相当成熟的协议了,可以在一个具有多VLAN、大量交换机、多厂商的复杂环境中很好的实施。
CatOS 6.x继续进行一些新的STP的开发,如多实例生成树(MISTP)、loop-guard、root-guards和 BPDU 到达时间检测等,在CatOS7.x版本中,支持新的一些标准化协议,如分享生成树(IEEE802.1S)和快速收敛生成树(IEEE802.1w)等。
运行机制
具有最低的桥ID(BID)的交换机每个VLAN的根桥(root bridge),BID由桥优先级和交换机的MAC地址组成。
最初,所有的交换出都将发出包括自己BID及到达自己的路径代价(path cost)在内的桥接协议数据单元(BPDUs),这样就可以检测出root bridge和到达root bridge的最小代价的路径,从root bridge发出的BPDUs中包含的附加设置将覆盖交换机的本地配置,这样整个网络就使用一个一致的时钟。
网络拓朴将按照下述步骤进行收敛:
在整个生成树域中选举出一个唯一的root bridge;
在每个非root bridge的交换机上选举出一个root端口(面向root bridge);
在每一段中选举出一个designated端口用于转发BPDU;
非designated端口切换到block状态。
在生成对中有两种BPDUs:用于配置的BPDUs和拓朴变化提示(TCN)BPDUs.
用于配置的BPDU流量
用于配置的BPDUs每隔一个hello间隔从Root Bridge的所有端口发到叶交换机上面,用于维护整个生成树的状态。在稳定状态,BPDU流量是单向的,Root端口和blocking端口仅接收用于配置的BPDUs,而指定端口只发送用于配置的BPDUs.
如果Root Bridge失效或所有连接到Root Bridge的链路都失效了,在Maxage计时器超时后重新进行选举。
拓朴变化提示(TCN)BPDUs流
拓朴变化提示BPDUs在检测到生成树的拓朴发生改变时由叶交换发到Root Bridge,Root端口只发送TCNs,而指定端口只接收TCNs.
TCN BPDU在发向Root Bridge中的每一步都被确认,这是一个可靠的机制,一旦到达Root Bridge,Root Bridge将通过一个将TCN标记设置为Maxage+Fwddely(缺省为35秒)的用于配置的BPDU向整个生成树域宣告这个拓朴变化的发生,使所有的交换机将它们的CAM老化计时器从5分钟(缺省的)修改为Fwddelay(缺省为15秒)所规定的时间间隔。
生成树模式
VLAN和生成树之间的关联有如下几种模式:
所有VLAN使用同一个生成树,称为Mono生成树,如IEEE802.1Q
每个VLAN一个生成树,或叫做分离生成树,如Cisco PVST。
几个VLAN一个生成树,或称为多生成树,如Cisco MISTP、IEEE802.1s等。
所有VLAN使用同一个生成树的模式只有一个活动的拓朴,无法进行负载均衡,一个STP blocked端口将对所有的VLAN均为Blocked状态,在所有的VLAN中都不转发数据。
每个VLAN一个生成树的模式提供负载均衡功能,但在VLAN数目增长是会消耗更多的CPU处理能力用于处理BPDU。在CatOS的发行公告中提供单个交换机中能支持的生成树个数的指导性意见,对于6000 SUP1的公式为:
端口数 + (Trunk数 * Trunk上的VLAN的数目) <4000
Cisco MISTP和新的802.1s标准是一个发展方向,例如可以只定方两个STP进程,将所有的VLAN映射到这个两生成树中,这个技术可以在启用负载均衡的情况下支持到数千个VLAN。
BPDU 格式
为了支持IEEE 802.1Q标准, Cisco将现有的STP实现扩展为以支持穿越802.1Q单生成树域,这样PVST+同时支持802.1Q的MST和Cisco的PVST,而不需要额外的命令或配置。另外, PVST+提供用于确认交换机之间的Trunking和VLAN IDs不会出现不一致的配置的验证机制。
运行PVST+协议有如下注意事项:
PVST+通过在802.1Q trunk链路上的称做通用生成树(CST)的协议来实现和802.1Q MST的互操作。CST永远运行在VLAN1上面,为了和其它厂商的设备实现互操作,VLAN1在链路上应该存活。CST BPDUs是透明传输的,不打标记,发送到IEEE标准桥组地址(MAC地址01-80-c2-00-00-00, DSAP 42, SSAP 42). 为了描述的完整性,一组BPDUs被并行地发送到VLAN1上的Cisco分享生成树的MAC地址
PVST+将PVST BPDUs以组播数据的形式穿越802.1Q VLAN域. Trunk上每个VLAN中Cisco's分享生成树BPDUs被发送到MAC 地址01-00-0c-cc-cc-cd (SNAP HDLC协议类型0x010b),Native VLAN上的BPDUs不做标记,其它所有VLAN中的BPDUs将打上相应的标记。
PVST+检查端口和VLAN的冲突,PVST+阻塞收到不一致的BPDU的端口以避免出现循环,也通过syslog信息提示检测到的任何错误配置。
PVST+在运行在ISL trunk上的PVST提供后向的兼容,ISL封装的同样通过IEEE MAC进行接收和发送,换句话说,每个BPDU的类型都是针对一个链路的,不存在转换的说法。
建议
所有的交换机在缺省状态下都是启用了STP的,就算在不存在二层循环的情况下仍然推荐使用。因为如下原因,Cisco建议启用STP:
如果出现了循环(包括插错了线、电缆有问题等), STP可以防止由于组播和广播所引起的网络破坏。
保护EtherChannel不中断。
绝大多数网络配置了STP,最大限度地提高网络的透明度,越透明就意味着越稳定。
避免双网卡的误操作或服务器启用了桥接所导致的严重后果;
许多协议(如PAgP、IGMP snooping和trunking)的软件都和STP紧密相关,所以不运行STP将引起一些不必要的麻烦。
不要改变计时器,这可能会影响网络的稳定性。在绝大多数网络布署中都没有修改计时器,因为虽然可以很方便地通过命令行进行修改,但很难周全地考虑修改后所引起的各个可能的变化。
在理想状态下,不应该上用户数据在管理VLAN上传送,特别是在老的Catalyst交换机处理器的尾部 下,最好将用户数据和管理VLAN相分离以避免STP出现问题,一个有问题的工作问可以使用超级引擎疲于处理广播包而无法处理BPDU。
不要设计过量的冗余,这会造成故障诊断的恶梦--太多的blocking端口将严重影响网络的稳定性。保持整个STP直径在七跳以内,条件允许的情况下,在设计中使用多层模块,减小交换域和,使用确定的blocked端口。
手工设计Root特性和Blocked端口,并在拓朴图上明确标注,STP的故障诊断往往从blocked端口开始,使Block端口从blocking状态切换到转发状态是诊断过程中的一个关键组成部分,选择分布层或核心层交换机做为Root/Secondary Root Bridge,因为这是整个网络中最为稳定的,使用最优化的第三层和HSRP来覆盖每二层数据转发路径,可以使用下述宏命令将交换机设置为Root或secondary root:
set spantree root
注意:这个宏命令将交换机的优先级设置为8192(缺省状态下)、当前root优先级减1(如果存在另一个root bridge)或当前root优先级(交换机Mac地址比当前Root Bridge小)。
在Trunk端口上清楚不需要的VLAN,(需要进行双向配置),这可以限制STP的范围并减轻NMP的处理负担, VTP的自动修剪不会将这些VLAN从STP计算中移除。从CatOS5.4开始,VLAN1同样可以从Trunk链路上修剪掉。
其它选项
Cisco还有一个叫做VLAN-Bridge的STP协议,它使用01-00-0c-cd-cd-ce的目标MAC地址,协议类型为0x010c.
当需要在VLAN间桥接不可路由的信息或使用一些无法和IEEE生成树无法协同工作的传统协议时这是一个相当有用的功能。如果VLAN间的桥接因为第二层被阻塞时,第三层的流量同样会出被阻塞掉,这是一个不希望发生的副作用,这时使用VLAN-bridge就可以创建一个独立于STP的单独的实例,提供一个单独的拓朴,这样就可以不会影响到第三层的IP流量。
Cisco建议在需要在如MSFC之类的路由器上VLAN之间做桥接时使用VLAN-bridge。
PortFast
PortFast用于在访问层端口上跳过正常的生成树操作,加快终端工作站接入到网络中的速度,在一些如IPX/SPX中,需要工作站一接入网络就立即转发数据以避免出现GNS的问题。
运行机制
当一台主机接入到网络时,PortFast跳过了STP正常的listening和learning状态,直接从blocking状态进入到转发状态,如果没有启用这个特性,STP在它认为端口可以进入转发状态前将抛弃所有的用户数据包,这会用到两个ForwardDelay计时器(在缺省情况下是30秒)。
PortFast模式也避免了端口状态改变发出STP TCN后需要众learning状态到forwarding状态的转变。STP PortFast在Catalyst 5000多层交换网络和Multicast CGMP中都相当重要,这些环境中的TCNs可能会引起CGMP CAM表超时。结果就会丢失在下一个IGMP报前的组播包,也会引起多层交换Cache的清空,并增加router CPU的负担。(对Catalyst 6000中的MLS实现没有影响)
建议
Cisco建议在所有接计算机端口上启用portfast,在所有接交换机或未使用的端口上禁用portfast.
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者