Score:0

What is Option 60 (Vendor Class Identifier) used for in DHCPv4?

aw flag

Currently I'm using Wireshark to analyze the DHCP process between wireless devices and my DHCP server (which in this case, is my Wi-Fi router). On all of the devices that I tested, I noticed that each device provides a 'Vendor Class Identifier' (or Option 60 on Wireshark) in its DHCP Discover packet. Some examples of vendor class identifiers I saw were:

  • udhcp 1.23.2
  • android-dhcp-13
  • MSFT 5.0

The 'android-dhcp-13' corresponds to my Android phone (which is running Android 13), and the 'MSFT 5.0' corresponds to my Windows laptop. The 'udhcp 1.23.2' corresponds to a smart home device.

I was able to find more information on android-dhcp-13 and MSFT 5.0, but I was not able to find much information on what 'udhcp' and the version number means? Also, is the vendor class identifier something that is model-specific (e.g. All 2nd gen Google Nest Mini's will use a vendor class identifier of x)? Or is this something that a manufacturer will change through common firmware updates that get pushed to the device? And most importantly, why do devices provide the DHCP server with this parameter? Does the DHCP server use this vendor ID to provide specific parameters to the device?

Score:1
cn flag

Basically, Vendor Class Identifier is used to inform DHCP server of a particular vendor and/or model information. Version numbers don't bear any special meaning, as primarily DHCP server would match VCI class information based on a substring (or regex).

This matching is done on DHCP server side to:

  1. Assign leases and lease parameters (router, nameserver, etc) from a specific pool set up for this device class.
  2. Inform hardware devices (such as access points, IP phones, etc) of a particular configuration options via Option 43 Vendor Specific Information. These are typically controller IP address for APs, SIP server address for IP phones and other types of vendor-defined options device may accept.
  3. Provide appropriate PXE environment settings when network boot is requested, i.e. direct them to an appropriate TFTP server and boot image depending on model/type.

All of this is optional, so by default DHCP server does not interprete option 60 values and needs to be configured to do so.

Score:0
za flag
Pat

I was not able to find much information on what 'udhcp' and the version number means?

Surely that is a live Linux booting system or similar. When a live Linux boots-up it starts a kernel and the kernel loads an initrd.gz containing a minimal Linux file system. This is usually based on Busybox to save space and make things easier. Busybox provides a DHCP client named "udhcpc".

Looking at the code of udhcpc we see:

https://elixir.bootlin.com/busybox/1.23.2/source/networking/udhcp/dhcpc.c#L1266

str_V = "udhcp "BB_VER;

later the str_V is loaded as the content of the "vendor class" (option 60)

https://elixir.bootlin.com/busybox/1.23.2/source/networking/udhcp/dhcpc.c#L1366

client_config.vendorclass = alloc_dhcp_option(DHCP_VENDOR, str_V, 0);

when busybox version 1.23.2 is used you get

    BB_VER =  1.23.2 

Then the client will use the Vendor Class string:

udhcp 1.23.2

that is exactly what you see in the DHCPDISCOVEY packet captured by Wireshark when the client starts the DHCP DORA sequence at boot.

Regarding the meaning of the "vendor class" you can see

RFC2132 DHCP Options and BOOTP Vendor Extensions

9.13. Vendor class identifier

This option is used by DHCP clients to optionally identify the vendor type and configuration of a DHCP client. The information is a string of n octets, interpreted by servers. Vendors may choose to define specific vendor class identifiers to convey particular configuration or other identification information about a client. For example, the identifier may encode the client's hardware configuration. Servers not equipped to interpret the class-specific information sent by a client MUST ignore it (although it may be reported). Servers that respond SHOULD only use option 43 to return the vendor-specific information to the client.

The code for this option is 60, and its minimum length is 1.

Code Len Vendor class Identifier
+-----+-----+-----+-----+---
| 60 | n | i1 | i2 | ...
+-----+-----+-----+-----+---

Later other Standards like i.e. PXE define specific content of the Vendor class Identifier which in this case tells a DHCP or proxyDHCP server that the booting client is requiring not only an IP and associated options but also a network boot what requires additional parameters like the IP of the TFTP Server and the NBP (Network Boot Program).

All the PXE booting clients by PXE standard v2.1 should add to the vendor class identifier a string of the form:

“PXEClient:Arch:xxxxx:UNDI:yyyzzz” – used for transactions between client and server. “PXEServer” – used for transactions between servers. (These strings are case sensitive. This field must not be null terminated.) The information from tags 93 and 94 is embedded in the Class Identifier string xxxxx = Client Sys Architecture 0 – 65535 yyy = UNDI Major version 0 – 255 zzz = UNDI Minor version 0 – 255 Delimiter is “:” (colon)

I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.