1) Take the mac address: for example de:ad:be:ef:ed:00
2) Throw ff:fe in the middle: de:ad:be:ff:fe:ef:ed:00
3) Reformat to IPv6 notation dead:beff:feef:ed00
4) Convert the first octet from hexadecimal to binary: de -> 11011110
5) Invert the bit at index 6 (counting from 0): 11011110 -> 11011100
6) Convert octet back to hexadecimal: 01010000 -> dc
7) Replace first octet with newly calculated one: dcad:beff:feef:ed00
8) Prepend the link-local prefix: fe80::dcad:beff:feef:ed00
Link-local IPv6 addresses are used as part of the IPv6 network auto-configuration process.
Instead of getting an address via DHCP, a NIC will hop on the network with a link-local IPv6
address and with this will have to ability to do further configuration automatically
(soliciting neighbors, router, etc.).
This link-local IPv6 is inferred from the NIC’s mac address.
Since 'Windows Vista' Windows uses random ipv6 link-local addresses.
You can force it to use EUI-64-based interface IDs with the command:
netsh interface ipv6 set global randomizeidentifiers=disabled