生成树协议(spanning tree protocol)
工作在二层里面(数据链路层) 二层交换机
理解一下重点:
生成树协议的目的是:
环路带来的三个问题:
解决的方法就是:生成树协议STP
树是没有环的。
生成树的目的(作用)就是通过算法算出来阻塞哪个接口进而消除环路。而且当正常的链路断掉之后,阻塞的接口会自动的打开,让终端之间可以正常访问,达到备份的目的。
STP (spanning tree protocol)生成树协议
生成树算法:
口诀:一个根桥,两种度量,三要素选举,四个比较原则,五种端口状态。
一个根桥
每个二层拓扑中,必须要有一个根网桥(一个特殊的交换机(根交换机))
根交换机只有一个,非根交换机可以多个。
选择根网桥的依据是网桥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)
第二部分是接口号
只有从接口把数据发出去的时候才考虑开销。
在交换机上把数据从接口发出去的开销
思科设备开销:10M带宽(cost:100)
100M带宽(cost:19)
1000M带宽(cost:4)
非根设备到达根设备的路径开销之和RPC(root path cost)
一般我们根路径开销说的都是最小的根路径开销
三要素选举
在每个非根设备上有且只能有一个RP
RP的定义是:离根最近的端口
在每段链路上有且只能有一个DP
如何选择指定端口:
在一段链路里要比较两个设备的根路径开销,根路径开销小的会成为DP端口;如果根路径开销一样,那么比较BID,BID小的会成为DP端口。
3、既不是RP端口,又不是DP端口,就将其阻塞掉。
四个比较原则
生成树的报文中,BDPU报文(桥协议数据单元)
五种端口状态:
disable(禁用):生成树关闭(或者接口关闭的时候)
blocking(阻塞):阻塞接口的最终状态
listening(侦听):设备开机之后,生成树接口默认处于的状态
等15s 15s的时间叫做转发延迟 forward delay
learning(学习):该状态是学习MAC地址的状态
等15s
forwarding(转发):只有处在该状态,才能转发数据
注:RP(根端口)和DP(指定端口)端口都在转发状态
STP的计算步骤:
生成树的类型:
思科认为标准的STP不好,所以思科有自己的私有协议
PVST+ per vlan spanning tree plus 每vlan生成树+
思科认为快速生成树不好,思科有自己的私有协议
PVRSTP+ 或者Rapid PVST+
per vlan rapid spanning tree plus 每vlan快速生成树+
小结:
思科的交换机上默认只支持三种生成树:
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生成树。