一、STP生成树的工作原理
STP的基本原理可以归纳为三步,选择根网桥RB、选择根端口RP、选择指定端口DP。然后把根端口、指定端口设为转发状态,其它接口设为阻塞状态,这样一个逻辑上无环路的网络拓扑就形成了。
 
1.选择根网桥
选择根网桥的依据是网桥ID,由优先级和MAC地址组成,先看优先级,优先级相同时再看MAC地址,值越小越优先选择。根网桥的选择过程与政治选举类似。
 
2.选择根端口
每一个非根网桥将从其接口选出一个到根网桥管理成本(administrative cost)最低的接口作为根端口,选择的依据是
(1)自身到达根网桥的根路径成本最低的接口。
根路径成本的计算是,接口收到BPDU中所包含的成本与接口的成本的累加。
(2)直连网桥ID最小
(3)端口ID最小
 
3.选择指定端口
当一个网段中有多个网桥时,这些网桥会将他们到根网桥的管理成本都通告出去,其中具有最低管理成本的网桥将作为指定(designated)网桥。指定网桥中发送最低管理成本的BPDU的接口是该网段中的指定端口。在每段链路上,选择一个指定端口,选择的依据是:
 
(1)发送最低根路径成本的BPDU的接口
(2)所在网桥ID最小
(3)端口ID最小
 
总结:
选举根端口,  比较接收的BPDU
选举指定端口,比较发送的BPDU
 
 
 
二、STP拓扑稳定后,所以工作中的交换机接口都将处于转发或阻塞状态,生成树的工作过程如下:
 
(1)根交换机创建成本为0Hello BPDU,并向其所有接口转发出去
(2)邻接的非根网桥将接收的hello数据包中的成本加上接收端口的成本后,从指定端口转发出去。
(3)每经过一个hello时间周期根网桥重复步骤(1),非根网桥重复步骤(2),直到网络拓扑发生变化。
 
总结一下:
STP拓扑稳定后,根网桥通过每2shello时间创建和发送helloBPDU,非根网桥通过根端口接收BPDU,并且从从指定端口转发改变后的BPDU。各交换机通过接收到得的BPDU 消息,来保持各端口状态的有效,直到拓扑发生变化。
 
 
 
三、网络对变化时生成树的状态
 
运行生成树协议的交换机上的端口,总是处于下面四个状态中的一个。在正常操作 期间,端口处于转发或阻塞状态。当设备识别网络拓扑结构变化时,交换机自动进行状态转换,在这期间端口暂时处于监听和学习状态。
 
1)禁用Disabled:(为了管理目的或者因为发生故障将端口关闭)
2)阻塞Blocking:所有端口以阻塞状态启动以防止回路。由生成树确定哪个端口转换到转发状态,处于阻塞状态的端口不转发数据,但可接受BPDU
3)监听Listening:如果一个端口可以成为一个根端口或者指定端口,那么它就转入监听状态。不发送接收数据,接收并发送bpdu,不进行地址学习 (临时状态)。
4)学习Learning:不接收或转发数据,接收并发送bpdu,开始地址学习MAC地址表(临时状态)。
5)转发Forwarding:端口能转送和接受数据。
 
 
四、配置STP
 
(1).启用STP
     config#spanning-tree vlan ID
(2).设置根网桥
  config#spanning-tree  vlan ID root primary|second
 注:primary24576)、second28672
(3).修改网桥优先级
  config#spanning-tree vlan ID priority 优先级
  注:优先级是4096整数倍
(4).修改端口成本
  config-if#spanning-tree valn ID cost 成本
(5).修改端口优先级
  config-if#spanning-tree  vlan ID port-prio 优先级
(6).配置上行速链路
  config#spanning-tree uplinkfast
(7).配置速端口
  config-if#spanning-tree porfast
(8).查看STP配置
   #show spanning-tree
   #show spanning-tree vlan id detail --详细信