On Fri, Feb 27, 2015 at 3:11 PM, Daniel-Constantin Mierla <miconda@gmail.com> wrote:

I would use an extra branch flag here.

Keepalives are sent based on nat_bflag and sipping_bflag. You can set both no matter it is actually a register from a natted phone or not.

That's the solution we tried to implement this afternoon. We saved an additional location entry on the loadbalancer (just as a proof of concept) and then set the NAT flag configured for the nathelper module. Via kamcmd I can see that the location entry is there. But I don't see any keepalives being sent out. I even set the ping_nated_only parameter to 0 so that all clients would get pings. On the proxy I can see them (for IPv4 cllients). Is there anything special? This is what I did:

modparam("registrar", "max_contacts", 50)
modparam("registrar", "received_avp", "$(avp(i:801))")
modparam("registrar", "default_expires", 600)
modparam("registrar", "min_expires", 60)
modparam("registrar", "max_expires", 600)
modparam("registrar", "gruu_enabled", 0)

modparam("usrloc", "db_mode", 0)
modparam("usrloc", "nat_bflag", 4)
modparam("usrloc", "use_domain", 1)
modparam("usrloc", "hash_size", 14)
modparam("usrloc", "timer_interval", 180)
modparam("usrloc", "timer_procs", 4)

modparam("nathelper", "received_avp", "$(avp(i:801))")
modparam("nathelper", "natping_interval" , 14)
modparam("nathelper", "ping_nated_only" , 0)
modparam("nathelper", "sipping_bflag", 20)
modparam("nathelper", "sipping_from", "natping@sipgate.de")

And then in the onreply_route I added the following:

if (is_method("REGISTER") && $rs == 200) {
  setbflag(4);
        save("location");
}

(Again, this is just a proof of concept.)

Now I would expect to see NAT pings every 14 seconds to each registered client. But I don't see any.

Does the NAT pinging work only for IPv4 maybe?

Best Regards,
Sebastian