文章目录

  • 思维导图
  • 冗余
  • 二层环路
  • STP简介
  • 工作过程
  • 报文格式
    • 配置BPDU
    • TCN BPDU
  • 角色选举规则
    • 根网桥
    • 根端口
    • 指定端口

思维导图

冗余

  • 在通信工程当中,冗余指出于系统安全和可靠性等方面的考虑,人为地对一些关键部件或功能进行重复的配置。当系统发生故障时,比如某一设备发生损坏,冗余配置的部件可以作为备援,及时介入并承担故障部件的工作,由此减少系统的故障时间
  • 在企业内网部署中,冗余尤为重要,如上图中一个简单的企业网三层架构。冗余又分为设备冗余、网关冗余、链路冗余和UPG(电源)冗余。

二层环路

  • 在下图的局域网中,图1的PC2只能由SW2-SW1-Router访问公网,如果SW2和SW1间的链路故障,那PC2就无法访问公网了;而图二中我连接了SW2和SW3实现了链路冗余,当SW2和SW1间的链路故障,SW1还可将流量交由SW3转发,但如果SW1设备故障,那所有设备都无法访问公网;图3中我增加了一个连接Router的交换机,并且将交换机与交换机间都连接起来,实现设备冗余+链路冗余,现在即使SW1故障,还有SW4可以连接Router。从这些可以看出冗余对网络稳定性的重要性
  • 但交换机与交换机之间互相连接会导致二层环路,二层环路会导致广播风暴、MAC地址表翻滚和同一数据帧重复拷贝。
  • 广播风暴:在上图中当一广播包来到SW1上,SW1会将其向SW2和SW3洪泛、SW2收到广播包后也会向SW3洪泛,SW3收到SW2发来的广播包又会向SW1洪泛,SW1又会重复上述过程,导致广播帧在二层环路中形成顺时针转动和逆时针转动的两层环路,无限循环,最终导致设备宕机,网络瘫痪。
  • MAC地址表翻滚:当某一个数据包进入SW1,SW1会首先记录该数据包源MAC与进入端口的映射,然后洪泛该数据包;然后该数据包经由SW2-SW3又来到SW1上,SW1就会重新记录该数据包源MAC与进入端口的映射,同时数据包也会经由SW3-S2又来到SW1上,SW1也需要重新记录该数据包源MAC与进入端口的映射,于是导致MAC的频繁变动,又称为 MAC地址表翻滚。
  • 同一数据帧的重复拷贝:在广播风暴的过程中,对需要洪泛的数据包都会复制然后向所有接口转发,数据包每转一圈,数据包的数量都会增加。

STP简介

  • 生成树协议是IEEE 802.1D中定议的数据链路层协议,可应用于计算机网络中树形拓扑结构建立,主要作用是通过逻辑阻塞部分端口防止二层网络中的冗余链路形成环路,当出现故障时又恢复阻塞端口,重新计算生成树拓扑。
  • STP的基本原理:通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。BPDU有两种,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用于计算无环的生成树的,后者则是用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)。

工作过程

  • 所有交换机启动后,激活STP协议,向所有接口发送BPDU
  • 选举根网桥,所有交换机通过比较BID,选则拥有最小BID的交换机为根网桥(网桥也就是交换机,交换机的前身就是网桥,STP在很早就出现了),选举完成后,只有根网桥可以发送配置BPDU
  • 选举根端口,根端口负责接收配置BPDU,是离根网桥开销最小的接口
  • 选举指定端口,一条链路上一定有一个指定端口,指定端口负责转发接收到的配置BPDU,交换机在转发配置BPDU时,会修改其中的某些参数。
  • 选举非指定端口,如果指定端口链路另一端不是根端口,那它就是指定端口,阻塞非指定端口,生成树状拓扑。
  • 本地链路故障后,STP重新收敛,为了加快刷新全网所有交换机MAC地址表的记录,将向本地所有STP接口发送TCN BPDU。邻居交换机收到后,先回复TCA标记位置1的配置BPDU,用于可靠传输;之后,再逐级转发TCN BPDU到根网桥处,由根网桥回复TC标记位置1的配置BPDU来逐级回复到所有交换机;是所有交换机临时将MAC地址表的老化时间从300S修改为15秒(该值等同于转发延时时间)。用于加快失效MAC地址表的刷新。

假如sw2连接着的一个主机MAC为A,sw3中A会与与sw1相连的接口产生映射,当sw1与sw2间的链路出现故障时,sw1无法将消息直接发送给给sw2,而此时sw3任然认为到A找sw1,所以此时需要清除sw3中的错误MAC,减少MAC表的老化时间就可以将在这段时间内没有重新记录的MAC映射清除掉,其中必定有错误的MAC映射。

报文格式

STP的数据包叫做BPDU。B 这里指网桥;PDU指的是数据协议单元 ,BPDU是一种跨层封装的数据帧,直接封装到二层。STP中一共存在两种BPDU:配置BPDU,TCN BPDU。

配置BPDU

  • 配置BPDU:只有根网桥可以发送,在交换网络初始状态,所有交换机均定义本地为根网桥,进行BPDU的发送;之后,整个网络中所有设备均收到其他设备的BPDU,之后,相邻交换机间基于数据包中的参数进行对比,选举根网桥;之后所有非根网桥不再发送配置BPDU,而是仅接受和转发根网桥发送的BPDU。
  • 协议ID:对于STP而言,该字段的值总为0
  • 协议版本 ID:STP是较为古老的版本,现在还有RSTP(特快生成树)
  • BPDU类型:配置BPDU的值为0x00,TCN BPDU的值为0x80
  • 标志:只使用最高位和最低位,在发生结构变化时才会使用,故障交换机向所有接口发送TCN BPDU,相邻交换机收到TCN BPDU后,在转发根网桥的配置BPDU时会将标志位的最高位(TCA)置1发给故障交换机,表确认;根网桥收到TCN BPDU后会向所有接口发送标志位的最低位(TC)位置1的配置BPDU,使其他交换机加快失效MAC地址表的刷新。
  • 根桥ID:每个交换机都有一个身份标识,称为BID,初始交换机都认为自己是根网桥向外发送配置BPDU,所以初始根桥ID为本地BID,后根网桥选举成功后,只有根网桥可以发送配置BPDU,该报文中的根桥ID为本地BID。

配置BPDU的BID = 优先级 + MAC地址,总共有8个字节
优先级:占两个字节,理论取值范围为0 - 65535,但真实取值范围为0 - 61440,默认为32768,越小越优,优先级一共有16位,但STP只使用前4位,每一位代表4096,所以在修改优先级的时候,只能按4096的倍数进行修改
优先级的后12位:扩展系统ID,在802.1D和802.1W中均保留,只有在802.1S中启用。

支持STP的交换机,必须拥有MAC地址,一般的二层交换机,只有一个SVI接口,则可以使用接口对应的MAC地址最为BID中的MAC地址;但是三层交换机,可能存在多个MAC地址,则将在所有MAC地址中选择数值最小的MAC地址作为BID中的MAC地址。

  • 根路径开销(RPC):到达根网桥的STP路径开销,交换机会根据接口速率指定开销值,当交换机从某接口收到配置BPDU,会先添加该接口的开销值到RPC。接口开销有不同的制定标准,华为设备默认使用的是802.1t标准,可以手动修改标准。
[Huawei]stp pathcost-standard ?dot1d-1998  IEEE 802.1D-1998dot1t       IEEE 802.1Tlegacy      Legacy
  • 网桥ID:本地BID
  • 接口ID(PID):交换机会为每个接口进行编号以区分接口,接口ID共2字节,由两部分组成:前4位:优先级,后12位为接口的编号。

BID、RPC、PID是参与STP生成树角色选举的四个参数。

  • 消息寿命:当BPDU每经过一个交换机+1,初始值为0,最大值为20,当一个BPDU的消息寿命大于最大值时,我们将直接忽略这个BPDU,相当于给STP规定了一个工作半径。
  • 最大寿命:缺省为20s,如果收到邻居发来的BPDU后的20s后没有收到BPDU,则认为该邻居
  • Hello时间:BPDU的发送周期,缺省为2s
  • 转发延迟:在接口状态中切换停留时间,默认时间为15S。交换机收到根网桥桥发出的TC后,会临时将MAC地址表的老化时间改为转发延迟时间

TCN BPDU

角色选举规则

在下列选举演示时,所有接口的开销均为18,BID为sw1<sw2<sw3…,PID使用1、2、3.……标识

根网桥

  • 交换机启动后机会激活STP协议,初始所有交换机都认为自己是根网桥,并向所有接口发送配置BPDU,然后相邻交换机就会收到对方的配置BPDU,比较本地配置BPDU与所有相邻交换机的配置BPDU的根桥ID参数,先比较优先级,优先越小越好;如果优先级相同,则比较MAC地址, 取MAC地址最小的为根网桥,然后非根网桥就会转发根网桥的配置BPDU。

根端口

  • 根网桥外的其他交换机都需要选择一个根端口,根端口负责接收配置BPDU。根网桥选举成功后,只有根网桥可以发送配置BPDU,其他交换机会接收转发该配置BPDU,交换机会选择本地到根网桥开销最小的接口为根端口

根网桥发出的配置BPDU的RPC值为0,进入交换机后才会增加开销值

  • 如果交换机收到的配置BPDU的RPC相同则比较对端交换机的BID,选择对端交换机BID小的接口为根端口
  • 如果对端交换机的BID也相同,则比较对端的PID,选择对端交换机PID小的为接口为根端口
  • 如果收到的对端PID也相同,则比较本地收到配置BPDU的PID,选择本地PID小的接口为根端口

要想对端PID也相同,就必须使本地交换机多个接口连接对端交换机的一个接口,可通过HUB实现

指定端口

  • 选择完根端口后开始选择指定端口,指定端口负责转发配置BPDU,根网桥上的接口都是指定端口
  • 根网桥外的其他交换机首先比较配置BPDU在出接口时的开销值
  • 如果开销值相同比较链路两端交换机的BID
  • 如果BID相同,则比较链路两端的PID
  • 如果PID也相同,则直接阻塞该端口
  • 选择完根端口和指定端口,剩下的都是非指定端口,非指定端口进行逻辑阻塞,不能转发数据和配置BPDU,当发生故障时,非指定端口会解除阻塞。

STP(生成树协议)基础(1)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. STP生成树协议详情

    生成树协议 STP        生成树协议 RSTP    快速生成树协议 MSTP    多生成树协议 一.原理 stp:Spanning Tree Protocol (生成树协议) 交换网络广播 ...

  7. STP生成树协议(原理+实验)

    文章目录 STP生成树协议原理与配置 前言 一.STP生成树协议的作用 二.STP各种选举的报文--BPDU 三.STP协议中交换机端口角色 四.RSTP快速生成树协议 五.MSTP多实例生成树协议 ...

  8. 8.STP生成树协议、PVST、HRSP、端口聚合

    STP生成树协议 广播风暴:交换机形成环路会形成广播风暴 多帧复制 MAC震荡或MAC地址飘移 一.交换机广播风暴的产生 1.交换机工作原理 根据MAC地址表转发数据帧,如果地址未知,则广播. 2.广 ...

  9. Cisco STP生成树协议

    BPDU bridge protocol data units 802.1d STP     802.1w RSTP 802.1s    MSTP STP spanning-tree protocol ...

最新文章

  1. array_multisort
  2. JavaScript获取节点类型、节点名称和节点值
  3. go interface{}类型转换
  4. iis php mysql wiki_Windows下安装MediaWiki (iis+php+mysql+mediawiki)
  5. BundlePhobia
  6. Gradle复制文件/目录方法
  7. CSS3 线性渐变背景的过渡效果
  8. Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性
  9. 修改系统时间导致myeclipse不能自动发布的解决方法
  10. 深入浅出——搞懂卷积神经网络的过拟合、梯度弥散、batchsize的影响的问题
  11. NDK配置文件Android.mk简介
  12. 【心电信号】基于matlab心电图峰值检测【含Matlab源码 1548期】
  13. 3dmax2016软件一打开文件就程序错误的原因及解决方法
  14. 中兴c600olt数据配置_中兴OLT业务配置
  15. 多通道ECG心率监测系统
  16. 40岁想在职读计算机博士,年龄超过四十五岁还有机会报考在职博士吗
  17. 手把手教你整合SSM实现一个简单的CRUD项目
  18. 计算机电脑怎么改皮肤,终极:如何更改计算机鼠标的皮肤
  19. 数据分析师是如何被淘汰的?
  20. [秋招]大疆秋招正式批笔试

热门文章

  1. CodeForces 630K Indivisibility (容斥)
  2. Hive 区分cluster by、distribute by + sort by、order by以及创建表带有clustered by和sort by
  3. 【Python】第二章(条件语句和循环语句)
  4. java 找茬_求大神帮忙找茬,就是改不过来错误
  5. 神经网络和深度学习(4)--符号约定
  6. 基于YOLOv5和Python开发的中国交通标志识别系统
  7. 【酷熊科技】工作积累 ----------- Unity3D grid 显示问题
  8. Python入门之基础语法
  9. 7-6 幸运彩票 (15 分)
  10. 图像的膨胀(dilation)和腐蚀(erosion)