Bull GNU/Linux NFSv4 project

TI-RPC / rpcbind support

March 4th, 2005


A pre-requisite for the support of IPv6 is to solve the problem of the current SunRPC and portmap which have been designed only for TCP and UDP over IPv4 transports. So, the first step to add the support of IPv6 in NFS is to extend these components or provide new ones. For reasons described below, the latter solution has been chosen. The SunRPC of the glibc has been replaced by a TI-RPC (Transport Independent RPC) library and the portmap has been replaced by the rpcbind.

User RPC (migration fron SunRPC to TI-RPC)


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 the RPC to become 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 IPv4.
FreeBSD provides a TI-RPC library ported from NetBSD with improvments. This library already supports IPv6. So, the FreeBSD release 5.2.1 TI-RPC has been ported to replace the SunRPC of the glibc.


The TI-RPC library is implemented as a standalone package. After compilation, the library is installed under /usr/lib/ and the includes under /usr/include/tirpc/. So the use of the '-I/usr/include/tirpc -ltirpc' flags allows an application to be compiled and linked with this new library. A /etc/netconfig configuration file allows the administrator to specify what are the protocols supported by the RPCs. In this way, the support of the TCP and UDP protocols over IPv6 can be added or removed by uncommenting / commenting the following lines in the configuration file.

         udp6       tpi_clts      v     inet6    udp     -       -
         tcp6       tpi_cots_ord  v     inet6    tcp     -       -

This library supports the RPCSEC via GSS API.


Basic tests have been done with client/server programs using this library to communicate. Then, more intensive tests have been done using the NFS tests.

Additionnal Information and Links

Report bugs

You can report bugs on the TI-RPC bugtracker

User portmapper (migration from portmap to rpcbind)


Whereas portmap supports only UDP and TCP transports over INET (IPv4), rpcbind can be configured to work on various transports supported by the TI-RPC. This includes TCP and UDP over IPv6. Moreover, rpcbind provides additional functions in regards to portmap:
Portmap provides the following functions, referred as portmapper version 2:

The version 3 of the rpcbind implements the functions of the pormap version 2; i.e. :

plus the following functions :

The version 4 of the rpcbind adds the following functions :

Like for the TI-RPC, the FreeBSD release 5.2.1 rpcbind has been ported to replace the portmap.

The portmap implementation in the kernel RPC has also to be extended to support IPv6. This is described in NFS support over IPV6.


The rpcbind daemon is delivered in a rpcbind package including also a rpcinfo command which reports RPC information from a specified server.
The rpcbind package is available here


Tests have been done using NFS tests and in interoperability tests with other OS (Solaris 5.10, AIX 4.3.0).


The first use of these new library and rpcbind will be the support of NFS over IPv6.


A pdf documentation about ti-rpc library is available: tirpc-doc.pdf

Page maintained by: Aurelien Charbon
Accessed times since its creation.
Last update: 2008, July 09