思科 Spanning Tree Protocol(STP)生成树
什么是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)生成树相关推荐
- 计算机网络之STP(Spanning Tree Protocol)生成树协议详解及其实验配置
目录 1.STP概念 1.1 STP选举过程 1.1.1 根桥和根端口的选举 1.1.2 端口角色的选举 2.STP端口状态解释及转换 2.1 STP的五种端口状态 2.2 STP过程中的两种常见问 ...
- Spanning Tree Protocol介绍
Spanning Tree Protocol(STP)主要是用在网桥上,用来避免网络回路,并制造冗余连接(也就是保证网络的可靠性). 这里只是一个大概的介绍,具体的还是要去看IEEE 的 802.1D ...
- stp:spanning tree protocol 生成树基本原理
作用:通过阻塞特定的接口实现冗余无环的网络. 注意:华为交换机默认开机就执行stp 协议. [ ]undo stp enable 关闭stp TTL:生存周期 三层防环 每过一个三层设备该数值会减1 ...
- STP生成树协议:802.1D、PVST、PVST+、RSTP、MSTP;
索引 STP802.1D 端口角色: 端口状态: 802.1D收敛时间: STP生成树选举: 生成树配置: 802.1D生成树的缺点 PVST -- Cisco私有生成树协议 PVST+ :在PVST ...
- HCIP-7.4交换机STP生成树协议原理
HCIP-7.4交换机STP生成树协议原理 1.什么是交换机生成树? 2.STP生成树 2.1.标准生成树基本计算过程(802.1D) 2.2.STP的基本概念 2.3. BPDU格式及字段说明 2. ...
- 锐捷STP生成树配置
锐捷生成树协议配置 交换机收到一个广播帧,会从所有接口转发出去 当网络中存在物理环路,会产生广播风暴 STP - Spanning Tree Protocol(生成树协议) 逻辑上断开环路,防止广播风 ...
- 生成树 Spanning tree
生成树的原理:生成树协议(Spanning Tree Protocol)是在网络有环路时,通过一定的算法将交换机的某些端口进行阻塞,从而使网络形成一个无环路的树状结构. 生成树的作用:功能强大.可靠的 ...
- 8.STP生成树协议、PVST、HRSP、端口聚合
STP生成树协议 广播风暴:交换机形成环路会形成广播风暴 多帧复制 MAC震荡或MAC地址飘移 一.交换机广播风暴的产生 1.交换机工作原理 根据MAC地址表转发数据帧,如果地址未知,则广播. 2.广 ...
- 【科普】STP生成树协议
生成树协议 生成树协议(英语:Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保 ...
- Cisco STP生成树协议
BPDU bridge protocol data units 802.1d STP 802.1w RSTP 802.1s MSTP STP spanning-tree protocol ...
最新文章
- 华为鸿蒙系统手机销量,两个品牌助力华为新生,但最终会是谁拯救谁
- 虚拟环境是什么意思?pycharm的工程文件下的各个文件是什么意思以及pycharm的使用,run\debug configuration的配置,pycharm的常用快捷键
- LeetCode题组:第169题-多数元素
- Ajax缓存解决办法
- python通过hive transform处理数据
- Python中字符串操作函数string.split('str1')和string.join(ls)
- 计算当前时间到指定日期之间距离多久(494天11866小时711960分钟42717625秒)
- 集合 (二) ----- Map集合详解
- C++11中shared_ptr智能指针用法
- Linux系统基础入门
- 计算机视频剪辑教程,电脑怎么剪辑视频?新手都能上手的视频剪辑教程分享
- 「 数学模型 」“灰色模型的研究步骤及五步建模思想”讲解
- 外贸企业管理系统解决方案丨汇信
- mac 右键 启动终端
- 网站打开速度慢的解决方法
- 腾讯云cos对象存储服务文件上传api就是一个大坑
- css-reset样式重置
- Python绘制简单的曲线图·
- VC 显示 隐藏 工具栏 状态栏
- php模板引擎jinja,django使用jinja2模板引擎报错: ‘django.template.backends.django.DjangoTemplates’...
热门文章
- shio世硕AI智慧指读学习机加入智能教育硬件新战场【无标题】
- distinct 和order by 冲突解决方案
- 2021年数据泄露成本报告解读
- Codeforces 417 D. Cunning Gena
- android 拼音检索汉字,android实现汉字转拼音功能 带多音字识别
- Excel vba按指定列号内容插入分页符
- Flink Transformation
- 厦门大学和福州大学计算机专业哪个好,福建最好的5所大学,除了厦门大学,你还知道哪所大学?...
- 基于 yolo_v5 训练识别人物
- Linux CentOS 7网络配置基础