09-05-2024 02:14 PM
How do you configure TFTP option for IP Phones and a Microsoft DHCPv6 server? Docs state it should be Vendor ID 9, suboption 1 and then the list of both TFTP IPv6 addresses. Microsoft has a define Vendor Class, with a field called Vendor ID which assume should be 9. Then the next field is an open Hexadecimal field to fill out. Not sure how to define suboption 1, then might need a length field and the options some how. Any one have a working example or formula to generate the correct binary values for this?
04-29-2025 01:53 PM
Does anyone know? I have the same issue.
04-29-2025 03:51 PM
Both Microsoft and our Microsoft partners failed to make this work. Infoblox shows a solution for a paid software alternative. Our go to solution for customers now is to use SLAAC for phones and have them get their options from the a local Cisco router. Using M=0, A=1, O=1 will disable DHCP, use SLAAC to generate an address, but then will go do DHCP to get their options which we point the IPv6 relay to a Cisco router and have it hand out the TFTP, DNS, and domain name. This uses the Cisco router, but keeps the load light. Since not handing out addresses you don't need a scope for each subnet, just one set of global configs for all. Not using DHCP is a shock to network and security teams, but when you drill down to why they need it, there are better ways to handle their needs and tracking abilities.
07-10-2025 05:46 AM - edited 07-11-2025 07:07 AM
The vendor class Ascii data can be found in the dhcpv6 solicit packet from the phone if you do a packet capture. The class asciidata should be "Cisco IP Phone" from what I've seen. From the Windows DHCP server try this:
powershell:
$voip_prefix = '' # Enter VoIP IPv6 Prefix here
$tftpv6_addresses = "address1" , "address2"
$tftp_fqdns = "FQDN1" , "FQDN2"
# Vendor Classes must be defined based on IANA, the phone's DHCPv6 solicit, and hopefully one day the vendor documentation..
add-DhcpServerv6Class -Name "CiscoPhones" -VendorID 9 -Type Vendor -AsciiData "Cisco IP Phone"
add-DhcpServerv6OptionDefinition -Name "Cisco VoIP TFTPv6 Addresses" -VendorClass "CiscoPhones" -OptionId 1 -Type IPv6Address -MultiValued
add-DhcpServerv6OptionDefinition -Name "Cisco VoIP TFTPv6 FQDN" -VendorClass "CiscoPhones" -OptionId 2 -Type String -MultiValued
Option 1, no DNS needed:
set-DhcpServerv6OptionValue -Prefix $voip_prefix -VendorClass "CiscoPhones" -OptionId 1 -Value $tftpv6_addresses
Option 2, DNS support needed for phones to resolve FQDNs:
set-DhcpServerv6OptionValue -Prefix $voip_prefix -VendorClass "CiscoPhones" -OptionId 2 -Value $tftp_fqdns
Bonus:
if you want to set the value for all cisco phones and all scopes, remove the scope above like so:
set-DhcpServerv6OptionValue -VendorClass "CiscoPhones" -OptionId 1 -Value $tftpv6_addresses
Setting the value by prefix is handy if you need to have different settings per scope, like if you are using a regional or enterprise set of DHCP servers supporting multiple sites with different call managers.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide