Hi Daniel,
That's the path I'm on, just wanted to make sure I hadn't overlooked something obvious.
In a test environment, I have a SIP client registered to kamailio. I also have kamailio registered with an ITSP using uac module, based on a UACReg record configured through Siremis. Inbound calls are routing nicely, but I'm having trouble with outbound calls.
My ITSP account is challenging the outbound INVITE. Configuring peering is an option, but I'm trying to understand the authentication case for my own satisfaction.
If I understand correctly, there are a number of approaches for outbound:
1. Use another service as a gateway (asterisk, etc)
2. Use lcr module
3. Use carrierroute module
4. Use manual routing in the config file
Some comments on these:
1. I understand that kamailio is not designed to be a B2BUA, I'm trying to use it as a proxy. I prefer not to introduce another element.
2. lcr module looks promising. I got as far as loading a gateway from the database, but then hit the authentication problem described in 4. below.
3. carrierroute module has been troublesome. I'm using the APT package and found that carrierroute was not included. After installing kamailio-carrierroute-modules, kamailio fails to start with a load_module error: undefined symbol cfg_set_error_function.
Similar trouble has been reported in relation to libconfuse. This is installed and 'ldd carrierroute.so' does not report any missing dependencies.
4. Since I'm using only a single outbound route (for now), I'm working on manual routing in the config file while I get the authentication working.
I have got as far as catching the 401 Unauth response from the ITSP to my INVITE, calling uac_auth() in the failure_route (see fragment below) and relaying.
The ITSP then returns 482 Merged Request in response to the INVITE that includes the auth header. This occurs regardless of whether I call append_branch before relaying.
I have read a number of historical threads about the CSeq not being incremented and it makes sense to me in this context not to do so, but a different branch tag doesn't appear to be enough in this case for the server to treat it as a different request.
failure_route[1] {
if (t_check_status("401")) {
append_branch();
uac_auth();
}
t_relay();
}
Incidentally, in order to create the Auth response, I had to hard code credentials into the config file with
modparam("uac","credential","user:domain:password")
Can these credentials be configured from Siremis? I thought it might use the existing UACReg record, but that doesn't seem to be the case.
I'm happy to break out any of these into individual threads, but I've put them all together here to give you an idea of where I'm at.
Cheers,
Dave.
On 20 Sep 2013, at 4:37 am, sr-users-request(a)lists.sip-router.org wrote:
>
> Hello,
>
>
> On 9/19/13 9:59 AM, David Wilson wrote:
>> Hi All,
>>
>> I have Kamailio 4.0.3 installed via APT onto Ubuntu 12.04 and have Siremis 4.0 installed and running nicely.
>>
>> Is there an example config file that demonstrates how to use the features configurable through Siremis?
>>
>> For example, when I populate a UACReg record via Siremis, I had to adapt the kamailio.cfg to use that information. Similar adaptations are required for LCR or CR records and these are where I'm struggling; there is some routing code that is implied by the data structures, but the documentation for the corresponding modules doesn't provide an overall example.
> siremis is the toolkit to manage the database records for most of the
> records. Building the logic to use the records from kamailio.cfg is a
> matter of requirements to implement.
>
> The starting point is the readme for the module, there you can find
> details about parameters and function. The way to go is trying something
> by yourself based on readme and if you get stuck, then ask help here.
> Otherwise no one would be able to give hints or config parts to plug in
> an unknown environment.
>
> Cheers,
> Daniel
Hi All,
I have Kamailio 4.0.3 installed via APT onto Ubuntu 12.04 and have Siremis 4.0 installed and running nicely.
Is there an example config file that demonstrates how to use the features configurable through Siremis?
For example, when I populate a UACReg record via Siremis, I had to adapt the kamailio.cfg to use that information. Similar adaptations are required for LCR or CR records and these are where I'm struggling; there is some routing code that is implied by the data structures, but the documentation for the corresponding modules doesn't provide an overall example.
Regards,
Dave.
Hello,
I compiled and installed Kamailio 4.0.3 like usual on a new test machine, but changed the CFGFILE variable in /etc/init.d/kamailio to /usr/local/etc/kamailio/kamailio.cfg. Kamailio started normally.
When I reset CFGFILE to CFGFILE=/etc/kamailio/kamailio.cfg and start Kamailio again, I'm getting an error saying it can't find the file at /usr/local/etc/kamailio/kamailio.cfg.
I renamed the config file at /usr/local/etc/kamailio/ to make sure it's not using that one, but it still is.
Why is the change not being accepted?
Regards,
Grant
hi,
i'm trying siremis 4.0 with kamailio 4.0.3. installation with web wizard
was successfull
i have strange problem with login. login succed but then i'm
immediately logged out.
i see MSG_LOGIN_SUCCESSFUL in log/DEBUG.log
can you point me where i can enable additional DEBUG in siremis?
or any other ideas what's the problem?
thanks
centos6, mysql 5.1, php 5.3
--
---------------------------------------
Marek Cervenka
=======================================
SCA Developers,
I ran into a problem using the SCA module and was looking for some
assistance for the following situation. Can you help? Here is the scenario:
1. When a conversation is occurring on a shared line with Polycom phones;
2. Another caller on the same shared line picks up the phone and uses
the barge-in feature;
3. The caller aborts the barge-in before being connected;
4. SCA or Polycom, I don't know which at this point, turns off the LEDs
on the shared line and then the shared line no longer behaves like a shared
line.
5. Even though the existing shared call continues, if the new caller
picks up the shared line he gets a green LED, hears a dial tone and is not
prompted to barge-in by the soft keys.
6. When all parties end the conversation the shared line returns to its
previous correct behavior.
Have you seen something like this? Do you have any suggestions on how to
troubleshoot or workaround the problem?
Thanks again for your help. The SCA module remains a very useful product
for us,
Bob
Hello,
Is it possible to store the weight attribute in the dispatcher table? If so, which column must I use?
I see it is possible when using the list file.
The attrs_avp is the closest thing, but I think this value has to be loaded from the database also?
Regards,
Grant
Hello,
Is there any way to authenticate requests when using Kamailio as an
outbound proxy?
For example, if all the phones are configured to use Kamailio as an
outbound proxy for NAT traversal, the credentials on the phone
authenticate against the destination SIP proxy and not the outbound SIP
proxy (Kamailio). Is there a way to have the credentials on the phone
authenticate to BOTH the outbound proxy and the destination SIP proxy?
Thanks,
Isaac
Hi,
While reading the module documentation of 'PRESENCE_XML' module, I came
across 'intergrated_xcap_server'. If it is set to value '0', then it has to
use xcap_client module to fetch documents from XCAP server. But as per
documentation, it says this mode is not supported. So can I assume that only
intergrated xcap server is supported in kamailio and not standalone. If YES,
module xcap_client cannot be used at all?
Can someone please confirm the same.
Regards,
Shankar
Hi,
I am trying to use SIPP to load test Kamailio. I am using a combination
with Freeswitch and Kamailio as an SBC with the calls being delivered to
Asterisk.
The problem seems to be with the ACK sent back from SIPP on response to the
200 OK. This ACK is not being forwarded by Kamailio and therefore FS drops
the call.
I have scoured every page and tried everything so any help would be
appreciated.
Thanks,
Keith
Hello,
I have a problem with Kamailio version 3.2.4 (tested also with 3.3.5)
regarding "binary data" in message bodies. According RFC3261 it is
explicitly allowed using binary data within MIME bodies:
RFC 3261 section 7.4.1: SIP messages MAY contain binary bodies or body
parts. When no explicit charset parameter is provided by the sender,
media subtypes of the "text" type are defined to have a default charset
value of "UTF-8".
However, the Kamailio function "Regular Expression Transformation"
(re.subst), which is based on the transformation class (exported by the
textops module) is causing problems in our customer system. In regular
scenarios, Kamailio is receiving SIP INVITE messages with a MIME body,
which is containing following parts:
- application/sdp (standard conform)
- application/x-q931 (Cisco proprietary with BINARY data!)
- application/gtd (Cisco proprietary with ASCII strings)
The content of the "x-q931" and "gtd" body parts is depending on (UUS1)
data that were received on the ISDN line. Kamailio has to forward
User-User specific information from the ISDN line to SIP user agents (in
form of the "User-to-User" header field). The content of these UUS1 data
may contain also byte values "00", which is legitimate. In general,
Kamailio is in every INVITE message searching specific content in the
last body (application/gtd) and copying this content to a config
variable. As soon as the x-q931 body contains nul values (0x00 in binary
format), the parser stops at this position and cannot parse the rest of
the message. Therefore, I am missing the information that should be
copied to the SIP header field, as the parser stops before the end of
the message body!
As long as the message body does not contain 0x00, it is working fine!
My question is:
- is this a bug in Kamailio parsing functions?
- is this a design issue of Kamailio text parsers (as binary data are
allowed acc. RFC3261) - does anybody know a solution for this problem?
This "bug" is causing big troubles....
Thanks in advance,
Klaus Feichtinger
P.S. trace data (1)...(3) of my problem
(1) exemplary content of the x-q931 body
======================Sending: Binary Message Body
Sep 13 10:50:19: Content-Type: application/x-q931
08 01 B4 05 04 03 80 90 A2 18 01 89 1E 02 82 88 6C 05 B1 35 30 30 34 70
05 B1 35 30 30 31 7D 02 91 81 7E 18 04 1D 42 75 25 92 43 31 62 94 00 00
2C 68 20 64 00 62 F2 10 41 B9 D7 BD 0D 0A
(2) SIP INVITE message (debugger view)
=============================INVITE sip:115101@<ipv4>:5060 SIP/2.0 Via:
SIP/2.0/UDP <ipv4>:5060;branch=z9hG4bK171164E
From: <sip:1101015004@<ipv4>>;tag=29E16410-2541
To: <sip:115101@<ipv4>>
Call-ID: 1DBCDACB-1B9911E3-8992FF70-D2BED293@<ipv4>
Supported: timer,resource-priority,replaces,sdp-anat
Min-SE: 90
CSeq: 101 INVITE
Max-Forwards: 70
Contact: <sip:1101015004@<ipv4>:5060>
Expires: 1800
P-Asserted-Identity: <sip:1101015004@<ipv4>>
Content-Type: multipart/mixed;boundary=uniqueBoundary
Mime-Version: 1.0
Content-Length: 820
--uniqueBoundary
Content-Type: application/sdp
Content-Disposition: session;handling=required
v=0
o=CiscoSystemsSIP-GW-UserAgent 1770 5294 IN IP4 <ipv4>
s=SIP Call
c=IN IP4 <ipv4>
t=0 0
m=audio 16384 RTP/AVP 8 0
c=IN IP4 <ipv4>
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
--uniqueBoundary
Content-Type: application/x-q931
Content-Disposition: signal;handling=optional
Content-Length: 62
4" l15004p15001}~Bu%C1b..,h d.brA9W
--uniqueBoundary
Content-Type: application/gtd
Content-Disposition: signal;handling=optional
IAM,
PRN,isdn*,,,
USI,rate,c,s,c,1
USI,lay1,ulaw
TMR,00
CPN,08,,1,5001
CGN,08,,1,,,5004
UUS,3,1d427525924331629400002c6820640062f21041b9d7bd
CPC,09
FCI,,,,,,,y,
GCI,185ef1291b9911e381d500270dff3fa0
--uniqueBoundary--
(3) config excerpt
============if (has_body("multipart/mixed")) {
if (filter_body("application/sdp")) {
remove_hf("Mime-Version");
remove_hf("Content-Type");
append_hf("Content-Type: application/sdp\r\n");
} else {
xlog("L_WARN", " <route> message body part 'application/sdp' not
found\n");
}
$var(UUS)=$(rb{re.subst,/^(.*)UUS,.,([a-z0-9,]*)..[A-Z][A-Z][A-Z],(.*)/\2/s});
append_hf("User-to-User: $var(UUS)\r\n", "CSeq");
if
!(subst_body('/Content-Disposition..session.handling=required....//s'))
{
xlog("L_WARN", " <route> substituting Content-Disposition
FAILED!!! \n");
}
msg_apply_changes();
if (search_body("a=[a-z]+:.+[\r\n]{4}$")) {
#!ifdef WITH_XLOGDEBUG
xlog("L_INFO", " <route> double CRLF at the end of the message
body detected - is reduced to one now. \n"); #!endif
$var(sdp) = $(rb{s.striptail,2});
set_body("$var(sdp)", "application/sdp");
}
}