[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] SIP Express Router SER o OpenSER



El Martes, 25 de Julio de 2006 21:45, fernando villarroel escribió:
> Hola gracias Alfonso, lo primero es mencionarte que
> estoy haciendo las pruebas con SER y no con OpenSER,
> este lo instale con apt-get install, desde los
> repositorios apt.iptel.org

Practicamente todo lo que se puede hacer con SER se puede hacer con Openser y 
vicecersa. Openser es un fork de ser. Yo personalmente prefiero Openser, ya 
que nació para suplir la falta de una comunidad en SER y porque esta llevado 
por una comunidad y no por una empresa, a parte de que hubo un par de 
detalles que en Openser me funcionaron y en SER no.

De aquí en adelante cuando diga SER me referiré a cualquiera de los 2 
programas.

>
>  > > Ahora lo que no he podido comprender es la
> > >
> > > configuracion de ser.cfg.
> >
> > Que es exactamente lo que no entiendes de ese
> > archivo???? Al principio es un
> > poco lioso, pero luego se le coge el truco. En el se
> > establecen los usuarios
> > que se pueden autenticar (sección authenticate), que
> > puede hacer cada usuario
> > (sección authorize), las rutas y algunas cosas más.
>
> La instalacion me genero la carpeta /etc/ser
> y dentro de ella modifique el archivo ser.cfg con el
> siguiente contenido: Las IP que encontraras ahy son
> locales ya que estoy solo probando
>
>
> Te pego mi ser.cfg, no encuentro ninguna seccion
> authorize:

Perdona, la sección authorize esta dentro del archivo de configuración de 
radius. Mezcle tu problema con un escenario que estoy montando con radius :) 
que cabeza la mia
>
> #
> # $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei
> Exp $
> #
> # simple quick-start config script
> #
>
> # ----------- global configuration parameters
> ------------------------
>
> #debug=3         # debug level (cmd line: -dddddddddd)
> #fork=yes
> #log_stderror=no	# (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
> listen=192.168.1.34
> fifo="/tmp/ser_fifo"
> fifo_db_url="mysql://ser:heslo@localhost/ser"
>
>
>
> # ------------------ module loading
> ----------------------------------
>
> # Uncomment this if you want to use SQL database
> loadmodule "/usr/lib/ser/modules/mysql.so"
>
> loadmodule "/usr/lib/ser/modules/sl.so"
> loadmodule "/usr/lib/ser/modules/tm.so"
> loadmodule "/usr/lib/ser/modules/rr.so"
> loadmodule "/usr/lib/ser/modules/maxfwd.so"
> loadmodule "/usr/lib/ser/modules/usrloc.so"
> loadmodule "/usr/lib/ser/modules/registrar.so"
> loadmodule "/usr/lib/ser/modules/textops.so"
>
> # Uncomment this if you want digest authentication
> # mysql.so must be loaded !
> loadmodule "/usr/lib/ser/modules/auth.so"
> loadmodule "/usr/lib/ser/modules/auth_db.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)
>
> # SQL settings
>
> #El nombre de la base de datos es "ser" por defecto.
> dbhost puede ser "localhost"
> #modparam("usrloc",
> "db_url","sql://ser:heslo@localhost/ser")
> #modparam("auth_db",
> "db_url","sql://ser:heslo@localhost/ser")
> modparam("usrloc",
> "db_url","mysql://ser:heslo@localhost/ser")
> modparam("auth_db",
> "db_url","mysql://ser:heslo@localhost/ser")
> #modparam("auth_db|uri_db|usrloc", "db_url",
> "mysql://ser:heslo@localhost/ser")
>
> # -------------------------  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 ) { #2048
> 		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("192.168.1.34", "subscriber")) {
> 				www_challenge("192.168.1.34", "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();
> 	};
> }
>
> > > Como puedo autentificar los asterisk contra el
> > > servidor SER y como implemento en la BD Mysql una
> > > tabla llamados donde se vallan registrando las
> > > llamadas de los clientes, duracion, etc. Lo que en
> > > Asterisk hacia con las variable ANSWEREDTIME.
> >
> > Tienes que usar el modulo de accounting de openser
> > http://www.openser.org/docs/modules/1.0.x/acc.html y
> > registrar asterisk
> > contra openser. Para ello configura los accesos en
> > openser.cfg y mira en el
> > archivo sip.conf de asterisk el ejemplo de como
> > autenticarse contra un
> > proveedor para recibir y mandar llamadas. Si no ves
> > claro el ejemplo de
> > sip.conf mira en www.voip-info.org.
> >
> > Tienes más información de openser en
> > http://openser.org/dokuwiki/doku.php
> >
> > > Bueno ojala alguien tenga algunos consejos o
> > > expeiencia, ya que he leido los how to de ser y
> >
> > sus
> >
> > > scripts pero me han resultado confusos.
> > >
> > > Fernando
> >
> > Salu2
>
> Alfonso de acuerdo a esto mi esquema quedaria algo
> asi:
>
> llamada IP--->SER---->Asterisk

Bueno, depende de a que te refieras. Primero tengamos en cuenta que una 
llamada ip usando sip, simplificando un poco, se compone de la señalización 
sip y de la propia voz o video que va mediante el protocolo RTP. Teniendo en 
cuenta que SER y OPENSER son SIP SERVERS y no MEDIA SERVERS, un esquema real 
sería este:

Señalización SIP

Softphone o cliente ----------->SER---------->asterisk

Paquetes RTP

softphone----------------------> asterisk

>
> Es decir el usuario se valida contra ser, donde cada
> usuario de Asterisk (sip.conf) existe en la BD ser.

Todos los usuarios deben estar en SER si quieres que gestione toda la 
señalización SIP. Lo de que estén también en asterisk depende exactamente de 
lo que necesites hacer.
>
> Entonces al registrarse en ser yo debiera hacer un
> forward a la maquina con asterisk para que siga
> tarifando Asterisk, es asi el esquema o estoy perdido.

Lo que haces es definir una ruta en ser que diga a los clientes SIP que los 
paquetes RTP los mande a asterisk. Si vas a manejar más de un asterisk puedes 
hacer que la tarificación la haga SER o que cada asterisk lleve la suya.

>
> Por ejemplo un dato de mi sip.conf seria
>
> [100]
> dtmfmode=rfc2833
> accountcode=100
> callerid=100
> secret=4114
> context=test
> type=peer
> canreinvite=no
> nat=yes
> qualify=yes
> ;disallow=all
> allow=all
>
>
> Te cuento todo esto me surgio por que mis necesidades
> han crecido y mi asterisk colapsa, entonces me
> comentaron sobre ser que es mas robusto en el sentido
> que es capaz de procesar mas llamados simultaneos que
> Asterisk.

Esto no es realmente cierto. SER no procesa llamadas, solo call setups (lo que 
yo vengo llamando señalización SIP). Lo que si hace muy bien SER es aguantar 
una cantidad ingente de usuarios registrados concurrentes mientras que 
asterisk no soporta muchos usuarios concurrentes registrados y por eso 
colapsa.

Tienes mucha documentación en el wiki de OPENSER www.openser.org y entra en 
documentation y en dokuwiki. Todo lo de allí debería funcionarte en SER.

Si tienes algún problema con algo, siempre tendrás alguien en tu zona que sepa 
del tema y que por un módico precio te pueda hechar una mano. Y si no tienes 
a nadie siempre podemos llegar a un acuerdo ;) y te hecho una mano.

>
> Gracias.

Nada hombre, Salu2
>
>
>
>
>
> ______________________________________________
> LLama Gratis a cualquier PC del Mundo.
> Llamadas a fijos y móviles desde 1 céntimo por minuto.
> http://es.voice.yahoo.com

Attachment: pgpO6BD6RQwGm.pgp
Description: PGP signature


Reply to: