Windows XP sometimes ignoring DHCPOFFER messages

C

Chris Aseltine

First, if this is not the right group, please let me know and I will try
another.

I've developed my own mini-DHCP server for the purpose of assigning an IP
address to the PC side of a connection when a USB-based networking device
is attached, based on RFC 2131 and 2132. On Windows 2000, it seems to work
perfectly.

On Windows XP, it seems to work correctly about 90-95% of the time. The
other 5-10% of the time, what I've observed is that Windows will send a
DHCPDISCOVER message, to which my server responds (as always) with a
DHCPOFFER message.

However, in the failure case, Windows seems to ignore the DHCPOFFER and
doesn't respond with a DHCPREQUEST. This pattern repeats itself for about a
minute, during which the adapter gets an address of 0.0.0.0 or 169.254.x.x.

Then, after about a minute, there is another retry from Windwos, except now
it decides to respond with DHCPREQUEST and my server follows up with DHCPACK,
completing the transaction.

Checking around on Google Groups, I've found at least four other people who
have seen this exact behavior [1-4], although I never saw a solution posted.

Below is a sample packet dump from a failure case. First, I receive the
DHCPDISCOVER broadcast:

0.17302990 [00000000] <--- FF FF FF FF FF FF 00 01 AF 00 01 80 08 00 45 00 ..............E.
0.17304859 [00000010] <--- 01 48 2F 8B 00 00 80 11 0A 1B 00 00 00 00 FF FF .H/.............
0.17306824 [00000020] <--- FF FF 00 44 00 43 01 34 41 C9 01 01 06 00 93 E7 ...D.C.4A.......
0.17308617 [00000030] <--- EB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17310259 [00000040] <--- 00 00 00 00 00 00 00 01 AF 00 01 80 00 00 00 00 ................
0.17311831 [00000050] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17313360 [00000060] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17315015 [00000070] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17316563 [00000080] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17318256 [00000090] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17319871 [000000A0] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17321470 [000000B0] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17323221 [000000C0] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17325032 [000000D0] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17326549 [000000E0] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17328134 [000000F0] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17329670 [00000100] <--- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17331509 [00000110] <--- 00 00 00 00 00 00 63 82 53 63 35 01 01 74 01 01 ......c.Sc5..t..
0.17333229 [00000120] <--- 3D 07 01 00 01 AF 00 01 80 0C 09 67 31 37 31 31 =..........g1711
0.17335011 [00000130] <--- 38 2D 30 34 3C 08 4D 53 46 54 20 35 2E 30 37 0B 8-04<.MSFT 5.07.
0.17337014 [00000140] <--- 01 0F 03 06 2C 2E 2F 1F 21 F9 2B FF 00 00 00 00 ....,./.!.+.....
0.17339779 [00000150] <--- 00 00 00 00 00 00 ......

Then, I respond immediately with the DHCPOFFER broadcast:

0.17344840 [00000000] ---> FF FF FF FF FF FF 00 01 AF 00 01 81 08 00 45 00 ..............E.
0.17346859 [00000010] ---> 01 22 00 00 40 00 40 11 69 1D C0 A8 10 06 FF FF ."..@[email protected].......
0.17348619 [00000020] ---> FF FF 00 43 00 44 01 0E AD 15 02 01 06 00 93 E7 ...C.D..........
0.17351410 [00000030] ---> EB 00 00 00 00 00 00 00 00 00 C0 A8 10 01 C0 A8 ................
0.17352372 [00000040] ---> 10 06 00 00 00 00 00 01 AF 00 01 80 00 00 00 00 ................
0.17353249 [00000050] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17354104 [00000060] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17355177 [00000070] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17356831 [00000080] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17358613 [00000090] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17360325 [000000A0] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17361882 [000000B0] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17363374 [000000C0] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17364970 [000000D0] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17366681 [000000E0] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17368206 [000000F0] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17369889 [00000100] ---> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0.17371087 [00000110] ---> 00 00 00 00 00 00 63 82 53 63 35 01 02 36 04 C0 ......c.Sc5..6..
0.17372037 [00000120] ---> A8 10 06 33 04 00 02 A3 00 01 04 FF FF FF F8 FF ...3............

However, per my description above, I don't get a DHCPREQUEST from Windows.
This pattern repeats at time index 5.170, 14.168, and 30.166.

Then, finally, there is another retry at time index 67.150, and then Windows
sends the DHCPREQUEST, and I followup with ACK, and the transaction
completes -- albeit with a 1+ minute delay.

Any ideas? Could this be a bug/"feature" in the XP DHCP client? I am going
to try on Vista later today and see if this happens there as well.

Or, could there be a workaround or something else that I could do inside my
DHCP server to avoid the issue? I noticed that several of the other people
who were having this problem were running non-Windows DHCP servers such as
on Red Hat, etc. Is the DHCP client expecting something out-of-spec that I
could send?

Thanks for any advice.

-Chris

[1]

http://groups.google.com/group/micr...89df5/bf288f341cad9eb7?lnk=st&q=&rnum=5&hl=en

[2]

http://groups.google.com/group/micr...15f9/df1a035b27214da8?lnk=st&q=&rnum=10&hl=en

[3]

http://groups.google.com/group/micr...4a91/1e7144f41cfac42b?lnk=st&q=&rnum=65&hl=en

[4]

http://groups.google.com/group/comp...eef/9153a42997201d74?lnk=st&q=&rnum=104&hl=en
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top