STP(Spanning-Tree Protocol,生成树协议),该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余。
1.1 冗余拓扑中存在的问题
图1-1 单一链路的拓扑
图1-2 有冗余链路的拓扑
图1-1中,PC1和PC2只通过单一链路传输,如果该链路出现故障,会导致通信中断。
图1-2中,加入了冗余链路,解决了SW1和SW2单链路故障引起的网络中断。
但是图1-2中,可能存在的问题:
1、广播风暴
存在广播通过f1/1口出去,然后又通过f1/2口回来,再出去,再回来的,回环问题。
2、MAC地址表不稳定
3、重复帧拷贝
1.2 STP介绍
通过冗余可以解决由于单链路或单交换机故障引起的网络中断,提高网络的可用性,但是在第二层采用冗余时,又会带来广播风暴、MAC地址不稳定、重复帧拷贝等问题,STP被用来解决上述问题。
1.2.1 STP算法
STP通过阻塞冗余路径上的一些端口,确保到达任何目的地址只有一条逻辑链路。STP使用STA(Spanning Tree Algorithm,生成树算法)决定交换机上的哪些端口被阻塞来防止环路的发生。STA选择一台交换机作为根交换机,也称根桥(Root Bridge),以该交换机作为参考点计算所有的路径。所有交换机交换BPDU(Bridge Protocol Data Unit,桥接数据单元),BPDU中包括BID(Bridge ID,桥ID),BID用来识别是哪台交换机发出的BPDU。
1、根交换机选举
BID一般由3部分组成:优先级、发送交换机的MAC地址和Extended System ID(扩展的系统ID,可选项)。
SW1#show spanning-tree (brief) 查看生成树
BID由优先级和MAC组成(老交换机,里面集成了很多MAC)
BID由优先级、Extended System ID(扩展的系统ID)和MAC地址组成(新交换机)
默认情况下,选取同一个VLAN中BID最小的交换机作为根交换机。
SW1(config)#spanning-tree vlan 1 priority (4096的倍数) 更改优先级
SW(config)#spanning-tree vlan 1 root primary 设置该交换机为新的根交换机
2、端口花费和路径花费
(1)端口花费默认和带宽有关:
速度 | 花费 |
10Gb/s | 2 |
1Gb/s | 4 |
100Mb/s | 19 |
10Mb/s | 100 |
端口花费修改:
SW(config)#int fa 1/1 SW(config-if)#spanning-tree cost <1-65535>
(2)路径花费等于从根交换机到达最终交换机前进方向上进入方向的端口花费总和。
1.2.2 BPDU
交换机间通过交换BPDU来选择根桥。
Bytes | Field | 解释 |
2 | Protocol ID | |
1 | Version | |
1 | Message type | |
1 | Flags | 标记域。包含这些信息:TC(Topology Change,拓扑改变)比特位,表示拓扑发生改变事件;TCA(Topology Change Acknowledgment,拓扑改变确认)比特位,表示收到了拓扑变化通知,进行确认 |
8 | Root ID | 根交换机的BID |
4 | Cost of path | 到根交换机的路径花费 |
8 | Bridge ID | 转发BPDU的交换机的BID |
2 | Port ID | 转发BPDU的交换机的端口PID,等于端口优先级(默认是128)+端口编号 |
2 | Message age | BPDU已经存在的时间 |
2 | Max age | BPDU的最大存在时间 |
2 | Hellotime | 根桥发送配置信息的间隔时间,这个默认是2秒 |
2 | Forward delay | 转发延迟 |
1.2.3 端口角色
当STA决定使用哪一条路径后,STA配置交换机的端口角色,端口角色描述了它与根桥的关系和是否允许转发流量。交换机的端口角色有:
(1)根端口(Root Port,简称RP)。非根交换机上离根交换机最近的端口称作根端口,每个非根交换机有且仅有一个根端口。处于Forwarding(转发)状态。
(2)指派端口(Designated Port,简称DP)。每个网段都有一个指派端口,指派端口是该网段到根交换机最近的交换机的端口。处于Forwarding(转发)状态。
(3)非指派端口。既不是根端口,也不是指派端口的激活端口称作非指派端口。处于Blocking(阻塞)状态
(4)禁用端口。shutdown端口,不参与生成树算法。
1.2.4 端口状态和BPDU时间。
1、端口状态转换
端口状态:Down、Blocking、Listening、Learning、Forwarding5种。
①Down(禁用)状态。可以使用“no shut”命令和插入网线进行激活。
②Blocking(阻塞)状态。链路激活,端口转换到Blocking状态,这个状态逗留20秒左右,主要用来决定该端口的角色,如果该端口是根端口或者指派端口,将转换到下一状态;如果该端口是非指派端口,状态将继续停留在Blocking状态;本来处在Blocking状态的端口,如果接收不到BPDU了,也会装换到下一状态。
③Listening(侦听)状态。除了接收BPDU外,还向邻居交换机发送BPDU,通知邻居交换机它将参与激活拓扑。这个状态会逗留大约15秒。
④Learning(学习)状态。开始学习MAC地址。这个状态逗留约15秒。
⑤Forwarding(转发)状态。端口可以转发数据帧。
2、端口所处状态功能
接收BPDU | 发送BPDU | 学习MAC | 转发DATA | |
Down | × | × | × | × |
Blocking | √ | × | × | × |
Listening | √ | √ | × | × |
Learning | √ | √ | √ | × |
Forwarding | √ | √ | √ | √ |
3、BPDU的时间
BPDU中相关的时间参数有:Hello time(2秒)、Max age(20秒)、Forward delay(15秒)。
SW(config)#spanning-tree vlan 1 max-age 30 不建议修改
1.3 STP收敛
收敛就是整个网络达到一个稳定的状态:选举出根交换机,并决定出所有端口的角色,排除所有潜在的环路。
1.3.1 生成树的选举
为了使采用STP的网络最终收敛为一个逻辑上没有环路的网络拓扑,需要通过以下4步实现。
①每个广播域只能有一个根交换机
②每个非根交换机有且只有一个根端口 花费>发送者的BID>发送者的PID
③每个网段有且只有一个指派端口
④既不是根端口,也不是指派端口的端口将被阻塞
1.3.2 增强的STP功能
在连接主机的端口上配置快速端口。可以立即进入转发状态。
SW(config-if)#spanning-tree portfast %Warning: portfast should only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc... to this interface when portfast is enabled, can cause temporary bridging loops. Use with CAUTION %Portfast has been configured on FastEthernet0/1 but will only have effect when the interface is in a non-trunking mode.
1.4 高级的STP
思科私有 | PVST(Per-VLAN STP,每个VLAN一个生成树协议) 支持ISL封装协议 每个VLAN有一个生成树实例 能够实现第二层的负载均衡 支持BackhomeFast、UplinkFast和PortFast特性 |
PVST+(Per-VLAN STP plus,每个VLAN一个生成树协议加) 支持ISL和302.1Q封装协议 支持思科STP私有属性的扩展 增加了BPDU guard和Root guard功能 | |
Rapid-PVST+(Rapid per-VLAN STP,快速的每个VLAN一个生成树协议) 基于快速生成树的标准 比802.1D收敛的速度更快 支持BackhomeFast、UplinkFast和PortFast特性 | |
IEEE标准 | RSTP(Rapid STP,快速生成树协议) 1982年被提出,比802.1D收敛的速度更快 实现思科普通私有属性的扩展 IEEE把RSTP合成到802.1D中,叫做IEEE 802.1D-2004规范 |
MSTP(Multiple STP,多生成树协议) 多个VLAN被映射到同一个生成树实例 IEEE 802.1Q-2003现在包含MSTP |
SW(config)#spanning-tree mode ? 查看该交换机支持的生成树协议
原文地址:http://8499653.blog.51cto.com/8489653/1617914