rtpengine - rtpengine-mr11.5.1.9system - 6.1.0-13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux
I have been trying to build & run rtpengine manually, with kernel module. It builds & runs but I am unable to confirm if it's using kernel module. I have been trying to follow the instructions at https://github.com/sipwise/rtpengine/blob/master/docs/usage.md
You're looking at the wrong version of the instructions. These are for current master which uses nftables natively. But you're using 11.5 which doesn't and still uses the iptables backend.
So you need to read
https://github.com/sipwise/rtpengine/blob/mr11.5.1/docs/usage.md
instead.
The kernel module registers with some module taints.
[ 1855.215087] xt_RTPENGINE: loading out-of-tree module taints kernel.[ 1855.220488] xt_RTPENGINE: module verification failed: signature and/or required key missing - tainting kernel
[ 1855.232505] Registering xt_RTPENGINE module - version 11.5.1.9+0~mr11.5.1.9 git-HEAD-24c3c3d0
I don't know if that's normal.
During the call, I see statements like below in the logs -"023-10-12T11:44:54.028003+00:00 ip-20-1-14-3 rtpengine[6509]: INFO: [JDl8_K1iKQFQWVX-amhZow../99606678/1 port 25600]: [core] Kernelizing media stream: <IP>:53438 -> <IP>:25600 | <IP>:26426 -> <IP>:28210"
But a look at /proc/rtpengine/7/list shows nothing (--table=7 option while starting the daemon).
It seems I am missing the part of creating rules in nftables chains but not sure how to.Any pointers on how to set it up or what have i missed?
You're missing the iptables rule, see https://github.com/sipwise/rtpengine/blob/mr11.5.1/docs/usage.md#the-iptables-module
But as I said above, even with that missing, the /proc entry should get populated.
Cheers
Thank you for your response. I had been trying with that version (https://github.com/sipwise/rtpengine/blob/mr11.5.1/docs/usage.md) as well but no luck. And tried it again. Steps :
Little more info on this, I ran watch -n 0.5 iptables -L INPUT -nvx command & see packet count & bytes increasing.
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4909 981465 RTPENGINE 17 -- * * 0.0.0.0/0 0.0.0.0/0 RTPENGINE id:7
Does that mean kernel forwarding is working?
No, it just means that packets are being passed to the kernel module. It doesn't say anything about whether they're being handled by the kernel module or not. You'd have to inspect the packet counters in the /list file in order to see whether it's actually working, but alas...
Cheers
Ok. It seems I had an understanding gap.
However, running rtpengine-ctl -ip 127.0.0.1:22000 list totals returns nothing. I enabled tcp port for the localhost while for outside world it is on private & public IP on udp (if that makes a difference). The cmd was run before, during & after the (phone) call with no output.
Make sure you're not confusing the TCP control port (listen-tcp=...) with the CLI port (also
TCP, but listen-cli=...). For rtpengine-ctl
you want to use the CLI port. The TCP control port is only useful
if backwards compatibility with legacy protocols are needed.
Cheers