DHCPv6 - Dynamic Host Configuration Protocol for IPv6
What is DHCPv6?
DHCPv6 stands for Dynamic Host Configuration Protocol for IPv6. It is the version of DHCP designed to assign IPv6 addresses and configuration settings to devices on an IPv6 network.
Why is DHCPv6 useful?
Automatically assigns IPv6 addresses to devices
Provides additional configuration like DNS servers and domain names
Works alongside or instead of Stateless Address Autoconfiguration (SLAAC)
Simplifies network management in enterprise and ISP environments
How it works (in simple steps):
Device joins the network – It sends a DHCPv6 Solicit message to find a DHCPv6 server.
Server responds – The server replies with an Advertise message offering configuration.
Device requests configuration – It sends a Request message to accept the offer.
Server confirms – The server sends a Reply with the assigned IPv6 address and settings.
Where is DHCPv6 used?
Enterprise networks – For centralized control of IPv6 address assignments
ISPs – To assign IPv6 addresses to customer devices
Data centers – For managing large-scale IPv6 deployments
Dual-stack networks – Where both IPv4 and IPv6 are used
Which OSI layer does this protocol belong to?
DHCPv6 operates at the Application Layer (Layer 7) of the OSI model.
It provides network configuration services directly to devices.
Although it uses UDP (Layer 4) for transport (ports 546 and 547), the protocol’s logic and message handling occur at Layer 7.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
DHCPv6 Version |
RFC |
Year |
Core Idea / Contribution |
---|---|---|---|
DHCPv6 v1 |
|||
RFC 3315 |
2003 |
Initial DHCPv6 specification; supports stateful address assignment and configuration. |
|
Stateless DHCPv6 |
|||
RFC 3736 |
2004 |
Lightweight DHCPv6 for stateless address autoconfiguration (SLAAC). |
|
Prefix Delegation |
|||
RFC 3633 |
2003 |
Allows delegation of IPv6 prefixes to routers. |
|
Reconfigure |
|||
RFC 3315 |
2003 |
Server-initiated client reconfiguration (built-in). |
|
Relay Agent Info |
|||
RFC 6422 |
2011 |
Defines relay agent options for DHCPv6. |
|
Authentication |
|||
RFC 3315 + RFC 8415 |
2003, 2018 |
Defines authentication mechanisms for DHCPv6. |
|
DHCPv6 bis |
|||
RFC 8415 |
2018 |
Consolidated and updated DHCPv6 specification (replaces RFC 3315). |
|
Address Registration |
|||
RFC 9686 |
2024 |
Mechanism for registering self-generated IPv6 addresses using DHCPv6. |
Setup
DHCPv6 Solicit
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
1 |
DHCPv6 Solicit |
Sent by a client to locate available DHCPv6 servers |
|
msg-type |
Message type: 1 for Solicit |
1 |
|
transaction-id |
Unique ID to match requests and replies |
3 |
|
Client Identifier |
Uniquely identifies the client (usually includes DUID) |
variable |
|
Option Request |
Specifies which options the client wants (e.g., DNS servers) |
variable |
|
Elapsed Time |
Time since the client began the address acquisition process |
2 |
|
Rapid Commit |
Requests a 2-message exchange instead of 4 |
2 |
|
IA_NA (Identity Assoc.) |
Requests non-temporary IPv6 address |
variable |
|
IA_TA (Temporary Addr) |
Requests temporary IPv6 address |
variable |
|
IA_PD (Prefix Delegation) |
Requests a delegated prefix (used in routers) |
variable |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
DHCPv6 Advertise
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
2 |
DHCPv6 Advertise |
Server response to Solicit with configuration |
|
msg-type |
Message type: 2 for Advertise |
1 |
|
transaction-id |
Unique ID to match the client’s Solicit message |
3 |
|
Server Identifier |
Uniquely identifies the server (includes DUID) |
variable |
|
Client Identifier |
Copied from the Solicit message to identify the client |
variable |
|
Preference |
Indicates server’s preference (higher = more preferred) |
1 |
|
IA_NA (Identity Assoc.) |
Offers non-temporary IPv6 address info (includes lifetimes,address) |
variable |
|
IA_TA (Temporary Addr) |
Offers temporary IPv6 address info |
variable |
|
IA_PD (Prefix Delegation) |
Offers delegated prefix (used by routers) |
variable |
|
DNS Recursive Name Server |
Provides DNS server addresses |
variable |
|
Domain Search List |
Provides domain suffixes for DNS search |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
Vendor Class |
Optional; identifies vendor-specific info |
variable |
|
Status Code |
Indicates success or failure of the offer |
variable |
|
Rapid Commit |
Included if server supports 2-message exchange |
2 |
DHCPv6 Request
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
3 |
DHCPv6 Request |
Client requests configuration from a server |
|
msg-type |
Message type: 3 for Request |
1 |
|
transaction-id |
Unique ID to match replies from the server |
3 |
|
Client Identifier |
Uniquely identifies the client (includes DUID) |
variable |
|
Server Identifier |
Identifies the server being selected (from Advertise) |
variable |
|
Option Request |
Specifies which options the client wants (e.g., DNS servers) |
variable |
|
Elapsed Time |
Time since the client began the DHCP process |
2 |
|
IA_NA (Identity Assoc.) |
Requests non-temporary IPv6 address info (includes lifetimes, address) |
variable |
|
IA_TA (Temporary Addr) |
Requests temporary IPv6 address info |
variable |
|
IA_PD (Prefix Delegation) |
Requests delegated prefix (used by routers) |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
Rapid Commit |
Included if client wants to use 2-message exchange |
2 |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
|
Reconfigure Accept |
Indicates client is willing to accept Reconfigure messages |
1 |
DHCPv6 Confirm
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
4 |
DHCPv6 Confirm |
Client verifies if its address is still valid |
|
msg-type |
Message type: 4 for Confirm |
1 |
|
transaction-id |
Unique ID to match replies from the server |
3 |
|
Client Identifier |
Uniquely identifies the client (includes DUID) |
variable |
|
Option Request |
Specifies which options the client wants (e.g., DNS servers) |
variable |
|
Elapsed Time |
Time since the client began the DHCP process |
2 |
|
IA_NA (Identity Assoc.) |
Contains the non-temporary IPv6 address info to be confirmed |
variable |
|
IA_TA (Temporary Addr) |
Contains temporary IPv6 address info to be confirmed |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
DHCPv6 Renew
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
5 |
DHCPv6 Renew |
Client renews its lease with the server |
|
msg-type |
Message type: 5 for Renew |
1 |
|
transaction-id |
Unique ID to match replies from the server |
3 |
|
Client Identifier |
Uniquely identifies the client (includes DUID) |
variable |
|
Server Identifier |
Identifies the server that assigned the address/prefix |
variable |
|
Elapsed Time |
Time since the client began the DHCP process |
2 |
|
IA_NA (Identity Assoc.) |
Contains the non-temporary IPv6 address info to be renewed |
variable |
|
IA_TA (Temporary Addr) |
Contains temporary IPv6 address info to be renewed |
variable |
|
IA_PD (Prefix Delegation) |
Contains delegated prefix info to be renewed |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
Option Request |
Specifies which options the client wants (e.g., DNS servers) |
variable |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
DHCPv6 Rebind
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
6 |
DHCPv6 Rebind |
Client contacts any server when original is unreachable |
|
msg-type |
Message type: 6 for Rebind |
1 |
|
transaction-id |
Unique ID to match replies from any server |
3 |
|
Client Identifier |
Uniquely identifies the client (includes DUID) |
variable |
|
Elapsed Time |
Time since the client began the DHCP process |
2 |
|
IA_NA (Identity Assoc.) |
Contains the non-temporary IPv6 address info to be rebound |
variable |
|
IA_TA (Temporary Addr) |
Contains temporary IPv6 address info to be rebound |
variable |
|
IA_PD (Prefix Delegation) |
Contains delegated prefix info to be rebound |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
Option Request |
Specifies which options the client wants (e.g., DNS servers) |
variable |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
DHCPv6 Reply
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
7 |
DHCPv6 Reply |
Server responds to Request, Confirm, Renew, etc |
|
msg-type |
Message type: 7 for Reply |
1 |
|
transaction-id |
Matches the transaction ID from the clients message |
3 |
|
Client Identifier |
Copied from the clients message to identify the client |
variable |
|
Server Identifier |
Identifies the server sending the reply (includes DUID) |
variable |
|
IA_NA (Identity Assoc.) |
Contains assigned non-temporary IPv6 address info |
variable |
|
IA_TA (Temporary Addr) |
Contains assigned temporary IPv6 address info |
variable |
|
IA_PD (Prefix Delegation) |
Contains delegated prefix info |
variable |
|
DNS Recursive Name Server |
Provides DNS server addresses |
variable |
|
Domain Search List |
Provides domain suffixes for DNS search |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
Status Code |
Indicates success or failure of the request |
variable |
|
Rapid Commit |
Included if the server supports 2-message exchange |
2 |
|
Vendor Class |
Identifies vendor-specific information |
variable |
|
User Class |
Identifies the type of user or application |
variable |
DHCPv6 Release
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
8 |
DHCPv6 Release |
Client releases its address back to the server |
|
msg-type |
Message type: 8 for Release |
1 |
|
transaction-id |
Unique ID to match replies from the server |
3 |
|
Client Identifier |
Uniquely identifies the client (includes DUID) |
variable |
|
Server Identifier |
Identifies the server that assigned the address/prefix |
variable |
|
IA_NA (Identity Assoc.) |
Contains the non-temporary IPv6 address info to be released |
variable |
|
IA_TA (Temporary Addr) |
Contains temporary IPv6 address info to be released |
variable |
|
IA_PD (Prefix Delegation) |
Contains delegated prefix info to be released |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
DHCPv6 Decline
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
9 |
DHCPv6 Decline |
Client informs server that an address is already in use |
|
msg-type |
Message type: 9 for Decline |
1 |
|
transaction-id |
Unique ID to match replies from the server |
3 |
|
Client Identifier |
Uniquely identifies the client (includes DUID) |
variable |
|
Server Identifier |
Identifies the server that assigned the address/prefix |
variable |
|
IA_NA (Identity Assoc.) |
Contains the non-temporary IPv6 address info being declined |
variable |
|
IA_TA (Temporary Addr) |
Contains temporary IPv6 address info being declined |
variable |
|
IA_PD (Prefix Delegation) |
Contains delegated prefix info being declined |
variable |
|
Status Code |
Indicates the reason for the decline (e.g., address in use) |
variable |
|
Authentication |
Optional; used if authentication is required |
variable |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
DHCPv6 Reconfigure
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
10 |
DHCPv6 Reconfigure |
Server tells client to reconfigure |
|
msg-type |
Message type: 10 for Reconfigure |
1 |
|
transaction-id |
Unique ID to match the clients response |
3 |
|
Server Identifier |
Identifies the server sending the Reconfigure message (includes DUID) |
variable |
|
Client Identifier |
Identifies the client being reconfigured (includes DUID) |
variable |
|
Reconfigure Message |
|
1 |
|
Reconfigure Accept |
Indicates whether the client must accept Reconfigure messages |
1 |
|
Authentication |
Optional; used if authentication is required |
variable |
DHCPv6 Information-Request
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
11 |
DHCPv6 Information-Request |
Client requests config info without needing an address |
|
msg-type |
Message type: 11 for Information-Request |
1 |
|
transaction-id |
Unique ID to match replies from the server |
3 |
|
Client Identifier |
Uniquely identifies the client (includes DUID) |
variable |
|
Option Request |
Specifies which options the client wants (e.g., DNS servers, domain list) |
variable |
|
Elapsed Time |
Time since the client began the DHCP process |
2 |
|
Authentication |
Optional; used if authentication is required |
variable |
|
User Class |
Identifies the type of user or application |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
|
Reconfigure Accept |
Indicates client is willing to accept Reconfigure messages |
1 |
DHCPv6 Relay-Forward
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
12 |
DHCPv6 Relay-Forward |
Relay agent forwards client messages to server |
|
msg-type |
Message type: 12 for Relay-Forward |
1 |
|
hop-count |
Number of relay agents that have forwarded the message |
1 |
|
link-address |
|
16 |
|
peer-address |
IPv6 address of the client or previous relay agent |
16 |
|
Relay Message (Option 9) |
Encapsulates the original client message (e.g., Solicit, Request) |
variable |
|
Interface-ID (Option 18) |
Identifies the interface on which the message was received |
variable |
|
Remote-ID (Option 37) |
Identifies the remote host (e.g., MAC address or circuit ID) |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
DHCPv6 Relay-Reply
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
13 |
DHCPv6 Relay-Reply |
Server replies to client via relay agent |
|
msg-type |
Message type: 13 for Relay-Reply |
1 |
|
hop-count |
Copied from the corresponding Relay-Forward message |
1 |
|
link-address |
Copied from the Relay-Forward message; identifies the clients link |
16 |
|
peer-address |
|
16 |
|
Relay Message (Option 9) |
Contains the DHCPv6 message intended for the client (e.g., Advertise, Reply) |
variable |
|
Interface-ID (Option 18) |
Identifies the interface on which the message should be sent back to the client |
variable |
|
Remote-ID (Option 37) |
Identifies the remote host (e.g., MAC address or circuit ID) |
variable |
|
Vendor Class |
Identifies vendor-specific information |
variable |
S.no |
Use Case |
Description |
---|---|---|
1 |
IPv6 Address Assignment |
Assigns IPv6 addresses dynamically to clients in a stateful manner. |
2 |
Prefix Delegation |
Delegates IPv6 prefixes to routers for subnetting and downstream configuration. |
3 |
Stateless Configuration |
Provides additional configuration (e.g., DNS) when addresses are assigned via SLAAC. |
4 |
Mobile and IoT Networks |
Supports dynamic address and configuration assignment in IPv6-enabled mobile and IoT environments. |
5 |
Enterprise Network Management |
Centralizes IPv6 address and configuration management in large networks. |
6 |
Reconfiguration Support |
Allows servers to notify clients to update their configuration dynamically. |
7 |
Relay Agent Support |
Enables DHCPv6 messages to be relayed across subnets for centralized management. |
S.No |
Feature |
Description |
---|---|---|
1 |
IPv6 Address Assignment |
Dynamically assigns IPv6 addresses to clients (stateful configuration) |
2 |
Prefix Delegation |
Delegates IPv6 prefixes to routers for subnetting and downstream configuration |
3 |
Stateless Configuration |
Provides additional info (e.g., DNS) when addresses are assigned via SLAAC |
4 |
Lease Management |
Manages address lifetimes and renewals using preferred and valid lifetimes |
5 |
DHCPv6 Options |
Supports a wide range of options for DNS, domain search, SIP servers, etc. |
6 |
Reconfigure Support |
Allows servers to notify clients to update their configuration dynamically |
7 |
Relay Agent Support |
Forwards DHCPv6 messages across subnets using relay agents |
8 |
Authentication Support |
Provides mechanisms for message authentication and integrity (optional) |
9 |
Dual Stack Coexistence |
Can operate alongside DHCPv4 in dual-stack networks |
10 |
Support for Mobile & IoT |
Efficiently supports dynamic addressing in IPv6-enabled mobile and IoT environments. |
IPv6 Address Assignment - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Solicit Message |
Client sends Solicit to All_DHCP_Relay_Agents_Servers |
Server responds with Advertise |
2 |
Advertise Message |
Server replies to Solicit with Advertise |
Contains server ID and options |
3 |
Request Message |
Client sends Request after Advertise |
Server responds with Reply |
4 |
Reply Message |
Server replies to Request |
Contains assigned IPv6 address |
5 |
Confirm Message |
Client confirms address validity |
Server replies with Reply |
6 |
Renew Message |
Client renews lease |
Server replies with updated lease |
7 |
Rebind Message |
Client rebinds after no response to Renew |
Server replies with updated lease |
8 |
Release Message |
Client releases address |
Server acknowledges release |
9 |
Decline Message |
Client declines offered address |
Server marks address as unusable |
10 |
Reconfigure Message |
Server initiates config change |
Client sends Information-Request |
11 |
Information-Request |
Client requests config info |
Server replies with Reply |
12 |
Rapid Commit |
Client uses 2-message exchange |
Server replies with Reply |
13 |
DUID Validation |
Validate client DUID format |
Server accepts valid DUID |
14 |
IA_NA Option |
Request non-temporary address |
Server assigns IA_NA address |
15 |
IA_TA Option |
Request temporary address |
Server assigns IA_TA address |
16 |
IA_PD Option |
Request prefix delegation |
Server assigns IPv6 prefix |
17 |
Option Request Option |
Client requests specific options |
Server includes requested options |
18 |
Server Preference Option |
Server includes preference |
Client selects highest preference |
19 |
Elapsed Time Option |
Client includes elapsed time |
Server uses for retransmission logic |
20 |
Authentication Option |
Include authentication info |
Server validates credentials |
21 |
Address Assignment |
Assign IPv6 address |
Client receives valid address |
22 |
Prefix Delegation |
Assign IPv6 prefix |
Client configures subnet |
23 |
Stateless Configuration |
Use Information-Request only |
Client receives DNS, domain info |
24 |
Stateful Configuration |
Full address assignment |
Client receives address and lease |
25 |
Lease Expiry |
Wait for lease to expire |
Client stops using address |
26 |
Lease Renewal Timing |
Renew before T1 expires |
Server renews lease |
27 |
Lease Rebinding Timing |
Rebind after T2 expires |
Server renews lease |
28 |
Multiple Servers |
Multiple servers respond |
Client selects one |
29 |
Server Unreachable |
No server response |
Client retries or fails |
30 |
Relay Agent Forwarding |
Relay forwards client messages |
Server receives forwarded messages |
31 |
Relay Reply Handling |
Relay forwards server reply |
Client receives reply |
32 |
Invalid Message Format |
Send malformed DHCPv6 message |
Server ignores or sends error |
33 |
Duplicate Address Detection |
Client performs DAD |
Address confirmed unique |
34 |
Address Conflict |
Server assigns used address |
Client sends Decline |
35 |
Server Load Handling |
High volume of clients |
Server handles without failure |
36 |
Client Reboot |
Reboot client with lease |
Client sends Confirm |
37 |
Server Restart |
Restart server |
Clients rebind or renew |
38 |
Interface Change |
Client changes interface |
Sends new Solicit |
39 |
Link-Local Address Use |
Client uses link-local source |
Server accepts |
40 |
Multicast Destination |
Client sends to FF02::1:2 |
Server receives |
41 |
Unicast Server Communication |
Client uses known server address |
Server responds |
42 |
DNS Option |
Server provides DNS info |
Client configures DNS |
43 |
Domain Search Option |
Server provides domain list |
Client configures search domains |
44 |
FQDN Option |
Server provides FQDN |
Client registers name |
45 |
Vendor Class Option |
Client identifies vendor |
Server customizes response |
46 |
Vendor Specific Info Option |
Server sends vendor data |
Client processes info |
47 |
Reconfigure Accept Option |
Client accepts reconfigure |
Server may initiate changes |
48 |
Reconfigure Key Option |
Server includes key info |
Client validates |
49 |
Client Retransmission |
Client retries on timeout |
Server eventually responds |
50 |
Server Logging |
Enable DHCPv6 logs |
Logs show message flow |
Prefix Delegation - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Solicit with IA_PD |
Client sends Solicit with IA_PD option |
Server responds with Advertise including IA_PD |
2 |
Advertise with Prefix |
Server includes prefix in Advertise |
Client receives prefix options |
3 |
Request with IA_PD |
Client sends Request for prefix |
Server responds with Reply including prefix |
4 |
Reply with Prefix |
Server assigns prefix in Reply |
Client configures delegated prefix |
5 |
Prefix Lifetime |
Server includes valid lifetimes |
Client honors preferred and valid lifetimes |
6 |
Renew Prefix |
Client sends Renew for prefix |
Server renews prefix lease |
7 |
Rebind Prefix |
Client sends Rebind after no Renew response |
Server responds with updated prefix |
8 |
Release Prefix |
Client releases delegated prefix |
Server acknowledges release |
9 |
Decline Prefix |
Client declines prefix due to conflict |
Server marks prefix as unusable |
10 |
Multiple Prefixes |
Server delegates multiple prefixes |
Client configures all prefixes |
11 |
Prefix Length Validation |
Server assigns /56 or /64 prefix |
Client accepts valid prefix length |
12 |
Prefix Conflict Detection |
Client detects prefix conflict |
Client sends Decline |
13 |
Prefix Delegation Timeout |
Client does not renew in time |
Prefix becomes invalid |
14 |
Prefix Delegation Logging |
Enable logs on server |
Logs show prefix delegation events |
15 |
Prefix Delegation with Relay |
Relay forwards IA_PD messages |
Server processes forwarded messages |
16 |
Prefix Delegation with Authentication |
Client includes authentication info |
Server validates and delegates |
17 |
Prefix Delegation with Rapid Commit |
Client uses Rapid Commit |
Server replies with prefix in 2 messages |
18 |
Prefix Delegation with Stateless Mode |
Client uses Information-Request only |
No prefix assigned |
19 |
Prefix Delegation with Stateful Mode |
Client uses Solicit/Request |
Prefix assigned |
20 |
Prefix Delegation with DUID |
Client uses unique DUID |
Server identifies client correctly |
21 |
Prefix Delegation with Option Request |
Client requests DNS options |
Server includes options |
22 |
Prefix Delegation with Server Preference |
Multiple servers respond |
Client selects highest preference |
23 |
Prefix Delegation with Elapsed Time |
Client includes elapsed time |
Server uses for retransmission |
24 |
Prefix Delegation with Reconfigure |
Server sends Reconfigure |
Client sends Information-Request |
25 |
Prefix Delegation with FQDN |
Client registers FQDN |
Server updates DNS |
26 |
Prefix Delegation with Vendor Class |
Client identifies vendor |
Server customizes response |
27 |
Prefix Delegation with Vendor Options |
Server sends vendor-specific info |
Client processes options |
28 |
Prefix Delegation with Lease Expiry |
Wait for lease to expire |
Client stops using prefix |
29 |
Prefix Delegation with Server Restart |
Server restarts |
Client rebinds or renews |
30 |
Prefix Delegation with Client Reboot |
Client reboots |
Client sends Confirm |
31 |
Prefix Delegation with Interface Change |
Client changes interface |
Client sends new Solicit |
32 |
Prefix Delegation with Link-Local |
Client uses link-local address |
Server accepts |
33 |
Prefix Delegation with Multicast |
Client sends to FF02::1:2 |
Server receives |
34 |
Prefix Delegation with Unicast |
Client uses known server address |
Server responds |
35 |
Prefix Delegation with DNS Option |
Server provides DNS info |
Client configures DNS |
36 |
Prefix Delegation with Domain Search |
Server provides domain list |
Client configures search domains |
37 |
Prefix Delegation with Logging |
Enable DHCPv6 logs |
Logs show prefix delegation |
38 |
Prefix Delegation with Invalid Format |
Send malformed IA_PD |
Server ignores or errors |
39 |
Prefix Delegation with High Load |
Many clients request prefixes |
Server handles load |
40 |
Prefix Delegation with NAT |
Client behind NAT |
Prefix delegation may fail |
41 |
Prefix Delegation with VPN |
Client on VPN |
Prefix delegation may fail |
42 |
Prefix Delegation with VLAN |
Client on different VLAN |
Prefix delegation depends on routing |
43 |
Prefix Delegation with Wireshark |
Capture DHCPv6 packets |
IA_PD messages visible |
44 |
Prefix Delegation with Nmap |
Use nmap to detect DHCPv6 |
Prefix delegation detected |
45 |
Prefix Delegation with Python |
Use scapy or dhcp6 client |
Prefix delegated |
46 |
Prefix Delegation with Linux |
Use dhclient or NetworkManager |
Prefix assigned |
47 |
Prefix Delegation with Windows |
Use netsh or DHCPv6 client |
Prefix assigned |
48 |
Prefix Delegation with macOS |
Use built-in DHCPv6 |
Prefix assigned |
49 |
Prefix Delegation with Router |
Router requests prefix |
Prefix delegated and routed |
50 |
Prefix Delegation with Subnetting |
Client uses prefix for LAN |
LAN devices get IPv6 addresses |
Stateless Configuration - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Information-Request Message |
Client sends Information-Request to obtain configuration parameters |
Server responds with Reply containing options |
2 |
Reply with DNS Option |
Server includes DNS server addresses in Reply |
Client configures DNS settings |
3 |
Reply with Domain Search Option |
Server includes domain search list |
Client configures domain search list |
4 |
No Address Assignment |
Client does not request IA_NA or IA_PD |
No IPv6 address assigned |
5 |
Server Stateless Mode |
Server configured for stateless operation |
Only configuration parameters provided |
6 |
Client Stateless Mode |
Client only sends Information-Request |
Receives configuration options |
7 |
Multiple Clients |
Multiple clients request stateless config |
Server responds to all with options |
8 |
Server Logging |
Enable logging on server |
Logs show Information-Request and Reply |
9 |
Client Logging |
Enable logging on client |
Logs show received configuration |
10 |
Invalid Option Request |
Client requests unsupported option |
Server ignores or omits option |
11 |
Option Request Option |
Client includes Option Request Option |
Server includes requested options |
12 |
Elapsed Time Option |
Client includes elapsed time |
Server uses for retransmission logic |
13 |
Server Preference Option |
Server includes preference value |
Client may use for server selection |
14 |
Authentication Option |
Client includes authentication info |
Server validates credentials |
15 |
Rapid Commit Not Used |
Client does not use Rapid Commit |
Standard 2-message exchange used |
16 |
Rapid Commit Used |
Client uses Rapid Commit |
Server replies immediately with Reply |
17 |
Server Restart |
Server restarts during operation |
Clients retry Information-Request |
18 |
Client Reboot |
Client reboots |
Sends new Information-Request |
19 |
Interface Change |
Client changes interface |
Sends new Information-Request |
20 |
Multicast Destination |
Client sends to FF02::1:2 |
Server receives and responds |
21 |
Unicast Server Communication |
Client uses known server address |
Server responds with Reply |
22 |
Link-Local Source Address |
Client uses link-local address |
Server accepts and responds |
23 |
Relay Agent Forwarding |
Relay forwards Information-Request |
Server processes forwarded message |
24 |
Relay Reply Handling |
Relay forwards server Reply |
Client receives configuration |
25 |
Malformed Information-Request |
Client sends malformed message |
Server ignores or logs error |
26 |
Unsupported Option in Reply |
Server includes unsupported option |
Client ignores unknown option |
27 |
Client Retransmission |
Client retries on timeout |
Server eventually responds |
28 |
Server Timeout |
Server does not respond |
Client retries or fails |
29 |
High Load on Server |
Many clients send requests |
Server handles without failure |
30 |
Stateless with Stateful Server |
Server supports both modes |
Client receives config only |
31 |
Stateless with Prefix Delegation |
Client does not request IA_PD |
No prefix assigned |
32 |
Stateless with Address Assignment |
Client does not request IA_NA |
No address assigned |
33 |
Stateless with DNS Only |
Server provides only DNS option |
Client configures DNS |
34 |
Stateless with Domain Only |
Server provides only domain search |
Client configures domain list |
35 |
Stateless with No Options |
Server provides no options |
Client receives empty Reply |
36 |
Stateless with Logging Enabled |
Enable logs on both ends |
Logs show message exchange |
37 |
Stateless with DUID Validation |
Client uses valid DUID |
Server accepts and responds |
38 |
Stateless with Vendor Class Option |
Client identifies vendor |
Server customizes response |
39 |
Stateless with Vendor Specific Info |
Server includes vendor-specific data |
Client processes info |
40 |
Stateless with FQDN Option |
Client registers FQDN |
Server updates DNS |
41 |
Stateless with Reconfigure |
Server sends Reconfigure |
Client sends Information-Request |
42 |
Stateless with Reconfigure Accept |
Client accepts reconfigure |
Server may initiate changes |
43 |
Stateless with NAT |
Client behind NAT |
Stateless config may still work |
44 |
Stateless with VPN |
Client on VPN |
Stateless config may work depending on routing |
45 |
Stateless with VLAN |
Client on different VLAN |
Depends on routing and multicast |
46 |
Stateless with Wireshark |
Capture DHCPv6 packets |
Information-Request and Reply visible |
47 |
Stateless with Nmap |
Use nmap to detect DHCPv6 |
Stateless server detected |
48 |
Stateless with Python Script |
Use scapy or dhcp6 client |
Configuration options received |
49 |
Stateless with Linux Client |
Use dhclient or NetworkManager |
Options configured |
50 |
Stateless with Router |
Router requests config info |
Receives DNS/domain options |
Lease Management - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Lease Assignment |
Client requests address lease |
Server assigns lease with valid lifetime |
2 |
Lease Renewal |
Client sends Renew message before T1 |
Server renews lease and updates lifetime |
3 |
Lease Rebinding |
Client sends Rebind after T2 |
Server responds with updated lease |
4 |
Lease Expiry |
Client does not renew lease |
Lease expires and address is released |
5 |
Lease Release |
Client sends Release message |
Server acknowledges and frees address |
6 |
Lease Decline |
Client declines offered address |
Server marks address as unusable |
7 |
Lease Confirm |
Client confirms address after reboot |
Server validates and confirms lease |
8 |
Lease with Rapid Commit |
Client uses Rapid Commit option |
Server assigns lease in 2-message exchange |
9 |
Lease Lifetime Validation |
Server provides preferred and valid lifetimes |
Client honors lifetimes |
10 |
Lease Logging |
Enable server logs |
Logs show lease assignment and expiry |
11 |
Multiple Lease Requests |
Client requests multiple IA_NA |
Server assigns multiple addresses |
12 |
Lease with IA_TA |
Client requests temporary address |
Server assigns temporary lease |
13 |
Lease with IA_PD |
Client requests prefix delegation |
Server assigns prefix with lease |
14 |
Lease Renewal Timing |
Renew before T1 expires |
Lease is renewed successfully |
15 |
Lease Rebinding Timing |
Rebind after T2 expires |
Lease is updated |
16 |
Lease with DUID |
Client uses unique DUID |
Server identifies and assigns lease |
17 |
Lease with Authentication |
Client includes authentication |
Server validates and assigns lease |
18 |
Lease with Option Request |
Client requests specific options |
Server includes options in Reply |
19 |
Lease with Server Preference |
Multiple servers respond |
Client selects highest preference |
20 |
Lease with Elapsed Time |
Client includes elapsed time |
Server uses for retransmission logic |
21 |
Lease with Reconfigure |
Server sends Reconfigure |
Client sends Information-Request |
22 |
Lease with Reconfigure Accept |
Client accepts reconfigure |
Server may initiate changes |
23 |
Lease with FQDN |
Client registers FQDN |
Server updates DNS |
24 |
Lease with Vendor Class |
Client identifies vendor |
Server customizes lease response |
25 |
Lease with Vendor Options |
Server includes vendor-specific data |
Client processes options |
26 |
Lease with Relay Agent |
Relay forwards client messages |
Server assigns lease |
27 |
Lease with Relay Reply |
Relay forwards server reply |
Client receives lease |
28 |
Lease with Multicast |
Client sends to FF02::1:2 |
Server receives and responds |
29 |
Lease with Unicast |
Client uses known server address |
Server responds with lease |
30 |
Lease with Link-Local |
Client uses link-local source |
Server accepts and assigns lease |
31 |
Lease with Logging Enabled |
Enable logs on both ends |
Logs show lease lifecycle |
32 |
Lease with Invalid Format |
Send malformed IA_NA |
Server ignores or errors |
33 |
Lease with High Load |
Many clients request leases |
Server handles load |
34 |
Lease with NAT |
Client behind NAT |
Lease assignment may work |
35 |
Lease with VPN |
Client on VPN |
Lease assignment may work |
36 |
Lease with VLAN |
Client on different VLAN |
Depends on routing |
37 |
Lease with Wireshark |
Capture DHCPv6 packets |
Lease messages visible |
38 |
Lease with Nmap |
Use nmap to detect DHCPv6 |
Lease assignment detected |
39 |
Lease with Python Script |
Use scapy or dhcp6 client |
Lease assigned |
40 |
Lease with Linux Client |
Use dhclient or NetworkManager |
Lease assigned |
41 |
Lease with Windows Client |
Use netsh or DHCPv6 client |
Lease assigned |
42 |
Lease with macOS Client |
Use built-in DHCPv6 |
Lease assigned |
43 |
Lease with Router |
Router requests lease |
Lease assigned and routed |
44 |
Lease with Subnetting |
Client uses lease for LAN |
LAN devices get IPv6 addresses |
45 |
Lease with Duplicate Address |
Server assigns used address |
Client sends Decline |
46 |
Lease with Conflict Detection |
Client detects conflict |
Client declines lease |
47 |
Lease with Server Restart |
Server restarts |
Clients rebind or renew |
48 |
Lease with Client Reboot |
Client reboots |
Client sends Confirm |
49 |
Lease with Interface Change |
Client changes interface |
Sends new Solicit |
50 |
Lease with Stateless Mode |
Client sends Information-Request only |
No lease assigned |
DHCPv6 Options - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Option Request Option |
Client requests specific options |
Server includes requested options in Reply |
2 |
Elapsed Time Option |
Client includes elapsed time since start |
Server uses for retransmission logic |
3 |
Client Identifier Option |
Client sends DUID |
Server identifies client uniquely |
4 |
Server Identifier Option |
Server sends DUID |
Client identifies server |
5 |
IA_NA Option |
Client requests non-temporary address |
Server assigns IPv6 address |
6 |
IA_TA Option |
Client requests temporary address |
Server assigns temporary address |
7 |
IA_PD Option |
Client requests prefix delegation |
Server assigns IPv6 prefix |
8 |
Authentication Option |
Client includes authentication info |
Server validates credentials |
9 |
Unicast Option |
Server indicates unicast address |
Client uses unicast for future messages |
10 |
Status Code Option |
Server includes status code |
Client interprets result of request |
11 |
Preference Option |
Server includes preference value |
Client selects server with highest preference |
12 |
Interface-ID Option |
Relay agent includes interface ID |
Server uses to identify client interface |
13 |
Reconfigure Message Option |
Server sends Reconfigure message |
Client initiates Information-Request |
14 |
Reconfigure Accept Option |
Client accepts reconfigure |
Server may initiate configuration change |
15 |
Vendor Class Option |
Client identifies vendor |
Server customizes response |
16 |
Vendor Specific Information Option |
Server includes vendor-specific data |
Client processes vendor data |
17 |
FQDN Option |
Client registers Fully Qualified Domain Name |
Server updates DNS |
18 |
DNS Recursive Name Server Option |
Server provides DNS server addresses |
Client configures DNS |
19 |
Domain Search List Option |
Server provides domain search list |
Client configures search domains |
20 |
Information Refresh Time Option |
Server provides refresh interval |
Client uses to refresh configuration |
21 |
Boot File URL Option |
Server provides boot file URL |
Client downloads boot file |
22 |
Boot File Parameters Option |
Server provides boot parameters |
Client uses parameters for booting |
23 |
NTP Server Option |
Server provides NTP server addresses |
Client configures time synchronization |
24 |
Time Zone Option |
Server provides time zone info |
Client configures local time zone |
25 |
Geo-Location Option |
Server provides location info |
Client configures location-based settings |
26 |
Client Link-Layer Address Option |
Client includes MAC address |
Server uses for identification |
27 |
Relay Message Option |
Relay agent encapsulates client message |
Server decapsulates and processes |
28 |
Remote ID Option |
Relay agent includes remote ID |
Server uses for client identification |
29 |
Subscriber ID Option |
Relay agent includes subscriber ID |
Server uses for policy decisions |
30 |
Client FQDN Option |
Client requests DNS update |
Server updates DNS records |
31 |
Client Architecture Option |
Client indicates architecture type |
Server provides appropriate boot file |
32 |
Network Interface ID Option |
Client includes interface ID |
Server uses for configuration |
33 |
Client Machine ID Option |
Client includes machine ID |
Server uses for identification |
34 |
Client Network ID Option |
Client includes network ID |
Server uses for policy decisions |
35 |
Client User Class Option |
Client includes user class |
Server customizes response |
36 |
Client Capability Option |
Client indicates capabilities |
Server adjusts configuration |
37 |
Client Security Capability Option |
Client includes security capabilities |
Server adjusts security settings |
38 |
Client Boot File Option |
Client requests boot file |
Server provides boot file URL |
39 |
Client Boot Parameters Option |
Client requests boot parameters |
Server provides parameters |
40 |
Client NTP Option |
Client requests NTP servers |
Server provides NTP server list |
41 |
Client Time Zone Option |
Client requests time zone |
Server provides time zone info |
42 |
Client Geo-Location Option |
Client requests location info |
Server provides location data |
43 |
Client Interface-ID Option |
Client includes interface ID |
Server uses for configuration |
44 |
Client Remote ID Option |
Client includes remote ID |
Server uses for identification |
45 |
Client Subscriber ID Option |
Client includes subscriber ID |
Server uses for policy decisions |
46 |
Client Architecture Type Option |
Client includes architecture type |
Server provides matching boot file |
47 |
Client Network Interface Option |
Client includes network interface ID |
Server uses for configuration |
48 |
Client Machine Identifier Option |
Client includes machine identifier |
Server uses for identification |
49 |
Client Network Identifier Option |
Client includes network identifier |
Server uses for policy decisions |
50 |
Client User Class Identifier Option |
Client includes user class identifier |
Server customizes configuration |
Reconfigure Support - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Reconfigure Message Trigger |
Server sends Reconfigure message |
Client receives and processes it |
2 |
Reconfigure Accept Option Present |
Client includes Reconfigure Accept option |
Server allowed to send Reconfigure |
3 |
Reconfigure Accept Option Absent |
Client does not include Reconfigure Accept |
Server does not send Reconfigure |
4 |
Reconfigure for Renew |
Server triggers Renew via Reconfigure |
Client sends Renew message |
5 |
Reconfigure for Information-Request |
Server triggers Information-Request |
Client sends Information-Request |
6 |
Reconfigure with Authentication |
Reconfigure message includes authentication |
Client validates and responds |
7 |
Reconfigure without Authentication |
Reconfigure message lacks authentication |
Client may ignore or log error |
8 |
Reconfigure with Invalid Auth |
Reconfigure message has invalid auth |
Client rejects message |
9 |
Reconfigure with Unknown Option |
Server includes unknown option |
Client ignores unknown option |
10 |
Reconfigure with Valid Options |
Server includes valid options |
Client processes options |
11 |
Reconfigure with IA_NA |
Server reconfigures IA_NA |
Client renews address |
12 |
Reconfigure with IA_PD |
Server reconfigures prefix delegation |
Client renews prefix |
13 |
Reconfigure with IA_TA |
Server reconfigures temporary address |
Client renews temporary address |
14 |
Reconfigure with DNS Option |
Server updates DNS info |
Client updates DNS configuration |
15 |
Reconfigure with Domain Option |
Server updates domain search list |
Client updates domain list |
16 |
Reconfigure with NTP Option |
Server updates NTP server info |
Client updates time sync settings |
17 |
Reconfigure with Vendor Option |
Server updates vendor-specific info |
Client processes vendor data |
18 |
Reconfigure with FQDN Option |
Server updates FQDN |
Client updates DNS registration |
19 |
Reconfigure with Rapid Commit |
Server uses Rapid Commit |
Client processes in 2-message exchange |
20 |
Reconfigure with Elapsed Time |
Client includes elapsed time |
Server uses for retransmission logic |
21 |
Reconfigure with Preference Option |
Server includes preference |
Client may prioritize server |
22 |
Reconfigure with Status Code |
Server includes status code |
Client interprets result |
23 |
Reconfigure with Relay Agent |
Relay forwards Reconfigure |
Client receives via relay |
24 |
Reconfigure with Interface-ID |
Relay includes interface ID |
Server identifies client interface |
25 |
Reconfigure with Remote ID |
Relay includes remote ID |
Server uses for client identification |
26 |
Reconfigure with Subscriber ID |
Relay includes subscriber ID |
Server uses for policy |
27 |
Reconfigure with Logging Enabled |
Enable logs on server and client |
Logs show Reconfigure exchange |
28 |
Reconfigure with Invalid Format |
Server sends malformed Reconfigure |
Client ignores or logs error |
29 |
Reconfigure with High Load |
Server sends to many clients |
Clients respond appropriately |
30 |
Reconfigure with NAT |
Client behind NAT |
Reconfigure may not reach client |
31 |
Reconfigure with VPN |
Client on VPN |
Reconfigure may be delayed or blocked |
32 |
Reconfigure with VLAN |
Client on different VLAN |
Depends on routing and multicast |
33 |
Reconfigure with Wireshark |
Capture packets |
Reconfigure visible on UDP port 546 |
34 |
Reconfigure with Nmap |
Use nmap to detect DHCPv6 |
Reconfigure support detected |
35 |
Reconfigure with Python Script |
Use scapy or dhcp6 client |
Client responds to Reconfigure |
36 |
Reconfigure with Linux Client |
Use dhclient or NetworkManager |
Client processes Reconfigure |
37 |
Reconfigure with Windows Client |
Use netsh or DHCPv6 client |
Client processes Reconfigure |
38 |
Reconfigure with macOS Client |
Use built-in DHCPv6 |
Client processes Reconfigure |
39 |
Reconfigure with Router |
Router receives Reconfigure |
Router renews or updates config |
40 |
Reconfigure with Stateless Client |
Stateless client receives Reconfigure |
Sends Information-Request |
41 |
Reconfigure with Stateful Client |
Stateful client receives Reconfigure |
Sends Renew |
42 |
Reconfigure with No Response |
Client ignores Reconfigure |
Server retries or logs |
43 |
Reconfigure with Retry Mechanism |
Server retries on no response |
Client eventually responds |
44 |
Reconfigure with Delay |
Client delays response |
Server waits or retries |
45 |
Reconfigure with Duplicate Message |
Server sends duplicate Reconfigure |
Client handles idempotently |
46 |
Reconfigure with Expired Lease |
Client lease expired |
Client may ignore Reconfigure |
47 |
Reconfigure with Rebooted Client |
Client rebooted |
Sends Information-Request or Solicit |
48 |
Reconfigure with Interface Change |
Client changes interface |
May not receive Reconfigure |
49 |
Reconfigure with DUID Change |
Client DUID changed |
Server may not recognize client |
50 |
Reconfigure with Server Restart |
Server restarts and sends Reconfigure |
Clients respond as expected |
Relay Agent Support - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Relay Forward Message |
Relay sends client message to server |
Server receives and processes message |
2 |
Relay Reply Message |
Server sends reply via relay |
Client receives server reply |
3 |
Interface-ID Option |
Relay includes Interface-ID |
Server identifies client interface |
4 |
Remote-ID Option |
Relay includes Remote-ID |
Server uses for client identification |
5 |
Subscriber-ID Option |
Relay includes Subscriber-ID |
Server uses for policy decisions |
6 |
Relay with IA_NA |
Client requests address via relay |
Server assigns address |
7 |
Relay with IA_PD |
Client requests prefix via relay |
Server assigns prefix |
8 |
Relay with IA_TA |
Client requests temporary address via relay |
Server assigns temporary address |
9 |
Relay with Option Request |
Client requests options via relay |
Server includes requested options |
10 |
Relay with Elapsed Time |
Client includes elapsed time |
Server uses for retransmission logic |
11 |
Relay with Authentication |
Client includes authentication info |
Server validates credentials |
12 |
Relay with Reconfigure |
Server sends Reconfigure via relay |
Client receives and responds |
13 |
Relay with Rapid Commit |
Client uses Rapid Commit via relay |
Server replies immediately |
14 |
Relay with Preference Option |
Server includes preference |
Client selects preferred server |
15 |
Relay with Status Code |
Server includes status code |
Client interprets result |
16 |
Relay with DNS Option |
Server provides DNS info |
Client configures DNS |
17 |
Relay with Domain Search Option |
Server provides domain list |
Client configures domain search |
18 |
Relay with Vendor Class Option |
Client identifies vendor |
Server customizes response |
19 |
Relay with Vendor Specific Option |
Server includes vendor-specific data |
Client processes vendor data |
20 |
Relay with FQDN Option |
Client registers FQDN |
Server updates DNS |
21 |
Relay with Boot File URL |
Server provides boot file URL |
Client downloads boot file |
22 |
Relay with Boot Parameters |
Server provides boot parameters |
Client uses for booting |
23 |
Relay with NTP Server Option |
Server provides NTP server info |
Client configures time sync |
24 |
Relay with Captive Portal Option |
Server provides captive portal URI |
Client redirects to portal |
25 |
Relay with Logging Enabled |
Enable logs on relay and server |
Logs show message flow |
26 |
Relay with Invalid Format |
Relay sends malformed message |
Server ignores or logs error |
27 |
Relay with High Load |
Many clients via relay |
Server handles load |
28 |
Relay with NAT |
Relay behind NAT |
Messages routed correctly |
29 |
Relay with VPN |
Relay over VPN |
Messages routed correctly |
30 |
Relay with VLAN |
Relay on different VLAN |
Routing and relay function properly |
31 |
Relay with Wireshark |
Capture packets |
Relay messages visible |
32 |
Relay with Nmap |
Use nmap to detect DHCPv6 |
Relay detected |
33 |
Relay with Python Script |
Use scapy or dhcp6 client via relay |
Messages relayed correctly |
34 |
Relay with Linux Client |
Use dhclient via relay |
Address assigned |
35 |
Relay with Windows Client |
Use netsh via relay |
Address assigned |
36 |
Relay with macOS Client |
Use built-in DHCPv6 via relay |
Address assigned |
37 |
Relay with Router |
Router acts as relay |
Clients receive configuration |
38 |
Relay with Stateless Client |
Stateless client via relay |
Receives configuration |
39 |
Relay with Stateful Client |
Stateful client via relay |
Receives address and lease |
40 |
Relay with Rebooted Client |
Client reboots and sends via relay |
Server processes normally |
41 |
Relay with Interface Change |
Client changes interface |
Relay forwards new Solicit |
42 |
Relay with DUID Change |
Client DUID changes |
Server treats as new client |
43 |
Relay with Server Restart |
Server restarts |
Relay resumes forwarding |
44 |
Relay with Client Timeout |
Client times out |
Relay retries or logs |
45 |
Relay with Duplicate Message |
Relay forwards duplicate message |
Server handles idempotently |
46 |
Relay with Reconfigure Retry |
Server retries Reconfigure via relay |
Client eventually responds |
47 |
Relay with Multiple Interfaces |
Relay handles multiple interfaces |
Server distinguishes via Interface-ID |
48 |
Relay with Multiple Clients |
Relay handles many clients |
Server processes all requests |
49 |
Relay with Option Overload |
Relay includes many options |
Server processes all valid options |
50 |
Relay with Fragmented Packets |
Relay handles fragmented DHCPv6 messages |
Server reassembles and processes |
Authentication Support - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Authentication Option Present |
Client includes authentication option |
Server validates credentials |
2 |
Authentication Option Absent |
Client omits authentication option |
Server may reject or ignore |
3 |
Valid Authentication Data |
Client sends valid authentication info |
Server accepts and processes |
4 |
Invalid Authentication Data |
Client sends incorrect authentication info |
Server rejects message |
5 |
Replay Attack Detection |
Client reuses old authentication info |
Server detects and rejects |
6 |
Authentication with Solicit |
Client sends Solicit with authentication |
Server responds with Advertise |
7 |
Authentication with Request |
Client sends Request with authentication |
Server responds with Reply |
8 |
Authentication with Renew |
Client sends Renew with authentication |
Server renews lease |
9 |
Authentication with Rebind |
Client sends Rebind with authentication |
Server rebinds lease |
10 |
Authentication with Release |
Client sends Release with authentication |
Server acknowledges release |
11 |
Authentication with Decline |
Client sends Decline with authentication |
Server marks address as unusable |
12 |
Authentication with Confirm |
Client sends Confirm with authentication |
Server validates and confirms |
13 |
Authentication with Reconfigure |
Server sends Reconfigure with authentication |
Client validates and responds |
14 |
Authentication with Relay Agent |
Relay forwards authenticated message |
Server processes correctly |
15 |
Authentication with IA_NA |
Client requests IA_NA with authentication |
Server assigns address |
16 |
Authentication with IA_PD |
Client requests prefix with authentication |
Server assigns prefix |
17 |
Authentication with IA_TA |
Client requests temporary address with authentication |
Server assigns temporary address |
18 |
Authentication with Option Request |
Client requests options with authentication |
Server includes requested options |
19 |
Authentication with Elapsed Time |
Client includes elapsed time |
Server uses for retransmission logic |
20 |
Authentication with Preference |
Server includes preference |
Client selects preferred server |
21 |
Authentication with Status Code |
Server includes status code |
Client interprets result |
22 |
Authentication with DNS Option |
Server provides DNS info |
Client configures DNS |
23 |
Authentication with Domain Option |
Server provides domain list |
Client configures domain search |
24 |
Authentication with Vendor Option |
Server includes vendor-specific info |
Client processes vendor data |
25 |
Authentication with FQDN Option |
Client registers FQDN |
Server updates DNS |
26 |
Authentication with Boot File URL |
Server provides boot file URL |
Client downloads boot file |
27 |
Authentication with NTP Option |
Server provides NTP server info |
Client configures time sync |
28 |
Authentication with Captive Portal |
Server provides captive portal URI |
Client redirects to portal |
29 |
Authentication with Logging Enabled |
Enable logs on server and client |
Logs show authentication exchange |
30 |
Authentication with Invalid Format |
Client sends malformed authentication option |
Server ignores or logs error |
31 |
Authentication with High Load |
Many clients authenticate |
Server handles load |
32 |
Authentication with NAT |
Client behind NAT |
Authentication processed correctly |
33 |
Authentication with VPN |
Client on VPN |
Authentication processed correctly |
34 |
Authentication with VLAN |
Client on different VLAN |
Authentication processed correctly |
35 |
Authentication with Wireshark |
Capture packets |
Authentication visible in DHCPv6 messages |
36 |
Authentication with Nmap |
Use nmap to detect DHCPv6 |
Authentication support detected |
37 |
Authentication with Python Script |
Use scapy or dhcp6 client |
Authentication processed correctly |
38 |
Authentication with Linux Client |
Use dhclient with authentication |
Server validates and assigns lease |
39 |
Authentication with Windows Client |
Use netsh with authentication |
Server validates and assigns lease |
40 |
Authentication with macOS Client |
Use built-in DHCPv6 with authentication |
Server validates and assigns lease |
41 |
Authentication with Router |
Router authenticates |
Server assigns configuration |
42 |
Authentication with Stateless Client |
Stateless client authenticates |
Server provides configuration options |
43 |
Authentication with Stateful Client |
Stateful client authenticates |
Server assigns address and lease |
44 |
Authentication with Rebooted Client |
Client reboots and authenticates |
Server validates and confirms |
45 |
Authentication with Interface Change |
Client changes interface |
Server revalidates authentication |
46 |
Authentication with DUID Change |
Client DUID changes |
Server treats as new client |
47 |
Authentication with Server Restart |
Server restarts |
Authentication resumes normally |
48 |
Authentication with Client Timeout |
Client times out |
Server retries or logs |
49 |
Authentication with Duplicate Message |
Client sends duplicate message |
Server handles idempotently |
50 |
Authentication with Replay Protection |
Server implements replay protection |
Old messages rejected |
Dual Stack Coexistence - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Dual Stack Initialization |
Enable both IPv4 and IPv6 on client |
Both stacks initialize successfully |
2 |
IPv4 DHCP Lease |
Client obtains IPv4 address via DHCP |
IPv4 address assigned |
3 |
IPv6 DHCPv6 Lease |
Client obtains IPv6 address via DHCPv6 |
IPv6 address assigned |
4 |
IPv6 SLAAC Address |
Client configures IPv6 via SLAAC |
SLAAC address assigned |
5 |
IPv4 and IPv6 Coexistence |
Client uses both stacks simultaneously |
Both addresses functional |
6 |
IPv4 Lease Renewal |
Client renews IPv4 lease |
Lease renewed |
7 |
IPv6 Lease Renewal |
Client renews IPv6 lease |
Lease renewed |
8 |
IPv4 Lease Expiry |
IPv4 lease expires |
Address released |
9 |
IPv6 Lease Expiry |
IPv6 lease expires |
Address released |
10 |
IPv4 and IPv6 DNS Resolution |
Client resolves DNS over both stacks |
DNS works over both |
11 |
IPv4 Preferred |
Client prefers IPv4 for connections |
IPv4 used by default |
12 |
IPv6 Preferred |
Client prefers IPv6 for connections |
IPv6 used by default |
13 |
IPv4-only Server |
Client connects to IPv4-only server |
Connection succeeds via IPv4 |
14 |
IPv6-only Server |
Client connects to IPv6-only server |
Connection succeeds via IPv6 |
15 |
Dual Stack Server |
Client connects to dual stack server |
Chooses preferred stack |
16 |
IPv4 DHCP Server Unavailable |
Only IPv6 DHCPv6 server available |
Client uses IPv6 only |
17 |
IPv6 DHCP Server Unavailable |
Only IPv4 DHCP server available |
Client uses IPv4 only |
18 |
IPv4 NAT Traversal |
Client behind NAT uses IPv4 |
NAT traversal successful |
19 |
IPv6 NAT Traversal |
Client behind NAT uses IPv6 |
NAT traversal not required |
20 |
IPv4 Firewall |
IPv4 traffic filtered |
IPv6 still functional |
21 |
IPv6 Firewall |
IPv6 traffic filtered |
IPv4 still functional |
22 |
IPv4 DNS Option |
DHCP server provides IPv4 DNS |
Client configures DNS |
23 |
IPv6 DNS Option |
DHCPv6 server provides IPv6 DNS |
Client configures DNS |
24 |
IPv4 Lease Release |
Client releases IPv4 lease |
Server acknowledges |
25 |
IPv6 Lease Release |
Client releases IPv6 lease |
Server acknowledges |
26 |
IPv4 and IPv6 Logging |
Enable logs for both stacks |
Logs show dual stack activity |
27 |
IPv4 and IPv6 Packet Capture |
Capture traffic on both stacks |
Packets visible for both |
28 |
IPv4 and IPv6 Ping |
Ping both IPv4 and IPv6 addresses |
Both respond |
29 |
IPv4 and IPv6 Traceroute |
Run traceroute on both stacks |
Paths traced correctly |
30 |
IPv4 and IPv6 DHCP Options |
Validate DHCP options for both stacks |
Options received correctly |
31 |
IPv4 and IPv6 Lease Timers |
Validate lease timers |
Timers function independently |
32 |
IPv4 and IPv6 Conflict Detection |
Detect address conflicts |
Conflicts resolved per stack |
33 |
IPv4 and IPv6 Reboot Recovery |
Reboot client |
Both stacks reinitialize |
34 |
IPv4 and IPv6 Interface Change |
Change network interface |
Both stacks reconfigure |
35 |
IPv4 and IPv6 Server Restart |
Restart DHCP servers |
Clients rebind or renew |
36 |
IPv4 and IPv6 Stateless Mode |
Use SLAAC and DHCP for IPv4 |
Stateless IPv6 and stateful IPv4 |
37 |
IPv4 and IPv6 Stateful Mode |
Use DHCP for both stacks |
Both addresses assigned |
38 |
IPv4 and IPv6 with VLANs |
Use VLANs for dual stack |
Both stacks operate per VLAN config |
39 |
IPv4 and IPv6 with VPN |
Use VPN with dual stack |
Both stacks tunnel traffic |
40 |
IPv4 and IPv6 with Proxy |
Use HTTP proxy |
Proxy handles both stacks |
41 |
IPv4 and IPv6 with DNS Suffix |
Configure DNS suffix for both |
Resolution works for both |
42 |
IPv4 and IPv6 with Hostname |
Hostname resolves to both A and AAAA |
Client uses preferred stack |
43 |
IPv4 and IPv6 with DHCP Failover |
Simulate DHCP server failover |
Clients maintain leases |
44 |
IPv4 and IPv6 with Relay Agent |
Use relay for both stacks |
Messages relayed correctly |
45 |
IPv4 and IPv6 with Authentication |
Use authentication for both |
Server validates both |
46 |
IPv4 and IPv6 with Reconfigure |
Server sends Reconfigure |
Clients respond per stack |
47 |
IPv4 and IPv6 with Logging |
Enable detailed logging |
Logs show dual stack events |
48 |
IPv4 and IPv6 with Wireshark |
Analyze traffic with Wireshark |
Dual stack packets visible |
49 |
IPv4 and IPv6 with Performance Test |
Run throughput tests |
Measure per-stack performance |
50 |
IPv4 and IPv6 with Application Testing |
Test apps over both stacks |
Apps work on both protocols |
Support for Mobile & IoT - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Mobile Device Solicit |
Mobile device sends Solicit |
Server responds with Advertise |
2 |
IoT Device Solicit |
IoT device sends Solicit |
Server responds with Advertise |
3 |
Mobile Device Request |
Mobile device sends Request |
Server responds with Reply |
4 |
IoT Device Request |
IoT device sends Request |
Server responds with Reply |
5 |
Mobile Device Lease Renewal |
Mobile device renews lease |
Server updates lease |
6 |
IoT Device Lease Renewal |
IoT device renews lease |
Server updates lease |
7 |
Mobile Device Rebind |
Mobile device rebinds after T2 |
Server responds with updated lease |
8 |
IoT Device Rebind |
IoT device rebinds after T2 |
Server responds with updated lease |
9 |
Mobile Device Roaming |
Device moves to new network |
Sends new Solicit |
10 |
IoT Device Reboot |
IoT device reboots |
Sends Confirm or Solicit |
11 |
Mobile Device Sleep/Wake |
Device wakes from sleep |
Sends Renew or Rebind |
12 |
IoT Device Sleep/Wake |
IoT device wakes from low-power mode |
Sends Renew or Rebind |
13 |
Stateless IoT Configuration |
IoT device uses Information-Request |
Server provides DNS and domain info |
14 |
Mobile Device Stateless Config |
Mobile device uses stateless mode |
Receives configuration options |
15 |
Low Power IoT Lease Timing |
Validate long lease times |
Device remains connected |
16 |
Mobile Device Lease Expiry |
Lease expires |
Device stops using address |
17 |
IoT Device Lease Expiry |
Lease expires |
Device stops using address |
18 |
Mobile Device with Rapid Commit |
Uses 2-message exchange |
Server replies with Reply |
19 |
IoT Device with Rapid Commit |
Uses 2-message exchange |
Server replies with Reply |
20 |
Mobile Device with DUID |
Sends unique DUID |
Server identifies device |
21 |
IoT Device with DUID |
Sends unique DUID |
Server identifies device |
22 |
Mobile Device with IA_NA |
Requests non-temporary address |
Server assigns address |
23 |
IoT Device with IA_NA |
Requests non-temporary address |
Server assigns address |
24 |
Mobile Device with IA_PD |
Requests prefix delegation |
Server assigns prefix |
25 |
IoT Device with IA_PD |
Requests prefix delegation |
Server assigns prefix |
26 |
Mobile Device with Option Request |
Requests DNS and domain options |
Server includes options |
27 |
IoT Device with Option Request |
Requests minimal options |
Server includes options |
28 |
Mobile Device with Authentication |
Includes authentication info |
Server validates |
29 |
IoT Device with Authentication |
Includes authentication info |
Server validates |
30 |
Mobile Device with Reconfigure |
Server sends Reconfigure |
Device sends Renew or Info-Request |
31 |
IoT Device with Reconfigure |
Server sends Reconfigure |
Device sends Info-Request |
32 |
Mobile Device with Relay Agent |
Message forwarded via relay |
Server processes correctly |
33 |
IoT Device with Relay Agent |
Message forwarded via relay |
Server processes correctly |
34 |
Mobile Device with NAT |
Behind NAT |
DHCPv6 works with link-local |
35 |
IoT Device with NAT |
Behind NAT |
DHCPv6 works with link-local |
36 |
Mobile Device with VPN |
Uses VPN |
DHCPv6 may be tunneled |
37 |
IoT Device with VPN |
Uses VPN |
DHCPv6 may be tunneled |
38 |
Mobile Device with VLAN |
On VLAN |
DHCPv6 works if routing is correct |
39 |
IoT Device with VLAN |
On VLAN |
DHCPv6 works if routing is correct |
40 |
Mobile Device with Wireshark |
Capture DHCPv6 packets |
Packets visible |
41 |
IoT Device with Wireshark |
Capture DHCPv6 packets |
Packets visible |
42 |
Mobile Device with Logging |
Enable logs |
Logs show DHCPv6 flow |
43 |
IoT Device with Logging |
Enable logs |
Logs show DHCPv6 flow |
44 |
Mobile Device with Packet Loss |
Drop some packets |
Retransmission occurs |
45 |
IoT Device with Packet Loss |
Drop some packets |
Retransmission occurs |
46 |
Mobile Device with Sleep Timer |
Sleeps during lease |
Wakes and renews |
47 |
IoT Device with Sleep Timer |
Sleeps during lease |
Wakes and renews |
48 |
Mobile Device with Dual Stack |
Uses IPv4 and IPv6 |
Both addresses assigned |
49 |
IoT Device with Dual Stack |
Uses IPv4 and IPv6 |
Both addresses assigned |
50 |
Mobile/IoT Device with Firmware Update |
Reboots after update |
Sends Confirm or Solicit |
Reference links