生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。
工作原理
生成树协议工作原理:任意一交换机中如果到达根网桥有两条或者两条以上的链路.生成树协议都根据算法仅仅保留一条,把其他切断,从而保证任意两个交换机之间只有一条单一的活动链路。因为这种生成的这种拓扑结构,很像是以根交换机为树干的树形结构.故为生成树协议。
简介
生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源.
生成树协议是基于Radia Perlman在DEC工作时发明的一种算法被纳入了IEEE 802.1d中, [1] 2001年IEEE组织推出了快速生成树协议(RSTP)在网络结构发生变化时其比STP更快的收敛网络,还引进了端口角色来完善了收敛机制,被纳入在IEEE 802.1w中。
工作过程
STP的工作过程如下:首先进行根网桥的选举,其依据是网桥优先级(bridge priority)和MAC地址组合生成的桥ID,桥ID最小的网桥将成为网络中的根桥(bridge root)。在此基础上,计算每个节点到根桥的距离,并由这些路径得到各冗余链路的代价,选择最小的成为通信路径(相应的端口状态变为forwarding),其它的就成为备份路径(相应的端口状态变为blocking)。STP生成过程中的通信任务由BPDU完成,这种数据包又分为包含配置信息的配置BPDU(其大小不超过35B)和包含拓扑变化信息的通知BPDU(其长度不超过4B)。
端口状态
STP端口状态 |
端口状态 | 端口能力 |
Disabled | 不收发任何报文 |
Blocking | 不接收或者转发数据,接收但不发送BPDU,不进行地址学习 |
Listening | 不接收或者转发数据,接收并发送BPDU,不进行地址学习 |
Learning | 不接收或者转发数据,接收并发送BPDU,开始进行地址学习 |
Forwarding | 接收或者转发数据,接收并发送BPDU,进行地址学习 |
协议术语
(1)网桥协议数据单元:BPDU(Bridge Protocol Data Unit)
BPDU是生成树协议交换机间通讯的数据单元,用于确定角色。
(2)网桥号:Bridge ID
交换机的标识号,它由优先级和MAC地址组成,优先级16位,MAC地址48位。
(3)根网桥:Root bridge
根网桥定义为网桥号最小的交换机,根网桥所有的端口都不会阻塞。
(4)根端口:Root port
非根网桥到根网桥累计路径花费最小的端口,负责本网桥与根网桥通讯的接口。
(5)指定网桥:Designated bridge
网络中到根网桥累计路径花费最小交换机,负责收发本网段数据。
(6)指定端口:Designated port
网络中到根网桥累计路径花费最小的交换机端口,根网桥每个端口都是指定端口。
(7)非指定端口:NonDesignated port
余下的端口是非指定端口,它们不参与数据的转发,也就是被阻塞的端口。
(根端口是从非根网桥选出,指定端口是网段中选出)。
生成树协议的状态:
生成树协议工作时,所有端口都要经过一个端口状态的建立过程。
生成树协议通过BPDU广播,确定各交换机及其端口的工作状态和角色,
交换机上的端口状态分别为:关闭、阻塞、侦听、学习和转发状态。
(1)关闭状态:Disabled 不收发任何报文,当接口空连接或人为关闭时处于关闭状态。
(2)阻塞状态:Blocking 在机器刚启动时,端口是阻塞状态(20秒),但接收BPDU信息。
(3)侦听状态:listening 不接收用户数据(15秒),收发BPDU,确定网桥及接口角色。
(4)学习状态:learning 不接收用户数据(15秒),收发BPDU,进行地址学习。
(5)转发状态:Forwarding 开始收发用户数据,继续收发BPDU和地址学习,维护STP。
算法
STP将一个环形网络生成无环拓朴的步骤:
选择根桥(Root Bridge)
选择根端口(Root Ports)
选择指定端口(Designated Ports)
选择根网桥的依据
先查看交换机优先级,优先选择优先级数值小的(默认32768,范围:1~65535)优先级高的可以忽略mac数值。【优先级可以通过配置修改】
然后查看交换机的Mac地址,选择数值小的
网桥ID(BID)=优先级+Mac
网桥ID是唯一的,交换机之间选择BID值最小的交换机作为网络中的根网桥
选择根网桥举例
根据网桥ID选择根网桥
选择根端口的依据
在非根网桥上选择一个到根网桥最近的端口作为根端口
选择根端口的依据是:
根路径成本最低
直连(上游)的网桥ID最小
端口(上游)ID最小
根路径成本
根路径成本(开销)-是网桥到根网桥的路径上所有链路的成本之和,10Gbps=1,1Gbps=2,100Mbps=19,10Mbps=100。
选择根端口举例
在非根桥上, 选择一个根端口(RP)
选择指定端口的依据
在每个网段上,选择1个指定端口
根桥上的端口全是指定端口
非根桥上的指定端口:
根路径成本最低
端口所在的网桥的ID值较小
端口ID值较小
选择指定端口举例
在每个网段选择1个指定端口(DP)
STP计算结果
经过STP计算,最终的逻辑结构为无环拓朴
STP举例
经过STP计算后的逻辑拓朴
BPDU(桥协议数据单元)
交换机之间使用BPDU来交换STP信息
BPDU
Bridge Protocol Data Unit -桥协议数据单元
使用组播发送BPDU,组播地址为:
01-80-c2-00-00-00
BPDU分为2种类型:
配置BPDU - 用于生成树计算
拓朴变更通告(TCN)BPDU - 用于通告网络拓朴的变化