用于在 OSI 物理层调查双绞线以太网变体的诊断概念

简介

本文档旨在服务于两个主要受众:

  1. 用户和系统管理员:对于那些处理现实世界以太网问题的人员,本指南提供了一个实用的、循序渐进的故障排除流程,以帮助识别和解决 OSI 物理层双绞线以太网中的常见问题。如果您遇到不稳定的链接、速度下降或神秘的网络问题,请直接进入逐步指南并按照它找到解决方案。

  2. 内核开发人员:对于从事网络驱动程序和 PHY 支持的开发人员,本文档概述了诊断过程,并突出了 Linux 内核诊断接口可以扩展或改进的领域。通过了解诊断流程,开发人员可以更好地确定未来增强功能的优先级。

Linux 逐步诊断指南(通用以太网)

本诊断指南涵盖了常见的以太网故障排除场景,重点关注不同以太网环境中的链路稳定性和检测,包括单对以太网 (SPE)多对以太网 (MPE),以及诸如 PoDL(数据线供电)和 PoE(第 33 条 PSE)之类的供电技术。

本指南旨在帮助用户诊断运行 Linux 内核 6.11 或更高版本、使用 ethtool 6.10 或更高版本iproute2 6.4.0 或更高版本的系统上的物理层(Layer 1)问题。

在本指南中,我们假设用户可能对链路伙伴的访问受限或没有访问权限,并将专注于在本地诊断问题。

诊断场景

  • 链路已建立且稳定,但没有数据传输:如果链路稳定,但数据传输存在问题,请参考 OSI 第二层故障排除指南

  • 链路不稳定:链路重置、速度下降或其他波动表明硬件或物理层可能存在问题。

  • 未检测到链路:接口已启动,但未建立链路。

验证接口状态

首先验证以太网接口的状态,以检查其是否已在管理上启动。与 ethtool(提供有关链路和 PHY 状态的信息)不同,它不显示接口的管理状态。要检查这一点,您应该使用 ip 命令,该命令在其输出的尖括号 “<>” 中描述接口状态。

例如,在输出 <NO-CARRIER,BROADCAST,MULTICAST,UP> 中,重要的关键字是

  • UP:接口处于管理的“UP”状态。

  • NO-CARRIER:接口在管理上处于启动状态,但未检测到物理链路。

如果输出显示 <BROADCAST,MULTICAST>,则表示该接口处于管理的“DOWN”状态。

  • 命令:ip link show dev <interface>

  • 预期输出

    4: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 ...
       link/ether 88:14:2b:00:96:f2 brd ff:ff:ff:ff:ff:ff
    
  • 解释输出

    • 管理 UP 状态:

      • 如果输出包含 “UP”,则表示该接口在管理上已启动,并且系统正在尝试建立物理链路。

      • 如果您还看到 “NO-CARRIER”,则表示尚未检测到物理链路,这表明可能存在物理层问题,例如电缆故障、配置错误或链路伙伴没有连接。在这种情况下,请继续检查链路状态和 PHY 配置部分。

    • 管理 DOWN 状态:

      • 如果输出缺少 “UP” 并且仅显示 “<BROADCAST,MULTICAST>” 之类的状态,则表示该接口在管理上处于关闭状态。在这种情况下,请使用以下命令启动接口

        ip link set dev <interface> up
        
  • 后续步骤:

    • 如果接口在管理上已启动但显示 NO-CARRIER,请继续检查链路状态和 PHY 配置部分,以排除潜在的物理层问题。

    • 如果接口在管理上处于关闭状态,并且您已将其启动,请务必重复此验证步骤以确认接口的新状态,然后再继续操作。

    • 如果接口已启动并检测到链路:

      • 如果输出显示 “UP” 并且没有 `NO-CARRIER`,则表示该接口在管理上已启动,并且已成功建立物理链路。如果一切按预期工作,则物理层诊断完成,无需采取进一步操作。

      • 如果接口已启动且检测到链路但未传输任何数据,则问题很可能超出物理层范围,您应该继续诊断 OSI 模型的更高层。这可能涉及检查第二层配置(例如 VLAN 或 MAC 地址问题)、第三层设置(例如 IP 地址、路由或 ARP)或第四层及以上(防火墙、服务等)。

      • 如果链路不稳定频繁重置或掉线,则可能表示物理层问题,例如电缆故障、干扰或供电问题。在这种情况下,请继续本指南中的下一步。

检查供电(PoDL 或 PoE)

如果已知系统未实现 PoDLPoE,或者 PSE(电源设备)由专有的用户空间软件或外部工具管理,则可以跳过此步骤。在这种情况下,请通过其他方法验证供电,例如检查硬件指示灯(LED)、使用万用表或咨询供应商特定的软件来监控电源状态。

如果已实现 PoDLPoE 并由 Linux 直接管理,请按照以下步骤操作,以确保正确供电

  • 命令:ethtool --show-pse <interface>

  • 预期输出示例:

    1. 不支持 PSE:

      如果未连接 PSE 或接口不支持 PSE,则预期会看到以下输出

      netlink error: No PSE is attached
      netlink error: Operation not supported
      
    2. PoDL(单对以太网):

      当实现 PoDL 时,您可能会看到以下属性

      PSE attributes for eth1:
      PoDL PSE Admin State: enabled
      PoDL PSE Power Detection Status: delivering power
      
    3. PoE(第 33 条 PSE):

      对于标准 PoE,输出可能如下所示

      PSE attributes for eth1:
      Clause 33 PSE Admin State: enabled
      Clause 33 PSE Power Detection Status: delivering power
      Clause 33 PSE Available Power Limit: 18000
      
  • 调整功率限制(如果需要):

    • 有时,可用的功率限制可能不足以满足链路伙伴的需求。您可以根据需要增加功率限制。

    • 命令:ethtool --set-pse <interface> c33-pse-avail-pw-limit <limit>

      示例

      ethtool --set-pse eth1 c33-pse-avail-pw-limit 18000
      ethtool --show-pse eth1
      

      调整功率限制后的预期输出

      Clause 33 PSE Available Power Limit: 18000
      
  • 后续步骤:

    • 未使用 PoE 或 PoDL:如果系统上未实现或使用 PoEPoDL,则继续下一步诊断,因为供电与此设置无关。

    • PoE 或 PoDL 由外部控制:如果使用 PoEPoDL,但不是由 Linux 内核的 PSE-PD 框架管理(即,它由专有的用户空间软件或外部工具控制),则本文档不在此范围内。请查阅供应商特定的文档或外部工具以监控和管理供电。

    • PSE 管理状态已禁用:

      • 如果 PSE Admin State:禁用,请运行以下命令之一将其启用

        ethtool --set-pse <devname> podl-pse-admin-control enable
        

        或者,对于第 33 条 PSE (PoE)

        ethtool --set-pse <devname> c33-pse-admin-control enable

      • 启用 PSE 管理状态后,返回到检查供电(PoDL 或 PoE)步骤的开头,以重新检查供电状态。

    • 未供电:如果 Power Detection Status 显示“正在供电”以外的内容(例如,过流),请对 PSE 进行故障排除。检查潜在问题,例如电缆中的短路、供电不足或 PSE 本身的故障。

    • 已供电但无链路:如果已供电但未建立链路,请继续进行进一步诊断,执行电缆诊断或查看检查链路状态和 PHY 配置步骤,以识别物理链路或设置的任何潜在问题。

电缆诊断

使用 ethtool 测试物理层问题,例如电缆故障。测试结果可能因电缆状况、所用技术和链路伙伴的状态而异。电缆测试的结果将有助于诊断诸如开路、短路、阻抗不匹配和噪声相关问题。

  • 命令: ethtool --cable-test <接口>

以下是单对以太网 (SPE)多对以太网 (MPE) 的典型输出

  • 对于单对以太网 (SPE):- 预期输出 (SPE)

    Cable test completed for device eth1.
    Pair A, fault length: 25.00m
    Pair A code Open Circuit
    

    这表示在报告的距离处存在开路或电缆故障,但结果可能受链路伙伴状态的影响。有关这些结果的进一步解释,请参阅“基于电缆测试结果的故障排除”部分。

  • 对于多对以太网 (MPE):- 预期输出 (MPE)

    Cable test completed for device eth0.
    Pair A code OK
    Pair B code OK
    Pair C code Open Circuit
    

    在此,报告配对 C 出现开路,而配对 A 和 B 工作正常。但是,如果在配对 A 和 B 上使用自动协商,则电缆测试可能会中断。有关这些问题的详细解释以及如何解决这些问题,请参阅“基于电缆测试结果的故障排除”部分。

有关不同可能电缆测试结果的详细说明,请参阅“基于电缆测试结果的故障排除”部分。

基于电缆测试结果的故障排除

运行电缆测试后,结果可以帮助识别物理连接中的特定问题。但是,请务必注意,电缆测试结果在很大程度上取决于本地硬件和链路伙伴的功能和特性。不同硬件实现之间的结果准确性和可靠性可能差异很大。

在某些情况下,这可能会在当前电缆测试实现中引入盲点,其中某些结果可能无法准确反映电缆的实际物理状态。例如

  • 开路结果可能不仅表示电缆损坏或断开,如果电缆正确连接到断电的链路伙伴,也可能出现此结果。

  • 如果链路伙伴处于强制从模式,某些 PHY 可能会报告配对内短路,即使电缆中没有实际短路。

为了帮助用户更有效地解释结果,扩展 kernel UAPI(用户 API)以根据硬件特性提供额外的上下文或问题的可能变体可能会很有益处。由于这些怪癖通常是硬件特定的,因此内核驱动程序将是此类信息的理想来源。通过为每个测试结果提供与潜在的误报相关的标志或提示,用户将更好地了解要验证的内容以及进一步调查的位置。

在进行此类改进之前,用户应注意这些限制,并根据需要手动验证电缆问题。物理检查可能有助于解决与误报结果相关的不确定性。

结果可以是以下之一

  • 正常:

    • 电缆功能正常,未检测到任何问题。

    • 下一步:如果您仍然遇到问题,则可能与更高层的问题有关,例如双工不匹配或速度协商,这些都不是物理层问题。

    • `BaseT1` (1000/100/10BaseT1) 的特殊情况:在 BaseT1 系统中,“正常”结果通常也意味着链路已启动,并且可能处于从模式,因为电缆测试通常仅在此模式下通过。对于某些 10BaseT1L PHY,即使电缆对于 PHY 的配置范围来说太长(例如,当范围配置为短距离模式时),也可能出现“正常”结果。

  • 开路:

    • 开路结果通常表示电缆在报告的故障长度处损坏或断开。考虑以下可能性

      • 如果链路伙伴处于 admin down 状态或已关闭电源,即使电缆功能正常,您仍然可能会获得“开路”结果。

      • 下一步:检查故障长度处的电缆是否有可见的损坏或松动的连接。验证链路伙伴是否已打开电源并处于正确的模式。

  • 配对内短路:

    • 配对内短路表示同一对导线内存在意外连接,通常是由电缆的物理损坏引起的。

      • 下一步:更换或维修电缆,并检查是否有任何物理损坏或压接不正确的连接器。

  • 与其他配对短路:

    • 与其他配对短路表示来自不同配对的导线短路,这可能是由于物理损坏或接线错误引起的。

      • 下一步:更换或维修损坏的电缆。检查电缆是否有不正确的端接或夹住的导线。

  • 阻抗不匹配:

    • 阻抗不匹配表示由电缆中的阻抗不连续引起的反射。当电缆的一部分具有异常阻抗时(例如,当不同类型的电缆拼接在一起或电缆存在缺陷时),可能会发生这种情况。

      • 下一步:检查电缆质量,并确保其整个长度的阻抗一致。更换任何不符合规范的电缆段。

  • 噪声:

    • 噪声表示由于电缆上存在过多的噪声,时域反射仪 (TDR) 测试无法完成,这可能是由电磁源的干扰引起的。

      • 下一步:识别并消除电缆附近电磁干扰 (EMI) 的来源。考虑使用屏蔽电缆或将电缆改道远离噪声源。

  • 无法解决:

    • 无法解决表示由于测试的分辨率限制或故障超出测试可以测量的距离,TDR 测试无法检测到问题。

      • 下一步:如果可能,手动检查电缆,或使用可以处理更大距离或更高分辨率的替代诊断工具。

  • 未知:

    • 当测试无法对故障进行分类或特定问题超出工具的检测能力范围时,可能会出现未知结果。

      • 下一步:重新运行测试,验证链路伙伴的状态,并在必要时手动检查电缆。

当一切都失败时...

因此,您检查了电缆,监控了日志,禁用了 EEE,但仍然...什么都没有?别担心,你不是一个人。有时,以太网小精灵就是不想合作。

但在你放弃(或放弃以太网电缆)之前,深呼吸一下。总是有可能:

  1. 你的 PHY 有一个独特的、未记录的个性。

  2. 问题处于休眠状态,等待合适的时机神奇地自行解决(嘿,这种情况会发生!)。

  3. 或者,可能是最终解决方案尚未发明。

如果以上任何一项都不能让你感到安慰,那么还有最后一步:贡献!如果您发现了新的或不寻常的问题,或者有创造性的诊断方法,请随时分享您的发现并扩展本文档。我们可以一起追踪每一个难以捉摸的网络问题 - 一根双绞线一次。

记住:有时解决方案只需重启一下,但如果没有,就该深入挖掘 - 或报告该错误!