Table of Contents

Project Plan

Project Summary

This project aims to clean up the existing IPv6 implementation in gPXE and continue implementing such features as autoconfiguration (via router advertisement and stateless autoconfiguration), DNS AAAA records, and DHCPv6.

The goal for this IPv6 implementation is feature parity with the existing IPv4 networking capability in order to provide the best possible experience for users that wish to make use of IPv6.

Weekly Planner

Several of these planned tasks may take place earlier or later than originally intended. This is more or less a guide for the 12 weeks.

Week 1

Implement zero-compression into the IPv6 address print function. This is mainly to get a working build and test environment set up before any significant work is done. Zero-compression in this context is removing repeated zeroes from an address. So, for example, ::1 is the IPv6 loopback address zero-compressed - there are many sets of zeroes that have been removed.

Implement stateless autoconfiguration for IPv6. This will assign an interface an IPv6 address even if it does not perform DHCP or receive a router advertisement. The purpose of this is to get an understanding of how network interfaces in gPXE work and how their address assignment works to the level that will be required for further work in this area.

Week 2

Implement multicast transmission as necessary and add code for multicast reception into IPv6.

Implement missing functionality in ICMPv6 where needed. Neighbour Discovery Protocol is a must-have before anything else can be done - this will be done in this week. This will also be the foundation for the rest of the stack. This should also achieve basic alignment with ICMPv4 - echo requests/responses and such.

Week 3

Implement router advertisements. These allow a router on the network to announce a prefix for all hosts to use. These can be used instead of a DHCPv6 server if a network is designed without DHCPv6.

Start implementing DHCPv6.

Week 4

Implement DHCPv6.

Week 5

This week has been allocated as a week devoted to testing. If any previous week's roles have not been completed at this point, they should be completed during this week.

Week 6

Implement extension headers that are useful or mandatory

Implement IPv6 fragmentation

Week 7

Implement DNS AAAA records. Test this extensively with an IPv4 DNS server that is able to distribute AAAA records.

Begin work on documentation

Week 8

Continue documentation. Both comments in code and external documentation where necessary.

Weeks 9 to 12

Testing. Lots of testing. Catch-up and bug fixing as necessary.

Ideally the community would have access to the code at this point and could attempt to set up an IPv6 gPXE environment themselves.

This will involve a lot of IPv6 stress testing - including but not limited to:

Fragmentation tests

Massive packets, small packets

Packet flood

Autoconfiguration tests

DHCPv6 tests. These will involve a lot of reconfiguration on the DHCPv6 server to try different prefixes and such.