[wplug] PXE Netboot

Tom Rhodes trhodes at FreeBSD.org
Tue Dec 1 09:20:25 EST 2009


On Fri, 05 Dec 2008 07:44:51 -0500
"Brian A. Seklecki" <bseklecki at collaborativefusion.com> wrote:

> On Sun, 2008-11-02 at 17:16 -0500, Roland Hess wrote:
> > For a personal project, I'm trying to learn netbooting via PXE (using 
> > DHCP on the server side, not BOOTP). My eventual goal is to be able to 
> > netboot machines into a live (non-HD installed) Ubuntu server 
> 
> It takes about a 5 minutes to setup on FreeBSD, less on NetBSD where the
> bootloader isn't insane.
> 
> You flick on TFTP daemon, DHCP, and NFS server.
> 
> Hardware gets a DHCP address lease; Lease tells it where to TFTP its
> stage 1 & stage 2 x86 boot loader.  PXE code on the NIC TFTPs it down
> and hands it to the BIOS for boot.
> 
> Stage 1 loader has sufficient NFS capabilities to mount the root file
> system and load the kernel.
> 
> After that, you've got the 30-year old debate on how to split a POSIX
> file system across network and local resources.

Not that it splits across the network and local resources, but
I'd like to try this with ZFS should the NFS support mature a
bit more.

> 
> I recommend killing yourself and/or avoiding UDP NFS on gigabit
> Ethernet.

This is a good idea, UDP NFS on GigE has a higher risk of data
corruption IIRC.  From the RFC:

   The side effects caused by performing a duplicate
   non-idempotent request can be destructive (for example, a
   truncate operation causing lost writes). The combination of a
   stateless design with the common choice of an unreliable
   network transport (UDP) implies the possibility of
   destructive replays of non-idempotent requests. Though to be
   more accurate, it is the inherent stateless design of the NFS
   version 3 protocol on top of an unreliable RPC mechanism that
   yields the possibility of destructive replays of
   non-idempotent requests, since even in an implementation of
   the NFS version 3 protocol over a reliable
   connection-oriented transport, a connection break with
   automatic reestablishment requires duplicate request
   processing (the client will retransmit the request, and the
   server needs to deal with a potential duplicate
   non-idempotent request).

In plain English: with higher data rates, the odds of a dropped packet
has a higher chance of silent data corruption.  NFSv3 is stateless,
thus, it doesn't perform its own checking of command order etc,
so layering it on top of an unreliable transport == bad idea

NFSv4 doesn't allow layering on UDP at all :)

-- 
Tom Rhodes


More information about the wplug mailing list