On Wed, Jul 6, 2011 at 12:47 PM, deeptech71_at_gmail.com <deeptech71_at_gmail.com> wrote: > (i intend the discussion to take place primarily on the > freebsd-hackers list, i'm CCing the freebsd-current list for a reason > stated below.) > > (original first post: > http://lists.freebsd.org/pipermail/freebsd-questions/2011-June/231301.html) > > On Mon, Jul 4, 2011 at 4:20 PM, Lowell Gilbert <Lowell_at_be-well.ilk.org> wrote: >> You might want to try rewording your question, because it didn't make >> any sense the first time. > > very well. though the question should have made perfect sense the first time. > >> [All of your examples were commented out, so >> it was no surprise that they didn't work.] > > i chose to use # characters to separate rc.conf snippets from the > other sentences i wrote. though perhaps #s were an unfortunate choice, > because a # has a comment-begins-here meaning in rc.conf. in any case, > "attempt 1" and "attempt 2" didn't work, but "attempt 3" did work, and > that rules out the use of # for comments in rc.conf. now i will use > "===== rc.conf snippet begins =====" and "===== rc.conf snippet ends > =====" instead of # characters. > >> I considered trying to use my chrystal ball to guess that you needed >> "SYNCDHCP" in your interface config, but you had obviously read the >> manual for rc.conf(5), so that seemed unlikely... > > and "SYNCDHCP" makes things even worse. (i have no idea what > "SYNCDHCP" is supposed to do, but in my experience:) "SYNCDHCP" makes > the boot process wait until DHCP server replies before proceeding. > "SYNCDHCP" is actually almost the same as "DHCP", except that > "SYNCDHCP" waits indefinitely, while "DHCP" waits for at most > defaultroute_delay, and also, "DHCP" gets "Starting network: lo0 sk0. > <insert_bogus_interface_info_here>" printed *before* the IP address > assignment process starts, while "SYNCDHCP" gets "Starting network: > lo0 sk0. <insert_current_interface_info_here>" printed *after* the IP > address assignment process finishes. > > so here is the question rephrased: > > the boot process of my FreeBSD machines takes a relatively long time. > it spends 30 seconds idling at some point, because my network > interface (sk0) is supposed to have an IP address assigned via DHCP, > and the DHCP server on my LAN takes an extremely long time (~40 > seconds) to reply to IP address requests. this is unacceptable for me; > i want the FreeBSD boot process to finish 30 seconds earlier, even if > i won't get the chance to use the network for ~40 seconds after the > booting has finished. > > this was the actual case when my rc.conf had the following options > related to network interfaces: > ===== rc.conf snippet begins ===== > ifconfig_sk0="DHCP" > ===== rc.conf snippet ends ===== > > it took me 3 rc.conf configuration attempts to find a configuration in > which the boot process does not idle for 30 seconds. > > the following was the first attempt: > ===== rc.conf snippet begins ===== > background_dhclient="YES" > background_dhclient_sk0="YES" > ===== rc.conf snippet ends ===== > with this configuration, the DHCP client isn't even started. ie., the > boot process does not idle at all (that's good!), but the network > interface will never receive an IP address automatically (that's very > bad!). > > here is the second attempt: > ===== rc.conf snippet begins ===== > ifconfig_sk0="DHCP" > background_dhclient="YES" > background_dhclient_sk0="YES" > ===== rc.conf snippet ends ===== > with this configuration, the DHCP client is started, but the boot > process still idles for 30 seconds at some point (as if the > background_dhclient and background_dhclient_<if> variables had no > effect). > > the final attempt is: > ===== rc.conf snippet begins ===== > ifconfig_sk0="DHCP" > defaultroute_delay="0" > ===== rc.conf snippet ends ===== > this configuration works, ie., during the boot process, there is no > idling related to waiting for a DHCP server to reply. but this > configuration looks hacky. > > so what is the RIGHT(TM) way to configure the boot process not to idle > much in case of a slow DHCP server, and why? > > i ask this question partially because there is an rc.conf option > background_dhclient (also, background_dhclient_<if>), which doesn't > seem to do anything, though it should, since it exists (either that, > or the option should be removed). (there has been a recent discussion > on the freebsd-current list about rc.d parallelization; [reason for > CCing:] could recent rc.d changes have made the background_dhclient > option useless?) > > i'd like to have an in-depth explanation on what effect should any > combination of the following options should have on the boot process: > defaultroute_delay="0", background_dhclient="YES", > synchronous_dhclient="YES". (for example, using both > background_dhclient="YES" and synchronous_dhclient="YES" seems stupid; > i need a clarification if that's not the case.) what's the explanation > if there is more than 1 network card (all of which are to have IP > addresses assigned via DHCP)? Hi, You'll need ifconfig_sk0="DHCP" in order to get dhclient to work. Nothing more, nothing less. The rest of the variables just seem redundant to me (sans background_dhclient vs synchronous_dhclient, but it seems like that should be streamlined to one variable instead of being two anyhow as they're mutually exclusive options that should be fed into dhclient). I recommend bringing this up with rc_at_ because this is just inefficient and misleading. Look through /etc/network.subr // /etc/rc.d/dhclient if you're curious and capable of reading sh -- it's straightforward what's going on -- it's just that the method for doing it isn't clearcut and straightforward, and it looks like things need to be weedwacked a bit in that section of code. Thanks, -Garrett PS Please don't cross-post ;).Received on Wed Jul 06 2011 - 18:02:38 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:15 UTC