网络(四)之STP生成树的原理及算法

STP生成树的原理及算法

续上篇的VTP,这篇我们主要讲一下交换机本身做冗余而又要防止广播风暴的形成而自带的一种协议,还是和以前的一样,本篇主要讲述思科设备的STP原理与算法,当然其他厂商的设备也是一样,只是思科的设备有的一些特殊的功能。

什么是STP

STP(Spanning Tree Protocol)是生成树协议的英文缩写,可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败,要排除故障可能非常困难,这取决于网络设计 [1] 。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。

STP的原理

STP的基本原理是,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。BPDU有两种,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用于计算无环的生成树的,后者则是用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)。
Spanning Tree Protocol(STP)是在IEEE 802.1D 文档中定义,该协议的原理是按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题。

STP运用拓扑列举

在这里插入图片描述
以上面的拓扑为例,在拓扑设计中我们可能为了做冗余,而形成了环路,以Switch1为例,倘若没有配置STP,PC0对PC1发包,经过Switch1,会从F0/2和F0/3口出去,发送到Switch0,Switch会将包发回Switch1,造成环路,从而形成广播风暴,从而无法正常上网,也对交换机破坏较大。而做STP话,交换机会将Switch0上的F0/1口阻塞掉,从而让Switch1数据包从F0/3走。至于为什么阻塞掉的是Switch0上的F0/1口,下面我们讲解一下STP的选举规则。

STP的选举概念

1.桥ID(Bridge Identification):每一台运行STP的交换机都拥有一个唯一的桥ID,桥ID共8byte,包含16bit的桥优先级(Bridge Priority),和48bit的桥MAC地址,其中桥优先级占桥ID的高16bit,而MAC地址占据其余的48bit。

2.根桥(Root Bridge):STP最主要的作用之一是在网络中计算出一棵无环的“树”,这棵树一旦形成,网络中的无环拓扑也就形成了。对于这棵树而言,树根是非常重要的,而根桥就相当于这棵树的树根。

3.开销(Cost)与根路径开销(Root Path Cost,RPC):每一个激活了STP的接口都维护者一个Cost值,接口的Cost主要用于计算RPC,也就是计算到达根的开销。接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。

4.接口ID(Port Identification):运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。接口长度为16bit,由两部分组成,其中高4bit是接口优先级,低12bit是接口编号。

STP的选举条件及规则

选举条件:
1.开销
2.桥ID(桥优先级+MAC)
3.端口ID(端口优先级+端口派生码)
选举规则:
1.根桥上的端口都是指定端口
2.每个非根桥有且只有一根端口
3.一条链路路上有且只有一个指定端口
4.跟端口对应指定端口
5.选不上跟端口或者指定端口的将会被阻塞

STP的选举过程

1.在整个网络中,先选出根桥,可以通过比较交换机的优先级和MAC地址大小,越小的越优先。
2.在每个非根桥上选举根端口(有且只有一个),可以通过比较开销值,达到根桥开销越小的端口就是根端口。
3.在每条链路选举指定端口,每条链路有一个指定端口。可以通过比较接口的优先级和MAC,越小的就是指定端口。
4.剩下的端口就是堵塞端口了。

选举举例

以上面的拓扑为例,第一步,先选根桥,查看交换机的优先级与MAC
在这里插入图片描述
从图上可以看出,优先级一样,但是比较一下MAC地址,可以选出Switch2是根桥。
第二步,在每一个非根桥上选举根端口,也是查看上面那个图,从图中我们可以看出,Switch1到Switch2(根桥)的开销是19,从F0/3口出去,而switch0则从f0/2口到达Switch2(根桥)的开销也是19,很明显开销最小,所以可以选出switch0的F0/2是根端口,switch1的F0/3的接口是根端口。当我们不知道开销的时候可以根据下图的速率来计算。
在这里插入图片描述
第三步,选举指定端口,我们知道,根桥上的接口都指定端口,那么以上面的拓扑为例,现在只差switch1的f0/2口与switch0的f0/1口这条链路没有选举端口。这道拓扑的话其实看mac很明显得出switch1比较小。所以switch的F0/2就是指定端口了。
第四步,剩下的switch0的F0/1口就是阻塞端口了。
上面的拓扑其实很简单,这里只是讲解一下解题思路,让我们对STP算法有个充分的了解。

为什么要清楚STP算法

到这里,可能有同学问了,我们搭建好交换机,它就已经给我们配置好STP了。为什么我们还要去算它呢,其实,在我们只有清楚了他的算法,那么我们在设计其拓扑我们就更能够随心所欲了,比如在设计冗余结构的时候,两条路线都够自由的转发流量,而不会造成资源的浪费。讲到这,就不得不提一下思科的PVST。PVST是解决在虚拟局域网上处理生成树的CISCO特有解决方案。PVST为每个虚拟局域网运行单独的生成树实例.

PVST实例

在这里插入图片描述
以上面拓扑为例,很明显我们配置完成,阻塞端口就是switch1的f/2口了,这样子,无论是vlan2,还是vlan3 之间的PC访问,都是走下面的那条线路。上面的链路就单单起一个冗余的作用了,这样很明显资源造成浪费。而假如我们修改其vlan3的优先级,让vlan3走上面的链路,这样资源和冗余都能做到了。
具体配置:
Switch(config)#spanning-tree vlan 3 priority 28672 (优先级改小)
使上面的switch1选举为根桥,从而改变阻塞端口。

在这里插入图片描述
很明显,配置后之后阻塞端口的灯也亮了,从而实现vlan3之间走上面的链路。这里我就不做测试了,有兴趣的同学就试做一下。

结尾

STP是交换机中的一个难点,但也是重点,只要搞清楚其选举规则,很容易就能理解了。下一期就开始讲路由器了,有兴趣的同学可以持续关注。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值