序
大家好 , 今天是数通面试宝典 , 第二篇 STP 不知道一篇文章能否完整的表述好这个东西 尽力而为 其实面试中是很少遇到细究STP的 终其原因是大家在STP实际环境中不care原理 大多数情况下开启即可 那么开始吧 (真正遇到问题了会很头疼)
STP介绍
第一篇中有提到二层环路是一种十分可怕的场景 , 报文会再交换机之间无休止的转发 永远无法停止 会瞬间消耗掉交换机的内存以及cpu , STP(生成树协议) 提供了两大功能:
消除环路 以及 链路备份
STP的报文十分复杂 , 也不需要太过深究 , 最有可能面试遇到的问题无非是STP的作用 , 以及STP端口角色 或者选举/阻塞的过程 , 还有STP的排错/现象问题 (需要层层了解才能hold这类问题)
STP作用
那么先来和面试官解释一下作用吧
通过生产一个树形的网络结构 , 来消除交换机网络(二层网络)中的环路 , 通过BPDU 桥协议数据单元来协商更新 , 其中BPDU 包含2种类型
第一种 : 配置BPDU (Configuration) 用来计算和维护STP拓扑 --可以简单的理解为OSPF中的1/2类LSA
每个BPDU包含了发送者的ID、路径成本、发送者认为的根桥ID等信息。通过发送和接收BPDU,交换机可以了解到网络的拓扑结构,选择根桥,计算最短路径,以及确定哪些端口需要阻塞
第二种 : 拓扑变化通知BPDU (TCN) 网络拓扑发生变化时 , 用来通知其他设备的
面试的话理解到TCN这个应该是足够了 (后面再针对TC做详细说明)
BID / PID
再讲清楚STP端口选举过程之前 , 你必须明白这个优先级的概念 他们都是由2部分组成的
BID : Bridge ID 在STP网络中标示唯一一台交换机 ,
BID的组成 由设备优先级(默认32768)+设备的MAC 共同组成 , 在没有设置的情况下 BID的前16位都为32768
所以默认情况比较BID的时候更多会去比较几个设备的MAC地址 ,
特别注意修改步长为4096 , 遇到一些题目说BID优先级34816这些就是错误的.
PID : Port ID 在STP网络中唯一标识一个交换机上的端口
(注意PID和BID的区别 一个是交换机一个是交换机上的端口 重点理解 下面详细解释~)
和上面一样 组成也是由 端口优先级(默认128)+端口编号(如g0/0/1)组成 , 修改步长16 .
重点!!~~~
我们在学习STP内容的时候会经常看到优先级的概念 , 比如选举根桥会比较优先级(BID) , 通过我上面的说明 你们也大概知道了 优先级=BID/PID 但这里还是会有个混淆 到底是BID还是PID??
我们通常再说优先级的时候都是指BID (BID的优先级很重要 , 因为MAC地址不可控)
那么PID的场景是什么呢?
PID也是由优先级和端口号组成的,用于在同一交换机的多个端口之间进行比较 , 当选举根端口或指定端口时,会比较PID,优先级最低(数值最小)的端口会被选为根端口或指定端口。如果优先级相同,则比较端口号(g0/0/1),端口号最小的端口会被选为根端口或指定端口。
总结 : BID是不同交换机之间做比较的优先级 , PID是同一个交换机下的不同端口之间做比较的优先级
术语解释
解释一下STP中的几个术语 : 根桥 , 根端口 , 指定端口
根桥(Root Bridge):
在STP协议中,所有的交换机通过发送和接收BPDU数据包,比较优先级和MAC地址,选出一个根桥。根桥是生成树的根节点,所有的网络流量都会通过根桥进行转发。根桥的所有端口都处于转发状态( 根桥所有端口都是指定端口 )。 --> 根桥其实就是一台物理设备 , 你把他当做STP的老大
根端口(Root Port):
除了根桥以外,每个交换机都会有一个到达根桥的最短路径,这个路径上的端口就是根端口。根端口的作用是提供到达根桥的路径,所有到达根桥的数据都会通过根端口进行转发。每个交换机只有一个根端口。 --> 非根桥的交换机上 有且 只能有一个根端口
这里需要详细说明一下 "最短路径" , 如何理解呢? 这里其实是受端口开销影响的 , 类比OSPF 有的口1GE 有的口100GE , 是不是100GE的口更优先一些 , 这里也是这个道理 , "最短路径"是根据路径成本(Path Cost)来确定的 , 这个成本通常与链路的带宽成反比。也就是说,带宽越高,路径成本越低。
所以在路径成本一致的情况下 , 这个根端口就是 非根交换机和根桥交换机的互联口
指定端口(Designated Port):
在每个网络段中,除了根端口以外,还需要选出一个指定端口。指定端口是从该网络段到达根桥的最短路径。指定端口的作用是提供从非根桥交换机到达其他交换机的路径,所有从非根桥交换机到达其他交换机的数据都会通过指定端口进行转发。每个网络段只有一个指定端口。
个人感觉这个指定端口较难理解 这其中结合了网段的概念( 下面有例子说明 ) , 比如交换机有一些端口链接到192.168.1/24 这个网段 , 那么只有一个端口(路径成本最低的那个 没错 就是上面解释的)会被选为指定端口,其他的端口会被阻塞,以防止生成环路
简述一下STP建立的过程
我简单分为6个步骤 这里还是建议 能英文就尽量说英文 或者英文的简写 , 有必要的话可以自己模拟场景面试背一下
1. 初始化:当设备启动时,所有的端口都将进入禁止状态,即端口被关闭。然后,设备会开始发送BPDU(Bridge Protocol Data Unit)数据包。
2. 选举Root Bridge(根桥):所有的设备都会通过BPDU比较(BID)自身和其他设备的优先级和MAC地址,选出一个Root Bridge。优先级最低(数值最小)的设备会成为Root Bridge,如果优先级相同,则MAC地址最小的设备会成为Root Bridge。 -->这里可以翻上去重新理解BID
3. 选举Root Port(根端口):除了Root Bridge之外,其他设备都需要选出一个Root Port,这个端口是到达Root Bridge交换机的最短路径。这个过程主要基于路径成本,路径成本最小的端口会被选为Root Port。
4. 选举Designated Port(指定端口):在每个网络段中,除了Root Port外,还需要选出一个Designated Port。这个端口是从该网络段到达Root Bridge的最短路径。同样,这个过程也是基于路径成本,路径成本最小的端口会被选为Designated Port。
5. 端口状态转换:在选举过程结束后,所有的端口都会根据自己的角色(Root Port、Designated Port或非指定端口)转换到不同的状态。Root Port和Designated Port会转换到转发状态,而非指定端口会保持在阻塞状态。
6. STP收敛:当网络中发生变化时(例如新设备加入、旧设备离开、链路故障等),STP会重新进行上述步骤,直到网络稳定,这个过程称为STP收敛。 --> 一道面试题 收敛过程
选举案例
来一道最简单的 STP建立过程
先来分析 图里的内容不多 PID都缺少了优先级 , 那我们按照默认来看 .
SW1 的BID = 4096 + 0001
SW2 的BID = 4096 + 0002
我们根据BID对比 可以确定SW1是根桥 那么 SW1的GE0/0/1 和 GE0/0/2 就是转发端口
SW2为非根设备 , 所以需要选举一个根端口 这时就要去比较PID了
SW2的GE0/0/1 PID优于 0/0/2 因为端口数更小
SW2 0/0/2 啥也不是 那就是阻塞端口
好 我们现在再来看这个图 重新去理解一下指定端口 , 指定端口是基于链路/网段去选举的
每一个网段都会有一个指定端口 , 每个非根交换机上都有一个根端口 , 根桥交换机上所有端口都是指定端口 (没有自环的情况 感兴趣可以搜索相关内容)
STP面试题
好 , 感谢你能一直看到这里 这里我再给一些常见的STP面试 仅供参考
- 什么是生成树协议(STP)?它的基本工作原理是什么?
- 请解释生成树协议中的根桥、根端口和指定端口的概念。
- 如何计算生成树协议中的路径成本?路径成本的作用是什么?
- 在一个生成树网络中,如果根桥发生故障,网络会如何恢复?
- 什么是RSTP(快速生成树协议)?它与普通的STP有何不同? --第三章会提到RSTP和MSTP相关内容
- 在一个生成树网络中,如果添加了一个新的交换机,网络会如何调整?
- 什么是BPDU(桥接协议数据单元)?它在STP中的作用是什么?
- 在生成树协议中,如何选择根桥?