什么是STP
STP(Spanning Tree Protocol)即IEEE 802.1D,其作用主要有三个,第一是eliminate logical
loops消除逻辑环,第二自动选取最有效的网络路径,第三是当某条链路失效时,自动切换到备份链路,实
现所谓的failover功能。STP协议有很多种类,可分为STP(802.1D)、RSTP(802.1W)、MSTP(802.1S)、
PVST/PVST+ PVRST/PVRST+。STP的基本原理是通过在交换机之间传递一种特殊的协议报文,网桥协议数
据单元(Bridge Protocol Data Unit,简称 BPDU),来确定网络的拓扑结构。常用术语● Bridge ID: BID,由网桥优先级和MAC地址构成。● Port ID: 由两部分组成,在 BPDU 中共占用两个字节,高位字节为优先级,低位字节为端口号。优
先级值缺省为128。● Path Cost: 路径开销,用 cost 值来计算两个设备之间的“距离”。● BPDU:(Bridge Protocol Data Unit), 网桥协议数据单元,它是 STP 赖以工作、在交换机之间进行交互的二层数据帧,交换机所定义的参数、网络中拓扑的改变都通过 BPDU 进行传递。 BPDU 共
分为二类, Configuration BPDU 和 Topology Change Notification BPDU。● Root Bridge: 根桥, STP 的基本思想就是按照"树"的结构构造网络的拓扑结构,树的根是一个称为
根桥的桥设备,根桥的确立是由交换机或网桥的 BID(Bridge ID)确定的, BID最小的设备成为二层网络
中的根桥。● 指定桥(Designated Bridge):在每个网段中,到根桥(Root Bridge)的路径开销最低的(lowes
t Root Path Cost)桥将成为指定桥(Designated Bridge),数据包将通过它转发到网段。一旦所有的
交换机具有相同的根路径开销(Root Path Cost),那么具有最低的桥标志级数的(lowest Bridge Iden
tifier)交换机才会被定为指定桥(Designated Bridge)。● 桥的优先级(Bridge Priority):是一个用户可以设定的参数。设定的值越小,优先级越高。交换机
具有越高的优先级,才越有可能成为根桥。STP标准参数:● Hello time: 2 秒● Max age:20 秒● Forward Delay 15 秒● 这些参数都可进行修改,但只有对根桥的修改才起作用,非根桥上的这些timer参数只在其产生TCN
BPDU 时才起作用STP 的具体工作机制(三原则)● 每个STP组(STG)或所谓实例(Instance)中要选出一个根桥(root)● 每个非根桥要选出一个根端口(root port)● 每条链路(segment)上要有一个指派端口(designated port)STP 实现的算法(四步算法)● Step 1. Lowest Root BID ---产生根桥● Step 2. Lowest Root Path Cost ---产生根端口及指派端口● Step 3. Lowest Sending BID (在 step 2 相同的情况下)● Step 4. Lowest Port ID(在 step 3 相同的情况下)
端口状态● Blocking(阻塞状态): 端口不会参与数据帧的转发。 但是会接收BPDU来检测网络的变化,判断根交
换机的位置和根ID,以及在 STP 拓扑收敛结束之后,各交换机端口应该处于什么状态,在默认情况下,端口
会在这种状态下停留20秒钟时间。● Listening(侦听状态): 生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应 该参与
数据帧的转发。于是交换机端口就将不再满足于接收 BPDU,而同时也开始发送自己的 BPDU,并以此通告邻
接的交换机该端口会在活动拓扑中参与转发 数据帧的工作。在默认情况下,该端口会在这种状态下停留 15
秒钟的时间。● Learning(学习状态): 端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在这种
状态下停留 15 秒钟时间。● Forwarding(转发状态): 端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时收发
BPDU。● Disabled(禁用状态): 端口不会参与生成树,也不会转发数据帧。端口的角色● 根端口(root port):非根网桥到根网桥开销最小的端口是根端口。● 指派端口(designated port):根网桥的所有端口都是指定端口,非根网桥与其他网桥的根端口相连
的端口都是指定端口。● 阻塞端口(blocking port):既不是根端口又不是指定端口的就成为阻塞端口。

PVST
首先们来看一下PVST,PVST(Per LVAN Spanning Tree),是Cisco交换机预设的生成树模式,通过PVST
交换机之间可以建立起一个Loop-free的拓扑,也就是没有环路的网络。现在基本上都是PVST+协议。我们通
过下面的拓扑来看一下STP的工作原理,三台交换机互联,形成一个环路,看STP如何来消除环路。

1、选举根桥(root bridge),PVST会先选择Bridge Priority最小的Switch来成为Root Bridge,这个
Bridge Priority默认值是32768,PVST通过这个值+VLAN Number来计算出新的Bridge Priority。每一
个VLAN里面的Bridge Priority可以各不相同,所以每个VLAN可以拥有自己的STP拓扑。2、由于PVST在Cisco交换机上默认是开启的,所以在我们的拓扑中,生成树已经是在工作状态。 每个交换
机默认只有一个VLAN 1,所以可以看到Bridge Priority是32769(32768+1),这也是默认值。

3、我们创建一个VLAN 2,可以看到VLAN 2的Bridge Priority是32770,也就是32768+2。

4、从上面的截图可以看到,当前VLAN 1和VLAN 2的根桥都是CoreSW02,我们通过更改CoreSW02的Bridge
Priority来看看会发生什么变化。我们将Priority都改成36864。注意,Priority必需是4096的倍数。spanning-tree vlan 1 priority 35864spanning-tree vlan 2 priority 35864

5、可以看到将Bridge Priority的值增大后,CoreSW02已经不再是VLAN1和VLAN2的根桥了。

6、通过上面的验证,说明Bridge Priority最小的Switch将会成为Root Bridge。现在我们来看一下
CoreSW01和CoreSW03,这两个的交换机的Bridge Priority我们没有改过,所以都是默认的,也就是相同
的,在这种情况下,Switch就会通过MAC地址的大小来进行选举,MAC最小的将成为根桥。从下图可见,Core
SW01和CoreSW03的Bridge Priority相同,但是CoreSW01的MAC地址比CoreSW02的MAC地址小,所以CoreS
W01被选举为Root Bridge。

7、现在VLAN1和VLAN2的根桥都是CoreSW01,并且VLAN1和VLAN2各自的STP中被Block掉的端口都是Core
SW02的e0/1。这种情况下虽然网络是正常的,但是并没有起到负载均衡的效果,端口e0/1将不会有任何生
产数据通过。由于PVST是Per Vlan的,所以可以为每个VLAN设置不同的Root bridge。这样一个端口只是
相对某个VLAN是Block的,对其它VLAN就是可用的。这就可以有效利用交换机上的每一个端口,避免流量过
于集中在某个或某些端口上,而Block的端口却没有得到使用。

8、现在我们把VLAN2的根桥调整为CoreSW02,VLAN1保持不变。可以通过调整VLAN2的Bridge优先级,也
可以在CoreSW02通过下面的命令直接调整。spanning-tree vlan 2 root primary

9、我们再建立一个VLAN 3,然后将其的根桥设置为CoreSW03。这样现在三个VLAN的根桥就分别是三台交
换机,每个VLAN的STP中Block的端口都不相同。CoreSW01: Root Bridge for VLAN 1, Port e0/0 blocked for VLAN 3
CoreSW02: Root Bridge for VLAN 2, Port e0/1 blocked for VLAN 1
CoreSW03: Root Bridge for VLAN 3, Port e0/0 blocked for VLAN 2

关于Root Port根端口
1、Root Port是指距离Root bridge最近的Port,除了Root bridge,其它交换机都会选择一个Root
Port。以VLAN 1为例,CoreSW01是VLAN 1的根桥,所以没有root port。

2、根据拓扑,CoreSW02的e0/0距离根桥(CoreSW01)距离最近,所以e0/0是root port。

3、根据拓扑,CoreSW03的e0/0距离根桥(CoreSW01)距离最近,所以e0/0是root port。

关于Designated Port指派端口
1、每一段网段只允许有一个端口成为Designated Port,网段里最接近根桥的端口成为Designated port
,如果只有两个端口,则与Root Port相对的端口就自然成为了Desg端口。所以下图中根桥(CoreSW01)的
两个端口都是Desg端口。2、CoreSW02与CoreSW3再根据Switch Priority和MAC地址的大小选出Desg端口,数值小的胜出,另一个
端口就变成了Alternate Port, 也就是被Blocking掉的端口。 这样生成树就完成了所有端口的选举。

通过以上的实验,我们就完成了一个完整的STP形成的过程,我们来总结一下:1、选举Root Bridge,通过比较Bridge Priority, ID值小的胜出。2、如果Bridge Priority相同,再通过MAC地址比大小,同样MAC值小的胜出。3、选出Root Bridge后,再通过Root Cost选出 Root Port,Cost值小的胜出。4、选出Desg Port,非根桥同样通过比较Bridge Priority进行对比,ID值小的胜出。5、如果Bridge Priority相同,再通过MAC地址比大小,同样MAC值小的胜出。6、胜出的端口被选举为Desg端口,亚军就变成了Altn端口,被Block掉。7、至此,生成树形成,消除网络环路。
关于BPDU
1、BPDU(Bridge Protocol Data Unit)是交换机之间用来传送STP信息的报文。BPDU传递的信息里面
包括(Bridge ID、Cost值和Port ID)等信息。只有Root Bridge根桥可以发送BPDU。但是有一种情况
是当一台交换机刚刚启动时,它会认为自己就是根桥并会发送BPDU,直到它收到的BPDU中包含比它更小的
Bridge ID时,它才知道自己不是根桥,从而停止发送BPDU。 2、BPDU默认每2秒发送一次,这个值就是HELLO Time,而交换机接收到BPDU只会存储20,这就是Max-ag
e,也就是说如果交换机超过20秒没有收到BPDU,就会判断原来的根桥已经死了,它会再次认为自己是根桥
并开始发送BPDU。STP中还有另一个值叫Forward Delay,它的作用就是用来调整 Listening和Learning
状态的时间。

3、修改这些timer值是有很大险的操作,设置错误会导致网络瘫痪掉,所以一般情况下不建议修改这些值。
如果一定要修改的话,也不建议直接修改某个值,建议使用Diamater指令让系统自动修改。Diamater会根
据网络中从一端到另一端最多要经过多少交换机来进地判断。

关于PortFast、UplinkFast、BackboneFast
1、PortFast是为了让接入的非交换机设备快速进入转发(Forwarding)状态。假如一台Server接入到了
交换机,与交换机连接的是Server的网卡,这个接入是不会改变交换机的STP拓扑的。但默认情况下,接入
Server或Server有重启等操作后,端口都要再次经历Blocking--Listening--Learning--Forwarding这
个过程,这对于网卡设备是没有必要的,所以Cisco交换机可以开始PortFast功能,跳过Listening和Lear
ning,直接进入Forwarding状态,这可以使服务器网络快速上线。 开启了PortFast的端口,如果检测到接
入的是一台Switch,就会按正常的顺序走Listening--Learning--Forwarding的过程,如果检测到是非交
换机,就会让端口快速进入Forwarding状态。● 只开启某个端口SW(config)#interface ethernet 0/1 SW(config-if)#spanning-tree portfast● 全局开启SW(config)#spanning-tree portfast default2、UplinkFast
以下图为例,在这个生成树实例中,CoreSW02的e0/0处于转发状态,e0/1是Bloking状态。侧如e0/0突然
出现故障,根桥会重新计算STP拓扑启用e0/1,根据前面我们学习的内容可以知道要将e0/1从blocking转
到Forwarding这个时间需要30秒。对于一个实际使用的网络来说,这30秒的中断可能是不可接受的。那么,
通过开启UplinkFast,可以将当前Blocking端口e0/1设置为Standby状态,这时当root port死掉以后,
Standby的端口就会立刻转成Forwarding状态。避免了30秒的中断。● 开启方式如下:SW(config)#spanning-tree uplinkfast3、BackboneFast
如下图,如果CoreSW01与CoreSW03之间的链路中断,CoreSW02是不知道的,它要接收由CoreSW03发送的
数据扔是等待经过CoreSW01传过来的这条路径。直到STP重新计算完毕,这又造成了几十秒的中断。如果开
启了BackboneFast,当发现收不到BPDU时就会主动在Root port上主动发送一个RLQ(ROOT LINK QUERY)
,通知根桥刚才没收到BPDU。如果没有收到根桥的回复,就认定这条链路真的断了,它就会立刻重新计算ST
P,从而省掉了标准过程当中的20秒,再配合UplinkFast,甚至可以无中断的跳过root port。

Root Guard和BPDU Guard
当STP拓扑建立好以后,需要一些手段来进行保护,尤其是防止现有的STP拓扑和各Switch的角色被新接入
的设备抢过去,这样会造成网络中断甚至瘫痪。这时就需要Root Guard和BPDU Guard登场了。1、Root Guard
Root Guard可以使STP免受Bridge Priority小的新接入的Switch抢了现有根桥的位置。开启后,当有一
个新接入的交换机的Bridge Priority比现有根桥小时,这个端口会被置于Root Inconsistent状态,它
会被Block掉而不会转发和接收任何数据。● 开启方式如下:SW(config)#interface ethernet 0/1SW(config-if)#spanning-tree guard root2、BPDU Guard
BPDU Guard比Root Guard更加严格,只要收到BPDU Message,无论它是不是要成为Root Bridge,都立
刻把此端口变成Err Disable。这种情况下,只要有一个新的交换机接入,该端口就会被马上ErrDisable。● 开启方式如下:SW(config)#interface ethernet 0/1SW(config-if)#spanning-tree bpduguard enable

思科 Spanning Tree Protocol(STP)生成树相关推荐

  1. 计算机网络之STP(Spanning Tree Protocol)生成树协议详解及其实验配置

    目录 1.STP概念 1.1  STP选举过程 1.1.1 根桥和根端口的选举 1.1.2 端口角色的选举 2.STP端口状态解释及转换 2.1 STP的五种端口状态 2.2 STP过程中的两种常见问 ...

  2. Spanning Tree Protocol介绍

    Spanning Tree Protocol(STP)主要是用在网桥上,用来避免网络回路,并制造冗余连接(也就是保证网络的可靠性). 这里只是一个大概的介绍,具体的还是要去看IEEE 的 802.1D ...

  3. stp:spanning tree protocol 生成树基本原理

    作用:通过阻塞特定的接口实现冗余无环的网络. 注意:华为交换机默认开机就执行stp 协议. [ ]undo stp enable 关闭stp TTL:生存周期 三层防环 每过一个三层设备该数值会减1 ...

  4. STP生成树协议:802.1D、PVST、PVST+、RSTP、MSTP;

    索引 STP802.1D 端口角色: 端口状态: 802.1D收敛时间: STP生成树选举: 生成树配置: 802.1D生成树的缺点 PVST -- Cisco私有生成树协议 PVST+ :在PVST ...

  5. HCIP-7.4交换机STP生成树协议原理

    HCIP-7.4交换机STP生成树协议原理 1.什么是交换机生成树? 2.STP生成树 2.1.标准生成树基本计算过程(802.1D) 2.2.STP的基本概念 2.3. BPDU格式及字段说明 2. ...

  6. 锐捷STP生成树配置

    锐捷生成树协议配置 交换机收到一个广播帧,会从所有接口转发出去 当网络中存在物理环路,会产生广播风暴 STP - Spanning Tree Protocol(生成树协议) 逻辑上断开环路,防止广播风 ...

  7. 生成树 Spanning tree

    生成树的原理:生成树协议(Spanning Tree Protocol)是在网络有环路时,通过一定的算法将交换机的某些端口进行阻塞,从而使网络形成一个无环路的树状结构. 生成树的作用:功能强大.可靠的 ...

  8. 8.STP生成树协议、PVST、HRSP、端口聚合

    STP生成树协议 广播风暴:交换机形成环路会形成广播风暴 多帧复制 MAC震荡或MAC地址飘移 一.交换机广播风暴的产生 1.交换机工作原理 根据MAC地址表转发数据帧,如果地址未知,则广播. 2.广 ...

  9. 【科普】STP生成树协议

    生成树协议 ​ 生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保 ...

  10. Cisco STP生成树协议

    BPDU bridge protocol data units 802.1d STP     802.1w RSTP 802.1s    MSTP STP spanning-tree protocol ...

最新文章

  1. 华为鸿蒙系统手机销量,两个品牌助力华为新生,但最终会是谁拯救谁
  2. 虚拟环境是什么意思?pycharm的工程文件下的各个文件是什么意思以及pycharm的使用,run\debug configuration的配置,pycharm的常用快捷键
  3. LeetCode题组:第169题-多数元素
  4. Ajax缓存解决办法
  5. python通过hive transform处理数据
  6. Python中字符串操作函数string.split('str1')和string.join(ls)
  7. 计算当前时间到指定日期之间距离多久(494天11866小时711960分钟42717625秒)
  8. 集合 (二) ----- Map集合详解
  9. C++11中shared_ptr智能指针用法
  10. Linux系统基础入门
  11. 计算机视频剪辑教程,电脑怎么剪辑视频?新手都能上手的视频剪辑教程分享
  12. 「 数学模型 」“灰色模型的研究步骤及五步建模思想”讲解
  13. 外贸企业管理系统解决方案丨汇信
  14. mac 右键 启动终端
  15. 网站打开速度慢的解决方法
  16. 腾讯云cos对象存储服务文件上传api就是一个大坑
  17. css-reset样式重置
  18. Python绘制简单的曲线图·
  19. VC 显示 隐藏 工具栏 状态栏
  20. php模板引擎jinja,django使用jinja2模板引擎报错: ‘django.template.backends.django.DjangoTemplates’...

热门文章

  1. shio世硕AI智慧指读学习机加入智能教育硬件新战场【无标题】
  2. distinct 和order by 冲突解决方案
  3. 2021年数据泄露成本报告解读
  4. Codeforces 417 D. Cunning Gena
  5. android 拼音检索汉字,android实现汉字转拼音功能 带多音字识别
  6. Excel vba按指定列号内容插入分页符
  7. Flink Transformation
  8. 厦门大学和福州大学计算机专业哪个好,福建最好的5所大学,除了厦门大学,你还知道哪所大学?...
  9. 基于 yolo_v5 训练识别人物
  10. Linux CentOS 7网络配置基础