生成树协议
企业网三层架构—》冗余----》线路冗余—》二层桥接环路
导致问题:
1、广播风暴
2、MAC地址表翻滚
3、同一数据帧的重复拷贝
4、以上3个条件最终导致设备工作过载,导致重启保护
生成树:在一个二层交换网络中,生成一棵树型结构,逻辑的阻塞部分接口,使得从根到所有的节点仅存在唯一的路径;当最佳路径故障时,自动打开部分阻塞端口,来实现线路备份的作用;
生成树在生成过程中,应该尽量的生成一棵星型结构,且最短路径树;
存在算法: 802.1D PVST PVST+(CISCO) RSTP(802.1w) MSTP(802.1S)
一、802.1D 一个交换网络内仅存在一棵生成树实例;
交换机间使用BPDU—桥协议数据单元 – 交换机间沟通互动收发的数据
配置BPDU—只有根网桥可以发送,在交换网络初始状态时,所有交换机均定义本地为根网桥,进行BPDU的发送;使得网络中所有交换机均收到其他设备的BPDU,之后基于数据中的参数进行比对,选举出根网桥;再所有非根网桥不再发送BPDU,而是仅接收和转发根网桥的BPDU;周期2s发送,hold time 20s;
TCN—拓扑变更消息(也是BPDU): 本地交换机链路故障后,STP重新收敛,为了快速刷新全网所有交换机的MAC表,将向本地所有STP接口发送TCN(标记位中的TCN位置1),邻居交换机收到TCN后,先标记为ACK位为回复,用于可靠传输消息;之后将TCN逐级转发到根网桥处,由根网桥回复TC消息来逐级回复到所有交换机;使所有交换机临时将MAC表的老换时间修改为15s(默认的,转发延时)
STP相关概念:
根桥
树形网络结构必须有树根,于是STP/RSTP引入了根桥(Root Bridge)概念。
对于一个STP/RSTP网络,根桥有且只有一个,它是整个网络的逻辑中心,但不一定是物理中心。但是根据网络拓扑的变化,根桥可能改变。
BID(Bridge ID):桥ID
IEEE 802.1d标准中规定BID是由2字节的桥优先级(Bridge Priority)与桥MAC地址构成,即BID(8字节) = 桥优先级(2字节) + 桥MAC(6字节)。
在STP网络中,桥ID最小的设备会被选举为根桥。在华为公司的设备上,桥优先级支持手工配置。
PID(Port ID):端口ID
PID由两部分构成的,即PID(16位) = 端口优先级(4位) + 端口号(12位)。
PID只在某些情况下对选择指定端口有作用,即在选择指定端口时,两个端口的根路径开销和发送交换设备BID都相同的情况下,比较端口的PID,PID小者为指定端口。
路径开销(RPC)
路径开销是STP/RSTP协议用于选择链路的参考值。STP/RSTP协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树形网络结构。根设备的端口的路径开销都为0。
在一个STP/RSTP网络中,某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的开销。
PC(port cost)
PC的计算需要依据端口带宽来计算。
端口角色:
根端口(RP):
即去往根桥路径最近的端口。根端口负责向根桥方向转发数据,根端口同时还负责接收上游设备的BPDU报文和用户流量转发。根端口的选择标准是依据根路径开销判定。在一台设备上所有使能STP的端口中,根路径开销最小者,就是根端口。在一个运行STP/RSTP协议的设备上根端口有且只有一个,而且根桥上没有根端口。
指定端口(DP):
对一台交换设备而言,它的指定端口是向下游交换设备转发BPDU报文的端口。根桥的所有端口都是指定端口。在环网的每一网段都会选举出一个指定端口,在一个网段上拥有指定端口的交换设备被称作该网段的指定桥。
替代端口(AP):
由于学习到其它设备发送的配置BPDU报文而阻塞的端口,作为根端口的备份端口,提供了从指定桥到根的另一条可切换路径。
STP的选举
1.根网桥:
在一棵生成树中有且仅有一台交换机为root;
选举规则:
BID + MAC
- 优先比较BPDU中的 BID = 网桥优先级,默认为 32768(0-65535,小优)
- 若网桥优先级相同,比较MAC地址(数值小优) MAC地址比大小,从左向右比
2.根端口:
在每一台非根网桥上,有且仅有一个;离根网桥最近端口,接收来自根的BPDU,同时转发用户的数据;
选举规则:
- 比较从根网桥出发后,通过该接口进入时最小的cost值;
- 入向cost值相同,比较该接口对端设备的BID,小优;
- 对端BID也相同,比较该接口对端设备的PID;先优先级小,若优先级一致,编号小的优;
- 若对端PID也相同,比较本地PID,小优;
PID=Port ID(端口ID) 接口优先级(0-240,步长16,默认128) 接口编号
cost值:不同带宽,存在不同cost
802.1d标准
10M = 100
100M = 19
1000M = 4
10000M = 2
>10000M = 1
802.1T标准
华为默认使用
1000M = 20000
100M = 200000
3.指定端口:
在每一段存在STP的物理链路上,有且仅有一个接口;转发来自根网桥的BPDU,同时转发用户数据;根端口对端为指定端口,根网桥上所有端口为指定端口;
选举规则:
- 从根网桥发出BPDU后,通过该接口转出到链路上的最小cost值;注:出向cost值
- 出向cost值相同,比较本地的BID,小优
- 本地BID相同,比较本地PID
- 本地PID相同,直接阻塞该接口
4.非指定端口(阻塞端口)
当以上端口选举完成后,剩余的没有任何角色的端口为非指定端口,该接口在逻辑上阻塞,实际上可以接收消息,但不转发
举例:
默认BID相同,MAC地址A<B<C<D<E<F
A为Root,蓝色为指定端口,红色为根端口,叉叉为非指定端口
接口状态:
- down:一旦BPDU收发,进入下一状态
- 侦听(15s):强制15s;所有交换机进行BPDU收发,选举所有角色;接口角色为非指定端口直接进入阻塞状态; 若为指定端口和根端口进入下一状态;
- 强制15s; 指定端口和根端口学习所有接口连接设备的MAC地址,生成MAC表;之后进入下一状态;
- 转发:指端端口和根端口进入,可以转发用户报文;
- 阻塞:逻辑阻塞;
注:只有到接口进入到转发状态后,才能为用户转发数据报文,之前的30s不能转发任何数据;
收敛时间:
初次收敛—30s = 15侦听+15s学习
结构变化:
存在直连检测:本地存在阻塞端口,若其他端口断开,该阻塞端口马上进入15是侦听(选举);结果若为启用,那么将再进入15s学习—总30s
没有直连检测:本地不存在阻塞端口,若某个端口断开,将发送次优BPDU(以本地为根)给其他邻居交换机,其他交换机无视该数据,进行20s hold time计时,到时时阻塞接口进入15s侦听,15s学习=总50s
STP用于拓扑改变的报文:
TCN BPDU报文:拓扑改变通知。
TCN BPDU报文只能由非根桥发出,通告给根桥。
TCA BPDU报文:用于确认接收到的TCN PBDU报文。
TC BPDU报文:只能由根桥发起,连续发送35s(MAX age + Forwarding delay)。
非根桥收到TC BPDU报文后会将MAC地址的老化时间设置为15s,加速老化。
STP拓扑改变:
如果非根桥上发生拓扑变化,向根桥发送TCN BPDU包,通告根桥拓扑已改变。
上联的非根桥从指定端口收到TCN BPDU包后,会向发送者回复TCA flag位置位的配置BPDU包,同时继续向根桥发送TCN BPDU包。
根桥收到TCN BPDU包后,向发送者回复TCA Flag位置位的配置BPDU包,同时向所有指定端口发送TC Flag位置位的配置BPDU包。TC置位的配置BPDU包会连续发送35s,同时将自己的MAC aging 设置为15s。
其他非根桥收到TC置位的配置BPDU包后,将自己的MAC地址的老化时间设置为15s,加速老化。
802.1D 缺点:
1、收敛慢
2、链路利用率低
STP的不足: