Hey Bogdan,
I'm working with Serge on this. Thank you for the helper facts.
The TRACE log is before the error msg in the opensips.log. I've attached the
log to the bottom.
I'm hoping that our changes to the opensips.cfg are the cause of these errors.
We're currently manipulating $avp(i:25) and $avp(i:35) variables to handle
different carriers. Do you see anything wrong in this logic that could be
corrupting the header or msg? Specifically, what I notice is that the
Carrier-Name is not set in the header for this invite. We recently added some
logic to default to a particular carrier if no carrier is specified.
Under volume, we are seeing a large number of these type of parser errors in
both the header and the msg. I have other examples.
I've also added a portion of our route() implementation.
Thanks for your assistance,
Joel
route{
xlog("TRACE:ROUTE: time($Ts) src($si:$sp) dst($Ri:$Rp) msg($mb)\n");
...
if (is_method("INVITE")) {
# set carrier name
if (is_present_hf("Carrier-Name")) {
$avp(i:25) = $(hdr(Carrier-Name){s.tolower});
# valid carrier name passed?
switch ($avp(i:25)) {
case "carrierA" :
$avp(i:25) = "doA";
break;
case "carrierB" :
if ($rU =~ "^\+?1?8[0|6|7|8]{2}[0-9]{5,8}") {
# doA needs to be used for 1-800, 1-866, 1-877 or 1-888
calls
$avp(i:25) = "doA";
} else {
# doB is required for non 1-800 calls
$avp(i:25) = "doB";
}
default :
...
}
} else {
xlog("L_WARN", "WARN:ROUTE:CARRIER: no carrier name
specified\n");
# dialing to the US or Canada?
# We didn't find the Carrier-Name in the header. DoweI
need to
# add the Carrier-Name tag to the header or will just
setting $avp(i:25) work?
if ($rU =~ "^1" || $rU =~ "^\+1") {
# doA is the default carrier for US and
Canadian calls
$avp(i:25) = "doA";
}
... handle international
}
}
}
We also tweak $avp(i:35)
route[1] {
if ($(hdr(Reason)) != null) {
$avp(i:35) = $(hdr(Reason));
};
if (!t_relay()) {
sl_reply_error();
};
exit;
}
parse_via error msg logs
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: TRACE:ROUTE:
time(1235826197) src(63.xx.xx.xx:5060) dst(8.xx.xx.xx:5060) msg(INVITE
sip:[email protected]:5060 SIP/2.0
From: <sip:[email protected]:5060>;tag=telstage-67aa-49a935d9
To: sip:[email protected];tag=gK02b2b6e2
Contact: <sip:63.xx.xx.xx:5060;transport=udp>
Call-ID: [email protected]
CSeq: 32043 INVITE
Content-Length: 177
Content-Type: application/sdp
Content-Disposition: session; handling=required
Route: <sip:8.xx.xx.xx:5060;lr;ftag=telstage%2D67aa%2D49a935d9>
Session-Expires: 1800;refresher=uac
Supported: timer
Max-Forwards: 70
Via: SIP/2.0/UDP
63.xx.xx.xx:5060;branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
v=0
o=Sonus_UAC 8758 21805 IN IP4 4.xx.xx.xx
s=SIP Media Capabilities
c=IN IP4 4.xx.xx.xx
t=0 0
m=audio 11750 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=sendrecv
a=maxptime:20
)
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
invalid port number
<5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
<SIP/2.0/UDP
63.xx.xx.xx:5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
From: <sip:[email protected]:5060>;tag=telstage-67aa-49a935d9
To: sip:[email protected];tag=gK02b2b6e2
Call-ID: [email protected]
CSeq: 32043 INVITE
Record-Route: <sip:8.xx.xx.xx:5060;lr;ftag=telstage-67aa-49a935d9>
Accept: application/sdp, application/isup, application/dtmf,
application/dtmf-relay, multipart/mixed
Contact: <sip:[email protected]:5060>
Allow: INVITE,ACK,CANCEL,BYE,PRACK,UPDATE
Content-Length: 177
Content-Disposition: session; handling=required
Content-Type: application/sdp
v=0
o=Sonus_UAC 11722 5484 IN IP4 4.xx.xx.xx
s=SIP Media Capabilities
c=IN IP4 4.xx.xx.xx
t=0 0
m=audio 22942 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=sendrecv
a=maxptime:20
>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
parsed so far:<SIP/2.0/UDP
63.xx.xx.xx:5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
ERROR:core:get_hdr_field: bad via
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
INFO:core:parse_headers: bad header field
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:tm:t_check: reply
cannot be parsed
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
invalid port number
<5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
<SIP/2.0/UDP
63.xx.xx.xx:5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
From: <sip:[email protected]:5060>;tag=telstage-67aa-49a935d9
To: sip:[email protected];tag=gK02b2b6e2
Call-ID: [email protected]
CSeq: 32043 INVITE
Record-Route: <sip:8.xx.xx.xx:5060;lr;ftag=telstage-67aa-49a935d9>
Accept: application/sdp, application/isup, application/dtmf,
application/dtmf-relay, multipart/mixed
Contact: <sip:[email protected]:5060>
Allow: INVITE,ACK,CANCEL,BYE,PRACK,UPDATE
Content-Length: 177
Content-Disposition: session; handling=required
Content-Type: application/sdp
v=0
o=Sonus_UAC 11722 5484 IN IP4 4.xx.xx.xx
s=SIP Media Capabilities
c=IN IP4 4.xx.xx.xx
t=0 0
m=audio 22942 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=sendrecv
a=maxptime:20
>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
parsed so far:<SIP/2.0/UDP
63.xx.xx.xx:5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
ERROR:core:get_hdr_field: bad via
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
INFO:core:parse_headers: bad header field
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
ERROR:core:forward_reply: no 2nd via found in reply
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11609]: TRACE:ONREPLY_ROUTE:
time(1235826197) src(4.xx.xx.xx:5060) dst(8.xx.xx.xx:5060) msg(SIP/2.0 200 OK
Via: SIP/2.0/UDP 8.xx.xx.xx;branch=z9hG4bKff9d.4d7cb833.0
Via: SIP/2.0/UDP
63.xx.xx.xx:5060;branch=z9hG4bK49a935fc-039b-00672428-07d84f2d-3f76ff5a
From: <sip:[email protected]:5060>;tag=telstage-31e5-49a935fc
To: sip:[email protected];tag=gK0ad718b1
Call-ID: [email protected]
CSeq: 6600 INVITE
Record-Route: <sip:8.xx.xx.xx:5060;lr;ftag=telstage-31e5-49a935fc>
Accept: application/sdp, application/isup, application/dtmf,
application/dtmf-relay, multipart/mixed
Contact: <sip:[email protected]:5060>
Allow: INVITE,ACK,CANCEL,BYE,PRACK,UPDATE
Content-Length: 175
Content-Disposition: session; handling=required
Content-Type: application/sdp
v=0
o=Sonus_UAC 27689 2463 IN IP4 4.xx.xx.xx
s=SIP Media Capabilities
c=IN IP4 4.55.20.66
t=0 0
m=audio 26588 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
parsed so far:<SIP/2.0/UDP
63.xx.xx.xx:5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
ERROR:core:get_hdr_field: bad via
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
INFO:core:parse_headers: bad header field
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:tm:t_check: reply
cannot be parsed
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
invalid port number
<5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
<SIP/2.0/UDP
63.xx.xx.xx:5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
From: <sip:[email protected]:5060>;tag=telstage-67aa-49a935d9
To: sip:[email protected];tag=gK02b2b6e2
Call-ID: [email protected]
CSeq: 32043 INVITE
Record-Route: <sip:8.xx.xx.xx:5060;lr;ftag=telstage-67aa-49a935d9>
Accept: application/sdp, application/isup, application/dtmf,
application/dtmf-relay, multipart/mixed
Contact: <sip:[email protected]:5060>
Allow: INVITE,ACK,CANCEL,BYE,PRACK,UPDATE
Content-Length: 177
Content-Disposition: session; handling=required
Content-Type: application/sdp
v=0
o=Sonus_UAC 11722 5484 IN IP4 4.xx.xx.xx
s=SIP Media Capabilities
c=IN IP4 4.xx.xx.xx
t=0 0
m=audio 22942 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=sendrecv
a=maxptime:20
>
Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: ERROR:core:parse_via:
parsed so far:<SIP/2.0/UDP
63.xx.xx.xx:5060branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
________________________________
From: Bogdan-Andrei Iancu <[email protected]>
To: Serge JF <[email protected]>
Cc: [email protected]
Sent: Monday, March 2, 2009 1:18:41 AM
Subject: Re: [OpenSIPS-Users] OpenSIPS 1.4.2 memory corruption issue under
extreme load?
Hi Sergio,
First, some helper facts:
1) the message buffer is kept in private memory, so it cannot be written
by other processes
2) parsing of the first via is done before starting the script
execution, so, none of the modules can interfere with the buffer.
So, how do you get the TRACE log ? do you use the SIP TRACE module?
Is the TRACE log after the via error?
Regards,
Bogdan
Serge JF wrote:
> Hello,
>
> We run a very high volume OpenSIPS 1.4.2 deployment with over 6 million
> calls processed daily on a single server running CentOS 5. After 3 days at
> maximum load we started seeing errors such as:
>
> Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]:
> ERROR:core:parse_via: invalid port number
> <5060?branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf>
>
> You'll notice the question mark ? after the port number. The OpenSIPS parser
> does not like this and fails in the parsing - which had to be expected. The
> issue is that the message according to the XLOG statement we got at the very
> beginning of our route[] was received with a semicolon as expected:
>
> Feb 28 08:03:17 sip101 /usr/local/sbin/opensips[11614]: TRACE:ROUTE:
> time(1235826197) src(63.xx.xx.108:5060) dst(8.xx.xx.14:5060) msg(INVITE
> sip:[email protected]:5060 SIP/2.0
> From: <sip:[email protected]:5060>;tag=telstage-67aa-49a935d9
> To: sip:[email protected];tag=gK02b2b6e2
> Contact: <sip:63.xxx.xx.108:5060;transport=udp>
> Call-ID: [email protected]
> CSeq: 32043 INVITE
> Content-Length: 177
> Content-Type: application/sdp
> Content-Disposition: session; handling=required
> Route: <sip:8.xx.xx.14:5060;lr;ftag=telstage%2D67aa%2D49a935d9>
> Session-Expires: 1800;refresher=uac
> Supported: timer
> Max-Forwards: 70
> Via: SIP/2.0/UDP
> 63.xxx.xx.108:5060;branch=z9hG4bK49a93615-0234-0065adf8-8162901a-4330cddf
>
> Could this be due to some overwriting of string buffers in the OpenSIPS CORE
> or TM module? How should we go about debugging this issue? It only seems to
> happen after a few days under load. For the time being we have introduced a
> nightly restart of the OpenSIPS to clear up the memory.
>
> Any pointer (sic) would be most welcome!
>
> Best Regards,
>
> Serge
>
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users