英特尔 82579LM Gbit 以太网控制器 - ping 后立即执行魔术包 (WOL) 不起作用

英特尔 82579LM Gbit 以太网控制器 - ping 后立即执行魔术包 (WOL) 不起作用

在 ping 英特尔 82579LM 千兆以太网控制器(英特尔® ...英特尔 DQ67SW 主板)。

因此基本上如果我发送一个 icmp 回显请求并在发送魔术包之前等待时间 dt,我将会遇到以下情况:

dt < 1 秒:计算机不会因魔术包而唤醒

dt >= 1 秒:计算机按预期通过魔术包唤醒

这个脚本是我所谈论的场景的最小实现:

#!/bin/sh
ping -q -c 1 -W 1 $1
sleep $3
wakeonlan -p 7 $2 # Could be wakeonlan or etherwake or similar

然后脚本将会像“wake.sh ip mac dt”一样被调用:

Jonas@whatever:~$ ./wake.sh 10.0.1.147 00:22:4D:82:28:30 1.2
PING 10.0.1.147 (10.0.1.147) 56(84) bytes of data.

--- 10.0.1.147 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Sending magic packet to 255.255.255.255:7 with 00:22:4D:82:28:30

问题还有另一个转折点。无论 dt 的值是多少(dt = 0、0.5s、2s),如果脚本连续调用两次,调用之间的时间间隔为 dt',计算机就会被唤醒。导致计算机被唤醒的这个 dt' 值为 20-40 秒。

它非常可重复。我尝试使用两个不同的设备来运行唤醒脚本,使用不同的局域网唤醒实用程序(局域网唤醒和 etherwake),结果相同。我还使用 tcpdump 查看了魔术包。无论 ping 请求是否先发出,它们的格式都很好。

我是否忽略了这里显而易见的东西?这似乎是以太网控制器中不太可能出现的缺陷,icmp 请求会“阻止”后续的魔术包。

在我与英特尔交谈之前,如果能就此事发表任何想法(进行额外的测试等等),我将非常感激。

乔纳斯

答案1

我们在 Windows 7 上较新的英特尔卡上也遇到过类似的 WoL 问题。该问题是由省电驱动程序功能引起的:PME 和 EEE

使用 Intel NIC 驱动程序时,Windows 7 会Power Management Event在关机时禁用 PME(),从而导致 WoL 无法使用。为 NIC 启用 PME(Advanced在 中的 NIC 设备设置选项卡中执行此操作Device Manager)将允许 WoL 运行。

第二个功能实现了节能以太网如果工作站长时间处于开机状态但处于闲置状态,则标准会导致 WoL 不可靠。这可能是由于 EEE 与其他网络硬件的兼容性较弱。

解决方案是禁用 EEE 并为注册表中具有此设置的所有 NIC 启用 PME。这是我们用来实现此目的的 PowerShell 脚本:

$regkey = 'HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}'

if (Test-Path $regkey)
{
    Get-ChildItem $regkey -ErrorAction SilentlyContinue |% { 
        if ($_.GetValueNames() -contains 'EnablePME')
        {
            Write-Host "PME value found in $_"
            [Microsoft.Win32.Registry]::SetValue($_, 'EnablePME','1')
        }
    }

    Get-ChildItem $regkey -ErrorAction SilentlyContinue |% {
        if ($_.GetValueNames() -contains 'EEELinkAdvertisement')
        {
            Write-Host "EEELinkAdvertisement value found in $_"
            [Microsoft.Win32.Registry]::SetValue($_, 'EEELinkAdvertisement', '0')
        }
    }
}

使用的 GUID$regkey描述这里。请注意,修改此注册表项中的设置是危险的,因为在最坏的情况下,它可能使您的 NIC 无法使用。

答案2

我想我已经回答了我自己的问题(至少是部分回答)。

尝试使用 Linux 作为操作系统(通过 Live CD)解决了这个问题。我无法复制问题中描述的行为。

所以我认为这是 Windows 的问题。但是我重新启动 Windows 以查看是否仍可以复制该行为 - 但我做不到。所以我现在猜测这是操作系统问题,而不是以太网控制器问题。在测试时(我最初的问题的结果),机器已经运行了几个月而没有重新启动,Windows 可能已经开始表现异常。

相关内容