- 生成树协议(Spanning Tree Protocol,STP)
- STP
- 为什么需要生成树
- 冗余/备份是必须的,环路不可避免
- 环路危害
- 广播风暴
- MAC地址学习错误/震荡/漂移 无法通信/重复数据帧接收
- 什么是生成树STP
- 在二层网路中,有选择性地阻塞环路中的某个接口来消除二层环路,·形成树状拓扑,避免了环路,同时还具备链路备份的功能, 当活动链路发生故障时,STP可以激活冗余链路,恢复网络的连通性。
- 生成树类型
- STP 广义上指所有生成树,狭义上指的是生成树的802.1D协议(STP)
- STP 802.1D
- RSTP 802.1W
- MSTP 802.1S
- PVST+ —>STP的改进 思科私有
- Rapid PVST+ —>RSTP的改进 思科私有
- BPDU Bridge Protocol Data Unit 桥协议数据单元
- Root ID(根桥ID)
- 由根网桥的优先级和48位的mac地址组成,优先级可人工配置,取值范围0-65535,缺省值为32768,优先级为4096的倍数,所以取值范围为0-61440,数值越小越优先
- 交换机刚启动的时候Root ID=Bridge ID
- Root Path Cost(RPC)根路径开销
- 从发送网桥到根网桥的路径开销,即最短链路上所有开销的代数和
- 端口的开销值和端口的带宽有关,带宽越高,花销越小
- stp cost cost命令取决于路径开销计算方法:
- 1. 使用华为的私有计算方法时, cost取值范围是1~200000。
- 2. 使用IEEE 802.1d标准方法时, cost取值范围是1~65535。
- 3. 使用IEEE 802.1t标准方法时, cost取值范围是1~200000000。
- 华为设备默认使用IEEE 802.1t标准来计算路径开销
- 10M—2000000
- 100M-200000
- 1000M-20000
- 10G-2000
- 思科默认 802.1d标准
- 10M—100
- 100M-19
- 1000M-4
- 10G-2
- stp pathcost-standard { dot1d-1998 | dot1t | legacy }命令用来配置指定交换机上路径开销值的标准。
- Bridge ID(BID)桥ID
- 由网桥的优先级和48位的mac地址组成,优先级可人工配置,取值范围0-65535,缺省值为32768,优先级为4096的倍数,数值越小越优先
- Port ID(PID)端口ID
- 生成树的选举过程就是比较BPDU的优劣过程,数值越小越优
- BPDU比较原则
- 1、Root ID最小的为根桥
- 2、如果Root ID一致,比较Root Path cost,值越小表示到根桥距离越近,根路径花销越小越优
- 3、如果RID/Path Cost相同,比较Bridge ID,越小越优
- 4、如果RID/Path Cost/Bridge ID相同,那么Port ID越小越优
- BPDU在STP模式的类型
- 配置BPDU 网络正常运行的时候
- TCN 拓扑变化的时候发送BPDU
- Root ID(根桥ID)
- BPDU报文
BPDU字段包含的信息:
Protocol ID 协议ID
Version STP版本(三种)
STP(802.1D)传统生成树 值为0 RSTP(802.1W)快速生成树 值为2 MSTP(802.1S)多生成树 值为3
Message Type 消息类型(常见的两种)
配置BPDU:负责建立,维护STP拓扑 TCN BPDU:传达拓扑变更
Root ID 根桥ID
Cost of Path 路径开销
Bridge ID 桥ID
Port ID 端口ID
Message Age 当前消息年龄(STP每经过一台交换机,该字段+1,同步不同位置的设备根桥超时)
Max Age 最大消息年龄(超过则代表根桥故障)
Hello Time 问候时间(根桥通过不断发送STP维持自己的地位,Hello time 是发送的间隔时间)
Forward Delay 端口从listening -> learning 或 learning -> forwarding 的转态需要时间
- 生成树计算原理/选举原则
- 根桥(Root) Root ID最小
- 根端口RP(Root port)
- 每个非根桥上选举一个根端口
- 非根交换机去往根桥路径最优的端口
- 一个运行生成树协议的交换机上最多只有一个根端口,根桥没有根端口
- 比较交换机上所有接口收到的BPDU,RPC(小)—>BID(小)—>PID(小)
- 指定端口DP(Design port)
- 每个交换网段选举一个指定端口,每个网段有且只能有一个指定端口
- 一般情况下, 根桥的每个端口都是指定端口。
- 指定端口是交换机向所连网段转发配置BPDU的端口
- 发出去的BPDU和对端发送的BPDU进行比较,发出去的优,表示此接口为DP,否则对端DP
- 预备端口/阻塞端口AP(Alternater port
- 一个端口既不是指定端口也不是根端口, 则此端口为预备端口。 预备端口将被阻塞。
- 生成树端口角色.
- 根端口 Root port :RP
- 指定端口 designated port DP
- 预备端口 Alternate / Blocking port
- STP端口状态
- 1.Disabled:禁用状态,不参与生成树计算,不发送任何报文,端口处于down状态
- 2.Blocking(Discarding):阻塞状态,参与生成树计算,不接收或转发数据,接收但不发送BPDU,不进行MAC地址学习
- 3.Listening:监听状态,不接收或转发数据,接收并发送BPDU,不进行MAC地址学习(在选举根桥、根端口、指定端口)
- 4.Learning:学习状态,不接收或转发数据,接收并发送BPDU,开始MAC地址学习,在learning状态学习MAC,可以避免forwarding状态的时候由于未知单播而泛洪。
- 5.Forwarding:接收并转发数据,接收并发送BPDU,进行MAC地址学习
- 由于在网络中网络拓扑消息的传播需要一定时间的延时,为了避免在网络中产生临时环路,生成树协议规定不能从Blocking状态直接过渡到Forwarding,人工引入了两个状态 Listening、Learning
- 从Listening状态到learning状态需要一个Forward delay=15s
- 从Learning状态到Forwarding状态也需要一个Forward delay=15s
- BPDU的定时器
- BPDU报文中后四个值时定时器的值
- 1、Hello Timer:根桥生成BPDU配置消息的周期,默认值为2秒
- 2、Forward Delay:配置消息传播到全网的最大时延,默认为15秒
- 3、Message Age:从根桥生成BPDU配置消息开始,到当前时间为止配置消息的存活时间
- 4、Max Message Age:BPDU配置消息存活的最大时间,默认时间为20秒
- STP拓扑变更收敛时间
- 当拓扑发生变更以后,网络恢复到正常转发状态需要的时间 30-50s
- STP:当网络拓扑发生变化时,下游交换机不断发送TCN BPDU报文给上游交换机, 上游设备接收到
- TCN BPDU报文后发送TCA报文 ,表示确认,下游停止发送TCN。直到根交换机接收到TCN BPDU报文
- 向全网发送TC BPDU ,收到TC BPDU的交换机如果MAC老化时间大于15s,将MAC地址表老化时间设为15s 。(华为收到TC 置位的BPDU直接删除MAC地址表)
- 配置命令
- 华为
- stp enable//生成树开启,默认生成树已经开启
- stp mode stp/RSTP/MSTP //修改生成树的模式,默认MSTP
- stp priority X //修改根桥优先级,4096的倍数
- [SW1-GigabitEthernet0/0/1]stp cost X
- [SW1-GigabitEthernet0/0/1]stp port priority X //16的倍数
- 思科配置
- 默认生成树开启,模式是PVST+(per vlan STP)
- spanning mode X ///修改生成树的模式
- spanning-tree vlan 10 priority //修改根桥的优先级,4096的倍数
- spanning-tree vlan 10 cost X//修改花销值
- spanning-tree vlan 10 port-priority X//修改接口的优先级,16的倍数
- 华为
- 查看命令
- 华为
- display bridge mac-address //查看交换机MAC
- display stp brief//查看生成树角色,状态
- dis stp //查看生成树详细信息
- 思科
- show spanning brief
- show mac-add //查看交换机MAC
- 华为
- 为什么需要生成树
- RSTP
- STP不足 收敛很慢:30s-50s
- RSTP改进
- 端口角色
- 预备端口AP:根端口的备份
- 备份端口BP:DP口的备份
- 边缘端口:交换机下接PC机
- 端口状态 变成三种 discarding、Learning、forwarding
- P/A机制
- Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。
- 指定端口通过与相连的网桥进行一次握手,快速进入转发状态。
- P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。
- 拓扑变更优化
- STP:当网络拓扑发生变化时,下游交换机不断发送TCN BPDU报文给上游交换机, 上游设备接收到TCN BPDU报文后发送TCA报文 ,表示确认,下游停止发送TCN。直到根交换机接收到TCN BPDU报文向全网发送TC BPDU ,收到TC BPDU的交换机如果MAC老化时间大于15s,将MAC地址表老化时间设为15s 。(华为收到TC 置位的BPDU直接删除MAC地址表)
- TCN BPDU报文:用来向上游设备乃至根桥通知拓扑变化。上游设备指定接口处理此报文
- TCA:是上游设备用来告知下游设备已经知道拓扑变化,通知下游设备停止发送TCN BPDU报文。
- TC标记的配置BPDU报文主要是上游设备用来告知下游设备拓扑发生变化,请下游设备直接删除桥MAC地址表项,从而达到快速收敛的目的。
- RSTP:当拓扑发生变更,变更点都可以发送TC报文,收到TC报文MAC地址清空。STP是Root才发TC报文。
- 端口角色
- RSTP保护机制
- BPDU保护(思科:BPDU Guard)
- 华为配置
- system-view
- stp bpdu-protection
- Error-down auto-recoverycause bpdu-protection interval 30 //error-down接口
- 自动恢复,否则就是手动undo shutdown
- 思科配置
- (1)全局(作用范围是PortFast的端口,就是在配置了PortFast后再在全局下配置BPDU Guard才会生效):
- switch(config)#spanning-tree portfast bpduguard default
- (2)接口下启动(无需在这个接口下配置PortFast),则无论是正常端口还是portfast端口,到BPDU后都会变成errodisable。接口下配置:
- Switch(config-if)#spanning-tree bpduguard ?
- disable Disable BPDU guard for this interface
- enable Enable BPDU guard for this interface
- errdisable recovery cause all
- errdisable recovery interval 30errordisable接口自动恢复,否则就是手动
- shutdown/no shutdown
- (1)全局(作用范围是PortFast的端口,就是在配置了PortFast后再在全局下配置BPDU Guard才会生效):
- 华为配置
- BPDU Filter
- 应用场景
对于运行生成树协议的网络,当通过命令stp edged-port enable将当前端口配置成边
缘端口,该端口便不再参与生成树计算,从而帮助加快网络拓扑的收敛时间以及加强
网络的稳定性。可是端口仍然会发送BPDU报文,这可能导致BPDU报文发送到其他网
络,引起其他网络产生震荡。
通过在该端口上配置命令stp bpdu-filter enable便可解决此问题。在网络边缘设备
上配置该命令,使边缘端口不处理、不发送BPDU报文,该端口即为BPDU filter端口。
- 华为
- 接口配置
- 接口下启用BPDU Filter特性,此接口会忽略收到的BPDU数据报文,也不会发送任何BPDU数据报文。(但是抓包的时候可以收到,即设备不会处理此数据报文))
- [Huawei-GigabitEthernet0/0/1]stp bpdu-filter enable
- 全局配置
- 全局启用BPDU Filter特性,作用于配置了edged port的接口,如果此接口收到了BPDU,那么此edged port将处于error-down
- [Huawei]stp bpdu-filter default
- 接口配置
- 思科
- 接口配置
- 接口下启用BPDU Filter特性,此接口会忽略收到的BPDU数据报文,也不会发送任何BPDU数据报文。
- Switch(config-if)#spanning-tree bpdufiter enable
- 全局配置
- 全局启用BPDU Filter特性,作用于配置了Portfast但没有单独配置BPDU Filter特性的接口,如果此接口收到了BPDU,那么它们不在处于Portfast状态,BPDU Filter特性也会被禁用,接口恢复生成树计算。
- Switch(config)#spanning-tree portfast bpdufiter default
- 接口配置
- 若同时配置了BPDU Guard和BPDU Filter,则BPDU Filter生效
- 应用场景
- 根桥保护
- 华为配置
- Interface G0/0/0 //指定端口配置
- stp root-protection
- 思科配置
- Switch(config-if)#spanning-tree guard root
- 华为配置
- TC-BPDU泛洪保护
- System-view
- stp tc-protection
- stp tc-protection threshold 6
- BPDU保护(思科:BPDU Guard)
- RSTP配置
stp enable
Stp mode rstp //设置生成树模式,思科spanning-tree mode rstp
stp bpdu-protection
interface GigabitEthernet0/0/3
stp edged-port enable
interface GigabitEthernet0/0/4
stp edged-port enable //设置边缘端口,思科spanning-tree portfast
- stp root primary //设置设备成为主根
- 思科查看:
- show spanning summary
- show spanning ?
- MSTP
- RSTP不足 无法分流,所有vlan一棵树
- 相同MST域的条件
- 都启动了MSTP。
- 具有相同的域名。
- 具有相同的VLAN到生成树实例映射配置。
- 具有相同的MSTP修订级别配置
- 配置
- 华为:
stp enable // 默认开启
stp mode mstp //默认生成树模式
stp region-configuration
region-name hcip
instance 10 vlan 10
instance 20 vlan 20
active region-configuration
stp instance 10 priority 0
stp instance 20 priority 4096
- 思科:
config)#spanning-tree mode mst //启用MST,默认为PVST+
(config)#spanning-tree mst configuration //进入MST配置模式
(config-mst)#name ccnp //实例Name
(config-mst)#instance 10 vlan 10
(config-mst)#instance 20 vlan 20
(config)#spanning-tree mst 10 port-priority 0
或者
(config)#spanning-tree mst 10 root primary
(config)#spanning-tree mst 20 root secondary
stp instance 1 cost 20000 #设置实例开销
- 华为:
- STP
本文链接:https://my.lmcjl.com/post/5059.html
展开阅读全文
4 评论