/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#log_stderror=yes
/* uncomment the next line to disable TCP (default on) */
disable_tcp=yes
/* uncomment the next line to enable the auto temporary blacklisting of
not available destinations (default disabled) */
#disable_dns_blacklist=no
/* uncomment the next line to enable IPv6 lookup after IPv4 dns
lookup failures (default disabled) */
#dns_try_ipv6=yes
/* uncomment the next line to disable the auto discovery of local aliases
based on revers DNS on IPs (default on) */
#auto_aliases=no
/* uncomment the following lines to enable TLS support (default off) */
#disable_tls = no
#listen = tls:your_IP:5061
#tls_verify_server = 1
#tls_verify_client = 1
#tls_require_client_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/usr/local/etc/opensips/tls/user/user-cert.pem"
#tls_private_key = "/usr/local/etc/opensips/tls/user/user-privkey.pem"
#tls_ca_list = "/usr/local/etc/opensips/tls/user/user-calist.pem"
# default db_url to be used by modules requiring DB connection
#db_default_url="mysql://opensips:opensipsrw@localhost/opensips"
#db_default_url="mysql://root:@localhost/test"
port=5062
#mhomed=0
/* uncomment and configure the following line if you want opensips to
bind on a specific interface/port/proto (default bind on all available) */
#listen=udp:10.24.246.228:5062
/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
loadmodule "tm.so"
loadmodule "signaling.so"
loadmodule "sl.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "uri.so"
loadmodule "acc.so"
loadmodule "uac_auth.so"
loadmodule "b2b_entities.so"
loadmodule "b2b_logic.so"
loadmodule "dispatcher.so"
loadmodule "dialog.so"
/* uncomment next lines for MySQL based authentication support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "auth.so"
#loadmodule "auth_db.so"
/* uncomment next line for aliases support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "alias_db.so"
/* uncomment next line for multi-domain support
NOTE: a DB (like db_mysql) module must be also loaded
NOTE: be sure and enable multi-domain support in all used modules
(see "multi-module params" section ) */
#loadmodule "domain.so"
/* uncomment the next two lines for presence server support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "presence.so"
#loadmodule "presence_xml.so"
# --- rr params ---
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# --- registrar params ---
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
# --- usrloc params ---
modparam("usrloc", "db_mode", 0)
/* uncomment the following lines if you want to enable DB persistency
for location entries */
#modparam("usrloc", "db_mode", 2)
#modparam("usrloc", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
# --- uri params ---
modparam("uri", "use_uri_table", 0)
# --- acc params ---
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
if you enable this parameter, be sure the enable "append_fromtag"
in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
# --- auth_db params ---
/* uncomment the following lines if you want to enable the DB based
authentication */
#modparam("auth_db", "calculate_ha1", yes)
#modparam("auth_db", "password_column", "password")
#modparam("auth_db", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("auth_db", "load_credentials", "")
# --- alias_db params ---
/* uncomment the following lines if you want to enable the DB based
aliases */
#modparam("alias_db", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
# --- domain params ---
/* uncomment the following lines to enable multi-domain detection
support */
#modparam("domain", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("domain", "db_mode", 1) # Use caching
# --- multi-module params ---
/* uncomment the following line if you want to enable multi-domain support
in the modules (dafault off) */
#modparam("auth_db|usrloc|uri", "use_domain", 1)
# --- presence params ---
/* uncomment the following lines if you want to enable presence */
#modparam("presence|presence_xml", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("presence_xml", "force_active", 1)
#modparam("presence", "server_address", "sip:192.168.1.2:5060")
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
#setflag
}
else if (is_method("INVITE")) {
# even if in most of the cases is useless, do RR for
# re-INVITEs alos, as some buggy clients do change route set
# during the dialog.
record_route();
}
xlog("loose_route");
route(1);
} else {
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
xlog("non loose-route, but stateful ACK; must be an ACK after");
# non loose-route, but stateful ACK; must be an ACK after
# a 487 or e.g. 404 from upstream server
t_relay();
exit;
} else {
xlog("ACK without matching transaction -> ignore and discard");
# ACK without matching transaction ->
# ignore and discard
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
#initial requests
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# preloaded route checking
if (loose_route()) {
xlog("L_ERR",
"Attempt to route with preloaded Route's ");
if (!is_method("ACK"))
sl_send_reply("403","Preload Route denied");
exit;
}
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<!- This program is free software; you can redistribute it and/or ->
<!- modify it under the terms of the GNU General Public License as ->
<!- published by the Free Software Foundation; either version 2 of the ->
<!- License, or (at your option) any later version. ->
<!- ->
<!- This program is distributed in the hope that it will be useful, ->
<!- but WITHOUT ANY WARRANTY; without even the implied warranty of ->
<!- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ->
<!- GNU General Public License for more details. ->
<!- ->
<!- You should have received a copy of the GNU General Public License ->
<!- along with this program; if not, write to the ->
<!- Free Software Foundation, Inc., ->
<!- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ->
<!- ->
<!- Sipp default 'uas' scenario. ->
<!- ->
<scenario name="Basic UAS responder">
<!- By adding rrs="true" (Record Route Sets), the route sets ->
<!- are saved and used for following messages sent. Useful to test ->
<!- against stateful SIP proxies/B2BUAs. ->
<recv request="INVITE" crlf="true" rrs="true" start_rtd="1">
</recv>
<!- The '' keyword is replaced automatically by the ->
<!- specified header if it was present in the last message received ->
<!- (except if it was a retransmission). If the header was not ->
<!- present or if no message has been received, the '' ->
<!- keyword is discarded, and all bytes until the end of the line ->
<!- are also discarded. ->
<!- ->
<!- If the specified header was present several times in the ->
<!- message, all occurences are concatenated (CRLF seperated) ->
<!- to be used in place of the '' keyword. ->
Hello,
I Have a problem on Opensips, to use B2BUA with a refer scenario.
I have this problem problem :
ERROR:b2b_entities:b2b_prescript_f: No dialog found, callid= , method=REFER
When, the B2BUA receive the REFER method, the call transfer doesn't work..
Could someone help me please ?
Thanks in advance,
Florent.
My logs with this error:
Dec 9 11:31:12 localhost opensips: DBG:core:destroy_avp_list: destroying list (nil)
Dec 9 11:31:12 localhost opensips: DBG:core:receive_msg: cleaning up
Dec 9 11:31:12 localhost opensips: DBG:tm:utimer_routine: timer routine:4,tl=0xb59ab8cc next=(nil), timeout=9700000
Dec 9 11:31:12 localhost opensips: DBG:tm:utimer_routine: timer routine:4,tl=0xb59a9964 next=(nil), timeout=9800000
Dec 9 11:31:15 localhost opensips: DBG:core:parse_msg: SIP Request:
Dec 9 11:31:15 localhost opensips: DBG:core:parse_msg: method: <REFER>
Dec 9 11:31:15 localhost opensips: DBG:core:parse_msg: uri: <sip:10.24.246.91:5062>
Dec 9 11:31:15 localhost opensips: DBG:core:parse_msg: version: <SIP/2.0>
Dec 9 11:31:15 localhost opensips: DBG:core:parse_headers: flags=2
Dec 9 11:31:15 localhost opensips: DBG:core:parse_via_param: found param type 232, <branch> = <z9hG4bKddf1.a7cf4052.0>; state=16
Dec 9 11:31:15 localhost opensips: DBG:core:parse_via: end of header reached, state=5
Dec 9 11:31:15 localhost opensips: DBG:core:parse_headers: via found, flags=2
Dec 9 11:31:15 localhost opensips: DBG:core:parse_headers: this is the first via
Dec 9 11:31:15 localhost opensips: DBG:core:receive_msg: After parse_msg…
Dec 9 11:31:15 localhost opensips: DBG:core:receive_msg: preparing to run routing scripts…
Dec 9 11:31:15 localhost opensips: DBG:core:parse_headers: flags=ffffffffffffffff
Dec 9 11:31:15 localhost opensips: DBG:core:parse_to_param: tag=13086SIPpTag011
Dec 9 11:31:15 localhost opensips: DBG:core:parse_to_param: tag=13086SIPpTag011
Dec 9 11:31:15 localhost opensips: DBG:core:parse_to: end of header reached, state=29
Dec 9 11:31:15 localhost opensips: DBG:core:parse_to: display={}, ruri={sip:111@10.24.246.91:5063}
Dec 9 11:31:15 localhost opensips: DBG:core:get_hdr_field: <To> ; uri=
Dec 9 11:31:15 localhost opensips: DBG:core:get_hdr_field: to body
Dec 9 11:31:15 localhost opensips: DBG:core:get_hdr_field: cseq <CSeq>: <1> <REFER>
Dec 9 11:31:15 localhost opensips: DBG:core:get_hdr_field: content_length=0
Dec 9 11:31:15 localhost opensips: DBG:core:get_hdr_field: found end of header
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_prescript_f: start - method = REFER
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_prescript_f: <uri> host:port
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_prescript_f: <socket> address:port
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_prescript_f: <socket> address:port
Dec 9 11:31:15 localhost opensips: DBG:core:parse_to_param: tag=8ce09851b296d7c859872c90a73bb9de-8f38
Dec 9 11:31:15 localhost opensips: DBG:core:parse_to: end of header reached, state=29
Dec 9 11:31:15 localhost opensips: DBG:core:parse_to: display={}, ruri={sip:sipp@127.0.0.1:5060}
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_parse_key: Does not have b2b_entities prefix
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_parse_key: hash_index = - local_index=
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_prescript_f: received a b2b client request
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_search_htable_next_dlg: searching totag
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_search_htable_next_dlg: searching fromtag
Dec 9 11:31:15 localhost opensips: DBG:b2b_entities:b2b_prescript_f: No dialog found
Dec 9 11:31:15 localhost opensips: ERROR:b2b_entities:b2b_prescript_f: No dialog found, callid= , method=REFER
Dec 9 11:31:15 localhost opensips: REQU:<REFER> cid:B2B.368.4751306 ruri:sip:10.24.246.91:5062 furi:sip:sipp@127.0.0.1:5060 turi:sip:111@10.24.246.91:5063 cseq:1 (len:438)
Dec 9 11:31:15 localhost opensips: REFER sip:10.24.246.91:5062 SIP/2.0#015#012Via: SIP/2.0/UDP 10.24.246.91:5062;branch=z9hG4bKddf1.a7cf4052.0#015#012From: <sip:sipp@127.0.0.1:5060>;tag=8ce09851b296d7c859872c90a73bb9de-8f38#015#012To: <sip:111@10.24.246.91:5063>;tag=13086SIPpTag011;tag=13086SIPpTag011#015#012Call-ID: B2B.368.4751306#015#012CSeq: 1 REFER#015#012Contact: <sip:127.0.0.1:5063;transport=UDP>#015#012Max-Forwards: 70#015#012Subject: Performance Test#015#012Content-Length: 0#015#012Refer-To: <sip:10.24.243.11:5060>#015#012#015#012
Hi Florent,
Do you have a sip capture for the entire scenario (both sides) along with the corresponding logs ? you can upload them on pastebin or so.
Regards,
Bogdan
Hi Bogdan,
Thanks you for your answer.
I use SIPp to test a dialog with Opensips : SIPp (UAC) <---------> Opensips (BBUA) <---------> SIPp (UAS)
Attached my opensips.cfg, uac and uas scenarios.
---------------------------------- opensips.cfg ----------------------------------------
debug=6
log_stderror=no
log_facility=LOG_LOCAL5
fork=yes
children=1
/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#log_stderror=yes
/* uncomment the next line to disable TCP (default on) */
disable_tcp=yes
/* uncomment the next line to enable the auto temporary blacklisting of
not available destinations (default disabled) */
#disable_dns_blacklist=no
/* uncomment the next line to enable IPv6 lookup after IPv4 dns
lookup failures (default disabled) */
#dns_try_ipv6=yes
/* uncomment the next line to disable the auto discovery of local aliases
based on revers DNS on IPs (default on) */
#auto_aliases=no
/* uncomment the following lines to enable TLS support (default off) */
#disable_tls = no
#listen = tls:your_IP:5061
#tls_verify_server = 1
#tls_verify_client = 1
#tls_require_client_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/usr/local/etc/opensips/tls/user/user-cert.pem"
#tls_private_key = "/usr/local/etc/opensips/tls/user/user-privkey.pem"
#tls_ca_list = "/usr/local/etc/opensips/tls/user/user-calist.pem"
# default db_url to be used by modules requiring DB connection
#db_default_url="mysql://opensips:opensipsrw@localhost/opensips"
#db_default_url="mysql://root:@localhost/test"
port=5062
#mhomed=0
/* uncomment and configure the following line if you want opensips to
bind on a specific interface/port/proto (default bind on all available) */
#listen=udp:10.24.246.228:5062
####### Modules Section ########
#set module path
mpath="/usr/local/lib/opensips/modules/"
/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
loadmodule "tm.so"
loadmodule "signaling.so"
loadmodule "sl.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "uri.so"
loadmodule "acc.so"
loadmodule "uac_auth.so"
loadmodule "b2b_entities.so"
loadmodule "b2b_logic.so"
loadmodule "dispatcher.so"
loadmodule "dialog.so"
/* uncomment next lines for MySQL based authentication support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "auth.so"
#loadmodule "auth_db.so"
/* uncomment next line for aliases support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "alias_db.so"
/* uncomment next line for multi-domain support
NOTE: a DB (like db_mysql) module must be also loaded
NOTE: be sure and enable multi-domain support in all used modules
(see "multi-module params" section ) */
#loadmodule "domain.so"
/* uncomment the next two lines for presence server support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "presence.so"
#loadmodule "presence_xml.so"
# ----------- setting module-specific parameters ----------
# --- B2BUA ---
modparam("b2b_logic", "script_scenario", "/usr/local/etc/opensips/b2b_refer.xml")
modparam("b2b_entities", "script_req_route", "b2b_request")
modparam("b2b_entities", "script_reply_route", "b2b_reply")
modparam("b2b_entities", "db_mode", 0)
modparam("b2b_logic", "db_mode", 0)
#modparam("b2b_logic", "db_url", "mysql://root:florent@localhost/opensips")
#Not compulsory for script scenarios
#modparam("b2b_logic", "server_address", "sip:10.24.246.91:5062")
# --- tm_module ---
modparam("tm", "pass_provisional_replies", 1)
# --- dispatcher ---
modparam("dispatcher", "list_file", "/usr/local/etc/opensips/dispatcher.list")
# --- mi_fifo params ---
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
# --- rr params ---
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# --- registrar params ---
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
# --- usrloc params ---
modparam("usrloc", "db_mode", 0)
/* uncomment the following lines if you want to enable DB persistency
for location entries */
#modparam("usrloc", "db_mode", 2)
#modparam("usrloc", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
# --- uri params ---
modparam("uri", "use_uri_table", 0)
# --- acc params ---
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
if you enable this parameter, be sure the enable "append_fromtag"
in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
# --- auth_db params ---
/* uncomment the following lines if you want to enable the DB based
authentication */
#modparam("auth_db", "calculate_ha1", yes)
#modparam("auth_db", "password_column", "password")
#modparam("auth_db", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("auth_db", "load_credentials", "")
# --- alias_db params ---
/* uncomment the following lines if you want to enable the DB based
aliases */
#modparam("alias_db", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
# --- domain params ---
/* uncomment the following lines to enable multi-domain detection
support */
#modparam("domain", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("domain", "db_mode", 1) # Use caching
# --- multi-module params ---
/* uncomment the following line if you want to enable multi-domain support
in the modules (dafault off) */
#modparam("auth_db|usrloc|uri", "use_domain", 1)
# --- presence params ---
/* uncomment the following lines if you want to enable presence */
#modparam("presence|presence_xml", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("presence_xml", "force_active", 1)
#modparam("presence", "server_address", "sip:192.168.1.2:5060")
####### Routing Logic ########
# main request routing logic
route{
xlog("L_NOTICE","REQU:<$rm> cid:$ci ruri:$ru furi:$fu turi:$tu cseq:$cs (len:$ml)\n");
xlog("L_DBG", "$mb\n");
xlog("L_DBG", "$rb\n");
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
#setflag
}
else if (is_method("INVITE")) {
# even if in most of the cases is useless, do RR for
# re-INVITEs alos, as some buggy clients do change route set
# during the dialog.
record_route();
}
xlog("loose_route");
route(1);
} else {
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
xlog("non loose-route, but stateful ACK; must be an ACK after");
# non loose-route, but stateful ACK; must be an ACK after
# a 487 or e.g. 404 from upstream server
t_relay();
exit;
} else {
xlog("ACK without matching transaction -> ignore and discard");
# ACK without matching transaction ->
# ignore and discard
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
#initial requests
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# preloaded route checking
if (loose_route()) {
xlog("L_ERR",
"Attempt to route with preloaded Route's ");
if (!is_method("ACK"))
sl_send_reply("403","Preload Route denied");
exit;
}
if (is_method("INVITE") && !(src_ip == "10.24.246.91" && src_port == 5062) ) {
xlog("avant b2b_init_request");
b2b_init_request("top hiding");
xlog("apres b2b_init_request");
exit;
#record_route();
#t_relay();
#exit;
#if ($rU =="111"){
# ds_select_dst("1","4");
# xlog("Calling 111 !");
#}
}
if ($rU==NULL) {
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
route(1);
}
route {
xlog("route");
if (!t_relay()){
sl_reply_error();
};
exit;
}
onreply_route {
xlog("L_NOTICE","RESP:<$rs> cid:$ci furi$fu turi:$tu cseq:$cs (len:$ml)\n");
xlog("L_DBG", "$mb\n");
xlog("L_DBG", "$rb\n");
}
route {
xlog("b2b_request ($ci)\n");
xlog("L_NOTICE","b2b_request REQU:<$rm> cid:$ci furi$fu turi:$tu cseq:$cs (len:$ml)\n");
}
route {
xlog("b2b_reply ($ci)\n");
xlog("L_NOTICE","b2b_reply RESP:<$rs> cid:$ci furi$fu turi:$tu cseq:$cs (len:$ml)\n");
}
local_route {
xlog("local_route ($ci)\n");
xlog("L_NOTICE","local_route SENT:<$rm> cid:$ci furi$fu turi:$tu cseq:$cs (len:$ml)\n");
}
------------------------------- SIPp uac.xml ------------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<!- This program is free software; you can redistribute it and/or ->
<!- modify it under the terms of the GNU General Public License as ->
<!- published by the Free Software Foundation; either version 2 of the ->
<!- License, or (at your option) any later version. ->
<!- ->
<!- This program is distributed in the hope that it will be useful, ->
<!- but WITHOUT ANY WARRANTY; without even the implied warranty of ->
<!- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ->
<!- GNU General Public License for more details. ->
<!- ->
<!- You should have received a copy of the GNU General Public License ->
<!- along with this program; if not, write to the ->
<!- Free Software Foundation, Inc., ->
<!- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ->
<!- ->
<!- Sipp default 'uac' scenario. ->
<!- ->
<scenario name="Basic Sipstone UAC">
<!- In client mode (sipp placing calls), the Call-ID MUST be ->
<!- generated by sipp. To do so, use keyword. ->
<send retrans="500" start_rtd="1">
<![CDATA[
INVITE sip:@10.24.246.91:5063 SIP/2.0
Via: SIP/2.0/ :;branch=
From: sipp <sip:sipp@:>;tag=SIPpTag00
To: sut <sip:@:>
Call-ID:
CSeq: 1 INVITE
Contact: sip:sipp@:
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length:
v=0
o=- 3413194329 3413194329 IN IP
s=SJphone
c=IN IP
t=0 0
m=audio RTP/AVP 8
c=IN IP
a=rtpmap:8 PCMA/8000
]]>
</send>
<recv response="100" optional="true" rtd="1">
</recv>
<recv response="180" optional="true" rtd="1">
</recv>
<recv response="183" optional="true" rtd="1">
</recv>
<!- By adding rrs="true" (Record Route Sets), the route sets ->
<!- are saved and used for following messages sent. Useful to test ->
<!- against stateful SIP proxies/B2BUAs. ->
<recv response="200" start_rtd="2" rrs="true">
</recv>
<!- Packet lost can be simulated in any send/recv message by ->
<!- by adding the 'lost = "10"'. Value can be percent. ->
<send rtd="2">
<![CDATA[
ACK SIP/2.0
Via: SIP/2.0/ :;branch=
From: sipp <sip:sipp@:>;tag=SIPpTag00
To: sut <sip:@:>
Call-ID:
CSeq: 1 ACK
Contact: sip:sipp@:
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<!- This delay can be customized by the -d command-line option ->
<!- or by adding a 'milliseconds = "value"' option here. ->
<pause milliseconds="4000"/>
<recv request="BYE" crlf="true" rtd="3">
</recv>
<!- definition of the response time repartition table (unit is ms) ->
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!- definition of the call length repartition table (unit is ms) ->
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>
------------------------------- SIPp uas.xml ------------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<!- This program is free software; you can redistribute it and/or ->
<!- modify it under the terms of the GNU General Public License as ->
<!- published by the Free Software Foundation; either version 2 of the ->
<!- License, or (at your option) any later version. ->
<!- ->
<!- This program is distributed in the hope that it will be useful, ->
<!- but WITHOUT ANY WARRANTY; without even the implied warranty of ->
<!- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ->
<!- GNU General Public License for more details. ->
<!- ->
<!- You should have received a copy of the GNU General Public License ->
<!- along with this program; if not, write to the ->
<!- Free Software Foundation, Inc., ->
<!- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ->
<!- ->
<!- Sipp default 'uas' scenario. ->
<!- ->
<scenario name="Basic UAS responder">
<!- By adding rrs="true" (Record Route Sets), the route sets ->
<!- are saved and used for following messages sent. Useful to test ->
<!- against stateful SIP proxies/B2BUAs. ->
<recv request="INVITE" crlf="true" rrs="true" start_rtd="1">
</recv>
<!- The '' keyword is replaced automatically by the ->
<!- specified header if it was present in the last message received ->
<!- (except if it was a retransmission). If the header was not ->
<!- present or if no message has been received, the '' ->
<!- keyword is discarded, and all bytes until the end of the line ->
<!- are also discarded. ->
<!- ->
<!- If the specified header was present several times in the ->
<!- message, all occurences are concatenated (CRLF seperated) ->
<!- to be used in place of the '' keyword. ->
<send rtd="1">
<![CDATA[
SIP/2.0 100 Trying
;tag=SIPpTag01
Contact: <sip::;transport=>
Content-Length: 0
]]>
</send>
<send rtd="1">
<![CDATA[
SIP/2.0 180 Ringing
;tag=SIPpTag01
Contact: <sip::;transport=>
Content-Length: 0
]]>
</send>
<send retrans="500" start_rtd="2">
<![CDATA[
SIP/2.0 200 OK
;tag=SIPpTag01
Contact: <sip::;transport=>
Content-Type: application/sdp
Content-Length:
v=0
o=- 1463032673 1463032673 IN IP4 193.251.214.154
s=sviwinf09.35
c=IN IP4 193.251.214.154
t=0 0
m=audio 20070 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=sendrecv
]]>
</send>
<recv request="ACK" rtd="2" crlf="true">
</recv>
<pause milliseconds="2000"/>
<send rtd="2">
<![CDATA[
REFER SIP/2.0
Contact: <sip::;transport=>
Refer-To: <sip:10.24.243.11:5060>
Content-Length: 0
]]>
</send>
<recv response="202" crlf="true" rtd="2">
</recv>
<recv request="BYE" start_rtd="3">
</recv>
<send rtd="3">
<![CDATA[
SIP/2.0 200 OK
Contact: <sip::;transport=>
Content-Length: 0
]]>
</send>
<pause milliseconds="4000"/>
<!- definition of the response time repartition table (unit is ms) ->
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!- definition of the call length repartition table (unit is ms) ->
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>
You can find the tcpdump of my dialog and my corresponding log here : http://pastebin.com/kaiBvpGt
Thanks you in advance.
Regards,
Florent.
Sorry but I paste the wrong opensips.cfg,
In the initial INVITE, it's : b2b_init_request("refer") and not b2b_init_request("top hiding")
I have resolved my error. :-)
The problem was about the "totag" of my REFER method (send by SIPp UAS), i have changed it and now the call transfer work.
Hi Florent,
I was about to tell you that the REFER is bogusly generated with the wrong tag, but you were faster than me :)
Regards,
Bogdan
Thanks you anyway Bogdan ;-)
Regards,
Florent
Bogdan,
In the REFER method, the totag must be the same that the fromtag generated by the B2BUA please ?
Regards,
Florent.