STPapi
本篇的基本内容:生成树协议包括最初的STP(Spanning Tree Protocol,生成树协议),可以快速收敛的RSTP(Rapid Spanning Tree Protocol,快速生成树协议),以及适应多VLAN复杂环境的MSTP(Multiple Spanning Tree Protocol,多生成树协议)。网络
STP介绍:局域网中的物理环境一般有两种产生缘由,一种是基于可靠性的考虑,为交换机之间提供冗余链接;另外一种是因为错误的网络设置致使环路的产生。若是不对网络拓扑加以管理,以上两种状况均会致使严重的后果,如广播风暴和MAC地址学习错误等。ide
STP在IEEE制定的802.1D标准中定义:用于在局域网中消除数据链路层环路。STP能够经过计算动态地阻断冗余链路,而当活动链路发生故障时,STP又能够激活冗余链路,恢复网络的连通,避免网络中断。学习
STP消除链路层环路的基本思想:将网络拓扑修建为树形拓扑,而树形拓扑是不存在环路的。(注意)spa
运行STP设备之间交互一些信息,而后经过计算实现拓扑的收敛,具体内容以下:orm
(1) 运行STP的设备依据必定的准则选举一个树根节点做为网络中的根桥,其余节点为非树根节点。ip
(2) 每个非树根节点,会选择最优的路径和根相连,非树根节点上位于最优路径的端口,为该节点的根端口。同步
(3) 若是网络中存在冗余链路,则阻塞冗余链路。it
每个非树根节点都进行一样的计算,最终网络中任何两台设备之间都只有一条路径可达,从而造成一颗无环的树。io
当拓扑发生变化时,节点从新进行计算,收敛为新的树形拓扑。
STP基本概念
一、 桥和端口的角色
STP中有两种特殊的网桥:根桥(Root Bridge)和指定桥(Designate Bridge)。根桥是整个生成树的根节点,由全部网桥中优先级最高的桥担任。指定桥是负责一个Physical Segment(物理段)上数据转发任务的桥,由这个Physical Segment上优先级最高的担任。
网桥上的端口有不一样的角色,包括根端口(Root port)、指定端口(Designate Port)、和候补端口(Alternate port)。
根端口指定网桥上距离根最近的端口。根桥没有根端口,每个非根桥有且仅有一个根端口
指定端口指Physical Segment上属于指定桥的端口。根桥是全部网桥中优先级最高的,它在其所链接的全部Physical Segment上都是指定桥,因此一般状况下根桥的全部端口都是指定端口。
Alternate端口指既不是根端口也不是指定端口的端口,它用来为根端口或指定端口作备份,从Alternate端口出发到达根桥的路径,是网桥到达根桥的备用路径,即最终须要阻塞的路径。
网络处于稳定状态时,根端口和指定端口处于转发状态,Alternate端口处于阻塞状态,阻塞Alternate端口,就消除了网络中的环路。
桥ID
STP中每个网桥都具备一个桥ID(Bridge ID),用于在网络中惟一标识一个桥。根桥选择的依据就是桥ID,具备最小桥ID的网桥即为网络中的根桥。
在进行桥ID的比较时,先比较桥优先级,优先级数值小者为优;在优先级相同的状况下,在比较MAC地址,MAC地址小者为优。当网桥没有哦配置优先级时,使用默认优先级32768,此时,具备最小MAC地址的网桥即为网络中的根桥。
路径开销
非根桥须要肯定根端口,根端口的选择取决于端口到达根桥距离的远近,网桥上到达根桥距离最近的端口为根端口。衡量距离远近依据是路径开销(Path Cost)。路径开销用户衡量桥与桥之间路径的优劣。STP中每条链路都具备开销值,默认的链路开销值取决于所遵循的路径开销标准以及链路带宽。路径开销等于整个路径上所有链路开销的和。
BPDU
STP使用BPDU(Bridge Protocol Data Unit,桥协议数据单元)来交互协议信息,BPDU分两类
(1) 配置BPDU(Configuration BPDU):用来进行生成树计算和维护生成树拓扑的报文。
(2) TCNBPDU(Topology Change Notification BPDU):当拓扑结果改变时,用来通知相关设备网络拓扑结构发生变化的报文。
网桥之间经过交互配置BPDU来进行根桥的选举以及端口角色的肯定。配置BPDU基于二层组播方式发送,目的地址为01-80-C20-00-00-00。
配置BPDU由根桥从指定端口周期性发出,发送周期为Hello Time。非根桥从根端口接受配置BPDU,进行更新并从指定端口将其发送出去。网络中只有根桥会产生配置BPDU,非根桥只对配置BPDU进行中继,不会自行生成配置BPDU。没有运行STP协议的网桥将把配置BPDU看成普通数据帧转发。
网桥上的每一个端口都会保存本端口接收到的最优配置BPDU,端口保存的配置BODU信息老化时间为Max Age时间内配置BPDU信息没有获得更新时,端口将清除保存的配置BPDU信息。
配置BPDU包含目的MAC地址、源MAC地址、帧长、逻辑链路头以及载荷
STP计算过程
STP的计算过程主要包含两个任务:选举根桥和肯定端口角色。在实际计算过程当中,这两个任务是同步计算完成的。
进行STP计算时,网桥将各个端口收到的配置BPDU和本身的配置BPDU做比较,得出优先级最高的配置BPDU;网桥用优先级最高的配置BPDU更新自己的配置BPDU,用于选举根桥和肯定端口角色;网桥从指定端口发送新的配置BPDU。
比较配置BPDU时依据优先级向量最小者最优的原则。
根桥选举
在初始状态时,每个网桥都尚未收到其余网桥发送的配置BPDU,此时每一个网桥都认为本身是网络中的根桥,并将向外发送以本身为根桥的配置BPDU。同时也会收到对端网桥发送的配置BPDU。每个网桥都将自身认为的Root Bridge ID 和接收到的配置BPDU中的Root Bridge ID进行比较,选择Root Bridge ID较小的做为网络中的根桥。
肯定端口角色
端口角色的肯定方式分为根端口肯定、指定端口肯定和Alternate端口肯定的3个工做。
根端口的肯定须要比较RPC。当网桥从一个端口收到配置BPDU后首先获取其中的RPC,和接收端口的链路开销相加,获得此端口的RPC,每一个收到配置BPDU的端口都进行一样的计算,而后比较各端口的RPC,拥有最下RPC值的端口即为本网桥的根端口。
指定端口的肯定须要比较端口发送的配置BPDU和接收的配置BPDU,若是发送的配置BPDU优于接收到的配置BPDU,代表端口在本Physical Segment上拥有最优的配置BPDU则该端口为指定端口。
Alternate端口指该端口的配置BPDU在其所属Physical Segment上不是最优的,且端口不是根端口。
(注意:在华三设备上该协议是默认开启的因此本篇不附实验)