目录
1、STP
1.概述
背景:
在保证网络冗余性的情况下,消除二层环路。当网络中部署生成树协议时,交换机之间便会开始交互相关协议报文,并经过一系列计算得到一个无环的网络拓扑;当网络存在环路时,会将网络中的一个或多个接口进行阻塞(Block),从而打破二层环路。
生成树协议应用于园区网络的二层网络中,进行链路备份和消除环路。
二层环路带来的问题:
-
广播风暴:广播帧泛洪
-
MAC地址表漂移
在三层IP中有TTL解决环路问题,TTL默认值为64,每经过一个路由器减1。
核心思想:
比较BPDU,打开好的端口,阻塞差的端口,打破环路,建立无环的逻辑拓扑。
2.基本概念
-
桥ID(Bridge ID,BID)=网桥优先级(2字节)+网桥MAC(6字节):
-
缺省优先级32768(0~65535),Cisco:4096的倍数,HUAWEI:1024的倍数,越小越优先。
-
每一台交换机都有一个唯一的BID。
-
BID最小的设备会被选举为根桥(先比较优先级再比较MAC地址)。
-
-
端口ID(Port ID,PID)=端口优先级+端口ID:
-
优先级范围0~240,16的倍数,缺省情况下为128。
-
用来标识每个接口,选举指定接口(DR)。
-
-
开销(Cost):
-
接口的Cost用于计算到达根的开销。
-
接口的缺省Cost除了与其速率、工作模式,还与交换机使用的STP Cost计算方法有关。
-
接口带宽越大,Cost值越小
-
华为使用IEEE 802.1t标准,思科使用IEEE 802.1d-1998标准。
-
-
根路径开销(Root Path Cost,RPC):
-
一台设备的某个接口到根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost值累加。
-
3.端口角色及其作用
-
根桥(ROOT):
-
每隔Hello Time(2s)周期性发送配置BPDU,用于设备检查链路是否出现故障
-
根桥收到TCN后,在半分钟内按照每隔2秒周期性地发送TC报文(Forward Delay+Max Age)
-
-
根端口(RP):
-
收到根桥发来的配置BPDU报文
-
当拓扑发生变化时,向根桥发送TCN
-
-
指定端口(DP):
-
向下游发送配置BPDU,每经过一台交换机,配置BPDU将会发生变化(BID、PID)(再生式的泛洪)
-
接受来自下游桥的拓扑变化信息
-
-
非指定端口:
-
接受对端配置BPDU信息
-
不转发用户流量
-
4.报文结构
1、STP使用的MAC地址
-
Source MAC:给二层协议使用的MAC地址
-
Destination MAC:以01-80-C2开头的二层组播MAC(专门为二层协议提供的组播MAC)
-
根据三层的组播IP产生的组播MAC地址:以01-00-5E开头
2、BPDU(Bridge protocol data unit)网桥协议数据单元:
分类:
-
配置BPDU(0x00):
-
端口使用STP,则配置BPDU就会按照HelloTime定时器规定的时间间隔从指定端口发出
-
根端口收到配置BPDU时,如果优先级比自己的配置BPDU高,就会根据收到的配置BPDU中携带的信息更新自己的BPDU,并从指定接口向下游发送,否则丢弃该配置BPDU
-
指定端口收到比自己差的配置BPDU时,会立刻向下游设备发送自己的BPDU
-
-
TCN BPDU(0x80):当交换机的某个端口出现故障,会通过根端口向根桥发送TCN BPDU告知根桥,根桥收到后,会将拓扑变更发送至网络中的所有交换机,所有的交换机在15秒内刷新MAC地址表
作用:维护整个生成树的生命周期
-
通过Root ID、RPC、Bridge ID、Port ID的一个或者多个参数选举出最好的BPDU来生成树
-
通过定时器来保证生成树的稳定性
-
当拓扑发生改变,通过发送拓扑变更消息(Flag位)告知拓扑的变化
5.STP的端口状态
STP 端口状态迁移机制 :
① :端口初始化或者使能,进入阻塞状态
② :端口被选为根端口或者指定端口,进入侦听状态
③ :端口的临时状态停留时间(一个Forward Delay时间)到,进入下一状态(学习状态或者转发状态),端口被选为根端口或指定端口
④ :端口不再是根端口、指定端口或者指定状态,进入阻塞状态
⑤ :端口被禁用或者链路失效
对端口状态和端口角色的思考
Q:STP使能后端口进入Blocking状态,对BPDU只收不发,如何进行全网BPDU交互的?
A:端口使能STP后进入Blocking后,默认经过20秒后进入Listening,默认经过15秒后进入Learning,此时这个状态会进行全网BPDU的交互,学习到所有SW的BPDU信息,从而选举RB、RP、DP、NDP