Navigation



Version 1 (modified by Sebastien Decugis, 14 years ago) (diff)

--

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 daemon only, which are common to all freeDiameter nodes. You should in addition check the documentation of the extensions you are planning to use for any addition. For example, for a backend server, the requirements will be much 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 freeDiameter reliably.

An average Desktop PC should provide ample resources for the daemon, unless the message load is particularly high -- well, the "real" application will probably have more severe requirements than the Diameter daemon anyway (database, ...)

NOTE FOR LATER: Add some measurement figures!!!

Operating system

freeDiameter source is written in C language and obeys the POSIX API. It should run on any system that provides 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 and Ubuntu) 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 enough) POSIX threads support.
IPv6
The target system must support IPv6. Removing this requirement from freeDiameter would require a large change in the source code.
SCTP
It is also recommended that the system supports SCTP (with a recent version of the SCTP socket API extension), although freeDiameter can be compiled without support for SCTP through cmake configuration. 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
Although the [libfreeDiameter] library is not dependent on the GNUTLS library, the daemon requires it. This should not be a problem, since the gnutls library is available already on many platforms.

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.

A note about the compiler: it is possible that some parts of the freeDiameter daemon 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.