生成树协议(STP)工做原理与算法

生成树协议(STP算法

1、STP概述网络

一、交换机网络环路的产生ide

image.png

   如上图所示,PC1PC2经过交换机相连,网络初始状态时,PC1PC2的通讯过程以下。学习

image.png

   1)、在网络通讯的最初,PC1ARP条目中没有PC2MAC地址,根据ARP原理,PC1首先会发送一个ARP广播请求(请求PC2MAC地址)交给交换机SW1优化

   2)、挡SW1收到ARP的广播请求时,根据交换机的转发原理,SW1交换机将广播帧从除接收端口以外的全部端口转发出去(即该广播会从F0/1F0/2分别转发给SW2SW3)。spa

   3)、SW2收到广播帧后,一样根据交换机的转发原理,将广播帧从F0/2和链接PC2的端口转发,一样,SW3收到广播帧后,将其从F0/2端口转发。3d

   4)、SW2F0/2端口收到从SW3发送的广播帧后,将其从F0/2和链接PC2的端口转发,一样,SW3收到从SW2发送的广播帧后,将其从F0/1端口转发。blog

   5)、SW1分别从SW2SW3收到广播帧,而后将从SW2收到的广播帧转发给SW3,而将从SW3收到的广播帧转发给SW2接口

   SW1SW2SW3会将广播帧相互转发,这是网络就造成了一个环路,而交换机之间并不知道,这将致使广播帧在这个环路中永远循环下去,以下图所示:ip

image.png

  在实际网路环境中,状况要复杂得多,挡广播帧通过交换机时,交换机就以指数的形式生成广播帧(交换机除收到该广播帧以外的全部端口转发广播帧)。这种广播帧会愈来愈多。最终造成广播风暴,致使网络瘫痪。

  可是环状的物理线路可以为公司提供备份喜好南路,加强网络的可靠性,所以有一种解决方法,一方面可以保证网络的可靠性,另外一方面还能够防止广播风暴的产生。

  STP(生成树协议):并非断掉物理环路,而是在逻辑上断开环路,防止广播风暴产生。

 

 

 

 1.2STP简介

   STP(生成树协议):就是把一个环形的结构改变成一个树形的结构。STP协议就是用来说物理上存在环路的网络,经过一种算法,在逻辑上阻塞一些端口,来生成一个逻辑上的树形结构。

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

当线路故障,阻塞接口被激活,恢复通讯,起备份线路的做用。

 

 

三台交换机正常使用STP逻辑上断开一个端口以后的通讯过程,以下图

image.png

 

 

SW1SW2的链路发生故障时,会将逻辑堵塞的端口自动开启,以下如:

image.png

2、STP的工做原理

一、生成树算法

   生成树算法能够概括为如下三个步骤:

   1)、选择根网桥(boot bridge

   2)、选择根端口(root ports

   3)、选择指定端口(designated ports

 

 

      1)、选择根网桥的算法

          选择根网桥的依据是网桥ID,网桥ID是一个8字节的字段,其组成结构图以下图所示,

image.png

 

2字节的十进制数成为网桥优先级,后6字节是网桥的MAC地址。

网桥优先级是用于衡量网桥在生成树算法中优先级的十进制数,取值范围为0~65535,,默认值是32768

网桥ID中的MAC地址是交换机自身的MAC地址,使用show ver可查看。

交换机显示MAC的地址以下:

image.png

按照生成树算法的定义:交换机网桥ID值最小,优先级小的被选择为根网桥;优先级相同状况下,MAC地址小的为根网桥。

 

      2)、选择根端口

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

选择根端口时,顺序以下:

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

b、直连的网桥ID最小

c、 端口ID最小

 

带宽与路径成本的关系

链路带宽(Mbps

路径成本

10

100

16

62

45

39

100

19

155

14

622

6

1000

4

10000

2

 

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

image.png

 

端口优先级是一个可配置的STP参数,在基于IOS的交换机上,端口优先级的十进制值范围是0~255,默认值是128.

端口编号Catalyst用于列举各个端口的数字标识符。在基于IOS的交换机上,能够支持256个端口。端口编号不是端口号,可是端口号低的端口,端口编号也小。

STP选择根端口的时候,首先比较交换机端口的根路径成本,根路径成本低的为根端口。挡根路径成本相同的时候,比较链接的交换机的网桥ID值,选择网桥ID值小的最为根端口;当网桥ID相同的时候,比较端口ID值,选择较小的最为根端口。(注:在比较端口ID值时,比较的是接收到的对端的端口ID值)

 

 

      3)、选择指定端口

          为了消除环路造成的可能,STP进行最后的计算,在每个网段上选择一个指定端口。

选择指定端口顺序以下:

a、 根路径成本较低;

b、所在的交换机的网桥ID值较小;

c、  端口ID值较小

STP选择指定端口的时候,首先比较同一网段上端口中根路径成本最低的,也就是将到达根网桥最近的端口做为指定端口。另外,根网桥上的接口都是指定端口,由于根网桥上端口的根路径成为为0。(注意:和选择根端口不一样,在比较端口ID值时,比较的是自身的端口ID值)。

image.png

 

 

 

 

生成树算法验证:

image.png

 

 

查看SW1生成树状态

image.png

查看SW2生成树状态

image.png

查看SW3生成树状态

image.png

 

 

 

2、桥协议数据单元(BPDU

     交换机之间经过BPDU(桥协议数据单元)来交换网桥ID、根路径成本等信息。BPDU帧利用了一个STP组播地址(01-80-c2-00-00-00)做为它的一个目的地址,使之能到达相邻的、并处于STP侦听状态的交换机。

     BPDU报文每隔2S向全部的交换机端口发送一次报文,以便交换机能交换当前最新的拓扑信息,并迅速识别和检测其中的环路。

   2.1BPDU的两种类型

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

       拓扑变动通告topology change notificationTCN),BPDU用于通告网络拓扑的变化

   2.2BPDU报文字段

       BPDU中包含根网桥ID、根路径成本、发送网桥ID、端口ID和计时器等,对BPDU几个关键字段做用的解释以下。

       根网桥ID:有一个2字节优先级和一个6字节网桥MAC地址组成。这个信息组合代表已经被选定为根网桥的设备标识

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

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

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

       计时器:用于说明生成树用多长时间能完成它的每项功能。这些功能包括报文老化时间、最大老化时间、访问时间和转发延迟。

 

 

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

        当一台交换机第一次启动时,假设本身是根网桥,在BPDU报文中的根网桥字段填入本身的网桥ID,以下所示:


 

image.png


image.png

 

 

 

当接收到其余交换机发出的BPDU后,比较网桥ID,选择较小的添加到根网桥ID

image.png

image.png


当全网全部的交换机接收到所有的BPDU并做比较后,就能够选择出惟一的一个根网桥。

 

 

 

 

 

 

3STP的收敛

       STP运算过程当中,交换机的每个端口都必须经历好几种状态。

       以下列出了交换机端口的五种STP状态

状  态

用  途

转发(Forwarding

发送/接收用户数据

学习(Learning

构建网桥表

侦听(Listening

构建“活动”拓扑

阻塞(Blocking

只接收BPDU

禁用(Disabled

强制关闭

 

STP端口状态详细描述以下:

Disabled(禁用):由管理员关闭或网络故障使端口处于Disabled状态,他不属于正常的STP状态的一部分。

Blocking(阻塞):在端口初始化后,一个端口既不能接受或发送数据,也不能向它地址表添加MAC地址。相反,这样的一个端口仅容许接收BPDU报文,以便能侦听到其余邻接交换机的信息。此外,选出指定端口后,非指定端口也处于阻塞状态。

Listening(侦听):若是一个交换机认为一个端口可选为根端口或指定端口,他就会把该端口的Blocking状态变为Listening状态,在Listening状态,端口仍然不能接收或发送数据帧。不过,为了使该端口加入到生成树的拓扑过程,容许他接收或发送BPDU报文。因为该端口能够经过发送BPDU报文给其余交换机通告该端口的信息,这个端口最终可能被容许成为一个根端口或指定端口。若是该端口失去根端口或指定端口的地位,将返回Disabled状态。

Learning(学习):一个端口在Listening状态下通过一段时间后,将转为Learning状态。该端口仍可像从前同样发送和接收BPDU报文。不过,该交换机能够学习到新的MAC地址,并将改地址添加到交换机的地址表中。正因如此,才使得交换机能够沉默必定的时间才处理有关地址表的信息。

Forwarding(转发):在Learning状态下载通过一段时间的学习和转发,该端口转入到Forwarding状态。在Forwarding状态,该端口既能够发送和接收数据帧,也能够手机MAC地址表加入到他的地址表,还能够发送和接收BPDU报文。再生成树拓扑中,该端口以此才成为一个全功能的交换机端口。

 


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

a、Hello时间:网桥发送配置BPDU报文之间的时间间隔。在根网桥交换机中配置的访问时间值将决定全部的非跟交换机的访问时间,这是由于这些交换机在收到发自根网桥的配置BPDU报文时,仅仅中继他们。不过,全部的交换机都有一个本地配置的访问时间,他用于肯定从新发送TCN BPDU(拓扑变化提示)报文的时间。IEEE 902.1d标准规定的默认访问时间为2S

    b、转发延迟:一个交换机端口在ListeningLearning状态所花费的时间间隔,它的默认值各为15S

    c、最大老化时间:交换机在丢弃BPDU报文以前存储它的最大时间。在执行STP时,每个交换端口都保存一份它所侦听到的“最好的”BPDU备份。若是源BPDU失去了与交换机端口的联系,交换机则在最大老化时间以后通知网络发生了拓扑结构方面的变化。最大老化时间默认值是20S

侦听和学习都是生成树所实施的过渡状态,用来强迫端口等待来自其余交换机上全部BPDU。典型的端口过渡以下。

image.png

 

 

 

3、STPVLAN的关系

生成树与vlan之间的关系主要有如下几种:

  aIEEECSTCommon Spanning Tree,通用生成树)。

  bCiscoPVSTPer vlan spanning Tree,每一个vlan生成树)。

  cCiscoPVST+Per vlan spanning Tree Plus,加强的每一个vlan生成树)。

  dIEEEMSTMultiple spanning Tree,多生成树)。

 

 

CST:不考虑VLAN,以交换机为单位运行STP(整个交换网络生成一个STP实例),因此通过STP计算后,对阻塞一个端口,那么vlan3将没法通讯。

以下图:

image.png

 

 

PVSTCisco私有协议,为每一个vlan运行单独的生成树实例(每一个vlan生成一个生成树实例)。以下图:

image.png

PVST优化根网桥的位置,为全部vlan提供最后路径(由于vlan的拓扑结构各不相同)。

PVST主要缺点以下:

为了维护每一个vlan生成的生成树,交换机的利用率(如CPU负载)会更高。

为了支持各个vlanBPDU,须要真用更多的trunk链路带宽。

PVSTIEEECST不兼容,不能与其余厂家的交换机进行互操做。

 

为了解决与其余厂家的交换机进行互操做,Cisco开发了PVST+PVST+容许CST的信息传给PVST,以便于其余厂商在vlan上运行生成树的实现方法进行互操做。以下图:

image.png

PVST+为每个vlan生成一个生成树实例。

 

 

 

4、PVST+的配置命令

 

启用生成树命令

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

 

指定根网桥

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

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

 

修改端口成本

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

 

修改端口优先级

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

 

将端口配置为速端口

Switch(config-if)#spanning-tree portfast

 

例如:

使用下面命令指定根网桥

Switch(config)#spanning-tree  vlan  2  priority  4096

或使用下列命令指定根网桥

Switch(config)#spanning-tree  vlan  2  root   primary

 

使用下面命令修改F0/1端口的成本和优先级

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

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

 

 

使用下面命令查看生成树的配置

Switch#show  spanning-tree

 

使用下面命令查看某个vlan的生成树详细信息

Switch#show  spanning-tree  vlan  2

相关文章
相关标签/搜索