Diameter client module in FreeRADIUS ?
aland at deployingradius.com
Tue Sep 25 19:13:39 CEST 2018
On Sep 25, 2018, at 12:09 PM, Chaigneau, Nicolas <nicolas.chaigneau at capgemini.com> wrote:
> I may have to implement a Diameter client module within FreeRADIUS.
> I would like to be able to query a Diameter server when handling some RADIUS requests.
> Basically, it would be similar to the FreeRADIUS rlm_rest module... but using Diameter instead of REST.
> Has anyone had to do something like that ?
> For now my idea is to scavenge stuff from freeDiameter and embed them in a custom module.
freeDiameter is good... tho I think Sebastien has moved on to other things. The mailing lists are down, and nothing has really been updated since 2016. You might try emailing him directly with questions. And he's from Grenoble, so you won't have the language barrier. :)
TBH, I haven't looked at freeDiameter in a while. It's not clear if it can be "embedded" as a library in another application.
The question here is what you need. The base Diameter transport isn't that difficult. It's TCP, with a different encoding than RADIUS uses.
The harder part is the whole state machine needed for Diameter applications. I would like to believe that can be done with some kind of "unlang" policy. But I haven't had a chance to look at it in any detail.
And yes, this should be done in the v4.0.x branch. And, there's already a Diameter encoder / decoder in rlm_eap_ttls. That could be broken out into a separate library.
I've been meaning to abstract rlm_radius in the v4 branch a bit better, and also add TCP support. Once that's done, a basic "encode Diameter over TCP" module is probably 2 days work.
More information about the Freeradius-Users