用于调查 OSI 第 1 层双绞线以太网变体的诊断概念

引言

本文档主要面向两类受众

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

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

Linux 循序渐进诊断指南(通用以太网)

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

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

在本指南中,我们假设用户可能无法访问或有限访问链接伙伴,并将重点放在本地诊断问题。

诊断场景

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

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

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

验证接口状态

首先验证以太网接口的状态,以检查它是否在管理上已启动 (administratively up)。与提供链接和 PHY 状态信息的 ethtool 不同,它不显示接口的管理状态。要检查此项,您应该使用 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”,则表示未检测到物理链接,表明可能存在第 1 层问题,例如电缆故障、配置错误或链接伙伴端没有连接。在这种情况下,请继续阅读检查链接状态和 PHY 配置部分。

    • 管理 DOWN 状态:

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

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

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

    • 如果接口在管理上已关闭且您已将其启动,请务必重复此验证步骤以在继续之前确认接口的新状态

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

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

      • 如果接口已启动并检测到链接但没有数据正在传输,则问题可能超出第 1 层,您应该继续诊断 OSI 模型的更高层。这可能涉及检查第 2 层配置(例如 VLAN 或 MAC 地址问题)、第 3 层设置(例如 IP 地址、路由或 ARP)或第 4 层及以上(防火墙、服务等)。

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

检查供电(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(Clause 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
        

        或者,对于 Clause 33 PSE (PoE)

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

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

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

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

电缆诊断

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

  • 命令: ethtool --cable-test <interface>

以下是单对以太网 (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 可能会报告对内短路,即使电缆中没有实际短路。

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

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

结果可能是以下之一:

  • OK:

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

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

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

  • 开路:

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

      • 如果链接伙伴处于管理关闭状态或已断电,即使电缆功能正常,您也可能仍然获得“开路”结果。

      • 后续步骤:检查故障长度处的电缆是否有可见损坏或松动连接。验证链接伙伴是否已通电并处于正确模式。

  • 对内短路:

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

      • 后续步骤:更换或修复电缆,并检查是否有任何物理损坏或压接不当的连接器。

  • 对间短路:

    • 对间短路表示不同对的电线短路,这可能是由于物理损坏或接线错误造成的。

      • 后续步骤:更换或修复损坏的电缆。检查电缆是否存在不正确的端接或压接。

  • 阻抗不匹配:

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

      • 后续步骤:检查电缆质量并确保其长度范围内的阻抗一致。更换任何不符合规范的电缆部分。

  • 噪声:

    • 噪声意味着时域反射仪 (TDR) 测试因电缆上的过度噪声而无法完成,这可能是由电磁源干扰引起的。

      • 后续步骤:识别并消除电缆附近的电磁干扰 (EMI) 源。考虑使用屏蔽电缆或将电缆重新布线远离噪声源。

  • 无法解析:

    • 无法解析意味着 TDR 测试由于测试的分辨率限制或故障超出测试可测量距离而无法检测到问题。

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

  • 未知:

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

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

当一切都失败时...

所以您已经检查了电缆,监控了日志,禁用了 EEE,但仍然……一无所获?别担心,您并不孤单。有时候,以太网小鬼就是不肯合作。

但在您放弃(或扔掉以太网线)之前,深吸一口气。总有可能:

  1. 您的 PHY 具有独特、未文档化的特性。

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

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

如果以上都未能让您感到安慰,那么还有最后一步:贡献您的力量!如果您发现了新的或不寻常的问题,或者有创新的诊断方法,请随时分享您的发现并扩展本文档。共同努力,我们可以逐一追查每个难以捉摸的网络问题——一次解决一根双绞线。

请记住:有时解决方案只是重启一下,但如果不是,那就该深入挖掘——或者报告那个错误!