Modern systems with/without DHCPv6 | docsis.org

You are here

Modern systems with/without DHCPv6

Hello everyone !

I currently am making a study for introducing IPv6 on our Docsis network. Initially, with a dual stack approach, then with IPv4-IPv6 transitional mechanism (mechanism not yet chosen) for those who only supports IPv4 while we will run out of IPv4 addresses.

I want to make my CPEs statefully configured (DHCPv6, with Prefix Delegation for residential/business routers).
For this, my CMTS does not include any prefixes in RA, but the Managed bit is set.

Now my tests are mitigated.

With my Linux test box, I can get an IPv6 address assigned by DHCPv6.

With my MacOS X laptop, I cannot get any IPv6 address. Digging into the problem (wireshark, then googling) learned me that Mac OS X does not include any DHCPv6 ! This is a shame, making these systems not IPv6 Ready certified.

If only MacOS X is an issue, I will NOT change my approach (Apple will have to add this feature in their OS).

But the question is more about Microsoft OS. I heard they support IPv6 (as I heard Mac OS does it, which is true for IPv6 stateless autoconfiguration in a dual stack environment), but do they (Windows Vista and Windows 7, Windows XP is not an issue) embed a DHCPv6 client ? I don't have any Windows Vista or 7 to test.

If Mac OS X and Windows Vista/7 do not support DHCPv6, then I'll for sure have to change my approach, and let CPEs making stateless autoconfiguration.

BTW, if someone is also leading such tests, I would suggest getting in touch in order to share our mutual experiences regarding configuration (CM, CMTS, DHCP, ...), devices (CMs, ...), ...

Thanks !
Bag'

Hello Baghee

Well done for taking this test. As you said, IPv4 addresses are finished and soon we will have no option but go for IPv6. I just want to ask which DHCPv6 server you are using for this test?

Hello !

I use ISC DHCP 4.2, but ISC DHCP 4.1 should also fit the requirements. You will find an example of configuration (I just replaced my prefixes with the documentation ones, but everything else remains the same) (this example of configuration is not intended to go into production, in that case, some parameters - lifetimes typically - may need to be fine tuned).

What I need is a DHCP server that can provide me one IA-NA and one IA-PD (/64 delegated prefix for home routers).

Regarding IA-NA, the offered IPv6 address is randomized, it is not based on EUI-64 (generated from the CPE MAC address), so end user privacy is saved.

Regarding Prefix Delegation, I was just very happy to see my Cisco CMTS (uBR7225 in my lab) automatically addind the static route for the delegated /64 to the proper remote eRouter WAN interface. It was supposed to work like that, but it is always a (good :-) ) surprise to see that things happens they way you're expecting them.

Next step for me is to plug a computer behind (on the LAN) the eRouter, in order to check that it can obtain an IPv6 address, and that this one is also randomized (privacy concern).

Bag'

default-lease-time 2592000;
preferred-lifetime 604800;
option dhcp-renewal-time 86400;
option dhcp-rebinding-time 172800;

# The delay before information-request refresh
# (minimum is 10 minutes, maximum one day, default is to not refresh)
# (set to 6 hours)
option dhcp6.info-refresh-time 21600;

#allow leasequery;

# Global definitions for name server address(es) and domain search list
option dhcp6.name-servers 2001:db8::53;
option dhcp6.domain-search "domain.example";

# Set preference to 255 (maximum) in order to avoid waiting for
# additional servers when there is only one
option dhcp6.preference 255;

# Server side command to enable rapid-commit (2 packet exchange)
##option dhcp6.rapid-commit;

# The path of the lease file
dhcpv6-lease-file-name "/var/db/dhcpd6.leases";

# We're listening on the following subnet, but don't assign any address there.
# The DHCPv6 server could have, for instance, the IP 2001:db8::547
subnet6 2001:db8::/64 {
}

# We're going to assign addresses from the following subnet.
subnet6 2001:db8:1000::/64 {
range6 2001:db8:1000::1:0 2001:db8:1000::ffff:ffff:ffff:ffff;

# We're going to delegate /64 prefixes from the 2001:db8:2000::/48 subnet (65536x /64)
prefix6 2001:db8:2000:0000:: 2001:db8:2000:ffff:: /64;
}