3511
- 收藏
- 点赞
- 分享
- 举报
海思平台UDP接收或发送会丢包问题
用户态应用程序在接收UDP数据时(单播或组播报文),同时进行其它有延时的操作(如写码流数据到USB存储设备), 应该程序将延迟接收UDP数据包,而socket默认接收缓存只有108544Byte,这样可能会使socket接收缓存满,无法接收新的UDP数据包,出现丢包现象。
可在内核下通过执行下面命令进行确认:
cat /proc/net/snmp | grep Udp
如果RcvbufErrors字段增加较多,说明确实是socket接收缓存满导致的丢包。
以下命令可以增加接收缓冲区,解决以上问题。
echo 20000000 > /proc/sys/net/core/rmem_max
echo 20000000 > /proc/sys/net/core/rmem_default
echo 20000000 > /proc/sys/net/core/netdev_max_backlog
这种改动,需要根据实际码流发送速度和接收程序的延时进行参数调优。
UDP发送可能会丢包,一种原因是CPU发送UDP报文的速率超过了网卡MAC的发包速率,导致网卡MAC的发送缓冲队列满,引起了丢包。
可以在内核下通过执行下面命令进行确认:
ifconfig eth0
如果打印的信息中TX dropped和overruns值基本相等,都增加较多,说明是网络MAC的发送缓冲队列满导致的丢包。
以下命令可以减小发送缓冲区,让CPU发包速率慢一点,解决以上问题。
echo 20000 > /proc/sys/net/core/wmem_max
echo 20000 > /proc/sys/net/core/wmem_default
这种改动,需要根据码流发送速率和丢包率的要求进行参数调优。
可在内核下通过执行下面命令进行确认:
cat /proc/net/snmp | grep Udp
如果RcvbufErrors字段增加较多,说明确实是socket接收缓存满导致的丢包。
以下命令可以增加接收缓冲区,解决以上问题。
echo 20000000 > /proc/sys/net/core/rmem_max
echo 20000000 > /proc/sys/net/core/rmem_default
echo 20000000 > /proc/sys/net/core/netdev_max_backlog
这种改动,需要根据实际码流发送速度和接收程序的延时进行参数调优。
UDP发送可能会丢包,一种原因是CPU发送UDP报文的速率超过了网卡MAC的发包速率,导致网卡MAC的发送缓冲队列满,引起了丢包。
可以在内核下通过执行下面命令进行确认:
ifconfig eth0
如果打印的信息中TX dropped和overruns值基本相等,都增加较多,说明是网络MAC的发送缓冲队列满导致的丢包。
以下命令可以减小发送缓冲区,让CPU发包速率慢一点,解决以上问题。
echo 20000 > /proc/sys/net/core/wmem_max
echo 20000 > /proc/sys/net/core/wmem_default
这种改动,需要根据码流发送速率和丢包率的要求进行参数调优。
我来回答
回答0个
时间排序
认可量排序
暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2018-11-07 09:38:34
-
2018-11-07 09:25:05
-
22020-04-08 17:45:46
-
2020-07-21 14:39:06
-
2020-01-03 13:16:12
-
2019-04-12 15:40:33
-
2014-10-27 09:38:10
-
2017-07-02 18:40:34
-
2019-01-04 10:34:44
-
2018-08-11 21:17:09
-
42015-09-29 14:32:18
-
32014-10-10 15:32:25
-
2020-02-29 18:29:17
-
2017-06-30 14:28:33
-
2017-07-27 13:52:06
-
2023-04-04 16:53:09
-
2016-11-04 16:01:34
-
82020-01-09 15:18:35
-
2021-06-14 21:32:16
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认