Improve the support for the Linux kernel GTP-U plane using netlink socket in my Erlang app

Papa Tana papa.tana101@REDACTED
Fri Aug 21 20:07:13 CEST 2020

Hello Erlang Community,

I have an Erlang application communicating with another node using GTP
At GTP-C part, everything is ok, no change is needed.
But at GTP-U part, I want to improve my support for the kernel GTP-U plane.

 - I have used Vector Packet Processing as a first prototype, it's a very
amazing platform, but a very big solution for my very small need, I needed
to deploy large resources.
 - I have replaced it with some Linux helper, it's working fine but too
slow, the latency is not acceptable for me.
 - I switched to libgtpnl from Osmo Net Gprs project, it's working great as
well, but I cannot exploit all functionality of my GTP-U; the creator of
the library confirms that I need to manage the socket from my erlang
program to go over these limitations.

Then I have two choices now:
 - Option 1: add native functions for calling this libgtpnl written in C
from Erlang
 - Option 2: speak netlink directly from within Erlang

*As I am a big fan of pure Erlang, I kept the Option 2.*

The below links were my starting point:

 - maybe there is another one that I missed out.....

I understood how to open a raw socket using netlink now, and how to send
some requests to the kernel.
I have tested ip route and it's ok but for GTP-U part, I'm lost around.

Indeed, they do have support for gtpnl, so if anyone has used those
libraries for any GTP-U usage, would be really appreciated to share some
hints please.

Best Regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the erlang-questions mailing list