背景:
网工面对业务反馈数据中心内部2台Server之间丢包,首先会查端到端之间所有链路有无拥塞、端口CRC问题;确认没有异常后,会开始怀疑是Server本身丢包,但我们知道,物理服务器一般会查下物理网卡有无丢包,但一般网卡丢包的可能性很小,但如果包是丢在内核网络层怎么办呢?通过抓包分析会因为场景的不同,数据的多少造成分析困难重重。Linux从2.6.30开始支持Network Drop Watch(dropwatch)功能,可以准确定位内核网络层数据包的丢弃;
dropwatch使用前提:
1、首先内核必须大于等于2.6.30;
2、编译内核时应该加上“NET_DROP_MONITOR=y”;
3、由于dropwatch是依赖Kernel Tracepoint API的,其原理是各个协议层释放skb时收集信息来判断有无丢包,用的不多,难免存在一些BUG导致内核crash,因此具备一定危险性,建议troubleshooting时,最好先切走业务;
使用方法:
1、笔者使用的系统是CentOS 6.3,首先需要通过yum安装dropwatch:"yum install dropwatch -

当面临Linux服务器内核网络层丢包问题时,dropwatch工具能帮助定位丢包点。本文介绍了dropwatch的使用前提,包括内核版本要求及编译选项,以及如何在 CentOS 6.3 上安装和使用dropwatch来捕获内核丢包数据。通过分析丢包数量和System Map,可以确定丢包发生在哪个函数,如示例中udp_queue_rcv_skb函数。此外,还提到了通过`/proc/net/snmp`查看UDP丢包统计。利用dropwatch,网络管理员能更准确地诊断和解决丢包问题。
最低0.47元/天 解锁文章
1571

被折叠的 条评论
为什么被折叠?



