3. 网络故障分类与特征工程

网络故障自动诊断的第一步,不是急着上模型,而是把“故障”变成机器能读懂的数值向量。这一过程包含两个紧密衔接的环节:先按故障的成因与表现划分类型,再从原始观测数据中提取能区分这些类型的特征。分类决定了我们要识别什么,特征工程决定了我们凭什么识别。

一、六类常见故障及其可观测表现

从运维视角看,网络故障通常归为六类,每类的根因位置和可观测信号差异明显:

  • 链路故障:光纤中断、光衰过大、接口 down、误码率升高。典型信号是接口状态翻转、CRC 错误计数增长、丢包率突增。
  • 设备故障:单板卡死、CPU/内存过载、电源或风扇异常、转发表项耗尽。典型信号是设备心跳丢失、CPU 利用率持续高位、SNMP 采集超时。
  • 协议故障:BGP 邻居震荡、OSPF 邻接关系反复建立、STP 拓扑震荡。典型信号是邻居状态机频繁切换、路由条目数骤降、协议报文重传。
  • 配置故障:ACL 误拦截、VLAN 划分错误、路由策略写错、MTU 不匹配。典型信号是特定源/目的流量不通而其他流量正常,具有明确的方向性和选择性。
  • 性能故障:带宽拥塞、时延抖动、队列丢包。典型信号是利用率逼近上限、时延 P99 抬升、丢包集中在高峰时段。
  • 安全故障:DDoS 流量冲击、ARP 欺骗、端口扫描、异常登录。典型信号是流量突增且源地址分散、ARP 表项频繁变更、连接数异常。

分类的价值在于:不同故障类型对应的特征集合不同。链路故障看物理层计数器和接口状态;协议故障看状态机迁移和协议报文统计;配置故障则更依赖流量五元组的对比分析。如果特征选错,再好的模型也无法区分。

二、故障特征提取的三个层次

特征提取按数据来源可分为三个层次,实际系统中往往组合使用。

第一层:原始计数与状态特征。直接取自 SNMP MIB、接口计数器、设备日志。例如 ifInErrors、ifOutDiscards、bgpPeerState、cpuUtil5min。这类特征优点是采集简单、含义明确;缺点是只能反映“当前值”,无法体现变化趋势。常用做法是取一阶差分,把绝对计数转为速率,例如把累计丢包数转为每秒丢包增量。

第二层:统计聚合特征。对一段时间窗口内的原始数据做聚合,得到均值、方差、最大值、P95、斜率等。例如对 5 分钟窗口的时延序列计算均值和标准差,可以区分“稳定高时延”和“抖动剧烈”两种不同故障。窗口长度是关键参数:太短噪声大,太长则故障已被平滑掉。工程上常同时保留 1 分钟、5 分钟、15 分钟三个窗口。

第三层:时序与拓扑特征。这是最能体现网络故障特性的部分,下面单独展开。

三、时序特征构建方法

网络故障本质上是随时间演化的过程,时序特征要回答三个问题:变化有多快、变化是否持续、变化是否周期性。

变化速度用一阶差分和滑动斜率刻画。设某接口丢包率序列为 x(t),取 Δx = x(t) − x(t−1),若 Δx 在连续三个采样点均为正且绝对值递增,说明故障正在恶化,而非瞬时抖动。

持续性用滑动窗口内的超阈值比例刻画。例如定义丢包率阈值 1%,统计最近 10 个采样点中超过阈值的比例,比例大于 0.6 判定为持续异常,小于 0.2 判定为瞬时毛刺。

周期性用自相关或频域方法识别。带宽利用率在每天 20:00 出现高峰属于正常业务周期,不应触发告警;而凌晨 3:00 出现同样高峰则可能是异常流量。把“当前值”与“同周期历史基线”做比值,得到周期偏离度特征,能有效抑制周期性误报。

一个实用的时序特征向量可以这样组织:对每个关键指标,取当前值、1 分钟差分、5 分钟均值、5 分钟标准差、10 点超阈比例、与昨日同时刻比值,共 6 维。多个指标拼接后形成该时刻的时序特征向量。

四、拓扑特征构建方法

网络故障具有传播性:一台核心交换机过载,会影响其下挂的所有汇聚和接入设备。拓扑特征就是把“故障发生在哪里、影响范围多大”编码进特征。

基础做法是构建网络拓扑图 G = (V, E),V 为设备或接口节点,E 为物理链路或逻辑邻居关系。对每个节点计算图论指标:度中心性(连接数)、介数中心性(经过该节点的最短路径比例)、到核心节点的跳数。核心设备介数中心性高,其异常应赋予更高权重。

更进一步,把告警沿拓扑传播。当某节点产生告警时,将其告警分数按跳数衰减扩散到邻居:一跳邻居获得 0.5 倍分数,二跳获得 0.25 倍。这样,即使根因设备本身告警不明显,其邻居的异常聚合也能指向它。这种“拓扑扩散特征”在定位链路中断和配置故障时尤其有效。

下面这张图展示了从原始观测到六类故障判别的特征工程链路,以及时序特征与拓扑特征在其中的位置。

原始观测数据 SNMP 计数器 ifInErrors / CRC 设备日志 / Trap 接口 up/down 流数据 / NetFlow 五元组 / 字节数 协议状态 BGP / OSPF 邻居 拓扑与配置 LLDP / 路由表 性能探针 时延 / 抖动 / 丢包 特征提取 原始计数特征 当前值 / 一阶差分 统计聚合特征 均值 / 方差 / P95 时序特征 斜率 / 超阈比例 / 周期偏离 拓扑特征 中心性 / 跳数 / 告警扩散 特征向量拼接 归一化 / 缺失值填充 六类故障判别 链路故障 接口状态 / CRC / 丢包率 光衰 / 误码 设备故障 CPU / 内存 / 心跳 表项耗尽 协议故障 邻居状态迁移 路由条目骤降 配置故障 五元组选择性不通 ACL / VLAN / MTU 性能故障 利用率 / 时延 P99 队列丢包 安全故障 流量突增 / 源分散 ARP 异常 / 连接数 特征选择原则 链路/设备类 → 原始计数 + 时序差分 协议/配置类 → 状态迁移 + 拓扑关系 核心 核心

五、从特征到可用的故障判别

把上述特征组织成向量后,还需要做两件工程化处理。一是归一化:不同指标量纲差异大,CPU 利用率是百分比,丢包计数可能是百万级,必须统一到可比较的尺度,常用 min-max 或 z-score。二是缺失值处理:设备离线时采集不到数据,不能简单填零,否则会把“采不到”误判为“值为零”,更合理的做法是增加一个“数据缺失”标志位,让模型自己学习缺失模式。

以一个实际场景为例:某汇聚交换机下挂用户反映访问慢。采集到的特征向量显示:该交换机上联口 ifOutDiscards 5 分钟均值从 0 升至 1200,一阶差分持续为正;时延 P99 从 8ms 升至 45ms;CPU 利用率正常;BGP 邻居状态稳定;拓扑上该交换机介数中心性较高,其下挂三个接入交换机的丢包告警按 0.5 衰减扩散后聚合分数显著。综合判断:性能故障(上联带宽拥塞),而非设备或协议故障。运维人员据此检查上联链路利用率,确认已达 92%,扩容后恢复。

这个例子说明:故障分类提供判别框架,时序特征捕捉恶化趋势,拓扑特征锁定影响范围,三者结合才能把“哪里出了问题”从猜测变成可验证的判断。特征工程的质量,直接决定了后续诊断模型的上限。