RADIUS/Diameter extensible gateway
This extension provides an extensible framework to deploy RADIUS/Diameter translation functions. The basic flow is described bellow:
The purpose is to allow a RADIUS client to work with a Diameter server, when the RADIUS and Diameter applications allow it -- some Diameter messages cannot be translated to RADIUS because of limitations in this protocol.
The app_radgw.fdx
extension provides the basic functions of the gateway, but additional plugins (.rgwx
files) must be loaded in addition to translate specific RADIUS messages. See the Plugins section bellow for additional details.
Configuration
app_radgw.fdx
configuration file is mandatory. The complete configuration documentation for this extension can be found in the source package: [source:freeDiameter/doc/app_radgw.conf.sample app_radgw.conf.sample].
The configuration file contains:
- The list of plugins to load. These will influence how the messages are translated.
- The list of RADIUS clients with their shared secrets.
- The port and IP to use for listening to RADIUS messages.
Plugins
The RADIUS/Diameter extensible gateway comes with a number of plugins for translation of RADIUS messages. The following plugins are included:
- acct.rgwx
- This plugin provides the translation of RADIUS Accounting messages to Diameter Base Accounting application. It supports the RADIUS attributes defined in RFC2866 (RADIUS Accounting), RFC5080 (fixes), RFC3162 (IPv6), RFC2868 (Tunnels), RFC2869 (extensions), and RFC3579 (EAP). The Diameter AVPs supported come from RFC3588 (Diameter Base) and RFC4005 (NASREQ).
- auth.rgwx
- This plugin provides the translation of RADIUS Access messages to Diameter NASREQ application or Diameter EAP application (if the request contains an EAP attribute). It supports the RADIUS attributes defined in RFC2865 (RADIUS), RFC5080 (fixes), RFC3162 (IPv6), RFC2868 (Tunnels), RFC2869 (extensions), and RFC3579 (EAP). The Diameter AVPs supported come from RFC3588 (Diameter Base), RFC4005 (NASREQ) and RFC4072 (EAP).
- debug.rgwx and sample.rgwx
- These plugins are mainly used for debug and development. The debug plugin displays the state of translation of each message. It can be used to check the behavior of other plugins for example. It does not take a real configuration file, but will display any string passed as configuration file in its output (useful if you use the extension several times for the same message). The sample plugin is just a skeleton that can serve as a base to develop a new plugin.
- echodrop.rgwx
- This simple plugin allows to handle a specific RADIUS attribute and either copy it verbatim in the RADIUS answer, or drop it. In both cases, the attribute is not translated in the Diameter message. See the [source:freeDiameter/doc/echodrop.rgwx.conf.sample echodrop.rgwx.conf.sample] file for more information on this plugin configuration.
- sip.rgwx
- (work in progress) See app_sip page for information.
Usage
Once loaded properly, the extension does not require any interaction. It will be trigged by incoming RADIUS messages.
Output
This extension does not produce any particular output. It uses the debug facility from the libfreeDiameter
, so the debug messages can be obtained in the same way as the daemon's (see Usage? section).
Troubleshooting
Translation of RADIUS messages to Diameter is quite a complex task. It is likely that the translation plugins need some fine-tunning to fit your particular needs. The first reflex to troubleshoot translation problems is to read the debug logs and search for errors. The debug.rgwx
can also be a handy tool to understand the translation process.