生成树(STP)

1.详细说明STP的工作原理

在二层交换网络中,逻辑的阻塞部分的接口,实现从跟交换机到所有节点唯一的路径称为最佳路径,生成一个没有环路的拓扑。当最佳路径出现故障时,个别被阻塞的接口将打开,形成备份链路。

2. STP的接口状态有哪些,每个状态的作用是什么?

STP的接口状态

状态名称状态描述
禁用(Disable)该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down
阻塞(Blocking)当该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习
侦听(Listening)当接口处于该状态时,表明STP初步认定该接口为根接口和指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习
学习(Learning)当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧时会进行MAC地址学习
转发(Forwarding)处于该状态的接口可以正常的收发业务数据帧,也会进行BPDU处理。接口的角色需是根接口或指定接口才能进入转发状态

3. 说明STP在结构突变时的表现

结构突变主要有三种故障:根桥故障、直连链路故障、非直连链路故障

(1)根桥故障

<1> 根桥故障

  • 在稳定的STP网络中,非根桥会定期收到来自根桥的BPDU报文
  • 如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文
  • 如果下游的交换机一直收不到BPDU报文,Max Age计时器(缺省:20s)就会超时,从而导致已经手打的BPDU报文失效。此时,非根桥会互相发送配置BPDU,重新选举新的根桥。

<2> 端口状态

SW3的预备端口,20S会从Blocking状态进入到Listening状态,在进入Learning状态,最终进入Forwarding状态,进行用户流量的转发。

<3> 收敛时间

根桥故障会导致50s左右的恢复时间,等于Max Age加上两杯的Forward Delay收敛时间

(2)直连链路故障

<1> 直连链路故障

  • 当两台交换机之间用两条链路互连时,其中一条是主用链路,另一条为备用链路。
  • 当网络稳定时,交换机SW2会检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。

<2> 端口状态

备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态

<3> 收敛时间

直连链路故障,备用端口会经过30s后恢复转发状态

(3)非直连链路故障

<1> 非直连故障

  • 在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文
  • 若SW1和SW2之间的链路发生了某种故障(非物理故障),因此导致SW2一直收不到来自根桥的SW1的BPDU报文,Max Age计时器(缺省:20s)就会超时,从而导致已经收到的BPDU报文失效。
  • 此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥
  • 在此期间,SW3的预备端口一直收不到包含根桥的BPDU,Max Age计时器超市后,端口进入到Listening状态,开始向SW2“转发”从上游发来的包含根桥ID的BPDU
  • 因此,Max Age计时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行STP重新计算,SW2发现SW3发来的BPDU更优,放弃宣称自己是根桥,并且重新定义端口角色。

<2> 端口故障

SW3的预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发

<3> 收敛时间

非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forwarding Delay收敛时间

4. RSTP对于STP的改进项有哪些?仔细说明

(1)改进点1:端口角色

通过对端口的增补,简化了生成树协议的理解便于部署

<1> RSTP的端口角色一共有四种:根端口、指定端口、Alternate端口和Backup端口

<2> 根端口和指定端口的作用和STP中相同。Alternate端口和Backup端口的作用描述如下:

从配置BPDU的报文发送角度来看:

  • Alternate端口就是由于学习到其他网桥发送的配置BPDU报文而阻塞的端口
  • Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口

从用户流量角度来看:

  • Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口
  • Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路

<3> 给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程

(2)改进点2:端口状态

RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分

  • Discarding状态:不转发用户流量也不学习MAC地址
  • Learning状态:不转发用户流量但是学习MAC地址
  • Forwarding状态:既转发用户流量又学习MAC地址

(3)改进点3:RST  BPDU

<1> RSTP的配置BPDU充分利用了STP报文中的Flag字段,明确了端口角色

<2> 除了保证和STP格式基本一致之外,RSTP做了如下变化:

  • type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃
  • flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU

<3> RST BPDU的报文格式

<4> RST BPDU与STP配置和BPDU报文格式的不同点。包括:BPDU类型和Flag字段

1> BPDU类型,1 Byte,RST BPDU的类性质为0x02

2> 标志,1 Byte,包括:

bit 7:TCA,表示拓扑变化确认
bit 6: Agreement,表示同意,用于P/A机制;. bit 5: Forwarding,表示转发状态

bit 4:Learning,表示学习状态
bit 3和bit2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端 口,11表示指定端口
bit 1: Proposal,表示提议,用于P/A机制;. bit 0: TC,表示拓扑变化。

(4)改进点4:配置BPDU的处理

(5)改进点5:快速收敛机制

注意:这个P/A机制是RSTP完成快速收敛的核心手段,因为他改变了STP依照计时器收敛的方法,可以理解为完成选举后立即切换状态,完成收敛。

  • 事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个ForwardDelay所有端口才能进行转发
  • 而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口进入Forwarding状态的速度

(6)改进点6:拓扑变更机制

<1> 在STP中,如果拓扑发生了变化,需要先向根桥传递TCN BPDU,在由根桥来通知拓扑变更,泛洪TC置为的配置BPDU

<2> 在RSTP中,通过新的拓扑变更机制,TC置位的RST BPDU会快速的在网络中泛洪

(7)改进点7:保护功能

<1> BPDU保护

在交换设备上,通常将直接与用户终端(如PC机)或文件服务器等非交换设备相连的端口 配置为边缘端口。

如上图所示:

  • sw3与某主机互联,并设置该互联端口为边缘端口。
  • 后来该主机被恶意用户侵占,并伪造RST BPDU攻击SW3,因此边缘端口会收到RST BPDU,失去边缘端口特性,并进行生成树计算

<2> 根保护

由于维护人员的错误配置或网络中的恶意攻击,根桥有可能会收到优先级更高的RST BPDU,使得根 桥失去根地位,从而引起网络拓扑结构的错误变动。这种拓扑变化,会导致原来应该通过高速链路 的流量被牵引到低速链路上,造成网络拥塞。

如图所示:

  • 网络稳定时,SW1为根桥,向下游设备发送最优RST BPDU。
  • 如果SW2被恶意用户侵占,例如恶意修改SW2的桥优先级,使得SW2的桥优先级优于sw1,此时SW2会主动发送自己的RST BPDU。
  • 当SW1的指定端口收到该RST BPDU后,会重新进行生成树计算,而SW1也会失去根桥的地位,引起拓扑变动。

<3> 环路保护

在运行RSTP的网络中,根端口状态是依靠不断接收来自上游交换设备的RSTBPDU维持。当由于链 路拥塞或者单向链路故障导致根端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重 新选择根端口。

如图所示:

当SW1和SW3之间的链路发生单向链路故障时,SW3由于根端口在超时时间内收不到来 自上游设备的BPDU报文,Alternate端口切换成根端口,根端口切换成指定端口,从而形成了环 路。

<4> 防TC-BPDU攻击

交换设备在接收到TC置位的RST BPDU报文后,会执行MAC地址表项的删除操作。如果有人伪造TC置位的RST BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多RST BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。

如图所示:

如果SW3被恶意用户侵占,伪造大量TC置位的RST BPDU并向外发送。SW2收到这些RST BPDU后,会频繁执行MAC地址表项的删除操作,形成巨大负担。

5.生成树实验

(1)接入层

[sw1]vlan 2
[sw1-vlan2]q
[sw1]port-group group-member g0/0/3 g0/0/4	
[sw1-port-group]port link-type access 
[sw1-GigabitEthernet0/0/3]port link-type access 
[sw1-GigabitEthernet0/0/4]port link-type access 
[sw1-port-group]port default vlan 2
[sw1-GigabitEthernet0/0/3]port default vlan 2
[sw1-GigabitEthernet0/0/4]port default vlan 2
[sw1]int g0/0/1
[sw1-GigabitEthernet0/0/1]port link-type trunk 	
[sw1-GigabitEthernet0/0/1]port trunk allow-pass vlan 2
[sw1-GigabitEthernet0/0/1]undo port trunk allow-pass vlan 1
[sw1]int g0/0/2
[sw1-GigabitEthernet0/0/2] port link-type trunk
[sw1-GigabitEthernet0/0/2] undo port trunk allow-pass vlan 1
[sw1-GigabitEthernet0/0/2] port trunk allow-pass vlan 2
[sw2]vlan batch 3 to 4
[sw2]int g0/0/3
[sw2-GigabitEthernet0/0/3]port link-type access 	
[sw2-GigabitEthernet0/0/3]port default vlan 3
[sw2]int g0/0/4
[sw2-GigabitEthernet0/0/4]port link-type access 	
[sw2-GigabitEthernet0/0/4]port default vlan 4
[sw2]int g0/0/1
[sw2-GigabitEthernet0/0/1]port link-type trunk 
[sw2-GigabitEthernet0/0/1]port trunk allow-pass vlan 3 4
[sw2-GigabitEthernet0/0/1]undo port trunk allow-pass vlan 1
[sw2]int g0/0/2
[sw2-GigabitEthernet0/0/2] port link-type trunk
[sw2-GigabitEthernet0/0/2] undo port trunk allow-pass vlan 1
[sw2-GigabitEthernet0/0/2] port trunk allow-pass vlan 3 to 4

(2)汇聚层

[sw3]vlan batch 2 to 4
[sw3]vlan 100
[sw3-vlan100]q
[sw3]int g0/0/5
[sw3-GigabitEthernet0/0/5]port link-type trunk 
[sw3-GigabitEthernet0/0/5]port trunk allow-pass vlan 2
[sw3-GigabitEthernet0/0/5]undo port trunk allow-pass vlan 1
[sw3]int g0/0/4
[sw3-GigabitEthernet0/0/4]port link-type trunk 
[sw3-GigabitEthernet0/0/4]port trunk allow-pass vlan 3 4
[sw3-GigabitEthernet0/0/4]undo port trunk allow-pass vlan 1
[sw3]port-group group-member g0/0/2 g0/0/3
[sw3-port-group]port link-type trunk
[sw3-GigabitEthernet0/0/2]port link-type trunk
[sw3-GigabitEthernet0/0/3]port link-type trunk
[sw3-port-group] undo port trunk allow-pass vlan 1
[sw3-GigabitEthernet0/0/2] undo port trunk allow-pass vlan 1
[sw3-GigabitEthernet0/0/3] undo port trunk allow-pass vlan 1
[sw3-port-group] port trunk allow-pass vlan 2 to 4
[sw3-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 to 4
[sw3-GigabitEthernet0/0/3] port trunk allow-pass vlan 2 to 4
[sw3]dhcp enable
[sw3]int vlan 100
[sw3-Vlanif100]ip add 10.1.1.1 24
[sw3]int vlan 2
[sw3-Vlanif2]ip add 10.1.12.1 24
[sw3-Vlanif2]dhcp select interface 
[sw3]int g0/0/1
[sw3-GigabitEthernet0/0/1]port link-type trunk 
[sw3-GigabitEthernet0/0/1]port trunk allow-pass vlan 100
[sw3-GigabitEthernet0/0/1]undo port trunk allow-pass vlan 1
[sw4]vlan batch 2 to 4
[sw4]vlan 100
[sw4-vlan200]q
[sw4]int g0/0/4
[sw4-GigabitEthernet0/0/4] port link-type trunk
[sw4-GigabitEthernet0/0/4] undo port trunk allow-pass vlan 1
[sw4-GigabitEthernet0/0/4] port trunk allow-pass vlan 2
[sw4]int g0/0/5
[sw4-GigabitEthernet0/0/5] port link-type trunk
[sw4-GigabitEthernet0/0/5] undo port trunk allow-pass vlan 1
[sw4-GigabitEthernet0/0/5] port trunk allow-pass vlan 3 to 4
[sw4]port-group group-member g0/0/2 g0/0/3
[sw4-port-group]port link-type trunk
[sw4-GigabitEthernet0/0/2]port link-type trunk
[sw4-GigabitEthernet0/0/3]port link-type trunk
[sw4-port-group]undo port trunk allow-pass vlan 1
[sw4-GigabitEthernet0/0/2]undo port trunk allow-pass vlan 1
[sw4-GigabitEthernet0/0/3]undo port trunk allow-pass vlan 1
[sw4-port-group]port trunk allow-pass vlan 2 to 4
[sw4-GigabitEthernet0/0/2]port trunk allow-pass vlan 2 to 4
[sw4-GigabitEthernet0/0/3]port trunk allow-pass vlan 2 to 4
[sw4]dhcp enable 
[sw4]int vlan 200
[sw4-Vlanif200]ip add 10.1.2.1 24
[sw4]int vlan 3
[sw4-Vlanif3]ip add 10.1.13.1 24
[sw4-Vlanif3]dhcp select interface
[sw4]int vlan 4
[sw4-Vlanif4]ip add 10.1.14.1 24
[sw4-Vlanif4]dhcp select interface
[sw4]int g0/0/1
[sw4-GigabitEthernet0/0/1]port link-type trunk 
[sw4-GigabitEthernet0/0/1]port trunk allow-pass vlan 200
[sw4-GigabitEthernet0/0/1]undo port trunk allow-pass vlan 1

(3)核心层

[sw5]vlan 100
[sw5-vlan100]q
[sw5]vlan 200
[sw5-vlan200]q
[sw5]int vlan 100
[sw5-Vlanif100]ip add 10.1.1.2 24
[sw5]int vlan 200
[sw5-Vlanif200]ip add 10.1.2.2 24
[sw5]int g0/0/1
[sw5-GigabitEthernet0/0/1] port link-type trunk
[sw5-GigabitEthernet0/0/1] undo port trunk allow-pass vlan 1
[sw5-GigabitEthernet0/0/1] port trunk allow-pass vlan 100
[sw5]int g0/0/2
[sw5-GigabitEthernet0/0/2] port link-type trunk
[sw5-GigabitEthernet0/0/2] undo port trunk allow-pass vlan 1
[sw5-GigabitEthernet0/0/2] port trunk allow-pass vlan 200

(4)配置生成树

[sw3]stp mode stp ---配置生成树的工作模式
[sw4]stp mode stp 
[sw2]stp mode stp 
[sw1]stp mode stp 
[sw3]stp root primary ---配置当前设备为根桥
[sw4]stp root secondary ---配置当前交换机为备份根桥

由于默认所有接口都要参与生成树,所以将SW3和SW4的G0/0/1接口的生成树关闭,也将连接PC机接口的生成树关闭

[sw3]int g0/0/1
[sw3-GigabitEthernet0/0/1]undo stp enable---关闭接口的生成树
[sw4]int g0/0/1	
[sw4-GigabitEthernet0/0/1]undo stp enable
[sw1]int g0/0/3
[sw1-GigabitEthernet0/0/3]undo stp enable
[sw1]int g0/0/4
[sw1-GigabitEthernet0/0/4]undo stp enable
[sw2]int g0/0/3
[sw2-GigabitEthernet0/0/3]undo stp enable
[sw2]int g0/0/4
[sw2-GigabitEthernet0/0/4]undo stp enable 

查看SW1和SW2的端口状态

查看SW4的端口状态

(5)将根端口修改为g0/0/4

  • 修改RPC
[sw4]int g0/0/3---在根桥收到的接口上修改RPC
[sw4-GigabitEthernet0/0/3]stp cost 1---将RPC修改为1

查看SW4的端口状态

  • 修改PID
[sw3]int g0/0/3---在根桥发送接口上修改PID
[sw3-GigabitEthernet0/0/3]stp port priority 0---将PID修改为1(默认步长为16的倍数)

查看SW4的端口状态

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
EnSP(Enhanced Spanning Tree Protocol)生成树协议是思科(Cisco)针对STP(Spanning Tree Protocol)的一个增强版本,主要用于解决传统STP在某些场景下的不足。与标准STP相比,EnSP引入了更多的功能和改进: 1. **快速收敛**:EnSP支持Fast Convergence,即当网络拓扑发生变化后,能够更快地重新计算并应用新的生成树配置。 2. **MSTP (Multiple Spanning Tree)**:EnSP支持Multiple Spanning Trees,允许在同一交换机上运行多个生成树实例,每个实例对应不同的VLAN或链路类型,提供了更好的灵活性。 3. **端口保护**:如PPPoE Guard、Smart Link等,增强了对边缘端口的安全性和可靠性。 4. **流量优先级**:根据业务需求分配带宽,比如为语音或视频通信提供保证带宽。 5. **配置简化**:EnSP通常具有更友好的命令行界面和自动化的配置工具,便于管理员管理。 要配置EnSP STP,你需要执行以下步骤: - **启用EnSP**:在Cisco设备上启用`spanning-tree protocol enhanced`命令。 - **定义实例**:如果需要MSTP,使用`mst`命令创建并配置不同的生成树实例。 - **设置根桥和优先级**:使用`root bridge`和`priority`参数配置根桥和优先级。 - **配置端口角色**:使用`port fast`、`port protect`等命令配置端口角色。 - **验证配置**:检查配置是否正确,并用`show spanning-tree`命令查看当前的生成树状态。 相关问题: 1. 如何启用EnSP的MSTP模式? 2. 在Cisco设备上如何查看当前的EnSP STP配置? 3. EnSP中的端口保护具体是如何工作的?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值