                          IPv6 support on Linux

status

The first IPv6 related network code was added to the Linux kernel 2.1.8
in November 1996 by Pedro Roque.

Because of the lack of manpower, the IPv6 implementation in the kernel 
was unable to follow the discussed drafts or newly released RFCs. In 
October 2000, a project was started in Japan, called USAGI, whose aim 
was to implement all missing, or outdated IPv6 support in Linux. It 
tracks the current IPv6 implementation in FreeBSD made by the KAME 
project. From time to time they create snapshots against current vanilla 
Linux kernel sources. Unfortunately, the USAGI patch is so big, that 
current Linux networking maintainers are unable to include it in the 
production source of the Linux kernel 2.4.x series. Therefore the 2.4.x 
series is missing some (many) extensions and also does not confirm to 
all current drafts and RFCs. This can cause some interoperability 
problems with other operating systems, such as FreeBSD. 

tunnel support

From linux 2.2+ to linux 2.4.x, it supports three flavors of tunnels, 
listed in the following table:

Mode     Description          Base device
ipip     ipv4 over ipv4        tunl0
sit      ipv6 over ipv4        sit0
gre      any over GRE over IP  gre0

The latest stable version of the linux kernel is 2.4.22, which belongs to 
kernel 2.4.x series. It is missing capability to support the mode of ipv6 
over ipv6 tunnels. 

future

USAGI is now making use of the new Linux kernel development series 2.5.x to 
insert all of their current extensions into this development release. 
Hopefully the 2.6.x kernel series will contain a true and up-to-date IPv6 
implementation.


