RFC 3074 DHCP Load Balancing STID vs RFC 2131 DHCP xid

ma flag

Section 2.2 of RFC 3074 defines a Service Transaction ID (STID) as:

An attribute of the individual client requests used for load-balancing.

However, section 2 of RFC 2131 defines the xid field of a DHCP packet as:

Transaction ID, a random number chosen by the client, used by the client and server to associate messages and responses between a client and a server.

These seem to match up, until this point in RFC 3074 section 4:

DHCP servers MUST use the Client Identifier [ciaddr from RFC 2131] option as the STID if it is present. If no Client Identifier option is present, the hlen field of the DHCP packet MUST be used as the length of the data to be hashed, and the contents of the chaddr MUST be the data to be hashed. At most the first sixteen bytes of the Client Identifier or chaddr are used.

This makes it seem like the STID and xid are different things. So, what is the purpose of STID? Additionally, I have a packet capture of a specific client issuing multiple discovers but all with the same exact xid, which shouldn't be legal according to RFC 2131 ("...a random number") - at what point does the xid field get updated?


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.