三、生成树协议(Spanning Tree Protocol,STP)

  • 生成树协议(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
      • 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
        • 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
      • 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 #设置实例开销

 

本文链接:https://my.lmcjl.com/post/5059.html

展开阅读全文

4 评论

留下您的评论.