March 4th, 2005
Introduction:
This page provides patches and packages allowing the support of NFS (v2, v3 and v4) over IPv6. This includes :
- kernel patches to provide the support of IPv6 in the sunrpc code and in the NFS client and server code,
- a new TI-RPC (Transport Independent RPC) library and a rpcbind portmapper to allow the support of protocols other than the INET udp/tcp protocols by the user RPC implementation,
- user patches over the nfs-utils and util-linux packages to provide the support of IPv6 in the NFS user commands and daemons.
The current kernel patches are over a linux-2.6.9 kernel release on which the CITI's patches and the Chuck Lever's transport switch patches have been applied (see below).
The TI-RPC library and the rpcbind command have been ported from FreeBSD, and are currently provided as standalone packaging. The question of knowing how these new libraries and command could be delivered is open (standalone packaging, included in other packagings,...).
Note Well:
- The following patches and packages have not been fully tested. Please report problems to Gilles Quillard.
- The support of IPv6 has been achieved as recommended in the books, i.e. NFS code is now full IPv6 and IPv6 structures are used to carry both IPv4 and IPv6 addresses (the IPv4 adresses are "mapped" into IPv6 addresses). This method requires a kernel built with IPv6 (even if NFS is used only on an IPv4 network). This seems unacceptable for many people. A solution is to keep the current processing for the kernel not built with IPv6 enabled (using #ifdef CONFIG_IPV6 paterns); but this conplicates the maintainability and is not agreed by everybody. So, a new implementation is currently studied.
Download and installation:
The kernel patches are available either in separate patches:
linux-2.6.9-cel5-gq-01.patch
linux-2.6.9-cel5-gq-02.patch
linux-2.6.9-cel5-gq-03.patch
linux-2.6.9-cel5-gq-04.patch
linux-2.6.9-cel5-gq-05.patch
linux-2.6.9-cel5-gq-06.patch
linux-2.6.9-cel5-gq-07.patch
linux-2.6.9-cel5-gq-08.patch
or in a cumulative patch:
linux-2.6.9-cel5-gq-ALL.patch
The kernel patches have to be applied over a linux-2.6.9 on which the CITI's patches and the Chuck Lever's patches, providing the support of advanced transport technologies, have been applied in the following order:
linux-2.6.9.tar.bz2
01-trond-NFS_ALL.patch
02-CITI-NFS4_ALL.patch
CEL-NFS_ALL.patch
supplemental1.patch
supplemental2.patch
supplemental3.patch
supplemental4.patch
supplemental5.patch
Refer to the Chuck Lever's Release Notes for more information about these patches.
For the user part,
libtirpc-0.1.5.tar.bz2
rpcbind-0.1.4.tar.bz2
util-linux-2.12-3-gq-02.patch
nfs-utils-1.0.6-23-gq-02.patch
The libtirpc and rpcbind packages provide respectively the TI-RPC
library and the rpcbind/rpcinfo commands. To install them, unpack the
tar files, and follow the instructions in the INSTALL file.
The util-linux-2.12-2-gq-02.patch patch has to be applied over
util-linux-2.12 on which the
CITI's patches have been applied.
util-linux-2.12.tar.gz
util-linux-2.12-CITI_NFS4_ALL-3.dif
The nfs-utils-1.0.6-23-gq-02.dif patch has to be applied over nfs-utils-1.0.6 on which the CITI's patches have been applied.
nfs-utils-1.0.6.tar.gz
nfs-utils-1.0.6-CITI_NFS4_ALL-23.dif
Tests done:
- Functional tests have be run including :
- export of filesystem using IPv4 and IPv6 addresses
- mount, ls, read/write data, umount of filesystems using IPv4 and IPv6 addresses
- Robustness tests have been run using fsstress (run 5 hours, then a problem of missing memory occurred : a problem of memory not de-allocated has to be fixed).
- Performances tests (using iozone) have be run showing that there is no significant performance regressions.
- Interoperability tests have been done with an AIX 5 and a Solaris 5.10 (i386, pre-release)
(connectathon 2004 tests have been run)
- modified linux client / AIX server :
- mounting NFSv2/v3 filesystems with IPv4 : OK
- mounting NFSv4 filesystems with IPv4 and IPv6 : OK
- modified linux client / Solaris server :
- mounting NFSv2/v3/v4 filesystems with IPv4 and IPv6 : OK
- AIX client / modified Linux server :
- mounting NFSv2/v3 filesystems with IPv4 : OK
- mounting NFSv4 filesystems with IPv4 and IPv6 : OK
- Solaris client / modified Linux server :
- mounting NFSv2/v3/v4 filesystems with IPv4 and IPv6 : OK
More complete tests have to be run including fsstress and iozone tests.