思科 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 35864
   spanning-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 default

2、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 uplinkfast

3、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/1
   SW(config-if)#spanning-tree guard root

2、BPDU Guard
BPDU Guard比Root Guard更加严格,只要收到BPDU Message,无论它是不是要成为Root Bridge,都立
刻把此端口变成Err Disable。这种情况下,只要有一个新的交换机接入,该端口就会被马上ErrDisable。
 ● 开启方式如下:
   SW(config)#interface ethernet 0/1
   SW(config-if)#spanning-tree bpduguard enable

 

 

 

 

 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spanning Tree ProtocolSTP)是一种网络协议,用于在一个具有冗余连接的网络中,防止出现环路,确保网络拓扑结构为树形结构,从而保证数据在网络中的正常传输。STP通过计算各个网络设备之间的距离,选择一条最优路径,将其他冗余路径阻塞,从而实现网络的冗余备份和高可用性。STP是网络中非常重要的协议之一,被广泛应用于局域网、数据中心等各种网络环境中。 ### 回答2: Spanning Tree ProtocolSTP)是一种网络协议,用于在含有环形拓扑结构的局域网中,自动选择并维护一棵无环的最佳路径树。STP主要用于以太网交换机上,防止数据包在环路中无限循环转发,避免广播风暴和网络拥塞的问题。 STP的主要作用是通过在局域网中选择某些端口作为根桥(Root Bridge),并为其他交换机或设备动态计算出树状结构中的最佳路径。在树状结构中,根桥作为根节点,其他交换机或设备作为子节点,通过不断发送和接收特定的BPDU(Bridge Protocol Data Unit)消息来协调构建并维护整个拓扑结构。 当网络中有环路存在时,STP通过选举确定根桥,并将不符合最佳路径的端口设置为阻塞状态,即不转发数据包。这样可以确保数据只沿着最佳路径进行转发,避免数据包在环路中循环传输。 STP的实现涉及到以下几个重要的概念: 1. 根桥(Root Bridge):被选举为整个拓扑结构的根节点,所有其他交换机向其发送BPDU消息,用于计算最佳路径。 2. 优先级(Priority):每个交换机都有一个默认优先级,用于选举根桥,具有更低优先级的交换机更有可能成为根桥。 3. 端口状态(Port State):STP定义了几种端口状态,包括阻塞、监听、学习和转发状态,用于控制数据包的转发和学习行为。 4. BPDU消息:交换机之间通过BPDU消息进行通信,包括根路径的信息、交换机的优先级、发送端口的标识等。 总而言之,Spanning Tree Protocol是一种用于解决以太网局域网中环路问题的协议,它通过选举根桥和计算最佳路径,实现了数据的有效转发和网络拓扑的稳定性。 ### 回答3: Spanning Tree ProtocolSTP)是一种计算机网络中的协议,用于在交换机之间构建一个无环的树形拓扑结构,以防止数据在网络中产生环路导致的数据包循环转发问题。 当一个网络中有多个交换机时,如果没有采用STP协议,数据包在网络中可能会产生环路,导致数据包被无限循环转发,从而占据网络资源,使网络性能下降甚至瘫痪。因此,STP协议的目标就是通过选择一条最佳路径来构建一个无环的拓扑结构,从而确保数据的有效传输。 STP协议的工作原理如下:在网络中的交换机通过发送Bridge Protocol Data Units(BPDU)来交换信息,并进行路径选择。通过比较BPDU中的信息,交换机之间建立一个优先级和路径成本的关系,并选择一条路径作为根桥。其他的交换机将选择到达根桥的最短路径作为最佳路径,并将其他路径变为阻塞状态,从而消除网络中的环路。 当网络发生变化时,例如某个交换机出现故障或被添加到网络中,STP协议会自动重新计算路径,并重新选择根桥和最佳路径,以保持网络的连通性。 STP协议是一种数据链路层协议,广泛应用于以太网网络中。它能够有效解决网络中的环路问题,保证数据的正常传输,提高网络的可靠性和性能。但是STP协议的计算和重计算路径的过程会消耗一定的时间,因此在一些对实时性要求较高的网络环境中,可以采用其他快速收敛的协议替代STP

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值