我正在调试接收 RTP 的 C++ 程序的丢包问题。在我的程序运行了很长时间接收大量 RTP 数据后,它开始丢失数据包。
使用 Wireshark 进行跟踪会显示丢失的数据包,但我的应用程序从未收到它们。似乎网络堆栈在将它们交付给应用程序之前将它们丢弃。重新启动我的应用程序后,一切都恢复正常。
为了产生错误情况,我用 RTP 使机器超载,当时丢包发生,这是有充分理由的。但是即使在我停止过载并开始以中等速率发送之后,仍然会发生丢包,我必须重新启动我的应用程序才能再次接收所有数据。
这是 Linux 接收缓冲区处理的问题吗?我可以检查哪些 Linux 统计信息来查看那些丢失的数据包去了哪里?