AI智能
改变未来

HC110110013 STP原理与配置


为了提高网络的可靠性,交换网中通常会使用冗余链路。但是冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。

文章目录

  • 环路引起的问题
  • 二层交换网络
  • 广播风暴
  • MAC地址表震荡
  • STP的作用
  • STP操作
    • 根桥选举
    • 根端口选举
    • 指定端口选举
    • 端口状态转换
    • BPDU
    • 计时器
  • 根桥故障
  • 直连链路故障
  • 非直连链路故障
  • 环路引起的问题

    二层交换网络

    交换机之间通过多条链路互联时,虽然可以提高网络可靠性,但同时也会带来环路问题。

    • 随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互联。如果交换机之间只使用一条链路互联,有可能出现单点故障,导致业务中断。为了解决此类问题,交换机在互连时一般会使用冗余链路来实现备份。
    • 冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会产生其他问题,导致通信质量下降和通信业务中断。

    广播风暴

    • 根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,那么交换机会将这个帧向除源端口之外的所有其他端口转发。如果交换机中有环路,这个帧就会被无限转发,形成广播风暴,导致网络中充满重复无用的数据帧,影响正常网络通信。
    • 在上图中,主机A向外发送一个单播帧,但是该单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB接收到此帧后,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。

    MAC地址表震荡

    • 交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表的。

    • 主机A向外发送一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB收到此数据帧之后,在MAC地址表中生成一个MAC地址表项,00-01-02-03-04-AA,对应端口为G0/0/3,- 并将其从G0/0/1和G0/0/2端口转发。此例仅以SWB从G0/0/1端口转发此帧为例进行说明。

    • SWA接收到此帧后,由于MAC地址表中没有对应此帧目的MAC地址的表项,所以SWA会将此帧从G0/0/2转发出去。

    • SWC接收到此帧后,由于MAC地址表中也没有对应此帧目的MAC地址的表项,所以SWC会将此帧从G0/0/2端口发送回SWB,也会发给主机B。

    • SWB从G0/0/2接口接收到此数据帧之后,会在MAC地址表中删除原有的相关表项,生成一个新的表项,00-01-02-03-04-AA,对应端口为G0/0/2。此过程会不断重复,从而导致MAC地址表震荡。

    • 在下例中关闭了stp,可以看出在SW1上的MAC地址表在不断变化,且在网络链路上充斥着大量重复信息


    STP的作用

    • 在以太网中,二层网络会带来广播风暴,MAC地址表震荡,重复数据帧等问题
    • STP的主要作用
        消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
      1. 链路备份:当活动路径链路发生故障时,激活备份链路及时恢复网络联通性。

    STP操作

    • STP通过构造一棵树来消除交换网络中的环路。
    • 每个STP网络中,都会存在一个根桥,其他交换机为非根桥。根桥或者根交换机位于逻辑树的根部,是STP网络的逻辑中心,非根桥式根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种星系被称为BPDU。BPDU包含交换机在参加生成树计算时产生的各种信息参数。
    • STP中定义了三种端口角色:指定端口根端口预备端口
    • 指定端口:是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。
    • 根端口:是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
    • 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

    根桥选举

    • STP中根桥的选举是依据桥ID,STP中的每个交换机都会有一个桥ID(bridge id)。桥ID是由16位的桥优先级和48位的mac地址组成。桥优先级可以自己配置,取值范围是0-65535,默认值位32768。在华为模拟器交换机中最大为61440。桥优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,比较mac地址,mac地址越小越优先。
    • 交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机在启动时都会认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。

    根端口选举

    • 非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。
    • 交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销是0。
    • 一般情况下,企业网络中会存在多厂商的交换设备,华为X7系列交换机支持多种STP的路径开销计算标准,提供最大程度的兼容性。缺省情况下,华为X7系列交换机使用IEEE 802.1t标准来计算路径开销。
    • 运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID(Port ID)可以用来确定端口角色。
    • 每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中根路径开销字段的值,加上该端口本身的端口开销即为本端口路径开销。如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。
    • 如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。

    指定端口选举

    • 非更交换机在选举指定端口时分别依据根路径开销、BID、PID。
    • 未被选举为更端口或指定端口的端口为预备端口,将会被阻塞。
    • 在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。
    • 指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计路径开销和所- 在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。
    • 网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

    端口状态转换

    • 图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:
    • Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。
    • Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
    • Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
    • Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
    • Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

    BPDU

    • 为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU(Bridge Protocol Data Unit)中。
    • BPDU有两种类型:配置BPDU和TCN BPDU。
    • 配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
    • TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
    • 配置BPDU中包含了足够的信息来保证设备完成生成树计算,其中包含的重要信息如下:
    • 根桥ID:由根桥的优先级和MAC地址组成,每个STP网络中有且仅有一个根桥。
    • 根路径开销:到根桥的最短路径开销。
    • 指定桥ID:由指定桥的优先级和MAC地址组成。
    • 指定端口ID:由指定端口的优先级和端口号组成。
    • Message Age:配置BPDU在网络中传播的生存期。
    • Max Age:配置BPDU在设备中能够保存的最大生存期。
    • Hello Time:配置BPDU发送的周期。
    • Forward Delay:端口状态迁移的延时。

    计时器

    • STP协议中包含一些重要的时间参数,这里举例说明如下:
    • Hello Time是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效。
    • Message Age是从根桥发送到当前交换机接收到BPDU的总时间,包括传输延时等。如果配置BPDU是根桥发出的,则Message Age为0。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1。
    • Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的Message Age和Max Age进行比较:如果Message Age小于等于Max Age,则该非根桥设备会继续转发配置BPDU报文。如果Message Age大于Max Age,则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络直径过大,导致了根桥连接失败。

    根桥故障

    • 非根桥会在BPDU老化之后开始根桥的重新选举。
    • 在稳定的STP拓扑里,非根桥会定期收到来自根桥的BPDU。如果根桥发生故障,停止发送BPDU报文,下游交换机就无法收到来自根桥的BPDU报文。如果下游交换机收不到BPDU报文,Max Age定时器就会超时(Max Age的默认值为20秒),从而导致已经收到BPDU报文失效,此时,非根交换机会互相发送配置BPDU报文,重新选举新的根桥。根桥故障会导致50秒左右的恢复时间,回复时间约等于Max Age加上两倍的Forward Delay收敛时间。

    直连链路故障

    • 此例中,SWA和SWB使用了两条链路互连,其中一条是主用链路,另外一条是备份链路。生成树正常收敛之后,如果SWB检测到根端口的链路发生物理故障,则其Alternate端口会迁移到Listening、Learning、Forwarding状态,经过两倍的Forward Delay后恢复到转发状态。

    非直连链路故障

    • 本例中,SWB与SWA之间的链路发生了某种故障(非物理层故障),SWB因此一直收不到来自SWA的BPDU报文。等待Max Age定时器超时后,SWB会认为根桥SWA不再有效,并认为自己是根桥,于是开始发送自己的BPDU报文给SWC,通知SWC自己作为新的根桥。在此期间,由于SWC的Alternate端口再也不能收到包含原根桥ID的BPDU报文。其Max Age定时器超时后,SWC会切换Alternate端口为指定端口并且转发来自其根端口的BPDU报文给SWB。所以,Max Age定时器超时后,SWB、SWC几乎同时会收到对方发来的BPDU。经过STP重新计算后,SWB放弃宣称自己是根桥并重新确定端口角色。非直连链路故障后,由于需要等待Max Age加上两倍的Forward Delay时间,端口需要大约50秒才能恢复到转发状态。
    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » HC110110013 STP原理与配置