[Kamailio-Users] No Audio with clients Behind NAT, audio is fine with clients using public IPs (Im using rtpproxy)
Pascal Maugeri
pascal.maugeri at gmail.com
Fri Jun 26 12:32:50 CEST 2009
I've just setup a similar configuration as yours.
Could you check the SDP payload of the SIP INVITE that goes from kamailio to
the callee ? It should contains the IP address of rtpproxy and the port
allocated by the proxy.
Regards,
Pascal
On Thu, Jun 25, 2009 at 12:41 PM, rubenrojas - Trc.es <rubenrojas at trc.es>wrote:
> Hello everyone, this is my first post on this list,
>
> I have installed kamailio 1.5.1 and set up a vanilla default kamailio.cfg,
> then I have modified the cfg to activate mysql, domain, presence, nathelper
> and authentication with md5, everything works as supposed to, and the
> clients can register, send txt messages and talk to each other. The only
> problem is with the audio when the two clients are behind a NAT, the phones
> can make a call and it does ring too, but when you pick up there is no audio
> both ways.
>
> when the phones have a public IP everything goes fine, it also works when I
> use a Linksys PAP2T whith the options to "Insert VIA received", "Insert VIA
> rport", "Handle VIA received", "Handle VIA rport" and "NAT mapping enable"
> turned on, with the Qutecom softphone works too.
>
> This is happening with thomson phones (model ST 2022), and GrandStream
> Budge Tone 200, it happens no matter what options I set for NATting on the
> phones, I've even used stun with stunserver.org or the ekiga stunserver,
> the phones register and can make and recieve calls, but there is no audio
> when you pick up the call.
>
> With a kamctl ul show, you can see that the phones have registered the
> Contact with their local IPs and the Received have the public IPs and ports
> for the NAT
> The only difference with the working Linksys is that they register the
> Contact with the public IP.
> Here you can see two NATed phones on the proxy
>
> Domain:: location table=512 records=2 max_slot=1
> AOR:: 20000004 at 212.4.107.250
> Contact:: sip:20000004 at 192.168.254.110:5060;transport=udp;user=phone
> Q=
> Expires:: 1150
> Callid:: 72ed03f6d2f390f9 at 192.168.254.110
> Cseq:: 10003
> User-agent:: Grandstream BT200 1.1.6.27
> Received:: sip:212.4.97.115:35379
> State:: CS_NEW
> Flags:: 0
> Cflag:: 0
> Socket:: udp:212.4.107.250:5060
> Methods:: 7807
> AOR:: 20000000 at 212.4.107.250
> Contact:: sip:20000000 at 192.168.254.101:5060;user=phone Q=
> Expires:: 2945
> Callid:: 17fe-c0a80101-5-1 at 192.168.254.101
> Cseq:: 6
> User-agent:: THOMSON ST2022 hw2 fw3.56
> 00-18-F6-B5-7E-06
> Received:: sip:212.4.97.115:55128
> State:: CS_NEW
> Flags:: 0
> Cflag:: 0
> Socket:: udp:212.4.107.250:5060
> Methods:: 4294967295
>
>
> Im using rtpproxy and there is no log error that indicates that rttpproxy
> isn't working, in fact doing a SIP trace shows rtpproxy setting ports for
> the audio.
> I run rtpproxy with this command:
>
> rtpproxy -l 212.4.107.250 -s udp:localhost:7722 -F
>
> Any help would be greatly appreciated, I've been two weeks looking for a
> solution
>
> Im attaching my kamailio.cfg so you can take a look, at the end of the
> message Im gonna attache the SIP Trace of a call between two NATed phones (a
> Thomson and a GrandStream) in case anyone can help me decypher whats wrong
> here:
>
> this is my cfg file
>
> **************************************************************************************************
>
> #
> # $Id: kamailio.cfg 5800 2009-04-20 11:01:49Z miconda $
> #
> # Kamailio (OpenSER) SIP Server - basic configuration script
> # - web: http://www.kamailio.org
> # - svn: http://openser.svn.sourceforge.net/viewvc/openser/
> #
> # Direct your questions about this file to: <users at lists.kamailio.org>
> #
> # Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php
> # for an explanation of possible statements, functions and parameters.
> #
> # There are comments showing how to enable different features in th econfig
> # file. Such commented code starts with #X# where X is a letter to identify
> # a feature. Delete entire #X# if you want to enable that feature. Next are
> # sed commands that help you enable such features.
> #
> # *** To enamble mysql execute:
> # sed -i 's/#m#//g' kamailio.cfg
> #
> # *** To enamble authentication execute:
> # - enable mysql
> # sed -i 's/#a#//g' kamailio.cfg
> # - add users using 'kamctl'
> #
> # *** To enamble persistent user location execute:
> # - enable mysql
> # sed -i 's/#u#//g' kamailio.cfg
> #
> # *** To enamble presence server execute:
> # - enable mysql
> # sed -i 's/#p#//g' kamailio.cfg
> #
> # *** To enamble nat traversal execute:
> # sed -i 's/#n#//g' kamailio.cfg
> # - install RTPProxy: http://www.rtpproxy.org
> # - start RTPProxy:
> # rtpproxy -l _your_public_ip_ -s udp:localhost:7722
> #
> # *** To enhance accounting execute:
> # - enable mysql
> # sed -i 's/#c#//g' kamailio.cfg
> # - add following columns to database
> # ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';
> # ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';
> # ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';
> # ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
> # ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
> # ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT
> '';
> # ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL
> DEFAULT '';
> # ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL
> DEFAULT '';
> # ALTER TABLE missed_call ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT
> '';
> # ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL
> DEFAULT '';
> #
>
>
> ####### Global Parameters #########
>
> debug=3
> log_stderror=no
> log_facility=LOG_LOCAL0
>
> fork=yes
> children=4
>
> /* 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/kamailio/tls/user/user-cert.pem"
> #tls_private_key = "/usr/local/etc/kamailio/tls/user/user-privkey.pem"
> #tls_ca_list = "/usr/local/etc/kamailio/tls/user/user-calist.pem"
>
>
> port=5060
>
> /* uncomment and configure the following line if you want Kamailio to
> bind on a specific interface/port/proto (default bind on all available)
> */
> #listen=udp:192.168.1.2:5060
>
>
> ####### Modules Section ########
>
> #set module path
> mpath="/usr/local/lib/kamailio/modules/"
>
> /* uncomment next line for MySQL DB support */
> loadmodule "db_mysql.so"
> loadmodule "mi_fifo.so"
> loadmodule "sl.so"
> loadmodule "tm.so"
> loadmodule "rr.so"
> loadmodule "pv.so"
> loadmodule "maxfwd.so"
> loadmodule "usrloc.so"
> loadmodule "registrar.so"
> loadmodule "textops.so"
> loadmodule "uri_db.so"
> loadmodule "siputils.so"
> loadmodule "xlog.so"
> loadmodule "acc.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"
> loadmodule "presence_mwi.so"#manually added
>
> loadmodule "nathelper.so"
>
> # ----------------- setting module-specific parameters ---------------
>
>
> # ----- mi_fifo params -----
> modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
>
>
> # ----- rr params -----
> # add value to ;lr param to cope with most of the UAs
> modparam("rr", "enable_full_lr", 1)
> # do not append from tag to the RR (no need for this script)
> modparam("rr", "append_fromtag", 0)
>
>
> # ----- rr params -----
> modparam("registrar", "method_filtering", 1)
> /* uncomment the next line to disable parallel forking via location */
> # modparam("registrar", "append_branches", 0)
> /* uncomment the next line not to allow more than 10 contacts per AOR */
> #modparam("registrar", "max_contacts", 10)
>
>
> # ----- uri_db params -----
> /* by default we disable the DB support in the module as we do not need it
> in this configuration */
> modparam("uri_db", "use_uri_table", 0)
> modparam("uri_db", "db_url", "")
>
>
> # ----- acc params -----
> /* what sepcial events should be accounted ? */
> modparam("acc", "early_media", 1)
> modparam("acc", "report_ack", 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)
> modparam("acc", "log_extra",
>
> "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
> /* uncomment the following lines to enable DB accounting also */
> #c#modparam("acc", "db_flag", 1)
> #c#modparam("acc", "db_missed_flag", 2)
> #c#modparam("domain", "db_url",
> #c# "mysql://openser:openserrw@localhost/openser")
> #c#modparam("acc", "db_extra",
> #c#
> "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
>
>
> # ----- usrloc params -----
> /* uncomment the following lines if you want to enable DB persistency
> for location entries */
> #u#modparam("usrloc", "db_mode", 2)
> #u#modparam("usrloc", "db_url",
> #u# "mysql://openser:openserrw@localhost/openser")
>
> # ----- auth_db params -----
> /* uncomment the following lines if you want to enable the DB based
> authentication */
> #a#modparam("auth_db", "calculate_ha1", yes)
> #a#modparam("auth_db", "password_column", "password")
> #a#modparam("auth_db", "db_url",
> #a# "mysql://openser:openserrw@localhost/openser")
> #a#modparam("auth_db", "load_credentials", "")
>
> #parametros de autentificacion modificados manualmente
> modparam("auth_db", "user_column", "username")
> modparam("auth_db", "domain_column", "domain")
> modparam("auth_db", "password_column", "ha1")
> modparam("auth_db", "password_column_2", "ha1b")
> modparam("auth_db", "calculate_ha1", 0)
> #modparam("auth_db", "use_domain", 0)
> modparam("auth_db", "use_domain", 1)#0 encendemos con 1 porque utilizaremos
> multi-domain
> modparam("auth_db", "load_credentials", "rpid")
> modparam("auth_db", "db_url",
> "mysql://openser:openserrw@localhost/openser")
>
>
> # ----- alias_db params -----
> /* uncomment the following lines if you want to enable the DB based
> aliases */
> #modparam("alias_db", "db_url",
> # "mysql://openser:openserrw@localhost/openser")
>
>
> # ----- domain params -----
> /* uncomment the following lines to enable multi-domain detection
> support */
> modparam("domain", "db_url",
> "mysql://openser:openserrw@localhost/openser")
> 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("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)
>
>
> # ----- presence params -----
> /* uncomment the following lines if you want to enable presence */
> modparam("presence|presence_xml", "db_url",
> "mysql://openser:openserrw@localhost/openser")
> modparam("presence_xml", "force_active", 1)
> modparam("presence", "server_address", "sip:212.4.107.250:5060")
>
> # -- nathelper
> modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7722")
> modparam("nathelper", "natping_interval", 15)
> modparam("nathelper", "ping_nated_only", 0)
> modparam("nathelper", "sipping_bflag", 7)
> modparam("nathelper", "sipping_from", "sip:pinger at 212.4.107.250<sip%3Apinger at 212.4.107.250>
> ")
> modparam("registrar|nathelper", "received_avp", "$avp(i:80)")
> modparam("usrloc", "nat_bflag", 6)
> modparam("nathelper", "sipping_method", "OPTIONS")
>
>
> ####### Routing Logic ########
>
>
> # main request routing logic
>
> route{
>
> if (!mf_process_maxfwd_header("10")) {
> sl_send_reply("483","Too Many Hops");
> exit;
> }
>
> # NAT detection
> route(4);
>
> if (has_totag()) {
> # sequential request withing a dialog should
> # take the path determined by record-routing
> if (loose_route()) {
> if (is_method("BYE")) {
> setflag(1); # do accounting ...
> setflag(3); # ... even if the transaction
> fails
> }
> route(1);
> } else {
> if (is_method("SUBSCRIBE") && uri == myself) {
> # in-dialog subscribe requests
> route(2);
> exit;
> }
> if ( is_method("ACK") ) {
> if ( t_check_trans() ) {
> # non loose-route, but stateful ACK;
> must be an ACK after a 487 or e.g. 404 from upstream server
> t_relay();
> exit;
> } else {
> # ACK without matching transaction
> ... ignore and discard.\n");
> 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();
>
> # authentication
> route(3);
>
> # record routing
> if (!is_method("REGISTER|MESSAGE"))
> {
> record_route();
> }
>
> # account only INVITEs
> if (is_method("INVITE")) {
> setflag(1); # do accounting
> }
> ##if (!uri==myself)
> /* replace with following line if multi-domain support is used */
> if (!is_uri_host_local())
> {
> append_hf("P-hint: outbound\r\n");
> # if you have some interdomain connections via TLS
> ##if($rd=="tls_domain1.net") {
> ## t_relay("tls:domain1.net");
> ## exit;
> ##} else if($rd=="tls_domain2.net") {
> ## t_relay("tls:domain2.net");
> ## exit;
> ##}
> route(1);
> }
>
> # requests for my domain
>
> if( is_method("PUBLISH|SUBSCRIBE"))
> {
> route(2);
> }
>
> if (is_method("REGISTER"))
> {
> if (!save("location"))
> {
> sl_reply_error();
> }
> exit;
> }
>
> if ($rU==NULL) {
> # request with no Username in RURI
> sl_send_reply("484","Address Incomplete");
> exit;
> }
>
> # apply DB based aliases (uncomment to enable)
> ##alias_db_lookup("dbaliases");
>
> if (!lookup("location")) {
> switch ($retcode) {
> case -1:
> case -3:
> t_newtran();
> t_reply("404", "Not Found");
> exit;
> case -2:
> sl_send_reply("405", "Method Not Allowed");
> exit;
> }
> }
>
> # when routing via usrloc, log the missed calls also
> setflag(2);
>
> route(1);
> }
>
>
> route[1] {
> if (check_route_param("nat=yes")) {
> setbflag(6);
> setbflag(7);# sipping
> }
> if (isflagset(5) || isbflagset(6)) {
> route(5);
> }
>
> /* example how to enable some additional event routes */
> if (is_method("INVITE")) {
> #t_on_branch("1");
> t_on_reply("1");
> t_on_failure("1");
> }
>
> if (!t_relay()) {
> sl_reply_error();
> }
> exit;
> }
>
>
> # Presence route
> /* uncomment the whole following route for enabling presence server */
> route[2]
> {
> if (!t_newtran())
> {
> sl_reply_error();
> exit;
> };
>
> if(is_method("PUBLISH"))
> {
> handle_publish();
> t_release();
> }
> else
> if( is_method("SUBSCRIBE"))
> {
> handle_subscribe();
> t_release();
> }
> exit;
>
> # if presence enabled, this part will not be executed
> if (is_method("PUBLISH") || $rU==null)
> {
> sl_send_reply("404", "Not here");
> exit;
> }
> return;
> }
>
> # Authentication route
> /* uncomment the whole following route for enabling authentication */
> route[3] {
> if (is_method("REGISTER"))
> {
> # authenticate the REGISTER requests (uncomment to enable
> auth)
> if (!www_authorize("", "subscriber"))
> {
> www_challenge("", "0");
> exit;
> }
>
> if ($au!=$tU)
> {
> sl_send_reply("403","Forbidden auth ID");
> exit;
> }
> }
> # Auth only on registration
> #a# } else {
> #a# # authenticate if from local subscriber (uncomment to
> enable auth)
> #a# if (from_uri==myself)
> #a# {
> #a# if (!proxy_authorize("", "subscriber")) {
> #a# proxy_challenge("", "0");
> #a# exit;
> #a# }
> #a# if (is_method("PUBLISH"))
> #a# {
> #a# if ($au!=$tU) {
> #a# sl_send_reply("403","Forbidden auth
> ID");
> #a# exit;
> #a# }
> #a# } else {
> #a# if ($au!=$fU) {
> #a# sl_send_reply("403","Forbidden auth
> ID");
> #a# exit;
> #a# }
> #a# }
> #a#
> #a# consume_credentials();
> #a# # caller authenticated
> #a# }
> #a# }
> return;
> }
>
> # Caller NAT detection route
> /* uncomment the whole following route for enabling Caller NAT Detection */
> route[4]{
> force_rport();
> if (nat_uac_test("19")) {
> if (method=="REGISTER") {
> fix_nated_register();
> } else {
> fix_nated_contact();
> }
> setflag(5);
> }
> return;
> }
>
> # RTPProxy control
> /* uncomment the whole following route for enabling RTPProxy Control */
> route[5] {
> if (is_method("BYE")) {
> unforce_rtp_proxy();
> } else if (is_method("INVITE")){
> force_rtp_proxy();
> }
> if (!has_totag()) add_rr_param(";nat=yes");
> return;
> }
>
> branch_route[1] {
> xdbg("new branch at $ru\n");
> }
>
>
> onreply_route[1] {
> xdbg("incoming reply\n");
>
> if ((isflagset(5) || isbflagset(6)) &&
> status=~"(183)|(2[0-9][0-9])") {
> force_rtp_proxy();
> }
> if (isbflagset(6)) {
> fix_nated_contact();
> }
> }
>
>
> failure_route[1] {
> if (is_method("INVITE")
> && (isbflagset(6) || isflagset(5))) {
> unforce_rtp_proxy();
> }
>
> if (t_was_cancelled()) {
> exit;
> }
>
> # uncomment the following lines if you want to block client
> # redirect based on 3xx replies.
> ##if (t_check_status("3[0-9][0-9]")) {
> ##t_reply("404","Not found");
> ## exit;
> ##}
>
> # uncomment the following lines if you want to redirect the failed
> # calls to a different new destination
> ##if (t_check_status("486|408")) {
> ## sethostport("192.168.2.100:5060");
> ## append_branch();
> ## # do not set the missed call flag again
> ## t_relay();
> ##}
> }
>
>
> **************************************************************************************************
>
> **************************************************************************************************
>
> And here goes the SIP Trace for a NATed to NATed hardphones:
>
> **************************************************************************************************
> U +0.161561 212.4.97.115:35379 -> 212.4.107.250:5060
> INVITE sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>;user=phone
> SIP/2.0
> Via: SIP/2.0/UDP 192.168.254.110:5060;branch=z9hG4bK8f809670adc00668
> From: "20000004" <sip:20000004 at 212.4.107.250<sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>;user=phone>
> Contact: <sip:20000004 at 192.168.254.110:5060;transport=udp;user=phone>
> Supported: replaces, timer, path
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> User-Agent: Grandstream BT200 1.1.6.27
> Max-Forwards: 70
> Allow:
> INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK
> Content-Type: application/sdp
> Content-Length: 332
>
> v=0
> o=20000004 8000 8000 IN IP4 192.168.254.110
> s=SIP Call
> c=IN IP4 192.168.254.110
> t=0 0
> m=audio 40000 RTP/AVP 4 3 18 0 8 9 97
> a=sendrecv
> a=rtpmap:4 G723/8000
> a=rtpmap:3 GSM/8000
> a=rtpmap:18 G729/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:9 G722/8000
> a=rtpmap:97 iLBC/8000
> a=fmtp:97 mode=20
> a=ptime:60
>
> #
> U +0.000407 212.4.107.250:5060 -> 212.4.97.115:35379
> SIP/2.0 100 Giving a try
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;branch=z9hG4bK8f809670adc00668;rport=35379;received=212.4.97.115
> From: "20000004" <sip:20000004 at 212.4.107.250<sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>;user=phone>
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Server: Kamailio (1.5.1-notls (i386/linux))
> Content-Length: 0
>
>
> #
> U +0.000034 212.4.107.250:5060 -> 212.4.97.115:55128
> INVITE sip:20000000 at 192.168.254.101:5060;user=phone SIP/2.0
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Via: SIP/2.0/UDP 212.4.107.250;branch=z9hG4bK5974.c5c9aa24.0
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004" <sip:20000004 at 212.4.107.250<sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>;user=phone>
> Contact: <sip:20000004 at 212.4.97.115:35379;transport=udp;user=phone>
> Supported: replaces, timer, path
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> User-Agent: Grandstream BT200 1.1.6.27
> Max-Forwards: 69
> Allow:
> INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK
> Content-Type: application/sdp
> Content-Length: 348
>
> v=0
> o=20000004 8000 8000 IN IP4 192.168.254.110
> s=SIP Call
> c=IN IP4 212.4.107.250
> t=0 0
> m=audio 35752 RTP/AVP 4 3 18 0 8 9 97
> a=sendrecv
> a=rtpmap:4 G723/8000
> a=rtpmap:3 GSM/8000
> a=rtpmap:18 G729/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:9 G722/8000
> a=rtpmap:97 iLBC/8000
> a=fmtp:97 mode=20
> a=ptime:60
> a=nortpproxy:yes
>
> #
> U +0.019311 212.4.97.115:55128 -> 212.4.107.250:5060
> SIP/2.0 100 Trying
> Via: SIP/2.0/UDP 212.4.107.250;branch=z9hG4bK5974.c5c9aa24.0
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>;user=phone>
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Content-Length: 0
>
>
> #
> U +0.030480 212.4.97.115:55128 -> 212.4.107.250:5060
> SIP/2.0 180 Ringing
> Via: SIP/2.0/UDP 212.4.107.250;branch=z9hG4bK5974.c5c9aa24.0
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Length: 0
>
>
> #
> U +0.000083 212.4.107.250:5060 -> 212.4.97.115:35379
> SIP/2.0 180 Ringing
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Length: 0
>
>
> #
> U +6.510103 212.4.97.115:55128 -> 212.4.107.250:5060
> SIP/2.0 200 OK
> Via: SIP/2.0/UDP 212.4.107.250;branch=z9hG4bK5974.c5c9aa24.0
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Require: timer
> Session-Expires: 100;refresher=uac
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Type: application/sdp
> Content-Length: 151
>
> v=0
> o=20000000 138812 138812 IN IP4 192.168.254.101
> s=-
> c=IN IP4 192.168.254.101
> t=0 0
> m=audio 32448 RTP/AVP 0
> a=rtpmap:0 PCMU/8000
> a=sendrecv
>
> #
> U +0.000365 212.4.107.250:5060 -> 212.4.97.115:35379
> SIP/2.0 200 OK
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Require: timer
> Session-Expires: 100;refresher=uac
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Type: application/sdp
> Content-Length: 167
>
> v=0
> o=20000000 138812 138812 IN IP4 192.168.254.101
> s=-
> c=IN IP4 212.4.107.250
> t=0 0
> m=audio 35754 RTP/AVP 0
> a=rtpmap:0 PCMU/8000
> a=sendrecv
> a=nortpproxy:yes
>
> #
> U +0.034122 212.4.97.115:35379 -> 212.4.107.250:5060
> ACK sip:20000000 at 192.168.254.101:5060;user=phone SIP/2.0
> Via: SIP/2.0/UDP 192.168.254.110:5060;branch=z9hG4bKdf5e0ceed72f3797
> Route: <sip:212.4.107.250;lr=on;nat=yes>
> From: "20000004" <sip:20000004 at 212.4.107.250<sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Contact: <sip:20000004 at 192.168.254.110:5060;transport=udp;user=phone>
> Supported: path
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 ACK
> User-Agent: Grandstream BT200 1.1.6.27
> Max-Forwards: 70
> Allow:
> INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK
> Content-Length: 0
>
>
> #
> U +0.000245 212.4.107.250:5060 -> 192.168.254.101:5060
> ACK sip:20000000 at 192.168.254.101:5060;user=phone SIP/2.0
> Via: SIP/2.0/UDP 212.4.107.250;branch=z9hG4bK5974.c5c9aa24.2
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bKdf5e0ceed72f3797
> From: "20000004" <sip:20000004 at 212.4.107.250<sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Contact: <sip:20000004 at 212.4.97.115:35379;transport=udp;user=phone>
> Supported: path
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 ACK
> User-Agent: Grandstream BT200 1.1.6.27
> Max-Forwards: 69
> Allow:
> INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK
> Content-Length: 0
>
>
> #
> U +0.458031 212.4.97.115:55128 -> 212.4.107.250:5060
> SIP/2.0 200 OK
> Via: SIP/2.0/UDP 212.4.107.250;branch=z9hG4bK5974.c5c9aa24.0
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Require: timer
> Session-Expires: 100;refresher=uac
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Type: application/sdp
> Content-Length: 151
>
> v=0
> o=20000000 138812 138812 IN IP4 192.168.254.101
> s=-
> c=IN IP4 192.168.254.101
> t=0 0
> m=audio 32448 RTP/AVP 0
> a=rtpmap:0 PCMU/8000
> a=sendrecv
>
> #
> U +0.000246 212.4.107.250:5060 -> 212.4.97.115:35379
> SIP/2.0 200 OK
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Require: timer
> Session-Expires: 100;refresher=uac
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Type: application/sdp
> Content-Length: 167
>
> v=0
> o=20000000 138812 138812 IN IP4 192.168.254.101
> s=-
> c=IN IP4 212.4.107.250
> t=0 0
> m=audio 35754 RTP/AVP 0
> a=rtpmap:0 PCMU/8000
> a=sendrecv
> a=nortpproxy:yes
>
> #
> U +0.999724 212.4.97.115:55128 -> 212.4.107.250:5060
> SIP/2.0 200 OK
> Via: SIP/2.0/UDP 212.4.107.250;branch=z9hG4bK5974.c5c9aa24.0
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Require: timer
> Session-Expires: 100;refresher=uac
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Type: application/sdp
> Content-Length: 151
>
> v=0
> o=20000000 138812 138812 IN IP4 192.168.254.101
> s=-
> c=IN IP4 192.168.254.101
> t=0 0
> m=audio 32448 RTP/AVP 0
> a=rtpmap:0 PCMU/8000
> a=sendrecv
>
> #
> U +0.000295 212.4.107.250:5060 -> 212.4.97.115:35379
> SIP/2.0 200 OK
> Via: SIP/2.0/UDP 192.168.254.110:5060
> ;rport=35379;received=212.4.97.115;branch=z9hG4bK8f809670adc00668
> From: "20000004"<sip:20000004 at 212.4.107.250 <sip%3A20000004 at 212.4.107.250>
> ;user=phone>;tag=ab6ba13b2f38a04e
> To: <sip:20000000 at 212.4.107.250 <sip%3A20000000 at 212.4.107.250>
> ;user=phone>;tag=c0a80101-21188
> Call-ID: c177cae013da224d at 192.168.254.110
> CSeq: 29653 INVITE
> Require: timer
> Session-Expires: 100;refresher=uac
> Allow:
> INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,SUBSCRIBE,NOTIFY,UPDATE,REFER,REGISTER,INFO
> Contact: <sip:20000000 at 192.168.254.101:5060;user=phone>
> Record-Route: <sip:212.4.107.250;lr=on;nat=yes>
> Allow-Events: refer,dialog,message-summary,check-sync,talk,hold
> Content-Type: application/sdp
> Content-Length: 167
>
> v=0
> o=20000000 138812 138812 IN IP4 192.168.254.101
> s=-
> c=IN IP4 212.4.107.250
> t=0 0
> m=audio 35754 RTP/AVP 0
> a=rtpmap:0 PCMU/8000
> a=sendrecv
> a=nortpproxy:yes
>
>
> _______________________________________________
> Kamailio (OpenSER) - Users mailing list
> Users at lists.kamailio.org
> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20090626/e8fa1dc6/attachment.htm>
More information about the sr-users
mailing list