学习了一下 PXE,有时间搭建一个 PXE 服务器玩玩,以下仅为我的理解

关于 PXE

PXE 是一种系统引导方式,由 Intel 提出(文末有 PDF 文档下载)。PXE 的客户端已经内置在网卡中,服务端需要搭建(需要保证搭建网络环境安全,PXE 服务是不安全的),一般用于企业大量机器的系统安装

BIOS 启动选项中经常见到的 通过网络 (IPv4、IPv6) 启动就是 PXE 服务

PXE 服务端的搭建需要 DHCP(或 proxyDHCP,详见后文) 和 TFTP 服务,其中

  • DHCP 服务用来分配 IP 地址并发放 PXE 的 TFTP 地址等信息
  • TFTP 服务向客户端传输文件(引导文件、安装文件等)

也就是说在 PXE 中,一般启动方式中的从存储介质(U盘、硬盘)读取文件改为从远程服务器下载——省去了装系统时一个个拔插U盘的动作,在给大量机器装系统的场景下更高效

PXE 的启动过程

  1. 客户端(PC 网卡)向网络广播包含了 PXE 标签(表示要从网络启动,区分于一般的DHCP请求)的扩展 DHCP 包
  2. DHCP服务捕获到这些包,向客户端发送 IP 地址信息
  3. 客户端再向 DHCP 服务器请求 TFTP 服务器地址
  4. DHCP 服务器返回 TFTP 服务器地址
  5. 客户端再向 DHCP 服务器请求 TFTP 服务器中启动镜像的路径(包含文件名称)
  6. DHCP 服务器返回启动镜像的路径
  7. 客户端连接 TFTP 服务器,请求启动镜像
  8. TFTP 服务器发送启动镜像,客户端将启动镜像下载到内存中

之后的启动过程与 PXE 无关,可见 PXE 只负责系统引导部分

关于 proxyDHCP

proxyDHCP 是为非 PXE 的 DHCP 环境提供 PXE 服务的软件

非八股文版本:上文提到的 DHCP 服务默认包含了 PXE,而在家庭网络中,DHCP服务一般内置在路由器(或网络运营商送的带路由功能的光猫)中,这些设备的 DHCP 服务一般是不支持 PXE 的,这时就可以在网络中专门用一个电脑搭建 PXE 服务,来接管网络中的 PXE 请求

proxyDHCP 的启动过程:

与上文相同,只是拆分了 IP 分配和 TFTP 信息获取——DHCP 负责 IP 分配,proxyDHCP 负责返回 TFTP 信息

文档下载

Intel 的 PXE PDF 文档:pxe spec

现在很多中高端电脑主板已经配备了 2.5G 以太网口,为了利用 z490 unify 和 AX86U 上的 2.5G 网口,一个月前将家里网络升级到了 2.5G 真实的加钱加到九万八

下面是升级的踩坑经验

2.5G 交换机选购

自带多个 2.5G 网口的路由器很少且昂贵,所以需要购买 2.5G 网口的交换机,现在市面上电口 2.5G 交换机就那么几款,价格亲民的也就一款 TP-LINK 的 5/8 口交换机

NAS 10G 光转电模块

为了 2.5G 网络,把原来蜗牛星际搭的黑群晖换成了 QNAP TS-532X,同样也是追求便宜的选择,虽然是 ARM 处理器,但是本人对 NAS 虚拟化的要求也不高

532X 自带两个 10G 光口,需要光转电模块才可以接交换机,个人购置的是鸿章 10G 光转电模块,此模块分为 Marvell 方案和 Aquantia 方案,这两个方案又分全速率(10G/5G/2.5G/1G)自适应和仅 10G 两个版本

据卖家描述,Aquantia 方案对瑞昱网卡、532X 的支持最好,z490 unify、TP-LINK 正好是瑞昱网卡,所以最后选择了 Aquantia 的全速率光转电模块

到手后即插即用,与 TS – 532X 没有任何兼容性问题,温度也没有想象中那么高,没有交换机发热量大

另:532X 的两个以太网口可以进行链路聚合,可以当做 2G 网络使用

关于巨型帧

首先巨型帧是以太网标准,无线网络是没有巨型帧标准的(至少现在没有,未来说不定会加入)

想要使用巨型帧,必须在网络的每个节点都开启巨型帧,例如:

从 PC 到 NAS,中间经过 AP 和 交换机,则 PC、NAS 的以太网卡、AP 和交换机都要开启巨型帧

Windows 操作系统下开启巨型帧

需要安装对应的网卡驱动,Windows 自动安装的驱动可能不支持开启巨型帧

安装驱动后右键 此电脑,进入 管理 – 设备管理器,右键以太网卡进入 属性,然后在 高级 标签页内找到巨型帧开启

z490 unify 的网卡可以支持 16000 大小的巨型帧

巨型帧带来的问题

2021.05.16 更新:以下内容没有经过严格测试,全凭感觉,酌情阅读

前面说过无线网络 802.11 标准是没有巨型帧的,最大 MTU 为 2304,所以如果开启巨型帧,所有使用无线网络的设备会有不小的性能损失

对我来说最直观的性能损失就是观看 NAS 中视频时的频繁卡顿,手机、笔记本观看视频(1080p h.264 mkv)每隔 3-5秒就要卡顿一次,根本无法正常观看

2021.05.16 更新:下述笔记本掉速的问题可能是因为连接了 Mesh 子节点,切换到 Mesh 主节点后恢复正常速度,是否是巨型帧导致的还有待观察

对于文件传输,开启巨型帧也没有太大的提升,反而使用无线网的笔记本会大幅掉速:原来读取垃圾机械盘可以跑到 60MB/s ,开启巨型帧后读取 SSD 只能到 20+MB/s

以上问题在关闭巨型帧后得到解决,笔记本无线读取 SSD 最终稳定在 90MB/s

关掉巨型帧后,z490 的 2.5G 口也没有发生严重掉速:开启巨型帧时传输速度 295MB/s,关闭后也有 280-290MB/s 的速度

最终结论

在家庭 2.5G 网络的场景下,巨型帧对传输速度的提升并不大(感知不强),反而会对无线设备造成很大的影响(徒增功耗),所以不建议开启

感知最大的提升 NAS 传输速度的方法还是增加 SSD 缓存,解决机械硬盘速度瓶颈,让硬盘先跑满网络速度