DHCP for IPv6
Feature Name |
Release Information |
Description |
---|---|---|
DHCP for IPv6 |
Cisco IOS XE Catalyst SD-WAN Release 17.7.1a Cisco vManage Release 20.7.1 |
This feature allows you to configure DHCP for IPv6 (DHCPv6) on Cisco IOS XE Catalyst SD-WAN devices to assign IPv6 addresses to hosts on an IPv6-enabled network. Assigning of IPv6 addresses is accomplished using SLAAC, DHCPv6, DHCPv6 Prefix Delegation, or DHCPv6 Relay. A Cisco IOS XE Catalyst SD-WAN device can be configured for DHCPv6 as a DHCP server, DHCP client, or as a DHCP relay agent. |
Prerequisites for DHCPv6
-
Basic IPv6 connectivity for assigning IPv6 addresses to hosts connected to the Cisco IOS XE Catalyst SD-WAN devices.
Restrictions For DHCPv6
-
This feature is supported only through CLI configuration.
-
A unique DHCPv6 pool name must be provied for each VRF.
Information About DHCPv6
You can configure Dynamic Host Configuration Protocol (DHCP) for IPv6 to assign addresses on an IPv6-enabled network. Alternatively, you can also configure Stateless Address Autoconfiguration (SLAAC) to assign addresses on an IPv6-enabled network.
SLAAC
The most common method for IPv6 client address assignment is SLAAC. SLAAC provides simple plug-and-play connectivity where hosts self-assign an address based on the IPv6 prefix.
SLAAC is configured as follows:
-
Host sends a router solicitation message.
-
Hosts waits for a Router Advertisement (RA) message.
-
Hosts take the first 64 bits of the IPv6 prefix from the RAmessage and combines it with the 64 bit EUI-64 address (in the case of ethernet, this is created from the MAC Address) to create a global unicast message. The host also uses the source IP address, in the IP header, of the RA message, as its default gateway.
-
Duplicate Address Detection (DAD) is performed by IPv6 clients in order to ensure that random addresses that are picked do not collide with other clients.
-
The choice of algorithm is up to the client and is often configurable.
The last 64 bits of the IP v6 address can be learned based on the following 2 algorithms:
-
EUI-64 which is based on the MAC address of the interface, or
-
Private addresses that are randomly generated.
SLAAC and DHCPv6
DHCPv6
IPv6 devices use multicast to acquire IP addresses and to find DHCPv6 servers. The basic DHCPv6 client-server concept is similar to DHCP for IPv4. If a client wants to receive configuration parameters, it sends out a request on the attached local network to detect available DHCPv6 servers. The server responds with the requested information in a Reply message.
The DHCPv6 client knows whether to use DHCPv6 based upon the instruction from a router on its link-local network. The default gateway has two configurable bits in its RA available for this purpose:
-
O bit—When this bit is set, the client can use DHCPv6 to retrieve other configuration parameters (for example, TFTP server addressor DNS server address ) but not the client's IP address.
-
M bit—When this bit is set, the client can use DHCPv6 to retrieve a managed IPv6 address and other configuration parameters from a DHCPv6 server.
Stateless DHCP
Stateless DHCPv6 is a combination of SLAAC and DHCPv6. With this option SLAAC is still used to retrieve an IP address while DHCP is used to obtain additional information such as TFTP server addressor, DNS server address. In this case, the device sends an RA with the O bit set but does not set the M bit. This is known as Stateless DHCPv6 because the DHCPv6 server does not have to track the client address bindings.
Stateful DHCP
Stateful DCHPv6 functions exactly the same as DHCP IPv4 in which hosts receive both their IPv6 address and additional parameters from the DHCP server. When a device sends an RA with the M bit set, this indicates that clients must use DHCP to obtain their IP addresses. When the M bit is set, the setting of the O bit is irrelevant because the DHCP server also returns other configuration information together with the addresses. This is known as Stateful DHCPv6 because the DHCPv6 server tracks the client address bindings.
DHCPv6 Prefix Delegation
The DHCPv6 prefix delegation feature is a stateful mode of operation for simple delegation of prefixes from a delegating edge device (DHCP server) to requesting edge device (DHCP clients).
DHCPv6 prefix delegation feature is ideal for the following situations where:
-
A delegating edge device that does not have the information about the topology of the networks to which the requesting edge device is attached to.
-
A delegating edge device does not require other information apart from the identity of the requesting edge device to choose a prefix for delegation. This mechanism is appropriate for use by an ISP to delegate a prefix to a subscriber. After the ISP has delegated prefixes to a subscriber, the subscriber may further subnet and assign prefixes to the links within the subscriber's network.
DHCPv6 Relay
A DHCPv6 relay agent is an edge device, residing on the client's network, is used to relay messages between the client and the server when a DHCPv6 server is not in the same network as the DHCPv6 clients.
Benefits of DHCPv6
Configuring DHCP for IPv6 allows you to have more IP address compared to IPv4. With IPv6, there can be no depletion of IP addresses.
Use Cases For DHCPv6
Cisco IOS XE Catalyst SD-WAN devices can be configured for DHCPv6 as a server, client, or a relay agent. As a server, a Cisco IOS XE Catalyst SD-WAN device can be configured for SLAAC, Stateless DHCP or for prefix delegation.
SLAAC with DHCP
The figure below shows a typical broadband deployment.
A Cisco IOS XE Catalyst SD-WAN device deployed on a customer premises (CPE) and connected to a ISP edge (PE) device can be a stateless or stateful DHCPv6 client. In either case, the ISP-side DHCPv6 server might provide configuration parameters such as Domain Name System (DNS) server addresses, domain names, and Simple Network Time Protocol (SNTP) servers to the DHCP client on the CPE. Such information can be specific to ISPs.
In addition to being a DHCPv6 client (toward the ISP), the CPE can act as a DHCPv6 server to the home network. For example, neighbor discovery followed by a stateless or stateful DHCPv6 client can occur on the link between the CPE and the home devices. In some cases, the information to be provided to the home network is the same as that obtained from the ISP-side DHCPv6 server. Therefore, the DHCPv6 component on the CPE allows automatic importing of configuration parameters from the DHCPv6 client to the DHCPv6 server pool.
DHCPv6 Prefix Delegation
The model of operation for prefix delegation is as follows. In this sample topology, an edge device is configured as a DHCP server which is provisioned with prefixes to be delegated to a DHCP client. A Cisco IOS XE Catalyst SD-WAN device is configured as a DHCP client and requests prefix(es) from the server. The server chooses prefix(es) for delegation and responds with prefix(es) to the DHCP client. The DHCP client is then responsible for the delegated prefix(es).
For example, the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link. Each prefix has an associated preferred lifetime and valid lifetime, which constitute an agreement about the length of time over which the client is allowed to use the prefix. A client can request an extension of the lifetimes on a delegated prefix and is required to terminate the use of a delegated prefix if the valid lifetime of the prefix expires.
DHCPv6 Relay
In this sample topology, the DHCP server is not in the same network as DHCP client. A Cisco IOS XE Catalyst SD-WAN device residing on the client's network acts as a relay agent to relay messages between the client and the server.
Configure DHCPv6
-
From Cisco SD-WAN Manager menu, choose .
-
Click Device Templates.
Note
In Cisco vManage Release 20.7.x and earlier releases, Device Templates is titled as Device
-
From Create Template drop-down, choose CLI Template.
Note
You can also use the CLI Add-on template to configure DHCP for IPv6 for client and server. For more information, see Create a CLI Add-On Feature Template.
-
From Device Model, choose a device model for which you are creating the template.
-
In the Template Name field, enter a name for the device template. This field is mandatory and can contain only uppercase and lowercase letters, the digits 0 to 9, hyphens (-), and underscores (_). It cannot contain spaces or any other characters.
-
In the Description field, enter a description for the device template. This field is mandatory, and it can contain any character and spaces.
-
In the CLI Configuration field, enter the DHCP configuration for IPv6 for client and server by typing it, cutting and pasting it, or uploading a file.
-
Click Save.
Configure SLAAC
This example shows how to configure SLAAC on the client side.
device(config)# interface GigabitEthernet0/0/2
device(config-if)# ipv6 address autoconfig
device(config-if)# ipv6 enable
device(config-if)# end
This example shows how to configure SLAAC on the server side.
device(config)# interface GigabitEthernet1
device(config-if)# ipv6 address 2010:AB8:0:1::1/64
device(config-if)# ipv6 enable
device(config-if)# end
Configure SLAAC and DHCPv6 Pool for Options
This example shows how to configure SLAAC and DHCPv6 pool on the client side.
device(config)# interface GigabitEthernet0/0/2
device(config-if)# ipv6 address autoconfig
device(config-if)# ipv6 enable
device(config-if)# ipv6 nd autoconfig default-route
device(config-if)# ipv6 dhcp client request vendor
device(config-if)# end
This example shows how to configure SLAAC and DHCPv6 pool on the server side.
device(config)# interface GigabitEthernet1
device(config-if)# ipv6 address 2010:AB8:0:1::1/64
device(config-if)# ipv6 enable
device(config-if)# ipv6 nd autoconfig default-route
device(config-if)# ipv6 nd other-config-flag
device(config-if)# ipv6 dhcp server dhcpv6
device(config-if)# end
device(config)# ipv6 dhcp pool dhcpv6
device(config-dhcpv6)# dns-server 2001:DB8:3000:3000::42
device(config-dhcpv6)# domain-name example.com
device(config-dhcpv6)# vendor-specific 100
device(config-dhcpv6)# suboption 1 address 2001:CC:1234:44::10
device(config-dhcpv6)# suboption 2 ascii "ip phone"
Configure DHCPv6 (stateful) Address Assignment
This example shows how to configure DHCPv6 address assignment on the client side.
device(config)# interface GigabitEthernet0/0/2
device(config-if)# ipv6 address dhcp
device(config-if)# ipv6 enable
device(config-if)# ipv6 nd autoconfig default-route
device(config-if)# ipv6 dhcp client request vendor
device(config-if)# end
This example shows how to configure DHCPv6 address assignment on the server side.
device(config)# interface GigabitEthernet1
device(config-if)# ipv6 address 2010:AB8:0:1::1/64
device(config-if)# ipv6 enable
device(config-if)# ipv6 nd autoconfig default-route
device(config-if)# ipv6 nd managed-config-flag
device(config-if)# ipv6 dhcp server dhcpv6
device(config-if)# end
device(config)# ipv6 dhcp pool dhcpv6
device(config-dhcpv6)# address prefix 2010:AB8:0:1::1/64 lifetime 200 200
device(config-dhcpv6)# dns-server 2001:DB8:3000:3000::42
device(config-dhcpv6)# domain-name example.com
device(config-dhcpv6)# vendor-specific 100
device(config-dhcpv6)# suboption 1 address 2001:CC:1234:44::10
device(config-dhcpv6)# suboption 2 ascii "ip phone"
Configure DHCPv6 with Prefix Delegation (stateful)
This example shows how to configure DHCPv6 with prefix delegation on the client side.
device(config)# interface GigabitEthernet0/0/2
device(config-if)# ipv6 enable
device(config-if)# ipv6 nd autoconfig default-route
device(config-if)# ipv6 dhcp client pd prefix_from_provider
device(config-if)# ipv6 dhcp client request vendor
device(config-if)# end
This example shows how to configure DHCPv6 with prefix delegation on the server side.
device(config)# interface GigabitEthernet1
device(config-if)# ipv6 address 2010:AB8:0:1::1/64
device(config-if)# ipv6 enable
device(config-if)# ipv6 nd autoconfig default-route
device(config-if)# ipv6 nd managed-config-flag
device(config-if)# ipv6 nd ra interval 20
device(config-if)# ipv6 dhcp server dhcpv6
device(config-if)# end
device(config)# ipv6 dhcp pool dhcpv6
device(config-dhcpv6)# prefix-delegation pool dhcpv6-pool1 lifetime 200 200
device(config-dhcpv6)# dns-server 2001:DB8:3000:3000::42
device(config-dhcpv6)# domain-name example.com
device(config-dhcpv6)# vendor-specific 100
device(config-dhcpv6)# suboption 1 address 2001:CC:1234:44::10
device(config-dhcpv6)# suboption 2 ascii "ip phone"
device(config)# ipv6 local pool dhcpv6-pool1 2001:DB8:1200::/40 48
Configure DHCPv6 with Relay
This example shows how to configure DHCPv6 with relay on the client side.
device(config)# interface GigabitEthernet3
device(config-if)# ipv6 address dhcp
device(config-if)# ipv6 enable
device(config-if)# ipv6 dhcp client pd pr-from-pd
device(config-if)# ipv6 dhcp client request vendor
device(config-if)# no mop enabled
device(config-if)# no mop sysid
device(config-if)# end
This example shows the configurations on the client facing WAN edge device that acts as the relay agent.
device(config)# interface TenGigabitEthernet0/0/5
device(config-if)# vrf forwarding 10
device(config-if)# load-interval 30
device(config-if)# ipv6 address 2001:BB:1000::10/64
device(config-if)# ipv6 enable
device(config-if)# ipv6 dhcp relay destination 2001:BB8:1200::2
device(config-if)# ipv6 dhcp relay option vpn
device(config-if)# end
This example shows the configurations on the server facing WAN edge device.
device(config)# interface GigabitEthernet0/0/3
device(config-if)# vrf forwarding 10
device(config-if)# no ip address
device(config-if)# negotiation auto
device(config-if)# ipv6 address 2001:BB8:1200::1/64
device(config-if)# ipv6 enable
device(config-if)# end
This example shows how to configure DHCPv6 with relay on the server side.
device(config)# interface GigabitEthernet2
device(config-if)# ipv6 address 2001:BB8:1200::2/64
device(config-if)# ipv6 enable
device(config-if)# ipv6 dhcp server dhcpv6
device(config-if)# end
device(config)# ipv6 dhcp pool dhcpv6
device(config-dhcpv6)# prefix-delegation pool dhcpv6-pool10 lifetime infinite infinite
device(config-dhcpv6)# address prefix 2001:BB:1000::/64 lifetime 200 200
device(config-dhcpv6)# dns-server 2001:BB:1200::42
device(config-dhcpv6)# domain-name relay.com
device(config)# ipv6 local pool dhcpv6-pool10 8001:ABCD::/40 48
Verify DHCPv6 Client and Server Configuration
Verify DHCPv6 Interface Information
The following is a sample output from the show ipv6 dhcp interface command that provides details about DHCPv6 address allocation.
Device# show ipv6 dhcp interface GigabitEthernet0/0/2
GigabitEthernet0/0/2 is in client mode
Prefix State is IDLE
Address State is OPEN
Renew for address will be sent in 00:01:09
List of known servers:
Reachable via address: FE80::250:56FF:FEBD:DBD1
DUID: 00030001001EBD43F800
Preference: 0
Configuration parameters:
IA NA: IA ID 0x00080001, T1 100, T2 160
Address: 2010:AB8:0:1:95D1:CFC:F227:23FB/128
preferred lifetime 200, valid lifetime 200
expires at Oct 26 2021 07:28 AM (170 seconds)
DNS server: 2001:DB8:3000:3000::42
Domain name: example.com
Information refresh time: 0
Vendor-specific Information options:
Enterprise-ID: 100
Prefix Rapid-Commit: disabled
Address Rapid-Commit: disabled
The following is a sample output from the show ipv6 dhcp interface command that provides details about DHCPv6 prefix delegation.
Device# show ipv6 dhcp interface GigabitEthernet0/0/2
GigabitEthernet0/0/2 is in client mode
Prefix State is OPEN
Renew will be sent in 00:01:34
Address State is IDLE
List of known servers:
Reachable via address: FE80::250:56FF:FEBD:DBD1
DUID: 00030001001EBD43F800
Preference: 0
Configuration parameters:
IA PD: IA ID 0x00080001, T1 100, T2 160
Prefix: 2001:DB8:1202::/48
preferred lifetime 200, valid lifetime 200
expires at Oct 26 2021 07:30 AM (194 seconds)
DNS server: 2001:DB8:3000:3000::42
Domain name: example.com
Information refresh time: 0
Prefix name: prefix_from_server
Prefix Rapid-Commit: disabled
Address Rapid-Commit: disabled
The following is a sample output from the show ipv6 dhcp interface command that provides details about SLAAC with DHCP.
Device# show ipv6 dhcp interface GigabitEthernet0/0/2
GigabitEthernet0/0/2 is in client mode
Prefix State is IDLE (0)
Information refresh timer expires in 23:59:49
Address State is IDLE
List of known servers:
Reachable via address: FE80::250:56FF:FEBD:DBD1
DUID: 00030001001EBD43F800
Preference: 0
Configuration parameters:
DNS server: 2001:DB8:3000:3000::42
Domain name: example.com
Information refresh time: 0
Vendor-specific Information options:
Enterprise-ID: 100
Prefix Rapid-Commit: disabled
Address Rapid-Commit: disabled
View DHCPv6 Pool Information
The following is a sample output from the show ipv6 dhcp pool command that provides details about DHCPv6 address allocation.
Device# show ipv6 dhcp pool
DHCPv6 pool: relay_server
VRF 10
Prefix pool: dhcpv6-pool2
Address allocation prefix: 5001:DB8:1234:42::/64 valid 20000 preferred 20000 (1 in use, 0 conflicts)
preferred lifetime 200, valid lifetime 200
DNS server: 2001:BB8:3000:3000::42
Domain name: relay.com
Information refresh: 60
Vendor-specific Information options:
Enterprise-ID: 10
suboption 1 address 2001:DB8:1234:42::10
suboption 2 ascii 'ip phone'
Active clients: 1
Pool is configured to include all configuration options in REPLY
The following is a sample output from the show ipv6 dhcp pool command that provides details about DHCPv6 prefix delegation.
Device# show ipv6 dhcp pool
DHCPv6 pool: relay_server
VRF 10
Prefix pool: dhcpv6-pool2
Address allocation prefix: 5001:DB8:1234:42::/64 valid 20000 preferred 20000 (0 in use, 0 conflicts)
preferred lifetime 200, valid lifetime 200
DNS server: 2001:BB8:3000:3000::42
Domain name: relay.com
Information refresh: 60
Vendor-specific Information options:
Enterprise-ID: 10
suboption 1 address 2001:DB8:1234:42::10
suboption 2 ascii 'ip phone'
Active clients: 1
Pool is configured to include all configuration options in REPLY
View DHCPv6 Bindings
The following is a sample output from the show ipv6 dhcp binding command that provides details about DHCPv6 address allocation.
Device# show ipv6 dhcp binding
Client: FE80::250:56FF:FEBD:8261
DUID: 00030001001EE6DBF500
Username : unassigned
VRF : 10
IA NA: IA ID 0x00080001, T1 10000, T2 16000
Address: 5001:DB8:1234:42:500C:B3FA:54A7:F63D
preferred lifetime 20000, valid lifetime 20000
expires at Oct 26 2021 01:17 PM (19925 seconds)
The following is a sample output from the show ipv6 dhcp binding command that provides details about DHCPv6 prefix delegation.
Device# show ipv6 dhcp binding
Client: FE80::250:56FF:FEBD:8261
DUID: 00030001001EE6DBF500
Username : unassigned
VRF : 10
Interface : GigabitEthernet0/0/3
IA PD: IA ID 0x00080001, T1 100, T2 160
Prefix: 2001:BB8:1602::/48
preferred lifetime 200, valid lifetime 200
expires at Oct 26 2021 08:01 AM (173 seconds)
View DHCPv6 Database
The following is a sample output from the show ipv6 dhcp database command.
Device# show ipv6 dhcp database
Database agent bootflash:
write delay: 300 seconds, transfer timeout: 300 seconds
last written at Oct 26 2021 08:01 AM, write timer expires in 250 seconds
last read at never
successful read times 0
failed read times 0
successful write times 2
failed write times 0
View DHCPv6 Relay Bindings
The following is a sample output from the show ipv6 dhcp relay bindings command that provides details about DHCPv6 relay.
Device# show ipv6 dhcp relay binding
Relay Bindings associated with default vrf:
Relay Bindings associated with vrf 10:
Prefix: 2001:AA8:1100::/48 (GigabitEthernet3)
DUID: 00030001001E49674C00
IAID: 851969
lifetime: INFINITE
expiration: INFINITE
Summary:
Total number of Relay bindings = 1
Total number of IAPD bindings = 1
Total number of IANA bindings = 0
Total number of Relay bindings added by Bulk lease = 0