Improve the support for the Linux kernel GTP-U plane using netlink socket in my Erlang app
Papa Tana <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CAGoraXQo1AA+3Lj_CEU0c+U-GwoYoyLrcAowUfhc4nnvCntJ2A@mail.gmail.com> |
Hello Erlang Community, I have an Erlang application communicating with another node using GTP protocol. 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: - https://github.com/travelping/gen_netlink - https://github.com/Feuerlabs/netlink - 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,