{{:Design Warning}}
In DHCPv6, the identifier shifts from MAC address of the specific interface to a system wide DUID. Given the goal of trying to preserve current general behavior, xCAT will have to examine and modify supported install images to generate a consistent DUID that spans installations. Depending on mechanism, it may also be required that xCAT modify stateful installed image to re-source DUID from a secondary source on every boot prior to network bringup to avoid DUID cloning. Four options are possible:
- Use IPv4 to bootstrap and have xCAT hand down arbitrary DUIDs managed centrally
- Use DUID-LL to generate the same DUID regardless of time and refresh DUID contents on every boot (may be considered a violation of RFC3315 with regards to behavior on NIC change)
- Use DUID-EN to derive an identifier out of some enterprise number and the UUID. This may be workable for OS installs, but not likely to match netboot firmware. Note we'd have to not use the vendor number of the provider of the equipment, as that would be a violation of the RFC unless that vendor has signed off on it explicitly.
- Get a new DUID method adopted in the industry (preferred option, http://tools.ietf.org/html/draft-narten-dhc-duid-uuid-01 in progress)
- DUID-UUID an optimal solution, where the DUID contents is simply a well-known type number (i.e. 4) plus UUID
- UUID validity assurance required for replacement parts (cross-vendor implementation a challenge).
- If UUID invalid, fallback to DUID-LLT
- If DUID-LLT, boot discovery image, discovery image gets system discovered and on a system without existing UUID in xCAT, generate a new one, if replacement detected, restore old UUID
For each existing platform, must pre-populate DUID prior to network bringup.
For dhcp6c systems (RHEL5, SLES11, and similar vintage):
- Update /var/lib/dhcpv6/dhcp6c_duid
- Binary file, first two bytes DUID length followed by DUID in binary representation
- POWER/x86 Endian difference matters, bytes in file are host-order, not network-order
- xxd Can be used to create dhcp6c_duid
- RHEL5, little hope for provisioning time DUID type switch before it gets stage2, initrd too monolithic
- Unfortunately, it only works once. dhcp6c successfully reads and uses the DUID, but on exit corrupts the DUID by trancating it.
For Windows Vista/2k8 and newer:
- Modify HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\Dhcpv6DUID
- Already checked into 2.5 using wmic to get the UUID
For ISC DHCP 4+ clients (i.e. RHEL6, ESXi4.1):
-
Modify dhclient6.leases to have a 'defualt-duid' setting amenable to our needs. For example, if a system had UUID c4b72aec-bdd3-42a3-8d47-76b79a8a9c95:
default-duid "\000\004\304\267*\354\275\323B\243\215Gv\267\232\212\234\225";
-
Rough perl code to convert hex UUID to this string format:
$uuid =~ s/-//g; $uuid =~ s/://g; $uuid =~ s/(..)/\1:/g; my @uuid = split /:/,$uuid; foreach (@uuid) { $_ = hex($); if ($
-
More useful shell code to extract and convert UUID that could be executed from the stock RHEL6 install initrd:
duid='default-duid "\000\004'; for i in
sed -e s/-//g -e 's/\(..\)/\1 /g' /sys/devices/virtual/dmi/id/product_uuid
; do num=printf "%d" 0x$i
octnum=printf "\\%03o" 0x$i
if [ $num -lt 127 -a $num -gt 31 ]; then octnum=printf $octnum
fi duid=$duid$octnum done duid=$duid'";' echo $duid > <leasefilehere> -
Extracting UUID:
- Linux systems use dmidecode
- Windows systems use wmic csproduct
- xCAT has an implementation checked into 2.5 (pending finalizing the DUID type number)
- ESXi uses vsish -e get /hardware/machineUUID
- xCAT has an implementation checked in for ESXi stateless 4.1 (pending finalizing the DUID type number)
- RHEL6 /sys/devices/virtual/dmi/id/product_uuid
News
- Apr 22, 2016: xCAT 2.11.1 released.
- Mar 11, 2016: xCAT 2.9.3 (AIX only) released.
- Dec 11, 2015: xCAT 2.11 released.
- Nov 11, 2015: xCAT 2.9.2 (AIX only) released.
- Jul 30, 2015: xCAT 2.10 released.
- Jul 30, 2015: xCAT migrates from sourceforge to github
- Jun 26, 2015: xCAT 2.7.9 released.
- Mar 20, 2015: xCAT 2.9.1 released.
- Dec 12, 2014: xCAT 2.9 released.
- Sep 5, 2014: xCAT 2.8.5 released.
- May 23, 2014: xCAT 2.8.4 released.
- Jan 24, 2014: xCAT 2.7.8 released.
- Nov 15, 2013: xCAT 2.8.3 released.
- Jun 26, 2013: xCAT 2.8.2 released.
- May 17, 2013: xCAT 2.7.7 released.
- May 10, 2013: xCAT 2.8.1 released.
- Feb 28, 2013: xCAT 2.8 released.
- Nov 30, 2012: xCAT 2.7.6 released.
- Oct 29, 2012: xCAT 2.7.5 released.
- Aug 27, 2012: xCAT 2.7.4 released.
- Jun 22, 2012: xCAT 2.7.3 released.
- May 25, 2012: xCAT 2.7.2 released.
- Apr 20, 2012: xCAT 2.7.1 released.
- Mar 19, 2012: xCAT 2.7 released.
- Mar 15, 2012: xCAT 2.6.11 released.
- Jan 23, 2012: xCAT 2.6.10 released.
- Nov 15, 2011: xCAT 2.6.9 released.
- Sep 30, 2011: xCAT 2.6.8 released.
- Aug 26, 2011: xCAT 2.6.6 released.
- May 20, 2011: xCAT 2.6 released.
- Feb 14, 2011: Watson plays on Jeopardy and is managed by xCAT!
- xCAT Release Notes Summary
- xCAT OS And Hw Support Matrix
- xCAT Test Environment Summary
History
- Oct 22, 2010: xCAT 2.5 released.
- Apr 30, 2010: xCAT 2.4 is released.
- Oct 31, 2009: xCAT 2.3 released.
xCAT's 10 year anniversary! - Apr 16, 2009: xCAT 2.2 released.
- Oct 31, 2008: xCAT 2.1 released.
- Sep 12, 2008: Support for xCAT 2
can now be purchased! - June 9, 2008: xCAT breaths life into
(at the time) the fastest
supercomputer on the planet - May 30, 2008: xCAT 2.0 for Linux
officially released! - Oct 31, 2007: IBM open sources
xCAT 2.0 to allow collaboration
among all of the xCAT users. - Oct 31, 1999: xCAT 1.0 is born!
xCAT started out as a project in
IBM developed by Egan Ford. It
was quickly adopted by customers
and IBM manufacturing sites to
rapidly deploy clusters.