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