udp丢包问题的调查
项目用海思做的编解码卡,发送接收rtp/udp流,有两个bug,一直解决不了,都是和丢包相关的
第一个现象是编码卡A和解码卡B搭配使用的时候,log显示丢包,现在已知的情报有:
1、测试的环境是A和B之间只有一个交换机,交换机上是只连着A、B还有调试用PC的局域网。
2、在丢包的情况下进行抓包,在解码卡B中用tcpdump抓包,log中显示的丢包和tcpdump中显示的丢包一致,但是利用交换机镜像将发给解码卡B的数据复制到pc上,然后利用wireshark抓包,wireshark显示没有丢包。
3、根据3的现象,我分析包是在解码卡B里丢了, 查看netstat -a 所有的缓冲区都没有堆积的现象
4、cat /proc/net/snmp 没有缓冲溢出和错误造成的丢包
5、ifconfig 判断网卡也没有丢包
6、应用程序中udp缓存设置为10M,系统的缓存最大值也跟着修改了
7、cpu的利用率一直在40%以下
8、关闭所有的log打印,对丢包无改善
9、将程序中recvfrom后面的所有工作全部注释掉,只保留检测丢包,依然丢包
好吧,我已经无能为力了。感觉这个包就这么莫名其妙得丢了,现在暂时用的tcp,但是需求上尽可能的还是想用udp,而且解码卡B和其他所有的编码卡配合udp都没有丢包,我感觉是编码器有问题的,但是又和现象3冲突,而且编码卡A都用了好几年了,比我工作年份还多都没收到反馈有这个问题。
现象二是编码卡C和解码卡D,也是发送rtp/udp包,直连的情况下,发生丢包,但是中间如果接了一个交换机,就不丢了。
以上两个现象,各位大佬如果有遇到过的话,麻烦指导一下小弟啦