The Woeful Story of Emulab DHCP Configuration of the Control Network.
DHCP configuration is the single most horrible part of configuring a new client OS. Even though there are standard tools, in particular those from ISC, we use DHCP in a way that was never intended. DHCP works fine to configure multiple interfaces, but it is designed to discover and configure every such interface with an IP address under the rational assumption that every interface is connected to some subnet and needs configuring. However, in Emulab we want to query all interfaces, but we do it to discover which one of them is the "control network" interface and we only want to configure that one. And we want to do it quickly. This turns out to be hard in any number of dimensions. We don't, for example, want to serially test each of 6 interfaces, as each one might take 2-3 minutes and inevitably, the control network will be the last one. And we want to stop the search after we discover the control network. And we want to be selective about which interfaces we even test. And we want to ignore bogus responses.
Since the control network needs to be discovered and configured very early, we cannot just do it in the context of the rest of the Emulab specific setup at the end. We instead have to hook it into the existing network DHCP support provided by the OS. This is generally quite challenging, sometimes amusing, and always extremely frustrating. Good luck with that!