DHCPv6 (option 59 ) is supported and sent in Advertise/Reply., TFTP is delivered via option 59 (bootfile-url) is supported and sent in Advertise/Reply


Overview

DHCPv6 Option 59 (Boot File URL) is supported on Versa SD-WAN. The option is sent by the server in both the Advertise and Reply messages, delivering the TFTP boot file URL to the requesting client.

Configuration

Enable Option 59 (boot-file-url) under the DHCPv6 options profile, then reference that profile from the DHCPv6 server/relay service:

config
dhcp6-options-profiles {
    win-option6 {
        dns-server [ 2001:172:18:12::221 ];
        custom-options {
            custom_code {
                persistent false;
                code       59;
                type-value {
                    string tftp://[2001:db8::10]/bootfile.efi;
                }
            }
            boot-file-url {
                persistent true;
            }
        }
    }
}
dhcp6-server-and-relay {
    log-unmatched-requests false;
    lef-profile            Default-Logging-Profile;
    ipv6-service-profiles {
        dhcpv6-server-match {
            dhcp-request-match {
                networks [ LAN2 ];
            }
            dhcp-service-type {
                allocate-address {
                    static {
                        address-type {
                            from-profile static_map1;
                        }
                    }
                }
            }
            dhcp-log-settings {
                log-new-allocations true;
                log-renewals        true;
            }
            options-profile win-option6;
        }
    }
}

Verification: Packet Capture

A capture on the branch WAN interface confirms Option 59 (opt_59) is requested by the client and returned by the server in both the Advertise and Reply messages:

admin@SDWAN-Branch1-cli> tcpdump vni-0/3 filter "'port 546 or 547 -vvv'"
Starting capture on vni-0/3
tcpdump: listening on _vni_0_3, link-type EN10MB (Ethernet), capture size 2000 bytes
07:33:12.681209 52:0a:c0:ba:03:02 > 33:33:00:01:00:02, ethertype 802.1Q (0x8100), length 157: vlan 102, p 0, ethertype IPv6, (flowlabel 0xaec52, hlim 1, next-header UDP (17) payload length: 99) fe80::500a:c0ff:feba:302.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=d1056a (client-ID hwaddr/time type 1 time 841822345 520ac0ba0302) (option-request Client-FQDN opt_59 opt_60 DNS-server DNS-search-list) (elapsed-time 0) (Client-FQDN) (IA_NA IAID:3233415938 T1:3600 T2:5400 (IA_ADDR 2001:172:18:12::100 pltime:7200 vltime:10800)))
07:33:12.681227 52:0a:c0:ba:04:05 > 52:0a:c0:ba:03:02, ethertype 802.1Q (0x8100), length 241: vlan 102, p 0, ethertype IPv6, (flowlabel 0x6ab37, hlim 64, next-header UDP (17) payload length: 183) fe80::500a:c0ff:feba:405.547 > fe80::500a:c0ff:feba:302.546: [udp sum ok] dhcp6 advertise (xid=d1056a (client-ID hwaddr/time type 1 time 841822345 520ac0ba0302) (server-ID hwaddr/time type 1 time 841482358 520ac0ba0401) (IA_NA IAID:3233415938 T1:1000 T2:2000 (IA_ADDR 2001:172:18:12::100 pltime:2000 vltime:4000)) (DNS-server 2001:172:18:12::221) (Client-FQDN) (opt_59))
07:33:13.761229 52:0a:c0:ba:03:02 > 33:33:00:01:00:02, ethertype 802.1Q (0x8100), length 175: vlan 102, p 0, ethertype IPv6, (flowlabel 0xaec52, hlim 1, next-header UDP (17) payload length: 117) fe80::500a:c0ff:feba:302.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=c4489d (client-ID hwaddr/time type 1 time 841822345 520ac0ba0302) (server-ID hwaddr/time type 1 time 841482358 520ac0ba0401) (option-request Client-FQDN opt_59 opt_60 DNS-server DNS-search-list) (elapsed-time 0) (Client-FQDN) (IA_NA IAID:3233415938 T1:3600 T2:5400 (IA_ADDR 2001:172:18:12::100 pltime:7200 vltime:7500)))
07:33:13.761243 52:0a:c0:ba:04:05 > 52:0a:c0:ba:03:02, ethertype 802.1Q (0x8100), length 241: vlan 102, p 0, ethertype IPv6, (flowlabel 0x6ab37, hlim 64, next-header UDP (17) payload length: 183) fe80::500a:c0ff:feba:405.547 > fe80::500a:c0ff:feba:302.546: [udp sum ok] dhcp6 reply (xid=c4489d (client-ID hwaddr/time type 1 time 841822345 520ac0ba0302) (server-ID hwaddr/time type 1 time 841482358 520ac0ba0401) (IA_NA IAID:3233415938 T1:1000 T2:2000 (IA_ADDR 2001:172:18:12::100 pltime:2000 vltime:4000)) (DNS-server 2001:172:18:12::221) (Client-FQDN) (opt_59))

Verification: Client Lease File

The client’s DHCPv6 lease file confirms the bootfile URL was received and applied:

versa@SDWAN-Client:~$ sudo ip netns exec Client1-Tenant2 cat /var/lib/dhcp/dhclient6.leases
default-duid "\000\001\000\0012-/7R\012\300\272\003\002";
lease6 {
  interface "eth1.102";
  ia-na c0:ba:03:02 {
    starts 1788506809;
    renew 1000;
    rebind 2000;
    iaaddr 2001:172:18:12::20 {
      starts 1788506809;
      preferred-life 2000;
      max-life 4000;
    }
  }
  option fqdn.encoded true;
  option fqdn.server-update false;
  option fqdn.no-client-update false;
  option fqdn.fqdn "myhost-2001-172-18-12--20";
  option fqdn.hostname "myhost-2001-172-18-12--20";
  option dhcp6.client-id 0:1:0:1:32:2d:2f:37:52:a:c0:ba:3:2;
  option dhcp6.server-id 0:1:0:1:32:28:0:76:52:a:c0:ba:4:1;
  option dhcp6.name-servers 2001:172:18:12::221;
option dhcp6.bootfile-url "tftp://[2001:db8::10]/bootfile.efi";

Summary

DHCPv6 Option 59 (Boot File URL) works end-to-end on Versa SD-WAN: it is requested by the client, returned by the server in the Advertise and Reply messages, and correctly applied in the client’s lease as dhcp6.bootfile-url.