网络之路26:STP生成树协议

简介: 网络之路26:STP生成树协议


6、以太网交换基础实验

学习过了基础的网络实验配置,我们应该对网络实验有了简单的了解。接下来,我们继续学习交换机相关的二层技术配置,在H3C认证课程中,该系列课程为构建高性能园区网络,我们先介绍其中比较简单的部分。

6.1、生成树协议

前面介绍VLAN的时候网络之路24:VLAN基础实验,我们提过,如果在实际网络环境中,因为接线不当等原因,可能会出现网络环路的情况。

大概像上图这样,多台设备首尾相连,此时广播报文就会在几台设备之间不断传播,在传播的同时又在生成新的报文。在这种网络中,过不了多久,网络里的流量就达到设备的性能瓶颈了,出现性能显著下降,甚至网络不可用等问题,影响正常业务报文的转发;这种情况,我们一般称之为“广播风暴”

我们一般将交换机分为傻瓜交换机(二层交换机)和可管理交换机(三层交换机),可管理交换机大部分都可以支持STP(Spanning Tree Protocol,生成树协议),生成树协议是一种二层管理协议,它通过选择性地阻塞网络中的冗余链路来消除二层环路,同时还具备链路备份的功能。

然后我们使用HCL构造一个下图这样的网络拓扑网络之路11:认识网络设备模拟器HCL

在不区分VLAN的情况下,要从PC4访问到PC6,可能的路径有以下3条:

1、PC4→SW1→GE0/1→SW2→PC6

2、PC4→SW1→GE0/4→SW2→PC6

3、PC4→SW1→GE0/2→SW3→SW2→PC6

同时我们也能明显的看到,图里面存在环路,此时STP就派上用场了。在H3C的交换机设备上,默认是全局开启了STP的,我们可以通过命令进行查看。

STP采用的协议报文是BPDU(Bridge Protocol Data Unit,桥协议数据单元),也称为配置消息,STP通过在设备之间传递BPDU来确定网络的拓扑结构,同时确定端口的角色和状态。STP的端口状态有3种,主要状态为Forwarding(该状态下的端口可以接收和发送BPDU,也转发用户流量)和Discarding(该状态下的端口可以接收和发送BPDU,但不转发用户流量),还有一种过渡状态Learning,该状态下的端口可以接收和发送BPDU,但不转发用户流量。

我们看一下SW2的端口角色和状态。

再看一下SW3的端口角色和状态。

那么此时的链路状态如下所示:

一共4条链路,SW2和SW3的互联线路不转发数据,SW1和SW2的其中一条互联线路不转发数据,虽然接口的物理状态还是UP的,但现在逻辑上已经不存在环路了。

然后我们看一下SW2上出现的3种端口角色:

1、GE1/0/1为根端口(Root Port),对应Role为ROOT,是指非根桥设备上离根桥最近的端口,用于在非根桥上负责向根桥方向转发数据。那什么是根桥呢?STP认为树形的网络结构必须有树根,于是便引入了根桥的概念,根桥会根据网络拓扑的变化实时选举改变,但是一个STP中有且只有一个根桥,其他设备则称为叶子结点。以此拓扑为例,非根桥设备SW2和SW3上有且只有一个根端口,而根桥设备SW1上没有根端口。

2、GE1/0/2为指定端口(Designated Port),对应Role为DESI,与根端口相反,指定端口负责向下游网段或设备转发数据的端口。

3、GE1/0/4为替换端口(Alternate Port),对应Role为ALTE,是根端口(STP)和主端口(MST)的备份端口。当根端口或主端口被阻塞后,替换端口将成为新的根端口或主端口。

通过命令,我们可以查看生成树端口角色计算的历史信息。

我们可以看到接口GE1/0/1的变化过程为DISA→DESI→ROOT,而GE1/0/4的变化过程为DISA→DESI→ALTE,这就说明了根桥的选举过程。

在网络初始化过程中,所有设备都视自己为根桥,生成各自的配置BPDU并周期性地向外发送,BPDU的关键信息包括根桥ID、根路径开销、指定桥ID、指定端口ID等等,通过前面的计算历史我们可以看出,这些ID基本上都由端口的优先级和MAC地址组成。缺省情况下,设备的优先级都是32768,端口的优先级都是128,所以根桥一般都是由MAC地址确定的。只要设备的生产符合规则,没有任何两台设备的MAC地址是一样的,所以MAC地址小的设备发送的BPDU优先级就会更高,在选举的第一步就会直接选举成为根桥,也就不会进入到根路径开销等选举过程。当网络拓扑稳定以后,只有根桥设备才会向外发送配置BPDU,其他设备则对其进行转发。

以SW1为例,它的根桥ID就是32768.acb6-e75e-0100,因为它是第一台创建的设备,正常来讲它的MAC地址就是最小的。同时我们可以看到BPDU的发送周期Hello Time为2秒,那我们接下来就可以测一下STP的链路备份功能了。

现在计算PC4到PC6的路径为PC4→SW1→GE0/1→SW2→PC6,那么我们在PC4上发起长ping,然后DOWN掉SW1的GE1/0/1接口,看看报文的中断情况。

一个报文都没丢,我们看一下SW2的状态变化。

从日志来看,整个切换过程一共只有5 MS。

从生成树端口角色计算的历史信息来看,接口GE1/0/1的状态DOWN掉之后,接口GE1/0/4马上切换为ROOT根端口,负责向根桥SW1方向转发数据,使得业务中断未引起明显的业务感知。

此时,网络中还存在一条冗余链路呢。

我们查看SW3的端口状态,此时GE1/0/1仍然是替换端口,PC4到PC6的路径为PC4→SW1→GE0/4→SW2→PC6。

那么我们在PC4上发起长ping,然后DOWN掉SW2的GE1/0/4接口,看看报文的中断情况。

一个报文都没丢,我们看一下SW2的状态变化。

看一下SW3的端口角色计算历史信息,SW2的接口的状态变化之后,SW3的接口GE1/0/1马上切换为DESI指定端口,负责向下游设备SW2转发数据的端口转发数据,使得业务中断未引起明显的业务感知。

通过两次测试,均没有丢包,也没有引起明显的时延跳变,说明STP的收敛速度确实很快。然后我们把两个接口都恢复,再看看生成树的状态会变成什么样。

状态也是很快就切换了,没有丢包也没有引起明显的时延跳变,SW2的端口角色和状态与之前完全一致。

SW3的端口角色和状态也与之前完全一致。只是收敛速度太快,都看不到LEARNING的状态,而且日志也没有记录,只有TC的报文,谁能给个显示状态变化日志的方法?


相关文章
|
2天前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
|
11天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
11天前
|
存储 网络协议 安全
15.网络协议-Radius协议
15.网络协议-Radius协议
|
11天前
|
存储 网络协议 网络安全
14.网络协议-邮件协议
14.网络协议-邮件协议
|
15天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
27 0
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
43 0
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真
|
1月前
|
机器学习/深度学习 算法 计算机视觉
m基于深度学习网络的性别识别系统matlab仿真,带GUI界面
m基于深度学习网络的性别识别系统matlab仿真,带GUI界面
29 2
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱