1 STP概述
STP 包含了两个含义,狭义的 STP 是指 IEEE 802.1D-1998 中定义的 STP 协议,广义的 STP 是指包括 IEEE 802.1D-1998 定义的 STP 协议以及各种在它的基础上经过改进的生成树协议。本文中的STP 均指狭义的 STP。STP 的基本思想十分简单。自然界中生长的树是不会出现环路的,如果网络也能够像一棵树一样生长就不会出现环路。于是, STP 中定义了根桥(Root Bridge)、根端口(Root Port)、指定端口(Designated Port)、路径开销(Path Cost)等概念,目的就在于通过构造一棵树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。用于构造这棵树的算法称为生成树算法(Spanning Tree Algorithm)。
要实现这些功能,网桥之间必须要进行一些信息的交互,这些信息交互单元就称为 BPDU(Bridge Protocol Data Unit,桥协议数据单元),也称为配置消息。本文中将把生成树协议的协议报文均简称为 BPDU。 STP BPDU 是一种二层报文,目的 MAC 是多播地址 01-80-C2-00-00-00,所有支持STP 的网桥都会接收并处理收到的 BPDU 报文。该报文的数据区里携带了用于生成树计算的所有有用信息。
STP的工作过程是:首先进行根桥的选举。选举的依据是网桥优先级和网桥MAC地址组合成的桥ID,桥ID最小的网桥将成为网络中的根桥,它的所有端口都连接到下游桥,所以端口角色都成为指定端口。接下来,连接根桥的下游网桥将各自选择一条 “最粗壮”的树枝作为到根桥的路径,相应端口的角色就成为根端口。循环这个过程到网络的边缘,指定端口和根端口确定之后一棵树就生成了。生成树经过一段时间(默认值是30秒左右)稳定之后,指定端口和根端口进入转发状态,其他端口进入阻塞状态。STP BPDU会定时从各个网桥的指定端口发出,以维护链路的状态。如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。这就是生成树的基本原理。
2 STP基本概念
2.1 STP根桥
网桥运行STP后,会消除网络环路,形成一颗逻辑拓扑树,根桥就是指这颗树的根结点,是所有网 桥中具有最高优先级标识(即网桥标识最小)的网桥,对于一个 STP 网络,根桥在全网中只有一个, 它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。网络收 敛后,根桥会按照一定的时间间隔产生并向外发送配置 BPDU,其他设备仅对该报文进行处理,传 达拓扑变化记录,从而保证拓扑的稳定。
2.2 STP度量
生成树的生成计算有两大基本度量依据:ID 和路径开销。
(1)ID 又分为:BID(Bridge ID)和 PID(Port ID)。
BID:桥 ID
IEEE 802.1D 标准中规定 BID 是由 16 位的桥优先级(Bridge Priority)与桥 MAC 地址构成。BID 桥优先级占据高 16 位,其余的低 48 位是 MAC 地址。
在 STP 网络中,桥 ID 最小的设备会被选举为根桥。
PID:端口 ID
PID 由两部分构成的,高 4 位是端口优先级,低 12 位是端口号。
PID 只在某些情况下对选择指定端口有作用
路径开销
根路径花费:每个交换机端口都有一个根路径花费,根路径花费是该交换机到根交换机所经过的各跳段的路径花费的总和。
端口路径花费:每个网桥端口用于接收数据时,都有一个路径花费。
2.3 STP端口选取
(1)指定网桥:在每个单独LAN中都有一个交换机被称为指定网桥,它属于该LAN中 根路 径花费最少的交换机。根交换机是所有跟它连接的LAN的指定网桥。
(2)根端口:交换机中具有最小根路径花费的端口被称为交换机的根端口。如果有多 个端口具 有相同的根路径花费,则具有最高优先级的端口为根端口。
(3)指定端口:把LAN和指定网桥连接起来的端口就是LAN的指定端口。如果选取交换机 中有两个以上的端口连在这个LAN上,则具有最高优先级的端口被选为指定端口。根交换机 的所有端口都是指定端口。
2.4 STP端口状态
图2.4
(1) Disabled :端口不参与帧的转发、MAC地址学习和生成树运算。
(2)Blocking:端口不进行帧的转发,不进行MAC地址学习,但接收BPDU和参与生成树的运算。
(3) Listening:端口不转发帧,不进行MAC地址的学习,但接收BPDU和参与生成树的运算, 接收到的BPDU需要提交用来发送。
(4)Learning:端口不转发帧,但进行MAC地址的学习并且接收BPDU和参与生成树的运算,接 收到的BPDU需要提交用来发送。
(5)Forwarding:端口转发帧,进行MAC地址的学习并且接收BPDU和参与生成树的运算,接收 到的BPDU需要提交用来发送。
2.5 STP参数
Hello Time
运行 STP 协议的设备发送配置消息 BPDU 的时间间隔,用于设备检测链路是否存在故障。设备每 隔 Hello Time 时间会向周围的设备发送 hello 报文,以确认链路是否存在故障。根交换机产生配 置报文的时间间隔。
Forward Delay
设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应 的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口 立刻就开始数据转发的话,可能会造成临时环路。为此, STP 采用了一种状态迁移机制,新选出 的根端口和指定端口要经过 2倍的Forward Delay延时后才能进入转发状态,这个延时保证了 新的配置消息传遍整个网络,从而防止了临时环路的产生。
作用有两个:端口在Listening状态时间和Learning状态的时间;
在网络拓朴变化时,作为过滤数据库的动态表项的老化时间。
Max Age
配置报文的有效时间,也叫信息生存时间。
Max Age 通过配置 BPDU 报文的传输,可保证 Max Age 在整网中一致。运行 STP 协议的网络中 非根桥设备收到配置 BPDU 报文后,报文中的 Message Age 和 Max Age 会进行比较:
如果 Message Age 小于等于 Max Age,则该非根桥设备继续转发配置 BPDU 报文。
如果 Message Age 大于 Max Age,则该配置 BPDU 报文将被老化。
3 STP报文协议
3.1报文格式
图3.1
(1) Protocol Identifier:为0x00,标识生成树协议。
(2) Protocol Version Identifier:为0x00。
(3) BPDU Type:值为0x00,表示配置BPDU;
Flags:使用了两个标志位,A000000B,当A为1时,表示拓扑改变确认;当B为1时,表示拓扑改变。
(4) Root Identifier:根交换机的唯一标识,为8字节。由交换机的优先级和交换机的MAC地址组成。
(5) Root Path Cost:根路径花费,为4字节。
(6) Bridge Identifier:交换机的唯一标识,为8字节。由交换机的优先级和交换机的MAC地址组成。
(7) Port Identifier:发送配置BPDU报文的端口ID号,为2字节。由端口的优先级和端口ID组成。
(8) Message Age:从根桥产生此配置报文以来的时间。、
(9) Max Age:配置报文的有效时间,也叫信息生存时间(Information Life Time)。此参数由根交换机设置 。
(10) Hello Time:根交换机产生配置报文的时间间隔。此参数由根交换机设置 。
(11) Forward Delay:此参数由根交换机设置 。其作用有两个:端口在Listening状态时间和Learning状态的时间;在网络拓朴变化时,作为过滤数据库的动态表项的老化时间。
3.2报文类型
BPDU有两种类型:配置BPDU和TCN BPDU。
配置BPDU描述本设备的配置信息,包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
4 STP工作原理
4.1 正常状态
图4.1
(1)选举根桥。
交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都 认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端 口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。 如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU 报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己 的BPDU报文的根桥ID字段,宣告新的根桥。
(2)每个非根交换机选举一个根端口。
端口的根路径开销:交换机的每个端口都有一个端口开销(Port Cost)参数,此参数 表示该端口在STP 中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高, 开销越小。从一个 非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销 值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向 端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路 径,这条最短路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生 成无环树状网络。根桥的根 路径开销是0。
PID(端口ID):运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级 和端口号构成。
(3)每条链路选举一个指定端口。
在链路上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口, 就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指 定端口。
选举依据:根路径开销(注意这里为该端口的交换机到达根桥最短路径)、本端 BID、 本端PID。
(4)剩下的为阻塞端口,被阻塞。
4.2 链路故障
(1)根桥故障:
SWA和SWB使用了两条链路互连,其中一条是主用链路,另外一条是备份链路。生 成树正常收敛之后,如果SWB检测到根端口的链路发生物理故障,则其预备端口会 迁移到Listening、Learning、Forwarding状态,经过两倍的Forward Delay后恢 复到转发状态。
(3)非直连链路故障:
SWB与SWA之间的链路发生了某种故障(非物理层故障),SWB因此一直收不到来自 SWA的BPDU报文。等待Max Age定时器超时后,SWB会认为根桥SWA不再有效,并认 为自己是根桥,于是开始发送自己的BPDU报文给SWC,通知SWC自己作为新的根桥。 在此期间,由于SWC的预备端口再也不能收到包含原根桥ID的BPDU报文。
其Max Age定时器超时后,SWC会切换预备端口为指定端口并且转发来自其根端口的BPDU报文给SWB。所以,Max Age定时器超时后,SWB、SWC几乎同时会收到对方发来的BPDU。经过STP重新计算后,SWB放弃宣称自己是根桥并重新确定端口角色。非直连链路故障后,由于需要等待Max Age加上两倍的Forward Delay时间,端口需要大约50秒才能恢复到转发状态。
5 STP运用和配置
5.1 组网要求
● 按照组播拓扑图搭建,通过使能STP后能防止环路。
● Router1、Router2、Router3、Router4能互相访问。
5.2 组网拓扑图
图5.1 STP拓扑图
5.3 配置思路
如图5.1所示:
● 配置各网桥的虚IP接口。
● 配置参与拓扑的端口STP使能。
5.4 CLI配置
(1)配置各网桥的虚IP接口。
#配置Router1
Router1(config)# ip-interface ip0 address 192.168.1.1/24 vlan 1
#配置Router2
Router2(config)# ip-interface ip0 address 192.168.1.2/24 vlan 1
#配置Router3
Router4(config)# ip-interface ip0 address 192.168.1.3/24 vlan 1
#配置Router4
Router4(config)# ip-interface ip0 address 192.168.1.4/24 vlan 1
(2)参与拓扑的端口STP使能。
#配置Router1
Router1(config)# interface port1-port2 stp enable
#配置Router2
Router2(config)# interface port1-port2 stp enable
#配置Router3
Router3(config)# interface port1-port2 stp enable
#配置Router4
Router4(config)# interface port1-port2 stp enable
5.5验证配置
#查看Router1的STP全局配置:
Router1(config)# show stp
spanning tree informations
----------------------------------------------------------------------------
Stp Mode : rstp
Bridge ID : C8C50E-000011/32768
Root Bridge : C8C50E-000011/32768
Root Path Cost : 200000
Configured Times
forwardDelay helloTime maxAge txLimit
---------------------------------------------------------------------------
15 2 20 6
Operational Times
forwardDelay helloTime maxAge messageAge
----------------------------------------------------------------------------
15 2 20 1
----------------------------------------------------------------------------
#查看Router2的STP全局配置:
Router2(config)# show stp
spanning tree informations
----------------------------------------------------------------------------
Stp Mode : rstp
Bridge ID : C8C50E-000011/32768
Root Bridge : C8C50E-000022/32768
Root Path Cost : 200000
Configured Times
forwardDelay helloTime maxAge txLimit
---------------------------------------------------------------------------
15 2 20 6
Operational Times
forwardDelay helloTime maxAge messageAge
----------------------------------------------------------------------------
15 2 20 1
----------------------------------------------------------------------------
#查看Router1的STP端口配置:
Router1(config)# show interface port1-port2 stp
Spanning tree ports informations
Port Name Stp Enable Port Role Port State
--------------------------------------------------------
port1 enabled designated port forwarding
port2 enabled designated port forwarding
--------------------------------------------------------
Total 2 ports listed
#查看Router1的STP端口配置:
Router2(config)# show interface port1-port2 stp
Spanning tree ports informations
Port Name Stp Enable Port Role Port State
--------------------------------------------------------
port1 enabled root port forwarding
port2 enabled designated port forwarding
------------------------
5.5 WEB配置
STP除了通过命令行配置,还可以通过页面来进行配置。
a) 全局配置
(1)在导航栏选择“交换管理>STP>全局配置”,进入STP全局配置界面,如图5.2所示的页面。
(2)在ERPS的全局配置页面。
系统优先级、状态转换延迟、发送数据包间隔、最大生存时间、数据包个数进行全局配置。
图5.2 STP全局配置界面
b) 端口设置
在导航栏“交换管理>STP>端口设置”进入到STP端口配置页面
(1)端口配置
图 5.3 STP端口设置页面
图5.4 STP端口配置
c)STP配置信息查看
(1)STP信息查看
图5.5stp信息
在导航栏“交换管理>STP>STP信息”进入到STP信息页面,如图5.5所示。
(2)stp端口信息查看
图5.6 STP端口信息
在导航栏“交换管理>STP>端口信息”进入到端口信息页面,如图5.6所示。