深入解析生成树协议
目录
STP概述
生成树的分类
- STP——最基本的生成树,收敛速度较慢
- RSTP——改良后的快速生成树,相比普通生成树收敛速度有所提升
- MSTP——在快速生成树的基础上可以支持多Vlan
启用STP的原因:二层网络冗余会使网络产生环路,而环路会使数据在成环设备上无止境的转发下去,最终导致网络瘫痪,而生成树协议可以有效地识别并阻止二层环路。
在未使用STP的情况,冗余网络可能出现以下情况
- 广播风暴
- 重复帧传输
- MAC地址漂移
STP基本思想
实质:比较BPDU,在交换机之间传递BPDU,比较其中参数,根据STP算法打开好的端口,阻塞坏的端口,从而打破物理环路,建立一个无循环的逻辑拓扑
BPDU分为:配置BPDU和TCN BPDU
基本思想:在网桥之间传送配置BPDU,网桥收到配置信息并做以下工作
- 从所有网络中选出一个作为根桥
- 计算网桥到根桥的最短路径
- 网桥选择根端口
STP技术可以在支持物理路径冗余的同时消除网络环路造成的影响,STP会将特定的某个端口强制变成备用状态,使其无法监听转发或者进行数据帧泛洪
端口角色和作用
根交换机
按照hellotime,周期发送配置,收到下游桥发来的TCN报文,在最大老化时间内按照hellotime周期性发送flag标志TC位置的配置信息
根端口
- 接受根桥的配置信息
- 向根桥发送拓扑变化信息
指定端口
- 向下游发送配置信息
- 接受下游桥的拓扑变化信息
非根非指定端口
- 接受对端BPDU信息
- 不转发用户流量
STP工作原理
- 第一步先要在网络中根据BID来选出网络中的根桥,根桥则是网络中的参考点,根桥上的所有端口都可以进行流量转发
根桥的选举:根据BID进行选举,拥有最低BID的交换机被选为根桥,若桥优先级相同则比较MAC地址,带有最小的MAC地址交换机成为根桥。
BID=桥优先级+MAC地址
最初每台交换机都认为自己是根桥,并向邻居发送BPDU,其中包含了自己的BID,于此同时也会受到邻居BID,每收到一个BPDU就会和自身BID进行比较,如果收到优于自身的BID,交换机就会意识到自己并不是根桥,否则将会继续认为自己是根桥。
- 第二步则要在非根桥交换机上选出根端口,每台非根桥路由器都会选举出一个端口作为根端口,根端口是到根桥路径开销最小的端口
根端口的选举:在每台非根桥交换机上,去往根桥路径最优的端口叫做根端口。
去往根桥带有最短路径开销的端口叫做根端口
如果两个端口开销相同,则继续比较发送者端口ID
- 第三步要在每一条链路上选出指定端口,指定端口是链路链路交换机到达根桥路径开销最小的端口
如何选出指定端口
最低BID
到达根桥最低路径开销
最低发送者BID
最低发送者端口ID
STP端口状态
端口角色 | 描述 |
---|---|
根端口 | 此端口在非根桥交换机上,是通往根桥的最优路径,通常一台交换机上只有一个根端口 |
指定端口 | 此类端口多出现于根桥上,根桥上所有端口都是指定端口,而非根桥交换机上只有一个指定端口,每条链路上只有一个指定端口 |
非指定端口 | 非指定端口是处于一个阻塞的状态的交换机端口,并不会去转发数据帧 |
禁用端口 | 禁用端口指是手动关闭的交换机端口 |
BPDU
- 配置BPDU(config BPDU):用来计算STP
- TCN BPDU:用来通告网络拓扑的变化
每两秒交换机会向每个端口发送BPDU,其源地址为端口MAC地址,目的地址为STP的组播地址:01-80-c2-00-00-00
config BPDU报文
STP五种状态
- Blocking(阻塞状态):此状态可以保证无环路产生,该端口既无法接受数据也无法转发数据,但是可以收到BPDU
- Listening(侦听状态):通过接受BPDU,如果STP判断端口可能会变成根端口或者指定端口则将blocking变为Listening
- Learning(学习状态):经过一段时间后,端口会过度到学习状态,这一状态仍然可以接受和发送BPDU,并且学习MAC地址
- Forwarding(转发状态):可以正常发送接收数据以及BPDU
- Disabled(禁用状态):手动关闭端口,处于禁用状态,不参与生成树操作,也不转发数据帧