Spanning treeprotocol 生成树协议

STP的作用是防止广播风暴和桥接表的错误。

交换机发生广播风暴时的表现是所有的端口指示灯闪烁,cup 利用率不断升高,网络中的主机不能正常通信,交换机死机。

 

环路描述

Spanning treeprotocol 生成树协议_生成树


站点A将数据帧传送到网段A,网段A上的网桥分别在端口1/12/1上接收到了该数据帧,并构建MAC地址表记录站点A分别位于端口1/12/1

两台交换机将数据帧转发到网段B,这时站点B两次接收到该数据帧,而且两台交换机也分别从另一台交换机接收到数据帧,透明网桥的基本特征是监听数据帧的源地址以学习到去往那个地址的正确端口,所有每台交换机都分别重新学习到属于端口1/22/2的站点A,这时交换机错误的认为去往站点A的所有帧都应该被发送到网段B


STP类型

1. Common Spanning Tree (CST) = IEEE 802.1D

2. Rapid Spanning Tree Protocol (RSTP) =IEEE 802.1w

3. Per-VLAN Spanning-Tree plus (PVST+) =Per-VLAN EEE 802.1D

4. Rapid PVST+ = Per-VLAN IEEE 802.1w

5. Multiple Spanning Tree Protocol (MSTP) =IEEE 802.1s

 

IEEE 802.1D

网桥标识符

生成树为每台网桥或交换机分配唯一的标识符,也成网桥ID,网桥ID 包括两部分:2 字节的优先级值和6 字节的MAC 地址。Cisco Catalyst交换机默认优先级是32768,优先级取值范围0-65535,因为MAC地址是唯一的,所有网桥ID也总是唯一的。

 

生成树路径开销

生成树路径开销是以路径中的所有链路的带宽为基础而累积的总路径开销。

各种链路速度的生成树路径开销:

Spanning treeprotocol 生成树协议_交换机_02


网桥协议数据单元(BPDU

参与STP的所有交换机都是通过数据消息的交换来获取网络中其他交换机的信息,这些消息称为网桥协议数据单元(BPDU)。


BPDU主要完成如下任务:

1. 选举跟网桥。

2. 确定冗余路径的位置。

3. 通过阻塞特定端口来避免环路。

4. 通告网络的拓扑变更。

5. 监控生成树的状态。

 

BPDU两种类型:

1. 配置BPDU------------------所有端口上的根网桥以周期性间隔发送。

2. 拓扑变更通告(TCN---------当交换机检测到拓扑变更时产生的BPDU

 

生成树端口状态

对于采用生成树的交换机的每个2层端口,将工作在5中状态之一:

1.  堵塞(blocking):只监听bpdu报文,不能转发,学习和接收MAC地址。

2.  监听(listening):丢弃所有帧,不能学习MAC地址只能接收和处理bpdu报文进行STP计算 20S

3.  学习(learning):丢弃所有帧,能学习MAC地址 接收和处理bpdu报文 15s

4.  转发(forwarding):正常状态 能转发数据帧 能学习MAC地址 接收和处理bpdu报文15s

5.  禁用(disenable):禁用状态下不参不生成树并且不能转发数据帧。

 

BPDU计时器

BPDU帧承载如下3中计时器,影响着STP性能和状态变更。

1 Hellp时间-------由根网桥或其他指定网桥转发的BPUD间隔时间,默认为2s

2 转发延时--------在监听状态和学习状态所停留的时间,默认是15,可以配置4-30s中的值。

3 最大寿命--------网桥端口保存配置BPDU信息的最大时间长度,最大寿命是20s,可配置6-40中的值。

实际工作环境中生成树的计时器允许进行调整,但是建议保留计时器默认值。

 

生成树协议的工作过程

首先进行行根桥的选举,选举的依据是网桥优先级和网桥MAC 地址组合成的桥IDBridge ID),桥ID最小的网桥将成为网络中的根桥。在网桥优先级都一样(默讣优先级是32768)的情况下,MAC 地址最小的网桥成为根桥,接下来,确定根端口,根据跟根桥连路径开销最少的端口为根端口,然后在各个网段中,STP在网桥上建立一个指定端口,它到达网桥的路径开销最低。


根端口和指定端口

Spanning treeprotocol 生成树协议_生成树_03


根网桥选举过程

交换机启动后,交换机假设自己就是根网桥,并且将网桥ID设置成根ID并且发送BPDU报文,通过比较各个交换机的网桥ID选举出根网桥。

 

在选举网桥根端口和指定端口中依此执行如下5种标准:

步骤1:确定根交换机id

步骤2:计算到根交换机的最小路徂开销。

步骤3:确定最小的发送者BID

步骤4:最低的端口优先级。

步骤5:确定最小的端口ID

 

根网桥和备份根网桥

对于每个VLAN,具有最低网桥ID的交换机将成为VLAN 的根网桥。根网桥是VLAN中具有最低网桥ID的根网桥。在实际环境中通常选择中心位置的交换机或核心交换机作为主根网桥。

 

STP拓扑变更

发生下列事件之一时,交换机将发送TCN:

1. 对于处于转发和监听状态的端口,过渡到阻塞状态。

2. 端口进入转发状态,并且网桥已经有指定端口。

3. 非根网桥在它的指定端口接收到TCN,传播TCN被发送。

 

PVST+(增强的按VLAN生成树)

PVST+为每个VLAN维护一个单独的生成树实例,默认情况下每个配置的VLAN都将运行单个生成树。Cisco交换机允许以每个VLAN为基础来启动或禁用STPPVST+能够以每个VLAN为基础提供负载均衡。

 

增强的按VLAN的生成树


Spanning treeprotocol 生成树协议_stp_04

A,B VLAN10,20,30,40 分别维护一个STP 实例,使得交换机C VLAN 10,20 去往交换机D VLAN10,20 的流量通过交换机A使得交换机C VLAN 30,40 去往交换机D VLAN30,40 的流量通过交换机B,将不同的流量分配到不同的交换机上实现了STP 并实现了负载均衡。

 

Rapid PVST+

Rapid PVST+就是具有RSTP 特性的PVST+,是像RSTP 一样基于IEEE 802.1w 运行的,其它所有运行规则与PVST+完全相同其主要特点增加了端口状态的快速切换机制,能够实现网络拓朴的快速转换。

 

Pvst/pvst+的缺陷:

1. 由于为每个vlan 都运行一个生成树,pvstbpdu 的通信量与trunk vlan 数量成正比。

2. vlan个数较多时,维护多棵生成树计算量和资源剧增,所cisco限制了vlan的个数,同时不建议在一个端口上trunk多个vlan,,3550.3560 及以上型号默认stp pvst+Pvst+只支持128 vlan 实例,若网络中多于128 vlan 实例其他vlan 将会出现环路。

3. 协议具有私有性,pvst/pvst+不能像stp/rstp一样得到广泛的支持,不同厂商设备不能互通,只能通过以些变通的方法实现,例如:foundryiranspan


IEEE 802.1w

当运行CST 时,如果根交换机失效了,那么需要等徃10 hello 时间,也就是20 秒(监听20s)收不到

交换机BPDU 才能发现,再将block 的端口过滤到forwarding状态,还需要经过两个forward delay 时间共计30 秒(学习15s转发15s),所以CST 在网络出现故障时,要经过50 秒才能起用block 端口,而RSTP 则只需要在3 hell

时间即6 秒收不到根交换机BPDU,便讣为根交换机已经失去连接,就立刻起用discarding(学习15)状态的接口,

RSTP 在根交换机失效后,并不会进行完整的STP 计算,会在该起用备用端口时立即起用,因此网络收敛速度快,

RSTP 会在低于1 秒的时间内恢复网络。

Spanning treeprotocol 生成树协议_交换机_05


MSTP

由于PVST+为每个VLAN都运行了一个STP实例,可能会多达128STP实例,所以PVST+会极其消耗系统资源MSTP将需要运行相同stp运算的vlan映射到通一个stp实例中,,无论有多少个vlan只根据实际的链路维护相同的STP实例数节约系统资源,降低cpu周期。MSTP主要目的是降低网络生成树实例的总数。

MSTP是在RSTP的基础之上运行的,所以具有快速收敛的功能,但不能不运行RSTP时运行MSTPRSTP是随着开起MSTP时自劢开起的。MSTP最多支持65STP实例,但是映射到实例的VLAN数量是没有限制的,默讣所有VLAN都在实例0

 

MST结合了PVST+802.1Q做好的方面,因为半数VLAN采用一个VLAN实例,所有依然可以获得预期的负载均衡,交换机只需要处理两个生成树实例,所有交换机的利用率比较低。


配置生成树

Spanning treeprotocol 生成树协议_stp_06

PVST 配置步骤:

1. 启用生成树 Switch(config)#spanning-tree vlan vlan-list

2. 配置根网桥 Switch(config)#spanning-tree vlanvlan-list root primary |secondary

3. 修改网桥优先级 Switch(config)#spanning-tree vlan vlan-list prioritybridge-priority

4. 修改端口成本 Switch(config)#spanning-tree vlan vlan-list cost cost

5. 修改端口优先级 Switch(config)#spanning-tree vlan vlan-list port-priority priority

6. 配置上行速链路 Switch(config)#spanning-tree uplinkfast

7. 配置速端口 Switch(config-if)#spanning-tree portfast

8. 查看生成树配置 show spanning-tree

9. 查看VLAN 生成树详细信息 show spanning-tree vlan vlan-id detail


Eg


SwitchA#showrunning-config

 

hostname SwitchA

spanning-tree modepvst

spanning-tree vlan10,30,50 priority 24576

spanning-tree vlan20,40,60 priority 28672

 

interfaceFastEthernet0/1

switchport trunkallowed vlan 10,30,50

switchport trunkencapsulation dot1q

switchport mode trunk

 

interfaceFastEthernet0/2

switchport trunkallowed vlan 20,40,60

switchport trunkencapsulation dot1q

switchport mode trunk

!

interface GigabitEthernet0/1

switchport trunk allowed vlan 10,20,30,40,50,60

switchport trunk encapsulation dot1q

switchport mode trunk

!

interface GigabitEthernet0/2

switchport trunk allowed vlan 10,20,30,40,50,60

switchport trunk encapsulation dot1q

switchport mode trunk 


SwitchB#show running-config

 

hostname SwitchB

spanning-tree mode pvst

spanning-tree vlan 20,40,60 priority 24576

spanning-tree vlan 10,30,50 priority 28672

 

interface FastEthernet0/1

switchport trunk allowed vlan 10,30,50

switchport trunk encapsulation dot1q

switchport mode trunk

!

interface FastEthernet0/2

switchport trunk allowed vlan 20,40,60

switchport trunk encapsulation dot1q

switchport mode trunk

 

interface GigabitEthernet0/1

switchport trunk allowed vlan10,20,30,40,50,60

switchport trunk encapsulation dot1q

switchport mode trunk

!

interface GigabitEthernet0/2

switchport trunk allowed vlan10,20,30,40,50,60

switchport trunk encapsulation dot1q

switchport mode trunk


Mst 基本配置:

Switch(config)#spanning-tree mode mst       #进入mst配置模式

Switch(config)#spanning-tree mst configu

Switch(config-mst)#instance 1 vlan 10,20    #vlan1020 放入实例1 中每个实例都会生成一个独立的生成树

Switch(config-mst)#revision 1             #配置多生成树的版本号

Switch(config-mst)#instance 2 vlan 30,40

Switch(config-mst)#revision 1

Switch(config-mst)#exi

Switch(config)#spanning-tree mst 1 root primary   #指定交换机为STP实例1的主备模式

Switch(config)#spanning-tree mst 2 root secondary

Switch(config)#end



SwitchA#showrunning-config

SwitchA(config)# spanningtree mst configuration

SwitchA(configmst)# name region1

SwitchA(configmst)# revision 10

SwitchA(configmst)# instance 1 vlan 10, 30, 100

SwitchA(configmst)# Ainstance 2 vlan 20, 40, 200

SwitchA(configmst)# exit

SwitchA(config)#spanningtree mst 01 root primary

SwitchA(config)#spanningtree mst 2 rootsecondary


SwitchB#showrunning-config

SwitchB(config)# spanningtree mst configuration

SwitchB(configmst)# name region1

SwitchB(configmst)#revision 10

SwitchB(configmst)#instance 1 vlan 10, 30, 100

SwitchB(configmst)#instance 2 vlan 20, 40, 200

SwitchB(configmst)#exit、

SwitchB(config)# spanningtree mst 2 root primary

SwitchB(config)#spanningtreemst 01 root secondary


总结:

1. 为了能够直接进行转发,catalyst交换机将学习终端的mac地址并保存在mac地址表中。

2. 802.1D生成树协议包括如下5中状态:

-----监听状态

-----学习状态

-----转发状态

-----阻塞状态

-----禁用状态

只有转发状态能够准许对帧进行转发,其他状态都会阻塞转发

3. 对于802.1D STP,网桥标示符由交换机的网桥优先级和mac地址所组成的,具有最低标示符的交换机将成为生成树的根。

4. 对于802.D STP BPDU 3个参数: Hello2s 可配置1-10s/转发延时:15s 可配置 4-30s/最大寿命:20s 可配置6-40s

5. 不基于计时器机制的802.D机制相比较,由于采用了提议和协定机制,rstp 802.1w具有更快的收敛速度

6. RSTP包括如下3中状态:

-----禁用状态

-----学习状态

-----转发状态

7. RSTP包括如下5种角色:

---根端口

---指定端口

---备份端口

---替代端口

---禁用端口

在这些端口中只有根端口和指定端口状态能够准许对帧进行转发

8.在传统PVST模式中,每个vlan维护一个生产时实例

 

STP排错:

网桥环路是STP故障的常见特征,stp排错包括识别和防止桥接环路

 

Stp潜在故障:

1. 双工不匹配

2. 单向链路失效-------一般是光线链路

3. 帧破坏

4. 资源错误

5. Portfast配置错误

6. STP直接参数调整不恰当

 

STP故障的排错方法:

1. 认清网络拓扑

2. 确定网桥环路

3. 恢复连接-------debug spanning-tree events

4. 检查端口状态

5. 查找资源错误

6. 禁用不必要的属性

 

总结:

1. 通过起用portfast特性,主机端口能够直接过渡到转发状态,而不必经历监听和学习状态

2. 通过起用stp bpdu防护特性,将可以避免因无意或恱意连接到起用portfast特性的端口所产生的环路流量

3. 通过起用bpdu过滤特性,将可以避免交换机在主机端口上发送bpdu,因为主机不会参不stp所以也就不必发送bpdu

4. 通过起用根防护特性,将可以避免连接到非期望端口的交换机成为根交换机

5. 在端口停止接受bpdu的时候,通过避免非指定端口过渡到转发端口,环路防护特性能够避免生成树环路。积极模式的udld能够提供额外的环路预防特性且应当在交换机间链路上起用

6. 如果网络中存在一条或多条第2层冗余链路,stp uplinkfast特性能够在发生直接链路故障后快速收敛

7. Stp Backbonefast特性能够降低发生间连接链路故障后的默讣收敛时间

8. 多种情况可能会导致stp故障,如:双工不匹配,单向链路故障,帧破坏,portfast配置错误,资源错误,stp参不调整不当,软件缺陷和硬件故障。

9. 在进行stp排错的时候,应当首先“认清网络”,其中需要了解备份和冗余连接,并且能够快速清除冗余连接。

 

------------------------------------------------------------------------------------------------------------------------------------------------