Lesson Contents
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.
Configuration
Let’s take a look at the configuration. Here is the topology we’ll use:
ISP
Let’s start with the ISP router. We need to enable IPv6 unicast routing:
ISP(config)#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.
Customer Routers
Let’s configure the customer routers.
C1
Make sure you enable IPv6 unicast routing:
C1(config)#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.
C2
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.
Hosts
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.
Verification
Let’s verify our work!
ISP
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.
Customers
Let’s take a look at those DHCP clients, the customer routers.
C1
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.
C2
Let’s verify that C2 has received a prefix from the ISP:
Hello,
I hope you’re doing very well?
I want to know [EUI/CAL/PRE] what does it mean please?
Cheers,
Ulrich
Hello Djan
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 interface
command. 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 forumCAL - 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 forumHello Marcos
I don’t have a clear cut answer for you at the moment, however, doing some research, I’ve found the following Cisco documentation.
https://www.cisco.com/c/en/us/td/docs/routers/asr903/software/guide/ip/16-6-1/b-dhcp-xe-16-6-asr900/implementing_dhcp_for_ipv6.html#GUID-82004112-75D9-4114-A19C-B0B8B75DC21B
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 forumHi REne and staff,
thanks for your work (it is not pretented)
i lab this lesson with
https://cdn-forum.networklessons.com/uploads/default/original/2X/7/7335742f2d5451e7b58476dedc8f9cf0a05ac174.png
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
https://cdn-forum.networklessons.com/uploads/default/original/2X/6/6a667fe33f1c8b8e10960d6355494027e44d51f7.jpeg
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