[Serusers] public ip - private ip communication problem

varala ramakanth varala_kanth at yahoo.com
Thu May 27 07:49:35 CEST 2004


hello friends,

sorry to disturb you people again and again iam newbie


i know ser from last two weeks only

as iam suffering with this problem from last week

i need help of you people i hope some body is kind 

enough to help me out .


and my first scenario in simple ascii diagram

              public ip (estara softphone)
                            /|\
                             | 
                             |
                            \|/
                    SER server (public ip)
                            /|\
                             |
                            \|/
              public ip (estara softphone)

my SER server is redhat linux 9.0

iam using stable version which i got through cvs

and first checking with the public ip to publics ip

here i could able to establish the call i.e in either 

side i could able to listen the voice

in this iam not using any rtpproxy
------------------------------------------------------

[root at server sbin]# ser
Listening on
              127.0.0.1 [127.0.0.1]:5060
              <public ip>[public ip]:5060
Aliases: server.pol.net.in:5060 localhost:5060
localhost.localdomain:5060
stateless - initializing
[root at server sbin]# Maxfwd module- initializing
textops - initializing
 0(0) INFO: udp_init: SO_RCVBUF is initially 65535
 0(0) INFO: udp_init: SO_RCVBUF is finally 131070
 0(0) INFO: udp_init: SO_RCVBUF is initially 65535
 0(0) INFO: udp_init: SO_RCVBUF is finally 131070
 9(0) INFO: fifo process starting: 17451
 9(17451) SER: open_uac_fifo: fifo server up at
/tmp/ser_fifo...
 8(17450) parse_nameaddr(): No < found
 8(17450) parse_rr(): Error while parsing name-addr
 8(17450) find_first_route(): Error while parsing
Route HF
 6(17448) parse_nameaddr(): No < found
 6(17448) parse_rr(): Error while parsing name-addr
 6(17448) find_first_route(): Error while parsing
Route HF
 6(17448) parse_nameaddr(): No < found
 6(17448) parse_rr(): Error while parsing name-addr
 6(17448) find_first_route(): Error while parsing
Route HF
 7(17449) parse_nameaddr(): No < found
 7(17449) parse_rr(): Error while parsing name-addr
 7(17449) find_first_route(): Error while parsing
Route HF
 6(17448) parse_nameaddr(): No < found
 6(17448) parse_rr(): Error while parsing name-addr
 6(17448) find_first_route(): Error while parsing

-------------------------------------------------------
this is the second scenario 

           public ip (msn messenger)
                            /|\
                             | 
                             |
                            \|/
                    SER server (public ip)
                            /|\
                             |
                            \|/
               DHCP server (public ip , NAT device)
                            /|\
                             |
                            \|/
                 private ip (estara softphone)


in the terminal of ser iam gettign this
-----------------------------------------------------

[root at server sbin]# ser
Listening on
              127.0.0.1 [127.0.0.1]:5060
              <public ip>[public ip]:5060
Aliases: server.pol.net.in:5060 localhost:5060
localhost.localdomain:5060
[root at server sbin]# stateless - initializing
Maxfwd module- initializing
textops - initializing
 0(0) INFO: udp_init: SO_RCVBUF is initially 65535
 0(0) INFO: udp_init: SO_RCVBUF is finally 131070
 0(0) INFO: udp_init: SO_RCVBUF is initially 65535
 0(0) INFO: udp_init: SO_RCVBUF is finally 131070
 9(0) INFO: fifo process starting: 17642
 9(17642) SER: open_uac_fifo: fifo server up at
/tmp/ser_fifo...
 5(17638) parse_nameaddr(): No < found
 5(17638) parse_rr(): Error while parsing name-addr
 5(17638) find_first_route(): Error while parsing
Route HF
 8(17641) parse_nameaddr(): No < found
 8(17641) parse_rr(): Error while parsing name-addr
 8(17641) find_first_route(): Error while parsing
Route HF
 5(17638) ERROR: extract_body: message body has lenght
zero
 5(17638) ERROR: force_rtp_proxy: can't extract body
from the message
 5(17638) ERROR: on_reply processing failed

-----------------------------------------------------
here iam using the rtpproxy of version 1.4 2003/08/05

./rtpproxy -f

in the terminal of rtpproxy iam getting this
-----------------------------------------------------
[root at server rtpproxy]# ./rtpproxy -f
rtpproxy: new session on a port 35000
rtpproxy: lookup on a port 35000
rtpproxy: addr1 filled in: 202.65.128.24
rtpproxy: addr2 filled in: 202.65.148.252
rtpproxy: stats: 179 in from addr1, 3 in from addr2,
180 relayed
rtpproxy: session on port 35000 is cleaned up

------------------------------------------------------

the result is i could able to see that both mic and 

speaker are working and iam listening what ever public

ip softphone is speaking in private ip softphone.

but in public ip softphone i have seen  that only

mic is working not the speakers i.e i could not 

able to listen what ever private ip softphone is 

speaking

i observed that one malformed sip packet is genrating 

thorugh the ser in tethereal

so my ethereal report is 


****************************************************
Frame 3 (327 bytes on wire, 327 bytes captured)
    Arrival Time: May 23, 2004 20:18:03.259293000
    Time delta from previous packet: 2.401569000
seconds
    Time relative to first packet: 2.402778000 seconds
    Frame Number: 3
    Packet Length: 327 bytes
    Capture Length: 327 bytes
Ethernet II, Src: 00:e0:2b:90:1f:00, Dst:
00:e0:18:ed:04:61
    Destination: 00:e0:18:ed:04:61 (Asustek__ed:04:61)
    Source: 00:e0:2b:90:1f:00 (Extreme__90:1f:00)
    Type: IP (0x0800)
Internet Protocol, Src Addr: 202.*.*.252 (dhcp i.e nat
server) (202.*.*.252), Dst Addr: 202. *.*.19
(202.*.*.19)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00:
Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint:
Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 313
    Identification: 0xf5f8
    Flags: 0x00
        .0.. = Don't fragment: Not set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 125
    Protocol: UDP (0x11)
    Header checksum: 0x9d28 (correct)
    Source: 202.*.*.252 (202.*.*.252)
    Destination: 202.*.*.19 (202.*.*.19)
User Datagram Protocol, Src Port: 62812 (62812), Dst
Port: 5060 (5060)
    Source port: 62812 (62812)
    Destination port: 5060 (5060)
    Length: 293
    Checksum: 0x8112 (correct)
Session Initiation Protocol
    Request line: REGISTER sip:202.*.*.19 SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 192.168.1.18:5060
        From: sip:203 at 202.*.*.19
        To: sip:203 at 202.*.*.19
        Contact: sip:203 at 192.168.1.18:5060
        Call-ID:
e166bf60-acf2-11d8-aafe-00e01846e257 at 192.168.1.18
        CSeq: 32320301 REGISTER
        Content-Length: 0
        Expires: 3600

Frame 4 (629 bytes on wire, 629 bytes captured)
    Arrival Time: May 23, 2004 20:18:03.261431000
    Time delta from previous packet: 0.002138000
seconds
    Time relative to first packet: 2.404916000 seconds
    Frame Number: 4
    Packet Length: 629 bytes
    Capture Length: 629 bytes
Ethernet II, Src: 00:e0:18:ed:04:61, Dst:
00:e0:2b:90:1f:00
    Destination: 00:e0:2b:90:1f:00 (Extreme__90:1f:00)
    Source: 00:e0:18:ed:04:61 (Asustek__ed:04:61)
    Type: IP (0x0800)
Internet Protocol, Src Addr: 202.*.*.19 (202.*.*.19),
Dst Addr: 202.*.*.252 (202.*.*.252)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x10 (DSCP 0x04:
Unknown DSCP; ECN: 0x00)
        0001 00.. = Differentiated Services Codepoint:
Unknown (0x04)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 615
    Identification: 0x0000
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: UDP (0x11)
    Header checksum: 0x8ee3 (correct)
    Source: 202.*.*.19 (202.*.*.19)
    Destination: 202.*.*.252 (202.*.*.252)
User Datagram Protocol, Src Port: 5060 (5060), Dst
Port: 62812 (62812)
    Source port: 5060 (5060)
    Destination port: 62812 (62812)
    Length: 595
    Checksum: 0x0d6c (correct)
Session Initiation Protocol
    Status line: SIP/2.0 200 OK
    Message Header
        Via: SIP/2.0/UDP
192.168.1.18:5060;rport=62812;received=202.*.*.252
        From: sip:203 at 202.*.*.19
        To:
sip:203 at 202.65.128.19;tag=b27e1a1d33761e85846fc98f5f3a7e58.d036
        Call-ID:
e166bf60-acf2-11d8-aafe-00e01846e257 at 192.168.1.18
        CSeq: 32320301 REGISTER
Status line: SIP/2.0 200 OK
    Message Header
        Via: SIP/2.0/UDP
192.168.1.18:5060;rport=62812;received=202.*.*.252
        From: sip:203 at 202.*.*.19
        To:
sip:203 at 202.*.*.19;tag=b27e1a1d33761e85846fc98f5f3a7e58.d036
        Call-ID:
e166bf60-acf2-11d8-aafe-00e01846e257 at 192.168.1.18
        CSeq: 32320301 REGISTER
        Contact:
<sip:203 at 202.*.*.252:62812>;q=0.00;expires=3600
        Server: Sip EXpress router (0.8.12-tcp_nonb
(i386/linux))
        Content-Length: 0
        Warning: 392 202.*.*.19:5060 "Noisy feedback
tells:  pid=17639 req_src_ip=202.*.*.252 req_src_p
ort=62812 in_uri=sip:202.*.*.19
out_uri=sip:202.65.128.19 via_cnt==1"

Frame 5 (46 bytes on wire, 46 bytes captured)
    Arrival Time: May 23, 2004 20:18:18.476274000
    Time delta from previous packet: 15.214843000
seconds
    Time relative to first packet: 17.619759000
seconds
    Frame Number: 5
    Packet Length: 46 bytes
    Capture Length: 46 bytes
Ethernet II, Src: 00:e0:18:ed:04:61, Dst:
00:e0:2b:90:1f:00
    Destination: 00:e0:2b:90:1f:00 (Extreme__90:1f:00)
    Source: 00:e0:18:ed:04:61 (Asustek__ed:04:61)
    Type: IP (0x0800)
Internet Protocol, Src Addr: 202.*.*.19 (202.*.*.19),
Dst Addr: 202.*.*.252 (202.*.*.252)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x10 (DSCP 0x04:
Unknown DSCP; ECN: 0x00)
        0001 00.. = Differentiated Services Codepoint:
Unknown (0x04)
        .... ..0. = ECN-Capable Transport (ECT): 0
Differentiated Services Field: 0x10 (DSCP 0x04:
Unknown DSCP; ECN: 0x00)
        0001 00.. = Differentiated Services Codepoint:
Unknown (0x04)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 32
    Identification: 0x0000
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: UDP (0x11)
    Header checksum: 0x912a (correct)
    Source: 202.*.*.19 (202.*.*.19)
    Destination: 202.*.*.252 (202.*.*.252)
User Datagram Protocol, Src Port: 5060 (5060), Dst
Port: 62812 (62812)
    Source port: 5060 (5060)
    Destination port: 62812 (62812)
    Length: 12
    Checksum: 0x4d22 (correct)
[Malformed Packet: SIP]

*********************************************************
i kept * inorder to hide the public ip please pardon
me for that
                          
ser.cfg is of klaus which he kept in the we last 

febaraury with some light modifications confined to my


problem

my ser.cfg is 
******************************************************
#
# $Id: ser.cfg,v 1.21 2003/06/04 13:47:36 jiri Exp $
#
# simple quick-start config script
#

# ----------- global configuration parameters
------------------------

debug=3         # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes        # (cmd line: -E)


# Uncomment these lines to enter debugging mode
/*
debug=7
fork=no
log_stderror=yes
*/

check_via=no    # (cmd. line: -v)
dns=no           # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/ser_fifo"
alias=server.pol.net.in
#------------------ module loading
----------------------------------

# Uncomment this if you want to use SQL database
#loadmodule "/usr/local/lib/ser/modules/mysql.so"

loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"

# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"

# load the voicemail module
#loadmodule "/usr/local/lib/ser/modules/vm.so"

# load the enum module
#loadmodule "/usr/local/lib/ser/modules/enum.so"

# load the group module, to verify if a user forwards
to voicemail
#loadmodule "/usr/local/lib/ser/modules/group.so"

# load the nathelper module
loadmodule "/usr/local/lib/ser/modules/nathelper.so"

# ----------------- setting module-specific parameters
---------------

# -- registrar parameter
# special NAT flag indicates that a registered client
is behind NAT
modparam("registrar", "nat_flag", 6)

# -- usrloc params --

#modparam("usrloc", "db_mode",   0)

# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#/
#odparam("usrloc", "db_mode", 0)
#modparam("usrloc", "db_url",
"mysql://ser:XXXXXXX@localhost/ser")

# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which
true in this config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")
#modparam("auth_db", "db_url",
"mysql://ser:XXXXXXX@localhost/ser")

# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)

# -- voicemail params --
#modparam("voicemail",
"db_url","mysql://ser:XXXXXXX@localhost/ser")

# -- voicemail params --
#modparam("group",
"db_url","mysql://serro:XXXXXXXXX@localhost/ser")

# -- nathelper params --
modparam("nathelper", "natping_interval", 60)
modparam("nathelper", "ping_nated_only", 1)
modparam("tm", "fr_inv_timer", 30 )
#/modparam("register","nat_flag",6)
#modparam("tm", "fr_inv_timer", 8 )

# -------------------------  request routing logic
-------------------

# main routing logic



        if (nat_uac_test("2")) {
                force_rport();
                fix_nated_contact();
               if (method=="INVITE")
                       {
                       fix_nated_sdp("1");
                       }
                append_hf("P-hint: fixed NAT contact
for request\r\n");
                setflag(5);
        };
        if (!mf_process_maxfwd_header("10")) {
                sl_send_reply("483","Too Many Hops");
                break;
        };
        if (msg:len > max_len) {
                sl_send_reply("513", "Message too
big");
                break;
        };
        if (loose_route()) {
                log(1, "loose_route processing\n");
                t_relay();
                break;
        };
        if (uri==myself) {

                if (method=="REGISTER")
                {
                        if (isflagset(5)) {
                                setflag(6);

...skipping 29 lines
                if (method=="INVITE")
                {
                        force_rtp_proxy();
                        append_hf("P-hint: request
forced to rtp proxy\r\n");
                        setflag(7);
                };
        };
        if (!t_relay()) {
                sl_reply_error();
        };

}

onreply_route[1] {
        if (isflagset(6)) {
                fix_nated_contact();
                append_hf("P-hint: fixed NAT contact
for response\r\n");
        }

        if ( (status=~"200" || status=~"183") ) {
                if ( isflagset(7) ) {
                        force_rtp_proxy();
                        append_hf("P-hint: response
forced to rtp proxy\r\n");
                };
        };
}

route[4]{
        # non-Voip -- just send "off-line"
        if (!(method == "INVITE" || method == "ACK" ||
method == "CANCEL" || method == "REFER" || method == "
BYE")) {
                log(1, "no
invite,ack,cancel,refer->return 404\n");
                sl_send_reply("404", "Not Found");
                break;
        };

        # not voicemail subscriber and no
echo/conference call
        if ( isflagset(4)) {
                log(1, "flag(4) active\n");
        };
        if (uri =~ "conference") {
                log(1, "conference call\n");
        };
        if (uri =~ "echo") {
                log(1, "echo call\n");
        };
        if ( !( isflagset(4) || (uri =~ "conference")
|| (uri =~ "echo") ) ) {
                log(1, "no voicemail
subscriber->return 404");
                sl_send_reply("404", "Not Found and no
voicemail turned on");
                break;
        };

        if ( isflagset(5) ) {
                log(1, "caller is
NATed->record_route\n");
                record_route();
                log(1, "     -->setting up reply
processing ->onreply_route[1]");
                t_on_reply("1");
                if (method=="INVITE") {
                        log(1, "     INVITE
request-->force_rtp_proxy");
                        force_rtp_proxy();
                };
        };

}

******************************************************

my requirement is private to public call establishment

so please kindly guide me

with regards
rama kanth


	
		
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 




More information about the sr-users mailing list