<div dir="ltr"><div dir="ltr">Hi All,<br><br>In order to debug my need, I used nlmon:<br><br># modprobe nlmon<br># ip link add mymonitor type nlmon<br># ip link set mymonitor up<br><br>So, reproducing all the GTP-U scenarios when adding or removing tunnels is monitorable.<br><br>It's pretty fast to debug thanks to the below amazing stuff:<br><br><a href="https://github.com/msantos/procket">https://github.com/msantos/procket</a><br><a href="https://github.com/travelping/gen_netlink">https://github.com/travelping/gen_netlink</a><br><br>But I wonder if netlink is natively available without using libraries in OTP/23 (Linux).<br><br>I have made a lot of search in the documentation, but didn't make it work:<br><br>    > family => netlink<br>     > type =>dgram<br>> protocol=>0<br><br>{ok, Sock} = socket:open(netlink, ...,...)<br><br>>> ** exception error: {invalid,{domain,netlink}}<br><br>Sure, I saw {local | inet | inet6} are only available but it was worth a try....<br><br>Can someone confirm netlink natively in OTP-23 please?<br><br><i>P.S: I found these libraries very breathtaking, but when first learning, I'm used to starting from scratch, that's why I'm asking this question, but after making things work with native function, I'm switching to the library for a serious project.<br></i><br>Best Regards,</div><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 21 août 2020 à 21:07, Papa Tana <<a href="mailto:papa.tana101@gmail.com">papa.tana101@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello Erlang Community,<br><br>I have an Erlang application communicating with another node using GTP protocol.<br>At GTP-C part, everything is ok, no change is needed.<br>But at GTP-U part, I want to improve my support for the kernel GTP-U plane.<br><br> - 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.<br> - I have replaced it with some Linux helper, it's working fine but too slow, the latency is not acceptable for me.<br><div> - 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.</div><div><br></div><div>Then I have two choices now:</div> - Option 1: add native functions for calling this libgtpnl written in C from Erlang<br> - Option 2: speak netlink directly from within Erlang<br><br><b>As I am a big fan of pure Erlang, I kept the Option 2.</b><br><br>The below links were my starting point:<br><br> - <a href="https://github.com/travelping/gen_netlink" target="_blank">https://github.com/travelping/gen_netlink</a><br> - <a href="https://github.com/Feuerlabs/netlink" target="_blank">https://github.com/Feuerlabs/netlink</a><br> - maybe there is another one that I missed out.....<br><br>I understood how to open a raw socket using netlink now, and how to send some requests to the kernel.<br>I have tested ip route and it's ok but for GTP-U part, I'm lost around.<br><br>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.<br><br>Best Regards,</div>
</blockquote></div></div>