This is an old revision of the document!

Implementing IPv6 support in gPXE

About the project

My project is titled Implementing IPv6 support in gPXE. Here are some snippets from my proposal.


gPXE uses uIP to implement its TCP/IP stack. uIP is an implementation of the TCP/IP stack which uses a fraction of the resources used by a full fledged TCP/IP implementation.

The project is to implement support for IPv6. uIP (in its current avatar) tightly integrates the TCP and IP layers in order to save code size. As a result, it is not easy to replace IPv4 with any other network layer protocol in uIP. This project aims to re-design the TCP/IP stack of gPXE in order to facilitate IPv6 implementation.


The final deliverables for the project are:

  1. A clean, well-defined interface between the transport-layer and network-layer. The interface would be generic enough to allow any transport layer protocol to interact with any network layer protocol
  2. Re-design and implementation of the TCP/IP stack using the proposed interface (which fits within the gPXE API)
  3. Minimal support for IPv6

The stretch goals for the project are:

  1. Extension of the gPXE API to include UDP
  2. An implementation of UDP/IP (within the extended gPXE API)
  3. Support for additional features in IPv6

Plan of action

Main goals:

  1. Investigate the working of uIP
  2. Define bare necessary requirements of transport layer and network layer
  3. Define the interface between these layers based on the requirements
  4. Implement the TCP, IP modules using the interface
  5. Test implementation; Re-implement if necessary
  6. Increase requirements if necessary and go back to step 2
  7. Investigate minimum requirements to support IPv6
  8. Extend interface/requirements if necessary and go back to step 2
  9. Implement IPv6
  10. If time permits, implement stretch goals

Stretch goals:

  1. Investigate UDP implementation in Etherboot-5.4 and earlier
  2. Extend interface/requirements if necessary and perform steps 2 - 5
  3. Implement UDP support
  4. Investigate various features that can be added to IPv6
  5. Perform steps 7 - 8

Current status

I have tried to update my blog ss frequently as possible with my thoughts. I have listed below my understanding of the problem.

Working of the network infrastructure

Receiving data

Sending data

So, what's wrong?

Redesigning the IP layer



Redesigning the transport layer



The road ahead

Ideas and concepts

To do list


QR Code
QR Code soc:nikhil:under_construction (generated for current page)