Red Hat Bugzilla – Bug 498535
DHCPv6 client doesn't form the DHCP REQUEST packets properly
Last modified: 2012-06-14 16:21:11 EDT
Cloning RHEL 5 problem for RHEL 4:
+++ This bug was initially created as a clone of Bug #476974 +++
DHCPv6 client doesn't form the DHCP REQUEST packets properly. The sequence of events when the DHCPv6 client is run is :
1. Client sends a SOLICIT messge
2. Server responds with a ADVERTISE which has a IA_NA field. This field contains a IA Adress which contains the IPv6 address, which the server will send in a subsequent REPLY message.
3. The client forms a REQUEST packet which contains the address advertised by the Server. In RHEL 5.3 snapshot3 this is not happening. The IA_NA field of the Request packet doesn't contain the IA subfield ( which should contain the address advertised by server)
4. The Server sends the REPLY packet with the address it advertised. Here in RHEL 5.3 snapshot 3 the Reply packet conatins an address different than the advertised.
How reproducible: Always
Steps to Reproduce:
1. Configure a DHCPv6 server
2. From a client run a DHCPv6 client
dhcp6c -c /etc/dhcp6c.conf -dDf eth0
3. Capture these messages using wireshark
4. Observe the behaviour mentioned in the issue description.
Actual results: Below mentioned behaviour is not seen.
Expected results:DHCPv6 client Request packet should contain the IA subfield of IA_NA filed carrying the IPv6 address advertised by server.
1. This behaviour prevents RHEL 5.3 DHCPv6 client from getting response from a Windows DHCPv6 server.
2. This issue is fixed in a latest version of DHCPv6 package from upstream.( dhcpv6-1.0.22 from https://fedorahosted.org/releases/d/h/dhcpv6/ ). I experimented this on a OpenSuse 11.1 beta install which has this latest upstream version of dhcpv6.
--- Additional comment from email@example.com on 2008-12-19 21:31:38 EDT ---
Fedora has the latest upstream release of dhcpv6, mostly because I am the upstream for dhcpv6. Latest is 1.1.0.
I'm looking through the commit log and cannot find any particular commit where this issue was addressed, but I may skipping over it or it may have been an issue that was fixed when something else was fixed. It's possible this was fixed with the multiple IA option code that was added.
At any rate, this report strikes me as a bit odd because dhcpv6 received an enormous amount of QA for 5.3 and underwent DoD IPv6 testing and certification. The fact that a REQUEST packet is invalid from the client strikes me as odd.
I looked at your tcpdump logs and was wondering what you were using for the dhcpv6 server.
--- Additional comment from firstname.lastname@example.org on 2009-02-03 02:18:10 EDT ---
I used Windows Server 2008 DHCPv6 server.
Created attachment 342020 [details]
It looks like this was fixed with the following upstream commits:
Is this correct? If so, then the attached patch is my attempt to backport these to RHEL 4 (other than line numbers, the only change I made was to change
in the patch).
Created attachment 342024 [details]
(In reply to comment #1)
> Created an attachment (id=342020) [details]
> Proposed patch
> It looks like this was fixed with the following upstream commits:
> Is this correct? If so, then the attached patch is my attempt to backport
> these to RHEL 4 (other than line numbers, the only change I made was to change
> dhcp6_copy_list(&ia->addr_list, &request_list);
> dhcp6_copy_list(&optinfo->addr_list, &request_list);
> in the patch).
This indeed looks like the patch which fixes this issue. I have two observations after applying this patch -
1. I tested the fix with a windows dhcpv6 server. Now the client gets an IPv6 address.
2. With a Linux DHCPv6 ( RHEL 5.2 dhcpv6 server) server, the client initially sends the proper request ( With a IA field) and gets a proper response, but immedielty after that repeats the whole process and this time the request is without a IA filed as advertised by the server. And the behaviour and result are as described in the problem description.
I have attached the protocol traces to this issue.
Created attachment 342312 [details]
dhcp6c with a RHEL 5.2 dhcp6s server
Created attachment 342314 [details]
dhcp6c with a windows dhcp6s server
(In reply to comment #3)
> 2. With a Linux DHCPv6 ( RHEL 5.2 dhcpv6 server) server, the client initially
> sends the proper request ( With a IA field) and gets a proper response, but
> immedielty after that repeats the whole process and this time the request is
> without a IA filed as advertised by the server. And the behaviour and result
> are as described in the problem description.
Does this mean that the Linux client was able to configure itself properly with an address from the Linux DHCPv6 server, but it just took an additional iteration?
Created attachment 348461 [details]
dhcp6c debug output and packet trace with a linux server only.
(In reply to comment #6)
> (In reply to comment #3)
> > 2. With a Linux DHCPv6 ( RHEL 5.2 dhcpv6 server) server, the client initially
> > sends the proper request ( With a IA field) and gets a proper response, but
> > immedielty after that repeats the whole process and this time the request is
> > without a IA filed as advertised by the server. And the behaviour and result
> > are as described in the problem description.
> Does this mean that the Linux client was able to configure itself properly with
> an address from the Linux DHCPv6 server, but it just took an additional
No. Not properly. The first iteration the behaviour is proper. The second iteration it doesn't include the advertised address in it's request to the server, so the server replies with a different address than it advertised.
I am attching a packet capture file and debug output of dhcp6c to this issue.
The patch is fine by me for backporting to RHEL-4. Keep in mind that the version of dhcpv6 in RHEL-4 and RHEL-5 differ by years. The version in RHEL-5 is far more RFC compliant. I mention that because if a customer continues down the road of using dhcpv6 in RHEL-4, they are likely to hit a lot of problems. They would be much better off using RHEL-5 as that version of dhcpv6 has had significant improvements in order to improve RFC compliance and pass various IPv6 certifications. Just something to think about if more issues are found with the version in RHEL-4. I am not interested in backporting huge amounts of code to RHEL-4.
However, if the goal is to make the version in RHEL-4 simply work for customers, then this patch is probably adequate.
This request was evaluated by Red Hat Product Management for
inclusion in the current release of Red Hat Enterprise Linux.
Because the affected component is not scheduled to be updated in the
current release, Red Hat is unfortunately unable to address this
request at this time. Red Hat invites you to ask your support
representative to propose this request, if appropriate and relevant,
in the next release of Red Hat Enterprise Linux.