[[PageOutline(2-4)]] == RADIUS/Diameter extensible gateway == This extension provides an extensible framework to deploy RADIUS/Diameter translation functions. The basic flow is described bellow: {{{ #!graphviz digraph G { graph [bgcolor="#E8E8E8C8"] cli [ label="RADIUS client" shape=none ] gw [ label=<
rgwx 1rgwx 2...
app_radgw.fdx
freeDiameter
> shape=box3d ] serv [ label="Diameter server" shape=none ] cli -> gw [ label=" (1) RADIUS Req. " color=darkorange ] gw -> serv [ label=" (2) Diameter Req. " color=gold ] serv -> gw [ label=" (3) Diameter Ans. " color=gold ] gw -> cli [ label=" (4) RADIUS Ans. " color=darkorange ] } }}} 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 [wiki:#Plugins 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 [wiki: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 [wiki:Documentation#Usage 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.