Hi,Gines
Could you send me your configuration files of the 3 mode ?
Thanks
GP.Coder
2007-04-28
发件人: Gin�s_G�mez
发送时间: 2007-04-27 20:52:22
收件人: [EMAIL PROTECTED]
抄送: users openser.org
主题: Re: [Users] WeSIP setup problem
Hi ,
I've discovered that there is a problem with WeSIP looping back to
its own address (which is what you are trying to do). We are fixing
it but it'll take more time. As a workaround you can do thre
different things.
1) Let OpenSER discover the next hop before passing the message to
WeSIP then proxy from WeSIP to the next hop.
<--------- Transaction 1 --------- > <-------- Transaction
2------------ >
UAC --------- > [OpenSER -- > WeSIP -- > OpenSER] --------- > UAS
1.1 UAC sends request with RURI=sip:[EMAIL PROTECTED]
1.2 OpenSER modifies the RURI after consulting the location info
RURI=sip:[EMAIL PROTECTED]
1.3 OpenSER passes the modified message to WeSIP
1.4 WeSIP processes and proxies
1.5 OpenSER processes message coming from WeSIP (if X-WeSIP-SPIRAL
was used) and forwards it downstream
2) Use separated WeSIP with its own OpenSER frontend( see Openser.cfg
working as WeSIP front-end at http://www.wesip.com/mediawiki/
index.php/Configuration#Openser.cfg_in_standalone)
<---Trans 1---- > <----- Transaction 2 ------ > <-----Transaction 3------
> <---Trans 4--- >
UAC ---- > OpenSER ---- > (WeSIP with OpenSER frontend) ---- > OpenSER
------ > UAS
2.1 UAC sends request with RURI=sip:[EMAIL PROTECTED]
2.2 OpenSER delivers message to standalone WeSIP
2.3 WeSIP processes and proxies back to OpenSER (WeSIP may
RecordRoute or not)
2.4 OpenSER modifies the RURI after consulting the location info
RURI=sip:[EMAIL PROTECTED]
2.5 OpenSER proxies to UAS
3) Use different IP to make WeSIP think that it is forwarding to
a different host and not looping
<-------Transaction 1-------- > <------------- Transaction 2
------------- > <---Transaction 3---- >
UAC ---- > [OpenSER -- > WeSIP -- > OpenSER] --------- > OpenSER
(192.168.1.12) ------ > UAS
1.1 UAC sends request with RURI=sip:[EMAIL PROTECTED]
1.2 OpenSER modifies the RURI to an alias IP RURI=sip:
[EMAIL PROTECTED] (192.168.1.12 is a second IP where OpenSER listens)
1.3 OpenSER passes the modified message to WeSIP
1.4 WeSIP processes and proxies to 192.168.1.12 (No loopback failure
since 192.168.1.12 != 192.168.1.11)
1.5 OpenSER processes message coming from WeSIP (if X-WeSIP-SPIRAL
was used) and forwards it to 192.168.1.12
1.6 OpenSER receives proxied message (in IP 192.168.69.12)
1.7 OpenSER applies location translation
1.8 OpenSER forwards
Hope it helps
Regards
Gines
> Hi Gines, thanks for your support
>
>
> > Your servlet named "neo" is being executed and looks like it is
> > proxying but what from what I see in the packet it is proxying to
> > itself. Could you try to proxy to another address and see if this
> > still happens ? Aside, could you send me your configuration files and
> > your servlet code ?
>
> The serlvet code is the following
>
> protected void doInvite(SipServletRequest callerInvite) throws
> ServletException,
> IOException {
>
>
> //Get a proxy for this request
> Proxy callerProxy = callerInvite.getProxy();
>
> System.out.println("doInvite within neos servlet: requestURI is " +
> callerInvite.getRequestURI() );
>
>
> callerProxy.proxyTo(callerInvite.getRequestURI());
>
>
> }
>
>
> This code causes the "no route" exception. The println above gives :
>
> doInvite within neos servlet: requestURI is sip:[EMAIL PROTECTED]
>
> where 5002 is the called SIP phone and 192.168.1.11 is the address
> of my OpenSER
> + WeSIP box (i.e. the managed SIP domain)
>
>
> Following your advice I have tried to change the proxyTo to a
> different address:
>
>
> SipURI dest = sipFactory.createSipURI("5002","192.168.1.16");
> callerProxy.proxyTo(dest);
>
> It that case, the called phone (5002, IP address 192.168.1.16) gets
> the INVITE
> correctly. However, something puzzles me here: the serlvet is not
> supposed to
> know the IP address of the called phone. In my understanding, the
> AS processes
> the INVITE, then it must send it back to the proxy server which is
> supposed to
> forward it to the next hop, is that right ?
>
> Could you please give me an example of a doInvite which basically
> does nothing
> and which lets the INVITE be forwarded to the called party ?
>
>
> Finally here are my config files:
>
> < < < < < < < < < Server.xml > > > > > > > > >
>
> <Server port="5005" shutdown="SHUTDOWN" debug="1" >
> <Service name="NEOS-Standalone" >
> <Connector
> className="org.apache.catalina.connector.http.HttpConnector"
> port="7080" minProcessors="5" maxProcessors="5"
> enableLookups="true" acceptCount="10" debug="0" / >
>
> <Connector className="com.voztele.sipservlet.connector.SipConnector"
> minProcessors="5" maxProcessors="5"
> enableLookups="true" acceptCount="10" debug="1"
> addresses="192.168.1.11:5060" pathName="com.voztele"
> protocol="udp" >
> <ExtraProperties >
> <Property key="com.voztele.javax.sip.SER_ADDRESS"
> value="127.0.0.1" / >
> <Property key="com.voztele.javax.sip.SER_PORT" value="5080" / >
> <Property key="com.voztele.STATISTICS" value="false" / >
> <Property key="javax.sip.STACK_NAME" value="neos_as" / >
> <Property key="javax.sip.THREAD_POOL_SIZE" value="10" / >
> <Property key="com.voztele.javax.sip.THREAD_POOL_SIZE"
> value="10" / >
> <Property key="com.voztele.javax.sip.SPIRAL_HDR" value="true" / >
> <Property key="com.voztele.javax.sip.REENTRANT_LISTENER"
> value="true" / >
> <Property key="javax.sip.AUTOMATIC_DIALOG_SUPPORT"
> value="false" / >
> <Property key="com.voztele.javax.sip.TRACE_LEVEL" value="3" / >
> </ExtraProperties >
> </Connector >
>
> <Engine name="Standalone" defaultHost="localhost" debug="1"
> className="com.voztele.sipservlet.core.ConvergedEngine" >
>
> <Mapper className="org.apache.catalina.core.StandardEngineMapper"
> protocol="HTTP/1.1"/ >
> <Mapper className="org.apache.catalina.core.StandardEngineMapper"
> protocol="HTTP/1.0"/ >
> <Mapper className="com.voztele.sipservlet.core.EngineSipMapper"
> protocol="SIP/2.0"/ >
> <Logger className="org.apache.catalina.logger.FileLogger"
> timestamp="true"/ >
> <Realm className="org.apache.catalina.realm.MemoryRealm" / >
>
> <Host name="localhost" nameSip="192.168.1.11_5060" debug="1"
> appBase="wesipapps"
> className="com.voztele.sipservlet.core.ConvergedHost" >
>
> <Logger className="org.apache.catalina.logger.FileLogger"
> timestamp="true"/ >
> <Mapper className="com.voztele.sipservlet.core.SipHostMapper"
> protocol="SIP/2.0"/ >
> <Mapper className="org.apache.catalina.core.HttpHostMapper"
> protocol="HTTP/1.1"/ >
> <Mapper className="org.apache.catalina.core.HttpHostMapper"
> protocol="HTTP/1.0"/ >
> </Host >
> </Engine >
> </Service >
> </Server >
>
>
> < < < < < < < < < <openser.cfg > > > > > > > > > > > > > >
> #
> # $Id: openser.cfg 1827 2007-03-12 15:22:53Z bogdan_iancu $
> #
> # simple quick-start config script
> # Please refer to the Core CookBook at http://www.openser.org/
> dokuwiki/doku.php
> # for a explanation of possible statements, functions and parameters.
> #
>
> # ----------- global configuration parameters ------------------------
>
> debug=3 # debug level (cmd line: -dddddddddd)
> fork=yes
> #log_stderror=no # (cmd line: -E)
> children=4
>
> # Uncomment these lines to enter debugging mode
> #fork=no
> log_stderror=yes
> #
>
>
> listen = tcp:192.168.1.11:5060
> listen = udp:192.168.1.11:5060
>
>
> # ------------------ module loading ----------------------------------
>
> #set module path
> mpath="/usr/local/lib/openser/modules/"
>
> # Uncomment this if you want to use SQL database
> #loadmodule "mysql.so"
>
> loadmodule "sl.so"
> loadmodule "tm.so"
> loadmodule "rr.so"
> loadmodule "maxfwd.so"
> loadmodule "usrloc.so"
> loadmodule "registrar.so"
> loadmodule "textops.so"
> loadmodule "mi_fifo.so"
>
> # added for WeSIP
> loadmodule "seas.so"
> modparam("seas","listen_sockets","127.0.0.1:5080")
> # end added for WeSIP
>
> # Uncomment this if you want digest authentication
> # mysql.so must be loaded !
> #loadmodule "auth.so"
> #loadmodule "auth_db.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> # -- mi_fifo params --
>
> modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
>
> # -- 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)
>
> # ------------------------- 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");
> exit;
> };
>
> if (msg:len >= 2048 ) {
> sl_send_reply("513", "Message too big");
> exit;
> };
>
> # 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(); # ftoutain essai de supprimer 莽a ? ne change rien
>
> # 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);
> };
>
> if (!uri==myself) {
> # mark routing logic in request
> append_hf("P-hint: outbound\r\n");
>
> route(1);
> };
>
> # 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("openser.org", "subscriber")) {
> # www_challenge("openser.org", "0");
> # exit;
> #};
>
> save("location");
> exit;
> };
>
> lookup("aliases");
> if (!uri==myself) {
> append_hf("P-hint: outbound alias\r\n");
> route(1);
> };
>
> # native SIP destinations are handled using our USRLOC DB
> if (!lookup("location")) {
> sl_send_reply("404", "Not Found");
> exit;
> };
> append_hf("P-hint: usrloc applied\r\n");
> };
>
> route(1);
> }
>
>
> route[1] {
>
> if (is_present_hf("X-WeSIP-SPIRAL")) {
> if (!t_relay()) {
> sl_reply_error();
> };
> exit;
> };
>
> if (! as_relay_t("neos_as") ){
> t_reply("500", "NEOS service not found");
> };
>
> exit;
> }
>
>
> _______________________________________________
> Users mailing list
> [email protected]
> http://openser.org/cgi-bin/mailman/listinfo/users
>
>
_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users