免费注册 查看新帖 |

Chinaunix

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

[网络子系统] UDP丢包原因排查方法 [复制链接]

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-19 12:37 |只看该作者 |倒序浏览
netstat -su发现系统中有不少的UDP丢包统计,请问如何有比较直接的方法确认这些被丢的UDP包具体是什么包?什么情况下可能会出现UDP丢包?
理论上分析,只看到当出现”校验和错误”和“缓冲区满”时会丢包,不知是否还有其他可能?
使用systemtap打点时,发现丢包相关流程多是内联函数,无法直接打点,不知是否还有其他更好的调试方法?

论坛徽章:
0
2 [报告]
发表于 2013-12-19 12:51 |只看该作者
既然采用的是UDP协议,那么这些丢包对上层应用应该没影响才对(比如看视频)或应用程序本身做了进一步的处理,lz何苦要自我折磨?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
3 [报告]
发表于 2013-12-19 13:13 |只看该作者
回复 1# humjb_1983
netstat -su发现系统中有不少的UDP丢包统计,请问如何有比较直接的方法确认这些被丢的UDP包具体是什么包?什么情况下可能会出现UDP丢包?
理论上分析,只看到当出现”校验和错误”和“缓冲区满”时会丢包,不知是否还有其他可能?
使用systemtap打点时,发现丢包相关流程多是内联函数,无法直接打点,不知是否还有其他更好的调试方法?

按说UDP的丢包还是比较好debug的。
贴一下netstat -su的输出看看

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
4 [报告]
发表于 2013-12-19 14:05 |只看该作者
瀚海书香 发表于 2013-12-19 13:13
回复 1# humjb_1983

按说UDP的丢包还是比较好debug的。


看看这个
[root@merge_slaver ~]# date
Wed Dec 18 13:23:46 IST 2013
Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors
Udp: 1755364277 1767943 3129696 2531000 0 0
[root@merge_slaver ~]# date
Wed Dec 18 13:23:42 IST 2013
Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors
Udp: 1755350451 1767943 3129694 2530992 0 0

另外,从抓包的结果看,其中有这样的包(不确认是否丢的就是它~):
19:52:10.436147 IP 0.0.0.0.cp-cluster > 10.80.208.81.cp-cluster: UDP, length 32
请瀚海兄帮忙一起看看,源地址0.0.0.0通常代表啥?cp-cluster端口通常是啥端口?

谢谢!

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
5 [报告]
发表于 2013-12-19 14:07 |只看该作者
lenky0401 发表于 2013-12-19 12:51
既然采用的是UDP协议,那么这些丢包对上层应用应该没影响才对(比如看视频)或应用程序本身做了进一步的处理 ...

呵呵,确实是这样的,但是目前业务发现有不正常,怀疑跟底层的UDP丢包相关,需要从OS角度确认丢包的原因。
而且还不能通过修改内核打点确认,因为环境中有三方的内核模块,修改内核后,三方内核模块加载不了,郁闷。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
6 [报告]
发表于 2013-12-19 15:05 |只看该作者
本帖最后由 瀚海书香 于 2013-12-19 15:06 编辑

回复 4# humjb_1983
[root@merge_slaver ~]# date
Wed Dec 18 13:23:46 IST 2013
Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors
Udp: 1755364277 1767943 3129696 2531000 0 0
[root@merge_slaver ~]# date
Wed Dec 18 13:23:42 IST 2013
Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors
Udp: 1755350451 1767943 3129694 2530992 0 0

另外,从抓包的结果看,其中有这样的包(不确认是否丢的就是它~):
19:52:10.436147 IP 0.0.0.0.cp-cluster > 10.80.208.81.cp-cluster: UDP, length 32
请瀚海兄帮忙一起看看,源地址0.0.0.0通常代表啥?cp-cluster端口通常是啥端口?


从你给的数据在4s的时间丢了2个进来的包,总的来说丢包并不高。查看内核代码,可能导致这个统计参数增加的有如下6个地方:
   7   1099  /usr/src/linux/net/ipv4/udp.c <<first_packet_length>>   校验和错误
             UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
   8   1247  /usr/src/linux/net/ipv4/udp.c <<udp_recvmsg>>  可以probe
             UDP_INC_STATS_USER(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
   9   1367  /usr/src/linux/net/ipv4/udp.c <<__udp_queue_rcv_skb>> 可以probe
             UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
  10   1485  /usr/src/linux/net/ipv4/udp.c <<udp_queue_rcv_skb>>  可以probe
             UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
  11   1508  /usr/src/linux/net/ipv4/udp.c <<flush_stack>>  因为与RcvbufErrors同时增加,而你的RcvbufErrors=0,所有排除
             UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
  12   1707  /usr/src/linux/net/ipv4/udp.c <<__udp4_lib_rcv>> 可以probe
             UDP_INC_STATS_BH(net, UDP_MIB_INERRORS, proto == IPPROTO_UDPLITE);




cp-cluster端口是udp 8116 (你可以通过tcpdump -nn直接显示端口)
   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
7 [报告]
发表于 2013-12-19 15:11 |只看该作者
瀚海书香 发表于 2013-12-19 15:05
回复 4# humjb_1983

感谢瀚海兄指点,我再用systemtap试试可以probe的几个点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP