关注IT
关注系统玩家

STP理解与实际操作

1  STP(802.1D)

1.1  STP 概述

       STP(Spanning Tree Protocol)即IEEE 802.1D,其作用主要有三个,第一是eliminate

    logical loops消除逻辑环;第二自动选取最有效的网络路径;第三是当某条链路失效时,自动

    切换到备份链路,实现所谓的failover功能。STP分STP(802.1D)、RSTP(802.1W)、

    MST(802.1S)、PVST/PVST+、RPVST/RPVST+.

1.2  基本概念(802.1D)

1.2.1 Bridge ID

     Bridge ID=优先级+MAC

        一个Bridge ID(BID)在STP数据包—BPDU中占8个字节,其中两个字节为Bridge

     Priority(0–65535),6个字节为桥的MAC地址,缺省的桥的优先级值为32768。

1.2.2 Port ID:

       由两部分组成,在BPDU中共占用两个字节,高位字节为优先级,低位字节为端口号。

    优先级值缺省为128。

1.2.3 Path Cost—路径值

       每条路径都有一个Cost值,是按本地交换机端口的入方向计算的。用cost值来计算两个

    设备之间的“距离”,计算原则是其值与带宽成反比,即高的带宽有低的cost值。但值得

    注意的是每个厂家的设备所计算的标准不同,如一般情况下Cisco的100M帯宽下cost

    值是19,1G带宽下是4,10G带宽下是2,而IBM IBM交换机是按照802.1d 2004的标

    准,100M带宽是200000,在1G带宽下是20000,不同的cost值规范不会影响STP的

    正确工作。

1.2.4 BPDU

       BPDU(Bridge Protocol Data Unit),它是STP赖以工作、在交换机之间进行交互的

    二层数据帧,交换机所定义的参数、网络中拓扑的改变都通过BPDU进行传递。

1.2.5  BPDU分类

1.2.5.1 Configuration BPDU

       Configuration BPDU即是我们常说的BPDU,绝大部分的BPDU是此类型BPDU,它由根

    桥(Root Bridge)产生,并向下传播,其它非根桥(Designation Bridge)不产生此类

    BPDU(但所有设备在初启时都会产生此类型的BPDU),只是收到由根桥发来的BPDU

    后加入自己的一些信息(即更新)并转发,如桥及端口ID值,以下是一个由根桥

   (Bladenet_8a:35:2c)发出的Configuration BPDU。

            1068393857

1.2.5.2 Topology Change  Noticfication BPDU。

       Topology Change Notification BPDU,是当网络拓扑发生改变时,由非根桥向上通知

    根桥,当根桥收到后,指示其它所有非根桥设备加速更新CAM表,缺省情况下CAM的

    agging time是5分钟,而在TCN BPDU的协调下,agging time缩短为15秒。以下是当

    非根桥(Bladenet_ad:6d:28)发生网络拓扑变化时,由其发出的TCN BPDU,即在

    flags中的TCN位上进行了置位。

8537426003

1.2.6 几种STP标准参数:

       Hello time: 2秒, Max age:20秒, Forward Delay 15秒。这些参数都可进行修改,但只有对

    根桥的修改才起作用,非根桥上的这些timer 参数只在其产生TCN BPDU时才起作用。

1.3  STP的具体工作机制

1.3.5  选路去环路的总原则–三原则:

a) 每个STP组(STG)或所谓实例(Instance)中要选出一个根桥(root);

b) 每个非根桥要选出一个根端口(root port);

c) 每条链路(segment)上要有一个指派端口(designated port);

   由于有以上三个原则,那么STP就可以生成没有环路的逻辑拓朴。

1.3.6 实现的算法—–四步算法

    Step 1. Lowest Root BID —产生根桥

    Step 2. Lowest Root Path Cost —产生根端口及指派端口

    Step 3. Lowest Sending BID (在step 2相同的情况下)

    Step 4. Lowest Port ID(在step 3相同的情况下)

1.3.3  STP的收敛时间

    以上STP的工作机制及相应的算法决定了STP的收敛时间。

1.3.3.1  端口的状态:

    STP的端口状态共分为5种:disable ,listening, learning,forwarding, blocking:

a)  disable状态

    当一个端口物理上失去了连结,或人为地进行了shutdown后,该端口即进入了disable状态

b)  listening状态

    当一个端口由disable状态激活后,立即进入listening状态,在此阶段,BPDU开始进行交换,

    进行一系列的STP算法,选举出根桥 、根端口、指派端口。此状态持续一个所谓forwarding

    time 15秒

c)  learning状态

    如果以上的listening状态能够持续15秒,那么紧接着进行earning状态,在此状态进行MAC地址的

    学习,形成CAM表。该状态需持续15秒

d)  forwarding状态

    如果以上状态能够持续15秒,那么端口进入forwarding 状态

e)  blocking状态

    一个segment网段上只有一个端口处于forwarding状态,其它端口被置为blocking状态。此端口不

    进行用户数据的转发,但接收BPDU,以检测网络的变化。

1.3.3.2  STP的收敛时间具体计算

       一个端口从disable(或blocking)状态到forwarding状态所经历的时间是 :

       如果一个交换机可以直接检测到失效的链路—由以下的例子,Cat-C的 1/1是根端口,当收不到

    根桥Cat-A发出的BPDU后,立即进入到listening状态。

 1683291640

 9216104784

    15(listening)+15(learning)=30

    如果某个设备不能直接检测到上游链路的失效,那么它只能在max aging time(20s)内收不到

    BPDU后,才能做出判断上游链路失效,那么,其收敛时间为:

    20(max aging time)+15(listening)+15(learning)=50秒

1.3.4 对STP的调整(Tune)

a)  通过改变桥的优先级来改变根桥

1854736223

b)  通过改变端口优先级来改变根端口(发送端口)

 2462246360

 7354532881

c)  通过改变端口cost值来改变根端口(本地端口)

 1850491807

1.3.5 portfast/edge端口的设置

1.3.5.1 正确的配置

       对于直接连接终端设备的端口,可设置成portfast端口,来bypass STP的30秒而直接进入

    forwarding状态。首行,这个端口应该是access端口,而不能是tunk;其次,如果一个端口

    设置成了portfast,那么建议起用bpduguard功能,以预防不小心万一有交换设备从这个端口

    连接,造成临时的网络环路,因为如果一个端口在起了bpduguard后,如果再这个端口收到

    BPDU,那么这个端口这会被error-disable。

1.3.5.2 Error-disable恢复

a)  首先要去掉收到的BPDU源

b)  用接口下命令

   (config-if)#shutdown

   (config-if)#no shutdown(简单实用) 或者用

c)  系统自动恢复

1.3.5.3  portfast和edge端口的区别

      功能是相同的。但Portfast是针对普通的STP或PVST而言,而edge是针对RSTP/PVRST/MST而言。

   所以说对于不同的生成树模式,其设置不同:

   G8000-1(config-if)#spanning-tree stp 1 fastforward

   G8000-1(config-if)#spanning-tree edge

1.3.6 Uplinkfast/fast uplink的设置:

       只在本地交换机上设置即可,注意此功能一定要设在IDF即接入层的交换机上,并且只在

    STP/PVST+生成树模式下有效。

a)  设置

   G8000-1(config)#spanning-tree uplinkfast

b)  为了保证设置成uplinkfast的交换机不再成为根桥—无机会成为要桥,其桥优先组自动被设置为

    65535;为了保证不会有数据穿过 设置成uplinkfast的交换机—无机会成为一个transit

    bridge,其所有端口cost值自动增加3000。

c)  为了能够加快上游交换机FDB及ARP表的更新,设置成uplinkfast的交换机会自动发一个以FDB及

    ARP表中条目为源的组播。

2. RSTP

2.1 RSTP背景

       STP的收敛时间大约在1分钟以内,这远远满足不了现代网络对收敛速度的要求。比如,在一些

    应用中要启用VRRP,VRRP本身的切换速度只有几秒钟,如果VRRP与STP共同在起作用时,其收

    敛是建立在STP收敛完成的前提下,所以,VRRP实际的收敛时间要加上STP的收敛时间,失去了

    其收敛速度快的优点。IEEE推出了新一代的STP协议RSTP,即802.1w。下面,详细介绍RSTP

    的工作机制。

2.2 新的端口状态

 9179581689

2.3 端口的角色

    根端口(root port)及指派端口(designated port)仍然保留。但以前的STP中的blocking端

    口被分成新的两个角色—-backup andalternate.

2.3.1 alternate port

 5507115079

2.3.2 backup port

 6022363985

     从以上两个示意图可以看到两种新类型端口的区别:

     Backup port 从相同的交换机收到从根桥 发来的BPDU,而alternate port是从不同的交换机。

2.4  新的BPDU格式

     RSTP的BPDU数据帧中的type 及version是2,在STP中是0:

     STP BPDU格式

 5390099331

     RSTP BPDU格式

2775504623

2.5  新的收敛机制

2.5.1 keep-alive mechanism—检测失效的链路

       在STP中,根桥每2秒钟发出一个Hello包,非根桥只有从根端口收到BPDU后,才产生相应的

    BPDU并通过指派端口向其它交换机发送。而在RSTP中,非根桥每2秒钟定时向其它交换机发送

    BPDU,即使它没有从根端口收到BPDU。这样在交换机之间就形成了一个所谓的keep-alive

    mechanism:当某个端口连续三次没有收到邻居的hello包后,就认为与其邻居相连的链路失效

    了,立即更新它以前所获得的有关协议信息,而不用STP中等待20秒收不到BPDU再age out,

    这些大大加快了收敛速度,即所谓的fastaging。

2.5.2 同步机制—SYNC—检测新加入的链路

 7850182887

       交换机A与Root之间加入了一条新的链路,在STP处理中,两个相连的端口都被置为listening

    状态,而在RSTP中,先把两个相连的端口置为discarding状态,接着两个端口之间进行协商,当

    A接到Root发来的BPDU后,立即把端口置为forwarding状态,此过种叫做SYNC同步,A和B/C

    也同样进行同步,快速进行收敛。而在STP中端口要进行listening-learning-forwarding的过

    程,要在30秒后才能收敛,而RSTP是bypass了listening和learning这两个过程。

2.5.3 接受低级的BPDU:

 4865422782

       B在链路好的时候,BPDU是从连接Root的root port收到的,当链路失效后,C收到B发来的

    “I am the root”后,立即发送一个有Root信息的BPDU,B收到后,相信,把连接C的端 口作为

    rootport .

2.5.4 RSTP交换机的端口类型

       为了达到快速收敛,RSTP交换机的端口必须在点对点或edgeport状态,,其点对点端口连接其它

    交换机,edge port连接终端设备

    There is now a real feedback mechanism that takes place

    between RSTP-compliant bridges. In order to achieve fast

    convergence on a port, the protocol relies upon two new

    variables: edge ports and link type.

    RSTP can only achieve rapid transition to the forwarding state on

    edge ports and on point-to-point links.

    A port that operates in full-duplex is assumed to be point-to-point,

    while a half-duplex port is considered as a shared port by default.

2.6  RSTP向下兼容STP

       RSTP保留着大部分的STP的参数和特性,最终形成的逻辑loop-free拓朴是完全相同的,只不

    过采用了一些快速的收敛机制,当与STP设备相连时,由于RSTP的BPDU帧中含有特殊的type及

    version值(都为2),所以STP拒绝RSTP的BPDU,且只是发自己的STP BPDU,当RSTP设备

    收到STP BPDU后,自己主动降级,不再发RSTP BPDU,而是发STP BPDU,由此两种协议其实

    变成了一种协议—-STP,也就是RSTP的优点全部消失,但只是在RSTP与STP设备之间,而

    RSTP设备与RSTP设备之间还仍然保持原来的状态即RSTP。

4498852774

       RSTP是一种比STP更先进的协议,它自身也自动地包含了一些如Cisco的加强的STP功能,

    比如PortFast, UplinkFast,BackoneFast,其收敛速度大约为1到5秒,而不是STP的大约

    1分钟。同时,RSTP与STP也很好地进行了向下兼容,二者是IEEE成熟、标准的协议,用户

    可以不用任何人工干预达到向前兼容。现在所有的交换机都支持此种协议,建议起用此种STP

    模式。另外,最新版的802.1d 2004包括802.1w.

 3.  PVST+/RPVST+

    PVST+/PVRST+是Cisco的私有协议,每个VLAN一个STP实例(instance)。

    IBM交换机兼容PVST+或RPVST+。

6979166225

    在OS 6.7版本之前,IBM交换机在配置PVST+/PVRST+时,注意要手工把每个VLAN加入到不同

    的STP Group中,否则不能保证VLAN的正常通信,即便是VLAN1。

4. MST

4.1  概述

    公有协议,可若干个VLAN一个STP实例。

    缺省情况下,所有VLAN都在实例0即CIST里,可通。

    MST有域名,所谓的版本号,域中所有的交换机要一致。

    如果要把VLAN匹配进实例,域中所有的交换机要一致。

    MST是Rapid STP,具有RSTP的属性。

    MST兼容STP和RSTP

4.2   基本概念

4.2.1 Region(域)

    交换机都启动了mstp、具有相同的域名、相同的vlan到生成树映射配置和相同的mstp修订级别配

    置,并且物理上有链路连通。

4.2.2 Msti(MST实例)

    一颗域内生成树实例,实例之间相互独立。

4.2.3 VLAN映射

    一个或多个VLAN映射到一颗生成树实例,会生成一个MstpDigest值(HASH值),只要VLAN的映射

    相同,那么这个值就相同,不管域名等其它参数是否相同。

5524411840

4.2.4  Ist

    是一个域内特殊的实例,即实例0,在没有手工进行VLAN映射前,所有的VLAN都在这个ist里,

    BPDU只在这个实例中传递。

4.2.5 Cst

    是连接不同域之间的一颗由STP/RSTP生成的单生成树,用来连接不同的区域,对它来说,不同

    的区域就如同一个逻辑的交换机一样,以实现不同区域之间的通信。CST所连接的域是广义上的

    域,这个域可是一个MST的域,也可以是一个普通STP或RSTP的单生成树域(SST—Single

    Spanning Tree)

4.2.6 Cist

    由ist和cst构成cist,是棵单生成树。

2725703034

      MST BPDU只在CIST树上传第,而在MST BPDU中包含了VLAN的映射,所以不象PVST或PVRST那

      样,所有的VLAN都要发各自的BPDU,由此可见MST BPDU是非常有效的。

4.2.7  域根

    域中一个实例(包括ist和msti)在域中的根。

    Msti域根

 4282269504

    Cist或确切说是ist的域根

3598783852

4.2.8  总根

    即cist的根,即在整个网络中(可能有多个域,包括非MST域),会有一颗单生成树cist,它的根即总根。

9225591100

4.2.9 master端口角色

    是连接一个域(一个逻辑交换机)到总根的端口中,位于整个域到总根的最短路径上

 5880893117

4.3   举例理解MST

       G8000-2、G8000-2、G8000-3共同拥有域名wangwei,版本号100,但VLAN映射不同,

    G8000-2和G8000-3有相同的VLAN映射:VLAN1,VLAN3映射到STP1,VLAN2映射到STP2,

    而G8000-1的VLAN映射为VLAN3映射到STP1,VLAN2映射到STP2,VLAN1留在STP0即ist中。

       由于VLAN映射不同,所以三台交换机不能形成一个域,尽管域名相同,其结果是G8000-2和

    G8000-3形成了一个域,G8000-1形成了另一个域,即网络中存在两个域,如下:

 3156317002

检查事项:

a) 看HASH值

4890494039

6518636460

8752503023

       以上可以看出:G8000-2和G8000-3具有相同的HASH值,有相同的域根,相互同步,而

    G8000-1的HASH值与域根与其它交换不同,证明自己形成了一个独立的域。

(1) 看cist生成树

1811707052

6808831510

9951600996

       三台交换机的CIST的总根都是fc:cf:62:41:79:00即G8000-1,而G8000-2和G8000-3有

    相同的CIST域根为:fc:cf:62:41:79:00(G8000-3)

小结:

a) 尽管三台交换机形成了两人域,但VLAN的通信是正常的,因为有CIST把两个域相连起来。

b) 把G8000-1的STP模式转为RSTP,而G8000-2和G8000-3的生成树状态包括CIST没有任何改变。此

   时的网络结构是一个MST域与一个RSTP的SST域相连的结构。三台交换机的VLAN通信正常。证明不

   同的域之间是可能相互通信的,MST与RSTP是兼容的。

5   练习(PVRST/MST)

5.1  拓朴如下

3545539606

5.2   实现目的

       让接入交换机G8000-1的奇数VLAN数据走左边链路,偶数VLAN的数据走右连链路,实现链路均

    衡负载;一旦有一条链路失效后,所以VLAN的数据走剩下可用的链路,实现链路冗余。

5.3  具体配置

    无条件的可写出配置步骤,有条件的可以把所写的配置上机进行调试。

未经允许不得转载:系统玩家 » STP理解与实际操作

分享到:更多 ()
喜欢 0
rancher

评论 抢沙发

评论前必须登录!