首页 › 新闻资讯 › 文章

H3C | 基础维护篇 – STP TC问题排查与优化

STP TC问题排查与优化 H3C交换机基础维护篇 TC令人头大 咖哥,我又来啦~~最近有个STP小问题让我头疼得很。 说。 最近好几台交换机上总是时不时地有告警,业务倒是没发现有什么问题。 什么样的告警? 这样子的: %Mar 9 16:36:42:043 2021 S10510 STP/6/STP_NOTIFIED_TC: -Chassis=2-Slot
STP TC问题排查与优化

H3C交换机基础维护篇

TC令人头大

咖哥,我又来啦~~最近有个STP小问题让我头疼得很。

说。

最近好几台交换机上总是时不时地有告警,业务倒是没发现有什么问题。

什么样的告警?

这样子的:

%Mar  9 16:36:42:043 2021 S10510 STP/6/STP_NOTIFIED_TC: -Chassis=2-Slot=1; Instance 0’s port GigabitEthernet2/1/0/5 was notified a topology change.

这是收到了其他设备发过来的TC报文。

TC报文?

TC报文是什么

小伙伴们在日常维护中是否发现,交换机上可能经常产生STP TC报文的日志告警,比如:

TC报文对现网业务的影响可大可小,有时仅仅体现为偶尔出现告警打印,有时却能引起报文泛洪、拥塞丢包。因此为了网络的正常稳定运行,应该尽可能消除异常TC报文的产生。那TC报文到底是什么呢?

我们常说的TC报文其实就是TCN BPDU,它的作用是网络中的其他网桥通知根桥网络拓扑发生了变化。上面的告警中出现了两种TC报文,一种是STP_DETECTED_TC,这是接口所在生成树实例或VLAN拓扑发生变化,本端设备检测到拓扑变化后产生的TC报文。另一种是STP_NOTIFIED_TC,这是远端相连设备通知本设备某接口所在生成树实例或VLAN的拓扑发生变化后产生的TC报文。

什么情况下

会产生TC报文

按照IEEE协议规定,TCN BPDU的产生条件有两个:

1. 网桥上有端口转变为Forwarding状态,且该网桥至少包含一个指定端口。

2.网桥上有端口从Forwarding状态或Learning状态转变为Blocking状态。

若上述两个条件之一满足,就说明网络拓扑发生了变化,网桥就需要使用TCN BPDU通知根桥这一变化。在日常维护中,TC报文的产生通常有以下几种情况:

1. 设备或链路出现故障,引发STP重新计算,产生TC报文。

2. STP配置参数更改,引发STP重新计算,产生TC报文。

3. 连接终端的端口使能了STP,但没有配置为边缘端口,当终端发生重启等情况导致该端口链路状态变化时,该端口产生TC报文。

4. 来自用户设备的攻击TC报文也可能传入其所接入的二层网络。

收到TC报文会怎样

H3C系列交换机上实现的是标准MSTP的STP兼容模式,接口收到TC报文后,将把所有VLAN或Instance实例中所有VLAN的MAC表项删除,由流量触发重新学习,ARP表项会由设备会主动发送ARP请求报文来进行更新。

下面我们通过一个小实验来说明该过程。

一、实验拓扑

在Spine和Leaf上共起四个网关地址,使用一台交换机来模拟PC,配置四个VLAN虚接口模拟四个终端设备。

除PC外的其他设备均开启MSTP,Access-2与PC互联接口配置边缘端口和BPDU保护功能。

通过手动打开和关闭Access-1的上行接口来模拟网络中的链路故障和新接入交换机,构造拓扑改变触发条件。

二、网络初始状态

Spine为根设备,初始TC收发为0,正常学习到55.1.1.2和66.1.1.2的ARP表项。

Leaf设备上初始TC收发为0,正常学习到77.1.1.2和88.1.1.2的ARP表项。

接下来通过手工关闭一次再打开一次Access-1的上行口,来模拟网络中互联接口UP/DOWN和新接入交换机的场景,在整个过程中观察以下三方面情况:

1. 观察各设备的TC报文收发情况。

2. PC和网关之间不进行互ping操作,观察Spine和Leaf的ARP表项老化时间的更新情况。

3. 在Access-2上行口抓包,观察网络中ARP报文的传递过程。

三、TC报文收发情况

1. Spine设备上

手工关闭一次再打开一次Access-1的上行口后,可以看到Spine打印了两条TC告警。这是因为Access-1的上行接口DOWN再UP一次时,Access-1和Leaf上都有非边缘端口转为Forwarding状态,满足TC报文产生的条件,所以Access-1和Leaf各会产生一个TC报文然后泛洪到Spine上。

通过display stp tc命令查看TC报文的收发计数,也可以看到Spine收到2个TC报文。

2. Leaf设备上

可以看到Leaf上打印两条TC告警,其中一个TC报文是Leaf自身端口震荡产生的,另一个TC报文是Access-1端口震荡后产生并泛洪发给Leaf的。

这里需要注意是,如果是设备自身端口震荡产生的TC报文,日志中的关键字是DETECTED,如果是收到其他设备泛洪过来的TC报文,日志中关键字是NOTIFIED。

四、ARP表项更新情况

1. Spine设备上

初始ARP表项在1091S后将老化,Access-1接口UP后,Spine收到泛洪过来的TC报文,触发ARP表项更新,ARP表项的默认老化时间为1200S,变为1181S说明刚刚学习更新。

2. Leaf设备上

初始ARP表项在750S后将老化,Access-1接口UP后,Leaf收到泛洪过来的TC报文,触发ARP表项更新,ARP表项的默认老化时间为1200S,变为1176S说明刚刚学习更新。

五、抓包观察ARP报文收发情况

在Access-2上行口抓包,可以看到在接口UP后,Spine和Leaf均发出了ARP请求报文去更新自己设备上的ARP表项。

六、小节

1. 非边缘端口出现UP/DOWN时设备会产生STP TC报文,并会通过根端口和非边缘端口往其他设备发送TC报文,从而导致TC报文的整网泛洪。

2. 收到TC报文的设备会触发MAC和ARP表项的刷新,MAC表项被删除后由流量触发重新学习,ARP表项由设备主动发起ARP请求报文更新。

TC报文的

排查和优化

交换机偶尔出现少量STP TC日志告警可以不必过分关注,但在规模较大的二层网络域中,若交换机频繁收到TC报文,则会频繁刷新MAC地址表,可能造成短暂的未知单播流量泛洪,拥塞丢包;频繁刷新ARP表可能造成网络中瞬时出现大量ARP协议报文,导致核心设备CPU利用率升高,影响其他协议报文的处理。

因此我们应该尽可能消除频繁产生的TC报文,主要可以按照以下几点进行排查和优化:

1. 首先尽量从源头消除TC报文,找到是哪台设备的接口在频繁震荡。执行命令diplay stp tc查看频繁收到TC报文的端口,如果某端口收到的TC报文一直递增,查看该端口的对端设备的TC接收端口,一级一级往下直到找到TC源。

2. 根据上一步的排查结果,再继续定位接口震荡的原因。如果是设备间的互联接口,建议做一些硬件替换测试消除接口震荡。如果是互联终端的接口则建议配置STP边缘端口和BPDU保护功能。

3. 对于某些不便排查源头的网络,可以在端口上配置stp tc-restriction命令来开启TC-BPDU传播限制功能,此后当该端口收到TC-BPDU时,不会再向其他端口传播。

4. 在我司设备网络和其他厂商设备网络的交界处,如果只有单条路径连接,可以在该链路所连端口上配置stp disable或者bpdu drop。如果存在多条路径,则对其异常收TC情况进行监控和检查。

5. 尽可能合理规划和控制二层网络域的规模,当二层网络域规模较大,汇聚、接入和终端设备数量较多时,建议在核心和汇聚设备之间关闭STP功能,使每台汇聚设备与其下联网络构成一棵单独的STP树,每颗树之间互不影响,从而减小TC报文的泛洪和影响范围。

—— end ——

 

来源:新华三服务

了解相关产品与方案

滚动至顶部