[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [dhcwg] Pre-determining DUID



On Sat, Oct 10, 2009 at 03:48:25PM -0700, Ted Lemon wrote:
> It seems that you want to use the client id as a token to identify a  
> particular piece of hardware for some purpose, but you haven't said what 
> the purpose is.   It also seems that you are (perhaps without realizing 
> it) proposing that we break a bunch of protocol functionality for 
> everyone in order to solve a problem that is specific to your 
> application.

I don't see how it breaks protocol functionality to provide 
additionaly information in a DHCP packet in order to identify and 
classify a client.

> Rather than starting out with the solution, could you please clearly  
> state the problem you are trying to solve?

Here are the problems we have that I'm sure many others share:

- Identify "known" clients vs. "unknown" clients, and other client 
classification:

We desire to only use a single identifier across IPv4 and IPv6.  
Current systems and workflows use the MAC address for this purpose, so 
it is only natural to want to use it for IPv6 as well.  I hesitate to 
use the word "authenticate", but when combined with other switch 
security features (MAC security, DHCP Snooping, IP Source Guard), the 
MAC address works great as a way to casually authenticate clients for 
access to the network and is universally supported, unlike 802.1X.

We also need to classify systems to offer different options to 
different groups of systems.

- Stability/semi-permanence of MAC addresses vs. DUIDs

MAC addresses only change/move when network hardware changes or moves 
between machines, which is a rare event, and an obvious one, done 
either by IT or the machine owner.  DUIDs are supposed to be generated 
at OS-install time and hence be long-lived/unchanging, but they would 
have to change/move when the OS is reinstalled, hard drives moved 
around, etc.  Also, different OSes or firmwares on the same hardware 
(think PXE boot) will most likely have differing DUIDs.  Finally, 
given that DUIDs aren't as “permanent” as MAC addresses, it is 
conceivable that various circumstances (bugs, troubleshooting 
procedures, uninformed or malicious users, etc.) could cause a DUID to 
change (think resetting the TCP/IP stack in some OSes).

Granted, an advantage to DUIDs is that all network cards in a system 
will use the same DUID, so we would no longer require separate 
registrations for each wired card and wireless card in a machine.  
However, we just trade that for requiring multiple separate DUID 
registrations for each OS on the machine instead, and requiring 
registration changes on OS reinstall since the original DUID would be 
lost at that point.

If we continue to use MAC addresses for DHCPv4 while using DUID for 
DHCPv6, this will cause weird situations due to the different 
scenarios under which each value changes.  Replacing the network card 
will cause v4 to break, but v6 will still work.  Swapping hard drives 
between two systems will cause the v6 registration to move, but the v4 
registration will stay with the original machine.  Tracking systems 
via MAC and via DUID will require two separate systems.  Overall, it 
seems like a very bad idea to go this route.

- Locating a system physically on the network, auditing:

It is easy to track MAC addresses on the network and find which switch 
port they are used on at any particular time by looking at the switch 
forwarding tables.  It is therefore easy to associate a client's 
physical location with the identity of the registrant.  This makes 
automated, captive-portal based registration systems easy to implement 
and integrate with other security mechanisms such as locking a MAC 
address down to a switch port.  Since we bind a user account to a MAC 
address when they register the MAC in our system, this allows us to 
track down that user and associate network activity with the user who 
registered the system.  How do we do the same with DUID?  We'd need 
some kind of new switch feature like DHCPv6-snooping with DUID 
capturing support.

- Detecting when a registration is no longer needed:

Similar to above, we can keep track of activity on the network for 
particular MAC addresses, and purge unused registrations after a 
period of time.  This would become difficult if not impossible if we 
no longer registered MAC addresses and instead registered DUIDs.  We'd 
rather not require our users to register multiple things (MAC and 
DUID), and as stated above we can automate the MAC capturing part, but 
not the DUID capturing part.

- Preprovisioning and automated deployment:

We want to jot down the MAC address of a machine from the box it came 
in (without opening the box) and pre-provision the machine on the 
network so that when it is eventually set up, it can boot up, install 
itself via PXE, and be associated with the particular pre-provisioned 
identity on the network.  We want to maintain this same identity on 
the network via IPv4 and IPv6, regardless of how many times the system 
is reinstalled or booted into multiple operating systems.

Right now, one can simply read the MAC address off a machine (on the 
box or label, or through software) and this value will never change 
(unless the hardware changes). This can be used to associate that 
specific hardware to a DHCP Class for PXE booting to a specific 
server/filename, etc. With DUIDs, the PXE boot firmware will have a 
different DUID from the OS which will generate a new DUID every time 
the OS is re-deployed. This implies at the very least that PXE booting 
will require a separate “registration”, and that the OS will need to 
be re-registered after each re-deployment.

So these are the motivations behind our desire at least to provide the 
chaddr in the DHCP packet as a way to identify and classify clients.  
As I said in my other email, we have a working prototype that does 
exactly this for ISC dhcrelay.