生成树协议(spanning tree protocol)
工作在二层里面(数据链路层) 二层交换机

理解一下重点:
1、STP的工作原理
2、配置PVST+

生成树协议的目的是:
1、建立一个冗余的交换机网络
2、提高容错性
3、备份。

环路带来的三个问题:
1、广播风暴
2、收到重复的数据帧
3、MAC地址表不稳定(震荡)
解决的方法就是:生成树协议STP
树是没有环的。

生成树的目的(作用)就是通过算法算出来阻塞哪个接口进而消除环路。而且当正常的链路断掉之后,阻塞的接口会自动的打开,让终端之间可以正常访问,达到备份的目的。

STP (spanning tree protocol)生成树协议

生成树算法:
1、选择根网桥 (网桥就是交换机)
2、选择根端口
(1)到根网桥最低的根路径成本(开销)
(2)直连的网桥ID最小的
(3)端口ID最小的
3、选择指定端口
(1)根路径成本较低
(2)所在的交换机的网桥ID值较小
(3)端口ID值较小

口诀:一个根桥,两种度量,三要素选举,四个比较原则,五种端口状态。

一个根桥
每个二层拓扑中,必须要有一个根网桥(一个特殊的交换机(根交换机))
根交换机只有一个,非根交换机可以多个。
选择根网桥的依据是网桥ID,网桥ID是唯一的。

两种度量
1、ID
(1)BID(bridge ID)网桥ID
BID由两部分组成:第一部分是16bit的priority优先级(默认是32768)
取值范围:0-65535
第二部分是48bit的MAC地址
上面的MAC地址是交换机(或者交换机接口)的MAC地址
16bit的priority(优先级) 48bit的MAC地址

优先级最小的就是根设备(根交换机或者根网桥),如果优先级一样,那就比较MAC地址。
MAC地址小的就是根设备。
BID小的就一定是根设备。
根桥的BID就叫做RID(root ID)

(2)PID(port ID)端口ID
PID也由两部分组成:第一部分是接口优先级(默认是128)
第二部分是接口号
2、cost开销,成本
只有从接口把数据发出去的时候才考虑开销。
(1)路径开销
在交换机上把数据从接口发出去的开销
思科设备开销:10M带宽(cost:100)
100M带宽(cost:19)
1000M带宽(cost:4)

(2)根路径开销
非根设备到达根设备的路径开销之和RPC(root path cost)
一般我们根路径开销说的都是最小的根路径开销

三要素选举
1、在每个非根设备上选举一个根端口(RP——root port)
在每个非根设备上有且只能有一个RP
RP的定义是:离根最近的端口
2、在每段链路上选择一个指定端口(DP——design port)
在每段链路上有且只能有一个DP
如何选择指定端口:
在一段链路里要比较两个设备的根路径开销,根路径开销小的会成为DP端口;如果根路径开销一样,那么比较BID,BID小的会成为DP端口。
3、既不是RP端口,又不是DP端口,就将其阻塞掉。

四个比较原则
1、RID(根桥的BID)
2、RPC(root path cost ,根路径开销,即成本)
3、发送者的BID
4、发送者的PID
生成树的报文中,BDPU报文(桥协议数据单元)

五种端口状态:
disable(禁用):生成树关闭(或者接口关闭的时候)
blocking(阻塞):阻塞接口的最终状态
listening(侦听):设备开机之后,生成树接口默认处于的状态
等15s 15s的时间叫做转发延迟 forward delay
learning(学习):该状态是学习MAC地址的状态
等15s
forwarding(转发):只有处在该状态,才能转发数据
注:RP(根端口)和DP(指定端口)端口都在转发状态

STP的计算步骤:
1、根据BID选出根桥,先比较优先级,优先级小的成为根,如果优先级一样,比较MAC地址,MAC地址小的成为根。优先级默认是32768
2、找到每个非根设备上的根路径开销
3、在每个非根设备上找到一个根端口,每个非根设备有且只能有一个根端口,根路径开销最小的那个接口就是根端口
4、在每段链路上,有且只能有一个指定端口DP,首先比较每段链路上所有设备的根路径开销,根路径开销小的成为DP,如果根路径开销一样,那么比较每个设备的BID,BID小的会成为DP
5、既不是RP也不是DP,就将其阻塞。

生成树的类型:
1、标准的STP 802.1d
思科认为标准的STP不好,所以思科有自己的私有协议
PVST+ per vlan spanning tree plus 每vlan生成树+
2、快速的生成树 RSTP 802.1w
思科认为快速生成树不好,思科有自己的私有协议
PVRSTP+ 或者Rapid PVST+
per vlan rapid spanning tree plus 每vlan快速生成树+
3、MSTP 多实例的生成树 802.1s

小结:
思科的交换机上默认只支持三种生成树:
PVST+
PVRST+
MSTP

总结:
STP(spanning-tree protocol)---生成协议
作用----存在冗余链路的情况下,实现环路保护,
(即线路故障时,阻塞端口打开,恢复数据通信)
    实现----BPDU(网桥协议数据单元)
    分类----PVST/RSTP/MSTP

   工作过程
  1.确定交换机的角色
     分类:
           根交换机(只有一个)
           非根交换机(除根交换机以外的交换机)
     原则:
           比较每个交换机的BID(桥ID),越小越好
           组成:优先级+MAC地址(基MAC)
                 优先级:默认是32768
                  MAC地址:交换机主板MAC地址
                   sw#show version
  2.确定端口角色
     分类:
         根端口---在非根交换机上距离根交换机最近的端口
        指定端口---每一个冲突域中,距离根交换机最近的端口
        (冲突域---交换机端口互联形成)---根交换机上的端口均为指定端口
      非指定端口---除根端口及指定端口以外的交换机端口
   判断思路----首先判断根端口----->再判断指定端口------>最后判断非指定端口
    如何表示上文中“最近“这个距离?
            在STP中,通过cost 表示一个路径的距离
         对于某些链路,均有默认的cost值:(路径成本值)
链路带宽---路径成本
        10 M --- cost 100
          100M --- cost 19
          1000M(1G) ---- cost 4
          10000M(10G) ---- cost 2
总结:带宽越宽,成本越小
    通过什么来判断端口所属角色?
       BPDU--桥协议数据单元
        root-id      //表示根交换机是谁
        cost        //表示发送该BPDU协议的交换机到达根交换的距离
        BID         //表示发送该BPDU的交换机的名字
        Port-id      //表示发送方交换机是在那个端口发送出来的
                    (组成--优先级(默认128)+MAC地址) 
                  以上都是越小越好!!!

调整生成树协议:
1、通过调整优先级,来影响阻塞端口(全局配置模式下)
spanning-tree vlan 10 启用生成树(默认启用的)
spanning-tree vlan 10 priority 0 修改sw1在vlan10中的优先级
spanning-tree vlan 20 priority 4096 修改sw3在vlan10中的优先级

spanning-tree vlan 5,10-20 priority 0
spanning-tree vlan 10 root {primary|secondary}
primary:优先级为24576
secondary:优先级为28672

2、修改端口成本(在端口模式中)
spanning-tree vlan 10 cost 50 修改本交换机的端口在vlan10中的出接口成本

3、修改端口优先级
spanning-tree vlan 10 port-priority 96

show spanning-tree 查看所有的vlan生成树。