The prefix delegation feature lets a DHCP server assign prefixes chosen from a global pool to DHCP clients. The DHCP client can then configure an IPv6 address on its LAN interface using the prefix it received. It will then send router advertisements including the prefix, allowing other devices to use autoconfiguration to configure their own IPv6 addresses.
This feature can be useful in an ISP environment. Here’s an example:
In the picture above we have an ISP that has the global prefix 2001:DB8:1100::/40 that it can assign to customers. With the prefix delegation feature and DHCPv6, it automatically assigns prefixes to its customers:
- Customer 1 receives 2001:DB8:1100::/48
- Customer 2 receives 2001:DB8:1101::/48
Each customer router configures an IPv6 address based on the prefix they received from the ISP using the general prefix feature and advertises the specific prefix (subnet) to host devices in router advertisements.
Host devices are then able to configure their own IPv6 address using the prefix in the router advertisement and EUI-64.
Let’s take a look at the configuration. Here is the topology we’ll use:
Let’s start with the ISP router. We need to enable IPv6 unicast routing:
The global prefix is configured with the ipv6 local pool command:
ISP(config)#ipv6 local pool GLOBAL_POOL 2001:DB8:1100::/40 48
This tells the router that we have a pool called GLOBAL_POOL and that we can use the entire 2001:DB8:1100::/40 prefix. Each DHCP client, however, will receive a /48 prefix out of this pool.
Now we need to configure the DHCP server:
ISP(config)#ipv6 dhcp pool CUSTOMERS ISP(config-dhcpv6)#prefix-delegation pool GLOBAL_POOL ISP(config-dhcpv6)#dns-server 2001:4860:4860::8888 ISP(config-dhcpv6)#dns-server 2001:4860:4860::8844 ISP(config-dhcpv6)#domain-name NETWORKLESSONS.LOCAL
I refer to the pool we just created and add some extra information like the google DNS servers and a domain name. On the interface that connects to the customers, I configure an IPv6 address that does not fall within the range of the global prefix (if you try, you get an error) and the DHCP server needs to be activated on the interface:
ISP(config)#interface GigabitEthernet 0/1 ISP(config-if)#ipv6 address 2001:DB8:0:1::1/64 ISP(config-if)#ipv6 dhcp server CUSTOMERS
That completes the ISP router configuration.
Let’s configure the customer routers.
Make sure you enable IPv6 unicast routing:
The interface that connects to the ISP router will use DHCP client:
C1(config)#interface GigabitEthernet 0/1 C1(config-if)#ipv6 dhcp client pd ISP_PREFIX C1(config-if)#ipv6 address autoconfig default
The prefix that we receive will be stored as ISP_PREFIX. We will use this on the interface that connects to our hosts to configure an IPv6 address:
C1(config)#interface GigabitEthernet 0/2 C1(config-if)#ipv6 address ISP_PREFIX ::1:0:0:0:1/64
In the IPv6 address command, I refer to our ISP_PREFIX so that the router starts the address with that prefix. I’ll use a /64 prefix on this interface.
We can do the exact same thing on this router as we did on C1:
C2(config)#ipv6 unicast-routing C2(config)#interface GigabitEthernet 0/1 C2(config-if)#ipv6 dhcp client pd ISP_PREFIX C2(config-if)#ipv6 address autoconfig default C2(config)#interface GigabitEthernet 0/2 C2(config-if)#ipv6 address ISP_PREFIX ::2:0:0:0:2/64
The only difference is that I use a different specific prefix (subnet) on this router.
On each of our hosts, we use autoconfiguration:
H1(config)#interface GigabitEthernet 0/1 H1(config-if)#ipv6 address autoconfig
H2(config)#interface GigabitEthernet 0/1 H2(config-if)#ipv6 address autoconfig
H3(config)#interface GigabitEthernet 0/1 H3(config-if)#ipv6 address autoconfig
H4(config)#interface GigabitEthernet 0/1 H4(config-if)#ipv6 address autoconfig
This completes our configuration.
Let’s verify our work!
Let’s take a closer look at our DHCP pool:
ISP#show ipv6 dhcp pool DHCPv6 pool: CUSTOMERS Prefix pool: GLOBAL_POOL preferred lifetime 604800, valid lifetime 2592000 DNS server: 2001:4860:4860::8888 DNS server: 2001:4860:4860::8844 Domain name: NETWORKLESSONS.LOCAL Active clients: 2
The output above tells us that we have two clients and that the ISP router uses the GLOBAL_POOL for the prefix. Let’s take a closer look at those two DHCP clients:
ISP#show ipv6 dhcp binding Client: FE80::F816:3EFF:FEB8:F33E DUID: 000300015E0000010000 Username : unassigned VRF : default Interface : GigabitEthernet0/1 IA PD: IA ID 0x00030001, T1 302400, T2 483840 Prefix: 2001:DB8:1100::/48 preferred lifetime 604800, valid lifetime 2592000 expires at Mar 22 2018 09:41 AM (2591328 seconds) Client: FE80::F816:3EFF:FEC4:B7CB DUID: 000300015E0000030000 Username : unassigned VRF : default Interface : GigabitEthernet0/1 IA PD: IA ID 0x00030001, T1 302400, T2 483840 Prefix: 2001:DB8:1101::/48 preferred lifetime 604800, valid lifetime 2592000 expires at Mar 22 2018 09:43 AM (2591430 seconds)
The output above is interesting as it tells us which prefixes the router assigned to the DHCP clients.
Let’s take a look at those DHCP clients, the customer routers.
Let’s take a look at the DHCP information from C1’s perspective:
C1#show ipv6 dhcp interface GigabitEthernet0/1 is in client mode Prefix State is OPEN Renew will be sent in 3d11h Address State is IDLE List of known servers: Reachable via address: FE80::F816:3EFF:FE00:EF72 DUID: 000300015E0000000000 Preference: 0 Configuration parameters: IA PD: IA ID 0x00030001, T1 302400, T2 483840 Prefix: 2001:DB8:1100::/48 preferred lifetime 604800, valid lifetime 2592000 expires at Mar 22 2018 09:41 AM (2591299 seconds) DNS server: 2001:4860:4860::8888 DNS server: 2001:4860:4860::8844 Domain name: NETWORKLESSONS.LOCAL Information refresh time: 0 Prefix name: ISP_PREFIX Prefix Rapid-Commit: disabled Address Rapid-Commit: disable
Above we see that we received our prefix from the ISP, including some other details like the DNS servers and domain name. You can also see that this router named the prefix “ISP_PREFIX”.
Here we can see the IPv6 address that C1 configured on its GigabitEthernet 0/1 interface:
C1#show ipv6 interface GigabitEthernet 0/1 | include 2001 2001:DB8:0:1:F816:3EFF:FEB8:F33E, subnet is 2001:DB8:0:1::/64 [EUI/CAL/PRE]
We can also verify that the router has stored the prefix it received from the ISP:
C1#show ipv6 general-prefix IPv6 Prefix ISP_PREFIX, acquired via DHCP PD 2001:DB8:1100::/48 Valid lifetime 2591177, preferred lifetime 603977 GigabitEthernet0/2 (Address command)
Which is used to configure the GigabitEthernet 0/2 interface:
C1#show ipv6 interface GigabitEthernet 0/2 | include 2001 2001:DB8:1100:1::1, subnet is 2001:DB8:1100:1::/64 [CAL/PRE]
That’s all we need to check on C1.
Let’s verify that C2 has received a prefix from the ISP:
I hope you’re doing very well?
I want to know [EUI/CAL/PRE] what does it mean please?
These acronyms display several attributes of the IPv6 address, and are always displayed after the address itself. These are part of the output of the
show ipv6 interfacecommand. Specifically, the [EUI/CAL/PRE] acronyms you mention are indicating that:
EUI - Extended Unique Identifier. The address was generated using EUI-64, a method by which the IPv6 address is derived from the MAC address of the interface.... Continue reading in our forum
CAL - Calendar. This means that the address is timed and has valid and preferred lifetimes.
PRE - Preferred. This timed address is preferre
So although that example works well, its missing one more component to test both your example and my need… You need a router “beyond” the ISP router to insure you can reach the hosts from an extended “ISP” network.
I’ve been trying to do the same thing in your example, however with a “remote” KEA DHCP server (v1.5.0) server from ISC. Issuing the PD is not an issue. What I’ve been having problems with is that the router that is issuing the PD for whatever reason (labeled ISP in your example) is not putting the route in its local routing table (for redistribut... Continue reading in our forum
I don’t have a clear cut answer for you at the moment, however, doing some research, I’ve found the following Cisco documentation.
Now I know that you yourself have gone through documentation as well, however, if I may add the following comments, it may steer you in the right direction.
Among other useful information in this section, it states that:... Continue reading in our forum
Hi REne and staff,
thanks for your work (it is not pretented)
i lab this lesson with
and i test some other prefix values for the global pool
When the global pool is /40 (like in the lesson) the delegation is between 40 and 56
when the global pool is /32 the delegation is between 32 and 48
https://cdn-forum.networklessons.com/uploads/default... Continue reading in our forum