This is an old revision of the document!

Matthew Iselin: IPv6 Implementation


I'll update this with notes and links to websites I find as I'm working on the project that might be handy later on. The notes here may also be the foundation for the IPv6 documentation later on.

Useful RFCs


Repo Notes

  • Developing on branch 'develop'
  • Will bring commits into master when they are ready for upstream merging. This way I can rebase them and merge several related commits into one larger commit for submission upstream (or mix several “oops” commits into the commit that originally contained the mistake).
  • Can bring upstream changes into develop branch via master

Notes to Self

  • Can't get network interface's MAC address within a TCPIP protocol (eg ICMP, UDP). Will need to have a user begin the process of autoconfiguration for a link-local address manually!
  • Link-local address must always be present, globally routed address can be obtained via router advertisements or DHCPv6 (and may not exist). How do we manage this for potential users?
  • Probably worth fixing DNS to use AAAA records earlier rather than later.
  • Packet Dumps and relevant notes.


Setting up IPv6 on your network

To work with IPv6 in gPXE on your network, you will need both an IPv6 prefix and a router advertisement daemon. If you like, you can set up DHCPv6 for your network for address assignment. A router advertisement daemon will still be required for routing, but in the future DHCPv6 will offer boot filenames and other boot-related options.

The best place to get an IPv6 is your ISP, but if your ISP does not offer IPv6, Hurricane Electric offers a fairly stable and easy-to-use tunnel. HE also provides configuration commands for a wide range of operating systems. These should be able to be copied and pasted into a terminal on your workstation to set up IPv6 connectivity quickly and easily. There are a variety of tutorials on the internet that will cover adding router advertisements and/or DHCPv6 to an IPv6 tunnel.

Booting over IPv6 in gPXE is quite simple: instead of using the 'dhcp' command (ala IPv4), you use the 'ipv6' command. This obtains an address and sets up routing for IPv6 so that you can use IPv6 servers.

You can use the following script to test gPXE's HTTP boot over IPv6:

ipv6 any
kernel root=100

(note: flash6 may need these image files uploaded - TODO!)

This should boot a Linux kernel.

If you don't have a DNS name for an IPv6 host, you can boot from an IPv6 address using the following syntax:


Note that zero compression ("Compressing Zeroes" section) can be used for all IPv6 addresses.

QR Code
QR Code soc:2011:pcmattman:notes:start (generated for current page)