This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
soc:2011:pcmattman:notes:start [2011/05/23 04:00]
pcmattman added links to RFCs and existing code
soc:2011:pcmattman:notes:start [2011/08/15 18:34] (current)
pcmattman added information about building from source
Line 10: Line 10:
   * [[http://​www.faqs.org/​rfcs/​rfc2462.html|RFC 2462 (IPv6 Stateless Address Autoconfiguration)]]   * [[http://​www.faqs.org/​rfcs/​rfc2462.html|RFC 2462 (IPv6 Stateless Address Autoconfiguration)]]
   * [[http://​www.faqs.org/​rfcs/​rfc3315.html|RFC 3315 (DHCPv6)]]   * [[http://​www.faqs.org/​rfcs/​rfc3315.html|RFC 3315 (DHCPv6)]]
 +  * [[http://​wiki.tools.ietf.org/​html/​rfc5970|RFC 5970 (DHCPv6 Network boot options)]]
 ==== Code ==== ==== Code ====
   * [[http://​pedigree-project.org/​projects/​pedigree/​repository/​revisions/​develop/​entry/​src/​modules/​system/​network-stack|Pedigree'​s network stack]] with IPv6 support (new BSD license)   * [[http://​pedigree-project.org/​projects/​pedigree/​repository/​revisions/​develop/​entry/​src/​modules/​system/​network-stack|Pedigree'​s network stack]] with IPv6 support (new BSD license)
 +==== 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.
 +  * [[soc/​2011/​pcmattman/​notes/​packetdumps/​start|Packet Dumps]] and relevant notes.
 +===== Tutorials =====
 +==== Building gPXE with IPv6 Enabled ====
 +By default, IPv6 is disabled in gPXE. You must explicitly build IPv6 support into gPXE in order to use it.
 +The easiest way to do this is to use ROM-o-matic (http://​rom-o-matic.net) with the "​current-top-of-git-tree"​ and make sure NET_PROTO_IPV6 and IPV6_CMD are both ticked before you finish creating your image. However, if you do not want to use ROM-o-matic,​ you can uncomment/​define NET_PROTO_IPV6 and IPV6_CMD in src/​config/​general.h. These should both already exist in the file (in a disabled state).
 +The following are valid DEBUG entries if you wish to enable debugging:
 +  * ipv6 - the IPv6 protocol itself. Use to see errors in traffic coming in and out, and to see address assignment and other routing information.
 +  * ip6mgmt - the IPv6 commands. This will output extra information during the process of configuring IPv6 at runtime.
 +  * icmpv6 - ICMPv6. Mostly just errors.
 +  * ndp - Neighbour Discovery Protocol. A lot of debugging here related to router and neighbour discovery. Recommended if you are having trouble enabling IPv6 in your environment.
 +  * dhcp6 - DHCPv6. Debugging related to DHCPv6. Only really worth using if you actually have a DHCPv6 server, and if you are having trouble with it.
 +==== 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, [[http://​www.tunnelbroker.net|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 http://​flash6.etherboot.org/​gpxe/​bz2bzImage root=100
 +initrd http://​flash6.etherboot.org/​gpxe/​initrd.bz2
 +(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 [[http://​msdn.microsoft.com/​en-us/​library/​aa921042.aspx|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)