zoukankan      html  css  js  c++  java
  • stp/rstp/mstp详解

    一 stp

    网络的冗余性设计主要包括两个方面:关键设备冗余,以及关键链路冗余。

    如何在保证网络的冗余性情况下,消除二层环路,是本章的重点。

    Stp(生成树协议)在802.1D中定义,RSTP(快速生成树协议)在802.1w中定义,MSTP(多生成树协议)在802.1s中定义。

    1 STP基本概念

    (1)     桥ID:每一台运行STP的交换机都拥有一个唯一的桥ID,该值一共8byte,包含16bit的优先级(高16bit)和48bit的桥MAC地址。

    (2)     根桥:STP的主要作用就是在整个交换网络中计算出一颗无环的STP树,其中树根即根桥很重要,STP的一系列计算均已根桥为参考点。一个交换网络中只有一个根桥。网络中最小桥ID的交换机将成为根桥,其次比较的是MAC地址,MAC地址最小的交换机将成为根桥。

    (3)     开销(Cost)与跟路径开销(Root Path Cost,RPC):每一个激活了Stp的接口都会维护一个Cost值,用来计算RPC。接口的缺省Cost除了与其速率,工作模式有关,还与交换机使用STP Cost计算方法有关。华为交换机支持3种STP cost计算方法,分别为IEEE802.1D-1998标准,IEEE802.1t标准,以及华为的私有计算方法。

     

    网络中所有STP设备使用的Cost计算方法要一致。

    2 STP的基本操作过程

    STP通过4个步骤来保证网络中不存在二层环路

    (1)     在交换网络中选出一个根桥(Root Bridge,RB)

    对于一个交换网络而言,正常情况下只会存在一个根桥,根桥的地位具有可抢占性。

    (2)     在每个非根桥上选取一个根接口(Root Port,RP)

    在一个交换网络中除了根桥,其他交换机都是非根桥,STP将为每个非根桥选举一个根接口,所谓根接口,实际上就是非根桥上所有接口中收到最优BPDU的接口,可以理解为交换机在STP树上朝向根桥的接口。非根桥可能会有一个或者多个接口接入同一个交换网络,STP将在这些接口中选举出一个根接口。STP收敛完成后,根桥依然会周期性的向网络中发送BPDU,而非根桥则会周期性的在自己的根接口上收到BPDU,并沿着STP树向下游转发。

    (3)     选举指定接口

    STP会在每个网段中选举一个指定接口,这个接口是该网段内所有接口中到达根桥的最优接口,此外指定接口还负责向该网段发送BPDU。对于非根桥而言,其所有接口中收到最有BPDU的接口将成为该设备的根接口,随后该非根桥设备使用自己接收的最有BPDU,为本设备上的其他接口各计算一个BPDU,然后使用计算出来的BPDU与接口上所维护的BPDU进行(接口本身也会从网络中收到BPDU并保存)比较,若前者更优,那么该接口将成为指定接口,并且其所保存的BPDU也被前者代替,交换机将新的BPDU从指定接口发送给下游交换机,若后者更优,那么该接口将成为非指定接口(非指定接口既不是根接口也不是指定接口)。

    对于非根桥而言,根接口的选举过程是非根桥将自己所接受到的所有BPDU进行比较,而指定接口的选举过程则是非根桥用自己计算出的BPDU跟别的设备发过来的BPDU进行比较。

    (4)     阻塞非指定接口,打破二层环路

    经STP计算,如果交换机上的某个(或者某些)接口既不是根接口也不是指定接口(称之为非指定接口),那么该接口将被STP阻塞,如此网络中的二层环路就被打破了。被阻塞的非指定接不会发送BPDU报文,只会持续侦听BPDU报文,更不会发送业务数据。

    3 STP报文

    BPDU有两种:配置BPDU以及TCN BPDU。

    BPDU报文直接封装在以太网数据帧内,数据帧的目的MAC地址是组播MAC地址:0180-c200-0000

    (1)     配置BPDU

    在收敛过程中,每台交换机都从自己激活了STP的接口向外发送配置BPDU。收敛完成后,只有根桥才会周期性的发送配置BPDU(缺省周期为2s),非根桥在自己的根接口上收到上游的配置BPDU后,立即被触发产生自己的配置BPDU,然后从指定接口上发送出去。

     

    (2)     TCN BPDU

    TCN BPDU的格式非常简单,只有上表中的协议ID,协议版本ID以及BPDU类型三个字段。TCN BPDU用于在网络拓扑发生变化时向根桥通知变化的发生。当网络拓扑发生变化时,远离变化点的交换机无法直接感知变化的发生,其MAC地址表项也就无法快速刷新。故STP需要一种机制,用于在网络拓扑发生变化时,促使全网交换机尽快老化自己的MAC地址表项。

    1) TCN BPDU需要从发现拓扑变更的交换机传递到根桥,该报文会一级一级的通过上游交换机向上游传递至根桥。

    2) 上有交换机在收到下游交换机发送的TCN BPDU后,需要使用TCA比特位为1的配置BPDU进行回应,以确保TCN BPDU传递过程的可靠性。

    3) 根桥收到TCN BPDU后,会向全网泛洪“标志”字段中TC比特位被置为1的配置BPDU,网络中的交换机在收到该配置BPDU后,立即将其MAC地址表的老化时间从原有值调整为一个较小值,以便MAC地址表项尽快刷新。

     

    4 STP的时间参数

    Hello Time(hello时间):运行STP的交换机发送配置BPDU时间间隔,缺省为2s。如需要修改,必须在根桥上修改,修改完成后,所有非根桥都与根桥对其该时间。

    Forward Delay(转发延迟):运行STP的接口从侦听状态进入学习状态,或从学习状态进入转发状态的延迟时间,缺省为15s。为避免在生成树收敛过程中形成临时环路,STP定义了侦听和学习两种接口状态,并要求接口从阻塞状态进入转发状态前必须经历这两个状态,而且分别在这两个状态停留一个转发延迟时间。

    Max Age(最大生存时间):BPDU的最大生存时间,也被称为BPDU的老化时间,缺省为20s。

    以非根桥的根接口为例,该设备将为所保存的来自上游的最有BPDU关联一个最大生存时间,如果在BPDU达到最大生存时间之前,接口再一次收到BPDU,其最大生存时间将被重置,如果一直到过了最大生存时间还没有收到新的BPDU,那么该BPDU会被老化,设备会在接口上重新选择最优BPDU,也就是重新进行根接口的选举。

    受限于这几个时间参数的限制,一个STP口从阻塞状态进入转发状态可能需要花费30-50s左右,期间网络中的业务会受影响。

    5 BPDU的比较原则

    STP按照如下顺序选择出最优的BPDU

    (1)     最小的根桥ID

    (2)     最小的RPC

    (3)     最小的网桥ID

    (4)     最小的接口ID

    第一条原则主要用于网络中根桥选举,后面的原则主要用于选举根接口以及指定接口。

    6 BPDU的交互与拓扑计算

     

    初始情况下,交换网络中的所有交换机都认为自己是根桥,这些设备开始运行后从自己所有激活了STP的接口发送BPDU。如山图示。(只展示BPDU中最重要的四个字段)

    (1)     由于两者均认为自己是根桥,故他们在各自发送的BPDU中,根桥字段均为自己的桥ID,RPC字段均为0。网桥ID均为该BPDU发送者的桥ID,接口ID均为发送该BPDU的接口ID。

    (2)     SW1和SW2都将收到来自对方的BPDU,接下来开始将对方的BPDU与自己接口上的BPDU进行比,该过程即为根桥选举。结果是SW1胜出。

    (3)     接下来SW2将开始根接口选举。由于SW2在G0/0/3和G0/0/4接口上收到的BPDU都比自己本地BPDU更优,因此使用对方的BPDU来更新本地的BPDU。然后SW2将比较自己所有接口上的BPDU,拥有最有BPDU的接口成为根接口。

     

    (4)     SW2根接口选举出来后,它使用当前在根接口上保存的最优BPDU为其他接口计算BPDU。如下图示,G0/0/4当前保存在BPDU比SW2为G0/0/4计算出来的BPDU更优,于是G0/0/4被认定为非指定接口,被阻塞。

     

    (5)     至此收敛完成

     

    7 STP接口状态

    STP定义了五种接口状态

     

     

    二 RSTP

    STP是一个比较老旧的标准,它收敛慢,端口状态定义繁冗,对拓扑变化的感知依赖计时器。

    RSTP即快速生成树协议,他引入了新的接口角色,其中替代接口的引入使交换机在根接口失效时,可以立即获得新的路径到达根桥。引入P/A机制,使得指定接口被选举产生后可以快速的进入转发状态,不用像STP一样经历转发延迟时间。它还引入了边缘接口概念,使交换机连接终端设备的接口在初始化之后可以立即进入转发状态。

    1 RSTP接口角色

    替代接口:可以理解为根接口的备份,他是一台设备上由于收到其他设备发送的BPDU从而被阻塞的接口。如果根接口发生故障,那么替代接口将成为新的根接口。

     

    备份接口:备份接口是一台设备上由于收到了自己所发送的BPDU从而被阻塞的接口。如果一台交换机拥有多个接口接入同一个网段,并在这些接口中有一个被选为该网段制定接口,那么这些接口中的其他接口将被选举为备份接口,备份接口将作为该网段到达根桥的冗余接口,缺省为丢弃状态。

     

    2 RSTP接口状态

     

    3 BPDU

    RSTP的配置BPDU称为RST BPDU,格式与STP的配置BPDU大体相同,只是个别字段做了修改。对于RST BPDU来说,协议版本ID字段值为0x02,BPDU类型字段值为0x02。标志字段共8bit,STP只使用了其中的最低和最高比特位,而RSTP将剩余的6bit也使用上了。

     

    Aggrement以及Proposal比特位用于RSTP的P/A机制。Port Role用于标识RST BPDU发送接口的接口角色,01表示根接口,10表示替代接口,11表示指定接口,00保留。Forwarding以及Learning用于表示该RST BPDU发送接口的接口状态。

    与STP不同的是,在RSTP中,无论是根桥还是非根桥,都会周期性的发送配置BPDU。也就是说对于非根桥而言,它不用在根接口上收到BPDU后才触发产生自己的配置BPDU,而是自发的周期性的发送BPDU。

    RSTP在BPDU的处理上的另一个改进是对于次优BPDU的处理。STP的指定接口在收到次优BPDU时,将立即发送自己的BPDU,STP的非指定接口在收到次优BPDU时他将等待接口所保存的BPDU老化之后,再重新计算新的BPDU,并将新的BPDU发送出去,这将导致20s的状态迁移时间;在RSTP中,无论接口角色如何,只要接口接收到次优BPDU,便立即发送自己的BPDU,这使得RSTP收敛的更快。

    4 边缘接口

    一个接口配置为边缘接口后,该接口依然会周期性的发送BPDU(可使用stp bpdu-filter enable命令,使用后接口不再发送BPDU,当其收到BPDU后也会忽略)。边缘接口缺省不参与生成树计算,当边缘接口被激活之后,他可以立即切换到转发状态并开始收发业务流量,而不用经历转发延迟时间,另外边缘接口的关闭或者激活不会触发RSTP的拓扑变更。当某接口连接的是终端设备如服务器或者PC时,这些接口在启动过之后不需要经历状态迁移或者是经历转发延迟,此时可以直接将这些接口配置为边缘接口。

    5 P/A机制

    RSTP通过P/A(Proposal/Agreement)机制来保证一个指定接口得以从丢弃状态快速进入转发状态,从而加速生成树收敛,它是一种握手机制。

     

    如上图示,网络中运行的是RSTP,当SW1和SW2之间新增一条链路后。

    (1)     SW1和SW2立即在各自接口上发送BPDU,初始时双方均认为自己是根桥,如图10-25(一)。

    (2)     经过BPDU交互后,SW1当选为根桥。SW1的G0/0/1为指定接口,SW2的G0/0/2为根接口,该接口立即停止发送BPDU,都进入丢弃状态。

    (3)     接下来P/A机制将发生。由于SW1的G0/0/1接口为指定接口且处于丢弃状态,故SW1从G0/0/1发送Proposal置位的BPDU,如图10-25(二)

    (4)     SW2收到Proposal置位的BPDU后,立即启动一个同步机制。此时RSTP的机制是确保指定接口(SW1的G0/0/1)可以快速进入转发状态,为了达到这个目的必须确保该接口进入转发状态后网络中无环路。故此时SW2要做的是先将本地所有非边缘接口全部阻塞,然后大幅SW1他这里不存在环路。

    已经处于丢弃状态的接口缺省已完成同步,而边缘接口不参与该过程,除此之外,交换机处于转发状态的指定接口需要切换到丢弃状态以便完成同步,如图10-25(二)。

    G0/0/3是边缘接口,G0/0/4是非边缘指定接口将进入丢弃状态。

    (5)     现在SW2的所有接口都已完成同步,本地接口已不存在环路,他立即将根接口G0/0/2切换到转发状态,并向SW1发送Agreement置位的BPDU。

    (6)     SW1在收到Agreement置位的BPDU后,立即将G0/0/1切换到转发状态,此时PC1和PC2便可实现通信。

    (7)     整个P/A过程非常快,另外由于SW2的指定接口G0/0/4仍处于丢弃状态,因此该接口会向下游交换机发起一个P/A过程,具体操作不再赘述。

    6 保护功能

    (1)     BPDU保护

    当边缘接口收到BPDU后,该接口立即变成一个普通RSTP接口,这个过程可能引发网络中RSTP重新计算,从而对网络产生影响。通过在交换机上激活BPDU保护功能可解决该问题。当交换机激活该功能后,如果边缘接口收到BPDU,则交换机立即把接口关闭,同时触发告警。

    (2)     根保护

    在一个RSTP网络中,根桥的地位很重要。如果根桥发生变化,势必导致RSTP重新计算。根桥是可抢占的。部署根保护功能可保证根桥的稳定性。

    在根桥的指定接口上激活根保护功能后,该接口如果收到更优的BPDU,则会忽略这些BPDU,并且将该接口切换到丢弃状态,如果接口不再收到更优的BPDU,则过一段时间后(通常为两倍的转发延迟时间),接口会自动恢复到转发状态。注意,根保护功能只有在指定接口上激活才有效。

    (3)     环路保护

    对于交换机的根接口以及处于丢弃状态的替代接口,当网络正常时,这些接口会持续收到BPDU,而当网络中出现链路单向故障(如光纤单通)或者网络拥塞问题时,这些接口将无法持续收到BPDU,便会导致交换机重新计算RSTP,此时接口角色以及状态便会发生改变,有可能会引入环路。使用环路保护功能可以规避该问题。

    1) 在根接口上激活环路保护功能后,如果该接口长时间没有收到BPDU,那么交换机会重新选举根接口并将该接口的角色调整为指定接口,此时交换机会将该接口的状态切换到丢弃状态,从而避免环路产生。

    2) 在替代接口上激活环路保护功能后,如果该接口长时间没有收到BPDU,那么交换机会将该接口的角色调整为指定接口,但是将其状态保持在丢弃状态,从而避免环路。

    (4)     拓扑变更保护

    一个稳定的交换网络是不会频繁出现拓扑变更的,一旦网络出现变更,TC BPDU将会泛洪到全网,这些TC BPDU将会触发网络中的交换机执行MAC地址表删除操作。如果网络极不稳定,导致TC BPDU频繁泛洪,或者网络中存在攻击者发送大量TC BPDI攻击网络,那么交换机的性能将受到极大影响。交换机激活拓扑变更保护后,将在单位时间(缺省2s)内只进行一定次数的TC BPDU处理,对超出部分,则必须等待一段时间后进行处理。

    三 MSTP

    背景:如下图10-32所示。SW1,SW2,SW3都运行STP,后者RSTP,那么无论网络中存在多少个VLAN,这些VLAN都是用一颗相同的生成树,也就是说STP,RSTP不会针对不同VLAN执行单独的生成树计算。如下图示,所有流量均从SW3至SW1通过,而SW3,SW2这条链路几乎不承载任何业务,这样无法使资源得到有效的利用。

     

    解决方法:IEEE 802.1s定义了MSTP(多实例生成树)协议。该协议兼容STP以及RSTP。该协议不是基于VLAN,而是基于Instance(实例)运行的。所谓Instance,也即一个或多个VLAN的集合。可以将一个或多个VLAN映射到一个Instance,然后MSTP基于该Instance计算生成树。基于Instance计算出的生成树被称为MSTI(多生成树实例),映射到同一个Instance的VLAN共享一颗生成树。可以针对MSTI进行主根桥,次根桥,接口优先级或cost等相关配置。MSTP引入了域的概念,可以将一个大型交换网络划分成多个MST域(多生成树域)。

  • 相关阅读:
    html5+css3中的background: -moz-linear-gradient 用法 (转载)
    CentOS 安装Apache服务
    Linux 笔记
    CURL 笔记
    Spring Application Context文件没有提示功能解决方法
    LeetCode 389. Find the Difference
    LeetCode 104. Maximum Depth of Binary Tree
    LeetCode 520. Detect Capital
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 136. Single Number
  • 原文地址:https://www.cnblogs.com/guang-li/p/12128757.html
Copyright © 2011-2022 走看看