From owner-freebsd-net Sat Oct 16 9:12:43 1999 Delivered-To: freebsd-net@freebsd.org Received: from duke.cs.duke.edu (duke.cs.duke.edu [152.3.140.1]) by hub.freebsd.org (Postfix) with ESMTP id 54B3614CCB; Sat, 16 Oct 1999 09:12:37 -0700 (PDT) (envelope-from gallatin@cs.duke.edu) Received: from grasshopper.cs.duke.edu (grasshopper.cs.duke.edu [152.3.145.30]) by duke.cs.duke.edu (8.9.1/8.9.1) with ESMTP id MAA14154; Sat, 16 Oct 1999 12:12:36 -0400 (EDT) Received: (from gallatin@localhost) by grasshopper.cs.duke.edu (8.9.3/8.9.1) id MAA69254; Sat, 16 Oct 1999 12:12:06 -0400 (EDT) (envelope-from gallatin@cs.duke.edu) From: Andrew Gallatin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Sat, 16 Oct 1999 12:12:06 -0400 (EDT) To: freebsd-alpha@freebsd.org Cc: freebsd-net@freebsd.org Subject: diskless booting: netboot loader problem X-Mailer: VM 6.43 under 20.4 "Emerald" XEmacs Lucid Message-ID: <14344.39286.675388.510743@grasshopper.cs.duke.edu> Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org I've been converting my net over from using bootp on a Digital UNIX server to using isc-dhcpd2. I'm having some trouble booting FreeBSD/alpha boxes because of what might be a bug in the netboot loader. (or it might just be my lack of experience w/dhcp, maybe somebody can tell me..). The problem seems to be that a DHCP server will reply to the netboot loader's DHCPDISCOVER by sending the reply to its fixed address, not broadcasting the reply. So the client never sees the reply. More details: My dhcpd.conf looks like this: deny unknown-clients ; allow bootp; subnet 152.3.XXX.0 netmask 255.255.255.0 { group { use-host-decl-names on ; # key to netbooting Digital Unix clients always-reply-rfc1048 on ; filename "/freebsd/diskless.alpha/boot/netboot"; option root-path "152.3.YYY.WWW:/freebsd/diskless.alpha/" ; host client { hardware ethernet 08:00:2b:86:6e:e0 ; fixed-address 152.3.YYY.XXX ; } } This works well for the initial load of the netboot loader from "/freebsd/diskless.alpha/boot/netboot" via the SRM console. I see a BOOTREQUEST from 08:00:2b:86:6e:e0 via fxp0 (non-rfc1048) BOOTREPLY for 152.3.YYY.XXX to client (08:00:2b:86:6e:e0) via fxp0 However, when the netboot loader is loaded, it tries to find out what its address is & where its root path, etc lies. It proceeds to send a DHPDISCOVER. The problem is that the dhcp server is sending a DHCPOFFER to 152.3.YYY.XXX, it is NOT broadcasting it. So the poor client never sees it. Eg, a tcpdump looks like this: tcpdump: listening on fxp0 11:36:19.302956 0.0.0.0.bootpc > 255.255.255.255.bootps: xid:0x37b23a44 secs:3 [|bootp] 11:36:26.303848 0.0.0.0.bootpc > 255.255.255.255.bootps: xid:0x37b23a44 secs:10 [|bootp] 11:36:26.305769 dhcpserver.cs.duke.edu.bootps > 255.255.255.255.bootpc: xid:0x37b23a44 secs:10 Y:client.cs.duke.edu S:dhcpserver.cs.duke.edu [|bootp] [tos 0x10] 11:36:26.331609 arp who-has dhcpserver.cs.duke.edu tell client.cs.duke.edu 11:36:26.331653 arp reply dhcpserver.cs.duke.edu is-at 0:a0:c9:9a:b2:f4 11:36:26.336821 client.cs.duke.edu.14079 > dhcpserver.cs.duke.edu.tftp: 45 RRQ "/freebsd/diskless.alpha/" [|tftp] 11:36:26.693814 dhcpserver.cs.duke.edu.3630 > client.cs.duke.edu.14079: udp 516 <....> 11:36:36.332410 0.0.0.0.bootpc > 255.255.255.255.bootps: secs:6 [|bootp] 11:36:36.334891 dhcpserver.cs.duke.edu.bootps > client.cs.duke.edu.bootpc: secs:6 Y:client.cs.duke.edu S:dhcpserver.cs.duke.edu [|bootp] [tos 0x10] 11:36:41.122377 0.0.0.0.bootpc > 255.255.255.255.bootps: secs:41 [|bootp] 11:36:41.124853 dhcpserver.cs.duke.edu.bootps > client.cs.duke.edu.bootpc: secs:41 Y:client.cs.duke.edu S:dhcpserver.cs.duke.edu [|bootp] [tos 0x10] 11:36:50.396375 rarp who-is 8:0:2b:86:6e:e0 tell 8:0:2b:86:6e:e0 11:36:52.216760 rarp who-is 8:0:2b:86:6e:e0 tell 8:0:2b:86:6e:e0 If I comment out #define SUPPORT_DHCP in lib/libstand/bootp.c, the netboot loader sends a bootp request (not dhcp) and all is well. Can I work around this by some clever dhcpd.conf option, or is the netboot loader broken. Thanks, Drew ------------------------------------------------------------------------------ Andrew Gallatin, Sr Systems Programmer http://www.cs.duke.edu/~gallatin Duke University Email: gallatin@cs.duke.edu Department of Computer Science Phone: (919) 660-6590 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message