STP
原理概述
STP 是用来避免数据链路层出现逻辑环路的协议, 运行 STP 协议的设备通过交互信息发现环路, 并通过阻塞特定端口, 最终将网络结构修剪成无环路的树形结构. 在网络出现故障的时候, STP 能快速发现链路故障, 并尽快找出另外一条路径进行数据传输.
交换机上运行的 STP 通过 BPDU 信息的交互, 选举根交换机, 然后每台非根交换机选择用来与根交换机通信的根端口, 之后每个网段选择用来转发数据至根交换机的指定端口, 最后剩余端口则被阻塞.
拓扑:
基本配置
S1 到 S4 都将默认的 MSTP 更改为 STP
- stp enable
- stp mode stp
30 秒后查看 s1 的生成树状态
查看详细状态
display stp
查看摘要信息
- [s1]display stp brief?
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 0? ? Ethernet0/0/1 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/2 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
- [s2]display stp brief?
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 0? ? Ethernet0/0/1 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/2 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/3 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- [s3]display stp brief?
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 0? ? Ethernet0/0/1 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/2 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/3 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/10? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/11? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- [s4]display stp brief?
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 0? ? Ethernet0/0/1 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/2 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
由以上可知
S1 的 Ethernet0/0/1 为根端口, 转发状态; Ethernet0/0/2 为替代端口, 丢弃状态
S2 的所有端口都是指定端口, 转发状态; 可以判断 S2 为根交换机
S3 的 Ethernet0/0/3 为根端口, 其余端口为指定端口; 都是转发状态
S4 的 Ethernet0/0/2 为根端口, 转发状态; Ethernet0/0/1 为替代端口, 丢弃状态
查看 s2 根交换机的 stp 详细信息
- [s2]dis stp
- -------[CIST Global Info][Mode STP]-------
- CIST Bridge ? ? ? ? :32768.4c1f-cc29-7f53
- Config Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
- Active Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
- CIST Root/ERPC? ? ? :32768.4c1f-cc29-7f53 / 0
- CIST RegRoot/IRPC ? :32768.4c1f-cc29-7f53 / 0
- CIST RootPortId ? ? :0.0
- BPDU-Protection ? ? :Disabled
- TC or TCN received? :18
- TC count per hello? :0
- STP Converge Mode ? :Normal?
- Time since last TC? :0 days 0h:4m:29s
- Number of TC? ? ? ? :19
- Last TC occurred? ? :Ethernet0/0/3
Ps:CIST Root/ERPC? 与 CIST Bridge 相同, 说明 s2 为根交换机; 32768.4c1f-cc29-7f53 中 32768 为交换机默认的优先级, 后面的为交换机 Mac 地址
STP 运算过程
比较每台交换机的 ID 选举根交换机, 交换机 ID 由交换机优先级和 Mac 地址组成
1, 比较交换机优先级, 数值最低的为根交换机
2, 优先级一致, 则比较 Mac 地址, 数值最低的为根交换机.
手动配置根交换机
修改交换机优先级
设置根交换机优先级为 0, 备份根交换机优先级为 4096
- [s1]stp priority 0
- [s2]stp priority 4096
或者
- [s1]undo stp priority
- [s1]stp root primary?
- [s2]undo stp priority
- [s2]stp root secondary?
查看 s1s2 的状态信息
- [s1]dis stp
- -------[CIST Global Info][Mode STP]-------
- CIST Bridge ? ? ? ? :0? ? .4c1f-cce4-0451
- Config Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
- Active Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
- CIST Root/ERPC? ? ? :0? ? .4c1f-cce4-0451 / 0
- CIST RegRoot/IRPC ? :0? ? .4c1f-cce4-0451 / 0
- [s2]dis stp
- -------[CIST Global Info][Mode STP]-------
- CIST Bridge ? ? ? ? :4096 .4c1f-cc29-7f53
- Config Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
- Active Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
- CIST Root/ERPC? ? ? :0? ? .4c1f-cce4-0451 / 200000
- CIST RegRoot/IRPC ? :4096 .4c1f-cc29-7f53 / 0
由以上可知
CIST Root/ERPC: 根交换机 s1 优先级为 0,Mac 为 4c1f-cce4-0451
CIST RegRoot/IRPC: 备份根交换机 s2 优先级为 4096,Mac 为 4c1f-cc29-7f53
非根交换机上选举根端口
1, 每个端口到达根交换机的根路径开销, 路径开销最小的端口为根端口
2, 如果根路径开销值相同, 则比较每个端口所在链路上行交换机 ID 值
3, 如果上行交换机 ID 相同, 则比较每个端口所在链路上行端口 ID 值
手动配置端口开销值
查看 s4 交换机根端口以及开销值
- [s4]dis stp brief?
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 0? ? Ethernet0/0/1 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/2 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- [s4]dis stp
- ----[Port1(Ethernet0/0/1)][DISCARDING]----
- ?Port Protocol ? ? ? :Enabled
- ?Port Role ? ? ? ? ? :Alternate Port
- ?Port Priority ? ? ? :128
- ?Port Cost(Dot1T ) ? :Config=auto / Active=200000
- ----[Port2(Ethernet0/0/2)][FORWARDING]----
- ?Port Protocol ? ? ? :Enabled
- ?Port Role ? ? ? ? ? :Root Port
- ?Port Priority ? ? ? :128
- ?Port Cost(Dot1T ) ? :Config=auto / Active=200000
两个端口的 active(实际使用的开销值) 都为 200000, 设置根端口的开销值小于 200000, 即可
配置 s4 上根端口开销值
- [s4]interface Eth0/0/1
- [s4-Ethernet0/0/1]stp cost 2000
再次查看 s4 交换机根端口
- [s4]dis stp
- ----[Port1(Ethernet0/0/1)][FORWARDING]----
- ?Port Protocol ? ? ? :Enabled
- ?Port Role ? ? ? ? ? :Root Port
- ?Port Priority ? ? ? :128
- ?Port Cost(Dot1T ) ? :Config=2000 / Active=2000
- ----[Port2(Ethernet0/0/2)][DISCARDING]----
- ?Port Protocol ? ? ? :Enabled
- ?Port Role ? ? ? ? ? :Alternate Port
- ?Port Priority ? ? ? :128
- ?Port Cost(Dot1T ) ? :Config=auto / Active=200000
目前根端口为 Ethernet0/0/1 口, 开销值为 2000
每个网段选举指定端口
1, 比较两个端口发送与接收 BPDU 中的根路径开销, 小的成为指定端口
2, 如果相同, 比较端口发送与接收 BPDU 中的网桥 ID, 小的成为指定端口
3, 如果相同, 比较网桥 Mac 地址, 小的成为指定端口
Ps: 修改端口开销值来选举指定端口, 修改方法同选举根端口
配置 STP 定时器
普通的 stp 不能实现快速的拓扑收敛, 但定时器通过配置合适的系统参数, 可以使 stp 实现最快的拓扑收敛.
定时器有三种:
hello time 定时器, BPDU 多久发送一次 hello, 默认 2 秒
max age 定时器, BPDU 的最大老化时间, 默认 20 秒
forword delay 定时器, 转发延迟时间; 接口从 Discarding 状态, 经过 过渡状态, 最终到 Forwording 状态所用时间, 默认 15 秒
交换机自动根据网络直径计算出 hello time,max age 和 forword delay 三个时间参数的最优值, 默认网络直径为 7
示例:
配置 STP 定时器, 并配置 s1 为根交换机, s2 为备份根交换机
- [s1]stp mode stp
- [s1]stp root primary?
- [s2]stp mode stp
- [s2]stp root secondary?
- [s3]stp mode stp
- [s4]stp mode stp
查看各定时器默认值
- [s1]display stp
- -------[CIST Global Info][Mode STP]-------
- CIST Bridge ? ? ? ? :0? ? .4c1f-cc9a-76a3
- Config Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
- Active Times? ? ? ? :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Config Times: 标识当前设备配置的计时器
Active Times: 标识正在生效的计时器
在根交换机设置 FwDly 时间为 2000cs, 默认是 1500cs,cs 是百分之一秒
stp timerforward-delay 2000
一般不建议直接修改这三个计时器的数值, 而是配置网络直径让交换机自行计算
在根交换机配置网络直径为 3
stp bridge-diameter 3
再次查看计时器信息
- <s1>
- display stp -------[CIST Global Info][Mode STP]------- CIST Bridge ? ?
- ? ? :0? ? .4c1f-cc9a-76a3 Config Times? ? ? ? :Hello 2s MaxAge 12s FwDly
- 9s MaxHop 20 Active Times? ? ? ? :Hello 2s MaxAge 12s FwDly 9s MaxHop 20
- RSTP
RSTP(快速生成树协议) 基于 STP 协议, 在 STP 协议的端口状态和端口角色进行了细致区分, 使收敛速度有很大提升.
RSTP 与 STP 的比较
RSTP 的快速收敛机制
? Proposal/Agreement 机制
? 根端口快速切换机制
? 边缘端口的引入
示例:
在 s1 到 s4 交换机配置 RSTP
[s1]stp mode rstp
配置 s1 为根交换机, s2 为备份根交换机
- [s1]stp root primary
- [s2]stp root secondary?
配置 s3 的 Ethernet0/0/1,s4 的 Ethernet0/0/1 为边缘端口
- [s3-Ethernet0/0/1]stp edged-port enable?
- [s4-Ethernet0/0/1]stp edged-port enable?
- MSTP
RSTP 实现了网络拓扑的快速收敛, 但还是存在缺陷, 即局域网内所有 VLAN 贡献一颗生成树, 链路被阻塞后将不承载任何流量, 造成带宽浪费, 因此无法在 VLAN 间实现数据流量的负载均衡, 还可能造成部分 VLAN 报文无法转发.
MSTP 把一个交换网络划分成多个域, 每个域内形成多棵生成树, 生成树之间彼此独立. 每个域叫做一个 MST 域, 每棵生成树叫做一个多生成树实例 MSTI; 实例内可以包含多个 VLAN, 通过 VLAN 映射表, 把 VLAN 和 MSTI 联系起来; 一个 MSTI 可以对应多个 VLAN, 一个 VLAN 只能对应一个 MSTI.
示例:
基础配置
以 s1 为例
配置 vlan 10 20, 配置连接 pc 的端口为 access, 配置连接交换机的端口为 trunk
- [s1]vlan batch 10 20
- [s1-Ethernet0/0/1]port link-type trunk?
- [s1-Ethernet0/0/1]port trunk allow-pass vlan 10 20
- [s1-Ethernet0/0/2]port link-type trunk?
- [s1-Ethernet0/0/2]port trunk allow-pass vlan 10 20
- [s1-Ethernet0/0/3]port link-type access?
- [s1-Ethernet0/0/3]port default vlan 10
在 s1,s2,s3 上配置 MSTP 多实例
进入 MSTP 域视图
[s1]stp region-configuration
配置 MSTP 域域名
[s1-mst-region]region-name huawei
配置 MSTP 的修订级别为 1
[s1-mst-region]revision-level 1
指定 vlan10 映射到 MSTI1, 指定 vlan20 映射到 MSTI2
- [s1-mst-region]instance 1 vlan 10
- [s1-mst-region]instance 2 vlan 20
激活 MST 域配置
[s1-mst-region]active region-configuration
Notes: 在同一 MST 域中, 必须具有相同域名, 修订级别以及 VLAN 到 MSTI 的映射关系
查看当前生效的 MST 域配置
- <s1>
- dis stp region-configuration? ?Oper configuration ?? Format selector?
- ? :0? ? ? ? ? ? ? ?? Region name? ? ? ? :huawei? ? ? ? ? ? ? ?? Revision
- level ? ? :1 ?? Instance ? VLANs Mapped ? ? ? 0 ? ? ? 1 to 9, 11 to 19,
- 21 to 4094 ? ? ? 1 ? ? ? 10 ? ? ? 2 ? ? ? 20
在 s1,s2,s3 查看三个实例中的生成树状态和统计的摘要信息
- [s1]dis stp instance 0 brief
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 0? ? Ethernet0/0/1 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/2 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/3 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- [s1]dis stp instance 1 brief
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 1? ? Ethernet0/0/1 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- ?? 1? ? Ethernet0/0/2 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
- ?? 1? ? Ethernet0/0/3 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- [s1]dis stp instance 2 brief
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 2? ? Ethernet0/0/1 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- ?? 2? ? Ethernet0/0/2 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
可以看到 s1 交换机的 Ethernet0/0/2 端口在实例 1 和实例 2 中都是处于 DISCARDING 状态, 要实现这条链路被利用, 配置 s1 交换机在实例 2 中为根交换机
[s1]stp instance 2 priority 0
再次查看生成树状态和统计的摘要信息
- [s1]dis stp brief?
- ?MSTID? Port? ? ? ? ? ? ? ? ? ? ? ? Role? STP State ? ? Protection
- ?? 0? ? Ethernet0/0/1 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/2 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
- ?? 0? ? Ethernet0/0/3 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 1? ? Ethernet0/0/1 ? ? ? ? ? ? ? ROOT? FORWARDING? ? ? NONE
- ?? 1? ? Ethernet0/0/2 ? ? ? ? ? ? ? ALTE? DISCARDING? ? ? NONE
- ?? 1? ? Ethernet0/0/3 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 2? ? Ethernet0/0/1 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
- ?? 2? ? Ethernet0/0/2 ? ? ? ? ? ? ? DESI? FORWARDING? ? ? NONE
可以看到, Ethernet0/0/2 在实例 2 中为指定端口, 状态为 FORWARDING 了, 达到了流量分担的目的, 有效的利用了网络资源, 使 s1 的两条上行链路可以互相备份
学习自华为技术认证 HCNA 网络技术实验指南
来源: http://www.bubuko.com/infodetail-3267252.html