Requirements
Since freeDiameter
is extensible, the requirements may vary a lot depending on the extensions you are using. In this page, we are enumerating the requirements for the framework only, which are common to all freeDiameter
nodes. You should in addition check the documentation of the extension(s) you are planning to use for any additional dependency or constraint. For example, for a backend server, the requirements will be probably higher that for a simple routing agent or client.
Hardware
By design, the Diameter protocol is quite demanding in terms of memory: for example, all requests that are sent must be kept until a corresponding answer is received. In addition, since communication channels must be protected either by TLS or IPsec, decent computational power is also required. For these reasons, a very small device such as small home gateway might not be suitable to run a backend server that authenticates a lot of users.
An average Desktop PC provides ample resources for the freeDiameter framework, unless the message load is particularly high. Of course, the "real" application will probably have more severe requirements than the freeDiameter framework anyway (database, ...)
As a hint, it is reasonable to expect 5K to 10K messages per seconds throughput from freeDiameter stack on a standard Desktop PC, with TLS protection activated. Since the framework uses multi-threading, having several CPUs will increase the throughput almost linearly.
Operating system
freeDiameter
source is written in C language and follows the POSIX API. It should run on any system that supports this API -- provided that other software dependencies can be met as well -- which mean most or all *NIX flavors. To date, freeDiameter
has been compiled and tested on GNU/Linux distributions (Debian, Ubuntu, Fedora, OpenSUSE) and FreeBSD (8.2 and 8.3).
Since Microsoft Windows does not support the POSIX API, freeDiameter will not compile on this system. Some preliminary work has been made to compile with cygwin, but because the IPv6 support was not sufficient at that time, this environment is not supported.
Software dependencies
The system where freeDiameter
will run must provide the following features:
- Pthreads
-
The
freeDiameter
implementation is multi-threaded, the system must provide a stable POSIX threads support, including pthread cancellation support (uClibc does not support it at the moment.)
- IPv6
-
The target system must support IPv6. Removing this requirement from
freeDiameter
would require a large change in the source code. Note that this does not mean that an IPv6 address must be configured.
- SCTP
-
It is recommended that the system supports SCTP (with a recent version of the SCTP socket API extension), although
freeDiameter
can be compiled without SCTP by specifying a flag duringcmake
configuration (DISABLE_SCTP). Since the SCTP Socket API is not stable yet, it is quite difficult to provide a stable implementation which uses it... Hopefully, things will improve quickly.
- GNUTLS
- The framework uses this library for all TLS-related operations at the moment (may change due to ticket 19). This should not be a problem, since the gnutls library is available already on most platforms. Note that this library itself depends on libgcrypt.
- IDN
- The framework uses the GNU libidn library to process Internationalized Domain Names in Diameter Identities. It is possible to avoid this dependency by configuring the build with DIAMID_IDNA_IGNORE or DIAMID_IDNA_REJECT options.
As stated before, some extensions may have additional requirements (database backend, ...) that you should also check.
Building environment
In order to compile freeDiameter
from sources, you will require some tools such as cmake, flex, ... Please refer to these files for up-to-date information:
- [source:freeDiameter/INSTALL INSTALL]: very general instruction on building freeDiameter.
- [source:freeDiameter/INSTALL.FreeBSD INSTALL.FreeBSD]: Detailed instruction for building on the FreeBSD platform.
- [source:freeDiameter/INSTALL.Ubuntu INSTALL.Ubuntu]: Detailed instructions for Debian and Ubuntu distributions.
- [source:freeDiameter/INSTALL.Fedora INSTALL.Fedora]: Detailed instructions for Fedora, CentOS, and other Red Hat based distributions.
- [source:freeDiameter/INSTALL.OpenSUSE INSTALL.OpenSUSE]: Detailed instructions for SUSE based distributions.
- [source:freeDiameter/INSTALL.OpenWRT INSTALL.OpenWRT]: Information for compiling freeDiameter for embedded devices with the OpenWRT operating system.
A note about the compiler: it is possible that some parts of the freeDiameter
framework use non-standard GNU extensions, in particular for the debug facilities. gcc
is known to compile the project, we have not tested different compilers at this time.