Linux网卡丢包分类整理(1)——网卡篇
网卡丢包怎么办?或者再具体点,使用ifconfig查看网卡,发现有dropped统计时可以从哪些方面进行调查?要想知道为什么丢包,首先要弄清楚接收数据包的流程。
一. 收包模块间的关系
Linux系统从网卡收到数据包到最终上层应用处理之间涉及到多个模块,包括物理硬件、驱动、缓存队列、内核、再到应用程序。如下图,其中任一模块出问题都有可能导致网卡丢包。
二. 数据包接收流程
如上图,接收数据包会遵循硬件(device)->内核(kernel)->用户态应用(user)这一处理流程。
1. 数据包到达网卡(物理硬件)时,对数据包进行CRC校验,如果校验无误,就把帧头去掉,把数据包拷贝(DMA)到内存的ringbuffer中,然后网卡会向cpu发送一个irq硬中断,cpu在收到硬中断后会通知驱动处理数据。
2. 驱动收到cpu的通知,会开启NAPI(一种轮询机制,能够避免频繁触发中断),然后发出软中断。软中断会触发ksoftirqd内核线程进行数据处理,ksoftirqd会将数据包封装为skb结构,然后上送到内核协议栈。
3. 协议栈分层对数据进行解析,如解析以太头、IP头、TCP/UDP头等,随后将数据拷贝到socket buffer中。
4. 用户态应⽤程序从socket buffer 中读取数据,进行业务处理。
三. 丢包分析思路
可以了解到接收数据包主要会涉及⽹卡设备、⽹卡驱动、内核协议栈三⼤类。排查丢包原因也要从这三类入手。
四. 硬件网卡丢包
1. Ring Buffer溢出
1) 数据帧由物理介质到达网卡(NIC)后,首先会写入设备内部缓冲区Ring Buffer中,再向cpu发送硬中断。
2) cpu收到硬中断后通知网卡驱动,驱动程序触发Softirq,由ksoftirqd内核线程从Ring Buffer中消费数据。
Ring Buffer的大小因网卡设备而异。当网络数据包到达(生产)的速率快于内核处理(消费)的速率时,Ring Buffer很快会被填满,新来的数据包将被丢弃。
查看方式
通过ethtool或/proc/net/dev可以查看因Ring Buffer满而丢弃的包统计,在统计项中以fifo标识:
ethtool -S ens5f0 | grep rx_fifo
cat /proc/net/dev
查看网卡Ring Buffer最大值和当前设置
ethtool -g ens5f0
解决方案
修改网卡接收与发送硬件缓存区大小
ethtool -G ens5f0 rx 4096 tx 4096
2. 网卡端口协商丢包
接收设备的网卡会和与之相连的另一块网卡协商传输速率,正常情况下,两端的传输速率硬相同,但仍有可能出现两端速率不一致的情况。
查看方式
使用ethtool查看网卡配置状态:
ethtool ens5f0
黄色框中为传输速率,红色框为是否开启自动协商。
解决方案
- 重新自协商:
ethtool -r ens5f0;
- 如果上游不支持自协商,可以强制设置端口速率:
ethtool -s ens5f0 speed 1000 duplex full autoneg off
3. 网卡流控丢包
查看方式
1) 查看流控统计:
ethtool -S ens5f0 | grep control
rx_flow_control_xon是在网卡的RX Buffer满或其他网卡内部的资源受限时,给交换机端口发送的开启流控的pause帧计数。对应的,tx_flow_control_xoff是在资源可用之后发送的关闭流控的pause帧计数。
2) 查看网络流控配置:
ethtool -a ens5f0
解决方案
关闭网卡流控
ethtool -A ethx autoneg off //自协商关闭
ethtool -A ethx tx off //发送模块关闭
ethtool -A ethx rx off //接收模块关闭
4. CRC校验错误
查看方式
查看crc校验统计:
ethtool -S ens5f0 | grep crc_errors
解决方案
一般试着重新插拔一下网线,或者换一根网线,排查插口是否符合端口规格等。
5. 报文长度丢包
网卡有接收正确报文长度范围,一般正常以太网报文长度范围:64-1518,发送端正常情况会填充或者分片来适配,偶尔会发生一些异常情况导致发送报文不正常丢包。
查看方式
ethtool -S ens5f0|grep length_errors
解决方案
1 调整接口MTU配置,是否开启支持以太网巨帧;
2 发送端开启PATH MTU进行合理分片;
Linux网卡丢包分类整理(1)——网卡篇相关推荐
- centos 7 局域网丢包排查_ethtool原理介绍和解决网卡丢包排查思路
前言 之前记录过处理因为LVS网卡流量负载过高导致软中断发生丢包的问题,RPS和RFS网卡多队列性能调优实践,对一般人来说压力不大的情况下其实碰见的概率并不高.这次想分享的话题是比较常见服务器网卡丢包 ...
- ethtool 原理介绍和解决网卡丢包排查思路(附ethtool源码下载)
Table of Contents 1. 了解接收数据包的流程 将网卡收到的数据包转移到主机内存(NIC 与驱动交互) 通知系统内核处理(驱动与 Linux 内核交互) 2. ifconfig 解释 ...
- DHCP的工作原理 公网IP与私网IP 网络通信的流程与数据包发送 网卡的工作原理 网卡丢包问题
网络通信的四个要素 本机的IP地址 子网掩码 网关的IP地址 DNS服务器的IP地址 获取以上配置,有两种方式 : 静态获取==>手动配置 动态获取==>dhcp自动获取 DHCP的作用 ...
- linux编译安装网卡驱动详解(网卡丢包)
安装编译网卡驱动 这两天发现一台server丢包很严重,使用cacti监控工具时能获得snmp包,时常又不能,丢包严重,导致使用ssh工具连接过慢,连接数据库访问超时,此时要先确定是中病毒还是网卡问题 ...
- linux 无线网卡 延时 丢包 模拟,Linux模拟网络丢包与延迟的方法
netem 与 tc: netem 是 linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等 ...
- linux内核丢包分析工具,Linux模拟网络丢包与延迟的方法
netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等 ...
- linux网络丢包测试工具,用NETEM模拟网络丢包 (转)
[linux] tc netem 模拟网络丢包linux下的tc可以操纵网络,比如分配带宽给不同的应用.模拟网络时延.模拟糟糕网络环境下的丢包等. 但在实际使用模拟丢包时,我们 发现了问题:两台服务器 ...
- linux tcp 丢包命令_在Linux下实现测试TCP和UDP的丢包检测!
在Linux下实现测试TCP和UDP的丢包检测! 疯狂の猿猴 • 2020 年 12 月 11 日 前言 本人平时基本上都是win,一下子转战到linux,有点不习惯! 因此做个记录,便于以后自己查阅 ...
- Linux 模拟网络丢包和延迟命令
在Ubuntu上使用 tc 和 netem命令组合模拟客户环境网络波动情况测试,如丢包和延迟, 1. 延迟设置 //延迟 300ms ± 100ms sudo tc qdisc add dev eth ...
最新文章
- Vs2015 mysql ef_VS2015 +EF6 连接MYSQL数据库生成实体
- 课堂练习之谁是水王(一)
- 关于HTTPS的七个误解
- android怎么刷新活动,Android 如何刷新当前activity的显示数据?
- multipartfile 获取音频时长_QQ音乐移动端加入倍速播放,蓄力长音频发展 | 产品观察...
- [POI2004]GRA
- BZOJ 4043 [HAOI2015]树上操作 dfs序 线段树
- Android对话框总结(普通对话框,单选对话框,多选对话框,自定义对话框)
- python aks_使用环回aks和terraform构建基于打字稿的游戏后端
- Unity3D游戏高性能战争迷雾系统实现
- 6月书讯 | 初夏,正好读新书
- html段前段间距设置,Word里标题段前距设置不管用,段后管用
- python中去除全角空格
- 2018我的博客历程:你带来微笑,我有幸得到
- 【二分查找】详细图解
- HQChart使用教程89-最后一根k线倒计时功能
- 金半接触-肖特基接触(Schottky contact)-欧姆接触(Ohmic contact)
- xp系统一直跳出宽带连接服务器,电脑开机后会自动弹出自动宽带连接提示窗口 怎么关闭?...
- UIScrollView 平滑划动处理
- 一个月学通Python(九):Python文件及异常处理
热门文章
- 回文日期 php,c语言程序实例大全,220个详细程序源代码
- 【看表情包学Linux】环境安装 | 安装XShell | 基本的账号管理
- 横扫13项中文NLP记录,中文字型深度学习模型Glyce问世!
- python函数调用关系分析
- HTML中让整个效果居中,仅使用CSS做到完全居中的超级攻略
- Vue 移动端 hash模式下微信授权登录
- 小福利,带你快速入门sumifs多条件求和函数、设置下拉菜单结合vlookup函数双条件查找数据、excel的切片器(表关联)、数据透视表、数据透视图
- Scrapy爬取贝壳网并存入csv
- 2020年黑龙江省大豆种植分布数据
- 软键盘实例 request参数修改