IPv6 protocol stack has been implemented in Linux kernel since 1996. In spite of the early implementation of IPv6 in the kernel, the stack wasn't maintained for a long time and became out of date. For instance, Linux host couldn't get IPv6 addresses by stateless address autoconfiguration. It was caused by poorly implementation of neighbor discovery protocol. Considering the situation we started USAGI project in October 2000. Our goal is to develop, integrate and provide high quality, RFC compliant, and free IPv6 stack including IPsec and Mobile IPv6. Finally we want to integrate our improvements into the original kernel.
At the beginning we evaluated the original Linux IPv6 stack by TAHI tool. The first evaluation was performed on linux-2.2.15 kernel and the result showed that Linux IPv6 protocol stack wasn't compliant to latest RFCs and didn't have IPsec function which is mandatory for IPv6. As compared with KAME IPv6 protocol stack which passed almost all items of the test, Linux had many problems in kernel. For example, the kernel failed 38 of 58 test items for Neighbor Discovery Protocol and Stateless Address Autoconfiguration failed 55 of 77 items. Then we summarized the results and began to start improving.
Ever since starting the project, we have been continuing to evaluate and improve Linux IPv6 protocol stack. As a result, we have achieved a lot of improvements and released our snapshot code every two weeks and stable code four times. Nowadays the results of evaluation become better and almost all of test item have been passed. Furthermore IPv6 IPsec functions begin to work.
From the experiences, we describe improving methods and evaluation results of USAGI IPv6 protocol stack in this paper. Lastly we describe our future development and merge plans.