资讯详情

资讯详情

Windows Server 2016网卡驱动离线安装、调优与排错实战

简介面向 Windows Server 2016 系统部署与运维场景的 Intel 网卡驱动合集主要解决服务器重装系统后 I217、I218、I219 系列网卡识别异常、驱动缺失或版本不匹配等问题适合系统管理员、装机维护人员及需要搭建稳定有线网络环境的用户参考使用。压缩包共 110 个文件约 29.02MB包含 54 个 htm 说明页面、21 个 gif 与 13 个 png 图示、13 个 css 样式文件以及 3 个 pdf、3 个 txt 文档和 1 个 exe 安装程序等兼顾驱动安装、型号对照与操作说明查阅。已有 7935 人学习下载说明该版本在同类驱动资源中具有一定参考价值。内容覆盖 Intel Ethernet Connection I217-LM、I217-V、I218-LM、I218-V、I219-LM、I219-V 等型号可帮助读者按硬件型号定位对应驱动借助文档与图示完成安装前核对、版本确认和常见网卡问题排查减少反复试装驱动的时间。1. 装完系统只剩一个感叹号windows server 2016 网卡驱动为什么总在第一步翻车机房里的那台机器系统装完、账号建好、重启然后设备管理器里只剩一个带黄色感叹号的「以太网控制器」网络图标挂着红叉手边只有一台笔记本和一根网线。这种场面我遇到过不止一次问题几乎都出在 windows server 2016 网卡驱动上。Server 2016 的内核是 10.0.14393和 Windows 10 1607 同代这个细节决定了它既吃一部分 Win10 驱动又不是全都吃——装错版本的后果轻则掉速、Team 建不起来重则 ndis.sys 蓝屏重启循环。这一篇写的就是这台机器从「没有网」到「跑满带宽」的完整过程适合第一次给物理服务器装驱动的人也适合做批量部署、需要把驱动注入镜像的人。2. 装前摸底网卡芯片型号、驱动包来源与 Server 2016 的匹配关系驱动这件事最大的浪费不是装错是装之前没搞清楚插的是哪块芯片。同一个厂商的千兆卡和万兆卡驱动包完全不是一个东西同一块芯片的 OEM 定制版和零售版INF 里的设备 ID 也可能对不上。所以在下载之前先把机器的底层信息固定下来后面所有选择都以此为准。2.1 三步锁定芯片设备管理器、PCI ID 与 Get-NetAdapter第一步永远是从设备管理器读硬件 ID这是最不会骗人的信息。展开「其他设备」或「网络适配器」右键属性 → 详细信息 → 硬件 ID会看到一行形如PCI\VEN_8086DEV_1533SUBSYS_...的字符串。VEN_8086是厂商编号DEV_xxxx才是具体芯片型号后面那串 SUBSYS 是板卡厂商自己的子系统号某些定制卡在装通用驱动时会因为这个号不匹配而拒绝加载。如果机器已经能进系统但网络不通用 PowerShell 批量读比一个个点属性快得多# 列出所有网络类设备包含状态异常的黄色感叹号会显示 Error Get-PnpDevice -Class Net | Select-Object Status, Class, FriendlyName, InstanceId | Format-Table -AutoSize # 读取网卡的 PCI 位置、总线号和硬件 ID多网卡机器靠这个区分槽位 Get-NetAdapterHardwareInfo | Select-Object Name, Bus, Device, Function, NumaNode | Format-Table -AutoSize # 已经在位的网卡看清楚当前用的是哪个驱动版本、哪个 INF 文件 Get-NetAdapter | Select-Object Name, InterfaceDescription, DriverVersion, DriverDate, DriverProvider | Format-Table -AutoSizeGet-PnpDevice列出来的是 PnP 层面的设备状态Error对应设备管理器里的黄色感叹号Unknown一般对应「其他设备」下没装驱动的裸设备。Get-NetAdapter只有驱动加载成功、网卡已经被协议栈接管之后才会有条目所以当它一条都返回不了的时候别怀疑命令直接回设备管理器看硬件 ID。拿到 DEV 号之后对一下芯片型号常见服务器网卡的对应关系大致是这样PCI 设备 ID常见芯片典型端口Server 2016 自带驱动VEN_8086DEV_1533I210 系列千兆单口/双口有但功能被裁剪VEN_8086DEV_1521I350 系列千兆双口/四口有基础收发可用VEN_8086DEV_10D382574L千兆单口多数情况下自带VEN_8086DEV_10FB82599ES万兆 SFP有SR-IOV 需另装VEN_8086DEV_1572X710 系列万兆 SFP早期版本不自带这张表只用来做初步判断实际以你机器上读出来的 DEV 号为准。同一系列里子型号很多DEV 差一位就是另一颗芯片遇到表里没有的直接拿 DEV 号去搜索比猜型号靠谱。2.2 三种驱动来源怎么选inbox、厂商包、客户端改版确定芯片之后接下来要决定装哪一份。市面上能拿到的基本是三类取舍逻辑完全不一样。系统内置的 inbox 驱动微软随镜像打包的版本最大的好处是稳签名完整、和 14393 的 NDIS 版本严格对齐、不需要额外操作。但它是阉割版设备管理器里能看到的可调参数很少VLAN、网卡团队、SR-IOV、虚拟机队列这些服务器上真正要用的功能基本都没有暴露出来。如果这台机器只是当个文件服务器、跑跑基础业务inbox 驱动其实够用先把网弄通比什么都重要。厂商针对 Server 2016 单独发布的驱动包是绝大多数生产环境的选择。它的 INF 里明确写了 14393 的目标系统安装包通常还附带 ProSet 这类配置工具能把巨帧、RSS、VLAN、链路聚合全打开。这类包一般会标注支持的系统列表下载页面上写没写 Server 2016是判断能不能用的第一道门槛。第三类是拿 Windows 10 客户端驱动顶上去这是最容易翻车的一条路。Server 2016 和 Win10 1607 同代一部分驱动确实能装、能跑但这属于「能跑」而不是「被支持」客户端驱动往往针对电源管理做了激进优化服务器上长时间高负载跑就可能出现链路重置还有些包把安装程序写死成只允许客户端系统强行解包装 INF 之后功能是残缺的。我的取舍习惯是能拿到原生 WS2016 包就绝不混用实在拿不到再用 Win10 1607 同代版本过渡装完必须做一轮长时间压测。2.3 离线环境要备齐的东西介质、解包工具与回滚点服务器装驱动十有八九是断网状态准备工作要在还能上网的那台机器上做完。驱动包别放 U 盘直接运行。U 盘在装驱动过程中被拔掉、或者盘符在重启后变化都会让安装到一半的 INF 找不到源文件最后留下一个半残的设备条目清理起来很麻烦。正确做法是把驱动包整个拷到本地磁盘比如D:\drivers\ws2016\再解压。解包工具至少备一个能打开自解压 exe 的7-Zip 就够。另外准备一份当前的驱动备份出问题时能一键退回去# 导出当前系统里所有第三方驱动到备份目录出问题可以按 INF 名装回来 Export-WindowsDriver -Online -Destination D:\driver-backup # 顺手记一份当前网卡的完整状态方便装完做对比 Get-NetAdapter | Export-Csv D:\driver-backup\nic-before.csv -NoTypeInformation -Encoding UTF8Export-WindowsDriver会把在线系统的第三方驱动连同 INF、SYS、CAT 一起导出导出的目录结构可以直接用pnputil再装回去等于给自己留了一颗后悔药。Get-NetAdapter导出的 CSV 记录的是驱动版本和日期装完之后重跑一次同样的命令做对比比凭记忆判断「好像变了」可靠得多。还有一件事容易被忘掉把 Windows Update 的自动驱动更新关掉。Server 2016 默认会在后台从更新源拉驱动你刚装好的厂商版本可能过两天就被替换成一个日期更新的通用版本功能参数全丢。# 通过注册表关闭质量更新里的驱动推送避免厂商驱动被偷偷替换 $path HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate if (-not (Test-Path $path)) { New-Item -Path $path -Force | Out-Null } New-ItemProperty -Path $path -Name ExcludeWUDriversInQualityUpdate -PropertyType DWord -Value 1 -Force这个键值的作用是让 Windows Update 在推送质量更新时跳过驱动类内容改完之后建议重启一次让策略生效。生产环境里这条基本是标配尤其是在你已经验证过某个驱动版本稳定之后任何后台替换都是风险。3. 离线安装实操把厂商 exe 拆成 inf 装进 Server 2016准备工作做完接下来是真正的安装环节。厂商给的通常是一个几百兆的 exe直接双击运行在 Server 2016 上经常会弹「此应用无法在此设备上运行」或者装到一半提示系统不支持。绕过这个限制的办法不是去改兼容性而是把 exe 拆开手工装 INF。3.1 解包从自解压 exe 到 .inf/.sys/.cat 三件套厂商的驱动 exe 封装方式主要有三种自解压压缩包、InstallShield 安装器、以及带命令行参数的可执行安装程序。前两种都能用解包工具打开第三种需要让它先跑到临时目录再抓文件。最简单的判断方法是用 7-Zip 右键点开 exe如果能列出内部文件结构直接解压到D:\drivers\ws2016\即可。如果打不开就把 exe 运行起来在它弹出欢迎界面的时候去%TEMP%目录下找最新创建的文件夹里面通常就是解压出来的原始驱动文件整个拷走。解压完要确认的是三件套是否齐全.inf安装信息、.sys驱动本体、.cat数字签名。三者缺一不可缺 cat 文件在 Server 2016 上会直接报签名错误。同时打开 INF 看一眼开头的DriverVer# 查看 INF 里声明的驱动版本和日期日期太老说明拿到的是旧包 Select-String -Path D:\drivers\ws2016\*.inf -Pattern ^DriverVer | Select-Object Filename, Line # 验证 CAT 签名是否有效这一步能过滤掉大部分被篡改或压缩损坏的包 Get-ChildItem D:\drivers\ws2016\*.cat | ForEach-Object { $sig Get-AuthenticodeSignature $_.FullName [PSCustomObject]{ File $_.Name; Status $sig.Status; Signer $sig.SignerCertificate.Subject } }DriverVer后面跟的是日期和版本号日期比系统镜像还老就要警惕可能是随旧硬件一起发过来的包。Get-AuthenticodeSignature的Status必须是Valid出现NotSigned或HashMismatch就不要往下走了这说明文件在传输或解压过程中损坏装上去大概率蓝屏。一个细节多语言驱动包里通常按语言分目录\Winx64\或\x64\下面是英文版其他目录是本地化版本。装哪个都行INF 里注册的服务名一样不要为了「装中文版」去挑一个结构不完整的目录。3.2 pnputil 与设备管理器两条安装路径Server 2016 自带的pnputil是命令行装驱动的核心工具比双击 INF 可靠得多因为它会把驱动真正注册进驱动仓库而不是临时加载。# 把 INF 加入驱动仓库并立即尝试安装到匹配的设备上 pnputil /add-driver D:\drivers\ws2016\e1d68x64.inf /install # 列出仓库里所有第三方驱动记下新装的那条的 oemXX.inf 编号 pnputil /enum-drivers # 如果设备处于未识别状态触发一次全系统设备扫描让它重新匹配 pnputil /scan-devices第一条命令里的/install是关键参数不加它只做入库不装到设备加上之后 pnputil 会遍历当前所有未匹配设备把符合 INF 中硬件 ID 的装上去。INF 文件名各家不同e1d68x64.inf只是千兆系列的常见命名实际用你解压出来的那个名字别照抄。后两条命令是配套的/enum-drivers用来确认驱动确实进了仓库输出里会显示Published Name: oemXX.inf这个编号在卸载时要用/scan-devices在 Server 201614393上是支持的用于设备状态没刷新、装完还是感叹号的情况。图形界面这条路也要会。设备管理器 → 右键带感叹号的设备 → 更新驱动程序 → 浏览计算机以查找驱动程序 → 从磁盘安装 → 选中解压出来的 INF。这个方法的好处是可以手动指定具体型号遇到 INF 里包含多个设备的包时能避免装错。坏处是它不会提示签名问题之外的其他错误失败时只给一句「找不到兼容的驱动程序」排查信息比 pnputil 少。两条路装完之后用同样一组命令复核# 确认网卡已被识别状态应为 Up 或 Disconnected不再是 Error Get-PnpDevice -Class Net | Select-Object Status, FriendlyName | Format-Table -AutoSize # 确认加载的是刚装的版本对比 DriverVersion 和备份的 CSV Get-NetAdapter | Select-Object Name, DriverVersion, DriverDate, LinkSpeed, Status | Format-Table -AutoSizeStatus显示Error说明驱动没匹配上回去看硬件 ID 和 INF 里的[Manufacturer]段是否一致显示OK但Get-NetAdapter没条目多半是 INF 里的服务没启动用sc query查一下对应的驱动服务名通常和 INF 里的 ServiceName 一致。3.3 Server Core 与批量部署DISM 挂载注入驱动没有图形界面的 Server Core 反而更省事因为整个流程都是命令。装完之后用sconfig配 IP 之前先把驱动塞进去# Server Core 下同样用 pnputil装完直接进 sconfig 配置网络 pnputil /add-driver D:\drivers\ws2016\*.inf /subdirs /install # 确认服务已启动服务名以 INF 中的 ServiceName 为准 Get-Service | Where-Object { $_.Name -like e1d* } | Select-Object Name, Status/subdirs参数让 pnputil 递归搜索子目录适合驱动包按架构或语言分了多层文件夹的情况省得一条条指定 INF。批量装机要走离线注入。用 DISM 把 install.wim 挂起来把驱动灌进去再提交# 挂载镜像的指定索引索引号用 Get-WindowsImage 查别默认填 1 Mount-WindowsImage -ImagePath D:\iso\sources\install.wim -Index 2 -Path C:\mount # 递归注入整个驱动目录DISM 会自动筛选与目标系统匹配的 INF Add-WindowsDriver -Path C:\mount -Driver D:\drivers\ws2016 -Recurse # 提交并卸载不加 -Save 会丢弃所有改动 Dismount-WindowsImage -Path C:\mount -Commit-Index 2对应的是镜像里第二个版本Server 2016 的 install.wim 通常包含 Standard 和 Datacenter 的多个索引索引填错等于把驱动注进了根本不会装的那个版本白忙一场。Add-WindowsDriver的-Recurse会遍历整个目录并逐个校验只要有一个 INF 与目标系统不匹配就会跳过并提示不会中断整个流程。还有一个容易漏的点如果走网络引导安装boot.wim里也需要网卡驱动否则进到安装界面之后拉不到镜像。处理方式和 install.wim 一样挂载boot.wim注入即可。4. 装完还得调RSS、巨帧、网卡团队与电源管理的参数取舍驱动装通只是「能通信」离「跑得好」还有一段距离。服务器网卡上有一堆默认关闭或者默认值不合适的参数生产环境里该开的不开性能可能只有标称的一半。4.1 ProSet 图形界面与 PowerShell 的对应关系厂商的 ProSet 工具在 Server 2016 上能装但它的定位是「看」而不是「配」。很多参数在 ProSet 里改了之后PowerShell 读出来还是旧值因为两者操作的不是同一层——ProSet 改的是驱动私有配置PowerShell 改的是 NDIS 标准关键字。生产环境我的做法是ProSet 只用来观察链路状态和光模块信息所有参数改动统一走 PowerShell这样脚本可复现、可回滚。先把所有可调参数列出来看看这张卡到底暴露了什么# 列出该网卡所有可调高级属性RegistryKeyword 是改参数时要用的键名 Get-NetAdapterAdvancedProperty -Name Ethernet | Select-Object DisplayName, RegistryKeyword, DisplayValue, ValidDisplayValues | Format-Table -AutoSize -WrapDisplayName是给人看的名字RegistryKeyword才是脚本里真正要填的参数名。ValidDisplayValues列出可选值比如巨帧会显示Disabled, 1514 Bytes, 4088 Bytes, 9014 Bytes这类枚举。改参数时用RegistryKeyword而不是DisplayName更稳因为显示名会随驱动语言版本变化键名不会。4.2 四个真正影响吞吐的参数与回滚方式RSS接收端缩放。默认在多核机器上是开的但队列数经常被设成 1等于没开。队列数设成物理核心数的一半左右比较合适全给满反而会因为中断集中在少数核心上导致抖动# 开启 RSS 并指定队列数和最大处理核心数队列数不要超过物理核心数 Set-NetAdapterRss -Name Ethernet -Enabled $true -NumberOfReceiveQueues 8 -MaxProcessors 8 # 确认生效输出的 Profile 应为 ClosestProcessor Get-NetAdapterRss -Name Ethernet | Select-Object Name, Enabled, NumberOfReceiveQueues, MaxProcessors如果这台机器是 Hyper-V 宿主机RSS 和 VMQ 会抢同一批核心需要把两者的核心范围错开或者干脆在宿主网卡上关掉 VMQ 只用 RSS具体看虚拟机的流量模型。巨帧。开启之后单帧从 1514 字节变成 9014 字节大包传输的 CPU 占用能降一大截但前提是全链路每一跳都开交换机端口、存储设备、对端服务器有一个没开就会出现「小包能通大包不通」的经典现象# 开启巨帧值必须和交换机、对端设备完全一致 Set-NetAdapterAdvancedProperty -Name Ethernet -RegistryKeyword *JumboPacket -RegistryValue 9014 # 同时把交换机的 MTU 也改掉Windows 侧用 ping 验证链路是否支持 ping 10.0.0.1 -f -l 8972-f是禁止分片-l 8972是载荷大小9014 减去各层头部。如果返回「需要拆分数据包但是设置 DF」说明链路上有设备不支持这个 MTU别硬上先把巨帧关掉。电源管理。服务器网卡被系统判定为空闲然后关掉是远程机器突然失联的常见原因之一# 关闭「允许计算机关闭此设备以节约电源」服务器上基本都要关 Set-NetAdapterPowerManagement -Name Ethernet -AllowComputerToTurnOffDevice Disabled # 同时把节能以太网和绿色以太网关掉避免链路反复协商 Set-NetAdapterAdvancedProperty -Name Ethernet -RegistryKeyword *EEE -RegistryValue 0网卡团队。这里有一个很多年都有人踩的坑Server 2016 上不要用厂商自带的老式团队工具微软从 2012 起就用 LBFO 接管了这件事2016 里更是明确不支持第三方团队驱动。正确做法是# 用 LBFO 建团队两台交换机做堆叠时用 SwitchIndependent Dynamic New-NetLbfoTeam -Name Team1 -TeamMembers Ethernet,Ethernet 2 -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic # 查看团队成员状态和整体吞吐 Get-NetLbfoTeam | Select-Object Name, Status, TeamingMode, LoadBalancingAlgorithm Get-NetLbfoTeamMember | Select-Object Name, OperationalStatus, AdministrativeModeSwitchIndependent表示不依赖交换机做端口聚合两块网卡接不同交换机也能工作代价是出向流量分摊、入向只走一条。Dynamic是 2016 上推荐的负载算法比老的AddressHash在单连接场景下表现好。改完一堆参数出问题要能一键退回去。Reset-NetAdapterAdvancedProperty把所有高级属性恢复默认比一个个改回来快# 全部恢复默认值执行后网卡会短暂断开重连 Reset-NetAdapterAdvancedProperty -Name Ethernet -NoRestart Restart-NetAdapter -Name Ethernet-NoRestart的作用是先批量改完再统一重启网卡避免每改一个参数断一次。5. 排错现场驱动装完不通的五类典型翻车这一节写的是我实际遇到过的几种情况按「现象 → 原因 → 解决」记录顺序大致按照从设备层到协议层。5.1 设备层识别不到、黄叹号与蓝屏现象一pnputil 提示安装成功设备管理器里还是黄色感叹号刷新也没用。原因通常是 INF 里的硬件 ID 和实际设备对不上最常见于 OEM 定制卡——板卡厂商改过 SUBSYS 号通用 INF 的[Manufacturer]段里没有这一条。也可能是驱动包本身只针对客户端系统编译虽然能强行入库但 INF 里声明的目标系统不包含 14393安装阶段就被过滤掉了。 解决办法是打开 INF 搜一下你的 DEV 号看有没有对应的%xxx.DeviceDesc%条目。没有的话去板卡厂商官网找定制驱动实在找不到可以临时改 INF 里的[Manufacturer]段加上你的硬件 ID但这会让 CAT 签名失效只能配合测试签名模式使用仅限临时验证不能上生产。现象二驱动装上之后重启蓝屏报 ndis.sys 或 0x000000D1。这是新旧驱动残留冲突的典型表现。之前装过的客户端版本没有干净卸载注册表里还留着旧的服务项两个版本同时挂在 NDIS 上一初始化就崩。也可能是拿到的驱动本身签名有问题。 进安全模式用pnputil /enum-drivers找出所有同厂商的 oemXX.inf逐个删除# 在安全模式下删除指定驱动包/uninstall 会同时从设备上卸载 pnputil /delete-driver oem12.inf /uninstall /force # 删完扫描一次让系统重新匹配正常情况会落回 inbox 驱动 pnputil /scan-devices/force参数用于驱动正在被引用、普通删除被拒绝的情况它会强制移除。删完之后重启系统会退回到 inbox 驱动网络先恢复再重新装干净的版本。现象三装好能用过几天自己变回旧版驱动参数全丢。Windows Update 在后台把厂商驱动替换掉了。原因就是没关驱动推送质量更新里夹带了日期更新的通用驱动。 按 2.3 里的注册表方法关掉推送然后把厂商驱动重新装一遍装完之后用Get-NetAdapter记录版本号隔天再查一次确认没被替换。还有一种情况是组策略下发了设备安装限制那就需要去计算机配置 → 管理模板 → 系统 → 设备安装 → 设备安装限制里看有没有对应的禁止规则。5.2 链路与协议层能识别却不通、速率掉档、团队失效现象四设备管理器一切正常网卡状态也是 Up但就是 ping 不通网关或者只能跑百兆。速率掉到 100Mbps 说明协商没成功常见原因是网线质量、光模块兼容性或者节能以太网在反复重协商。先看协商结果# 查看当前协商速率和双工模式以及链路两端的能力集 Get-NetAdapter -Name Ethernet | Select-Object Name, LinkSpeed, FullDuplex, MediaConnectionState如果LinkSpeed显示 100Mbps 而卡是千兆的先换线换模块再考虑在网卡上固定速率双工Set-NetAdapterAdvancedProperty -RegistryKeyword *SpeedDuplex -RegistryValue 6这类具体值看ValidDisplayValues。固定速率是排查手段不是长期方案长期固定会掩盖线路问题。ping 不通但链路 Up检查三件事IP 配置是不是被sconfig或 DHCP 覆盖了、VLAN ID 有没有配对、网卡绑定里有没有把 IPv4 关掉。最后一项用Get-NetAdapterBinding -Name Ethernet看ms_tcpip那行必须是 Enabled。现象五用厂商工具建了团队建完整个网络瘫掉或者只有一个成员在工作。Server 2016 不支持第三方团队驱动装了厂商的团队组件之后两个驱动会争抢同一块网卡的控制权表现就是链路反复 Up/Down 或者成员状态异常。解决方法是先卸掉厂商团队组件用Get-NetLbfoTeam确认没有残留团队再用New-NetLbfoTeam重建。重建之后如果只有一个成员OperationalStatus是 Active检查交换机侧的端口配置——SwitchIndependent模式下不需要交换机配置但如果之前配过 LACP要先把交换机侧改回普通接入模式。6. 收尾验证用 iperf3 和事件日志把「通」坐实驱动装完、参数调完最后一步不是点开浏览器看看能不能上网那只能证明「有网」证明不了「稳」。我给服务器做网卡验收固定跑三步状态核对、吞吐实测、日志回看。第一步是状态核对把所有关键指标一次性拉出来横向对比# 汇总验收指标输出到文件留档方便和下一批机器对比 $report Get-NetAdapter -Name Ethernet | Select-Object Name, InterfaceDescription, DriverVersion, DriverDate, LinkSpeed, FullDuplex, Status $report | Format-List # 统计收发错误、丢弃和中断次数这些计数器是判断链路质量最直接的证据 Get-NetAdapterStatistics -Name Ethernet | Select-Object Name, ReceivedBytes, SentBytes, ReceivedDiscardedPackets, OutboundDiscardedPackets # 查看硬件层面的 PCI 位置和 SR-IOV / VMQ 状态 Get-NetAdapterHardwareInfo -Name Ethernet | Select-Object Bus, Device, Function, NumaNode验收时重点看三个数ReceivedDiscardedPackets和OutboundDiscardedPackets应该是 0 或个位数持续增长说明缓冲区不够或者巨帧配置不一致LinkSpeed必须等于网卡标称速率DriverVersion必须和安装包里的DriverVer对得上。第二步跑吞吐。两台机器之间用 iperf3 对打跑够 60 秒同时观察 CPU 占用# 服务端启动监听客户端跑 60 秒 8 线程看是否能跑满链路 # 服务端 .\iperf3.exe -s -p 5201 # 客户端 .\iperf3.exe -c 10.0.0.2 -p 5201 -t 60 -P 8 -w 256K-P 8是多线程并发单线程跑不满万兆是正常现象必须多线程才能压出真实带宽。-w 256K把 TCP 窗口调大避免窗口太小成为瓶颈。千兆链路跑到 940Mbps 左右、万兆跑到 9.4Gbps 左右算是合格低于这个数先怀疑巨帧没对齐或者 RSS 没生效。第三步回看事件日志。驱动层的问题往往不会立刻表现成断网而是先在日志里堆一堆警告# 过滤最近两小时系统日志里的网络类警告和错误 Get-WinEvent -FilterHashtable {LogNameSystem; Level1,2,3; StartTime(Get-Date).AddHours(-2)} | Where-Object { $_.ProviderName -match e1|i40|netvsc|Tcpip|NDIS } | Select-Object TimeCreated, ProviderName, Id, Message | Format-Table -Wrap正常验收应该是零条。如果出现e1dexpress一类的链路重置日志说明物理层还在抖动出现Tcpip的 4227 或 4231多半是巨帧或者 TCP 参数不匹配。下面这张表是我验收时对照用的填完基本就能判断这台机器能不能交付检查项合格标准不合格时的第一处理动作驱动版本与安装包 DriverVer 一致重装并关闭 WU 驱动推送链路速率等于网卡标称换线换模块复查节能以太网iperf3 吞吐达到链路带宽的 90% 以上检查 RSS 队列数与巨帧一致性丢包计数0 或个位数且不增长检查交换机端口错误计数事件日志无网络类警告按 ProviderName 定位具体驱动模块从那以后我每次装完网卡驱动都会强制走一遍这三步验收哪怕客户催得再急也不跳过——因为跳过的那次通常就是半夜被叫起来处理掉线的那次。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →