用於調查 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. 或者,最終的解決方案可能尚未發明。

如果以上都未能讓您感到安慰,那麼還有最後一步:貢獻您的力量!如果您發現了新的或不尋常的問題,或者有創新的診斷方法,請隨時分享您的發現並擴充套件本文件。共同努力,我們可以逐一追查每個難以捉摸的網路問題——一次解決一根雙絞線。

請記住:有時解決方案只是重啟一下,但如果不是,那就該深入挖掘——或者報告那個錯誤!