[英]When does the Linux network stack drop received RTP packets?
我正在調試接收 RTP 的 C++ 程序的丟包問題。 在我的程序運行很長時間接收大量 RTP 數據后,它開始丟失數據包。
使用 Wireshark 進行跟蹤顯示丟失的數據包,但我的應用程序從未收到它們。 網絡堆棧似乎在將它們交付給應用程序之前丟棄它們。 重新啟動我的應用程序后,一切都恢復正常。
為了產生錯誤條件,我使用 RTP 使機器過載,並且當時發生了數據包丟失並且有充分的理由。 但即使在我停止過載並開始以中等速率發送后,數據包丟失仍然發生,我必須重新啟動我的應用程序以再次接收所有數據。
這是 Linux 接收緩沖區處理的問題嗎? 我可以檢查哪些 Linux 統計信息來查看丟失的數據包去哪兒了?
您使用 UDP 輸入的速度不夠快。 以下是一些通常可以采取的措施來緩解這種情況:
recvmmsg(2)
,setsockopt(2)
),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.