3.3.2 网络唤醒(Wake-on LAN (WoL)), 节能, 幻数据包(Magic Packet)
在 Linux 和 Windows 的示例中,都能看到一些功耗管理的功能
在 Windows 中的 Wake-Up 功能和在 Linux 中的 Wake-On 选项
用于根据某些类型的数据包的到达,使网络接口和/或主机退出低功耗(睡眠)状态
可以配置用于触发向全功率状态切换的数据包类型
在 Linux 中,Wake-On 值为零位或多位,表示接收到以下类型的帧是否会触发从低功耗状态的唤醒:
- 任何物理层(physical-layer (PHY))活动 §
- 发往站点的单播(unicast)帧 (u)
- 组播(multicast)帧 (m)
- 广播(broadcast)帧 (b)
- ARP 帧 (a)
- 幻数据包(magic packet)帧 (g)
- 包含密码的幻数据包帧
可以使用 ethtool
的选项来配置这些数据包类型
Linux# ethtool -s eth0 wol umgb
此命令将 eth0
设备配置为在任何接收到对应于类型 u
、m
、g
或 b
的帧时,向系统发送唤醒(wake-up)信号
Windows 提供了类似的功能,但标准用户界面只允许配置幻数据包帧和 u
、m
、b
、a
帧类型的预定义子集
幻数据包包含一个字节值 0xFF
的特殊重复模式
通常,此类帧以封装在广播以太网帧中的 UDP 数据包(见第 10 章)的形式发送
有几种工具可以用来生成它们,包括 wol
[WOL]:
Linux# wol 00:08:74:93:C8:3C
Waking up 00:08:74:93:C8:3C...
该命令会构造一个幻数据包,我们可以使用 Wireshark 来查看它
图 3-7
Wireshark 中的幻数据包帧,以 6 个 0xFF
字节开始,然后重复 16 次 MAC 地址
图 3-7 所示的数据包大体上是一个常规的 UDP 数据包,尽管端口号(1126 和 40000)是任意的
数据包中最特别的部分是数据区域,包含一个初始的 6 字节,值为 0xFF
数据区的其余部分包括重复 16 次的目标 MAC 地址 00:08:74:93:C8:3C
这个数据有效载荷模式定义了幻数据包