bin/96018: dhclient broadcasts unicast DHCPREQUEST renewals

Christopher Chin cchin at ack.Berkeley.EDU
Tue Apr 18 17:50:15 UTC 2006


>Number:         96018
>Category:       bin
>Synopsis:       dhclient broadcasts unicast DHCPREQUEST renewals
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Apr 18 17:50:13 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Christopher Chin
>Release:        RELENG_6
>Organization:
UC Berkeley
>Environment:
FreeBSD bubble.Net.Berkeley.EDU 6.1-RC FreeBSD 6.1-RC #1: Fri Apr 14 12:41:38 PDT 2006     cchin at bubble.Berkeley.EDU:/usr/obj/usr/src/sys/BUBBLE  i386

>Description:
When initially running dhclient, the DHCPREQUEST is
broadcast as expected.  The renewal requests appear to
be unicast (as they should be), but in this case, go
unanswered.

Finally, the client sends a broadcast DHCPDISCOVER,
which is answered.

     bubble (cchin):/home/cchin# dhclient -d xl0
     DHCPREQUEST on xl0 to 255.255.255.255 port 67
     DHCPACK from 128.32.155.1
     bound to 128.32.155.110 -- renewal in 150 seconds.
     DHCPREQUEST on xl0 to 169.229.252.134 port 67
     DHCPREQUEST on xl0 to 169.229.252.134 port 67
     DHCPREQUEST on xl0 to 169.229.252.134 port 67
     DHCPREQUEST on xl0 to 169.229.252.134 port 67
     DHCPREQUEST on xl0 to 169.229.252.134 port 67
     DHCPDISCOVER on xl0 to 255.255.255.255 port 67 interval 8
     DHCPOFFER from 128.32.155.1
     DHCPREQUEST on xl0 to 255.255.255.255 port 67
     DHCPACK from 128.32.155.1
     bound to 128.32.155.110 -- renewal in 523 seconds.
     ^C
     bubble (cchin):/home/cchin# 

It turns out that the "unicast" renewal requests are
actually being marked as broadcast on the link level.
Instead of the ethernet address of the dhcp server (or
the router), the destination is marked all 1s.

Here is a dump of the above:

     09:45:05.900520 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc > 255.255.255.255.
bootps: BOOTP/DHCP, Request from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:45:05.903876 00:d0:05:78:30:00 (oui Unknown) > 00:0d:56:73:f6:60 (oui Un
known), ethertype IPv4 (0x0800), length 348: vlan520.inr-299-2484shatt.Berkeley.
EDU.bootps > s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc: BOOTP/DHCP, Reply, length: 
306
     09:47:35.057867 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc > dhcp2.Berkeley.E
DU.bootps: BOOTP/DHCP, Request from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:47:40.062107 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc > dhcp2.Berkeley.E
DU.bootps: BOOTP/DHCP, Request from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:47:53.065115 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc > dhcp2.Berkeley.E
DU.bootps: BOOTP/DHCP, Request from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:48:17.074460 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc > dhcp2.Berkeley.E
DU.bootps: BOOTP/DHCP, Request from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:49:16.087475 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc > dhcp2.Berkeley.E
DU.bootps: BOOTP/DHCP, Request from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:50:06.177279 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Requ
est from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:50:06.266529 00:d0:05:78:30:00 (oui Unknown) > 00:0d:56:73:f6:60 (oui Un
known), ethertype IPv4 (0x0800), length 348: vlan520.inr-299-2484shatt.Berkeley.
EDU.bootps > s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc: BOOTP/DHCP, Reply, length: 
306
     09:50:08.313891 00:0d:56:73:f6:60 (oui Unknown) > Broadcast, ethertype IPv4
 (0x0800), length 342: 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Requ
est from 00:0d:56:73:f6:60 (oui Unknown), length: 300
     09:50:08.316849 00:d0:05:78:30:00 (oui Unknown) > 00:0d:56:73:f6:60 (oui Un
known), ethertype IPv4 (0x0800), length 348: vlan520.inr-299-2484shatt.Berkeley.
EDU.bootps > s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc: BOOTP/DHCP, Reply, length: 
306
     


One example packet in detail:

     09:47:40.062107 IP s2484-dhcp-13.LIPS.Berkeley.EDU.bootpc > dhcp2.Berkeley.EDU.bootps: BOOTP/DHCP, Request from 00:0d:56:73:f6:60 (oui Unknown), length: 300
             0x0000:  ffff ffff ffff 000d 5673 f660 0800 4510  ........Vs.`..E.
             0x0010:  0148 0000 0000 1011 e79a 8020 9b6e a9e5  .H...........n..
             0x0020:  fc86 0044 0043 0134 a190 0101 0600 1fbf  ...D.C.4........
             0x0030:  f000 0005 0000 8020 9b6e 0000 0000 0000  .........n......
             0x0040:  0000 0000 0000 000d 5673 f660 0000 0000  ........Vs.`....
             0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0060:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0070:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0080:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0090:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x00a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x00b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x00c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x00d0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x00e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x00f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0100:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0110:  0000 0000 0000 6382 5363 3501 0337 0701  ......c.Sc5..7..
             0x0120:  1c02 030f 060c ff00 0000 0000 0000 0000  ................
             0x0130:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0140:  0000 0000 0000 0000 0000 0000 0000 0000  ................
             0x0150:  0000 0000 0000                           ......
     

I may be mistaken, but that certainly doesn't seem like
the correct behavior.

- Christopher

======================

>How-To-Repeat:
running dhclient on either my xl0 or wi0 interface produces the same results.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list