冗余拓扑的设计
-冗余拓扑能够解决单点故障问题;
-冗余拓扑造成广播风暴,多帧复用, MAC地址不稳定的问题;
广播风暴
-Host×发送广播帧;
-交换机继续没完没了的更新广播流量;
多帧复用
- Host×发送一个单播数据帧给Router Y;
- Router Y 的MAC地址还没有被每个交换机学习到;
- Router Y接收2份相同的数据帧的拷贝;
MAC地址表的不稳定
- Host ×发送一个单播数据帧给Router Y;
- Router Y 的MAC地址还没有被每个交换机学习到;
- Switches A and B在Port1上学习到Host ×的MAC地址;-到达Router Y的数据帧被泛洪;
- Switches A and B不正确的在Port2上学习到Host X的MAC地址:
---采用生成树STP解决环路---
- 通过将特定的端口选为Blocking(阻塞;另一个意思打破) state,来实现无环的拓扑;
- IEEE 802.1D规定了这一行为;
- Cisco采用IEEE802.1D的增强的私有协议生成树PVST+;
公有802标准:
802.1D STP 传统的生成树-----不存在,只是概念、理论
802.1W RSTP 快速生成树快,收敛效率高
802.1S MSTP 多实例的生成树 现网中使用 CCNP中讲解
思科私有:
rapid-PVST+
PVST 思科私有的
PVST+ 思科私有的
选择Blocking(阻塞接口)的条件
-每个广播域选择一个 根桥;
-每个非根桥上选择一个 根端口;
-每个段选择一个 指定端口;
-选择一个 非指定端口;
桥协议数据单元BPDU(Bridge Protocol Data Unit)
Bytes Field
2 Protocol ID
1 Version
1 Message type
1 Flags
8 Root ID Root ID:由2字节优先级和6字节MAC组成
4 Cost of path Cost of Path:路径开销是从Switch到Root Bridge的方向叠加的
8 Bridge ID
2 Port ID Port ID:端口信息由1字节端口优先级和1字节端口 ID组成
2 Message age
2 Max age
2 Hellotime Hello Time:发送BPDU的周期,默认2秒
2 Forward delay Forward Delay:BPDU全网传输延迟,默认15秒
Maximum Time:当一段时间未收到任何BPDU,生存期达到Max Age时,网桥则认为该端口连接的链路发生故障。默认20秒
在生成树所有选举中,越小越优先
1、比较根桥
Bridge ID=网桥的优先级+MAC地址
Root ID 和Bridge ID的priority号和mac是一样的话,那它自己就是根桥!!!!

- BPDU(default = sent every 2 seconds)
- Root bridge = bridge with the lowest bridge lD
- Bridge ID = Bridge Priority+MAC Address
交换机每个接口都有MAC地址,然后交换机本身还有个MAC
show version #查询交换机本身自带的MAC地址
Base ethernet MAC Address :00:18:B9:DA:53:00
每个VLAN的桥ID都相同
交换机某个VLAN的优先级,
扩展的桥ID:网桥的优先级+VLAN ID+MAC地址
例如:
32768:
扩展的桥ID:网桥的优先级+VLAN ID
32768:32768+1=32769
VLAN1:32768+1=32769
VLAN2:32768+2=32769
所以每个vlan的拓展桥ID都是不同的
所以每个vlan的拓展桥ID都是不同的
Switch#show spanning-tree vlan 10
VLAN0010
Spanning tree enabled protocol ieee
Root ID Priority 32778
Address 50cf.3600.b900
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32778 (priority 32768 sys-id-ext 10)
Address 50cf.3600.b900
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/1 Desg FWD 4 128.2 P2p
Switch#
============================================================
Switch#show spanning-tree vlan 20
VLAN0020
Spanning tree enabled protocol ieee
Root ID Priority 32788
Address 50cf.3600.b900
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32788 (priority 32768 sys-id-ext 20)
Address 50cf.3600.b900
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/2 Desg FWD 4 128.3 P2p
Switch#
手动配置根桥和备份根桥
第一种:
switch (config) # spanning-tree vlan 1 root primary #默认会转换成第三种:
强制VLAN 1为交换机的根桥; 优先级-8192
第二种:
Switch (config)# spanning-tree vlan 2 root secondary
配置交换机为VLAN2的备份根桥; 优先级-8192
或者
第三种:
Switch (config)# spanning-tree vlan # priority priority
· 修改交换机VLAN优先级(优先级为4096的倍数).
因为每个交换机的MAC地址是固定的,所以要去修改他的网桥优先级。
Switch (config)# spanning-tree vlan 1 priority 4096
根端口的选举
Lowest
.Path cost to root #到达根桥的COST值
.Sender BID #到达发送者的桥ID
.Sender port lD #到发送者的端口ID
STP路径开销

根端口的选举
-Switch X是根桥;
-SwitchY需要选择一个根端口;
-Fast Ethernet total cost= 0 + 19
-Ethernet total cost = 0 + 100
在非根桥上选举一个跟端口
根端口:代表到达根桥最近的一个端口
根据链路的优先级,选取出来RP (root port)根端口
指定端口的选举
指定端口就是把根桥上面的所以端口都设置为指定端口
这样自己设备本身的的接口都为指定端口,自己与对方的最优链路为跟端口,
那剩下的就是要被设定为阻塞的Blocking(阻塞接口)

Switch X是根桥;
根桥上所有的端口都是指定端口,因为他们的路径开销为0;
因为Ethernet链路的路径开销为100, switch Y会阻塞这个端口;

选举指定端口
根桥上所有的接口都是指定接口
比较该接口所在交换机到达根桥的开销
比较该接口所在交换机的B-ID
生成树选举完后,会把一个端口给阻塞掉,只走被选举出来的跟端口。
而如果根端口那条链路断掉了,启用阻塞的那条链路到正常转发数据状态需要多久呢
Blocking
(loss of BPDU detected)
( max age = 20 sec)
Listening
(forward delay =15 sec)
Learning
(forward delay =15 sec)
Forwarding
总共50秒,黄花菜都凉了,所以STP只是理论状态,所以真正使用的是RSTP。
STP
特点:一个交换机一个生成树,所有的VLAN是一个生成树
PVST+
每个VLAN一颗生成树
但是也很吃资源,
MSTP
一部分的vlan运行一颗生成树
100个vlan种,1-50走一个生成树,50-100走第二个生成树
STP特性PortFast
交换机连接终端设备的接口不可能是阻塞接口,一定是Access port模式接口,而这种接口一旦启用PortFast特性,可以在小于>1秒内就进入Forwarding状态。
PortFast被配置在Access端口上,而不是在trunk瑞口上
因为Trunk接口是交换机连接交换机的
Switch (config-if)# spanning-tree portfast
·在接口上配置PortFast属性
Switch (config) # spanning-tree portfast default
·全局下对所有的non-trunking端口启用PortFast属性
Switch# show running-config interface interface
·查看接口配置Portfast的情况