【STP】

作用:防止广播风暴,阻塞环路,备份线路

原理:通过生成树算法确定阻塞端口


一、STP概述

1)、交换网络环路的产生


073749639.jpg


a)在网络通信的最初,PC1的ARP条目中没有PC2的MAC地址,根据ARP原理,PC1首先会发送一个ARP广播请求(请求PC2的MAC地址)给交换机SW1

b)当SW1收到ARP的广播请求时,根据交换机转发原理,SW1将会将广播帧从除接收端口之外的所有端口转发出去(即该广播会从F0/1和F0/2分别转发给SW2和SW3)

c)SW2收到该广播帧后,同样根据交换机转发原理,将广播帧从F0/2和连接PC2的端口转发,同样,SW3收到广播帧后,将其从F0/2端口转发

d)SW2从F0/2端口收到从SW3发送的广播帧后,将其从F0/2和连接PC2的端口再次转发;同样,SW3收到SW2发送的广播帧后,将其从F0/1端口转发

e)SW1分别从SW2、SW3收到广播帧,然后将从SW2收到的广播帧转发给SW3,而将从SW3收到的广播帧转发给SW2

《总结》:

SW1、SW2和SW3会将广播帧相互转发,这时就形成了一个环路,而交换机之间并不

知道,这将导致广播帧在这个环路中永远循环下去。如“图2”所示,然而在实际

网络中,情况要复杂得多,当广播帧经过交换机时,交换机就经指数的形式生成广

播帧(都在转发广播帧),这种广播帧会越来越多,最终形成广播风暴,导致网络瘫痪。

《解决》

   STP协议就是用来解决这个问题的。STP协议并不是断掉物理环路,而是在逻辑上

断开环路,防止广播风暴的产生。

2)、STP简介

定义:STP(Spanning  Tree  Procotol,生成树协议)就是把一个环形的结构改变成

一个树形的结构

原理:将物理上存在环路的网络,通过一种算法,在逻辑上阻塞一些端口,来生成一个

逻辑上的树形结构



073817446.jpg


二、STP工作原理

1)、生成树算法及验证

1、生成树算法(Spanning  Tree Algorithm,STA)

【三个步骤】

a)选择根网桥(Root  Bridge):选择准基点

b)选择根端口(Root  Ports):在每个非根网桥上选择

c)选择指定端口(Designated  Ports):在每条链路上选择

《名词解释》:

“网桥”是交换机的前身,由于STP是在网桥基础上开发的,因此现在交换机的网络中仍然沿用网桥这一术语

a)【选择根网桥】

Ø选择根据是网桥ID,网桥ID是一个八个字节的字段

Ø前两个字节的十进制数称为网桥优先级,后六个字节是网桥的MAC地址


073913643.jpg

Ø比较方法:优先级小的被选择为根网桥;在优先级相同的情况下,MAC地址小的为根网桥

b)【选择根端口】

Ø选择根端口的依据按照顺序依次如下:

到根网桥最低的根路径成本

直连的网桥ID最小:对端网桥ID最小

端口ID最小:对端端口ID最小

Ø根端口存在于非根网桥上,需要在每个非根网桥上选择一个根端口

Ø根路径成本是两个网桥间的路径上所有线路的成本之和,也就是某个网桥到达根网桥的中间所有线路的成本之和

Ø路径成本用来代表一条线路带宽的大小,一条线路的带宽越大,它传输数据的成本就越低


链路带宽(Gb/s)

路径成本

10

100

16

62

45

39

100

19

155

14

622

6

1000

4

10000

2


表:带宽与路径成本的关系

Ø端口ID是一个二字节的STP参数,由一个字节的端口优先级和一个字节的端口编号组成





074051986.jpg

Ø端口编号是catalyst用于列举各个端口的数字标识符。在基于IOS的交换机上,可以支持256个端口,端口编号不是端口号,但是,端口号低的端口,端口编号值也较低

c)【指定端口】

ØSTP进行最后的计算,在每一个网段上选择一个指定端口

Ø选择指定端口的顺序如下:

根路径成本

所在的交换机的网桥ID的值较小:看自己

端口ID的值较小:看对端端口ID值较小


074149297.jpg

2、生成树算法验证

   Switch# show  spanning-tree


074201589.jpg

2)、桥协议数据单元(BPDU

Ø交换机之间通过BPDU(桥协议数据单元,Bridge  Protocol Data  Unit)来交换网桥ID,根路径成本等信息

ØBPDU帧利用一个STP组播地址(0c-80-c2-00-00-00)作为它的一个目的地址,使之能到达相邻的,并处于STP侦听状态的交换机

Ø每隔两秒,便向所有的交换机端口发送一次BPDU报文,以便交换机能交换当前最新的拓扑信息,并讯速识别和检测其中的环路

1、BPDU的两种类型

Ø配置BPDU,用于生成树计算

Ø拓扑变更通告(Topology  Change  Notification,TCN)BPDU,用于通告网络拓扑的变化

2、BPDU报文字段

根网桥ID:由一个二字节优先级和一个六字节网桥MAC地址组成。这个信息组合表

明已经被选定为根网桥的设备标识

根路径成本:说明这个BPDU从根网桥伟输了多远,成本是多少。这个字段的值决定哪些端口将进行转发,哪些端口被阴断

发送网桥ID:这是发送该BPDU的网桥信息,由网桥的优先级和网桥MAC地址组成

端口ID:由一个字节的端口优先级和一个字节的端口编号组成

计时器:计时器用于说明生成树用多长时间完成它的每项功能。这些功能包括“报

文老化时间、最大老化时间、访问时间和转发延迟”

3、STP利用BPDU选择根网桥的过程

Ø根网桥的选择是一个持续、反复进行的过程,它每隔两秒触发一次

Ø时刻会检查BPDU的根网桥ID是否发生了变化,网络中是否有网桥ID更低的交换机加入进来

3)、STP的收敛


1、生成树端口的状态


状态

用途

转发(Forwarding)

收发BPDU,学习MAC地址,转发数据

学习(Learning)

收发BPDU,学习MAC地址

侦听(Listening)

收发BPDU

阻塞(Blocking)

只收BPDU

禁用(Disabled)

强制关闭


表:交换机端口的五种STP状态


2、生成树计时器


【STP利用三种计时方法来确保一个网络正常收敛】

Hello时间:网桥发送配置BDPU报文之间的时间间隔,IEEE 80.21d标准规定的

默认访问时间为两秒

转发延时:一个交换机端口在(侦听)和(学习)状态所花费的时间间隔,默认

值为各15s

最大老化时间:交换机在丢弃BDPU报文之前储它的最大时间,默认值是20s



【端口过渡如下】



074232317.jpg

三、STP的应用

1)、STP的与VLAN的关系

【生成树与VLAN之间的关系有以下几种】

   IEEE的CST(Common  Spanning  Tree,通用生成树)

   Cisco的PVST(Per  VLAN  Spanning Tree,每VLAN生成树)

   Cisco的PVST+(Per  VLAN Spanning  Tree  Plus,增强的每VLAN生成树)

   IEEE的MST(Multiple  Spanning  Tree,多生成树)


074304585.jpg



【PVST的缺点】

Ø为了维护针对每个VLAN而生成的生成树,交换机利用率(如CPU负载)会更高

Ø为了支持各个VLAN的BPDU,需要占用更多的Trunk线路带宽

ØPVST与IEEE的CST不兼容,使得运行PVST的Cisco交换机不能与其他厂商的交换机进行互操作

2)、配置PVST+的意义

1、利用PVST+实现网络的负载均衡

2、配置速端口(Post  Fast)

Ø在端口启用速端口功能后,当端口从down到up状态时,该端口不经过侦听学习状态,节省30秒的转发延迟

Ø然而,该端口仍然运行生成树协议,如果检测到了环路,也能够从转发关态转换到阻塞状态,速端口只能配置在连接终端的接口上,否则就有可能导致短时间的生成树环路

3)、PVST+配置命令

【启用生成树】

   Switch(config)# spanning-tree  vlan vlan-list

【指定根网桥】

   Switch(config)# spanning-tree  vlan vlan-list  priority bridge-priority

如:switch(config)#spanning-tree  vlan  5,10 priority  4096


Switch(config)#spanning-tree  vlan  vlan-list root {primary| secondary}

          Primary默认优先级:24576

          Secondary默认优先级:28672

【修改端口成本】

   Switch(config-if)# spanning-tree  vlan vlan-list  cost  cost

如  switch(config-if)# spanning-tree  vlan 2  cost  10

【修改端口优先级】

   Switch(config-if)# spanning-tree  vlan vlan-list port-priority  priority

如  switch(config-if)# spanning-tree  vlan 2  port-priority  96

【配置速端口】

   Switch(config-if)#  spanning-tree portfast

配置速 端口使接入终端的接口快速进入转发状态,不参与生成树选择

【配置上行速链路】

   Switch(config)# spanning-tree  uplinkfast

配置上行速链路可以使阻塞端口快速进入转发状态

【查看生成树的配置】

   Switch# show spanning-tree

【查看某个VLAN的生成树说细信息】

   Switch# show spanning-tree  vlan  vlan-id detail