技术背景
- 二层链路没有冗余——网络存在单点 / 单线路故障
- 网络的冗余性增强——出现二层环路
- 环路带来的问题:广播风暴;多帧复制;MAC表紊乱
简介
- 生成树协议 (STP) 是在网桥和交换机上运行的第二层协议。
- STP 的规范是 IEEE 802.1D。
- STP 的主要目的是确保冗余的网络拓扑结构中出现环路。
- 为了提供此所需的路径冗余以及避免出现环路情况,STP 定义了一个跨越扩展网络中所有交换机的树。
- STP 强制某些冗余数据路径处于备用(阻塞)状态,而使其他路径处于转发状态。
- 如果处于转发状态的链路不可用,则 STP 会通过激活相应的备用路径来重新配置网络及重新路由数据路径。
STP的操作
任务
- 每个交换网络选举一个根桥RB(Root Bridge)
- 每个非根桥上选举一个根端口RP(Root Port)
- 每个段选举一个指定端口DP(Designated Port)
- 阻塞非指定端口NDP
BPDU
BPDU Bridge Protocol Data Unit 网桥协议数据单元
所有交换机都将交换用于根交换机选择和网络后续配置的信息。网桥协议数据单元 (BPDU) 传播此信息。每台交换机都会将它发送给相邻交换机的 BPDU 中的参数与它从相邻交换机接收的 BPDU 中的参数进行比较。
字节 | 字段 | 描述 |
---|---|---|
2 | 协议 | 代表上层协议(BPDU),该值总为0 |
1 | 版本 | (802.1D的总为0) |
1 | TYPE | “配置BPDU”为0、“TCN BPDU”为80 |
1 | 标志 | LSB最低有效位表示TC标志;MSB最高有效位表示TCA标志 |
8 | 根桥ID | 根网桥的桥ID |
4 | 路径开销 | 到达根桥的STP cost |
8 | 网桥ID | BPDU发送桥的ID(桥优先级+桥MAC地址) |
2 | 端口ID | BPDU发送网桥的端口ID(优先级+端口号) |
2 | 消息寿命 Message age |
从根网桥发出BPDU之后的秒数,每经过一个网桥都减1,所以它本质上是到达根桥的跳数。 |
2 | 最大寿命 Max age |
当一段时间未收到任何BPDU,生存期到达MAX age时,网桥认为该端口连接的链路发生故障。默认20S |
2 | Hello时间 | 根网桥连续发送的BPDU之间的时间间隔。默认2S |
2 | 转发延迟 | 在监听和学习状态所停留的时间间隔。默认15S |
STP接口Cost与接口带宽的对应关系
路径开销是接口cost累加,而接口cost是基于接口带宽的
Link Speed | Cost |
---|---|
10 Gb/s | 2 |
1 Gb/s | 4 |
100 Mb/s | 19 |
10 Mb/s | 100 |
非根桥某个接口到RB的路径开销等于该接口的Cost加上这个接口收到的BPDU中包含的Path Cost值。
1 每个交换网络选举一个根桥RB
使用STP,关键是为在选择成为在网络的重要的根网桥的网络的所有交换机。网络中的所有其他决策(例如,要阻塞哪个端口以及要使哪个端口处于转发模式)都是从此根网桥的角度做出的。
- Bridge Identifier,交换机的STP标识符;
- 拥有最小BID的交换机成为根桥。
2 每个非根桥上选举一个根端口RP
比较顺序:
- 根桥ID
- 到根桥的路径开销
- 网桥ID
- 端口ID
Port ID
- Port Identifier,接口标识符,共有2个字节。
- Port ID (2字节)= 接口优先级(1字节)+接口编号(1字节)。
- 缺省情况下接口优先级为128,范围是0-255。
3 每个段选举一个指定端口DP
比较顺序(均比小):
- 到根桥的路径开销
- 网桥ID
- 端口ID
4 阻塞非指定端口NDP
STP的端口状态
端口状态 | 端口能力 |
---|---|
Disabled | 不收发任何报文 |
Blocking (loss of BPDU detected) (max age = 20 sec) |
不接收或者转发数据,接收但不发送BPDU,不进行地址学习 |
Listening (forward delay = 15 sec) |
不接收或者转发数据,接收并发送BPDU,不进行地址学习 |
Learning (forward delay = 15 sec) |
不接收或者转发数据,接收并发送BPDU,开始进行地址学习 |
Forwarding | 接收或者转发数据,接收并发送BPDU,进行地址学习 |