华为三康技术有限公司Huawei-3Com Technologies Co.,Ltd.文档编号Document ID 密级Confidentiality level秘密文档状态Document Status共29页Total 29 pages Draft 1.00STP/RSTP 协议理解拟制Prepared by 沈岭Date日期2004-11-03评审人Reviewed by Date日期yyyy-mm-dd批准Approved byDate日期yyyy-mm-dd 华为三康技术有限公司Huawei-3Com Technologies Co., Ltd.版权所有侵权必究All rights reserved修订记录Revision Record日期Date修订版本RevisionVersion修改章节SecNo.修改描述Change Description作者Author2004-11-031.00 x.x.x; initial 初稿完成沈岭2005-11-0 8 1.1 x.x.x;y.y.y修改算法的部分描述,删除问题1,添加图6,添加判断复杂拓扑的方法,更新部分问题的描述,添加STP和RSTP对inferior BPDU的处理,添加STP TC-Protection特性沈岭目录1 S TP 生成树协议 (7)1.1STP的主要作用 (7)1.2STP的基本原理: (7)1.3STP端口的角色和状态 (8)1.4端口状态: (9)1.5STP算法 (9)1.5.1问题1 (12)1.5.2问题2 (13)1.6STP的计时器: (13)1.7STP拓扑结构改变 (14)1.8问题讨论 (16)1.8.1问题3的答案: (16)1.8.2附加题: (16)2 RSTP 快速生成树协议 (19)2.1RSTP的改进 (19)2.2P/A协商 (22)2.3拓扑结构变化 (23)2.3.1问题1: (24)2.3.2问题2: (25)2.3.3问题3 (25)2.3.4问题4: (25)2.3.5附加题 (26)2.4RSTP新增特性 (26)2.4.1BPDU Guard (26)2.4.2Root Guard (27)2.4.3Root Primary/Secondary (27)2.4.4Loop Guard (27)2.4.5STP Mcheck (28)2.4.6STP TC-protection (28)推荐资料: (29)参考资料: (29)图表目录图1 BPDU的报文格式 (7)图2 STP算法拓扑图 (10)图3 另一种可能的拓扑图...................................................................................... 错误!未定义书签。
图4 更复杂的一种情况.. (13)图5 Flag字段 (14)图6 TCN的发送和BPDU的泛洪 (15)图7 RSTP各端口角色 (19)图8 RSTP/STP BPDU的区别 (21)图9 RSTP的Flags字段 (21)图10 P/A协商机制 (23)图11 RSTP的TC泛洪 (24)图12 RSTP的拓扑变化 (24)前言众所周知,生成树协议是Lanswitching中最复杂的协议,协议的复杂度不仅表现在有STP/RSTP/MSTP等各种类型的生成树,以及各种参数和优化方案,更体现在算法、配置信息的交互比较和拓扑结构的变化上。
根据学习过程中所做的一些实验,本文提供了对算法较详细的描述以及关于各种拓扑结构变化的讨论,相信会让大家STP/RSTP模块的理解能提供较大的帮助。
STP/RSTP 协议理解1 STP 生成树协议1.1 STP 的主要作用消除环路:通过阻断冗余链路来消除网络中可能存在的路径回环。
链路备份:当前活动路径发生故障时,激活冗余备份链路,恢复网络连通性。
1.2 STP 的基本原理:通过在交换机之间传递一种特殊的协议报文——BPDU (在IEEE 802.1D 中这种协议报文被称为“配置消息”)来确定网络的拓扑结构。
配置消息中包含了足够的信息来保证交换机完成生成树计算。
(注:此BPDU 被称为配置BPDU ,另外STP 还有TCN BPDU 。
)DMALLC Headerpayload 2目的源配置消息固定域值SMAL/T 0x0180c20000000x424203BPDU 数据报文字节协议版本11标志位184822Max Age 222MAC 地址是一个固定的组播地址MAC 地址是发送配置消息的桥的MAC 地址。
的链路头帧长协议ID BPDU 类型根桥ID最短路径开销指定桥ID 指定端口ID Hello Time Forward DelayMessage Age图1 BPDU 的报文格式注意看BPDU 数据报文的最后8个字段,分别是:根桥ID :由树根的优先级(0-65535,默认32768)和MAC 地址组合而成;到树根的最短路径开销(实际由PortPathCost叠加而成),有两个标准——dot1d-1998,默认值为100和dot1t,默认值为200000;指定桥的ID:由指定交换机的优先级和MAC地址组合而成;指定端口的ID:由指定端口的优先级(0-256,默认128)和端口编号组成;配置消息的生存期:MessageAge;配置消息的最大生存期:MaxAge;配置消息发送的周期:HelloTime;端口状态迁移的延时:ForwardDelay。
启动了STP的交换机互相之间通过发送配置BPDU来完成根桥,指定桥的选举,各端口状态的选择和整个网络拓扑结构的确定。
比较的关键部分在于这八个字段中的前四个字段,即:根桥ID、路径开销、指定桥ID和指定端口的ID。
其实还有一个接收端口的ID,用于本地比较(当交换机的2个端口都收到相同的BPDU时——比如上连一个stp disable的交换机或hub)。
比较的原则:从上到下、从左到右数值小者优先。
STP协议使用的所有BPDU都是组播报文,目的MAC是01-80-c2-00-00-00。
1.3 STP端口的角色和状态STP拓扑结构的建立微观上说是一个全网交换机互相交互的过程,各台交换机相互之间不停的发送配置BPDU,发送和接受BPDU的是各switch的Ports,BPDU不单在不同交换机的端口之间比较,也在交换机的内部作比较,如果发现比自己“优”的BPDU,就进行报文的更新,如果发现对方传来的BPDU不如自己的,则丢弃报文,直到再收不到比自己更优的BPDU为止。
当网络中所有的交换机都处于这种状态的时候我们可以认为拓扑结构已经建立,但根端口和指定端口还得经过2个Forward Delay Time才能进入转发状态。
所以STP拓扑结构的建立实际上可以理解为端口角色的建立,所有端口都为指定端口的交换机被选为根桥,其余的为指定桥。
这里要提到5个概念:根桥,指定桥,根端口,指定端口,Block端口。
根桥就是“网桥ID”最优的桥,当STP的拓扑结构稳定之后由根桥负责每2秒(Hello Time)向树中所有的网桥发送配置BPDU报文,其他网桥接收并转发。
根端口即去往根桥路径最近的端口,这个最近的衡量是靠Root Path Cost来判定的。
有关Path Cost的计算,是每当一个端口收到一个BPDU后,会在该BPDU所指示的Path Cost上加上该端口的PortPath Cost (这是可以人为配置的)。
比较累计Root Path Cost 最小的端口就是根端口,如果有两条开销相同的路径,那么就选择桥BID 较小的。
指定桥就是对下游来说向它转发BPDU 报文的桥,一个LAN 上除了根桥以外的所有网桥都是指定桥。
为什么这么说呢?根据定义而来,指定桥上必定有指定端口(即使是网络边缘的网桥也有——连接到主机的端口),而指定端口就是用来转发BPDU 报文的。
这里要注意的是拓扑稳定后Root Port 是不发送BPDU 报文的,虽然它的状态是Forwarding ,它只接收BPDU 。
指定端口:即在一个LAN 里面负责转发BPDU 的端口,根桥和指定桥上都有它,但根端口只在指定桥上有,同样block 端口也只存在于指定桥上。
Block 端口:即被对方的指定端口抑制的端口,Block 端口不转发任何报文,但他接收BPDU ,监听网络变化。
根端口、指定端口、Block 端口即为STP 网桥端口的三个角色。
1.4 端口状态:如图所示,一共有5种端口状态:表1 STP 的五种端口状态前三个状态之间的转换各需要经过一个Forwarding Delay Time (15s ),这也是可以人为配置的。
关于几个计时器将在后面的内容加以介绍。
1.5 STP 算法现在重点讲一下STP 算法的实现,纯理论的讲算法过于枯燥,这儿以三台全互连的交换机为例描述一下实现过程。
(注:关于状态机的标准实现可以参考IEEE.802.1D ,这里只用容易理解的语言描述整个过程,可能有细节说法上不太规范,但更方便理解。
)Forwarding 转发用户流量的状态,只有根端口或指定端口才有这种状态。
Learning 构建MAC 地址表,这时接收到用户帧,网桥会填充自己MAC地址表。
所以是学习“状态”。
Listening 根桥、根端口、指定端口的选择就是在该状态内完成。
Blocking 仅仅接收Configuration BPDU 。
Disabled或Down ,认为阻断或物理上断掉。
AP2AP1BP1BP2CP1CP2ABC236图2 STP 算法拓扑图为了描述方便,这里指比较BPDU 的前四项:根桥ID (以以太网交换机的优先级表示),根路径开销,指定交换机ID (以以太网交换机的优先级表示),指定端口ID (以端口号表示)。
假设SWA,SWB,SWC 的桥优先级分别为0,1,2。
各链路开销为2,3,6。
这里要特别说明一点:Root Path Cost 不是一个可配置项,即它是由交换机根据Port Path Cost 比较而累积得出的,Port Path Cost 才是一个可配置的选项。
图中的链路开销可理解为2端端口的Port Path Cost ,只不过它们恰好相同而已。
(1)初始状态各台交换机的各个端口在初始时会生成以自己为根的配置消息,根路径开销为0,指定交换机ID 为自身交换机ID ,指定端口为本端口。
Switch A :端口AP1配置消息:{0,0,0,AP1} 端口AP2配置消息:{0,0,0,AP2} Switch B :端口BP1配置消息:{1,0,1,BP1} 端口BP2配置消息:{1,0,1,BP2} Switch C :端口CP2配置消息:{2,0,2,CP2} 端口CP1配置消息:{2,0,2,CP1} (2)选出最优配置消息各台交换机都向外发送自己的配置消息。