技术背景

假设上图是一个园区网的拓扑,从拓扑中可以看出这是一个二层的网络架构,接入层交换机单链路上联到汇聚交换机,你可能已经发现这个网络是不够健壮的,一旦上联链路发生故障,接入层交换机就丢失了网络联通性,因为链路没有冗余。为了让网络变得更加健壮,我们会为交换机增加冗余链路:
每台接入层交换机均双链路上联到汇聚交换机,如此一来确实增加了冗余性,但是也带来了一个新的问题:二层环路(Loop),在园区网中,二层环路的危害是非常大的,容易造成广播风暴、多帧复制、MAC地址漂移、设备CPU飙高等等问题,二层环路问题算的上是园区网杀手之一。造成二层环路的另一个原因是人为的疏忽,例如接错了线导致网络中出现了环路等。那么有没有什么办法,能够在网络中保留二层链路冗余性的同时,规避掉环路问题呢?当然是有的,STP(Spanning-tree Protocol,生成树协议)就是常用的解决方案。
通过在园区网中的交换机部署STP,交换机彼此之间会进行STP协议数据报文的交互,最终通过阻塞(Block)掉特定的接口来打破环路。被Block掉的接口是无法收发数据的,而且当网络拓扑发生变更的时候,生成树能够感知到这些变化,并且进行自动的切换:
生成树协议的种类:



1 BPDU报文
通过在交换机上部署STP可以解决二层环路问题。交换机之间需要交换生成树的协议消息来检测桥接环路,以保证STP工作的正常,该消息称为网桥协议数据单元(BPDU,Bridge Protocol Data Unit), BPDU消息中包含着用于STP选举的各项参数。STP工作的结果是经过一系列的”选举“后将某个或某些端口阻塞从而打破环路。
BPDU有两种类型:配置BPDU(Configuration BPDU)及拓扑变更通知BPDU(TCN BPDU)
1.1 Configuration BPDU
在网络刚开始运行的阶段,所有交换机都会从所有端口发送BPDU,大家都认为自己是根桥,随着BPDU的泛洪和收集,根据BPDU中所含信息,大家PK出来个结果,根桥被选举出来了。在此之后由根桥缺省以2s为周期发送BPDU,所有的非根交换机从自己的根端口收到BPDU,再从自己的指定端口将BPDU“中继Relay”出去。这就有点像我们从根桥倒一盆水下来,水顺着这棵无环的树从上往下不断的流。另外,被阻塞的非指定端口会源源不断的收到链路上的指定端口周期性发送的BPDU并一直侦听,当其在一定时间内没有再收到BPDU,则认为链路出现了故障,开始进入新的收敛阶段。

注意802.1D的STP,在根桥选举出来之后,只有根桥能够发送BPDU,非根桥都只是转发或者说中继BPDU,如果非根桥在根端口上一直没有收到来自根桥的BPDU,则自己是不会往指定端口再发的,这跟RSTP是不同的。

“When a switch receives a configuration BPDU that contains superior information (lower bridge ID, lower path cost, and so forth), it stores the information for that port. If this BPDU is received on the root port of the switch, the switch also forwards it with an updated message to all attached LANs for which it is the designated switch.
If a switch receives a configuration BPDU that contains inferior information to that currently stored for that port, it discards the BPDU. If the switch is a designated switch for the LAN from which the inferior BPDU was received, it sends that LAN a BPDU containing the up-to-date information stored for that port. In this way, inferior information is discarded, and superior information is propagated on the network.”
Catos交换机端口ID中优先级默认32(优先级6个bit) , IOS交换机默认128(优先级字段8个比特)
2.2 TCN BPDU
在网络拓扑变化的时候产生,TCN BPDU报文格式非常简单:
当网络拓扑发生变化的时候,最先意识到变化的交换机会从根端口发送TCN BPDU(BPDU报文中TYPE字段=0x80),也就是朝着根桥的方向发送TCN BPDU,这个消息会一跳一跳地传递到根交换机。上联的交换机在收到了该交换机发送上来的TCN BPDU后,除了向它自己的上一级交换机继续发送TCN BPDU外,还需回送一个TCA BPDU(FLAG字段中TCA位为1的配置BPDU)的确认信息给该交换机。当根桥接收到TCN后意识到了拓扑变化,遂向所有网桥发送TC BPDU(FLAG字段中TC位为1的配置BPDU)。
交换机们收到根桥发出来的TC BPDU后,会将自己的MAC地址表的老化时间由缺省的300s减少为15s(转发延迟计时器的时间),根桥发送的这个TC置位一直会持续35s(20+15)。
2 术语解析
2. Bridge ID 
Bridge ID(8B)= 网桥优先级(2B)和 网桥MAC(6B)
每台运行STP的交换机都有一个唯一的身份标识,这个标识被称为桥ID(BridgeID),一共8个字节,由两部分构成:2字节的桥优先级,和6字节的MAC。桥ID是非常重要的STP标识符,根桥的选举就是依据桥ID的PK来产生的,在网络初始情况下,所有的交换机都会发送BPDU消息,在该消息中就包含着各自的桥ID,网桥优先级最小的交换机成为根桥,如果大家的优先级都相等,则MAC地址最小的交换机成为根桥。
交换机缺省的网桥优先级为32768,取值范围是0-65535,优先级的取值需是4096的倍数(至于为什么得是4096的倍数,见下文);网桥MAC地址在这里指的是交换机背板的MAC。 

2.2 根路径开销 Root Path Cost
本交换机到达根桥的路径的总开销,换句通俗的话说就是,从我这走到根桥“需要费多大劲儿,或者距离有多远“。
以上图为例,假设经过选举,SW1成为根网桥,那么它将周期性的发送BPDU,它发送出来的BPDU消息中,RootID字段填写的是自己的桥ID因为自己就是根网桥,BridgeID字段填写的依然是自己的桥ID因为这个BPDU消息是自己发出的,另外还有一个RootPathCost字段,值为0,从根桥发送出来的BPDU中根路径开销为0,因为自己就是根,自己到自己的距离当然是0。 
SW2作为非根桥,会从自己的根端口Port1上收到来自根桥的BPDU,这个BPDU从Port1上收到之后,SW2要计算一下自己从Port1到根桥的路径开销,算法就是把收到的BPDU中的RootPathCost值加上Port1接口的“接口Cost值“,结果就是0+10=10。于是SW2从Port1到根的路径开销就是10。当然SW2会将来自根桥的这个BPDU从自己的指定端口“中继“出去给SW3,此时发送出去的BPDU中,RootID字段填写的是根桥SW1的桥ID,BridgeID字段填写的是SW2的桥ID,而RootPathCost字段值为10。
SW3收到这个BPDU后,以此类推。
上面提到的“端口Cost“是什么概念呢?每一台参与STP的交换机端口都维护着几个接口级别的参数,其中非常重要的一个参数就是端口开销,这个值跟端口的带宽是有关系的,具体的对应关系看下表,看NEW IEEE定义这一列。
2.3 端口ID 
端口ID(2B)= 端口优先级(1B)和 端口编号(1B)
缺省情况下端口优先级为128,范围0-255。 
Catos交换机端口ID中优先级默认32(优先级6个bit) , IOS交换机默认128(优先级字段8个比特)
每一个配置BUDU里都包含着Port ID字段,这个字段与该BPDU的发送接口有关。例如上图中,SW2会收到来自根桥SW1的BPDU并且从自己的Port 22及Port23口发送出去,这两个发送出去的BPDU中PortID字段填充的就分别是这两个端口的PortID值,当然其中的端口编号与该端口本身的编号有关系,例如FastEthernet0/1口的端口编号就肯定比FastEthernet0/2口要小。
STP的计算如果进行到要比较BPDU中的PortID时,是先比较PortID中的优先级,比小,如果优先级相等,则再比较PortID中的端口编号,也是比小。 
红茶三杯
网络工程 | 项目管理 | 技术培训
学习 沉淀 成长 分享
微博:http://weibo.com/vinsoney
博客:http://blog.sina.com.cn/vinsoney
站点:http://ccietea.com

【STP】生成树协议及STP 802.1D (上)相关推荐

  1. STP(生成树协议)基础(1)

    文章目录 思维导图 冗余 二层环路 STP简介 工作过程 报文格式 配置BPDU TCN BPDU 角色选举规则 根网桥 根端口 指定端口 思维导图 冗余 在通信工程当中,冗余指出于系统安全和可靠性等 ...

  2. 广播风暴及STP生成树协议

    广播风暴: 广播风暴指的是交换机在发送数据时因为环路问题而向网络中发送了过多的广播信息. 为了解决这个问题,就出现了STP生成树协议. STP生成树协议: STP通过阻塞端口来消除环路,并实现链路备份 ...

  3. STP生成树协议:802.1D、PVST、PVST+、RSTP、MSTP;

    索引 STP802.1D 端口角色: 端口状态: 802.1D收敛时间: STP生成树选举: 生成树配置: 802.1D生成树的缺点 PVST -- Cisco私有生成树协议 PVST+ :在PVST ...

  4. 企业三层架构、冗余、STP生成树协议总结

    总结 1.企业三层架构 2. 冗余(线路冗余+设备冗余) 3. STP生成树协议:IEEE802.1D,PVST+,802.1W,RSTP(rpvst),802.1S(MST) 企业三层架构(内网结构 ...

  5. 生成树协议(STP)

    生成树协议 原理:通过允许stp算法,阻塞特定的接口实现冗余无环的网络 企业网三层架构->冗余->线路冗余->二层桥接环路 二层桥接环路就导致了很多问题: 广播风暴 MAC地址表翻滚 ...

  6. HCIP-7.4交换机STP生成树协议原理

    HCIP-7.4交换机STP生成树协议原理 1.什么是交换机生成树? 2.STP生成树 2.1.标准生成树基本计算过程(802.1D) 2.2.STP的基本概念 2.3. BPDU格式及字段说明 2. ...

  7. STP生成树协议与MSTP的基本原理与简单配置

    STP生成树协议与MSTP的基本原理与简单配置 环路引起的问题 为什么要有生成树协议 BPDU 网桥协议数据单元 选举根交换机的原则 端口角色 端口状态描述 选举根端口指定端口的规则 RSTP:快速生 ...

  8. 以前的学习笔记整理:第二层交换和生成树协议(STP)

    Talen Hao LINUX 学习笔记系列■■■■■ 第8章 第二层交换和生成树协议(STP) 系统:cisco 一:打开cisco交换机管理功能(即管理VLAN) 进入接口模式vlan 1: Sw ...

  9. HSRP热备份路由协议 、 STP生成树协议 、 总结和答疑

    1 HSRP配置 1.1 问题 在企业网络到外部的连接方案中,要求不高的条件下可以是单出口.一旦该出口线路出现问题,整个企业网络就不能连接到外网了.为了使得企业网络到外网连接的高可用性,可以设置两个以 ...

  10. 华为路由交换学习篇-STP生成树协议

    目录 STP STP的选举 根桥选举 根端口选举 指定端口选举 替代端口选举 边缘端口的选举 STP的端口状态 测试 实验拓扑图 实验流程 STP 生成树协议,用于解决二层交换网络环路的协议,在二层交 ...

最新文章

  1. SAP Spartacus Category Navigation的accessibility问题
  2. Python web —— webbrowser + feedparser 网络爬虫刷博器
  3. 6.jQuery appendTo问题解决
  4. Handler、Message几种发送消息形式总结
  5. java核心技术卷1学习思维导图
  6. word自动图文集,制表位实现公式对齐,域代码,mathtype自动公式右编号
  7. 云流化/云渲染技术一种比像素流功能更完善的解决方案
  8. idea 的Igonre 设置
  9. python 图片二值化后 判断图片是白底黑字,还是黑底白字
  10. 《Loy解说SpringBoot的注解》
  11. 数据压缩作业:LZW词典编码
  12. sap 新手入门第一课(新装SAP IDES必须做的操作)
  13. 从“最后一公里”问题谈起
  14. 普通90后的北京买房记【回顾】
  15. QApplication与QCoreApplication
  16. 软件测试app内存溢出,浅析软件测试人员如何对JVM进行内存溢出检测
  17. 使用小程序制作一个电子木鱼,功德+1
  18. 通过API执行AutoCAD命令来
  19. apfs扩容_老Macbookpro扩容记
  20. 第二天,向导制作LQFP封装及技巧

热门文章

  1. c语言程序软件下载,C语言下载_C语言官方下载【C语言编程软件】-太平洋下载中心...
  2. Ghost还原的时候,显示A:GHOSTERR.TXT或CRC32错误的解决方案
  3. 天天红单app下载安装_天天红单官网下载
  4. 有哪些免费软件下载网站,安全靠谱的软件分享网站
  5. java获取.py文件值_Java File文件处理 读文件
  6. JavaScript知识梳理总结
  7. onenote2019导入_将OneNote 2010笔记本导入Evernote
  8. CnPack IDE 专家包,delphi程序开发的好助手
  9. 实战 - Nexus搭建Maven私服
  10. 笔记本电脑显卡性能排行榜