Hi Carlos,
Please find attached the configuration file which I am using. Kindly refer route[CNXCC] where I have tried to put the channel limitation per SIP Server.
Thanks !
On Wed, Jun 4, 2014 at 3:07 PM, Carlos Ruiz Díaz carlos.ruizdiaz@gmail.com wrote:
Can you share your configuration file?
On Wed, Jun 4, 2014 at 1:03 AM, Rahul MathuR rahul.ultimate@gmail.com wrote:
HI Carlos,
Thanks for reply.
In my case the key is SIP Server IP. My kamailio Proxy is connected to many sip server IPs say 5. I want to limit maximum channels per sip server ip. So I set max channels per sip server ip as cnxcc_set_max_channels("$var(client1)", "$var(max_chan)"); and my $var(client1) = "10.97.116.36"; is one of 5 sip servers connected to Kamalio.
Now I use your cnxcc_get_channel_count("$rd", "$var(count1)")) value(count1) to compare to the max_limit of the channels allowed for this sip server. Psuedo Variable $rd is coming correctly that is same as sips erver IP[$var(client1)]. But the problem is that cnxcc_get_channel_count("$rd", "$var(count1)")) is always setting the value 1 in $var(count1) variable even though there are more calls runnning than what was set to be max_chan (which was 100 in my case).
Any pointers to achieve this matter ?
On Tue, Jun 3, 2014 at 2:18 PM, Carlos Ruiz Díaz < carlos.ruizdiaz@gmail.com> wrote:
Hi Rahul,
I don't understand your example. In that case, you are always using "10.97.116.36" as key, meaning that all calls will be hanging from same root.
If you want to use the request-uri domain part, use $rd, not the full $ru. This will of course lead to 1 call being reported always, since request-URIs tend to be different from each other.
Regards, Carlos
On Tue, Jun 3, 2014 at 7:01 AM, Rahul MathuR rahul.ultimate@gmail.com wrote:
Hi Carlos,
Sorry for coming late on this one.
the ruri value in my example is '10.97.116.36' and i have tried to configure kamailio to only cater 100 simultaneous calls on this SIP Server (10.97.116.36), after that it is to send 403.
Below is the sample logic from kamailio.cfg
#Below lines to show an example of how I am maintaining the business for Concurrent Call Restriction route[CNXCC] {
$var(client1) = "10.97.116.36";
$var(max_chan) = 100; #!ifdef CNXCC_CHANNEL xlog("L_INFO", "Setting up channel based credit control");
$var(max_chan1) = 0; $var(retcode) = cnxcc_set_max_channels("$var(client1)",
"$var(max_chan)");
if ($var(retcode) == -1) { xlog("Error setting up credit control"); return; } $var(count1) = -1; if (!cnxcc_get_channel_count("$rd", "$var(count1)")) { xlog("Error getting customer's channel count"); } xlog("RAHUL : CNXCC ROUTE: $var(client1) has $var(count1)
call(s)"); xlog("L_INFO", "CNXCC ROUTE: $var(client1) has $var(count1) call(s)");
if ($var(count1) == $var(max_chan1)) { xlog("Too many channels for customer"); sl_send_reply(403, "Forbidden"); exit; }
#!endif
Now the problem that I am facing is that with multiple UACs (all with same ruri - 10.97.116.36) dialing some pstn numbers, the value of "count1" remains 1 for all cases. Hence, my purpose is defeated because the restriction is not being laid and more than 'max_chan' no. of callers are able to make the call.
Could you please help me achieve this goal.
Thanks !
On Sat, May 17, 2014 at 2:22 AM, Carlos Ruiz Díaz < carlos.ruizdiaz@gmail.com> wrote:
max_chan is equal to zero? You should put a positive value in here in order to make sense the function call.
Also, you are using for one call the ID "x.y.z.a", and for the other one $rd. Both should be the same for calls that suppose to be organized in the same group.
Please take a look at the docs.
On Fri, May 16, 2014 at 7:52 PM, Rahul MathuR < rahul.ultimate@gmail.com> wrote:
Further, from the logs it seems that cnxcc_set_max_channels is returning -1 and I have no idea why it is failing.
On Sat, May 17, 2014 at 5:48 AM, Rahul MathuR < rahul.ultimate@gmail.com> wrote:
> Hello Carlos, > > Many thanks for your help. > I followed the steps you mentioned for CNXCC. But even after making > the max. calls to 0, I am still able to connect the call. Below is the > excerpt from kamailio.cfg > > request_route { > setflag(DLG_FLAG); > # per request initial checks > route(REQINIT); > # NAT detection > route(NATDETECT); > . > . > . > > if (is_method("INVITE")) { > route(CNXCC); > } > } > > #Below lines added by Rahul for Concurrent Call Restriction > route[CNXCC] > { > > $var(client1) = "x.y.z.a"; > > #!ifdef CNXCC_CHANNEL > xlog("L_INFO", "Setting up channel based credit control"); > > $var(max_chan1) = 0; > $var(retcode) = cnxcc_set_max_channels("$var(client1)", > "$var(max_chan)"); > > if ($var(retcode) == -1) { > xlog("Error setting up credit control"); > return; > } > > $var(count1) = -1; > > if (!cnxcc_get_channel_count("$rd", "$var(count1)")) { > xlog("Error getting customer's channel count"); > } > xlog("RAHUL : CNXCC ROUTE: $var(client) has $var(count) > call(s)"); > xlog("L_INFO", "CNXCC ROUTE: $var(client) has $var(count) > call(s)"); > > if ($var(count1) == $var(max_chan1)) { > xlog("Too many channels for customer"); > sl_send_reply(403, "Forbidden"); > > #if (!cnxcc_terminate_all("$var(client)")) { > # xlog("Error terminating customer's calls"); > #} > > exit; > } > #!endif > > > Could you please guide me where am I doing wrong ? > > > On Sat, May 17, 2014 at 3:01 AM, Carlos Ruiz Díaz < > carlos.ruizdiaz@gmail.com> wrote: > >> Any pseudo variable should work. >> >> I don't exactly know how your business work, but I'd suggest that >> instead of using from header domain, use the domain part of the >> request-uri, $rd. >> >> Regards, >> Carlos >> >> >> On Fri, May 16, 2014 at 4:28 PM, Rahul MathuR < >> rahul.ultimate@gmail.com> wrote: >> >>> Thank you very much Carlos ! >>> >>> One last thing, can I use $fd in cnxcc_set_max_channels as below >>> - >>> cnxcc_set_max_channels("$fd", "$var(max_chan)"); >>> to restrict the simultaneous calls hitting a particular domain ? >>> >>> >>> >>> >>> On Sat, May 17, 2014 at 2:03 AM, Carlos Ruiz Díaz < >>> carlos.ruizdiaz@gmail.com> wrote: >>> >>>> Create a profile [1], and count the number of calls of that >>>> profile [2]. >>>> >>>> Alternatively, you can use cnxcc module [3]. >>>> >>>> [1] >>>> http://kamailio.org/docs/modules/stable/modules/dialog.html#idp1919576 >>>> [2] >>>> http://kamailio.org/docs/modules/stable/modules/dialog.html#idp1964064 >>>> [3] >>>> http://kamailio.org/docs/modules/stable/modules/cnxcc.html#idp132608 >>>> >>>> >>>> On Fri, May 16, 2014 at 3:28 PM, Rahul MathuR < >>>> rahul.ultimate@gmail.com> wrote: >>>> >>>>> *Hello,* >>>>> >>>>> *Please accept my apologies for asking a simple question - Is there any example which shows how can I create the dialog profile **value based on the SIP domain or SIP Server IP (IP like- 112.23.134.5). I** need to control many SIP Server IPs with limited channels to each with my** Kamailio Proxy.* >>>>> >>>>> *I am a newbie to kamailio world.* >>>>> >>>>> >>>>> >>>>> *-- Warm Regds.MathuRahul* >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> sr-dev mailing list >>>>> sr-dev@lists.sip-router.org >>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> Carlos >>>> http://caruizdiaz.com >>>> http://ngvoice.com >>>> +52 55 3048 3303 >>>> >>>> _______________________________________________ >>>> sr-dev mailing list >>>> sr-dev@lists.sip-router.org >>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev >>>> >>>> >>> >>> >>> -- >>> Warm Regds. >>> MathuRahul >>> >>> _______________________________________________ >>> sr-dev mailing list >>> sr-dev@lists.sip-router.org >>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev >>> >>> >> >> >> -- >> Carlos >> http://caruizdiaz.com >> http://ngvoice.com >> +52 55 3048 3303 >> >> _______________________________________________ >> sr-dev mailing list >> sr-dev@lists.sip-router.org >> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev >> >> > > > -- > Warm Regds. > MathuRahul >
-- Warm Regds. MathuRahul
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Carlos http://caruizdiaz.com http://ngvoice.com +52 55 3048 3303
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Warm Regds. MathuRahul
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Carlos http://caruizdiaz.com http://ngvoice.com +52 55 3048 3303
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Warm Regds. MathuRahul
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Carlos http://caruizdiaz.com http://ngvoice.com +52 55 3048 3303
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev