程序技术好文:计算机网络(九)——STP原理

简介: 程序技术好文:计算机网络(九)——STP原理

交换网络中通常会使用冗余链路来提高网络的可靠性。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。


生成树协议STP(Spanning Tree Protocol)是可以用来解决冗余链路所带来的问题。


冗余链路解决了单条链路出现故障导致业务中断问题,虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。


1、环路引发的问题


1.1 广播风暴


广播帧在有环路的交换网络中会被无限转发,网络中的主机接受到大量的重复数据帧,这种情况称之为网络风暴。造成的影响:


网络中充满了广播数据帧;


转发和处理这些无用的数据帧会浪费交换机和网络主机的性能;


交换机地址表震荡会造成数据转发错误;


本例中,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。


主机A向外发送了一个单播帧,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。


1.2 MAC地址表震荡


MAC地址表震荡就是,同一个交换机有两个或两个以上接口可以接收到同一个MAC地址,导致MAC地址与交换机端口的对应关系经常发生变化。


交换机是根据所接收到的数//代码效果参考:http://www.jhylw.com.cn/132239375.html

据帧的源地址和接收端口生成MAC地址表项的。假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。

主机A向外发送一个单播帧。SWB收到此数据帧之后,在MAC地址表中生成一个MAC地址表项,00-01-02-03-04-AA,对应端口为G0/0/3,并将其从G0/0/1和G0/0/2端口转发。此例仅以SWB从G0/0/1端口转发此帧为例进行说明。


SWA接收到此帧后,由于MAC地址表中没有对应此帧目的MAC地址的表项,所以SWA会将此帧从G0/0/2转发出去。


SWC接收到此帧后,由于MAC地址表中也没有对应此帧目的MAC地址的表项,所以SWC会将此帧从G0/0/2端口发送回SWB,也会发给主机B。


SWB从G0/0/2接口接收到此数据帧之后,生成一个新的表项,00-01-02-03-04-AA,覆盖原有的MAC地址表。对应端口为G0/0/2。


此过程会不断重复,从而导致MAC地址表震荡。


2、STP生成树协议


2.1 STP的主要作用:(无用时阻断冗余链路,需要时启用)


消除环路:通过阻塞端口来消除网络中可能存在的环路。


链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。


2.2 STP工作方式


每个STP网络中,都会有且只有一个根桥(根交换机),其他交换机为非根桥。


根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心;非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。BPDU中包含交换机在参加生成树计算时的各种参数信息。


STP中定义了三种端口角色:指定端口,根端口、预备端口(阻塞端口)。


根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。(非根交换机上有)


指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口都是指定端口。(所有交换机都有)


如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。


2.3 根桥选举(根桥的产生方式)


STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID=16位的桥优先级+48位的MAC地址。


在STP网络中,桥优先级的取值范围是0~65535,默认值为32768。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。


交换机启动后就自动开始进行生成树收敛计算(桥ID比较)。


默认情况下,所有启动STP的交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文(桥协议数据单元)就可以通过所有端口转发。当某一个端口收到自己发送的BPDU报文后,会阻塞掉该端口;而对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。


如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。


如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。


最后会在整个网络中会有一个桥ID最小的交换机,这个交换机就是整个网络的根桥。


2.4 根端口选举(通往根桥最优端口的选举)


非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和自身本端PID。


端口开销:交换机端口的一个参数,表示该端口在STP中的开销值。参数大小与端口的带宽有关,带宽越高,开销越小。


路径开销:非根桥到根桥的路径上所有接收BPDU的端口的端口开销总和(即BPDU的入方向端口),称为路径开销。


根路径开销:非根桥通过对比多条路径的路径开销,到达根桥的最短路径,这条路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销是0。


对端桥PID:运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。越小越优先。缺省情况下,端口优先级是128。端口ID(Port ID)可以用来确定端口角色。


对端桥BID:每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中根路径开销字段的值,加上该端口本身的端口开销即为本端口路径开销。如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。


本机PID:如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。


2.5 指定端口选举(用于转发BPDU报文的端口选举)


非根交换机在选举指定端口时分别依据根路径开销、本机BID、PID。未被选举为根端口或指定端口的端口为预备端口,将会被阻塞。


在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。


指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。——》如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。——》如果通过累计路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。


网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。


2.6 端口状态转换


运行STP协议的设备上端口状态有5种:


2.7 BPDU报文


BPDU报文详解:


2.8 STP拓扑变化


STP的拓扑变化:


2.9 设备上的配置


1.STP配置交换机的生成树协议模式的命令:stp mode { mstp | stp | rstp }。缺省情况下,在MSTP模式。在使用STP前,STP模式必须重新配置。


2.STP配置设备优先级值命令:stp priority priority值。priority值为整数,取值范围为0到61440,步长为4096。缺省情况下,交换设备的优先级取值是32768。


可以通过stp root primary命令指定生成树里的根桥,确定网络中的数据流量使用最优路径转发。


3.配置指定交换机上路径开销值标准de命令:stp pathcost-standard { dot1d-1998 | dot1t | legacy }


dot1d-1998 IEEE 802.1D-1998


dot1t IEEE 802.1T


legacy Legacy


手动设置端口路径开销值的命令:stp cost cost值。 缺省情况下,路径开销标准为IEEE 802.1t。


使用华为的私有计算方法时,cost取值范围是1~200000。


使用IEEE 802.1d标准方法时,cost取值范围是1~65535。


使用IEEE 802.1t标准方法时,cost取值范围是1~200000000。


4.检查当前交换机的STP配置的命令:display stp。


命令输出中信息介绍如下:


CIST Bridge参数标识指定交换机当前桥ID,包含交换机的优先级和MAC地址。


Bridge Times参数标识Hello定时器、Forward Delay定时器、Max Age定时器的值。


CIST Root/ERPC参数标识根桥ID以及此交换机到根桥的根路径开销。


5.显示交换机上指定端口信息的命令:display //代码效果参考:http://www.jhylw.com.cn/400239287.html

stp interface 接口(g0/0/1)
相关文章
|
2天前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
10 0
|
2天前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
7 0
|
2天前
|
JSON 数据可视化 API
技术心得:如何用Python和API收集与分析网络数据?
技术心得:如何用Python和API收集与分析网络数据?
10 2
|
2天前
|
存储 人工智能 运维
超大规模云网络技术新突破!阿里云斩获中国自动化学会科技进步一等奖
阿里云携手浙江大学、上海交大联合攻坚的超大规模云网络技术及应用成果,斩获中国自动化学会(CAA)科技进步奖一等奖。该成果实现了超大规模云网络调控技术的高性能突破,将十万级任务配置下发提升至秒级的超高水平,填补了该项技术的国内空白。
|
1天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与信息保障
随着信息技术的快速发展,云计算作为一种革命性的计算模式已经深入各行各业。然而,云计算的普及也带来了网络安全的挑战,如何在信息共享和隐私保护之间找到平衡成为了云计算发展的关键问题。本文探讨了云服务的技术特点、网络安全的挑战及其解决方案,以及信息安全在这一背景下的重要性和实施策略。
9 0
|
2月前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
23天前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
40 1
|
8天前
|
安全 物联网 Linux
学习Linux对网络安全的重要性
**学习Linux对网络安全至关重要:** 1. 开源操作系统广泛应用于服务器、网络设备,掌握Linux是安全专家必备技能。 2. Linux内置安全特性,如最小权限和防火墙,加上丰富的安全工具,提供强大保障。 3. 可定制性允许灵活配置,满足安全需求,开源社区提供持续更新和教育资源。 4. 学习Linux能提升攻防能力,用于系统加固和渗透测试,适应跨平台安全场景。 5. 随着云计算和物联网发展,Linux在网络安全中的角色日益关键。
32 3
|
3天前
|
监控 安全 Linux
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
11 0
|
3天前
|
运维 网络协议 Linux
Linux与Windows下追踪网络路由:traceroute、tracepath与tracert命令详解
Linux与Windows下追踪网络路由:traceroute、tracepath与tracert命令详解
7 0