This is an old revision of the document!


Matthew Iselin: IPv6 Implementation

Notes

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

Code

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.

Tutorials

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. DHCPv6 support is coming soon!

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.

Once your network is IPv6-enabled, you will need a router advertisement daemon to advertise the prefix you have been assigned. These router advertisements allow hosts to autoconfigure themselves where a DHCPv6 server is not present.

Note that currently IPv6 in gPXE will not work properly on IPv6 networks with DHCPv6 servers.

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

#!gpxe   
kernel http://ipv6.theiselins.net/gpxe/bz2bzImage root=100
initrd http://ipv6.theiselins.net/gpxe/initrd.bz2
boot

This should boot a Linux kernel.