6、生成树原理与配置-学习笔记
6、生成树原理与配置6.1 生成树技术概述生成树解决的问题广播风暴如果交换网络中有环路则这个帧会被无限转发此时便会形成广播风暴网络中也会充斥着重复的数据帧MAC地址漂移交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的如果有环路多个端口可能收到同一个源MAC地址的数据帧出现在MAC地址表中同一个MAC地址在多个接口之间来回切换。STP生成树通过构造一棵树消除网络中的环路。运行STP算法判断网络中存在环路的地方并阻断冗余链路将环路网络修剪成无环路的树型网络从而避免数据帧在环路网络中无穷循环。交换机上运行的生成树协议会持续监控网络的拓扑结构当网络拓扑结构发生变化时生成树能感知到这些变化并且自动做出调整。生成树工作在二层网络中。6.2 STP的基本概念桥IDBridge IDBIDIEEE 802.1D标准中规定BID由16位的桥优先级Bridge Priority与桥MAC地址构成。每一台运行STP的交换机都拥有一个唯一的BID。BID桥优先级占据高16 bit其余的低48 bit是桥MAC地址。在STP网络中BID最小的设备会被选举为根桥。桥优先级是可以配置的取值范围是065535默认值为32768可以修改但是修改值必须为4096的倍数。根桥Root BridgeSTP的主要作用之一是在整个交换网络中计算出一棵无环的“树”STP树。STP开始工作后会在交换网络中选举一个根桥根桥是生成树进行拓扑计算的重要“参考点”是STP计算得出的无环拓扑的“树根”。在STP网络中桥ID最小的设备会被选举为根桥。在BID的比较过程中首先比较桥优先级优先级的值越小则越优先拥有最小优先级值的交换机会成为根桥如果优先级相等那么再比较MAC地址拥有最小MAC地址的交换机会成为根桥。开销Cost每一个激活了STP的端口都维护着一个Cost值端口的Cost主要用于计算根路径开销也就是到达根的开销。端口的缺省Cost除了与其速率、工作模式有关还与交换机使用的STP Cost计算方法有关。端口带宽越大则Cost值越小。用户也可以根据需要通过命令调整端口的Cost。缺省情况下华为交换机使用IEEE 802.1t标准来计算路径开销。开销计算方法根路径开销Root Path Cost在STP的拓扑计算过程中一个非常重要的环节就是“丈量”交换机某个端口到根桥的“成本”也即RPC。一台设备从某个端口到达根桥的RPC等于从根桥到该设备沿途所有入方向端口的Cost累加。端口IDPort IDPID运行STP的交换机使用端口ID来标识每个端口端口ID主要用于在特定场景下选举指定端口。端口ID由两部分构成的高4 bit是端口优先级低12 bit是端口编号。激活STP的端口会维护一个缺省的端口优先级在华为交换机上该值为128。用户可以根据实际需要通过命令修改该优先级。端口优先级取值范围是0到240步长为16即取值必须为16的整数倍。BPDUBridge Protocol Data Unit网桥协议数据单元BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。STP交换机之间会交互BPDU报文这些BPDU报文携带着一些重要信息正是基于这些信息STP才能够顺利工作。BPDU分为两种类型配置BPDUConfiguration BPDUTCN BPDUTopology Change Notification BPDU配置BPDU是STP进行拓扑计算的关键TCN BPDU只在网络拓扑发生变更时才会被触发。TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。BPDU报文格式字节字段描述2PID协议ID 对于STP而言该字段的值总为01PVI协议版本ID对于STP而言该字段的值总为01BPDU Type指示本BPDU的类型若值为0x00则表示本报文为配置BPDU若值为0x80则为TCN BPDU1Flags标志STP只使用了该字段的最高及最低两个比特位最低位是TCTopology Change拓扑变更标志最高位是TCATopology Change Acknowledgment拓扑变更确认标志8Root ID根网桥的桥ID4RPC根路径开销到达根桥的STP Cost8Bridge IDBPDU发送桥的ID2Port IDBPDU发送网桥的端口ID优先级端口号2Message Age消息寿命从根网桥发出BPDU之后的秒数每经过一个网桥都加1所以它本质上是到达根桥的跳数2Max Age最大寿命当一段时间未收到任何BPDU生存期到达最大寿命时网桥认为该端口连接的链路发生故障。默认20s2Hello Time根桥连续发送的BPDU之间的时间间隔默认2s2Forward Delay转发延迟在侦听和学习状态所停留的时间间隔默认15s6.3 STP的工作原理STP计算过程选举根桥STP交换机初始启动之后都会认为自己是根桥并在发送给其他交换机的BPDU中宣告自己为根桥。因此此时BPDU中的根桥ID为各自设备的网桥ID。当交换机收到网络中其他设备发送来的BPDU后会比较BPDU中的根桥ID和自己的BID。交换机不断交互BPDU同时对BID进行比较最终选举一台BID最小的交换机作为根桥其他的则为非根桥。根桥的角色可抢占。当有更优的BID的交换机加入网络时网络会重新进行STP计算选出新的根桥。每台非根桥选举一个根端口交换机有多个端口接入网络各个端口都会收到BPDU报文报文中会携带“Root ID、RPC、BID、PID”等关键字段端口会针对这些字段进行比较。首先比较根路径开销RPCSTP协议把根路径开销作为确定根端口的重要依据。RPC值越小越优选因此交换机会选RPC最小的端口作为根端口。当RPC相同时比较上行交换机的BID即比较交换机各个端口收到的BPDU中的BID值越小越优选因此交换机会选上行设备BID最小的端口作为根端口。当上行交换机BID相同时比较上行交换机的PID即比较交换机各个端口收到的BPDU中的PID值越小越优先因此交换机会选上行设备PID最小的端口作为根端口。当上行交换机的PID相同时则比较本地交换机的PID即比较本端交换机各个端口各自的PID值越小越优先因此交换机会选端口PID最小的端口作为根端口。在每条链路上选举一个指定端口指定端口也是通过比较RPC来确定的选择RPC最小的作为指定端口。若RPC相等则比较链路两端交换机的BID值越小越优选因此交换机会选BID最小的交换机的端口作为指定端口。若BID相等则比较链路两端端口的PID值越小越优选因此交换机会选PID最小的交换机的端口作为指定端口。非指定端口被堵塞一台交换机上既不是根端口又不是指定端口的端口被称为非指定端口。STP会对这些非指定端口进行逻辑阻塞即这些端口不能转发由终端计算机产生并发送的帧用户数据帧。STP操作的最后一步是阻塞网络中的非指定端口。这一步完成后网络中的二层环路就此消除。STP端口状态状态名称状态描述禁用Disable该端口不能收发BPDU也不能收发业务数据帧例如端口为down阻塞Blocking该端口被STP阻塞。处于阻塞状态的端口不能发送BPDU但是会持续侦听BPDU而且不能收发业务数据帧也不会进行MAC地址学习侦听Listening当端口处于该状态时表明STP初步认定该端口为根端口或指定端口但端口依然处于STP计算的过程中此时端口可以收发BPDU但是不能收发业务数据帧也不会进行MAC地址学习学习Learning当端口处于该状态时会侦听业务数据帧但是不能转发业务数据帧并且在收到业务数据帧后进行MAC地址学习转发Forwarding处于该状态的端口可以正常地收发业务数据帧也会进行BPDU处理。端口的角色需是根端口或指定端口才能进入转发状态拓扑变化根桥故障根桥发生故障停止发送BPDU报文。非根桥等待Max Age计时器20s超时导致已经收到的BPDU报文失效又接收不到根桥发送的新的BPDU报文从而得知上游出现故障。非根桥会互相发送配置BPDU重新选举新的根桥。经过重新选举后非根桥的端口经过两个Forward Delay15s时间恢复转发状态。非根桥会在BPDU老化之后开始根桥的重新选举。根桥故障会导致50s左右的恢复时间。物理链路故障当交换机网络稳定时检测到根端口的链路发生故障则其备用端口会经过两倍的Forward Delay15s时间进入转发状态。非物理链路故障在稳定的STP网络非根桥会定期收到来自根桥的BPDU报文。若根桥与其中一个非根桥之间的链路发生了某种故障非物理故障因此该非根桥一直收不到来自根桥的BPDU报文Max Age计时器缺省: 20s就会超时从而导致已经收到的BPDU报文失效。此时非根桥非根桥会认为根桥失效并且认为自己是根桥从而发送自己的配置BPDU给其他非根桥通知其他非根桥自己是新的根桥。其他非根桥收到与根桥有链路故障的非根桥发来的非最优的BPDU会将从根桥收到的最优的BPDU转发给该非根桥。因此该非根桥发现其余非根桥发来的BPDU更优就放弃宣称自己是根桥并重新确定端口角色。非物理链路故障会导致50s左右的恢复时间等于Max Age加上2倍的Forward Delay收敛时间。拓扑改变导致MAC地址表错误非根桥交换机感知到网络拓扑发生变化后会不间断地向其他非根桥交换机发送TCN BPDU报文。其他非根桥交换机收到发来的TCN BPDU报文后会把配置BPDU报文中的Flags的TCA位设置1然后发送给非根桥交换机告知停止发送TCN BPDU报文。非根桥交换机向根桥转发TCN BPDU报文。根桥交换机把配置BPDU报文中的Flags的TC位设置为1后发送通知下游设备把MAC地址表项的老化时间由默认的300s修改为Forward Delay的时间默认为15s。最多等待15s之后非根桥交换机中的错误MAC地址表项会被自动清除。此后非根桥交换机就能重新开始MAC表项的学习及转发操作。6.4 生成树进阶STP不足之处网络拓扑收敛慢影响用户通信质量。RSTPRSTP的状态规范根据端口是否转发用户流量和学习MAC地址把原来的5种状态缩减为3种。Discarding丢弃状态功能端口既不转发用户流量也不学习 MAC 地址。来源整合了 STP 中的Disabled、Blocking、Listening三种状态因为它们在用户流量处理上行为一致。典型场景备用链路、环路阻断端口、被管理员关闭的端口。Learning学习状态功能端口不转发用户流量但会学习 MAC 地址并更新 MAC 表。意义为进入转发状态做准备确保转发时已具备必要的转发表信息。典型场景端口刚被激活或拓扑变化后进入学习阶段以减少广播风暴。Forwarding转发状态功能端口既转发用户流量又学习 MAC 地址。意义处于网络的活动拓扑中正常参与数据转发。典型场景根端口、指定端口在稳定拓扑下的工作状态。RSTP引入了新的端口角色-替代端口和备份端口其中替代端口的引入使得交换机在根端口失效时能够立即获得新的路径到达根桥。备份端口作为指定端口的备份帮助链路上的网桥快速获得到根桥的备份路径。VBST基于VLAN的生成树生成树的形成是基于VLAN的不同VLAN间可形成相互独立的生成树不同VLAN内的流量沿着各自的生成树转发进而可实现流量的负载分担。MSTP多生成树MSTP兼容STP和RSTP既可以快速收敛又提供了数据转发的多个冗余路径在数据转发过程中实现VLAN数据的负载均衡。MSTP把一个交换网络划分成多个域每个域内形成多棵生成树生成树之间彼此独立。每棵生成树叫做MSTIMultiple Spanning Tree Instance多生成树实例。所谓生成树实例就是多个VLAN的集合所对应的生成树。通过将多个VLAN捆绑到一个实例可以节省通信开销和资源占用率。MSTP各个实例拓扑的计算相互独立在这些实例上可以实现负载均衡。可以把多个相同拓扑结构的VLAN映射到一个实例里这些VLAN在端口上的转发状态取决于端口在对应实例的状态。