生成树协议STP

1、背景

以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路(备份)。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。

生成树协议STP_第1张图片
生成树协议STP_第2张图片

二层环路与三层环路

三层环路:常见根因:路由环路;解决办法:动态路由协议有一定的防环能力;IP报文头部中的TTL字段可用于防止报文被无止尽地转发。

二层环路:常见根因:网络中部署了二层冗余环境,或人为的误接线缆导致;解决办法:需借助生成树STP实现二层防环;二层帧头中并没有任何信息可用于防止数据帧被无止尽地转发。

环路产生的问题

  1. 广播风暴/广播泛滥

  1. MAC地址不稳定/漂移/动荡:从不同端口学到同一个MAC地址:一个MAC地址只能对应一个端口,如果在不同接口学习到同一个MAC地址,则后面学习到的接口覆盖前面学习到的。

dis mac-address   //查看mac地址表
  1. 接收重复帧

生成树协议STP_第3张图片
  • BUM帧(Broadcast,Unknown unicast,Multicast)指定广播、未知单播及组播帧。

2、生成树协议概念

STP是一个用于局域网中消除环路的协议。在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路。

交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整,从而使得网络状态适应新的拓扑结构,保证网络可靠性。因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。

生成树协议STP_第4张图片

桥ID(Bridge ID,BID)占8字节

  • IEEE 802.1D标准中规定BID由16bit的桥优先级(Bridge Priority 前4bit可以自行分配,后12bit用0 占位 因此步长是4096,即2的12次方)与48bit桥MAC地址构成。

  • 每一台运行STP的交换机都拥有一个唯一的BID。(因为MAC唯一) 如:4096.4c1f-aabc-102a

根桥

  • STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。STP的根桥是可以被抢占的.

  • 先比较桥优先级,优先级相同,再比较桥MAC,在STP网络中,BID最小的设备会被选举为根桥越小越优。桥优先级默认32768(华为的范围是:0-61440),步长4096(桥优先级配置时:只能是0或4096的倍数)。

开销Cost

  • 每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。

  • 接口带宽越大,则Cost值越小。用户也可以根据需要通过命令调整接口的Cost。

Cost计算方法

  • 接口Cost是已经激活了STP的接口所维护的一个开销值,该值存在默认值,与接口的速率有关联,并且设备使用不同的算法时,相同的接口速率对应不同的Cost值。 速率越高,开销越小。

E口:百兆 G口:千兆 开销计算模式:dot1d-1998 dot1t legacy

生成树协议STP_第5张图片

RPC 根路径开销(Root Path Cost)

  • RPC:“丈量”交换机某个接口到根桥的“成本”。

  • 一台设备从某个接口到达根桥的RPC=从根桥到该设备沿途所有入方向接口的Cost累加

在本例中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的Cost加上接口2的Cost。

生成树协议STP_第6张图片

接口ID(Port ID,PID)

  • 运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口

  • 接口ID(2字节)构成:高4 bit是接口优先级,低12 bit是接口编号。范围:0-240,步长:16(设置ID时,必须是0或16的倍数)

  • 激活STP的接口会维护一个缺省(默认)的接口优先级,在华为交换机上,该值为128(16进制0x:80)。用户可以根据实际需要,通过命令修改该优先级。

生成树协议STP_第7张图片

BPDU(Bridge Protocol Data Unit,网桥协议数据单元)

  • BPDU是STP能够正常工作的根本。BPDU是STP的协议报文

  • STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。

  • BPDU类型:1、配置BPDU(Configuration BPDU) 2、TCN BPDU(Topology Change Notification BPDU)配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发

配置BPDU的报文格式

生成树协议STP_第8张图片
  • PVI: stp-0 rstp快速生成树-2 mstp多生成树-3

  • 拓扑发生变化:发TCN BPDU

  • Max Age和Message Age无关

  • 消息寿命,跳数 半径不超过20跳

3、STP原理

构造一个逻辑无环的拓扑结构,需要执行下面四个步骤

1、选举一个根桥: 先比较桥优先级,优先级相同,再比较桥MAC在STP网络中,BID最小的设备会被选举为根桥。越小越优。桥优先级默认32768(华为的范围是:0-61440),步长4096(桥优先级配置时:只能是0或4096的倍数)。

dis bridge mac-address

2、每个非根交换机选举一根端口(RP):非根交换机在选举根端口时分别依据该端口的根路径开销RPC对端BID对端PID和本端PID

  • 根端口:接收最优BPDU,只可能在非根桥(非根交换机)上出现

3、每个链路选举一个指定端口(DP):根桥上的所有端口为指定端口,非根交换机在选举指定端口时分别依据根路径开销BIDPID (指定端口:发送最好的BPDU)

  • DP:发送最优BPDU

4、阻塞非根、非指定端口(ap):未被选举为根端口或指定端口的端口为预备端口,将会被阻塞

4、STP的接口状态

禁用(Disable):该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down

阻塞(Blocking):该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习

被阻塞的接口如果一定时间内收不到BPDU,则会自动切换到listening状态(自己变老大,转换成DP,切换到listening状态)

侦听(Listening):当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习

学习(Learning):当接口处于该状态时,会收发BPDU,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习。增加Learning状态是为了防止临时环路。

转发(Forwarding):处于该状态的接口可以收发业务数据帧,也会进行BPDU处理。接口的角色需是根接口或指定接口才能进入转发状态

  • 业务数据帧:ARP、ICMP

  • STP的接口状态迁移

  • 阻塞状态到转发:共经过30秒 侦听状态15s,学习状态15s(在学习MAC地址)

生成树协议STP_第9张图片

5、拓扑变化

根桥故障恢复过程

生成树协议STP_第10张图片
  1. 在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。

  1. 如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文。

  1. 如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省: 20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥。

端口状态:SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态(15s),最终进入到Forwarding状态(15s),进行用户流量的转发。

收敛时间:根桥故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。

直连链路故障恢复过程

  1. 当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。

  1. 当网络稳定时,交换机SWB检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。

  • SW2检测到直连链路物理故障后,会将预备端口转换为根端口。

端口状态

备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。

收敛时间:直连链路故障,备用端口会经过30s后恢复转发状态。

生成树协议STP_第11张图片

非直连链路故障

非直连链路故障后,SW3的备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间。

生成树协议STP_第12张图片

6、拓扑改变导致MAC地址表错误

在交换网络中,交换机依赖MAC地址表转发数据帧。缺省情况下,MAC地址表项的老化时间是300秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时MAC地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新MAC地址表项。

本例中,SW2中的MAC地址表项定义了通过端口GigabitEthernet 0/0/3可以到达主机A,通过端口GigabitEthernet 0/0/3可以到达主机B。由于SW3的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为MAC地址表项老化时间是300秒,主机A发往主机B的帧到达SW2后,SW3会继续通过端口GigabitEthernet 0/0/3转发该数据帧。

生成树协议STP_第13张图片
生成树协议STP_第14张图片

7、STP的基础配置

[Huawei] stp mode { stp | rstp | mstp }  //配置生成树工作模式
交换机支持STP、RSTP和MSTP三种生成树工作模式,默认情况工作在MSTP模式。
[Huawei] stp root primary   //(可选)配置当前设备为根桥
缺省情况下,交换机不作为任何生成树的根桥。
配置后该设备优先级数值自动为0,并且不能更改设备优先级。
[Huawei] stp root secondary  //(可选)备份根桥
配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。
配置后该设备优先级数值为4096,并且不能更改设备优先级。
[Huawei] stp priority priority   //(可选)配置交换机的STP优先级
缺省情况下,交换机的优先级取值是32768。
[Huawei] stp pathcost-standard { dot1d-1998 | dot1t | legacy }
//(可选)配置接口路径开销
配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。
[Huawei-GigabitEthernet0/0/1] stp cost cost   //设置当前接口的路径开销值
[Huawei-intf] stp priority priority  //(可选)配置接口优先级
缺省情况下,交换机接口的优先级取值是128。
[Huawei] stp enable    disable:关闭 //启用STP/RSTP/MSTP
使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。
display stp brief   //查看STP接口状态摘要

行为 阻塞 侦听 学习 转发 (接口状态)

发送BPDU 0 1 1 1

侦听BPDU 1 1 1 1

接收业务数据帧,MAC地址学习0 0 1 1

转发业务数据帧 0 0 0 1

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