跳到主要內容

NAS 傳輸的 UDP 丟包:如何診斷與修正

診斷 NAS 傳輸的 UDP 丟包,先比較介面計數器、擷取漏包與受控測試,再決定是否調整緩衝區或網路設定。

WarpSend Team 更新 4 分鐘閱讀

診斷 NAS 傳輸的 UDP 丟包時,先確認出問題的檔案傳輸確實使用 UDP,再比較同一時段的傳送端與接收端證據。複製停住、介面計數器上升,以及擷取記錄少了一個封包,可能各有不同原因。

真正要找的是流量在哪裡停止被處理:實體鏈路、接收主機、擷取工具,還是傳輸應用程式。分清楚後,才能決定下一步應檢查線材、接收端負載、擷取品質或應用程式。

計算丟包前,先確認是哪一條流量

找出應用程式、傳輸方向、兩端位址與相關連接埠。查閱應用程式文件與實際連線,不要把另一個監控警報裡的協定套用到每次 NAS 複製。若傳輸使用 TCP,就不該從 UDP 專用的緩衝區調校開始。

UDP 的基本規格不保證送達或避免重複。應用程式可在 UDP 之上加入恢復機制;QUIC 在 UDP 之上提供可靠串流。因此,資料報遺失不直接代表儲存的檔案已損壞。

把應用程式的完成狀態與錯誤,和網路觀察分開記錄。ping 有助檢查可達性,但 ICMP 探測測不到應用程式的 UDP 送達情況。

讀計數器的增量,不要只看累計值

在受影響的傳輸前後立即保存讀值,同時記錄開始與結束時間、方向、介面、路徑及應用程式版本。開機以來累積的大數字,不能證明這次傳輸掉了封包;即使本次有增加,也可能包含同一介面上的其他流量。

若 Linux 主機已有支援的工具,下列唯讀指令可列出介面與詳細統計:

ip -s -s link show

找出承載傳輸的介面。NAS 的 shell、驅動程式與監控介面會因機型而異;沒有這些統計時,依設備支援的文件操作。不要只為重現這個範例就安裝工具或更動系統設定。

Linux 介面統計文件區分了下列計數器。把增量當成線索,還需要進一步判讀:

傳輸期間的訊號可能代表什麼下一步檢查
rx_crc_errors 增加介面收到有 CRC 錯誤的訊框比較對端交換器連接埠計數器,檢查線材、連接埠與鏈路
rx_missed_errors 增加設備因接收資源不足而漏接封包檢查接收端負載及驅動程式、設備統計
rx_dropped 增加收到的封包未被處理,可能涉及資源或過濾確認驅動程式對此計數器的定義,再與目標流量比對
Wireshark 回報擷取丟包擷取程序沒有記下所有封包先改善擷取條件,再由缺少的記錄推論網路丟包

這些計數器可能重疊。Linux 較舊的 /proc/net/dev 顯示會合併部分欄位,丟包總數也包含漏接封包;不要把畫面上的計數器當成互不相關的損失相加。介面總數也涵蓋不只一個應用程式。

分開看擷取漏包與網路丟包

獲得授權且可行時,在兩端擷取相關流量。對齊時段、方向與流量,並比較可識別的資料報,或應用程式提供的序號資訊。只有在兩份擷取都可信時,傳送端有、接收端沒有的資料報才有助縮小範圍;它仍無法指出是哪一台交換器。

Wireshark 自己的丟包數衡量的是擷取損失。Wireshark 的說明指出,封包可能已到達擷取主機,卻沒送到執行擷取的程序。因此,記錄漏抓會看起來像網路丟包。若工具未回報擷取丟包資訊,應記錄為未知,不能當成零。

再和接收應用程式的日誌、可取得的 socket 緩衝區統計比對。接收緩衝區壓力與線材故障不同;一般介面的丟包數,也無法證明某個 UDP socket 發生溢位。

用 iperf3 做受控的路徑檢查

兩端支援、且共享網路允許測試時,iperf3 UDP 測試能提供線索。ESnet 的 iperf3 文件定義 -u 為 UDP、-b 為目標位元率、-R 為反轉方向。控制連線仍使用 TCP,所以連線失敗本身不能證明 UDP 資料遭封鎖。

從雙方同意的低速率開始,只在可用容量與維護時段允許的範圍內提高。記錄速率、資料報大小、時間、方向及兩端工具版本。避免無限制速率的 UDP 測試,因為測試本身就可能造成壅塞。把接收端的丟包報告和同一時段的端點計數器一起比較。

結果描述的是該次測試程序與條件,既不證明檔案應用程式丟了資料,也不保證另一種工作負載有相同表現。若要全面區分儲存與網路問題,請使用長距離傳輸診斷指南,不用把所有瓶頸都塞進這項測試。

依證據選一項修改

若某條鏈路的 CRC 錯誤增加,檢查該連線,並用已知正常的線材或連接埠比較。若證據指向接收端壓力,減少競爭工作,查閱應用程式與 NAS 廠商的緩衝區指引。加大緩衝區無法修復實體錯誤,也不能讓長期過載的接收端無限持續處理資料。

若丟包隨方向改變,就追蹤誰是接收者:電腦複製到 NAS 時,由 NAS 接收;反向複製時,由電腦接收。比較有線與無線,或另一條允許使用的路徑,都能縮小範圍,但負載或端點有改變也必須記錄。

保存原設定,一次只改一項變數,再於相近條件下重試。受管理的交換器或防火牆設定要與管理者協調。沒有證據時,避免全面更改 MTU、VLAN 或永久性系統緩衝區設定。

最後,獨立於速度驗證檔案結果。使用應用程式的完整性檢查,或比較兩端同一個、未再變動的檔案版本之密碼學雜湊。把完成狀態、完整性與計數器增量一起記錄;複製更快本身,不能證明疑似丟包已修好。

WarpDirect 負責主動發起的端點傳輸;WarpSync 則保持所選資料夾同步。兩者都不能取代診斷。經常在電腦與 NAS 之間工作時,先找出受影響的路徑,再選擇直接存取共用資料夾或保留本機同步副本,也可查看 WarpSend 的 NAS 工作流程。

常見問題

ping 能證明 NAS 傳輸發生 UDP 丟包嗎?

不能。ping 使用 ICMP,測量的不是傳輸應用程式的 UDP 流量。有回應時仍可能發生 UDP 丟包;沒有回應則可能是 ICMP 遭過濾。先確認傳輸協定,再比對同一時段的實際流量與計數器。

應該增加 NAS 的 UDP 接收緩衝區嗎?

只有相關接收端證據支持時才值得調查。介面丟包、擷取工具漏包與 socket 緩衝區錯誤是不同訊號。查閱該 NAS 型號與軟體的文件,記錄原值,每次只改一項設定。

丟包代表傳到 NAS 的檔案已損壞嗎?

不一定。UDP 本身不會恢復遺失的資料報,但應用程式可能重傳、修復資料並驗證完成的檔案。檢查應用程式的完整性結果,或比較未再變動的來源與目的檔案之密碼學雜湊。速度與丟包計數器本身無法證明檔案完整性。