All about DHCP vendor classes and user classes.

Fundamentally vendor classes were introduced to re-use the option id’s in a vendor specific way. Since these are options specific to a given vendor and their scope is very limited to that vendor, it cannot afford to have a option in the list 1-255 as defined in the RFC 2132. This is because if each vendor publishes his option within the range 1-255 as defined in the RFC 2132, then the option id’s will soon run out. The way this problem was solved was bringing in a new field in the DHCP packet called the vendor-specific options. This field can contain those options which are specific to the vendor. The option id’s for the vendor specific options need to be unique only for that vendor class. Other vendor classes can re-define these option-ids. An Example: Option id 1 in the “Microsoft Windows 2000” vendor class corresponds to the “Disable NetBios” option. The same option id 1 can correspond to say “XYZ” on the vendor class “ABC”. What basically happens is we define a new namespace. Thus a vendor class is represented by the vendor class name and the list of options defined for those clients who belong to that vendor class. In Windows DHCP server, those options which are defined in the RFC 2132 are put into a vendor class named “DHCP Standard options”. This is a vendor class only in the sense that it defines a list of options. These options are not sent in the vendor-specific options field in the DHCP packet. These are sent in the normal options field in the DHCP packet.

User classes are fundamentally different. User class enables partitioning the client machines into distinct classes that can receive different options values based on their user class.

A list of options is defined for a given vendor class. Definition of a option means we define the data type of the option and its name etc.

This list of vendor-options maybe configured for a given user class. Configuration of an option means assigning it a value. This configuration of a given vendor class option can be done for each user class. Thus, the value of a given option is determined by the user class while the list of options that are sent is chosen by the vendor class. That is, the vendor class determines the fact that the DHCP server will send the router option whereas the user class determines whether the value of the router option is x 10.0.0.1 or it is 11.0.0.1.

Note carefully: The server comes along with a default user class. This user class is used when the client does not have any membership to any user class. So when the server wants to find the option value for a given option for a given client, it first checks out if the option is configured for the client’s user class. If not or if the client has not sent any user class, then it picks up the options corresponding to the default user class. If even this is not configured, the server does not send this option. L

The Microsoft DHCP server also comes with a special vendor class also called as “DHCP Standard options” as mentioned above. The options corresponding to this vendor class has all standard option definitions (ones defined in RFC2132). This set of options will be sent no matter what the vendor class the client belongs to. As with all vendor class options, You can configure the options belonging to this vendor class for specific user classes.

Now a client when it sends its request will get two sets of options:

1) Options defined in the default vendor class: “DHCP standard options” These options are added to the options field in the DHCP packet.

2) Options defined in the vendor class to which it belongs to say “DHCP standard options” These options are encapsulated inside the vendor specific options option field in the DHCP packet.

In each case,

If the options are configured for the user class to which the client belongs to, then those options are returned.

If not, and if the options are configured only at default user class, then option values at the default user class is returned.

If the options are not configured neither at the user class nor at the default user class, then that option is not sent. The following links offers some more information about vendor classes and user classes:

1)       Difference between user class and vendor class.

2) Some more stuff regarding this.(Non-Microsoft site)