网络笔记_STP生成树协议

技术背景

为了提高网络可靠性,交换网络中通常会使用冗余链路。然而,冗余链路会给交换网络带来环路风险,并导致 广播风暴 以及 MAC地址表不稳定 等问题,进而会影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。
 
 
 

二层网络设计需求和问题

  • 为了提高可靠性,交换机之间会通过 多条链路相连,从而 避免单点故障
  • 但同时会带来一些灾难性的 环路问题。
 
所有厂商设备默认开启STP服务
关闭STP命令:stp disable
开启STP命令:stp enable
 
 

广播风暴

  • 环路会引起广播风暴
  • 网络中的主机会收到重复数据帧
 
 
 

MAC地址表震荡

由于产生环路,MAC地址表会不断从其他接口接收到,从而进行刷新MAC地址表,进而造成MAC地址表震荡

 
 
 
 

STP:Spanning Tree Protocol,生成树协议,两大功能:

 
功能
备注
消除环路
通过阻断冗余链路来消除网络中可能存在的环路
链路备份
当活动路径发生故障时,激活备份链路,及时回复网络连通性
 

STP操作过程

通过构造一棵树来消除交换网络中的环路
 
  1. 选举一台根桥(ROOT)
  2. 选举一个根端口(非根桥)
  3. 选举指定端口
  4. 阻塞剩余端口
 
 
BPDU(Bridge Protocol Data Unit):桥协议数据单元
使用组播:01-80-C2-00-00-00(是固定的)
 
PID:协议标识(是固定的:STP)
PVI:协议版本/模式(华为默认MSTP,可改为STP(命令为 stp mode stp))
BPDU Type:数据包类型(下面有详细介绍)
  • 一般情况下是配置类型(configuration类型)
  • 拓扑发生改变时,会发送TCN类型(Topology Change Notification)(拓扑变更通知)
BPDU flags:数据包标志位
  • STP包含两项(拓扑变更确认、拓扑变更通知)
  • ROOT Identifier:根桥ID
  • Bridge Identifier:桥ID
  • Port identifier:端口ID
  • Message Age:年龄(根桥设备发送的年龄为0)(配置BPDU报文没经过一台交换机,Message Age都会+1)(如Message Age大于MAX Age,非根桥会丢弃该配置BPDU)
  • MAX Age:老化时间20s(被选举为阻塞端口,保持20s,如没收到BPDU数据包,则进入监听状态)
  • Hello Time:发送周期2s(固定2s)
  • Forward Delay:状态延迟15s(从监听--> 学习 + 学习-->转发 两个状态间分别需要15s的延迟时间)
 

BPDU字段详解

 
由以上的ROOT IDentifier、Root Path Cost、Bridge Identifier、Port Identifier四个字段来选举。
 
 
 

桥ID

用于在STP中唯一标识一个交换机,由两部分组成:
  • 桥优先级:高16位(范围0~65535,缺省32768)
  • 桥MAC地址:低48位
 
 
 
 

端口ID

用于在STP中唯一标识一个交换机上的端口,由两部分组成
  • 端口优先级:高8位(范围0~255,缺省128)
  • 端口编号:低8位
 
 

路径开销

Path COST
  • 路径开销用于 衡量桥与桥之间路径的优劣,越低越好;
  • STP中每条链路都具有开销值
  • 华为支持三个链路开销标准,默认802.1t标准(调整标准命令 stp pathcost-standard dot1d-1998 / dot1t / legacy )(思科用的是802.1d-1998标准)
 
根路径开销
  • 确定 到达根桥的最短路径,并生成无环树形网络;
  • 到根桥的路径上所有路径开销之和。
 

BPDU类型

  1. 配置BPDU(Configuration)
  • 选举根交换机以及确定每个交换机端口的角色和状态;
  • 在初始化过程中,每个桥都主动发送配置BPDU;
  • 在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU;
  • 发送周期为Hello Time(默认2秒);
  • 老化时间为MAX Age(20秒)。
  1. 拓扑变更通告BPDU-TCN BPDU
  • 下游交换机感知到拓扑发生变化时,向上游发送的拓扑变化通知。
 
 
 

STP选举过程

根桥选举

  • BID(桥ID) 最小的为根桥(先优先级,再MAC地址)
  • 每台交换器启动后,都认为自己是根桥
 

 

根端口选举

根端口:非根桥交换机到根桥交换机开销最小的端口;

非根交换机在选举根端口时分别依据该端口的根路径开销、 发送 端BID、发送端PID和本 端PID。(BID:桥ID,PID:端口ID)
 
 
 

指定端口选举

  • 非根交换机在选举指定端口时分别依据根路径开销、BID、PID。(根桥上所有端口均为指定端口,但自环除外)

  • 未被选举为根端口或指定端口的端口为预备端口,将被阻塞。
 
 
 
STP选举过程(均为越小越优)
  1. 选举根桥
  • 桥ID(优先级+MAC地址)
  1. 选举根端口(RP)
  • 路径开销值-->桥ID(优先级+MAC地址)-->发送端PID(端口ID)-->本端PID
  1. 选举指定端口(DP)
  • 路径开销-->桥ID-->PID(端口ID)
  1. 阻塞端口
 
 
 
STP端口状态
 
STP端口状态
接收BPDU
转发BPDU
学习MAC
转发数据
过渡状态
稳定状态
Disabled阻塞
×
×
×
×
×
Blocking
×
×
×
×
Listening 监听
×
×
×
Learning 学习
×
×
Forwarding 转发
×
Disable:端口未开
 
 
STP计时器
 
计时器
备注
Hello
2s,根桥发送BPDU的间隔
Forward Delay
15s,监听和学习的持续时间
Max Age
20s,保持阻塞的最大时间(没有收到BPDU)
Forward Delay:转发延迟(监听->学习 + 学习->转发分别15s)
MAX Age:最大寿命。(被选举为阻塞端口,保持20s,如果没收到BPDU信息,则进入监听状态)
 
 
STP端口转换
  1. 端口初始化或开启。
  2. 端口被选为根端口或指定端口。
  3. 端口不再是根端口或指定端口。
  4. Forward Delay计时器超时。
  5. 端口禁用或链路失效。
 

 

STP拓扑变化

 
根桥故障
从出现问题到开始通信时间大致在50s:
20s的老化时间+15s监听-->学习+ 15s 学习-->转发
  • 非根桥会在BPDU老化后开始根桥的重新选举。
 
 
直连链路故障
  • SWB检测到直连链路物理故障后,会将预备端口转换为根端口。
  • SWB的预备端口会在30秒后恢复到转发状态。
              15s监听-->学习+ 15s 学习-->转发
 
 
 
 
非直连链路故障
非直连链路故障后,SWC的预备端口恢复到转发状态大约需要50s
前提:SWB-SWA链路故障,SWC设备左侧端口为阻塞端口
工作过程:
  • 由于SWB-SWA链路出现故障,SWB设备收不到SWA设备BPDU信息,另外由于SWC左侧端口为阻塞端口,也收不到SWC设备BPDU信息。则此时,SWB设备会认为自己就是根桥;
  • 由于SWB认为自己是根桥,所以SWB也会向SWC发送BPDU信息。但SWC设备此时能收到SWA设备与SWB设备的BPDU信息,经过比对,SWA为根桥,那么就不会处理SWB的BPDU信息;
  • 由于SWC设备不会处理来自于SWB设备的BPDU信息,经过20s的老化时间后,SWC设备会将左侧端口变为指定端口,向SWB发送信息。
  • 由上一步得知:20s老化+15s监听->学习 + 15s学习->转发 == 共50s时间链路恢复正常
 
 
 
 
 
拓扑改变导致MAC地址表错误
 
  • MAC地址表项的默认老化时间是300秒。在这段时间内,SWB无法将数据从GO/0/2端口转发给主机B。
  • 检测到拓扑改变的交换机通过根端口向根桥发送TCN,上游交换机收到TCN后回应TCA,然后下游交换机停止发送TCN,再通过根端口发送TCN直到根桥收到,根桥通过指定端口发送TC通知所有下游交换机 把MAC地址表记录老化时间从300秒变为15秒
 
 
 
STP配置
 
命令
配置
stp mode smtp / stp / rstp
配置STP模式,默认MSTP
stp priority 4096
配置BID优先级,范围:0~61440,步长4096,默认32768
stp root primary / secondary
自动修改优先级,指定主 / 备 根桥
stp pathcost-standard dot1d-1998 / dot1t / legacy
配置路径开销值的标准,默认802.1t标准
开销标准
legacy:cost= 1~ 200000,华为私有
802.1d标准:cost= 1 ~ 65535
802.1t标准:cost= 1~200000000,默认
stp cost 10修改STP开销值
stp port priority 144
修改PID优先级,步长16,默认128
dis play stp [brief]
显示STP配置信息及参数
dis stp int g0/0/1
查看g0/0/1端口的stp信息
可查看设备的BID,根桥,最短的开销值等
 
 
 
 
 
STP配置实验
 
拓扑图:
 
要求
  1. 通过配置STP命令,使SW1为主根桥,SW2为备根桥;
  2. 将SW2与SW3链路上的SW2设备的e0/0/2与SW3设备的g0/0/1角色互换;
  3. 将SW3与SW4设备链路上SW4设备的g0/0/3与g0/0/4角色互换。
 
 
 
 
分析
由于eNSP中的实验,每次放进来交换机的MAC地址都会不同,所以仅以此次实验为例进行介绍。
另由于刚开始学习STP,所以从分析根桥(ROOT)、根端口(RP)、指定端口(DP)、预备端口(AP)开始。
  • 由于华为设备默认运行的是MSTP,那么就需要先将模式改为STP
stp mode stp
  • 由于华为默认采用的是dot1t开销标准,此实验为便于方便计算,采用dot1d-1998标准。
stp pathcost-standard dot1d-1998
 
问题1:如需设置主/备根桥,那么修改设备的BID(桥ID)即可。桥ID由优先级+MAC地址组成,优先级可设置为0~61440。将主根桥优先级设置为0,备根桥优先级设置为4096即可。
 
问题2:经分析,SW2设备E0/0/2端口角色为预备端口,SW3设备的G0/0/1端口为指定端口。如需将两端口角色互换,就需要将到达两台设备的链路开销进行调整。由于根桥(定为SW1)到SW2设备的链路为E口链路(即开销值为19),而根桥到SW3设备的链路为G口链路(即开销值为4),那么需要将SW3设备的G0/0/2端口开销值调整为大于19即可(或者也可以将SW2设备的E0/0/1端口开销值调整为小于3)
 
问题3:经分析,SW4设备的G0/0/3端口角色为根端口(RP),G0/0/4端口角色为预备端口(AP)。如需互换,则需将SW3设备的G0/0/4端口PID值调到小于128即可。(因从根桥到SW3设备的开销值是固定的,SW3设备的桥ID:BID也是固定的,故只能修改端口ID)(端口ID范围0~240,步长16)
 
 
配置命令
(分析阶段)查看各交换机的优先级与MAC地址,分别标注出四台设备的BID(桥ID);
dis stp
 
在eNSP中进行分析判断不同端口的角色并标注;
 
分别在四台设备上进行测试,确认自己的判断是否正确;
dis stp br

 
 
 
  • 完成题目要求1
SW1:
stp priority 0

 

SW2:
stp priority 4096

 

 
  • 完成题目要求2
 
SW3:
int g0/0/2
stp cost 20

 

 
  • 完成题目要求3
SW3:
int g0/0/4
stp port priority 112

 

 
 
  • 测试四台设备的端口状态
 
 
 
 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxaafwqrtjmuio12850

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值