1. 课程导入与故障诊断方法论

复杂网络的故障诊断,难点往往不在“敲命令”,而在于面对一个已经出现业务受损的网络时,能否在有限时间内把问题范围从“整张网”收敛到“某个接口、某条表项、某个参数”。H3C Comware 平台提供了从物理层到应用层的大量观测手段,但工具越多,越需要一套稳定的方法论来约束排查路径,否则很容易在无关方向上反复试探。本课程后续 29 章会围绕具体协议、具体故障场景展开,本章先建立贯穿全课程的整体思路、分层模型、常用工具集与性能优化目标。

一、故障诊断的整体思路:先收敛,再定位,后验证

Comware 网络的故障诊断可以概括为三个动作:收敛范围、定位根因、验证恢复。收敛范围解决“问题出在哪一段”,定位根因解决“为什么这一段不工作”,验证恢复解决“改完之后是否真的好了、有没有引入新问题”。

收敛范围最有效的手段是分段与对比。例如一台终端无法访问服务器,不要一上来就抓包,而是先确认:同网段其他终端是否正常?同终端访问其他服务器是否正常?如果“同网段其他终端正常、只有这一台异常”,问题大概率在终端侧或接入端口;如果“同终端访问其他服务器正常、只有目标服务器异常”,问题大概率在路径或目标侧。这种“换一个变量看结果是否变化”的做法,就是二分法在故障诊断中的直接应用。

定位根因时,要遵循从下往上、从近到远的顺序。物理层与链路层的问题会掩盖上层所有现象,先确认接口 Up/Down、光功率、CRC 错包、双工速率,再去看 IP 可达性、路由表项、ARP/ND 表项,最后才分析 TCP 握手、应用响应。反过来做,很容易被上层超时误导。

诊断过程中应始终保留“当前假设”和“验证该假设的命令”。每执行一条命令,都要能回答:如果假设成立,输出应该是什么样;如果输出不符,假设是否被推翻。没有假设的盲目敲命令,是排障时间失控的主要原因。

二、分层诊断模型

把 OSI 与 TCP/IP 模型映射到 Comware 的实际观测点上,可以得到一张便于操作的诊断分层图。下图给出从物理层到应用层的诊断对象、典型命令与常见故障特征之间的对应关系,它是本课程后续所有章节的公共参照。

Comware 分层诊断模型:观测点 · 命令 · 典型故障特征 应用层 L7 传输层 L4 网络层 L3 链路层 L2 物理层 L1 HTTP/HTTPS 响应码 DNS 解析结果 应用端口监听状态 TCP 三次握手 会话表 / 连接数 端口复用与 NAT 会话 路由表 / FIB 表项 ARP / ND 邻居表 ACL 与策略路由命中 VLAN / 链路聚合 STP 拓扑与阻塞口 MAC 地址表 接口 Up/Down 状态 光功率 / 误码 CRC 双工与速率协商 display tcp status display dns host debugging http display session table display tcp verbose display nat session display ip routing-table display arp all display acl all display vlan brief display stp brief display mac-address display interface brief display transceiver display counters error 页面超时但 ping 通 域名解析失败 服务端口未监听 握手无响应 / 被重置 会话表满或老化异常 NAT 端口耗尽 路由缺失或次优 ARP 学习不到 ACL 误丢包 VLAN 未放通 STP 震荡 / 环路 MAC 漂移 接口频繁 Up/Down CRC 错包增长 光衰过大 诊断顺序:自下而上,先排除底层干扰

这张图的使用方式是:先确定业务受损的表现落在哪一层,再从该层向下逐层确认。例如“ping 通但网页打不开”,表现落在应用层,但根因可能在传输层(端口被 ACL 拦截)或网络层(策略路由把流量引到了错误出口)。因此分层不是只查一层,而是以表现层为起点,向下逐层排除。

三、常用工具与观测手段

Comware 的诊断工具可以按“是否影响转发”分为两类。第一类是非侵入式观测,包括各类 display 命令、日志 display logbuffer、告警 display alarm、接口计数 display counters。这类命令随时可用,是排障的主力。第二类是侵入式观测,主要是 debugging 系列和流镜像、抓包。debug 会消耗 CPU 并可能刷屏,必须在业务低峰期、配合 terminal monitor 与 terminal debugging 使用,并提前用 ACL 限定范围。

除设备自身命令外,还应善用外部手段:从客户端 ping、tracert 判断路径与丢包位置;用 telnet 或 ssh 测试目标端口连通性;在关键链路做端口镜像后用抓包工具分析交互过程。设备侧与终端侧的数据互相印证,才能避免“单侧视角”的误判。

使用 debugging 前务必确认:是否已用 ACL 过滤、是否已评估 CPU 余量、是否有回退手段(undo debugging all)。在生产网中无过滤地开启 debug,本身就可能成为一次新的故障。

四、性能优化目标

故障诊断解决“通不通”,性能优化解决“快不快、稳不稳”。Comware 网络的性能优化通常围绕四个可量化目标展开:

  • 时延:关注转发路径跳数、队列调度、是否绕行。可用 ping 的 RTT 与 tracert 逐跳时延定位突增点。
  • 丢包率:区分拥塞丢包与错误丢包。前者看队列丢弃计数,后者看接口 CRC、Alignment 错包。
  • 吞吐与带宽利用率:通过 display interface 的入/出速率与带宽占比判断是否存在瓶颈链路。
  • 资源占用:CPU、内存、会话表、ARP 表、MAC 表的容量与增长趋势,决定设备能否长期稳定运行。

优化不是“把参数调到最大”。例如把 ARP 老化时间调得过短会增加广播与表项震荡,调得过长则会导致终端迁移后流量黑洞。合理的做法是先测量基线,再针对瓶颈调整,最后用同样的测量方法验证改善幅度。下表给出一组示例性的观测指标与判断方向,用于建立基线意识。

观测对象典型命令关注指标异常方向
接口display interfaceCRC 错包、丢包、速率错包持续增长
CPUdisplay cpu-usage5 秒/1 分钟占用率持续高于 70%
内存display memory已用比例、剩余量持续下降不回收
会话表display session table当前会话数 / 规格接近上限
路由表display ip routing-table表项数量、震荡日志频繁增删

需要强调的是,表中数值属于示例性参考,实际阈值必须结合设备型号、业务模型与历史基线确定。课程后续章节在讨论具体协议优化时,会给出更贴近场景的参数与判断依据。

五、贯穿全课程的工作习惯

最后给出三条贯穿后续所有章节的习惯。第一,先记录再操作:变更前保存当前配置与关键表项输出,变更后对比差异,这是复盘与回退的基础。第二,一次只改一个变量:同时调整多个参数,即使问题消失也无法确认是哪一项起了作用。第三,用数据说话:判断“是否恢复”要有明确的观测点与前后对比,而不是凭感觉认为“好像好了”。