首页 > 代码库 > STP

STP

在一个网络的配置、故障排除和维护的问题中,网络环路在大约占据了50%。由此可见,环路给我们日常生活所带来的不便。环路的形成是由于网桥(网桥)中存在冗余路径或循环时,所产生问题,因此当我们在解决这个问题时,也应当从这里入手。

为了解决循环问题,我们便想到了树——STP执行一种称为生成树算法(STA)的算法。在使用STA前,需要先选取一个参考点,我们可以将其称之为“树根”(根桥),从这个根开始,寻找路径。在一个网络中,我们不难发现,到达一个目的地可以有多种路径,那么当存在2条或者多天路径到达同一目的地时,我们应该怎样选择?STA通过一系列的规则将路径进行比较,选择出一条最佳路径并阻塞其他的路径。在介绍路径比较的规则前,我们先引入两个重要的概念(STP的计算中广泛地使用这两个关键概念来创建无环路拓扑):

  • Bridge ID(桥ID)

技术分享

从这幅图中,可已经看出Bridge Priority=Bridge Priority+Extend System ID的(这里的Extend System ID,就是VLAN ID。)。

  • Path Cost(路径开销)

Link Speed

Cost (Revised IEEE Spec)

10 Gbps

2

1 Gbps

4

100 Mbps

19

10 Mbps

100

 

 在创建无循环拓扑时,STP总是使用相同的五个步骤:

  1.    Lowest BID(Bridge ID):最小的桥ID
  2.    Lowest Path Cost to Root Bridge:到达根桥的路径的总花费(常见的:Fast Interface:16,GigabitEthernet Interface:4)
  3.    Lowest Sender BID(发送端!发送端!发送端!):发送端桥ID
  4.    Lowest Port Priority:端口优先级
  5.    Lowest Port ID:端口号

接下来,我们通过一个拓扑图,对STP的整个运作方式进行讲解:

技术分享 

 在这张图上,标明了每个设备的MAC地址。接下来按照先前提出的步骤:

  1. 找根桥:首先通过比较以上设备的BID可以发现Access2设备的MAC地址为最小的,通过选举Access2成为了这个网络中的根桥。
  2. 找根接口:在这里很多人会误解根接口在跟桥上,其实根接口是不在跟桥上的!!!根接口的选择是通过我们上述提出的第二条作为比较依据,找出根桥到该设备的某个端口的最佳路径(花费最小)。于是在进行比较过后,我们可以得出:Access1的Fa0/5端口,Distribution1的Fa0/3端口,Distribution2的Fa0/3端口为根端口。在这里出现一个问题,我们发现,只通过第二条规则,对于Core来说,到达G0/1和G0/2的花费是相等的。那么这个时候,我们应该选择哪条路径哪?在接下来的分析中会给出方法。
  3. 确定指定接口:这点可能是大多数人都搞不清楚的地方。在这里,需要使用第三条规则:在一条路径寻找发送端BID最小的路径。首先,我们先从一个例子来了解COST值在帧传播过程中的变化:从Access1的Fa0/5端口到Access2的Fa0/5端口的这条路径。在计算路径花费时,很多人会认为只要一发出去,COST就从0->19,其实不是的。应该是当帧到达Access1的Fa0/5端口时,cost才变为了19。所以在帧未到达Access1的Fa0/5端口时,cost=0。在这幅图中,一些闪现为橙色端口的就是被阻塞的,用来避免网络出现环路。而除开根接口和橙色接口的接口就是指定端口。那么我们只怎么确定哪些是指定端口,哪些是应被阻塞的端口的哪?通过比较sender BID来确定,在一条路径的两个端口之间比较sender BID,其中sender BID越小的就是指定端口。

当Path Cost to Root Bridge相等时,该选择哪条路径?

通过比较他们的 Port Priority和Port ID!什么是Port Priority和Port ID?见下图:

技术分享

红色部分就是 Port Priority,蓝色部分就是Port ID。当路径的 Cost to Root Bridge相等时,先比较这端口的Port Priority,当Port Priority相同时,再去比较Port ID。(Port Priority和Port ID都是越小越优先。)

STP