STP原理与配置

STP原理与配置

1.广播风暴
  环路会引起广播风暴,同时网络中的主机会收到重复数据帧。
2.STP的作用
  STP通过阻塞端口消除环路,并能够实现链路备份的目的。
3.STP操作
   1)选择根网桥:所有交换机中,Router-id最小的就是根网桥。
   2)选择根端口:根端口在非根网桥上,是非根网桥上到达根网桥路径最短的那个端口。与根网桥直连的端口为根端口
   3)选择指定端口:根网桥上的所有端口都是指定端口
   4)阻塞端口,非指定端口:未被选举为根端口或指定端口的为阻塞端口
4.BPDU
   BPDU包含桥ID,路径开销,端口ID等参数。STP选举的过程,都是通过BPDU来选举的
   Message Age:配置BPDU在网络中传播的生存期
   Max Age:配置BPDU在设备中能够保存的最大生存期
   Hello Time:配置BPDU发送的周期
   Forward Delay:端口状态迁移的延时
5.BPDU的两种类型
   配置BPDU和TCN BPDU
   配置BPDU包含了桥ID,路径开销,和端口ID等参数。在网络拓扑稳定以后,只有根桥主动配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。

   TCN BPDU是指下游交换机感知到拓扑发生变化是向上游发生的拓扑变化通知。

6.根桥故障:非根桥会在BPDU老化后开始重新选举根网桥,时间是Max Age+2倍Forward Delay=50s左右
7.直连链路故障:当其中一台交换机检测到直连链路出现物理故障后,会将预备端口转化为根端口
                    这台交换机的预备端口会在30s后恢复到转发状态(2倍的转发延迟时间)
8.非直连链路故障:交换机的预备端口会在50s后恢复到转发状态
9.拓扑变化中TCN过程:拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障,根桥生成TC用来通知其他交换机加速老化现有MAC地址表

10.根桥产生故障后,其他交换机会被选为根桥,当原来的根桥恢复后,网络会发生什么变化?
  网络会重新选举根桥。
11.STP中根路径开销和本地路径开销的区别?
  路径开销:一台交换机和另一台交换的路径 根路径开销:一台交换机到根交换机的路径
  根路径开销是根据交换机之间的网段来说的,本地路径的开销也叫端口开销是针对本地的物理链路来说的。
  相关的IETF的规定为物理链路10G/s 开销为2 ,物理链路1G/s 开销为4 ,物理链路100M/s 开销为19 ,物理链路10M/s 开销为100

==========

生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。最初被广泛应用的是IEEE802.1D-1998 STP(Spanning Tree Protocol,生成树协议),随后以它为基础产生了IEEE 802.1w RSTP(Rapid Spanning Tree Protocol,快速生成树协议)和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)

三种生成树协议特点比较:

STP:

  1. 形成一棵无环路的树,解决广播风暴并实现冗余备份。
  2. 收敛速度较慢。
  3. 无需区分用户或业务流量, 所有VLAN共享一棵生成树 。

RSTP:

  1. 形成一棵无环路的树,解决广播风暴并实现冗余备份。
  2. 收敛速度快。
  3. 无需区分用户或业务流量, 所有VLAN共享一棵生成树 。

MSTP:

  1. 形成多棵无环路的树,解决广播风暴并实现冗余备份。
  2. 收敛速度快。
  3. 多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。

STP原理

STP(Spanning Tree Protocol)生成树协议解决了链路冗余中的环路问题。

STP通过阻塞端口来消除环路,并能够实现链路备份的目的。这种阻塞是逻辑上的阻塞,业务报文不能转发,但是协议报文能够转发。

STP通过发送BPDU(Bridge Protocol Date Unit)桥协议数据单元来决定要阻塞的端口。

协商原则

STP协议是根据4个维度进行选举协商的,设备之间通过发送BPDU报文,经过4个维度的比较,最终会阻塞综合能力最差的端口。

选举维度(桥ID,累计根路径开销,发送设备BID,发送端口PID)

工作过程

 

选举分四步

1.选举一个根桥(Root Bridge)

Bridge ID:比较优先级(0~65536,默认32768,值越小,优先级越高)+比较MAC

2.每个非根交换机选举一个根端口(R:Root port)

Root port:根据cost(链路开销),开销越小,优先级越高,选举为根端口。开销相同,比较交换机优先级、mac地址等。

3.每个网段都选举一个指定端口(D:Designated port)

每条链路选一个指定端口,根交换机每个接口都是D接口。

4.阻塞非根、非指定端口(A:Alternative Port)

选举完指定端口,交换机中非根、非指定端口,便是阻塞端口。

临时环路问题
为了避免临时环路问题,A端口进入D端口之前需要等待一段时间。A->Listening->Learning->D,默认每个状态都是15秒,总共三十秒。

端口状态转换

Disabled:端口被关闭
Blocking:A端口
Forwarding:R、D端口
Listening:可以转发BPDU报文。但不能转发用户流量。
Learning:可以根据收到的用户流量构建MAC地址表,但不转发用户流量。 

角色和状态

经过4个维度的比较,最终会协商出端口的角色和状态,确定报文流量的转发路径。STP角色的定义,如下图所示。

根桥:就是桥ID最小的设备。 桥ID是由16位的桥优先级与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。华为交换机默认桥优先级都是32768。所以在不修改桥优先级时,MAC地址最小的设备就是根桥。

指定端口:就是负责转发BPDU报文的端口。 根桥上的端口都是指定端口。该端口可以正常转发流量。

根端口:就是 去往根桥路径开销最小的端口。该端口可以正常转发流量。

阻塞端口:就是禁止转发流量的端口。

从上面的官方定义,可以看出:STP协商完成后,端口要么被阻塞,要么正常转发报文。其实在STP进行协商的过程中,是有一些中间状态的。

报文格式

STP协议报文是通过BPDU报文封装的,目的MAC是 组播MAC:01-80-C2-00-00-00,封装格式是IEEE 802.3。

目标MAC是组播MAC地址,组播地址只有交换机才会接收Type值是0x03。

BPDU报文处理流程

BPDU报文的分类

配置BPDU报文:根据Flags标记位,分为3类

  • 第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文
  • 第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文
  • 第三类配置BPDU报文:Flags的TCA位置为0,TC位置为1的配置BPDU报文

TCN BPDU报文:BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文

BPDU报文的处理流程

BPDU报文格式

第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文

该报文用于STP状态的 协商和维持。具体报文格式如下:

第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文

该报文用于通知 下游设备停止发送TCN BPDU报文。具体报文格式如下:

第二类配置BPDU报文: Flags的TCA位置为0,TC位置为1的配置BPDU报文

该报文用于通知下游设备删除MAC地址表项。具体报文格式如下:

TCN BPDU报文: BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文,用于通知上游设备网络拓扑变更。具体报文格式如下:

配置举例

配置思路

采用如下的思路配置STP:

  1. 配置模式是STP模式。
  2. 配置SwitchA为根桥,SwitchB为备份根桥。
  3. SwitchC和SwitchD的GE0/0/3端口去使能STP协议。
  4. SwitchA、SwitchB、SwitchC和SwitchD使能STP协议。

操作步骤

配置模式为STP模式。

<HUAWEI> system-view

[HUAWEI] sysname SwitchA

[SwitchA] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchB

[SwitchB] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchC

[SwitchC] stp mode stp

<HUAWEI> system-view

[HUAWEI] sysname SwitchD

[SwitchD] stp mode stp

配置SwitchA为根桥,SwitchB为备份根桥。

[SwitchA] stp root primary //也可以使用命令stp priority 0 配置优先级为0,和stp root primary的作用是一样的。

[SwitchB] stp root secondary //也可以使用命令stp priority 4096 配置优先级为4096,和stp root secondary的作用是一样的。

去使能SwitchB和SwitchC设备GE0/0/3端口的STP功能。

[SwitchC] interface gigabitethernet0/0/3

[SwitchC-GigabitEthernet0/0/3] stp disable

[SwitchC-GigabitEthernet0/0/3] quit

[SwitchD] interface gigabitethernet 0/0/3

[SwitchD-GigabitEthernet0/0/3] stp disable

[SwitchD-GigabitEthernet0/0/3] quit

全局使能STP功能。

[SwitchA] stp enable

[SwitchB] stp enable

[SwitchC] stp enable

[SwitchD] stp enable

验证配置结果

查看STP简要信息,通过STP简要信息可以快速的看出端口的角色和状态。

========= End

原文地址:https://www.cnblogs.com/lsgxeva/p/14030884.html