Hello,
I am using kamailio 3.2.3.
I am using the nathelper module to "ping" users in the location table to keep the NAT bindings alive.
In the event of 3 failed NAT pings, I would like to mark the entry as "unavailable" or completely delete it from the location table to avoid having stale data.
Is this a feature that exists ? Is not, are their plans for it in the future ?
When the REGISTER expires after 3600, if the phone doesn't register, the location entry gets cleaned up. So I have to wait up to one hour before the bad entry is purged. I was hoping to have it purged sooner.
Thanks,
David
version: kamailio 3.2.3 (x86_64/linux) flags: STATS: Off, USE_IPV6, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, DBG_QM_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 4MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: unknown compiled on 14:19:23 Apr 19 2012 with gcc 4.4.3
Hello,
On 7/24/12 11:47 PM, David wrote:
Hello,
I am using kamailio 3.2.3.
I am using the nathelper module to "ping" users in the location table to keep the NAT bindings alive.
In the event of 3 failed NAT pings, I would like to mark the entry as "unavailable" or completely delete it from the location table to avoid having stale data.
Is this a feature that exists ? Is not, are their plans for it in the future ?
When the REGISTER expires after 3600, if the phone doesn't register, the location entry gets cleaned up. So I have to wait up to one hour before the bad entry is purged. I was hoping to have it purged sooner.
auto-unregister on nat keepalives timeout does not exist -- actually the nat keepalive si a simply udp send (even for OPTIONS) for performance reasons, there is no transaction created for it, the reply is handled stateless by core and discarded due to single Via header.
I think it can be implemented by using an external tool to send the keepalives, like sipsak, and by using a failure route for them, in the case of timeout, one can call unregister() -- this would work if there is one contact per subscriber.
Regarding the development of such feature, I don't have it in my short terms plans and I am not aware of anyone else working on it, but maybe other developers can comment on that.
From my point of view, it will not bring significant benefits, but can add lot of load to tm for handling keepalive transactions when dealing with large number of location records.
Cheers, Daniel
On 07/25/2012 03:25 AM, Daniel-Constantin Mierla wrote:
From my point of view, it will not bring significant benefits, but can add lot of load to tm for handling keepalive transactions when dealing with large number of location records.
Perhaps it can be dealt with by having nat_traversal/nathelper/whatever is doing the pinging expose an event route for repeatedly failed NAT pings, and populating a little bit of context, like the AOR that was being pinged?
This would allow the user to intervene manually in the manner of his choosing, e.g. DELETE FROM location via sqlops?