STP —- 生成树协议
冗余
- 线路备份
- 设备备份
- 网关备份
- UPS备份
交换机出现二层环路带来的问题:
- 广播风暴,广播帧在二层环路中将形成顺时针和逆时针转动的两层环路,无限循环,最终导致设备宕机,网络瘫痪。
- MAC地址表翻摆
- 多帧复制
STP —- 主要目的 —- 破除二层环路
在二层交换网络中,逻辑的阻塞部分接口,实现从根交换机到所有节点唯一的路径,且为最佳路径。生成了一个没有环路的拓扑。当最佳路径故障时,个别阻塞接口打开,形成备份路径。
STP —- 标准的STP —- 802.1D标准。IEEE组织颁布的标准,共有协议
PVST,PVST+ —- 思科私有STP生成树协议
RSTP —- 快速生成树 —- 802.1W标准
MSTP —- 多生成树协议 —- 802.1S标准
802.1D生成树协议
STP的数据包叫做BPDU。B —- 桥,指网桥;PUD —- 协议数据单元
BPDU —- 分为两种:一种叫配置BPDU,另一种叫做TCN BPDU。
配置BPDU
协议版本 —- 802.1D —- 0
—- 802.1W —- RSTP —- 2
—- 802.1S —- MSTP —- 3
标志 —- 在802.1D中8位标志只使用了最高位(TCA)和最低位(TC)。中间6位,在802.1D中保留,在802.1W和802.1S中使用。
根网桥ID:为根的交换机所具有的网桥ID。(802.1D协议在整个交换网络中将生成一颗生成树,即只有一个根网桥。)
网桥ID(BID):所有的交换都具有网桥ID来进行区分标识
BID —- 由两部分组成 —- 前2个字节:优先级
—- 后6个字节:为交换机的MAC地址
根网桥开销 —- RPC —- 表示转发BPDU的网桥距离根网桥的开销大小
接口ID —- 用来表示和区分发送该BPDU接口。
2字节 —- 两部分组成 —- 前4位:优先级
—- 后12位:接口编号
MAX—HOP —- 默认20
转发延迟 —- 指的是接口在状态切换时间。默认时间为15s。
TCN BPDU
仅具有配置BPDU中的前三个三参数
协议ID、协议版本、BPDU类型
配置BPDU
只有根网桥可以发送,在交换网络的初始状态,所有交换机认为被本地为根网桥,进行BPDU的发送,使得网络中所有交换机均接受到其他交换机的BPDU,之后将基于其中的数据参数进行对比,选举根网桥。之后,所有非根网桥不再发送配置BPDU,而不是仅接收和转发根网桥的BPDU;配置BPDU的发送周期为2S,MAX AGE 20S。
TCN BPDU
本地链路故障后,STP重新收敛为了快速收敛全网所有交换机的MAC地址表。将向所STP接口发送TCN BPDU。邻居交换机收到TCN后,先回复一个TCA标记位置1的配置BPDU,用于可靠传输消息;之后,将TCN BPDU逐级上报到根网桥处,由根网桥回复一个配置BPDU(将TC标记位置1),该BPDU将逐级转发至整个网络的所有交换机上,所以交换机收到TC标记位置1的PBDU后,将会把自己MAC地址表300S的老化时间临时修改为15S(和转发延时时间一样),用于加快失效MAC地址信息记录的刷新。
STP生成树选举
- 根网桥(RB)
- 根端口(RP)
- 指定端口(DP)
- 非指定端口(NDP)
选根网桥 —- 一颗树且只有一个根(802.1D整个交换网络只有一颗树)
选举方法:
比较BPDU中的BID=优先级 +MAC地址
优先级
(0-6553,默认值32768,优先级数值越低越优(实际取值范围:0-61440)(修改优先级必须按照4096的倍数来修改)
优先级 —- 2个字节 —- 实际优先级仅使用前4位,剩下12位为扩展系统ID(在802.1S中使用,用来代表VID)
先比较优先级,优先级越小越优,若优先级相同,则比较MAC地址,MAC地址越小越优。
根端口 —- 在每台非根交换机上,有且只有一个:离根最近的接口,用来接收来自根网桥的BPDU。
华为设备默认支持以上三种开销值计算标准,默认使用的是IEEE 802.1t标准。
- 先比较接口收到根网桥发出的BPDU的开销值。
- 比较该接口对端设备(上级设备)BID,BID小的设备所对应的端口为根端口
- 若对端BDI相同,则比较对端的PID
PID:优先级+接口编号
优先级占前4位,取值范围0-240,默认是128。(修改优先级必须按照16的倍数来修改)
先比较优先级,优先级越小越优;如果优先级相同,则比较接口编号,接口编号越小越优。 - 若对端的PID也相同,则比较本地的PID,小的位根端口。
指定端口 —- 在每一条存在协议的链路上,有且仅有一个,用来转发来自根网桥的BPDU,不能阻塞。
(根据网桥所有接口一定是指定端口)
- 先比较接口发出BPDU时的COST值,小的为指定端口
- 若开销值相同,则比较本地BID,BID小的交换机上的接口为指定端口
- 若本地的BID相同,则比较接口PID,PID小的接口为指定端口
- 如果PID相同,则直接将该接口堵塞。
剩下没有分配角色的接口均为非指定端口,非指定端口需要进行阻塞。
STP接口的状态
- 禁用 —- 1. 接口物理关闭;2. 接口禁用生成树
- 阻塞 —- 接口激活之后进入该状态。20S时间内没有收到BPDU则进入下一个状态
- 侦听 —- 接口可以正常收发BPDU, 但是不能接收和转发业务数据 —- 15S
(不允许转发业务数据是为了避免选举未完成时产生临时的环路)
如果选举出的角色为非指定端口,则将直接退回到阻塞状态。只有根端口和指定端口在侦听状态结束后进入下一个状态。 - 学习 —- 可以侦听业务数据,但不会进行转发。
学习阶段是为了尽可能的减少未知单播帧的泛洪,导致资源浪费。 - 转发 —- 可以正常接收和转发数据帧和BPDU。
所以,802.1D生成树的收敛时间为:30S和50S
首次收敛:50S
结构变化:
- 根网桥故障:50S
- 直连链路故障:30S
- 非直连发生故障:50S
802.1D生成树的配置
display stp brief —- 查看stp接口角色和状态信息
stp priority 28672 —- 修改BID中优先级
stp root primary —- 将该网桥设置为根网桥,其实实质是将该网桥的优先级修改为0
stp root secondary —- 将该网桥设置为备份根网桥,其实实质是将该网桥的优先级改为4096.
802.1D的缺点:
- 收敛慢
- 链路利用率低
PVST —- 基于VLAN的生成树
PVST只是提供了链路利用率低的一个解决思路,但他本身也并不彻底,因为一个VLAN一棵树,如果整个网路中VLAN数量过大时,将导致BPDU泛洪的流量过大。
RSTP —- 快速生成树
主要解决的是802.1D生成树收敛速度慢的问题,但是依然是一个网络一颗树,并且可以向下兼容802.1D协议
改进点1:变更了端口角色
802.1D:根端口,指定端口,非指定端口
802.1W:根端口,指定端口,替代(Alternate)端口,备份(backup)端口
替代端口:用来替代根端口,相当于是根端口的备份
由于学到其他网桥发送的BPDU报文而阻塞的端口,他提供了从指定网桥到根的另一条路径。当根端口失效时,则最优的替代端口将立即成为根端口,并进入转发状态。
备份端口:相当于指定端口的备份。
由于学到自己发送的配置BPDU而阻塞的端口,他作为指定端口的备份,当指定端口失效时,将直接成为指定端口,并直接进入转发状态。
改进点2:修改了接口状态类型
802.1D:5种 —- 禁用,阻塞,侦听,学习,转发
802.1W:3种 —- DISCARDING(丢弃),学习,转发
丢弃 —- 不转发用户流量也不学习MAC地址
学习 —- 不转发用户流量,但是可以学习MAC地址
转发 —- 既可以转发用户流量,也可以学习MAC地址
改进点3:对配置BPDU里面的报文进行了修改
RST BPDU —- 就是RSTP协议使用的配置BPDU
P/A机制
RSTP的P/A机制主要来保证一个指定接口得以从丢弃状态快速进入转发状态,从而加速了生成树的收敛。
在P/A机制中,存在一个“同步状态”,实际上就是将其他接口全部进行堵塞,防止环路的产生。
改进点4: 对配置BPDU的处理
- 在拓扑收敛完成后:
802.1D:只有根网桥每隔2s发送一个配置BPDU,其他非根网桥只有收敛到根网桥的BPDU后才会进行转发
802.1W:拓扑稳定后,非根网桥将资助的每隔2s发送根的BPDU。 - 更短的BPDU超时时间
802.1D:需要等待20S(MAX AGE)
802.1W:仅需要等待三个周期 —- 6s —- 超时时间
改进点5: 快速收敛机制
3. 根端口和指定端口的快速切换 —- 利用了替代端口和备份端口这两个角色
4. 可以设置边缘接口 —- 指的是交换机设备连接终端的接口,因为连接终端设备不会出现环路,所以,我们可以手工将这些端口设置为边缘接口,边缘接口将直接进入转发状态。
注意:边缘接口可能会因为人为失误,接入到交换设备上,就有可能出现环路,所以,边缘接口存在保护机制,即当一个边缘接口收到了交换设备发送的BPDU时,该接口会立即将自己切换为一个普通接口。
3. P/A机制
改进点6: 拓扑变更机制优化
instance —- 实例 —- 就是一个或多个VLAN的集合
我们可以使用instance ID来区分不同的实例,一个实例创建一棵树。
instance ID —- 由12位2进制构成,0-4094
instance0默认存在,且所有LAN都默认属于instance0
MSTP中存在一个域(region)的概念 ,相当于OSPF中区域(area)的概念,我们可以将一个较大的交换网络划分为多个MST域,当然,如果网络规模较小,也可以划分到一个MST域当中
交换机处于同一个域的匹配条件
- 相同的域名(region)
- 相同的修订级别(revision)
- 相同的VLAN和instance的映射关系
需求:交换网络存在VLAN1 – VLAN10,要求,VLAN1 – VLAN5使用SW1为根创建生成树,VLAN6 – VLAN10以SW2为根创建生成树。
链路聚合 —- 应用在以太网中的技术
将N条物理链路聚合为一条逻辑链路。我们把逻辑链路称为聚合链路(erh-truck)将其中每一条物理链路称为成员链路。我们将聚合后得到的逻辑端口称为聚合端口(eth-trunk端口),聚合端口中的物理接口称为成员端口。
要求:
- 通道的对端必须是同一台设备
- 成员端口应该具有相同的速率,双工模式,相同的类型,相同的VLAN允许列表
VRRP —- 虚拟路由冗余
目前主要使用两个版本,一个VRRP V2 —- 主要应用在IPV4邻域
VRRP V3 —- 主要应用在IPV6邻域
VRRP存在一个组的概念,可以将需要协同的路由器放入同一个组,配置相同的VRID(8位二进制构成)(区分不同的组)。一个组中存在一个虚拟的网关路由器,这个网关需要配置一个虚拟IP地址(这个地址是需要指定的,而且必须和真实网关IP在同一个广播域),并且会产生一个虚拟的MAC地址 —- 0000 – 5e00 – 01XX(XX就是VRID)
一旦接口配置激活了VRRP,开始时,所有网关接口都将发送VRRP协议报文,进行主从选举。(先比较优先级(默认优先级为100,取值范围0-255)优先级大的为主,优先级相同则比较IP地址,IP地址大的为主)。选举结束,之后仅master周期性的发送vrrp协议报文(周期为1s)backup网关仅侦听,如果master3.6s未发协议报文,则重新选举。