导图社区 生成树协议
网络基础知识(STP/RSTP/MSTP)生成树协议的学习内容。
编辑于2020-08-15 16:09:14生成树协议
背景
以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路,但是这也带来了网络环路的问题。
mac地址表震荡
广播风暴
重复数据帧
作用
消除环路
链路备份
STP
BPDU报文
STP采用的协议报文是BPDU(Bridge Protocol Data Unit),也称为配置消息。
STP通过在设备间传递BPDU报文来确定网络的拓扑结构,并完成生成树的计算。BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00。
•配置BPDU(Configuration BPDU)
用来进行生成树计算和维护生成树拓扑的报文。
产生条件
•只要端口使能STP,则配置BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。
•当根端口收到配置BPDU时,如果优先级比自己的配置BPDU高,则会根据收到的配置BPDU中携带的信息更新自己STP端口存储的配置BPDU信息并从指定接口向下游发送,否则会丢弃该配置BPDU。
•当指定端口收到比自己差的配置BPDU时,会立刻向下游设备发送自己的BPDU。
报文格式

•Root Identifier:当前根桥的BID。
•Root Path Cost:根路径开销。
路径开销(Path Cost)是一个端口变量,是STP协议用于选择链路的参考值。STP协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树形网络结构。根路径开销就是某端口到根桥所经过的各个桥上的各端口路径开销的累加值。
•Bridge Identifier:本交换设备的BID。
•Port Identifier:发送该BPDU的端口ID。
PID由两部分构成的,高4位是端口优先级,低12位是端口号。
•TCN BPDU(Topology Change Notification BPDU)
拓扑变化通知BPDU,是在网络拓扑发生变化时,用来通知相关设备的报文。
产生条件
•端口状态变为Forwarding状态。
•指定端口收到TCN BPDU,复制TCN BPDU并发往根桥。
报文格式
TCN BPDU的结构与配置BPDU基本相同
Payload部分只有Protocol Identifier(协议号)、Protocol Version Identifier(协议版本)和BPDU Type(BPDU类型)。类型字段是固定值0x80,长度只有4个字节。
STP拓扑
根桥(Root Bridge)
对于一个STP网络,根桥就是网桥ID最小的桥,在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。
根端口(Root Port)
根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定。很显然,在一个运行STP协议的设备上根端口有且只有一个,根桥上没有根端口。
指定桥(Designated Bridge)与指定端口(Designated Port)
指定桥 对于一台设备而言:与本机直接相连并且负责向本机转发配置消息的设备 对于一个局域网而言:负责向本网段转发配置消息的设备 指定端口 对于一台设备而言:指定桥向本机转发配置消息的端口 对于一个局域网而言:指定桥向本网段转发配置消息的端口
端口角色
根端口
指定端口
端口状态
Disabled
端口状态为Down,不处理BPDU报文,也不转发用户流量。
Listening
过渡状态,开始生成树计算,端口可以接收和发送BPDU,但不转发用户流量。
Learning
过渡状态,建立无环的MAC地址转发表,不转发用户流量。
Forwarding
端口可以接收和发送BPDU,也转发用户流量。只有根端口或指定端口才能进入Forwarding状态。
Blocking
端口仅仅接收并处理BPDU,不转发用户流量。
STP端口状态迁移图
STP根桥、根端口和指定端口的选举原则
根桥ID
每个STP网络中有且仅有一个根。
用来选举根桥。运行STP协议的设备之间根桥ID字段选择最小的BID。
根路径开销
发送配置BPDU的端口到根桥的距离,决定了到根桥的路径开销。
用来在非根桥上选择根端口。在根桥上,每个端口到根桥的根路径开销都是0。
发送设备BID
发送配置BPDU的设备的BID。
当一台运行STP协议的设备要在两个以上根路径开销相等的端口之中选择根端口时,通过STP协议计算,将选择接收到的配置消息中发送者BID较小的那个端口。
发送端口PID
发出配置BPDU的端口的PID。
用于在根路径开销相同的情况下,阻塞PID值较大的端口。
定时器
•Hello Time
运行STP协议的设备发送配置BPDU的时间间隔。设备每隔Hello Time时间会向周围的设备发送BPDU报文,以确认链路是否存在故障。 当网络拓扑稳定之后,该计时器的修改只有在根桥修改后才有效。新的根桥会在发出的BPDU报文中填充相应的字段以向其他非根桥传递该计时器修改的信息。但当拓扑变化之后,TCN BPDU的发送不受这个计时器的管理。
•Forward Delay
设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。 Forward Delay Timer指一个端口处于Listening和Learning状态的各自持续时间,默认是15秒。即Listening状态持续15秒,随后Learning状态再持续15秒。这两个状态下的端口均不转发用户流量,这正是STP用于避免临时环路的关键。
•Max Age
端口的BPDU报文老化时间,可在根桥上通过命令人为改动老化时间。 Max Age通过配置BPDU报文的传输,可保证Max Age在整网中一致。运行STP协议的网络中非根桥设备收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较: ◾如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文。 ◾如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。
STP拓扑计算方法
1.初始状态
2.选择根桥
3.选择根端口和指定端口
RSTP
端口角色
根端口
指定端口
Alternate端口
Backup端口

端口状态
Discarding:端口既不转发用户流量也不学习MAC地址;
Learning:端口不转发用户流量但是学习MAC地址;
Forwarding:端口既转发用户流量又学习MAC地址。

RSTP快速收敛
Proposal/Agreement机制
根端口快速切换机制
边缘端口
RSTP的保护功能
BPDU保护
在RSTP网络中,正常情况下,边缘端口不会收到RST BPDU,启用了BPDU保护功能后,如果有人伪造RST BPDU恶意攻击交换机,边缘端口将被Error-Down。
根保护
由于维护人员的错误配置或网络中的恶意攻击,网络中合法根桥有可能会收到优先级更高的RST BPDU,使得合法根桥失去根地位,从而引起网络拓扑结构的错误变动。这种不合法的拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。
环路保护
在运行RSTP协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游交换设备的RST BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。
防TC-BPDU攻击
交换设备在接收到TC BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多TC BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。 启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护设备的目的。
MSTP
目的
形成多棵无环路的树,解决广播风暴并实现冗余备份。
多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。
STP/RSTP的缺陷
RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发。
MSTP基本概念
MST域(MST Region)
MST域是多生成树域(Multiple Spanning Tree Region),由交换网络中的多台交换设备以及它们之间的网段所构成。同一个MST域的设备具有下列特点:•都启动了MSTP。 •具有相同的域名。 •具有相同的VLAN到生成树实例映射配置。 •具有相同的MSTP修订级别配置。 一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
VLAN映射表
VLAN映射表是MST域的属性,它描述了VLAN和MSTI之间的映射关系。
CST
公共生成树CST(Common Spanning Tree)是连接交换网络内所有MST域的一棵生成树。 如果把每个MST域看作是一个节点,CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树。
IST
内部生成树IST(Internal Spanning Tree)是各MST域内的一棵生成树。 IST是一个特殊的MSTI,MSTI的ID为0,通常称为MSTI0。 IST是CIST在MST域中的一个片段。
SST
构成单生成树SST(Single Spanning Tree)有两种情况: •运行STP或RSTP的交换设备只能属于一个生成树。 •MST域中只有一个交换设备,这个交换设备构成单生成树。
CIST
公共和内部生成树CIST(Common and Internal Spanning Tree)是通过STP或RSTP协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
域根
域根(Regional Root)分为IST域根和MSTI域根。
总根
总根是CIST(Common and Internal Spanning Tree)的根桥。
主桥
主桥(Master Bridge)也就是IST Master,它是域内距离总根最近的交换设备。 如果总根在MST域中,则总根为该域的主桥。
端口角色
根端口
在非根桥上,离根桥最近的端口是本交换设备的根端口。根交换设备没有根端口。 根端口负责向树根方向转发数据。
指定端口
对一台交换设备而言,它的指定端口是向下游交换设备转发BPDU报文的端口。
Alternate端口
•从配置BPDU报文发送角度来看,Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。 •从用户流量角度来看,Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。
Backup端口
•从配置BPDU报文发送角度来看,Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。 •从用户流量角度来看,Backup端口作为指定端口的备份,提供了另外一条从根节点到叶节点的备份通路。
Master端口
Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口。 Master端口是域中的报文去往总根的必经之路。 Master端口是特殊域边缘端口,Master端口在CIST上的角色是Root Port,在其它各实例上的角色都是Master端口。
域边缘端口
域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口。
边缘端口
如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。 边缘端口一般与用户终端设备直接连接。 端口使能MSTP功能后,会默认启用边缘端口自动探测功能,当端口在(2 × Hello Timer + 1)秒的时间内收不到BPDU报文,自动将端口设置为边缘端口,否则设置为非边缘端口。