- 企业网三层架构->冗余->线路冗余->二层桥接环路
- 导致原因
局域网中物理环路通常有两种产生的原因:一种是基于可靠性的考虑,为交换机之间提供冗余连接另一种是由于错误的网络设置导致环路的产生。两种情况会导致广播风暴和MAC地址学习错误。
STP生成树协议就是用于消除环路中的一种。
STP在IEEE制定的IEEE802.1D标准中定义,用于在局域网中消除数据链路层环路,STP可以通过计算,动态的阻断冗余链路,而当活动链路发生故障时,STP又可以激活冗余链路,恢复网络的连通,避免网络中断。- 广播风暴
- MAC地址表震荡
- 同一数据帧的重复拷贝
-
STP生成树
- 在一个二层交换网络中,生成一棵树型结构,逻辑的阻塞部分接口,使得从根到所有的节点仅存在唯一的路径,当最佳路径故障时,自动打开部分阻塞端口,来实现备份的作用。
- 运行STP的设备依据一定的准则选举一个树根节点作为网络中的根桥,其他节点为非树根节点
- 每一个非树根节点,会选择最优的路径和根桥相连,非树根节点上位于最优路径的端口,为该节点的根端口
- 基本概念
- 两种特殊的网桥:
- 根桥:整个生成树的根节点,由所有网桥中优先级最高的桥担任
- 指定桥:负责一个物理段上数据转发任务的桥,有这个物理段上优先级最高的桥担任
- 根端口、指定端口和候补端口
- 根端口(Root Port)指距离根桥最近的端口。根桥没有根端口,每一个非根桥有且仅有一个根端口
- 指定端口(Designate Port)属于指定桥上的端口。根桥是所有网桥中中优先级最高的,他在其所连接的所有物理段上都是指定桥,所有通常情况才根桥的所有端口都是指定端口。
- 候补端口(Alternate Port)既不是根端口也不是指定端口,他是用来为根端口或指定端口做备份的。从候补端口出发到达根桥的路径,是网桥到达根桥的备用路径,即最终需要阻塞的路径。
- 桥ID
STP中每一个网桥都具有一个桥ID,用于在网络中唯一标识一个桥。根桥选择的依据就是桥ID,具有由最小桥ID的网桥即为网络中的根桥。- 在进行桥ID比较时,先比较桥优先级(优先级数值小为优),再比较桥MAC地址(MAC地址小为优)
- 路径开销(Path Cost)
非根桥需要确定根端口,根端口的选择取决于端口到达根桥距离最近的端口为根端口,衡量距离远近,依据的是路径开销
默认的路径开销取决于所遵循的路径开销标准和链路的带宽
- BPDU
桥协议数据单元,用来交互协议信息,传递STP协议相关报文- BPDU分为如下两类:
- 配置BPDU:是用来进行生成树计算和维护生成树拓扑的报文(传递stp的配置信息)
- TCN BPDU:是当拓扑改变时,用来通知其他设备网络拓扑发生改变的报文(用于通告拓扑变更信息)
- BPDU分为如下两类:
- 两种特殊的网桥:
- STP计算过程
同时进行两个任务- 根桥选举
- 确定端口角色
- STP的选举机制
- 在所有交换机中选举出一台作为根网桥(Root bridge)
- 选举规则:
- Bridge-id小的优先
- Bridge-id:
桥ID,BID,用来标识交换机的身份- 格式:
- 优先级+Mac地址
- 优先级默认32768,必须是4096的倍数
- 格式:
- 选举规则:
- 每台非根网桥(交换机)选举出一个根端口(Root Port)
- 选举规则
- 1.到达根网桥开销小的优先
- 2.对端交换机BID小的优先
- 3.端口id小的优先
- 开销
cost,代表路径耗费的代价和成本,带宽越大,开销越小
- 选举规则
- 每个物理段上选举出一个指定端口(Designated port)
- 选举规则:
- 1.到达根网桥开销小的优先
- 2.本机的BID小的优先
- 3.端口id小的优先
- 选举规则:
- 剩下没有角色的端口就是阻塞端口(blocked port)
- 在所有交换机中选举出一台作为根网桥(Root bridge)
- STP初始化流程
- 交换机端口状态
- disable:禁用状态。被关闭的端口
- Blocking:阻塞状态。接收BPDU,但不发送BPDU,不学习Mac地址,不转发数据
- listening:监听状态。接收并发送BPDU,不学习MAC地址,不转发数据,持续15秒
- learning:学习状态。接收并发送BPDU,学习MAC地址,不转发数据,持续15秒
- Forwarding:转发状态。接收并发送BPDU,学习MAC地址,转发数据
- 交换机端口状态
- STP计时器(未写完)
MAC地址老化时间300s - STP采用四个步骤来解决二层环路问题:
- 1) 在交换网络中选举一个根桥(Root Bridge,简称RB)
- 2) 在每个非根桥上选举一个根端口(Root Port,简称RP)
- 3) 咋每个段中选举一个指定端口(Designated Port,简称DP)
- 4) 阻塞非指定端口(Non-Designated Port,简称NDP)
这里的桥(Bridge),其实就是指交换机,由于交换机是由早期的网桥发展而来,因此在一些场合下,我们依然沿用“网桥”或者“桥”来称呼交换机
- 关键字段及比较原则
- 运行STP的交换机之间会交互一些非常重要的协议报文,该报文称为网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU)。STP之所以能够正常工作并构建一个无环的网络,是依赖与BPDU报文的泛洪。要理解STP的工作过程,非常重要的一点就是要理解BPDU中各字段的含义,因为这些都是STP赖以工作的根本。BPDU报文包含的所有字段在后面会有所涉及,这里先关注几个重点字段(此处介绍的是BPDU中的一种关键类型:配置BPDU):
- 桥ID(Bridge Identifier)
- 在STP中,每一台交换机都有雨一个唯一的标识符,这个标识符就是桥ID,桥ID长度为8个字节,由两部分组成:2个字节的桥优先级和6个字节的桥MAC地址,其中优先级默认为32678,可以手工更改。而桥MAC地址为网桥的背板MAC(可以简单的理解为系统MAC)。交换机发送 的BPDU报文中,桥ID字段存放的就是自己的桥ID,而根桥ID字段存放的就是网络中根桥的桥ID
- 在STP中,每一台交换机都有雨一个唯一的标识符,这个标识符就是桥ID,桥ID长度为8个字节,由两部分组成:2个字节的桥优先级和6个字节的桥MAC地址,其中优先级默认为32678,可以手工更改。而桥MAC地址为网桥的背板MAC(可以简单的理解为系统MAC)。交换机发送 的BPDU报文中,桥ID字段存放的就是自己的桥ID,而根桥ID字段存放的就是网络中根桥的桥ID
- 根路径开销(Root Path Cost)
- 根路径开销是一个用于度量接口到根桥的开销的值,交换机的接口到根桥的路径开销越小则被阻塞的可能性也就越小。
- 根桥发送出来的BPDU中,根路径开销字段值都为0。当非根桥在某个接口上收到这个BPDU再进行STP计算的时候,会把该BPDU中所包含的根路径开销累加上收到该BPDU的接口的STP Cost,从而得到从该接口到达根的总路径开销。
- STP接口Cost与接口的带宽有关,接口带宽越高,则接口的STP Cost越小。
- 在上面的例子中,SW1是网络中 的根桥,因此他发送BPDU报文中Root Path Cost 字段为0,SW2在GE0/0/0收到这个BPDU后就可以进行相应的计算,他从GE0/0/0到达根桥的Root Path Cost等于自己接口的Cost加上所收到的BPDU报文中的Root Path Cost,结果就是1,随后SW2将这个BPDU转发给SW3,注意此时BPDU中的Root Path Cost被修改为1.SW3在收到这个BPDU并进行Root Path Cost计算的时候,Root Path Cost就等于自己FE0/0/0接口的Cost加上BPDU报文中的Root Path Cost,也就是11.
- 端口Id(Port ID)
- 端口ID(2字节)包含两部分:端口优先级(1字节)以及端口编号(1字节)。缺省时,优先级值为128,该值可以通过命令修改,取值范围是0-255,值越小越优。
- 端口ID(2字节)包含两部分:端口优先级(1字节)以及端口编号(1字节)。缺省时,优先级值为128,该值可以通过命令修改,取值范围是0-255,值越小越优。
- 桥ID(Bridge Identifier)
- 生成树构造一个无环路拓扑时,总是使用相同的4步来判定(下面的信息都是BPDU中的字段)
- Step1:最小的根桥ID
- Step2:最小的根路径开销
- Step3:最小的桥ID
- Step4:最小的端口ID
- STP操作
- 在交换网络中选举一个根桥
- 以上图所示的网络为例,我们在交换机上都开启了STP,初始情况下,所有的交换机都认为自己就是网络中的根桥,于是都向网络中泛洪配置BPDU,在各自发送的配置BPDU中,都声称自己就是根桥。经过PK之后,拥有最小桥ID的交换机胜出,成为这个交换网络真正的根桥。
- 根桥的选举过程:首先比较桥优先级,优先值最小的交换机胜出,如果优先级相等,则在比较桥MAC地址,也是优选最小的值。所以在上图所示的例子中,SW1胜出成为根桥。
- 根桥是STP计算得出的无环的拓扑(可以形象地理解为一棵树)的树根,STP后续的计算都是以这个树根作为参考点的。当然,在实际的项目中,我们通常是不会通过MAC地址的比较让交换机自己去选根桥的,为了网络的稳定和可控,一般会将核心交换设备配置为网络的根桥——将其优先级调为最小值,从而确保其成为根桥。
- 在每个非根桥上选举一个根端口
- 在选举出根桥后,根桥仍然持续像网络中发送配置BPDU,而非根桥将持续不断地收到根桥发送的配置BPDU。STP计算过程的第二步是在每个非根桥上选择一个根端口,根端口是每台交换机上收到最优BPDU的端口。
- 一台非根桥可能会有多个端口连接到交换网络,每个非根桥上必须选举一个根端口,而且只会选举一个根端口。当存在多个端口时,交换机在这些端口上都会收到配置BPDU,交换机会比较这些配置BPDU,然后选择比较结果最优的接口作为根端口,按照如下顺序比较:1)比较配置BPDU中的根桥ID字段,选择值小的;2)如果前者相等,则将配置BPDU中的根路径开销值读取出来,与收到该BPDU的接口Cost想加,比较相加后的值,选择值最小的;3)如果前者还相等,则比较配置BPDU中的桥ID字段;4)如果前者还相等,则比较端口ID字段。
- 例如在上图中,SW3有两个接口接入到这个交换网络中:Port1及Port2,现在SW3要在二者之间选举一个根端口。SW3会从Port1和Port2都收到配置BPDU报文(从Port1收到的是SW1直接发送过来的,从Port2收到的是根桥SW1发往SW2,然后由SW2转发过来的),在报文中都有携带“桥ID,根路径开销、桥ID、端口ID”等关键字段,那么SW2就会进行Port1及Port2的PK,PK什么呢?先PK这两个端口到达根桥的根路径开销,优选值更小的,如果相等,则PK这两个接口收到的BPDU中的端口。很明显,这里Port1 到根的根路径开销更小,而从Port2到根呢,除了自己接口的开销还要累加上SW2的Port1 的开销。所以SW3上,Port1 成为了根端口。
- 在交换网络中选举一个根桥
- THE END -
最后修改:2025年5月7日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:http://blog.tsaqhm.cn/stp/
共有 0 条评论