Hello Daniel
Thanks for pointing out to the SIP traces. I found out that it if the request is to be sent to a destination using a port other than 5060, it is required to add the $uac_req(ouri) parameter too:
$uac_req(ouri)="sip:" + $var(asterisk_ip) + ":" + $var(asterisk_port); ....
$uac_req(ouri)="sip:" + $var(asterisk2_ip) + ":" + $var(asterisk2_port);
Thanks!
Alejandro Rios Peña alerios@debian.org
DISCLAIMER: The opinions expressed are my own, and not necessarily those of my employer.
2011/4/8 Daniel-Constantin Mierla miconda@gmail.com
Hello,
On 4/8/11 12:28 AM, Alejandro Rios P. wrote:
Hi all,
I am testing the scenario described here: http://kb.asipto.com/asterisk:realtime:kamailio-3.1.x-asterisk-1.6.2-astdb
It works great with one instance of Asterisk, but now that I'm testing with two Asterisk instances to load balance, and I see a problem regarding the registration forwarding to the second Asterisk.
I tried adding a second "uac_req_send()" bellow the first one, but Kamailio only sends the first request and the REGISTER never gets to the second Asterisk:
# Forward REGISTER to Asterisk route[REGFWD] { if(!is_method("REGISTER")) { return; } $var(rip) = $sel(cfg_get.asterisk.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip) + ":" + $sel(cfg_get.asterisk.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip); $uac_req(turi)="sip:" + $au+ "@" + $var(rip); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport)
- ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" +
$sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send();
$uac_req(all) = null; $var(rip2) = $sel(cfg_get.asterisk2.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip2) + ":" +
$sel(cfg_get.asterisk2.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip2); $uac_req(turi)="sip:" + $au+ "@" + $var(rip2); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport)
- ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" +
$sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send();
}
I also tried appending another branch and sending the second uac_req_send() from there, but it is not being sent.
How can I use uac_req_send() several times for the same request or in parallel?
it should work one after the other. append_branch() does not affect uac_req_send() at all, this is a separate request built from scratch.
Do you get any error message in the syslog? Can you watch the traffic on all interfaces 'ngrep -d any -qt -W byline port 5060' ?
I see you assign '$uac_req(all) = null;', it should be '$uac_req(all) = $null;' - but I guess it was a copy&paste thing.
Cheers, Daniel
-- Daniel-Constantin Mierla http://www.asipto.com
Hello,
On 4/8/11 6:14 PM, Alejandro Rios P. wrote:
Hello Daniel
Thanks for pointing out to the SIP traces. I found out that it if the request is to be sent to a destination using a port other than 5060, it is required to add the $uac_req(ouri) parameter too:
$uac_req(ouri)="sip:" + $var(asterisk_ip) + ":" + $var(asterisk_port); ....
$uac_req(ouri)="sip:" + $var(asterisk2_ip) + ":" + $var(asterisk2_port);
Interesting, it should work when changing the 'ruri' attribute as well. Can you send a sip trace with changed r-uri for the two requests that go to wrong destination?
Thanks, Daniel
Thanks!
Alejandro Rios Peña
DISCLAIMER: The opinions expressed are my own, and not necessarily those of my employer.
2011/4/8 Daniel-Constantin Mierla <miconda@gmail.com mailto:miconda@gmail.com>
Hello, On 4/8/11 12:28 AM, Alejandro Rios P. wrote: Hi all, I am testing the scenario described here: http://kb.asipto.com/asterisk:realtime:kamailio-3.1.x-asterisk-1.6.2-astdb It works great with one instance of Asterisk, but now that I'm testing with two Asterisk instances to load balance, and I see a problem regarding the registration forwarding to the second Asterisk. I tried adding a second "uac_req_send()" bellow the first one, but Kamailio only sends the first request and the REGISTER never gets to the second Asterisk: # Forward REGISTER to Asterisk route[REGFWD] { if(!is_method("REGISTER")) { return; } $var(rip) = $sel(cfg_get.asterisk.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip) + ":" + $sel(cfg_get.asterisk.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip); $uac_req(turi)="sip:" + $au+ "@" + $var(rip); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport) + ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send(); $uac_req(all) = null; $var(rip2) = $sel(cfg_get.asterisk2.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip2) + ":" + $sel(cfg_get.asterisk2.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip2); $uac_req(turi)="sip:" + $au+ "@" + $var(rip2); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport) + ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send(); } I also tried appending another branch and sending the second uac_req_send() from there, but it is not being sent. How can I use uac_req_send() several times for the same request or in parallel? it should work one after the other. append_branch() does not affect uac_req_send() at all, this is a separate request built from scratch. Do you get any error message in the syslog? Can you watch the traffic on all interfaces 'ngrep -d any -qt -W byline port 5060' ? I see you assign '$uac_req(all) = null;', it should be '$uac_req(all) = $null;' - but I guess it was a copy&paste thing. Cheers, Daniel -- Daniel-Constantin Mierla http://www.asipto.com
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Hi Daniel
You may want to kill me but I'll be honest, I'm actually using kamailio's 1.5 UAC module on an Opensips 1.6.2 :$ so I don't know if the problem could be related to that. Anyway, here is the bad register message when using only $uac_req(ruri)="sip:8.14.80.37:5061". Note that the SIP part itself its correct, but the UDP destination port is wrong:
Internet Protocol, Src: 8.14.80.16 (8.14.80.16), Dst: 8.14.80.37 (8.14.80.37) User Datagram Protocol, Src Port: sip-tls (5061), Dst Port: sip (5060) C%E@@PP% REGISTER sip:8.14.80.37:5061 SIP/2.0 Via: SIP/2.0/UDP 8.14.80.16:5061;branch=z9hG4bK9b35.3e435b31.0 To: sip:LV-SKRUPPA@8.14.80.37 From: sip:LV-SKRUPPA@8.14.80.37;tag=a649c0188a5a7b7f4a4dfeaea88004c3-b5bd CSeq: 10 REGISTER Call-ID: 52d42e13484b4229-29572@8.14.80.16 Content-Length: 0 User-Agent: OpenSIPS (1.6.2-notls (x86_64/linux)) Contact: sip:LV-SKRUPPA@8.14.80.16:5061 Expires: 60
I hope this can be of any help.
Kind regards,
Alejandro Rios Peña alerios@debian.org
DISCLAIMER: The opinions expressed are my own, and not necessarily those of my employer.
2011/4/11 Daniel-Constantin Mierla miconda@gmail.com
Hello,
On 4/8/11 6:14 PM, Alejandro Rios P. wrote:
Hello Daniel
Thanks for pointing out to the SIP traces. I found out that it if the request is to be sent to a destination using a port other than 5060, it is required to add the $uac_req(ouri) parameter too:
$uac_req(ouri)="sip:" + $var(asterisk_ip) + ":" + $var(asterisk_port); ....
$uac_req(ouri)="sip:" + $var(asterisk2_ip) + ":" + $var(asterisk2_port);
Interesting, it should work when changing the 'ruri' attribute as well. Can you send a sip trace with changed r-uri for the two requests that go to wrong destination?
Thanks, Daniel
Thanks!
Alejandro Rios Peña
DISCLAIMER: The opinions expressed are my own, and not necessarily those of my employer.
2011/4/8 Daniel-Constantin Mierla miconda@gmail.com
Hello,
On 4/8/11 12:28 AM, Alejandro Rios P. wrote:
Hi all,
I am testing the scenario described here: http://kb.asipto.com/asterisk:realtime:kamailio-3.1.x-asterisk-1.6.2-astdb
It works great with one instance of Asterisk, but now that I'm testing with two Asterisk instances to load balance, and I see a problem regarding the registration forwarding to the second Asterisk.
I tried adding a second "uac_req_send()" bellow the first one, but Kamailio only sends the first request and the REGISTER never gets to the second Asterisk:
# Forward REGISTER to Asterisk route[REGFWD] { if(!is_method("REGISTER")) { return; } $var(rip) = $sel(cfg_get.asterisk.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip) + ":" + $sel(cfg_get.asterisk.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip); $uac_req(turi)="sip:" + $au+ "@" + $var(rip); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport)
- ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" +
$sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send();
$uac_req(all) = null; $var(rip2) = $sel(cfg_get.asterisk2.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip2) + ":" +
$sel(cfg_get.asterisk2.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip2); $uac_req(turi)="sip:" + $au+ "@" + $var(rip2); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport)
- ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" +
$sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send();
}
I also tried appending another branch and sending the second uac_req_send() from there, but it is not being sent.
How can I use uac_req_send() several times for the same request or in parallel?
it should work one after the other. append_branch() does not affect uac_req_send() at all, this is a separate request built from scratch.
Do you get any error message in the syslog? Can you watch the traffic on all interfaces 'ngrep -d any -qt -W byline port 5060' ?
I see you assign '$uac_req(all) = null;', it should be '$uac_req(all) = $null;' - but I guess it was a copy&paste thing.
Cheers, Daniel
-- Daniel-Constantin Mierla http://www.asipto.com
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierlahttp://www.asipto.com
Hello,
On 4/11/11 5:49 PM, Alejandro Rios P. wrote:
Hi Daniel
You may want to kill me but I'll be honest,
you should do that from the first place, so we do not lose time for nothing, checking source code which is not even used. For this combination you are on your own, it is supposed you know what you do and have the knowledge to troubleshoot -- the relaying itself is in the tm module, uac module just fills some structure and calls tm function.
Cheers, Daniel
I'm actually using kamailio's 1.5 UAC module on an Opensips 1.6.2 :$ so I don't know if the problem could be related to that. Anyway, here is the bad register message when using only $uac_req(ruri)="sip:8.14.80.37:5061 http://8.14.80.37:5061". Note that the SIP part itself its correct, but the UDP destination port is wrong:
Internet Protocol, Src: 8.14.80.16 (8.14.80.16), Dst: 8.14.80.37 (8.14.80.37) User Datagram Protocol, Src Port: sip-tls (5061), Dst Port: sip (5060) C%E@@PP% REGISTER sip:8.14.80.37:5061 http://8.14.80.37:5061 SIP/2.0 Via: SIP/2.0/UDP 8.14.80.16:5061;branch=z9hG4bK9b35.3e435b31.0 To: sip:LV-SKRUPPA@8.14.80.37 mailto:sip%3ALV-SKRUPPA@8.14.80.37 From: <sip:LV-SKRUPPA@8.14.80.37 mailto:sip%3ALV-SKRUPPA@8.14.80.37>;tag=a649c0188a5a7b7f4a4dfeaea88004c3-b5bd CSeq: 10 REGISTER Call-ID: 52d42e13484b4229-29572@8.14.80.16 mailto:52d42e13484b4229-29572@8.14.80.16 Content-Length: 0 User-Agent: OpenSIPS (1.6.2-notls (x86_64/linux)) Contact: <sip:LV-SKRUPPA@8.14.80.16:5061 http://sip:LV-SKRUPPA@8.14.80.16:5061> Expires: 60
I hope this can be of any help.
Kind regards,
Alejandro Rios Peña
DISCLAIMER: The opinions expressed are my own, and not necessarily those of my employer.
2011/4/11 Daniel-Constantin Mierla <miconda@gmail.com mailto:miconda@gmail.com>
Hello, On 4/8/11 6:14 PM, Alejandro Rios P. wrote:
Hello Daniel Thanks for pointing out to the SIP traces. I found out that it if the request is to be sent to a destination using a port other than 5060, it is required to add the $uac_req(ouri) parameter too: $uac_req(ouri)="sip:" + $var(asterisk_ip) + ":" + $var(asterisk_port); .... $uac_req(ouri)="sip:" + $var(asterisk2_ip) + ":" + $var(asterisk2_port);
Interesting, it should work when changing the 'ruri' attribute as well. Can you send a sip trace with changed r-uri for the two requests that go to wrong destination? Thanks, Daniel
Thanks! Alejandro Rios Peña DISCLAIMER: The opinions expressed are my own, and not necessarily those of my employer. <http://www.avatar.com.co> 2011/4/8 Daniel-Constantin Mierla <miconda@gmail.com <mailto:miconda@gmail.com>> Hello, On 4/8/11 12:28 AM, Alejandro Rios P. wrote: Hi all, I am testing the scenario described here: http://kb.asipto.com/asterisk:realtime:kamailio-3.1.x-asterisk-1.6.2-astdb It works great with one instance of Asterisk, but now that I'm testing with two Asterisk instances to load balance, and I see a problem regarding the registration forwarding to the second Asterisk. I tried adding a second "uac_req_send()" bellow the first one, but Kamailio only sends the first request and the REGISTER never gets to the second Asterisk: # Forward REGISTER to Asterisk route[REGFWD] { if(!is_method("REGISTER")) { return; } $var(rip) = $sel(cfg_get.asterisk.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip) + ":" + $sel(cfg_get.asterisk.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip); $uac_req(turi)="sip:" + $au+ "@" + $var(rip); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport) + ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send(); $uac_req(all) = null; $var(rip2) = $sel(cfg_get.asterisk2.bindip); $uac_req(method)="REGISTER"; $uac_req(ruri)="sip:" + $var(rip2) + ":" + $sel(cfg_get.asterisk2.bindport); $uac_req(furi)="sip:" + $au+ "@" + $var(rip2); $uac_req(turi)="sip:" + $au+ "@" + $var(rip2); $uac_req(hdrs)="Contact:<sip:" + $au+ "@" + $sel(cfg_get.kamailio.bindip) + ":" + $sel(cfg_get.kamailio.bindport) + ">\r\n"; if($sel(contact.expires) != $null) $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $sel(contact.expires) + "\r\n"; else $uac_req(hdrs)= $uac_req(hdrs) + "Expires:" + $hdr(Expires) + "\r\n"; uac_req_send(); } I also tried appending another branch and sending the second uac_req_send() from there, but it is not being sent. How can I use uac_req_send() several times for the same request or in parallel? it should work one after the other. append_branch() does not affect uac_req_send() at all, this is a separate request built from scratch. Do you get any error message in the syslog? Can you watch the traffic on all interfaces 'ngrep -d any -qt -W byline port 5060' ? I see you assign '$uac_req(all) = null;', it should be '$uac_req(all) = $null;' - but I guess it was a copy&paste thing. Cheers, Daniel -- Daniel-Constantin Mierla http://www.asipto.com _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla http://www.asipto.com