BIND 10 #3232: Kea6: Develop REBIND support

BIND 10 Development do-not-reply at isc.org
Tue Feb 25 08:29:00 UTC 2014


#3232: Kea6: Develop REBIND support
-------------------------------------+-------------------------------------
            Reporter:  tomek         |                        Owner:
                Type:  enhancement   |  UnAssigned
            Priority:  medium        |                       Status:
           Component:  Unclassified  |  reviewing
            Keywords:                |                    Milestone:  DHCP-
           Sensitive:  0             |  Kea0.9-alpha
         Sub-Project:  DHCP          |                   Resolution:
Estimated Difficulty:  0             |                 CVSS Scoring:
         Total Hours:  7             |              Defect Severity:  N/A
                                     |  Feature Depending on Ticket:
                                     |          Add Hours to Ticket:  7
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------
Changes (by marcin):

 * owner:  marcin => UnAssigned
 * status:  assigned => reviewing


Comment:

 I have implemented Rebind support for IA_NA and IA_PD. The Rebind
 processing logic is shared between Rebind and Renew as they do pretty much
 the same thing, except:
 - Rebind must not be sent to unicast address
 - In some cases, server should discard Rebind messages when there is no
 binding. For Renew, the !NoBinding status is returned instead.

 Current implementation doesn't fully conform to draft-ietf-dhc-dhcpv6
 -stateful-issues. The major change that this draft proposes is that server
 may allocate leases if client requested them but they are not allocated
 yet. This change would however require quite a lot of testing and making
 sure that corner cases are covered. This is deferred at least until we
 have discussion on IETF89 regarding server behavior for Rebind and Renew
 in the context of RFC3315bis.

 The way I implemented unit tests for rebind may be a bit controversial. I
 created a new class !''Dhcp6Client!'', which simulates the operation of
 the real dhcp client. It obtains leases and keeps the state of leases.
 IMHO, this approach makes it more natural to create new unit tests as it
 allows to easily model the real life scenarios. The client exercises the
 whole main loop of the DHCP server (not only a processRebind logic), so as
 we can test the message processing end to end. I do realize that some more
 sanity checking and error reporting should be added to the test client,
 but it should be good enough for now.

 Note, that we are going to extend the server's logic to implement stateful
 issues draft at some point and we will end up with more test vectors that
 will complicate the tests. Having the testing solution which mimics the
 operation of the real client should be beneficial.

 I tested the new functionality with the dhclient in the following way
 (using wireshark):
 - Start Kea6
 - Start dhclient and let it get the v6 lease
 - Let the dhclient renew a lease a few times
 - Disable the interface on the server and watch fail to renew the lease a
 few times
 - Watch client move to Rebind
 - Enable interface on the server and watch server respond to client's
 Rebind.

 Proposed !ChangeLog:
 {{{
 XXX.    [func]          marcin
         b10-dhcp6: Implemented support for Rebind message.
         (Trac #3232, git abc)
 }}}

-- 
Ticket URL: <http://bind10.isc.org/ticket/3232#comment:3>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list