Navigation



Version 2 (modified by Sebastien Decugis, 10 years ago) (diff)

--

Extensions

Introduction

The freeDiameter framework is able to load extensions when it starts. The framework alone only provides support for Diameter Base Protocol (RFC3588) which is common to all Diameter peers. But this Base protocol by itself is only useful to establish and maintain a secure and reliable Diameter transport network. One then needs Diameter applications that are deployed on this Diameter network. Examples of applications are Diameter EAP (RFC4072), Diameter SIP (RFC4740), etc.

freeDiameter extensions are used to implement Diameter applications, but not limited to this. Extensions can also be used to extend the behavior of the framework in term of routing, peers management, and so on. See the list of extensions bellow in this page for more information.

What is an extension

A freeDiameter extension is really simply a library compiled as shared object. This library must at the very least provide a symbol fd_ext_init which will be called when the framework loads the extension, to initialize it. See the Developers page for more information on how to create a new extension.

Extension files are usually renamed as ".fdx" (freeDiameter eXtension) to easily recognize them.

See the Configuration file for instructions on how to load an extension from the framework.

List of extensions

(Please remember that all extensions are not built by default. Check the Installation page for information on how to select extensions to build.

Applications

app_acct.fdx
Very simple server implementation for the Diameter Base Accounting application (RFC3588). It dumps the received information in a local PostgreSQL database in a fully configurable format. A separate application (not Diameter-dependent) can then pick and process this data.
app_diameap.fdx
A Diameter EAP server (RFC4072) implementation that supports several EAP methods for authenticating the users.
app_radgw.fdx
An extensible Diameter/RADIUS gateway implementation.
app_redirect.fdx?
A configurable Diameter Redirect agent.
app_sip.fdx
An implementation of the Diameter SIP specification (RFC4740).

Server

acl_wl.fdx?
White-list some peers to connect to the local system. By default, all remote Diameter Id's must be explicitly listed in the configuration. This extension allows wildcards to be used (for example allow all peers from *.domain.net to connect).

Routing

rt_default.fdx?
Configure the routing table of the local peer.
rt_ereg.fdx?
Route Diameter messages according to an AVP value in the message matching some configurable regular expressions.
rt_redirect.fdx?
Handle Diameter Redirect indications and add routing rules accordingly.

Dictionary

dict_eap.fdx?
Dictionary objects defined in RFC4072 (Diameter EAP application).
dict_legacy_xml.fdx
Allows the use of XML dictionary files, the format used by OpenDiameter?.
dict_mip6a.fdx?, dict_mip6i.fdx?, dict_nas_mipv6.fdx?, dict_rfc5777.fdx?
Dictionary objects related to IPv6 mobility.
dict_nasreq.fdx?
Dictionary objects defined in RFC4005 (Diameter Network Access Server application).
dict_rfc5580.fdx?
Dictionary objects defined in RFC5580 (Location Objects).
dict_sip.fdx
Dictionary objects defined in RFC4740 (Diameter SIP application).

Debug and tests

dbg_interactive.fdx
Run python code and interact with the framework, "live" or from a batch file.
dbg_monitor.fdx
Monitor the state of freeDiameter daemon.
dbg_rt.fdx?
Display information about messages routing.
test_acct.fdx?
A dummy Diameter Base Accounting server that simply acknowledges any message without any storage.
test_app.fdx
The Test application extension, a kind of "ping for freeDiameter".
test_netemul.fdx?
A kind of Diameter network emulator: introduces configurable delays and duplicates when relaying Diameter messages.
test_rt_any.fdx?
Pick a random peer to send the message to, without any concern for routing AVPs.
test_sip.fdx?
A dummy Diameter SIP server used for testing of the app_sip.fdx extension.