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

文章目录

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

思维导图

STP(生成树协议)基础(1)_第1张图片

冗余

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

二层环路

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

STP简介

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

工作过程

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

假如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。
    STP(生成树协议)基础(1)_第13张图片
  • 协议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标准,可以手动修改标准。
    STP(生成树协议)基础(1)_第14张图片
[Huawei]stp pathcost-standard ?
  dot1d-1998  IEEE 802.1D-1998
  dot1t       IEEE 802.1T
  legacy      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

STP(生成树协议)基础(1)_第15张图片

角色选举规则

在下列选举演示时,所有接口的开销均为18,BID为sw1

根网桥

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

根端口

  • 根网桥外的其他交换机都需要选择一个根端口,根端口负责接收配置BPDU。根网桥选举成功后,只有根网桥可以发送配置BPDU,其他交换机会接收转发该配置BPDU,交换机会选择本地到根网桥开销最小的接口为根端口
    STP(生成树协议)基础(1)_第18张图片

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

  • 如果交换机收到的配置BPDU的RPC相同则比较对端交换机的BID,选择对端交换机BID小的接口为根端口
    STP(生成树协议)基础(1)_第19张图片
  • 如果对端交换机的BID也相同,则比较对端的PID,选择对端交换机PID小的为接口为根端口
    STP(生成树协议)基础(1)_第20张图片
  • 如果收到的对端PID也相同,则比较本地收到配置BPDU的PID,选择本地PID小的接口为根端口

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

STP(生成树协议)基础(1)_第21张图片

指定端口

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

你可能感兴趣的:(网络,网络协议)