Cyber_Security_Notes/A. 第一阶段/13_STP生成树协议.md
2024-08-29 08:54:54 +08:00

14 KiB
Raw Blame History

STP 生成树协议

一、为什么需要STP协议

  1. 局域网中容易出现的问题

    • 单点故障和单链路故障,即:当某一条链路故障或某一台设备故障导致大面积主机网络中断
  2. 如何预防单点故障和单链路故障

    • 增加冗余/备份设备:预防单点故障
    • 增加冗余/备份链路:预防单链路故障
  3. 增加冗余/备份链路后,引发的新的问题

    • 交换机与交换机之间增加备份链路后:极有可能形成环状网络,形成二层环路

      二层环路:极有可能会引发广播风暴

      广播风暴一旦形成:会造成网络拥塞,设备宕机,网络不可用

  4. 如何解决因二层环路所导致的广播风暴?

    • STP协议可以解决二层环路STP会形成一个物理有环逻辑无环的网络

二、STP协议

  1. STP是什么

    STPSpanning Tree Protocol 生成树协议

  2. STP的作用如何实现逻辑无环如何防止广播风暴

    所有交换机物理互相连接

    所有交换机启动后,都运行生成树协议

    通过生成树协议,逻辑上阻塞端口,从而形成一个逻辑无环拓扑,避免广播风暴。

    当现在链路出现问题,被阻塞的链路可以重新启用,从而形成新逻辑无环拓扑,起到了链路备份的作用

  3. STP的工作原理

    • 步骤1选举根网桥Root Bridge作为整个网络的根
    • 步骤2确定根端口(Root Port RP)在每个非根交换机上选举1个根端口-RP-根端口)
    • 步骤3确定指端口(Designated Port DP)在每条链路每个网段上选举1个指定端口-DP-指定端口)
    • 步骤4阻塞备用端口(Alternate Port AP),阻塞非根、非指定端
  4. 步骤1选举根网桥

    • 比较网桥ID(BID),选择网桥ID值最小的交换机为根网桥
    • BID:优先级+MAC总长度8字节
    • 优先级默认32768
    • 理论范围 0-65535
    • 实际范围 0-61440 -步长值 4096
  5. 步骤2确定根端口(Root Port RP)

    1. 每个非根交换机上选举1个根端口-RP-根端口)

      • 非根交换机到根交换机的根路径开销值最小的端口(根路径成本最小)
      • 链路带宽 带宽越高 成本值越小
      • 开销 cost (到达根交换机的路径成本)
      • 默认值 100Mbit端口【200000】 1000Mbit1G端口【20000】 10000Mbit10G端口【2000】
    2. BID:优先级+MAC对端设备的

    3. PID端口ID:优先级+端口号 (对端设备的)

      端口优先级默认值128 范围0-240 步长值16

  6. 步骤3确定指端口(Designated Port DP)

    1. 在每条链路每个网段上选举1个指定端口-DP-指定端口)

      • 一条链路上到根交换机的根路径开销值最小的端口(根路径成本最小)

        根桥上的接口都是指定端口

    2. 如果根路径成本相同则对比端口所在交换机的网桥ID网桥ID小的端口为指定端端口自己所在的网桥ID

    3. PID端口ID:优先级+端口号(自己的)

      端口优先级默认值128 范围0-240 步长值16

  7. STP基础配置

    [SW1]display stp					//查看生成树状态信息
    [SW1]display bridge mac-address		//查看交换机自己的MAC
    [SW1]display stp brief				//查看接口STP简要信息
    [SW1]stp priority 4096				//修改BID中的优先级
    
  8. BPDU报文

    1. BPDU桥协议数据单元
      • 作用交换机之间通过周期性发送BPDU报文来实现STP功能
    2. BPDU的四个重要字段
      • 根网桥ID根交换机的BID
      • 根路径开销本端口累计到根桥的开销值cost值
      • 发送网桥ID本交换机的BID
      • 端口ID发送该BPDU报文的端口的ID
    3. BPDU 类型
      • 配置 BPDU 和拓扑变更 BPDU。
  9. STP端口的5种状态

    • 禁用disabled) 强制关闭没有启动STP协议
    • 阻塞blocking)只接收BPDU报文不发送BPDU报文
    • 侦听Listening)比较BPDU报文确定交换机角色和端口角色
    • 学习Learning)基于端口上收到的数据帧学习MAC地址表
    • 转发forwardding):端口最终的状态,能够发送和接收用户数据
  10. STP 3种的计时器

    1. hello 时间端口发送的BPDU报文的时间间隔默认是2秒
    2. 转发延迟forward delay侦听—学习15秒 、学习—转发15秒
    3. 最大老化时间Max Age)一个端口最大的“没有接收BPDU”的时间间隔20秒

    50秒的转发延迟

三、RSTP快速生成树协议

  1. RSTP快速生成树在STP的基础上优化而来
    • 作用:实现网络的快速收敛,降低网络故障时间,提高数据转发的效率
  2. RSTP对STP的改进
    • 引入了P/A 机制(让指定端口尽快进入转发状态)
    • 增加了2种端口角色BP和AP
    • Backup Port备份端口是指定端口的备份端口。
    • Alternate Port备用端口是根端口的替换端口。
    • 减少了3种端口状态禁用、阻塞、侦听三种状态合为一种

四、MSTP多生成树协议

  1. MSTP概述

    1. MSTP作用

      • 默认生成树协议只形成一个网络拓扑,不能有效利用所有网络带宽
      • 为了实现网络的负载均衡需要让网络形成多个无环拓扑让不同vlan的主机选择不同的拓扑来传数据
    2. 端口状态

      • Discarding (丢弃)相当于STP中的禁用、侦听、阻塞不转发用户数据
      • Learning(学习)和STP 中的学习状态相同
      • Forwarding(转发)和STP中的转发状态相同
    3. MSTP配置

      • 每个交机创建vlan,交换相连的接口配置为trunk

      • 配置STP模式为MSTP

        [SW1]stp mode mstp //修改mstp模式华为设备默认模式MSTP
        

        交换机创建MSTP域、定义域名实例和vlan的对应关系

        交换机上激活MSTP区域配置

  2. 配置MSTP由SW1为vlan10的根SW2为vlan20的根

    • 配置步骤

      1. 在所有的交换机中都创建vlan10和vlan20
      2. 交换机连接PC的接口设置为access模式并加入指定的vlan
      3. 交换机和交换机互联的接口设置trunk模式并允许vlan10和vlan20 通过
      4. 在所有的交换机中配置MSTP所有交换机中的MSTP配置都要完全相同
      5. 指定SW1为vlan10的主根
      6. 指定SW2为vlan20的主根
    • 配置命令

      • S1、S2、S3创建vlan并配置连接交换机的端口为trunk

        [S1]vlan batch 10 20
        [S1]port-group 1
        [S1-port-group-1]group-member g0/0/5 g0/0/6
        [S1-port-group-1]port link-type trunk 
        [S1-port-group-1]port trunk allow-pass vlan 10 20
        
        [S2]vlan batch 10 20
        [S2]port-group 1
        [S2-port-group-1]group-member g0/0/5 g0/0/6
        [S2-port-group-1]port link-type trunk 
        [S2-port-group-1]port trunk allow-pass vlan 10 20
        
        [S3]vlan batch 10 20
        [S3]port-group 1
        [S3-port-group-1]group-member g0/0/5 g0/0/6
        [S3-port-group-1]port link-type trunk 
        [S3-port-group-1]port trunk allow-pass vlan 10 20
        
      • 配置PC1加入vlan10、PC2加入vlan20

        [S3]interface GigabitEthernet 0/0/1
        [S3-GigabitEthernet0/0/1]port link-type access 
        [S3-GigabitEthernet0/0/1]port default vlan 10
        [S3]interface GigabitEthernet 0/0/2
        [S3-GigabitEthernet0/0/2]port link-type access 
        [S3-GigabitEthernet0/0/2]port default vlan 20
        
      • S1、S2、S3配置MSTP区域并激活

        [S1]stp mode mstp 启用MSTP协议
        [S1]stp region-configuration 创建MSTP区域
        [S1-mst-region]region-name ntd定义区域名为ntd
        [S1-mst-region]instance 1 vlan 10指定实例与vlan的对应关系
        [S1-mst-region]instance 2 vlan 20
        [S1-mst-region]active region-configuration激活区域配置
        
        [S2]stp mode mstp 启用MSTP协议
        [S2]stp region-configuration 创建MSTP区域
        [S2-mst-region]region-name ntd定义区域名为ntd
        [S2-mst-region]instance 1 vlan 10指定实例与vlan的对应关系
        [S2-mst-region]instance 2 vlan 20
        [S2-mst-region]active region-configuration激活区域配置
        
        [S3]stp mode mstp 启用MSTP协议
        [S3]stp region-configuration 创建MSTP区域
        [S3-mst-region]region-name ntd定义区域名为ntd
        [S3-mst-region]instance 1 vlan 10指定实例与vlan的对应关系
        [S3-mst-region]instance 2 vlan 20
        [S3-mst-region]active region-configuration激活区域配置
        
      • 配置SW1为vlan10的根、SW2为vlan20的根

        [S1]stp instance 1 priority 4096
        [S2]stp instance 2 priority 4096
        
    • 查看验证

      <S1>display stp instance 1 brief 
      查看S1的instance 1 g0/0/5 g0/0/6都是指定接口
      
      <S2>display stp instance 2 brief 
      查看S2的instance 2 g0/0/5 g0/0/6都是指定接口
      
  3. 实验MSTP负载均衡

    image-20240828193446020

    • 需求

      • PC1属于 vlan 10 IP地址为 192.168.10.1/24网关为 192.168.10.254
      • PC2属于 vlan 20 IP地址为 192.168.20.1/24网关为 192.168.20.254
      • 确保PC1与PC2互通
      • 配置 MSTP SW1为 vlan10的主根、vlan20的次根SW2为vlan10的主根、vlan10的次根
    • 配置步骤

      1. 配置PC的IP地址
      2. 在所有的交换机中都创建vlan10和vlan20
      3. 交换机连接PC的接口设置为access模式并加入指定的vlan
      4. 交换机和交换机互联的接口设置trunk模式并允许vlan10和vlan20 通过
      5. 在所有的交换机中配置MSTP所有交换机中的MSTP配置都要完全相同
      6. 指定SW1为vlan10的主根 vlan20的备根
      7. 指定SW2为vlan20的主根 vlan10的备根
      8. 配置路由器接口的IP地址
    • 配置命令

      • S1、S2、S3创建vlan并配置连接交换机的端口为trunk

        [S1]VLAN batch 10 20
        [S1]port-group 1
        [S1-port-group-1]group-member G0/0/5 G0/0/6
        [S1-port-group-1]port link-type trunk 
        [S1-GigabitEthernet0/0/5]port trunk allow-pass vlan ALL
        
        [S2]VLAN batch 10 20
        [S2]port-group 1
        [S2-port-group-1]group-member G0/0/5 G0/0/6
        [S2-port-group-1]port link-type trunk 
        [S2-GigabitEthernet0/0/5]port trunk allow-pass vlan ALL
        
        [S3]VLAN batch 10 20
        [S3]port-group 1
        [S3-port-group-1]group-member G0/0/5 G0/0/6
        [S3-port-group-1]port link-type trunk 
        [S3-GigabitEthernet0/0/5]port trunk allow-pass vlan ALL
        
      • S1、S2、S3配置MSTP区域并激活

        [S1]stp mode mstp 启用MSTP协议
        [S1]stp region-configuration 创建区域
        [S1-mst-region]region-name ntd 定义区域名为ntd
        [S1-mst-region]instance 1 vlan 10 指定vlan与实例的对应关系
        [S1-mst-region]instance 2 vlan 20
        [S1-mst-region]active region-configuration 激活区域配置
        
        [S2]stp mode mstp 启用MSTP协议
        [S2]stp region-configuration 创建区域
        [S2-mst-region]region-name ntd 定义区域名为ntd
        [S2-mst-region]instance 1 vlan 10 指定vlan与实例的对应关系
        [S2-mst-region]instance 2 vlan 20
        [S2-mst-region]active region-configuration 激活区域配置
        
        [S3]stp mode mstp 启用MSTP协议
        [S3]stp region-configuration 创建区域
        [S3-mst-region]region-name ntd 定义区域名为ntd
        [S3-mst-region]instance 1 vlan 10 指定vlan与实例的对应关系
        [S3-mst-region]instance 2 vlan 20
        [S3-mst-region]active region-configuration 激活区域配置
        
      • 配置S1为vlan10的主根、vlan20的次根网桥并查看配置

        [S1]stp instance 1 priority 0 
        [S1]stp instance 2 priority 4096
        
      • 配置S2为vlan20的主根、vlan10的次根根网桥并查看配置

        [S2]stp instance 2 priority 0
        [S2]stp instance 1 priority 4096
        
      • 配置PC1加入vlan10、PC2加入vlan20

        [S3]interface GigabitEthernet 0/0/1
        [S3-GigabitEthernet0/0/1]port link-type access 
        [S3-GigabitEthernet0/0/1]port default vlan 10
        [S3]interface GigabitEthernet 0/0/2
        [S3-GigabitEthernet0/0/2]port link-type access 
        [S3-GigabitEthernet0/0/2]port default vlan 20
        
      • 配置S1与路由相连的接口加入vlan10

        [S1]interface GigabitEthernet 0/0/1
        [S1-GigabitEthernet0/0/1]port link-type access 
        [S1-GigabitEthernet0/0/1]port default vlan 10
        
      • 配置S2与路由相连的接口加入 vlan20

        [S2]interface GigabitEthernet 0/0/2
        [S2-GigabitEthernet0/0/2]port link-type access 
        [S2-GigabitEthernet0/0/2]port default vlan 20
        
      • 配置路由器接口IP

        [R1]interface GigabitEthernet 0/0/1
        [R1-GigabitEthernet0/0/1]ip address 192.168.10.254 24
        [R1]interface GigabitEthernet 0/0/2
        [R1-GigabitEthernet0/0/2]ip address 192.168.20.254 24
        
      • 测试与验证

        pc1 ping  pc2  通
        
      • 查看验证

        <S1>display stp instance 1 brief 
        查看S1的instance 1 g0/0/5 g0/0/6都是指定接口
        
        <S2>display stp instance 2 brief 
        查看S2的instance 2 g0/0/5 g0/0/6都是指定接口