跳转至

驱动程序测试:基本 DHCP

测试原理

通过 DHCP 获取 IPv4 地址可能是最简单的完整收发数据路径测试。因此,应在进行任何更复杂的数据路径测试之前先尝试此测试。

A network card

测试步骤

  1. 开始之前,确保系统电源已关闭,并且网线已连接到提供 DHCP 服务器的网络。
  2. 开机并引导到 iPXE 命令行。
  3. 使用 ifstat 确定你的网络接口名称(下文假定为 net0)。
  4. 使用 dhcp net0 打开接口并发起 DHCP 请求。
  5. 验证 dhcp 命令无错误完成。
  6. 使用 route 验证分配的 IPv4 地址在预期范围内。

故障排除

排查此测试最简单的方法通常是结合使用 DEBUG 构建选项、ifstat 显示的错误计数器,以及在 DHCP 服务器上进行数据包捕获

首先验证 DHCP 请求被完整发出;在发送数据路径按预期工作之前,尝试调试接收数据路径(通常更复杂)是没有意义的。

一旦确认发送正常(通过能够在线路上观察到你的 DHCP 请求和服务器的 DHCP 响应来验证),再检查 ifstat 报告的接收错误(RXE)。特别要注意 http://ipxe.org/3c086003 之类的错误,它可能表明你的驱动程序接收到的是空数据或垃圾数据。你可能需要在驱动程序中开始转储接收到的数据包内容,例如使用如下代码:

  // temporary hack - dump content of received packet
  DBGC_HDA ( netdev, 0, iobuf->data, iob_len ( iobuf ) );

检查你的驱动程序是否确实使用 iob_put() 填入了接收数据包的长度;如果没有,iPXE 会把所有接收到的数据包视为长度为零。