一、技术背景
1、生成树技术背景


交换机单线路组网,存在单点故障(上左图),上行线路及设备都不具备冗余性,一旦链路或上行设备发生故障,业务将会中断。
为了使得网络更加健壮、更具有冗余性,将拓扑修改为(上右图)接入层交换机采用双链路,联到两台汇聚设备,构成一个物理链路冗余的二层环境,解决了单链路及单设备故障问题。
但是这样也带来了一个大问题,就是二层物理环境存在环路。
2、二层环路带来的问题
(1)典型问题一:广播风暴

网络中如若存在二层环路,一旦出现广播数据帧,这些数据帧将被交换机不断进行泛洪,从而在网络中造成广播风暴。(上左图)
**广播风暴对网络的危害:**将严重消耗设备资源及网络带宽,最终导致网络瘫痪。
(2)典型问题二:MAC地址漂移


1.PC发送数据帧给Server;
2.SW3的MAC地址表中没有匹配目的MAC的表项,于是将数据帧进行泛洪;
3.SW1及SW2都会收到这个数据帧并学习源MAC,同时将数据帧进一步泛洪;SW1及SW2又从自己另一个接口收到这个数据帧,于是MAC表又一次发生改变,如此往复。
(上右图)以SW1为例,5489-98EE-788A会不断的在GE0/0/1与GE0/0/2接口之间来回切换,这被称为MAC地址漂移 现象。
即使不是人为搭建冗余的物理环境而导致的环路,网络也有可能因为种种原因出现二层环路引发的故障。
交换机环路带来的问题: 广播风暴、mac地址表不稳定、网络卡顿、网络不稳定、过多占用交换机的cpu和内存等等。
3、有没有什么办法解决环路的问题呢?
生成树(Spanning-tree)协议就是用于解决环路这个问题的。
什么是生成树?
1、解决二层环路。
2、防止广播风暴。 广播风暴造成的结果是什么? 造成广播风暴的原因是什么?
广播报文在两个或多个交换机间大量的、重复的、无休止的传递。洪范、冗余链路。
3、防止MAC地址表的不稳定。
4、防止数据帧的重复拷贝。


通过在交换网络中部署生成树(Spanning-tree)技术,能够防止网络中出现二层环路。
STP运行后,如果网络中存在环路,那么STP通过阻塞(Block)特定的接口从而打破环路 ,并且在网络出现拓扑变更时及时收敛,以保证网络的冗余性。(如上边左图所示)
当拓扑发生变更的时候,生成树协议能够探测到这些变化,并且及时自动的调整接口状态,从而适应网络拓扑的变化,实现链路冗余。(如上边右图所示)

4、生成树协议在园区网络中的应用位置

5、二层环路与三层环路
**常见环路主要分为:**二层环路和三层环路。
(1)三层环路 (2)二层环路


常见原因 :路由环路 **常见原因:**网络中部署了二层冗余环境,或人为的误接线缆导致;
防环方法: 防环方法:
1、通过动态路由协议防环。 1、需借助特定的协议或机制实现二层防环;
2、IP报文头部中的TTL字段用于防止报 2、二层帧头中并没有任何信息可用于防止数据帧被无
文被无止尽地转发。 止尽地转发。
二、STP简介
1、STP概述
STP(spanning tree protocol,生成树协议) STP是一个用于局域网中消除数据链路层物理环路的协议,标准名称是 802.1D。
运行该协议的设备通过彼此交互信息而发现网络中的环路,对某些接口进行阻塞以消除环路。
STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。(下左图)
注意: 在华为的交换机上,开机默认自动运行。

2、STP(生成树)作用
STP通过阻塞端口来消除二层交换机环路(交换机与交换机间),并能够实现链路备份的目的。
**消除环路:**通过阻塞冗余链路消除网络中可能存在的网络通信环路。
**链路备份:**当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性。
**解决方案:**逻辑性阻塞某个接口. 使用STP来逻辑的阻塞某一个接口,使其只接收流量,不发送流量从而防止环路。
3、标准STP的缺陷
(1)收敛时间长
在默认情况下,STP的收敛时间为30s(侦听(Listening)+学习(learning)各15s),在某些场景下,收敛时间更是长达50s(例如根桥故障,不向外发送BPDU,交换机需要先等待20s的老化时间,再加上30s的侦听(Listening)+学习(learning)),在这个时间段内,会导致网络长时间的中断。

(2)拓扑变化时收敛机制不灵活
当企业上下班时间,每个员工将自己的PC进行开关机的操作,现网当中就会出现大量的TCN(拓扑变更) BPDU,影响设备的性能,而PC机器其实不需要参加到生成树计算当中。


BPDU转发时,唯一不变的是根桥的ID。
交换机只有在发送BPDU时,才会算上自己的开销,接受BPDU时,不会算上自己的开销(cost)。
**指定端口(DP):**发送最优的BPDU
**根端口(RP):**收最优的BPDU
**阻塞端口(AP):**既不是指定端口,又不是根端口,则为阻塞端口
整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】