1、为什么使用生成树(STP)
  大家都知道路由协议可以防止在网络层发生路由环路。然而,如果在交换机之间有冗余的物理链路,路由协议将不能防止在数据链路层发生环路。正是由于这个原因,才开发的生成树协议——它可以防止在第二层交换式的互联网络中发生环路。
2、生成树的概念和术语
  根桥(Root bridge)是桥ID最低的网桥。对于STP来说,关键的问题是为网络中所有的交换机推选一个根桥,并让根桥成为网络的焦点。
  根端口 (Root port)是指直接连接到根桥的的链路的所有端口,或者到根桥的路径最短的端口。
  指定端口(Designated port)有最低开销的端口就是指定端口,指定端口被标记为转发端口。
3、生成树工作原理
  生成树算法复杂,但是其过程可以归纳为以下3步:
       ⑴ 选择根网桥
       ⑵ 选择根端口
       ⑶ 选择指定端口
①选择根网桥:选择根端口主要依据是网桥ID,网桥ID是一个8个字节的字段由两部分组成网桥优先级和网桥的MAC地址
         
网桥优先级
2字节
网桥的MAC地址
6字节
  优先级取值范围:0~65535    默认值:32768
 网桥MAC地址是交换机的MAC地址之一,show mac-address-table查看交换机MAC地址表,显示在最前面的就是STP计算用的交换机的MAC地址。
②选择根端口:选择根桥后每个交换机必须和根桥建立某种关联,因此,STP将进行根端口的选择。(注意根端口存在于非根网桥上,每一个非根网桥选择一个根端口)
       选择根端口的依据按照顺序依次是:
        ◎到根网桥最低的根路径成本
        ◎直连的网桥ID最小
        ◎端口ID最小
     根路径成本是两个网桥间的路径上所有链路成本之和,也就是某个网桥到达根网桥的中间所有链路成本之和。
     端口ID是一个2字节的STP参数,由一个字节的端口优先级和一个字节的端口编号组成
   
端口优先级
8
端口编号
8
    端口优先级是一个可配置的STP参数,取值范围0~255,默认128。
    端口编号不是端口号,但端口号低的端口,端口编号值也较小。
③选择指定端口:选择完根网桥和根端口后,一个树形结构已初步形成,但是,所有链路还是连在一起,并可能都处于激活状态,最后导致环路。
    为了消除环路,STP进行最后的计算,在每个网桥上选择指定端口。选择指定端口的依据和选择根端口相同,按顺序有3个
     ⑴ 根路径成本较低
     ⑵ 所有的交换机的网桥ID的值较小
     ⑶ 端口ID的值较小