详解生成树协议(STP)

为什么要了解STP生成树协议?

因为交换网络的互联会造成网络环路,从而产生广播风暴。如下图所示:

详解生成树协议(STP)

1、当PC1第一次和PC2通信的时候,PC1会发送ARP请求交给交换机SW1。

2、当SW1收到广播后,根据交换机的工作原理,它会将此广播包从非接收端口广播出去。

3、当SW2和SW3收到广播后,同样也会广播此广播包。

4、这时就如上图所示就形成了一个环路了。


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


生成树算法及验证

生成树协议运行生成树算法很复杂,但是其过程可以归纳为以下三个步骤。

1)选择根网桥

2)选择根端口

3)选择指定端口

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

选择根网桥:

选择根网桥的依据是网桥ID,网桥ID是由网桥优先级和网桥MAC地址组成的。按照生出树协议的定义,当比较某个STP参数的两个取值时,值小的优先级高。因此,在选择根网桥的时候,比较的方法是看那台交换机的网桥ID小,优先级小的被选为根网桥,在优先级相同的情况下,MAC地址小的为根网桥。

选择根端口:

在STP选择根端口的时候,首先比较交换机端口的根路径成本。根路径成本低的为根端口。当根路劲成本相同的时候,比较链接的交换机的网桥ID。选择网桥ID小的作为根端口,当网桥ID相同的时候,比较端口ID,选择较小的作为根端口。

选择指定端口:

在STP选择指定端口的时候,首先比较同一网段上端口中根路径成本最低的,也就是将到达根网桥最近的端口作为指定端口;当根路径成本相同的时候,比较这个端口所在的交换机的网桥ID,选择一个网桥ID值小的作为指定的端口;当网桥ID相同的时候,比较端口ID值,选择较小的作为指定端口。

如下:根据生成树算法,算出上图中交换机循环链路的生成树,将阻塞一个端口。

详解生成树协议(STP)

STP应用:配置核心交换机的负载均衡

其实在实际生产环境中,交换机的生成树都是交换机自己算好的,根本不需要我们参与,但是有些时候,交换机自己生成的树,不是很理想,对于网络不合理,那么这个时候我们就需要手动的去更改生成树了。


如下图所示:配置两台核心交换机分别为不同vlan的根网桥,使不同的vlan中各接入交换机上选择的根端口不同,因此,不同的vlan的数据传输使用的线路也不同,以达到两条线路之间的负载均衡。

详解生成树协议(STP)

注意:下面我只写修改生产树的相关命令,vlan是已经创建好的。如何创建vlan请参考文章:虚拟局域网VLAN

配置PVST+的方法很多,在这里使用两种方法配置。(关于PVST+的更多介绍,请参思科官方网站)

方法一:

Switch1(config)#spanning-tree vlan 1-5 priority 4096

Switch1(config)#spanning-tree vlan 6-10 priority 32768


Switch2(config)#spanning-tree vlan 1-5 priority 32768

Switch2(config)#spanning-tree vlan 6-10 priority 4096


方法二:

Switch1(config)#spanning-tree vlan 1-5 root primary

Switch1(config)#spanning-tree vlan 6-10 root secondary


Switch2(config)#spanning-tree vlan 1-5 root secondary

Switch2(config)#spanning-tree vlan 6-10 root primary

注意:上面的vlan 1-5 是vlan1到vlan5,这样简写比较方便。


关于PVST+的常见配置请参看下面的语法。

启用生成树命令:

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

指定根网桥:

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

还可以这样配置

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

如果配置primary 则交换机的优先级变成24576,配置secondary 则是28672.

修改端口成本:

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

配置速端口:

Switch1(config-if)#spanning-tree portfast

查看PVST+配置信息:

Switch#show spanning-tree #查看生成树的配置

Switch#show spanning-tree vlan vlan-id detail #查看某个vlan的生成树配置信息。



本文转自yun5277 51CTO博客,原文链接:http://blog.51cto.com/dengqi/1253320,如需转载请自行联系原作者
上一篇:提高安全性,macOS、iOS、tvOS、watchOS文件系统全部换新


下一篇:Nhibernate详解