云计算运维

Windows Server 2003 - Windows Server 2019 系统工具,Liunx系统脚本,Mysql、Nginx、PHP、Redis、K8S、Seafile、Weblogic 、Jenkins、DNS、DHCP、FTP、IIS、Zookeeper、Rabbitmq、Oracle、Tomcat、Mavrn等服务搭建维护,请关注我.

H3C路由交换 STP篇


什么是STP?
STP是二层网络中用于消除环路的协议。

  • 通过阻断冗余链路来消除桥接网络中可能存在的路径回环。
  • 当前活动路径发生故障时,激活冗余备份链路,恢复网络连通性。

STP在IEEE制定的802.1D标准中定义,用于在局域网中消除数据链路层环路。STP可以通过计算,动态的阻断冗余链路。而当活动链路发生故障时,STP又可以激活冗余链路,恢复网络的连通,避免网络中断。

STP的不足

  • 收敛时间长:缺省情况下一个端口从Blocking状态过渡到Forwarding状态至少需要30秒钟(两倍的Forward Delay)。对于一个拓扑不稳定网络,会导致网络的长时间中断。
  • 拓扑变化收敛机制不灵活:STP定义了TCN BPDU,可以使得网络拓扑变化时,在50秒内实现收敛。当网络中有大量主机,主机位置不固定,可能会频繁的上下线,这样会使得交换机频繁发送TCN BPDU,导致网桥MAC地址老化时间长期保持为15秒。MAC地址频繁的刷新会导致网络充斥大量未知单播造成的广播报文,严重影响网络中的应用。

RSTP

RSTP(快速生成树协议)的IEEE标准为802.1w,其消除环路的基本思想和STP保持一致。RSTP具备了STP的所有功能,支持RSTP的网桥可以和支持STP的网桥一同运行。

和STP相比,RSTP的改进之处包括:

  • RSTP减少了端口的状态;
  • RSTP增加了端口的角色;
  • RSTP配置BPDU的格式和发送方式有所改变;
  • 当网络拓扑发生变化时,RSTP处理方式不同,可以实现更为快速的收敛。

边缘端口

当端口直接与用户终端相连,而没有连接到其他网桥或局域网网段上时,该端口即为边缘端口。
边缘端口连接的是终端,当网络拓扑变化时,边缘端口不会产生临时的环路,所以边缘端口可以略过两个Forward Delay时间,直接进入Forwarding状态,无需任何延时。
由于网桥无法自动判断端口是否直接与终端相连,所以用户需要手工将于终端连接的端口配置为边缘端口。

RSTP和STP的兼容运行

RSTP的端口连续三次接收到配置BPDU,则网桥认为该端口和STP网桥相连,该端口将切换到STP协议运行。切换到STP运行的RSTP端口将失去快速收敛特性。将STP设备放在网络边缘,将影响范围降到最小。

当运行STP的网桥移除后,由RSTP模式切换到STP模式的的端口仍将运行在STP模式。可以持续稳定的运行,方式模式的频繁切换,但是牺牲了收敛时间。如果要将STP模式切换回RSTP模式需要手工进行配置

RSTP的配置

开启全局生成树特性

[SW]stp global enable 

选择生成树运行模式

[SW]stp mode rstp          # stp | rstp | mstp | pvst

如果确定某个端口连接的部门不存在回路,则可关闭该端口的生成树功能

[SW-GigabitEthernet1/0/1]undo stp enable 

配置优先级和端口开销

桥ID(Bridge-priority)由桥优先级和MAC地址组成,默认优先级为32768,数值越小优先级越高,最小的为根桥。取值范围0~61440,步长为4096

[SW]stp priority 4096

根路径开销是STP确定根端口角色时用到的重要的参数。链路开销是由端口配置的cost值决定的。

[SW-GigabitEthernet1/0/1]stp cost 200

IEEE 802.1D和802.1t定义了不同速率和工作模式下的以太网链路(端口)开销,根据实际情况的网络运行状况优化了开销的数值定义,指定了私有标准。可以通过命令改变设备支持的端口开销标准

[SW]stp pathcost-standard dot1          #dot1d-1998  dot1t   Legacy 

配置端口优先级

端口ID由两部分组成:PortPriority(端口优先级)+ PortIndex(端口索引)

通过配置命令可以改变端口优先级,改变端口优先级可以改变端口ID的优劣,数值越小表示优先级越高。

取值范围为0~240,且步长为16。默认优先级为128。

[SW-GigabitEthernet1/0/1]stp port priority 16

配置端口的Hello Time

STP中 Hello Time(发送配置BPDU的周期) 的配置需要注意:

  • 较长的Hello Time可以降低生成树计算的消耗;
  • 过长的Hello Time会导致对链路故障的反应迟缓;
  • 较短的Hello Time可以增强生成树的健壮性;
  • 过短的Hello Time会导致频繁发送配置消息,加重CPU和网络负担;

通过命令改变Hello Time值,其中单位厘秒(1秒=100厘秒),默认值2秒。

[SW]stp timer hello 200

配置端口的Max Age

STP中配置 BPDU 的生存期为 Max Age 时需要注意:

  • 配置过长的Max Age 会导致链路故障不能被及时发现;
  • 配置过短的Max Age 可能会在网络拥塞的时候使交换机误认为链路故障,造成频繁的生成树计算。

通过命令改变Max Age值,单位为厘秒(1秒=100厘秒),默认值为20秒。

[SW]stp timer max-age 1000

配置端口的Forward Delay

STP为了防止临时环路,在端口由阻塞状态转向转发状态时设置了中间状态,并在状态切换需等待一定的时间,以保持与远端的设备状态切换同步。根桥的Forward Delay时间确定了状态迁移的时间间隔值。

如果当前设备是根桥,该设备会按照该设置值确定状态迁移时间间隔;非根桥采用根桥设置的Forward Delay参数。

配置时需要注意:

  • 配置过长的Forward Delay会导致生成树的收敛太慢;
  • 配置过短的Forward Delay可能会在拓扑改变的时候,引入暂时的路径回环;

通过命令改变Forward Delay值,其中单位厘秒(1秒=100厘秒),默认值为15秒。

[SW]stp timer forward-delay 2000

配置网络直径

网络直径指网络中任意两台终端设备之间通过的交换机数目的最大值。当用户配置设备的网络直径后,STP自动根据配置的网络直径将Hello Time、Forward Delay与Max Age设置为一个较优的值。当网络直径为默认值7时,对应的三个时间参数也分别为它们的默认值。

通过命令设定交换网络的网络直径,如设定交换网络的网络直径为5。

[SW]stp bridge-diameter 5

RSTP高级配置

当端口直接与用户终端连接,该端口即为边缘端口。网络拓扑发生变化时,边缘端口不会产生临时环路。

通过命令配置端口为边缘端口:

[SW-GigabitEthernet1/0/1]stp edged-port 

运行RSTP(或MSTP)的设备的端口连接着运行STP的设备,该端口会自动迁移到STP兼容模式下工作; 但是如果运行STP协议的设备被拆离,该端口不能自动恢复RSTP(或MSTP)模式下,需要手动操作迫使其迁移到RSTP模式下运行。

在系统视图下执行以下命令,使配置在全局生效;

[SW]stp global mcheck 

在端口视图执行以下命令,则该配置只在当前端口生效;

[SW-GigabitEthernet1/0/1]stp mcheck 

RSTP维护调试命令

显示STP统计和状态信息:

[SW]dis stp    [interface interface_list] [brief] 
[SW]dis stp interface G1/0/1 brief 

打开STP调试开关

<SW>debugging stp packet 

RSTP配置示例

第一步:配置各交换机优先级,SWC优先级为默认无需配置;

[SWA]stp priority 0
[SWB]stp priority 8192
[SWD]stp priority 4096

第二步:配置SWB的边缘端口;

[SWB]int G1/0/24
[SWB-GigabitEthernet1/0/24]stp edged-port 

第三步:启动各交换机的生成树协议;

[SWA]stp global enable 
[SWB]stp global enable 
[SWC]stp global enable 
[SWD]stp global enable 

第四步:将生成树协议模式设置为RSTP;

[SWA]stp mode rstp 
[SWB]stp mode rstp 
[SWC]stp mode rstp 
[SWD]stp mode rstp 

第五步:查看SWB的STP信息

[SWA]dis stp 
-------[CIST Global Info][Mode RSTP]-------
 Bridge ID           : 0.901a-37d6-0100
 Bridge times        : Hello 2s MaxAge 20s FwdDelay 15s MaxHops 20

[SWA]dis stp brief 
 MST ID   Port                                Role  STP State   Protection
 0        GigabitEthernet1/0/1                DESI  FORWARDING  NONE
 0        GigabitEthernet1/0/2                DESI  FORWARDING  NONE

MSTP特性

STP和RSTP的局限:

  • 所有VLAN共享一颗生成树;
  • 无法实现不同VLAN在多条Trunk链路上的负载分担;

当STP/RSTP计算时,网桥上所有的VLAN共享一颗生成树,无法实现不同VLAN在多条Trunk链路上的负载分担,而当某条链路被阻塞后将不会承载任何流量,造成了带宽的极大浪费。

MSTP(Multiple Spanning Tree,多生成树协议),基于实例计算出多颗生成树,实例间实现负载分担。MSTP能使不同VLAN的流量沿各自的路径转发,从而利用冗余链路提供了更好的负载分担机制。

MSTP的基本思想是基于实例(Instance)计算出多个生成树,每一个实例可以包含一个或多个VLAN,每一个VLAN只能映射到一个实例。网桥通过配置多个实例,可以实现不同VLAN组之间的负载分担。

  • MST 域( Multiple Spanning Tree Regions,多生成树域)是由交换网络中的多台设备以及它们之间的网段构成。这些设备具有下列特点:
    • 都启动了 MSTP。
    • 具有相同的域名。
    • 具有相同的 VLAN 到生成树实例映射配置。
    • 具有相同的 MSTP 修订级别配置。
    • 这些设备之间在物理上有链路连通。
  • IST( Internal Spanning Tree,内部生成树)是 MST 域内的一棵生成树。
  • CST 是连接交换网络内所有 MST 域的单生成树。如果把每个 MST 域看作是一个“设备”, CST就是这些“设备”通过 STP 协议、 RSTP 协议计算生成的一棵生成树。例如 图中红色线条描绘的就是CST。
  • CIST 是连接一个交换网络内所有设备的单生成树,由 IST 和 CST 共同构成。例如 图中,每个MST域内的IST加上MST域间的CST就构成整个网络的CIST。
  • 一个 MST 域内可以通过 MSTP 生成多棵生成树,各棵生成树之间彼此独立。每棵生成树都称为一个 MSTI( Multiple Spanning Tree Instance,多生成树实例)。例如 图中,每个域内可以存在多棵生成树,每棵生成树和相应的VLAN对应。这些生成树都被称为MSTI。
  • MST 域内 IST 和 MSTI 的根桥就是域根。 MST 域内各棵生成树的拓扑不同,域根也可能不同。例如 图中,区域D0 中,生成树实例 1 的域根为设备B,生成树实例 2 的域根为设备C。
  • 总根( Common Root Bridge)是指 CIST 的树根。 例如 图中,总根为区域A0 内的某台设备。
  • 域边界端口是指位于 MST 域的边缘,用于连接不同 MST 域、 MST 域和运行 STP 的区域、 MST 域和运行 RSTP 的区域的端口。
  • 端口角色
    • 在 MSTP 的计算过程中,端口角色主要有根端口、指定端口、 Master 端口、 Alternate 端口、 Backup端口等。
      • 根端口:负责向根桥方向转发数据的端口。
      • 指定端口:负责向下游网段或设备转发数据的端口。
      • Master 端口:连接 MST 域到总根的端口,位于整个域到总根的最短路径上。从 CST 上看,Master 端口就是域的“根端口”(把域看作是一个节点)。 Master 端口在 IST/CIST 上的角色是根端口,在其它各个实例上的角色都是 Master 端口。
      • Alternate 端口: 根端口和 Master 端口的备份端口。 当根端口或 Master 端口被阻塞后, Alternate端口将成为新的根端口或 Master 端口。
      • Backup 端口:指定端口的备份端口。当指定端口被阻塞后, Backup 端口就会快速转换为新的指定端口,并无时延的转发数据。当使能了 MSTP 协议的同一台设备的两个端口互相连接时就存在一个环路,此时设备会将其中一个端口阻塞, Backup 端口是被阻塞的那个端口。

MSTP配置

通过命令进入 MST 域视图后,可以对域的相关参数(域名、VLAN映射表以及修订级别)进行配置

由系统视图进入域配置视图

[SW]stp region-configuration 

配置域名

[SW-mst-region]region-name name

配置修订级别

[SW-mst-region]revision-level level   # INTEGER<0-65535>  Revision level

缺省情况下,所有VLAN均对应到CIST(即实例0)上,不能将同一个VLAN映射到多个不同的实例上,当用户将一个已经映射的VLAN重新映射到一个不同的实例上,则自动取消原来的映射关系。

配置VLAN映射到MST实例,instance-id为实例的ID(取值0~32,0表示IST

[SW-mst-region]instance 2 vlan 2 

配置完域名、修订级别和VLAN映射关系后,需要激活MST域的配置,此时MSTP会重新计算生成树。

[SW-mst-region]active region-configuration 

MSTP高级配置

当需要将某网桥设定为MST实例的根桥时,可以通过修改网桥在该实例中的优先级实现,也可以通过命令直接将网桥设置为实例中的首选根桥。

配置网桥为MST实例中的首选根桥,配置命令为:

如果配置时不输入instance intstance-id 参数,则所配置只在IST实例上有效,在一颗生成树实例中,生效的根桥只有一个;两台或两台以上的网桥被指定为同一颗生成树实例的根桥时,MSTP将选择MAC地址最小的网桥作为根桥。设置网桥为根桥后,用户不能再修改网桥的优先级

[SW]stp instance intstance-id root primary 

指定网桥作为MST实例的备份根桥

可以在每个MST实例中指定一个到多个备份根桥。当根桥出现故障或关机时,备份根桥可以取代成为指定MST实例的根。如果设置了多个备份根桥,则MAC地址最小的备份根桥成为指定MST实例的根。

[SW]stp instance instance-id root secondary 

MSTP兼容性配置

H3C设备端口可以识别/发送的MSTP BPDU格式有两种:

  • 符合 802.1s 协议的标准格式;
  • 与非标准格式兼容的格式;

端口默认配置为自动识别方式【auto】,即端口可以自动识别这两种格式的MSTP BPDU,并根据识别结果确定发送BPDU格式,从而实现与对端设备的互通。

配置 MSTP BPDU 格式识别

[SW-GigabitEthernet1/0/1]stp compliance  { auto | dot1s | legacy }

在设备上与对端MSTP协议的实现存在私有性差异的厂商设备相连的端口开启摘要侦听特性,可以实现与厂商设备在MST域内的完全互通

全局开启摘要侦听

[SW]stp global config-digest-snooping 

端口开启摘要监听

[SW-GigabitEthernet1/0/1]stp config-digest-snooping 

建议:不要在域边界端口开启摘要侦听,并且确保域内所有设备的VLAN和实例的映射关系一致。

RSTP与MSTP互联,在下游MSTP与RSTP相连端口开启No Agreement Check特性

No Agreement Check特性在端口配置,仅对该端口有效:

[SW-GigabitEthernet1/0/1]stp no-agreement-check 

MSTP配置案例


STP保护机制

注意:不能在端口上同时启动环路保护、根桥保护、边缘端口中的任意两种。

BPDU保护

正常情况下,边缘端口不会受到BPDU,如果有人伪造BPDU发送给一个边缘端口或意外将边缘端口连接运行STp的设备时,系统将从边缘端口转换成非边缘端口,从而导致生成树重新计算,将引起网络拓扑的震荡。

交换机上启动了BPDU保护功能以后,如果非边缘端口受到了BPDU,系统就将这些端口关闭。被关闭端口只能由网络管理人员恢复,建议在配置了边缘端口的交换机上配置BPDU保护功能。

BPDU保护功能在全局视图配置,例如配置交换机SWA的GE1/0/1端口为边缘端口启用BPDU保护:

[SWA]stp bpdu-protection    #配置BPDU保护功能
[SWA]int G1/0/1
[SWA-GigabitEthernet1/0/1]stp edged-port    #配置为边缘端口

根桥保护

由于维护人员错误的配置或网络中的恶意攻击,网络中的合法根桥有可能会收到优先级更高的BPDU,这样当前根桥会失去根桥的地位,引起网络拓扑结构的变动。假设原来的流量是经过高速链路转发的,这种不合法的变动,会导致原来通过高速链路的流量被牵引到低俗链路上,导致网络拥塞。

通过配置Root保护(根桥保护)功能可以防止这种情况发生。对于设置了 Root 保护功能的端口,端口角色只能保持为指定端口。一旦这种端口上收到了优先级高的BPDU,这些端口的状态将被设置为Listening状态,不再转发报文(相当于将此端口相连的链路端口)。端口会经历从Listening状态到Forwarding状态的转变,在此期间如果端口没有收到更优的BPDU,端口会恢复到原来的转发状态。

根桥保护命令在端口视图配置。如果网络中SWA为根桥,为防止接收到SWB发送的BPDU而导致根桥重新选举,可以在SWCE1/0/1配置根桥保护。

根桥保护配置命令[SWC-Ethernet1/0/1]stp root-protection

环路保护

由于链路拥塞或者单向链路故障,端口会收不到上游设备的BPDU报文,此时下游设备重新选择端口角色,会导致环路的产生。

环路保护机制

  • 配置了环路保护的端口,当接受不到上游设备发送的BPDU时,环路保护生效;
  • 如果该端口参与了STP计算,则不论其角色如何,该端口在所有实例都将处于Discarding状态;

环路保护在端口试图配置,如果网络中SWA为根桥,为防止由于SWC和SWA之间的链路拥塞导致环路产生,可以在SWC 1/0/1配置环路保护。同理为防止SWC和SWB之间链路拥塞导致环路产生,可以在SWC 1/0/2端口配置环路保护。

[SWC-Ethernet1/0/1]stp loop-protection 
[SWC-Ethernet1/0/2]stp loop-protection 

TC保护

交换机在收到TC-BPDU报文后,会执行MAC地址表项和ARP表项的删除操作(ARP表项是通过MAC地址表项的删除而更新的,不是直接删除)。如果有人伪造TC-BPDU报文恶意攻击交换机时,交换机会收到很多TC-BPDU的报文,频繁的删除操作会给交换机带来很大负担,给网络的稳定带来很大隐患。

TC保护机制

  • 设置设备在收到TC-BPDU的报文后的10秒内,进行地址表项删除操作的最多次数。
  • 监控在该时间段内收到的TC-BPDU报文数是否大于门限值。

配置TC保护

使能防止TC-BPDU报文攻击的保护功能

[SW]stp tc-protection 

配置门限值

缺省情况下,设备收到TC-BPDU报文后的一定时间内,允许收到TC-BPDU报文后立即删除转发地址表项的最高次数为6。

  • 分享:
评论
还没有评论
    发表评论 说点什么