免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8181 | 回复: 10
打印 上一主题 下一主题

关于两台电脑直连情况下UDP程序丢包的奇怪问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-24 11:29 |只看该作者 |倒序浏览
开发了一个UDP的小程序,测试A->B->A的丢包情况,A和B是两台仅装了xp操作系统的裸机(除了驱动未装任何其他软件,后来装了抓包软件),两台电脑直连。
出现了一个很奇怪的现象:
在1000条/秒的情况下发送64字节和128字节的包会固定的每隔准确的10分钟丢几个包(2~3个),后来在测试程序运行的同时通过Ethereal软件抓取UDP包分析,发现是没有丢包的。
在2000条/秒和500条/秒的速率情况下均不会出现丢包的情况。
是用C开发的socket程序发送UDP包。

大侠们帮我想想问题出在什么地方?在线等

论坛徽章:
0
2 [报告]
发表于 2011-02-24 11:42 |只看该作者
刚看到一个帖子写的“因为每隔10分钟会更新一次arp,所以为了确保UDP的不丢包,你最好每隔5分钟就发一次arp请求,然后更新自己的arp列表,如果网络状态良好的话,能保证UDP的0丢包率 ”

不知道是否系统会自动每隔10分钟更新一次arp,更新arp会影响到udp丢包吗?如何设置arp不更新?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2011-02-24 11:48 |只看该作者
用UDP,就得考虑好丢包的应对措施

论坛徽章:
0
4 [报告]
发表于 2011-02-24 11:56 |只看该作者
通过Ethereal软件抓取UDP包分析,发现是没有丢包的。
应该是数据接收端来不及处理数据,虽然数据传输成功,但缓冲区大小一定,多余的数据包会被丢弃

论坛徽章:
0
5 [报告]
发表于 2011-02-24 11:57 |只看该作者
通过Ethereal软件抓取UDP包分析,发现是没有丢包的。
应该是数据接收端来不及处理数据,虽然数据传输成功, ...
lwrsmy 发表于 2011-02-24 11:56



    但来不及处理的话发包速度加快1倍应该更容易出现丢包呀?

论坛徽章:
0
6 [报告]
发表于 2011-02-24 11:57 |只看该作者
udp丢包:
发送过快 网络问题 接收端数据处理能力不足

论坛徽章:
0
7 [报告]
发表于 2011-02-24 12:01 |只看该作者
但来不及处理的话发包速度加快1倍应该更容易出现丢包呀?
还不错 发表于 2011-02-24 11:57



    但是你接收端抓包分析正确的话,说明包已经到达客户端了。
我也觉得奇怪,如果你的实验结果正确的话

论坛徽章:
0
8 [报告]
发表于 2011-02-24 12:12 |只看该作者
我觉得这是个随机事件
后面1500正确到达 但前面的1000又出现问题
是不是进程调度方面的问题
如果1000条出现错误,则相同条件下,1500也应该出现错误
唯一的不同就是接收端处理数据时性能出现了差异
我觉得是调度方面的问题  接收端程序执行时间出现了差异

论坛徽章:
0
9 [报告]
发表于 2011-02-24 12:54 |只看该作者
接收端的程序是阻塞在那里接收的。

论坛徽章:
0
10 [报告]
发表于 2011-02-24 13:22 |只看该作者
原因应该找到了,就是arp更新列表的影响。

设置arp缓存老化时间设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters

ArpCacheLife   REG_DWORD   0-0xFFFFFFFF(秒数,默认值为120秒)
ArpCacheMinReferencedLife   REG_DWORD   0-0xFFFFFFFF(秒数,默认值为600)

说明:如果ArpCacheLife大于或等于ArpCacheMinReferencedLife,则引用或未引用的ARP
缓存项在ArpCacheLife秒后到期.如果ArpCacheLife小于ArpCacheMinReferencedLife,
未引用项在ArpCacheLife秒后到期,而引用项在ArpCacheMinReferencedLife秒后到期.
每次将出站数据包发送到项的IP地址时,就会引用ARP缓存中的项。

设置该值后丢包间隔和设置值一致。目前把该值设置为了FFFFFFFFF正在测试中,不知道不做arp更新对系统其它方面有没有什么影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP