Author: Gilles
Quillard
OBSOLETE DOCUMENT: SEE THIS PAGE
Version: 0.2
Date: 2004/06/21
Introduction
Because it offers more available addresses, better routing, improved security mechanisms, more and more, IPv6 is used for the communication between machines.
To have a complete offer for this new market, Linux has to provide NFS services running over IPv6.
This document specifies the current status, the design, and the implementation plan for the extension of NFS to support IPv6.
This includes the follwoing tasks:
This work is part of the Bull contribution in NFSv4 project.
Port TI-RPC library on Linux from FreeBSD sources
Current status
- Currently, NFS commands use the SunRPC routines provided by the glibc. These routines do not support IPv6 addresses.
- Ulrich Drepper, who is the maintainer of the glibc, refuses any change in the glibc concerning the RPC. He wants that RPC becomes a separate library.
- Other OS (NetBSD, FreeBSD, Solarix, HP-UX, AIX) have migrated their SunRPC library to a TI-RPC (Transport Independent RPC) implementation. This implementation allows the support of other transports than UDP and TCP over sockets.
- FreeBSD release 5.2.1 provides a TI-RPC library ported from NetBSD with improvments. This library already supports IPv6.
- NIS and NIS+ use the RPC routines, so most of the implementation provide the TI-RPC routines in the libnsl library, which is part of glibc, and adjust the NIS sources to use the TI-RPC routines.
- Since the libnsl library is part of the glibc, it would be difficult to change it. The only solution will probably be to create a new libnsl version with another soname. The problem is the maintaining of this new libnsl library.
Work to be done
- FreeBSD TI-RPC library source code will be ported on Linux, firstly in a standalone library and tested with some examples of implementations of RPC clients and services.
- Then a new libnsl library will be provided including the TI-RPC routines and changes in the NIS / NIS+ routines to use the new TI-RPC routines.
Scheduling
- A preliminary version should be available at the end of June 2004 and could be provided to the Linux community for preliminary tests.
- The final version should be available at the end of September 2004.
Test plan
- Tests with be done with examples of implementations of RPC clients and services in a first time,
- then it will be tested through the NFS commands using IPv4 and IPv6 addresses.
- Non-regression tests vs the SunRPC library will be done.
Port NFS commands to use TI-RPC routines and IPv6 addresses
Current status
- The NFS commands in the nfs-utils package (and the mount / umount commands) use the SunRPC routines contained in the libc of the glibc
- They only support the IPv4 addresses.
Work to be done
- The NFS commands have to be ported to use the TI-RPC routines and support IPv6 addresses. IPv4-mapped address mechanism will be used to simplify the support of both IPv4 and IPv6 addresses.
- nfs-utils commands
- exportfs
- mountd
- lockd
- nfsd
- showmount
- nfsstat
- idmapd
- gssd
- svcgssd
- rquotad
- statd
- util-linux commands
Scheduling
- 1st step:
add IPv6 support and use the TI-RPC routines in NFS commands
a preliminary version should be available at the end of September 2004 and could be provided to the Linux community for preliminary tests.
- 2nd step:
test the development version (non-regression, robustness, interoperability)
- 3rd step:
integration (merge with last version) and final tests
submission of final patches
the final version should be available at the end of December 2004.
Test plan
Tests with be done with NFSv2, NFSv3 and NFSv4.
- non-regression tests in IPv4 (use of the connectathon test suite)
- robustness tests with fstress
- performance tests (non-regression in IPv4, comparison with IPv6, use of iozone)
- interoperability with Solaris 10, AIX 5.3
Add IPv6 support in NFS kernel part including the Chuck Lever's Transport Switch
Current status
- The kernel part of the client and server only support the IPv4 addresses.
- Chuck Lever is working on a RPC transport switch at the RPC kernel level to allow the support of transports other than TCP or UDP over sockets.
Work to be done
- The implementation will use IPv4-mapped address mechanism to support both IPv4 and IPv6 addresses.
- It will take into account the Chuck Lever's evolutions.
Scheduling
- 1st step:
add IPv6 support in the kernel part on client and server sides including the RPC Transport switch from Chuck Lever
a preliminary version should be available at the end of September 2004 and could be provided to the Linux community for preliminary tests.
- 2nd step:
test the development version (non-regression, robustness, interoperability)
- 3rd step:
integration (merge with last version) and final tests
submission of final patches
the final version should be available at the end of December 2004.
Test plan
Tests with be done with NFSv2, NFSv3 and NFSv4.
- non-regression tests in IPv4 (use of the connectathon test suite)
- robustness tests with fstress
- ia64 tests
- SMP tests
- performance tests (non-regression in IPv4, comparison with IPv6, use of iozone)
- interoperability with Solaris 10, AIX 5.3
Conclusion
After that, NFS will be IPv6-ready.