【IT168 专稿】要保证企业的网络中的关键应用可持续性,就需要对交换网络进行冗余设计,然而这将产生广播风暴、“网络环路”等问题,严重时,将导致整个网络瘫痪?于是,STP生成树解决办法出现了……
网络冗余设计与广播风暴的矛盾
广播风暴的克星:设计STP网络生成树
技术剖析:STP生成树初始化与收敛
案例分析:观察生成树收敛过程
实战剖析:STP生成树如何配置?
技术进化:RSTP快速生成树配置
STP建立一个根节点,称为根网桥,并构建了一种拓扑,在这种拓扑中,网络中每一个节点都只有一条路径可以到达,最终生成的树起源于根节点,不属于最短路径树的一部分冗余链路会被阻塞,因为这样的路径被阻塞了,所以实现一个无环路的拓扑是有可能的。在阻塞链路上收到数据帧将会被丢弃。
STP需要网络设备互相交换消息来检测桥接环路,交换机发送的用于构建无环路拓扑的消息称为网桥协议数据单元。阻塞端口会不断收到BPDU,以保证当活动路径或设备发生故障的时候,仍然可以计算出一棵新的生成树。BPDU将提供足够的信息,所有交换机利用此信息可以完成以下的工作:
n 选择一台单独的交换机作为生成树的根。
n 计算它自身到根交换机的最短路径。
n 对于每一个LAN网段,指定一台交换机作为最接近的交换机,称它为指定交换机,指定交换机处理所有从LAN到根交换机的通信。
n 每个非根交换机选择自身的一个端口作为根端口,它是到根交换机路径最短的接口。
n 在每个网段上选择属于生成树一部分的端口作为指定端口,非指定端口将被阻塞掉。
STP四步初始化原则
STP在建立无环路逻辑拓扑时候,STP必须遵守“STP 四步初始化原则”,即:
第1步:最低的根BID。
第2步:最低的路径开销到根桥。
第3步:最低的发送方BID。
第4步:更低的端口ID。
当一台网桥设备加电起动时,按照(Hello Time)时间间隔为2秒频率向所有端口发送BPDU,网桥通过以上4个步骤来确定每个端口得到最优先的BPDU。如果自己最优先,则发送个对方,否则停止发送,接受对方的BPDU。如果在20秒时间未能收到对方发来的优先级高的BPDU的话,则又开始重新发送BPDU来确认最优的BPDU。
2.生成树收敛的3个步骤
当交换机(网桥)全部加电时,所有的网桥全部向连接端口发送BPDU信息,然后立即进入STP无环路逻辑拓扑计算。生成树从拓扑初始化到收敛成一个无环路的拓扑结构,可以分成3个步骤。
第1步:选择根桥(Root Bridge),唯一的根桥被选举。
第2步:选择根端口(Root Ports),其他的网桥计算一系列的根端口。
第3步:选择指定端口(Designated ports),用于网段连接。
如图8-8所示,网桥启动时SW-1、SW-2和SW-3 3台交换机全部发送BPDU声明自己是网桥,网桥的优先级均为32768,此时开始比较MAC值。SW-2收到SW-3来的BID 32768.33-33-33-33-33-33,比自己的BID 32768.22-22-22-22-22-22高,认为自己是网桥,但同时也收到SW-1的BPDU的BID值为BID 32768.11-11-11-11-11-11比自己低,所以会认为SW-1为根桥,SW-3也经过同样的比较,认为SW-1为根桥。图8-9显示了根桥计算对比后的结果。
图8-8 根桥选举 图8-9 根桥选举结果
SW-2 BPDU Payload的Root BID值变化如下,Root BID从SW-1学来,写入到端口1/1上,Sender BID 为自己的桥BID(注意:Sender BID =Bridge ID)。表8-4为SW-2选择前与选择后的比较。
表8-4 SW-2如何选择根桥
BID项 | 原值(启动时) | 选择根桥后 |
Root BID | BID32768.22-22-22-22-22-22 | BID 32768.11-11-11-11-11-11 |
Sender BID | BID32768.22-22-22-22-22-22 | BID 32768.22-22-22-22-22-22 |
选择根桥完毕之后,非根桥交换机必须选择一个根端口,以便确定通信路径。一台网桥的根端口是离根桥最近的端口,这个“最近原则”是比较端口到根桥的最少路径开销,以太网的端口开销值参见前面的表8-1中的内容。图8-10显示了根端口的选举过程。
如图8-10所示,根端口的所有端口的Path Cost值全部为0,SW-1 和SW-2 为非根桥,它们必须选择一个根端口,SW-2 收到从根桥来的Cost值为0,加上本身自己的Cost值为19,获得1/1端口的Cost为19,而SW-2的1/2端口从SW-3收到的Cost的值为19,加上自己本身的Cost值19,总共为38,所以SW的1/1口为根桥。同理,SW-3的1/1端口为根端口。
每一个以太网网段连接的端口必须有一个指定端口,每个以太网网段中的端口比较根桥路径开销(Root Path Cost),最低值得为指定端口。
下面将说明一种特殊情况。在图8-11展示的网络环境中分为:网段1、网段2和网段3。
图8-10 根端口的选举过程 图8-11 指定端口的选择过程
SW-1的端口的根桥路径开销均为0,所有这两个段的指定端口为SW-1的1/1和1/2;但是网段3中SW-2和SW-3之间相连的端口的根路径开销均为38,这是必须按照“STP 四步初始化原则”进行比较,最后根据BID的值来决定谁是指定端口。
网段3的SW-2和SW-3之间选择指定端口比较过程如表8-5所示。
表8-5 SW-2和SW-3之间选择指定端口比较
步 骤 | 执 行 内 容 | SW-2 | SW-3 | 结 果 |
1 | 最低的根BID | 32768.11-11-11-11-11-11 | 32768.11-11-11-11-11-11 | 相等,转下一步 |
2 | 最低的根路径开销 | 38 | 38 | 相等,转下一步 |
3 | 最低的发送方BID | 32768.22-22-22-22-22-22 | 32768.33-33-33-33-33-33 | SW-2的BID值低,所以SW-2的1/2为指定端口 |
4 | 最低的端口ID | - | - | - |
3.生成树端口状态
在启用Spanning-Tree的交换机,从“推举了根桥→指定端口→非指定端口来建立一棵无环路树→根端口→指定端口转发BPDU配置消息”这个过程结束,而非指定端口阻断网络流量。STP关闭端口到转发流量有5个过程,如下表8-6所示。
表8-6 交换机端口状态
状 态 | 功能与数据帧接收情况 |
转发(Forwarding) | 发送/接收用户数据;接受从其他接口转发来的数据帧;学习地址(BID的地址);不接受BPDU配置信息 |
学习(Learning) | 丢弃从端口收到的数据帧;丢弃从其他接口转发来的数据帧;学习地址(BID的地址);接受BPDU配置信息 |
监听(Listening) | 丢弃从端口收到的数据帧;丢弃从其他接口转发来的数据帧;不学习地址(BID的地址);接受BPDU配置信息 |
阻断(Blocking) | 丢弃从端口收到的数据帧;丢弃从其他接口转发来的数据帧;不学习地址(BID的地址);接受BPDU配置信息。 |
关闭(Disable) | 管理性关闭或线路中断;丢弃从其他接口转发来的数据帧;丢弃BPDU转发数据帧;不学习地址(BID的地址);不接受BPDU配置信息 |
在完全利用思科设备组成的交换网络中,可以存在7种端口状态(Cisco私有的PortFast和UplinkFast)。图8-12展示了各个端口状态迁移的过程。
图8-12 STP运算中端口的状态迁移图
端口状态迁移情况比较复杂。假设一个端口从Disable状态或新接入到网络中来,这时Disable状态转到Blocking状态,Blocking状态可以接受BPDU数据,在20秒的信息老化时间后,端口进入Listening。再经过15秒的BPDU数据比较,如果该端口接收到的BPDU数据为最优先的,则进入Learning状态。这时如果收到的BPDU数据还是没有比自己更优先的,则再等15秒的转发延迟,端口进行转发状态,整个过程需要50秒左右。
在上述的各个阶段中,如果端口收到比自己更优先的BPDU配置信息,则直接转入到Blocking状态。在实际应用中,将一台电脑插入到启动了STP功能的交换机上,交换上的端口指示灯为桔黄色,需要等到20+15+15=50秒,灯才转为正常,指示灯为绿色。这也是为什么将客户端接入交换机后,不能马上通信的真正原因。
4.生成树计时器
前面我们已经提到某些状态到另一种状态情况,这需要花费时间来判断最优的BPDU配置信息,STP定义了三中STP定时器,如表8-7所示。
表8-7 生成树三个计时器属性
定 时 器 | 功 能 描 述 | 默 认 值 |
Hello Time | 根桥发送BPDU配置信息的时间间隔 | 2秒 |
Foreword Delay | 监听和学习状态的转发延时 | 15秒 |
Max Age | BPDU配置信息在端口中存储的时限 | 20秒 |
Hello Time是根桥发送BPDU更新的时间间隔,默认为2秒;Forward Delay(转发延迟)是网桥在监听和学习状态时发生的,默认为15秒(监听到学习为15秒,学习到转发也是15秒);Max Age网桥存储BPDU的时间,时间为20秒,每2秒通过Hello Time来更新,一旦经过20秒时没有接收到Hello Time来的更新BPDU,网桥端口状态就要发生变化。
5.拓扑变化后的收敛
当非根桥检测到拓扑改变时,产生TCN BPDU给上一级网桥,上级网桥收到拓扑改变(TC),回复拓扑改变确认(TCA),继续向上传播TCN BPDU,一直传播到根桥,告诉根桥拓扑已经改变,根桥收到后,根桥传播到新的配置BPDU到整个网络,缩短其他根桥的MAC地址老换时间从300秒(300秒为交换机默认的MAC老化时间)到指定的转发延迟时间30秒。
TCN BPDU在以下3种情况发送:
n 当端口转入转发状态而且网桥至少有一个指定端口。
n 当一个端口从转发或学习状态到阻断状态时候。
n 当指定端口收到TCN BPDU转发给根桥时。
TCN BPDU的特性如下:
n TCN BPDU仅从根端口发出,配置BPDU仅从指定端口发出。
n TCN BPDU发往根桥方向。
n TCN BPDU使用可靠机制发送给根桥,当一台网桥发送TCN BPDU,持续发送按照Hello Time间隔发送BDPU,直到上级网桥确认收到带有拓扑确认标识(TCA)的配置BPDU。
n TCN BPDU只有在拓扑改变时才发送。