Hello,
What is the default behaviour for mediaproxy on call holds? Is there a need
to tear down an open media session when a re-Invite is received with the
typical on-hold values? Or is this handled by the dispatcher automatically?
Thanks,
best regards,
Martin
Hi ,
i am facing the same problem, can advice where you add the t_on_reply("1")
to make the PSTN have audio.
I have another problem I want to send public address instead of NAT address
in the c=IP4 function in the SDP message, anyone done this before, i am a
newbie I am problem in trying to code it. Please help. Thanks in
advance.....
Regards,
nicky
----- Original Message -----
From: "Kapil Dhawan" <sersavvy(a)hotmail.com>
To: <zeus.ng(a)isquare.com.au>
Cc: <serusers(a)lists.iptel.org>
Sent: Wednesday, June 02, 2004 12:19 PM
Subject: RE: [Serusers] PSTN
exactly...you are right...i was skipping it somehow and now working ok....
>From: "Zeus Ng" <zeus.ng(a)isquare.com.au>
>To: "Kapil Dhawan" <sersavvy(a)hotmail.com>
>CC: serusers(a)lists.iptel.org
>Subject: RE: [Serusers] PSTN
>Date: Wed, 2 Jun 2004 11:42:07 +1000 (EST)
>
>You should do the t_on_reply("1") for PSTN call as well. I hope the other
>thread you mentioned about solving the problem is what I said here.
>
>Zeus
>
> > Hi List
> >
> > I am still unable to solve this issue why the my NAT user is unable to
> > hear
> > when he makes a PSTn call..
> >
> > # ----------- global configuration parameters ------------------------
> >
> > debug=8 # debug level (cmd line: -dddddddddd)
> > fork=yes
> > log_stderror=yes # (cmd line: -E)
> >
> > 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"
> >
> > # ------------------ 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"
> >
> > # !! Nathelper
> > loadmodule "/usr/local/lib/ser/modules/nathelper.so"
> >
> > # !! Accounting
> > loadmodule "/usr/local/lib/ser/modules/acc.so"
> >
> > # ----------------- setting module-specific parameters ---------------
> >
> > # -- usrloc params --
> >
> > #modparam("usrloc", "db_mode", 0)
> >
> > # Uncomment this if you want to use SQL database
> > # for persistent storage and comment the previous line
> > modparam("usrloc", "db_mode", 2)
> >
> > # -- 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")
> >
> > # -- rr params --
> > # add value to ;lr param to make some broken UAs happy
> > modparam("rr", "enable_full_lr", 1)
> >
> > # !! Nathelper
> > # -- nathelper params --
> > modparam("registrar", "nat_flag", 6)
> > modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
> > modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind
> > NAT
> >
> > # !! Accounting
> > # -- acc params --
> > # set the reporting log level
> > modparam("acc", "log_level", 2) # Set log_level to 2
> > # number of flag, which will be used for accounting; if a message is
> > # labeled with this flag, its completion status will be reported
> > modparam("acc", "log_flag", 1 )
> > modparam("acc", "log_missed_flag", 2)
> > modparam("acc", "failed_transactions", 1)
> > modparam("acc", "report_cancels", 1)
> > modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
> > modparam("acc", "db_flag", 1)
> > modparam("acc", "db_missed_flag", 2)
> >
> > # ------------------------- request routing logic -------------------
> >
> > # main routing logic
> >
> > route{
> >
> > # initial sanity checks -- messages with
> > # max_forwards==0, or excessively long requests
> > 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;
> > };
> >
> > # !! Nathelper
> > # Special handling for NATed clients; first, NAT test is
> > # executed: it looks for via!=received and RFC1918 addresses
> > # in Contact (may fail if line-folding is used); also,
> > # the received test should, if completed, should check all
> > # vias for rpesence of received
> > if (nat_uac_test("3")) {
> > # Allow RR-ed requests, as these may indicate that
> > # a NAT-enabled proxy takes care of it; unless it is
> > # a REGISTER
> >
> > if (method == "REGISTER" || ! search("^Record-Route:")) {
> > log("LOG: Someone trying to register from private IP,
>rewriting\n");
> >
> > # This will work only for user agents that support symmetric
> > # communication. We tested quite many of them and majority is
> > # smart enough to be symmetric. In some phones it takes a
> > configuration
> > # option. With Cisco 7960, it is called NAT_Enable=Yes, with
>kphone
> > it
> > is
> > # called "symmetric media" and "symmetric signalling".
> >
> > fix_nated_contact(); # Rewrite contact with source IP of
>signalling
> > if (method == "INVITE") {
> > fix_nated_sdp("1"); # Add direction=active to SDP
> > };
> > force_rport(); # Add rport parameter to topmost Via
> > setflag(6); # Mark as NATed
> > };
> > };
> >
> > # labeled all transaction for accounting
> > setflag(1);
> > setflag(2);
> >
> > # we record-route all messages -- to make sure that
> > # subsequent messages will go through our proxy; that's
> > # particularly good if upstream and downstream entities
> > # use different transport protocol
> > if (!method=="REGISTER") record_route();
> >
> > # subsequent messages withing a dialog should take the
> > # path determined by record-routing
> > if (loose_route()) {
> > # mark routing logic in request
> > append_hf("P-hint: rr-enforced\r\n");
> > route(1);
> > break;
> > };
> >
> > if (!uri==myself) {
> > # mark routing logic in request
> > append_hf("P-hint: outbound\r\n");
> > route(1);
> > break;
> > };
> >
> > # if the request is for other domain use UsrLoc
> > # (in case, it does not work, use the following command
> > # with proper names and addresses in it)
> > if (uri==myself) {
> >
> > if (method=="REGISTER") {
> >
> > # Uncomment this if you want to use digest authentication
> > if (!www_authorize("1.1.1.1","subscriber")) {
> > www_challenge("1.1.1.1", "0");
> > break;
> > };
> >
> > save("location");
> > break;
> > };
> >
> > if(uri=~"^sip:00*"){
> > append_hf("P-hint: PSTN call\r\n");
> > route(1);
> > break;
> > };
> >
> > lookup("aliases");
> > if (!uri==myself) {
> > append_hf("P-hint: outbound alias\r\n");
> > route(1);
> > break;
> > };
> >
> > # native SIP destinations are handled using our USRLOC DB
> > if (!lookup("location")) {
> > sl_send_reply("404", "Not Found");
> > break;
> > };
> > };
> > append_hf("P-hint: usrloc applied\r\n");
> > route(1);
> > }
> >
> > route[1]
> > {
> > # !! Nathelper
> > if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
> > !search("^Route:")){
> > sl_send_reply("479", "We don't forward to private IP addresses");
> > break;
> > };
> >
> > # if client or server know to be behind a NAT, enable relay
> > if (isflagset(6)) {
> > force_rtp_proxy();
> > };
> >
> > if(uri=~"^sip:00*"){
> > rewritehost("2.2.2.2");
> > t_relay_to_udp("2.2.2.2","5060");
> > break;
> > };
> >
> > # NAT processing of replies; apply to all transactions (for example,
> > # re-INVITEs from public to private UA are hard to identify as
> > # NATed at the moment of request processing); look at replies
> > t_on_reply("1");
> >
> > # send it out now; use stateful forwarding as it works reliably
> > # even for UDP2TCP
> > if (!t_relay()) {
> > sl_reply_error();
> > };
> > }
> >
> > # !! Nathelper
> > onreply_route[1] {
> > # NATed transaction ?
> > if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
> > fix_nated_contact();
> > force_rtp_proxy();
> > # otherwise, is it a transaction behind a NAT and we did not
> > # know at time of request processing ? (RFC1918 contacts)
> > } else if (nat_uac_test("1")) {
> > fix_nated_contact();
> > };
> > }
> >
> >
> >
> >
> >
> >
> >
> >>From: "Kapil Dhawan" <sersavvy(a)hotmail.com>
> >>To: sersavvy(a)hotmail.com
> >>CC: serusers(a)lists.iptel.org
> >>Subject: RE: [Serusers] PSTN
> >>Date: Tue, 01 Jun 2004 05:02:54 +0000
> >>
> >>Hi my second part is done...i have used t_relay_to_udp rather than
> >> forward
> >>for pstn calls and now logs are coming....for pstn as well
> >>
> >>but first is till not done.
> >>
> >> >From: "Kapil Dhawan" <sersavvy(a)hotmail.com>
> >> >To: serusers(a)lists.iptel.org
> >> >Subject: [Serusers] PSTN
> >> >Date: Tue, 01 Jun 2004 00:59:07 +0000
> >> >
> >> >Hi List
> >> >
> >> >I am running rtpproxy and nathelper which is fine for me...but when i
> >>transfer all calls starting with 00 to my SIP gateway...then person
> >> calling
> >>from public IP is able to hear properly the pstn call and person calling
> >>behind NAT can not hear but the pstn callee can hear that behind NAT
> >> guy...
> >> >
> >> >and second is i am storing logs in acc table...there is i make a
> >> SIP-SIP
> >>call, i get proper logs but if i make PSTN call whether from public or
> >>private IP, i only get BYE record..
> >> >
> >> >below is my ser.cfg
> >> >
> >> >
> >> >#
> >> ># $Id: nathelper.cfg,v 1.1.2.1 2003/11/24 14:47:18 janakj Exp $
> >> >#
> >> ># simple quick-start config script including nathelper support
> >> >
> >> ># This default script includes nathelper support. To make it work
> >> ># you will also have to install Maxim's RTP proxy. The proxy is
> >> enforced
> >> ># if one of the parties is behind a NAT.
> >> >#
> >> ># If you have an endpoing in the public internet which is known to
> >> ># support symmetric RTP (Cisco PSTN gateway or voicemail, for
>example),
> >> ># then you don't have to force RTP proxy. If you don't want to enforce
> >> ># RTP proxy for some destinations than simply use t_relay() instead of
> >> ># route(1)
> >> >#
> >> ># Sections marked with !! Nathelper contain modifications for
>nathelper
> >> >#
> >> ># NOTE !! This config is EXPERIMENTAL !
> >> >#
> >> ># ----------- global configuration parameters ------------------------
> >> >
> >> >debug=8 # debug level (cmd line: -dddddddddd)
> >> >fork=yes
> >> >log_stderror=yes # (cmd line: -E)
> >> >
> >> >/* Uncomment these lines to enter debugging mode
> >> >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"
> >> >
> >> ># ------------------ 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"
> >> >
> >> ># !! Nathelper
> >> >loadmodule "/usr/local/lib/ser/modules/nathelper.so"
> >> >
> >> ># !! Accounting
> >> >loadmodule "/usr/local/lib/ser/modules/acc.so"
> >> >
> >> ># !! Voicemail And Conference
> >> >loadmodule "/usr/local/lib/ser/modules/vm.so"
> >> >
> >> ># ----------------- setting module-specific parameters ---------------
> >> >
> >> ># -- usrloc params --
> >> >
> >> >#modparam("usrloc", "db_mode", 0)
> >> >
> >> ># Uncomment this if you want to use SQL database
> >> ># for persistent storage and comment the previous line
> >> >modparam("usrloc", "db_mode", 2)
> >> >
> >> ># -- 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")
> >> >
> >> ># -- rr params --
> >> ># add value to ;lr param to make some broken UAs happy
> >> >modparam("rr", "enable_full_lr", 1)
> >> >
> >> ># !! Nathelper
> >> ># -- nathelper params --
> >> >modparam("registrar", "nat_flag", 6)
> >> >modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
> >> >modparam("nathelper", "ping_nated_only", 1) # Ping only clients
> >> behind
> >>NAT
> >> >
> >> ># !! Accounting
> >> ># -- acc params --
> >> ># set the reporting log level
> >> >modparam("acc", "log_level", 2) # Set log_level to 2
> >> ># number of flag, which will be used for accounting; if a message is
> >> ># labeled with this flag, its completion status will be reported
> >> >modparam("acc", "log_flag", 1 )
> >> >modparam("acc", "log_missed_flag", 2)
> >> >modparam("acc", "failed_transactions", 1)
> >> >modparam("acc", "report_cancels", 1)
> >> >modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
> >> >modparam("acc", "db_flag", 1)
> >> >modparam("acc", "db_missed_flag", 2)
> >> >
> >> ># !! Transaction
> >> ># -- tm params --
> >> >modparam("tm", "fr_inv_timer", 200)
> >> >
> >> ># ------------------------- request routing logic -------------------
> >> >
> >> ># main routing logic
> >> >
> >> >route{
> >> >
> >> > # initial sanity checks -- messages with
> >> > # max_forwards==0, or excessively long requests
> >> > 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;
> >> > };
> >> >
> >> > # !! Nathelper
> >> > # Special handling for NATed clients; first, NAT test is
> >> > # executed: it looks for via!=received and RFC1918 addresses
> >> > # in Contact (may fail if line-folding is used); also,
> >> > # the received test should, if completed, should check all
> >> > # vias for rpesence of received
> >> > if (nat_uac_test("3")) {
> >> > # Allow RR-ed requests, as these may indicate that
> >> > # a NAT-enabled proxy takes care of it; unless it is
> >> > # a REGISTER
> >> >
> >> > if (method == "REGISTER" || ! search("^Record-Route:")) {
> >> > log("LOG: Someone trying to register from private IP,
> >>rewriting\n");
> >> >
> >> > # This will work only for user agents that support symmetric
> >> > # communication. We tested quite many of them and majority is
> >> > # smart enough to be symmetric. In some phones it takes a
> >>configuration
> >> > # option. With Cisco 7960, it is called NAT_Enable=Yes, with
> >> kphone
> >>it is
> >> > # called "symmetric media" and "symmetric signalling".
> >> >
> >> > fix_nated_contact(); # Rewrite contact with source IP of
> >> signalling
> >> > if (method == "INVITE") {
> >> > fix_nated_sdp("1"); # Add direction=active to SDP
> >> > };
> >> > force_rport(); # Add rport parameter to topmost Via
> >> > setflag(6); # Mark as NATed
> >> > };
> >> > };
> >> >
> >> > # labeled all transaction for accounting
> >> > setflag(1);
> >> > setflag(2);
> >> >
> >> > # we record-route all messages -- to make sure that
> >> > # subsequent messages will go through our proxy; that's
> >> > # particularly good if upstream and downstream entities
> >> > # use different transport protocol
> >> > if (!method=="REGISTER") record_route();
> >> >
> >> > # subsequent messages withing a dialog should take the
> >> > # path determined by record-routing
> >> > if (loose_route()) {
> >> > # mark routing logic in request
> >> > append_hf("P-hint: rr-enforced\r\n");
> >> > route(1);
> >> > break;
> >> > };
> >> >
> >> > if (!uri==myself) {
> >> > # mark routing logic in request
> >> > append_hf("P-hint: outbound\r\n");
> >> > route(1);
> >> > break;
> >> > };
> >> >
> >> > # if the request is for other domain use UsrLoc
> >> > # (in case, it does not work, use the following command
> >> > # with proper names and addresses in it)
> >> > if (uri==myself) {
> >> >
> >> > if (method=="REGISTER") {
> >> >
> >> ># Uncomment this if you want to use digest authentication
> >> > if (!www_authorize("220.226.42.185","subscriber")) {
> >> > www_challenge("220.226.42.185", "0");
> >> > break;
> >> > };
> >> >
> >> > save("location");
> >> > break;
> >> > };
> >> >
> >> > lookup("aliases");
> >> > if (!uri==myself) {
> >> > append_hf("P-hint: outbound alias\r\n");
> >> > route(1);
> >> > break;
> >> > };
> >> >
> >> > # native SIP destinations are handled using our USRLOC DB
> >> > if (!lookup("location")) {
> >> > sl_send_reply("404", "Not Found");
> >> > break;
> >> > };
> >> > };
> >> > append_hf("P-hint: usrloc applied\r\n");
> >> > route(1);
> >> >}
> >> >
> >> >route[1]
> >> >{
> >> > # !! Nathelper
> >> > if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
> >>!search("^Route:")){
> >> > sl_send_reply("479", "We don't forward to private IP addresses");
> >> > break;
> >> > };
> >> >
> >> > # if client or server know to be behind a NAT, enable relay
> >> > if (isflagset(6)) {
> >> > force_rtp_proxy();
> >> > };
> >> >
> >> > # NAT processing of replies; apply to all transactions (for example,
> >> > # re-INVITEs from public to private UA are hard to identify as
> >> > # NATed at the moment of request processing); look at replies
> >> > t_on_reply("1");
> >> >
> >> > if(uri=~"^sip:00*")
> >> > {
> >> > rewritehost();
> >> > forward()
> >> > break;
> >> > };
> >> >
> >> > # send it out now; use stateful forwarding as it works reliably
> >> > # even for UDP2TCP
> >> > if (!t_relay()) {
> >> > sl_reply_error();
> >> > };
> >> >}
> >> >
> >> ># !! Nathelper
> >> >onreply_route[1] {
> >> > # NATed transaction ?
> >> > if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
> >> > fix_nated_contact();
> >> > force_rtp_proxy();
> >> > # otherwise, is it a transaction behind a NAT and we did not
> >> > # know at time of request processing ? (RFC1918 contacts)
> >> > } else if (nat_uac_test("1")) {
> >> > fix_nated_contact();
> >> > };
> >> >}
> >> >
> >> >_________________________________________________________________
> >> >Post Classifieds on MSN classifieds.
> >> http://go.msnserver.com/IN/44045.asp
> >>Buy and Sell on MSN Classifieds.
> >> >
> >> >_______________________________________________
> >> >Serusers mailing list
> >> >serusers(a)lists.iptel.org
> >> >http://lists.iptel.org/mailman/listinfo/serusers
> >>
> >
> > _________________________________________________________________
> > Marriage? http://www.bharatmatrimony.com/cgi-bin/bmclicks1.cgi?74 Join
> > BharatMatrimony.com for free.
> >
> > _______________________________________________
> > Serusers mailing list
> > serusers(a)lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serusers
> >
>
_________________________________________________________________
Get ready to dream with Citibank Ready Cash.
http://go.msnserver.com/IN/49355.asp The Next Generation Personal Loan!
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
Is it possible to manipulate the "200 OK" response to a REGISTER method?
I need to add a header field to it, and as far as I can tell, there
really is no way to do this.
Why do I want to do this?
Well, Snom foneslook for the presence of a "P-NAT-Refresh: <yyyseconds>"
header in the "200 OK" response to their REGISTER methods.
If the header is present, the fones start sending out "keep-alive"
packets every yyy seconds, thus keeping NAT bindings open
Why dont I just use "natping_interval" in mediaproxy?
Because there are a whole bunch of routers (linksys firewall/routers,
dlink ones, etc.) which only keep the binding open when there is a
packet sourced from the internal network.
Cheers
Provide a little more info, such as: How many calls per/sec, users total, etc. If you aren't doing any CPU intensive work you could go with an older (rackmount?) server with RAID and redundant power. Stability is what *we* were aiming for, however we realized it wasn't cost effective in our case to buy a 2U Dell poweredge for every IAD. If you went that route, Intel would be easier to find in older servers. Else newer stuff AMD is pretty common. As for hard disks, again it would depend just how redundant you would like to be. If this is your "core" per se, you would want it to be a higher grade than your IAD's or server farm. Or just stick with RAID-1 or no raid at all. :-)
Linux is a flame war, I stick with Redhat (fedora) because I don't have time to widdle away with Gentoo. I would like to use Gentoo, personally.. With fedora you'll have to make sure all devel is installed, mysql, etc.. By default it won't do it.
Good luck!
Matt
-----Original Message-----
From: Nicolás Lagalaye Falcionelli [mailto:berenerchamion@bluebottle.com]
Sent: Monday, November 29, 2004 11:16 PM
To: serusers(a)lists.iptel.org
Subject: [Serusers] Ideal server
I have to buy a server to host SER, serweb, sems... It will run the
router, the PSTN gateway (using E1 cards), voicemail, web inteface, and
billing services. Though number of clients will not be very big I want
it to be strong and stable. I must decide the hardware characteristics:
I actually do prefer AMD processors rather than Intel. But, what king
of processor I should use?
How many RAM?
About Hard Discs... Will a couple of Serial ATA 120GB discs do? Finally, what Linux dist should I use? Red Hat is strong and enough
prepared so as setting up ser, sems, serweb and modules not turn into a
headache?
Many thanks,
Nicolás Lagalaye Falcionelli _______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Hi everyone,
I have gone through the articles in this list
regarding asterist and ser but I am still confused. I
have setup ser and can forward a call to a PSTN. I
need to know the following:
1. Is it possible to do prepaid billing using ser? or
should I use asterisk with ser?
2. If I need to use asterisk then please tell me where
I can find details (possibly step by step info) on how
I can setup asterisk and ser to do prepaid billing.
Thanks.
__________________________________
Do you Yahoo!?
Meet the all-new My Yahoo! - Try it today!
http://my.yahoo.com
Hi,
I install ser-0.8.14 on FC2 under the path/usr/local/, but after typing
the commands "make", "make modules" and "make install", I cannot find
mysql.so compiled. Other modules are compiled correctly.
I would like to ask what pre-installed rpm packages must be needed
before making mysql module?
mysql-3.23.58-9
php-mysql-4.3.4-11
mod_auth_mysql-20030510-4.1
mysql-server-3.23.58-9
Hope somebody can help me. Thanks.
Thomas
UA is Sipura2000/Snom190/UnidenUIP200/etc.
I am running rtpproxy in verbose mode (to be precise, as "rtpproxy -f
-l <internal ip>/<external ip> )
The core problem is,
- SER sends rtpproxy the port from the SDP (which in what the UA
generated *behind* the NAT)
- The UA is sending/receiving media on a *different* port to rtpproxy.
- How does one get rtpproxy to "point" at the NAT port, and not at
the SDP port?
cheers
Matt Schulte wrote:
>Yes it can do this, RTPproxy is just that, a proxy. It has the ability
>to use whatever port it pleases, try running rtpproxy command line mode
>(rtpproxy -f ) to see if it's passing any errors. What kind of device is
>the UA? Be sure that the device has "NAT mode" on, this sounds like a
>problem I was having early on.
>
>-----Original Message-----
>From: Kanakatti Mahesh Subramanya [mailto:mahesh@aptela.com]
>Sent: Sunday, November 21, 2004 5:00 PM
>To: serusers(a)lists.iptel.org
>Subject: [Serusers] SER + RTPProxy and Client behind NAT
>
>
>I'm having a strange problem with getting SER+RTPProxy to work when the
>
>UA is behind NAT
>Setup is as follows
>
>
>UA --> NAT1 --> SER+RTPProxy --> NAT2 --> Asterisk
>
>I've got RTPProxy running in "bridge" mode, gatewaying 'tween Asterisk
>and the Public Internet
>
>SIP traffic all routes perfectly. STUN enabled clients work perfectly.
>
>The problem is that if the outbound port on NAT1 for the RTP stream is
>*different* from the outbound port from the UA, then RTPProxy persists
>in sending the packets to the UA port, *not* the NAT1 port.
>
>e.g.
>if the SDP payload from the UA contains
>
> c=IN IP4 192.168.5.100
> m=audio 16396 RTP/AVP....
>
>but NAT1 sends the RTP stream out on port 64003, then rtpproxy sends the
>
>media from Asterisk back to port 16393 at NAT1, instead of to port 64003
>
>at NAT1!
>
>Is it supposed to do this? Am I missing something really obvious?
>
>
>The relevant section from ser.cfg is as follows
>
> if (nat_uac_test("3")) {
> if (method == "REGISTER" || ! search("^Record-Route:")) {
> fix_nated_contact(); # Rewrite contact with source IP of
>signalling
> if (method == "INVITE") {
> fix_nated_sdp("1"); # Add direction=active to SDP
> };
> setflag(6); # Mark as NATed
> };
> };
>
> rewritehostport("........");
> if (force_rtp_proxy("FEI")) {
> t_on_reply("4");
> };
>.
>.
>.
>onreply_route[4] {
> if (!(status=~"183" || status=~"200")) {
> break;
> };
> fix_nated_contact();
> force_rtp_proxy("F");
> break;
>}
>
>
>
Hi all,
I've a very difficult problem to solve...I have 2 SER process running over
2 separate machine...one is the primary and the other is the secondary Sip
Proxy Server....my PSTN gateway support RFC 2782 (RFC 3263) very well and
I like this approach to locate the SIP Proxy Servers, but my SIP terminal
adapter doesn't support this protocol neither have the chance to set up
the secondary (backup) proxy server...my workaround is to resolve the FQDN
of the 2 SPSs in the DNS A Record with the virtual IP and to populate the
DNS SRV records with the real ip (for the pstn gws) ....and here start the
problem....in the ser.cfg I've set this:
listen=Virtual_IP
listen=Real_IP_NIC
(listen=0.0.0.0 seems to not work)
advertised_address=??? (which, the Virtual_IP from the inbound to outbound
or the real ip address for calls outbound to inbound??)
...and there is many side effect...request proxied from my Sip Proxy server
with Via Header Field Virtual_ip and Record_route with real_ip.....request
coming from real-ip Proxy blocked from some firewall cause the pinhole is
open but from request coming from virtual-ip and not from real_ip and so
on.....
Is there a way to handle this scenario??
Thanx to all,
Verbal
Can anybody help me in Jitter buffer calculation??=20
I want to know how to calculate Jitter Buffer from ICMP Latency. Means =
if you are getting a latency of 300ms through Ping then what should be =
the Jitter buffer and how to calculate it.
Thanks & Regards
Ritesh Jalan
Senior Engineer - Test & Audit
Net4india Ltd.
I Floor, B-4/47, Safdarjung Enclave,
New Delhi-110029, Tel: 011-26104192/93
URL: http://www.net4india.com
Hello Michael,
thanks for your feedback. I will add the definition of the tables and
the config file in the documentation of dbtext, hoping that will help
other people.
Daniel
On 11/29/04 19:11, msg wrote:
> Daniel, thanks for your reply.
>
> I had used the definitions found in ser_mysql.sh (omitting some fields
> I'll admit) and comparing those with the fields in the various examples;
> one problem turned out to be white space in (type,null) definitions
> in the examples. There also were extra fields not included in the
> ser_mysql.sh script but requested in the diagnostics.
>
> Anyway, it works now and for those who want a quick start I'm posting
> the contents of 'ser.cfg' and the database files 'version',
> 'subscriber', 'aliases' and 'location' (stripped of actual entries).
>
> Regards,
>
> Michael Grigoni
> Cybertheque Museum
>
> ---ser.cfg---
> #
> # $Id: ser.cfg,v 1.24 2003/11/11 15:32:36 andrei Exp $
> #
> # simple quick-start config script
> #
>
> # ----------- global configuration parameters ------------------------
>
> mhomed=1
> alias=cybertheque.org
> debug=9 # debug level (cmd line: -dddddddddd)
> fork=yes
> #log_stderror=no # (cmd line: -E)
>
> check_via=no # (cmd. line: -v)
> dns=no # (cmd. line: -r)
> rev_dns=no # (cmd. line: -R)
> #port=5060
> children=2
> fifo="<absolute path to fifo>" #why tell the world
>
> # ------------------ module loading ----------------------------------
>
> # Uncomment this if you want to use dbtext database
> loadmodule "/usr/local/lib/ser/modules/dbtext.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
> # dbtext.so must be loaded !
> loadmodule "/usr/local/lib/ser/modules/auth.so"
> loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> # -- usrloc params --
>
> #modparam("usrloc", "db_mode", 0)
>
> # Uncomment this if you want to use dbtext database
> # for persistent storage and comment the previous line
> modparam("usrloc", "db_mode", 2)
> modparam("usrloc", "db_url", "dbtext://</absolute/path/to/url_dir>")
> modparam("auth_db", "db_url", "dbtext://</absolute/path/to/url_dir>")
>
> # -- auth params --
> # Uncomment if you are using auth module
> #
> modparam("auth_db", "calculate_ha1", 1)
> #
> # If you set "calculate_ha1" parameter to 1 (which true in this config),
> # uncomment also the following parameter)
> #
> modparam("auth_db", "password_column", "password")
> modparam("auth_db", "user_column", "username")
> modparam("auth_db", "domain_column", "domain")
>
> # -- rr params --
> # add value to ;lr param to make some broken UAs happy
> modparam("rr", "enable_full_lr", 1)
>
> # ------------------------- request routing logic -------------------
>
> # main routing logic
>
> route{
>
> # initial sanity checks -- messages with
> # max_forwards==0, or excessively long requests
> 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;
> };
>
> # we record-route all messages -- to make sure that
> # subsequent messages will go through our proxy; that's
> # particularly good if upstream and downstream entities
> # use different transport protocol
> if (!method=="REGISTER") record_route();
>
> # subsequent messages withing a dialog should take the
> # path determined by record-routing
> if (loose_route()) {
> # mark routing logic in request
> append_hf("P-hint: rr-enforced\r\n");
> route(1);
> break;
> };
>
> if (!uri==myself) {
> # mark routing logic in request
> append_hf("P-hint: outbound\r\n");
> route(1);
> break;
> };
>
> # if the request is for other domain use UsrLoc
> # (in case, it does not work, use the following command
> # with proper names and addresses in it)
> if (uri==myself) {
>
> if (method=="REGISTER") {
>
> # Uncomment this if you want to use digest authentication
> if (!www_authorize("<your_sip_domain>", "subscriber")) {
> www_challenge("<your_sip_domain>", "0");
> break;
> };
>
> save("location");
> break;
> };
>
> lookup("aliases");
> if (!uri==myself) {
> append_hf("P-hint: outbound alias\r\n");
> route(1);
> break;
> };
>
> # native SIP destinations are handled using our USRLOC DB
> if (!lookup("location")) {
> sl_send_reply("404", "Not Found");
> break;
> };
> };
> append_hf("P-hint: usrloc applied\r\n");
> route(1);
> }
>
> route[1]
> {
> # send it out now; use stateful forwarding as it works reliably
> # even for UDP2TCP
> if (!t_relay()) {
> sl_reply_error();
> };
> }
>
>
> ---version---
> table_name(str) table_version(int)
> subscriber:3
> location:6
> aliases:6
>
> ---location--- (note that this is all one line):
> username(str) domain(str,null) contact(str,null) expires(int,null)
> q(double,null) callid(str,null) cseq(int,null) last_modified(str)
> replicate(int,null) state(int,null) flags(int) user_agent(str)
> received(str)
>
> ---aliases--- (note that this is all one line):
> username(str) domn(str,null) contact(str,null) expires(int,null)
> q(double,null) callid(str,null) cseq(int,null) last_modified(str)
> replicate(int,null) state(int,null) flags(int) user_agent(str)
> received(str)
>
> ---subscriber--- (note that this is all one line):
> username(str) domn(str) password(str) first_name(str) last_name(str)
> phone(str) email_address(str) datetime_created(int)
> datetime_modified(int) confirmation(str) flag(str)
> sendnotification(str) greeting(str) ha1(str) ha1b(str) perms(str)
> allow_find(str) timezone(str,null) rpid(str,null) uuid(str,null)
>
>