我们有一个非常复杂的网络引导环境来保持我们的成像网络的流量分离,该网络每小时处理数百台机器。
我们使用 WDS 服务器选择菜单调整 ( http://www.stephan-schwarz.net/?p=58 ) 允许多个 PXE 服务器作为手动负载平衡解决方案。
在此过程中,我发现非 UEFI 机器的来源上限为 20 个,UEFI 机器的来源上限为 16 个(我在 Technet 上发布了关于此问题的信息,并且对 BIOS 上限感到满意)
从那以后,我发现 MDT 能够定义具有未知限制的服务器源列表,因此一旦启动到 MDT 映像中,这就是一个负载平衡解决方案。
但是,我很少看到无法理解的 PXE 问题。
当我进入 WDS 服务器选择菜单时,我看到所有 16 台服务器作为 IP [服务器名称(无域)],由首先回答的服务器提供。策略是选择一个特定的服务器(从 1 到 16)。发生以下三种情况之一:
1- 加载有问题的服务器(服务器 01 加载了 WDS 服务器选择菜单,选择了服务器 05 并从中启动)。这发生在 90% 的时间。
2-加载原始源服务器而不是所选服务器。这种情况很少发生,但也可能被服务器数据几乎总是相同的事实所掩盖(直到现在)
3-机器尝试加载任意IP,它可以是任何东西——包括公共IP。重新启动并再次尝试可能会一遍又一遍地导致不同的 IP。有时IP是一样的。例如,我从 Wireshark 中的一台机器捕获了数据包流量,我看到正常的 PXE 流量,直到有问题的设备发出 DHCP 请求,请求一个奇怪的目标 IP,如 8.128.0.0
现在,如果我让机器通过网络引导随机选择引导服务器,这一切都不会发生。我觉得(尽管还没有测试到令人难以置信的数量)如果所需的服务器位于 UEFI 中的前 8 个中(至少在有问题的设备上,UEFI WDS Server Select 显示了一些设备,然后你需要滚动)。
这背后有什么理由吗?我在https://www.dropbox.com/s/qwsnvgda1lhxbcx/pcap_wds_ip_weirdness.pcapng?dl=0有一个 2MB 的 pcap 文件,其中包含从新启动到请求的错误 IP 的流量。建议的过滤器是 eth.src == d4:c9:ef:f8:e4:db || eth.dst == d4:c9:ef:f8:e4:db
环境主要是 HP - ProCurve 2530G 和(很少)启用 IGMP 和 STP 的 2510G 交换机,ESXi 集群上的 Windows Server 2012 R2 服务器,主要是 HP Elitebook 810 G2 设备。
我很欣赏任何见解。
当 PXE 客户端启动时,它会从 N 个 DHCP/WDS 服务器接收 N 个 PXE 提供。他们都提供wdsnbp(或wdsmgfw.efi)作为 NBP;最终一个提议被接受,NBP 被 TFTP 传输并启动。现在,NBP 开始一个新的 PXE DCHP“请求”,但这次它保存“所有”收到的 DHCP ACK,并呈现一个包含所有这些的菜单。这第二次 WDS 服务器将提供文件bootmgr(或bootmgfw.efi)作为新的 NBP。您的wireshark 正好显示了这一点。
不同的限制(20/16)并不是您想象的 BIOS/UEFI 上限;这只是第一个 NBP 施加的限制。
流量捕获还显示来自一个 DHCP 服务器的报价,但不提供第二个 NBP,然后我认为您的设置中要么有一个普通 DHCP(未启用 PXE),要么有一个配置错误的 WDS 服务器,但这“不应该”是你的问题的原因。
你所描述的看起来像一个有问题的 WDSNBP(或 wdsmgfw.efi)。为什么这如此不稳定且难以调试?好吧,第一个 NBP 是从所有报价中随机选择的,那么您可能会在每次尝试时启动它的不同版本。您应该验证它们都是完全相同的版本;您可能会发现有时会启动旧的错误版本,这会成为问题的根源。PC 提供的强制从自己的 IP 启动的 NBP 是第一个可疑的。